В криптографии слепой подписи , а введенный Дэвид Чаумом , [1] является формой цифровой подписи , в котором содержание сообщения замаскирован ( слепом ) до его подписания. Полученная слепая подпись может быть публично проверена по сравнению с исходным неслепым сообщением, как обычная цифровая подпись. Слепые подписи обычно используются в протоколах, связанных с конфиденциальностью, где подписывающее лицо и автор сообщения являются разными сторонами. Примеры включают криптографические системы выборов и схемы цифровых денег .
Часто используемая аналогия с криптографической слепой подписью - это физический акт, когда избиратель вкладывает заполненный анонимный бюллетень в специальный конверт с подкладкой из копировальной бумаги, на внешней стороне которого предварительно напечатаны учетные данные избирателя. Чиновник проверяет полномочия и подписывает конверт, тем самым перенося свою подпись на бюллетень для голосования внутри через копировальную бумагу. После подписания пакет возвращается избирателю, который переносит теперь подписанный бюллетень в новый немаркированный обычный конверт. Таким образом, подписывающий не просматривает содержимое сообщения, но третья сторона может позже проверить подпись и узнать, что подпись действительна в рамках ограничений базовой схемы подписи.
Слепые подписи также могут использоваться для обеспечения несвязанности , что не позволяет подписывающей стороне связать скрытое сообщение , которое она подписывает, с более поздней неслепой версией, которую он может запросить для проверки. В этом случае перед проверкой ответ подписывающей стороны сначала "не ослепляется", чтобы подпись оставалась действительной для сообщения без ослепления. Это может быть полезно в схемах, где требуется анонимность .
Схемы слепой подписи могут быть реализованы с использованием ряда общих схем подписи с открытым ключом , например RSA и DSA . Чтобы выполнить такую подпись, сообщение сначала "ослепляют", обычно путем объединения его каким-либо образом со случайным "фактором ослепления". Скрытое сообщение передается подписывающей стороне, которая затем подписывает его с использованием стандартного алгоритма подписи. Результирующее сообщение вместе с маскирующим фактором может быть позже проверено с использованием открытого ключа подписывающей стороны. В некоторых схемах слепой подписи, таких как RSA, можно даже удалить маскирующий фактор из подписи до ее проверки. В этих схемах окончательный результат (сообщение / подпись) схемы слепой подписи идентичен таковому для обычного протокола подписи.
Использует
Схемы слепой подписи находят широкое применение в приложениях, где важна конфиденциальность отправителя. Сюда входят различные схемы « цифровых денег » и протоколы голосования .
Например, целостность некоторой системы электронного голосования может потребовать, чтобы каждый бюллетень был сертифицирован избирательным органом, прежде чем он может быть принят для подсчета; это позволяет властям проверять учетные данные избирателя, чтобы убедиться, что ему разрешено голосовать, и что он не подает более одного бюллетеня. В то же время важно, чтобы этот орган не узнал выбор избирателя. Несвязанная слепая подпись обеспечивает эту гарантию, поскольку орган не будет видеть содержимое бюллетеней, которые он подписывает, и не сможет связать слепые бюллетени, которые он подписывает, с незакрытыми бюллетенями, которые он получает для подсчета.
Схемы слепой подписи
Схемы слепой подписи существуют для многих протоколов подписи с открытым ключом. Более формально схема слепой подписи - это криптографический протокол, в котором участвуют две стороны: пользователь Алиса, которая хочет получить подписи в своих сообщениях, и подписывающий Боб, который владеет своим секретным ключом подписи. В конце протокола Алиса получает подпись Боба на m, но Боб ничего не узнает о сообщении. Эту интуицию незнания чего-либо сложно описать математическими терминами. Обычный подход состоит в том, чтобы показать, что для каждой (состязательной) подписывающей стороны существует симулятор, который может выводить ту же информацию, что и подписывающая сторона. Это похоже на то, как нулевое разглашение определяется в системах доказательства с нулевым разглашением .
Слепые подписи RSA
[2] : 235
Одна из простейших схем слепой подписи основана на подписании RSA. Традиционный RSA подпись вычисляется путем поднятия сообщения м к секретному показателю d по модулю открытого модуля N . В слепой версии используется случайное значение r , такое, что r является взаимно простым с N (т. Е. Gcd ( r , N ) = 1). r возводится в открытую экспоненту e по модулю N , и результирующее значениеиспользуется как ослепляющий фактор. Автор сообщения вычисляет произведение сообщения и маскирующего фактора, то есть:
и отправляет полученное значение подписывающему органу. Поскольку r - случайное значение, а отображение перестановка, следует, что тоже случайный. Это означает, чтоне допускает утечки информации о м . Право подписи вычисляет Ослепленный подпись s' , как:
s ' отправляется обратно автору сообщения, который затем может удалить маскирующий фактор, чтобы выявить s , действительную подпись RSA для m :
Это работает, потому что ключи RSA удовлетворяют уравнению и поэтому
следовательно, s действительно является сигнатурой m .
На практике обычно требуется свойство, заключающееся в том, что при подписании одного скрытого сообщения создается не более одного действительного подписанного сообщения. Это означает, например, один голос на каждый подписанный бюллетень на выборах. Это свойство не выполняется для простой схемы, описанной выше: исходное сообщение и неслепая подпись действительны, но то же самое относится к скрытому сообщению и слепой подписи и, возможно, другим комбинациям, заданным умным злоумышленником. Решение этой проблемы - слепая подпись криптографического хеша сообщения, а не самого сообщения. [3]
Опасности слепой подписи RSA
RSA подвергается атаке с ослеплением RSA, с помощью которой можно обманом расшифровать сообщение путем слепой подписи другого сообщения. Поскольку процесс подписи эквивалентен расшифровке секретным ключом подписывающей стороны, злоумышленник может предоставить скрытую версию сообщения. зашифровано открытым ключом подписывающей стороны, чтобы они подписали. Зашифрованное сообщение, как правило, представляет собой некую секретную информацию, которую злоумышленник заметил в зашифрованном виде с открытым ключом подписавшего, о которой злоумышленник хочет узнать больше. Когда злоумышленник снимает слепоту подписанной версии, у них будет открытый текст:
где - это зашифрованная версия сообщения. Когда сообщение подписано, открытый текст легко извлекается:
Обратите внимание, что относится к тотальной функции Эйлера . Сообщение теперь легко получить.
Эта атака работает, потому что в этой схеме слепой подписи подписывающий подписывает сообщение напрямую. Напротив, в схеме неслепой подписи подписывающая сторона обычно будет использовать схему заполнения (например, вместо подписания результата криптографической хеш-функции, примененной к сообщению, вместо подписи самого сообщения), однако, поскольку подписывающая сторона не знает фактического сообщение, любая схема заполнения приведет к неверному значению, если оно не засвечено. Из-за этого мультипликативного свойства RSA один и тот же ключ никогда не должен использоваться как для шифрования, так и для подписи.
Смотрите также
Рекомендации
- ^ Чаум, Дэвид (1983). «Слепые подписи для неотслеживаемых платежей» (PDF) . Достижения в криптологии криптографии . 82 (3): 199–203.
- ^ Голдвассер, С. и Белларе, М. «Лекционные заметки по криптографии» . Летний курс по криптографии, Массачусетский технологический институт, 1996–2001 гг.
- ^ Проблемы One-More-RSA-Inversion и безопасность схемы слепой подписи Чаума
Внешние ссылки
- Заявка EP 1571777 «Электронный процесс голосования с использованием честных слепых подписей», опубликованная 07 сентября 2005 г. , передана France Telecom.
- Безопасность слепых подписей при прерывании
- Реализация слепой подписи в Java