¿Qué está haciendo cuando mueve su mouse aleatoriamente durante la creación de un volumen de truecrypt?

15

¿Se denomina "redondeo" cada vez que mueves el mouse cuando creas un nuevo volumen? Estoy hablando de la pantalla con los números aleatorios durante el proceso de creación de volúmenes. ¿Cuál es el propósito de hacer el movimiento aleatorio?

Vi que Lastpass ahora está haciendo '100,000 rondas', no estoy seguro de qué significa exactamente.

Nuevo en el mundo del cifrado aquí :)

    
pregunta hwp08 06.01.2012 - 23:26
fuente

4 respuestas

23

Estás creando algo llamado "entropía". Los generadores de números aleatorios dentro de las computadoras pueden, si se implementan dentro del software, solo en el mejor de los casos pseudoaleatorios. Los generadores de números pseudoaleatorios (PRNG) comienzan con una semilla. Si la semilla es conocida, cualquier persona con conocimiento del algoritmo de PRNG puede obtener los mismos valores que obtuvo (esto es realmente bueno para cosas como simulaciones y similares, donde necesita un elemento de reproducibilidad, no es bueno para crypto). Así que necesitas comenzar con una semilla no conocida. Tradicionalmente (no para criptografía) esta semilla era la hora del día de la computadora. Sin embargo, para criptografía, necesitas una aleatoriedad mucho más fuerte que esta.

En muchos entornos comerciales, a menudo existe el requisito de que los generadores de números aleatorios (RNG) se basen en una "fuente de ruido" basada en hardware. Esto podría ser cosas como datos de paquetes de red aleatorios, la cantidad de fotones que golpean un detector, la velocidad del aire a través de un sensor o cualquier combinación de cosas que podrían considerarse REALMENTE aleatorias.

Desafortunadamente, estas fuentes de ruido basadas en hardware no suelen tener un uso generalizado en los entornos de los consumidores. Así que lo siguiente es sacar el ruido basado en hardware de otra cosa. Muchos sistemas de encriptación utilizan un humano moviendo un mouse para adquirir esto. Incluso si el ser humano mueve el mouse en círculos o hacia adelante y hacia atrás, generalmente hay suficiente aleatoriedad real en el mundo real en la desviación de la trayectoria del mouse para proporcionar un nivel razonable de entropía para generar el PRNG.

Para ver ejemplos de entropía del mundo real, no busque más que las bolas extendidas en el aire que giran en una jaula de lotería.

Las "rondas" no están relacionadas con la recopilación de entropía y están relacionadas con la cantidad de veces que se ejecuta un algoritmo específico. Casi siempre hay (?) Un mecanismo de retroalimentación que permite que una ronda afecte las rondas posteriores. Aumentar el número de rondas aumenta la cantidad de tiempo que se tarda en cifrar / descifrar datos. Esto es importante ya que puede reducir seriamente cualquier esfuerzo de descifrado por fuerza bruta. Por supuesto, también ralentiza los esfuerzos de CIFRADO.

    
respondido por el logicalscope 06.01.2012 - 23:53
fuente
8

El punto es proporcionar entropy . Truecrypt debe generar una clave secreta para el volumen. Lo hace generando un montón de random bits. Aquí (como suele ocurrir en la criptografía), lo importante no es realmente que los bits que componen la clave son aleatorios en un sentido estadístico, sino que la clave no puede ser predicha o reproducida por un atacante. Una computadora es una máquina determinista¹: si el atacante sabe en qué estado se encontraba cuando comenzó a generar la clave, puede ejecutar Truecrypt y generar la misma clave.

Al mover el mouse, está proporcionando una entrada que el atacante no puede reproducir. Cuanta más entrada proporcione, más difícil será reproducir la clave. Por ejemplo, si la computadora solo registraba un solo movimiento como a la izquierda o a la derecha, entonces solo habría dos claves posibles, y el atacante podría probar ambas; la clave solo tendría 1 bit de entropía (sin importar qué tan larga sea la clave). Idealmente, la clave debe ser completamente aleatoria; Si la clave es, digamos, una clave de 128 bits, el generador de números aleatorios debe tener 128 bits de entropía disponibles. Los movimientos humanos son algo predecibles (no vas a mover el mouse a dos metros a la izquierda), pero cuanto más te mueves, más entropía introduces en la piscina.

El movimiento del ratón no está relacionado con las 100.000 rondas. Las rondas son un problema diferente, relacionado con lo difícil que es para el atacante reproducir su contraseña . Los humanos son notoriamente deficientes para elegir y recordar contraseñas complejas, por lo que el atacante puede probar todas las contraseñas plausibles por la fuerza bruta. Por esta razón, los sistemas criptográficos que usan contraseñas no las usan tal como están, sino que realizan algunos cálculos (un hash criptográfico, por ejemplo, PBKDF2 generalmente se recomienda en estos días) en la contraseña muchas veces. Este cálculo es costoso; su tiempo de ejecución es proporcional al número de rondas. El sistema debe realizar este cálculo iterado una vez por intento de contraseña; el atacante también debe realizarlo una vez por intento de contraseña. Si su sistema tarda 1 segundo en procesar su contraseña cuando monta el volumen en lugar de 10 microsegundos, no es un gran problema, ya que el procesamiento de la contraseña es solo una pequeña fracción de lo que usa su CPU. Pero para el atacante, que está gastando todo su tiempo de CPU en contraseñas de acceso forzado, es capaz de realizar solo 1 intento de craqueo por segundo y no 100,000 por CPU es un gran éxito.

¹ Algunas computadoras tienen un generador de números aleatorios de hardware, que deriva su aleatoriedad de fuentes físicamente imposibles de predecir (o al menos ocultas y extremadamente difíciles de predecir). La decadencia nuclear es buena para esto pero poco práctica. En dispositivos móviles, el ruido blanco de la cámara funciona bastante bien. Pero muchas computadoras carecen de tal generador aleatorio de hardware.

    
respondido por el Gilles 07.01.2012 - 00:09
fuente
2

La generación de números aleatorios mediante un generador pseudoaleatorio puede ser tratada de manera sospechosa por el ultra-paranoide, por lo que vincular parte de la aleatoriedad a una entrada definida por el usuario proporciona cierta confianza de que está "seguro"

    
respondido por el Rory Alsop 06.01.2012 - 23:40
fuente
1

Truecrypt crea un CRC32 de la estructura MOUSEHOOKSTRUCT, que se llena con Windows y se pasa a la función de devolución de llamada definida por Truecrypt cuando mueves el mouse. Echa un vistazo a la definición:

enlace

Se usa la estructura completa, incluidos los miembros como hwnd que no cambian entre llamadas. Debido a la función de prueba de aciertos, se puede decir que obtienes una mejor entropía si mueves el mouse sobre y alrededor de los límites de la ventana. O tal vez lo debilitas. Puedes reflexionar sobre eso.

Si el CRC de la estructura es diferente de la última vez que se ejecutó la devolución de llamada de Truecrypt, se generará un CRC32 del recuento de tics de 32 bits devuelto por GetTickCount (). El CRC de la estructura y el conteo de tics se suman y se procesan con RIPEMD160 de manera predeterminada. El hash resultante se usa para modificar el grupo aleatorio con una operación XOR.

Verlo me hace preguntarme cuánta aleatoriedad realmente agrega este proceso. No hay un gran rango de valores posibles en las coordenadas y, x. El manejador de la ventana será aleatorio para la generación de clave en particular, pero permanecerá sin cambios cada vez que se muestrea el mouse. La prueba de aciertos puede devolver un pequeño número de valores enumerados. Ciertos comportamientos con el mouse harán que esto devuelva un solo valor en todo momento. Hay un puntero para más información. No estoy seguro de cuándo está configurado.

    
respondido por el Anonymous 02.09.2013 - 02:25
fuente

Lea otras preguntas en las etiquetas