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