В отличие от обычных схем цифровой подписи, описанных в разделе 6.3, схемы слепой подписи (иногда называемые схемами подписи вслепую) являются двусторонними протоколами между отправителем А и стороной В, подписывающей документ.
Основная идея этих схем заключается в следующем. Отправитель А посылает порцию информации стороне В, которую В подписывает и возвращает А. Используя полученную подпись, сторона А может вычислить подпись стороны В на более важном для себя сообщении m. По завершении этого протокола сторона В ничего не знает ни о сообщении m, ни о подписи под этим сообщением.
Цель слепой подписи состоит в том, чтобы воспрепятствовать подписывающему лицу В ознакомиться с сообщением стороны А, которое он подписывает, и с соответствующей подписью под этим сообщением. Поэтому в дальнейшем подписанное сообщение невозможно связать со стороной А.
Приведем пример применения слепой подписи. Схема слепой подписи может найти применение в тех случаях, когда отправитель А (клиент банка) не хочет, чтобы подписывающая сторона В (банк) имела возможность в дальнейшем связать сообщение m и подпись sB(m) c определенным шагом выполненного ранее протокола.
|
|
В частности, это может быть важно при организации анонимных безналичных расчетов, когда сообщение m могло бы представлять денежную сумму, которую А хочет потратить. Когда сообщение m c подписью sB(m) предъявляется банку В для оплаты, банк В не сможет проследить, кто именно из клиентов предъявляет подписанный документ. Это позволяет пользователю А остаться анонимным. Принципы организации системы анонимных безналичных расчетов с использованием так называемой “электронной наличности” (“цифровых денег”) на базе протоколов слепой подписи рассмотрены в.
Для построения протокола слепой подписи необходимы следующие компоненты:
1. Механизм обычной цифровой подписи для подписывающей стороны В. Пусть sB(Х) обозначает подпись стороны В на документе Х.
2. Функции f (×) и g (×) (известные только отправителю) такие, что
g (sB (f (m))) = sm (m),
при этом f (×) - маскирующая (blinding) функция,
g (×) - демаскирующая (unblinding) функция,
f (m) - замаскированное (blinded) сообщение m.
При выборе sB, f и g существует ряд ограничений.
Выберем в качестве алгоритма подписи sB для стороны В схему цифровой подписи RSA (см. п.6.3) с открытым ключом (N, E) и секретным ключом D, причем
N = P * Q - произведение двух больших случайных простых чисел.
Пусть k - некоторое фиксированное целое число, взаимно простое с N, т.е. НОД (N, k) = 1.
Маскирующая функция f: Zn ® Zn
определяется как f (m)= m * kE mod N,
а демаскирующая функция g: Zn ® Zn
определяется как g (m) = k-1m mod N. При таком выборе f, g и s получаем
|
|
g (sB (f (m))) = g (sB (m kE mod N)) = g (mD k mod N) = mD mod N = sB (m),
что соответствует требованию 2.
Согласно протоколу слепой подписи, который предложил Д.Чом [121], отправитель А сначала получает подпись стороны В на замаскированном сообщении m*. Используя эту подпись, сторона А вычисляет подпись В на заранее выбранном сообщении m, где 0 £ m £ N-1. При этом стороне В ничего неизвестно ни о значении m, ни о подписи, связанной с m.
Пусть сторона В имеет для подписи по схеме RSA открытый ключ (N, E) и секретный ключ D. Пусть k - случайное секретное целое число, выбранное стороной А и удовлетворяющее условиям 0 £ k £ N-1 и НОД (N, k) = 0.
Протокол слепой подписи Д.Чома включает следующие шаги:
(1) Отправитель А вычисляет замаскированное сообщение m* = m kE mod N и посылает его стороне В.
(2) Подписывающая сторона В вычисляет подпись s* = (m*)D mod N и отправляет эту подпись стороне А.
Сторона А вычисляет подпись s = k-1 s*mod N, которая является подписью В на сообщение m.
Нетрудно видеть, что
(m*)D º (mkE)D º mDk (mod N),
поэтому
k-1 s* º mD k k-1 º mD (mod N).
Д.Чом разработал несколько алгоритмов слепой подписи для создания системы анонимных безналичных электронных расчетов eCash [49, 108].