Enthalten private PGP-Schlüsselblöcke auch den öffentlichen Schlüssel?

13

Ich habe festgestellt, dass beim Importieren meines privaten ASCII-gepanzerten PGP-Schlüssels in einen ansonsten leeren GnuPG-Schlüsselring (durch vorheriges Löschen ~/.gnupg) der Schlüsselring sowohl den öffentlichen als auch den privaten Schlüssel enthält. Außerdem ist der mit ASCII gepanzerte private Schlüsselblock etwa doppelt so groß wie mein Gegenstück mit öffentlichem Schlüssel, was mich zu der Annahme führt, dass der private Schlüsselblock sowohl den privaten als auch den öffentlichen Schlüssel enthält, während der öffentliche Schlüsselblock nur den letzteren enthält.

Seit ich meinen Schlüssel erstellt habe, habe ich meine Schlüssel mit einer Datei gesichert, die meinen exportierten privaten Schlüsselblock enthält, und einer anderen mit meinem exportierten öffentlichen Schlüsselblock. Ist die Sicherung meines öffentlichen Schlüsselblocks redundant und kann ich daher nur die private Schlüsseldatei aufbewahren?

Ich benutze diesen Befehl, um die private Schlüsseldatei zu erstellen:

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

und dieser Befehl zum Erstellen der öffentlichen Schlüsseldatei:

gpg --export -a > public
Delan Azabani
quelle
1
Damit jemand Ihre Frage beantworten kann, müssen Sie die Befehle hinzufügen, mit denen Sie Ihre Schlüssel exportieren. Die Antwort liegt wahrscheinlich darin. Aber was würden Sie gewinnen, wenn Sie den öffentlichen Schlüssel nicht exportieren würden? Ich würde sagen, lassen Sie es in Ihrer Sicherungsroutine, es kostet nichts und für jeden Zweck, bei dem Sie nur den öffentlichen Schlüssel benötigen, haben Sie ihn bereits zur Verfügung.
Bram
Danke Bram; Ich habe die Frage für zusätzliche Klarheit bearbeitet. Und ja, das Speichern von ~ 3 KB hat keinen wirklichen Vorteil, ich bin nur neugierig.
Delan Azabani

Antworten:

15

Ja, die OpenPGP-Pakete "Secret Key" und "Secret Subkey" enthalten sowohl öffentliche als auch private Parameter. Sie können dies überprüfen, indem Sie den exportierten Schlüssel mit pgpdump untersuchen:

$ gpg --export-secret-key grawity | pgpdump
Alt: Geheimes Schlüsselpaket (Tag 5) (1854 Bytes)
    Ver 4 - neu
    Erstellungszeit für öffentliche Schlüssel - Sa 31.10. 14:54:03 EET 2009
    Pub alg - RSA verschlüsseln oder signieren (Pub 1)
    RSA n (4096 Bit) - ...
    RSA e (17 Bit) - ...
    Sym alg - CAST5 (sym 3)
    Iterierter und gesalzener String-to-Key (s2k 3):
        Hash alg - SHA1 (Hash 2)
        Salz - 12 24 0f e1 5b 7e e2 46 
        Anzahl - 65536 (codierte Anzahl 96)
    IV - 91 a3 44 71 47 87 a4 ba 
    Verschlüsselter RSA d
    Verschlüsselter RSA p
    Verschlüsselter RSA q
    Verschlüsselter RSA u
    Verschlüsselter SHA1-Hash

Dies gilt für die meisten asymmetrischen Schlüsselsysteme, nicht nur für OpenPGP.

user1686
quelle
Ich glaube nicht, dass dies für einen PEM-codierten RSA PUBLIC KEY- und RSA SECRET KEY-Block gilt.
vy32
2
@ vy32: Dies sind keine OpenPGP-Schlüssel, daher ist dies irrelevant. Aber es gilt auch für diese. (Beachten Sie, wie man openssl genrsanur noch den „privaten“ Block, so dass der öffentliche Block kann daraus abgeleitet werden.) Sie können sie selbst untersuchen: openssl genrsa 512 | openssl asn1parse -i. Oder überprüfen Sie RFC 3447 Anhang A, in dem Modul & publicExponent in der RSAPrivateKey-Struktur deutlich angezeigt wird.
user1686