Diffie-Hellman protokoll

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. július 27-én felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

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 .

Történelem

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.

Az algoritmus leírása [2]

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:

  1. véletlenszerű természetes számot generál a -  a privát kulcs
  2. a távoli oldallal együtt beállítja a nyilvános p és g paramétereket (általában a p és g értékeket generálják az egyik oldalon, és adják át a másiknak), ahol p egy véletlenszerű prímszám (p-1)/2 véletlenszerű prímszám is legyen (a nagyobb biztonság érdekében) [5] g egy modulo p primitív gyök (szintén prímszám)
  3. kiszámítja A nyilvános kulcsát a privát kulcson végzett transzformáció segítségével A = g a mod p
  4. nyilvános kulcsokat cserél egy távoli féllel
  5. kiszámítja a K megosztott titkos kulcsot a távoli B fél nyilvános kulcsának és a titkos kulcsának a felhasználásával K = B a mod p K mindkét oldalon egyenlő, mert: B a mod p = (g b mod p) a mod p = g ab mod p = (g a mod p) b mod p = A b mod p

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.

Példa

Éva kriptoanalitikus. Beolvassa Bob és Alice továbbítását, de nem változtatja meg üzeneteik tartalmát [6] .

Alice
Tudja Nem tudja
p = 23 b = ?
g = 5
a = 6
A = 5 6 mod 23 = 8
B = 5 b mod 23 = 19
s = 19 6 mod 23 = 2
s = 8 b mod 23 = 2
s = 19 6 mod 23 = 8 b mod 23
s = 2
Bob
Tudja Nem tudja
p = 23 a = ?
g = 5
b = 15
B = 5 15 mod 23 = 19
A = 5 a mod 23 = 8
s = 8 15 mod 23 = 2
s = 19 a mod 23 = 2
s = 8 15 mod 23 = 19 a mod 23
s = 2
Valaha
Tudja Nem tudja
p = 23 a = ?
g = 5 b = ?
s = ?
A = 5 a mod 23 = 8
B = 5 b mod 23 = 19
s = 19 a mod 23
s = 8 b mod 23
s = 19 a mod 23 = 8 b mod 23

Diffie-Hellman algoritmus három vagy több résztvevővel

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

  1. A felek megegyeznek a p és g algoritmus paramétereiben
  2. A felek, Alice, Bob és Carol generálják a kulcsaikat - a , b és c .
  3. Alice kiszámolja a g a mod p -t és elküldi Bobnak
  4. Bob kiszámítja (g a ) b mod p = g ab mod p és elküldi Carolnak
  5. Carol kiszámítja (g ab ) c mod p = g abc mod p és így megkapja a megosztott titkos kulcsot
  6. Bob kiszámítja a g b mod p -t, és elküldi Carolnak
  7. Carol kiszámítja (g b ) c mod p = g bc mod p és elküldi Alice-nek
  8. Alice kiszámítja (g bc ) a mod p = g bca mod p = g abc mod p  a megosztott titok
  9. Carol kiszámolja a g c mod p -t és elküldi Alice-nek
  10. Alice kiszámítja (g c ) a mod p = g ca mod p és elküldi Bobnak
  11. Bob kiszámítja (g ca ) b mod p = g cab mod p = g abc mod p és megkapja a megosztott titkot is

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:

Nyilvános kulcsú titkosítás

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] .

Kulcs beszerzése kulcs továbbítása nélkül

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] .

Kriptográfiai erősség

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 Diffie-Hellman probléma és a diszkrét logaritmus probléma

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] .

Számítási Diffie-Hellman probléma (véges mezőben)

KEZDETI ADATOK: desq  : a célmező leírása  ; g∈ a csoport generáló eleme  ; , ∈ , ahol 0 < a, b < q. EREDMÉNY:

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 feladat (véges mezőben)

KEZDETI ADATOK: desq  : a célmező leírása  ; g∈ a csoport generáló eleme  ; h ∈ EREDMÉNY: Egy egyedi szám a < q, amely kielégíti a h = feltételt . Az a egész számot h -val jelöljük .

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:

ε = Prob[ A(desc( ), g, h)]

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ő.

Kritika

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] .

Lásd még

Jegyzetek

  1. 1 2 Diffie W. , Hellman M. E. New Directions in Cryptography  // IEEE Trans . inf. Elmélet / F. Kschischang - IEEE , 1976. - 1. kötet. 22, Iss. 6. - P. 644-654. — ISSN 0018-9448 ; 1557-9654 - doi:10.1109/TIT.1976.1055638
  2. Értelem. Hogyan működik az aszimmetrikus titkosítás egyszerű nyelven archiválva 2018. február 4-én a Wayback Machine -nél . 2012. május 20.
  3. 1 2 Bruce Schneier "Alkalmazott kriptográfia"
  4. 1 2 3 Titkosítási aszimmetrikus módszerek 8. fejezet ("Nyilvános kulcsú titkosítás", "Kulcscsere kulcscsere nélkül", "Titkosított biztonság", "Diffie-Hellman-probléma és diszkrét logaritmus-probléma")
  5. Bruce Schneier „Alkalmazott kriptográfia” 22. fejezet, 22.1.
  6. Kriptográfiai berendezés és módszer Martin E. Hellman, Bailey W. Diffie és Ralph C. Merkle, 4 200 770 számú amerikai egyesült államokbeli szabadalom, 1980. április 29.)
  7. Az ANSI X9.42 összefoglalása: Szimmetrikus kulcsok megállapodása diszkrét logaritmusos kriptográfiát használva[holt link] (64K PDF fájl) (Az ANSI 9 szabványok leírása)
  8. Diffie-Hellman kulcscsere – Egy nem matematikus magyarázata, Keith Palmgren
  9. Az NSA észlelhetetlen "csapóajtókat" helyezhet el több millió titkosítókulcsban. A technika lehetővé teszi a támadók számára a Diffie-Hellman által védett adatok passzív visszafejtését.  (angol) , ARS Technica (2016. október 11.). Az eredetiből archiválva : 2016. október 13. Letöltve: 2016. október 13.
  10. Joshua Fried; Pierrick Gaudry, Nadia Heninger, Emmanuel Thomé. Egy kilobites rejtett SNFS diszkrét logaritmus számítás  . Eprint IACR (2016). Letöltve: 2016. október 13. Az eredetiből archiválva : 2016. október 13..

Források