Задача защиты ключей от подмены решается с помощью сертификатов. Сертификат позволяет удостоверить заключенные в нем данные о владельце и его открытый ключ подписью какого-либо доверенного лица. В централизованных системах сертификатов (например, PKI – Public Key Infrastructure) используются центры сертификации, поддерживаемые доверенными организациями. В децентрализованных системах (например, PGP – Pretty Good Privacy) путем перекрестного подписания сертификатов знакомых и доверенных людей каждым пользователем строится сеть доверия.
Управлением ключами занимаются центры распространения сертификатов. Обратившись к такому центру, пользователь может получить сертификат какого-либо пользователя, а также проверить, не отозван ли еще тот или иной открытый ключ.
ЭЦП под микроскопом
Рассмотрим принцип работы ЭЦП подробнее. Схема электронной подписи обычно включает в себя следующие составляющие:
¦ алгоритм генерации ключевых пар пользователя;
¦ функцию вычисления подписи;
¦ функцию проверки подписи.
Функция вычисления подписи на основе документа и секретного ключа пользователя вычисляет собственно подпись. В зависимости от алгоритма функция вычисления подписи может быть детерминированной или вероятностной. Детерминированные функции всегда вычисляют одинаковую подпись по одинаковым входным данным. Вероятностные функции вносят в подпись элемент случайности, что усиливает криптостойкость алгоритмов ЭЦП. Однако для вероятностных схем необходим надежный источник случайности (либо аппаратный генератор шума, либо криптографически надежный генератор псевдослучайных бит), что усложняет реализацию.
В настоящее время детерминированные схемы практически не используются. Даже в изначально детерминированные алгоритмы сейчас внесены модификации, превращающие их в вероятностные (так, в алгоритм подписи RSA вторая версия стандарта PKCS#1 добавила предварительное преобразование данных (OAEP), включающее в себя, среди прочего, зашумление).
Функция проверки подписи проверяет, соответствует ли она данному документу и открытому ключу пользователя. Открытый ключ пользователя доступен всем, так что любой может проверить подпись под данным документом.
Поскольку подписываемые документы переменной (и достаточно большой) длины, в схемах ЭЦП зачастую подпись ставится не на сам документ, а на его хэш. Для вычисления хэша используются криптографические хэш-функции, что гарантирует выявление изменений документа при проверке подписи. Хэш-функции не являются частью алгоритма ЭЦП, поэтому в схеме может быть использована любая надежная хэш-функция. Что же такое хэш?
Хэширование представляет собой преобразование входного массива данных в короткое число фиксированной длины (которое называется хэшем или хэш-кодом), таким образом чтобы, с одной стороны, это число было значительно короче исходных данных, но, с другой стороны, с большой вероятностью однозначно им соответствовало.
Продолжим. Алгоритмы ЭЦП делятся на два больших класса:
¦ обычные цифровые подписи;
¦ цифровые подписи с восстановлением документа.
Обычные цифровые подписи необходимо пристыковывать к подписываемому документу. К этому классу относятся, например, алгоритмы, основанные на эллиптических кривых (ECDSA, ГОСТ Р34.10-2001, ДСТУ 4145-2002). Цифровые подписи с восстановлением документа содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. К этому классу относится один из самых популярных алгоритмов – RSA, который мы рассмотрим в конце раздела.
Следует различать электронную цифровую подпись и код аутентичности сообщения, несмотря на схожесть решаемых задач (обеспечение целостности документа и невозможности отказа от авторства). Алгоритмы ЭЦП относятся к классу асимметричных алгоритмов, в то время как коды аутентичности вычисляются по симметричным схемам.
Можно сказать, что цифровая подпись обеспечивает следующие виды защиты.
¦ Удостоверение источника документа. В зависимости от деталей определения документа могут быть подписаны такие поля, как 'автор', 'внесенные изменения', 'метка времени' и т. д.
¦ Защита от изменений документа. При любом случайном или преднамеренном изменении документа (или подписи) изменится хэш, и, следовательно, подпись станет недействительной.
¦ Невозможность отказа от авторства. Поскольку создать корректную подпись можно, лишь зная закрытый ключ, а он известен только владельцу, то владелец не может отказаться от своей подписи под документом.
Совершенно очевидно, что ЭЦП вовсе не совершенна. Возможны следующие угрозы цифровой подписи, при которых злоумышленник может:
¦ подделать подпись для выбранного им документа;
¦ подобрать документ к данной подписи, чтобы подпись к нему подходила;
¦ подделать подпись для хоть какого-нибудь документа;
¦ подменить открытый ключ (см. подразд. 'Управление ключами' разд. 2.2) на свой собственный, выдавая себя за владельца;
¦ обманом заставить владельца подписать какой-либо документ, например, используя протокол слепой подписи;
¦ подписать любой документ от имени владельца ключа, если закрытый ключ уже украден.
При использовании надежной хэш-функции вычислительно сложно создать поддельный документ с таким же хэшем, как и у подлинного. Однако эти угрозы могут реализоваться из-за слабостей конкретных алгоритмов хэширования, подписи или ошибок в их реализациях.
RSA как фундамент ЭЦП
Не секрет, что наибольшую популярность среди криптоалгоритмов цифровой подписи приобрела RSA (применяется при создании цифровых подписей с восстановлением документа).
На начало 2001 года криптосистема RSA являлась наиболее широко используемой асимметричной криптосистемой (криптосистемой открытого ключа) и зачастую называется стандартом де факто. Вне зависимости от официальных стандартов существование такого стандарта чрезвычайно важно для развития электронной коммерции и вообще экономики. Единая система открытого ключа допускает обмен документами с электронно-цифровыми подписями между пользователями различных государств, приминяющими различное программное обеспечение на различных платформах; такая возможность насущно необходима для развития электронной коммерции.
Распространение системы RSA дошло до такой степени, что ее учитывают при создании новых стандартов. Первым при разработке стандартов цифровых подписей в 1997 году был разработан стандарт ANSI X9.30, поддерживающий Digital Signature Standard (стандарт цифровой подписи). Годом позже был введен ANSI X9.31, в котором сделан акцент на цифровые подписи RSA, что отвечает фактически сложившейся ситуации, в частности для финансовых учреждений.
До недавнего времени главным препятствием для замены бумажного документооборота электронным были недостатки защищенной аутентификации (установления подлинности); почти везде контракты, чеки, официальные письма, юридические документы все еще выполняются на бумаге.
Появление цифровой подписи на основе RSA сделало осуществление электронных операций достаточно безопасным и надежным.
Алгоритм RSA предполагает, что посланное закодированное сообщение может быть прочитано адресатом и только им. Как было уже сказано выше, в этом алгоритме используется два ключа – открытый и секретный. Данный алгоритм привлекателен также в случае, когда большое количество субъектов (N) должно общаться по схеме 'все-со-всеми'. В случае симметричной схемы шифрования каждый из субъектов каким-то образом должен доставить свои ключи всем остальным участникам обмена, при этом суммарное количество используемых ключей будет достаточно велико при большом значении N. Применение асимметричного алгоритма требует лишь рассылки открытых ключей всеми участниками, суммарное количество ключей равно N.