Die RSA-Verschlüsselung basiert auf einer Trapdoor-Funktion, dh einem Funktionspaar. Ich werde sie D
und E
nennen. Die Funktionen sind so ausgelegt, dass D (E (x)) = x
und E (D (x)) = x
(für jedes x
). Mit anderen Worten sind D
und E
invers. Was es zu einer Trapdoor-Funktion macht, ist, dass Sie, wenn Sie einen öffentlichen Schlüssel haben, nur E
(praktisch) berechnen können. Wenn Sie einen privaten Schlüssel haben, können Sie sowohl D
als auch E
berechnen.
Die Funktionsweise der Verschlüsselung ist aus dieser Beschreibung ziemlich offensichtlich. Wenn Bob Alice eine verschlüsselte Nachricht senden möchte, berechnet er chiffretext: = E (Klartext)
. Dann sendet Bob Chiffretext
an Alice. Alice berechnet D (Chiffretext)
, was D (E (Klartext))
ist, was nur Klartext
ist.
Lassen Sie uns nun darüber sprechen, wie das Signieren funktioniert. Wenn Alice eine Nachricht
signieren möchte, berechnet sie die Signatur: = D (Nachricht)
. Sie sendet dann sowohl die Nachricht
als auch die Signatur
an Bob. Bob berechnet dann die -Validierung: = E (Signatur)
. Da Signatur
D (Nachricht)
ist, ist Validierung = E (D (Nachricht)) = Nachricht
.
In Mit anderen Worten: Um eine Nachricht zu signieren, tun Sie so, als würden Sie sie entschlüsseln, und das ist Ihre Signatur. Um Ihre Signatur zu überprüfen, können Benutzer die Signatur verschlüsseln und sicherstellen, dass sie Ihre ursprüngliche Nachricht zurückerhalten.
Ich sage das noch einmal: Das Signieren ist der gleiche Vorgang wie das Entschlüsseln.
Dies ist das grundlegende Anliegen bei der Trennung von Signatur- und Verschlüsselungsschlüsseln. Wenn jemand Sie dazu bringen kann, etwas zu unterschreiben, hat er Sie gerade dazu gebracht, es zu entschlüsseln.
Angenommen, Sie führen eine Notarfirma. Wenn Ihnen jemand 10 US-Dollar und eine Nachricht (z. B. Songtexte) gibt, unterschreiben Sie diese Nachricht und senden sie Ihnen zurück. Wenn jemand später Ihre Songtexte kopiert, können Sie die Unterschrift des vertrauenswürdigen Notars vorlegen, um zu demonstrieren, dass Sie diese Songtexte geschrieben haben.
Nehmen wir nun an, Eve hat eine verschlüsselte Nachricht an Ihre Notarfirma abgefangen. Wie kann sie die Verschlüsselung untergraben? Sie sendet Ihnen dieselbe Nachricht zur Beglaubigung! Jetzt führen Sie die Signaturoperation aus (die, wie Sie sich erinnern, mit der Entschlüsselungsoperation identisch ist) und senden das Ergebnis an sie zurück. Sie hat jetzt die entschlüsselte Nachricht.
In der Praxis haben Protokolle Schritte, die diesen Angriff erschweren. Zum Beispiel signiert PGP (womit ich das Protokoll meine; gpg ist hier die häufigste Implementierung) nicht die ursprüngliche Nachricht; Es signiert einen Hash der Nachricht. Sicherheitsnachweise sind jedoch in einfachen Situationen am besten. Sie möchten nicht, dass Ihr Beweis für die Sicherheit von RSA von der Hash-Funktion abhängt. (Zum Beispiel haben viele Leute MD5 lange Zeit als bevorzugten Hash verwendet, aber heute wird MD5 als ziemlich kaputt angesehen.) Allein die Sicherheit von RSA hängt von der Idee ab, dass Sie keine willkürlichen Nachrichten mit einem Schlüssel signieren, der für die Verschlüsselung verwendet wird. Die Einhaltung dieser Anforderung ist der beste Weg, um die Sicherheit von PGP zu gewährleisten. (Soweit ich mich erinnere, ist dies die am häufigsten wiederholte Ermahnung zur asymmetrischen Verschlüsselung in Bruce Scheiers Buch Angewandte Kryptographie .)
Lassen Sie uns nun darüber sprechen Eine weitere Frage, die Sie gestellt haben: "Würde dies nicht auch bedeuten, dass Sie zwei öffentliche Schlüssel an alle Personen verteilen müssen, mit denen Sie kommunizieren möchten?"
Ein "Schlüssel" bedeutet für Benutzer eine Sache und für andere eine andere die Krypto-Implementierungen. Sie müssen nur einen "Schlüssel" auf Benutzerebene kommunizieren, obwohl dieser möglicherweise viele öffentliche RSA-Schlüssel enthält.
PGP hat ein Konzept von Unterschlüsseln. Mein Hauptschlüssel ist ein Nur-Signatur-Schlüssel. Ich habe einen separaten Verschlüsselungsunterschlüssel. Dieser Unterschlüssel ist von meinem Hauptschlüssel signiert. Wenn Sie meinen PGP-Schlüssel von den Keyservern importieren oder von meiner Website herunterladen, erhalten Sie meinen Hauptschlüssel und alle meine Unterschlüssel. Auch wenn Sie möglicherweise nur meinen Hauptschlüssel signiert haben, hat mein Hauptschlüssel meinen Verschlüsselungsunterschlüssel signiert, sodass Sie wissen, dass er auch mir gehört. Das bedeutet, dass Sie durch das Herunterladen meines PGP-Schlüssels (der viele öffentliche RSA-Schlüssel umfasst) jetzt alles haben, was Sie zum Überprüfen meiner Signaturen und zum Verschlüsseln von Nachrichten an mich benötigen.
Mit Unterschlüsseln ist die Schlüsselverwaltung komplexer Vom kryptografischen Standpunkt aus (es muss noch ein zusätzlicher Schritt zur Schlüsselüberprüfung durchgeführt werden), aber nicht vom praktischen Standpunkt aus (mein PGP-Schlüssel enthält meinen Hauptschlüssel sowie alle meine Unterschlüssel). Die zusätzliche Komplexität ist in der Implementierung verborgen und dem Benutzer nicht zugänglich.