Sistema de generación de números aleatorios basándose en el ruido de arranque de una memoria.

Un sistema de generación de números aleatorios para generar una secuencia de números aleatorios

, que comprende

- una memoria, siendo la memoria escribible, volátil y estando configurada de tal manera que la memoria contiene un contenido de memoria al menos parcialmente aleatorio tras cada puesta en funcionamiento de la memoria, y

- una unidad de instanciación configurada para iniciar el sistema de generación de números aleatorios con una dependencia inicial del contenido de memoria al menos parcialmente aleatorio, generándose la secuencia de números aleatorios dependiendo del valor inicial,

caracterizado por que comprende además:

- una unidad de sobreescritura configurada para sobrescribir al menos una parte de la memoria con los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial.

Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/EP2012/056277.

Solicitante: INTRINSIC ID B.V.

Nacionalidad solicitante: Países Bajos.

Dirección: HIGH TECH CAMPUS 9 5656 AE EINDHOVEN PAISES BAJOS.

Inventor/es: VAN DER SLUIS,ERIK, SCHRIJEN,GEERT JAN, HANDSCHUH,HÉLÉNA.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Métodos o disposiciones para el tratamiento de datos... > G06F7/58 (Generadores de números aleatorios o seudoaleatorios)

PDF original: ES-2530944_T3.pdf

 

google+ twitter facebook

Fragmento de la descripción:

Sistema de generación de números aleatorios basándose en el ruido de arranque de una memoria Campo de la invención

La invención se refiere a un sistema de generación de números aleatorios para generar una secuencia de números aleatorios.

Antecedentes de la invención

La generación de números aleatorios se usa en campos muy diferentes, que van desde las simulaciones, por ejemplo, los métodos de Monte Cario, los sistemas de telecomunicaciones, por ejemplo, para seleccionar frecuencias de espectro disperso en los juegos de azar, etc. Aunque, la calidad de los números aleatorios usados es importante para todos estos campos, adquiere una especial importancia en el campo de la criptografía.

En criptografía, los números aleatorios se usan para muchos fines y, a menudo la seguridad de un sistema criptográfico depende de la calidad de los números aleatorios. Por ejemplo, la generación de claves emplea frecuentemente una fuente de números aleatorios. Otras aplicaciones de los números aleatorios en la criptografía incluyen la generación de un nonce, la generación de un desafío para su uso en un protocolo de desafío-respuesta, como un vector de inicialización, por ejemplo, como el vector de inicialización de un cifrado de bloque que se ejecuta en modo CBC.

Otras aplicaciones de seguridad también pueden emplear números aleatorios, por ejemplo, las contramedidas contra el análisis de canal lateral pueden emplear la invisibilidad de la información secreta con un número de invisibilidad aleatorio.

En estas aplicaciones, si los números aleatorios no son suficientemente aleatorios, comprometen la seguridad de la aplicación criptográfica en la que se usan.

Una secuencia de números aleatorios es preferentemente impredecible. De esta manera, un atacante no puede predecir una secuencia antes de que se haya producido mejor que al azar. Del mismo modo, la secuencia no se puede reproducir de forma fiable. Después de que se haya producido una secuencia, no es factible que se produzca de nuevo.

Para la secuencia impredecible, es inviable dadas las demandas de seguridad de la aplicación, predecir cuál será el siguiente bit aleatorio, incluso si uno tiene un conocimiento completo del algoritmo, del hardware que genera la secuencia, y todos los bits generados anteriormente.

Una verdadera secuencia de números aleatorios tiene todas estas propiedades, pero también puede obtenerse a partir de una secuencia de números aleatorios determinísticos si tiene un valor inicial aleatorio adecuado.

Los objetos que un generador de números aleatorios produce pueden interpretarse de varias maneras, como números, por lo general a partir de un intervalo predeterminado, como caracteres, o como bits, etc. Una secuencia de bits puede mapearse a una secuencia de números y viceversa. Se usa también el término generador de bits aleatorio, y puede considerarse como un generador de números aleatorios que genera números enteros aleatorios entre y 1. Lo que se aplica a un generador de bits aleatorios se aplica también, mutatis mutandis, a un generador de números aleatorios y viceversa.

Los generadores de bits aleatorios (RBG) pueden dividirse en dos clases. Los generadores de números aleatorios de una clase que producen bits de manera no determinista, en la que cada bit de salida se basa en un proceso físico que es impredecible; estos generadores de bits aleatorios son comúnmente conocidos como generadores de bits aleatorios no deterministas (NRBG). Los generadores de números aleatorios de la otra clase calculan los bits de manera determinista usando un algoritmo; esta clase de RBG se conoce como generadores de bits aleatorios deterministas (DRBG). A un NRBG se le conoce también como un generador de números aleatorios verdadero. A un DRBG se le conoce también como un pseudo generador de números aleatorios.

Un generador de bits aleatorios determinista se inicia normalmente con un valor inicial. Un valor inicial es una secuencia limitada de números, por ejemplo, una cadena de bits usados como entrada para un generador de números aleatorios determinista. El valor inicial determinará la totalidad o una parte de un estado interno del generador. La entropía del valor inicial debe ser suficiente para soportar los requerimientos de seguridad del DRBG. El valor inicial puede obtenerse a partir de un generador de números aleatorios verdadero.

Los generadores de bits aleatorios deterministas se describen con más detalle en La Publicación Especial NIST 8- 9, Recommendation for Random Number Generation Using Deterministic Random Bit Generators, de marzo de 27. Se hará referencia a esta publicación como la norma NIST.

La mayoría de los generadores de números aleatorios verdaderos usan el ruido térmico como el proceso aleatorio. Por ejemplo, el ruido térmico en los circuitos integrados describe pequeñas fluctuaciones de tensión que existen en los conductores en equilibrio. Otras fuentes de aleatoriedad incluyen la desintegración del material radioactivo, los procesos de la mecánica cuántica, la inestabilidad de la frecuencia de los osciladores de funcionamiento libre, etc.

Una fuente adicional de números aleatorios verdaderos se describe en: D. Holcomb, W. Burleson, K. Fu, Powerup SRAM State as an Identifying Fingerprint and Source of True Random Numbers, IEEE Transactions on Computers, 29. En el documento se describe que puede usarse una SRAM como un generador de números aleatorios verdadero, puesto que el contenido de la memoria de una SRAM es parcialmente aleatorio después de la puesta en funcionamiento de la SRAM.

Sumario de la invención

Existen varias desventajas con el generador de números aleatorios verdadero de Holcomb et al. Puesto que una memoria tiene un tamaño fijo, la cantidad de aleatoriedad que puede producirse a partir de ella es limitado. De hecho, ya que normalmente una memoria no será totalmente aleatoria, los contenidos de la memoria estarán condicionados, lo que resulta en una severa reducción del número de bits aleatorios que pueden obtenerse a partir de un arranque. En consecuencia, el diseño de Holcomb et al. no será adecuado en aplicaciones más prácticas.

Por otra parte, si la memoria usada está integrada en un ordenador, existe una desventaja adicional. Si el ordenador se somete a un reinicio por software, no se cambia el contenido de la memoria. Una aplicación que espera que el contenido de la memoria sea verdaderamente aleatorio usaría los mismos números aleatorios por segunda vez. Para una aplicación criptográfica esto puede socavar gravemente la seguridad del sistema. Además otras aplicaciones de números aleatorios se verían comprometidas puesto que se viola el supuesto de irrepetibilidad.

El sistema de generación de números aleatorios para generar una secuencia de números aleatorios de acuerdo con la invención evita o mitiga las desventajas mencionadas anteriormente. El sistema de generación de números aleatorios comprende una memoria. La memoria es escribible, volátil y configurada de tal manera que la memoria contiene un contenido de memoria al menos parcialmente aleatorio tras cada puesta en funcionamiento de la memoria. El sistema de generación de números aleatorios también comprende una unidad de instanciación configurada para inicializar el sistema de generación de números aleatorios con un valor inicial dependiente del contenido de memoria al menos parcialmente aleatorio. La secuencia de números aleatorios se genera en función del valor inicial. El sistema de generación de números aleatorios también comprende una unidad de sobreescritura configurada para sobreescribir al menos parte de la memoria con los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial.

... [Seguir leyendo]

 


Reivindicaciones:

1. Un sistema de generación de números aleatorios para generar una secuencia de números aleatorios, que comprende

- una memoria, siendo la memoria escribible, volátil y estando configurada de tal manera que la memoria contiene un contenido de memoria al menos parcialmente aleatorio tras cada puesta en funcionamiento de la

memoria, y

- una unidad de instanciación configurada para iniciar el sistema de generación de números aleatorios con una dependencia inicial del contenido de memoria al menos parcialmente aleatorio, generándose la secuencia de números aleatorios dependiendo del valor inicial,

caracterizado por que comprende además:

- una unidad de sobreescritura configurada para sobrescribir al menos una parte de la memoria con los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial.

2. Un sistema de generación de números aleatorios como en la reivindicación 1, en el que la unidad de sobreescritura está configurada para sobrescribir la memoria con números aleatorios a lo largo de la generación de la secuencia de números aleatorios.

3. Un sistema de generación de números aleatorios como en la reivindicación 2, en el que la unidad de sobreescritura está configurada para escribir un número aleatorio generado por el sistema de generación de números aleatorios dependiendo del valor inicial cada vez que se ha generado un número predeterminado de números aleatorios de la secuencia de números aleatorios.

4. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores,

en el que la unidad de sobreescritura está configurada para sobrescribir la al menos una parte de la memoria con los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial, tras recibir el sistema de generación de números aleatorios una señal de reinicio.

5. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores,

en el que un tamaño de bit de la al menos una parte de la memoria es al menos tan grande como un tamaño de bit del valor inicial.

6. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores que comprende una memoria de estado interno para almacenar un estado interno y una unidad de generación configurada para generar un número aleatorio de la secuencia de números aleatorios a partir del estado interno actual junto con la derivación de un nuevo estado interno a partir de un estado interno actual almacenado en la memoria de estado interno.

7. Un sistema de generación de números aleatorios como en la reivindicación 6, en el que el tamaño de bit de la al menos una parte de la memoria es al menos tan grande como un tamaño de bit del estado interno.

8. Un sistema de generación de números aleatorios como en la reivindicación 6, en el que un tamaño de bit de la al menos una parte de la memoria es como máximo el doble del tamaño de bit del estado interno, preferentemente como máximo el tamaño de bit del estado interno, preferentemente igual al tamaño de bit del valor inicial.

9. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores, en el que los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial para sobrescribir la al menos una parte de la memoria son parte de la secuencia de los números aleatorios generados por el sistema de generación de números aleatorios.

1. Un sistema de generación de números aleatorios como una cualquiera de las reivindicaciones 1 a 8, en el que los números aleatorios generados por el sistema de generación de números aleatorios dependiendo del valor inicial para sobrescribir al menos una parte de la memoria comprende datos intermedios del sistema de generación de números aleatorios que no son parte de la secuencia de números aleatorios generados por el sistema de generación de números aleatorios.

11. Un sistema de generación de números aleatorios de la reivindicación 6 en combinación con una cualquiera de las reivindicaciones anteriores, en el que la unidad de generación está configurada para derivar el nuevo estado interno a partir del estado interno actual antes de generar un número aleatorio de la secuencia de números aleatorios a partir del estado interno actual, y en el que la unidad de sobreescritura está configurada para sobrescribir la al menos una parte de la memoria con los números aleatorios derivados a partir del nuevo estado interno antes de generar un número aleatorio de la secuencia de números aleatorios a partir del estado interno actual.

12. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores, en

el que la secuencia de números aleatorios es totalmente dependiente del valor inicial.

13. Un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores en el que la memoria comprende uno cualquiera de entre una memoria SRAM, unos flip-flops y unos bioestables.

14. Una tarjeta inteligente que comprende un sistema de generación de números aleatorios como en una cualquiera de las reivindicaciones anteriores.

15. Un método para generar una secuencia de números aleatorios, que comprende

- poner en funcionamiento una memoria, siendo la memoria escribióle, volátil y estando configurada de tal manera que la memoria contiene un contenido de memoria al menos parcialmente aleatorio tras cada puesta en funcionamiento,

- iniciar con un valor inicial dependiente del contenido de memoria al menos parcialmente aleatorio,

- generar la secuencia de números aleatorios dependiendo del valor inicial

- sobrescribir al menos una parte de la memoria con los números aleatorios generados dependiendo del valor inicial.

16. Un programa informático que comprende un medio de código de programa informático adaptado para realizar 2 todas las etapas de la reivindicación 15 cuando el programa informático se ejecuta en un ordenador.

17. Un programa informático de acuerdo con la reivindicación 16 incorporado en un medio legible por ordenador.