Ist es mit symmetrischer Verschlüsselung möglich, eine Datei mit zwei verschiedenen Schlüsseln zu verschlüsseln?

Ist es mit symmetrischer Verschlüsselung möglich, eine Datei mit zwei verschiedenen Schlüsseln zu verschlüsseln?

GPG/PGP und andere Public-Key-Verschlüsselungen ermöglichen die Verschlüsselung an mehrere Empfänger unter Verwendung ihrer öffentlichen Schlüssel.

Ist es möglich, dasselbe nur mit symmetrischer Verschlüsselung zu erreichen? Mit anderen Worten: Ist es möglich, eine Datei mit zwei verschiedenen Schlüsseln symmetrisch zu verschlüsseln?

Der Grund für meine Frage ist, dass bei asymmetrischer Verschlüsselung riesige Dateien entstehen. Wenn ich eine mit einem öffentlichen Schlüssel verschlüsselte Nachricht an ein Smartphone senden würde, wäre sie zu groß. Insbesondere, wenn sie an mehrere Empfänger verschlüsselt wäre. Ein einzelnes „Hallo“ könnte zwei Seiten Text umfassen. Andererseits ist die symmetrische Verschlüsselung sehr dicht.

Antwort1

Sicher. Verschlüsseln Sie die Datei einfach mit einem zufälligen Schlüssel und verschlüsseln Sie diesen zufälligen Schlüssel dann mit den beiden unterschiedlichen symmetrischen Schlüsseln.

Antwort2

Aktuelle PGP-Versionen und GnuPG (GPG) implementieren den OpenPGP-Standard. Im Folgenden werde ich nur noch den Begriff OpenPGP verwenden.

OpenPGP verwendet sowohl öffentliche als auch symmetrische Schlüsselverschlüsselung: Beim Verschlüsseln eines Dokuments wird ein zufälliger symmetrischer Schlüssel generiert und mit dem öffentlichen Schlüssel verschlüsselt. Der Empfänger verschlüsselt den symmetrischen Verschlüsselungsschlüssel (Blockchiffre) mit seinem privaten Schlüssel. Da nur der symmetrische Schlüssel mit dem öffentlichen Schlüssel verschlüsselt wird, bleibt der Overhead gering (das hat David Schwartz vorgeschlagen und wird bereits von OpenPGP implementiert).

Natürlich gibt es zwei Fälle, in denen dieser Overhead im Vergleich zu den verschlüsselten Daten sehr groß werden kann:

  • Eine sehr kleine Datenmenge; wenn dies ein Problem darstellt, müssen Sie eine Verschlüsselungsmethode mit vorab freigegebenen Schlüsseln (symmetrischen Schlüsseln) wählen.
  • Viele Empfänger; da die Blockchiffre für jeden von ihnen verschlüsselt werden muss. Wenn dies ein Problem darstellt, müssen Sie das Geheimnis (den privaten Schlüssel) an alle Empfänger weitergeben.

Sie werden nicht darum herumkommen, entweder symmetrische Verschlüsselung zu verwenden und das Geheimnis jedem einzelnen Empfänger zu übergeben (oder dasselbe mit dem privaten OpenPGP-Schlüssel zu tun). Wenn Sie möchten, dass jeder sein eigenes Geheimnis hat, kann niemand sonst seine Version der Daten entschlüsseln; Sie müssen also jedem eine andere Version dieser Daten senden.

Antwort3

Eigentlich wollte ich dasselbe Problem lösen. Das Problem mit GPG ist, dass man zu viel Ballast mit sich herumschleppen muss – Schlüsselspeicher usw. Manchmal möchte man einfach nur ein Schlüsselpaar erstellen, den öffentlichen Schlüssel auf dem Computer ablegen, der die Verschlüsselung durchführt, und damit weitermachen.

Ich habe ein Tool geschrieben, das genau das tut:https://github.com/galets/AsymmetricCrypt. Sie benötigen Mono, um es unter Linux auszuführen, aber ansonsten funktioniert es einwandfrei und erfordert nicht, dass Sie den verschlüsselten Schlüssel in einer separaten Datei speichern.

verwandte Informationen