• Nie Znaleziono Wyników

Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA

W dokumencie Index of /rozprawy2/10579 (Stron 32-39)

3. Implementacja algorytmów kryptograficznych w układach FPGA na przykładzie algo-

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA

rundzie szyfru. Generator podkluczy składa si˛e z dwóch modułów. W pierwszym, na podstawie klucza K, za pomoc ˛a GF N , wyliczany jest klucz po´sredni L. W przypadku klucza 128-bitowego wykorzystuje si˛e sie´c GF N4,12, dla kluczy 192 i 256-bitowych GF N8, 10. W drugim etapie na podstawie K i L wyznaczane s ˛a warto´sci WK i RK. Schemat blokowy algorytmu generatora dla klucza 128-bitowego przedstawiono na rysunku 3.3. Symbolem | oznaczono konkatenacj˛e. Operacja Σ to funkcja podwójnej zamiany (ang. Double Swap — DS) okre´slona jako:

Y = X[7 − 63] | X[121 − 127] | X[0 − 6] | X[64 − 120] (3.1) gdzie: X[a − b] — oznacza wyci˛ecie fragmentu z ci ˛agu bitowego X od a-tego bitu do b-tego bitu. 0 oznacza najbardziej znacz ˛acy bit.

Rysunek 3.3: Generacja podkluczy dla klucza 128-bitowego [163]

W algorytmie wykorzystywane s ˛a 32-bitowe warto´sci stałe CONi(k). Ich liczba, w zale˙zno´sci od rozmiaru klucza, wynosi 60, 84 lub 92. Schemat blokowy algorytmu generowania warto´sci CON dla 128-bitowego klucza przedstawiono na rysunku 3.4. Symbolem <<< oznaczono bitowy obrót w lewo, a ¯Ti oznacza logiczn ˛a negacj˛e Ti.

Szerszy opis algorytmu dost˛epny jest w dokumencie [163], a referencyjna implementacja w j˛ezyku C na stronie internetowej producenta [162].

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA

Prezentowana sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA została opublikowana na konferencji Field Programable Logic and Applications w 2009 roku [89]. Była to pierwsza realiza-cja tego algorytmu na platformie rekonfigurowalnej. W roku 2011 na kolejnej edycji konferencji FPL zaprezentowano inn ˛a implementacj ˛a algorytmu CLEFIA [140]. Porównanie obu podej´s´c zamieszczono w rozdziale 3.3.8.

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 29

Rysunek 3.4: Generacja warto´sci CON dla klucza 128-bitowego [163]

Opisany w rozdziale 3.2 szyfr CLEFIA zaimplementowano w wersji w pełni potokowej, wykorzy-stuj ˛ac j˛ezyk opisu sprz˛etu VHDL. W tym podej´sciu, wprost odwzorowuje si˛e struktur˛e zaprezentowan ˛a na rysunku 3.2, co wymaga wykonania instancji wszystkich rund szyfrowania. Alternatywn ˛a mo˙zliwo-´sci ˛a jest implementacja iteracyjna (przykład [140]), gdzie wykorzystuje si˛e tylko jedn ˛a instancj˛e rundy. W pierwszym przypadku podstawow ˛a zalet ˛a jest bardzo du˙za przepustowo´s´c modułu, ograniczona tylko maksymaln ˛a cz˛estotliwo´sci pracy logiki i sposobem dostarczania i odbierania danych. Wada tego roz-wi ˛azania to du˙ze zapotrzebowanie na zasoby logiczne oraz mo˙zliwo´s´c pracy tylko w podstawowym try-bie szyfrowania ECB. W drugim przypadku uzyskuje si˛e mniejsze u˙zycie zasobów, kosztem K-krotnego spadku pr˛edko´sci (gdzie K oznacza liczb˛e rund szyfrowania). Implementacja iteracyjna umo˙zliwia prac˛e szyfru tak˙ze w innych trybach: CBC, OFB, CFB.

W omawianej implementacji zdecydowano si˛e na synchronizacj˛e logiki na poziomie pojedynczej rundy. Schematycznie zostało to zaprezentowane na rysunku 3.5. Symbolem REG 128 oznaczono 128-bitowy rejestr, a CLK sygnał zegarowy.

REG

128

REG

128

RUNDA

CLK

Rysunek 3.5: Wykorzystany schemat synchronizacji

Najbardziej zło˙zonym elementem pojedynczej rundy s ˛a bloki S-Box S0 i S1 — sposób ich imple-mentacji w znacznym stopniu decyduje o całkowitym opó´znieniu i maksymalnej cz˛estotliwo´sci pracy szyfru. Pozostałe operacje stanowi ˛a funkcj˛e XOR, która mo˙zna efektywnie zaimplementowa´c w ukła-dzie FPGA. Zaprezentowane w rozdziałach 3.3.1 — 3.3.6 wyniki dotycz ˛a układu FPGA serii Virtex II Pro firmy Xilinx.

T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 30

3.3.1. Implementacja S-Box S0

Najprostsza implementacja bloku S-Box S0 polega na wykorzystaniu operacji LUT (ang. look-up table). Warto´sci podstawienia zapisane s ˛a w pami˛eci ROM opartej o zasoby Distributed RAM lub Block RAMukładu FPGA. Takie rozwi ˛azanie wymaga stosunkowo du˙zej ilo´sci pami˛eci: 16 × 16 × 8 bitów = 2048 bitów. Pojedynczy blok S0 zaimplementowany jako pami˛e´c rozproszona wykorzystuje 128 ele-mentów LUT układu FPGA i wprowadza opó´znienie ok. 1,75 ns.

Alternatywnym rozwi ˛azaniem mo˙ze by´c implementacja bloku S-Box wprost na podstawie definicji (rozwi ˛azanie zaproponowane w pracy [164]). W tym przypadku 4-bitowe bloki podstawieniowe SS0 — SS3 wykonane s ˛a jako LUT, a mno˙zenie przez GF (24) zrealizowane jest za pomoc ˛a operacji XOR. Opisany w ten sposób moduł S0 wykorzystuje 24 elementy LUT i wprowadza opó´znienie ok. 2,3 ns.

3.3.2. Implementacja S-Box S1

Podobnie jak w przypadku bloku S-Box S0 podstawowa implementacja za pomoc ˛a operacji LUT wykorzystuje 128 elementów LUT układu FPGA oraz wprowadza opó´znienie ok. 1,75 ns. Implementa-cja wprost, na podstawie definicji, byłaby nieefektywna z uwagi na skomplikowany sposób obliczania odwrotno´sci w ciele GF (28). W dokumencie [164] zaproponowana została modyfikacja polegaj ˛aca na transformacji ciała GF (28) w ciało zło˙zone GF ((24)2). Wyniki zaprezentowane w pracy [150] (dla szyfru AES) pokazuj ˛a, ˙ze takie post˛epowanie pozwala zmniejszy´c zapotrzebowanie na zasoby logiczne. Moduł S-Box, wykorzystuj ˛acy opisany schemat, składa si˛e z operacji afinicznej f , poł ˛aczonej z izo-morfizmem Φ, operacji odwracania w ciele zło˙zonym GF ((24)2) oraz operacji afinicznej g, poł ˛aczonej z izomorfizmem Φ1. Podczas implementacji wykorzystano ogólny schemat zaproponowany w pracy [150] oraz opis operacji mno˙zenia dwóch liczb 4-bitowych w ciele GF (24) i odwracania w GF (24) z pracy [131]. Implementacja S-Box S1 na podstawie definicji wykorzystuje 56 elementów LUT oraz wprowadza opó´znienie ok. 5,7 ns.

3.3.3. Implementacja macierzy rozpraszaj ˛acych M 0 i M 1

Moduły M 0 i M 1 zaimplementowano wykorzystuj ˛ac schemat zaproponowany w pracy [164]. Po-zwala on zrealizowa´c obie operacje za pomoc ˛a mno˙zenia przez 01, 02, 04, 08 w ciele GF (28) z wielo-mianem nierozkładalnym z8+ z4+ z3+ z2+ 1 i XOR. Implementacja M 0 wykorzystuje 54 elementy LUT i wprowadza opó´znienie ok. 2,2 ns, a M 1 57 elementów LUT daj ˛ac opó´znienie ok. 2,5 ns.

3.3.4. Implementacja F-funkcji F 0 i F 1

F-funkcje F 0 i F 1 składaj ˛a si˛e z operacji XOR, S-Box S0 i S1 oraz mno˙zenia przez macierze M 0 i M 1. Podstaw ˛a ka˙zdej F-funkcji i jednocze´snie najbardziej zło˙zonym elementem s ˛a bloki podstawie-niowe. Na podstawie wst˛epnych wyników (rozdziały 3.3.1 i 3.3.2) zebranych w tabeli 3.1 zdecydowano si˛e wykona´c trzy implementacje F-funkcji: z modułem S-Box jako tablica podstawieniowa (ang. look-up table), z modułem S-Box zrealizowanym na podstawie definicji (ka˙zdorazowe wyliczanie warto´sci

pod-3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 31

Tabela 3.1: Implementacja S-Box S0 i S1

S0 S1

look-up table definicja look-up table definicja

LUT 128 24 128 56

Opó´znienie 1,75 ns 2,3 ns 1,75 ns 5,7 ns

Tabela 3.2: Rezultaty implementacji pojedynczej rundy szyfrowania look-up table definicja mieszany T-Box

Slice 949 462 648 669

LUT 1675 748 1099 1133

FF 282 256 267 269

Maks. cz˛estotliwo´s´c [MHz] 142 119 144 142

stawienia zgodnie z definicj ˛a) oraz konfiguracj˛e mieszan ˛a w której S0 implementowane jest na podstawie definicji, a S1 jako tablica podstawieniowa.

Implementacja S-Box S0 na podstawie definicji wykorzystuje o 104 elementy LUT mniej i wpro-wadza opó´znienie wi˛eksze o 0,55 ns ni˙z wersja look-up table. Mo˙zna zatem stwierdzi´c, ˙ze opłaca si˛e j ˛a wykorzystywa´c. W przypadku S-Box S1, implementuj ˛ac na podstawie definicji, zyskuje si˛e 72 elementy LUT, ale kosztem a˙z 3,95 ns opó´znienia. W aplikacjach zorientowanych na szybko´s´c taka implementa-cja S1 mo˙ze spowodowa´c spadek wydajno´sci całego modułu. Na podstawie powy˙zszej analizy mo˙zna stwierdzi´c, ˙ze zaproponowana konfiguracja mieszana jest kompromisem pomi˛edzy du˙z ˛a szybko´sci ˛a dzia-łania implementacji typu look-up table (S-Box S1), a małym u˙zyciem zasobów dla wersji bloku S-Box zrealizowanego na podstawie definicji (S0).

Dodatkowo zaimplementowano obie F-funkcje z wykorzystaniem techniki tzw. T-Box. Polega ona na poł ˛aczeniu S-Box’ów z nast˛epuj ˛ac ˛a po nich operacj ˛a liniow ˛a, celem skrócenia ´scie˙zki krytycznej. Oryginalnie cztery typy T-Box’ów zostały zaproponowane w [164] dla implementacji programowych (dla procesorów ogólnego przeznaczenia). Schemat ten mo˙zna równie˙z wykorzysta´c do implementacji sprz˛etowej szyfru CLEFIA i sprowadza si˛e on do poł ˛aczenia operacji S0 i S1 z M 0 i M 1.

3.3.5. Implementacja pojedynczej rundy szyfrowania

W celu uzyskania w pełni funkcjonalnej rundy umo˙zliwiaj ˛acej szyfrowanie i deszyfrowanie nale˙zy doda´c dodatkow ˛a logik˛e, która, zapewni odpowiedni ˛a realizacj˛e ko´ncowej permutacji w zale˙zno´sci od sygnału steruj ˛acego. W tabeli 3.2 przedstawiono wyniki implementacji pojedynczej rundy szyfrowania algorytmu CLEFIA wraz z dwoma 128-bitowymi rejestrami synchronizuj ˛acymi.

Z analizy rezultatów implementacji wynika, ˙ze runda z wykorzystaniem bloku S-Box jako look-up tablewykorzystuje najwi˛ecej zasobów logicznych przy przewidywanej cz˛estotliwo´sci pracy ok. 140

T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 32

MHz (Post Place & Route Static Timing, implementacja dla układu Virtex II Pro 100). Wersja, w której bloki S-Box s ˛a zaimplementowane na podstawie definicji, wykorzystuje zdecydowanie mniej zasobów, przy cz˛estotliwo´sci pracy o ok. 20 MHz ni˙zszej. Wersje mieszana i T-Box u˙zywaj ˛a podobnej ilo´sci zaso-bów logicznych oraz osi ˛agaj ˛a cz˛estotliwo´s´c pracy ok. 140 MHz.

3.3.6. Implementacja generatora podkluczy

Generator podkluczy mo˙ze zosta´c zaimplementowany jako: potokowy działaj ˛acy “w locie” (ang. on-the-fly) lub iteracyjny. Pierwsze rozwi ˛azanie, w przypadku algorytmu CLEFIA, wymaga znacznych zasobów logicznych, poniewa˙z konieczne jest stworzenie drugiego potoku GF N . Jedyn ˛a zalet ˛a tej wersji byłaby mo˙zliwo´s´c płynnej zmiany klucza w trakcie szyfrowania (bez cykli potrzebnych na wyznaczenie kompletu podkluczy).

Po wst˛epnej analizie generator iteracyjny okazał si˛e najlepszym rozwi ˛azaniem w przypadku poto-kowej implementacji modułu szyfrowania. Schemat blokowy zaproponowanego rozwi ˛azania przedsta-wiono na rysunku 3.6. Moduł GF N , na podstawie klucza K oraz stałych CON , generuje klucz po´sredni L. Składa si˛e on z pojedynczej rundy szyfrowania oraz kontrolera, który dostarcza odpowiednie stałe w zale˙zno´sci od numeru iteracji. Implementacja wprowadza opó´znienie 10 lub 12 cykli zegara w zale˙z-no´sci od długo´sci klucza.

Rysunek 3.6: Schemat modułu generacji podkluczy

Moduł Key Expand generuje klucze W K i RK na podstawie klucza po´sredniego L i stałych CON . Sprawdzono dwie mo˙zliwe implementacje: iteracyjn ˛a oraz zrównoleglon ˛a. Pierwsza wykorzystuje jeden element wyliczaj ˛acy kolejne podklucze. Ogranicza to u˙zycie elementów LUT, ale wymusza zastosowa-nie du˙zej liczby zasobów pami˛eciowych (przerzutników), pozastosowa-niewa˙z wynik ka˙zdej iteracji musi zosta´c zapami˛etany i by´c dost˛epny dla modułu szyfruj ˛acego. Druga wersja wykorzystuje schemat przedsta-wiony na rysunku 3.7. Symbolem DS oznaczono funkcj˛e podwójnej zamiany (por. rozdział 3.2). Moduł wymaga u˙zycia 638 elementów LUT, jednak˙ze pozwala wyeliminowa´c wykorzystanie przerzutników. Wyniki implementacji generatora podkluczy dla ró˙znych długo´sci klucza przedstawiono w tabeli 3.3.

3.3.7. Implementacja 18 rund szyfrowania

W dalszych badaniach skupiono si˛e na module szyfruj ˛acym zbudowanym z 18 rund (wersja algo-rytmu CLEFIA dla klucza 128-bitowego). Dokonano porównania wyników implementacji czterech za-proponowanych wersji (look-up table, definicja, mieszana, T-Box) dla ró˙znych układów FPGA: Vitrex II Pro 100, Virtex 4 LX 200 oraz Virtex 5LX 30. Do syntezy oraz implementacji wykorzystano narz˛edzie ISE Foundation firmy Xilinx. Maksymalna cz˛estotliwo´s´c pracy podana została na podstawie analizy Post Place & Route Static Timing. Wyniki zaprezentowano w tabelach 3.4, 3.5, 3.6.

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 33

Tabela 3.3: Rezultaty implementacji generatora podkluczy 128 192 256 Slice 823 1400 1462 LUT 1491 2411 2545 FF 299 569 569 Maks. cz˛estotliwo´s´c [MHz] 118 103 74

Tabela 3.4: Moduł przetwarzania danych — Virtex II Pro 100

look-up table definicja mieszany T-Box Slice 11924 5822 8334 8527 LUT 23654 11271 16568 16761

FF 2345 2319 2342 2308

Maks. cz˛estotliwo´s´c [MHz] 80 84 115 124

Tabela 3.5: Moduł przetwarzania danych — Virtex 4 LX 200

look-up table definicja mieszany T-Box Slice 14069 6018 9566 9896 LUT 23659 11502 16304 16713

FF 4779 2396 3755 3836

Maks. cz˛estotliwo´s´c [MHz] 146 152 167 167

Tabela 3.6: Moduł przetwarzania danych — Virtex 5 LX 30

look-up table definicja mieszany T-Box Slice 2845 3161 2479 2612 LUT 9304 9172 8470 9040

FF 2304 2304 2304 2304

Maks. cz˛estotliwo´s´c [MHz] 167 166 167 167

T. Kryjak Implementacja zaawansowanych algorytmów przetwarzania, analizy i szyfrowania obrazów w układach reprogramowalnych

3.3. Sprz˛etowa implementacja algorytmu CLEFIA w układzie FPGA 34

DS

XOR

L CON

RK 0..4

RK 5..8

RK n-3..n

DS

DS

CON

XOR

XOR

XOR

K

CON

Rysunek 3.7: Schemat modułu Key Expand

3.3.8. Wnioski z implementacji sprz˛etowej algorytmu CLEFIA

Analiza wyników symulacyjnych zaprezentowanych w tabelach 3.4 i 3.5 pokazuje znaczn ˛a ró˙znic˛e w maksymalnej cz˛estotliwo´sci pracy pomi˛edzy implementacj ˛a na platform˛e Virtex II Pro 100, a Virtex 4 LX 200. Przeprowadzono badania maj ˛ace na celu wyja´snienie tego zjawiska. Przeanalizowano rezultaty pracy narz˛edzia Place & Route dla obu platform docelowych. Przykładowy wynik pokazano na rysunku 3.8. Okazało si˛e, ˙ze najdłu˙zsza ´scie˙zka krytyczna (ang. critical path) w układzie Virtex II Pro wynika naj-prawdopodobniej z mniejszej liczby lokalnie dost˛epnych zasobów poł ˛aczeniowych, które, w przypadku algorytmu wymagaj ˛acego magistrali 128-bitowej, wydaj ˛a si˛e by´c kluczowe. Wyniki testów dla układu Virtex 5 pokazuj ˛a (tabela 3.6), ˙ze opracowana pod k ˛atem aplikacji w układzie FPGA wersja “mieszana” zu˙zywa najmniej zasobów, a wszystkie wersje osi ˛agaj ˛a niemal identyczn ˛a szybko´s´c.

Virtex II Pro ścieżka krytyczna

Virtex 4

ścieżka krytyczna

Rysunek 3.8: Porównanie najdłu˙zszej ´scie˙zki krytycznej

W opublikowanej w 2011 roku pracy [140] przedstawiono alternatywn ˛a implementacj˛e algorytmów CLEFIA w układzie FPGA. Autorzy wykorzystali podej´scie iteracyjne tj. zaimplementowali jedn ˛a pełn ˛a rund˛e szyfru w dwóch wersjach. Pierwsza z nich opierała si˛e na pracy [169], w drugiej zaproponowane zostały ulepszenia w przetwarzaniu polegaj ˛ace na integracji F-Funkcji F 0 i F 1 i podzieleniu oblicze´n

W dokumencie Index of /rozprawy2/10579 (Stron 32-39)