ROZPROSZONY SYSTEM DO KRYPTOANALIZY SZYFRÓW OPARTYCH NA KRZYWYCH ELIPTYCZNYCH



Podobne dokumenty
Piotr Majkowski. Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych

2. Zastosowanie standardu Wi-Fi w systemach AMR... 21

i3: internet - infrastruktury - innowacje

Moc płynąca z kart graficznych

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Programowanie procesorów graficznych GPGPU

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Od Wydawcy Krzywe eliptyczne w kryptografii Wykorzystanie pakietu SAGE... 9

Metody optymalizacji soft-procesorów NIOS

Spis treści. Od Wydawcy

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Szczegółowy opis przedmiotu zamówienia:

Parametry systemów klucza publicznego

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Bezpieczeństwo informacji w systemach komputerowych

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Modele sprzedaży i dystrybucji oprogramowania Teoria a praktyka SaaS vs. BOX. Bartosz Marciniak. Actuality Sp. z o.o.

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

HP Service Anywhere Uproszczenie zarządzania usługami IT

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Wybrane zagadnienia teorii liczb

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Projektowanie zabezpieczeń Centrów Danych oraz innych systemów informatycznych o podwyższonych wymaganiach bezpieczeństwa

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Usługi sieciowe systemu Linux

Wstęp do obliczeń równoległych na GPU

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Architektura systemów komputerowych. Przetwarzanie potokowe I

Język ludzki kod maszynowy

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Embedded Solutions Automaticon Efektywne pomiary i sterowanie przy użyciu systemu wbudowanego MicroDAQ

Struktury systemów operacyjnych

Architektura komputerów

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

Elektrotechnika II Stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Projektowanie. Projektowanie mikroprocesorów

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 1

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Programowanie obiektowe

Klaster obliczeniowy

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek

Algorytmy asymetryczne

Aplikacje RMI

Dokumentacja projektu QUAIKE Architektura oprogramowania

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie niskopoziomowe

Elastyczna sieć dla rozwiązań Cloud Open vswitch

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

Przetwarzanie Równoległe i Rozproszone

Programowanie równoległe Wprowadzenie do OpenCL. Rafał Skinderowicz

Kryptografia na procesorach wielordzeniowych

Materiały dodatkowe. Simulink Real-Time

REFERAT PRACY DYPLOMOWEJ

Wybrane działy Informatyki Stosowanej

Tesla. Architektura Fermi

Sprzętowo wspomagane metody klasyfikacji danych

Tworzenie aplikacji rozproszonej w Sun RPC

Dokumentacja aplikacji Szachy online

Elementy cyfrowe i układy logiczne

Usługa: Testowanie wydajności oprogramowania

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

WiComm dla innowacyjnego Pomorza

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

Software RAID funkcje dostarcza zaimplementowane oprogramowanie, bez wykorzystania z dedykowanych kontrolerów.

Podpis elektroniczny dla firm jako bezpieczna usługa w chmurze. mgr inż. Artur Grygoruk

Podstawy programowania

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER

Praca dyplomowa magisterska

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Systemy na Chipie. Robert Czerwiński

Język opisu sprzętu VHDL

Formalna weryfikacja oprogramowania w lotnictwie

Wykład 2. Mikrokontrolery z rdzeniami ARM

Załącznik nr 6 do SIWZ nr postępowania II MJ Zaoferowany. sprzęt L P. Parametry techniczne

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

System zarządzający grami programistycznymi Meridius

METODY ZINTEGROWANEGO PROJEKTOWANIA SPRZĘTU I OPROGRAMOWANIA Z WYKORZYSTANIEM NOWOCZESNYCH UKŁADÓW PROGRAMOWALNYCH

TSMBOX. Backup Appliance Build for Recovery Speed. Przemysław Jagoda. Zbigniew Parys

Dokumentacja końcowa projektu z ZPR

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

GLOBAL4NET Agencja interaktywna

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Katedra Mikroelektroniki i Technik Informatycznych

Budowa i zasada działania komputera. dr Artur Bartoszewski

Podstawa rozwiązań sterowania przemysłowego na komputerach PC. Software Controller. siemens.pl/software-controller

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Transkrypt:

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 2/23

KRYPTOGRAFIA KRZYWYCH ELIPTYCZNYCH kryptosystem klucza publicznego najpoważniejszy rywal RSA A abc def klucz publiczny B!@ #$ krótsze klucze niż RSA przy tym samym bezpieczeństwie bezpieczeństwo oparte na problemie ECDLP!@ #$ abc def B klucz prywatny B 3/23

KRYPTOGRAFIA KRZYWYCH ELIPTYCZNYCH y 2 = x 3 + ax + b równanie Weierstrassa 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 y 2 = x 3 + ax + b 4a 3 + 27b 2 + 6 0 mod p y P(x, y) x Q i P są jawne można na ich podstawie wyznaczyć k: problem ECDLP (Elliptic Curve Discrete Logarithm Problem) klucz publiczny (jawny) Q = k P klucz prywatny (tajny) parametr kryptosystemu (jawny) 5/23

KRYPTOANALIZA ECC X t+1 algorytm rho Pollarda X t X t+s X t+2 operacje na punktach dodawanie, mnożenie przez skalar X t 1 X t+3 operacje na skalarach mnożenie, dodawanie, inwersja X 2 X 1 X t+s 1 X 0 6/23

PARAMETRY ŁAMANEGO KRYPTOSYSTEMU Kryptosystem CERTICOM ECCp-89 y 2 = x 3 + ax + b Parametr Wartość dziesiętna Wartość szesnastkowa p 416363315556156604917983573 0158685C903F1643908BA955 a 3881733152902215205506458208 0C8AE4F7DE8918AA9FAB2260 b 121489936031066440060440631 00647E7EA1062AE69A7D1037 Px 907613852785330174552411 00C031D875DBF8E60BE95B0A P y 8425515734129553132973322 0006F82C1F879745BF676D0A 7/23

SCHEMAT SYSTEMU OBLICZENIOWEGO sterowanie procesem obliczeniowym wysyłanie zadań do klientów odbieranie wyników obliczeń generowanie wektorów startowych zdalne programowanie klientów SV SERWER SIEĆ KLIENT FPGA CV KLIENT PC SV wykonywanie obliczeń wysyłanie wyników do serwera 8/23

ZALETY ZASTOSOWANIA FPGA większa efektywność obliczeniowa w porównaniu do rozwiązań programowych możliwość dopasowania struktury układu do parametrów danej krzywej eliptycznej (np. długość klucza) możliwość zastosowania specyficznych algorytmów obliczeniowych Cyclone V SoC 41910 ALM ARM Cortex -A9 MPCore 2 rdzenie 925 MHz Stratix V 262400 ALM złącze PCIe źródło: altera.com 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 10/23

OPENCL A HDL HDL wymaga specjalistycznej wiedzy skomplikowany przy dużych systemach złożone i czasochłonne testowanie OpenCL proste projektowanie skrócenie time to market OpenCL dla HDL tym, czym C dla asemblera bardzo duża wydajność przy dobrym opisie ograniczona wydajność spowodowana trudnością przejścia do logiki kombinacyjnej 11/23

łatwość wdrożenia OPENCL CPU GPU OpenCL FPGA ASIC wydajność 12/23

SPECYFIKA PROGRAMOWANIA HOST KERNEL 13/23

SPECYFIKA PROGRAMOWANIA HOST sterowanie kernelem przekazywanie do niego danych odbieranie od niego danych wszystko co może zrobić aplikacja w C++ KERNEL 14/23

SPECYFIKA PROGRAMOWANIA wykonywanie obliczeń korzystanie ze specjalizowanych elementów FPGA HOST KERNEL sterowanie kernelem przekazywanie do niego danych odbieranie od niego danych wszystko co może zrobić aplikacja w C++ 15/23

OPENCL NA GPU I FPGA GPU kernele uruchamiane na rdzeniach o określonej budowie projekty ograniczone przez liczbę rdzeni karty graficznej szybka kompilacja użycie standardu OpenCL Khronos Group mnogość platform sprzętowych FPGA kernele transformowane do dedykowanych układów sprzętowych projekty ograniczone przez liczbę zasobów logicznych układu FPGA długi czas kompilacji (nawet godziny) dedykowane funkcje firmy Altera przystosowane do FPGA tylko kilka układów wspiera OpenCL 16/23

PRZYKŁAD LINUX FPGA cl_mem buff = clcreatebuffer(...,, sizeof(cl_uint4)*8,... ); cl_uint4 *vector = (cl_uint4*) clenqueuemapbuffer(..., buff,... ); clsetkernelarg(..., kernel[add], 0,..., sizeof(cl_mem), &buff ); clenqueuetask( queues[0], kernels[add], 0, NULL, NULL ); uint4 kernel Add(uint4 void add( a, uint4 global b){ const uint4 *a, ulong4 c; global const uint4 *b, global uint4 *sum) { 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); } 17/23

ŚCIEŻKA PROJEKTOWA OPENCL HDL KOD OPENCL WERYFIKACJA FUNKCJONALNA EMULACJA KOMPILACJA URUCHOMIENIE PLIK BINARNY TESTY WYDAJNOŚCI 18 18/23

SCHEMAT JEDNOSTKI KLIENTA komunikacja z serwerem sterowanie płaszczyzną obliczeniową wykonywanie algorytmu rho PŁASZCZYZNA STEROWANIA KOMUNIKACJA Z SERWEREM HOST OPENCL X = X + R i c = c + a i d = d + a i KERNEL OPENCL PLATFORMA OPENCL PŁASZCZYZNA OBLICZENIOWA 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 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%) 21/23

WYDAJNOŚĆ Operacja Czas [µs] dodawanie 124 odejmowanie 124 mnożenie 128 inwersja 170 ~450 punktów/s (zbyt długi potencjalny czas łamania) pusta 120 dodawanie punktów 2250 operacja zapisu i odczytu (przyczyna niskiej wydajności) 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 23/23