You are on page 1of 5

Projekt układu realizującego blokowe

szyfrowanie z wykorzystaniem szyfru


PRESENT
Krzysztof Gajewski, 158990

Opis projektu
Powyższy projekt ma na celu sprzętową realizację szyfrowania blokowego za pomocą
szyfru PRESENT. Szyfr został tak zaprojektowany, by jego realizacja sprzętowa była
możliwie prosta. Opis szyfru można znaleźć w [1]. W poniższej pracy układ ten
zmodyfikowano tak, by jego komunikacja z otoczeniem była możliwie prosta – zastosowano
jedno wejście 32-bitowe, jedno wyjście 32-bitowe oraz wejście sterujące. Ze względu na
zmodyfikowanie wejścia oraz wyjścia układu konieczne było dodanie jednostki sterującej
układem, co zostało wykonane za pomocą automatu stanu. Dzięki temu obniżono koszt
wytworzenia pojedynczego układu (dobór układu o większej ilości wejść), choć odbywa się to
spadkiem wydajności układu (szacunkowo o ok. 14 %, choć to oszacowanie może być
niedokładne ze względu na konieczność zastosowania nietypowego układu wejścia
w pierwotnej wersji szyfru)

Wymagania projektowe
 Realizacja szyfru PRESENT, którego algorytm został przedstawiony na rys. 1
(schemat szyfrowania) oraz w tab. 1 (blok podstawienia), tab. 2 (blok permutacji)
i tab. 3 (uaktualnianie klucza).

Rys. 1 Schemat szyfrowania szyfru PRESENT


x 0 1 2 3 4 5 6 7 8 9 A B C D E F
S[x] C 5 6 B 9 0 A D 3 E F 8 4 7 1 2
Tab. 1 Schemat bloku podstawienia w szyfrze PRESENT

i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
P(i) 0 16 32 48 1 17 33 49 2 18 34 50 3 19 35 51
i 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
P(i) 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55
i 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
P(i) 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59
i 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
P(i) 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63
Tab. 2 Schemat bloku permutacji w szyfrze PRESENT

W szyfrze blokowym PRESENT danymi wejściowymi są 64 bitowy tekst do


zaszyfrowania oraz 80 bitowy klucz. Szyfrowanie składa się z 32 rund, gdzie w czasie każdej
rundy klucz jest xorowany z szyfrowanym tekstem, a uzyskany w tej operacji ciąg danych
ulega podstawianiu w porcjach 5 bitowych oraz permutacji. W tab.3 przedstawiono sposób
uaktualniania klucza oraz sposób dobierania 64 bitowego klucza rundowego z 80 bitowego
ciągu danych.

Ki = K63K62...K0 = k79k78...k16 = k; k uaktualniany wg. następującej zasady:

1. [k79k78 . . . k1k0] = [k18k17 . . . k20k19]


2. [k79k78k77k76] = S[k79k78k77k76]
3. [k19k18k17k16k15] = [k19k18k17k16k15] ⊕ licznik_rundy
Tab. 3 Sposób uaktualniania klucza w szyfrze PRESENT

 Dodanie 32 bitowego wejścia oraz 32 bitowego wyjścia ułatawiającego komunikację


z otoczeniem
 Zmodyfikowanie pierwotnego szyfru PRESENT poprzez dodanie jednostki sterującej.
Jednostka sterująca steruje procesem wczytania danych, inicjalizacji procesu
szyfrowania, wysłaniem wyników działania programu na wyjście
 Modyfikacja pierwotnej ścieżki przepływu danych (ang. datapath) implementowanego
algorytmu
 Implementacja układu jako automat stanów działający wg schematu przedstawionego
na rys. 2, co umożliwia oddzielenie danych od sterowania (wyjątek stanowi część
wejściowa układu, ze względu na konieczność dodania dodatkowego impulsu
zegarowego na propagację danych w razie takiego oddzielenia). Na rys. 2
przedstawiono również sygnały sterujące i ich wartości.
Rys. 2 Automat stanów realizujący funkcję układu sterowania układu szyfratora
PRESENT.
 Podział układu na poszczególne moduły: blok podstawienia, blok permutacji, blok
automatu stanów, układy multiplekserów dla danych do zaszyfrowania oraz klucza,
blok uaktualniania klucza, blok licznika

Schemat RTL głównego modułu i jego podziału na mniejsze moduły


 Zważywszy na prostotę układu (logika kombinacyjna, „przestawienie drutów”)
w poniższej części nie zamieszcza się schematów RTL wszystkich układów
z wyłączeniem schematu głównego modułu. Schemat RTL głównego modułu
zamieszczono w załączniku 1.
Wyniki symulacji
 Symulacja działania modułu podstawienia – zadano wartości wejściowe i sprawdzano
uzyskane wartości wyjściowe. Błędnych danych nie stwierdzono (rys. 3)

Rys. 3 Symulacja działania modułu podstawienia.


 Symulacja działania modułu uaktualniania klucza – na wejścia podano przykładowe
wartości klucza, numeru rundy i obserwowano zmiany klucza na wyjściu (rys. 4).
Wynik symulacji porównano z rezultatami uzyskanymi dla programu symulującego
proces uaktualniania klucza napisanego w języku JAVA. Błędnych danych nie
stwierdzono

Rys. 4 Symulacja działania modułu uaktualniania klucza


 Symulacja działania głównego modułu (w tym automatu stanów) – na wejścia układu
podawano odpowiednie dane tekstu, klucza i sterujące. Wartości podawano tak, aby
układ działał sekwencyjnie (każde polecenie po kolei). Wynik końcowy szyfrowania
porównano z przykładowymi wartościami wynikowymi przedstawionymi w artykule
źródłowym. Błędnych danych nie stwierdzono. (rys.5)

Rys. 5 Symulacja działania modułu głównego układu. Na końcu przebiegów


czasowych widać pełny wynik dla kombinacji samych zer tekstu i samych jedynek
klucza.
 W symulacji pominięto układ bloku permutacji, układy multiplekserów dla danych do
zaszyfrowania oraz klucza, blok licznika ze względu na prostotę działania układów.
Możliwości rozbudowy układu (ze względu na pozostałą ilość miejsca
w układzie)
 Dopisanie układu komunikacji FPGA z otoczeniem np. RS-232, USB
 Dopisanie modułu deszyfratora (który de facto działałby 2 razy wolniej od układu
szyfrującego ze względu na konieczność wyliczenia „klucza końcowego”
i odwrócenie procesu szyfrowania

Bibliografia
[1] A. Bogdanov, L.R. Knudsen, et al., “PRESENT: An Ultra-Lightweight Block Cipher”,
Cryptographic Hardware and Embedded Systems - CHES 2007 (2007), pp. 450-
466. doi:10.1007/978-3-540-74735-2_31

You might also like