Введение
Форма цифровой подписи
In cryptography a blind signature, as introduced by David Chaum, is a form of digital signature in which the content of a message is disguised (blinded) before it is signed. The resulting blind signature can be publicly verified against the original, unblinded message in the manner of a regular digital signature. Blind signatures are typically employed in privacy related protocols where the signer and message author are different parties. Examples include cryptographic election systems and digital cash schemes. An often used analogy to the cryptographic blind signature is the physical act of a voter enclosing a completed anonymous ballot in a special carbon paper lined envelope that has the voter's credentials pre printed on the outside. An official verifies the credentials and signs the envelope, thereby transferring his signature to the ballot inside via the carbon paper. Once signed, the package is given back to the voter, who transfers the now signed ballot to a new unmarked normal envelope. Thus, the signer does not view the message content, but a third party can later verify the signature and know that the signature is valid within the limitations of the underlying signature scheme. Blind signatures can also be used to provide unlinkability, which prevents the signer from linking the blinded message it signs to a later un blinded version that it may be called upon to verify. In this case, the signer's response is first "un blinded" prior to verification in such a way that the signature remains valid for the un blinded message. This can be useful in schemes where anonymity is required. Blind signature schemes can be implemented using a number of common public key signing schemes, for instance RSA and DSA. To perform such a signature, the message is first "blinded", typically by combining it in some way with a random "blinding factor". The blinded message is passed to a signer, who then signs it using a standard signing algorithm. The resulting message, along with the blinding factor, can be later verified against the signer's public key. In some blind signature schemes, such as RSA, it is even possible to remove the blinding factor from the signature before it is verified. In these schemes, the final output (message/signature) of the blind signature scheme is identical to that of the normal signing protocol.
В криптографии слепая подпись, предложенная Дэвидом Чаумом, является формой цифровой подписи, в которой содержание сообщения маскируется (затемняется) перед его подписанием. Полученная слепая подпись может быть публично проверена по отношению к исходному, незатемненному сообщению, как и обычная цифровая подпись. Слепые подписи обычно используются в протоколах, связанных с конфиденциальностью, где подписывающий и автор сообщения – разные стороны. Примерами служат криптографические системы голосования и схемы цифровых денег. Часто используемой аналогией к криптографической слепой подписи является физический акт избирателя, помещающего заполненный анонимный бюллетень в специальный конверт, выстланный копировальной бумагой, на внешней стороне которого предварительно напечатаны учетные данные избирателя. Должностное лицо проверяет учетные данные и подписывает конверт, тем самым перенося свою подпись на бюллетень внутри через копировальную бумагу. После подписания пакет возвращается избирателю, который перекладывает подписанный бюллетень в новый, чистый обычный конверт. Таким образом, подписывающий не просматривает содержание сообщения, но третья сторона может впоследствии проверить подпись и убедиться в ее действительности в пределах ограничений используемой схемы подписи. Слепые подписи также могут использоваться для обеспечения невозможности установления связи, что предотвращает связывание подписывающим затемненного сообщения, которое он подписывает, с последующей незатемненной версией, которую ему может потребоваться проверить. В этом случае ответ подписывающего сначала "раскрывается" перед проверкой таким образом, чтобы подпись оставалась действительной для незатемненного сообщения. Это может быть полезно в схемах, где требуется анонимность. Схемы слепой подписи могут быть реализованы с использованием ряда распространенных схем подписи с открытым ключом, например RSA и DSA. Для выполнения такой подписи сообщение сначала "затемняется", обычно путем комбинирования его с случайным "затемняющим фактором". Затемненное сообщение передается подписывающему, который подписывает его, используя стандартный алгоритм подписи. Полученное сообщение вместе с затемняющим фактором может быть впоследствии проверено по открытому ключу подписывающего. В некоторых схемах слепой подписи, таких как RSA, даже возможно удалить затемняющий фактор из подписи перед ее проверкой. В этих схемах конечный результат (сообщение/подпись) схемы слепой подписи идентичен результату обычного протокола подписи.
In cryptography a blind signature, as introduced by David Chaum, is a form of digital signature in which the content of a message is disguised (blinded) before it is signed. The resulting blind signature can be publicly verified against the original, unblinded message in the manner of a regular digital signature. Blind signatures are typically employed in privacy related protocols where the signer and message author are different parties. Examples include cryptographic election systems and digital cash schemes. An often used analogy to the cryptographic blind signature is the physical act of a voter enclosing a completed anonymous ballot in a special carbon paper lined envelope that has the voter's credentials pre printed on the outside. An official verifies the credentials and signs the envelope, thereby transferring his signature to the ballot inside via the carbon paper. Once signed, the package is given back to the voter, who transfers the now signed ballot to a new unmarked normal envelope. Thus, the signer does not view the message content, but a third party can later verify the signature and know that the signature is valid within the limitations of the underlying signature scheme. Blind signatures can also be used to provide unlinkability, which prevents the signer from linking the blinded message it signs to a later un blinded version that it may be called upon to verify. In this case, the signer's response is first "un blinded" prior to verification in such a way that the signature remains valid for the un blinded message. This can be useful in schemes where anonymity is required. Blind signature schemes can be implemented using a number of common public key signing schemes, for instance RSA and DSA. To perform such a signature, the message is first "blinded", typically by combining it in some way with a random "blinding factor". The blinded message is passed to a signer, who then signs it using a standard signing algorithm. The resulting message, along with the blinding factor, can be later verified against the signer's public key. In some blind signature schemes, such as RSA, it is even possible to remove the blinding factor from the signature before it is verified. In these schemes, the final output (message/signature) of the blind signature scheme is identical to that of the normal signing protocol.
Применение
Схемы слепой подписи широко используются в приложениях, где важна конфиденциальность отправителя. Это включает в себя различные схемы "электронных денег" и протоколы голосования. Например, для обеспечения целостности некоторых систем электронного голосования может потребоваться сертификация каждого бюллетеня избирательной комиссией перед его подсчетом. Это позволяет комиссии проверять полномочия избирателя, чтобы убедиться в его праве на участие в голосовании и предотвратить подачу более одного бюллетеня. При этом важно, чтобы комиссия не получала информации о выборе избирателя. Неотслеживаемая слепая подпись обеспечивает такую гарантию, поскольку комиссия не видит содержимого бюллетеня, который она подписывает, и не может связать подписанные слепые бюллетени с неподписанными бюллетенями, полученными для подсчета.
Схемы слепой подписи
Существуют схемы слепой подписи для многих протоколов цифровой подписи с открытым ключом. Более формально, схема слепой подписи — это криптографический протокол, в котором участвуют две стороны: пользователь Алиса, желающая получить подписи на своих сообщениях, и подписывающий Боб, владеющий своим секретным ключом подписи. В конце протокола Алиса получает подпись Боба на сообщение m, при этом Боб ничего не узнает о содержании этого сообщения. Эту идею о том, что ничего не узнается, сложно формализовать математически. Обычно применяют подход, заключающийся в доказательстве того, что для любого (злоумышленника, выступающего в роли) подписывающего существует симулятор, способный выдавать ту же информацию, что и сам подписывающий. Это аналогично определению нулевого знания в системах доказательства с нулевым разглашением.
Опасности слепого знака RSA
RSA уязвима к атаке RSA с ослеплением, позволяющей обманом заставить расшифровать сообщение, слепо подписав другое. Поскольку процесс подписи эквивалентен расшифровке с использованием секретного ключа подписанта, злоумышленник может предоставить ослеплённую версию сообщения, зашифрованную открытым ключом подписанта, для подписи. Зашифрованное сообщение обычно содержит некоторую секретную информацию, которую злоумышленник перехватил при отправке в зашифрованном виде под открытым ключом подписанта и которую он хочет узнать. После удаления ослепления подписанная версия будет содержать открытый текст:
где – зашифрованная версия сообщения. Когда сообщение подписано, открытый текст легко извлекается:
Обратите внимание, что обозначает функцию Эйлера. Теперь сообщение легко получить. Эта атака работает, поскольку в данной схеме слепой подписи подписант подписывает сообщение напрямую. В отличие от этого, в схеме обычной подписи подписант обычно использует схему дополнения (например, подписывает результат криптографической хеш-функции, применённой к сообщению, а не само сообщение). Однако, поскольку подписант не знает фактическое сообщение, любая схема дополнения при удалении ослепления даст неверный результат. Из-за этого мультипликативного свойства RSA один и тот же ключ никогда не следует использовать для шифрования и подписи.