Цифровая подпись удостоверяет создателя и дату создания документа. Если документ будет каким-либо образом изменен, то проверка цифровой подписи будет неудачной. Цифровая подпись может использоваться в тех же целях, что и обычная подпись. Исходные тексты 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>"
Обычно цифровые подписи применяются при подписи сообщений 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>"