-[ 0x0F ]-------------------------------------------------------------------- -[ CRIPTOANALISIS ]---------------------------------------------------------- -[ by Hendrix ]------------------------------------------------------SET-18- CRIPTOANALISIS ************** por Hendrix A) INTRODUCCION: Habreis oido muchas veces que la Criptografia Moderna es muy segura, pero ¨Como se pueden desencriptar los mensajes? Las tecnicas para desencriptar mensajes ajenos se llama Criptoanalisis y seguro que os interesa. ¨Quien se atreve a desencriptar PGP? --------------------------------------------------------------------------- B) TIPOS DE ATAQUES: 1. Ataque basado en Texto Cifrado conocido Este es el ataque mas evidente, se supone que el criptoanalista ha interceptado un mensaje cifrado y pretende descifrarlo. Si el mensaje ha sido correctamente cifrado con algoritmos "robustos", el criptoanalista lo tiene muy complicado, por no decir imposible. 2. Ataque basado en Texto en Claro conocido En este caso el criptoanalista tiene acceso tanto al texto cifrado como al original y el objetivo es tratar de descifrar la Clave que se ha utilizado. Aunque parezca un tipo de ataque extraño, es el mas comun: Normalmente los mensajes que se van a cifrar tienen cierta estructura, lo que permite al criptoanalista conocer a priori gran parte del Texto en Claro aunque solo cuente con el Texto Cifrado. 3. Ataque basado en Texto en Claro seleccionado Este metodo es mas bien academico y sirve para probar la fortaleza de los algoritmos, en la practica su uso es muy extra¤o. Aqui el Criptoanalista lo tiene todo: Puede elejir una serie de textos (a veces hasta miles o millones de textos), y obtener el texto cifrado correspondiente. El objetivo sigue siendo el mismo, encontrar la Clave de cifrado. A pesar de todas estas ventajas un buen algoritmo de cifrado debe resistir este tipo de ataques. -------------------------------------------------------------------------- C) METODOS: Vamos a por lo que os importa. ¨Que metodos existen para descifrar un mensaje encriptado?, la verdad es que se trata de una tarea muy dificil. De todas formas explicare todos los metodos que conozco y al final utilizaremos todo lo hemos aprendido para intentar descifrar un mensaje PGP. 1. FUERZA BRUTA ---------------------------------------------------------- a) Algorimos simetricos En principio este deberia ser el unico metodo para desencriptar un mensaje de clave simetrica como DES, RC5, IDEA o Blowfish. El metodo es evidente, probar todas las posibles Claves hasta encontrar la correcta. Aqui tenemos dos problemas: El numero de Claves es igual a 2 elevado al numero de bits de la Clave. Lo que significa que para 64 bits es una bestialidad de claves (Si todavia no estas convencido, echale un vistazo al proyecto Bovine y veras el esfuerzo necesario para desencriptar una unica palabra cifrada con RC5-64bits). Pero aun asi sigues teniendo otro problema ¨Como sabes que la Clave que has probado es la correcta? Si solo conoces el texto cifrado podria ser que dos textos diferentes cifrados con claves diferentes dieran el mismo resultado despues de cifrarlos!! b) Algoritmos asimetricos Por su parte los algoritmos de Clave asimetrica se basan en la imposibilidad de resolver un problema matematico concreto. Asi, RSA se basa en la dificultad de factorizar un numero muy grande que sea el resultado de la multiplicacion de 2 numeros primos grandes Diffie-Hellman se basa en la dificultad de encontrar el logaritmo entero de un numero muy grande. Ultimamente se esta investigando en un nuevo campo, las Curvas Elipticas que parece ser todavia mas dificil que los anteriores. Por ultimo quisiera comentar el dilema Memoria/Procesamiento. Hay que tener en cuenta que las claves se pueden procesar previamente y guardarla en algun sitio. ¨Alguien ha intentado crear alguna vez un CD con passwords desencriptadas de UNIX?, podria ser una buena idea. 2. MATEMATICOS ------------------------------------------------------------- Los metodos matematicos se utilizan generalmente para probar la fortaleza de un algoritmo, evidentemente un buen algoritmo sera aquel que pueda superar este tipo de ataques. a) Reducir el espacio de Claves La mayoria de ataques a un Criptosistema se basan este metodo: intentar descartar Claves hasta llegar a reducir la cantidad de Claves a un numero suficientemente peque¤o como para poder aplicar un ataque por Fuerza Bruta. Con 2 elevado a 30 claves posibles, cualquiera puede intentar un ataque por Fuerza Bruta en un periodo de tiempo razonable. DESCraker utiliza este metodo para desencriptar DES. b) Estadisticos Se basa en buscar algun tipo de estadistica en el texto cifrado. Cualquier algoritmo moderno que se precie debe superar esta prueba perfectamente, eliminando cualquier tipo de estadistica en los resultados. De echo cualquier algoritmo criptografico es un buen generador de numeros aleatorios. c) Criptoanalisis Diferencial Inventado por Adi Shamir. Se prueban unos textos en claro determinados que presentan ciertas simetrias en el texto cifrado y con esto se puede reducir el numero de Claves posibles. Con este metodo se han desencriptado muchos algoritmos que parecian indescifrables. d) Ataques a Criptosistemas asimetricos Los Algoritmos de Clave Publica nos presentan un reto concreto: Si somos capaces de resolver un problema matematico concreto podremos desencriptar la Clave. Este reto esta tan bien elejido que ni con toda la potencia de calculo imaginable seria posible resolverlo. Aun asi, en el futuro pueden aparecer nuevos algoritmos matematicos que simplifiquen el problema, haciendo que ciertos criptosistemas sean vulnerables. RSA: Se basa en la factorizacion de numeros grandes. Este problema ha sido ampliamente estudiado por multitud de matematicos. El mejor algoritmo encontrado para resolver el problema es inviable para claves de 1024 bits o mas. Diffie-Hellman: Se basa en resolver logaritmos enteros, aunque es mas debil que el RSA la solucion a este problema sigue siendo inviable para claves de 1024 bits o mas Curvas elipticas: Resolver estos problemas son tremendamente dificiles hoy en dia lo que permitiria utilizar claves mas cortas que con RSA, sin embargo, al tratarse de un campo muy nuevo en Matematicas no se descarta la posibilidad de que se den nuevos avances en un futuro proximo, lo que haria vulnerable este tipo de algoritmos. 3. PUERTAS TRASERAS -------------------------------------------------------- a) Troyanos Siempre que utilicemos un software de criptografia existe la posibilidad de que el programador haya instalado un "Caballo de Troya" en el, que permita descifrarlo sin necesidad de utilizar la Clave. Es una situacion rebuscada pero posible. b) Skipjack LA NSA (Agencia de Seguridad Americana) ha propuesto un algoritmo llamado Skipjack para encriptar las comunicaciones telefonicas. Este algoritmo posee una puerta trasera llamada LEAF que permitiria descifrar la comunicacion sin necesidad de conocer la clave. Para crear el LEAF proponen que una parte de la clave la guarde el FBI y otra el Departamento de Hacienda. Si un juez decreta que se debe "pinchar" una linea, la policia pediria las claves a los depositarios y asi podria descifrar cualquier conversacion. c) DES Siempre se ha tenido la duda de si DES incorporaba una Puerta Trasera, las dudas provenian de las S-Box, una de las partes basicas del algoritmo DES. Estas Box estan compuestas por una serie de numeros elejidos por el creador del algoritmo y no existe un criterio real para que se utilicen esos numeros y no otros. De todas formas esto nunca se ha llegado a demostrar. 4. ROBO DE CLAVES ---------------------------------------------------------- EL metodo mas evidente y mas efectivo. a) Claves privadas Las claves privadas son la base de la criptografia moderna y su robo pone en peligro todo el sistema. Las claves privadas mas importantes se guardan en unos diapositivos llamados CSU de la empresa BBN, si alguien los roba e intenta abrirlos la informacion contenida se autodestruiria. En PGP la clave privada se guarda en el archivo "secring.skr" b) Robo del fichero de contrase¤as /etc/passwd (hace falta mas explicaciones?) 5. CLAVES DEBILES ---------------------------------------------------------- Aunque se robe un fichero de Claves, casi siempre estara protegido por una contrase¤a. Y toda Contrase¤a es vulnerable. a) Contrase¤as faciles La mayoria de la gente utiliza contraseñas faciles, con un Crakeador de passwords y una lista de palabras es suficiente (no sere yo quien os ense¤e a hacer esto, demasiado facil) b) Contrase¤as asignadas por el administrador En muchos casos es el propio administrador del sistema el que crea una contrase¤a fuerte y se la da al usuario. Normalmente el usuario no puede aprendersela y la acaba escribiendo en un papel. Es peor el remedio que la enfermedad. c) Contrase¤as dificiles Algunos usuarios son conscientes de que una contrase¤a debe ser dificil, asi que se crean una del tipo: "Rt45ff2Zz". El problema es que este tipo de contrase¤as es dificil de recordar por lo que acaban utilizandola para todo. Piensalo:¨Cuantas contrase¤as diferentes utilizas normalmente? d) Claves de sesion debiles Al crear una clave de sesion, esta debe ser totalmente aleatoria. Esto no siempre ocurre y puede que el generador no sea lo bastante aleatorio. Un criptoanalista podria analizar el algoritmo de creacion de claves y reducir asi el espacio de claves posibles (metodo 2a) 6. MAN-IN-THE-MIDDLE-------------------------------------------------------- Se trata de un ataque muy complejo pero que puede descifrar rapidamente cualquier criptosistema, incluso PGP. La tecnica consiste en interponerse entre el emisor y el receptor impidiendo cualquier comunicacion entre ambos sin pasar por el Criptoanalista. Para explicar este metodo utilizare un cuento, es mas facil de entender: "Ana quiere mandar un mail a Paco encriptado con PGP, para ello necesita su clave publica. Un Pirata ha modificado la Clave Publica de Paco de tal manera que cuando Ana cree tener la clave publica de Paco en realidad lo que tiene es la clave publica del Pirata. Ana encripta el mensaje, el Pirata lo intercepta y lo desencripta con su clave privada. Despues lo vuelve a encriptar con la clave de Paco y se lo manda. Paco recibe el mensaje y lo descifra sin sospechar nada. Ahora el Pirata debe repetir la operacion con Paco. El resultado final es que aunque Ana y Paco creen tener una comunicacion segura hay un Man-In-The-Middle que esta interceptando todos los mensajes." Con el uso de Certificados Digitales se puede impedir este ataque. 7. PLAY-BACK --------------------------------------------------------------- La tecnica consiste en intentar acceder a un sistema repitiendo los mensajes que otro usuario ha enviado y que el Criptoanalista ha interceptado y guardado. En cualquier protocolo de seguridad moderno se incluyen datos aleatorios llamados "Nonce o Fresh" que son diferentes cada vez que se inicia un protocolo, el objetivo es evitar este tipo de ataques. 8. ATAQUE DEL CUMPLEAÑOS --------------------------------------------------- Es un curioso metodo de ataque contra una funcion Hash. Es muy largo de explicar, tan solo dire que funciona con Hash de menos de 100 bits. Los algoritmos mas tipicos: MD5 (128 bits) y SHA (168 bits) estan libres de este ataque 9. CERTIFICADOS REVOCADOS -------------------------------------------------- Algunos protocolos modernos como SET admiten la creacion de listas de certificados no validos (para el caso de robos de claves), si un criptoanalista ha robado una clave y el propietario de la clave se entera, debe asegurarse ademas que su victima no reciba la lista de certificados revocados (CRL) sino la clave robada no servira de nada. 10. OTROS SISTEMAS --------------------------------------------------------- Si se utiliza sistemas Biometricos (basados en caracteristicas fisicas de la persona como los ojos, manos, etc..) o Tarjetas Inteligentes, el ataque se complica todavia mas. ---------------------------------------------------------------------------- DESENCRIPTAR PGP Por intentarlo que no quede, estan son todas las posibilidades: a) Troyano La version 5.0 de PGP para Windows viene sin codigo fuente por lo que podria incluir un troyano (quien sabe), la version 2.6 viene con codigo fuente, ideal para paranoicos. b) Fuerza Bruta: IDEA La primera opcion es intentar desencriptar el mensaje cifrado con IDEA por fuerza bruta. Recuerda que es algoritmo de 128 bits. Resultado: Imposible. c) Fuerza Bruta RSA / D-H Tambien puedes intentar factorizar la Clave Publica para obtener la Clave Privada. Si se utilizan Claves de 1024 bits o mas el resultado es claro: Imposible tambien. e) Man-in-the-middle Si no se utilizan Certificados Digitales esta tecnica es teoricamente posible aunque inviable a la practica. d) Robo de Clave Privada Este es unico metodo factible. Para empezar deberas robar la clave privada que se encuentra en el fichero "secring.skr". Esta clave esta protegida por una "frase de paso". Aunque se trata de una proteccion mas fuerte que una password puedes probar con un diccionario de frases: Refranes, frases tipicas, letras de canciones, etc... Al fin, si consigues descifrarlo antes de que caduque la clave, habras descifrado PGP!!! --------------------------------------------------------------------------- CONCLUSION: A partir de ahora, cuando algun "hAcKErK00l" te diga que PGP no es seguro y que el puede descifrarlo cuando quiera simplemente sonrie. No te enfades con el, estos pobres ignorantes son felices asi...