Como gerar uma mensagem assinada do OpenPGP com o GPG?

2

Em RFC 4880 , há seção 11.3 que especifica os diferentes formatos que um bloco OpenPGP Message pode ter:

11.3.  OpenPGP Messages

   An OpenPGP message is a packet or sequence of packets that
   corresponds to the following grammatical rules (comma represents
   sequential composition, and vertical bar separates alternatives):

   OpenPGP Message :- Encrypted Message | Signed Message |
                      Compressed Message | Literal Message.

   Compressed Message :- Compressed Data Packet.

   Literal Message :- Literal Data Packet.

   ESK :- Public-Key Encrypted Session Key Packet |
          Symmetric-Key Encrypted Session Key Packet.

   ESK Sequence :- ESK | ESK Sequence, ESK.

   Encrypted Data :- Symmetrically Encrypted Data Packet |
         Symmetrically Encrypted Integrity Protected Data Packet

   Encrypted Message :- Encrypted Data | ESK Sequence, Encrypted Data.

   One-Pass Signed Message :- One-Pass Signature Packet,
               OpenPGP Message, Corresponding Signature Packet.

   Signed Message :- Signature Packet, OpenPGP Message |
               One-Pass Signed Message.

   In addition, decrypting a Symmetrically Encrypted Data packet or a
   Symmetrically Encrypted Integrity Protected Data packet as well as
   decompressing a Compressed Data packet must yield a valid OpenPGP
   Message.

Existe alguma maneira, através de argumentos de linha de comando, para gerar um Signed Message usando GPG? Observe que um Signed Message é não do tipo mostrado em XKCD . Esse é um Cleartext Signature , descrito na seção 7 do RFC. Um Signed Message blindado terá o cabeçalho -----BEGIN PGP MESSAGE----- .

O mais próximo que posso chegar é usando gpg -s , que gera um pacote de dados compactados que encapsula um Pacote de Assinatura de Uma Passagem, Pacote de Dados Literal, Pacote de Assinatura. No entanto, não acredito que deva ser compactado, portanto, parece que o GPG está sendo compactado quando não deveria ou o GPG está transmitindo mensagens compactadas.

    
por calccrypto 10.08.2014 / 18:13

1 resposta

2

O GnuPG comprime (pelo menos texto simples) mensagens por padrão. Se você não quiser compactar mensagens, defina o nível de compactação como 0 usando a opção --compress-level 0 . De man gpg :

--compress-level n

[...] A value of 0 for n disables compression.

Usar -s junto com um nível de compactação de 0 exibirá a mensagem assinada não compactada, na verdade, uma mensagem assinada de uma única passagem.

A compactação de uma mensagem é um comportamento esperado. RFC 4880, capítulo 2.3 declara:

Compression

OpenPGP implementations SHOULD compress the message after applying the signature but before encryption. [...]

    
por 10.08.2014 / 19:22