Diffie-Hellman-Schlüsselvereinbarung

Mathematik in wxMaxima www.mathematik-verstehen.de Haftendorn Dez 2010

0.1 Handlinghilfen

0.2 Inhalt

1 Erzeugung des gemeinsamen Schlüssels
    1.1 Verabredung der Grundlagen p und g
    1.2 Erzeugung der geheimen Zahlen
    1.3 Austausch der Potenzen
    1.4 Potenzierung der erhaltenen Zahlen
2 Hilfsfunktionen !!!!! Zuerst auswerten und wieder zuklappen !!!!
3 Symmetrische Verschlüsselung mit One-Time-Pad
3 Angriffe

1 Erzeugung des gemeinsamen Schlüssels

1.1 Verabredung der Grundlagen

Anton und Berta verabreden (offen) eine Primzahl p und eine
kleinere Zahl g.

(%i39) p:next_prime(floor(sqrt(random(1.0)*10^160)));
10^80;

Result

(%i41) g:random(p);
Result

1.2 Jeder für sich erzeugt seine geheime Zahl

(%i42) anton:random(p); berta:random(p);
Result

1.3 Jeder schickt dem Anderen seine Potenz von g

(%i44) alpha:power_mod(g,anton,p); beta:power_mod(g,berta,p);
Result

1.4 Jeder potenziert das Empfangene

(%i46) ka:power_mod(beta,anton,p); kb:power_mod(alpha,berta,p);
Result

Nun haben beide denselben Schlüssel, nämlich ka=kb.

2 Hilfsfunktionen

3 Symmetrische Kommunikation mit One-time-pad

3.1 Verschlüsseln mit One-time-pad und gemeinsamem Schlüssel

Anton will eine Nachricht an Berta senden

(%i56) m:txToZoo("Wollen wir Weihnachten Skifahren?");
Result

(%i57) m;ka;
Result

Nun werden die Nachricht m und der Schlüssel ka ziffernweise modulo 10 addiert.

(%i59) c:otp_en(m,ka);
Result

Dieses c sendet Anton an Berta

3.2 Entschlüsselung nit One-Time-Pad und gemeinsamem Schlüssel

Berta erhält von Anton das c

(%i60) c; kb;
Result

Berta zieht nun Ziffernweise von links modulo 10 von c den Schlüssel ab.

(%i62) mm:otp_de(c,ka);
Result

(%i63) zooToTx(mm);
Result

4 Angriffe

(%i73) /* bis 10000 dauert 8 sec bei p 80 Stellen*/
block( for i:1 thru 100 do( a:random(p),
                              if power_mod(g,random(p),p)=alpha then print( a, " gefunden") ),
                              print( " Pech, nicht gefunden"))$

Result


Created with wxMaxima.