La tarea 2 es checar si las claves que genera nuestro otp (one time pad) realmente es aleatoria.
La clave evaluada fue la siguiente:
Esta clave es generada del programa anterior con el siguiente código:
Funciona leyendo las claves del archivo llamado key.txt pasandoselo a cada uno de los test.
Primero yo realice un test sencillo que se llama Monobit:
Monobit
Detecta los ceros y los unos que se encuentran en la cadena binaria, sustituyendo los ceros que encuentre por -1, asi realizando una suma. La aparición de ceros y unos en la secuencia global deberan de ser igualmente probables
Datos a tener:
n = tamaño de la clave binaria
ε =La secuencia de bits que se esta probando
Procedimiento:
1. Como mencione se buscan los ceros y se sustituyen por -1y se realiza una suma, ejemplo:
lista=[1,1,0,0,1,0,1]
quedaría:
lista=[11,-1-1,1-11]
y se realiza la suma de la lista
2-Se calcula la prueba estadística:
3. Se calcula p_value ( erfc es la función error complementaria.)
4.Si P - value > 0.01, la secuencia es aleatoria.
Código:
Captura de pantalla de la prueba:
También utilice otras dos pruebas que es la de Poker y la de frecuencia de Bloques
Frecuencia de Bloques
En la prueba de bloques los ceros y unos deberan de ser igualmente probables.
Datos:
n - largo de la secuencia
m - el largo de cada bloque
ε - secuencia de bits generada
Recomendaciones:
Procedimiento:
1. Se parte la prueba e bloques de un cierto tamaño se calcula de la siguiente manera:
2. Se determina la proporción de unos:
3. Se calcula la chi2=X2
4. Se calcula la p_value:
Código
Captura de pantalla
Prueba de Póker
Lo que hace la prueba de póker es dividir la clave en numeros de 4 bist, por ejemplo si yo tengo esta:
0101000001100011
se divide de la siguiente manera :
0101 0000 0110 0011
entonces como se divide en 4 hay 16 posibles resulados que pueden salir y esos 16 resultados son contados las veces que estan o el número de frecuencias de cada uno.
La formula que se realiza es la siuiente:
en donde:
m = es el tamaño de la división de la secuencia en este caso 4
n = lóngitud o tamaño de la secuencia binaria
k = es la división de m entre n
Pasos:
1. Se divide la serie de número binarios en secciones de 4 numeros (0000).
2. Se buscan las frecuencias de los 16 diferentes numeros que se pueden encontrar
3. La frecuencia se eleva al cuadrado
4. Se realiza lo que es la ecuación anterior:
x2=(16/k)(frecuencias al cuadrado)-k
La prueba se pasa cuando 1.03 < x < 57.4
Captura de pantalla
Con otra cantidad de claves:
Monobit
Frecuencia de Bloques
Poker test
La clave pasa las pruebas eso quiere decir que es segura.
Referencias:
Link1
Link2
LInk3
No hay comentarios:
Publicar un comentario