HC-256

L’HC-256 è un cifrario a flusso ad elevate prestazioni disegnato da Hongjun Wu nel 2004 e presentato come partecipante all’eSTREAM per il Profilo 1 (implementazione software). L’HC-256 opera con chiavi lunghe fino a 256 bit. Nel 2008 una sua versione denominata HC-128, operante con chiavi a 128 bit, è stata inserita nel portafoglio dell’eSTREAM soccer t shirt ideas.

Anche se l’algoritmo può operare con diverse dimensioni della chiave (128-160-192-224-256 bit) e del vettore di inizializzazione IV (64-128-192-256 bit), l’HC-256 standard opera con chiavi e IV a 256 bit mentre l’HC-128 opera con chiavi ed IV a 128 bit.

Internamente consiste di 2 tabelle segrete denominate P e Q, ognuna contenente 1024 word a 32 bit. Per ogni aggiornamento dello stato interno, viene aggiornata una word a 32 bit di ogni tabella mediante una funzione di aggiornamento non lineare. Dopo 2048 passaggi tutti gli elementi delle due tabelle risultano aggiornati.

L’algoritmo genera una word a 32 bit per ogni passaggio di aggiornamento utilizzando una funzione di mappatura 32 bit a 32 bit simile alla funzione di output del Blowfish. Per generare la word finale dell’output viene applicata una funzione lineare di mascheramento dei bit what enzyme is found in meat tenderizer. L’HC-256 utilizza internamente le due funzioni di schedulazione del messaggio della funzione di hash SHA-256 con le tabelle P e Q usate come S-box.

Le prestazioni dell’HC-256 sono stimate essere di circa 4 cicli per byte su un processore Pentium 4. L’HC-256 presenta però una fase di inizializzazione lunga e complessa che richiede circa 74.000 cicli, necessari all’espansione della chiave a 256 bit nelle due tabelle P e Q e nell’esecuzione di 4096 passaggi a vuoto, occorrenti ad aggiornare per 2 volte le tabelle stesse.

Le prestazioni dell’HC-128 risultano migliori: su un Pentium M l’inizializzazione dell’algoritmo richiede circa 27.300 cicli mentre la codifica/decodifica richiede circa 3 cicli per byte.

A tutt’oggi non esistono crittoanalisi né dell’HC-256 né dell’HC-128: si possono perciò considerare algoritmi molto sicuri.

Sia l’HC-256 che l’HC-128 non sono coperti da brevetto e sono liberamente utilizzabili.