Implementacja systemu obliczeń rozproszonych w strukturach reprogramowalnych do kryptoanalizy szyfrów opartych na krzywych eliptycznych. Orkiszewski Marcin Warszawa 17.03.2010
Koncepcja projektu Piotr Majkowski – System rozpraszania obliczeń z zastosowaniem w rozwiązywaniu zagadnienia logarytmu dyskretnego na krzywych eliptycznych [praca inżynierska 2006] Piotr Majkowski – Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych [praca magisterska 2008]
Dlaczego krzywe eliptyczne ? Obecnie najpoważniejszy konkurent dla RSA Mniejsza długość klucza przy tym samym poziomie bezpieczeństwa Kryptosystem Długość klucza RSA 512 1024 2048 3072 7680 15360 ECC 112 161 224 256 384
Status wyzwań z list Certicom Stacja robocza 500 MHz Digital Alpha z systemem Linux Krzywa Data złamania Liczba jednostek liczących Liczba operacji na krzywych Czas łamania [dni] ECC2-79 XII 1997 30 1.7x1012 8 ECC2-89 II 1998 70 1.8x1013 26 ECC2-97 IX 1999 740 1.9x1014 40 ECC2-109 IV 2004 ok. 10000 1.6x1016 549 Szacunkowe wartości dla maszyny Pentium 100 Krzywa Data złamania Liczba operacji na krzywych Iteracji na sekundę Czas łamania [dni] ECC2-109 IV 2002 1.6x1016 9000 2.1x107 ECC2-353 1.1x1053 1000 1.3x1045
Obliczenia rozproszone Możliwość zastosowania wielu układów FPGA, jak i zwykłych komputerów klasy PC Wykorzystanie Internetu – np. Seti@Home
1. Krzywe eliptyczne
Krzywe eliptyczne nad GF(2n) Krzywa eliptyczna E nad ciałem GF(2n) jest zdefiniowana przez następujące równanie: y2 + xy = x3 + ax2 + b gdzie a, b GF(2n). Ciało GF( 2n) – elementami ciała są binarne, n wymiarowe wektory współrzędnych w ustalonej bazie.
Ciało modularne GF(2n) Elementy ciała – wektory m-elementowe, których reprezentacja zależy od wybranej bazy Dodawanie w ciele – operacja XOR między wektorami ciała Mnożenie w ciele – zależy od wybranej bazy
Baza wielomianowa (potęgowa) Reprezentacja wektorów: (1, a, a2, … , an-1) Wykorzystywana w implementacjach „software” Zależy od wielomianu ciała (wiele reprezentacji !) Operacja mnożenia – cykliczne przesuwanie i wykonywanie operacji XOR - redukcja wielomianem ciała
Mnożenie w bazie potęgowej (1) 1. Cykliczna rotacja i operacja XOR
Mnożenie w bazie potęgowej (2) 2. Redukcja wielomianem ciała
Baza normalna Reprezentacja wektorów Istnieje tylko jeden wielomian ciała (jedna reprezentacja !) Istnieje klasa baz normalnych zwana bazami gaussowskimi (bazy gaussowskie klasy 1 i 2 nazywane są optymalnymi bazami normalnymi)
Operacje w bazie normalnej Dla baz normalnych można wyznaczyć macierz mnożenia, która jest niezależna od mnożonych elementów. Dla optymalnych baz normalnych macierz mnożenia ma dwie jedynki w każdym wierszu (w pierwszym wierszu jest jedna jedynka) Operacja potęgowania (x2n) – rotacja wektora o n pozycji
Wykorzystanie baz normalnych Istnienie macierzy mnożenia umożliwia szybkie wyznaczenie wyniku mnożenia w środowisku sprzętowym (zrównoleglenie obliczeń) Potęgowanie jako operacja rotacji w środowisku sprzętowym realizowana jest w jednym cyklu Problem – nie dla wszystkich ciał istnieją optymalne bazy normalne
Operacje na krzywych eliptycznych Ciało GF(2n) – dodawanie Baza – mnożenie, potęgowanie Reprezentacja punktów - operacje na krzywej
Reprezentacje punktów na krzywej Reprezentacja afiniczna (X, Y) Reprezentacja rzutowa (X, Y, Z) Zależność między reprezentacjami:
Złożoność operacji na krzywej M – mnożenie, P - potęgowanie, O - odwrotność Wyznaczenie odwrotności jest bardzo czasochłonne
2. Algorytm rho Pollarda
Algorytm rho-Pollarda Najlepszy znany obecnie algorytm rozwiązywania ECDLP Algorytm probabilistyczny oparty na błądzeniu przypadkowym Idea – wykrycie kolizji punktów Xk, Xm ckP + dkQ = cmP + dmQ ECDL = (ck – cm)(dk – dm)-1 mod n
CYKL Przestrzeń punktów dla algorytmu rho Pollarda
Równoległa wersja rho-Pollarda Liniowy wzrost szybkości w stosunku do użytych procesorów Idea – wykrycie kolizji punktów między dwiema jednostkami błądzącymi DP – punkty wyróżnione
Zalety algorytmu rho Pollarda Liniowy wzrost szybkości Łatwe wykorzystanie w obliczeniach rozproszonych (model komunikacji klient <-> host) Zapotrzebowanie na pamięć i przepustowość łączy regulowane odpowiednim doborem kryterium Można dołączać nowe jednostki w trakcie obliczeń
Wybór reprezentacji punktów Kryterium wyróżniające zastosowane w algorytmie rho Pollarda uniemożliwia zastosowanie rzutowej (oraz mieszanej) reprezentacji punktów ! Współrzędne afiniczne zależą od współrzędnej Z. Porównywanie współrzędnych X nie jest jednoznaczne z porównywaniem współrzędnych x !
3. Realizacja systemu
Sprzętowa jednostka łamiąca Dodawanie punktów na krzywej Dodawanie współczynników c, d Porównywanie punktów (kryterium)
Dodawanie punktów na krzywej Dodawanie elementów GNB – operacja XOR [1 cykl] Podnoszenie do kwadratu GNB - rotacja [1 cykl] Mnożenie elementów GNB – macierz mnożenia [1 cykl] Odwracanie elementu GNB – 8 mnożeń, 8 rotacji [8 cykli] Dodawanie punktów na krzywej – 10 mnożeń, 10 rotacji [10 cykli]
Realizacja jednostki System on a Programmable Chip – NIOS II (Altera) - system mikroprocesorowy implementowany w układach reprogramowalnych FPGA Programowa implementacja protokołu TCP/IP oraz protokołów warstwy aplikacji Łatwe zarządzanie równolegle pracującymi modułami (pełna skalowalność) Możliwość wykorzystania układu do innych projektów
Architektura SoPC (układ DE2-70) Programowa obsługa stosu TCP/IP (LwIP) 5 jednostek obliczeniowych Sprzętowa obsługa MAC – 100 Mbit/s
Platformy uruchomieniowe Wykorzystano platformy: DE2-70-EP2C70N – duże możliwości obliczeniowe DE2-EP2C35N – dodatkowe jednostki
Wyniki dla różnych platform Szacownie czasów łamania dla krzywej ECC2-89 (złamanej w 1998 r. w 26 dni przez 70 komputerów 500 MHz) Platforma Liczba jednostek Zegar Liczba sumowań Czas łamania Cyclone II EP2C70 5 83,33 MHz 41,67 mln/sek. 9 dni Stratix II EP2S90 7 100 MHz 70 mln/sek. 5 dni Cyclone III EP3C120 8 105 MHz 84 mln/sek. 4 dni Stratix III EP3SL150 10 150 MHz 150 mln/sek. 57 h EP3SL340 26 165 MHz 429 mln/sek. 20 h
Wyniki dla zestawu DE2-70 Liczba zestawów 3 7 11 15 19 Liczba jednostek 35 55 75 95 Czas łamania ECC2-89 69 h 30 h 19 h 14 h 11 h
Łamanie krzywej ECC2_89
Oprogramowanie Realizacja hosta zbierającego wyniki i rozdzielającego punkty początkowe Implementacja protokołu wymiany danych Stworzenie programowej wersji jednostki łamiącej Stworzenie oprogramowania do generowania baz, wyznaczania macierzy konwersji, testów układu, itp..
Host (Ethernet)
Programowa jednostka łamiąca
Dalszy rozwój Uruchomienie systemu na większej liczbie jednostek sprzętowych oraz komputerach klasy PC Dalsza optymalizacja sprzętowej jednostki obliczeniowej, m.in. prace nad współdzieleniem zasobów przez jednostki łamiące. Łamanie kolejnych krzywych z listy Certicom
4. Inne systemy łamiące
Copacobana 120 układów FPGA (Spartan-3) Łamanie krzywej ECC2-89 nad GF(p) – 119 godzin
219 konsol PlayStation 3 Łamanie krzywej 112 bitowej nad GF(p)
Łamanie krzywej ECC2K-130 http://www.ecc-challenge.info/
Łamanie krzywej ECC2K-130