¿Por qué algunas contraseñas no permiten ciertos tipos de caracteres?

2

¿Hay algún motivo relacionado con la programación por el que alguna contraseña no pueda tener ciertos caracteres? Si la idea de almacenar una contraseña es almacenar su hash, ya que una función de hash puede recibir cualquier entrada (bueno, al menos supongo que cualquier función de hashing razonable puede tener puntuación) ¿por qué un programa no permite algunas contraseñas? ¿Significa esto que no se usa una función de hash, entonces qué es?

Un ejemplo es LAN Manager

  

Las contraseñas no distinguen entre mayúsculas y minúsculas. Todas las contraseñas se convierten en   mayúsculas antes de generar el valor de hash.

Cuando trabajé para IBM tuvimos que completar las horas que trabajamos ingresándolas en mainframe ejecutando z / OS. La contraseña para esto tenía que ser un formato muy particular, algo así como 3 dígitos seguidos de 3 letras. Pregunté si las contraseñas estaban almacenadas en texto plano y la respuesta fue "no, pero el sistema es antiguo".

    
pregunta Celeritas 26.08.2013 - 23:56
fuente

4 respuestas

2

Cualquier restricción de cualquier forma o forma en las contraseñas disminuirá su entropía, haciéndolas más débiles. Menos limitaciones = más combinaciones posibles. No hay ninguna razón técnica por la que las contraseñas deban estar limitadas de todas formas *. No es un problema relacionado con la programación, es un problema relacionado con el chimpancé .

Este es especialmente el caso si usted es de forma correcta y segura para ingresar sus contraseñas .

* En algunos sistemas muy antiguos y heredados, puede haber algunas limitaciones técnicas relacionadas con la codificación, caracteres aceptables por el propio sistema operativo, etc. Por supuesto, eso ya no existe, y no hay razón para que imitemos el comportamiento de esos sistemas antiguos.

    
respondido por el Adi 27.08.2013 - 00:09
fuente
2

En el hash de LM , las contraseñas no distinguen entre mayúsculas y minúsculas porque debían usarse con un sistema operativo (Windows) que se supone que no distingue entre mayúsculas y minúsculas, y los usuarios de Windows están capacitados para ignorar el caso. Este fue un movimiento bastante lógico, si se equivocó en el caso de las contraseñas. Ellos (parcialmente) aprendieron de sus errores y cambiaron a MD4 sobre UTF-16 , por lo que admiten contraseñas mucho más largas y personajes arbitrarios.

Tener caracteres no ASCII en una contraseña no es necesariamente una buena idea. Implica algunos problemas a la hora de escribir estas contraseñas en teclados extranjeros o teléfonos inteligentes. También hay problemas de descomposición de Unicode: un carácter "é" puede ser, en el nivel de Unicode, uno o dos puntos de código, por lo que poder escribir una "é" en un teclado no significa que obtenga el correcto. Algunos diseñadores y administradores de sistemas restringen los posibles caracteres sobre la base de que deben proteger a los usuarios demasiado entusiastas contra ellos mismos.

    
respondido por el Thomas Pornin 27.08.2013 - 00:41
fuente
0

Se almacena en texto plano o encriptado (pero no hash), para evitar tener que desinfectar adecuadamente la entrada de datos, o por conveniencia o compatibilidad. Aquellos que almacenan sus contraseñas en texto simple a menudo ponen límites de longitud y / o caracteres en su lugar debido a restricciones en su base de datos; Lo mismo se aplica a las personas que utilizan cifrado reversible. Si quieren evitar tener que desinfectar correctamente la entrada de datos (lo cual no es un problema para los sitios web, pero sí otros medios), pondrán un límite estricto a los caracteres permitidos para que no se pueda usar nada ataques de inyección. No entraré en detalles sobre conveniencia o compatibilidad, ya que las otras respuestas ya cubren eso.

    
respondido por el demize 27.08.2013 - 04:00
fuente
0

Como @Adnan señala acertadamente, no hay ninguna razón buena para restringir los caracteres, pero la práctica no va a desaparecer pronto.

Uno de los ejemplos más notorios de tales restricciones es lo que se hace en el sistema de carrito de compras x-cart que utilizan muchos sitios web. Trunca silenciosamente las contraseñas son < . Entonces, si le asigna una contraseña como lwB<Ln#q5iDVnW!K&ZQ0u(zD , tratará su contraseña como lwB . Steve Thomas ha descrito esto, pero no puedo encontrar la fuente precisa, así que le daré un crédito en general.)

De los errores como este se desprende claramente cuál fue la intención original. Alguien lanzó una regla de análisis de contraseña para evitar XSS. Obviamente, hay formas mucho mejores de hacerlo, pero esto demuestra que algunas de estas políticas son un intento de limpiar los datos proporcionados por los usuarios antes de seguir procesándolos.

US-ASCII only

Hay buenas razones para restringir las contraseñas a US-ASCII. Un usuario puede tener algo como ü en su contraseña, pero a veces proporcionará eso como UTF8 y otras veces como Latin1 (o cualquier otro conjunto de codificaciones). El usuario puede desconocer tales distinciones.

¿Permitir espacios en blanco?

Existe cierto debate sobre si se deben permitir espacios en blanco en las contraseñas. Estoy a favor de permitir espacios, ya que puede ser útil para crear frases de contraseña más fuertes, más memorables y más fáciles de escribir. Pero hay dos razones para desconfiar de los espacios en las contraseñas.

  1. Los espacios son muy audibles cuando las personas están escribiendo.

    En la mayoría de los teclados, es fácil escuchar cuando se escribe un espacio frente a cualquier otra tecla. Por lo tanto, alguien que lo oiga escribir su contraseña varias veces podrá aprender en qué posiciones hay espacios. Esto puede hacer que el craqueo sea mucho más fácil.

  2. Eliminación de espacios en blanco y finales.

    Es posible que deseamos eliminar los espacios en blanco finales y anteriores de las contraseñas ingresadas, ya que las personas pueden no saber que están allí. (Posible copiar / pegar descuidado, etc). Así que solo agregamos confusión si decimos que se permite el espacio en blanco siempre y cuando no esté al final o al final.

A pesar de estos problemas, todavía me gusta la idea de permitir espacios. Pero mucha gente inteligente no está de acuerdo conmigo.

    
respondido por el Jeffrey Goldberg 27.08.2013 - 05:39
fuente

Lea otras preguntas en las etiquetas