Wie wird der Schlüssel in einem Verschlüsselungsprotokoll für private Schlüssel ausgetauscht?

12

Windows NT verwendete ein Punkt-zu-Punkt-Protokoll, bei dem ein Client "sicher" mit einem Server kommunizieren kann, indem er eine Stream-Verschlüsselung verwendet, um ein Array von Nachrichten mit einem Schlüssel zu verschlüsseln k. Der Server verschlüsselt auch seine Antwort mit demselben Schlüssel k . Aber woher weiß es um diesen Schlüssel?

Allgemeiner: Wenn Alice und Bob einen Verschlüsselungs- / Entschlüsselungsalgorithmus verwenden, der mit demselben privaten Schlüssel k , wie kann dieser Schlüssel dann sicher ausgetauscht werden? (ohne einen anderen Schlüssel zu verwenden)

Dies ist etwas, das ich mir immer gefragt habe, während ich mich mit Kryptografie mit privaten Schlüsseln beschäftige.

codd
quelle
Verwandte Frage .
Raphael

Antworten:

6

Die meisten Algorithmen mit privatem Schlüssel beruhen auf der Unmöglichkeit bestimmter Berechnungen, wie der Faktorisierung einer Zahl in ihre Hauptfaktoren angesichts der gegenwärtigen Computerinfrastruktur.

Gleichzeitig sind die meisten von ihnen auch rechenintensiv, wenn sie zum Ver- und Entschlüsseln verwendet werden, und daher wird nicht der gesamte Nachrichtenstrom mit den privaten Schlüsseln verschlüsselt. Die Nachricht wird vielmehr mit einem anderen (weniger intensiven) Algorithmus verschlüsselt, und der für diese Verschlüsselung verwendete Schlüssel wird mit dem privaten Schlüssel verschlüsselt.

Wie Sie bereits betont haben, bleibt der sichere Austausch von Schlüsseln natürlich ein Problem, das in gewissem Maße gelöst werden kann durch:

  • Diffie-Hellman-Schlüsselaustausch : Verwendet modulare Arthimetik zum sicheren Austausch von Schlüsseln.
  • Single / Multiple Key Distribution Center (KDC) : Verwendet ein vertrauenswürdiges, auf Drittanbietern basierendes Ticketsystem.
  • Kerberos-Authentifizierungsprotokoll : Ein relativ komplexes Protokoll, das auf KDC basiert.
check123
quelle
7

Wann immer Alice und Bob sich auf denselben privaten Schlüssel einigen möchten, ist die beliebteste Methode die Verwendung von Diffie-Hellman . Es funktioniert wie folgt:

  1. Zuerst werden zwei öffentliche Werte gewählt, sagen wir und g = 17 . (Dies sind normalerweise sehr große Primzahlen, die jedem bekannt sind, der dieses Protokoll verwendet.)n=13G=17

  2. Alice wählt einen privaten Wert und Bob wählt einen privaten Wert b = 7 . Diese sind privat für sich.ein=3b=7

  3. Alice berechnet: und Bob berechnen: B = g bEIN=Geinmodn , in diesem Fall A = 12 und B = 4 , und sie gegenseitig austauschen Werte (möglicherweise über Chat sein), kennen also alle die Werte von A und B .B=GbmodnEIN=12B=4EINB

  4. Alice berechnet: und Bob berechnen: K = A bK=Beinmodn , in diesem Fall ist K = 12 .K=EINbmodnK=12

Jetzt haben sich Alice und Bob beide auf den Wert als Schlüssel geeinigt . Beachten Sie, dass es für einen Lauscher fast unmöglich ist , die Werte n und g sowie sehr große Primzahlen zu faktorisieren und den Schlüssel selbst zu berechnen.KnG

Ein Problem bei der Kryptografie mit privaten Schlüsseln ist ein Man-in-the-Middle-Angriff. Dies ist einer der Hauptgründe, warum Sie sich für die Kryptografie mit öffentlichen Schlüsseln anstelle der Kryptografie mit privaten Schlüsseln entscheiden.

0x0
quelle
5

Zunächst ein terminologischer Punkt: Was Sie beschreiben, ist symmetrische Verschlüsselung , und ein Schlüssel, der von den Teilnehmern gemeinsam genutzt wird, wird normalerweise als geheimer Schlüssel bezeichnet. "Privater Schlüssel" bedeutet normalerweise den Teil eines Schlüssels in der Kryptographie mit öffentlichem Schlüssel , den nur ein Teilnehmer kennt.

Es gibt zwei Möglichkeiten, einen geheimen Schlüssel zu verbreiten: Er kann auf physikalisch sichere Weise transportiert werden, oder er kann mit einer anderen Form der Verschlüsselung, der Kryptographie mit allgemeinem Schlüssel, transportiert werden.

Es gibt Möglichkeiten, einen geheimen Schlüssel auszutauschen, für den kein geheimer Kommunikationskanal erforderlich ist. Am beliebtesten ist das Diffie-Hellman-Schlüsselaustauschprotokoll. Das Prinzip von Diffie-Hellman ist, dass jeder Teilnehmer sein eigenes Schlüsselpaar generiert und es eine mathematische Operation gibt, die eine große Zahl aus einem öffentlichen Schlüssel und einem privaten Schlüssel erstellt. Diese mathematische Operation hat eine sehr interessante Eigenschaft: Die große Zahl kann aus dem privaten Schlüssel von Alice und dem öffentlichen Schlüssel von Bob oder aus dem privaten Schlüssel von Bob und dem öffentlichen Schlüssel von Alice konstruiert werden. Sie erhalten die gleiche Nummer so oder so. Alice und Bob tauschen also ihre öffentlichen Schlüssel aus, und beide Parteien kennen die große Nummer, die dann als geheimer Schlüssel verwendet werden kann. Ein Lauscher kann beide öffentlichen Schlüssel herausfinden, es ist jedoch unmöglich, die große Zahl allein aus den öffentlichen Schlüsseln zu ermitteln.

Der Diffie-Hellman-Schlüsselaustausch ermöglicht es zwei Parteien, ein Geheimnis auszutauschen, unabhängig davon, wer zuhört. Es authentifiziert Alice jedoch nicht bei Bob oder umgekehrt. Daher ist es für einen Man-in-the-Middle-Angriff zugänglich : Mallory führt den Schlüsselaustausch mit Alice (die glaubt, dass sie mit Bob spricht) und separat mit Bob (die glaubt, dass er mit Alice spricht) durch und kann so entscheiden oder entscheiden kenne das Geheimnis am wenigsten.

Wenn der Angreifer Nachrichten abfangen und einschleusen kann, ist mehr Kryptografie erforderlich, damit sich die Teilnehmer gegenseitig authentifizieren können. (Ein passiver Angreifer bedeutet effektiv, dass das zugrunde liegende Transportprotokoll eine Authentifizierung bereitstellt.) Auf einfache Weise kann jeder Teilnehmer den öffentlichen Schlüssel des anderen Teilnehmers bereits kennen. Wenn Alice Bobs öffentlichen Schlüssel kennt:

  • Alice kann Bob authentifizieren, indem sie ihm eine Abfrage sendet: einen zufälligen Wert (ein Nonce ), der mit Bobs öffentlichem Schlüssel verschlüsselt ist. Wenn Bob diesen Wert entschlüsseln und zurücksenden kann, weiß Alice, dass sie wirklich mit Bob spricht.
  • Bob kann sich bei Alice authentifizieren, indem er ihr eine Nachricht sendet, die mit seinem öffentlichen Schlüssel signiert ist. Alice überprüft die Unterschrift, um zu überprüfen, ob sie wirklich mit Bob spricht.

Es gibt viele Varianten, die eine dieser Methoden (oder noch eine andere Variante) in einer Richtung und entweder dieselbe oder eine andere Methode in der anderen Richtung verwenden oder die nur in einer Richtung authentifizieren. Beispielsweise kann SSL / TLS (die Kryptografieschicht für viele -s-Protokolle wie HTTPS, SMTPS, IMAPS usw.) mehrere verschiedene Verschlüsselungskombinationen verwenden und den Server normalerweise gegenüber dem Client authentifizieren, kann jedoch optional auch den Client authentifizieren. Diffie-Hellman ist für diese Anwendung langsam und umständlich. Der am weitesten verbreitete Algorithmus mit öffentlicher Schlüsselverteilung ist RSA .

Natürlich kennen Alice und Bob den öffentlichen Schlüssel des anderen möglicherweise nicht im Voraus. Sie verlassen sich stattdessen auf eine Vertrauenskette: Bob sendet Alice seinen öffentlichen Schlüssel zusammen mit einer signierten Erklärung eines Dritten, die bestätigt, dass dieser Schlüssel wirklich Bobs öffentlicher Schlüssel ist. Diese unterzeichnete Erklärung wird als Zertifikat bezeichnet, und die dritte Partei ist eine Zertifizierungsstelle . Die dritte Partei kann Bob bekannt sein, oder ihre Identität kann von einer vierten Partei bestätigt werden, und so weiter. Schließlich muss diese Vertrauenskette (… steht für Dominique, steht für Charlie, der für Bob steht) eine Partei erreichen, der Ron bereits vertraut, was bedeutet, dass Bob Rons öffentlichen Schlüssel besitzt und Ron vertraut, dass er nur gültige Zertifikate signiert.

Es gibt Protokolle, die nicht auf Kryptografie mit öffentlichen Schlüsseln beruhen. Insbesondere wird das Kerberos- Protokoll sowohl in Unix- als auch in Windows-basierten Netzwerken verwendet, um Verbindungen zwischen einem Client und einem Server herzustellen. Kerberos verwendet einen zentralen Authentifizierungsserver, ein so genanntes Key Distribution Center (KDC). Auf dem KDC muss das Kennwort des Benutzers in einer Datenbank gespeichert sein, und der Client fordert den Benutzer normalerweise zur Eingabe des Kennworts auf. Um die Offenlegung des Kennworts zu vermeiden, verwendet das Protokoll das Kennwort nicht direkt, sondern einen kryptografischen Hash oder allgemeiner eine auf das Kennwort angewendete Schlüsselableitungsfunktion .

Mit diesem gemeinsamen Geheimnis richten der Client und das KDC einen sicheren Kanal ein und das KDC sendet dem Client ein "Ticket". Das Ticket enthält einen Sitzungsschlüssel (dh einen neu generierten geheimen Schlüssel) sowie eine Kopie des Schlüssels, der mit einem anderen symmetrischen Schlüssel verschlüsselt ist, der zwischen dem KDC und dem Server geteilt wird, mit dem der Client Kontakt aufnehmen möchte. Der Client leitet diese verschlüsselte Kopie dann an den Server weiter. Der Server entschlüsselt diese Nachricht, um den Sitzungsschlüssel abzurufen, und generiert eine Nonce, die er mit dem Sitzungsschlüssel verschlüsselt und an den Client zurücksendet. Der Client initiiert dann einen sicheren Kanal mit dem Server, der mit dem Sitzungsschlüssel verschlüsselt ist, und zeigt zunächst an, dass der Nonce entschlüsselt werden kann. Dadurch wird der Client gegenüber dem Server authentifiziert. Ein Kerberos-Sitzungsaufbau ist eine Variante des Needham-Schroeder-Protokolls .

¹ In dem Sinne, dass Kryptografen sich sehr bemüht haben, aber der beste Weg, dies zu tun, erfordert eine unerreichbare Menge an Rechenleistung.

Gilles 'SO - hör auf böse zu sein'
quelle
3

Ein möglicher Weg ist, zuerst die Public-Key-Kryptographie zu verwenden, um einen privaten Schlüssel auszutauschen. Wenn dies jedoch nicht möglich ist, gibt es einige spezifische Schlüsselaustauschprotokolle. Das bekannteste ist wahrscheinlich das Diffie-Hellman-Protokoll .

Charles
quelle
3

Es gibt immer die triviale Lösung: Die Benutzer treffen sich und tauschen Schlüssel aus. Dies ist für viele Fälle nicht sehr praktisch, aber möglich.

Neben dem Diffie-Hellman (DH) -Schlüsselaustauschprotokoll gibt es auch Quantenschlüsselverteilungsprotokolle . Eines der bekanntesten QKD-Protokolle ist das Bennett-Brassard-Protokoll BB84 .

P=NP

Auf der anderen Seite ist der MITM-Angriff auch für BB84 ein Problem, und man muss davon ausgehen, dass die Benutzer einen authentifizierten Kanal verwenden, um dieses Problem zu beheben.

Ran G.
quelle