0% encontró este documento útil (0 votos)
5 vistas50 páginas

Algoritmo Rijndael: Estudio y Análisis

El documento detalla el algoritmo criptográfico Rijndael, que se convirtió en el estándar AES tras un concurso organizado por el NIST para reemplazar al obsoleto DES. Se discuten la historia, el proceso de selección y las características del algoritmo, así como su seguridad y eficiencia. Rijndael fue elegido por su combinación de seguridad, velocidad y flexibilidad, destacando la simplicidad de su diseño que permitió un análisis exhaustivo.

Cargado por

hmvmet
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas50 páginas

Algoritmo Rijndael: Estudio y Análisis

El documento detalla el algoritmo criptográfico Rijndael, que se convirtió en el estándar AES tras un concurso organizado por el NIST para reemplazar al obsoleto DES. Se discuten la historia, el proceso de selección y las características del algoritmo, así como su seguridad y eficiencia. Rijndael fue elegido por su combinación de seguridad, velocidad y flexibilidad, destacando la simplicidad de su diseño que permitió un análisis exhaustivo.

Cargado por

hmvmet
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CRIPTOSISTEMA RIJNDAEL.

A FONDO
Algoritmo Criptografico Rijndael

Autor: Alfonso Muoz Muoz.


Sept-2004. Madrid.

- 1-
Agradecimientos.

Gracias a criptored por la distribucin


de este trabajo.

Gracias a todo lector que se sienta


necesitado de leer esta informacin.

- 2-
Prefacio.

Todos los hombres hemos sido creados iguales,


entendemos que es una verdad evidente.

Nuestro Creador nos ha dotado de derechos inalienables,


entre los que se encuentra la vida, la libertad y la bsqueda
de la felicidad.

Pensamos que para asegurar estos derechos se han instituido


entre los hombres los gobiernos, cuyo poder debe estar
supeditado al consentimiento de los gobernados.
Y siempre y cuando la forma de gobierno perjudica estos
fines, el pueblo tiene la obligacin de incitar a la desobediencia
Civil, abolir el sistema e instituir uno nuevo.

Comprenden lo que digo?. Hasta que no tengan conciencia


de su fuerza, no se rebelarn y hasta despus de haberse revelado,
no sern conscientes. Comprenden el problema?

Comprendan el CMO y el PORQUE. Si concede esto,


lo dems vendr por sus pasos contados.

Alfonso Muoz
Madrid, Septiembre 2004

- 3-
INDICE
1. Porqu este trabajo?........................................................................... 5
2. Algoritmo AES (Advanced Encryption Standard). ............................ 6
2.1 Historia del algoritmo. .................................................................... 6
2.1.1 Concurso Pblico AES ............................................................. 6
[Link] Primera Ronda. .................................................................. 8
[Link] Seguda Ronda. .................................................................... 9
[Link] Tercera Ronda. ................................................................... 9
2.1.2 Comparacin de los Algoritmos Finalistas. ........................... 10
2.2 Algoritmo Rijndael........................................................................ 12
2.2.1 Conceptos Matemticos Preliminares.................................... 12
[Link] Cuerpos Finitos. GF(28).................................................... 12
[Link] Suma en GF(28)................................................................. 13
[Link] Multiplicacin en GF(28) .................................................. 14
[Link] Multiplicacin por x. ........................................................ 16
2.2.2 Especificacin del Algoritmo.................................................. 19
[Link] Estructura del algoritmo. ................................................. 19
[Link] Descripcin del proceso de cifrado. ................................. 22
[Link].1. Funcin ByteSub. ...................................................... 23
[Link].2 Funcin ShiftRow. ...................................................... 26
[Link].3 Funcin MixColumn. ................................................. 27
[Link].4. Funcin AddRoundKey. ........................................... 31
[Link].4.1 Funcin de seleccin de clave. ............................. 32
[Link].4.2 Funcin de expansin de clave. ........................... 32
2.2.3 Descripcin del proceso de Descifrado. ................................. 37
2.2.4 Motivos del diseo................................................................... 38
[Link] Estructura del Algoritmo. ................................................ 38
[Link] Funcin ByteSub............................................................... 40
[Link] Desplazamientos en la funcin ShitfRow......................... 41
[Link] Funcin MixColumn......................................................... 41
[Link] Nmero de vueltas. ........................................................... 41
[Link] Expansin de Clave. ......................................................... 43
2.2.5. Seguridad del Algoritmo........................................................ 45
[Link] Ataques Algebraicos. ........................................................ 47
3. Tendencias y Opinin del Autor. ....................................................... 49

- 4-
1. Porqu este trabajo?

El presente documento resulta de los estudios personales sobre


algoritmos criptogrficos, y en concreto del algoritmo criptogrfico
Rijndael, algoritmo que constituye el nuevo estndar de cifrado AES.

Puesto que AES es el sustituto del clsico algoritmo DES, y ya que la


mayora de las comunicaciones aplicarn este algoritmo criptogrfico veo
necesario su estudio, destacando sus multiples virtudes, y porque no los
estudios de criptoanlisis que se van conociendo.

La fuente fundamental utilizada para realizar este trabajo, por lo


menos en cuanto a la descripcin del algoritmo, ha sido The Design of
Rijndael. AES- The Advanced Encryption Standard de los creadores
de dicho algoritmo, Joan Daemen y Vicent Rijmen.

Espero que el documento, sirva de ayuda al lector, al igual que me lo


sirvi a mi al realizarlo. Para cualquier duda, o mejora:
[Link]@[Link]

Nuestra causa es un secreto dentro de otro secreto, el secreto de algo que


permanece velado, un secreto que slo otro secreto puede explicar, es un
secreto sobre un secreto que se satisface con otro secreto

- 5-
2. Algoritmo AES (Advanced Encryption Standard).

2.1 Historia del algoritmo.

El 23 de Noviembre de 1976 se establece el primer estndar de


cifrado para comunicaciones, el denominado algoritmo DES. Desde
entonces se han descrito multitud de ataques que permiten criptoanalizarlo
ms rpidamente que con un ataque por fuerza bruta. Pero sin duda la
publicacin de la asociacin EFF (Electronic Frontier Foundation) del
diseo de una mquina que permite atacarlo por fuerza bruta en un tiempo
nfimo (DES-CRACKER), puso el grito en el cielo de la comunidad
cientfica. El estndar haba consumido su tiempo de vida.

En el ao 1997, el Instituto Nacional de Estndares y Tecnologa


de EEUU (NIST), emprende un proceso abierto para la seleccin de un
nuevo algoritmo de cifrado, que sustituya al actual estndar de cifrado,
criticado por especialistas e instituciones en seguridad.

Este nuevo algoritmo sera til no slo para proteger la


informacin del Gobierno EEUU, sino que tambin sera utilizado
masivamente por el sector privado y adoptado como estndar por el resto
de pases, entre ellos los Europeos.

2.1.1 Concurso Pblico AES

Para evitar las quejas que se procedieron con la implantacin del


algoritmo DES debido a partes del algoritmo no documentadas que daban
la sensacin que el gobierno EEUU mantena puertas traseras, se decide
iniciar un proceso abierto para seleccionar el algoritmo que formara el
nuevo estndar de cifrado AES.

Se inicia entonces los primeros pasos para la consolidacin de un


Estndar de Cifrado Avanzado (AES) que permita proteger los datos
confidenciales del gobierno, as como la informacin sensible de los
ciudadanos.

- 6-
En Septiembre de 1997 se presentan los criterios de evaluacin y
requisitos mnimos que deban cumplir todos los algoritmos que optarn a
ganar el concurso, entre ellos destacaban:

? El algoritmo debe ser pblico.


? Debe ser un algoritmo de cifrado en bloque simtrico.
? La longitud de la clave debe ser como mnimo 128 bits.
? Su diseo debe permitir aumentar la longitud de la clave segn
las necesidades.
? Debe ser implementable tanto en HW como en SW.

Los algoritmos que cumplieran los requisitos anteriores seran


juzgados por los siguientes factores:

? Seguridad.
? Eficiencia computacional.
? Requisitos de memoria.
? Simplicidad de diseo.
? Flexibilidad.

Los algoritmos que se presentaron a este concurso adems tenan


que soportar obligatoriamente una longitud de bloque de 128 bits como
mnimo, y una longitud de clave de 128, 192 y 256 bits, al margen de
cualesquiera otras longitudes posibles.

NIST, propuso que cualquier organizacin, institucin o persona


pudiera participar de forma activa en este concurso, ya fuera presentando
algoritmos, o enviando informes o pruebas de cualquier tipo para poner en
evidencia las caractersticas de cualquier de los algoritmos candidatos.

La intencin de este estndar es que sea robusto, por lo menos,


hasta la mitad del presente siglo, o por lo menos hasta que se publiquen
estudios criptoanalticos o incluso posibles mquina futuras de
supercomputacin, como la soada computacin cuntica, que debilite
seriamente su seguridad.

Para llevar a cabo la eleccin del algoritmo se propuso crear dos


rondas de seleccin. En la primera ronda se seleccionara los 5 algoritmos
mejores, que cumplieron las especificaciones iniciales, y en la segunda
ronda se decidira el algoritmo algoritmos ganadores.

- 7-
Para realizar estas rondas de seleccin, se convocaron tres
Conferencias, en distintos lugares del mundo, en las que los algoritmos
candidatos, pudieron ser probados, comentados y revisados con lupa por
todo el mundo que lo dese.

Durante todo el desarrollo del proceso AES, todos los algoritmos


y criterios de diseo estuvieron disponibles de forma pblica y abierta,
por lo que el escrutinio al que han sido sometidos todos los finalistas ha
sido enorme, acorde con la importancia del nuevo AES. Todos los
participantes contribuyeron al proceso, analizando las posibles
vulnerabilidades de sus competidores.

[Link] Primera Ronda.

En Agosto de 1998 comenz la primera ronda aceptndose quince


candidatos durante la Primera Conferencia de candidatos a AES. Los
quince algoritmos candidatos fueron:

? CAST-256 [Entust Technologies, Inc. [Link]]


? CRYPTION. [Future Systems, Inc. Chae Hoon Lim]
? DEAL. [[Link], R. Outerbridge]
? DFC. [CNRS-Ecole Normale Superiere. [Link]]
? E2. [NTT Nipn Telegraph and Telephone Corporation.
[Link]].
? FROG. [TecApro International S.A. (D. Georgoudis, Leroux,
Chaves]
? HPC. [R. Schoeppel]
? LOKI97. [[Link], [Link], [Link]]
? MAGENTA [Deutshe Telekom A.G. K, Huber]
? MARS. [IBM. Nevenki Zunic]
? RC6. [RSA Laboratories. Rivest, [Link], Sidney, Yin]
? RIJNDAEL [Joan Daemen, Vicent Rijmen]
? SAFER+. [Cylink Corporation. [Link]]
? SERPENT. [[Link], [Link], [Link]]
? TWOFISH [[Link],[Link],[Link],
[Link],[Link],[Link] ]

- 8-
[Link] Seguda Ronda.

En Marzo de 1999, se celebrara la segunda conferencia de


Candidatos a AES, en la que se discuti los resultados de las numerosas
pruebas y criptoanlisis realizados por la comunidad criptogrfica mundial
sobre los quince candidatos iniciales. Basndose en estos comentarios y
anlisis, NIST seleccion cinco candidatos finalistas. Cabe decir como
ancdota que uno de los quince algoritmos seleccionados, concretamente
Magenta, fue criptoanalizado en el mismo encuentro en el que se
present. Los cinco algoritmos afortunados fueron:

? MARS. [IBM. Nevenki Zunic]


? RC6. [RSA Laboratories. Rivest, [Link], Sidney, Yin]
? RIJNDAEL [Joan Daemen, Vicent Rijmen]
? SERPENT. [[Link], [Link], [Link]]
? TWOFISH [[Link], [Link], [Link], [Link],
[Link], [Link] ]

[Link] Tercera Ronda.

En abril del 2000 se celebr la Tercera Conferencia de


Candidatos AES en Nueva York, durante la cual los asistentes
presentaron nuevos documentos de evaluacin y criptoanlisis de los
ltimos cinco candidatos. Varios de los algoritmos recibieron un varapalo
criptogrfico. RC6 result el ms afectado: dos grupos se las ingeniaron
para romper 15 de 20 ciclos del algoritmo ms rpidamente que con fuerza
bruta. RIJNDAEL resisti algo mejor: 7 ciclos rotos de 10/12/14 ciclos. Se
presentaron varios ataques contra MARS; el ms interesante rompi 11 de
16 ciclos del ncleo criptogrfico. SERPENT y TWOFISH se comportaron
mejor: el ataque ms fuerte contra SERPENT rompi 9 de 32 ciclos, y no
se presentaron nuevos ataques contra TWOFISH.

Por fin, el 2 de octubre de 2000, el NIST anunci el algoritmo


ganador. Las votaciones del concurso establecieron el siguiente ranking:

RIJNDAEL ? 86 votos
SERPENT ? 59 votos
TWOFISH ? 31 votos
RC6 ? 23 votos
MARS ? 13 votos

El algoritmo Rijndael gan el concurso, por permitir la mejor


combinacin de seguridad-velocidad-eficiencia, sencillez y flexibilidad.

- 9-
Destacando su sencillez, que haba permitido un anlisis muy intenso de su
estructura.

Los creadores de este ingenio son dos ingenieros electrnicos


belgas, un equipo bastante modesto, teniendo en cuenta que en el proceso
de seleccin se enfrentaban a algoritmos creados por equipos de
multinacionales tan fuertes y poderosas como IBM, Deuche Telekom, as
como equipos de criptlogos de reputada fama mundial como, por ejemplo,
Bruce Schneier (Twofish), autor de varios libros de criptografa, o Ronald
Rivest (RC6), coautor del algoritmo de clave asimtrica RSA.

El algoritmo fue bautizado como Rijndael en un juego de fusin


entre los apellidos de sus dos creadores: Vincent Rijmen, nacido en 1970,
matemtico de la facultad de Ciencias de la Universidad Catlica de
Lovaina, y su ex-colega en dicha universidad Joan Daemen, nacido en
1965, ingeniero electrnico y especialista en sistemas de seguridad
electrnica bancaria.

Por tanto, en Octubre de 2000, queda establecido el algoritmo


AES (algoritmo Rijndael) como el estndar actual de comunicaciones de
EEUU y por derivacin de todo el mundo. Actualizndose paulatinamente
todas las aplicaciones y servicios del estndar previo DES al nuevo sistema
de cifrado.

2.1.2 Comparacin de los Algoritmos Finalistas.

La seguridad de los algoritmos, fue el aspecto ms importante que


se tuvo en cuenta en la segunda ronda del proceso de seleccin del NIST,
para probar la seguridad de cada algoritmo se lanzaron varios ataques a
cada algoritmo, estos ataques han sido llevados a cabo, tanto por los
autores de algoritmos rivales, como por cualquier otra persona que enviara
la documentaicn pertinente al NIST.

En cualquier de los casos, segn los ataques publicados, los


resultados obtenidos en cada algoritmo fueron:

? MARS: parece tener un margen de seguridad elevado. MARS


recibi crticas basadas en su complejidad, la cual puede haber
obstaculizado su anlisis de seguridad durante el proceso de
desarrollo del AES.
? RC6: parece tener un margen de seguridad adecuado. Sin
embargo, RC6 recibi alguna crtica debido a su bajo margen de
seguridad respecto al que ofrecieron otros finalistas. Por otro

- 10 -
lado, RC6 ha sido elogiado por su simplicidad, la cual ha
facilitado su anlisis de seguridad durante el tiempo especificado
en el proceso de desarrikki del AES.

? RIJNDAEL: parece tener un margen de seguridad adecuado.


El margen de seguridad es un poco dificil de medir, debido a que
el nmero de rondas cambia con el tamao de la clave. Rijndael
recibi crticas sobre su margen de seguridad, ya que es de los
ms bajos, entre los finalistas, y que su estructura matemtica
puede conducir a ataques. Sin embargo, es bastante simple, esto
ha facilitado su anlisis de seguridad durante el tiempo
especificado en el proceso de desarrollo del AES.

? SERPENT: parece tener un margen de seguridad alto. Serpent


tambin tiene una estructura simple, que ha facilitado su anlisis
de seguridad durante el tiempo especificado de desarrollo del
AES.

? TWOFISH: parece tener un margen de seguridad alto. El


concepto de margen de seguridad tiene menos significado para
este algoritmo que para los dems finalistas. La dependencia de
las S-cajas de Twofish en solo K/2 bits de entropa en el caso de
clave K-bits ha producido algunas especulaciones acerca de que
Twofish puede ser sensible a un ataque divide y vencers, aunque
tal ataque no ha sido comprobado. Twofish ha recibido alguna
crtica por su complejidad, haciendo dificil su anlisis durante el
tiempo establecido en el proceso de desarrollo del AES.

Otro tema muy importante fue el estudio de la velocidad con la


que se ejecutaba cada algoritmo, por ejemplo, dependiendo del tamao de
la clave. La realizacin de SW de MARS, RC6 y SERPENT no varan
significativamente para los tres tamaos de clave de AES. Para Rijndael y
Twofish, sin embargo, la configuracin de la clave es lgicamente, ms
lento para claves de 192 bits que para claves de 128 bits, y ms lentro
todava para claves de 256 bits, aunque en estos casos ofrecen una
compensacin en el incremento de la seguridad.

Rijndael se present como el algoritmo ms rpido en multitud de


plataformas: 32 bits, procesadores de 8bits, etc.

- 11 -
2.2 Algoritmo Rijndael.

Inicialmetne se estudia su estructura y motivos de diseo para


permitir cifrar y descifrar informacin. A continuacin, analizaremos la
seguridad que ofrece ste algoritmo y finalmetne los ataques posibles
documentados que puede sufrir.

2.2.1 Conceptos Matemticos Preliminares.

El algoritmo Rijndael opera a nivel de bytes, interpretando estos


como elementos de un cuerpo de Galois GF(28), y a nivel de registros de 32
bits, considerndolos como polinomios de grado menor que 4 con
coeficientes que son a su vez polinomios en GF(28). En este apartado se
van a definir las operaciones matemticas bsicas que necesita el algoritmo
Rijndael, as como algunos conceptos referentes al tratamiento de
polinomios

[Link] Cuerpos Finitos. GF(28)

En este algoritmo todos los bytes se interpretan como elementos


de un cuerpo finito. Concretamente, se representan mediante Campos de
Galois que se representan como GF(k) (Galois Field).

Los campos de Galois son muy interesantes en criptografa,


gracias a que existe un inverso aditivo y multiplicativo que permite cifrar y
descifrar en el mismo cuerpo Zk, eliminando as los problemas de redondeo
o truncamiento de valores si tales operaciones de cifrado y descifrado se
hubiesen realizado en aritmtica real.

En nuestro caso, interesa utilizar una aritmtica en mdulo p


sobre polinomios de grado m, siendo p un nmero primo. Este campo
de Galois queda representado como: GF(pm), en donde los elementos de
GF(pm) se representan como polinomios con coeficientes en Zp de grado
menor que m, es decir:

GF(pm)={ b0 + b1x + b2x2 + b m-1xm-1 }; b0, b1, b2 bm-1 pertenece a Zp

Cada elemento de GF(pm) es un resto mdulo p(x), donde p(x) es


un polinomio irreducible de grado m, esto es, que no puede ser
factorizado en polinomios de grado menor que m.

En el caso del algoritmo Rijndael, ser interesante los campos del


tipo GF(2m) puesto que los coeficientes en este caso sern los restos del

- 12 -
mdulo 2, es decir, 0 y 1, lo que permite una representacin binaria. Por lo
tanto, cada elemento del campo se representa con m bits y el nmero de
elementos ser 2m.

Por ejemplo, para el campo GF(23) sus elementos son: 0, 1, x,


x+1, x2 +1, x2 +x, x2 +x +1 que son precisamente todos los restos de un
polinomio de grado m-1.

En el caso del algoritmo Rijndael, se definen operaciones a nivel


de byte, encontrndonos en el campo GF(28).

Un byte B, se compone de los bits b7 b6 b5 b4 b3 b2 b1 b0, si lo


consideramos como un polinomio con coeficientes en {0,1} tenemos el
polinomio:

b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0

Por ejemplo, un byte con el valor hexadecimal 57, en binario


01010111, corresponde con el polinomio:

x6 + x4 + x2 + x+ 1

[Link] Suma en GF(28)

En GF(pm) hay que considerar que las operaciones matemticas


sobre los coeficientes se hacen en mdulo p con lo cual en GF(2m) se
reducen los resultados de la suma de los coeficientes mdulo 2. Este
procedimiento tanto para la suma como para la resta se realiza simplemente
con una operacin Or-Exclusiva, ya que si los coeficientes son iguales
darn como suma o resta un 0 y coeficientes distintos darn un 1.

Por tanto, para sumar dos polinomios, basta con aplicar la


operacin Or-Exclusiva, a cada elemento de los polinomios, dos a dos. La
funcin Or-Exclusiva de dos bits, produce los siguientes resultados:

1 XOR 1=0
0 XOR 1=1
1 XOR 0=1
1 XOR 1=0

- 13 -
Un ejemplo de suma de dos polinomios de tamao byte expresados
dentro de GF(28) es:

A = 5716 = 0101 01112 = x6 + x4 + x2 + x + 1


B = 8316 = 1000 00112= x7 + x + 1

Sumando:

A+B = (x6 + x4 + x2 + x + 1) + (x7 + x + 1) mod 2


A+B = (x7 + x6 + x4 + x2 + 2x + 2) mod 2 = x7 + x6 + x4 + x2 =
= 1101 0100 =D416

Y lo mismo se obtiene utilizando la operacin Or-Exclusiva:

0101 0111 XOR1000 0011 = 1101 0100 =D416


{57} XOR {83} = {D4}

[Link] Multiplicacin en GF(28)

En la multiplicacin de polinomios en GF(2m), es posible que el


resultado contenga elementos que estn fuera del cuerpo del polinomio
(potencias iguales o mayores que m) por lo que deberemos reducir los
exponentes mediante un polinomio p(x) necesariamente irreducible y grado
m.

Para GF(28) la multiplicacin de polinomios se realiza modulo


con un polinomio irreducible de grado 8. Este polinomio irreducible se
representa por m(x) (es irreducible porque sus nicos divisores son el 1 y el
mismo polinomio). El polinomio irreducible utilizado en el algoritmo
Rijndael es:

m(x) = x8+x4+x3+x+1

Ejemplo de una multiplicacin de polinomios: .


57 83= C1, esto es as
porque:

A = 5716 = 0101 01112 = x6 + x4 + x2 + x + 1


B = 8316 = 1000 00112 = x7 + x + 1

.
A B= (x6 + x4 + x2 + x + 1)(x7 + x + 1)= x13 + x11 +x9 +x8 +2x7 +x6 +x5
+x4 +x3 +2x2 +2x +1 mod 2= x13 + x11 +x9 +x8 +x6 +x5 +x4 +x3 +1

- 14 -
x13 + x11 +x9 +x8 +x6 +x5 +x4 +x3 +1 mod x8 + x4 + x3 + x + 1 = x7 + x6 + 1 =
1100 0001 = C116

Otra forma de calcularlo sera razonando qu resultado de la


multiplicacin hay que reducirlo por m(x) para cada valor de x que est
fuera del cuerpo de 8 bits:

Sea m(x) = x8 + x4 + x3 + x + 1 ? x8 = x4 + x3 + x + 1

.
A B mod 2 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

x13 = x5? x8 = x5? (x4 + x3 + x + 1) = x9 + x8 + x6 + x5 =x*x8+x8+ x6+x5 = x


? (x4 + x3 + x + 1) + (x4 + x3 + x + 1) + x6 + x5 = (x5 + x4 + x2 + x) + (x4 + x3
+ x + 1) + x6 + x5
x13 = x6 + x3 + x2 + 1

x11 = x3? x8 = x3? (x4 + x3 + x + 1)= x7 + x6 + x4 + x3


x9 = x? x8 = x? (x4 + x3 + x + 1)= x5 + x4 + x2 + x

Por tanto, el resultado de multiplicar los polinomios, se obtiene


sustituyendo:

.
A B mod 2 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

.
A B mod 2 = (x6 + x3 + x2 + 1) + (x7 + x6 + x4 + x3) + (x5 + x4 + x2 + x)
+ (x4 + x3 + x + 1) + x6 + x5 + x4 + x3 + 1 mod 2

.
A B mod 2 = x7 + x6 + 1 = 1100 0001 = C116
Como era lgico esperar, el polinomio resultante tendr grado menor
que 8. La multiplicacin de polinomios es asociativa y su elemento neutro
es el 01. Para cualquier polinomio binario b(x) de grado menor que 8, se
puede aplicar el algoritmo extendido de Euclides para calcular un
polinomio inverso de b(x). En este caso se habla de inversa
multiplicativa. a(x) es un polinomio inverso de b(x) si:

.
a(x) b(x) mod m(x) =1 b-1(x)=a(x) mod m(x)

es decir, a(x) es la inversa multiplicativa de b(x). El polinomio extendido


de Euclides se puede ver como: b(x)a(x) + m(x)c(x)=1
- 15 -
[Link] Multiplicacin por x.

Se va a analizar un caso interesante, que es la multiplicacin de


un polinomio por x. Si multiplicamos un polinomio b(x) por x tenemos:

b(x)=b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0

.
b(x) x = b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x

Una vez tenemos este resultado se debe realizar la reduccin


modulo m(x). Si b7=0 el resultado es el mismo polinomio. Si b7=1, m(x)
debe anular el valor de x8.

En general, para utilizar este tipo de multiplicacin los autores


definen una funcin denominada xtime que simplifica la multiplicacin
de un polinomio por potencias de x, este hecho es gracias a que la funcin
xtime se puede ejecutar de forma reiterativa. La funcin xtime consiste
en aplicar un desplazamiento a la izquierda al valor que representa el
polinomio y una operacin or-exclusiva con el valor 0x11B
(0x11B=000100011011= m(x)=x8+x4+x3+x+1 ) cuando el resultado de la
multiplicacin debe ser reducido mdulo m(x). Esta funcin se puede
programar fcilmente de la siguiente manera:

int xtime (int valor){


valor=valor<<1;
if(valor&0x100)
valor^=0x11B;
return valor;
}

Ejecutar una vez la funcin xtime equivale a multiplicar el

polinomio representado por su valor por x, es decir el polinomio . ?02.

La importancia de esta funcin recae en su uso reiterado para


calcular multiplicaciones de polinomios. Por ejemplo la multiplicacin de
los siguientes polinomios:

. 6
57 ?13= (x .
+x4+x2+x+1)? (x4+x+1)

- 16 -
se puede ver como la multiplicacin de 57 por diversas potencias de x,
aplicando la propiedad asociativa. Segn sto, el polinomio 13 se puede
descomponer en potencias de x de la siguiente forma:

13 = 01XOR 02XOR 10 ? (x4+x+1) = 1 XOR x XOR x4

. .
Por lo tanto: 57 13=57 (01 XOR 02 XOR 10)=

. .
=57 XOR (57 02) XOR (57 10)

Resolviendo:

. .
57 02= (x6+x4+x2+x+1) x = xtime(57) = AE

. .
57 04= (x6+x4+x2+x+1) x2 = xtime(AE) = 47

. .
57 08= (x6+x4+x2+x+1)? x3 = xtime(47) = 8E

. .
57 10= (x6+x4+x2+x+1)? x4 = xtime(8E) = 07

El clculo de las cuatro llamadas a la funcin xtime se observa en la


siguiente tabla:

Potencia Valor Valor Valor XOR con Resultado


de x Hexadecimal Inicial Desplazado a 0x11B
pasado la izquieda
a xtime 1posicin
x 02=00000010b 57 AE AE
x2 04=00000100b AE 5C 5Cxor0x11B=47 47
x3 08=00001000b 47 8E 8E
x4 10=00001010b 8E 1C 1Cxor0x11B=07 07

Operaciones mediante la funcin xtime.

- 17 -
Finalmente se calcula:

. . .
57 13=57 ?(01xor 02 xor 10 ) = 57xor 57 02) xor(57 .
10) = 57xorAExor07=FE

Este procedimiento es interesante ya que las multiplicaciones que


se realizan en el algoritmo se pueden realizar utilizando esta funcin. Su
uso se centra en la funcin MixColumn del algoritmo con polinomios
representados por 01,02,03, 09, 0b, 0d y 0e.

Consideraciones:

? Multiplicar un polinomio por 01 es igual al mismo polinomio.

? Multiplicar un polinomio por 02 consiste en aplicar la funcin


xtime al polinomio.

? Multiplicar un polinomio A por 03 es igual a:

.
(A 02) xor A = xtime(A) xor A.

? Mutiplicar un polinomio A por 09 es igual a:

.
(A 08) xor A? ?xtime(xtime(xtime (A))) xor A

? Mutiplicar un polinomio A por 0b es igual a:

.
(A 08) xor A? xtime(xtime(xtime (A))) xor A

? Mutiplicar un polinomio A por 0e es igual a:

. . .
(A 02) xor (A 04) xor (A 08) =
xtime(A) xor?xtime(xtime(A)) xor xtime(xtime(xtime (A)))

? Mutiplicar un polinomio A por 0d es igual a:

. .
(A 04) xor? (A 08) xor A?=
=xtime(xtime(A)) xor?xtime(xtime(xtime (A))) xor A

- 18 -
2.2.2 Especificacin del Algoritmo.

El algoritmo Rijndael es un sistema simtrico de cifrado por


bloques, por tanto utiliza la misma clave para el proceso de cifrado como
para el proceso de descifrado. Su diseo permite la utilizacin de claves de
sistema con longitud variable siempre que sea mltiplo de 4 bytes. La
longitud de las claves utilizadas por defecto son 128 (AES-128), 192 (AES-
192) y 256 (AES-256) bits. De la misma manera el algoritmo permite la
utilizacin de bloques de informacin con un tamao variable siempre que
sea mltiplo de 4 bytes, siendo el tamao mnimo recomendado de 128
bits, y el tamao mnimo de 16 bytes.

Este algoritmo opera a nivel de byte, interpretando stos como


elementos de un cuerpo de Galois GF(28), y a nivel de registros de 32 bits,
considerndolos como polinomios de grado menor que 4 con coeficientes
que son a su vez polinomios en GF(28).

[Link] Estructura del algoritmo.

La estructura del algoritmo Rijndael (1) est formado por un


conjunto de rondas, entendiendo por rondas un conjunto de
reiteraciones de 4 funciones matemticas diferentes e invertibles.

Por tanto, el algoritmo se basa en aplicar un nmero de rondas


determinado a una informacin en claro para producir una informacin
cifrada. La informacin generada por cada funcin es un resultado
intermedio, que se conoce como Estado, o si se prefiere Estado Intermedio.

El algoritmo representa el Estado como un matriz rectangular


de bytes, que posee 4 filas y Nb columnas. Siendo el nmero de columnas
Nb en funcin del tamao del bloque:

Nb = tamao del bloque utilizado en bits / 32

(1)
Nota: El algoritmo Rijndael no posee una estructura tipo Feistel, a diferencia de muchos algoritmos
simtricos, como por ejemplo el antiguo estndar DES. Este hecho le permite producir una mayor difusin de
la informacin cifrada con un menor nmero de vueltas o aplicacin de funciones matemticas.

- 19 -
Por ejemplo la representacin de una matriz de Estado para un
tamao de bloque de 160 bits (Nb = 5), sera:

a 0,0 a 0,1 a 0,2 a 0,3 a 0,4


a 1,0 a 1,1 a 1,2 a 1,3 a 1,4
a 2,0 a 2,1 a 2,2 a 2,3 a 2,4
a 3,0 a 3,1 a 3,2 a 3,3 a 3,4

La clave del sistema se representa con una estructura anloga a la


del Estado, es decir, se representa mediante una matriz rectangular de
bytes de 4 filas y Nk columnas. Siendo el nmero de columnas Nk en
funcin del tamao de la clave:

Nk = tamao de la clave en bits / 32

Por ejemplo la representacin de una clave de 128 bits (Nk = 4),


en forma de matriz rectangular sera:

k 0,0 k 0,1 k 0,2 k 0,3


k 1,0 k1,1 k 1,2 k 1,3
k 2,0 k 2,1 k 2,2 k 2,3
k 3,0 k 3,1 k 3,2 k 3,3

Una vez establecido estos parmetros iniciales el bloque que se


pretende cifrar o descifrar se traslada byte a byte sobre la matriz de Estado,
siguiendo la secuencia a0,0, a1,0, a 2,0, a 3,0, a 0,1, ..., a 3,4, y anlogamente los
bytes de la clave se copian en la matriz de la clave siguiendo el mismo
criterio, k 0,0, k 1,0, k 2,0, k 3,0, k 0,1 ... k 3,3.

A partir de este momento la matriz de Estado sufre 4


transformaciones por ronda (vuelta), utilizndose en el proceso subclaves
para cada ronda que se generan de la clave de sistema elegida. Las 4
transformaciones que aplica el algoritmo a la matriz de Estado por ronda
son:

- 20 -
? Funcin ByteSub: Sustitucin con propiedades ptimas de no
linealidad.
? Funcin ShiftRow y MixColumn: Permiten un alto nivel de
difusin de la informacin a lo largo de las diferentes rondas.
? Funcin AddRoundKey: Permite aplicar a la matriz de Estado
una operacin or exclusiva con la subclave correspondiente a
cada ronda.

El nmero de reiteraciones o vueltas de las 4 transformaciones


sobre la informacin, o mejor dicho sobre la matriz de Estado Intermedio
depende de la versin del algoritmo que se utilice.

Los autores definen que para tamaos de bloques y claves entre


128 y 256 bits (con incrementos de 32 bits) el nmero de vueltas Nr es
determinado por la siguiente expresin:

Nr= max (Nk , Nb) + 6

Por ejemplo, para un algoritmo Rijndael de tamao de clave y de


bloque 128 bits, el nmero de vueltas es 10. Se observa claramente que el
nmero de vueltas o reiteraciones del algoritmo dependen del tamao de
bloque y clave elegidos.

Nmero de rondas para Rijndael en funcin de tamaos de clave y bloque:


Clave / Bloque N b = 4 (128 bits) N b = 6 (192 bits) N b = 8 (256 bits)
Nk = 4 (128 bits) 10 12 14
Nk = 6 (192 bits) 12 12 14
Nk = 8 (256 bits) 14 14 14

Teniendo en cuenta la estructura general del algoritmo se va a


profundizar, a continuacin, en el proceso de cifrado y descifrado.

- 21 -
[Link] Descripcin del proceso de cifrado.

El proceso de cifrado consiste en la aplicacin de 4 funciones


matemticas invertibles sobre la informacin que se desea cifrar. Estas
transformaciones se realizan de forma reiterativa para cada ronda o vuelta
defina.

Grficamente la descripcin del proceso de cifrado con el


algoritmo Rijndael se puede ver como:

En esencia la informacin a cifrar se va mapeando en la matriz de


Estado. Esta matriz de Estado se introduce al cifrador, y sufre una primera
transformacin, en la ronda inicial, que consiste en una operacin or-
exclusiva (AddRoundKey) entre una Subclave generada y la matriz de
Estado. A continuacin, a la matriz de Estado resultante se le aplican 4
transformaciones invertibles, repitindose este proceso Nr-1 veces, en lo
que se conoce como Ronda Estndar. Finalmente se le aplica una ltima
ronda o vuelta a la matriz de Estado resultante de las Nr-1 rondas
anteriores, aplicando las funciones ByteSub, ShiftRow y AddRoundKey en
este orden. El resultado de la ronda final produce el bloque cifrado
deseado.
- 22 -
En esta figura se puede observar la evolucin del cifrador, y como
entra en juego la clave del usuario generando subclaves que se utilizan para
cada ronda.

A continuacin vamos a profundizar en cada una de las funciones


que configuran el algoritmo cifrador Rijndael para comprender mejor su
funcionamiento.

[Link].1. Funcin ByteSub.

La transformacin ByteSub consiste en una sustitucin no lineal


que se aplica a cada byte de la matriz de Estado (estado intermedio 1) de
forma independiente, generando un nuevo byte.

Esta transformacin consiste en la sustitucin de cada byte por el


resultado de aplicarle la tabla de sustitucin S-Box. Esta tabla logicamente
es invertible y se construye mediante dos transformaciones:

? 1 Transformacin. Cada byte es considerado como un elemento en


GF(28) que genera el polinomio irreducible m(x)= x8 + x4 + x3 + x + 1,
siendo sustituido por su inversa multiplicativa. El valor cero queda
inalterado, ya que no tiene inversa.

? 2 Transformacin. Al resultado de la 1 transformacin se le aplica la


siguiente transformacin afn en GF(2), siendo x0, x1, x2, x3, x4, x5, x6 y x7
los bits del byte resultante de la 1 transformacin, e y0, y1, y2, y3, y4, y5, y6
e y7 los bits del resultado final de la transformacin ByteSub.

Transformacin afn en GF(2)

Por ejemplo, si el byte al cual se le aplica la funcin ByteSub es


A=11001011, deberamos calcular su inversa multiplicativa. Cada byte
en Rijndael se representa como un polinomio a(x), calcular la inversa

- 23 -
multiplicativa consiste en buscar un polinomio b(x) (que es nico) que
multiplicado por a(x) modulo m(x) es igual a 1, es decir:

.
a(x) b(x) mod x8 + x4 + x3 + x + 1 = 1

El polinomio buscado en este caso es b(x)=x2 que tiene una


representacin binaria de B=00000100. Se dice entonces que B es la
inversa en GF(28) de A. Una vez que tenemos el resultado de la primera
transformacin, debemos aplicarle la transformacin afn definida:

Ejemplo de un valor concreto.

Obtenemos el valor final de Y=00011111. Luego el byte


A=11001011 se convierte en Y al aplicar la funcin ByteSub.

Utilizando estas dos transformaciones para todos los valores


posibles de entrada (256 valores ya que se trabaja con un byte) se calcula
una tabla de sustitucin denominada S-Box til para el proceso de cifrado.

Gracias a esta tabla aplicar la funcin byteSub resulta trivial,


consiste en dividir el byte de la matriz de Estado en dos partes de 4 bits.
Los 4 bits ms significativos, denominados por x (toma valores de 0 a 15)
actan de fila en la tabla y los 4 bits menos significativos de columna,
denominados por y (toma valores de 0 a 15). El valor para esa fila y
columna en la tabla es resultado de aplicar S-BOX a un byte.

Siguiendo con el ejemplo anterior, si tenemos el byte


A=11001011 y le aplicamos la funcin ByteSub el resultado sera (
x=1100 [fila c] y=1011 [columna b] ) Y=0x1F que en binario equivale a
Y=00011111, valor que es idntico al calculado previamente.

- 24 -
Tabla de Sustitucin S-BOX para un byte genrico xy. (hexadecimal)

Para el proceso de descifrado es necesario calcular la funcin


inversa de ByteSub. Esta funcin inversa consiste en calcular una tabla
inversa a la utilizada en el proceso de cifrado. Tabla inversa S-BOX:

- 25 -
[Link].2 Funcin ShiftRow.

Esta transformacin consiste en rotar a la izquierda las filas que


conforman la matriz de Estado actual (Estado Intermedio 2), es decir, rotar
los bytes de las filas de la matriz de estado resultante de la transformacin
anterior (funcin ByteSub) a la izquierda.

Cada fila f i se desplaza un nmero de posiciones Ci diferente.


Existen 4 Ci , uno para cada una de las 4 filas que siempre tiene la matriz de
estado. C0 (para la fila0), C1 (para la fila1), C2 (fila2) y C3 (fila3).

La fila0 siempre permanece inalterada (siempre C0=0). Los


valores de C1,C2 y C3 que indican el nmero de rotaciones de las filas f0,f1 y
f2 dependen del tamao de bloque, y en consecuencia de Nb (tamao
bloque/32).

Tamao de bloque C1 C2 C3
128 bits (N b = 4) 1 2 3
192 bits (N b = 6) 1 2 3
256 bits (N b = 8) 1 3 4

[Valores de Ci segn el tamao de bloque].

Por ejemplo, si el tamao de bloque fuera de 128 bits (Nb = 4) la


fila 0 no sera rotada, la fila 1 se rotara 1 byte (C1=1), la fila 2 sera rotada
2 bytes (C2=2) y la fila 3 sera rotada 3 bytes (C3=3).

[Funcion ShitfRow para bloque de 128 bits].

La funcin inversa de ShiftRow que permite invertir esta


transformacin consiste simplemente en rotar a la derecha los bytes de las
filas de la matriz de Estado actual. Para ello se desplaza el mismo nmero
de posiciones Ci que se desplazaron para cifrar.
- 26 -
La estructura del algoritmo fue diseada para permitir cualquier
tamao de bloque que sea mltiplo de 4 bytes, con un nmero mnimo de
16 bytes. Las funciones AddRoundKey, ByteSub y MixColumn son
independientes del tamao de bloque. Sin embargo la transformacin
ShiftRow si depende de la longitud del bloque, siendo necesarios definir
valores C1,C2 y C3 diferentes para distintos bloques. Los autores teniendo,
en cuenta sto, han facilitado valores adicionales de C1,C2 y C3 para otras
longitudes comunes de bloques:

Tamao de bloque C1 C2 C3
160 bits (N b = 5) 1 2 3
224 bits (N b = 7) 1 2 4

[Valores extras de Ci segn el tamao de bloque].

Para cualquier otra longitud de bloque no establecida en el


estndar es conveniente contactar con los diseadores del algoritmo.

[Link].3 Funcin MixColumn.

La transformacin MixColumn acta sobre los bytes de una


misma columna de la matriz de Estado que tiene a la entrada, es decir, el
Estado intermedio 3. En esencia esta funcin permite una mezcla de los
bytes de las columnas.

Esta transformacin considera las columnas de bytes como


polinomios cuyos coeficientes pertenecen a GF(28), es decir, son tambin
polinomios.

La funcin MixColumn consiste en multiplicar las columnas de


bytes mdulo x4+1 por el polinomio c(x).

Matemticamente c(x) viene representado por:

c(x) = 03x3 + 01x2 + 01x + 02

Este polinomio c(x) es coprimo con x4+1, lo que permite que sea
invertible. En forma algebraica esta funcin se puede representa como:

s(x) = c(x) s(x)

- 27 -
Donde s(x) representa la matriz de Estado resultante de esta
transformacin (Estado Intermedio 4) y s(x) la matriz de Estado entrante
(Estado intermedio 3).

Esta frmula queda mejor expresada de forma matricial, donde


c representa el ndice de la columna que se procesa:

Desarrollando la matriz, observamos claramente como cada byte


nuevo de la matriz de Estado es una combinacin de varios bytes de las
distintas filas que forman una columna especfica:

Por ejemplo dado el siguiente Estado Intermedio3:

D4 E0 B8 1e
Bf B4 41 27
5d 52 11 98
30 Ae F1 E5

Calcular el byte de la fila0 y columa0 de la matriz de Estado


resultante se calculara de la siguiente forma:

. .
s0,0 = ( {02} s0,0 ) xor ( {03} s1,0 ) xor s2,0 xor s3,0

- 28 -
Se cogen los bytes de la matriz que hacen falta:

s0,0 = . .
( {02} {d4} ) xor ( {03} {bf} ) xor {5d} xor {30}

Y se calcula el resultado:

.
{02} {d4} = {b8} ? .
x (x7+x6+x4+x2) mod x4+1 =x8+x7+x5+x3
mod x4+1 = x7+x5+x4+x3=10111000={b8}

.
{03} {bf}={d1} ? .
(x+1) (x7+x5+x4+x3+x2+x+1) = x8+ x6 +x5
+ x4 +x3 +x2 +x +x7+x5+x4+x3 +x2 +x+1 =x8+x7+x6+1 mod x4+1= x7 +x6
+x4 +1= 11010001={d1}

s0,0 = b8 xor d1 xor 5d xor 30 = 04

Luego el byte D4 de la fila y columna0 de la matriz de Estado


Intermedia 3 se sustituira por el byte 04 en la matriz de Estado Intermedia
4. Para el resto de bytes se seguira un desarrollo como el planteado.

Para descifrar o invertir esta transformacin, se deber realizar el


mismo procedimiento descrito pero con el polinomio d(x), que es el inverso
de c(x).

La inversa de MezclarColumnas se obtiene multiplicando cada


columna de la matriz de estado por el polinomio d(x):

d(x) = 0Bx3 + 0Dx2 + 09x +0E

Este polinomio, permite realizar la inversa del polinomio c(x),


cumpliendo que:

c(x) d(x) = 01

- 29 -
La transformacin inversa se podra mostrar de forma matricial
de la siguiente forma:

s(x) = d(x) s(x)

Los resultados de esta multiplicacin, dan como resultado la


siguiente sustitucin de los bytes:

El lector, puede comprobar como aplicando estas formulas al


ejemplo anterior se recuperan los bytes originales de la matriz de Estado
previa.

- 30 -
[Link].4. Funcin AddRoundKey.

Esta transformacin consisten en aplicar una operacin OR-


Exclusiva entre la matriz de Estado que proviene de la transformacin
anterior (Funcin MixColumn) y una subclave que se genera a partir de la
clave del sistema para esa vuelta (ronda).

El bloque resultante de esta transformacin, ser la nueva matriz


de Estado para la siguiente ronda. Siendo el bloque de salida, si la vuelta es
la ltima.

Para aplicar esta transformacin se debera coger una subclave


para la vuelta actual, y formar una matriz con el mismo nmero de filas y
columnas que la matriz de Estado con la que se est operando
(implcitamente se puede observar como las subclaves dependen del
tamao del bloque empleado) para poder aplicar la operacin or-exclusiva.

Estado Intermedio 4 Round Key Estado Intermedio1 o


Bloque de Salida.

S0,0 S0,1 S0,2 S0,3 K0 K1 K2 K3 S0,0 ? K0 S0,1 ? K1 S0,2 ? K2 S0,3 ? K3


S1,0 S1,1 S1,2 S1,3 K4 K5 K6 K7 S1,0 ? K4 S1,1 ? K5 S1,2 ? K6 S1,3 ? K7
S2,0 S2,1 S2,2 S2,3 K8 K9 K10 K11 S2,0 ? K8 S2,1 ? K9 S2,2? K10 S2,3? K11
S3,0 S3,1 S3,2 S3,3 K12 K13 K14 K15 S3,0? K12 S3,1? K13 S3,2? K14 S3,3? K15

Ejemplo de transformacin AddRoundKey para Nb=4

La esencia de esta funcin recae en las subclaves. El algoritmo


Rijndael basndose en el principio de la criptografa moderna, mediante el
cual se establece que la seguridad de un algoritmo slo debe depender de la
clave utilizada, utiliza diferentes subclaves Ki tanto en el cifrado como en
el descifrado para que el resultado del algoritmo dependa completamente
de una informacin externa al sistema: la clave de usuario.

El nmero total de bits necesarios para generar todas las


subclaves, depende del nmero de rondas que se aplique al algoritmo y del
tamao del bloque empleado. El nmero total de bits de subclaves
necesarios se puede calcular como:

N total bits Subclaves = 32 * Nb * ( Nr +1)

- 31 -
Por lo tanto, se puede observar que el nmero total de bits de
subclaves es igual al tamao del bloque empleado por el nmero de vueltas
del algoritmo (las Nr vueltas del algoritmo ms la ronda inicial)

Bloque/ Clave Nk = 4 (128 bits) Nk = 6 (192 bits) Nk = 8 (256 bits)


N b = 4 (128 bits) 1408 bits 1664 bits 1920 bits
(N r = 10) (N r = 12) (N r = 14)
N b = 6 (192 bits) 2304 bits 2496 bits 2880 bits
(N r = 12) (N r = 12) (N r = 14)
N b = 8 (256 bits) 3840 bits 3328 bits 3840 bits
(N r = 14) (N r = 14) (N r = 14)

N de bits de sublaves para tamaos estndar de clave y bloque.

Se ha observado que el funcionamiento de esta transformacin es


sencillo, lo verdaderamente interesante es conocer el procedimiento para
generar los bytes que forman las subclaves para cada vuelta (RoundKeys),
bytes que se derivan de la clave principal K. Para ello el sistema utiliza dos
funciones auxiliares: una funcin de seleccin y una funcin de expansin.

[Link].4.1 Funcin de seleccin de clave.

La funcin de seleccin simplemente toma consecutivamente de


la secuencia obtenida por la funcin de expansin de clave bytes que va
asignado a cada subclave Ki. para formar bloques del mismo tamao que la
matriz de estado. Es decir, coge Nb*4 bytes para cada vuelta.

La generacin de la claves (expansin de clave) para el proceso


de descifrado se hace forma idntica al proceso de cifrado. La diferencia
reside en la funcin de seleccin de clave. En el proceso de descifrado se
cogen bytes de la lista de claves desde los valores finales hasta llegar a los
iniciales, que es la propia clave de usuario. Es decir, la ltima subclave que
se utiliz para cifrar, ser la primera que se utilizar para descifrar.

[Link].4.2 Funcin de expansin de clave.

La funcin de expansin de clave permite generar bytes tiles


como subclaves a partir de la clave de sistema K. Este funcin de
expansin se puede describir como un array lineal, denominado W, de
palabras de 4 bytes y con una longitud de Nb*(Nr+1).

- 32 -
Las primeras Nk palabras de este array contienen la clave de
cifrado, ya que la clave del usuario se mapea tal cual al array W, mientras
que el resto de palabras se van generando a partir de estas primeras Nk
palabras.

Ejemplo de subclaves y clave de expansin para Nb=6 y Nk=4

Se observa cmo la funcin de expansin de clave depende del


valor de Nk, ante este hecho los autores definieron dos versiones para esta
funcin, una para Nk menor o igual que 6?y otra para Nk mayor 6, por
motivos de seguridad. Estas versiones se describen de la siguiente forma
utilizando el lenguaje de programacin C.

Para Nk menor o igual que 6 tenemos:

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 = ByteSub (RotByte(temp)) ^ Rcon[i/Nk];
w[i] = W[i-Nk]^temp;
}
}

- 33 -
Para Nk>6

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 = ByteSub(RotByte(temp))^Rcon [i/Nk];
else if ( i%Nk == 4)
temp = ByteSub(temp);
w[i] = w[i-Nk]^temp;
}
}

En el cdigo anterior, se observa como se mapea directamente la


clave del usuario al array W, se mapean Nk palabras. El resto de
funcionamiento permite generar bytes para subclaves, en este proceso
entran en juego la funcin ByteSub que devuelve el resultado de aplicar la
S-BOX de Rijndael a cada uno de los bytes de los 32 bits de la palabra que
se le pasa como parmetro. La funcin Rot que rota una posicin a la
izquierda los bytes de la palabra, de tal forma que si se le pasa como
parmetros la palabra de 4 bytes (a,b,c,d) devuelve (b,c,d,a).Y la funcin
Rcon que genera una constante teniendo en cuenta que:

Rcon(j)=(R(j),0,0,0)

Cada R(j) es el elemento GF(28) correspondiente al valor x j-1

Desde un punto de vista ms esquemtico la funcin de expansin se puede


ver como:

Para Nk menor o igual que 6:

Para todo valor de i (1) que no sea mltiplo de Nk, las palabras de
subclaves se calculan como:

W(i) = W(i Nk) xor W( i 1 )

(1)
Nota: La variable i denota la posicin dentro del array W(i) que contiene los bytes de subclaves del
sistema.

- 34 -
Para todo valor de i que sea multiplo de Nk se calculan como:

W(i) = W(i Nk) xor [ByteSub( RotByte[W(i-1)] ) xor Rcon(i/Nk) ]

Si por ejemplo se utiliza una clave de 128 bits (Nk = 4) y un


bloque de 128 bits (Nb=4) la longitud del array W sera 44 (4*[10+1]). En
las cuatro primeras posiciones del array (0 a la 3) se copia la clave de
usuario, el resto de posiciones, de la posicin 4 a la 43, se rellenara con
valores calculados. En este caso la variable i tomara los valores de 4 a
43. Para las posiciones del array W(i) con valor de i 4, 8, 12, 16, 20, 24,
28, 32, 36, 40 ( i mltiplo de Nk ), la palabra de 4 bytes se calculara
cogiendo una palabra que se encuentra 4 posiciones antes que ella y
realizando una operacin or-exclusiva con una transformacin de la palabra
que se encuentra una posicin antes. Para el resto de valores de i la palabra
correspondiente a W(i) se calcula realizando una operacin or-exclusiva
entre la palabra que se encuentra 4 posiciones antes en el array y la palabra
que se encuentra una posicin antes que la posicin en la que nos
encontramos.

Este ejemplo permite observar el procedimiento que sigue el


algoritmo para generar nuevos bytes de subclaves, apoyndose en palabras
ya existentes en el array W, ya sea palabras de la clave de usuario
directamente o palabras generadas de esta.

- 35 -
Para Nk>6

El funcionamiento para Nk>6 es igual que para Nk menor o igual


que 6 salvo cuando el valor de la variable i satisface que i mod Nk = 4,
en este caso las palabras de subclaves se calculan como:

W(i) = W(i Nk) xor ByteSub (W[i-1])

Una vez conocido el funcionamiento de la funcin de expansin


de clave, vese, para finalizar con la explicacinde la funcin un ejemplo
real de generacin de bytes de subclaves para un algoritmo Rijndael con
clave de 128 bits

[Ejemplo]:

Se selecciona clave de usuario.

Clave= 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c (Nk=4)

Se mapea a las 4 primeras posiciones del array la clave del usuario,

W[0]= 2b 7e 15 16
W[1]= 28 ae d2 a6
W[2]= ab f7 15 88
W[3]= 09 cf 4f 3c

A partir de este momento se empieza a generar bytes de subclaves.

Calcular W[4]:

i=4 (i mltiplo de Nk)


temp= W[3] = 09 cf 4f 3c
Se aplica funcin de rotacin Rot ? temp = cf 4c 3c 09
Se aplica funcin ByteSub ? ByteSub (temp) = 8a 84 eb 01
Rcon[4/4]=Rcon[1]= [ x0,{00},{00},{00}] =[{01},{00},{00},{00}]
temp= Rcon[1] xor temp =8a 84 eb 01 xor 01 00 00 00 = 8b 84 eb 01
W[4] = W[0] xor temp = 2b 7e 15 16 xor 8b 84 eb 01 = a0 fa fe 17

Siguiendo todos los criterios descritos en esta funcin se podran


generar todos los bytes de subclaves necesarios para la versin del
algoritmo con la que se trabajar.

- 36 -
2.2.3 Descripcin del proceso de Descifrado.

La descripcin del proceso de descifrado del algoritmo Rijndael


es sencilla. Consiste en sustituir las transformaciones utilizadas en el
cifrado por sus inversas e invertir el orden de aplicacin de dichas
transformaciones o funciones matemticas.

Teniendo en cuenta sto la estructura del algoritmo de descifrado sera:

Vuelta Final:

InvAddRoundKey(Estado,RoundKey);
InvShiftRow(Estado);
InvByteSub(Estado);

Vuelta Estndar:

InvAddRoundKey(Estado,RoundKey);
InvMixColumn(Estado);
InvShiftRow(Estado);
InvByteSub(Estado);

Salida:

InvAddRoundKey(Estado,RoundKey);

De esta forma tan sencilla se construye el algoritmo para descifrar


una informacin cifrada con el algoritmo Rijndael.

- 37 -
2.2.4 Motivos del diseo.

En este apartado se van a discutir los parmetros de diseo del


algoritmo Rijndael, analizando sus motivos de eleccin y la influencia que
tienen sobre la seguridad del algoritmo. La base de los siguientes
razonamientos se encuentran en un estudio que sus autores publicaron al
respecto. Teniendo en cuenta esto el algoritmo Rijndael se estructura en
torno a 3 axiomas:

o Resistencia contra todos los ataques conocidos.


o Rapidez y compatibilidad en un gran abanio de plataformas
o Sencillez en el diseo.

Teniendo en cuenta estos principios se va a profundizar en los


motivos de diseo de las funciones matemticas que utiliza el algoritmo, el
nmero de vueltas y su estructura algebraica. Este conocimiento ofrecer al
lector una idea ms amplia de la robustez del algoritmo Rijndael.

[Link] Estructura del Algoritmo.

La mayora de los cifradores simtricos tienen una estructura tipo


(1)
Feistel . En esta estructura la vuelta o ronda de transformacin consiste
en separar un bloque de un mensaje en dos partes, una parte izquierda y
otra derecha, e ir conmutando las partes de izquierda a derecha aplicndole
una funcin unidireccional. Este procedimiento reiterado un nmero de
veces constituye la estructura de algoritmo, muestra de esta estructura se
encuentra en el antiguo estndar de cifrado DES.

(1)
Nota: Estructura desarrollada por Horst Feistel. Investigador del laboratorio Thomas J. Watson de la
IBM. En la dcada de los 70 desarrollo el algoritmo Lucifer, a partir del cual se baso el antiguo estndar
de cifrado DES.

- 38 -
Un sistema Feistel procesa la mitad de los bits del bloque en una
vuelta quedando el resto inalterados. Rijndael no tiene una estructura tipo
Feistel (trata todos los bits por vuelta), en vez de ello se decidi definir la
vuelta de transformacin como tres funciones invertibles llamadas capas.
La eleccin de las diferentes capas est basada en gran parte en la obra
Cipher and hash function design strategies based on linear and
differential cryptanalysis, que permiti a los autores pensar en una
estructura de algoritmo que llevara implcita la resistencia contra el
criptoanlisis lineal y diferencial. Teniendo en cuenta esto, cada capa
cobrara su propia utilidad (estas capas est constituidas por las 4
transformaciones matemticas del algoritmo):

? Una capa de mezcla lineal, que garantiza una alta difusin de la


informacin a travs de la aplicacin de varias vueltas.

? Una capa no lineal, que permita propiedades aptas de no


linealidad.

? Una capa de adicin de clave, que consiste en una simple


operacin or exclusiva entre la subclave de cada vuelta y el
Estado intermedio.

Se puede observar como el algoritmo utiliza aparte de las rondas


estndar una ronda final y otra inicial. La ronda inicial es til para aplicar
una subclave antes de la primera vuelta. El motivo de aplicar esta clave
consiste en que no se pueden atacar directamente a las capas sin
conocimiento de la clave. Tal es esta propiedad que se utiliza en otros
algoritmos como el algoritmo IDEA, SAFER y Blowfish. Por otro lado
para que el algoritmo cifrador y el descifrador tengan una estructura lo ms
similar posible, la capa de mezcla lineal de la ltima vuelta es diferente de
la capa de mezcla lineal de las otras vueltas (1), este es el motivo por el cual
la ronda final difiere de la ronda estndar.

(1)
Nota: Se ha demostrado que modificar la capa de mezcla lineal de la ultima vuelta no
reduce la seguridad del cifrador.

- 39 -
[Link] Funcin ByteSub.

La funcin ByteSub aporta una capa no lineal diseada


especficamente para ofrecer resistencia frente a ataques como el
criptoanlisis diferencial, el criptoanlisis lineal, ataques de interpolacin,
etc. Los criterios para disearla fueron:

? Que sea inversible


? Minimizar la relacin lineal entre bits de entrada y bits de salida.
? Complejidad mediante expresiones algebraicas en GF(28)
? Sencillez de diseo.

Existen diversas formas para construir la S-Box, los autores en un


primer paso definieron la tabla de sustitucin mediante el calculo de
inversas multiplicativas en GF(28) la cual permite propiedades de no-
linealidad. Sin embargo, la simplificidad algebraica de este diseo podra
permitir manipulaciones algebraicas que permitieran ataques. Para evitarlo
se aadi una transformacin afn invertible adicional. Esta transformacin
afin est formada por una matriz que tiene una representacin sencilla pero
esconde una compleja expresin algebraica, ms un vector (01100011)
elegido de tal forma que para ningn valor la tabla S-Box ofrezca las
siguientes relaciones:

S-Box (a) = a

S-Box (a) = a

Los autores descatacan que existen otras tablas S-Box que


satisfacen los criterios de diseo, es ms, en el caso de sospecha de una
puerta trasera en el cifrador, la tabla S-BOX actual podra ser remplazada
por otra. La estructura del cifrador y el nmero de vueltas estn definidos
incluso para usar tablas S-Box que no optimizen las propiedades contra
ataques como el criptoanlisis diferencial y lineal, sin perder la seguridad
del algoritmo.

- 40 -
[Link] Desplazamientos en la funcin ShitfRow.

El nmero a desplazar en la transformacin ShiftRow fueron


elegidos para ofrecer resistencia contra ataques conocidos como el
denominado truncated differentials y resistencia contra el ataque
Square. Se demostr que para ciertos desplazamientos los ataques por
truncanted differentials y Square encuentran ms resistencia por parte
del algoritmo. Teniendo en cuenta esto, se elegieron los mejores
desplazamientos contra estos ataques.

[Link] Funcin MixColumn.

La funcin MixColumn ha sido seleccionada como


transformacin lineal de 4 en 4 bytes, teniendo en cuenta los siguientes
criterios:

? Que sea inversible


? Linealidad en GF(2)
? Propiedades de alta difusin.
? Velocidad en procesadores de 8 bits.
? Simetra.
? Sencillez de descripcin.

La eleccin de los coeficientes y los polinomios permiten una


gran difusin entre los bytes resultantes de la transformacin.

[Link] Nmero de vueltas.

La estructura del algoritmo Rijndael ya es conocida, consistiendo


su funcionamiento en la reiteracin de las funciones matemticas que se
definen en esta estructura. Son estas reiteraciones las que se conocen como
vueltas o rondas.

El nmero de vueltas fue determinado por los autores, buscando


el mnimo numero de vueltas necesarias para ofrecer un margen de
seguridad considerable frente a los ataques conocidos.

A) Por ejemplo, para un tamao de bloque y de clave de 128 bits


se utilizan 10 vueltas, sto es as porque no se han encontrado atajos en
ataques para versiones reducidas con ms de 6 vueltas. A estas 6, los
autores, le suman otras 4 vueltas como margen de seguridad. Esto es un
mecanismo de precaucin, porque:

- 41 -
Dos vueltas de Rijndael producen una difusin completa, en el
sentido de que, cada bit del estado depende de todos los bits de las 2
vueltas anteriores, es decir, un cambio en un bit del estado es similar a
cambiar la mitad de los bits del estado despus de dos vueltas. La alta
difusin de una vuelta de Rijndael es gracias a su estructura uniforme que
opera con todos los bits del estado. Para cifradores tipo Feistel (como por
ejemplo. DES), un vuelta slo opera con la mitad de los bits de estado y
una difusin completa se obtiene en el mejor de los casos despus de 3
vueltas y en la prctica 4 o ms.

En general, ataques como el criptoanlisis lineal y diferencial


aprovechan el rastro dejado a travs de n vueltas para atacar n+1 o
n+2 vueltas. Este es adems el caso del ataque Square que usa 4
vueltas de la propagacin del algoritmo para atacar 6 vueltas. En este
sentido, se suman 4 vueltas para actualmente doblar el nmero de vueltas
mediante las cuales se pueden encontrar pista, rastros que faciliten este tipo
de ataques.

B) Para versiones de Rijndael con la clave ms grande, el nmero


de vueltas es incrementado por uno por cada 32 bits adicionales de la clave
de cifrado. Esto es as por los siguientes motivos:

El principal objetivo es evitar atajos ms efectivos que un ataque


por fuerza bruta. Como con el tamao de la clave la cantidad de trabajo
para una bsqueda exhaustiva de la clave crece, los atajos son menos
eficientes para claves ms grandes. Conocer parte de la clave o ataque con
claves relacionadas explotan el conocimiento de bits de la clave de cifrado
o la habilidad para aplicar diferentes claves de cifrado. Si la clave de
cifrado crece, las posibilidad disponibles para el criptoanalista
disminuyen.

C) Para versiones con un tamao de bloque mayor de 128 bits, el


numero de vueltas es incrementado por uno por cada 32 bits adicionales en
el tamao de bloque, por las siguientes razones:

Para un bloque mayor de 128 bits, el tamao del bloque


disminuye la difusin completa del estado en una vuelta. El mayor tamao
del bloque produce rangos de posibles patrones que pueden ser aplicados a
la entrada/salida de una secuencia de una vuelta para incrementarla. Esta
flexibilidad aadida podra facilitar ataques.

- 42 -
Los autores, reiteran de forma persistente que estos mrgenes son
conservadores. Siempre ampliables para incremento de la seguridad.

[Link] Expansin de Clave.

La funcin Expansin de clave permite derivar de la clave de


cifrado subclaves para cada vuelta. Su utilidad reside en permitir la
resistencia contra los siguientes tipos de ataques:

? Ataques en los cuales parte de la clave de cifrado es conocida


por los criptoanalistas.

? Ataques donde la clave de cifrado es conocida o puede ser


elegida, por ejemplo, si el cifrador es usado como la funcin de
comprensin de una funcin hash.

? Ataques por clave relacionada. Se deben evitar que distintas


claves de cifrado puedan producir un gran conjunto de subclaves
comunes para cada vuelta.

Adems de esto, la funcin de Expansin de clave juega un papel


vital en la eliminacin de la simetra de la estructura del algoritmo, es
decir:

? Simetra en una ronda: La ronda de transformacin trata todos


los bytes de un Estado en general de la misma forma. Esta
aparente simetra es alterada gracias a las subclaves que se
obtienen para cada vuelta.

? Simetra entre rondas: La ronda de transformacin es idntica


para todas las vueltas o rondas. Esta igualdad es alterada
obteniendo subclaves que dependen de cada ronda.

La eliminacin de la simetra y la propia estructura del algoritmo


permite que resulte prcticamente imposible la existencia de claves dbiles
o semidbiles como en otros algoritmos criptogrficos como DES, IDEA,
etc. Por tanto, el algoritmo no tiene restriccin en utilizar cualquier clave
dentro del espacio de claves permitido.

Teniendo en cuenta todo esto, se puede resumir que la funcin de


Expansin de clave ha sido diseada teniendo en cuenta los siguientes
criterios:

- 43 -
? Usar una transformacin invertible. Por ejemplo, el
conocimiento de cualquiera Nk palabras consecutivas de la clave
expandida permitir regener todo el array de bytes de subclaves.

? Rpidez en un gran abanico de procesadores.

? Proporcionar constantes dependientes de cada ronda que elimine


la simetra.

? El conocimiento de parte de la clave de cifrado o bits de una


subclave de una ronda no permitir calcular muchos bits de otras
subclaves.

? Proporcionar no-linealidad que prohiba determinar diferencias


en la subclave de cada ronda a partir de diferencias de la clave de
cifrado.

? Sencillez de diseo.

- 44 -
2.2.5. Seguridad del Algoritmo.

El algoritmo Rijndael es el sistema de criptografa simtrica ms


robusto que se conoce en la actualidad. Segn los estudios publicados, no
existen ningn mecanismo comprobado para invertir el algoritmo estndar
AES ms eficiente que una bsqueda exhaustiva de claves (ataque por
fuerza bruta). Por tanto, la fortaleza del sistema depender slo de la
longitud de la clave. Un atacante que desee realizar un ataque por fuerza
bruta deber tener en cuenta las siguientes consideraciones:

Texto en claro desconocido y clave desconocida.

Si el atacante slo dispone de un bloque cifrado, debera cifrar


con todas las claves posibles todos los bloques en claro posibles, para ir
comparando el resultando con el bloque cifrado. Para valores estndar del
algoritmo, como un clave de 256 bits y un tamao de bloque de 256 bits, se
demuestra fcilmente que el algoritmo no se puede invertir. Si se considera
que el tamao del bloque es de v bits y el tamao de la clave es n bits.
El atacante debera probar para cada clave 2v bloques posibles, y repetir
este proceso para todas las claves (2n). Actualmente resulta
computacionalmente imposible realizar estos clculos para valores
estndars del algoritmo. De todas formas aunque fuera factible el clculo
encontraramos un nmero muy elevado de parejas clave-texto en claro
diferentes que producen el mismo bloque cifrado, luego el atacante no
tendra capacidad para identificar cual de todas esas parejas es la vlida.

Esta es la situacin normal, que es cuando el atacante slo dispone


de texto cifrado. Asegurndose que el algoritmo resulta imposible de
invertir.

Texto en claro conocido y texto cifrado conocido

El atacante posee el texto en claro y el texto cifrado. Ante esta


situacin puede hacer lo que se conoce como un ataque de fuerza bruta
puro, es decir cifrar el texto en claro con todas las claves posibles hasta
producir un resultado que coincida con el texto cifrado. En esta situacin
un atacante necesitara aplicar el algoritmo Rijndael al texto en claro para
estar seguro de que ha obtenido la clave el siguiente nmero de veces:

- Para una clave de 128 bits, se necesitara aplicar 2127 veces el


algoritmo Rijndael sobre el texto en claro y compararlo con el texto
cifrado.

- 45 -
- Para una clave de 192 bits, el ataque necesita aplicar 2191 veces
el algoritmo.

- Para una clave de 256 bits, el ataque necesita aplicar 2255 veces
el algoritmo.

Este tipo de clculo resulta hoy por hoy impracticable, siempre a


la espera de futuros ordenadores cunticos. Estos clculos no son factibles
debido al enorme nmero de combinaciones a calcular. Para hacerse una
idea de las dimensiones de este nmero de clculos, romper un algoritmo
Rijndael de 128 bits es [Link].[Link] veces menos
probable que una persona gane la lotera y muera fulminado por un rayo el
mismo da.

Ninguno de los siguientes ataques conocidos contra cifradores de


bloques se pueden aplicar a Rijndael de una forma ms efectiva que una
bsqueda exhaustiva de clave:

? Linear Cryptanalysis.
? Differencial cryptanalysis.
? Truncated differentials.
? Interpolation attacks.
? Square attack.

El propio diseo del algoritmo anula los ataques sofisticados que


se conocen contra los cifradores de bloques, sin embargo debido a su
estructura algebraica puede inducir a una nueva serie de ataques, que en
ciertas situaciones pudieran necesitar menos clculos que una bsqueda
exhaustiva de clave.

- 46 -
[Link] Ataques Algebraicos.

La estructura algebraica de Rijndael le conduce a la aplicacin de


nuevos tipos de ataques.

[ATAQUE 1]. Nicolas Courtois y Jose Pieprzyk (1) han mostrado que el
algoritmo puede describirse como un sistema de ecuaciones cuadrticas
multivariables, y acontinuacin aplicar tcnicas para tratar los trminos de
estos polinomios como variables individuales. Este hecho permitira
definir un sistema de ecuaciones lineales con un gran nmero de variables
cuadrticas que hay que resolver. Su teora indica que podra romperse un
Rijndael de 128 bits recuperando la clave secreta. Para ello necesitara un
slo bloque de texto en claro, y una representacin del algoritmo con un
sistema de 8000 ecuaciones cuadrticas con 1600 incognitas binarias.
Teniendo en mente esto, se desarroll el algoritmo XL que permitira
resolver tales sistemas en un tiempo no-exponencial, lo que supona una
revolucin, ya que la seguridad de cifradores como Rijndael no crecera
exponencialmente con el nmero de vueltas ante este tipo de ataques. En la
prctica el algoritmo XL se demostr rotundamente ineficiente para
romper Rijndael, pero sin embargo present muchas propiedades
interesantes.

Teniendo en cuenta estas propiedades han surgido un nuevo tipo de


ataques, los denominados ataques XSL. Ataques genricos que pueden ser
aplicados (al menos en teora) a cualquier bloque cifrado.

[ATAQUE 2]. Por otro lado, Fuller y Millan publicaban un documento


demostrando que la S-BOX de 8x8 bit de AES era en realidad una caja-S
de 8x1 bit, demostrando que slo hay una parte de no-linealidad en el
cifrado; todo lo dems es lineal. Otro documento provino de Filiol. Afirm
haber detectado algunas desviaciones en las funciones booleanas de AES,
que quizs podran utilizarse para romper AES. Pero el documento da tan
pocos detalles que esa afirmacin an no procede.

[ATAQUE 3]. En Crypto 2002, Murply y Robshaw publicaron un


resultado sorprendente, que permita expresar todo AES en un solo campo.
Presentaron un cifrado llamado BES que trata cada byte de AES como un
vector de 8 bytes. BES opera sobre bloques de 128 bytes; para un
subconjunto especial de textos en claro y claves, BES es isomrfico
respecto a AES. Esta representacin tiene varias propiedades interesantes,
propocionando al mtodo XSL una representacin mucho ms concisa, que
resulta en ecuaciones ms sencillas que son ms fciles de resolver.

- 47 -
Aplicando estos principios el ataque de Courtois y Pieprzyk
adquiere una complejidad de 2100 contra AES, avance que es importante.

Sin embargo, de forma pblica, los ataques conocidos basados en


variantes de XSL se demuestran ineficientes contra AES debido a su
margen de seguridad. Sin embargo hay tendencias a pensar que la
complejidad podra disminuir en pocos aos.

En la siguiente pgina [Link] se


pueden encontrar muchos de los estudios actuales sobre el criptoanlisis de
este algoritmo.

- 48 -
3. Tendencias y Opinin del Autor.

El algoritmo DES, ha estado presente en nuestras comunicaciones


desde hace ya casi tres decadas, y casi desde que se estableci ya estaba
roto. En 1977, cuando DES se implanta, [Link] y M.E Hellman ya
propusieron una mquina de propsito especial una computadora
paralela que utilizara un milln de chips para probar un milln de
claves cada uno por segundo, estimando su coste en unos 20 millones
de dlares. Dicha mquina sera capaz de encontrar la clave de cifrado
en doce horas partiendo de un texto en claro y su correspondiente
cifrado.

Hay muchas hiptesis, sobre el diseo del DES, que hacen pensar
en la posibilidad de que el gobierno de EEUU e inicialmente IBM,
pudiera recuperar claves de forma sencilla. Recordar que DES se
implant en un concurso anterior al AES, en el cual gan el algoritmo
de IBM LUCIFER de 128 bits, que luego fue adaptado y reducida su
clave a 56 bits estableciendo el DES. (Pensar en la diferencia de un
ataque de fuerza bruta a 256 combinaciones frente a 2128 combinaciones).

En 1993, [Link] describi detalladamente el diseo de una


mquina para la bsqueda exhaustiva de claves constituida por 5760
chips que realizaban 16 cifrados simultneamente y capaz de encontrar
las claves en menos de dos das de trabajo ininterrumpido, con un coste
de la mquina de 100.000 dlares. Este mismo investigador propuso
otra nueva mquina capaz de realizar la misma tarea en poco ms de 3
horas, a costa de incrementar sus requisitos, en concreto, utilizando
57600 de los chips antes referidos, con un coste que ascenda a ms de
un milln de dlares.

Actualmente, y aprovechndose del diseo de una maquina que


permitiera romper el DES asociaciones como la Electronic Frontier
Foundation (EFF), ofrecen el diseo de la mquina DES-CRACKER
que permite atacar el DES por fuerza bruta en cuestin de horas y con la
ayuda de mquinas conectadas a Internet.

Por ejemplo, hace ya un tiempo me baje de Internet el diseo de


esta mquina, que es de libre distribucin. Y por unos 12.000 dolares
(menos de 20 millones de pesetas) cada ciudadano de a pie se puede
construir una mquina que ayude a romper el algoritmo DES en unas
cuatro horas (este diseo es paralelizable, es decir, a ms dinero, menos
tiempo tarda en romper el sistema. Actualmente, he visto un diseo que
consiguen romperlo en 30 minutos).
- 49 -
Por tanto, ya no es que el algoritmo DES sea dbil frente a
instituciones poderosas como la NSA (National Security Agency), sino
que es un algoritmo que puede ser franqueado por un civil con
recursos, sin ms.

Ante esta situacin, surge la necesidad de establecer un nuevo


estndar, que por lo menos, dificulte el descifrado de las
comunicaciones a las personas de a pie. Me parece paradjico, que
EEUU convoque un concurso criptogrfico, que lo gane un algoritmo
Europeo, y que EEUU imponga esta estndar al resto del mundo, pero
bueno esto es otra discusin a parte.

Al leer los planteamientos de los autores del algoritmo, se nota un


amplio conocimiento de esta ciencia, porque en sus decisiones siempre
hay un toque de precaucin o incertidumbre por si existe algn ataque
no publicado que las tire por tierra. Sinceramente, en el documento se
han expresado los motivos por los cuales fue elegido el algoritmo
Rijndael, pero sin duda y conociendo los antecedentes del DES, no se si
alguna entidad de inteligencia conocen la forma de invertirlo y
permitirle descifrar las comunicaciones, no obstante siempre es mejor
conocer como funcionan las cosas a no saber nada.

El tema de la criptografa es un asunto peliagudo, hemos pasado


de la criptografa simtrica clsica heredada a lo largo de las dcadas, a
criptografa pblica ahora al auge de la criptografa cuntica, estudios
sobre aplicaciones concretas como criptografa fluorescente, etc. El
tiempo nos dira o no que sistema ser finalmente la panacea de la
seguridad, mientras tanto lo mejor ser estar atentos.

- 50 -

También podría gustarte