Слепая подпись
Слепая подпись (Blind Signature) — разновидность ЭЦП, особенностью которой является то, что подписывающая сторона не может точно знать содержимое подписываемого документа. Понятие слепой подписи придумано Дэвидом Чаумом (David Chaum)[1], им же предложена первая реализация через алгоритм RSA.
Содержание |
Описание[править]
Основная идея слепых подписей заключается в следующем. Отправитель А посылает документ стороне В, который В подписывает и возвращает А. Используя полученную подпись, сторона А может вычислить подпись стороны В на более важном для себя сообщении t. По завершении этого протокола сторона В ничего не знает ни о сообщении t, ни о подписи под этим сообщением.
Эту схему можно сравнить с конвертом, в котором размещён документ и копировальный лист. Если подписать конверт, то подпись отпечатается на документе, и при вскрытии конверта документ уже будет подписан.
Цель слепой подписи состоит в том, чтобы воспрепятствовать подписывающему лицу В ознакомиться с сообщением стороны А, которое он подписывает, и с соответствующей подписью под этим сообщением. Поэтому в дальнейшем подписанное сообщение невозможно связать со стороной А.
Алгоритмы слепой подписи[править]
Полностью слепая подпись[править]
Дана ситуация: Боб — нотариус. Алисе нужно, чтобы он подписал документ не имея никакого представления о его содержании. Боб только заверяет, что документ нотариально засвидетельствован в указанное время. Тогда они действуют по следующему алгоритму:
- Алиса берёт документ и умножает его на случайное число. Оно называется маскирующим множителем.
- Алиса отсылает документ Бобу
- Боб подписывает документ и отсылает обратно
- Алиса удаляет маскирующий множитель и получает свой документ с подписью.
Этот протокол работает, только если функции подписи и умножения коммутативны.
Слепая подпись[править]
- Боб готовит n документов на каждом из которых написано некоторое уникальное слово (чем больше n, тем меньше у Боба шансов смошенничать).
- Боб маскирует каждый документ уникальным маскирующим множителем и отправляет их Алисе.
- Алиса получает все документы и случайным образом выбирает n-1 из них.
- Алиса просит Боба выслать маскирующие множители для выбранных документов.
- Боб делает это.
- Алиса вскрывает n-1 документов и убеждается что они корректны.
- Алиса подписывает оставшийся документ и отсылает Бобу.
- Теперь у Боба есть подписанный Алисой документ с уникальным словом, которое Алиса не знает.
Протокол RSA[править]
Первая реализация слепых подписей была осуществлена Чаумом с помощью криптосистемы RSA:
- Алиса выбирает случайное число k, взаимно простое с n. Затем она маскирует m, вычисляя:

- Боб подписывает
: 
- Алиса снимает маскировку с
, вычисляя 
- Результатом является

Чаум придумал целое семейство более сложных алгоритмов слепой подписи под общим названием неожиданные слепые подписи. Их схемы ещё сложнее, но они дают больше возможностей.
Применение[править]
Банковские системы[править]
Наиболее широкое применение протокол слепых подписей нашёл в сфере цифровых денег. Например, чтобы вкладчик не обманул банк, может использоваться такой протокол: вкладчик пишет одинаковый номинал купюр на ста документах с разными номерами и депонирует в зашифрованном виде у банка. Банк выбирает случайным образом и требует раскрыть 99 (или n-1) конвертов, убеждается, что везде написано $10, а не $1000, тогда подписывает оставшийся конверт вслепую, не видя номера купюры.
Может быть предусмотрен более простой вариант: за каждым номиналом купюры у банка закреплена своя пара открытых ключей. Тогда под подпись присылается только номер купюры и необходимость проверки номинала перед подписью отпадает.
Тайное голосование[править]
Слепые подписи используются для тайного голосования. В протоколе Фуджиока, Окамото и Охта, избиратель подготавливает избирательный бюллетень со своим выбором, который он сделал, шифрует его секретным ключом, и маскирует его. Далее избиратель подписывает избирательный бюллетень и посылает его валидатору. Валидатор проверяет, что подпись принадлежит зарегистрированному избирателю, который еще не голосовал.
Если избирательный бюллетень действителен, валидатор подписывает избирательный бюллетень и возвращает его избирателю. Избиратель удаляет маскировку, раскрывая таким образом зашифрованный избирательный бюллетень, подписанный валидатором. Далее избиратель посылает в результате полученный подписанный, зашифрованный избирательный бюллетень счётчику, который проверяет подпись на зашифрованном избирательном бюллетене.
Если избирательный бюллетень действителен, счётчик размещает его в списке, который будет издан после всего голосования. После того, как список издан, избиратели проверяют, что их избирательные бюллетени находятся в списке и посылают счётчику ключи расшифрования, необходимые, чтобы открыть их избирательные бюллетени. Счётчик использует эти ключи для расшифрования избирательных бюллетеней и добавляет голос к общему числу. После выборов счётчик издает ключи расшифрования наряду с зашифрованными избирательными бюллетенями, чтобы избиратели могли независимо проверить выбор.
Примечания[править]
- ↑ Брюс Шнайер, "Прикладная криптография. 2-е издание. Протоколы, алгоритмы и исходные тексты на языке С", издательство "Триумф", 2002г.
Литература[править]
- Шнайер, Б., Прикладная криптография. 2-е издание. Протоколы, алгоритмы и исходные тексты на языке С - "Триумф", 2002г.
- Клюжев А., Электронное голосование, 2003г.
- Шаньгин, В.Ф., Соколов, А.В., Защита информации в распределенных корпоративных сетях и системах - "ДМК", 2002.


: 
, вычисляя 