it-swarm-eu.dev

Warum sollte man für die Verschlüsselung nicht denselben asymmetrischen Schlüssel verwenden wie für die Signatur?

In einer Antwort auf eine Frage zu RSA und PGP stellte PulpSpy Folgendes fest:

Es ist möglich, ein RSA-Schlüsselpaar mit GPG zu generieren (sowohl für die Verschlüsselung als auch für die Signatur - Sie sollten nicht für beide denselben Schlüssel verwenden).

Was ist der Grund dafür?

Vielleicht ist mein Verständnis der Verschlüsselung mit öffentlichen Schlüsseln fehlerhaft, aber ich dachte, die Vorgänge verliefen ähnlich:

  • Wenn Bob eine Nachricht an Alice verschlüsseln möchte, verwendet er den öffentlichen Schlüssel von Alice für die Verschlüsselung. Alice verwendet dann ihren privaten Schlüssel, um die Nachricht zu entschlüsseln.
  • Wenn Alice eine Nachricht digital an Bob signieren möchte, verwendet sie ihren privaten Schlüssel, um sie zu signieren. Bob verwendet dann den öffentlichen Schlüssel von Alice, um die Signatur zu überprüfen.

Warum ist es wichtig, unterschiedliche Schlüssel für die Verschlüsselung und Signatur zu verwenden? Würde dies nicht auch bedeuten, dass Sie zwei öffentliche Schlüssel an alle verteilen müssen, mit denen Sie kommunizieren möchten? Ich kann mir vorstellen, dass dies leicht zu Verwirrung und Schlüsselmissbrauch führen kann.

100
Iszi

Bei der Verwendung von Signatur- und Verschlüsselungsschlüsseln unterscheiden sich meistens die Verwaltungsansätze und -zeiträume.

Wenn Sie nicht zurückweisen, möchten Sie niemals, dass jemand anderes die Kontrolle über Ihren Signaturschlüssel erhält, da er sich als Sie ausgeben könnte. Möglicherweise möchte Ihr Arbeitsplatz jedoch Ihren Verschlüsselungsschlüssel hinterlegen, damit andere Benutzer auf die von Ihnen verschlüsselten Informationen zugreifen können.

Möglicherweise möchten Sie auch, dass ein Signaturschlüssel lange gültig ist, damit Menschen auf der ganzen Welt Signaturen aus der Vergangenheit überprüfen können. Mit einem Verschlüsselungsschlüssel möchten Sie ihn jedoch häufig früher verlängern und alte ohne as widerrufen können viele Probleme.

69
nealmcb

Es ist möglicherweise unsicher, dasselbe Schlüsselpaar sowohl für die Signatur als auch für die Verschlüsselung zu verwenden. Dies kann je nach verwendetem Public-Key-Schema Angriffe ermöglichen. Diese Art der Verwendung ist nicht das, wofür das System entwickelt wurde. Wenn Sie das System so verwenden, dass es nicht entwickelt wurde, erlischt die Garantie.

Tu es nicht. Es bittet um Ärger.

34
D.W.

Es gibt einige Gründe, warum wir nicht denselben Schlüssel für die Verschlüsselung und Signatur verwenden sollten.

  1. Wir müssen unseren geheimen Schlüssel für verschlüsselte Daten sichern. Später möchten wir einige alte verschlüsselte Nachrichten entschlüsseln, müssen jedoch unseren geheimen Schlüssel zum Signieren nicht sichern. Wenn der Angreifer den Schlüssel findet, können wir unsere Zertifizierungsstelle anweisen, ihn zu widerrufen und einen neuen geheimen Schlüssel zum Signieren zu erhalten, ohne dass eine Sicherung erforderlich ist.

  2. Noch wichtiger : Wenn wir denselben Schlüssel für die Verschlüsselung und Signatur verwenden, kann der Angreifer damit unsere verschlüsselte Nachricht entschlüsseln. Dies ist, was er/sie tun würde:

    Der Angreifer muss eine Zufallszahl r wählen, wobei

    r muss GDC(N, r) = 1 haben,
    Und N ist die Nummer, die zum Erstellen eines privaten und öffentlichen Schlüssels verwendet wird (N = pq).

    Dann wählt der Angreifer eine neue Nachricht (m′) Und sendet diese zur Unterschrift an den Absender:

    m′ = m^e.r^e (hier ist (e,n) Der öffentliche Schlüssel)

    Wenn der Absender m′ Unterschreibt, erhalten wir

    m′^d ≡ (m^e.r^e)^d ≡ m.r (mod N)

    Jetzt muss der Angreifer es nur noch durch r "teilen", um m (die geheime Nachricht) zu erhalten.

12
Am1rr3zA

Gründe für die Verwendung separater Schlüssel zum Signieren und Verschlüsseln:

  1. In der Organisation nützlich, wenn Verschlüsselungsschlüssel gesichert oder in einem Treuhandkonto aufbewahrt werden müssen, um Daten zu entschlüsseln, sobald ein Mitarbeiter/Benutzer der Organisation nicht mehr verfügbar ist. Im Gegensatz zum Verschlüsselungsschlüssel darf der Signaturschlüssel niemals von jemand anderem als dem Mitarbeiter/Benutzer verwendet werden und muss und sollte nicht in einem Treuhandkonto aufbewahrt werden.
  2. Ermöglicht unterschiedliche Ablaufzeiten für das Signieren eines Verschlüsselungsschlüssels.
  3. Da die zugrunde liegende Mathematik für die Verschlüsselung und das Signieren dieselbe ist, nur umgekehrt, erhält der Angreifer das Original, wenn ein Angreifer einen Schlüsselhalter davon überzeugen/austricksen kann, eine unformatierte verschlüsselte Nachricht mit demselben Schlüssel zu signieren.

Referenzen

  1. https://www.entrust.com/what-is-pki/

  2. https://www.gnupg.org/gph/en/manual/c235.html

  3. http://www.di-mgt.com.au/rsa_alg.html

7
moo

Für mich hängen die Hauptgründe eher mit der Schlüsselverwaltung als mit der kryptografischen Sicherheit an sich zusammen.

Bei asymmetrischer Krypto kann insbesondere der Zeitraum, in dem ein öffentlicher Schlüssel gültig sein soll, stark von der beabsichtigten Verwendung dieses Schlüssels abhängen. Stellen Sie sich beispielsweise ein System vor, in dem sich eine Komponente gegenüber anderen Komponenten authentifizieren muss. Darüber hinaus muss diese Komponente regelmäßig eine Signatur für einige Daten erstellen. Theoretisch könnte ein einziger privater Schlüssel für beide Zwecke verwendet werden. Angenommen, die PKI-Zertifizierungsstelle möchte aus Sicherheitsgründen den Zeitraum, in dem eine erfolgreiche Authentifizierung basierend auf einem einzelnen Zertifikat erfolgen kann, auf zwei Jahre beschränken. Gleichzeitig können die Gesetze zur Vorratsdatenspeicherung vorschreiben, dass die Daten fünf Jahre lang aufbewahrt werden und dass die Unterschrift über diese Daten während des gesamten Zeitraums überprüfbar sein muss. Die einzige (solide) Möglichkeit, dieses Problem zu lösen, besteht darin, der Komponente zwei private Schlüssel zu geben: einen zur Authentifizierung und einen zum Signieren. Das Zertifikat des ersten Schlüssels läuft nach zwei Jahren ab, das Zertifikat zum Signieren nach fünf Jahren.

Ähnliche Überlegungen können auf die symmetrische Kryptographie angewendet werden: Wenn Sie unterschiedliche Schlüssel für unterschiedliche Zwecke verwenden, können Sie alle Fragen der Schlüsselverwaltung (z. B. die Häufigkeit des Rollover des Hauptschlüssels, den Zeitraum für die Sicherung von Schlüsseln usw.) basierend festlegen auf die Anforderungen eines einzigen Zwecks. Wenn Sie einen einzelnen (Haupt-) Schlüssel für mehrere Zwecke verwenden, kann dies zu widersprüchlichen Anforderungen führen.

5
David Bakker

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, D und E sind invers. Was es zu einer Trapdoor-Funktion macht, ist, dass Sie, wenn Sie einen öffentlichen Schlüssel haben, nur E berechnen können (praktisch). Wenn Sie einen privaten Schlüssel haben, können Sie sowohl D als auch E berechnen.

Die Art und Weise, wie die Verschlüsselung funktioniert, ist aus dieser Beschreibung ziemlich offensichtlich. Wenn Bob Alice eine verschlüsselte Nachricht senden möchte, berechnet er ciphertext := E(plaintext). Dann schickt Bob ciphertext an Alice. Alice berechnet D(ciphertext), was D(E(plaintext)) ist, was nur plaintext ist.

Lassen Sie uns nun darüber sprechen, wie das Signieren funktioniert. Wenn Alice message signieren möchte, berechnet sie signature := D(message). Sie sendet dann sowohl message als auch signature an Bob. Bob berechnet dann validation := E(signature). Da signatureD(message) ist, dann validation = E(D(message)) = message.

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: Signieren ist der gleiche Vorgang wie Entschlüsseln.

Dies ist das grundlegende Problem 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.

Angenommen, Eve hat eine verschlüsselte Nachricht an Ihren Notar 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 über eine andere Frage sprechen, die Sie gestellt haben: "Würde dies nicht auch bedeuten, dass Sie zwei öffentliche Schlüssel an alle verteilen müssen, mit denen Sie kommunizieren möchten?"

Ein "Schlüssel" bedeutet für Benutzer eine Sache und für die Krypto-Implementierungen eine andere. 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. Obwohl 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 benötigen, um meine Signaturen zu überprüfen und Nachrichten an mich zu verschlüsseln.

Bei Unterschlüsseln ist die Schlüsselverwaltung vom kryptografischen Standpunkt aus komplexer (es ist ein zusätzlicher Schritt zur Schlüsselüberprüfung erforderlich), jedoch 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.

2
Piquan