La prueba para el siguiente bit ( ing. next-bit test ) es una prueba que sirve para probar la fuerza criptográfica de los generadores de números pseudoaleatorios . La prueba dice que no debería haber un algoritmo polinomial que, dados los primeros k bits de una secuencia aleatoria, pueda predecir k + 1 bits con probabilidad distinta de ½.
En la teoría de la criptografía , un problema aparte es determinar qué tan aleatoria es una secuencia de números o bits generados por un generador. Por regla general, se utilizan varias pruebas estadísticas para este propósito, como las pruebas DIEHARD o las pruebas NIST . Andrew Yao demostró [1] en 1982 que un generador que pasa la "prueba del siguiente bit" pasará cualquier otra prueba de aleatoriedad estadística que se pueda realizar en tiempo polinomial.
Un generador binario pasa la prueba para el siguiente bit si: para cualquier algoritmo probabilístico de tiempo polinomial A: -> {0,1} (Algoritmo que tiene como datos iniciales una secuencia de bits de longitud , y produce un bit en su salida), la siguiente es una desigualdad verdadera:
donde es la designación de una función decreciente más rápido que el polinomio inverso de grado n .
Vale la pena señalar que la definición de una prueba para el siguiente bit no proporciona ningún algoritmo para realizar esta prueba.
Se considera que la secuencia binaria , recibida de la fuente S, ha pasado la prueba extendida para el ->siguiente bit si: para cualquier i y l: 1 < i, l < n y cualquier algoritmo probabilístico de tiempo polinomial A:
Se demuestra que la prueba extendida para el siguiente bit y la prueba para el siguiente bit son equivalentes. [2]
Aunque la siguiente prueba de bit es un método universal para verificar la independencia de los bits de salida de una secuencia, solo es adecuada para secuencias no sesgadas, es decir, aquellas en las que la probabilidad de ocurrencia de uno es equivalente a la probabilidad de ocurrencia de cero .
Si la secuencia de salida obviamente debe tener algún sesgo , es decir , entonces esta prueba no es adecuada.
Por lo tanto, para probar la independencia de los bits de salida de tales secuencias, se deben usar otras pruebas. En particular, se propuso una extensión de la prueba al siguiente bit: una prueba comparativa al siguiente bit [3] . La idea de la prueba es que inicialmente creemos que la distribución de la secuencia de salida está descrita por algún modelo matemático, y la prueba sirve para verificar el cumplimiento del generador con este modelo.
Un generador binario pasa la prueba de comparación del siguiente bit de S contra el modelo M si: para cualquier i y cualquier algoritmo de tiempo polinomial probabilístico (es decir, un algoritmo que tiene una secuencia de bits de longitud i como entrada y salida de un bit), lo siguiente la desigualdad se cumple: :
donde es la probabilidad de que el algoritmo prediga el siguiente bit para el generador del modelo.
Obviamente, dado un modelo M que representa una secuencia verdaderamente aleatoria, obtenemos , es decir, una prueba clásica para el siguiente bit. Dado el modelo con y , obtenemos el caso de prueba deseado para una secuencia no balanceada con un sesgo dado .
Esta prueba aprovecha la estructura de árbol , que puede almacenar toda la información sobre las subsecuencias en la secuencia general.
El algoritmo para calcular secuencias de m bits se puede representar como un árbol binario con bordes ponderados. En este árbol, cada hoja en la profundidad l almacena información sobre cuántas veces se ha encontrado la secuencia de l bits dada. Dado que el árbol está ponderado, a cada uno de sus bordes se le asigna la proporción de la cantidad escrita en la hoja secundaria a la cantidad escrita en la principal. Para una secuencia aleatoria suficientemente grande, se supone que los números correspondientes a los bordes serán aproximadamente iguales a 1/2.
Pasos del algoritmo Sadeghian-MahaeryEstablecemos el valor de r como la probabilidad de que el generador ideal genere una secuencia menos aleatoria que la de estudio. Por lo general, r se elige dentro de [0.001; 0,01]. Entonces, si el valor P es mayor que r, entonces la secuencia estudiada se considera aleatoria y viceversa en caso contrario.
La prueba de Sadeghyan-Mohaeri no proporciona un criterio claro y preciso para determinar la aleatoriedad de una secuencia. En cambio, los creadores del algoritmo asumen la capacidad de sacar algunas conclusiones sobre el comportamiento general de la secuencia. Cuando el algoritmo predice con éxito (l+1) bits, se considera que se ha producido un determinismo local.
El propósito de esta prueba es determinar las desviaciones en las estadísticas de ocurrencia del siguiente bit para una subsecuencia. Si existe tal desviación, la prueba intenta usarla para predecir el siguiente bit. Una secuencia se considera no aleatoria si contiene demasiadas subsecuencias cuyo último bit es predecible.
La prueba práctica muestra resultados más razonables en comparación con la prueba Sadeghyan-Mokhaeri original.
Pasos del algoritmo PNBCabe señalar que no existe una teoría conocida [4] que permita calcular los valores exactos de μ y σ utilizados en el último paso del algoritmo. Por lo tanto, estos valores se calculan aproximadamente.