El cuadro S de Rijndael es un cuadro de sustitución ( tabla de búsqueda ) que se utiliza en el cifrado de Rijndael, en el que se basa el algoritmo criptográfico del Estándar de cifrado avanzado (AES) . [1]
Adelante S-box
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | 63 | 7c | 77 | 7b | f2 | 6b | 6f | c5 | 30 | 01 | 67 | 2b | fe | d7 | ab | 76 |
10 | California | 82 | c9 | 7d | fa | 59 | 47 | f0 | anuncio | d4 | a2 | af | 9c | a4 | 72 | c0 |
20 | b7 | fd | 93 | 26 | 36 | 3f | f7 | cc | 34 | a5 | e5 | f1 | 71 | d8 | 31 | 15 |
30 | 04 | c7 | 23 | c3 | 18 | 96 | 05 | 9a | 07 | 12 | 80 | e2 | eb | 27 | b2 | 75 |
40 | 09 | 83 | 2c | 1a | 1b | 6e | 5a | a0 | 52 | 3b | d6 | b3 | 29 | e3 | 2f | 84 |
50 | 53 | d1 | 00 | ed | 20 | fc | b1 | 5b | 6a | cb | ser | 39 | 4a | 4c | 58 | cf |
60 | d0 | ef | Automóvil club británico | pensión completa | 43 | 4d | 33 | 85 | 45 | f9 | 02 | 7f | 50 | 3c | 9f | a8 |
70 | 51 | a3 | 40 | 8f | 92 | 9d | 38 | f5 | antes de Cristo | b6 | da | 21 | 10 | ff | f3 | d2 |
80 | CD | 0c | 13 | CE | 5f | 97 | 44 | 17 | c4 | a7 | 7e | 3d | 64 | 5d | 19 | 73 |
90 | 60 | 81 | 4f | corriente continua | 22 | 2a | 90 | 88 | 46 | ee | b8 | 14 | Delaware | 5e | 0b | db |
a0 | e0 | 32 | 3a | 0a | 49 | 06 | 24 | 5c | c2 | d3 | C.A | 62 | 91 | 95 | e4 | 79 |
b0 | e7 | c8 | 37 | 6d | 8d | d5 | 4e | a9 | 6c | 56 | f4 | ea | sesenta y cinco | 7a | ae | 08 |
c0 | licenciado en Letras | 78 | 25 | 2e | 1c | a6 | b4 | c6 | e8 | dd | 74 | 1f | 4b | bd | 8b | 8a |
d0 | 70 | 3e | b5 | 66 | 48 | 03 | f6 | 0e | 61 | 35 | 57 | b9 | 86 | c1 | 1d | 9e |
e0 | e1 | f8 | 98 | 11 | 69 | d9 | 8e | 94 | 9b | 1e | 87 | e9 | ce | 55 | 28 | df |
f0 | 8c | a1 | 89 | 0d | bf | e6 | 42 | 68 | 41 | 99 | 2d | 0f | b0 | 54 | cama y desayuno | dieciséis |
La columna está determinada por el nibble menos significativo y la fila por el nibble más significativo. Por ejemplo, el valor 9a 16 se convierte en b8 16 . |
El 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, se asigna 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 mediante la siguiente transformación afín :
donde [ s 7 ,…, s 0 ] es la salida de la caja S 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 a nivel de bits a la izquierda , y la constante 63 16 = 01100011 2 se da en hexadecimal .
Una formulación equivalente de la transformación afín es
donde s , b , y c son 8 matrices de bits, c es 01100011 2 , y los subíndices indican una referencia al bit indexada. [3]
Otro equivalente es:
dónde es la multiplicación polinomial de y tomadas como matrices de bits.
Caja S inversa
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0a | 0b | 0c | 0d | 0e | 0f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | 52 | 09 | 6a | d5 | 30 | 36 | a5 | 38 | bf | 40 | a3 | 9e | 81 | f3 | d7 | pensión completa |
10 | 7c | e3 | 39 | 82 | 9b | 2f | ff | 87 | 34 | 8e | 43 | 44 | c4 | Delaware | e9 | cb |
20 | 54 | 7b | 94 | 32 | a6 | c2 | 23 | 3d | ee | 4c | 95 | 0b | 42 | fa | c3 | 4e |
30 | 08 | 2e | a1 | 66 | 28 | d9 | 24 | b2 | 76 | 5b | a2 | 49 | 6d | 8b | d1 | 25 |
40 | 72 | f8 | f6 | 64 | 86 | 68 | 98 | dieciséis | d4 | a4 | 5c | cc | 5d | sesenta y cinco | b6 | 92 |
50 | 6c | 70 | 48 | 50 | fd | ed | b9 | da | 5e | 15 | 46 | 57 | a7 | 8d | 9d | 84 |
60 | 90 | d8 | ab | 00 | 8c | antes de Cristo | d3 | 0a | f7 | e4 | 58 | 05 | b8 | b3 | 45 | 06 |
70 | d0 | 2c | 1e | 8f | California | 3f | 0f | 02 | c1 | af | bd | 03 | 01 | 13 | 8a | 6b |
80 | 3a | 91 | 11 | 41 | 4f | 67 | corriente continua | ea | 97 | f2 | cf | ce | f0 | b4 | e6 | 73 |
90 | 96 | C.A | 74 | 22 | e7 | anuncio | 35 | 85 | e2 | f9 | 37 | e8 | 1c | 75 | df | 6e |
a0 | 47 | f1 | 1a | 71 | 1d | 29 | c5 | 89 | 6f | b7 | 62 | 0e | Automóvil club británico | 18 | ser | 1b |
b0 | fc | 56 | 3e | 4b | c6 | d2 | 79 | 20 | 9a | db | c0 | fe | 78 | CD | 5a | f4 |
c0 | 1f | dd | a8 | 33 | 88 | 07 | c7 | 31 | b1 | 12 | 10 | 59 | 27 | 80 | CE | 5f |
d0 | 60 | 51 | 7f | a9 | 19 | b5 | 4a | 0d | 2d | e5 | 7a | 9f | 93 | c9 | 9c | ef |
e0 | a0 | e0 | 3b | 4d | ae | 2a | f5 | b0 | c8 | eb | cama y desayuno | 3c | 83 | 53 | 99 | 61 |
f0 | 17 | 2b | 04 | 7e | licenciado en Letras | 77 | d6 | 26 | e1 | 69 | 14 | 63 | 55 | 21 | 0c | 7d |
La caja S inversa es simplemente la caja S que se ejecuta en reversa. Por ejemplo, la caja S inversa de b8 16 es 9a 16 . Se calcula calculando primero la transformación inversa afín 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:
dónde es el operador XOR bit a bit ,es un desplazamiento circular a la izquierda , y la constante 5 16 = 00000101 2 se da en hexadecimal .
Criterio de diseño
El S-box de Rijndael fue diseñado específicamente para ser resistente al criptoanálisis diferencial y lineal . Esto se hizo minimizando la correlación entre las transformaciones lineales de los bits de entrada / salida y, al mismo tiempo, minimizando la probabilidad de propagación de la diferencia.
La caja S de Rijndael se puede reemplazar en el cifrado de Rijndael, [1] que derrota la sospecha de una puerta trasera incorporada en el cifrado que explota una caja S estática. Los autores afirman que la estructura de cifrado de Rijndael debería proporcionar suficiente resistencia contra el criptoanálisis lineal y diferencial si se utiliza una caja S con propiedades de propagación de correlación / diferencia "promedio".
Implementación de ejemplo en lenguaje C
El siguiente código C calcula la caja S:
#include #define ROTL8 (x, shift) ((uint8_t) ((x) << (shift)) | ((x) >> (8 - (shift))))void initialize_aes_sbox ( uint8_t sbox [ 256 ]) { uint8_t p = 1 , q = 1 ;/ * invariante de bucle: p * q == 1 en el campo de Galois * / do { / * multiplica p por 3 * / p = p ^ ( p << 1 ) ^ ( p & 0x80 ? 0x1B : 0 );/ * dividir q entre 3 (es igual a la 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 ] = xformado ^ 0x63 ; } mientras ( p ! = 1 );/ * 0 es un caso especial ya que no tiene inversa * / sbox [ 0 ] = 0x63 ; }
Referencias
- ^ a b "El cifrado de bloque de Rijndael" (PDF) . Consultado el 11 de noviembre de 2013 .
- ^ Nyberg K. (1991) Cajas S perfectas no lineales . En: Davies DW (eds) Avances en criptología - EUROCRYPT '91. EUROCRYPT 1991. Lecture Notes in Computer Science, vol 547. Springer, Berlín, Heidelberg
- ^ "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 .
- ^ Jörg J. Buchholz (19 de diciembre de 2001). "Implementación de Matlab del estándar de cifrado avanzado" (PDF) .
- ^ Jie Cui; Liusheng Huang; Hong Zhong; Chinchen Chang; Wei Yang (mayo de 2011). "Una caja S AES mejorada y su análisis de rendimiento" (PDF) .