A szimmetrikus kulcsos algoritmusok legnagyobb problémája a kulcs biztonságos cseréje két fél között. Ha a kulcsot nem titkosított csatornán továbbítjuk, akkor fennáll a veszélye, hogy a kulcsot valaki lemásolhatja és illetéktelenül férhet hozzá az adatokhoz.
Ezt a problémát oldja meg az 1976-ban a Whitfield Diffie és Martin Hellman által kidolgozott Diffie–Hellman kulcscsere algoritmus, ami a nyilvános kulcsú kriptográfia úttörőjének számít. Martin Hellman 2002-ben javasolta, hogy nevezzék át az algoritmust Diffie–Hellman–Merkle-re, mivel az algoritmusuk a Ralph Merkle által kidolgozott nyilvános kulcsú kriptográfián alapul.
A nyilvános kulcsú kriptográfia vagy más néven az aszimmetrikus kriptográfia olyan kriptográfiai rendszer, amely kulcspárokat használ. Mindegyik pár egy egyedi nyilvános kulcsból (amelyet mások is ismerhetnek) és egy egyedi privát kulcsból (amelyet a tulajdonoson kívül nem ismerhet) áll. Az ilyen kulcspárok létrehozása a kriptográfiai algoritmusoktól függ, amelyek matematikai problémákon alapulnak, amelyeket egyirányú függvényeknek neveznek. A hatékony biztonság megköveteli, hogy a privát kulcsot titkosan tartsák, míg a nyilvános kulcs nyíltan terjeszthető a biztonság veszélyeztetése nélkül.
Az algoritmus működésének megértéséhez szükségünk lesz két kommunikálni kívánó félre. Ezeket publikus kulcsos kriptográfiai leírásokban Alice-nek és Bob-nak szokás nevezni, de bármilyen névvel működne a dolog, mivel csak szemléltetésről van szó. Viszont az Alice és Bob karakterek 1978 óta használtak ilyen leírásokban, így én is ennél maradok.
A leírás során a matematikai dolgokba nagyon nem merülök el, csak annyira amennyire szükséges. Nézzük tehát meg a kulcscsere folyamatát:
- Alice és Bob első körben publikusan megállapodik egy
pésgértékről. Példáulp= 23 ésg= 5.gesetén fontos, hogy a választottpszám primitív gyöke1 legyen, illetvepszám prím kell, hogy legyen. 23 esetén az 5 megfelel ennek a kritériumnak. - Ezt követően Alice választ egy titkos egész számot. Ezt nevezzük
a-nak és legyen például az értéke 7. Ezt követően Alice elküldi Bob-nak azAszámot, amit a következőképpen kapunk meg:A=gamodp. Behelyettesítve a példa értékeinketA= 57 mod 23 kifejezést kapjuk, ami azt eredményezi, hogyA = 17. - Bob is válszt egy titkos egész számot. Ez legyen
bés legyen az általa választott érték például 10. Ezt követően Bob elküldi Alice-nak aBszámot, amit hasonlóan kapunk meg:B=gbmodp. Szintén behelyettesíünk (B= 510 mod 23), majd elvégezve a műveleteket megkapjuk, hogyB = 9. - Ezt követően Alice kiszámolja
sértéket, amit a következő módon kap meg:s=Bamodp(s= 97 mod 23 = 4) - Bob is kiszámolja
sértékét, amit ő így tud megtenni:s=Abmodp(s= 1710 mod 23 = 4)
Az 5. lépés után s = 4 eredmény jött ki mind a két oldalon. A rendszer biztonságát az adja, hogy a és b értékeinek meghatározása ga mod p és és gb mod b ismeretében hatékonyan nem lehetséges. A példában egy kis prím számot alkalmaztunk, ami a lehetőségek számát 23-ra redukálta. A gyakorlati kulcscsere esetén azonban p értéke 600 számjegy körüli szokott lenni. A rendszer biztonságosságához g értékének nem kell nagynak lennie egyáltalán.
Biztonság
A nyílt kulcsos kriptográfia alapvetően akkor tekinthető biztonságosnak, ha egy kulcspár egyik tagja sincs felhasználva egy másik kulcspár részeként. Ha a választott privát kulcsunkhoz több eltérő publikus kulcs is tartozik, akkor a privát kulcs kitalálása a szinte lehetetlen kategóriából egyből a triviális kategóriába esik.
A Diffie–Hellman csere algoritmus önmagában nem biztosítja a kommunikáló felek hitelesítését. Ez azt jelenti, hogy Man in the middle támadás ellen nem védett. Mallory (a középső támadást végrehajtó aktív támadó) két különböző kulcscserét hozhat létre, az egyiket Alice-szel, a másikat Bobbal, ami gyakorlatilag Alice-nek álcázza magát Bobnak, és fordítva, lehetővé téve számára, hogy visszafejtse, majd újra titkosítsa a közöttük átadott üzeneteket.
Egy ilyen támadás esetén Mallorynak a kommunikációban végig középen kell lennie és aktívan dekódolni és újra titkosítani az üzeneteket, amikor Alice és Bob kommunikál. Ha ez az aktív folyamat megszakad, akkor Alice és Bob számára nyilvánvalóvá válik, hogy hogy az összes privát beszélgetésüket lehallgatta és dekódolta valaki a csatornán.
Éppen ezért a hitelesítést meg kell oldani a felek között például digitális aláírás ellenőrzéssel vagy egy olyan kulcscserével, ami azonosítást is tartalmaz. Ilyen például az STS protokoll, ami lényegében a digitális aláírást és a Diffie–Hellman algoritmust ötvözi.
-
Ha n>1 természetes szám, akkor g primitív gyök modulo n, ha a g, g2,…,gφ(n) hatványok különböző maradékot adnak n-nel osztva, azaz g rendje modulo n pontosan φ(n). Itt φ(n) az Euler-féle φ-függvény. Más szóval, g hatványai a redukált maradékrendszert adják modulo n. Ha például n=5, akkor g=2 megfelel: hatványai rendre 2,4,3,1 modulo 5. Ekkor, ha gk ≡ a (mod n), akkor k-t g alapú indexnek vagy diszkrét logaritmusnak nevezik. Más szavakkal, g a modulo n maradékosztályok multiplikatív csoportjának generátora. – https://hu.wikipedia.org/wiki/Primit%C3%ADv_gy%C3%B6k↩