Академический Документы
Профессиональный Документы
Культура Документы
Resumen Este Curso sencillo de sobre el programa de cifrado PGP comienza con una
introducción a los principales conceptos en criptografía. Se hará una breve introducción a
los dos tipos principales de cifrado existentes en la actualidad: cifrado simétrico y cifrado
asimétrico (o de clave pública). Se explicará asimismo cómo los sistemas modernos de
cifrado utilizan una combinación de algoritmos simétricos y de clave pública. Si bien este
capítulo no es preciso para usar PGP, su lectora resulta altamente recomendable para
comprender los mecanismos básicos subyacentes a este y otros protocolos de cifrado
(como, por ejemplo, el usado por los navegadores seguros). Asimismo, es un comienzo
útil para todos aquellos interesados en la criptología en general.
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 2 of 8
donde hemos supuesto que tras la Z viene la A. De este modo, JULIOCESAR se convierte en
OAQNTHJYFX. Podemos denotar la clave como cinco (número de posiciones a desplazar); el
algoritmo sería simplemente la sustitución de una letra por la que hay x posiciones a la derecha
(x es la clave). Para descifrar, no hay más que tomar el texto cifrado y sustituir cada letra por la
que hay cinco posiciones a su izquierda (la O se convierte en la J, la A en la U...). Si usamos
dígitos binarios en lugar de letras, podremos utilizar el sistema de César para cifrar todo tipo de
archivos informáticos (documentos de texto puro, con códigos de formato, incluso archivos
ejecutables).
El sistema cesariano ya no se utiliza debido a la sencillez con la que se puede romper (si bien
Julio César lo utilizó con éxito durante su campaña de las Galias). Romper [break], o más
correctamente, criptoanalizar [cryptanalyze] es la ciencia de obtener el texto llano a partir del
texto cifrado sin conocer la clave, o bien de obtener la propia clave a través de texto llano,
cifrado o de donde sea. El método de cifrado de César no es seguro porque resulta fácil presa
del criptoanálisis.
En segundo lugar, el texto cifrado "filtra" información acerca del texto llano. Si contamos todas
las letras de un texto normal en la mayoría de los idiomas occidentales, veremos que la letra E
es la más frecuente. Comprobar la frecuencia de las letras del texto cifrado y compararlas con
la frecuencia típica de las letras en el alfabeto en el que está escrito el texto llano nos permite
obtener fácilmente la clave. En el ejemplo anterior, los textos cifrados con la "clave cinco"
contendrían en promedio más veces la letra J que los demás; esto se debe a que la J
representa a la letra E, que aparece más frecuentemente en el texto llano.
Para que este ataque sea eficaz, se requiere un texto cifrado que sea lo bastante largo, ya que
si no la frecuencia de las letras del texto podría no coincidir con las del alfabeto. El texto cifrado
LAFIFQFOFXF contiene cuatro F; si suponemos que la F cifrada corresponde con la E sin
cifrar, podríamos reconstruir la clave (un desplazamiento hacia la derecha para el cifrado).
Obtenemos por tanto el texto llano KZEHEPENEVE. O se trata del nombre de un pueblo
ucraniano, o hemos metido la pata. El texto llano verdadero (cifrado con clave cinco)
corresponde a la palabra GUADALAJARA. Moraleja: cuanto más texto cifremos con una clave
concreta, tanto más vulnerable es a un ataque criptoanalítico.
Naturalmente, la clave de César puede complicarse, pero también las herramientas de los
criptoanalistas son ahora más eficades y poderosas. Esto ha dado lugar a una batalla continua
entre criptógrafos (que diseñan algoritmos de cifrado resistente al criptoanálisis) y
criptoanalistas (empeñados en reventar cualquier tipo de cifrado) muy similar a la lucha entre la
espada y el escudo.
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 3 of 8
que el espacio de claves, significa que existen métodos más eficientes para "romper" un
mensaje que la mera búsqueda exhaustiva de todas las claves posibles. Cualquiera de estos
métodos se denomina ataque criptoanalítico, o ataque; se dice entonces que el sistema ha
sido criptoanalizado. Por su parte, un criptógrafo diseñará algoritmos que no sean atacables
(es decir, que no haya atajos al sistema de probar todas las claves posibles), o al menos que
los ataques no sean prácticos (porque permitan ganancias marginales o porque requieran de
una excesiva cantidad de mensajes en texto llano, cifrado o simplemente espacio en disco
duro).
Un ejemplo sencillo nos permitirá aclarar los conceptos. Supongamos el típico maletín con
cerradura de combinación, compuesta por tres ruedecitas que marcan números entre 0 y 9. La
clave de cifrado sería simplemente el número de tres cifras (uno por ruedecilla) que hay que
introducir para que el maletín se abra. El algoritmo vendría representado por el conjunto de
mecanismos internos de la cerradura de combinación; como en otros casos, el mecanismo
exacto de funcionamiento nos trae sin cuidado, del mismo modo que para conducir un coche
no nos interesa saber cómo se produce la combustión interna. Un ladrón torpe tendría que
probar todas las claves; a diez posibilidades por ruedecilla, habría de probar un total de 10^3 =
1.000 claves para tener la segurida de acertar.
Sin embargo, un ladrón más inteligente podría examinar los mecanismos de un maletín similar
y obtener cierta información sobre el sistema, es decir, criptoanalizarlo. Podría por ejemplo
llegar a la conclusión de que, si presiona fuertemente una esquina del maletín, la última rueda
permite probar dos combinaciones a la vez, esto es, la combinación 613 y la 614 se
comprueban simultáneamente. De ese modo, le bastará probar las combinaciones pares, y la
complejidad de su ataque será de 500, es decir, estadísticamente tendrá el doble de
probabilidades de acertar. Eso no significa que en un maletín concreto vaya a vencer a su
compañero de "fuerza bruta" (quien a lo mejor acierta de chiripa tras el tercer intento), pero si
hay muchos maletines en juego el ladrón criptoanalista tiene más papeletas a su favor.
Otro ejemplo. Muchas transacciones comerciales (entre otras, las que llevan a cabo los cajeros
automáticos) se cifran mediante el algoritmo DES, que tiene un una clave de sesenta y cuatro
bits (es decir, es un maletín con 64 ruedecillas, cada una de ellas con solamente dos
posiciones, 0 y 1). El número de claves posibles es de 2^64, pero solamente hay 2^56 claves
independientes (eso es así porque 8 de esos 64 bits son los denominados "bits de paridad" y
no colaboran en la fortaleza del sistema; es como un maletín donde uno de cada ocho
ruedecillas fuese innecesaria). Eso hace que el espacio de claves sea 2^56; es decir, con
probar 2^56 claves ya hemos agotado todas las posibilidades.
Espero que al llegar a estas alturas, no te hayas perdido; si no, bien empezamos ;-). Pero no
importa, con tal de que te hayas quedado con lo fundamental, esto es, que hay procedimientos
para convertir un texto (o en general, un archivo digital de cualquier tipo) en un batiburrillo
ininteligible. Esto nos sirve cuando no queramos que nadie, aparte de nosotros mismos y las
personas autorizadas para ello, tenga acceso a nuestros datos.
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 4 of 8
Cuando la clave de cifrado es la misma que la de descifrado (y, por tanto, los algoritmos de
cifrado y de descifrado coinciden) se habla de algoritmo de cifrado simétrico. Este es el tipo
de cifrado que ha dominado la historia de la criptografía hasta hace un par de décadas.
Para cifrar, se coge el mensaje M y se le aplica la operación matemática Ck (es decir, se usa el
algoritmo de cifrado C con la clave k), obteniendo Ck(M). Para descifrar el mensaje, se aplica la
operación inversa Dk. Puesto que Ck y Dk son operaciones inversas, se tiene Dk(Ck(M)) = M,
esto es, el mensaje original. Esto requiere que el emisor y el receptor del mensaje utilicen tanto
el mismo algoritmo como la misma clave.
Y ahí está nudo gordiano de los sistemas de clave secreta. La comunicación segura entre el
emisor y el receptor pasa por que ambos, y nadie más, conozca la clave k. Pero, ¿cómo
hacemos llegar la clave k de uno a otro interlocutor? Podría enviarse por un canal seguro, esto
es, uno que no pueda ser interceptado o espiado; pero ¿qué sentido tiene el cifrado si se
dispone de un medio seguro de comunicación? El cifrado es para evitar a los fisgones; si no
hay posibilidades de fisgar, no hay necesidad de cifrar.
Llamemos Ana y Belén a dichos interlocutores, y Fausto al fisgón. Belén puede recibir un
mensaje cifrado por Fausto, pero ella cree que viene de Belén -ya que en teoría nadie más
podría hacerlo- de manera que pica el anzuelo. Igual pasa con Ana. Tanto Ana como Belén
pueden enviar mensajes a Fausto creyendo que lo hacen a su amiga; y nuestro fisgón puede
leer toda la correspondencia actual, e incluso la pasada si consigue acceso a los mensajes
anteriores. Mal negocio. Por supuesto, Ana y Belén pueden acabar dándose cuenta del
engaño, pero el daño ya está hecho. Se verán en la necesidad de intercambiar de nuevo una
clave. Y, si no quieren que Fausto se vuelva a colar en la conversación, deberán guardar
cuidadosamente la clave para evitar que nadie más tenga acceso a ésta
Estos dos problemas (intercambio y gestión de claves) se resuelven con los sistemas de clave
asimétrica o pública, que pasamos a ver al toque de ya.
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 5 of 8
El problema de la distribución de claves (es decir, cómo hacer llegar la clave de cifrado de Ana
a Belén sin que Fausto pueda meter las narices) se resuelve mediante la llamada criptografía
de clave pública -o de clave asimétrica- descubierta hacia 1975. Los detalles matemáticos son
bastante engorrosos y no necesitamos aprenderlos, así que nos los saltaremos. Lo crucial y
novedoso es que en la criptografía de clave pública se utilizan dos claves distintas, una para el
cifrado y otra para el descifrado. La clave de cifrado es pública, esto es, conocida por todo el
mundo; la de descifrado (clave privada) solamente es conocida por su propietario. Ambas
constituyen un par de claves
Supongamos que tanto Ana como Belén tienen un par de claves pública/privada. Si Ana desea
enviar un mensaje a Belén, los paso a seguir son los siguientes:
Es decir, cualquiera puede cifrar un mensaje y enviárselo a Belén, pero solamente ella podrá
descifrar los mensajes que le llegan. Nadie más. Ni siquiera Ana podrá descifrar el mensaje
que acaba de cifrar.
Véase que este elegante esquema evita los peligros de enviar la clave por un conducto
inseguro; de hecho la clave pública puede ser tan diseminada cono un número de teléfono.
Fausto lo va a tener ahora más difícil, ya que acceder a la clave pública le servirá para enviar
mensajes, pero no para leer los que se envían Ana y Belén entre sí. Incluso si obtuviese la
clave secreta de Ana, ello le permitiría leer los mensajes que Belén envía a Ana, pero no las
respuestas de Ana a Belén. Por supuesto, permanece la obligación por parte de Ana y Belén
de guardar celosamente sus respectivas claves privadas. Pero Fausto ya no puede
aprovecharse del intercambio de claves secretas.
También permite aliviar los requisitos de almacenamiento de claves, sobre todo cuando hay
más personas comunicándose. Si hay N interlocutores, el número de claves diferentes que hay
que intercambiar y almacenar para comunicaciones seguras dos a dos es N*(N-1)/2. Si N=100,
eso significa más de 4.950 claves distintas. Por supuesto, podemos hacer que algunas o todas
las claves sean iguales, pero a lo mejor no es conveniente que Carlos tenga acceso a las
comunicaciones entre Ana y Belén. Con los sistemas de clave pública, cada usuario solamente
necesita tener una clave privada (la suya propia) y cien claves públicas (en realidad, sólo 99: !
un usuario no necesita criptografía para hablar consigo mismo!).
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 6 of 8
En la actualidad, los sistemas de clave pública más utilizados son el RSA y el Diffie-Hellman.
Más correctamente, Diffie-Hellman es un algoritmo de intercambio de claves. Su variante para
criptografía de clave pública se conoce como "algoritmo Diffle-Hellman, variante ElGamal" Lo
menciono simplemente por "si te suena" de algún otro lugar. Aquí no vamos a ponernos
puristas, y diremos Diffle-Hellman, o DH.
Los criptosistemas de clave pública tampoco son la panacea universal, y adolecen de diversos
problemas. Nos ocuparemos de dos de ellos. Uno es el de la suplantación. Si Belén recibe la
clave pública de Ana, ¿cómo sabe que es realmente la de Ana? Trataremos ese engorro en
otro apartado.
La segunda pega, de índole práctica, se refiere a la eficiencia. Los algoritmos de clave pública
son lentos. El cifrado de un mensaje mediante cifrado de clave pública es del orden de mil
veces más lento que mediante un algoritmo de clave simétrica. Los ordenadores son cada vez
más rápidos, pero cuando hay grandes cantidades de información por cifrar o descifrar
(pensemos, por ejemplo, en una base de datos protegida mediante cifrado) puede llegar a ser
una verdadera dificultad. También resulta que el mensaje cifrado es mucho mayor que el
original. Esto es una molestia para nuestros medios de almacenamiento (disquetes, discos
duros) y una verdadera tortura para nuestra ya sobrecargada Internet, donde cada kilobyte de
información significa tiempo de espera ... y beneficios para la compañía telefónica.
Estos problemas, y algunos otros (por ejemplo, ciertos ataques criptoanalíticos) se evitan
mediante un sistema híbrido que tome lo mejor de dos mundos. ¿Queremos rapidez y
brevedad? Pues creamos una clave simétrica y ciframos el mensaje con ella. ¿Queremos
enviar de forma segura la clave simétrica al destinatario? Pues ciframos la clave simétrica con
la clave pública del destinatario.
Supongamos que Ana quiere enviar un mensaje a Belén. Lo que hace es lo siguiente:
- Crea una clave simétrica K y cifra el mensaje con dicha clave. Sea Ck(M) el resultado
- Cifra la clave simétrica con la clave pública de Belén. El resultado es Ckp(K)
- Envía a Belén dos cosas: el mensaje (cifrado con la clave simétrica K) y la clave simétrica K
cifrada con la clave pública de Belén.
Es decir, la clave pública se usa para cifrar; pero lo que se cifra no es el mensaje, sino la clave
simétrica con que va cifrado el mensaje. De ese modo hacemos llegar al destinatario la clave
K, y podemos hacerlo por medios inseguros de transmisión. Poco nos importa que Fausto esté
la acecho, porque no puede descifrar el mensaje sin conocer K ... y no puede conocer K si no
tiene la clave privada. Es decir, hemos combinado un criptosistema de clave simétrica (para
intercambiar el mensaje) con uno de clave asimétrica o pública (para intercambiar la clave).
Los sistemas "híbridos" no se consideran un tipo de cifrado aparte, sino que normalmente se
hace la división entre sistemas de clave simétrica y de clave asimétrica (o de clave secreta -
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 7 of 8
clave pública), pero nos hemos detenido aquí por su importancia. PGP es un programa de
cifrado híbrido, es decir, combina cifrado simétrico y asimétrico de la manera que he descrito
aquí. De modo similar, los protocolos criptográficos SSL utilizados por los navegadores en
conexiones seguras (https) utilizan esta combinación híbrida.
Se puede hacer mejor de lo que hemos descrito hasta ahora. Se puede elegir K de manera que
sea distinta para cada comunicación. Es decir, diferentes mensajes se cifran con diferentes
claves. Esto mejora la seguridad de diversas maneras. En primer lugar, un atacante puede
obtener información (cuando menos, reducir la complejidad del ataque) si sabe que diversos
mensajes se cifran con la misma clave, aunque el atacante no conozca cuál es dicha clave.
Existe, por tanto, un cierto riesgo si ciframos todos nuestros mensajes con la misma clave
simétrica. También hay un riesgo asociado al hecho de que siempre ciframos la misma clave
simétrica K con la clave pública del destinatario.
Cambiar K de un mensaje a otro elimina estos peligros (reducidos pero que existen). Y si el
atacante lograra por el medio que fuese obtener K, solamente le serviría para un solo mensaje,
ya que el siguiente estaría cifrado con otra clave distinta. Por eso, la clave simétrica "de usar y
tirar" se denomina clave de sesión. Por supuesto, dicha clave ha de ser aleatoria, para que no
se pueda obtener información favorable a un posible atacante. Eso se consigue mediante los
programas generadores de números aleatorios. No entraremos en ello, pero cualquier
programa de cifrado híbrido que se precie ha de contar con un generador de números
aleatorios adecuado.
Muchas veces, cuando voy a la sección de bibliografía adicional de un libro, me encuentro una
y otra vez con frases del tipo "esta bibliografía, necesariamente breve y que por supuesto no
abarca todas las fuentes importantes...", lo que a mí siempre me suena como si el autor
quisiese decir "jo, pues anda que si me pongo a buscar referencias en serio, ibas tú a alucinar;
conténtate con esta mínima muestra de mi saber, pobre gusano."
En este caso, es cierto que los enlaces que incluyo son una referencia mínima, pero no porque
os considere pobres gusanos, sino simplemente porque ni quiero ni cansaros con múltiples
enlaces ... ni tengo yo el cuerpo para ponerme a buscar por la Red, todo sea dicho. Solamente
os incluyo algunos enlaces para los que queráis ahondar un poco más (no mucho) en el
asunto. Y, además, son de manufactura propia, así que todo queda en casa:
Para aquellos que quieran una ración mayor, he aquí algunos textos a algo más de nivel:
Criptografía para principiantes, por José de Jesús ángel. Para los que deseen una base de
conocimientos con matemáticas.
Criptología, por Manuel Pons Martorell. Para mi gusto, más asequible y ameno.
Descripción del algoritmo DES, por Jorge Sánchez Arriazu. Disección del algoritmo simétrico
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010
Curso sencillo de PGP, capítulo 1 Page 8 of 8
También tenéis a vuestra disposición muchas direcciones sobre criptografía, PGP y seguridad
informática en general en mi sección de Enlaces. Hay algunos, como Kriptópolis, que piden a
gritos ser saqueados vilmente. Adelante, devoradores de la información, y ojo no os vayáis a
atragantar.
http://www.ugr.es/~aquiran/cripto/cursopgp1.htm 5/18/2010