Aquí está la interfaz de un generador de contraseñas típico :
Preste atención al control deslizante Longitud: aquí puede cambiar la longitud de la contraseña de 8 a 100 caracteres, y en otras herramientas puede ser mucho más. ¿Cuál es el mejor valor para las contraseñas?
Una buena contraseña es todo lo que tienes cuando te piratean
Para entender qué es una buena contraseña, ¡veamos qué sucede en el campo del enemigo!
Cuando crea una cuenta, el servicio guarda su contraseña en uno de los numerosos formatos. El servicio puede poner la contraseña directamente en la base de datos (en texto plano) o generar un hash a partir de ella utilizando uno de los muchos algoritmos . Más popular:
- MD5
- SHA-1
- Bcrypt
- Scrypt
- Argón2
La ventaja de almacenar hashes en lugar de las contraseñas en sí es que no hay contraseñas en la base de datos . Y así es, porque solo necesita demostrar que conoce su contraseña, pero no importa. Cuando inicia sesión, la contraseña ingresada se codifica utilizando el mismo algoritmo, y si el resultado coincide con el valor registrado en la base de datos, entonces ha demostrado que conoce la contraseña. Y si la base de datos es pirateada, no será posible recuperar las contraseñas.
Almacenamiento de hashes.
Cracking de contraseña
El descifrado de contraseñas ocurre cuando un atacante intenta revertir una función hash y recuperar una contraseña del hash. Esto no es posible con un buen algoritmo hash. Pero nada impide que un atacante intente ingresar valores diferentes con la esperanza de obtener el mismo hash. Si se produce una coincidencia, la contraseña se ha recuperado del hash.
Descifrando una contraseña.
Y aquí es importante la elección de un buen algoritmo . SHA-1 se diseñó teniendo en cuenta el hash rápido, lo que facilita la vida de los atacantes. Bcrypt, Scrypt y Argon2 fueron diseñados con altos costos computacionales en mente para ralentizar el craqueo tanto como sea posible, especialmente en máquinas dedicadas. Y este es un aspecto muy importante.
Si usted se centra sólo en la velocidad, la contraseña SHA-1, lo cual es imposible de descifrar, de la siguiente manera:
0OVTrv62y2dLJahXjd4FVg81
.
Una contraseña segura que creó utilizando un ARGON2 correctamente configurado, es el siguiente:
Pa$$w0Rd1992
.
Como puede ver, elegir el algoritmo hash correcto convierte una contraseña débil en una irrompible.
Y no olvides esosolo depende de la implementación del servicio en el que se está registrando . Y no puede conocer la calidad de la implementación. Puedes preguntar, pero o no te responderán o darán de baja que "nos tomamos en serio la seguridad".
¿Crees que las empresas se toman la seguridad en serio y utilizan buenos algoritmos de hash? Eche un vistazo a la lista de bases de datos comprometidas, especialmente los hash utilizados en ellas. En muchos casos, se utilizó MD5, la mayoría de las veces SHA-1, y bcrypt se utilizó en algunos lugares. Algunas contraseñas almacenadas en texto sin formato . Esta es la realidad a considerar.
Además, solo sabemos qué hashes se utilizaron en las bases de datos comprometidas, y es muy probable que las empresas que utilizaron algoritmos débiles no pudieran proteger su infraestructura. Eche un vistazo a la lista, estoy seguro de que encontrará nombres familiares. El hecho de que una empresa parezca grande y respetable no significa que esté haciendo todo bien.
Tu eliges la contraseña
¿Qué puedes hacer como usuario? Si las contraseñas se almacenan en texto sin formato, no hay nada que hacer. Una vez que se roba la base de datos, la complejidad de su contraseña no importará.
Con algoritmos configurados correctamente, la complejidad de su contraseña tampoco es importante, puede ser
12345
o asdf
.
Sin embargo, en casos intermedios , especialmente cuando se usa SHA-1, la complejidad de la contraseña es importante . Las funciones de hash generalmente no están diseñadas para contraseñas, pero si utiliza una contraseña compleja, compensa las debilidades de los algoritmos.
Depende de la configuración. Estos algoritmos tienen varios componentes de seguridad y, si se configuran correctamente, pueden evitar la piratería.
Conclusión: con una contraseña segura, estás protegido de más ataques que con una contraseña débil. Y como no sabe qué tan seguro es el almacenamiento de contraseñas, no puede saber qué tan "suficientemente seguro" será el servicio. Así que asuma lo peor cuando su elección de contraseña aún sea importante.
La unicidad de la contraseña no es suficiente
Está bien, pero ¿por qué diablos pensarías en usar un administrador de contraseñas y generar una contraseña única para cada sitio? En este caso, usted es invulnerable al relleno de credenciales , cuando se verifica un par conocido de buzón y contraseña en diferentes servicios con la esperanza de que la persona haya utilizado estos datos en diferentes lugares. Esta es una amenaza grave porque la reutilización de contraseñas es una de las principales preocupaciones de seguridad. Estará protegido de esto generando una contraseña única para cada sitio.
Relleno de credenciales.
Y si la base de datos es robado y todo su contenido dado a conocer a los piratas informáticos, entonces ¿por qué todavía proteger su contraseña?
El hecho es que no sabe si la base de datos ha sido pirateada y continúa utilizando el servicio. Entonces los piratas informáticos tendrán acceso a toda su actividad futura en este sitio. Puede agregar los detalles de su tarjeta bancaria más tarde y ellos lo sabrán. Una contraseña segura significa que los piratas informáticos no podrán iniciar sesión con su cuenta y no podrán comprometer sus acciones futuras.
Usar el servicio después de piratear.
Cómo evaluar la seguridad de la contraseña usando entropía
La fuerza de una contraseña se caracteriza por la entropía, una representación numérica de la cantidad de aleatoriedad que contiene la contraseña. Como estamos hablando de números grandes,
1 099 511 627 776 (2^40)
es más fácil para nosotros decir "40 bits de entropía". Y dado que descifrar una contraseña es una enumeración de opciones, cuantas más haya, más tiempo necesitará dedicar a descifrar.
Para los caracteres aleatorios generados administrador de contraseñas, la entropía se calcula por la fórmula siguiente:
log2(< > ^ <>)
.
Está claro con la longitud, pero ¿cuál es la cantidad de caracteres diferentes? Depende de las clases de caracteres incluidas en la contraseña.
Por ejemplo, una contraseña de 10 letras mayúsculas y minúsculas al azar tiene un
log2(52 ^ 10) = 57
poco de entropía.
Para calcular la entropía específica (su cantidad en un símbolo de una clase determinada), puede usar la ecuación
log2(n ^ m) = m * log2(n)
. Obtenemos :, <> * log2(< >)
donde la segunda parte es la entropía específica. Recalculemos la tabla anterior usando esta fórmula:
Para calcular la fuerza de una contraseña, debe tomar las clases de caracteres que se incluyen en la contraseña, tomar los valores de entropía para estas clases y multiplicar por la longitud. Para el ejemplo anterior, obtuvimos una contraseña de 10 mayúsculas y minúsculas
5.7 * 10 = 57
. Pero si aumenta la longitud a 14, la entropía saltará a 79,8 bits. Y si deja 10 caracteres, pero agrega una clase de caracteres especiales, entonces la entropía total será de 64 bits.
La ecuación anterior le permite calcular rápidamente la entropía de la contraseña, pero hay una trampa. La fórmula es correcta solo si los símbolos son independientes entre sí . Esto solo se aplica a las contraseñas generadas. La combinación
H8QavhV2gu
satisface este criterio y tiene 57 bits de entropía.
Pero si usa contraseñas más fáciles de recordar como
Pa$$word11
, entonces su entropía será mucho menor con el mismo número de símbolos. El cracker no tiene que pasar por todas las combinaciones posibles, solo necesita revisar las palabras del diccionario con algunos cambios.
Por lo tanto, todos los cálculos con multiplicar la longitud por la entropía específica solo son válidos para las contraseñas generadas .
Guía de entropía
Mientras más entropía tenga una contraseña, más difícil será descifrarla. Pero, ¿cuánta entropía es suficiente? En general, alrededor de 16 caracteres estarán detrás de los ojos, esta contraseña tiene 95-102 bits de entropía, dependiendo de las clases de caracteres. ¿Cuál es el umbral mínimo? 80 bits? 60? ¿O son 102 bits demasiado pequeños?
Hay un algoritmo que compite con un algoritmo de hash malo en velocidad, pero está mucho mejor estudiado: este es AES.
Se utiliza en todas las organizaciones gubernamentales y militares, lo que significa que su durabilidad es suficiente. Y funciona rapido. Entonces, si una clave AES con una cierta cantidad de entropía no se puede descifrar, se beneficiará una contraseña con un hash incorrecto (pero no descifrado).
El Instituto Nacional de Estándares y Tecnología ha determinado los tamaños de clave que serán suficientes para el futuro previsible. Allírecomiendo usar AES-128 durante el período "2019-2030 y posteriores". Como su nombre lo indica, estamos hablando de 128 bits de entropía.
Otra recomendación recomienda hacer claves de al menos 112 bits de tamaño:
Para proporcionar fuerza criptográfica para las necesidades del gobierno federal, hoy se requieren al menos 112 bits (por ejemplo, para cifrar o firmar datos).
Para obtener 128 bits de entropía usando letras y números en mayúsculas y minúsculas, necesita una longitud de contraseña
22 ((5.95 * 22 = 131 )
.
Otras Consideraciones
¿Por qué no utilizar caracteres especiales? Intento no usarlos porque rompen los límites de la palabra. Es decir, se necesitan tres clics para seleccionar un carácter especial en lugar de dos, y esto puede llevar a un error si no inserto accidentalmente el resto de la contraseña en el campo.
Y si usa solo letras y números, con un doble clic, se resaltará toda la contraseña.
¿Qué pasa si hay una limitación de longitud? En algunos sitios, la contraseña no puede tener hasta 22 caracteres. A veces, las contraseñas solo pueden ser muy cortas, por ejemplo, no más de 5 dígitos. Entonces todo lo que queda es usar la contraseña el mayor tiempo posible.
También existen pautas para que los sitios trabajen con contraseñas, y la limitación de longitud contradice claramente estas pautas. Esto es lo que dice Instituto Nacional de Estándares y Tecnología:
Debe admitir contraseñas de hasta 64 caracteres como mínimo. Anime a los usuarios a crear secretos fáciles de recordar de cualquier longitud, utilizando cualquier carácter (incluidos los espacios) para ayudarlos a recordar.
Y recuerde, la protección con contraseña de los sitios varía de terrible a excelente, y no le dirán cuál es la situación real. Si la longitud máxima permitida de la contraseña es pequeña, entonces parece que dicho sitio está en el extremo malo de la escala.
Conclusión
Las contraseñas deben ser seguras, incluso si no usa las mismas combinaciones en diferentes lugares. La fuerza de una contraseña se mide por entropía y debe esforzarse por obtener un valor de 128 bits. Para ello, son suficientes contraseñas con una longitud de 22 caracteres, compuestas por letras mayúsculas y minúsculas y números.
Esto lo protegerá en caso de que el servicio se vea comprometido y se utilice un algoritmo de hash débil pero no comprometido.