Una alternativa a las contraseñas tradicionales: ¿hay algún mérito a esta idea?

13

Si tiene un sitio web dirigido a personas que no son necesariamente técnicamente competentes, permitir que los nuevos usuarios elijan su propia contraseña no es muy seguro debido al simple hecho de que muchas personas no eligen contraseñas seguras. Algunos métodos para tratar este problema son:

  • Más común: tenga un 'verificador de seguridad de la contraseña' o solicite que la contraseña contenga un cierto número y diferentes tipos de caracteres. A menudo, estas no son muy buenas y dan como resultado contraseñas que en realidad no son muy seguras y / o difíciles de recordar (por supuesto, esto no significa que pueda hacer un buen comprobador de contraseñas, aunque eso es bastante difícil).
  • Genere una secuencia aleatoria de caracteres: muy poco práctica e insegura porque las personas tienden a escribirlos porque no pueden recordarlos.
  • Autenticación de dos fases a través de SMS o correo electrónico: no es muy conveniente para el usuario.

He pensado en un enfoque diferente que se inspira en este cómic de XKCD . Funciona así:

Cuando un nuevo usuario se registra, se le presentan con 20 palabras del diccionario seleccionadas al azar. Se les pide que formulen una oración secreta (llamémosla frase de contraseña) que contenga al menos cinco de estas palabras. Se les anima a crear una oración sin sentido que sea difícil de adivinar pero fácil de recordar. Tienen la opción de actualizar las 20 palabras al azar varias veces si no pueden pensar en nada.

Esta frase de contraseña simplemente funcionará como sus contraseñas. Solo tiene que verificar que usen al menos cinco de las palabras proporcionadas y tomar las medidas de seguridad habituales que usaría para las contraseñas normales.

Personalmente, creo que esta es una manera bastante fácil de usar para permitir que las personas elijan contraseñas seguras; y los problemas que mencioné para los otros métodos parecen ser evitados. Por supuesto, podría estar completamente equivocado y podría estar supervisando algo importante. Así que realmente me gustaría escuchar lo que piensan las personas inteligentes de este sistema.

    
pregunta AardvarkSoup 08.06.2012 - 23:32
fuente

3 respuestas

11

Eso me parece genial.

El objetivo principal de generar contraseñas es elegir una que sea extremadamente difícil de adivinar para un atacante y fácil de recordar y escribir para los usuarios autorizados. Idealmente, un proceso de generación de contraseña debería generar contraseñas extremadamente difíciles de adivinar, incluso si el atacante sabe exactamente qué proceso de generación de contraseña utilizó ( Principio de Kerckhoffs ). Si al atacante de "conocimiento perfecto" le resulta difícil adivinar la contraseña, otros atacantes la encontrarán aún más difícil.

Supondré que utilizas un /dev/random que no está roto (está conectado a un generador de números aleatorios de hardware o un generador de números pseudoaleatorios criptográficamente seguro).

Muchas personas parecen sentir que una llamada "contraseña de 10 caracteres aleatorios" formada por una letra mayúscula seleccionada al azar, letras minúsculas seleccionadas al azar, seguida de un dígito elegido al azar, con un total de 10 caracteres de longitud, es Más que adecuado para muchos propósitos. Eso le da a ln2 (26 ^ 9 * 10) = 45.6 bits de fuerza de la contraseña .

Si selecciona palabras al azar de cualquier lista de 7776 palabras (6 ^ 5 palabras), como la lista estándar de Diceware o la lista de Dialdice más fácil de escribir en un teléfono, y el atacante sabe exactamente qué lista de palabras utilizas, y su usuario elige las primeras 4 palabras que selecciona, en el orden en que las selecciona, el usuario obtiene ln2 ((6 ^ 5) ^ 4) = 51.7 bits de fuerza de contraseña.

¿aumenta la aleatoriedad?

Si el usuario pulsa la tecla de actualización un número aleatorio de veces, y luego tira los dados para seleccionar aleatoriamente 4 palabras de las que presentas, y luego tira los dados para mezclar esas palabras en un orden aleatorio para generar los 4 -haga la frase de contraseña de Diceware, luego (asumiendo nuevamente que /dev/random no está roto) puedo a priori calcular que no tiene ningún efecto, el usuario aún tiene 51.7 bits de seguridad de contraseña.

Si el usuario piensa que no es suficiente la seguridad de la contraseña, creo que su sistema debería permitirle agregar letras, símbolos, palabras, etc. adicionales.

efectos de la selección no aleatoria

Es poco probable que su usuario realice una selección completamente aleatoria, pero eso está bien. En el peor de los casos, su usuario pone las cosas en orden alfabético o elige algún otro orden, y el atacante de alguna manera sabe exactamente qué orden es, has perdido -ln2 (4!) = -4.6 bits de seguridad de la contraseña de una frase de contraseña de 4 palabras de Dialdice.

Si asumimos que el usuario siempre rechaza ciertas palabras, y sigue actualizando hasta que puede hacer una frase de contraseña sin esas palabras, y esas palabras constituyen aproximadamente 1/6 del diccionario, y de alguna manera el atacante sabe qué palabras son, entonces para una frase de contraseña de 4 palabras de Dialdice hemos perdido alrededor de -1 bit de fuerza de contraseña. (El peor de los casos es una pérdida de N bits de la fuerza de la contraseña por cada 2 ^ N veces que el usuario presiona el botón de actualización, pero eso no me parece realista).

La combinación de estos dos efectos hace que sus usuarios tengan una fuerza de contraseña de 46,1 bits con una frase de contraseña de 4 palabras de Dialdice, más fuerte que la contraseña de 10 caracteres aleatorios, y mucho más fácil de memorizar.

Si luego piensa que no es suficiente la seguridad de la contraseña, es bastante sencillo aumentar el número mínimo de palabras en la frase de contraseña, o cambie a una lista de palabras con más palabras, o ambas. (Puede usar el enfoque en " Migre las contraseñas antiguas de md5 para cifrar contraseñas "para forzar a todos los que tengan contraseñas antiguas y de poca fuerza a que se actualicen a contraseñas nuevas y de mayor fuerza).

Eso me parece genial.

    
respondido por el David Cary 14.06.2012 - 19:41
fuente
6

La idea de xkcd comic es generar una frase de contraseña basada en 4 palabras de un pequeño diccionario de aproximadamente 2000 a 3000 extremadamente común palabras.

Si permite que los usuarios elijan palabras de una lista actualizable, reducirá significativamente la entropía. Lo mismo es cierto para permitirles cambiar el orden. Echa un vistazo a XKCD # 936: ¿Contraseña corta y compleja o frase de contraseña larga del diccionario?

Por lo tanto, debe proporcionar un diccionario mucho más grande con palabras menos comunes para compensar.

En el lado práctico: a los usuarios no les gusta escribir contraseñas largas, especialmente en dispositivos sin un teclado adecuado.

    
respondido por el Hendrik Brummermann 08.06.2012 - 23:58
fuente
0

Si bien me gusta la idea de ayudar a los usuarios con una contraseña segura (especialmente inspirada en el cómic XKCD), veo un problema. Tu diccionario. Qué tan grande es este problema, depende de cuál sea su sitio, obviamente.

En primer lugar, su diccionario debe ser enorme y debe contener palabras poco comunes. Aún así, debes asumir que cualquiera que sea el diccionario que tengas, alguien más lo hará también. No soy criptógrafo, pero realmente necesitas muchas palabras porque esas cinco selecciones son las que hacen la contraseña. La otra parte del problema es bastante obvia; Tienes que asegurarlo realmente bien. Si algún genio malvado se apodera de tu diccionario exacto para descifrar los hashes o intentar obtener acceso a la cuenta, será mucho más fácil.

Ahí es donde entra en juego la importancia de su sitio. Ya que proporciona la contraseña para el usuario, es poco probable (pero no imposible) que el usuario elija utilizar la misma contraseña en otro lugar. Entonces, si alguien obtiene su DB, Brute forzar los hashes no les proporcionará algo realmente útil.

Además, asegurarse de bloquear las cuentas después de X intentos fallidos de inicio de sesión (y hacer que los intentos de inicio de sesión sean realmente lentos) ayudará a garantizar que los atacantes tengan problemas para obtener acceso a las cuentas mediante un diccionario robado.

Solo un poco de reflexión sobre este interesante tema, espero que los encuentres útiles.

    
respondido por el pyrocumulus 08.06.2012 - 23:47
fuente

Lea otras preguntas en las etiquetas