Sei sulla pagina 1di 24

Unidad 3 / Escenario 5

Lectura fundamental

Cifrarios de bloque estándar

Contenido

1 S-DES O DES-SIMPLICADO

2 DES (DATA ENCRYPTION STANDARD)

3 Itinerario de la clave DES

4 Ejemplo DES

5 Doble y triple DES

6 Criptoanálisis de sistemas Tipo DES


7 Modos de operación DES

8 AES (ADVANCED ENCRYPTION STANDARD)

9 Conclusiones

Palabras clave: DES, AES, ciframiento, permutación, clave


1. S-DES O DES-SIMPLICADO

En este Escenario se discuten las caracterı́sticas de los sistemas criptográficos estándar DES (Data Encryption
Standard) y AES ( Advanced Encryption Standard); para ello se i ntroduce una versión simplificada del sistema DES
introducida por Edward Schaefer ( Ver Stallings, 1999, [ 5], Lectura complementaria I , Cryptex) conocido como el
sistema criptográfico S-DES. El cual no es más que una red de sustitución-permutación.

S-DES, cifra listas de 8 bits con claves que son listas de 10 bits. En este caso, a cada texto en claro x se le
aplica un algoritmo de ciframiento con la forma:

IP−1 ◦ fK2 ◦ SW ◦ fK1 ◦ IP.

El algoritmo de desciframiento tiene la forma

IP−1 ◦ fK1 ◦ SW ◦ fK2 ◦ IP.

En donde IP denota una permutación pública, SW : Z28 → Z28 es una transposición tal que:

SW (x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 ) = (x5 , x6 , x7 , x8 , x1 , x2 , x3 , x4 ).

La pareja (K1, K2), constituye el itinerario de la clave que se obtiene de la siguiente forma:

Si K = (k1, k2, k3, k4, k5, k6, k7, k8, k9, k10) es una clave, entonces le aplicamos una permutación P10, tal que :

P 10
3 5 2 7 4 10 1 9 8 6

luego P 10(K) = (k3, k5, k2, k7, k4, k10, k1, k9, k8, k6).

Dada la función LS − 1 : Z25 → Z25 que realiza un desplazamiento circular a izquierda de 1 bit se calcula la composición
K1 = P 8(LS − 1(P 10(K))). En donde P 8 es una permutación pública de 8 bits definida de forma tal que:

P8
6 3 7 4 8 5 10 9

K1 es la primera sub-clave del itinerario de la clave.

1
Ahora regresamos a las listas producidas por LS-1 y desarrollamos un desplazamiento circular a izquierda de dos
bits, denotado LS-2 aplicamos de nuevo P 8 y esta composición define la segunda subclave del itinerario denotada
K2 .

Itinerario de la clave

K1 = P 8(LS − 1(P 10(K))).


(1)
K2 = P 8(LS − 2(LS − 1(P 10(K)))).

Las permutaciones IP e IP−1 , se definen de la siguiente forma

IP
2 6 3 1 4 8 5 7

IP−1
4 1 3 5 7 2 8 6

Note que IP−1 (IP)(x) = x.

La función fk , hace de este tipo de ciframiento una RSP, en este caso

fK (L, R) = (L ⊕ F (R, SK), R).

SK ∈ (K1 , K2 ) es una subclave.

L está constituido por los primeros 4 bits del texto en claro x, R son los últimos cuatro bits del texto en claro.

F es una función

F : Z42 → Z42 , tal que

a una lista (n1, n2, n3, n4) ∈ Z42, se le aplica la expansión-permutación E/P , tal que:

E/P
4 1 2 3 2 3 4 1

lo cual escribimos en la forma:

n4 n1 n2 n3
n2 n3 n4 n1

2
Adicionamos la subclave K1 = (k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 ), para obtener

n4 + k11 n1 + k12 n2 + k13 n3 + k14


n2 + k15 n3 + k16 n4 + k17 n1 + k18

Lo cual escribimos en la forma

p00 p01 p02 p03


p10 p11 p12 p13

Los primeros cuatro bits, se operan con la caja S0 los últimos cuatrobits se operan con la caja S1, donde
   
1 0 3 2 0 1 2 3
 3 2 1 0   2 0 1 3 
S0 =  0
, S1 =  
2 1 3   3 0 1 0 
3 1 3 2 2 1 0 3

Los bits p00p03, son el desarrollo en binario de una fila de S0, mientras que los bits p01p02 indican el desarrollo binario
de una columna, p00|p01p02|p03 indican una entrada de la caja S0, a la cual se le calcula su desarrollo binario
que consta de dos bits.

De la misma forma p10|p11p12|p13, indican un desarrollo binario de una entrada de la caja S1.

Si a los cuatro bits α0α1α2α3 obtenidos, le calculamos la permutación P 4, tal que:

P4
2 4 3 1

Entonces

F ((n1, n2, n3, n4)) = P 4(α0α1α2α3).

Por último, debemos anotar que la función SW intercambia los 4 bits de la derecha con los 4 bits izquierdos de la
salida de la funciónf .

Por ejemplo, si K = 0111111101 y queremos descifrar y = 1010|0010, calculamos el itinerario de la clave:

P 10(K) = 11111|10011

LS − 1(P 10(K)) = 11111|00111

P 8(LS − 1(P 10(K))) = K1 = 0101|1111.

3
LS − 2(LS − 1(P 10(K))) = 11111|11100.

P 8(LS − 2(LS − 1(P 10(K)))) = K2 = 1111|1100.

Ahora se empieza la labor de desciframiento:

IP (y) = 0011|0001.

E/P (0001) = 1000|0010.

(E/P (0001)) ⊕ K2 = 0|11|1||1|11|0.

Buscamos la entrada 13 de la caja S0 y la entrada 23 de la caja S1. Para obtener

0 = 00, 0 = 00,

P 4(0000) = 0000 = F (R, SK2 ), luego

fK2 (L ⊕ 0000, 0001) = 0011|0001,

SW (1010|0010) = 0001|0011.

Calculamos F (R, SK1 ), de forma tal que

E/P (0011) = 1001|0110.

1001|0110 ⊕ K1 = 1001|0110 ⊕ 0101|1111 = 1100|1001.

Buscamos la entrada 22 de la caja S0 y la entrada 30 de S1. Con lo que obtenemos:

01 = 1, 10 = 2 y calculamos

P 4(0110) = 1010,

fK1 (L ⊕ F (R, SK1 ), R) = (0001 ⊕ 1010)0011 = 10110011.

IP −1 (10110011) = 1110|1010 = x.

Codificando de forma hexadecimal con A = 0000, . . . , P = 1111 obtenemos OK.

4
2. DES (DATA ENCRYPTION STANDARD)

En 1973 The National Bureau of Standards (NBS) realizó una convocatoria con el propósito de adoptar un sistema
de ciframiento estándar que pudiera estar disponible para todo tipo de comunicación electrónica a nivel mundial.
Muchas propuestas fueron enviadas a dicha agencia, entre ellas se cuenta la propuesta enviada por IBM desarrollada
por Tuchman y Meyer , la cual es un refinamiento del cifrado LUCIFER introducido por Feistel a finales de los años
60 con el patrocinio de IBM; el proyecto concluyó en 1971 con el desarrollo de LUCIFER, vendido al banco Lloyd’s de
Londres con el objeto de ser usado en sus cajeros automáticos. La propuesta de IBM resultó ser la mejor de
todas las enviadas y fue adoptada como el estándar desde 1977 hasta 1998 por la agencia NIST (National
Institute of Standards and Technology ) que reemplazó a la NBS.

La permutaciones públicas y las cajas definidas para este tipo de cifrado se pueden ver en (Stinson, 2006, [6], Lectura
complementaria VI). Ahora bien, ciframientos de este tipo, pueden calcularse usando el software Cryptex.

DES ha sido uno de l os esquemas de ciframiento cuyo criptoanálisis ha propiciado el avance de l a ciencia y la
tecnologı́a, por ejemplo en l os albores de l a i nvestigación de l a computación molecular ( ver Lectura
complementaria I ) muchos de l os algoritmos desarrollados para computadores moleculares, tenían que ver con el
descubrimiento del espacio de l laves DES, de hecho actualmente DES es considerado un sistema criptográfico
vulnerable, debido a la capacidad de cálculo que a la fecha se ha alcanzado por diferentes tipos de microchips.

DES cifra un texto en claro que consta de 64 bits con una clave de 56 bits.

En el caso de DES (tal como en S-DES), una permutación inicial es aplicada al texto en claro de 64 bits

IP(x) = L0 R0 ,

Después de 16 vueltas realizadas en el proceso de ciframiento, se aplica la permutación inversa IP−1 , para obtener
el texto cifrado final. Esto es,

y = IP−1(R16L16).

En cada vuelta actúa una función fKi tal que

fKi : {0, 1}32 × {0, 1}48 → {0, 1}32 ,

f (A, J).

En este caso la función E/P (A), construye una lista de 48 bits a partir de otra A con 32 bits.

5
Se calcula E(A) ⊕ J, escribiendo el resultado en bloques Bi cada uno con 6 bits.

B = B1 B2 . . . B8

En el siguiente paso como en el caso S − DES, se usan 8 cajas, para obtener una entrada desarrollada en binario de 4
bits, por cada uno de los bloques Bi. En este caso tenemos que

Si : {0, 1}6 → {0, 1}4,

Sj (Bj ) = Cj , debe ser tal que los bits b1b6, es el desarrollo en binario de una fila de la caja correspondiente, mientras
que los bits b2b3b4b5 son el desarrollo en binario de la columna de la caja.

Realizamos por último una permutación de 32 bits a la lista

Cj = C1 C2 C3 C4 C5 C6 C7 C8 , lo cual es la salida de la función fKi en el correspondiente estado.

3. Itinerario de la clave DES

El itinerario de la clave en el algoritmo DES, es una generalización del itinerario descrito para S-DES.

En este caso la clave K consta de 8 bits que verifican paridad en las posiciones 8, 16, 24, 32, 40, 48, 56 y 64, (lo cual
significa que debe haber un número par de unos antes de cada una de estas posiciones) y otros 56 bits que constituyen
la clave propiamente dicha.

Siempre tendremos por tanto una clave de 64 bits de la cual deben ser descartados 8 bits que no participan en el
proceso.

Ahora describiremos el itinerario de la clave que se realiza tal como en en el caso S-DES:

Observe los documentos adjuntos y use las permutaciones definidas para realizar los siguientes pasos:

1. Aplique la permutación P C − 1 a los 56 bits de la clave (recuerde P10 en S-DES). De esta manera obtenemos P
C − 1(K) = C0D0. C0 son los primeros 28 bits de la clave y D0 son los 28 restantes.

2. Para i desde 1 hasta 16, calculamos:

Ci =LSi (Ci−1 )
(2)
Di =LSi (Di−1 )

6
Ki = P C − 2(CiDi). Para entender P C − 2, recuerde P 8 en S-DES.

LSi es un desplazamiento de uno o dos bits a la izquierda de acuerdo al valor de i, si i = 1, 2, 9 o 16 desplace


1 solo bit en cada bloque, de otra forma desplace dos bits.

4. Ejemplo DES

Supongamos que queremos cifrar el texto escrito en hexadecimal

0123456789ABCDEF .

Con la clave

00010010011010010101101111001001101101111011011111111000.

Aplicando IP (ver; Stinson, 2006) obtenemos en binario:

L0 = 11001100000000001100110011111111.

L1 = R0 = 11110000101010101111000010101010.

Ahora realizamos las 16 vueltas del ciframiento:

E(R0 ) = 011110100001010101010101011110100001010101010101
K1 = 000110110000000101110111111111111000111000001110010
E(R0 ) ⊕ K1 = 0110000100010111101110101000011001100100100111
Salida de las cajas = 01011100100000101011010110010111
f (R0 , K1 ) = 00100011010010101010100110111011
L2 = R1 = 11101111010010100110010101000100.

E(R1 ) = 011101011110101001010100001100001010101000001001
K2 = 011110011010111011011001110110111100100111100101
E(R1 ) ⊕ K2 = 000011000100010010001101111010110110001111101100
Salida de las cajas = 11111000110100000011101010101110
f (R1 , K2 ) = 00111100101010111000011110100011
L3 = R2 = 11001100000000010111011100001001.

E(R2 ) = 111001011000000000000010101110101110100001010011
K3 = 010101011111110010001010010000101100111110011001

7
E(R2) ⊕ K3 = 101100000111110010001000111110000010011111001010
Salida de las cajas = 00100111000100001110000101101111
f (R2 , K3 ) = 01001101000101100110111010110000

L4 = R3 = 10100010010111000000101111110100.

E(R3 ) = 010100000100001011111000000001010111111110101001
K4 = 011100101010110111010110110110110011010100011101
E(R3) ⊕ K4 = 001000101110111100101110110111100100101010110100
Salida de las cajas = 00100001111011011001111100111010
f (R3 , K4 ) = 10111011001000110111011101001100

L5 = R4 = 01110111001000100000000001000101.

E(R4 ) = 101110101110100100000100000000000000001000001010
K5 = 011111001110110000000111111010110101001110101000
E(R4) ⊕ K5 = 110001100000010100000011111010110101000110100010
Salida de las cajas = 01010000110010000011000111101011
f (R4 , K5 ) = 00101000000100111010110111000011

L6 = R5 = 10001010010011111010011000110111.

E(R5 ) = 110001010100001001011111110100001100000110101111
K6 = 011000111010010100111110010100000111101100101111
E(R5) ⊕ K6 = 101001101110011101100001100000001011101010000000
Salida de las cajas = 01000001111100110100110000111101
f (R5 , K6 ) = 10011110010001011100110100101100

L7 = R6 = 11101001011001111100110101101001.

E(R6 ) = 111101010010101100001111111001011010101101010011
K7 = 111011001000010010110111111101100001100010111100
E(R6 ) ⊕ K7 = 000110011010111110111000000100111011001111101111
Salida de las cajas = 00010000011101010100000010101101
f (R6 , K7 ) = 10001100000001010001110000100111

L8 = R7 = 00000110010010101011101000010000.

E(R7 ) = 000000001100001001010101010111110100000010100000
K8 = 111101111000101000111010110000010011101111111011
E(R7 ) ⊕ K8 = 111101110100100001101111100111100111101101011011

8
Salida de las cajas = 01101100000110000111110010101110
f (R7 , K8 ) = 00111100000011101000011011111001

L9 = R8 = 11010101011010010100101110010000.

E(R8 ) = 011010101010101101010010101001010111110010100001
K9 = 111000001101101111101011111011011110011110000001
E(R8 ) ⊕ K9 = 100010100111000010111001010010001001101100100000
Salida de las cajas = 00010001000011000101011101110111
f (R8 , K9 ) = 00100010001101100111110001101010

L10 = R9 = 00100100011111001100011001111010.

E(R9 ) = 000100001000001111111001011000001100001111110100
K10 = 101100011111001101000111101110100100011001001111
E(R9 ) ⊕ K10 = 101000010111000010111110110110101000010110111011
Salida de las cajas = 11011010000001000101001001110101
f (R9 , K10 ) = 00100010001101100111110001101010

L11 = R10 = 01100010101111001001110000100010.

E(R10 ) = 010110101111111010101011111010101111110110100101
K11 = 0010000101011111110100111101111011010011100010110

E(R10 ) ⊕ K11 = 011110111010000101111000001101000010111000100011


Salida de las cajas = 0111001100000101110100100000001
f (R10 , K11 ) = 11100001000001001111101000000010

L12 = R11 = 11000101011110000011110001111000.

E(R11 ) = 011000001010101111110000000111111000001111110001
K12 = 011101010111000111110101100101000110011111101001

E(R11 ) ⊕ K12 = 000101011101101000000101100010111110010000011000


Salida de las cajas = 01111011100010110010011000110101
f (R11 , K12 ) = 11000010011010001100111111101010

L13 = R12 = 01110101101111010001100001011000.

9
E(R12 ) = 001110101011110111111010100011110000001011110000
K13 = 100101111100010111010001111110101011101001000001

E(R12 ) ⊕ K13 = 101011010111100000101011011101011011100010110001


Salida de las cajas = 10011010110100011000101101001111
f (R12 , K13 ) = 11011101101110110010100100100010

L14 = R13 = 00011000110000110001010101011010.

E(R13 ) = 000011110001011000000110100010101010101011110100
K14 = 010111110100001110110111111100101110011100111010

E(R13 ) ⊕ K14 = 010100000101010110110001011110000100110111001110


Salida de las cajas = 01100100011110011001101011110001
f (R13 , K14 ) = 10110111001100011000111001010101

L15 = R14 = 11000010100011001001011000001101.

E(R14 ) = 111000000101010001011001010010101100000001011011
K15 = 101111111001000110001101001111010011111100001010

E(R14 ) ⊕ K15 = 010111111100010111010100011101111111111101010001


Salida de las cajas = 10110010111010001000110100111100
f (R14 , K15 ) = 01011011100000010010011101101110

L16 = R15 = 01000011010000100011001000110100.

E(R15 ) = 001000000110101000000100000110100100000110101000
K16 = 110010110011110110001011000011100001011111110101

E(R15 ) ⊕ K16 = 111010110101011110001111000101000101011001011101


Salida de las cajas = 10100111100000110010010000101001
f (R15 , K16 ) = 11001000110000000100111110011000

R16 = 00001010010011001101100110010101.

Finalmente aplicamos la permutación IP −1 , a L16 , R16 , para obtener un texto cifrado que en notación hexadecimal
toma la forma

10
85E813540F 0AB405.

5. Doble y Triple DES

Dados l os avances en el criptoanálisis estándar , diversos sistemas criptográficos f ueron definidos para reemplazarlo,
doble DES, triple DES, Blowfish y Serpent son algunos de ellos. En esta sección, se hace una breve descripción de los
sistemas Doble DES y Triple Des.

Doble DES

En el caso Doble DES, dado un texto en claro y dos claves K1, K2, un texto cifrado se obtiene al calcular

y = eK2 (eK1 (x)).

El descifrado se obtiene al realizar el proceso inverso:

x = dK1 (dK2 (y)).

Triple DES

Para evitar ataques como el descrito a Doble DES, Tuchmann propuso un esquema alternativo. En este caso si se
tienen 2 claves K1, K2 entonces el cifrado se obtiene al calcular:

y = eK1 (dK2 (eK1 (x))).

Si se quiere usar tres claves, entonces el cifrado se obtiene al calcular

y = eK3 (dK2 (eK1 (x))).

Varias aplicaciones basadas en Internet como PGP usaron triple-tres claves-DES como uno de sus sistemas estándar
de ciframiento.

6. Criptoanálisis de sistemas tipo DES

DES es vulnerable a ataques del tipo (ver Stinson, 2006 para estudiar los detalles de estos ataques):

11
1. Criptoanálisis lineal

2. Criptoanálisis diferencial

3. Ataque Davies

La implementación de doble DES no es equivalente al DES clásico. Pero existe una forma de atacar este esquema,
que no depende de una propiedad particular de DES. Tal ataque se denomina encuentro a mitad del camino.

Este algoritmo se basa en la observación de que si un texto cifrado y se obtiene al calcular

y = eK2 (eK1 (x)).

entonces

X = eK1 (x) = dK2 (y).

El ataque procede de la siguiente forma

Dada una pareja conocida (x, y) de un texto en claro y su correspondiente texto cifrado.

Se cifra x con todas las posibles 256 claves K1 .

Guarde y ordene estos resultados en una tabla como los valores de X.

Descifre y usando todas las 256 posibles claves K2 .

Cada mensaje descifrado es comparado con los valores de la tabla hasta obtener una equivalencia.

Si tal equivalencia ocurre examine las dos claves usadas con una nueva pareja conocida (x0 , y 0 ) de un texto en claro
y su correspondiente texto cifrado.

Si las claves producen el mensaje cifrado correcto, entonces apruebe su uso en el esquema de ciframiento.

12
7. Modos de operación DES

Las siguientes son las formas de operar un cifrador en bloque:

1. ECB, Electronic Code Book, es el modo más simple de operación. En este caso cada bloque x1x2, . . . , se cifra
con la misma clave K, con lo que tenemos un texto cifrado de la forma y = eK (x1 )eK (x2 ), · · · = y1 y2 . . . . El
descifrado se logra calculando a su vez dK (y) = dK (y1 )dK (y2 ) . . . .

El modo ECB es adecuado, para cuando se quiere cifrar una cantidad pequeña de datos.

Observe que en este caso si xi = xj , para i 6= j entonces yi = yj . Recuerde a Vigenere.

1. CBC, ( Cipher Block Chaining Mode) en este modo un bloque cifrado yn se obtiene al realizar yi =e k (yi−1 ⊕
xi ). En este caso

dK (yi ) = dK (eK (yi−1 ⊕ xi )),

dK (yi ) = yi−1 ⊕ xi ,

yi−1 ⊕ dK (yi ) = yi−1 ⊕ yi−1 ⊕ xi = xi .

Para obtener el ciframiento del primer bloque en este modo, se requiere un vector inicial IV el cual se opera vía
un XOR con el texto en claro. IV es conocido por el emisor y el receptor. Por lo general, se protege con una
clave.

Una de l as razones para l a protección de I V, es que un oponente podrı́a utilizar su propio I V, para i nvertir bits en
el texto claro original.

Considere por ejemplo, lo siguiente:

y1 = eK (IV ⊕ x1 ),
x1 = IV ⊕ dK (y1 ).

Si x(i) nota el i-ésimo bit de los 64 bits de X. Entonces

x1 (i) = IV(i) ⊕ dK (y1 )(i)

13
Usando las propiedades XOR, se puede establecer que

x01(i) =I V ⊕dK (y1)(i).

Lo cual significa que si un oponente puede cambiar l os bits en I V, l os bits correspondientes del valor recibido de x1
pueden ser cambiados.

x0 significa el valor XOR complementario.

En el modo CFB (Cipher Feedback Mode ) se genera una lista de claves en cadena.

Se comienza con un vector inicial (protegido) y0 = IV

Generamos una lista de claves en cadena zi = eK (yi−1 ),

En este caso yi = xi ⊕ zi, para todo i ≥ 1. Se usa eK , tanto para cifrar como para descifrar.
En el modo OFB (Output Feedback Mode ), se genera una lista de claves en cadena y se aplica un XOR con el
texto en claro. En este caso:

Definimos un vector inicial z0 = IV y la lista de claves en cadena se obtiene con la fórmula:

zi = eK (zi−1 ).

Para todo i ≥ 1,

yi = xi ⊕ zi ,
xi = yi ⊕ zi .

La función eK se usa para cifrar y descifrar en OFB.

En el modo Contador, la diferencia radica en la forma como se genera la lista de claves en cadena.

Si la longitud de un texto en claro se nota m,

Elegimos un contador ctr, que es una lista de longitud m. Para construir una sucesión T1 , T2 , . . . , de la siguiente
forma

Ti = ctr + i − 1 mod 2m

Para todo i ≥ 1, ciframos los bloques x1 , x2 , . . . realizando el cálculo

14
yi = xi ⊕ eK (Ti ).

El modo CCM, combina el modo contador con el modo CBC.

8. AES (Advanced encryption standard)

En enero 2 de 1997, NIST comenzó el proceso de escoger el reemplazo para DES que iba a ser llamado CIFRA-
MIENTO AVANZADO ESTÁNDAR o AES (ver Stinson, 2006, [6]).

La primera convocatoria formal para la consecución de posibles algoritmos se realizó el 12 de Septiembre de 1997.

Algunos de los requisitos que debían satisfacer los candidatos eran por ejemplo el uso de contraseñas de 128 bits y
poder usar también claves con longitudes de 192 y 256 bits.

Se enviaron algoritmos desde el 15 de Junio de 1998 y 15 de los algoritmos enviados satisficieron todos los
requerimientos.

En la segunda conferencia para la consecución del AES, en Marzo de 1999, se eligieron 5 finalistas, MARS, RC6,
Rindjdael, Serpent y Twofish .

La tercera conferencia tuvo lugar en abril del 2000 y se eligió Rinjdael , como el nuevo AES, adoptado como
estándar desde noviembre 26 de 2001.

Los principales criterios considerados para la creación de AES fueron:

1. Seguridad

2. Costo

3. Algoritmo y sus caracterı́sticas de implementación.

La seguridad del algoritmo propuesto era esencial, de hecho si se llegaba a encontrar alguna falla de seguridad el
algoritmo era automáticamente descartado.

El costo se refiere a la eficiencia computacional o complejidad.

15
Las caracterı́sticas del algoritmo se refiere a la simplicidad y flexibilidad del algoritmo, entre otros factores.

Descripción de AES

AES trabaja con claves de tres tipos de longitudes:

128 bits, 192 bits y 256 bits,

AES es un cifrado iterado, el número de vueltas, que denotamos N r, depende de la longitud de la clave empleada.

N r = 10 si la longitud de la clave es de 128 bits,

N r = 12 si la longitud de la clave es de 192 bits,

N r = 14 si la longitud de la clave es de 256 bits.

A continuación se presenta una descripción de alto nivel para AES.

Descripción de AES

1. Dado un texto en claro x, lo declaramos como un estado inicial del proceso State = x. Luego aplicamos un
XOR que denotamos ADD − ROUNDKEY, entre State y la salida de una función que notamos ROUND-
KEY.

2. En cada una de las N r − 1 vueltas a la salida de la función State se le aplica una sustitución denominada
SUBBYTES, usando una S-caja. Además se le aplica una permutación notada SHIFTROWS, una operación
MIXCOLUMNS y se aplica la función ROUNDKEY.

3. Se aplica, SUBBYTES, se desarrolla SHIFTROWS y ADDROUND-KEY.

Esquema AES

El último valor de State es el texto cifrado y. Con esta descripción podemos concluir que AES es una RSP.

En el sistema criptográfico AES, el texto en claro x debe ser una lista de 16 bytes, que denotamos x0 , x1 , . . . , x15 .

State se representa en un arreglo de bytes de orden 4 × 4.

16
s0,0 s0,1 s0,2 s0,3
s1,0 s1,1 s1,2 s1,3
s2,0 s2,1 s2,2 s2,3
s3,0 s3,1 s3,2 s3,3

Inicialmente State consta de los 16 bytes del texto en claro:

s0,0 s0,1 s0,2 s0,3 x0 x4 x8 x12


s1,0 s1,1 s1,2 s1,3 x x5 x9 x13
← 1
s2,0 s2,1 s2,2 s2,3 x2 x6 x10 x14
s3,0 s3,1 s3,2 s3,3 x3 x7 x11 x15

Frecuentemente, se usa notación hexadecimal para representar en contenido de un byte. Por lo que cada byte
consta de dos símbolos hexadecimales.

La operación SUBBYTES aplica una sustitución en cada byte de State, usando una S-caja, digamos πS ∈ S8.

En cada caso πS puede ser representado, mediante un arreglo de 16 filas por 16 columnas. Una entrada en la fila
X y columna Y en esta caja se nota πS (XY ).

A diferencia del caso DES en el que las cajas usadas son aparentemente aleatorias. Las S-cajas en AES pueden ser
calculadas algebraicamente.

Las operaciones se desarrollan en el campo finito de Galois F28 = Z2[x] / < x8 + x4 + x3 + 1 > (ver Lectura
complementaria VI).

En este caso, FIELDINV denota el inverso multiplicativo de un elemento del campo.

BINARY-TO-FIELD, convierte una lista binaria en un elemento del campo, mientras que FIELD-TO-BINARY,
realiza el proceso inverso.

7
ai xi , corresponde al byte, a7 a6 a5 a4 a3 a2 a1 a0 .
P
Observe que un elemento del campo escrito en la forma
i=0

A continuación presentamos el algoritmo que describe la función SUBBYTES ;

external FIELDINVERSE, BINARY-TO-FIELD, FIELD-TO-BYNARY.


z ← BYNARY − TO − FIELD(a7 a6 a5 a4 a3 a2 a1 a0 )

6 0
if z =
then z ← FIELDINVERSE(z)

17
(a7 a6 a5 a4 a3 a2 a1 a0 ) ← FIELD − TO − BINARY(z)
c7 c6 c5 c4 c3 c2 c1 c0 ← (01100011)
comment : in the following loop, all subscripts are to be reduced modulo 8
for i ← 0 to 7
do bi ← (ai + ai+4 + ai+5 + ai+6 + ai+7 + ci ) mod 2
return (b7 b6 b5 b4 b3 b2 b1 b0 ).

Por ejemplo, supongamos que queremos aplicar la función SUBBYTES a (5, 3) = 01010011 = x6 + x4 + x + 1, con
inverso multiplicativo x7 + x6 + x3 + x = 11001010.

Ahora calculamos
b0 = a0 + a4 + a5 + a6 + a7 + c0 = 0 + 0 + 0 + 1 + 1 + 1 mod 2 = 1
b1 = a1 + a5 + a6 + a7 + a0 + c1 mod 2 = 0,
b2 = a2 + a6 + a7 + a8 + a1 + c2 mod 2 = 1,
b3 = a3 + a7 + a0 + a1 + a2 + c3 mod 2 = 1,
b4 = a4 + a0 + a1 + a2 + a3 + c4 mod 2 = 0,
b5 = a5 + a1 + a2 + a3 + a4 + c5 mod 2 = 1,
b6 = a6 + a2 + a3 + a4 + a5 + c6 mod 2 = 1,
b7 = a7 + a3 + a4 + a5 + a6 + c7 mod 2 = 1,

El resultado final es :

(b7 b6 b5 b4 b3 b2 b1 b0 ) = 1110110 = ED.

Figura 1: Esta tabla muestra todos los cálculos como el anterior, que pueden llegar a realizarse; Stinson, 2006.

La Función SHIFTROWS

La operación SHIFTROWS actúa de la siguiente forma:

s0,0 s0,1 s0,2 s0,3 s0,0 s0,1 s0,2 s0,3


s1,0 s1,1 s1,2 s1,3 s s1,2 s1,3 s1,0
← 1,1
s2,0 s2,1 s2,2 s2,3 s2,2 s2,3 s2,0 s2,1
s3,0 s3,1 s3,2 s3,3 s3,3 s3,0 s3,1 s3,2

18
En la operación MIXCOLUMNS cada columna de State es reemplazada por otra columna, vía la multiplicación
de esta, con una matriz de elementos de F28 .

external FIELDMULT, BINARY-TO-FIELD, FIELD-TO-BINARY


for i ← 0 to 3
do ti ← BINARY − TO − FIELD(si,c )

u0 ← FIELDMULT(x, t0 ) ⊕ FIELDMULT(x + 1, t1 ) ⊕ t2 ⊕ t3
u1 ← FIELDMULT(x, t1 ) ⊕ FIELDMULT(x + 1, t2 ) ⊕ t3 ⊕ t0
u2 ← FIELDMULT(x, t2 ) ⊕ FIELDMULT(x + 1, t3 ) ⊕ t0 ⊕ t1
u3 ← FIELDMULT(x, t3 ) ⊕ FIELDMULT(x + 1, t0 ) ⊕ t1 ⊕ t2

for i ← 0 to 3
do si,c ← FIELD − TO − BINARY(ui ).

A continuación describimos el itinerario AES de la clave:

Si la longitud de la clave es de 128 bits entonces le realizamos 11 vueltas a la clave (los otros casos requieren
procedimientos similares).

En este caso las entradas de los algoritmos se consideran palabras. La concatenación de todas las subclaves se
denomina el desarrollo de la clave, que consta de 44 palabras, (cada palabra consta a su vez de 4 bytes).

Tal concatenación se nota w[0], w[1], . . . , w[43], en donde w[i] es una palabra.

El desarrollo de la clave se construye usando la operación KEYEXPANSION.

La clave es la entrada para KEYEXPANSION, la cual se escribe como un arreglo de bytes key[0], key[1], . . . , key[15]
y la salida es el arreglo de 44 palabras ya descrito.

KEYEXPANSION, incorpora otras dos operaciones, denominadas ROTWORD y SUBWORD.

ROTWORD(B0 , B1 , B2 , B3 ) = (B1 , B2 , B3 , B0 ).

SUBWORD(B0 , B1 , B2 , B3 ) = (B00 , B10 , B20 , B30 ). Donde Bi0 = SUBBYTES(Bi ).

Rcon es un arreglo de 10 palabras, denotadas Rcon[1], . . . , Rcon[10]. La cuales son constantes escritas en notación
hexadecimal.

La función KEYEXPANSION

19
external ROTWORD, SUBWORD

Rcon[1] ← 01000000
Rcon[2] ← 02000000
Rcon[3] ← 04000000
Rcon[4] ← 08000000
Rcon[5] ← 10000000
Rcon[6] ← 20000000
Rcon[7] ← 41000000
Rcon[8] ← 81000000
Rcon[9] ← 1B000000
Rcon[10] ← 36000000

for i ← 0 to 3
do w[i] ← (key[4i], key[4i + 1], key[4i + 2], key[4i + 3])

for i ← 4 to 43




temp ← w[i − 1]

if i ≡ 0 (mod 4)
do
thentemp ← SUBWORD(ROT W ORD(temp)) ⊕ Rcon[ 4i ]



w[i] ← w[i − 4] ⊕ temp

return (w[0], . . . , w[43]).

Descifrado AES

Una vez descritas las operaciones necesarias, para realizar un cifrado AES, basta realizar las operaciones inversas
para construir el algoritmo de descifrado.

Observe que la ADDROUNDKEY es su propia inversa.

Seguridad AES

Obviamente, AES es seguro contra todos los ataques conocidos. Varios aspectos de su diseño proveen elementos
adicionales a la seguridad. Por ejemplo, el hecho de trabajar sobre campos finitos, lo hace fuerte contra ataques del
tipo diferencial o lineal.

Como ejercicio determine el itinerario de 10 vueltas para la clave

20
2b7E151628AED2A6ABF7158809CF4F3C

Con esta llave realice el cifrado para

3243F6A8885A308D313198A2E0370734.

9. Conclusiones

1. AES es el actual sistema criptográfico estándar.

2. Lineal, diferencial y ataque Davies, son métodos criptoanalíticos para el sistema criptográfico DES.

3. La seguridad de AES se puede probar formalmente, tal no es el caso para DES.

4. ECB, CBC, OFB, CFB y Contador son modos de operación en los que se puede aplicar un cifrado estándar.

Referencias

[1] S. Cimato and C.N. Yang, Visual Cryptography and Secrete Image Sharing, CRC Press, 2012.
[2] D. Kahn, The codebreakers, the comprehensive history of secret communication from ancient times to the internet, Scribner, 1996.
[3] R.E. Klima, N.P. Sigmon, and E.L. Stitzinger, Applications of Abstract Algebra with Maple And MatLab, Chapman and Hall/CRC,
2007.
[4] A. J. Menezes and van Oorschot P. C, Handbook of Applied Cryptography, CRC Press, 1996.
[5] W. Stallings, Cryptography And Networks Security, Principles and Practice, Vol. 2, Prentice-Hall, 1999.
[6] D. R. Stinson, Cryptography Theory And Practice, Vol. 3, Chapman and Hall/CRC, 2006.
[7] A. Uhl and A. Pommer, Image And Video Encryption From Digital Rights Management To Secured Personal Communication,
Springer, 2005.

21
INFORMACIÓN TÉCNICA

Módulo: Criptografı́a I
Unidad 3: Cifrarios de Bloque y Esteganografía
Escenario 5: Esquemas de secreto compartido

Autor: PhD Msc Agustín Moreno Cañadas

Asesor Pedagógico: Manuel Fernando Guevara


Diseñador Gráfico: Diego Alejandro Torres Suancha
Asistente: Daniela Mejía Ulloa

Este material pertenece al Politécnico


Grancolombiano. Por ende, son de uso exclusivo de las
Instituciones adscritas a la Red Ilumno. Prohibida su
reproducción total o parcial.

22

Potrebbero piacerti anche