Diffie -Hellman-protokol ( eng. Diffie-Hellman-nøgleudvekslingsprotokol, DH ) er en kryptografisk protokol , der tillader to eller flere parter at opnå en delt hemmelig nøgle ved hjælp af en kommunikationskanal, der ikke er beskyttet mod at lytte. Den resulterende nøgle bruges til at kryptere yderligere udvekslinger ved hjælp af symmetriske krypteringsalgoritmer .
Den offentlige nøgledistributionsordning foreslået af Diffie og Hellman gjorde en reel revolution i krypteringsverdenen, da den fjernede hovedproblemet ved klassisk kryptografi - problemet med nøgledistribution.
I sin rene form er Diffie-Hellman-algoritmen sårbar over for dataændringer i kommunikationskanalen, inklusive " Man-in-the-middle (man in the middle) "-angrebet, så skemaer, der bruger den, bruger yderligere en-vejs eller to -måde autentificeringsmetoder .
Overførslen af nøglen gennem åbne kanaler var et stort problem i kryptografi i det 20. århundrede. Men dette problem blev løst efter fremkomsten af Diffie-Hellman-algoritmen. Denne algoritme gjorde det muligt at besvare hovedspørgsmålet: "Hvordan undgår man, når man udveksler krypterede meddelelser, behovet for at transmittere en hemmelig dekrypteringskode, som som regel ikke er mindre end selve meddelelsen?" Offentlig distribution af Diffie-Hellman-nøgler giver et par systembrugere mulighed for at udvikle en delt hemmelig nøgle uden at udveksle hemmelige data.
Grundlæggende for offentlig nøglekryptografi blev fremført af Whitfield Diffie og Martin Hellman og uafhængigt af Ralph Merkle .
Deres bidrag til kryptografi var påstanden om, at nøgler kan bruges i par - en krypteringsnøgle og en dekrypteringsnøgle - forudsat at det er umuligt at bestemme indholdet af dekrypteringsnøglen ud fra indholdet af den offentligt transmitterede krypteringsnøgle. Diffie og Hellman præsenterede først denne idé på den nationale computerkonference i 1976, og et par måneder senere blev deres banebrydende papir New Directions in Cryptography udgivet [1] .
Et år senere blev den første asymmetriske krypteringsalgoritme RSA opfundet , som løste problemet med at kommunikere gennem en usikker kanal.
I 2002 skrev Martin Hellman :
Dette system ... har siden været kendt som Diffie-Hellman-algoritmen. Men da systemet først blev beskrevet på papir af Diffie og mig selv, var det et offentligt nøgledistributionssystem, der blev konceptualiseret af Merkle, og bør derfor kaldes "Diffie-Hellman-Merkle-algoritmen", hvis det er forbundet med navne. Jeg håber, at denne lille ændring vil hjælpe med at anerkende Merkles ligeværdige bidrag til opfindelsen af offentlig nøglekryptografi.
I det nu udløbne amerikanske patent 4.200.770 er tre forfattere opført som skaberne af denne algoritme: Hellman, Diffie og Merkle.
Først i december 1997 fremkom opdaterede oplysninger om, at Malcolm Williamson allerede i 1974 opfandt en matematisk algoritme baseret på kommutativiteten af eksponenter, når de successivt eksponentieres ( ). Denne metode kan kaldes en analog af Diffie-Hellman-algoritmen.
Antag, at der er to abonnenter: Alice og Bob. Begge abonnenter kender nogle to numre og , som ikke er hemmelige og også kan kendes af andre interesserede. For at skabe en hemmelig nøgle, der er ukendt for andre, genererer begge abonnenter store tilfældige tal: Alice - nummer , Bob - nummer . Alice beregner derefter resten af division [3] (1):
(en)og sender det til Bob, og Bob beregner resten af divisionen (2):
(2)og giver det til Alice. Det antages, at en angriber kan få begge disse værdier, men ikke ændre dem (det vil sige, han har ingen mulighed for at forstyrre overførselsprocessen).
På andet trin beregner Alice, baseret på hvad hun har og modtaget over netværket , værdien (3):
(3)Bob, baseret på hvad han har og modtaget over netværket , beregner værdien (4):
(fire)Som du kan se, fik Alice og Bob samme nummer (5):
(5)De kan bruge den som en hemmelig nøgle, da angriberen her vil stå over for et praktisk talt uløseligt (inden for en rimelig tid) problem med at beregne (3) eller (4) fra opsnappet og , hvis tallene , , er valgt store nok. Funktionen af algoritmen er vist i figur [4] .
Når algoritmen kører, hver side:
I praktiske implementeringer bruges tal i størrelsesordenen 10100 og p i størrelsesordenen 10300 til a og b . Tallet g behøver ikke at være stort og har normalt en værdi inden for de første ti.
Eva er kryptanalytiker. Den læser Bob og Alices videresendelse, men ændrer ikke indholdet af deres beskeder [6] .
|
|
|
Brugen af Diffie-Hellman-algoritmen er ikke begrænset til to deltagere. Det kan anvendes på et ubegrænset antal brugere. Overvej en situation, hvor Alice, Bob og Carol genererer en indledende nøgle sammen. I dette tilfælde vil rækkefølgen af handlinger være som følger [7] :
Alle beregninger er udført modulo p
Hvis nogen lytter til kommunikationskanalen, så vil han være i stand til at se g a mod p , g b mod p , g c mod p , g ab mod p , g ac mod p og g bc mod p , men han vil ikke være i stand til at gengive g abc mod p ved hjælp af en hvilken som helst kombination af disse tal.
For at denne algoritme effektivt kan anvendes på en stor gruppe mennesker, skal to grundlæggende principper overholdes:
Diffie-Hellman-algoritmen kan også bruges i offentlig nøglekryptering. I dette tilfælde forbliver den generelle ordning lig den ovenfor, men med små forskelle. Alice videregiver ikke direkte værdierne af p, g og A til Bob, men udgiver dem på forhånd som sin offentlige nøgle. Bob laver sin del af beregningen, krypterer derefter beskeden med en symmetrisk algoritme med K som nøglen og sender chifferteksten til Alice sammen med værdien af B.
I praksis bruges Diffie-Hellman-algoritmen ikke på denne måde. I dette område er den dominerende offentlige nøglealgoritme RSA. Dette skyldes mere kommercielle overvejelser, da det var RSA Data Security, der skabte certificeringsmyndigheden. Derudover kan Diffie-Hellman-algoritmen ikke bruges ved signering af certifikater [4] .
Hvis der er et fællesskab af brugere, kan hver af brugerne udgive den offentlige nøgle X= mod n i en fælles database. Hvis Alice vil kommunikere med Bob, skal hun få Bobs offentlige nøgle og generere deres fælles hemmelighed. Alice kan kryptere beskeden med den genererede private nøgle og sende den til Bob. Bob vil udtrække Alices offentlige nøgle og finde den delte hemmelighed.
Hvert par brugere kan bruge deres egen unikke hemmelige nøgle uden at kræve nogen udveksling af data mellem brugere. I dette tilfælde skal alle offentlige nøgler autentificeres for at udelukke "manden i midten" [4] .
Den kryptografiske styrke af Diffie-Hellman-algoritmen (det vil sige kompleksiteten af at beregne givet p, g og ) er baseret på den forventede kompleksitet af det diskrete logaritmeproblem.
Diffie-Hellman-protokollen er fremragende til at modstå et passivt angreb, men hvis et man-in-the-middle-angreb implementeres, vil det ikke modstå. Faktisk i protokollen kan hverken Alice eller Bob pålideligt afgøre, hvem deres samtalepartner er, så det er ganske muligt at forestille sig et tilfælde, hvor Bob og Alice etablerede et forhold til Mallory, som foregiver at være Bob for Alice, og Alice præsenterer sig selv. til Bob. Og så i stedet for Diffie-Hellman-protokollen får vi noget, der ligner følgende:
Trin | Alice | Mallory | Bønne |
---|---|---|---|
en | g a → | g a | |
2 | g n ← | gn _ | |
g an | g an | ||
3 | g m → | g m | |
fire | g b ← | gb _ | |
g mb | g mb |
Det vil sige, at Mallory får én delt nøgle med Alice (der tror, det er Bob) og én delt nøgle med Bob (som tror, det er Alice). Og derfor kan hun modtage fra Alice enhver besked til Bob, dekryptere den med en nøgle, læse den, kryptere den med en nøgle og sende den til Bob. Forfalskning kan således gå ubemærket hen i meget lang tid [3] .
Styrken af den delte nøgle i Diffie-Hellman-protokollen sikres ved at beregne værdien ud fra de givne tal og . Dette problem kaldes det beregningsmæssige Diffie-Hellman-problem [8] .
En sådan formulering er en generel formulering af problemet i et begrænset felt ; den repræsenterer det generelle tilfælde; for Diffie-Hellman bruges et særligt tilfælde. Hvis Diffie-Hellman-problemet var nemt at løse, kunne værdien findes ved at kende tallene , , og , som er en del af protokollen. Forudsat at fjenden har evnen til at opsnappe information, bør det antages, at disse numre ikke er en hemmelighed for ham. Diffie-Hellman-problemet bygger på kompleksiteten i at beregne den diskrete logaritme [1] .
Diskret logaritme ligner den sædvanlige logaritme inden for reelle tal. Men i modsætning til det sidste problem, hvor løsningen er omtrentlig, har problemet med at beregne den diskrete logaritme en nøjagtig løsning.
Som det allerede er blevet klart, er teorien om beregningsmæssig kompleksitet kernen i moderne kryptografi. Dette betyder, at styrken af offentlige nøglekryptosystemer er betinget og afhænger af kompleksiteten af at løse visse problemer. Alt dette fører til det faktum, at Diffie-Hellman-problemet og det diskrete logaritmeproblem betragtes som uløseligt.
Det er intuitivt klart, at kompleksiteten af at løse disse problemer afhænger både af størrelsen af feltet Fq og af valget af parametre (offentlig parameter g og hemmelige tal a og b). Det er klart, at små versioner af disse problemer kan løses. Den opnåede information giver os mulighed for at formulere nøjagtige antagelser om uløseligheden af Diffie-Hellman-problemet og det diskrete logaritmeproblem.
Antagelse 1 - Betingelser for uløseligheden af Diffie-Hellman-problemet
En algoritme til løsning af Diffie-Hellman-problemet er en probabilistisk polynomialalgoritme A med fordel ε > 0:
ε = Sandsynlighed[ A(desc( ), g, , )].hvor inputdata A er specificeret i definitionen (Computational Diffie-Hellman problem) (i det sidste felt).
Lad IG være en variantgenerator, der som input modtager et tal , hvis køretid er et polynomium i parameteren k, og resultatet er 1) desq( ), hvor |q| = k, og 2) det genererende element g ∈ .
Vi vil sige, at generatoren IG opfylder betingelserne for uløseligheden af Diffie-Hellman-problemet, hvis der for varianter af IG( ) ikke findes en løsningsalgoritme med fordel ε > 0, der ikke er ubetydelig sammenlignet med alle tilstrækkeligt store tal k.
Antagelse 2 - Betingelser for uløseligheden af det diskrete logaritmeproblem
En algoritme til løsning af det diskrete logaritmeproblem er en probabilistisk polynomialalgoritme A med fordel ε > 0:
hvor inputdata A er specificeret i definitionen (Computational Diffie-Hellman problem) (i det sidste felt).
Lad IG være en variantgenerator, der som input modtager et tal , hvis køretid er et polynomium i parameteren k, og resultatet er 1) desq( ), hvor |q| = k, og 2) det genererende element g ∈ og 3) elementet h ∈
Vi vil sige, at generatoren IG opfylder betingelserne for uløseligheden af Diffie-Hellman-problemet, hvis der for varianter af IG( ) ikke findes en løsningsalgoritme med fordel ε > 0, der ikke er ubetydelig sammenlignet med alle tilstrækkeligt store tal k.
Med andre ord antages det her, at næsten alle tilstrækkeligt store varianter af disse problemer i endelige felter ikke har en effektiv løsningsalgoritme. Andelen af svage varianter af disse problemer, der kan løses, er ubetydelig.
Valget af parametre er vigtigt for protokolsikkerheden. Mange implementeringer bruger et lille antal populære algoritmeparametersæt. I 2016 blev der præsenteret et arbejde, der viste muligheden for at udarbejde specielle finite felter til Diffie-Hellman (DH) algoritmen. Primtallet p i en speciel form valgt af forskerne (1024 bits i størrelse) ser normalt ud for brugerne, men det forenkler kompleksiteten af beregninger ved hjælp af SNFS-metoden til at løse det diskrete logaritmeproblem i flere størrelsesordener. For at bekæmpe angrebet foreslås det at øge modulstørrelsen til 2048 bit [9] [10] .