190 likes | 414 Views
AES. ADVANCED ENCRIPTION STANDARD. 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
E N D
AES ADVANCED ENCRIPTION STANDARD
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 nolineal • 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 Una llave muy pequeña puede ser vulnerable a ataques de fuerza bruta, el tamaño 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 Se divide en dos procedimientos generales, la expansión de la llave y la selección de las llaves de ciclo o RoundKey. • Número de Ciclos Cada ciclo aplica las todas las transformaciones al texto. Por cada ciclo extra se obtiene mayor seguridad y menor velocidad.
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 FeedBack (CFB) Mode para los siguientes el texto cifrado será • Output FeedBack (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 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 (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 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 y depende de los valores de Nb y Nk
Las transformaciones en un ciclo • ByteSub(Estado)Es una transformación de substitución de bytes no lineal, operando en cada Estado, con la tabla de substitución (S-box).
ShiftRow(Estado) Las filas del Estado son cíclicamente corridas diferentes distancias, la fila uno se corre C1, la fila 2 C2, y la fila 3 C3. Los valores de C1, C2, C3 en función de Nb Ejemplo para Nb = 4
MixColumn(Estado)Se logra al multiplicar la columna a(x) de un estado por c(x), una matriz de constantes, así: AddRoundKey(Estado, RoundKey) Realiza es un XOR entre el Estado y la RoundKey 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 RoundKey es igual al del Bloque Nb
Key Schedule Esta compuesta por dos funciones • Expansión de la Llave Se expande la llave así: para Nk < = 6, esta dado según: KeyExpansion(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 = SubByte(RotByte(temp)) ^ Rcon[i / Nk]; W[i] = W[i - Nk] ^ temp; } }
para Nk < = 6, esta dado según KeyExpansion(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 = SubByte(RotByte(temp)) ^ Rcon[i / Nk]; else if (i % Nk == 4) temp = SubByte(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, SubByte 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 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, Durante Nr -1 ciclos y Un ciclo final. El código en C: Rijndael(State,CipherKey) { KeyExpansion(CipherKey,ExpandedKey) ; AddRoundKey(State,ExpandedKey); For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey +Nb*i) ; FinalRound(State,ExpandedKey + Nb*Nr); }
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 Cuadradoque 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