Diffie -Hellman-protokolla ( eng. Diffie-Hellman key exchange protocol, DH ) on salausprotokolla, jonka avulla kaksi tai useampi osapuoli voi saada jaetun salaisen avaimen käyttämällä viestintäkanavaa, jota ei ole suojattu kuuntelemiselta. Saatua avainta käytetään lisätietojen salaamiseen symmetristen salausalgoritmien avulla .
Diffien ja Hellmanin ehdottama julkisen avaimen jakelujärjestelmä teki todellisen vallankumouksen salauksen maailmassa, koska se poisti klassisen kryptografian pääongelman - avainten jakeluongelman.
Puhtaassa muodossaan Diffie-Hellman-algoritmi on alttiina tietoliikennekanavan tiedonmuokkauksille, mukaan lukien " Man-in-the-middle (mies keskellä) " -hyökkäykselle, joten sitä käyttävät järjestelmät käyttävät ylimääräistä yksi- tai kaksisuuntaista. -tapa todennusmenetelmät .
Avaimen välittäminen avoimia kanavia pitkin oli suuri ongelma 1900-luvun kryptografiassa. Mutta tämä ongelma ratkesi Diffie-Hellman-algoritmin tulon jälkeen. Tämä algoritmi mahdollisti vastauksen pääkysymykseen: "Kuinka salattuja viestejä vaihdettaessa vältetään tarve lähettää salainen salauksenpurkukoodi, joka ei yleensä ole pienempi kuin itse viesti?" Diffie-Hellman-avainten julkinen jakelu antaa järjestelmän käyttäjäparille mahdollisuuden kehittää jaetun salaisen avaimen vaihtamatta salaisia tietoja.
Julkisen avaimen salauksen perusteet kehittivät Whitfield Diffie ja Martin Hellman sekä itsenäisesti Ralph Merkle .
Heidän panoksensa kryptografiaan oli väite, että avaimia voidaan käyttää pareittain - salausavain ja salauksenpurkuavain - edellyttäen, että on mahdotonta määrittää salauksenpurkuavaimen sisältöä julkisesti lähetetyn salausavaimen sisällöstä. Diffie ja Hellman esittelivät tämän idean ensimmäisen kerran kansallisessa tietokonekonferenssissa vuonna 1976, ja muutamaa kuukautta myöhemmin julkaistiin heidän tärkeä paperinsa New Directions in Cryptography [1] .
Vuotta myöhemmin keksittiin ensimmäinen epäsymmetrinen salausalgoritmi RSA , joka ratkaisi epävarman kanavan kautta tapahtuvan viestinnän ongelman.
Martin Hellman kirjoitti vuonna 2002 :
Tämä järjestelmä ... on sittemmin tunnettu Diffie-Hellman-algoritmina. Kuitenkin, kun Diffie ja minä kuvailimme järjestelmää paperille ensimmäisen kerran, se oli julkisen avaimen jakelujärjestelmä, jonka Merkle suunnitteli, ja siksi sitä pitäisi kutsua "Diffie-Hellman-Merkle-algoritmiksi", jos se liittyy nimiin. Toivon, että tämä pieni muutos auttaa tunnustamaan Merklen yhtäläisen panoksen julkisen avaimen salauksen keksimiseen.
Nyt päättyneessä US-patentissa 4 200 770 kolme kirjoittajaa on lueteltu tämän algoritmin luojina: Hellman, Diffie ja Merkle.
Vasta joulukuussa 1997 ilmestyi päivitettyä tietoa, että Malcolm Williamson keksi jo vuonna 1974 matemaattisen algoritmin, joka perustuu eksponentien kommutatiivisuuteen peräkkäin eksponentioituna ( ). Tätä menetelmää voidaan kutsua Diffie-Hellman-algoritmin analogiksi.
Oletetaan, että tilaajia on kaksi: Alice ja Bob. Molemmat tilaajat tietävät pari numeroa ja , jotka eivät ole salaisia ja voivat olla myös muiden kiinnostuneiden tiedossa. Kenellekään muulle tuntemattoman salaisen avaimen luomiseksi molemmat tilaajat luovat suuria satunnaislukuja: Alice - numero , Bob - numero . Alice laskee sitten jaosta [3] (1):
(yksi)ja lähettää sen Bobille, ja Bob laskee jaon loppuosan (2):
(2)ja antaa sen Alicelle. Oletetaan, että hyökkääjä voi saada molemmat näistä arvoista, mutta ei muokata niitä (eli hän ei voi puuttua siirtoprosessiin).
Toisessa vaiheessa Alice laskee arvon (3) sen perusteella, mitä hänellä on ja mitä hän on saanut verkon kautta :
(3)Bob laskee arvon (4) sen perusteella, mitä hänellä on ja mitä hän on saanut verkon kautta :
(neljä)Kuten näet, Alice ja Bob saivat saman numeron (5):
(5)He voivat käyttää sitä salaisena avaimena, koska tässä hyökkääjä kohtaa käytännössä ratkaisemattoman (kohtuullisen ajan sisällä) ongelman laskea (3) tai (4) siepatuista ja jos numerot , , valitaan riittävän suuriksi. Algoritmin toiminta on esitetty kuvassa [4] .
Kun algoritmi on käynnissä, kumpikin puoli:
Käytännön toteutuksissa a:lle ja b :lle käytetään suuruusluokkaa 10100 olevia lukuja ja 10300 :n suuruisia p . Numeron g ei tarvitse olla suuri, ja sen arvo on yleensä kymmenen ensimmäisen sisällä.
Eva on kryptanalyytikko. Se lukee Bobin ja Alicen edelleenlähetyksen, mutta ei muuta heidän viestiensä sisältöä [6] .
|
|
|
Diffie-Hellman-algoritmin käyttö ei rajoitu kahteen osallistujaan. Sitä voidaan soveltaa rajoittamattomaan määrään käyttäjiä. Harkitse tilannetta, jossa Alice, Bob ja Carol luovat alkuavaimen yhdessä. Tässä tapauksessa toimintojen järjestys on seuraava [7] :
Kaikki laskelmat tehdään modulo p
Jos joku kuuntelee viestintäkanavaa, hän voi nähdä g a mod p , g b mod p , g c mod p , g ab mod p , g ac mod p ja g bc mod p , mutta hän ei näe pystyä toistamaan g abc mod p käyttämällä mitä tahansa näiden numeroiden yhdistelmää.
Jotta tätä algoritmia voitaisiin soveltaa tehokkaasti suureen ihmisryhmään, on noudatettava kahta perusperiaatetta:
Diffie-Hellman-algoritmia voidaan käyttää myös julkisen avaimen salauksessa. Tässä tapauksessa yleinen kaavio pysyy samanlaisena kuin yllä oleva, mutta pienin eroin. Alice ei välitä p:n, g:n ja A:n arvoja suoraan Bobille, vaan julkaisee ne etukäteen julkisena avaimenaan. Bob suorittaa oman osuutensa laskutoimituksesta, salaa sitten viestin symmetrisellä algoritmilla käyttämällä K:tä avaimena ja lähettää salatekstin Alicelle yhdessä B:n arvon kanssa.
Käytännössä Diffie-Hellman-algoritmia ei käytetä tällä tavalla. Tällä alueella hallitseva julkisen avaimen algoritmi on RSA. Tämä johtuu enemmän kaupallisista syistä, koska RSA Data Security loi varmenneviranomaisen. Lisäksi Diffie-Hellman-algoritmia ei voida käyttää varmenteita allekirjoitettaessa [4] .
Jos käyttäjäyhteisö on olemassa, kukin käyttäjistä voi julkaista julkisen avaimen X= mod n yhteisessä tietokannassa. Jos Alice haluaa kommunikoida Bobin kanssa, hänen on hankittava Bobin julkinen avain ja luotava heidän yhteinen salaisuutensa. Alice voi salata viestin luodulla yksityisellä avaimella ja lähettää sen Bobille. Bob purkaa Alicen julkisen avaimen ja löytää jaetun salaisuuden.
Jokainen käyttäjäpari voi käyttää omaa ainutlaatuista salaista avaimeansa ilman, että käyttäjien välillä tarvitsee vaihtaa tietoja. Tässä tapauksessa kaikki julkiset avaimet on todennettu, jotta "mies keskellä" suljetaan pois [4] .
Diffie-Hellman-algoritmin kryptografinen vahvuus (eli annettujen p:n, g: n ja :n laskemisen monimutkaisuus ) perustuu diskreetin logaritmiongelman odotettuun monimutkaisuuteen.
Diffie-Hellman-protokolla vastustaa erinomaisesti passiivista hyökkäystä, mutta jos mies-in-the-middle-hyökkäys toteutetaan, se ei vastusta. Itse asiassa pöytäkirjassa Alice tai Bob eivät voi luotettavasti määrittää, kuka heidän keskustelukumppaninsa on, joten on täysin mahdollista kuvitella tapaus, jossa Bob ja Alice loivat suhteen Malloryn kanssa, joka teeskentelee olevansa Bob Alicelle, ja Alice esittelee itsensä. Bobille. Ja sitten Diffie-Hellman-protokollan sijasta saamme jotain seuraavanlaista:
Vaihe | Alice | Mallory | Papu |
---|---|---|---|
yksi | g a → | g a | |
2 | g n ← | gn_ _ | |
g an | g an | ||
3 | g m → | g m | |
neljä | g b ← | gb_ _ | |
g mb | g mb |
Eli Mallory saa yhden jaetun avaimen Alicen kanssa (joka luulee sen olevan Bob) ja yhden jaetun avaimen Bobin kanssa (joka luulee sen olevan Alice). Ja siksi hän voi vastaanottaa Alicelta minkä tahansa viestin Bobille, purkaa sen salauksen avaimella, lukea sen, salata sen avaimella ja lähettää sen Bobille. Siten väärennös voi jäädä huomaamatta hyvin pitkään [3] .
Jaetun avaimen vahvuus Diffie-Hellman-protokollassa varmistetaan laskemalla arvo annetuista luvuista ja . Tätä ongelmaa kutsutaan laskennalliseksi Diffie-Hellmanin ongelmaksi [8] .
Tällainen muotoilu on ongelman yleinen muotoilu äärellisessä kentässä ; se edustaa yleistä tapausta; Diffie-Hellmanille käytetään erikoistapausta. Jos Diffie-Hellmanin ongelma olisi helppo ratkaista, niin arvo voitaisiin löytää tietämällä numerot , , ja , jotka ovat osa protokollaa. Olettaen, että vihollisella on kyky siepata tietoa, on oletettava, että nämä numerot eivät ole hänelle salaisuus. Diffie-Hellmanin ongelma perustuu diskreetin logaritmin laskennan monimutkaisuuteen [1] .
Diskreetti logaritmi on samanlainen kuin tavallinen logaritmi reaalilukujen alalla. Toisin kuin viimeisessä tehtävässä, jossa ratkaisu on likimääräinen, diskreetin logaritmin laskentaongelmalla on tarkka ratkaisu.
Kuten on jo käynyt selväksi, laskennallisen monimutkaisuuden teoria on modernin kryptografian ytimessä. Tämä tarkoittaa, että julkisen avaimen salausjärjestelmien vahvuus on ehdollinen ja riippuu tiettyjen ongelmien ratkaisemisen monimutkaisuudesta. Kaikki tämä johtaa siihen, että Diffie-Hellmanin ongelmaa ja diskreetti logaritmiongelmaa pidetään ratkaisemattomina.
On intuitiivisesti selvää, että näiden ongelmien ratkaisemisen monimutkaisuus riippuu sekä kentän Fq koosta että parametrien valinnasta (julkinen parametri g ja salaiset numerot a ja b). On selvää, että pienet versiot näistä ongelmista ovat ratkaistavissa. Saatujen tietojen avulla voimme muotoilla tarkkoja oletuksia Diffie-Hellmanin ongelman ja diskreetin logaritmiongelman ratkaisemattomuudesta.
Oletus 1 - Diffie-Hellman-ongelman ratkaisemattomuuden ehdot
Algoritmi Diffie-Hellman-ongelman ratkaisemiseksi on todennäköisyyspohjainen polynomialgoritmi A, jonka etu on ε > 0:
ε = Prob[ A(desc( ), g, , )].jossa syötetieto A on määritelty määritelmässä (Computational Diffie-Hellman -tehtävä) (lopullisessa kentässä).
Olkoon IG varianttigeneraattori, joka saa syötteenä luvun , jonka ajoaika on polynomi parametrissa k ja tuloksena on 1) desq( ), missä |q| = k, ja 2) generoiva alkio g ∈ .
Sanotaan, että generaattori IG täyttää Diffie-Hellman-ongelman ratkaisemattomuuden ehdot, jos IG( ) -muunnelmille ei ole olemassa ratkaisualgoritmia, jonka etu ε > 0 ei ole vähäpätöinen verrattuna kaikkiin riittävän suuriin lukuihin k.
Oletus 2 - Diskreetin logaritmiongelman ratkaisemattomuuden ehdot
Eräs algoritmi diskreetin logaritmiongelman ratkaisemiseksi on todennäköisyyspohjainen polynomialgoritmi A, jonka etu on ε > 0:
jossa syötetieto A on määritelty määritelmässä (Computational Diffie-Hellman -tehtävä) (lopullisessa kentässä).
Olkoon IG varianttigeneraattori, joka saa syötteenä luvun , jonka ajoaika on polynomi parametrissa k ja tuloksena on 1) desq( ), missä |q| = k, ja 2) generoiva alkio g ∈ ja 3) alkio h ∈
Sanotaan, että generaattori IG täyttää Diffie-Hellman-ongelman ratkaisemattomuuden ehdot, jos IG( ) -muunnelmille ei ole olemassa ratkaisualgoritmia, jonka etu ε > 0 ei ole vähäpätöinen verrattuna kaikkiin riittävän suuriin lukuihin k.
Toisin sanoen tässä oletetaan, että lähes kaikilla näiden ongelmien riittävän suurilla varianteilla äärellisissä kentissä ei ole tehokasta ratkaisualgoritmia. Näiden ongelmien heikkojen ratkaisujen osuus on mitätön.
Parametrien valinta on tärkeää protokollan turvallisuuden kannalta. Monet toteutukset käyttävät pientä määrää suosittuja algoritmiparametrijoukkoja. Vuonna 2016 esiteltiin työ, joka osoitti mahdollisuuden valmistaa erityisiä äärellisiä kenttiä Diffie-Hellman (DH) -algoritmia varten. Tutkijoiden valitseman erikoismuodon alkuluku p (kooltaan 1024 bittiä) näyttää käyttäjille normaalilta, mutta se yksinkertaistaa diskreetin logaritmiongelman ratkaisemiseen SNFS-menetelmää käyttävien laskelmien monimutkaisuutta useilla suuruusluokilla. Hyökkäyksen torjumiseksi ehdotetaan moduulin koon kasvattamista 2048 bittiin [9] [10] .