miércoles, 29 de agosto de 2012

Prueba de Frecuencia (Monobit)

La entrada para esta semana era hacer un programa que evaluara si nuestras claves eran realmente random.
 
Pero ¿porque es importante saber si es realmente random? Bueno, unos de los problemas mas comunes en criptografía es que un mensaje se puede descubrir con ataques de frecuencia, haciendo este método nos aseguramos y hacemos que nos ataquen de otra forma mas complicada, en otras palabras, se las ponemos mas difícil.

Existen como 8 pruebas (de lo que alcance a ver, checa el link de las referencias) para evaluar si tus números o caracteres son realmente random, en mi programa use la de prueba de frecuencia monobit; pero ¿cual es el propósito o como funciona esta prueba?

El propósito de esta prueba, es determinar si el número de unos y ceros en una secuencia son aproximadamente la misma que sería de esperar para una secuencia verdaderamente aleatoria. La aparición de un cero o un uno en la secuencia debería ser igualmente probables, de modo que el defecto detectado por este método es que la secuencia contiene demasiados ceros o unos. [1]

Código

Que es lo que contiene "copia_llaves.dat" (el archivo que uso como parámetro).
Contiene las posibles llaves para encriptar el mensaje. Estas son generadas con otro programa(aun esta en construcción). Este archivo puede tener N claves con M de largo. En este caso son 10 claves con 10 de largo.

Resultados











REFERENCIAS

[1] - http://www.scribd.com/doc/58547826/12/NIST-Test-1-%E2%80%93-Frequency-Monobit-Test#outer_page_11

http://csrc.nist.gov/groups/ST/toolkit/rng/stats_tests.html