0,0
рейтинг
22 июня 2010 в 02:10

Разработка → Электронная цифровая подпись для чайников: с чем ее есть, и как не подавиться. Часть 1

Итак, все чаще в кругах, работающих с документами все чаще звучат слова «электронный документ» и, связанное с ним почти неразрывно «электронная цифровая подпись», иначе — ЭЦП.

Данный цикл статей предназначен для того, чтобы раскрыть «тайное знание» о том, что это такое, когда и как это можно и нужно использовать, какие есть плюсы и минусы.

Естественно, статьи пишутся не для специалистов по криптографии, а для тех, кто эту самую криптографию будет использовать, или же только начинает ее изучение, желая стать специалистом, поэтому я старался максимально упростить понимание всего процесса, приводя аналогии и рассматривая примеры.


Зачем нам вообще что-то подписывать? Естественно, чтобы удостоверить, что мы ознакомились с содержимым, согласны (а иногда наоборот, не согласны) с ним. А электронная подпись еще и защищает наше содержимое от подмены.

Итак, начать, естественно, стоит с того, что такое электронная цифровая подпись.
В самом примитивном случае это — результат хэш-функции. Что это такое лучше меня разъяснит википедиа, в нашем же случае главное, что с высокой степенью вероятности ее результат не повторяется для разных исходных данных, а также что результат этой функции мало того, что короче исходных данных, так еще по нему исходную информацию восстановить нельзя. Результат функции называют хэшем, а применение этой функции к данным называют хешированием. Грубо, можно назвать хэш функцию архивированием, в результате чего мы получаем очень маленькую последовательность байт, но восстановить исходные данные из такого «архива» нельзя.

Итак, мы читаем файлик в память, хэшируем прочитанное. И что, уже получаем ЭЦП? Почти. Наш результат с большой натяжкой можно назвать подписью, но, все же, полноценной подписью он не является, потому что:

1. Мы не знаем, кто сделал данную подпись

2. Мы не знаем, когда была сделана подпись

3. Сама подпись не защищена от подмены никак.

4. Ну и да, хэш функций много, какая из них использовалась для создания этого конкретного хэша?

Поэтому применять к хэшу слово «подпись» еще нехорошо, будем называть его дальше просто хэш.

Вы посылаете ваш файл другому человеку, допустим, по почте, будучи уверенными, что он точно получит и прочитает именно то, что вы послали. Он же, в свою очередь, тоже должен хэшировать ваши данные и сравнить свой результат с вашим. Если они совпали — все хорошо. Это значит что данные защищены? Нет.
Ведь хэшировать может кто угодно и когда угодно, и вы никогда не докажете, что он хэшировал не то, что вы послали. То есть, если данные будут перехвачены по дороге злоумышленником, или же тот, кому вы посылаете данные — не очень хороший человек, то данные могут быть спокойно подменены и прохэшированы. А ваш получатель (ну или вы, если получатель — тот самый нехороший человек) никогда не узнает, что он получил не то, что вы отправляли, или сам подменил информацию от вас для дальнейшего использования в своих нехороших целях.
Посему, место для использование чистой хэш функции — транспорт данных в пределах программы или программ, если они умеют общаться между собой. Собственно, с помощью хэш функций вычисляются контрольные суммы. И эти механизмы защищают от случайной подмены данных, но не защищают от специальной.

Но, пойдем дальше. Нам хочется защитить наш результат хеширования от подмены, чтобы каждый встречный не мог утверждать, что это у него правильный результат. Для этого самое очевидное что (помимо мер административного характера)? Правильно, зашифровать. А ведь с помощью шифрования же можно и удостоверить личность того, кто хэшировал данные! И сделать это сравнительно просто, ведь есть ассиметричное шифрование. Да, оно медленное и тяжелое, но ведь нам всего-то и надо — зашифровать маленькую последовательность байт. Плюсы такого действия очевидны — для того, чтобы проверить нашу подпись, надо будет иметь наш открытый ключ, по которому личность зашифровавшего (а значит, и создавшего хэш) можно легко установить.
Суть этого шифрования в следующем: у вас есть закрытый ключ, который вы храните у себя. И есть открытый ключ. Открытый ключ вы можете всем показывать и раздавать, а закрытый — нет. Шифрование происходит с помощью закрытого ключа, а расшифровывание — с помощью открытого.
Приводя аналогию, у вас есть отличный замок и два ключа к нему. Один ключ замок открывает (открытый), второй — закрывает (закрытый). Вы берете коробочку, кладете в нее какую-то вещь и закрываете ее своим замком. Так, как вы хотите, чтобы закрытую вашим замком коробочку открыл ее получатель, то вы открытый, открывающий замок, ключик спокойно отдаете ему. Но вы не хотите, чтобы вашим замком кто-то закрывал коробочку заново, ведь это ваш личный замок, и все знают, что он именно ваш. Поэтому закрывающий ключик вы всегда держите при себе, чтобы кто-нибудь не положил в вашу коробочку мерзкую гадость и не говорил потом, что это вы ее положили и закрыли своим замком.

И все бы хорошо, но тут сразу же возникает проблема, а, на самом деле, даже не одна.

1. Надо как-то передать наш открытый ключ, при этом его должна понять принимающая сторона.

2. Надо как-то связать этот открытый ключ с нами, чтобы нельзя было его присвоить.

3. Мало того, что ключ надо связать с нами, надо еще и понять, какой зашифрованный хэш каким ключом расшифровывать. А если хэш не один, а их, скажем, сто? Хранить отдельный реестр — очень тяжелая задача.

Все это приводит нас к тому, что и закрытый ключ, и наш хэш надо хранить в каких-то форматах, которые нужно стандартизировать, распространить как можно шире и уже тогда использовать, чтобы у отправителя и получателя не возникало «трудностей перевода».

Как водится у людей, к чему-то единому прийти так и не смогли, и образовалось два больших лагеря — формат OpenPGP и формат S/MIME + X.509. Но об этом уже в следующей статье.

Часть 2
Овчинников Василий @lol4ever
карма
25,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (108)

  • +4
    Скажите сразу своё УТП. Вы из компании «Электронные офисные системы» и предлагаете программу для цифровой подписи EDSIGN — www.eos.ru. В оригинале называемую как «программа для создания и подписания электронного документа электронной цифровой подписью».
    • +16
      Хм, да, именно оттуда, и именно этот самый продукт компанией и предлагается. Однако, серия постов ну совсем не связана с конкретно отдельным продуктом хотя да, в дальнейших статьях упоминаться он будет, но только в качестве одного из вариантов. Стиль упоминания — обзор существующих решений, анализ плюсов и минусов. И не подумайте, что минусы я, как это вынужденно сделал на Рускрипто, обойду стороной (смайл).

      В целом, статьи задумывались (и будут писаться) для повышения общей грамотности. Причина простая: очень часто звонят люди с фразой «сделайте нам ЭЦП». Мягко говоря, утомило. И чтобы не объяснять каждый раз, что мы «не делаем ЭЦП», а также чтобы таких вопросов не возникало оно все и пишется.
      • 0
        Как у Вас обстоят дела с сертификацией в ФСБ?
        • +10
          Убедительная просьба: вопросы по продуктам компании, в которой я работаю кидать все же в личку, либо в посты, которые этим самым продуктам посвящены (которых пока нет, и не факт что будут)
        • –3
          А при чём тут вообще гэбешники?
          • +2
            Насколько я понимаю, нельзя использовать продукты без сертификата соответствия ФСБ в органах власти. То есть ни одно гос. или муниципальное учреждение не может использовать криптопровайдер, у которого нет такого сертификата.
            • 0
              Очень интересно, а в США наверное в ЦРУ нужно сертификат получать. Народ минусует непонятно за что. Меня всего лишь возмущает, что гбэшники везде свой нос суют, куда надо и куда не надо.
              • 0
                Видимо, что все смиряться с тем, когда без лицензии гб даже пукнуть не датут. :)
              • 0
                Меня тоже это не радует :)
                Тем более что, если мне память не изменяет, в ГОСТ'овских алгоритмах обнаружены уязвимости, а сертификат можно получить только в том случае, если криптопровайдер реализует именно их.
                • 0
                  > ГОСТ'овских алгоритмах обнаружены уязвимости
                  От куда такая информация?
                  • 0
                    Я был уверен, что читал какую-то новость про успешные взломы, но видимо это был фейк, гугление не дало ничего, кроме www.securitylab.ru/news/358391.php, а это фигня.
                    Будем считать, что я в предыдущем посте наврал.
            • 0
              Насколько я знаю, без сертификата ФСБ (раньше этим ФАПСИ занималось) ЭЦП не имеет юридической значимости «по дефолту»
              • 0
                Неверно, очень даже может иметь. Сертифицированное криптосредство, ГОСТ — для негосударственных организаций это необязательно. Как — потом потом потом. Немного терпения =)
                • 0
                  Хорошо, подождём :)
                • 0
                  Т.е. для негос.организаций возможно применение других стандартов ЭЦП, я верно понимаю?
                  • 0
                    Ага, тока с обязательным созданием серта-окошка для подгдядывания для гбшников. Суровая реальность. Даже у больших провайдеров, работающих с юр. лицами всегда есть свободные слоты на свитчах, чтоб в случае чего органы могли бы к ним подрубится.
                    • 0
                      Ладно вам! Это паранойя про какие-то специальные дырки для спецслужб. Если придуман алгоритм шифрования, имеющий дырку с помощью которой возможна расшифровка без использования ключа, то эту дырку найдут ведь довольно быстро. Сильные математики есть с обоих сторон фронта, а алгоритмы шифрования давно не секретят. А если дырку не только найдут, но и опубликуют (или даже станет просто известно, что «противник» дырку обнаружил), это потянет огромные расходы на замену всей инфраструктуры. Полагаете, спецслужбам это надо?
                      • 0
                        Я это не из воздуха беру — приходилось работать в провайдерской компании. Все лучше, чем ректальный криптоанализ…
                        • 0
                          Вы утверждаете, что во всех сертифицированных криптоалгоритмах есть бэк дор о которых не знает ни кто из математиков, но о которых в курсе любой рядовой работник провайдеской компании? Не смешите мои тапки!
                          • 0
                            Ну что за наивные обвинения?! Все гораздо проще! Все алгоритмы в нашей стране кем сертифицирууются? Все компании предоставляющие шифрованные каналы сотрудничают со службами, вот такой вот чекистский лайфхак и никакие бэкдоры не нужны. Вы бы получше в суть написанного вникали…
                            • 0
                              Сертифицируются. Предоставляются. Дальше то что? Пользователи тоже обязаны «сертифицировать» свои ключи что ли? Или вы про какой-то очень частный случай, когда услуги шифрования предоставляются третьими лицами? Ну, так такой странный способ использования шифрования, по-моему, вообще эквивалентен его отсутствию. Кто в своём уме будет пользоваться таким для чего-то, что действительно требует защиты???
                              • 0
                                Ладно, вижу спор бесполезен и бессмысленен. Желаю Вам не сталкиваться с ситуацией, когда нашим спецслужбам нужно получить доступ к информации ходящим по Вашим шифрованным каналам. Если у них нет копии ключа для расшифровки, поверьте мне, они найдут очень простой и не совсем элегантный способ получить то, чего им нужно. Надеюсь не надо объяснять какой.
                                • 0
                                  Копец. Я ему про Фому, он мне про Ярёму.
                                  Меня не интересуют другие способы. Они очевидны с нашими ли спецслужбами, с ненашими ли, с «красными» с «фошистами» или аль-каедой какой-нибудь, всё это совершенно не важно. Вы с надутыми щеками утверждали именно об уязвимости _алгоритмов_. Повторюсь АЛГОРИТМОВ! И так бездарно слили… Впрочем, этого и следовало ожидать — таких как вы параноидальных балаболов без каких-либо знаний по теме полно, начинаешь их спрашивать, они всегда в конце-концов начинают лепетать про набившие оскомину банальности вроде ТРК. Ну и нафига было начинать, если сказать нечего?
                                  • 0
                                    Еще раз — вдумчивее читайте комментарии. И поменьше старайтесь брызгать слюной — чревато обезвоживанием. И поменьше старайтесь додумывать, когда Вам что-то говорят/пишут — проще жизнь будет. Не вреите? Перечитайте мои комментарии и найдите указание на «Вы с надутыми щеками утверждали именно об уязвимости _алгоритмов_».
                                    А сливать надо уметь достойно. Успокойтесь, вздохните пару раз и забейте.
                      • 0
                        Стойкость шифртекста определяется не сложностью алгоритма цифрования, а сложностью ключа (т.е. сложностью его нахождения). Современная криптография строится на нескольких сложных задачах, решение которых, при современных вычислительных мощностях, либо не возможно, либо занимает значительное время (даже вплоть до Тепловой смерти Вселенной). Поэтому вполне вероятно, что у спецслужб есть уже вычисленые или заранее известные ключи, которые позволяют открыть шифртекст, при этом обычный человек никогда эти ключи не найдет — жизни не хватит их вычислить!
                        • 0
                          То есть вы полагаете, что во всех известных сертифицированных алгоритмах существует «универсальный» ключ, с помощью которого можно дешифровать любой шифротекст, зашифрованный любым ключём, но об этом факте никто из специалистов в криптографии не знает? Извините, но это бред сивой кобылы.
                      • 0
                        Отнюдь! Ведь ЭЦП призвано подтвердить подлинность и авторство текста, что с успехом реализуется схемой ЭЦП, которая обладает свойствами тех схем шифрования, которые в ней реализованы — а в результате формирования подписи получается строка бит!
      • –17
        Не находите немного странным в одном посте писать что Вы представляете такую-то компанию, предлагаете такой-то продукт и Ваши клиенты — придурки?
        • +12
          Может я невнимательно прочитал, но мне кажется, что вы многое додумываете, потомк что ничего из того, на что вы указали, я в статье не нашел.
      • 0
        а вы не опасаетесь, что теперь вам еще будут звонить и хабровчане с аналогичным вопросом?
        телефонный хабраэффект страшен!
    • 0
      И да, я вполне сознательно не указал ни место работы, ни какой-либо конкретный продукт. Потому что и то, и другое может (и будет) воспринято как реклама компании и, собственно говоря, продукта. Чего мне бы очень хотелось избежать.
    • +13
      что-то ничего рекламного я в этой статье не заметил,
      а статья полезная и прекрасно написана.
    • 0
      Вы так говорите, как будто это что-то плохое.
      • –3
        Это ваша фантазия. Я написал, что из кустов торчит рояль.
        Никого не склоняю думать «что-то плохое» в адрес вашей компании. Извольте :)

        Просто изложение материала мне показалась наигранное. Я прошел по ссылке. Автора статьи вы пригласили и сейчас начнёте его защищать — очевидно же.
        Мне же очевидно, что цикл статей обещает и пишет человек не от умения профессионально поделиться накопленными знаниями как специалист, а скорее от желания пропирить «знания», фирму. Создавая якобы полезный контент, который якобы днем с огнем не сыщешь, завернутого в обертку «это сделала фирма N». Мне не нравятся такие мотивы людей.

        Естественно, вам как сотруднику этой же фирмы, видней какие реалии :-)
        • +1
          Извините, а не поделитесь секретом телепатии? Мне бы очень помогла телепатия в обычной работе и общении с людьми. И вообще, подобными секретами надо делиться с обществом, они бесценны
          • –2
            Ага, прям щас так и поделился :)
          • 0
            О, ваш праведный пыл. «Привыкайте к инакомыслию» ©
        • +1
          Говоря по правде, цикл статей на тему ЭЦП этому человеку не далее как вчера посоветовал написать я, потому как знаю, что он отлично разбирается в теме, тема достаточно интересная для сообщества, а количество заблуждений на тему ЭЦП огромно.

          Ну, вам, вероятно, виднее, я же не спорю.
        • +2
          >Мне же очевидно, что цикл статей обещает и пишет человек не от умения профессионально поделиться накопленными знаниями как специалист, а скорее от желания пропирить «знания», фирму.

          В данном случае фирму пиарите Вы :)
          В посте я не увидел ни единого упоминания о какой-то фирме, поэтому просто с удовольствием прочитал его. Зато именно после Вашего комментария я узнал, что автор — сотрудник компании такой-то, что такая компания вообще существует, и что эта компания занимается разработкой и продажей программы для ЭЦП.

          Сколько Вам заплатили за такой тонкий пиар? ;)
          • 0
            Конечно, получился. В посте вы не увидели, потому что в этой серии о ней не было написано :)
            Заплатили много, обращайтесь если что :-)
    • +2
      Логично, по-моему, что человек пишет о том, в чём разбирается :)
  • 0
    Ну вот если бы без редисок писали, то было бы здорово (: Но статья хорошая (:
    • 0
      Немного подумав, редисок убрал :)
  • +5
    Ещё одна статья простым языком о нетривиальных вещах. Это хорошо.

    Но чувствуется бессистемность, что ли. Стиль изложения — зацепились за ниточку и раскручиваем «клубок», по мне так лучше разложенное по полочкам.

    Лучшим для начала считаю
    Введение в криптографию с сайта www.pgpru.com.

    К сожалению так и не увидел определения ЭЦП. Объяснения есть, определения нет. Что из этого нужно в «сухом остатке»?

    Цифровая подпись определённого человека — это результат хэш-функции документа, подписанный закрытым ключом этого человека.

    И, пожалуйста, не называйте результат хэш-функции цифровой подписью. Пишите хотя бы «почти ЭЦП».

    • +1
      Ссылка не прошла. Пишу отдельно www.pgpru.com/biblioteka/osnovy/vvedenievkripto
    • +1
      Да, пожалуй, не хватает структуры, резюме, выводов.
    • 0
      Однозначного определения ЭЦП Вы не дадите, например Ваше определение всего лишь частный случай. Присутствие хэш функции в ЭЦП вовсе не обязательно.
      • 0
        Строго говоря — согласен. Применительно к данной статье НЕТ. По моему в статье идёт речь именно о ТАКОЙ цифровой подписи и для введения в криптографию определение подходит.

        Кстати, не вижу правильного/вашего определения ЭЦП ;-)
        • +1
          Правильного определения не существует, т.к. определение ЭЦП зависит от использованного алгоритма для ее формирования. В связи с этим я не даю и свое определение, т.к. не представляю никакого алгоритма в своем комментарии.
          • 0
            А почему Вы решили что в определении должен быть указан конкретный алгоритм? :)
            Вы еще скажите что определения криптографии нет, так как слишком много методов :)
            Для определения иногда достаточно описать тип предмета и его свойства.
            • 0
              Потомучто ЭЦП с применением ХЭШ функции документа это одно, ассиметричного шифрование другое, с применением нонса — третье. Если для Вас и это не аргумент, то быть может отстутствие общего определения у Шнейера Вас убедит?
              Криптография это наука, поэтому она имеет определение. ЭЦП это обобщенное название группы алгоритмов, поэтому ей определение не подберешь.
              • 0
                Нет, не аргумент. Зачем Вы к определению ЭЦП принесли асимметричное шифрование? И что такое «нонс»?
                Попробуем сходу дать что-то типа определения:
                ЭЦП — реквизит электронного документа, позволяющий установить отсутствие искажения информации в электронном документе с момента формирования ЭЦП. Может иметь возможность однозначного установления даты подписи и используемого для подписи ключа. При соблюдении условий в Р.Ф. приравнивается к рукописной подписи.
                Я Брюса не читал, но если он об это писал, наверное он должен был определить для читателя о чем он пишет? Или как так?
                • 0
                  Зачем Вы к определению ЭЦП принесли асимметричное шифрование

                  Потомучто это один из вариантов реализации ЭЦП, он же представлен в статье.
                  И что такое «нонс»?

                  nonce — рандомное значение.
                  Может иметь возможность однозначного установления даты подписи и используемого для подписи ключа

                  Это уже часть конкретного алгоритма, никакой даты Вы не получите из алгоритма предложенного в статье, ровно как может не существовать никакого ключа при использование, например, хэш функции.
                  Первая часть опреджеления у Вас хороша, но не совсем. К тому же в данном случае определение будет весьма общим, хотя согласен это будет определением.
                  Я Брюса не читал, но если он об это писал, наверное он должен был определить для читателя о чем он пишет?

                  Не дает определение, но описывает о чем говорит в различных примерах и свойствах.
          • 0
            не соглашусь, поскольку, например, ГОСТ Р 34.10-2001 определяет ЭЦП как «Строка бит, полученная в результате процесса формирования подписи», но «Данная строка имеет внутреннюю структуру, зависящую от конкретного механизма формирования подписи».
            • 0
              довольно пространное определение, Вы не находите? Больше похоже на то, что определение нужно было дать ибо ГОСТ, но как его понятно сформулировать они не сообразили.
    • 0
      Структура — это хорошо, но чайнику структура не нужна :)
      Попытка структурно выстраивать повествование нагрузит статью целым ворохом информации, которая для первоначального понимания совсем не нужна.

      А определение… А так ли оно нужно? Оно не даст понимания, но может сбить, да и нету однозначного определения.
      • 0
        Как раз чайнику структура нужна. Расставляя акценты стимулируете запоминание. Что, в последствии, облегчает понимание.
      • 0
        Да, про отсутствие определения ЭЦП… Смысл тот же что и структура статьи. Краткость определения в выводах даёт большой плюс к пониманию, чем просто объяснения.

        Вопрос ближе к религиозному. Это ваш стиль изложения, возможно кому-то будет ближе…
      • 0
        Я — чайник, мне структура на фиг не нужна :)
        Если мне понадобится углубить знание — я изучу специализированную литературу. Для общего понимания сути вопроса вполне достаточно «размотать клубок», ИМХО.

        З.Ы. спасибо за статью, жду продолжения.
  • +2
    «Как водится у людей» — ох уж эти глупые людишки :)
    • 0
      Слава роботам! Смерть человекам!
  • НЛО прилетело и опубликовало эту надпись здесь
  • +2
    «Приводя аналогию, у вас есть отличный замок и два ключа к нему. Один ключ замок открывает (открытый), второй — закрывает (закрытый). Вы берете коробочку, кладете в нее какую-то вещь и закрываете ее своим замком. Так, как вы хотите, чтобы закрытую вашим замком коробочку открыл ее получатель, то вы открытый, открывающий замок, ключик спокойно отдаете ему. „

    Как бы шифрация коробочки идет не своим закрытым ключем, потому что тогда любой сможет открытым ключем прочесть данные, а наоборот, ты берешь у дяди его открытый ключ, им подписываешь и возвращаешь дяде, а ТОЛЬКО он имеет ЗАКРЫТЫЙ(приватный) ключ, которым он сможет открыть.

    • 0
      За что минусуете то хоть, напишите поподробнее?
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        За то, что поленились подумать, прежде чем писать. Мне тоже при чтении статьи сразу показалось, что автор перепутал. Потому что до сих пор повседневно встречался только случай шифрования открытым ключом. Чутка подумав понял что тут другое дело и всё написано правильно. Наверняка с большинством было так же, но Вы поторопились написать коммент.
        Ничего личного, просто Вы спросили за что, я попытался за всех ответить…
    • +1
      В статье все написано верно, а вот у Вас — нет. Закрывать коробку нужно своим, чтобы любой мог посмотреть, что лежит внутри с помощью Вашего открытого ключа(это даст гарантию, что именно Вы туда это положили). Это так же даст гарантию, что никто не положит туда что-то Вас компрометирующее, и сможет в дальнейшем утверждать, что именно Вы это туда положили.
    • +4
      Не про шифрацию вообще речь, а про подписывание. В том смысл ЭЦП и заключается, что все могут взять мой открытый ключ и «применив» его к информации (вычислив хеш этой информации и сравнив его с расшифрованным с помощью моего открытого ключа хешем из ЭЦП), для которой есть моя ЭЦП убедиться, что: а) информация подписана именно моим закрытым ключом (то есть никто другой в теории её подписать не мог); б) информация с момента подписания не изменена (то есть вы получили именно то, что я подписывал). У такой ЭЦП два основных применения — 1) подтверждение авторства (не в смысле копирайта, а в смысле источника) и неизменности информации и 2) подтверждение прочтения информации. Шифрование документа в функции ЭЦП не входит.

      Другое дело, что, например, в деловой переписке применяется и ЭЦП, и шифрование, то есть я создаю документ, вычисляю его хеш, зашифровываю хеш своим закрытым ключом (то есть создаю подпись), и зашифровываю и документ, и свою подпись открытым ключом получателя. При таком раскладе: а) прочитать документ (и мою подпись под ним) может только получатель; б) получатель знает, что документ отправил ему именно я; в) получатель знает, что содержание документа не изменилось. Если просто зашифрую его открытым ключом, то будет действовать только первый пункт (только получатель сможет прочитать документ, но более ничего)
  • –3
    «Один ключ замок открывает (открытый), второй — закрывает (закрытый).»
    Открытый ключ не открывает, а в открытом доступе, т.е. качай кто пожелает его, для того чтобы ВАМ смогли отправить зашифрованное сообщение.

    Закрытый ключ — не закрывает, как раз он открывает, а правильно он называется приватный, т.е. ключ только ВАШ и никто его не должен иметь, и только ВЫ как получатель зашифрованного открытым ключем сообщения сможете его прочесть.

    • –2
      По-моему, кто-то путает смыслы асинхронного криптования и ЭЦП.
    • +3
      Милейший, Вы конечно правы, но здесь эти слова приведены в контексте ЭЦП, для лучшего понимания, читайте внимательней и вдумывайтесь, пожалуйста.
    • +1
      Это две абсолютно разные операции.

      При установке ЭЦП — документ хэшируется и результат хэширования шифруется ПРИВАТНЫМ ключом. Именно для того, чтобы любой мог ОТКРЫТЫМ ключом подписанта расшифровать и сверить подлинность хэша.

      При шифровании — документ шифруется ОТКРЫТЫМ ключом получателя, дабы только он мог своим ПРИВАТНЫМ ключом его расшифровать.

      Очень упрощённо, конечно, но поскольку в статье речь идёт именно об установке ЭЦП, а не о шифровании документа — то имеем как раз первый случай.
      • 0
        да уж что верно то верно, видимо после тяжелых рабочих будней уже путаю контекст.
  • 0
    Проблемы-то вы описали, а где набор решений?

    1. С помощью подписывания сертификатов (как принято у «нормальных людей»)
    2. С помощью тайм-сервера
    4. И, наконец, с помощью стандартов

    Зачем защищать подпись от подмены я так и не понял. Подменят подпись = документ не подписан.
    • 0
      Я может быть не верно чего-то понимаю, но мне кажется подмена подписи ведет к подмене подписанта. Например, есть некий документ, который кто-то подписал. В документе чистосердечное признание в массовых убийствах. Некое 3-е лицо подменяет подпись на вашу, и после этого считается, что автором этого замечательного признания являетесь вы.
      • 0
        И как же это третье лицо сможет подменить подпись? Для этого нужно чтобы я применил функцию шифрования со своим закрытым ключом к хешу аналогичного текста. У вас есть такой документ с моей подписью?

        А так как я параноик, то перед любым подписыванием ещё и дату в документе поставлю в произвольном формате.
        • 0
          Так именно применение шифрования со своим закрытым ключом к хешу и является защитой от подмены, то есть хеш это подпись (вернее что-то вроде «я, нижерасписавшийся, с документом ознакомлен и согласен»), а шифрование — защита от её подмены («ФИО» — всякие name в сертификате, «роспись» — шифрование закрытым ключом)
          • 0
            Ну, знаете… вы сначала определения тогда дайте, что под подписью понимаете.

            Я студентам преподаю, что подпись включает в себя шифрование и неотделимо. А без шифрования — это простой хеш (без шифрования, так как бывают и хеши с шифрованием).
            • 0
              Для меня подпись (защита от изменения и «копирайт») = хеш документа с моей солью, например, md5(doc+'© VolCh') или хеш документа, зашифрованный моим открытым ключом. Шифрование этого хеша моим закрытым ключом = защита этой подписи от подмены.
            • 0
              Да, неотделимо. Просто хэш подписью назвать в полной мере нельзя.
              Но то вы преподаете это студентам, которые знали, на что шли, а еще они молодые и (относительно) активные.
              Это же все я пишу для человека, который слышал про ЭЦП, но что это не представляет, или же представляет неверно, потому что последовательной информации, разъясняющей что и как лично я в интернетах не нашел.

              Ну и статьи тестируются на подопытном чайнике =) Попытка дать данному чайнику объяснение, что хэш+шифр — связка провалилась, поэтому было порвано вот так.
    • 0
      Еще пример: добавление дополнительной цифры в поле «сумма сделки» в бизнес документе. Нужна новая подпись. Ее сгенерировать возможно, просто это алгоритмически не решаемая задача и является очень ресурсоемкой. Зависит от длины используемых ключей.
      • 0
        Это изменение документа, и новая цифра приводит к новому хешу. Задача старая — обеспечить невозможность переноса подписи на другой документ.
        • 0
          Странная у Вас задача :)
          Если документы разные, то и подписи по своему содержанию будут разные. Имея открытый ключ (он публичен), теоретически можно пробовать генерировать подписи, что бы они к нему подходили.
          Или искать коллизии документа.
    • 0
      А вы не торопитесь :) Все это будет описано, но всему свое время. Не хочется создавать кашу в голове у читающего
  • 0
    Все эти проблемы чисто организационные и легко решаются. Я уже писал на этот счет — все технологии уже существуют. Все вопросы чисто организационные.
    • 0
      Цель — донести понимание до чайника, специально это указал в заголовке
  • +3
    Типичная ошибка всех нубгвайдов — говорить, что открытым ключом осуществляется шифрование, а закрытым расшифровка. После этой фразы невозможно по-человечески объяснить, как происходит подпись.

    Hint: правильно говорить о том, что зашифрованное одним ключом может быть расшифровано только другим ключом, они полностью идентичны по своему назначению, но один из них называют «закрытый» и никому не показывают, а второй называют «публичный» и отдают всем нужным людям.

    При подписи роли ключей меняются (шифруют закрытым, расшифровывают открытым).
  • 0
    Вчитался…

    Шифрование происходит с помощью закрытого ключа, а расшифровывание — с помощью открытого.

    О, госсподи! Наоборот. Строго наоборот. Шифруют публичным ключом (любой, у кого есть публичный ключ может вам «это» зашифровать), а расшифровка частным — любой (т.е. вы) у кого есть закрытый ключ может это прочитать.
    • +1
      Поправьте меня если я ошибаюсь, мне всегда казалось что действия выполняемые с помощью закрытого и открытого ключей являются не «шифрованием» и «расшифровкой», а применением неких операторов (назовём их Public Key и Private Key), таких, что верно следующее:

      cleartext -> Public Key -> ciphertext1 -> Private Key -> cleartext
      cleartext -> Private Key -> ciphertext2 -> Public Key -> cleartext
      
      в общем случае ciphertext1 != ciphertext2
      


      Так что закрытым ключом тоже можно шифровать.
      • 0
        Можно, я написал про это комментарием выше.

        Однако, для административных целей key1 key2 назвали Private/ Public и условились, что то, что f(cleartext, public) называется шифрованием, а то, что f(cleartext,private) — подписью.
        • +3
          Вы конечно извините, но ваши замечания только лишний сумбур добавляют. При том что в той же вики смысл прекрасно уложен в 2 предложения.

          «Открытый ключ передаётся по открытому каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ.»
        • 0
          Еще раз, товарищи, для чайников
          Да, условились. Донесите это на пальцах до чайника. Вот иначе, чем расчленить все пооперационно, у меня не вышло. Ну а то, что вышло на тестовом чайнике прошло
    • +1
      Речь идет про ЭЦП.
      Про шифрование — согласен на сто процентов.
    • 0
      Очевидно, что в данном случае речь идёт о шифровании хеша сообщения, и это шифрование происходит именно с помощью закрытого ключа и именно с целью того, что бы расшифровать мог кто угодно.
  • 0
    Жду следующую часть!
    А после какой части мы будем готовы к домашнему заданию в виде внедрения ЭЦП в своей компании?
  • +1
    Жаль, что основная проблема с ЭЦП не техническая, а организационная.
    Мне как потребителю, глубоко фиолетово, какие там функции, и я солидарен с тем, что наш хеш (хаше́ша?) надо как-то хранить, чтоб не сперли или там наоборот не подбросили…
    Меня, в общем то интересуют следующие вещи:
    — сколько стоит?
    — работает ли в аутлук и в гмейле?
    и самое главное
    — признается ли она без танцев с бубном аналогом собственноручной подписи? Т.е. без наличия предварительного бумажного договора о взаимном признании ЭЦП?

    Могу ли я написать емейл в прокуратуру, что когда я шел домой, менты у метро остановили меня и отобрали мой хеш и сами его скурили, подписать его ЭЦП и отправить? И это будет считаться моей подписью? Или подписать договор этой самой ЭЦП?
    • 0
      И все это я рассмотрю. И сделаю общее оглавление.
      Эта статья, скажем так, некоторое начало.

      К слову, без танцев с бубном признается в СНГ только в Казахстане, пожалуй. И то, там все только начинается. Но это тема на целую статью, немного терпения
    • 0
      Всё правильно, но знать азы пользователь в любом случае обязан.

      Иначе будет как с банковскими услугами — все хотят пользоваться, мало кто утруждает себя пониманием основ, в итоге потом случаются неприятные сюрпризы.
  • +1
    Спасибо, у меня завтра экзамен по защите информации, один билет готов =)
  • 0
    При чтении MoReq2 замечена неочевидная особенность всех этих ЭЦП в отношении долговременного хранения: Они устаревают!

    Устаревают, и становятся невычислимыми. Посему — в архиве надо хранить про них ВСЁ — и их самих, и результаты их проверки. И в будущем придётся доверять не столько подписи, сколько записи о том, что подпись была когда-то проверена. И обеспечивать неподменяемость этих результатов средствами базы, а не движков подписей.
    • 0
      Про невычислимые — тоже не так. Они могут быть скомпрометированы по истечении определенного срока, это да. Способы обхода этого кое-кто и кое-где уже пробовал.
      В статьях проблему рассмотрю, но, увы, до этого дойдет не в ближайшие пару дней, надо быть последовательным
      • 0
        Если я правильно понимаю, то это (система ЭЦП) одна из самых заметных попыток программистов и иже с ними, создать долгоживущую саморегулирующуюся систему.
      • 0
        Именно что невычислимы — алгоритмы под не тот процессор, да без исходников — и усё, фиг проверишь…
  • 0
    Спасибо за начало.

    Буду ждать продолжения. Тема интересная, и хорошо, что написана для «чайников». Хотя «чайниковое» изложение может кому-то и не понравиться.
  • +1
    Хм, ну как-то уж совсем для «чайников» написано… Ничего не понял из статьи. Поэтому открыл Википедию, почитал статьи про «ГОСТ Р 34.10-2001», «Электронную цифроваю подпись» и «Сертификаты открытого ключа», из которых и понял, «что», «где», «как», «зачем» и «почему»… а для закрепления понимания открыл книгу Шнайера.
    ну, а в целом — статья нормальна и требует обязательного продолжения, а также, я думаю, не помешал бы пример, описывающий ЭЦП, чтобы даже «чайник» все понял.
    • 0
      Вопрос хороший, но на него прямо сейчас отвечать я не могу. Со всеми этими паспортами все очень сложно, причем настолько, что заслуживает отдельной статьи
      • 0
        Просим, просим! Очень животрепещущая тема :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.