mplementacja algorytmu DES Mariusz Rawski rawski@tele.pw.edu.pl www.zpt.tele.pw.edu.pl/~rawski/ Z Mariusz Rawski 1
Algorytm DES DES (Data Encryption Standard) - jest szyfrem blokowym, o algorytmie ogólnie znanym. Dane są szyfrowane blokami o długości 64 bitów (odpowiada to 8 literom ASC, każda zaopatrzona w bit parzystości). Blok 64 bitów tekstu jawnego podawany jest jako dane wejściowe algorytmu, wynikiem działania algorytmu jest blok 64 bitów szyfrogramu. Zarówno podczas szyfrowania, jak i deszyfrowania wykorzystuje się ten sam algorytm (za wyjątkiem różnic w operowaniu kluczem). Klucz ma długość 56 bitów. Zwykle klucz jest liczbą zapisaną za pomocą 64 bitów, przy czym każdy co ósmy bit jest bitem parzystości, który jest pomijany (tak jest, gdy klucz jest ciągiem ośmiu znaków alfabetu ASC). Kluczem może być dowolna liczba o długości 56 bitów, która może być zmieniona w dowolnej chwili. Z Mariusz Rawski 2
Algorytm DES Działanie algorytmu opiera się na kombinacji dwóch podstawowych technik szyfrowania: mieszania i rozpraszania. odstawowy blok, z którego jest zbudowany DES stanowi pojedynczą kombinację tych technik (podstawienie, za którym następuje permutacja) działającą z udziałem klucza. Ciąg tych działań nazywany jest rundą. Szyfrowanie i deszyfrowanie za wykorzystaniem algorytmu DES składa się z 16 rund. trakcie każdej rundy dokonywane są te same obliczenia na wynikach z poprzedniej rundy i specjalnym podkluczu K i generowanym z 64-bitowego klucza. Dodatkowo przed pierwszą i po ostatniej rundzie bity są permutowane w ustalony sposób. Algorytm wykorzystuje tylko standardową arytmetykę i operacje logiczne na liczbach o długości co najwyżej 64 bitów. Z Mariusz Rawski 3
Algorytm DES o permutacji początkowej blok wejściowy (64-bitowy blok tekstu jawnego) jest dzielony na lewą i prawą połowę, o długości 32 bitów każda. Następnie wykonywanych jest 16 rund jednakowych operacji, nazywanych funkcjami f, w czasie których dane są łączone z kluczem. o szesnastym cyklu lewa i prawa połowa są łączone i końcowa permutacja -1 będąca odwrotnością permutacji początkowej kończy przebieg algorytmu. Z Mariusz Rawski 4
każdym cyklu bity klucza są przesuwane, a następnie jest wybieranych 48 bitów z 56 bitów klucza. Algorytm DES rawa połowa bloku danych jest rozszerzana do 48 bitów za pomocą permutacji z rozszerzeniem, łączona za pomocą bitowej sumy modulo 2 z 48 bitami przesuniętego i poddanego permutacji klucza. Z Mariusz Rawski 5
Algorytm DES Następnie jest dokonywane podstawienie bloku 32 nowych bitów za pomocą algorytmu podstawiania, a potem jeszcze raz jest dokonywana permutacja. e cztery operacje tworzą funkcję f. Ciąg wyjściowy funkcji f jest dalej łączony z lewą połową za pomocą bitowej sumy modulo 2. ynikiem tych operacji jest nowa prawa połowa bloku; stara prawa połowa staje się nową lewą połową. Operacje te są powtarzane 16 razy, tworząc 16 rund algorytmu DES. Z Mariusz Rawski 6
Funkcja f ermutacja z rozszerzeniem Suma modulo 2 z podkluczem Skrzynki podstawieniowe z 48 bitów na 32 bity ermutacja wyjść skrzynek podstwieniowych Z Mariusz Rawski 7
Schemat blokowy algorytmu Sterowanie Runda R -1 Generacja podkluczy Z Mariusz Rawski 8
Schemat blokowy rundy algorytmu Runda R E S 1 S 2 S 3 K S 4 S 5 S 6 S 7 L S 8 Z Mariusz Rawski 9
Schemat blokowy algorytmu Sterowanie Runda R -1 Generacja podkluczy Z Mariusz Rawski 10
ermutacja początkowa Dokonuje permutacji początkowej danych wejściowych składających się z 64 bitów wg podanej tabeli: 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 Oznacza to przestawienie kolejnych bitów danych wejściowych np. na pozycji pierwszej umieszczamy bit 58, na drugiej bit 50, a na ostatniej bit 7. Odczytanie tabeli wierszami utworzy 64 bitowy ciąg poddany operacji transpozycji. Z Mariusz Rawski 11
ermutacja początkowa Zmiana domyślnej kolejności bitów ykorzystanie struktur języka AHDL do warunkowej generacji kodu ułatwia opis modułu 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 Z Mariusz Rawski 12
ermutacja początkowa ermutacja inicjujaca ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized iniperm EF10K10QC208-3 64 64 0 0 0 % 64 11 % User ins: 64 64 0 Sporo, ale to tylko zamiana bitów. końcowym układzie zostanie zrealizowana przez odpowiednie przestawianie połączeń między wejściem a następnym blokiem bez angażowania komórek Z Mariusz Rawski 13
Schemat blokowy algorytmu Sterowanie Runda R -1 Generacja podkluczy Z Mariusz Rawski 14
Multiplekser wejściowy ybiera czy do dalszego przetwarzania pobierane są dane wejściowe, czy dane z poprzedniej rundy Z Mariusz Rawski 15
Multiplekser wejściowy Multiplekser wejsciowy rundy ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized inmux EF10K30BC356-3 129 64 0 0 0 % 64 3 % User ins: 129 64 0 akiego multipleksera nie da się zrobić lepiej, być może ta logika zostanie zintegrowana z inna nie wiążąc dodatkowych komórek. Z Mariusz Rawski 16
Schemat blokowy algorytmu Sterowanie Runda R -1 Generacja podkluczy Z Mariusz Rawski 17
Rejestr Zatrzaskuje dane obliczone w kolejnej rundzie Z Mariusz Rawski 18
Rejestr Rejestr 64-bitowy ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized register64 EF10K10QC208-3 65 64 0 0 0 % 64 11 % User ins: 65 64 0 akiego rejestru także nie da się zrobić lepiej, ale z tego względu, że są to jedynie przerzutniki jest nadzieja, że zostaną one połączone z pozostałą logika bez angażowania dodatkowych zasobów Z Mariusz Rawski 19
Schemat blokowy algorytmu Sterowanie Runda R -1 Generacja podkluczy Z Mariusz Rawski 20
ermutacja odwrotna -1 Na wejście tego bloku podane są dane otrzymane po zakończeniu 16 rundy kodowania. 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Otrzymane w ten dane stanowią zaszyfrowany ciągiem danych wejściowych. Z Mariusz Rawski 21
ermutacja odwrotna ykorzystanie struktur języka AHDL do warunkowej generacji kodu ułatwia opis modułu 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Z Mariusz Rawski 22
ermutacja odwrotna ermutacja odwrotna ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized invperm EF10K10QC208-3 64 64 0 0 0 % 64 11 % User ins: 64 64 0 Sporo, ale podobnie jak w przypadku permutacji początkowej to tylko zamiana bitów. końcowym układzie zostanie zrealizowana przez odpowiednie przestawianie połączeń między poprzednim blokiem a wyjściem bez angażowania komórek Z Mariusz Rawski 23
Schemat blokowy rundy algorytmu Runda R E S 1 S 2 S 3 K S 4 S 5 S 6 S 7 L S 8 Z Mariusz Rawski 24
ermutacja rozszerzająca Dokonuje permutacji rozszerzonej 32 bitowej prawej połowy, aby można było wykonać operację xor z 48 bitowym podkluczem. olega to na powieleniu niektórych bitów wejściowych na dwa wyjścia wg następującej zasady: 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 48 bitowe wyjście jest dzielone na 8 ciągów o długości 6 bitów, które posłużą do adresowania 8 S-boksów. Z Mariusz Rawski 25
ermutacja rozszerzająca ermutacja rozszerzająca Operacja XOR z podkluczem Z Mariusz Rawski 26
ermutacja rozszerzająca Dane wejściowe do S-boksów ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized sboxin_m EF10K10QC208-3 80 48 0 0 0 % 48 8 % User ins: 80 48 0 u najprawdopodobniej zostanie zużyte 48 komórek, gdyż permutacja to zwykłe przestawienie bitów, ale operacja xor będzie musiała być zrealizowana z wykorzystaniem komórek logicznych Z Mariusz Rawski 27
Schemat blokowy rundy algorytmu Runda R E S 1 S 2 S 3 K S 4 S 5 S 6 S 7 L S 8 Z Mariusz Rawski 28
Skrzynki podstawieniowe Każda ze skrzynek S-boks przypisuje jednej z 64 6 bitowych wartości wejściowych liczbę z zakresu 0..15, a więc 4 bitową. Dla każdego S-boksu 6 bitów wejściowych określa jednoznacznie 4 bitową wartość. Z ośmiu takich wartości kolejno jest tworzony 32 bitowy ciąg, który jest przesyłany do bloku p gdzie odbywa się jego permutacja. Z 6 bitowego ciągu, bity 1 i 6 określają numer wiersza, natomiast bity od 2 do 5 wyznaczają numer kolumny. Binarna reprezentacja liczby pod wskazanym miejscem jest przekazywana na wyjście danego S-boksu. S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 Z Mariusz Rawski 29
Skrzynki podstawieniowe Bit 1 i 6 określają wiersz pozostałe kolumny S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 Z Mariusz Rawski 30
Skrzynki podstawieniowe S-box S1 ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized s1 EF10K10LC84-3 6 4 0 0 0 % 55 9 % User ins: 6 4 0 Jeden S-box zajmuje aż tyle komórek wprowadza też duże opóźnienie. Z Mariusz Rawski 31
Skrzynki podstawieniowe S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 Liczba komórek 55 74 77 80 68 73 77 81 Max. opóźnienie 28,1 31,6 33,5 34,0 28,4 30,4 34,3 31,4 Razem 585 komórek z maksymalnym opóźnieniem 34,3 ns. Z o wszystko w jednej rundzie algorytmu a rund jest 16. ybór dotyczący budowy sekwencyjnego algorytmu DES był słuszny. rzy realizacji kombinacyjnej same skrzynki zajęły by 16 x 585 = 9360 komórek logicznych Mariusz Rawski 32
ermutacja R E Runda S 1 S 2 S 3 K S 4 S 5 S 6 S 7 L S 8 Z Mariusz Rawski 33
ermutacja Z Dokonuje permutacji na kolejno zestawionych wyjściach z S-boksów wg następującego schematu: 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 ynik permutacji jest sumowany bitowo modulo 2 z lewą połową początkowego bloku 64-bitowego. Następnie lewa i prawa połowa są zamieniane miejscami i zaczyna się kolejny cykl. o ostatniej iteracji prawa i lewa połowa słowa wynikowego nie są zamieniane miejscami, lecz zamiast tego na bloku bitów powstałych z połączenia R16L16 jest wykonywana permutacja końcowa -1 (stąd do deszyfrowania stosuje się też ten algorytm). Mariusz Rawski 34
ermutacja 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 Z Mariusz Rawski 35
ermutacja ermutacja ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilezed pperm EF10K10C144-3 32 32 0 0 0 % 32 5 % User ins: 32 32 0 odobna sytuacja jak z innymi blokami permutującymi Z Mariusz Rawski 36
Funkcja f ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized ffunction EF10K20RC208-3 80 32 0 0 0 % 668 57 % User ins: 80 32 0 Z Mariusz Rawski 37
Runda ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized desround EF10K20RC240-3 112 64 0 0 0 % 710 61 % User ins: 112 64 0 Z Mariusz Rawski 38
Ścieżka przepływu danych Z Mariusz Rawski 39
Ścieżka przepływu danych ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized datapath EF10K20RC240-3 114 64 0 0 0 % 709 61 % User ins: 114 64 0 Runda wymagała 710 komórek dodanie permutacji wejściowej, wyjściowej, multipleksera i rejestru nie zwiększyło tej liczby. Jest to zgodne z naszymi przypuszczeniami. Oszacowanie szybkości działania jednej rundy jest obiecujące. Z Mariusz Rawski 40
Algorytm DES Z Mariusz Rawski 41
Algorytm DES ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized des EF10K20RC240-3 123 65 0 0 0 % 1050 91 % User ins: 123 65 0 Runda wymagała 710 komórek. raz z generacją klucza i sterowaniem dało to w sumie 1050 komórek jest to 91 % zasobów układu FLEX10K20 nie ma co nawet myśleć o realizacji kombinacyjnej bez zmiany układu programowalnego na znacznie większy Oszacowanie maksymalnej szybkości taktowania układu dało w rezultacie 15 MHz. Jeden blok 64 bitowy przetwarzany jest w 17 taktach zegara, wiec przepustowość układu wynosi: 15 * 10 6 /17 * 64 56 Mbitów/s i jest dość imponująca. Z Mariusz Rawski 42
Sterowanie Z Mariusz Rawski 43
Algorytm DES jak przyspieszyć Co zrobić by układ działał szybciej ykorzystać opcje syntezy logicznej systemu CAD do optymalizacji szybkości działania Z Mariusz Rawski 44
Algorytm DES trochę szybszy ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized des EF10K30RC240-3 123 65 0 0 0 % 1456 84 % User ins: 123 65 0 ymaga to wykorzystania 1456 komórek co stanowi 84 % zasobów układu FLEX10K30 oznacza to zmianę struktury programowalnej na większą ykorzystanie opcji syntezy logicznej pozwoliło zwiększyć maksymalną szybkości taktowania układu do 16,5 MHz. iec przepustowość układu wynosi: 16,5 * 10 6 /17 * 64 62 Mbitów/s Z Mariusz Rawski 45
Algorytm DES jak przyspieszyć Czy to jedyny sposób? Można wykorzystać inne narzędzia do syntezy logicznej, albo mechanizmy potokowości Z Mariusz Rawski 46
Dekompozycja S-boxów Każda ze skrzynek S-boks jest funkcją kombinacyjną Można ją więc zdekomponować i wykorzystać sieć bloków po dekompozycji do realizacji tych funkcji Z Mariusz Rawski 47
Skrzynki podstawieniowe Decomposed project: S1 ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized s1dek EF10K10LC84-3 6 4 0 0 0 % 25 4 % User ins: 6 4 0 ierwszy S-box zajmuje teraz 25 zamiast 55 ( dwukrotnie mniej!!!) wprowadza też mniejsze opóźnienie Zapowiada się ciekawie Z Mariusz Rawski 48
Skrzynki podstawieniowe S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 Liczba komórek 55 74 77 80 68 73 77 81 Max. opóźnienie 28,1 31,6 33,5 34,0 28,4 30,4 34,3 31,4 Liczba komórek 25 o dekompozycji 20 22 24 25 22 23 23 Max. opóźnienie 19,5 17,2 16,7 19,0 19,0 19,4 17,7 17,6 Z Razem 184 komórki w porównaniu do 585 komórek w realizacji wcześniejszej (ponad trzykrotnie mniej) z maksymalnym opóźnieniem 19,5 ns w porównaniu do 34,3 ns. rzy realizacji kombinacyjnej skrzynki zajęłyby teraz 16 x 184 = 2944 komórki logiczne teraz można o tym pomyśleć Mariusz Rawski 49
Funkcja f ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized ffunction EF10K10QC208-3 80 32 0 0 0 % 234 40 % User ins: 80 32 0 Z Mariusz Rawski 50
Algorytm DES na nowo ** DEVCE SUMMARY ** Chip/ nput Output Bidir Memory Memory LCs OF Device ins ins ins Bits % Utilized LCs % Utilized des EF10K20RC240-3 123 65 0 0 0 % 579 50 % User ins: 123 65 0 Układ prawie dwukrotnie mniejszy w sumie 579 komórek jest to zaledwie 50 % zasobów układu FLEX10K20 można więc myśleć o stosowaniu dodatkowych metod przyspieszających działanie układu np.. potokowość Oszacowanie maksymalnej szybkości taktowania układu dało w rezultacie 25,6 MHz. iec przepustowość układu wynosi: 25,6 * 10 6 /17 * 64 94 Mbitów/s i jest o wiele większa niż wcześniej Z Mariusz Rawski 51
Koniec projektu Z Mariusz Rawski 52