12
PRINCIPIOS DE CRIPTOGRAFIA ALGORITMOS HASH DES MD5 SHA Y SUS DERIVADOS ¿QUE ES LA CRIPTOGRAFÍA? El ser humano ha utilizado la criptografía para proteger sus secretos desde el siglo V antes de Cristo... pero, ¿qué es la criptografía? Si seguimos la definición de la Real Academia Española RAE, criptografía es el "arte de escribir con clave secreta o de un modo enigmático". En principio, esta definición puede ser considerada como válida pero solamente dentro de un ámbito histórico.

CRIPTOGRAFIA

Embed Size (px)

DESCRIPTION

Descreipcion sobre los Algoritmos DES, MD5 y SHA y sus derivadas. Aplicación y utilización con javascript.

Citation preview

PRINCIPIOS DE CRIPTOGRAFIA

ALGORITMOS HASHDESMD5SHA Y SUS DERIVADOS

QUE ES LA CRIPTOGRAFA?

El ser humano ha utilizado la criptografa para proteger sus secretos desde el siglo V antes de Cristo... pero, qu es la criptografa? Si seguimos la definicin de la Real Academia Espaola RAE, criptografa es el "arte de escribir con clave secreta o de un modo enigmtico". En principio, esta definicin puede ser considerada como vlida pero solamente dentro de un mbito histrico.

DES (Leudis Sanjuan)

(Data Encryption Standard) es un esquema de encriptacin simtrico desarrollado en 1977 por el Departamento de Comercio y la Oficina Nacional de Estndares de EEUU en colaboracin con la empresa IBM, que se cre con objeto de proporcionar al pblico en general un algoritmo de cifrado normalizado para redes de ordenadores. Estaba basado en la aplicacin de todas las teoras criptogrficas existentes hasta el momento, y fue sometido a las leyes de USA.Posteriormente se sac una versin de DES implementada por hardware, que entr a formar parte de los estndares de la ISO con el nombre de DEA.Se basa en un sistema mono alfabtico, con un algoritmo de cifrado consistente en la aplicacin sucesiva de varias permutaciones y sustituciones. Inicialmente el texto en claro a cifrar se somete a una permutacin, con bloque de entrada de 64 bits (o mltiplo de 64), para posteriormente ser sometido a la accin de dos funciones principales, una funcin de permutacin con entrada de 8 bits y otra de sustitucin con entrada de 5 bits, en un proceso que consta de 16 etapas de cifrado.En general, DES utiliza una clave simtrica de 64 bits, de los cuales 56 son usados para la encriptacin, mientras que los 8 restantes son de paridad, y se usan para la deteccin de errores en el proceso.Como la clave efectiva es de 56 bits, son posible un total de 2 elevado a 56 = 72.057.594.037.927.936 claves posibles, es decir, unos 72.000 billones de claves, por lo que la ruptura del sistema por fuerza bruta o diccionario es sumamente improbable, aunque no imposible si se dispone de suerte y una gran potencia de clculo.Actualmente DES ya no es estndar y fue roto en Enero de 1999 con un poder de cmputo que efectuaba aproximadamente 250 mil millones de ensayos en un segundo.Los principales inconvenientes que presenta DES son:Se considera un secreto nacional de EEUU, por lo que est protegido por leyes especficas, y no se puede comercializar ni en hardware ni en software fuera de ese pas sin permiso especfico del Departamento de Estado.La clave es corta, tanto que no asegura una fortaleza adecuada. Hasta ahora haba resultado suficiente, y nunca haba sido roto el sistema. Pero con la potencia de clculo actual y venidera de los computadores y con el trabajo en equipo por Internet se cree que se puede violar el algoritmo, como ya ha ocurrido una vez, aunque eso s, en un plazo de tiempo que no result peligroso para la informacin cifrada.No permite longitud de clave variable, con lo que sus posibilidades de configuracin son muy limitadas, adems de permitirse con ello la creacin de limitaciones legales.La seguridad del sistema se ve reducida considerablemente si se conoce un nmero suficiente textos elegidos, ya que existe un sistema matemtico, llamado Criptoanlisis Diferencial, que puede en ese caso romper el sistema en 2 elevado a 47 iteraciones.

MD5 (Leudis Sanjuan)(Message Digest Algorithm 5, Algoritmo de Ordenacin de Mensajes 5): es un algoritmo desarrollado por RSA Data Security, Inc. MD5 es una funcin hash de 128 bits, que toma como entrada un mensaje de cualquier tamao y produce como salida un resumen del mensaje de 128 bits. El primer paso del algoritmo divide el mensaje en bloques de 512 bits. El ltimo bloque o si el mensaje completo es menor a 512 bits, se formatea para tener un tamao de 512 bits mediante el agregado de bits 0 ms la longitud del tamao del mensaje. Adems, se tiene un bfer estado de 128 bits manejado como cuatro palabras de 32 bits. La funcin compresin tiene cuatro rondas y en cada ronda el bloque de mensaje y el bfer son combinados en el clculo, mediante el uso de sumas modulares, XORs, ANDs, ORs y operaciones de rotaciones sobre palabras de 32 bits.Seguridad

A pesar de haber sido considerado criptogrficamente seguro en un principio, ciertas investigaciones han revelado vulnerabilidades que hacen cuestionable el uso futuro del MD5. En agosto de 2004, Xiaoyun Wang, Dengguo Feng, Xuejia Lai y Hongbo Yu anunciaron el descubrimiento de colisiones de hash para MD5. Su ataque se consum en una hora de clculo con un clster IBM P690.Aunque dicho ataque era analtico, el tamao del hash (128 bits) es lo suficientemente pequeo como para que resulte vulnerable frente a ataques de fuerza bruta tipo cumpleaos. El proyecto de computacin distribuida MD5CRK arranc en marzo de 2004 con el propsito de demostrar que MD5 es inseguro frente a uno de tales ataques, aunque acab poco despus del aviso de la publicacin de la vulnerabilidad del equipo de Wang.Debido al descubrimiento de mtodos sencillos para generar colisiones de hash, muchos investigadores recomiendan su sustitucin por algoritmos alternativos tales como SHA-1 o RIPEMD-160.

Aplicaciones

Los resmenes MD5 se utilizan extensamente en el mundo del software para proporcionar la seguridad de que un archivo descargado de Internet no se ha alterado. Comparando una suma MD5 publicada con la suma de comprobacin del archivo descargado, un usuario puede tener la confianza suficiente de que el archivo es igual que el publicado por los desarrolladores. Esto protege al usuario contra los 'Caballos de Troya' o 'Troyanos' y virus que algn otro usuario malicioso pudiera incluir en el software. La comprobacin de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa, tambin reconoce una descarga corrupta o incompleta.Para comprobar la integridad de un archivo descargado de Internet se puede utilizar una herramienta MD5 para comparar la suma MD5 de dicho archivo con un archivo MD5SUM con el resumen MD5 del primer archivo. En los sistemas UNIX, el comando de md5sum es un ejemplo de tal herramienta. Adems, tambin est implementado en el lenguaje de scripting PHP como MD5("" ) entre otros.En sistemas UNIX y GNU/Linux se utiliza el algoritmo MD5 para calcular el hash de las claves de los usuarios. En el disco se guarda el resultado del MD5 de la clave que se introduce al dar de alta un usuario, y cuando ste quiere entrar en el sistema se compara el hash MD5 de la clave introducida con el hash que hay guardado en el disco duro. Si coinciden, es la misma clave y el usuario ser autenticado.El MD5 tambin se puede usar para comprobar que los correos electrnicos no han sido alterados usando claves pblicas y privadas.

SHA (Secure Hash Algorithm) (Leudis Sanjuan)La familia SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es un sistema de funciones hash criptogrficas relacionadas de la Agencia de Seguridad Nacional de los Estados Unidos y publicadas por el National Institute of Standards and Technology (NIST). El primer miembro de la familia fue publicado en 1993 y fue llamado oficialmente como SHA. Sin embargo, hoy en da, se le llama SHA-0 para evitar confusiones con sus sucesores. Dos aos ms tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes ms que se han publicado desde entonces cuyas diferencias se basan en un diseo algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (todos ellos son referidos como SHA-2). SHA-1 ha sido examinado muy de cerca por la comunidad criptogrfica, y no se ha encontrado ningn ataque efectivo. No obstante, en el ao 2004, un nmero de ataques significativos fueron divulgados sobre funciones criptogrficas de hash con una estructura similar a SHA-1; esto ha planteado dudas sobre la seguridad a largo plazo de SHA-1. SHA-0 y SHA-1 producen una salida resumen de 160 bits de un mensaje, que puede tener un tamao mximo de 264 bits, y se basa en principios similares a los usados MD5. SHA-2 produce una salida resumen de 256 (para SHA-256) o 512 (para SHA-512) y difiere a SHA-1 en que el algoritmo contempla algunas constante adicionales; as mismo, el tamao del resumen es diferente al igual que el nmero de rondas.

APLICACIN. (Paul Inchustegui)1. El CdigoEn JavaScript no existe una funcin predefinida por lo cual debemos elaborar todo el cdigo. Actualmente hay muchas implementaciones, siendo una de las ms confiables la de Paul Johnstondepajhome.org.ukrazn por la cual nos vamos a apoyar en sta para la encriptacin MD5.Para ms informacin sobre la implementacin MD5 de Paul Johnston por favor visita su site en:pajhome.org.uk/crypt/md5/.2. Ejemplo de Encriptador MD5A continuacin dejo el cdigo fuente de un encriptador MD5 en JavaScript.

3. Ejemplo con Google DocsEncriptacin MD5 con Google Docs. Esto es posible gracias a que Google Docs nos permite crear nuestras propias funciones en JavaScript.1. Primero nos dirigimos aGoogle Docsy nos logueamos, de no tener cuenta nos creamos una, que de todas maneras nos va a servir para todos los servicios ofrecidos por Google.

2. Luego nos dirigimos al men de la izquierda debajo del logo de Google y seleccionamosCrear nuevo > Hoja de clculo.

3. Ahora ya nos encontramos dentro de nuestra hoja de clculo (bsicamente es MS Excel), aqu nos ubicamos en el men superior y seleccionamosHerramientas > Editor de secuencia de comandos, nos va a aparecer una ventana nueva.

4. La ventana que nos acaba de aparecer es en donde podemos crear y editar funciones personalizadas para utilizarlas en nuestra hoja de clculo. Aqu pegamos el script de encriptacin MD5 y luego guardamos (Ctrl + S).

IMPORTANTE:Para este ejemplo se utiliza la version 1.1 de la implementacin de Paul Johnston que puedes conseguir aqu: JavaScript MD5 1.1ya que la versin actual mandaba un error en Google Docs.5. Finalmente nos dirigimos a nuestra hoja de clculo y utilizamos el script de encriptacin con el comandocalcMD5(), el cual funciona igual que cualquier otro comando como SUM o MULTIPLY, es decir nos ubicamos en cualquier celda y escribimos por ejemplo:=calcMD5(A1)con este comando vamos a convertir el contenido de la celda A1 a MD5.

IMPORTANTE:Para conversin a MD5 es necesario que el campo a convertir sea un Texto Plano. Si la celda contiene slo nmeros nos va a dar como resultado la misma cadena MD5 como si la celda estuviera vaca. Para solucionar esto seleccionamos la celda, nos dirigimos al men y seleccionamosFormato > Nmero > Texto normal.

Trabajos citadosLeudis Sanjuan. (s.f.). Criptografia 1. Obtenido de manglar.uninorte.edu.co: http://manglar.uninorte.edu.co/bitstream/handle/10584/2204/Criptograf%EDa%20I.pdf?sequence=1Paul InchusteguiApril 28, 2011, Encriptacin MD5 en JavaScript + Google Docs