¿Existe alguna debilidad práctica en el uso de MT19937 para generar frases de contraseña?

4

Supongamos que uso MT19937 para elegir palabras aleatorias de (digamos) la Diceware lista de palabras. Sé que MT19937 no se considera un PRNG criptográficamente seguro, pero Wikipedia sugiere que la debilidad es bastante poco interesante para este propósito:

  

El algoritmo en su forma nativa no es criptográficamente seguro. La razón es que la observación de un número suficiente de iteraciones ( 624 en el caso de MT19937, dado que este es el tamaño del vector de estado a partir del cual se producen las futuras iteraciones) permite predecir todas las iteraciones futuras. / p>

Ya que parece bastante improbable que necesite algo así como muchas iteraciones para generar una frase de contraseña segura, no veo cómo un atacante podría explotar esta debilidad, asumiendo que mi contraseña está protegida de forma segura y procesada según los estándares de la industria (por ejemplo, PBKDF2 con más de 10k rondas y una sal única por cuenta). Parece que esto solo se considera una debilidad porque hace que MT19937 no sea adecuado para su uso en protocolos criptográficos de larga ejecución y otras situaciones en las que un atacante podría observar muchas iteraciones.

Como MT19937 tiene un período mucho más largo que el número de posibles frases de contraseña, intuitivamente parece que debería ser seguro para este tipo de uso. Pero no me gusta confiar en la intuición.

Mi estimación ingenua de la entropía de la frase de contraseña es log2 (¡N! / (N - r)!) para N = el número de palabras en el diccionario y r = el número de palabras en la frase de contraseña (estamos muestreando sin reemplazo) ; si se toman muestras con reemplazo, los números aumentan un poco, pero no mucho, y de todos modos no quiero una frase de contraseña con palabras repetidas). Esto es al mismo tiempo lo suficientemente grande como para no ser práctico para atacar, y es sustancialmente más pequeño que 19937 bits para valores razonables de N y r (por ejemplo, N = 2 ^ 12 yr = 5 ), por lo que parece seguro. Pero no tomé en cuenta el uso de MT19937 porque no sé cómo hacerlo.

¿Existen ataques conocidos o razonablemente probables en las frases de contraseña generadas, en salazón y de esta manera? En particular, ¿el conocimiento del PRNG utilizado nos permite reducir significativamente la entropía?

    
pregunta Kevin 13.01.2016 - 21:27
fuente

1 respuesta

3

No tienes que preocuparte por la fuerza criptográfica. De hecho, no obtendrás suficientes valores para que el ataque importe, e incluso si lo hicieras, nadie puede observar esos valores. (Por supuesto, si crea millones de contraseñas y asume que algún porcentaje de ellas está comprometido, eso podría cambiar las cosas).

Lo que tienes que tener cuidado es cuál es tu semilla inicial. Si usa, por ejemplo, la hora, entonces un atacante solo tiene que adivinar a qué hora creó su contraseña.

Conocer el PRNG solo ayuda a reducir la entropía si el PRNG es extremadamente malo. Mucho peor que MT19937.

    
respondido por el Corporal Touchy 14.01.2016 - 00:38
fuente

Lea otras preguntas en las etiquetas