DES doplňkový materiál - DES supplementary material
Tento článek podrobně popisuje různé tabulky odkazováno v Standard šifrování dat (DES) bloková šifra.
Všechny bity a bajty jsou uspořádány do velký endian pořadí v tomto dokumentu. To znamená, že bit číslo 1 je vždy nejvýznamnějším bitem.
Počáteční permutace (IP)

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 |
Tato tabulka určuje vstupní permutaci na 64bitovém bloku. Význam je následující: první bit výstupu je převzat z 58. bitu vstupu; druhý bit z 50. bitu a tak dále, přičemž poslední bit výstupu je převzat ze 7. bitu vstupu.
Tato informace je uvedena jako tabulka pro snazší prezentaci; je to vektor, ne matice.
Konečná permutace (IP−1)

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 |
Konečná permutace je inverzní k původní permutaci; tabulka je interpretována podobně.
Expanzní funkce (E)

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 |
Funkce expanze je interpretována jako pro počáteční a konečnou permutaci. Všimněte si, že některé bity ze vstupu jsou duplikovány na výstupu; např. pátý bit vstupu je duplikován v šestém i osmém bitu výstupu. 32bitový poloviční blok je tedy rozšířen na 48 bitů.
Permutace (P)

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 |
P permutace zamíchá bity 32bitového půlbloku.
Povolená volba 1 (PC-1)

|
|
„Levá“ a „pravá“ polovina tabulky ukazují, které bity ze vstupu klíč tvoří levou a pravou část stavu klíčového plánu. Všimněte si, že je vybráno pouze 56 bitů ze 64 bitů vstupu; zbývajících osm (8, 16, 24, 32, 40, 48, 56, 64) bylo specifikováno pro použití jako paritní bity.
Povolená volba 2 (PC-2)

14 | 17 | 11 | 24 | 1 | 5 |
3 | 28 | 15 | 6 | 21 | 10 |
23 | 19 | 12 | 4 | 26 | 8 |
16 | 7 | 27 | 20 | 13 | 2 |
41 | 52 | 31 | 37 | 47 | 55 |
30 | 40 | 51 | 45 | 33 | 48 |
44 | 49 | 39 | 56 | 34 | 53 |
46 | 42 | 50 | 36 | 29 | 32 |
Tato permutace vybere 48bitový podklíč pro každé kolo ze stavu 56bitového plánu klíče. Tato permutace bude ignorovat 8 bitů níže:
Permuted Choice 2 "PC-2" Ignorované bity 9,18,22,25,35,38,43,54.
Substituční boxy (S-boxy)
S1 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0rrrr0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
0rrrr1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
1rrrr0 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
1rrrr1 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
S2 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 |
0rrrr1 | 3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 |
1rrrr0 | 0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 |
1rrrr1 | 13 | 8 | 10 | 1 | 3 | 15 | 4 | 2 | 11 | 6 | 7 | 12 | 0 | 5 | 14 | 9 |
S3 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 |
0rrrr1 | 13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 |
1rrrr0 | 13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 |
1rrrr1 | 1 | 10 | 13 | 0 | 6 | 9 | 8 | 7 | 4 | 15 | 14 | 3 | 11 | 5 | 2 | 12 |
S4 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 |
0rrrr1 | 13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 9 |
1rrrr0 | 10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 |
1rrrr1 | 3 | 15 | 0 | 6 | 10 | 1 | 13 | 8 | 9 | 4 | 5 | 11 | 12 | 7 | 2 | 14 |
S5 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 8 | 5 | 3 | 15 | 13 | 0 | 14 | 9 |
0rrrr1 | 14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 10 | 3 | 9 | 8 | 6 |
1rrrr0 | 4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 |
1rrrr1 | 11 | 8 | 12 | 7 | 1 | 14 | 2 | 13 | 6 | 15 | 0 | 9 | 10 | 4 | 5 | 3 |
S6 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 |
0rrrr1 | 10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 |
1rrrr0 | 9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 |
1rrrr1 | 4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 |
S7 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 |
0rrrr1 | 13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 |
1rrrr0 | 1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 |
1rrrr1 | 6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 |
S8 | x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x | x1000x | x 1001x | x1010x | x1011x | x 1100x | x1101x | x1110x | x1111x |
0rrrr0 | 13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 |
0rrrr1 | 1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 |
1rrrr0 | 7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 |
1rrrr1 | 2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
Tato tabulka uvádí osm S-boxů používaných v DES. Každý S-box nahrazuje 6bitový vstup 4bitovým výstupem. Vzhledem k 6bitovému vstupu je 4bitový výstup nalezen výběrem řádku pomocí vnějších dvou bitů a sloupce pomocí vnitřních čtyř bitů. Například vstup „011011"má vnější bity"01"a vnitřní bity" 1101 "; s tím, že první řádek je" 00 "a první sloupec je" 0000 ", odpovídající výstup pro S-box S5 bude „1001“ (= 9), hodnota ve druhém řádku, 14. sloupci. (Vidět S-box ).
Generování klíčů
Hlavní klíč dodaný uživatelem má 64 bitů. S ním jsou prováděny následující operace.
Drop paritní bity
Odhoďte bity šedých pozic (8x), abyste vytvořili 56bitový prostor pro další operace pro každé kolo.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
Poté jsou bity permutovány podle následující tabulky,
Tabulka je řádek hlavní způsob, znamená,
Aktuální Pozice bitu = Nahradit bitem řádek * 8 + sloupec.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
1 | 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
2 | 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
3 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
4 | 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
5 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 |
6 | 30 | 22 | 14 | 6 | 61 | 53 | 45 | 37 |
7 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Rotace bitů
Před výběrem kulatého podklíče je každá polovina stavu klíčového plánu otočena o několik míst doleva. Tato tabulka uvádí počet otočených míst.
• Klíč je rozdělen na dvě 28bitové části
• Každá část je posunuta doleva (kruhová) o jeden nebo dva bity
• Po přeřazení se potom dvě části spojí a znovu vytvoří 56bitový dočasný klíč
Počet kol | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Počet otáček doleva | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
Komprese kláves
• Kompresní P-box změní 56bitový klíč na 48bitový klíč, který se používá jako klíč pro odpovídající kolo.
Tabulka je řádek hlavní způsob, znamená,
Aktuální Pozice bitu = Nahradit bitem řádek * 8 + sloupec.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
1 | 14 | 17 | 11 | 24 | 01 | 05 | 03 | 28 |
2 | 15 | 06 | 21 | 10 | 23 | 19 | 12 | 04 |
3 | 26 | 08 | 16 | 07 | 27 | 20 | 13 | 02 |
4 | 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
5 | 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 |
6 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Po tomto návratu kulatý klíč 48 bitů do volané funkce, tj. kolo.
Reference
- Standard šifrování dat (DES) (PDF). Národní institut pro standardy a technologie (NIST). 1999-10-25. FIPS PUB 46-3.