Unidad2

Anuncio
Unidad 2
2.2 Criptografia Simetrica
2.2.1 Sistema de Encriptamiento de
Información (DES) y 3DES
2.2.2 Practicas de encriptación con algoritmos
simetricos (CAST5, BLOWFISH,AES, AES192,
AES256, TWOFISH) mediante la herramienta
GNUPG y PGP.
2.3 Criptografia Asimetrica
abr-10
M.C. Gustavo A. Gutiérrez
Carreón
Criptografia
•
•
•
Dentro de la criptografía se pueden
establecer dos divisiones, que se
corresponden a dos filosofías distintas:
criptografía de clave privada o simétrica : se
utiliza la misma clave para cifrar y descifrar
un mensaje y su seguridad reside en
mantenerla en secreto.
criptografía de clave pública o asimétrica :
en este caso se emplean dos claves distintas
para cifrar y descifrar un mensaje y su
seguridad reside en mantener en secreto la
de descifrado.
Criptografía de clave privada o
simétrica
•
•
En los sistemas criptográficos de clave privada el emisor y
el receptor de un mensaje comparten una misma clave,
empleada tanto para cifrar como para descifrar. La
seguridad en estos sistemas depende, por tanto, de que
dicha clave permanezca en secreto, de ahí el nombre de
clave privada.
También se denomina a estos sistemas de clave simétrica
al ser la clave empleada para el descifrado la misma que la
del cifrado, o bien otra fácilmente deducible a partir de
ella.
Criptografía de clave privada o
simétrica
•
•
•
•
Ya que la clave es conocida solamente por el emisor y el
receptor autorizado, se asegura la confidencialidad:
cualquier otra persona no autorizada y por tanto,
desconocedora de la clave, no podría descifrar el mensaje.
Por otra parte, al estar solamente el auténtico emisor en
conocimiento de esa clave el receptor puede estar seguro
de que no ha sido alterado ni enviado por terceras
personas y por ello se confirma la integridad.
La criptografía de clave privada ha sido y sigue siendo, en
la actualidad, la más empleada, existiendo diversos
algoritmos de clave privada de probada seguridad y
eficiencia.
No obstante, la existencia de problemas en los sistemas
de clave privada hace que su uso sea inviable a través de
canales compartidos, tales como redes de ordenadores.
Algoritmos de clave privada
DES (Data Encryption Standard, Cifrado Estándar de
Datos) DES tuvo su origen en un programa destinado
a la protección de datos presentado por el Instituto
Nacional de Estándares y Tecnología (NIST), de los
EE.UU. Como parte de este programa se pretendía
obtener un algoritmo que fuera estándar, eficiente,
barato de implementar mediante hardware y cuya
seguridad fuese muy alta y estuviese basada
únicamente en la clave de cifrado.
• Como resultado fue elegido un algoritmo basado en
otro llamado Lucifer, que había sido desarrollado por
IBM a principios de los años 70.
• El nuevo algoritmo fue adoptado por el gobierno de
los EE.UU. como estándar en 1977 y como estándar
ANSI en 1981.
•
Algoritmos de clave privada
•
•
•
•
•
Su funcionamiento, aunque complicado, está basado
en simples operaciones lógicas realizadas sobre
grupos de bits.
El cifrado generado es de bloque y la clave tiene un
tamaño de 56 bits.
DES ha sido considerado un algoritmo muy seguro
(ha soportado todos los ataques mediante
criptoanálisis).
No obstante, en la actualidad el tamaño de la clave
hace factibles los ataques por fuerza bruta.
De hecho, ya se han construido máquinas capaz de
romper por fuerza bruta cualquier clave DES en
menos de 24 horas (aunque ya antes se suponía que
determinados gobiernos y organizaciones podían
disponer de tales máquinas).
Algoritmos de clave privada
•
Triple-DES Es una variación del algoritmo
anterior, pensada para aumentar su
seguridad y al mismo tiempo mantener la
compatibilidad con las implementaciones ya
hechas de DES. Triple-DES consiste en
aplicar DES tres veces con dos claves
diferentes, de la siguiente manera: en
primer lugar se cifra el texto en claro
empleando la primera clave, después se
descifra el criptograma obtenido con la
segunda y finalmente se vuelve a cifrar con
la primera.
Algoritmos de clave privada
Para descifrar el mensaje, el proceso es el
inverso: se descifra con la primera clave,
se cifra con la segunda y se vuelve a
descifrar con la primera.
• Esto equivale a un cifrado con una clave
de doble longitud (evidentemente,
cuando ambas claves son idénticas el
cifrado sería equivalente a aplicar DES
con cualquiera de ellas).
•
Algoritmos de clave privada
•
•
•
•
•
Blowfish Se trata de un algoritmo creado por Bruce
Schneider, autor del libro Applied Cryptography (el
código fuente en C se puede encontrar en ese mismo
libro).
Es un algoritmo de cifrado de bloque muy rápido,
compacto (puede funcionar con solamente 5 Kb de
memoria) y la clave que utiliza es de tamaño
variable, hasta 448 bits.
Ha sido sometido a diversos ataques mediante
criptoanálisis diferencial, sin resultado.
Se ha comprobado que existen claves débiles aunque
se considera un algoritmo muy seguro.
No obstante, es un algoritmo demasiado nuevo como
para sacar conclusiones definitivas sobre su
seguridad.
Algoritmos de clave privada
•
•
•
•
•
RC4 (Rivest's Code 4) RC4 es un algoritmo de
cifrado de flujo de clave de tamaño variable.
Fue desarrollado en el año 1987 por Ron Rivest para
la compañía RSA Data Security, Inc, quien durante
siete años fue su propietaria.
Durante este tiempo los detalles del algoritmo fueron
secretos y solamente se daban a conocer tras firmar
un acuerdo de no revelación.
No obstante, en Septiembre de 1994 alguien publicó
de manera anónima, en los grupos de noticias de
Internet relativos a criptografía, una implementación
de RC4.
Cuando RSA Data Security quiso intervenir era
demasiado tarde: RC4 ya estaba siendo estudiado
por expertos y discutido en conferencias
Algoritmos de clave privada
•
•
•
•
El funcionamiento de RC4 es bastante
sencillo: a partir de la clave se genera una
serie de números aleatorios a los cuales se
aplica una operación XOR junto con los
caracteres del mensaje, obteniéndose el
criptograma.
Para descifrar, se aplica la misma operación,
esta vez con los caracteres del criptograma.
El cifrado obtenido es de flujo y el tamaño de
la clave es variable.
RC4 es un algoritmo que se utiliza en
diversos productos comerciales, como Lotus
Notes y Oracle secure SQL.
Algoritmos de clave privada
•
•
•
IDEA (International Data Encryption
Algorithm, Algoritmo de Cifrado de Datos
Internacional)
Se trata, en opinión de muchos, del mejor y
más seguro algoritmo de cifrado de bloque
disponible actualmente. IDEA fue
desarrollado en Zurich por James L. Massey
y Xuejia Lai.
La primera versión apareció en el año 1990 y
más tarde fue reforzado, en parte debido a
la aparición, por las mismas fechas, del
criptoanálisis diferencial.
Algoritmos de clave privada
El tamaño de la clave es de 128 bits, lo
bastante grande como para permitir
descartar (por el momento) los ataques
por fuerza bruta.
• Ha sido sometido a diversos ataques,
hasta ahora sin resultado.
• Pero para valorar su seguridad serán
necesarios algunos años más.
•
Algoritmos de clave privada
•
•
•
•
Skipjack es un algoritmo secreto desarrollado
por la NSA (National Security Agency, Agencia
Nacional de Seguridad de los EE.UU.) para
implementación hardware.
Es un algoritmo del que no se conocen detalles,
por estar clasificado.
La clave que utiliza tiene un tamaño de 80 bits,
lo que permite descartar durante algunos años
los ataques por fuerza bruta.
No obstante, la mala reputación que tiene la
NSA en el mundo de la criptografía, junto al
hecho de que sea un algoritmo clasificado, hace
dudar de que skipjack sea un algoritmo seguro y
se piensa que podría tener una puerta trasera.
Problemas de los sistemas de
clave privada
En teoría los sistemas de clave privada
deberían funcionar bien, puesto que sólo
con mantener en secreto la clave se
asegura la confidencialidad y la integridad
de los mensajes.
• De hecho, muchos de estos sistemas
presentan una enorme seguridad.
• Sin embargo, existen problemas
derivados precisamente de la distribución
de las claves.
•
Problemas de los sistemas de
clave privada
•
•
•
•
•
Supongamos que tenemos un grupo de usuarios
en el que todos quieren intercambiar con los
demás mensajes en privado.
Obviamente, cada usuario tiene que acordar
antes con cada uno de los otros una clave a
utilizar.
Cuando hay solamente dos usuarios, se necesita
únicamente una clave.
Cuando los usuarios son tres, el número de
claves necesarias es de tres.
Es fácil comprobar que si se une al grupo un
cuarto participante el número de claves
necesarias asciende a seis
Problemas de los sistemas de
clave privada
Problemas de los sistemas de
clave privada
De aquí se puede deducir que no existe una relación
lineal entre el número de usuarios de un sistema y el
número de claves necesarias para conservar el
secreto y la autenticidad de los mensajes.
• Para un número n cualquiera de usuarios, el número
de claves viene dado por la expresión: claves = n x
(n-1) / 2.
• Esto quiere decir que el número de claves crece de
forma cuadrática.
• Por este motivo, un sistema de clave privada no
resulta práctico cuando hay muchos usuarios,
básicamente por dos aspectos:
•
• si no existe un control exhaustivo pueden aparecer claves
repetidas, lo que desvirtúa el concepto de secreto y
autenticidad de todo sistema de cifrado
Problemas de los sistemas de
clave privada
• por otra parte, un usuario que desee intercambiar
mensajes con todos los demás deberá conocer un gran
número de claves diferentes de memoria, dado que no
sería nada seguro tenerlas guardadas en un fichero y
menos aún anotadas en una lista
•
•
Todo esto se complica aún más cuando dos
usuarios deben acordar la clave a utilizar a
través de un canal de comunicaciones: para
hacerlo de manera confidencial ese canal tiene
que ser seguro, ya que de lo contrario podría ser
'pinchado' para interceptar la clave.
Pero si dos usuarios disponen de un canal
seguro, ¿porqué no utilizarlo para intercambiar
los mensajes directamente en lugar de cifrarlos?
Criptografía de clave pública o
asimétrica


La criptografía de clave pública fue concebida a
mediados de la década de los años 70, cuando
dos ingenieros de la universidad de Stanford,
Whitfield Diffie y Martin Hellman, propusieron la
utilización de problemas matemáticos
computacionalmente intratables para el diseño
de sistemas criptográficos
La idea era usar dos claves diferentes para los
procesos de cifrado y descifrado, la primera de
ellas denominada clave pública y la segunda
clave privada.
Criptografía de clave pública o
asimétrica
Ambas claves están relacionadas entre sí mediante un tipo de
función matemática conocida como función con trampa, mediante
la cual es fácil obtener la clave pública a partir de la privada, pero
muy difícil hacer lo contrario.
 Por este motivo también se denomina a este tipo de sistemas de
clave asimétrica.
 Además, ambas claves tienen la particularidad de ser
complementarias entre sí: lo que se cifra con una se puede
descifrar con la otra.
 La filosofía de los sistemas de clave pública es que cada usuario
posee un par de claves, una pública y otra privada; la clave
pública puede ser difundida libremente entre otros usuarios, los
cuales la usan para cifrar los mensajes destinados a ese usuario,
y solamente éste puede descifrarlos usando su clave privada,
conocida únicamente por él.

Criptografía de clave pública o
asimétrica
Criptografía de clave pública o
asimétrica
•
•
•
Con este novedoso enfoque se resuelven los
problemas asociados a los sistemas de clave
privada: el número de claves crece de forma
lineal respecto del número de usuarios, sin
que por ello se vea afectada la seguridad.
Y ya no hay peligro de que se pueda
interceptar la clave de descifrado, ya que no
se transmite.
Pero además se introduce el concepto de
firma digital, que permite verificar tanto la
integridad del mensaje transmitido como la
autoría del mismo.
Criptografía de clave pública o
asimétrica
Los algoritmos de clave pública son públicos, lo
que supone que la seguridad se basa únicamente en
la clave privada: intentar obtenerla a partir de la
clave pública es un problema intratable cuya
resolución puede llevar mucho tiempo, incluso miles
de años.
• Las funciones con trampa utilizadas están basadas
en básicamente dos problemas matemáticos:
•
• problema de la factorización : dado un número muy grande
que es producto de dos números primos desconocidos,
hallar éstos. El tiempo de resolución de este problema
crece de manera exponencial en función del tamaño de los
números primos empleados.
• problema del logaritmo discreto : dado un número y que
verifica que y = ax (mod p), obtener x. Se estima que la
dificultad de este problema es equivalente a la del
problema de la factorización
La firma digital
•
•
•
La firma digital es un mecanismo inherente a
algunos sistemas de clave pública que tiene
dos propósitos: por un lado la de autenticar
a la persona firmante de un mensaje y por
otro verificar la integridad del mismo (de lo
contrario se podría alterar éste y mantener
la firma, cometiendo así un fraude).
La firma digital es única para cada mensaje y
no es posible falsificarla.
Para firmar un mensaje se procede de la
siguiente manera: en primer lugar el emisor
calcula su firma a partir del mensaje cifrando
éste con su clave privada.
La firma digital
•
•
•
•
•
A continuación envía dicha firma al receptor.
Nadie más que el emisor conoce su clave
privada, lo cual le permite autentificarse.
Si además quiere realizar el cifrado,
seguidamente vuelve a cifrar el mensaje, esta
vez con la clave pública del usuario receptor.
Para que el usuario receptor pueda comprobar la
firma, necesita conocer la clave pública del
emisor y descifrar con ella dicha firma.
Si ésta coincide con el mensaje recibido, se
verifica que efectivamente ha sido el auténtico
emisor quien lo ha enviado.
Es más, se verifica también que el mensaje no
ha sido alterado durante el trayecto.
Algoritmos de clave pública
•
•
•
Intercambio de Diffie-Hellman El algoritmo
de Diffie-Hellman es, más que un algoritmo de
cifrado, un protocolo que permite a dos usuarios
establecer una clave a través de un canal
inseguro.
Cada usuario tiene inicialmente su propia clave.
Intercambiando información de sus respectivas
claves, ambos pueden obtener una tercera
clave, denominada de sesión, para cifrar y
descifrar en el futuro todos sus mensajes.
Sin embargo, a una tercera persona que
intercepte la información intercambiada no le
resultará posible determinar esa clave de sesión.
Algoritmos de clave pública
Mochila de Merkle-Hellman Fue el primer
algoritmo general de clave pública y en un principio
solamente podía aplicarse al cifrado de datos, siendo
posteriomente adaptado a la firma digital.
• Este algoritmo basa su seguridad en el llamado
problema de la mochila: dado un conjunto de
objetos, cada uno de distinto peso, averiguar si es
posible introducir algunos de ellos en una mochila de
manera que ésta tenga exactamente un peso
determinado.
• Para cifrar con este sistema, se toma un tamaño de
bloque igual al número de objetos de la mochila.
• Cada bit que es igual a 1 de ese bloque de texto en
claro selecciona el correspondiente objeto.
•
Algoritmos de clave pública
•
•
•
•
•
•
•
De esta forma, cada bloque de criptograma es la suma de los
pesos de los objetos seleccionados.
Para descifrar hay que resolver el problema de la mochila para
cada bloque de criptograma.
El truco está en que se pueden usar dos mochilas diferentes, con
una de ellas el tiempo de descifrado es exponencial y con la otra
es lineal (la primera de ellas es una mochila difícil y la otra es
fácil).
Se puede obtener la mochila difícil a partir de la otra, pero es
muy complicado hacer lo contrario.
Como se puede suponer, la clave pública es la mochila difícil y la
privada la mochila fácil.
Al poco tiempo de su aparición dos criptoanalistas, Shamir y
Zippel, hallaron una debilidad que permitía obtener la mochila
fácil a partir de la difícil.
Por ello en la actualidad este algoritmo resulta inútil para usos
prácticos.
Algoritmos de clave pública
•
•
•
•
•
•
•
RSA Su nombre procede de las iniciales de sus creadores
(Rivest, Shamir y Adleman).
Ya antes de su aparición hubo presiones por parte de la popular
NSA (National Security Agency, de los EE.UU.) para que no fuese
publicado. RSA permite tanto el cifrado como la firma digital.
La seguridad de RSA está basada en la dificultad de factorizar
números grandes.
Las claves pública y privada son obtenidas en función de dos
números primos muy grandes (entre 100 y 200 dígitos, o incluso
más).
Para averiguar la clave privada es necesario factorizar el
producto de esos dos números primos, denominado módulo.
No está demostrado que no se pueda calcular la clave privada sin
tener que factorizar el módulo y tampoco que no haya un
método de factorización eficiente.
No obstante, aunque puede ser vulnerable a ciertos ataques,
RSA se considera uno de los algoritmos criptográficos más
resistentes creados hasta la fecha
Algoritmos de clave pública
•
•
•
Pohlig-Hellman El esquema de cifrado de
este algoritmo es similar al empleado en
RSA, pero basa su seguridad en el problema
del logaritmo discreto.
Pohlig-Hellman no es un algoritmo de clave
simétrica, porque se utilizan claves
diferentes para cifrar y descifrar.
Pero tampoco se puede considerar un
algoritmo de clave asimétrica en sentido
estricto, porque cada una de esas dos claves
es fácilmente deducible a partir de la otra y
ambas deben mantenerse en secreto.
Algoritmos de clave pública
•
•
•
•
Algoritmos de curva elíptica En el año 1985 dos
investigadores propusieron, de manera independiente, el empleo
de curvas elípticas en los sistemas de clave pública.
Lo que hicieron no fue crear un nuevo algoritmo, sino
implementar otros ya existentes, como Diffie-Hellman, con
curvas elípticas.
Este tipo de curvas son interesantes porque proporcionan un
medio de obtener elementos y reglas de combinación entre ellos
con propiedades que facilitan la implementación de algoritmos
criptográficos y en cambio carecen de otras propiedades que
podrían facilitar el criptoanálisis.
Entre ellas, las más interesantes son las llamadas 'curvas de
campo finito', que teóricamente proporcionaría la posibilidad de
implementar sistemas de clave pública conocidos empleando
claves de menor tamaño, lo que reduciría sustancialmente el
tiempo de cifrado y descifrado, verdadero talón de Aquiles de los
sistemas de clave pública.
Seguridad de un cifrado
•
•
•
•
•
La seguridad de un cifrado está en función de dos factores: la resistencia
del algoritmo y el tamaño de la clave empleada.
Se considera que la resistencia de un algoritmo es ideal cuando no presenta
debilidades y para atacarlo no queda más recurso que el empleo de la
fuerza bruta.
El tiempo que lleve un ataque de este tipo debe ser superior al tiempo de
validez de la información cifrada.
En la siguiente tabla se ilustra el tiempo que tardaría un adversario en
realizar un ataque por fuerza bruta para diferentes tamaños de clave,
suponiendo que dispone de un ordenador capaz de probar diez mil millones
(1010) de claves por segundo:
Tamaño de clave
Tiempo
56 bits
83 días y medio
64 bits
58 años y medio
128 bits
1021 años
2048 bits
10593 años
PGP

Con PGP cada usuario tiene dos claves
diferentes: una pública que todos los
demás usuarios conocen y emplean para
cifrar mensajes destinados a él y otra
privada que solamente ese usuario
conoce y que emplea para descifrar los
mensajes que recibe.
PGP
•
Cada clave de PGP se almacena dentro de un
certificado de clave, junto con otra información
relativa a la misma. Un certificado está formado por:
la clave pública en sí
su tamaño (en bits) y su identificador asociado
la fecha en que fue creada
el identificador o identificadores de usuario de la persona
propietaria de la clave
– opcionalmente, una lista de firmas digitales pertenecientes
a otras personas. Estas firmas avalan la autenticidad de esa
clave
–
–
–
–
PGP
•
•
Anillo de claves
Un anillo de claves es un fichero, parecido a una
base de datos, en el que se almacenan múltiples
claves de forma secuencial. Es posible tener
tantos anillos de claves como se quiera, pero la
mayoría de los usuarios de PGP utilizan
únicamente dos: uno en el que guardan su clave
pública y las de otros usuarios con los que
mantienen correspondencia y otro en el que
guardan su clave o claves privadas.
PGP
•
•
•
Contraseña
La contraseña es una frase que el usuario
elije y que se utiliza para proteger su clave
privada. De otro modo, alguien podría robar
la clave privada de otro usuario y usarla para
descifrar sus mensajes. Por ello, la
contraseña es requerida cada vez que se va
a utilizar la clave privada.
Las contraseñas también se utilizan para
cifrar ficheros de manera convencional: en
este caso, a partir de una contraseña
introducida se obtiene directamente la clave
de cifrado.
PGP
•
Firma digital
La firma digital es el mecanismo que proporciona los
servicios de integridad y autenticación: gracias a ella
es posible saber si un mensaje lo ha enviado
realmente una persona o si ha sido alterado durante
el trayecto.
• La firma digital de PGP consiste en un bloque de
caracteres obtenido a partir de dos elementos: el
mensaje original y la clave privada del emisor.
•
Pero además la firma digital se utiliza en PGP para
certificar claves.
• El mecanismo de certificación será estudiado con
detalle en el capítulo de DISTRIBUCION DE CLAVES.
•
PGP
•
Armadura Ascii
La armadura ascii es un formato de transmisión de
ficheros compuesto únicamente por caracteres
imprimibles.
• El correo electrónico tiene esta limitación y en los
procesos de cifrado y firma digital de PGP
inevitablemente aparecen caracteres que no lo son.
• Por ello PGP tiene la posibilidad de generar los
ficheros de salida en formato de armadura ASCII.
• Además, con esto se consigue que los mensajes sean
intercambiados sin problemas entre usuarios que
utilizan plataformas o sistemas operativos diferentes
y en los que determinados caracteres podrían ser
interpretados como caracteres de control y
suprimidos del mensaje.
•
Descargar