Hubbry Logo
search
logo

Prince (cipher)

logo
Community Hub0 Subscribers
Write something...
Be the first to start a discussion here.
Be the first to start a discussion here.
See all
Prince (cipher)

Prince is a block cipher targeting low latency, unrolled hardware implementations. It is based on the so-called FX construction. Its most notable feature is the alpha reflection: the decryption is the encryption with a related key which is very cheap to compute. Unlike most other "lightweight" ciphers, it has a small number of rounds and the layers constituting a round have low logic depth. As a result, fully unrolled implementation are able to reach much higher frequencies than AES or PRESENT. According to the authors, for the same time constraints and technologies, PRINCE uses 6–7 times less area than PRESENT-80 and 14–15 times less area than AES-128.

The block size is 64 bits and the key size is 128 bits. The key is split into two 64 bit keys and . The input is XORed with , then is processed by a core function using . The output of the core function is xored by to produce the final output ( is a value derived from ). The decryption is done by exchanging and and by feeding the core function with xored with a constant denoted alpha.

The core function contain 5 "forward" rounds, a middle round, and 5 "backward" rounds, for 11 rounds in total. The original paper mentions 12 rounds without explicitly depicting them; if the middle round is counted as two rounds (as it contains two nonlinear layers), then the total number of rounds is 12.

A forward round starts with a round constant XORed with , then a nonlinear layer , and finally a linear layer . The "backward" rounds are exactly the inverse of the "forward" rounds except for the round constants.

The nonlinear layer is based on a single 4-bit S-box which can be chosen among the affine-equivalent of 8 specified S-boxes.

The linear layer consists of multiplication by a 64x64 matrix and a shift row similar to the one in AES but operating on 4-bit nibbles rather than bytes.

is constructed from 16x16 matrices and in such a way that the multiplication by can be computed by four smaller multiplications, two using and two using .

The middle round consists of the layer followed by followed by the layer.

See all
User Avatar
No comments yet.