Creando contraseñas seguras [duplicar]

-1

Se me ha asignado la tarea de escribir un generador de contraseñas aleatorias para usar en una serie de cuentas desechables.

En este escenario, las cuentas deben ser muy seguras, se eliminarán después de un solo día y se reemplazarán con otra combinación de nombre de usuario / contraseña.

Tengo una matriz maestra de 70 caracteres. Cuando se crea una nueva contraseña, se seleccionan 17 caracteres aleatorios de la matriz, se muestran en pantalla al usuario y nunca se guardan / graban en ninguna parte.

Suponiendo que la contraseña solo se muestra al usuario una vez, no se almacena / escribe más allá del uso único de los usuarios para un inicio de sesión y se basa en el supuesto de que todo lo demás es seguro (no lo es, pero quiero obtener este bit correcto y luego pasar a otras áreas): ¿es una contraseña de esta complejidad segura contra formas comunes de ataque?

A menos que me equivoque, 17 caracteres eliminan la contraseña de los reinos de una tabla de arco iris (16 caracteres como máximo que leí .. Estoy feliz de ser corregido).

Tal como lo entiendo, el número de combinaciones posibles supera los 29 millones de dólares, por lo que supera los límites razonables para una fuerza bruta en menos de 24 horas.

La cuenta también tiene un bloqueo de 5 intentos aplicado con un desbloqueo de 30 minutos.

Sé que existe la posibilidad de que la contraseña se adivine al azar la primera vez (cualquier cosa es posible), pero ¿hay algo obvio que haya omitido aquí?

    
pregunta Fazer87 24.03.2016 - 17:05
fuente

2 respuestas

3

El problema más pequeño que veo es que has dicho "aleatorio" sin definirlo. Si está utilizando un generador de números pseudoaleatorios criptográficamente seguro, está bien. Si está usando random (), no está bien porque la salida de random () es predecible. random () es útil solo para análisis estadísticos, no para aplicaciones de seguridad.

Lo que será mucho más importante para el éxito de su sistema es la facilidad de uso. Si está esperando que sus usuarios escriban 17 caracteres aleatorios, es probable que explote su regla de 5 intentos en el primer minuto, entrecerrándose los ojos en una fuente extraña, tratando de diferenciar O de 0, 1 de l, l de |, & dash; de & hyphen ;, y otros caracteres con glifos similares. Bailar en la tecla de mayúsculas mientras escribe también presenta inconvenientes. Como alguien que tiene que sufrir estos horribles generadores de contraseñas donde los "expertos en seguridad" rechazan cruelmente el cortar y pegar, puedo decir por su descripción que ya tiene este defecto fatal y que sus usuarios lo despreciarán. . En lugar de un conjunto de 70 caracteres, considera limitarlo. Dibuje solo los caracteres alfabéticos en mayúsculas, o dibuje del conjunto de [0-9] y [a-f]. Otra opción mencionada fue el software de dados, que le permitiría generar tipos de contraseñas de "palabras correctas de batería de caballo" de varias palabras. Estos son inequívocos y fáciles de escribir, aunque mucho más largos.

Puede realizar fácilmente los cálculos matemáticos para determinar la "capacidad de respuesta" de las listas de palabras restringidas o los enfoques de conjuntos de caracteres limitados. Y puede ajustarlo para que la cantidad de incertidumbre exceda sus requisitos. Usted ha dicho que una posibilidad entre 1 y 29 millones es un riesgo que está dispuesto a aceptar, pero ¿se conformaría con una oportunidad entre un octillón y una posibilidad entre un millón y medio? Reduzca la longitud para que coincida con su tolerancia al riesgo, e incomodará a sus usuarios aún menos.

    
respondido por el John Deters 24.03.2016 - 19:47
fuente
1

Por lo que deduzco, estás matando una mosca con un martillo.

Ya que bloquea la cuenta después de 5 intentos y la desbloquea después de 30 minutos, y elimina la cuenta después de 24 horas, en el peor de los casos, un atacante puede intentar 10 intentos por hora o 240 contraseñas en total antes del la cuenta se ha ido Por lo tanto, su contraseña solo debe ser lo suficientemente difícil para que no sea probable que se adivine en 240 intentos. Con un espacio de 70 caracteres, una contraseña de longitud 4 debe ser bastante segura (24 millones de posibilidades). Si eres paranoico, hazlo con 5 caracteres y termina con él.

Pero te estarás preguntando:

  

"¿Qué pasa si un atacante compromete mi servidor? Si las contraseñas son cortas   Es posible que puedan forzar bruscamente los hashes de mis contraseñas y obtener acceso a   la contraseña de todos! "

Pero mi respuesta a eso sería:

  

"¿Y qué hago con ellos?"

    
respondido por el TTT 24.03.2016 - 19:20
fuente

Lea otras preguntas en las etiquetas