HC-256

Da Wikipedia, l'enciclopedia libera.
HC-256
Generale
Progettisti Hongjun Wu
Prima pubblicazione 2004
Dettagli
Dimensione chiave da 128 a 256 bit, con passi di 32 bit
Dim. vettore di inizializazione da 64 a 256 bit, con passi di 64 bit
Struttura SHA-256
Numero di passaggi numero di passaggi
Migliore crittanalisi
Allo stato attuale non esistono crittanalisi dell'algoritmo

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.

Funzionamento[modifica | modifica sorgente]

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. 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.

Prestazioni[modifica | modifica sorgente]

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.

Sicurezza[modifica | modifica sorgente]

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

Diritti d'autore[modifica | modifica sorgente]

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

Riferimenti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]