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?