DISEÑO DE UN ALGORITMO DE CRIPTOGRAFÍA SIMÉTRICA
INTRODUCCIÓN
La criptografía simétrica, también llamada criptografía de clave secreta o criptografía de una clave, es un método criptográfico en el cual se usa una misma clave para cifrar y descifrar mensajes. Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Una vez que ambas partes tienen acceso a esta clave, el remitente cifra un mensaje usando la clave, lo envía al destinatario, y éste lo descifra con la misma clave.
Los principales algoritmos basados en este método son:
• DES
• AES
• IDEA
• BLOWFISH
• TWOFISH
• RC5
A continuación se presenta una tabla comparativa entre cada algoritmo, donde se logra apreciar las fortalezas y vulnerabilidades de cada uno.
PROTOCOLO
FORTALEZAS
VULNERABILIDADES
CAPACIDAD Y TIEMPO DE PROCESAMIENTO
REQUERIMIENTOS (FISICOS / LÓGICOS) PARA SU PROCESAMIENTO
DES
·
Algoritmo simétrico
·
Codifica bloques de 64 bits.
·
Consta de 16 rondas
·
Para descifrar basta con usar
le mismo algoritmo en orden inverso
·
Es muy rápido y fácil de implementar
·
Emplea una clave demasiado corta, lo cual hace que el avance actual de
las computadoras los ataques con fuerza bruta se puedan llevar a acabo.
·
Tamaño de bloque pequeño.
·
43 Clocks/Byte
·
Lo mínimo
que se puede usar para su implementación es una FPSLIC (Field Programmable
System Level Integrated Circuit) Este dispositivo se basa en su familia
de FPGAs AT40K a la que ha añadido un microprocesador RISC AVR de 8 bits y 20
MIPS (Mega Instruction perSecond) además de una memoria de programa de
36Kbytes.
AES
·
Cifrado por bloques
·
Soporta bloques y longitud de
claves variables entre 128 a 256 bits
·
Combina la seguridad-eficiencia-velocidad, sencillez y flexibilidad
· Este
algoritmo reduce la longitud de la llave efectiva del algoritmo en 2 bits.
Esto significa que las longitudes de las llaves de 128, 192 y 256 son
reducidas a 126, 190 y 254. Pero quienes descubrieron esto dicen que no hay
relevancia practica para este algoritmo
· Velocidad de Cifrado: 70.7
Mb/s
· Velocidad de Descifrado: 71.5
Mb/s
· Para su
buen funcionamiento necesita trabajar en plataformas de 32 bits y
procesadores de 8 bits
IDEA
· El
espacio de claves es mucho más grande: 2128 ≈ 3.4 x 1038
· Todas las
operaciones son algebraicas.
· No hay
operaciones a nivel bit, facilitando su programación en alto nivel.
· Es más
eficiente que los algoritmos de tipo Feistel, porque a cada vuelta se
modifican todos los bits de bloque y no solamente la mitad.
·
Se pueden utilizar todos los modos de operación definidos para el DES
·
Han sometido al algoritmo IDEA a técnicas de criptoanálisis sin
encontrar hasta el momento debilidad alguna en el algoritmo.
·
Ofrece una velocidad de cifrado de unos 880 Kbps, y en un VAX 9000 de
unas cuatro veces más.
·
En un procesador Intel 386 a 33 Mhz
BLOWFISH
· Tiene una
estructura sencilla lo que lo hace fácil de utilizar.
· Variables
seguras, la longitud de la clave es variable y puede ser hasta de 448 bits,
lo que permite negociar entre trabajar a alta velocidad y una alta seguridad.
· Utiliza
claves que van desde 32 hasta 448 bits.
· Existe
una clase de llaves que pueden ser detectadas en 14 rondas o menos pero no
rotas por el algoritmo Blowfish.
· 19.8 clocks / byte
· Puede
ejecutarse en menos de 5K de memoria.
· Se
necesita un total de 521 ejecuciones del algoritmo de cifrado Blowfish para
producir las subclaves y las cajas S.
TWOFISH
·
Un sistema de cifrado 128-bit bloque simétrico.
·
Longitudes de clave de 128 bits, 192 bits y 256 bits.
·
No hay claves débiles.
·
Eficiencia, tanto en el Intel Pentium Pro y
·
otros programas y plataformas de hardware.
·
Diseño flexible, acepta llaves de longitud variable.
·
Alicable en una amplia variedad
·
de plataformas y aplicaciones, y Adecuado para un cifrado de flujo, la
función hash y MAC.
·
Diseño sencillo, tanto para facilitar su análisis y facilidad de
implementación.
· Llave-horario
relativamente compleja.
·
Hasta el momento no se han encontrado vulnerabilidades.
·
18.1 clocks / byte
·
Puede ser implementado en un micro de 8 bits con 64 bytes de RAM.
·
Antes de ejecutar el algoritmo, precomputar los valores de las tablas
S-box.
·
RC5
·
El número variable
de iteraciones son vueltas r(0,1,2,...255) es otro de los
parámetros que considera RC5.
·
La clave de
longitud variable es una clave k (en octetos que van desde
1 hasta 255), y que da también la oportunidad de moverse entre alta velocidad
y alta seguridad.
·
Su estructura permite que sea fácilmente
implementado y de igual manera da la oportunidad de evaluar y determinar la
con facilidad la robustez del algoritmo.
·
Proporciona alta seguridad la cual puede oscilar dependiendo de la
selección de parámetros, de manera que eligiendo los adecuados, la seguridad
será sumamente elevada.
·
Se incorporan rotaciones circulares de bits las cuales dependen de los
datos introducidos, esto hace que RC5 sea más robusto aún, por consiguiente,
que sea prácticamente irrompible para cualquier criptoanalista.
·
RC5 12-vueltas (con bloques de 64 bits) está sujeto a un ataque
diferencial usando 244 textos escogidos (Biryukov y Kushilevitz,
1998)
·
Ya que el
algoritmo tiene tres parámetros variables, el tiempo de procesamiento también
lo es de acuerdo a lo complejo de los parámetros.
·
Ejemplo:
Para una clave de 128: Velocidad de Cifrado 243 Mb/s
·
Adecuado para ser implementado en hardware o software, ya que utiliza
computación básica y operaciones que comúnmente se encuentran en
microprocesadores.
·
Sus requerimientos de mínimo espacio de memoria hacen que sean un
algoritmo apropiado para su uso en tarjetas.
·
Adaptable a procesadores de diferentes
tamaños de palabra ya que uno de los parámetros que utiliza es el tamaño de la palabra w
(16,32 o 64 bits).
CCMP
[no es un algoritmo, es una
implementación]
·
Se remplazó el vector de inicialización por un campo “Número de
paquete” y se duplicó su tamaño a 48 bits.
·
El cálculo de suma de comprobación cifrado con WEP se remplazó por el
algoritmo AES CBC-MAC, que está diseñado para proporcionar una sólida
integridad de los datos.
·
El algoritmo CBC-MAC calcula un
valor de 128 bits y WPA2 utiliza los 64 bits de orden superior como un código
de integridad de mensaje (MIC).
·
Cifra el MIC con el cifrado de modo contador de AES.
·
Usa un conjunto de claves temporales derivadas de una clave principal
y otros valores. La clave principal se origina en el proceso de autenticación
802.1X mediante Protocolo de autenticación extensible-Seguridad de la capa de
transporte (EAP-TLS) o EAP protegido (PEAP).
·
Reasigna claves automáticamente para crear nuevos conjuntos de claves
temporales.
·
Usa el campo Número de paquete como contador para ofrecer protección
contra la reproducción.
·
Aunque se han descubierto algunas
pequeñas debilidades en WPA/ WPA2, ninguna de ellas es peligrosa si se
siguen recomendaciones mínimas de
seguridad.
·
La vulnerabilidad más práctica es el
ataque contra la clave PSK de WPA/WPA2.
·
Velocidad
de Cifrado 1537.9.7 Mb/s
·
Velocidad
de Descifrado 1519.9 Mb/s
·
Plataforma:
PPro 200 MHz
·
Lenguaje:
C
·
Longitud
de clave: 128
OBJETIVO
Diseñar
e implementar un algoritmo de cifrado simétrico propio, utilizando las
fortalezas de los algoritmos vistos en clase para conformar un algoritmo mucho
más robusto, capaz de soportar las vulnerabilidades ya conocidas para AES, DES,
IDEA, BLOWFISH y TWOFISH.
ANÁLISIS
El algoritmo que proponemos llamado madDog basa su funcionalidad en AES, ya que consideramos que es un algoritmo suficientemente robusto que puede incrementar su robustez añadiendo características específicas de TwoFish y Blowfish; otros dos algoritmos que hasta el momento han demostrado su fortaleza ante ataques.
Para su mayor entendimiento, hemos dividido nuestro algoritmo en bloques, mismos que serán descritos a continuación.
CIFRADO
Bloque Whitenning
Unas de las vulnerabilidades de AES es el manejo en claro tanto de la llave como del mensaje a cifrar, por lo que madDog propone aplicar una transformación a cada elemento, llave y mensaje.
Lllave (K):
1. Empleando las tablas P de Blowfish, se realiza la siguiente operación: K XOR P
2. El resultado obtenido formará la Matriz Round Key.
Mensaje en Claro (Mcla):
1. Empleando las tablas Sbox de Blowfish y Twofish, se aplica la siguiente operación:
2. Se divide el mensaje en claro en grupos de 32 bits.
3. Cada byte se sustituye por su valor correspondiente en las tablas S-box, tomando en cuenta que cada byte utilizará una tabla S-box distinta.
4. Después de haber expandido el mensaje, en grupos de 64 bits, se realizarán operaciones de SUMA-XOR-SUMA, en ese orden, con el objetivo de reducir los 64 bits a 16 bits.
5. El resultado obtenido formará la Matriz de inicio de ronda.
Bloque Matriz Inicio de Ronda.
Para obtener la Matriz de Inicio de ronda o matriz de entrada se realiza la siguiente operación:
1. Matriz de inicio de ronda del bloque whitening XOR Matriz Round Key del bloque whitening.
2. Se transpone la matriz obtenida.
Nota: Esta operación aplica a partir de la primera ronda.
Bloque Matriz SubBytes.
Los valores se obtienen con ayuda de una matriz establecida para AES
Bloque Matriz ShiftColumns
A diferencia del algoritmo de AES, en madDog el corrimiento se realiza por columnas, siguiendo la siguiente regla:
Columna
Corrimientos
por columna
0
0
1
1
2
2
3
3
Bloque
MixClumns
Respetando el
algoritmo de AES, esta matriz se obtiene de realizar la siguiente operación:
Matriz
fija de AES X Matriz ShiftColumns
Bloque
Matriz Round Key
Al igual que en el bloque
anterior, para el cálculo de esta matriz se respeta el cálculo que realiza el
algoritmo AES.
DESCIFRADO
El
proceso para descifrar es exactamente igual para cifrar, únicamente se invierte
el orden de las claves, comenzando con la última usada para cifrar.
Enlaces de descarga
Ejecutable de Java: {Pendiente}
Documentacion del programa: https://www.dropbox.com/sh/wo6aek53yy9ucui/qFKkMdzEwu
https://www.dropbox.com/s/sarb2l1kj9jdxp1/build.xml
La criptografía simétrica, también llamada criptografía de clave secreta o criptografía de una clave, es un método criptográfico en el cual se usa una misma clave para cifrar y descifrar mensajes. Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Una vez que ambas partes tienen acceso a esta clave, el remitente cifra un mensaje usando la clave, lo envía al destinatario, y éste lo descifra con la misma clave.
Los principales algoritmos basados en este método son:
• DES
• AES
• IDEA
• BLOWFISH
• TWOFISH
• RC5
A continuación se presenta una tabla comparativa entre cada algoritmo, donde se logra apreciar las fortalezas y vulnerabilidades de cada uno.
PROTOCOLO
|
FORTALEZAS
|
VULNERABILIDADES
|
CAPACIDAD Y TIEMPO DE PROCESAMIENTO
|
REQUERIMIENTOS (FISICOS / LÓGICOS) PARA SU PROCESAMIENTO
|
DES
|
·
Algoritmo simétrico
·
Codifica bloques de 64 bits.
·
Consta de 16 rondas
·
Para descifrar basta con usar
le mismo algoritmo en orden inverso
·
Es muy rápido y fácil de implementar
|
·
Emplea una clave demasiado corta, lo cual hace que el avance actual de
las computadoras los ataques con fuerza bruta se puedan llevar a acabo.
·
Tamaño de bloque pequeño.
|
·
43 Clocks/Byte
|
·
Lo mínimo
que se puede usar para su implementación es una FPSLIC (Field Programmable
System Level Integrated Circuit) Este dispositivo se basa en su familia
de FPGAs AT40K a la que ha añadido un microprocesador RISC AVR de 8 bits y 20
MIPS (Mega Instruction perSecond) además de una memoria de programa de
36Kbytes.
|
AES
|
·
Cifrado por bloques
·
Soporta bloques y longitud de
claves variables entre 128 a 256 bits
·
Combina la seguridad-eficiencia-velocidad, sencillez y flexibilidad
|
· Este
algoritmo reduce la longitud de la llave efectiva del algoritmo en 2 bits.
Esto significa que las longitudes de las llaves de 128, 192 y 256 son
reducidas a 126, 190 y 254. Pero quienes descubrieron esto dicen que no hay
relevancia practica para este algoritmo
|
· Velocidad de Cifrado: 70.7
Mb/s
· Velocidad de Descifrado: 71.5
Mb/s
|
· Para su
buen funcionamiento necesita trabajar en plataformas de 32 bits y
procesadores de 8 bits
|
IDEA
|
· El
espacio de claves es mucho más grande: 2128 ≈ 3.4 x 1038
· Todas las
operaciones son algebraicas.
· No hay
operaciones a nivel bit, facilitando su programación en alto nivel.
· Es más
eficiente que los algoritmos de tipo Feistel, porque a cada vuelta se
modifican todos los bits de bloque y no solamente la mitad.
·
Se pueden utilizar todos los modos de operación definidos para el DES
|
·
Han sometido al algoritmo IDEA a técnicas de criptoanálisis sin
encontrar hasta el momento debilidad alguna en el algoritmo.
|
·
Ofrece una velocidad de cifrado de unos 880 Kbps, y en un VAX 9000 de
unas cuatro veces más.
|
·
En un procesador Intel 386 a 33 Mhz
|
BLOWFISH
|
· Tiene una
estructura sencilla lo que lo hace fácil de utilizar.
· Variables
seguras, la longitud de la clave es variable y puede ser hasta de 448 bits,
lo que permite negociar entre trabajar a alta velocidad y una alta seguridad.
· Utiliza
claves que van desde 32 hasta 448 bits.
|
· Existe
una clase de llaves que pueden ser detectadas en 14 rondas o menos pero no
rotas por el algoritmo Blowfish.
|
· 19.8 clocks / byte
|
· Puede
ejecutarse en menos de 5K de memoria.
· Se
necesita un total de 521 ejecuciones del algoritmo de cifrado Blowfish para
producir las subclaves y las cajas S.
|
TWOFISH
|
·
Un sistema de cifrado 128-bit bloque simétrico.
·
Longitudes de clave de 128 bits, 192 bits y 256 bits.
·
No hay claves débiles.
·
Eficiencia, tanto en el Intel Pentium Pro y
·
otros programas y plataformas de hardware.
·
Diseño flexible, acepta llaves de longitud variable.
·
Alicable en una amplia variedad
·
de plataformas y aplicaciones, y Adecuado para un cifrado de flujo, la
función hash y MAC.
·
Diseño sencillo, tanto para facilitar su análisis y facilidad de
implementación.
· Llave-horario
relativamente compleja.
|
·
Hasta el momento no se han encontrado vulnerabilidades.
|
·
18.1 clocks / byte
|
·
Puede ser implementado en un micro de 8 bits con 64 bytes de RAM.
·
Antes de ejecutar el algoritmo, precomputar los valores de las tablas
S-box.
·
|
RC5
|
·
El número variable
de iteraciones son vueltas r(0,1,2,...255) es otro de los
parámetros que considera RC5.
·
La clave de
longitud variable es una clave k (en octetos que van desde
1 hasta 255), y que da también la oportunidad de moverse entre alta velocidad
y alta seguridad.
·
Su estructura permite que sea fácilmente
implementado y de igual manera da la oportunidad de evaluar y determinar la
con facilidad la robustez del algoritmo.
·
Proporciona alta seguridad la cual puede oscilar dependiendo de la
selección de parámetros, de manera que eligiendo los adecuados, la seguridad
será sumamente elevada.
·
Se incorporan rotaciones circulares de bits las cuales dependen de los
datos introducidos, esto hace que RC5 sea más robusto aún, por consiguiente,
que sea prácticamente irrompible para cualquier criptoanalista.
|
·
RC5 12-vueltas (con bloques de 64 bits) está sujeto a un ataque
diferencial usando 244 textos escogidos (Biryukov y Kushilevitz,
1998)
|
·
Ya que el
algoritmo tiene tres parámetros variables, el tiempo de procesamiento también
lo es de acuerdo a lo complejo de los parámetros.
·
Ejemplo:
Para una clave de 128: Velocidad de Cifrado 243 Mb/s
|
·
Adecuado para ser implementado en hardware o software, ya que utiliza
computación básica y operaciones que comúnmente se encuentran en
microprocesadores.
·
Sus requerimientos de mínimo espacio de memoria hacen que sean un
algoritmo apropiado para su uso en tarjetas.
·
Adaptable a procesadores de diferentes
tamaños de palabra ya que uno de los parámetros que utiliza es el tamaño de la palabra w
(16,32 o 64 bits).
|
CCMP
[no es un algoritmo, es una
implementación]
|
·
Se remplazó el vector de inicialización por un campo “Número de
paquete” y se duplicó su tamaño a 48 bits.
·
El cálculo de suma de comprobación cifrado con WEP se remplazó por el
algoritmo AES CBC-MAC, que está diseñado para proporcionar una sólida
integridad de los datos.
·
El algoritmo CBC-MAC calcula un
valor de 128 bits y WPA2 utiliza los 64 bits de orden superior como un código
de integridad de mensaje (MIC).
·
Cifra el MIC con el cifrado de modo contador de AES.
·
Usa un conjunto de claves temporales derivadas de una clave principal
y otros valores. La clave principal se origina en el proceso de autenticación
802.1X mediante Protocolo de autenticación extensible-Seguridad de la capa de
transporte (EAP-TLS) o EAP protegido (PEAP).
·
Reasigna claves automáticamente para crear nuevos conjuntos de claves
temporales.
·
Usa el campo Número de paquete como contador para ofrecer protección
contra la reproducción.
|
·
Aunque se han descubierto algunas
pequeñas debilidades en WPA/ WPA2, ninguna de ellas es peligrosa si se
siguen recomendaciones mínimas de
seguridad.
·
La vulnerabilidad más práctica es el
ataque contra la clave PSK de WPA/WPA2.
|
·
Velocidad
de Cifrado 1537.9.7 Mb/s
·
Velocidad
de Descifrado 1519.9 Mb/s
|
·
Plataforma:
PPro 200 MHz
·
Lenguaje:
C
·
Longitud
de clave: 128
|
OBJETIVO
Diseñar
e implementar un algoritmo de cifrado simétrico propio, utilizando las
fortalezas de los algoritmos vistos en clase para conformar un algoritmo mucho
más robusto, capaz de soportar las vulnerabilidades ya conocidas para AES, DES,
IDEA, BLOWFISH y TWOFISH.
ANÁLISIS
El algoritmo que proponemos llamado madDog basa su funcionalidad en AES, ya que consideramos que es un algoritmo suficientemente robusto que puede incrementar su robustez añadiendo características específicas de TwoFish y Blowfish; otros dos algoritmos que hasta el momento han demostrado su fortaleza ante ataques.
Para su mayor entendimiento, hemos dividido nuestro algoritmo en bloques, mismos que serán descritos a continuación.
CIFRADO
Bloque Whitenning
Unas de las vulnerabilidades de AES es el manejo en claro tanto de la llave como del mensaje a cifrar, por lo que madDog propone aplicar una transformación a cada elemento, llave y mensaje.
Lllave (K):
1. Empleando las tablas P de Blowfish, se realiza la siguiente operación: K XOR P
2. El resultado obtenido formará la Matriz Round Key.
Mensaje en Claro (Mcla):
1. Empleando las tablas Sbox de Blowfish y Twofish, se aplica la siguiente operación:
2. Se divide el mensaje en claro en grupos de 32 bits.
3. Cada byte se sustituye por su valor correspondiente en las tablas S-box, tomando en cuenta que cada byte utilizará una tabla S-box distinta.
4. Después de haber expandido el mensaje, en grupos de 64 bits, se realizarán operaciones de SUMA-XOR-SUMA, en ese orden, con el objetivo de reducir los 64 bits a 16 bits.
5. El resultado obtenido formará la Matriz de inicio de ronda.
Bloque Matriz Inicio de Ronda.
Para obtener la Matriz de Inicio de ronda o matriz de entrada se realiza la siguiente operación:
1. Matriz de inicio de ronda del bloque whitening XOR Matriz Round Key del bloque whitening.
2. Se transpone la matriz obtenida.
Nota: Esta operación aplica a partir de la primera ronda.
Bloque Matriz SubBytes.
Los valores se obtienen con ayuda de una matriz establecida para AES
Bloque Matriz ShiftColumns
A diferencia del algoritmo de AES, en madDog el corrimiento se realiza por columnas, siguiendo la siguiente regla:
Columna
|
Corrimientos
por columna
|
0
|
0
|
1
|
1
|
2
|
2
|
3
|
3
|
Bloque
MixClumns
Respetando el
algoritmo de AES, esta matriz se obtiene de realizar la siguiente operación:
Matriz
fija de AES X Matriz ShiftColumns
Bloque
Matriz Round Key
Al igual que en el bloque
anterior, para el cálculo de esta matriz se respeta el cálculo que realiza el
algoritmo AES.
DESCIFRADO
El
proceso para descifrar es exactamente igual para cifrar, únicamente se invierte
el orden de las claves, comenzando con la última usada para cifrar.
Enlaces de descarga
Ejecutable de Java: {Pendiente}
Documentacion del programa: https://www.dropbox.com/sh/wo6aek53yy9ucui/qFKkMdzEwu
https://www.dropbox.com/s/sarb2l1kj9jdxp1/build.xml