Ist es möglich, Daten so zu verschlüsseln, dass sie mit mehreren verschiedenen Schlüsseln entschlüsselt werden können?
Beispiel:
Ich habe Daten mit Schlüssel 1 verschlüsselt, möchte aber mit Schlüssel 2, 3 und 4 entschlüsseln können.
Ist das möglich?
encryption
gnupg
encryption-asymmetric
Glen Solsberry
quelle
quelle
Ja es ist möglich
Ja, Verschlüsselung für mehrere Empfänger ist möglich. Es scheint auch logisch , wenn Sie denken , dass Sie vielleicht in der Lage sein zu lesen , was Sie jemanden geschickt haben und tun , damit Sie in der Empfängerliste werden müssen.
Befehlszeile
So geht's über die
gpg
Kommandozeile (wie in der Antwort von David Segonds beschrieben ):GUI-Client
Ihre GUI muss eine Möglichkeit zum Verschlüsseln für mehrere Personen bieten
Mechanismus
Es gibt eine Frage zur Informationssicherheit , GPG-Dateigröße mit mehreren Empfängern? , die den Verschlüsselungsmechanismus erklären :
quelle
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 (z
gpg -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.quelle
Ja es ist möglich. Google "Multiparty-Verschlüsselung" für den Anfang.
AFAIK, es gibt jedoch keine Drop-Em-In- und Use-Em-Pakete dafür.
- MarkusQ
PS Betrachten Sie dies, um eine Skizze zu erhalten, wie dies getan werden könnte. Die verschlüsselte Nachricht besteht aus:
Der Empfänger, der den Schlüssel hält, entschlüsselt einfach 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 scheiße wäre . Wenn möglich, sollten Sie vermeiden, Ihre eigene Verschlüsselung zu verwenden. Wenn Sie nicht verstehen warum, sollten Sie auf jeden Fall vermeiden, Ihre eigene Verschlüsselung zu verwenden.
----- 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.
quelle
RSA mit mehreren (mehr als zwei) Schlüsseln ist vielleicht so - nun, ich bin kein Mathematiker, daher ist dieser Algorithmus nicht unbedingt sicher, ich möchte nur eine Idee damit geben.
m = p * q * r; p, q, r sind große Primzahlen
fi (m) = (p-1) (q-1) (r-1)
d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei sind beliebige Zahlen, d wird berechnet, um die Gleichung zu erfüllen
y1 == x ^ e1 (mod m)
y2 == y1 ^ e2 (mod m)
y3 == y2 ^ e3 (mod m)
...
x == yi ^ d (mod m)
Dieser Algorithmus könnte beispielsweise verwendet werden, um die Geschwindigkeit des Onion Routers zu erhöhen.
quelle