Kryptografi med Elliptiske kurver



Relaterede dokumenter
Kryptografi med Elliptiske kurver

Integer Factorization

Kryptering kan vinde over kvante-computere

Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

Af Marc Skov Madsen PhD-studerende Aarhus Universitet

Elliptisk Kurve Kryptografi. Jonas F. Jensen

Polynomier. Indhold. Georg Mohr-Konkurrencen. 1 Polynomier 2. 2 Polynomiumsdivision 4. 3 Algebraens fundamentalsætning og rødder 6

Opgave 1 Regning med rest

Hyperelliptisk kurve kryptografi

6. december. Motivation. Internettet: Login til DIKU (med password) Handel med dankort Fortrolig besked Digital signatur

Assembly Voting ApS. Kompagnistræde 6, København K CVR:

Køreplan Matematik 1 - FORÅR 2005

Matematik YY Foråret Kapitel 1. Grupper og restklasseringe.

KRYPTOLOGI ( Litt. Peter Landrock & Knud Nissen : Kryptologi)

Konfidentialitet og kryptografi 31. januar, Jakob I. Pagter

Matematisk modellering og numeriske metoder. Lektion 16

Projekt 7.9 Euklids algoritme, primtal og primiske tal

De rigtige reelle tal

Camp om Kryptering. Datasikkerhed, RSA kryptering og faktorisering. Rasmus Lauritsen. August 27,

Mordell s Sætning. Henrik Christensen og Michael Pedersen. 17. december 2003

Fejlkorrigerende koder, secret sharing (og kryptografi)

1 Sætninger om hovedidealområder (PID) og faktorielle

Polynomium Et polynomium. Nulpolynomiet Nulpolynomiet er funktionen der er konstant nul, dvs. P(x) = 0, og dets grad sættes per definition til.

Abstrakte datatyper C#-version

Noter om polynomier, Kirsten Rosenkilde, Marts Polynomier

t a l e n t c a m p d k Talteori Anne Ryelund Anders Friis 16. juli 2014 Slide 1/36

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

Vi indleder med at minde om at ( a) = a gælder i enhver gruppe.

Grundlæggende køretidsanalyse af algoritmer

Grundlæggende Matematik

Matematik. 1 Matematiske symboler. Hayati Balo,AAMS. August, 2014

Fagets IT Introduktion til MATLAB

Kursusgang 3: Autencificering & asymmetrisk kryptering. Krav til autentificering. Kryptering som værktøj ved autentificering.

Talteori. Teori og problemløsning. Indhold. Talteori - Teori og problemløsning, marts 2014, Kirsten Rosenkilde.

Fredag 12. januar David Pisinger

Matematikken bag kryptering og signering NemID RSA Foredrag i UNF

Med udgangspunkt i FIPS-197-standarden AES, baseret på Rijndael-algoritmen. Af Mathias Vestergaard

Bits, bit operationer, integers og floating point

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Jeg foretager her en kort indføring af polynomier over såvel de reelle som

2. Gruppen af primiske restklasser.

Omskrivningsregler. Frank Nasser. 10. december 2011

Moderne kryptografi. Olav Geil Institut for Matematiske Fag Aalborg Universitet. Elektronik og IT-Gruppen 24. april 2008

Foredrag i Eulers Venner 30. nov. 2004

Baggrundsnote om logiske operatorer

RSA-kryptosystemet. RSA-kryptosystemet Erik Vestergaard

Repræsentation af tal

Lidt alment om vektorrum et papir som grundlag for diskussion

Datastrukturer (recap)

Kursusgang 3 Matrixalgebra Repetition

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013

DM507 Algoritmer og datastrukturer

Introduktion til Kryptologi

Teoretiske Øvelsesopgaver:

Indhold. 1 Indledning Baggrund... 2

TALTEORI Ligninger og det der ligner.

Chapter 3. Modulpakke 3: Egenværdier. 3.1 Indledning

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grundlæggende Matematik

Talteori. Teori og problemløsning. Indhold. Talteori - Teori og problemløsning, august 2013, Kirsten Rosenkilde.

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Divisorer. Introduktion. Divisorer og delelighed. Divisionsalgoritmen. Definition (Divisor) Lad d og n være hele tal. Hvis der findes et helt tal q så

Matematisk modellering og numeriske metoder. Lektion 15

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Andengradsligninger. Frank Nasser. 12. april 2011

ØVELSE 3A. I SAS kan man både bruge {}, [] og () som paranteser til index.

Note om endelige legemer

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

DesignMat Uge 1 Gensyn med forårets stof

Matematiske metoder - Opgavesæt

Besvarelser til Calculus Ordinær Eksamen Juni 2019

Forelæsning Uge 4 Torsdag

π can never be expressed in numbers. William Jones og John Machins algoritme til beregning af π

Kvadratiske matricer. enote Kvadratiske matricer

Regning. Mike Vandal Auerbach ( 7) 4x 2 y 2xy 5. 2x + 4 = 3. (x + 3)(2x 1) = 0. (a + b)(a b) a 2 + b 2 2ab.

Repræsentation af tal

10. Nogle diofantiske ligninger.

Andengradsligninger. Frank Nasser. 11. juli 2011

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Fortroligt dokument. Matematisk projekt

Matematikken bag kryptering og signering RSA

π er irrationel Frank Nasser 10. december 2011

Fejlkorligerende køder Fejlkorrigerende koder

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Ekspertudtalelse om kryptering

Datastrukturer (recap)

Nøglehåndtering. Sikkerhed04, Aften

DM507 Algoritmer og datastrukturer

ALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE. Udfordring

4. Snittets kædebrøksfremstilling og dets konvergenter

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

DM507 Algoritmer og datastrukturer

qwertyuiopåasdfghjklæøzxcvbnmqw ertyuiopåasdfghjklæøzxcvbnmqwert yuiopåasdfghjklæøzxcvbnmqwertyui Polynomier opåasdfghjklæøzxcvbnmqwertyuiopå

Transkript:

Kryptografi med Elliptiske kurver med perspektiv til Suite B CHRISTEL BACH KRYPTOLOGI C, MASTERPROJEKT, 2010 MASTER I KRYPTOLOGI ÅRHUS UNIVERSITET VEJLEDER: JØRGEN BRANDT 1 christel@christel.dk christelbach.com - all rights reserved

Kryptografi med Elliptiske kurver med perspektiv til Suite B CHRISTEL BACH Forord 31. juli 2010 Nærværende materiale er skrevet som afsluttende opgave i forbindelse med Master i Kryptologi, Kryptologi C, Århus Universitet, mellem 2006 og 2010. Det er desuden med visse modifikationer eventuelt tænkt anvendt i en undervisningssammenhæng i forbindelse med modulet Security til uddannelserne Professionsbachelor Software Udvikling og Professionsbachelor Web Udvikling. Bekendtgørelsen for dette modul kan ses i bilag C2. Det ligger dog uden for modulets kerneområder og vil være at betragte som emne for særligt interesserede. Der vil derfor være både grundlæggende forklaringer, og referencer til videre studier af emnet. 01.oktober 2010. Denne version 1.6 indeholder flere smårettelser samt udvidede eksempler på pohlig-hellmann angreb, complex multiplikation o.a. samt et par ekstra bilag, alt sammen udarbejdet til master forsvaret der fandt sted 28.09.2010. Desuden er et par åbenlyse matematiske fejl og protokol fejl i version 1.0 af denne opgave, påvist ved forsvaret, rettet og skrevet om. Tak til mine børn for at have udholdt lange perioder med alt for meget fokus på masteruddannelsen. Tak til mine kolleger for aldrig at tvivle. En særlig tak til Niels og Marlene. 2 christel@christel.dk christelbach.com - all rights reserved

Indhold FORORD... 2 1. INTRODUKTION... 6 2. ELLIPTISKE KURVER OVER ENDELIGE LEGEMER F P... 7 3. ELLIPTISKE KURVER OVER DET ENDELIGE LEGEME F M 2... 8 4. ECDLP, ELLIPTISK KURVE DISKRET LOGARITME PROBLEM... 9 5. EGNEDE OG UEGNEDE KURVER OG DOMÆNEPARAMETRE... 9 DISKRIMINANTEN... 9 SUPERSINGULÆRE KURVER... 10 ANORMALE KURVER... 10 ANORMALE BINÆRE KURVER KOBLITZ KURVER... 10 BINÆRE LEGEMER AF SAMMENSAT ORDEN... 10 NÆSTEN PRIMTALSORDEN... 10 BASEPUNKTET SOM GENERATOR... 10 PSEUDO-RANDOMISERING... 11 DOMÆNEPARAMETER GENERERING OG VALIDERING... 11 ANBEFALINGER OG NIST... 11 6. ANTAL PUNKTER PÅ KURVEN... 12 HASSES SÆTNING... 12 ANTALLET AF PUNKTER PÅ BINÆRE KURVER #E(F2m )... 13 SCHOOFS ALGORITME... 13 3 christel@christel.dk christelbach.com - all rights reserved

KOMPLEKS MULTIPLIKATION (CM) METODE... 14 COMPLEX MULTIPLIKATION GENNEMREGNET EKSEMPEL... 14 7. ANGREB - MÅDER AT FINDE N FOR NP= Q... 15 WEIL PAIRRING OG MOV ATTACK... 16 POLLARDS RHO METODE... 17 POHLIG HELLMAN METODE... 17 POHLIG-HELLMANN ANGREB GENNEMREGNET... 18 8. SUITE B... 19 NIST ANBEFALINGER... 20 Legemer... 20 OPTIMERING PÅ NIST KURVER NUMERISK EKSEMPEL... 21 Matematiske rutiner på p192... 21 Det ses altså at være langt enklere at regne via de optimerede rutiner.... 22 Binære legemer... 22 NIST kurver... 22 Valg af reduktionspolynomium.... 22 9. GENERERING OG VERIFIKATION AF DOMÆNE PARAMETRE... 23 VERIFIKATION... 24 Sha1 hashing af hexværdier... 26 Verifikation af P-192... 27 Yderligere verifikationsovervejelser:... 29 Eksempel - At konstruere r for P-224... 29 Test af domæneparametre for P-224:... 30 Test af domæne parametre for P-521... 31 10. IMPLEMENTATIONSOVERVEJELSER:... 32 STORE TAL - BIGINTEGERS... 32 MODULÆR MULTIPLIKATIV INVERS... 33 KVADRATRØDDER MODULUS P IMPLEMENTATION... 34 PUNKTET I UENDELIG - HOMOGENE KOORDINATER... 37 DOUBLE AND ADD ALGORITME... 38 Hurtig potensopløftnings algoritmen... 38 11. KRYPTOGRAFISK ANVENDELSE AF ELLIPTISKE KURVER... 39 PRINCIPPER BAG ELLIPTIC DIFFIE-HELLMAN NØGLE UDVEKSLING... 39 Eksempel på Diffie-Hellman nøgleudveksling med P-192... 39 PRINCIPPER BAG EC ELGAMAL PUBLIC KEY KRYPTOSYSTEM... 40 At repræsentere klartekst med punkter på elliptiske kurver... 41 MV ELGAMAL - MENEZES VANSTONE VARIANTEN AF ELGAMAL... 44 Beskedudvidelse:... 45 Eksempel:... 45 Fra klartekst til ASCII værdier og fra ASCII til klartekst... 47 ECDSA DIGITAL SIGNATUR MED ELLIPTISKE KURVER... 49 Lille ECDSA eksempel... 50 4 christel@christel.dk christelbach.com - all rights reserved

ECDSA eksempel med P-192... 51 12. IMPLEMENTATION AF MV ELGAMAL ECC... 52 13. PAKKELØSNINGER, BIBLIOTEKER OG ANDRE IMPLEMENTATIONER... 54 ILLUSTRATIVE IMPLEMENTATIONER AF KRYPTOGRAFI MED EC... 54 SUPPORT AF SUITE B I.NET... 55 ANDRE LØSNINGER - BOUNCY CASTLE... 55 14. ECC VERSUS RSA... 55 15. DANSKE STANDARDER PÅ OMRÅDET FOR DIGITAL SIGNATUR OG SIKKER KOMMUNIKATION:... 56 16. AFRUNDING OG KONKLUSION... 57 EFTERSKRIFT... 57 17. LITTERATUR HENVISNINGER... 59 18. OVERSIGT OVER BILAG:... 60 19. KILDEKODE TIL IMPLEMENTATION AF ELLIPTISK KURVE KRYPTOGRAFI MV ELGAMAL ECC 60 Kryptering og dekryptering af beskeder med NIST kurver baseret på primlegemer og kurven Y^2=X^3+AX+B i C#.NET... 60 20. SUPPLERENDE PÆDAGOGISKE MATEMATISKE BILAG... 73 Kort oversigt over algebraiske strukturer:... 73 Homomorfi endomorfi -isomorfi... 74 Afbildinger... 74 Grundlæggende om Elliptiske kurver... 75 Diskriminanten og singulære punkter... 78 Mathematica visualisering... 79 Punktaddition på R kode eksempel i javascript... 80 Multiplicativ invers modulus p - kodeeksempel i javascript... 81 ElGamal og DLP... 82 Kvadratroden af store tal... 83 RSA protokol og implementation... 83 Tidskomplexitet med regneeksempler på elliptiske kurver... 88 MIPS antal millioner instruktioner pr sekund... 88 Eksempel: At lede efter kvadrattal... 89 Eksempel: Antallet af punkter der beregnes med Schoofs algoritme - tidskompleksitet... 89 Eksempel Pollards Rho metode:... 89 Kan man lave en tabel over tp på en NIST kurve?... 90 21. ØVRIGE BILAG:... 90 Danske standarder... 90 Studieordning... 92 5 christel@christel.dk christelbach.com - all rights reserved

1. Introduktion Grundlæggende indføring i emnet elliptiske kurver over R er inkluderet i bilag B2. Man vil også kunne se en visualisering af elliptiske kurver hos wolfram.com 1 Et lille demonstrationseksempel på punktaddition i R er vedlagt som i kildekode i bilagb5. Da der vil blive anvendt algebraisk terminologi er der i bilag B1 en kort oversigt over algebraiske strukturer Ved kryptografisk anvendelse af elliptiske kurver(ec) anvendes elliptiske kurver over endelige legemer. Denne gennemgang vil være organiseret således at grundlæggende egenskaber for kurver over endelige legemer først gennemgås, herunder forskellige typer af legemer og overvejelser omkring valg af basis i relation til implementation. Herefter præciseres forudsætninger for hvilke kurver der er egnet til kryptografisk brug De i Suite B anbefalede såkaldte NIST kurver og domæneparametre vil blive gennemgået, diskuteret og forsøgt verificeret via forskellige metoder. Efterfølgende vil en række protokoller for klassiske kryptografiske anvendelser af EC blive gennemgået. I denne forbindelse vil jeg diskutere og vise forskellige implementationsovervejelser til demonstrationsbrug og give eksempler på disse. Implementationerne vil IKKE være egnet til industristandard og tjener primært illustrative og pædagogiske formål. Kodeeksempler vil primært være programmeret i C#.NET og alle vedlagte eksempler kan afprøves på http://www.christelbach.com En hel anden anvendelsesdimension af elliptiske kurver, nemlig Lenstra s Elliptiske Kurve Metode(ECM) til primtalsfaktorisering vil ikke blive berørt da det var emnet for min eksamensopgave i modulet KryptologiB 2 1 http://demonstrations.wolfram.com/realellipticcurves/ 2 http://christel.dk/krypto/den_elliptiske_faelde-kopi.pdf 6 christel@christel.dk christelbach.com - all rights reserved

2. Elliptiske kurver over endelige legemer Fp Til kryptografisk brug betragter vi punkter P og Q på en elliptisk kurver over et endeligt legeme. Vi knytter regneoperationer på disse punkter der gør E(F p ) til en gruppe. Et endeligt legeme består af et endeligt sæt af elementer F med to tilhørende operationer kaldet multiplikation og addition. Legemets orden er antallet af elementer i legemet. Antallet af elementer i et endeligt legeme er altid en primtalspotens p n. Skal ordenen være et primtal har vi altså n=1 For ethvert primtal p og positivt heltal n, eksisterer der et endeligt legeme med p n elementer. To endelige legemer med samme orden er isomorfe. Legemet betegnes F p hvis ordenen er et primtal og F p n hvis ordenen er en primtalspotens. Man ser også betegnelsen GF p n da disse legemer også kan kaldes Galois legemer. Har vi et legeme F p n kaldes p da karakteristikken af legemet og n kaldes udvidelsesgraden. Vi ser på legemer hvor karakteristikken er et primtal p større end 3. En elliptisk kurve over F p er defineret som E(F p ) = (x, y): x, y F p hvor y 2 = x 3 + Ax + B O hvor diskriminanten 4A 3 + 27B 2 er forskellig fra nul og A og B ligger i F p. Betegnelsen O er det neutrale element identiteten. Kaldes også punktet i uendeligt. Vi har en række additionslove der gælder på en sådan kurve Der gælder at P + O= O+ P = P. Der gælder ligeledes at addition af punkter P+Q = Q+P = R, hvor både P og Q ligger i E(F p ) giver et nyt punkt R der også ligger i E F p. Man kan desuden vise at punktaddition er associativ. Dvs. at vi har (P+Q)+ R = P + (Q+R). Vi har yderligere at alle punkter har et inverst element -P således at P + (-P) = O. Dermed er kravene opfyldt for at E(F p ) er en endelig gruppe. Vi definerer k*p som P+P+P+ +P i alt k P er lagt sammen med punkt addition. 7 christel@christel.dk christelbach.com - all rights reserved

3. Elliptiske kurver over det endelige legeme F2 m Mange standarder for elliptisk kurve kryptografi forlanger at p enten er et ulige primtal eller at p m = q er en potens af 2, altså 2 m. F 2 m kaldes også binære legemer. Elliptiske kurver over binære legemer vælges på formen Nonsupersingulær: y 2 + xy = x 3 + Ax 2 + B hvor A er 0 eller 1, B!=0, Eller supersingulær: y 2 + y = x 3 + Ax + B. Vi skal dog senere se at den supersingulære version ikke kan anvendes til kryptografisk brug og man vil derfor udelukkende bruger kurver på den nonsupersingulære form. Koblitz har foreslået en metode hvor man bruger en elliptisk kurve over F 2 (der jo ikke indeholder mere end 4 punkter) mens man lader punkterne ligge på E over F 2 m for et primtal m. Det betyder at man ved at anvende en såkaldt frobenius mapping (der er en homomorfi af E(F 2 m ) på sig selv) kan få lette regneoperationer og ikke mindst let kan beregne antallet af punkter på kurven. Disse kurver kaldes Koblitz kurver eller anormale binære kurver. En af årsagerne til at man er særligt interesseret i denne gruppe E(F 2 m ) er desuden at især punkt dobling er simpel i det tilfælde. Implementationsmæssigt gør det en stor forskel hvor lang tid de enkelte processer tager og hvor mange iterationer der skal til. I en guide 3 til implementation findes en række eksempler på hvordan punktaddition og skalarmultiplikation kan optimeres på binære legemer. F 2 m kan beskrives med såvel polynomial basis som normal basis.jf.[3] Dette kan også betragtes som et binært endeligt legeme der kan ses som et vektor rum af m'te dimension over legemet F 2, der består af elementerne 1 og 0. Dvs. elementerne i F 2 m kan skrives på formen a 0 α 0 + a 1 α 1 + a 2 α 02 + + a m 1 α m 1 hvor a i 0,1 Vi har altså en basis α 0, α 1, α 2,, α m 1 af F 2 m over F 2 Polynomial basis repræsentation, Reduktionspolynomium Et irreducibelt polynomium af grad m over F 2 definerer en polynomial basis repræsentation af F 2 m Et ireducibelt polynomium af grad m over F 2 kan ikke faktoriseres op som et produkt af to polynomier af lavere grad. Et sådant polyomium kan skrives på formen f(x) = x m + t m 1 x m 1 + + t 2 x 2 + t 1 x + t 0 hvor t i 0,1 for i=0,1,2 m-1. 3 Companion document Mathematical Routines for NIST Prime Elliptic Curves 8 christel@christel.dk christelbach.com - all rights reserved

Elementer i legemet: Det endelige legeme F 2 m betsår af alle polynomier af grad mindre end m. Dette kan skrives således: F 2 m = a m 1 x m 1 + + a 1 x + a 0 a i 0,1 Vi kan for det enkelte element a m 1 x m 1 + + a 1 x + a 0 anvende den kortere form (a m 1 a 1 a 0 ). Altså en bitstreng af længde m. Vi får altså dermed bitstrenge og dette er implementationsmæssigt nyttigt ved operationer på elementer i legemet. Vi kan f. eks repræsentere elementerne i F 2 4 således 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111. Polynomiumsdivisions eksempel (x 6 + x 5 + x 2 +1) mod (x 4 +x+1) = x 3 +x 2 +x+1 fordi (x 6 + x 5 + x 2 +1) divideret med (x 4 +x+1) er lig med x 2 +x med rest x 3 -x 2 -x+1 4. ECDLP, Elliptisk kurve diskret logaritme problem Digital signatur og andre kryptografiske protokoller med elliptiske kurver er baseret på det underlæggende antagne svære problem, at beregne det såkaldte diskrete logaritmeproblem for elliptiske kurver. Dette problem kan kort beskrives således: Givet en elliptisk kurve over et endeligt legeme F q, et punkt P på kurven af orden n, P E(F q ) og et andet punkt på kurven Q = tp hvor 0 t n 1 Find t. Det er ikke trivielt på det endelige legeme at beregne hvordan et punkt er et resultat af en ukendt skalar multiplikation af et andet punkt. 5. Egnede og uegnede kurver og domæneparametre Når vi evaluerer en kurves egnethed og det legeme hvorpå den er defineret i forhold til kryptografisk brug, er der især to parametre vi er interesseret i. Den ene er hvor hurtig den er at regne på af hensyn til performance, og den anden er eventuelle egenskaber ved konstruktionen der gør det sårbart over for angreb. Men der er også helt grundlæggende egenskaber for at vi overhovedet kan få veldefinerede grupper med konsistente additionslove. Vi har desuden til kryptografisk brug behov for et basispunkt G Diskriminanten Helt grundlæggende må diskriminanten på kurven ikke være 0. 9 christel@christel.dk christelbach.com - all rights reserved

Er diskriminanten 0 svarer det til at flere rødder er ens. Hvis vi skriver højre side på kurven på formen X 3 + AX + B som produktet af dets rødder (X-r 1 )(X-r 2 )(X-r 3 ) (kan også være komplekse rødder) så er diskriminanten D= 4A 3 +27B 2 0 hvis og kun hvis rødderne r 1,r 2 og r 3 er forskellig. Hvis de ikke er forskellige har kurven såkaldte singulære punkter og det går galt med additionslovene hvis der findes sådanne punkter. Se evt. bilag B3. Supersingulære kurver En familie af kurver hvis orden, dvs. antallet af punkter på kurven, er #E(F p )=p+1. Disse kurver har vist sig særligt sårbare over for angreb, herunder det såkaldte MOV angreb og kan ikke bruges til kryptografisk brug. Supersingulære kurver over binære legemer har som tidligere nævnt formen y 2 + y = x 3 + Ax + B. Anormale kurver En kurve kaldes anormal hvis dets orden et primtal p er af samme størrelse som det underlæggende legeme F p, altså #E(F p )=p. Der findes en hurtig metode jf. [9] s 328 til at løse ECDLP på kurver af en sådan orden. Anormale binære kurver Koblitz kurver Kurver over F 2 m er, som før nævnt i modsætning til anormale kurver over F p, meget attraktive pga. af de effektive muligheder for fx addition. Binære legemer af sammensat orden Kurver over binære legemer af orden 2 m hvor m er et produkt af to primtal har vist sig sårbare over for et angreb ved hjælp af en såkaldt Weil Descent og skal derfor også undgås til kryptografisk brug. Næsten primtalsorden Hvis antallet af punkter på kurven er et produkt af små primtal er systemet sårbart over for Pohlig-Hellman angreb.jf [4] s 183. Det betyder at #E(F p ) skal være divisibel med et tilstrækkeligt stort primtal, altså at ordenen er et primtal (forskellig fra p) eller et såkaldt næsten-primtal tal s hvor faktorerne er q*n for n meget lille, fx 1,2,3 eller 4 og q større end 2^160 iflg. [5]. Desuden må s ikke dele q k -1 for k mindre end 20. Basepunktet som generator Basepunktet G behøver iflg. Koblitz [4]strengt taget ikke være en generator for gruppen, men skal kunne generere en undergruppe hvor det diskrete logaritmeproblem ikke er nemt. Det er tilfældet hvis ordenen af punktet G er et næsten primtal, dvs. kan deles med et primtal der er sammenligneligt med #E(F p ). Hvis vi sørger for at #E(F p ) er et stort primtal vil ethvert punkt på kurven (på nær O) være en generator. 10 christel@christel.dk christelbach.com - all rights reserved

Pseudo-randomisering For at fremtidssikre ECC systemer skal domæneparametrene udvælges randomiseret. Det vil her sige så randomiseret som en computer nu er i stand til. Med andre ord skal udfaldene statistisk set fordele sig jævnt uden sporbare mønstre. Det kalder vi pseudo-randomiseret. Randomiseringen sikrer dels mod at parametervalg vil være blandt eventuelle fremtidige fundne særligt sårbare parametre, men det vil også statistisk set gøre sårbarhed overfor forskellige allerede kendte angrebstyper ubetydelig. Efterfølgende kan man så undersøge om de tilfældigt udvalgte parametre lever op til ovenstående. Tilfældigheden vil også sikre at parametrene og de valgte kurver ikke er konstrueret så de med fuldt overlæg indeholder skjulte sårbarheder der bagefter kan bruges af konstruktøren. Randomiseringen skal være bevislig og af kryptografisk valid kvalitet. Domæneparameter generering og validering Disse ovenstående forudsætninger skal altså være opfyldt for at kurver og øvrige domæneparametre er velegnede til kryptografisk brug. En algoritme til sikring af at disse forudsætninger er til stede kan bl.a. ses i artiklen [14]af bl.a. Johnson, Menezes og Vanstone. Det er ligeledes en integreret del af FIPS-186-3 standarden at domæne parametre skabes og valideres efter specifikke algoritmer. Mere herom under Suite B. Anbefalinger og NIST Ifølge Rosing [4]er de kurver der er mest velegnede til kryptografisk brug, kurver over binære Galois legemer. Dvs. kurver på F 2 n, med andre ord kurver med karakteristikken 2, og udvidelsesgraden n, og det da kun hvis de ikke er supersingulære. De skal altså være af formen: y 2 + xy = x 3 + Ax 2 + B, B må ikke være nul., A kan godt være nul. Som det vil fremgå under relevant afsnit er de anbefalede såkaldte NIST kurver repræsenteret både med Koblitz kurver og random kurver på binære legemer men også kurver på kort Weierstrass form på primlegemer. Man vil bemærke i specifikationen til disse at udvidelsesgraden på de binære legemer netop er et primtal. Ligeledes er antallet af punkter på kurverne angivet for kurver over primlegemer og de ses at være forskellige fra p og p+1. Som vi vil se senere er det let at beregne antallet af punkter på binære legemer. Også antallet af punkter på NIST kurverne over de binære legemer vil vise sig at være forskellig fra p og p+1. Det er nu oplagt at det er vigtigt at tjekke antallet af punkter på kurven før den kan erklæres egnet til kryptografisk brug. 11 christel@christel.dk christelbach.com - all rights reserved

6. Antal punkter på kurven Som nævnt har vi behov for at kende gruppen orden, det vil sige antallet af punkter på kurven for at sikre at dette antal lever op til ovennævnte betingelser for ikke at gøre systemet sårbart. Punkttælling er et stort genstandsområde inden for kryptologi. Har vi en elliptisk kurver på kort Weierstrass form mod p vil vi ved gennemløb af x værdier for x=0 til x=p-1 løbe igennem antallet af mulige punkter på kurven. Alle de værdier for S, hvor S= x 3 -Ax+B, x = 0,1,2, p-1, som giver et kvadrattal, giver da punkterne på kurven. Da cirka halvdelen af alle heltal er kvadrattal modulus p (jf. senere afsnit om Kvadratisk rest ), og der for hvert kvadrattal findes to løsninger y og -y, vil antallet af punkter på kurven ikke være meget forskellig fra p. Hasse indkredser det lidt mere præcist med denne sætning Hasses sætning Antallet N af punkter på en kurve E, #E(F p ) vil være inden for intervallet #E(F p )=p+1-t hvor t <= 2*sqrt(p) Eksempel Vi kan da straks f. eks udtale os om antallet at punkter på f. eks E(F p ) hvor p=6277101735386680763835789423207666416083908700390324961279 Altså er #E(F p ) = 6277101735386680763835789423207666416083908700390324961290-t hvor t <2*sqrtp(p), At beregne kvadratroden af et stort tal kræver nærmere overvejelser da der ikke er indbygget en kvadradrodsmetode i BigInteger i C#. En genvej kan være at beregne e^log(p)/2 Math.Exp(BigInteger.Log(p) / 2) Problemet er at det ikke giver et præcist tal men blot 7,922816251426 * 10 28 En implementation kunne være baseret på Newton Raphson metoden, hvor vi beregner kvadratroden som en rekursiv beregning over g af (n/g + g)/2. Koden kan ses i bilag B7. Denne algoritme kan ikke beregne kvadratroden af et tal mod p, her er der behov for andre overvejelser. Dette er vist i afsnit om dette emne side: 34 Et kommercielt API Extreme.Numerics tilbyder alternativt en ekstrem let løsning med using Extreme.Mathematics; BigInteger calc = BigInteger.Sqrt(p); Kvadratroden af p afrundet til nærmeste hele tal giver: 79228162514264337593543950336 vi har da at t < 158456325028528675187087900670 Dvs antallet af punkter skal iflg. Hasse ligge mellem p+1-t og p+1+t 6277101735386680763835789423049210091055380025203237060610 og 6277101735386680763835789423366122741112437375577412861950 Anvender vi en standardiseret NIST kurve (jf. senere afsnit om Suite B) er antallet af punkter på kurven allerede givet: 12 christel@christel.dk christelbach.com - all rights reserved

I specifikationen er dette tal r givet som: 6277101735386680763835789423176059013767194773182842284081 Hvilket ses netop at ligge pænt i dette interval. Selv om t har en betragtelig størrelse er det meget mindre end p der eksponentielt er i ordnen 6,3*10 57 hvor t eksponentielt kan skrives: 1,6*10 29 Hasses sætning giver et resultat der naturligvis stadig er ret upræcist, hvis vi har behov for at finde det helt nøjagtige antal punkter. Det er klart at man kan gennemløbe alle mulige x værdier og lede efter matchende kvadrattal. Det er en meget ineffektiv algoritme der løses i tiden O(p) Antallet af punkter på binære kurver #E(F 2 m ) På Koblitz kurver hvor A=0 har vi iflg. [9] s 313, nemme udregninger af antal punkter på kurven. Det kan findes som #E(F2 k ) = 2 k + 1 - ((-1+sqrt(-7))/2) k - ((-1-sqrt(-7))/2) k hvor de to parenteser repræsenterer komplekse rødder i polynomiet Z 2 +Z + 2. Altså en meget let måde at beregne gruppens orden. Eksempel: #E(F 2 43 )= 2^43 + 1 - ((-1+sqrt(-7))/2)^43 - ((-1-sqrt(-7))/2)^43= 8796092023492 På E(F 2 163 ) har vi et resultat der let beregnes i fx Maple således: simplify(2^163 + 1 - ((-1+sqrt(-7))/2)^163 - ((-1-sqrt(-7))/2)^163) #E(F 2 163 )= 11692013098647223345629473816263631617836683539492 for k=233 er antallet af punkter: 13803492693581127574869511724554051042283763955449008505312348098965372 for k= 283 er antallet af punkter: 15541351137805832567355695254588151253139246935172245297183499990119263318 817690415492 for k=409 er antallet af punkter: 13221119375804971979038306160655420796568093659285624385692975800915228451 56996764202693033831109832056385466362470925434684 for k=571 er antallet af punkter 77290750460345166893907037818639746885978546594128699973144705029030382845 79120849072535914090826847338826851203301405845094699896266469247718729686 468370014222934741106692 Schoofs algoritme En af de mest almindelige metoder til punkttælling er Schoofs algoritme. Den kan beregne antallet af punkter i tiden O((log p)^6) altså en polynomial tids algoritme. Algoritmen er siden blevet optimeret af en række personer og denne kaldes SEA algoritmen. Den grundlæggende ide er at forsøge at finde antallet af punkter på kurven modulus t for tilstrækkeligt mange små t og så rekonstruere den ønskede orden ved hjælp af den kinesiske restsætning. Det er uden for denne opgaves 13 christel@christel.dk christelbach.com - all rights reserved

område at dykke nærmere ned i Schoofs algoritme. Man vil kunne se flere detaljer i [6]s 351. Kompleks multiplikation (CM) metode En anden tilgang til problemet er at vælge ordenen først og så generere en kurve med denne orden. Det er fx muligt via den såkaldte kompleks multiplikationsmetode CM. Ideen er jf. [14] følgende: vi lader E være en elliptisk kurve af orden N over F q. Vi beregner et Z=4q-(q+1-N) 2 og omskriver dette til DV 2 hvor D skal være kvadratfrit. Man siger da at kurven E har kompleks multiplikation med D. Kender kan D for en given kurve kan man effektivt beregne kurvens orden. CM metoden giver en måde hvorpå man først konstruerer et D for hvilket der eksisterer et E over F q, med en orden der er et næsten-primtal N, altså produktet n*h af et stort primtal n og et meget lille h forskellig fra 1, og dermed at N er forskellig fra q. Yderligere må n ikke dele q k 1 for k mellem 1 og 20. Herfra vil koefficienterne i kurven kunne konstrueres. Metoden er kun velegnet for små værdier af D. Til gengæld skulle metoden være særdeles velegnet netop for disse værdier, og overgår i effektivitet langt punkttælling på kurver over primlegemer for legemer af størrelsesordnen 160 bit, mens metoden ikke kan konkurrere med andre metoder på kurver over binære legemer. Jf [5]s 179 Detaljerede algoritmer er givet i IEEE-1386 [13] Jeg har kun en version draft 14 tilgængelig og her er metoden sammensat af følgende algoritmer. Processen er først at finde en relevant værdi for D, dernæst at finde en nær-primtalsorden 4 for kurven og slutteligt at konstruerer kurve og punkt. Altså først findes et kvadratfrit D der kan være CM diskriminant for p. I [13] afsnit A.14.2.2 har vi en algoritme for test af CM diskriminanter. A.14.2.3. Indeholder en algoritme til at finde en nær-primtals orden I A14.2 følger en algoritme til, ud fra ovenstående output, at konstruere en kurve med de ønskede egenskaber. Anvendes CM metoden over GF(p) kaldes den da også Atkin-Morain metoden. Der findes en rigtig fin detaljeret og praktisk gennemgang af metoden og de nødvendige mellemregninger med gode eksempler i [6] ss. 358-368 Complex multiplikation gennemregnet eksempel Det er som nævnt muligt at vælge en ønsket orden, N=h*r og herefter legeme. h er en lille cofakor og r et stort primtal (jf Pohlig-Hellman angrebet). Der skal findes et D så bl.a. Z=4*p-(p+1-N)^2 kan skrives som DV 2 for kvadratfrit D. Desuden skal en række kongruensbetingelser opfyldes: p mod 8 tjekkes og værdien af K=floor(sqrt(p)+1) 2 /r) beregnes. Så kan der konstrueres en kurve med den komplekse diskriminant D (sqrt(-d)) der opfylder betingelserne. Jo mindre D jo lettere at finde kurve. For små D findes en tabel for A og B startværdier 4 Et tal der enten et stort primtal p eller at faktorerne er et meget stort p og et meget lille q. 1,2 eller 3 fx 14 christel@christel.dk christelbach.com - all rights reserved

D A B 1 1 0 2-30 56 3 0 1 7-35 98 11-264 1694 For større D er der en længere algoritme der kan følges Eksempel 1: Forsøgsvist sættes N=2*631 og legemets størrelse til p=1249, vi beregner da Z=4*1249-(1249+1-1262)^2=4852. 4852 faktoriseres til 2 2 *1213. Det giver et stort D, der ganske vist opfylder kongruensbetingelserne, men er ikke så velegnet pga af D s størrelse. Eksempel 2: N=3*1399=4197, p=4273, dvs Z=4*4273-(4274-4197) 2 =11163. Faktoriseret: 3*61 2 Det er svært at ramme en Z værdi der giver DV 2 for passende værdier da de fleste tal har mange små faktorer, men ovenstående er et heldigt eksempel Vi tjekker p mod 8, 4273 mod 8=1 og værdien af K=floor(sqrt(p)+1) 2 /r)= floor((sqrt(4273)+1) 2 /1399)=3 Og vi har* at If p = 1 (mod 8) og K = 2 or 3, så er mulige værdier af D = 1, 2, 3, 5, 6, 10, 11, 13, 14, 17, 19, 21, Dvs D=3 og vi har E(F 4273 ):Y 2 =X 3 +1 og dermed har vi at kurven måske har ordenen #(Ef p )=4197 Det ses straks at punktet (0,1) er en løsning og en gennemregning viser at punktet desværre kun er genererer 6 punkter på kurven: (2,3)(0,1)(4272,0)(0,4272)(2,4270),O. Vi skal derfor se på en faktor på B jf 14.4.2 Derfor skal findes en faktor t*b. Ex: t=88 og punktet P:(1673,322) er punktets orden 1399, for punktet P: (14,456) er ordene 4197, så E(F 4273 ):Y 2 =X 3 +88 kan bruges. Mange værdier af t giver fornuftig brugbar kurve, mange andre værdier giver dog ikke det ønskede. Men det er muligt relativ let i dette eksempel at finde flere match, f. eks: t=1374 P:239,98 giver ordenen 4197 7. Angreb - Måder at finde n for np= Q Der findes forskellige måder at forsøge at løse ECDLP på for at ECC system. Nogle af systemerne udnytter uhensigtsmæssigheder i domæneparametre, andre er statistiske. De første kan man forsøge at gardere sig imod ved velvalgte kurver og legemer, de andre kan man forsøge at gardere sig imod ved at arbejde på så store 15 christel@christel.dk christelbach.com - all rights reserved

legemer med tilstrækkeligt stort antal punkter på kurverne at det tager tid og regnekraft udenfor det mulige. Herunder forsøgt meget kort at ridse ideen bag et par af de centrale angrebsmåder op. Denne oversigt er på ingen måde udtømmende og beskrivelserne er meget udetaljerede. Området er naturligvis genstand for meget stor interesse og der udgives vedvarende artikler med forbedring af eksisterende metoder og ind imellem helt nye metoder. Weil pairring og MOV attack Meget kort kan principperne bag Weil pairring og MOV attack beskrives således: Der findes en størrelse e m kaldes Weil-pairingen, der er en måde at beregne en skalarværdi for to punkter P og Q i E(F p ) af orden m således at e m (P,Q) m =1. Denne størrelse kan også kaldes den m te enhedsrod. Jeg vil ikke gå nærmere ind i hvordan weil-pairingen beregnes, det kræver en lidt længere forklaring, men blot eksemplificere. Detaljer kan fx findes hos Silverman[9] s.322. Finder vi fx ud af at Weil-pairingen af to punkter P og Q på E(F 631 ) er e 5 (P,Q)=242 betyder det at 242 5 =1 i F 631 Har vi desuden at f.eks P =3*P og Q =4*Q og at vi har beregnet e 5 (P,Q )=512 findes yderligere den egenskab at e 5 (P,Q) 12 =242 12 = 512=e 5 (P,Q )=e 5 (3P,4Q) Sådanne egenskaber kan vi bruge til at løse det ECDLP med via den såkaldte MOV algoritme. Ideen er at transformere ECDLP i F p til at løse DLP i F* p k. MOV algoritmen efter Menezes, Okamoto og Vanstone, ser ud som følger for to punkter P og Q hvor Q=nP på E(F p ) for ukendt n. Lad P have primtalsorden j større end sqrt(p)+1 1. Beregn antallet af punkter N på E(F p k ). Vi har at j deler N fordi E(F p ) har et punkt af orden j. 2. vælg et tilfældigt punkt T der ligger i E(F p k ) men ikke i E(F p ) 3. beregn T =(N/j)*T. Hvis T = O vælg et andet T. Ellers er T et punkt af ordenen j. 4. beregn Weil-pairingen for følgende punkter a=e j (P,T ) der vil ligge i F* p k. og tilsvarende for b = e j (Q,T ) 5. Find en løsning n til b=a n (med andre ord løs DLP i F* p k.) 6. Vi har da at Q=nP I tilfælde af supersingulære kurver eller anormale kurver giver algoritmen simple løsninger, generelt kan DLP løses f.eks ved hjælp af index metoden. Jf [9]s.162 og se evt. her 5 5 http://en.wikipedia.org/wiki/index_calculus_algorithm 16 christel@christel.dk christelbach.com - all rights reserved

Pollards Rho metode Pollards Rho metode er normalt en metode til at faktorisere et tal n =pq for p og q to store primtal. Men metoden er også relevant forhold til at finde n for Q=nP Ideen bag Pollards Rho metode er mod n at finde to forskellige talpar (a 1,b 1 ) og (a 2,b 2 ) så a 1 *P + b 1 *Q = a 2 *P + b 2 *Q da vi så har at (a 1 -a 2 )*P =(b 2 -b 1 )*Q=(b 2 -b 1 )*t*p og dermed at (a 1 -a 2 ) =(b 2 -b 1 )*t mod n. t kan da beregnes som t= (a 1 -a 2 )* (b 2 -b 1 ) -1 mod n Metoden er så at konstruere en funktion der laver tilfældige kombinationer af talpar indtil et match findes. Et lille eksempel jf [5]. Hvis vi har E(F 229 ): Y 2 =X 3 +x+44 og har P=(5,116) med primtalorden 239 og Q=(155,166)) hvor Q= np for ukendt n. Finder man så ved hjælp af iterationer over tilfældige kombinationer f.eks at 192P+24Q=213P+104Q=(57,105), da har vi at t=(192-213)*(104-24) -1 mod 239=176. Altså at 176*Q=P. Metoden er statistisk da der ikke gives nogen garanti for match, men match kan forventes at findes i tiden O(sqrt(N)), N gruppens orden. Pohlig Hellman metode Denne metode virker hvis vi har at ordenen N af punktet P er et sammensat tal som vi kan faktorisere. Vi har en gruppe baseret på en elliptisk kurve E over F p og punkterne P og Q hvor Q=nP for et ukendt n. Antag at faktoriseringen af N er følgende N = q 0 e 0 q 1 e 1 q 2 e 2. q i e i Hvis vi da har at for et q med præcis den potens e der deler N kan vi skrive n som en q-base ekspansion (var fx q=2 og e=1 ville det svare til en binær ekspansion) Vi vil da forsøge med alle faktorerne i N ved at finde n modulus hvert q i e i og efterfølgende bruge den kinesiske restsætning 6 til at finde n mod N. Vi beregner for alle faktorpotenserne en mængde af punkter T som et skalarprodukt af alle værdier af j mellem 0 og q-1 og N/q*P for at finde de forskellige værdier for n Washington [2] viser et eksempel for E(F 599 ) med punkter P=(60,19 og Q=(277,239) hvor ordenen af P;N=600 der faktoriseres til 2 3 *3*5 2. Ideen er så at beregne n mod 8, 3 og 25 og kombinere disse. Han får følgende kongruenser n= 2 mod 8,x=2 mod 3 og x=16 mod 25. Det giver til sammen n=266 mod 600 hvorfor n=266. Denne metode kan man altså gardere sig imod ved at sikre at ordenen af punktet er et primtal. 6 http://mathworld.wolfram.com/chineseremaindertheorem.html 17 christel@christel.dk christelbach.com - all rights reserved

Pohlig-Hellmann angreb gennemregnet Eksempel på kurve hvor punktets orden ikke er af primtals orden. E(F 5437 ):Y 2 =X 3 3X + 4483, Base point example P: (10,4) Orden af punkt P er N= 890 Man kan ved at regne på kurve eksempelvis se at 8P giver (1298,210) med orden 445. Et kvalificeret gæt på gruppens orden: 5340, da 6*890= 5340og 12*445=5340, 5437-5340=97 og tallet faktoriseres således 5340=2 2 *3*5*89 Da punkternes orden skal gå op i gruppens orden og gruppens orden ifgl Hasse ikke er meget forskellig fra antallet af elementer i legemet er det et rimeligt bud. Vi vil da forsøge at udføre et Pohlig Hellmann attack på ECDLP i denne gruppe Vi har et Q=(3210,4634)=k*P for ukendt k Punktet P=(10,4) s orden N= er 890= 2*5*89 Vi har et Q=(3210,4634)=k*P for ukendt k, så vi skal i stedet forsøget at finde k for kp mod 2, mod 5 og mod 89. Det er klart det er sværest at finde det mod 89 og dette problem skaleres op jo større primfaktorer gruppens orden er sammensat af. Vi beregner elementerne T for hver faktorportens i N. For k mod 2 Beregn T=j(N/q)*P for 0<=j<=q-1, her er q så lig med 2 Dvs T=O,890/2*P= O,(4085,0), vi vil så finde N/q*Q =445*( 3210,4634)=O dvs: Vi har altså 0*(N/2*P) og dermed at k 0 =0 Dvs Q 1 =Q-0P=Q. Dvs k=0 mod 2 (med andre ord et lige tal) For k mod 5 Beregn T=j(N/q)*P for 0<=j<=q-1, her er q så lig med 5 og N/q=178 så vi har T=O,178P,356 P,534P,712P= T=O, (3474,2391),(2641,4651),( 2641,786),(3474,3046) N/5*Q=178*Q=(2641,4651) og vi ser at det er det samme som det tredieelement i T listen ovenfor og at det svarer til N/5*Q= 2*N/5*P altså k 0 =2, Det vil sige k=2 mod 5 For k mod 89 18 christel@christel.dk christelbach.com - all rights reserved

Beregn T=j(N/q)*P for 0<=j<=q-1, her er q så lig med 89 og N/q=890/89=10 så vi har T=O,10P,20P,30P,40P,50P,60P,70P, 39*10P,40*10P,41*10P,42*10P,..,87*10P,8 8*10P = T=O, (3820,4000),( 5098,1859),( 3664, 2503), (819,5180). N/89*Q=10*Q=(819,5180). Det kan vi ved mange lange beregninger se er det samme som det element i T listen hvor j=42,altså 420*P ovenfor og det svarer til N/89*Q= 42*N/89*P altså k 0 =42, Det vil sige k=42 mod 89 Vi har derfor følgende kongruenser:k=0 mod 2, k=2 mod 5, og k=42 mod 89. Det løses med kinesisk restsætning til k=42. Som eksemplet viser giver større primtalsfaktorer længere beregninger, og det er da også grunden til at angrebet er velegnet især for punkter sammensat af små primtalspotenser. For et beskytte sig mod Pohlig-Hellman angrebet skal kan man også vælge punkter af sammensat orden hvor ordenen er sammensat af en stort primtal og men meget lille co faktor. 8. Suite B Suite B 7 er en amerikansk standard udgivet af National Security Agency(NSA) for sikker kommunikation på niveauet SECRET (svarende til dansk klassifikation HEMMELIGT). Standarden er godkendt af NIST der er den amerikanske standardiseringsinstitut National Institute of Standards and Technology. Der findes også en Suite A. Den er beregnet til særlig beskyttelse af sensitiv information (TOP SECRET) og indeholder fortrolige algoritmer. Denne standard vil ikke blive offentliggjort. Suite B indeholder en lang række dokumenter vedr. standarder for protokoller og algoritmer herunder bl.a. andet følgende dokumenter vedr. kryptografi med Elliptiske kurver. De refererer desuden til de af NIST anbefalede elliptiske kurver til kryptografisk brug. FIPS-186-3 Elliptic Curve Digital Signature Algorithm (ECDSA) FIPS PUB 186-3 (using the curves with 256 and 384-bit prime moduli) Implementationsguide til FIPS-186-3 Suite B Implementers' Guide to FIPS 186-3 (ECDSA) - February 2010 Matematiske rutiner til NIST kurver Companion document Mathematical Routines for NIST Prime Elliptic Curves 7 http://www.nsa.gov/ia/programs/suiteb_cryptography/ 19 christel@christel.dk christelbach.com - all rights reserved

NIST anbefalinger, standard IEEE P1363-Annex A (kommercielt produkt 149$) 8 Suite B indeholder bl.a. anbefaling eller krav om man vil, til hvilke domæneparametre herunder hvilke kurver anvendes til kryptografisk brug i FIPS- 186-3 appendix D. Jeg vil i denne gennemgang ikke se nærmere på protokolkrav på Suite B niveau og vil primært undersøge og anvende de anbefalede såkaldte NIST kurver til demonstrationsbrug. Implementationsguide og de optimerede matematiske rutiner er tilføjet for nylig og er generelt ikke anvendt her, men visse steder kommenteret i forbindelse med implementationsovervejelser. NIST anbefalinger Legemer NIST anbefaler følgende endelige legemer. 5 primlegemer og 5 binære legemer. Primlegemer for F p for følgende værdier af p: p = 2 192 2 64 1 = 6277101735386680763835789423207666416083908700390324961279 p = 2 224 2 96 + 1 = 26959946667150639794667015087019630673557916260026308143510066298881 p = 2 256 2 224 + 2 192 + 2 96 1 = 115792089210356248762697446949407573530086143415290314195533631308867097853951 p = 2 384 2 128 2 96 + 2 32 1 = 394020061963944792122790401001436138050797392704654466679482934042457217714968703290472660 88258938001861606973112319 p = 2 521 1 = 686479766013060971498190079908139321726943530014330540939446345918554318339765605212255964 0661454554977296311391480858037121987999716643812574028291115057151 Disse primmoduli er angivet på en speciel form kaldet generaliseret Mersenne form. Beregninger på modulus på denne form giver beregningsmæssige fordele. Et optimeret kryptosystem vil med stor fordel kunne implementere artimetik der udnytter disse frem for 8 https://sbwsweb.ieee.org/ecustomercme_enu/start.swe?swecmd=gotoview&sweview=catalog+vi ew+(esales)_standards_ieee&mem_type=customer&sweho=sbwsweb.ieee.org&swets=1192713 65 20 christel@christel.dk christelbach.com - all rights reserved

standard implementation der ville virke på ethvert primtal. Detaljer omkring denne optimering vil fremgå af guiden 9 hørende til Suite B, samt af FIPS- 186-3. Ideen er overordnet set at en binær baseret ekspansion giver særlige fordele hvor beregninger kan foretages i forenklet binære operationer. Fx er modulus for kurven P-192 skrevet som p = 2 192 2 64 1. Det betyder at ethvert tal mindre end p 2 kan skrives på formen A=A 5 *2 320 + A 4 *2 256 +A 3 *2 192 +A 2 *2 128 +A 1 *2 64 +A 0 Her vil hvert A i så være et 64 bit tal, og det kan da betragtes som en konkatenering af 64-bit ord således A=(A 5 A 4 A 3 A 2 A 1 A 0 )). Modulus beregninger vil da kunne beregnes som en sum af små tal reduceret modulus p Vil vi f.eks beregne B = A mod p har vi at B= T + S 1 + S 2 + S 3 mod p hvor T=(A 2 A 1 A 0 ), S 1 =(A 3 A 3 ), S 2 =(A 4 A 4 0), S 3 =(A 5 A 5 A 5 ). Tilsvarende teknik virker på de andre primlegemer. Optimering på NIST Kurver numerisk eksempel Matematiske rutiner på p192 Beregn r= a mod p 192 r kan da beregnes som t + s1 + s2+s3 og ved efterfølgende subtraktion af op til tre multiplum af p 192 Så lad os tage et eksempel hvor a er repræsenteret ved 64 bit enheder med værdien 2305 (altså a6,a5,a4,a3,a2,a1,a0)=(0,0,0,2,3,0,5) Vi har da at T er (a2 a1 a0) = 305 Og S1=(a3 a3), s2=(a4 a4 0), S3 =(a5 a5 a5). Dvs: T=305, S1=22, S2=000, S3=000 T + S1+S2+S3= 327 der beregnes til at være: Så r= t + s1 + s2+s3 = 327= 3*2^(2*64)+ 2*2^(1*64) +7*2^(0*64) = 1020847100762815390427017310442723737607 Hvis vi i stedet beregner det normalt : a= 2305 angives som 64 bit giver: 2*2^(3*64)+ 3*2^(2*64)+ 0*2^(1*64) +5*2^(0*64)= 12554203470773361528692425947178148222594834711223373660165 Hvis vi modulerer det med p=2 192 2 64 1 = 6277101735386680763835789423207666416083908700390324961279 Får vi > 12554203470773361528692425947178148222594834711223373660165 mod 6277101735386680763835789423207666416083908700390324961279; Hvilket i Maple præcist giver 1020847100762815390427017310442723737607. 9 Companion document Mathematical Routines for NIST Prime Elliptic Curves 21 christel@christel.dk christelbach.com - all rights reserved

Det ses altså at være langt enklere at regne via de optimerede rutiner. Binære legemer F 2 163 = F 11692013098647223345629478661730264157247460343808 F 2 233 = F 13803492693581127574869511724554050904902217944340773110325048447598592 F 2 283 = F 15541351137805832567355695254588151253139254712417116170014499277911234281641667985408 F 2 409 = F 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569 695182424050046716608512 F 2 571 = F 7729075046034516689390703781863974688597854659412869997314470502903038284579120849072387533163845155 924927232063004354354730157322085975311485817346934161497393961629646848 Man vil her bemærke at det netop er disse legemer jeg beregnede antallet af punkter for i afsnittet under Elliptiske kurver over binære legemer. NIST kurver På disse legemer specificeres så kurver med tilfældigt valgte parameter der opfylder en række krav. På primlegemerne specificeres en kurve på hvert legeme. På de binære legemer specificeres både en tilfældig valgt kurve og en Koblitz kurve pr legeme. Kurvespecifikation kaldes også domæneparametre. Følgende værdier afgives for at muliggøre kryptografisk brug. Først for kurver over primlegemer; værdien af henholdes vis A og B for den elliptiske kurve på den korte Weierstrass form: Y 2 =X 3 + AX + B, samt koordinaterne for et basepunkt G - G x og G y. Desuden oplyses forskellige andre værdier til kontrol af kurvens egnethed, herunder antallet af punkter på kurven (kurvens orden) og to sammenhængende kontrolværdier, et seed S og et output c til verifikation af at kurven faktisk opfylder kravet om at være tilfældig. For kurver over binære legemer gives et reduktionspolynomium af grad m, koefficienterne A og B for en kurve på formen: y 2 + XY = X 3 +AX 2 +B, koordinaterne for at basepunkt G, G x og G y samt punktets orden. Dvs det t for hvilket tg=o Valg af reduktionspolynomium. Ved anvendelse af polynomialbasis repræsentation for F 2 m giver det en række muligheder for valg af reduktionspolynomium. Det forholder sig dog sådan at der findes en række meget konkrete anbefalinger for valg af disse. Ifølge IEEE 1363-2000, FIPS-186-2 og ANSI X9.62 vælges så enkle reduktionspolynomier som muligt efter følgende princip: Hvis der findes et ireducibelt trinomium af grad m over F 2, X m + X k + 1, vælges dette, og da med så lille en værdi af k som muligt. Hvis dette ikke findes vælges der i stedet et pentanomium. X m + X k 3 + +X k 2 + X k 1 + 1 med følgende kriterier for valg af k værdier. k 3 vælges så lille som muligt og for dette valg så lille et k 2 som muligt, og for disse værdier af k 3 og k 2 vælges så lille et k 1 som muligt. 22 christel@christel.dk christelbach.com - all rights reserved

Dette betyder for ovennævnte binære legemer ifølge Doche[1] 10, følgende valg af reduktionspolynomier: F 2 163 X 163 + X 7 + +X 6 + X 3 + 1 F 2 233 X 233 + X 74 + 1 F 2 283 X 283 + X 12 + +X 7 + X 5 + 1 F 2 409 X 409 + X 87 + 1 F 2 571 X 571 + X 10 + +X 5 + X 2 + 1 9. Generering og verifikation af domæne parametre Et af de centrale aspekter ved sikkerheden bag brug af EC til kryptografi er sikring af at kurverne som nævnt er valgt tilfældigt således at en udbyder af en krypteringsservice ikke kan vælge sig parametre der muliggør forskellige kendte angreb. Ifølge NIST og algoritmen 4.17 [5] genereres A og B på baggrund af et valgt F p ved hjælp af en hash funktion således at outputtet ikke kan være forhåndsvalgt ud fra en antagelse om at hash funktionen er en envejsfunktion med uforudsigeligt og entydigt resultat. Her er algoritmen beskrevet med SHA1 som det skal være ifølge fips-186-3 Input: primtal p og en 160 bit hashfunktion H Output: et seed S og A og B for den elliptiske kurve E på kort Weierstrass form. 1. sæt t=loft(log 2 p), s = floor(t-1)/160, v= t-s*160 2. Vælg tilfældig bitstreng S af længde g>= 160 bit 3. beregn h=sha1(s), og lad r 0 være bitstrengen af længde v bit ved at tage de v bit længst til højre af h 4. lad R 0 være bitstrengen der er resultatet ved at sætte den bit længst til venstre til 0. 5. lad z være det tal hvis binære repræsentation er S 6. for i=1;i<=s;i++ 1. lad s i være g bit streng-repræsentationen af tallet (z+i) mod 2 g 2. Beregn R i = H(s i ) 7. Lad R være strengkonkateneringen af R i værdierne : R=R 0 R 1 R 2. R s 8. lad r være det tal hvis binære repræsentation er R 9. hvis r=0 eller hvis 4r + 27 = 0 mod p tilbage til 2. o g vælg ny bitstreng 10. Vælg tilfældig A og B i F p forskellig fra 0 så r*b 2 =A 3 11. returner S,A og B. 10 Tabel s 216, kap 11.2 Finite fields of characteristic 2. Handbook of Elliptic and Hyperelliptic Curve Cryptography 23 christel@christel.dk christelbach.com - all rights reserved

De af NIST anbefalede kurver er alle genereret ved hjælp af SHA-1 Man kunne godt stille spørgsmål ved kvaliteten af dette valg, idet SHA-1 er kompromitteret. For at en hashfunktion kan betegnes som værdifuld skal entydigheden være sikker. Da ingen hashfunktioner af endelig længde pr konstruktion kan være kollisionsfri skal i praksis være så kollisionsfrie som muligt, og endnu vigtigere, det må ikke være muligt at forudsige resultatet af funktionen, så der f.eks. kan konstrueres en kollision På Crypto-2004 viste Xiaoyun Wang, Yiqun Lisa Yin, and Hongbo Yu at det er muligt at generere kollisioner væsentlig hurtigere end hidtil antaget med SHA-1. Ifølge Bruce Schneier 11 reduceres til 2^69 operationer frem for 2^80 I den seneste version af standarden, fips-180-3 fra juni 2009, er de anbefalede kurver fortsat genereret med et specificeret 160 bit seed og SHA-1 anvendt til at dokumentere at parametrene er valgt pseudo-randomiseret. Det er altså en teoretisk mulighed at de af NIST anbefalede kurver til Suite B standarden er konstrueret så nogen har sikret sig parametre med for dem kendte genveje til angreb. Man kunne også stille spørgsmål ved sikkerheden i at anvende domæneparametre der er offentliggjorte og forlangt anvendt af kun den ene part i en kommunikation hvor den eneste sikkerhed for tilfældighed er en brudt hash algoritme. Omvendt har de anbefalede kurver nu i en årrække været offentligt tilgængelige og er blevet nøje gransket af utallige personer og eventuelt indbyggede svagheder måtte forventes at være fundet. Ønsker man at konstruere sine egne domæneparametre undgår man naturligvis at andre har indbygget et eller flere, af dem kendte, svagheder, omvendt vil da restere et arbejde med sikring af at kurverne lever op til kendte krav og kan modstå kendte angreb. Desuden vil den klassiske problemstilling altid lure i baggrunden at når man anvender hjemmekonstruerede parametre ikke er gennemprøvede på samme måde som kendte standarder, er der altid risiko for at overse oplagte problemer, ikke blot i konstruktionen, valg og test men naturligvis også i implementation. Verifikation NIST kurve eksempel over primlegeme, kaldet P-192 E(F p ) A=-3 11 http://www.schneier.com/blog/archives/2005/02/sha1_broken.html 24 christel@christel.dk christelbach.com - all rights reserved

B er angivet som: B= 2455155546008943817740293915197451784769108058161191238065 p = 2^192-2^64-1 =6277101735386680763835789423207666416083908700390324961279 Base punkt G er I fips-186-2 og 3 angivet I hex til : Gx:188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012 Gy:07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811 Det giver i decimal form: Gx: 602046282375688656758213480587526111916698976636884684818 Gy: 174050332293622031404857552280219410364023488927386650641 Det kan først efterprøves og bekræftes at punktet faktisk G ligger på kurven idet B kan verificeres at være lig med B=Gy^2 -Gx^3 (-A)*Gx mod p= (174050332293622031404857552280219410364023488927386650641)^2- (602046282375688656758213480587526111916698976636884684818)^3-(-3)*( 602046282375688656758213480587526111916698976636884684818) mod 6277101735386680763835789423207666416083908700390324961279 = 2455155546008943817740293915197451784769108058161191238065 At kurven virkelig er pseudo-random skulle så kunne verificeres ved hjælp af det angivne seed S til en hashbaseret algoritme og sammenligne det med det angivne output c af denne. c tjener yderligere til at bekræfte at domæneparameteren, koefficienten B, opfylder kravet B 2 *c=-27(mod p ) Jeg vil derfor her ved hjælp af algoritmen angivet i appendix 6.5 fips-180-3, også specificeret i [5] s 176 forsøge at verificere at c og B er korrekte via 160 bit hashalgoritmen SHA-1. Verifikation af pseudo-randomisering Givet 160-bit seedet s, kan man verificere at koefficienterne A og B er beregnet fra den hashfunktionen SHA1 som følger Lad l være bitlængden af p, og definer v = ( l - 1) /160 (floor) w = l - 160v - 1 1. Beregn h := SHA-1(s). 2. Lad h0 være bitstrengen fremkommet ved at tage de w bil længst til højre af h 3. Lad z være heltallet hvis binære ekspansion er givet ved 160 bit strengen s 4. For i fra 1 til v do 4.1 Definer 160-bit strengen si to til at være den binære ekspanstion af (z + i) mod (2160 ). 4.2 Beregn hi :=SHA-1(si). 25 christel@christel.dk christelbach.com - all rights reserved

5. Lad h være bitstrengen fremkommet ved strengkonkatenering af h0, h1,..., hv som følger: h = h0 h1... hv. 6. Lad c være det heltal hvis binære ekspansion er givet ved bitstrengen h 7. Verificer at b 2 *c= -27 (mod p). Sha1 hashing af hexværdier Det viser sig til at det ikke er helt lige meget hvordan man tager hashværdien af de angivne hexværdier. Det er ikke specificeret hvordan hexværdien skal fortolkes og hvordan encodingen foregår. SHA1 er ganske vist standardiseret i Fips men mange forskellige implementationer er mulige og afhængig af valg af programmeringssprog. Det er fx afgørende at seedet ikke fortolkes som en tekststreng. Det kan dog heller ikke blot oversættes til et stort heltal. Efter en række forsøg er det lykkes at finde en fortolkning der giver det rigtige resultat ved at parse hexværdierne til et bytearray der så hashes blok for blok. Herunder et eksempel. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; using System.Security.Cryptography; namespace hashhex class Program public static byte[] FromHex(string s) byte[] ba = new byte[s.length / 2]; for (int i = 0; i < ba.length; i++) ba[i] = byte.parse(s.substring(2 * i, 2), NumberStyles.HexNumber); return ba; public static string HexSHA1(String s) HashAlgorithm alg = new SHA1Managed(); byte[] b = FromHex(s.Replace(" ", "")); alg.transformfinalblock(b, 0, b.length); return BitConverter.ToString(alg.Hash).Replace("-", ""); public static void Main(string[] args) Console.WriteLine(HexSHA1("bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5")); Console.WriteLine(HexSHA1("bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc6")); Console.ReadKey(); Denne implementation herover virker, mens mit første forsøg - en implementation som vist i uddrag herunder, ikke virker. Den i hex angivne værdi s oversættes til et stort helttal, dette tal parses til et bytearray og sha1 værdien at disse printes ud i binært format. 26 christel@christel.dk christelbach.com - all rights reserved