CIPHERUNICORN-A

In cryptography, CIPHERUNICORN-A is a block cipher created by NEC in 2000. It was among the cryptographic techniques recommended for Japanese government use by CRYPTREC in 2003. However, it has been dropped to "candidate" level by the CRYPTREC revision of 2013.

The algorithm uses a 16-round Feistel network structure similar to its predecessor, CIPHERUNICORN-E, but with significant changes. The block size is 128 bits, with key sizes of 128, 192, or 256 bits.

The round function is even more complicated than that of CIPHERUNICORN-E, but the extra mixing function between rounds has been removed. The round function is still split into two nearly parallel computations; both of these are Feistel networks themselves.

The first part (the main stream) is a 10-round Feistel network, using four 8×8-bit S-boxes much like the ones from CIPHERUNICORN-E. The last two rounds of the main stream are influenced by the output of the second part (the temporary key generation function). This second, 6-round Feistel network uses modular multiplication, as well as two of the S-boxes.

In contrast to CIPHERUNICORN-E, subkeys are included only at the beginning of each main round.

The key schedule of CIPHERUNICORN-A makes repeated use of a function called MT, using modular multiplication and all of the S-boxes. A flaw was discovered in the key schedule, such that certain keys are equivalent, but it is unknown just how much of a weakness this is.

The great complexity of CIPHERUNICORN-A's round function has made it difficult to analyze. Some limited analysis has been done on simplified variants, showing that they are likely resistant to both differential and linear cryptanalysis.