En criptoanálisis y seguridad informática , el descifrado de contraseñas es el proceso de adivinar contraseñas [1] para proteger un sistema informático . Un método común ( ataque de fuerza bruta ) consiste en intentar adivinar repetidamente la contraseña y compararlas con un hash criptográfico disponible de la contraseña. [2] Otro tipo de método es la pulverización de contraseñas , que suele ser automática y se produce lentamente a lo largo del tiempo para pasar desapercibida, utilizando una lista de contraseñas comunes. [3]
El propósito del descifrado de contraseñas puede 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 una medida preventiva mediante la cual los administradores del sistema verifican contraseñas fáciles de descifrar. Archivo por archivo, el descifrado de contraseñas se utiliza para obtener acceso a evidencia digital a la que un juez ha permitido el acceso, cuando los permisos de un archivo en particular están restringidos.
El tiempo necesario para descifrar una contraseña está relacionado con la fuerza de bits, que es una medida de la entropía de la contraseña , y los detalles de cómo se almacena la contraseña. La mayoría de los métodos de descifrado de contraseñas requieren que la computadora produzca muchas contraseñas candidatas, cada una de las cuales se verifica. Un ejemplo es el descifrado por fuerza bruta , en el que una computadora prueba cada clave o contraseña posible hasta que tiene éxito. Con múltiples procesadores, este tiempo se puede optimizar mediante la búsqueda desde el último grupo posible de símbolos y el principio al mismo tiempo, con otros procesadores que se colocan para buscar a través de una selección designada de posibles contraseñas. [4] Los métodos más comunes de descifrado de contraseñas, como los ataques de diccionario , la verificación de patrones y las variaciones de palabras comunes, tienen como objetivo optimizar el número de conjeturas y generalmente se intentan antes de los ataques de fuerza bruta. Una mayor fuerza de bits de contraseña aumenta exponencialmente el número 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 mediante programas informáticos también depende de la cantidad de contraseñas posibles por segundo que se puedan comprobar. Si el atacante dispone de un hash de la contraseña de destino, esta cantidad puede ser de miles de millones o billones por segundo, ya que es posible un ataque fuera de línea . Si no es así, la tasa depende de si el software de autenticación limita la frecuencia con la que se puede probar una contraseña, ya sea mediante retrasos de tiempo, 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 verificar rápidamente si una contraseña adivinada decodifica con éxito los datos cifrados.
Para algunos tipos de hashes 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 propósito 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 muchos órdenes de magnitud mejor que una función ingenua como MD5 o SHA simples . 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 de diccionario filtradas, alcanza una fuerza estimada de 30 bits, según NIST. 2 30 es solo mil millones de permutaciones [9] y se descifraría en segundos si la función de hash fuera ingenua. Cuando las computadoras de escritorio comunes se combinan en un esfuerzo de descifrado, como se puede hacer con botnets , las capacidades de descifrado de contraseñas se extienden considerablemente. En 2002, distributed.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 varios 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ñas adecuada, comoLas unidades de procesamiento gráfico pueden acelerar el descifrado de contraseñas en un factor de 50 a 100 con respecto a las computadoras de propósito general para algoritmos de hash específicos. Como ejemplo, en 2011, los productos comerciales disponibles afirmaban tener la capacidad de probar hasta 2.800.000.000 de contraseñas NTLM por segundo en una computadora de escritorio estándar utilizando un procesador gráfico de alta gama. [11] Un dispositivo de este tipo puede descifrar una contraseña de 10 letras con mayúsculas y minúsculas en un día. El trabajo se puede distribuir entre muchas computadoras para 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 .
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 de hash. En 2012, Stricture Consulting Group presentó un clúster de 25 GPU que alcanzó una velocidad de ataque de fuerza bruta de 350 mil millones de intentos de contraseñas NTLM por segundo, lo que les permitió verificar combinaciones de contraseñas en 5,5 horas, lo suficiente para descifrar todas las contraseñas alfanuméricas de 8 caracteres especiales que se usan comúnmente en entornos empresariales. Utilizando ocl- Hashcat Plus en una plataforma de clúster OpenCL virtual , [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 usuarios de LinkedIn". [13]
Para algunos algoritmos de hash específicos, las CPU y las GPU no son una buena combinación. Se requiere hardware diseñado específicamente 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) costoso. En general, los FPGA son favorables en pequeñas cantidades, los ASIC son favorables en cantidades (muy) grandes, son 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 , descifró 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 usaban para un proyecto militar que tenía el potencial de descifrar códigos en muchas partes de las comunicaciones de Internet con un cifrado más débil. [15] Desde 2019, John the Ripper admite el descifrado de contraseñas para un número limitado de algoritmos de hash utilizando FPGA. [16] Las empresas comerciales ahora utilizan 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 fortaleza de la contraseña, por ejemplo, "tener una combinación de letras mayúsculas y minúsculas y dígitos" 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. examinan el efecto de los consejos que se dan a los usuarios sobre la elección adecuada de contraseñas. 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 elegidas 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 poco claras es otro buen método.
Sin embargo, pedir a los usuarios que recuerden una contraseña que consiste en 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 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 dará lugar a sustituciones fáciles de adivinar, como 'E' → '3' e '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 que conocen los atacantes.
Una investigación detallada en un artículo de abril de 2015 elaborado por varios profesores de la Universidad Carnegie Mellon muestra que las opciones de estructura de contraseñas de las personas suelen seguir varios patrones conocidos. Por ejemplo, cuando los requisitos de contraseñas exigen una longitud mínima larga, como 16 caracteres, las personas tienden a repetir caracteres o incluso palabras enteras en sus contraseñas. [20] Como resultado, las contraseñas pueden descifrarse con mucha más facilidad de lo que sus probabilidades matemáticas indicarían. Las contraseñas que contienen un dígito, por ejemplo, lo incluyen desproporcionadamente al final de la contraseña. [20]
El 16 de julio de 1998, el CERT informó de un incidente en el que un atacante había encontrado 186.126 contraseñas cifradas. Cuando se descubrió la brecha, ya se habían descifrado 47.642 contraseñas. [21]
En diciembre de 2009, se produjo una importante filtración de contraseñas en Rockyou.com que dio lugar a la divulgación de 32 millones de contraseñas. El atacante filtró entonces la lista completa de las 32 millones de contraseñas (sin ninguna otra información identificable) a Internet. Las contraseñas se almacenaron en texto sin formato 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 solidez de las contraseñas. [22] Algunos de los hallazgos clave fueron:
En junio de 2011, la OTAN (Organización del Tratado del Atlántico Norte) sufrió una brecha de seguridad que llevó a la divulgación pública de 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 piratas informáticos. [23]
El 11 de julio de 2011, los servidores de Booz Allen Hamilton , una gran empresa de consultoría estadounidense que realiza una cantidad sustancial de trabajo para el Pentágono , fueron hackeados por Anonymous y se filtraron datos el mismo día. "La filtración, denominada 'Military Meltdown Monday', incluye 90.000 inicios de sesión de personal militar, incluido personal de USCENTCOM , SOCOM , el Cuerpo de Marines , varias instalaciones de la Fuerza Aérea , Seguridad Nacional , personal del Departamento de Estado y lo que parecen ser contratistas del sector privado". [24] Se descubrió que estas contraseñas filtradas estaban codificadas con SHA-1 sin sal , y luego fueron analizadas por el equipo ADC en Imperva , revelando que incluso algunos militares usaban contraseñas tan débiles como "1234". [25]
El 18 de julio de 2011, Microsoft Hotmail prohibió la contraseña: "123456". [26]
En julio de 2015, un grupo autodenominado "The Impact Team" robó los datos de los usuarios de Ashley Madison . [27] Muchas contraseñas fueron cifradas utilizando tanto el algoritmo bcrypt relativamente fuerte como el hash MD5 más débil . El ataque a este último algoritmo permitió que el grupo de descifrado de contraseñas CynoSure Prime recuperara unos 11 millones de contraseñas en texto plano. [28]
Un método para evitar que se descifre una contraseña es asegurarse de que los atacantes no puedan acceder ni siquiera a la contraseña en hash. Por ejemplo, en el sistema operativo Unix , las contraseñas en hash se almacenaban originalmente en un archivo de acceso público . En los sistemas Unix (y similares) modernos, por otro lado, se almacenan en el archivo de contraseñas shadow , al que solo pueden acceder 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 en hash en primera instancia, sin embargo, muchas colecciones de hashes de contraseñas han sido robadas a pesar de dicha protección. Y algunos protocolos de red comunes transmiten contraseñas en texto sin formato o utilizan esquemas de desafío/respuesta débiles. [29] [30]/etc/passwd
/etc/shadow
El uso de salt , un valor aleatorio único para cada contraseña que se incorpora en el hash, evita que se ataquen múltiples hashes simultáneamente y también evita la creación de diccionarios precalculados como las tablas arco iris .
Otro enfoque consiste en 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 simple 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 reducen la tasa a la que se pueden adivinar las contraseñas. [31] : 5.1.1.2
Los sistemas Unix modernos han reemplazado la función de hash de contraseñas crypt() basada en DES por métodos más potentes como crypt-SHA , bcrypt y scrypt . [32] Otros sistemas también han comenzado a adoptar estos métodos. Por ejemplo, el IOS de Cisco originalmente usaba un cifrado Vigenère reversible para cifrar contraseñas, pero ahora usa md5-crypt con una sal de 24 bits cuando se usa el comando "enable secret". [33] Estos métodos más nuevos usan 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. [34]
Muchos algoritmos hash utilizados para almacenar contraseñas, como MD5 y la familia SHA , están diseñados para un cálculo rápido con requisitos de memoria bajos y una implementación eficiente en hardware. Se pueden ejecutar múltiples instancias de estos algoritmos en paralelo en unidades de procesamiento gráfico (GPU), lo que acelera el descifrado. Como resultado, los algoritmos hash rápidos son ineficaces para evitar el descifrado de contraseñas, incluso con sal. Algunos algoritmos de estiramiento de claves , como PBKDF2 y crypt-SHA, calculan hashes de contraseñas de forma iterativa 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 , consumen mucha memoria , lo que significa que requieren cantidades relativamente grandes de memoria además de un cálculo que consume mucho tiempo y, por lo tanto, son más difíciles de descifrar utilizando GPU y circuitos integrados personalizados.
En 2013 se anunció una competencia de hash de contraseñas a largo plazo para elegir un nuevo algoritmo estándar para el hash de contraseñas, [35] y Argon2 fue elegido ganador en 2015. Otro algoritmo, Balloon , es recomendado por NIST . [36] Ambos algoritmos consumen mucha memoria.
Las soluciones como un token de seguridad ofrecen una respuesta de prueba formal [ aclaración necesaria ] 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 cambio) y reducen el valor de las contraseñas robadas debido a su breve validez.
Existen muchas herramientas de software para descifrar contraseñas, pero las más populares [37] son Aircrack-ng , Cain & Abel , John the Ripper , Hashcat , Hydra , DaveGrohl y ElcomSoft . Muchos paquetes de software de apoyo a 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 descifrado; los algoritmos con ataques de fuerza bruta y de diccionario han demostrado ser los más productivos. [38]
La mayor disponibilidad de potencia informática y de software de descifrado automático de contraseñas apto para principiantes para una serie de esquemas de protección ha permitido que la actividad sea adoptada por script kiddies . [39]
{{cite web}}
: CS1 maint: URL no apta ( enlace ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda )