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 sowie die ID für B. Außerdem ist eine Zufallszahl für die Aktualität des Pakets enthalten. Diese Nachricht wird unverschlüsselt übertragen.
  2. Das KDC erzeugt eine verschlüsselte Nachricht, die den Zufallswert von A auch einen vom KDC erzeugten Sitzungsschlüssel 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.
  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. Dieses Paket wird von A direkt an B gesendet.
  4. B empfängt das Paket und sendet eine Zufallszahl an A. Dieses Paket wurde mit dem Sitzungsschlüssel verschlüsselt.
  5. A empfängt das Paket und sendet die Zufallszahl -1 an B verschlüsselt zurück.
  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.