Kryptografi med Elliptiske kurver



Relaterede dokumenter
Kryptografi med Elliptiske kurver

Integer Factorization

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

Opgave 1 Regning med rest

Kryptering kan vinde over kvante-computere

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

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

Køreplan Matematik 1 - FORÅR 2005

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

Projekt 7.9 Euklids algoritme, primtal og primiske tal

Af Marc Skov Madsen PhD-studerende Aarhus Universitet

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

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

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

Elliptisk Kurve Kryptografi. Jonas F. Jensen

Bits, bit operationer, integers og floating point

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

Hyperelliptisk kurve kryptografi

Grundlæggende Matematik

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

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

Matematisk modellering og numeriske metoder. Lektion 16

Repræsentation af tal

Abstrakte datatyper C#-version

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

De rigtige reelle tal

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

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

Konfidentialitet og kryptografi 31. januar, Jakob I. Pagter

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

Omskrivningsregler. Frank Nasser. 10. december 2011

Noter om polynomier, Kirsten Rosenkilde, Marts Polynomier

Matematikken bag kryptering og signering RSA

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

Note om endelige legemer

Grundlæggende Matematik

RSA-kryptosystemet. RSA-kryptosystemet Erik Vestergaard

Matematikken bag kryptering og signering NemID RSA Foredrag i UNF

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

Fejlkorrigerende koder, secret sharing (og kryptografi)

Datastrukturer (recap)

Fagets IT Introduktion til MATLAB

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

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

Fejlkorligerende køder Fejlkorrigerende koder

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

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

Talteori: Euklids algoritmer, modulær aritmetik

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

Kvadratiske matricer. enote Kvadratiske matricer

TALTEORI Ligninger og det der ligner.

Talteoriopgaver Træningsophold ved Sorø Akademi 2007

Periodiske kædebrøker eller talspektre en introduktion til programmet periodisktalspektrum

Grundlæggende køretidsanalyse af algoritmer

Fredag 12. januar David Pisinger

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

Datastrukturer (recap)

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

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

DM507 Algoritmer og datastrukturer

Kursusgang 3 Matrixalgebra Repetition

Affine - et krypteringssystem

Foredrag i Eulers Venner 30. nov. 2004

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.

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

2. Gruppen af primiske restklasser.

DesignMat Uge 1 Gensyn med forårets stof

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

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Selvstudium 1, Diskret matematik

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

Forelæsning Uge 4 Torsdag

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

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013

10. Nogle diofantiske ligninger.

Eulers sætning Matematikken bag kryptering og signering v.hj.a. RSA Et offentlig nøgle krypteringssytem

Sortering. Eksempel: De n tal i sorteret orden

Matematikken bag kryptering og signering RSA

Indhold. 1 Indledning Baggrund... 2

Endnu mere om tilfældige tal

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

Matricer og lineære ligningssystemer

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

Repræsentation af tal

Matematisk induktion

DM507 Algoritmer og datastrukturer

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.

π er irrationel Frank Nasser 10. december 2011

Tip til 1. runde af Georg Mohr-Konkurrencen - Talteori, Kirsten Rosenkilde. Opgave 1. Hvor mange af følgende fem tal er delelige med 9?

DM507 Algoritmer og datastrukturer

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

Introduktion til Kryptologi

Matematiske metoder - Opgavesæt

DANMARKS TEKNISKE UNIVERSITET

Introduktion til funktioner, moduler og scopes i Python

Andengradsligninger. Frank Nasser. 12. april 2011

Teoretiske Øvelsesopgaver:

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.

sætning: Hvis a og b er heltal da findes heltal s og t så gcd(a, b) = sa + tb.

Transkript:

Kryptografi med Elliptiske kurver med perspektiv til Suite B CHRISTEL BACH KRYPTOLOGI C, MASTERPROJEKT, 2010 MASTER I KRYPTOLOGI ÅRHUS UNIVERSITET 1 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.4 indeholder flere smårettelser samt udvidede eksempler på pohlighellmann 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 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 3 christelbach.com - all rights reserved

ANTALLET AF PUNKTER PÅ BINÆRE KURVER #EE(FF22mm )... 13 SCHOOFS ALGORITME... 13 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 4 christelbach.com - all rights reserved

ECDSA DIGITAL SIGNATUR MED ELLIPTISKE KURVER... 49 Lille ECDSA eksempel... 50 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 5 christelbach.com - all rights reserved

Danske standarder... 90 Studieordning... 92 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 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 FF pp hvis ordenen er et primtal og FF pp nn hvis ordenen er en primtalspotens. Man ser også betegnelsen GGGG pp nn da disse legemer også kan kaldes Galois legemer. Har vi et legeme FF pp nn 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 FF pp er defineret som EE(FF pp ) = (xx, yy): xx, yy FF pp hvvvvvv yy 2 = xx 3 + AAAA + BB OO hvor diskriminanten 4A 3 + 27B 2 er forskellig fra nul og A og B ligger i F p. Betegnelsen OO 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 + OO= OO+ P = P. Der gælder ligeledes at addition af punkter P+Q = Q+P = R, hvor både P og Q ligger i EE(FF pp ) giver et nyt punkt R der også ligger i EE FF pp. 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) = OO. Dermed er kravene opfyldt for at EE(FF pp ) er en endelig gruppe. Vi definerer k*p som P+P+P+ +P i alt k P er lagt sammen med punkt addition. 7 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 mm. FF 2 mm kaldes også binære legemer. Elliptiske kurver over binære legemer vælges på formen Nonsupersingulær: yy 2 + xxxx = xx 3 + AAxx 2 + BB hvor A er 0 eller 1, B!=0, Eller supersingulær: yy 2 + yy = xx 3 + AAxx + BB. 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 FF 2 mm for et primtal m. Det betyder at man ved at anvende en såkaldt frobenius mapping (der er en homomorfi af EE(FF 2 mm ) 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 EE(FF 2 mm ) 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. FF 2 mm 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 FF 2 mm kan skrives på formen aa 0 αα 0 + aa 1 αα 1 + aa 2 αα 02 + + aa mm 1 αα mm 1 hvor aa ii 0,1 Vi har altså en basis αα 0, αα 1, αα 2,, αα mm 1 af FF 2 mm over FF 2 Polynomial basis repræsentation, Reduktionspolynomium Et irreducibelt polynomium af grad m over FF 2 definerer en polynomial basis repræsentation af FF 2 mm 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 ff(xx) = xx mm + tt mm 1 xx mm 1 + + tt 2 xx 2 + tt 1 xx + tt 0 hvor tt ii 0,1 for i=0,1,2 m-1. 3 Companion document Mathematical Routines for NIST Prime Elliptic Curves 8 christelbach.com - all rights reserved

Elementer i legemet: Det endelige legeme FF 2 mm betsår af alle polynomier af grad mindre end m. Dette kan skrives således: FF 2 mm = aa mm 1 xx mm 1 + + aa 1 xx + aa 0 aa ii 0,1 Vi kan for det enkelte element aa mm 1 xx mm 1 + + aa 1 xx + aa 0 anvende den kortere form (aa mm 1 aa 1 aa 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 FF 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 FF qq, et punkt P på kurven af orden n, PP EE(FF qq ) og et andet punkt på kurven QQ = tttt hvor 0 tt nn 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 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 yy 2 + yy = xx 3 + AAxx + BB. 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 OO) være en generator. 10 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 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 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 #EE(FF 22 mm ) 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 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 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 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 = OO 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 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 NN = qq 0 ee 0 qq 1 ee 1 qq 2 ee 2. qq ii ee ii 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 qq ii ee ii 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 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 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 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: pp = 2 192 2 64 1 = 6277101735386680763835789423207666416083908700390324961279 pp = 2 224 2 96 + 1 = 26959946667150639794667015087019630673557916260026308143510066298881 pp = 2 256 2 224 + 2 192 + 2 96 1 = 115792089210356248762697446949407573530086143415290314195533631308867097853951 pp = 2 384 2 128 2 96 + 2 32 1 = 394020061963944792122790401001436138050797392704654466679482934042457217714968703290472660 88258938001861606973112319 pp = 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 christelbach.com - all rights reserved