Citas por desaconsejabilidad de contraseña única global

20

Estoy teniendo un desacuerdo con alguien (un cliente) sobre el proceso de identificación / autenticación de usuario para un sistema. El meollo de esto es que quieren que cada usuario tenga una contraseña global única (es decir, no hay dos usuarios que puedan tener la misma contraseña). He explicado todos los argumentos obvios en contra de esto (es una vulnerabilidad de seguridad, confunde la identificación con la autenticación, no tiene sentido, etc.) pero insisten en que no hay nada de malo en este enfoque.

He realizado varias búsquedas en Google buscando opiniones autorizadas (o semi-autorizadas, o incluso independientes) sobre esto, pero no puedo encontrar ninguna (principalmente es un error falso tan obvio que no parece que valga la pena advertirlo, como por lo que puedo decir). ¿Alguien puede señalarme una opinión independiente, por favor?

[EDITAR]
Gracias por todas sus respuestas, pero ya entiendo los problemas con este enfoque / requisito propuesto, e incluso puedo explicárselos al cliente, pero el cliente no los aceptará, de ahí mi solicitud de fuentes independientes y / o autorizadas. .

También encontré el artículo del Daily WTF, pero sufre el problema que Jon Hopkins ha señalado: que este es un WTF tan evidente que no parece que valga la pena explicar por qué .

Y sí, las contraseñas serán saladas y picadas. En cuyo caso, la singularidad global podría ser difícil de garantizar, pero eso no resuelve mi problema, solo significa que tengo un requisito de que el cliente no ceda, eso no solo es desaconsejado, sino que también es difícil de resolver. implementar. Y si estuviera en condiciones de decir "No me estoy moviendo con sal y picadillo", estaría en condiciones de decir "No estoy implementando contraseñas únicas a nivel mundial".

Cualquier sugerencia a fuentes independientes y / o autorizadas de por qué esta es una mala idea todavía recibió con gratitud ...
[/ EDIT]

gkrogers
fuente
2
Esta es una idea bastante extraña que creo que vas a tener suerte de encontrar mucho escrito sobre eso. En mi opinión, es tan obviamente imperfecto que los expertos en seguridad no lo considerarían tan serio como para escribir sobre él.
Jon Hopkins
3
Realmente, realmente espero que no estés almacenando contraseñas de texto sin formato, sino más bien saladas y picadas. Si están salados y picados, será difícil garantizar la singularidad global. Si no, entonces no me importa su seguridad, ya que sé que es malo.
David Thornley
1
A pesar de las vulnerabilidades de seguridad, ¿no podría simplemente rechazar la contraseña si no logra un hash exclusivo?
Robert Harvey
Después de editar, reitero mi respuesta: esto no es un "no" es un "no se puede" (debido a la forma en que se deben almacenar las contraseñas), así que en lugar de explicar por qué es malo para alguien que no está No le interesa que necesite retroceder el proceso y comprender por qué el cliente siente que esto es necesario en primer lugar.
Murph
2
Es interesante que confíen en usted lo suficiente como para diseñar su sistema, pero no lo suficiente como para asesorarlos sobre el diseño de su sistema.
Gary Rowe

Respuestas:

24

Cada vez que un cliente intenta crear una contraseña que ya existe, recibe comentarios de que algún usuario ya usa esa contraseña, generalmente una violación del acuerdo de privacidad.

Además de eso, los nombres de usuario son mucho más fáciles de adivinar (y si hay un foro, podrías encontrar muchos nombres de usuario allí) y estás insinuando las formas de los usuarios para hackear el sitio web.

Debería haber alguna página en Internet en algún lugar que describa la parte de violación del acuerdo de privacidad, aparte de eso es solo sentido común: básicamente le estarían dando a alguien una clave y una lista de direcciones de casa.

EDITAR: No está cerca de la autoría, pero quizás sea útil después de explicarles qué significa WTF: http://thedailywtf.com/Articles/Really_Unique_Passwords.aspx

deltreme
fuente
+1 Además, la mayoría de los esquemas de autenticación le permiten probar tantos nombres de usuario como desee, mientras solo le dan tres intentos con una contraseña.
Michael K
1
Ese WTF es para usar la contraseña como clave primaria / extranjera más que cualquier otra cosa. Bueno, tal vez también para contraseñas de texto sin formato.
Murph
2
+1: Nunca debes permitir que ningún otro usuario tenga la misma contraseña. Hable acerca de una falla de seguridad masiva ... Puede ejecutar ataques de contraseña de fuerza bruta cambiando su contraseña repetidamente. Eso volaría por debajo del radar de muchos sistemas de monitoreo.
Satanicpuppy
En realidad, en algunos contextos, tener un solo campo para una credencial de inicio de sesión sería razonable, si se requiere que las contraseñas se elijan de modo que alguna parte en particular [por ejemplo, la primera letra] sea única. Si uno tiene 26 usuarios o menos, por ejemplo, se podría decir que cada usuario debe elegir una contraseña que comience con una letra diferente. Tal sistema sería equivalente a tener 26 nombres de usuario distintos de un solo carácter, pero evitaría la necesidad de presionar 'tabular' o 'ingresar' entre el nombre y la contraseña.
supercat
10

Las mejores prácticas obstaculizan el cumplimiento del requisito:

No puede hacer esto porque no sabe cuáles son las contraseñas, por lo que no puede compararlas porque todo lo que almacena es el hash de la contraseña y una sal (que puede almacenar junto a la contraseña hash). Esta es la mejor práctica, así que eso es lo que haces. Hecho.

Otra edición: Doh! La retrospectiva es fácil: aún puede verificar la unicidad porque (por supuesto) tiene la sal ... solo dispare ahora ... por supuesto, no tiene que mencionar este detalle al cliente.


FWIW, no es tan tonto como crees que es: el objetivo es evitar que grupos de usuarios acuerden y compartan la misma contraseña, lo que la gente hará en la creencia de que les facilitará la vida.

Si se aplica con el requisito de cambiar la contraseña regularmente y una restricción que impide que las personas reutilicen una contraseña actual o usada anteriormente (en absoluto, alguna vez) y requisitos de "fuerza" razonables (o al menos un diccionario precargado de "bloqueado" "contraseñas) vas a llegar a un punto, bastante rápido, donde las probabilidades no están a favor del pirata informático de todos modos.


Ok, mi respuesta originalmente comenzó con:

No hay nada de malo en esto con un par de condiciones, la mayoría de las cuales son que estoy siendo gruesa ...

Aparentemente el humor inapropiado, el punto era que si no tienes la restricción global única, estás creando diferentes oportunidades, quizás menos peligrosas, no lo sé.

Murph
fuente
44
+1 por ofrecer una idea de por qué alguien podría pedir contraseñas únicas
Michael Haren
3
Pero es una vulnerabilidad de seguridad: si es un usuario, ingrese una nueva contraseña y le dicen que no es válida, ahora sabe que al menos un usuario tiene esa contraseña. Combine eso con otros factores (por ejemplo, el idioma en que se encuentra la palabra, o algún contexto / significado que pueda tener para alguien) y ha descubierto un número muy limitado de opciones que fácilmente podrían caer en un ataque de fuerza bruta, incluso potencialmente un manual uno.
Jon Hopkins
Erm, no dije que no era un problema potencial, dije que no era tan tonto como se sugirió en la pregunta porque evita que varios usuarios tengan la misma contraseña (lo que sucede) y que es peor si esas contraseñas son débiles en primer lugar. Permitir a los usuarios el acceso a un sistema es una vulnerabilidad de seguridad ... pero tenemos que soportarlo y, por lo tanto, todo lo demás es un compromiso.
Murph
+1 por señalar que no puede hacerlo si está manejando las contraseñas correctamente.
David Thornley
¿Podemos también tener en cuenta que mi respuesta es que no se puede probar la unicidad porque de todos modos debería estar descifrando la contraseña? Entonces, si tengo un voto negativo por sugerir que me gustaría saber por qué.
Murph
10

Hacer cumplir contraseñas irrepetibles filtra información

¿Cómo? Debido a que cada vez que un cracker intenta crear un nuevo usuario con una contraseña simple, su sistema responde con "No, no puede tener esa contraseña", el cracker dice "Goody, ese es uno para la lista".

La filtración de información sobre su seguridad generalmente es algo malo. OK, los terceros que conocen el algoritmo están bien (necesita revisión por pares) pero permiten que un cracker dedicado infiera claves: malo, muy, muy malo.

Recursos que describen políticas de administración de contraseñas buenas y malas

Lea este artículo del experto en seguridad Bruce Schneier para una discusión en profundidad sobre la seguridad de la contraseña.

Lea este PDF de los investigadores de seguridad Philip Inglesant y M. Angela Sasse para una discusión en profundidad de "El verdadero costo de las políticas de contraseña inutilizable". Para citar de la conclusión:

Contra la visión del mundo de que “si solo [los usuarios] entendieran los peligros, se comportarían de manera diferente” [12], argumentamos que “si solo los gerentes de seguridad entendieran los verdaderos costos para los usuarios y la organización, establecerían políticas de manera diferente”.

Falsa sensación de seguridad

Entonces, el cliente dice: "Si nadie tiene la misma contraseña, entonces si una está descifrada, solo una persona se ve afectada". No. Todos se ven afectados porque el cracker ha demostrado que su sistema de contraseña es fundamentalmente defectuoso: es vulnerable a un ataque de diccionario en un sistema en línea. En primer lugar, no debería haber sido posible que un cracker intente varias suposiciones contra una contraseña.

Para el acceso en línea, 6 caracteres son suficientes

Salir del tema, pero pensé que valdría la pena mencionarlo para los lectores interesados. En términos de seguridad, un sistema en línea es aquel que tiene un proceso activo de gestión de seguridad que monitorea y controla el acceso a los datos. Un sistema fuera de línea es uno que no lo hace (como tener datos cifrados en un disco duro que ha sido robado).

Si tiene un sistema de contraseña que está en línea, entonces no necesita contraseñas de alta seguridad. Las contraseñas solo tienen que ser lo suficientemente complejas para evitar suposiciones dentro de 20 intentos (por lo que un simple ataque de "nombre de cónyuge / hijo / mascota" fallará). Considere el siguiente algoritmo:

  1. Cracker adivina la contraseña utilizando el enfoque "root plus suffix" para minimizar las conjeturas
  2. Credenciales rechazadas y otros intentos de inicio de sesión evitados por N * 10 segundos
  3. Si N> 20 bloquea la cuenta e informa al administrador
  4. N = N +1
  5. Informe al usuario que el próximo inicio de sesión puede ocurrir en el momento T (calculado anteriormente)
  6. Ir al paso 1

Para una contraseña simple de 6 caracteres, el algoritmo anterior evitará ataques de diccionario, al tiempo que permitirá que incluso el usuario más inepto en un teclado móvil pueda pasar eventualmente. Nada evitará el llamado "ataque de la manguera de goma" donde golpeas al titular de la contraseña con una manguera de goma hasta que te lo indiquen.

Para un sistema fuera de línea cuando los datos cifrados se encuentran en una unidad flash y el cracker tiene la libertad de intentar cualquier cosa en su contra, bueno, usted quiere la clave más resistente que pueda encontrar. Pero ese problema ya está resuelto .

Gary Rowe
fuente
1
¿Qué quiere decir con acceso "en línea"? ¿Hay otro tipo?
Robert Harvey
Vea la última oración para la diferencia en términos de seguridad.
Gary Rowe
4

Si les ha aconsejado en contra de este curso de acción, y les ha proporcionado razones, los tomaría en su palabra y simplemente implementaría el sistema como sugieren. Puede que no sea satisfactorio, pero usted ha hecho su trabajo y están pagando la factura, por lo que deberían obtener lo que quieren.

Hay una excepción Si las consecuencias negativas de una violación del sistema serían graves (por ejemplo, si la información muy privada puede verse comprometida por una violación de la seguridad), de hecho puede tener el deber profesional de no implementar el sistema que desean. No esperes que te haga popular si te niegas, pero no dejes que esa sea tu guía.

PeterAllenWebb
fuente
4

Solo quiero reforzar la respuesta de Murph. Sí, es un problema de seguridad y existen vulnerabilidades de divulgación de información al implementarlo. Pero desde el punto de vista del cliente, no parece estar demasiado preocupado por eso.

Lo que debe señalar es que no es físicamente factible implementar una verificación de "contraseña única". Si está usando una contraseña de sal y hash, y no los almacena como texto sin cifrar, entonces son operaciones O (n) (costosas) realizar la verificación de unicidad.

¿Te imaginas si tienes 10,000 usuarios, y se tarda 30 segundos en revisar la contraseña de cada usuario para verificar si es única cada vez que alguien se registra o cambia su contraseña?

Creo que esta es la respuesta que debe llevar a su cliente.

Dean Harding
fuente
Si. Este sería un buen punto para hacer.
PeterAllenWebb
1

Simplemente pensando en términos del lugar apropiado para hacer la pregunta, la sección de seguridad de TI de Stack Exchange debería ser un punto útil para usted. Pruebe /security/tagged/passwords : una variedad de personas centradas en la seguridad de TI debería poder proporcionar respuestas específicas.

Rory Alsop
fuente
0

Probablemente le gustaría el cifrado RSA de dos factores. Si está utilizando Active Directory o la membresía ASP.NET, esto es obvio.

texto alternativo

El token de hardware o software genera una contraseña única dependiente del tiempo seguida de un código PIN. Esto en conjunto proporciona una contraseña única para cada usuario.

goodguys_activate
fuente
Dos factores son inútiles para prevenir ataques de hombre en el medio.
BryanH
Es cierto, pero esa afirmación no parece estar relacionada con la pregunta en cuestión.
goodguys_activate
¡Pero ahora sé tu segundo factor! Oh, espera ... actualiza tu foto
Michael Haren
2
Hmm, creo que sería genial hacer que un GIF animado
goodguys_activate