Diffie–Hellman

Diffie-Hellmanův algoritmus slouží k ustanovení společného symetrického klíče pro dva a více uživatelů. Klíč nelze odposlechnout. Jeho bezpečnost je postavená na principu na problému diskrétního logaritmu.

Na počátku známe modul m, prvek a a hodnotu |ax|m. Proto hledáme x. Aby x existovalo, tak musí diskrétní logaritmus existovat - jeho existenci taky neumím efektivně výpočetně zjistit.

Diffie–Hellman pro 2 uživatele

  • m je velké prvočíslo, a je celé číslo, které je generátorem násobící grupy mod m.
  • Alice a Bob se dohodnou na a , m
  • Alice si zvolí ka tak, že gcd(ka,m-1)=1.
    • Vypočte ya = |aka|m a pošle to Bobovi
  • Bob si zvolí kb tak, že gcd(kb,m-1)=1.
    • Vypočte yb |akn|m a pošle to Alici
  • Alice spočítá K=|ybka|m.
  • Bob spočítá K=|yakb|m.
  • Oba spočetli stejné číslo, protože K=|ybka|m =
    ||akb|mka|m = ||aka · kb|m = ||aka|mkb|m = |yakb|m
  • Bezpečnost: Útočník může znát :[a,m,ya,yb], ale je pro něj výpočetně nemožné zjistit ka nebo kb.

Diffie–Hellman pro více uživatelů

  • Slouží ke zřízení společného klíče pro 2+ uživatelů se sdíleným médiem
  • Klíč nelze odposlechnout (viz dále)
  • Algoritmus:
    • m je velké prvočíslo a je celé číslo. gcd(m,a)=1
    • čísla m, a se rozešlou se všem subjektům
    • každý subjekt si zvolí ki tak, že gcd(ki,m-1)=1.
    • každý subjekt vypočte yi=|aki|m:
      • odešle po sdíleném kanálu všem ostatním stem:[a,m,yi]
      • příjemci spočítají zj=|yikj|m.
      • rozešlou a takhle se to točí dokud...
      • ...není spočteno K=|ylkn|m, kde n je počet subjektů.

Související