La Comunidad DragonJAR  

Retroceder   La Comunidad DragonJAR > Seguridad > Criptografía

¿Qué es La Comunidad DragonJAR?

DragonJAR.org es una comunidad de investigadores, estudiantes, profesionales y entusiastas de la Seguridad Informática, En la cual se busca darle un enfoque eminentemente práctico a la teoría sin olvidar las bases esenciales de esta.

De esta manera se Tratará de ofrecer soluciones útiles a los usuarios, tanto novatos, estudiantes, como a los profesionales e investigadores, Teniendo presente que el mundo de la seguridad informática y la información es un medio que se auto inventa constantemente.

La Comunidad DragonJAR es un espacio abierto y libre para cualquier persona que desee compatir en un ambiente digital sus conocimientos o sus dudas. El registro es gratuito, toma poco tiempo y te permite disfrutar de todas las características del sitio.

Si es tu primera visita, quizás deberías visitar la Ayuda para aprender un poco sobre el uso de los foros, para empezar a ver mensajes, selecciona el foro que quieres visitar de la lista de abajo.

Respuesta
 
LinkBack Herramientas Desplegado
Antiguo 19-Jul-2009, 16:42   #1
Moderador Global
 
Fecha de Ingreso: 10-September-2008
Ubicación: Barcelona
Mensajes: 610
Gracias: 92
Agradecido 396 veces en 151 Mensajes
Seifreed llegará a ser famoso muy prontoSeifreed llegará a ser famoso muy pronto
Predeterminado Cripto Serie: Advanced Encryption Standard

La última vez escribí sobre el cifrado DES, así que hoy (sí, lo adivinaste) toca escribir sobre cómo funciona AES. AES se creó como resultado de un concurso abierto propuesto por el NIST. En 1997, el NIST anunció su deseo de tener un nuevo estándar de cifrado que sustituiría al Data Encryption Standard y que se llamaría AES: Advanced Encryption Standard.
Varios grupos de investigadores enviaron sus propuestas al concurso AES, pero el candidato ganador fue un cifrado llamado Rijndael. El cifrado fue creado por dos criptógrafos belgas,
Joan_Daemen Joan_Daemen
y
Vincent_Rijmen Vincent_Rijmen
, quienes lo enviaron al proceso de selección de AES.
Los otros finalistas fueron Twofish (Bruce Schneier y otros), Serpent (Ross Anderson y otros), MARS (un equipo que incluía a
Don_Coppersmith Don_Coppersmith
) y
RC6 RC6
(
Ron_Rivest Ron_Rivest
[la R en RSA :-p ] y otros).
Tras el concurso, el NIST publicó AES como un estándar FIPS, y desde entonces el cifrado AES ha sido ampliamente usado y analizado. En el resto de esta entrada veremos cómo funciona AES, tal como hicimos con DES en la entrada anterior.
NOTA: De la misma forma que en la entrada anterior, las imágenes están enlazadas a Wikipedia. Si intentas leer este hilo y ya no funcionan comentádmelo.
Estructura de AES

De nuevo, empezamos viendo la estructura general del cifrado AES. En el caso de AES, el tamaño de bloque es de 128 bits y la clave puede ser de 128, 192 o 256 bits. La especificación inicial de Rijndael también soportaba varios tamaños de bloque, pero en el propio estándar AES únicamente se define un tamaño de bloque de 128 bits.
Justo como en DES, el cifrado consiste de una operación básica llamada ronda que se repite un número de veces. En este caso, AES se basa en un principio de diseño conocido como Red de Sustitución Permutación (o Substitution-Permutation Networks), que significa que el cifrado está compuesto de una serie de sustituciones y permutaciones que se suceden unas a otras.
El número de rondas (R) en AES depende del tamaño de la clave: 10 rondas para 128, 12 rondas para 192 y 14 rondas para 256 bits. AES trabaja sobre una estructura conocida como el estado AES, que es simplemente una reordenación del bloque en una matriz de 4×4. Además, la mayoría de las operaciones de AES se pueden describir como operaciones en el cuerpo finito . Esto le proporciona a AES una descripción algebraica bastante sencilla.
De todas formas, estas operaciones también se pueden ver como operaciones en bytes, y nosotros las veremos básicamente como eso, pues no queremos meternos en las mates realmente (os lo prometí!). Pero si quieres meterte en serio con la criptografía, entonces seguramente necesitarás leer y aprender sobre cuerpos finitos. Estos se vuelven más importantes en la criptografía de clave pública, donde realmente usamos problemas matemáticos difíciles de resolver para proteger nuestros datos… pero ya llegaremos a eso..
Los bloques básicos de AES son:
  • SubBytes - Una sustitución no lineal, las S-boxes de AES
  • ShiftRows - Realiza un desplazamiento sobre las filas del estado (de ahí el nombre)
  • MixColumn - Mezcla columnas del estado de AES, haciendo cada celda una combinación de otras celdas.
  • AddRoundKey - Mezcla la clave con el estado AES.
Como puedes ver, igual que en DES tenemos S-boxes, transposiciones (ShiftRows), una operación de mezclado (MixColumn) y una operación para mezclar datos y clave. Un cifrado AES consiste de los siguientes pasos:
  1. Ronda Inicial:
    • AddRoundKey
  2. R-1 Rondas:
    • SubBytes
    • ShiftRows
    • MixColumns
    • AddRoundKey
  3. Ronda final (sin MixColumns):
    • SubBytes
    • ShiftRows
    • AddRoundKey
Así pues, tenemos un paso AddRoundKey previo, que mezcla el bloque de entrada con la clave de ronda inicial. Luego tenemos R-1 (9,11 o 13) rondas idénticas, y al final una ronda especial. Ahora veremos con más detalle cada uno de estos componentes de una ronda.
SubBytes
Cómo ya he dicho, simplemente es una tabla de sustitución. En este caso no tenemos 8 S-boxes distintas como en DES, sino una. Para aquellos que entendáis lo que significa, esta tabla de sustitución es realmente una operación en el cuerpo con polinomio irreductible , que encuentra la inversa (multiplicativa) del byte de entrada y luego aplica una transformación afín.
Para los que no sabéis nada sobre cuerpos finitos, veamos un ejemplo sencillo de ellos: el conjunto de enteros módulo 7 (es decir, los números del 0 al 6). Con este conjunto de números, se define una operación de suma (simplemente sumar módulo 7) y una operación de producto (multiplicar módulo 7). Entonces se tiene que:
Y luego, definimos la inversa multiplicativa de un miembro del cuerpo, , como otro miembro tal que . Así, del ejemplo anterior tenemos que 4 es la inversa de 2 módulo 7.
En el caso de AES, estas operaciones se realizan en , pero la idea es básicamente la misma: tenemos una operación de suma y otra de producto, y encontramos un número que después de multiplicarlo por el valor de entrada (en ese cuerpo finito!) de 1. Espero que más o menos se entienda
Ahora, después de tomar la inversa (lo cual se puede hacer de manera bastante rápida con la versión extendida del algoritmo de Euclides), AES aplica una transformación afín para evitar ciertos ataques. Una transformación afín es simplemente una construcción que toma x como entrada y produce una salida de la forma a·x+b.
No os preocupeis, realmente no necesitais conocer todos estos detalles, aunque tampoco está mal tener algún concepto sobre lo que AES realmente hace ;-).
ShiftRows
Esta operación simplemente desplaza las filas del estado AES. Se ve mejor con una imagen:
Operación ShiftRows de AES

Como se puede ver, la fila cero queda intacta, fila 1 se desplaza una vez hacia la izquierda (y por tanto su primer elemento va a parar a la última posición), la fila 2 dos veces y la fila 3 tres veces.
MixColumns
Otra operación matemática que se puede ver de varias formas. Primero, puede verse como una multiplicación por un polinomio módulo otro polinomio (wow!). Además, puede verse como una multiplicación por una matriz MDS… o simplemente puedes pensar que es una forma de mezclar varias columnas, lo cual es más simple .
Si realmente quieres saber qué pasa en esta operación, echale un ojo a la página de Wikipedia para la
Rijndael_mix_columns Rijndael_mix_columns
(English).
AddRoundKey
Este es el paso más sencillo, aunque importante… sin él no habría ninguna clave implicada! Para cada ronda, una clave de ronda del mismo tamaño que el bloque de datos (128 bits) es generada y transformada en la forma del estado. Luego se hace un XOR de cada byte del estado AES actual con el byte correspondiente de la clave.
Expansión de claves en AES
Hasta ahora hemos visto todos los componentes del cifrado AES, pero no sabemos cómo se generan las claves de ronda. Esto se hace mediante un algoritmo de expansión, que puede ejecutarse antes del cifrado o en paralelo con éste. Dispositivos que gocen de suficiente memoria normalmente pre-calcularán las claves de ronda, mientras que dispositivos pequeños como smart cards probablemente preferirán calcularlas on-the-fly debido a la falta de espacio de memoria.
Los componentes del algoritmo de expansión de claves son:
  • Rotate - Rota una palabra de 32 bits 8 bits hacia la izquierda
  • Rcon - Una constante dependiente de la ronda, que también puede definirse como una cierta potencia de 2 en el cuerpo finito de Rijndael.
  • SubBytes - La misma operación SubBytes del cifrado en sí.
Los pasos involucrados en la expansión de claves son bastante largos y prefiero no escribirlos aquí. Si realmente los necesitas, puedes encontrarlos en el estándar o en la página correspondiente de Wikipedia:
Rijndael_key_schedule Rijndael_key_schedule
(English de nuevo).
Descifrado en AES
En este caso, el descifrado no es tan sencillo como con DES. Descifrar implica aplicar las operaciones inversas a las aplicadas para cifrar, lo que significa que se necesitan definir las operaciones inversas para ShiftRows, SubBytes y MixColumns. AddRoundKey no requiere una inversa puesto que ya es su misma inversa.
Obviamente, estas operaciones también están definidas en el estándar, y puedes echarle un ojo si quieres conocer cómo se definen.
Fuente
__________________
Mi web:
http://www.seifreed.net
Asociación cultural y tecnológica:
http://www.badiatech.org
Cursos de informática:
aula.badiatech.org
Wikipedia asociación:
wiki.badiatech.org

Última edición por Seifreed; 19-Jul-2009 a las 16:46
Seifreed está desconectado   Responder Citando
Respuesta

Etiquetas
advanced, cripto, encryption, serie, standard

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado



La franja horaria es GMT -6. Ahora son las 15:08.