Diffie–Hellman

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 J. 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ä.
Historia.
Syyskuussa 1974 kun ARPANET oli vielä alkutekijöissään Whitfield Diffie ja Martin Hellman tapasivat keskustellakseen avaintenvaihtomenetelmästä. Avaintenvaihto oli pulma, josta ei näyttänyt pääsevän ympäri ilman avaimen paljastamista jossakin vaiheessa. Ralph Merkle liittyi mukaan työhön. He keskittyivät tutkimaan yksisuuntaisia matemaattisia funktioita. Kahden vuoden työn jälkeen keväällä 1976 Hellman sai läpimurron. Diffie-Hellman-Merkle avaintenvaihto esiteltiin kesäkuussa 1976 National Computer Conferencessa ja seuraavana vuonna he hakivat patenttia. Samaan aikaan Diffie sai ajatuksen epäsymmetrisen avaimen käytöstä, joka johti julkisen avaimen salaukseen.
Yksinkertaistettu kuvaus.
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 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.
Sekä Liisa, että Roope tietävät nyt ryhmän alkion "g""ab", joka toimii heidän salaisena avaimenaan. Ryhmän "G" alkiot ("g""b")"a" ja ("g""a")"b" ovat keskenään yhtäsuuret, koska ryhmät ovat potenssiassosiatiivisia.
Yksityiskohtia ja ongelmia.
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.
Vuonna 2015 raportoitiin Logjam-hyökkäyksestä, joka hyödyntää Diffie–Hellmanissa olevaa haavoittuvuutta.