Przemysław D ˛abrowski Rafał Gliwa Janusz Szmidt Robert Wicik
Transkrypt
Przemysław D ˛abrowski Rafał Gliwa Janusz Szmidt Robert Wicik
Przemysław Dabrowski ˛ Rafał Gliwa Janusz Szmidt Robert Wicik Wojskowy Instytut Łaczności ˛ Warszawska 22A 05-150 Zegrze Południowe p.dabrowski, r.gliwa, j.szmidt, [email protected] 26-28 września 2016 r. GENERACJA I IMPLEMENTACJA KRYPTOGRAFICZNIE SILNYCH KRZYWYCH ELIPTYCZNYCH GENERATION AND IMPLEMENTATION OF CRYPTOGRAPHICALLY STRONG ELLIPTIC CURVES si˛e bezpieczeństwo kryptosytemu RSA. Na przykład, dla zapewnienia bezpieczeństwa na poziomie 128 bitów długości klucza w kryptografii symetrycznej, w kryptosystemie RSA należy stosować klucze o długości 3072 bitów, a krzywe eliptyczne wymagaja˛ wtedy kluczy o długości 256 bitów. Tabela 1 [11] podaje odpowiadajace ˛ długości kluczy kryptograficznych w bitach przy zachowaniu porównywalnego poziomu bezpieczeństwa. Streszczenie: Krzywe eliptyczne nad ciałami skończonymi stanowia˛ istotna˛ cz˛eść kryptografii klucza publicznego. Bezpieczeństwo kryptosytemów z krzywymi eliptycznymi oparte jest na trudności obliczeniowej problemu logarytmu dyskretnego w grupie punktów na krzywej eliptycznej. W pracy przedstawione sa˛ wymagania nakładane na kryptograficznie silne krzywe eliptyczne, uzasadnienie tych wymagań oraz przykłady wygenerowanych takich krzywych. Zaimplementowano arytmetyk˛e modularna˛ w ciałach skończonych, operacje na krzywych oraz podstawowe protokoły kryptograficzne wykorzystujace ˛ krzywe eliptyczne. Tab. 1. Długość kluczy kryptograficznych Algorytmy symetryczne RSA Krzywe eliptyczne 80 1024 160 128 3072 256 256 15360 512 Abstract: The elliptic curves over finite fields are an essential part of the public key cryptography. The security of cryptosytems with elliptic curves is based on the computational intractability of the Elliptic Curve Discrete Logaritm Problem (ECDLP). The paper presents requirements which cryptographically secure elliptic curves have to satisfy, together with their justification and some examples of elliptic curves which have been generated. The modular arithmetic in finite fields, the operations on elliptic curves and the basic cryptographic protocols have been implemented. Istnieje wiele standardów rekomendowanych krzywych eliptycznych [1, 2, 3, 11]. W naszych badaniach zastosowaliśmy standard europejski Brainpool [3], ponieważ zaleca on najwi˛eksza˛ liczb˛e warunków, które powinny spełniać krzywe eliptyczne nad ciałami F p , gdzie p jest odpowiednio wybrana˛ liczba˛ pierwsza˛ oraz standard ten podaje pewne wytyczne jak generować własne krzywe eliptyczne. Celem tej pracy jest przedstawienie metod jakie zastosowaliśmy w celu wygenerowania własnych bezpiecznych kryptograficznie krzywych eliptycznych nad ciałami prostymi wraz z podaniem przykładowych krzywych spełniajacych ˛ przyj˛ete warunki odporności na ataki kryptoanalityczne. Własne krzywe eliptyczne sa˛ wymagane do ochrony informacji niejawnej o klauzuli wyższej od „zastrzeżone“. Przedstawiony jest także opis implementacji arytmetyki modularnej w ciałach prostych F p , gdzie p to duża liczba pierwsza oraz opis wykonanej implementacji arytmetyki w grupie punktów krzywej eliptycznej E(F p ). Własna implementacja pozwala na certyfikacj˛e systemów ochrony informacji niejawnej o wysokich klauzulach tajności. Efektywna implementacja arytmetyki modularnej wymaga zastosowania specjalnych algorytmów dla redukcji modularnej. W pracy zaimplementowano trzy algorytmy mnożenia z redukcja˛ modularna: ˛ algorytm klasyczny oraz algorytmy Barrett’a i Mongomery’ego. Nast˛epnie arytmetyka modularna w ciele F p zastosowana jest do implementacji operacji arytmetycznych w grupie punktów na wybranej krzywej eliptycznej. Działania na punktach krzywej wykonane sa˛ w reprezentacji afinicznej i w reprezentacji rzutowej tych punktów oraz porównana Słowa kluczowe: kryptografia krzywych eliptycznych, arytmetyka modularna, protokół Diffie-Hellmana uzgadniania kluczy, podpis elektroniczny ECDSA. Keywords: elliptic curve cryptography, modular arithmetic, Diffie-Hellman key agreement, digital signature ECDSA. 1. WSTEP ˛ Krzywe eliptyczne (EC – Elliptic Curves) sa˛ szeroko stosowane w kryptografii klucza publicznego, w szczególności w protokołach uzgadniania klucza, w podpisach cyfrowych i w generatorach pseudolosowych. Krzywa eliptyczna nad ciałem skończonym stanowi grup˛e skończona˛ z odpowiednio określonym działaniem dodawania elementów tej grupy (punktów na krzywej eliptycznej) i elementem neutralnym grupy. Kryptografia krzywych eliptycznych (ECC) ma przewag˛e nad kryptosystemem klucza publicznego RSA, ponieważ ma porównywalny poziom bezpieczeństwa osiagany ˛ przy znacznie krótszym kluczu (ośmiokrotnie) w porównaniu do długości kluczy wymaganych dla RSA. Zwiazane ˛ jest to z trudnościa˛ obliczeniowa˛ problemu logarytmu dyskretnego w grupie punktów na krzywej eliptycznej w porównaniu do trudności obliczeniowej problemu faktoryzacji, na którym opiera 1 jest efektywność implementacji w zależności od wybranej reprezentacji punktów. Praca zorganizowana jest w nast˛epujacy ˛ sposób. Paragraf 2 przedstawia opis ciał skończonych i krzywych eliptycznych nad tymi ciałami. W Paragrafie 3 opisane sa˛ metody generacji kryptograficznie silnych krzywych eliptycznych wraz z uzasadnieniem warunków nakładanych na te krzywe. Paragraf 4 zawiera opis implementacji arytmetyki krzywych eliptycznych oraz wyniki pomiaru efektywności wykonanych implementacji. Podane sa˛ także w Dodatkach przykłady wygenerowanych krzywych eliptycznych. 2. KRZYWE ELIPTYCZNE NAD CIAŁAMI SKOŃCZONYMI Niech p > 3 b˛edzie liczba˛ pierwsza˛ oraz F p = {0, 1, . . . , p − 1} p-elementowym ciałem skończonym z dodawaniem i mnożeniem modulo p. Krzywa˛ eliptyczna˛ nad ciałem F p nazywamy zbiór rozwiazań ˛ (x, y) ∈ F p × F p równania E : y2 = x3 + Ax + B mod p (1) wraz z „punktem w nieskończoności” O, gdzie współczynniki krzywej A, B ∈ F p spełniaja˛ warunek ∆ = 4A3 + 27B2 6= 0 mod p. (2) Równanie (1) nazywane jest skrócona˛ wersja˛ równania Weierstrassa. W zbiorze rozwiazań ˛ równania (1) wprowadzamy operacj˛e dodawania punktów na krzywej, opisana˛ na przykład w [4]. Wtedy dołaczaj ˛ ac ˛ O jako element neutralny, otrzymujemy struktur˛e grupy abelowej o skończonej liczbie elementów. Operacja dodawania punktu do siebie nazywana jest podwojeniem punktu. Pozwala ona z kolei zdefiniować operacj˛e mnożenia punktu P ∈ E(F p ) przez liczb˛e naturalna˛ n, która jest wielokrotnym zastosowaniem operacji podwojenia punktu i dodawania punktów w grupie E(F p ). Grupa E(F p ) punktów na krzywej eliptycznej (1) określonej nad ciałem skończonym F p ma rzad ˛ (liczb˛e elementów) #E(F p ), która spełnia nierówność Hassego: √ √ p + 1 − 2 p < #E(F p ) < p + 1 + 2 p. Dokładna wartość #E(F p ) może być obliczona na podstawie Algorytmu SEA, którego zoptymalizowana implementacja dost˛epna jest w systemie obliczeniowym Magma [7]. Krzywe eliptyczne nad ciałami skończonymi znalazły zastosowanie w kryptografii klucza publicznego ze wzgl˛edu na trudność obliczeniowa˛ problemu logarytmu dyskretnego w grupie punktów na krzywej (ECDLP – Elliptic Curve Discrete Logarithm Problem). Niech P ∈ E(F p ) b˛edzie ustalonym punktem krzywej eliptycznej, zaś Q ∈ E(F p ) losowo wybranym punktem na tej krzywej. Szukamy liczby naturalnej d takiej, że Q = dP. Liczba d nazywana jest logarytmem dyskretnym punktu Q wzgl˛edem punktu bazowego P w grupie E(F p ). W ogólnym przypadku nie sa˛ znane efektywne algorytmy obliczania logarytmów dyskretnych na krzywych eliptycznych. Przy spełnieniu określonych warunków przez krzywe eliptyczne, znane algorytmy maja˛ złożoność wykładnicza˛ wzgl˛edem wielkości liczby p. 3. GENERACJA KRZYWYCH ELIPTYCZNYCH B˛edziemy rozpatrywać krzywe eliptyczne nad ciałami skończonymi F p , gdzie p jest liczba˛ pierwsza˛ o odpowiedniej długości n bitów. Standardy [3, 8, 11] dostarczaja˛ listy rekomendowanych krzywych eliptycznych dla poszczególnych wielkości liczb p. Definicja krzywej eliptycznej zawiera zbiór parametrów, zwanych parametrami dziedziny, które musza˛ być w posiadaniu stron stosujacych ˛ algorytmy ECC. Tymi parametrami sa˛ (p, A, B, P0 , n, h), gdzie: • p jest liczba˛ pierwsza,˛ która określa ciało F p , • A, B sa˛ współczynnikami krzywej eliptycznej, które określaja˛ równanie krzywej (1) w postaci Weierstrassa, • P0 ∈ E(F p ) jest punktem bazowym na krzywej E, który zwany jest także generatorem grupy cyklicznej punktów na krzywej, • n = #E(F p ) jest rz˛edem grupy cyklicznej generowanej przez punkt P0 (w naszych zastosowaniach b˛edzie to cała grupa punktów krzywej eliptyczej), • h = #E(F p )/n jest tzw. ko-czynnikiem. Zalecane jest aby h było małe (h 6 4), w przypadku gdy grupa cykliczna generowana przez P0 jest podgrupa˛ grupy punktów na krzywej. W naszych przykładach h = 1. Celem naszych eksperymentów było znalezienie krzywych eliptycznych nad ciałami F p , dla długości liczby pierwszej p odpowiednio 160, 258, 384 i 512 bitów, które sa˛ generowane zgodnie ze standardem Brainpool [3] na podstawie „ziarna” pobieranego ze sprz˛etowego generatora losowego. Po losowym wybraniu współczynników A, B spełniajacych ˛ nierówność (2) sprawdzane sa˛ kryteria bezpieczeństwa krzywej eliptycznej (1). Jeśli nie spełniony jest któryś z wymaganych warunków, to generowane sa˛ nowe współczynniki A, B i proces weryfikacji zaczyna si˛e od nowa. Na silne kryptograficznie krzywe eliptyczne nakładane sa˛ nast˛epujace ˛ warunki, które zapobiegaja˛ atakom na problem logarytmu dyskretnego na krzywych (ECDLP). Warunki te sa˛ wzmocnieniem kryteriów ze standardu [3]. 1. Rzad ˛ krzywej eliptycznej n = #E(F p ) jest liczba˛ pierwsza˛ (różna˛ od liczby p), ma to zapobiec atakom na ECDLP typu atak metoda˛ małych podgrup [3, 4] i atak Pohliga-Hellmana [9]. Ponieważ rzad ˛ krzywej jest liczba˛ pierwsza,˛ to każdy punkt na krzywej różny od elementu neutralnego jest generatorem cyklicznej grupy punktów krzywej. Krzywe eliptyczne, których rzad ˛ jest liczba˛ pierwsza˛ nie maja˛ punktów rz˛edu dwa (P + P = O), a stad ˛ punktów o współrz˛ednej y = 0. 2. Rzad ˛ krzywej n jest mniejszy niż liczba pierwsza p określajaca ˛ ciało F p (n < p). Warunek ten ma w cz˛eści techniczny charakter, ponieważ zapobiega on przepełnieniu rejestrów w implementacjach. W pewnych przypadkach przy niespełnieniu tego warunku, długość w bitach liczby n może być wi˛eksza niż długość w bitach liczby p. Krzywe eliptyczne dla których n = p nazywane sa˛ krzywymi o śladzie jeden (trace one curves) lub krzywymi anomalnymi (anomalous curves). Zgodnie z praca˛ Satoh i Araki [10] istnieje efektywny algorytm o złożoności wielomianowej obliczania logarytmów dyskretnych na krzywych anomalnych. Należy zatem eliminować takie krzywe w procesie generowania. 3. W atakach z wykorzystaniem iloczynu Weila i iloczynu Tate (ang. Weil-pairing, Tate-pairing) można zanurzyć grup˛e punktów na krzywej E(F p ) w grup˛e jedności ciała GF(pl ), które jest rozszerzeniem stopnia l ciała F p . W ciele GF(pl ) mamy do dyspozycji algorytm obliczania logarytmów dyskretnych, który ma złożoność podwykładnicza.˛ Z tego wzgl˛edu stopień rozszerzenia l powinien być możliwie duży, aby złożoność ataków z wykorzystaniem algorytmów do rozwia˛ zywania problemu DLP (Discrete Logarithm Problem) w ciele GF(pl ) była porównywalna ze złożonościa˛ dla ECDLP w ciele F p . Wartość stopnia zanurzenia l dla danej krzywej eliptycznej obliczmy ze wzoru l = min(t: n | pt − 1), tzn. l jest rz˛edem p modulo n. Na podstawie małego Twierdzenia Fermata wiemy, że liczba l dzieli n − 1. Dokładna˛ wartość l obliczamy wykonujac ˛ faktoryzacj˛e liczby n − 1. Według standardu [3] wybieramy krzywe eliptyczne, dla których (n − 1)/l 6 100, wtedy l jest bliskie maksymalnie dużej możliwie wartości. W celu weryfikacji tego warunku dla krzywej k-bitowej (wielkość ciała F p ) należy mieć możliwość efektywnej faktoryzacji liczb k-bitowych. 4. Ostatni z warunków ze standardu [3] ma dość skomplikowany charakter.√Zalecane jest aby liczba klas ciała kwadratowego k = −d była wi˛eksza niż 10 000 000, gdzie d = (4p − u2 )/v2 , u jest określone z równości n = p + 1 + u, zaś v = max{a: a2 | 4p − u2 }; zatem d jest cz˛eścia˛ bezkwadratowa˛ liczby 4p − u2 . Warunek na wielkość liczby klas ma zapobiegać atakom na problem ECDLP, które wykorzystuja˛ mała˛ wartość liczby klas. 5. Ostatni z warunków nie jest zawarty w standardzie [3], ale podany jest na stronie [1] dotyczacej ˛ bezpieczeństwa krzywych eliptycznych. Z każda˛ krzywa˛ eliptyczna˛ E stowarzyszona jest tzw. krzywa skr˛econa (twisted curve) E tw . Jeśli krzywa E nad ciałem skończonym ma p + 1 + t punktów, to krzywa E tw ma p + 1 − t punktów. Wynika stad, ˛ że rzad ˛ (liczba punktów) krzywej skr˛econej wyraża si˛e wzorem #E tw (F p ) = 2p + 2 − #E(F p ). Kryterium twist security podane na stronie [1] zaleca, aby najwi˛ekszy czynnik pierwszy liczby #E tw był dłuższy niż 100 bitów. Kryterium to zwiazane ˛ jest z odpornościa˛ na pewne aktywne ataki na kryptosystemy z krzywymi eliptycznymi, w których pojawia si˛e problem logarytmu dyskretnego na krzywej skr˛econej. Kryterium twist security nie zostało jeszcze umieszczone w publikowanych standardach. W paragrafie Dodatki tabele przedstawiaja˛ znalezione eksperymentalnie dziedziny parametrów dla krzywych eliptycznych o długościach 160, 256, 384 i 512 bitów. Tabele zawieraja˛ w szczególności faktoryzacj˛e rz˛edu krzywej skr˛econej. Tabele 6-9 przedstawiaja˛ krzywe eliptyczne, które spełniaja˛ kryteria 1-4 (kryteria ze standardu Brainpool [3], oraz dla których długość len czynnika pierwszego liczb #E tw (F p ) jest wi˛eksza niż 100 bitów). 4. IMPLEMENTACJA ARYTMETYKI NA KRZYWYCH ELIPTYCZNYCH W protokołach kryptograficznych opartych na krzywych eliptycznych, takich jak ECDH (protokół Diffie-Hellmana ustalenia wspólnego tajnego klucza) czy też ECDSA (algorytm podpisu cyfrowego) wymagana jest efektywna implementacja arytmetyki na zastosowanych krzywych eliptycznych tak, aby czas realizacji poszczególnych operacji był możliwie krótki. W pierwszej kolejności należy zaimplementować arytmetyk˛e modularna˛ w ciele F p , a nast˛epnie operacje arytmetyczne na punktach krzywej eliptycznej. Poniżej przedstawiamy wykonana˛ implementacj˛e softwarowa˛ dedykowana˛ na procesory 32-bitowe. 4.1. Arytmetyka modularna Niech (1) b˛edzie krzywa˛ eliptyczna˛ nad ciałem F p charakterystyki p > 3. Liczba p oraz liczby reprezentujace ˛ elementy ciała F p moga˛ być reprezentowane w pami˛eci komputera jako ciagi ˛ bitów lub ciagi ˛ słów. Zatem dla 0 6 x < p możemy zapisać w notacji binarnej x = (bi−1 , bi−2 , . . . , b1 , b0 )2 lub x = (w j−1 , w j−2 , . . . , w1 , w0 )w , gdzie b0 , b1 , . . . , bi−1 reprezentuja˛ bity {0, 1}, zaś w0 , w1 , . . . , w j−1 liczby ze zbioru {0, 1, . . . , w − 1}. W celu osiagni˛ ˛ ecia efektywnej implementacji, wielkości bazy w powinna być bliska rozmiaru słowa procesora, np. w = 232 . Wtedy 512-bitowe liczby całkowite reprezentowane sa˛ przez 16 32-bitowych słów. Wyniki pośrednie, przed redukcja˛ modulo p, moga˛ być wi˛eksze: wynik dodania dwóch liczb 512-bitowych ma 17 słów 32-bitowych, natomiast wynik mnożenia ma 32 słowa 32-bitowe. Z tego wzgl˛edu w implementacji dedykowanej dla krzywych 512-bitowych zastosowano 35 słów 32-bitowych. Podstawowymi operacjami arytmetycznymi w ciele F p sa: ˛ – dodawanie modulo p, – mnożenie modulo p. Zaimplementowano również operacje: – odejmowania modulo p, – pot˛egowania modulo p, – odwrotności modularnej modulo p, – dzielenia modulo p, – pierwiastka kwadratowego w ciele F p oraz inne typy operacji: – bitowe operacje logiczne: OR, XOR, AND, NOT, – przesuni˛ecia i rotacje, – porównywanie i operacje warunkowe, – przypisywanie i kopiowanie wartości, – testy pierwszości. Realizacja arytmetyki modularnej wymaga zastosowania specjalnych algorytmów mnożenia z redukcja˛ modularna.˛ W pracy wykorzystano nast˛epujace ˛ algorytmy: – algorytm klasyczny [14], – algorytm Montgomery‘ego [13], – algorytm Barrett‘a [12]. Algorytmy Montgomery‘ego i Barrett‘a wymagaja˛ wykonania pewnych obliczeń wst˛epnych. W przypadku algorytmu Montgomery‘ego należy obliczyć wielkość γ = −p−1 mod w, gdzie w jest podstawa˛ reprezentacji liczb całkowitych, która jest wzgl˛ednie pierwsza z p. W algorytmie Barrett‘a należy wst˛epnie obliczyć 22i , p gdzie i jest liczba˛ bitów w reprezentacji binarnej liczby pierwszej p. Podstawowa˛ operacja˛ arytmetyczna,˛ która ma zastosowanie gdy implementujemy algorytmy kryptograficzne typu RSA, DH i DSA jest pot˛egowanie modularne. Wykonaliśmy pomiary czasu realizacji pot˛egowania modularnego z użyciem podanych wyżej trzech metod modularnego mnożenia dla liczb 1024 i 2048-bitowych. Algorytmy zostały zaimplementowane w j˛ezyku C, natomiast eksperymenty zostały przeprowadzone na komputerze z procesorem 3,6 GHz. µ= Tab. 2. Czasy pot˛egowania modularnego na PC Liczba Metoda mnożenia modularnego bitów klasyczna Barrett‘a Montgomery‘ego 1024 38 ms 30 ms 13 ms 2048 288 ms 225 ms 100 ms Wykonaliśmy również pomiary czasu realizacji pot˛egowania modularnego dla implementacji w j˛ezyku C, kompilowanych w systemie Linux, na procesorze ARM 400 MHz: Tabele 2 i 3. Tab. 3. Czasy pot˛egowania modularnego na ARM Liczba Metoda mnożenia modularnego bitów klasyczna Barrett‘a Montgomery‘ego 1024 250 ms 166 ms 103 ms 2048 1 762 ms 1 243 ms 787 ms Z podanych wyników wnioskujemy, że pot˛egowanie modularne jest realizowane najszybciej za pomoca˛ metody Montgomery‘ego. 4.2. Operacje arytmetyczne na krzywych eliptycznych Podstawowa˛ operacja˛ w grupie E(F p ) punktów na krzywej eliptycznej E : y2 = x3 + Ax + B mod p jest dodawanie punktów. We współrz˛ednych afinicznych (x, y) ∈ F p × F p wynikiem dodawania punktów P = (x0 , y0 ) i Q = (x1 , y1 ) jest punkt R = (x2 , y2 ), którego współrz˛edne wyrażaja˛ si˛e wzorami: x2 = λ 2 − x0 − x1 y2 = λ (x0 − x2 ) − y0 gdzie: λ= y0 − y1 x0 − x1 dla (x0 , y0 ) 6= (x1 , y1 ) λ= 3x02 + A 2y0 dla (x0 , y0 ) = (x1 , y1 ) Dodanie punktu P do siebie (P + P) nazywane jest operacja˛ podwajania punktu, zaś wynik oznaczany jest symbolem 2P. W podobny sposób definiujemy wielokrotność punktu P przez liczb˛e naturalna˛ P + . . . + P = dP (d razy). Obliczenie wielokrotności punktu wymaga średnio wykonania k podwojeń punktu i k/2 dodawań punktów, gdzie k jest liczba˛ bitów w rozwini˛eciu binarnym liczby d. Ponadto w implementacji algorytmów ECDSA i ECDH wymagana jest generacja punktów na krzywej eliptycznej oraz procedury sprawdzania, czy punkt otrzymany w trakcie obliczeń leży na danej krzywej eliptycznej. Wszystkie operacje na krzywych eliptycznych zostały zaimplementowane we współrz˛ednych afinicznych, jak i we współrz˛ednych rzutowych. Punkt o współrz˛ednych afinicznych (x, y) na krzywej eliptycznej (1) przekształcany jest na punkt (x, y, z) we współrz˛ednych rzutowych, w których równanie krzywej ma postać E : zy2 = x3 + Axz2 + Bz3 . Wzory na dodawanie i podwojenie punktu na krzywej we współrz˛ednych rzutowych [4] nie używaja˛ operacji dzielenia w ciałach skończonych, która jest kosztowana czasowo. Tabela 4 przedstawia uzyskane czasy realizacji obliczania wielokrotności punktu na krzywych eliptycznych o poszczególnych długościach k bitów przy wykorzystaniu obu rodzajów współrz˛ednych oraz wybranych metod implementacji arytmetyki w ciałach skończonych. Tab. 4. Czasy obliczania wielokrotności punktu na PC Metoda reprezentacji Liczba i mnożenia modularnego bitów afiniczna rzutowa rzutowa Montgomery‘ego klasyczna Barrett‘a 256 84 ms 8 ms 7 ms 384 378 ms 27 ms 24 ms 512 1270 ms 64 ms 55 ms Zauważmy, że najszybsza˛ metod˛e daje zastosowanie współrz˛ednych rzutowych i metody Barrett‘a redukcji modularnej. Tabela 5 przedstawia czasy realizacji obliczania wielokrotności punktów w implementacji wykonanej na procesorze ARM o cz˛estotliwości taktowania 400 MHz. Tab. 5. Czasy obliczania wielokrotności punktu na ARM Metoda reprezentacji Liczba i mnożenia modularnego bitów afiniczna rzutowa rzutowa Montgomery‘ego klasyczna Barrett‘a 256 2 798 ms 242 ms 181 ms 384 12 881 ms 718 ms 557 ms 512 41 647 ms 1 623 ms 1 261 ms Biorac ˛ pod uwag˛e powyższe rezultaty mamy, że czas generacji klucza i podpisu dla 384-bitowej krzywej eliptycznej zajmuje około 24 ms na komputerze PC z procesorem 3,6 GHz i około 557 ms na platformie z procesorem ARM o cz˛estotliwości taktowania 400 MHz. Czasy we- ryfikacji podpisu wynosza˛ odpowiednio 48 ms i 1,1 s na podanych wyżej platformach. Powyższe czasy moga˛ być zredukowane przy doborze odpowiednich parametrów krzywych eliptycznych. Nast˛epnym zadaniem jest optymalizacja wykonanych implementacji. Planowane jest także wykonanie tych implementacji w układach FPGA. 5. PODSUMOWANIE Zastosowanie krzywych eliptycznych jest aktualnie najlepszym sposobem uzyskania bezpiecznych protokołów uzgadniania kluczy kryptograficznych i podpisu cyfrowego. W tym celu należy wygenerować bezpieczne krzywe eliptyczne i wykonać efektywna˛ implementacj˛e arytmetyki modularnej w ciałach skończonych i arytmetyki na krzywych eliptycznych. Zalecanych jest wiele standardów krzywych eliptycznych i w zastosowaniach komercyjnych należy stosować takie krzywe. Natomiast w zastosowaniach specjalnych (dla wojska, administracji rzadowej) ˛ zalecane jest stosowanie własnych krzywych. Wybraliśmy standard Brainpool, ponieważ zawiera on wi˛eksza˛ liczb˛e uzasadnionych warunków bezpieczeństwa nakładanych na krzywe eliptyczne. W pracy przedstawiono wyniki eksperymentów generacji bezpiecznych krzywych eliptycznych oraz czasy realizacji operacji arytmetycznych na krzywych eliptycznych wraz z odpowiadajacymi ˛ czasami realizacji protokołu poufnej wymiany kluczy kryptograficznych oraz podpisu cyfrowego na wybranych procesorach Intel i ARM. SPIS LITERATURY [1] D.J. Bernstein, T. Lange, SafeCurves: choosing safe curves for elliptic-curve cryptography, http://safecurves.cr.yp.to [2] D.J. Bernstein, Tung Chou, Ch. Chuengsatiansup, A. Huelsing, T. Lange, R. Niederhagen, Ch. Van Vredendaal How to manipulate curve standards: a white paper for the black hat, Cryptology ePrint Archive, 2014/571, www.iacr.org [3] ECC Brainpool, ECC Brainpool Standard Curves and Curve generation, 2005. www.ecc-brainpool.org/download/Domain-parameters.pdf [4] D. Hankerson, A. Menezes, S. Vanstone, Guide to Elliptic Curve Cryptography, Springer 2004, ISBN 0-387-95273-X [5] Ming-Deh Huang, W. Raskind, Global methods for discrete logarithm problems, Elliptic Curve Cryptography Conference, 2004 [6] D. Jao, S.D. Miller, R. Venkatesen, Ramanujan graphs and the random reducibility of discrete log on isogenous elliptic curves, 2004, www.iacr.org [7] Magma Computational Algebra System, www.magma.math.usyd.edu.au [8] NIST, Recommended Elliptic Curves for Federal Government Use, 1999 [9] S. Pohlig, M. Hellman, An improved algorithm for computing logarithms over GF(p) and its cryptographic significance, IEEE Transactions on Information Theory, 1978 [10] T. Satoh, K. Araki, Fermat quotients and the polynomial time discrete log algorithm for anomalous elliptic curves, Comm. Math. Univ. Sancti Pauli, 47, pp. 81-92, 1998 [11] SEC2: Recommended Elliptic Curve Domain Parameters, Certicom Research. January27, 2010. Version 2.0 [12] P. Barrett, Implementing the Rivest, Shamir and Adleman public key encryption algorithm on a standard digital signal processor, Advances in Cryptology – CRYPTO’86, LNCS 263, Springer-Verlag Berlin Heidelberg 1987, pp. 311-323 [13] P. Montgomery, Modular multiplication without trial division, Mathemetics of Computation vol. 44 (1985), pp. 519-521 [14] A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1996 DODATKI: PRZYKŁADY KRZYWYCH ELIPTYCZNYCH Tab. 6. Parametry 160 bitowej krzywej eliptycznej Dziedzina 160 bitowa liczba parametrów 0xE75F077B3804BAB2C122344DFD0 p 4FCE951DA7027 0xE06C22F8F36E2468E2B5F27CCBD A 57D9DC6B23400 0x68F4C31B7CE82460D372864AB2C B 8C1CCE5F29283 x(P0 ) = 0x37A8D5420536D5F3071C706D66A 5CE4C07C700D9 P0 y(P0 ) = 0x6BEF365071D253DEA39FC3088E3 C0CCC6FF47F09 0xE75F077B3804BAB2C121924451C n FCFFBABE5FBB3 1 h 0xE75F077B3804BAB2C122D657A83 ntwist A29D6F7CEE49D [<3,1>,<90281,1>,<426611,1>,< czynniki 11431915082479720108730664390 pierwsze 719752669,1>] 124 len Tab. 7. Parametry 256 bitowej krzywej eliptycznej Dziedzina parametrów p A B P0 n h ntwist czynniki pierwsze len 256 bitowa liczba 0xA4701F69D1D96BCEE3719029B6C8F3F1C0318B00FBC76A4FBAE54A2D84BA90C3 0x1C417D163830A291B2F769BE7737E29112C4D400ECC3A22726E589289084DC67 0x9D3B1FE4E68A23711EC1D7D92251D14C0CE040CB21EF11DA66012DDD79402E72 x(P0 ) = 0x7EE932CFAA5B1EFE0297815BF0036DFFB4C9B70708B344481504C36D4C24BEB9 y(P0 ) = 0x5195AC4DA0186C7B3FBDF20AF09F64276EE25C689ACDF8174E2D4BD8BFC50D25 0xA4701F69D1D96BCEE3719029B6C8F3F0485F90CF0AC53F6344F9D95622C730AD 1 0xA4701F69D1D96BCEE3719029B6C8F3F338038532ECC9953C30D0BB04E6ADF0DB [<137,1>,<77127527346223,1>,<7039001868391305024827233109584083029781968094 947827782607661,1>] 203 Tab. 8. Parametry 384 bitowej krzywej eliptycznej Dziedzina parametrów p A B P0 n h ntwist czynniki pierwsze len 384 bitowa liczba 0x950FD23F7FCDB5D647C6087B67A238B8C94A33898021E71451B5F922A277D40F89C561387 B978CC057749BE485C3621F 0x2704ED36195B700E6DA4A3B98DEF52342094C6AA34A71A36F64D0F3E2A38432D1E7C85004 583CC3246254258B392508D 0x7C1CA2774E5FABC0EB668323DC507E2BF0FD936BFBAFAEABED0E1F5740D196276C5A9EE60 D40957F67E6333320359295 x(P0 ) = 0x1C56954F12FC79768A87CAC920323115E50B1DA42542A380E1265779A32A2D23F9BEE6FCA 61BCB057AFB26ECA927E51C y(P0 ) = 0x8A28CF52E6B00BF935667D90092EA01504133AA556C23C9462AF727DF244464D6B575F1B6 1C3FBA27E242ABBCE28121B 0x950FD23F7FCDB5D647C6087B67A238B8C94A33898021E713C6FEECAB3B86DB8D79D79B916 E3E2F199A1C8098D2C8035D 1 0x950FD23F7FCDB5D647C6087B67A238B8C94A33898021E714DC6D059A0968CC9199B326DF8 8F0EA6714CCB73038BEC0E3 [<5,1>,<4588542219799413391900517767130438062170403601256391422007358414020 609723036030758374529156592774903913259915106759,1>] 381 Tab. 9. Parametry 512 bitowej krzywej eliptycznej Dziedzina parametrów p A B P0 n h ntwist czynniki pierwsze len 512 bitowa liczba 0xE121B140806D878B50656F5A5AEF0FBE3A912FD8526A10EB6177EC6C4FF5808C2F6812C52 9097FCA07F5F7D57B1F1E7FEB41CA7FEDF8C647CD5FD40DB53EC107 0x8A3DFCDF063ABB966D72DB6C328346B937D6BE075049D765474730D8A13415D550ABB77C0 0343AD0C0B03D784F4F4EC5158BC43DC5C2AC33C6620031510FD69 0x8B3423FE32644E29860D667CDFA9CB62376F32A9404D470EAF9BE87E35144F120B5E92384 02DA3105D09B096C52081ECBAD2D687EC3D42C07274812E10414827 x(P0 ) = 0xAE3D9F24D26B6B5E944EA30DA95AF78FC922E00BA6052B0FD8C1605B540A33C7BFA7EC610 6A13A52661ABE77E4C6C02154AD7FC97FD68E352E67A38DAF1DFE9E y(P0 ) = 0xBF95072569330E0088BC5C82DEE33543AED1EB3090618B15873A1617F4F4D0FD9D22394AD 380EA96AE478FAEC4D9A8693B60EBEA58983676277AC5ECF1C6B085 0xE121B140806D878B50656F5A5AEF0FBE3A912FD8526A10EB6177EC6C4FF5808A7A65BC602 CD79AA4EF4B9B598746662B67160EC7634F74B183CB8409B8F2856F 1 0xE121B140806D878B50656F5A5AEF0FBE3A912FD8526A10EB6177EC6C4FF5808DE46A692A2 53B64EF20A054516EF7D6D46F6D863878A217DE16F42411B18AFCA1 [<17,1>,<263,1>,<73777333199494915133765584973,1>,<357459357789270259701927 865005508273200178922782463933590968061769902912284333661225611113881927282 99916229683860346449603,1>] 404