Kryptografische Protokolle

Diffie-Hellman-Schlüsselvereinbarung

 aufwärts

Zwei Kommunikations­partner A und B wollen sich auf einen gemeinsamen Schlüssel einigen. Der zur Verfügung stehende Kommunikations­kanal kann jedoch von einem Dritten C abgehört werden.

 

Protokoll

Zu Beginn tauschen A und B öffentlich eine Primzahl p und eine Zahl g aus.

   
         A C          B
 Primzahl p
Zahl g mit
1 < g < p-1
 
wählt
   Zufallszahl x
  wählt
   Zufallszahl y
berechnet
   a = gx mod p
  berechnet
   b = gy mod p
  
berechnet
   b x mod p
= g yx mod p
= k
  berechnet
   a y mod p
= g xy mod p
= k
   
   

Die Zahl k kann nunmehr A und B als gemeinsamer Schlüssel dienen. Sind die verwendeten Zahlen groß genug, so kann aus der Kenntnis von a sowie p und g nicht x berechnet werden, jedenfalls nicht mit vertretbarem Aufwand (Problem des diskreten Logarithmus). Ein Dritter kann somit nicht k = b x mod p berechnen.

 

Auswahl von g

Die Zahl g darf nicht beliebig gewählt werden, sondern g muss die Ordnung p-1 haben. D.h. g muss die Gruppe ganze Zahlenp* erzeugen und nicht nur eine Untergruppe mit möglicherweise sehr viel weniger Elementen. Denn nur die Elemente der von g erzeugten Gruppe kommen als Ergebnis k in Betracht.

Der Extremfall für eine falsche Wahl von g ist g = 1. Die von g = 1 erzeugte Untergruppe ist {1}, d.h. als Ergebnis für k ist nur 1 möglich. Auch g = p-1 ist eine schlechte Wahl, denn die von p-1 erzeugte Untergruppe ist {1, p-1}, so dass als mögliche Ergebnisse für k nur 1 und p-1 in Betracht kommen. Ein Angreifer braucht also in diesem Fall keine diskreten Logarithmen zu berechnen, sondern nur die Schlüssel k = 1 und k = p-1 auszuprobieren.

Wichtig ist also, dass g kein Element einer echten Untergruppe von ganze Zahlenp* ist. Welche weiteren Untergruppen von ganze Zahlenp* es gibt, hängt von den Teilern der Gruppenordnung ab (in dem hier betrachteten Fall ist p-1 die Gruppenordnung, da p eine Primzahl ist).

Aufgabe 1:  Sei p = 19. Geben Sie die von g = 7 erzeugte Untergruppe von ganze Zahlen19* an.

Aufgabe 2:  Sei p = 7. Geben Sie ein Element an, das ganze Zahlen7* erzeugt.

 

Auswahl von p

Zweckmäßiger­weise nimmt man in der Praxis für p eine starke Primzahl, d.h. eine Primzahl p, für die gilt

p-1  =  2 · q

mit q Primzahl.

Dann sind nur 2 und q echte Teiler von p-1 und es gibt nur zwei nichttriviale Untergruppen – eine der Ordnung 2 und eine der Ordnung q.

Die Untergruppe der Ordnung 2 ist {1, p-1}, die restlichen Elemente sind je zur Hälfte Elemente der Untergruppe der Ordnung q und erzeugende Elemente der gesamten Gruppe.

Beispiel:  Sei p = 11. Offenbar ist p eine starke Primzahl. Die Menge ganze Zahlen11* besteht dann aus folgenden Elementen:

ganze Zahlen11* = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Die Elemente der Untergruppe der Ordnung 2 sind blau gekennzeichnet, die Elemente der Untergruppe der Ordnung 5 sind rot gekennzeichnet (die 1 ist rot und blau = violett gekennzeichnet). Die restlichen Elemente sind erzeugende Elemente von ganze Zahlen11*.

Wenn also p-1 = 2·q ist, findet man ein erzeugendes Element von ganze Zahlenp*, indem man zufällig ein Element g mit 1<g<p-1 wählt und prüft, ob gq = 1 ist (modulo p gerechnet). Ist dies der Fall, so verwirft man g, denn dann ist g kein erzeugendes Element der gesamten Gruppe, sondern Element der Untergruppe der Ordnung q. Man wählt dann ein neues Element usw. Die Wahr­scheinlichkeit, dass man auch nach n Versuchen noch kein erzeugendes Element gefunden hat, beträgt lediglich 1/2n.

 

 

Weiter mit:   [ElGamal-Verschlüsselung]   oder   up del.icio.us digg.com Google Ma.gnolia Mister Wong StumbleUpon YahooMyWeb LinkARENA

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©   Created: 19.05.1998   Updated: 05.03.2010
Valid HTML 4.01 Transitional