ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)uso, como la fuerza bruta, el criptoanálisis...
Transcript of ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)uso, como la fuerza bruta, el criptoanálisis...
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO TÉCNICO EN INFORMÁTICA DE SISTEMAS
(ITIS)
APLICACIÓN DE ALGORITMOS GENÉTICOS AL CRIPTOANÁLISIS
DIFERENCIAL DEL CIFRADOR DE FEISTEL
Autor: Daniel Anta Díaz
Director/es: Francisco Alberto Campos Fernández,
Jesús María Latorre Canteli
Madrid
Septiembre 2012
I
II
Agradecimientos
En primer lugar, y por encima de todo, me gustaría dar las gracias a mis padres
y toda mi familia, por el apoyo incondicional que he recibido desde siempre, y
porque sin ellos mi educación y la realización de este proyecto habrían sido
imposibles.
También me gustaría dar las gracias a todos los profesores con los que he
compartido estos años de carrera. Muchas gracias a todos por lo que he
aprendido.
Por último, a los amigos que he conocido a lo largo de estos años (Balduz,
Marta, Luque, Moncunil, Villalobos, Jacobo, Pablo Gómez, y muchos más) ,
pero sobre todo, a los que me vienen acompañando desde el colegio y con los
que he compartido vivencias inolvidables (Magán, Raúl, Lombi, Sito, Coke,
Blanca, etc.), gracias a todos por estar ahí y por vuestros ánimos incansables.
III
IV
APLICACIÓN DE ALGORITMOS GENÉTICOS AL
CRIPTOANÁLISIS DIFERENCIAL DEL CIFRADOR DE FEISTEL
Autor: Anta Díaz, Daniel.
Director/es: Campos Fernández, Francisco Alberto. Latorre Canteli, Jesús María.
Entidad colaboradora: ICAI - Universidad Pontificia Comillas
RESUMEN DEL PROYECTO
El proyecto tiene el objetivo de valorar la eficacia de los algoritmos genéticos en el
ataque de textos encriptados según el cifrador de Feistel.
Palabras clave: Cifrado de Feistel, criptoanálisis, criptoanálisis diferencial, algoritmos
genéticos, cifrado en bloque.
1-Introducción
La seguridad, a día de hoy, es un requisito fundamental en el mundo de las
comunicaciones donde se mueven grandes cantidades de información, y datos como
números de cuentas bancarias y de carácter personal están expuestos a riesgos
constantes. Es por ello, que el manejo de datos cifrados es algo habitual y como
consecuencia los algoritmos usados para ello han evolucionado enormemente a lo largo
de la historia.
Existen múltiples algoritmos y sistemas de cifrado, siendo uno de los más usados
actualmente para el cifrado de grandes cantidades de información el cifrado de Feistel.
El criptoanálisis de cifradores ha demostrado ser eficaz a través de distintas técnicas de
uso, como la fuerza bruta, el criptoanálisis diferencial y lineal, etc. El interés de este
proyecto es demostrar la utilidad de los algoritmos genéticos a la hora de simplificar
procesos de criptoanálisis diferencial aplicados al cifrado de Feistel propuesto.
La eficiencia, adaptabilidad, y capacitación en la búsqueda de una solución óptima en
un tiempo reducido hacen de los algoritmos genéticos una opción muy interesante para
resolver problemas de criptoanálisis como el que se plantea en este proyecto.
V
2-Desarrollo
2.1. Cifrado de Feistel
El cifrado de Feistel propuesto entra dentro de uno de los más comunes y usados dentro
de la criptografía, concretamente, dentro de los cifrados en bloque. Este tipo de cifrado
aplica en cada ronda y dentro de unas funciones llamadas SBoxes, que se encuentran
dentro de la función f, una transformación invariante, compuesta de una serie de
sustituciones y permutaciones que se repiten en cada ronda del mismo (ver [STAN99]).
De esta manera el cifrado de Feistel cifra bloques de longitud fija usando una clave
proporcionada por el usuario. El cifrado usado consta de tres rondas y para el descifrado
de los datos solo es necesario aplicar el mismo algoritmo de cifrado pero en sentido
inverso.
0L0R
01 RL
f
f
Ronda 1
Ronda 2
001 ),( LKRfR
12 RL 112 ),( LKRfR
fRonda 3
23 RL 223 ),( LKRfR
2.2. Criptoanálisis diferencial
Para el ataque al cifrado de Feistel planteado se ha utilizado una de las técnicas más
eficaces aplicables a cifradores en bloque, como es el criptoanálisis diferencial (CAD).
El CAD consiste en explotar la probabilidad de que se den, para ciertas diferencias de
texto en claro, ciertas diferencias en las entradas de la última ronda del cifrador,
VI
considerando como diferencia el XOR de ambos valores. Conociendo por lo tanto
textos en claro de entrada, el atacante es capaz de seleccionar entradas y examinar sus
salidas del sistema de cifrado para averiguar la clave. Analizando estas entradas y
salidas al sistema de cifrado es posible construir una tabla de frecuencias y ver si existen
determinadas salidas que se dan con una alta probabilidad alejada de la teórica existente
en un sistema de cifrado ideal (ver [MHEY02]). Para completar el ataque, se descifra la
ronda n-1 usando los pares escogidos por tener una alta probabilidad y probando con
todas las posibles claves. La clave optima será la que nos ofrezca un resultado más
cercano al obtenido en el cifrado.
2.3. Algoritmo Genético
Por último, en este proyecto se plantea la mejora del Criptoanálisis Diferencial,
mediante un algoritmo genético (AG). La mejor manera de entender un AG es como
una función de optimización, donde el objetivo consiste en buscar, dentro de un
conjunto de entradas posibles, los valores que hacen que el valor de la función objetivo
involucrada sea máximo o mínimo. El algoritmo genético evoluciona de una población
a otra "mejor" a través de varios operadores genéticos basados en modelos Darwinianos
y de selección natural como la selección, el cruce y la mutación.
Nueva GeneraciónPoblación Inicial
Selección
Cruce
Mutación
El AG usará por tanto como conjunto factible con el que trabajar el conjunto de
claves posibles a probar dentro del desencriptado de la ronda n-1 del CAD,
VII
buscando evolucionar hacia una clave optima de manera más eficaz y sin tener
que probar secuencialmente con cada una de ellas.
3-Resultados
Para comprobar la eficacia del AG frente a la búsqueda secuencial dentro del conjunto
de claves a probar se han estudiado dos casos de estudio.
3.1. Primer caso de Estudio
En este primer caso de estudio el AG trabaja usando como función de optimización
aquella que devuelve como fortaleza de cada clave la diferencia de la distribución
obtenida en el proceso de desencriptación de la ronda n-1 y la distribución teórica
escogida por tener un par diferencial característico con una alta probabilidad según el
CAD.
El conjunto factible de claves utilizado para este primer caso es de 26. En las
distribuciones se puede apreciar como la fortaleza de una clave correspondiente a cada
SBox es 0, ya que en este caso la función de optimización del AG es de minimización,
por lo que estas partes de la clave global correspondientes a cada una de las SBoxes son
las óptimas.
0
200
400
600
800
1000
1200
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64
Fortaleza
Clave
Distribuciones completas CAD 3ª ronda
Sbox 0
Sbox 1
Sbox 2
Sbox 3
VIII
3.2. Segundo caso de Estudio
Este segundo caso de estudio presenta ligeras variaciones respecto al primero. En
primer lugar se ha aumentado el caso factible de claves a probar dentro del CAD
omitiendo el enfoque de desencriptado por SBox, pasando por lo tanto a un conjunto
factible de 212
.
Además se ha modificado ligeramente la función de optimización usada por el AG,
pasando a un enfoque más directo que busca la correlación directa entre las salidas
desencriptadas y las obtenidas en esa ronda en el cifrado, contabilizando el numero de
bits coincidentes.
0
200
400
600
800
1000
1 6 11 16 21 26 31 36 41 46 51 56 61
Fortaleza
Clave
Distribuciones completas CAD 3ª ronda
Sbox 4
Sbox 5
Sbox 6
Sbox 7
0
20000000
40000000
60000000
80000000
10000000
10 1097 2056 3088
Fortaleza
Claves
IX
4-Conclusiones
Este proyecto ha permitido concluir de una manera clara y contundente que el cifrado de
Feistel y en general los cifrados en bloque son una manera muy segura de mantener el
secreto en las comunicaciones. El nivel de no linealidad que se obtiene en las salidas del
cifrado se ha probado que es altísimo y al no obtenerse información de la clave a partir
de las salidas cifradas si no es a través de la fuerza bruta.
Se ha comprobado según los resultados de ambos casos de estudio, e
independientemente del tamaño del conjunto factible que el AG no mejora en términos
de computación el CAD del cifrado de Feistel propuesto. La no linealidad en ambos
casos se mantiene, dando esa forma característica e irregular a las distribuciones
obtenidas y haciendo que el AG se convierta en una búsqueda secuencial, pues las
distribuciones no disponen de gradiente, haciendo imposible que éste avance hacia un
valor optimo.
Por lo tanto, se puede concluir que en ambos casos los AG dependen de la suerte en la
inicialización aleatoria de las poblaciones, para acercarse a la clave óptima, y que por
tanto una búsqueda exhaustiva aleatoria es si no igual, más eficiente que la búsqueda
por AG. Esta conclusión puede parecer de poco valor científico pero echa por tierra
gran parte de los trabajos en los que se ha aplicado un AG al descifrado de Feistel
(véanse por ejemplo [AYMA07], [ LASK06], [SONG07], [ZHAN07]).
5-Referencias
[STAN99] Federal Information, Processing Standards Publication 46-3, "Specifications
for the Data Encryption Standard (DES)" 1999 October 25
[MHEY02] Howard M. Heys, "A tutorial on Linear and Differential Cryptanalysis",
Faculty of Engineering and Applied Science, 2002.
[AYMA07] Eng. Ayman M. B. Albassal, "Genetic Algorithm Cryptanalysis of a Feistel
Type Block Cipher", Ain Shams University, 2004.
[LASK06] E.C. Laskari, G.C. Meletiou, "Applying evolutionary computation methods
for the cryptanalysis of Feistel ciphers", University of Patras, 2006.
[SONG07] Jun Song, Huanguo Zhang, "Cryptanalysis of Four-Round DES Based on
Genetic Algorithm", Computer School Wuhan university, 2007.
X
[ZHAN07] Jun Song, Huanguo Zhang, "Cryptanalysis of Two-Round DES Using
Genetic Algorithms", Computer School Wuhan university, 2007.
XI
XII
APPLICATION OF GENETIC ALGORITHMS TO DIFFERENTIAL
CRYPTANALYSIS OF A FEISTEL BLOCK CHIPHER
Author: Anta Díaz, Daniel.
Supervisor/s: Campos Fernández, Francisco Alberto. Latorre Canteli, Jesús María.
Affiliation: ICAI - Universidad Pontificia Comillas
ABSTRACT
This project aims to assess the effectiveness of genetic algorithms in the attack of
Feistel encrypted cipher texts.
Key words: Feistel cipher, cryptanalysis, differential cryptanalysis, genetic algorithms,
block ciphers.
1-Introduction
Security, today, is a fundamental requirement in the world of communications, where
large amounts of information flow constantly, and data such as bank accounts numbers
and personal data are exposed to constant risk. Therefore, the treatment of encrypted
data is commonplace and as a result the algorithms used for this purpose have evolved
tremendously through history.
There are plenty of algorithms and cipher methods, such as Feistel, one of the most
currently used for encrypting large quantities of information. Cryptanalysis of a number
of ciphers has proven to be effective by using different techniques, such as brute force,
differential cryptanalysis, linear cryptanalysis etc. The interest of this project is to
demonstrate the usefulness of genetic algorithms to simplify the process of differential
cryptanalysis when applied to the Feistel cipher proposed.
The efficiency, adaptability, and capability in the process of finding an optimal solution
in a short period of time of genetic algorithms, make them a very interesting alternative
to solve cryptanalysis problems such as the one proposed in this project.
XIII
2-Development
2.1. Feistel cipher
The Feistel cipher proposed falls within one of the most commonly used in
cryptography and specifically in the category block ciphers. This type of cipher applies
inside the functions called SBoxes, located inside the function f, an invariant
transformation, consisting of a series of substitutions and permutations that are repeated
every round of the cipher (see [STAN99]). This way, Feistel is able to cipher blocks of
an invariant length under a key provided by the user. The algorithm used consists of
three rounds and to decipher it is only necessary to apply the very same algorithm to an
enciphered message block.
2.2. Differential Cryptanalysis
To attack the Feistel cipher proposed, in this project it has been used one of the most
effective techniques applicable to block ciphers, such as differential cryptanalysis
(DCA).
XIV
DCA consists in exploiting the likelihood of, giving certain plaintext differences,
differences in the inputs to the last round of the cipher, where the difference is
considered as the XOR between both values. Therefore, knowing plaintexts, the attacker
is able to select inputs and examine their outputs of the cipher to recover bits of the key.
Analyzing this inputs and outputs to the cipher it is possible to tabularize the
frequencies of both and examine the data to see if there are certain outputs that have a
high probability of occurrence much higher than the one an ideal cipher would have (see
[MHEY02]).
The process followed involves decrypting the last round of the cipher using the chosen
pairs for having a high probability with every possible key. The optimum key would be
the one that offers a closer result than the obtained in the cipher process.
2.3. Genetic Algorithm
Finally, this project proposes the improvement of DCA using a Genetic Algorithm
(GA). The best way to understand a GA is as a function optimization, where the
objective is to find, within a set of possible inputs, the values that make the value of the
objective function involved maximum or minimum depending on the problem. The GA
evolves from an old population to a new one, in theory better than the last one, through
some genetic operators based on Darwinian models and natural selection, such as
selection, crossover and mutation.
XV
The set of values that the GA will use to work with will be the set of possible
keys to try when applying the DCA and deciphering the last round of the
cipher. The GA looks to evolve towards an optimum key as an effective manner
without having to sequentially test each of the possible keys.
3-Results
To verify the effectiveness of the GA over sequential search within the set of keys to be
tested this project proposes two case studies.
3.1. First case study
In this first case, the GA works using as an optimization function the one that returns as
the strength of each key the difference between the distribution obtained in the
deciphering process of the last round of the cipher and the theoretical distribution
chosen by having a differential pair with a high probability given by DCA.
The set of keys used for this case is 26. In the distributions can be seen how there is a
key corresponding to each of the different SBoxes with the value 0, this is because the
optimization function is of minimization, therefore this sub keys are the optimal ones
for the given SBoxes.
0
200
400
600
800
1000
1200
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64
Strength
Keys
Distributions DCA 3rd Round
Sbox 0
Sbox 1
Sbox 2
Sbox 3
XVI
3.2. Second case study
This second case presents some slightly variations from the first. First of all the set of
keys to be tested has been increased, omitting the DCA and the SBox deciphering
approach, to 212
.
Furthermore, the optimization function used by the GA has also been modified, through
a more direct approach that seeks direct correlation between the deciphered outputs and
the ones obtained in that round of the cipher, counting the number of matching bits.
0
200
400
600
800
1000
1 6 11 16 21 26 31 36 41 46 51 56 61
Strength
Keys
Distributions DCA 3rd Round
Sbox 4
Sbox 5
Sbox 6
Sbox 7
0
20000000
40000000
60000000
80000000
10000000
10 1097 2056 3088
Strength
Keys
XVII
4-Conclusions
This project has concluded in a clear and convincing way that the Feistel cipher and, in
general, block ciphers, are a very safe way to maintain the secrecy of communications.
The level of non-linearity obtained in the outputs of the cipher has proven to be very
high, and it is not possible to obtain bits of the key if not through brute force.
It has been found according to the results of both cases, and whatever the size of the
feasible key set, that the GA does not improve in terms of computing the DCA of the
proposed Feistel cipher. The non-linearity is maintained in both cases, thus giving the
obtained distributions the characteristic irregular shapes and in so doing making it
impossible for the GA to work as an evolutionary algorithm and evolve towards an
optimal solution but rather as a sequential search.
Therefore, this project can conclude that in both cases the GA depends on luck in the
random initialization of the first population to approach the optimal key, and thus an
exhaustive random search is, is not equal, more efficient than by GA. This conclusion
seem of little scientific value but debunks many of the papers where a GA has been
applied to de Feistel cipher (see [AYMA07], [ LASK06], [SONG07], [ZHAN07]).
5-References
[STAN99] Federal Information, Processing Standards Publication 46-3, "Specifications
for the Data Encryption Standard (DES)" 1999 October 25
[MHEY02] Howard M. Heys, "A tutorial on Linear and Differential Cryptanalysis",
Faculty of Engineering and Applied Science, 2002.
[AYMA07] Eng. Ayman M. B. Albassal, "Genetic Algorithm Cryptanalysis of a Feistel
Type Block Cipher", Ain Shams University, 2004.
[LASK06] E.C. Laskari, G.C. Meletiou, "Applying evolutionary computation methods
for the cryptanalysis of Feistel ciphers", University of Patras, 2006.
[SONG07] Jun Song, Huanguo Zhang, "Cryptanalysis of Four-Round DES Based on
Genetic Algorithm", Computer School Wuhan university, 2007.
XVIII
[ZHAN07] Jun Song, Huanguo Zhang, "Cryptanalysis of Two-Round DES Using
Genetic Algorithms", Computer School Wuhan university, 2007.
XIX
XX
Índice
Parte I Memoria ...................................................................................... I
1 Introducción .......................................................................... - 1 -
1.1 Motivación del proyecto ......................................................................................... - 1 -
1.2 Objetivos .................................................................................................................... - 1 -
1.3 Metodología / Solución desarrollada.................................................................... - 2 -
1.4 Recursos / herramientas empleadas ...................................................................... - 3 -
2 Etapas de la resolución ........................................................ - 4 -
2.1 Cifrado en bloques: cifrador de Feistel ................................................................ - 4 -
2.1.1 Cifrado en bloques ........................................................................................................ - 4 -
2.1.2 Cifrado de Feistel .......................................................................................................... - 5 -
2.1.3 Aplicaciones reales ..................................................................................................... - 17 -
2.2 Criptoanálisis diferencial: aplicación al cifrador de Feistel ........................... - 18 -
2.2.1 Introducción ................................................................................................................ - 18 -
2.2.2 Acerca de la influencia de la clave en el CAD de las salidas ................................ - 18 -
2.2.3 Tablas de distribuciones diferenciales y diferencia característica ........................ - 19 -
2.2.4 Cálculo de las tablas teóricas de distribuciones diferenciales de la penúltima
ronda, y de la diferencia característica ................................................................................... - 20 -
2.3 Mejora del CAD mediante AG ............................................................................ - 24 -
2.3.1 Introducción general a los AG .................................................................................. - 24 -
2.3.2 Ciclo básico y operadores genéticos ......................................................................... - 25 -
2.3.3 Aplicación al CAD ...................................................................................................... - 30 -
3 Casos de Estudio/Resultados ........................................... - 33 -
3.1 Especificaciones comunes. .................................................................................... - 33 -
3.1.1 Cifrado-Descifrado Feistel ......................................................................................... - 33 -
3.1.2 Algoritmo Genético .................................................................................................... - 33 -
3.2 Primer Caso de Estudio. ........................................................................................ - 34 -
3.2.2 Desencriptación mediante CAD ............................................................................... - 35 -
3.2.3 Aplicación del AG ...................................................................................................... - 38 -
XXI
3.3 Segundo Caso de Estudio. .................................................................................... - 39 -
3.3.1 Introducción. ............................................................................................................... - 39 -
3.3.2 Descripción del nuevo enfoque cifrado y descifrado ............................................ - 40 -
3.3.3 Especificaciones AG ................................................................................................... - 41 -
4 Conclusiones ....................................................................... - 47 -
5 Futuros desarrollos ............................................................ - 49 -
Anexo A Tablas mapeo SBoxes ....................................................... - 51 -
Anexo B Tablas distribuciones diferenciales CAD ..................... - 55 -
Índice de Figuras ................................................................................ - 69 -
Índice de Tablas .................................................................................. - 71 -
Bibliografía .......................................................................................... - 73 -
Parte I MEMORIA
II
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 1 -
1 INTRODUCCIÓN
1.1 Motivación del proyecto
La principal motivación de este proyecto ha sido el análisis de la eficiencia de
los Algoritmos Genéticos (en adelante AG) y la fiabilidad del Criptoanálisis
Diferencial (CAD) en el cifrador de Feistel para poder concluir sobre sus
posibles aplicaciones a casos más complejos.
Los AG son una de las herramientas de optimización más potentes del
panorama actual y unos buenos resultados permitirían abrir horizontes a casos
de estudio muchos más complejos y diferentes.
Es también importante destacar que, pese a que no es la principal motivación, el
interés por el aprendizaje de los modelos teóricos planteados en este proyecto
ha sido un empuje muy fuerte de cara a la persecución de los objetivos
planteados.
1.2 Objetivos
El proyecto tiene, como primer objetivo, el análisis de la eficacia del algoritmo
de encriptación de Feistel atendiendo no sólo al proceso de encriptación en sí
mismo sino también de desencriptación usando el mismo algoritmo de cifrado
pero en sentido inverso.
Seguidamente se analiza la aplicación del CAD para el ataque al cifrado de
Feistel, y se desarrolla un AG para tratar de reducir el rango de claves a probar
dentro del análisis diferencial, con objeto de reducir su nivel de complejidad y
por ende los tiempos de computación.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 2 -
Las conclusiones y resultados obtenidos en cuanto a la posible mejora
computacional y a la fiabilidad de los resultados serán los evaluadores de la
ventaja real de usar el AG propuesto.
1.3 Metodología / Solución desarrollada
Para la consecución de los objetivos propuestos anteriormente se ha modulado
el proyecto en dos grandes etapas, de la siguiente manera.
Dentro del Capítulo 2, subdivididos en tres bloques, se describen los modelos
teóricos de resolución del problema. En concreto, en el apartado 2.1 se
introducen los tipos de cifrado en bloque, concretamente la variante del cifrado
de Feistel usada en el proyecto. Se continúa con el desarrollo y análisis de una
versión del algoritmo de encriptación de Feistel, de tres rondas de cifrado y
descifrado. Seguidamente, en el apartado 2.2, se describe uno de los tipos de
ataque más significativos aplicables al cifrado en bloque, el CAD, junto con su
aplicación a la variante del algoritmo de encriptación de Feistel de este
proyecto. Posteriormente, el Capitulo 2 propone y explica la posible mejora
computacional del CAD mediante un AG, con el cual se ha tratado de optimizar
el CAD reduciendo el rango de búsqueda de claves y por tanto el nivel de
complejidad del criptoanálisis.
Para terminar, como segunda etapa del proyecto, en el Capitulo 3 se describen
los dos casos de estudio analizados. En el primero de ellos se analiza la
aplicabilidad de un AG para aumentar la eficiencia computacional del CAD al
cifrado de Feistel de tres rondas asumiendo conjuntos factibles reducidos. En el
segundo caso de estudio, se aumenta significativamente el tamaño del conjunto
factible de claves a probar y se compara el CAD de una ronda de cifrado de
Feistel, con el criptoanálisis del mismo caso pero aprovechando la eficacia de un
AG para reducir estadísticamente el rango de claves a probar.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 3 -
1.4 Recursos / herramientas empleadas
Para el desarrollo del proyecto se han utilizado las siguientes herramientas
informáticas:
Microsoft Visual Studio 2008 para la programación de la aplicación en
C++.
Microsoft Office Excel, y Word 2007
Windows 7 Professional 64 bits
Equipo con CPU Intel Core i7 920 @ 2.67GHz y 6,00 GB RAM.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 4 -
2 ETAPAS DE LA RESOLUCIÓN
2.1 Cifrado en bloques: cifrador de Feistel
2.1.1 Cifrado en bloques
Uno de los tipos de cifrado más comunes y usados dentro de la criptografía es
el denominado cifrado en bloque. Los cifradores en bloque son elementos
fundamentales en el diseño de muchos protocolos criptográficos y son
ampliamente usados en la implementación de cifrados de grandes grupos de
datos. Dentro de los algoritmos de cifrado por bloques se encuentra el cifrado
de Feistel, siendo el más conocido el algoritmo DES (Data Encryption Standard)
[STAN99]. El DES es uno de los tipos de cifrado más influentes en el avance de
la criptografía moderna y del mundo académico. Fue desarrollado a principios
del año 1970 en IBM y está basado en un diseño anterior de Horst Feistel.
Debido a que este tipo de cifrado ha sido objeto de muchos estudios, el DES
evolucionó a una versión más segura llamada Triple DES. Sin embargo estos
dos algoritmos han sido sustituidos poco a poco por el cifrador en bloques
Advanced Encryption Standard (AES) de amplio uso actualmente a nivel
mundial.
Este tipo de cifrados en bloque operan en grupos de bits de longitud fija,
llamados bloques, aplicándoles una transformación invariante, es decir una
serie de sustituciones y permutaciones que se repiten secuencialmente en cada
ronda de cifrado, usando una clave simétrica, debido a que para el descifrado
de los datos sólo es necesario usar la misma clave que para el cifrado.
En el proceso de cifrado el algoritmo recibe un texto plano como entrada y una
clave de cifrado definida por el usuario. Aplicándole una serie de
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 5 -
transformaciones no lineales y usando la clave proporcionada en la entrada, el
algoritmo produce un texto cifrado de igual tamaño al recibido en la entrada.
En su versión más compleja, el algoritmo descompone la clave en subclaves que
se usan en cada una de las rondas de cifrado, y el descifrado consiste en la
aplicación del mismo algoritmo de cifrado pero usando esas mismas subclaves
en sentido inverso. Es decir, si tenemos por ejemplo un sistema de cifrado de 3
rondas donde el algoritmo aplica las subclaves en el orden A-B-C, al descifrar
las claves se aplicarían en el orden inverso, es decir, C-B-A. Las entradas en el
descifrado son además las salidas del cifrado.
2.1.2 Cifrado de Feistel
2.1.2.1 Introducción
Siguiendo la estructura de los cifradores en bloques, el DES toma un texto en
claro de una longitud fija de bits y lo transforma mediante una serie de
transformaciones en otro texto cifrado de la misma longitud. En la Figura 1 se
puede ver cómo es la estructura básica de cifrado de un DES de 16 rondas cuyas
especificaciones se detallan en [STAN99].
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 6 -
Figura 1 Ejemplo DES 16 rondas.
La variante simplificada del DES analizada en este proyecto está diseñada para
cifrar y descifrar bloques de textos en claro de 64 bits, bajo el control de una
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 7 -
clave de 48 bits. Como ya se ha dicho, el descrifrado de los datos obtenidos se
produce aplicándoles el mismo algoritmo usado en la encriptación con el
detalle de invertir las claves usadas en cada ronda, tal y como se verá a
continuación. Consecuentemente el proceso de descifrado es el inverso al de
cifrado, proporcionándole así la simplicidad característica que le otorga la
simetría del algoritmo.
2.1.2.2 Estructura del algoritmo de cifrado
El algoritmo consta de varias rondas secuenciales donde la entrada de 64 bits se
divide en dos bloques de 32 bits que se procesan alternativamente. Como ya se
ha dicho, la estructura de Feistel asegura que el cifrado y el descifrado sean
procesos muy similares, la única diferencia radica en la colocación de las
distintas subclaves en las diversas rondas. En concreto, el orden de las claves
para las distintas rondas será el inverso para el descifrado. El resto del
algoritmo es idéntico. Esto simplifica enormemente la implementación, en
especial sobre hardware, al no haber necesidad de algoritmos distintos para el
cifrado y el descifrado.
Cifrado
Los bloques de salida de cada ronda (n) vienen definidos por las siguientes
ecuaciones generales:
11
1
),(
nnn
nn
LKLfR
RL
(1)
Donde Ln y Rn son los bloques izquierdo y derecho respectivamente de la ronda
n, cada uno de 32 bits, f es la función de cifrado que se explicará más adelante y
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 8 -
K es la clave de 48 bits, única para todas las rondas. En la Figura 2 se detalla la
estructura del algoritmo de cifrado de 3 rondas usado en este proyecto.
0L0R
01 RL
f
f
Ronda 1
Ronda 2
001 ),( LKRfR
12 RL 112 ),( LKRfR
fRonda 3
23 RL 223 ),( LKRfR
Figura 2 Cifrado Feistel 3 rondas.
Como se puede ver, en esta versión del cifrado de Feistel se está utilizando la
misma clave para todas las rondas, difiriendo así del ejemplo de la Figura 1
donde en cada ronda de cifrado se podría utilizar una subclave distinta. En la
Figura 2 las salidas de cada ronda se muestran simplificadas para hacer la
estructura comprensible, sin embargo, para poder entender el descifrado es
conveniente ver las salidas de cada ronda en función de las entradas de la
primera ronda siguiendo las ecuaciones descritas en (1), tal y como sigue:
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 9 -
Ronda 1 cifrado
01 RL
001 ),( LKRfR
Ronda 2 cifrado
12 RL , sustituyendo 1R ;
002 ),( LKRfL
Análogamente 112 ),( LKRfR , sustituyendo 1R ;
0002 ),),(( RKLKRffR
Ronda 3 cifrado
23 RL sustituyendo 2R ;
0003 ),),(( RKLKRffL
De la misma forma 223 ),( LKRfR sustituyendo 2R y 2L ;
)),((),),),((( 000003 LKRfKRKLKRfffR
Descifrado
Para el descifrado de la entrada de 64 bits sólo es necesario aplicar el proceso de
cifrado en sentido inverso y sin inducir cambio alguno en el orden de las
subclaves al ser las mismas en cada una de las rondas. No obstante, como se ve
en la Figura 3, en este caso se aplica la función f al bloque izquierdo a diferencia
del cifrado en donde se aplicaba al bloque derecho.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 10 -
fRonda 1
fRonda 3
fRonda 2
3
'
0 LL 3
'
0 RR
'
0
'
0
'
1 ),( RKLfL '
0
'
1 LR
'
1
'
1
'
2 ),( RKLfL '
1
'
2 LR
0
'
3 LL 0
'
3 RR
Figura 3 Descifrado Feistel 3 rondas
Usando la misma notación que para la sección del cifrado (ver (1)), las
ecuaciones generales que definen las salidas del descifrado quedan de la
siguiente manera:
' '
1
' ' '
1 1( , )
n n
n n n
R L
L f L K R
(2)
A continuación se prueba que los lados izquierdo y derecho de la última ronda
del descifrado coinciden, tal y como aparece en la Figura 3, con los lados
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 11 -
izquierdo y derecho de la primera ronda del cifrado, hecho que demuestra la
simetría del algoritmo.
Suponiendo como entradas los valores L3 y R3 de la última ronda de cifrado, se
tiene:
0003
'
0 ),),(( RKLKRffLL
)),((),),),((( 000003
'
0 LKRfKRKLKRfffRR
Ronda 1 descifrado
'
0
'
0
'
1 ),( RKLfL , sustituyendo '
0L y '
0R ;
))),((),),),((((),),),((( 00000000
'
1 LKRfKRKLKRfffKRKLKRfffL
Como 0),),),(((),),),((( 000000 KRKLKRfffKRKLKRfff (ya que
0 XX ), se simplifica la ecuación y '
1L ' queda de la siguiente manera;
De igual forma '
0
'
0
'
1 ),( LKRfL
'
0
'
1 LR , sustituyendo '
0L ;
000
'
1 ),),(( RKLKRffR
Ronda 2 descifrado
'
1
'
1
'
2 ),( RKLfL , sustituyendo '
1L y '
1R ;
)),),(((),),(( 00000
'
2 RKLKRffKLKRffL
Como 0),),((),),(( 0000 KLKRffKLKRff , '
2L queda de la siguiente
manera;
Asimismo 0
'
2 RL
'
1
'
2 LR , sustituyendo '
1L ;
00
'
2 ),( LKRfR
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 12 -
Ronda 3 descifrado
'
2
'
2
'
3 ),( RKLfL , sustituyendo '
2R y '
2L ;
000
'
3 ),(),( LKRfKRfL
Como 0),(),( 00 KRfKRf , entonces;
0
'
3 LL
Además 0
'
3 RR .
Obtenemos por lo tanto los dos mismos bloques que se propusieron como
entrada al algoritmo de cifrado 0L , 0R , con lo cual el resultado queda probado.
Teniendo en cuenta que el CAD trata de descifrar la clave de una ronda (en
concreto de la última, como se verá en el apartado 2.2), es preciso indicar por
qué se ha realizado el cifrado de tres rondas y no de dos. Como se ha podido
observar en la Figura 2, y en sus correspondientes ecuaciones de salida, al final
de la ronda 1 sólo el bloque derecho está afectado por la función f y la clave K.
Si se realizara el criptoanálisis de la ronda 2, según (2), se estaría comparando la
salida descifrada de la ronda uno con L2=R1 que no está afectado por la clave K.
Es por ello que es necesario ampliar el proceso de cifrado a 3 rondas. De esta
manera el descifrado de la tercera ronda se compara con la salida de la ronda 2
cuyos bloques son:
2 0 0
2 1 1
( , )
( , )
L f R K L
R f R K L
(3)
Y por tanto han pasado por f y están afectados por la clave.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 13 -
2.1.2.3 Confusión y difusión
En esta sección se explica el núcleo del sistema de cifrado, la función f, que
garantiza la confusión y difusión que caracteriza la no linealidad de las salidas
cifradas del DES, es decir, que los bits de salida de cada una de las SBoxes no
puedan ser representados como una operación lineal de los bits de entrada. Este
hecho fundamentará las conclusiones que se han deducido en este proyecto, tal
y como se verá más adelante.
La confusión y difusión son dos conceptos muy ligados entre sí, y que tienen
mucho que ver con la fortaleza de un sistema de cifrado. La difusión nos dice
que, si cambiamos un bit en el texto en plano (sin cifrar), deberían cambiarse el
mayor número de bits en el texto cifrado. Para lograr este efecto recurrimos a la
Tabla E (ver Tabla 1), de la que se habla más adelante. Por otro lado, la
confusión lo que busca es, que la relación entre la clave y el texto cifrado sea lo
más baja y compleja posible. Para obtener este efecto se aplican las SBoxes que,
como se verá más adelante, logran que un mínimo cambio en la clave cambie
drásticamente la salida de la SBox, por lo que la relación entre la clave y la
salida cifrada es muy baja.
Combinando secuencialmente en cada ronda estos dos tipos de efectos se logra
que el cifrado alcance unos niveles de no linealidad muy altos, tal y como se
confirma en esta investigación.
En la Figura 4 se ve el proceso del cálculo de f(R,K), explicado seguidamente.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 14 -
Figura 4 Cálculo de f(R,K)
Tabla de selección E
El primer paso es la conversión del bloque de entrada de 32 bits a 48 bits
mediante la tabla de selección E para poder realizar el XOR con la clave de la
ronda en la que se encuentre el cifrado (o descifrado). Los bits del nuevo bloque
se obtienen seleccionando en el orden que indica la Tabla 1 los bits de la entrada,
como se explica a continuación.
Tabla de selección E
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 15 -
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Tabla 1 Mapeo de Selección E
La Tabla 1 nos dice los bits que tenemos que seleccionar de la entrada y en qué
orden tenemos que colocarlos. En concreto, la primera fila nos indica qué bits
de la entrada componen los primeros 6 bits de la salida, la segunda fila los
segundos 6 bits de la salida, y así sucesivamente hasta completar los 48 bits. Por
ejemplo, viendo la Tabla 1, los primeros 6 bits de la salida estarán formados por
el bit nº32 de la entrada, seguido por el bit 1, 2, 3, 4 y por último el 5. Como se
puede comprobar en la tabla se repiten en cada fila 2 bits de la fila anterior.
Estas repeticiones de bits hacen que la entrada de 32 bits pase a 48 bits.
SBoxes
A continuación, se realiza un XOR con la subclave correspondiente a esa ronda
de 48 bits, y la salida se usa de entrada para las funciones de selección (en
adelante SBoxes). Cada una de las SBoxes es única y convierte su entrada
correspondiente de 6 bits a 4 bits de salida. Esta conversión se realiza mediante
una tabla como la de la Figura 5.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 16 -
6x4
S-Box
E1 E2 E3 E4 E5 E6
S1 S2 S3 S4
Figura 5 Mapeo SBox 6x4
Para el sistema de cifrado planteado en este proyecto cada una de las SBoxes
posee su propia tabla, que no varía con la ronda de cifrado. A modo de ejemplo,
en la Tabla 2 se muestra el mapeo empleado para la primera SBox de cada
ronda.
S1 Columnas (bits 4 a 1)
Filas
(bits 5 y 0)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Tabla 2 Mapeo SBox-1
En este caso, la SBox-1 usará de entrada los primeros 6 bits de los 48 que recibe
la función f de cifrado. El primer y último bit de los 6 bits de la entrada
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 17 -
representan, en base 2, un número de rango 0-3, que indica la fila de su tabla
asociada, y los 4 bits intermedios representan, en rango 0-15, el índice de la
columna.
Como muestra la imagen superior, debe tenerse en cuenta que los índices tanto
de filas como de columnas comienzan en 0. Por ejemplo, dada la entrada
101001, la fila correspondiente sería 3=11 (bits 5 y 0 de la entrada), mientras que
la columna seria 4=0100 (bits 4 a 1 de la entrada). Con dicha fila y columna se
selecciona de la tabla de la SBox el valor entero correspondiente, en un rango 0-
15, que, representado en binario, compondrá la salida de la SBox. Para el
ejemplo usado de la SBox-1 con fila 3=11 y columna 4=0100 el valor de salida
sería 4=01001 (véase Tabla 2). Si tomamos como ejemplo la tabla para la SBox-1,
y consideramos como salida el número 15, observamos que la entrada puede
tomar 4 valores distintos correspondientes a los distintos números 15 que hay
en la tabla. Los valores serían, en orden de aparición en la tabla, 001010, 000011,
110000 y 100001, por lo que las SBoxes no son inyectivas.
2.1.3 Aplicaciones reales
La aplicación real inicial del DES por la que fue diseñado, fue resistir un tipo de
ataque criptográfico conocido por la NSA [SECU52], y descubierto por IBM.
Aunque no fue hasta más tarde revelado públicamente por Eli Biham y Adi
Shamir a finales de 1980. La técnica se conoce como criptoanálisis diferencial
(CAD; ver 2.2), y aún se mantiene como uno de los pocos ataques satisfactorios
contra los tipos de cifrado en bloque, junto con el criptoanálisis lineal.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 18 -
2.2 Criptoanálisis diferencial: aplicación al cifrador de Feistel
2.2.1 Introducción
El CAD es una técnica de criptoanálisis aplicable principalmente a cifrados en
bloque cuyo descubrimiento está generalmente atribuido a Eli Biham y Adi
Shamir a finales de 1980, debido a unas publicaciones de un número de ataques
a cifrados en bloque entre los que se incluye una debilidad teórica en el Data
Encryption Standard (DES) (ver [BIHA93]).
En 1994 sin embargo, un miembro del equipo original de IBM que diseño el
DES, Don Coppersmith, publicó un artículo (ver [COPPE94]) en el que afirmaba
que IBM ya era consciente de la existencia del CAD alrededor de 1974, y que la
defensa contra este tipo de criptoanálisis fue un objetivo de diseño.
2.2.2 Acerca de la influencia de la clave en el CAD de las salidas
El CAD consiste en explotar la probabilidad de que se den, para ciertas
diferencias de texto en claro, ciertas diferencias en las entradas de la última
ronda del cifrador (o equivalentemente en las salidas de la penúltima). Usar
diferenciales, como se explicará más adelante, que tengan una alta probabilidad
nos da la oportunidad de explotar la información de entrada a la ronda n y
recuperar bits de la clave de dicha ronda. En el caso propuesto en este proyecto
se determinaría de hecho la clave completa al no existir diferencias entre las
subclaves por ronda.
Si consideramos como entrada a la función f los valores X' y X'', entonces la
diferencia de entrada vendría dada por el XOR de los valores escogidos, es
decir:
''' XXX
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 19 -
Hay que tener muy en cuenta que los bits de la clave K involucrados en el
cifrado de X' y X'' antes de aplicar la SBox acaban desapareciendo de la
expresión diferencial dado que se tiene:
' '' ' ''( ) ( )X K X K X X X (4)
Se deduce por lo tanto de (4) que los bits de la clave no tienen ninguna
influencia en la diferencia de la entrada a la SBox, y por tanto tampoco en su
salida.
2.2.3 Tablas de distribuciones diferenciales y diferencia característica
En un tipo de cifrado aleatorizado ideal, es decir, si se pudiera construir una
SBox que no revelara información diferencial acerca de la salida obtenida para
una determinada entrada, la probabilidad de que una determinada diferencia
de salida ∆X se dé, dada una diferencia de entrada ∆Y en una SBox sería de
1/26. Sin embargo, debido a las propiedades explicadas en [3] esto es
técnicamente imposible. El CAD busca por ello explotar el escenario donde una
particular ∆Y ocurra con un determinado ∆X con una alta probabilidad (es
decir, mucho mayor que 1/26). En adelante se referirá al par (∆X*, ∆Y*) como
diferencia característica siendo aquel par que tiene mayor probabilidad, donde
∆X* se encuentra en el rango 0-26 y ∆Y* en el rango 0-24 (como delimitan los bits
de entrada y salida de cada SBox, ver Figura 5).
Conociendo por lo tanto textos en claro de entrada, el atacante es capaz de
seleccionar entradas y examinar sus salidas del sistema de cifrado para
averiguar la clave. Así pues, se seleccionarán parejas de entrada X' y X'' que
satisfagan ∆X*, sabiendo que para ese ∆X* su ∆Y* se da con una alta
probabilidad, lo cual significa que se ha encontrado una debilidad en la
encriptación. Para encontrar el ∆Y* que tiene una alta probabilidad de ocurrir se
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 20 -
tabulan, para cada SBox, las distribuciones diferenciales que miden la
"fortaleza" de cada una de las SBoxes, donde las filas representan todos los
posibles valores de ∆X y las columnas todos los de ∆Y. Cada elemento de la
tabla representa el número de ocurrencias de la correspondiente fila-columna.
Obsérvese que según lo probado en el apartado anterior, se puede afirmar que
la tabla de distribuciones de probabilidad es la misma para el cifrado con y sin
clave.
2.2.4 Cálculo de las tablas teóricas de distribuciones diferenciales de la
penúltima ronda, y de la diferencia característica
Dado que el CAD trata de determinar la clave usada en la ronda n-1 (que es de
hecho la clave de cualquiera de las rondas del cifrado) el primer paso del CAD
consiste en determinar la tabla de distribución diferencial para cada una de las
SBoxes para dicha penúltima ronda. Por lo tanto, conociendo un conjunto de
entradas {X} (de la primera ronda) y sus salidas de la última ronda n, {Yn} se
trata de determinar, para cada una de las SBoxes, una estimación de la tabla de
la distribución de las diferencias ∆Yn-1 de la ronda n-1, suponiendo una
determinada diferencia ∆X en la entrada.
En una situación real, el atacante dispondría de un conjunto limitado de textos
en claro {X} y sus correspondientes salidas cifradas {Yn}. Sin embargo, en el
proyecto propuesto, se va a trabajar con una situación “ideal”, donde se
conocen todas las posibles entradas y salidas de cada una de las SBoxes, por lo
que las tablas con las distribuciones de frecuencias son teóricas y estarán
completas. Por lo tanto, para cada SBox de 6x4 (ver Figura 6), se consideran los
62 posibles valores de entrada para X' y entonces el valor de ∆X de la tabla de
distribuciones delimita el valor de X'' de la siguiente manera:
'' 'X X X .
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 21 -
El orden del par no es relevante pues el operador XOR es conmutativo, de
manera que ' 'X X X X X . De esta forma, la tabla con las distribuciones
en frecuencia absoluta se calcula como el número de veces que obtenemos cada
∆Yn-1=Yn-1Y',n-1 para cada uno de los 64 valores de ∆X, siendo Yn-1 e Y',n-1 las
salidas de la ronda n-1 correspondientes a X y X’. En la Tabla 3 se muestran las
8 primeras filas de la tabla correspondiente a la SBox-1 (ver Anexo B para la
tabla completa y para las tablas del resto de SBoxes).
1nY
X
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 6 0 2 4 4 0 10 12 4 10 6 2 4
2 0 0 0 8 0 4 4 4 0 6 8 6 12 6 4 2
3 14 4 2 2 10 6 4 2 6 4 4 0 2 2 2 0
4 0 0 0 6 0 10 10 6 0 4 6 4 2 8 6 2
5 4 8 6 2 2 4 4 2 0 4 4 0 12 2 4 6
6 0 4 2 4 8 2 6 2 8 4 4 2 4 2 0 12
7 2 4 10 4 0 4 8 4 2 4 8 2 2 2 4 4
Tabla 3 Matriz parcial frecuencias distribuciones diferenciales SBox-1
Nótese que cada una de las 8 tablas de frecuencias (ver Anexo B) poseen una
serie de propiedades comunes a todas ellas. En primer lugar la suma de todos
los elementos de cada una de las filas es 26. Además la diferencia de entrada
∆X=0 deriva siempre en una diferencia de salida ∆Yn-1=0 (ver [MHEY02]).
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 22 -
Una vez calculadas las tablas para cada una de las SBoxes el objetivo es ahora
determinar el diferencial ∆X* que hace máxima la frecuencia relativa de la tabla
de distribuciones de cada SBox. Como se ha comentado, en general se habrá
encontrado una debilidad en la encriptación si esta probabilidad está muy por
encima de 61/ 2 .
2.2.4.1 Obtención de la clave de la última ronda
Una vez se han escogido los pares de {X} cuyas diferencias sean todas iguales a
∆X*, es posible atacar el cifrador y recuperar bits de la clave de la última ronda.
El proceso consiste en desencriptar la última ronda usando los pares {Y,Y'} tales
que Y+Y’=Y*, usando como clave tentativa K’ dentro del conjunto de posibles
claves a elegir. Hecho esto se compara la frecuencia obtenida en el proceso
inverso de desencriptación de una ronda con la frecuencia teórica de la tabla de
distribuciones de la ronda n-1 correspondiente al par diferencial característico
(∆X*,∆Y*). La clave K’ que proporcione una mejor comparativa será la clave
correcta.
A modo de ejemplo, en la siguiente tabla se muestra la frecuencia teórica
correspondiente a cada par diferencial característico (∆X*,∆Y*) de cada una de la
8 SBoxes (ver Anexo B para visualizar las tablas para cada par posible). En
negrita se destacan las frecuencias elevadas que indican una debilidad en la
encriptación para la SBox indicada en la primera columna.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 23 -
1nY
SBox ∆X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 52 0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6
1 8 0 0 0 4 0 4 0 8 0 10 16 6 6 0 6 4
2 39 0 2 4 16 8 6 6 6 0 2 4 4 0 2 2 2
3 1 0 0 0 0 0 16 16 0 0 16 16 0 0 0 0 0
4 13 10 4 2 2 0 6 16 4 0 2 6 2 4 12 6 4
5 8 0 0 0 6 0 2 16 4 0 2 6 2 4 12 6 4
6 52 0 4 14 8 2 2 2 4 16 2 2 2 0 2 0 4
7 1 0 0 0 6 0 16 10 0 0 0 6 0 14 6 2 4
Tabla 4 Distribuciones de frecuencia teóricas de alta probabilidad.
Denotando como FYn-1 la distribución teórica de ∆X* para la penúltima ronda, y
FYn-1(K') la obtenida en la desencriptación de la última ronda usando la clave K'
para todas las posibles salidas cifradas {Y,Y'} tales que Y+Y’=Y*, entonces la
clave óptima K* correspondiente a la ronda n será la que haga mínima a la
función:
)'()'( 11 KFYFYKF nn (5)
Se dice que la clave correcta de la ronda n es la que hace que el valor de (5) sea
mínimo ya que eso hace que su distribución de frecuencia FYn-1(K*) se parezca a
la teórica FYn-1 escogida por su alta probabilidad, lo que en principio significaría
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 24 -
que el resultado de (5) sea menor cuanto mejor sea la clave probada K’. Este
hecho hace de (5) candidata a función fitness del AG propuesto a continuación.
2.3 Mejora del CAD mediante AG
2.3.1 Introducción general a los AG
Los algoritmos genéticos (en adelante AG) están considerados como una de las
más eficientes técnicas de búsqueda de óptimos en un problema de
optimización. Aunque no garantizan una solución óptima global, su habilidad
para alcanzar una solución aceptable, quasióptima u óptima local, les permite
participar activamente en muchas técnicas de investigación operativa e
inteligencia artificial. La mejor manera de entender un AG es como una función
de optimización, donde el objetivo consiste en buscar, dentro de un conjunto de
entradas posibles, los valores que hacen que el valor de la función objetivo
involucrada sea máximo o mínimo (dependerá del problema y de la función
utilizada).
Los AG son métodos adaptativos y probabilistas que comienzan con una
población inicial de candidatos y evolucionan hacia una solución mejor
aplicando transformaciones como el cruce, mutación y selección, basados en
modelos Darwinianos y de selección natural [VILLA09]. El AG por tanto usa la
población inicial para generar una población nueva donde los individuos son
en general "mejores" que los de la generación anterior. En general, este tipo de
algoritmos evolucionarios son mejores que los algoritmos de optimización
convencionales (como la programación matemática) para problemas que
presentan altas discontinuidades, ya sean no diferenciales o con una dificultad
de optimización extrema. El ciclo habitual que permite pasar de una población a
la nueva y que se describe a continuación es el representado en la Figura 6.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 25 -
Nueva GeneraciónPoblación Inicial
Selección
Cruce
Mutación
Figura 6 Ciclo básico Algoritmo Genético
2.3.2 Ciclo básico y operadores genéticos
A las transformaciones usadas en la obtención de una nueva población a partir
de otra se les llaman operadores genéticos. Los operadores genéticos básicos
usados habitualmente por los AG y que permiten pasar de una generación a la
nueva, como se puede ver en la Figura 6, son la Selección, el Cruce, y la
Mutación. La solución del problema es de hecho un individuo de la población y
puede tener diversas representaciones dependiendo del problema concreto a
resolver. A esta representación se la denomina como codificación de los
individuos, y como se ha dicho puede variar según el problema a resolver
(Binaria, Entera, Código Gray, Coma Flotante, Listas y Árboles...). Al igual que
la codificación, el resto de operadores genéticos pueden también variar de un
AG a otro. Junto con la población inicial y la función fitness a optimizar, a
continuación se describe de manera genérica cada uno de estos operadores y se
ven algunas de sus posibles variantes.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 26 -
Población inicial
Dentro de los AG existen normalmente dos tipos de inicializaciones más
habituales para la primera población de individuos.
Inicialización aleatoria, donde como el propio nombre indica no interviene el
usuario. Esta inicialización se usa cuando no se conoce nada acerca de las
posibles soluciones del problema. Este sería el caso del proyecto que aquí se
expone.
Inicialización heurística, donde el usuario tiene una idea aproximadamente de
las claves con una alta probabilidad de éxito y es quien inicializa la
población convenientemente.
Función Fitness
Para poder realizar la selección de los individuos que van a formar la nueva
generación es necesario realizar una evaluación de su "fortaleza", es decir, de su
posible potencial como solución optima al problema. La función objetivo fitness
permite evaluar la fortaleza de cada individuo y es la que guía el proceso de
selección explicado a continuación. Los individuos con un valor fitness más alto
serán más fuertes y por tanto tendrán más probabilidades de ser escogidos para
la nueva generación poblacional.
Selección
La selección es el proceso mediante el cual se eligen individuos a partir de una
población, con el objeto de ser evolucionados, o reinsertados para la siguiente
población. Existen varios métodos de selección entre los que se encuentran los
siguientes:
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 27 -
Selección por ruleta: Los individuos se selección en función de su fortaleza,
por lo que es posible que se seleccionen individuos "buenos", pero también
"malos", manteniendo así la diversidad de la población. La probabilidad de
selección del individuo j entre N viene dada, en un problema de
maximización, por:
N
j
jjj FFP1
/
(6)
donde jF es el valor Fitness del individuo j. Mientras que si el problema
fuese de minimización la probabilidad quedaría de la siguiente manera:
N
j
jjj FFP1
)/1/()/1(
(7)
Selección por torneo: Este tipo de selección se efectúa mediante una
comparación entre un pequeño subconjunto de individuos elegidos al azar
de la población [MILLE95].
Selección por torneo: En este método a cada cromosoma se le asigna un rango
numérico basado en su fortaleza y la selección se realiza en función de dicho
ranking. La ventaja de este método de selección frente a la selección por
ruleta es que puede evitar que individuos muy aptos ganen dominancia al
principio a expensas de otros menos aptos, lo que reduciría la diversidad
genética de la población.
Es habitual que, en ocasiones, se realice una reinserción de algún individuo de
la población. La reinserción elitista consiste en seleccionar el mejor elemento de
la población antes de que estos sean evolucionados, como se verá más adelante,
para reinsertarlo en la siguiente población.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 28 -
Cruce
El cruce de los individuos es donde se realiza el intercambio de "material
genético" existente. Consiste en generar una nueva población a partir de la
existente seleccionando padres de la actual, los cuales generan (normalmente)
dos hijos nuevos. Se tiene en cuenta que la selección de los padres se realiza en
función de su valor fitness, es decir que padres con una valor fitness alto
tendrán más probabilidades de ser escogidos para engendrar hijos,
garantizando así que la calidad de las generaciones mejora hacia una solución
óptima, al menos localmente. Pese a que en los AG suele haber muchas
variaciones en los tipos de cruce dependiendo del problema y el contexto de la
situación, se suelen dar los siguientes tres tipos habituales de cruce:
Cruce de punto único.
Cruce multipunto.
Cruce mediante media de enteros.
-Cruce de punto único: En el cruce de punto único el material genético se
intercambia a partir de un bit seleccionado de manera aleatoria. Es decir, se
sortea por qué punto de la clave (en este proyecto los individuos se codificaban
en binario), se va a realizar el intercambio de material genético. Considerando
que en este proyecto la longitud de cada individuo a cruzar es de 6 bits, dado
que son claves parciales para cada SBox, se selecciona un valor aleatorio entre 1
y 6, llamémoslo r, y se intercambian los bits desde r+1 al bit 6 del individuo 1
con los bits r+1 al bit 6 del individuo 2. Siguiendo un ejemplo, y considerando
que el punto de intercambio es el 3, dados los siguientes individuos (claves)
padre:
Padre 1: 55, 110111
Padre2 13, 001101
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 29 -
110|111
001|101
Se generan los siguientes dos hijos:
Hijo 1: 53
Hijo 2: 15
-Cruce multipunto: El cruce multipunto tiene las mismas bases que el de punto
único, con la excepción de que re realizan varios intercambios genéticos entre
distintas posiciones delimitadas por varios puntos “r”. El número de puntos es
definido por el usuario y su eficiencia en la búsqueda de soluciones localmente
óptimas dependerá del problema que se esté tratando.
-Cruce mediante media de enteros: Se obtiene mediante la media sencilla de los dos
individuos escogidos. Normalmente la codificación que se emplea en esta
mezcla es en valores reales. Aplicando este tipo de cruce conseguimos que el
hijo resultante quede dentro de la zona óptima delimitada por los dos padres.
Siguiendo el ejemplo anterior, el hijo que se genera sería:
Hijo = (55 +13)/2 = 34.
Mutación
La mutación es un proceso similar al de cruce, pero en el que solo participa un
individuo de la población. No obstante, el objetivo de la mutación es evitar que
el algoritmo genético se quede estancado en óptimos locales que puedan no dar
la clave correcta, por lo que se busca que el individuo mutado difiera lo más
posible del individuo original. La mutación de punto único suele ser la
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 30 -
mutación más habitual cuando se usan codificaciones binarias, como ocurre en
este proyecto.
Mutación de punto único: En este caso se sortea qué individuo es el que muta de
entre todos los de la población, así como el bit que muta. Se intercambia
entonces el valor del bit seleccionado generando un nuevo individuo mutado.
Tomando como ejemplo la subclave 14 y siendo el bit que muta el número 5;
001110
La mutación quedará de la siguiente manera;
011110
Por lo tanto, la subclave 14 ha mutado en el nuevo individuo 30.
Criterios de Parada
El AG puede parar cuando se completen un número de rondas determinado
por el usuario o cuando encuentre la solución correcta para el problema.
Aunque para algunos problemas de optimización la solución correcta no es fácil
de identificar (cuando por ejemplo el fitness en maximización tiene una cota
superior que no se sabe es o no alcanzable), en el problema resuelto en este
proyecto la clave óptima puede determinarse como la que hace cero la función
(5). Otros criterios de parada se basan en identificar el estancamiento cuando se
ha efectuado múltiples mutaciones, entiendo estancamiento como la situación
en la que el valor medio del fitness de cada población (iteración) no cambia
positivamente. En general el criterio de parada es situacional, y depende del
problema en cuestión.
2.3.3 Aplicación al CAD
En este proyecto se estudia la aplicación de un AG al CAD descrito en 2.2. El
AG busca usar como conjunto factible la totalidad de claves K' a probar en el
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 31 -
desencriptado de la última ronda n-1, de manera que no sea necesario probar
con cada una de las claves, sino que el propio AG evolucione hacia la solución
óptima, sin búsqueda exhaustiva. En el siguiente capítulo se detallan los
parámetros y especificaciones tenidos en cuenta en la aplicación del AG
propuesto a cada uno de los casos de estudio analizados.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 32 -
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 33 -
3 CASOS DE ESTUDIO/RESULTADOS
A continuación se exponen los dos casos de estudio contemplados en este
proyecto, junto con sus resultados y análisis. En el primero se realiza el CAD de
la última ronda del cifrado de Feistel, al que se le aplica posteriormente un AG
que busca reducir la dimensión de claves probadas. En el segundo se opta por
realizar el mismo descifrado del primer caso pero prescindiendo del enfoque
del CAD y aumentando el conjunto factible de claves a probar en una única
ronda de cifrado.
3.1 Especificaciones comunes.
Pese a que cada caso de estudio posee sus peculiaridades ambos están
sostenidos por unas bases comunes que se detallan a continuación.
3.1.1 Cifrado-Descifrado Feistel
El cifrado y descifrado se considera para n=3 (tres rondas), como se vio en la
Figura 2 y la Figura 3. No habría sido posible simplificarlo a un número inferior
de rondas debido a lo explicado al final de la sección 2.1.2. El descifrado en
ambos casos es de la última ronda, buscando la clave K asociada.
3.1.2 Algoritmo Genético
A continuación se describen los puntos comunes a los AG usados en este
proyecto para los dos casos de estudio. El resto de especificaciones respecto a
los operadores genéticos que no se mencionan en este apartado se describirán
en cada uno de los casos concretos.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 34 -
Codificación: La codificación de los individuos a efectos del AG se realiza
en binario, aunque para hacer referencias a dichas claves en ocasiones se
use su representación entera.
Cruce: El cruce en ambos casos es el cruce mediante media de enteros.
Buscando así que el nuevo hijo caiga en el conjunto factible delimitado
por los dos padres.
3.2 Primer Caso de Estudio.
3.2.1.1 Especificaciones AG
El AG usado en este apartado comienza con una población inicial aleatoria de
20 elementos, cuyo número se mantiene a lo largo de los ciclos del AG, donde
se encadenan los operadores genéticos descritos a continuación:
Valoración Fitness: La fortaleza de las claves en este caso viene dada por
(5). Es decir, la diferencia de la distribución obtenida al desencriptar con
cada {km} una ronda el conjunto de salidas {Y3} de cada SBox-m y la
distribución teórica escogida 1nFY por tener un par diferencial
característico con una alta probabilidad (∆X*,∆Y*). Dicha distribución es
además diferente por SBox.
Selección: La probabilidad de selección de cada individuo de la población
se especifica según (7) usando (5) como función fitness.
Mutación: La mutación usada en este caso es de punto único, como quedó
definida en 2.3.2, donde el individuo que muta de la población se
selecciona aleatoriamente.
La parada del AG especificada se produce en cuanto se encuentra la subclave
correcta dentro de la población empleada en cada SBox.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 35 -
3.2.2 Desencriptación mediante CAD
En este primer caso de estudio se realiza la desencriptación de la última ronda
de cifrado n=3, como quedó explicado en 2.2.4.1. En dicho apartado, se explica
la obtención de la clave de la última ronda de manera genérica, sin embargo, en
este caso se mostrarán los resultados del CAD para cada SBox por separado, en
la búsqueda de las claves k que interactúan con cada una de las 8 SBoxes, de
manera independientemente. Por tanto, en adelante se hace referencia a todas
las posibles combinaciones (26) de los bits de la clave K que interactúan en cada
SBox-m de la ronda 3 como el conjunto de subclaves {km}. Una vez obtenidas las
8 subclaves optimas {km} correspondientes a cada SBox-m (m=1,..,8), solo es
necesario concatenarlas para formar la clave completa K de la última ronda n.
Recuérdese que el CAD descifra el conjunto {Y3} probando secuencialmente las
64 posibles subclaves para cada SBox-m quedándose con la clave k*m que da un
valor menor de (5).
En la Figura 7 y la Figura 8 se muestran los resultados del CAD para las 8
SBoxes, donde aparece el valor fitness para cada una de las claves probadas
hasta encontrar la clave óptima k*m (para cada SBox-m). Es preciso notar que,
como se explicó en 2.2.4.1, la fortaleza de la clave viene dada por (5) y el valor
de F(km) tiende a ser menor cuando mejor sea km. Como en este caso de estudio
se ha usado la tabla teórica de distribuciones (ver Tabla 4), y por tanto todo el
conjunto posible de salidas {Y3} para la característica diferencial, el valor de
F(k*m) para la clave óptima de cada SBox-m es 0.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 36 -
Figura 7 Resultados CAD primeras 4 SBoxes
Figura 8 Resultados CAD segundas 4 SBoxes
Comentar que en la Figura 7 y la Figura 8 se ha evaluado la función fitness (5)
probando las claves partiendo de la clave 0 hasta obtener la subclave k*m con
fortaleza mínima para cada una de las SBoxes. En ambas figuras se representan
0
100
200
300
400
500
600
700
800
0 5 10 15 20 25 30 35 40
Fortaleza
Clave
Resultados CAD ronda 3
Sbox-1
Sbox-2
Sbox-3
Sbox-4
0
100
200
300
400
500
0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54
Fortaleza
Clave
Resultados CAD ronda 3
Sbox-5
Sbox-6
Sbox-7
Sbox-8
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 37 -
las claves que el CAD ha ido seleccionando por su mejoría en la fortaleza hasta
obtener la clave óptima.
En concreto, la clave K usada para el ejemplo ha sido "clavel", de este modo, con
8 bits de la representación ASCII de cada carácter de K se obtienen por
concatenación los 48 necesarios para la clave K. Los 8 bits de cada carácter de la
clave K son:
c = 99 = 01100011
l = 108 = 01101100
a = 97 = 01100001
v = 118 = 01110110
e = 101 = 01100101
l = 108 = 01101100
Por lo tanto, con estas 6 fracciones de clave de 8 bits se obtiene la siguiente clave
K de 48.
011000110110110001100001011101100110010101101100
Los conjuntos de 6 bits de K que interactúan en cada SBox se representan en la
Tabla 5:
SBox-8 SBox-7 SBox-5 SBox-5 SBox-4 SBox-3 SBox-2 SBox-1
011000 110110 110001 100001 011101 100110 010101 101100
24 54 49 33 29 38 21 44
Tabla 5 División clave por SBox
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 38 -
3.2.3 Aplicación del AG
Una vez vista la desencriptación de la tercera ronda de cifrado y obtenidas las
subclaves {km} correspondientes a cada SBox-m mediante búsqueda exhaustiva
en este apartado se describe la aplicación del AG para reducir el rango de
búsqueda dentro de cada subconjunto {km}.
Como se ha visto, los conjuntos factibles sobre los que trabaja el AG son de 26 (6
bits de entrada a cada SBox) posibles subclaves a probar por SBox. Con el
propósito de conocer la forma de la función fitness en todo su rango de
definición, con objeto de sacar conclusiones sobre la conveniencia de la
aplicación del AG, a continuación se muestran los valores fitness obtenidos
según (5) para todas las 26 claves . Nótese que cada Sbox tiene un valor mínimo
en 0 que corresponde además con la clave óptima.
Figura 9 Evaluaciones SBox-1 a 4 CAD 3ª ronda
0
200
400
600
800
1000
1200
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64
Fortaleza
Clave
Distribuciones completas CAD 3ª ronda
Sbox 0
Sbox 1
Sbox 2
Sbox 3
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 39 -
Figura 10 Evaluaciones SBox-5-7 CAD 3ª ronda
Se puede apreciar la irregularidad de la función fitness debido a la no linealidad
de la función de cifrado f y por tanto de las propias SBoxes. Esto hace que la
minimización del fitness con un AG sea muy complicada ya que claves con
similitud en bits del 95%, provocan cambios drásticos en el valor fitness y por
tanto en el propio texto descifrado.
En cuanto a tiempos computacionales, el AG en este caso apenas tarda en
encontrar la clave óptima. Debido a que el conjunto factible es casi mínimo los
tiempos se han calculado en un orden de décimas de segundo.
3.3 Segundo Caso de Estudio.
3.3.1 Introducción.
Tal y como se ha visto, las distribuciones obtenidas mediante el CAD son “poco
optimizables” desde el punto de vista de un AG, al no haber un claro gradiente
de optimización en ninguna de las SBoxes (ver Figura 9 y Figura 10). Esto
parece indicar que, sin ninguna modificación adicional de la función fitness, no
0
200
400
600
800
1000
1 6 11 16 21 26 31 36 41 46 51 56 61
Fortaleza
Clave
Distribuciones completas CAD 3ª ronda
Sbox 4
Sbox 5
Sbox 6
Sbox 7
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 40 -
existe ventaja computacional en la aplicación del AG al compararlo con una
búsqueda exhaustiva en las subclaves de la última ronda. Por otro lado, los
conjuntos factibles de claves para cada una de las SBoxes considerados en el
caso estudio 1 son demasiado cortos para valorar la eficacia de un AG. Por ello
este segundo caso tiene el propósito de analizar la eficacia del AG ante un
aumento considerable del conjunto factible de posibles claves {K}, y tratando de
modificar la función fitness para el apuntamiento de gradientes. Por
simplicidad se prescinde del enfoque del CAD y se opta por uno más directo,
de manera que se han considerado 2 SBoxes de manera conjunta en lugar de las
8 analizadas en el caso anterior.
3.3.2 Descripción del nuevo enfoque cifrado y descifrado
Debido a que los AG mejoran su rendimiento cuanto mayor sea su espacio de
búsqueda, en este nuevo caso se ha modificado ligeramente el cifrado y
descifrado explicado en 2.1.2. Para aumentar el conjunto factible de claves se
reduce el número de SBoxes de f (ver Figura 4) pasando a 2 SBoxes, pero
considerando la entrada de ambas de manera conjunta y eliminando la tabla de
selección E. De esta manera, y como cada SBox tiene 6 bits de entrada, el
algoritmo de cifrado trabaja con una entrada y una clave de 12 bits. El nuevo
conjunto factible de claves K pasa por lo tanto a ser de 212=4096.
Adicionalmente, en este nuevo caso de estudio se han considerado claves
continuas, como se verá más adelante, de modo que la parte entera y la función
techo de cada clave continúa serán las claves candidatas finales a evaluar. El
criptoanálisis se realiza probando el nuevo conjunto factible de claves {k}
descifrando el conjunto de salidas {Y3}, igual que en el caso anterior.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 41 -
3.3.3 Especificaciones AG
En este apartado se detallan las especificaciones del AG para el segundo caso de
estudio.
Codificación: La codificación de los individuos del nuevo conjunto factible
sigue siendo binaria, aunque la representación de las claves se esté
considerando como números continuos. El AG aplica parte de los
operadores genéticos (por ejemplo la mutación) considerando los
individuos como binarios, y otra parte (como el cruce) tratándolos como
variables continuas.
Población inicial: La población inicial sigue siendo aleatoria, pero se ha
incrementado a un total de 40 individuos. Adicionalmente se ha
realizado de manera que los elementos aleatorios no se repitan y queden
distribuidos a lo largo de todo el conjunto factible.
Funcion Fitness: La omisión del enfoque del CAD obliga a modificar la
función fitness del AG al no existir tablas de distribuciones teóricas ni
pares diferenciales. La nueva función fitness de cada una de las claves
consiste en calcular el número de bits coincidentes entre todas las
entradas {X} de la ronda y el descifrado de sus correspondientes salidas
{Y}. Se define pues dicha función fitness de la siguiente manera:
z
j
jnKG0
)(
(8)
donde nj es el número de bits coincidentes entre la entrada j de la ronda,
y la salida j descifrada usando la clave K que se está evaluando. Con
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 42 -
objeto de apuntar los valores fitness para cada una de las claves de tal
manera que pueda encontrarse alguna dirección de optimización, se han
aplicado sobre la función fitness anterior las siguientes ecuaciones:
mxpx
mxpxKH
|)(
|)()(
2
(9)
donde x es el valor fitness de la clave K y p el valor medio del conjunto
de valores fitness obtenidos por (8) para la clave K. De esta forma, se
consigue que los valles y puntas de la grafica sean mucho mas abruptos,
apuntando así las claves con valores fitness mejores.
Si juntamos (8) con (9), la nueva función fitness queda de la siguiente
manera:
mxpKG
mxpKGKGHKF
|))((
|))(())(()(
2
2
(10)
Selección: La probabilidad de selección de cada individuo de la población
se calcula según (6) (al ser un problema de maximización) y teniendo en
cuenta la función fitness (10).
Cruce y mutación: Aunque las claves sean continuas el cruce no se ve
afectado, cada hijo nuevo se obtiene como la media simple de los dos
padres seleccionados. De esta manera el hijo queda dentro del conjunto
delimitado por los dos padres y sigue siendo una variable continua. La
mutación usada es de punto único, y se aplica únicamente a la parte
entera de la clave continua. El nuevo individuo se forma cogiendo la
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 43 -
mutación obtenida y sumándole la parte decimal del individuo original,
por lo que también sigue siendo una variable continua.
Claves continuas
Como se comentó en la introducción, en este caso de estudio el AG trabaja con
claves continuas, por lo que es preciso especificar cómo se realiza la evaluación
fitness de dichas claves. La idea es que al trabajar con valores continuos es
posible encontrar valores de continuidad en el gradiente que permitan, en
principio (pues es verdad que la región factible crece si se la compara con claves
enteras), mejorar la búsqueda de soluciones.
Para evaluar cada clave continua K se calculan los valores fitness de su parte
entera Kinf así como de su entero inmediato superior Ksup según (10). Con los dos
valores fitness obtenidos se calcula finalmente la interpolación lineal delimitado
por los puntos (Kinf,F(Kinf)) y (Ksup,F(Ksup)) es decir:
sup
inf inf inf sup inf( ) F( ) (K )((F( )-F( ))/( ))H K K K K K K K (11)
A continuación se expone un ejemplo para ver el proceso de construcción de la
función fitness para la población inicial.
En la Figura 11 se pueden ver los valores G determinados por (8)
correspondientes a las partes superior e inferior . Como se puede ver la
distribución es muy irregular y no tiene picos ni valles claros.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 44 -
Figura 11 Distribución valores fitness parte inferior y superior 40 claves
Para solucionar este problema, en la Figura 12 se muestra en el mismo color
azul la Figura 11 modificada según (10), donde se puede observar que quedan
resaltados los picos y valles más pronunciados. También se observa que en la
serie azul hay claves que toman valores negativos, dada la naturaleza de (9),
por lo que se ha desplazado hacia arriba respecto al eje Y dando lugar a la serie
roja, para que todas las fortalezas sean positivas, de manera que la peor ocurra
con valor 0 (hay que tener en cuenta que en este caso el problema es de
maximización dado que lo que se trata es de maximizar el número de aciertos
en la desencriptación de la ronda).
0
10000
20000
30000
40000
50000
60000
10 544 1097.37 1589 2056 2515 3088 3530
Fortaleza
Claves
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 45 -
Figura 12 Comparativa distribuciones fitness modificadas
La Figura 13 muestra los valores interpolados según (11) que definen el valor
fitness de cada una de las claves de la población.
Figura 13 Distribución valores fitness interpolados conjunto 40 claves continuas
Es importante tener en cuenta que, gracias a la no linealidad de las SBoxes, que
se mantiene en este segundo caso de estudio, el cambio de un bit en la clave
-5000000
0
50000000
10000000
15000000
20000000
10 544 1097.37 1589 2056 2515 3088 3530
Fortaleza
Claves
0
10000000
20000000
30000000
40000000
50000000
60000000
70000000
80000000
90000000
10000000
10 1097 2056 3088
Fortaleza
Claves
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 46 -
hace que los resultados difieran mucho, lo que se reflejaba en los valores fitness
del primer caso de estudio y se sigue manteniendo en este nuevo caso, haciendo
que los fitness sigan siendo poco suaves.
Para hacerse una idea de la poca efectividad de un AG con este tipo de
distribuciones es posible hacer una comparativa simple en términos de
computación. En el caso de un recorrido secuencial del conjunto factible de
claves suponiendo una media entre 10 ejecuciones con una clave aleatoria que
caiga a lo largo del todo el conjunto, se tardan unos 5 segundos 6 centésimas
5 milésimas. Por otro lado el AG tarda de media más de 20 segundos, con un
índice de mutación elevado, debido a la poca inclinación a la optimización de
las distribuciones obtenidas y el propio proceso interno del AG.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 47 -
4 CONCLUSIONES
Este proyecto ha permitido concluir de una manera clara y contundente que el
cifrado de Feistel y en general los cifrados en bloque son una manera muy
segura de mantener el secreto en las comunicaciones. El nivel de no linealidad
que se obtiene en las salidas del cifrado se ha probado que es altísimo y no es
posible obtener información de la clave a partir de las salidas cifradas si no es a
través de la fuerza bruta.
En el caso de estudio 1 se ha comprobado que el CAD funciona bien en el
criptoanálisis de cifrados en bloque, en concreto el planteado para 3 rondas, sin
embargo los valores fitness obtenidos en el CAD de la ronda 3 hacen que una
aproximación con un AG para reducir el barrido del conjunto factible de claves
sea muy difícil. Las distribuciones para cada una de las SBoxes son
completamente irregulares y esto hace que el AG no avance hacia la solución
óptima y se convierta en una solución peor que la búsqueda exhaustiva.
En el caso de estudio 2 se ha ampliado el conjunto factible para contrastar si el
AG es más eficiente que una búsqueda exhaustiva en un problema real. Con
objeto de mejorar la eficiencia, se ha cambiado la función fitness del caso
anterior para buscar una relación más directa entre la bondad de un individuo
del AG y su valor fitness. Sin embargo, la no linealidad de las salidas se
mantiene haciendo inalcanzable la supuesta mejora por la aplicación del AG, de
manera que una búsqueda exhaustiva, con los conjuntos factibles asumidos en
los casos de estudio vistos, es del orden de un 65% más rápida en términos de
computación que los AG propuestos. Esto es debido a que el AG acaba casi
convirtiéndose en una búsqueda secuencial, recurriendo a un nivel de mutación
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 48 -
muy elevado y asumiendo los propios costes en tiempos de computación
adicionales que requiere el propio algoritmo.
Por lo tanto, se puede concluir que en ambos casos los AG dependen de la
suerte en la inicialización aleatoria de las poblaciones, para acercarse a la clave
óptima, y que por tanto una búsqueda exhaustiva aleatoria es si no igual, más
eficiente que la búsqueda por AG. Esta conclusión puede parecer de poco valor
científico pero echa por tierra gran parte de los trabajos en los que se ha
aplicado un AG al descifrado de Feistel (véanse por ejemplo [AYMA07],
[LASK06], [SONG07], [ZHAN07]).
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 49 -
5 FUTUROS DESARROLLOS
A lo largo de este proyecto se ha estudiado con un nivel de profundidad alto el
cifrado en bloque de Feistel, el criptoanálisis diferencial (CAD), y los
Algoritmos Genéticos (AG) planteados como mejora de los dos primeros
modelos teóricos mencionados. Se han propuesto, además, dos casos de estudio
con variaciones entre ellos que actúan como evaluadores de las técnicas
anteriores. A continuación se proponen varias mejoras que se podrían llevar a
cabo en un desarrollo futuro, con el objetivo de ampliar el estudio y la mejora
del proyecto actual así como para confirmar aún más las conclusiones
obtenidas.
Concatenación parejas de diferenciales SBoxes
Como se ha visto en la sección 2.2, el CAD se aplica a la última ronda del
descifrado, buscando, al descifrar la ronda n, obtener bits de la clave K. En este
proyecto solo se realiza el descifrado de una ronda, por lo que solo se utilizan
las diferencias de entrada y de salida correspondientes a esa ronda. La
evolución lógica de este planteamiento sería concatenar las diferencias de
entrada y de salida a lo largo de varias rondas de cifrado y analizar la
probabilidad con la que se dan unas determinadas diferencias características en
la salida n del cifrado.
Es importante tener en cuenta que en el desarrollo de este proyecto se han
usado para el CAD las distribuciones teóricas para cada una de las SBoxes
(conociendo todos los posibles conjuntos de entradas y salidas a cada una de
ellas), por lo que una posible línea de continuación sería realizar un estudio
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 50 -
donde se conocen un número limitado de entradas y salidas el sistema de
cifrado.
Combinación entradas y salidas SBoxes
En el caso de estudio dos se ha visto cómo concatenando las entradas y salidas
de las dos primeras SBoxes, se logra un conjunto factible mucho más grande (
122 ) para aprovechar bien la potencia de un AG.
Combinando SBoxes se puede llegar a considerar un conjunto factible de claves
mucho mayor como por ejemplo del orden de 248=28147497670656 si la clave K
es de 48 bits. Esto podría afianzar más la conclusión principal de este trabajo
que ha permitido demostrar la ineficiencia de los AG en la mejora computación
en el criptoanálisis del cifrador de Feistel.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 51 -
ANEXO A TABLAS MAPEO SBOXES
Especificadas a continuación se encuentran las tablas para el mapeo de las 8
SBoxes del cifrado de Feistel planteado en este proyecto. En cada ronda del
cifrado se usan las tablas para las SBoxes, que son las mismas para cada una de
las rondas del cifrado.
S1 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Tabla SBox-1.
S2 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
Tabla SBox-2.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 52 -
S3 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Tabla SBox-3.
S4 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
Tabla SBox-4.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 53 -
S5 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Tabla SBox-5.
S6 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
Tabla SBox-6.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 54 -
S7 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
Tabla SBox-7.
S8 Columnas
Filas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Tabla SBox-8.
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 55 -
ANEXO B TABLAS DISTRIBUCIONES DIFERENCIALES
CAD
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 6 0 2 4 4 0 10 12 4 10 6 2 4
2 0 0 0 8 0 4 4 4 0 6 8 6 12 6 4 2
3 14 4 2 2 10 6 4 2 6 4 4 0 2 2 2 0
4 0 0 0 6 0 10 10 6 0 4 6 4 2 8 6 2
5 4 8 6 2 2 4 4 2 0 4 4 0 12 2 4 6
6 0 4 2 4 8 2 6 2 8 4 4 2 4 2 0 12
7 2 4 10 4 0 4 8 4 2 4 8 2 2 2 4 4
8 0 0 0 12 0 8 8 4 0 6 2 8 8 2 2 4
9 10 2 4 0 2 4 6 0 2 2 8 0 10 0 2 12
10 0 8 6 2 2 8 6 0 6 4 6 0 4 0 2 10
11 2 4 0 10 2 2 4 0 2 6 2 6 6 4 2 12
12 0 0 0 8 0 6 6 0 0 6 6 4 6 6 14 2
13 6 6 4 8 4 8 2 6 0 6 4 6 0 2 0 2
14 0 4 8 8 6 6 4 0 6 6 4 0 0 4 0 8
15 2 0 2 4 4 6 4 2 4 8 2 2 2 6 8 8
16 0 0 0 0 0 0 2 14 0 6 6 12 4 6 8 6
17 6 8 2 4 6 4 8 6 4 0 6 6 0 4 0 0
18 0 8 4 2 6 6 4 6 6 4 2 6 6 0 4 0
19 2 4 4 6 2 0 4 6 2 0 6 8 4 6 4 6
20 0 8 8 0 10 0 4 2 8 2 2 4 4 8 4 0
21 0 4 6 4 2 2 4 10 6 2 0 10 0 4 6 4
22 0 8 10 8 0 2 2 6 10 2 0 2 0 6 2 6
23 4 4 6 0 10 6 0 2 4 4 4 6 6 6 2 0
24 0 6 6 0 8 4 2 2 2 4 6 8 6 6 2 2
25 2 6 2 4 0 8 4 6 10 4 0 4 2 8 4 0
26 0 6 4 0 4 6 6 6 6 2 2 0 4 4 6 8
27 4 4 2 4 10 6 6 4 6 2 2 4 2 2 4 2
28 0 10 10 6 6 0 0 12 6 4 0 0 2 4 4 0
29 4 2 4 0 8 0 0 2 10 0 2 6 6 6 14 0
30 0 2 6 0 14 2 0 0 6 4 10 8 2 2 6 2
31 2 4 10 6 2 2 2 8 6 8 0 0 0 4 6 4
32 0 0 0 10 0 12 8 2 0 6 4 4 4 2 0 12
33 0 4 2 4 4 8 10 0 4 4 10 0 4 0 2 8
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 56 -
34 10 4 6 2 2 8 2 2 2 2 6 0 4 0 4 10
35 0 4 4 8 0 2 6 0 6 6 2 10 2 4 0 10
36 12 0 0 2 2 2 2 0 14 14 2 0 2 6 2 4
37 6 4 4 12 4 4 4 10 2 2 2 0 4 2 2 2
38 0 0 4 10 10 10 2 4 0 4 6 4 4 4 2 0
39 10 4 2 0 2 4 2 0 4 8 0 4 8 8 4 4
40 12 2 2 8 2 6 12 0 0 2 6 0 4 0 6 2
41 4 2 2 10 0 2 4 0 0 14 10 2 4 6 0 4
42 4 2 4 6 0 2 8 2 2 14 2 6 2 6 2 2
43 12 2 2 2 4 6 6 2 0 2 6 2 6 0 8 4
44 4 2 2 4 0 2 10 4 2 2 4 8 8 4 2 6
45 6 2 6 2 8 4 4 4 2 4 6 0 8 2 0 6
46 6 6 2 2 0 2 4 6 4 0 6 2 12 2 6 4
47 2 2 2 2 2 6 8 8 2 4 4 6 8 2 4 2
48 0 4 6 0 12 6 2 2 8 2 4 4 6 2 2 4
49 4 8 2 10 2 2 2 2 6 0 0 2 2 4 10 8
50 4 2 6 4 4 2 2 4 6 6 4 8 2 2 8 0
51 4 4 6 2 10 8 4 2 4 0 2 2 4 6 2 4
52 0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6
53 2 2 4 0 8 0 0 0 14 4 6 8 0 2 14 0
54 2 6 2 2 8 0 2 2 4 2 6 8 6 4 10 0
55 2 2 12 4 2 4 4 10 4 4 2 6 0 2 2 4
56 0 6 2 2 2 0 2 2 4 6 4 4 4 6 10 10
57 6 2 2 4 12 6 4 8 4 0 2 4 2 4 4 0
58 6 4 6 4 6 8 0 6 2 2 6 2 2 6 4 0
59 2 6 4 0 0 2 4 6 4 6 8 6 4 4 6 2
60 0 10 4 0 12 0 4 2 6 0 4 12 4 4 2 0
61 0 8 6 2 2 6 0 8 4 4 0 4 0 12 4 4
62 4 8 2 2 2 4 4 14 4 2 0 2 0 8 4 4
63 4 8 4 2 4 0 2 4 4 2 4 8 8 6 2 2
Tabla 6 Distribución completa frecuencias diferenciales SBox-1
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 4 0 2 6 4 0 14 8 6 8 4 6 2
2 0 0 0 2 0 4 6 4 0 0 4 6 10 10 12 6
3 4 8 4 8 4 6 4 2 4 2 2 4 6 2 0 4
4 0 0 0 0 0 6 0 14 0 6 10 4 10 6 4 4
5 2 0 4 8 2 4 6 6 2 0 8 4 2 4 10 2
6 0 12 6 4 6 4 6 2 2 10 2 8 2 0 0 0
7 4 6 6 4 2 4 4 2 6 4 2 4 4 6 0 6
8 0 0 0 4 0 4 0 8 0 10 16 6 6 0 6 4
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 57 -
9 14 2 4 10 2 8 2 6 2 4 0 0 2 2 2 4
10 0 6 6 2 10 4 10 2 6 2 2 4 2 2 4 2
11 6 2 2 0 2 4 6 2 10 2 0 6 6 4 4 8
12 0 0 0 4 0 14 0 10 0 6 2 4 4 8 6 6
13 6 2 6 2 10 2 0 4 0 10 4 2 8 2 2 4
14 0 6 12 8 0 4 2 0 8 2 4 4 6 2 0 6
15 0 8 2 0 6 6 8 2 4 4 4 6 8 0 4 2
16 0 0 0 8 0 4 10 2 0 2 8 10 0 10 6 4
17 6 6 4 6 4 0 6 4 8 2 10 2 2 4 0 0
18 0 6 2 6 2 4 12 4 6 4 0 4 4 6 2 2
19 4 0 4 0 8 6 6 0 0 2 0 6 4 8 2 14
20 0 6 6 4 10 0 2 12 6 2 2 2 4 4 2 2
21 6 8 2 0 8 2 0 2 2 2 2 2 2 14 10 2
22 0 8 6 4 2 2 4 2 6 4 6 2 6 0 6 6
23 6 4 8 6 4 4 0 4 6 2 4 4 4 2 4 2
24 0 6 4 6 10 4 0 2 4 8 0 0 4 8 2 6
25 2 4 6 4 4 2 4 2 6 4 6 8 0 6 4 2
26 0 6 8 4 2 4 2 2 8 2 2 6 2 4 4 8
27 0 6 4 4 0 12 6 4 2 2 2 4 4 2 10 2
28 0 4 6 6 12 0 4 0 10 2 6 2 0 0 10 2
29 0 6 2 2 6 0 4 16 4 4 2 0 0 4 6 8
30 0 4 8 2 10 6 6 0 8 4 0 2 4 4 0 6
31 4 2 6 6 2 2 2 4 8 6 10 6 4 0 0 2
32 0 0 0 2 0 12 10 4 0 0 0 2 14 2 8 10
33 0 4 6 8 2 10 4 2 2 6 4 2 6 2 0 6
34 4 12 8 4 2 2 0 0 2 8 8 6 0 6 0 2
35 8 2 0 2 8 4 2 6 4 8 2 2 6 4 2 4
36 10 4 0 0 0 4 0 2 6 8 6 10 8 0 2 4
37 6 0 12 2 8 6 10 0 0 8 2 6 0 0 2 2
38 2 2 4 4 2 2 10 14 2 0 4 2 2 4 6 4
39 6 0 0 2 6 4 2 4 4 4 8 4 8 0 6 6
40 8 0 8 2 4 12 2 0 2 6 2 0 6 2 0 10
41 0 2 4 10 2 8 6 4 0 10 0 2 10 0 2 4
42 4 0 4 8 6 2 4 4 6 6 2 6 2 2 4 4
43 2 2 6 4 0 2 2 6 2 8 8 4 4 4 8 2
44 10 6 8 6 0 6 4 4 4 2 4 4 0 0 2 4
45 2 2 2 4 0 0 0 2 8 4 4 6 10 2 14 4
46 2 4 0 2 10 4 2 0 2 2 6 2 8 8 10 2
47 12 4 6 8 2 6 2 8 0 4 0 2 0 8 2 0
48 0 4 0 2 4 4 8 6 10 6 2 12 0 0 0 6
49 0 10 2 0 6 2 10 2 6 0 2 0 6 6 4 8
50 8 4 6 0 6 4 4 8 4 6 8 0 2 2 2 0
51 2 2 6 10 2 0 0 6 4 4 12 8 4 2 2 0
52 0 12 6 4 6 0 4 4 4 0 4 6 4 2 4 4
53 0 12 4 6 2 4 4 0 10 0 0 8 0 8 0 6
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 58 -
54 8 2 4 0 4 0 4 2 0 8 4 2 6 16 2 2
55 6 2 2 2 6 6 4 8 2 2 6 2 2 2 4 8
56 0 8 8 10 6 2 2 0 4 0 4 2 4 0 4 10
57 0 2 0 0 8 0 10 4 10 0 8 4 4 4 4 6
58 4 0 2 8 4 2 2 2 4 8 2 0 4 10 10 2
59 16 4 4 2 8 2 2 6 4 4 4 2 0 2 2 2
60 0 2 6 2 8 4 6 0 10 2 2 4 4 10 4 0
61 0 16 10 2 4 2 4 2 8 0 0 8 0 6 2 0
62 4 4 0 10 2 4 2 14 4 2 6 6 0 0 6 0
63 4 0 0 2 0 8 2 4 0 2 4 4 4 14 10 6
Tabla 7 Distribución completa frecuencias diferenciales SBox-2
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 2 0 4 2 12 0 14 0 4 8 2 6 10
2 0 0 0 2 0 2 0 8 0 4 12 10 4 6 8 8
3 8 6 10 4 8 6 0 6 4 4 0 0 0 4 2 2
4 0 0 0 4 0 2 4 2 0 12 8 4 6 8 10 4
5 6 2 4 8 6 10 6 2 2 8 2 0 2 0 4 2
6 0 10 6 6 10 0 4 12 2 4 0 0 6 4 0 0
7 2 0 0 4 4 4 4 2 10 4 4 8 4 4 4 6
8 0 0 0 10 0 4 4 6 0 6 6 6 6 0 8 8
9 10 2 0 2 10 4 6 2 0 6 0 4 6 2 4 6
10 0 10 6 0 14 6 4 0 4 6 6 0 4 0 2 2
11 2 6 2 10 2 2 4 0 4 2 6 0 2 8 14 0
12 0 0 0 8 0 12 12 4 0 8 0 4 2 10 2 2
13 8 2 8 0 0 4 2 0 2 8 14 2 6 2 4 2
14 0 4 4 2 4 2 4 4 10 4 4 4 4 4 2 8
15 4 6 4 6 2 2 4 8 6 2 6 2 0 6 2 4
16 0 0 0 4 0 12 4 8 0 4 2 6 2 14 0 8
17 8 2 2 6 4 0 2 0 8 4 12 2 10 0 2 2
18 0 2 8 2 4 8 0 8 8 0 2 2 4 2 14 0
19 4 4 12 0 2 2 2 10 2 2 2 2 4 4 4 8
20 0 6 4 4 6 4 6 2 8 6 6 2 2 0 0 8
21 4 8 2 8 2 4 8 0 4 2 2 2 2 6 8 2
22 0 6 10 2 8 4 2 0 2 2 2 8 4 6 4 4
23 0 6 6 0 6 2 4 4 6 2 2 10 6 8 2 0
24 0 8 4 6 6 0 6 2 4 0 4 2 10 0 6 6
25 4 2 4 8 4 2 10 2 2 2 6 8 2 6 0 2
26 0 8 6 4 4 0 6 4 4 8 0 10 2 2 2 4
27 4 10 2 0 2 4 2 4 8 2 2 8 4 2 8 2
28 0 6 8 8 4 2 8 0 12 0 10 0 4 0 2 0
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 59 -
29 0 2 0 6 2 8 4 6 2 0 4 2 4 10 0 14
30 0 4 8 2 4 6 0 4 10 0 2 6 4 8 4 2
31 0 6 8 0 10 6 4 6 4 2 2 10 4 0 0 2
32 0 0 0 0 0 4 4 8 0 2 2 4 10 16 12 2
33 10 8 8 0 8 4 2 4 0 6 6 6 0 0 2 0
34 12 6 4 4 2 4 10 2 0 4 4 2 4 4 0 2
35 2 2 0 6 0 2 4 0 4 12 4 2 6 4 8 8
36 4 8 2 12 6 4 2 10 2 2 2 4 2 0 4 0
37 6 0 2 0 8 2 0 2 8 8 2 2 4 4 10 6
38 6 2 0 4 4 0 4 0 4 2 14 0 8 10 0 6
39 0 2 4 16 8 6 6 6 0 2 4 4 0 2 2 2
40 6 2 10 0 6 4 0 4 4 2 4 8 2 2 8 2
41 0 2 8 4 0 4 0 6 4 10 4 8 4 4 4 2
42 2 6 0 4 2 4 4 6 4 8 4 4 4 2 4 6
43 10 2 6 6 4 4 8 0 4 2 2 0 2 4 4 6
44 10 4 6 2 4 2 2 2 4 10 4 4 0 2 6 2
45 4 2 4 4 4 2 4 16 2 0 0 4 4 2 6 6
46 4 0 2 10 0 6 10 4 2 6 6 2 2 0 2 8
47 8 2 0 0 4 4 4 2 6 4 6 2 4 8 4 6
48 0 10 8 6 2 0 4 2 10 4 4 6 2 0 6 0
49 2 6 2 0 4 2 8 8 2 2 2 0 2 12 6 6
50 2 0 4 8 2 8 4 4 8 4 2 8 6 2 0 2
51 4 4 6 8 6 6 0 2 2 2 6 4 12 0 0 2
52 0 6 2 2 16 2 2 2 12 2 4 0 4 2 0 8
53 4 6 0 10 8 0 2 2 6 0 0 6 2 10 2 6
54 4 4 4 4 0 6 6 4 4 4 4 4 0 6 2 8
55 4 8 2 4 2 2 6 0 2 4 8 4 10 0 6 2
56 0 8 12 0 2 2 6 6 2 10 2 2 0 8 0 4
57 2 6 4 0 6 4 6 4 8 0 4 4 2 4 8 2
58 6 0 2 2 4 6 4 4 4 2 2 6 12 2 6 2
59 2 2 6 0 0 10 4 8 4 2 4 8 4 4 0 6
60 0 2 4 2 12 2 0 6 2 0 2 8 4 6 4 10
61 4 6 8 6 2 2 2 2 10 2 6 6 2 4 2 0
62 8 6 4 4 2 10 2 0 2 2 4 2 4 2 10 2
63 2 6 4 0 0 10 8 2 2 8 6 4 6 2 0 4
Tabla 8 Distribución completa frecuencias diferenciales SBox-3
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 16 16 0 0 16 16 0 0 0 0 0
2 0 0 0 8 0 4 4 8 0 4 4 8 8 8 8 0
3 8 6 2 0 2 4 8 2 6 0 4 6 0 6 2 8
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 60 -
4 0 0 0 8 0 0 12 4 0 12 0 4 8 4 4 8
5 4 2 2 8 2 12 0 2 2 0 12 2 8 2 2 4
6 0 8 8 4 8 8 0 0 8 0 8 0 4 0 0 8
7 4 2 6 4 6 0 16 6 2 0 0 2 4 2 6 4
8 0 0 0 4 0 8 4 8 0 4 8 8 4 8 8 0
9 8 4 4 4 4 0 8 4 4 0 0 4 4 4 4 8
10 0 6 6 0 6 4 4 6 6 4 4 6 0 6 6 0
11 0 12 0 8 0 0 0 0 12 0 0 12 8 12 0 0
12 0 0 0 4 0 8 4 8 0 4 8 8 4 8 8 0
13 8 4 4 4 4 0 0 4 4 8 0 4 4 4 4 8
14 0 6 6 4 6 0 4 6 6 4 0 6 4 6 6 0
15 0 6 6 4 6 4 0 6 6 0 4 6 4 6 6 0
16 0 0 0 0 0 8 12 4 0 12 8 4 0 4 4 8
17 4 2 2 16 2 4 0 2 2 0 4 2 16 2 2 4
18 0 0 0 8 0 4 4 8 0 4 4 8 8 8 8 0
19 8 2 6 0 6 4 0 6 2 8 4 2 0 2 6 8
20 0 8 8 0 8 0 8 0 8 8 0 0 0 0 0 16
21 8 4 4 0 4 8 0 4 4 0 8 4 0 4 4 8
22 0 8 8 4 8 8 0 0 8 0 8 0 4 0 0 8
23 4 6 2 4 2 0 0 2 6 16 0 6 4 6 2 4
24 0 8 8 8 8 4 0 0 8 0 4 0 8 0 0 8
25 4 4 4 0 4 4 16 4 4 0 4 4 0 4 4 4
26 0 6 6 4 6 0 4 6 6 4 0 6 4 6 6 0
27 0 6 6 4 6 4 0 6 6 0 4 6 4 6 6 0
28 0 8 8 8 8 4 0 0 8 0 4 0 8 0 0 8
29 4 4 4 0 4 4 0 4 4 16 4 4 0 4 4 4
30 0 6 6 0 6 4 4 6 6 4 4 6 0 6 6 0
31 0 0 12 8 12 0 0 12 0 0 0 0 8 0 12 0
32 0 0 0 8 0 0 0 12 0 0 0 12 8 12 12 0
33 0 4 8 0 8 4 8 8 4 0 4 4 0 4 8 0
34 8 2 2 0 2 4 8 6 2 8 4 6 0 6 6 0
35 4 6 2 8 2 4 0 2 6 0 4 6 8 6 2 4
36 0 6 6 4 6 4 0 6 6 0 4 6 4 6 6 0
37 0 8 4 4 4 0 0 4 8 8 0 8 4 8 4 0
38 0 6 6 0 6 4 8 2 6 8 4 2 0 2 2 8
39 4 6 2 8 2 4 0 2 6 0 4 6 8 6 2 4
40 16 4 4 0 4 4 4 4 4 4 4 4 0 4 4 0
41 0 6 2 8 2 4 0 2 6 8 4 6 8 6 2 0
42 0 2 2 16 2 4 4 2 2 4 4 2 16 2 2 0
43 8 0 4 0 4 8 16 4 0 0 8 0 0 0 4 8
44 8 4 4 4 4 0 8 4 4 8 0 4 4 4 4 0
45 4 2 6 4 6 8 0 6 2 0 8 2 4 2 6 4
46 16 0 0 0 0 16 0 0 0 0 16 0 0 0 0 16
47 16 0 0 0 0 0 16 0 0 16 0 0 0 0 0 16
48 0 6 6 4 6 4 0 6 6 0 4 6 4 6 6 0
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 61 -
49 0 8 4 4 4 0 0 4 8 8 0 8 4 8 4 0
50 16 6 6 4 6 0 4 2 6 4 0 2 4 2 2 0
51 0 2 6 4 6 8 8 6 2 0 8 2 4 2 6 0
52 0 12 12 8 12 0 0 0 12 0 0 0 8 0 0 0
53 0 4 8 0 8 4 8 8 4 0 4 4 0 4 8 0
54 0 2 2 4 2 0 4 6 2 4 0 6 4 6 6 16
55 0 2 6 4 6 8 8 6 2 0 8 2 4 2 6 0
56 0 4 4 0 4 4 4 4 4 4 4 4 0 4 4 16
57 0 6 2 8 2 4 0 2 6 8 4 6 8 6 2 0
58 0 4 4 0 4 8 8 4 4 8 8 4 0 4 4 0
59 16 4 4 0 4 0 0 4 4 0 0 4 0 4 4 16
60 0 4 4 4 4 0 8 4 4 8 0 4 4 4 4 8
61 4 2 6 4 6 8 0 6 2 0 8 2 4 2 6 4
62 0 2 2 8 2 12 4 2 2 4 12 2 8 2 2 0
63 8 4 0 8 0 0 0 0 4 16 0 4 8 4 0 8
Tabla 9 Distribución completa frecuencias diferenciales SBox-4
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 4 0 10 8 6 0 4 2 2 12 10 2 4
2 0 0 0 4 0 10 6 4 0 6 4 2 4 8 10 6
3 8 2 4 6 4 4 2 2 6 8 6 4 4 0 2 2
4 0 0 0 8 0 4 10 6 0 6 6 4 8 6 0 6
5 12 2 0 4 0 4 8 2 4 0 16 2 0 2 0 8
6 0 8 4 6 4 6 2 2 4 4 6 0 6 0 2 10
7 2 0 4 8 4 2 6 6 2 8 6 2 2 0 6 6
8 0 0 0 2 0 8 10 4 0 4 10 4 8 4 4 6
9 8 6 0 4 0 6 6 2 2 10 2 8 6 2 0 2
10 0 6 8 6 0 8 0 0 8 10 4 2 8 0 0 4
11 4 2 2 4 8 10 6 4 2 6 2 2 6 2 2 2
12 0 0 0 10 0 2 10 2 0 6 10 6 6 6 2 4
13 10 4 2 2 0 6 16 0 0 2 10 2 2 4 0 4
14 0 6 4 8 4 6 10 2 4 4 4 2 4 0 2 4
15 4 4 0 8 0 2 0 2 8 2 4 2 8 4 4 12
16 0 0 0 0 0 4 4 12 0 2 8 10 4 6 12 2
17 6 6 10 10 4 0 2 6 2 4 0 6 2 4 2 0
18 0 2 4 2 10 4 0 10 8 6 0 6 0 6 6 0
19 0 0 6 2 8 0 0 4 4 6 2 8 2 8 10 4
20 0 12 2 6 4 0 4 4 8 4 4 4 6 2 4 0
21 4 8 0 2 8 0 2 4 2 2 4 2 4 8 8 6
22 0 6 10 2 14 0 2 2 4 4 0 6 0 4 6 4
23 0 6 8 4 8 4 0 2 8 4 0 2 2 8 6 2
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 62 -
24 0 10 8 0 6 4 0 4 4 4 6 4 4 4 0 6
25 0 4 6 2 4 4 2 6 4 2 2 4 12 2 10 0
26 0 2 16 2 12 2 0 6 4 0 0 4 0 4 4 8
27 2 8 12 0 0 2 2 6 8 4 0 6 0 0 8 6
28 0 10 2 6 6 6 6 4 8 2 0 4 4 4 2 0
29 4 6 2 0 8 2 4 6 6 0 8 6 2 4 2 4
30 0 2 6 2 4 0 0 2 12 2 2 6 2 10 10 4
31 0 6 8 4 8 8 0 6 6 2 0 6 0 6 2 2
32 0 0 0 8 0 8 2 6 0 4 4 4 6 6 8 8
33 0 0 0 6 6 2 6 4 6 10 14 4 0 0 4 2
34 14 4 0 10 0 2 12 2 2 2 10 2 0 0 2 2
35 2 0 0 4 2 2 10 4 0 8 8 2 6 8 0 8
36 6 2 8 4 4 4 6 2 2 6 6 2 6 2 2 2
37 6 0 0 8 2 8 2 6 6 4 2 2 4 2 6 6
38 12 0 0 4 0 4 4 4 0 8 4 0 12 8 0 4
39 12 2 0 2 0 12 2 2 4 4 8 4 8 2 2 0
40 2 8 4 6 2 4 6 0 6 6 4 0 2 2 2 10
41 6 4 6 8 8 4 6 2 0 0 2 2 10 0 2 4
42 4 4 0 2 2 4 6 2 0 0 6 4 10 4 4 12
43 4 6 2 6 0 0 12 2 0 4 12 2 6 4 0 4
44 8 6 2 6 4 8 6 0 4 4 0 2 6 0 6 2
45 4 4 0 4 0 6 4 2 4 12 0 4 4 6 4 6
46 6 0 2 4 0 6 6 4 2 10 6 10 6 2 0 0
47 10 4 0 2 2 6 10 2 0 2 2 4 6 2 2 10
48 0 4 8 4 6 4 0 6 10 4 2 4 2 6 4 0
49 0 6 6 4 10 2 0 0 4 4 0 0 4 6 12 6
50 4 6 0 2 6 4 6 0 6 0 4 6 4 10 6 0
51 8 10 0 14 8 0 0 8 2 0 2 4 0 4 4 0
52 0 4 4 2 14 4 0 8 6 8 2 2 0 4 6 0
53 0 4 16 0 8 4 0 4 4 4 0 8 0 4 4 4
54 4 4 4 6 2 2 2 12 2 4 4 8 2 4 4 0
55 4 2 2 2 4 2 0 8 2 2 2 12 6 2 8 6
56 0 4 8 4 12 0 0 8 10 2 0 0 0 4 2 10
57 0 8 12 0 2 2 2 2 12 4 0 8 0 4 4 4
58 0 14 4 0 4 6 0 0 6 2 10 8 0 0 4 6
59 0 2 2 2 4 4 8 6 8 2 2 2 6 14 2 0
60 0 0 10 2 6 0 0 2 6 2 2 10 2 4 10 8
61 0 6 12 2 4 8 0 8 8 2 2 0 2 2 4 4
62 4 4 10 0 2 4 8 8 2 2 0 2 6 8 4 0
63 8 6 6 0 4 2 2 4 4 2 8 6 2 4 6 0
Tabla 10 Distribución completa frecuencias diferenciales SBox-5
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 63 -
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 6 0 2 6 2 0 4 2 4 6 16 14 2
2 0 0 0 2 0 10 6 10 0 2 4 8 6 6 8 2
3 0 8 0 8 0 6 4 6 4 4 4 12 2 4 2 0
4 0 0 0 8 0 0 8 0 0 6 8 10 2 4 10 8
5 10 2 4 4 4 8 8 4 2 2 0 4 0 8 0 4
6 0 8 4 4 8 4 2 2 12 0 2 6 6 2 2 2
7 6 6 4 0 2 10 2 2 2 2 6 6 8 0 6 2
8 0 0 0 6 0 2 16 4 0 2 6 2 4 12 6 4
9 10 4 2 6 0 2 6 2 4 0 8 6 4 4 2 4
10 0 14 4 4 0 2 2 2 10 4 4 4 6 4 2 2
11 4 6 2 0 2 2 12 8 2 2 2 6 8 2 0 6
12 0 0 0 12 0 10 4 6 0 8 4 4 2 12 2 0
13 12 0 2 10 6 4 4 2 4 2 6 0 2 6 0 4
14 0 6 4 0 4 4 10 8 6 2 4 6 2 0 6 2
15 2 2 2 2 6 2 6 2 10 4 8 2 6 4 4 2
16 0 0 0 8 0 8 0 12 0 4 2 6 8 4 6 6
17 6 2 6 4 6 2 6 4 6 6 4 2 4 0 6 0
18 0 8 4 2 0 4 2 0 4 10 6 2 8 6 4 4
19 6 6 12 0 12 2 0 6 6 2 0 4 0 2 4 2
20 0 4 6 2 8 6 0 2 6 10 4 0 2 4 6 4
21 2 2 6 6 4 4 2 6 2 6 8 4 4 0 4 4
22 0 4 14 6 8 4 2 6 2 0 2 0 4 2 0 10
23 2 6 8 0 0 2 0 2 2 6 0 8 8 2 12 6
24 0 4 6 6 8 4 2 2 6 4 6 4 2 4 2 4
25 2 6 0 2 4 4 4 6 4 8 6 4 2 2 6 4
26 0 6 6 0 8 2 4 6 4 2 4 6 2 0 4 10
27 0 4 10 2 4 4 2 6 6 6 2 2 6 6 2 2
28 0 0 8 2 12 2 6 2 8 6 6 2 4 0 4 2
29 2 4 0 6 8 6 0 2 6 8 6 0 2 4 0 10
30 0 10 8 2 8 2 0 2 6 4 2 4 6 4 2 4
31 0 6 6 8 6 4 2 4 4 2 2 0 2 4 2 12
32 0 0 0 0 0 6 6 4 0 4 8 8 4 6 10 8
33 2 8 6 8 4 4 6 6 8 4 0 4 0 2 2 0
34 16 2 4 6 2 4 2 0 6 4 8 2 0 2 2 4
35 0 4 0 4 4 6 10 4 2 2 6 2 4 6 6 4
36 10 8 0 6 12 6 10 4 8 0 0 0 0 0 0 0
37 0 2 4 2 0 4 4 0 4 0 10 10 4 10 6 4
38 2 2 0 12 2 2 6 2 4 4 8 0 6 6 8 0
39 8 4 0 8 2 4 2 4 0 6 2 4 4 8 2 6
40 6 8 4 6 0 4 2 2 4 8 2 6 4 2 2 4
41 2 4 4 0 8 8 6 8 6 4 0 4 4 4 2 0
42 6 0 0 6 6 4 6 8 2 4 0 2 2 4 6 8
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 64 -
43 12 0 4 0 0 4 2 2 2 6 10 6 10 2 4 0
44 4 2 6 0 0 6 8 6 4 2 2 8 4 6 4 2
45 6 2 2 6 6 4 4 2 6 2 4 8 4 2 4 2
46 4 6 2 4 2 4 4 2 4 2 4 6 4 10 4 2
47 10 0 4 8 0 6 6 2 0 4 4 2 6 2 2 8
48 0 12 8 2 0 6 0 0 6 6 0 2 8 2 6 6
49 2 6 10 4 2 2 2 4 6 0 2 6 0 2 4 12
50 4 2 2 8 10 8 8 6 0 2 2 4 4 2 2 0
51 4 2 2 2 6 0 4 0 10 6 6 4 0 4 8 6
52 0 4 4 2 6 4 0 4 6 2 6 4 2 8 0 12
53 6 12 4 2 4 2 2 4 8 2 2 0 6 4 4 2
54 0 2 2 4 4 4 4 0 2 10 12 4 0 10 4 2
55 10 2 2 6 14 2 2 6 2 0 4 6 2 0 4 2
56 0 4 14 0 8 2 0 4 4 4 2 0 8 2 4 8
57 2 4 8 0 6 2 0 6 2 6 4 2 8 6 2 6
58 8 4 0 4 6 2 0 4 6 8 6 0 6 0 4 6
59 0 4 6 6 2 2 2 14 0 12 0 4 2 2 8 0
60 0 6 16 0 2 2 2 8 4 2 0 12 6 2 2 0
61 0 6 2 2 2 6 8 2 4 2 6 2 6 2 4 10
62 4 2 2 4 4 0 6 10 4 2 4 6 6 2 6 2
63 0 4 6 6 4 8 4 0 4 8 4 0 4 8 2 2
Tabla 11 Distribución completa frecuencias diferenciales SBox-6
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 2 0 4 4 14 0 12 4 6 2 6 6 4
2 0 0 0 0 0 12 2 2 0 4 0 4 8 12 6 14
3 8 2 12 2 6 8 6 0 6 4 4 2 2 0 0 2
4 0 0 0 8 0 4 4 8 0 8 8 12 2 6 2 2
5 6 0 0 2 8 0 8 4 0 2 6 0 10 6 6 6
6 0 2 12 0 8 4 8 2 4 4 4 2 6 0 6 2
7 4 6 4 12 0 4 2 0 0 14 2 6 4 0 0 6
8 0 0 0 8 0 0 6 10 0 4 12 4 6 6 0 8
9 10 8 4 8 6 2 2 0 2 6 8 2 0 6 0 0
10 0 10 6 2 12 2 4 0 4 4 6 4 4 0 0 6
11 0 2 2 2 4 8 6 4 4 0 4 2 6 4 2 14
12 0 0 0 4 0 4 8 4 0 2 6 0 14 12 8 2
13 6 6 2 4 2 6 4 6 6 4 8 8 0 2 0 0
14 0 12 10 10 0 2 4 2 8 6 4 2 0 0 2 2
15 2 0 0 0 6 8 8 0 6 2 4 6 8 0 6 8
16 0 0 0 4 0 2 8 6 0 6 4 10 8 4 8 4
17 6 10 10 4 4 2 0 4 4 0 2 8 4 2 2 2
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 65 -
18 0 0 8 8 2 8 2 8 6 4 2 8 0 0 8 0
19 4 4 2 2 8 6 0 2 2 2 0 4 6 8 14 0
20 0 8 6 2 8 8 2 6 4 2 0 2 8 6 0 2
21 4 4 8 2 4 0 4 10 8 2 4 4 4 2 0 4
22 0 6 10 2 2 2 2 4 10 8 2 2 0 4 10 0
23 8 2 4 2 6 4 0 6 4 4 2 2 0 4 8 8
24 0 16 2 2 6 0 6 0 6 2 8 0 6 0 2 8
25 0 8 0 2 4 4 10 4 8 0 6 4 2 6 2 4
26 0 2 4 8 12 4 0 6 4 4 0 2 0 6 4 8
27 0 6 2 6 4 2 4 4 6 4 8 4 2 0 10 2
28 0 8 4 4 2 6 6 6 6 4 6 8 0 2 0 2
29 4 4 4 0 0 2 4 2 4 2 2 4 10 10 8 4
30 0 0 2 2 12 6 2 0 12 2 2 4 2 6 8 4
31 2 2 10 14 2 4 2 4 4 6 0 2 4 8 0 0
32 0 0 0 14 0 8 4 2 0 4 2 8 2 6 0 14
33 4 2 6 2 12 2 4 0 6 4 10 2 4 2 2 2
34 10 6 0 2 4 4 10 0 4 0 12 2 8 0 0 2
35 0 6 2 2 2 4 6 10 0 4 8 2 2 6 0 10
36 4 2 0 6 8 2 6 0 8 2 2 0 8 2 12 2
37 2 0 2 16 2 4 6 4 6 8 2 4 0 6 0 2
38 6 10 0 10 0 6 4 4 2 2 4 6 2 4 2 2
39 4 0 2 0 2 2 14 0 4 6 6 2 12 2 4 4
40 14 4 6 4 4 6 2 0 6 6 2 2 4 0 2 2
41 2 2 0 2 0 8 4 2 4 6 4 4 6 4 12 4
42 2 4 0 0 0 2 8 12 0 8 2 4 8 4 4 6
43 16 6 2 4 6 10 2 2 2 2 2 2 4 2 2 0
44 2 6 6 8 2 2 0 6 0 8 4 2 2 6 8 2
45 6 2 4 2 8 8 2 8 2 4 4 0 2 0 8 4
46 2 4 8 0 2 2 2 4 0 2 8 4 14 6 0 6
47 2 2 2 8 0 2 2 6 4 6 8 8 6 2 0 6
48 0 6 8 2 8 4 4 0 10 4 4 6 0 0 2 6
49 0 8 4 0 6 2 2 6 6 0 0 2 6 4 8 10
50 2 4 0 0 6 4 10 6 6 4 6 2 4 6 2 2
51 0 16 6 8 2 0 2 2 4 2 8 4 0 4 6 0
52 0 4 14 8 2 2 2 4 16 2 2 2 0 2 0 4
53 0 6 0 0 10 8 2 2 6 0 0 8 6 4 4 8
54 2 0 2 2 4 6 4 4 2 2 4 2 4 16 10 0
55 6 6 6 8 4 2 4 4 4 0 6 8 2 4 0 0
56 0 2 2 2 8 8 0 2 2 2 0 6 6 4 10 10
57 4 4 16 8 0 6 4 2 4 4 2 6 0 2 2 0
58 16 6 4 0 2 0 2 6 0 4 8 10 0 0 4 2
59 2 0 0 2 0 4 4 4 2 6 2 6 6 12 12 2
60 0 0 8 0 12 8 2 6 6 4 0 2 2 4 6 4
61 2 4 12 2 2 2 0 4 6 10 2 6 4 2 0 6
62 4 6 6 6 2 0 4 8 2 10 4 6 0 4 2 0
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 66 -
63 14 0 0 0 8 0 6 8 4 2 0 0 4 8 4 6
Tabla 12 Distribución completa frecuencias diferenciales SBox-7
1nY
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 6 0 16 10 0 0 0 6 0 14 6 2 4
2 0 0 0 8 0 10 4 2 0 10 2 4 8 8 6 2
3 6 0 2 8 2 6 4 0 6 6 6 2 2 0 8 6
4 0 0 0 2 0 4 6 12 0 6 8 4 10 4 8 0
5 4 10 6 0 0 2 6 0 4 10 4 6 8 2 0 2
6 0 0 10 4 6 4 4 8 2 6 4 2 4 2 2 6
7 6 2 8 2 8 10 6 6 4 2 0 4 0 0 0 6
8 0 0 0 4 0 6 4 2 0 8 6 10 8 2 2 12
9 8 4 0 6 0 4 4 6 2 4 6 2 12 2 0 4
10 0 0 16 4 6 6 4 0 4 6 4 2 2 0 0 10
11 2 8 0 6 2 6 0 4 4 10 0 2 10 2 6 2
12 0 0 0 2 0 10 10 6 0 6 6 6 2 6 10 0
13 6 0 4 10 2 0 8 6 2 2 6 10 2 2 2 2
14 0 0 6 8 4 8 0 2 10 6 2 4 6 2 4 2
15 8 0 4 2 2 4 2 2 2 6 4 6 0 2 14 6
16 0 0 0 4 0 0 8 12 0 0 8 8 2 10 6 6
17 0 6 4 6 2 2 6 6 4 6 4 6 0 4 4 4
18 0 4 0 8 6 2 8 4 2 4 4 6 2 4 10 0
19 4 2 2 6 8 6 2 2 14 2 2 4 2 2 2 4
20 0 16 4 2 6 0 2 6 4 0 4 6 4 6 4 0
21 0 10 6 0 6 0 2 8 2 2 0 8 2 6 6 6
22 0 12 6 4 6 0 0 0 8 6 6 2 2 6 4 2
23 0 6 8 0 6 2 4 6 6 0 2 6 4 4 2 8
24 0 12 2 2 8 0 8 0 10 4 4 2 4 2 0 6
25 6 4 8 0 8 0 4 2 0 0 12 2 4 6 2 6
26 0 4 6 2 8 8 0 4 8 0 0 0 6 2 0 16
27 2 4 8 10 2 4 2 8 2 4 8 2 0 2 4 2
28 0 12 6 4 6 4 2 2 6 0 4 4 2 10 2 0
29 8 6 0 0 10 0 0 8 10 4 2 2 2 8 4 0
30 0 4 8 6 8 2 4 4 10 2 2 4 2 0 6 2
31 4 2 4 2 6 2 4 0 2 6 2 2 2 16 8 2
32 0 0 0 16 0 4 0 0 0 14 6 4 2 0 4 14
33 0 0 2 10 2 8 10 0 0 6 6 0 10 2 2 6
34 8 0 6 0 6 4 10 2 0 6 8 0 4 4 2 4
35 4 8 0 6 0 4 8 6 2 2 10 4 8 0 0 2
36 4 0 4 8 4 6 2 4 8 6 2 0 0 4 4 8
37 0 4 6 8 2 8 8 0 4 2 4 4 2 2 6 4
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 67 -
38 2 6 0 6 4 4 4 6 6 0 4 4 10 4 2 2
39 6 6 0 0 2 2 6 2 4 4 6 10 2 6 2 6
40 10 2 6 2 4 12 12 0 2 2 4 0 0 0 2 6
41 4 0 0 14 2 10 4 2 8 6 4 0 4 2 2 2
42 8 8 0 2 0 2 4 0 2 6 8 14 2 8 0 0
43 2 2 0 0 4 2 10 4 6 2 4 0 6 4 8 10
44 2 6 6 2 4 6 2 0 2 6 4 0 6 4 10 4
45 8 0 4 4 6 2 0 0 6 8 2 4 6 4 4 6
46 6 2 2 4 2 2 6 12 4 0 4 2 8 8 0 2
47 8 12 4 6 6 4 2 2 2 2 4 2 2 4 0 4
48 0 4 6 2 10 2 2 2 4 8 0 0 8 4 6 6
49 4 6 8 0 4 6 0 4 4 6 10 2 2 4 4 0
50 6 6 6 2 4 6 0 2 0 6 8 2 2 6 6 2
51 6 6 4 2 4 0 0 10 2 2 0 6 8 4 0 10
52 0 2 12 4 10 4 0 4 12 0 2 4 2 2 2 4
53 6 4 4 0 10 0 0 4 10 0 0 4 2 8 8 4
54 4 6 2 2 2 2 6 8 6 4 2 6 0 4 10 0
55 2 2 8 2 4 4 4 2 6 2 0 10 6 10 2 0
56 0 4 8 4 2 6 6 2 4 2 2 4 6 4 4 6
57 4 4 4 8 0 6 0 6 4 8 2 2 2 4 8 2
58 8 8 0 4 2 0 10 4 0 0 0 4 8 6 8 2
59 8 2 6 4 4 4 4 0 6 4 4 6 4 4 4 0
60 0 6 6 6 6 0 0 8 8 2 4 8 4 2 4 0
61 2 2 8 0 10 0 2 12 0 4 0 8 0 2 6 8
62 6 4 0 0 4 4 0 10 6 2 6 12 2 4 0 4
63 0 6 6 0 4 4 6 10 0 6 8 2 0 4 8 0
Tabla 13 Distribución completa frecuencias diferenciales SBox-8
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 68 -
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 69 -
ÍNDICE DE FIGURAS
Figura 1 Ejemplo DES 16 rondas.................................................................................6
Figura 2 Cifrado Feistel 3 rondas................................................................................8
Figura 3 Descifrado Feistel 3 rondas.........................................................................10
Figura 4 Cálculo de f(R,K)..........................................................................................14
Figura 5 Mapeo SBox 6x4...........................................................................................16
Figura 6 Ciclo básico Algoritmo Genético...............................................................25
Figura 7 Resultados CAD primeras 4 SBoxes..........................................................36
Figura 8 Resultados CAD segundas 4 SBoxes.........................................................36
Figura 9 Evaluaciones SBox-1 a 4 CAD 3ª ronda....................................................38
Figura 10 Evaluaciones SBox-5-7 CAD 3ª ronda.....................................................39
Figura 11 Distribución valores fitness parte inferior y superior 40 claves..........44
Figura 12 Comparativa distribuciones fitness modificadas..................................45
Figura 13 Distribución valores fitness interpolados conjunto 40 claves
continuas.......................................................................................................................45
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 70 -
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 71 -
ÍNDICE DE TABLAS
Tabla 1 Mapeo de Selección E....................................................................................15
Tabla 2 Mapeo SBox-1.................................................................................................16
Tabla 3 Matriz parcial frecuencias distribuciones diferenciales SBox-1..............21
Tabla 4 Distribuciones de frecuencia teóricas de alta probabilidad.....................23
Tabla 5 División clave por SBox................................................................................27
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 72 -
Aplicación de algoritmos genéticos al criptoanálisis diferencial del cifrador de
Feistel
- 73 -
BIBLIOGRAFÍA
[STAN99] Federal Information, Processing Standards Publication 46-3,
"Specifications for the Data Encryption Standard (DES)" 1999 October 25
[SECU52] National Security Agency (NSA), Cryptologic Intelligence Agency of
the United States Department of Defense.
[MHEY02] Howard M. Heys, "A tutorial on Linear and Differential
Cryptanalysis", Faculty of Engineering and Applied Science, 2002.
[BIHA93] Eli Biham and Adi Shamir, "Differential cryptanalysis of the data
encryption standard", 1993.
[COPPE94] Don Coppersmith, "The Data Encryption Standard (DES) and its
strength against attacks", IBM Journal of Research and Development 38, 1994.
[VILLA09] Dr. José Villar Collado, "Introducción a los algoritmos genéticos",
Escuela Técnica Superior de Ingeniería-ICAI, 2009.
[MILLE95] Brad L. Miller and David E. Goldberg, "Genetic Algorithms,
Tournament Selection, and the Effect of Noise", 1995.
[AYMA07] Eng. Ayman M. B. Albassal, "Genetic Algorithm Cryptanalysis of a
Feistel Type Block Cipher", Ain Shams University, 2004.
[LASK06] E.C. Laskari, G.C. Meletiou, "Applying evolutionary computation
methods for the cryptanalysis of Feistel ciphers", University of Patras, 2006.
[SONG07] Jun Song, Huanguo Zhang, "Cryptanalysis of Four-Round DES
Based on Genetic Algorithm", Computer School Wuhan university, 2007.
[ZHAN07] Jun Song, Huanguo Zhang, "Cryptanalysis of Two-Round DES
Using Genetic Algorithms", Computer School Wuhan university, 2007.