GNU/Linux >> Tutoriales Linux >  >> Linux

¿Agregar entropía de números aleatorios para claves GPG?

Hay una pizca de verdad en esto, de hecho más verdad que mito, pero no obstante la declaración refleja un malentendido fundamental de lo que está pasando. Sí, mover el mouse mientras se genera una clave con GPG puede ser una buena idea. Sí, mover el mouse aporta algo de entropía que hace que los números aleatorios sean aleatorios. No, mover el mouse no hace que la llave sea más segura.

Todos los buenos generadores aleatorios aptos para criptografía, y Linux está en esa categoría, tienen dos componentes:

  • Una fuente de entropía, que no es determinista. El propósito de la entropía es arrancar el generador de números aleatorios con datos impredecibles. La fuente de entropía debe ser no determinista:de lo contrario, un adversario podría reproducir el mismo cálculo.
  • Un generador de números pseudoaleatorios, que produce números aleatorios impredecibles de forma determinista a partir de un estado interno cambiante.

La entropía tiene que provenir de una fuente externa a la computadora. El usuario es una fuente de entropía. Lo que hace el usuario en su mayoría no es aleatorio, pero la sincronización fina de las pulsaciones de teclas y los movimientos del mouse es tan impredecible que es ligeramente aleatorio, no muy aleatorio, pero poco a poco se acumula. Otras posibles fuentes de entropía incluyen la temporización de los paquetes de red y el ruido blanco de la cámara o el micrófono. Las diferentes versiones y configuraciones del kernel pueden usar un conjunto diferente de fuentes. Algunas computadoras tienen circuitos RNG de hardware dedicados basados ​​en la desintegración radiactiva o, lo que es menos impresionante, circuitos electrónicos inestables. Estas fuentes dedicadas son especialmente útiles en dispositivos integrados y servidores que pueden tener un comportamiento bastante predecible en su primer arranque, sin que el usuario haga cosas raras.

Linux proporciona números aleatorios a los programas a través de dos dispositivos:/dev/random y /dev/urandom . La lectura desde cualquiera de los dispositivos devuelve calidad criptográfica. Ambos dispositivos usan el mismo estado RNG interno y el mismo algoritmo para transformar el estado y producir bytes aleatorios. Tienen limitaciones peculiares que hacen que ninguno de ellos sea lo correcto:

  • /dev/urandom puede devolver datos predecibles si el sistema aún no ha acumulado suficiente entropía.
  • /dev/random calcula la cantidad de entropía disponible y bloquea si no hay suficiente. Esto suena bien, excepto que el cálculo se basa en consideraciones teóricas que hacen que la cantidad de entropía disponible disminuya linealmente con cada bit de salida. Así /dev/random tiende a bloquearse muy rápidamente.

Los sistemas Linux guardan el estado RNG interno en el disco y lo restauran en el momento del arranque. Por lo tanto, la entropía se traslada de una bota a la siguiente. El único momento en que un sistema Linux puede carecer de entropía es cuando está recién instalado. Una vez que hay suficiente entropía en el sistema, la entropía no disminuye; solo disminuye el cálculo defectuoso de Linux. Para obtener más explicaciones sobre esta consideración, lea /dev/urandom es adecuado para generar una clave criptográfica, por un criptógrafo profesional. Consulte también ¿Puede explicar la estimación de entropía utilizada en random.c?

Mover el mouse agrega más entropía al sistema. Pero gpg solo puede leer desde /dev/random , no /dev/urandom (una forma de resolver este problema es hacer /dev/random el mismo dispositivo 1:9 que /dev/urandom ), por lo que nunca corre el riesgo de recibir números aleatorios no lo suficientemente aleatorios. Si no mueve el mouse, la tecla es tan aleatoria como puede ser; pero lo que puede pasar es que gpg se bloquee en una lectura de /dev/random , esperando que aumente el contador de entropía del kernel.


GPG está utilizando el generador de números aleatorios de Linux (kernel). El generador del kernel obtiene entropía (aleatoriedad) de todo tipo de lugares, entre ellos está el tiempo de interrupción, para ciertas interrupciones. Mover el mouse (y escribir, actividad del disco, etc.) generará interrupciones.

Por lo tanto, mover el mouse potencialmente alimenta el generador de números aleatorios. Pero si lo hace depende de la versión exacta del kernel en uso; Las versiones más nuevas (al menos en mis pruebas) no usan interrupciones de teclado o mouse para la entropía. Sin embargo, la actividad del disco sí lo hace (por ejemplo, ejecutar sync agregará una cantidad potencialmente grande de entropía, dependiendo de cuánto se lave).

En resumen:esto no es cierto en las versiones actuales de Linux. Estaba en los más antiguos.

Sin embargo, si el generador se queda sin entropía, se supone que simplemente se detendrá, por lo que la generación de claves se bloqueará hasta que se genere algo de entropía. Así que sería un problema eterno, no un problema de seguridad.

Puedes ver cuánta entropía está disponible por cat /proc/sys/kernel/random/entropy_avail .


Linux
  1. Cómo ejecutar el comando Ping solo para N cantidad de paquetes

  2. Número aleatorio entre rango en shell

  3. /dev/random ¿Extremadamente lento?

  4. ¿Cómo seleccionar un número de puerto estático para una aplicación personalizada?

  5. Buscando una cantidad de archivos para una cadena en LInux

Golpe para bucle

Bash For Loop:la guía más práctica

¿Error en el script de conteo para el número de ocurrencias?

Linux:¿herramienta para medir la calidad de la entropía?

¿Cómo buscar claves o valores en Dconf?

Genere claves SSH para iniciar sesión sin contraseña en Ubuntu