Professional Documents
Culture Documents
Algoritmos
criptogrfic
os
-1 -
Algoritmos de Criptografa
-2 -
Algoritmos de Criptografa
ndice:
Criptografa Clsica................................................................................................................3
1.1. Algoritmos Clsicos de Cifrado...................................................................................3
1.1.1. Cifrados por Sustitucin........................................................................................3
1.1.2. Cifrados Polialfabticos........................................................................................4
1.1.3. Cifrados de Transposicin.....................................................................................5
1.2. Mquinas de Rotores. La Mquina ENIGMA.............................................................6
1.2.3. Otras Mquinas de Rotores...................................................................................7
Cifrados por Bloques..............................................................................................................8
2.1. Cifrado de producto.....................................................................................................8
2.1.1. Redes de Feistel....................................................................................................9
2.1.2. Cifrados con Estructura de Grupo.........................................................................9
2.1.3. Algoritmo CAST...................................................................................................9
2.2. El Algoritmo DES......................................................................................................10
2.3. Variantes de DES........................................................................................................11
2.3.1. DES Mltiple:.....................................................................................................11
2.4. Algoritmo IDEA.........................................................................................................11
2.5. El algoritmo Rijndael (AES)......................................................................................13
2.5.1. Las Rondas de AES.............................................................................................14
2.5.2. Clculo de las Subclaves.....................................................................................16
2.6. Modos de Op. para Algoritmos de Cifrado por Bloques............................................17
2.6.1. Modo ECB..........................................................................................................17
2.6.2. Modo CBC..........................................................................................................18
2.6.3. Modo CFB...........................................................................................................18
2.6.4. Modo OFB..........................................................................................................19
Algoritmos Asimtricos de Cifrado......................................................................................20
3.1. Aplicaciones de los Algoritmos Asimtricos.............................................................20
3.2. El Algoritmo RSA......................................................................................................21
3.2.1. Seguridad del Algoritmo RSA............................................................................22
3.2.2. Vulnerabilidades de RSA....................................................................................22
3.3. Otros Algoritmos Asimtricos....................................................................................23
3.3.1. Algoritmo de Diffie-Hellman..............................................................................23
3.3.2. Algoritmo de ElGamal........................................................................................24
3.3.3. Algoritmo de Rabin.............................................................................................24
3.3.4. Algoritmo DSA...................................................................................................25
Bibliografa...........................................................................................................................26
-3 -
Algoritmos de Criptografa
-4 -
Algoritmos de Criptografa
2. Se aaden al final de la palabra las restantes letras del alfabeto (sin duplicar letras).
SEGURIDABCFH..................XYZ
E
C
O
Z
G
F
P
U
H
Q
R
J
T
I
K
V
D
L
W
A
M
X
-5 -
Algoritmos de Criptografa
La tabla es la siguiente:
a
b
c
x
y
z
a
A
B
C
b
B
C
D
c
C
D
E
X
Y
Z
Y
Z
A
Z
A
B
x
X
Y
Z
y
Y
Z
A
Z
Z
A
B
U
V
W
V
W
X
W
X
Y
Los alfabetos forman las columnas y siempre empiezan por la letra de la cabecera.
Mtodo:
1. Se busca una palabra clave fcil de recordar.
2. Se escribe la palabra debajo del texto en claro, repitindose tantas veces como sea
necesario.
3. Cada letra del texto en claro se codifica con el alfabeto de la tabla marcado por la letra
inferior, o sea, la letra de la clave que corresponde.
Ejemplo:
CLAVE:
Texto en claro :
Clave
Criptograma
ADIOS
ESTO ES CRIPTOLOGIA
AD I O S A D I O S AD I O S AD
EVB D WS FZWHTRTCYI D
-6 -
Algoritmos de Criptografa
Por ejemplo, supongamos que queremos cifrar el texto Este es un trabajo para la asignatura de
Redes", con n = 5 y la permutacin {3, 4, 2, 5, 1} ya que como clave hemos escogido video.
Colocamos el texto en una tabla y obtenemos:
V
1
E
e
a
a
a
g
r
I
2
s
s
t
j
r
n
a
R
D
3
t
r
o
a
a
a
e
E
4
e
u
a
s
t
d
d
O
5
n
b
p
l
i
u
e
e
-7 -
Algoritmos de Criptografa
La clave la constituan las posiciones iniciales de tres tambores o rotores que el ingenio posea en su
parte frontal.
En la figura 1.1 podemos apreciar un esquema de esta mquina, llamada ENIGMA. Los rotores no
son ms que tambores con contactos en su superficie y cableados en su interior, de forma que con
cada pulsacin del teclado, la posicin de stos determina cul es la letra que se ha de iluminar.
Cada vez que se pulsa una tecla el primer rotor avanza una posicin; el segundo avanza cuando el
anterior ha dado una vuelta completa y as sucesivamente. El reflector no exista en los primeros
modelos, se introdujo posteriormente para permitir que la misma mquina sirviera tanto para cifrar
como para descifrar, como veremos ms adelante.
ENIGMA pronto llam la atencin del ejrcito alemn, que la utiliz de forma intensiva a lo largo
de la II Guerra Mundial. Adems se le aplicaron varias mejoras.
Aunque ENIGMA pareca virtualmente imposible de romper, presentaba una serie de debilidades,
tanto en su diseo como en los mecanismos empleados para utilizarla, que fueron aprovechadas por
el ejrcito aliado.
El protocolo empleado por el ejrcito alemn para colocar los rotores al principio de cada mensaje
consista en escoger una posicin de un libro de claves, y enviar tres letras cualesquiera dos veces,
para evitar posibles errores. En realidad se estaba introduciendo una redundancia tal en el mensaje
que permita obtener sin demasiados problemas la clave empleada. Se construy un aparato que
permita descifrar los mensajes, y se le bautiz como Ciclmetro.
En 1938 Alemania cambi el protocolo, lo cual oblig a los matemticos polacos a refinar su
sistema, aunque bsicamente se seguan enviando tres letras repetidas.
La fuerza de la mquina ENIGMA radicaba en que tras codificar cada letra se giran los rotores, lo
cual hace que la permutacin que se aplica a cada letra sea diferente, y que esa permutacin adems
no se repita hasta que los rotores recuperen su posicin inicial. Tengamos en cuenta que hay 17576
posiciones iniciales de los rotores, y 60 combinaciones de tres rotores a partir de los cinco de entre
los que se puede elegir. La potencia del mtodo de criptoanlisis empleado radica en que bastaba
con rastrear dentro del espacio de posibles configuraciones para encontrar aquella que llevara a
cabo la transformacin esperada. No disponer de dicho emparejamiento hubiera complicado
enormemente el criptoanlisis, tal vez hasta el punto de hacerlo fracasar.
-8 -
Algoritmos de Criptografa
Toda la seguridad est basada en la privacidad de esta clave secreta, llamada simtrica porque es la
misma para el emisor y el receptor.
-9 -
Algoritmos de Criptografa
Muchos de los cifrados de producto tienen en comn que dividen un bloque de longitud n en dos
mitades, L y R. Se define entonces un cifrado de producto iterativo en el que la salida de cada ronda
se usa como entrada para la siguiente segn la relacin (ver figura 2.1):
Li Ri 1
Ri Li 1 f ( Ri 1 , K i )
si i < n
L n Ln 1 f ( R n 1 , K n )
R n R n 1
Este tipo de estructura se denomina Red de Feistel, y es empleada en multitud de algoritmos, como
DES, Lucifer, FEAL, CAST, Blowfish, etc. Para descifrar bastar con aplicar el mismo algoritmo,
pero con las Ki en orden inverso.
-10 -
Algoritmos de Criptografa
Se calcula un total de 16 valores de K i (figura 2.4), uno para cada ronda, efectuando primero una
permutacin inicial EP1 sobre la clave de 64 bits, llevando a cabo desplazamientos a la izquierda de
cada una de las dos mitades de 28 bits resultantes, y realizando finalmente una eleccin
permutada (EP2) de 48 bits en cada ronda, que ser la K i. Los desplazamientos a la izquierda son de
dos bits, salvo para las rondas 1, 2, 9 y 16, en las que se desplaza slo un bit. Ntese que aunque la
clave para el algoritmo DES tiene en principio 64 bits, se ignoran ocho de ellos un bit de paridad
por cada byte de la clave, por lo que en la prctica se usan slo 56 bits.
-11 -
Algoritmos de Criptografa
Figura 2.4.- Clculo de las Ki para el algoritmo DES. EP1 representa la primera eleccin permutada, que slo
conserva 56 bits de los 64 de entrada, y EP2 representa la segunda, que se queda con 48 bits. El signo <<
representa un desplazamiento de bits a la izquierda (uno o dos dependiendo de la ronda).
Para descifrar basta con usar el mismo algoritmo empleando las K i en orden inverso.
Ventajas del algoritmo:
1. Es el ms extendido en el mundo.
2. Es muy rpido y fcil de implementar.
-12 -
Algoritmos de Criptografa
X2
X3
X4
X1
X2
X3
X4
-13 -
Algoritmos de Criptografa
La salida de cada iteracin sern los cuatro sub-bloques obtenidos en los pasos 11, 12, 13 y 14, que
sern la entrada del siguiente ciclo, en el que emplearemos las siguientes seis subclaves, hasta un
total de 48. Al final de todo intercambiaremos los dos bloques centrales.
Despus de la octava iteracin, se realiza la siguiente transformacin:
1. Multiplicar X1 por Z49.
2. Sumar X2 con Z50.
3. Sumar X3 con Z51.
4. Multiplicar X4 por Z52.
Las primeras ocho subclaves se calculan dividiendo la clave de entrada en bloques de 16 bits. Las
siguientes ocho se calculan rotando la clave de entrada 25 bits a la izquierda y volviendo a dividirla,
y as sucesivamente.
Las subclaves necesarias para descifrar se obtienen cambiando de orden las Z i y calculando sus
inversas para la suma o la multiplicacin, segn la tabla 2.1. Puesto que 2 16 + 1 es un nmero primo,
nunca podremos obtener cero como producto de dos nmeros, por lo que no necesitamos
representar dicho valor. Cuando estemos calculando productos, utilizaremos el cero para expresar el
nmero 216 un uno seguido de 16 ceros.
-14 -
Algoritmos de Criptografa
Sus autores son dos, los belgas Joan Daemen y Vincent Rijmen, de ah su nombre Rijndael. Tiene
como peculiaridad que todo el proceso de seleccin, revisin y estudio tanto de este algoritmo como
de los restantes candidatos, se efectu de forma pblica y abierta, por lo que, toda la comunidad
criptogrfica mundial ha participado en su anlisis, lo cual convierte a Rijndael en un algoritmo
perfectamente digno de la confianza de todos.
AES es un sistema de cifrado por bloques, diseado para manejar longitudes de clave y de bloque
variables, ambas comprendidas entre los 128 y los 256 bits.
AES es un algoritmo que se basa en aplicar un nmero determinado de rondas a un valor intermedio
que se denomina estado. Dicho estado puede representarse mediante una matriz rectangular de
bytes, que posee cuatro filas, y N b columnas. As, por ejemplo, si nuestro bloque tiene 160 bits
(tabla 2.2), Nb ser igual a 5.
a0,0
a1,0
a2,0
a3,0
a0,1
a1,1
a2,1
a3,1
a0,2
a1,2
a2,2
a3,2
a0,3
a1,3
a2,3
a3,3
a0,4
a1,4
a2,4
a3,4
La clave tiene una estructura anloga a la del estado, y se representar mediante una tabla con
cuatro filas y Nk columnas. Si nuestra clave tiene, por ejemplo, 128 bits, Nk ser igual a 4 (tabla 2.3).
k0,0
k1,0
k2,0
k3,0
k0,1
k1,1
k2,1
k3,1
k0,2
k1,2
k2,2
k3,2
k0,3
k1,3
k2,3
k3,3
El bloque que se pretende cifrar o descifrar se traslada directamente byte a byte sobre la matriz de
estado, siguiendo la secuencia a 0,0, a1,0, a2,0, a3,0, a0,1, y anlogamente, los bytes de la clave se
copian sobre la matriz de clave en el mismo orden, a saber, k 0,0, k1,0, k2,0, k3,0, k0,1.
Siendo B el bloque que queremos cifrar, y S la matriz de estado, el algoritmo AES con n rondas
queda como sigue:
1. Calcular K0,K1, Kn subclaves a partir de la clave K.
2. S B K0
3. Para i = 1 hasta n hacer
4.
Aplicar ronda i-sima del algoritmo con la subclave K i.
El algoritmo de descifrado consistir en aplicar las inversas de cada una de las funciones en el
orden contrario, y utilizar los mismos Ki que en el cifrado, slo que comenzando por el ltimo.
Es un algoritmo resistente al criptoanlisis tanto lineal como diferencial y uno de los ms seguros en
la actualidad ya que para recuperar la clave a partir de un par texto cifrado-texto claro hay que
realizar una bsqueda exhaustiva.
-15 -
Algoritmos de Criptografa
Puesto que AES permite emplear diferentes longitudes tanto de bloque como de clave, el nmero de
rondas requerido en cada caso es variable. En la tabla 2.4 se especifica cuantas rondas son
necesarias en funcin de Nb y Nk.
Nb=4 (128 bits)
10
12
14
Tabla 2.4: Nmero de rondas para AES en funcin de los tamaos de clave y bloque.
Siendo S la matriz de estado, y K i la subclave correspondiente a la ronda i-sima, cada una de las
rondas posee la siguiente estructura:
1. S ByteSub(S)
2. S DesplazarFila(S)
3. S MezclarColumnas(S)
4. S Ki S
Estas cuatro funciones estn diseadas para proporcionar resistencia frente a criptoanlisis lineal y
diferencial. Cada una de las funciones tiene un propsito:
Funciones DesplazarFila y MezclarColumnas permiten obtener un alto nivel de difusin a
lo largo de varias rondas.
Funcin ByteSub consiste en la aplicacin paralela de s-cajas.
La capa de adicin de clave es un simple or-exclusivo entre el estado intermedio y la
subclave correspondiente a cada ronda.
La ltima ronda es igual a las anteriores, pero eliminando el paso 3.
Funcin ByteSub
La transformacin ByteSub es una sustitucin no lineal que se aplica a cada byte de la matriz de
estado, mediante una s-caja 8*8 invertible, que se obtiene componiendo dos transformaciones:
1. Cada byte (28) genera el polinomio irreducible m(x) = x 8 +x4 +x3 +x+1, y sustituido por su
inversa multiplicativa. El valor cero queda inalterado.
2. Despus se aplica la siguiente transformacin afn en GF(2), siendo x 0, x1, , x7 los bits del
byte correspondiente, e y0, y1, , y7 los del resultado:
y0
y
1
y2
x0
x
1
1
1
1 0 0 0 1 1 1 1
1 1 0 0 0 1 1 1
1 1 1 0 0 0 1 1
y3
y4
y5
y
6
y 7
1 1 1 1 0 0 0 1
*
1 1 1 1 1 0 0 0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0
0 0 0 1 1 1 1 1
x2
x3
x4
0
1
x5
x6
x 7
1
0
-16 -
Algoritmos de Criptografa
Funcin DesplazarFila
Esta transformacin consiste en desplazar a la izquierda cclicamente las filas de la matriz de
estado. Cada fila fi se desplaza un nmero de posiciones ci diferente. Mientras que c 0 siempre es
igual a cero (esta fila siempre permanece inalterada), el resto de valores viene en funcin de N b y se
refleja en la tabla 2.5.
Nb
4
6
8
c1
1
1
1
c2
2
2
3
c3
3
3
4
-17 -
Algoritmos de Criptografa
Funcin MezclarColumnas
Para esta funcin, cada columna del vector de estado se considera un polinomio cuyos coeficientes
pertenecen a GF(28) y se multiplica mdulo x4 + 1 por:
c(x) = 03x4 + 01x2 + 01x + 02
donde 03 es el valor hexadecimal que se obtiene concatenando los coeficientes binarios del
polinomio correspondiente en GF(28), en este caso 00000011, o sea, x+1, y as sucesivamente.
La inversa de MezclarColumnas se obtiene multiplicando cada columna de la matriz de estado por
el polinomio:
d(x) = 0Bx4 + 0Dx2 + 09x + 0E
Rc(j) = (R(j), 0, 0, 0)
-18 -
Algoritmos de Criptografa
Figura 2.6: Relleno (padding) de los bytes del ltimo bloque al emplear un algoritmo de
cifrado por bloques.
En segundo lugar, como hemos comentado, los algoritmos simtricos encriptan bloques de texto
aplicando cifrados de bloques. El tamao de los bloques puede ser constante o variable segn el tipo
de algoritmo. Tienen 4 formas de funcionamiento:
Ventajas:
- Permite codificar los bloques independientemente de su orden, lo cual es adecuado para
codificar bases de datos o ficheros en los que se requiera un acceso aleatorio.
- Tambin es resistente a errores, pues si uno de los bloques sufriera una alteracin, el resto
quedara intacto.
Desventajas:
- Si el mensaje presenta patrones repetitivos, el texto cifrado tambin los presentar, y eso es
peligroso, sobre todo cuando se codifica informacin muy redundante (como ficheros de
texto), o con patrones comunes al inicio y final (como el correo electrnico). Frgil
mediante ataque estadstico.
-19 -
Algoritmos de Criptografa
Pero, dos mensajes idnticos se codificarn de la misma forma usando el modo CBC, por lo que se
emplea un vector de inicializacin, como bloque inicial de la transmisin. Este vector ser
descartado en destino, pero garantiza que siempre los mensajes se codifiquen de manera diferente,
aunque tengan partes comunes.
Para decodificar se invierte el proceso
-20 -
Algoritmos de Criptografa
-21 -
Algoritmos de Criptografa
-22 -
Algoritmos de Criptografa
Otra aplicacin de los algoritmos asimtricos es la autentificacin de mensajes que nos permiten
obtener una firma digital a partir de un mensaje. Dicha firma es mucho ms pequea que el mensaje
original, y es muy difcil encontrar otro mensaje que de lugar a la misma.
Ejemplo:
Supongamos que A recibe un mensaje m de B y quiere comprobar su autenticidad. Para ello B
genera un resumen del mensaje r(m) (ver figura 3.2) y lo codifica empleando la clave de cifrado,
que en este caso ser privada.
La clave de descifrado se habr hecho pblica previamente, y debe estar en poder de A. B enva
entonces a A el criptograma correspondiente a r(m). A puede ahora generar su propia r 0(m) y
compararla con el valor r(m) obtenido del criptograma enviado por B. Si coinciden, el mensaje ser
autntico, puesto que el nico que posee la clave para codificar es precisamente B.
En este caso la clave que se emplea para cifrar es la clave privada.
-23 -
Algoritmos de Criptografa
Para este ejemplo hemos seleccionado p=3 y q=ll, dando n=33 y z=20. Un valor adecuado de d es
d=7, puesto que 7 y 20 no tienen factores comunes. Con estas selecciones, e puede encontrarse
resolviendo la ecuacin 7e=1(mod 20), que produce e=3. El texto cifrado C, de un mensaje de texto
normal, P, se da por la regla C=P3(mod 33). El texto cifrado lo descifra el receptor de acuerdo con la
regla P=C7(mod 33). En la figura se muestra como ejemplo el cifrado del texto normal "suzanne".
Dado que los nmeros primos escogidos para el ejemplo son tan pequeos, P debe ser menor que
33, por lo que cada bloque de texto normal puede contener slo un carcter. El resultado es un
cifrado por sustitucin monoalfabtica, no muy impresionante. En cambio, si hubiramos
seleccionado p y q del orden de 10 100 podramos tener n del orden de 10 200, para que cada bloque
pueda ser de hasta 664 bits u 83 caracteres de 8 bits, contra 8 caracteres para el DES. Sin embargo,
el algoritmo RSA es demasiado lento para poder cifrar grandes volmenes de datos, por lo cual
suele usarse para distribuir claves de sesin de una sola vez para su uso con DES, IDEA u otros
algoritmo s semejantes.
-24 -
Algoritmos de Criptografa
Aparte de factorizar n, podramos intentar calcular (n) directamente, o probar por la fuerza bruta
tratando de encontrar la clave privada. Ambos ataques son ms costosos computacionalmente que la
propia factorizacin de n.
La nica manera de evitar esto consiste en asegurar a A que la clave pblica que tiene de B es
autntica. Para ello estn los certificados de confianza, que certifican la autenticidad de la clave.
- Ataques de Texto en Claro Escogido
Existe un ataques a RSA explotando la posibilidad de que un usuario codifique y firme un nico
mensaje empleando el mismo par de claves. Para que el ataque surta efecto, la firma debe hacerse
codificando el mensaje completo, no el resultado de una funcin resumen sobre l. Por ello se
recomienda que las firmas digitales se lleven a cabo siempre sobre una funcin resumen del
mensaje, nunca sobre el mensaje en s.
- Firmar y Codificar
Nunca se debe firmar un mensaje despus de codificarlo ya que existen ataques que aprovechan este
hecho.
-25 -
Algoritmos de Criptografa
Puesto que x e y no viajan por la red, al final A y B acaban compartiendo el valor de K, sin que
nadie que capture los mensajes transmitidos pueda repetir el clculo.
-26 -
Algoritmos de Criptografa
El sistema de clave asimtrica de Rabin se basa en el problema de calcular races cuadradas modulo
un nmero compuesto. Este problema se ha demostrado que es equivalente al de la factorizacin de
dicho nmero.
En primer lugar escogemos dos nmeros primos, p y q, ambos congruentes con 3 mdulo 4 (los dos
ltimos bits a 1). Estos primos son la clave privada. La clave pblica es su producto,
n = pq.
Para codificar un mensaje m, simplemente se calcula
c = m2 (mod n)
La decodificacin del mensaje se hace calculando lo siguiente:
m1 = c(p+1) / 4 (mod p)
m2 = (p - c(p+1) / 4) (mod p)
m3 = c(q+1) / 4 (mod q)
m4 = (q - c(q+1) / 4) (mod q)
Luego se escogen a y b tales que a = q(q-1 (mod p)) y b = p(p-1 (mod q)). Los cuatro posibles
mensajes originales son
ma = (am1 + bm3) (mod n)
mb = (am1 + bm4) (mod n)
mc = (am2 + bm3) (mod n)
md = (am2 + bm4) (mod n)
Desgraciadamente, no existe ningn mecanismo para decidir cul de los cuatro es el autntico, por
lo que el mensaje deber incluir algn tipo de informacin para que el receptor pueda distinguirlo
de los otros.
-27 -
Algoritmos de Criptografa
-28 -
Bibliografa
Las siguientes paginas web contienen informacin sobre criptografa y sus algoritmos:
http://www.toptutoriales.com (visitado 06/12/02)
http://rinconquevedo.iespana.es/rinconquevedo/Criptografia (visitado 06/12/02)
http://wwwdi.ujaen.es/~mlucena (visitado 06/12/02)
Apuntes de la asignatura ASSD de 5 curso
Apuntes de Redes de la asignatura de 4 curso
http://quetzal.uis.edu.co/ciee-html/biblioteca_virtual/criptografia/cripto.pdf
06/12/02)
(visitado