A Diffie -Hellman protokoll ( Eng. Diffie-Hellman kulcscsere protokoll, DH ) egy olyan kriptográfiai protokoll , amely lehetővé teszi két vagy több fél számára, hogy megosztott titkos kulcsot szerezzenek olyan kommunikációs csatorna segítségével, amely nem védett a meghallgatástól. Az így kapott kulcsot a további cserék titkosítására használják szimmetrikus titkosítási algoritmusok segítségével .
A Diffie és Hellman által javasolt nyilvános kulcs-elosztási séma igazi forradalmat hozott a titkosítás világában, mivel megszüntette a klasszikus kriptográfia fő problémáját - a kulcselosztás problémáját.
Tiszta formájában a Diffie-Hellman algoritmus sebezhető a kommunikációs csatornában történő adatmódosításokkal szemben, beleértve a „ Man-in-the-middle (man in the middle) ” támadást is, így az ezt használó sémák további egy- vagy kétirányú támadást használnak. -way hitelesítési módszerek .
A 20. századi kriptográfiában nagy problémát jelentett a kulcs nyílt csatornákon történő továbbítása. De ez a probléma a Diffie-Hellman algoritmus megjelenése után megoldódott. Ez az algoritmus lehetővé tette a fő kérdés megválaszolását: "Hogyan lehet titkosított üzenetek cseréje során elkerülni egy titkos dekódoló kód továbbítását, amely általában nem kevesebb, mint maga az üzenet?" A Diffie-Hellman kulcsok nyilvános terjesztése lehetővé teszi a rendszerfelhasználók számára, hogy titkos adatok cseréje nélkül alakítsanak ki egy megosztott titkos kulcsot.
A nyilvános kulcsú kriptográfia alapjait Whitfield Diffie és Martin Hellman , egymástól függetlenül Ralph Merkle dolgozta ki .
Hozzájárulásuk a kriptográfiához az volt, hogy kijelentették, hogy a kulcsok – egy titkosítási kulcs és egy dekódoló kulcs – párban is használhatók, feltéve, hogy a nyilvánosan továbbított titkosítási kulcs tartalmából lehetetlen meghatározni a visszafejtési kulcs tartalmát. Diffie és Hellman először 1976-ban mutatta be ezt az ötletet az Országos Számítógépes Konferencián, majd néhány hónappal később megjelent a New Directions in Cryptography című alapművük [1] .
Egy évvel később feltalálták az első aszimmetrikus titkosítási algoritmust, az RSA -t , amely megoldotta a nem biztonságos csatornán keresztüli kommunikáció problémáját.
2002-ben Martin Hellman írta :
Ezt a rendszert... azóta Diffie-Hellman algoritmusként ismerik. Amikor azonban a rendszert először papíron írtuk le Diffie és jómagam, ez egy nyilvános kulcsú elosztórendszer volt, amelyet Merkle alkotott meg, és ezért "Diffie-Hellman-Merkle algoritmusnak" kell nevezni, ha nevekkel társítják. Remélem, ez a kis változtatás segít felismerni Merkle egyenlő hozzájárulását a nyilvános kulcsú kriptográfia feltalálásához.
A most lejárt 4 200 770 számú amerikai egyesült államokbeli szabadalomban három szerző szerepel ennek az algoritmusnak a megalkotójaként: Hellman, Diffie és Merkle.
Csak 1997 decemberében jelent meg frissített információ arról, hogy Malcolm Williamson már 1974-ben feltalált egy matematikai algoritmust, amely a kitevők egymás utáni hatványozása során történő kommutativitására épül ( ). Ezt a módszert a Diffie-Hellman algoritmus analógjának nevezhetjük.
Tegyük fel, hogy két előfizető van: Alice és Bob. Mindkét előfizető ismer két és számot , amelyek nem titkosak, és más érdeklődők számára is ismertek. Mások számára ismeretlen titkos kulcs létrehozása érdekében mindkét előfizető nagy véletlenszerű számokat generál: Alice - number , Bob - number . Alice ezután kiszámítja az osztás maradékát [3] (1):
(egy)és elküldi Bobnak, és Bob kiszámítja az osztás maradékát (2):
(2)és odaadja Alice-nek. Feltételezzük, hogy a támadó mindkét értéket megszerezheti, de nem módosíthatja azokat (azaz nincs mód arra, hogy beavatkozzon az átviteli folyamatba).
A második szakaszban Alice a birtokában lévő és a hálózaton keresztül kapott adatok alapján kiszámítja az értéket (3):
(3)Bob a kapott és a hálózaton keresztül kapott adatok alapján kiszámítja az értéket (4):
(négy)Amint látja, Alice és Bob ugyanazt a számot kapta (5):
(5)Titkos kulcsként használhatják, mivel itt a támadó gyakorlatilag megoldhatatlan (ésszerű időn belül) problémával szembesül, hogy a (3) vagy (4) az elfogott és a számokat kellően nagyra választva kiszámolja (3) vagy (4). Az algoritmus működését a [4] ábra mutatja be .
Amikor az algoritmus fut, mindkét oldal:
A gyakorlati megvalósításokban 10100 -as nagyságrendű és 10300 - as nagyságrendű p számokat használunk a és b -hez . A g számnak nem kell nagynak lennie, és általában az első tízen belül van.
Éva kriptoanalitikus. Beolvassa Bob és Alice továbbítását, de nem változtatja meg üzeneteik tartalmát [6] .
|
|
|
A Diffie-Hellman algoritmus használata nem korlátozódik két résztvevőre. Korlátlan számú felhasználóra alkalmazható. Vegyünk egy olyan helyzetet, amikor Alice, Bob és Carol együtt generálnak egy kezdőkulcsot. Ebben az esetben a műveletek sorrendje a következő lesz [7] :
Minden számítás modulo p
Ha valaki hallgatja a kommunikációs csatornát, akkor láthatja g a mod p , g b mod p , g c mod p , g ab mod p , g ac mod p és g bc mod p , de nem fog képes legyen a g abc mod p reprodukálására e számok tetszőleges kombinációjával.
Ahhoz, hogy ez az algoritmus hatékonyan alkalmazható legyen emberek nagy csoportjára, két alapelvet kell betartani:
A Diffie-Hellman algoritmus nyilvános kulcsú titkosításban is használható. Ebben az esetben az általános séma hasonló marad a fentihez, de kis eltérésekkel. Alice nem adja át közvetlenül a p, g és A értékeit Bobnak, hanem előzetesen közzéteszi őket nyilvános kulcsaként. Bob elvégzi a számításból a rá eső részét, majd egy szimmetrikus algoritmussal titkosítja az üzenetet K-t kulcsként használva, és elküldi a rejtjelezett szöveget Alice-nek a B értékével együtt.
A gyakorlatban a Diffie-Hellman algoritmust nem használják ilyen módon. Ezen a területen a domináns nyilvános kulcsú algoritmus az RSA. Ez inkább kereskedelmi megfontolásokból adódik, mivel az RSA Data Security hozta létre a hitelesítési hatóságot. Emellett a Diffie-Hellman algoritmus nem használható tanúsítványok aláírásakor [4] .
Ha létezik felhasználói közösség, akkor mindegyik felhasználó közzéteheti az X= mod n nyilvános kulcsot egy közös adatbázisban. Ha Alice kommunikálni akar Bobbal, meg kell szereznie Bob nyilvános kulcsát, és elő kell állítania a közös titkukat. Alice titkosíthatja az üzenetet a generált privát kulccsal, és elküldheti Bobnak. Bob kibontja Alice nyilvános kulcsát, és megtalálja a megosztott titkot.
Mindegyik felhasználópár saját egyedi titkos kulcsát használhatja anélkül, hogy adatcserét igényelne a felhasználók között. Ebben az esetben minden nyilvános kulcsot hitelesíteni kell, hogy kizárjuk a "középen lévő embert" [4] .
A Diffie-Hellman algoritmus kriptográfiai erőssége (azaz adott p, g és ) kiszámításának bonyolultsága a diszkrét logaritmus-probléma várható összetettségén alapul.
A Diffie-Hellman Protokoll kiválóan képes ellenállni a passzív támadásoknak, de ha egy ember a közepén támadást hajtanak végre, akkor nem fog ellenállni. Valójában a protokollban sem Alice, sem Bob nem tudja megbízhatóan meghatározni, hogy ki a beszélgetőpartnerük, így teljesen elképzelhető egy olyan eset, amelyben Bob és Alice kapcsolatot létesített Malloryval, aki Bobnak adja ki magát Alice-nek, és Alice bemutatkozik. hogy Bob. És akkor a Diffie-Hellman protokoll helyett valami hasonlót kapunk a következőkhöz:
Lépés | Alice | Mallory | Bab |
---|---|---|---|
egy | g a → | g a | |
2 | g n ← | gn_ _ | |
g an | g an | ||
3 | g m → | g m | |
négy | g b ← | gb_ _ | |
g mb | g mb |
Vagyis Mallory kap egy megosztott kulcsot Alice-szel (aki azt hiszi, hogy Bob), és egy közös kulcsot Bobbal (aki azt hiszi, hogy Alice). Ezért Alice-től bármilyen üzenetet fogadhat Bobnak, dekódolhatja egy kulccsal, elolvashatja, titkosíthatja egy kulccsal, és elküldheti Bobnak. Így a hamisítás nagyon sokáig észrevétlen marad [3] .
A megosztott kulcs erősségét a Diffie-Hellman protokollban úgy biztosítjuk, hogy a megadott számokból és az értékből számítjuk az értéket . Ezt a problémát számítási Diffie-Hellman problémának nevezik [8] .
Egy ilyen megfogalmazás a probléma általános megfogalmazása egy véges mezőben ; az általános esetet képviseli; Diffie-Hellman esetében egy speciális esetet használnak. Ha a Diffie-Hellman-probléma könnyen megoldható lenne, akkor az értéket a , , és számok ismeretében lehetne megtalálni , amelyek a protokoll részét képezik. Feltételezve, hogy az ellenség képes információkat elkapni, feltételeznünk kell, hogy ezek a számok nem titkok számára. A Diffie-Hellman probléma a diszkrét logaritmus kiszámításának bonyolultságán alapul [1] .
A diszkrét logaritmus hasonló a valós számok területén szokásos logaritmushoz. Ellentétben az utolsó feladattal, amelyben a megoldás közelítő, a diszkrét logaritmus számítási feladatának van pontos megoldása.
Amint az már világossá vált, a számítási komplexitás elmélete a modern kriptográfia középpontjában áll. Ez azt jelenti, hogy a nyilvános kulcsú kriptorendszerek erőssége feltételes, és bizonyos problémák megoldásának összetettségétől függ. Mindez oda vezet, hogy a Diffie-Hellman-probléma és a diszkrét logaritmus probléma megoldhatatlannak tekinthető.
Intuitív módon világos, hogy ezeknek a problémáknak a megoldásának összetettsége függ az Fq mező méretétől és a paraméterek megválasztásától (nyilvános g paraméter és titkos számok a és b). Nyilvánvalóan ezeknek a problémáknak a kis változatai megoldhatók. A megszerzett információk lehetővé teszik, hogy pontos feltételezéseket fogalmazzunk meg a Diffie-Hellman probléma és a diszkrét logaritmus probléma megoldhatatlanságáról.
1. Feltevés – A Diffie-Hellman probléma megoldhatatlanságának feltételei
A Diffie-Hellman probléma megoldására szolgáló algoritmus egy valószínűségi polinomiális A algoritmus, amelynek előnye ε > 0:
ε = Prob[ A(desc( ), g, , )].ahol az A bemeneti adat a definícióban (Computational Diffie-Hellman probléma) van megadva (a végső mezőben).
Legyen IG egy variánsgenerátor, amely bemenetként egy számot kap , amelynek futási ideje egy polinom a k paraméterben, és az eredmény 1) desq( ), ahol |q| = k, és 2) a g ∈ generáló elem .
Azt fogjuk mondani, hogy az IG generátor akkor teljesíti a Diffie-Hellman-probléma megoldhatatlanságának feltételeit, ha az IG( ) változataira nincs olyan ε > 0 előnnyel rendelkező megoldási algoritmus, amely nem elhanyagolható minden kellően nagy k számhoz képest.
2. Feltevés – A diszkrét logaritmus probléma megoldhatatlanságának feltételei
A diszkrét logaritmus probléma megoldására szolgáló algoritmus egy valószínűségi polinomiális A algoritmus, amelynek előnye ε > 0:
ahol az A bemeneti adat a definícióban (Computational Diffie-Hellman probléma) van megadva (a végső mezőben).
Legyen IG egy variánsgenerátor, amely bemenetként egy számot kap , amelynek futási ideje egy polinom a k paraméterben, és az eredmény 1) desq( ), ahol |q| = k, és 2) a g ∈ generáló elem és 3) a h ∈ elem
Azt fogjuk mondani, hogy az IG generátor akkor teljesíti a Diffie-Hellman-probléma megoldhatatlanságának feltételeit, ha az IG( ) változataira nincs olyan ε > 0 előnnyel rendelkező megoldási algoritmus, amely nem elhanyagolható minden kellően nagy k számhoz képest.
Más szóval, itt azt feltételezzük, hogy ezeknek a problémáknak véges mezőkben szinte minden kellően nagy változata nem rendelkezik hatékony megoldási algoritmussal. Ezeknek a problémáknak a megoldható gyenge változatainak aránya elenyésző.
A paraméterek megválasztása fontos a protokollbiztonság szempontjából. Sok megvalósítás kevés népszerű algoritmus-paraméterkészletet használ. 2016-ban bemutattak egy olyan munkát, amely megmutatta a Diffie-Hellman (DH) algoritmushoz speciális véges mezők készítésének lehetőségét. A kutatók által választott speciális forma p prímszáma (1024 bites méretű) normálisnak tűnik a felhasználók számára, de több nagyságrenddel leegyszerűsíti az SNFS módszerrel végzett számítások bonyolultságát a diszkrét logaritmus probléma megoldásához. A támadás elleni küzdelem érdekében a modul méretének 2048 bitre való növelését javasolják [9] [10] .