En criptoanálisis y seguridad informática , descifrar contraseñas es el proceso de recuperar contraseñas [1] a partir de datos que han sido almacenados o transmitidos por un sistema informático en forma codificada. Un enfoque común ( ataque de fuerza bruta ) es intentar adivinar repetidamente la contraseña y compararlas con un hash criptográfico disponible de la contraseña. [2] Otro tipo de enfoque es la pulverización de contraseñas, que a menudo está automatizada y se produce lentamente con el tiempo para pasar desapercibida, utilizando una lista de contraseñas comunes. [3]
El propósito de descifrar contraseñas podría ser ayudar a un usuario a recuperar una contraseña olvidada (debido al hecho de que instalar una contraseña completamente nueva implicaría privilegios de administración del sistema), obtener acceso no autorizado a un sistema o actuar como medida preventiva mediante la cual el sistema Los administradores comprueban si hay contraseñas fáciles de descifrar. Archivo por archivo, el descifrado de contraseñas se utiliza para obtener acceso a pruebas digitales a las que un juez ha permitido el acceso, cuando los permisos de un archivo en particular están restringidos.
El tiempo para descifrar una contraseña está relacionado con la intensidad de los bits entropía de la contraseña , y los detalles de cómo se almacena la contraseña. La mayoría de los métodos para descifrar contraseñas requieren que la computadora produzca muchas contraseñas candidatas, cada una de las cuales se verifica. Un ejemplo es el cracking por fuerza bruta , en el que una computadora prueba todas las claves o contraseñas posibles hasta que tiene éxito. Con múltiples procesadores, este tiempo se puede optimizar buscando desde el último grupo posible de símbolos y desde el principio al mismo tiempo, colocando otros procesadores para buscar a través de una selección designada de posibles contraseñas. [4] Los métodos más comunes para descifrar contraseñas, como ataques de diccionario , verificación de patrones, sustitución de listas de palabras, etc., intentan reducir el número de pruebas necesarias y, por lo general, se intentarán antes que la fuerza bruta. Una mayor intensidad de bits de contraseña aumenta exponencialmente la cantidad de contraseñas candidatas que deben verificarse, en promedio, para recuperar la contraseña y reduce la probabilidad de que la contraseña se encuentre en cualquier diccionario de descifrado. [5]
La capacidad de descifrar contraseñas utilizando programas informáticos también depende del número de contraseñas posibles por segundo que se pueden comprobar. Si el atacante dispone de un hash de la contraseña de destino, este número puede ser de miles de millones o billones por segundo, ya que es posible un ataque fuera de línea . De lo contrario, la tasa depende de si el software de autenticación limita la frecuencia con la que se puede intentar una contraseña, ya sea mediante retrasos, CAPTCHA o bloqueos forzados después de una cierta cantidad de intentos fallidos. Otra situación en la que es posible adivinar rápidamente es cuando la contraseña se utiliza para formar una clave criptográfica . En tales casos, un atacante puede comprobar rápidamente si una contraseña adivinada decodifica correctamente los datos cifrados.
Para algunos tipos de hash de contraseñas, las computadoras de escritorio comunes pueden probar más de cien millones de contraseñas por segundo usando herramientas de descifrado de contraseñas que se ejecutan en una CPU de uso general y miles de millones de contraseñas por segundo usando herramientas de descifrado de contraseñas basadas en GPU [1] [6] [7 ] bcrypt , es mucho mejor que una función ingenua como MD5 o SHA simple . Según el NIST, una contraseña de ocho caracteres seleccionada por el usuario con números, mayúsculas y minúsculas y símbolos, con contraseñas seleccionadas comúnmente y otras coincidencias del diccionario filtradas, alcanza una fuerza estimada de 30 bits. 2 30 son solo mil millones de permutaciones [9] y se descifrarían en segundos si la función hash fuera ingenua. Cuando se combinan computadoras de escritorio comunes en un esfuerzo de descifrado, como se puede hacer con las botnets , las capacidades de descifrado de contraseñas se amplían considerablemente. En 2002, distribuido.net encontró con éxito una clave RC5 de 64 bits en cuatro años, en un esfuerzo que incluyó más de 300.000 computadoras diferentes en distintos momentos y que generó un promedio de más de 12 mil millones de claves por segundo. [10]
. [8] La tasa de adivinación de contraseñas depende en gran medida de la función criptográfica utilizada por el sistema para generar hashes de contraseñas. Una función de hash de contraseña adecuada, comoLas unidades de procesamiento de gráficos pueden acelerar el descifrado de contraseñas en un factor de 50 a 100 en comparación con las computadoras de uso general para algoritmos de hash específicos. A modo de ejemplo, en 2011, los productos comerciales disponibles afirmaban tener la capacidad de probar hasta 2.800.000.000 contraseñas NTLM por segundo en una computadora de escritorio estándar utilizando un procesador de gráficos de alta gama. [11] Un dispositivo de este tipo puede descifrar una contraseña de 10 letras en un solo día. El trabajo se puede distribuir entre muchas computadoras para obtener una aceleración adicional proporcional a la cantidad de computadoras disponibles con GPU comparables. Sin embargo, algunos algoritmos se ejecutan lentamente, o incluso están diseñados específicamente para ejecutarse lentamente, en GPU. Algunos ejemplos son DES , Triple DES , bcrypt , scrypt y Argon2 .
El surgimiento durante la última década [ ¿cuándo? ] de la aceleración de hardware en una GPU ha permitido utilizar recursos para aumentar la eficiencia y la velocidad de un ataque de fuerza bruta para la mayoría de los algoritmos hash. En 2012, Stricture Consulting Group presentó un clúster de 25 GPU que logró una velocidad de ataque de fuerza bruta de 350 mil millones de conjeturas por segundo, lo que les permitió verificar combinaciones de contraseñas en 5,5 horas. Utilizando ocl- Hashcat Plus en una plataforma de clúster Virtual OpenCL , [12] el clúster de GPU basado en Linux se utilizó para "descifrar el 90 por ciento de los 6,5 millones de hashes de contraseñas pertenecientes a los usuarios de LinkedIn". [13]
Para algunos algoritmos hash específicos, las CPU y las GPU no son una buena combinación. Se requiere hardware especialmente diseñado para funcionar a altas velocidades. Se puede fabricar hardware personalizado utilizando tecnología FPGA o ASIC . El desarrollo de ambas tecnologías es complejo y (muy) caro. En general, los FPGA son favorables en pequeñas cantidades, los ASIC son favorables en cantidades (muy) grandes, más eficientes energéticamente y más rápidos. En 1998, la Electronic Frontier Foundation (EFF) construyó un descifrador de contraseñas dedicado utilizando ASIC. Su máquina, Deep Crack , rompió una clave DES de 56 bits en 56 horas, probando más de 90 mil millones de claves por segundo. [14] En 2017, documentos filtrados mostraron que los ASIC se utilizaron para un proyecto militar que tenía el potencial de descifrar muchas partes de las comunicaciones de Internet con un cifrado más débil. [15] El diseño y la construcción de crackers de contraseñas basados en ASIC están a cargo de [ ¿quién? ] estar fuera del alcance de las organizaciones no gubernamentales. [ cita necesaria ] Desde 2019, John the Ripper admite el descifrado de contraseñas para un número limitado de algoritmos hash que utilizan FPGA. [16] Las empresas comerciales ahora están utilizando configuraciones basadas en FPGA para descifrar contraseñas. [17]
Las contraseñas que son difíciles de recordar reducirán la seguridad de un sistema porque
De manera similar, cuanto más estrictos sean los requisitos de seguridad de la contraseña, por ejemplo "tener una combinación de letras y dígitos mayúsculas y minúsculas" o "cambiarla mensualmente", mayor será el grado en que los usuarios subvertirán el sistema. [18]
En "La memorabilidad y seguridad de las contraseñas", [19] Jeff Yan et al. examinar el efecto de los consejos dados a los usuarios sobre una buena elección de contraseña. Descubrieron que las contraseñas basadas en pensar en una frase y tomar la primera letra de cada palabra son tan memorables como las contraseñas seleccionadas ingenuamente, y tan difíciles de descifrar como las contraseñas generadas aleatoriamente. Combinar dos palabras no relacionadas es otro buen método. Tener un " algoritmo " diseñado personalmente para generar contraseñas oscuras es otro buen método.
Sin embargo, pedir a los usuarios que recuerden una contraseña que consta de una "mezcla de caracteres en mayúsculas y minúsculas" es similar a pedirles que recuerden una secuencia de bits: difícil de recordar y sólo un poco más difícil de descifrar (por ejemplo, sólo 128 veces más difícil de descifrar). crack para contraseñas de 7 letras, menos si el usuario simplemente escribe en mayúscula una de las letras). Pedir a los usuarios que utilicen "tanto letras como dígitos" a menudo conducirá a sustituciones fáciles de adivinar, como 'E' → '3' y 'I' → '1': sustituciones que son bien conocidas por los atacantes. De manera similar, escribir la contraseña una fila más arriba en el teclado es un truco común conocido por los atacantes.
La investigación detallada en un artículo de abril de 2015 realizado por varios profesores de la Universidad Carnegie Mellon muestra que las elecciones de estructura de contraseñas de las personas a menudo siguen varios patrones conocidos. Por ejemplo, cuando los requisitos de contraseña requieren una longitud mínima larga, como 16 caracteres, las personas tienden a repetir caracteres o incluso palabras enteras dentro de sus contraseñas. [20] Como resultado, las contraseñas pueden descifrarse mucho más fácilmente de lo que indicarían sus probabilidades matemáticas. Las contraseñas que contienen un dígito, por ejemplo, lo incluyen de manera desproporcionada al final de la contraseña. [20]
El 16 de julio de 1998, CERT informó de un incidente en el que un atacante había encontrado 186.126 contraseñas cifradas. Cuando se descubrió la infracción, ya se habían descifrado 47.642 contraseñas. [21]
En diciembre de 2009, se produjo una importante violación de contraseña de Rockyou.com que provocó la liberación de 32 millones de contraseñas. Luego, el atacante filtró a Internet la lista completa de los 32 millones de contraseñas (sin otra información identificable). Las contraseñas se almacenaron en texto sin cifrar en la base de datos y se extrajeron mediante una vulnerabilidad de inyección SQL . El Centro de Defensa de Aplicaciones (ADC) de Imperva realizó un análisis sobre la seguridad de las contraseñas. [22] Algunas de las conclusiones clave fueron:
En junio de 2011, la OTAN (Organización del Tratado del Atlántico Norte) sufrió una brecha de seguridad que provocó la divulgación pública 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 se filtraron como parte de la Operación AntiSec , un movimiento que incluye a Anonymous , LulzSec y otros grupos e individuos de piratería. [24]
El 11 de julio de 2011, Anonymous pirateó sus servidores y los filtró el mismo día. "La filtración, denominada 'Lunes de fusión militar', incluye 90.000 inicios de sesión de personal militar, incluido personal de USCENTCOM , SOCOM , la Infantería de Marina , varias instalaciones de la Fuerza Aérea , Seguridad Nacional , personal del Departamento de Estado y lo que parecen contratistas del sector privado. " [25] Se descubrió que estas contraseñas filtradas estaban codificadas con SHA-1 sin sal y luego fueron analizadas por el equipo ADC de Imperva , revelando que incluso algunos miembros del personal militar usaban contraseñas tan débiles como "1234". [26]
El 18 de julio de 2011, Microsoft Hotmail prohibió la contraseña: "123456". [27]
En julio de 2015, un grupo que se hacía llamar "The Impact Team" robó los datos de usuario de Ashley Madison . [28] Muchas contraseñas fueron codificadas utilizando tanto el algoritmo bcrypt relativamente fuerte como el hash MD5 más débil . Atacar este último algoritmo permitió que el grupo de descifrado de contraseñas CynoSure Prime recuperara unos 11 millones de contraseñas en texto plano. [29]
Un método para evitar que se descifre una contraseña es garantizar que los atacantes no puedan acceder ni siquiera a la contraseña hash. Por ejemplo, en el sistema operativo Unix , las contraseñas hash se almacenaban originalmente en un archivo de acceso público . Por otro lado, en los sistemas Unix modernos (y similares), se almacenan en el archivo de contraseña oculta , al que sólo pueden acceder los programas que se ejecutan con privilegios mejorados (es decir, privilegios de "sistema"). Esto hace que sea más difícil para un usuario malintencionado obtener las contraseñas hash en primera instancia; sin embargo, se han robado muchas colecciones de hashes de contraseñas a pesar de dicha protección. Y algunos protocolos de red comunes transmiten contraseñas en texto sin cifrar o utilizan esquemas débiles de desafío/respuesta. [30] [31]/etc/passwd
/etc/shadow
Otro enfoque es combinar una clave secreta específica del sitio con el hash de la contraseña, lo que impide la recuperación de la contraseña en texto plano incluso si se roban los valores hash. Sin embargo, los ataques de escalada de privilegios que pueden robar archivos hash protegidos también pueden exponer el secreto del sitio. Un tercer enfoque consiste en utilizar funciones de derivación de claves que reduzcan la velocidad a la que se pueden adivinar las contraseñas. [32] : 5.1.1.2
Otra medida de protección es el uso de salt , un valor aleatorio único para cada contraseña que se incorpora en el hash. Salt evita que se ataquen múltiples hashes simultáneamente y también evita la creación de diccionarios precalculados, como tablas arcoíris .
Los sistemas Unix modernos han reemplazado la función hash de contraseña tradicional basada en DES crypt() con métodos más potentes como crypt-SHA , bcrypt y scrypt . [33] Otros sistemas también han comenzado a adoptar estos métodos. Por ejemplo, Cisco IOS usó originalmente un cifrado Vigenère reversible para cifrar contraseñas, pero ahora usa md5-crypt con un salt de 24 bits cuando se usa el comando "enable secret". [34] Estos métodos más nuevos utilizan valores de sal grandes que evitan que los atacantes realicen ataques fuera de línea de manera eficiente contra múltiples cuentas de usuario simultáneamente. Los algoritmos también son mucho más lentos de ejecutar, lo que aumenta drásticamente el tiempo necesario para montar un ataque fuera de línea exitoso. [35]
Muchos hashes utilizados para almacenar contraseñas, como MD5 y la familia SHA , están diseñados para un cálculo rápido con bajos requisitos de memoria y una implementación eficiente en hardware. Se pueden ejecutar varias instancias de estos algoritmos en paralelo en unidades de procesamiento de gráficos (GPU), lo que acelera el craqueo. Como resultado, los hashes rápidos son ineficaces para prevenir el descifrado de contraseñas, incluso con sal. Algunos algoritmos de extensión de claves , como PBKDF2 y crypt-SHA, calculan de forma iterativa los hashes de contraseñas y pueden reducir significativamente la velocidad a la que se pueden probar las contraseñas, si el recuento de iteraciones es lo suficientemente alto. Otros algoritmos, como scrypt, tienen memoria dura , lo que significa que requieren cantidades relativamente grandes de memoria además de cálculos que requieren mucho tiempo y, por lo tanto, son más difíciles de descifrar utilizando GPU y circuitos integrados personalizados.
En 2013, se anunció un concurso de hash de contraseñas a largo plazo para elegir un nuevo algoritmo estándar para el hash de contraseñas, [36] y Argon2 fue elegido ganador en 2015. El NIST recomienda otro algoritmo, Balloon . [37] Ambos algoritmos tienen poca memoria.
Soluciones como un token de seguridad brindan una respuesta de prueba formal al cambiar constantemente la contraseña. Esas soluciones reducen abruptamente el tiempo disponible para la fuerza bruta (el atacante necesita descifrar y usar la contraseña en un solo turno) y reducen el valor de las contraseñas robadas debido a su corta validez.
Existen muchas herramientas de software para descifrar contraseñas, pero las más populares [38] son Aircrack-ng , Cain & Abel , John the Ripper , Hashcat , Hydra , DaveGrohl y ElcomSoft . Muchos paquetes de software de asistencia en litigios también incluyen la función de descifrado de contraseñas. La mayoría de estos paquetes emplean una combinación de estrategias de craqueo; Los algoritmos con ataques de fuerza bruta y de diccionario resultaron ser los más productivos. [39]
La mayor disponibilidad de potencia informática y de software para descifrar contraseñas automatizado y fácil de usar para principiantes para una serie de esquemas de protección ha permitido que los script kiddies se dediquen a esta actividad . [40]
{{cite web}}
: Mantenimiento CS1: URL no apta ( enlace ){{cite journal}}
: Citar diario requiere |journal=
( ayuda ){{cite journal}}
: Citar diario requiere |journal=
( ayuda ){{cite journal}}
: Citar diario requiere |journal=
( ayuda )