AES ADVANCED ENCRIPTION STANDARD AES Estndar adoptado por

  • Slides: 18
Download presentation
AES ADVANCED ENCRIPTION STANDARD

AES ADVANCED ENCRIPTION STANDARD

AES • Estándar adoptado por la NIST después de un estudio realizado en 1997

AES • Estándar adoptado por la NIST después de un estudio realizado en 1997 • Remplazó a DES publicado en 1977 por la NIST. • El diseño se basa en Wide Trail Strategy la que consiste en tres capas invertibles: – La capa de mezcla lineal – La capa no lineal – La capa de adición de llave • AES es un cifrador de tamaño de bloque y llave variable.

ELEMENTOS DE UN CIFRADOR • Key Size recomendado por la NIST es de 128.

ELEMENTOS DE UN CIFRADOR • Key Size recomendado por la NIST es de 128. • Tamaño del bloque Es inversamente proporcional a la velocidad de encripcion, y directamente proporcional al nivel de seguridad , el tamaño recomendado por la NIST es de 128. • Función Key Schedule

 • Formas de Operación – Electronic code Block (ECB) Mode para los siguientes

• Formas de Operación – Electronic code Block (ECB) Mode para los siguientes el texto cifrado será – Cipher Block Chaining (CBC) Mode para los siguientes el texto cifrado será

– Cipher Feed. Back (CFB) Mode para los siguientes el texto cifrado será –

– Cipher Feed. Back (CFB) Mode para los siguientes el texto cifrado será – Output Feed. Back (OFB) Mode para los siguientes el texto cifrado será

VULNERABILIDAD DE UN CRIPTOSISTEMA • Brute-Force Búsqueda exhaustiva de la llave. • Criptoanálisis Estadístico

VULNERABILIDAD DE UN CRIPTOSISTEMA • Brute-Force Búsqueda exhaustiva de la llave. • Criptoanálisis Estadístico Análisis y uso de la probabilidad de ocurrencia de una letra en un lenguaje determinad. • Criptoanálisis – Criptoanálisis diferencial: Es la técnica que permite reducir el numero de llaves posibles. – Criptoanálisis Lineal: Estudia las aproximaciones lineales basadas en las transformaciones ejecutadas por el cifrador.

ALGORITMO RIJNDAEL • El Estado: El estado es el resultado intermedio del cifrador. Nb

ALGORITMO RIJNDAEL • El Estado: El estado es el resultado intermedio del cifrador. Nb (Columnas del estado) es igual al tamaño del bloque dividido entre 32.

 • La Llave: Se puede representar como una matriz con cuatro filas y

• La Llave: Se puede representar como una matriz con cuatro filas y Nk (Columnas de la llave) que es igual al tamaño de la llave dividido entre 32.

 • El número de ciclos: El número de ciclos esta notado por Nr

• El número de ciclos: El número de ciclos esta notado por Nr y depende de los valores de Nb y Nk

 • Las transformaciones en un ciclo Byte. Sub(Estado) Es una transformación de substitución

• Las transformaciones en un ciclo Byte. Sub(Estado) Es una transformación de substitución de bytes no lineal, operando en cada Estado, con substitución (S-box). la tabla de

EJEMPLO DE S-BOX

EJEMPLO DE S-BOX

Shift. Row(Estado) Las filas del Estado son cíclicamente corridas diferentes distancias, la fila uno

Shift. Row(Estado) Las filas del Estado son cíclicamente corridas diferentes distancias, la fila uno se corre C 1, la fila 2 C 2, y la fila 3 C 3. Los valores de C 1, C 2, C 3 en función de Nb Ejemplo para Nb = 4

Mix. Column(Estado) Se logra al multiplicar la columna a(x) de un estado por c(x),

Mix. Column(Estado) Se logra al multiplicar la columna a(x) de un estado por c(x), una matriz de constantes, así: Add. Round. Key (Estado, Round. Key) Realiza es un XOR entre el Estado y la Round. Key o Llave de Ciclo. La Round Key es derivada de la llave del cifrador, y la función Key Schedule. El tamaño de la Round. Key es igual al del Bloque Nb

Key Schedule Esta compuesta por dos funciones • Expansión de la Llave Se expande

Key Schedule Esta compuesta por dos funciones • Expansión de la Llave Se expande la llave así: para Nk < = 6, esta dado según: Key. Expansion(byte Key[4*Nk], word W[Nb*(Nr+1)]) { for(i = 0; i < Nk; i++) W[i] = (Key[4*i], Key[4*i+1], Key[4*i+2], Key[4*i+3]); for(i = Nk; i < Nb * (Nr + 1); i++) { temp = W[i - 1]; if (i % Nk == 0) temp = Sub. Byte(Rot. Byte(temp)) ^ Rcon[i / Nk]; W[i] = W[i - Nk] ^ temp; } }

para Nk < = 6, esta dado según Key. Expansion(byte Key[4*Nk] word W[Nb*(Nr+1)]) {

para Nk < = 6, esta dado según Key. Expansion(byte Key[4*Nk] word W[Nb*(Nr+1)]) { for(i = 0; i < Nk; i++) W[i] = (key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]); for(i = Nk; i < Nb * (Nr + 1); i++) { temp = W[i - 1]; if (i % Nk == 0) temp = Sub. Byte(Rot. Byte(temp)) ^ Rcon[i / Nk]; else if (i % Nk == 4) temp = Sub. Byte(temp); W[i] = W[i - Nk] ^ temp; } } • la diferencia con el esquema para Nk <= 6 es que si i -4 es múltiplo de Nk, Sub. Byte es aplicada a W [i -1] antes de XOR

Selección de la llave El proceso de selección de la llave para el ciclo

Selección de la llave El proceso de selección de la llave para el ciclo i, será tomada de la llave expandida desde w[Nb*i] hasta w [Nb *(i+1) ] ilustrada así :

EL CIFRADOR El Cifrador de Rijndael se basa en la expansión de la llave,

EL CIFRADOR El Cifrador de Rijndael se basa en la expansión de la llave, Durante Nr -1 ciclos y Un ciclo final. El código en C: Rijndael(State, Cipher. Key) { Key. Expansion(Cipher. Key, Expanded. Key) ; Add. Round. Key(State, Expanded. Key); For( i=1 ; i<Nr ; i++ ) Round(State, Expanded. Key +Nb*i) ; Final. Round(State, Expanded. Key + Nb*Nr); }

CRIPTOANÁLISIS El primer ataques conocido para este algoritmo de Encripción fue publicados en 1998,

CRIPTOANÁLISIS El primer ataques conocido para este algoritmo de Encripción fue publicados en 1998, el primero logra romper la seguridad teóricamente de el cifrador solo para 6 ciclos. Recordemos que Rijndael usa 10, 12 o 14 ciclos. Todos los ataques se han basado en las técnicas del ataque Cuadrado que puede ser usado contra el algoritmo de Rijndael con 6, 7 y 8 ciclos. pretende encontrar la llave, utilizando 256 textos encriptados, que solamente se diferencien en un byte. Complejidad en el criptoanálisis de Rijndael