Come vengono costruiti i messaggi PGP? [chiuso]

1

Recentemente ho scoperto che openPGP, il protocollo utilizzato da GnuPG, utilizza un crittosistema ibrido generando una chiave di sessione casuale, crittografando il messaggio utilizzando quella chiave con una crittografia simmetrica strong, prima di crittografare la chiave di sessione con i destinatari pubblici chiave.

Quando si visualizza un messaggio PGP effettivo, viene visualizzato ciò che appare in un grande blocco di caratteri base64 tra un'intestazione e un piè di pagina chiari. Tuttavia, se il testo cifrato per il messaggio e il testo cifrato per la chiave di sessione vengono inviati uno accanto all'altro, perché un messaggio PGP appare come un grande blocco di testo?

    
posta user4191887 07.11.2016 - 17:49
fonte

1 risposta

2

I messaggi PGP sono in un formato binario non elaborato che comprende più pacchetti, come specificato in RFC 4880 . Non c'è nulla di eccitante nella sintassi. Ad esempio, ogni pacchetto in un messaggio è costituito da un'intestazione e un corpo con il primo byte dell'intestazione come tag intestazione , ecc. È possibile sezionare un messaggio PGP proprio come faresti con un pacchetto TCP .

Ciò che hai identificato come "un grosso blocco di base64" è chiamato armatura ASCII . Come il nome suggerisce e @SteffenUllrich ha sottolineato, protegge il messaggio dal danneggiamento durante il trasferimento, rappresentandolo con caratteri ASCII stampabili. Tutto ciò che fa è base64 - avvolgere il formato OpenPGP.

Se si desidera analizzare un messaggio corazzato ASCII, si dovrebbe prima decodificare in base64 e poi analizzare il flusso binario contenuto in base alle specifiche della sintassi.

Dalla sezione 2.4 della RFC:

2.4.  Conversion to Radix-64

   OpenPGP's underlying native representation for encrypted messages,
   signature certificates, and keys is a stream of arbitrary octets.
   Some systems only permit the use of blocks consisting of seven-bit,
   printable text.  For transporting OpenPGP's native raw binary octets
   through channels that are not safe to raw binary data, a printable
   encoding of these binary octets is needed.  OpenPGP provides the
   service of converting the raw 8-bit binary octet stream to a stream
   of printable ASCII characters, called Radix-64 encoding or ASCII
   Armor.
    
risposta data 07.11.2016 - 18:52
fonte

Leggi altre domande sui tag