La prueba de secuencias pseudoaleatorias es un conjunto de métodos para determinar la medida de proximidad de una secuencia pseudoaleatoria dada a una secuencia aleatoria. Tal medida suele ser la presencia de una distribución uniforme , un período grande, una frecuencia igual de aparición de subcadenas idénticas, etc.
Una de las pruebas más ilustrativas es una prueba para una distribución uniforme de las frecuencias de aparición de cada carácter. Sea una secuencia de longitud n y dimensión m . Entonces las frecuencias ν i deben pertenecer al intervalo . Sin embargo, la mayoría de las pruebas usan un método diferente: aceptar o rechazar la hipótesis de aleatoriedad de la secuencia usando distribuciones estadísticas.
Conociendo las propiedades probabilísticas de una secuencia verdaderamente aleatoria, uno puede usarlas para probar la hipótesis sobre qué tan similar es la secuencia generada a una secuencia aleatoria. Para hacer esto, se selecciona una estadística adecuada para cada prueba, sus valores se calculan para la secuencia ideal y generada. Si la diferencia entre estos valores supera algún valor crítico establecido de antemano, la secuencia se considera no aleatoria. Para secuencias "buenas", la probabilidad de tal evento es extremadamente pequeña (digamos ~0.001 y lo denotamos por α). Sin embargo, existe la posibilidad de que una secuencia "mala" satisfaga el criterio y se llegue a una conclusión sobre su aleatoriedad (denotamos la probabilidad de tal evento como β). En la práctica, las longitudes de secuencia n , α y β están relacionadas, se da α y se elige n para minimizar β.
Definamos el valor P como la probabilidad de que el generador ideal genere una secuencia menos aleatoria que la que se está estudiando. Entonces, si el valor P es mayor que α, entonces la secuencia estudiada se considera aleatoria y viceversa en caso contrario.
Brevemente, los pasos de las pruebas estadísticas se pueden representar en forma de tabla:
número de paso | Proceso | Comentarios |
---|---|---|
una | Declaración de la hipótesis | Suponemos que la secuencia es aleatoria. |
2 | Cálculo de estadísticos de la secuencia estudiada | Pruebas de nivel de bits |
3 | Cálculo del valor P | Valor p [0; una] |
cuatro | Comparando el valor P con α | Establecer α dentro de [0.001; 0,01]; si el valor P > α, entonces se pasa la prueba |
Sea dada una sucesión binaria s . Se requiere establecer si la secuencia dada pasa la prueba estadística o no. Para hacer esto, se utilizan varios enfoques diferentes:
Este enfoque consiste en calcular algún valor estadístico de la secuencia binaria c(s) y compararlo con algún valor umbral. Si el valor resultante c(s) es menor que el valor umbral, entonces la secuencia s no pasa esta prueba.
Rango fijo de valoresEl enfoque también consiste en calcular algún valor estadístico de la secuencia binaria c(s) como en el primer caso. Sin embargo, ahora decimos que si c(s) está fuera de algún rango de valores, entonces la secuencia s falla esta prueba.
Valor de probabilidadUn tercer enfoque para determinar si una secuencia binaria s pasa una prueba estadística implica contar no solo la estadística c(s) sino también su correspondiente valor de probabilidad p . Por lo general, una estadística particular se calcula de tal manera que sus valores grandes implican una naturaleza no aleatoria de la secuencia s . Entonces p es la probabilidad de que c(s) sea mayor o igual que c(s') calculada para una secuencia verdaderamente aleatoria s' . Por tanto, valores pequeños de la probabilidad p (normalmente p < 0,05 o p < 0,01) pueden interpretarse como evidencia de que s no es aleatorio. Así, si para algún valor fijo a el valor de probabilidad p < a , entonces la secuencia binaria s no pasa esta prueba. Por regla general, a toma valores del intervalo [0.001;0.01].
Esta categoría incluye pruebas, cuyos resultados se muestran en forma de gráficos que caracterizan las propiedades de la secuencia estudiada. Entre ellos:
Los resultados de las pruebas de gráficos son interpretados por un ser humano, por lo que las conclusiones basadas en ellos pueden ser ambiguas.
A diferencia de las pruebas gráficas, las pruebas estadísticas brindan una característica numérica de la secuencia y le permiten decir sin ambigüedades si se pasó la prueba. Los siguientes paquetes de software de pruebas estadísticas son los más conocidos:
No. | Nombre | Autor | Organización |
---|---|---|---|
una | Pruebas NIST [1] | Andrew Rujin, et. Alabama. | NIST ITL |
2 | PRUEBA-U01 [2] | P. L'Ecuyer y otros. | Universidad de Montreal |
3 | CRIPTA-X [3] | Helen Gustafson et al. | Universidad Tecnológica de Queensland |
cuatro | El proyecto pLab [4] | Pedro Hellekalek | Universidad de Salzburgo |
5 | INCORRECTO [5] | Jorge Marsaglia | Universidad Estatal de Florida |
6 | Más intransigente [6] | Roberto G Brown | Universidad de Duke |
7 | ENT [7] | Juan caminante | autodesk , inc. |
ocho | El arte de la programación informática vol. 2 Algoritmos Semiméricos [8] | donald knuth | Universidad Stanford |
9 | Manual de Criptografía Aplicada [9] | Alfred Menezes y otros. | CRC Press, Inc. |
Las pruebas DIEHARD fueron desarrolladas por George Marsaglia a lo largo de varios años y se publicaron por primera vez en un CD-ROM dedicado a los números aleatorios. Se consideran uno de los conjuntos de pruebas más rigurosos que se conocen.
Las pruebas de Knuth se basan en una prueba estadística . El valor calculado de las estadísticas se compara con los resultados tabulares y, según la probabilidad de ocurrencia de dichas estadísticas, se llega a una conclusión sobre su calidad. Entre las ventajas de estas pruebas se encuentran su reducido número y la existencia de algoritmos de ejecución rápida. La desventaja es la incertidumbre en la interpretación de los resultados. Aquí hay un resumen de estas pruebas:
La diferencia entre estas pruebas y otras modernas es la apertura de los algoritmos. Entre las ventajas también se encuentra una interpretación inequívoca de los resultados de las pruebas. Tabla de características generales:
No. | Nombre de la prueba | Defecto definido |
---|---|---|
una | prueba de frecuencia | Demasiados ceros o unos |
2 | Comprobación de importes acumulados | Demasiados ceros o unos al principio de la secuencia |
3 | Comprobación de "agujeros" en subsecuencias | Desviación en la distribución de secuencias de unidades |
cuatro | Comprobación de "agujeros" | Un número grande (pequeño) de subsecuencias de ceros y unos indica que la fluctuación del flujo de bits es demasiado rápida (lenta) |
5 | Comprobación de los rangos de las matrices | Desviación de la distribución de rangos de matrices de la distribución correspondiente para una secuencia verdaderamente aleatoria, asociada con la periodicidad de las secuencias |
6 | Prueba espectral | Propiedades periódicas de una secuencia |
7 | Comprobación de patrones que no se superponen | Los patrones no periódicos son demasiado comunes |
ocho | Comprobación de patrones de intersección | Secuencias de m bits demasiado comunes de unos |
9 | Prueba estadística universal de Maurer | Compresibilidad (regularidad) de una secuencia |
diez | Comprobación de desviaciones aleatorias | Desviación de la distribución del número de ocurrencias de subsecuencias de cierto tipo |
once | Una variación de la verificación de desviaciones aleatorias | Desviación de la distribución del número de ocurrencias de subsecuencias de cierto tipo |
12 | Comprobación de la entropía aproximada | Distribución desigual de palabras de m bits. Valores pequeños significan alta repetibilidad |
13 | Comprobación de la serie | Irregularidad en la distribución de palabras de m bits |
catorce | Compresión usando el algoritmo Lempel-Ziv | Mayor compresibilidad que una verdadera secuencia aleatoria |
quince | Complejidad lineal | Desviación de la distribución de complejidad lineal para longitud de subcadena finita |
Los generadores de números aleatorios y pseudoaleatorios son el eslabón de la seguridad de la información . En cierto sentido, estos son componentes fundamentales de los algoritmos y protocolos criptográficos. Dado que dichos generadores se utilizan en muchos problemas criptográficos, por ejemplo, la formación de parámetros aleatorios y claves de sistemas de cifrado, los requisitos para ellos son bastante altos. En particular, uno de los criterios para una secuencia binaria absolutamente arbitraria obtenida a la salida del generador es la imposibilidad de predecirla en ausencia de cualquier información sobre los datos suministrados a la entrada del generador. Por tanto, en la práctica, se realizan pruebas estadísticas para comprobar el carácter aleatorio de una secuencia binaria generada por un generador de números aleatorios o pseudoaleatorios. Lo que a su vez le permite identificar generadores que cumplan con los requisitos de un problema criptográfico específico de antemano.
Para aprobar el nuevo Estándar de Cifrado Avanzado , el Instituto Nacional de Estándares y Tecnología , con el apoyo del gobierno de los EE. UU., realizó una competencia durante la cual se probaron 15 algoritmos solicitantes. Uno de los criterios utilizados en la evaluación de algoritmos fue su idoneidad como generadores de números aleatorios. La prueba de dichos generadores para la formación de secuencias binarias aleatorias con buenas propiedades estadísticas se llevó a cabo utilizando el conjunto de pruebas estadísticas del NIST .
Durante la primera ronda de AES, las pruebas se realizaron con claves de 128 bits. Solo 9 algoritmos de 15 algoritmos pudieron pasar las pruebas estadísticas [10] .
Según los resultados de la primera ronda, se seleccionaron 5 algoritmos de cifrado como finalistas de AES: MARS , RC6 , Rijndael , Serpent y Twofish . En la segunda ronda de la competencia AES, se evaluó la idoneidad de estos 5 algoritmos como generadores de números aleatorios en base a claves de 192 bits y 256 bits. La duración de las pruebas estadísticas del NIST fue de varios meses, con cálculos realizados en numerosas estaciones de trabajo Sun Ultra . Todos los datos se generaron y procesaron en línea. Como resultado de la segunda ronda se demostró que cada uno de los cinco finalistas genera una secuencia binaria aleatoria con buenas propiedades estadísticas y por lo tanto se puede utilizar como generador de números pseudoaleatorios, pudiendo utilizar claves con tamaños: 128 , 192 y 256 bits [11] .