Articulo de referencia

QARMA

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 so...

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

Descripción general de QARMA (una barra superior indica una transformación inversa)

QARMA es un cifrado Even-Mansour que utiliza tres etapas, con claves de blanqueamiento w 0 y w 1 combinadas mediante XOR entre ellas:

  1. 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);
  2. 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 );
  3. 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.
Detalles de QARMA. Rondas deϝ{\displaystyle \digama }están en la cima, rondas deϝ¯{\displaystyle {\overline {\digamma }}}están en la parte inferior,do{\displaystyle C}está a la derecha. La ruta interior describe la transformación del estado interno, la ruta exterior corresponde a la actualización del ajuste. c i son constantes redondas .

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 deϝ{\displaystyle \digama }El estado se transforma a través de operacionesτ,METRO,S{\displaystyle \tau ,M,S}:

  • τ{\displaystyle \tau }es ShuffleCells , una permutación MIDORI de celdas ([ 0, 11, 6, 13, 10, 1, 12, 7, 5, 14, 3, 8, 15, 4, 9, 2]);
  • METRO{\displaystyle M}es MixColumns : cada columna se multiplica por una matriz fija M;
  • S{\displaystyle S}es SubCells : cada celda se transforma utilizando una S-box .

El ajuste para cada ronda se actualiza usandoh,ω{\displaystyle h,\omega }:

  • h{\displaystyle h}es una permutación de celdas de MANTIS ([ 6, 5, 14, 15, 0, 1, 2, 3, 7, 12, 13, 4, 8, 9, 10, 11]);
  • ω{\displaystyle \omega }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 deϝ¯{\displaystyle {\overline {\digamma }}}consisten en operaciones inversasτ¯,METRO¯,S¯,h¯,ω¯{\displaystyle {\overline {\tau }},{\overline {M}},{\overline {S}},{\overline {h}},{\overline {\omega }}}. Rondas centrales, además de dos rondas (τ,METRO,S{\displaystyle \tau ,M,S}yτ¯,METRO¯,S¯{\displaystyle {\overline {\tau }},{\overline {M}},{\overline {S}}}), incluyen la multiplicación del estado por una matriz involutiva Q.

Referencias

  1. Qameleon v. 1.0: Presentación al proceso de estandarización de criptografía ligera del NIST
  2. ^ Zong y Dong 2016 .
  3. 1 2 Avanzi 2016 .

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 .
  • Implementación en Python de dominio público de QARMA-64
  • Implementación de código abierto (licencia MIT) de QARMA-64 en C
Obtenido de " https://en.wikipedia.org/w/index.php?title=QARMA&oldid=1257480102 "