Цифровые подписи и их проверка

Цифровая подпись удостоверяет создателя и дату создания документа. Если документ будет каким-либо образом изменен, то проверка цифровой подписи будет неудачной. Цифровая подпись может использоваться в тех же целях, что и обычная подпись. Исходные тексты GnuPG, например, подписаны, и Вы можете убедиться, что они дошли до Вас неизменёнными.

Создание и проверка подписей отличается от зашифрования/расшифрования. При подписи документа используется закрытый ключ подписывающего, а проверяется подпись с использованием его открытого ключа. Например, Alice использует свой секретный ключ, чтобы подписать свою новую статью в журнал. Редактор, получив письмо, использует открытый ключ Alice, чтобы проверить, что письмо действительно от Alice и не было изменено за время пересылки.

Для подписи документов используется команда --sign.

alice% gpg --output doc.sig --sign doc You need a passphrase to unlock the secret key for user: "Alice (test key) <alice@wonderland.uk>" 1024-bit RSA key, ID B115BDB6, created 2002-05-01 Enter passphrase:

Если не указать подписываемый документ, то данные считываются со стандартного ввода. Перед подписью документ сжимается. Подписанный документ выводится в двоичном формате.

Имея подписанный документ, Вы можете либо только проверить подпись, либо проверить подпись и восстановить исходный документ. Для проверки подписи используется команда --verify. Для проверки подписи и извлечения документа используется команда --decrypt.

blake% gpg --output doc --decrypt doc.sig gpg: Signature made Sat May 4 19:04:21 2002 MSD using RSA key ID B115BDB6 gpg: Good signature from "Alice (test key) <alice@wonderland.uk>"

Прозрачно подписанные(Clearsigned) документы

Обычно цифровые подписи применяются при подписи сообщений usenet и e-mail. При этом нежелательно сжимать подписываемые документы. Команда --clearsign добавляет к документу цифровую подпись в формате ASCII, не изменяя при этом сам документ.

alice% gpg --output doc.asc --clearsign doc You need a passphrase to unlock the secret key for user: "Alice (test key) <alice@wonderland.uk>" 1024-bit RSA key, ID B115BDB6, created 2002-05-01 Enter passphrase: alice% cat doc.asc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 GnuPG - инструмент для защиты коммуникаций. Эта глава коротко описывает основы работы с GnuPG, включая создание пар ключей, обмен ключами и их проверку, зашифровку и расшифровку документов, заверение документов цифровой подписью. Она не описывает в деталях принципы криптографии с открытым ключом, шифрования и цифровых подписей. Эти вопросы рассматриваются в главе 2. Здесь, также, не рассматриваются тонкости использования GnuPG. Эти вопросы рассматриваются в главах 3 и 4. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (FreeBSD) iQCVAwUBPNP8VMc6mYexFb22AQLdAAP/SXHINHglH00hLlscGoVE1FCiFX7qTSO3 qwUFQi29WhqCXCq4DFTfZGTs4XQzb7592KpDy9swwNZ2sB7vaxQjqukffBdWrksZ ERSZsz+xxKLWPiiBURg958Nym/eIRFY7nislv9Kc4V0UFDD9CjuE0rA7eWCg1XEX 0RcI2Zxiiv4= =UV8s -----END PGP SIGNATURE-----

Отделённая подпись

Применение подписанных документов ограниченно. Получатель должен восстанавливать документ из подписанной версии, и даже в случае прозрачной подписи, подписанный документ должен быть отредактирован для получения оригинала. Поэтому имеется третий метод подписи документов, который создает отделённую подпись (detached signature). Отделённая подпись создается при использовании команды --detach-sign.

alice% gpg --output doc.sig --detach-sign doc You need a passphrase to unlock the secret key for user: "Alice (test key) <alice@wonderland.uk>" 1024-bit RSA key, ID B115BDB6, created 2002-05-01 Enter passphrase:

Для проверки подписи необходимы и подпись, и сам документ. Для проверки используется команда --verify.

blake% gpg --verify doc.sig doc gpg: Signature made Sat May 4 19:34:08 2002 MSD using RSA key ID B115BDB6 gpg: Good signature from "Alice (test key) <alice@wonderland.uk>"