QARMA (de Q ualcomm ARM Authenticator [ 1 ] ) es un cifrado de bloques ligero y configurable conocido principalmente por su uso en la arquitectura ARMv8 para la protección de software como un hash criptográfico para el Código de Autenticación de Puntero . [ 2 ] El cifrado fue propuesto por Roberto Avanzi en 2016. [ 2 ] [ 3 ] Se definen dos versiones de QARMA: QARMA-64 (tamaño de bloque de 64 bits con una clave de cifrado de 128 bits ) y QARMA-128 (tamaño de bloque de 128 bits con una clave de 256 bits). El diseño de QARMA fue influenciado por PRINCE y MANTIS . [ 3 ] El cifrado está destinado a implementaciones de hardware completamente desplegadas con baja latencia (como el cifrado de memoria ). A diferencia del modo XTS , la dirección se puede usar directamente como un ajuste y no necesita ser blanqueada con el cifrado de bloques primero.
Arquitectura

QARMA es un cifrado Even-Mansour que utiliza tres etapas, con claves de blanqueamiento w 0 y w 1 combinadas mediante XOR entre ellas:
- La permutación F utiliza la clave central k 0 y está parametrizada por un ajuste T. Tiene r rondas en su interior (r = 7 para QARMA-64, r = 11 para QARMA-128);
- La permutación "central" C utiliza la clave k 1 y está diseñada para ser reversible mediante una simple transformación de clave (contiene dos rondas centrales );
- La tercera permutación es la inversa de la primera ( r rondas más).
Todas las claves se derivan de la clave maestra de cifrado K mediante especialización :
- K se divide en dos mitades como w 0 Concatenación k 0 , cada una tendrá bits de tamaño medio ;
- para cifrado w 1 = (w 0 >>> 1) + (w 0 >> (halfsize-1));
- para cifrado k 1 = k 0 ;
- Para el descifrado, se puede usar el mismo diseño siempre que se utilice k 0 +α como clave central, k 1 = Q•k 0 , y se intercambien w 1 y w 0. Aquí, α es una constante especial y Q una matriz involutiva especial . Esta construcción es similar a la reflexión alfa en PRINCE.

Los datos se dividen en 16 celdas ( nibbles de 4 bits para QARMA-64, bytes de 8 bits para QARMA-128). El estado interno también contiene 16 celdas, dispuestas en una matriz de 4x4, y se inicializa con texto plano (XOR con w 0 ). En cada ronda deEl estado se transforma a través de operaciones:
- es ShuffleCells , una permutación MIDORI de celdas ([ 0, 11, 6, 13, 10, 1, 12, 7, 5, 14, 3, 8, 15, 4, 9, 2]);
- es MixColumns : cada columna se multiplica por una matriz fija M;
- es SubCells : cada celda se transforma utilizando una S-box .
El ajuste para cada ronda se actualiza usando:
- es una permutación de celdas de MANTIS ([ 6, 5, 14, 15, 0, 1, 2, 3, 7, 12, 13, 4, 8, 9, 10, 11]);
- es un LFSR aplicado a cada una de las celdas con números [0, 1, 3, 4, 8, 11, 13]. Para QARMA-64, el LFSR es (b3, b2, b1, b0) ⇒ (b0 + b1, b3, b2, b1), para QARMA-128, (b7, b6, ..., b0) ⇒ (b0 + b2, b7, b6, ..., b1),
Las rondas deconsisten en operaciones inversas. Rondas centrales, además de dos rondas (y), incluyen la multiplicación del estado por una matriz involutiva Q.
Referencias
Fuentes
- Avanzi, Roberto (2016). La familia de cifrados por bloques QARMA (PDF) . IACR Transactions on Symmetric Cryptology (ToSC) . Vol. 17 (publicado el 8 de marzo de 2017). pp. 4–44 . doi : 10.13154/tosc.v2017.i1.4-44 . Archivado del original (PDF) el 13 de mayo de 2020.
- Zong, Rui; Dong, Xiaoyang (2016). "Ataque de encuentro en el medio contra el cifrado de bloques QARMA" (PDF) . iacr.org . IACR . Consultado el 10 de junio de 2022 .
- Kaur, Jasmin; Kermani, Mehran Mozaffari; Azarderakhsh, Reza (1 de enero de 2022). "Construcciones de hardware para el cifrado de bloques criptográfico ligero QARMA con mecanismos de detección de errores" . IEEE Transactions on Emerging Topics in Computing . 10 (1): 514– 519. doi : 10.1109/TETC.2020.3027789 . eISSN 2376-4562 . S2CID 226665710 .
- Li, Rongjia; Jin, Chenhui (4 de mayo de 2018). "Ataques de encuentro en el medio en QARMA-64/128 de ronda reducida". The Computer Journal . 61 (8): 1158– 1165. doi : 10.1093/comjnl/bxy045 . eISSN 1460-2067 . ISSN 0010-4620 .
- Yang, Dong; Qi, Wen-feng; Chen, Hua-jin (2018). "Ataque diferencial imposible a la familia de cifrados de bloques QARMA" . Cryptology ePrint Archive .
Enlaces externos
- Implementación en Python de dominio público de QARMA-64
- Implementación de código abierto (licencia MIT) de QARMA-64 en C
- Cifrados de bloques