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

Podobne dokumenty