ASIC FPGA
Transkrypt
ASIC FPGA
ROZPROSZONY SYSTEM DO KRYPTOANALIZY SZYFRÓW OPARTYCH NA KRZYWYCH ELIPTYCZNYCH Krzysztof Skowron, Mariusz Rawski, Paweł Tomaszewicz 1/23 CEL wykorzystanie środowiska Altera OpenCL do celów akceleracji obliczeń rozproszonych na przykładzie systemu do kryptoanalizy szyfrów opartych na krzywych eliptycznych Zakład Cyberbezpieczeństwa WEiTI PW 2/23 KRYPTOGRAFIA KRZYWYCH ELIPTYCZNYCH klucz publiczny B kryptosystem klucza publicznego najpoważniejszy rywal RSA A abc def !@ #$ !@ #$ abc def krótsze klucze niż RSA przy tym samym bezpieczeństwie bezpieczeństwo oparte na problemie ECDLP B klucz prywatny B Zakład Cyberbezpieczeństwa WEiTI PW 3/23 KRYPTOGRAFIA KRZYWYCH ELIPTYCZNYCH 𝒚𝟐 = 𝒙𝟑 + 𝒂𝒙 + 𝒃 równanie Weierstrassa Zakład Cyberbezpieczeństwa WEiTI PW 4/23 BUDOWA KRYPTOSYSTEMU ECC ustalenie parametrów krzywej E wybór punktu P rzędu n na krzywej E 𝒚𝟐 = 𝒙𝟑 + 𝒂𝒙 + 𝒃 𝟒𝒂𝟑 + 𝟐𝟕𝒃𝟐 + 𝟔 ≢ 𝟎 𝒎𝒐𝒅 𝒑 𝒚 wybór losowej wartości k [1, …, n 1] 𝑷(𝒙, 𝒚) wyznaczenie punktu Q 𝒙 Q i P są jawne można na ich podstawie wyznaczyć k: Q = kP problem ECDLP (Elliptic Curve Discrete Logarithm Problem) klucz publiczny (jawny) Zakład Cyberbezpieczeństwa WEiTI PW klucz prywatny (tajny) parametr kryptosystemu (jawny) 5/23 KRYPTOANALIZA ECC 𝑋𝑡+1 algorytm rho Pollarda operacje na punktach dodawanie, mnożenie przez skalar 𝑋𝑡 𝑋𝑡+2 𝑋𝑡+𝑠 𝑋𝑡−1 𝑋𝑡+3 operacje na skalarach mnożenie, dodawanie, inwersja 𝑋2 𝑋𝑡+𝑠−1 𝑋1 𝑋0 Zakład Cyberbezpieczeństwa WEiTI PW 6/23 PARAMETRY ŁAMANEGO KRYPTOSYSTEMU Kryptosystem CERTICOM ECCp-89 𝒚𝟐 = 𝒙𝟑 + 𝒂𝒙 + 𝒃 Wartość dziesiętna Wartość szesnastkowa p 416363315556156604917983573 0158685C903F1643908BA955 a 3881733152902215205506458208 0C8AE4F7DE8918AA9FAB2260 b 121489936031066440060440631 00647E7EA1062AE69A7D1037 Px 907613852785330174552411 00C031D875DBF8E60BE95B0A Py 8425515734129553132973322 0006F82C1F879745BF676D0A Parametr Zakład Cyberbezpieczeństwa WEiTI PW 7/23 SCHEMAT SYSTEMU OBLICZENIOWEGO sterowanie procesem obliczeniowym KLIENT FPGA SERWER CV wysyłanie zadań do klientów odbieranie wyników obliczeń SIEĆ KLIENT PC wykonywanie obliczeń wysyłanie wyników do serwera SV generowanie wektorów startowych SV zdalne programowanie klientów Zakład Cyberbezpieczeństwa WEiTI PW 8/23 ZALETY ZASTOSOWANIA FPGA Cyclone V SoC większa efektywność 41910 ALM – obliczeniowa w porównaniu do ARM® Cortex™-A9 MPCore rozwiązań programowych 2 rdzenie – 925 MHz – możliwość dopasowania struktury układu do parametrów danej krzywej eliptycznej (np. długość klucza) Stratix V 262400 ALM – możliwość zastosowania specyficznych algorytmów złącze PCIe obliczeniowych źródło: altera.com Zakład Cyberbezpieczeństwa WEiTI PW 9/23 OPENCL opracowany przez Apple, oddany pod opiekę Khronos Group stworzony na potrzebę projektowania heterogenicznych aplikacji nastawiony na wielowątkowość dotychczas stosowany głównie na GPU i CPU w maju 2013 r. do projektu dołączyła Altera Corporation Zakład Cyberbezpieczeństwa WEiTI PW 10/23 OPENCL A HDL OpenCL HDL wymaga specjalistycznej wiedzy proste projektowanie skomplikowany przy dużych systemach skrócenie time to market złożone i czasochłonne testowanie bardzo duża wydajność przy dobrym opisie OpenCL dla HDL tym, czym C dla asemblera ograniczona wydajność spowodowana trudnością przejścia do logiki kombinacyjnej Zakład Cyberbezpieczeństwa WEiTI PW 11/23 łatwość wdrożenia OPENCL CPU OpenCL GPU FPGA ASIC wydajność Zakład Cyberbezpieczeństwa WEiTI PW 12/23 SPECYFIKA PROGRAMOWANIA HOST KERNEL Zakład Cyberbezpieczeństwa WEiTI PW 13/23 SPECYFIKA PROGRAMOWANIA HOST sterowanie kernelem przekazywanie do niego danych odbieranie od niego danych wszystko co może zrobić aplikacja w C++ KERNEL Zakład Cyberbezpieczeństwa WEiTI PW 14/23 SPECYFIKA PROGRAMOWANIA HOST wykonywanie obliczeń korzystanie ze specjalizowanych elementów FPGA sterowanie kernelem przekazywanie do niego danych odbieranie od niego danych wszystko co może zrobić aplikacja w C++ KERNEL Zakład Cyberbezpieczeństwa WEiTI PW 15/23 OPENCL NA GPU I FPGA FPGA GPU kernele uruchamiane na rdzeniach o określonej budowie kernele transformowane do dedykowanych układów sprzętowych projekty ograniczone przez liczbę rdzeni karty graficznej projekty ograniczone przez liczbę zasobów logicznych układu FPGA szybka kompilacja długi czas kompilacji (nawet godziny) użycie standardu OpenCL Khronos Group dedykowane funkcje firmy Altera przystosowane do FPGA mnogość platform sprzętowych tylko kilka układów wspiera OpenCL Zakład Cyberbezpieczeństwa WEiTI PW 16/23 PRZYKŁAD LINUX FPGA cl_mem buff = clCreateBuffer( ..., …, sizeof(cl_uint4)*8, ... ); uint4 Add(uint4 __kernel void add( a, uint4 __global b){ const uint4 *a, ulong4 c; cl_uint4 *vector = (cl_uint4*) clEnqueueMapBuffer( ..., buff, ... ); __global uint4 *sum) clSetKernelArg( ..., kernel[add], 0, ..., sizeof(cl_mem), &buff ); clEnqueueTask( queues[0], kernels[add], 0, NULL, NULL ); __global const uint4 *b, {c.s0 = (ulong) a.s0 + (ulong) b.s0; c.s1 int id==(ulong) get_global_id(0); a.s1 + (ulong) b.s1 + (ulong) (c.s0 >> 32); c.s2 sum[id] = (ulong) = Add(a[id], a.s2 + b[id]); (ulong) b.s2 + (ulong) (c.s1 >> 32); } return (uint4)(c.s0, c.s1, c.s2, 0); } Zakład Cyberbezpieczeństwa WEiTI PW 17/23 ŚCIEŻKA PROJEKTOWA OPENCL KOD OPENCL HDL EMULACJA WERYFIKACJA FUNKCJONALNA KOMPILACJA PLIK BINARNY URUCHOMIENIE TESTY WYDAJNOŚCI 18 Zakład Cyberbezpieczeństwa WEiTI PW 18/23 SCHEMAT JEDNOSTKI KLIENTA wykonywanie algorytmu rho HOST OPENCL X = X + Ri c = c + ai d = d + ai KERNEL OPENCL PLATFORMA OPENCL sterowanie płaszczyzną obliczeniową KOMUNIKACJA Z SERWEREM komunikacja z serwerem PŁASZCZYZNA STEROWANIA PŁASZCZYZNA OBLICZENIOWA Zakład Cyberbezpieczeństwa WEiTI PW 19/23 POPRAWNOŚĆ WYKONYWANIA OPERACJI Dodawanie A + B = R (mod p) A: 0158685c|903f1643|908ba954 B: 00000000|00000000|00000001 R: 00000000|00000000|00000000 Mnożenie AB = R (mod p) A: 0158685c|903f1643|908ba954 B: 0158685c|903f1643|908ba954 R: 00000000|00000000|00000001 Inwersja I = A-1 (mod p) A : 00000000|00000000|0000007b I : 000b3343|87d019b3|1b98506f A’: 00000000|00000000|0000007b Dodawanie punktów R = P + Q P.x: 00c031d8|75dbf8e6|0be95b0a P.y: 0006f82c|1f879745|bf676d0a Q.x: 00de1aa9|4ff94db6|4e763e2d Q.y: 002a44c4|c2d4ee27|fa0a4ba9 R.x: 009b95e0|1a8427d4|5f27a466 R.y: 0096c8db|49420c0e|98faaead Zakład Cyberbezpieczeństwa WEiTI PW 20/23 ZAJĘTOŚĆ UKŁADU CYCLONE V wersja kompilatora 14.1.0 Build 186 03/12/2014 rodzina układów Cyclone V model 5CSXFC6D6F31C8ES komórki logiczne 23 392 / 41 910 (56%) pamięć [b] 828 528 / 5 662 720 (15%) bloki DSP 60 / 112 (54%) Zakład Cyberbezpieczeństwa WEiTI PW 21/23 WYDAJNOŚĆ Czas [µs] Operacja dodawanie 124 ~450 punktów/s odejmowanie 124 (zbyt długi potencjalny czas łamania) mnożenie 128 inwersja 170 pusta 120 dodawanie punktów 2250 operacja zapisu i odczytu (przyczyna niskiej wydajności) Zakład Cyberbezpieczeństwa WEiTI PW 22/23 PODSUMOWANIE Altera OpenCL to nowa platforma – wymaga dalszego doskonalenia obecna wersja (14.1) kompilatora nieefektywnie zagospodarowuje zasoby logiczne układu, dlatego też nie było możliwym stworzenie wydajnej jednostki wykonującej algorytm rho konfiguracja i poznanie środowiska były czasochłonne (brak know-how) umożliwia szybkie projektowanie i testowanie obiecująca technika – dobra dla programistów, gorsza dla projektantów FPGA wysokopoziomowe projektowanie dobre dla złożonych projektów wsparcie dotychczasowych technik projektowania językiem OpenCL pozwoli na wydajne i łatwe w implementacji rozwiązania Zakład Cyberbezpieczeństwa WEiTI PW 23/23