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

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

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

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

alice$ gpg --output message.txt.sig --sign message.txt

You need a passphrase to unlock the secret key for
user: "Alice (test key) <alice@wonderland.uk>"
2048-bit RSA key, ID 8A9ED75D, created 2005-10-21

Enter passphrase: 

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

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

bob$ gpg --output message.txt --decrypt message.txt.sig
gpg: Signature made Wed Oct 26 02:21:56 2005 MSD using RSA key ID 8A9ED75D
gpg: Good signature from "Alice (test key) <alice@wonderland.uk>"

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

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

alice$ gpg --output message.asc --clearsign message.txt

You need a passphrase to unlock the secret key for
user: "Alice (test key) <alice@wonderland.uk>"
2048-bit RSA key, ID 8A9ED75D, created 2005-10-21

Enter passphrase:
alice$ cat message.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

GnuPG - инструмент для защиты коммуникаций. Эта глава коротко описывает
основы работы с GnuPG, включая создание пар ключей, обмен ключами и их
проверку, зашифровку и расшифровку документов, заверение документов
цифровой подписью.  Она не описывает в деталях принципы криптографии с
открытым ключом, шифрования и цифровых подписей. Эти вопросы
рассматриваются в главе 2. Здесь, также, не рассматриваются тонкости
использования GnuPG. Эти вопросы рассматриваются в главах 3 и 4.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)

iQEVAwUBQ16x2sJ/MmGKntddAQK83gf/UZ9fq2jX5kUh9xHpHl0kXSjGeHs4IBmj
YWbOVZu5ka71VFXCgNqifLfZirJHA1TWCxRHjxnGC/lD38EvFQyX+gaFaUNJ1wB4
BW53SplsNaMkOzK+J5hb+n28cIK9FEgg6K7VaR/AEl75N9BVF+wjLvPsccJtEfCh
8L3/C8Kmb9vy131VkGTxzq9HulYK2uQfwW+VjXzsRjXF4W7GoRrAG8gbqrfHfVPo
f2D8GE0y8EJXjOu0JO7bdaOnFS5mtvHjPaqFNHkCPOT5OnHENh6Zu+KXdebsBvmJ
fOIZvCS5tmM45eFKNwBTA3mo91Gf7xymAf4LeC2kFhEu/Z54hR6ejg==
=vEd7
-----END PGP SIGNATURE-----

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

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

alice$ gpg --output message.txt.sig --detach-sign message.txt

You need a passphrase to unlock the secret key for
user: "Alice (test key) <alice@wonderland.uk>"
2048-bit RSA key, ID 8A9ED75D, created 2005-10-21

Enter passphrase: 

В файл message.txt.sig при выполнении команды будет помещена только подпись для файла message.txt. Исходный файл при подписи не изменяется. Для проверки подписи необходимы и подпись, и сам документ. Для проверки используется команда --verify.

bob$ gpg --verify message.txt.sig message.txt
gpg: Signature made Wed Oct 26 02:33:43 2005 MSD using RSA key ID 8A9ED75D
gpg: Good signature from "Alice (test key) <alice@wonderland.uk>"

Отделённые подписи часто применяются для подписи дистрибутивов программ. Например, таким образом подписываются дистрибутивы GnuPG.