Что определяет алгоритм хеширования clearsign, используемый GnuPG?
При использовании GnuPG для очистки подписи текста в подписанном сообщении есть часть хеша. Возьмите пример:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
abc
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEZZvqE5j3koIxs9Xim0+E4a5Vo2cFAlkRdvQACgkQm0+E4a5V
o2ew2QgAzHuvZ7Hlb6+3qRLjc9Yhdi+6tBmNWXbWpKoAQxpzx6jKQp/FSpQeGWuj
RxcYnqU3pk4ycMLtaCFcfnHEW5N0B95eXGcurgMGz7A6xhy0hy25x8WBdeKVAQ+2
PLA2ytJLUn2L1S3ueqJWcdVUBRaiczOOsYvvO
...
...
-----END PGP SIGNATURE-----
Но алгоритм хеширования различен для разных ключей (или серверов), иногда SHA1, иногда SHA256, SHA512.
От чего зависит этот ключ или клиент GnuPG? Я не могу найти информацию об этом, когда вы используете gpg
создавать новые ключи, нет возможности указать алгоритм хеширования.
Обновление: чтобы уточнить мой вопрос, я добавил дополнительную информацию ниже. команда, использованная для генерации выходных данных выше, выглядит так:
gpg --clearsign
(Версия gpg в моей системе - gpg2.)
Затем я набрал какой-то случайный текст, и результат выше. Я хочу знать, как генерировать вывод с конкретными значениями "Hash:"? скажи, SHA1?
3 ответа
Алгоритм хеширования выбирается реализацией OpenPGP, в вашем случае GnuPG. Какой из них выбран
- явно ограничено поддержкой алгоритмов GnuPG (
gpg --version
печатает список), - зависит от используемых вариантов соответствия и, наконец,
- зависит от ваших личных предпочтений.
Для шифрования сообщений дополнительно учитываются предпочтения получателя, хранящиеся в открытом ключе.
Я хочу знать, как генерировать вывод с конкретными значениями "Hash:"? скажи, SHA1?
Чтобы ответить на ваш вопрос, используйте --digest-algo SHA1
вариант.
В качестве примера приведем отдельную подпись с использованием SHA-256. Я не пользуюсь --clearsign
так что я не собираюсь пытаться сделать это вместе
gpg -a -u 1F8E37BD --digest-algo SHA256 --output test.txt.sig --detach-sig test.txt
-a
производит вывод ASCII брони. -u
выбирает ключ подписи среди разных ключей. --digest-algo
выбирает хеш --output
имя выходного файла Входное имя файла должно быть последним параметром.
Список хэшей и их значения доступны в RFC 4880, раздел 9.4. SHA-1 равен 2, а SHA-256 равен 8.
Вы можете проверить подпись с:
$ cat test.txt.sig | gpg --list-packets | grep "digest algo"
digest algo 8, begin of digest 05 94
В этом случае должно происходить то, что вы генерируете хеш для сообщения и используете ключ для его шифрования. Другая сторона использует противоположный ключ для дешифрования хеша, строит хеш сообщения и сравнивает его с хешем, который вы прикрепили.
Для контрагента важно знать, какой тип хеша вы использовали, но нет прямой связи между ключами и хешем.