stringtranslate.com

Caja S Rijndael

El Rijndael S-box es un cuadro de sustitución ( tabla de búsqueda ) utilizado en el cifrado Rijndael, en el que se basa el algoritmo criptográfico del Estándar de cifrado avanzado (AES) . [1]

Caja S delantera

La S-box asigna una entrada de 8 bits, c , a una salida de 8 bits, s = S ( c ) . Tanto la entrada como la salida se interpretan como polinomios sobre GF(2) . Primero, la entrada se asigna a su inverso multiplicativo en GF(2 8 ) = GF(2) [ x ]/( x 8 + x 4 + x 3 + x + 1 ) , el campo finito de Rijndael . El cero, como identidad, está mapeado a sí mismo. Esta transformación se conoce como Nyberg S-box en honor a su inventora Kaisa Nyberg . [2] Luego, el inverso multiplicativo se transforma utilizando la siguiente transformación afín :

donde [ s 7 , ..., s 0 ] es la salida del S-box y [ b 7 , ..., b 0 ] es el inverso multiplicativo como vector.

Esta transformación afín es la suma de múltiples rotaciones del byte como vector, donde la suma es la operación XOR:

donde b representa el inverso multiplicativo, es el operador XOR bit a bit , es un desplazamiento circular bit a bit hacia la izquierda y la constante 63 16 = 01100011 2 se proporciona en hexadecimal .

Una formulación equivalente de la transformación afín es

donde s , b y c son matrices de 8 bits, c es 01100011 2 y los subíndices indican una referencia al bit indexado. [3]

Otro equivalente es:

[4] [5]

donde es la multiplicación polinomial de y se toma como matrices de bits.

Caja S inversa

La S-box inversa es simplemente la S-box ejecutada al revés. Por ejemplo, la caja S inversa de b8 16 es 9a 16 . Se calcula calculando primero la transformación afín inversa del valor de entrada, seguida de la inversa multiplicativa. La transformación afín inversa es la siguiente:

La transformación afín inversa también representa la suma de múltiples rotaciones del byte como un vector, donde la suma es la operación XOR:

donde está el operador XOR bit a bit , es un desplazamiento circular bit a bit hacia la izquierda y la constante 5 16 = 00000101 2 se proporciona en hexadecimal .

Criterio de diseño

La Rijndael S-box fue diseñada específicamente para ser resistente al criptoanálisis lineal y diferencial . Esto se hizo minimizando la correlación entre transformaciones lineales de bits de entrada/salida y, al mismo tiempo, minimizando la probabilidad de propagación de la diferencia.

La Rijndael S-box se puede reemplazar en el cifrado Rijndael, [1] lo que derrota la sospecha de una puerta trasera integrada en el cifrado que explota una S-box estática. Los autores afirman que es probable que la estructura de cifrado de Rijndael proporcione suficiente resistencia contra el criptoanálisis diferencial y lineal incluso si se utiliza una caja S con propiedades "promedio" de correlación/diferencia de propagación (cf. las propiedades "óptimas" de la caja S de Rijndael ).

Ejemplo de implementación en lenguaje C

El siguiente código C calcula la S-box:

#incluir <stdint.h> #define ROTL8(x,shift) ((uint8_t) ((x) << (shift)) | ((x) >> (8 - (shift))))void inicialize_aes_sbox ( uint8_t sbox [ 256 ]) { uint8_t p = 1 , q = 1 ; /* invariante de bucle: p * q == 1 en el campo de Galois */ do { /* multiplicar p por 3 */ p = p ^ ( p << 1 ) ^ ( p & 0x80 ? 0x1B : 0 );                        /* divide q entre 3 (es igual a multiplicación por 0xf6) */ q ^= q << 1 ; q ^= q << 2 ; q ^= q << 4 ; q ^= q & 0x80 ? 0x09 : 0 ;                    /* calcular la transformación afín */ uint8_t xformed = q ^ ROTL8 ( q , 1 ) ^ ROTL8 ( q , 2 ) ^ ROTL8 ( q , 3 ) ^ ROTL8 ( q , 4 );               sbox [ p ] = xformed ^ 0x63 ; } mientras ( p ! = 1 );        /* 0 es un caso especial ya que no tiene inverso */ sbox [ 0 ] = 0x63 ; }  

Referencias

  1. ^ ab "El cifrado de bloques de Rijndael" (PDF) . Consultado el 11 de noviembre de 2013 .
  2. ^ Nyberg K. (1991) Cajas S no lineales perfectas. En: Davies DW (eds) Avances en criptología – EUROCRYPT '91. EUROCRYPT 1991. Apuntes de conferencias sobre informática, vol 547. Springer, Berlín, Heidelberg
  3. ^ "El estándar de cifrado avanzado" (PDF) . FIPS PUB 197: el estándar oficial AES . Estándar federal de procesamiento de información . 2001-11-26 . Consultado el 29 de abril de 2010 .
  4. ^ Jörg J. Buchholz (19 de diciembre de 2001). "Implementación de Matlab del estándar de cifrado avanzado" (PDF) .
  5. ^ Jie Cui; Liusheng Huang; Hong Zhong; Chinchén Chang; Wei Yang (mayo de 2011). "Una S-box AES mejorada y su análisis de rendimiento" (PDF) .