Боб просто проверяет значение случайного числа RA, содержащегося в каждом приходящем сообщении, запоминая все такие числа, полученные за последний час. Если в течение часа такое значение получено еще не было, Боб может быть уверен, что пришедшее сообщение является новым заказом.
8.4.2. Подписи с открытым ключом
Главная проблема, связанная с применением шифрования с симметричным ключом для цифровых подписей, состоит в том, что все должны согласиться доверять Большому Брату. Кроме того, Большой Брат получает возможность читать все подписываемые им сообщения. Наиболее логичными кандидатами на управление сервером Большого Брата являются правительство, банки или нотариальные бюро. Однако эти организации вызывают доверие не у всех граждан. Таким образом, было бы гораздо лучше, если бы для получения подписи на электронном документе не требовалась авторитетная доверительная организация.
К счастью, здесь может помочь шифрование с открытым ключом. Предположим, что алгоритмы шифрования и дешифрации с открытым ключом, помимо обычного свойства D(E(P)) = P, обладают свойством E(D(P)) = P. Таким свойством, например, обладает алгоритм RSA, поэтому такое предположение не является голословным. В этом случае Алиса может послать Бобу подписанное открытое сообщение P, переслав ему EB(DA(P)). Обратите внимание, что Алиса знает свой собственный (закрытый) ключ дешифрации DA, так же как и открытый ключ Боба EB, так что сформировать такое сообщение ей по силам.
Получив это сообщение, Боб расшифровывает его как обычно, используя свой закрытый ключ DB и получая в результате DA(P), как показано на рис. 8.16. Он сохраняет этот зашифрованный текст в надежном месте, после чего расшифровывает его открытым ключом шифрования Алисы EA, получая открытый текст.
Ри. 8.16. Цифровая подпись, полученная при помощи шифрования с открытым ключом
Чтобы понять, как работает цифровая подпись в данном случае, предположим, что Алиса впоследствии отрицает, что посылала Бобу сообщение P. Когда дело доходит до суда, Боб предъявляет суду P и DA(P). Судья легко может убедиться, что у Боба есть действительное сообщение, зашифрованное ключом DA, просто применив к нему ключ EA. Боб не знает закрытого ключа Алисы, следовательно, получить зашифрованное этим ключом сообщение он мог только от Алисы. Сидя в тюрьме за лжесвидетельство и мошенничество, Алиса сможет заняться разработкой новых интересных алгоритмов с открытым ключом.
Хотя схема использования шифрования с открытым ключом довольно элегантна, она обладает серьезными недостатками, связанными, правда, скорее не с самим алгоритмом, а со средой, в которой ему приходится работать. Во-первых, Боб может доказать, что это сообщение было послано Алисой, только пока ключ DA остается секретным. Если Алиса раскроет свой секретный ключ, этот аргумент перестанет быть убедительным, так как послать сообщение мог кто угодно, включая самого Боба.
Проблема может возникнуть, если Боб, например, является биржевым брокером Алисы. Алиса заказывает Бобу купить некоторое количество акций. Сразу после этого цена акций резко падает. Чтобы отречься от своего сообщения, посланного Бобу, Алиса заявляет в полицию, что ее дом был обворован, а компьютер вместе с секретным ключом украден. В зависимости от законов ее страны или штата, она может быть признана или не признана ответственной перед законом, особенно если она заявляет, что обнаружила, что ее квартира взломана, только после возвращения с работы, через несколько часов после того, как предполагаемый взлом случился.
Другая проблема данной схемы цифровой подписи возникает в случае, если Алиса решит сменить свой ключ. Подобное действие абсолютно законно, более того, рекомендуется периодически менять ключ, чтобы гарантировать его высокую надежность. В этом случае, если дело дойдет до судебного разбирательства, судья попытается применить к подписи DA(P) текущий ключ EA и обнаружит, что в результате не получается сообщение P. При этом Боб будет выглядеть довольно глупо.
В принципе для цифровых подписей можно использовать любой алгоритм с открытым ключом. Алгоритм RSA фактически стал промышленным стандартом. Он применяется во многих программах, предназначенных для обеспечения безопасности. Однако в 1991 году NIST предложил использовать для нового Стандарта цифровой подписи DSS (Digital Signature Standard) вариант алгоритма с открытым ключом Эль-Гамаля, основанный не на трудности разложения больших чисел на множители, а на сложности вычисления дискретных логаритмов.
Как обычно, попытка правительства навязать новые криптографические стандарты, вызвала много шума. Стандарт DSS критиковали за то, что он:
♦ слишком засекречен (протокол, использующий алгоритм Эль-Гамаля, разрабатывался Агентством национальной безопасности США);
♦ слишком медленный (от 10 до 40 раз медленнее алгоритма RSA для проверки подписей);
♦ слишком новый (алгоритм Эль-Гамаля еще не был достаточно тщательно проверен);
♦ слишком ненадежен (фиксированная длина ключа 512 бит).
При последующей переработке четвертый пункт претензий стал спорным, так как было разрешено использовать ключи длиной до 1024 бит. Однако первые два пункта актуальны и по сей день.
8.4.3. Профили сообщений
Многие методы цифровых подписей критикуются за то, что в них совмещаются две различные функции: аутентификация и секретность. Довольно часто требуется только аутентификация без секретности. К тому же, например, получить лицензию
на экспорт обычно проще, если система обеспечивает только аутентификацию, но не секретность. Ниже будет описана схема аутентификации, не требующая шифрования всего сообщения.
Эта схема основана на идее необратимой хэш-функции, которая принимает на входе участок открытого текста произвольной длины и по нему вычисляет строку битов фиксированной длины. У этой хэш-функции, часто называемой профилем сообщения (message digest, MD), есть четыре следующих важных свойства.
1. По заданному открытому тексту P легко сосчитать значение хэш-функции MD(P).
2. По цифровой подписи MD(P) практически невозможно определить значение открытого текста P.
3. Для данного P практически невозможно подобрать такой P, чтобы выполнялось равенство MD(P' ) = MD(P).
4. Изменение даже одного бита входной последовательности приводит к очень непохожему результату.
Чтобы удовлетворять требованию 3, результат хэш-функции должен быть, по крайней мере, длиной в 128 бит, желательно даже больше. Чтобы удовлетворять требованию 4, хэш-функция должна искажать входные значения очень сильно. Этим данный метод напоминает алгоритмы с симметричными ключами, которые мы рассматривали ранее.
Профиль сообщения по части открытого текста вычисляется значительно быстрее, чем шифруется все сообщение с помощью алгоритма с открытым ключом. Поэтому профили сообщений могут использоваться для ускорения работы алгоритмов цифровых подписей. Чтобы понять, как все это работает, рассмотрим снова протокол передачи цифровой подписи, показанный на рис. 8.15. Вместо того чтобы посылать открытый текст P вместе с
Большой Брат теперь вычисляет профиль со
общения MD(P), применяя функцию хэширования MD к открытому тексту P. Затем он помещает
как пятый элемент в список, который зашифровывает
ключом
и отправляет его Бобу вместо
В случае возникновения спора Боб может предъявить на суде как открытый текст
По просьбе судьи Большой Брат расшифровывает