6Algoritmus Diffie-Hellmann

Diffie-Hellmanův algoritmus (D-H algoritmus) je kryptografický protokol, který umožňuje vytvořit mezi komunikujícími stranami šifrované spojení přes nezabezpečený kanál, a to bez nutnosti dopředu dohodnout šifrovací klíč. Výsledkem algoritmu je symetrický šifrovací klíč, který může být následně použit pro šifrování zbytku komunikace.

Výhodou je, že případný útočník odposlouchávající komunikaci tento klíč nezachytí. Klíč je totiž vytvořen všemi účastníky komunikace a nikdy není poslán v otevřené formě. Resp. tento algoritmus zaručí výměnu společného klíče takovým způsobem, že pokud tuto komunikaci odposlouchává útočník, pak není schopen společný klíč na základě odposlechnutých informací zrekonstruovat.

Nevýhodou tohoto protokolu je bezbrannost proti útoku Man in the Middle, protože neumožňuje autentizaci účastníků. Tento protokol bez kombinace s jinými metodami autentizace je tedy vhodný pouze tam, kde útočník nemůže aktivně zasahovat do vlastní komunikace.

Princip D-H algoritmu definovaný doporučeními RFC 2409, RFC 3526 a RFC 5114 je založen na umocňování čísel (AB)C = (AC)B, resp. na modulární variantě tohoto vzorce (AB)C|m = (AC)B|m.

Velikost modulu pak specifikuje typ grupy. Obvykle se používají grupy 1, 2 a 5. Číslo grupy udává délku klíče – DH-1 (768 bitů), DH-2 (1024 bitů), DH-5 (1535 bitů), DH-14 (2048 bitů).

Výpočet výsledné hodnoty je velmi snadný (rychlý), ale jen velmi obtížně se dá zjistit některá z hodnot, kterou zná pouze jiný účastník. Tomuto principu, na kterém stojí bezpečnost tohoto algoritmu, se říká problém diskrétního logaritmu.

Komunikace s využitím D-H algoritmu probíhá následujícím způsobem:

- Účastníci se veřejně domluví na použitém modulu m, resp. typu grupy a základu z.
- Každý z účastníků si zvolí svůj exponent e (nesoudělný s modulem m).
- Každý z účastníků umocní modulárně základ na svůj exponent a výsledek pošle dalšímu účastníkovi.
- Algoritmus končí, když je každý z původních základů zpracován každým účastníkem.

Princip komunikace tří účastníků pomocí Diffie-Hellmanova algoritmu