Слепая подпись
Важным свойством протоколов цифровой подписи является знание подписывающим содержания подписываемого документа. Но на практике бывают ситуации, когда требуется, чтобы, например, нотариус подписал документ, не имея ни малейшего представления о его содержании. Нотариус не отвечает за содержание документа, он только заверяет, что нотариально засвидетельствовал его в определенное время. Происходит это следующим образом:
1. Участник А берет документ и умножает его на случайное число, которое называется маскирующим множителем.
2. Участник А посылает замаскированный документ участнику В, выполняющему функции нотариуса.
3. Участник В подписывает замаскированный документ.
4. Участник А удаляет маскирующий множитель, получая оригинальный документ, подписанный участником В.
Этот протокол работает только тогда, когда функция подписи и умножение коммутативны. Если это условие не выполнено, то можно использовать другие способы изменения документа.
Здесь возникает вопрос, может ли нотариус получить какую-нибудь информацию о том, что именно ои подписывает, и тем самым нарушить непроницаемость документа? Если маскирующий множитель действительно случаен и делает случайным замаскированный документ, ответ будет отрицательным. Сгенерированная в ходе протокола подпись называется полиостью слепой подписью.
Полностью слепые подписи обладают следующими свойствами:
• подпись участника В под документом правильна и служит доказательством того, что он подписал этот документ. Она убедит участника В в том, что он подписал этот документ, когда документ будет впоследствии предъявлен ему; при этом она также обладает всеми свойствами цифровых подписей;
• участник В не может связать подписанный документ с процессом подписания документа. Даже если у него хранятся записи обо всех сделанных им слепых подписях, он не сможет определить, когда он подписал конкретный документ.
На практике, конечно, высшей степенью безрассудства можно считать решение подписать документ, не имея понятия о его содержании. Однако и в этом случае существует способ, с помощью которого участник В может узнать, что именно написано в документе, и сохранить при этом полезные свойства полностью слепых подписей. Подобный протокол называется протоколом генерации слепых подписей.
Протокол слепой подписи работает аналогично описанному выше протоколу. Участник В получает большую пачку различных замаскированных документов. При этом он откроет, например, все, кроме одного, и затем подпишет последний. Вообразим, что оставшийся замаскированный документ как бы лежит в конверте. Ведь процесс маскировки документа вполне можно рассматривать как запечатывание его в конверт, а процесс удаления множителя маскировки - как вскрытие конверта. Когда документ спрятан, никто его не прочитает. Он подписывается с помощью кусочка копировальной бумаги, помещенной в конверт. В этом случае, когда подписывающий посредством копировальной бумаги ставит свою подпись на конверте, она отпечатывается и под документом.
Следующий протокол описывает идею слепых подписей:
1. Участник А готовит п документов, каждый из которых использует различный идентификатор.
2. Участник А маскирует каждый из документов различным маскирующим множителем.
3. Участник А отправляет п документов участнику В.
4. Участник В случайным образом выбирает п - 1 документ и просит участника А прислать маскирующий множитель для каждого из выбранных документов.
5. Участник А посылает участнику В соответствующие маскирующие множители.
6. Участник В открывает (то есть удаляет маскирующий множитель) п-1 документ и убеждается в том, что он корректен.
7. Участник В подписывает оставшийся документ и посылает его участнику А.
8. Теперь участник А удаляет маскирующий множитель и получает подписанный документ.
Этот протокол надежно защищен от мошенничества со стороны участника А. Теперь он должен точно угадать, какой документ участник В не будет проверять.
Существует прием, который уменьшает вероятность противоправного деяния со стороны участника А. На четвертом этапе участник В случайным образом выбирает п/2. документов для проверки. На пятом - участник А присылает ему соответствующие маскирующие множители. На седьмом этапе участник В перемножает все непроверенные документы и подписывает получившийся мегадокумент. На восьмом - участник А удаляет все маскировочные множители. Подпись участника В будет правильной, только если подписано произведение п/2 идентичных документов. Чтобы смошенничать, участнику А нужно точно угадать, какое подмножество документов будет проверять участник В. Вероятность этого гораздо ниже, чем вероятность угадать единственный документ, который участник В не проверял.
Протоколы данного типа имеют большое практическое значение в связи с развитием идеи электронных денег.