Generador de números aleatorios de hardware para su FPGA

[Zach] envió un proyecto en el que estaba trabajando que trae generadores de números aleatorios de hardware al hardware común sobre el que podría estar mintiendo. Se llama Whirlyfly y convierte una placa de desarrollo FPGA en un número aleatorio de hardware capaz de generar bits aleatorios a través de una conexión USB a 3 Mbps.

Anteriormente, el whirlygig funcionaba con un CPLD personalizado, que interactuaba con una caja * nix y proporcionaba números aleatorios de alta calidad con / dev / hw_random. [Zach]Los esfuerzos toman el núcleo del whiglygig y lo transportan al muy popular y económico software FPGA Butterfly One.

Acerca de [Zach] se puede hacer con su generador de números aleatorios, es extremadamente fácil escribir un experimento de Monte Carlo para aproximar el valor de π con mejor precisión que [Ptolemy] podría recolectar hace 1900 años. También está el aspecto del cifrado y, por qué haría esto, no lo sabemos en absoluto, también es posible hacer un archivo incompresible.

  • Sr. X dice:

    Ajá de hecho. Comience a bombear esos bytes a box.com, Google Drive, dropbox, etc. ¡y observe cómo sufren!

    Todos estos servicios se basan en la duplicación y compresión de datos para hacer coincidir toda la información en sus centros de datos. De lo contrario, les sería imposible guardar toda la información con tanta facilidad.

  • Jeff dice:

    Un archivo sin comprimir puede resultar útil para realizar algunas pruebas, como medir la velocidad de transferencia de datos. Debido a que algunos servicios (como HTTP / S con cualquier acelerador) se comprimen durante el vuelo y esto puede afectar sus resultados, puede ser conveniente omitir un archivo que no se puede completar.

  • Kaz dice:

    También puede utilizar un archivo sin comprimir para evitar la piratería rápida de medios grandes (como un videojuego basado en CD / DVD). Según recuerdo, leí sobre algunos juegos que usaban esa técnica un poco atrás (hasta que alguien encontró ese archivo, se dio cuenta de que era una mierda y lo reemplazó con un archivo lleno de ceros).

  • Galane dice:

    Ahora, ¿qué tal si se utiliza la entrada de oticaose natural como semilla de número aleatorio, como hizo SGI con su proyecto Lavaranda?

    Utilizaba una cámara web de baja resolución dirigida a seis lámparas de lava y utilizaba periódicamente imágenes de la cámara como datos semanales que se ejecutaban en dos generadores de números aleatorios.

    Participé en una charla de IRC con uno de los inventores del sistema, quien dijo que armarían una para una “institución financiera importante” para proteger los datos importantes almacenados en un disco CD-ROM. Extremadamente paranoico, el cliente insistió en tener el volante del CD-ROM dentro de un horno microondas, conectado al sistema de alarma. Si alguien se rompiera (más allá de todos los demás sistemas de seguridad), el microondas freiría el disco.

    El cliente también insistió en escribir con precisión cuidados específicos, incluyendo paso a paso cómo cambiar las bombillas en las lámparas de lava.

    Apuntar la cámara a cualquier paisaje natural caótico también funcionaría, pero SGI usó las lámparas de lava porque eran geniales.

    • xenrelay dice:

      Galane, finito. La mayoría de los PRNG ahora vienen con alguna forma de sembrar el PRNG, así que siembre PRNG con algunos datos de HW-RNG.

      En realidad, este es un procedimiento recomendado con algunos RNG HW; a menudo tienen algunos prejuicios fuertes, de ahí la necesidad de mezclar / acondicionar / ... hardware. Pero una forma fácil de tratar el condicionamiento y garantizar un buen resultado estadístico es utilizar PRNG como parte condicional.

      Este tiene un fuerte sesgo hacia una frecuencia particular en los datos brutos, pero los problemas condicionales se encargan de eso.

    • Artenz dice:

      O puede tomar una cámara web, poner una cubierta en la lente y aumentar la ganancia hasta que vea aparecer un ruido aleatorio.

  • Greenaum dice:

    ¿Alguien quiere contarnos cómo se hace? ¿De dónde saca la oportunidad? ¿Por qué necesitas una FPGA completa? O si no todo el FPGA, ya sabes a lo que me refiero ... ¿Se supone que debes medir el ruido de una resistencia o un diodo o algo así?

    • Colin dice:

      https://github.com/zdavkeos/whirlyfly#about

      "Whirlygig utiliza una serie de cadenas de inversores desbloqueadas para generar piezas verdaderamente aleatorias".

      También en Wikipedia: http://en.wikipedia.org/wiki/Ring_oscillator#Jitter y http://en.wikipedia.org/wiki/Ring_oscillator#Applications

      Parece que esta es una forma bastante común de crear dispositivos RNG. Se utiliza una serie de inversores para construir un oscilador que tiene un estrés impredecible basado en diversas variaciones ambientales y de fabricación.

      En cuanto a por qué haría esto en lugar de usar una resistencia o un diodo, supongo que es más difícil fabricar resistencias en silicio, y si ya está usando FPGA, tiene acceso programable a los inversores desbloqueados, pero no al individuo. uniones de diodos.

Ricardo Vicente
Ricardo Vicente

Deja una respuesta

Tu dirección de correo electrónico no será publicada.