Secuencias de Pseudoaleatorias para Telecomunicaciones
Secuencias de Pseudoaleatorias para Telecomunicaciones
Secuencias de Pseudoaleatorias para Telecomunicaciones
Presentacin
El empleo de secuencias aleatorias se extiende a un gran nmero de disciplinas tanto
tecnolgicas como cientficas, existiendo una gran variedad de procedimientos para generarlas. Sin
embargo, debido principalmente a los mtodos disponibles, las secuencias obtenidas son casi siempre
peridicas, con lo que no podrn ser realmente aleatorias y su bondad para ser utilizadas depender de
cunto se parezcan a una secuencia verdaderamente aleatoria. Este parecido ser una caracterstica
determinante de los buenos o malos resultados que se puedan obtener al utilizar las secuencias en
diferentes aplicaciones.
La motivacin de este libro est, fundamentalmente, en servir de base en los estudios de
Ingeniera de Telecomunicacin, en especial de Ingeniera Telemtica, y en otras muchas disciplinas,
tanto tcnicas como cientficas, en las que este tipo de secuencias son susceptibles de ser aplicadas.
Tambin va dirigido a todos aquellos profesionales que en un momento determinado puedan requerir del
uso de estas secuencias, tanto si se les plantea el problema de generarlas, como si lo que necesitan es
comprobar que aqullas de las que ya disponen se ajustan a sus requerimientos, sobre todo teniendo en
cuenta el gran nmero de campos en los que se hace uso de las mismas, y que van desde la criptografa
a la modelizacin de redes, el testeo de chips VLSI, la economa, la estadstica, la simulacin de
procesos estocsticos, el anlisis de riesgos en sistemas de seguridad, la simulacin de fenmenos
naturales o las tecnologas de la informacin (telecomunicaciones , etc.).
El primer objetivo del libro es, pues, presentar la generacin de secuencias pseudoaleatorias de
forma eminentemente prctica, pero intentando encontrar un equilibrio entre la fcil comprensin para
el lector y el rigor formal necesario. Al mismo tiempo tambin se pretende que el libro sea lo ms
completo y autocontenido posible.
El segundo objetivo del libro es sintetizar y analizar de forma coherente y adecuada la
informacin referente a este tema, en la actualidad muy diseminada tanto en artculos como en revistas,
de tal manera que sea ms fcil para el lector introducirse en el tema, y ofrecer adems las referencias
bibliogrficas adecuadas para poder profundizar ms si se considera oportuno.
Para conseguir estos dos objetivos se ha dividido el libro en nueve captulos. En el primer
captulo se hace un estudio de la aleatoriedad y las propiedades que van asociada a sta, adems de
definir las propiedades que deben cumplir los dispositivos que se utilicen para generar las secuencias
aleatorias. En el segundo captulo se hace un estudio de los diversos algoritmos de generacin de
secuencias pseudoaleatorias que se han propuesto para ser empleadas en aplicaciones de software, como
por ejemplo la modelizacin y la simulacin por ordenador.
Sin embargo, la mayora de aplicaciones de telecomunicaciones que necesitan usar secuencias
pseudoaleatorias las generan mediante procedimientos hardware. El captulo 3 muestra diversas tcnicas
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
Indice
Indice
1.0
1.1
1.2
1.3
1.4
1.5
1.6
Introduccin ........................................................................................................ 13
Fuentes binarias simtricas..................................................................................... 14
Conceptos de aleatoriedad ....................................................................................... 15
Postulados de aleatoridad de Golomb ........................................................................ 21
Requerimientos de los generadores de secuencias pseudoaleatorias................................... 25
Problemas........................................................................................................... 27
Bibliografa......................................................................................................... 28
2.0
2.1
Introduccin ........................................................................................................ 31
Algoritmos generadores de secuencias pseudoaleatorias................................................. 31
2.1.1 El algoritmo del medio del cuadrado.............................................................. 31
2.1.2 El generador del sistema GPSS/360.............................................................. 32
2.1.3 El generador PRN ..................................................................................... 33
2.1.4 Generadores de congruencias........................................................................ 34
2.1.5 Generador basado en el algoritmo de MacLaren-Marsaglia ................................. 40
2.1.6 Generador de secuencias pseudoaleatorias basado en permutaciones...................... 40
2.1.7 Generador basado en el atractor de Hnon....................................................... 43
2.1.8 Generador de secuencias caticas .................................................................. 44
2.1.9 Generator 1/p........................................................................................... 48
2.1.10 Generador basado en la suma entera de secuencias binarias................................. 49
2.1.11 El generador de mochila ............................................................................. 51
2.1.12 El generador de Blum-Micali....................................................................... 51
Generacin de nmeros aleatorios siguiendo distribuciones determinadas.......................... 52
2.2.1 El mtodo de la transformacin inversa ......................................................... 53
2.2.2 Obtencin de nmeros segn la distribucin uniforme no estndar...................... 54
2.2
10
2.3
2.4
3.0
3.1
3.5
3.6
3.7
3.8
Introduccin........................................................................................................ 61
Registros de desplazamiento con realimentacin lineal................................................. 61
3.1.1 Bases matemticas de los cuerpos finitos ....................................................... 63
3.1.2 Polinomio caracterstico primitivo ............................................................... 65
3.1.3 Propiedades de las m-secuencias ................................................................... 66
3.1.4 Impredictibilidad de las secuencias y complejidad lineal ( L ) .............................. 66
La funcin de estado no lineal f............................................................................... 68
3.2.1 Producto de fases equidistantes..................................................................... 71
3.2.2 Combinacin lineal de productos ................................................................. 72
Combinacin no lineal de varios LFSR.................................................................... 72
3.3.1 La inmunidad a la correlacin...................................................................... 73
3.3.2 Funciones combinadoras ms utilizadas......................................................... 74
Tcnicas de control de reloj..................................................................................... 82
3.4.1 Controladores de marcha y espera (stop & go) ................................................ 82
3.4.2 Control de reloj en cascada.......................................................................... 82
3.4.3 Variador de la velocidad del reloj .................................................................. 83
2
3.4.4 Secuencias PN ........................................................................................ 85
Secuencias de De Bruijn......................................................................................... 86
Tabla de polinomios irreducibles sobre GF(2) ............................................................ 87
Problemas........................................................................................................... 88
Bibliografa......................................................................................................... 90
4.0
4.1
Introduccin ........................................................................................................ 93
Generadores basados en funciones combinadoras ......................................................... 93
4.1.1 El generador de Jennings ............................................................................ 93
4.1.2 El generador de Geffe ................................................................................. 95
4.1.3 El generador de umbral............................................................................... 97
4.1.4 El generador de Pless ................................................................................. 98
4.1.5 El generador de Rueppel............................................................................101
4.1.6 El generador de Tatebayashi .......................................................................102
3.2
3.3
3.4
11
Indice
4.2
4.3
4.4
4.5
5.2
5.3
5.4
Introduccin .......................................................................................................133
Propiedades de correlacin de las secuencias pseudoaleatorias........................................133
5.1.1 Propiedades de correlacin de las m-secuencias...............................................135
5.1.2 La funcin de correlacin aperidica (impar)..................................................137
Propiedades estadsticas de las secuencias pseudoaleatorias ...........................................138
5.2.1 Fundamentos de los tests estadsticos........................................................... 139
5.2.2 Tests de hiptesis ....................................................................................139
5.2.3 Tests estadsticos empricos.......................................................................147
5.2.4 Tests estadsticos tericos..........................................................................166
Problemas.......................................................................................................... 168
Bibliografa........................................................................................................170
6. Complejidad de secuencias
6.0
6.1
6.2
6.3
Introduccin .......................................................................................................173
La complejidad de secuencias pseudoaleatorias...........................................................174
6.1.1 La complejidad de Turing-Kolmogorov-Chaitin (TKC)....................................175
6.1.2 La complejidad lineal (L)..........................................................................177
6.1.3 El perfil de complejidad lineal (LCP) ...........................................................178
6.1.4 El algoritmo de Massey-Berlekamp para el clculo del LCP .............................181
6.1.5 La complejidad de Ziv-Lempel....................................................................186
6.1.6 La complejidad de mximo orden ................................................................189
Problemas.......................................................................................................... 192
Bibliografa........................................................................................................192
12
7.0
7.1
7.5
Introduccin .......................................................................................................195
El cifrado en flujo................................................................................................195
7.1.1 Fundamentos de criptografa.......................................................................195
7.1.2 Tecnologa de cifradores de flujo .................................................................198
7.1.3 Modos de operacin de un cifrador en flujo....................................................200
7.1.4 Requerimientos de seguridad....................................................................... 203
7.1.5 Principios de diseo de los cifradores en flujo ................................................204
7.1.6 Criptoanlisis .........................................................................................206
7.1.7 Algunas aplicaciones del cifrado en flujo ......................................................211
La dispersin de energa en comunicaciones ..............................................................222
7.2.1 La aleatorizacin en el sistema MAC/paquetes...............................................223
7.2.2 La aleatorizacin en el sistema de transmisin digital de televisin DVB ............224
La simulacin de procesos.....................................................................................225
La modulacin spread spectrum..............................................................................226
7.4.1 Tcnicas de acceso mltiple por divisin de cdigo (CDMA) ............................229
Bibliografa........................................................................................................233
8.0
8.1
8.2
8.3
8.4
Introduccin .......................................................................................................237
Diseo de un generador de secuencias pseudoaleatorias ................................................237
Estructura del generador PRBS-1 ............................................................................238
Generador basado en combinar varios generadores PRBS-1...........................................244
8.3.1 Reglas de diseo de la estructura del generador ...............................................252
Bibliografa........................................................................................................253
9.0
9.1
9.2
9.3
9.4
9.5
9.6
9.7
Introduccin .......................................................................................................255
Instalacin del programa .......................................................................................255
Uso del programa ................................................................................................257
Actualizacin inicial de parmetros y ficheros de resultados..........................................259
Qu informacin revelan estos programas? ..............................................................261
Ejemplo de utilizacin..........................................................................................264
Listado del fichero resulta.txt .................................................................................270
Bibliografa........................................................................................................276
7.2
7.3
7.4
13
1.0 Introduccin
Hasta hace poco tiempo, los cientficos que necesitaban usar nmeros aleatorios en sus
trabajos empleaban mtodos clsicos y pesados para obtenerlos, como tirar monedas al aire, dados, etc.
En 1927, L.C.H. Tippet realiz el primer intento de obtener nmeros aleatorios a gran escala
utilizando para ello los resultados obtenidos en varios censos de poblacin, y consigui 10.400
nmeros aleatorios de cuatro dgitos que present de forma ordenada, constituyendo as la primera tabla
de nmeros aleatorios [TIP27]. Un esfuerzo similar lo realizaron los espaoles Royo y Ferrer en 1954,
quienes obtuvieron una tabla de 250.000 dgitos aleatorios a partir de resultados de la Lotera Nacional
[ROY54].
Sin embargo, la aparicin de las mquinas de clculo electrnicas trajo consigo el poder
generar este tipo de nmeros de forma ms eficiente. Un primer intento de generar nmeros aleatorios
de esta forma es el que realizaron M.G. Kendall y B. Babington-Smith en 1939, quienes llegaron a
generar 100.000 nmeros aleatorios [KEN38].
Otro intento lo realizaron en la compaa Rand Corporation en 1955, y consiguieron una
tabla con ms de un milln de nmeros aleatorios y 100.000 abscisas aleatorias de la distribucin
normal tipificada [RAN55], utilizando ya para ello un generador de nmeros aleatorios diseado para
este fn por la propia empresa.
Adems, la aparicin cada vez ms frecuente de sistemas electrnicos para telecomunicaciones
que aprovechan las caractersticas de este tipo de secuencias para realizar diversos procesos (por
ejemplo cifrado, aleatorizacin, etc.), ha impulsado la aparicin de gran nmero de dispositivos
electrnicos, la mayora de ellos basados en mquinas de estados finitos como los registros de
desplazamiento con realimentacin lineal, que son capaces de generar este tipo de secuencias para ser
utilizadas por dichos sistemas para realizar sus funciones especficas.
Sin embargo, esta forma de generar los nmeros aleatorios presenta una primera cuestin
obvia: Cmo pueden considerarse aleatorias las secuencias obtenidas por un procedimiento
determinista basado en ejecutar un determinado algoritmo en un ordenador o en un sistema de estados
finitos, si de esta forma cada nmero est completamente determinado por su predecesor?.
La respuesta a esta pregunta es que las secuencias producidas de esta manera no son en realidad
aleatorias, sino tan slo parecen comportarse como tales. Por tanto, a estas secuencias generadas de
forma determinista se las llama de forma genrica pseudoaleatorias o cuasi-aleatorias (a veces tambin
pseudoruido debido a la naturaleza aleatoria que presenta el ruido blanco) para indicar que tan slo
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
14
15
que ser necesario comprobar cuidadosamente que las secuencias que generemos cumplan este objetivo,
y para ello es interesante analizar detenidamente el concepto de aleatoriedad. Por ejemplo, si alguien
tuviera que decidir si una secuencia determinada como la secuencia todo ceros (000000000000.....) ha
sido obtenida tirando monedas al aire, probablemente la respuesta sera que no, ya que intuitivamente
se espera que una secuencia verdaderamente aleatoria tenga el mismo nmero de ceros que de unos.
Algo similar ocurrir con la secuencia (1010101010101010......) ya que, aunque contiene igual
cantidad de ceros que de unos, la consideraramos tambin como no aleatoria, debido a que las parejas
de bits estn distribudas uniformemente. Problablemente, la secuencia
(11001001000011111101101010100...) le parecera aleatoria a la mayora de la gente. Sin embargo,
esta secuencia es simplemente el desarrollo binario del nmero y, por tanto, es de una forma muy
determinada. Por tanto, el juicio de si una secuencia particular puede ser la salida de un dispositivo que
pueda modelarse como una fuente binaria simtrica (y, por tanto, verdaderamente aleatoria) ser algo
ms complejo y depender de los diferentes tipos que podamos esperar de no aleatoriedad.
Una aproximacin interesante para definir la aleatoriedad de la secuencias generadas mediante
algn tipo de algoritmo determinista es la que hace Martin-Lf [MAR66], cuando define de una forma
informal la cantidad de aleatoriedad contenida en una secuencia binaria como la longitud del programa
ms corto (mquina de Turing) que puede generar dicha secuencia. Segn esta definicin, cualquier
secuencia que contenga algn tipo de regularidad, por ejemplo cuando su descripcin sea ms corta que
su longitud, ser considerada como no aleatoria.
Sin embargo, la longitud del programa ms corto que permite generar la secuencia, y que se
llama tambin la complejidad de Kolmogorov [KOL65], no es computable ni an disponiendo de
recursos de computacin ilimitados. En el captulo 6, que tratar el tema de la complejidad de las
secuencias aleatorias, se estudiarn ms profundamente estos conceptos.
Esto nos lleva al hecho de que, para estudiar la aleatoriedad de las secuencias producidas por
mtodos de generacin deterministas, deberemos disponer de una serie de herramientas conocidas como
tests estadsticos que nos permitan detectar, con una probabilidad elevada, cundo la secuencia estudiada
ha sido generada empleando un modelo estadstico que difiera considerablemente del de una fuente
binaria simtrica. En el captulo 5 se presentan una serie de tests estadsticos que nos permiten
comprobarlo.
16
rn
m
En general, para cualquier entero positivo k, podemos requerir que nuestra secuencia sea kdistribuda, es decir, que las agrupaciones de k nmeros que hagamos, para cualquier k, tambin estn
uniformemente distribudas.
17
18
{b X } = b X , b X , b X ...
i
i 1
donde indica la parte entera, es una secuencia de enteros b-aria k-distribuda para todo bi de un
conjunto infinito de enteros, 1 < b1 < b2 < b3,... entonces la secuencia de reales original {Xn} tambin
ser k-distribuda.
DEFINICION 7: Si {Xn} = X0, X1, X2,... es una secuencia de nmeros reales entre [0,1), que cumple
la propiedad de k-distribucin, y denotamos como f(x 1 , x 2 ,..., x k ) a una funcin de k variables
integrable por Riemann, entonces
1
1
1
f X j , X j +1 , X j + k 1 = 0 ... 0 f ( x1 , x2 ,..., x k )dx1 ... dx k
n n 0 j <n
lim
DEFINICION 8: Una secuencia es (m,k)-distribuda cuando para cada muestreo regular consistente en
coger una muestra de cada j (0 j m), la secuencia que se obtiene tambin es k-distribuda.
Una secuencia k-distribuda es el caso especial para m =1, es decir, cuando el muestreo
consiste en coger todos los elementos. El caso m = 2, que consiste en coger una de cada dos muestras
de la secuencia, implica que las k-tuplas en las posiciones pares deben tener la misma densidad que la
k-tuplas en posiciones impares.
Por ejemplo, si una secuencia es 3-distribuda, es decir, todas las ocurrencias de 3 nmeros
son equiprobables, ser (2,3)-distribuda si son 3-distribudas las secuencias resultantes de tomar un
trmino de cada dos (subsecuencias de nmeros de posiciones pares o subsecuencias de nmeros de
posiciones impares). Algunas conclusiones importantes que se derivan de esta definicin son:
1) Una secuencia (m,k)-distribuda ser (m, )- distribuda para 1 k .
2) Una secuencia (m,k)-distribuda sera (d,k)-distribuda para todos los divisores d de m.
Las definiciones anteriores nos servirn para definir de forma ms estricta las secuencias distribudas.
DEFINICION 9: Una secuencia -distribuda ser (m,k)-distribuda para todos los enteros positivos m
y k.
A partir de las definiciones anteriores ya se pueden obtener una serie de propiedades de las
secuencias aleatorias y realizar una formulacin vlida de la idea intuitiva de aleatoriedad.
PROPIEDAD 1: Una secuencia infinita de reales en el intervalo [0,1) ser aleatoria si es -distribuda
con probabilidad 1.
19
PROPIEDAD 2: Una secuencia de enteros b-aria infinita ser aleatoria si todas las subsecuencias
infinitas obtenidas a partir de ella mediante muestreo tambin son 1-distribudas (o equidistribudas).
El muestreo realizado sobre la secuencia no tiene por qu ser regular (el que nos lleva a la
definicin de secuencia -distribuda), sino que tambin se pueden considerar muestreos irregulares
expresables mediante una funcin. A modo de ejemplo, supongamos que definimos la regla de
muestreo n2. La secuencia resultante debera ser (s0, s1, s4, s9,..., sn2,...).
Segn la propiedad 2, esta secuencia resultante debera ser equidistribuda si la secuencia que
la origin es aleatoria.
De todo lo anterior se puede deducir lo que se considera que debe ser una secuencia de reales
infinita aleatoria. Una secuencia infinita de reales {Xn} = X0, X1, X2,....en el intervalo [0,1) se dice
que es aleatoria:
A1)
Si es -distribuda.
A2)
Si, siempre que sea P una determinada propiedad que haga que P({Y n}) se mantenga con
probabilidad 1, para una secuencia {Yn} de muestras independientes de variables aleatorias que
siguen una distribucin uniforme, entonces P({Xn}) tambin tiene probabilidad 1.
A3)
A4)
Si para cualquier algoritmo que especifique una secuencia infinita de enteros no negativos
distintos {Sn}, para n 0, la subsecuencia Xs 0 , Xs1 ,... correspondiente a este algoritmo es distribuda.
A5)
{bXn } es
la subsecuencia Xs n
positivo para el cual los elementos de la subsecuencia Xs n 1 , Xs n 2 ,..., Xs n n son todos menores que
{ }
A6)
Si toda subsecuencia b-aria infinita obtenida a partir de ella mediante muestreo (regular o
irregular) es 1-distribuda.
20
Desde un punto de vista prctico, se podra discutir la utilidad de las secuencias aleatorias
infinitas en el sentido que se acaba de describir. Si disponemos de una secuencia binaria (b = 2) de la
que se sabe que como mnimo es, por decir algn nmero, 1.000.000-distribuda, se debe tener en
cuenta que esta secuencia va a tener subsecuencias de 1.000.000 de ceros y 1.000.000 de unos. Es
decir, que las secuencias verdaderamente aleatorias van a mostrar localmente comportamientos no
aleatorios. Claramente, esta situacin representara un problema en la mayora de la aplicaciones.
Por ejemplo, si se dispone de una sistema de cifrado en el que la secuencia cifrada se obtiene
combinando (mediante la suma mdulo 2) la informacin que se va a transmitir con dicha secuencia
pseudoaleatoria, durante estas subsecuencias de 1.000.000 de ceros (o de unos), la secuencia ser
enviada al canal sin cifrar.
En una modulacin spread spectrum, que expande el ancho de banda de la seal a transmitir
hasta el ancho de banda del canal, combinndola (mediante suma mdulo 2) con la secuencia
pseudoaleatoria, el hecho de que aparecieran estas subsecuencias en la secuencia pseudoaleatoria hara
que no estuviramos expandiendo el espectro convenientemente durante toda su duracin.
Si bien es cierto que la probabilidad de ocurrencia de este tipo de subsecuencias ser tan slo
1000000
de (1/2)
en promedio segn la definicin 4, el hecho es que tarde o temprano ocurrir.
Este problema queda solucionado en la prctica por el hecho de que las secuencias que se van a
emplear no sern realmente aleatorias infinitas, sino pseudoaleatorias, obtenidas por mquinas de
estados finitos y, por tanto, de naturaleza peridica. El hecho de su periodicidad implicar que no
podrn ser -distribudas.
As pues, debemos tambin preguntarnos qu patrn se debe tener en cuenta para definir el
comportamiento aleatorio para las secuencias de tipo finito. Se podra argumentar que no hay medio
alguno para juzgar legtimamente si una secuencia finita es aleatoria o no, en especial por cuanto
cualquier secuencia en particular es tan probable como cualquier otra.
Sin embargo, tambin para este tipo de secuencias podemos tener una cierta nocin de
aleatoriedad, puesto que prcticamente todo el mundo coincidira en considerar a la secuencia finita de
longitud 10 (0111010011) como ms aleatoria que la secuencia (1010101010), y sta como ms
aleatoria que la secuencia (0000000000).
Si bien las secuencias realmente aleatorias (infinitas) mostrarn localmente un
comportamiento no aleatorio, esperaremos encontrar tambin ese comportamiento en una secuencia
finita larga, aunque jams en una corta. Por lo tanto, al igual que ocurra con las secuencias aleatorias
infinitas, podemos esperar que presenten el mximo grado de equidistribucin posible. Para secuencias
finitas se puede afirmar que:
DEFINICION 10: Una secuencia b-aria de longitud N, {X n} = X 1, X 2,..., X N ser k-distribuda si
cumple que:
Prob (X n , X n+1 ,..., X
n+k-1
= x 1 x 2 ...x k )
(1/b)k
21
DEFINICION 11: Una secuencia b-aria de longitud N ser aleatoria si es k-distribuda para todos los
enteros positivos k logb(N).
El inters practico consistir en evaluar la aleatoriedad de las secuencias pseudoaleatorias de
longitud finita. Tal como se ha dicho antes, para ello se pueden emplear una serie de tests que nos
permitirn comprobar si las secuencias cumplen las propiedades anteriores o no, y detectarn los
posibles defectos estadsticos que presenten.
P-1
(on y off).
Para describirlas se usan los valores +1 y -1, que se correspondern con los valores binarios 0
y 1 respectivamente. Esto explica algunas de las frmulas que se usan para describir los postulados de
Golomb y que no se usaran si se utilizara simplemente aritmtica mdulo 2 ( es decir, ceros y unos
binarios).
Con esos dos valores, la suma tiene tres valores posibles (2, 0,-2) en lugar de dos (1,0) y el
producto es equilibrado, ya que dos combinaciones dan +1 y las otras dos dan -1, en contraste con el
caso de usar mdulo 2 que est desbalanceado, ya que de las cuatro posibilidades, tres dan suma 0 y
slo una da suma 1.
Una vez aclarado esto, las siguientes propiedades estn asociadas con la aleatoriedad:
22
P1
xn 1
n =1
P2
P3
En cada periodo de la secuencia, la mitad de las subsecuencias de unos tiene longitud 1, una
cuarta parte tiene longitud 2, una octava parte tiene longitud 3, etc. En general, hay 1/2 i
subsecuencias de longitud i. Lo mismo ocurre con las subsecuencias de ceros. Pero adems,
debe haber el mismo nmero total de subsecuencias de ceros que de unos.
La funcin de autocorrelacin normalizada de dicha secuencia C ( ) debe ser bivalor. Esto se
puede poner de forma explcita como sigue:
P C( ) =
xn xn + = k
n =1
si
si
=0
0<<P
(1)
23
Subsecuencias
Longitud
1
2
3
TOTAL
Unos
1
0
1
2
Ceros
1
1
0
2
Total (unos+ceros)
2
1
1
4
Los tres postulados son independientes, pero cuando se cumple P2 normalmente implica que
tambin es cierto P1. Sin embargo, puede suceder que se cumplan los postulados primero y tercero
pero no el segundo, o que se cumplan el primero y el segundo pero no el tercero. Para ilustrarlo,
veamos unos ejemplos ms.
EJEMPLO 1.2: Sea la secuencia de periodo P = 11 (11011100010) . Esta secuencia satisface el
primer postulado, puesto que se pueden contar 5 ceros y 6 unos, y tambin el tercer postulado, ya que
la autocorrelacin slo tiene dos valores y k = -1/11.
Sin embargo no satisface el segundo postulado de Golomb, ya que hay un desequilibrio de dos
subsecuencias de ceros por una de unos para longitud 1, tal como se muestra en la tabla 1.2 de
subsecuencias.
Subsecuencias
Longitud
1
2
3
TOTAL
Unos
1
1
1
3
Ceros
2
0
1
3
Total (unos+ceros)
3
1
2
6
24
Subsecuencia
Longitud
1
2
3
4
5
TOTAL
Unos
1
0
1
0
1
3
Ceros
2
1
0
0
0
3
Total (unos+ceros)
3
1
1
0
1
6
EJEMPLO 1.4: Sea la secuencia de periodo P = 8 (10110010). Satisface el primer postulado, ya que
hay 4 ceros y 4 unos, y el segundo postulado pero, sin embargo, no muestra una funcin de
autocorrelacin bivalor.
El nmero de subsecuencias de esta secuencia se muestra en la tabla 1.4.
Subsecuencias
Longitud
1
2
3
TOTAL
Unos
2
1
0
3
Ceros
2
1
0
3
Total (unos+ceros)
4
2
0
6
Por tanto, nuestro inters residir en ver si se satisfacen estos postulados y, cuando no se
cumplan, ver si la desviacin es muy grande (por ejemplo, el desbalanceo de unos y ceros en %, por
cuntas subsecuencias no se cumple, etc).
Tal como se coment al comienzo de este apartado, si bien el cumplimiento de estos
postulados es fundamental para considerar las secuencias como aleatorias, generalmente se requerir de
ellas, para la mayora de aplicaciones, que cumplan otra serie de requisitos ya que stos, por s solos,
no son suficientes para garantizar la impredictibilidad (o tambin la no-reproducibilidad) de la
secuencia.
Esto quiere decir que, si bien las m-secuencias producidas por registros de desplazamiento con
realimentacin lineal cumplen a la perfeccin los tres postulados de Golomb, y muestran por tanto un
comportamiento aleatorio que parece coincidir con el que cumplen las secuencias verdaderamente
aleatorias, presentan el problema de que es fcil reproducir toda la secuencia, a partir de tan slo unos
pocos bits de ella, tal como se ver en el captulo 3.
25
26
1)
Los nmeros producidos por un generador de secuencias aleatorias deben seguir la distribucin
uniforme, ya que los sucesos verdaderamente aleatorios siguen esta distribucin.
2)
Los nmeros producidos deben ser estadsticamente independientes, es decir, el valor que tome
un nmero en una secuencia aleatoria no debe afectar al valor del siguiente nmero. Este
concepto se suele denominar impredictibilidad de las secuencias y se puede generalizar an ms,
de forma que conocidos n nmeros de la secuencia debe ser muy difcil (idealmente imposible)
predecir el siguiente nmero (n+1) con una probabilidad mayor que 1/2.
3)
Las secuencias de nmeros pseudoaleatorias producidas deben ser fcilmente reproducibles, para
poder repetir el experimento siempre que sea necesario.
4)
La secuencia debe ser no repetitiva para una cierta longitud especificada de antemano. La gran
diferencia entre las secuencias verdaderamente aleatorias y las que podemos obtener usando los
algoritmos que se describirn en captulos siguientes es que, si bien las primeras son de
longitud infinita, las segundas no lo pueden ser debido a los propios mtodos que empleamos
para generarlas, basados en su mayor parte en mquinas de estados finitos que hacen que sean de
carcter peridico. Sin embargo, en la prctica, podemos considerar adecuada la secuencia
obtenida mediante este tipo de mquinas si su periodo es de longitud superior a la porcin de
secuencia que vamos a emplear en nuestra aplicacin, es decir, que no vamos a emplear ms
nmeros de los que tiene el periodo.
5)
La generacin de nmeros aleatorios debe ser rpida y eficiente, ya que muchas aplicaciones
requieren emplear estas secuencias a una elevada velocidad.
6)
El mtodo empleado debe presentar la menor complejidad estructural posible. Esto es deseable
tanto si la implementacin del algoritmo se realiza mediante hardware o software, si bien en
este ltimo caso es importante el uso de la menor cantidad de memoria posible, ya que en la
mayora de los casos suele ser un recurso escaso.
El hecho que las secuencias deban ser reproducibles se convierte en una consideracin
imprescindible en la mayora de aplicaciones de ingeniera que van a hacer uso de estas secuencias.
Ello es debido a que si un determinado proceso de un sistema debe hacer uso de una secuencia de este
tipo para realizar una determinada funcin, generalmente, en otro punto del sistema, se deber realizar
el proceso inverso, empleando para ello la misma secuencia pseudoaleatoria que emple el primero.
Tal como veremos en el captulo de aplicaciones, esto hace que no slo sea de vital importancia la
forma de generar las secuencias pseudoaleatorias sino tambin el hecho de que sea posible generarlas de
una forma sincronizada en ambos procesos del sistema. Para este tipo de aplicaciones, que sern la
gran mayora, se pueden hacer varias aproximaciones al problema de tener la misma secuencia en
ambos procesos del sistema, que generalmente estarn separados tanto en el espacio (situados en
27
localizaciones fsicas distintas), como en el tiempo (ya que entre el primer proceso y el segundo
existir un lapso de tiempo o retardo que podr ser variable en funcin de numerosas consideraciones).
La primera aproximacin que se podra hacer al problema consiste en generar la secuencia
mediante alguno de los mtodos disponibles y almacenarla en un medio fsico de almacenamiento,
como un disco. Evidentemente, esta tcnica presenta numerosos inconvenientes, como por ejemplo la
poca versatilidad en el cambio de la secuencia, el elevado coste del medio fsico de almacenamiento
(sobre todo teniendo en cuenta los enormes periodos que generalmente se requieren en las aplicaciones
normales), y el hecho del retardo que implican las lecturas a este tipo de medios. Adems, una vez
generada la secuencia, si sta se ha de emplear en diversos puntos del sistema, habra que transportarla
de alguna manera a todos ellos, lo que implicara un gran coste en tiempo y una gran falta de
flexibilidad si se requiriese cambiar la secuencia.
Una segunda aproximacin al problema consistira en generar la secuencia mediante algn
mtodo y almacenarla en memoria. Si bien esta solucin mejorara el tiempo de acceso a la secuencia
respecto al caso anterior, este tipo de memorias tienen un coste mayor que las de tipo masivo.
Adems, mantendra todos los dems problemas que se presentaban en el caso anterior.
La tercera aproximacin, que es la que se usa en la prctica, consiste en emplear un valor de
entrada (semilla) a algn algoritmo determinista de forma que, si la semilla es la misma, el algoritmo
genere siempre la misma secuencia pseudoaleatoria. De cara a aplicaciones prcticas, esta
aproximacin soluciona todos los problemas que presentaban las anteriores, ya que en todos los
puntos del sistema bastar con que se disponga del algoritmo, bien en forma de programa, bien en
forma de dispositivo electrnico, y lo nico que se tendr que enviar a todos los puntos para que
generen la misma secuencia pseudoaleatoria ser precisamente la semilla (que generalmente ser de
unas decenas de bits). Una vez considerada esta tercera aproximacin como solucin prctica para
disponer de la misma secuencia pseudoaleatoria en diversos puntos de un determinado sistema, el
principal problema que se plantear, y que ser motivo de estudio a lo largo de este libro, ser el de
disear algoritmos que sean capaces de generar secuencias que cumplan las propiedades descritas en los
puntos anteriores con la mayor sencillez y eficiencia posible.
1.5 Problemas
PROBLEMA 1.1 Puede ser una secuencia peridica equidistribuda?
PROBLEMA 1.2 Considerar la secuencia peridica binaria 0,0,1,1,0,0,1,1,... Determinar si dicha
secuencia es 1-distribuda, 2-distribuda y 3-distribuda.
PROBLEMA 1.3 Construir una secuencia peridica ternaria que sea 3-distribuda.
PROBLEMA 1.4 Determinar si la secuencia (010011011000101) cumple los tres postulados de
Golomb.
PROBLEMA 1.5 En una secuencia aleatoria de 1000.000 de dgitos decimales, cul es la
probabilidad de que contenga 100.000 de cada uno de los 10 dgitos posibles?
28
Pr ( X2n = 0 )
1
+
2
2k 1
22k
PROBLEMA 1.11 Sea {Xn} una secuencia binaria que es aleatoria segn la definicin A4. Mostrar
que la secuencia de reales en el intervalo [0,1) {Yn} definida mediante:
Y0 =
Y1 =
Y2 =
Y3 =
0.X 0
0.X 1 X 2
0.X 3 X 4 X 5
0.X 6 X 7 X 8 X 9
...........
1.6 Bibliografa
[CHA66]
CHAITIN, G. J. On the Lengh of Programs for Computing Finite Binary Sequences. Journal of
the ACM 13, pp. 547-569, 1966.
[CHA69]
[CHA75]
[CHA87]
[FEL68]
[FRA63]
[GOL67]
[KAN84]
[KEN38]
[KKO]
[KNU67]
[KOL65]
[KOL65]
[LEH51]
[MAS76]
[MAR66]
[MAU89]
[MOO40]
[POP59]
[RAN55]
[ROY54]
[SCH88]
[TIP27]
[WOL85]
29
31
2.0 Introduccin
En las ltimas dcadas se ha desarrollado un gran esfuerzo en la labor de disear y testear
algoritmos que sean capaces de generar secuencias pseudoaleatorias, debido a la gran cantidad de
aplicaciones que usan este tipo de secuencias. Su buen funcionamiento se basa, precisamente, en el grado
de aleatoriedad que presenten.
Estos algoritmos difieren no slo por la tcnica empleada, sino tambin por su velocidad de
generacin, la longitud de su periodo, la sencillez en su implementacin (hardware o software), y en su
parecido con las secuencias verdaderamente aleatorias.
En este captulo se van a presentar algunos de los algoritmos de generacin de secuencias de
nmeros aleatorios ms conocidos, cuyo diseo y forma de generacin est especialmente indicado para
ser utilizado en ordenadores, por lo que sus aplicaciones ms inmediatas se centrarn en la simulacin de
procesos, aunque tambin pueden ser utilizadas para otras aplicaciones, como puede ser el cifrado de las
comunicaciones, etc.
2.1.1
Este algoritmo, desarrollado a mediados de los 40 por John von Newman, se basa en tomar un
nmero inicial (semilla) y elevarlo al cuadrado, empleando los dgitos del medio para obtener el segundo
nmero de la secuencia. Los siguientes nmeros se van obteniendo iterando este proceso. Vemoslo con
un ejemplo:
EJEMPLO 2.1: Se desea generar una secuencia de nmeros de 4 dgitos pseudoaleatorios usando el
mtodo del medio del cuadrado. Para ello, se elige como semilla el nmero x0 = 3187:
(3187)2= 10156969 x1 = 1569
(1569)2= 02461761 x2 = 4617
(4617)2= 21316689 x3 = 3166
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su distribucin y
venta fuera del mbito de la Unin Europea.
32
(3166)2= 10023556
(0235)2= 00055225
(0552)2= 00304704
(3047)2= 09284209
x4 = 0235
x5 = 0552
x6 = 3047
x7 = 2842
Siguiendo con este proceso se iran obteniendo los nmeros 0769, 5913, 9635, 8332, 4222,
8252,......
Sin embargo, las secuencias obtenidas mediante esta tcnica presentan gran nmero de problemas
como bajo periodo (es decir, que suelen caer rpidamente en una rutina que se repite continuadamente) y el
hecho de que si en algn momento se produce el nmero cero, todos los nmeros siguientes de la
secuencia sern el cero.
Si bien este ltimo problema se puede presentar en la mayora de los generadores de secuencias
pseudoaleatorias, la mayora de las veces stos se podrn disear de forma que se garantice que el nmero
cero no se va a producir. En este generador es imposible garantizar esto. El siguiente ejemplo muestra
este caso.
EJEMPLO 2.2: Se desea generar una secuencia de nmeros de dos dgitos pseudoaleatorios empleando el
mtodo del medio del cuadrado, partiendo de la semilla x0 = 44:
(44)2= 1936
(93)2= 8649
(64)2= 4096
(09)2= 0081
(08)2= 0064
(06)2= 0036
(03)2= 0009
(00)2= 0000
x1 = 93
x2 = 64
x3 = 09
x4 = 08
x5 = 06
x6 = 03
x7 = 00
x8 = 00
A pesar de la gran sencillez de este generador, es recomendable evitar su uso debido a las
deficiencias que presenta recurriendo a otros generadores que los solucionan.
2.1.2
El GPSS es un lenguaje de propsito general para simulaciones propuesto por primera vez por
Gordon en 1961 [GOR61], con el propsito de servir como herramienta para la simulacin de sistemas
discretos. Posteriormente han ido apareciendo nuevas versiones como la GPSS V o la GPSS/360, que
incorpora 8 generadores de secuencias pseudoaleatorias que se demominan RN-1, RN-2,...,RN-8 [FEL68].
El funcionamiento de estos algoritmos es el siguiente: en primer lugar, se requieren 3 vectores
de 8 celdas, 8 vectores base que almacenarn las semillas, 8 vectores que contengan los multiplicadores de
los generadores (inicialmente se pondrn a 1) y 8 vectores que contengan los ndices para cada generador
(y que inicialmente estarn todos puestos a 0). Cada nmero aleatorio se generar mediante el siguiente
algoritmo:
33
Paso 1
La palabra apropiada del vector de ndice se hace apuntar al vector de base que contiene la
semilla. Puesto que cada ndice est inicialmente puesto a 0, el primer nmero base se emplea
como semilla de todos los generadores.
Paso 2
El contenido del vector multiplicador apropiado se multiplica por el contenido del vector base
elegido en el paso 1.
Paso 3
Si el bit de mayor peso de los 32 bits de menor orden de este producto es un 1, estos 32 bits de
menor peso se sustituyen por su complementario.
Paso 4
Paso 5
En el vector de ndice se almacenan 3 bits de los 16 bits de mayor orden del producto obtenido
en el paso 2 para un uso futuro.
Paso 6a
Si se requiere un nmero fracionario, el nmero constitudo por los 32 bits del medio del
producto se divide por 106 y el resto que se obtiene es el nmero de 6 dgitos deseado.
Paso 6b
Si se requiere un entero, los 32 bits del medio del producto obtenido se dividen por 103 y el
resto producido es el nmero deseado de 3 dgitos.
2.1.3
El generador PRN
Este generador se basa en una tcnica muy simple para generar nmeros reales pseudoaleatorios
entre 0 y 1 y que consiste en la siguiente recursin:
x n +1 = 10 b mx n
donde p denota la parte fraccional del nmero real p, b es el nmero de dgitos del nmero
pseudoaleatorio y m es una constante multiplicadora que cumple que 0 < m < 1.
34
Los estudios realizados sobre las secuencias de salida de este generador han llevado a considerar
que un valor de m igual a 10-b(200X Y), donde X es cualquier entero no negativo, e Y es cualquier
nmero del conjunto {3, 11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67, 69, 77, 83, 91}, ofrece buenos
resultados para la secuencia pseudoaleatoria de salida. Adems, la semilla se debe elegir de la forma x0 =
10 -bk, donde k debe ser cualquier entero no divisible por 2 5 y en el rango 0 < k < 10b. Veamos el
funcionamiento de este generador mediante un ejemplo:
EJEMPLO 2.3: Sea la semilla x0 = 0,33, X = 0 e Y = 11. Queremos obtener una secuencia de nmeros
pseudoaleatorios de 2 dgitos empleando el mtodo PRN. Para ello hacemos que m = 10-2(11,0) = 0,11,
con lo que la secuencia se producir de la siguiente forma:
x 0 = 0, 33
x1 = 100( 0,11)( 0, 33) = 0, 63
x 2 = 100( 0,11)( 0, 63) = 0, 93
x3 = 100( 0,11)( 0, 93) = 0, 23
x 4 = 100( 0,11)( 0, 23) = 0, 53
x5 = 100( 0,11)( 0, 53) = 0,83
La principal desventaja de este generador radica en su lentitud para producir los nmeros
pseudoaleatorios, ya que se requieren muchas multiplicaciones para generar cada uno de ellos.
2.1.4
Generadores de congruencias
Los generadores congruenciales han encontrado gran difusin como generadores de nmeros
aleatorios en ordenadores. En las libreras de casi todos los ordenadores se puede encontrar una funcin que
implementa esta tcnica para generar nmeros aleatorios. Su enorme xito se encuentra en su sencillez y
velocidad de ejecucin. Sin embargo, en muchos casos, las secuencias producidas por estos generadores
presentan defectos estadsticos, y en algunos casos realmente importantes.Este hecho, y dependiendo de su
grado, puede no ser decisivo en algunas aplicaciones donde priman las caractersticas de sencillez y
rapidez, pero en otras aplicaciones, como por ejemplo la criptografa, puede ser crtico.
A) Generadores de congruencias lineales
Veamos dos tipos de generadores congruenciales lineales, los multiplicativos y los mixtos, y
sus propiedades en funcin de los valores que seleccionemos para los parmetros que los definen.
A1) Generadores congruenciales lineales multiplicativos
En 1951, D.H. Lehmer [SCH79] propuso un algoritmo que ha sido ampliamente estudiado desde
entonces. La definicin del algoritmo implica nicamente dos parmetros: el mdulo m, que debe ser un
35
nmero entero primo de elevado valor, y el multiplicador a, que debe ser un entero con un rango entre 2 y
m-1. La generacin de la secuencia de enteros s0, s1, s2, s3,... se produce mediante la siguiente ecuacin
iterativa:
sn +1 = f ( sn )
para n = 1, 2,...
f ( s ) = as mod m
sn
m
para n = 1, 2, ...
36
debido a dicho producto. Para estos valores, se necesitan al menos 46 bits para representar el mximo
valor que puede tomar el producto as. Sin embargo, el algoritmo de Lehmer es altamente portable entre
distintos ordenadores, y puede implementarse correctamente en la mayora de ellos. Algunos paquetes de
software comerciales que incluyen este algoritmo como subrutina en sus libreras son la librera IMSL
(subrutina RNUN) y el lenguaje de simulacin SLAM (subrutina DRAND).
La aparicin de programadores ms preocupados por la optimizacin de cdigos que en la
generacin de nmeros aleatorios hizo que se desarrollaran generadores multiplicativos de mdulo no
primo de la forma m = 2b, donde b es el tamao de la palabra entera del ordenador. Esto conlleva una
mayor eficiencia de ejecucin aunque, como contrapartida, las implementaciones obtenidas son muy poco
portables entre distintas mquinas, presentan graves defectos estadsticos y adems no permiten obtener el
periodo mximo. De hecho, el mximo periodo que puede obtenerse es slo 2b-2 = m/4, y se obtendr si,
y slo si, (a mod 8) vale 3 5, y la semilla es un entero impar. Si se cumplen estas condiciones, el
generador producir una permutacin peridica de la mitad de los enteros impares entre 1 y 2b-1. El
ejemplo ms representativo lo muestra la funcin RANDU del IBM/360, que implementa la funcin
f(s n+1 )=65539s n mod 231 , que fue introducida a principios de los 60 y que diversas pruebas han
demostrado su psima calidad. Afortunadamente, a mediados de los 60, la cuestin de la velocidad de
ejecucin dej de tener la importancia vital que presentaba hasta entonces y la eleccin de un mdulo
primo volvi a coger auge, al menos entre los especialistas. Esto, aadido a la aparicin de la aritmtica
de 32 bits como estndar para ordenadores, hizo que 231-1 = 2147483647 reapareciera como una eleccin
lgica para el mdulo.
A2) Generadores congruenciales lineales mixtos
Los generadores congruenciales lineales mixtos [GOR71] son una generalizacin de los
anteriores, aadiendo un parmetro aditivo b que satisface que b mod m 0. Veamos cul es el algoritmo
para generar los nmeros aleatorios. Para ello, sean a, b y m tres enteros positivos con m>max{a,b}.
Para cada entero no negativo x<m , se define una secuencia xi tal que:
x n +1
=
( ax + b ) mod m
n
si
n=0
si n > 0
La salida de este generador es la secuencia finita peridica x0, x1, ..., xm-1.
EJEMPLO 2.5: Sea f(xn+1) = (5xn+3) mod 16, con la semilla x0 = 1. La secuencia producida por este
generador ser: {1, 8, 11, 10, 5, 12, 15, 14, 9, 0, 3, 2, 15, 4, 7, 6, 1, 8, 11, ...} que tiene periodo
mximo m-1 = 15.
Al aadir este parmetro aditivo, esta funcin es capaz de generar el nmero 0 (x0 = 0) y por lo
tanto, una secuencia de periodo mximo ser aqulla cuyo periodo sea m y no m-1 como antes.
Tericamente, el mdulo m puede ser cualquier entero positivo, sea primo o no, aunque en la prctica se
37
suele tomar de forma que sea una potencia de 2 o de 10. En el caso de que se tome un mdulo del tipo m
= 2z, el generador mixto slo ser de periodo mximo si, y slo si, a mod 4 = 1 y b es impar [GOR71].
Ejemplos de este generador son la subrutina RAND del sistema operativo UNIX, que
implementa la funcin f(xn+1) = (1103515245xn+12345) mod 231, o el generador de nmeros aleatorios
del Turbo Pascal estndar que implementa la funcin f(xn+1) = (129xn+907633385) mod 232, que es de
periodo mximo y con el que se obtiene una salida normalizada dividiendo por 232 (en el Turbo Pascal 87
se divide por 231 y si el resultado u es mayor que 1, la salida es 2-u). Se ha demostrado que ambos
generadores no son excesivamente buenos en cuanto a aleatoriedad. En el primero de ellos, los bits de
menor peso de los nmeros generados no son muy aleatorios, mientras que el segundo tambin presenta
el problema de tener ciclos de pequeo periodo en los bits de menor peso, adems de presentar un
multiplicador demasiado pequeo (aunque esto produce simplicidad en la representacin binaria).
En cualquier caso, veamos algunas consideraciones prcticas necesarias a la hora de disear un
generador de estas caractersticas. Tal como se ha mencionado antes, es necesario realizar una buena
eleccin de los parmetros a, b, m y la semilla x0 para obtener periodo mximo y buenas propiedades
estadsticas.
Estas condiciones tambin sern vlidas para el generador de congruencias lineales multiplicativo
visto en el apartado anterior, aunque en ese caso el parmetro b valdr cero. Veamos estas condiciones,
expuestas por Knuth [KNU67]:
a) Eleccin del mdulo m: En primer lugar hay que tener en cuenta que el valor del mdulo debe
ser lo mayor posible, ya que el periodo que obtengamos ser siempre menor o igual que l. Adems, se
debe elegir un valor que facilite el clculo de la solucin de la relacin congruencial. Para mquinas que
utilicen una representacin binaria, una excelente eleccin es 2k-1, donde k es la longitud de palabra de la
mquina.
b) Eleccin del multiplicador a y la constante aditiva b: Un generador de estas caractersticas
tendr el mximo periodo (P = m) si, y slo si:
(1) b es primo relativo con m (mcd(b,m) = 1).
(2) a -1 es un mltiplo de todo primo que divide a m.
(3) a -1 es un mltiplo de 4 si m es un mltiplo de 4.
Estas restricciones nos llevan a que el multiplicador a debe tomar la forma a = pv+1, donde p es
la base usada en la representacin de los nmeros en el ordenador, y k es la longitud de la palabra del
ordenador (nmero de bits por palabra), m = p k y p v < k. En particular, y tal como se vio en el
generador congruencial multiplicativo, las elecciones a = 216+5 = 65.541 a = 216+3 = 65.539 han
mostrado dar resultados satisfactorios. Para la eleccin del parametro aditivo b basta con que cumpla la
condicin de que sea relativamente primo con el mdulo m.
c) Eleccin de la semilla x0: Si los parmetros anteriores se han elegido de forma que se obtenga
un generador de periodo mximo (P = m), la eleccin de la semilla es irrelevante, ya que el generador
producir con cualquiera de ellas la secuencia completa. Sin embargo, si se usa un generador congruencial
38
multiplicativo se debe tener cuidado en no elegir la semilla x0 = 0, ya que producira la secuencia de salida
de generador todo ceros. Se puede concluir sobre los generadores congruenciales lineales mixtos que no
son una eleccin adecuada para generar nmeros aleatorios, ya que con una parte suficientemente larga de
la secuencia se pueden obtener los parmetros que definen el generador: a, b y el mdulo m.
A3) El generador congruencial lineal aditivo
Veamos otro generador congruencial que consigue mayores velocidades de generacin que los
anteriores, ya que no requiere realizar multiplicaciones. El generador congruencial aditivo, propuesto por
Green, Smith y Klem a finales de los 50, requiere de una semilla constituda por k nmeros x1, x2,...,
xk.
La obtencin de nmeros pseudoaleatorios se realiza mediante la aplicacin de un algoritmo que
produzca una extensin de este nmero hacia la secuencia xk+1, xk+2, xk+3,...., empleando para ello la
frmula recursiva:
xn + 1 = ( xn + xn k + 1 )
mod
Con este generador se pueden conseguir secuencias de nmeros pseudoaleatorios mayores que m
(a diferencia de lo que ocurra en los congruenciales lineales multiplicaticos y mixtos, en los que el
mximo periodo que se poda obtener era precisamente el mdulo m) y con buena aleatoriedad. Sin
embargo, el comportamiento terico de este generador no es tan conocido como el de los congruenciales
mixtos y, por tanto, hay que tener mucho cuidado si se elige este mtodo para generar nmeros
pseudoaleatorios en validarlo previamente (el libro adjunta un programa que puede servir como
herramienta para validar las secuencias producidas por generadores pseudoaleatorios, tal como se describir
ms adelante). Veamos un ejemplo para comprender mejor el funcionamiento de este generador.
EJEMPLO 2.6: Extendemos la secuencia 1, 2, 4, 8, 6 (k = 5) empleando el algoritmo congruencial
aditivo y empleando un mdulo m = 10.
x1 = 1
x2 = 2
x3 = 4
x4 = 8
x5 = 6
x6 = (x5+x1) mod 10 = (6+1) mod 10 = 7
x7 = (x6+x2) mod 10 = (7+2) mod 10 = 9
x8 = (x7+x3) mod 10 = (9+4) mod 10 = 3
x9 = (x8+x4) mod 10 = (3+8) mod 10 = 1
x10 = (x9+x5) mod 10 = (1+6) mod 10 = 7
x11 = (x10+x6) mod 10 = (7+7) mod 10 = 4
x12 = (x11+x7) mod 10 = (4+9) mod 10 = 3
x13 = (x12+x8) mod 10 = (3+3) mod 10 = 6
39
n0
x0 mod 4 = 2
xn+1 = xn(xn+1) mod 2e
Este mtodo es casi equivalente al mtodo del medio del cuadrado para precisin doble visto en el
punto 2.1.1, pero las secuencias generadas son de mayor periodo y presentan buenas propiedades
estadsticas. Adems, este generador se puede implementar de forma eficiente sin problemas de
desbordamiento. Veamos su funcionamiento mediante un ejemplo.
EJEMPLO 2.7: Generemos una secuencia pseudoaleatoria usando un generador congruencial cuadrtico
con parmetro d = 1, a = 1 y b = 0 y con mdulo m = 16 y semilla x0 = 2.
x0 = 2
x1 = (2(3)) mod 16 = 6
x2 = (6(7)) mod 16 = 10
x3 = (10(11)) mod 16 = 14
x4 = (14(15)) mod 16 = 2
x5 = (2(3)) mod 16 = 6
x6 = (6(7)) mod 16 = 10
x7 = 14
x8 = 2
40
Podemos observar que en este ejemplo el periodo obtenido es 4, que es mucho menor que el mdulo
m=16.
2.1.5
Este algoritmo [MAC65] constituye un excelente generador de nmeros aleatorios a partir de dos
secuencias pseudoaleatorias {Xn} e {Yn} producidas por cualquiera de los mtodos vistos anteriormente.
La forma de generacin que se decribe a continuacin es muy recomendable debido a los excelentes
resultados que presentan las secuencias producidas. Si los periodos de las secuencias {Xn} e {Yn} son
relativamente primos, producirn una secuencia de periodo muy elevado y con una dependencia muy
pequea entre trminos cercanos. El hecho de que este mtodo de generacin sea mejor que los vistos
hasta ahora es debido a que que sabemos que las secuencias de partida {X n} e {Y n} ya son bastante
aleatorias y, por tanto, se reduce considerablemente la posibilidad de obtener degeneraciones. Para su
implementacin se requiere del uso de un vector auxiliar V[0], V[1], ..., V[k-1], donde k es un nmero
elegido por conveniencia generalmente en las proximidades de 100. Inicialmente, este vector se llenar
con los k primeros valores de la secuencia {Xn}. El algoritmo de generacin es el siguiente:
Paso 1
[Generar X e Y]. Actualizar X e Y en los siguientes valores de las secuencias {Xn} e {Yn}.
Paso 2
Paso 3
Paso 4
X.
Se puede concluir sobre este generador que satisface virtualmente cualquiera de los requisitos de
aleatoriedad para una secuencia generada mediante un ordenador. Adems, el tiempo requerido de
generacin de esta secuencia es slo ligeramente mayor que el doble del tiempo requerido para generar la
secuencia {Xn} sola.
2.1.6
Veamos un mtodo propuesto por S.G. Akl y H. Meiger [AKLME] que se basa en la realizacin
de permutaciones para generar secuencias de nmeros aleatorios y que es apropiado para ser implementado
por software debido a su estructura algortmica.
Los conceptos bsicos referentes a este generador son los siguientes: Sea S un conjunto de
nmeros binarios con cardinalidad #S y sean y o dos operaciones binarias definidas sobre este
conjunto. Se puede construir una secuencia {Si} = s0, s1, s2,... de la siguiente forma:
41
FOR i = 1,2,.... DO
Paso 1: Sea x0 un elemento arbitrario del conjunto S
Paso 2: xi = xi-1 q, para i >0 y para algn q S .
Paso 3: si = x ki ox ki + 1 o...ox ki + k 1 para todo i 0 y algn entero positivo k.
END FOR
El elemento q se debe elegir de forma que la secuencia {xi} definida en los pasos 1 y 2 tenga un
periodo elevado. En el mejor de los casos, la secuencia xi tendr un periodo igual a #S, lo que implicar
que el periodo T de la secuencia {Si} sea:
#S
T=
mcd ( k, # S )
En la prctica, hacer que #S > 2200 garantizar que la secuencia no se repita para cualquier
aplicacin en la que podamos emplear el generador. Veamos cmo se puede emplear el algoritmo anterior
para construir una secuencia de permutaciones pseudoaleatorias. Si llamamos P al conjunto de todas las
permutaciones posibles en un conjunto de enteros Zn: (0, 1, 2,..., n-1), se puede calcular la secuencia
pseudoaleatoria de permutaciones {Pi} como:
FOR i = 1,2,.... DO
Paso 1 : Sea x0 un elemento arbitrario de Zn y q Zn de forma que mcd(n,q) = 1.
Paso 2: xi = (xi-1+q) mod n, para i > 0.
Paso 3: pi = f ( x ki )of ( x ki + 1 )o...of ( x ki + k + 1 ) para todo k, i 0 y algn entero
positivo k.
END DO
42
Se pueden encontrar otras formas de definir la funcin f , como la que muestra Lehmer
[LEH51]. A continuacin se muestra un algoritmo eficiente para implementar un generador de secuencias
pseudoaleatorias a partir de la secuencia pseudoaleatoria de permutaciones. Para ello, sea bi un vector de n
bits arbitrario y sea p[bi] un vector de bits que se obtiene como resultado de aplicar una permutacin p al
vector bi. En el algoritmo que se describe a continuacin emplearemos una secuencia {bi} definida como:
a) b0 = (01010...0101)
b) bi = pi-1[bi-1], para i > 0
El algoritmo aplica las permutaciones p i = f(x2i) of(x 2i+1 ) a los vectores b i pero no lo hace
calculando pi, sino aplicando x2i y x2i+1 directamente a bi.
n 64
k
2
x 0 , x 1 ,..., x n-1 Valor inicial
q 0, q 1,..., q n-1 Entero mutuamente primo con n
b 0 , b 1 ,..., b n-1 0,1,0,1,...,0,1
REPEAT (tantas veces como se requiera)
DO k TIMES
{Clculo de x+q mod n!}
Acarreo 0
FOR i = 1, 2,..., n-1 DO
x i xi + qi + Acarreo
IF x i > i THEN x i xi-(i+1)
Acarreo 1
ELSE Acarreo 0
END FOR
{Aplica x a b}
FOR i = n-1, n-2,..., 1 DO
Intercambiar (bi, bx i )
END FOR
END DO
OUTPUT b 0, b 1, ..., b n-1
END REPEAT
43
La secuencia producida por este generador muestra muy buenos resultados al ser analizada
mediante los tests estadsticos que se describen en el captulo 5. Esto, junto con el hecho de que presente
mximo periodo, hacen que este generador sea de gran utilidad para cualquier aplicacin que necesite usar
este tipo de secuencias.
2.1.7
xi + 1 = yi + 1 1. 4xi2
yi + 1 = 0. 3xi
Dependiendo del punto inicial (x0,y0) que se elija, la secuencia de puntos obtenida mediante la
iteracin de H, o bien diverger hacia el infinito, o bien converger hacia un atractor consistente en un
conjunto de puntos del plano.
Hnon demuestra adems en [HEN76] que si este punto inicial se elige en el cuadriltero con
vrtices A(-1,33, 0,42), B(1,32, 0,133), C(1,245, -0,14) y D(-1,06, -0,5), todos los puntos obtenidos de
la iteracin caern dentro de una regin contenida por completo dentro de este cuadriltero.
Una propiedad interesante de la aplicacin H, es que es extremadamente sensible al punto inicial
elegido. La secuencia de puntos obtenida empleando el vector inicial ( x 0 + x, y0 + x ) estar
prcticamente incorrelada con otra secuencia de puntos cuyo vector inical hubiera sido (x0,y0). Esta
propiedad puede ser muy interesante para una aplicacin como la criptografa, ya que este punto inicial
podra constituir la clave del criptosistema.
Sin embargo, para aplicaciones de comunicaciones, la secuencia de puntos obtenida ser de
mayor utilidad si se transforma en una secuencia binaria. Si bien existen infinitas formas de transformar
los nmeros reales en dgitos binarios, aqu se mostrar una que hace que la secuencia binaria tenga
aproximadamente el mismo nmero de ceros que de unos. Para ello buscamos un valor real xm tal que
Prob(xi xm) = Prob(xi > xm) = 0,5. R. Forr [FOR91] realiza un estudio sobre 237 secuencias de Hnon
de longitud 1.000 con valores iniciales elegidos aleatoriamente, y concluye que el valor x m = 0,39912 es
una buena estimacin de xm. Con esto, ya se puede definir una forma de obtener la secuencia binaria
pseudoaleatoria {si} mediante:
0 si xi x m
si =
1 si xi > x m
donde xi es la coordenada horizontal del i-simo punto de la secuencia de Hnon. Esta secuencia estar
ms o menos balanceada. Tambin se podra hacer esta transformacin comparando las coordenadas
44
verticales yi con su valor medio y m = 0, 11977 , o bien comparar alguna combinacin lineal axi+byi con
su valor medio estimado.
Las secuencias producidas por este generador muestran un buen comportamiento aleatorio,
puesto que presentan funciones de autocorrelacin sin picos para puntos distintos de cero, presentan
distribuciones de n-tuplas muy satisfactorias (para n pequeos), un comportamiento respecto al perfil de
complejidad lineal muy bueno, y una entropa por bit muy cercana a 1. Estos conceptos (que se
estudiarn en el captulo 5) pertenecen a medidas que se pueden realizar sobre las secuencias generadas para
estimar su grado de aleatoriedad. No se puede afirmar rotundamente que las secuencias producidas por este
generador sean verdaderamente aleatorias. Sin embargo, no es posible determinar el tamao de la memoria
de estas secuencias. Dicho tamao sera M si un smbolo de la secuencia dependiera de M smbolos
previos a ella. Por tanto, la secuencia real de Hnon tendr memoria 1, ya que cada smbolo producido
depende solamente del punto anterior. Este resultado es heurstico, y no es posible por tanto afirmar con
absoluta certeza que la secuencia de Hnon no se repetir al cabo de un cierto tiempo. Sin embargo, el
hecho de que existan infinitos puntos en el atractor nos puede hacer pensar que nunca obtendremos
exactamente el mismo punto dos veces. Adems, el hecho de tener errores de redondeo debidos a la
limitacin de la representacin del ordenador empleado favorecer que no se produzca este suceso, ya de
por s improbable.
2.1.8
Este generador, propuesto por M. Romera, I. Jimnez y J. Negrillo [ROM90], est basado
tambin en la generacin de secuencias pseudoaleatorias mediante el empleo de funciones caticas. Si
bien el anlisis matemtico de las rbitas caticas que rigen su comportamiento no lineal es muy
complejo, se puede cuantificar la bondad de la secuencia pseudoaleatoria resultante utilizando los test de
aleatoriedad que se describirn ms adelante.
Dentro de lo que constituye la teora de fractales, el conjunto de Mandelbrot se define como un
conjunto de puntos c = creal+i cimag del plano complejo, de forma que al iterarse segn la expresin zn+1
= zn2+ k (n = 0, 1, 2,..., z0 = 0+0i) permanecen acotados. Si k es real (puntos del eje del conjunto),
veamos un mtodo para generar una secuencia de nmeros aleatorios basado en esta iteracin de
Mandelbrot:
x0 0
k Un valor entre -2 y 0,25
FOR n = 0, 1, 2,... DO
x n+1 = x n 2 +k
END FOR
Los nmeros que se obtienen a partir de esta expresin, estn acotados en el intervalo [-2, 2] para
valores de k en el intervalo -2 k 0,25, pero unos son cclicamente convergentes (periodos 1, 2, 3
...), y otros son caticos. Cuando k es muy prximo a -2, por ejemplo k = -1,9999XXXXXXXX, las
series que se obtienen a partir de la iteracin real de Mandelbrot son casi siempre caticas.
45
46
Grfica 2.3 Perfil de complejidad para una secuencia con semilla k = -1,999999999999
47
La secuencia real obtenida puede convertirse fcilmente en una secuencia pseudoaleatoria binaria,
tomando el signo de cada nmero de la serie (la distribucin es simtrica respecto a cero), o aplicando un
criterio de paridad a los dgitos de cada nmero de la serie. Al igual que el generador anterior, tambin
basado en funciones caticas, no se puede afirmar con rotundidad que las secuencias producidas no tengan
periodo.
Por tanto, es un generador de secuencias aleatorias y no pseudoaleatorias, y algunos tests que se
pueden utilizar para determinar la bondad de las secuencias aleatorias, como los postulados de Golomb, o
la complejidad y el perfil de complejidad lineal (que se vern en detalle en captulos siguientes) no son
totalmente vlidos, ya que se han de pasar sobre un periodo completo de la secuencia. Sin embargo, s se
pueden usar como medidas orientativas de la bondad del generador.
Si se eligen valores de la semilla por debajo de -1,95 para este generador, se obtienen unos
valores muy pobres en cuanto a la autocorrelacin de las secuencias obtenidas. Slo a partir de estos
valores se obtendrn resultados aceptables, que adems mejorarn considerablemente a medida que se vaya
acercando al valor -2 (-1,9999....).
A modo de ejemplo, se han estudiado dos secuencias de 50.000 bits producidas por este
generador, la primera de ellas, con una semilla k = -1,935399, y la segunda, con una semilla k =
-1,9999991234.
Para la primera secuencia, se han obtenido 18.626 ceros y 31.374 unos, mientras que para la
segunda se han obtenido 24.763 ceros y 25.237 unos. Se observa claramente que el nmero de ceros y
unos est mucho ms equilibrado en la segunda secuencia.
48
Las grficas 2.1 y 2.2 muestran el comportamiento de la funcin de autocorrelacin para dos
secuencias de 1.000 bits con k = -1,935399 y para k = -1,9999991234 respectivamente, donde se puede
ver la evolucin de la funcin de autocorrelacin de este generador para estas dos semillas
respectivamente. De la comparacin de dichas grficas, se observa que a medida que la semilla se
aproxima a -2 desaparecen por completo los picos fuera de fase. Tal como estableca el tercer postulado de
Golomb, la existencia de estos picos en la funcin de autocorrelacin era un claro indicativo de
dependencias estadsticas entre los bits de las secuencias que eran incompatibles con un buen
comportamiento aleatorio.
Otra caracterstica interesante de este generador es la gran sensibilidad que presentan las
secuencias de salida frente a variaciones pequeas de la semilla empleada. Esto es muy interesante para
aplicaciones como la simulacin o la criptografa, ya que en stas puede ser interesante disponer de varias
fuentes de datos aleatorios que sean lo ms independientes entre ellas. El valor de k puede adems
constituir la clave secreta de un algoritmo criptogrfico y el nmero de claves posibles diferentes
depender pues, del nmero de dgitos que el ordenador o sistema generador sea capaz de manejar.
Tambin es necesario estudiar el comportamiento estadstico de las secuencias producidas por
este generador, que es muy bueno si se emplean semillas ms cercanas a -2 que a -1,9999, y que se refleja
en el resultado positivo que dan las secuencias obtenidas al ser sometidas a los diversos tests estadsticos.
Una medida de inters que se puede realizar sobre las secuencias pseudoaleatorias es su
complejidad lineal. Si bien esta caracterstica se estudiar en profundidad en el captulo 6, podemos
avanzar que su comportamiento ser un indicativo de la impredictibilidad de la secuencia. Para una
secuencia verdaderamente aleatoria, dicha complejidad debe crecer (aunque irregularmente) siguiendo una
lnea de pendiente n/2, donde n es el nmero de bits que se van procesando.
La grfica 2.3 muestra el buen comportamiento respecto al crecimiento de la complejidad lineal
de una secuencia de 50.000 bits obtenida a partir de este generador empleando la semilla k =
-1,999999999999.
Otra medida interesante de la aleatoriedad de las secuencias es la que proporciona el test espectral
que se ver en el captulo 5, y se basa en calcular la transformada discreta de Fourier (DFT) de la
secuencia sometida a estudio. Para secuencias verdaderamente aleatorias, el resultado obtenido fruto de
aplicar este test no debe tener otro pico que no sea el del origen. Las grficas 2.4 y 2.5 muestran los
resultados de aplicar este test sobre dos secuencias de 4.000 bits obtenidas con las semillas k = -1,9 y k =
-1,9999123456 respectivamente. Una vez ms, se puede observar la evolucin positiva a medida que la
semilla se aproxima a -2.
Podemos concluir del estudio de este generador que si se usa una semilla k tal que -2 < k <
-1,9999, se obtienen excelentes resultados de la secuencia de salida que, adems, no es peridica. Sin
embargo, de cara a aplicaciones prcticas presenta el problema de un reducido espacio de semillas.
2.1.9
Generador 1/p
49
es expandir la semilla x0/p a la base b, es decir, la secuencia de cocientes b-arios resultante de dividir x0
por p en base b.
El generador congruencial, a diferencia del aqu presentado, produca una secuencia b-aria de
residuos resultantes de dividir x0 por p en base b. Veamos cmo produce las secuencias pseudoaleatorias
este generador. Los parmetros de entrada sern la base b >1, un entero p tal que mcd(p,b) = 1 y un
nmero entero elegido al azar x 0 Z p . El algoritmo es el siguiente:
FOR i = 0, 1, 2...
DO
div
mod
END FOR
El periodo T de la secuencia producida por este generador puede valer como mximo T = p-1
cuando p es primo y b es una raz primitiva mdulo p. Las secuencias producidas por este generador sern
secuencias de De Bruijn generalizadas de periodo p -1.
Estas secuencias, que se estudiarn al final del siguiente captulo, tienen la propiedad de que cada
subsecuencia b-aria de p 1 dgitos aparece por lo menos una vez, y cada subsecuencia b-aria de p
dgitos aparecer como mucho una vez en un periodo de la secuencia ( p denota la longitud de la
expansin b-aria de p). Por lo tanto, las secuencias producidas por este generador tienen un gran parecido
con las de mxima longitud producidas por los LFSR (m-secuencias), por lo que habr que tener cuidado
en no utilizarlas en aplicaciones como las de cifrado debido a que, si bien presentan un buen
comportamiento estadstico, son bastante predictibles.
2.1.10
El empleo de funciones que combinen diversas secuencias pseudoaleatorias es una prctica muy
comn para disear generadores cuyas secuencias de salida presenten mejores propiedades, tal como se
ver en el siguiente captulo. Sin embargo, puesto que la suma de enteros es una operacin bsica de un
ordenador, vamos a ver un generador que se basa en emplearla como funcin combinadora de otras dos
secuencias pseudoaleatorias. Podemos suponer que las secuencias de entrada a esta funcin combinadora
son las expansiones binarias de secuencias de reales pseudoaleatorias obtenidas mediante cualquiera de los
mtodos anteriores, o bien secuencias pseudoaleatorias obtenidas directamente en forma binaria mediante
cualquiera de los mtodos que se describen en el captulo 4. Definimos la funcin suma de enteros f: ZN
Z como:
z=
xi
i= 1
50
Esta funcin se puede calcular en forma de una serie de bits comenzando desde el bit menos
significativo. Veamos un generador basado en esta funcin. Para ello, consideremos que las entradas de
esta funcin combinadora son las secuencias producidas por N registros de despazamiento con
realimentacin lineal con Lj nmero de celdas respectivamente. El algoritmo de generacin ser:
FOR i = 1, 2,.... DO
Paso 1 Dar un paso a cada LFSR para producir N bits x 1i , x 2i ,..., x Ni
Paso 2 Calcular la suma de los N bits anteriores como si fueran
enteros:
Si =
x ki + Ci 1
k=1
En este algoritmo, Ci representa el bit de acarreo de la suma y b la parte entera del nmero
real b. La suma de N secuencias peridicas ser peridica con periodo P:
P=
Pi
i= 1
si los periodos Pi de las secuencias individuales que se suman son mutuamente primos entre s dos a dos.
Adems, si se suman dos m-secuencias binarias obtenidas a partir de dos registros de desplazamiento con
realimentacin lineal con L 1 y L 2 celdas respectivamente que son mutuamente primos entre s, la
complejidad lineal de la secuencia obtenida ser muy prxima a su periodo y estar acotada superiormente
por:
( z ) ( 2 L1 1) ( 2 L2 1)
En cuanto a la distribucin estadstica, si las secuencias de entrada son independientes y estn
uniformemente distribudas, la secuencia de salida tambin constar de variables aleatorias independientes
y uniformemente distribudas.
Adems, la suma de enteros da inmunidad a la correlacin de orden (N-1), que es la mxima que
se puede obtener, y que implica que la salida estar incorrelada con N-1 de las secuencias que sirven como
entrada. Esta propiedad se ver ms a fondo en el siguiente captulo.
Este generador es interesante para aplicaciones como el cifrado en flujo debido a que la suma de
enteros presenta una elevada no linealidad, adems de dar una elevada inmunidad a la correlacin. En este
tipo de aplicacin, la clave (que es como se denomina a la semilla en aplicaciones criptogrficas) puede
estar constituda por los contenidos iniciales de las celdas de los N LFSR y el bit de acarreo.
51
Si bien se presenta este generador para ser implementado usando un ordenador, en el captulo 4
se mostrar tambin una versin para ser implementada utilizando elementos hardware.
2.1.11
El generador de mochila
FOR i = 1, 2,... DO
Paso 1 Dar un desplazamiento al LFSR para obtener el siguiente estado.
L
mod Q
La secuencia obtenida mediante la suma de la mochilla ser peridica de periodo 2 L-1. Esto
implica que la j-sima secuencia de bits {Sj} ser tambin peridica de periodo 2L-1. Adems, si Q = 2N,
la complejidad lineal de esta secuencia estar acotada mediante las siguientes expresiones:
( )
Sj
2.1.12
2 j L
k = 1 k
=
L L
L
= 2 1
k
k
=
1
j < log L
j log L
El generador de Blum-Micali
Este generador, definido por M. Blum y S. Micali [BLU82] se basa en el problema de calcular el
logaritmo discreto. Sea p un nmero primo y sea un elemento generador para el anillo de unidades
52
1 si x <
mitad p ( x ) =
2
0 en otro caso
Las entradas para este generador sern los parmetros ( p, ) y una semilla xi Z *p elegida al
azar, y el algoritmo de generacin ser:
FOR i = 1,...., l DO
Paso 1 zi = mitad p ( xi )
Paso 2 xi + 1 x i mod
END FOR
La salida de este generador sern los nmeros z1, z2,... Las secuencias generadas de este modo
parecen especialmente interesantes para aplicaciones criptogrficas, ya que estn basadas en la dificultad de
calcular logaritmos discretos mdulo p con lo que garantizarn la seguridad. En esta aplicacin, la clave
consistir en la semilla x1.
53
Veamos a continuacin un mtodo de gran utilidad para realizar esta transformacin entre una
distribucin uniforme y otra cualquiera.
2.2.1
Esta tcnica permite transformar una secuencia obtenida por cualquier mtodo y que sigue la
distribucin uniforme, en otra que siga otro tipo de distribucin. Si pretendemos generar un nmero
aleatorio que cumpla con una determinada funcin acumulada de probabilidad F(x) podemos proceder de la
siguiente forma (representada adems en la figura 2.1):
Paso 1
Generar un nmero d que siga la distribucin uniforme, empleando para ello cualquiera de las
tcnicas vistas al principio de este captulo (mtodo del medio del cuadrado, congruencial, etc).
Paso 2
Es decir, para generar una secuencia de nmeros aleatorios que cumplan una determinada funcin
de probabilidad acumulada F(x), generamos una secuencia de nmeros aleatorios que sigan la distribucin
uniforme con cualquiera de los mtodos ya conocidos, y los hacemos pasar a travs de la funcin F-1(x),
obteneniendo as otra secuencia con distribucin F(x). Este mtodo es muy til cuando disponemos de la
funcin de distribucin acumulada en forma tabulada. En este caso, la funcin inversa se obtiene muy
fcilmente invirtiendo la abcisa y la ordenada de cada uno de los puntos de la distribucin tabulada.
F(x)
1
d
x0
Fig. 2.1 Funcin acumulada de probabilidad
54
EjJEMPLO 2.8: Supongamos que disponemos de la distribucin tabulada en la tabla 2.1 y queremos
obtener otro nmero que cumpla esta distribucin. Para ello, y mediante cualquiera de los mtodos vistos
en este captulo, generamos un nmero que siga la distribucin uniforme. Si el nmero obtenido con
distribucin uniforme es, por ejemplo, 0,25, el correspondiente nmero de la distribucin F(x) se
obtendra interpolando entre los valores 1,0 y 1,5 de F(x), y obtendramos de esta forma el nmero
1,0833.
Tabla 2.1
x
F(x)
2.2.2
0,0
0,0
0,5
0,1
1,0
0,2
1,5
0,5
2,0
0,7
2,5
0,9
3,0
1,0
F ( x ) = ( x a )( b a )
1
x<a
axb
x>b
Para generar una secuencia de nmeros aleatorios que sigan esta distribucin, partiendo de otra
secuencia obtenida por otros mtodos que cumpla con la distribucin uniforme estndar, basta con escalar
los nmeros de dicha secuencia, de forma que si d es un nmero de dicha distribucin uniforme estndar, x
= a+(b-a)d ser un nmero aleatorio que siga la distribucin uniforme no estndar en el rango a...b.
2.2.3
Existen diversos mtodos para obtener secuencias de nmeros pseudoaleatorios con distribucin
normal a partir de otras con distribucin uniforme estndar. Uno de ellos consiste en utilizar la
transformacin inversa descrita antes. Sin embargo, no existe una forma cerrada de representar la funcin
de distribucin acumulada normal, por lo que no es posible deteminar F-1(x), y ello obliga a utilizar una
representacin de dicha distribucin normal tabulada que incluya tantos ms puntos cuanto mayor sea el
grado de detalle que se desee obtener. La tabla 2.2 muestra una tabulacin de dicha distribucin.
EJEMPLO 2.9: Supongamos que hemos generado mediante el mtodo congruencial lineal los nmeros
aleatorios con distribucin uniforme estndar 0,2163, 0,3241, 0,1021 y 0,7621, y queremos obtener, a
partir de ellos, una secuencia de nmeros que sigan una distribucin normal de media (m) 3 y desviacin
tpica ( ) 4. Empleando la tabla 2.2, los nmeros de la distribucin normal correspondientes a los
obtenidos son (interpolando) -0,8077, -0,4594, -1,3070 y 0,7357.
55
Paso 1
Generar una secuencia de nmeros pseudoaleatorios {X} con distribucin uniforme estndar
empleando algn mtodo como el medio del cuadrado, mtodos congruenciales, etc.
Paso 2
Paso 3
Sumar todos los nmeros pertenecientes a cada grupo y obtener la secuencia {Y}, en la que los
elementos son las sumas obtenidas. Observar que la secuencia {Y} tendr distribucin normal
de media n (1/2) y varianza n (1/12).
Paso 4
Transformar la secuencia {Y} en otra {Z} que tenga distribucin normal con media 0 y varianza
1 aplicando a cada nmero de la secuencia la expresin Zi = Yi - n(1/2).
Paso 5
EJEMPLO 2.10: Supongamos que obtenemos la secuencia de nmeros 0,1062, 0,1124, 0,7642, 0,4314,
0,6241, 0,9443, 0,8121, 0,2419, 0,3124, 0,5412, 0,6212 y 0,0021, que presenta una distribucin
normal estndar, mediante algn mtodo conocido y queremos, a partir de ella, generar un nmero que
siga la distribucin normal de m = 25 y 2 = 9.
Puesto que disponemos de n = 12 nmeros, se realiza una suma sobre ellos con lo que se obtiene
el nmero Y = 5,5135, que pertenecer a una distribucin normal de media 12(1/2) = 6 y varianza
12(1/12) = 1. Se efecta la operacin Z = Y-6 = -0,4865, con lo que se obtiene un nmero de la
distribucin normal de media 0 y varianza 1.
Finalmente, aplicando a este nmero la expresin S = m+ Z con los valores de m = 25 y =
9, se obtiene el nmero 23,5405, que ya pertenece a la distribucin normal de media 25 y varianza 9 que
desebamos.
56
2.2.4
x
-3
-2.5
-2.0
-1.5
-1.0
-0.5
-0.0
0.5
1.0
1.5
2.0
2.5
F(x)
0,00135
0,00621
0,02275
0,06681
0,15866
0,30854
0,50000
0,69146
0,84134
0,93319
0,97725
0,99379
3.0
0,99865
Paso 1
Paso 2
Agrupar los nmeros de la secuencia {X} en grupos de n bits, teniendo en cuenta que cada
grupo producir un nmero de una secuencia {Y} distribuda binomialmente con probabilidad
p.
Paso 3
Obtener cada nmero de la secuencia {Y} contando, dentro de cada grupo generado a partir de la
secuencia {X}, cuntos nmeros son menores que p.
57
Este procedimiento ser vlido cuando el valor de n que se elija para realizar los grupos que
simulan cada experimento sea pequeo (por ejemplo <10). Sin embargo, si se quieren obtener mejores
aproximaciones se debern elegir valores de n ms grandes. Entonces, es ms conveniente emplear la
aproximacin normal que la distribucin binomial que, en vez de generar nmeros distribudos
binomialmente, lo que hace es generar nmeros que sigan una distribucin nomal con media np y
varianza np(1-p), empleando para ello el algoritmo del apartado anterior.
EJEMPLO 2.11: Supongamos que se ha generado la secuencia de nmeros 0,02011, 0,85393, 0,97265,
0,61680, 0,16656, 0,42751 y 0,69994, distribudos uniformemente a partir del mtodo congruencial
lineal. Si queremos obtener a partir de ellos un nmero que siga una distribucin binomial con p = 3 a
partir de estos n = 7 nmeros, basta con mirar cuntos de ellos son menores que p = 0,3. Puesto que slo
2 lo son, ste ser el nuevo nmero obtenido (Y = 2).
2.2.5
Paso 1 Generar una secuencia {Z} de nmeros pseudoaleatorios con distribucin uniforme mediante
algn metodo conocido (por ejemplo algn mtodo congruencial).
Paso 2 Obtener la secuencia de nmeros pseudoaleatorios {X} con distribucin exponencial de parmetro
aplicando a los nmeros de la secuencia {Z} la transformacin:
xi =
1
1n( zi )
Este algoritmo es muy fcil de programar, pero tiene el inconveniente de que consume mucho
tiempo de ejecucin, debido a que debe calcular el logaritmo natural. Si esto se convirtiera en un
problema, se puede recurrir a la utilizcin de una distribucin exponencial en forma tabulada, y emplear
entonces el mtodo de la transformacin inversa descrito en el apartado 2.2.1.
EJEMPLO 2.12: Si tenemos el nmero z = 0,02104 obtenido a partir del mtodo congruencial lineal y,
por tanto, perteneciente a una distribucin uniforme, a partir de l podemos obtener un nmero z que
pertenezca a una distribucin exponencial con parmetro = 1, haciendo x = -ln(0,02104) = 3,8613.
58
2.2.6
Paso 1
Generar una secuencia {X} de nmeros pseudoaleatorios que sigan una distribucin uniforme
estndar mediante algn mtodo conocido (por ejemplo cualquier mtodo congruencial).
Paso 2
Agrupar los nmeros de la secuencia {X} en grupos de M nmeros (R1, R2,.., RM).
Paso 3
Ri < e
i= 1
Paso 4
Generar un nmero de la secuencia {Y} que tenga una distribucin de Poisson con media ,
asignando Yi = N-1, donde N se obtuvo en el paso anterior.
Paso 5
Seleccionar el siguiente grupo de M bits de la secuencia {X} y volver al Paso 3 para obtener el
siguiente nmero de la secuencia {Y}.
EJEMPLO 2.13: Mediante el mtodo congruencial lineal se ha generado la secuencia 0,91646, 0,89198,
0,64809, 0,16376, 0,91782, 0,45624 y 0,31641, que presenta una distribucin uniforme. A partir de
estos nmeros queremos obtener otro que siga una distribucin de Poisson con = 2,5. Puesto que e-2,5=
0,08208, se multiplicarn los diferentes nmeros mientras el resultado sea menor que 0,08208:
(N
(N
(N
(N
= 2)
= 3)
= 4)
= 5)
Puesto que la condicin se cumple para N = 5, podemos generar un nmero Y que pertenezca a
una distribucin de Poisson de media 2,5 haciendo Y = N-1 = 4.
2.3 Problemas
PROBLEMA 2.1 Sea un generador de secuencias pseudoaleatorias lineal mixto de la forma x n+1 =
(axn+b) mod m, n 0.a) Obtener los 10 primeros nmeros aleatorios que producir el generador en el
59
caso que a = 2, b = 3, m = 10 y la semilla x0 = 0. b) Realizar lo mismo que en el caso a) pero con los
valores a = 2, b = 0, m = 10 y x0 = 1 (notar que se trata de un generador congruencial multiplicativo).
PROBLEMA 2.2 .Cul es la longitud del periodo de una secuencia obtenida mediante un generador de
congruencias lineales si a = 3141592621, b = 2718281829, m = 10000000000 y x0 = 5772156648?
PROBLEMA 2.3 Son las siguientes condiciones suficientes para garantizar un periodo de longitud
mxima en un generador congruencial mixto cuando m = 2e es una potencia de 2?: (1) b es impar. (2) a
mod 4 = 1.
PROBLEMA 2.4 En la prctica, la generacin de nmeros pseudoaleatorios mediante algoritmos
congruenciales lineales mixtos se realiza usando la expresin xn+1 = (axn+b) mod m, donde las x son
enteros, y luego se normalizan al intervalo de reales entre 0 y 1 mediante la divisin un = xn/m. Discutir
la generacin de estos nmeros reales normalizados al intervalo [0,1) si sta se realiza directamente
mediante la recursin un+1 = (aun+b/m) mod 1 usando la aritmtica en coma flotante del ordenador.
PROBLEMA 2.5 Discutir la mejora en la velocidad de generacin de los nmeros pseudoaleatorios
utilizando el algoritmo de MacLaren-Marsaglia si las secuencias {Xn} e {Yn} son la misma.
PROBLEMA 2.6 Obtener una secuencia de 15 nmeros pseudoaleatorios empleando el mtodo del medio
del cuadrado si la semilla es x0 = 0,3245.
PROBLEMA 2.7 Generar una secuencia de 10 dgitos pseudoaleatorios empleando el mtodo
congruencial lineal con semilla x0 = 21, a = 4, c = 1 y m = 100.
PROBLEMA 2.8 Emplear el mtodo de la transformacin inversa para obtener una secuencia de nmeros
pseudoaleatorios que cumplan con la funcin de densidad de probabilidad acumulada:
1/ 4 0 x < 1
F( x ) =
3 / 4 1 x 2
PROBLEMA 2.9 A partir de una secuencia de nmeros pseudoaleatorios con distribucin uniforme
obtenidos por cualquier mtodo: (a) generar un nmero pseudoaleatorio con distribucin normal de media
15 y varianza 5; (b) generar un nmero pseudoaleatorio con distribucin binomial con n = 8 y p =
0,28;(c) generar un nmero pseudoaleatorio con distribucin exponencial con = 2,3; (d) generar un
nmero pseudoaleatorio con distribucin de Poisson con media = 6.
2.4 Bibliografa
[AKLME]
AKL, S. G.; MEIJER, H. A Fast Pseudo Random Permutation Generator with Applications to
Cryptology. Dept. of Comput. and Inform. Science. Queens University. Kingston, Ontario,
Canada
60
[COV60]
[FEL68]
[FISHM]
[FOR91]
[GOR61]
[GOR71]
[HEN76]
[HUL62]
[HUT66]
[KNO70]
[KNU67]
[KNU81]
[LEC88]
[LEH51]
[LEW69]
[MAC65]
[MAR68]
[PAY69]
[PRA88]
[ROM90]
[SCH79]
[WIC82]
61
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su distribucin y
venta fuera del mbito de la Unin Europea.
62
se carga con el valor obtenido del resultado de la operacin EX-OR de realimentacin, con lo que queda
el sistema con un camino cerrado por esta realimentacin, tal como se ve en la figura 3.1.
La justificacin para el uso de este tipo de dispositivos est en que son modelables por una
mquina de estados finitos con un nmero limitado de estados y de entradas, de forma que, dados un
estado y entrada determinados, el nuevo estado de la mquina quedar completamente determinado. A
partir de esto, es posible construir una tabla con todos los estados posibles o bien un diagrama de estados
que muestre, para cada estado posible, a qu nuevo estado se pasar cuando llegue cada una de las
posibles entradas.
Los parmetros que caracterizarn un determinado LFSR sern su longitud (o nmero de celdas
de memoria) y las celdas que intervendrn en la funcin lineal de realimentacin .
Veamos la teora que nos permite describir este tipo de dispositivos. Se considera un LFSR de L
etapas (L se denomina tambin el orden del LFSR), y se llama ai a los coeficientes de realimentacin,
ai {0,1} (1 si ha conexin y 0 si no la hay), y sea ri el contenido de las celdas de memoria del registro
de desplazamiento ri {0,1}, tal como muestra la figura 3.1, ri ( t) es el contenido de la celda ri despus
del
pulso
Se
puede
representar
la
funcin
de
realimentacin
como
t-simo.
(
)
(
)
(
)
f t = a0 r0 t a1r1 t ...a L1 r L1 . Si se asume que a0 = 1 , el nuevo bit de salida del LFSR
r L 1 (t + 1) depender siempre de r0 (t ). Con ai = 1 se denota una conexin cerrada y con ai = 0 se
denota una conexin abierta.
Un registro de desplazamiento de L celdas produce una secuencia de vectores del espacio
(r0 (t ), r1 (t ),. .., rL 1 (t)) (con t = 0, 1, 2,...), y cumplir las siguientes relaciones:
1) ri (t + 1) = ri +1 (t )
2) r L 1 (t + 1) =
i = 0,1, ..., L 2
L 1
airi (t )
i=0
t = 0, 1, 2, ...
t = 0,1, 2....
3) z(t ) = r0 (t)
4) z(t ) tiene periodo 2 L 1 .
donde z(t) es la secuencia de salida. Se pueden identificar las conexiones de realimentacin con los
coeficientes de un polinomio f(x) en el cual, si existe un trmino determinado, consideramos que la celda
asociada a l contribuye a la obtencin de la realimentacin. A este polinomio se le suele denominar
polinomio caracterstico. El registro de desplazamiento se puede caracterizar mediante este polinomio,
2
1
que se expresa como f (x ) = a0 + a1 x + a2 x +. ..+ aL 1 x L + x L , con a0 = 1 . El hecho de que a0 = 1
garantizar que se aproveche toda la longitud del LFSR a la hora de hacer la realimentacin, mientras que
L
el trmino x se corresponde con la conexin de realimentacin. Por tanto, rL-1(t+1) siempre depender de
r0(t).
El conjunto de todas las secuencias finitas binarias generadas mediante el polinomio f(x) se llama
espacio de soluciones y se denota por (f), que es un espacio n-dimensional sobre los campos de Galois
GF(2) en el que se definen las operaciones multiplicacin ( ) y suma mdulo 2 ( ).
Una cuestin importante que se debe tener en cuenta es que la salida del registro de
desplazamiento es peridica, lo que quiere decir que cada celda de memoria repetir su contenido cada
cierto tiempo. Este hecho nos aparta del caso ideal de no periodicidad para las secuencias verdaderamente
63
aleatorias que vimos en el captulo 1, ya que se limita el nmero de estados diferentes del LFSR y que
depender, adems, de cul sea su nmero de celdas (su orden), de su estado inicial y de las conexiones
del polinomio de realimentacin.
....
a L-1
a L-2
a1
rL-1(t) rL-2(t)
................
a0
r 1 (t) r 0 (t)
z(t)
Para un registro de desplazamiento con realimentacin lineal, si f(x) tiene grado L y es primitivo,
L
el periodo de cualquier secuencia no nula ser P = 2 -1, es decir, tendr la mxima longitud. Un
polinomio primitivo de grado L ser un polinomio irreducible sobre el cuerpo finito GF(2) que, cuando se
utilice para producir la realimentacin de un registro de desplazamiento de L celdas, haga que la salida de
L
ste tenga periodo mximo 2 -1.
L
Esto implica que el registro de desplazamiento recorrer 2 -1 estados no nulos antes de repetirse.
L
L
El hecho de que sean 2 -1 estados y no 2 se debe a que el estado inicial todo ceros debe evitarse siempre,
ya que llevara al LFSR a generar continuadamente la secuencia cero.
A las secuencias obtenidas por LFSR con polinomio de realimentacin primitivo se las llama msecuencias o tambin secuencias G-aleatorias, debido a que cumplen a la perfeccin los tres postulados de
Golomb. En la eleccin del polinomio caracterstico, adems de ser primitivo para tener mximo periodo,
deberemos intentar que tenga el mnimo nmero posible de conexiones para que el dispositivo obtenido
sea lo ms rpido y econmico posible.
Tal como se ha visto antes, las operaciones que se pueden realizar con los polinomios que se
emplean para representar las funciones de realimentacin de los LFSR se definen sobre campos de Galois
[BEN76]. A continuacin se describirn este tipo de estructuras.
64
nuestro caso, nos centraremos en los campos de orden 2, es decir, GF(2). Esto implica trabajar en el caso
binario, donde los nicos elementos que consideramos son el 1 y el 0. De esta forma, la suma anterior se
consigue fcilmente mediante una puerta electrnica XOR (OR-Exclusiva). El producto y el inverso son
ms difciles de conseguir en GF(q), aunque si nos restringimos al caso de campos GF(2), que slo
trabajan con dos elementos, el producto se podr realizar empleando una puerta AND, y el inverso con
una puerta inversora. Este tipo de estructuras simples permitirn trabajar con ms comodidad a la hora de
tratar matemticamente los dispositivos que se usan para generar secuencias pseudoaleatorias. Veamos la
teora bsica de los cuerpos finitos.
Si q es un nmero primo, definimos F al conjunto F={0, 1,..., q -1} de enteros menores que l.
Se puede definir el sistema algebraico <F, , > en el cual se definen, sobre dos elementos a y b de F
(a,b F) las siguientes operaciones:
a b = Rq (a + b)
a b = Rq (ab)
donde Rq(z) es el resto de la divisin del entero z por el primo q. Se denota entonces por GF(q) al campo
de Galois de orden q (campo finito con q elementos) [LEM71].
El caso ms importante para nosotros ser el campo GF(2), en el cual el conjunto F se reduce a
dos elementos, cero y uno. En este campo, las reglas de suma y multiplicacin se basan en la aritmrica
mdulo 2. Por tanto, en GF(2), cero y uno sern los dgitos binarios.
En el caso general GF(q), un polinomio con variable x se puede expresar como: A(x) = a0 + a1x +
n
... + anx , donde n es un entero no negativo, y los coeficientes ai para 0 i n sern elementos de GF(q),
an ser el coeficiente de mayor grado, y a0 ser el coeficiente constante.
El polinomio cuyos coeficientes son todo ceros es el polinomio nulo y su grado ser por
convenio. Adems, los polinomios de grados menores o iguales que cero se llaman polinomios constantes.
Tambin sobre los polinomios sobre GF(q) se pueden definir las operaciones suma y producto. Si A(x) y
B(x) son dos polinomios de grados n y m respectivamente (con n m) sobre GF(q), se define la suma
polinmica como:
A(x ) + B(x ) =
(ai bi ) x i
i=0
que consiste en la suma, mdulo 2, de los coeficientes del mismo orden de cada uno de los polinomios,
siendo ai y bi los coeficientes de los polinomios A(x) y B(x) respectivamente.
Anlogamente, se puede definir la multiplicacin como:
A(x )B(x ) =
n+ m
ck x k
k= 0
si
ck =
ai b j
i+j=k
0 i n
0 j m
Entonces, el conjunto de todos los polinomios de grado finito sobre GF(q) con las operaciones
suma y multiplicacin polinmicas forma un anillo polinmico sobre GF(q)(x) [DAIZD].
65
As pues, una vez comprobado que un polinomio de grado L sobre GF(2) es irreducible,
deberemos comprobar adems que la secuencia de salida del LFSR es de longitud mxima para garantizar
que el polinomio es primitivo [SUR78]. En la prctica se recurre directamente a polinomios primitivos
que se pueden encontrar en tablas.
Es de gran inters determinar el nmero de polinomios de realimentacin primitivos de los que
se puede disponer para cada orden L. Para ello, se puede usar la funcin de Euler que establece para un
entero positivo z, cuntos enteros positivos menores que l (z) son mutuamente primos con z. Por tanto,
la funcin de Euler (L ) nos permitir conocer el nmero (L) de polinomios de realimentacin
primitivos que podremos encontrar para un cierto orden L (es decir, para un LFSR de L celdas, de forma
L
que ste pueda producir secuencias de salida de periodo mximo 2 -1):
( L) = 2 L 1 / L
L
66
N de celdas (L)
3
4
5
6
7
8
9
10
11
N Polinomios primitivos
2
2
6
6
18
16
48
60
176
(L)
1)
2)
3)
En cada periodo hay 2 copias de cada estructura de k bits, excepto para la de k ceros, de la cual
L-k
hay 2 -1 copias, con k L.
L-1
unos y 2
L-1
-1 ceros.
L-k
Estas propiedades, junto con su facilidad de obtencin hacen que los LFSR sean muy interesantes
para obtener secuencias pseudoaleatorias. Para ver si una secuencia es semejante a la que obtendramos al
lanzar monedas al aire debemos comprobar si cada bit de nuestra secuencia tiene informacin dependiente
de otros bits de la secuencia. Una medida interesante de este tipo de dependencia es la que nos da la
L
funcin de autocorrelacin de la secuencia. En el caso de m-secuencias de periodo P = 2 -1, la
autocorrelacin fuera de fase es constante y de valor -1/P, tal como estableca el tercer postulado de
Golomb. Por tanto, las m-secuencias satisfacen bastante bien las propiedades de aleatoriedad, pero
siempre hasta cierto grado debido a su longitud finita, por lo que la autocorrelacin (y por tanto la
dependencia entre bits) no llega a ser cero.
67
aplicaciones como la criptografa, y habr que buscar tcnicas que permitan disminurla. Una medida que
permitir determinar el grado de impredictibilidad de las secuencias pseudoaleatorias es la llamada
complejidad (o equivalente) lineal [GOL89], que se estudiar ms profundamente en el captulo 6.
Para que la secuencia producida por un LFSR sea impredictible, deber presentar una complejidad lineal
elevada, aunque esto ser tan slo una condicin necesaria y no suficiente. Adems, ser necesario que,
independientemente del bit precedente, el bit siguiente de la secuencia aparezca con una distribucin
uniforme. Una razn ms para usar la complejidad lineal como parmetro de medida de la
impredictibilidad de la secuencia es que el periodo de la secuencia de salida del LFSR sea al menos tan
grande como la complejidad lineal, por lo que una gran complejidad lineal implicar siempre un periodo
grande. Las secuencias pseudoaleatorias muestran un aumento de la complejidad lineal al aumentar el
nmero de dgitos de la secuencia. Esto no ocurre siempre a la inversa, pues una secuencia peridica no
implica necesariamente gran complejidad lineal.
Las secuencias de mxima longitud o m-secuencias obtenidas a partir de LFSRs con polinomio
de realimentacin primitivo presentan excelentes propiedades respecto a la distribucin estadstica, pero
tienen una complejidad lineal mnima respecto a la longitud del periodo que vale:
=L
donde L es el nmero de celdas del LFSR. Esto implica que, conociendo tan slo 2L bits de la secuencia
de salida, empleando el algoritmo de sntesis de Massey-Berlekamp [MAS69] se pueden obtener el estado
inicial y las conexiones de realimentacin del LFSR que la gener, y puede obtenerse el resto del periodo
de la secuencia.
Para secuencias aleatorias, podemos esperar adems que el crecimiento de dicha complejidad
siga un perfil irregular, pero siguiendo la lnea de n/2, donde n es el nmero de bits de la secuencia. Por
tanto, si la secuencia es peridica, para tener una buena impredictibilidad, la complejidad debe crecer
segn esta lnea y alcanzar el valor del periodo una vez se hayan procesado 2 periodos de la secuencia
utilizando el algoritmo anterior.
Est claro que cuanto mayor es el periodo, o cuanto mayor es la complejidad lineal de la
secuencia, mayor ser su impredictibilidad. Sin embargo con los LFSR siempre se estar limitado en
cuanto a la complejidad ( L ). Si se desean obtener secuencias con mayor impredictibilidad para
aplicaciones como la criptografa deberemos recurrir a tcnicas no lineales que, aplicadas sobre las salidas
de los LFSR produzcan mayores complejidades ( > L ).
La complejidad o equivalente lineal seguir siendo una medida muy interesante de
impredictibilidad para las secuencias obtenidas de forma no lineal. En este caso, dicho equivalente ser
simplemente el LFSR de menor orden capaz de generar dicha secuencia obtenida mediante tcnicas no
lineales.
Tal como se ver en el captulo 7, en aplicaciones criptogrficas como el cifrado en flujo, el
hecho de que las secuencias pseudoaleatorias utilizadas presenten elevada complejidad ser un requisito
imprescindible, hasta el punto que si no se alcanzan valores elevados se estropear completamente la
efectividad del sistema, y se convertir en muy vulnerable. En este caso sera muy fcil para posibles
atacantes violar su seguridad. La importancia de esta propiedad en este tipo de sistemas ha impulsado la
aparicin de gran nmero de tcnicas no lineales que, aplicadas sobre los LFSR, aumentan la complejidad
de las secuencias de salida. De forma genrica, las tres tcnicas ms importantes son la aplicacin de
funciones no lineales sobre las celdas de los LFSRs, la combinacin no lineal de las salidas de varios
68
LFSRs y la aplicacin de un control no lineal en los relojes que atacan a los LFSRs. Todas estas tcnicas
se van a ver a continuacin, mientras que en el captulo siguiente se vern muchos generadores de
secuencias pseudoaleatorias basados en ellas. La dificultad en la aplicacin de todas estas tcnicas no
lineales radica en conseguir aumentar la complejidad de las secuencias de salida de los LFSR aumentando
as su impredictibilidad, pero sin estropear sus buenas propiedades estadsticas. Esto har del diseo de
estos generadores una tarea delicada.
Polinomio de realimentacin
Parte conductora
........
Secuencia
de salida
z(t)
Para estudiar los generadores de secuencias pseudoaleatorias del tipo no lineal, es conveniente
subdividirlos en una parte conductora y en una parte combinadora de las diferentes celdas del registro de
desplazamiento, tal como muestra la figura 3.2. La parte conductora se encarga de gobernar la secuencia
de estados del generador y es la responsable de conseguir el periodo mximo de la secuencia. La parte
combinadora de las diferentes fases del registro de desplazamiento tiene como funcin principal la tarea
de incrementar la complejidad lineal de la secuencia de salida, pero sin modificar las buenas propiedades
de distribucin estadstica de ceros y unos obtenidas mediante el uso de conexiones de realimentacin por
polinomios primitivos de la parte conductora.
La nica memoria del sistema est includa por las celdas del registro de desplazamiento, puesto
que tanto el polinomio primitivo de realimentacin, como la funcin de estado no lineal, se aplican sobre
dichas celdas (a las que se suelen llamar fases debido a la propiedad de desplazamiento del LFSR), y
actan de manera directa en funcin del estado interno que tenga el sistema en cada momento, tal como se
ve en la figura 3.2. Por tanto, las funciones de estado no lineal deben utilizar, tal como indica su nombre,
una transformacin no lineal sobre las celdas de los LFSR que debe cumplir las siguientes condiciones:
69
1)
Debe transferir las propiedades estadsticas de las secuencias peridicas obtenidas de la parte
conductora en el sentido de que, si las secuencias de entrada son k-distribudas (tal como se defini
en el captulo 1), las secuencias de salida tambin deben serlo.
2)
El periodo de la secuencia de salida obtenido mediante la parte conductora (LFSR con polinomio
de conexin primitivo) no debe ser alterado por la funcin no lineal.
3)
4)
Deben ser rpidas en su funcionamiento para ser aplicables a sistemas en tiempo real y fciles de
implementar.
5)
Su realizacin debe ser lo ms econmica posible, ya que en muchas aplicaciones ste es uno de
los factores determinantes de todo el sistema.
Dicho proceso se podra extender hasta que todos los elementos no cero de GF(2 ) estuvieran
presentes, momento en el cual no podra elevarse ms el equivalente lineal. Las operaciones no lineales
ms simples en GF(2) sern el producto de dos dgitos binarios ( f (x1 , x 2 ) = x1 x 2 , donde representa la
funcin AND) y la suma de dos dgitos binarios ( f (x1 , x 2 ) = x1 x2 , donde representa la suma XOR).
70
La funcin no lineal se puede expresar en una forma cannica llamada la Forma Algebraica
Normal (ANF) , que refleja directamente la no linealidad en forma de sumas de productos, es decir,
expresa cualquier funcin no lineal en funcin de las dos operaciones bsicas disponibles en GF(2): y
. Veamos con un ejemplo cmo poner las funciones no lineales en forma de sumas de productos (notar
que con suma nos referimos a la suma mdulo 2, es decir, la operacin OR-exclusiva).
EJEMPLO 3.1: Dado el siguiente generador de secuencias pseudoaleatorias, poner la funcin no lineal en
la forma algebraica normal (ANF).
ra
rb
rc
Salida
AND
OR
Fig. 3.3
Puesto que en los campos de Galois GF(2), slo estn definidas las operaciones producto y suma
binaria mdulo 2 ( ), hemos de poner la operacin suma OR (+) en funcin de estas operaciones. Puesto
que x+y = xy x y, la funcin no lineal queda como: ra rb rc ra rb rc, que se puede poner como:
ra
rb
rc
Salida
Fig. 3.4
71
El orden de la funcin no lineal f por s solo no nos va a poder garantizar el valor mximo de la
complejidad lineal de la secuencia producida. Sin embargo, lo que s podemos saber con certeza es que el
producto de orden L de todas las celdas del LFSR producir una secuencia con complejidad lineal
mxima e igual al periodo. Sin embargo, hay que tener cuidado ya que, aunque en una primera
aproximacin pueda parecer que ya se ha obtenido el objetivo de conseguir la complejidad lineal mxima,
L-1
y por tanto la mxima impredictibilidad, la secuencia resultante estar formada por 2 -1 ceros y tan slo
un uno, por lo que habr perdido completamente las buenas propiedades estadsticas del LFSR. Esto nos
lleva a que las transformaciones que usen tan slo el producto de orden mximo son peligrosas y deben
ser evitadas. En la prctica, resultar interesante emplear transformaciones no lineales que incorporen
entre otros a varios productos de fases, prximos al orden mximo. Las propiedades que muestra la
funcin no lineal f depender fuertemente del polinomio particular del LFSR generador. Por tanto, a la
hora de estudiar un generador de estas caractersticas, habr que considerar las diferentes relaciones
estructurales entre los polinomios de conexin y las funciones no lineales consideradas. Esto nos lleva a
que ser muy difcil realizar un tratamiento determinista de las secuencias obtenidas mediante un filtrado
no lineal, a causa de las posibles degeneraciones que puedan aparecer, y tendremos que conformarnos con
realizar un estudio de tipo probabilista. Con dicho estudio probabilista, lo que se pretender es hacer
arbitrariamente pequea la probabilidad de que aparezcan estas degeneraciones. Para ello, podemos
definir algunas cotas a la complejidad [DAI90]. Para una funcin no lineal f de orden k (producto de k
fases de un LFSR de L celdas), la complejidad lineal de la secuencia producida estar acotada
superiormente por la expresin:
i =1
Sin embargo, para aplicaciones prcticas lo que verdaderamente resultar interesante ser poder
determinar una cota inferior a dicha complejidad. Desgraciadamente, dicha complejidad no est acotada
inferiormente debido a que pueden aparecer degeneraciones que nos aparten de los valores mximos
deseables para la misma. Existen, no obstante, casos particulares para los que s es posible establecer unas
cotas inferiores para la complejidad lineal, como son los casos de productos de fases equidistantes y la
combinacin lineal de productos.
72
Li 1
1)
La secuencia de salida debe mostrar elevado periodo. El mximo posible ser: Pmax = 2i =1
2)
La secuencia de salida debe tener una elevada complejidad lineal . La mxima complejidad
lineal que se podr alcanzar ser max Pmax .
3)
Los unos y los ceros en la secuencia de salida debern ser igualmente probables.
4)
73
LFSR-1
f1
LFSR-2
f2
.
.
.
x 1(t)
x 2(t)
.
.
.
f3
LFSR-3
Salida
z(t)
xN(t)
Esta propiedad ser de gran importancia cuando se diseen generadores basados en una funcin
C para aplicaciones criptogrficas, ya que el hecho de que existan dependencias entre las entradas a C y
su salida puede ser aprovechado por un posible atacante (que hubiese podido capturar dicha salida o una
porcin de ella) para obtener informacin de la estructura completa del generador.
Sin embargo, el hecho de conseguir que se cumpla esta propiedad tendr un precio, que vendr
dado por la limitacin que aparecer en el mximo orden de la no linealidad de C que se podr alcanzar.
Siegenthaler [SIE84] demuestra que existe un compromiso entre el orden k alcanzable por la no linealidad
de la funcin combinadora C de N entradas y el grado de inmunidad a la correlacin alcanzable m. Este
compromiso viene dado por la siguiente relacin:
k +mN
Si adems se requiere que la secuencia de salida z(t) de la funcin combinada C est
uniformemente distribuda, la relacin de compromiso anterior deber ser:
k +mN
k +mN 1
para m = 0 m = N - 1
para 1 m N 2
74
75
( m )( n )
T = 2 1 2 1
= m n
m
donde T1= 2 -1 y T2= 2 -1, si m y n son el nmero de celdas de ambos registros de desplazamiento
respectivamente y se cumple que T1 y T2 son mutuamente primos entre s. Esta ltima condicin se puede
m
n
expresar como mcd(2 -1, 2 -1)=1, lo que tambin implica que mcd(m,n)=1, donde mcd es la abreviatura
del mximo comn divisor.
LFSR-1
Salida
LFSR-2
Fig. 3.6 Producto de secuencias pseudoaleatorias
Sin embargo, el problema que presenta el empleo de la operacin producto como funcin
combinadora de las secuencias producidas por registros de desplazamiento con realimentacin lineal, es
que la secuencia de salida presenta muy mala distribucin estadstica de ceros y unos, debido a la propia
naturaleza del producto de dos nmeros binarios (3/4 de las salidas sern 0 ya que 0 0 = 0, 0 1 = 0,
1 0 = 0 y 1 1 = 1). Veamos ahora las propiedades de la suma binaria (OR-exclusiva) como funcin
combinadora de secuencias producidas por registros de desplazamiento, tal como muestra la figura 3.7.
LFSR-1
Salida
LFSR-2
Si los periodos de ambos registros de desplazamiento son T1 y T2 y son mutuamente primos entre
s (es decir, mcd(T1T2=1), entonces el periodo de salida ser T = T1T2. En general, para N secuencias
producidas por LFSRs con periodos mtuamente primos entre s, se cumple que:
N
T = Ti
i =1
76
)(
2 m 1 2n 1
LINEAS DE CONTROL
C0
E
N
T
R
A
D
A
Entrada conectada a la
salida
CONTROL
C1
C0
C1
0
1
2
MULTIPLEXOR
Salida
Con N lneas de control se puede seleccionar una entre 2 posibles lneas de entrada para asignar
su valor a la salida. Como es lgico, se buscar que todo el proceso se parezca lo ms posible a uno que
genere secuencias verdaderamente aleatorias, por lo que se intentar producir procesos aleatorios all
donde sea posible.
Firmes candidatos a esto, son tanto las lneas de control como las lneas de entrada del
multiplexor. Podemos pensar en diferentes estructuras para generar secuencias pseudoaleatorias:
ESTRUCTURA A) Lneas de entrada con valores fijos y lneas de control gobernadas mediante las
celdas de un LFSR, o bien celdas de distintos LFSRs, tal como muestra la figura 3.9.
77
LINEAS DE CONTROL
LFSR1
LFSR2
C0
E
N
T
R
A
D
A
"0"
"1"
"1"
"1"
C1
MULTIPLEXOR
Salida
ESTRUCTURA B) Lneas de control gobernadas por un contador que cambie de estado progresiva y
cclicamente, y lneas de entrada atacadas por una serie de LFSRs (figura 3.10).
LINEAS DE CONTROL
C
E
N
T
R
A
D
A
LFSR1
LFSR2
LFSR3
LFSR4
C1
0
1
MULTIPLEXOR
Salida
2
3
ESTRUCTURA C) Lneas de control y de entrada atacadas por las celdas de distintos registros de
desplazamiento (figura 3.11).
LINEAS DE CONTROL
LFSRA
C
E
N
T
R
A
D
A
LFSR1
LFSR2
LFSRB
0
1
LFSR3
LFSR4
MULTIPLEXOR
Salida
78
ESTRUCTURA D) Lneas de control gobernadas por un LFSR y lneas de entrada por otro (figura 3.12).
C0
0
1
MULTIPLEXOR
Salida
2
3
Vamos a ver algunos resultados en cuanto a periodo y complejidad lineal sobre la estructura D.
Para ello, consideremos dos LFSR que tienen L1 y L2 celdas respectivamente, de forma que las celdas del
LFSR1 ataquen a las lneas de entrada del multiplexor. Si el multiplexor tiene N lneas de control,
N
dispondremos de 2 lneas de entrada, de las cuales se podr seleccionar una para que se conecte a la
salida mediante las lneas de control. Si llamamos LFSR2 al registro de desplazamiento que genera las
seales que controlarn las lneas de seleccin, debemos usar N celdas de las L2 que posee dicho registro.
N
Si para las lneas de entrada empleamos las celdas del LFSR1, se tendrn que utilizar 2 celdas de las L1
de que consta para completar las lneas de entrada, el contenido de una de las cuales se pasar a la salida
en cada instante de avance del reloj del sistema.
Con stas, ya se tienen las primeras restricciones en cuanto a los rdenes de los LFSR que se
N
deben emplear: L2 N y L1 2 .
Adems, para obtener las condiciones ptimas en cuanto a periodo y complejidad lineal ser
interesante que los LFSRs tengan polinomio de realimentacin primitivo. Con esta configuracin, la
longitud de la secuencia de salida del multiplexor, ser peridica y su periodo estar acotado por la
expresin:
L
P (2 1-1)(2 2-1)
L
Cuando los periodos de las secuencias producidas por los LFSRs que sirven de entrada, o lo que
es lo mismo, los rdenes de ambos LFSRs, son mtuamente primos entre s (mcd(L1,L2) =1), la secuencia
de salida del sistema presentar el mximo periodo:
P = P1.P2
si
P1 = 2 1-1
P2 = 2 2-1
Hay que tener en cuenta al disear una estructura de este tipo que si L1 y L2 son divisibles, el
periodo de la secuencia de salida se ver muy reducido:
79
Es interesante notar que en esta estructura, el periodo P de la secuencia de salida no depende del
polinomio caracterstico primitivo elegido para los registros de desplazamiento ni del nmero de entradas
de control N que tenga el multiplexor.
Otro parmetro de inters es el comportamiento en cuanto a la autocorrelacin que presentar la
secuencia de salida. Para esta estructura, la autocorrelacin para valores fuera de fase valdr
aproximadamente:
1
1
2
P1 P2
P1
que representa un valor muy pequeo, lo que nos sugiere que la secuencia de salida transporta poca
informacin de los polinomios primitivos utilizados. Adems, cuando se cumpla la restriccin L1 > L2, la
correlacin valdr aproximadamente:
(2
1
L2
L
b) = L 2 1 + L1 + 1
1
N L
c) L2 1 + 1
i =1 i
si N = 1
si N = 2 L1
si 2 < N < L1-1
La ecuacin c) se cumplir con igualdad si las N celdas de las que se extrae su contenido para
atacar las lneas de entradas del multiplexor se toman de forma equiespaciada.
d) = L 2 2 L1 1
si N = L1-1 N = L1
80
ENTRADAS
J
K
0
0
0
1
1
ESTADO
SIGUIENTE
qn1
1
0
1
0
1
qn1
Por tanto, las salidas de este dispositivo no slo dependen de la entrada, sino tambin del estado
anterior. Adems, presenta la desventaja de que hay que fijar un estado inicial qn-1.
Veamos cmo utilizar este dispositivo para combinar diversas secuencias pseudoaleatorias. La
figura 3.13 muestra una estructura en la que se emplean dos registros de desplazamiento (LFSR1 y
LFSR2) para atacar las entradas J y K de la bscula.
Si el nmero de celdas de ambos registros de desplazamiento con realimentacin lineal L1 y L2
son mutuamente primos entre s, es decir mcd(L1,L2) = 1, entonces el periodo que se obtendr con esta
estructura ser:
)(
Pmax = 2 L1 1 2 L2 1
Adems, el uso de bsculas J-K como funciones combinadoras hace que el generador de
secuencias pseudoaleatorias obtenido presente las siguientes caractersticas:
1) El tiempo de ejecucin ser elevado (aunque este problema sera salvable mediante el empleo de
tecnologas ms avanzadas).
2) Presenta un estado inicial transitorio (un prembulo), aunque este efecto ser slo apreciable al
arrancar el sistema y durar unos pocos bits.
3) Toda la secuencia de salida depende del estado inicial que le demos al sistema.
4) No se alcanza una distribucin uniforme a la salida a no ser que las secuencias concurrentes estn
bastante balanceadas. (En el caso de la figura 3.13 se conseguir ya que las secuencias concurrentes son
LFSRs que presentan una buena distribucin en sus secuencias de salida).
LFSR-1
n celdas
LFSR-2
Q
K
m celdas
Salida
81
LFSR-1
n celdas
EJEMPLO A
LFSR-2
Salida
m celdas
LFSR-2
p celdas
LFSR-1
n celdas
EJEMPLO B
LFSR-2
Salida
m celdas
LFSR-2
p celdas
LFSR-1
n celdas
EJEMPLO C
LFSR-2
Salida
m celdas
LFSR-2
p celdas
82
Reloj 1
Reloj 2
SISTEMA 1
Salida
SISTEMA 2
83
LFSR
GENERADOR
Salida
Reloj
LFSR
CONTROLADOR
Fig. 3.16 Control de reloj en cascada
ck
Reloj
LFSR
Salida
Simulada
84
velocidad d veces menor que la de cambio de estado interno. Un nuevo tipo de decimacin llamada
decimacin-[d,k] es la que se obtiene de avanzar d estados internos al sistema generador cuando se
obtiene un cero binario de salida del sistema controlador, y avanzarlo k estados internos cuando tengamos
un uno [RUE88], tal como muestra la figura 3.18.
ck
LFSR
Salida
0 --> d
1 --> k
Fig. 3.18 Generador de secuencias autodecimadas
La decimacin [d,k] no es pues una decimacin por un valor constante, sino que se realiza por
una funcin dependiente de los dgitos previos de la secuencia del registro del desplazamiento, y como
resultado obtendremos una secuencia [d,k]-autodecimada. La aplicacin de esta operacin sobre registros
cuyas salidas sean de longitud mxima y cuyos grados sean los mismos no har variar las propiedades
estadsticas de distribucin de bits en la secuencia ni su periodo. Veamos algunos resultados en forma de
L
teoremas. Para ello, consideremos el LFSR de la figura 3.18 con L celdas y periodo 2 -1. Adems
L
debemos asumir que 0 < d,k < 2 -1, ya que si no, no sera posible reducir d o k mediante la operacin
L
mod2 -1.
TEOREMA 1: Una secuencia de longitud mxima obtenida a partir de un LFSR de L celdas autodecimada
L
L
[d,k] tendr un periodo TL =(2/3(2 -1) cuando [d,k] = g(1,2) mod 2 -1, si g un entero que cumple la
L
condicin mdc(g,2 -1)=1. Observar que an en el mejor caso posible, habr una prdida importante del
33% en la longitud de la secuencia de salida.
TEOREMA 2: La frecuencia absoluta de unos NL(1) en un periodo de una secuencia de longitud mxima
L
generada por un registro de desplazamiento de orden L y autodecimada [d,k] es NL(1) = 1/3(2 -1), con las
mismas restricciones del teorema 1. Si L es par, la distribucin es perfectamente balanceada en cuanto al
nmero absoluto de unos y ceros de salida (NL(1) = NL(0) = TL/2).
TEOREMA 3: Considerando las mismas restricciones que antes, la frecuencia absoluta de parejas de bits
posibles NL(b1,b2) en un periodo completo de la secuencia de longitud mxima autodecimada [d,k] estar
limitada por:
0
0
N L N L (b1 , b2 ) N L + 2
donde:
L
0
N L (00) = (1/6(2 -1))-1
0
N L (01) = 1/6(2L-1)
N L0 (10) = 1/6(2L-4)
N L0 (11) = 1/6(2L-4)
85
Para valores de L grandes la diferencia entre las distribuciones puede considerarse como nula.
TEOREMA 4: El periodo TL de una secuencia de longitud mxima generada por un registro de
L
desplazamiento de orden L y autodecimada [d, d+1] est limitado por TL (3/4(2 -1)).
Cuando se eligen adecuadamente los valores de d y k se pueden alcanzar propiedades estadsticas
semejantes a las de las m-secuencias y, por tanto, cercanas a las distribuciones aleatorias ideales, ya que se
obtiene un gran periodo, distribuciones de grupos de ceros y unos balanceados, as como similar nmero
de ceros y unos totales en la secuencia y buena autocorrelacin.
Sin embargo, la principal ventaja de este mtodo est en la altsima (casi ideal) complejidad
lineal alcanzada al autodecimar [d,k] la m-secuencia.
2
3.4.4 Secuencias PN
Un caso especial de secuencias obtenidas mediante tcnicas de control de reloj son las que se
obtienen cuando los unos producidos por un generador de secuencias pseudoaleatorias (PN) se usan para
activar el reloj de otro generador de secuencias pseudoaleatorias (PN). Las secuencias as obtenidas se las
2
denominan PN , y este proceso se puede iterar poniendo generadores PN en cascada de forma que la
k
salida de cada uno de ellos ataque al reloj del siguiente para obtener secuencias PN (si hay k generadores
k
PN en cascada). Las secuencias PN [TRE74] sern secuencias binarias con una probabilidad para los
k
unos de (1/2) .
3
La figura 3.19 muestra el caso para k = 3, es decir, es un generador PN . Suponemos que todos
los generadores tienen periodo P aunque pueden generar secuencias diferentes. El primer generador PN
tendr un reloj constante (el reloj del sistema), mientras que el segundo generador PN recibir pulso de
2
reloj slo cuando el primer generador PN produzca un 1. De este modo, la secuencia PN contendr un 1
cuando la salida del segundo generador PN realice una transicin, y un cero en el caso contrario.
SECUENCIA PN 2
SECUENCIA PN
GENERADOR PN 1
GENERADOR PN 2
SECUENCIA PN
GENERADOR PN 3
86
1)
2)
Un periodo de una secuencia PN contiene [(P+1)/2] unos. Esto implica que la densidad de unos
2
ser (1/4)[(P+1)/P] con lo que se aproximar a 1/4 cuando el periodo P crezca.
3)
La autocorrelacin normalizada fuera de fase no podr exceder nunca 1/2 o ser menor que 1/4 y
valdr 1/4 para todos los desplazamientos entre 0 y 2P-2L excepto para P.
b)
a)
Existen algoritmos elegantes para generar este tipo de secuencias. Sin embargo, hay que tener en
cuenta que, a medida que crece la elegancia matemtica, la estructura de la secuencia se va volviendo ms
regular con lo que la aleatoriedad va decreciendo.
Las secuencias de De Bruijn son muy tiles en aplicaciones en las que cada m-tupla binaria debe
aparecer dentro de un cierto retardo acotado, tal como el testeo lgico. Sin embargo, hay que tener en
cuenta que la naturaleza altamente regular de dichas secuencias, que las hace muy tiles para una
aplicacin como la anterior, las vuelve poco eficientes para ser utilizadas como secuencias
verdaderamente aleatorias.
La forma ms simple de construir este tipo de secuencias consiste en aadir un cero adicional a la
m
subsecuencia de m-1 ceros sucesivos de una m-secuencia de periodo 2 -1, generada por un registro de
desplazamiento con realimentacin lineal con polinomio de realimentacin primitivo de grado m (m
87
celdas) sobre GF(2). Este cero extra se inserta en la secuencia aplicando una funcin NOR al contenido de
las m-1 primeras celdas del generador y aadiendo la salida (mdulo 2) al canal de realimentacin. La
figura 3.20a muestra un generador de m-secuencias, y la figura 3.20b muestra una modificacin sobre este
generador para producir una secuencia de De Bruijn. Tal como se vio en el apartado 3.1.2, el nmero de
m
distintas m-secuencias de periodo 2 -1 viene determinado por 2 m 1 / m (donde (x ) es el nmero
de enteros menores que x y mtuamente primos con l). Este procedimiento permitira generar
m
2 1 / m secuencias diferentes de De Bruijn de periodo 2m.
000
001
010
011
100
101
110
111
Los dgitos binarios representan los coeficientes del polinomio de realimentacin, donde el
coeficiente de mayor orden es el de la izquierda.
Por ejemplo, un polinomio de grado 10 que estuviese representado por mediante la forma octal
3525, se podra expresar en la forma binaria como 011101010101 que, puesto a su vez en forma
polinmica sera:
P(x ) = x
10
+ x + x + x + x + x +1
Tabla 3.3
E,F,G,H
A,B,E,F
C,D,G,H
Polinomio primitivo
Las races son linealmente dependientes
Las races son linealmente independientes
88
Grado 2
Grado 3
Grado 4
Grado 5
Grado 6
Grado 7
Grado 8
Grado 9
Grado 10
Grado 11
Grado 12
Grado 13
Grado 14
Grado 15
Grado 16
Grado 17
7H
13F
23F
45E
103F
211E
203F
435E
537F
1021E
1605G
2011E
3023H
4005E
5235E
10123F
14227H
20033F
22471E
42103F
65153H
100003F
140573H
210013F
211473F
400011E
611073H
75G
127B
217E
313H
551E
703H
1461G
1743H
2415E
3543F
6015G
7431G
15647E
13131E
23261E
30465G
43333E
73647H
102043F
150633H
234313F
337553H
400017F
477225E
67H
147H
235E
345G
747H
471A
1055E
1617H
3771G
2725G
7413H
5607F
16533H
15053H
24623F
25245E
51761E
70553F
177775E
116637F
307107H
245367F
600013H
603777H
111A
367H
435F
763D
1167F
1553H
2157F
3471G
4143F
4731E
13565E
14357F
30741G
33357H
40503F
67101G
161007H
175515G
201735E
356057H
561175E
437631E
015
277E
545E
727D
1541E
1773G
3515G
2707E
6233H
6037H
17121G
15413H
34517H
22233F
77141G
73143F
142305G
115537E
305667H
355507H
547163F
667401G
155E
325G
543F
433B
1333F
1267E
2773F
3323H
7237H
5253F
16521E
10605E
22631E
25633F
67517H
76047H
154463H
162455G
346355G
251741E
755723H
512211E
3.7 Problemas
PROBLEMA 3.1 Dado un LFSR de L = 11 celdas con polinomio de realimentacin primitivo:
a) Determinar su periodo.
b) Calcular su complejidad lineal.
c) Se podr garantizar este periodo si se sustituye el polinomio primitivo por otro irreducible
89
no primitivo?
d) Cuntos ceros habr en un periodo?Y unos?
e) Cul ser el valor fuera de fase de la funcin de autocorrelacin?
PROBLEMA 3.2 Expresar la siguiente funcin binaria no lineal en la forma algebraica normal (ANF):
f (x1 , x 2 , x 3 ) = x1 + x 2 x3 + x1 x 2 x 3
donde + es la operacin binaria OR y es la operacin binaria AND.
PROBLEMA 3.3 Dado el LFSR del problema 3.1, al que se le aade una funcin no lineal consistente en
el producto de 3 de sus celdas determinar:
a) La mxima complejidad lineal que se podr obtener en su secuencia de salida.
b) La complejidad mnima que tendr la secuencia de salida si las 3 celdas que se toman como
entradas a la funcin no lineal estn equiespaciadas.
PROBLEMA 3.4 Dados dos LFSRs de L1= 3 y L2= 5 celdas respectivamente y polinomios de
realimentacin primitivos determinar el periodo y la complejidad lineal de la secuencia que se obtendr si
se combinan:
a) Haciendo el producto binario (AND) de ambas.
b) Haciendo la suma binaria (XOR) de ambas.
PROBLEMA 3.5 Determinar el periodo y la complejidad lineal que se obtendr de la secuencia de salida
de la siguiente estructura si el LFSR-1 tiene L1= 5 celdas y el LFSR-2 tiene L2= 11 celdas y ambos tienen
polinomios primitivos:
LFSR-1
SELECCION
MULTIPLEXOR
Salida
90
PROBLEMA 3.7 Qu periodo mostrara una estructura constituda por una bscula JK que combinase
los mismos registros de desplazamiento del problema 3.5?
PROBLEMA 3.8 Si se realiza una [1,2]-decimacin sobre una m-secuencia de periodo 65535:
a) Cul ser el nuevo periodo de la secuencia resultante?
b) Cul ser la frecuencia absoluta de los unos en la secuencia de salida?
c) Delimitar las frecuencias absolutas de las parejas 00, 01, 10 y 11.
2
PROBLEMA 3.9 Se construye un generador PN a partir de dos LFSRs, ambos de 3 celdas y con
polinomio de realimentacin primitivo aunque diferentes. Determinar:
2
3.8 Bibliografa
[ARA81]
[BAR58]
[BEA85]
[BEN76]
[BER68]
[BET85]
[BETHT]
[CHA82]
[CHA88]
[CHA88]
[CUMMI]
[DAI90]
[DAIHU]
[DAIZD]
[DOW69]
ARAZI, B. On the Synthesis of De-Bruijn Sequences. Information and Control, n 49, pp.81-90, 1981.
BARSALL-RISTENBATT. Introduction to Linear Shift Register Sequences. University of Michigan,
IT-90, 1958.
BEALE, M.; LAU, S. M. S. On a Class of De Bruijn Sequences for Stream Ciphers. IEEE Int. Info.
Theory, Brighton, 1985.
BENJAUTHRIT, B.; REED, I. S. Galois Switching Functions and Their Applications. IEEE Trans.
on Computers, vol. C-25, N 1, Jan 1976.
BERLEKAMP, E. R. Algebraic Coding theory. McGraw-Hill, New-York, 1968.
BETH, T.; PIPER, F. C. The Stop & Go Generator. Advances in Cryptology. Proceedings of
Eurocrypt 84. Lecture Notes in Computer Science 209, pp. 88-92, 1985.
BETH, T.; COOK, B. M.; GOLLMANN, D. Architectures for Exponentiation in GF(2).
CHAN, A. H.; GAMES, R. A.; KEY, E. L. On the Complexities of the De Bruijn Sequences. J.
Combin. Theory A, Vol. 33, pp. 233-246, 1982.
CHAMBERS, W. G. Clock Controlled shift Registers in Binary Sequence Generators. IEE Proc. E,
1988, 135, pp. 17-24.
CHAMBERS, W. G.; GOLLMANN, D. Generators for Sequences with Near Maximal Linear
Equivalence. IE Proc. E, 1988, 135, pp. 7-69.
CUMMINGS, L. J.; WIEDEMANN, D. Embedded De Bruijn Sequences. Discrete Mathematics.
DAI, Z. D.; BETH, T.; GOLLMANN, D. Lower Bounds for the Linear complexity of Binary
Sequences Derived form Sequences Over Residue Rings. Proceedings of Eurocrypt, 1990.
DAI, Z. D.; HUANG, M. Q. A Criterion for Primitiveness fo Polynomials over Z/(2d)n.
DAI, Z. D. Binary Sequences Derived from Maximal Length Linear Sequences Over Integral Residue
Rings.Proceedings of the Workshop on Stream Ciphers
DOWLING, T. A. Irreducible Polynomials, Synchronisation Codes, Primitive Necklaces and the
Cyclotomic Algebra. Ed. Chapel Hill. Combinatorial Mathematics and its Applications. University of
North Carolina Press, 1969, pp. 358-370.
91
[DYN87]
[ELD58]
[ELS59]
[ETZ84]
[ETZ84]
[FOR57]
[FRE82]
[GAM83]
[GOL59]
[GOL59]
[GOL67]
[GOL85]
[GOL89]
[GOL89]
[GRO71]
[HER82]
[INF68]
[KAR76]
[KEY76]
[LEA68]
[LEM70]
DYNKIN, V. N.; MUSAELYN, S. .S. Algorithm for the Generation of Non-linear De Bruijn
Sequences. Automation and Remote Control, Vol. 48, pp.125-129, 1987.
ELDERT, C.; GRAY, H. M.; RUBINOFF, M. Shifting Counters. AIEE Trans. (Commun. Electron),
Vol. 7, pp. 70-74, March 1958.
ELSPAS, B. Theory of Autonomous Linear Sequentioal Networks. IRE Trans. Circuit Theory, Vol.
CT-6, pp. 45-60, March 1959.
ETZION, T.; LEMPEL, A. Algorithm for the Generation of Full-Length Shift Register Sequences.
IEEE Transactions on Information theory, 30, pp. 480-484, 1984.
ETZION, T.; LEMPEL, A. Construction of De Bruijn Sequences of Minimal Complexity. IEEE
Transactions Info. Theory, Vol. IT-30, pp. 705-709, 1984.
FORD, L. JR. A Cyclic Arrangements of m-tuples. RAND Corporation, Santa Monica, Calif, Rept. P1071, Aprl, 1957.
FREDRICKSEN, H. A Survey of Full Length Nonlinear Shift Register Cycle Algorithms. SIAM
Review, Vol. 24, N 2, April 1982.
GAMES, R. A.; CHAN, A. H. A Fast Algorithm for Determining the Complexity of a De Bruijn
n
Sequence with Period 2 . IEEE Transactions Info. Theory, IT-29, pp.705-709, 1983.
GOLOMB, S. W. On the Classification of Boolean functions. IEE Trans. on Inform theory, Vol. IT-5,
pp. 176-186, May. 1959.
GOLOMB, S. W.; WELCH, L. R.; GOLDSTEIN. Cycles From Nonlinear Shift Registers. Jet
Propulsion Lab, California Institute of Technology, Pasadena, Calif, Prog. Rept. 20-389, August
1959.
GOLOMB, S. W. Shift Register Sequences. San Francisco, Holden-Day, 1967.
GOLLMANN, D. Pseudo Random Properties of Cascade Connections of Clock Controlled Shift
Registers. Advances in Cryptology. Proceedings of Eurocrypt 84. Lecture Notes in Computer Science
209, pp. 93-98, 1985.
GOLIC, D. J. On the Linear Complexity of Functions of Periodic GF(q) Sequences. IEEE Trans on
Inform theory, vol. IT-35, N1, Jan, 1989.
GOLLMANN, D.; CHAMBERS, W. G. Clock-Controlled Shift Registers: A Review. IEEE Journal on
Selected Areas in Communications, Vol. 7, N 4, May 1989.
GROTH, E. J. Generation of Binary Sequences with Controllable Complexity. IEEE Trans. Inform.
Theory, Vol. IT-17, pp.288-296, 1971.
HERLESTAM, T. On Using Prime Polynomials on Crypto Generators. Proc. Workshop on
Cryptography, Springer-Verlag Lecture notes in computer Science, N 149, NY, 1982.
Theory of Transformation Groups of Polynomials Over GF(2) with Applications to Linear Shift
Register Sequences. Inform. Sci. Vol. 1, N 1, Dec. 1968, pp. 87-109.
KAROVSKY, M. G. Finite Orthogonal Series in the Design of Digital Devices. New York and
Jerusalem: Wiley and IUP, 1976.
KEY, E. L. An Analysis of the Structure and Complexity of Non-linear Binary Sequence Generators.
IEEE Trans. Inform theory, Vol. IT-22, pp. 732-736, Nov. 1976.
LEACH, E. B. Regular Sequences and Frequency Distribution. Proc. Amer. Math. Soc., Vol. 11,
august, 1968.
LEMPEL, A. High Speed Generation of Maximal-Length Sequences. IEEE Trans. on Computers, Vol.
C-19, Feb. 1970.
92
[LEM71]
[LEM71]
[LIU64]
[MAG63]
[MAS69]
[PAR89]
[RUE87]
[RUE88]
[SEL66]
[SIE84]
[SME86]
[SUR78]
[TSA64]
[TRE74]
[WAR33]
[YOE61]
[ZIE59]
LEMPEL, A. Analysis and Synthesis of Polynomial and Sequences Over GF(2). IEEE Transactions
on Information theory, vol. IT-17, N 3, May 1971.
LEMPEL, A. M-ary Closed Sequences. J. Combinatorial Theory, March 1971.
LIU, R.; MASSEY, J. Monotone Feedback Shift Registers. Proc. 2nd Allerton Conference on circuit
and System Theory, Univ. of Illinois, Urbana, 1964, pp. 860-874.
MAGLEBY, K. B. The Systhesis of Nonlinear Feedbak Shift Registers. TR 6207-1, Standford Elec.
Lab, Standford, CA, 1963.
MASSEY, J. L. Shift Register sysnthesis and DCH Decoding. IEEE TRans. on Inform theory, Vol.
IT-15, N 1, Jan. 1969.
m
PARK, W. J.; KOMO, J.J. Relationships Between m-Sequences Over GF(q) and GF(q ). IEE Trans.
on Inform theory, Vol. 35, N1, Jan. 1989.
RUEPPLE, R. A.; STAFFELBACH, O. J. Products of Linear Recurring Sequences with Maximum
complexity. IEEE Trans. Inform. Theory, Vol. IT-33, pp. 124-131, 1987.
RUEPPLE, R. A. When Shift Registers Clock Themselves. Proc. Eurocrypt 87. Lecture notes in
computer Science, 309, Springer Verlag, 1988, pp. 53-64.
SELMER, E. S. Linear Recurrence Relations Over finite fields. Dep. math. Univ. Bergen, Norway,
1966.
SIEGENTHALER, T. Correlation Inmunity of Nonlinear Combining Functions for Cryptographic
Applications. IEEE Trans Info Theory, IT-30, pp. 776-780, 1984.
SMEETS, B. A Note on Sequences Generated by Clock Controlled Shift Registers. Advances in
Cryptology: eurocrypt 85. Lecture Notes in Computer Science, 219, pp. 142-148, 1986.
SURBOCK, F.; WEINRICHTER, H. Interlacing Properties of Shift-Registers Sequences With
Generator Polynomials Irreducible Over GF(p). IEEE Trans. on Inform. theory, vol. IT-24, pp. 386389, 1978.
TSAO, S. H. Generation of Delayed Replicas of Maximal-Length Linear Binary Sequences. Proc.
IEE, Vol. 111, pp. 1803-1806, 1964.
TRETTER, S. A. Properties of PN2 Sequences. IEEE Trans. on Inform. Theo, March 1974.
WARD, M. The Aritmethical Theory of Linear Recurring Series. Transactions of the American
Mathematical Society, 35, pp. 600-628, July 1933.
YOELI, M. Nonlinear Feedback Shift Registers. IBM Develment Lab, Poughkeesie, N.Y. Tech Rept,
TR00.809,September, 1961.
ZIERLER, N. Linear Recurring Sequences. J. Soc. Ind. Appl. Math. Vol 7., 1959.
93
4.1.1
El generador de Jennings
Este es un esquema propuesto por S.M. Jennings en 1980 [JEN80] y que usa un multiplexor
para combinar las secuencias de salida de dos registros de desplazamiento con realimentacin lineal
(LFSR-1 de m celdas y LFSR-2 de n celdas) tal como se muestra en la figura 4.1 [JEN82].
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
94
L
F
S
R
a(t + i0)
s0(t)
a(t + i1)
s1(t)
.
.
.
a(t + ih-1)
.
.
.
sk-1(t)
S
E
L
E
MULTIPLEXOR
C
C
I
O
N 0 1
n-1
...
b(t)
S1
S2
z(t)
b(t+n-1)
LFSR-2
Realiza, pues, una aplicacin inyectiva :{0, 1, ..., 2h-1} {0,1, ..., n-1}. La familia de
transformaciones posibles es enormemente grande. Con esto, la seal de salida del generador se
define como:
z(t) = b[t + (u(t))]
Jennings [JEN80] demuestra que si ambos LFSR tienen polinomios primitivos y sus rdenes
(nmero de celdas) son mutuamente primos entre s (mcd(m,n) = 1), la secuencia de salida tendr un
periodo:
T = (2m-1)(2n-1)
y la complejidad lineal estar acotada superiormente por:
h
( z ) n 1 + Cim
i=1
donde se dar la igualdad si las posiciones de las celdas del LFSR-1, que se eligen como entrada a la
funcin de transformacin , estn equiespaciadas. La semilla de este generador la constituye el
contenido inicial de las celdas de ambos LFSR.
Una mirada ms profunda a la definicin de la salida z(t) revela que, independientemente de
cul sea la funcin de transformacin , la seal se puede expresar como una combinacin lineal de las
b(t), con los coeficientes dependiendo principalmente de S 1. Este ser el taln de Aquiles si este
95
4.1.2
El generador de Geffe
Multiplexor 2 a 1
LFSR-2
x 2(t)
z(t)
LFSR-3
x 3(t)
1
Seleccion
LFSR-1
x 1(t)
Si llamamos x2(t) y x3(t) a las seales binarias de entrada del multiplexor, y x1(t) a la seal
que ataca a la entrada de seleccin, la salida del generador en el instante t es:
z( t ) = x1 ( t ) x 3 ( t ) x1 ( t ) x 2 ( t ) = x 2 ( t ) x1 ( t ) ( x 2 ( t ) x 3 ( t ) )
o tambin:
z( t ) = x 3 ( t ) x1 ( t ) ( x 2 ( t ) x 3 ( t ) )
96
n1
1, 2
n2
1, 2
n3
1)
y la complejidad lineal:
= n3 n1 + ( n1 + 1) n2
LFSR-2
LFSR-1
LFSR-3
x 2(t)
z(t)
x 1(t)
x 3(t)
97
4.1.3
El generador de umbral
Este generador de secuencias pseudoaleatorias, propuesto por J.O Bruer en 1982 [BRU82],
tiene una estructura basada en N registros de desplazamiento con realimentacin lineal obtenida
mediante polinomios primitivos combinados de la siguiente forma:
N
1
si
x ji > N 2
j =1
zi =
0 en otro caso
LFSR-1
x 1(t)
z(t)
LFSR-2
x 2(t)
Detector
de umbral
Sumador
LFSR-N
x (t)
N
La salida de este generador estar balanceada slo si el nmero de LFSRs utilizado es impar.
Veamos un ejemplo con N = 3 en la que la salida equivalente, puesta en notacin algebraica normal
(ANF) sea: zi = x 1i x 2i x 1i x 3i x 2i x 3i .
Esta forma de representacin viene determinada por la suma mdulo 2 de todos los productos
de segundo orden. Si el nmero de celdas de los 3 LFSRs son L 1, L 2 y L 3 respectivamente y sus
periodos P1, P2 y P3, el periodo P de la secuencia z(t) y la complejidad lineal ( z ) sern:
P = P1 P2 P3
( z ) = L1 L2 + L1 L3 + L2 L3
Hay que tener en cuenta que existir una cierta correlacin entre la secuencia de salida y(t) y
cada una de las secuencias producidas por los LFSRs. Esto representa un inconveniente si se usa este
generador para aplicaciones de cifrado en flujo, ya que puede ser aprovechada para criptoanalizar el
sistema. Este generador no es aconsejable para aplicaciones criptogrficas de cifrado en flujo, ya que
presenta ciertas debilidades frente a ataques basados en la correlacin.
98
4.1.4
El generador de Pless
Veamos en este apartado un esquema propuesto por V.S. Pless [PLE77] basado en usar
bsculas J-K como funciones combinadoras de secuencias generadas por registros de desplazamiento
con realimentacin lineal. Este tipo de estructura preserva las buenas propiedades de aleatoriedad de las
secuencias producidas por los LFSR y, adems, soluciona el problema de la linealidad inherente en
estos dispositivos, que puede ser importante en ciertas aplicaciones como las criptogrficas debido a la
existencia de numerosos ataques que aprovechan la debilidad de su linealidad inherente.
La bscula J-K es bien conocida por su utilidad en circuitos digitales (ya estudiado en el
captulo anterior). Es un dispositivo de dos entradas (J,K) y dos salidas (donde una salida es la
complementaria de la otra), y que opera de la siguiente forma: Consideremos un par ordenado (J,K)
para representar la entrada. Un (0,0) deja la salida sin alterar, es decir, con el valor que tena antes de
cambiar la entrada. Un (1,1) a la entrada invierte el estado que tendra la salida en el instante anterior
(de 0 a 1 o viceversa). Una entrada (0,1) produce un 0 a la salida y, finalmente, una entrada (1,0)
produce un 1 a la salida.
x(t)
LFSR-1
y(t)
LFSR-2
z(t)
BASCULA
J-K
K
Veamos una primera estructura basada en una sola bscula J-K que combina la salida de los
LFSRs, tal como muestra la figura 4.5. De esta estructura se pueden hacer las siguientes afirmaciones:
Si el LFSR-1 produce una secuencia de periodo P11, y el LFSR-2 produce una secuencia de
periodo P21, y se cumple que el mcd(P1,P2)=1, y que tanto P 1 como P2 son impares, entonces el
periodo de la secuencia que produce esta estructura P es P = P1P2. Esta estructura es muy fcil de
implementar debido a la sencillez de todos los elementos que la componen y, adems, presenta buenas
propiedades en el caso de errores en la transmisin de la secuencia producida, ya que si este error se
produce en un bit producido por el flip-flop J-K, se tratar de un nico error que no afectar a los otros
bits. Si se produce un error en el estado interno de la bscula J-K, ste afectar a todos los bits
mientras la entrada (J,K) sea (0,0) o (1,1). Sin embargo, este error se corregir tan pronto como la
entrada pase a valer (1,0) o (0,1). Por tanto, tendremos un flujo de bits completamente incorrecto pero
muy fcil de detectar o un flujo de bits completamnte correcto.
Sin embargo, esta estructura no preserva las buenas propiedades estadsticas que presentan las
secuencias producidas por los LFSR que actan de entrada en la bscula J-K. Si en la entrada de la
bascula hay un 1, la probabilidad de que la siguiente salida sea un uno es menor que 1/2, y ocurre de
forma similar cuando la salida es un cero.
Esto tambin es un problema si se pretende emplear esta estructura en aplicaciones de cifrado,
ya que el sistema ser ms susceptible a ataques estadsticos que una secuencia realmente aleatoria.
99
x(t)
LFSR-1
J
Q
y(t)
LFSR-2
z(t)
Tabla 4.1
LFSR
1
2
3
4
5
6
7
8
N celdas
5
19
7
17
9
16
11
13
Periodo
31
524287
127
131071
511
65635
2047
8191
N de elecciones
6
27594
18
7710
48
2048
176
630
Factorizacin de P
31
524287
127
131071
7*73
3*5*17*257
23*89
8191
Otra posible estructura es la que se muestra en la figura 4.7, donde se emplean 4 LFSRs, 3
bsculas J-K y 3 alternadores. Si se asume que r 1 , r 2 , r 3 y r 4 son las celdas de los 4 LFSR
respectivamente, para poder obtener los parmetros de la estructura se necesitaran al menos
(2
r 1 + r 2 + 2r 3 + r 4
)
2
bits alternados. Este ya es un valor elevado para valores de r1, r2, r3 y r4 pares y
moderadamente grandes. Esta estructura presenta cierto atractivo para usarla en aplicaciones de tipo
criptogrfico. Las desventajas de esta estructura son, que es difcil de simular mediante un ordenador, y
no es posible ejecutarla en tiempo real. Como ventaja tiene que es muy fcil de implementar.
100
LFSR-1
LFSR-2
K
K
LFSR-3
LFSR-4
A
A
Q
Q
Fig. 4.7
Una ltima estructura presentada por Pless es la de la figura 4.8, que mantiene las propiedad
de ser difcil de romper mediante clculos lineales, que ya presentaba la estructura anterior, adems de
permitir su ejecucin en tiempo real. El dispositivo con cajas numeradas de 1 a 4 es un contador
cclico y transmite el contenido de la caja i + 1 (mod 4) a la derecha despus de que se haya transmitido
el contenido de la caja i. En esta estructura, si se usan M LFSR de forma que las longitudes de sus
secuencias de salida sean impares y mutuamente primas dos a dos, el periodo P de la secuencia de
salida ser:
M
P = Pi
i= 1
LFSR-1
LFSR-2
K
K
LFSR-3
LFSR-4
LFSR-5
LFSR-6
K
K
LFSR-7
LFSR-8
Fig. 4.8
La tabla 4.1 muestra una posible eleccin del nmero de celdas (ri) para los N = 8 LFSR.
Adems, se eligen polinomios primitivos para todos ellos. De dicha tabla se puede observar que los
101
periodos de los 8 LFSR son impares y mutuamente primos dos a dos, por lo que el periodo de la
estructura completa ser su producto, que es mayor que 1028.
El nmero de elecciones diferentes de polinomios primitivos que sean capaces de producir
esos periodos para los 8 LFSRs se muestra en la cuarta columna de la tabla.
Para la estructura completa, el nmero de elecciones diferentes posibles de los 8 polinomios
primitivos para los 8 LFSR ser el producto de los valores de la quinta columna y ser mayor que
2 10 20. Esto implica un nmero de posibilidades enorme que impedira, en el caso de que este
generador se empleara, por ejemplo, en un sistema criptogrfico, romper el criptosistema mediante el
intento simple de todas las posibles combinaciones por parte de un usuario no autorizado.
An se podra hacer una variacin en este ltimo esquema que consistira en la sustitucin de
los LFSR por contadores mdulo n (formados por la interconexin de bsculas J-K). Estos contadores
podran ser a su vez lineales o no. Estos ltimos son ms difciles de determinar incluso que los
LFSR, en el caso de un criptoanlisis contra un sistema de cifrado en flujo basado en esta estructura.
4.1.5
El generador de Rueppel
LFSR-1
LFSR-2
.
.
.
LFSR-N
x1 (t)
x (t)
2
SUMADOR
DE
REALES
x (t)
N
Salida
z(t)
102
memoria interna. Una vez hecho esto, se desplaza el contenido de esta memoria un bit a la derecha,
con lo que se obtiene el primer bit de la secuencia de salida a partir del bit menos significativo. En el
instante 2, el contenido de la memoria y la nueva salida de los N LFSRs x i(2) (i = 1, ..., N), se
vuelven a sumar (suma real) iterando as todo este procedimiento.
Si se eligen los polinomios de realimentacin de los LFSR primitivos (entonces producen msecuencias de periodo 2 Li 1, donde Li es el nmero de celdas y 1 i N) y se impone la restriccin
de que los grados (nmero de celdas) sean relativamente primos uno a uno ( i j 1 i,j N ,
mcd(Li, Lj) = 1), la secuencia que produce el generador presenta las siguientes condiciones:
N
max = ( 2 L
N
i= 1
1)
4.1.6
Generador de Tatebayashi
103
Su contenido debe ser constante durante una transmisin y se puede considerar como un
aumento de la clave secreta que hasta ahora estaba formada por el estado inicial de las celdas de los
LFSR.
El funcionamiento de este generador es el siguiente: El REGCTRL tiene N bits de forma que
el i-simo bit se suma mdulo 2 (suma OR exclusiva) con la secuencia de salida {xi} del i-simo
LFSR bit a bit, con lo que resulta la secuencia {yi}. En el mdulo sumador, las secuencias {yi} se
suman como nmeros reales, al igual que ocurra en el generador de Rueppel.
La adicin de este registro de control no modifica las propiedades de periodo, complejidad y
estadstica que mostraba el generador de Rueppel.
Tambin para este generador se eligen N LFSRs con grados mutuamente primos entre s y
polinomios de realimentacin primitivos. Con estas condiciones, la secuencia de salida z(t) tendr las
siguientes propiedades:
N
uk ( j ) = yi ( j ) + ci ( j )
i= 1
El siguiente bit de la secuencia de salida del generador z(t) es el bit menos significativo de la
suma de todos los yi y el acarreo z(j) = yk(j)+uk(j). Entonces:
P(z=1) = P(yk=1)P(uk=0)+P(uk=0)P(uk=1) = 1/2P(uk=0)+1/2P(uk=1) = 1/2
P(z=0) = P(yk=0)P(uk=0)+P(yk=1)P(uk=1) = 1/2P(uk=0)+1/2P(uk=1) = 1/2
lo que demuestra el balanceo que existe entre los unos y los ceros en la secuencia z(t) de salida.
Tambin se puede demostrar el hecho de que el generador presente inmunidad a la correlacin
de mximo orden N - 1. Para ello, se define uk(j) de la misma forma que antes.
Puesto que en cada instante j, el nuevo bit de la secuencia de salida z(t) se obtiene mediante
z(j) = yk(j) + uk(j), entonces se cumple que P(z=uk) = P(yk=0) = 1/2 y que P(z uk) = P(yk=1) = 1/2.
Por tanto, la salida z(t) estar incorrelada con uk(t), lo que implica que z(t) presentar inmunidad a la
correlacin de orden N - 1, ya que uk tiene N - 1 variables.
104
REGCTRL
.....
LFSR-1
LFSR-2
.
.
.
x1 (t)
y1 (t)
x2 (t)
y (t)
SUMADOR
DE
REALES
LFSR-N
x (t)
z(t)
para t 0
si la salida inicial es u(0) = s(b0). Adems, se debe tener en cuenta que el LFSR de control tendr una
salida peridica de periodo M, con lo que bt+M = bt para todo t 0. Entonces se cumplir que:
u( i + jM ) = s( jp + c( i ) )
0 i< M
donde:
M1
c( t ) = bk
k=0
j0
(1)
p = bk
k=0
(2)
105
4.2.1
En una descripcin de control de reloj como la del apartado anterior, los valores de bt deberan
ser bastante pequeos, ya que si no el LFSR controlado necesitar funcionar a una velocidad mucho
mayor que la tasa a la que producira bits de salida. Para solucionar esto, se puede modular en fase la
salida u(t) para producir una salida u' ( t ) = u( t + t ) de forma que se obtenga el mismo efecto que
cuando se tienen bt grandes, donde { t } es una secuencia de enteros de periodo M [CHA88]. A partir
de aqu, se pueden obtener unas ecuaciones similares a las del apartado anterior. Para este caso de
modulacin de fase se cumplir que u' ( t ) = s( c' ( t ) ) , donde c' ( t ) = c( t + t ) y adems c'(t) cumplir
la condicin c' ( t + M ) = c' ( t ) + p .
Al igual que en el apartado anterior, tambin se puede definir una b't como
b't = c' ( t ) c' ( t 1) y que satisface la condicin b't + M = b't .
El LFSR de control y la secuencia { t } deben tener periodos diferentes, por ejemplo M' y
M'' respectivamente. Entonces podemos definir el periodo de control global como el menor mltiplo
comn entre M' y M'' y el valor p visto anteriormente vendr dado en este caso por una suma sobre
M'/M'' periodos del LFSR controlado, y ser, por tanto, un mltiplo de M'M'. Por tanto, para
mantener la condicin de que p sea mutuamente primo con N (donde N es el orden del polinomio
irreducible del LFSR controlado), se debe cumplir que M/M' sea mutuamente primo con N. Veamos
algunos generadores de secuencias pseudoaleatorias que se basan en esta tcnica.
A) El generador mezclador de modulacin de fase de MacLaren-Marsaglia
Como ejemplo de este tipo de generadores se encuentra el llamado mezclador de MacLarenMarsaglia [MAC65], cuya estructura muestra la figura 4.11, y que usa un generador pseudoaleatorio
auxiliar para producir una secuencia peridica de enteros {xt} en el rango, por ejemplo, de 0 a K - 1.
Estos enteros se usan para seleccionar una direccin en una memoria de acceso aleatorio
(RAM) de K direcciones, cada una de ellas almacena un bit. El bit que contiene la posicin
determinada por xt se lee para producir el nuevo bit de salida u'(t), y en su lugar se escribe el valor que
contiene u(t).
Los valores de K elevados no son recomendables, no slo por el hecho de que se necesitar
una RAM de elevada capacidad (y por tanto elevado coste), sino tambin por el hecho de que este
generador necesita una inicializacin que concluir cuando todas las posiciones de la RAM se hayan
llenado.
106
u(t)
Primero escribir
y luego leer
RAM k 1
u`(t)
xt
DECODIFICADOR
DE DIRECCIONES
GENERADOR AUXILIAR
Un ejemplo prctico de este generador consistira en usar este sistema para mezclar la salida de
un LFSR de longitud n con un polinomio primitivo de realimentacin de orden N = 2n-1 controlado
mediante una tcnica de control de reloj. Esta, a su vez, puede consistir en emplear otro LFSR de
longitud n y periodo M' = N cuya salida ataque a la entrada de reloj del anterior. Si elegimos el
periodo del mezclador M'' de forma que sea primo y adems mutuamente primo con N, el periodo
global del control ser M = N M'', y la complejidad lineal de la secuencia de salida estar acotada
inferiormente por N n.
Si bien el empleo de esta tcnica no mejora la complejidad final respecto al LFSR con entrada
de reloj contralada por otro LFSR, s mejora, sin embargo, las propiedades estadsticas de la secuencia
pseudoaleatoria resultante.
B) Generador de producto escalar con el vector estado
Este es otro tipo de generador que realiza una modulacin de fase de forma ms potente que el
anterior, y se basa en el producto escalar binario [LID86]. El producto escalar binario de dos vectores
es el producto escalar reducido mdulo 2. En la figura 4.12 se muestra cmo implementar este
generador. En ella, hay un LFSR de control de periodo M' cuya salida ataca a la entrada de reloj de otro
LFSR de n celdas con polinomio de realimentacin irreducible f(x). Este LFSR controlado producir
una secuencia de salida St = S(c(t)) = (s0(t), s1(t),..., sn-1(t)) en el instante t segn las pautas que se han
visto anteriormente (c(t) est definida en la ecuacin 1 del apartado 4.2), que se denominar el vector de
estado. En esta misma estructura existe un generador pseudoaleatorio auxiliar que elige direcciones en
una memoria de slo lectura (ROM) que contiene n vectores. La salida de este subsistema constitudo
por el generador auxiliar y la ROM la denotamos por U t = {U t}, y tendr un cierto periodo M''. La
salida W(t) de toda esta estructura en el instante t ser el producto escalar de las secuencias St y Ut. El
periodo de control global ser igual al menor mltiplo comn entre M' y M'', por lo que ser adems
el periodo de la secuencia de salida W(t). Tendremos, pues, que W ( i + jM ) = Ui S ( c( i ) + jp ) con
0 i < M y j 0 , donde el valor de p viene dado en la ecuacin 2 del apartado 4.2. Para un valor i
fijo, { W ( i + jM ) } con j = 0, 1, 2,... ser una p-decimacin de la secuencia producida por el LFSR,
cuyo reloj es controlado. W(t) consistir, pues, en M secuencias mezcladas.
107
LFSR controlado
n
CLOCK
LFSR de control
St
Ut
W(t)
ROM
DECODIFICADOR
DE DIRECCIONES
GENERADOR AUXILIAR
La ventaja de este generador con respecto al del anterior apartado es que el rango de valores de
( Ui ) puede llegar a ser del orden de 2n-1.
Una variacin de este generador podra obtenerse al sustituir el LFSR auxiliar y la memoria
ROM por un LFSR de longitud mayor que n, del cual n bits se tomaran para formar la secuencia de
vectores {U t}. Tambin se podra utilizar otro tipo de funcin combinadora no lineal diferente al
producto escalar.
C) Generador en cascada
Se podran conseguir mayores complejidades lineales que en las estructuras anteriores si el
periodo M del LFSR que realiza el control del reloj fuera una potencia (Nr) del periodo N del LFSR
cuyo reloj es controlado.
En este caso, el periodo de la secuencia de salida del conjunto sera P = Nr+1. Esto sugiere que
podra ser interesante emplear estructuras en cascada de LFSRs, todas ellas de periodo N, y cuyo reloj
est controlado por el anterior.
Gollmann [GOL84] considera una estructura de este tipo que se describe en el apartado
4.2.5.B, en la que el control de reloj entre los sucesivos LFSR de la cascada se realiza mediante un
solo bit. En este apartado se describe, sin embargo, un generador en el que el control entre las
diferentes etapas de la cascada se realiza mediante varios bits en paralelo.
Para ello se construye una cascada de L etapas (excepto la primera y la ltima) como la de la
figura 4.13. La entrada a cada una de estas etapas (at) consistir en una secuencia de enteros de k bits.
Uno de estos k bits se debe retrasar un paso, y se usar para elegir si al LFSR de n celdas y polinomio
de realimentacin primitivo se le deben dar uno o dos pulsos de reloj. Esto quiere decir que el LFSR se
desplazar despus de que se haya usado su salida bt. Esta salida consistir en k bits correspondientes a
k celdas del LFSR (k n), y stos se deben sumar (mdulo dos) bit a bit con los k bits de at para dar
el vector suma c t de k bits, que ser adems la entrada a una caja-S invertible que realizar una
permutacin de los enteros entre 0 a 2k-1. Invertible significa que la permutacin que debe realizar se
hace mediante la transformacin correspondiente, uno a uno, entre los enteros del rango considerado.
108
LFSR
RELOJ
RETARDO
bt
at
ct
Caja-S
k
La primera de las L etapas de este generador ser un LFSR de n celdas con pulsos de reloj a
intervalos regulares (por tanto no controlado) seguido de una caja-S invertible. La ltima etapa ser
como la de la figura 4.13, pero omitiendo la caja-S.
El periodo P de las k secuencias producidas por este generador ser P = N L, y todas ellas
tendrn una complejidad lineal de al menos NL-1. Si no se omite la caja-S de la ltima de las L etapas,
la complejidad lineal de las k secuencias de salida an puede incrementarse ms.
Las cajas-S pueden ser diferentes para las distintas etapas, as como los polinomios
primitivos de realimentacin, pero siempre que el nmero de celdas de los LFSRs sea n.
D) El generador multiplicador de tasa binaria (BRM)
Este generador de secuencias pseudoaleatorias, propuesto por W.G. Chambers y S.M.
Jennings en 1984 [CHA84] presenta la estructura de la figura 4.14.
Sea el LFSR-1 un registro de desplazamiento de m etapas que genera una secuencia de periodo
m
M = 2 -1 y el LFSR-2 un registro de desplazamiento de n etapas que genera una secuencia de periodo
N = 2n-1.
El generador BRM funciona de la siguiente forma: En el instante t, se da un pulso de reloj a
ambos registros de desplazamiento. Entonces se hace que el LFSR-2 reciba at pulsos de reloj ms, si at
es el nmero que se obtiene de examinar el contenido de k celdas del LFSR-1. Para ello se debe asumir
que k < m, de forma que 0 at 2k-1. La salida z(t) del sistema ser la salida del LFSR-2 despus de
que ambos registros de deplazamiento hayan hecho un desplazamiento, y se haya desplazado al LFSR2 at veces ms. Si llamamos {s(t)} a la secuencia generada por el LFSR-2, y {z(t)} a la secuencia de
salida del sistema, podemos representar al sistema para t = 0, 1, 2,... como:
t
z (t ) = s t + ai
i=0
puesto que siempre se cumple que at+M = at para todo instante de tiempo t, para 0
todo j tendremos que z ( i + jM ) = s( jp + di ) donde:
M1
di = i + al
l=0
p = M + al
l=0
i M-1 y para
109
Durante un ciclo completo de M pulsos de reloj producidos por el LFSR-1, se producirn cada
una de las m-tuplas binaria distintas de cero como estados del LFSR-1.
Esto implica que cada k-tupla (excepto la de k ceros) entrar en el bloque BRM 2m-k veces,
por tanto:
M1
2k 1
l=0
i= 1
ai = 2m k i = 2m 1 ( 2k 1)
y
p = M + 2m 1 ( 2k 1)
Si se cumplen las condiciones de que todo factor primo de M divida a N, y que p sea primo
con N, la complejidad lineal de la secuencia de salida {z(t)} ser M n. En la prctica deberemos elegir
M = N. En este caso la condicin de que p y N sean primos entre s, se cumplir si, y slo si, k es
primo relativo con m. Por tanto, si m es un nmero primo y m = n, entonces cualquier valor de k dar
a la salida una secuencia de complejidad lineal M n y periodo M N.
LFSR-1
k bits
BRM
Pulso de
puerta
z(t)
PUERTA
at pulsos de reloj
s(t)
LFSR-2
Veamos un ejemplo. Supongamos que ambos registros de desplazamiento tienen 127 celdas y
tienen polinomio de realimentacin primitivo. Con estos valores, el periodo M ser 2127 -1 y la
complejidad lineal 127(2127-1) = 2 16 10 40, que es un valor considerablemente superior que el
valor 127 que obtendramos con un nico registro de desplazamiento del mismo tipo. El periodo del
generador BRM en este caso ser (2127-1)2 = 2,895 10 76.
4.2.2
Los generadores de secuencias autodecimadas se basan en producir el avance del reloj que
controla al generador en funcin del valor del bit de la propia secuencia de salida. A este proceso se le
denomina decimacin del registro de desplazamiento. Vamos a ver dos generadores que se basan en esta
110
tcnica. El primero de ellos (generador de Ruepple) realiza una decimacin de la secuencia de salida por
un valor constante d que consiste en tomar muestras de la secuencia de salida a una velocidad d veces
menor que el cambio de estado interno del registro de desplazamiento con realimentacin lineal. El
segundo generador (generador de Chambers-Gollmann) realiza una decimacin (d,k) que, a diferencia de
la anterior no es constante, sino que se realiza por una funcin dependiente de los dgitos previos de la
secuencia del LFSR generador por lo que se obtiene como consecuencia una secuenia (d,k)-decimada.
Si bien en el captulo anterior ya se vieron las propiedades de la decimacin de secuencias,
veamos algunas consideraciones antes de pasar a ver los generadores basados en esta tcnica.
Convencionalmente, se define la decimacin de una secuencia s(t) t = 0, 1, 2,... por un valor
constante d como la extraccin de cada d-simo dgito de s(t), y usualmente se denota por s[d]. Por el
contrario, tambin es posible realizar decimaciones no constantes sobre la secuencia, de forma que
dependa de porciones previas de sta. Las secuencias producidas de esta forma se denominan [d,k]autodecimadas. Vemoslo con un ejemplo:
EJEMPLO 4.1: Sea la siguiente porcin de una m-secuencia s(t)= 11111001001100001011010100...,
producida por un registro de desplazamiento con realimentacin lineal. Una secuencia 2-autodecimada a
partir de la secuencia dada ser:
s[2]= 1110010011000...
mientras que una secuencia [1,2]-autodecimada ser:
s[1,2]=11101010000110110....
Para realizar el estudio de las secuencias autodecimadas se supondr que las secuencias
originales son m-secuencias (secuencias binarias de mximo periodo producidas por registros de
L
desplazamiento con realimentacin lineal). Esto implicar que 0 < d,k < 2 -1, si L es el nmero de
celdas del LFSR. Sin embargo, para eliminar la restriccin anterior bastar que aquellos d k que sean
mayores que 2L-1 se reduzcan mediante la operacin mod 2L-1. Las secuencias [d,k]-autodecimadas son
tan fciles de implementar como las propias m-secuencias, y si los valores de d y k se eligen
adecuadamente, presentan tan buenas propiedades de distribucin (excelente k-distribucin) como stas,
con la ventaja adicional que tienen una complejidad lineal muy elevada, de valor similar al periodo, por
lo que parecen comportarse de una forma ms aleatoria que las m-secuencias. Estos generadores pueden
tener buena aplicacin en modulaciones spread spectrum y criptografa (ambas aplicaciones se
estudiarn en el captulo 7). Sin embargo, se debe tener precaucin, ya que si para realizar un cifrado se
usa una sola secuencia [d,k]-autodecimada a partir de una m-secuencia y el par [d,k] se hace pblico, un
posible atacante podra obtener el polinomio de realimentacin y el estado inicial a partir de la
secuencia de salida mediante la resolucin de un sistema de ecuaciones lineales.
A) Generador de secuencias autodecimadas de Ruepple
La estructura de este generador de secuencias pseudoaleatorias, propuesto por R.A. Ruepple en
1987 [RUE88] es muy simple, tal como muestra la figura 4.15. Se basa en un nico registro de
111
L celdas
reloj
0: d impulsos de reloj
1: k impulsos de reloj
LFSR
z(t)
2( 2 L p 1)
3
si (L-p) es par (condicin necesaria para que el periodo T sea impar) y tanto el periodo T como la
complejidad lineal son nmeros 2-primos. Un nmero 2-primo es el que satisface que 2i-1 no es
112
mltiplo de T para cualquier i < T-1. Una manera rpida de saber si T es 2-primo se basa en el hecho
de probar los i, tales que valgan (T-1)/T' , si T' es cada uno de los los factores primos de T-1. La
condicin anterior se encuentra cuando se estudian cuntos ceros y unos se deben restar (en total
2 2 L p 1 3 ) al periodo de la m-secuencia (2L-1). Cuanto ms parecidos son L y p, el periodo de
salida del generador (T) y, por tanto, tambin su complejidad, tanto ms se acercarn al mximo valor
posible 2L-1.
L celdas
reloj
0: 1 impulsos de reloj
1: 2 impulsos de reloj
z(t)
LFSR
p .... 2 1
NOR
Para estudiar el comportamiento de este generador podemos hacer una comparacin entre la
secuencia producida por el generador (con la funcin NOR) y la m-secuencia original. Si para ello
elegimos un LFSR de 5 celdas (L = 5) con polinomio de realimentacin primitivo estas secuencias
obtenidas son:
m-secuencia:
1000110111010100001001011001111
generador:
10011011101010000001100111
(periodo = 31)
(periodo = 26)
Se puede ver que la secuencia obtenida por el generador se obtiene a partir de la m-secuencia
pero eliminando los bits subrayados, ya que el generador se los ha saltado al dar dos pasos cuando ha
encontrado la condicin de p ceros consecutivos en la secuencia de salida.
Una cuestin importante a la hora de disear un generador de este tipo es que si el vector
inicial coincide con uno de los vectores que se saltan pueden darse prembulos en la secuencia antes de
que se convierta en peridica. Estos prembulos son siempre indeseables ya que reducen el periodo de
la secuencia de salida en su misma longitud. Afortunadamente, se sabe que la mxima longitud que
puede tener un preambulo es L p + 1 (donde x indica la parte entera de x). Se puede estudiar
cuntos estados iniciales hay globalmente buenos para evitar los prembulos. Por ejemplo, para un
LFSR con L = 5 y periodo T = 29, el nmero de polinomios primitivos de realimentacin con periodo
31 es ( 2 L 1) / L = 6 , y por lo tanto hay como mucho 6(31-29) = 12 estados que producirn
prembulos como mnimo en uno de esos polinomios de realimentacin. Por tanto, se dispone de 3112 = 19 estados iniciales globalmente buenos.
Para concluir el estudio de este generador, la tabla 4.2 muestra las combinaciones (L,p) para L
20 que cumplen que el periodo de salida del generador (T) es un 2-primo. Se puede observar que,
113
aunque el lmite terico ofrece un rendimiento T/2L-1 = 66%, se garantizan rendimientos por encima
del 80% (4 < L 70), e incluso no es difcil encontrar rendimientos por encima del 99%. Por tanto,
se puede decir que para valores 4 L 20 se puede garantizar la obtencin de secuencias con periodos
y complejidades lineales del mismo valor y muy cercano el mximo terico Tmax = 2L-1.
4.2.3
3
4
5
6
6
9
10
11
12
12
14
16
17
18
18
18
19
20
1
2
3
2
4
7
2
3
2
10
12
6
5
2
10
14
7
18
T/2L-1
5
13
29
53
61
509
853
1877
3413
4093
16381
64853
128341
218453
261973
262133
521557
1048573
0,625
0,812
0,906
0,828
0,953
0,994
0,833
0,916
0,833
0,999
0,999
0,989
0,979
0,833
0,999
0,999
0,994
0,999
114
cambiar de estado en el instante t, si y slo si, la salida del LFSR-1 en el instante anterior es un 1
(x1(t-1) = 1). Adems, la salida del LFSR-2 se combina con la salida de un tercer LFSR (LFSR-3) y
funciona de forma normal. Esta combinancin se realiza mediante una suma, bit a bit, de la salida de
los LFSR 2 y 3, con lo que se obtiene la salida global del generador z(t). Si se imponen las
restricciones adecuadas sobre los grados de los tres LFSR (n1, n2 y n3 para los LFSR-1, LFSR-2 y
LFSR-3 respectivamente) y sus polinomios son primitivos, z(t) tendr periodo P y complejidad :
P = ( 2n1 1) ( 2n 2 1) ( 2n 3 1)
( z ) = ( 2n1 1) n2 + n3
1 1
+
2 4
El que esta probabilidad sea superior a 1/2 implica que si los polinomios de realimentacin de
los LFSR-1 y LFSR-3 son conocidos por un posible atacante, ste puede aplicar un ataque basado en
el mtodo del sndrome lineal [ZEN89], que permita primero recuperar la secuencia x3(t) a partir de la
secuencia de salida z(t), y despus la secuencia x1(t) a partir de la x2(t). Ello se podra hacer incluso
bajo la suposicin de que el polinomio de realimentacin del LFSR-2 no fuera conocido.
LFSR-2
x 2(t)
x1 (t)
LFSR-1
z(t)
LFSR-3
x (t)
3
reloj
115
z(t)
LFSR-1
LFSR-2
LFSR-3
......
......
reloj
Mediante esta tcnica se consigue que la secuencia de salida z(t) tenga el siguiente periodo:
T = ( 2n 1)
( z ) n( 2n 1)
N1
( s ) OrdT ( 2)
Cuando se use este generador en aplicaciones como la criptografa, el hecho de elegir una
secuencia de periodo primo es deseable, debido a que se puede someter a diversas transformaciones sin
que se modifique la cota inferior de su complejidad lineal, suponiendo que la transformacin utilizada
no nos conduzca a una secuencia constante. Sin embargo, si el periodo T = 2n-1 resultara ser un primo
de Mersenne, entonces OrdT(2) = n, y ello implica que el periodo T que elijamos debe ser un primo
superior a 2n-1. De este modo podremos construir secuencias con periodos de la forma T = q 2n-1, si q
es un nmero impar mayor o igual que 3, y hay una estructura formada por dos registros de
desplazamiento con realimentacin lineal (LFSR) ambos de n celdas [ZEN90].
Un generador de estas caractersticas se muestra en la figura 4.19. Con esta estructura se puede
obtener un periodo T = 5 2n 2 1. Para ello, ambos LFSR de n celdas deben inicializarse con
116
estados iniciales distintos de cero. El control de los pasos en este generador se realiza de la siguiente
forma:
reloj
reloj 1
x(t+n-1)
x(t+n-2)
............
x(t)
LFSR-1 (n celdas)
z(t)
LFSR-2 (n celdas)
y(t+n-1)
reloj
y(t+n-2)
............
y(t)
reloj 2
4.2.4
117
LFSR-1
reloj
LFSR-3
x 1(t)
z(t)
x3 (t)
LFSR-2
x 2(t)
Se estudiarn en primer lugar las caractersticas de periodo y complejidad lineal. Para facilitar
la demostracin se recurre a los siguientes teoremas:
TEOREMA 1: Si se efectan las siguientes suposiciones:
(a) x3(t) es una secuencia de De Bruijn de periodo 2k (si k es su nmero de celdas).
(b) Los polinomios de realimentacin del LFSR-1 y del LFSR-2 son irreducibles y diferentes y tienen
grados n1 y n2, y periodos T1 y T2 respectivamente.
(c) Los periodos T1 y T2 son mayores que 1 y primos entre s: T1, T2 >1 y mcd(T1,T2) = 1.
Bajo estas suposiciones, el periodo de la secuencia de salida z(t) del generador es:
T = 2k T 1 T 2
y la complejidad lineal est acotada por la expresin:
k1
< ( n1 + n2 ) 2k
( n1 + n2 ) 2
118
-w
) (
respecto a la ideal es similar a la que presenta una m-secuencia. Este generador permite producir
secuencias pseudoaleatorias de forma simple y eficiente, adems de ser rpido.
Puede ser aconsejable formar una estructura en cascada utilizando este generador. Para ello, se
sustituye cada LFSR por el generador de pasos alternados ASG. El generador as construdo presentar
elevado periodo, elevada complejidad lineal y buenas propiedades estadsticas en las secuencias
obtenidas.
4.2.5
z ( t ) = x ( t + i ) y( dt + i )
i= 0
donde x(t) e y(t) son las secuencias producidas por el LFSR-1 y el LFSR-2 respectivamente.
Si los polinomios de realimentacin utilizados por los registros de desplazamiento son
primitivos, sus grados son mutuamente primos entre s (mcd(m,n) = 1), y se cumple que el factor de
velocidad d es mutuamente primo con el periodo del LFSR-2 (mcd(d,2n-1) = 1), la secuencia de salida
de este generador tendr un periodo:
T = ( 2n 1) ( 2m 1)
y una complejidad lineal ( z ) = m n . Adems, la secuencia de salida producida por este generador
presenta excelentes propiedades estadsticas.
Veamos cul ser la debilidad de este generador si se emplea en criptografa para realizar un
sistema de cifrado en flujo. En este generador, el factor de velocidad d es variable y se puede emplear
como parte de la clave secreta. La bilinearidad implicada en la generacin de la secuencia de salida z(t),
fijado un valor del factor de velocidad, hace que el criptosistema se pueda romper por un ataque basado
en el test de consistencia lineal [ZEN89]. Mediante este test, que se ver ms detalladamente en el
captulo 7, si el atacante conoce los polinomios de realimentacin de los registros de desplazamiento
puede determinar el factor de velocidad d y los estados iniciales de los registros de desplazamiento (la
119
clave), aplicando tan slo ( dmax 1) ( 2m 1) tests de consistencia sobre una porcin de la secuencia
de salida de longitud N m + n + log2 dmax .
m celdas
reloj
LFSR-1
x(t+m-1)
y(dt+m-1)
x(t)
......
......
X-OR
z(t)
y(dt)
d*reloj
LFSR-2
n celdas
4.2.6
FOR
i = 1, 2,.....
DO
min { L1 , L 2 }
x1i x 2i
i= 1
END FOR
donde las xki, con k = 1, 2,.. y 1 i min{ L1 , L2 } , son los contenidos de las celdas de ambos LFSR.
El periodo P de la secuencia de salida z(t) estar acotado inferiormente por la expresin:
P( z )
P1 P2
( q 1)
120
primos entre s (mcd(L1,L2) = 1), y adems que mcd(d1,P1) = mcd(d2,P2) = 1, donde P1 y P2 son los
periodos de los dos LFSR respectivamente.
El nmero de ceros en un periodo de la secuencia de salida ser ( 2 L1 1 1) ( 2 L2 1) , y la
diferencia entre el nmero de unos y ceros relativo a la longitud del periodo ser 1 2 L1 1 ,
considerando que los polinomios de realimentacin sean primitivos y L1 > L2.
4.3.1
El generador de Windmill
k ( t) = t
l( k )
de celdas que tiene el registro de desplazamiento del vano, de forma que l( k ) > max(n,m). Cada vano
tiene idnticas ( t ) y ( t 1 ) . La primera celda del LFSR de cada vano se toma para formar un
bloque de v bits y, para obtener la salida, stos se deben combinar. La forma en que los v smbolos se
combinan para producir la v-tupla final est controlada por una permutacin . As pues, la secuencia
z de salida es:
z = x0
( 0)
,..., x 0
( v 1)
, x 1
( 0)
,..., x 1
( v 1)
, xn
( 0)
,..., x n
( v 1)
j=1
j=0
121
Vano 0
......
Vano 1
......
......
... l0
()
....
Vano v-1
x i0
......
()
... l1
....
......
1 ....
xi
-1
(0 )
xi
-1
... l(v1)
......
....
x i1
Permutacin
v 1
i
(1 )
-1
x i (v-1)
( t 1 ) dos polinomios sobre GF(q) de grado positivo m < L/ y n < L/ respectivamente, de forma
que ( 0 ) = 1 y ( 0 ) 0 .
Con estas condiciones, si f(t) es un polinomio de realimentacin primitivo sobre GF(q),
existir una permutacin de los nmeros 0, 1,..., -1, y un conjunto de longitudes de los registros
de desplazamiento l definidas como:
( k ) = Lk + c
(mod )
l( k ) = ( ( k ) ( k + 1) + L ) /
donde k = 0, 1,..., -1, y c es un nmero fijo, la estructura [ ( t ) , ( t 1 ) ,l, , ] generar una msecuencia z de la siguiente forma:
1
z( t ) =
k=0
( k)
pk ( t )
f ( t)
pk = pk ( t ) = x 0k + j xik j t i +
j = 1i = 1
j1
j = 0i = l( k 1) + 1
j xik+j1t i + l( k 1)
122
Por tanto, si el polinomio f(t) es primitivo, la secuencia z(t) producida ser una m-secuencia.
Adems, si el grado de ( t 1 ) es igual a L / , entonces al menos uno de los vanos tendr su
entrada conectada a la salida del vano mediante la realimentacin hacia adelante. Esta conexin debe ser
considerada cuidadosamente, ya que puede dar problemas de temporizacin en aplicaciones prcticas. A
los polinomios de Windmill que no producen esta clase de conexiones, y evitan as problemas de
temporizacin, se les llama polinomios propios de Windmill, y cumplen la restriccin adicional
( grad ( t 1 ) + 1) L. Se puede hacer adems, y sin prdida de generalidad, que el parmetro c valga
0, de forma que los valores de l( k ) y ( k ) dependan slo de L y de . Veamos ahora el nmero de
polimomios de Windmill f(t), tanto irreducibles (Ni) como primitivos (Np), de que podemos disponer.
Para ello, los consideramos como un subconjunto de los polinomios de grado L con f(0)=1. Bajo esta
condicin, el nmero de polinomios de Windmill irreducibles que satisfacen que f(0)=1 ser de:
Ni =
21 + 2 L /
L
21 + 2 L /
F( L)
L
4.3.2
Las secuencias producidas por este generador [JANSE] se obtienen mediante la permutacin de
subsecuencias tanto de unos como de ceros de una determinada secuencia binaria peridica
123
l = 1 2
n2 n
4
Gk
k =1
k1
n 1
1 ser 2 n + 5 Cn 1 .
Veamos cmo generar este tipo de secuencias. Existe una forma eficiente de generarlas
mediante el uso de tcnicas de codificacin enumerativas para generar las permutaciones [COV73]. Sin
embargo, a pesar de su sencillez, la implementacin de este mtodo suele ser bastante compleja, por lo
que a continuacin se va a describir otro mtodo ms simple basado en LFSRs y contadores binarios
que permite generarlas de una forma ms sencilla. Este mtodo parte del hecho de que no es necesario
generar el conjunto C n entero, sino tan slo un subconjunto de ste, con secuencias que puedan
aparecer ms de una vez (por ejemplo, versiones desplazadas de una secuencia que ya apareci).
La figura 4.23 muestra un ejemplo de generador de permutacin de subsecuencias de orden 5,
capaz de generar 512 permutaciones diferentes de periodo 32. En dicha figura se pueden identificar dos
generadores de De Bruijn de orden 3 basados en registros de desplazamiento realimentados no
linealmente, uno para las subsecuencias de unos, y otro para las subsecuencias de ceros. Los
124
contenidos (estados) de las celdas de estos generadores de De Bruijn se permutan segn cul sea el
contenido de los registros de clave.
El vector inicial permite que las dos secuencias de estado producidas se puedan combinar de 8
formas posibles. Las secuencias de estado producidas se pueden entonces convertir en secuencias de
enteros mediante la utilizacin de la caja S. Esta caja S tambin se podra implementar de forma
separada para ambas secuencias de estados, y permitir entonces la realizacin de permutaciones
adicionales.
Tabla 4.4
Entrada
Salida
0
7
1
7
2
7
3
7
4
6
5
6
6
5
7
3
Tabla 4.5
Estado gener. DB
0 0 0
0 0 1
0 1 1
1 1 1
1 1 0
1 0 1
0 1 0
1 0 0
Entero
0
1
3
7
6
5
2
4
Gizq
1
0
2
6
7
4
3
5
Gder
2
3
0
7
1
5
4
6
Veamos con un ejemplo cmo opera este generador. Para ello, se muestra una tabla (tabla
4.5) que contiene los estados sucesivos de los generadores de De Bruijn y los correspondientes valores
enteros que servirn como entrada a la caja S teniendo en cuenta tanto la clave como el vector inicial.
Veamos el proceso por el que se obtiene la secuencia de salida de este generador.
125
G derecho:
10 . 2 . 6 . . .
G izquierdo: 2 . 3 . 0 . . .
c t:
7 . . . . 567
{s}:
0 1 0 1 0 1 1 1
. .
7 .
34
0 0
.
.
5
0
. 7 . . .
. . . . .
67 3456
0 0 1 1
. . 4 . .
. . 1 . .
7 . 67 6
1 1 1 0 1 1
.
5
7
0
3
.
.
0
.
.
6
1
. 5
4 .
767
0 0
. .
. .
5 6
1 1 0
. . 1
6 . .
7 . .
0
T
C
Clave
x1 x2 x 3
x 1 x2 x 3
C
Vector
Inicial
C
f
CAJA S
CONTADOR DE 3 BITS
CON PRESET
4.3.3
Los autmatas celulares han constitudo un campo de gran inters desde los primeros estudios
realizados por Von Neumann en los aos 40. En 1985, Wolfram [WOL86][WOLFR] propuso el uso
de autmatas celulares unidimensionales binarios con funcin de siguiente estado no lineal para
generar secuencias pseudoaleatorias. Un autmata celular consiste en N celulas dispuestas en lnea
recta tal como muestra la figura 4.24. Denotemos los valores de las clulas en el instante t como a1,
a 2 , ..., a N , con un valor para cada clula de 1 0. Estos valores se actualizarn en paralelo
(scronamente) en instantes de tiempo bien determinados de acuerdo con una regla fija que tendr la
forma
a' ( k ) = ( ak r , ak r + 1 ,..., ak + r )
donde r denota el alcance de los argumentos de entrada a . Cualquier implementacin prctica de un
autmata celular debe contener un nmero finito de celulas N. Estas presentan las disposiciones tpicas
en un registro circular con condiciones peridicas en los lmites, es decir, los ndices de los
126
argumentos de la regla del siguiente estado se calculan mdulo N. Una regla de actualizacin del
siguiente estado interesante es la que viene determinada por a' ( k ) = ak 1 ( ak ak + 1 ) .
Veamos cmo funciona el generador de Wolfram. Para ello supongamos que tenemos N
clulas (y posiblemente una funcin del siguiente estado ) cuyo estado inicial es
a( 0 ) = ( a1 ( 0 ) , a2 ( 0 ) ,..., a N ( 0 ) ) . El procedimiento es el siguiente:
FOR i = 1, 2,.....
DO
CELULA:
a1
a2
...
...
............
a N-1
N-1
aN
N
Adems, al someter las secuencias producidas por este generador a una batera de tests
estadsticos se observa que no presentan ninguna desviacin significativa respecto a las secuencias
verdaderamente aleatorias.
4.3.4
Este generador, propuesto por J.D. Golic [GOLIC] [GOL90], es capaz de producir secuencias
pseudoaleatorias mediente una funcin no lineal variante con el tiempo, aplicada sobre las celdas de
127
registros de desplazamiento con realimentacin lineal (LFSR). Su estructura puede verse en la figura
4.25, donde se observa que est constitudo por 3 LFSRs y una memoria de 2K posiciones de 1 bit.
Los tres LFSR deben tener longitudes mi (i=1,2,3) y polinomios de realimentacin primitivos. Los
pulsos de reloj se aplican a los tres al mismo tiempo y, si su estado inicial no es el estado todo ceros,
generarn m-secuencias de periodos Pi = 2mi 1 (i=1,2,3). El contenido inicial de la memoria puede
ser cualquiera. Las direcciones de lectura y escritura se tomarn de k celdas del LFSR2 y k celdas del
LFSR3 respectivamente, mientras que la salida del LFSR1 se usar para ir llenando la memoria. En
cada instante t (t = 0,1,2,...) se producirn las siguientes operaciones:
Paso 1
El bit de salida del generador, b(t), es ledo de la posicin de la memoria determinada por los
k bits obtenidos de las celdas del LFSR2 x(t).
Paso 2
El bit de salida del LFSR1, a(t), se escribir en la posicin de la memoria determinado por
los k bits obtenidos de las celdas del LFSR3 y(t).
Debido al estado inicial de la memoria, las secuencias producidas por este generador no tienen
por qu ser necesariamente peridicas, ya que presentarn prembulos. Para hacer que sean peridicas e
independientes del contenido inicial de la memoria, asumimos como instante de tiempo inicial t0 = P3
(de hecho, esto implica no considerar los prembulos que se producirn antes de que la secuencia entre
en una rutina peridica).
Para establecer unas cotas a la periodicidad y a la complejidad de las secuencias producidas por
este generador, debemos efectuar las siguientes restricciones:1 k min(m 2 ,m 3 ) y 2m 3 1 m1 . La
salida del generador b(t) se podr expresar de la siguiente forma [GOL90]:
P3 1
b( t ) = Cs ( t ) V s ( t )
s= 0
donde
t = 0,1,2,...
1 para t s = 0 mod P3
Cs (t ) =
0 para t s 0 mod P3
P1
b) mcd P2 ,
=1
mcd ( P1 , P2 )
c) mcd ( P3 , P1 P2 ) = 1
128
este generador ser capaz de producir P1P2P3 secuencias distintas para todos los estados iniciales no
nulos de los LFSRi (i = 1,2,3). El hecho de que este generador sea capaz de producir gran nmero de
secuencias pseudoaleatorias distintas lo hace potencialmente til para aplicaciones como la criptografa
o las comunicaciones spread spectrum, que se tratarn ms adelante.
k
MEMORIA DE 2 Bits
a(t)
LFSR 1
b(t)
ENTRADA
SALIDA
DIRECCIONES
x(t)
LFSR 2
LFSR 3
LECTURA
y(t)
ESCRITURA
SELECTOR DE
DIRECCIONES
4.4. Problemas
PROBLEMA 4.1 Se desea obtener una secuencia pseudoaleatoria de periodo P = 259.967. Establecer
los parmetros necesarios si se desea producirla mediante:
a) un generador de Jennings
b) un generador de umbral
c) un generador de Ruepple
d) un generador de marcha y espera de Beth-Piper
e) un generador multivelocidad de Massey-Ruepple
f) un generador de Pless como el de la figura 4.6
(Observar que 259967 = 127 2047).
PROBLEMA 4.2 Sea un generador de Geffe, como el de la figura 4.3, con 3 LFSRs de 3, 5 y 7
celdas respectivamente, y todos ellos con polinomio primitivo. Determinar el periodo y la complejidad
lineal de la secuencia producida.
PROBLEMA 4.3 Obtener a partir de la secuencia binaria s(t) = 11010111011011000101010011011:
a) una secuencia [2]-autodecimada
b) una secuencia [3]-autodecimada
c) una secuencia [1,2]-autodecimada
d) una secuencia [2,3]-autodecimada
129
4.5 Bibliografa
[AKLSG]
[ARA81]
[ARV77]
[BET85]
[BLU82]
[BLU84]
[BOY89]
[BRU46]
[BRU82]
[CHA84]
[CHA88]
AKL, S. G.; MEIJER, H. A Fast Pseudo Random Permutation Generator With Applications to
Cryptology. Dept. of comput. and Inform Science. Queens University. Kingston. Ontario,
Canada.
ARAZI, B. On the Synthesis of De Bruijn Sequences. Information and Control, Vol. 49, N 2,
May 1981, pp.81-90.
ARVILLIAS, A. C.; MARITSAS, D. G. Combinational Logicfree Realisations for High-Speed
m-sequences Generation. Electronic Letters, Vol. 13, n 17, 1977, pp.500-502.
BETH, T.; PIPER, F. The Stop-and-Go Generator. Advances in Criptology. Proc. Crypt'84.
Springer-Verlag Lecture Notes in Computer Science, N 209, pp. 88-92, New-York, 1985.
BLUM, L.; BLUM, M.; SHUB, M. Comparision of Two Pseudo Random Generators.
Proceedings of Crypto 1982.
BLUM, M. MICALLY, S. How to Generate Cryptographically Strong Seqeunces of Pseudo
Random Bits. SIAM J. Computing 13, 4, pp. 850-864, Nov. 1984.
BOYAR, J. Interferring Sequences Produced by Pseudo Random Number Generators. J. ACM,
Vol. 36, N. 1, Jan. 1989, pp. 129-141.
DE BRUIJN, N. G. A Combinational Problem. Nederl-Akad, Wetensch. Proc, Vol 49, pp 758754, 1946.
BRUER, J.O. On Nonlinear Combinations of Linear Shift Register Sequences. Proc. IEEE Int.
Symp, Jun. 1982, pp. 21-25.
CHAMBERS, W. G.; JENNINGS, S. M. Linear Equivalence of Certain BRM Shift-Register
Sequences. Electron. Lett., Vol. 20, pp. 1018-1019, Nov. 1984.
CHAMBERS, W. G. Clock-controlled Shift Registers in Binary Sequences Generators. IEEE
Proc. Vol. 135, Pt. E, N 1, January 1988.
130
[CHA88]
[CHA89]
[CHA89]
[COV73]
[DAV74]
[EBU76]
[EUR88]
[FUS91]
[GEF73]
[GOL82]
[GOL84]
[GOL85]
[GOL90]
[GOL90]
[GOLIC]
[GRO71]
[GN88]
[GN88]
[HER82]
[HOP79]
131
[HUR74]
[IEE80]
[JAN89]
[JAN90]
[JEN80]
[JEN82]
[KEY76]
[KNO76]
[KNU81]
[LEM71]
[LID86]
[MAC65]
[MACTE]
[MAR77]
[MAS84]
[MAY87]
[MEI92]
[ORE75]
[PLE77]
[PUI92]
132
[QUA74]
[RUB79]
[RUE86]
[RUE88]
[SIE84]
[SHA83]
[SMEET]
[STAFF]
[SUR78]
[TAT89]
[TSA91]
[WOL86]
[WOLFR]
[ZEN88]
[ZEN89]
[ZEN90]
[ZEN91]
QUAN, A. Y. C. A Note on High Speed Generation of Maximal Lenth Sequences. IEEE Trans.,
1974, C-23, pp.201-203.
RUBIN. Decrypting a Stream Cipher Based on JK flip-flops. IEEE Trans. on Comput., Vol. C28, Jul. 1979.
RUEPPLE, R. A. Analysis and Design of Stream Cipher. Springer-Verlag, NY, 1986
RUEPPLE, R. A. When Shift Register Clock Themselves. Proc. Eurocrypt'87. SpringerVerlag Lecture Notes in Computer Science, N 304, New York, 1988.
SIEGENTHALER, T. Correlation-Inmunity of Non-linear Combinig Functions for
Criptographic Applications. IEEE Trans. on IT, Vol. IT-30, N 5, 1984.
SCHAMIR, A. On the Generation og Cryptographically Strong Pseuod Random Sequences.
ACM Transactions on Computer Systems 1, 1, pp.38-44, Feb. 1983.
SMEETS, B. J. M.; CHAMBERS, W. G. Windmill Generators: A Generalization and an
Observation of How Many There Are.
STAFFELBACH, O.; MEIER, W. Analysis of Pseudo Random Sequences Generated by Cellular
Automata.
SURBCK, F.; WEINRITCHER, H. Interlacing Properties of Shift Register Sequences with
Generator Polynomials Irreducible Over GF(p). IEEE Trans. on Inform. theory, Vol. IT-24,
1978, pp. 386-389.
TATEBAYASHI, M.; MATSUZAKI, D. B.; NEWMAN, JR. A Cryptosystem Using Digital
Signal Processors for Mobile Communications. Proc. IEEE, 1989.
TSALIDES, PH.; YORK, T. A..; THANAILAKIS, A. Pseudorandom Number Generators for
CLSI Systems Based on Linear Cellular Automata. IEE Proceedings-E, Vol. 138, N 4, July
1991.
WOLFRAM, S. Random Sequence Generation by Cellular Automata. Advances in Applied
Mathematics 7, pp.123-169, 1986.
WOLFRAM, S. Cryptography with Cellular Automata. Advances in Cryptology-Crypto'85,
Proceedings, pp.429-432, Springer-Verlag, 1986.
ZENG, K. C.; HUANG, M. Q. On the Linear Syndrome Method in Cryptanalysis. Proc.
Crypto' 88, Springer-Verlag, Lecture Notes in Computer Science, N 403, New-York, 1988.
ZENG, K. C.; YANG, C. H.; RAO, T. R. N. On the Linear Consistency Test (LCT) in
Cryptanalysis with Applications. Proc. Crypto' 89, Springer-Verlag, Lecture Notes in
Computer Science, N 403, New-York, pp. 469-478, 1989.
ZENG, K. C.; YANG, C. H.; RAO, T. R. N. Large Primes in Stream-Cipher Cryptography.
Proc. Auscrypt' 90, springer-Verlag Lecture Notes in Computer Science, N 453, New-York,
pp.194-205, 1990.
ZENG; YANG; WEI; RAO. Pseudorandom Bit Generators in Stream-Cipher Criptography.
IEEE Computer. Feb. 1991.
133
5.0 Introduccin
Si bien es casi siempre difcil desarrollar un anlisis matemtico de las propiedades de las
secuencias pseudoaleatorias, es posible, sin embargo, hacer un estudio emprico y testear su
comportamiento con respecto a medidas de aleatoriedad bien conocidas. Esto permite determinar el
grado con el que se puede predecir el comportamiento de estas secuencias disponiendo de tan slo una
porcin de ellas, o a partir del conocimiento del mtodo de generacin.
En este captulo se expondrn una serie de medidas que se pueden realizar sobre las secuencias
pseudoaleatorias que se generen para evaluar su grado de aleatoriedad, es decir, para ver cunto se
parecen a las secuencias generadas mediante el lanzamiento sucesivo de monedas al aire. Para ello, se
estudiarn en primer lugar las propiedades de correlacin que presentan este tipo de secuencias. Esta
funcin representa una medida importante del grado de dependencia estadstica existente entre las
diversas partes de la secuencia (funcin de autocorrelacin), o la dependencia existente entre distintas
secuencias (funcin de correlacin cruzada).
Si bien en el captulo 1 ya se estudiaron los conceptos asociados con las secuencias
aleatorias, tambin se vern gran nmero de propiedades estadsticas asociadas a las secuencias
verdaderamente aleatorias, y que servirn para proponer una serie de tests estadsticos que permitirn
comprobar hasta qu grado las cumplen las secuencias que se hayan generado. Esto permitir disponer
de una potente herramienta para testear el grado de aleatoriedad de los generadores, ya que todos los
tests estadsticos descritos en este captulo han sido programados y se incluyen con el libro, y puede
verse el funcionamiento del programa en el ltimo captulo.
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
134
1)
Cada secuencia del conjunto debe ser fcilmente distinguible de cualquier versin de ella misma
desplazada en el tiempo.
2)
Cada secuencia del conjunto debe ser fcilmente distinguible de cualquier otra, y de cualquier
versin de ellas obtenida mediante un desplazamiento en el tiempo.
El significado del signo se debe a que no slo interesa la distinguibilidad entre y(t) y x(t),
sino tambin entre y(t) y -x(t). La primera integral de la segunda parte de la expresin anterior
representa la suma de las energas de las seales x(t) e y(t) ( 0 t T ). Por tanto, para energas de las
seales fijas, la seal y(t) ser fcilmente distinguible de x(t) y de -x(t) si, y slo si, la magnitud
T
r = 0 x ( t ) y( t ) dt es pequea. En comunicaciones, sistemas de navegacin y radar que emplean
receptores basados en la correlacin o filtros adaptados, r representa la salida del filtro adaptado a la
seal y(t) cuando la entrada es precisamente x(t). En sistemas de acceso mltiple CDMA, x(t) e y(t)
pueden representar las seales asignadas a dos transmisores diferentes, tal como se ver en el captulo
7, y entonces el parmetro r representar la medida de la interferencia (crosstalk) entre ambos canales.
Adems, segn se ha mencianado antes, tambin se requiere distinguibilidad entre x(t) e
y(t+ )para todo [ 0, T ] , si x(t) e y(t) son seales diferentes, y para todo ( 0, T ) si x(t) e y(t)
son la misma seal. Esto nos lleva proponer como medida de inters la que proporciona la funcin de
correlacin cruzada [SAR80][HEL76]:
x, y ( t ) = 0 x ( t ) y( t + ) dt
T
Hasta aqu se ha considerado que tanto x(t) como y(t) son seales reales. Si se considerasen
seales complejas, bastara modificar la ecuacin anterior sustituyendo y(t) por su conjugada compleja.
135
Sin embargo, debido a la naturaleza digital de los sistemas que generalmente emplean las secuencias
pseudoaleatorias, el anlisis de la distinguibilidad que nos interesa es el que hace referencia a las
seales de tipo discreto. Las seales que se usarn en la prctica consistirn en secuencias de pulsos
elementales limitados en el tiempo de forma que:
x ( t ) = x n ( t nT c )
n=
donde ( t ) es una foma de onda con forma de pulso y T c es la duracin de dicho pulso. Si x(t) =
x(t+T) para todo t, entonces T debe ser un mltiplo de T c, y la secuencia discreta {xn} deber ser
peridica con un periodo que ser divisor de N = T/Tc . Por tanto, trataremos ahora secuencias discretas
peridicas que representaremos por xn e yn.
Podemos definir la funcin de correlacin peridica entre las secuencias {xn} e {yn} como:
N1
Cx, y ( l ) = x n yn + l
n= 0
5.1.1
136
Cmax
K 1 2
max {Ca , Cc } N
NK 1
Veamos del mismo modo algunas propiedades de la funcin de correlacin cruzada entre dos
m-secuencias. Para ello, consideremos las m-secuencias {xn} e {yn}, ambas con periodo N = 2n-1. La
correlacin cruzada entre estas dos m -secuencias tambin ser peridica de periodo N ,
Cx, y ( l ) = Cx, y ( l + N ) , y se cumplir que Cx, y ( l ) N para todo l . La funcin Cx, y ( l ) ser
siempre un entero impar. Helleseth [HEL76] demuestra que para todo l , Cx, y ( l ) + 1 es mltiplo de 8,
es decir, Cx, y (l ) = 1 mod 8 , excepto en el caso de que x e y estn generados usando polinomios
recprocos, en cuyo caso Cx, y ( l ) + 1 ser mltiplo de 4. Adems demuestra que:
N1
Cx, y ( l ) = +1
l=0
de donde se puede deducir que para valores del periodo N grandes, el valor medio de Cx, y ( l ) ser muy
cercano a cero. Otra propiedad sobre la funcin de correlacin cruzada de m-secuencias es que cumple:
N1
[ Cx, y ( l ) ] = N 2 + N 1 = 22n 2n 1
l=0
de donde se deduce que el valor cuadrado medio de Cx, y ( l ) estar muy cercano a 2n , y que Cx, y ( l )
exceder 2n 2 1 para al menos un valor de l . Sin embargo, Sidelnikov [SID69] da una cota ms
restrictiva que implica que para al menos un entero l , se cumple que:
( n + 1)
Cx, y ( l ) > 1 + 2
(1)
137
t ( n ) = 1 + 2
(donde p representa la parte entera del nmero real p), y si n 0mod 4,
entonces existirn parejas de m-secuencias con funciones de correlacin cruzada con tres valores que
sern -1, -t(n) y t(n)-2 [PUR77]. A este tipo de funcin se la denomina funcin de correlacin cruzada
preferente con tres valores, y a las m-secuencias que las producen pares preferentes de m-secuencias.
Si Cc denota la mxima magnitud de la correlacin cruzada para un determinando par de msecuencias {x} e {y}, ambas de periodo 2n-1, n 3, se puede concluir que:
1)
2)
3)
Cuando n sea impar, la cota definida en (1) junto con el hecho de que Cc sea un entero impar,
implicar que Cc t ( n ) para cualquier par de m-secuencias. Cuando n sea par, Cc t ( n ) -2 para
cualquier par de m-secuencias.
Si bien hasta aqu se han analizado las propiedades de correlacin que presentan las msecuencias, a la hora de disear generadores de secuencias pseudoaleatorias debe ser un objetivo
fundamental el que las secuencias que stos generen, tengan un comportamiento lo ms aproximado
posible al que presentan stas. Esto, tal como se ver en el captulo 7, es fundamental para ciertas
aplicaciones como el cifrado en flujo. Sin embargo, para otras aplicaciones de telecomunicaciones,
como la modulacin en spread spectrum o el acceso mltiple por divisin de cdigo (CDMA), el
diseo de los conjuntos de secuencias peridicas requiere que stas cumplan adems otros requisitos que
afectan a las propiedades de la correlacin no peridica. Esta propiedad se ver en el apartado siguiente.
5.1.2
En muchas aplicaciones que emplean secuencias peridicas, cada una de ellas est modulada de
alguna forma por una seal de datos. Una forma muy comn de hacer esto, es que una seal de datos
binarios determine la polaridad de la secuencia binaria. Esto puede verse como una modulacin binaria
de amplitud (ASK) que se usa en sistemas de spread-spectrum basados en secuencia directa. Sin
embargo, en muchos sistemas hay ms de una de estas seales moduladas transmitidas al mismo
tiempo y en la misma banda de frecuencia. En general, la nica forma de hacer distinguibles para el
receptor estas seales es asignar a cada transmisor una nica secuencia llamada secuencia de firma.
138
Estas secuencias, tal como se ver en el captulo 7, deben tener buenas propiedades de
correlacin. Para estudiar las propiedades de este tipo de secuencias, suele ser de gran utilidad definir la
correlacin no peridica (o tambin aperidica impar) entre dos secuencias complejas {x} e {y},
ambas de periodo N, como:
CAx, y
N 1l
0l N 1
x j yj +1
=0
Nj1+l
= x j l y j
1 N l < 0
j=0
l N
0
N ( K 1)
( 2NK K 1)
139
secuencia pseudoaleatoria bajo estudio. En la prctica, se suele usar una batera de 10 12 de estos
tests estadsticos. Sin embargo, cuantos ms apliquemos sobre la secuencia, ms informacin
obtendremos sobre su comportamiento aleatorio, o hasta qu punto cumple la propiedad de
aleatoriedad, lo que nos permitir rechazar al generador que la produjo si falla al pasar la mayora de
ellos. Se describen por tanto los tests estadsticos ms tiles, y se muestran los algoritmos que los
implementan y qu tipo de defecto revela cada uno de ellos.
5.2.1
Los tests estadsticos se usan para detectar posibles defectos estadsticos en los generadores de
bits aleatorios. Para ello, examinan una muestra de la secuencia de una cierta longitud N, y rechazan el
generador que la produjo cuando ciertas propiedades de la muestra de la secuencia indican una posible
no aleatoriedad (por ejemplo, que el nmero absoluto de ceros y unos difiera considerablemente).
Veamos el fundamento de este tipo de tests.
5.2.2
Tests de hiptesis
140
La probabilidad de que se produzca un error de este tipo se suele denotar por . Un resumen
de estos posibles casos a la hora de realizar el test de hiptesis se puede ver en la tabla 5.1, para una
determinada hiptesis H sobre la distribucin de la variable aleatoria que se analiza.
Resultado de Test
H rechazada
H aceptada
Situacin
H es falsa
Decisin correcta
Error de tipo II
real
H es correcta
Error de tipo I
Decisin correcta
Uno de los objetivos que se deber tener en cuenta a la hora de realizar el test de hiptesis ser
minimizar y , es decir, las probabilidades de que nos equivoquemos a la hora de decidir sobre la
validez o no de la hiptesis que hemos realizado. Desafortunadamente, si disminumos una de las dos
probabilidades, la otra aumentar, y la nica manera de hacer que el riesgo de cometer ambos errores
disminuya, consiste en basar nuestra decisin en una muestra lo ms grande posible. La mayora de las
veces, lo mejor ser fijar a un valor aceptable y fijar la regla de decisin de forma que minimice .
Podemos definir una metodologa general para realizar un test de hiptesis de la siguiente forma:
Paso 1:
Paso 2:
Establecer un riesgo aceptable de rechazar esta hiptesis suponiendo que fuera correcta (es
decir, asignar un valor a ).
Paso 3:
Paso 4:
Paso 5:
Determinar una regin crtica en la cual la hiptesis H se rechace el 100% de las veces
cuando sea verdadera.
Paso 6:
Si bien existen diversos mtodos para realizar el test de hiptesis, como el test-t [GRAYB],
el test-F [GRAYB] o el test de bondad de aproximacin chi-cuadrado [KNU67], nos vamos a centrar en
este ltimo, ya que la mayora de tests estadsticos se basan en l.
141
Este test [KNU67] consiste en un mtodo bsico de muestreo estadstico que se usa en
conexin con otros tests. Sin embargo, su aplicacin supera ampliamente la mera inspeccin de
secuencias, ya que su utilidad se extiende a otras muchas reas que necesitan de la estadstica, como la
sociologa, el marketing etc. El test chi-cuadrado realiza una comparacin entre los valores observados
y los valores esperados para la distribucin de un conjunto de observaciones (muestra) realizadas sobre
la variable aleatoria que estudiamos. La comprobacin de la hiptesis de que la distribucin esperada
(E) y la observada (Y) a partir de una muestra consistente en n observaciones sern la misma se realiza
mediante el test estadstico:
( Yi Ei )
Ei
i= 1
n
2 =
Veamos cmo funciona mediante un ejemplo. Se tienen dos dados y se quiere comprobar si
estn o no trucados. Para ello se realiza un experimento consistente en lanzar sucesivamente los dos
dados suponiendo a priori que stos no estn trucados, es decir, que son independientes y con lados
equiprobables. Lo que pretendemos es averiguar qu distribucin seguir la suma s de los valores
observados con ambos dados al lanzarlos un nmero determinado de veces n, y compararla con la
distribucin que seguiran si realmente no estuvieran trucados, y que podemos calcular tericamente
con facilidad. La siguiente tabla muestra estas probabilidades esperadas para esta suma de los dos
dados:
valor de s =
probabilidad ps =
2
3
4
5
6
7
8
1/36 1/18 1/12 1/9 5/36 1/6 5/36
9
1/9
10
11 12
1/12 1/18 1/36
Si se lanzan los dados n veces, debera obtenerse un valor determinado de la suma nps veces
en media. Supongamos que se tiran los dos dados 144 veces (n = 144) y que se obtienen los siguientes
resultados:
valor de s =
2 3
valores observados Y s = 2 4
valores esperados nP s = 4 8
4
10
12
5
6
12 22
16 20
7
29
24
8
21
20
9
15
16
10
14
12
11
9
8
12
6
4
(2)
Si se realizan 144 lanzamientos de los dos dados, se podrn obtener 36144 secuencias posibles
y todas igualmente probables. Cmo se podra saber si los dados estn o no trucados? Una de las
secuencias anteriores ser la secuencia formada por 144 doses.
Sin embargo, si saliese esta secuencia, probablemente se pensara que los dados estn
trucados, aunque sea tan probable como cualquier otra. No se puede, pues, responder a esto con un s o
no definitivo, pero s se puede dar una respuesta probabilstica que se base en decir cun probables o
improbables son ciertos eventos. Para ello, se puede calcular la estadstica chi-cuadrado de las
cantidades observadas Y2,..., Y12 en el experimento considerado, que para los valores obtenidos en (2)
valdr:
142
2 =
( 2 4) 2
4
( 4 8)2
8
+... +
( 6 4) 2
4
= 7, 14583
Una manera de proceder sera considerar los cuadrados de las diferencias entre los valores
observados y los valores esperados, es decir:
2 = (Y 2 - nP 2 ) 2 + (Y 3 - nP 3 ) 2 + ... + (Y 12 - nP 12 ) 2
(3)
2
Si el par de dados no es bueno, el valor de debera salir relativamente elevado. Pero, para
2
2
cualquier valor de nos podemos preguntar: Cul es la probabilidad de que sea elevado? Si esta
probabilidad es muy pequea, por ejemplo 1/100, sabremos que slo una vez entre 100 los dados darn
unos valores alejados de los esperados, por lo que habrn motivos fundados de sospecha. Notar que
2
incluso unos dados buenos podran dar un valor alto de una de cada 100 veces, por lo que una
persona cauta repetira el experimento para ver si este valor elevado de se repite.
La estadstica de (3) da un peso igual a todos los elementos pero, por ejemplo, el 7 ocurre
aproximadamente seis veces ms frecuentemente que el 2.
Por tanto, una buena estadstica sera aquella que diese al componente (Y 7 - nP 7 ) 2 del
sumatorio de la expresin (3) un sexto de la importancia que se diera a (Y 2- nP 2)2, por lo que se
tendra:
2
2 =
( Y 2 nP2 )
( Y 3 nP3 )
( Y nP12 )
+
+ ... + 12
nP2
nP3
nP12
(4)
2
La cuestin ahora es determinar si el valor 7,14583 obtenido es un valor elevado de
improbable. Para ello, se recurrir a la utilizacin del mtodo general chi-cuadrado.
Paso 1
Paso 2
Paso 3
Si Ys son el nmero de observaciones que han cado dentro de la categora s, calcular las
2
143
( Y s nPs )
nPs
s= 1
k
2 =
Elegir un valor para y realizar el test de hiptesis, rechazando que la hiptesis que se
haba asumido y la obtenida a partir de las muestras son la misma si:
2 2( 1 , )
2
donde 2 ( 1 , ) es el valor que obtiene la distribucin para v grados de libertad
y un nivel de significancia .
Puesto que (Ys - nPs)2 = Ys2 - 2nPsYs + n2Ps2 y usando el hecho de que:
Y 1 + Y 2 + ... + Y k = n
P 1 + P 2 + ... + P k = 1
(5)
la expresin del test chi-cuadrado de (4) se puede calcular ms fcilmente mediante la expresin:
2 =
1 k Y s2
n
n s = 1 Ps
Para realizar el paso 5 ser preciso ayudarse de una tabla (tabla 5.2), que muestra los valores
de la distribucin chi-cuadrado1 para diferentes grados de libertad v. La fila que se debe usar es la de v =
k-1, ya que el nmero de grados de libertad es uno menos que el nmero de categoras (intuitivamente
esto es porque Y1, Y2,..., Yk no son totalmente independientes, ya que segn se ve en la ecuacin (5)
se puede calcular una de ellas si se conocen las dems.
El mecanismo de la tabla se puede establecer de la siguiente manera: si se entra en la fila con
2
v grados de libertad y la columna con probabilidad p, y en esa posicin est un nmero x, ser
mayor que x con probabilidad p.
Otra cuestin importante se refiere a cul debe ser el tamao de n. Una buena regla es tomar n
lo suficientemente grande como para que cada uno de los valores esperados nP s valga 5 o ms.
Observar que en el ejemplo visto nP2 vale slo 4, violando esta regla.
Una ltima cuestin interesante sobre este test es si conviene o no repetirlo diversas veces, es
decir, tendremos suficientes garantas con los resultados obtenidos de aplicar un solo test?. Lo cierto
es que estaremos ms seguros si somos capaces de repetir el test, ya que no olvidemos que el resultado
2
que nos ofrece es probabilstico (la probabilidad de que suceda como mnimo es p). Adems, si
144
=1
=2
=3
=4
=5
=6
=7
=8
=9
= 10
= 11
= 12
= 15
= 20
= 30
= 50
p = 99%
0,00016
0,00201
0,1148
0,2971
0,5543
0,8720
1,239
1,646
2,088
2,558
3,053
3,571
5,229
8,260
14,95
29,71
p = 95%
0,00393
0,1026
0,3518
0,7107
1,1455
1,635
2,167
2,733
3,325
3,940
4,575
5,226
7,261
10,85
18,49
34,76
p = 75%
0,1015
0,5753
1,213
1,923
2,675
3,455
4,255
5,071
5,899
6,737
7,584
8,438
11,04
15,45
24,48
42,94
-2,33
-1,64
-0,675
>30
xp
p = 50%
0,4549
1,386
2,366
3,357
4,351
5,348
6,346
7,344
8,343
9,342
10,34
11,34
14,34
19,34
29,341
49,33
p = 25%
1,323
2,773
4,108
5,385
6,626
7,841
9,037
10,.22
11,39
12,55
13,70
14,84
18,25
23,83
34,80
56,33
4
2
aproximadamente + 2 x p + x 2p
3
3
0,00
0,675
p = 5%
3,841
5,991
7,815
9,488
11,07
12,59
14,07
15,51
16,92
18,31
19,68
21,03
25,00
31,41
43,77
67,50
p = 1%
6,635
9,210
11,34
13,28
15,09
16,81
18,48
20,09
21,67
23,21
24,73
26,22
30,58
37,57
50,89
76,15
1,64
2,33
145
est sujeto a restricciones segn cul sea el valor de n, y para cada n se puede encontrar esa
probabilidad con la misma fiabilidad.
Si se realizan N observaciones independientes de una variable aleatoria X, y se obtienen los
valores X1, X2,..., XN , se puede crear la funcin de distribucin emprica FN(x):
FN(x) = (nmero de X1, X2,..., XN que son x)/N
A medida que N crezca, FN(x) ser una mejor aproximacin a la funcin de distribucin real
F(x). Los generadores de secuencias malos darn funciones de distribucin empricas que no se
aproximarn a F(x) demasiado bien. Para realizar este test, se deben calcular las siguientes estadsticas:
K N+ =
K N =
(6)
donde K N+ mide la desviacin mxima cuando FN es mayor que F y K N mide la desviacin mxima
cuando FN es menor que F. El factor N se pone porque para x fijos de forma que la desviacin
estndar de FN (x) respecto a F(x) es proporcional a 1/ N . Por tanto, este factor magnifica las
estadsticas K N+ y K N de forma que sean independientes de N. Al igual que ocurra en el test chicuadrado, podemos comparar K N+ y K N en una tabla de porcentajes (tabla 5.3) para ver si son
significativamente altos o bajos. Como las estadsticas definidas en (6) no estn adaptadas para los
clculos mediante un ordenador, ya que buscan un mximo entre una gran cantidad de valores (x!) y el
hecho de que F(x) es creciente y de que FN (x) se incrementa solamente en pasos finitos, hace
conveniente ver una forma ms simple para evaluar las estadsticas de K N+ y K N . Los pasos son:
Paso 1
Paso 2
Paso 3
Calcular j/N (0 j N) y guardarlo en otro vector. Estos son los valores con los que se
compararn las funciones.
Paso 4
Paso 5
N max 1 j N
( )
F xj
N
K N =
j 1
N max 1 j N F x j
( )
P K N t (n) = t
NN
N
0 k t k
k
N k 1
( k t ) (t + N k )
(7)
146
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
=1
=2
=3
=4
=5
=6
=7
=8
=9
= 10
= 11
= 12
= 15
= 20
= 30
n > 30
p = 99%
0,01000
0,10400
0,01699
0,01943
0,02152
0,02336
0,02501
0,02650
0,02786
0,02912
0,03028
0,03137
0,03424
0,03807
0,04354
0,07089
-0,15/ n
p = 95%
0,05000
0,06749
0,07919
0,08789
0,09471
0,1002
0,1048
0,1086
0,1119
0,1147
0,1172
0,1193
0,1244
0,1298
0,1351
0,1601
-0,14/ n
p = 75%
0,2500
0,2929
0,3112
0,3102
0,3249
0,3272
0,3280
0,3280
0,3274
0,3297
0,3330
0,3357
0,3412
0,3461
0,3509
0,3793
-0,15/ n
p = 50%
0,5000
0,5176
0,5147
0,5110
0,5245
0,5319
0,5364
0,5392
0,5411
0,5426
0,5439
0,5453
0,5500
0,5547
0,5605
0,5887
-0,15/ n
p = 25%
0,7500
0,7071
0,7539
0,7642
0,7674
0,7703
0,7755
0,7797
0,7825
0,7845
0,7863
0,7880
0,7926
0,7975
0,8036
0,8326
-0,16/ n
p = 5%
0,9500
1,0980
1,1017
1,1304
1,1392
1,1463
1,1537
1,1586
1,1624
1,1658
1,1688
1,1714
1,1773
1,1839
1,1916
1,2239
-0,17/ n
p = 1%
0,9900
1,2728
1,3589
1,3777
1,4024
1,4144
1,4246
1,4327
1,4388
1,4440
1,4484
1,4521
1,4606
1,4698
1,4801
1,5174
-0,20/ n
Se presenta otra vez el problema de la eleccin del nmero de observaciones n. A pesar de que
elegir valores de n grandes har que ambas distribuciones se parezcan ms, tender a promediar
(encubrir) comportamientos no aleatorios locales. Por otra parte, el hecho de que se tengan que
almacenar y ordenar las observaciones en orden ascendente, hace preferible la eleccin de valores de N
comparativamente pequeos. Un buen compromiso sera tomar n igual, por ejemplo, a 1.000, y
+
+
+
realizar el experimento en diferentes partes de la secuencia obteniendo K1000
(1), K1000
(2),..., K1000
(r) ,
y aplicar entonces otro test KS a los resultados obtenidos. Este mtodo consiste en usar diversos tests
con valores de N de tamaos moderados y combinar sus resultados con otro test de KS que tiende a
detectar comportamientos no aleatorios tanto locales como globales.
2
El test de KS se puede usar en combinacin con el test chi-cuadrado ( ). Esta forma de
proceder ofrece mayor calidad de decisin sobre varios resultados obtenidos al aplicar el test chicuadrado que hacer tres de estos tests y mirar independientemente cuntos de ellos resultan
sospechosos. Suponer para ello que se realizan 10 tests chi-cuadrado distintos sobre diferentes partes de
2
2
2
una secuencia aleatoria y que se obtienen los valores 1 , 2 ,..., 10 . No es una buena filosofa
contar simplemente cuntos resultados son sospechosos (por arriba o por abajo, aunque este
procedimiento trabaja en casos extremos y por tanto, valores muy grandes o muy pequeos pueden
significar que la secuencia tiene no aleatoriedades locales muy acentuadas). Un mtodo ms til sera
dibujar la distribucin emprica de estos 10 valores, y compararla con la distribucin correcta (esta
147
distribucin se puede encontrar en la tabla 5.3). Esto da una conclusin acerca de los resultados del test
+
5.2.3
148
( )
fTf xN =
149
2 N
N
xi
2
N i=1
Paso 1
Paso 2
Paso 3
Tabular la frecuencia dentro de cada intervalo para cada uno de los M grupos.
Paso 4
Comparar los resultado de los M grupos entre ellos y con los valores esperados
(distribucin uniforme continua) usando el test chi-cuadrado con = 1 grados de libertad.
150
Puesto que cada bloque consta de L bits, evidentemente las categoras estarn en el rango 0
i 2L-1. A partir de esta tabla se puede obtener la funcin de distribucin de probabilidad f T s como
[GRAYB]:
( )
f Ts s N =
L2 L 2 1
N
ni s N L
N i=0
L2
L
( )
Paso 1
Generar una secuencia de M grupos consecutivos cada uno con N nmeros pseudoaleatorios.
Paso 2
Paso 3
Para cada grupo, construir una matriz de tamao k k e inicializarla con ceros.
Paso 4
Paso 5
Cuando se haya rellenado la matriz para cada grupo, comparar los resultados obtenidos con
cada uno de los M grupos entre ellos y con los valores esperados usando un test chicuadrado (cada par debe ser equiprobable).
Unos valores interesantes para pasar este test son M = 10 y N = 100. Este test se puede
extender de forma que permita examinar la equidistribucin de grupos de 3, 4,... bits.
El nmero de bits necesarios para obtener un test vlido en estos casos ser, evidentemente,
mayor.
151
Este test [KNU67] comprueba que las ternas de bits (L = 3) estn equidistrbuidas. En este
caso, el nmero de categoras ser k = 8 (ya que con 3 bits se pueden obtener 8 combinaciones), por lo
que se debe aplicar un test chi-cuadrado con = 7 grados de libertad, y la probabilidad de que una
observacin caiga dentro de cada categora ser de 1/8. Una vez ms, se deber realizar un nmero
determinado de tests chi-cuadrado (por ejemplo 10) sobre diversas partes de la secuencia, y sobre estos
resultados aplicar un test de Kolmogorov-Smirnov para obtener una indicacin fiable de si la secuencia
pasa o no el test.
Los tests sucesivos se pueden generalizar para cuartetos (L = 4), quntuplas (L = 5), sextuplas
(L = 6), etc, aplicando entonces tests chi-cuadrado con k = dL categoras con probabilidad 1/dL para cada
categora, con d como base de los nmeros que constituyen la secuencia que se estudia (d = 2 para el
caso binario).
C) Test de brechas
Este test [KNU67] se aplica sobre la secuencia {xn} = x0, x1, x2, ... para examinar la longitud
de las brechas entre ocurrencias de xj en un cierto rango. Si y son dos nmeros reales tales que 0
< 1, queremos considerar las longitudes de subsecuencias consecutivas xj, xj+1,..., xj+r, en
las que xj+r caiga entre y , y las otras xs caigan fuera (esta subsecuencia de r + 1 nmeros
representa una brecha de longitud r).
El siguiente algoritmo, aplicado sobre la secuencia {xn}, cuenta el nmero de brechas de
longitudes 0, 1,..., t - 1 y el nmero de brechas de longitud t, hasta que se hayan tabulado n
brechas.
P1. Inicializacion
No
P6. Se han encontrado n brechas ?
P3. x j < ?
No
P4. Incrementar r
Si
Si
Este algoritmo es similar a los que se usarn en el test colector de cupones y el test de
subsecuencias que se vern posteriormente. Para ello se utiliza un vector, CONT[r] con 0 r t,
que se usar para llevar el cuenteo de las brechas con longitudes entre 0 y t.
152
Paso 1
[Inicializar] Hacer j
Paso 2
[Poner r a cero] r
Paso 3
Paso 4
Paso 5
Paso 6
[Se han encontrado n brechas?] Incrementar s por uno. Si s < n, volver al paso 2.
0.
Despus de realizar este algoritmo, se puede aplicar un test chi-cuadrado a los t = k+1 valores
CONT[0], CONT[1], ..., CONT[t], usando para ello las siguientes probabilidades: p0 = p, p1 = p(1-p),
p2 = p(1-p)2,..., pt-1 = p(1-p)t-1, pt = p(1-p)t, donde p = - y es la probabilidad de que x j < .
Una regla prctica consiste en elegir los valores de n y t de forma que cada uno de los valores de
COUNT[r] sea igual o mayor que 5.
El test de brechas de aplica a menudo con = 0 o = 1 para facilitar el test en el paso 3. Los
casos especiales en los que ( , )= (0,1/2) o (1/2,1) dan lugar a los tests llamados normalmente
carreras por debajo de la media (runs below the mean) y carreras por encima de la media (runs above
the mean) respectivamente, cuyo listado en lenguaje C se puede ver en el programa que se adjunta con
el libro.
D) Test de poker (test de particiones)
Este test estadstico [GRAYB][KNU67] examina grupos sucesivos de 5 nmeros de la
secuencia pseudoaleatoria. Para ello, considera n grupos de cinco enteros sucesivos, (y5j, y5j+1,...,
y 5j+4), 0 j < n, y observa en cul de las siguientes categoras cae cada quntupla:
Todas diferentes:
Una pareja:
Doble pareja:
Tro:
Full:
Poker:
Repoker:
abcde
aabcd
aabbc
aaabc
aaabb
aaaab
aaaaa
Entonces se aplica un test chi-cuadrado basado en el nmero de quntuplas que hayan cado
dentro de cada categora. Sin embargo, existe una versin de este test ms simple que facilita su
153
todas diferentes.
una pareja.
doble pareja o tro.
full o poker.
repoker.
d ( d 1) ( d r + 1) k
dk
r
k
donde representa los nmeros de Stirling de segunda clase [KNUTH], que indican el nmero de
r
formas de hacer particiones de r subconjuntos disjuntos no vacos sobre un conjunto de k elementos.
4
Por ejemplo, el conjunto {1, 2, 3, 4} se puede partir en dos subconjuntos de = 7 formas
2
distintas: {1, 2, 3}{4}; {1, 2, 4}{3}; {1, 3, 4}{2}; {2, 3, 4}{1}; {1, 2}{3, 4}; {1, 3}{2, 4} y {1, 4}{2,
3}. Veamos cmo calcular estos nmeros. Los nmeros de Stirling son los coeficientes implicados en
la transformacin entre un polinomio expresado en potencias de k y su representacin en forma de
coeficientes binomiales. Actualmente no existe un acuerdo global sobre la notacin de estos nmeros.
La notacin usada aqu, considera todos los nmeros de Stirling como no negativos, lo que hace ms
sencillo recordar su analoga con los coeficientes binomiales. Los nmeros de Stirling de primera
k
especie se usan para convertir coeficientes binomiales en potencias:
r
x
n
n n 1
n
n
n ! = x ( x 1) ( x n + 1) = x n
x
+ + ( 1)n = ( 1)n k x k
n
n
n 1
0 k
k
donde:
n n( n 1) ( n k + 1)
=
k
k ( k 1) ( 1)
mientras que los de segunda especie, y que son los que se calculan para realizar los tests estadsticos
que se estudian, se usan para convertir potencias en coeficientes binomiales:
n x
n x
n x
n x
x n = n !+ + 1!+ 0 ! = k !
k k k
0 0
1 1
n n
154
La tabla 5.4 muestra el tringulo de Stirling para la segunda especie, que en cierta forma es
anlogo al tringulo de Pascal, y permite el clculo de los primeros valores de los nmeros de Stirling
de segunda especie. Para calcular otros valores se puede usar la siguiente frmula de recurrencia:
n
n 1 n 1
= m
+
m
m m 1
si n > 0.
n
=1
1
y
n
n 1
1
=2
2
si n > 0.
n=0
n=1
n=2
n=3
n=4
n=5
n=6
n=7
n=8
n
0
n
1
n
2
n
3
n
4
n
5
n
6
n
7
n
8
1
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
3
7
15
31
63
127
0
0
0
1
6
25
90
301
966
0
0
0
0
1
10
65
350
1701
0
0
0
0
0
1
15
140
1050
0
0
0
0
0
0
1
21
266
0
0
0
0
0
0
0
1
28
0
0
0
0
0
0
0
0
1
155
Veamos el algoritmo que realiza esto: dada una secuencia de enteros y0, y1,..., con 0 y j <
c, este algoritmo cuenta las longitudes de n segmentos consecutivos que recogen el conjunto completo
de enteros. Al finalizar el algoritmo, el vector CONT[r] contiene el nmero de segmentos de longitud
r, para 0 r < t, y CONT[t] contendr el nmero de segmentos con longitud t.
Paso 1
[Inicializar] Poner j
Paso 2
Paso 3
Paso 4
Paso 5
Paso 6
El vector OCURS mantiene el conteo de los segmentos (nmero de ocurrencias). Una vez el
algoritmo anterior ha contado n segmentos se debe aplicar un test chi-cuadrado con k = t- c + 1 grados
de libertad sobre CONT[c], CONT[c + 1],..., CONT[t], usando las probabilidades:
pr =
c ! r 1
c r c 1
c r<t
Para obtener estas probabilidades, basta observar que si qr indica la probabilidad de que una
subsecuencia de longitud r est incompleta (es decir, que tenemos una r-tupla de elementos que no
poseen todos y cada uno de los c valores). En este caso, las probabilidades anteriores se pueden calcular
con las relaciones: pr = qr-1- qr para d r < t, y pt = qt - 1.
F) Test de distancia
Este test [GRAYB] considera a pares sucesivos de una secuencia de nmeros pseudoaleatorios
entre 0 y 1 como coordenadas de puntos dentro del cuadrado unidad (cuadrado de lado 1). Si la secuencia
de que se dispone es {x n } = x 1 , x 2 , x 3 ,..., x n , los puntos (x 1 ,x 2 ), (x 3 ,x 4 ),..., (x n-1 ,x n ) se pueden
representar en un plano con ejes x-y. Se puede calcular entonces la distancia eucldea D2 entre todos
los puntos, obtenida a partir de la secuencia {x n }. Si estos puntos estuviesen aleatoriamente
distribudos dentro del cuadrado unidad (lo que ocurrira si la secuencia fuese verdaderamente aleatoria)
la probabilidad de que los valores observados de D2 fuesen menores o iguales que un valor determinado
156
8 3
k2
para
k 1, 0
k k 2 +
3
2
F(k ) =
1
3
1
8
k2
4k arc sec k
+ ( 2)k + 4( k 1) 2 + ( k 1) 2
3
2
3
para 1,0 k 2,0
Segn esto, F(0,0) = 0, F(0,25) = 0,483, F(0,5) = 0,753, F(0,75) = 0,905, F(1,0) = 0,975,
F(1,5) = 0,999 y F(2,0) = 1,0. Mediante el uso de esta distribucin, se pueden calcular los valores
tericos de las frecuencias para los valores de D 2 en cualquier intervalo deseado. Esto servir para
realizar un test basado en la distancia eucldea, comparando los valores de frecuencias observados con
los valores tericos obtenidos a partir de la distribucin anterior y aplicando un test chi-cuadrado.
G) Test de permutaciones
Este test [KNU67], que es una generalizacin del test de poker, divide la secuencia que se
quiere comprobar en n grupos de t elementos cada uno, es decir, (xjt, xjt+1,..., xjt+t-1), 0 j < n. Los
elementos de cada grupo pueden tener t! reordenamientos posibles. Lo que se hace es contar el nmero
de veces que aparece cada reordenamiento y se aplica un test chi-cuadrado con k = t! grados de libertad y
con una probabilidad de 1/t! para cada reordenamiento. Por ejemplo, si t = 3 tendremos 6 categoras,
determinadas segn x 3j < x 3j+1 < x 3j+2, o x 3j < x 3j+2 < x 3j+1,..., x 3j+2 < x 3j+1 < x 3j.
En este test se asume que no puede haber un nmero de la secuencia (xs) seguido igual, por
lo que conviene eliminar las repeticiones de nmeros consecutivos que aparecen en la secuencia antes
de pasar el test. Para realizar este test se usa el siguiente algoritmo: dado un conjunto de elementos
distintos (x1, x2,..., xt), se computa un entero f(x1, x2,..., xt), de forma que 0 f(x 1 , x 2 ,..., x t ) < t! ,
y f(x 1,..., x t) = f(z1, ..., zt) si, y slo si, (x 1, x 2,..., x t) y (z1,...,zt) presentan el mismo ordenamiento.
Para ello se debe usar una tabla auxiliar C[1],...,C[t]. Veamos cmo realizar esto de forma
algortmica:
Paso 1
[Inicializar] Inicializar r t.
Paso 2
Paso 3
[Intercambiar] Intercambiar xr
Paso 4
Paso 5
x s.
157
Por la estructura de este algoritmo, se observa que 0 C[r] < r, por lo que C[1] ser siempre
cero. Adems, 0 f < t!. Cuando el algoritmo finalice, (x 1 ,..., x t) se habr ordenado en sentido
asecendente.
H) Test de subsecuencias
Este test se emplea para comprobar la aleatoriedad de la oscilacin de los nmeros que
componen la secuencia. En una secuencia se pueden estudiar las subsecuencias ascendentes y las
subsecuencias descendentes. Esto significa examinar las longitudes de subsecuencias montonas de la
secuencia original (por ejemplo, segmentos en los que nmeros sucesivos se van incrementando o
decrementando).
Como ejemplo de definicin de una subsecuencia, consideremos una secuencia de 10 nmeros
1298536704, donde ponemos una lnea vertical a la izquierda y a la derecha entre dos nmeros xj y
x j+1 , siempre que x j > x j+1 : / 1 2 9 / 8 / 5 / 3 6 7 / 0 4 /. Esto indica las subsecuencias
ascendentes, y sale una subsecuencia de longitud 3, seguida de dos subsecuencias de longitud 1,
seguida de otra subsecuencia de longitud 3, y finalmente una subsecuencia de longitud 2.
A diferencia del test de brechas y del test colector de cupones, que son parecidos a este test en
muchos sentidos, aqu no se debe aplicar un test chi-cuadrado sobre los datos obtenidos, ya que las
subsecuencias adyacentes no son independientes. Se observa que una subsecuencia larga tiende a ir
seguida por una corta e igualmente a la inversa. Esta falta de independencia es suficiente para invalidar
la validez de un test chi-cuadrado.
Veamos, pues, cmo se realiza este test: Sea <x n> = x 0, x 1,..., x n-1 una secuencia que se
quiere comprobar de n nmeros distintos. El algoritmo para realizar el test de subsecuencias
ascendentes se puede ver en el listado del programa correspondiente que se adjunta con el libro, donde
se puede ver qu determina las longitudes de todas las subsecuencias ascendentes en la secuencia, de
forma que cuando el algoritmo termina, el vector CONT[r] contendr el nmero de subsecuencias de
longitud r, para 1 r 5, y CONT[6] ser el nmero de subsecuencias de longitud 6 o ms. Para el
test de subsecuencias descendentes se debe realizar un algoritmo similar, pero ahora debe determinar las
longitudes de todas las subsecuencias descendentes.
Una vez obtenidos estos datos debe determinarse [KNU67] la siguiente estadstica:
V=
1
( CONT [ i ] nbi ) ( CONT [ j ] nb j ) aij
n 1 i, j 6
a12
a22
a32
a42
a52
a62
a13
a23
a33
a43
a53
a63
a14
a24
a34
a44
a54
a64
a15
a25
a35
a45
a55
a65
a16
4529. 4 9044. 9
a26
9044. 9 18097
a36
13568 27139
=
a46
18091 36187
a56
22615 45234
a66
27892 55789
158
( b1
b2
b3
b4
b5
b6 ) =
1
6
5
24
11
120
19
720
29
5040
1
840
Estos valores, que son los que se utilizan para implementar el algoritmo, son slo
aproximados. Los valores exactos pueden determinarse a partir de las expresiones que se pueden
encontrar en [KNU67]. La estadstica V obtenida antes, debe tener una distribucin chi-cuadrado con 5
(y no 6 como podra parecer) grados de libertad cuando n es grande. Podemos concluir este test
proponiendo el siguiente algoritmo para desarrollarlo:
Paso 1
Paso 2
Construir una secuencia binaria de forma que para cada dos nmeros consecutivos xj y xj+1
de la secuencia, el bit j-simo sea 0 si xj < xj+1 y 1 en caso contrario.
Paso 3
Tabular la frecuencia de ocurrencia de las subsecuencias (tanto de ceros como de unos) para
cada longitud (2, 3, 4, 5,...).
Paso 4
Comparar las frecuencias tabuladas con los valores esperados empleando la estadstica
anterior.
n( x 0 x 1 + x 1 x 2 + + x n 2 x n 1 + x n 1 x 0 ) ( x 0 + x 1 + + x n 1 )
n( x 02 + x 12 + + x n2 1 ) ( x 0 + x 1 + + x n 1 )
(8)
n ( x j z j ) ( x j ) ( z j )
2
2
2
2
n x j ( x j ) n z j ( z j )
donde todos los sumatorios se deben realizar en el rango 0 j < n. La ecuacin (8) es el caso especial
en que zj = x(j+1) mod n . Un coeficiente de correlacin siempre cae entre +1 y -1. Cuando es cero o muy
159
pequeo, indica que las cantidades xj y zj son mutuamente independientes, pero cuando el coeficiente de
correlacin es 1, indica una total dependencia lineal.
En este caso, zj = m axj para algunas constantes a y m. Por tanto, es deseable obtener un
valor de C cercano a cero. Si x 0x 1 no es completamente independiente de x 1x 2, el coeficiente de
correlacin serie no ser exactamente cero. Un buen valor de C ser aquel que est entre n 2 n y
n + 2 n , donde:
n =
1
( n 1)
n =
n ( n 3)
1
n+1
n1
n>2
y se esperar que C caiga entre estos dos valores el 95% de las veces.
J) Test de transiciones
Este test se utiliza para asegurar que las probabilidades de transicin son razonables, es decir,
la probabilidad de que dos bits sean iguales o diferentes sean ms o menos la misma. Si ocurre as, se
puede tener confianza de que cada bit es independiente de su antecesor.
Supongamos que la transicin 01 ocurre n01 veces, la 10 ocurre n10, la 00 ocurre n00 y la 11
ocurre n11. Se puede ver que:
n 01 + n 00 = n 0 ( n 0 - 1)
n 10 + n 11 = n 1 ( n 1 - 1)
n 10 + n 01 + n 00 + n 11 = n - 1
El -1 se debe a que en una secuencia de longitud de m bits slo hay m - 1 transiciones. Idealmente, se
desea que n10 = n01 = n00 = n11 (n- 1)/4 y en [MOO40] se demuestra que la expresin:
S( n) =
2
2
4 1 1
2 1
( nij ) ( ni ) + 1
n 1 i= 0 j= 0
n i= 0
est aproximadamente distribuda como una funcin chi-cuadrado con 2 grados de libertad. Una forma
prctica de pasar este test consiste en calcular, para 10 fragmentos de la secuencia, los nij y los ni, la
funcin S(n) y calcular 10 tests chi-cuadrado con dos grados de libertad, sobre cuyos resultados se
aplica un test de Kolmogorov-Smirnov. El resultado dar una indicacin de si la secuencia pasa o no el
test.
K) Test estadsticos basados en el perfil de complejidad lineal
A continuacin se describen algunos tests estadsticos de aleatoriedad basados en el perfil de
complejidad lineal de una secuencia binaria. La idea de usar este perfil de las secuencias para construir
tests estadsticos fue sugerida simultneamente por Niederreiter [NIE88] y por Glyn Carter [CAR89].
La complejidad lineal de una secuencia binaria mide la longitud del menor registro de desplazamiento
con realimentacin linal (LFSR) que puede generar la secuencia y la forma en que crece sta a medida
160
y 1 J min( L 1, n L ) + 1 entonces:
min( L 1, n L ) min ( L,n L )
f ( n, L, J ) =
2
J1
Sino:
f ( n, L, J ) = 0
TEOREMA 2: Sea J n una variable aleatoria que represente el nmero de saltos en el perfil de
complejidad lineal de una secuencia binaria aleatoria de n bits, y sea = E ( J n ) el nmero medio de
saltos en su perfil de complejidad lineal. Entonces:
1
n 1
4 + 3 3 2n
=
5
1
n
4 + 12 3 2n
si n par
si n impar
TEOREMA 3: Sea 2 la varianza del nmero de saltos en el perfil de complejidad lineal de una
secuencia binaria aleatoria de n bits. Entonces:
n
1
1
n 2
8 9 + 6 2n + 3 2n 9 2 2n
2 =
n
7
1
n 1
8 8 + 6 2n + 18 2n 9 2 2n
si n par
si n impar
161
Veamos un test estadstico para aleatoriedad que chequea el nmero de saltos en el perfil de
complejidad lineal de una secuencia binaria. Este test se basa en que la distribucin del nmero de
saltos es aproximadamente normal cuando n es grande. Ms exactamente, para valores de n grandes, la
variable ( J n ) est distribuda aproximadamente segn una distribucin estndar normal N(0,1).
Este hecho se puede aprovechar para construir un tests estadstico que compruebe que el nmero de
saltos en el LCP de una secuencia de n bits no sea significativamente diferente del valor esperado. Por
tanto, la secuencia fallar en el test si su LCP tiene demasiados o demasiados pocos saltos (por
ejemplo, si hay demasiados saltos de longitud excesiva). El procedimiento del test es el siguiente:
Paso 1
Paso 2
Paso 3
Paso 4
Paso 5
La secuencia pasa el test con un nivel de significancia del % si, y slo si, - C S C ,
162
k, mientras que la clase M-sima contiene todos los saltos con altura M. M ser el menor entero, tal
que el nmero esperado de saltos sea menor que 5.
La frecuencia esperada para cada clase es Fpk, donde pk es la probabilidad de que un salto del
LCP est en la clase k. As, puesto que las alturas de los saltos de la secuencia binaria estn
distribudas segn una distribucin geomtrica G(1/2), p k = (1/2)k para k = 1, 2,..., M - 1, y p M =
(1/2)M+(1/2)M+1+... = (1/2)M-1. Dada una secuencia x0, x1,..., xn-1, el test procede como sigue:
Paso 1
Paso 2
son las del test anterior de nmero de saltos. Si la secuencia pasa el test anterior,
sabemos que su LCP debe contener al menos F saltos.
Paso 3
Definir M de forma que sea el menor valor de k tal que F(1/2)k< 5. Desde k = 1, 2,..., M,
calcular fk, donde:
fk = nmero de saltos de altura k en los primeros F saltos del LCP (k = 1, 2,..., M - 1). fM
= nmero de saltos de altura M en los primeros F saltos del LCP.
Paso 4
Computar la estadstica:
( f k Fpk ) 2
S =
Fpk
k = 1
donde:
1 k
2
pk =
1 M 1
2
Paso 5
si k = 1, 2,..., M 1
si k = M
2
Se pasa el test con un nivel de significancia del % si, y slo si, S 2 , donde es el
mayor punto de % de la distribucin con M - 1 grados de libertad.
163
1
K
Q+ K 1
log2 [ An ( x N ) ]
n= Q
164
( )
( )
An x N =
N
N
en cualquier otro caso
min i: i 1, bn x = bn i x
( )
( )
( )}
(9)
Este test puede desarrollarse utilizando una tabla de tamao 2L que guarde, para cada
combinacin de L bits, el ndice del tiempo de su ocurrencia ms reciente. En la notacin que se ha
usado a lo largo de este libro se puede expresar como:
t2 = E[fT(xN)] + y
165
f2
dx
Una tabla de N(x) se puede encontrar en casi cualquier libro de estadstica o de teora de
probabilidad, pero para obtener tasas de rechazo de = 0,01 y = 0,001, deben tomarse y = 2,58 e y =
3,30 respectivamente.
Tabla 5.5 Esperanza y varianza de los valores que mide el test suponiendo K , Q .
E[ f t ( x N ) ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
0,73264948
1,53743829
2,40160681
3,31122472
4,25342659
5,21770525
6,19625065
7,18366555
8,17642476
9,17232431
10,1700323
11,1687649
12,1680703
13,1676926
14,1674884
15,1673788
VAR[ log2 [ An ( x N ) ] ]
0,690
1,338
1,901
2,358
2,705
2,954
3,125
3,238
3,311
3,356
3,384
3,401
3,410
3,416
3,419
3,421
Un generador debera pasar este test si, y slo si, la secuencia de salida no puede comprimirse
significativamente. En la tabla 5.5 se muestran la esperanza de fT(xN) y una buena aproximacin de su
varianza, necesarias para realizar una implementacin prctica de este test.
La entropa por bit Hx de la secuencia {xN} y la E[fT(xN)] estn relacionadas por la siguiente
relacin de convergencia [MAU91]:
lim
E[ f T e ( x N ) ]
L
= Hx
166
5.2.4
Aunque siempre es posible testear la aleatoriedad de las secuencias producidas por los
generadores de secuencias pseudoaleatorias empleando los tests estadsticos empricos descritos
anteriormente, a veces puede ser interesante disponer, a priori, de algunos resultados que, obtenidos
mediante procedimientos tericos, nos den una informacin preliminar de cmo se comportarn las
secuencias respecto a esos tests empricos.
Los tests de tipo terico nos darn adems mayor informacin acerca del mtodo que se ha
utilizado para la generacin de la secuencia que los tests de tipo emprico, ya que estos ltimos
consideran al generador como una caja negra y basan, por tanto, sus resultados en el mtodo de la
prueba y el error.
Otra diferencia fundamental de los tests tericos respecto a los empricos, es que para ser
vlidos deben considerar el periodo completo de la secuencia. Si bien los tests empricos tambin se
pueden realizar sobre todo el periodo de la secuencia, recordemos que ello no es necesario, aunque tanto
mayor ser la fiabilidad del test cuanto mayor sea la longitud de la muestra estudiada.
Puesto que la realizacin de los tests tericos conlleva una importante complejidad
matemtica, que va mucho ms all del inters eminentemente prctico de esta obra, si el lector desea
profundizar ms en este tipo de tests puede recurrir a ciertas publicaciones que tratan con ms en
profundidad este tema.
Sin embargo, aqu se va a mostrar un importante test de aleatoriedad propuesto en 1965 por
Coveyou y MacPearson, el test espectral, que contiene conceptos tanto de los tests estadsticos
tericos, ya que considera cantidades promediadas sobre todo el periodo de la secuencia, como de los
empricos, ya que requiere la utilizacin de un ordenador para proporcionar sus resultados.
A) El test espectral
Este test presenta una motivacin matemtica basada en la transformada de Fourier de una
funcin definida sobre un conjunto finito. Dada una funcin F(t1, t2,..., tn) de valores complejos
definida para todas las combinaciones de enteros tk, donde 0 t k m para 1 j n, se define la
transformada de Fourier de F mediante la siguiente expresin:
f ( s1 , s2 ,..., sn ) =
0 t 1 ,...,t n < m
Esta funcin f se define para todas las combinaciones de enteros s k y ser peridica. El
nombre de transformada se justifica por el hecho de que la funcin original F(t1, t2,..., tn) puede
reconstrurse a partir de su transformada mediante:
F ( t1 , t 2 ,..., tn ) = ( 1 m )
0 s 1 ,s 2 ,...,s n < m
Esta frmula puede desarrollarse en senos y cosenos y dar lugar a las series infinitas de
Fourier.
167
El valor (1/m)nf(s1,..., sn) representa esencialmente la amplitud en un plano complejo ndimensional de ondas con frecuencias s 1 /m ,..., s n /m , si F(t 1 , t 2 ,..., t n ) se escribe como una
superposicin de dichas ondas.
Para aplicar estos conceptos al estudio de la generacin de nmeros aleatorios, supongamos
que X0, X1, X2,... es una secuencia infinita de enteros con 0 Xk < m, y sea n un nmero entero fijo
(y normalmente bastante pequeo).
Se define F(t1, t2,..., tn) como:
F ( t1 , t 2 ,..., tn ) = lim ( 1 N ) k t1 k + 1t 2 ... k + n tn
N
0 k < N
(10)
esto es, F(t1, t2,..., tn) es la funcin densidad de ocurrencias de la subsecuencia de n trminos (t1,
t2,..., tn) como n elementos consecutivos de la secuencia X0, X1, X2, ...
Puesto que las secuencias que testeamos son peridicas de periodo p, podemos asumir que ese
lmite existe.
En una secuencia infinita verdaderamente aleatoria (que cumplir k-distribucin, y cada
posible subsecuencia de n trminos (n < k) aparecer igualmente probable), F(t1, t2,..., tn) debera ser
(1/m)n para todo t1, t2,..., tn La transformada de (10) se podr expresar como:
f ( s1 ,..., sn ) = lim ( 1 N ) exp( 2i / m( s1 Xk + ... + sn Xk + n 1 ) )
N
0 k < N
(11)
si s1 =... = sn = 0 mod m
en otro caso
si s1 =... = sn = 0 mod m
en otro caso
(12)
As pues, este test consistir en calcular la transformada (11) para la secuencia de test y
comprobar cunto se acerca al resultado esperado (12). Una buena forma de medir cun cerca se est de
este resultado es medir la relacin lbulo principal-lbulo secundario (LPLS) en decibelios, utilizando
para ello la expresin:
f
LPLS = 10 log max f
lob _ sec
168
5.3 Problemas
PROBLEMA 5.1 Si se trucan dos dados, de forma que en uno de ellos el valor 1 pase a tener
exactamente el doble de probabilidad que cualquier otro valor, y el otro dado se truca igualmente, pero
en este caso el nmero con doble probabilidad es el 6, calcular la probabilidad ps de que la suma de los
dos dados sea s, para 2 s 12.
PROBLEMA 5.2 Unos dados trucados, como en el ejercicio anterior, se tiran 144 veces y el nmero
de veces Ys que aparece cada uno de los posibles valores de la suma s son los siguientes:
s
Ys
2
2
3
6
4
10
5
16
6
18
7
32
8
20
9
13
10
16
11
9
12
2
169
para 1 r 5, y CONT[6] debe ser el nmero de subsecuencias de longitud mayor o igual que 6.
PROBLEMA 5.10 Para el coeficiente de correlacin serie mostrar que:
(a) Si n = 2, el coeficiente de correlacin sucesiva es siempre -1 (a menos que el
denominador sea cero).
(b) Si n = 3, el coeficiente de correlacin sucesiva es siempre -1/2.
(c) El denominador de la expresin (8) del apartado 5.2.3. es cero si, y slo si, x0 = x1
=...= xn-1.
PROBLEMA 5.11 Cul es la media y la desviacin tpica del coeficiente de correlacin sucesiva
cuando n = 4 y las xs son independientes y estn uniformemente distribudas entre 0 y 1?.
PROBLEMA 5.12 Si X es una variable aleatoria con una distribucin chi-cuadrado determinar:
a) P(X 26,1) si = 14.
b) P(X 2,71) si = 1.
c) P(X < 21,6) si = 17.
PROBLEMA 5.13 Si se han obtenido las siguientes observaciones de una variable aleatoria X: -2, 0,
6, 4, -1, -5, 12, 13, 3 y 11, calcular la media de las muestras y su desviacin estndar.
PROBLEMA 5.14 Si suponemos que = 6 y = 0,05, comprobar las siguientes hiptesis para
los datos obtenidos en el ejercicio anterior.
a) H 0 : = 4, A : 4.
b) H 0 : = 6, A : 6.
c) H 0 : < 5, A : > 5.
PROBLEMA 5.15 Se toman las siguientes muestras de dos variables aleatorias:
X : {2, 4, 6, 7, 9, 14, 16, 3}
Si se asume que ambas presentan iguales varianzas, comprobar la hiptesis de que tambin
tengan iguales medias con = 0,05.
PROBLEMA 5.16 Comprobar la suposicin que se ha hecho en el ejercicio anterior de que ambas
muestras presentan igual varianza.
PROBLEMA 5.17 Suponemos que los mensajes que llegan a un receptor siguen una distribucin de
Poisson, y que el intervalo entre sus llegadas sigue una distribucin exponencial. Testear esta
hiptesis mediante la utilizacin de un test chi-cuadrado, suponiendo que se dispone de la siguiente
tabla de frecuencia de los tiempos entre llegadas de mensajes:
170
Tiempo
Frecuencia
0-1
2
1-2
6
2-3
12
3-4
16
4-5
21
5-6
11
6-7
6
PROBLEMA 5.18 Testear la hiptesis del ejercicio anterior mediante el test de KolmogorovSmirnov.
PROBLEMA 5.19 Se ha obtenido la siguiente tabla de una variable aleatoria X.
Intervalo
Frecuencia
0-5
0
Intervalo
Frecuencia
5-10
2
40-45
32
10-15
2
45-50
28
15-20
6
50-55
18
20-25
10
55-60
12
25-30
20
60-65
6
30-35
28
65-70
4
35-40
32
70-75
0
5.4 Bibliografa
[BER68]
[CAN88]
[CAR89]
[CHA87]
[CRA70]
[FRE75]
[GOL65]
[GOL67]
[GOL68]
[GOL90]
[GRAYB]
[HEL76]
[KNU67]
[KNUTH]
[LID83]
[MAR66]
[MAS76]
[MAU91]
[MAUER]
[MOO40]
[MOO68]
[NIE88]
[PUR77]
[RUE86]
[SAR80]
[SCH89]
[SID69]
[WEL74]
171
HELLESETH, T. Some Results About the Cross-Correlation function Between Two Maximal
Linear Sequences. Discrete Math. Vol. 16, pp. 209-232, 1976.
KNUTH, D. E. The Art of Computer Programming. Vol 1: Seminumrical Algorithms.
Adison-Wesley 1967.
KNUTH, D. E. The Art of Computer Programming. Vol 2: Seminumrical Algorithms.
Adison-Wesley 1967.
LIDL, R.; NEDERREITER, H. Finite Fields. Addison-Wesley, Reading Mass, 1983.
MARTIN-LF,P. The Definition of Random Sequences. Inform. Contr., Vol. 9, pp. 602-619,
1966.
MASSEY, J. L. Shift Register Sysnthesis and BCH Decoding. IEEE Trans on Information
Theory, Vol. IT-15, No 1, Jan. 1976.
MAUER, U. A Universal statistical Test for Random Bit Generators. Advances in
Cryptology- CRYPTO90. Springer-Verlag Lecture Notes in Computer Science, No 537.
Berlin, 1991.
MAUER, U.; MASSEY, J. L. Perfect Local Randomness in Pseudo-random Sequences.
Proceedings Crypto 89, Santa Barbara.
MOOD, A. M. The Distribution Theory of runs. Ann. Math. Statist., 11, 1940, pp 367-392.
MOON, J. W.; MOSER, L. On the Correlation Function of Random Binary Sequences. SIAM
J. Appl. Math, Vol. 16, N2, pp. 340-342, 1968.
NIEDERRETER, H. The Probabilistic Theory of Linear Complexity. Advances in
Cryptology: Proceedings of Eurocrypt 88, Springer-Verlag, Berlin, 1988, pp. 191-209.
PURSLEY, M. B.; SARWATE, D. V. Evaluation of Correlation Parameters for Periodic
Sequences. IEEE Trans. on inform theory, Vol. IT-23, pp. 508-513, 1977.
RUEPPEL, R. A. Linear Complexity and Random Sequences. Proceeding of Eurocrypt86,
Lecture Notes in computer Science 219, Springer-Verlag, 1986.
SARWATE, D.; PURSLEY, M. B. Crosscorrelation Properties of Pseudo Random and Related
Sequences. Proc. of the IEEE, Vol. 68. N 5, May 1980.
SCHNORR, C. P. Efficient, perfect random number generation. Proccedings of the Workshop
on stream Ciphers. Report 89/1, 1989.
SIDELNIKOV, V. M. Some k-valued Pseudo Random Sequences and Nearly Equidistant Codes.
Probl. Inform Transmission, Vol. 5, pp. 21-16, 1969.
WELCH, L. R. Lower Bounds on the Maximum Cross-Correlation of Signals. IEEE Trans.
Inform theory, Vol. IT-20, pp. 397-399, 1974.
6 Complejidad de secuencias
173
6 Complejidad de secuencias
6.0 Introduccin
En el captulo anterior se vieron los mtodos para comprobar las propiedades estadsticas de
las secuencias pseudoaleatorias. Sin embargo, el hecho que las secuencias muestren un buen resultado
respecto a los tests que se presentaron en dicho captulo, no garantiza que la secuencia sea
impredictible. Tal como se vio en el captulo 1, la impredictibilidad es una caracterstica inherente al
concepto de aleatoriad, y deberemos ser capaces de evaluarla.
Una medida importante de la impredictibilidad de una secuencia es su complejidad, de forma
que para que la podamos considerar como impredictible, deber mostrar una elevada complejidad y,
adems, cualquier subsecuencia de la secuencia considerada deber mostrar tambin una complejidad
elevada. Esta ltima caracterstica determina lo que llamaremos el perfil de complejidad.
Tambin se ver que, si bien la complejidad lineal y el perfil de complejidad lineal son las
medidas de impredictibilidad ms utilizadas, debido a que existe un algoritmo eficiente para calcularlas,
existen otras medidas de complejidad de gran utilidad como la complejidad de mximo orden o la
complejidad de Ziv-Lempel.
Estas ltimas ofrecern informacin adicional, que nos permitir obtener conclusiones ms
fiables sobre la impredictibilidad de la secuencia considerada que si se utiliza nicamente la
complejidad lineal.
A pesar de la importancia del concepto de impredictibilidad en las secuencias aleatorias, habr
que tener en cuenta que para algunas aplicaciones de telecomunicaciones que emplean este tipo de
secuencias, ste no ser un requisito imprescindible, y bastar que se usen secuencias con buenas
propiedades respecto a los tests estadsticos vistos en el captulo anterior.
Algunos ejemplos de este tipo de aplicaciones son las modulaciones spread spectrum, las
tcnicas de acceso mltiple por divisin de cdigo (CDMA) y la aleatorizacin de las comunicaciones
en enlaces va satlite o cable. Sin embargo, habr otras aplicaciones en las que la complejidad de las
secuencias ser un requisito absolutamente imprescindible, y el sistema quedar completamente
invalidado si las secuencias no lo cumplen. Una aplicacin de estas caractersticas es el cifrado en
flujo.
De hecho, la enorme importancia que tiene el requisito de impredictibilidad en este campo es
el que ha impulsado en gran medida el desarrollo de la teora de la complejidad. Todas estas
aplicaciones se vern detalladamente en el captulo 7.
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
174
175
6 Complejidad de secuencias
algoritmo, adems de computar la complejidad lineal de una secuencia, tambin es capaz de determinar
el polinomio de realimentacin nico y el estado inicial de un registro de desplazamiento que ser
capaz de generarla completamente. En el artculo original, el algoritmo no se restringe a los nmeros
binarios sino que puede utilizarse para nmeros reales.
Existen otras medidas de complejidad que van ms all de la definicin lineal, como la
complejidad de mximo orden que propuesta por Jansen y Boekee [JAN89], y que define la complejidad
de la secuencia como el registro de desplazamiento con realimentacin, pero esta vez no lineal, que es
capaz de generar la secuencia.
En los prximos apartados vamos a ver ms detalladamente todos estos conceptos de
complejidad.
6.1.1
( wi ) = x j
para
j [ 1, 2,..., n ]
: S I Z S Z {Z3 }
176
( , i, z ) = ( ' , z' , m )
Por ejemplo, si el estado de la mquina cambia de a ' , se escribir un nuevo smbolo en
el dispositivo de almacenamiento y se desplazar la cabeza de lectura/escritura en m Z 3 (a la derecha,
a la izquierda, o nada). Al comienzo, el dispositivo de almacenamiento debe estar vaco, por ejemplo
lleno con espacios blancos (#).
El concepto de una mquina de Turing se puede, pues, usar para construir la llamada Mquina
Universal de Turing (UTM), que en esencia es una Mquina de Turing de propsito general capaz de
simular cualquier otra Mquina de Turing como la descrita anteriormente.
Una Mquina Universal de Turing ser una mquina de Turing U, cuyo control de estados
finitos se disea de forma que genere secuencias binarias de salida x { 0, 1} de la forma
y = ( x, p( T ) ) donde p( T ) sea una entrada igual al programa binario, que haga que U se comporte
como la Mquina de Turing T que genere la secuencia x . A continuacin se define la complejidad
TKC utilizando para ello algunos teoremas:
TEOREMA 1: Cualquier Mquina de Turing T se puede simular de esta forma mediante una Mquina
Universal de Turing U.
TEOREMA 2: Sea x 2n una secuencia binaria. Sea T una mquina de Turing determinada que
genere la secuencia x , y sea p( T ) el programa que hace que esta UTM simule a T. Entonces el
nmero ( T ) = p( T ) , se llamar el tamao de T, donde p ser, por ejemplo, la longitud del
programa p . Adems, el nmero:
( x ) = ( x ) = min{ ( T ) T
genera
x, T }
177
6 Complejidad de secuencias
no puede tener una descripcin ms corta que la propia secuencia. Una frase que podra resumir de
forma breve todos estos teoremas sera que si somos capaces de describir una secuencia, sta no podr
ser aleatoria [BET89].
La introduccin del concepto de Mquina de Turing aparece como consecuencia del hecho de
que no hay forma posible de generar un gran subconjunto de secuencias binarias de longitud n que
parezcan verdaderamente aleatorias mediante una mquina de estados finitos comparativamente pequea.
En otras palabras, los resultados anteriores muestran que el uso de los llamados generadores no lineales
no aporta mucho en trminos de la complejidad de las secuencias, si se evala la complejidad de dichos
generadores de forma correcta.
La imposibilidad de computar la complejidad de Turing-Kolmogorov-Chaitin, ha llevado a
buscar otros conceptos de complejidad ms desarrollados y cuyo cmputo sea sencillo. Un concepto de
complejidad que ha tenido gran difusin ha sido el de la complejidad lineal de las secuencias que vamos
a ver a continuacin.
6.1.2
La complejidad lineal ()
Tal como se ha expuesto anteriormente, uno de los requisitos que deben cumplir las
secuencias aleatorias es que deben mostrar una alta impredictibilidad. Para que la secuencia sea
impredictible, su complejidad lineal debe ser alta. Esta es una condicin necesaria, pero no suficiente,
para garantizar la impredictibilidad de la secuencia. Por ejemplo, la secuencia de longitud 31
{0000000000000000000000000000001} es de mxima complejidad lineal, ya que segn se puede
observar, se necesita un LFSR de su longitud para poder generarla, pero no es utilizable como
secuencia aleatoria puesto que es totalmente predecible, ya que no cumple el requisito de distribucin
estadstica uniforme de ceros y unos. La impredictibilidad requiere que, independientemente del dgito
precedente, el siguiente bit de la secuencia aparezca con una distribucin estadstica uniforme.
Una razn ms para usar como parmetro de medida la complejidad lineal es que el periodo de
la secuencia de salida del generador sea, al menos, tan grande como la complejidad lineal, por lo que
una gran complejidad lineal implicar siempre un gran periodo.
Las secuencias pseudoaleatorias muestran un aumento de la complejidad lineal al aumentar el
nmero de dgitos de la secuencia. Esto no ocurre a la inversa, pues una secuencia peridica no implica
necesariamente gran complejidad lineal.
Las secuencias de longitud mxima o pseudoaleatorias obtenibles de los registros de
desplazamiento con realimentacin lineal (LFSR) tienen excelentes propiedades de distribucin
estadstica, pero tienen complejidad lineal mnima respecto a la longitud del periodo, y se determinan
completamente conociendo slo 2L bits de la secuencia (L es el orden, o tambin el nmero de celdas
del LFSR). Se puede generar una secuencia peridica por cualquier mtodo (lineal o no), pero siempre
ser posible obtenerla a partir de un LFSR de longitud mnima, a cuyo orden llamaremos complejidad
(o equivalente) lineal .
Cuanto mayor sea el periodo o la complejidad lineal, mayor ser la impredictibilidad de la
secuencia. Con un LFSR se estar siempre limitado a una complejidad menor o igual a su orden, es
decir, L. Por ello usaremos funciones no lineales que permitan alcanzar complejidades lineales
> L. Siempre se podr obtener una secuencia a partir de un LFSR de orden mayor que la
178
complejidad lineal pero no ser prctico, pues se estar usando ms circuitera que la estrictamente
necesaria sin obtener a cambio ninguna ventaja. Algunas conclusiones sobre complejidad lineal que
parecen ampliamente aceptadas son:
1)
2)
La secuencia todo ceros y un uno (como en el ejemplo anterior) tiene mxima complejidad
lineal (en el ejemplo complejidad = 31), puesto que slo un LFSR de L = 31 puede generar
esta secuencia.
3)
4)
El punto 2 merece un comentario adicional. El hecho de que la secuencia todo ceros y un uno
presente una elevada complejidad lineal, no implica en absoluto que sta sea de utilidad desde el punto
de vista de la aleatoriedad, debido a la psima distribucin de unos y ceros que presenta. Esto demuestra
que altas complejidades son necesarias pero no suficientes, y que habr que tener un cuidado extremo a
la hora de disear funciones no lineales con el propsito de aumentar la complejidad de las secuencias
para que no estropeen las propiedades de distribucin de ceros y unos. Del mayor o menor xito que se
consiga en este requisito depender, en gran medida, la aplicabilidad del generador que se obtenga. En el
captulo 4 se vieron numerosas tcnicas que, a partir de m-secuencias que presentan excelentes
distribuciones estadsticas, aunque baja complejidad, tenan como objetivo aumentar esta ltima sin
estropear la primera, introduciendo para ello algn tipo de no aleatoriedad.
Volviendo al hecho de que una elevada complejidad lineal no implica necesariamente la
utilidad de la secuencia, se debe llevar ms all el concepto de complejidad para detectar casos como el
anterior. Esto nos lleva a la necesidad de analizar el comportamiento del crecimiento de dicha
complejidad [DAI86].
6.1.3
Para poder usar la complejidad lineal como parmetro de medida de la impredictibilidad de las
secuencias, debemos afinar ms en sus valores y en su comportamiento. No slo ser importante el
valor final que alcanza la complejidad, sino tambin la forma de crecimiento que tiene sta al ir
procesando sus bits. Para el ejemplo del apartado anterior (secuencia con 30 ceros y un 1), la
complejidad da un nico salto de valor 31, lo cual no se corresponde en absoluto con una distribucin
uniforme cuya complejidad aumentar de forma gradual ajustndose a unos lmites a lo largo de toda la
secuencia. El perfil de crecimiento de la complejidad (o LCP segn las siglas en ingls), estudiada por
179
6 Complejidad de secuencias
Ruepple [RUE86], es til para detectar secuencias cuya complejidad es buena, pero que no son
recomendables para ser utilizadas en aplicaciones como la criptografa.
Sea (S n) la complejidad lineal resultante del cmputo de la complejidad lineal de los
primeros n dgitos de una secuencia aleatoria S. Si se representa grficamente el crecimiento de la
complejidad lineal en funcin del nmero de bits calculados hasta ese momento, para ver el
comportamiento de la misma en lo que se refiere a saltos bruscos de su valor tendremos:
(Sn)
2p
En esta grfica (figura 6.1) se puede observar como, para secuencias verdaderamente aleatorias,
la complejidad crecer siguiendo, aunque irregularmente, la lnea de N/2, donde n es el nmero de bits
de la secuencia que se han procesado.
Se puede, por tanto, caracterizar el crecimiento de la complejidad lineal como una clase
especial de paso aleatorio (en el captulo 5 se vieron dos tests estadsticos basados precisamente en este
hecho).
Puesto que las secuencias que obtendremos en la prctica sern pseudoaleatorias, debido a su
naturaleza peridica, deberemos intentar que al igual que para las secuencias verdaderamente aleatorias,
su complejidad crezca ciindose lo mximo posible a la lnea de n/2, de forma que si el periodo de la
secuencia es p, la complejidad alcance este valor despus de procesar dos periodos completos de la
secuencia. Por supuesto, el que la complejidad llegue a crecer hasta el valor del periodo depender,
como ya sabemos, de lo bien diseado que est el generador y, en cualquier caso, nunca podr ir ms
all del periodo de la secuencia.
Para una aplicacin como el cifrado en flujo, que requiere que las secuencias empleadas
presenten el mismo comportamiento respecto al LCP que las secuencias verdaderamente aleatorias, se
deber rechazar cualquier secuencia que se desve significativamente del perfil de crecimiento irregular
siguiendo la lnea de n/2.
Veamos cmo podemos obtener el nmero de secuencias de longitud n con complejidad lineal
igual a su periodo (y, por tanto, la mxima obtenible). Dicho nmero lo vamos a denotar por Nn(L).
Hay que iniciar este estudio observando el crecimiento de la complejidad lineal al considerar nuevos
dgitos de la secuencia. Para ello, llamaremos prxima discrepancia a la diferencia entre la n-sima
variable aleatoria binaria y el n-simo dgito de la secuencia generada por un LFSR. La discrepancia no
180
cambiar de valor cuando la L, puesto que con una realimentacin lineal lo mejor que se puede
esperar es alcanzar un valor de la complejidad lineal igual al orden del LFSR. Si se representan estas
condiciones de forma unificada, si n es el nmero de bits computados, tendremos que:
DISCREPANCIA = 0
DISCREPANCIA = 1
( sn ) = ( sn 1 )
( sn ) = ( sn 1 )
si ( sn 1 ) n / 2
( sn ) = n ( sn 1 )
si ( sn 1 ) <n / 2
De estas ecuaciones se puede obtener directamente el resultado para Nn(L), que es el nmero
de secuencias con un determinado valor de la complejidad lineal. Si se representa su valor de forma
recursiva se obtienen las siguientes expresiones:
2Nn ( L ) + Nn 1 (n L )
Nn ( L ) = 2Nn 1 ( L )
Nn 1 ( L )
n L > n2
L = n2
n2>L0
2 min ( 2n 2 L,2 L 1)
Nn ( L ) =
1
n L, L > 0
n0
Este valor de Nn(L) es el nmero exacto de secuencias de longitud n con complejidad lineal L,
pero nos puede interesar tambin conocer el nmero de secuencias NL cuya complejidad lineal sea igual
o menor que L. Para ello se puede usar la expresin:
L
N L = 1 + 22 j 1 =
j=1
2 2L 1
2 +
3
3
A partir de ella se puede observar que 2/3 de todas las posibles secuencias de longitud L
pueden ser generadas por LFSRs de L o menos celdas.
Las secuencias de complejidad lineal L o menor se caracterizan por el hecho de que el LFSR
asociado que la produce es nico.
181
6 Complejidad de secuencias
La mayora de las secuencias aleatorias de longitud L tendrn una complejidad lineal prxima
a n/2, aunque valores lejanos o prximos a n tambin sern posibles.
Se puede conocer cul ser el valor de la complejidad lineal esperada de una secuencia de n
trminos realizando un planteamiento estadstico a priori. De esta forma se obtiene la expresin:
E( A) =
n 4+ R
n 2 n 4 + R
+
2 n
+
+
3 9 2
2
18
18
donde R es el resto de la divisin de n entre 2. Esta esperanza tiende a n/2 cuando n es muy grande.
Dentro de la caracterizacin estadstica que se est calculando sobre la complejidad lineal,
adems de la media o esperanza necesitamos conocer la varianza o dispersin respecto al valor medio.
Este valor viene determinado por la siguiente expresin:
VAR( ) = E(( -E( ))2) = E( 2) - E( )2 =
=
86
82 2R
4
4
14 R
1 2
2 n
n+
22n
n +
n+
27
9
81
81
27
81
6.1.4
s j = ci s j i
i= 1
j = L, L + 1,...
(1)
Los dgitos de salida y los coeficientes de realimentacin c1, c2,..., cL, pertenecen al mismo
campo, que puede ser un campo finito GF(q) o un campo infinito, como por ejemplo el de los
182
nmeros reales. Aqu slo vamos a considerar elementos que pertenezcan al campo de Galois GF(2).
Adems, no es un requerimiento que cL 0. Se dice que un LFSR genera una secuencia finita c1,
c2,..., sN-1 cuando esta secuencia coincide con los N primeros dgitos de salida del LFSR para una
determinada carga inicial. Si L N, el LFSR siempre ser capaz de generar la secuencia. Si L < N, se
deduce de (1) que el LFSR generar la secuencia si, y slo si:
L
si + ci s j 1 = 0
i= 1
j = L, L + 1,..., N 1
(2)
183
6 Complejidad de secuencias
-C1
Sj-1
-C2
-CL
Sj-2
................
Sj-L
Sj-L ,..., S 0
Cuando s0, s1,..., sN-1 son todo ceros, pero sN 0, entonces LN+1(s) = N+1, ya que cualquier
LFSR ms corto se debe cargar inicialmente con todo ceros y slo podr generar ceros. Adems, en
este caso, cualquier LFSR con L = N+1 bastar para generar la secuencia s0, s1,..., sN-1, sN. Para un s
dado, sea
C ( N ) ( D) = 1 + c1( N ) D + ... + c L( NN ()s ) D
LN ( s )
el polinomio de conexin de un LFSR de longitud mnima L N (s) que genera s0, s1,..., sN-1. Como
hiptesis de induccin, se asume que se ha encontrado LN(s) y algunos C(N)(D) para N = 1, 2,...n. Se
pretende entonces encontrar Ln+1(s) y algunos C(n+1)(D). Por induccin se tiene a partir de (2) que:
Ln ( s )
(n)
S j + ci s j i
i=1
=
d
n
j = Ln ( s ),..., n 1
j=n
S j + ci( m ) s j i =
i=1
d 0
j=m
n
184
(m)
( D)
Para el caso binario, las dos discrepancias que aparecen en el polinomio candidato slo pueden
tomar valores 0 1, de manera que cuando ha habido discrepancia podramos sustiturlas por la
constante 1 ( dn dm1). As mismo, el signo menos tiene valor de XOR (suma mdulo 2) en el caso
binario. El grado de C(D) ser al menos:
max[Ln(s), n-m+Lm(s)] = max[Ln(s), n+1-Ln(s)]
A partir de ahora, C(D) es un polinomio de conexin admisible para un LFSR de longitud L
donde
L = max[Ln(s), n+1-Ln(s)]
Entonces, el LFSR de longitud L con polinomio de conexin C(D) genera los n+1 dgitos s0,
s1,..., sn y se cumple adems que L = Ln(s).
TEOREMA 2: Si algn LFSR de longitud L n (s) que genere la secuencia s 0 , s 1 ,..., s n-1, tambin
genera s 0 , s 1 ,..., s n-1 , sN , entonces L n+1 (s) = L n (s). Por el contrario, si un LFSR que genera la
secuencia s0, s1,..., sn-1 falla al intentar generar la secuencia s0, s1, ..., sn-1, sN , entonces L n+1(s) =
max[Ln(s), N+1-Ln(s)].
Una vez vistos estos teoremas ya se puede ver el algoritmo de Massey-Berlekamp [MAS76]
para el clculo de la complejidad lineal que bsicamente sigue los pasos que se han ido viendo:
Paso 1
Inicializacin de variables:
C(D):= 1
Paso 2
B(D):= 1
x:= 1
L:= 1
d = s N + ci s j 1
i= 1
b:= 1
N:= 1
185
6 Complejidad de secuencias
Paso 3
Paso 4
Si d 0 y 2L > N, entonces:
C(D) = C(D) - db-1DxB(D)
x:= x+1
ir al paso 6
Paso 5
Si d 0 y 2L N entonces:
T(D) = C(D)
C(D) = C(D) - db-1DxB(D)
L:= N+1-L
B(D) = T(D)
b:= d
x:= 1
Paso 6
Notar que el paso 5 slo se realiza cuando, de acuerdo con el teorema 2, se necesita un cambio
de signo. Slo se ha considerado el problema de encontrar uno de los registros de mnima longitud
que puede generar una secuencia dada, pero realmente se podra encontrar todo el conjunto de LFSRs de
longitud mnima L n (s) que puede generar la secuencia s 0 , s 1 ,..., s n-1 mediante este algoritmo de
sntesis. Tambin se puede concluir que el LFSR de mnima longitud es nico si, y slo si, 2LN(s)
N. En el software que se adjunta se puede encontrar un programa que implementa este algoritmo.
A) Relacin entre la complejidad lineal y la de Turing-Kolmogorov-Chaitin
En este apartado se analiza la relacin entre la complejidad lineal ( s ) y la complejidad de
Turing-Kolmogorov-Chaitin ( s ) . El siguiente teorema establecer esta relacin:
186
TEOREMA 1: Para cualquier nmero real que cumple que 0 < < 1, un entero arbitrario n y una
secuencia binaria arbitraria s 2n , se cumplir que:
n
8
1) Pr ob{ ( 1 ) ( s ) ( s ) } 1 2 2
3
1 n + ( 1 ) ( 1+ log n ) + 1 1 n
2) Pr ob{ ( 1 ) ( s ) ( s ) } 1 2
2
3
3
6.1.5
2000
0,998
4000
0,999997
La complejidad de Ziv-Lempel
Otra medida de complejidad de las secuencias la definieron Ziv y Lempel en 1976 [LEM76].
Esta complejidad mide la velocidad a la que emergen nuevas cadenas de bits a medida que nos
movemos a travs de la secuencia. Hasta ahora la complejidad de Ziv-Lempel se haba usado
principalmente en conexin con el algoritmo de Ziv-Lempel para la compresin de datos. En el
estudio de secuencias para su aplicacin en criptografa slo haba sido aplicada por Leung y Tavares
[LEU85] para testear cifradores de bloque, pero no se haba usado para testear cifradores de flujo (este
tipo de criptosistemas se vern en el captulo 7).
El clculo de esta complejidad se puede ver desde el punto de vista de una mquina de
aprendizaje autolimitada que, a medida que estudia la secuencia de n dgitos S = s 1, s 2,..., s n de
izquierda a derecha, aade una nueva palabra a su memoria cada vez que descubre una subsecuencia de
dgitos consecutivos que no haba aparecido previamente. El tamao del vocabulario compilado y la
velocidad a la que van apareciendo a lo largo de la secuencia S sirven como elementos bsicos para el
clculo de la complejidad de S, es decir, la complejidad est relacionada con la velocidad a la que crece
el vocabulario. Esto har que no se puedan considerar como secuencias de elevada complejidad aquellas
secuencias que presenten regularidades estructurales o vocabularios deficientes.
Por tanto, intuitivamente la complejidad de Ziv-Lempel servir como medida de las
secuencias finitas, basndose esta medida en la velocidad a la que emergen nuevos patrones a medida
que nos movemos por la secuencia.
187
6 Complejidad de secuencias
Paso 1
Paso 2
Asumimos que la
1 ki n 1. La
ki + 1 = ki + Li + 1
que existe un entero
Si sn est seguida por una barra, la complejidad de Ziv-Lempel ser igual al nmero de barras
mientras que en otro caso, la complejidad de Ziv-Lempel ser igual al nmero de barras ms uno.
Veamos un ejemplo para ilustrar esto.
EJEMPLO 6.1: Sea la secuencia binaria S = 1001101110000111. Si le introducimos barras
siguiendo la metodologa introducida por los dos pasos anteriores obtendremos la particin S =
1/0/01/101/1100/00111. Esta particin divide a la secuencia en 6 patrones distintos, y por tanto la
complejidad de Ziv-Lempel de dicha secuencia ser de 6.
Sin embargo, el paso 2 del procedimiento anterior no es fcilmente computable por lo que es
conveniente proponer una forma eficiente de computarlo. Para ello se puede subdividir el paso 2 en
otros dos:
Paso 2a
Paso 2b
J para el cual s j + m 1 sn + 1, e
incrementar m en 1 si J todava no est vaco. En otro caso, m ser la longitud del nuevo
patrn que vendr definido por sn + 1 ... sn + m .
Estos dos pasos nos permitirn obtener los patrones de la secuencia S de forma eficiente y,
por tanto, calcular la complejidad de Ziv-Lempel de dicha secuencia. El algoritmo de Ziv-Lempel se
centra, pues, en una tabla en la que se ponen las nuevas palabras que van apareciendo. Normalmente se
usan cdigos de 12 bits para la tabla (lo que permite 4096 entradas).
Veamos algunos lemas que nos resultarn tiles para calcular la complejidad de Ziv-Lempel
de secuencias peridicas s1,..., sp-1, sp, sp+1,..., donde p es el periodo de la secuencia, y sp+i = si para 0
< i p.
188
189
6 Complejidad de secuencias
Se espera que una buena secuencia aleatoria tenga una complejidad de Ziv-Lempel cercana a
Z ( s ) , y que cada modelo de la secuencia tenga una longitud pi cercana a p . Si la complejidad de ZivLempel de la secuencia es mucho menor que Z ( s ) , la secuencia tendr al menos una repeticin
mltiple de un patrn y existir al menos una longitud de patrn pi que es mucho mayor que p . El
modelo i ser una repeticin de patrones aparecidos ya anteriormente. La repeticin mltiple de un
patrn ser una desventaja si el generador de secuencias pseudoaleatorias se usa en una aplicacin como
el cifrado en flujo. Si la secuencia pseudoaleatoria no slo tiene una repeticin mltiple de un patrn,
sino que el texto en claro tambin lo tiene, el texto cifrado correspondiente debera tener tambin una
repeticin mltiple de patrones. Por tanto, la complejidad de Ziv-Lempel y la longitud de los patrones
se pueden usar para determinar si una secuencia de nmeros pseudoaleatorios es deseable o no.
A) Relacin entre la complejidad lineal y la complejidad de Ziv-Lempel
Al estudiar la complejidad de una secuencia podemos encontrarnos con que sta muestre una
elevada complejidad lineal pero, sin embargo, al estudiar su complejidad de Ziv-Lempel nos d un
valor muy bajo. Un ejemplo de ello podra ser el caso de la secuencia S = 0000....000001 que se vio
en el apartado 6.1.2. En este apartado tambin se vio que la complejidad lineal no dice mucho por s
sola sobre la calidad de la secuencia. Si consideramos la complejidad de Ziv-Lempel de una secuencia
de este tipo, se ve inmediatamente que da un valor mnimo de complejidad, con lo que nos indica que
la secuencia no ser adecuada para aquellas aplicaciones que requieran esta propiedad. Se puede observar
que, en este caso, la baja complejidad de Ziv-Lempel de esta secuencia nos da la misma informacin
que en su momento nos haba revelado el calcular el perfil de complejidad lineal de la secuencia. Es
decir, tenemos una secuencia con complejidad lineal mxima pero no ser conveniente utilizarla en
ciertas aplicaciones, ya que el perfil de complejidad lineal no crece gradualmente sino de forma brusca
y presenta una complejidad de Ziv-Lempel mnima. Esto nos lleva a considerar la complejidad de ZivLempel como una medida adicional sobre la calidad de la secuencia que nos dar ms informacin sobre
la repeticin de patrones a lo largo de sta. En particular, esta complejidad puede utilizarse para detectar
repeticiones de patrones que no afecten a la complejidad lineal y, por tanto, sern detectables por sta.
6.1.6
Una nueva medida de la complejidad de una secuencia es la que Jansen y Boekee definen como
la complejidad de mximo orden [JAN89][JAN91]. Esta complejidad se define como la longitud del
registro de desplazamiento ms corto que puede generar la secuencia teniendo en cuenta que su funcin
de realimentacin puede ser cualquiera. El nombre de mximo orden viene del hecho que, a diferencia
de la complejidad lineal (de primer orden), la complejidad cuadrtica (de segundo orden), etc, en este
caso no existe restriccin en el orden de la funcin de realimentacin. Veamos algunas definiciones
acerca de esta complejidad.
TEOREMA 1: La complejidad de mximo orden C ( s ) de una secuencia S = s1 ,s2,...sn, con caracteres
si A, donde A es un alfabeto finito, se define como la longitud L del registro de desplazamiento
190
realimentado ms corto para el cual existe una funcin de transformacin sin memoria, tal que usada
como realimentacin de dicho registro, ste sea capaz de producir la secuencia S.
Veamos algunas propiedades asociadas a la complejidad de mximo orden:
PROPIEDAD 1: Para una secuencia S consistente en 2 o ms caracteres diferentes y posiblemente
repetidos, la complejidad C ( s ) es igual a la longitud de la mayor subsecuencia que ocurra al menos
dos veces con el carcter siguiente diferente ms uno.
PROPIEDAD 2: La complejidad de una secuencia es 0 si dicha secuencia consiste en un solo posible
carcter que se repite.
PROPIEDAD 3: El mximo valor de la complejidad de mximo orden de una secuencia de longitud n
ser n-1. Una secuencia de longitud n tendr una complejidad de n-1 si consiste en n-1 copias
consecutivas de algn determinado carcter, seguido por otro carcter distinto.
Para secuencias peridicas de periodo p, la complejidad de mximo orden presentar las
siguientes propiedades:
PROPIEDAD 4: La mnima complejidad de una secuencia peridica de periodo p es loga p , donde a
= A es la cardinalidad del alfabeto de carcteres, y x representa la parte entera del nmero x.
PROPIEDAD 5: La complejidad mxima de una secuencia de periodo p es p-1.
Al igual que ocurra con la complejidad lineal, el hecho de que la secuencia estudiada presente
una elevada complejidad de mximo orden no es condicin suficiente para demostrar la calidad de la
secuencia, y tambin es necesario estudiar cmo se produce el crecimiento de esta complejidad al
estudiar esta secuencia.
De la definicin que se ha hecho de la complejidad de mximo orden, es evidente que en el
caso de que la funcin de realimentacin sea de primer orden coincidir con la complejidad lineal. Esta
situacin se dar con las secuencias generadas por LFSR o m-secuencias.
Veamos un ejemplo:
EJEMPLO 6.2: Consideremos la siguiente secuencia de longitud 25 obtenida con un dado: S =
6544552566433434162531433. Esta secuencia presenta una complejidad de 3 caracteres, ya que todas
las subsecuencias de longitud 3 son distintas. Sin embargo, la subsecuencia (43) tiene dos sucesores
diferentes ( 433 y 434) .
PROPIEDAD 6: Una secuencia peridica S = (s1, s2,..., sP) y su recproca S*= (sP, sP-1, ..., s1) tienen
la misma complejidad.
Esta propiedad no ser vlida para secuencias no peridicas ya que, por ejemplo, la secuencia
de longitud n (aaaa...aaab) tendr complejidad n-1, y su recproca (baaa...aaa) tendr complejidad 1.
191
6 Complejidad de secuencias
s = qq
n-C
n/2
n+1-a
C
Cn
Cn+1
Se puede ver, para finalizar, cul ser el comportamiento del crecimiento de la complejidad de
mximo orden, lo que determinar su perfil de complejidad. Supongamos que tenemos una secuencia S
de longitud n cuyos elementos pertenecen a un alfabeto finito A y usamos el smbolo Cn para expresar
la complejidad de n elementos de la secuencia. Al igual que ocurra con la complejidad lineal, la lnea
n/2 constituir un valor lmite que acotar el crecimiento, y determinar si el perfil de complejidad
salta hacia un nuevo valor mayor o se mantiene en el mismo. Veamos algunas propiedades
relacionadas con este perfil de crecimiento:
PROPIEDAD 8: Si la secuencia S de longitud n presenta complejidad C n, entonces el valor de la
complejidad Cn+1 de la secuencia extendida con un nuevo smbolo sn+1 vendr dado por:
192
Cn + 1
= Cn
nC
n
=
Cn + n
n + 1 a Cn
Cn n 2
Cn < n 2
2Cn < n < Cn + a Cn
n Cn + a Cn
donde a = A , tal como se defini anteriormente, representa la cardinalidad del alfabeto de caracteres.
Esta propiedad muestra exactamente la forma en la que el perfil de complejidad de mximo orden salta
de un valor a otro al pasar a un nuevo carcter. Esto se puede ver tambin en la figura 6.3.
6.2 Problemas
PROBLEMA 6.1 Determinar la complejidad lineal de las siguientes secuencias:
a) S1 = 0000000000........
b) S 2 = 0101010101........
c) S3 = 0000000000000000000000000001
d) S4 = 0011010001111010100111100111111000100100
PROBLEMA 6.2
Calcular el crecimiento de la complejidad de la secuencia S =
0010100111011010111100101000010 utilizando el algoritmo de Massey-Berlekamp.
PROBLEMA 6.3 Calcular, para la misma secuencia del apartado anterior, el crecimiento de la media
y la varianza de la complejidad lineal.
PROBLEMA 6.4 Determinar la complejidad de Ziv-Lempel para la secuencia S =
10111011010110111000101001110
PROBLEMA 6.5 Determinar la complejidad de Ziv-Lempel para las secuencias del problema 6.1.
6.3 Bibliografa
[ASS74]
[BET89]
[CHA74]
[CHA82]
[DAI86]
ASS, J. Information-theoretic Limitations of Formal Systems. Comput. Mach., Vol. 21, pp.
403-424, 1974.
BETH, T.; DAI, Z. D. On the Complexity of Pseudo Random Sequences-or: If You Can
Describe A Sequences It cant be Random. E.I.S.S., Report 89/4, 1989.
CHAITIN, G. A Theory of Program Size Formally Identical to Information Theory. IBM,
Yorktown Haights, N.Y., Rep, RC 4805, April 1974.
CHAN, A. H.; GAMES, R. A.; KEY, E. L. On the distribution of De Bruijn Sequences of Given
complexity. J. comb theory, vol. 3, N 3, pp. 223-246, Nov. 1982.
DAI, Z. D. Proof of Ruepple`s Linear Complexity Conjeture. IEEE Trans. on Inform. theory,
Vil. IT-32, pp. 440-443, 1986.
193
6 Complejidad de secuencias
[GOL88]
[GOL88]
[GOL89]
[GRO71]
[HER82]
[JAN89]
[JAN91]
[KEY76]
[KOL65]
[KWOKR]
[MAR66]
[MAS76]
[MUNDS]
[LEM76]
[LEU85]
[RUE86]
[RUE87]
[SCH73]
[WAH71]
[YANGJ]
[ZIV78]
195
7.0 Introduccin
Ya se ha visto en captulos anteriores las diferentes tcnicas que permiten generar secuencias
de nmeros pseudoaleatorios y cmo comprobar sus propiedades. Tal como se vio en el captulo 1, las
propiedades que se van a requerir en este tipo de secuencias no van a ser siempre las mismas, sino que
dependern de la aplicacin en la que vayan a ser utilizadas. Por ejemplo, la propiedad de elevada
complejidad es una caracterstica esencial en aplicaciones de cifrado en flujo pero, sin embargo, el
hecho de que no se cumpla no afecta en absoluto el buen funcionamiento de estas secuencias en otras
aplicaciones, como por ejemplo las comunicaciones spread spectrum, la dispersin de energa de
seales en comunicaciones o los sistemas de acceso mltiple por divisin de cdigo, que tambin
utilizan este tipo de secuencias. En este captulo se van a revisar algunas de las aplicaciones que
requieren del uso de secuencias pseudoaleatorias para su funcionamiento, analizando las propiedades que
debern cumplir estas en cada caso concreto y algunos ejemplos de sistemas prcticos.
7.1.1
Fundamentos de criptografa
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
196
1)
2)
3)
4)
Para que un sistema sea de secreto perfecto, el nmero de claves (K) debe ser, al menos, igual
al nmero de mensajes con probabilidad no nula. Como en la prctica no es posible generar una clave
de longitud infinita, nos tendremos que conformar con obtener una secuencia pseudoaleatoria de
periodo mucho mayor que la longitud del mensaje que se quiera proteger. Para ello se pueden emplear
tanto tcnicas de transposicin (reordenacin de los caracteres del texto original) como de sustitucin
(basadas en combinar el texto que se quiere transmitir con las secuencias producidas por generadores de
197
1)
Las transformaciones que realice el sistema han de ser reversibles, para todo mensaje producido
por la fuente y para toda clave que pertenezca al espacio de claves:
T k1 ( T k (m)) = m
donde m M y k K
2)
La fortaleza del sistema debe basarse en la dificultad de obtener la clave a partir del propio
sistema y del texto fuente, y no en el desconocimiento de la familia de transformaciones.
3)
Para dos familias de transformaciones anlogas, tendr mayor seguridad aquella que tenga un
espacio de claves (K) mayor.
4)
Adems, al tratar un sistema de estas caractersticas se deben hacer una serie de hiptesis de
trabajo previas, como el hecho de que el criptoanalista tiene un conocimiento completo del sistema de
cifrado, ha conseguido una cantidad considerable de texto cifrado y conoce el texto en claro
correspondiente a una cierta porcin del texto cifrado. Si bien estas tres suposiciones pueden parecer
pesimistas, son casi siempre realistas, y cualquier sistema de cifrado debe ser seguro bajo las mismas.
Por supuesto, para cada situacin, los trminos considerable y cierta porcin deben ser cuantificados.
Sus valores precisos dependern del sistema que se considere y el nivel de seguridad requerido. Este
nivel de seguridad vendr determinado por el cumplimiento de una serie de condiciones:
1)
Para usuarios autorizados, las operaciones de cifrado y descifrado deben ser simples y eficaces.
2)
La operacin de descifrado deber ser muy complicada para los usuarios no autorizados.
3)
No debe ser una condicin imprescindible que el algoritmo de cifrado se mantenga en secreto.
4)
La eficiencia y seguridad obtenida debe ser independiente de los datos que se vayan a transmitir.
La divisin ms comn entre los cifradores es la que los clasifica en cifradores de bloque o
cifradores de flujo. Mientras que los cifradores en bloque dividen el texto en bloques de tamao fijo, y
operan de forma independiente sobre cada uno de ellos (son pues cifradores por sustitucin simple y
con un solo estado interno), los cifradores en flujo dividen el texto en caracteres y cifran cada unidad
del mensaje (por ejemplo cada bit) mediante una funcin, cuya dependencia con el tiempo viene
gobernada por el estado interno del cifrador, de forma que tras el cifrado de cada carcter, el dispositivo
198
cambia de estado interno de acuerdo a una cierta regla. Esto hace que en un cifrador en flujo, dos
caracteres iguales en el texto a cifrar puedan dar dos caracteres diferentes en el texto cifrado, a diferencia
de lo que ocurre en los de bloque. Los cifradores en flujo pueden poseer varios estados internos y
requieren de un vector de inicializacin que ser la clave del criptosistema. En este captulo slo se
estudiarn los cifradores de flujo que, como se ver ms adelante y por su forma de funcionamiento,
necesitan disponer de una secuencia pseudoaleatoria generada por algn mtodo como los que se han
visto en los captulos anteriores para realizar el cifrado.
7.1.2
B.S.S
kj
mj
kj
Canal seguro de transferencia de claves
cj
mj
Si la clave k, que es precisamente la secuencia aleatoria, est realmente producida por una
fuente binaria simtrica, es decir, por una fuente capaz de producir en cada instante un uno o un cero
con probabilidd 1/2 independientemente de los bits producidos anteriormente, se puede considerar al
sistema one-time-pad como un sistema completamente seguro contra cualquier tipo de ataque que parta
tan slo del conocimiento del texto cifrado y no disponga de informacin del mensaje que se cifr. Se
puede observar que si el atacante dispusiera adems de parte del texto en claro (lo que puede darse con
199
mucha probabilidad en la prctica), podra obtener, a partir de ambos, parte de la secuencia aleatoria.
Esto no ser un problema serio si la secuencia es realmente aleatoria. Sin embargo, si sta est
generada a partir de mquinas de estados finitos, tales como los que se han visto en captulos
anteriores, puede representar un problema si la secuencia de dicho generador muestra una elevada
predictibilidad, ya que un ataque criptoanaltico permitira obtener la estructura que la produce y
entonces el atacante podra, al disponer ya de la secuencia pseudoaleatoria completa, descifrar
totalmente todo el texto cifrado. Ms adelante se vern algunos de los mtodos criptoanalticos ms
utilizados.
Aunque el sistema one-time-pad se considera, al menos tericamente, incondicionalmente
seguro debido a que presupone utilizar secuencias completamente aleatorias, presenta problemas de
difcil solucin en la prctica a la hora de generar y distribuir las claves. Esto es debido a que, puesto
que el flujo de bits de clave debe ser tan largo como el mensaje a cifrar, y debe ser totalmente
aleatorio, la nica manera posible de que el receptor use la misma secuencia que el transmisor es
envindosela (de forma segura!) antes de enviarle el criptograma o mensaje cifrado, para que pueda
descifrarlo.
Los cifradores de flujo intentan solucionar el problema de la gestin (distribucin) de claves
usando un algoritmo determinista y una clave finita para generar un flujo de bits aleatorios que se
sumar, bit a bit, al texto en claro para cifrarlo, tal como se muestra en la figura 7.2. La clave finita
(y secreta) k debe tener una longitud L manejable para facilitar su intercambio, y el algoritmo debe ser
lo suficientemente eficiente como para generar el flujo de bits aleatorios a la velocidad que requiera la
aplicacin que lo utilice. Evidentemente, hay un compromiso entre la seguridad que se podr alcanzar y
la longitud del flujo de bits aleatorios obtenidos dada una longitud de clave.
Texto en claro
Texto cifrado
Flujo de
clave s
Clave
k
Generador de
bits
Pseudoaleatorios
CIFRADO
Texto en claro
Clave
k
Flujo de
clave s
Generador de
bits
Pseudoaleatorios
DESCIFRADO
Hay dos puntos cruciales a la hora de establecer los criterios de diseo de cifradores en flujo
[ZEN91][RUE89]. El primero es la velocidad a la que se deben generar los bits (es decir, lo eficiente
que debe ser el algoritmo de generacin o, dicho de otra forma, cmo penaliza a la velocidad de la
comunicacin el hecho de poner el cifrador de flujo) y, en segundo lugar, lo seguro que se necesite que
sea el sistema (cuya mejor medida es el tiempo que se tardara en romperlo).
Un cifrador de flujo rompe el mensaje en claro m (m M) en un flujo sucesivo de caracteres
m1, m2, m3,..., y cifra cada carcter mi mediante una transformacin T variante en el tiempo bajo el
control del smbolo si de la secuencia pseudoaleatoria en el instante i, con lo que se obtiene un nuevo
carcter de la secuencia de texto cifrado ci = T(mi, ki). Tras cada carcter cifrado, el dispositivo cambia
de estado interno de acuerdo con una cierta regla. En esta aplicacin, a la secuencia pseudoaleatoria se
200
la denomina flujo de clave. El flujo de clave (o keystream en ingls) s = s1, s2, s3,... se obtiene a
partir de la clave secreta k (k K). El mecanismo por el cual se expande la clave secreta k, que suele
ser de corta longitud, en un gran flujo de bits pseudoaleatorio s, se le llama generador pseudoaleatorio.
Los cifradores de flujo se usan ampliamente para obtener la confidencialidad de la informacin.
Se puede concluir que la transformacin T consiste en combinar los caracteres que constituyen
el mensaje a transmitir con los caracteres de salida de un generador de bits pseudoaleatorios y ste
consistir en una familia de funciones { GL : L N } que extender una clave k (k K) de longitud
corta L a una secuencia s de longitud P mucho mayor:
GL : { 0, 1} L { 0, 1} P
7.1.3
s P = GL ( k L )
Parte conductora F
e0
e1
e2
.......
en
s
Funcin no lineal f
en una parte conductora F que es la que cambia de estado segn una determinada regla, y una funcin
de estado no lineal f que hace que la secuencia producida por la parte conductora sea ms impredictible,
tal como se puede ver en la figura 7.3. Por tanto, el proceso de generacin del flujo de bits de clave se
puede representar como G = (F, f). Puesto en notacin abreviada, donde se establece la relacin
funcional entre la clave k y el flujo de claves sP:
G: k s P
s P = G( k )
201
donde k representa una clave escogida de un espacio de claves K, y E denota el espacio de estados
internos del generador (sus distintos estados internos son los elementos: e0, e1, e2,..., donde e0 es el
estado inicial).
ei + 1 = F(ei )
si = f (k, ei )
En este caso el siguiente estado de la parte conductora no depende de la clave pero est
garantizado que pasar a travs de todos (o la mayora) de los estados del espacio de estados. Ejemplos
de tales funciones conductoras son los contadores y los LFSR de longitud mxima. La fortaleza
criptogrfica reside, sin embargo, en la funcin de estado no lineal de salida f.
A2) Modo de realimentacin de salida o de realimentacin interna
En este modo se cumple que:
ei + 1 = F(k, ei )
si = f (k, ei )
Ahora la funcin de estado no lineal f no depende de la clave. Frecuentemente este mtodo
consiste simplemente en usar un bit del estado actual como predicado para la realimentacin (por
ejemplo, el bit menos significativo o de paridad).
202
A veces se usa una variante de este modo donde la clave k determina slo el estado inicial:
e0 = k
ei + 1 = F(ei )
si = f (ei )
En los sistemas de flujo sncronos, si un carcter del texto cifrado se pierde, tanto el emisor
como el receptor deben resincronizar sus generadores de claves. Si se pierde la sincronizacin, debe
recuperarse inicializando todo el sistema, pues no se recupera por s sola. Esto garantiza que ante
cualquier ataque se desincronizar y no se podr alterar el contenido del mensaje.
Por tanto, los cifradores en flujo sncronos son inmunes a ataques activos de insercin,
eliminacin y repeticin de parte de la secuencia del texto cifrado, garantizando as la integridad de la
informacin.
B) Cifradores de flujo autosincronizantes
A diferencia de los anteriores, en los que cada nuevo smbolo de salida del generador de
secuencias pseudoaleatorias vena determinado slo en funcin del estado interno y de la clave, en los
cifradores autosincronizantes el nuevo estado (y, por tanto, la salida del generador) depende adems de
N smbolos previos del texto cifrado, tal como se ve en la figura 7.5. El modo ms comn de cifrador
de flujo autosincronizante es el de realimentacin de texto cifrado, que es el que muestra la figura 7.5,
y que cumple que:
ei = F(ci 1 , ci 2 ,..., ci N )
si = F(k, ei )
La fortaleza criptogrfica reside en la funcin de estado no lineal f. Hay que notar que la
entrada (los smbolos del texto cifrado) y la salida (el flujo de clave) de la funcin de estado no lineal f
son conocidos por el criptoanalista en un ataque con texto en claro conocido.
Con este tipo de sistemas, si se altera o se pierde un bit (o carcter) del texto cifrado antes de
que ste llegue al receptor, el error se propagar durante los N bits (o caracteres) descifrados siguientes,
pero el cifrador se resincronizar una vez reciba de nuevo N bits (o caracteres) correctos del texto
cifrado.
Una propiedad muy importante de este tipo de cifradores es que la secuencia de salida no es
peridica debido a la dependencia que tiene el texto cifrado con los caracteres precedentes (y, por tanto,
con el mensaje, el cual ser con toda seguridad no peridico).
Las ventajas del mtodo autosincronizante son: es capaz de recuperarse de los errores que se
hayan producido en el canal debido a que el tamao de su memoria interna es limitado, y protege al
mensaje contra ataques basados en archivos de cifrado, por lo que estar protegido contra bsquedas.
Sus desventajas son la dificultad que presentan para ser analizados, incluso por el propio
diseador (ya que todas sus caractersticas dependen del mensaje que se transmite), y el hecho de que no
son capaces de proteger contra posibles ataques activos de insercin, eliminacin y repeticin de
textos.
Siempre ser posible obtener un sistema autosincronizante a partir de otro sncrono,
simplemente modificando el punto de realimentacin del registro interno del sistema.
203
memoria interna
memoria interna
7.1.4
Requerimientos de seguridad
Los cifradores de flujo presentan una gran utilidad para el cifrado de datos asncronos y datos
sin estructura de trama en un amplio rango de velocidades, que va desde datos a baja velocidad hasta
velocidades elevadas del orden de incluso 150 Mbits/seg, o mayores.
La mayora de las publicaciones en el tema coinciden en identificar tres consideraciones
referentes a la seguridad que debe cumplir un cifrador en flujo [BEK82][ZEN91][SHA81]:
R1)
El nmero de claves posibles debe ser suficientemente grande como para que el criptoanalista
desista de probarlas todas en un ataque por fuerza bruta.
R2)
Su periodo deber ser al menos tan largo como el mensaje que debe cifrar, en analoga con el
sistema de Vernan.
R3)
Se deber intentar que las secuencias pseudoaleatorias producidas por el generador escogido
para el cifrador en flujo garantice el cumplimiento de los tres requisitos anteriores. R1 es fcil de
conseguir, ya que en la especificacin del diseo se puede imponer el uso de longitudes de clave (L)
suficientemente largas, e imponer que las 2L combinaciones binarias que forman el espacio de claves
sean posibles y equiprobables. El segundo requisito tampoco es difcil de lograr, ya que se puede hacer
que las estructuras generen un periodo tan grande como queramos actuando sobre algunos de sus
parmetros de diseo, tal como se vio en el captulo 4, para todos los generadores estudiados. Tambin
se vio que una forma de hacer crecer el periodo de las secuencias obtenidas era con el uso de tcnicas de
crecimiento en cascada de generadores. En cualquier caso, aparecern compromisos entre los requisitos
R1 y R2 si se considera que debe haber una gestin de claves (tanto ms cmoda cuanto menor sea el
nmero de stas) o si hay limitaciones tecnolgicas o de volumen (en cuyo caso el crecimiento que
hagamos de la estructura del generador no puede ser descuidada).
El requisito R3 es realmente la piedra angular en el diseo de los cifradores en flujo. Puesto
que en la prctica los algoritmos que se utilizarn para generar las secuencias aleatorias sern
deterministas y generarn el flujo de bits al ser inicializados con una clave secreta finita, puede ocurrir
que no todas las posibles secuencias de bits que generen sean independientes. Esto implicara que cada
204
criptograma no representase de igual forma un mensaje dado, con lo que la interceptacin de este
criptograma podra dar informacin acerca del mensaje. Si el criptoanalista realizase un ataque con
texto en claro conocido podra, a partir de ste y de su correspondiente texto cifrado, obtener una
porcin del flujo de bits pseudoaleatorios y, si la secuencia no fuese impredictible, obtener a partir de
ellos informacin sobre otras partes de este flujo de bits. Este tipo de ataques representan la principal
debilidad de los cifradores en flujo.
Por tanto, un requerimiento fundamental es que el conocimiento de que el flujo de bits
aleatorio haya sido generado mediante un algoritmo determinista conocido, no debe proporcionar
ninguna utilidad para la extraccin de la informacin del mensaje a partir de un criptograma
interceptado.
Algunas de las propiedades en las que se pone mayor nfasis cuando se proponen diseos de
generadores de secuencias pseudoaleatorias para sistemas de cifrado en flujo para evaluar el
cumplimiento del requisito R3 son el periodo, la complejidad lineal y el crecimiento de sta, la
aleatoriedad o distribucin estadstica de los bits y las propiedades de correlacin. Ser de esperar que
las secuencias empleadas por sistemas de cifrado en flujo tengan un buen comportamiento respecto a
todas estas propiedades.
7.1.5
205
206
7.1.6
Criptoanlisis
k k1
k
se la llama la tasa de redundancia en la informacin de la clave del sistema. Los sistemas que se
pueden romper mediante ataques analticos puros presentan una redundancia de informacin de la clave
= 1, aunque estos casos se dan raramente. El problema residir en encontrar la redundancia k k1 .
La mayora de los generadores de secuencias pseudoaleatorias descritos en el captulo 4 han
sido criptoanalizados con xito (rotos) utilizando algn mtodo basado en encontrar la redundancia de la
clave y reduciendo as el tiempo que se empleara en romperlo utilizando la bsqueda exhaustiva
207
[ZEN91][BOY89]. Esto no quita para que muchos de ellos se estn usando de forma efectiva en
sistemas actuales en uso, ya que el hecho de usar un sistema de gestin de claves eficiente que cambie
stas lo suficientemente rpido es una contramedida eficiente para evitar este tipo de ataques. Lo ideal,
sin embargo, sera elegir un algoritmo que fuese, en principio, resistente a cualquier tipo de ataque.
Sin embargo, el problema de los cifradores de flujo es que, aunque podamos obtener un generador de
secuencias pseudoaleatorias que sea resistente contra los ataques criptoanalticos conocidos, no
podemos garantizar que no pueda encontrase algn mtodo matemtico que sea capaz de encontrar
alguna debilidad en la aleatoriedad de la secuencia que produce y mejorar las condiciones del ataque por
fuerza bruta.
A continuacin se describen (aunque de forma breve y descriptiva debido a la complejidad que
un anlisis ms profundo implicara) algunos de los mtodos criptoanalticos ms ampliamente
utilizados para criptoanalizar sistemas de cifrado en flujo.
A) El test de consistencia lineal (LCT)
Este ataque criptoanaltco, propuesto por Zeng, Yang y Rao [ZEN89], se basa en un mtodo
algebraico que aprovecha la linealidad existente en las secuencias producidas por los generadores de
secuencias pseudoaleatorias. El mtodo resulta muy efectivo para romper generadores tales como el
generador multivelocidad de Massey-Ruepple y el generador de Jennings [ZEN91][ZEN89].
Si bien ya conocemos el mtodo de bsqueda exhaustiva para encontrar una clave k, el LCT
obtiene la ventaja mediante el anlisis de una porcin ms pequea de esta clave, probndola de forma
exhaustiva disponiendo de un criterio que permita darla, o no, por vlida.
Para ello, se realiza una estimacin precisa de la probabilidad de consistencia de un sistema
algebraico de ecuaciones lineales Ax = b , donde A es una matriz aleatoria obtenida a partir de una
pequea parte k1 de la clave completa k y de tamao m n (m>n), y b es un vector fijo diferente de
cero. Para este sistema de ecuaciones se cumplir que:
1) La matriz A de coeficientes depender tan slo de la subclave k1.
2) El vector b se obtendr a partir de un cierto segmento de la secuencia de salida.
Si la subclave k1 no se elige correctamente, el sistema Ax = b ser inconsistente con una
probabilidad cercana a 1. Sin embargo, si resulta ser consistente, se puede deducir de su solucin la
parte restante de la clave k, es decir, k-k1. Adems, este hecho implicar que k k1 bits de la parte
restante de la clave k no contribuirn sustancialmente a la seguridad del sistema global, y se habr
descubierto una cierta redundancia en la clave. Por tanto, el metodo consistir en aplicar una bsqueda
exhaustiva para determinar la subclave k1, usando como criterio de identificacin la consistencia del
sistema de ecuaciones lineal correspondiente y si esto resulta exitoso, la solucin del sistema permitir
determinar el resto de la clave k.
B) El ataque por correlacin de Siegenthaler
En muchos generadores estudiados en este libro, la secuencia pseudoaleatoria z(t) se obtena
combinando las secuencias producidas por otros subgeneradores xi(t) (1 i k). Ya se vio que
existir una dependencia estadstica entre z(t) y cada xi(t) [GEF73], que ser ms o menos fuerte segn
el buen o mal criterio que se haya seguido a la hora de elegir la funcin combinadora [MEI92].
208
En algunos generadores, como los de Geffe [GEF73], Bruer [BRU82] o Pless [PLE77]
[RUB79], que se vieron en el captulo 4, esta dependencia estadstica entre la secuencia de salida y las
subsecuencias que se usan (que en los tres casos son la salidas de los LFSRs) es bastante acusada y se
puede aprovechar para establecer un tipo de ataques conocidos comnmente como de divide y vencers
[SIE85] para poder determinar la clave. Su nombre viene de la forma en que se realizan, ya que se
basan en analizar separadamente las diferentes subsecuencias xi(t). Adems, el hecho de dividir el
problema en otros de menor envergadura, permite abordar cada uno de ellos empleando la bsqueda
exhaustiva.
La relevancia criptogrfica de este hecho fue presentada por primera vez por Blaser y
Heinzman [BLA82], y estudiada porteriormente por Siegenthaler [SIEGE], quien establece que la
secuencia de salida z(t) se puede ver como una perturbacin sobre cada una de las subsecuencias xi(t), y
que esta perturbacin vendr definida por una fuente de ruido asimtrica y sin memoria con
probabilidad p (sta ser adems la probabilidad correspondiente de correlacin). Si la probabilidad p
difiere del valor 1/2, ser posible para un atacante descubrir subsecuencias xi(t) (desconocidas para l)
calculando la correlacin de cada una de sus posibilidades con la secuencia de salida z(t), y aceptando la
candidata que d un valor en esta correlacin por encima de un umbral [STA89].
Hay que observar que para realizar este tipo de ataque, el criptoanalista debe disponer de una
cierta porcin de la secuencia z(t) y si a partir de dicha porcin de la secuencia el ataque resulta exitoso,
podr determinar las subsecuencias y a partir de ellas, puesto que ya dispondr de la informacin
completa del generador y de las claves que se han empleado, ser capaz de determinar toda la secuencia
z(t).
Si el atacante sabe que las subsecuencias empleadas las producen LFSRs, y adems conoce su
estructura (por ejemplo, en el caso de que el algoritmo de cifrado sea de dominio pblico), slo le
faltar obtener las claves (los estados iniciales de los LFSRs), y para ello deber tan slo probar de
forma exhaustiva todos estos posibles estados iniciales para cada LFSR. Si el LFSR tiene n celdas,
ello implicar probar 2n-1 posibilidades para cada uno de los LFSRs (aunque en media, tan slo deber
probar la mitad antes de dar con la correcta). En la prctica, este ataque slo tendr validez para LFSRs
de hasta n = 60 celdas.
Debido al enorme xito obtenido mediante este tipo de ataques sobre generadores basado en
funciones combinadoras, Siegenthaler y Ruepple proponen [MAT88][CAM78] el uso de funciones que
tengan mxima inmunidad a la correlacin.
Este concepto, que ya se vio en el captulo 3, establece que si se combinan N LFSRs
mediante una funcin combinadora que cumpla esta caracterstica, no debe existir correlacin entre la
secuencia de salida y las secuencias producidas por cualquier subconjunto de menos de N LFSRs. Las
funciones combinadoras que cumplan esto, producirn secuencias que no se podrn atacar por este tipo
de tcnicas del tipo divide y vencers.
Sin embargo, recientemente Meier y Staffelbach [MEI92][MEI89] desarrollaron dos
algoritmos que permiten descubrir esta correlacin entre la salida de cada LFSR y la secuencia de salida
del generador de una forma mucho ms efectiva que la de la bsqueda exhaustiva en el caso de que los
LFSR contengan funciones de realimentacin a los que contribuyan pocas celdas, pudiendo llegar a
atacar LFSRs con n = 1.000 e incluso ms celdas. Otro algoritmo eficiente para este tipo de ataques es
el que proponen Chepyzhov y Smeets [CHEPY].
La aparicin de este tipo de ataques nos lleva a considerar la mxima inmunidad a la
correlacin como una condicin no suficiente para evitarlos, por lo que hay que ampliar los requisitos
de diseo para este tipo de generadores:
209
1)
Debe existir inmunidad a la correlacin de mximo orden respecto a las salidas de los LFSR.
2)
No debe existir correlacin entre la secuencia de salida y cualquier LFSR que tenga menos de 10
celdas contribuyendo a su realimentacin .
3)
No debe existir correlacin entre la secuencia de salida y cualquier LFSR con menos de 100
celdas.
El ataque propuesto por Siegenthaler [SIEGE] es, pues, efectivo sobre generadores basados en
funciones combinadoras con inmunidad a la correlacin de orden cero (cuando la salida est correlada
con al menos una entrada) y se basa en medir la distancia de Hamming entre la secuencia de salida y un
trozo del texto cifrado que el atacante haya podido conseguir.
Tal como se vio en el captulo 4, existen otro tipo de generadores que se basan en emplear
tcnicas de reloj para generar las secuencias pseudoaleatorias. El hecho de usar relojes con pautas
irregulares reduce considerablemente el peligro frente a ataques basados en el estudio de la correlacin.
Sin embargo, hay que tener cuidado al emplear LFSRs atacados por relojes no uniformes y
combinados mediante funciones sin memoria, puesto que existen ataques basados en la distancia
restringida de Levenshtein [GOL91] que permiten tambin realizar ataques de correlacin sobre ellos.
Si suponemos que las operaciones que se pueden emplear sobre una secuencia para transformarla en
otra son la sustitucin, el borrado y la insercin de elementos, se puede definir la distancia de
Levenshtein entre dos secuencias como el mnimo nmero de estas operaciones necesarias para
transformar una secuencia en la otra. A partir de esta definicin, se puede establecer la distancia
restringida de Levenshtein entre dos secuencias u (de longitud M) y v (de longitud N), con N M,
como la mnima suma de distancias asociadas con las operaciones sustitucin, borrado e insercin
necesarias para obtener una secuencia a partir de la otra, bajo la restriccin de que el mximo nmero
de borrados posibles consecutivos sea E. Esta definicin lleva inherente tambin el nmero mximo de
inserciones posibles (M-N) y de sustituciones (N). Adems, se deber cumplir la restriccin
N M (E+1)N+E.
Basndose en esta distancia, Golic y Mihaljevic establecen en [GOLIC] un algoritmo
recursivo para realizar un ataque por correlacin sobre LFSRs con relojes no uniformes combinados
con funciones sin memoria con inmunidad a la correlacin de orden 0.
C) El mtodo del sndrome lineal
Puesto que los mtodos anteriores utilizan la bsqueda exhaustiva para determinar la clave de
un criptosistema, son mtodos ms apropiados para descubrir la redundancia en la clave de los diversos
generadores pseudoaleatorios que algoritmos prcticos para recuperar el texto en claro en un sistema de
cifrado en flujo.
Sin embargo, si la dependencia estadstica entre la secuencia pseudoaleatoria empleada y la
secuencia de texto en claro a cifrar es suficientemente grande, se puede usar de forma muy efectiva un
ataque analtico basado en el mtodo del sndrome lineal propuesto por Zeng y Huang [ZEN88]. A
continuacin se describen las bases de este mtodo.
210
Supongamos que la fuente de texto en claro, que llamamos m={m(t)}, est estadsticamente
desbalanceada, de forma que contiene mayor nmero de ceros que de unos. La probabilidad de
coincidencia entre la secuencia pseudoaleatoria (que llamaremos s(t)) y la secuencia del texto cifrado
c(t) (que se obtendr mediante la operacin c( t ) = m( t ) s( t ) en un cifrador en flujo como ya
conocemos) vendr determinada por:
p = prob( s( t ) = c( t ) ) = 1 2 +
con >0
k>h> 0
y a partir de cada uno de estos trinomios, se pueden obtener las siguientes tres seales:
1 = c( t ) c( t + l ) c( t + k )
2 = c( t l ) c( t ) c( t + k l )
3 = c( t k ) c( t k + l ) c( t )
que se denominan sndromes. Zeng y Huang [ZEN88] demuestran que la ventaja en la coincidencia
entre cada i ( t ) y s(t) es 2 2 que, aunque es ms pequea que la ventaja de partida , es ms
conveniente, ya que se puede intentar amplificarla si se considera el efecto global que se tendra al
tomar un conjunto tanto ms y ms grande de sndromes. El descubrimiento y amplificacin de
ventajas es un principio de gran importancia en el criptoanlisis.
Se puede concretar ms este hecho si se considera un conjunto de 2m+1 sndromes y se revisa
la secuencia c(t) de acuerdo con la siguiente regla de decisin mayoritaria:
c' (t ) = c(t )
si al menos
c' (t ) = c(t )
en otro caso
m + 1 sndromes son 1
En [ZEN88] se demuestra que la ventaja en la coincidencia m entre s(t) y c`(t) tender a 1/2
cuando m crezca indefinidamente. Esto implica que seremos capaces de recuperar la secuencia s(t) (y,
por tanto, la secuencia m(t)) a partir de la secuencia c(t) tan slo incrementando el nmero de
sndromes que se usen.
Se podra hacer, sin embargo, un acercamiento ms prctico [ZEN90] mediante el uso de
revisiones que interacten entre s, utilizando ahora un nmero fijo adecuado de sndromes calculados a
partir de frmulas fijas. En particular, cuando es suficientemente grande (por ejemplo =0,25), ser
fcil recuperar la secuencia s(t) a partir de un segmento de la secuencia c(t) con una longitud
211
linealmente proporcional con el nmero de celdas L del LFSR que se quiere atacar. Adems, el
esfuerzo computacional que se deber realizar tambin ser linealmente proporcional con L.
Con este mtodo se pueden romper con facilidad sistemas de cifrado en flujo que usen
generadores de secuencias pseudoaleatorias como el generador de Geffe o el generador de marcha y
espera de Beth Piper [ZEN91].
Ya se han visto los tres tipos de ataques ms comunes para obtener la redundancia en la clave
que pueda presentar un sistema de cifrado en flujo y reducir as el esfuerzo que requerir la bsqueda
exhaustiva de la clave. Sin embargo, el hecho de que un generador no sea roto por ellos, no significa
que no se pueda determinar otro tipo de metodologa que permita romperlo. Sin embargo el hecho de
que resista estos ataques nos dar ms y ms informacin sobre la ausencia de esta redundancia y, por
tanto, de su fortaleza criptogrfica. Algunos generadores que se han mostrado resistentes a los tres
tipos de ataques que se han descrito son la cascada de Gollmann y el generador de marcha y espera con
control bilateral (ambos se describieron en el captulo 4) [ZEN91].
7.1.7
Si bien en los apartado anteriores se ha descrito, aunque muy brevemente debido a la enorme
amplitud del tema, la teora bsica del cifrado en flujo, puede ser interesante ver algunos sistemas de
comunicaciones que usan este tipo de tcnicas para proteger la informacin, y ver en qu forma usan
los generadores de secuencias pseudoaleatorias para conseguirlo. Para ello se van a describir tres
sistemas. En primer lugar se ver el sistema de acceso condicional del estndar MAC/paquetes para
cifrar seales de televisin, bien sea a travs de enlaces satlite o cable. En segundo lugar se ver una
propuesta de generador de secuencias pseudoaleatorias para el sistema de cifrado en flujo de la futura
Red de Banda Ancha Espaola ATM, dentro del proyecto nacional PLANBA (Plan Nacional de Banda
Ancha). Tambin se describir el sistema de cifrado en flujo utilizado para conseguir confidencialidad
en los sistemas de telefona mvil GSM.
A) El sistema de acceso condicional Eurocrypt
Una aplicacin que emplea el cifrado en flujo se encuentra en la difusin de seales tanto de
imagen, como de voz y de datos a travs de enlaces va satlite y cable. La posibilidad de enviar
servicios de forma encriptada permite hacerlos accesibles slo a aquellos usuarios que cumplan ciertos
requisitos, como por ejemplo haber pagado por ellos. Por tanto, a estos sistemas se les suele llamar de
acceso condicional y deben realizar una serie de transformaciones sobre las seales en claro, de forma
que las haga ininteligibles. Estas transformaciones estarn gobernadas por un parmetro llamado clave,
de forma que las seales, una vez cifradas, sean inaccesibles para todos aquellos que no dispongan de
esta clave. Un sistema de estas caractersticas es el sistema de acceso condicional Eurocrypt, asociado
al estndar de transmisin de seales de televisin MAC/paquetes [EBU86][ALA86].
Este sistema de acceso condicional se puede dividir en dos partes por razones de conveniencia:
el sistema de gestin de claves, que se encarga de distribuir las claves necesarias para cifrar los
programas, y el sistema de cifrado, encargado de procesar las seales de los programas para hacerlas
ininteligibles a los usuarios no autorizados, empleando para ello generadores de secuencias
pseudoaleatorias de elevado periodo. Las celdas de los LFSRs que emplean estos generadores de
secuencias pseudoaleatorias se cargarn inicialmente con los bits de lo que se llaman las palabras de
212
control (CW) y tienen 60 bits de longitud. Se trata, pues, de un sistema de cifrado en flujo y, por
tanto, los procesos de cifrado en el emisor y de descifrado en el receptor deben estar sincronizados. Las
seales cifradas, el contador de tramas (que se describir a continuacin) y las seales de sincronizacin
se transmiten al receptor a travs del mismo canal de transmisin.
El sistema de gestin de claves es el encargado de transmitir las claves entre el centro emisor
y los abonados que las hayan adquirido. Para dar mayor seguridad al sistema, las palabras de control,
que sirven de estado inicial de los generadores del cifrador y del descifrador, se cambian cada 256 tramas
de televisin (lo que ocurre cada 10,24 segundos), pero se transmiten cada 0,5 segundos
aproximadamente para permitir un rpido enganche al descifrado a los receptores que sintonicen con el
canal. Para ello, se utiliza un contador de tramas cclico de 8 bits (FCNT) que se transmite en la lnea
de televisin 625. Tal como muestra la figura 7.6, las palabras de inicializacin de los generadores
pseudoaleatorios se obtienen al combinar las palabras de control (CW) con el contador de tramas de 8
bits. Veamos cmo se produce esta combinacin. Las funciones lgicas combinacionales que sirven
para combinar las palabras de control (CW1 y CW2) con los estados del contador cclico de 8 bits
(FCNT) son las mismas tanto para el sistema de descifrado de imagen como para el de voz y datos. El
resultado de esta combinacin ser la palabra de inicializacin IW de 60 bits que se utilizar como
inicializacin a los LFSR. La combinacin se realiza de la siguiente forma:
Sean F 0 , F 1 ,..., F 7 los 8 bits del contador cclico FCNT. Si se dividen los 60 bits de la
palabra de inicializacin en bloques de 8 bits: (IW0 = I0I1...I7, IW1 = I8I9...I15,..., IW6 = I48I49...I55, y
IW 7 = I56I57I58I59) y lo mismo para la palabra de control (CW0 = C 0C 1...C 7, CW1 = C 8C 9...C 15,...,
C W 6 = C 48 C 49 ...C 55 y CW7 = C 56 C 57 C 58 C 59 ), entonces, estas palabras IW se obtienen de la
siguiente forma:
IW0 = CW0 FCNT
IW3 = CW3 FCNT
IW6 = CW6 FCNT
213
SONIDO Y DATOS
CW 2
60
60
LOGICA
GENERADOR DE
IW 2
JENNINGS J1
DATOS DES-
JENNINGS J3
DE ACCESO
CONDICIONAL)
61
CIFRADOS
COMBINACIONAL
(DEL SISTEMA
SONIDO Y
GENERADOR DE
CW
CW1
CARGA
FCNT
LOCAL
60
(IMPULSO DE
TRAMA)
60
LOGICA
COMBINACIONAL
IW 1
RELOJ
(61*VAL)
CARGA
RELOJ
(CLK2)
(VAL)
GENERADOR DE
JENNINGS J2
16 BITS POR
LINEA DE IMAGEN
A DESCIFRAR
IMAGEN
CW
LOCAL
FCNT
CARGA
(IMPULSO
DE TRAMA)
RELOJ
(16*FRECUENCIA
DE LINEA)
214
Las salidas de los registros atacan a las lneas de seleccin (denotadas por A0...A4) y a las de
entrada (denotadas por B0...B31) del multiplexor. Las conexiones se realizan de la siguiente manera:
x1 se conecta a A0
x2 se conecta a A1
en general, para las x`s:
xi se conecta a B(i-3) para i entre 3 y 10
y1 se conecta a A2
y2 se conecta a A3
y3 se conecta a A4
en general, para las y`s:
yn se conecta a B(n+4) para n entre 4 y 27
Y1 ..........................Yi.............................Y31
CK
LD
LFSR de 31 celdas
8 bits
24 bits
3 bits
2 bits
CK LD
X29
.
.
.
.
.
Xi
.
.
.
.
.
X1
B0 ..............B30,B31
A0
.
. MULTIPLEXOR
.
.
.
A4
1 bit
CK
I60 ..................I1, I0
Palabra de inicializacin
de PRBS3
En la figura 7.8 se puede ver la estructura del generador de Jennings J3. El polinomio de
realimentacin del LFSR es:
SR 5 = 1+x 2 +x 3 +x 7 +x 8 +x 9 +x 10 +x 12 +x 15 +x 19 +x 20 +x 22 +x 24 +x 25 +x 28 +x 30 +x 33 +x 34 +x 3 7
+x 40 +x 43 +x 44 +x 46 +x 54 +x 56 +x 60 +x 6 1
La palabra IW de 61 bits que sirve como inicializacin para el LFSR SR5 se define como
I60...I0, o bien Ii, donde i toma valores entre 0 y 60. As pues, la carga se produce como sigue: SR5: Ii
se carga en la celda x(60-i) para i variando entre 0 y 60.
Las salidas de los registros atacan a las lneas de seleccin (denotadas por A0...A4) y a las de
entrada (denotadas por B0...B31) del multiplexor y las conexiones se realizan de la siguiente manera:
x5(i+1) se carga en Ai para i entre 0 y 4
x(30+i) se carga en Bi para i entre 0 y 31
215
CK
LD
Y1 .............................Yi..................Y31
LFSR de 61 celdas
X5
X25
(SR5)
X30
X61
31 bits
B0 .................B30,B31
A0
.
.
.
.
.
A4
5 bits
LD = Pulso de carga a la
frecuencia de la seal VAL.
MULTIPLEXOR
1 bit
Salida serie del PRBS para
desembrollar sonido y datos
Finalmente, la figura 7.9 muestra la estructura del generador de Jennings J2 empleado para
realizar el cifrado de la seal de imagen.
CK
LD
X29
.
.
.
.
.
Xi
.
.
.
.
.
X1
Y1 .....................Yi........................Y31
LFSR de 31 celdas
31 bits
B0 ...............B30,B31
5 bits
A0
.
. MULTIPLEXOR
.
.
.
A4
Diferencia
de color(8 bits)
1 bit
CK
CKLD
(SR3)
Luminancia
(8 bits)
C15....................C0
Palabra de inicializacin de PRBS3
216
Las palabras IW de 60 bits que sirven como inicializacin para los LFSR. SR3 y SR4 se
definen como:
SR3: Ii se carga en la celda y(31-i) para i variando entre 0 y 30.
SR4: Ii se carga en la celda x(60-i) para i variando entre 31 y 59.
Las salidas de los registros atacan a las lneas de seleccin (denotadas por A0...A4) y a las de
entrada (denotadas por B0...B31) del multiplexor y las conexiones se realizan de la siguiente manera:
xi se conecta a A(i-1) para i entre 1 y 15
yi se conecta a B(i+1) para i entre 1 y 31
Mediante estos generadores de Jennings, con las modificaciones adicionales respecto a la
estructura bsica mostrada en el captulo 4 consistente en usar cascadas y aadir un contador cclico
bsico, se obtiene un sistema final cuyas propiedades criptogrficas son bastante satisfactorias: buenas
propiedades estadsticas, gran periodo, elevada complejidad lineal y ausencia de picos de correlacin
fuera de fase. Sin embargo, el generador de Jennings puede romperse mediante el mtodo de
consistencia lineal [ZEN89] visto anteriormente. Aplicando este mtodo, bastan N = m + 2h bits de la
secuencia de salida del generador, a los que se deben aplicar 2 m+h tests de consistencia para
criptoanalizarlo (donde m y h son los parmetros del generador descritos en el captulo 4). Es
interesante ver cmo se protege el sistema frente a un ataque basado en este mtodo y la respuesta est
en el sistema de gestin de claves, que es el encargado de cambiar las claves que sirven de
inicializacin para los generadores vistos hasta ahora. Este cambio es lo suficientemente rpido como
para no dar tiempo a realizar este tipo de ataque [CRU93]. Vamos a verlo estudiando los generadores de
descifrado para la seal de imagen y para la voz y datos por separado [ZEN89].
A1) El sistema de cifrado de la seal de imagen
La estructura del circuito cifrador de la seal de imagen est constituda por un generador de
Jennings con dos LFSR con m = 31 y n = 29 (generador J2). La palabra de inicializacin es de 60 bits
y, antes de cargarse en las celdas, se combina con los estados de un contador cclico de 8 bits (256
estados). Los bits de salida de este generador, se toman de 16 en 16 para descifrar cada lnea de imagen.
Vamos a hacer algunos clculos:
El periodo mximo que podemos obtener con esta secuencia es: P = 256 x (229-1) x (231-1) =
2,951479 1020. Puesto que se necesitan 16 bits de la secuencia pseudoaleatoria para descifrar cada lnea
de imagen, la tasa de produccin de bits v del sistema debe ser:
v = 625 lneas/imagen x 25 imgenes/seg x 16 bits de desembrollado/lnea = 250.000 bits/seg
A esta velocidad, el generador tardara 37.436.314 aos en producir un periodo de la secuencia.
El sistema de gestin de claves, hace que la palabra de control cambie cada 256 tramas de TV (10,24
seg) y, por tanto, en este tiempo se debe combinar con los 256 estados del contador cclio. Esto
implica que los estados iniciales del generador se inicializan cada trama de TV, es decir, cada 40 mseg.
Para realizar un criptoanlisis a este generador, se necesitan N > m + n2h = 29 + 31 x 25 = 1.021 bits,
217
sobre los que hay que realizar 2m+h = 234 tests de consistencia, pero en un tiempo inferior a 40 mseg,
lo cual actualmente es muy difcil.
A2) El sistema de cifrado de las seales de audio y datos
Este generador consiste en una cascada de dos generadores de Jennings que tienen las
siguientes dimensiones: m = 31, n = 29 y p = 61. La palabra de inicializacin es de 60 bits que, antes
de cargarse en las celdas de los LFSR del primer generador (J 1), se combina con los estados del
contador cclico de 8 bits. Una vez cargados, el generador produce 61 bits que se cargan en las celdas
del LFSR del segundo generador (J3), y cuya secuencia de salida sirve para descifrar los paquetes
digitales de sonido y datos (mediante la suma mdulo 2, bit a bit). El periodo mximo que puede
producir esta secuencia es P = 256 x (231-1)(229-1)(261-1) = 6,8056 1038.
El reloj CLK2 corresponde a la velocidad a la que llegan los bits de sonido y datos cifrados.
Por tanto, el generador J3 debe producir los bits pseudoaleatorios a esta velocidad, que es de 1,546875
MHz. Como esta informacin digital llega en forma de paquetes de 751 bits de longitud, tambin se
puede decir que el flujo binario es de 2.050 paquetes/seg.
Pero, en cada paquete, hay 23 bits que corresponden a la cabecera (PH) que llegan en claro,
por lo que no debe ser descifrada. Esto se consigue usando una seal de validacin (VAL), que consiste
en un pulso de 31 ciclos de reloj que se repite cada vez que pasa la cabecera de un paquete. Es decir, a
una tasa de 2.050 veces/seg. o, lo que es lo mismo, cada 487,8 microsegundos. Durante estos 23
ciclos de reloj, en que pasa la cabecera de cada paquete, el generador J3 no produce secuencia de bits
pseudoaleatoria. Este intervalo lo aprovecha el generador J1 para producir 61 bits que carga como
estado inicial del generador J3 (lo que implica que el generador J1 debe producir bits a una tasa de
125.050 bits/seg). Por tanto, el estado inicial del generador J3 cambiar cada 487 microsegundos y,
por tanto, generar una secuencia distinta para cada paquete.
Para aplicar un criptoanlisis usando el test de consistencia lineal a este generador se
necesitarn: N > m + n2h = 29 + 29 x 25 = 957 bits sobre los que habr que aplicar 2m+h= 231= 1,718
1010 tests de consistencia lineal en menos de 487 microsegundos. Esto es claramente imposible. Por
tanto, podemos concluir que el sistema de gestin de claves protege al sistema contra ataques
criptoanalticos basados en el test de consistencia lineal [CRU93].
B) Generador para el cifrado de redes de banda ancha ATM
Este generador de secuencias pseudoaleatorias ha sido propuesto [FUS91] para realizar un
sistema de proteccin criptogrfica de datos basado en el cifrado en flujo en el proyecto PLANBA
(Plan Nacional de Banda Ancha) . Las elevadas velocidades que pueden llegar a implicar este tipo de
redes, hacen necesaria la utilizacin de este tipo de tcnicas de cifrado en flujo debido al pequeo
retardo que implican, ya que la informacin cifrada se obtiene mediante la suma mdulo 2 entre la
secuencia de informacin y la secuencia producida por el generador de bits aleatorios.
La estructura bsica de este generador consiste en un LFSR de L etapas y polinomio de
realimentacin primitivo, de forma que la secuencia de salida tenga un periodo de 2L-1. L se eligir de
forma tal que cumpla L = n+2n, si L y n son enteros.
El funcionamiento de este generador es el siguiente: las n primeras celdas del LFSR,
empezando por la izquierda, constituyen los bits de rotacin Rj (j = 0, 1,..., n-1). El valor que en cada
instante tomen estos n bits de rotacin determinar la cantidad de veces que se deber aplicar una
218
rotacin hacia la derecha sobre las restantes 2n celdas del LFSR, los bits rotantes, que se denominarn
Xi (i = 0, 1,..., 2n-1). La rotacin que se realice sobre los bits rotantes deber ser cclica. Los nuevos
2 n bits obtenidos de la rotacin se almacenarn en un nuevo registro (posicin de memoria) y se
denotarn por Yi (i = 0, 1,..., 2n-1).
Este proceso de rotacin mltiple (RM) introduce un filtrado no lineal sobre el LFSR, de
forma que a cada estado de L bits se le hace corresponder una secuencia de 2n bits rotados:
RM: ( R0 , R1 ,..., Rn 1 , X0 , X1 ,..., X 2 n 1 ) ( Y 0 ,Y 1 ,...,Y 2 n 1 )
Por tanto, a partir de esta estructura se pueden obtener M = 2n secuencias de bits rotados
n
n
{ Y 0 } , { Y 1 } ,..., { Y 2 n 1 } todas ellas de periodo P = 2 -1. Para cualquiera de estas 2 secuencias {Yi},
la funcin booleana que permite obtener un nuevo bit de la secuencia vendr expresada por:
Yi = ci a0 R0 ... an 1 Rn 1 a01 R0 R1 ... an 2,n 1 Rn 2 Rn 1 ... a01..n 1 R0 R1 ... Rn 1
(1)
que alcanzar la igualdad, o bien estar siempre muy prxima a ella. es el orden de la funcin
generatriz de cada una de las secuencias {Yi} y vale = n+1.
La ecuacin (1) incluye un trmino lineal y trminos de rdenes pequeos, por lo que las
secuencias obtenidas presentarn una buena distribucin de unos y ceros. Otra propiedad interesante
para aplicaciones de cifrado en flujo ser la buena inmunidad a la correlacin que presenta, ya que las
2 n secuencias obtenidas presentan una baja correlacin con la secuencia original generada por el
LFSR.
BITS ROTADOS
R0
R1
R2
X0
X1
X2
X3
X4
X5
X6
X7
Y6
Y7
BITS DE ROTACION
ROTACION
Y0
Y1
Y2
Y3
Y4
Y5
219
En la figura 7.10 se puede ver un ejemplo de este generador, donde se ha elegido un LFSR
con L = 3+23= 11 celdas y, por tanto, de periodo P =211-1= 2.047 bits. Contiene pues 3 bits de
rotacin (R0, R1 y R2) que se corresponden con las tres celdas de la izquierda del LFSR y de 8 bits
rotantes (X0,..., X7), que corresponden con las celdas de la derecha. Los tres bits de rotacin pueden
determinar 8 posibles desplazamientos para los 8 bits rotantes. En el ejemplo, estos bits rotantes
toman el valor decimal 3, por lo que se rotan cclicamente los bits 3 veces hacia la derecha,
obtenindose la secuencia Y 0,.., Y 7. Cada una de las celdas correspondientes a los bits rotados, se
puede adems considerar como una salida, con lo que este dispositivo podr generar 8 secuencias {Y0},
{Y1},..., {Y7}, todas ellas de periodo P = 211-1= 2.047 bits.
Se puede generalizar la estructura no lineal descrita. Para ello, se puede considerar un registro
de desplazamiento inicial con un nmero de etapas tal que englobe a varios rotadores adyacentes, ya
sean de la misma o diferente longitud. Adems, se puede hacer que las rotaciones para los diferentes
rotadores sean a derechas, a izquierdas o combinaciones de ambas. La ventaja de encadenar rotadores es
que el periodo de las secuencias generadas {Yi} ser mayor, debido a la mayor longitud del LFSR de
partida, pero se mantendrn las propiedades que tena cada rotador por separado.
Adems, se pueden combinar las secuencias producidas mediante una tcnica de plegamientos.
Si se han obtenido dos secuencias {X i} = x 0 , x 1 ,..., x n-1 e {Y i} = y 0 , y 1 ,..., y n-1 , mediante este
generador, el plegamiento consistir en la suma mdulo 2n entre ambos nmeros x (x = x0x1...xn-1) e
y (y = y 0 y 1 ...y n-1 ), con lo que se obtiene la secuencia z = x+y (z = z 0 z 1 ...z n-1 ) donde cada bit se
obtiene como zi = xi yi ci (i = 0, 1, ..., n-1), y donde ci representa el acarreo proveniente de la
suma de los bits anteriores al bit considerado y con valor ci = ci + 1 xi + 1 ci + 1 yi + 1 xi + 1 yi + 1 (i = 0,
1,..., n-2) y cn-1= 0.
C) Cifrado en comunicaciones mviles GSM
En 1982 se cre un grupo de estandarizacin dentro del CEPT (Confrence Europene de
Postes et Telcommunicacions) para especificar un sistema europeo nico de radiocomunicaciones en
la banda de 900MHz. Finalmente, en 1991 se pudo hacer la primera demostracin pblica del sistema
de telefona celular digital que pas a denominarse GSM (Global System for Mobile
Communications) [MOU93]. Una de las mltiples ventajas que presenta este sistema frente a los
tradicionales sistemas analgicos, y es la que interesa describir aqu, es que introduce funciones de
seguridad [ETS90][ETS91] para proteger a la red frente a accesos fraudulentos y garantizar la privacidad
de los usuarios. Estos servicios, que se analizarn en este apartado debido a que hacen uso de
secuencias o nmeros pseudoaleatorios, son la autentificacin del usuario (para evitar el acceso a la red
de usuarios no autorizados), el cifrado de la informacin del usuario en el radioenlace y de algunos
elementos de sealizacin (para prevenir escuchas por parte de terceros), y la proteccin de las
identidades de los usuarios (para imposibilitar el seguimiento de su localizacin por parte de terceros).
Veamos cmo se realizan estos procesos y cmo hacen uso de las secuencias o nmeros aleatorios
[REC94].
C1) El proceso de autentificacin
La prevencin de accesos no autorizados se consigue mediante un proceso de autentificacin
de los usuarios. Por un lado, el usuario debe identificarse frente al SIM (el mdulo de identificacin de
usuario) tecleando su nmero de identificacin personal (PIN).
220
RED
TERMINAL MOVIL
RAND
SIM
Ki
RAND
Ki
A3
A3
SRES
SRES'
Iguales?
El SIM consiste en una targeta inteligente estndar con la que se consigue independizar el
terminal de la subscripcin realizada por el abonado. Una vez hecho esto, la red comprobar la validez
del SIM mediante un proceso de autentificacin. Para realizar este proceso, la red le realiza una
pregunta al SIM que slo l debe ser capaz de contestar. La forma en que se realiza este protocolo de
autentificacin puede verse en la figura 7.11. Cada usuario dispone de una clave secreta de
autentificacin Ki que slo es conocida por su SIM y por la red. El procedimiento es el siguiente. La
red debe generar un nmero aleatorio de 128 bits (que se denomina RAND) y se lo enva al terminal.
Adems lo cifra mediante un algoritmo de cifrado denominado A3, utilizando K i como clave. El
resultado SRES de 32 bits es comparado con la respuesta SRES` recibida del terminal. En caso de ser
ambos iguales se da por autntica la identidad del usuario. Los detalles de implementacin del
algoritmo A3, as como la longitud de la clave K i se dejan a la opcin del operador de red, pero
siempre que garantice la interoperabilidad con otros operadores.
Para garantizar un buen nivel de seguridad, el algoritmo A3 debe ser una funcin de un solo
sentido, lo que quiere decir que una vez conocidos el nmero pseudoaleatorio RAND y la clave Ki es
fcil calcular el nmero SRES, pero conociendo SRES y RAND ser difcil el clculo de Ki.
C2) El proceso de cifrado
Una de las ventajas del GSM es que permite la confidencialidad de la informacin de los
usuarios sobre el radioenlace, consiguindose adems niveles de seguridad muy buenos. La figura 7.12
muestra la ubicacin del proceso de cifrado dentro de la cadena de transmisin del canal digital de
comunicacin establecido.
En GSM se utiliza un cifrado en flujo, es decir, cada bit se cifra de forma independiente, lo
que evita que se produzca propagacin de errores.Tanto la operacin de cifrado como la de descifrado se
realizan aplicando una operacin OR exclusiva bit a bit entre los 114 bits codificados de un time slot
y otros 114 bits generados por un generador de secuencias pseudoaleatorias denominado A5, el cual es
comn a todos los operadores GSM, aunque sus detalles de implementacin son guardados en secreto
por diseadores y fabricantes.
Para generar la secuencia de cifrado para cada time slot, el algoritmo A5 utiliza dos datos de
entrada: el contador de trama y una clave de sesin Kc, obtenida a travs del algoritmo A8 cuando a la
entrada estn Kc y RAND.
221
Bits de
Informacin
COD.
BLOQUE
COD.
CONVOL.
REORDENACION
Y DIVISION
MULTIPLEXADO
DE TRAMA
CONSTRUCCION
DE TRAMA
ENTRELAZADO
CIFRADO
CODIF.
DIFERENCIAL
MODULACION
TRANSMISOR
K c (64 bits)
ESTACION BASE
Numero de
trama (22 bits) K c (64 bits)
A5
A5
S2
S1
(114 bits)
(114 bits)
S2
S 1 (114 bits)
CIFRADO
DESCIFRADO
(114 bits)
DESCIFRADO
CIFRADO
Los canales de subida y bajada utilizan secuencias de cifrado distintas, debido a que los
nmeros de trama son diferentes en ambos. La figura 7.13 muestra el principio de funcionamiento de
este tipo de cifrado que hace uso de una secuencia pseudoaleatoria.
C3) La gestin de claves
Cuando se establece una conexin, hay dos posibilidades para determinar cul va a ser la clave
de cifrado que se va a usar. La primera, es crear una nueva clave, y la segunda, es usar la ltima clave
negociada. La generacin de una nueva clave de cifrado se hace durante el proceso de autentificacin
utilizando un algoritmo denominado A8 que toma como entradas la clave K i y el nmero
pseudoaleatorio RAND, tal como muestra la figura 7.14. El algoritmo A8 no est especificado y se
deja a la opcin del operador. En realidad, en la prctica ambos algoritmos pueden ser el mismo. Puede
utilizarse, por ejemplo, un algoritmo que, utilizando como entradas RAND y Ki, genere 92 bits, de
los cuales 32 formarn SRES y los 64 restantes K c. Dado que el algoritmo A5 requiere 64 bits de
clave, el resto se rellenan con ceros. En el futuro se podr aumentar el nivel de seguridad aumentando
tan slo la longitud real de la clave, sin tener que modificar el algoritmo A5.
222
RED
TERMINAL MOVIL
RAND
SIM
Ki
RAND
Ki
A8
A8
Kc
Kc
223
Volviendo a la aplicacin que nos ocupa, hay que observar que, si bien tecnolgicamente el
proceso descrito es similar al que se realizaba en el cifrado en flujo, en este caso la motivacin final es
distinta, y por tanto las caractersticas que se van a requerir de las secuencias pseudoaleatorias
empleadas tambin lo van a ser. Por ejemplo, en las aplicaciones de cifrado en flujo vimos que la
complejidad de las secuencias pseudoaleatorias era un aspecto de vital importancia, ya que la
informacin enviada al canal deba ser impredictible para evitar posibles ataques a la seguridad.
En esta aplicacin, el factor de elevada complejidad no tiene especial inters, ya que la
finalidad del proceso es tan slo aleatorizar la secuencia y no protegerla contra revelaciones a intrusos,
por lo que bastar utilizar generadores que muestren un buen comportamiento estadstico en las
secuencias pseudoaleatorias generadas sin que sea necesario que las secuencias que producen muestren
gran complejidad.
Esto nos lleva a una eleccin clara, que son los registros de desplazamiento con
realimentacin lineal que son, de hecho, los generadores que se usan en la prctica para realizar esta
aplicacin. Se analizarn dos ejemplos prcticos en sistemas reales que realizan este proceso: el
sistema de transmisin de televisin va satlite MAC/paquetes y el nuevo estndar de transmisin de
televisin digital de televisin DVB (Digital Video Broadcasting).
7.2.1
Este sistema, que ya hemos visto en apartados anteriores debido a que utiliza un sistema de
cifrado en flujo para proteger la informacin que se transmite, tambin realiza un proceso de
aleatorizacin de la seal para conseguir los objetivos anteriores [EBU86].
Palabra de inicializacin
Inhibicion
DATOS
DATOS ALEATORIZADOS
La aleatorizacin para dispersar la energa se realiza despus del entrelazado de bits y antes del
modulador. Para ello, se utiliza un LFSR como el que muestra la figura 7.15 que acta a una velocidad
de 20.25 MHz. para los estndares C y D-MAC, y a 10.125 MHz. para el estndar D2-MAC. Puesto
que la aleatorizacin no debe actuar en ciertas partes de las rfagas producidas por estos sistemas (por
ejemplo no debe actuar en los primeros 7 bits de cada rfaga de datos en los sistemas C y D, o en los
primeros 6 bits en el sistema D2 ni en las lneas 624 y 625), en estos intervalos el LFSR seguir
224
produciendo su secuencia de salida pero su accin ser inhibida mediante una puerta. Para los sistemas
C y D se aleatorizan bloques de 123.354 bits sumndolos mdulo 2 con la secuencia de salida del
LFSR. El LFSR tiene 15 celdas y polinomio primitivo, con lo que tendr un periodo P = 215-1 =
32.767 bits, y se inicializar cada 652 lneas de televisin.
7.2.2
COMPRESION
MPEG2
Audio/Video
Video
Audio
Datos
Reloj
MULTIPLEX
Y
ENTRAMADO
DISPERSION
DE
ENERGIA
CODIFICADOR
REED-SOLOMON
ENTRELAZADO
CODIFICADOR
CONVOLUCIONAL
PREFORMADO
EN
BANDA BASE
MODULADOR
QPSK
MEZCLADOR
ETAPA
DE
POTENCIA
Por otra parte, la figura 7.17 muestra el LFSR que se utiliza en este sistema para realizar este
proceso. Tal como se puede ver, tiene 15 celdas y polinomio primitivo de realimentacin, con lo que
su periodo ser de P = 215-1 = 32.767 bits.
La informacin que se transmite en este sistema est constituda por paquetes de longitud fija
de 188 bytes, que contituyen lo que se llama la trama de transporte MPEG-2. Este paquete contiene
adems un byte de sincronismo (por ejemplo 47HEX), tal como muestra la figura 7.18. De acuerdo con
el estndar DVB, estos paquetes (que contienen la informacin comprimida MPEG2) deben
aleatorizarse, utilizando para ello el generador de secuencias pseudoaleatorias de la figura 7.17, cuyo
polinomio de realimentacin es f(t) = 1 = t14+t15.
La inicializacin de dicho generador debe realizarse cargando en sus celdas la secuencia
"100101010000000" al comienzo de cada 8 paquetes de transporte. Para suministrar una seal de
inicializacin al aleatorizador, el byte de sincronismo del primer paquete de cada grupo de 8 debe
invertirse (de 47HEX pasara a B8HEX). A este proceso se le denomina adaptacin del multiplex de
transporte y se muestra en la figura 7.19. El primer bit a la salida del generador se deber aplicar sobre
el primer bit (el ms significativo) del primer byte que siga al byte de sincronismo MPEG2 invertido
(por ejemplo B8HEX).
Para permitir otras funciones de sincronizacin, durante los 7 bytes de sincronismo de los 7
paquetes de transporte restantes, la generacin de bits por parte del generador no se detendr, pero su
combinacin con estos bytes de sincronismo se inhibir y los dejar sin aleatorizar. Por tanto, el
periodo de la secuencia ser de 1.503 bytes.
225
Palabra de inicializacin
Inhibicion
DATOS
DATOS ALEATORIZADOS
El proceso de aleatorizacin en este sistema debe permanecer activo incluso cuando no existan
datos de entrada o cuando sta no cumpla con el formato de la trama de transporte MPEG2 (1 byte de
sincronismo + 187 bytes), lo que evitar la emisin de una portadora no modulada.
Sincr.
(1 byte)
187 Bytes
Sinc1
226
227
espectro mediante un cdigo que es independiente de los datos. En el receptor se usa el mismo cdigo
de forma sncrona para recuperar la seal de datos [SKAUG][PIC82].
La principal caracterstica de las seales moduladas en spread spectrum es que el ancho de
banda de la seal transmitida (W Hz), es mucho mayor que el de la informacin (R bits/s),
introduciendo de esta forma una redundancia que permite suprimir los indeseables efectos de la
interferencia inherente en las transmisiones digitales sobre enlaces de satlite. Un elemento de gran
importancia en el diseo de sistemas de spread spectrum es el de la aleatoriedad, ya que la modulacin
consistir en combinar la seal de informacin d(t) con una seal pseudoaleatoria s(t), tal como
muestra la figura 7.20, de forma que la seal transmitida se parezca al ruido aleatorio y, por tanto, sea
difcil de modular por receptores que no dispongan de la secuencia (o cdigo) de modulacin.
d(t)
Eb/T
s(t)
+1
t
-1
1/fc
Tal como muestra dicha figura, la velocidad de la secuencia pseudoaleatoria s(t) es mayor que
la de la seal de datos d(t), con lo que el resultado de la modulacin implicar un ensanchado del
espectro, tal como muestra la figura 7.21. Los principales objetivos al emplear esta tcnica son:
1) Suprimir los efectos indeseables de posibles interferencias intencionadas (jamming), las
interferencias debidas a otros usuarios del canal y la propia interferencia debida a la propagacin
multicamino. Para evitar la primera, es necesario que el atacante que pretenda interferir la
comunicacin no tenga conocimiento de las caractersticas de la seal que se va a emplear. Para
conseguir esto, el transmisor debe introducir cierta aleatoriedad a la seal que se va a transmitir, pero
teniendo especial cuidado en que ningn posible atacante pueda tener conocimiento de la secuencia
pseudoaleatoria empleada.
La interferencia de otros usuarios aparece en sistemas de acceso mltiple en los que diversos
usuarios comparten un mismo ancho de banda, de forma que en cualquier momento, cualquier
subconjunto de estos usuarios pueda transmitir su informacin de forma simultnea y puedan ser
distinguibles unos de otros por medio de combinar sus respectivos flujos de informacin con
secuencias pseudoaleatorias (tambin llamadas cdigos) diferentes y ortogonales. De esta forma, para
una determinada comunicacin, slo el usuario autorizado que disponga del cdigo correcto podr
recuperar la informacin que le corresponde. Finalmente, los componentes resultantes de la
228
propagacin multicamino se pueden ver como una forma de autointerferencia, que tambin se podr
eliminar combinando las seales transmitidas con secuencias pseudoaleatorias.
datos d(t)
seal de ensanchado
p(t) o p(t)d(t)
-1/T
-f c
1/T
fc
2) Ocultar la seal y hacerla difcil de detectar para usuarios no autorizados. Esto se puede conseguir
ocultando los mensajes bajo el ruido de fondo mediante el ensanchado de su espectro y transmitiendo
la seal resultante con una potencia media baja. A estas seales se las denomina de baja probabilidad
de intercepcin (LPI).
3) Se puede conseguir, adems, privacidad de la comunicacin combinando la seal transmitida con
una secuencia pseudoaleatoria, de forma que slo el usuario autorizado que disponga del cdigo (clave)
que se us para producir la secuencia pseudoaleatoria pueda descifrar la seal entrante.
Datos
Codifi.
de
fuente
Correccion
de
errores
Encriptado
Claves
Criptogrficas
Modulador
"Spread
Spectrum"
Gener. secuencias
pseudo aleatorias
Demodulador
"Spread
Spectrum"
Desencriptado
Corrector
de
errores
Datos
CANAL SEGURO
La figura 7.22 muestra los bloques funcionales implicados en una comunicacin spread
spectrum. La idea bsica de esta comunicacin consiste en reemplazar cada bit de datos por una forma
de onda codificada, de forma que slo se pueda detectar de forma ptima en el receptor si se dispone del
cdigo que se utiliz para codificarla en el transmisor. Para este propsito, se necesitan dos
generadores de secuencias pseudoaleatorias, uno en el modulador y otro en el demodulador, de forma
229
que estn sincronizados. Estos generadores producirn secuencias pseudoaleatorias binarias s(t) que se
combinarn en el modulador con la seal digital que se va a transmitir d(t). En el receptor se deber
realizar el proceso inverso empleando la misma secuencia. La figura 7.23 muestra como el modulador
y el demodulador emplean esta secuencia pseudoaleatoria. En esta figura se puede ver que en el
transmisor se usan 2 secuencias pseudoaleatorias que se multiplican con la secuencia de datos, de
forma que la velocidad de la secuencia pseudoaleatoria es mucho mayor que la velocidad de sta, con lo
que se expandir su espectro.
En este modulador [VIT94], las dos formas de onda obtenidas modulan en fase y cuadratura
una portadora y, una vez sumadas estas dos componentes, se transmiten al canal. El receptor realiza el
proceso inverso suprimiendo las secuencias pseudoaleatorias de ensanchado antes de realizar el
procesado en banda base.
Energa/Impulso=Ec(i)
Periodo del tren de impulsos=Tc
Entrada
Digital
Codificador
Multiplicador
de secuencias
aleatorias binarias
en cuadratura
Modulador
de
impulsos
H(f)
Filtro de preformado
de onda
Al receptor
90
Portadora
Modulador
de
impulsos
H(f)
H(f)
Del transmisor
Multiplicador
de secuencias Procesador
aleatorias binarias de
en cuadratura
Seal
90
Portadora
Decodificador
Salida
y (j)
R
H(f)
Filtros adaptados a la
forma de onda
7.4.1
Una aplicacin importante de la modulacin spread spectrum est en que varios usuarios
comparten de forma simultnea el ancho de banda de un canal de comunicaciones. Para ello, a cada
usuario se le asigna un cdigo pseudoaleatorio distinto. A este tipo de tcnica de acceso se le
denomina acceso mltiple por divisin de cdigo (CDMA) y cada secuencia pseudoaleatoria
identificar de forma nica al usuario [BAM93][BAM92]. Por ejemplo, si se asigna al usuario 1 la
secuencia s1, al usuario 2 la secuencia s2, etc, un receptor que desee recibir la comunicacin con el
usuario 1 recibir en su antena la energa emitida por todos los usuarios (que ser vista como ruido
cross-talk). Sin embargo, despus de demodular la seal recibida empleando la secuencia s1, captar
230
toda la energa del usuario 1 y una pequea porcin de la energa de los otros usuarios. Por tanto, para
que esta tcnica de acceso mltiple sea efectiva, se debe asignar un cdigo a cada usuario y el requisito
fundamental ser que cada uno de estos cdigos est incorrelado con los cdigos usados por los otros
usuarios que comparten el mismo canal. Si se cumple esta propiedad, el proceso de demodulacin en
el receptor rechazar las transmisiones de los usuarios no deseados y la interferencia (includos los
productos de intermodulacin). El grado de rechazo de las seales incorreladas se conoce con el nombre
de ganancia de procesado y es tambin la relacin entre el ancho de banda de la secuencia antes y
despus de la modulacin.
La implementacin ms comn de sistemas CDMA es la llamada de secuencia directa (DSCDMA), en la que el transmisor multiplica su seal de datos por un cdigo de ensanchado de espectro
bipolar pseudoaleatorio que normalmente presenta una tasa entre 1 Mchip/s y 10 Mchips/s (el trmino
chip se usa para representar un bit del cdigo de ensanchado de espectro). En el receptor se debe
multiplicar la seal recibida del canal, previa sincronizacin, por el mismo cdigo de ensanchado de
espectro, con lo que se restaurar el ancho de banda de la seal de datos original. Esta doble
multiplicacin se puede ver como dos inversiones de fase o tambin como dos sumas mdulo 2.
Si b i representa el bit i-simo de la secuencia pseudoaleatoria, y c i representa el
correspondiente bit de la secuencia de datos, la suma mdulo 2 se representar como: ai = bi ai.
Entonces el modulador deber realizar una aplicacin entre la secuencia {ai} y una seal modulada en
fase (PSK o Phase Shift Keying) de la forma:
s(t ) = Re u(t )e
j 2 f c t
donde:
si a = 0 entonces u t = u t iT
(
i
i( )
c)
si ai = 1 entonces ui (t ) = u(t iT c )
y u(t) representa a un pulso de duracin T c segundos (y por tanto frecuencia fc = 1/T c) y forma
arbitraria. Por tanto, se realiza una aplicacin entre la secuencia de datos binaria con elementos {0,1} y
otra secuencia secuencia formada por pulsos positivos y negativos o, lo que es lo mismo, se
transforma la secuencia de datos en otra cuyos elementos son {-1, 1} y que se llama secuencia bipolar
ya que corresponde a la anterior secuencia de pulsos positivos y negativos.
Aunque la tcnica DS-CDMA no es, al menos tericamente, tan eficiente espectralmente
como otras tcnicas de acceso mltiple como son la FDMA (acceso mltiple por divisin en
frecuencia) o la TDMA (acceso mltiple por divisin en el tiempo), en la prctica se consigue con ella
una reduccin de los niveles de intermodulacin tal que permite conseguir que un mayor nmero de
usuarios compartan simultneamente el misno canal de banda limitada que con las dos tcnicas
anteriores. Sin embargo, el precio a pagar es un encarecimiento y aumento de complejidad en los
equipos y la dificultad en conseguir una adecuada sincronizacin en el sistema receptor.
Otro tipo de sistema CDMA es el de saltos de frecuencia (FH-CDMA de ingls frequency
hopping), en el que el ancho de banda disponible del canal se subdivide en un gran nmero de
porciones continuas de frecuencia (slots), de forma que en cada instante, la seal a transmitir ocupe
uno o ms de los slots disponibles elegidos aleatoriamente. La modulacin ms usual en este tipo de
sistemas es la M-aria PSK. Por ejemplo, si se utiliza una modulacin con M = 2, se eligir entre uno
de dos posibles slots segn el valor que tome en ese instante la secuencia pseudoaleatoria. La seal
FSK resultante se trasladar por tanto en frecuencia en una cantidad determinada por la salida del
generador pseudoaleatorio. Evidentemente, habr que coger los bits de la secuencia pseudoaleatoria de
231
1)
Los cdigos utilizados deben ser peridicos. Este es un requisito prctico, ya que si no fueran
de longitud finita, si se perdiera la sincronizacin no sera posible recuperarla.
2)
Para realizar correctamente dicha sincronizacin, los cdigos deben mostrar un comportamiento
impulsivo en su funcin de autocorrelacin.
3)
4)
La correlacin cruzada peridica entre los diferentes cdigos debe ser pequea para reducir la
interferencia mutua entre los diferentes usuarios.
5)
B) Cdigos de Gold
Gold [GOL67] describe un mtodo para seleccionar m-secuencias con una cota superior
determinada en la funcin de correlacin cruzada. El resultado de Gold se basa en el siguiente teorema:
TEOREMA: Si es cualquier elemento primitivo de campos de Galois GF(2m) y f1 es el polinomio
mnimo de , entonces sea f1 el polinomio mnimo de qt, donde t = 2( m + e ) / 2 + 1 con e = 1 si n es
impar y e = 2 si n es par.
232
y r V( ft )
kr t
Las dos m-secuencias k y r se llaman par preferente de m-secuencias. Aunque existen muchos
pares de secuencias que satisfacen el teorema de Gold, no es posible, sin embargo, contruir familias
grandes de m-secuencias que satisfagan la cota y, por tanto, es difcil disear sistemas de acceso
mltiple CDMA de tamao razonable.
Sin embargo, la importancia del teorema de Gold radica en el hecho de que una pareja
preferente de m-secuencias puede producir familias grandes de secuencias de longitud no mxima con
su correlacin cruzada acotada. Puesto que las secuencias no son de longitud mxima, su
autocorrelacin no ser una funcin bivalor. Sin embargo, el valor de dicha autocorrelacin para los
valores fuera de fase satisfar la cota del teorema de Gold. As pues, flexibilizando algo la condicin de
la funcin de autocorrelacin, podremos conseguir grandes familias de secuencias con su correlacin
cruzada acotada. Estas secuencias generadas a partir de parejas preferentes de m-secuencias se
denominan cdigos de Gold. El generador de cdigos de Gold se puede construir de dos formas:
1)
2)
Sumando mdulo 2 las salidas de los dos registros de desplazamiento de los dos LFSR con
polinomios de realimentacin f1 y ft respectivamente.
En ambos casos, se obtendr una familia de 2m+1 secuencias con un periodo de 2m-1 y con
autocorrelacin y correlacin cruzada acotadas por t. Podemos verlo mediante un ejemplo:
EJEMPLO 7.1: Consideremos los polinomios f1 = x 10 +x 3 +1 y ft = x 10 +x 9 +x 8 +x 6 +x 3 +x 2 +1. El
generador de cdigos de Gold puede generarse, bien mediante la multiplicacin de ambos polinomios,
resultado f1 f t = x 20 +x 19 +x 18 +x 16 +x 11 +x 8 +x 5 +x 2 +1 (figura 7.24a), o bien sumando mdulo 2 las
salidas de dos registros de desplazamiento que usen como polinomios de realimentacin los
polinomios f1 y ft respectivamente (figura 7.24b). Ambas soluciones darn una familia de 1.025
secuencias con una correlacin cruzada entre ellas acotada por 65.
Ya se ha visto que la autocorrelacin peridica (par) de las secuencias de Gold estar acotada
por t. Sin embargo, en [MAS75], Massey y Uhran muestran otra cota, aunque esta vez para la
autocorrelacin no peridica (impar) de los cdigos de Gold, que viene dada por la siguiente expresin:
k
2n 1 + 2 n / 2 + 2
donde n / 2 denota la parte entera del nmero n/2. Para acabar con el estudio de los cdigos de
Gold, las grficas 7.1a y 7.1b muestran los resultados obtenidos por M. Soriano en [SOR96] al
233
a)
Salida
b)
Salida
a)
b)
Grfica 7.1 Autocorrelacin y correlacin cruzada aperidica para secuencias de Gold de periodo 3937
7.5 Bibliografa
[ALA86]
[BAM92]
[BAM93]
[BEK82]
[BEK89]
[BLA82]
234
[BOY89]
[BRU82]
[CAM78]
[CHEPY]
[COM93]
[CRU92]
[EUR86]
[FUS91]
[GAV96]
CRUSELLES, E.; SORIANO, M.; J. L. MELS. Spreading Codes Generator for Wireless
CDMA Networks. Wireless Personal Communications. Kluwer Academis Publishers. 1996.
Specification of the System MAC/packet Family. EBU document Tech. 3258 (1986),
amenced by document spb 438.
ETSI/TC GSM". Recommendation GSM 03.20: Security Aspects. v. 3.0.1. January 1990.
ETSI/TC GSM. Recommendation GSM 03.20. Security Related Network functions. v. 3.3.2.
January 1991.
Digital Broadcasting Systems for Television, Sound and Data Services: Framing Structure,
Channel Coding and Modulation for 11/12 GHz Satellite Services. ETS 300 421, DE/JTCDVB-6, December 1994.
Cryptanalysts Representation of Non-Linearly Filteres ML-Sequences. Advances in
Cryptology, Eurocrypt'85, Springer-Verlag, pp. 103-110, 1986.
FUSTER, A.; DE LA GUIA, D.; NEGRILLO, J.; MONTOYA, F. Diseo e implementacin de
Algoritmos de Generacin de Secuencias Binarias. I Reunin Espaola de Criptologa,
Mallorca, 1991.
GAVILN, J. J, CRUSELLES, E.; LOPEZ, M. Transmisin Digital de Televisin DVB.
GEFFE. How to Protect Data with Ciphers thar are really hard to break. Electronics, Jan. 4,
1973.
GITLIN, R. D.; HAYES, J. F.; WEINSTEIN, S. B. Data Communications Priciples. Plenum
Press, New York, 1992. ISBN 0-306-43777-5.
[GOLIC]
[GOL67]
[GOL68]
[GOL91]
[GRAYB]
[HEL84]
[ISO94]
[JEN80]
[MAS75]
[MAS85]
[MEI89]
[MEI92]
[MOU93]
[PIC82]
[PIP82]
[PLE77]
[PUI92]
[PUR74]
[PUR77]
[REC94]
[RET84]
[RUB79]
235
236
[RUE84]
[RUE86]
[RUE89]
[RUEPL]
[SARWA]
[SHA49]
[SHA75]
[SHA81]
[SID71]
[SIE85]
[SIEGE]
[SIEGE]
[SKAUG]
[SOR96]
[STA89]
[VER26]
[VIT94]
[ZEN89]
[ZEN88]
[ZEN90]
[ZEN91]
[ZENGK]
237
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
238
permitan obtener familias de secuencias grandes con gran periodo y elevada complejidad. Para el diseo
de este generador elemental se partir de un registro de desplazamiento con realimentacin lineal
(LFSR), al que se le introducir de alguna manera una no linealidad para aumentar la complejidad
lineal de las secuencias que produce, puesto que ya se conoce el problema que presenta el LFSR en
cuanto a su gran predictibilidad (baja complejidad).
La eleccin de una funcin no lineal es siempre delicada, tal como se vio en el captulo 3, ya
que a pesar de aumentar la complejidad de las secuencias que produce el LFSR, generalmente suele
estropear la propiedad de mximo periodo y desbalancear los ceros y unos de las secuencias producidas
por ste. Una posible solucin podra surgir de intentar buscar funciones no lineales cuya salida
estuviera balanceada en cuanto a ceros y unos.
Sin embargo, para este generador se ha intentado buscar otra posible solucin a este
problema, y se ha encontrado sta en la forma en que se combina la funcin no lineal con el LFSR.
Si se observa la figura 8.1, se puede ver que se ha elegido una estructura en la que el resultado de la
funcin no lineal aplicada sobre las celdas del LFSR, se combina con el resultado de la funcin de
realimentacin lineal de ste (mediante la suma mdulo 2) para producir el siguiente bit de entrada al
LFSR. Aqu est la clave de las buenas propiedades que va a mostrar esta estructura, ya que la funcin
binaria OR-exclusiva de 2 entradas s tiene una salida balanceada, con lo cual se garantiza una entrada
no lineal balanceada al LFSR a pesar de que la salida de la funcin no lineal no lo est. Esto hace que
la eleccin de dicha funcin no lineal no sea tan crtica, aunque despus de realizar diversas pruebas los
autores llegan a la conclusin de que una AND de tres entradas con una de ellas negada da excelentes
resultados para esta estructura, tal como veremos a continuacin. Vamos a definir formalmente esta
estructura:
f(t)
x(t)
......
aL-1 a L-2
r L-1 rL-2 ....... rL-a r L-b r L-c
.......
r1
a1 a 0
r0
AND
s(t)
239
{r1 } = r0 r1r 2 ... , y para todo registro de desplazamiento realimentado linealmente se cumplir que:
(1)
(2)
r L 1 ( t + 1) = ai ri ( t )
(3)
L
{ r1 } tendr periodo 2 1.
L1
i= 0
t = 0, 1, 2, ...
+ 1) = ri + 1 ( t )
i = 0,....., L- 2
r L 1 (t + 1) = ai ri (t ) ( r L a (t ) r L b (t )) ( r L a (t ) r L b (t ) r L c (t ))
i=0
(1)
(r
La
(t )r L b (t )r L c (t ))
max = 2 L 2
Dada una secuencia producida por el generador, el resto de secuencias de la familia se obtendr
mediante sucesivos desplazamientos de esta secuencia.
240
241
242
Grfica 8.3 Correlacin cruzada entre dos secuencias producidas por PRBS-1
243
forma su predictibilidad. Este es un requisito esencial que deben cumplir las secuencias si se quiere
hacer uso de ellas en aplicaciones como el cifrado en flujo, tal como se vio en el captulo anterior.
Con este generador, obtenemos una complejidad lineal igual, o casi igual, al periodo menos uno
( s( t ) ) = 2.046, para todas las secuencias de la familia. Dicha complejidad lineal la podemos
obtener usando el algoritmo de sntesis de Massey-Berlekemp que se describi en el captulo 5.
Sin embargo, ya se vio al estudiar los cifradores en flujo que para poder utilizar las secuencias
pseudoaleatorias en esta aplicacin no slo deban tener una elevada complejidad lineal, sino que sta
deba crecer, aunque de forma irregular, siguiendo la linea de k/2 (donde k son los bits de la secuencia
procesados mediante el algoritmo anterior).
La grfica 8.4 muestra que las secuencias producidas presentan un excelente comportamiento
respecto al perfil de complejidad lineal (LCP), puesto que la complejidad lineal crece siguiendo esta
lnea hasta alcanzar el valor de 2.046, despus de haber procesado dos periodos de la secuencia
utilizando el algoritmo de Massey-Berlekamp.
Un paso esencial para garantizar la bondad del generador diseado es comprobar que la no
linealidad introducida no ha estropeado las buenas propiedades estadsticas que muestra el LFSR. En la
columna PRBS-1 de la tabla 8.3 se pueden ver los resultados de los tests estadsticos aplicados sobre
una de las secuencias producidas por este generador, y muestran un comportamiento muy bueno en
cuanto a la estadstica de las secuencias de salida de dicho generador. El valor de 0,9451 obtenido
adems en la entropa por bit, muy cercano al valor ideal 1, refuerza la conclusin de que las
secuencias producidas presentan un excelente comportamiento de aleatoriedad.
244
En la grfica 8.5 se muestra el resultado del test espectral, que tal como se vio en el captulo
5 es un test estadstico terico basado en la transformada discreta de Fourier de la secuencia (DFT), y
muestra tambin un comportamiento muy cercano al impulsivo, que es el ideal esperado para
secuencias aleatorias.
A raz de todos los resultados vistos en los tests a los que se han sometido las secuencias
producidas por este generador, se puede concluir que presentan unas propiedades muy buenas de
aleatoriedad, ya que el resultado de los tests es muy parecido al que se producira con secuencias
verdaderamente aleatorias.
Recordemos que uno de los objetivos que se planteaba inicialmente era obtener familias con
gran nmero de secuencias todas ellas de elevado periodo, alta complejidad y buenas propiedades
estadsticas.
Si bien estos objetivos ya se pueden cumplir con este generador, puesto que se puede hacer
que las dimensiones del LFSR crezcan tanto como se quiera, es ms conveniente realizar este
crecimiento combinando varios de estos generadores. Por supuesto, deberemos buscar una forma
adecuada de hacerlo para no perder las buenas propiedades que ya se hayan conseguido de l.
M = N 2i = 1 1
245
Li
2
1) se podr considerar como un nuevo elemento de la familia y tendr tambin las propiedades
que se vern ms adelante.
i=1
f 1 (t)
......
L 1 celdas
s1 (t)
xN(t)
f 2 (t)
......
L 2 celdas
s 2 (t)
x 1 (t)
.
.
.
.
.
.
.
.
.
.............
x2 (t)
f N(t)
......
L Nceldas
s N (t)
xN-1(t)
donde i = 0,..., L p 2 y 1 p N
[(
L1 1
r L1 1 (t + 1) = a1j r1j (t ) r L N a N (t ) r L N b N (t ) r L N c N (t ) r L N a N (t ) r L N b N (t )
j=0
) (
[(
) (
)]
Lp1
r Lp1 (t + 1) = a p j r p j (t ) r L p 1 a p 1 (t ) r L p 1 b p 1 (t ) r L p 1 c p 1 (t ) r L p 1 a p 1 (t ) r L p 1 b p 1 (t )
j=0
donde 1 < p N
)]
246
247
Las M secuencias producidas por este generador mostrarn periodo mximo y complejidad
lineal igual, o casi igual, a este periodo mximo.
Ambas vendrn determinadas por las expresiones:
N
Pmax = 2
Li
i=1
max
Pmax 1 = 2
Li
i=1
Tabla 8.1 Resultados a los tests de periodo, complejidad lineal y 2 postulado de Golomb
Periodo
Complejidad Lineal
N de unos
N de ceros
N subsecuen. unos
N subsecuen. ceros
Sec. S1
65.535
65.518
32.768
32.767
16.383
16.383
Sec. S2
65.535
65.534
32.768
32.767
16.384
16.385
Sec. S3
65.535
65.534
32.768
32.767
16.392
16.395
PRBS-1
2.047
2.046
1.024
1.023
511
511
248
249
Todas las secuencias producidas por este generador han mostrado muy buen comportamiento
con respecto a los tres postulados de Golomb. En la tabla 8.1 se pueden ver los resultados obtenidos
para las tres secuencias de la familia estudiadas, donde las filas 3 y 4 corresponden al primer postulado,
y las filas 5 y 6 al segundo. Adems, la desviacin respecto al segundo postulado de Golomb para la
secuencia S1 se muestra en la grfica 8.6, tanto para ceros como para unos.
Con respecto al tercer postulado de Golomb, la grfica 8.7 muestra la funcin de
autocorrelacin peridica de la secuencia S1, donde se puede observar que muestra un comportamiento
casi impulsivo, con valor unidad en el origen y sin picos para valores fuera de fase, tal como se espera
de las secuencias aleatorias.
Periodo
(P)
AC-PRBS1
CC-PRBS1
AC-PRBS2
CC-PRBS2
Valor
Origen
(VO)
2.047 2.047
2.047
-22
65.535 65.535
65.535 -10
2
2
0
2
2
1
1
1
0,09 %
0,04 %
0,001 %
0,001 %
LPLS=
MPF/VO
0,067
------0,016
-------
250
En la fila AC-PRBS2 de la tabla 8.2 se pueden ver los valores mximos de dicha funcin y
su frecuencia, teniendo en cuenta que en dicha tabla aparecen valores no normalizados. El que sean
valores no normalizados implica que son los de la grfica 8.7 pero multiplicados por el periodo de la
secuencia, es decir, por 65.535 (en la funcin no normalizada el valor del origen de la funcin de
autocorrelacin no sera 1 sino precisamente 65.535).
En la grfica 8.8 se puede ver la funcin de correlacin cruzada peridica entre las secuencias
S1 y S2 que muestra el elevado grado de incorrelacin que presentan. Esto implica que ser fcil
distinguirlas entre otras secuencias de la familia. Adems, en la fila CC-PRBS-2 de la tabla 8.2 se
pueden ver los mximos picos obtenidos y su frecuencia (al igual que antes, en la tabla se muestran
los valores de la funcin de correlacin cruzada no normalizada).
Una vez analizados los postulados de Golomb y las propiedades de correlacin, es necesario
estudiar la complejidad de las secuencias obtenidas.
La fila 2 de la tabla 8.1 muestra que la complejidad lineal es igual o casi igual al periodo para
todas las secuencias. Sin embargo, ya sabemos que esto no es una condicin suficiente para tener
elevada aleatoriedad, y tambin es necesario que el perfil de complejidad lineal (LCP) siga, aunque de
forma irregular, la lnea de k/2, si k es el nmero de bits procesado. La grfica 8.9 muestra el buen
comportamietno del LCP de las secuencias estudiadas. Si se utilizan estas secuencias en una aplicacin
de cifrado en flujo, sta sera una condicin suficiente para hacer fracasar los ataques basados en el
algoritmo de Massey-Berlekemp.
Adems, para que se pueda considerar a las secuencias generadas como aleatorias, stas deben
mostrar un buen comportamiento estadstico.
Para detectar posibles defectos estadsticos, se puede hacer pasar las secuencias por una serie
de tests que comprueben una muestra de la secuencia de una cierta longitud y rechacen al generador
cuando ciertas propiedades de la muestra sugieran una posible no aleatoriedad (por ejemplo, que el
nmero de ceros y unos difiera sustancialmente). Un defecto estadstico en el generador se podr
detectar con una cierta probabilidad que depender de la gravedad del defecto y de la longitud de la
muestra estudiada. En la prctica, suele ser suficiente con pasar las secuencias por una batera de una
docena de tests , y si consigue pasar la mayora de ellos, la podemos considerar aleatoria.
La tabla 8.3 muestra los buenos resultados obtenidos en todos los tests estadsticos
considerados para las tres secuencias estudiadas. Cada uno los tests (excepto los tests estadsticos
basados en el LCP) se ha aplicado 10 veces sobre diversas partes de la secuencia empleando un nivel
de significancia del 5%, y sobre sus resultados se ha aplicado un test de Kolmogorov-Smirnov usando
la salida de ste como una indicacin de si la secuencia pasa o no el test.
Otro test estadstico de aleatoriedad que se puede utilizar para testear la aleatoriedad de las
secuencias es el de entropa por bit. A diferencia de los otros tests, que buscan defectos estadsticos
concretos sobre las secuencias, este test es capaz de detectar cualquier tipo de defecto estadstico
aunque, sin embargo, si lo detecta, no es capaz de decir cul es. Para una secuencia verdaderamente
aleatoria, la entropa por bit ser uno o muy cercana a 1.
La tabla 8.3 muestra un valor de entropa por bit muy cercano a uno para las tres secuencias
estudiadas, lo que refuerza la conclusin que ya se haba obtenido a partir de los otros tests de la buena
aleatoriedad de las secuencias producidas.
Finalmente, se pueden estudiar las secuencias mediante el test espectral. Tal como se vio en
el captulo 5, las secuencias de periodo P realmente k-distribudas mostrarn un resultado a este test
con valor 1 a la frecuencia 0 y con valor 1/P para las otras frecuencias. La grfica 8.10 muestra un
comportamiento muy cercano al ideal para las tres secuencias estudiadas.
251
Test
Frequencia
Parejas
Tros
Cuartetos
Transiciones
Corr. Serie
"Runs up"
"Runs down"
Permutaciones
Colect. Cupones
"Runs above"
"Runs below"
Saltos LCP
Alturas LCP
Poker
Entropa por bit
Sec. S1
Sec. S2
SI (45%)
SI (13%)
SI (56%)
SI (93%)
SI (90%)
SI (60%)
SI (60%)
NO (<1%)
NO (<1%)
NO (<1%)
SI (56%)
SI (23%)
SI
SI
SI (34%)
0,9880
SI (45%)
SI (27%)
SI (94%)
SI (50%)
SI (72%)
SI (57%)
NO (<1%)
NO (<1%)
SI (6%)
NO (<1%)
SI (13%)
SI (43%)
SI
SI
NO (<1%)
0,9768
Sec. S3
PRBS-1
NO (>100%)
SI (68%)
SI (24%)
SI (50%)
SI (50%)
SI (94%)
NO (<1%)
NO (<1%)
NO (<1%)
NO (<1%)
SI (71%)
SI (34%)
SI
SI
NO (<1%)
0,9654
SI (45%)
SI (50%)
SI (72%)
SI (11%)
SI (72%)
SI (34%)
NO (<1%)
NO (<1%)
SI (62%)
NO (<1%)
SI (94%)
SI (38%)
SI
SI
SI (17%)
0,9451
Con esta estructura, tambin ser posible obtener otros periodos en el rango 1...P max ,
seleccionando las conexiones apropiadas en las funciones no lineales de los generadores PRBS-1. En la
tabla 8.4 se pueden ver los resultados obtenidos para algunos de estos subgeneradores con periodos
subptimos.
Se puede observar que en algunos casos, se pueden llegar a obtener los mismos resultados
con funciones no lineales de segundo orden, ya que a = b.
Adems, la tabla 8.4 muestra que con estas secuencias subptimas se obtienen las mismas
propiedades que se han visto para el caso de conexiones ptimas con respecto a la complejidad lineal y
a los postulados de Golomb.
Ante los resultados obtenidos se puede concluir que se han conseguido los objetivos que se
pretendan al inicio del captulo. Se ha diseado una estructura capaz de producir grandes familias de
secuencias pseudoaleatorias, en las que todos sus elementos presentan elevado periodo y alta
complejidad lineal, estn muy incorreladas entre s y presentan, adems, buenas propiedades
estadsticas.
Adems, los tests estadsticos han sido de gran utilidad para poder comprobar las propiedades
de las secuencias producidas. Sin embargo, una vez que se sabe que estas secuencias presentan una
calidad aceptable como secuencias aleatorias, se puede plantear la posibilidad de realizar un estudio
analtico ms profundo sobre la estructura diseada.
Si bien es muy complejo realizar este tipo de estudio en estructuras con realimentacin lineal
como la que se ha estudiado en este captulo, en el prximo apartado se van a ofrecer algunas reglas de
diseo que conducirn a que las secuencias producidas por la estructura diseada presenten las
propiedades que hemos visto en el estudio anterior.
252
CONEXIONES
a1 a2 a3 b1 b2 b3 c1 c2 c3
Complejidad
Lineal
N de unos
N de ceros
N subsec N subsec
de unos
de ceros
30
0 1 2 4 5 1
1 2 0
29
15
15
74
0 1 2 5 3 0
2 2 0
73
37
37
18
18
150
1 1 2 2 2 4
2 2 0
147
75
75
37
37
251
0 1 2 5 4 1
0 2 1
250
126
125
62
62
511
0 1 2 3 4 2
1 2 0
510
256
255
128
128
1.096
0 1 2 0 3 5
1 2 0
1.095
548
548
274
274
2.051
0 1 2 3 3 0
0 0 1
2.051
1.026
1.025
513
513
4.045
0 1 2 3 5 1
2 0 1
4.043
2.023
2.022
1.010
1.010
8.164
0 1 2 0 3 1
1 1 0
8.164
4.082
4.082
2.039
2.039
16.330
0 1 2 0 1 3
0 1 2
16.328
8.165
8.165
4.080
4.080
32.524
0 1 2 0 0 4
2 2 0
32.523
16.262
16.262
8.131
8.131
8.3.1
Como ya se ha visto en el apartado anterior, necesitamos ciertas reglas para determinar, dado
un periodo, los parmetros del generador PRBS-1 L, a, b y c que hacen que se obtengan los excelentes
resultados que han revelado los tests anteriores. El nmero de posibles combinaciones de las
conexiones no lineales a, b y c que hacen que se obtenga el mximo periodo para el generador PRBS1, una vez fijado L, es bastante considerable, tal como muestra la tabla 8.5.
Tabla 8.5 Combinaciones ptimas segn el nmero de celdas del registro de desplazamiento
N de celdas
Combinaciones
4
15
5
52
6
116
7
308
8
480
9
648
10
1.032
11
1.460
12
2.166
Para el generador PRBS-1 que se ha propuesto, ser necesario que se cumplan las siguientes
reglas para obtener el mximo periodo y la mxima complejidad lineal:
R1) Hay que evitar que cualquier conexin no lineal (a, b, o c) coincida con la celda L. Esto evitar
que aparezca cualquier tipo de prembulo en las secuencias generadas y permitir alcanzar el periodo
mximo.
R2) No es necesario que el polinomio de realimentacin sea primitivo para conseguir mximo
periodo, ya que se trata de una realimentacin no lineal. Sin embargo, el nmero de coeficientes ai =
1 del polinomio de realimentacin debe ser impar para garantizar que dicho polinomio no sea
mltiplo de x+1.
253
R3) Aunque las conexiones no lineales a y b pueden coincidir, la conexin c debe ser diferente de a y
b, ya que si no el generador se comportara como un LFSR.
Si se cumplen estas reglas bsicas, se obtendrn las siguientes propiedades del generador:
P1) Sea G un generador PRBS-1 de L celdas con polinomio de realimentacin f(x), conexiones no
lineales a, b y c, que genera una secuencia pseudoaleatoria de periodo P. Ser posible obtener el
mismo periodo con otro generador de L celdas con polinomio de realimentacin f*(x), conexiones no
lineales a = L-a, b = L-b y c = L-c. Si f(x) = a L + a L-1x + a L-2x 2 +... + a 1x L-1 + a 0x L , entonces
f*(x) = a0 + a1x + + a2x2 + ...+ aL-1xL-1 + aLxL.
P2) Sean G y G dos generadores PRBS-1 de L celdas donde los coeficientes del polinomio de
realimentacin f(x) son ai, aj,...ak = 1, y los restantes son 0, y los coeficientes de f(x) son ai', aj,....,
ak =1, y el resto 0. Si i, j, k = i+p, j+p,..., k+p mdulo L+1, se obtendr la misma secuencia si
las correspondientes conexiones no lineales a, b, y c son iguales a a'+ p, b+ p, y c+ p
respectivamente.
P3) Sean G y G dos generadores con el mismo nmero de celdas donde los coeficientes del
polinomio de realimentacin f(x) son ai, aj,..., ak = 1, y los restantes son iguales a 0, mientras que
los coeficientes de f(x) son a i, a j,... a k = 1 y el resto iguales a 0. El primer generador con
conexiones no lineales a, b y c generar una secuencia pseudoaleatoria de periodo P. Si i, j,..., k =
mi, mj,..., mk mdulo P, y el m.c.d.(P,m)=1, se podr obtener el mismo periodo con las conexiones
no lineales a, b y c si a, b y c son ma, mb y mc respectivamente.
8.4 Bibliografa
[CRU95]
[CRU96]
[CRUSE]
[PUI92]
[PUI92J]
[PUI92M]
[SOR90]
CRUSELLES, E.; SORIANO, M.; MELUS, J.L. Uncorrelated PN Sequences Generator for
Spreading Codes in CDMA Systems. 6th IEEE International Sysmposium on Personal,
Indoor and Mobile Radio Communications (PIMRC95). September 27-29, 1995. Toronto,
Canada
CRUSELLES, E.; SORIANO, M.; MELUS, J.L. Spreading Codes Generator for Wireless
CDMA Networks. Wireless Personal Communications. Kluwer Academic Publishers. 1996.
CRUSELLES, E.; SORIANO, M.; FORNE, J.; MELUS, J.L. Secure Communication in
Broadband Networks. 3rd. International Conference on Telecommunications Systems.
Nashville, Tenesee, March 95.
PUIG, M. Estudio Comparativo de Cifradores en Flujo. Aplicaciones en Comunicaciones
Mviles. Proyecto fin de Carrera. UPC. 1992.
PUIG, M.; CRUSELLES, E.; J. L. MELS. A Unified Evaluation of Some Proposed StreamCiphers. The 15th Symposium on Information Theory (SITA`92). September 8-11, 1992.
Minakami, Japan.
PUIG, M.; CRUSELLES, E.; J. L. MELS. Algunas Especificaciones de Diseo de los
Cifradores de Flujo. II Reunin Espaola sobre Criptologa. Octubre 1992. Madrid.
SORIANO, M.; FORNE, J.; CRUSELLES, E.; MELUS, J.L. Linear Complexity Stability in
Stream Ciphering for High Speed Networks. 4th. International Conference o n
254
[SOR96]
255
9
PREDICTEST: Programa de anlisis de secuencias
pseudoaleatorias
9.0 Introduccin
Tal como se ha visto en los captulos anteriores, al hacer un diseo de un generador de
secuencias pseudoaleatorias es conveniente hacer un chequeo de sus propiedades, para comprobar si
cumple las especificaciones de aleatoriedad mnimas necesarias para considerarlo til para la aplicacin
considerada. Esta comparacin se puede llevar a cabo pasando la secuencia de salida del generador de
secuencias por una serie de tests que nos permitan evaluar hasta qu punto cumple las especificaciones
requeridas.
En este captulo se describe el funcionamiento del programa PREDICTEST, desarrollado por
los autores para realizar este testeo intensivo de las secuencias producidas por los generadores de
secuencias pseudoaleatorias. El lenguaje de programacin utilizado ha sido el C estndar y, para mayor
claridad, se han includo algunos comentarios en ellos. El cdigo ha sido adems optimizado y
vectorizado para poder aprovechar las posibilidades de ciertas mquinas con capacidad de proceso
vectorial. Este tipo de ordenadores pueden hacerse necesarios cuando las longitudes de las secuencias
pseudoaleatorias que se deben estudiar comienzan a tener periodos considerables.
Si bien en este captulo se ver un ejemplo prctico de utilizacin de este programa, en el
captulo anterior ya se utiliz para realizar el anlisis de las estructuras propuestas.
generado
batch
tests
results
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
256
En el directorio generado se deben colocar los programas de los generadores que se desean
testear. El programa contiene algunos programas de generadores en este directorio, algunos de de los
cuales, como por ejemplo los LFSR, se pueden aprovechar para otros generadores que el lector quiera
programar. En este directorio se pueden encontrar los programas que implementan los siguientes
generadores:
- Catico.c: Implementa el generador descrito en el captulo 4.
- Jennings.c: Implementa el generador descrito en el captulo 4.
- Gollmann.c: Implementa el generador descrito en el captulo 4.
- Lfsr.c: Implementa un LFSR como el descrito en el captulo 3.
- PRBS-1.c : Implementa el generador PRBS-1 del captulo 8.
- PRBS-2.c: Implementa el generador PRBS-2 del captulo 8.
Adems, en el directorio batch se pueden encontrar los correspondientes ficheros batch para
estos programas. El directorio tests contiene los programas de los tests implementados, que se pueden
ver en la tabla 9.1. Si se desarrolla algn otro test debe colocarse en este directorio. Aqu se debe
colocar la secuencia de salida de los generadores bajo estudio (fichero llamado SECUEN). Tambin
contiene un fichero llamado parm.h, que contiene los parmetros necesarios para configurar los tests
(como por ejemplo la longitud de la secuencia, el nmero de veces que se realizarn los tests chicuadrado en los tests estadsticos, etc). Puesto que todos los tests buscan este fichero, en el momento
de instalacin se debe modificar la lnea:
#include "/predict/tests/param.h"
adecuadamente para que puedan encontrar este programa (en el caso en que el lector recurra a otra
estructura de directorios). El directorio batch incluye el progama principal predict.bat, que es un fichero
batch que contiene las llamadas a todos los tests anteriores para ejecutarlos secuencialmente y que
enva los ficheros de resultados obtenidos al directorio results. Por tanto hay que modificar
adecuadamente la lnea:
# cd /predict/tests
que se encuentra al inicio de este fichero batch, de forma que se coloque en el directorio tests.dir, que es
donde estn los programas de tests que se van a ejecutar, y todas las lneas que contengan
# mv /predict/tests/fichero_resultado /predict/results
de forma que pasen los ficheros de resultados al directorio results.
En caso de que no se quieran pasar todos los tests que incluye este fichero, se puede hacer una
nueva versin del fichero predict.bat eliminando las llamadas a los tests que no interesen. Por otra
parte, si se crea un nuevo test, adems de colocar su programa fuente en el directorio tests, hay que
poner en este fichero batch su llamada. En el directorio results aparecern todos los ficheros de
resultados una vez que se haya ejecutado correctamente el programa predict.bat. Posteriormente se har
una descripcin de estos ficheros de resultados y de cmo extraer conclusiones a partir de ellos.
257
Tabla 9.1 Ficheros que implementan tests en el directorio tests y sus ficheros de resultados
TEST
t-per.c
t-ccn.c
t-ccnn.c
t-gol1.c
t-gol2.c
DESCRIPCION
Determina el periodo de una secuencia
Calcula la correlacin cruzada normalizada de dos secuencias
Calcula la correlacin cruzada no normalizada de dos secuencias
Determina el cumplimiento del primer postulado de Golomb
Determina el cumplimiento del segundo postulado de Golomb
FICHERO RESULTADO
RESPER
RESCCN
RESCCNN
RESG1
RESG2Z,RESG2U,
resulta.txt
t-gol3.c Determina el cumplimiento del tercer postulado de Golomb
RESG3, resulta.txt
t-clin.c Calcula la complejidad lineal de la secuencia y el LCP
RESLCP, resulta.txt,
RESLCPDESV
t-frec.c
Pasa el test estadstico de frecuencia
resulta.txt
t-par.c
Pasa el test estadstico de parejas
resulta.txt
t-tri.c
Pasa el test estadstico de tros
resulta.txt
t-cuar.c Pasa el test estadstico de cuartetos
resulta.txt
t-tran.c Pasa el test estadstico de transiciones
resulta.txt
t-scorr.c Pasa el test estadstico de correlacin serie
resulta.txt
t-pok.c Pasa el test estadstico de poker
resulta.txt
t-ru.c
Pasa el test estadstico de subsecuencias ascendentes
resulta.txt
t-rd.c
Pasa el test estadstico de subsecuencias descendentes
resulta.txt
t-perm.c Pasa el test estadstico de permutaciones
resulta.txt
t-coup.c Pasa el test estadstico colector de cupones
resulta.txt
t-ram.c Pasa el test estadstico de subsecuencias por encima de la media resulta.txt
t-rbm.c Pasa el test estadstico de subsecuencias por debajo de la media resulta.txt
t-lcp1.c Pasa el test estadstico basado en el LCP (con precisin)
resulta.txt
t-lcp2.c Pasa el test estadstico basado en el LCP (sin precisin)
resulta.txt
t-epb.c
Pasa el test estadstico de entropa por bit
resulta.txt
258
2) Una consideracin de gran importancia a tener en cuenta a la hora de estudiar este tipo de secuencias
es si se conoce su periodo. Puesto que algunos tests descritos en el libro como los postulados de
Golomb o la complejidad lineal, slo tienen sentido si se ejecutan sobre un periodo completo de la
secuencia, si no se conoce ste por mtodos tericos es necesario calcularlo antes de proseguir el
estudio. Para ello, se puede utilizar el programa t-per.c, tal como se describe ms adelante.
Si se conoce el periodo de la secuencia que se va a estudiar, el fichero SECUEN deber
contener, al menos, dos periodos de dicha secuencia. Esto es debido a que el perfil de complejidad
lineal (LCP) de una secuencia con buenas propiedades de aleatoriedad debe crecer siguiendo la lnea k/2,
donde k es el nmero de bits procesados hasta ese momento, hasta alcanzar un valor lo ms cercano
posible al periodo. Para ello se deben procesar 2 periodos de la secuencia (evidentemente, si sabemos
de antemano que la complejidad lineal final es menor que la mitad del periodo esto no ser necesario,
pero si no sabemos nada sobre ella a priori, ser necesario disponer de al menos dos periodos de la
secuencia). Si no se conoce a priori el periodo del generador (por mtodos tericos) ser necesario
calcularlo. Para ello existe un programa detector del periodo (t-per.c), cuyo programa fuente (escrito en
lenguaje C) est en el directorio tests [PUIG92]. El fichero batch correspondiente, llamado t-per.bat, se
encuentra en el directorio batch. El proceso que se debe seguir es el siguiente:
a) Crear una cierta cantidad de bits de salida del generador (LONG_SEC) y actualizar este
valor en el fichero param.h (que se encuentra en el directorio tests) con el nmero de bits
de que consta nuestra secuencia. El programa detector de periodo implementado se basa en
calcular la autocorrelacin entre una cierta cantidad de los primeros bits de la secuencia
(LONG_TEST) con el resto de la secuencia, por lo que se debe ajustar tambin este
parmetro en el fichero parm.h. Por ejemplo, para una secuencia de periodo aproximado a
1.000 10.000 bits (o incluso ms), un buen valor para LONG_TEST puede ser 2000
300. Sin embargo, si el periodo aproximado esperado de la secuencia es por ejemplo 100,
sera conveniente afinar este parmetro a 20 30.
b) Ir al directorio batch, y ejecutar el fichero t-per.bat.
c) Colocar en el directorio results un fichero llamado RESPER que contendr el periodo de
la secuencia si se ha encontrado. Si se conoce el periodo, ya se podr obtener el fichero
SECUEN, teniendo en cuenta, tal como se ha dicho antes, que debe contener dos periodos
de la secuencia. Si no se hubiera hallado el periodo, se debe volver a realizar el proceso
aumentando el nmero de bits de la secuencia que se estudia (LONG_SEC) o aumentando
el valor del parmetro LONG_TEST en el fichero parm.h.
A la hora de pasar el programa detector de periodo hay que tener mucho cuidado, ya que el
hecho de realizar la bsqueda de esta forma puede conducir a falsas alarmas. Por ejemplo, si se dispone
de una secuencia muy larga y se le da al parmetro LONG_TEST un valor pequeo, puede ser que al ir
estudiando la secuencia aparezca alguna subsecuencia que coincida con ella pero, sin embargo, no
constituya el comienzo de la repeticin de la secuencia. Para estar seguros, lo mejor ser pasar el
programa detector de periodo para diferentes valores de LONG_TEST, lo que disminuir mucho la
probabilidad de falsa alarma.
259
Tabla 9.2 Bits necesarios en funcin del nmero de sucesos elegidos para los tests
TEST
s=8
s = 64
s = 512
Frecuencia
Parejas
Tros
Cuartetos
Transiciones
16
64
192
512
64
128
512
1.536
4.096
512
1.024
4.096
12.288
52.786
4.096
-MAX_L: Este parmero define el nmero de bloques mximo sobre el que se calcular la
entropa (usando para ello el test de entropa por bit de Mauer descrito en el captulo 5). Para
decidir este parmetro hay que recurir a la tabla 9.3 en la que aparece el mximo L que se podr
260
261
-RESLCPDESV: Este fichero muestra la desviacin de los valores obtenidos en el LCP sobre
los valores medios calculados que se esperan.
Los ficheros de resultados RESG2Z, RESG2U, RESG3, RESLCP y RESLCPDESV
representan grficas que muestran los puntos en forma X-Y. Para visualizarlos se puede utilizar
cualquier programa de visualizacin de grficas.
A) Clculo de la correlacin cruzada de dos secuencias
Existe otro programa que calcula la correlacin cruzada normalizada entre dos secuencias
(llamadas SECUEN1 y SECUEN2 respectivamente). Este programa se llama t-ccn.c y se encuentra en
el directorio tests, mientras que su fichero batch correspondiente se llama t-ccn.bat y se encuentra en el
directorio batch. Este programa funciona independientemente de los anteriores, y se puede usar
siempre que se necesite calcular la correlacin cruzada de dos secuencias (por ejemplo, dos secuencias
de salida de un generador, obtenidas a partir de distintos estados iniciales de las celdas). Su
funcionamiento es el siguiente:
a) Crear dos secuencias que se llamen SECUEN1 y SECUEN2 respectivamente (ambas deben
ser de igual longitud) y ponerlas en el directorio tests.
b) Actualizar el valor PERIODO en el fichero parm.h con la longitud de estas secuencias.
c) Ir al directorio batch y ejecutar el proceso t-ccn.bat.
d) El programa dar el resultado en el fichero RESCCN y lo colocar en el directorio results.
Este fichero de resultados est en formato de puntos X-Y, con lo que se puede ver con un
programa de visualizacin de grficos.
Si lo que se desea es calcular la funcin de correlacin cruzada no normalizada entre ambas
secuencias, se puede utilizar el programa t-ccnn.c (en el directorio tests), cuyo fichero batch se
denomina t-ccnn.bat y est en el directorio batch. El resultado de este programa es el mismo que en el
caso normalizado pero los valores que se obtienen en la correlacin no estn divididos por el periodo de
la secuencia y se llama RESCCNN. Adems, el proceso que se debe seguir es el mismo que en el caso
anterior. Una vez obtenidos todos estos resultados, corresponde al usuario el evaluarlos para dar una
apreciacin final de las propiedades del generador testeado. En el apartado siguiente se muestran
algunas consideraciones que se deben tener en cuenta a la hora de evaluar estos resultados.
262
Primer postulado de Golomb: Este postulado dice que en un periodo de una secuencia pseudoaleatoria,
la diferencia entre el nmero de unos y ceros no debe exceder de uno. Esto no se cumple casi nunca
exactamente en la realidad (excepto para los registros de desplazamiento de realimentacin lineal
(LFSR)) pero, sin embargo, se puede considerar un buen comportamiento respecto a este postulado si
esta diferencia no es excesivamante grande.
Segundo postulado de Golomb: Este postulado establece que en cada periodo de una secuencia pseudo
aleatoria, la mitad de las subsecuencias de unos debe tener longitud 1, una cuarta parte longitud 2, una
octava parte longitud 3, etc. En general, deben haber 1/2i subsecuencias de longitud i. Lo mismo debe
ocurrir con las subsecuencias de ceros. En los ficheros RESG2U y RESG2Z se muestran las
desviaciones que se obtienen respecto a este postulado. Lo ideal, evidentemente, sera que esta
desviacin fuese nula, pero en la prctica casi siembre aparecen ciertas desviaciones sobre todo para
subsecuencias de longitudes cortas. Esta desviacin casi siempre disminuir rpidamente a medida que
las subsecuencias se hacen mayores. Adems, el segundo postulado tambin establece que debe haber
el mismo nmero total de subsecuencias de ceros que de unos.
Tercer postulado de Golomb: Este postulado establece que la funcin de autocorrelacin normalizada
de una secuencia pseudoaleatoria debe ser bivalor, teniendo un pico en el origen de valor uno y un
valor muy pequeo e igual en todos los restantes puntos. Esto no se suele dar exactamente en la
realidad excepto para el LFSR, pero en la prctica debemos comprobar que el resultado obtenido para la
secuencia estudiada se acerca lo mximo posible a esto, mostrando un pico de valor uno en el origen
(esto se cumplir siempre), y que no presenta picos de elevado valor para el resto de los
desplazamientos.
El resultado de aplicar este test se muestra en el fichero RESG3. Adems, el programa puede
mostrar los picos que estn por encima de un cierto valor que le especifiquemos (COTA en el fichero
resulta.txt) y que por defecto es 0,7. El parmetro COTA se puede modificar, ya que se encuentra en el
fichero param.h en el directorio tests.
La complejidad lineal: La complejidad lineal de una secuencia es la longitud del registro de
desplazamiento con realimentacin lineal (LFSR) ms corto que es capaz de generar la secuencia dada,
es decir, determina qu porcin de subsecuencia es necesaria para ser capaz de reproducir toda la
secuencia. Por tanto, para que una secuencia sea impredictible, debe presentar un valor final de la
complejidad lineal del orden del periodo. Esto se puede ver adems en el ratio complejidad/periodo
(C/P) del fichero resulta.txt, que debe estar lo ms cercano que sea posible al 100%.
El perfil de complejidad lineal: Para poder usar la complejidad lineal como parmetro de medida de la
impredictibilidad de la secuencia, hay que estudiar la forma de crecimiento que muestra la complejidad
lineal al ir procesando los bits de informacin de la misma.
Si se representa la complejidad lineal en funcin del nmero de bits calculados (k) hasta ese
momento (fichero RESLCP), se debe ver un crecimiento siguiendo la lnea de k/2 (aunque de forma
irregular, con saltos de media 2 en altura y 4 en horizontal) hasta alcanzar el valor final de la
complejidad que, como se ha visto antes, debe estar lo ms ceraca posible al periodo. Para calcular esta
grfica se requieren al menos dos periodos de la secuencia. Adems, el fichero RESLCPDESV muestra
263
la desviacin de los valores que se van obteniendo de complejidad a medida que se procesa la secuencia,
con respecto al valor esperado calculado tericamente y que se vio en el captulo 6. Evidentemente esta
desviacin debera ser idealmente nula, pero en la prctica deberemos comprobar sea pequea.
Aleatoriedad y tests estadsticos: Los tests estadsticos se usan para detectar posibles defectos
estadsticos en los generadores de bits pseudoaleatorios, por ejemplo, para detectar cundo el modelo
estadstico que describe el comportamiento del generador se desva significativamente del de una fuente
simtrica binaria. Los tests que se han pasado sobre la secuencia estn descritos en el captulo 5, y los
resultados de los programas dan una indicacin de si pasa o no el test. En algunos tests (frecuencia,
parejas, tros, cuartetos y transiciones) se muestra el resultado de aplicar Num_data tests chi-cuadrado y
el resultado de aplicar un test de Kolmogorov-Smirnov sobre sus resultados, de forma que el resultado
de este ltimo test indica si la secuencia bajo estudio pasa o no el test estadstico en cuestin.
Tabla 9.3 Bits de secuencia necesarios para estudiar la entropa por bit
264
Adems, el hecho de que un generador pase un test no indica que no vaya a fracasar totalmente
al intentar pasar otro.
Test de entropa por bit: Este test ofrece principalmente dos ventajas sobre los tests estadsticos
anteriores. En primer lugar, a diferencia de ellos, este test es capaz de detectar cualquiera de los diversos
defectos estadsticos que pueda presentar la secuencia de salida del generador, includos todos los que
detectaban los tests mencionados anteriomente. Adems, es capaz de medir determinados parmetros
(como por ejemplo la frecuencia relativa de unos o ceros) y mide la significatividad del defecto.
Para realizar esto, este test calcula la entropa por bit de la secuencia. Para llevar a cabo el test
se procede a partir de las secuencias en bloques disjuntos (no superponibles) de longitud L. Este test se
pasar para bloques de longitud 1 hasta MAX_L, donde ste es un parmetro que hay que especificar en
el fichero param.h antes de pasar el test y estar limitado en funcin de la cantidad de bits que contenga
el periodo que hemos generado.
Sin embargo, en general, la entropa obtenida ir creciendo a medida que crezca el valor de L
y, para un buen generador, debera acercarse lo mximo posible al valor ideal 1. El programa da los
resultados de aplicar este test para los tamaos de L especificados (1...MAX_L).
La tabla 9.3 muestra hasta qu longitud de bloque puede estudiarse en funcin de la longitud
(PERIODO) de la secuencia bajo estudio, y teniendo en cuenta que al parmetro K se le da un valor de
10.000.
265
266
m=11
Periodo= 14329 bits.
0
0
1
0
0
1
1
1
1
0
1
2
3
Salida
MULTIPLEXOR
4
5
6
7
n=3
El primer postulado nos dice que en un periodo de la secuencia, la diferencia entre el nmero
total de ceros y el nmero total de unos no debe exceder de uno. Tal como muestra el fichero
resulta.txt que se muestra al final de esta captulo, en un periodo de salida de este generador se tienen
7.168 unos y 7.161 ceros con lo que la diferencia es de 7.
Si bien no cumple estrictamente este postulado, la diferencia es bastante pequea. Con estos
resultados sale una probabilidad para los unos de 0,5002, y una probabilidad para los ceros de 0,4998,
por lo que estn bastante equilibrados.
El segundo postulado establece dos condiciones. En primer lugar, el nmero total de
subsecuencias de unos debe ser igual al nmero total de subsecuencias de ceros. Para este generador
salen 3.583 subsecuencias de ceros y 3.584 subsecuencias de unos. La diferencia que sale, de una sola
subsecuencia, se puede considerar despreciable. La segunda condicin es que tanto para ceros como para
unos, deben haber (1/2)i subsecuencias para cada longitud i. La mejor forma de verlo es poniendo en
una grfica la desviacin de los resultados obtenidos respecto a la teora. Esto se puede ver en el
fichero RESG2Z (representado en la grfica 9.1) y RESG2U (representado en la grfica 9.2). En estas
grficas se puede observar que tanto para unos como para ceros la diferencia respecto a lo que establece
el segundo postulado es apreciable para subsecuencias de longitudes menores que 10, y es muy
pronunciada para longitudes de subsecuencias entre 2 y 5. Para longitudes de subsecuencias mayores
que 10, los resultados coinciden con los valores esperados por el segundo postulado. Hay que notar que
valores negativos de desviacin significan que hay una carencia de subsecuencias para una determinada
longitud, mientras los valores positivos reflejan un exceso para esa longitud. Adems, en el fichero
resulta.txt se puede ver la diferencia entre el nmero total de subsecuencias de ceros y unos para cada
longitud.
El tercer postulado establece que la funcin de autocorrelacin, calculada a lo largo de un
periodo de la secuencia debe ser bivalor. El fichero RESG3, que se muestra en la grfica 9.3, muestra
el resultado obtenido. Se observan unos picos de autocorrelacin fuera de fase que, si se analizan
cuidadosamente, resultan ser sumamente peligrosos si se utiliza el generador en aplicaciones como el
cifrado en flujo, ya que dan informacin de la estructura interna del generador. Vemoslo:
267
268
269
Los picos de la grfica 9.3 aparecen centrados en los siguientes valores: 0, 2.047, 4.094,
6.141, 8.188, 10.235, 12.282, 14.329. Si se observan estos nmeros, el primero y el ltimo son los
que corresponden al desplazamiento cero (valores en fase). Pero entre ellos hay 7 intervalos separados
por otros picos de autocorrelacin fuera de fase bastante altos. Esto corresponde con 23-1, que es el
periodo de uno de los dos LFSR que usa el generador. Adems, los picos estn separados 2.047 entre
s, y este valor corresponde a 211 -1 que corresponde con el periodo del otro LFSR que usa el
generador.
El fichero RESLCP, representado en la grfica 9.4, muestra el perfil de complejidad lineal
obtenido usando el algoritmo de Massey-Berlekamp que est implementado en el fichero t-clin.c del
directorio tests. Tal como se espera, este perfil sigue la lnea de k/2 (aunque irregularmente) para
secuencias de longitud k, por lo que en este sentido tiene un buen comportamiento. El problema es
que se estabiliza despus de que el algoritmo haya procesado tan slo 144 bits de la secuencia,
resultando un valor final de complejidad lineal C = 77, que se mantiene hasta el final del periodo, por
lo que es un valor peligrosamente bajo si se quiere emplear este generador en aplicaciones de cifrado en
flujo. Este mal comportamiento se puede apreciar mejor en las relaciones C/P y C/B que salen del
0,53 % y del 0,47 % respectivamente. En dicha grfica se ve que la desviacin respecto al LCP medio
es pequea hasta el valor 77, pero lgicamente, al estabilizarse la complejidad en este valor, la
desviacin comienza a crecer apreciablemente.
En el fichero RESLCPDESV, que se ha representado en la grfica 9.5, se muestra la
desviacin entre el perfil de complejidad que se ha obtenido de la secuencia bajo estudio y el perfil de
complejidad lineal ideal esperado para una secuencia aleatoria de dicha longitud.
Este generador se comporta bastante bien en cuanto a la estadstica, ya que la secuencia
producida por el generador ha pasado prcticamente todos los tests estadsticos a los que se ha sometido
su secuencia de salida. En el fichero resulta.txt se pueden ver los resultados de los tests estadsticos a
los que ha sido sometido la secuencia, la indicacin de si los pasa o no, y algunos resultados
significativos para cada uno de los tests. En este fichero, tambin se puede observar el resultado del
test de entropa que, con la longitud dada, slo se ha podido pasar para tamaos de bloque de longitud
mxima 4. Se puede observar que un resultado en torno a 0,65 en la entropa por bit no es un valor
excesivamente bueno, por lo que no podemos afirmar de forma rotunda que las secuencias producidas
por el generador muestren un grado aceptable de aleatoriedad.
El fichero ESPECTRAL, que se ha representado en la grfica 9.6, muestra el comportamiento
del generador respecto al test espectral. En l se observan algunos picos (aunque no demasiado
elevados) que no deberan aparecer. El lector debe notar que PREDICTEST no tiene en la versin
actual ningn programa que implemente el test espectral, por lo que un ejercicio interesante puede
consistir en realizar este programa.
Como conclusin del anlisis de los ficheros de resultados obtenidos del programa
PREDICTEST se puede mencionar su buen comportamiento en cuanto a periodo, al primer postulado
de Golomb, a la primera condicin del segundo postulado y a los tests estadsticos. Sin embargo, las
secuencias producidas no muestran un buen comportamiento con respecto a la segunda condicin del
segundo postulado de Golomb. Los resultados de los tests muestran adems otros problemas: el
primero es que la complejidad lineal obtenida es muy baja frente a la longitud del periodo. Esto hace
que la secuencia sea bastante predecible. El segundo problema es que en la funcin de autocorrelacin
aparecen unos picos que, si se analizan detenidamente, dan una informacin muy peligrosa si el
270
generador se emplea en una aplicacin como el cifrado en flujo. Finalmente, en el test espectral
aparecen picos indeseables que apartan el comportamiento de la secuencia bajo estudio del de una
secuencia verdaderamente aleatoria. Estos dos problemas hacen poco aconsejable el uso del generador
de Jennings por s solo en ciertas aplicaciones como la criptografa. A continuacin se muestra un
listado del fichero resulta.txt que muestra los resultados comentados anteriormente.
3.583
3.584
1.791
1.793
1.024
1.024
384
384
160
160
64
64
56
56
40
39
28
28
20
271
12
6
10
2
8
3
2
1
2
2
1
2
0
0
1
0
0
0
0
0
0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 1
correcto = 0
272
(50%)
-----------------Resultados del TEST DE TRIOS para 8 sucesos------------------------------------------------Test Chi^2_0 funcin chi = 4,000000 correcto = 0
Test Chi^2_1 funcin chi = 8,000000 correcto = 0
Test Chi^2_2 funcin chi = 6,000000 correcto = 0
Test Chi^2_3 funcin chi = 14,000000 correcto = 0
Test Chi^2_4 funcin chi = 22,000000 correcto = 1
Test Chi^2_5 funcin chi = 8,000000 correcto = 0
Test Chi^2_6 funcin chi = 2,000000 correcto = 1
Test Chi^2_7 funcin chi = 12,000000 correcto = 0
Test Chi^2_8 funcin chi = 10,000000 correcto = 0
Test Chi^2_9 funcin chi = 8,000000 correcto = 0
Test de KS (5%-95%) =
PASA el test de tros (48%)
------------------Resultados del TEST DE CUARTETOS para 8 sucesos-------------------------------------Test Chi^2_0
Test Chi^2_1
Test Chi^2_2
Test Chi^2_3
Test Chi^2_4
Test Chi^2_5
Test Chi^2_6
Test Chi^2_7
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
273
(36%)
------------------Resultados del TEST DE TRANSICIONES para 8 sucesos--------------------------------Test Chi^2_0 funcin chi = 2,000000
Test Chi^2_1 funcin chi = 4,000000
Test Chi^2_2 funcin chi = 1,000000
Test Chi^2_3 funcin chi = 6,000000
Test Chi^2_4 funcin chi = 6,000000
Test Chi^2_5 funcin chi = 3,000000
Test Chi^2_6 funcin chi = 2,000000
Test Chi^2_7 funcin chi = 2,000000
Test Chi^2_8 funcin chi = 2,000000
Test Chi^2_9 funcin chi = 4,000000
Test de KS (5%-95%) =
PASA
correcto = 0
correcto = 0
correcto = 0
correcto = 1
correcto = 1
correcto = 0
correcto = 0
correcto = 0
correcto = 0
correcto = 0
el test de transiciones (47%)
603
864
385
94
13
1
274
Sobre estos resultados se aplica un test chi-cuadrado con 6 grados de libertad con el
resultado:
NO PASA el test de subsecuencias ascendentes (Queda por debajo del 1%)
---------------TEST DE SUBSECUENCIAS DESCENDENTES---------------------------------------------Nmero de subsecuencias decrecientes de longitud 1 =
616
Nmero de subsecuencias decrecientes de longitud 2 =
874
Nmero de subsecuencias decrecientes de longitud 3 =
384
Nmero de subsecuencias decrecientes de longitud 4 =
85
Nmero de subsecuencias decrecientes de longitud 5 =
12
Nmero de subsecuencias decrecientes de longitud 6 o ms =
3
Sobre estos resultados se aplica un test chi-cuadrado con 6 grados de libertad con el
resultado:
NO PASA el test de subsecuencias descendentes (Queda por debajo del 1%)
---------------TEST DE PERMUTACIONES---------------------------------------------------------------------Se divide la secuencia en 1.318 grupos de 3 elementos y se cuenta el nmero de posibles ordenaciones.
Sobre estos resultados se pasa un test chi-cuadrado con 5 grados de libertad cuyo resultado es:
PASA el test de permutaciones
---------------TEST COLECTOR DE CUPONES-------------------------------------------------------------Nmero de observaciones = 20
Hay 0 segmentos de longitud 8 y se esperaban 0,048065
Hay 0 segmentos de longitud 9 y se esperaban 0,168228
Hay 0 segmentos de longitud 10 y se esperaban 0,346971
Hay 0 segmentos de longitud 11 y se esperaban 0,551999
Hay 1 segmento de longitud 12 y se esperaban 0,750866
Hay 1 segmento de longitud 13 y se esperaban 0,920285
Hay 0 segmentos de longitud 14 y se esperaban 1,047947
Hay 1 segmento de longitud 15 y se esperaban 1,130591
Hay 2 segmentos de longitud 16 y se esperaban 1,171006
Hay 0 segmentos de longitud 17 y se esperaban 1,175287
Hay 1 segmento de longitud 18 y se esperaban 1,150803
Hay 3 segmentos de longitud 19 y se esperaban 1,104906
Hay 0 segmentos de longitud 20 y se esperaban 1,044212
Hay 0 segmentos de longitud 21 y se esperaban 0,974282
Hay 1 segmento de longitud 22 y se esperaban 0,899557
Hay 3 segmentos de longitud 23 y se esperaban 0,823431
Hay 1 segmento de longitud 24 y se esperaban 0,748388
Hay 0 segmentos de longitud 25 y se esperaban 0,676163
Hay 0 segmentos de longitud 26 y se esperaban 0,607892
Hay 0 segmentos de longitud 27 y se esperaban 0,544255
275
0,485586
0,431974
3,197309
Sobre estos resultados se aplica un test chi-cuadrado con 23 grados de libertad con el
resultado:
PASA el test colector de cupones
---------------TEST DE SUBSECUENCIAS POR ENCIMA DE LA MEDIA-----------------------Se han computado 50 gaps (nmero de observaciones).
Nmero de brechas de longitud 0 =
31
Nmero de brechas de longitud 1 =
8
Nmero de brechas de longitud 2 =
4
Nmero de brechas de longitud 3 =
4
Nmero de brechas de longitud 4 =
2
Nmero de brechas de longitud 5 =
0
Nmero de brechas de longitud 6 o mayor =
1
Sobre estos resultados se aplica un test chi-cuadrado con 7 grados de libertad con el
resultado:
PASA el test de subsecuencias por encima de la media
---------------TEST DE SUBSECUENCIAS POR DEBAJO DE LA MEDIA-----------------------Se han computado 50 gaps (nmero de observaciones).
Nmero de brechas de longitud 0 =
28
Nmero de brechas de longitud 1 =
7
Nmero de brechas de longitud 2 =
7
Nmero de brechas de longitud 3 =
2
Nmero de brechas de longitud 4 =
2
Nmero de brechas de longitud 5 =
2
Nmero de brechas de longitud 6 o mayor =
2
Sobre estos resultados se aplica un test chi-cuadrado con 7 grados de libertad con el
resultado:
PASA test de subsecuencias por debajo de la media
---------TEST DE NUMERO DE SALTOS EN EL LCP-------------------------------------------------Nmero de saltos esperados en el LCP de una secuencia de 14.329 bits = 7.164,916667
Nmero de saltos encontrados en el LCP = 39 NO PASA el test del nmero de saltos en el LCP
---------TEST DE ALTURA DE LOS SALTOS DEL LCP----------------------------------------------NO PASA el test estadstico de altura de saltos en el LCP
276
Q = 20,
Q = 40,
Q = 80,
Q = 160,
K
K
K
K
= 10000,
= 10000,
= 10000,
= 10000,
ENTROPIA = 0,623700
ENTROPIA = 0,653250
ENTROPIA = 0,637800
ENTROPIA = 0,501175
9.7 Bibliografa
[CRU92]
[CRU93P]
[CRU93G]
[CRU93B]
[CRU94C]
[JEN80]
[PUI92]
[CES93]
Indice alfabtico
277
Indice alfabtico
A
Acceso mltiple por divisin de cdigo, 229-233
Aleatoriedad, 15-21
Aleatorizacin
proceso de, 222
en el estandard DVB, 224
en el sistema MAC/paquetes, 223
Algoritmo
Blumer, 191
Massey-Berlekamp, de, 67, 181
Ziv-Lempel, de, 187
ASG, generador, 116
Ataques por correlacin, 207
Autentificacin en GSM, proceso de, 219
Autocorrelacin, funcin de, 22, 134
Autodecimacin de secuencias, 83
Autodecimadas, generador de secuencias, 109
Autodecimadas de Ruepple, secuencias, 110
Autmatas
celulares, generadores basados en, 125
deterministas, 175
B
Bsculas, funcines combinadoras con, 79, 98
Beth-Piper, generador de, 113
Binomial, distribucin, 56
Blum-Micalli, generador de, 51
Blumer, algortmo de, 191
Brechas, test de, 151
BRM, generador, 108
C
Campos de Galois, 63
Caticas, generador de secuencias, 44
Cascada, control de reloj en, 82
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
278
D
De Bruijn, secuencias de, 86
Dispersin de energa, 222-225
Distancia
de Hamming, 209
de Levenshtein, 209
eucldea, 155
restringida de Levenshtein, 209
test de, 155
Distribucin
binomial, 56
de claves, 199
de claves en Eurocrypt, 216-217
de claves en GSM, 221
exponencial, 57
gausiana (normal), 54
Poisson, de, 58
uniforme, 16
uniforme no estndar, 54
E
Entropa por bit
definicin de, 165
test de, 163
Espectral, test, 166
Euler, funcin de, 65
Eurocrypt, acceso condicional, 211-217
Exponencial, distribucin, 57
F
Falsa alarma, probabilidad de, 147, 165
Fourier, transformada discreta de, 48, 166, 167
Frecuencia, test de, 148
Fuente binaria simtrica, 14
Funcin
acumulada de probabilidad, 53
combinadora, 72
de estado no lineal, 68
Euler, de, 65
G
Gausiana, distribucin, 54
Geffe, generador de, 95
Generador
ASG, 116
autmatas celulares, basado en, 125
Beth-Piper, de, 113
Blum-Micalli, 51
BRM, 108
cascada, en, 107
Chambers-Gollmann, 111
congruencias cuadrtico, de, 39
congruencias lineales, de, 34
congruencias lineal aditivo, de, 38
congruencias lineal mixto, de, 36
congruencias lineal multiplicativo, 34
control bilateral, de, 115
De Bruijn, de, 86
Geffe, de, 95
Gold, de, 231-233
Gollmann, de, 114
Hnon, de, 43
Jennings, de, 93, 214-216, 264-275
MacLaren-Marsaglia, de, 40, 105
marcha y espera, de, 82, 1013-115
Massey-Ruepple, de, 118
memoria, basado en, 126
mochila, de, 51
modulacin de fase del reloj, de, 105
multiplicador de tasa binaria, 108
pasos alternados, de, 116
permutaciones, de, 40
permutacin de subsecuencias, de, 122
Pless, de, 98
producto escalar, de, 106
producto interior, de, 119
PRN, 33
Ruepple, de, 101
suma entera, de, 49
Tatebayashi, de, 102
umbral, de, 97
Windmill, de, 120
Wolfram, de, 126
secuencias autodecimadas, de, 109
reloj en cascada, de, 82
Gold, cdigos de, 231-233
Gollmann, generador de, 114
Golomb, postulados de, 21-25
279
Indice alfabtico
GPSS/360, sistema, 32
H
Hnon, generador de, 43
I
Impredictibilidad, 66, 173, 177, 203
Inmunidad a la correlacin, 73
Irreducible, polinomio, 65, 87
J
Jennings, generador de, 93, 214-216, 264-275
K
Kolmogorov-Smirnov, test de, 144
L
Lineal, complejidad, 66, 177
M
Maclaren-Marsaglia, algoritmo de, 40
MacLaren-Marsaglia, generador de, 105
Mquina de Turing, 15, 175
Marcha y espera, controlador de, 82, 113-115
Massey-Berlekamp, algoritmo de, 67, 181
Massey-Ruepple, generador de, 118
Mximo orden, complejidad de, 189
Medio del cuadrado, algoritmo de, 31
Memoria, generador basado en, 126
Mersenne, primo de, 65
Mtodo
transformacin inversa, de la, 53
sndrome lineal, del, 96, 209
Mochila, generador de, 51
Modulacin de fase de reloj, 105
Monte-Carlo, tcnica de, 52
Multiplexor, combinacin con, 76, 94, 95, 214
Multiplicador de tasa binaria, generador, 108
M-secuencias, 21, 66, 135
N
Nmeros de Stirling, 153
P
Parejas, test de, 150
Pasos alternados, generador de, 116
Perfil de complejidad lineal, 178
S
Secuencia
aleatoria, 15
autodecimada, 83
b-aria, 17
de De Bruijn, 49, 86
k-distribuida, 17
m-secuencia, 21, 66, 135
G-aleatoria, 21
Gold, de, 231-233
PN 2, 85
pseudoaleatoria, 25
Seguridad, requerimientos de, 203
Semilla, 31
Simulacin de procesos, 225-226
Sndrome lineal, mtodo del, 96, 209
Spread spectrum, modulacin, 226-229
Stirling
nmeros de, 153
tringulo de, 154
Subsecuencias, test de, 157
Sucesivos, tests, 149
Suma, de secuencias pseudoaleatorias, 74
Suma entera, generador de, 49
280
T
Tasa de rechazo, 147, 163
Tatebayashi, generador de, 102
Tcnicas
control de reloj, de, 82, 104
modulacin de fase de reloj, de, 105
Teorema,
central del lmite, 55
Test
brechas, de, 151
chi-cuadrado, 141
colector de cupones, 154
consistencia lineal, de, 95, 207
correlacin sucesiva, de, 158
distancia, de, 155
empricos, 147
entropa por bit, de, 163
espectral, 166
estadsticos, 139
frecuencia, de, 148
hiptesis, de, 139
Kolmogorov-Smirnov, de, 144
parejas, de, 150
permutaciones, de, 156
poker, de, 152
subsecuencias, de, 157
sucesivos, 149
tericos, 166
transiciones, de, 159
trios, de, 151
Transformacin inversa, mtodo de la, 53
Transiciones, test de, 159
Trios, test de, 151
Turing, mquina de, 15
Turing-Kolmogorov-Chaitin, complejidad, 175
U
Umbral, generador de, 97
V
Variador de velocidad de reloj, 83
W
Windmill, generador de, 120
Wolfram, generador de, 126
Z
Ziv-Lempel, complejidad de, 186