Tenho um arquivo criptografado e assinado pelo GPG.
Nopágina de manual para gpg, para a --decrypt
opção, diz:
Se o arquivo descriptografado estiver assinado, a assinatura também será verificada.
Gostaria de fazer mais do que apenas verificar se uma assinatura é válida "se o arquivo estiver assinado" - gostaria de:
- Verifique se o arquivoéassinado
- Verifique se a assinatura é de um determinado usuário ou subconjunto de usuários em meu chaveiro
Qual comando gpg pode ser usado para fazer isso?
Responder1
A --decrypt
opção já faz a maior parte disso.
$gpg --decrypt <teste.gpg gpg: criptografado com chave RSA de 4096 bits, ID CE7B5510340F19EF, criado em 31/10/2009 "gravidade <[e-mail protegido]>" O WELL (ou Whole Earth 'Lectronic Link) é um exemplo da última novidade na fronteira aldeias, o quadro de avisos do computador. Neste tipo de cidade pequena, a Main Street é uma minicomputador central ao qual (no caso do WELL) até 64 microcomputadores podem ser conectados ao mesmo tempo por linhas telefônicas e pequenas caixas piscantes chamadas modems. gpg: Assinatura feita em 15/05/2015T07:52:55 EEST gpg: usando a chave RSA D24F6CB2C1B52632 gpg: Boa assinatura de "grawity <[e-mail protegido]>" [final] gpg: também conhecido como "grawidade <[e-mail protegido]>" [final]
Para informações legíveis por máquina, você pode usar--status-fd
.
[GNUPG:] ENC_TO CE7B5510340F19EF 1 0 [GNUPG:] BEGIN_DECRYPTION [GNUPG:] DECRYPTION_INFO 2 9 [GNUPG:] TEXTO SIMPLES 62 1431665575 [GNUPG:] NEWSIG [GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 15/05/2015 1431665575 [GNUPG:] GOODSIG D24F6CB2C1B52632 gravidade <[e-mail protegido]> [GNUPG:] NOTATION_NAME[e-mail protegido] [GNUPG:] NOTATION_DATA 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 [GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2015-05-15 1431665575 0 4 0 1 10 00 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 [GNUPG:] TRUST_ULTIMATE [GNUPG:] DECRYPTION_OKAY [GNUPG:] BOM MDC [GNUPG:] END_DECRYPTION
Ambos GOODSIG
e VALIDSIG
aqui significam que a assinatura foi verificada e TRUST_*
correspondem aos níveis de certificação dessa chave. Por exemplo, as chaves que você assinou (ou assinou) diretamente terão TRUST_FULL.
Você pode agrupar isso em um script que verificaria a impressão digital no VALIDSIG em relação a uma lista de permissões de chaves ou apenas confiar no modelo de confiança de chave.
Observe que vocênão podeverifique se um arquivo está assinado sem descriptografá-lo primeiro, pois o PGP usa assinar antes de criptografar.
Responder2
gpg --decrypt < data.pgp > /dev/null
Isso resultará na seguinte saída:
gpg: encrypted with 4096-bit RSA key, ID B91FFCCDDEE362261A, created 2015-05-21
"Shubham Chaudhary <[email protected]>"
gpg: Signature made Mon Aug 21 23:13:03 2017 IST
gpg: using RSA key 71B6BEEFEED2DCA
gpg: issuer "Shubham Chaudhary <[email protected]>"
gpg: Good signature from "Shubham Chaudhary <[email protected]>" [ultimate]