Password cracking

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

En criptoanálisis y seguridad informática, el descifrado de contraseñas es el proceso de recuperación de contraseñas que se han almacenado en un equipo. Un acercamiento común es el ataque de fuerza bruta el cual consiste en adivinar repetitivamente la contraseña y corroborar contra un hash criptográfico existente de la contraseña.[1]

El propósito de descifrado de contraseñas puede ser ayudar a un usuario a recuperar alguna contraseña olvidada (instalando una contraseña totalmente nueva), para obtener acceso no autorizado a un sistema, o como una medida preventiva por los administradores del sistema para buscar contraseñas fácilmente manipulables.

Tiempo necesario para las búsquedas de contraseñas[editar]

El tiempo para descifrar una contraseña está relacionado con la fuerza de bits, que es una medida de la entropía de la de información de la contraseña y los detalles de cómo se almacena. La mayoría de los métodos de obtención son ilegales y requieren de una computadora para producir muchas posibles contraseñas, cada una de las cuales está marcada. Un ejemplo es el ataque de fuerza bruta, en el que un equipo intenta todas las claves posibles o contraseñas hasta que lo consiga. Los métodos más comunes de descifrado de contraseñas son el ataque de diccionario, búsqueda de patrones, lista de palabras de sustitución, etc. Todos estos métodos buscan disminuir los intentos requeridos y comúnmente se usan antes de intentar el ataque de fuerza bruta. Conforme mas alta sea la fuerza de bits de la contraseña se incrementan el número de opciones que deben ser intentadas para recuperar una contraseña y reducir la posibilidad de que la contraseña sea encontrada en algún diccionario de cracking.[2]

La capacidad para descifrar contraseñas utilizando programas para las computadoras también es una opción dado que el número de posibles contraseñas por segundo que se puede comprobar es mayor. Si un hash de la contraseña de destino está disponible para el atacante, este número puede ser bastante grande. Si no es así, la tasa depende de los límites de software de autenticación, de la frecuencia con que una contraseña pueda ser juzgada, ya sea por las demoras, CAPTCHAS , o cierres después de cierto número de intentos fallidos. Otra situación en la cual es posible adivinar de forma rápida es cuando la contraseña es usada de una llave criptográfica. En estos casos un atacante puede rápidamente corroborar si alguna contraseña usada descodifica información cifrada. Por ejemplo existe un software comercial que dice que prueba 103,000 contraseñas WPA PSK por segundo.[3]

Las computadoras de escritorio comunes pueden probar más de cien millones de contraseñas por segundo utilizando herramientas que se ejecutan en una CPU de propósito general y miles de millones de contraseñas por segundo utilizando las contraseñas basada sen la GPU.[4] [5] [6] Vease John the Ripper.[7] La velocidad para poder descifrar contraseñas depende mucho de la función criptográfica usada por el sistema para generar los hashes de las contraseñas. Una buena función para hacer esto, tal como bcrypt, es varias veces mejor que una función simple como MD5 o SHA. Una contraseña de ocho caracteres seleccionada por el usuario con números, mayúsculas, minúsculas y símbolos alcanza una fuerza estimada de 30 bits, de acuerdo con el NIST. Esto quiere decir 230 que significa sólo un billón de permutaciones[8] lo cual tomaría segundos para descifrar si la función es simple. Cuando las computadoras de escritorio normal se combinan con un esfuerzo de agrietamiento, como se puede hacer con botnets, las capacidades de descifrado aumentan considerablemente. En el año 2002, distributed.net encontró con éxito, una clave de 64 bits RC5 en cuatro años, en un ejercicio que incluyó más de 300.000 equipos diferentes en distintos momentos, y que generó en promedio más de 12 billones de claves por segundo.[9] Los procesadores gráficos pueden acelerar el descifrado de contraseñas en un factor de 50 a 100 sobre las computadoras de propósito general. A partir del 2011, los productos comerciales disponibles afirman la posibilidad de probar hasta 2,800,000,000 contraseñas por segundo en un equipo de escritorio estándar con un procesador de gráficos de gama alta.[10] Un dispositivo de este tipo puede descifrar una contraseña de 10 letras donde todas sean minúsculas o mayúsculas en un solo dia. Aún así el trabajo puede distribuirse entre varias computadoras para aumentar la velocidad proporcionalmente al número existente de computadoras con un GPU igual.

Aún con sus capacidades una computadora de escritorio es más lenta descifrando contraseñas que las maquinas construidas con este propósito. En 1998, el Electronic Frontier Foundation (FEP) construyó una cookie de contraseñas dedicada usando ASICs, en comparación con las CPU de propósito general. El EFF DES Cracker, descifró una contraseña DES de 56 bits en 56 horas, la maquina prueba mas de 90 mil millones de claves por segundo.[11] En 2010, el Georgia Tech Research Institute, desarrolló un método para usar GPGPU para descifrar contraseñas con una longitud mínima de 12 caracteres.[12] [13] [14]

Fácil de recordar, difícil de adivinar[editar]

Una contraseña que sea fácil de recordar es generalmente fácil de adivinar.[15] Las contraseñas que son difíciles de recordar pueden reducir la seguridad de un sistema, debido a que los usuarios podrían tener que escribir o electrónicamente almacenar la contraseña, los usuarios tendrán que hacer el restablecimiento de contraseñas con frecuencia y los usuarios tienen más probabilidades de volver a utilizar la misma contraseña. Los requisitos más estrictos para seguridad de las contraseñas es,"Tener una mezcla de letras y dígitos en mayúsculas y minúsculas" o "cambiar mensualmente".[16]


En "The Memorability and Security of Passwords"[17]  Jeff Yan et al. examina el efecto de darle consejos a los usuarios de como hacer una contraseña buena. Encontraron que usar contraseñas basadas en la primera letra de cada palabra de una frase es igual de fácil de recordar que una mala contraseña y al mismo tiempo tan difícil de descifrar como una generada aleatoriamente. Combinar palabras sin relación es otro buen método. Un algoritmo diseñado personalmente para generar contraseñas funciona también. En los últimos avances más gente ha notado los cambios en la forma en como se resguardan las contraseñas.

Aún así pedirle a los usuarios el recordar una contraseña de una "mezcla de mayúsculas y minúsculas" es casi lo mismo que pedirles el recordar una secuencia de bits: difícil de recordar y tan sólo poco más difícil de descifrar (por ejemplo 128 veces más difícil para una contraseña de 7 letras, menos si el usuario tan sólo pone en mayúscula una de las letras). Pedirles en cambio el que utilicen "números y letras" llevara comúnmente a sustituciones fáciles de adivinar como 'E' → '3' e 'I' → '1', las cuales los atacantes conocen muy bien. De la misma manera escribir la contraseña una linea del teclado más arriba es un truco común y conocido por los atacantes.

La investigación de abril 2015 por varios profesores en Carnegie Mellon University muestran que la estructura de las decisiones de contraseña de la gente sigue varios patrones conocidos. Como resultado una contraseña puede ser mucho más fácil de descifrar que lo que indicaría la probabilidad matemática. Por ejemplo contraseñas conteniendo un dígito lo incluyen desproporcionadamente al final de todo.[18]

Incidentes[editar]

El 16 de julio de 1998, el Centro de Coordinación CERT informó de un incidente en el que un atacante había encontrado 186.126 contraseñas encriptadas. En el momento en que fueron descubiertos, ya habían agrietado 47.642 contraseñas.[19]

En diciembre de 2009 ocurrió una grave violación de la contraseña RockYou.com que llevó a la liberación de 32 millones de contraseñas. El atacante filtró la lista completa de los 32 millones de contraseñas (sin ninguna otra información de identificación) a Internet. Las contraseñas se almacenan en texto claro en la base de datos y se extrajeron a través de una vulnerabilidad de inyección SQL. La Imperva Application Defense Center (ADC) hizo un análisis de la fuerza de las contraseñas.[20]

En junio de 2011, la OTAN (Organización del Tratado del Atlántico Norte) experimentó un fallo de seguridad que llevó a la publicación de los nombres y apellidos, nombres de usuario y contraseñas de más de 11.000 usuarios registrados de su librería electrónica. Los datos fueron filtrados como parte de la Operación AntiSec, un movimiento que incluye a Anonymous,  LulzSec, así como a otros hackers.[21]

Prevención[editar]

El mejor método para prevenir que alguien agriete las contraseñas es asegurar que los atacantes no puedan acceder hasta el hash de la contraseña. Por ejemplo, en el Unix sistema operativo, hash de contraseñas se almacenan inicialmente en un archivo de acceso público / etc / passwd. En Unix moderno (y similares) sistemas, por otro lado, se almacenan en el archivo / etc / shadow, que es accesible sólo por medio de los programas que se ejecutan con privilegios mejorados (es decir, los privilegios de "sistema") . Esto hace que sea más difícil para un usuario malicioso obtener las contraseñas con algoritmo hash en primera instancia. Desafortunadamente, muchos protocolos de red común transmiten las contraseñas en texto plano o utilizan esquemas de desafío/respuesta débiles.

Sistemas modernos de Unix han reemplazado su tradicional Data Encryption Standard. Función hash de contraseñas basado en Cripta (C) con métodos más fuertes como bcrypt y scrypt. Otros sistemas también han comenzado a adoptar estos métodos.

Muchos hashes utilizados para almacenar contraseñas, tales como MD5 y Secure Hash Algorithm, están diseñados para el cálculo rápido e implementación en hardware. Como resultado, son ineficaces en la prevención de agrietamiento contraseña, especialmente con métodos como Tabla de arco iris. El uso de algoritmos de estiramiento como PBKDF2, para formar los hashes de contraseñas puede reducir significativamente la velocidad a la que las contraseñas se pueden probar.

Software[editar]

Hay muchas herramientas de software para descifrar contraseñas, pero los más populares son Caín (software), John the Ripper, Hashcat, Hydra (software ), DaveGrohl (software) y ElcomSoft.

Enlaces externos[editar]