Como obtenho o campo “nome de usuário” de um bloco de chave pública com GPG?

Como obtenho o campo “nome de usuário” de um bloco de chave pública com GPG?

O fato de eu ter que perguntar sobre isso depois de passar tantas horas nisso já me diz que pelo menos uma dessas duas afirmações é verdadeira:

  1. Estou fazendo algo terrivelmente errado.
  2. PGP/GPG é uma bagunça absoluta que propositalmente torna o trabalho o mais difícil e confuso possível.

Basicamente, meu sistema importa automaticamente quaisquer blocos de chave pública PGP enviados para mim, com a finalidade de poder criptografar mensagens automaticamente quando elas forem enviadas (enviadas por mim como resposta).

Ao criptografar uma mensagem de texto simples com PGP/GPG, você informa ao programa qual "receptor" usar. Na verdade, esse termo confuso se refere ao campo "nome completo + endereço de e-mail" (que por algum motivo é chamado de "nome de usuário") em uma chave pública armazenada no GPG.

Bem, quando eu "importo" um bloco de chave pública PGP (que funciona), não tenho ideia do que é o campo "nome de usuário" e, se não souber disso, não posso usá-lo, pois o recurso de criptografia quer que eu me refira à "chave pública armazenada" correta.

Mas como faço para extrair o campo “nome de usuário” da chave pública? Você pensaria que isso retornaria quando você executasse o comando --import, mas até onde eu sei, isso não acontece. E estou pesquisando horas e horas no manual sem encontrar nada relacionado a isso.

Para constar, encontrei este tópico StackOverflow:https://security.stackexchange.com/questions/50965/extracting-the-gpg-userid-from-the-public-key-file ... mas não faz absolutamente nenhum sentido para mim. A "solução" já conhece e especifica algum tipo de id, o que parece anular todo o ponto, já que é essencialmente isso que estamos tentando encontrar (exceto que é o campo "nome de usuário").

Eu já vi todos os tipos de "comandos PGP/GPG comuns/úteis" e nenhum deles mencionou isso. Huh? Esta é a tarefa mais básica e crucial... Estou muito confuso. Por que o comando --import não me fornece nenhum tipo de ID para usar? É verdade, mas de uma forma complicada?

Responder1

Por que o comando --import não me fornece nenhum tipo de ID para usar? É verdade, mas de uma forma complicada?

Sim, é principalmente a sua expectativa de um "ID utilizável" que está errado.

Ao criptografar uma mensagem de texto simples com PGP/GPG, você informa ao programa qual "receptor" usar. Na verdade, esse termo confuso se refere ao campo "nome completo + endereço de e-mail" (que por algum motivo é chamado de "nome de usuário") em uma chave pública armazenada no GPG.

O campo é denominado "ID do usuário". Não é chamado de "nome de usuário".

Muitos programas (principalmente gpge todas as ferramentas que os envolvem)vaitambém aceita destinatários apenas pelo endereço de e-mail ou qualquer outra correspondência de substring do ID do usuário, ou a impressão digital completa da chave pública de 160 bits ou o "ID da chave" (impressão digital truncada de 32/64 bits). Por exemplo:

gpg --recipient [email protected] --encrypt
gpg --recipient EA708A76F932CCEAF60D364375F1129BE6E591E4 --encrypt
gpg --recipient "EA70 8A76 F932 CCEA F60D 3643 75F1 129B E6E5 91E4" --encrypt
gpg --recipient fred --encrypt
gpg --recipient 0x75F1129BE6E591E4 --encrypt

(Você pode testar uma correspondência passando-a para gpg --list-keys, por exemplo gpg -k fred.)

Destes, especificar o destinatário por impressão digital é a opção mais segura. O campo "ID do usuário" (completo ou parcial) é apenas um identificador seguro se você usar o Web of Trust ou tiver alguma outra maneira de distinguir uma chave "Fred Foobar" legítima de uma chave "Fred Foobar" falsa.

Bem, quando eu "importo" um bloco de chave pública PGP (que funciona), não tenho ideia do que é o campo "nome de usuário" e, se não souber disso, não posso usá-lo, pois o recurso de criptografia quer que eu me refira à "chave pública armazenada" correta.

O GnuPG sempre mostra este campo como parte da gpg --importsaída (junto com o "ID da chave" de 64 bits). Por exemplo:

$ gpg --status-fd=2 --import < /tmp/test.key
gpg: chave75F1129BE6E591E4: chave pública "Usuário de teste <[e-mail protegido]>"importado
gpg: Número total processado: 1
gpg: importado: 1

Para usar isso em uma ferramenta automatizada, use --status-fdo que fornece a impressão digital completa de 160 bits. Por exemplo:

$ gpg --status-fd=2 --import < /tmp/test.key
[GNUPG:]IMPORT_OK 0 EA708A76F932CCEAF60D364375F1129BE6E591E4
[GNUPG:] KEY_CONSIDERED EA708A76F932CCEAF60D364375F1129BE6E591E4 0
[GNUPG:] IMPORT_RES 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0

Se você estiver usando algum outro software PGP (ou seja, não o GnuPG) e ele não mostrar nenhuma informação sobre quais chaves acabou de importar, então é um problema de UI nesse outro software PGP.

informação relacionada