HC-256

Algoritmo crittografico di tipo a flusso (stream cipher) del 2004

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.

HC-256
Generale
ProgettistiHongjun Wu
Prima pubblicazione2004
Dettagli
Dimensione chiaveda 128 a 256 bit, con passi di 32 bit
Dim. vettore di inizializazioneda 64 a 256 bit, con passi di 64 bit
StrutturaSHA-256
Numero di passagginumero di passaggi
Migliore crittanalisi
Allo stato attuale non esistono crittanalisi dell'algoritmo

Funzionamento

modifica

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

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

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

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

Bibliografia

modifica
  • Specifiche dell'HC-256 (PDF), su ecrypt.eu.org. URL consultato il 29 settembre 2008 (archiviato dall'url originale il 24 luglio 2008).
  • Specifiche dell'HC-128 (PDF), su ecrypt.eu.org. URL consultato il 29 settembre 2008 (archiviato dall'url originale il 24 luglio 2008).

Collegamenti esterni

modifica
  • L'HC-256 all'eSTREAM, su ecrypt.eu.org. URL consultato il 29 settembre 2008 (archiviato dall'url originale il 23 giugno 2006).
  • L'HC-128 all'eSTREAM, su ecrypt.eu.org. URL consultato il 29 settembre 2008 (archiviato dall'url originale il 1º luglio 2012).