Los cerebros humanos son pobres RNG. Las personas son malas para generar valores aleatorios en la privacidad de sus cabezas. Simplemente no pueden pensar al azar; aunque pueden convencerse a sí mismos de que lo hacen.
El proceso físico, por otro lado, es una buena fuente de entropía. Toma los movimientos de tu ratón. Una docena de veces por segundo, el mouse mide la distancia que se ha movido desde la última marca y envía esa información al servidor. Cuando su mano tiembla, tiende a hacerlo con cierta regularidad, pero la biología es tal que cada movimiento elemental estará sujeto a cierta fluctuación, que es sustancialmente más grande que la precisión del mouse; incluso con mucho entrenamiento, es muy difícil para una mano humana hacer el mismo movimiento repetidamente (de lo contrario, habría muchas más personas como Yehudi Menuhin ). Así que la conclusión es que las medidas de movimiento del mouse contienen algo de entropía. (Recuerde que la "entropía" se define aquí como "aquello que el atacante no sabe"; el mouse ciertamente sabe cuánto se ha movido, ya que es ese mouse el que realmente envía los valores en los que se basa el RNG).
La otra mitad de la respuesta es agregación . Un RNG basado en ratón utilizará cientos o incluso miles de medidas, las acumulará todas y las condensará en una semilla apropiada que concentrará toda esa entropía. Esto es bastante simple: simplemente alimente todos los valores a una función criptográfica hash, por ejemplo. SHA-256, y obtendrás una semilla de 256 bits que tiene toda la entropía de origen, donde sea que estuviera escondida en los movimientos medidos del mouse. Las funciones hash son buenas para eso; reducen el tamaño pero mantienen la entropía (hasta el tamaño de salida de la función hash, pero 256 bits es más que suficiente para todos los propósitos).
Un atacante puede adivinar que el usuario hará círculos, pero tendrá dificultades para hacer todos los movimientos individuales correctamente, especialmente porque la psicología no lo ayudará: el propio usuario humano no tiene idea de cómo se convierten los movimientos de sus manos. números. Ya que estamos hablando de cientos de números, el número de combinaciones posibles (es decir, "entropía") aumenta exponencialmente. Contrasta eso con un usuario humano que piensa en una nueva contraseña: el usuario elegirá las letras siguiendo algún pensamiento interno "ingenioso", que el atacante puede adivinar más o menos brutalmente (por ejemplo, si las letras son todas las primeras letras de algunas palabras en una oración de un libro, el atacante puede probar automáticamente todas las oraciones de todos los libros que puede encontrar en formato electrónico); y, lo que es más importante, al usuario humano no se le molestará en producir más de una docena de personajes "aparentemente aleatorios".
En las contraseñas, la longitud no hace fuerza, pero la falta de longitud puede ser bastante efectiva para prevenir la fuerza.