Рассмотрим более практичные протоколы цифровой подписи, использующие асимметричные криптосистемы.
Вообще говоря, в криптосистемах с открытым ключом в качестве цифровой подписи может использоваться результат шифрования документа на закрытым ключе. Каждый, кто имеет открытый ключ, может воспользоваться им для расшифрования и тем самым проверить достоверность подписи. Такой протокол отвечает всем требованиям цифровой подписи и не нуждается в посреднике.
Но главная проблема состоит в том, что подписание больших документов посредством их шифрования асимметричным алгоритмом неэффективно в силу невысокой скорости шифрования. Тем более, что во многих случаях сам документ в шифровании не нуждается, так как не содержит секретной информации, тем не менее необходимо обеспечить его целостность и подтверждение авторства. Поэтому, как правило, подписывают путем асимметричного шифрования не сам документ, а полученную из него свертку, называемую хеш-функцией. Помимо экономии времени на постановку и проверку подписи, в данном варианте еще и хранение подписи требует меньше памяти и может осуществляться отдельно от хранения документа.
|
|
Получателю отправляется сам документ и его зашифрованная свертка в качестве подписи под этим документом. Получатель, владея только открытым ключом, может проверить подпись, но не может ее подделать, так для создания подписи необходим секретный ключ. При этом важным вопросом является защита общедоступной базы открытых ключей.
Отличие схемы цифровой подписи от схемы передачи зашифрованной информации (см. рис. 5.1) при асимметричном шифровании состоит в том, что в этой схеме источник ключей должен быть перенесен на сторону отправителя.
Итак, цифровая подпись представляет собой относительно небольшое количество дополнительной цифровой информации, передаваемой вместе с подписываемым текстом. Протокол электронной цифровой подписи (ЭЦП) включает в себя две процедуры:
1) процедуру постановки подписи; в ней используется секретный ключ отправителя сообщения;
2) процедуру проверки подписи, в ней используется открытый ключ отправителя.
При формировании ЭЦП отправитель прежде всего вычисляет хэш-функцию h (M) от подписываемого текста M. Вычисленное значение хэш-функции m= h (M) представляет собой один короткий блок информации m, зависящий от всего текста M в целом. Затем число m шифруется секретным ключом отправителя и результат шифрования представляет собой ЭЦП для данного текста M.
При проверке ЭЦП получатель сообщения также вычисляет хэш-функцию m = h (M) принятого по каналу текста M по известному алгоритму хеширования. После этого он расшифровает полученную вместе с текстом подпись при помощи открытого ключа отправителя и сравнивает, соответствует ли полученный результат вычисленному значению m хэш-функции.
|
|
Невозможность подделки ЭЦП гарантируется двумя моментами: невозможностью определить секретный ключ по открытому в асимметричных криптосистемах и невозможностью изменения документа таким образом, чтобы хэш-функция осталась без изменения.
1.24. Хэш-функции
Хэш-функция предназначена для сжатия подписываемого документа M до нескольких десятков или сотен бит. Значение хэш-функции h (M) сложным образом зависит от документа M и не позволяет восстановить сам документ M. Хэш-функция h (.) принимает в качестве аргумента сообщение (документ, файл) M произвольной длины и возвращает хэш-значение h (M)= m фиксированной длины. Таким образом, хэшированная информация является сжатым представлением основного сообщения произвольной длины. Иногда результат хэширования называют дайджестом сообщения.
Хэш-функция должна удовлетворять следующим условиям:
Ø хэш-функция должна быть однозначна;
Ø хэш-функция должна быть чувствительна к всевозможным изменениям в тексте M, таким, как вставки, выбросы, перестановки и др.
Ø хэш-функция должна обладать свойством необратимости, то есть задача подбора документа M ', который обладал бы требуемым значением хэш-функции, должна быть вычислительно неразрешима;
Ø вероятность того, что значения хэш-функции двух различных документов (вне зависимости от их длин) совпадут, должна быть ничтожно мала.
Из определения следует, что для любой хэш-функции есть тексты-близнецы — имеющие одинаковое значение хэш-функции, так как мощность множества аргументов неограниченно больше мощности множества значений. Такой факт получил название “эффект дня рождения”.
Для построения хэш-функций, как правило, используется односторонняя функция f (.), которая образует выходное значение длиной n при задании двух входных значений длиной n.
Этими входами являются блок исходного текста Mi и хэш-значение Hi -1 предыдущего блока текста: Hi = f (M i H i -1).
Mi ¾¾¾¾® Однонаправленная ¾¾¾¾® Hi
Hi -1 ¾¾¾¾® функция f
Хэш-значение, вычисляемое при вводе последнего блока текста, становится хэш-значением всего сообщения M.
В результате однонаправленная хэш-функция всегда формирует выход фиксированной длины независимо от длины входного текста.