Для реализации схемы цифровой подписи обычно выбирается какая-либо криптосистема, чаще асимметричная, но можно использовать и симметричную. Такие криптосистемы используются реже в протоколах цифровой подписи, так как требуют привлечения так называемого посредника — абонента, заслуживающего безусловное доверие всех сторон. Рассмотрим вначале такую схему.
Пусть отправитель — абонент А хочет подписать цифровое сообщение и послать его адресату — абоненту B. Используя симметричный шифр Е = { Ek }, он может это сделать с помощью посредника — абонента C, имеющего ключ k1 для секретной связи с отправителем А, и ключ k2 для секретной связи с адресатом В. Эти ключи должны быть установлены заранее до начала протокола и могут использоваться многократно для нескольких подписей.
Изложим протокол по шагам.
1. Отправитель А шифрует с использованием ключа k1 сообщение m для адресата В и отправляет криптограмму c посреднику, где
Ek1 (m) =c.
2. Посредник расшифровывает криптограмму c, используя ключ k1:
|
|
Ek1‑1 (c) =m.
3. Посредник C формирует блок информации IА = [ m,c,рА ], состоящий из расшифрованного сообщения m, копии криптограммы c и информационного блока рА, подтверждающего, что сообщение исходило от А (идентификатор абонента А). Используя ключ k2, он шифрует блок IА и посылает криптограмму d получателю В, где Ek2 (IА) =d.
4. В расшифровывает криптограмму d, используя ключ k2:
Ek2‑1 (d) = IА = [ m,c,рА ].
Теперь он может прочесть сообщение m и сертификат посредника рА о том, что его отправил А.
К достоинствам протокола следует отнести следующее:
1. Только посредник и отправитель А совместно владеют секретным ключом k1, поэтому только А мог отправить посреднику сообщение, зашифрованное ключом k1 (подпись не подделывается),и подтверждение посредником этой подписи достоверно. Если активный противник попытается выдать себя за отправителя А, посредник обнаружит это на шаге 2 и не отправит сообщение адресату В.
2. Эта подпись не тиражируется и подписанный документ неизменяем. Если бы В попытался сертификат посредника рА объединить с ложным сообщением m', то есть заявить, что он получил блок с сообщением m' и сертификатом рА, то посредник обнаружил бы это несоответствие. Он запросил бы у В это ложное сообщение m' и криптограмму c. Зашифровав ложное сообщение m' на ключе k1, посредник обнаружил бы, что Ek1 (m') ≠ c, то есть вычисленная криптограмма не совпадает с криптограммой c, которую ему прислал В. Естественно, В не мог бы предъявить криптограмму c', которая согласуется с m', потому что он не знает ключа k1.
3. От этой подписи нельзя отречься. Если отправитель А позднее заявит, что он не посылал сообщения m, то хранящиеся у В сертификат посредника рА вместе с сообщением m засвидетельствуют обратное.
|
|
Таким образом, данный протокол устраняет недостатки, присущие традиционной подписи на бумажном документе.
Рассмотрим еще один протокол с участием посредника, задача которого — обеспечить предъявление получателем В третьему лицу D подписанного документа m, полученного им от отправителя А.
1. Абонент В объединяет в блок I = [ m,рА ]полученное сообщение m с сертификатом посредника рА и шифрует блок I на ключе k2: Ek2 (IА) =w,
после этого В посылает криптограмму w посреднику C (для пересылки третьему лицу D).
2. Посредник, используя ключ k2, расшифровывает криптограмму w:
Ek2‑1 (w) = I.
3. Посредник C шифрует блок I на секретном ключе k3, используемом для связи с D, и посылает D криптограмму v: Ek3 (I) =v.
4. D расшифровывает криптограмму v, используя k3:
Ek3‑1 (v) = I= [ m, рА ].
Теперь В может прочесть и сообщение m, и сертификат посредника рА, свидетельствующий, что его послал А.
Эти протоколы в принципе выполнимы, но они требуют высокопроизводительной и безошибочной работы посредника. Он должен постоянно расшифровывать и зашифровывать сообщения между каждой парой абонентов, желающих отправить друг другу подписанный документ. Посредник является узким местомв такой системе связи, даже если он — бездушная компьютерная программа. Посредник должен быть непогрешим, ибо даже единственная ошибка в миллионе подписей подрывает доверие к нему. Кроме того, он должен работать в полной безопасности. Если его база данных по секретным ключам станет доступной злоумышленнику или кто-то исказит его ключи, функционирование системы будет нарушено. Этот протокол хорош скорее в теории, чем на практике.
Чтобы злоумышленник не смог воспользоваться многократно подписанным документом (например, денежным переводом), предназначенным для разового использования, в документ следует добавить информационный блок, где зафиксированы время и дата подписания документа, так называемая метка времени. Кроме того, метка времени на документе снижает риск отказа автора от своей подписи (если подписавший заявит, что у него украден закрытый ключ и документ подписан не им). Соответствующий протокол с посредником предусматривает следующие шаги:
1. А подписывает сообщение.
2. А генерирует заголовок, содержащий идентификационную информацию, затем добавляет заголовок к подписанному сообщению, подписывает все вместе и отправляет посреднику.
3. Посредник проверяет подлинность наружной подписи и подтверждает идентификационную информацию. Далее он проставляет метку времени на сообщении и на идентификационной информации. Затем он подписывает весь пакет и отсылает его как автору подписи А, так и адресату B.
4. B проверяет подлинность подписи посредника, идентификационную информацию и подлинность подписи А.
5. А проверяет подлинность сообщения, которое посредник послал B. Если А не признает своего авторства, он немедленно заявляет об этом.