Needham-Schroeder-Protokoll

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Das Needham-Schroeder-Protokoll ist ein Schlüsselverwaltungsprotokoll. Es kann im Gegensatz zum Wide-Mouth-Frog-Protokoll auch für symetrische und asymetrische Verschlüsselung verwendet werden. Das Ziel des Protokolls ist ein vertrauenswürdiger Schlüsselaustausch und Verbindung der Partner. Im Gegensatz zum Wide-Mouth-Frog-Protokoll erstellt den Sitzungsschlüssel hier nicht einer der Kommunikationspartner sondern eine 3.Instanz, das Key Distribution Center KDC.


Symetrische Verbindung

  1. A baut eine Verbindung zum KDC auf und teilt ihm den Wunsch mit, mit B zu kommunizieren. Das Paket für das KDC enthält eine eigene ID A sowie die ID für B B. Außerdem ist eine Zufallszahl RA für die Aktualität des Pakets enthalten. Diese Nachricht wird unverschlüsselt übertragen.
    Needham-schroeder-protokoll-symetrisch1.png
  2. Das KDC erzeugt eine verschlüsselte Nachricht, die den Zufallswert RA auch einen vom KDC erzeugten Sitzungsschlüssel K enthält. Zusätzlich ist die ID von B sowie eine verschlüsselte Nachricht an B enthalten. Diese Nachricht für B enthält den Sitzungsschlüssel und die ID von A. Diese Nachricht wird vom KDC an A gesendet.
    Needham-schroeder-protokoll-symetrisch2.png
  3. A empfängt das Paket und kann den Sitzungsschlüssel extrahieren, jedoch ist es für ihn nicht möglich das Paket für B zu entschlüsseln. Das wird von A direkt an B gesendet.
    Needham-schroeder-protokoll-symetrisch3.png
  4. B empfängt das Paket und sendet eine Zufallszahl RB an A. Dieses Paket wurde mit dem Sitzungsschlüssel K verschlüsselt.
    Needham-schroeder-protokoll-symetrisch4.png
  5. A empfängt das Paket und sendet die Zufallszahl -1 an B verschlüsselt zurück.
    Needham-schroeder-protokoll-symetrisch5.png
  6. Anschließend kann die normale Kommunikation mit dem Sitzungschlüssel ablaufen.

Asymetrische Verbindung

Der Aufbau der asymetrischen Verbindung basiert auf den PKI-Prinzip. Dabei fungiert der KDC als Verzeichnisdienst für alle öffentlichen Schlüssel. Dabei müssen die Clients nur dem öffentlichen Schlüssel des KDCs besitzen.

  1. A sendet ein Paket mit seinder ID und der ID von B an das KDC um seinen öffentlichen Schlüssel zu erhalten.
  2. Das KDC sendet ein mit seinem geheimen Schlüssel signierte Nachricht an A. Diese enthält die ID und den öffentlichen Schlüssel von B.
  3. A empfängt das Paket und kann es aufgrund der Signatur auf Authentizität überprüfen. Anschließend sendet A ein mit dem öffentlichen Schlüssel von B verschlüsselte Nachricht an B. Diese enthält neben der ID von A auch eine Zufallszahl.
  4. B empfängt die Nachricht und kann sie mit seinem geheimen Schlüssel entschlüsseln und fragt das KDC nach dem öffentlichen Schlüssel von A. Dazu sendet es wie A ein Paket mit seiner ID und der von A an das KDC.
  5. Das KDC empfängt das Paket und sendet ein signiertes neues Paket an B. Dieses enthält neben der ID von A auch dessen öffentlichen Schlüssel.
  6. B empfängt die Nachricht und ist nun im Besitz des öffentlichen Schlüssel von A. Nun folgt der Key-Confirmation-Handshake, dabei sendet B eine verschlüsselte Nachricht an A, mit der Zufallszahl von A sowie einer neuen.
  7. A empfängt die Nachricht und sendet die Zufallszahl von B verschlüsselt zurück.
  8. Anschließend kann die normale Kommunikation mit den Schlüsseln ablaufen


Hybride Verbindung

Da die symetrische Verschlüsselung nicht so sicher ist und die asymetrische Verschlüsselung viel rechenaufwändiger ist, kann auch eine kombination verwendet werde. Dabei wird vorausgesetzt das beide Partner schon den öffentlichen Schlüssel des anderen besitzen. Wenn dies noch nicht gegeben ist läuft es wie bei der asymetrischen Verbindung ab.

  1. A sendet B eine Nachricht mit einem symetrischen Schlüssel für die Sitzung sowie seiner ID. Diese Nachricht wird mit dem öffentlichen Schlüssel von B verschlüsselt.
  2. B entschlüsselt die Nachricht und sendet sie mit einem weiteren Sitzungsschlüssel an A zurück. Diese Nachricht wird mit dem öffentlichen Schlüssel von A verschlüsselt.
  3. A empfängt die Nachricht und ist so im Besitz der beiden Schlüssel. Da B den 1.Schlüssel von A zurückgesendet hat besitzt es diesen, damit A bestätigt dass es den Schlüssel von B empfangen hat, sendet es diesen verschlüsselt zurück.
  4. Beide besitzen nun die beiden Schlüssel, daraus erzeugen sie einen neuen Schlüssel (f(K1,K2)), welcher nun für die gesamte Kommunikation verwendet wird.


Nachteile/Schwachstellen

Das Needham-Schroeder-Protokoll besitzt einige Lücken. So lässt sich an bestimmten Stellen, bei der symetrischen Verbindung, eine Replay-Attacke durchführen. Dazu muss X nur an einen alten Sitzungschlüssel gelangen und alles ab dem Schritt 3 wiederholen. Da die Aktualität einer Nachricht nicht festgestellt werden kann, kann dieser Angriff durchgeführt werden.

Außerdem ist das KDC eine Schwachstelle, so kann durch lahmlegen des Servers, z.B. durch DoS keine Kommunikation stattfinden. Außerdem ist das KDC im Besitz aller symetrischer Schlüsseln so kann durch einen Angriff die gesamte Kommunikation offengelegt werden.

Ist der Angreifer bei der symetrischen Variante an einen Schlüssel gekommen, kann dieser sich an diejenige Person ausgeben.

Verbesserungen

Um den Sicherheitsproblemen entgegen zu wirken kann man beispielsweise in die Nachrichten Zeitstempel oder Sequenznummer integrieren. Damit das System nicht zusammen bricht kann man den KDC auch in eine hierarchische Struktur einteilen, wodurch sich z.B. auch Subnetze bilden lassen. Außerdem können die Clients die öffentlichen Schlüssel der anderen eine Zeitlang speichern um den KDC zu entlasten.


Weiterführende Artikel

Links