Как создать подписанное сообщение OpenPGP с GPG?

2

В RFC 4880 , есть раздел 11.3 который определяет различные форматы, которые может иметь блок сообщения OpenPGP:

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.

Есть ли способ через аргументы командной строки для генерации Signed Message используя GPG? Обратите внимание, что Signed Message является не тип показан на XKCD , Это Cleartext Signature, описанный в раздел 7 RFC. Бронированный Signed Message будет иметь заголовок -----BEGIN PGP MESSAGE-----,

Самое близкое, что я могу получить, это с помощью gpg -s, который генерирует сжатый пакет данных, который инкапсулирует однопроходный пакет подписи, буквенный пакет данных, пакет подписи. Однако я не верю, что он должен быть сжат, поэтому кажется, что либо GPG сжимает, когда не следует, либо GPG выводит сжатые сообщения.

calccrypto
источник

Ответы:

2

GnuPG сжимает (по крайней мере, простой текст) сообщения по умолчанию. Если вы не хотите, чтобы он сжимал сообщения, установите уровень сжатия на 0, используя опцию --compress-level 0, От man gpg:

--compress-level n

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

С помощью -s вместе с уровнем сжатия 0 будет выводить несжатое подписанное сообщение, фактически однопроходное подписанное сообщение.

Сжатие сообщения - ожидаемое поведение. RFC 4880, глава 2.3 состояния:

компрессия

Реализации OpenPGP ДОЛЖНЫ сжать сообщение после применения   подпись, но до шифрования. [...]

Jens Erat
источник