У меня есть копия ключа gpg репозитория postgresql apt, и я хотел бы просмотреть подробную информацию о ключе gpg в том виде, в каком он содержится в файле. Возможно ли это без импорта в связку ключей?
При просмотре ключевых данных OpenPGP вы можете получить несколько уровней детализации: базовая сводка, машиночитаемый вывод этой сводки или подробный (и очень технический) список отдельных пакетов OpenPGP.
Для краткого обзора ключевого файла OpenPGP вы можете просто передать имя файла в качестве параметра или канала в данных ключа через STDIN. Если команда не передана, GnuPG пытается угадать, что вы хотите сделать - и для ключевых данных это выводит на печать сводку по ключу:
$ gpg a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa8192 2012-12-25 [SC]
0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
uid Jens Erat (born 1988-01-19 in Stuttgart, Germany)
uid Jens Erat <jens.erat@fsfe.org>
uid Jens Erat <jens.erat@uni-konstanz.de>
uid Jens Erat <jabber@jenserat.de>
uid Jens Erat <email@jenserat.de>
uid [jpeg image of size 12899]
sub rsa4096 2012-12-26 [E] [revoked: 2014-03-26]
sub rsa4096 2012-12-26 [S] [revoked: 2014-03-26]
sub rsa2048 2013-01-23 [S] [expires: 2023-01-21]
sub rsa2048 2013-01-23 [E] [expires: 2023-01-21]
sub rsa4096 2014-03-26 [S] [expires: 2020-09-03]
sub rsa4096 2014-03-26 [E] [expires: 2020-09-03]
sub rsa4096 2014-11-22 [A] [revoked: 2016-03-01]
sub rsa4096 2016-02-24 [A] [expires: 2020-02-23]
При настройке --keyid-format 0xlong
длинные идентификаторы ключей печатаются вместо небезопасных коротких идентификаторов ключей :
$ gpg a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa8192/0x4E1F799AA4FF2279 2012-12-25 [SC]
0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
uid Jens Erat (born 1988-01-19 in Stuttgart, Germany)
uid Jens Erat <jens.erat@fsfe.org>
uid Jens Erat <jens.erat@uni-konstanz.de>
uid Jens Erat <jabber@jenserat.de>
uid Jens Erat <email@jenserat.de>
uid [jpeg image of size 12899]
sub rsa4096/0x0F3ED8E6759A536E 2012-12-26 [E] [revoked: 2014-03-26]
sub rsa4096/0x2D6761A7CC85941A 2012-12-26 [S] [revoked: 2014-03-26]
sub rsa2048/0x9FF7E53ACB4BD3EE 2013-01-23 [S] [expires: 2023-01-21]
sub rsa2048/0x5C88F5D83E2554DF 2013-01-23 [E] [expires: 2023-01-21]
sub rsa4096/0x8E78E44DFB1B55E9 2014-03-26 [S] [expires: 2020-09-03]
sub rsa4096/0xCC73B287A4388025 2014-03-26 [E] [expires: 2020-09-03]
sub rsa4096/0x382D23D4C9773A5C 2014-11-22 [A] [revoked: 2016-03-01]
sub rsa4096/0xFF37A70EDCBB4926 2016-02-24 [A] [expires: 2020-02-23]
pub rsa1024/0x7F60B22EA4FF2279 2014-06-16 [SCEA] [revoked: 2016-08-16]
Предоставление -v
или -vv
даже добавление дополнительной информации. Однако в этом случае я предпочитаю печатать детали пакета (см. Ниже).
GnuPG также имеет выходной формат, разделенный двоеточиями, который легко анализируется и имеет стабильный формат. Формат документирован в GnuPG doc/DETAILS
файле . Вариант получения этого формата есть --with-colons
.
$ gpg --with-colons a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub:-:8192:1:4E1F799AA4FF2279:1356475387:::-:
uid:::::::::Jens Erat (born 1988-01-19 in Stuttgart, Germany):
uid:::::::::Jens Erat <jens.erat@fsfe.org>:
uid:::::::::Jens Erat <jens.erat@uni-konstanz.de>:
uid:::::::::Jens Erat <jabber@jenserat.de>:
uid:::::::::Jens Erat <email@jenserat.de>:
uat:::::::::1 12921:
sub:-:4096:1:0F3ED8E6759A536E:1356517233:1482747633:::
sub:-:4096:1:2D6761A7CC85941A:1356517456:1482747856:::
sub:-:2048:1:9FF7E53ACB4BD3EE:1358985314:1674345314:::
sub:-:2048:1:5C88F5D83E2554DF:1358985467:1674345467:::
sub:-:4096:1:8E78E44DFB1B55E9:1395870592:1599164118:::
sub:-:4096:1:CC73B287A4388025:1395870720:1599164118:::
sub:-:4096:1:382D23D4C9773A5C:1416680427:1479752427:::
sub:-:4096:1:FF37A70EDCBB4926:1456322829:1582466829:::
Начиная с GnuPG 2.1.23, gpg: WARNING: no command supplied. Trying to guess what you mean ...
предупреждение можно опустить, используя --import-options show-only
параметр вместе с --import
командой (это --with-colons
, конечно, работает и без ):
$ gpg --with-colons --import-options show-only --import a4ff2279
[snip]
Для более старых версий: предупреждающее сообщение печатается на STDERR, поэтому вы можете просто прочитать STDIN, чтобы отделить ключевую информацию от предупреждения.
Не устанавливая дополнительных пакетов, вы можете использовать его gpg --list-packets [file]
для просмотра информации о пакетах OpenPGP, содержащихся в файле.
$ gpg --list-packets a4ff2279.asc
:public key packet:
version 4, algo 1, created 1356475387, expires 0
pkey[0]: [8192 bits]
pkey[1]: [17 bits]
keyid: 4E1F799AA4FF2279
:user ID packet: "Jens Erat (born 1988-01-19 in Stuttgart, Germany)"
:signature packet: algo 1, keyid 4E1F799AA4FF2279
version 4, created 1356516623, md5len 0, sigclass 0x13
digest algo 2, begin of digest 18 46
hashed subpkt 27 len 1 (key flags: 03)
[snip]
pgpdump [file]
Инструмент работает аналогично gpg --list-packets
и обеспечивает аналогичный вывод, но решает все эти идентификаторы алгоритмов читаемых представлений. Он доступен, вероятно, для всех соответствующих дистрибутивов (в производных от Debian пакет называется так же, pgpdump
как и сам инструмент).
$ pgpdump a4ff2279.asc
Old: Public Key Packet(tag 6)(1037 bytes)
Ver 4 - new
Public key creation time - Tue Dec 25 23:43:07 CET 2012
Pub alg - RSA Encrypt or Sign(pub 1)
RSA n(8192 bits) - ...
RSA e(17 bits) - ...
Old: User ID Packet(tag 13)(49 bytes)
User ID - Jens Erat (born 1988-01-19 in Stuttgart, Germany)
Old: Signature Packet(tag 2)(1083 bytes)
Ver 4 - new
Sig type - Positive certification of a User ID and Public Key packet(0x13).
Pub alg - RSA Encrypt or Sign(pub 1)
Hash alg - SHA1(hash 2)
Hashed Sub: key flags(sub 27)(1 bytes)
[snip]
--list-packets
?--list-packets
.WARNING: no command supplied
stderr? (Это мешаетgpg
правильному использованию в скриптах. Когда дело доходит до шифрования, единственный безопасный способ - рассматривать любой вывод в stderr как фатальную ошибку. Только так вы будете готовы к обнаружению новых важных слабых мест, которые выводятся только на stderr).--list-keys
что-то вродеgpg --no-default-keyring --keyring=/tmp/<keyfile> --list-keys
. Или просто отбросьте предупреждающее сообщение, есть множество опций для фильтрации stderr в (ba) sh скриптах .Кажется, я могу просто:
Какие выходы выглядят так:
Операция не указала, в частности, какая ключевая информация имеет отношение к делу. Это все, что меня волнует.
источник
Чтобы проверить и перечислить отпечаток ключа (без его предварительного импорта в связку ключей), введите
Изменить: в Ubuntu 18.04 (gpg 2.2.4) отпечаток пальца не отображается с помощью указанной выше команды.
--with-subkey-fingerprint
Вместо этого используйте опциюисточник
gpg --with-fingerprint
подавляет печать отпечатков пальцев на моей стороне. Ubuntu 18.04gpg (GnuPG) 2.1.18
--with-subkey-fingerprint
информацией, которая должна работать в Ubuntu 18.04Опция
--list-packets
анализирует данные pgp из файла и выводит его структуру - правда, очень техническим способом. При синтаксическом анализе открытого ключа вы можете легко извлечь идентификаторы пользователей и идентификаторы ключей подписей.Будьте осторожны, эта команда только анализирует формат данных, она не проверяет подписи и тому подобное.
источник
Когда я наткнулся на этот ответ, я искал способ получить вывод, который легко проанализировать. Для меня вариант
--with-colons
сработал:Документацию можно найти здесь .
источник
Вы также можете использовать
--keyid-format
переключатель для отображения короткого или длинного идентификатора ключа:который выводится следующим образом (пример из ключа репозитория PostgreSQL CentOS):
источник
pgpdump
( https://www.lirnberger.com/tools/pgpdump/ ) - это инструмент, который можно использовать для проверки блоков pgp.Однако это неудобно и довольно технически,
к сожалению, он не читает stdin: /
источник
pgpdump
чтенияstdin
. Например,curl -s https://www.theguardian.com/pgp/PublicKeys/Guardian%20Application-Security.pub.txt | pgpdump
отлично работает.Чтобы получить идентификаторы ключей (8 байтов, 16 шестнадцатеричных цифр), это команда, которая работала для меня в GPG 1.4.16, 2.1.18 и 2.2.19:
Чтобы получить дополнительную информацию (помимо идентификатора ключа):
Чтобы получить еще больше информации:
Команда
также работает во всех трех версиях, но в GPG 1.4.16 он печатает только короткий (4 байта, 8 шестнадцатеричных цифр) идентификатор ключа, поэтому идентификация ключей менее безопасна.
Некоторые команды в других ответах (например
gpg --show-keys
,gpg --with-fingerprint
,gpg --import --import-options show-only
) не работают в некоторых версиях 3 GPG выше, таким образом , они не являются переносными при ориентации несколько версий GPG.источник