Diffie-Hellmanova výměna symetrického klíče

******************** Diffie - Hellman ********************
Dříve, než spolu začnou dva lidé komunikovat, musí se dohodnout na velkém prvočísle Q a na čísle @ (alfa), kde @ je primitivní modulo mod Q. Čísla @ a Q může znát každý, nejsou tajná. Jeden člověk, řekněme Alice, vybere náhodné číslo X(a). Toto číslo uloží jako tajné a podle následujícího vzorce vypočítá číslo Y(a):

Ya=@^Xa mod Q

Alice toto výsledné číslo odešle svému partneru Bobovi. Mezitím si Bob vybral své vlastní náhodné číslo Xb a odpovídající číslo Yb poslal Alici:

Yb=@^Xb mod Q

Alice teď vypočítá číslo Kab, jejich sdílený klíč, a to podle následujícího vzorce:

Kab=Yb^Xa mod Q

Mezitím si Bob vypočítá to stejné číslo Kab a to podle vzorce:

Kab=Ya^Xb mod Q

Číslo Kab je bezpečné, protože jeho výpočet vyžaduje, aby jste znali čísla Xa, Xb. Alice zná číslo Xa a Bob zná číslo Xb. Ten, kdo by odposlouchával jejich linku, by znal pouze čísla Ya, Yb.Vypočítat číslo Xa z čísla Ya nebo Xb z čísla Yb je velmi obtížný problém.
Zkusme si tento příklad předvést na reálných číslech. Řekněme, že jsme se rozhodli použít tato čísla:

@=5
Q=563
Alice si vybrala číslo 9
Xa=9
Potom Bobovi odeslala číslo 78
Ya= 5^9 mod 563 = 78

Bob si vybral číslo 14
Xb=14
Alici pak poslal číslo 534
Yb=5^14 mod 563 = 534
Alice pak vypočítala číslo Kab=117
Kab=534^9 mod 563 = 117

Bob vypočítal číslo Kab=117
Kab=78^14 mod 563 = 117

diffie-hellman

Alice a Bob teď spolu mohou komunikovat pomocí šifrovacího klíče 117.
******************** END Diffie - Hellman ***************

Příklad diffie-hellmanova výpočtu:

diffie-hellmanův výpočet klíče

Vybrané prvočíslo Q=33579349
Vybrané číslo @=11
Tajné číslo Alice Xa=13

Ya=@^Xa mod Q
Ya=11^13 mod 33579349 = 34522712143931 mod 33579349 = 18492474  (tedy 34522712143931 : 33579349 =  1028093 a zbytek po dělení je 18492474)
Ya=18492474
Yb=@^Xb mod Q
Yb=11^7 mod 33579349 = 19487171 mod 33579349 = 19487171 (tedy 19487171 : 33579349 = 0 a zbytek po dělení je 19487171)
Yb=19487171
Kab=Yb^Xa mod Q
Kab=19487171^13 mod 33579349 = 58443248730331016423376362220113545242612980425266212714921832216993762011119642250537592395411 mod 33579349 = 17971067
Kab= 17971067

Alice má nyní symetrický klíč 179771067.

Tajné číslo Boba Xb=7

Yb=@^Xb mod Q
Yb=11^7 mod 33579349 = 19487171 mod 33579349 = 19487171 (tedy 19487171 : 33579349 = 0 a zbytek po dělení je 19487171)
Yb=19487171
Kab=Ya^Xb mod Q
Kab=18492474^7 = 739545872170936885676040832101517220417381481949824 mod 33579349 = 17971067
Kab=17971067

Bob má nyní symetrický klíč 17971067.


výměna klíčů