it-swarm.com.de

Verschlüsselung / Entschlüsselung mit mehreren Schlüsseln

Können Daten so verschlüsselt werden, dass sie mit mehreren verschiedenen Schlüsseln entschlüsselt werden können?

Beispiel:

Ich habe Daten mit key1 verschlüsselt, möchte sie jedoch mit den Schlüsseln 2, 3 und 4 entschlüsseln können.

Ist das möglich?

98
Glen Solsberry

GnuPG verschlüsselt standardmäßig mehrere Schlüssel.

Der folgende Befehl verschlüsselt doc.txt Verwenden des öffentlichen Schlüssels für Alice und des öffentlichen Schlüssels für Bob. Alice kann mit ihrem privaten Schlüssel entschlüsseln. Bob kann auch mit seinem privaten Schlüssel entschlüsseln.

gpg --encrypt --recipient [email protected] \
    --recipient [email protected] doc.txt

Diese Funktion wird im Benutzerhandbuch mit dem Titel " Dokumente verschlüsseln und entschlüsseln " beschrieben.

148
David Segonds

Ja es ist möglich

Ja, Verschlüsselung für mehrere Empfänger ist möglich. Es erscheint auch logisch, wenn Sie der Meinung sind, dass Sie lesen möchten, was Sie an jemanden gesendet haben, und dies tun möchten Sie müssen in der Empfängerliste aufgeführt sein.

Befehlszeile

So geht's über die gpg-Befehlszeile (wie in Antwort von David Segonds beschrieben):

gpg --encrypt \
  --recipient [email protected] \
  --recipient [email protected] \
clear-message.txt

GUI-Client

Ihre GUI muss eine Möglichkeit zum Verschlüsseln für mehrere Personen bieten

Mechanismus

Es gibt eine Frage zu Informationssicherheit, GPG-Dateigröße bei mehreren Empfängern?, die den Verschlüsselungsmechanismus erklärt :

GPG verschlüsselt die Datei einmal mit einem symmetrischen Schlüssel und platziert dann einen Header, der das Zielschlüsselpaar und eine verschlüsselte Version des symmetrischen Schlüssels identifiziert.

[...] Wenn dieser Header für mehrere Empfänger verschlüsselt ist, wird er mehrmals platziert, um für jeden Empfänger eine eindeutig verschlüsselte Version desselben symmetrischen Schlüssels bereitzustellen .

50
Édouard Lopez

GnuPG und PGP-Clients verschlüsseln im Allgemeinen die eigentlichen Daten mit einem symmetrischen Schlüssel, der als "Sitzungsschlüssel" bezeichnet wird. Der Sitzungsschlüssel wird dann mit jedem "Empfängerschlüssel" verschlüsselt (d. H. Denjenigen, die Sie mit -r/- Empfänger angeben). Dies wird manchmal als Hybrid-Chiffre bezeichnet. Momentan glaube ich, dass GnuPG standardmäßig 256-Bit-Sitzungsschlüssel und AES verwendet, um die Klartextdaten zu diesem AES-256-Sitzungsschlüssel zu verschlüsseln, und Ihre Empfängerschlüssel sind Ihr 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 also nur ~ 256 Bits (den Sitzungsschlüssel) mit RSA verschlüsseln und kann mit AES die Daten (so groß wie Sie möchten!) Mit diesem Sitzungsschlüssel verschlüsseln. Intel-Maschinen haben sogar eine eingebaute Anweisung AES-NI , um einige Schritte des Algorithmus in der Hardware auszuführen, wodurch GnuPG beim Verschlüsseln/Entschlüsseln von Daten besonders schnell reagiert.

Ein weiterer Grund für diese Vorgehensweise besteht darin, 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 Folgendes, wenn Sie mehrere Empfänger für ein verschlüsseltes Dokument angeben (z. B. gpg -ea -r Alice -r Bob -o ciphertext.asc), das verschlüsselte Dokument, das gespeichert wird (ciphertext.asc), ist nicht 2x so groß, als ob Sie es gerade mit Alice verschlüsselt hätten.

Siehe auch das --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 dass Sie Ihren privaten Schlüssel an ihn übertragen müssen oder die Klartextdaten.

27
ido

Ja es ist möglich. Google "Multiparty-Verschlüsselung" für den Anfang.

AFAIK, es gibt keine Drop-in-Pakete und benutze sie dafür.

- MarkusQ

P.S. Betrachten Sie dies als eine Skizze, wie es getan werden könnte. Die verschlüsselte Nachricht besteht aus:

  • die Nutzlast, verschlüsselt mit einem One-Time-Pad
  • das mit key1 verschlüsselte one time pad
  • das one time pad, verschlüsselt mit key2
  • ...
  • das One Time Pad, verschlüsselt mit keyN

Der Empfänger, der den Schlüssel in der Hand hält, entschlüsselt nur seine Kopie des Pads mit seinem Schlüssel und entschlüsselt dann die Nutzlast.

Dies ist jedoch nur ein Beweis dafür, dass dies getan werden könnte und als tatsächliche Implementierung suck. Wenn möglich, sollten Sie das Rolling Ihrer eigenen Verschlüsselung vermeiden. Wenn Sie nicht verstehen, warum, sollten Sie definitiv vermeiden, Ihre eigene Verschlüsselung zu rollen.

----- Bearbeiten ------------

Wenn ich falsch liege und die Gnu-Tools das tun, benutze sie. Aber ich kann anscheinend keine Informationen darüber finden, wie es geht.

4
MarkusQ