Hola usuario de nuestra página web, descubrimos la solución a tu pregunta, deslízate y la encontrarás un poco más abajo.
Solución:
Si su sistema utiliza un hash criptográfico para almacenar contraseñas, es decir, MD5, SHA1, etc., entonces no hay límite para la longitud de la contraseña en sí, ya que estos hash se pueden crear con cualquier cantidad de datos. Se puede crear un hash MD5 o SHA1 para un disco duro completo y esto se hace comúnmente con fines forenses porque si incluso un bit se cambia ligeramente, entonces tiene un hash muy diferente y, por lo tanto, puede verificar que los datos hayan cambiado. Esto significa que puede usar exactamente estos mismos algoritmos para probar si los datos han sido alterados. Linux (al menos el actual Linux) usa estas mismas funciones hash. Le pedirá una contraseña y luego creará un hash criptográfico de la contraseña que proporcionó y verá si este hash coincide con la contraseña almacenada. Esto también significa que sus contraseñas no se almacenan en texto sin formato y la única forma de recuperar una contraseña perdida es ejecutar una prueba de fuerza bruta que genera hash de contraseña tras hash de contraseña hasta que encuentra uno que coincida con el hash actual y luego tiene su contraseña.
Hay una pequeña desventaja en el uso de estos hash, que es que un hash tiene un tamaño finito, por ejemplo, un hash MD5 es de 128 bits. Esto significa que un hash MD5 solo tiene 2^128
o 340,282,366,920,938,463,463,374,607,431,768,211,456
posibles combinaciones. Ahora bien, si bien ese es un número grande, lo que esto significa es que puede tener lo que ellos llaman una colisión hash en la que tiene dos elementos diferentes o keys que producen el mismo hash. En teoría, cuanto mayor sea el key tamaño, la probabilidad más baja de una colisión y el tiempo que debería tomar la fuerza bruta de una contraseña, pero eso está evaluando estrictamente la entropía y cuánto tiempo durará PUEDEN tomar, pero también existe la posibilidad de que la primera entrada que intenten sea la que coincida incluso si se trata de una colisión hash. En términos generales, está más seguro usando un hash que tiene un mayor key tamaño porque, supongamos que es MD5, las probabilidades de que la primera contraseña coincida fuera de 340,282,366,920,938,463,463,374,607,431,768,211,456
posibles coincidencias es extremadamente improbable. También elija una buena contraseña porque muchos crackers intentarán usar listas de palabras, listas de nombres y mutaciones de estas listas (es decir, si la palabra es “pez”, intentarán fish1234
, [email protected]#$
etc.) antes de que confíen en la fuerza bruta de una contraseña.
La forma en que puede saber si su sistema utiliza hashes criptográficos para almacenar contraseñas es echar un vistazo a la /etc/shadow
archivo (suponiendo que tenga acceso de root). Cada línea tiene el formato user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved
. El campo de contraseña puede comenzar con $num$
(es decir, un hash md5 en el campo de contraseña parece $1$01234567$b5lh2mHyD2PdJjFfALlEz1
donde comienza con $1$
). Si comienza con esto, significa que su sistema está usando un hash criptográfico. El formato del campo de contraseña en todos los sistemas modernos es $id$salt$hash
. La identificación especifica qué tipo de hash criptográfico está utilizando. La sal se genera aleatoriamente. string que está concatenado con el key (contraseña de texto sin formato) para protegerse contra tablas precalculadas de hashes conocidos. El hash es el hash criptográfico creado a partir de la sal y key/contraseña. Si su campo de contraseña comienza con $num$
entonces estás usando hashes criptográficos.
Así que ya sabes, los números significan esto:
$1$
significa que estás usando MD5$2$
o$2a$
significa que estás usando pez globo$5$
significa que estás usando SHA-256$6$
significa que estás usando SHA-512
SHA-512 es el mejor hash disponible para usar que ofrece glibc. No sé qué tan fuerte es el pez globo, pero no es parte de glibc y, por lo tanto, solo está disponible en ciertas distribuciones que lo han agregado. SHA-512 produce 512 bits keys o 2 ^ 512 combinaciones posibles antes de que se pueda esperar una colisión y con una contraseña lo suficientemente compleja, un grupo de computadoras tardaría mucho, mucho tiempo en encontrar la contraseña real o una colisión en el hash.
Además, si tiene un hash que no comienza con $num$
entonces está usando DES y eso está limitado a una longitud de 8 caracteres. Creo que los sistemas más antiguos que usan DES, o al menos algunos de ellos, tomarán una contraseña de cualquier tamaño pero solo usarán los primeros 8 caracteres. Esto significa que si configura su contraseña en mybigbigapple
y alguien usa la contraseña mybigbigcity
entonces se les permitirá entrar porque DES solo usará mybigbig
y cualquier cosa después de eso se descarta.
Entonces, Ubuntu a partir de la versión 8.04, que se lanzó en abril de 2008, usaba hashes MD5. Ubuntu de 8.10, que se lanzó en octubre de 2008, y todas las versiones desde entonces usan hashes SHA-512. No sé cuánto antes de abril de 2008, pero creo que durante varios años, si no más, la mayoría de las distribuciones utilizaron hashes.
Las versiones actuales 12.04 y 14.04 LTS (versiones de soporte a largo plazo) de Ubuntu parecen usar SHA-512 de forma predeterminada, como se puede ver con el $6$
antepuesto al hash en el archivo / etc / shadow:
catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]
Ahora la longitud del key o la contraseña permitida para cualquier algoritmo de hash no es lo único que determina el tamaño de la contraseña que se le permite tener. El otro elemento de interés es cómo está escrito el programa y qué duración admitirá el programa. Todos los programas modernos de passwd y probablemente la mayoría de los crypt(3)
función en Linux. crypt durante mucho tiempo (ya que al menos se usó MD5 y probablemente antes de eso) ha permitido punteros de caracteres para la key. Esto significa que el único límite sobre la duración de un key que aceptará se basa en la cantidad de RAM que el programa tiene disponible, pero con toda probabilidad, esto probablemente sea mucho más largo que cualquier contraseña que cualquier persona pueda recordar (¿millones de caracteres?).
Esto debería responder a su pregunta sobre la duración de una contraseña. Espero haber ayudado.
Referencias:
-
página de manual de crypt (3) (Ubuntu 14.04)
-
Página de manual de SHADOW (5) (Ubuntu 14.04)
-
en.wikipedia.org/wiki/Crypt_(Unix)
-
en.wikipedia.org/wiki/Password_strength
-
en.wikipedia.org/wiki/Md5
-
en.wikipedia.org/wiki/Blowfish_(cipher)
-
en.wikipedia.org/wiki/SHA-1
Depende del módulo de autenticación que se utilice. En los sistemas Linux modernos, no existe un límite máximo en la longitud de la contraseña. Algunos sistemas obsoletos pueden tener límites impuestos por su sistema de almacenamiento de contraseñas; los máximos populares parecen ser 8, 40 y 255.
Dependiendo de cómo se almacene la contraseña, MD5, SHA1, BlowFish, etc., creo que no hay límite en la contraseña establecida por el método de almacenamiento en sí.
Las implementaciones más antiguas pueden tener un límite que probablemente sea de 8 o 255 caracteres.
Sin embargo, esta parece una pregunta más adecuada para www.serverfault.com 🙂
Sección de Reseñas y Valoraciones
No se te olvide dar difusión a esta sección si te valió la pena.