vmartyanov.ru

Электронная цифровая подпись

Начал писать про TLS/SSL, всплыла тема про сертификаты, она потянула за собой тему ЭЦП, она же, в свою очередь, потянула тему асимметричной криптографии… И так далее, до самых основ мироздания, но я принял решение остановиться на уровне ЭЦП.

ЭЦП — электронная цифровая подпись. Для начала нужно сразу сказать, что не является ЭЦП: картинка с отсканированной подписью ручкой по бумаге внутри некоторого документа; надпись в документе вида «Вася Пупкин написал это».

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

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

Можно остановиться и тут, получив свою долю Истины, но этот путь для слабых духом! я же расскажу об асимметричной криптографии, которая применяется для ЭЦП. В общем случае, шифрование выглядит так: взяв текст «Вася Пупкин — молодец», некоторый алгоритм шифрования (попросту шифр) и ключ для шифра, мы путем шифрования получаем текст «абырвалгйокмамбыкмашыахынцчихпых». Зная алгоритм расшифровки и ключ мы сможем восстановить исходный текст, причем важно знать и алгоритм, и ключ. В этой схеме ключ для шифрования и расшифровки один и тот же, такая схема называется симметричной. Асимметричной называется схема, где для шифрования и расшифровки используются разные ключи, например RSA. Два ключа образуют ключевую пару, которая состоит из взаимосвязанных ключей: Приватного (закрытого) и Публичного (открытого). Зная публичный ключ крайне сложно получить соответствующий ему приватный, и это позволяет распространять публичный ключ, не опасаясь за приватный. Для шифрования используется один ключ из пары (публичный или приватный), а для расшифровки — второй. То есть то, что зашифровано публичным ключом можно расшифровать только приватным и наоборот.

Теперь нужно рассказать о хэш-функциях. Хэш-функция из исходных данных формирует небольшой результат — так называемую хэш-сумму. Хэш-сумма (часто говорят просто хэш) обычно имеет длину не более 100 байт, примерами хэш-функций являются MD5 и SHA-1. Хэш-функции обладают следующим важным свойством: вероятность того, что два разных набора исходных данных дадут один хэш крайне мала. Малейшее изменение входных данных меняет значение хэша.

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

Надежность такой схемы достаточно высока при условии того, что секретный ключ защищен от похищения и используемая хэш-функция хороша. Похищение секретного ключа Плохим Парнем приведет к тому, что он (как и любой другой владелец ключа) сможет подписывать любой документ и выдавать себя за Начальника. Плохая хэш-функция позволит подменять документы: Плохой Парень публичным ключом расшифровывает подпись и получает хэш оригинального документа. Далее, используя недостатки хэш-функции, он подготавливает другой документ с той же хэш-суммой и отправляет его получателю. Получатель на своей стороне получит совпадение хэшей и будет считать, что документ был написан Начальником.

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

Следующая статья будет о цифровых сертификатах применяемых для ЭЦП и проблеме доверия.

1 comment for “Электронная цифровая подпись

  1. Артём
    11.11.2014 at 11:29

    Продолжайте, пожалуйста цикл статей, ликбез необходим трудящимся! Понимаю, что вам за это не платят, но у вас доходчиво и просто изложение материала происходит, имхо. Большое человеческое Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *