Dane tabelaryczne algorytmu DES

W poniższym artykule znajdują się dane tabelaryczne niezbędne do implementacji algorytmu DES a także pomocne podczas jego kryptoanalizy.

Permutacja początkowa (IP)

Permutacja początkowa
Permutacja początkowa

Permutacja początkowa przeprowadzana jest na wszystkich blokach danych przed pierwszym cyklem szyfrowania. Jej celem nie jest zwiększenie bezpieczeństwa szyfru lecz ułatwienie wprowadzania danych i szyfrogramu do układu.

Permutacja początkowa
585042342618102605244362820124
625446383022146645648403224168
57494133251791595143352719113
615345372921135635547393123157

Powyższą tabelę odczytujemy od lewej do prawej, z góry na dół. Permutowanie bitów wygląda następująco: na miejsce bitu pierwszego wstawiamy bit 58, na miejsce bitu drugiego wstawiamy bit 50. Analogicznie postępujemy z pozostałymi bitami.

Permutacja końcowa (IP-1)

Permutacja końcowa
Permutacja końcowa

Permutacja końcowa wykonywana jest po ostatnim cyklu szyfrowania. Jest odwrotnością permutacji początkowej.

Permutacja końcowa
408481656246432397471555236331
386461454226230375451353216129
364441252206028353431151195927
34242105018582633141949175725

Permutacja rozszerzająca (E)

Permutacja rozszerzona
Permutacja rozszerzona

Permutacja rozszerzająca stosowana jest podczas rozszerzania prawej połowy danych z 32 bitów do 48 bitów.

Permutacja rozszerzona
3212345456789
8910111213121314151617
161718192021202122232425
24252627282928293031321

Permutacja klucza 1 (PC-1)

Permutacja PC-1 jest stosowana do wybrania 56 z 64 bitów klucza, który jest później dzielony na dwie części w celu dokonania niezależnych cyklicznych przesunięć bitów.

PC-1
Lewa część
5749413325179
1585042342618
1025951433527
1911360524436
Prawa część
63554739312315
7625446383022
1466153453729
211352820124

Permutacja klucza 2 (PC-2)

Permutacja PC-2 wybiera do szyfrowania 48 z 56 bitów klucza wygenerowanego dla danej rundy.

PC-2
1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932

Permutacja P-bloku

Permutacja P-bloku
Permutacja P-bloku

Permutacja w P-blokach wykonywana jest po przejściu danych przez S-bloki.

P
167202129122817
11523265183110
282414322739
19133062211425

Struktura S-boksów

Podczas szyfrowania w S-boksach ma miejsce operacja podstawiania: za każde sześć bitów wejściowych podstawiamy cztery bity wyjściowe. Jeżeli bity wejściowe oznaczymy kolejno a1, a2, a3, a4, a5, a6 to bity a1 oraz a6 tworzą 2-bitową liczbę określającą wiersz, natomiast bity a2, a3, a4 oraz a5 tworzą liczbę 4-bitową określającą kolumnę (zarówno kolumny jak i wiersze numerujemy od zera). Na przecięciu określonego w ten sposób wiersza i kolumny znajduje się liczba wyjściowa bloku. Przykładowo, jeżeli na wejście pierwszego S-boksa podamy następujący ciąg bitów: 101010 to liczbą wyjściową będzie 0110.

S-boksy
S1
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 1441312151183106125907
0yyyy1 0157414213110612119538
1yyyy0 4114813621115129731050
1yyyy1 1512824917511314100613
S2
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 1518146113497213120510
0yyyy1 3134715281412011069115
1yyyy0 0147111041315812693215
1yyyy1 1381013154211671205149
S3
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 1009146315511312711428
0yyyy1 1370934610285141211151
1yyyy0 1364981530111212510147
1yyyy1 1101306987415143115212
S4
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 7131430691012851112415
0yyyy1 1381156150347212110149
1yyyy0 1069012117131513145284
1yyyy1 3150610113894511127214
S5
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 2124171011685315130149
0yyyy1 1411212471315015103986
1yyyy0 4211110137815912563014
1yyyy1 1181271142136150910453
S6
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 1211015926801334147511
0yyyy1 1015427129561131401138
1yyyy0 9141552812370410113116
1yyyy1 4321295151011141760813
S7
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 4112141508133129751061
0yyyy1 1301174911014351221586
1yyyy0 1411131237141015680592
1yyyy1 6111381410795015142312
S8
x0000xx0001xx0010xx0011xx0100xx0101xx0110xx0111x x1000xx1001xx1010xx1011xx1100xx1101xx1110xx1111x
0yyyy0 1328461511110931450127
0yyyy1 1151381037412561101492
1yyyy0 7114191214206101315358
1yyyy1 2114741081315129035611

Przesunięcia klucza

W każdej rundzie dokonywane jest cykliczne przesunięcie każdej połówki klucza o określoną liczbę bitów w lewo.

Przesunięcia klucza
Numer rundy Liczba bitów
11
21
32
42
52
62
72
82
91
102
112
122
132
142
152
161

Bibliografia