Diffie-Hellman
a rendszer azon az elképzelésen alapul, hogy két beszélgetőpartner közösen generálhat egy megosztott kulcsot anélkül, hogy betolakodó lenne, aki hallgatja a kommunikációt, képes lenne megszerezni.
ehhez két nyilvános számot választanak, mindegyik beszélgetőpartnernek pedig egy titkos számot. Egy matematikai képlet segítségével, amely magában foglalja az exponenciálást, minden beszélgetőpartner egy sor műveletet hajt végre a két nyilvános számmal és azok titkos számával. Ezután a beszélgetőpartnerek nyilvánosan cserélik az eredményeket. Elméletileg ennek a függvénynek a megfordítása ugyanolyan nehéz, mint egy diszkrét logaritmus kiszámítása (sextillion-szor drágább, mint a számok átalakításához használt hatványozás). Ezért mondják, hogy ez a szám az egyirányú függvénynek a titkos számra történő alkalmazásának eredménye.
ezután mindkét beszélgetőpartner külön-külön használ egy matematikai képletet, amely egyesíti a két transzformált számot titkos számukkal, és végül a kettő ugyanazt az eredményszámot kapja, amely a megosztott kulcs lesz.
részletes leírásszerkesztés
két fél Alice és Bob, akik megpróbálják létrehozni egy titkos kulcsot, és egy ellenfél Mallory, az alap verzió a következő:
- állítson be egy unokatestvért p {\displaystyle p}
és egy generátor g \ z p \ {\displaystyle g \ in \ mathbf {Z} _ {p}^{*}}
(). Ezek nyilvános, ismert, nem csak a felek Alice és Bob, hanem az ellenfél Mallory.
- Alice választ egy \ z p-1 {\displaystyle A \in \ mathbf {Z} _ {p-1}}
véletlenszerűen kiszámítja A = g a mod p {\displaystyle a = g^{a}\; {\bmod {\;}} p}
, és elküldi a {\displaystyle A}
Bob
- Bob kiválasztja a b-t a b-1 {\displaystyle b \ in \ mathbf {Z} _ {p-1}}
véletlenszerű számítások B = g b mod p {\displaystyle b=g^{b}\;{\bmod {\;}}p}
, és elküldi B {\displaystyle B}
Alice
vegye figyelembe, hogy mind a, mind B kiszámítható a K = G érték alapján b mod p {\displaystyle k=g^{a\cdot B}\;{\bmod {\;}}p}
. En efecto, lo podemos demostrar usando las propiedades del grupo Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}
: Para Alice: B a mod p = ( g b mod p ) a mod p = ( ( g b mod p ) ( g b mod p ) ⋯ ( g b mod p ) ⏞ a ) mod p = g b ⋅ a mod p = g a ⋅ b mod p = K {\displaystyle B^{a}\;\;{\bmod {\;}}\;p=(g^{b}\;{\bmod {\;}}p)^{a}\;{\bmod {\;}}p=(\overbrace {(g^{b}\;{\bmod {\;}}p)(g^{b}\;{\bmod {\;}}p)\cdots (g^{b}\;{\bmod {\;}}p)} ^{a})\;{\bmod {\;}}p=g^{b\cdot a}\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}
Para Bob: A b mod p = ( g a mod p ) b mod p = ( ( g a mod p ) ( g a mod p ) ⋯ ( g a mod p ) ⏞ b ) mod p = g a ⋅ b mod p = K {\displaystyle A^{b}\;{\bmod {\;}}p=(g^{a}\;{\bmod {\;}}p)^{b}\;{\bmod {\;}}p=(\overbrace {(g^{a}\;{\bmod {\;}}p)(g^{a}\;{\bmod {\;}}p)\cdots (g^{a}\;{\bmod {\;}}p)} ^{b})\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}
mivel mindkét fél kiszámíthatja a K {\displaystyle k}
, akkor használhatjuk megosztott kulcsként.
attacksEdit
passzív attacksEdit
egy Mallory-ellenfél, P, g, A és B birtokában, kiszámíthatja a megosztott titkot, ha rendelkezik az egyik privát értékkel (a vagy b). A vagy b lekérése a vagy B irányváltó függvényből (a = l O g d i s c P (a) {\displaystyle a= \ operatorname {log\; disc} _{p}(a)}
és B=\L O g d i s c P P ( B) {\displaystyle b=\operatorname {log\; disc} _{p}(B)}
) a diszkrét logaritmus problémája z p-ben ({\displaystyle \mathbf {Z} _{p}^{*}}
, a probléma, hogy úgy vélik, megoldhatatlan számítási szempontból, amikor p egy prímszám nagyobb, mint 200 vagy több számjegy, és amelyek nem felelnek meg bizonyos jellemzők legyengítő.
Active attacksEdit
a protokoll érzékeny az aktív Man-in-the-middle támadásokra. Ha a kommunikációt egy harmadik fél lehallgatja, akkor ez továbbítható feladóként a címzett felé, és fordítva, mivel nem áll rendelkezésre mechanizmus a kommunikáció résztvevőinek személyazonosságának igazolására. Így a “középső ember” megegyezhet egy kulcsban minden résztvevővel, és továbbíthatja az adatokat közöttük, hallgatva a beszélgetést mindkét irányban. Miután a szimmetrikus kommunikáció létrejött, a támadónak folytatnia kell a középső forgalom elfogását és módosítását, hogy ne vegye észre. Vegye figyelembe, hogy ahhoz, hogy a támadás működőképes legyen, a támadónak ismernie kell a használni kívánt szimmetrikus titkosítási módszert. A szimmetrikus titkosítási algoritmus elrejtésére támaszkodva nem felel meg a Kerckhoffs elveinek (a rendszer hatékonysága nem függhet a titokban maradt tervétől).
az ilyen típusú támadások elkerülése érdekében általában a következő technikák közül egyet vagy többet használnak:
- idő ellenőrzés.
- a felek előzetes hitelesítése. Például használja az alapul szolgáló réteg protokoll hitelesítésében. Először létrehozhatunk egy TLS kapcsolatot, és alkalmazhatjuk a Diffie-Hellman algoritmust ezen a rétegen.
- A tartalom hitelesítése. Például használhatjuk a MAC-et az üzenetek tartalma felett.
- a nyilvános kulcsok titkosítása (aszimmetrikus) nyilvános kulcs algoritmussal, elkerülve a középső ember problémáját, és ellenőrizve, hogy a nyilvános kulcs nem 0 és 1.
- harmadik fél (Carol) használata, akivel Alice vagy Bob biztonságos csatornát tart fenn. Ez a harmadik fél képes észlelni a középső embert
ha Alice-t vagy Bobot hallgatják / módosítják, egyszerűen azáltal, hogy mindkettőt kihívják egy tesztre, amely az említett tesztben a otro.Si Mallory félrevezeti az Alice-Bob kommunikációt, és az Alice-Carolt is, nem tudja hamisan bemutatni a Bob-Carol biztonságos csatornát, és észlelni fogják.És ha tévesen ábrázolja az Alice-Bobot és a Bob-Carolt, akkor nem tudja félrevezetni az Alice-Carolt (definíció szerint kell lennie valamilyen biztonságos csatornának a három közül kettő között, annak ellenére, hogy a másik két csatornát Mallory hamisan képviseli). Ez azt jelenti, hogy a Diffie-Hellman módszer 100%-ban biztonságos többcsomópontos hálózatokat hozhat létre, mindössze két korábban biztonságos csomóponttól kezdve. Ezt a módszert olyan csatornák tesztelésére is használják, amelyekről feltételezhető, hogy nem biztonságosak.
EjemploEditar
|
|
|
Example with encryption implementationEdit
ennek a példának a szükségessége: Bobnak titkosítási szöveget kell küldenie Alice-nek, de a titkosítási kulcs megosztása nélkül. Hogy csinálja?
- Alice választ egy titkos számot a=6, a prímszám p=23 és az alap g=5. Ezután elküldi Bob Alice nyilvános kulcsát (ga mod p), p és g:
- 56 mod 23 = 8.
- 23
- 5
- Bob kiválaszt egy titkos számot b=15, majd Bob kiszámítja a közös titkosítási kulcsot (ga mod p)b mod p
- 815 mod 23 = 2.
- Bob szimmetrikus titkosítással, például AES-vel titkosítja a sima szöveget a generált titkosítási kulcs segítségével.
- titkosított szöveg = szimmetrikus rejtjel (egyszerű szöveg, 2)
- Bob elküldi Alice-nek a titkosított szöveget és Bob nyilvános kulcsát (gb mod p)
- 515 mod 23 = 19.
- titkosított szöveg
- Alice kiszámítja (gb mod p) a mod p
- 196 mod 23 = 2.
- Alice ezt a generált titkosítási kulcsot használja a Bob által küldött adatok visszafejtésére
- Cleartext = szimmetrikus dekódoló (titkosított szöveg, 2 )
sokkal nagyobb a, b és p értékekre lenne szükség ahhoz, hogy ez a példa biztonságos legyen. Mivel nagyon egyszerű tesztelni a gab mod 23 összes lehetséges értékét (legfeljebb 22 érték lesz, még akkor is, ha a és b nagy számok).
nyilvánvalóan Alice kell küldeni Bob a titkosított információkat is kiterjed a végrehajtás.
Leave a Reply