ES2326718B1 - Generador de numeros realmente aleatorios. - Google Patents
Generador de numeros realmente aleatorios. Download PDFInfo
- Publication number
- ES2326718B1 ES2326718B1 ES200702299A ES200702299A ES2326718B1 ES 2326718 B1 ES2326718 B1 ES 2326718B1 ES 200702299 A ES200702299 A ES 200702299A ES 200702299 A ES200702299 A ES 200702299A ES 2326718 B1 ES2326718 B1 ES 2326718B1
- Authority
- ES
- Spain
- Prior art keywords
- signal
- clk
- output
- port
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
- H03K3/84—Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pulse Circuits (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
Generador de números realmente aleatorios.
Generador de números aleatorios, que comprende
un primer circuito para compensación digital de retardo (CCDR1), un
segundo circuito para compensación digital de retardo (CCDR2), un
primer flip-flop (DFF1), un segundo
flip-flop (DFF2) y un tercer
flip-flop (DFF3). Adicionalmente el generador
comprende un circuito de control y enganche.
Dicho generador consigue un estado estacionario
de generación de números aleatorios logrando un cierto desfase
entre una primera señal de reloj (CLK) y una segunda señal de reloj
(clk_des), de tal modo que el segundo flip-flop
(DFF2) trabaje en un estado de metaestabilidad.
Description
Generador de números realmente aleatorios.
La presente invención pertenece al campo de la
electrónica digital, más concretamente al de los generadores de
números aleatorios.
Cuando una aplicación requiere números
aleatorios se pueden emplear secuencias de números aleatorios
existentes o generar nuevas secuencias. El primer caso consiste en
emplear secuencias aleatorias disponibles en bases de datos, lo
cual tiene la ventaja de emplear datos cuyas características
estadísticas han sido previamente analizadas, pero, por el
contrario, existe un grave problema de seguridad. Por este motivo,
lo más habitual es generar los números aleatorios en tiempo real en
un generador que reúna los requisitos impuestos por la aplicación.
Requisitos habituales para las secuencias generadas son:
distribución uniforme, autocorrelación tendente a cero, varianza
determinada, período largo, velocidad de generación determinada,
etc.
La mayor parte de los generadores de números
aleatorios son en realidad generadores de números pseudoaleatorios,
es decir, son secuencias de números generadas de manera
determinística. Las secuencias parecen aleatorias, pero se calculan
mediante la aplicación de un algoritmo a un número inicial o
semilla. Siempre que se parta de una misma semilla la secuencia
generada será exactamente la misma. Su mayor ventaja es que permiten
la generación a alta velocidad, sólo requieren una semilla inicial
y se pueden reproducir exactamente. Existen multitud de estos
generadores probados y descritos en detalle actualmente y se pueden
destacar, entre otros, los siguientes métodos: generadores de
congruencia lineal, generadores de desplazamiento de bits,
generadores de Fibonacci y de Galois, generadores no lineales,
etc.
Aunque los generadores de números
pseudoaleatorios pueden generar secuencias aleatorias con buenas
características estadísticas a alta velocidad, no son adecuados
para aplicaciones en las que prime la seguridad. Tal es el caso de
las secuencias aleatorias para criptografía, en las que debe ser
imposible calcular el siguiente número de una secuencia conocidos
todos los anteriores, es decir la secuencia ha de ser realmente
aleatoria. Un generador de números aleatorios con unas
características estadísticas y de seguridad adecuadas para
aplicaciones tan exigentes como pueden ser las de criptografía, ha
de emplear como circuito fundamental no un generador de números
pseudoaleatorios sino un generador de números realmente aleatorios.
Los generadores de números realmente aleatorios se basan en el
muestreo de variables estocásticas presentes en procesos físicos,
tales como la desintegración radiactiva, el lanzamiento de un dado,
el tiempo transcurrido entre dos pulsaciones de teclado o ratón de
un usuario, fenómenos meteorológicos, etc.
Cuando la secuencia aleatoria fundamental se
genera a alta velocidad suele presentar parámetros estadísticos
que no se ajustan a los deseados, como por ejemplo distinta
probabilidad de aparición de los valores 0 y 1, o correlación en
los bits cercanos en el tiempo. Esto es consecuencia de las
características intrínsecas de los procesos físicos que originan
las secuencias aleatorias. Por este motivo normalmente un circuito
adicional realiza un post-procesamiento de la
secuencia aleatoria fundamental obtenida en el generador de números
realmente aleatorios para eliminar características estadísticas
indeseadas y conseguir una secuencia aleatoria válida para la
aplicación. Otro objetivo del post-procesamiento
consiste en minimizar el efecto que cambios ambientales en
parámetros como la temperatura puedan tener en la secuencia
aleatoria.
Existen multitud de propuestas de probada
eficacia para implementar lo que se han denominado circuitos
postprocesadores (unas basadas en técnicas lineales como el método
de von Neyman, las funciones de hash o los registros de
desplazamiento con realimentación lineal y otras basadas en
técnicas no lineales para mejorar la seguridad) pero, por el
contrario, la generación de secuencias realmente aleatorias en base
a circuitos digitales implementables en tecnología FPGA (Field
Programmable Gate Array) o ASIC (Application Specific Integrated
Circuit) continúa siendo un reto.
Por razones prácticas, los fenómenos físicos más
adecuados para los generadores de números realmente aleatorios son
aquellos integrables en circuitos electrónicos de estado sólido, ya
que las aplicaciones que hacen uso de los números aleatorios se
implementan casi en su totalidad en circuitos integrados. Dos
métodos convencionales son el ruido térmico de resistencias o
uniones PN y los osciladores controlados por tensión, pero
requieren circuitos analógicos. Dado que la gran mayoría de los
circuitos electrónicos empleados hoy día para tareas de
procesamiento y control son digitales, resultan mucho más
interesantes los generadores de números realmente aleatorios
implementables en su totalidad en tecnología digital.
La invención se refiere a un generador de
números aleatorios.
En un primer aspecto de la invención, dicho
generador comprende un primer circuito para compensación digital de
retardo, un segundo circuito para compensación digital de retardo,
un primer flip-flop, un segundo
flip-flop y un tercer
flip-flop.
El primer circuito para compensación digital de
retardo y el segundo circuito para compensación digital de retardo
están conectados en un primer puerto de entrada a una señal de un
oscilador.
El primer circuito para compensación digital de
retardo tiene como salida de su primer puerto de salida una primera
señal de reloj, dicha primera señal de reloj realimenta el primer
circuito para compensación digital de retardo en un segundo puerto
de entrada.
El segundo circuito para compensación digital de
retardo tiene como salida de su primer puerto de salida una
segunda señal de reloj, dicha segunda señal de reloj realimenta el
segundo circuito para compensación digital de retardo en un segundo
puerto de entrada.
El primer flip-flop tiene como
señal de reloj la segunda señal de reloj y usa la señal de salida
de dicho primer flip-flop invertida como entrada
del primer flip-flop.
El segundo flip-flop tiene como
señal de reloj la primera señal de reloj y usa la señal de salida
del primer flip-flop como señal de entrada.
El tercer flip-flop tiene como
señal de reloj la primera señal de reloj y usa la señal de salida
del segundo flip-flop como señal de entrada,
obteniendo como señal de salida del tercer
flip-flop una señal aleatoria.
El segundo circuito para compensación digital de
retardo adicionalmente podrá comprender un tercer puerto de
entrada, un cuarto puerto de entrada y un quinto puerto de
entrada.
Adicionalmente, el generador de números
aleatorios podrá comprender un circuito de control con un primer
puerto de entrada, un segundo puerto de entrada, un tercer puerto
de entrada, un cuarto puerto de entrada, un primer puerto de
salida, un segundo puerto de salida y un tercer puerto de
salida.
El primer puerto de salida del circuito de
control está conectado con el cuarto puerto de entrada del segundo
circuito para compensación digital de retardo, el segundo puerto de
salida del circuito de control con el quinto puerto de entrada del
segundo circuito para compensación digital de retardo, y el primer
puerto de entrada del circuito de control estando conectado con la
primera señal de reloj.
Adicionalmente, el generador de números
aleatorios podrá comprender un circuito de enganche con un primer
puerto de entrada, un segundo puerto de entrada, un tercer puerto
de entrada y un puerto de salida.
En dicho circuito de enganche, la entrada al
primer puerto de entrada es una señal de reset. El segundo puerto
de entrada está conectado al segundo puerto de salida del primer
circuito para compensación digital de retardo, el tercer puerto de
entrada al segundo puerto de salida del segundo circuito para
compensación digital de retardo y el puerto se salida al segundo
puerto de entrada del circuito de control.
El circuito de enganche podrá estar configurado
de tal modo que su puerto de salida proporciona una señal de
enganche cuando la señal de reset pasa a estado inactivo, y las
señales de los segundos puertos de salida del primer y segundo
circuito para compensación digital de retardo se activan.
El segundo circuito para compensación digital de
retardo podrá comprender una línea de retardo programable, un
ajuste dinámico de desfase y una lógica de estado.
Dicha línea de retardo programable comprende una
pluralidad de puertas de retardo individuales. Como señal de
entrada tiene la señal del primer puerto de entrada y como señal de
salida la señal del primer puerto de salida, dicha salida
realimenta la línea de retardo programable en el segundo puerto de
entrada.
El ajuste dinámico de desfase cuenta como
entradas la señal del tercer puerto de entrada, la señal del
cuarto puerto de entrada y la señal del quinto puerto de entrada, y
como señal de salida la señal de un tercer puerto de salida.
La lógica de estado transmite su señal de salida
a través del segundo puerto de salida.
Por su parte, el primer circuito para
compensación digital de retardo podrá comprender una línea de
retardo programable y una lógica de estado, tal y como han sido
descritas anteriormente.
El primer y segundo circuito para compensación
digital de retardo podrán ser idénticos en una realización
práctica, sin embargo, el primer circuito para compensación digital
de retardo no utilizará el ajuste dinámico de desfase.
El generador de números aleatorios puede
comprender adicionalmente una puerta XOR, cuyas señales de entrada
son la señal de salida del segundo flip-flop y la
señal de salida del tercer flip-flop. La señal de
salida de dicha puerta XOR es la señal de entrada del tercer puerto
de entrada del circuito de control.
La lógica interna del circuito de control podrá
comprender un primer contador configurado para determinar el número
máximo de ciclos a evaluar la señal de salida de la puerta XOR. Es
decir, el contador tendrá un valor prefijado y esperará encontrar
un 1 a la salida de dicha puerta XOR en un número máximo de ciclos,
siendo el valor máximo el valor prefijado. Si estamos fuera de la
ventana metaestable nunca encontrará el 1. Por el contrario, si
estamos en dentro de la ventana metaestable, en algún momento
llegará el 1. El valor máximo prefijado limita la espera a un
número de ciclos. Este valor depende de la tecnología y el azar.
Una posible forma de usar el contador es iniciarlo al valor
prefijado e ir decrementando en una unidad cada ciclo de reloj. Si
antes de llegar a cero detectamos un 1 en la puerta XOR, estamos
en la zona metaestable. Si llegamos hasta cero y aún no se ha
detectado un 1 en la puerta XOR podemos decir que estamos fuera de
la zona metaestable. Adicionalmente, podrá contar con un segundo
contador configurado para memorizar la situación de desfase
actual, en base al número de solicitudes de incremento y decremento
de fase, un registro configurado para memorizar la amplitud de una
ventana y un comparador del valor del segundo contador y de un
desfase definido dentro de dicha ventana.
En un segundo aspecto de la invención, ésta se
refiere a un procedimiento para generar números aleatorios a la
salida de un tercer flip-flop, dicho tercer
flip-flop teniendo como señal de entrada la señal
de salida de un segundo flip-flop que comprende las
siguientes etapas:
- -
- una etapa de generación de una primera señal de reloj y una segunda señal de reloj, ambas señales de reloj en fase,
- -
- una etapa de incremento de la fase de la segunda señal de reloj hasta lograr la metaestabilidad en un segundo flip-flop,
- -
- una etapa de incremento de la fase de la segunda señal de reloj hasta lograr abandonar el estado de metaestabilidad en un segundo flip-flop,
- -
- una etapa de decremento de la fase de la segunda señal de reloj hasta una fase entre la fase de logro del estado de metaestabilidad y la fase de abandono del estado de metaestabilidad, dicho margen para la fase de la segunda señal de reloj se denomina ventana metaestable,
- -
- una fase estacionaria de obtención de números aleatorios en la salida del tercer flip-flop.
El desfase de trabajo, preferentemente, podrá
ser determinado de tal modo que sea la semisuma del primer valor
de desfase y del segundo valor de desfase.
Una vez alcanzado el desfase de trabajo, se
podrá producir la activación de la señal del tercer puerto de
salida de un circuito de control siendo la señal de salida del
tercer flip-flop aleatoria a partir de dicha
activación.
El generador de números aleatorios y el método
de generación de números aleatorios descritos tienen las
siguientes ventajas frente a los conocidos en el estado de la
técnica:
- -
- Trabaja a muy alta velocidad porque, debido a que trabaja en régimen de metaestabilidad continuo, se obtiene un bit realmente aleatorio cada periodo de reloj. En tecnología FPGA hasta 300 Megabits por segundo aproximadamente.
- -
- Requiere pocos recursos para su implementación.
- -
- Es fácilmente implementable ya que actualmente se dispone de circuitos para compensación digital de retardo específicos, por lo que no se requieren consignas especiales de posicionamiento y rutado de circuitos.
- -
- El comportamiento deseado queda asegurado porque el circuito se ajusta en cada encendido, lo cual permite emplear este diseño en equipos que se vayan a industrializar en serie.
- -
- Se ha comprobado que un generador de números aleatorios compuesto del generador objeto de esta solicitud de patente y un sencillo circuito de postprocesamiento basado en un registro de desplazamiento con realimentación lineal, proporciona secuencias de números aleatorios que superan los 16 tests propuestos por el National Institute of Standards and Technology (NIST). Estas pruebas son un referente aceptado a nivel mundial para evaluar posibles desviaciones en secuencias binarias aleatorias. Esta prueba valida la posibilidad de utilizar el circuito propuesto para aplicaciones de criptografía.
Para complementar la descripción que se está
realizando y con objeto de ayudar a una mejor comprensión de las
características de la invención, se acompaña como parte integrante
de dicha descripción, un juego de dibujos en donde con carácter
ilustrativo y no limitativo, se ha representado lo siguiente:
La figura 1 muestra un esquema del generador de
números aleatorios propuesto en esta patente. Incluye todos los
bloques principales que lo forman, así como la señalización
fundamental entre los mismos.
\newpage
La figura 2 muestra un diagrama de tiempos con
las dos señales de reloj generadas en los dos circuitos para
compensación digital de retardo, así como la señal salida del
primer flip-flop. Indica también todos los tiempos
involucrados en la definición de la ventana metaestable.
La figura 3 muestra el diagrama de bloques de un
circuito para compensación digital de retardo genérico.
A continuación, con referencia a las figuras, se
describe un modo de realización preferente del circuito y
procedimiento generador de números aleatorios que constituye el
objeto de esta invención.
Dada la señal periódica y cuadrada de entrada
(CLK_OSC) de un oscilador externo, un circuito genera una señal de
salida (NA) continuamente aleatoria y sincronizada con una primera
señal de reloj (CLK) que se emplea como señal de reloj interna del
circuito integrado y está compensada dinámicamente para estar en
fase con la señal de un oscilador externo (CLK_OSC). La frecuencia
de la primera señal de reloj (CLK) puede ser la misma que la señal
de un oscilador externo (CLK_OSC) o un múltiplo de la misma. La
señal de salida del circuito (NA) continuamente aleatoria se puede
introducir en un registro de desplazamiento con entrada serie y
salida paralelo para formar números aleatorios del número de bits
requerido por la aplicación.
La figura 1 muestra un diagrama de bloques del
generador de números aleatorios propuesto. A continuación se
describe el funcionamiento del generador.
El primer circuito para compensación digital de
retardo (CCDR1) y el segundo circuito para compensación digital de
retardo (CCDR2) son elementos fundamentales para la definición del
generador. Se basan en líneas de retardo programable con una unidad
de control que ajusta la fase de la señal en unos primeros puertos
de salida (clk_sal1, clk_sal2) del primer circuito para
compensación digital de retardo (CCDR1) y del segundo circuito para
compensación digital de retardo (CCDR2) con respecto a las
respectivas señales de los primeros puertos de entrada (clk_en1,
clk_en2), para lo cual requiere realimentar la salida hacia la
entrada, en unos segundos puertos de entrada (clk_ra1, clk_ra2). La
frecuencia de salida puede ser la misma o un múltiplo de la de la
entrada. El primer circuito para compensación digital de retardo
(CCDR1) ajusta dinámicamente la señal de reloj de su primer puerto
de salida (clk_sal1) para que esté en fase con la señal del
oscilador (CLK_OSC). Mediante la activación de la señal del segundo
puerto de salida (engan_ccdr1) del primer circuito para
compensación digital de retardo (CCDR1) se indica que ha conseguido
el enganche de fase. En ese momento la señal del primer puerto de
salida (clk_sal1) está exactamente en fase con la señal del primer
puerto de entrada (clk_en1) y se distribuye dentro del circuito
integrado a través de un buffer especial para distribución de
señales de reloj.
El segundo circuito para compensación digital de
retardo (CCDR2) realiza una tarea similar pero en este caso, en
lugar de estar en fase, permite el ajuste digital de la fase de la
señal del primer puerto de salida (clk_sal2) con respecto a la
señal del primer puerto de entrada (clk_en2). El ajuste digital lo
realiza el circuito de control (CONTROL) con la siguiente
señalización: cada vez que se produce un flanco activo en la
segunda señal de reloj (clk_des), siempre que esté activa la señal
del cuarto puerto de entrada (hab_des2) se produce, según sea el
estado de la señal del quinto puerto de entrada (incdec_des2), la
petición de un incremento o decremento de una unidad en la fase de
la salida con respecto a la entrada. El primer circuito para
compensación digital de retardo (CCDR1) y el segundo circuito para
compensación digital de retardo (CCDR2) disponen de una línea de
retardo compuesta por un número discreto de retardadores, y la
unidad de desfase es una división entera del período de la señal
del primer puerto de entrada (clk_en2). Una vez que el segundo
circuito para compensación digital de retardo (CCDR2) ha realizado
la variación de fase solicitada, lo comunica al circuito de control
(CONTROL) a través del quinto puerto de salida (fin_des2).
De esta forma se distribuyen mediante buffers
dedicados de reloj una primera señal del reloj (CLK) y una segunda
señal de reloj (clk_des) de la misma frecuencia y con un desfase
constante e independiente de la deriva del oscilador, ya que los
circuitos de compensación son capaces de compensar dinámicamente
esta deriva. La primera señal de reloj (CLK) se puede emplear en
todos los bloques del circuito integrado como señal de reloj.
El generador emplea tres
flip-flops tipo D: un primer
flip-flop (DFF1) que usa como señal de reloj la
segunda señal de reloj (clk_des) y un segundo
flip-flop (DFF2) y un tercer
flip-flop (DFF3) con la señal de reloj de la
primera señal de reloj (CLK). El primer flip-flop
(DFF1) realimenta su salida invertida hacia su entrada y su salida
no invertida hacia el segundo flip-flop (DFF2). El
tercer flip-flop (DFF3) recibe la salida del segundo
flip-flop (DFF2) a su entrada. El circuito de
control (CONTROL) ajusta el desfase de la segunda señal de reloj
(clk_des), obtenida en el segundo puerto de salida (clk_sal2) del
segundo circuito para compensación digital de retardo (CCDR2) de
forma que el segundo flip-flop (DFF2) trabaje en
régimen de metaestabilidad en el punto medio dentro del margen
metaestable posible. Siempre que hay un incumplimiento de los
tiempos de establecimiento (setup) o mantenimiento (hold) la salida
del flip-flop entra en un estado transitorio
simétricamente balanceado que se denomina estado metaestable.
La figura 2 explica bajo qué condiciones el
segundo flip-flop (DFF2) trabaja en régimen
metaestable. Este flip-flop tiene como señal de
reloj la primera señal de reloj (CLK) y como entrada de datos la
salida del primer flip-flop (DFF1), por lo que el
comportamiento será metaestable en su salida cuando la señal de
salida del primer flip-flop (DFF1) cambie de valor
en la ventana temporal (Ventana Metaestable VM en la figura 2) que
va desde un tiempo de establecimiento (tes) antes del flanco
activo de la primera señal de reloj (CLK) hasta un tiempo de
mantenimiento (tma) posterior a dicho flanco activo. La salida del
primer flip-flop (DFF1) cambia de valor en todos
los ciclos de reloj y lo hace siempre un tiempo de retardo (tr)
después de que se produzca el flanco activo de la segunda señal de
reloj (clk_des). Dado un tiempo de desfase (td) entre la primera
señal de reloj (CLK) y la segunda señal de reloj (clk_des), el
segundo flip-flop (DFF2) trabaja en régimen
metaestable cuando se cumple que:
tr-tma < td
<
tr+tes,
siendo tr el retardo de la señal de
salida del primer flip-flop (DFF1) con respecto del
flanco activo de la segunda señal del reloj (clk_des), td el
desfase de la segunda señal de reloj (clk_des) con respecto a la
primera señal de reloj (CLK) y tes y tma los tiempos de
establecimiento y de mantenimiento, respectivamente, de los
flip-flops empleados. No es necesario conocer el
tiempo de retardo (tr), que depende de las líneas de rutado
internas, ya que el generador ajusta el tiempo de desfase entre la
primera y segunda señal de reloj (td) para trabajar en el punto
deseado. Por este motivo no son necesarias consignas de rutado en
la descripción del
circuito.
Dado que la anchura de esta ventana es tes+tma,
la unidad de desfase (Ft) de la señal del segundo puerto de salida
(clk_sal2) del segundo circuito para compensación digital de
retardo (CCDR2) ha de ser inferior a este valor para poder ajustar
el punto metaestable con total seguridad.
A continuación se resume el proceso transitorio
desde la inicialización hasta conseguir un régimen continuo y
estable de bits aleatorios en la salida del tercer
flip-flop (NA):
- -
- Detectada en la señal de reset (RST), tanto el primer circuito para compensación de retardo (CCDR1) como el segundo circuito para compensación de retardo (CCDR2) ajustan el desfase de la primera señal de reloj (CLK) y la segunda señal de reloj (clk_des) con la señal de un oscilador externo (CLK_OSC). Una vez que acaba este proceso activan las salidas de sus segundos puertos de salida (engan ccdr1, engan_ccdr2) que son recibas en el segundo y tercer puerto del circuito de enganche (engan1e, engan_dese), lo que provoca, junto con la señal de reset (RST) recibida en el primer puerto de entrada (clk)del circuito de enganche, que el circuito de enganche (ENGANCHE) active la señal de su puerto de salida (engan). Dicha señal del puerto de salida (engan) del circuito de enganche (ENGANCHE) inicializa todos los circuitos, incluido el circuito de control (CONTROL). A partir de este momento la primera señal de reloj (CLK) y la segunda señal de reloj (clk_des) son estables y se pueden emplear en los circuitos secuenciales. Inicialmente, tanto la primera señal de reloj (CLK) como la segunda señal de reloj (clk_des) son señales de reloj en fase con la señal del oscilador (CLK_OSC). A continuación el circuito de control (CONTROL) aumenta el desfase en la segunda señal de reloj (clk_des) hasta localizar el comienzo de la zona metaestable (F1). Cada vez que aumenta el desfase en una unidad evalúa la salida de una puerta XOR conectada a las salidas del segundo flip-flop (DFF2) y del tercer flip-flop (DFF3), ya que ésta toma valor lógico 1 si dos valores consecutivos difieren, lo cual indica estado metaestable en el segundo flip-flop (DFF2).
- -
- Una vez localizado el punto de comienzo de la zona metaestable (F1) el circuito de control (CONTROL) sigue aumentando el desfase hasta salir de la zona metaestable y memoriza la fase de dicho punto (F2), controlando también la salida de la puerta XOR.
- -
- Cuando se alcanza el final de la zona metaestable el circuito de control (CONTROL) inicia un proceso de disminución del desfase. Este proceso concluye cuando queda fijado el punto o fase de trabajo (Ft) en mitad de dicha zona, que es el que proporciona mayor margen ante posibles desajustes.
- -
- Cuando finaliza el ajuste el circuito de control (CONTROL) activa la señal de su tercer puerto de salida (fin_inic), lo cual indica que se puede emplear la señal de salida del tercer flip-flop (NA) como secuencia aleatoria.
Respecto a la razón por la cual el estado de
metaestabilidad se detecta en la puerta XOR, cabe decir lo
siguiente.
Las transiciones de la señal de salida del
primer flip-flop (DFF1) se pueden dar dentro o
fuera de la ventana metaestable (VM), pero, mientras no se
modifique el desfase en el segundo circuito para compensación
digital de retardo (CCDR2) mediante una nueva petición de
incremento o decremento, esta condición se mantiene, es decir, las
transiciones de la señal de salida del primer
flip-flop (dff1) siempre se dan o dentro o fuera de
la ventana metaestable (VM), porque el primer y segundo circuito
para compensación digital de retardo (CCDR1, CCDR2) mantienen los
desfases constantes.
La señal de salida del primer
flip-flop (DFF1), que es la señal de entrada del
segundo flip-flop (DFF2), cambia su valor una vez
por periodo, por lo que, si las transiciones de dicha señal (dff1)
se dan fuera de la ventana metaestable (VM), cada vez que llegue un
nuevo flanco en el reloj (CLK) del segundo
flip-flop (DFF2), el valor de la señal de entrada
del segundo flip-flop (DFF2) es estable durante la
ventana metaestable (VM) y en este tiempo vale 0 ó 1, por lo que el
valor de salida del segundo flip-flop (DFF2) será
dicho valor 0 ó 1 y será siempre el mismo valor en todos los
periodos.
\newpage
Por el contrario, si las transiciones de la
señal de salida del primer flip-flop (DFF1) se dan
dentro de la ventana metaestable (VM), cada vez que llegue un nuevo
flanco en el reloj (CLK) del segundo flip-flop
(DFF2), el valor de la señal de entrada del segundo
flip-flop (DFF2) no es estable durante la ventana
metaestable, por lo que el valor de salida del segundo
flip-flop (dff2) es impredecible (aleatorio y
simétricamente balanceado).
La salida de la puerta XOR es 1 únicamente si
los valores de las dos señales a su entrada son diferentes (01 ó
10).
La puerta XOR tiene en sus entradas, en todo
momento, los valores de salida del segundo y tercer
flip-flops (DFF2, DFF3), es decir, la salida actual
en el segundo flip-flop (DFF2) y la salida del
mismo flip-flop (DFF2) en el periodo de reloj
anterior.
Si estamos en la región de funcionamiento
estable la salida del segundo flip-flop (dff2)
tendrá el mismo valor indefinidamente (puede ser 0 ó 1, pero
siempre el mismo). Por lo tanto la salida de la puerta XOR será
siempre 0.
Por el contrario, si el segundo
flip-flop (DFF2) está trabajando dentro de la
ventana metaestable (VM), la salida de la puerta XOR será 1 en
algún momento. El número de ciclos durante los cuales es necesario
evaluar la salida de la puerta XOR es difícil de prever, ya que
depende de la tecnología y del azar.
Las señales de reloj generadas en el primer
circuito para compensación digital de retardo (CCDR1) y en el
segundo circuito para compensación digital de retardo (CCDR2) tienen
la relación de fase (Ft) descrita, pero su frecuencia puede ser la
misma o un múltiplo de la frecuencia del oscilador, con lo que se
puede ajustar la velocidad de generación de la secuencia aleatoria
a las necesidades de la aplicación.
Dado que los circuitos de compensación de
retardo se adaptan a la deriva del oscilador y el rutado interno de
las señales de reloj en el chip se hace por líneas de distribución
especiales sin desfase, después del régimen de ajuste transitorio,
se consigue mantener el funcionamiento metaestable del
flip-flop, por lo que todos los valores a su salida
son impredecibles o aleatorios.
El generador de números aleatorios se puede
implementar completamente tanto en tecnología FPGA como en
tecnología ASIC. Los recursos necesarios para implementar el
generador propuesto se encuentran disponibles en ambas tecnologías.
Se requieren circuitos combinacionales y secuenciales básicos y dos
circuitos para compensación digital de retardo. Aunque la
funcionalidad de estos últimos se puede conseguir mediante
circuitos digitales básicos, el generador ha sido concebido para
lograr unos resultados óptimos cuando, para implementar los
circuitos para compensación digital de retardo, se empleen
circuitos para compensación digital de retardo específicos, es
decir, cuando la tecnología empleada disponga de unidades de
compensación digital de retardo construidas en silicio para ser
usadas exclusivamente con ese fin, debido a que estos circuitos
aseguran la precisión necesaria en el ajuste de fase. La figura 3
muestra el diagrama de bloques básico de cualquier circuito CCDR. A
continuación se describe la funcionalidad y la señalización
fundamental:
- -
- Línea de Retardo Programable (LRP): es el circuito principal y se basa en un conjunto discreto de puertas de retardo individuales. Dispone de una unidad de control que ajusta el retardo de la señal del primer puerto de salida (clk_sal2) con respecto a la de referencia en la señal del primer puerto de entrada (clk_en2). Para conseguirlo requiere la realimentación de la salida, que se distribuye a través de un árbol de distribución de reloj, hacia el segundo puerto de entrada (clk_ra2). La unidad de retardo en cada puerta individual puede ser constante o, lo que es mas habitual, una proporción del período de la señal del primer puerto de entrada (clk_en2). En este caso la unidad de desfase es menor cuanto menor es el período del oscilador, ya que la línea de retardo programable se divide en un número fijo de etapas de retardo que suman en conjunto un período. Dado que la ventana de funcionamiento metaestable es constante para una tecnología dada, a mayor frecuencia el número de unidades de retardo incluidas en esta ventana es mayor, por lo que el ajuste para funcionamiento en el punto medio es más preciso. Se ha comprobado que para la tecnología actual se consigue un funcionamiento estable para frecuencias superiores a 50 MHz.
- -
- Ajuste Dinámico de Desfase (ADD): modifica el desfase de la salida con respecto a la entrada. Recibe peticiones a través de una interfaz compuesta de una segunda señal de reloj (clk_des) con una entrada a través del tercer puerto de entrada (clk_des2), una línea de selección de incremento o decremento de desfase a través del quinto puerto de entrada (incdec_des2) y una línea de habilitación a través de un cuarto puerto de entrada (hab_des2). El circuito permite ajustar el desfase con pasos unitarios, siendo la resolución mayor cuanto mayor sea el número de pasos. Dispone de un puerto de salida (fin_des2) cuya señal indica la finalización del proceso de ajuste de desfase.
- -
- Síntesis de Frecuencia (SF): realiza la síntesis de frecuencia mediante la multiplicación y/o división de la frecuencia de entrada. Empleando este recurso se puede variar la frecuencia de generación de bits aleatorios en un amplio rango. La tecnología FPGA permite un rango de frecuencias entre 50 MHz y 300 MHz aproximadamente. Esta capacidad permite usar como reloj de salida la señal del primer puerto de salida (clk_sal2), de igual frecuencia que la señal del primer puerto de entrada (clk_en2), o la señal del cuarto puerto de salida (clkx), cuya frecuencia es múltiplo de la señal del primer puerto de entrada (clk_en2) y se obtiene mediante multiplicación y/o división de la misma.
- -
- Lógica de Estado (LE): tras la inicialización del sistema, el circuito de control de la línea de Retardo Programable (LRP) ajusta, mediante un lazo realimentado, el desfase de salida con respecto al de entrada. El circuito lógica de estado activa una señal en el segundo puerto de salida (engan_ccdr2) cuando, tras un periodo transitorio inicial, finaliza este proceso de ajuste y se alcanza el régimen estable.
El circuito de enganche (ENGANCHE) se puede
implementar como un sencillo circuito combinacional que activa la
salida de su puerto de salida (engan) cuando, tras la
inicialización, la señal de reset (RST) pasa a estado inactivo y la
señal del segundo puerto de salida (engan_ccdr1, engan_ccdr2) del
primer y segundo circuito para compensación digital de retardo
(CCDR1, CCDR2) se activan. Todos los bloques del circuito integrado
han de emplear la señal puerto de salida (engan) para iniciarse,
ya que hasta la activación de la misma los relojes distribuidos en
el chip, no son estables.
Además de los dos circuitos para compensación
digital de retardo, el circuito de enganche (ENGANCHE), los buffers
de entrada de señal y de distribución de reloj, los tres
flip-flops (DFF1, DFF2, DFF3) y una puerta lógica
XOR, solo se requiere una unidad de control para el ajuste inicial
del punto de trabajo. La funcionalidad del circuito de control
(CONTROL) se puede implementar en base a una máquina de estados
finitos con los siguientes circuitos de proceso: un primer contador
que determine el número de ciclos a evaluar la señal de salida de
la puerta XOR (xdif) para determinar el régimen de funcionamiento
del segundo flip-flop (DFF2); un segundo contador
como puntero de desfase para memorizar la situación de desfase en
función del número de solicitudes de incremento y decremento
realizadas una vez detectado el inicio de la zona metaestable; un
registro para memorizar el número de ciclos de la ventana
metaestable y un comparador de los valores del segundo contador y
de la mitad del resultado del registro para determinar cuando se
alcanza el centro de la ventana metaestable.
Dado que los circuitos para compensación digital
de retardo son dependientes de la tecnología, se puede reutilizar
una descripción VHDL o Verilog genérica siempre que se sustituyan
los circuitos para compensación digital de retardo por los que
correspondan en cada tecnología.
A la vista de esta descripción y juego de
figuras, el experto en la materia podrá entender que la invención
ha sido descrita según una realización preferente de la misma, pero
que múltiples variaciones pueden ser introducidas en dicha
realización preferente, sin salir del objeto de la invención tal y
como ha sido reivindicada.
Claims (12)
1. Generador de números aleatorios, que
comprende
un primer circuito para compensación digital de
retardo (CCDR1), un segundo circuito para compensación digital de
retardo (CCDR2), un primer flip-flop (DFF1), un
segundo flip-flop (DFF2) y un tercer
flip-flop (DFF3),
estando conectado el primer circuito para
compensación digital de retardo (CCDR1) en un primer puerto de
entrada (clk_en1) y el segundo circuito para compensación digital
de retardo (CCDR2) en un primer puerto de entrada (clk_en2) a una
señal de un oscilador (CLK_OSC),
el primer circuito para compensación digital de
retardo (CCDR1) tiene como salida de su primer puerto de salida
(clk_sal1) una primera señal de reloj (CLK), dicha primera señal de
reloj (CLK) realimenta el primer circuito para compensación digital
de retardo (CCDR1) en un segundo puerto de entrada (clk_ra1),
el segundo circuito para compensación digital
de retardo (CCDR2) tiene como salida de su primer puerto de salida
(clk_sal2) una segunda señal de reloj (clk_des), dicha segunda
señal de reloj (clk_des) realimenta el segundo circuito para
compensación digital de retardo (CCDR2) en un segundo puerto de
entrada (clk_ra2),
el primer flip-flop (DFF1) tiene
como señal de reloj la segunda señal de reloj (clk_des) y usa la
señal de salida (dff1) de dicho primer flip-flop
(DFF1) invertida como entrada del primer flip-flop
(DFF1),
el segundo flip-flop (DFF2)
tiene como señal de reloj la primera señal de reloj (CLK) y usa la
señal de salida del primer flip-flop (dff1) como
señal de entrada,
el tercer flip-flop (DFF3) tiene
como señal de reloj la primera señal de reloj (CLK) y usa la señal
de salida del segundo flip-flop (dff2) como señal
de entrada, obteniendo como señal de salida (NA) del tercer
flip-flop (DFF3) una señal aleatoria.
\vskip1.000000\baselineskip
2. Generador de números aleatorios según la
reivindicación 1, caracterizado por que el segundo circuito
para compensación digital de retardo (CCDR2) adicionalmente
comprende un tercer puerto de entrada (clk_des2), un cuarto puerto
de entrada (hab_des2) y un quinto puerto de entrada
(indec_des2).
3. Generador de números aleatorios según la
reivindicación 2, caracterizado por que adicionalmente
comprende un circuito de control (CONTROL) con un primer puerto de
entrada (clk), un segundo puerto de entrada (enganc), un tercer
puerto de entrada (dif), un cuarto puerto de entrada (fin_desc), y
un primer puerto de salida (hab_desc), un segundo puerto de salida
(incdec_desc) y un tercer puerto de salida (fin_inic),
estando conectado el primer puerto de salida
(hab_desc) del circuito de control (CONTROL) con el cuarto puerto
de entrada (hab_des2) del segundo circuito para compensación
digital de retardo (CCDR2), el segundo puerto de salida
(incdec_desc) del circuito de control (CONTROL) con el quinto
puerto de entrada (indec_des2) del segundo circuito para
compensación digital de retardo (CCDR2), el primer puerto de
entrada (cik) del circuito de control (CONTROL) estando conectado
con la primera señal de reloj (CLK).
\vskip1.000000\baselineskip
4. Generador de números aleatorios según la
reivindicación 3, caracterizado por que adicionalmente
comprende un circuito de enganche (ENGANCHE) con un primer puerto
de entrada (rst), un segundo puerto de entrada (engan1e), un tercer
puerto de entrada (engan_dese) y un puerto de salida (engan),
siendo la entrada al primer puerto de entrada
(rst) una señal de reset (RST), estando conectado el segundo puerto
de entrada (engan1e) al segundo puerto de salida (engan_ccdr1) del
primer circuito para compensación digital de retardo (CCDR1), el
tercer puerto de entrada (engan_dese) al segundo puerto de salida
(engan_ccdr2) del segundo circuito para compensación digital de
retardo (CCDR2) y el primer puerto se salida (engan) al segundo
puerto de entrada (enganc) del circuito de control (CONTROL).
\vskip1.000000\baselineskip
5. Generador de números aleatorios según la
reivindicación 4, caracterizado por que el puerto de salida
(engan) del circuito de enganche (ENGANCHE) activa una señal de
enganche (ENGAN) cuando la señal de reset (RST) pasa a estado
inactivo, y las señales de los segundos puertos de salida
(engan_ccdr1, engan_ccdr2) del primer circuito para compensación
digital de retardo (CCDR1) y del segundo circuito para compensación
digital de retardo (CCDR2) se activan.
6. Generador de números aleatorios según la
reivindicación 1, caracterizado por que el primer circuito
para compensación digital de retardo (CCDR1) comprende una línea de
retardo programable (LRP) y una lógica de estado (LE),
la línea de retardo programable (LRP) comprende
una pluralidad de puertas de retardo individuales, dicha línea de
retardo programable (LRP) tiene como señal de entrada la señal del
primer puerto de entrada (clk_en1) y como señal de salida la señal
del primer puerto de salida (clk_sal1), dicha señal de salida
realimenta la línea de retardo programable (LRP) en el segundo
puerto de entrada (clk_ra1),
la lógica de estado (LE) transmite su señal de
salida a través del segundo puerto de salida (engan_ccdr1).
\vskip1.000000\baselineskip
7. Generador de números aleatorios según la
reivindicación 1, caracterizado por que el segundo circuito
para compensación digital de retardo (CCDR2) comprende una línea de
retardo programable (LRP), un ajuste dinámico de desfase (ADD), y
una lógica de estado (LE),
la línea de retardo programable (LRP) comprende
una pluralidad de puertas de retardo individuales, dicha línea de
retardo programable (LRP) tiene como señal de entrada la señal del
primer puerto de entrada (clk_en2) y como señal de salida la señal
del primer puerto de salida (clk_sal2), dicha señal de salida
realimenta la línea de retardo programable (LRP) en el segundo
puerto de entrada (clk_ra2),
el ajuste dinámico de desfase (ADD) cuenta como
entradas la señal del tercer puerto de entrada (clk_des2), la señal
del cuarto puerto de entrada (hab_des2) y la señal del quinto
puerto de entrada (indec_des2), y como señal del salida la señal de
un tercer puerto de salida (fin_des2),
la lógica de estado (LE) transmite su señal de
salida a través del segundo puerto de salida (engan_ccdr2).
\vskip1.000000\baselineskip
8. Generador de números aleatorios según la
reivindicación 1, caracterizado por que la señal de salida
del segundo flip-flop (dff2) y la señal de salida
del tercer flip-flop (NA) son señales de entrada de
una puerta XOR, siendo la señal de salida de dicha puerta XOR
(xdif) la señal de entrada del tercer puerto de entrada (dif) del
circuito de control (CONTROL).
9. Generador de números aleatorios según las
reivindicaciones 3 u 8, caracterizado por que el circuito de
control (CONTROL) comprende un primer contador configurado para
determinar el número máximo de ciclos a evaluar la señal de salida
de la puerta XOR (xdif), un segundo contador configurado para
memorizar la situación de desfase actual, en base al número de
solicitudes de incremento y decremento de fase, un registro
configurado para memorizar la amplitud de una ventana (VM) y un
comparador del valor del segundo contador y de un desfase definido
dentro de dicha ventana (VM).
10. Procedimiento para generar números
aleatorios a la salida de un tercer flip-flop (NA),
dicho tercer flip-flop (DFF3) teniendo como señal
de entrada la señal de salida de un segundo
flip-flop (dff2), caracterizado por que
comprende las siguientes etapas:
- -
- una etapa de generación de una primera señal de reloj (CLK) y una segunda señal de reloj (clk_des) en fase,
- -
- una etapa de incremento de la fase (F1) de la segunda señal de reloj (clk_des) hasta lograr la metaestabilidad en el segundo flip-flop (DFF2),
- -
- un etapa de incremento de la fase (F2) de la segunda señal de reloj (clk_des) hasta lograr abandonar el estado de metaestabilidad en el segundo flip-flop (DFF2),
- -
- una etapa de decremento de la fase de la segunda señal de reloj (clk_des) hasta una fase (Ft) entre la fase (F1) de logro del estado de metaestabilidad y la fase (F2) de abandono del estado de metaestabilidad,
- -
- una fase estacionaria de obtención de números aleatorios en la salida del tercer flip-flop (NA).
\vskip1.000000\baselineskip
11. Procedimiento según la reivindicación 10,
caracterizado por que el desfase de trabajo (Ft) es la
semisuma del primer valor de desfase (F1) y del segundo valor de
desfase (F2).
12. Procedimiento según cualquiera de las
reivindicaciones 10-11, caracterizado por que
una vez alcanzado el desfase de trabajo (Ft) se produce la
activación de la señal del tercer puerto de salida (fin_inic) de un
circuito de control (CONTROL) siendo la señal de salida del tercer
flip-flop (NA) aleatoria a partir de dicha
activación.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200702299A ES2326718B1 (es) | 2007-08-17 | 2007-08-17 | Generador de numeros realmente aleatorios. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200702299A ES2326718B1 (es) | 2007-08-17 | 2007-08-17 | Generador de numeros realmente aleatorios. |
Publications (2)
Publication Number | Publication Date |
---|---|
ES2326718A1 ES2326718A1 (es) | 2009-10-16 |
ES2326718B1 true ES2326718B1 (es) | 2010-07-14 |
Family
ID=41136513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES200702299A Active ES2326718B1 (es) | 2007-08-17 | 2007-08-17 | Generador de numeros realmente aleatorios. |
Country Status (1)
Country | Link |
---|---|
ES (1) | ES2326718B1 (es) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631390B1 (en) * | 2000-03-06 | 2003-10-07 | Koninklijke Philips Electronics N.V. | Method and apparatus for generating random numbers using flip-flop meta-stability |
KR100806151B1 (ko) * | 2001-02-07 | 2008-02-22 | 에프디케이 가부시키가이샤 | 난수 발생 장치 및 확률 발생 장치 |
US7356551B2 (en) * | 2003-03-14 | 2008-04-08 | Nxp B.V. | Method and apparatus of retaining maximum speed of flip-flop metastability based random number generators |
-
2007
- 2007-08-17 ES ES200702299A patent/ES2326718B1/es active Active
Also Published As
Publication number | Publication date |
---|---|
ES2326718A1 (es) | 2009-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | 16.3 A 23Mb/s 23pJ/b fully synthesized true-random-number generator in 28nm and 65nm CMOS | |
KR20160012121A (ko) | 난수 생성기에 대한 피드백 제어의 동적 튜닝을 위한 시스템 및 방법 | |
JP4893895B2 (ja) | 乱数発生のための発振器ジッタの複数ビット・サンプリング | |
TWI639948B (zh) | 產生真實亂數之方法與真實亂數產生器 | |
Glamočanin et al. | Are cloud FPGAs really vulnerable to power analysis attacks? | |
Hong et al. | A 0.004 mm 2 250μW ΔΣ TDC with time-difference accumulator and a 0.012 mm 2 2.5 mW bang-bang digital PLL using PRNG for low-power SoC applications | |
CN103513955B (zh) | 用于产生随机数的方法和装置 | |
Della Sala et al. | A novel ultra-compact FPGA-compatible TRNG architecture exploiting latched ring oscillators | |
ES2561892T3 (es) | Sincronización de generadores de modulación de anchura de impulsos de frecuencias múltiples | |
Cao et al. | A new energy-efficient and high throughput two-phase multi-bit per cycle ring oscillator-based true random number generator | |
Mureddu et al. | Experimental study of locking phenomena on oscillating rings implemented in logic devices | |
TW201624927A (zh) | 數位轉換器之砰砰時間系統及方法 | |
US10469059B1 (en) | Stabilizing the startup behavior of ring oscillators | |
ES2326718B1 (es) | Generador de numeros realmente aleatorios. | |
Fujieda et al. | A latch-latch composition of metastability-based true random number generator for Xilinx FPGAs | |
Xiu | From Frequency to Time-Average-Frequency: A Paradigm Shift in the Design of Electronic Systems | |
Krishnapura | A flexible 18-channel multi-hit time-to-digital converter for trigger-based data acquisition systems | |
TWI579763B (zh) | 具有亂數產生模式的儲存電路 | |
Yao et al. | The vernier-based TDC employing soft-injection-locked ring oscillators | |
CN107678731A (zh) | 一种基于fpga的高频异步随机数发生器 | |
Li et al. | A fully synthesized injection locked ring oscillator based on a pulse injection locking technique | |
Dejun et al. | Research of true random number generator based on PLL at FPGA | |
Sarmadi et al. | Designing counter using inherent capability of quantum-dot cellular automata loops | |
Simka et al. | Model of a true random number generator aimed at cryptographic applications | |
US20220094561A1 (en) | Multifunctional Physically Unclonable Function Device Based on Hybrid Boolean Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EC2A | Search report published |
Date of ref document: 20091016 Kind code of ref document: A1 |
|
FG2A | Definitive protection |
Ref document number: 2326718B1 Country of ref document: ES |