MANUAL DE CRIPTOGRAFIA
1
División Académica de Informática y Sistemas, Universidad Juárez Autónoma de Tabasco,
Carretera Cunduacán-Jalpa km. 1, Cunduacán, Tabasco, México
@ujat.mx
elaboran métodos para cifrar la información y
mantenerla fuera del alcance de otros, por otro
I. INTRODUCCIÓN lado se trabaja en la forma de encontrar las
El presente Manual de Criptografía tiene debilidades que permitan tener acceso a la
como propósito brindar una acercamiento al arte Información que ha sido cifrada; esto último es
criptográfico a los estudiantes de las carreras conocido como Criptoanálisis. A través de la
afín con el lenguaje computacional que se historia se han ideado una gran cantidad de
ofertan en la División Académica de métodos de cifrado, algunos han demostrado
Informática y Sistemas (DAIS) de la gran duración y otros han sido descifrados en
Universidad Juárez Autónoma de Tabasco muy poco tiempo, por mencionar algunos la
(UJAT); reconociendo el hecho de que hasta Escítala Espartana que data del siglo V A.C.
ahora los esfuerzos realizados para proveer un utilizada durante la guerra entre Atenas y
material de este lenguaje matemático- Esparta, se basaba únicamente en la alteración
computacional han sido muy escasos. del mensaje mediante la escritura de los
Para la elaboración de este sencillo manual, han símbolos de forma vertical sobre una cinta
participado Profesores-Investigadores de la enrollada en un rodillo. También es conocido el
misma división académica, que generan este método César, que data del siglo I A.C. que
trabajo como parte del Proyecto de consistía en reemplazar la letra del texto original
Investigación: Análisis y comparación de por otra que se encontrara en una posición que
algoritmos criptográficos empleando métricas está a determinados números de espacios, ya sea
de evaluación, en el cual colaboraron. más adelante o atrás, en el alfabeto.
La cantidad de los diferentes algoritmos que Una de las menciones al cifrado más antiguas se
hasta la fecha se han estudiado en el arte de la encuentra en el Kama Sutra, donde entre las 64
Criptografía han sido muchos; sin embargo se artes recomendadas se incluye el arte de la
han seleccionado para ser tratado en este escritura secreta. Sin embargo, es del siglo XIV
trabajo, los más representativos. Después del la obra más antigua que existe sobre
contexto histórico se han agrupado los métodos criptografía. Se titula Liber Zifrorum y su autor,
de la Criptografía Clásica en los capítulos: Cicco Simoneta, estudia en ella diversos
Algoritmos por sustitución y Algoritmos por sistemas basados en simple sustituciones de
transposición. Mientras que los algoritmos de letras. (Revelles D., 2008)
clave pública son tratados por capítulos La criptografía permaneció durante siglos
separados: Algoritmo RSA, Algoritmo DES y relacionada a los círculos militares y
Algoritmo AES. diplomáticos. Tal es el caso de la reina Maria I
Reconociendo que la temática aquí presentada de Escocia quien fuera decapitada el 8 de
puede ser ampliada, los participantes en la febrero de 1587 en manos de la reina Isabel I de
elaboración de esta guía, desean que el objetivo Inglaterra, debido a que estuvo en prisión en
de este esfuerzo logre su cometido. manos de reina de Inglaterra por más de 18
años. Un grupo de nobles católicos dirigido por
II. HISTORIA DE LA CRIPTOGRAFIA
Anthony Babington quien fuera decapitado,
Desde épocas remotas el hombre ha tenido la
encabezó una conspiración para destituir a la
necesidad de transmitir información que no
reina Isabel I y en su lugar tomara el trono la
debe ser accesible para alguien más. Es
reina María I de Escocia. Por medio de cartas
entonces que surgen los primeros métodos para
codificadas el grupo de nobles católicos le
cifrar o encriptar la información; esto es
comunicaron a la reina María sobre sus planes,
conocido como Criptografía, del griego kriptos,
dando su aprobación. Para la redacción de estas
que significa oculto y graphos que se traduce
cartas, se utilizó un algoritmo de cifrado y
como escribir( Fuster A. et al, 2001), lo que da
codificación, en las que las letras fueron
una clara idea de su definición clásica: arte de
sustituidas por caracteres o cifrado y algunas de
escribir mensajes en clave secreta o
las palabras más habituales se sustituían por
enigmáticamente. Sin embargo, así como se
unos símbolos o codificación. Sin embargo, el
criptoanalista de la reina de Inglaterra Thomas en aplicaciones comerciales tales como los
Phelippers usando la técnica del análisis de cajeros automáticos y terminales de
frecuencias fue capaz de descifrar dichos ordenadores. A su vez, estas aplicaciones crean
mensajes. Lo que llevó a la decapitación de la la necesidad de desarrollar nuevos tipos de
reina de Escocia.(Simon S. ,2001). sistemas criptográficos que minimicen la
insuficiencia de los canales de distribución de
Como en muchas áreas científicas, el mayor claves seguras y provean el equivalente en una
desarrollo de la cripotología tuvo lugar durante firma escrita. Al mismo tiempo, los desarrollos
las dos guerras mundiales. En este caso se debió en la teoría informática y ciencias
a la necesidad de establecer comunicaciones computacionales prometen proveer
secretas militares y diplomáticas utilizando probablemente criptosistemas seguros
nuevas tecnologías, como la telegrafía y la cambiando de esta manera este arte antiguo en
radiotecnia. En la primera fue fundamental la una ciencia. ( Diffie Whitfield & Marin E.
ruptura por parte de los aliados británicos del Hellman, 2003).
conocido como telegrama Zimmermann, en el
que el ministro alemán intentaba convencer a III. ALGORITMOS POR SUSTITUCION
Japón y México para que invadieran E.U. , este A. INTRODUCCIÓN
mensaje fue la pieza clave que convenció a E.U. Reseña histórica
a entrar en la guerra. En la segunda guerra José Manuel Sánchez Muñoz publicó en abril
mundial, la máquina de cifrado alemana Enigma de 2013, en G.I.E Pensamiento Matemático, de
fue rota por la oficina criptoanalítica británica la Universidad Politécnica de Madrid,su artículo
capitaneada por el matemático Alan Turing, Criptología Nazi. Los Códigos Secretos de
mediante la máquina Colossus, precursora de Hitler. Los datos históricos que aquí se reseñan
los ordenadores modernos (Caballero Gil, fueron tomados de ese artículo, parafraseando
2003). algunos párrafos sólo con el fin de adaptarlos a
La seguridad de estos métodos residía nuestro trabajo.
principalmente en la llave que permitía leer la La criptografía, del griego kryptos:
información cifrada o descifrarla a cualquiera “escondido”, consiste en ocultar el significado
que tuviera acceso a ella, por lo tanto se debía de un lenguaje mediante una codificación
tener mucho cuidado en la transmisión y el diferente. Desde su origen la criptografía se
resguardo de la misma. Estos métodos utilizó principalmente en la guerra, y como
criptográficos son conocidos en la literatura técnica paralela surgió como consecuencia el
como sistemas de llave privada. criptoanálisis, cuyo fin es el descifrado de los
En 1976 W. Diffie, M. Hellman y R. Merkle mensajes secretos codificados. Según ciertos
resuelven el problema de distribución de llaves autores se saben de escrituras secretas narradas
con la ayuda de aritmética modular y funciones por Herodoto que se remontan al año 480 A.C.,
en un sentido revolucionando así el mundo de la pero el primer ejemplo documentado de
criptografía (Singh, 1999. Citado por Basurto encriptación fue el utilizado por Julio César en
Quijada, 2008). Este criptosistema si bien la Guerra de las Galias.
resuelve el problema de intercambio de llaves Los métodos criptográficos pueden
aun no llega a ser la solución ideal. clasificarse en simétricos y asimétricos. Son
En 1977 R. Rivest, A. Shamir y L. Adleman simétricos aquellos que utilizan la misma clave
diseñan RSA (Singh, 1999. Citado por Basurto para cifrar y descifrar los mensajes. En los
Quijada, 2008) que pasa a ser el primer asimétricos se utilizan claves diferentes. Los
criptosistema de llave pública. Antes de esto, métodos simétricos se clasifican, a su vez, en
Clifford Cocks, en 1973, descubre el mismo métodos de sustitución y métodos de
criptosistema pero fue información reservada transposición. El método o “algoritmo de César”
del gobierno británico. es un método de sustitución.
A finales de los ochenta Phil Zimmerman Los métodos de sustitución se continuaron
comienza a trabajar en el sistema PGP (Pretty aplicando por mucho tiempo, pero llegó el
Good Privacy), un programa que implementa un momento en que su análisis o descifrado se hizo
criptosistema de llave privada y un más fácil, por lo cual surgieron los llamados
criptosistema de llave pública accesible al métodos de transposición, que consisten en
público. transponer los textos cambiando el orden de las
Actualmente, estamos ante un cambio letras.
importante en la criptografía, el desarrollo del Conviene aclarar que los algoritmos
hardware digital ha mejorado las limitantes en el utilizados en aquel tiempo basaban su
diseño de la computación mecánica y permite codificación en un solo alfabeto, por lo que se
un bajo costo de los dispositivos criptográficos conocen como monoalfabéticos; pero la batalla
de alta calidad, por lo que pueden ser utilizados entre criptógrafos y criptoanalistas comenzaba a
ser ganada por estos. Como consecuencia surge, 2. D(x) = (x – k) mod T para el
alrededor del año 1460, la necesidad de utilizar descifrado. (x – k) < 0 —> D(x) = (x –
dos o más alfabetos cifrados para confundir a k) + T
los más inteligentes criptoanalistas. Esta idea
fue desarrollada por León Battista Alberti En estas fórmulas: x es el ordinal del carácter
(1404-1472), quien además inventa el disco correspondiente
cifrante o disco de Alberti.
Alberti puede ser considerado como el k es el número de lugares a
inventor del cifrado polialfabético, y sus desplazar para la codificación
estudios sirvieron de base para trabajos
posteriores como los de Johannes Trithemius,
quien inventó la tabula recta, Giovanni Porta y T es el número de
sobre todo del diplomático francés de mediados caracteres del alfabeto utilizado
del siglo XVI Blaise Vigenere (1523-1596), que
a diferencia de Alberti utilizó como base la Por ejemplo, con un desplazamiento de 13
tabula rectade Trithemius y la amplió lugares se tiene:
generando la tabula de Vigenere.
Durante dos siglos y medio la Cifra Vigenere C(0) = (0 + 13) mod 26 = 13 --> N
fue considerada impenetrable, hasta que, en la
primera mitad del siglo XIX, entra en escena el C(1) = (1 + 13) mod 26 = 14 --> O
inglés Charles Babbage (1791-1871) como el
primer protagonista del criptoanálisis de esa
C(21) = (21 + 13) mod 26 = 8 --> I
época, considerado además como uno de los
precursores de la computadora. Al parecer,
Babbage logró importantes avances sobre las C(24) = (24 + 13) mod 26 = 11 --> L
ideas de Vigenere, pero como nunca publicaba
sus descubrimientos sólo salieron a la luz C(25) = (25 + 13) mod 26 = 12 --> M
gracias a otros investigadores.
El desarrollo de la criptografía continuó hasta Así también:
alcanzar un salto importante al final de la
primera Guerra Mundial con la aparición de D(13) = (13 - 13) mod 26 = 0 --> A
máquinas de cifrado con rotores. A partir de allí
surgen importantes matemáticos e
D(14) = (14 - 13) mod 26 = 1 --> B
investigadores que, al mismo tiempo que
implementan máquinas más sofisticadas, van a
desarrollar, como consecuencia lógica, los D(24) = (24 - 13) mod 26 = 11 --> L
mecanismos básicos de las computadoras, como
es el caso sobresaliente de Alan Turing, D(0) = (0 – 13) mod 26 = -13, entonces -13 + 26
considerado como el creador de la teoría de la = 13 --> N
computación.
A continuación se presentan algunos de los D(3) = (3 – 13) mod 26 = -10, entonces -10 + 26
algoritmos más sencillos de sustitución, con la = 16 --> Q
idea de empezar por los conceptos básicos. Los
más complejos se abordarán consecuentemente,
a su debido tiempo.
B. CIFRADOS POR SUSTITUCIÓN
Consisten en sustituir cada letra o grupo de
letras por otra letra o grupo de letras distintas
para cifrar un texto.
C. ALGORITMO DE CÉSAR
D. CIFRADO POLYBIOS
Cada letra del texto original se sustituye por la Las letras del alfabeto se colocan en una
letra que hay a “k” posiciones de ella en el matriz, normalmente de 5×5. En la primera
alfabeto. Se aplican las siguientes fórmulas: columna y la primera fila se colocan números de
acuerdo con un patrón preestablecido por el
1. C(x) = (x + k) mod T para el cifrado. usuario del cifrado.
Así usando el alfabeto tradicional, sin contar
la Ñ, tendríamos la siguiente matriz:
Y el mensaje cifrado es: GUMCKSVJKLT
Se puede usar una versión diferente de este
cifrado.
Consiste en que si alguna vez se llega al fin de
la clave no se regresa al principio de esta, en su
lugar se utiliza el mensaje como clave. Así con
el ejemplo anterior, tendríamos:
(Aclaración: La J se junta con la I por convenio)
(A, G), (U, A), (T, T), (O, O), (E, A), (S, U),
A partir de esta matriz se cifra el mensaje,
(C, T), (U, O), (E, E), (L, S), (A, C)
sustituyendo cada letra por los números de su
fila y columna. Por ejemplo: F. CIFRADO PLAYFAIR
HOLA => 23343111. Cifrado de poligramas (bloques de caracteres)
que se cifran como un único carácter. Para ello
E. CIFRADO DE VIGÈNERE
se construye una matriz y se siguen unas reglas:
Aquí se utiliza una clave para evitar la
repetición de caracteres en el criptograma. Esta Para los caracteres en la misma
clave puede ser cualquier palabra o conjuntos de fila/columna se cogen los siguientes
letras desordenado; por ejemplo, GATO. hacía la derecha/abajo.
Siempre es mejor escoger una clave más corta Para los caracteres en distinta
que el mensaje a cifrar. Véase el siguiente fila/columna se cogen los unidos por la
ejemplo: diagonal opuesta a la formada por los
Mensaje: AUTOESCUELA primeros.
Si hay dos caracteres iguales seguidos,
Clave: GATO se mete entre medios un carácter de
relleno. Normalmente, uno poco usado,
El método consiste en asignar a cada letra del como Ñ, X, Y.
mensaje una letra de la clave, en el orden que
tienen y formando pares. Si llegamos al final de Aunque ahora mismo no entendáis las reglas
la clave se empieza de nuevo por el primer no pasa nada, ahora os pasaré a explicar todo
carácter de ésta.Esto se ilustra como sigue: detalladamente.
(A, G) (U, A), (T, T), (O, O), (E, G), (S, A),… Lo primero como siempre es saber la clave a
Ahora vamos a usar una tabla, llamada la tabla usar , en este caso vuelve a ser una matriz de
de Vigenère, para cifrar cada par de caracteres 5×5 que se creará a partir de una palabra o
anterior. De modo que tenemos: conjuntos de caracteres que queramos. La
matriz se crea poniendo la clave en la primera
(A, G) = G fila y rellando el resto con el orden del alfabeto
que usemos quitando los carácteres usados en la
clave.
(U, A) = U
Por ejemplo, tomamos como clave: TRES
(T, T) = M
La matriz sería:
(O, O) = C
T R E SA
(E, G) = K B C DFG
H I J KL
(S, A) = S
MN OPU
(C, T) = V V WX YZ
(U, O) = J
Ahora tenemos que tener un mensaje, por
(E, G) = K ejemplo: LA PIZARRA
Y ahora tomamos pares de caracteres del
(L, A) = L mensaje, llamados poligramas, como “LA”,
“PI”, “ZA”, “RR” como son iguales añadimos
(A, T) = T uno de relleno (3a regla) “RX”, “RA”. Y
pasamos a cifrar usando las reglas, para cifrar
buscamos los pares de caracteres en la matriz y
una vez localizados aplicamos la regla que buscando sustituto. El resultado se usa como
toque. índice en el orden predefinido del alfabeto. Por
Por ejemplo: Para “LA” tendríamos que la ejemplo con a=5 y b=15 y el alfabeto del
“L” y la “A” están en la misma columna (1a castellano de m=27 letras. La a se convertirá en
regla), por lo que cogemos los caracteres de . Por tanto el
debajo, para la “L” la “U” y para la “A” la “G”. carácter asociado será el que ocupa la posición
Ahora “PI”, están en diferentes columna y fila 20, la s. Aplicando el mismo algoritmo podemos
(2a regla), por lo que cogemos los caracteres de obtener que el texto cifrado de 'plantanuclear' es
la diagonal contraria a la formada por ellos, para 'ntsdlspctmsb'.
la “P” la “N” y para la “I” la “K”.
Para descifrar realizamos las reglas a la H. JUSTIFICACIÓN
inversa con el mensaje cifrado y la matriz. El estudio de la historia de la critpografía y la
Para mis queridos frikis de la criptografía, explicación de los antiguos algoritmos es
quería decir que este algoritmo fue el usado por importante, en primer lugar porque la narración
los británicos en la primera guerra mundial y de lugares, personajes y sucesos en torno a la
por los australianos en la segunda. codificación de mensajes, nos permite observar
con más detalle el desarrollo de los distintos
G. CIFRADO HILL
métodos que, aunque en un principio eran
Y como este blog es matemático, no podía bastante ingenuos comparados con los actuales,
faltar un cifrado que se base en algo no deben soslayarse, ya que la historia nos ha
matemático. Este es un cifrado poligráfico que mostrado que el aprendizaje de cualquier tema
usa como clave una matriz cuadrado y su debe aplicarse gradualmente. En segundo lugar,
inversa para descifrar. porque tratar de avanzar empezando por
Además se tiene la posibilidad de usar dos peldaños superiores puede impedir que en
cifrados diferentes, el cifrado Hill con clave realidad se avance, por falta de cimientos
por la derecha: básicos. Es así que en nuestra investigación se
Ci = mi · K pretende comenzar por los fundamentos, para
mi = Ci · K-1 continuar progresivamente con los temas y
(Donde mi es el carácter “i” del mensaje, C i es logaritmos de criptografía más actuales. El
el carácter “i” del mensaje cifrado y K es la estudio de la criptografía, antes necesario sólo
clave) para temas de guerra y espionaje, es en la
Cifrado Hill con clave por la izquierda: actualidad indispensable, por su relación con la
Ci = K · mi logarítmica en general y por su aplicación en la
mi = K-1 · Ci seguridad informática.
Para realizar este cifrado, primero debemos
transformar el mensaje en un vector de
I. UN EJEMPLO DE APLICACIÓN DE UN
números, y que mejor manera que usando las ALGORITMO DE CRIPTOGRAFÍA EL MÉTODO DE
posiciones que ocupan en el alfabeto como LA MATRIZ INVERSA
resultado, también se pueden usar otras
equivalencias dando mayor seguridad a este Otro método para codificar un mensaje
algoritmo. consiste en la aplicación de una matriz inversa.
Por ejemplo: HOY = [7 15 25] Lo primero que se hace es asociar un número
Después se pasaría a cifrar, con una matriz de diferente a cada letra del alfabeto. Por ejemplo:
unos y ceros que sería la clave, y obviamente
esta matriz tiene que ser reversible. A B C D E F G H I J K L M N O
Un cifrado muy sencillito y matemático. P Q R S T U V W X Y Z
Otro método
El cifrado afín es un tipo de cifrado que usa el
mismo alfabeto para el texto plano que para el 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
texto cifrado que utiliza una expresión 16 17 18 19 20 21 22 23 24 25 26
matemática para determinar la posición en el A continuación se elabora el mensaje y se
alfabeto (según el orden normal) del carácter del codifica. Ejemplo: NOS VEREMOS EL
texto cifrado asociado. LUNES se codifica como:
En este cifrado la clave viene definida por dos
valores numéricos a y b. Sea m el tamaño de 14 15 19 22 5 18 5 13 15 19 5 12 12 21
alfabeto del texto plano. Para definir qué 14 5 19
carácter del alfabeto sustituye a cada carácter se
aplica la fórmula , donde x Y se envía a otra persona.
es la posición del carácter al que le estamos
Para enviar este código ambas personas 109 22
acuerdan el uso de una matriz invertible, como
la siguiente (por ejemplo):
1 3 4
De manera análoga: X 2 = A −1
[ ][]
103 = 5
78 18
[ ]
A= 2 1 3
1 4 2 104 5
−10 10 5
X 3 =A −1
[ ][]
68 = 13
87 15
−1
Cuya inversa es: A =
15
−1
15
7
15
[ ] 15
−2
15
−1
15
15
5
15
−5
15
X 4= A −1
[
82 19
][ ]
79 = 5
63 12
131 12
Luego, el remitente separa el código en vectores
de R3 :
X 5 =A −1
[ ][ ]
87 = 21
124 14
138 5
14 22 5 19 12 5
[ ][ ][ ][ ][ ][ ]
15 , 5 , 13 , 5 , 21 , 19
19 18 15 12 14 19
X6= A −1
[ ][ ]
86 = 19
139 19
Ahora, lo único que debe hacer el destinatario
y define la transformación lineal L: R → R 3 3 es colocar en orden los números que obtuvo en
los vectores que, por supuesto, son los mismos
como L( x )=¿ Ax. Así, el mensaje se convierte
que el remitente le envió. A continuación le
para todas las xi de la siguiente manera: asigna a cada número la letra correspondiente y
con eso resuelve su problema de decodificación.
1 3 4 14 135 IV. CIFRADO DE TRANSPOSICIÓN
[ ][ ] [ ]
AX1 = 2 1 3 15 = 100 =L(X 1)
1 4 2 19 112
A. TRANSPOSICION
Son aquellos que alteran el orden de los
y así sucesivamente (para x2, x3, x4, x5, x6) se caracteres dentro del mensaje a cifrar. El
tiene: algoritmo de transposición más común consiste
en colocar el texto en una tabla de n columnas.
A El texto cifrado serán los caracteres dados por
columna (de arriba hacia abajo) con una clave K
22 109 5 104 19 82 12 131 en5 el orden 138 en que se leen las
[ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ]
5 = 103 , A 13 = 68 , A 5 = 79 , A 21
18 78 15 87 12 63 14
consistente
= 87 , A 19 = 86
columnas.
Ejemplo:
124 Si19n = 3139
columnas, la clave K es
(3,1,2) y el mensaje a cifrar "SEGURIDAD
INFORMATICA".
El destinatario recibe los vectores codificados y
resuelve las ecuaciones x i= A−1 L ( X i ). Entonces
1 2 3
−10 10 5 S E G
[ ]
15 15 15 U R I
135 135 14
X 1= A −1
[ ]
100 =
112
−1
15
7
−2
15
−1
5
15
−5
112[ ][ ]
100 = 15
19
D
F
A
I
O
D
N
R
15 15 15 M A T
I C A
J T S S O E A H L N E Q G
A M U R O E E G D X L A X
El mensaje cifrado será: " GIDNRTASUD
FMIERAIOAC " De manera que nuestro cripto es :
EGTMOISUCRSRLMOOBCEEOAAEPEHGI
B. TRANSPOSICIÓN POR FILAS
Este cifrado es muy parecido al de columnas OLDLLNXINELNEQAOAGX
sólo que en lugar de formar columnas, aquí se Con este procedemos a realizar el descifrado a
forman filas con base en un parámetro clave, el través del algoritmo de transposición por filas
cual también recibe el nombre de número de simples con Nc = 12 y Nf = 4.
filas (Nf). De manera que se forman tantas filas 1 E G T M O I S U C R S R
como se indique y el mensaje se escribe de 2 L M O O B C E E O A A E
manera vertical. Se puede concluir que como es 3 P E H G I O L D L L N X
muy parecido al de transposición de columnas 4 I N E L N E Q A O A G X
en este también hay cifrado de transposición por
filas simple, simple con clave y doble. Finalmente, el mensaje descifrado es : EL
PIGMENTO HEMOGLOBINICO ES EL QUE
a) PROCESO DE CIFRADO LE DA COLOR A LA SANGRE.
c) CIFRADOS POR TRANSPOSICION
Como se mencionó anteriormente se pone la
clave (K) de manera vertical y a partir de ahí se
empieza a colocar el mensaje en claro (Mcla). Los cifrados por transposición reordenan el
Ejemplo texto de acuerdo con algún esquema. Este
K = SALUDO Mcla = BENJAMIN reordenamiento se hacía clásicamente con la
FRANKLIN INVENTO EL PARARAYOS EN ayuda de algún tipo de figura geométrica.
MIL SETECIENTOS CINCUENTA Y DOS.
Primero el texto a cifrar se escribía en la
S B I K V L R N T T C Y figura de una forma determinada y después se
A E N L E P A M E O U D
extraía de la figura de una forma diferente,
L N F I N A Y I C S E O
U J R N T R O L I C N S quedando cifrado. La llave (clave) consiste pues
D A A I O A S S E I T X en la forma de introducir y sacar el texto de la
O M N N E R E E N N A X figura (Biham E., Dunkelman O., Sprnger,
2012).
Reordenando las filas, el criptograma tomará la La figura escogida la mayoría de las veces era
forma: Cripto = ADLOSU (se organizo una matriz bidimensional. Como ejemplos
alfabéticamente). podemos distinguir:
Cripto = ENLEP AMEOU DAAIO ASSEI C. TRANSPOSICION COLUMNAR
TXNFI NAYIC SEOMN NEREE NNAXBI
KVLRN TTCYJ Acepta un texto de longitud n con un numero
RNTRO LICNS pe(x|x<n-1) n-1 el cual permitirá dividir la
matriz en n/p filas, con el numero p de
b) PROCESO DE DESCIFRADO
columnas. después de eso hay un orden
A manera de ejemplo tomaremos el siguiente establecido por el usuario que determina de que
criptograma, el cual se obtuvo después de forma se agruparan las columnas para ponerlas
aplicar el algoritmo de transposición por filas en el texto cifrado (Copeland J., 2006).
dobles. Ejemplo: Teniendo este mensaje
Cripto = “Ric para toda la vida” y la llave siguiente (6;
MUROEEGDXLAXTSSOEAHLNEQGGIRM (3,5,0,4,2,1))
CAEOLNEAEOCLBOPILINO Se obtiene la matriz y el siguiente sistema, para
K = ROJA mantener la simetría se agregan las x como sean
Utilizando la palabra clave, se puede necesarias.
determinar que Nc = Lc/Nf lo que sería 48/4 = Ricpa
12, por tanto cada fila tiene 12 caracteres, ahora ratod
reacomodando la clave de manera alfabética K alav
= AJOR. idaxxx
A M U R O E E G D X L A X
Y según el orden se obtiene:” taxadvxRraipo xc
J T S S O E A H L N E Q G laia d”
O G I R M C A E O L N E A Lo cual se podría descifrar con la misma llave
R E O C L B O P I L I N O (6;(3,5,0,4,2,1)) pero ¿como se haría el
descifrado? bueno se van cogiendo de a
REORDENANDO subtextos de longitud n/p que vendría siendo 4
R E O C L B O P I L I N O en este ejemplo y se organizan como columnas:
O G I R M C A E O L N E A
aRpci
tdroa 19 this.TxT+="x";
aval
xxixad 20 Seed = Gen(Sd,Sp);
Y se procede a organizar según el orden de la
llave, con lo cual nos dará la misma matriz del
2 if(Seed[0]==-1){//generamos Seed
comienzo.
1 por defecto..
Código
2
Seed = new int[Sp];
2
view source
print? 23 for(int n = 0;n<Sp;n++)
1 /*
24 Seed[n]=n;
2 Modulo CT para RiCrypt
25 }
3
26 }
Cifrado por Transposicion usando
4 27 public static String Cifrar(){
una matriz y una llave ordenada.
28 String Cifrado = "";
5
2 String tmp[][] = new
6 Phicar
9 String[TxT.length()/Sp][Sp];
7 project-ric.org
3 for(int n = 0;n<TxT.length();n+
0 +)
8 [email protected]
tmp[(int)Math.floor((double)n/
9 */
3 (double)Sp)][n
1 %Sp]=String.valueOf(TxT.charAt(n)
10 import java.util.*;
);
11 public class CT{ 3
for(int n = 0;n<Seed.length;n++)
2
12 public static String TxT;
3 for(int x
13 public static int Sp; 3 =0;x<(TxT.length()/Sp);x++)
14 public static int Seed[]; 3
Cifrado+=tmp[x][Seed[n]];
4
1 public CT(String TxT,int
5 Sp,String Sd){ 35 return Cifrado;
1 36 }
this.TxT = TxT;
6
3 public static String DesCifrar()
17 this.Sp = Sp; 7 {
18 while(this.TxT.length()%Sp !=0) 3 String DesCifrado="";
8 57 int nula[] = {-1};
39 String pp = ""; 58 String charset = "0123456789,";
40 for(int n=0;n<Seed.length;n++) for(int n = 0;n<Sd.length();n+
5
+)if(charset.indexOf(Sd.charAt(n)
9
41 pp+=String.valueOf(Seed[n]); )==-1){
42 //String DesCifrado=""; 6
System.err.println("Seed Mala");
0
4 String tmp[][] = new
3 String[TxT.length()/Sp][Sp]; 61 return nula;
4 String ord[][] = new 62 }
4 String[TxT.length()/Sp][Sp];
6
for(int n = 0;n<Sp;n++)
for(int n = 0,c=0;(n+ 3
4
(TxT.length()/Sp))<=TxT.length();
5
c++,n+=(TxT.length()/Sp)){ 6 if(Sd.indexOf(String.valueOf(n))
4 ==-1){
4 String tt = TxT.substring(n,n+
6 (TxT.length()/Sp)); 6 System.err.println("Seed
5 Mala");
47 for(int x=0;x<tt.length();x++)
6
return nula;
48 tmp[x]1=""+tt.charAt(x); 6
49 } 6
}
7
50 for(int n = 0;n<Sp;n++)
6 StringTokenizer tok = new
5 for(int y = 8 StringTokenizer(Sd,",");
1 0;y<(TxT.length()/Sp);y++)
6
if(Sp!=tok.countTokens()){
5 ord[y][n]=tmp[y] 9
2 [pp.indexOf(String.valueOf(n))];
7 System.err.println("Seed
for(int n = 0 Mala");
5 0;n<(TxT.length()/Sp);n+
3 +)for(int x = 0;x<Sp;x+ 71 return nula;
+)DesCifrado+=ord[n][x];
72 }
5
return DesCifrado;
4 7
int epa[] = new int[Sp];
3
5
}
5 7 for(int n = 0;n<epa.length;n++)
4 {
5 public static int[] Gen(String
6 Sd,int Sp){ 7 epa[n]=Integer.parseInt(tok.next
3. Leer el número de registros donde se
5 Token()); almacenará el texto
4. Almacenar el número de registros
7 5. Dividir el tamaño del mensaje en claro
if(epa[n]>=Sp){ entre el número de registros
6
6. Validar que el residuo sea un número
exacto, de lo contrario se procede a rellenar con
7 System.err.println("Seed X
7 Mala"); 7. Recorrer el mensaje en claro carácter por
caracter, almacenando cara carácter en cada
7 registro[i++]
return nula; 8. Concatenar los registros
8
9. Mostrar cripto.
B. Descifrar
79 } 1. Leer el texto que se desea descifrar
2. Leer el número de registros
80 } 3. Dividir la longitud del cripto entre el
número de registros
4. Obtener substring del tamaño obtenido en
81 return epa;
el paso anterior
5. Concatenar en una nueva cadena, las
82 } posiciones de los substrings obtenidos en el
paso anterior
83 } 6. Mostrar mensaje en claro.
Diagrama de flujo
D. TRANSPOSICION INVERSA Y SIMPLE
Implementación de dos diferentes métodos de
transposición, estos métodos son Inverso y
Simple (Copeland J., 2006).
INVERSO
A. Cifrar
1. Leer el texto que se desea cifrar
2. Declarar un arreglo que contenga el
mensaje en claro
3. Almacenar cada caracter en una casilla
del arreglo declarado
4. Recorrer el arreglo declarado
comenzando en la última posición, hacia el
inicio
5. Mostrar cripto.
B. Descifrar
1. Leer el cripto que se desea descifrar
2. Declarar un arreglo que contenga el cripto
3. Almacenar cada carácter en una casilla
del arreglo declarado
4. Recorrer el arreglo declarado
comenzando en la última posición, hacia el
inicio
5. Mostrar mensaje en claro.
SIMPLE
A. Cifrar
1. Leer el texto que se desea cifrar
2. Almacenar en un arreglo el mensaje en
claro
decir en dos registros que serán del mismo
DIAGRAMA DE CLASES EMPLEADAS tamaño.
Ejemplo:
cifrado Transposición Inverso Criptograma: UPOCT EINNY MEMRT
star : cifrado Transposición
main (args: String[] ) : void cifradoBegin () : void
NENTI RSCUD ATOFO SRDOE ETILI
GIPEX UCURN
Empieza ():void cifrarMsjClaro ( textoClaro: String) : void SEAAA NSECX
Primera iteración
subMenú ( método : int ) : void descifradoBegin () : void R U P O C T E I N N YM E M R T N E N T I R S C U D A T O F O
1
descifrarCripto ( cripto : String ) : void
R S R D OE E TI L I G I P E XU C U R NS E AA A N S E CX
2
Simple
De donde se obtiene el criptograma intermedio
star : cifradoTransposición USPRO DCOTE EEITN INLYI MGEIM
cifradoBegin () : void PRETX NUECN UTRIN RSSEC AUADA
ANTSO EFCOX
cifradoSimple ( msjClaro : String, numRegistros : int) : void
Segunda iteración
R U S P R O D C O T E E E I T N I N L Y I MG E I MP R E T X
descifradoBegin () : void 1
R N UE C NUT R I NR S S E C A UA DAA NT S O E F C OX
descifradoSimple (cripto : String , numRegistros : int ) : void 2
Que nos da como resultado: UN
rellenarMensaje ( texto : String , numRegistros : int ) : void SUPERCONDUCTOR TIENE RESISTENCIA
NULA Y DIAMAGNETISMO PERFECTO.
Desarrollo F. TRANSPOSICION POR SERIES
Este tipo de cifrado reordena los caracteres del
Para la ejecución del algoritmo de mensaje a cifrar como una serie de submensajes
Transposición es necesario tener instalado el jdk (Copeland J., 2006), de manera que el
y estos serán ejecutables. Se anexa el enlace de criptograma tiene la forma siguiente:
descarga correspondiente. Cripto = Ms1, Ms2, Ms3,…, MN
https://www.dropbox.com/s/uy2j1ljl7y4962 Donde cada uno de los submensajes sigue una
e/cifradoTransposicion.jar función determinada, del total de caracteres que
E. TRANSPOSICION DOBLE conforman el texto a cifrar con base en la
posición que ocupa cada uno en el mensaje:
Esta técnica consiste en aplicar dos veces de
manera consecutiva el cifrado de transposición Mcla = m1, m2, m3, …
simple (Copeland J., 2006). Esto depende de cada usuario ya que un
Proceso de cifrado ejemplo muy claro seria Ms1 = números pares,
Se considera el siguiente mensaje: Ms2 = números primos, Ms3 = múltiplos de 5,
INTERNET ES LA RED DE REDES MAS etc.
GRANDE DEL MUNDO
Se aplica el cifrado de transposición simple para Proceso de cifrado
obtener el cripto. Tome en cuenta el siguiente texto en claro:
Primera iteración Mcla = EL AUTENTICO SOÑADOR ES EL
R1 I T R E E L R D E E E M S R N E E M N O
QUE SUEÑA IMPOSIBLES.
R2 N E N T S A E D R D S A G A D D L U D
E L A U T E N T I C O S O Ñ A D
O R E S E L Q U E S U E Ñ A
Que se obtiene
I M P O S
ITREELRDEEEMSRNEEMNONENTSAEDR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DSAGADDLUD
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
Ahora volvemos a aplicar transposición simple.
34 35
Segunda iteración
R1 I R E R E E S N E N N N S E R S G D L D
I B L E S
R2 T E L D E M R E M O E T A D D A A D U 36 37 38 39 40
De esta manera obtenemos el criptograma, el El cual será cifrado de la siguiente manera:
cual es Cripto = Ms1 = múltiplos de 4, Ms2 = números
IREREESNENNNSERSGDLDTELDEMREM nones, Ms3 = números pares.
OETADDAADU Ms1 = 4, 8, 12, 16, 20, 24, 28, 32, 36, 40.
Proceso de descifrado Ms2 = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
Se cuenta el número de elementos y se arregla 27, 29, 31, 33, 35, 37, 39.
en una tabla como las del ejemplo de cifrado, es Ms3 = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
26, 28, 30, 32, 34, 36, 38, 40.
Como se puede ver, la función de cada serie y información que contienen es fácilmente
el orden que sigue es de suma importancia para accesible a terceros. Para evitarlo, la
el reacomodamiento de los caracteres y por criptografía también se aplica al correo
tanto del criptograma que se obtenga, puesto electrónico. Entre las diversas ventajas que tiene
que se cancelaron ciertos números porque están usar un certificado al enviar un email,
repetidos en otras series, con esto evitamos podríamos destacar la seguridad que nos aporta
repeticiones. Así de esta manera se tiene el ya que así evita que terceras personas (o
criptograma: hackers) puedan leer su contenido, o bien que
tenemos la certeza de que el remitente de éste
Cripto = correo electrónico es realmente quien dice ser.
ALZIARINMOEOGNASTLMSEOLUVAJTEC Firma digital
EOSIKILTROPRSUD Tecnología que busca asociar al emisor de un
mensaje con su contenido de forma que aquel
Para descifrar el cripto, es necesario conocer no pueda posteriormente repudiarlo.
el reordenamiento que se utilizo para la Criptoanálisis
obtención del criptograma y con ello determinar Para realizar el criptoanálisis de un texto que
la secuencia o reordenamiento inverso a fin de ha sido cifrado con este método debemos seguir
recuperar el mensaje en claro. los pasos considéranos en el apartado de cifrado
por transposición columnar.
Proceso de descifrado Además de lo expuesto anteriormente hay que
Cripto = UTSDS UEMIS tener en cuenta que ahora los huecos son
EATNIOOAOEEQUEÑIPSBE rellenados con caracteres. Entonces, dado un
LECÑRLSAOL texto cifrado con este método y sin espacios en
Si se obtuvo mediante el cripto = Ms1, Ms2, Ms3 blanco para delimitar las columnas, podríamos
utilizando las series Ms1 = números primos, Ms2 obtener el número de columnas de la matriz sin
= múltiplos de 5 y Ms3 = números naturales, de más que conocer la longitud del texto cifrado,
manera que: pues el número de columnas debe ser un divisor
de este (Galbraith, S. 2012).
Ms1 = 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, Como ejemplo de lo expuesto en el párrafo
41, 43 anterior consideremos el texto cifrado del
Ms2 = 5, 10, 15, 20, 25, 30, 35, 40, 45 anterior ejemplo:
Ms3 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, UEQAIARMNDAIGUDLASOEDHUYA
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, Como la longitud de este texto es de 25
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, caracteres, y como:
40, 41, 42, 43, 44, 45 25 = 5 • 5
Entonces, sabemos que la matriz debe
Teniendo en cuenta que ya se eliminaron los contener 5 columnas. Con esta información
números repetidos se tiene el siguiente podemos dividir el texto anterior y obtener la
criptograma: matriz del texto cifrado, con la que realizando
Cripto = A L Z I A R I N M O E O G distintas permutaciones entre sus columnas
N A S T L M S E O L U V A J T podríamos obtener la matriz del texto llano
E C E O correspondiente a dicho texto cifrado, y con lo
2 3 5 7 11 13 17 19 23 29 31 37 41 43 10 15 20 cual descifraríamos el mensaje oculto en el texto
25 30 35 40 45 1 4 6 8 9 12 14 16 18 21 cifrado
S I K I L T R O P R S U D V. ALGORITMO RSA
22 24 26 27 28 32 33 34 36 38 39 42 44
INTRODUCCION
Al ordenar las los números, el Mcla es el
siguiente: La necesidad de protección de información va
en aumento a la par del vertiginoso desarrollo
LA LUZ VIAJA A TRESCIENTOS MIL tecnológico; debido a esto se plantea la
KILOMETROS POR SEGUNDO necesidad de formular nuevas alternativas de
encriptado para ser aplicadas. Ningún algoritmo
de encriptación es óptimo, pero según el grado
AREAS DE OPORTUNIDAD de seguridad del algoritmo, el tiempo que
Correo electrónico
tardaría de desencriptar la información varía
entre 100 y 300 años (Huahuala Chaupi A.J.,
La mayor parte de los mensajes de correo 2010). Y usando una supercomputadora, entre 5
electrónico que se transmiten por Internet no y 10 días. Uno de los mayores problemas de la
incorporan seguridad alguna, por lo que la criptografía fue el de la distribución segura de
claves. Con el término clave designamos a todo números muy grandes (Basurto Quijada R.,
conjunto de información necesario para cifrar o 2008).
descifrar un mensaje. No se incluye en esto el
propio algoritmo de cifrado. Para factorizar un número el sistema más
lógico consiste en empezar a dividir
En la década de los 70, algunas mentes sucesivamente éste entre 2, entre 3, entre 4,... y
inquietas consiguieron por fin derribar el muro así sucesivamente, buscando que el resultado de
del intercambio seguro de claves. La idea básica la división sea exacto, es decir, de resto 0, con
consiste en descartar la idea de sistemas de lo que ya tendremos un divisor del número.
clave única. Hasta entonces, todos los Ahora bien, si el número considerado es un
algoritmos conocidos de cifrado (sean cifras de número primo (el que sólo es divisible por 1 y
César, Vigènere, libros de claves o máquinas por él mismo), tendremos que para factorizarlo
Enigma) usaban la misma clave para cifrar y habría que empezar por 1, 2, 3,... hasta llegar a
para descifrar. Pero podemos imaginar una él mismo, ya que por ser primo ninguno de los
situación en la que hay dos claves, una para números anteriores es divisor suyo. Y si el
cifrar y otra para descifrar. No hay problema en número primo es lo suficientemente grande, el
que la clave de cifrado sea conocida por otros, proceso de factorización es complicado y lleva
ya que solamente sirve para bloquear la mucho tiempo. Basado en la exponenciación
información. Lo que importa es que la clave de modular de exponente y módulo fijos, el sistema
descifrado sí sea secreta, de forma que RSA crea sus claves de la siguiente forma.
solamente su propietario pueda acceder a la Se buscan dos números primos lo
información. Debe haber algún tipo de relación suficientemente grandes: p y q (de entre 100 y
entre ambas claves (ya que no son 300 dígitos).
independientes), pero de tal forma que resulte Se obtienen los números n = p * q y Ø = (p-1) *
prácticamente imposible deducir la clave (q-1).
privada (o secreta) a partir de la clave pública. Se busca un número e tal que no tenga múltiplos
Sería análogo a un buzón de correos: todo el comunes con Ø.
mundo puede meter información dentro, pero Se calcula d = e-1 mod Ø, con mod = resto de la
solamente el dueño puede abrirlo con su llave división de números enteros.
( Quintantes Sierra A., 2011). Y ya con estos números obtenidos, n es la clave
pública y d es la clave privada. Los números p,
En años pasados se dio a conocer que la q y Ø se destruyen. También se hace público el
criptografía de clave pública (incluyendo RSA número e, necesario para alimentar el algoritmo.
desde luego) había sido descubierta por vez
primera por los criptoanalistas británicos James El cálculo de estas claves se realiza en secreto
Ellis, Clifford Coks y Malcom Williamson. Para en la máquina en la que se va a guardar la clave
su desgracia, trabajaban en la agencia CGHQ (el privada, y una vez generada ésta conviene
equivalente inglés de la NSA), de modo que no protegerla mediante un algoritmo criptográfico
pudieron hacer públicos sus descubrimientos. simétrico.
Tuvieron que conformarse con asistir al En cuanto a las longitudes de claves, el sistema
descubrimientos de métodos similares por parte RSA permite longitudes variables, siendo
de norteamericanos, quienes no dudaron en aconsejable actualmente el uso de claves de no
aplicar comercialmente sus descubrimientos. menos de 1024 bits (se han roto claves de hasta
512 bits, aunque se necesitaron más de 5 meses
En 1997, Coks brindo una charla sobre las y casi 300 ordenadores trabajando juntos para
contribuciones británicas a la criptografía de hacerlo).
clave pública, sus compañeros ya habían RSA basa su seguridad es ser una función
fallecido. Un año antes, Rivest, Shamir y computacionalmente segura, ya que si bien
Adleman vendieron RSA Data Security, Inc, por realiza la exponenciación modular es fácil, su
200 millones de dólares, toda una lección para operación inversa, la extracción de raíces de
aquellos que se quejan que porque las módulo Ø no es factible a menos que se conozca
matemáticas no sirven para nada (Quintantes la factorización de e, clave privada del sistema.
Sierra A., 2011). La seguridad de los criptosistemas dependerá
del tamaño de n, cuanto mayor sea el tamaño
del módulo mejor será la seguridad del
criptosistema, pero el tamaño de n influye
DESCRIPCION Y PSEUDOCODIGO
negativamente en la velocidad de las
El sistema RSA se basa en el hecho
operaciones del RSA; cuanto más grande sea el
matemático de la dificultad de factorizar
tamaño del módulo, mucho más difícil será
factorizarlo mediante algún algoritmo y así Para descifrar el valor del texto cifrado,
obtener los valores de p y q. nosotros calculamos:
Cuánto mayor el tamaño de n, mayor seguridad, decrypt ( 855 )=8552753
y mayor lentitud en el cifrado y descifrado.
( mod 3233 ) =123
Ambos de estos cálculos pueden ser
Si n=80 dígitos, se tiene una seguridad eficientemente usados por el algoritmo de
moderada con la tecnología actual, y si n=200 multiplicación cuadrática para exponenciación
dígitos existe un margen de seguridad contra modular.
agresiones de futuras tecnologías.
APLICACIONES
Existen formas de romper el RSA, entre otras:
El algoritmo RSA varía en su modalidad, pero
Descubriendo la clave pública, si el usuario la base en aritmética modular es inmodificable,
almacena su clave privada en un lugar poco el tiempo de encriptación también es más largo
seguro. que el de encriptación, como también puede
verse que el manejo de contraseñas es de vital
Factorizando el módulo público n, en sus dos importancia al momento de aplicar seguridad.
factores primos p y q. La seguridad del RSA Se recomienda realizar empaquetamientos de
depende de que esta factorización sea lo más archivos de texto plano cifrado, durante el
difícil posible. proceso o al final del proceso.
Desarrollando alguna técnica para computar la En cuanto al uso de RSA en la actualidad se
operación raíz n-ésima módulo n. Este ataque emplea en una amplia gamas de productos,
permitiría reconstruir los mensajes encriptados plataformas e industrias de todo el mundo. RSA
sin tener que conocer la clave privada empleada se instala en los actuales sistemas operativos o
para desencriptar los mensajes, hasta ahora no en los proyectados por Microsoft, Apple Sun y
se conoce ninguna técnica implementada de este Novell. Forma parte de diversos sistemas
tipo que sirva para romper RSA. criptográficos como los de navegadores seguros
EJEMPLO (SSL), documentos de identidad electrónicos y
Ejemplo de cifrado/descifrado con RSA. Los programas como PGP (Quintantes Sierra A.,
parámetros usados aquí son pequeños y 2011).
orientativos con respecto a los que maneja el
algoritmo, para generar y examinar un par de En cuanto a hardware se le puede encontrar
claves reales. seguridad para teléfonos, tarjetas inteligentes.
p=61 1º nº primo privado
AREAS DE OPORTUNIDAD
q=53 2º nº primo privado
Puede reconsiderarse el RSA partiendo de otra
producto p×q
n= pq=3233 base de caracteres fundamentadas en algebra
lineal y el principio del CAOS o pseudo
e=17 exponente público
impredecible, para desplazar el código ASC II y
d=2753 exponente privado aumentar así el grado de seguridad.
La clave pública (e, n). La clave privada es (d, VI. ALGORITMO DES
n). La función de cifrado es:
encript ( m )=m c (mod n)=m17 INTRODUCCIÓN
(mod 3233) En esta capítulo se brinda una revisión del
Donde m es el texto sin cifrar. La función de algoritmo DES (Data Encryption Standard),
descifrado es: clasificado este dentro de la criptografía
decript ( c ) =c d ( mod n )=c 2753 moderna de clave privada (Cargallo Tuzón J., ).
(mod 3233)
Donde c es el texto cifrado. Para cifrar el valor Para ello, empezaremos por hacer un poco de
del texto sin cifrar 123, nosotros calculamos: historia sobre la aparición y evolución del DES
a lo largo de los años.
encrypt ( 123 )=12317
( mod 3233 ) =855 Historia del DES (Data Encryption Standard)
En 1973, el NBS (National Bureau of demostró que por fuerza bruta era
Standards) solicita públicamente posible romper el DES. En 39 días se
propuestas de sistemas criptográficos, hizo posible examinar el 85% de las
dichos sistemas debían de cumplir los claves. Poco más tarde, la EFP
siguientes criterios: (Electronic Frontier Foundation)
presentó su DES cracker, capaz de
o Residir la seguridad en la clave y romper el DES por fuerza bruta en 4.9
no en el secreto del algoritmo. días. A pesar de esto, aún no se ha
encontrado ninguna debilidad a nivel
teórico por lo que todavía se sigue
o Proporcionar un alto nivel de
utilizando.
seguridad y ser eficiente.
Finalmente, en 1999 la EFP rompe el
o Ser adaptable para ser utilizado en DES en menos de 23 horas.
diversas aplicaciones.
Hoy en día existen sistemas capaces de
o Ser barato de implementar en trabajar con muchísimas puertas
dispositivos electrónicos. lógicas que son capaces de romper el
DES en 5 horas.
En 1974, IBM presenta LUCIFER, un
sistema de Horst Feistel que trabajaba DES es un criptosistema simétrico de clave
componiendo sucesivamente diferentes privada, decir es un criptosistema de clave
transformaciones. Después del estudio única, dicha clave secreta es misma tanto para
del algoritmo, la NSA (National cifrar como para descifrar.
Security Agency) propone una serie de
cambios que son aceptados sin
La idea general es aplicar diferentes funciones
problemas.
al mensaje que se quiere cifrar de tal modo que
solo conociendo una clave pueda aplicarse de
El 17 de Marzo de 1975, el NBS forma inversa para poder así descifrar dicho
publica los detalles del DES. Dicho mensaje.
algoritmo fue adoptado como estándar
para las comunicaciones seguras y el
El DES cumple con dos de los principios más
almacenamiento de información no
básicos de la criptografía, estos son el secreto y
clasificada por el Gobierno de los
la autenticidad de la información cifrada:
EE.UU. En un principio la idea de la
NSA era implementar este algoritmo
en hardware, para ello dicho algoritmo 1. El secreto se consigue con la
debería mantenerse en secreto. Debido utilización de una clave privada.
a unos problemas, el algoritmo se hizo
público por lo que su implementación 2. y la autenticidad se consigue de la
software se hizo posible ya que el nivel misma forma ya que sólo el emisor
de detalle del algoritmo era bastante legítimo puede producir un mensaje
alto. que el receptor podrá descifrar con la
clave compartida.
En 1981, varios organismos privados lo
adoptan como estándar. El principal problema que tienen este tipo de
algoritmos es la forma en la que intercambiar
las claves ya que se ha de hacer de forma
En 1983, el DES se ratifica como
privada.
estándar sin problemas.
El DES es englobado también dentro de los
En 1997, el DES es roto como
métodos de cifrado de producto. Estos
consecuencia de un reto que lanzó la
algoritmos son llamados así porque combinan la
RSA, se examinaron el 25% de las
confusión y la difusión para cifrar el mensaje.
claves.
La confusión consiste en conseguir que no se
vea relación alguna entre el texto plano (texto a
Seguidamente, en 1998 debido a la cifrar), el texto cifrado y la clave. A la hora de
corta longitud de la clave (56 bits) la implementación, la confusión se traduce en
utilizada para cifrar el DES, se sustituciones simples a través de pequeñas
tablas. La difusión trata de repartir la influencia 3. El resultado de la transformación se
de cada bit del mensaje en texto plano lo más suma (o exclusivo) byte a byte, con los
posible en el mensaje cifrado. Dicha propiedad ocho correspondientes de la clave.
se implementa mediante el uso de
permutaciones. DES ya que se basa 4. Ahora se realiza una transposición
simplemente en aplicar una serie de sobre los 64 bits a nivel de bit, dicho
sustituciones y permutaciones varias veces. resultado se agrupa en bytes.
5. Estos bytes se suman (o exclusivo) con
los bytes de la parte baja de la entrada.
Otro aspecto importante a considerar es que
los cifrados no tengan estructura de grupo, es 6. Finalmente, la parte alta y la baja se
decir, que no se cumpla la siguiente propiedad: intercambian.
Para todo k1, k2 existe k3 tal que Ek2(Ek1(M)) Este proceso se repite 16 veces dando lugar al
= Ek3(M) bloque cifrado. Evidentemente, para obtener el
mensaje cifrado se aplican las mismas
Es decir, que si hacemos dos cifrados operaciones en orden inverso.
encadenados con las llaves k1 y k2 obtendremos
el mismo resultado que si lo hiciésemos
únicamente con la llave k3.
Descripción general del Algoritmo de cifrado
Ya que el DES nació como una continuación DES
del dispositivo Lucifer, es conveniente explicar
brevemente dicho sistema para situarnos El algoritmo DES cifra un bloque de 64 bits (8
definitivamente en la forma que el DES tiene de bytes) de texto en claro en un bloque de 64 bits
trabajar. de texto cifrado. Para ello usa una clave externa
de 64 bits en los que los bits en las posiciones
Dispositivo LUCIFER octavas de cada byte son bits de paridad impar.
Es el más claro ejemplo de un algoritmo de Consta de 16 iteraciones, y en cada una de ellas
cifrado de producto, que llegados a este punto se realizan operaciones de o exclusivo,
debemos de entender sus propiedades sin permutaciones y sustituciones. Las
problemas. Así el resultado de cifrar un mensaje permutaciones son de tres tipos: simples,
M, con t funciones Fi (1 <= i <= t) será: expandidas (se duplican bits) y restringidas (se
eliminan bits). Las sustituciones son no lineales
E (M) = Ft (...F3 (F2 (F1 (M)))...) que se implementan a partir de tablas que se
encuentran en las cajas S, que más tarde
Donde Fi puede ser una sustitución o una explicaremos ya que son de vital importancia.
permutación, de esta forma se pretende que el
resultado ser lo más aleatorio posible en La mejor forma de entender el
relación al mensaje original. Esta idea fue funcionamiento del DES es a través de un
desarrollada por Feistel (Redes de Feistel) y fue esquema que muestre los diferentes pasos
implementada en el dispositivo Lucifer por Notz realizados para conseguir el cifrado. Dicho
y Smith. esquema se muestra en la siguiente figura
(figura 1):----
La implementación es la siguiente:
1. El bloque de datos a cifrar es de 128
bits (16 bytes), que a su entrada se
divide en dos partes: la alta y la baja.
2. A los 8 bytes de la parte alta se les
somete a una transformación no lineal
controlada por un bit determinado de la
clave.
Tabla 2. Permutación Inversa IP-1.
Cada una de estas 16 iteraciones realiza una
serie de transformaciones y sustituciones, de
forma que el resultado de cada iteración, al que
llamaremos Ti, es la concatenación de las partes
Li y Ri, es decir, Ti = Li .Ri (1 <= i <= 16). Para
cada uno de estos pasos se verifica que:
Li = Ri-1
Ri = Li-1 + f(Ri-1, Ki)
Donde el símbolo + representa a la operación
de o exclusivo (esto será así mientras no se diga
lo contrario) y donde Ki es una clave de 48 bits
generada por la función generadora de claves
Ki=KS (i, K) siendo K la clave externa de 64
bits, dicha función será explicada más adelante.
Como se puede observar en el esquema general
del DES mostrado anteriormente, existe una
Figura 1. Esquema del DES
pequeña diferencia en la última iteración
respecto a las anteriores, es decir, que las partes
L y R no se permutan sino que se concatenan
En la entrada, se consideran los 64 bits del (R16 . L16). Dicho resultado se toma como
bloque (b1,b2,...,b64), estos se permutan a entrada para la permutación inversa. La razón
través de la permutación inicial IP (Tabla 1), por la cual la última iteración se hace de este
siendo el bloque de salida B0 el formado por el modo es para que el algoritmo sirva tanto para
bloque L0 de 32 bits concatenado con el R0, del cifrar como para descifrar (esto quedará claro
mismo tamaño. A dicha salida se le aplican una más adelante).
serie de transformaciones y sustituciones Tras la descripción general del algoritmo
(mediante la función f) en 16 iteraciones pasaré a explicar cada una de sus partes de
distintas. Finalmente se permuta de nuevo con forma más detallada.
la permutación inversa IP-1 (Tabla 2) Función de cifrado f y Cajas S
obteniendo el cifrado del bloque de 64 bits de la
entrada. La función f transforma los 32 bits del
5 5 4 3 2 1 1 0
8 0 2 4 6 8 0 2 bloque R i-1 mediante la subclaveki, en los 32
bits de f (R i-1, ki). La siguiente figura muestra
6 5 4 3 2 2 1 0
0 2 4 6 8 0 2 4 el esquema general de la función f (R i-1, ki):
6 5 4 3 3 2 1 0
2 4 6 8 0 2 4 6
6 5 4 4 3 2 1 0
4 6 8 0 2 4 6 8
5 4 4 3 2 1 0 0
7 9 1 3 5 7 9 1
5 5 4 3 2 1 1 0
9 1 3 5 7 9 1 3
6 5 4 3 2 2 1 0
1 3 5 7 9 1 3 5
6 5 4 3 3 2 1 0
3 5 7 9 1 3 5 7
Figura 2. Función f.
Tabla 1. Permutación Inicial IP.
4 0 4 1 5 2 6 3 Primero se expanden los 32 bits de R i-1 en un
0 8 8 6 6 4 4 2 bloque de 48 bits, utilizando la tabla de
3 0 4 1 5 2 6 3 expansión E (ver tabla 3).
9 7 7 5 5 3 3 1
3 0 4 1 5 2 6 3 32 1 2 3 4 5
8 6 6 4 4 2 2 0 4 5 6 7 8 9
3 0 4 1 5 2 6 2
7 5 5 3 3 1 1 9 8 9 10 11 12 13
3 0 4 1 5 2 6 2
6 4 4 2 2 0 0 8
3 0 4 1 5 1 5 2
5 3 3 1 1 9 9 7
3 0 4 1 5 1 5 2
4 2 2 0 0 8 8 6
3 0 4 0 4 1 5 2
3 1 1 9 9 7 7 5
12 13 14 15 16 17
16 25
24
24 25 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1 Tabla 5. Matriz de selección para el
bloque B1.
Tabla 3. Tabla de expansión E En la tabla anterior he resaltado algunas
casillas para hacer más fácil la comprensión de
Una vez obtenido el bloque se efectúa la estas cajas a partir del siguiente ejemplo:
operación o-exclusivo entre E(R i-1) y ki, y el B1 = 101101, S1 ( B1 ) = 0001.
resultado es dividido en 8 bloques Bj de 6 bits. cogiendo los bits b1 y b6 obtenemos la fila
Cada uno de los bloques Bj se usa como entrada correspondiente, en este caso la 11.
de una tabla de selección-sustitución Sj (Cajas y cogiendo los bits b2,b3,b4 y b5 obtenemos la
S), dichas cajas realizan una transformación no columna correspondiente, en este caso la 6 =
lineal que da como salida una secuencia de 4 0110.
bits, Sj( Bj ). Por lo que el resultado obtenido es el 1, que
expresado en binario con 4 bits es S1 ( B1 ) =
0001.
E ( R i-1 ) + Ki = B1 . B2 .B3 .B4 .B5 .B6 .B7 .
Por último, únicamente nos falta explicar el
B8
funcionamiento del generador de claves (KS),
que como comenté anteriormente explicaría en
Estas salidas, Sj( Bj ), se concatena para dar su debido momento.
lugar a 32 bits que son sometidos a la
permutación P (ver la tabla 4).
Generador de Claves
16 7 20 21
29 12 28 17 La función KS es la encargada de generar las
1 15 23 26 claves Ki = KS (i, k) para cada iteración. Donde
5 18 31 10 i es la iteración y k es la clave externa de 64 bits
donde los bits octavos (8, 16,...., 64) son de
2 8 24 14
paridad impar para proteger la clave ante errores
32 27 3 9 de lectura. El proceso de obtención de estas
18 13 30 6 claves internas se describe a continuación
22 11 4 25 (Figura 3):
Tabla 4. Permutación P.
Resumiendo, al final de este proceso nos
encontramos con una salida de la siguiente
forma:
P ( S1 ( B1 ) . S2 ( B2 ) ... S8 ( B8 ) )
Llegados a este punto únicamente nos falta
conocer el funcionamiento de las cajas S, es
decir, que operaciones realiza para obtener la
salida Sj( Bj ). El funcionamiento es sencillo,
cada una de estas 8 cajas tiene asociada una
matriz (ver Tabla 5). Como ya he comentado
anteriormente, los 6 bits Bj = b1b2b3b4b5b6 se
convierten en 4 bits que se corresponden con el
valor decimal de un elemento de la matriz Sj
cuya fila, viene determinada por el valor
decimal de los bits b1b6; y en columna, por el
número decimal correspondiente al binario
Figura 3. Generador de claves internas Ki.
b2b3b4b5 de los bits centrales de Bj.
Nota: El símbolo << representa el Resumiendo, la clave interna Ki queda de la
desplazamiento circular de bits a la izquierda (1 siguiente forma:
o 2 dependiendo de la iteración). Y no confundir
los registros Li y Ri de esta sección con los del Ki = EP2 (Li .Ri)
esquema general del DES.
Con esto queda completada la explicación de
Vamos a describir detalladamente este cómo el DES cifra la información quedando
esquema para facilitar su comprensión. únicamente por comentar la forma en la que la
descifra.
Los 64 bits de nuestra clave externa se
someten a una permutación de acuerdo con la El Descifrado
tabla EP1 (Ver tabla 6), que sin tomar los 8 bits
de paridad permutan los 56 restantes. La salida El descifrado se realiza utilizando el mismo
de esta permutación se divide en dos partes (L0 algoritmo pero de una forma distinta, es decir,
y R0). en la primera iteración se utiliza la clave interna
K16, la K15 en la segunda, y así hasta llegar a la
K1 para la última iteración. Esto se hace así
Permutación EP2 porque la permutación final IP-1 es la inversa de
Permutación EP1
la permutación inicial IP. Por otra parte:
57 49 41 33 25 17 9 14 17 11 24 1 5
1 58 50 42 34 26 18 3 28 15 6 21 10 Ri = Li-1
10 2 59 51 43 35 27 23 19 12 4 26 8 Li = Ri-1 + f(Li-1, Ki)
19 11 3 60 52 44 36 16 7 27 20 13 2
Donde el símbolo + sigue representando el o
63 55 47 39 31 23 15 41 52 31 37 47 55 exclusivo y donde R y L se refieren en este caso
a cada uno de los 32 bits del esquema general
7 62 54 46 38 30 22 30 40 51 45 33 48 (no al esquema del apartado de generación de
claves internas).
14 6 61 53 45 37 29 44 49 39 56 34 53
21 13 5 28 20 12 4 46 42 50 36 29 32
Seguridad del DES
Son varios los problemas existentes en cuanto
Tabla 6. Permutaciones EP1 y EP2 . al funcionamiento del DES. Dicho algoritmo
tiene diversas debilidades entre las que cabe
Los contenidos de los registros L0 y R0 se destacar las siguientes:
desplaza un bit a la izquierda para obtener a
través de la permutación EP2 (ver tabla 6) la El tamaño de la clave, 56 bits, hace que el
clave Ki. Las sucesivas claves internas se sistema sea vulnerable dado que el conjunto de
obtienen a partir de los registros Li y Ri claves resulta demasiado pequeño: 256
obtenidos después de realizar los sucesivos posibilidades.
desplazamientos a izquierdas de los contenidos
de los registros L y R, de forma que: Desde el punto de vista del criptoanálisis,
existen dos métodos de ataque:
Li = LSi (Li-1)
Búsqueda exhaustiva: usando un ataque con
Ri = LSi (Ri-1) texto original escogido. El texto original
escogido m, es cifrado con cada una de las n
Donde LS es un desplazamiento circular a posibles claves k hasta que Ek(m) = c, siendo c
izquierdas de forma que el número de bits a el texto cifrado conocido. El tiempo requerido
desplazar viene dado por la siguiente tabla es T = O(n) y la memoria S=O(1).
(Tabla 7) dependiendo de la iteración en la que
nos encontremos: Búsqueda en tablas: usando un ataque con
texto original escogido. Sea m el texto original
escogido; cada texto cifrado, ci = Eki(m), es
precalculado para i= 1, ..., n. Las claves ki son
Tabla 7. Relación entre la iteración y
el número de desplazamientos. ordenadas y, junto con los textos cifrados ci,
puestas en una tabla, de manera que la clave alguna como mejor se entiende esto es a través
correspondiente a un texto cifrado dado pueda de un ejemplo.
ser hallada en un tiempo T=O(1) con un
requerimiento de memoria de S = O(n). Supongamos que C0 = 1010...10 y D0 =
0101...01. En la siguiente tabla se puede
Problemas en el uso de las Claves observar como afectan los desplazamientos del
generador de claves a este tipo de llaves:
i Despl. Registro Li Registro Ri
Existen algunos problemas en función de las 0 0 1010...10 0101...01
claves externas que se hayan decidido utilizar, 1
2
1
1
0101...01
1010...10
1010...10
0101...01
ya que dependiendo de ellas la seguridad del 3
4
2
2
1010...10
1010...10
0101...01
0101...01
DES puede bajar muchísimo. 5 2 1010...10 0101...01
6 2 1010...10 0101...01
7 2 1010...10 0101...01
8 2 1010...10 0101...01
9 1 0101...01 1010...10
1 2 0101...01 1010...10
0
1 2 0101...01 1010...10
Claves débiles y Semidébiles 1
1 2 0101...01 1010...10
2
1 2 0101...01 1010...10
Existen un reducido número de claves 3
1 2 0101...01 1010...10
externas que generan las mismas claves 4
internas, es decir, que para una misma llave 1
5
2 0101...01 1010...10
podemos obtener k1 = k2 =...= k16. Esta 1
6
1 1010...10 0101...01
situación se da en el caso de que los registros L0
y R0 del generador de claves sea todo ceros o Tabla 9. Ejemplo de claves semidébiles
todo unos. Concretamente existen cuatro claves
externas para las que se da esta situación, y son En el ejemplo se ve claramente como los
las siguientes: desplazamientos circulares de los bits aplicados
01 01 01 01 01 01 01 01 a este tipo de llaves da lugar únicamente a 2
1F 1F1F1F 0E 0E0E0E llaves internas distintas. A continuación se
E0 E0E0E0 F1 F1F1F1 muestran las diferentes claves que dan lugar a
FE FEFEFEFEFEFEFE esta situación:
Tabla 8. Valores en hexadecimal de las llaves 01FE01FE01FE01FE
débiles FE01FE01FE01FE01
1FE01FE00EF10EF1
E01FE01FF10EF10E
En estos cuatro casos las operaciones de 01E001E001F101F1
cifrado y descifrado son iguales ya que al ser E001E001F101F101
todas las claves internas iguales el resultado de 1FFE1FFE0EFE0EFE
aplicar estas claves de la 1 a la 16 y de la 16 a la FE1FFE1FFE0EFE0E
1 es el mismo. Es decir, que se cumple que: 011F011F010E010E
1F011F010E010E01
E0FEE0FEF1FEF1FE
FEE0FEE0FEF1FEF1
Dk(Dk(M)) = M Tabla 10. Las 12 claves semidébiles
Ek(Ek(M)) = M Como ya hemos visto existen dos grupos
reducidos de llaves (débiles y semidébiles) que
A parte de estas, existen otro grupo de llaves no se aconseja utilizarlas. Sinembargo, esto no
llamadas semidébiles. Estas llaves únicamente nos supone ningún problema grave ya que
generan dos llaves internas distintas, es decir, disponemos de 256 posibles llaves por lo que no
una más que las llaves débiles. De esta forma, gastando las anteriormente citadas es suficiente
cada una de estas dos llaves se repetirá ocho para evitar el problema.
veces.
Uso de dos claves
En este caso, si expresamos en binario los
valores de los registros L0 y R0 del generador Con el objetivo de aumentar la seguridad del
de llaves, tendríamos que encontrarnos con DES, se pensó en la utilización de dos claves, es
series de la forma C = 0101...01 o D= 1010...10 decir, aplicarle el Des a cada bloque dos veces.
y su correspondiente D o C = 0000...00, Pero tras estudiar esta posibilidad, Merkel
0101...01, 1010...10 o 1111...11. Pero sin duda aseguró que utilizando un método criptográfico
por elección de mensaje, el coste para cn = Ek (mn + cn-1 ) mn = Dk (cn ) + cn-1
descifrarlo sería de 257 y no 2112 como se
suponía inicialmente.
Más adelante explicaré el triple DES que se El primer bloque de entrada al proceso DES
basa en esta idea pero cumpliendo con el está formado por la or exclusiva (representada
objetico inicial, es decir, multiplicar la por el símbolo +) entre el primer bloque del
seguridad del DES. mensaje y los 64 bits de un vector inicial, c0 =
VI, el cual es convenido, previamente, entre el
Complementariedad cifrador y el descifrador.
Existe la posibilidad de utilizar claves que Tiene la ventaja de que impide la supresión
sean complementarias al mensaje cifrado. Sean y/o inserción de bloques de texto cifrado, puesto
M' y K' los complementarios de los respectivos que en cualquier caso el receptor sería incapaz
M y K, se cumple que: de descifrar el criptograma recibido y, por lo
tanto, quedaría alertado de las posibles
intrusiones. Los ataques estadísticos también se
han complicado, debido a la interdependencia
C = Ek (M) del texocifrado a lo largo de todo el proceso. En
este caso, si aplicamos el mismo ejemplo
mediante el openssl pero con el modo cbc se
C' = Ek' (M') puede ver como la imagen queda totalmente
distorsionada siendo imposible relacionar la
La solución a este problema es tan sencillo imagen cifrada con la imagen original.
como el propuesto al problema de las llaves
débiles y semidébiles, basta con no utilizarlas. Para los modos de cifrado encadenado, es
decir, en nuestro caso para el modo cbc, existen
diferentes mecanismos para encadenar los
diferentes bloques:
Modos de Operación del DES
Encadenamiento de texto cifrado o
Existen distintos modos de cifrado para DES autosincronizado. El bloque de
estructuras de bloque entre las que cabe destacar cifrado/descifrado sólo depende del
las siguientes: bloque de cifrado/descifrado anterior.
ECB (ElectronicCode-Book), el texto original
se procesa en bloques disjuntos de 64 bits,
cuyos bloques de salida, también de 64 bits, se Este modo, autosincronizado, se utiliza en la
concatenan para formar el texto cifrado. Tiene protección de ficheros. Cuando se utiliza para la
el inconveniente de que es susceptible a ataques transmisión de datos, un error se puede
estadísticos y/o ataques sobre la clave, con un remediar, volviendo a mandar el mensaje, pero
texto original conocido, sobre todo cuando las cuando se cifra un fichero es importante
cabeceras de los textos tienen un formato asegurar que los posibles errores afectan al
estándar. Una forma sencilla de observar el menor número de bits. Sin embargo, este modo
funcionamiente de este método de cifrado es a no es muy útil para la autentificación de los
través del openssl. mediante el comando mensajes. Tiene una debilidad teórica en que el
openssl des-ecb -k "" aplicado para cifrar una mismo texto siempre se encripta de la misma
imagen, se puede ver como la imagen se manera (con la misma clave), pero tiene la
modifica pero se continua distinguiendo la ventaja que el encriptamiento no tiene que ser
imagen original. secuencial, ej. puede usarse para registros de
una base de datos.
CBC (Cipher Block Chaining), es un método
de cifrado en bloques encadenados, que consiste
en dividir el texto a cifrar en bloques y hacer
depender el bloque n-ésimo de texto
cifrado/descifrado del bloque n-ésimo -1:
Figura 4. DES autosincronizado para el
cifrado
Figura 7. DES con autentificación para
el descifrado
AREA DE OPORTUNIDADES
El modo triple DES es hoy en día el más
utilizado. Esto es así debido a que que en los
días que estamos y con la tecnología de la que
disponemos, no es excesivamente costoso
romper el DES. Así pues, existen métodos de
cifrado múltiple entre los que cabe destacar el
triple DES. Simplemente se trata de utilizar tres
Figura 5. DES auto-sincronizado para el llaves externas independientes para cifrar el
descifrado mismo texto de manera que las expresiones que
Encadenamiento de texto original y representan el cifrado y descifrado del mensaje
texto cifrado o DES con son las siguientes:
autentificación. El bloque cifrado
depende de los textos, original y c = E k3 (D k2 (E k1 (m)))
cifrado, anteriores.
m = D k1 (E k2 (D k3 (c)))
Donde c es el texto cifrado y m el texto a
cifrar. La idea es cifrar el texto en claro con un
clave y descifrarla con otra totalmente
independiente, y el resultado de este proceso se
vuelve a cifrar con una tercera clave también
independiente de las anteriores. De esta forma la
seguridad del DES aumenta considerablemente
siendo mucho más costoso romperlo.
VII. ALGORITMO ESTANDAR AVANZADO DE
CIFRADO (AES)
Figura 6. DES con autentificación para INTRODUCCION
el cifrado
En Enero de 1997 el Instituto Nacional de
Estándares y Tecnología de los Estados Unidos
(NIST-National Institute of Standards and
Tecnology) lanzó la convocatoria abierta a
nivel mundial para seleccionar el nuevo
estándar criptográfico AES Advanced
Encryption Standard ( Menezes A.,Oorschot P.
V., Vanstone S., 1996). Así mismo se fijaron
tres criterios de evaluación para calificar a los
candidatos y poder determinar el ganador de
este concurso. A saber: seguridad, costos y SubBytes, ShiftRows, MixColumns, y por último
características del algoritmo y su de KeySchedule (Angel Angel J.J., 2005).
implementación ( Daemen J., Rijmen V., Recordar que AES interpreta el bloque de
1999 ) . entrada de 128 bits, como una matriz 4x4 de
entradas de bytes, si el bloque es de 192 bits se
El 2 de Octubre del 2000, el NIST (National agregan 2 columnas más, si lo es de 256 se
Institute for Standards and Technology) agregan 4 columnas más.
anunció oficialmente que el algoritmo Rijndael
creado por los Belgas Joan Daemen y Vicent a 00 a01 a 02 a3
Rijmen ( Daemen J., Rijmen V., 2001). había
sido el ganador para usarse como el nuevo AES,
a 10 a11 a 12 a13
mostrando características como excelente a 20 a21 a 22 a23
tiempo en la implantación de la llave, bajo
requerimientos de memoria para ambientes con a 31 a32 a33 a33
restricción de espacio, sus operaciones están
entre las más fáciles de defender contra ataques.
Está asociada al bloque de 128bits.
a00a10a20a30a01a11a21a31a02a12a22a32a
El AES es un esquema que se basa en la 03a13a23a33
aplicación de una secuencia de transformaciones Es decir, tomando los primeros 4 bytes
sobre un bloque de bits de tamaño conforman la primera columna, los segundos 4
predeterminado. El diseño original de Rijndael bytes son la segunda columna, etc.
consiste en un cifrado por bloques con La regla aplica a los bloques de192 bits y 256
longitudes de llave y bloques variables, sin bits, obteniendo matrices de 6,y 8 columnas
embargo el AES únicamente contempla una respectivamente.
longitud fija de bloque de 128 bits y longitudes La matriz es la entrada del algoritmo AES, y va
de 128, 192 y 256 bits para la llave. cambiando en cada una de las rondas, se
denotará como[ aij ] y se llamará matriz estado.
DESCRIPCION Y PSEUDOCODIGO
La descripción de AES es simple si se cuentan AddRoundKey
con todos los elementos. Esta consiste en dos Esta transformación toma una matriz y
partes, la primera en el proceso de cifrado y la simplemente hace un XOR byte a byte con la
segunda en él se muestra la siguiente figura: correspondiente matriz de claves dependiendo
de la ronda en que nos encontremos.
Toma la matriz[aij ] y [ k ij ] y da como resultado
la matriz [aij ]⊕[aij ], es decir XOR entrada
De manera un poco más detallada el algoritmo por entrada, la matriz del bloque con la matriz
AES llega a ser: de la subclave correspondiente.
AES trabaja con bloques de datos de 128 bits y La matriz estado tiene 4 columnas y toma la
longitudes de claves de 128, 192, 256 bit. extensión de clave también 4 columnas. El
Además AES tiene 10, 12 o 14 vueltas programa de claves genera necesarias matices
respectivamente, cada vuelta de AES consiste de claves para todas las rondas.
en la aplicación de una ronda estándar, que ByteSub
consiste de 4 transformaciones básicas, la última En este caso a cada elemento de la matriz
ronda es especial y consiste de 3 operaciones estado(byte) se le sustituye por otro byte, que
básicas, añadiendo siempre una ronda inicial. depende del primero.
Por otro lado tener el programa de claves o
extensión de la clave. Por lo anterior la
descripción consiste en describir las
transformaciones básicas AddRoundKey,
Finalmente tenemos
0010 0001 = 21
Que puede obtenerse de la tabla directamente en
la intersección de la fila 7 y la columna b.
En términos de bits queda como Otro ejemplo a7
a7 = 10100111 = x7 + x5 + x2 + x + 1
a7-1 = x6 + x3 = 0100 1000 = 48
Se tiene de la tabla de inversos, en la
intersección de la fila a y la columna 7, y la
transformación lineal.
O en representación matricial
Finalmente el resultado de ByteSub puede
resumirse en la siguiente tabla conocida como Finalmente se tiene que 01011100 = 5c
S-Box AES. Que es la fila a y columna 7 de S-Box.
ShiftRows
La transformación ShiftRows se aplica a la
matriz estado, aplicando corrimientos a sus
columnas. Se aplica a la matriz [aij ], shifts
(corrimientos izquierdos circulares de bytes) a
los renglones, de la siguiente manera, recorre 0
bytes al primer renglón, 1 byte al segundo
renglón, 2 bytes al tercer renglón y 3 bytes
corridos al cuarto renglón.
La transformación ShiftRows, se define de la
siguiente manera:
a r ,c ´=ar ,(c+ shift (r , Nb ) modNb) , 0<r < 4 , 0 ≤ c< Nb
Por ejemplo la aplicación de ByteSub de 7b
sigue los siguientes pasos:
7b = 01111011 = x6 + x5 + x4 + x3 + x2 +x
7b-1 = x2 + x = 00000110 = 06
Que se obtiene de la tabla de inversos en la La primera fila queda igual. La segunda fila se
intersección de la fila 7 y la columna b. recorre un byte, como las tablas siguientes lo
Aplicando ahora la transformación lineal muestran:
Key Schedule
Aunque Rijndael está diseñado para manejar
muchos casos de longitudes de claves y de
La tercera columna mueve dos bytes bloques, finalmente AES definido en el estándar
circularmente: determina solo permitir los casos de bloques de
128 bits, y longitudes de claves de 128, 192 y
256. Por otra parte la longitud de 128 bits,
garantiza la seguridad del sistema hasta después
del año 2030, por lo que sólo consideraremos el
caso de claves 128 bits, aunque los algoritmos
pueden ser extendidos fácilmente a los casos
restantes.
El algoritmo de extensión de la clave es el
siguiente:
Finalmente la cuarta fila recorre 3 bytes La clave K se expande a una matriz de 4 filas y
circularmente Nb (Nr + 1) columnas.
Algoritmo de extensión
Key Expansion (byte Key [4 * N k] Word [Nb * (Nr +
1)]
For (i = 0; i < Nk ; i++)
MixColumns
MixColumns: a cada columna de la matriz [ aij ] W [i] = (key [4*i], key [4*i+1], key [4*i+2], key
la multiplica por una columna constante en [4*i+3]);
GF ( 28 ) [ X ] /(x 4 +1).
For (i = Nk; i<Nb * (Nr + 1); i++)
{ temp = W[i ~ 1];
if (i%Nk == 0)
temp=SubByte(RotByte(temp))^Rcon[i/Nr];
MixColumns toma cada columna A, y la manda W[i] = W[i~Nk] ^ temp;
a otra columna A´, que se obtiene al multiplicar
A por un polinomio constante }
8 4 3 2
c ( x ) ∈GF ( 2 ) [ x ] /(x +1), c ( x ) =03 x +01 x + 01 x +02
, entonces A´= A c(x), como se vio en los En este caso Nb = Nk = 4, y Nr = 10
antecedentes, este producto se puede representar
por la siguiente matriz. La parte verde verifica que
For (i=0; i<4; i++)
W [i] = (key [4*i], key [4*i+1], key [4*i+2], W [i] = (key [4*i], key [4*i+1], key [4*i+2],
key [4*i+3]); key [4*i+3]);
W [0] = (key [0], key [1], key [2], key [3]); For (i = Nk; i<Nb * (Nr + 1); i++)
W [1] = (key [4], key [5], key [6], key [7]); { temp = W[i ~ 1];
W [2] = (key [8], key [9], key [10], key [11]); if (i%N k == 0)
temp=SubByte(RotByte(temp)) ^ Rcon[i/Nr];
W [3] = (key [12], key [13], key [14], key [15]);
W[i] = W [i~Nk] ^ temp;
Particularmente:
N4 = 4; Nb * (Nr + 1) = 4 (10 + 1) =
Es decir las primeras 4 columnas de la extensión 44;
son la clave original.
Tomando como ejemplo el vector de prueba For (i=4; i<44; i++)
para el caso 128.
Cipher Key = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f
{ temp = W [i ~ 1];
3c
For Nk = 4, which results in
w0 = 2b7e1516 w1 = 28aed2a6 w2 = abf71588 w3 = If(i%Nk == 0) temp = SubByte
09cf4f3c
(RotByte (temp)) ^ Rcon [i/Nk];
Quedando como W [i] = W [i ~ Nk]; ^ temp;
Unsigned char clave [4] [4] = {0x2b, 0x28, 0xab,
0x09, }
0x7e, 0xae, 0xf7, 0xcf, Se observa que si i es múltiplo de 4, entonces
W[i] sigue un procedimiento especial, en otro
0x15, 0xd2, 0x15, 0x4f, caso simplemente W[i] es = W [i ~ 1] Xor W [i
~ 4].
0x16, 0xd6, 0x88, 0x3c}; En el caso de i = 4 se tiene lo siguiente:
{ temp = W[3];
If (4%4 ==0) temp = SubByte (RotByte (temp))
^ Rcon [4/4];
W [4] = W [0] ^ temp;
Ahora se observa con detalle lo que describe la }
parte de rojo. En este caso, de bloques de 4
columnas, claves de 4 columnas, y por lo tanto Entonces el cálculo de W[4], es el siguiente:
10 rondas.
1) temp= RotByte (temp)
Key Expansion (byte Key [4 * N k] Word [Nb *
(Nr + 1)]
2) temp = SubByte (temp)
{
3) temp = temp xor Rcon [4/4]
For (i = 0; i < Nk ; i++)
Rotbyte es una rotación circular del byte más W [4] = W[0] ^ temp;
arriba de la columna.
}
W [4] = W [0] ^ temp;
Se ha terminado con la extensión de la primera
columna de la clave, las siguientes tres
columnas i=5, 6, 7 no son múltiplo de 4, por lo
SubByte es la sustitución de byte, de acuerdo a que su cálculo se reduce a un simple Xor con la
la tabla ya conocida, de todos los bytes de la columna W [i-4].
columna
For (i= 5, 6, 7)
{ temp = W [i ~ 1];
W [i] = W [i ~ 4] ^ temp;
Finalmente se aplica un Xor
temp = SubByte (RotByte (temp)) ^ Rcon [4/4]; }
Donde, Roon se obtiene de acuerdo a la
siguiente forma:
Rcon[i] = (RC[i],00,00,00);
RC [1] = 1;
RC [1] = x·RC [i ~ 1] = x i~1;
Es decir, desde el punto de vista de polinomios:
RC [1] = 1 RC [6] = X5
= 20
RC [2] = X = 2 RC [7] = X6 = 40
2
RC [3] = X = 4 RC [8] = X7 = 80
3
RC [4] = X = 8 RC [9] = X8 = X4 +
3
X + X+ 1 = 1b
RC [5] = X4 = 10 RC [10] = X9 = X5 +
4 2
X + X + x = 36
Así es xor queda de la siguiente manera:
SubByte (RotByte (temp)) ^ Rcon [1];
La siguiente columna i=8, es múltiplo de 4, por
lo que hay que seguir la misma regla que la
columna 4, es decir:
Para terminar con este cálculo, tenemos un xor { temp = W[7];
con la columna W [i~4].
If (8%2 == 0) temp = SubByte (RotByte (temp))
i = 4; ^ Rcon [8/2];
{ temp = W[3]; W[8] = W[4]^temp;
if (4%4 == =) temp = SubByte (RotByte (temp)) }
^ Rcon [4/4];
Así sucesivamente hasta llenar las 44 columnas Se realiza una operación
de que consiste este caso el programa de clave. S ´ ( x )=c ( x ) ⊗S ( x) donde
Hasta el momento se ha revisado los pasos 3 2
necesarios para poder entender el algoritmo c ( x ) =03 x + 01 x + 01 x +02, S y S´ serán
AES. la matriz resultado y la matriz de entrada
EJEMPLO respectivamente común (Vázquez Fernández
Para una mejor comprensión se muestra un D.M., 2007).
ejemplo explicativo en el que se ve como actúa
el cada una de estas funciones sobre una clave y APLICACIONES
un bloque de datos, teniendo en cuenta que la
ejecución de las funciones es la siguiente: En la actualidad es el más conocido y
AddRoundKey ByteSub ShiftRows utilizado en los criptosistemas de llave privada
MixColumns AddRoundKey. para la implementación de diversas aplicaciones
Ejemplo: Se aplica el algoritmo AES con los ya que resulta ser de fácil ejecución, bajo en
siguientes datos: consumo de recursos y es uno de los más
Bloque de datos: 32 43 f6 a8 88 5a 30 seguros.
8d 31 31 98 a2 e0 37 07 34
Clave: 2b 7e 15 16 28 ae d2 AES se utiliza en el cifrado de datos en
a6 ab f7 15 88 09 c7 4f 3c algunas conexiones de dispositivos
inalámbricos, que son los más usados en la
Se aplica la función AddKey conexión de diversos servicios informáticos. Se
usa de igual manera para transferencia bancarias
o pagos electrónicos, para encriptacion de
información sensible de una empresa o
gobierno.
Bloque de entrada ⊕ Clave=Estado Intermedio
1
Para cada elemento del bloque de entrada se Ingenieros alemanes del Instituto Frunhofer
realiza una operación XOR con su equivalente (SIT) han desarrollado un sistema para codificar
en posición del bloque de clave. las telecomunicaciones móviles sobre VolP, es
Se aplica la función ByteSub decir a través de internet. Esto puede dar el
impulso definitivo a la convergencia de los
Estado Intermedio 1 → S-box → Estado Intermedio 2 móviles con WiFi e internet.
El prototipo se basa en la aplicación J2ME
(Plataforma Java) y utiliza un Algoritmo
Advanced Encryption Standard (AES) para
codificar un canal reservado para las
Para cada elemento se realizan dos comunicaciones móviles a través de IP. De esta
operaciones, realmente equivalentes a buscar en manera puede analizar protocolos criptográficos
la tabla denominada S-BOX los dos dígitos que para codificar un canal reservado para las
forman cada elemento y se obtiene el byte a comunicaciones móviles a través de IP. De esta
sustituir. manera puede analizar protocolos
criptográficos y las cualidades de
Función ShiftRows funcionamiento de los teléfonos móviles
independientemente de la calidad de señal, lo
que garantiza una comunicación segura a través
de internet.
El estándar IEE 802.11i, también conocido
Estado Intermedio 2 → Estado Intermedio 3 como WPA2, es una mejora al estándar 802.11
Dependiendo del número de fila en el que se que especifica mecanismos de seguridad para la
encuentre se realiza uno dos o n redes inalámbricas. El estándar fue ratificado y
desplazamientos (corriendo los elementos hacia reemplazado por el protocolo WPA, que había
la izquierda). sido introducido previamente por la alianza
Aplicación de la función MixColumns WiFi como solución a las inseguridades de
WEP. WPA o 802.11i hace uso del estándar de
cifrado avanzado (AES) para proporcionar
autentificación de origen, integridad y
confidencialidad a la red mediante en los
cifrados en los propios routers.
Utimaco el principal proveedor mundial de
Estado Intermedio 3 → Estado Intermedio 4 seguridad profesional de TI. Ofrecen soluciones
para la seguridad móvil en las áreas de
autenticación de alto nivel, incluídas técnicas VIII. REFERENCIAS
biométricas, cifrado y verificaciones de [1]Pino Caballero Gil, Introducción a la Criptografía, 2da
integridad, y la división de seguridad para edición. 2003
aplicaciones electrónicas de negocios, [2]Basurto-Quijada R. (2008), Implementación de un
gubernamentales y pagros de internet. Las Criptosistemas de Llave Pública – Llave Privada Basado
en AES y ECC. (Tesis de maestría inédita). Universidad
principales características de seguridad y Juárez Autónoma de Tabasco, Tabasco, México.
criptografía que utiliza esta empresa se basa en [3]Simon Sinhg. The code book. How to make it, break it,
un cifrado seguro comprobado (Algoritmo AES hack it, crack it (2001. De la corte Press.
de 256 bits). Este protege la valiosa información [4]Fúster Sabater Amparo, De la Guía Martínez Dolores,
Hernández Encinas Lios, Montoya Vitini Fausto,Muñoz
de la compañía y su información personal, Masqué Jaime (2001). Técnicas Criptográficas de protección
protege los archivos en contra de accesos no de datos. Segunda edicación. Editorial Alfaomega.
autorizados y realiza un intercambio seguro de [5]David Revelles. Criptografía. Códigos secretos que
datos que no requieren una infraestructura cambiaron la historia. Clío Revista de Historia Núm.84,
(2008) .
común (Vázquez Fernández D.M., 2007). [6]Diffie Whitfield and Marin E. Hellman. New Directions
in Cryptography. Information Theory (2003) .IEEE
Se ha aplicado el estándar AES en el control Transactions on . (Volume no. 22), Issue: 6.
[7]Grossman, S. I. y Flores Godoy, J. (2012). Álgebra
de tráfico vehicular. Donde se ha implementado Lineal, séptima edición. McGraw-Hill, México.
el algoritmo AES -128 en un micro controlador [8]Sánchez., J. M. (2013). Revista: Pensamiento Matemático
de 8 bits ATMega 128 con base en la necesidad de la Universidad Politécnica de Madrid. Criptología Nazi.
del envío de esta información confidencial de Los Códigos Secretos de Hitler.
http://www2.caminos.upm.es/Departamentos/matematicas/r
tráfico vehicular por una red IP (internet Procol) evistapm/revista_impresa/vol_III_num_1/hist_mat_1_crito_
a un servidor operando con software LabVIEW nazi.pdf . Recuperado el 20 de octubre de 2015.
(Laboratorio Instrumentation Engineering [9]Fernández, Santiago. (2013). La Criptología Clásica.
Workbench), donde se establece la http://www.hezkuntza.ejgv.euskadi.eus/r43-
573/es/contenidos/informacion/dia6_sigma/es_sigma/adjunt
comunicación encriptada entre el servidor y el os/sigma_24/9_Criptografia_clasica.pdf. Recuperado el 2o
controlador del tráfico, se realiza en LabVIEW de octubre de 2015.
el cifrado descifrado AES, mostrando los [10]Soler, J. R. (2012). Una introducción a la criptografía
tiempos y resultados finales de los procesos clásica.
http://www.criptohistoria.es/files/CIFRAS.pdf.
implicados en un ciclo de cifrado (Higuera Recuperado el 20 de octubre de 2015.
Neira B. S. y Pedraza Luis F., 2013). [11]Introducción a la Criptografía. (2013).
http://www.dma.fi.upm.es/java/matematicadiscreta/aritmetic
amodular/polialfabeto.html. Recuperado el 20 de octubre de
AREAS DE OPORTUNIDAD 2015.
[12]Universidad Nacional Autónoma de México, Facultad
de Ingeniería. Fundamentos de Criptografía (2015).
Debemos reconocer que en una sociedad que
http://redyseguridad.fi-
se aventura más hacia la globalización cobra p.unam.mx/proyectos/criptografia/criptografia/. Recuperado
mayor importancia el proteger nuestra el 20 de octubre de 2015.
información y en este sentido cobra relevancia https://www.dropbox.com/s/uy2j1ljl7y4962e/cifradoTransp
osicion.jar
los recientes conceptos criptográficos. [13]Eli Biham , Orr Dunkelman, Sprnger; July 29,2012,
(2011), Techniques for Cryptanalysis of Block Ciphers.
Podemos decir que es altamente improbable [14]Jack Copeland; (2006), Colossus: The Secrets of
Bletchley Park's Code-breaking Computers.
que existan claves débiles o semidébiles en [15]Steven D. Galbraith, Cambridge University Press
AES, debido a la estructura de su diseño, siendo (February 2012) . The Mathematics of Public Key
que esta estructura busca eliminar la simetría de Cryptography.
las subclaves. En efecto, el método más [16]Alejandro Junior Huahuala Chaupi, Algoritmo de
encriptacion de archivo de texto plano, Revista_11_08.pdf.
eficiente conocido hasta la fecha para recuperar (2010).
la clave a partir de un texto de un par de texto http:/ www. uap.edu.pe/Investigaciones/Esp/Revista_11_Esp_08
cifrado - texto claro es la búsqueda exhaustiva, [17]Arturo Quintantes Sierra, RSA y la aritmética modular,
por lo que podemos considerar a este algoritmo Boletín ENIGMA del Taller de Criptografía (2011).
http:/ www. anf.es/pdf/RSAaritmetica Cargallo
sigue siendo uno de los más seguros en la Tuzón Jorge, DES, 2013.
actualidad. http://www.spi1.nisu.org/recop/al02/jgargallo/index
.html
Ha sido la intención desde la aparición de [18]Angel Angel José de Jesús, AES-Advanced Encryption
este estándar que sea un algoritmo robusto, por Standard, 2005.
lo menos hasta la aparición de máquinas futuras http://computacion.cs.cinvestav.mx/jjangel/aes/AES_v2005
_2aParte.pdf
de supercomputación, como la soñada
[19]Joan Daemen, Vincent Rijmen. AES Proposal:
computación cuántica que debilite seriamente su Rijndael. 1999.
seguridad. [20]J. Daemen, V. Rijmen. The Design of Rijndael.
Springer Verlag 2001.
[21]A. Menezes, P. van Oorschot, S. Vanstone. Handbook
of Applied Crypto- graphy. CRC Press 1996.
[22]Vázquez Fernández D. Miguel, EL ALGORTIMO
CRIPTOGRAFICO AES PARA PROTECCIÓN DE
DATOS, 2007.
http://www.iit.upcomillas.es/pfc/resumenes/46ea7511774d8.
pdf
[23]Brayan Steven Higuera Neira, Luis F. Pedraza,
Implementación del algoritmo criptográfico AES para un
controlador de tráfico vehicular,
http://revistas.udistrital.edu.co/ojs/index.php/Tecnura/article
/view/7236/8892