Eu tenho uma cópia da chave gpg do repositório apt do postgresql e gostaria de ver os detalhes da chave gpg conforme ela aparece no arquivo. Isso é possível sem importá-lo para um conjunto de chaves?
Existem vários níveis de detalhes que você pode obter ao analisar os principais dados do OpenPGP: um resumo básico, uma saída legível por máquina deste resumo ou uma lista detalhada (e muito técnica) dos pacotes individuais do OpenPGP.
Para um breve pico em um arquivo de chave do OpenPGP, você pode simplesmente passar o nome do arquivo como parâmetro ou canalizar os dados da chave através do STDIN. Se nenhum comando for passado, o GnuPG tentará adivinhar o que você deseja fazer - e, para os dados principais, isso está imprimindo um resumo na chave:
$ 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 <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
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]
Por definição --keyid-format 0xlong
, os IDs de chave longa são impressos em vez dos IDs de chave curta e inseguros :
$ 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 <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
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]
Fornecendo -v
ou -vv
mesmo adicionando mais algumas informações. Porém, prefiro imprimir os detalhes do pacote neste caso (veja abaixo).
O GnuPG também possui um formato de saída separado por dois pontos, que é facilmente analisável e possui um formato estável. O formato está documentado no doc/DETAILS
arquivo GnuPG . A opção para receber este formato é --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 <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
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:::
Desde o GnuPG 2.1.23, o gpg: WARNING: no command supplied. Trying to guess what you mean ...
aviso pode ser omitido usando a --import-options show-only
opção junto com o --import
comando (isso também funciona sem --with-colons
, é claro):
$ gpg --with-colons --import-options show-only --import a4ff2279
[snip]
Para versões mais antigas: a mensagem de aviso é impressa no STDERR, para que você possa ler STDIN para separar as principais informações do aviso.
Sem instalar nenhum pacote adicional, você pode usar gpg --list-packets [file]
para visualizar informações sobre os pacotes OpenPGP contidos no arquivo.
$ 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]
A pgpdump [file]
ferramenta funciona de maneira semelhante gpg --list-packets
e fornece uma saída semelhante, mas resolve todos esses identificadores de algoritmo para representações legíveis. Está disponível para provavelmente todas as distribuições relevantes (nos derivativos Debian, o pacote é chamado pgpdump
como a própria ferramenta).
$ 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
para stderr? (Isso impede que osgpg
scripts sejam usados corretamente. Quando se trata de criptografia, a única maneira segura é tratar qualquer saída para stderr como erro fatal. Somente dessa maneira você estará preparado quando novas fraquezas importantes forem descobertas, que só serão impressas em stderr).--list-keys
, executar algo parecidogpg --no-default-keyring --keyring=/tmp/<keyfile> --list-keys
. Ou simplesmente descarte a mensagem de aviso, há várias opções para filtrar o stderr nos scripts (ba) sh .Parece que sou capaz de me dar bem com simplesmente:
Que saídas como esta:
A operação não especificou em particular quais informações importantes são relevantes. Esta saída é tudo que me interessa.
fonte
Para verificar e listar a impressão digital da chave (sem importá-la primeiro no chaveiro), digite
Edit: no Ubuntu 18.04 (gpg 2.2.4) a impressão digital não é exibida com o comando acima. Use a
--with-subkey-fingerprint
opçãofonte
gpg --with-fingerprint
suprime a impressão digital ao meu lado. Ubuntu 18.04gpg (GnuPG) 2.1.18
--with-subkey-fingerprint
informações que devem funcionar no Ubuntu 18.04 #A opção
--list-packets
analisa dados pgp de um arquivo e gera sua estrutura - de uma maneira muito técnica. Ao analisar uma chave pública, é possível extrair facilmente os IDs de usuário e os IDs de chave das assinaturas.Cuidado para que esse comando analise apenas o formato dos dados, não faz validação de assinaturas ou coisas semelhantes.
fonte
Quando me deparei com essa resposta, estava procurando uma maneira de obter uma saída fácil de analisar. Para mim, a opção
--with-colons
fez o truque:A documentação pode ser encontrada aqui .
fonte
Você também pode usar a
--keyid-format
opção para mostrar o ID da chave curta ou longa:que gera resultados como este (exemplo da chave de repo PostgreSQL CentOS):
fonte
pgpdump
( https://www.lirnberger.com/tools/pgpdump/ ) é uma ferramenta que você pode usar para inspecionar blocos pgp.Não é fácil de usar e bastante técnico, no entanto,
infelizmente não lê stdin: /
fonte
pgpdump
leiturasstdin
. Por exemplo,curl -s https://www.theguardian.com/pgp/PublicKeys/Guardian%20Application-Security.pub.txt | pgpdump
funciona bem.Para obter os IDs de chave (8 bytes, 16 dígitos hexadecimais), este é o comando que funcionou para mim no GPG 1.4.16, 2.1.18 e 2.2.19:
Para obter mais informações (além do ID da chave):
Para obter ainda mais informações:
O comando
também funciona nas 3 versões, mas no GPG 1.4.16 ele imprime apenas um ID de chave curto (4 bytes, 8 dígitos hexadecimais), portanto, é menos seguro identificar as chaves.
Alguns comandos em outras respostas (por exemplo
gpg --show-keys
,gpg --with-fingerprint
,gpg --import --import-options show-only
) não funcionam em algumas das 3 versões GPG acima, portanto, eles não são portáteis ao alvejar múltiplas versões de GPG.fonte