Wykorzystanie systemu wieloprocesorowego w kryptografii symetrycznej w układzie FPGA - str. 2 - FPGA - KRYPTOGRAFIA - MULTIPICOBLAZE - MICROBLAZE - PICOBLAZE - SYSTEMY WIELOPROCESOROWE - PAWEŁ DĄBAL - RYSZARD PEŁKA - KRYPTOGRAFIA SYMETRYCZNA
Farnell, An Avnet Company   Przedstawicielstwo Handlowe Paweł Rutkowski   Phoenix Contact Sp. z o.o.  

Energetyka, Automatyka przemysłowa, Elektrotechnika

Dodaj firmę Ogłoszenia Poleć znajomemu Dodaj artykuł Newsletter RSS
strona główna ARTYKUŁY Elektronika Wykorzystanie systemu wieloprocesorowego w kryptografii symetrycznej w układzie FPGA
drukuj stronę
poleć znajomemu

Wykorzystanie systemu wieloprocesorowego w kryptografii symetrycznej w układzie FPGA

Realizacja przetwarzania potokowego

Jedną z wielu struktur połączeń jest system szeregowy trzech i więcej procesorów. Rozwiązanie takie można wykorzystać do potokowego przetwarzania sygnału poprzez przyporządkowanie każdemu procesorowi określonego fragmentu algorytmu. W ten sposób skracamy czas przetwarzania do wartości odpowiadającej najdłuższemu etapowi. Wadą rozwiązania jest ograniczenie na wykonywanie skoków w obrębie całego algorytmu. Jeżeli występują skoki powinny być one realizowane w obrębie etapu. Komunikacja między procesorami odbywa się w jednym kierunku, co wskazuje, że dobrym rozwiązaniem jest zastosowanie pamięci typu FIFO, które będą buforować dane między następującymi po sobie procesorami (etapami). Rozmiar pamięci powinien być dopasowany do wielkości bloku danych potrzebnych do realizacji kolejnego etapu.

 

Aplikacja algorytmu szyfrującego AES

Jedną z grup aplikacji, które umożliwiają przetwarzanie potokowe są algorytmy szyfrowania blokowego. Jednym z nich, obecnie uznanym za standard, jest AES [2]. W artykule wykonana została implementacja z kluczem o długości 128-bitów. Algorytm ten operuje na blokach danych o rozmiarze 16 bajtów. W pierwszym kroku następuje dodanie mod 2 bloku danych z blokiem klucza głównego, następnie jest dziewięć pełnych rund składających się z operacji podmiany bajtów SubBytes, przestawiania wierszy ShiftRows, mieszania kolumn MixColumns oraz sumy mod 2 z odpowiednim podkluczem. Ostatnia, dziesiąta runda pozbawiona jest operacji mieszania kolumn. Pojedyncza operacja może być etapem potoku. Cechują się one jednak dużym zróżnicowaniem ilości wymaganych obliczeń. Najbardziej złożone jest mieszanie kolumn wymagające mnożenia macierzy przez wektor. Z tej racji przyjęto jako etap jedną kompletną rundę.

Po sygnale resetu lub uruchomieniu systemu procesor przed przystąpieniem do jej realizacji sprawdza, jaką pozycję zajmuje w potoku (CPU_ID), aby określić, które operacje należy wykonać w odpowiadającej mu rundzie. Dzięki temu nie ma potrzeby tworzenia indywidualnych programów dla poszczególnych procesorów. Następnie oczekuje się na podanie klucza głównego, który jest rozszerzany przez kolejne stopnie w potoku. Kolejnym krokiem jest cykliczne czytanie kolejnych bloków danych do przetworzenia. Po zapełnieniu potoku system osiąga maksymalną przepustowość zależną od czasu realizacji pierwszego etapu, który jest najdłuższy (dwa razy dodawany jest klucz). 

W postaci pseudokodu referencyjny algorytm szyfrujący można zapisać następująco:

Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

begin

byte state[4,Nb]

state = in

AddRoundKey(state, w[0, Nb-1])

for round = 1 step 1 to Nr–1

SubBytes(state)

ShiftRows(state)

MixColumns(state)

AddRoundKey(state,w[round*Nb,(round+1)*Nb-1])

end for

SubBytes(state)

ShiftRows(state)

AddRoundKey(state,w[Nr*Nb, (Nr+1)*Nb-1])

out = state

end

 

 

Zmodyfikowana postać dostosowana do przetwarzania w potoku ma następującą postać:

Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

begin

byte state[4,Nb]

state = in

if (CPU_nb == 0) AddRoundKey(state, w[0,Nb-1])

SubBytes(state)

ShiftRows(state)

if (CPU_nb < 9) MixColumns(state)

AddRoundKey(state, w[round*Nb,(round+1)*Nb-1])

out = state

end

W celu zmniejszenia liczby cykli zegarowych koniecznych do wywoływania funkcji i przekazywania argumentów, poszczególne operacje zdefiniowane zostały jako funkcje inline. Zastosowano również inne sprawdzone sposoby optymalizacji struktury programu dla wybranych architektur [2, 3, 4] umożliwiające redukcję wymaganej liczby instrukcji oraz skoków do procedur.

Wymagania algorytmu na pamięć to 48 bajtów RAM dla przechowania danych i klucza oraz 256 bajtów ROM na potrzeby tablicy podstawień SBox/ISBox. Niewielkie wymagania umożliwiają wykorzystanie prostych procesorów 8-bitowych. 

 

System z procesorami PicoBlaze

PicoBlaze (KCPSM3) [5] jest prostym 8-bitowym mikroprocesorem RISC, dostępnym w postaci plików źródłowych VHDL/ Verilog. Architektura mikroprocesora zawiera szesnaście 8-bitowych rejestrów ogólnego przeznaczenia, 64 bajty wbudowanej pamięci RAM, pamięć stosu o wielkości 32 pozycji. Wszystkie instrukcje są 18-bitowe i wykonywane w dwóch cyklach zegarowych. Wielkość programu jest stała i wynosi 1024 instrukcje. Procesor może obsłużyć do 256 bajtowych portów wejścia/wyjścia. W prosty sposób można przyłączać peryferia takie jak kontrolery pamięci, jednostki MAC (Multiply and Accumulate) i interfejsy komunikacyjne. Architektura procesora PicoBlaze została przedstawiona na rysunku 2.

Rys. 2. Schemat blokowy mikroprocesora PicoBlaze [5]

Dostarczony opis procesora w języku VHDL został wzbogacony o możliwość konfiguracji następujących parametrów:

  • wyłączenia obsługi przerwań;
  • ustalenie wielkości stosu na 8, 16 i 32 wpisy;
  • ustalenie wielkości pamięci RAM na wartości 16, 32, 64, 128, 256 i 2048 bajtów.

Stworzony został opis pojedynczego etapu (stage). Składa się on z pamięci FIFO o rozmiarze 16 bajtów do komunikacji z kolejnym modułem, pamięci RAM o rozmiarze 256 bajtów do przechowywania tablicy SBox/ISBox, pamięci programu, procesora (64B RAM, wyłączona obsługa przerwań) oraz niezbędnej logiki do generowania sygnałów zapisu/odczytu. Wykorzystując syntezę warunkową wybiera się odpowiednią pamięć programu lub danych RAM oraz określa parametry procesora. Zaprojektowany został opis potoku (pipe), który umożliwia określenie liczby szeregowo połączonych etapów oraz ich parametry. Tak przygotowaną kolejkę, złożoną z dziesięciu procesorów, wykorzystano w projekcie głównym nazwanym MultiPicoBlaze(MPB), do której podłączono interfejs szeregowy RS232. Zawartość pamięci FIFO odczytywana jest po ukończeniu wysyłania aktualnie przetwarzanego bloku danych. W przypadku, kiedy kolejka jest pusta procesor cyklicznie sprawdza jej zawartość. Z racji zbliżonej złożoności obliczeń na poszczególnych etapach spowolnienie wynikające z cyklicznego sprawdzania są minimalne.

Konsekwencją wybrania takiego rozwiązania jest uproszczenie programu oraz umożliwienie oszacowania czasu wykonania danego etapu. Komunikacja odbywa się tylko w jednym kierunku ponieważ algorytm nie wymaga sprzężenia zwrotnego między poszczególnymi etapami. 

Tworzenie projektu z wykorzystaniem środowiska ISE jest złożonym procesem wymagającym uwagi i sprawdzania projektu krok po kroku. Ułatwieniem procesu tworzenia systemu wieloprocesorowego w tym przypadku jest wykorzystanie syntezy warunkowej. Nie zwalnia to jednak projektanta z konieczności komentowania poszczególnych bloków kodu i określania ich przeznaczenia. Proces projektowania jest w wyniku tych dodatkowych zabiegów wydłużony, zyskuje się jednak na tym, że system jest bardziej dopasowany do realizowanych zadań. Rysunek 3 przedstawia uproszczony schemat blokowy zaproponowanego systemu.

Rys. 3. Schemat blokowy systemu MultiPicoBlaze

REKLAMA

Otrzymuj wiadomości z rynku elektrotechniki i informacje o nowościach produktowych bezpośrednio na swój adres e-mail.

Zapisz się
Administratorem danych osobowych jest Media Pakiet Sp. z o.o. z siedzibą w Białymstoku, adres: 15-617 Białystok ul. Nowosielska 50, @: biuro@elektroonline.pl. W Polityce Prywatności Administrator informuje o celu, okresie i podstawach prawnych przetwarzania danych osobowych, a także o prawach jakie przysługują osobom, których przetwarzane dane osobowe dotyczą, podmiotom którym Administrator może powierzyć do przetwarzania dane osobowe, oraz o zasadach zautomatyzowanego przetwarzania danych osobowych.
Komentarze (0)
Dodaj komentarz:  
Twój pseudonim: Zaloguj
Twój komentarz:
dodaj komentarz
Stowarzyszenie Elektryków Polskich
Stowarzyszenie Elektryków Polskich
ul. Świętokrzyska 14, Warszawa
tel.  +48 22 5564-302
fax.  +48 22 5564-301
$nbsp;
REKLAMA
Nasze serwisy:
elektrykapradnietyka.com
przegladelektryczny.pl
rynekelektroniki.pl
automatykairobotyka.pl
budowainfo.pl