¿Hay alguna razón válida para no permitir caracteres y limitar la longitud de las contraseñas?

39

He encontrado bastantes sitios que limitan la longitud que permiten que las contraseñas sean y / o no permiten ciertos caracteres. Eso me limita, ya que quiero ampliar y alargar el espacio de búsqueda de mi contraseña. También me da una sensación incómoda de que podrían no ser hash.

¿Existen buenas razones para establecer una longitud superior o excluir caracteres en las contraseñas?

Chris
fuente
26
¡Seguro! ¡Hace que sea más fácil adivinar por fuerza bruta las contraseñas de las personas! : P
FrustratedWithFormsDesigner
44
¿Estamos hablando de razones "técnicas" válidas o razones "comerciales" válidas?
Martin York
1
@ Martin: Estaba pensando en técnica, pero supongo que tampoco.
Chris
11
@JYelton ¿Por qué te importa cuál es la longitud de la contraseña original? El hash siempre será del mismo tamaño. Desde luego, espero que no estás almacenándolos en texto plano ...
Pewpewarrows

Respuestas:

27

No

No hay buenas razones

EDITAR: No puedo probar que no hay buenas razones, porque uno no puede probar que es negativo. No puedo pensar en buenas razones para esto: como señalaron otros, el hash será del mismo tamaño independientemente del tamaño de la entrada, y la eliminación de caracteres válidos (del contexto de la pregunta) solo reduce el espacio de estado. La respuesta parece obvia en su cara: no hay buenas razones. Puede haber una gran cantidad de razones que suenan bien o que parecen buenas, pero no lo son. Si lo fueran, alguien ya los habría publicado aquí, o si no lo hubiera hecho aquí, seguramente en security.stackexchange.com, y esta respuesta no habría sido tan votada.

Steven A. Lowe
fuente
3
Estoy de acuerdo, pero el comentario que Kissaki hace sobre la codificación es válido. Parece que algunas pilas / programadores no pueden obtener la codificación correcta, ya que limitarse a ASCII es un truco barato para que funcione.
edA-qa mort-ora-y
10
¿Podrías al menos intentar elaborar? O no lo sabes por un hecho, o tienes razones para creer que las razones comunes / existentes no son válidas. Dándole el beneficio de la duda y asumiendo la última, debe explicar por qué esas razones no son válidas.
Aaronaught
8
-1 - Se me ocurren varias buenas razones para limitar las contraseñas a un conjunto de caracteres determinado. Del mismo modo, tener que admitir las contraseñas de los teléfonos de tonos y las que escribe a través de un teclado también es una situación que debe tener en cuenta.
rjzii
9
-1. Sin justificación, solo opinión. Si va a hacer una declaración general, haga una copia de seguridad.
Michael K
44
Esto se está discutiendo ahora en nuestro sitio de meta-discusión : sería útil entender por qué una respuesta de una sola palabra es tan popular y qué podemos hacer para mejorar la calidad de respuestas como esta.
25

Limitar la longitud puede ser una medida para limitar el tiempo de ejecución del hash, así como limitar el ancho de banda (y ambos son realmente marginales de todos modos). Aparte de eso, no hay una buena razón, especialmente desde el punto de vista de la seguridad.

Se podría decir: "La gente olvidará las contraseñas más largas con mayor facilidad", pero esa es realmente una declaración estúpida y no llega al punto en absoluto.

En cuanto a los caracteres, siempre y cuando conozca posibles problemas de codificación con la transferencia y / o migración de datos en el futuro (por ejemplo, cambiará de ASCII a UTF-8 en 2 años), permitir que más caracteres solo puedan ser buenos para las contraseñas.

Kissaki
fuente
44
Dada la sobrecarga de cualquier longitud de protocolo moderno, no puede ser una buena razón, aparte de un límite alto como 1K solo para evitar ciertos ataques / tonterías.
edA-qa mort-ora-y
3
Limitar el tiempo de ejecución del hashing es generalmente malo. Cuanto más se tarda en calcular un hash, más se tarda en aplicarle fuerza bruta.
tdammers
Aunque es cierto, siempre es una compensación. No desea calcular siempre el mejor hash que lleva más tiempo. Apretón de manos Por lo tanto asimétrica vs flujo de datos simétrica en VPN etc.
Kissaki
17

, hay una razón para los caracteres especiales.

No permitir caracteres especiales es más una cuestión de usabilidad que de seguridad. En primer lugar, podrían ser destrozados por problemas de codificación. En segundo lugar, incluso si garantizara utilizar siempre la misma codificación, todavía existe el problema del dispositivo de entrada. Dependerá de tener un teclado completo (que elimina la mayoría de los dispositivos móviles), con la misma distribución del teclado. Más adelante difieren no solo entre los idiomas, sino también entre los sistemas operativos, los diseños para Windows, Linux y OSX pueden ser un poco diferentes. Así que no veo una buena razón para no permitir la contraseña como: √Ω≈ç∫∞§…¬å∑±.

vartec
fuente
3
a menos que esté proporcionando una contraseña a sus usuarios, es decir, si ellos son los que ingresan la contraseña ellos mismos, entonces si eligen usar algún símbolo matemático extraño es realmente asunto suyo. ahora estoy de acuerdo con el problema de codificación aquí, aunque considero que es más una excusa para pasar por debajo de la incompetencia del radar que una buena razón para evitar ciertos caracteres arbitrariamente.
Newtopian
2
@nuevo: no es asunto suyo. Si se disparan en el pie, seguirán percibiendo un problema con su aplicación y llamarán a su soporte.
vartec
77
@Newtopian: Odio cuando yo, como usuario, me circunscribo por ignorancia (como no poder especificar un "+" en mi dirección de correo electrónico). A veces, sin embargo, es una buena idea no darles a los usuarios demasiada soga para colgarse. Creo que esta es una ocasión. No se trata de "arbitrariamente" prevenir ciertos personajes.
Zano
1
Entonces, ¿usted aboga por que griegos, árabes, chinos y otros usen US-ASCII?
l0b0
@ 10: no, estoy recomendando que usen caracteres normales y de uso común en sus idiomas, en lugar de algunos caracteres especiales, que pueden estar ausentes en algunos diseños.
vartec
13

Hubo un poco de controversia en el mundo de la seguridad hace unos años cuando los clientes de Chase descubrieron que sus contraseñas no distinguen entre mayúsculas y minúsculas. Resultó que su página web era solo una interfaz de un sistema de back-end OS / 400 de 30 años, que tenía una limitación técnica que ignoraba. Arreglar esto aparentemente costaría millones de dólares.

El punto es que puede haber razones heredadas costosas para no permitir contraseñas de cierta longitud.
(Tenga en cuenta que no estoy tolerando esta excusa ...)

BlueRaja - Danny Pflughoeft
fuente
1
en la medida en que esta sea la única buena razón para limitar la contraseña de alguna manera ... solo si el sistema subyacente tendrá tales limitaciones en primer lugar.
Newtopian
8

La mayoría de los bancos, departamentos de TI, etc., que imponen restricciones de contraseña máximas, no lo hacen por razones técnicas. Son perfectamente conscientes de cómo funciona el hashing de contraseñas y cómo almacenar contraseñas complejas. Imponen estas limitaciones porque reduce la cantidad de llamadas de asistencia para las personas que han olvidado sus contraseñas. ¿Es esta una buena razón para imponer ese tipo de limitación? De ninguna manera. Pero, sin embargo, es la razón principal.

Greg Jackson
fuente
1
Veo la reducción de las llamadas de soporte como un valid Business reason(Personalmente no creo que haya una correlación)
Martin York
2
Bueno, hay otras formas de restablecer las contraseñas o educar a los usuarios sobre cómo elegir contraseñas suficientemente complejas que sean fáciles de recordar. Mis últimas contraseñas en el trabajo han sido> 25 caracteres, y no he tenido problemas para recordarlas. Además, presumiblemente, las personas que tienen problemas para recordar sus contraseñas largas aún elegirán contraseñas más cortas, aunque no tengo idea de con qué frecuencia eso es realmente cierto. Reducir las llamadas de soporte parece ser una razón comercial válida en la superficie, pero sigue siendo una razón pésima para restringir la longitud de la contraseña.
Greg Jackson
1
Creo que a mi (y a muchas personas) les parecería escribir con precisión (no solo recordar) 25 caracteres sin ver la salida casi imposible. ¡Hasta ahora he corregido 5 errores tipográficos mientras escribía esto!
Gerry
Bueno, recordar no es lo mismo que escribir. Recordar contraseñas largas es muy fácil si sabes cómo elegirlas; simplemente elija líneas de historias o obras de teatro, o partes de poemas o letras de canciones. Siempre que cambie una o dos cosas allí (errores ortográficos intencionales, cambie una palabra a otra que suene así o significa lo mismo, etc.), es bastante fácil y extremadamente seguro. Es cierto que escribirlo puede ser más difícil, pero no es excusa para que los bancos lo obliguen a escribir menos de 8/10/12 caracteres.
Greg Jackson
intente escribir esa contraseña de 25 letras en un dispositivo móvil
Lie Ryan
7

No todos los dispositivos de entrada (en cuanto al hardware) a menudo tienen todos los caracteres que tiene un teclado completo, o de la misma manera. Si uno no está usando un administrador de contraseñas, uno podría encontrarse en problemas para ingresar dicha contraseña, ¿no? Y Unicode todavía está lejos (lejos, muy lejos) de ser un estándar.

Torre
fuente
1
Por lo general, las personas que ingresan contraseñas usarán el mismo hardware (o clase de hardware) para crearlos y autenticarlos. No veo cómo este es un argumento para limitar los conjuntos de caracteres o la longitud. En cuanto a Unicode, al construir el lado del servidor (la parte de autenticación) ¿por qué limitaría el tamaño o los conjuntos de caracteres? cualquier sistema que requiera una contraseña para ingresar debe poder controlar cómo se ingresa esta contraseña en el sistema, por lo tanto, si necesita unicode para su cliente, ¡que así sea!
Newtopian
@Newtopian Está asumiendo que no tiene que interactuar con sistemas heredados o sistemas fuera de su control.
Grahamparks
1
pidieron una buena razón, esta no es una buena razón
2
@Jarrod: ¡No poder ingresar una contraseña no es una buena razón? En cualquier caso, no te vi idear una mejor (o ninguna).
Rook
3
@Rook no deberías haber usado esos personajes si supieras que no puedes elegirlos desde un dispositivo, eso no es una buena razón para limitarlos a todos, es una buena razón para que tú personalmente no los uses.
7

¿Existen buenas razones para establecer una longitud superior o excluir caracteres en las contraseñas?

Voy a adivinar y decir que algunas de estas restricciones se deben al filtrado de caracteres en su sitio web ( & < > #) para mantener alejados a los piratas informáticos. Mientras que otros son las ideas descabelladas que surgen de los comités de jefes de pelo puntiagudo.

Me he encontrado con una serie de decisiones de "seguridad" realmente estúpidas (en mi opinión). Como ejemplo, una gran empresa de inversión maneja mis cuentas IRA y mi pensión. Con el fin de hacer cualquier contacto con la pensión que me obliga a escribir la contraseña en el teléfono (no se puede llegar a ellos de otra manera). Mi cuenta de corretaje / IRA usa letras (mayúsculas y minúsculas), así como algunos signos de puntuación: ninguno de estos caracteres aparece en el teclado numérico de un teléfono. Si no puede iniciar sesión con la contraseña por teléfono, le permite restablecer la contraseña de su cuenta de corretaje a algo que puede escribir por teléfono.

Mi sistema de nómina (para la empresa de consultoría para la que trabajo) requiere números, y solo números; esto les permite usar la misma base de datos si el usuario llama (nunca he hecho esto) o usa la interfaz web (solo uso esto) .

Dicho esto, es hora de cambiar mi contraseña en la oficina. Tienen restricciones tan locas que calculo que tomará aproximadamente medio día encontrar una contraseña aceptable para el sistema: al menos 2 letras mayúsculas, al menos 2 letras minúsculas, al menos 2 dígitos (que no pueden ser +/- 1 de las contraseñas anteriores), al menos 2 caracteres no alfa / no numéricos, no pueden coincidir con ninguna de las últimas 24 contraseñas, no pueden contener ninguna cadena (hacia adelante o hacia atrás) que sea una palabra (3 o más letras de largo) en inglés ( también un par de otros idiomas que no tengo autorización para saber). Creo que la longitud mínima es de 10-11 caracteres.

Tangurena
fuente
Sí, he visto esos personajes en la lista de no.
Chris
55
Ataque simple: encuentre notas adhesivas debajo de los teclados porque nadie puede recordar su contraseña.
JeffO
@Jeff, eso es correcto. Si dejo mi computadora portátil en casa, las contraseñas son demasiado complicadas para recordarlas, por lo que no puedo iniciar sesión. Y en el sistema de nómina, pongo el nombre de usuario y la contraseña como parte del marcador.
Tangurena
"no puede contener ninguna cadena (hacia adelante o hacia atrás) que sea una palabra (3 o más letras largas) en inglés" Esta fue la que me atrapó. Los ataques de diccionario no son efectivos si la contraseña contiene palabras completas, sino más bien si la contraseña completa consta de palabras completas ... Bueno, realmente una palabra completa o frases muy comunes. Las contraseñas más seguras que son prácticas de usar sin escribir son frases de contraseña que provienen de libros, poemas, letras de canciones, etc., cambian algunas letras en números, escriben mal y capitalizan de manera impredecible y nadie descifrará esa contraseña.
Greg Jackson
1
El filtrado de caracteres es un signo seguro de código basura no probado en segundo plano. Los desarrolladores necesitan aprender a escapar de las cadenas.
l0b0
5

Una razón para limitar los caracteres se debería a cómo se ingresa la contraseña.

Varios bancos, por ejemplo, con sus sitios web de Banca por Internet, solicitan caracteres específicos de una contraseña y selecciona los caracteres apropiados a través de un cuadro desplegable.

Hacen esto, presumiblemente, para que los registradores de teclas no puedan detectar la pulsación de tecla y, por lo tanto, conozcan [caracteres de] su contraseña. Si bien sé que hay muchas otras formas en que podrían eludirse tales medidas, por ejemplo, captura de pantalla; sigue siendo efectivo contra keyloggers.

Si tuvieran que permitir todos los caracteres, la longitud del cuadro desplegable se volvería engorrosa y también permitiría la confusión entre personajes de aspecto similar.

Megan Walker
fuente
1
¿Seguramente la gente (técnica) simplemente teclearía la carta de todos modos?
Gerry
@Gerry: ese es un comportamiento específico del navegador en lugar de un estándar absoluto y también depende del conocimiento del usuario para que sea viable.
Jon Hopkins
Mi banco usó un applet emergente de un teclado por una razón similar. Pero era demasiado difícil de usar y recibió muchas críticas por ser inaccesible (no funcionó para lectores de pantalla, entrada alternativa, etc.)
jqa
1
@ Jon - Dije personas técnicas, y no conozco ningún navegador de Windows que no implemente al menos la coincidencia del primer carácter, ya que es un comportamiento estándar de Windows - no puedo hablar por Mac y * nix
Gerry
1
@Gerry El navegador de mi teléfono Android no permite esto. Espero que sea lo mismo para muchos dispositivos móviles.
RoundTower 01 de
2

No permitir caracteres especiales como tab sería válido. Puede iniciar sesión o cambiar su contraseña con una pestaña char en modo texto, pero no puede usarla en una GUI o entorno web. Un carácter de barra diagonal inversa también presentará algunos problemas multiplataforma.

por cierto, las contraseñas largas no son contraseñas, son frases de contraseña. Su usuario promedio no puede recordar 2Z8d!% G # x pero puede recordar 'el nombre de mi mascota es fido el perro'. El texto más largo es más difícil de descifrar mediante la fuerza bruta y es mucho menos probable que se escriba en una nota adjunta a la pantalla.

jqa
fuente
Ver también xkcd.com/936
sergut
0

Cuando las personas escriben cometen errores, llamados "errores tipográficos". Normalmente la gente ve sus errores y los corrige. Para la entrada de contraseña, generalmente no puede ver lo que ha escrito y, por lo tanto, no puede corregir sus errores tipográficos. Comete errores sin darse cuenta, envía su contraseña y vuelve como "contraseña no válida". Entonces intenta de nuevo. Entonces intenta de nuevo.

Puedes pensarlo como "3 pequeños errores tipográficos y luego no puedes distinguirlo de un ataque de fuerza bruta". ¿Cómo se defienden los sistemas contra los ataques de fuerza bruta? ¿Una respuesta explícita de " Demasiados intentos, vete, no podrás iniciar sesión aunque lo hagas bien "? ¿Incrementando exponencialmente los retrasos en la entrada de la contraseña que conducen a tiempos de espera del navegador cuando el retraso es demasiado largo, por lo que es imposible intentar iniciar sesión nuevamente? Los enfoques varían, pero siempre hay una consecuencia en un sistema bien diseñado.

Puedes considerarlo como "3 pequeños errores tipográficos y luego obtienes algún tipo de denegación de servicio".

A medida que aumenta la longitud de la contraseña, aumenta el riesgo de errores tipográficos (y, por lo tanto, el riesgo de denegar el acceso de una persona autorizada). Cualquier cosa que tenga más de 20 caracteres será mal escrita con frecuencia (a menos que el usuario sea inteligente / perezoso y almacene su contraseña en algún lugar para que pueda "copiar y pegar" sin preocuparse por los errores tipográficos, como un buen archivo de texto plano en su escritorio llamado " contraseñas " .txt ").

Brendan
fuente