4

При использовании 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 ответа3

1

В этом случае должно происходить то, что вы генерируете хеш для сообщения и используете ключ для его шифрования. Другая сторона использует противоположный ключ для расшифровки хеша, строит хеш сообщения и сравнивает его с хешем, который вы прикрепили.

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

0

Я хочу знать, как генерировать вывод с конкретными значениями "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
0

Алгоритм хеширования выбирается реализацией OpenPGP, в вашем случае GnuPG. Какой из них выбран

Для шифрования сообщений дополнительно учитываются предпочтения получателя, хранящиеся в открытом ключе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .