I blocchi chiave privati ​​PGP "contengono" anche la chiave pubblica?


11

Ho notato che importando la mia chiave privata PGP con armatura ASCII in un portachiavi GnuPG altrimenti vuoto (eliminando ~/.gnupg in anticipo), il portachiavi contiene sia le chiavi pubbliche che quelle private. Inoltre, il blocco di chiave privata blindato ASCII è circa il doppio della dimensione della mia controparte a chiave pubblica, il che mi porta a credere che il blocco di chiave privata contenga sia le chiavi private che quelle pubbliche, mentre il blocco di chiave pubblica contiene solo quest'ultimo.

Da quando ho creato la mia chiave, fino ad ora, ho eseguito il backup delle mie chiavi con un file contenente il mio blocco di chiave privata esportato e un altro con il mio blocco di chiave pubblica esportato. Il mio blocco di chiave pubblica è di backup ridondante e sono quindi al sicuro mantenendo solo il file della chiave privata?

Io uso questo comando per creare il file della chiave privata:

gpg --export-secret-keys -a > private

e questo comando per creare il file della chiave pubblica:

gpg --export -a > public

1
Affinché qualcuno risponda alla tua domanda, dovrai aggiungere i comandi che usi per esportare le tue chiavi. La risposta è probabilmente in questo. Ma cosa guadagneresti non esportando la chiave pubblica? Direi di lasciarlo nella routine di backup, non costa nulla e per tutti gli scopi in cui è necessaria solo la chiave pubblica che hai già disponibile.
Bram

Grazie Bram; Ho modificato la domanda per maggiore chiarezza. E sì, salvare ~ 3 KB non ha alcun beneficio reale, sono semplicemente curioso.
Delan Azabani

Risposte:


12

Sì, i pacchetti "chiave segreta" e "sottochiave" di OpenPGP contengono sia parametri pubblici che privati. Puoi verificarlo usando pgpdump per esaminare la chiave esportata:

$ gpg --export-secret-key grawity | pgpdump
Old: Secret Key Packet(tag 5)(1854 bytes)
    Ver 4 - new
    Public key creation time - Sat Oct 31 14:54:03 EET 2009
    Pub alg - RSA Encrypt or Sign(pub 1)
     RSA n (4096 bit) - ...
    RSA e (17 bit) - ...  Sym alg - CAST5 (sym 3)
    String-to-key iterato e salato (s2k 3):
        Hash alg - SHA1 (hash 2)
        Sale - 12 24 0f e1 5b 7e e2 46
        Conteggio - 65536 (conteggio codificato 96)
    IV - 91 a3 44 71 47 87 a4 ba  RSA crittografato d
    RSA crittografato p
    RSA crittografato q
    RSA crittografato  Hash crittografato SHA1 

Questo è vero per la maggior parte dei sistemi di chiavi asimmetriche, non solo per OpenPGP.


Non penso che sia vero per i blocchi RSA PUBLIC KEY e RSA SECRET KEY codificati PEM.
vy32

2
@ vy32: Quelle non sono chiavi OpenPGP quindi è irrilevante. Ma è è ancora vero anche per quelli. (Nota come openssl genrsa emette solo il blocco "privato", quindi il blocco pubblico può essere derivato da esso.) Puoi esaminarli da soli: openssl genrsa 512 | openssl asn1parse -i. O controllare RFC 3447 Appendice A che mostra chiaramente il modulo & amp; publicExponent nella struttura RSAPrivateKey.
grawity
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.