next up previous contents
Successivo: La funzione f Su: Computer Virus Precedente: Un po' di storia

Descrizione del DES

Il sistema DES cifra una stringa x di 64 bit in una stringa y di ancora 64 bit utilizzando una chiave K di 56 bit. Cioè

displaymath2540

La chiave K in realtà è memorizzata sfruttando 64 bit, dove l'ottavo, il 16-esimo, tex2html_wrap_inline2544 , il 64-esimo, sono i bit di paritàgif per i sette bit precedenti. Possiamo immaginare i 64 bit della chiave K divisi in 8 byte, dove per ognuno di questi l'ottavo bit definisce la parità del byte (Figura 1). Tuttavia concretamente ci sono solo 56 bit su cui puó variare la chiave.

   figure144
Figura 1: Struttura della chiave.

La struttura del DES è la seguente:

   figure150
Figura 2: Struttura del DES.

Dove IP è una permutazione di 64 bit detta permutazione iniziale; le sedici iterazioni che trasformano la stringa in input sono uguali nel senso che la funzione che le realizza è sempre la stessa (vedremo piú avanti che l'unica cosa che cambia ad ogni iterazione è la chiave che viene utilizzata); scambio parte sinistra con parte destra effettua uno scambio sulla stringa prodotta come output della 16-esima iterazione, in particolare scambia i 32 bit piú a sinistra con i 32 bit piú a destra); tex2html_wrap_inline2550 è la permutazione inversa della permutazione iniziale; la schedulazione delle chiavi, sfruttando la sola chiave K, produce le chiavi tex2html_wrap_inline2554 di 48 bit ciascuna, per le iterazioni da 1 a 16.

Piú precisamente l'algoritmo di cifratura procede nel seguente modo:

Passo 1
Sia x un testo in chiaro di 64 bit: l'algoritmo costruisce una stringa binaria tex2html_wrap_inline2558 permutando la stringa iniziale mediante la permutazione iniziale fissata IP:

displaymath2560

dove tex2html_wrap_inline2562 e tex2html_wrap_inline2564 sono due stringhe binarie che comprendono rispettivamente i primi e gli ultimi 32 bit della stringa originaria tex2html_wrap_inline2558 .

Passo 2
Effettua 16 iterazioni (detti anche round).

Per tex2html_wrap_inline2568 l'input della i-esima iterazione è una stringa di 64 bit divisa in due parti, tex2html_wrap_inline2572 e tex2html_wrap_inline2574 , ognuna di 32 bit (chiamate rispettivamente parte sinistra e parte destra della stringa).

I valori di output tex2html_wrap_inline2576 e tex2html_wrap_inline2578 sono prodotti in accordo alla seguente regola:

displaymath2580

displaymath2582

L'operatore tex2html_wrap_inline2584 denota la funzione xor bit a bit delle due stringhe di bit, ed f è una funzione che, data la chiave tex2html_wrap_inline2588 e la sottostringa tex2html_wrap_inline2574 , produce una stringa lunga 32 bit (vedi Figura 4). Descriveremo f in dettaglio successivamente. tex2html_wrap_inline2554 sono le chiavi prodotte dal processo di schedulazione (anche questo sarà illustrato piú avanti).

All'i-esima iterazione verrà usata la sola chiave tex2html_wrap_inline2588 .

Passo 3
L'output dell'algoritmo è ottenuto applicando la permutazione tex2html_wrap_inline2550 a tex2html_wrap_inline2602 .

Si noti l'ordine inverso delle ultime due stringhe di bit tex2html_wrap_inline2604 e tex2html_wrap_inline2606 dovuto a scambio di 32 bit.

La permutazione IP definita dallo standard DES è fissa ed è specificata dalla Tabella 1.

 

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
Tabella 1: Permutazione Iniziale.

 

Vediamo questa tabella come si legge. Il primo valore della tabella, 58, specifica che il primo bit della stringa permutata IP(x) è il 58-esimo bit della stringa da permutare x; il secondo elemento della tabella, 50, ne specifica il secondo e cosí via. Un esempio di applicazione della permutazione IP ad una stringa x è illustrato in Figura 2.

   figure229
Figura 3: Esempio di applicazione della permutazione IP.

La permutazione inversa tex2html_wrap_inline2550 è mostrata in Tabella 2.

 

tex2html_wrap_inline2550
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
Tabella 2: Permutazione inversa di IP.

 

Questa tabella si legge nello stesso modo della precedente.

In effetti non è ancora chiaro perché è stata scelta proprio questa particolare permutazione e non un'altra, tuttavia la sicurezza di questo schema non dipende dalla scelta della permutazione, ma è solo una scelta dello standard.

Potremmo infatti fare a meno della permutazione iniziale e finale senza perdere in sicurezza, anche se in questo modo verremmo meno a quello che è lo standard del DES per le comunicazioni.

Riportiamo in Figura 4 le operazioni eseguite all'iterazione i.

   figure256
Figura 4: L'iterazione i della cifratura DES.




next up previous contents
Successivo: La funzione f Su: Computer Virus Precedente: Un po' di storia

Aniello Castiglione e Gerardo Maiorano < anicas,germai@zoo.diaedu.unisa.it >