Diffie–Hellman
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit lisätä artikkeliin tarkistettavissa olevia lähteitä ja merkitä ne ohjeen mukaan. |
Diffie–Hellman-avaintenvaihtoprotokolla (DHE, D-H) on salausprotokolla, jonka avulla kaksi osapuolta voivat sopia yhteisestä salaisuudesta turvattoman tietoliikenneyhteyden ylitse. Kun osapuolilla on yhteinen salaisuus, sitä voidaan käyttää viestien salaamiseen perinteisillä salausmenetelmillä.
Algoritmin julkaisivat Whitfield Diffie ja Martin Hellman vuonna 1976, vaikka myöhemmin onkin selvinnyt että sen oli jo aiemmin keksinyt englantilainen Malcolm Williamson, mutta sitä pidettiin sotasalaisuutena. Ralf Merkle osallistui merkittävällä tavalla algoritmia edeltävän julkisen avaimen salausmenetelmän ajatuksen kehittämiseen.
Diffie–Hellman-avainteenvaihtoa käytetään muiden todennusmenetelmien kanssa suojaamaan IP-liikennettä IPsec-protokollien Internet Key Exchange-avaintenvaihtoprotokollassa. Diffie–Hellman oli ensimmäinen julkisen avaimen salausmenetelmä.
Yksinkertaistettu kuvaus[muokkaa | muokkaa wikitekstiä]
Alkuperäisessä ja yksinkertaisimmassa muodossaan protokolla käyttää kokonaislukujen jäännösluokkarenkaan multiplikatiivista ryhmää modulo jokin alkuluku p ja sen primitiivistä alkiota g.
Esimerkki protokollasta:
- Liisa ja Roope sopivat käyttävänsä alkulukua p=23 ja primitiivistä alkiota g=5.
- Liisa valitsee salaisen kokonaisluvun a=6, ja lähettää Roopelle luvun (ga mod p)
- 56 mod 23 = 8.
- Roope valitsee salaisen kokonaisluvun b=15 ja lähettää Liisalle luvun (gb mod p)
- 515 mod 23 = 19.
- Liisa laskee luvun (gb mod p)a mod p
- 196 mod 23 = 2.
- Roope laskee luvun (ga mod p)b mod p
- 815 mod 23 = 2.
Liisa ja Roope ovat nyt saaneet saman luvun, koska gab ja gba ovat yhtäsuuret. Huomattakoon, että ainoastaan luvut a, b, gab ja gba ovat salassa pidettäviä. Kaikki muut luvut voidaan lähettää selväkielisinä. Kun Liisa ja Roope ovat saaneet näin vaihdettua salaiset avaimet, he voivat käyttää niitä avoimessa tietoliikennekanavassa tapahtuvan keskinäisen viestintänsä salaamiseen.
Todellisessa tilanteessa tulisi tietysti valita luvut a, b ja p huomattavasti suuremmiksi. Jos alkuluku p olisi yli 300 numeroinen ja luvut a ja b vähintään 100 numeroisia lukuja, parhailtakin tunnetuilta (diskreetin logaritmin) algoritmeilta kuluisi vähintään tunnetun maailmankaikkeuden iän verran aikaa lukujen a ja b laskemiseen tunnettujen lukujen g, p, ga mod p ja gb mod p perusteella. Luvun g ei välttämättä tarvitse olla kovin suuri. Itse asiassa luvut 2 tai 5 ovat tavallisia valintoja.
Yleisempi kuvaus[muokkaa | muokkaa wikitekstiä]
- Liisa ja Roope sopivat käytettävästä äärellisestä syklisestä ryhmästä G ja sen generoivasta alkiosta g. (Tämä tehdään yleensä paljon ennen protokollan käyttötapahtumaa; Alkion g oletetaan olevan mahdollisten hyökkääjien tiedossa.) Käytämme ryhmän G laskutoimitukselle multiplikatiivista merkintätapaa (ts. kertomerkkiä).
- Liisa valitsee satunnaisen luonnollisen luvun a ja laskee ryhmän G alkion ga, jonka hän lähettää Roopelle.
- Roope valitsee satunnaisen luonnollisen luvun b ja laskee ryhmän G alkion gb, jonka hän lähettää Liisalle.
- Liisa laskee ryhmän G alkion (gb)a.
- Roope laskee ryhmän G alkion (ga)b.
Sekä Liisa, että Roope tietävät nyt ryhmän alkion gab, joka toimii heidän salaisena avaimenaan. Ryhmän G alkiot (gb)a ja (ga)b ovat keskenään yhtäsuuret, koska ryhmät ovat potenssiassosiatiivisia.
Yksityiskohtia ja ongelmia[muokkaa | muokkaa wikitekstiä]
Operaatiot tehdään oikeasti hyvin valituilla äärellisiin eli Galois’n kuntiin kuuluvilla arvoilla ja operaatioilla, jolloin saadaan erityisen helposti laskettavat eksponenttioperaatiot ja vaikeasti laskettavat diskreetit logaritmioperaatiot. Yksinkertaistaen tämä tarkoittaa vain sitä, että luvut katkaistaan tiettyyn pituuteen. Ollakseen turvallinen, Diffie–Hellman-algoritmissa käytettävien lukujen pitää olla hyvin pitkiä, tuhansia bittejä eli satoja numeroita.
Kukaan ei ole todistanut sitä, ettei ole olemassa keinoa laskea logaritmeja paljon nykyistä tehokkaammin. Jonain päivänä nyt varmana pidetty Diffie–Hellman-avain voikin murtua helposti.
Diffie–Hellman-algoritmin suuri ongelma on se, ettei vastapuolta todenneta. Tämä mahdollistaa jonkun toimimisen Roopen ja Liisan välissä. Sen sijaan, että Roope on sopinut salaisuuden Liisan kanssa, hän onkin sopinut sen Villen kanssa. Ville tekee myös tämän saman Liisalle. Kun Roope ja Liisa kuvittelevat sopineensa salaisuuden keskenään ja alkavat salatun tiedonsiirron, kaikki kulkeekin selväkielisenä Villen kautta. Tätä kutsutaan mies välissä -hyökkäykseksi (engl. man-in-the-middle attack).
Algoritmi edellyttää myös ulkopuoliselle täysin arvaamattomien satunnaislukujen käyttöä. Tällaisten tekeminen on usein yllättävän vaikeaa pelkän tietokoneen avulla.
Haavoittuvuudet[muokkaa | muokkaa wikitekstiä]
Vuonna 2015 raportoitiin Logjam-hyökkäyksestä, joka hyödyntää Diffie–Hellmanissa olevaa haavoittuvuutta.[1][2]
Standardit[muokkaa | muokkaa wikitekstiä]
- RFC 2631 Diffie–Hellman Key Agreement Method
- RFC 3526 More Modular Exponential (MODP) Diffie–Hellman groups for Internet Key Exchange (IKE)
Lähteet[muokkaa | muokkaa wikitekstiä]
- ↑ Weak Diffie-Hellman and the Logjam Attack weakdh.org. Viitattu 1.11.2019. (englanniksi)
- ↑ Dan Goodin: HTTPS-crippling attack threatens tens of thousands of Web and mail servers 20.5.2015. Ars Technica. Viitattu 1.11.2019. (englanniksi)
Aiheesta muualla[muokkaa | muokkaa wikitekstiä]
- "Public Key Cryptography: Diffie-Hellman Key Exchange" – Khan Academy (englanniksi)
- U.S. Patent #4,200,770 , Alkuperäinen patentti (Diffie, Hellman ja Merkle), ei enää voimassa
- Summary of ANSI X9.42: Agreement of Symmetric Keys Using Discrete Logarithm Cryptography ANSI X9.42 standardi (PDF)
|