Diffie-Hellman
het systeem is gebaseerd op het idee dat twee gesprekspartners gezamenlijk een gedeelde sleutel kunnen genereren zonder dat een indringer, die naar de communicatie luistert, deze kan verkrijgen.
hiervoor worden twee openbare nummers gekozen en, elke gesprekspartner, een geheim nummer. Met behulp van een wiskundige formule, die exponentiatie omvat, maakt elke gesprekspartner een reeks bewerkingen met de twee publieke nummers en hun geheime nummer. Vervolgens wisselen de gesprekspartners de resultaten publiekelijk uit. In theorie is het omkeren van deze functie net zo moeilijk als het berekenen van een discrete logaritme (een sextillion keer duurder dan de exponentiatie gebruikt om de getallen te transformeren). Daarom wordt gezegd dat dit getal het resultaat is van het toepassen van een eenrichtingsfunctie op het geheime getal.
dan gebruiken beide gesprekspartners afzonderlijk een wiskundige formule die de twee getransformeerde getallen combineert met hun geheime getal en uiteindelijk komen de twee tot hetzelfde resultaat nummer, dat de gedeelde sleutel zal zijn.
Detailed descriptionEdit
voor twee partijen Alice en Bob, die proberen om een geheime sleutel vast te stellen, en een tegenstander Mallory, de basisversie is als volgt:
- Stel een neef p {\displaystyle p}
en een generator g ∈ Z p ∗ {\displaystyle g \ in \ mathbf {Z} _{p}^{*}}
(). Deze zijn openbaar, niet alleen bekend bij de partijen Alice en Bob, maar ook bij de tegenstander Mallory.
- Alice kiest A ∈ Z p-1 {\displaystyle a \ in \ mathbf {Z} _{p-1}}
berekent willekeurig A = g a mod p {\displaystyle A=G^{A}\; {\bmod {\;}}p}
, en stuurt Een {\displaystyle A}
Bob
- Bob kiest b ∈ Z p − 1 {\displaystyle b\in \mathbf {Z} _{p-1}}
willekeurige berekent B = g b mod p {\displaystyle B=g^{b}\;{\bmod {\;}}p}
, en stuurt B {\displaystyle B}
Alice
Merk op dat zowel A en B kan worden berekend door de waarde K = g ⋅ 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}
Als beide partijen kunnen bij het berekenen van een K {\displaystyle K}
, dan kunnen we het gebruiken als een gedeelde sleutel.
aanvalsedit
passieve aanvalsedit
een Mallory-tegenstander die p, g, A en B bezit, kon het gedeelde geheim berekenen als hij ook een van de privéwaarden (a of b) had. Haal een a of b uit A of B omkeerfunctie ( a = l o g d I S c P ( A ) {\displaystyle a=\operatorname {log\;disc} _{p}(a)}
en b = l O g d I S c P ( B) {\displaystyle b=\operatorname {log\; disc} _{p}(B)}
) is het probleem van de discrete logaritme in Z p ∗ {\displaystyle \ mathbf {Z} _{p}^{*}}
, een probleem dat wordt verondersteld hardnekkig computationeel wanneer p is een priemgetal groter dan 200 of meer cijfers, en die niet voldoen aan bepaalde kenmerken slopende.
actieve aanvalsedit
het protocol is gevoelig voor actieve Man-in-the-middle aanvallen. Als de communicatie wordt onderschept door een derde partij, kan dit worden doorgegeven als de afzender tegenover de ontvanger en vice versa, omdat er geen mechanisme beschikbaar is om de identiteit van de deelnemers aan de communicatie te valideren. Zo kon de” man in het midden ” het eens worden over een sleutel met elke deelnemer en de gegevens tussen hen doorsturen, luisteren naar het gesprek in beide richtingen. Zodra de symmetrische communicatie is vastgesteld, de aanvaller moet blijven onderscheppen en wijzigen van het verkeer in het midden, zodat ze niet merken. Merk op dat Voor de aanval operationeel te zijn, de aanvaller moet weten de symmetrische encryptie methode die zal worden gebruikt. Vertrouwen op het verbergen van symmetrische encryptie-algoritme voldoet niet aan de principes van Kerckhoffs (de effectiviteit van het systeem mag niet afhangen van het ontwerp blijft geheim).
om dit type aanval te voorkomen, worden meestal een of meer van de volgende technieken gebruikt:
- tijdcontrole.
- pre-authenticatie van de partijen. Gebruik bijvoorbeeld authenticatie in onderliggende laagprotocol. We kunnen eerst een TLS verbinding maken en het Diffie-Hellman algoritme op die laag toepassen.
- authenticatie van de inhoud. We kunnen bijvoorbeeld MAC gebruiken over de inhoud van berichten.
- de publieke sleutels versleutelen met een (asymmetrisch) publieke sleutelalgoritme, waarbij het Man-in-the-middle probleem wordt vermeden en op zijn beurt wordt gecontroleerd of de publieke sleutel anders is dan 0 en 1.
- gebruikmakend van een derde partij (Carol) met wie Alice of Bob een beveiligd kanaal onderhouden. Deze derde partij kan de man-in-the-middle
detecteren als Alice of Bob worden beluisterd / gewijzigd, simpelweg door beide uit te dagen voor een test die in die test de publieke sleutel van de otro.Si Mallory misrepresenteert de Alice-Bob communicatie, en ook de Alice-Carol, hij kan niet misrepresenteren de Bob-Carol secure channel en zal worden gedetecteerd.En als hij de Alice-Bob en de Bob-Carol verkeerd voorstelt, kan hij de Alice-Carol niet verkeerd voorstellen (per definitie moet er een veilig kanaal zijn tussen twee van de drie, ook al worden de andere twee kanalen door Mallory verkeerd voorgesteld). Dit betekent dat de Diffie-Hellman methode 100% veilige multi-node netwerken kan creëren, te beginnen met slechts twee eerder beveiligde nodes. Deze methode wordt ook gebruikt om kanalen die worden vermoed onveilig te testen.
EjemploEditar
|
|
|
voorbeeld met encryption implementationEdit
de noodzaak voor dit voorbeeld is: Bob moet een versleutelingstekst naar Alice sturen, maar zonder de encryptiesleutel te delen. Hoe doet hij het?
- Alice kiest een geheim getal a=6, Het priemgetal p=23 en de basis g=5. Vervolgens stuurt hij Bob Alice ‘ s publieke sleutel (ga mod p), p en g:
- 56 mod 23 = 8.
- 23
- 5
- Bob kiest een geheim getal b = 15, dan berekent Bob de common encryption key (Ga mod p)b mod p
- 815 mod 23 = 2.
- Bob versleutelt, met een symmetrische cipher zoals AES, de platte tekst met behulp van de gegenereerde encryptiesleutel.
- versleutelde tekst = symmetrische Cipher (platte tekst, 2)
- Bob stuurt Alice de versleutelde tekst en Bob ‘ s publieke sleutel (GB mod p)
- 515 mod 23 = 19.
- versleutelde tekst
- Alice berekent (GB mod p) naar mod p
- 196 mod 23 = 2.
- Alice gebruikt die gegenereerde versleutelingssleutel om de gegevens te decoderen die door Bob
- zijn verzonden Cleartext = symmetrische Decryptor (versleutelde tekst), 2 )
veel grotere waarden van a, b en p zouden nodig zijn om dit voorbeeld veilig te maken. Aangezien het heel eenvoudig is om alle mogelijke waarden van gab mod 23 te testen (Er zullen hoogstens 22 waarden zijn, zelfs als a en b grote getallen zijn).
duidelijk Alice ‘ s behoefte om Bob de gecodeerde informatie wordt ook gedekt door de implementatie.
Leave a Reply