Výmena kľúčov Diffie–Hellman

z Wikipédie, slobodnej encyklopédie

Výmena kľúčov Diffie–Hellman je matematická metóda bezpečnej výmeny kryptografických kľúčov cez verejný kanál a bola jedným z prvých protokolov s verejným kľúčom, ktoré navrhol Ralph Merkle a pomenoval ich podľa Whitfielda Diffieho a Martina Hellmana. DH je jedným z prvých praktických príkladov výmeny verejných kľúčov implementovaných v oblasti kryptografie. Toto je najstaršia verejne známa práca, ktorú v roku 1976 publikovali Diffie a Hellman, ktorá navrhla myšlienku verejného kľúča a príslušného súkromného kľúča.

Tradične bezpečná šifrovaná komunikácia medzi dvoma stranami vyžadovala, aby si najprv vymenili kľúče nejakými bezpečnými fyzickými prostriedkami, ako sú papierové zoznamy kľúčov prepravované dôveryhodným kuriérom. Metóda výmeny kľúčov Diffie–Hellman umožňuje dvom stranám, ktoré sa vopred nepoznajú, spoločne vytvoriť zdieľaný tajný kľúč cez nezabezpečený kanál (napríklad cez internet). Tento kľúč možno potom použiť na následné šifrovanie komunikácie pomocou šifry so symetrickým kľúčom.

Diffie–Hellman sa používa na zabezpečenie rôznych internetových služieb. Výskum publikovaný v októbri 2015 však naznačuje, že parametre používané v tom čase pre mnohé internetové aplikácie DH nie sú dostatočne silné, aby zabránili kompromitácii veľmi dobre financovaných útočníkov, ako sú bezpečnostné služby niektorých krajín.

Túto schému publikovali Whitfield Diffie a Martin Hellman v roku 1976, ale v roku 1997 sa ukázalo, že James H. Ellis, Clifford Cocks a Malcolm J. Williamson z GCHQ, britskej spravodajskej agentúry už v roku 1969 ukázali, ako sa dá dosiahnuť kryptografia s verejným kľúčom.

Hoci samotný protokol Diffie–Hellman pri vytváraní kľúča neoveruje identitu účastníkov komunikácie (neautentifikuje ich), poskytuje základ pre množstvo autentifikovaných protokolov a používa sa na zabezpečenie dopredného utajenia v špecifických, tzv. ephemeral režimoch Transport Layer Security (označovaných ako EDH alebo DHE v závislosti od šifrovacej sady). Dopredné utajenie znamená, že v prípade, že by niekto dešifroval predošlú komunikáciu, neznamenalo by to ohrozenie budúcej komunikácie.

Krátko na to vznikla metóda RSA, ktorá implementuje kryptografiu s verejným kľúčom pomocou asymetrických algoritmov.

Názov[upraviť | upraviť zdroj]

V roku 2002 Hellman navrhol, aby sa algoritmus volal výmena kľúčov Diffie–Hellman–Merkle ako uznanie príspevku Ralpha Merkla k vynálezu kryptografie s verejným kľúčom.

Popis[upraviť | upraviť zdroj]

Všeobecný prehľad[upraviť | upraviť zdroj]

Ilustrácia konceptu výmeny kľúčov Diffie–Hellman

Výmena kľúčov Diffie–Hellman vytvára zdieľaný šifrovací kľúč medzi dvoma stranami, ktorý možno použiť na utajenie komunikácie pri výmene údajov cez verejnú sieť. Nasledujúca analógia ilustruje koncept výmeny verejných kľúčov použitím farieb namiesto veľmi veľkých čísel:

Proces začína tým, že sa obe strany, Alica a Bob verejne dohodnú na ľubovoľnej počiatočnej farbe, ktorú netreba držať v tajnosti. V tomto príklade je farba žltá. Každý si tiež vyberie tajnú farbu, ktorú si nechá pre seba – v tomto prípade červenú a azúrovú. Rozhodujúcou súčasťou procesu je, že Alica a Bob si namiešajú svoju vlastnú tajnú farbu spolu so svojou vzájomne zdieľanou farbou, výsledkom čoho sú oranžovo-hnedé a svetlomodré zmesi, a potom si tieto dve zmiešané farby verejne vymenia. Nakoniec si každý z nich zmieša farbu, ktorú dostal od partnera, s vlastnou privátnou farbou. Výsledkom je finálna farebná zmes (v tomto prípade žltohnedá), ktorá je identická s finálnou farebnou zmesou ich partnera.

Ak by si výmenu vypočula tretia strana, poznala by iba spoločnú farbu (žltá) a prvé zmiešané farby (oranžovo-hnedá a svetlomodrá), no konečnú tajnú farbu by zistila len veľmi ťažko (žltohnedá), keďže by musela vynaložiť veľkú snahu na odseparovanie všetkých farebných molekúl vo vnútri všetkých farebných zmesí. V reálnom svete sa pre túto vzájomnú výmenu informácií nepoužívajú farby ale veľmi dlhé (niekoľko stoviek číslic dlhé) čísla a lámanie takýchto hesiel je výpočtovo nákladné. Uhádnuť dohodnutý kľúč je v rozumnom čase nemožné ani pre moderné superpočítače .

Kryptografické vysvetlenie[upraviť | upraviť zdroj]

Najjednoduchšia a pôvodná implementácia protokolu používa multiplikatívnu grupu celých čísel modulo p, kde p je prvočíslo a g je primitívny koreň modulo p . Tieto dve hodnoty sa vyberajú presne podľa tohoto zadania (prvočíslo a jeho primitívny koreň), aby sa zabezpečilo, že výsledný zdieľaný kľúč môže nadobudnúť akúkoľvek hodnotu od 1 do p –1. Tu je príklad protokolu s neutajenými hodnotami označené modrou farbou a tajnými hodnotami označené červenou farbou. Pripomeňme si ešte, že výsledkom operácia modulo je zvyšok po delení. Čiže (37 mod 5) = 2, pretože 37 / 5 = 7 zv. 2.

  1. Alica a Bob sa verejne dohodnú s použitím prvočísla p = 23 a tzv. generátora g = 5 (čo je primitívny koreň modulo 23).
  2. Alica vyberie tajné celé číslo a = 7, potom pošle Bobovi výsledok výpočtu A = ga mod p
    • A = 57 mod 23 = 17
  3. Bob vyberie tajné celé číslo b = 3, potom pošle Alici B = gb mod p
    • B = 53 mod 23 = 10
  4. Alica vypočíta s = Ba mod p
    • s = 107 mod 23 = 14
  5. Bob vypočíta s = Ab mod p
    • s = 173 mod 23 = 14
  6. Alica a Bob teraz zdieľajú tajný kľúč (číslo 14).

Alica aj Bob dospeli k rovnakým hodnotám, pretože v rámci operácií modulo p

Konkrétnejšie,

Iba a a b sú utajené. Všetky ostatné hodnoty – p, g, ga mod p a gb mod p – sa odosielajú v čitateľnej forme. Sila schémy vychádza zo skutočnosti, že výpočet gab mod p = gba mod p pomocou akéhokoľvek známeho algoritmu trvá extrémne dlho len zo znalosti hodnôt p, g, ga mod p a gb mod p . Keď Alica a Bob vypočítajú zdieľané tajný kľúč, môžu ho použiť na šifrovanie, ktoré poznajú iba oni a môžu si odosielať zašifrované správy cez rovnaký otvorený komunikačný kanál, aký používali na výmenu kľúča.

Samozrejme, ak má byť tento tajný kľúč bezpečný a dostatočne dlhý, boli by potrebné oveľa väčšie hodnoty a, b a p, pretože z tohoto príkladu existuje iba 23 možných výsledkov n mod 23. Ak je však p prvočíslo aspoň 600 číslic, potom ani tie najrýchlejšie moderné počítače používajúce najrýchlejší známy algoritmus nedokážu nájsť číslo a iba zo znalosti čísel g, p a ga mod p . Takýto problém sa nazýva problém diskrétneho logaritmu . Výpočet ga mod p je známy ako modulárna exponenciácia a dá sa efektívne vykonať aj pre veľké čísla. Všimnite si, že g nemusí byť vôbec veľké a v praxi je zvyčajne malé celé číslo (napríklad 2, 3, . . . ).

Tabuľka utajenia[upraviť | upraviť zdroj]

Tabuľka nižšie zobrazuje kto má aké informácie, opäť s neutajenými hodnotami označené modrou farbou a tajnými hodnotami označené červenou farbou. Tu je Eva tá, krorá odpočúva komunikáciu – sleduje, čo sa posiela medzi Alicou a Bobom, ale nemení obsah ich komunikácie.

  • g = verejný (primitívny koreň) základ, známy Alici, Bobovi a Eve. g = 5
  • p = verejný (hlavný) modul, známy Alici, Bobovi a Eve. p = 23
  • a = Alicin súkromný kľúč, ktorý pozná iba Alica. a = 6
  • b = Bobov súkromný kľúč, ktorý pozná iba Bob. b = 15
  • A = Alicin verejný kľúč, známy Alici, Bobovi a Eve. A = ga mod p = 8
  • B = Bobov verejný kľúč, známy Alici, Bobovi a Eve. B = gb mod p = 19
Alica
Známe informácie Neznáme informácie
p = 23
g = 5
a = 6 b
A = 5a mod 23
A = 56 mod 23 = 8
B = 19
s = B a mod 23
s = 196 mod 23 = 2
Bob
Známe informácie Neznáme informácie
p = 23
g = 5
b = 15 a
B = 5b mod 23
B = 515 mod

23 = 19

A = 8
s = A b mod 23
s = 815 mod 23 = 2
Eva
Známe informácie Neznáme informácie
p = 23
g = 5
a, b
A = 8, B = 19
s

Teraz je s zdieľaný tajný kľúč a poznajú ho Alica aj Bob, ale nie Eva. Všimnite si, že Eve nepomôže ani vypočítať AB, čo sa rovná ga + b mod p .

Poznámka: Pre Alicu by malo byť ťažké vyriešiť problém Bobovho súkromného kľúča alebo pre Boba vyriešiť Aliciin súkromný kľúč. Ak by pre Alicu nebolo ťažké nájsť Bobov súkromný kľúč (alebo naopak), Eva by mohla jednoducho nahradiť svoj vlastný súkromný/verejný kľúč, zapojiť Bobov verejný kľúč do výpočtu svojho súkromného kľúča, vytvoriť falošný zdieľaný tajný kľúč a vypočítať Bobov súkromný kľúč.

Zovšeobecnenie na konečné cyklické grupy[upraviť | upraviť zdroj]

Tu je všeobecnejší popis protokolu:

  1. Alica a Bob sa dohodnú na prirodzenom čísle n ,generujúcom prvku g v konečnej cyklickej grupe G rádu n. (To sa zvyčajne dá spraviť oveľa skôr pred zvyškom protokolu; predpokladá sa, že g poznajú všetci útočníci.) Grupa G je zapísaná multiplikatívne.
  2. Alica vyberie náhodné prirodzené číslo a, ktoré je z intervalu 1 < a < n a pošle prvok ga z grupy G Bobovi.
  3. Bob vyberie náhodné prirodzené číslo b, ktoré je z intervalu 1 < b < n a pošle prvok gb z grupy G Alici.
  4. Alica vypočíta prvok (gb)a = gba z grupy G.
  5. Bob vypočíta prvok (ga)b = gab z grupy G.

Alica aj Bob teraz vlastnia prvok skupiny gab = gba, ktorý môže slúžiť ako zdieľaný tajný kľúč. Grupa G spĺňa požadovanú podmienku pre bezpečnú komunikáciu, pokiaľ neexistuje účinný algoritmus na určenie gab z daných hodnôt g, ga a gb.

Napríklad protokol Diffie-Hellman nad eliptickými krivkami je variant, ktorý predstavuje prvok G ako bod na eliptickej krivke namiesto ako celé číslo modulo n. Boli tiež navrhnuté varianty využívajúce hypereliptické krivky. Výmena supersingulárnych izogénnych kľúčov je variant Diffie-Hellman, ktorý bol navrhnutý tak, aby bol bezpečný proti kvantovým počítačom.

Efemérne a/alebo statické kľúče[upraviť | upraviť zdroj]

Používané kľúče môžu byť efemérne (dočasné) alebo statické (dlhodobé), ale môžu byť dokonca zmiešané, tzv. semi-statické DH. Tieto varianty majú rôzne vlastnosti, a teda aj rôzne prípady použitia. Prehľad mnohých variantov a niektoré aj diskusie nájdete napríklad v NIST SP 800-56A. Tu je len základný zoznam:

  1. efemérny a efemérny: Zvyčajne sa používa na dohodnutie kľúča. Poskytuje dopredné utajenie, ale žiadnu autentizáciu.
  2. statický a statický: Vytvorí sa dlhodobé zdieľané tajomstvo. Neposkytuje dopredné utajnie, ale implicitnú autenticitu. Keďže tajné šifrovacie kľúče sú statické, nechránia napríklad pred replay útokmi. Ak niekto uhádne statické kľuče, vie prečítať minulú aj budúcu komunikáciu.
  3. efemérne, statické: Používa sa napríklad v šifrovaní ElGamal alebo Integrated Encryption Scheme (IES). Ak sa použije pri výmene kľúča, môže poskytnúť implicitnú jednostrannú autenticitu (efemérna strana môže overiť pravosť statickej strany). Nie je zabezpečené žiadne dopredné utajenie.

Je možné použiť efemérne a statické kľúče v jednej kľúčovej dohode, aby sa poskytla väčšia bezpečnosť, ako je znázornené napríklad v NIST SP 800-56A, ale je tiež možné kombinovať tieto kľúče v jedinej výmene kľúča DH, ktorá sa potom nazýva trojitý DH (3-DH).

Trojitý Diffie-Hellman (3-DH)[upraviť | upraviť zdroj]

V roku 1997 navrhli Simon Blake-Wilson, Don Johnson, Alfred Menezes určitý druh trojitého DH v „Protokoly výmeny kľúča a ich bezpečnostná analýza (1997)“, ktorú vylepšili C. Kudla a K. G. Paterson v „Modular Security Proofs for Key Agreement Protocols (2005)“ a ukázalo sa, že sú bezpečné. Používa sa alebo spomína aj v iných variantoch. Napríklad:

Dlhodobé tajné kľúče Alice a Boba sú označené a a b, s verejnými kľúčmi A a B, ako aj efemérnymi kľúčovými pármi x, X a y, Y . Potom protokol výmeny kľúča vyzerá takto:

Trojitý protokol Diffie-Hellman (3-DH).
Alica ( ) Bob ( )

Dlhodobé verejné kľúče je potrebné nejako preniesť. Dá sa to urobiť vopred na samostatnom dôveryhodnom kanáli alebo môžu byť verejné kľúče zašifrované pomocou nejakej čiastkovej výmen kľúčov, aby sa zachovala anonymita.

Prevádzka s viac ako dvoma stranami[upraviť | upraviť zdroj]

Výmena kľúčov Diffie-Hellman nie je obmedzená na vyjednanie kľúča, ktorý zdieľajú iba dvaja účastníci. Na dohode sa môže zúčastniť ľubovoľný počet používateľov vykonaním iterácií protokolu dohody a výmenou medziľahlých údajov (ktoré samotné nemusia byť utajené). Napríklad Alica, Bob a Carol by sa mohli zúčastniť na výmene kľúčov Diffie-Hellman nasledovne, pričom všetky operácie sa považujú za modulo p:

  1. Strany sa dohodnú na parametroch algoritmu p a g .
  2. Strany generujú svoje súkromné kľúče s názvom a, b a c .
  3. Alica vypočíta ga mod p a pošle ho Bobovi.
  4. Bob vypočíta (ga)b mod p = gab mod p a pošle to Carol.
  5. Carol vypočíta (gab)c mod p = gabc mod p a použije to ako svoj tajný kľúč.
  6. Bob vypočíta gb mod p a pošle ho Carol.
  7. Carol vypočíta (gb)c mod p = gbc mod p a pošle ho Alici.
  8. Alica vypočíta (gbc)a mod p = gbca mod p = gabc mod p a použije ho ako svoj tajný kľúč.
  9. Carol vypočíta gc mod p a pošle ho Alici.
  10. Alica vypočíta (gc)a mod p = gca mod p a pošle ho Bobovi.
  11. Bob vypočíta (gca)b mod p = gcab mod p = gabc mod p a použije to ako svoj tajný kľúč.

Odpočúvajúci mohol vidieť ga mod p, gb mod p, gc mod p, gab mod p, gac mod p a gbc mod p, ale nemôže použiť žiadnu kombináciu týchto možností na efektívnu reprodukciu gabc mod p .

Na rozšírenie tohto mechanizmu na väčšie skupiny je potrebné dodržiavať dva základné princípy:

  • Počnúc "prázdnym" kľúčom pozostávajúcim iba z g, zdieľaný kľúč sa vytvorí tak, že sa aktuálna hodnota zvýši na súkromný exponent každého účastníka raz, v akomkoľvek poradí (prvé takéto umocnenie poskytne vlastný verejný kľúč účastníka).
  • Akákoľvek medzihodnota (s použitím až N-1 exponentov, kde N je počet účastníkov v skupine) môže byť zverejnená, ale konečná hodnota (po použití všetkých N exponentov) predstavuje zdieľaný tajný kľúč a preto nikdy nesmie byť verejne odhalený. Každý používateľ teda musí získať svoju kópiu tajného kľúča použitím svojho vlastného súkromného kľúča ako posledného.

Tieto princípy nechávajú otvorené rôzne možnosti výberu, v akom poradí účastníci prispievajú ku kľúčom. Najjednoduchším a najzreteľnejším riešením je usporiadať N účastníkov do kruhu a nechať N kľúčov točiť sa okolo v kruhu, až kým nakoniec ku každému kľúču neprispeje všetkých N účastníkov (končiac jeho vlastníkom) a každý účastník prispeje k N kľúčom (končiac ich vlastnými). To si však vyžaduje, aby každý účastník vykonal N modulárnych mocnín.

Výberom optimálnejšieho poradia a spoliehaním sa na skutočnosť, že kľúče je možné duplikovať, je možné znížiť počet modulárnych umocnení vykonaných každým účastníkom na log2(N) + 1 pomocou prístupu v štýle rozdeľuj a panuj, čo si môžeme ukázať na príklade ôsmich účastníkov:

  1. Každý z účastníkov A, B, C a D vykoná jedno umocnenie, výsledkom čoho je gabcd; táto hodnota sa odošle E, F, G a H. Na oplátku dostanú účastníci A, B, C a D gefgh.
  2. Účastníci A a B vykonajú jedno umocnenie, čím získajú gefghab, ktoré pošlú C a D, zatiaľ čo C a D urobia to isté, čím získajú gefghcd, ktoré pošlú A a B.
  3. Účastník A vykoná umocnenie, výsledkom čoho je gefghcda, ktoré odošle B; podobne B posiela gefghcdb do A. C a D robia podobne.
  4. Účastník A vykoná jedno záverečné umocnenie, čím získa tajomstvo gefghcdba = gabcdefgh, zatiaľ čo B urobí to isté, aby získal gefghcdab = gabcdefgh; opäť C a D robia podobne.
  5. Účastníci E až H súčasne vykonávajú rovnaké operácie s použitím gabcd ako východiskového bodu.

Po dokončení tejto operácie budú mať všetci účastníci tajné gabcdefgh, ale každý účastník vykoná iba štyri modulárne umocnenia, a nie osem.

Bezpečnosť[upraviť | upraviť zdroj]

Protokol sa považuje za bezpečný proti odpočúvaniu, ak sú G a g správne zvolené. Najmä rád grupy G musí byť veľký, najmä ak sa rovnaká skupina používa pre veľké objemy komunikačnej prevádzky. Odpočúvajúci musí vyriešiť problém Diffie-Hellman, aby získal gab. To sa v súčasnosti považuje za zložité pre grupy, ktorých rád je dostatočne veľký. Efektívny algoritmus na vyriešenie problému diskrétneho logaritmu by uľahčil výpočet a alebo b a vyriešil problém Diffie-Hellman, čím by bol tento a mnohé ďalšie kryptosystémy s verejným kľúčom nezabezpečené.

Ak Alica a Bob používajú generátory náhodných čísel, ktorých výstupy nie sú úplne náhodné a dajú sa do určitej miery predvídať, potom je oveľa jednoduchšie odpočúvať.

V pôvodnom popise výmena Diffie–Hellman sama o sebe neposkytuje autentifikáciu komunikujúcich strán, a preto je zraniteľná voči útoku typu man-in-the-middle. Malvína (aktívny útočník vykonávajúci útok typu man-in-the-middle) môže vytvoriť dve odlišné výmeny kľúčov, jednu s Alicou a druhú s Bobom, v skutočnosti sa maskuje voči Bobovi ako Alica a naopak, čo jej umožní dešifrovať a potom znova zašifrovať správy, ktoré medzi nimi prechádzali. Všimnite si, že Malvína musí byť aj naďalej v strede a aktívne dešifrovať a prešifrovať správy zakaždým, keď Alica a Bob komunikujú. Ak je niekedy neprítomná, jej predchádzajúca prítomnosť je potom odhalená Alici a Bobovi. Budú vedieť, že všetky ich súkromné konverzácie boli zachytené a dekódované niekým v kanáli. Vo väčšine prípadov im to nepomôže získať súkromný kľúč Malvíny, aj keď použila rovnaký kľúč pre obe výmeny.

Na zabránenie tomuto typu útoku je vo všeobecnosti potrebný spôsob autentifikácie komunikujúcich strán navzájom. Namiesto toho sa môžu použiť varianty Diffie–Hellman, ako napríklad protokol STS, aby sa predišlo týmto typom útokov.

Praktické útoky na internetovú prevádzku[upraviť | upraviť zdroj]

Algoritmus sita číselného poľa, ktorý je vo všeobecnosti najúčinnejší pri riešení problému diskrétneho logaritmu, pozostáva zo štyroch výpočtových krokov. Prvé tri kroky závisia iba od rádu grupy G, nie od konkrétneho čísla, ktorého konečný logaritmus je požadovaný. Ukazuje sa, že veľká časť internetového prenosu využíva relatívne malý počet grúp, ktoré majú rád 1024 bitov alebo menej. Predpočítaním prvých troch krokov sita číselných polí pre najbežnejšie grupy útočníkovi umožní vykonať už len posledný krok, ktorý je oveľa menej výpočtovo nákladný ako prvé tri kroky, aby získal špecifický logaritmus. Útok Logjam využil túto zraniteľnosť na kompromitáciu rôznych internetových služieb, ktoré umožňovali používanie grúp, ktorých rád bolo 512-bitové prvočíslo, takzvaný exportný stupeň . Autori potrebovali niekoľko tisíc jadier CPU na týždeň na predvýpočet údajov pre jedno 512-bitové prvočíslo. Akonáhle to bolo hotové, jednotlivé logaritmy bolo možné vyriešiť približne za minútu pomocou dvoch 18-jadrových procesorov Intel Xeon.

Ako odhadli autori stojaci za útokom Logjam, oveľa náročnejší predbežný výpočet potrebný na vyriešenie problému s diskrétnym protokolom pre 1024-bitové prvočíslo by stál rádovo 100 miliónov dolárov, čo sa zmestí do rozpočtu veľkej národnej spravodajskej agentúry, ako je napr. Americká národná bezpečnostná agentúra (NSA). Autori Logjamu špekulujú, že za tvrdeniami v uniknutých dokumentoch NSA, že NSA je schopná prelomiť veľkú časť súčasnej kryptografie, stojí predvýpočet proti široko opakovane používaným 1024-bitovým DH prvočíslam.

Aby sa predišlo týmto zraniteľnostiam, autori Logjamu odporúčajú použiť kryptografiu eliptickej krivky, pre ktorú nie je známy žiadny podobný útok. Ak sa tak nestane, odporúčajú, aby rád p pre grupu v Diffie–Hellman bol dlhý aspoň 2048 bitov. Odhadujú, že predbežný výpočet potrebný pre 2048-bitové prvočísla je 109-krát náročnejší ako pre 1024-bitové prvočísla.

Iné použitia[upraviť | upraviť zdroj]

Šifrovanie[upraviť | upraviť zdroj]

Boli navrhnuté schémy šifrovania verejného kľúča založené na výmene kľúčov Diffie–Hellman. Prvou takouto schémou je šifrovanie ElGamal . Modernejším variantom je Integrated Encryption Scheme.

Dopredné utajenie[upraviť | upraviť zdroj]

Protokoly, ktoré dosahujú dopredné utajenie, generujú nové páry kľúčov pre každú reláciu a na konci relácie ich zahodia. Výmena kľúčov Diffie–Hellman je častou voľbou pre takéto protokoly z dôvodu rýchleho generovania kľúčov.

Dohoda kľúča overená heslom[upraviť | upraviť zdroj]

Keď Alica a Bob zdieľajú heslo, môžu použiť formu Diffie–Hellman overenú heslom (PK), aby zabránili útokom typu man-in-the-middle. Jednou z možností je porovnať hash s zreťazený s heslom vypočítaným nezávisle na oboch koncoch kanála. Charakteristickým rysom týchto schém je, že útočník môže testovať iba jedno špecifické heslo pri každej iterácii s druhou stranou, a tak systém poskytuje dobrú bezpečnosť s relatívne slabými heslami. Tento prístup je opísaný v odporúčaní ITU-T X.1035, ktoré používa štandard domácej siete G.hn.

Príkladom takéhoto protokolu je protokol Secure Remote Password .

Verejný kľúč[upraviť | upraviť zdroj]

Je tiež možné použiť Diffie–Hellman ako súčasť infraštruktúry verejného kľúča, čo umožňuje Bobovi zašifrovať správu tak, aby ju mohla dešifrovať iba Alica, bez predchádzajúcej komunikácie medzi nimi, okrem toho, že Bob má dôveryhodné znalosti o Alicinom verejnom kľúči. Alicin verejný kľúč je . Aby jej poslal správu, Bob vyberie náhodné b a potom pošle Alici (nešifrovaná) spolu so správou zašifrovanou symetrickým kľúčom . Iba Alica môže určiť symetrický kľúč, a teda dešifrovať správu, pretože iba ona má a (súkromný kľúč). Vopred zdieľaný verejný kľúč tiež zabraňuje útokom typu man-in-the-middle.

V praxi sa Diffie–Hellman týmto spôsobom nepoužíva, pričom RSA je dominantným algoritmom verejného kľúča. Je to hlavne z historických a obchodných dôvodov, konkrétne, že RSA Security vytvorila certifikačnú autoritu na podpisovanie kľúčov, ktorou sa stal Verisign . Diffie–Hellman, ako je uvedené vyššie, nemožno priamo použiť na podpisovanie certifikátov. Matematicky s tým však súvisia podpisové algoritmy ElGamal a DSA, ako aj MQV, STS a komponent IKE sady protokolov IPsec na zabezpečenie komunikácie cez Internet .

Zdroj[upraviť | upraviť zdroj]

Tento článok je čiastočný alebo úplný preklad článku Diffie–Hellman key exchange na anglickej Wikipédii.