Tienes razón, y esta es una gran molestia. De hecho, todo este asunto de las contraseñas de hash y la elección de las que son difíciles de descifrar mediante el hashing es una farsa completamente inútil, y constituye lo que Schneier llama "teatro de seguridad".
El hash de contraseñas es irrelevante, excepto en situaciones específicas: los protocolos de autenticación que comunican los hashes en claro (lo que no debería hacerse), y las bases de datos de contraseñas que almacenan los hashes de forma que sean legibles para todo el mundo, como el clásico /etc/passwd
(que ya no se hace).
En los viejos tiempos, si estaba en un sistema de Unix público con miles de usuarios, como una máquina o granja de máquinas, que proporcionaba cuentas de correo electrónico para estudiantes universitarios, las contraseñas deficientes se descifraban literalmente de izquierda a derecha. El archivo de contraseñas de dicho sistema era un gran imán para el craqueo, con grandes beneficios. Por supuesto, tal archivo de contraseña es completamente estúpido. Cualquier distribución de Linux decente en la actualidad pone hashes de contraseña en /etc/shadow
.
Entonces, el punto es que si un atacante tiene acceso a los hashes, el sistema en cuestión está mal diseñado (protocolos de autenticación de red de texto casi sencillo, bases de datos de contraseña de lectura pública) o se ha comprometido hasta el punto de que el conocimiento de su contraseña de texto simple ya no es relevante, ya que el atacante necesitaba privilegios de administrador para obtener el hash.
Aún así, los hashes proporcionan una pequeña capa de seguridad adicional. Y esa capa protege a aquellos que reutilizan contraseñas entre sitios . Si un sitio es "pwned", por lo que los atacantes poseen su contraseña hash, tiene problemas si usó la misma contraseña en otro lugar y esa contraseña es fácil de descifrar.
Irónicamente, es más probable que las personas reutilicen contraseñas muy difíciles en varios sitios, porque son difíciles de recordar. En segundo lugar, es probable que reutilicen la misma contraseña difícil. Introduciendo pequeñas variaciones en él. Por ejemplo, si la contraseña original se considera lo suficientemente segura como para que un sistema la acepte, solo la utilizarán en otro sistema, pero cambiarán un 1
a un 2
o 3
y así sucesivamente. Si los atacantes descifran la contraseña con un 1
, pueden adivinar fácilmente los demás.
Es mucho más fácil generar y memorizar contraseñas relativamente fáciles, de manera que no tienen ninguna relación entre ellas.
Aquí también hay otra cosa que las personas pasan por alto: los administradores del sitio no son tus amigos de confianza. Debes sospechar no solo de los atacantes externos, sino también de los internos. En cualquier sitio donde tenga una cuenta protegida con contraseña, podría haber un administrador malvado que recopile contraseñas de texto sin formato. Ni siquiera sabes si las contraseñas están hasheadas. Suponga que no están hash, y suponga que entre los administradores de cada sitio hay una persona maliciosa que recopila contraseñas. Incluso si sabe que el software del sitio utiliza una base de datos de contraseñas hash, no puede asumir que el código no haya ha sido modificado. La propia IU de Javascript (o lo que sea) maneja las contraseñas de forma clara.
Ah, y si no ves "HTTPS" en la barra del navegador, ¡todas las apuestas están desactivadas! Alguien está recogiendo su contraseña de 32 caracteres generada de forma aleatoria, claro.
Una contraseña solo debe ser lo suficientemente difícil como para que no se pueda adivinar en varios intentos ingenuos (intento de entrada a través del mecanismo de autenticación normal). Cualquier sitio implementado de forma decente implementa la importante medida de seguridad de bloquear una cuenta que se ha adivinado demasiadas veces, de modo que el usuario legítimo tenga que tomar medidas adicionales para desbloquearla.
Si no puede adivinar su contraseña en media docena de intentos, y puede generar y recordar contraseñas completamente diferentes de este tipo para cada sitio, básicamente estará bien.
La IU de creación de contraseña que obliga a los usuarios a inventar contraseñas complicadas es molesta, contraproducente y no se basa en ningún principio de seguridad concebido racionalmente ni en la identificación correcta de posibles amenazas.