You are on page 1of 29

Algoritmos de Criptografa

Algoritmos
criptogrfic
os

-1 -

Algoritmos de Criptografa

Beln M Garca Lobo

-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

Criptografa de Clave Privada


Criptografa Clsica
El ser humano siempre ha tenido secretos de muy diversa ndole, y ha buscado mecanismos para
mantenerlos fuera del alcance de miradas indiscretas. Julio Csar empleaba un sencillo algoritmo
para evitar que sus comunicaciones militares fueran interceptadas.
A continuacin, haremos un breve repaso de los mecanismos criptogrficos considerados clsicos.
Podemos llamar as a todos los sistemas de cifrado anteriores a la II Guerra Mundial, o lo que es lo
mismo, al nacimiento de los ordenadores. Estas tcnicas tienen en comn que pueden ser empleadas
usando simplemente lpiz y papel, y que pueden ser criptoanalizadas casi de la misma forma. De
hecho, con la ayuda de los ordenadores, los mensajes cifrados empleando estos cdigos son
fcilmente descifrables, por lo que cayeron rpidamente en desuso.
La transicin desde la Criptografa clsica a la moderna se da precisamente durante la II Guerra
Mundial, cuando el Servicio de Inteligencia aliado rompe la mquina de cifrado del ejrcito alemn,
llamada ENIGMA.
Todos los algoritmos criptogrficos clsicos son simtricos.

1.1. Algoritmos Clsicos de Cifrado


La criptografa clsica se basa en algoritmos sencillos y claves muy largas para la seguridad. En la
actualidad han perdido su eficacia, debido a que son fcilmente criptoanalizables empleando
cualquier ordenador domstico.

1.1.1. Cifrados por Sustitucin


Se basa en la sustitucin de cada letra o grupo de letras por otra letra o grupo de letras para
disfrazarla pero conservan el orden de los smbolos de texto normal. Entre ellos cabe destacar los
siguientes:
Algoritmo de Csar
El algoritmo de Csar, llamado as porque es el que empleaba Julio Csar para enviar mensajes
secretos, es uno de los algoritmos criptogrficos ms simples. Consiste en sumar 3 al nmero de
orden de cada letra. De esta forma a la A le corresponde la D, a la B la E, y as sucesivamente.
Este algoritmo ni siquiera posee clave, puesto que la transformacin siempre es la misma.
Para descifrar basta con restar 3 al nmero de orden de las letras del criptograma.
Ejemplo: el mensaje ataque se convertira en DWDTXH

-4 -

Algoritmos de Criptografa

Mtodos de Cifrado Monoalfabticos


Sustituyen cada letra por otra que ocupa la misma posicin en un alfabeto desordenado y esta
correspondencia se mantiene a lo largo de todo el mensaje. As se consiguen tantas claves como
posibilidades de alfabetos hay:
N de claves 26! = 4*1026
Es mucho mejor que el de Julio Cesar y tiene ms claves que el sistema ms utilizado actualmente
DES (256 = 7,2*1016 claves).
El problema est en cmo recordar la clave, es decir, el alfabeto desordenado. Para ello se utiliza
una palabra de uso comn que permite crear, con un algoritmo conocido, el alfabeto desordenado.
El sistema es el siguiente:
1. Se busca una palabra (clave) fcil de recordar y se le quitan las letras duplicadas.
SEGURIDAD SEGURIDA

2. Se aaden al final de la palabra las restantes letras del alfabeto (sin duplicar letras).
SEGURIDABCFH..................XYZ

3. Se ordenan en una matriz cuya primera fila es la palabra clave


S
B
N
Y

E
C
O
Z

G
F
P

U
H
Q

R
J
T

I
K
V

D
L
W

A
M
X

4. El nuevo alfabeto se lee por columnas:


SBNYECOZGFPUHQRJTIKVDLWAMX
Ejemplo: el mensaje ataque se convertira en SVSTDE
As la clave es ms fcil de transmitir y recordar pero el sistema de prueba y ensayo se reduce a
todas las palabras conocidas. El sistema de criptoanlisis mejor para romper el algoritmo es el
estadstico. Emparejando las frecuencias relativas de aparicin de cada smbolo en el mensaje
cifrado con el histograma de frecuencias del idioma en el que se supone est el texto claro,
podremos averiguar fcilmente la clave.

1.1.2. Cifrados Polialfabticos


En los cifrados polialfabticos la sustitucin aplicada a cada carcter vara en funcin de la posicin
que ocupe este dentro del texto claro. En realidad corresponde a la aplicacin cclica de n cifrados
monoalfabticos, es decir, de varios abecedarios desordenados. El emisor y el destinatario han de
ponerse de acuerdo para fijar la posicin relativa de dos crculos concntricos, que determinar la
correspondencia de los signos.
A cada letra le corresponde un alfabeto. Pero, qu alfabeto?. Un sistema ideal utilizara como clave
alfabetos aleatorios pero seran imposibles de recordar y transmitir. Por lo tanto se utiliza una
palabra clave y una tabla de alfabetos.
Cifrado de Vignere
Es un ejemplo tpico de cifrado polialfabtico que debe su nombre a Blaise de Vignere, y que data
del siglo XVI.

-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

El sistema de criptoanlisis sigue los siguientes pasos:


1. Se busca en el criptograma repeticiones de letras. Las repeticiones suponen coincidencias
de texto en claro y clave.
2. Si la frecuencia entre repeticiones es de n letras n es mltiplo de la longitud de la clave.
3. Se considera el texto como n textos intercalados, cada uno es monoalfabtico con el
alfabeto de una letra de la clave y se analizan por tcnicas estadsticas.
La defensa es utilizar una clave tan larga como el texto, pero no es prctico: cuesta tanto transmitir
la clave como el texto.

1.1.3. Cifrados de Transposicin


Este tipo de mecanismos de cifrado no sustituye unos smbolos por otros (no disfrazan), sino que
cambia su orden dentro del texto. Quizs el ms antiguo conocido sea el escitalo, formado por un
bastn cilndrico con un radio particular y una tira de piel que se enrollaba alrededor de aqul. El
texto se escriba a lo largo del bastn y slo poda ser ledo si se dispona de otro bastn de
dimensiones similares. Un mecanismo de transposicin sencillo, que no precisa otra cosa que lpiz
y papel, podra consistir en colocar el texto en una tabla de n columnas, y dar como texto cifrado los
smbolos de una columna ordenados de arriba abajo concatenados con los de otra, etc. La clave
k se compondra del nmero n junto con el orden en el que se deben leer las columnas
(generalmente se escoge una palabra como clave y sus letras se ordenan alfabticamente).

-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

Tendramos como texto cifrado la concatenacin de las columnas 3, 4, 2, 5 y 1 respectivamente:


T ROAAA E EUA STDD SSTJR NAR NBPLIUEE EE AAAGR S".
Este tipo de mecanismos de cifrado se puede criptoanalizar efectuando un estudio estadstico sobre
la frecuencia de aparicin de pares y tripletas de smbolos en el lenguaje en que est escrito el texto
claro. Suponiendo que conocemos n, que en nuestro caso es igual a 5, tenemos 5! = 120 posibles
claves. Descifraramos el texto empleando cada una de ellas y comprobaramos si los pares y
tripletas de smbolos consecutivos que vamos obteniendo se corresponden con los ms frecuentes
en castellano. De esa forma podremos asignarle una probabilidad automticamente a cada una de
las posibles claves.
Si, por el contrario, desconocemos n, basta con ir probando con n = 2, n = 3 y as sucesivamente.
Este mtodo es bastante complejo de llevar a cabo manualmente, pero un ordenador puede
completarlo en un tiempo ms que razonable sin demasiados problemas.

1.2. Mquinas de Rotores. La Mquina ENIGMA


En el ao 1923, un ingeniero alemn llamado Arthur Scherbius patent una mquina
especficamente diseada para facilitar las comunicaciones seguras. Se trataba de un instrumento de
apariencia simple, parecido a una mquina de escribir. Quien deseara codificar un mensaje slo
tena que teclearlo y las letras correspondientes al mensaje cifrado se iran iluminando en un panel.
El destinatario copiaba dichas letras en su propia mquina y el mensaje original apareca de nuevo.

Figura 1.1.- Esquema de la mquina ENIGMA

-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.

1.2.3. Otras Mquinas de Rotores


Adems de la mquina alemana ENIGMA, existieron otros dispositivos criptogrficos basados en
rotores.
La mquina SIGABA, empleada por el ejrcito norteamericano.
Las mquinas japonesas empleadas en la II Guerra Mundial, que se denominaron PURPLE y RED.

-8 -

Algoritmos de Criptografa

Cifrados por Bloques


Como hemos podido comprobar hasta ahora, la criptografa simtrica (o privada) es el sistema de
criptografa ms antiguo. Se utiliza desde los tiempos de Julio Cesar hasta la actualidad. Se
caracteriza por usar la misma clave para encriptar y desencriptar (Figura 2.0).

Figura 2.0.- Funcionamiento con clave privada

Toda la seguridad est basada en la privacidad de esta clave secreta, llamada simtrica porque es la
misma para el emisor y el receptor.

2.1. Cifrado de producto


Los algoritmos de cifrado simtricos se apoyan en los conceptos de confusin (tratar de ocultar la
relacin que existe entre el texto claro, el texto cifrado y la clave, es decir, realizar sustituciones
simples) y difusin (trata de repartir la influencia de cada bit del mensaje original lo ms posible
entre el mensaje cifrado, es decir, realizar permutaciones) que se combinan para dar lugar a los
denominados cifrados de producto. Estas tcnicas consisten bsicamente en trocear el mensaje en
bloques de tamao fijo, y aplicar la funcin de cifrado a cada uno de ellos.
Hacer notar que la confusin por s sola sera suficiente, ya que si establecemos una tabla de
sustitucin completamente diferente para cada clave con todos los textos claros posibles tendremos
un sistema extremadamente seguro. Sin embargo, dichas tablas ocuparan mucho en memoria, por
lo que seran inviables.

-9 -

Algoritmos de Criptografa

2.1.1. Redes de Feistel

Figura 2.1.- Estructura de una red de Feistel

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.

2.1.2. Cifrados con Estructura de Grupo


Otra de las cuestiones a tener en cuenta en los cifrados de producto es la posibilidad de que posean
estructura de grupo. Es decir, se puede dar el caso que si hacemos dos cifrados encadenados con k 1
y k2, existe una clave k3 que realiza la transformacin equivalente.
Es importante que un algoritmo criptogrfico carezca de este tipo de estructura, ya que si ciframos
un mensaje primero con la clave k1 y el resultado con la clave k2, es como si hubiramos empleado
una clave de longitud doble, aumentando la seguridad del sistema. Si, por el contrario, la
transformacin criptogrfica presentara estructura de grupo, esto hubiera sido equivalente a cifrar el
mensaje una nica vez con una tercera clave, con lo que no habramos ganado nada.

2.1.3. Algoritmo CAST


Emplea seis S-Cajas de 8*32 bits. CAST codifica bloques de 64 bits empleando claves de 64 bits,
consta de ocho rondas y deposita prcticamente toda su fuerza en las S-Cajas. Este algoritmo se ha
demostrado resistente a las tcnicas habituales de criptoanlisis, y slo se conoce la fuerza bruta
como mecanismo para atacarlo.
Una S-Caja de m*n bits (ver figura 2.2) es una tabla de sustitucin que toma como entrada cadenas
de m bits y da como salida cadenas de n bits. Para su utilizacin se divide el bloque original en
trozos de m bits y cada uno de ellos se sustituye por otro de n bits, haciendo uso de la S-Caja

-10 -

Algoritmos de Criptografa

correspondiente. Normalmente, cuanto ms grandes sean las S-Cajas, ms resistente ser el


algoritmo resultante, aunque la eleccin de los valores de salida para que den lugar a un buen
algoritmo no es en absoluto trivial.

Figura 2.2.- A: S-Caja individual. B: Combinacin de 4-Cajas

2.2. El Algoritmo DES


Es el algoritmo simtrico ms extendido mundialmente. Se basa en el algoritmo LUCIFER, que
haba sido desarrollado por IBM a principios de los setenta, y fue adoptado como estndar por el
Gobierno de los EE.UU. para comunicaciones no clasificadas en 1976.
El algoritmo DES codifica bloques de 64 bits empleando claves de 56 bits. Es una Red de Feistel de
16 rondas, ms dos permutaciones, una que se aplica al principio (P i) y otra que se aplica al final
(Pf ), tales que la segunda es la inversa de la primera.
La funcin f (figura 2.3) se compone de una permutacin de expansin (E), que convierte el bloque
de 32 bits correspondiente en uno de 48. Despus realiza un or-exclusivo con el valor K i, tambin
de 48 bits, aplica ocho S-Cajas de 6*4 bits, y efecta una nueva permutacin P.

Figura 2.3.- Esquema de la funcin f del algoritmo DES

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.

2.3. Variantes de DES


A mediados de julio de 1998, una empresa llamada EFF (Electronic Frontier Foundation), logr
fabricar una mquina capaz de descifrar un mensaje DES en menos de tres das.
El problema de DES radica en que emplea una clave demasiado corta (56 bits), lo cual hace que con
el avance actual de los ordenadores los ataques por la fuerza bruta (o prueba y ensayo) comiencen a
ser opciones realistas.
A pesar de ello, DES sigue siendo ampliamente utilizado en multitud de aplicaciones, como por
ejemplo las transacciones de los cajeros automticos.
Se han propuesto variantes de este algoritmo para as aprovechar gran parte de las
implementaciones por hardware existentes de DES. De ellos el que cabe destacar es:

-12 -

Algoritmos de Criptografa

2.3.1. DES Mltiple:


Consiste en aplicar varias veces el algoritmo DES con diferentes claves al mensaje original. El ms
comn de todos ellos es el Triple-DES, que responde a la siguiente estructura:
C = Ek1(Ek2-1(Ek1(M)))
es decir, codificamos con la subclave k 1, decodificamos con k2 y volvemos a codificar con k1. La
clave resultante es la concatenacin de k 1 y k2, con una longitud de 112 bits.

2.4. Algoritmo IDEA


El algoritmo IDEA (International Data Encryption Algorithm) data de 1992. Trabaja con bloques de
64 bits de longitud y emplea una clave de 128 bits. Como en el caso de DES, se usa el mismo
algoritmo tanto para cifrar como para descifrar.
IDEA es un algoritmo bastante seguro, y hasta ahora se ha mostrado resistente a multitud de
ataques, entre ellos el criptoanlisis diferencial. Su longitud de clave hace imposible en la prctica
un ataque por la fuerza bruta como se poda hacer en el DES.
Como ocurre con todos los algoritmos simtricos de cifrado por bloques, IDEA se basa en los
conceptos de confusin y difusin, haciendo uso de las siguientes operaciones elementales:
XOR.
Suma mdulo 216.
Producto mdulo 216 + 1.
X1

X2

X3

X4

X1

X2

X3

X4

Figura 2.5.- Algoritmo de cifrado IDEA

El algoritmo IDEA consta de ocho rondas. Dividiremos el bloque X a codificar, de 64 bits, en


cuatro partes X1, X2, X3 y X4 de 16 bits. Denominaremos Zi a cada una de las 52 subclaves de 16
bits que vamos a necesitar. Las operaciones que llevaremos a cabo, y que se pueden observar en la
figura 2.5, en cada ronda son las siguientes:
1. Multiplicar X1 por Z1.
2. Sumar X2 con Z2.

3. Sumar X3 con Z3.


4. Multiplicar X4 por Z4.

-13 -

Algoritmos de Criptografa

5. Hacer un XOR entre los resultados del paso


1 y el paso 3.
6. Hacer un XOR entre los resultados del paso
2 y el paso 4.
7. Multiplicar el resultado del paso 5 por Z5.
8. Sumar los resultados de los pasos 6 y 7.
9. Multiplicar el resultado del paso 8 por Z6.
10. Sumar los resultados de los pasos 7 y 9.

11. Hacer un XOR entre los resultados de los


pasos 1 y 9.
12. Hacer un XOR entre los resultados de los
pasos 3 y 9.
13. Hacer un XOR entre los resultados de los
pasos 2 y 10.
14. Hacer un XOR entre los resultados de los
pasos 4 y 10.

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.

Tabla 2.1: Subclaves empleadas en el algoritmo IDEA

2.5. El algoritmo Rijndael (AES)


Es considerado el sucesor de DES. Este algoritmo se adopt oficialmente en octubre del 2000 como
nuevo Estndar Avanzado de Cifrado (AES) por el NIST (National Institute for Standards and
Technology) para su empleo en aplicaciones criptogrficas.

-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

Tabla 2.2: Ejemplo de matriz de estado con Nb=5 (160 bits).

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

Tabla 2.3: Ejemplo de clave con Nk=4 (128 bits).

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.

2.5.1. Las Rondas de AES

-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

Nk=4 (128 bits)


Nk=6 (192 bits)
Nk=8 (256 bits)

Nb=6 (192 bits)


12
12
14

Nb=8 (256 bits)


14
14
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

La funcin inversa de ByteSub sera la aplicacin de la inversa de la s-caja correspondiente a cada


byte de la matriz de estado.

-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

Tabla 2.5: Valores de ci segn el tamao de bloque Nb

La funcin inversa de DesplazarFila ser, obviamente, un desplazamiento de las filas de la matriz


de estado el mismo nmero de posiciones que en la tabla 2.5, pero a la derecha.

-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

2.5.2. Clculo de las Subclaves


Las diferentes subclaves Ki se derivan de la clave principal K mediante el uso de dos funciones: una
de expansin y otra de seleccin. Siendo n el nmero de rondas que se van a aplicar, la funcin de
expansin permite obtener, a partir del valor de K, una secuencia de 4*(n+1)*N b bytes. La seleccin
simplemente toma consecutivamente de la secuencia obtenida bloques del mismo tamao que la
matriz de estado, y los va asignando a cada Ki.
Sea K(i) un vector de bytes de tamao 4*N k, conteniendo la clave, y sea W(i) un vector de N b*(n+1)
registros de 4 bytes, siendo n el nmero de rondas. La funcin de expansin tiene dos versiones,
segn el valor de Nk:
a) Si Nk 6:
1. Para i desde 0 hasta Nk - 1 hacer
2.
W(i) (K(4 * i), K(4 * i + 1), K(4 * i + 2), K(4 * i + 3))
3. Para i desde Nk hasta Nb * (n + 1) hacer
4.
tmp W(i - 1)
5.
Si i mod Nk = 0
6.
tmp Sub(Rot(tmp)) R(i/Nk)
7.
W(i) W(i - Nk) tmp
b) Si Nk > 6:
1. Para i desde 0 hasta Nk - 1 hacer
2.
W(i) (K(4 * i), K(4 * i + 1), K(4 * i + 2), K(4 * i + 3))
3. Para i desde Nk hasta Nb * (n + 1) hacer
4.
tmp W(i - 1)
5.
Si i mod Nk = 0
6.
tmp Sub(Rot(tmp)) Rc(i/Nk)
7.
Si i mod Nk = 4
8.
tmp Sub(tmp)
9.
W(i) W(i - Nk) tmp
En los algoritmos anteriores, la funcin Sub devuelve el resultado de aplicar la s-caja de AES a cada
uno de los bytes del registro de cuatro que se le pasa como parmetro. La funcin Rot desplaza a la
izquierda una posicin los bytes del registro, de tal forma que si le pasamos como parmetro el
valor (a, b, c, d) nos devuelve (b, c, d, a). Finalmente, R c(j) es una constante definida de la siguiente
forma:

Rc(j) = (R(j), 0, 0, 0)

Cada R(i) es el elemento de GF(28) correspondiente al valor x(i-1).

-18 -

Algoritmos de Criptografa

2.6. Modos de Op. para Algoritmos de Cifrado por Bloques


En primer lugar, independientemente del mtodo empleado para codificar aplicando cifrados por
bloques a mensajes de gran longitud, hemos de tener en cuenta lo que ocurre cuando dicha longitud
no es un mltiplo exacto del tamao de bloque. En ese caso se ha de aadir informacin al final
para que s lo sea.
El mecanismo ms sencillo consiste en rellenar con ceros el ltimo bloque que se codifica. El
problema ahora consiste en saber cuando se descifra por donde hay que cortar. Lo que se suele
hacer es aadir como ltimo byte del ltimo bloque el nmero de bytes que se han aadido (ver
figura 2.6).

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:

2.6.1. Modo ECB


El modo ECB (Electronic Codebook) es el mtodo ms sencillo. Simplemente se subdivide la
cadena que se quiere codificar en bloques del tamao adecuado y se cifran todos ellos empleando la
misma clave, resumiendo, se encriptan los bloques de texto por separado.

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

Otro riesgo bastante importante que presenta el modo ECB es el de la sustitucin de


bloques. El atacante puede cambiar un bloque sin mayores problemas, y alterar los
mensajes incluso desconociendo la clave y el algoritmo empleados. Simplemente se
escucha una comunicacin de la que se conozca el contenido, como por ejemplo una
transaccin bancaria a nuestra cuenta corriente. Luego se escuchan otras comunicaciones y
se sustituyen los bloques correspondientes al nmero de cuenta del beneficiario de la
transaccin por la versin codificada de nuestro nmero.

2.6.2. Modo CBC


En el modo CBC (Cipher Book Chaining Mode), los bloques de criptograma se relacionan entre
ellos mediante funciones OR-EXCLUSIVA. Para ello, incorpora un mecanismo de
retroalimentacin en el cifrado por bloques. Esto significa que la codificacin de bloques anteriores
condiciona la codificacin del bloque actual, por lo que ser imposible sustituir un bloque
individual en el mensaje cifrado. Esto se consigue efectuando una operacin or-exclusiva entre el
bloque del mensaje que queremos codificar y el ltimo criptograma obtenido (ver figura 2.7).

Figura 2.7: Modo de operacin CBC.

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

2.6.3. Modo CFB


El modo de operacin CFB (Cipher Feedback Mode) permitir codificar la informacin en unidades
inferiores al tamao del bloque, lo cual permite aprovechar totalmente la capacidad de transmisin
del canal de comunicaciones con mayor seguridad. Realiza una or-exclusiva entre caracteres o bits
aislados del texto y las salidas del algoritmo. El algoritmo utiliza como entrada los criptogramas.

Figura 2.8: Esquema del modo de operacin CFB.

Para descifrar basta con seguir proceso inverso.

-20 -

Algoritmos de Criptografa

2.6.4. Modo OFB


El modo de operacin OFB (Output FeedBack Mode). Al igual que el CFB, se realiza una orexclusiva entre caracteres o bits aislados del texto y las salidas del algoritmo. Pero ste utiliza como
entradas sus propias salidas, por lo tanto no depende del texto, es un generador de nmeros
aleatorios.

Figura 2.9: Esquema del modo de operacin OFB.

-21 -

Algoritmos de Criptografa

Criptografa de Clave Pblica


Algoritmos Asimtricos de
Cifrado
Los algoritmos de clave pblica, o algoritmos asimtricos, son empleados en redes de comunicacin
inseguras (Internet). Introducidos por Whitfield Diffie y Martin Hellman a mediados de los aos 70,
su novedad fundamental con respecto a la criptografa simtrica es que las claves no son nicas,
sino que forman pares.
Se basan en general en plantear al atacante problemas matemticos difciles de resolver. El ms
popular por su sencillez es RSA, que ha sobrevivido a multitud de ataques, si bien necesita una
longitud de clave considerable. Otros algoritmos son los de ElGamal y Rabin.
Los algoritmos asimtricos emplean generalmente longitudes de clave mucho mayores que los
simtricos. Adems, la complejidad de clculo que comportan estos ltimos los hace
considerablemente ms lentos que los algoritmos de cifrado simtricos. Por ello, normalmente los
mtodos asimtricos se emplean nicamente para codificar la clave de sesin (simtrica) de cada
mensaje o transaccin particular.

3.1. Aplicaciones de los Algoritmos Asimtricos


Los algoritmos asimtricos poseen dos claves diferentes en lugar de una, denominadas clave
privada y clave pblica. Una de ellas se emplea para codificar, mientras que la otra se usa para
decodificar. Para que estos criptosistemas sean seguros tambin ha de cumplirse que a partir de una
de las claves resulte extremadamente difcil calcular la otra.
Una de las aplicaciones inmediatas de estos algoritmos es el cifrado de la informacin sin tener
que transmitir la clave de decodificacin, lo cual permite su uso en canales inseguros.
Ejemplo:
Supongamos que A quiere enviar un mensaje a B (figura 3.1). Para ello solicita a B su clave pblica
KP . A genera entonces el mensaje cifrado E KP (m). Una vez hecho esto nicamente quien posea la
clave Kp en nuestro ejemplo, B podr recuperar el mensaje original m.
En este tipo de aplicacin, la clave que se hace pblica es aquella que permite codificar los
mensajes, mientras que la clave privada es aquella que permite descifrarlos.

-22 -

Algoritmos de Criptografa

Figura 3.1: Transmisin de informacin empleando algoritmos asimtricos.

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.

Figura 3.2: Autentificacin de informacin empleando algoritmos asimtricos.

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.

3.2. El Algoritmo RSA


Debe su nombre a sus tres inventores: Ronald Rivest, Adi Shamir y Leonard Adleman. Las primeras
versiones de PGP lo incorporaban como mtodo de cifrado y firma digital. Se le tiene como uno de
los algoritmos asimtricos ms seguros.
RSA se basa en la dificultad para factorizar grandes nmeros. Las claves pblica y privada se
calculan a partir de un nmero que se obtiene como producto de dos primos grandes. El atacante se
enfrentar, si quiere recuperar un texto claro a partir del criptograma y la clave pblica, a un
problema de factorizacin.
El par de claves es suficiente para codificar y autentificar ya que sirven tanto para cifrar como para
descifrar, de manera que si empleamos una para codificar, la otra permitir decodificar y viceversa.
Su mtodo se basa en:
l. Seleccionar dos nmeros primos grandes, p y q (generalmente mayores que 10100).
2. Calcular n= p*q y z=(p-l)*(q-l).
3. Seleccionar un nmero primo con respecto a z, llamndolo d.

-23 -

Algoritmos de Criptografa

4. Encontrar e tal que exd= 1 mod z


Con estos parmetros calculados por adelantado, estamos listos para comenzar el cifrado.
Dividimos el texto normal (considerado como una cadena de bits) en bloques, para que cada
mensaje de texto normal, P, caiga en el intervalo 0<P<n, Esto puede hacerse agrupando el texto
normal en bloques de k bits, donde k es el entero ms grande para el que 2 k<n es verdad.
Para cifrar un mensaje, P, calculamos C=P e(mod n). Para descifrar C, calculamos P=C d(mod n).
Puede demostrarse que, para todos los P del intervalo especificado, las funciones de cifrado y
descifrado son inversas. Para ejecutar el cifrado, se necesitan e y n. Para llevar a cabo el descifrado
se requieren d y n. Por tanto, la clave pblica consiste en el par (e,n) y la clave privada consiste en
(d,n).
De acuerdo con los descubridores del RSA, la factorizacin de un nmero de 200 dgitos requiere 4
mil millones de aos de tiempo de cmputo; la factorizacin de un nmero de 500 dgitos requiere
1025 aos. En ambos casos se supone el mejor algoritmo conocido y un ordenador con un tiempo de
instruccin de 1 microsegundo. Aun si los ordenadores continan aumentando su velocidad, pasarn
siglos antes de que sea factible la factorizacin de un nmero de 500 dgitos, y entonces
simplemente se puede escoger un p y un q todava ms grandes.
Un ejemplo del algoritmo RSA se puede ver en la figura siguiente:

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.

3.2.1. Seguridad del Algoritmo RSA

-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.

3.2.2. Vulnerabilidades de RSA


Aunque el algoritmo RSA es bastante seguro conceptualmente, existen algunos puntos dbiles en la
forma de utilizarlo que pueden ser aprovechados por un atacante:
- Claves Demasiado Cortas
Actualmente se considera segura una clave RSA con una longitud de n de al menos 768 bits, si bien
se recomienda el uso de claves no inferiores a 1024 bits.
Deberemos escoger la longitud de la clave en funcin del tiempo que queramos que nuestra
informacin permanezca en secreto. Una clave de 1024 bits parece demasiado corta como para
proteger informacin por ms de unos pocos aos.
- Ataques de Intermediario
El ataque de intermediario (figura 3.3) puede darse con cualquier algoritmo asimtrico.
Supongamos que A quiere establecer una comunicacin con B, y que C quiere espiarla. Cuando A le
solicite a B su clave pblica KB, C se interpone, obteniendo la clave de B y enviando a A una clave
falsa kC creada por l. Cuando A codifique el mensaje, C lo interceptar de nuevo, decodificndolo
con su clave propia y empleando KB para recodificarlo y enviarlo a B. Ni A ni B son conscientes de
que sus mensajes estn siendo interceptados.

Figura 3.3: Ataque de intermediario para un algoritmo asimtrico.

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.

3.3. Otros Algoritmos Asimtricos


3.3.1. Algoritmo de Diffie-Hellman

-25 -

Algoritmos de Criptografa

Es un algoritmo asimtrico, basado en el problema de Diffie-Hellman, que se emplea


fundamentalmente para acordar una clave comn entre dos interlocutores, a travs de un canal de
comunicacin inseguro. La ventaja de este sistema es que no son necesarias claves pblicas en el
sentido estricto, sino una informacin compartida por los dos comunicantes.
Sean A y B los interlocutores en cuestin. En primer lugar, se calcula un nmero primo p y un
generador de Z*p, con 2 p-2. Esta informacin es pblica y conocida por ambos. El
algoritmo queda como sigue:
1.
2.
3.
4.

A escoge un nmero aleatorio x, comprendido entre 1 y p-2 y enva a B el valor x (mod p)


B escoge un nmero aleatorio y, como en el paso anterior, enva a A el valor y (mod p)
B recoge x y calcula K = ( x)y (mod p).
A recoge y y calcula K = ( y)x (mod p).

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.

3.3.2. Algoritmo de ElGamal


Fue diseado en un principio para producir firmas digitales, pero posteriormente se extendi
tambin para codificar mensajes. Se basa en el problema de los logaritmos discretos, que est
ntimamente relacionado con el de la factorizacin, y en el de Diffie-Hellman.
Para generar un par de claves, se escoge un nmero primo n y dos nmeros aleatorios p y x menores
que n. Se calcula entonces
y = px (mod n)
La clave pblica es (p, y, n), mientras que la clave privada es x.
Escogiendo n primo, garantizamos que sea cual sea el valor de p, el conjunto {p, p 2, p3 } es una
permutacin del conjunto {1, 2, n-1} lo suficientemente grande.
Firmas Digitales de ElGamal
Para firmar un mensaje m basta con escoger un nmero k aleatorio, tal que mcd(k, n-1) =1, y
calcular
a = pk (mod n)
b = (m - xa)k-1 (mod (n - 1))
La firma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en secreto y ser diferente
cada vez. La firma se verifica comprobando que
yaab = pm (mod n)
Codificacin de ElGamal
Para codificar el mensaje m se escoge primero un nmero aleatorio k primo relativo con (n-1), que
tambin ser mantenido en secreto. Calculamos entonces las siguientes expresiones
a = pk (mod n)
b = ykm (mod n)
El par (a, b) es el texto cifrado, de doble longitud que el texto original. Para decodificar se calcula
m = b * a-x (mod n)

3.3.3. Algoritmo de Rabin

-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.

3.3.4. Algoritmo DSA


El algoritmo DSA (Digital Signature Algorithm) es una parte el estndar de firma digital DSS
(Digital Signature Standard). Este algoritmo, propuesto por el NIST, data de 1991, es una variante
del mtodo asimtrico de ElGamal.
Creacin del par clave pblica-clave privada
El algoritmo de generacin de claves es el siguiente:
1. Seleccionar un nmero primo q tal que 2159 < q < 2160.
2. Escoger t tal que 0 t 8, y seleccionar un nmero primo p tal que 2511+64t < p < 2512+64t, y
que adems q sea divisor de (p - 1).
3. Seleccionar un elemento g Z*p y calcular = g(p-1)/q mod p.
4. Si = 1 volver al paso 3.
5. Seleccionar un nmero entero aleatorio a, tal que 1 a q - 1
6. Calcular y = a mod p.
7. La clave pblica es (p, q, , y). La clave privada es a.
Generacin y verificacin de la firma
Siendo h la salida de una funcin resumen sobre el mensaje m, la generacin de una firma se hace
mediante el siguiente algoritmo:
1. Seleccionar un nmero aleatorio k tal que 0 < k < q.
2. Calcular r = (k mod p) mod q.
3. Calcular k-1 mod q.

-27 -

Algoritmos de Criptografa

4. Calcular s = k-1(h + ar) mod q.


5. La firma del mensaje m es el par (r, s).
El destinatario efectuar las siguientes operaciones, suponiendo que conoce la clave pblica (p, q,
, y), para verificar la autenticidad de la firma:
1. Verificar que 0 < r < q y 0 < s < q. En caso contrario, rechazar la firma.
2. Calcular el valor de h a partir de m.
3. Calcular s 1 mod q .
4. Calcular u1 = * h mod q y u2 = * r mod q.
5. Calcular v = (u1yu2 mod p) mod q.
6. Aceptar la firma si y slo si v = r.

-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

You might also like