Введение

Форма цифровой подписи

В криптографии слепая подпись, предложенная Дэвидом Чаумом, является формой цифровой подписи, в которой содержание сообщения маскируется (затемняется) перед его подписанием. Полученная слепая подпись может быть публично проверена по отношению к исходному, незатемненному сообщению, как и обычная цифровая подпись. Слепые подписи обычно используются в протоколах, связанных с конфиденциальностью, где подписывающий и автор сообщения – разные стороны. Примерами служат криптографические системы голосования и схемы цифровых денег. Часто используемой аналогией к криптографической слепой подписи является физический акт избирателя, помещающего заполненный анонимный бюллетень в специальный конверт, выстланный копировальной бумагой, на внешней стороне которого предварительно напечатаны учетные данные избирателя. Должностное лицо проверяет учетные данные и подписывает конверт, тем самым перенося свою подпись на бюллетень внутри через копировальную бумагу. После подписания пакет возвращается избирателю, который перекладывает подписанный бюллетень в новый, чистый обычный конверт. Таким образом, подписывающий не просматривает содержание сообщения, но третья сторона может впоследствии проверить подпись и убедиться в ее действительности в пределах ограничений используемой схемы подписи. Слепые подписи также могут использоваться для обеспечения невозможности установления связи, что предотвращает связывание подписывающим затемненного сообщения, которое он подписывает, с последующей незатемненной версией, которую ему может потребоваться проверить. В этом случае ответ подписывающего сначала "раскрывается" перед проверкой таким образом, чтобы подпись оставалась действительной для незатемненного сообщения. Это может быть полезно в схемах, где требуется анонимность. Схемы слепой подписи могут быть реализованы с использованием ряда распространенных схем подписи с открытым ключом, например RSA и DSA. Для выполнения такой подписи сообщение сначала "затемняется", обычно путем комбинирования его с случайным "затемняющим фактором". Затемненное сообщение передается подписывающему, который подписывает его, используя стандартный алгоритм подписи. Полученное сообщение вместе с затемняющим фактором может быть впоследствии проверено по открытому ключу подписывающего. В некоторых схемах слепой подписи, таких как RSA, даже возможно удалить затемняющий фактор из подписи перед ее проверкой. В этих схемах конечный результат (сообщение/подпись) схемы слепой подписи идентичен результату обычного протокола подписи.

Применение

Схемы слепой подписи широко используются в приложениях, где важна конфиденциальность отправителя. Это включает в себя различные схемы "электронных денег" и протоколы голосования. Например, для обеспечения целостности некоторых систем электронного голосования может потребоваться сертификация каждого бюллетеня избирательной комиссией перед его подсчетом. Это позволяет комиссии проверять полномочия избирателя, чтобы убедиться в его праве на участие в голосовании и предотвратить подачу более одного бюллетеня. При этом важно, чтобы комиссия не получала информации о выборе избирателя. Неотслеживаемая слепая подпись обеспечивает такую гарантию, поскольку комиссия не видит содержимого бюллетеня, который она подписывает, и не может связать подписанные слепые бюллетени с неподписанными бюллетенями, полученными для подсчета.

Схемы слепой подписи

Существуют схемы слепой подписи для многих протоколов цифровой подписи с открытым ключом. Более формально, схема слепой подписи — это криптографический протокол, в котором участвуют две стороны: пользователь Алиса, желающая получить подписи на своих сообщениях, и подписывающий Боб, владеющий своим секретным ключом подписи. В конце протокола Алиса получает подпись Боба на сообщение m, при этом Боб ничего не узнает о содержании этого сообщения. Эту идею о том, что ничего не узнается, сложно формализовать математически. Обычно применяют подход, заключающийся в доказательстве того, что для любого (злоумышленника, выступающего в роли) подписывающего существует симулятор, способный выдавать ту же информацию, что и сам подписывающий. Это аналогично определению нулевого знания в системах доказательства с нулевым разглашением.

Опасности слепого знака RSA

RSA уязвима к атаке RSA с ослеплением, позволяющей обманом заставить расшифровать сообщение, слепо подписав другое. Поскольку процесс подписи эквивалентен расшифровке с использованием секретного ключа подписанта, злоумышленник может предоставить ослеплённую версию сообщения, зашифрованную открытым ключом подписанта, для подписи. Зашифрованное сообщение обычно содержит некоторую секретную информацию, которую злоумышленник перехватил при отправке в зашифрованном виде под открытым ключом подписанта и которую он хочет узнать. После удаления ослепления подписанная версия будет содержать открытый текст:

где – зашифрованная версия сообщения. Когда сообщение подписано, открытый текст легко извлекается:

Обратите внимание, что обозначает функцию Эйлера. Теперь сообщение легко получить. Эта атака работает, поскольку в данной схеме слепой подписи подписант подписывает сообщение напрямую. В отличие от этого, в схеме обычной подписи подписант обычно использует схему дополнения (например, подписывает результат криптографической хеш-функции, применённой к сообщению, а не само сообщение). Однако, поскольку подписант не знает фактическое сообщение, любая схема дополнения при удалении ослепления даст неверный результат. Из-за этого мультипликативного свойства RSA один и тот же ключ никогда не следует использовать для шифрования и подписи.