¿Hay problemas significativos con un patrón de generación de contraseña al usar grupos de consonantes / wovels alternos?

3

Estoy usando un administrador de contraseñas para almacenar contraseñas únicas para todas mis cuentas. La mayoría de las contraseñas se completan automáticamente, se escriben automáticamente o se pueden copiar y pegar, pero en ocasiones, tengo que escribirlas manualmente (por ejemplo, cuentas en el juego, ciertas aplicaciones / servicios móviles, etc.).

Dado que las contraseñas como VeS3XPTUs3w4PN8xGdmN pueden ser difíciles de escribir correctamente de forma manual, he jugado con los patrones del generador de contraseñas para encontrar algo que sea más fácil de "almacenar" en la memoria mientras escribo. Encuentro que las frases que se pueden pronunciar son mucho más fáciles de recordar que las cadenas no pronunciables como las anteriores.

Por ejemplo, un patrón que es más fácil de recordar podría ser grupos delimitados por puntuación de consonantes y vocales alternas:

vudu:ARUD;raxu,URAB:6527
give;ALEZ,jabu.ACUP,4722
kuge.UTUF,xura;EVEG.7334
kiro.AVAJ.vovo:AHAY;4786

Me doy cuenta de que cualquier patrón hará que las contraseñas sean más fáciles de descifrar si un atacante descubre el patrón. Para los ejemplos anteriores, supongo que

  • todos los grupos de letras podrían estar en minúsculas, ya que el número de combinaciones es el mismo y si un grupo está en mayúsculas o en minúsculas, está dado explícitamente por el patrón
  • el grupo de números al final sería mejor que otro grupo de letras, ya que el patrón indica explícitamente si son números o letras, y un grupo de letras que sigue el patrón anterior tendría (ligeramente) más combinaciones

En otras palabras, los siguientes ejemplos podrían ser un poco más difíciles de descifrar si un atacante conoce el patrón:

vapu-dapu-fato-sovu-gazi
mipi-rodo-qiba-tiwu-cihe
qana-jeru-hibu-toka-xixu
fuca-kigu-moka-koxu-yopu

Al mismo tiempo, incluir minúsculas, mayúsculas y números hará que sean más difíciles de forzar. Nuevamente, si las contraseñas son tan largas, el último grupo de ejemplos anterior podría ser suficiente de todos modos.

¿Hay algo que deba saber antes de usar dichos patrones para generar contraseñas? Específicamente, se podría (o debería) mejorar el patrón, y se podría simplificar sin perder una seguridad significativa (o, alternativamente, se podría usar un secuencia sin sentido de palabras reales )?

    
pregunta cmeeren 11.02.2017 - 12:13
fuente

4 respuestas

5

Cálculo de la entropía para el patrón vapu-dapu-fato-sovu-gazi

Hagamos algunos cálculos para el siguiente tipo de patrón:

  

vapu-dapu-fato-sovu-gazi

Suponiendo que hay cinco vocales, 'a', 'e', 'i', 'o', 'u' y 21 consonantes, y siempre empiezas con una consonante, puedes construir 21 * 5 * 21 * 5 (11025) palabras únicas de cuatro letras. Reemplazar el último grupo con un número aleatorio de cuatro dígitos produce 10000 en lugar de 11025 posibilidades para el último grupo.

Si pegas 5 de estas palabras juntas, obtienes 11025⁵ posibles contraseñas (ignoraré los guiones porque si se conoce el patrón del generador, no agregarán ninguna seguridad).

Esto te da un espacio de búsqueda de contraseña de tamaño 162889462677744140625. Eso es igual a 67 bits de entropía, si eliges tus consonantes y vocales de una manera completamente aleatoria .

Los 67 bits no son excelentes, pero son mucho, mucho mejores que la entropía de contraseña promedio. Suponiendo un atacante bien financiado que tiene los recursos (botnets?) De un millón de computadoras disponibles que pueden verificar un millón de contraseñas por segundo, se necesitarán cuatro años y medio para buscar exhaustivamente el espacio de contraseñas, y en promedio un poco más Más de 2 años para encontrar la contraseña correcta.

Si un atacante ignorara su esquema de contraseña y simplemente intentara cada cadena de 24 caracteres posible, tomaría mucho más tiempo.

¿Son razonables 10 12 conjeturas por segundo?

Para dar un poco de contexto a las suposiciones anteriores sobre el atacante: un millón de contraseñas adivina que un segundo por máquina es fácilmente factible hoy en día en las GPU si la contraseña está protegida con una función hash muy débil. como MD5 (y el antiguo hash de Windows LM es tan débil que puede llegar a unos billones y adivinar un segundo; el lenguaje hashcat es 'Megahashes' y 'Gigahashes' por segundo ...). No es factible cuando la contraseña está protegida con funciones hash de contraseñas seguras como bcrypt, scrypt, etc. Dependiendo de la configuración, puede llegar a cualquier lugar entre un hash y unos pocos kilohashes por segundo. Los tamaños de botnet de un millón de zombies son optimistas para un atacante (la botnet Mirai muy grande, que esclavizaba los dispositivos de IoT que no funcionaban muy bien como crackers de contraseñas, consistía en unos 100'000 dispositivos), la mayoría de las botnets son más pequeñas. Finalmente, tener una red de bots que ejecute un millón de CPU o GPU en, digamos, un 20% de capacidad para descifrar contraseñas durante dos años sin parar probablemente atraiga la atención de alguien más tarde o más temprano.

Si no está satisfecho con estas suposiciones, sugeriría lo siguiente: Imagine el atacante contra el que desea protegerse. Vea qué recursos necesitaría para lograr su objetivo y luego formule una conjetura acerca de si puede costear estos recursos. Por ejemplo, encontrar los recursos necesarios para hacer 10 12 adivinanzas por segundo (alquilar varios botnets grandes durante dos años o comprar y ejecutar el hardware usted mismo) probablemente esté fuera del alcance de todos, excepto de las grandes corporaciones. , crimen organizado y estados nacionales.

¿Qué pasa si usas palabras reales?

  

podría simplificarse sin perder una seguridad significativa, o alternativamente, también se podría usar una secuencia sin sentido de palabras reales

Consideremos el uso de palabras reales en lugar de inventadas. Las palabras aleatorias son mucho más difíciles de memorizar, y si utilizara palabras reales de un léxico que contenía, digamos, 7000 palabras, la contraseña resultante aún contendría 63 bits de entropía. Eso es 16 veces más débil, pero puede compensarlo fácilmente agregando otra palabra, lo que produciría 76 bits de entropía y, suponiendo que sea el mismo atacante, lo protegerá por más de dos milenios si la tecnología no avanzara en ese momento. De nuevo, es absolutamente crucial elegir las palabras al azar . El solo hecho de pensar en algunas palabras que vienen a tu mente no es lo suficientemente bueno como . Además, deberías tener cuidado de no elegir 5 palabras muy cortas, porque entonces te abrirías a un ataque de fuerza bruta en la cadena corta resultante.

Consulte el xkcd obligatorio , y Diceware para listas de palabras. O si es demasiado perezoso, puede compre una contraseña por dos dólares de esta chica en la Ciudad de Nueva York :-)

    
respondido por el Pascal 11.02.2017 - 13:57
fuente
3

Si tiene un método de generación de contraseñas, la única forma de conocer la solidez de su contraseña es medir el espacio clave y consigue un número. En su caso más simple, si la contraseña fuera de 24 caracteres con el patrón cvcv-cvcv-cvcv-cvcv-cvcv , y suponiendo que toda la secuencia se generó de una manera verdaderamente aleatoria, la seguridad se calcularía de la siguiente manera:

  • c tiene 21 posibilidades y multiplica tu espacio clave por 21.
  • v tiene 5 posibilidades y multiplica tu espacio clave por 5.
  • " - " es un literal y solo tiene 1 posibilidad (en sí). Multiplica su espacio clave por 1, lo que quiere decir que no agrega seguridad, nada en el espacio clave y debe ignorarse en el cálculo como si no estuviera allí.

La seguridad de cv sería 105 ( 21×5 ). La seguridad de cvcv sería 11,025 ( 21×5×21×5 = 105×105 = 105² ). La seguridad de cvcv-cvcv sería 121,550,625 ( 105×105×105×105 = 105⁴ ). Continuando con el patrón, la seguridad de cvcv-cvcv-cvcv-cvcv-cvcv sería 162,889,462,677,744,140,625 ( 105¹⁰ ≈ 1.63×10²⁰ ).

Siempre "normalizo" mis resultados para poder medir la seguridad de mi contraseña en bits. Su último patrón tendría la seguridad equivalente de aproximadamente 67.14 bits generados aleatoriamente ( log₂(105¹⁰) ), que puede ser bajo si está cifrando datos. Sin embargo, hay formas de extender las contraseñas débiles para hacerlas más difíciles de descifrar al aumentar los recursos (memoria, cálculo , y / o almacenamiento) requerido para probar cada combinación. Todo depende de cómo se usará la contraseña y cuál es su modelo de amenaza.

  

He jugado con los patrones del generador de contraseñas para encontrar algo que sea más fácil de "almacenar" en la memoria mientras escribo. Encuentro que las frases que se pueden pronunciar son mucho más fáciles de recordar que las cadenas no pronunciables como las anteriores.

     

Al mismo tiempo, incluir minúsculas, mayúsculas y números hará que sean más difíciles de fuerza bruta.

Si consideraste un patrón de consonante-vocal en el núcleo de tu esquema porque pensaste que sería más fácil de recordar, entonces incluir información impronunciable como la caja y la puntuación sería contrario a ese objetivo, pero cada persona tiene su Requisitos propios y características de la memoria. Por ejemplo, puedo recordar contraseñas en términos de código JavaScript, lo que me permite recordar secuencias como (para una cuenta de aerolínea quizás):

if(winter){bird[3].fly(south);}else{bird[3].fly(north);}

Lo recuerdo simplemente como una oración en inglés: If it’s winter, bird number three flies south. Otherwise, it flies north. Medir su seguridad sería todo un desafío debido a la naturaleza abierta de dicho sistema de contraseñas, pero la seguridad es en realidad menor de lo que parece.

  

¿Hay algo que deba saber antes de usar dichos patrones para generar contraseñas? Específicamente, se podría (o debería) mejorar el patrón, y se podría simplificar sin perder una seguridad significativa (o, alternativamente, se podría usar un secuencia sin sentido de palabras reales )?

Solo asegúrese de que cumpla con sus requisitos: memorabilidad; pronunciabilidad y seguridad. Cree diferentes métodos candidatos para generar contraseñas y mida la seguridad de cada una (utilizando log₂(…) ).

Y recuerda principio de Kerckhoffs : siempre debes asumir que el atacante sabe todo (incluido el espacio clave) sobre su sistema de seguridad excepto los bits que conforman su clave. Dado un criptosistema razonablemente seguro y buenas prácticas de seguridad, el ataque más fácil sería adivinar la contraseña en sí misma (además de encontrarlo y aplicar ).

    
fuente
2

Se garantiza que la siguiente política producirá frases de contraseña seguras: selecciónelas aleatoriamente con igual probabilidad de un conjunto suficientemente grande . La primera política se puede lograr definiendo un conjunto de reglas que dan una entrada aleatoria (lanzamientos de monedas, tiradas de dados, un generador de números aleatorios criptográficos) elige una frase de contraseña sin ningún sesgo entre las alternativas.

Para la segunda política, el conjunto lo suficientemente grande, si se trata de una frase de acceso de login (¡no encriptación!) para un sitio web que no sea muy importante para usted y que deba recordar de la memoria , Recomendaría dibujar la contraseña de un conjunto con al menos 2 ^ 64 alternativas. Dado que el logaritmo de base 2 del conjunto de alternativas es la entropía de la frase de contraseña, esto significa que obtiene un nivel de seguridad de 64 bits.

Tenga en cuenta que es posible que 64 bits no sean compatibles con un atacante de gran potencia que está decidido a pasar meses para descifrar su frase de contraseña específicamente . Si puede avanzar hasta aproximadamente 2 ^ 80 alternativas, eso es mejor, pero por supuesto eso es más difícil si realmente necesita recordarlas. Si está utilizando un administrador de contraseñas, no hay necesidad de escatimar.

Ahora consideremos tu esquema. El conjunto de caracteres ASCII tiene 21 consonantes y 5 vocales.

Ahora aquí hay un truco para hacer que las matemáticas sean mucho más simples. Si tomamos el logaritmo en base 2 del número de alternativas, obtenemos la entropía de una de esas opciones al azar. Y la entropía de la concatenación de cadenas elegidas independientemente es la suma de sus entropías. Esto significa que tus elecciones al azar te consiguen:

  • log2 (21) = 4.4 bits para cada consonante;
  • log2 (5) = 2.3 bits para cada vocal;
  • log2 (21) + log2 (5) = 6.7 bits para cada sílaba;
  • 2 * (log2 (21) + log2 (5)) = 13.4 bits para cada grupo (ya que los separadores son predecibles y no agregan nada)

Esto significa que la entropía de sus frases de contraseña es el número de grupos multiplicado por 13.4. Y eso significa que necesitas:

  • 5 grupos para llegar al umbral de 64 bits;
  • 6 grupos para llegar al umbral de 80 bits.

Lo que significa que sus ejemplos, si se seleccionaron de forma aleatoria , cumplen con el umbral de 64 bits porque tienen 5 grupos:

vapu-dapu-fato-sovu-gazi
mipi-rodo-qiba-tiwu-cihe
qana-jeru-hibu-toka-xixu
fuca-kigu-moka-koxu-yopu

Así que si agregar un grupo adicional a tus frases de contraseña no es una molestia, te recomiendo hacerlo, pero tu longitud más corta no es mala. Lo único que le advierto es esto: use un generador de números aleatorios criptográficamente seguro .

    
respondido por el Luis Casillas 12.02.2017 - 03:45
fuente
0

Supongamos que en el peor de los casos, el atacante sabe que está utilizando este método. Esto no es un supuesto exagerado, ya que el atacante podría obtener algunas de sus contraseñas de los servicios de baja seguridad y notar el patrón.

¿Qué tan alta sería la entropía de su esquema de contraseña?

Pareces considerar que Y es una consonante, entonces hay 5 vocales y 21 consonantes. Eso significa que hay 5 * 21 = 105 posibles pares de vocal-consonante.

El último ejemplo tiene 10 pares de este tipo, por lo que tiene 105 ^ 10 contraseñas posibles. Esto supera con creces la recomendación habitual de 8 letras de mayúsculas y minúsculas, números y caracteres especiales mecaneables (aproximadamente 80 ^ 8, dependiendo de los caracteres especiales que tenga en cuenta).

El primer ejemplo no es realmente muy diferente de eso. Usted varía la capitalización y el orden de la consonante y la vocal, pero lo hace con un patrón predecible, por lo que es irrelevante para el peor de los casos mencionados anteriormente. Tiene dos pares de caracteres menos, pero compense eso con un número de 4 dígitos y 4 ^ 4 = 256 posibles variaciones de puntuación, que es más fuerte en aproximadamente 200 factores (2,560,000 contra 11,025).

    
respondido por el Philipp 11.02.2017 - 13:59
fuente

Lea otras preguntas en las etiquetas