www.matematicas.net

LO DIJO...

William Osler  
 
En ciencia el reconocimiento se concede al hombre que convence al mundo, no a aquel a quien se le ocurre la idea.
 
www.matematicas.net - Criptotaller ~ Tests estadísticos para números pseudoaleatorios
.: Criptotaller :.
Tests estadísticos para números pseudoaleatorios
Resumen: los FIPS (*) 1401 y 1402 recogen una serie de tests estadísticos que se describen en este artículo y deben cumplir los generadores de números pseudoaleatorios.

    Los FIPS 1401 (Enero 94) y 1402 (Noviembre 99) titulados "Security requirements for cryptographic modules" que publica el NIST pretenden establecer una serie de estándares que seguir por el gobierno federal estadounidense. En particular los módulos criptográficos que utilicen generadores de números pseudoaleatorios deben pasar algunos tests.

    En concreto el apartado 4.9.1 "Power-Up Tests" dice:

"En el momento de la inicialización, los módulos criptográficos deben realizar todos los siguientes auto-tests: test del algoritmo criptográfico, test de integridad del software/firmware, test de funciones críticas y tests estadísticos del generador de números aleatorios... "

    Se necesitan entonces 20.000 bits consecutivos producidos por el generador de números aleatorios que deberán pasar todos los siguientes tests: monobit, poker, runs y long runs. Los tests se describen a continuación tal y como aparecen en el FIPS 1402.

Test monobit

1.- Contar el número de bits iguales a uno en la secuencia de 20.000 bits. Llamemos X a dicho número.

2.- El test se pasa si 9.275 < X < 10.275 (Error tipo I de 0.0001) { FIPS 1401 menos exigente pedía 9.654 < X < 10.346 }

Test poker

1.- Dividir la secuencia de 20.000 bits en 5.000 segmentos contiguos de 4 bits. Contar y almacenar el número de veces que ocurre cada uno de los 16 valores posibles (0000,0001,...,1111), llamemos f(i) al número de veces que apareció el valor i, 0<= i <= 15

2.- Evaluar la siguiente expresión

X = (16/5000) * ( f(1)2 + f(2)2 + ... + f(15)2) - 5000

3.- El test se pasa si 2'16 < X < 46'17 (Error tipo I de 0.0001) { FIPS 1401 pedía 1'03 < X < 57'4 }

Test de runs (rachas?)

1.- Una racha se define como una subsecuencia máxima de bits consecutivos bien de unos bien de ceros que es parte de la secuencia inicial de 20.000 bits. Se cuentan y almacenan las rachas de 1 o más bits.

2.- El test se pasa si las rachar que ocurren (de longitudes 1 a 6) están en los intervalos especificados en la siguiente tabla. Esto debe ocurrir tanto para los ceros como para los unos, es decir que los 12 conteos deben estar en los intervalos especificados. Para este test las secuencias de longitud superior a 6 se consideran de longitud 6.

Intervalos requeridos para el test de rachas
Longitud
Intervalo requerido
1 2.343 - 2.657
2 1.135 - 1.365
3 542 - 708
4 251 - 373
5 111 - 201
6 111 - 201

Test de long runs (rachas largas)

1.- Una racha larga se define como una racha de longitud 26 o más (tanto de ceros como de unos) para un error de tipo I de 0.0001

2.- El test se pasa si en 20.000 bits no hay rachas largas.

Código fuente

    Hay que reseñar que pasar los tests citados, como ocurre con cualquier test estadístico no significa que el generador sea bueno aunque no pasarlo significa que el generador debe rechazarse. En particular estos tests no aseguran nada sobre una cualidad necesaria para un generador de números pseudoaleatorios criptográficamente fuerte, a saber que dada parte o toda la secuencia de números ya generados sea imposible predecir el siguiente número generado.

    Con estas salvedades el código fuente de fips1402.c nos permitirá desechar generadores de números pseudoaleatorios defectuosos.

Fuente: FIPS1401, FIPS1402 en http://www.nist.gov

Notas al pie

(*) FEDERAL INFORMATION PROCESSING STANDARD PUBLICATION

Area On-Line
  Todo tipo de material, para disfrutar de él completamente On-Line, sin necesidad de descargar archivos ni tener que andar descomprimiendo estos. No te olvides de pasar por el Diccionario, y las secciones Origami y Geointeractiva. Son de lo más interesante.

Criptotaller

Criptografía (clásica y moderna), criptoanálisis (primos, primos de Mersenne, etc.) y otras técnicas.

Material para descargar

Código Fuente C

Método Hill
Método Jefferson
Exponenciación Modular
Cálculo números primos
Test de Lucas-Lehmer
Factores num. Mersenne
Verificación FIPS 140.2
Teorema chino del resto
+ Códigos Fuente C

Código Fuente Python

Generación de claves

Artículos

La máquina Enigma
Criptografía y seguridad
    M. J. Lucena
Seguridad Informática
   y Criptografía PDF PPT
    J. Ramió
Criptografía clásica PDF
    J. Ramió

Programas
Cripto1 ZIP 2391 KB
    J. L. Rubio

Enlaces

Página personal de Jaime Suárez Martínez, colaborador de esta sección.

Munitions, colección de programas para Linux.

Kriptopolis, toda una referencia en castellano.

Ciphersaber

Criptonomicón: la página de Gonzalo Alvarez Marañón.

Página de Chris Caldwell, una página bien elaborada sobre números primos.

Colección de links de Peter Gutmann.

www.gnupg.org es la página original de GPG, un programa libre alternativo a PGP.

Sábado, 20 / 09 / 2014
   BUSCADOR
 

   TU CORREO
Usuario
Contraseña

   MATRACAS
Lista de correo gratuita
.: Chismes de Adán y Eva :.
Adios a Elisenda Fo...
WolframAlpha: El mo...
WIRIS para Mac...
Third CEU Summersch...
¡Más y más actualiz...
Cerca de 500 MB de ...
Ha llegado el momen...
WIRIS, matemáticas ...
El Universo Matemát...
Segundas Jornadas d...
Los Elementos de Eu...
VI Semana de la Cie...
Tras varios meses d...
¡Chiflados por los ...
Otro verano más, to...

 

Todos los derechos reservados. El Paraíso de las Matemáticas 2010Información Legal Política de PrivacidadAyudaEmail