DES-X
# DES-X

In crittografia il DES-X (o anche DESX) è una variante del cifrario a blocchi DES (Data Encryption Standard) proposta da Ronald Rivest nel 1984 e sviluppata per incrementarne la resistenza agli attacchi a forza bruta attraverso una tecnica chiamata key whitening.

## Motivazione dello sviluppo

L'algoritmo DES originale fu presentato nel 1976 con una chiave grande 56 bit, che offriva quindi $2^{56}$ combinazioni per la chiave segreta. All'epoca ci fu un acceso dibattito secondo cui una chiave così corta fu scelta perché la National Security Agency (NSA), l'agenzia per la sicurezza nazionale statunitense, fosse già in possesso di elaboratori in grado di violare il DES con la forza bruta.

Ronald Rivest presentò perciò il DES-X allo scopo di incrementare la dimensione della chiave del DES senza alterarne la struttura: il suo algoritmo fu inserito nella libreria crittografica BSAFE da RSA Security alla fine degli anni ottanta.

## Modifiche rispetto al DES

Il DES-X differisce dal DES originale per due operazioni di XOR applicate al testo in chiaro prima e dopo l'esecuzione del DES: questa tecnica, denominata key whitening ed utilizzata anche in altri cifrari (ad esempio nel Twofish), serve ad incrementare la sicurezza dell'algoritmo senza appesantirne eccessivamente i calcoli.

Nel DES-X, per ogni operazione di XOR vengono utilizzati 64 bit della chiave:

${\mbox{DES-X}}(M)=K_{2}\oplus {\mbox{DES}}_{K}(M\oplus K_{1})$

Legenda dei simboli utilizzati nella formula:

* $K_1:$ 64 bit della chiave applicati al testo in chiaro prima di eseguire il DES;
* $K_2:$ 64 bit della chiave applicati al testo in chiaro dopo aver eseguito il DES;
* M: messaggio in chiaro;
* $DES_k:$ algoritmo DES con chiave 'k'.

## Robustezza del DES-X

Nonostante la dimensione della chiave venga incrementata a 184 bit (56 + 2 × 64), la sicurezza effettiva è di soli $56+64-1-log_{2}{(M)}=119-log_{2}{(M)}$≈ $119$ bits , dove M è il numero di coppie note di testo cifrato/testo in chiaro che l'attaccante può ottenere, e $log_{2}$ denota il logaritmo binario (a causa di ciò, alcune implementazioni stabiliscono $K_2$ come una robusta funzione unidirezionale di $K_1$ e K).

Il DES-X incrementa anche la robustezza del DES contro la crittanalisi differenziale e la crittanalisi lineare, anche se il miglioramento è molto meno importante che nel caso degli attacchi a forza bruta. È stato stimato che la crittanalisi differenziale richiede circa $2^{61}$ testi in chiaro scelti (contro $2^{47}$ necessari per il DES), mentre la crittanalisi lineare richiede $2^{60}$ testi in chiaro scelti (contro $2^{43}$ richiesti per il DES). È doveroso segnalare che con $2^{64}$ testi in chiaro (noti o scelti non fa differenza in questo caso) il DES (o comunque qualsiasi altro cifrario a blocchi con un blocco dati di 64 bit) è totalmente violato utilizzando un semplice attacco di tipo codebook.

