Crab (cifrario)
# Crab (cifrario)

In crittografia il Crab è un cifrario a blocchi derivato dall'MD5 proposto da Burt Kaliski e Matt Robshaw al primo Fast Software Encryption (FSE) nel 1993. Il Crab fu ideato non tanto per utilizzarlo realmente quanto per dimostrare come le idee alla base delle funzioni di hash potessero essere utilizzate per creare un cifrario molto veloce.

## Struttura

Il Crab ha un blocco dati inusualmente lungo ben 8192 bit. La dimensione della chiave è stata impostata dai suoi sviluppatori ad 80 bit ma il cifrario può utilizzare qualsiasi lunghezza voluta. Gli autori non hanno specificato nessuna schedulazione della chiave ma la chiave viene utilizzata per creare 2 grandi insiemi di sottochiavi: una permutazione dei numeri da 0 a 255, ed una matrice di 2048 numeri a 32 bit. Il blocco dati è diviso in 256 sotto-blocchi da 32 bit ciascuno, che vengono permutati all'inizio del processo; poi l'algoritmo effettua 4 passaggi sui dati, ed ogni volta applica una delle 4 funzioni di trasformazione adattate dall'MD5.

## Sicurezza

Markku-Juhani Saarinen, nel suo lavoro di analisi dei cifrari a blocchi basati sull'SHA-1 e sull'MD5 presentato all'FSE del 2003, ha brevemente crittanalizzato anche il Crab, scoprendo una debolezza nell'algoritmo che permette di distinguerlo da un flusso di dati casuali utilizzando solo una dozzina di testi in chiaro scelti, e speculando anche tale debolezza possa essere convertita in un attacco con recupero completo della chiave utilizzando non più di $2^{16}$ testi in chiaro scelti. Questo attacco dipende in larga parte dalla schedulazione della chiave utilizzata.

