Pregunta

¿Cómo deshabilito las fuentes de entropía?

Aquí hay un poco de antecedentes sobre lo que estoy tratando de hacer. Estoy construyendo un pequeño dispositivo RNG que habla con mi PC a través de USB. Quiero que sea la única fuente de entropía utilizada. Usaré rngd Para agregar mi dispositivo como fuente de entropía.

¿Fue útil?

Solución

La respuesta rápida es "no lo haces".

Nunca elimine las fuentes de entropía. Los diseñadores del generador de números aleatorios lo manipularon para que cualquier nuevo bits aleatorios se mezcle con el estado actual.

Tener múltiples fuentes de entropía nunca debilita la salida del generador de números aleatorios, solo fortalezcala.

La única razón por la que puedo pensar eliminar una fuente de entropía es que apesta la hora de la CPU o el reloj de pared que no puede pagar. Encuentro esto muy poco probable, pero si este es el caso, entonces su única opción es la piratería del kernel. En cuanto a piratear el núcleo, esto debería ser bastante simple. Simplemente comente todas las llamadas a las funciones ADD _*_ aleatorness () a lo largo del código fuente del núcleo (las funciones en sí mismas se encuentran en los controladores/char/random.c). Podría comentar el contenido de las funciones, pero está tratando de ahorrar tiempo en este caso y el tiempo minúsculo que toma la llamada de función adicional podría ser demasiado.

Otros consejos

Una solución es ejecutar una instancia de Linux separada en una máquina virtual.

Sospecho que es posible que desee un generador aleatorio rápido.

Editar Debería haber leído mejor la pregunta

De todos modos, frandom Viene con un tarball completo Para el módulo del núcleo, por lo que puede aprender cómo construir su propio módulo alrededor de su dispositivo USB. Tal vez, incluso puede hacer que reemplace/desplazar/dev/urandom, para que las aplicaciones arbitrarias funcionen con él en lugar de/dev/urandom (por supuesto, dados suficientes permisos, simplemente podría cambiar el nombre de los nodos del dispositivo y 'engañar' la mayoría de las aplicaciones).


Podrías mirar http://billauer.co.il/frandom.html, que implementa eso.

  • ¿No es suficiente /dev /urandom?
    • Discusiones sobre la necesidad de un generador de números aleatorios de numeros más rápido al aumento y caída desde 1996 (que sé). Mi opinión es que /dev /frandom es tan necesario como /dev /cero, que simplemente crea una corriente de ceros. La opinión opuesta común generalmente dice: hágalo en el espacio del usuario.
  • ¿Cuál es la diferencia entre /dev /frandom y /dev /erandom?
    • Al principio escribí /dev /frandom. Luego resultó que una de las ventajas de esta suite es que salva la entropía del núcleo. Pero /Dev /Frandom consume 256 bytes de datos aleatorios del núcleo (que, a su vez, pueden comer algo de entropía) cada vez que se abre un archivo de dispositivo, para sembrar el generador aleatorio. Entonces hice /dev /erandom, que utiliza un generador aleatorio interno para la siembra. La "f" en frandom significa "rápido" y "e" para "económico": /dev /erandom no usa entropía de núcleo en absoluto.
  • ¿Qué tan rápido es?
    • Depende de su computadora y versión de kernel. Las pruebas muestran constantemente 10-50 veces más rápido que /dev /urandom.
  • ¿Funcionará en mi núcleo?
    • Lo más probable es que sea, si es> 2.6
  • ¿Es estable?
    • Desde que lanzó la versión inicial en el otoño de 2003, al menos 100 personas la han probado (probablemente muchas más) en sistemas i686 y x86_64 por igual. Han llegado informes de pruebas exitosos y cero quejas. Entonces sí, es muy estable. En cuanto a la aleatoriedad, tampoco ha habido ninguna queja.
  • ¿Cómo se generan los datos aleatorios?
    • Frandom se basa en el algoritmo de cifrado RC4, que se considera seguro, y es utilizado por varias aplicaciones, incluido SSL. Comencemos con cómo funciona RC4: toma una llave y genera un flujo de bytes pseudo-aleatorios. El cifrado real es una operación XOR entre este flujo de bytes y el flujo de datos ClearText.
    • Ahora a Frandom: cada vez /Dev /Frandom se abre, se inicializa una transmisión pseudo-aleatorio distinta utilizando una clave de 2048 bits, que se elige haciendo algo equivalente a leer la llave de /dev /urandom. La secuencia de pseudo-aleatorio es lo que lees de /dev /frandom.
    • Frandom es simplemente RC4 con una clave aleatoria, solo sin el XOR al final.
  • ¿Frandom genera buenos números aleatorios?
    • Debido a sus orígenes, los números aleatorios no pueden ser tan malos. Si lo fueran, RC4 no valdría nada. En cuanto a las pruebas: los datos directamente "copiados" de /dev /frandom se probaron con la batería "acérrima" de las pruebas, desarrollada por George Marsaglia. Se aprobaron todas las pruebas, lo que se considera una buena indicación.
  • ¿Se puede usar frandom para crear almohadillas únicas (criptología)?
    • Frandom nunca fue destinado a fines criptográficos, ni se hizo ningún pensamiento especial a los ataques. Pero hay muy poco espacio para atacar el módulo, y dado que el módulo se basa en RC4, tenemos el siguiente hecho: usar datos de /dev /frandom como una almohadilla única es equivalente a usar el algoritmo RC4 con un 2048- Bit Key, lea de /dev /urandom.

En pocas palabras: probablemente esté bien usar Frandom para fines de cifrado. Pero no lo hagas. No era la intención.

Nota adicional, demasiado grande para hacer comentarios:

Dependiendo de su configuración, RNGD puede dominar el grupo de entropía del núcleo, al alimentarlo tantos datos, con tanta frecuencia, que otras fuentes de entropía se ignoran o se pierden principalmente. No lo haga a menos que confíe en la fuente de datos aleatorios de RNGD en última instancia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top