Elementos decriptografaLloren Huguet Rotger
Josep Rif Coma
Juan Gabriel Tena Ayuso
PID_00200951
Los textos e imgenes publicados en esta obra estn sujetos excepto que se indique lo contrario auna licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 Espaa deCreative Commons. Podis copiarlos, distribuirlos y transmitirlos pblicamente siempre que citisel autor y la fuente (FUOC. Fundaci per a la Universitat Oberta de Catalunya), no hagis un usocomercial y no hagis una obra derivada. La licencia completa se puede consultar enhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es
CC-BY-NC-ND PID_00200951 Elementos de criptografa
ndice
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Criptosistemas simtricos o de clave privada . . . . . . . . . . . . . . . . . 9
1.1. Criptosistema DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Criptosistema IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3. Criptosistema AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Modos de operacin de los criptosistemas de clave privada . . . 14
2. Criptosistemas de clave pblica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1. Funciones unidireccionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Criptosistema RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1. Descripcin del criptosistema . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2. Firma digital, basada en el RSA . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Criptosistema ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.1. Descripcin del criptosistema ElGamal . . . . . . . . . . . . . . . 21
2.3.2. Firma digital, basada en el ElGamal . . . . . . . . . . . . . . . . . . 22
2.4. Algoritmo DSA como alternativa a la firma digital RSA . . . . . . . 23
2.5. Funciones hash: MD5 y SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.1. El algoritmo MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2. El algoritmo SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6. Infraestructura de clave pblica: PKI . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.1. Sistemas gestores de certificados electrnicos:
la recomendacin X.509. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6.2. Listas de certificados revocados: CRL . . . . . . . . . . . . . . . . . 32
3. Criptografa cuntica y post-cuntica . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1. Criptografa cuntica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2. Los cdigos correctores de errores en la criptografa
post-cuntica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1. Nociones bsicas de cdigos correctores de errores . . . 37
3.2.2. Cdigos lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.3. Los cdigos lineales cclicos: BCH y RS . . . . . . . . . . . . . . . 43
3.2.4. Los cdigos cclicos BCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.5. Los cdigos cclicos RS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3. Los criptosistemas de McEliece y de Niederreiter . . . . . . . . . . . . . . 47
3.3.1. Criptosistema de McEliece . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.2. Criptosistema de Niederreiter. . . . . . . . . . . . . . . . . . . . . . . . . 49
CC-BY-NC-ND PID_00200951 Elementos de criptografa
Ejercicios de autoevaluacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
CC-BY-NC-ND PID_00200951 5 Elementos de criptografa
Introduccin
Lectura recomendada
Para hacer ms
comprensible este mdulo
didctico se puede
acompaar del libro de
Criptografa de J. Domingo,
J. Herrera y H. Rif-Pous de
los estudios de Informtica
y Multimedia, de la UOC.
Tradicionalmente, la criptografa tiene como objetivo la transmisin o alma-
cenamiento de mensajes indescifrables para todo receptor que no disponga de
la clave del algoritmo de descifrado.
Hoy, la criptografa se presenta como la solucin al problema de la vulnera-
bilidad de los sistemas de transmisin, o de almacenamiento, con respecto al
secreto y a la autenticidad de la informacin transmitida, o almacenada. El
objetivo concerniente a la privacidad y autenticidad asociados a una red de
sistemas es evitar que un espa pueda violar o eliminar la proteccin del sis-
tema en referencia a las lneas de comunicacin, a la conexin de acceso a la
red (contraseas) y a la utilizacin de los recursos de un determinado sistema.
En tiempos pasados, la criptografa ha sido una actividad casi exclusivamente
utilizada en la diplomacia y en la guerra, pero, a partir de la Segunda Guerra
Mundial, la aparicin de los ordenadores ha hecho que todos los sistemas crip-
togrficos utilizados antes, excepto el mtodo de Vernam (basado en claves de
un solo uso y del cual se puede demostrar matemticamente su inviolabili-
dad), formen parte de la historia puesto que la velocidad en el tratamiento de
la informacin hace que sea un juego de nios el problema de encontrar sus
correspondientes claves (criptoanlisis).
De esta simplicidad de los mtodos clsicos es un ejemplo el sistema cripto-
grfico, llamado de Julio Csar, por ser l su primer usuario, utilizado todava
durante la segunda guerra mundial, que consista en numerar los caracteres
alfabticos y cifrar el mensaje m como el criptograma c, mediante una trasla-
cin cclica que hoy enunciaramos como c = (m + k) (mod 25), donde m es el
valor numrico asignado a cada letra del alfabeto {A = 0,B = 1,...,Z = 24}, porejemplo, y para un cierto valor de k previamente elegido (Cesar escoga k = 3).
El texto AMOR quedara, en valores numricos, 0,12,14,17 que se cifraran en
3,15,17,20; es decir, se transmitira el mensaje cifrado (criptograma): DPRU.
Desde siempre, toda tcnica criptogrfica que opera sobre un mensaje, sin
tener en cuenta su estructura lingstica, est basada en una operacin ejecu-
tada por el emisor, transformando el mensaje original en un mensaje cifrado,
mediante un algoritmo que implementa esta operacin, ligado a una clave k.
Al mismo tiempo, esta operacin posee la operacin inversa, ejecutada por el
receptor, que permite encontrar el mensaje original.
Todo sistema criptogrfico, tambin denominado criptosistema, consta de cin-
co componentes: {M,C,K,E y D}, donde M es el conjunto de todos los mensa-
CC-BY-NC-ND PID_00200951 6 Elementos de criptografa
jes a transmitir, C el de todos los mensajes cifrados, K el de las claves a utilizar,
E el de todos los mtodos de cifrado: E = {Ek|Ek(m) C,m M,k K} y D elde todos los mtodos de descifrado: D = {Dk|Dk(c) M,c C,k K}.
Cada mtodo de cifrado de E, y cada mtodo de descifrado de D, est definido
mediante un algoritmo, que es comn a todos los mtodos, y donde cada
clave k K, distinguir la instancia correspondiente a cada transformacin Ek,y Dk, respectivamente.
Para toda clave k K, la transformacin Dk es la inversa de Ek; es decir:
Dk(Ek(m)) = m,m M
Observar sin embargo, que esto no quiere decir que Ek sea el inverso de Dk, en
sentido matemtico.
Fuentem Cifrado
Ek(m) = cDescifradoDk(c) = m
Criptoanlisis
Receptor
Mtodosde cifrado
Mtodosde descifrado
ClavesCanal seguro
c
Ek Dk
k k
m
Todo criptosistema, tal y como muestra la figura anterior, debe cumplir al
menos estos tres requisitos:
Principios de Kerchoff
En criptografa, laspropiedades deseables de uncriptosistema constituyen losprincipios de Kerckhoff; deentre ellos, los msimportantes: Si elcriptosistema no estericamente irrompible, almenos lo debe ser en laprctica. La efectividad delcriptosistema no debedepender de que su diseopermanezca en secreto. Elcriptosistema debe ser fcilde usar. La clave debe serfcilmente memorizable, paraevitar recurrir a notas escritas.Los criptogramas deberanser alfanumricos.
1) Todos los algoritmos de cifrado y descifrado Ek y Dk deben ser computacio-
nalmente eficientes.
2) Los algoritmos Ek y Dk deben ser fcilmente implementables.
3) La seguridad del sistema solo debe depender del secreto de las claves k K,y no de los algoritmos correspondientes de E y D.
Adems, siempre se deber tener en cuenta los objetivos de privacidad y au-
tenticidad, donde se considera:
CC-BY-NC-ND PID_00200951 7 Elementos de criptografa
Privacidad: como la incapacidad, para un criptoanalista, de determinar unmensaje original a partir del criptograma que haya podido interceptar.
Autenticidad: como la incapacidad, para un criptoanalista, de sustituir uncriptograma falso c, en lugar del criptograma real c, sin que sea detectado.
Consideraciones a los criptosistemas
Actualmente, se consideran dos tipos de criptosistemas, segn la utilizacin
y administracin de los algoritmos de cifrado y descifrado. El criptosistema
clsico o convencional, en el cual la clave correspondiente a ambos algoritmos
es la misma o, en su defecto, una fcilmente deducible de la otra. En este caso,
cada usuario dispone de su pareja de algoritmos Ek y Dk particulares y ningn
otro usuario puede disponer de ellos sin conocer la clave k. Son los llamados
criptosistemas de clave privada o simtricos.
Lectura recomendada
W. Diffie; M. Hellman.New Directions in
Criptography. IEEETransactions on InformationTheory (vol. IT-22).
En el ao 1976 entra en juego un nuevo concepto de criptosistema, propues-
to por W. Diffie y M. Hellman, llamados criptosistemas de clave pblica o
asimtricos, caracterizados por el hecho de que conocer el algoritmo Ek no
revela ninguna informacin sobre Dk o viceversa. Es decir, una de las claves
puede ser revelada pblicamente sin peligro de que la otra pueda ser deducida.
CC-BY-NC-ND PID_00200951 8 Elementos de criptografa
Objetivos
En los materiales didcticos de este mdulo el estudiante encontrar los con-
tenidos necesarios para alcanzar los objetivos siguientes:
1. Conocer los sistemas criptogrficos de clave simtrica ms comunes (DES,
IDEA, AES).
2. Conocer los sistemas criptogrficos de clave asimtrica ms comunes (RSA,
ElGamal).
3. Conocer los principales algoritmos usados en las funciones hash (MD5,
SHA).
4. Conocer los fundamentos y algn ejemplo de sistema criptogrfico cun-
tico.
5. Conocer los fundamentos de la teora de la codificacin para la correccin
de errores y los sistemas criptogrficos postcunticos basados en esta (McE-
liece, Niederreiter).
CC-BY-NC-ND PID_00200951 9 Elementos de criptografa
1. Criptosistemas simtricos o de clave privada.
Nos referiremos a los criptosistemas como simtricos o de clave privada cuan-
do el emisor y el receptor comparten una nica clave k. Por esto, establecemos
como caracterstica principal la existencia de un canal seguro a travs del cual
el emisor transmite al legtimo receptor su clave privada k de forma que queda
protegida ante un criptoanalista.
Fuentem Cifrado
Ek(m) = cDescifradoDk(c) = m
Criptoanlisis
Receptor
ClavesCanal seguro
c
k k
m
El emisor quiere enviar cifrado el mensaje m, por lo cual, mediante el algorit-
mo de cifrado calcula el criptograma c a partir de m y de la clave k:
Ek(m) = c
El receptor debe ser capaz de descifrar el criptograma c, a partir del conoci-
miento de la clave k, es decir, reencontrar el mensaje m mediante:
Dk(c) = m
1.1. Criptosistema DES
En el ao 1977 el NBS (National Bureau of Standards), de los EE. UU., anun-
ci un algoritmo de cifrado estndar, el DES (Data Encryption Standard, FIPS
pub. 46, National Bureau of Standards, (enero 1977)), para que fuera utilizado
por todas las agencias federales, con el propsito de hacer compatibles todos
los sistemas de proteccin de la informacin utilizados en los diferentes esta-
dos, bajo un sistema criptogrfico comn admitido como estndar. La nueva
agencia que sustituy a la NBS, el NIST (National Institute of Standards and
CC-BY-NC-ND PID_00200951 10 Elementos de criptografa
Technology), certific el DES en el ao 1987 y otra vez en 1993, hasta que en
1997 ya no lo certific. Durante estos aos fue considerado estndar a nivel
mundial y hoy todava es utilizado en el intercambio de informacin entre los
cajeros automticos y los bancos respectivos. Aunque sea por motivos histri-
cos nos parece interesante hacerle referencia.
El DES consiste en un algoritmo de cifrado-descifrado en bloques de 64 bits,
mediante una clave k, tambin de 64 bits (de los cuales solo 56 bits son efec-
tivos).
Enlace de inters
Se puede encontrar un
aplicativo de simulacin del
DES, de uso libre, en la
direccin:
www.criptored.upm.es.
Los 64 bits de entrada (mensaje original) se transforman a travs de una per-
mutacin inicial PI, cuya salida se divide en dos sub-bloques L0 y R0 de 32 bits
cada uno, los cuales estn sujetos a un conjunto de 16 transformaciones, de
acuerdo con una cierta funcin f y 16 sub-claves ki (i = 1, . . . ,16). Tras realizar
las 16 transformaciones se reunifican los sub-bloques R16 y L16 y se le aplica la
inversa de la permutacin inicial: PI1.
Si Ti es el resultado de la i-sima iteracin, entonces Ti est formada por dos
partes la Li, que denota los 32 bits ms a la izquierda de Ti, y Ri, que denota
los 32 bits ms a la derecha de Ti; o sea, Ti es la concatenacin de Li con Ri. El
clculo se hace de este modo:
Li = Ri1,
Ri = L1 f (Ri1,ki)
donde es la operacin or-exclusiva y ki es una sub-clave de 48 bits obtenidaa partir de la clave original k.
La funcin f transforma los 32 bits del bloque Ri1, mediante la sub-clave ki en
los 32 bits del bloque Ri. Para hacer esto, primero se expanden los 32 bits de
Ri1 en un bloque de 48 bits, utilizando una tabla de expansin E para calcular
la or-exclusiva de E(Ri1) y ki, el resultado de la cual se divide en ocho bloques
Bi de 6 bits de entrada y cuatro de salida. Estos bits de salida son concatenados
por dar un nuevo bloque de 32 bits. Finalmente, la salida de la funcin f es el
resultado de aplicar una cierta permutacin P al bloque de 32 bits anterior. Es
decir:
f (Ri1,ki) = P(S1(B1),S2(B2)...S8(B8))
Cada una de las 16 iteraciones del algoritmo DES utiliza una clave diferente
de 48 bits, ki, calculada a partir de la clave k de 64 bits, la cual posee 8 bits de
control en las posiciones 8,16,24,32,40,48,56,63, mediante una permutacin
P1 de 56 bits. El resultado P1(k) se divide en dos partes de 28 bits cada uno,
a los que se aplica un desplazamiento a la izquierda diferente para cada sub-
clave ki.
CC-BY-NC-ND PID_00200951 11 Elementos de criptografa
La siguiente figura detalla los pasos del algoritmo de cifrado DES:
Nota
El hecho de que no seanintercambiados R16 y L16antes de aplicarles lapermutacin PI1 obedece aque el algoritmo quedescribimos tambin seutilizar para el descifrado.
m = texto original de 64 bits
Permutacin inicial PI
L0
L1
L2
L14
L15
L16
R0
R1
R2
R14
R15
Inversa de PI
c = texto cifrado
R16
k1
k2
k15
k16
f(R0,k1)
f(R1,R2)
f(R14,k15)
f(R15,k16)
Para aumentar la fortaleza del DES ante posibles criptoanlisis se propuso la
reiteracin de los procesos de cifrado/descifrado operando, sucesivamente, so-
bre el mismo bloque con varias claves independientes. Este es el caso del doble
o triple cifrado.
1) Doble cifrado. Dadas las claves independientes k1 y k2, los algoritmos de
cifrado y descifrado vienen dados por:
c = Ek2(Ek1 (m))
m = Dk1(Dk2 (c))
CC-BY-NC-ND PID_00200951 12 Elementos de criptografa
2) Triple cifrado. Dadas las claves independientes k1, k2 y k3, los algoritmos
de cifrado y descifrado vienen dados por:
c = Ek3(Dk2 (Ek1(m))
m = Dk1 (Ek2(Dk3 (c))
El mtodo de triple cifrado puede ser utilizado para evitar el ataque criptoana-
ltico del meet in the middle.
1.2. Criptosistema IDEA
El International Data Encryption Algorithm es un criptosistema de clave si-
mtrica, que fue diseado para corregir las debilidades detectadas en el DES.
Hoy en da es utilizado en correo electrnico seguro (PGP)
El algoritmo IDEA opera en bloques de 64 bits como texto original, dando un
texto cifrado de 64 bits, mediante una clave de 128 bits. Es decir, opera sobre
la misma longitud de bloques de bits que el DES, pero con una longitud de
clave doble, lo cual aade complejidad al criptoanlisis.
Enlace de inters
Se puede encontrar un
aplicativo para la
simulacin del IDEA, de uso
libre, en la direccin:
www.criptred.upm.es.
Las operaciones se realizan sobre sub-bloques de 16 bits, cosa que permite su
adaptacin a arquitecturas de 16 bits. En el algoritmo encontramos tres tipos
de operaciones: la or-exclusiva , la suma mdulo 216 y el producto mdulo216 + 1 (este valor, 216 + 1 es un nmero primo, por lo cual podemos calcular
inversos dentro del cuerpo finito correspondiente).
Sea m un bloque de 64 bits que queremos cifrar; ste se dividir en 4 sub-
bloques de 16 bits: m1, m2, m3, m4, que sern la entrada al algoritmo de cifra-
do. El algoritmo consta de ocho pasos con las mismas caractersticas. En cada
paso, intervienen los cuatro sub-bloques de texto y seis sub-claves, tambin
de 16 bits, de forma que en cada paso los bloques segundo y tercero se inter-
cambian. Para acabar, hay un noveno paso, en el cual intervienen los cuatro
sub-bloques de texto y solo cuatro sub-claves.
La clave de 128 bits se subdivide en ocho sub-bloques de 16 bits cada uno,
los cuales constituyen las primeras ocho sub-claves utilizadas por el algorit-
mo: seis de estas en el primer paso y las dos restantes son las dos primeras del
segundo paso. Para poder continuar, se le aplica a la clave inicial una rota-
cin de 25 bits a la izquierda y la nueva clave resultante se subdivide en ocho
sub-bloques de 16 bits. Ahora el algoritmo utilizar las dos sub-claves anterio-
res seguidas de las cuatro primeras sub-claves provenientes de la subdivisin
actual. Las cuatro restantes se utilizarn en el tercer paso, y as sucesivamente
El diagrama de bloques del criptosistema IDEA se muestra en la figura si-
guiente.
CC-BY-NC-ND PID_00200951 13 Elementos de criptografa
mi = sub-bloque texto original
kij= subclave j-sima del paso i
ci= sub-bloque texto cifrado
m1 m2 m3 m4
k11 k12 k13 k14
k15
k16
k91 k92 k93 k94
7 pasosms
c1 c2c3 c4
Sumador mdulo 216
Multiplicador mdulo 216 + 1
XOR= sumador bit a bit, mdulo 2
+ +
+
+
+ +
+
1.3. Criptosistema AES
Enlace de inters
Se puede encontrar un
aplicativo de simulacin del
AES, de uso libre,
denominado AES Inspectoren la direccin:
www.formaestudio.como
/rijndaelinspector.
Durante el periodo que el DES estuvo en vigor (1977-2001) se propusieron
decenas de cifrados alternativos, muchos de ellos de dominio pblico. La NSA
(National Security Agency) tambin dio a conocer en 1994 un nuevo cifrado
para ser usado en telefona y comercio electrnico: Skipjack.
El Skipjack es un algoritmo de cifrado en bloques de 64 bits, fue declarado
secreto, y los chips que se han implementado impiden acceder a su cdigo
fuente. Quizs proceda as la agencia NSA porque no desea que uno de sus
criptosistemas circule abiertamente por todo el mundo, o para poder escuchar
conversaciones telefnicas cifradas, o ambas cosas.
CC-BY-NC-ND PID_00200951 14 Elementos de criptografa
En enero de 1997, el NIST (National Institute of Standards and Technology),
viendo que la seguridad del DES estaba ya comprometida (por motivos es-
trictamente computacionales, porque el DES nunca ha sido roto), convoc a
concurso pblico la adjudicacin del nuevo estndar de cifrado. Se denomi-
nara AES, acrnimo de Advanced Encryption Standard. En la convocatoria
se especificaba una serie de requisitos mnimos: un cifrado en bloque de 128
bits; con claves de 128, 192 y 256 bits; la posibilidad de ser implementado
tanto en hardware como en software y estar disponible gratuitamente. Pero lo
ms destacado de la convocatoria era que el concurso estaba abierto a todo el
mundo y que el proceso de seleccin iba a ser totalmente transparente.
Con esta idea se inici una etapa larga de seleccin que culmin, el ao 2000,
en la eleccin del criptosistema Rijndael de los investigadores belgas Vincent
Rijmen y Joan Daemen.
Desde este momento, DES ya tiene sustituto: AES. Naturalmente, la decisin
del NIST de adoptar el nuevo criptosistema solo obliga a la administracin
federal americana, y en lo concerniente a la informacin no clasificada; pero
con toda seguridad, AES va a ser el cifrado ms usado en los prximos aos.
La recomendacin del cifrado por parte del NIST es todo un certificado de
garanta para empresas y organizaciones. Prueba de ello es que la misma NSA
ha aprobado el uso de AES para cifrar informacin clasificada: la secreta con
claves de 128 bits y la de alto secreto con claves de 192 y 256 bits.
Criptoanlisis
El disponer de un estndar decifrado de uso generalizadotiene un gran inconveniente:que todo el mundo quiereromperlo. Al exigir claves conuna longitud mnima de 128bits, el NIST dotaba a sucifrado de una seguridad msque suficiente contra unataque de fuerza bruta; elnico mtodo que venci alanterior estndar, el DES.Descubrir una clave de 128bits comprobando una a unatodas las posibles es unatarea prcticamente eternapara cualquier ordenador dehoy en da. Incluso paratodos ellos trabajando juntos.Y 256 bits son garanta desobra contra todos losordenadores electrnicos quese construyan en las prximasdcadas. Ser necesario algoms que fuerza bruta paraderrotar al AES. Durante elconcurso, el vencedorRijndael (igual que el resto delos finalistas) prob serinmune a todos los mtodosde criptoanlisis conocidoshasta aquel momento.
El proceso de cifrado de cada bloque de 128 bits de texto original consta de
tres transformaciones, o capas distintas donde se tratan los bits, que cons-
tan de:
Capa de Mezcla Lineal: difusin de los bits: ShiftRow y MixColumns.
Capa No Lineal: ByteSub (similar a las S-boxes del DES).
Capa de Adicin de Clave: operaciones con la funcin or-exclusiva entreel estado intermedio y la sub-clave de cada ronda.
Las operaciones implicadas en AES se expresan en trminos algebraicos em-
pleando cierta aritmtica de bytes. En esta aritmtica, la suma y el producto
de bytes son justamente la suma y el producto en el cuerpo finito F28 , cons-
truido a partir del polinomio primitivo: p(X) = X8 +X4 +X3 +X + 1.
1.4. Modos de operacin de los criptosistemas de clave privada
Por aumentar la seguridad del algoritmo de cifrado y el de descifrado se utili-
zan de diferentes modos:
CC-BY-NC-ND PID_00200951 15 Elementos de criptografa
Cifrado en bloque: donde el texto original se procesa en bloques disjun-tos de 64 bits, los bloques de salida de los cuales, tambin de 64 bits, se
concatenan para formar el texto cifrado. Este modo suele llamarse ECB
(Electronic Code-Book). Esta manera de cifrar/descifrar impide, por un lado,
la supresin y/o insercin de bloques de texto cifrado, porque en cualquier
caso el receptor sera incapaz de descifrar el criptograma recibido y, por lo
tanto, quedara alertado de las posibles intrusiones. Por otro lado, los ata-
ques estadsticos tambin se complican, debido a la interdependencia del
texto cifrado a lo largo de todo el proceso. Una alternativa es el denomi-
nado cifrado en bloques encadenados, consistente en dividir el texto que
hay que cifrar en bloques y hacer depender el bloque n-simo de texto ci-
frado/descifrado del bloque (n 1)-simo. Es decir:
cn = Ek(mn cn1)
mn = Dk(cn) cn1
El primer bloque de entrada al proceso de cifrado est formado por la or
exclusiva entre el primer bloque del mensaje y los 64 bits del vector inicial
c0 = VI, el cual es compartido por los algoritmos de cifrado y de descifrado.
Este modo suele denotarse CBC (Cipher Block Chaining).
Cifrado en flujo: operando sobre uno oms bits, desplazando previamenteun conjunto de bits de la operacin anterior en nmero suficiente para
guardar los nuevos (stream cipher).
Secreto perfecto deShannon
El hecho de que los registrosde desplazamiento quegeneran la secuencia binariak1,k2...kn tengan un periodofinito est en contraposicincon los requerimiento delsecreto perfecto de Shannon,porque, si el texto a cifrar esmuy largo, se repetir la clavede forma determinista.
Dentro de este modo de cifrado, se considera el modo CFB Cipher Feedback,
que consiste en una or-exclusiva entre los n bits ms a la izquierda de la
informacin de salida del proceso de cifrado y los n bits de la informacin
de entrada produciendo n bits de texto cifrado (n es el nmero bits a cifrar).
El criptograma se obtiene a partir de un valor inicial VI y del criptograma
anterior. Para cargar estos n bits en el dispositivo de cifrado, desplazaremos
el contenido del valor inicial VI n bits a la izquierda.
Esta modalidad permite el tratamiento de bloques de menos de 64 bits.
Normalmente se utiliza para la seguridad de mensajes muy repetitivos y
para cifrar/descifrar ficheros donde no conviene almacenar informacin
intil.
Existen otros mtodos, implementados con registros de desplazamiento;
LFSR (Linear Feedback Shift Register), en los cuales la clave k se usa para con-
trolar un generador de claves variables (running key genarator), que produce
una secuencia binaria k1,k2...kn (n debe ser mucho ms grande que la lon-
gitud de la clave). As, los dgitos del texto cifrado se forman a partir del
texto original, en binario:
ci = mi ki
Evidentemente, el descifrado se har de forma simtrica: mi = ci ki
CC-BY-NC-ND PID_00200951 16 Elementos de criptografa
2. Criptosistemas de clave pblica.
En el ao 1976 entra en juego el nuevo concepto de criptosistema propuesto
por Diffie y Hellman, con dos claves, una de las cuales puede ser revelada
pblicamente sin peligro de que se pueda deducir la otra.
Separabilidadescritura/lectura
Este tipo de criptosistemasson muy indicados para laproteccin de ficherospblicos, puesto que elhecho de poder escribirinformacin sobre el ficherono implica poderla leer yviceversa, porque las clavesde escritura y lectura sonindependientes, pese a queestn relacionadas.
En un criptosistema con claves pblicas cada usuario tiene un algoritmo de
cifrado Ek, registrado en un directorio pblico, y un algoritmo de descifrado
Dk que solo conoce el usuario. Mientras Dk se define en funcin de la clave
privada, Ek se define mediante un algoritmo o funcin que no permita, desde
el punto de vista computacional, la revelacin de Dk. Estos tipos de algoritmos
o funciones reciben el nombre de unidireccionales.
En este caso, dos algoritmos diferentes proporcionan el secreto y la autentici-
dad. Por ejemplo, si el usuario A quiere transmitir el mensaje m al usuario B,
ambos conectados al mismo directorio pblico, solo debe buscar el algoritmo
de cifrado EkB de B en el directorio pblico y transmitir el mensaje cifrado c =
EkB(m). Cuando el usuario B recibe c tiene que aplicar DkB , que solo l conoce,
y encuentra el mensaje original DkB (c) = m, (ya que DkB(c) = DkB (EkB(m)) = m).
Con la utilizacin de la criptografa de clave pblica queda asegurado el se-
creto, pero no queda protegida la autenticidad, puesto que todos los usuarios
pueden conocer EkB . Firma digital
En general, se enva la firmapor una parte y el mensaje,cifrado o no, por otra parte;segn la necesidad deprivacidad del mensaje. As, siA quiere enviar un mensajefirmado a B, enviar m, oEkB (m) y la firmacorrespondiente:s = DkA (h(m)). Entonces, Brecupera m con su claveprivada que compara con elresultado de aplicar el cifradocon la clave pblica de A a s.Si ambos resultadoscoinciden se acepta laautenticacin y de locontrario se rechaza. Incluso,como veremos ms adelante,lo que se enviar es elmensaje m, cifrado o no, y lafirma de un resumen delmensaje: h(m) (funcin dehash). En tal caso la firmaser: s = DkAh(m) (ver elalgoritmo de firma DSA).
Para conseguir la autenticidad tendremos que exigir a las transformaciones
Ek y Dk, de cada usuario, que verifiquen que Ek sea la transformacin inversa
de Dk; es decir, que para todo mensaje m y para todo usuario con clave k,
tengamos: Ek(Dk(m)) = m,
En este caso el usuario A podr firmar sus mensajes mediante su transforma-
cin secreta DkA . En efecto, si A quiere enviar el mensaje m a B, autenticando
su procedencia, podr firmar digitalmente este mensaje haciendo s = DkA(m),
donde s ser la firma y DkA la transformacin de descifrado del usuario A; que
solo l conoce y, por lo tanto, solo l podr hacer esta operacin.
Ahora, una vez firmado el mensaje, A enviar el mensaje cifrado c=EkB(s).
Cuando B reciba c; puede encontrar s, puesto que s = DkB (c), que ser inin-
teligible para l. Ya que ha sido prevenido por A que le enviaba un mensaje,
para descifrar el contenido de s, solo debe buscar en el directorio pblico el
algoritmo EkA de A. Y en efecto, EkA(s) = m era el mensaje que pretenda trans-
mitirle A.
CC-BY-NC-ND PID_00200951 17 Elementos de criptografa
2.1. Funciones unidireccionales
La idea fundamental de Diffie y Hellman para la definicin de criptosistema
con clave pblica se basa en la existencia de las funciones unidireccionales
(One way functions).
.
Definicin 2.1 (Funcin unidireccional).
Una funcin f sobre un dominio U se llama unidireccional si x U,f (x) es fcilmente calculable, mientras que para casi todo y f (U), noes computacionalmente factible encontrar x U, tal que f (x) = y.
Observar que la definicin no es muy precisa: los trminos fcilmente calcula-
ble, para casi todo y computacionalmente factible son muy imprecisos, aunque se
pueden definir matemticamente para que tengan un sentido perfectamente
preciso.
.
Definicin 2.2 (Funcin unidireccional con trampilla).
Una familia de funciones invertibles fk con dominio Uk, con ndice k,
se llama funcin unidireccional con trampilla si, dado k, se pueden en-
contrar algoritmos Ek y Dk que calculen fcilmente fk(x) y f1k (y) x Uk
y y f (Uk); y, sin embargo, para casi todo k y y f (Uk), no es compu-tacionalmente eficiente encontrar f 1k (y), con el nico conocimiento
de Ek.
Una de las primeras candidatas a funcin unidireccional fue la del logaritmo
discreto, propuesta por los mismos Diffie y Hellman. En efecto, dados un n-
mero primo grande, p, y un elemento primitivo del cuerpo Fp, la funcin
exponencial discreta: f (x) = x (mod p), donde 1 < x < p es computacional-
mente eficiente calcularla.
Algoritmo de multiplicary elevar
Para valores de x grandes,podemos usar el mtodobinario de exponenciacin(D. E. Knuth (1981). The Artof Computer Programming.
vol. 2 Semi-Numerical
Algorithms. Addisson Wesley).Por ejemplo (vase elalgoritmo 3.2 del mduloCuerpos finitos de estaasignatura), para calcular 25
se puede realizar de estaforma: 25 = 16+8+1 =(((2)2)2)2 ((2)2)2 .
En cambio, la inversa de la exponencial discreta; el logaritmo discreto x =
log(y) no es computacionalmente eficiente calcularlo si p1 tiene un factor
primo grande.
2.2. Criptosistema RSA
A partir del concepto de funcin unidireccional, Diffie y Hellman definen la
estructura de un criptosistema de clave pblica. Sin embargo, no proporcio-
nan ninguna implementacin concreta de tal estructura, excepto para el caso
del protocolo de distribucin de claves privadas que veremos ms adelante.
CC-BY-NC-ND PID_00200951 18 Elementos de criptografa
R. L. Rivest, A. Shamir y L. Adleman, del MIT, en su artculo A Method for
Obtaining Digital Signatures and Public-Key Cryptosystems, Comm. of ACM
21(2); 120-126, February 1978, presentaron un criptosistema de clave pblica
que cumpla todas las condiciones enumeradas anteriormente (el criptosiste-
ma RSA), basado en el teorema de Euler y en la dificultad de factorizar un valor
n = p q, donde p y q son primos.
Clculo de (n)
Para valores grandes de p y q,no es computacionalmenteeficiente el clculo de (n),para quien no conoce losvalores de p y q.
Teorema de Euler
El teorema de Euler aseguraque la funcin f 1
kes la
inversa de fk, es decir:f 1k(fk(x)) = x (mod n), si x
es relativamente primo con n.
La funcin unidireccional del RSA es la exponencial discreta: fk(x) = xe (mod n);
donde 0 < x < n = p q y donde k = (e,n); p y q son dos nmeros primos muygrandes y e cumple 0 < e < (n) ymcd(e,(n)) = 1. El algoritmo Ek para calcular
fk(x) es relativamente fcil; es la exponenciacin por el mtodo de multipli-
car y elevar mencionado anteriormente. Hacer pblico este algoritmo requiere
divulgar n y e.
Trampilla
Dado (n) es fcil generar elpar de nmeros e y d quesatisfacen la condicin deinversos (mod (n)),cuando e o d sonrelativamente primos con(n). Es decir, dado e, es fcilcalcular d (o viceversa) siconocemos (n). Sinembargo, si e y n sonconocidos, sin revelar (n),no es computacionalmenteeficiente calcular d.
La funcin inversa es:
f 1k (y) = yd (mod n)
donde d es el nico 0 < d < n tal que e d = 1 (mod (n)). El algoritmo f 1k esfcil de calcular para quien conoce la clave (d,n). Pero solo conocer d, quien
conozca (n), difcilmente calculable para quien no conoce la factorizacin de
n en p y q (esta es la trampilla de la funcin unidireccional utilizada).
2.2.1. Descripcin del criptosistema
El criptosistema RSA consiste en asociar a cada carcter del alfabeto, en qu
estn escritos los mensajes originales, un valor numrico y entonces cifrar el
mensaje por bloques de la misma longitud y con un valor numrico compren-
dido en un cierto rango.
Supongamos m [2,n 1] correspondiente a un cierto bloque a cifrar. El algo-ritmo de cifrado se reduce al clculo de una exponencial donde la clave es el
par de nmeros (e,n):
c = E(e,n)(m) = me (mod n)
La algoritmo de descifrado, para poder obtener m a partir de c, consiste
tambin en una exponenciacin, donde la clave es ahora otro par de nme-
ros (d,n):
m = D(d,n)(c) = cd (mod n)
La manera de obtener un buen esquema de cifrado y descifrado recae en la po-
sibilidad de obtener (n). Rivest, Shamir y Adleman sugieren este tratamiento:
CC-BY-NC-ND PID_00200951 19 Elementos de criptografa
1) Encontrar el valor n = p q, donde p y q son dos nmeros primos grandes(en los inicios del RSA ya se sugeran de un centenar de dgitos cada uno).
2) Conociendo p y q, calcular: (n) = (p 1) (q 1).3) Tomar e relativamente primo con (n).4) Calcular d = e1 (mod (n)).
Veamos un ejemplo aunque los valores empleados no son los que se podran
usar en la realidad.
* Por ejemplo, usando el
algoritmo de Euclides
extendido, segn el
algoritmo 1.4 del mdulo
Cuerpos finitos.
Ejemplo 2.1. Supongamos p = 13 y q = 17. Entonces n = 13 17 = 221 y (n) = 12 16 =192. Escogiendo e = 11 ((e, (n))=(11, 192)=1), calculamos el valor de d, tal que d e = 1(mod (n)) y encontramos d = 35.* La clave pblica ser (11,221) y la clave privada ser(35,221).
Entonces el cifrado ser: c = E(11,221)(m) = m11 (mod 221) y el descifrado: m =
D(35,221)(c) = c35 (mod 221).
Si suponemos que el conjunto de mensajes originales esM = {A,B,...,Y,Z} y la correspon-diente asignacin numrica esMn = {2,3,...,26,27}, y queremos cifrar el mensajem = EDIo, numricamente, 060510, haremos sucesivamente:
611 (mod 221) = 141 511 (mod 221) = 164 1011 (mod 221) = 173
y nos dar el criptograma c = 141164173.
Para el descifrado iremos cogiendo sucesivamente bloques de tres dgitos y haremos:
14135 (mod 221) = 6 16435 (mod 221) = 5 17335 (mod 221) = 10
que nos dar el mensaje original m = 060510 o, en caracteres: m = EDI.
2.2.2. Firma digital, basada en el RSA
Los algoritmos de cifrado y descifrado del algoritmo RSA son conmutativos; es
decir: Dk(Ek(m) = Ek(Dk(m)), y por lo tanto, el esquema RSA puede ser utilizado
para ambos objetivos de privacidad y autenticidad. En base a esta conmutati-
vidad se puede utilizar el RSA para construir firmas digitales.
En este caso, si suponemos dos usuarios A y B, con claves pblicas (eA,nA) y
(eB,nB) y claves privadas (dA,nA) y (dB,nB), respectivamente, podremos arbitrar
un sistema de firma digital como se ha mencionado anteriormente.
Si el usuario A quiere enviar el mensaje m, firmado digitalmente, al usuario B,
proceder de la forma siguiente:
Firma digital, basada enel RSA
En general, dado que losvalores de m sern muygrandes, se firmar unresumen de m y la firma ser:s = D(dA,nA)(h(m)), dondeh(m) es la funcin resumen(hash) de m.En este caso, en lugar deproceder cmo indica elsegundo paso del cifrado, elmensaje m se enviar aparte,cifrado o no.La funcin resumen deberser conocida, tambin por elusuario B, para poderproceder a hacer laverificacin del segundo pasodel descifrado.
Por parte del usuario A:
1) Firmar m con su clave privada: s = D(dA,nA)(m)
2) Cifrar la firma con la clave pblica de B: c = E(eB,nB)(s)
CC-BY-NC-ND PID_00200951 20 Elementos de criptografa
Por parte de B, una vez recibido el criptograma c:
1) Descifrar el criptograma c con su clave privada: D(dB,nB)(c) = s
2) Verificar, a partir de la firma s, si el criptograma c ha sido enviado realmente
por A: E(eA,nA)(s) = m
Ejemplo 2.2.
Usuario A:
Sean p = 29 y q = 7 los valores escogidos por A. Entonces nA = 29 7 = 203 y (nA) =28 6 = 168.
Supongamos que A escoge: (eA = 19,nA = 203) como clave pblica, entonces (dA =115,nA = 203) ser su clave privada.
Usuario B:
Sean p = 13 y q = 17 los valores escogido por B. Entonces nB = 13 17 = 221 y (nB) =12 16 = 192.
Supongamos que B escoge: (eB = 11,nB = 221) como clave pblica, entonces (dB = 35,nB =221) ser su clave privada.
Si suponemos que el conjunto de mensajes originales es M = {A,B,...,Y,Z} y la corres-pondiente asignacin numrica es Mn = {2,3,...,26,27}, y queremos firmar digitalmenteel texto original EDI o, numricamente, 060510, haremos sucesivamente:
6115 (mod 203) = 13 5115 (mod 203) = 96 10115 (mod 203) = 101
y nos dar la firma s = 013096101.
Para el cifrado, iremos cogiendo sucesivamente bloques de tres dgitos de la firma s yharemos:
01311 (mod 221) = 208 09611 (mod 221) = 216 10111 (mod 221) = 186
que nos dar el criptograma c = 208216186.
Cuando el usuario B ha recibido c, lo divide en bloques de tres dgitos y los descifra consu clave privada:
20835 (mod 221) = 013 21635 (mod 221) = 096 18635 (mod 221) = 101
el mensaje s que recupera es ininteligible (13 equivale al carcter L, 96 y 101 no tienenequivalencia dentro del conjunto de mensajes originales). Ahora, el usuario B debe com-probar que 013096101 es la firma digital del usuario A, para esto debe cifrar el resultadoobtenido de la anterior operacin con la clave pblica de A.
01319 (mod 203) = 6 09619 (mod 203) = 5 10119 (mod 203) = 10
que nos dar el texto original 060510 o, en caracteres, EDI.
Nota
El usuario B acepta EDI comoel mensaje que le ha enviadoA, sencillamente porque paral es inteligible; pero esto enmuchos casos no serasuficiente. Tal y comoveremos, en otros casos, laestrategia de firma serdiferente.
CC-BY-NC-ND PID_00200951 21 Elementos de criptografa
2.3. Criptosistema ElGamal
Ver tambin
El algoritmo DSA se estudiaen el subapartado 2.4 de estemdulo.
El criptosistema de clave pblica ElGamal se basa en la funcin unidireccional
exponencial discreta. Este criptosistema ha servido de base para la definicin
de un algoritmo de firma alternativo al RSA, el DSA.
2.3.1. Descripcin del criptosistema ElGamal
Si fijamos un cuerpo finito Fp y un elemento primitivo , supondremos que el
mensaje que queremos cifrar se corresponde con un elemento m Fp. A partirde aqu, cada usuario U escoge al azar un entero rU [2,p 1] que ser su claveprivada. Su clave pblica ser yU =
rU (mod p) Fp.
Entonces, si un usuario A quiere transmitir al usuario B el criptograma corres-
pondiente al mensaje original m Fp, deber hacer las siguientes operacionesdentro de Fp:
Fortaleza
Cualquier enemigo quequiera calcular KrB , a partirdel conocimiento de K y yB,pero sin conocer rB, debercalcular previamente ellogaritmo discreto log(yB).En la dificultad de esteclculo se basa la fortalezadel criptosistema ElGamal.
.
Algoritmo 2.3 (Algoritmo ElGamal):
1) Escoger al azar un entero k y calcular K = k (mod p)
2) Cifrar m como: c = EyB(m) = m (yB)k (mod p)
3) Transmitir el par de nmeros (K,c)
Entonces, el usuario B podr recuperarm a partir del par de nmeros recibidos,
haciendo las siguientes operaciones dentro de Fp:
1) Calcular = KrB (mod p)
2) Calcular c/ (mod p) = mNota
El resultado de esta operacinha de ser, efectivamente,igual a m, ya que KrB
(mod p) = (rB )k
(mod p) = (yB)k (mod p).
A continuacin veremos un ejemplo de utilizacin del algoritmo, para poder
seguirlo mejor, aunque los valores del ejemplo son pequeos comparados con
los que se tendran que usar en la realidad.
* Tal como se ha visto en el
mdulo Cuerpos finitos.
Ejemplo 2.3.
Supongamos el cuerpo finito F23 y sea = 5 el elemento primitivo elegido*. Si rA = 13,la clave pblica del usuario A ser yA = 5
13 (mod 23) = 21. Si rB = 17, la clave pblica delusuario B ser yB = 5
17 (mod 23) = 15.
Si el usuario A quiere transmitir al usuario B el mensaje m = 18 efectuar los siguientesclculos:
1) Tomar al azar un entero, por ejemplo k = 7, y calcular K = 57 (mod 23) = 17
2) Cifrar m = 18, sabiendo que yB = 15, como: c = E15(18) = 18 157 (mod 23) = 14.3) Transmitir el par de nmeros (17,14).
CC-BY-NC-ND PID_00200951 22 Elementos de criptografa
Entonces el usuario B podr recuperar m a partir del par de nmeros recibidos, (K,c),haciendo las siguientes operaciones dentro de F23:
1) Calcular = 1717 (mod 23) = 11
2) Calcular c/ = 14/11 (mod 23) = 18; (111 (mod 23) = 21).
Este resultado coincide con el valor del mensaje original, m = 18.
2.3.2. Firma digital, basada en el ElGamal
El criptosistema ElGamal no cumple la condicin de conmutatividad que he-
mos visto en el subapartado de firma digital basada en el RSA. O sea, no se
cumple Ek(Dk(m)) = m. Sin embargo, se puede adaptar el sistema para la au-
tenticacin mediante otro tipo de firma digital.
Supongamos que el mensaje a firmar por un usuario A, para ser trasmitido a
un usuario B, sea m Fp. Para la firma, el usuario A debe realizar las siguientesoperaciones en Fp:
1) Elegir un entero k tal que mcd(k,p 1) = 1 y calcular K = k (mod p).
Firma ElGamal
Se puede calcular, de formadirecta, haciendos = (m rA K) k1(mod q 1).
2) Encontrar un entero s tal que: m = rA K + k s (mod p 1), donde rA y k sonvalores que solo conoce el usuario A; por lo tanto solo l ser capaz de calcular
la firma s.
3) La firma digital es el par de nmeros (K,s). Entonces transmitir (K,s,m),
aunque, opcionalmente, quiz pueda querer tambin cifrar el mensaje m, c =
EyB(m), y enviar (K,s,c).
Para la validacin de la firma del mensaje m, el usuario B debe comprobar que
se cumple la siguiente igualdad:
m = (yA)K Ks (mod p)
donde yA es la clave pblica del usuario A y, por lo tanto, disponible por el
usuario B.
Verificacin
Efectivamente: (yA)K = (K)rA
Ks = (k)s = (mrAK) =m (K)rAEl producto de ambasigualdades resulta ser, m.
En caso de que la igualdad se cumpla, el usuario B aceptar como autntico el
mensaje m que le ha enviado el usuario A. De lo contrario, el mensaje m no
ser validado.
Ejemplo 2.4. Suponemos que continuamos con las mismas hiptesis del ejemplo an-terior: F23, = 5, rA = 13 y rB = 17 La clave pblica del usuario A es yA = 21 y la clavepblica del usuario B es yB = 15.
Si A quiere transmitir el mensajem = 18 al usuario B de forma secreta y autenticada, harlos siguientes clculos:
CC-BY-NC-ND PID_00200951 23 Elementos de criptografa
1) Escoger al azar un entero, por ejemplo k = 7 (mcd(7,22) = 1), y calcular K = 57
(mod 23) = 17.
2) Calcular s tal que m = rA K + k s (mod 22). Es decir:
s = (m rA K) k1 (mod 22) = (18 13 17) 71 (mod 22) = 15; (71 (mod 22) = 19).
3) Para transmitir el mensaje cifrado (en el ejemplo anterior c = 14) y firmado, el usuarioA enva: (K,s,c) = (17,15,14).
Entonces, el usuario B puede validar la transmisin a partir de m (en el ejemplo anterior,a partir de c, haba reencontrado m = 18) y el par de nmeros (K,s).
Efectuando el clculo (yA)K Ks (mod p) = 2117 1715 (mod 23) = 6, que coincide con m
(mod p) = 518 (mod 23) = 6.
Por lo tanto, el usuario B dara por vlida la firma s del mensaje m.
2.4. Algoritmo DSA como alternativa a la firma digital RSA
En 1991, el NIST (National Institute of Standards and Technology) hizo la
propuesta del algoritmo DSA (Digital Signature Algorithm) como un estndar
de firma digital DSS (Digital Signature Standard).
Este algoritmo DSA fue desarrollado por la NSA (National Security Agency), a
partir de la firma digital de ElGamal, pero con el propsito aadido de reducir
la longitud. Este algoritmo contiene los parmetros siguientes:
p, un nmero primo de 2 L bits, donde L es un mltiplo de 64 y estcomprendido entre 512 y 1024 bits.
q, un factor primo de p 1 de unos 160 bits. Sea n = (p 1)/q
, tal que = gn (mod p), donde g es un nmero menor que p 1 y deforma que (mod p) > 1.
x, un nmero cualquiera menor que q.
y, tal que y = x (mod p).Funcin unidireccionalhash
Una funcin hash, h, vienedefinida por una serie deoperaciones que transformanun mensaje m, de longitudvariable, en una secuencia depocos bits, h(m), de longitudfija, como veremos en elprximo subapartado.
h(.), una funcin unidireccional hash.
Los nmeros p, q y son pblicos para todos los usuarios de la red, mientras
que x es la clave privada e y es la clave pblica.
Sea m el mensaje que A quiere enviar a B, firmado para que B pueda autenti-
carlo.
El usuario A, del cual se suponen conocidos los parmetros anteriores, excepto
x, deber realizar las siguientes operaciones:
CC-BY-NC-ND PID_00200951 24 Elementos de criptografa
1) Escoger un nmero aleatorio k, menor que q.
2) Generar dos valores r y s, tales que:
r =`k (mod p)) (mod q)
s = ((h(m) + x r) k1) (mod q)3) Enviar el mensaje m y su firma digital (r,s).
El usuario B, al recibir el mensaje m, y su firma digital correspondiente (r,s),
podr hacer el siguiente proceso de autenticacin:
1) Seleccionar, en el directorio pblico, los parmetros de A: p,q, y h(.)
2) Calcular: w = s1 (mod q)
u1 = (h(m) w) (mod q)u2 = (r w) (mod q)
Verificacin de firma
Por simplicidad, y sin perderrigor en la prueba,obviaremos los clculosmodulares.v = u1 yu2 = (h(m)s1 ) (x)rs
1= (h(m)+xr)s
1,
y segn la definicin de s,este resultado es,efectivamente, k = r.
3) Calcular: v = ((u1 yu2 ) (mod p)) (mod q)
4) Autenticar: Si v = r entonces la firma digital (r,s) de A, es aceptada por B.
El siguiente diagrama representa el proceso de esta firma digital:
mSHA h(m) DSA
x k
Signatura p,q,g
Ficheropblico
Verificacin
Signaturarechazada
Signaturaaceptada
No
S
v v = r
SHAp,q,g
DSA
rs
h(m)
CC-BY-NC-ND PID_00200951 25 Elementos de criptografa
Funcin hash ficticia
Por simplicidad, en elejemplo hemos escogidocomo funcin hash, ficticia, elproducto de los valoresnumricos de los caracteresimpares (mod 29). Estapropuesta no tiene nada quever con una funcin de hashreal, como las quedetallaremos en el prximoapartado.
Ejemplo 2.5.
Suponemos que el conjunto de mensajes originales es M = {A,B,...,Y,Z} y la correspon-diente asignacin numricaMn = {2,3,...,26,27}. Si el usuario A quiere firmar digitalmen-te el texto original EDI o, numricamente, 060510, teniendo en cuenta los parmetros
del criptosistema, har las siguientes operaciones:
Parmetros pblicos:
p = 29,q = 7 (n = (p 1)/q = 28/7 = 4) = 54 (mod 29)=16; (g = 5)Clave privada: x = 3Clave pblica y = 163 (mod 29) = 7Parmetro aleatorio secreto: k = 6
Entonces, el usuario A calcula (suponiendo la funcin ficticia de hash anterior):h(m) = h(06,05,10) = 60 (mod 29) = 2r = (166 (mod 29)) (mod 7) = 20 (mod 7) = 6s = (2 + 3 6) 1/6 (mod 7) = 6 1/6 (mod 7) = 1
Por lo tanto, DSA(EDI) = DSA(060510) = (6,1) y enviar al usuario B: (EDI,6,1).
El usuario B, a la recepcin de esta tripla, realiza la verificacin, tras seleccionar los par-metros p,q,g y h(.):
Calcula:
h(EDI) = 2, puesto que (h(06,05,10) = 6 10 (mod 29))w = 11 (mod 7) = 1u1 = 2 1 (mod 7) = 2u2 = 6 1 (mod 7) = 6
Verifica que v = (162 76 (mod 29)) (mod 7) = 20 (mod 7) = 6(= r) y por lo tanto, validala firma.
Criticidad de la funcinde hash
Si suponemos que enviamosun texto diferente con lamisma firma (EDJ, 6, 1), elusuario B hara los siguientesclculos:h(EDJ) = 8;(h(06,05,11) = 6 11(mod 29) = 8)w = 11 (mod 7) = 1u1 = 8 1 (mod 7) = 1u2 = 6 1 (mod 7) = 6v = (161 76 (mod 29))(mod 7) = 23
(mod 7) = 2( 6= r = 6), con locual no se autenticara lafirma.Sin embargo, hay queobservar que si el mensajefirmado hubiera sido BUS,como queh(BUS) = h(03,22,20) = 3 20(mod 29) = 2, derivara lamisma firma. Con lo cual, sepuede ver que la eleccin dela funcin de hash es crticarespecto a este algoritmo.
2.5. Funciones hash: MD5 y SHA-1
Enlace de inters
Se puede encontrar un
aplicativo de simulacin de
las funciones hash MD5 ySHA-1, de uso libre, en la
direccin:
www.criptored.upm.es.
El propsito de las funciones hash es el de proporcionar una huella, una im-
pronta, de pocos bits, de un fichero, mensaje o cualquier otro bloque de datos,
por grande que sea, el cual se quiere autenticar.
Una funcin hash, h, debe tener las siguientes propiedades:
1) Se debe poder aplicar la funcin h a un bloque de datos de cualquier lon-
gitud.
2) El resultado de la funcin h debe ser de longitud fija, de pocos bits.
3) Debe ser computacionalmente eficiente calcular h(m) para cualquier m,
tanto en implementaciones de hardware como de software.
4) Para un bloque determinado x, no debe ser computacionalmente eficiente
encontrar un mensaje m tal que h(m) = x.
5) Para un mensaje determinadom, no debe ser computacionalmente eficien-
te encontrar otro mensaje m 6= m tal que h(m) = h(m).
6) No debe ser computacionalmente eficiente encontrar un par (m,m) tal que
h(m) = h(m).
CC-BY-NC-ND PID_00200951 26 Elementos de criptografa
Utilidad de las propiedades
Las primeras tres propiedades son tres requisitos para llevar a la prctica las funciones
hash y la autenticacin de mensajes.
La cuarta propiedad sirve para asegurar que no debe ser computacionalmente eficiente
encontrar la inversa de las funciones hash (funciones unidireccionales, one-way functions).
La quinta y sexta propiedad garantizan que no debe ser posible encontrar un mensaje
alternativo con la misma secuencia hash que el original.
A continuacin, pasaremos a examinar los dos algoritmos que implementan
las funciones hash ms utilizadas actualmente: el algoritmo message-digest,
MD5, y el algoritmo secure hash, SHA.
2.5.1. El algoritmo MD5
Eficiencia del MD5
Rivest muestra que, con elMD5, la dificultad deencontrar dos mensajes conla misma secuencia hash esdel orden de 264
operaciones, y, por otraparte, que la dificultad deencontrar un mensaje conuna secuencia hashdeterminada es del orden de2128 operaciones.
El message-digest MD5 lo desarroll Ron Rivest y consiste en un algoritmo
que tiene como entrada un mensaje de una longitud arbitraria y produce una
salida de 128 bits (el message digest).
El mensaje de entrada se procesa en bloques de 512 bits, siguiendo los pasos:
Paso 1: Aadir bits de padding. Se insertan bits en el mensaje para que sulongitud final sea congruente con 448 (mod 512). Esta secuencia de bits
de padding consiste en un 1 seguido de la cantidad necesaria de 0s.
Efecto del padding
Los bits de padding se aadensiempre, incluso si el mensajeya tiene la longitud deseada.Por ejemplo, si el mensajetiene 448 bits de longitud,entonces se aaden 512 bitsde padding para llegar a unalongitud de 960 bits. Estoquiere decir que aadimosuna cantidad de bits depadding que oscilar entre 1y 512.
Paso 2: Aadir la longitud. Al resultado del paso anterior le aadimos larepresentacin en 64 bits de la longitud del mensaje antes de aadir los
bits de padding. Por lo tanto, este campo contiene la longitud del mensaje
original (mod 264). Tras los dos primeros pasos tenemos un mensaje con
una longitud en bits igual a un mltiplo de 512. El mensaje se divide en
bloques de 512 bits, denominados Y0,Y1 YL1; por lo tanto, podemosexpresar la longitud del mensaje como L512 bits, o tambin ver el mensajecomo un mltiplo de 16 palabras de 32 bits.
Paso 3: Iniciar el buffer MD. Para guardar tanto los resultados intermedioscomo el resultado final, se utiliza un buffer de 128 bits, el cual se representa
por cuatro palabras de 32 bits, A,B,C,D, que se inician con los siguientes
valores hexadecimales:
A = 01234567
B = 89ABCDEF
C = FEDCBA98
D = 76543210
CC-BY-NC-ND PID_00200951 27 Elementos de criptografa
Paso 4: Procesamiento del mensaje en bloques de 512 bits (16 palabrasde 32 bits). La parte central del algoritmo es un mdulo que tiene cuatro
etapas de funcionamiento.
Las cuatro etapas tienen una estructura similar, pero utilizan funciones
lgicas primitivas diferentes.
En la figura, se ha etiquetado cada etapa con fF, fG, fH , fY para indicar
que todas tienen la misma estructura, f , pero con una funcin primitiva
diferente: F,G,H,I.
Yq
512
512 512 512 512
512 512 512 512
MDq
3232 32
128128
MDq + 1
ABCD
ABCD
ABCD
ABCD
fF fG fF fI
T[1_16] T[17_32] T[33_48] T[49_64]
128
+
+
+
+
Cada etapa tiene como entrada el respectivo bloque de 512 bits (Yq) y el
valor del buffer A,B,C,D de 128 bits y actualiza el contenido del buffer. En
cada etapa tambin se utiliza una cuarta parte de los 64 elementos de una
tabla T[1..,64] que proporciona un conjunto seudo-aleatorio de secuencias
de 32 bits, que sirven para eliminar cualquier regularidad en los datos de
entrada. Por lo tanto, el proceso del bloque Yq consiste en coger como
entrada el mismo Yq y el resultado (message digest) intermedio correspon-
diente MDq para producir el MDq+1. Las sumas que se hacen al final de las
cuatro etapas son sumas (mod 232).
Paso 5: Salida. Tras procesar los L bloques de 512 bits, la salida MDL1 delL-simo bloque de proceso es la secuencia hash de 128 bits.
2.5.2. El algoritmo SHA-1
El algoritmo SHA-1 fue desarrollado por el NIST y publicado como estndar
de procesamiento de informacin federal FIPS (federal information process stan-
dard, PUB 180) en el ao 1993.
CC-BY-NC-ND PID_00200951 28 Elementos de criptografa
El algoritmo tiene como entrada un mensaje de longitud menor que 264 bits
y produce una salida de 160 bits (el message digest). El mensaje de entrada se
procesa en bloques de 512 bits, siguiendo los pasos:
Comparacin entre SHA yMD5
Los algoritmos MD5 y SHAson bastante similares, ya queambos derivan del mismoalgoritmo MD3.La diferencia ms obvia, y lams importante, es que lasecuencia resultante deaplicar el SHA es 32 bits mslarga que la del MD5.Entonces el SHA es unalgoritmo ms fuerte, desdeel punto de vista delcriptoanlisis, que el MD5. Encambio, el SHA consta de 80pasos y el MD5 solo de 64,cosa que hace que el SHA seejecute del orden de un 25%ms lento. Debemos notarque los dos algoritmos tienenuna gran cantidad de sumasmdulo 232, por lo tantoambos funcionan muy bienen arquitecturas de 32 bits.
Paso 1: Aadir bits de Padding y Paso 2: Aadir la longitud. Igual queen el algoritmo MD5.
Paso 3: Iniciar el buffer SHA. Para guardar tanto los resultados interme-dios como el resultado final, se utiliza un buffer de 160 bits. Podemos re-
presentar el buffer como cinco palabras de 32 bits, A,B,C,D,E, que se inician
con los siguientes valores hexadecimales:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
SHA-2 y SHA-3
Actualmente, se utiliza lavariante SHA-2, desarrolladaen el 2005 a partir del laSHA-1, donde la salida puedeser de 224, 256, 384 o 512bits, para aumentar ladificultad de ser roto.Adems, est en marcha unconcurso pblico paradisear el nuevo estndarSHA-3, que seguramente sehar pblico durante 2012.
Paso 4: Procesamiento del mensaje en bloques de 512 bits (16 palabrasde 32 bits). La parte central del algoritmo es unmdulo que tiene 80 etapas
de procesamiento. La lgica de este mdulo es la siguiente:
Cada etapa tiene como entrada el actual bloque de 512 bits, Yq, y los 160
bits del buffer ABCDE y, como resultado, actualiza el contenido del buffer.
En cada etapa se hace uso de la suma por una constante Kt . De hecho, solo
se utilizan cuatro constantes diferentes. Los valores hexadecimales son los
siguientes:
0 t 19, entonces Kt = 5A82799920 t 39, entonces Kt = 6ED9EBA140 t 59, entonces Kt = 8F1BBCDC60 t 79, entonces Kt = CAN62C1D6
Es decir, el algoritmo SHA para procesar un bloque Yq de 512 bits, toma
como entrada el bloque Yq y el valor intermedio en aquel momento de la
secuencia hash SHAq que se toma del buffer ABCDE. Despus, el resultado
de las 80 etapas se suma a SHAq, dando SHAq+1 que se coloca en el buffer
ABCDE. Esta ltima suma se hace con dos sumandos de 160 bits cada uno,
la operacin se hace de forma independiente para cada una de las cinco
palabras de 32 bits que tiene cada sumando (suma mdulo 232).
Paso 5: Salida. Tras procesar los L bloques de 512 bits, la salida SHAL1 delL-simo bloque de proceso es la secuencia hash de 160 bits.
CC-BY-NC-ND PID_00200951 29 Elementos de criptografa
Yq
512
512 512 512
32 32 32
SHAq
3232 32
160 160SHAq + 1
ABCDE
ABCDE
ABCDE
PASO0 PASO1 PASO79
K0 K1K79
160
+
+
+
+
+
...
2.6. Infraestructura de clave pblica: PKI
En el mbito de las comunicaciones abiertas es imprescindible garantizar la
identidad de los usuarios, adems de los servicios de seguridad: confidenciali-
dad, integridad, autenticacin y no repudio.
Para que estas operaciones se puedan realizar de forma fiable, se deben cumplir
dos condiciones:
Lectura recomendada
Para hacer ms
comprensible este
subapartado es
recomendable el mdulo 7
del libro de Criptografa de
J. Domingo, J. Herrera y H.
Rif-Pous de los estudios de
Informtica y Multimedia
de la UOC.
Que la clave privada se guarde de forma segura y no se desvele a nadie.Para conseguir esto, la clave privada se almacena en un soporte fsico im-
posible de duplicar, como una tarjeta inteligente. Adems, para acceder al
contenido de la tarjeta se necesita un nmero personal que solamente el
propietario legtimo conoce.
Que se pueda determinar a qu persona pertenece una clave pblica. Deesta forma se puede saber, por ejemplo, quin ha llevado a cabo la firma
electrnica de un documento.
Para dar cumplimiento a estas dos condiciones, se utiliza el certificado elec-
trnico, emitido por una autoridad de certificacin (CA). El apoyo tecnolgico
del certificado electrnico es la criptografa de clave pblica. As, puede ver-
se un certificado electrnico como un documento electrnico que asocia una
clave pblica con su propietario.
Por esto, el certificado digital contendr la clave pblica junto con datos de
carcter personal del poseedor de la clave (nombre, DNI...). Normalmente con-
tiene ms informacin (fechas de validez y otras), as como tambin se refiere
CC-BY-NC-ND PID_00200951 30 Elementos de criptografa
al mbito de utilizacin del certificado, lo que se conoce como poltica de cer-
tificacin. Por ejemplo, si es un certificado de uso personal o nos acredita para
actuar en una empresa.
Al realizar una firma electrnica se suele adjuntar el certificado electrnico del
firmante de forma que se puede extraer su clave pblica para verificar la firma
y a la vez comprobar la identidad del firmante.
Una infraestructura de clave pblica (PKI, public key infrastructure) es una es-
tructura de sistemas informticos, procedimientos de operacin, protocolos,
polticas de certificacin, repositorios de informacin, estndares, declaracio-
nes de prcticas y recursos humanos, la finalidad de los cuales es ofrecer a los
usuarios una plataforma para la gestin de la identidad digital.
Una PKI dispone de los elementos y de la arquitectura necesarios para integrar
todos los procedimientos de solicitud de certificados, verificacin de identida-
des, generacin de claves, almacenamiento y publicacin de certificados elec-
trnicos, renovacin, revocacin, etc.
Las infraestructuras de clave pblica se fundamentan en la interaccin de di-
versos subsistemas, de los cuales destacan los siguientes:
Autoridad de certificacin, CA. Una autoridad de certificacin (CA: cer-tificate authority), es una entidad de confianza, cuya finalidad es emitir,
renovar y revocar certificados electrnicos. Las autoridades de certificacin
constituyen el ncleo de las infraestructuras de clave pblica, que permiten
utilizar los certificados electrnicos con total seguridad.
Ejemplos de autoridad de certificacin
En la actualidad, un usuario puede escoger entre mltiples CA para conseguir un
certificado electrnico, pero las ms utilizadas son; a nivel internacional Verisign, a
nivel estatal FNMT y en el mbito cataln CATCert.
* http://www.verisign.com
Verisign* es una de las empresas de mayor reputacin internacional y prestigio en elmundo de la certificacin digital y la seguridad de la informacin. Aunque su aba-
nico de servicios es muy amplio (soluciones comerciales para comercio electrnico,
servidores seguros, tarjetas inteligentes, servidores de nombres de dominio, consul-
tora,...), el ms conocido es el de CA para la expedicin de certificados electrnicos,
ampliamente utilizados en Internet.
** http://www.fnmt.es
Fbrica Nacional de Moneda y Timbre (FNMT)**, es un organismo pblico na-cional espaol que depende del Ministerio de Economa que tiene establecida una
arquitectura de certificacin, CERES, para autenticar y garantizar la confidencialidad
de las comunicaciones entre ciudadanos, empresas u otras instituciones y adminis-
traciones pblicas a travs de redes abiertas de comunicacin.
*** http://www.catcert.cat
CATCert*** es la Agencia Catalana de Certificacin que emite y gestiona la idCAT quees un certificado electrnico que garantiza la identidad de las personas en Internet y
permite operar con diferentes administraciones.
Autoridades de registro, RA. Una autoridad de registro (RA, registrationauthority) es una entidad encargada de llevar a cabo los procesos de veri-
CC-BY-NC-ND PID_00200951 31 Elementos de criptografa
ficacin de identidad, solicitud y distribucin de certificados electrnicos.
Normalmente, en una PKI, los usuarios finales no interactan directamen-
te sobre la CA, sino que canalizan sus operaciones a travs de una o va-
rias RA.
Sin embargo, estos subsistemas no pueden expedir certificados electrnicos
por s mismos.
Certificados electrnicos. Un certificado electrnico es un archivo o do-cumento electrnico expedido y firmado por una CA en el cual se vincula
una identidad a una clave pblica, ligado, a su vez, a la correspondiente
clave privada.
Para obtener un certificado electrnico, el usuario se dirige a una RA (auto-
ridad de registro); sta verifica la identidad del usuario y pide a la CA que
expida el certificado.
Directorio lightweight directory access protocol, LDAP. Su finalidad, den-tro de una PKI, es la de mantener un registro de usuarios y actuar como
almacn para los certificados electrnicos y la lista de certificados revoca-
dos (CRL), que veremos ms adelante. El protocolo LDAP es una versin
simplificada del protocolo X.500 que especifica tanto el modelo de infor-
macin como los mecanismos de acceso a la misma.
2.6.1. Sistemas gestores de certificados electrnicos:
la recomendacin X.509
El auge de la certificacin electrnica nace de la consolidacin internacional
del protocolo estndar X.509. A partir de este momento, no solo aparecen en
el mercado multitud de aplicaciones que aprovechan los servicios de la iden-
tidad digital, sino tambin un gran nmero de paquetes de software que im-
plementan las funciones bsicas de una PKI. Estos paquetes reciben el nombre
de sistemas gestores de certificados electrnicos.
Las soluciones de implementacin para los sistemas gestores de certificados
electrnicos pueden clasificarse en tres categoras: Las integradas en el sistema
operativo, las libres (de cdigo abierto) y las comerciales.
La recomendacin X.509 de la ITU-T forma parte de la serie de recomenda-
ciones X.500, la finalidad de las cuales es definir un servicio de directorio. Por
directorio se entiende un servidor o conjunto distribuido de servidores que
gestionan una base de datos de informacin sobre usuarios. En la actualidad,
hablar de X.509 y certificados electrnicos es hablar del mismo concepto. Ac-
tualmente, este estndar de certificacin electrnica se utiliza en protocolos de
Internet de uso tan extendido como SSL, SMIME (Secure Multipurpose Internet
Mail Extensiones) y IPSec (IP Security).
CC-BY-NC-ND PID_00200951 32 Elementos de criptografa
2.6.2. Listas de certificados revocados: CRL
Una lista de certificados revocados (CRL, Certificate revocation list), es un docu-
mento electrnico expedido y firmado por una CA, en el cual se incluyen los
nmeros de serie de todos aquellos certificados que, sin haber expirado, han
sido revocados por algn motivo.
Al recibir un certificado electrnico, el usuario debe consultar la CRL de la CA
que firma el certificado para verificar la validez del mismo. El protocolo OCSP
(online certificate status protocol) permite realizar consultas en tiempo real sobre
la base de datos de certificados revocados de una CA. Algunos navegadores
web ya incluyen apoyo para OCSP.
La validacin de certificados en tiempo real es imprescindible para el desarro-
llo del comercio electrnico.
La recomendacin X.509 define un formato estndar para las listas de certifi-
cados revocados, de forma anloga a la estructura sugerida para los certificados
electrnicos.
CC-BY-NC-ND PID_00200951 33 Elementos de criptografa
3. Criptografa cuntica y post-cuntica.
De manera muy resumida podramos decir que, hoy en da, la criptografa de
clave pblica se utiliza para la distribucin de claves privadas, para la firma
digital y otros protocolos de autenticacin y, en cambio, la criptografa de cla-
ve privada se utiliza para conseguir la privacidad de los datos. Los algoritmos
de clave pblica ms utilizados son RSA, DSA y ECDSA (el algoritmo DSA uti-
lizando curvas elpticas). Qu pasara si en pocos aos alguien anunciara la
construccin de un gran ordenador cuntico?
Algoritmo de Shor
En 1994, Shor descubri unalgoritmo capaz de factorizarun nmero producto de dosprimos con una complejidadpolinomial sobre unhipottico ordenadorcuntico. La base delalgoritmo es unatransformada discreta deFourier que en un ordenadorcuntico, y de maneraprobabilstica, da el resultado.Se han hecho pruebas realesde este algoritmo conprototipos de ordenadorcuntico y han funcionado.En el 2001, en IBMs AlmadenResearch Center, usando unprototipo de ordenadorcuntico que funcionaba conregistros de 7 qubits basadosen NMR (nuclear magneticresonance) se consigufactorizar el nmero 15 = 35.
Dado que la criptografa de clave pblica se basa en la factorizacin o en el
problema del logaritmo discreto o del logaritmo elptico y que no existe el
algoritmo de Shor para los ordenadores clsicos, parece ser que con el adveni-
miento de la computacin cuntica la seguridad basada en RSA, DSA y ECDSA
se ver comprometida. An as, no podemos decir que la criptografa est bajo
sospecha de desaparicin con el advenimiento de la computacin cuntica.
Hay todo un campo criptogrfico post-cuntico que podr resistir los grandes
ordenadores clsicos y a los ordenadores cunticos.
Algunos de estos sistemas de cifrado que se cree que son, y sern, resistentes a
la computacin clsica y cuntica son:
Criptografa basada en funciones hash Criptografa basada en la teora de cdigos Criptografa basada en la combinatoria Criptografa de clave privada como AES. Hay un algoritmo que puede
simplificar los clculos para romper el AES en un ordenador cuntico. Es el
algoritmo de Grove, pero no es tan dramtico como el algoritmo de Shor.
En el caso de Grove se pasa de una complejidad O(n) en el caso clsico a
una complejidad O(n) en el caso cuntico.
Tanto el sistema RSA como el de McEliece (basado en la teora de cdigos, que
veremos ms adelante) han sido propuestos el mismo ao 1978. Los dos han
conseguido resistir durante ms de 30 aos el esfuerzo del criptoanlisis para
romperlos.
RSA se basa en la dificultad de la factorizacin. En el ao 1978, el mejor algo-
ritmo conocido para factorizar tena una complejidad exponencial del orden
O(exp(log(n)1/2 log log(n)1/2)).
CC-BY-NC-ND PID_00200951 34 Elementos de criptografa
Con el tiempo, esta complejidad ha sido mejorada, bsicamente utilizando
nuevos conceptos matemticos y, actualmente, parece ser que ya no puede
conseguirse ninguna mejora, mantenindose una complejidad del orden
O(exp(log(n)1/3 log log(n)1/3)).
Complejidad
La complejidad del RSA sellama subexponecial y la delsistema Mc.Eliece se llamaexponencial.
La complejidad del sistema McEliece era del orden O(exp(n/(2 log(n)))), en1978. Ha habido mejoras y parece ser que la mejor complejidad posible seguir
siendo ms o menos la misma, salvo que quizs en lugar del factor 2 habr una
constante algo menor.
La pregunta, ahora, es obvia. Por qu actualmente no usamos el sistema de
McEliece en lugar de RSA? La respuesta rpida es que el tamao de la clave
hace que optemos por RSA en lugar de McEliece. Para el mismo nivel de se-
guridad, RSA utiliza claves de algunos miles de bits, mientras que en McEliece
habra que utilizar del orden del milln de bits.
Todava falta tiempo para que la computacin cuntica sea una realidad. En
el camino, podemos pensar en ordenadores clsicos cada vez ms potentes
(no hace falta que sean potentes trabajando aislados, pero podemos pensar en
grandes sistemas de computacin distribuida).
Algunos sistemas de cifrado, como el RSA, con cuatro mil bits de clave se cree
que sern resistentes a los ataques con grandes ordenadores clsicos, pero no
lo sern a los ataques con grandes computadoras cunticas. Algunas alternati-
vas, como por ejemplo McEliece con una clave de cuatro millones de bits, se
cree que ser capaz de resistir los ataques de los grandes ordenadores clsicos
y cunticos.
Nos hemos centrado en la criptografa de clave pblica, puesto que los orde-
nadores cunticos parece que tienen muy poco efecto sobre la criptografa de
clave privada y la criptografa basada en funciones hash.
Ver tambin
El algoritmo de Bennet yBrassard se estudia en elsubapartado 3.1 de estemdulo.
Aunque los ordenadores cunticos no son todava una realidad, s que hay
ciertos fenmenos fsicos basados en la mecnica cuntica que pueden usarse
en criptografa. Un ejemplo claro es el sistema de distribucin de claves basado
en el algoritmo de Bennet y Brassard. Aparte de este algoritmo criptogrfico
basado en la mecnica cuntica, si ahora nos situsemos en la poca en que
ya funcionen los ordenadores cunticos tendramos algunos planteamientos
que deberamos empezar a estudiar:
Eficiencia: El software de criptografa post-cuntica es ms lento que elsoftware criptogrfico de hoy en da.
Confianza: A da de hoy, estamos utilizando sistemas criptogrficos clsi-cos que han sobrevivido a muchos aos de esfuerzos criptoanalticos para
CC-BY-NC-ND PID_00200951 35 Elementos de criptografa
romperlos. Al considerar nuevos sistemas cunticos, que son recientes y no
del todo probados, es necesario que tambin los criptoanalistas dispongan
de tiempo para buscar los ataques a estos sistemas y depurarlos.
Usabilidad: Es importante desarrollar software y hardware adaptando lasimplementaciones a los nuevos conceptos con mucho cuidado, para evitar
prdidas de tiempo o efectos colaterales. Implementaciones de conceptos
como los de aleatoriedad o relleno (padding) se deben mejorar en las nue-
vas tecnologas y seguramente habr sistemas hbridos, compartiendo las
nuevas tecnologas con las actuales que necesitarn estandarizaciones.
3.1. Criptografa cuntica
A diferencia de los sistemas criptogrficos convencionales, ya sean de clave
pblica o privada (que basan su seguridad en el hecho de mantener una cla-
ve de manera privada) los sistemas criptogrficos cunticos basan su fortaleza
en un fenmeno fsico. En 1984, Bennet y Brassard disearon (a nivel te-
rico) un protocolo criptogrfico basado en un hecho de la fsica cuntica: la
imposibilidad de medir simultneamente un par de observables (principio de
incertidumbre de Heisenberg, 1927).
La seguridad tradicional de un mtodo de distribucin de claves se ha basado
en problemas intratables debido a su complejidad computacional. El mtodo
de Benet y Brassart se basa en un hecho fsico inviolable.
Podemos imaginar una nube de fotones que vibran en todas las direcciones
perpendiculares a su lnea de propagacin. Si los hacemos pasar por un filtro
polarizado en vertical, los fotones que vibran verticalmente pasarn por el
filtro y, los otros, lo harn con una probabilidad cos2(), donde es el ngulo
que separa su direccin de vibracin de la vertical. Slo los fotones que vibran
horizontalmente (cos() = 0) no pasarn por el filtro.
Protocolo de Ekert
En 1991 Artur Ekert presentotro protocolo diferente al deBennet y Brasard. En estecaso, A y B reciben losfotones de una parejaentrelazada. En este caso,la seguridad se basa en elefectoEinstein-Podolsky-Rosen.
El protocolo que describimos aqu permite a dos usuarios A y B compartir una
clave secreta sobre un canal no seguro. Al final del protocolo, A y B tendrn
la seguridad que ningn enemigo criptoanalista ha interceptado su comuni-
cacin y podrn usar la clave compartida para cifrar los siguientes mensajes
(normalmente con un sistema como el AES).
A enva a B una secuencia de pulsos de fotones. Cada pulso est polarizadoaleatoriamente en una de las cuatro direcciones: vertical (), horizontal(), segn la diagonal primaria () y segn la diagonal secundaria ().
B utiliza, aleatoriamente, un detector polarizado para detectar polarizacio-nes vertical-horizontal o polarizaciones en diagonal, pero no las dos al mis-
mo tiempo.
CC-BY-NC-ND PID_00200951 36 Elementos de criptografa
Por ejemplo:
A enva a B:
B utiliza:N N L N L L L N L N
B obt:
Los pulsos 4, 6 y 10 tambin podan haber sido, y, respectivamente.
A y B se comunican a travs de un canal no seguro para ver qu detectoresha usado B que no haya usado A. Los dos, A y B se guardan solo los bits
que corresponden a los detectores correctos.
En nuestro caso, los dos usuarios estn de acuerdo en que el bit 1 se re-
presentara por y , mientras que el bit 0 sera y . O sea que A y Bhabrn generado, entre ellos, la secuencia:
1101100
Esta secuencia no es conocida por el espa que intenta interferir en la comu-
nicacin entre A y B, puesto que la conversacin (sobre un canal inseguro)
entre A y B solo deca qu detectores se haban usado correctamente. Y,
cada detector puede dar, indistintamente, ambos resultados 1 o 0.
Cualquier espa que intercepte los fotones que enva A los deber re-enviar a
B y, bsicamente, tiene dos grandes problemas:
Cuando escucha la transmisin entre A y B, el espa solo puede deducir conseguridad los bits que corresponden a detectores que l mismo est usando
y que, a la vez, coincidan con los detectores que estn utilizando A y B.
En una de cada cuatro veces, el detector que est usando el espa no coin-cide ni con el de A ni con el de B (que, a su vez, coincide con el de A).
En estos casos, A y B estn de acuerdo en el detector que han usado, pero
el bit que obtendrn uno y otro ser distinto. Si A y B descubren (por un
canal que no hace falta que sea secreto) algunos de los bits obtenidos en el
protocolo podrn deducir la presencia del espa y abortar el proceso.
Hay algunos prototipos de este protocolo que estn funcionando sobre fibra
ptica entre distancias del orden de los 200 km (Toshiba Research-2003).
Aun cuando la fsica cuntica nos asegura la validez del protocolo anterior,
desde los primeros intentos de construccin de prototipos que lo implemen-
tarn ha habido varios problemas que han aplazado su comercializacin. No
es tan sencilla la construccin segura de todos los dispositivos implicados
CC-BY-NC-ND PID_00200951 37 Elementos de criptografa
en el protocolo. Los pases asiticos estn al frente de la investigacin en esta
rea. Japn ha anunciado planes para tener satlites con comunicaciones de
tipo cuntico para el 2013 y China para el 2016.
3.2. Los cdigos correctores de errores en la criptografa
post-cuntica
En este subapartado presentaremos dos sistemas criptogrficos, basados en la
teora de cdigos correctores de errores. En particular nos centraremos en los
criptosistemas de McEliece y de Niederreiter, definidos a partir de cdigos para
los cuales se conoce un sistema de descodificacin computacionalmente efi-
ciente. En ambos casos, la funcin unidireccional utilizada para el cifrado se
basa en una transformacin de la matriz generadora del cdigo, en el caso de
McEliece, o de la matriz de control, en el caso de Niederreiter. Esta funcin
unidireccional har que el criptoanalista deba trabajar con un cdigo equi-
valente para el que el algoritmo de descodificacin es computacionalmente
ineficiente.
Por comprender mejor estos dos criptosistemas, veamos unas nociones bsicas
de cdigos correctores de errores.
3.2.1. Nociones bsicas de cdigos correctores de errores
Los cdigos detectores y correctores de errores tienen como objetivo principal
reducir la probabilidad de error en la descodificacin, mediante la incorpora-
cin de redundancia en la transmisin.
Consideremos ahora el sistema de transmisin de informacin, representado
por el diagrama:
Emisor Codificador
Ruido
Decodificador Receptor
El principio general de la deteccin de errores es el siguiente: el codificador
aade, segn una regla C, una cierta cantidad de informacin suplementaria
a la informacin til, y el descodificador, en primer lugar, verifica si esta ley
es respetada. Si no lo es, estamos seguros de que, al menos, se ha producido
un error. Esta ley C que caracteriza el cdigo consiste en una correspondencia
biunvoca entre la informacin a enviar y el mensaje enviado.
En lo que sigue, consideramos el cuerpo finito F = Fq, donde q = pm y p un
nmero primo.
CC-BY-NC-ND PID_00200951 38 Elementos de criptografa
.
Definicin 3.1 (Cdigo-bloque).
Dada una fuente de informacin S = {A1,A2, ,Ak} y un alfabeto F, seconsidera el producto cartesiano Fn.
Llamaremos cdigo-bloque, de longitud n, a cualquier subconjunto C Fn de manera que a cada elemento Ai S, le hacemos corresponder, de
manera nica, un vector vi Fn, al que llamaremos palabra-cdigo.
Si el cardinal de S es M nos referiremos al cdigo C como:
C(M,n) = {vi = (vi1 ,vi2 , ,vin), tal que vij F}.
Podemos considerar un cdigo-bloque como un conjunto de secuencias de
elementos de un cuerpo finito F (palabras-cdigo) de la misma longitud. Un
cdigo-bloque es binario cuando q = 2.
Los parmetros a considerar en un cdigo-bloque C(M,n), adems de su lon-
gitud, n, y su nmero de palabras-cdigo M, son: la tasa de transmisin:
(1/n)logq(M) y la distancia mnima entre todas las palabras-cdigo, d.
Ejemplo 3.1.
Supongamos el caso en el que tenemos que transmitir dos posibles mensajes, S = {A1,A2}donde A1= Hace sol y A2 = Llueve. El canal por el cual debe circular la transmisines binario, es decir, el alfabeto ser F2 = {0,1}.
Un cdigo-bloque para S puede ser C(2,3) = {A1 (0,0,0); A2 (1,1,1)}.
Distancia y mtrica
La distancia de Hammingsatisface las propiedades de ladefinicin matemtica dedistancia y define unamtrica.
x,y,z Fn:
1) dH (x,x) = 0
2) dH (x,y) = dH (y,x)
3) dH (x,y)+dH (y,z)dH (x,z)
.
Definicin 3.2 (Distancia de Hamming).
Dados dos elementos x,y Fn, definimos su distancia de Hammingcomo:
dH(x,y) = #{i : 1 y n,xi 6= yi},
es decir, la distancia entre dos vectores x e y es la cantidad de compo-
nentes diferentes que tienen entre uno u otro.
CC-BY-NC-ND PID_00200951 39 Elementos de criptografa
.
Definicin 3.3 (Distancia mnima).
Dado un cdigo C(M,n), definiremos la distancia mnima d, del cdigo,
como:
d = min{dH(x,y) : x 6= y,x,y C}.
.
Definicin 3.4 (Regla de descodificacin a distancia mnima).
Dado un cdigo C(M,n), definiremos la regla de descodificacin a dis-
tancia mnima como la que descodifica un vector recibido u Fn por lapalabra-cdigo que est a mnima distancia de l. Es decir establece una
aplicacin Fn C, tal que si u v, resulta que v es la palabra-cdigopara la cual dH(v,u) = min{dH(v,u),v C}.
.
Definicin 3.5 (Capacidad correctora).
Podemos considerar en Fn las bolas centradas en las palabras-cdigo de
radio el mximo valor posible de forma que las bolas sean disjuntas.
El radio de estas bolas se puede calcular como c = d12 y este valor sedenomina capacidad correctora del cdigo.
Diremos que el cdigo es c-corrector.
3.2.2. Cdigos lineales
Los cdigos lineales permiten una buena solucin al problema de la codifi-
cacin/descodificacin, considerando la regla de descodificacin a distancia
mnima.
Consideramos la estructura de espacio vectorial de Fn = {u = (u1, ,un) : ui F}, de dimensin n, sobre F, con las operaciones suma y producto por escalareshabituales en un espacio vectorial:
u + v = (u1 + v1, ,un + vn), u,v Fn
k (u1, ,un) = (k u1,...,k un);
.
Definicin 3.6 (Cdigo lineal).
Un cdigo-bloque se llama lineal si es subespacio vectorial de Fn. Si la
dimensin de este subespacio es k, el cdigo tendr M = qk palabras-
cdigo, de longitud n, y ser denotado por C(n,k).
CC-BY-NC-ND PID_00200951 40 Elementos de criptografa
Coincidencia en losvalores del peso mnimoy de distancia mnima
Un cdigo lineal tiene lapropiedad que la suma dedos palabras-cdigo es unapalabra-cdigo, por lo tanto:dH (u,v) =#{i : ui 6= vi} =#{i : ui vi 6= 0} =wt(u v)As, en un cdigo lineal, ladistancia entre dospalabras-cdigo es igual alpeso de otra palabra-cdigoy, en consecuencia, ladistancia mnima, no nula,coincide con el peso mnimodel conjunto depalabras-cdigo no nulas.
.
Definicin 3.7 (Peso de un vector).
El peso wt(v) de un vector v Fn es el nmero de coordenadas no nulasde este vector. Es decir:
wt(v) = #{vi 6= 0 : vi F}.
.
Definicin 3.8 (Error de transmisin).
Un error en la transmisin se corresponde con un cambio de coordena-
da entre la palabra-cdigo de entrada y el vector de salida.
Estas caractersticas nos dan la capacidad detectora y correctora de errores.
.
Lema 3.9.
Un cdigo lineal, con distancia mnima d 2c+1, puede detectar hastad 1 errores y corregir hasta c si se utiliza el esquema de descodificacin
a distancia mnima.
.
Definicin 3.10 (Matriz generadora).
De la definicin de cdigo lineal resulta que todo conjunto de k vectores
de Fn, linealmente independientes, constituye una base de un cdigo