Mostrando entradas con la etiqueta NIST. Mostrar todas las entradas
Mostrando entradas con la etiqueta NIST. Mostrar todas las entradas

domingo, 3 de junio de 2018

Estándar de Criptografía AES

Anteriormente habíamos mencionado las capaz de cifrado que utiliza la criptografía AES, pero no habíamos explorado a fondo sus principales características tanto de Cifrado como de Descifrado, por lo cual lo veremos en este articulo muy corto y sencillo a la vez.
CIFRADO. . .
SubBytes: La operación SubBytes consiste, según (NIS01), en una sustitución no lineal de bytes. Dicha sustitución se realiza aplicando la formula:

Existe una tabla de sustitución fija, llamada S-Box que aplica estas operaciones y permite realizar la operación SubBytes mediante un simple vistazo.

Entonces si necesitamos realizar la operación SubBytes al número {19}, no tenemos más que mirar la tabla, fijandonos en la fila 1x y la columna x9, obteniendo así que la transformación de {19} es {D4}. 

ShiftRows: La operación ShiftRows consiste, según (NIS01), en una rotación cíclica hacía la izquierda de las filas de la notación matricial del Estado, de manera que la primera fila permanece igual, la segunda fila se rota hacía la izquierda una posición, la tercer fila se rota hacía la izquierda dos posiciones y, por último, la cuarta fila se rota hacía la izquierda tres posiciones. 

A continuación mostraremos con claridad la función de esta operación.
MixColumns: En la operación MixColumns, los cuatro bytes de cada columna de la notación matricial del Estado se combina utilizando una transformación lineal invertible, como lo establece (NIS01)

Cada columna se trata como un Polinomio y luego se multiplica el módulo x^4+1 con un polinomio fijo a(x)={03}x^3+{01}x^2+{01}x+{02}. Es más sencillo verlo como una multiplicación matricial, donde el Estado siempre se multiplica a la derecha de la misma matriz.
Multiplicando de esta manera, siempre teniendo en cuenta los aspectos matemáticos que hemos comentado, obtendremos el resultado de la operación MixColumns. Dentro de AES este es, sin duda, uno de los procesos más costosos en cuanto a cantidad de operaciones realizadas. 

AddRoundKey: La operación AddRoundKey consiste, según (NIS01), en la combinación de subclaves de ronda correspondiente con el Estado. Esta combinación se realiza a través de XOR.

En la imagen que corresponde al proceso de cifrado se observa que en la ronda inicial (Ronda 0) se realiza esta operación. En el caso que estamos estudiando, longitud de clave de 128 bits, la subclave de ronda 0 es la propia clave de cifrado. Es importante mencionar que, en el caso de tener claves de 192 y 256 bits, su correspondiente subclave de ronda 0 no es, lógicamente, la clave original, sino que sera un fragmento de 128 bits de está, en concreto sus 128 bits más significativos. 

DESCIFRADO. . .
InvSubBytes: Según (NIS01), la operación InvSubBytes es, al igual que la operación SubBytes, una sustitución no lineal de bytes. Dicha sustitución se realiza utilizando la formula:
De nuevo, existe una tabla de sustitución fija a la que hemos llamado InvS-box, la cual permite realizar la operación InvSubBytes de manera análoga a la operación SubBytes.
Esta tabla es inversa a la anterior que presentamos como S-box. Recordemos el ejercicio que se propuso anteriormente, en el que el byte {19}, a través de la operación SubBytes se transformo en el byte {D4}. Si ahora queremos aplicar la operación InvSubBytes al byte {D4}, miramos en la tabla la fila Dx y la columna x4, obteniendo así el byte {19}.

InvShiftRows: La operación InvShiftRows consiste, según (NIS01), es una rotación cíclica hacía la derecha de las filas de la notación matricial del Estado, de manera que la primera fila permanece igual, la segunda fila se rota hacía la derecha una posición, la tercera fila se rota hacía la derecha dos posiciones y, por último, la cuarta fila se rota hacía la derecha tres posiciones.

Consiste por tanto, en una rotación en dirección opuesta a la que se propuso en la operación ShiftRows. 
InvMixColumns: Según (NIS01), es la operación inversa a MixColumns. En ella cada columna se trata como un polinomio y luego se multiplica el módulo x^4 con un polinomio fijo a^-1(x)={0B}x^3+{0D}x^2+{09}x+{0E}. De nuevo es más intuitivo verlo como una multiplicación del Estado de la derecha de una matriz fija.
 AddRoundKey: en la operación AddRoundKey, se utilizan diferentes subclaves, todas derivadas de la clave original. 

La clave expandida, una sucesión de todas las subclaves, puede verse como una matriz de 4 filas por [4 × (Nr + 1)] columnas. Es decir, que la longitud de la clave expandida var´ıa dependiendo de Nr, que a su vez varía dependiendo de la longitud de clave. Por ejemplo, la clave expandida para una longitud de clave de 128 bits se representa como una matriz de 4 filas por (4 × 11), es decir, 44 columnas. Análogamente, para una longitud de clave de 192 bits (la cual se representa en la clave expandida como una matriz de 4 × 6), la clave expandida es una matriz de 4 filas por (4 × 13), o lo que es lo mismo, 52 columnas. Todas las subclaves utilizadas, para cualquier longitud de clave, son de 128 bits, o lo que es lo mismo, 4 columnas. Esa es la razón por la que a más longitud de clave, más número de rondas. Es importante señalar que el cálculo de subclaves es idéntico para longitudes de clave de 128 y 192 bits, mientras que para 256 bits varía en ciertos detalles. Un dato del AES, necesario para el cálculo de subclaves para claves de cualquier longitud, es la matriz Rcon. Dicha matriz, según [NIS01] es de la siguiente forma:
Las columnas de la matriz de clave ampliada se calculan en diez grupo (uno por cada columna de la matriz Rcon) de Nk columnas cada uno.




sábado, 26 de mayo de 2018

Criptografía AES

El AES (Advanced Encryption Standard), también llamado algoritmo Rijindae, fue diseñado en el 2000 por los expertos en criptografía Joan Daemen (STMicroelectronics) y Vicent Rijmen (Universidad Católica de Leuven, KUL, Bélgica) y fue seleccionado en una competencia convocada por el Instituto Nacional de Estándares y Tecnología (NIST) de EE.UU. El AES es técnicamente, un cifrado por bloques, y actualmente lo utilizan más de 1.700 productos validados por el NIST, además a sido aprobada por la Agencia Nacional de Seguridad Estadounidense (NSA) para proteger datos e información secreta del país "hoy día".

El AES es un cifrado en bloque de criptografía simétrica, es decir, trabaja cifrando y descifrando bloque a bloque, utilizando la misma clave privada para ambos procesos. Según (NIS01), en el estándar, el algoritmo Rijndael divide los datos de entrada en bloques de 4 palabras de 32 bits, es decir, 4 × 32 = 128 bits. Es necesario decir que el algoritmo Rijndael puede trabajar también con bloques mayores de 192 y 256 bits, pero no vienen contemplados en el estándar. Al bloque de datos se le conoce como Estado. En cuanto a la longitud de clave, el estándar trabaja con longitudes de Nk palabras de 32 bits, donde Nk = 4, 6 ´o 8. Es decir, que el algoritmo trabaja con longitudes de clave de 128 (4 × 32), 192 (6 × 32) ´o 256 (8 × 32) bits.

CIFRADO. . .
Para definir el proceso de cifrado del AES, vamos a asumir que la longitud de clave escogida es de 128 bits, ya que la longitud de clave no afecta a las diversas operaciones que realiza el cifrado. Con el objetivo de facilitar el entendimiento de las operaciones realizadas por el cifrador. Básicamente, el cifrador aplica al Estado cuatro operaciones durante un número determinado de rondas. Dicho número de rondas (Nr) viene definido por la longitud de clave utilizada, siendo Nr = 10 para una longitud de clave de 128 bits, Nr = 12 para 192 bits y Nr = 14 para 256 bits.

Las cuatro operaciones realizadas en el cifrado son denominadas:
  • SubBytes.
  • ShiftRows.
  • MixColumns.
  • AddRoundKey.

En primer lugar se realiza una ronda inicial en la que únicamente se aplica una operación AddRoundKey. Posteriormente, se realizan las nueve rondas principales, en las que se aplican las cuatro operaciones del cifrado en este orden: SubBytes, ShitfRows, Mix-Columns y AddRoundKey. Por último, se realiza la ronda final, en la que se aplican las operaciones SubBytes, ShiftRows y AddRoundKey, obteniendo así nuestro texto cifrado. Cabe destacar que en cada ronda se utilizan diferentes subclaves, derivadas de la clave original. De modo que en la ronda inicial se utiliza la clave original (si la clave es de 128 bits) y en la ronda final se utiliza la subclave número 10.

En otro artículo explicaremos como funciona cada una de las cuatro operaciones, destacando sus funciones matemáticas. 

DESCIFRADO. . .
Para definir el proceso de descifrado, vamos a suponer que la longitud de clave escogida es de 128 bits, lo cual implica 10 rondas. Hay que recordar que AES es un cifrador de clave simétrica, lo que quiere decir que la misma clave que se ha usado para cifrar los datos es la que se usará para descifrarlos. Básicamente, el proceso de descifrado consiste en aplicar, en orden inverso al del cifrado, las operaciones inversas a las descritas en el encriptador. De nuevo, tenemos cuatro operaciones diferentes:

  • InvSubBytes.
  • InvShiftRows.
  • InvMixColumns.
  • AddRoundKey.

La operación AddRoundKey es la misma que en la encriptación, es decir, una operación XOR entre el Estado y la subclave correspondiente. El proceso empieza en la última ronda, es decir, que la primera operación que aparece, AddRoundKey, utilizará la subclave número 10. Se puede deducir que si las longitudes de clave son 192 o 256 bits, la primera ronda que se usará en el descifrado será la 12 o la 14 respectivamente. Posteriormente se realiza la ronda 9, en la que se aplican al Estado las operaciones InvShiftRows, InvSubBytes y AddRoundKey. Por último, se realizan, hasta la ronda final (ronda 0), las diversas operaciones de descifrado en este orden: InvMixColumns, InvShiftRows, InvSubBytes y AddRoundKey. De nuevo, la subclave de ronda 0 es la clave original (si la longitud de clave es de 128 bits).

La criptografía AES comprende ser la más seguro a nivel Simétrico, obteniendo solo un reportaje de ataque efectivo, en el cual rompieron totalmente la seguridad obteniendo acceso a los datos. Se presento en el 2011 donde Andrey Bogdanov (investigador de la universidad de Leuven) trabajando temporalmente en el instituto de Microsoft, junto con Dmitry Khovratovich y Christian Rechberger fueron quienes lograron desarrollar una nueva estrategia de ataque al famoso algoritmo de encriptación con el que se puede obtener una clave secreta cuatro veces más fácilmente de lo que se estimaban los expertos. Desde su desarrollo, muchos especialistas han puesto a prueba la seguridad del algoritmo Rijndae sin éxito. Sólo en 2009 se identificaron algunas debilidades de este sistema de encriptación, pero eran más bien de interés matemático, sin que afectasen a la protección de datos. Pero la vulnerabilidad hallada tiene más importancia, aunque no tenga gran misterio en la seguridad ya que para romper el AES, incluso con la nueva estrategia de ataque desarrollada por Bogdanov y sus colegas, el número de intentos que hay que hacer para sacar una clave es un número casi ilegible: un ocho seguido de 37 ceros.  

Los investigadores emplearon un ataque Meet-in-the-Middle, una aproximación que ha sido principalmente empleada con algoritmos de hashing, combinándolo con un ataque "Biclique". Este método ha permitido a los investigadores calcular la clave de un par texto plano/texto cifrado más rápidamente que empleando un ataque de fuerza bruta en el espacio total de la llave. O sea, se ha reducido el número de claves que deben ser probadas. La fuerza bruta total con clave de 128 bits serían 2^128 posibilidades. Con este ataque serían necesarias "solo" 2^126.


En otras palabras se puede decir que el algoritmo está "roto" puesto que se ha reducido (aunque sea en 2 bits) el espacio de claves necesario para calcular la clave por fuerza bruta. Sin embargo, al decir que es ta roto no significa que no pueda ser usado con seguridad. Puesto que para un ataque contra una llave de 128 bits requiere diez millones de años empleando un parque de un billón de equipos probando cada uno de ellos un billón de claves. Al reducir en dos bits dicha clave, el tiempo se reduciría a 3 millones de años.

PCI/DSS

En nuestra actualidad las tarjetas como medio de pago se han vuelto muy populares y a su vez fundamentales, es por eso que dos grandes co...