Verifique se um arquivo criptografado por GPG está assinado por usuários específicos

5

Eu tenho um arquivo criptografado e assinado pelo GPG.

Na página man do gpg , para a opção --decrypt , diz:

If the decrypted file is signed, the signature is also verified.

Gostaria de fazer mais do que apenas verificar se uma assinatura é válida "se o arquivo for assinado" - Gostaria de:

  • Verifique se o arquivo está assinado
  • Verifique se a assinatura é de um determinado usuário ou subconjunto de usuários no meu chaveiro

Qual comando gpg pode ser usado para fazer isso?

    
por Craig McQueen 15.05.2015 / 03:28

2 respostas

5

A opção --decrypt já faz a maior parte disso.

$ gpg --decrypt < test.gpg
gpg: encrypted with 4096-bit RSA key, ID CE7B5510340F19EF, created 2009-10-31
      "grawity <[email protected]>"
The WELL (or Whole Earth 'Lectronic Link) is an example of the latest thing in frontier
villages, the computer bulletin board. In this kind of small town, Main Street is a
central minicomputer to which (in the case of the WELL) as many as 64 microcomputers
may be connected at one time by phone lines and little blinking boxes called modems.
gpg: Signature made 2015-05-15T07:52:55 EEST
gpg:                using RSA key D24F6CB2C1B52632
gpg: Good signature from "grawity <[email protected]>" [ultimate]
gpg:                 aka "grawity <[email protected]>" [ultimate]

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:] PLAINTEXT 62 1431665575 
[GNUPG:] NEWSIG
[GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 2015-05-15 1431665575
[GNUPG:] GOODSIG D24F6CB2C1B52632 grawity <[email protected]>
[GNUPG:] NOTATION_NAME [email protected]
[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:] GOODMDC
[GNUPG:] END_DECRYPTION

Tanto GOODSIG como VALIDSIG aqui significam que a assinatura foi verificada e TRUST_* corresponde aos níveis de certificação dessa chave. Por exemplo, as chaves que você assinou (ou assinou) terão TRUST_FULL.

Você pode agrupar isso em um script que verificaria a impressão digital em VALIDSIG em relação a uma lista de desbloqueio de chaves ou apenas contaria com o modelo de confiança principal.

Note que você não pode verificar se um arquivo está assinado sem descriptografá-lo primeiro, já que o PGP usa o sinal antes da criptografia.

    
por 15.05.2015 / 06:57
0
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]
    
por 21.08.2017 / 20:02