Informazioni aggiuntive su DES

Da Wikipedia, l'enciclopedia libera.

1leftarrow.pngVoce principale: Data Encryption Standard.

In questa voce si possono trovare alcune tabelle di associazione utilizzate dal cifrario a blocchi Data Encryption Standard (DES).

Tutti i bit e i byte, indicati in questo documento, sono ordinati in modalità big endian, ossia il bit numero 1 è sempre quello più significativo.

Permutazione iniziale (IP)[modifica | modifica sorgente]

Initial permutation
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

Questa tabella mostra le permutazioni iniziali (Initial permutation in inglese da cui IP) effettuate su un blocco di 64 bit. Si legge in questo modo: il primo bit in output è preso dal cinquantottesimo bit di input, il secondo bit da cinquantesimo e così via fino all'ultimo bit che corrisponde al settimo bit di input.

Per motivi di leggibilità questa permutazione è stata rappresentata in forma di tabella ma è un vettore non una matrice, ovviamente.

Permutazione finale (IP-1)[modifica | modifica sorgente]

Final permutation
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

La permutazione finale (Final permutation in inglese) è l'inverso della permutazione iniziale. La tabella deve essere letta in modo analogo.

Espansione (E)[modifica | modifica sorgente]

Expansion function
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

La funzione di espansione (Expansion function in inglese) si applica in modo analogo alle permutazioni illustrate precedentemente. Da notare che alcuni bit in input sono duplicati in output, ad esempio il quinto bit di input è duplicato sia nel sesto sia nell'ottavo bit in uscita. In questo modo un semiblocco di 32 bit è espanso a 48 bit.

Permutazione (P)[modifica | modifica sorgente]

P permutation
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

La permutazione P (Permutation in inglese) scambia i bit di un semiblocco di 32 bit.

Scelta di permutazione 1 (PC-1)[modifica | modifica sorgente]

Permuted choice 1
PC-1
Sinistra
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
Destra
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

La funzione scelta di permutazione 1 (Permuted choice 1 in inglese) utilizza le due tabelle "sinistra" e "destra" per estrarre i bit della chiave crittografica che formano le sottochiavi per la relativa sezione dello stato di schedulazioni delle chiavi (key-schedule state). solo i primi 56 bit della chiave di 64 bit vengono effettivamente utilizzati i rimanenti sono utilizzati come bit di parità.

Scelta di permutazione 2 (PC-2)[modifica | modifica sorgente]

Permuted choice 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

La funzione scelta di permutazione 2 (Permuted choice 2 in inglese) seleziona una sottochiave di 48 bit per ciascun round dalla chiave di 56 bit dello key-schedule state.

S-box[modifica | modifica sorgente]

S-box
S1
x0000x x0001x x0010x x0011x x0100x x0101x x0110x x0111x x1000x x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0yyyy1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1yyyy0 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
0yyyy1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
1yyyy0 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
0yyyy1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
1yyyy0 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
0yyyy1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
1yyyy0 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
0yyyy1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
1yyyy0 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
0yyyy1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
1yyyy0 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
0yyyy1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1yyyy0 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
1yyyy1 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 x1001x x1010x x1011x x1100x x1101x x1110x x1111x
0yyyy0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
0yyyy1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
1yyyy0 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
1yyyy1 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

In questa tabella sono illustrate le 8 S-box utilizzate nel DES. Ciascuna S-box sostituisce un input di 6 bit con un output di 4 bit. Per una descrizione completa del meccanismo di sostituzione si veda S-box.

Rotazioni nel the key-schedule[modifica | modifica sorgente]

Rotazioni
Round
numero
Rotazioni
a sinistra
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Prima della selezione delle sottochiavi nei round, ciascuna metà delle chiavi è ruotata a sinistra si di 1 o 2 bit come indicato in questa tabella.

Bibliografia[modifica | modifica sorgente]

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]