La seguridad de la contraseña es una medida de la efectividad de una contraseña contra ataques de adivinación o de fuerza bruta. En su forma habitual, estima cuántas pruebas necesitaría un atacante que no tiene acceso directo a la contraseña, en promedio, para adivinarla correctamente. La seguridad de una contraseña depende de la longitud, la complejidad y la imprevisibilidad.
thumb|400px|Menú de opciones de la herramienta de generación de contraseñas aleatorias en KeePass. Habilitar más subconjuntos de caracteres aumenta un poco la seguridad de las contraseñas generadas, mientras que al aumentar su longitud, aumenta la seguridad en gran medida.
El uso de contraseñas seguras reduce el riesgo general de una infracción de seguridad, pero las contraseñas seguras no reemplazan la necesidad de otros controles de seguridad eficaces. La efectividad de una contraseña de una seguridad determinada está fuertemente determinada por el diseño y la implementación de los factores (conocimiento, propiedad, inherencia). El primer factor es el foco principal de este artículo.
La velocidad a la que un atacante puede enviar contraseñas adivinadas al sistema es un factor clave para determinar la seguridad del sistema. Algunos sistemas imponen un tiempo de espera de varios segundos después de un pequeño número (por ejemplo, tres) de intentos fallidos de introducción de contraseña. En ausencia de otras vulnerabilidades, dichos sistemas se pueden proteger de manera efectiva con contraseñas relativamente simples. Sin embargo, el sistema debe almacenar información sobre las contraseñas del usuario de alguna forma y si esa información es robada, digamos al violar la seguridad del sistema, las contraseñas del usuario pueden estar en riesgo.
En 2019, el NCSC del Reino Unido analizó bases de datos públicas de cuentas violadas para ver qué palabras, frases y cadenas de caracteres usaba la gente. El primero de la lista fue 123456, que aparece en más de 23 millones de contraseñas. La segunda cadena más popular, 123456789, no fue mucho más difícil de descifrar, mientras que las cinco primeras incluían "qwerty", "contraseña" y 1111111.
Creación de contraseña Las contraseñas se crean de forma automática (utilizando equipo de aleatorización) o por un humano; el último caso es más común. Si bien la seguridad de las contraseñas elegidas al azar contra un ataque de fuerza bruta se puede calcular con precisión, determinar la seguridad de las contraseñas generadas por humanos es un desafío.
Normalmente, a los seres humanos se les pide que elijan una contraseña, a veces guiados por sugerencias o restringidos por un conjunto de reglas, al crear una nueva cuenta para un sistema informático o un sitio web de Internet. Solo son posibles estimaciones aproximadas de la fuerza, ya que los humanos tienden a seguir patrones en tales tareas, y esos patrones generalmente pueden ayudar a un atacante. Además, las listas de contraseñas comúnmente elegidas están ampliamente disponibles para que las utilicen los programas de adivinación de contraseñas. Dichas listas incluyen los numerosos diccionarios en línea para varios lenguajes humanos, bases de datos violadas de texto sin formato y contraseñas hash de varias cuentas comerciales y sociales en línea, junto con otras contraseñas comunes. Todos los elementos de dichas listas se consideran débiles, al igual que las contraseñas que son simples modificaciones de ellos.
Aunque actualmente están disponibles programas de generación de contraseñas aleatorias que están pensados para ser fáciles de usar, todavía suelen generar contraseñas aleatorias y difíciles de recordar, lo que a menudo hace que las personas elijan implementar las suyas propias. Sin embargo, esto es intrínsecamente inseguro porque los estilos de vida, las preferencias de entretenimiento y otras cualidades individualistas clave de la persona entran en juego para influir en la elección de la contraseña, mientras que la prevalencia de las redes sociales en línea ha hecho que obtener información sobre las personas sea mucho más fácil.
Validación de adivinar la contraseña Los sistemas que usan contraseñas para la autenticación deben tener alguna forma de verificar cualquier contraseña ingresada para obtener acceso. Si las contraseñas válidas simplemente se almacenan en un archivo del sistema o en una base de datos, un atacante que obtenga suficiente acceso al sistema obtendrá todas las contraseñas de usuario, lo que le dará al atacante acceso a todas las cuentas del sistema atacado y posiblemente a otros sistemas donde los usuarios emplean las mismas, o contraseñas similares. Una forma de reducir este riesgo es almacenar solo un hash criptográfico de cada contraseña en lugar de la contraseña en sí. Los hash criptográficos estándar, como la serie Secure Hash Algorithm (SHA), son muy difíciles de revertir, por lo que un atacante que se apodera del valor hash no puede recuperar directamente la contraseña. Sin embargo, el conocimiento del valor hash permite al atacante probar rápidamente las conjeturas sin conexión. Los programas de descifrado de contraseña están ampliamente disponibles y probarán una gran cantidad de contraseñas de prueba contra un hash criptográfico robado.
Las mejoras en la tecnología informática siguen aumentando la velocidad a la que se pueden probar las contraseñas adivinadas. Por ejemplo, en 2010, el Georgia Tech Research Institute desarrolló un método para usar GPGPU para descifrar contraseñas mucho más rápido. Elcomsoft inventó el uso de tarjetas gráficas comunes para una recuperación más rápida de la contraseña en agosto de 2007 y pronto presentó la patente correspondiente en los Estados Unidos.US patent 7929707, Andrey V. Belenko, "Use of graphics processors as parallel math co-processors for password recovery", issued 2011-04-19, assigned to Elcomsoft Co. Ltd. En 2011, había productos comerciales disponibles que afirmaban tener la capacidad de probar hasta 112000 contraseñas por segundo en una computadora de escritorio estándar, utilizando un procesador de gráficos de alta gama para ese momento.Elcomsoft.com , ElcomSoft Password Recovery Speed table, NTLM passwords, Nvidia Tesla S1070 GPU, accessed 2011-02-01 Un dispositivo de este tipo descifrará una contraseña de 6 letras en mayúsculas o minúsculas en un día. Tenga en cuenta que el trabajo se puede distribuir en muchas computadoras para una aceleración adicional proporcional a la cantidad de computadoras disponibles con GPU comparables. Hay disponibles hashes especiales de estiramiento de teclas que tardan un tiempo relativamente largo en calcularse, lo que reduce la velocidad a la que se pueden adivinar. Aunque se considera una buena práctica utilizar el estiramiento de claves, muchos sistemas comunes no lo hacen.
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. Por ejemplo, un producto comercial afirma probar 103000 contraseñas WPA PSK por segundo.Elcomsoft Wireless Security Auditor, HD5970 GPU accessed 2011-02-11
Si un sistema de contraseñas solo almacena el hash de la contraseña, un atacante puede calcular previamente los valores hash para las variantes de contraseñas comunes y para todas las contraseñas más cortas que una cierta longitud, lo que permite una recuperación muy rápida de la contraseña una vez que se obtiene su hash. Las listas muy largas de hashes de contraseñas precalculadas se pueden almacenar de manera eficiente utilizando tablas de arco iris. Este método de ataque puede frustrarse almacenando un valor aleatorio, llamado sal criptográfica, junto con el hash. La sal se combina con la contraseña al calcular el hash, por lo que un atacante que precalcule una tabla de arco iris tendría que almacenar para cada contraseña su hash con todos los valores de sal posibles. Esto se vuelve inviable si la sal tiene un rango lo suficientemente grande, digamos un número de 32 bits. Desafortunadamente, muchos sistemas de autenticación de uso común no emplean sales y las tablas de arco iris están disponibles en Internet para varios de estos sistemas.
La entropía como medida de la fuerza de la contraseña Es habitual en la industria informática especificar la seguridad de la contraseña en términos de entropía de la información, que se mide en bits y es un concepto de la teoría de la información. En lugar de la cantidad de conjeturas necesarias para encontrar la contraseña con certeza, se proporciona el logaritmo en base 2 de ese número, que comúnmente se conoce como la cantidad de "bits de entropía" en una contraseña, aunque esta no es exactamente la misma cantidad. como entropía de información. Una contraseña con una entropía de 42 bits calculada de esta manera sería tan fuerte como una cadena de 42 bits elegida al azar, por ejemplo, mediante un lanzamiento de moneda justo. Dicho de otra manera, una contraseña con una entropía de 42 bits requeriría 242 (4,398,046,511,104) intentos para agotar todas las posibilidades durante una búsqueda de fuerza bruta. Por lo tanto, al aumentar la entropía de la contraseña en un bit, el número de conjeturas requeridas se duplica, lo que hace que la tarea del atacante sea dos veces más difícil. En promedio, un atacante tendrá que probar la mitad del número posible de contraseñas antes de encontrar la correcta.
Contraseñas aleatorias
Las contraseñas aleatorias consisten en una cadena de símbolos de longitud especificada tomados de algún conjunto de símbolos mediante un proceso de selección aleatoria en el que cada símbolo tiene la misma probabilidad de ser seleccionado. Los símbolos pueden ser caracteres individuales de un conjunto de caracteres (por ejemplo, el conjunto de caracteres ASCII), sílabas diseñadas para formar contraseñas pronunciables o incluso palabras de una lista de palabras (formando así una frase de contraseña).
La fuerza de las contraseñas aleatorias depende de la entropía real del generador de números subyacente; sin embargo, estos a menudo no son verdaderamente aleatorios, sino pseudoaleatorios. Muchos generadores de contraseñas disponibles públicamente utilizan generadores de números aleatorios que se encuentran en bibliotecas de programación que ofrecen entropía limitada. Sin embargo, la mayoría de los sistemas operativos modernos ofrecen generadores de números aleatorios criptográficamente fuertes que son adecuados para la generación de contraseñas. También es posible utilizar dados ordinarios para generar contraseñas aleatorias. Los programas de contraseñas aleatorias a menudo tienen la capacidad de garantizar que la contraseña resultante cumpla con una política de contraseñas local; por ejemplo, produciendo siempre una combinación de letras, números y caracteres especiales.
Para las contraseñas generadas por un proceso que selecciona aleatoriamente una cadena de símbolos de longitud, L, de un conjunto de N símbolos posibles, el número de contraseñas posibles se puede encontrar elevando el número de símbolos a la potencia L, es decir, NL. El aumento de L o N fortalecerá la contraseña generada. La fuerza de una contraseña aleatoria medida por la entropía de la información es solo el logaritmo en base 2 o log2 del número de contraseñas posibles, asumiendo que cada símbolo de la contraseña se produce de forma independiente. Por lo tanto, la entropía de información de una contraseña aleatoria, H, viene dada por la fórmula:
donde N es el número de símbolos posibles y L es el número de símbolos en la contraseña. H se mide en bits.Schneier, B: Applied Cryptography, 2e, page 233 ff. John Wiley and Sons. En la última expresión, log puede tener cualquier base.
{| class="wikitable" style="text-align: right;" |+ Entropía por símbolo para diferentes conjuntos de símbolos ! Conjunto de símbolos || Número de símbolos N || Entropía por símbolo H |-