ECDSA

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 27. april 2020; checks kræver 27 redigeringer .

ECDSA (Elliptic Curve Digital Signature Algorithm)  er en offentlig nøglealgoritme , der bruges til at bygge og verificere en elektronisk digital signatur ved hjælp af elliptisk kurvekryptering .

Historie

Elliptiske kurver, som et matematisk koncept, er blevet undersøgt i lang tid, der er mange videnskabelige artikler om dette emne. Men på trods af al forskning var deres anvendelse på reelle problemer, især for kryptografi, ukendt indtil slutningen af ​​det 20. århundrede. I 1985 foreslog Victor Miller og Neil Koblitz brugen af ​​elliptiske kurver til kryptografi.

I 1991 blev DSA udviklet af National Institute of Standards and Technology (NIST) , bygget op omkring ideen om at bruge modulær aritmetik og det diskrete logaritmeproblem . Kort efter anmodede NIST om offentlige kommentarer til sit forslag til digitale signaturordninger [O 1] . Inspireret af denne idé foreslog Scott Vanstone i artiklen "Responses to NIST's proposal" en analog af den digitale signaturalgoritme ved hjælp af elliptisk kurvekryptografi (ECDSA).

I perioden fra 1998-2000. ECDSA er blevet vedtaget af forskellige organisationer som en standard ( ISO 14888-3, ANSI X9.62, IEEE 1363-2000, FIPS 186-2).

Ansøgning

ECDSA bruges i kryptovalutatransaktioner (såsom Bitcoin og Ethereum ) for at sikre, at midler kun kan bruges af deres retmæssige ejere [Y 1] .

Grundlæggende parametre for en elliptisk kurve

Hovedparametrene (eng. domæneparametre) for en elliptisk kurve over et begrænset felt er sættet af følgende størrelser:

Parametrene skal vælges således, at den elliptiske kurve defineret over det endelige felt er modstandsdygtig over for alle kendte angreb, der gælder for ECDLP . Derudover kan der være andre restriktioner relateret til sikkerheds- eller implementeringshensyn.

Som regel er hovedparametrene fælles for en gruppe af enheder, men i nogle applikationer (implementeringer) kan de være specifikke for hver specifik bruger [O 2] .

ECDSA i henhold til ANSI X9.62

Til praktisk anvendelse pålægger ECDSA restriktioner på de felter, hvor elliptiske kurver er defineret. For nemheds skyld kan du overveje tilfældet med implementering af algoritmer, når  er et simpelt endeligt felt, (for andre felter - tilsvarende), så har vores elliptiske ligning formen .

Algoritme til generering af grundlæggende parametre

For at undgå kendte angreb baseret på det diskrete logaritmeproblem i gruppen af ​​punkter i en elliptisk kurve , er det nødvendigt, at antallet af punkter i den elliptiske kurve er deleligt med et tilstrækkeligt stort primtal . ANSI X9.62-standarden kræver .

Input : Feltrækkefølge , feltpræsentationsindikator for , - sikkerhedsniveau: og . Konklusion : De vigtigste parametre for den elliptiske kurve . Trin 1. Vælg tilfældigt verificerede elementer , der opfylder betingelsen . Trin 2. , rækkefølgen af ​​kurven kan beregnes ved hjælp af SEA- algoritmen . Trin 3. Tjek det for et stort primtal . Hvis ikke, så gå til trin 1. Trin 4. Tjek, at . Hvis ikke, så gå til trin 1. Trin 5. Tjek, at . Hvis ikke, så gå til trin 1. Trin 6. Trin 7. Vælg et vilkårligt punkt og indstil . Gentag indtil , hvor er punktet ved uendelighed Trin 8. Vend tilbage

Tilfældige verifikationsalgoritmer garanterer, at en elliptisk kurve over et begrænset felt blev genereret helt tilfældigt [O 2] .

Algoritme til generering af et nøglepar

Lad os overveje udvekslingen af ​​beskeder mellem Alice og Bob . Tidligere, ved at bruge algoritmen til at generere hovedparametrene, opnår Alice sine hovedparametre for den elliptiske kurve. Ved at bruge følgende rækkefølge af handlinger vil Alice selv generere en offentlig og privat nøgle.

Input : Grundlæggende parametre for den elliptiske kurve . Konklusion : Offentlig nøgle- , privat nøgle- . Trin 1. Vælg et tilfældigt eller pseudo-tilfældigt heltal . Trin 2. Beregn koordinaterne for et punkt på en elliptisk kurve . Trin 3. Tilbage . Offentlig nøgle bekræftelsesalgoritme

Formålet med at kontrollere en offentlig nøgle er at bekræfte, at en offentlig nøgle har visse aritmetiske egenskaber . Succesfuld eksekvering af denne algoritme viser, at den tilsvarende private nøgle matematisk eksisterer, men garanterer ikke, at nogen ikke har beregnet den givne private nøgle, eller at den påståede ejer faktisk besidder den.

Input : Grundlæggende parametre for en elliptisk kurve , offentlig nøgle - . Konklusion : En beslutning om at acceptere eller afvise gyldigheden af ​​den offentlige nøgle . Trin 1. Tjek at . Trin 2. Tjek hvad der er de korrekt repræsenterede elementer i , dvs. heltal tilhørende . Trin 3. Tjek, hvad der opfylder den elliptiske kurveligning defineret af feltets elementer . Trin 4. Tjek at . Trin 5. Hvis en kontrol mislykkes, så returner "Afvis", ellers "Acceptér".

Digital Signature Generation Algoritme

Alice, som har hovedparametrene for kurven og den private nøgle , ønsker at underskrive beskeden , for dette skal hun generere en signatur .

I det følgende betegner en kryptografisk hashfunktion, hvis outputværdi har en bitlængde på højst (hvis denne betingelse ikke er opfyldt, kan outputværdien afkortes). Det antages, at vi arbejder med output af funktionen, der allerede er konverteret til et heltal.

Input : Elliptisk kurve grundlæggende parametre , privat nøgle , besked . Konklusion : Underskrift . Trin 1. Vælg et tilfældigt eller pseudo-tilfældigt heltal . Trin 2. Beregn koordinaterne for punktet Trin 3. Beregn . Hvis , så gå til trin 1. Trin 4. Beregn . Trin 5 Beregn . Hvis , så gå til trin 1. Trin 6. Vend tilbage .

Digital signaturverifikationsalgoritme

For at bekræfte Alices signatur af beskeden modtager Bob en autentisk kopi af hendes grundlæggende kurveparametre og deres tilhørende offentlige nøgle .

Input : Elliptisk kurve grundlæggende parametre , offentlig nøgle , besked , signatur . Konklusion : Beslutning om at acceptere eller afvise underskriften. Trin 1. Tjek, at der er heltal, der tilhører . Hvis en validering mislykkes, skal du returnere "Afvis". Trin 2 Beregn . Trin 3 Beregn . Trin 4 Beregn og . Trin 5. Beregn koordinaterne for punktet . Trin 6. Hvis , så returner "Afvis". Ellers beregn . Trin 7. Hvis , så returner "Accepter", ellers "Afvis" Bevis på arbejdet med den digitale signaturverifikationsalgoritme

Lad signaturen for beskeden virkelig blive genereret af Alice, i dette tilfælde . Permutationen giver følgende:

k ≡ s − en ( e + d r ) mod n ≡ ( s − en e + s − en d r ) mod n ≡ ( w e + w d r ) mod n ≡ ( u en + u 2 d ) mod n {\displaystyle k\equiv s^{-1}(e+dr){\bmod {n}}\equiv (s^{-1}e+s^{-1}dr){\bmod {n}} \equiv (vi+wdr){\bmod {n}}\equiv (u_{1}+u_{2}d){\bmod {n}}}

Vi opnår således , som skulle bevises.

ECDSA-eksempel

I dette eksempel [O 1] vil vi kun beskrive meningsfulde beregningstrin i algoritmerne, idet det antages, at alle kontroller kan udføres uden en tekstbeskrivelse.

1. Ved at bruge algoritmen til at generere hovedparametrene får vi følgende værdier: , elliptisk kurve , og basispunkt med orden .

2. Generer et par nøgler i overensstemmelse med nøglepargenereringsalgoritmen : vælg , derefter .

Trin 1. Vælg . Trin 2. Beregn koordinaterne for punktet .

3. Ved at bruge den digitale signaturgenereringsalgoritme signerer vi meddelelsen angivet som tekst med hash-funktionsværdien .

Trin 1. Vælg . Trin 2. Beregn koordinaterne for punktet . Trin 3. Beregn . Trin 4. Beregn .

4. Kontroller ægtheden af ​​signaturen for meddelelsen ved hjælp af den digitale signaturverifikationsalgoritme .

Trin 1. Beregn . Trin 2. Beregn og . Trin 3. Beregn koordinaterne for punktet . Trin 4. Beregn . Trin 5. Kontrol . Vi accepterer underskrift.

Sikkerhed

D. Brown (Daniel RL Brown) beviste, at ECDSA-algoritmen ikke er mere sikker end DSA . Han formulerede en sikkerhedsbegrænsning på ECDSA, der førte til følgende konklusion: "Hvis en elliptisk kurvegruppe kan modelleres af hovedgruppen, og dens hashfunktion opfylder et vist veluddannet gæt, så er ECDSA modstandsdygtig over for et matchet klartekstangreb med eksisterende forfalskning " [Y 2] .

Styrken af ​​krypteringsalgoritmen er baseret på det diskrete logaritmeproblem i gruppen af ​​punkter i en elliptisk kurve . I modsætning til det simple diskrete logaritmeproblem og heltalsfaktoriseringsproblemet er der ingen subeksponentiel algoritme for det diskrete logaritmeproblem på punktgruppen af ​​en elliptisk kurve. Af denne grund er "effekten pr. nøglebit" betydeligt højere i en algoritme, der bruger elliptiske kurver [E 3] .

Det betyder, at betydeligt mindre parametre kan bruges i elliptisk kurvekryptering end i andre offentlige nøglesystemer såsom RSA og DSA , men med et tilsvarende sikkerhedsniveau. For eksempel bitstørrelsen af ​​nøgler : En 160-bit nøgle ville svare til nøgler med et 1024-bit modul i RSA og DSA på et sammenligneligt sikkerhedsniveau (mod kendte angreb).

Fordelene ved mindre parameterstørrelser (især nøgler) inkluderer algoritmeudførelseshastighed, effektiv brug af energi, båndbredde, hukommelse. De er især vigtige for applikationer på enheder med begrænsede muligheder, såsom smart cards [O 2] .

Praktisk implementering

Der er mange softwareimplementeringer af elliptiske kurver over begrænsede felter. De fleste af disse implementeringer er fokuseret på en enkelt applikation, såsom udvikling af en hurtig implementering af ECDSA for et specifikt målfelt [O 3] .

Noter

Hovedkilder
  1. 1 2 Liao HZ, Shen YY On the Elliptic Curve Digital Signature Algorithm . " Tunghai Science " (2006). Hentet 28. september 2022. Arkiveret fra originalen 28. september 2022.
  2. 1 2 3 Hankerson D., Menezes AJ, Vanstone S. Guide to elliptic curve cryptography . " Springer Science & Business Media" (2006). Hentet 28. september 2022. Arkiveret fra originalen 18. marts 2022.
  3. Lopez J., Dahab R. En oversigt over elliptisk kurvekryptografi . Institut for Computing. State University of Campinas" (2000). Hentet 29. september 2022. Arkiveret fra originalen 29. september 2022.
Yderligere kilder
  1. Mayer H. ECDSA sikkerhed i bitcoin og ethereum: en forskningsundersøgelse . " CoinFaabrik " (28. juni 2016). Hentet 28. september 2022. Arkiveret fra originalen 22. januar 2022.
  2. D. Brown. Generiske grupper, kollisionsmodstand og ECDSA . " Koder og kryptografi " (26. februar 2002). Hentet 27. november 2008. Arkiveret fra originalen 27. februar 2012.
  3. Korzhev V. Digital signatur. Elliptiske kurver . " Åbne systemer " (8. august 2002). Hentet 16. november 2008. Arkiveret fra originalen 31. december 2012.

Links