216 ieee latin america transactions, vol. 16, … · sucesiones de largo n con al menos una racha...

6
Abstract— A run of length k in a sequence of n bits (0, 1) is an equal bits string preceded or succeeded by a different bit (or none). In this paper a computational algorithm for calculating the exact amount of binary sequences of length n, containing at least one run of length k (k n) is presented. The immediate application of this algorithm is to calculate the exact probability distribution of the number of n-bit sequences with containing at least one run of length k, and no one greater than k, for use for example as part of a test for randomness. Keywords— runs test, runs counting, pseudo random binary generators, simulation. I. INTRODUCCIÓN N problemas relacionados con la generación de secuencias pseudoaleatorias, temática que ha recibido amplia atención por parte de investigadores de diferentes campos de las ciencias como la simulación, la teoría de juegos, el análisis numérico, la mecánica cuántica y la criptografía, se precisan generadores que produzca secuencias pseudoaleatorias basadas en procedimientos determinísticos [1], suficientemente largas y con propiedades estadísticas similares al lanzamiento de una moneda, evento considerado aleatorio, lo cual se valora como un resultado importante desde el punto de vista práctico y un desafío para los académicos vinculados a esas ramas de la investigación. Para la determinación de la calidad de este tipo de generadores de secuencias pseudoaleatorias, otro de los campos dentro de la matemática y la estadística donde se ha estado trabajado, han sido propuestas varios conjuntos de pruebas [2-5]. El diseño de esas pruebas estadísticas enfrenta un desafío importante: el cálculo de la distribución exacta de probabilidades de las poblaciones a la cuales pertenecen las muestras obtenidas para la evaluación. Por ejemplo, en sucesiones binarias generadas con algoritmos determinísticos, teniendo en cuenta que el cardinal del conjunto poblacional es 2 n , siendo n en muchos casos reales mayor o igual que 256, se valora de impracticable, desde el punto de vista computacional (con complejidad exponencial)[6] tanto recorrer todo el universo de sucesiones posibles, como el cálculo de las probabilidades exactas de esa población. Como solución a esta problemática es común el empleo de distribuciones teóricas asintóticas [2]. Sin embargo, tanto en [2], como en [7] se plantea que para el caso de valores pequeños de n se considera poco adecuado el empleo de las distribuciones de referencia asintóticas. . O. Pérez García: Centro de Aplicaciones de Tecnologías de Avanzada (Cenatav) [email protected] Otro de los enfoques empleados es el análisis combinatorio, que a pesar del alto nivel de dificultad que reviste, permite obtener algoritmos o fórmulas combinatorias que calculan los valores de frecuencias que son empleados para la determinación de las probabilidades exactas [7]. Entre las pruebas para evaluar aleatoriedad se encuentran las basadas en rachas o corridas. Una racha, en una secuencia de símbolos cualesquiera, es una sucesión de símbolos iguales precedida y seguida por un símbolo diferente o por ninguno. Son varios los enfoques empleados en este tipo de pruebas, entre ellos se encuentra, por ejemplo, la prueba de frecuencia de corridas de largo k, k n, y n es el largo de la secuencia o sucesión bajo análisis. En [7], por ejemplo, los autores muestran un estudio basado en la distribución estadística de las rachas de largo 1, 2 y 3, proponiendo un algoritmo combinatorio para el cálculo de sus probabilidades exactas, especificando que debido a la complejidad y el tiempo requerido, las pruebas estadísticas basadas en rachas de largo k (k > 3) son impracticables. En este trabajo se presenta un algoritmo computacional eficiente y novedoso que permite calcular la frecuencia absoluta de las sucesiones binarias de largo n, siendo n Є !, n > 1, que contienen al menos una secuencia de bits idénticos (racha), de largo k, k Є !, y 0 < k n. A partir de este algoritmo es posible determinar la distribución exacta de probabilidades de la población de sucesiones de largo n con al menos una racha de largo k. Este algoritmo permite calcular además la distribución exacta de probabilidades del número de sucesiones n-binarias pseudoaleatorias con al menos una racha de largo k y ninguna mayor que k. La organización del trabajo es la siguiente: en la Sección II se explican varias definiciones relacionadas con la temática. La Sección III muestra detalles del algoritmo propuesto, con seudocódigos y ejemplos para su implementación. En la Sección IV se presentan algunas consideraciones para la aplicación del algoritmo propuesto en el diseño de una prueba de aleatoriedad basada en rachas, que considere la cantidad de sucesiones binarias de largo n con al menos una racha de largo k y ninguna mayor que k. Finalmente, se pueden encontrar las conclusiones en la Sección V. II. DEFINICIONES NECESARIAS De acuerdo con [1], los generadores de secuencias binarias pseudoaleatorias (PRBG, por sus siglas en inglés) son Algorithm for Calculating the Exact Amount of n- bit Sequences with at Least One Run of Length k (kn) Osvaldo Andrés Pérez García 1 E 216 IEEE LATIN AMERICA TRANSACTIONS, VOL. 16, NO. 1, JAN. 2018

Upload: trandung

Post on 19-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Abstract— A run of length k in a sequence of n bits (0, 1) is an equal bits string preceded or succeeded by a different bit (or none). In this paper a computational algorithm for calculating the exact amount of binary sequences of length n, containing at least one run of length k (k ≤ n) is presented. The immediate application of this algorithm is to calculate the exact probability distribution of the number of n-bit sequences with containing at least one run of length k, and no one greater than k, for use for example as part of a test for randomness.

Keywords— runs test, runs counting, pseudo random binary generators, simulation.

I. INTRODUCCIÓN N problemas relacionados con la generación de secuencias pseudoaleatorias, temática que ha recibido

amplia atención por parte de investigadores de diferentes campos de las ciencias como la simulación, la teoría de juegos, el análisis numérico, la mecánica cuántica y la criptografía, se precisan generadores que produzca secuencias pseudoaleatorias basadas en procedimientos determinísticos [1], suficientemente largas y con propiedades estadísticas similares al lanzamiento de una moneda, evento considerado aleatorio, lo cual se valora como un resultado importante desde el punto de vista práctico y un desafío para los académicos vinculados a esas ramas de la investigación.

Para la determinación de la calidad de este tipo de generadores de secuencias pseudoaleatorias, otro de los campos dentro de la matemática y la estadística donde se ha estado trabajado, han sido propuestas varios conjuntos de pruebas [2-5]. El diseño de esas pruebas estadísticas enfrenta un desafío importante: el cálculo de la distribución exacta de probabilidades de las poblaciones a la cuales pertenecen las muestras obtenidas para la evaluación. Por ejemplo, en sucesiones binarias generadas con algoritmos determinísticos, teniendo en cuenta que el cardinal del conjunto poblacional es 2n, siendo n en muchos casos reales mayor o igual que 256, se valora de impracticable, desde el punto de vista computacional (con complejidad exponencial)[6] tanto recorrer todo el universo de sucesiones posibles, como el cálculo de las probabilidades exactas de esa población. Como solución a esta problemática es común el empleo de distribuciones teóricas asintóticas [2]. Sin embargo, tanto en [2], como en [7] se plantea que para el caso de valores pequeños de n se considera poco adecuado el empleo de las distribuciones de referencia asintóticas.

.O. Pérez García: Centro de Aplicaciones de Tecnologías de Avanzada (Cenatav) [email protected]

Otro de los enfoques empleados es el análisis combinatorio, que a pesar del alto nivel de dificultad que reviste, permite obtener algoritmos o fórmulas combinatorias que calculan los valores de frecuencias que son empleados para la determinación de las probabilidades exactas [7].

Entre las pruebas para evaluar aleatoriedad se encuentran las basadas en rachas o corridas. Una racha, en una secuencia de símbolos cualesquiera, es una sucesión de símbolos iguales precedida y seguida por un símbolo diferente o por ninguno. Son varios los enfoques empleados en este tipo de pruebas, entre ellos se encuentra, por ejemplo, la prueba de frecuencia de corridas de largo k, k ≤ n, y n es el largo de la secuencia o sucesión bajo análisis. En [7], por ejemplo, los autores muestran un estudio basado en la distribución estadística de las rachas de largo 1, 2 y 3, proponiendo un algoritmo combinatorio para el cálculo de sus probabilidades exactas, especificando que debido a la complejidad y el tiempo requerido, las pruebas estadísticas basadas en rachas de largo k (k > 3) son impracticables.

En este trabajo se presenta un algoritmo computacional eficiente y novedoso que permite calcular la frecuencia absoluta de las sucesiones binarias de largo n, siendo n Є !, n > 1, que contienen al menos una secuencia de bits idénticos (racha), de largo k, k Є !, y 0 < k ≤ n.

A partir de este algoritmo es posible determinar la distribución exacta de probabilidades de la población de sucesiones de largo n con al menos una racha de largo k. Este algoritmo permite calcular además la distribución exacta de probabilidades del número de sucesiones n-binarias pseudoaleatorias con al menos una racha de largo k y ninguna mayor que k.

La organización del trabajo es la siguiente: en la Sección II se explican varias definiciones relacionadas con la temática. La Sección III muestra detalles del algoritmo propuesto, con seudocódigos y ejemplos para su implementación. En la Sección IV se presentan algunas consideraciones para la aplicación del algoritmo propuesto en el diseño de una prueba de aleatoriedad basada en rachas, que considere la cantidad de sucesiones binarias de largo n con al menos una racha de largo k y ninguna mayor que k. Finalmente, se pueden encontrar las conclusiones en la Sección V.

II. DEFINICIONES NECESARIAS De acuerdo con [1], los generadores de secuencias binarias pseudoaleatorias (PRBG, por sus siglas en inglés) son

Algorithm for Calculating the Exact Amount of n-bit Sequences with at Least One Run of Length k

(k≤ n) Osvaldo Andrés Pérez García1

E

216 IEEE LATIN AMERICA TRANSACTIONS, VOL. 16, NO. 1, JAN. 2018

algoritmos determinísticos2 que dada una secuencia binaria realmente aleatoria de largo m, denominada “semilla”, devuelven como salida secuencias binarias de largo n mucho mayor que m, las cuales “parecen” ser aleatorias. A estas se les denomina “secuencias binarias pseudoaleatorias”.

La salida de los PRBG no es realmente aleatoria. Y su período es la cantidad de secuencias de bits generadas hasta que se comienza a repetir la primera. Una de las propiedades que se espera posea un buen generador es que su período sea suficientemente grande, siendo su valor máximo calculado a partir de la expresión 2n.

Desde el punto de vista estadístico, una sucesión de bits es aleatoria si estos están uniformemente distribuidos y son independientes entre sí. Una sucesión de bits uniformemente distribuida implica que la distribución de frecuencias de aparición de los números está balanceada entre todos los diferentes integrantes de la población de donde provienen los elementos que conforman la sucesión generada.

Los bits pueden estar uniformemente distribuidos y no ser independientes uno del otro. Por ejemplo, en la secuencia (0,1,0,0,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1) hay uniformidad en la distribución (igual cantidad de ceros y de unos), sin embargo hay una regularidad evidente en la secuencia, que denota dependencia.

Para determinar la calidad de la salida de un PRBG se han desarrollado pruebas de aleatoriedad que permiten discernir si una sucesión está uniformemente distribuida y sus integrantes son independientes entre sí. Algunas de ellas están basadas en las rachas o corridas. En la Fig. 1 se presenta, a modo de ejemplo, una secuencia de bits (0,1) subrayándose una racha de ceros de largo 3 y una racha de unos de largo 4.

Entre las pruebas de rachas más conocidas, descritas en la

literatura [2, 7, 8], un grupo de ellas se enfocan (a) al número total de rachas, con el propósito de determinar si la cantidad de rachas de 0 o 1 de varios largos, está acorde con lo esperado para una secuencia aleatoria; o (b) en la racha más larga, aquí el objetivo es determinar si el largo de la racha más larga de unos en la secuencia es consecuente con el largo de la racha más larga de unos que podría esperarse en una secuencia aleatoria.

Al implementar la prueba de rachas para la evaluación de aleatoriedad los especialistas establecen como hipótesis nula (H0), a demostrar, que la secuencia es producida de forma aleatoria. Lo cual equivale a aseverar que el número total de rachas se distribuye de manera similar a como si fuera una secuencia aleatoria.

La máxima probabilidad de rechazar H0 siendo verdadera, se denomina nivel de significancia y se denota por !, y es empleado para compararlo con el valor p (p-value, en inglés), que es la probabilidad de ocurrencia, por ejemplo, de las

2 Siempre que se emplea la misma semilla o sucesión inicial, se obtiene la

misma salida.

secuencias de bits de largo n con al menos una racha de largo k., y que se calcula asumiendo que la secuencia tiene una función de distribución conocida. Si valor p > ! se acepta H0; en caso contrario, es rechazada.

Es importante destacar que, desde el punto de vista teórico, el hecho de que el resultado de una prueba estadística sea la aceptación de la hipótesis de aleatoriedad, no es suficiente para considerar al PRBG que la generó, como aleatorio. De ahí que sea necesario aplicar un conjunto de pruebas que se complementen entre ellas, midiendo y evaluando diferentes características de las secuencias bajo análisis.

Entre los conjuntos de pruebas más empleados en la literatura están los presentados por Knuth [3], Rukhin [4], DIEHARD [5], CRYPT-X [9], TestU01 [10] y la batería de pruebas publicada por el NIST [2]. De igual manera, se han propuesto otras pruebas estadísticas individuales basadas en rachas [7, 11, 12].

III. ALGORITMO Como se adelantaba en la introducción, los enfoques para la determinación de la distribución de probabilidades de las sucesiones binarias de largo n, teniendo en cuenta el tipo de prueba estadística de que se trate, de manera general, responden a dos enfoques: (1) empleo de distribuciones teóricas asintóticas y (2) la aplicación del análisis combinatorio. El algoritmo que se propone en el presente trabajo no se corresponde con ninguno de estos enfoques, ya que se obtuvo a partir analizar el vínculo (dependencia) entre las rachas de largos consecutivos y la determinación de las frecuencias de ocurrencia de las sucesiones, reproduciendo paso a paso el espacio completo de sucesiones para valores de n pequeños (n=5, n=6…n=20). Del análisis de las dependencias lógicas entre los diferentes tamaños de rachas para cada valor de n, y de la corroboración práctica, se deriva que el cálculo de la cantidad de sucesiones (CS) binarias de tamaño n con al menos una racha de largo k depende del comportamiento de este mismo valor para rachas de longitud k-1. Veamos un ejemplo de esta relación tomando como base lo mostrado en la Tabla I.

Como se observa, en todas las sucesiones de tamaño n=5 (25=32) hay al menos una racha de largo k = 1. Y en 30 de ellas hay al menos una racha de largo k ≥ 2; en este caso las excepciones son 10101 y 01010. Algo similar ocurre con las sucesiones con al menos una racha de largo k ≥ 4; en total son 6, incluyendo a 11111 y 00000, que son de largo k = 5. Esta relación de dependencia se mantiene para todo 1 ≤ k ≤ n.

A partir de los resultados obtenidos en el estudio se indujo el algoritmo computacional que se propone en este trabajo y que se presenta a continuación:

Calculamos la cantidad de sucesiones (CS) de largo n con al menos una racha de largo k. Emplearemos la nomenclatura siguiente para este valor:

!" ≥ !! = 2!!!

!!!

!!!∗ !!!!!! (1)

Figura 1: Sucesión binaria con rachas.

1010001100111100

PÉREZ GARCÍA : ALGORITHM FOR CALCULATING THE 217

Donde CS !!! es la cantidad de sucesiones de largo n con

al menos una racha de largo k. Y los valores de Tj, para 1≤ j ≤ n-k, se calculan según:

!! =

! j = 0!!!! j = 1. . ! − 1!!!! − ! j = !! ∗ !!!! − !!!! j = ! + 1… ! − !

(2)

A partir de la expresión (1) podemos obtener también la

cantidad de sucesiones de largo k con al menos una racha de largo k y ninguna mayor que k (CS !

! ). Para ello debemos calcular CS !!

! y CS !!!!! , y entonces:

CS !

! = CS !!! − CS !!!!

! (3)

III.1. Implementación del algoritmo En este acápite se explica cómo implementar los algoritmos que permiten obtener las expresiones (1) y (3). En III.2 se adicionan los seudocódigos de cada algoritmo.

Como se observa en la expresión (1), la sumatoria incluye a dos factores. El primero de ellos, 2!!!, tomará valores a partir de 2 hasta 2n-k+1, mientras que el segundo factor, !!!!!!, se instanciará a partir de Tn-k

hasta T0. O sea:

!" !!! = 2! ∗ !!!! +⋯+ 2!!!!! ∗ !! (4) Para simplificar la implementación se propone abordar

primeramente el cálculo del segundo factor. Al desarrollar la expresión (2), Ti quedaría:

T0 = 1 T1 = 1 Tj = 2j-1 para 2 ≤ j ≤ k-1 Ti = 2k-1-1 para j = k Tk+1= 2*Tk-T1

Tk+2=2*Tk+1-T2 , y así sucesivamente hasta j=n-k.

Entonces la expresión (1) puede recorrerse en su totalidad sumando el producto de los dos factores vistos anteriormente: Desde i = 0, hasta i = n-k, sumar 2i+1 * Tn-k-i.

Para obtener la cantidad de sucesiones con al menos 1 racha de largo k y ninguna mayor que k, aplicamos el algoritmo para calcular CS !!

! y CS !!!!! ; luego resolvemos

la expresión (3).

III.2. Ejemplo de aplicación del algoritmo. Siguiendo con el ejemplo de la Tabla 1. Sean n = 5 y k = 2.

Total de sucesiones 25=32. En la tabla, en negro se muestran las rachas de largo 1, en violeta las rachas de largo 2, en rojo las rachas de largo 3 y en azul las rachas de largo mayor que 3. La cantidad de sucesiones con rachas de largo mayor o igual a 2 es 30. De igual manera, la cantidad de sucesiones con rachas de largo 2 y ninguna mayor que 2 es 14.

TABLA I: SUCESIONES BINARIAS DE LARGO N=5.

00000 01001 00111 11010 00001 10001 01011 11100 00010 00110 10011 01111 00100 01010 01101 10111 01000 10010 10101 11011 10000 01100 11001 11101 00011 10100 01110 11110 00101 11000 10110 11111

Verifiquemos esto con el algoritmo propuesto. Calculamos

primeramente CS !!! :

Paso 1: Determinando los valores de Ti i = 0, T0= 1 i = 1, T1= 1 i = 2, T2= 1 (k = 2) i = 3, T3= 2*1-1= 1 (n-k = 3) Paso 2: Multiplicando los factores y sumando i = 0, 2*T3= 2 i = 1, 4*T2= 4 i = 2, 8*T1= 8 (k = 2) i = 3, 16*T0=16 (n-k = 3) Sumando los resultados obtenemos que CS !!

! =30. Lo cual coincide con el resultado observado en la Tabla I.

Calculemos ahora CS !!

! Paso 1: Determinando los valores de Ti i = 0, T0= 1 i = 1, T1= 1 i = 2, T2= 2 (n-k = 2 y i < k) Paso 2: Multiplicando los factores y sumando i = 0, 2*T2= 4 i = 1, 4*T1= 4 i = 2, 8*T0= 8 (n-k = 2) Sumando los resultados obtenemos que CS !!

! =16. Restando los resultados de ambos cálculos, obtenemos que

la cantidad de sucesiones con al menos una racha de largo 2 y ninguna mayor que 2 es igual a 14, valor que coincide con lo observado en la Tabla I.

En las tablas II y III se muestran resultados para otros valores de n.

III.3. Valoraciones sobre la eficiencia del algoritmo propuesto

Seudocódigo 1: del algoritmo de la expresión (1)

1 Entradas 2 N // Tamaño de la sucesión 3 K // Tamaño de la Racha 4 Salida 5 Total // Cantidad de sucesiones 6 T[0] = 1 7 Desde i =1 hasta N-K 8 IF (i ≤ K-1) T[i] = 2i-1 9 ELSE IF (i = K) T[K] = 2k-1 - 1

10 ELSE T[i] = 2*T[i-1]-T[i-K] 11 Desde i=0 hasta N-K do Total = Total + 2i+1 ∗ T[N-K-i] 12 Return Total

218 IEEE LATIN AMERICA TRANSACTIONS, VOL. 16, NO. 1, JAN. 2018

Como se observa en el Seudocódigo 1: del algoritmo para el cálculo de la expresión (1), definido el valor de N (tamaño de las sucesiones binarias3), para cada valor de K (largo de la racha) la cantidad de operaciones a realizar para obtener el valor total de sucesiones n-binarias con al menos una racha de largo K, es de orden N.

En las pruebas realizadas, empleando una computadora personal equipada con una CPU Intel Core i7-4790 a 3.6 GHz y 8GB de RAM, para N=30 y diferentes valores de K no reportó consumo de tiempo apreciable. No obstante, se realizó un experimento con N = 30 y K = 10, repitiendo el proceso 1000000 de veces, obteniéndose un tiempo de 31 milisegundos como promedio entre todas las iteraciones realizadas.

Seudocódigo 2: del algoritmo de la expresión (3)

1 Entradas 2 N // Tamaño de la sucesión 3 K // Tamaño de la Racha 4 Salida 5 Total // Cantidad de sucesiones 6 Se calcula !"#$%1 = !" !!! (ver Seudocódigo 1) 7 Se calcula !"#$%2 = !" !!!!! (ver Seudocódigo 1) 8 Total = Total1 – Total2 9 Return Total

Para implementar la expresión (3) se propone el

Seudocódigo 2. En las pruebas efectuadas con este algoritmo mantuvo el nivel de eficiencia reportado anteriormente, considerando, como se observa en las líneas 6 y 7 del Seudocódigo 2, que se repite la ejecución del algoritmo explicado en Seudocódigo 1, para los valores de K y K+1, manteniendo constante a N.

Seudocódigo 3: cálculo de las frecuencias y probabilidades

1 Entradas 2 N // Tamaño de la sucesión 3 Salida 4 F[i] // cantidad de sucesiones con rachas de largo i 5 P[i] // probabilidad F[i]/2N 6 Desdei=1hastaN7 !1 = !" !!! (ver Seudocódigo 1)8 !2 = !" !!!!! (ver Seudocódigo 1)9 F[i]=T1–T210 P[i]=F[i]/2N11 Return F[i], P[i] En la siguiente sección, se presenta como ejemplo de

aplicación del algoritmo la determinación de la frecuencia con que aparecen sucesiones binarias de largo n con al menos una racha de largo k y ninguna mayor que k, en el espacio de sucesiones 2n. Este resultado permite determinar las probabilidades exactas de esas cantidades y su empleo como parte del diseño de una prueba basada en rachas para evaluar la aleatoriedad en la salida de un PRBG.

El Seudocódigo 3 explica los pasos para calcular las frecuencias y probabilidades de las sucesiones binarias de

3 En los Seudocódigos 1, 2 y 3 se emplearán las mayúsculas de n y k por

razones de legibilidad

largo n, con al menos una racha de largo k y ninguna mayor que k.

IV. APLICACIÓN DEL ALGORITMO COMO PARTE DEL DISEÑO DE UNA PRUEBA DE ALEATORIEDAD BASADA EN RACHAS.

La posibilidad de aplicación del algoritmo en el diseño de una prueba de aleatoriedad basada en rachas, y concretamente en la evaluación del comportamiento de la cantidad de sucesiones binarias de largo n con al menos una racha de lago k y ninguna mayor que k generadas por un generador PRBG, parte de considerar que el cardinal de la población de sucesiones binarias de largo n es 2n. Suponiendo que el período del generador coincida con el cardinal de la población, entonces la probabilidad de seleccionar una sucesión con al menos una racha de largo k y ninguna mayor que k, de las 2n posibles, bajo la hipótesis de aleatoriedad se calcula a partir de la expresión:

! ! !! = CS!!

2! (5) Donde ! !! representa a la sucesión binaria de largo n con al

menos una racha de largo k y ninguna mayor que k, seleccionada de la población de 2n, donde hay CS !

! posibilidades de escoger a ! !!.

Un requerimiento importante para aplicar el algoritmo propuesto en el diseño de una prueba de aleatoriedad es que se cumpla:

! ! !! = 1!

!!! (6)

Esta expresión se verifica si, teniendo en cuenta la

expresión (5), puede demostrarse que:

CS !!

!

!!! = 2! (7)

Para lograrlo sustituimos la expresión (3) en la (7)

obteniéndose:

CS ≥ !! − CS ≥ ! + 1

! !

!!! = 2! (8)

Si consideramos que para i = n, el sustraendo CS !!!!

! se hace nulo, entonces al desplegar la expresión (8), como se observa a continuación:

CS !!

! − CS !!! + CS !!

! − CS !!! + CS !!

! − CS !!

! +⋯ + CS !!!!! − CS !!

! + CS !!! (9)

y eliminar todos los términos iguales con signos opuestos,

nos quedaría:

CS !!! − CS !!!!

! = CS !!!

!!!! = 2! (10)

PÉREZ GARCÍA : ALGORITHM FOR CALCULATING THE 219

Veamos un ejemplo, para lo cual nos apoyaremos en parte de los valores mostrados en la Tabla II.

Tomemos a n =12.

CS ≥ !12 − CS ≥ ! + 1

12 !"

!!! = 2!" = 4096 (11)

En la Tabla IV se muestra la sustitución en (11) de los

valores de CS !!! que se encuentran en la tabla II.

TABLA II: RESULTADOS DEL ALGORITMO PARA N=12 Y N=13

TABLA III: RESULTADOS DEL ALGORITMO PARA N=14 Y N=15

TABLA IV: EJEMPLO SUSTITUYENDO EN (11) PARA N=12

I CS ≥ !12 − CS ≥ ! + 1

12 ∑

1 4096 – 4094 2 2 4094 – 3630 464 3 3630 – 2242 1388 4 2242 – 1116 1126 5 1116 – 510 606 6 510 – 224 286 7 224 – 96 128 8 96 – 40 56 9 40 – 16 24

10 16 – 6 10 11 6 – 2 4 12 2 – 0 2

∑ 4096

IV.1. Consideraciones para el diseño de una prueba de aleatoriedad basada en rachas.

El ejercicio que se propone en este acápite solo pretende demostrar cómo se puede aplicar el algoritmo propuesto en este trabajo como parte del diseño de una prueba de aleatoriedad basada en rachas, por esta razón no se es exhaustivo en el análisis de este tipo de pruebas.

Supongamos que tenemos un PRBG de período 2n (a los efectos de la explicación se considerarán los valores n = 5, 12, 13, 14 o 15, teniendo en cuenta los ejemplos presentados en las tablas I, II y III) y queremos determinar si produce sucesiones de bits con características cercanas a la aleatoriedad.

Cuando introducimos la semilla en nuestro hipotético PRBG, este comienza a generar una secuencia de bits la cual, si el generador es capaz de trabajar con período máximo, debería, al cabo de los 2n * n pasos (en cada paso se genera un bit), contener todas las posibles sucesiones de n bits que contiene el espacio de 2n; por ejemplo, si n = 5, la salida del generador deberían ser las sucesiones incluidas en la Tabla I, aunque no necesariamente en ese orden.

Generar todas las sucesiones dentro del universo de 2n es considerado un problema con complejidad de orden exponencial [6]. Por ejemplo, si n =256 (u otros valores incluso más grandes, Sulak en [13] considera que n =512 es una secuencia corta) la cantidad de sucesiones a generar sería un número de 78 dígitos, ver [14], haciendo prácticamente imposible no solo generar, sino también comprobar que todas las sub-sucesiones de largo n han sido generadas.

De igual manera es muy complejo determinar la frecuencia absoluta de la cantidad de sucesiones de largo n con al menos una racha de largo k y ninguna mayor que k, por la complejidad asociada a la generación de las 2n sucesiones y el análisis requerido para calcular dichas frecuencias, sobre todo por la imposibilidad de ejecutar un algoritmo que permita recorrer todo el espacio de sucesiones en un tiempo aceptable. El algoritmo propuesto en este trabajo permite precisamente calcular de forma eficiente esos valores. Su aplicación a valores de n > 64 debe realizarse empleando operaciones de punto flotante o valorar el empleo de la tecnología AVX de Intel [15].

Para diseñar una prueba de aleatoriedad basada en rachas empleando la expresión CS !

! , presentada en el acápite anterior, proponemos, a modo de ejemplo, considerar el siguiente enfoque.

El propósito de esta prueba es valorar la aleatoriedad de una secuencia de bits generadas a partir de la evaluación de la cantidad de sucesiones con al menos una racha de largo k y ninguna mayor que k. Se establece, por lo tanto, como hipótesis nula H0: aleatoriedad de la sucesión, y se propone la prueba χ2 para demostrarla, la cual se basa en el cálculo de:

χ2 = !! ! !! !

!!!!!! con n-1 grados de libertad. (12)

Donde, N es la cantidad de intervalos o clases, Oi es el valor

observado de la cantidad de sucesiones de largo n con al menos una racha de largo i y ninguna mayor que i. O sea, Oi se obtiene después de generarse m bits de forma consecutiva (debe observarse que en condiciones reales m « 2n), y Ei es el

K n=12 n =13

CS !!! . CS !

! CS !!! CS !

! 1 4096 2 8192 2 2 4094 464 8190 752 3 3630 1388 7438 2656 4 2242 1126 4782 2334 5 1116 606 2448 1306 6 510 286 1142 630 7 224 128 512 288 8 96 56 224 128 9 40 24 96 56

10 16 10 40 24 11 6 4 16 10 12 2 2 6 4 13 2 2

Total 4096 Total 8192

K n =14 n =15

CS !!! CS !

! CS !!! CS !

! 1 16384 2 32768 2 2 16382 1218 32766 1972 3 15164 5052 30794 9562 4 10112 4800 21232 9806 5 5312 2788 11426 5906 6 2524 1374 5520 2970 7 1150 638 2550 1398 8 512 288 1152 640 9 224 128 512 288

10 96 56 224 128 11 40 24 96 56 12 16 10 40 24 13 6 4 16 10 14 2 2 6 4 15 2 2

Total 16384 Total 32768

220 IEEE LATIN AMERICA TRANSACTIONS, VOL. 16, NO. 1, JAN. 2018

valor esperado de la cantidad de sucesiones de largo n con al menos una racha de largo i y ninguna mayor que i. Se trata ahora de decidir si las frecuencias observadas Oi están acorde o no con las frecuencias esperadas Ei.

Para aplicar χ2, se precisa que Ei ≥ 5 para todas las categorías. Esto se logra, en caso de necesidad, agrupando las clases continuas hasta garantizar que todos los valores esperados cumplan con ese criterio [2].

Para el cálculo de los valores esperados Ei se aplica el algoritmo CS !

! para cada valor de i. Posteriormente se calcula el valor p empleando la

expresión !"#$% ! = igamc !!!

! , !!! (13) donde igamc es la función de gamma incompleta [2], resultado que permitiría rechazar o aceptar la hipótesis de partida.

Esta propuesta de prueba estadística se presenta con el objetivo de ilustrar las posibilidades de aplicación del algoritmo desarrollado en este trabajo.

V. CONCLUSIONES En este trabajo hemos presentado un algoritmo novedoso y eficiente que permite el cálculo de la cantidad de sucesiones binarias de largo n con al menos una racha de largo k. Este algoritmo puede emplearse en el diseño de una prueba de rachas para evaluar la aleatoriedad de los PRBG basándose en la cantidad de sucesiones binarias de largo n con al menos una racha de largo k y ninguna mayor que k. En el trabajo se demuestra además que el espacio de sucesiones ! !! , para todo n y k, 1 ≤ k ≤ n, constituye un espacio completo de probabilidades[16], lo cual permite su aplicación en el diseño de una prueba de aleatoriedad para evaluar PRBG, basada en rachas.

REFERENCIAS [1] A. J. Menezes, S. A. Vanstone, and P. C. van Oorschot, Handbook of

applied cryptography: CRC press, 1997. [2] A. Rukhin, J. Soto, J. Nechvatal, M. Smid, E. Barker, S. Leigh, et al., "A

Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications," NIST2010.

[3] D. E. Knuth, The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition ed. Boston, Mass, USA: Addison-Wesley, Longman Publishing, 1997.

[4] A. L. Rukhin, "Testing randomness: a suite of statistical procedures," Theory of Probability & Its Applications, vol. vol. 45, pp. 111-132, 2001.

[5] G. Marsaglia, "The marsaglia random number CDROM including the Diehard battery of tests of randomness. http://www.stat.fsu.edu/pub/diehard/," ed, 1995.

[6] S. Arora and B. Barak, Computational complexity: a modern approach: Cambridge University Press, 2009.

[7] A. DoLanaksoy, F. Sulak, M. ULuz, O. Feker, and Z. Akcengiz1, "New Statistical Randomness Tests Based on Length of Runs," Mathematical Problems in Engineering, vol. 2015, p. 14, 2015.

[8] K. MARTON and A. SUCIU, "On the Interpretation of Results from the NIST Statistical Test Suite," SCIENCE AND TECHNOLOGY, vol. 18, pp. 18-32, 2015.

[9] W. Caelli, "Crypt x package documentation," Information Security Research Centre and School of Mathematics, Queensland University of Technology, 1992.

[10] P. L'Ecuyer and R. Simard, "TestU01: A C library for empirical testing of random number generators," ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE, vol. 33, p. 40, 2007.

[11] P. M. Alcover, A. Guillamón, and M. d. C. Ruiz, "A new randomness test for bit sequences," Informatica, vol. 24, pp. 339-356, 2013.

[12] O. S. EKER, "A Randomness Test based on postulate R-2 on the number of runs," Ra-ma, 2014.

[13] F. Sulak, A. Doğanaksoy, B. Ege, and O. Koçak, "Evaluation of randomness test results for short sequences," in International Conference on Sequences and Their Applications, 2010, pp. 309-319.

[14] Wikipedia. (2016). Power of two. Available: https://en.wikipedia.org/wiki/Power_of_two

[15] N. Firasta, M. Buxton, P. Jinbo, K. Nasri, and S. Kuo, "Intel AVX: New frontiers in performance improvements and energy efficiency," Intel white paper, 2008.

[16] A. N. Kolmogorov, "Foundations of the Theory of Probability," 1950.

Osvaldo Perez received a BSc in Computer Science from the Havana University in 1990. In 2008, he obtained a specialist Degree in “Computer Forensic Analysis” at IPSJAE, Cuba. Later, he received a PhD Degree from the Havana University in 2011. He is member of the Cuban Society of Mathematics and Computation and of the Cuban Association for Pattern

Recognition. Currently, he is working as "Researcher" at the Data Mining Department of the Advanced Technologies Application Center (CENATAV), Cuba. His research interests include but not restricted to applications of data mining to Cybersecurity.

PÉREZ GARCÍA : ALGORITHM FOR CALCULATING THE 221