Descifrado de contraseña
# Descifrado de contraseña

En criptoanálisis y seguridad informática, el descifrado de contraseñas o password cracking 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.

El descifrado de contraseñas puede servir para 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 ser implementada como medida preventiva por los administradores del sistema para buscar contraseñas fácilmente manipulables.

## Tiempo necesario para descifrar contraseñas

El tiempo para descifrar una contraseña está relacionado con la fuerza de bits, 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, listas 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 más 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.

Las contraseñas también pueden ser descifradas utilizando programas computacionales, 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 del 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.

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 basadas en la GPU. Véase John the Ripper. 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 $2^{30,}$ que significa sólo un billón de permutaciones 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 descifrado, 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. 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. Un dispositivo de este tipo puede descifrar una contraseña de 10 letras donde todas sean minúsculas o mayúsculas en un solo día. Aun 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 máquinas construidas con este propósito. En 1998, la Electronic Frontier Foundation (EFF) 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 máquina prueba más de 90 mil millones de claves por segundo. 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.

## Fácil de recordar, difícil de adivinar

Una contraseña que sea fácil de recordar es generalmente fácil de adivinar. 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, hacer el restablecimiento de contraseñas con frecuencia y tener 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".

En "The Memorability and Security of Passwords" Jeff Yan et al. examina el efecto de darle consejos a los usuarios de como hacer una buena contraseña. 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.

Aun 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" llevará 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 línea del teclado más arriba es un truco común y conocido por los atacantes.

Las investigaciones de abril de 2015, efectuada por varios profesores en la Universidad Carnegie Mellon, 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.

## Incidentes

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 afectado 47.642 contraseñas.

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.

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 de las personas, 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.

## Prevención

El mejor método para prevenir que alguien descifre las contraseñas es asegurar que los hackers no puedan acceder hasta el hash de estas. Por ejemplo, en el sistema operativo Unix, el hash de las contraseñas se almacenan inicialmente en un archivo de acceso público / etc / password. Por otro lado, en Unix moderno (y similares) sistemas, se almacenan en el archivo / etc / shadow, que es accesible sólo a través de programas que tienen "privilegios" de sistema. Esto hace que sea más difícil para un usuario malicioso obtener las contraseñas con algoritmos hash. 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

Hay muchas herramientas de software para descifrar contraseñas, pero las más populares son Caín (software), John the Ripper, Hashcat, Hydra (software ), DaveGrohl (software) y ElcomSoft. Existen herramientas alternativas como Kon-Boot - es una utilidad que permite a los usuarios evitar las contraseñas de Microsoft Windows y Apple macOS.

