GnuPG- und PGP-Clients verschlüsseln im Allgemeinen die tatsächlichen Daten normalerweise mit einem symmetrischen Schlüssel, der als "Sitzungsschlüssel" bezeichnet wird. Der Sitzungsschlüssel wird dann mit jedem "Empfängerschlüssel" verschlüsselt (dh denjenigen, die Sie mit -r / - Empfänger angeben). Dies wird manchmal als Hybrid-Chiffre bezeichnet . Derzeit glaube ich, dass GnuPG standardmäßig 256-Bit-Sitzungsschlüssel und AES verwendet, um die Klartextdaten mit diesem AES-256-Sitzungsschlüssel zu verschlüsseln, und Ihre Empfängerschlüssel sind Ihre RSA / DSA / ECDSA / etc. Assymetrischer Schlüssel in diesem Fall.
Ein Grund dafür ist, dass symmetrische kryptografische Algorithmen wie AES im Allgemeinen viel schneller sind als asymmetrische wie RSA. GnuPG muss daher nur ~ 256 Bit (den Sitzungsschlüssel) mit RSA verschlüsseln und kann AES verwenden, um die Daten (so groß wie Sie möchten!) Mit diesem Sitzungsschlüssel zu verschlüsseln. Intel-Maschinen haben sogar eine eingebaute Anweisung, AES-NI , um einige Schritte des Algorithmus in der Hardware auszuführen, wodurch GnuPG beim Ver- und Entschlüsseln von Daten besonders schnell funktioniert.
Ein weiterer Grund dafür ist, dass PGP-verschlüsselte Dokumente an mehrere Parteien verschlüsselt werden können, ohne dass die Größe des Dokuments verdoppelt werden muss. Beachten Sie, dass, wenn Sie mehrere Empfänger für ein verschlüsseltes Dokument angeben (zgpg -ea -r Alice -r Bob -o ciphertext.asc
), das verschlüsselte Dokument, das gespeichert wird (ciphertext.asc), nicht doppelt so groß ist, als hätten Sie es gerade mit Alice verschlüsselt.
Siehe auch den --show-session-key
Parameter in der gpg-Manpage , um nur den Sitzungsschlüssel entschlüsseln zu können, z. B. um es einem Dritten zu ermöglichen, ein für Sie verschlüsseltes Dokument zu entschlüsseln, ohne Ihren privaten Schlüssel oder die Klartextdaten an ihn übertragen zu müssen.