CIPHERUNICORN-A
# CIPHERUNICORN-A

In crittografia il CIPHERUNICORN-A è un cifrario a blocchi creato nel 2000 da NEC. È tra le tecniche crittografiche raccomandate dal CRYPTREC per l'utilizzo da parte del governo Giapponese. Deriva dal cifrario CIPHERUNICORN-E, sviluppato nel 1998.

## Struttura

L'algoritmo è basato su una struttura a rete di Feistel con 16 passaggi simile a quella del suo predecessore, ma con alcuni significativi cambiamenti. La dimensione del blocco è di 128 bit, la chiave può essere lunga 128, 192 o 256 bit.

La funzione dei passaggi è ancora più complicata di quella del CIPHERUNICORN-E, anche se è stata rimossa la funzione aggiuntiva di mescolamento dei bit presente ogni due passaggi. La funzione è sempre divisa in due flussi computazionali paralleli: entrambi sono reti di Feistel. Il primo flusso, denominata flusso principale, è una rete di Feistel a 10 passaggi che utilizza 4 S-box da 8×8 bit simili a quelle del CIPHERUNICORN-E. Gli ultimi 2 passaggi del flusso principale sono influenzati dall'output della seconda parte dell'altro flusso computazionale, denominato funzione di generazione della chiave temporanea. Quest'ultimo è una rete di Feistel a 6 passaggi che utilizza moltiplicazioni modulari e 2 delle S-box del cifrario.

A differenza del CIPHERUNICORN-E, le sotto-chiavi sono inserite nel flusso computazionale sono all'inizio di ogni passaggio principale.

Il gestore della chiave fa un uso ripetuto di una funzione denominata MT, basata sulla moltiplicazione modulare e su tutte le S-box.

## Sicurezza

La complessità della funzione di ciclo del CIPHERUNICORN-A rende l'algoritmo difficile da analizzare: sono state realizzate solo poche analisi su versioni semplificate del cifrario che hanno mostrato come la sua struttura resiste bene sia alla crittanalisi differenziale che lineare. Solo un difetto nel gestore della chiave è stato scoperto, difetto che può portare all'esistenza di chiavi equivalenti: non è nota, però, la portata di questa vulnerabilità.

