QARMA (fromQualcommARMAuthenticator[1]) is alightweighttweakableblock cipher primarily known for its use in theARMv8 architecture for protection of software as acryptographic hash for thePointer Authentication Code.[2] The cipher was proposed by Roberto Avanzi in 2016.[2][3] Two versions of QARMA are defined: QARMA-64 (64-bit block size with a 128-bitencryption key) and QARMA-128 (128-bit block size with a 256-bit key). The design of the QARMA was influenced byPRINCE andMANTIS.[3] The cipher is intended for fully-unrolled hardware implementations with low latency (likememory encryption). Unlike theXTS mode, the address can be directly used as a tweak and does not need to be whitened with the block encryption first.
permutation F is usingcore keyk0 and parameterized by a tweakT. It hasr rounds inside (r = 7 for QARMA-64, r = 11 for QARMA-128);
"central" permutation C is using keyk1 and is designed to be reversible via a simple key transformation (contains twocentral rounds);
the third permutation is an inverse of the first (r more rounds).
All keys are derived from themaster encryption key K usingspecialisation:
K is partitioned into halves as w0Concatenation k0, each will havehalfsize bits;
for encryption w1 = (w0>>> 1) + (w0>> (halfsize-1));
for encryption k1 = k0;
for decryption, the same design can be used as long as k0+α is used as a core key, k1 = Q•k0, w1 and w0 are swapped. α here is a special constant and Q a specialinvolutary matrix. This construct is similar to thealpha reflection in PRINCE.
QARMA details. Rounds of are at the top, rounds of are at the bottom, is on the right. Inner path describes the transformation of the internal state, outer path corresponds to the tweak update.ci areround constants.
The data is split into 16cells (4-bitnibbles for QARMA-64, 8-bitbytes for QARMA-128). Internal state also contains 16 cells, arranged in a 4x4 matrix, and is initialized by plaintext (XORed with w0). In each round of, the state is transformed via operations:
isMixColumns: each column is multiplied by a fixed matrix M;
isSubCells: each cell is transformed using anS-box.
The tweak for each round is updated using:
is a cell permutation from MANTIS ([ 6, 5, 14, 15, 0, 1, 2, 3, 7, 12, 13, 4, 8, 9, 10, 11]);
is anLFSR applied to each of the cells with numbers [0, 1, 3, 4, 8, 11, 13]. For QARMA-64, the LFSR is (b3, b2, b1, b0) ⇒ (b0 + b1, b3, b2, b1), for QARMA-128, (b7, b6, ..., b0) ⇒ (b0 + b2, b7, b6, ..., b1),
The rounds of consist of inverse operations.Central rounds, in addition to two rounds ( and), include multiplication of the state by an involutary matrixQ.