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]
Respuestas:
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
fuente
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:
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é.
fuente
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:
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:
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 .
fuente
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.
fuente
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.
fuente
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.
fuente
Probablemente le gustaría el cifrado RSA de dos factores. Si está utilizando Active Directory o la membresía ASP.NET, esto es obvio.
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.
fuente