All’inizio degli anni 70 il NIST instituisce un bando perché si ha bisogno di uno standard di protezione, per grandi aziende. La gara si chiamava DES (Data Encryption Standard) ossia un metodo di cifratura di tipo simmetrico.

IBM progetta un algoritmo di nome Lucifer che vinse il bando e quindi a noi è conosciuto come DES. Dopo qualche tempo l’NSA apportò delle modifiche al cifrario originale di IBM modificando il contenuto di alcune matrici (S-Box) che per loro avevano problemi di sicurezza.

DES è un cifrario particolare che lavora solo sulla metà del plain-text . Questa idea venne a Feistel.

Cifrari Feistel : tipologia di cifrari che lavorano su metà del plain-text.

DES

Il DES pubblico è diverso da quello sviluppato da IBM per via della modifica alle matrici da parte di NSA.

Untitled

Il plain-text viene diviso in due, la parte di destra $R_0$ diventa $L_1$ senza apportare modifiche. La parte di sinistra $L_0$ viene messa in XOR con il risultato della funzione f detta funzione di Feistel, che prende $R_0$ e la chiave di round.

Questo è un Round di DES

Queste operazioni vengono effettuate per 16 Round

Prima e dopo vengono fatte delle permutazioni di bit, che servono a prevenire alcuni tipi di attacchi.

Ad ogni round si ha una chiave diversa detta chiave di round che è una trasformazione della chiave iniziale.

L’insieme di tutte le chiavi si chiama Key Material o Key Mat

Untitled

Untitled

La funzione di Feistel ha come input la parte di destra del plain-text. All’interno fa una permutazione di espansione: prende i 32 bit che compongono $R_0$ e li copia e permuta facendoli diventare 48 bit.

I Bit che vengono copiati e permutati sono stati definiti da IBM nella scrittura del DES, per esempio il primo bit viene spostato al secondo posto e copiato al 48-esimo.

Dopo aver fatto la permutazione faccio lo XOR con la chiave di round (48 bit).

Dopo di che i 48 bit vengono divisi in 8 blocchi da 6 bit e vanno in 8 Black Box (S-Box) che con delle operazioni arrivano a restituire 32 bit

La chiave $k$ viene inserita dall’utente (64 bit), i bit utili sono 8 in meno, perché al suo interno ci sono i codici di controllo (Bit di parità). La chiave viene divisa in due parti e subisce un processo di trasformazione e arriva ad avere 48 bit. La comunità crittografica storse il naso perché 56 bit erano troppo pochi per la chiave e avendo i fondi si poteva costruire un hardware specifico per attaccare il DES.

Gli S-Box sono delle matrici che vengono utilizzate per fare compressione, infatti si passa da 6 bit a 4.

Ogni matrice è formata da 4 righe e 16 colonne , e su ogni riga sono presenti i numeri da 0 a 15 senza ripetizioni. Le righe sono le stesse con permutazioni diverse.

Il primo e l’ultimo bit dei 6 in ingresso sono usati per indicizzare la riga , gli altri 4 per indicizzare la colonna.

L’output dell’ S-box è la il numero nella cella della matrice rappresentato in binario su 4 bit

Untitled

Questa era la versione del NIST dove tutti gli S-Box erano diversi, ma alcuni attacchi erano possibili grazie a delle posizioni dei numeri nelle matrici .

La NSA suggerisce di cambiare gli S-Box .

Negli anni 90 DES è stato attaccato con attacchi a probabilità grazie a delle criticità degli S-Box S1 e S8.

Le criticità sono inerenti agli S-box, in particolare alla loro costruzione.

Quando DES fu sostituito con AES furono resi disponibili anche le tecniche di generazione dei nuovi S-Box.

La fase di decryption procede al contrario.

I cifrari di Feistel sono particolari, la funzione che rappresenta il cifrario non deve essere invertibile. Si può decifrare senza invertire la funzione.