Rabbit | |
---|---|
Generale | |
Progettisti | Cryptico |
Prima pubblicazione | 2003 |
Dettagli | |
Dimensione chiave | 128 bit |
Dim. vettore di inizializazione | 64 bit (opzionale) |
Il Rabbit è un veloce cifrario a flusso disegnato da Martin Boesgaard, Mette Vesterager, Thomas Pedersen, Jesper Christiansen e Ove Scavenius di Cryptico, una società danese specializzata nello studio di soluzioni crittografiche. Il Rabbit è stato inizialmente presentato nel 2003 al decimo Fast Software Encryption Workshop[1] e successivamente, dopo l'aggiunta di una funzione di setup del VI), inviato all'eSTREAM nel 2005, dove è stato scelto per l'inserimento nel portafoglio finale del progetto per il Profilo 1 (implementazione software).
La funzione interna del Rabbit si basa su semplici operazioni aritmetiche, facilmente implementabili sui moderni processori, e non utilizza né S-box né tabelle precompilate, risultando quindi molto veloce e facilmente implementabile.
Lo stato interno dell'algoritmo si basa su 8 variabili di stato ed 8 contatori, tutti da 32 bit, impostati all'inizio mediante una funzione di inizializzazione che utilizza una chiave da 128 bit e, opzionalmente, un vettore di inizializzazione di 64 bit. L'algoritmo genera, per ogni iterazione, un keystream di 128 bit che viene utilizzato per cifrare/decifrare altrettanti bit del messaggio in chiaro/messaggio cifrato tramite un'operazione di XOR.
Lo stato interno dell'algoritmo è grande 513 bit: oltre alle variabili di stato ed ai contatori si ha anche 1 bit di resto, necessario per memorizzare il limite inferiore nella lunghezza del periodo delle variabili di stato.
Il Rabbit è un cifrario a flusso disegnato per risultare molto veloce nelle implementazioni software: i test hanno dimostrato che su un Pentium III si ottengono velocità di cifratura di 3,7 cicli per byte. Nondimeno, la sua struttura molto compatta dovrebbe permettere di ottenere buoni risultati anche nelle implementazioni hardware.
Il Rabbit è stato disegnato con uno schema tale da giustificare l'utilizzo di una chiave di 128 bit per cifrare fino a 264 blocchi di testo in chiaro. Questo significa che un attaccante che non conosce la chiave non dovrebbe essere in grado di distinguere tra 264 blocchi generati dall'algoritmo e l'output di un vero generatore di numeri casuali.
Ad oggi non si conoscono attacchi al Rabbit più efficienti della semplice forza bruta[2], che ha una complessità di calcolo di 2128. Anche se Jean-Philippe Aumasson ha scoperto[3] nel 2006 una semplificazione nella funzione centrale del Rabbit a causa della quale il keystream mostrerebbe una distorsione da un flusso casuale puro di valore 2-147,5, il suo studio ha dimostrato che per attaccare il Rabbit sfruttando questa debolezza occorrerebbe una complessità di calcolo di 2247, valore di molto superiore a quanto richiesto per la ricerca semplice della chiave per cui assolutamente inutilizzabile.
L'algoritmo è brevettato ed è richiesta una licenza per l'utilizzo commerciale. L'utilizzo non commerciale è invece libero.