Vous êtes sur la page 1sur 83

Miquel Soriano Ibañez

Raúl Gonzalo Díaz

Generación y análisis
de secuencias pseudoaleatorias
Primera edición: septiembre de 1999

© Els autors, 1999

© Edicions UPC, 1999


Edicions de la Universitat Politècnica de Catalunya, SL
Jordi Girona Salgado 31, 08034 Barcelona
Tel.: 934 016 883 Fax: 934 015 885
Edicions Virtuals: www.edicionsupc.es
e-mail: edupc@sg.upc.es

Producción: CBS – Impressió digital


Pintor Fortuny 151, 08224 Terrassa (Barcelona)

Depósito legal: B-38636-99


ISBN: 84-8301-348-7

Quedan rigurosamente prohibidas, sin la autorización escrita de los titulares del copyright, bajo las
sanciones establecidas en las leyes, la reproducción total o parcial de esta obra por cualquier medio o
procedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de ejemplares
de ella mediante alquiler o préstamo públicos, así como la exportación e importación de ejemplares para
su distribución y venta fuera del ámbito de la Unión Europea.
Indice

1. Introducción

1.1. Introducción ....................................................................................................................................... 1


1.2. Entornos de aplicación ....................................................................................................................... 2
1.3. Evolución histórica en la generación de números aleatorios.............................................................. 4

2. El cifrado en flujo

2.1. Antecedentes históricos...................................................................................................................... 7


2.2. Visión genérica del cifrado en flujo ................................................................................................. 10
2.3. Sincronismo en los cifradores en flujo ............................................................................................. 11
2.4. Enfoques al cifrado en flujo ............................................................................................................. 13
2.5. Ventajas e incovenientes del cifrado en flujo................................................................................... 14
2.6. Ataques comunes al cifrado en flujo ................................................................................................ 14
2.7. Criterios de diseño ........................................................................................................................... 14

3. Generadores

3.1. Introducción ..................................................................................................................................... 17


3.2. Generadores congruenciales............................................................................................................. 18
3.3. Registros de desplazamiento realimentados (FSR) .......................................................................... 21
3.4. Generadores con funciones de salida ............................................................................................... 28
3.5. Generadores controlados por reloj ................................................................................................... 38
3.6. Generadores en bloque..................................................................................................................... 45

4. Evaluación de la seguridad

4.1. Introducción ..................................................................................................................................... 49


4.2. Cálculo del periodo de una secuencia .............................................................................................. 50
4.3. Análisis estadístico de distribuciones............................................................................................... 50
4.4. Tests empíricos ................................................................................................................................ 53
4.5. Tests teóricos ................................................................................................................................... 58
4.6. Complejidades.................................................................................................................................. 63
4.7. Compresiones................................................................................................................................... 68

5. CDMA

5.1. Introducción a la técnica de acceso CDMA ..................................................................................... 69


5.2. Correlación aperiódica e impar ........................................................................................................ 72
5.3. Familia de secuencias pseudoaleatorias para sistemas CDMA ........................................................ 73

6. Bibliografía............................................................................................................................................ 79
Bibliografía
[ADA 97] Adachi, Sawahashi, Okawa. “Tree-Structured Generation of Orthogonal
Spreading Codes with Different Length for Forward Link of DS-CDMA
Mobile Radio”. Elect. Letters, vol 33, n. 1, Enero 97, pp 27-28
[BLAH 83] Blahut, R. Theory and practice of error control codes. Addison Wesley,
1983
[BETH 84] T. Beth, F. Piper "The stop-and-go generator". Lecture Notes in
Computer Science 209; Advances in Cryptology: Proc. Eurocrypt'84.
[BRUE 84] J.O. Bruer. "On pseudo random sequences as crypto generators" Proceedings
of Int. Zurich Seminar on Digital Communicationes, Switzerland, 1984..
[CHA 88] W.G. Chambers, D. Gollman. "Generators for sequences with near-maximal
linear equivalence" IEE Proc. E., vol. 135, pp 67-69, 1988.
[CRU 95] E. Cruselles, M. Soriano, J. Forné, J.L. Melús : “ Secure Communications in
Broadband Networks“. Third International Conference on
Telecommunication Systems. Modelling and Analysis.16-19 Març 1995,
Nashville, Tennesse. USA
[DING 91]C. Ding, G. Xiao, W. Shan The Stability Theory of Stream Ciphers. Lecture
Notes in Computer Science 561. Springer-Verlag , Berlin, 1991.
[DIN 98] Dinan, Jabbari “Spreading Codes for Direct Sequence CDMA and Wideband
CDMA Cellular Networks”. IEEE Communications Magazine, Sept 98.
[FUS 91] A. Fuster, D. de la Guía, J. Negrillo, F. Montoya. “A Basic Structure for
Generating Pseudorandom Binary Sequences”
[GOL 67] R. Gold. “Optimal binary sequences for spread spectrum multiplexing”.
IEEE Trans. on Information Theory, vol IT-13, 1967, pp. 619-621.
[GOLI 92] J. D. Golic, S. V. Petrovic "A generalized correlation attack with a
probabilistic edit distance". Lecture Notes in Computer Science 547.
Advances in Cryptology-Proc. Eurocrypt'92. Springer-Verlag , Balatonfüred,
1992. pp. 472 - 476.
[GOLL 89] D. Gollman, W. Chambers "Clock-controlled shift registers: A review".
IEEE J. Selected Areas on Communications, vol 7, pp 525-533, Mayo 1989.
[GOLO 67] S.W. Golomb. Shift Register Sequences Holden-Day. 1967.
[JAN 89] C. J. Jansen "The Shortest Feedback Shift Register that Can Generate a
Given Sequence ". Lecture Notes in Computer Science 435. Advances in
Cryptology-Proc. Crypto'89. Springer-Verlag , Montreal 1989. pp. 90 - 99.

© Los autores, 1999; © Edicions UPC, 1999.


Bibliografía.

[JEN 83] S. Jennings. "Multiplexed sequences: Some properties of the minimum


polynomial", Lecture Notes in Computer Science 149; Cryptography: Proc.
Workshop Cryptography, Springer Verlag 1983.
[JEN 84] S. Jennings. "Autocorrelation function of the multiplexed sequence", IEE
proc. vol 131, nº2, pp. 169-172, Abril 1984.
[KEY 76] E. Key. "An analysis of the structure and complexity of nonlinear binary
sequence generators", IEEE Trans. Information Theory, vol IT-22, nº 6, pp.
732-763. Nov. 1976.
[KLA 95] A. Klapper. “Feedback with carry shift registers over finite fields”, Fast
Software Encryption, Second International Workshop, Lecture Notes in
Computer Science, vol 1008, pp 174-178. 1995
[KLA 97] A. Klapper, M. Goresky “Feedback Shift Registers, 2-Adic Span, and
Combiners With Memory”. Journal of Cryptology, vol. 10, nº 2, 111-147.
1997
[KNU 67] D.E. Knuth. The Art of Computer Programming. Vol 2: Seminumerical
Algorithms" Adison-Wesley 1967.
[MAS 76] J.L. Massey. "Shift Register Sysnthesis and BCH Decoding" IEEE
Transactions on Information Theory, Vol. IT-15, No 1, Jan. 1976.
[MAS 84] J.L. Massey, R. A. Ruepple "Linear ciphers and random sequence generators
with multiple clocks" Lecture Notes in Computer Science 209; Advances in
Cryptology: Proc Eurocrypt'84. Springer-Verlag. Berlin 1985.
[MAUR91] U. Maurer. "A universal statistical test for random bit generators"
Lecture Notes in Computer Science, No 537. Advances in Cryptology-
CRYPTO'90. Springer-Verlag , Berlin, 1991.
[MEIE 90] W. Meier, O. Staffelbach. “Correlation Properties of Combiners with
Memory in Stream Ciphers”. Advances in Cryptology. Proc. Eurocrypt ‘90.
Springer-Verlag , pp 204 - 215.
[MEIE 92] W. Meier, O. Staffelbach. “Correlation Properties of Combiners with
Memory in Stream Ciphers”. Journal of Cryptology. Vol 5, n.1 1992.
[MUN 89] S. Mund "Ziv-Lempel Complexity for Periodic Sequences and its
Cryptographic Application". Lecture Notes in Computer Science 547.
Advances in Cryptology. Proc. Eurocrypt ‘89. Springer-Verlag , Brighton,
1989.
[PET 72] Peterson, Weldon. Error Correcting Codes. MIT Press, 1972
[PICK 82] R.L. Pickholtz, D.L. Schilling, L.B. Milstein. “Theory of Spread-Spectrum
Communications - A Tutorial”. IEEE Trans. Commun. vol COM-30, n.5, pp
855-884. Mayo 82.

B-2
© Los autores, 1999; © Edicions UPC, 1999.
Bibliografía.

[RUEP 85] R. A. Rueppel. “Correlation immunity and the summation generator”.


Advances in Cryptology. Proc. Crypto ‘85. Springer-Verlag , Berlin, 1986.
pp. 260-272.
[RUEP 86] R. A. Rueppel. Analysis and Design of Stream Ciphers. Springer-Verlag
(1986).
[RUEP 87] R. A. Rueppel, "When Shift Registers Clocks Themselves" Lecture Notes
in Computer Science. Advances in Cryptology- Proc. Eurocrypt'87.
Springer-Verlag, 1987.
[SAR 80] D. V. Sarvate, W.P. Pursley. “Cross-correlation properties of pseudo-random
and related sequences”. Proc. IEEE, vol 68, pp 593-519, 1980.
[SCH0 77] R. A. Scholtz. “The Spread Spectrum Concept”. IEEE Trans. Commun. vol.
COM-25, n.8 pp 748-755. Agosto 1977.
[SCHR 90] A.W. Schrift, A. Shamir. "On the Universality of the Next Bit Test". Lecture
Notes in Computer Science 537. Advances in Cryptology- Proc. Crypto'90.
Springer-Verlag , 1990. pp. 394 - 407.
[SCHN 96] B. Schneier, Applied Cryptography, John Wiley & Sons, 1996.
[SHA 49] C. E. Shannon "Communication theory of secrecy systems". Bell Syst. Tech.
J. vol 28, pp. 656-715, Oct. 1949.
[SIEG 84] T. Siegenthaler. "Correlation-immunity of nonlinear combining functions for
cryptographic applications", IEEE Trans. Inform. Theory, vol IT-30, pp 776-
780, Oct. 84
[SIMM 92] G. Simmons. Contemporary Cryptology. IEEE Press 1992.
[STA 89] O. Staffelbach. "Correlation Attacks on Stream Ciphers". Proceeding of the
workshop on Stream Ciphers. Report 89/1. 1989.
[TATE 89] Tatebayashi, Matsuzaki and Newman "A Cryptosystem using Digital
Signal Processors for Mobile Communications" . IEEE, 1989.
[WEL 74] Welch. “Lower Bounds on the Maximal Cross-Correlation of Signals” IEEE
Trans. Inform. Theory, vol IT-20, mayo 74, pp 397-399.
[ZEN 88] K. Zeng, M.Q. Huang, "On the Linear Syndrome Method in Cryptanalysis".
Lecture Notes in Computer Science, 403. Proc. Crypto'88. Springer-Verlag ,
New York, 1988, p.p. 469 - 478.
[ZEN 89] K. Zeng, C. Yang and T.R.N. Rao "On the Linear Consistency Test (LCT)
in Cryptanalysis with Applications". Lecture Notes in Computer Science,
435. Proc. Crypto'89. Springer-Verlag , New York, 1989, p.p. 164 - 174.
[ZEN 90] K. Zeng, C. Yang and T.R.N. Rao "An Improved Linear Syndrome
Algorithm in Cryptanalysis with Applications". Lecture Notes in Computer
Science. 537. Proc. Crypto'90. Springer-Verlag , New York, 1990. pp. 34 -
47.

B-3
© Los autores, 1999; © Edicions UPC, 1999.
Bibliografía.

[ZEN 91] K. Zeng, C. Yang and T.R.N. Rao. "Pseudorandom Bit Generators in Stream
Cipher Cryptography". IEEE, 1991.

B-4
© Los autores, 1999; © Edicions UPC, 1999.
Capítulo 1: INTRODUCCIÓN

1. Introducción

Bajo la denominación de secuencias aleatorias se engloban todas aquéllas que han


sido generadas mediante procesos físicos intrínsecamente aleatorios, es decir, basados
en el supuesto de la existencia de procesos al azar en la naturaleza. En múltiples
aplicaciones es preciso poder disponer de la misma secuencia (aparentemente aleatoria)
en dos puntos distintos, por lo cual es necesario utilizar algoritmos deterministas que
sean reproducibles. En tal caso, se denominan secuencias pseudoaleatorias.
Las secuencias pseudoaleatorias son utilizadas en diversos entornos relacionados con
el mundo de las telecomunicaciones. Entre otros ámbitos de aplicación, podemos
encontrar la transmisión de datos (tanto para aleatorizar símbolos como para llevar a
cabo la fase de entrenamiento en ecualización adaptativa), la criptografía y el acceso
múltiple CDMA. Asimismo son de interés en otras áreas como puede ser la simulación.
Tal como se ha mencionado anteriormente, una característica común que deben
satisfacer las secuencias en bastantes aplicaciones es que sean fácilmente reproducibles.
Esto significa que en el receptor se debe poder generar la misma secuencia utilizada en
el emisor. En consecuencia, dichas secuencias deben ser de origen determinista. Es
decir, no son de naturaleza aleatoria. Las secuencias que son objeto de estudio en este
texto son aquellas que presentan un comportamiento estadístico similar al que tendría
una secuencia totalmente aleatoria, aunque son generadas de forma determinista.
Los otros requisitos que debemos imponer a las secuencias dependen del ámbito de
aplicación. Así pues, en transmisión de datos el aspecto más relevante es la aleatoriedad;
en criptografía la impredictibilidad; mientras que en CDMA será la autocorrelación y
correlación cruzada entre secuencias pertenecientes a la misma familia.
A continuación se muestra de forma suscinta las necesidades en estos entornos.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 1 Introducción a las secuencias pseudoaleatorias

2. Entornos de aplicación

2.1 Criptografía en flujo

Las técnicas de cifrado en flujo se basan en una transformación variante en el tiempo


de los símbolos del texto en claro. La diferencia fundamental entre el cifrado en flujo y
el cifrado en bloque consiste en la presencia o no de memoria interna en el sistema, así
como el tamaño de la unidad mínima a cifrar.
En general, un cifrador en flujo consiste en un generador de clave cuya secuencia
pseudoaleatoria de salida (llamada secuencia cifrante o cifradora) se suma módulo dos
(operación binaria idéntica a la puerta OR-exclusiva) con los bits del mensaje, para
formar la secuencia de bits de salida. Cada bit de salida de la secuencia cifradora
pseudoaleatoria depende del estado interno del generador en ese momento.

DISPOSITIVO
mi CON ci
MEMORIA

ci = E ki (mi )
K k i = f ( K ,i )

Figura 1.1. Modelo del cifrado en flujo

A la hora de diseñar estos cifradores, deben cuidarse una serie de propiedades en la


secuencia utilizada. Al margen de conseguir que las secuencias generadas parezcan
aleatorias, la secuencia debe tener un comportamiento lo más impredecible posible. Esto
es, a partir de una fracción de la secuencia cifrante no debe poder predecirse el resto, ya
que en tal caso se facilitaría la labor de un cripotanalista.
Es difícil evaluar cuándo una secuencia es útil en este entorno; de hecho, no existe
ningún criterio general que permita validarlo. En cualquier caso, existen una serie de
requisitos generales que toda secuencia cifrante debe satisfacer. Dichos criterios están
relacionados con la aleatoriedad (postulados de Golomb), impredictiblidad (complejidad
lineal) y facilidad de implementación. En los capítulos 3 y 4 se analizarán con mayor
profundidad los distintos tests y generadores utilizados en este entorno.

2.2 Ecualización adaptativa y aleatorización


En los esquemas clásicos de transmisión de datos, es frecuente ubicar un aleatorizador
entre la fuente binaria equivalente y el codificador. Dicho aleatorizador no es más que
un generador pseudoaleatorio binario, cuya salida se suma a los bits salientes de la
fuente, tal como se muestra la figura 1.2.
2

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 1 Introducción a las secuencias pseudoaleatorias

El uso de este dispositivo permite garantizar la equiprobabilidad de los símbolos en el


canal, con lo cual se consigue que el valor medio de la señal sea nulo, y que las zonas de
decisión estén normalizadas. Al mismo tiempo, también permite satisfacer de manera
incondicional las hipótesis de incorrelación entre símbolos, facilitando el cálculo de
potencias.

Fuente Codificador Modulador

Aleatorizador
Canal
Canal

Aleatorizador

Destino Codificador Demodulador

Figura 1.2. Esquema de un aleatorizador

Los sistemas de ecualización adaptativa constituyen otro entorno de aplicación de los


generadores pseudoaleatorios. Los coeficientes que utiliza el ecualizador dependen del
error. En régimen permanente, se puede asumir que dicho error es únicamente de
cuantificación, es decir, se supone que no hay error de decisión. Sin embargo, en una
fase inicial no se puede partir de esa premisa. Por ello, inicialmente se emite una
secuencia pseudoaleatoria, y se compara la salida del ecualizador con los emitidos, ya
que en el receptor se dispone de un generador idéntico que permite generar la misma
secuencia emitida. La siguiente figura ilustra el proceso.

y(n) â(n)
Ecualizador Destino

Secuencia
z(n) pseudoaleatoria
a(n)
+-

e(n)

Figura 1.3. Esquema ecualización adaptativa.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 1 Introducción a las secuencias pseudoaleatorias

2.3. Acceso múltiple CDMA


El crecimiento continuo del volumen de tráfico, así como la aparición de nuevos
servicios exigen una elevada eficiencia en el uso del espectro a los sistemas futuros de
comunicaciones móviles. En ese sentido, los sistemas CDMA (code-division multiple
access) constituyen una alternativa muy interesante.
CDMA es una técnica de espectro ensanchado, consistente en que la señal original de
un usuario se expande distribuyendo su energía en un ancho de banda muy superior al
original. Las señales de datos, antes de ser transmitidas, son multiplicadas por una
secuencia pseudoaleatoria, (denominada código), diferente para cada usuario. Las
propiedades de ortogonalidad que presentan dichos códigos permiten recuperar la señal
de información en el receptor.
En este entorno, las propiedades de autocorrelación (para facilitar el sincronismo) y
correlación cruzada entre todas las secuencias de una misma familia (para poder separar
las señales) son fundamentales a la hora de analizar las prestaciones. En el capítulo 5 se
estudia con mayor profundidad la aplicación de las secuencias pseudoaleatorias a este
entorno, así como las familias más utilizadas.

2.4. Entornos de simulación


Dada la creciente complejidad de los sistemas actuales, es necesario poder evaluar sus
prestaciones en la fase de diseño, permitiendo elegir entre diversas posibles alternativas.
Para ello es preciso simular el sistema, es decir, diseñar un modelo de un sistema o
proceso y realizar experiencias sobre este modelo con la finalidad de comprender su
comportamiento y evaluar diversas estrategias operativas. La simulación de un sistema
engloba las siguientes fases: planificación, modelización, validación y aplicación.
El comportamiento del sistema se simula mediante modelos probabilísticos obtenidos
a mediante la experimentación. Por ello es necesario disponer de herramientas que
tengan un comportamiento estadísticamente similar al del sistema que se debe modelar.
Un método de cálculo numérico muy conocido es el de Monte Carlo. El nivel de
exactitud conseguido con dicho método está directamente relacionado con las
propiedades de aleatoriedad del generador pseudoaleatorio utilizado.

3. Evolución histórica en la generación de números aleatorios


En la mitad del presente siglo, con la aparición de los primeros ordenadores y la
voluntad de realizar simulaciones y cálculos probabilísticos, apareció la necesidad de
construir máquinas capaces de generar números aleatorios, o que aparentemente fuesen
aleatorios. Actualmente, es posible generar números realmente aleatorios a partir de
procesos físicos, apoyados sobre la suposición de la teoría cuántica que presupone la
existencia de procesos al azar en la naturaleza. Pero estos métodos físicos apenas tienen
utilidad, ya que en muchos entornos es necesario que el receptor pueda reproducir la
misma secuencia utilizada en emisión. Por esto, tal como se indicó anteriormente, son
necesarios algoritmos matemáticos deterministas que sean reproducibles.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 1 Introducción a las secuencias pseudoaleatorias

Una primera solución consistió en recopilar los números aleatorios generados en un


experimento probabilístico, y almacenarlos, para posteriormente ser reproducidos. Los
primeros sistemas de generación de números aleatorios eran eso, tablas y tablas de
números obtenidos con métodos aleatorios. En 1927, L. H. C. Tippett publicó una tabla
de 40.000 dígitos a partir de listas del censo. Más tarde, se construyó una máquina (la
ERNIE) que reproducía un millón de números ganadores en la lotería británica. Estos
sistemas tienen grandes desventajas: es necesario almacenar toda la tabla de números;
existen limitaciones de memoria y de rapidez; la tabla puede ser muy pequeña según las
necesidades de aplicaciones concretas; si bien es verdad que tienen la gran ventaja de
producir secuencias realmente aleatorias.
Los problemas inherentes a estos sistemas forzaron la búsqueda de maneras
eficientes de obtener números aleatorios. No sólo debían ser algoritmos que generaran
secuencias aparentemente aleatorias, sino que, además, tenían que ser mecanismos
rápidos. Debe tenerse en cuenta que la capacidad computacional de aquella época difiere
mucho de la actual, y el cálculo de los números aleatorios no debía suponer un cuello de
botella. John von Neumann, en 1946, fue el primero en sugerir un método determinista
llamado middle-square (traducido, más o menos, como "el centro del cuadrado").
Consistía en tomar un número con un número de cifras fijo (por ejemplo 6), elevarlo al
cuadrado y tomar como siguiente número el constituido por la mitad de las cifras
resultantes, en concreto, las que ocupan las posiciones centrales (de aquí el nombre del
método). Por ejemplo, si el número actual es el 193942, elevado al cuadrado da
37613499364, y tomando las cifras del medio, obtenemos como siguiente número al
613499.
Aparecieron nuevos algoritmos y se fueron mejorando los ya existentes, pero en
1948, D. H. Lehmer introdujo el que iba a ser el método de partida para gran mayoría de
esquemas posteriores, conocido hoy en día como el generador congruencial lineal. Su
idea esta basada en operar sobre el anillo de los enteros, realizando una multiplicación y
posteriormente una reducción modular, para mantener el resultado dentro del conjunto
finito. Así, se toma un número inicial de partida, y todos los siguientes se calculan a
partir del anterior mediante una simple multiplicación:

X n + 1 = a ⋅ X n mod m
X0 es el valor inicial
a es el multiplicador
m es el módulo

Lehmer también dio la posibilidad de utilizar un incremento (c), que posteriormente


fue aprovechado para aumentar la longitud del periodo de la secuencia.

X n+1 = (a ⋅ X n + c) mod m
Existen muchos otros métodos de generación de números aleatorios, como por
ejemplo, las secuencias de Fibonacci, método cuadrático de Coveyou, el generador de
números aditivos... Sin embargo, si se desea que el periodo de estas secuencias sea el
mayor posible, el generador congruencial lineal ampliado a los "k" símbolos anteriores
es el que presenta mayor interés.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 1 Introducción a las secuencias pseudoaleatorias

X n = (a1 X n−1 +!+ ak X n− k ) mod m


Este generador no es ni más ni menos que el esquema básico del L.F.S.R., el núcleo
de la mayoría de generadores pseudoaleatorios. Así, desde un punto de vista tanto
histórico como estructural, el generador congruencial lineal se puede considerar como el
precedente del L.F.S.R..

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

Capítulo 2: EL CIFRADO EN FLUJO

1. Antecedentes históricos

1.1. Introducción
A diferencia de los criptosistemas de clave pública, no se puede establecer
claramente ninguna fecha como aparición de los esquemas de cifrado en flujo. Su
origen puede ser tan remoto como el de los métodos clásicos de substitución
polialfabética. Si únicamente se considera la época de la criptografía moderna,
atendiendo características funcionales, el punto de inicio del cifrado en flujo viene
determinado por el cifrado de Vernam, a principios de siglo.
La aparición de los dos artículos de Shannon en 1948 y 1949 (el primero de ellos
sobre teoría de la codificación en las comunicaciones digitales y el segundo [SHA 49]
referente a la seguridad de la información) da origen a la teoría de la información, piedra
angular para comprender los fundamentos teóricos en los que se basa la criptología.
Paralelamente, a partir de los años cincuenta, se desarrolló ampliamente la teoría de
códigos, y especialmente la de espacios lineales en cuerpos finitos, que dio origen al
estudio de las realimentaciones lineales. Los L.F.S.R. (registros de desplazamiento
realimentados linealmente) constituyen el núcleo básico sobre el que se han construido
la mayoría de los generadores de cifrado en flujo.
La parte característica constituyente de todos los cifrados en flujo es el generador
pseudoaleatorio. La problemática acerca de la generación de números aleatorios
comienza a mediados de siglo, con los trabajos de Von Newman y Lehmer, entre otros.
Los esquemas inventados y los resultados obtenidos, así como la preocupación por
generar secuencias que parezcan aleatorias, definir claramente la aleatoriedad, etc... han
sido recogidas también por la criptografía.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

A continuación se presenta el cifrado de Vernam, como precursor de los sistemas


actuales de cifrado en flujo.

1.2. El método de cifrado de Vernam


El cifrado de Vernam (o one-time-pad, como también se le conoce) fue propuesto por
el ingeniero de la AT&T Gilbert Vernam, en 1918, y modificado posteriormente por
Joseph Mauborgne.

FUENTE
ALEATORIA
BINARIA
SIMÉTRICA

Canal seguro de transmisión de claves


ki ki

mi ci mi

Figura 2.1: Cifrado de Vernam

Es el antecedente más parecido, funcionalmente, a los sistemas de cifrado en flujo


actuales. El principio básico consiste en conseguir desacoplar totalmente, bajo un punto
de vista estadístico, el mensaje en claro y el criptograma. Es decir, conseguir que su
información mutua sea cero. Para alcanzar este objetivo, se dispone de una secuencia
realmente aleatoria que se suma con los bits del mensaje. Shannon, en 1949, demostró
que este esquema cumplía la condición de secreto perfecto que después definiremos, y
por lo tanto era invulnerable a ataques basados sólo en criptogramas. Es un cifrado con
seguridad incondicional, incluso con medios de computación infinitos, el criptoanalista
jamás será capaz de obtener el mensaje en claro verdadero.
Aunque, visto por el lado de la seguridad, es el mejor sistema posible, presenta un
grave inconveniente de índole práctica: es necesario transmitir tanta cantidad de
información por un canal seguro (la clave) como la que se quiere transferir por el canal
convencional. En vez de eso, sería mejor enviar los datos útiles directamente por el
canal seguro. Los sistemas actuales nacen a partir de la poca operatibilidad del sistema
one-time-pad.

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

1.3. Teoría de la información


En 1948 y 1949, C. E. Shannon revolucionó los sistemas de comunicaciones con sus
descubrimientos hechos públicos en dos artículos. El primer trabajo, en 1948, trataba,
entre otras cosas, de las comunicaciones digitales y acerca de la máxima cantidad de
información que un canal puede transmitir. Sus aportaciones, con la introducción del
concepto de entropía, la información mutua y la capacidad de canal, le valieron el
reconocimiento internacional y la fundación de una nueva rama de las matemáticas: la
teoría de la información.
Un año más tarde, volvió a sorprender a la comunidad científica con los resultados
obtenidos en materia de seguridad aplicando los métodos de su trabajo anterior. Dividió
la seguridad en dos niveles. Al primero le llamó seguridad teórica, en tanto en cuanto el
potencial criptoanalista no tiene limitaciones de tiempo ni de capacidad de cálculo. En
este nivel, el sistema de seguridad de considera roto cuando existe una única solución
para dicho criptograma.
Esta teoría de la seguridad teórica esclareció muchos puntos oscuros y dio nuevo
rumbo a la criptología. Introdujo el concepto de secreto perfecto, que brevemente se
puede resumir como aquella situación en la que el texto en claro es estadísticamente
independiente de la clave y del mensaje cifrado. Expresado matemáticamente:
PM CK (M C, K ) = PM (M )
Demostró que el cifrado de Vernam cumple la condición de secreto perfecto y, por
tanto, es teóricamente seguro. Shannon llegó a describir una manera universal de romper
cualquier cifrado inseguro. El resultado pesimista de este concepto es la necesidad de
una clave secreta demasiado larga para la mayoría de aplicaciones, pudiéndose utilizar
únicamente una vez.
El segundo nivel de la seguridad que fue considerado es la seguridad práctica,
entendiéndose como tal aquel sistema en el que el criptoanalista tiene limitaciones de
tiempo y capacidad de cálculo computacional para el análisis de criptogramas. Más
adelante, basados en este tipo de seguridad, se construyeron los sistemas de clave
pública.
Los generadores utilizados en criptografía en flujo tienden a imitar el cifrado de
Vernam. Para ello, deben generar una secuencia verdaderamente aleatoria. El primer
problema con el que nos encontramos es definir qué se entiende por aleatoria, y a
continuación, demostrar que estas características de aleatoriedad son suficientes para
asegurar la seguridad incondicional. Estos puntos se analizarán con detalle
posteriormente. Antes, sin embargo, cabe citar que este tipo de generadores ya ha sido
estudiado anteriormente en la teoría de la información, aunque en vez de generadores se
les suele llamar fuentes. En el caso binario, estas fuentes se denominan fuentes binarias
simétricas (B.S.S.: Binary Symmetric Source).
Las fuentes binarias simétricas se definen como fuentes sin memoria con una
probabilidad de cada símbolo de 0,5. Se puede demostrar que éste es el único caso sin
memoria en el cual se consigue una entropía de fuente máxima, de 1. La entropía mide
la cantidad de información que posee la fuente. El concepto de la entropía servirá más
adelante como una medida de la aleatoriedad de una secuencia. Dado que los algoritmos
de cifrado en flujo, en el fondo, no son nada más que máquinas de estado finito,
disponen de una memoria no nula, que obligará a utilizar el concepto de la entropía para
fuentes con memoria desarrollada en la teoría de la información.
9

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

2. Visión genérica del cifrado en flujo


Desde un punto de vista global, un cifrador en flujo no es más que una máquina de
estados finitos, con un vector de entrada, otro de salida, el estado interno y las
pertinentes funciones de salida y de cambio de estado. El modelo más genérico que
representa al cifrado en flujo es el siguiente:

Entrada
FUNCIÓN Salida
N DE
SALIDA L
FUNCIÓN
DE CAMBIO
DE ESTADO

ESTADO
M

Figura 2.2. Modelo genérico del cifrado en flujo

La entrada se toma de N símbolos en N símbolos. La salida se agrupa en vectores de


L símbolos y el tamaño de la memoria es de M símbolos. Los símbolos pueden ser
elementos de cualquier alfabeto finito, pero es raro encontrar algún sistema de cifrado
contemporáneo que no considere el alfabeto binario.
Sin embargo, habitualmente, el cifrado en flujo únicamente utiliza un modelo
simplificado. Las funciones de salida y de cambio de estado son fijas, no dependen de
la clave, que consiste en el estado inicial requerido. Tanto la entrada como la salida se
van leyendo de bit en bit (N=L=1). La transformación de salida se descompone en dos
partes: la primera, que únicamente actúa sobre el estado actual devolviendo un bit, y la
segunda, que suma este bit módulo dos con el bit del mensaje. El cifrado en flujo
también se puede considerar como un generador pseudoaleatorio que suma cada uno de
los bits de salida con los del mensaje.
Las dos partes más importantes de esta estructura residen en la función de cambio de
estado y en la subfunción de salida. Usualmente, ambas funciones son lo
suficientemente sencillas como para posibilitar unas velocidades de cifrado muy altas,
característica casi universal de los cifradores en flujo.

10

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

Entrada

1
1
SUBFUNCIÓN
DE Salida
SALIDA Función
de1
salida
M

ESTADO

M
FUNCIÓN
DE CAMBIO
DE ESTADO

Figura 2.3. Modelo convencional del cifrado en flujo

Hasta hace poco, la función de cambio de estado únicamente consistía en una


realimentación lineal sobre unos registros de desplazamiento para conseguir un periodo
máximo. Esto conllevaba a la necesidad de utilizar una función de salida no lineal para
evitar el criptoanálisis sobre la parte lineal. Sin embargo, existe un compromiso en estos
esquemas, que pueden ser atacados por dos bandas. Por una parte, se han de evitar los
ataques por correlación [SIEG 84], y a la vez los ataques por estabilidad, que buscan la
mejor aproximación afín de la subfunción de salida [DING 91].
Considerar el cifrador en flujo como una máquina de estados finitos es un punto de
vista adicional que ayuda a comprender y analizar mejor su comportamiento. Una
consecuencia automática de esta afirmación proviene de la teoría de estados finitos,
donde se demuestra que si el tamaño de la memoria es finito y la salida no depende de la
entrada (como es el caso del modelo simplificado con el generador pseudoaleatorio), la
secuencia generada será inevitablemente periódica.

3. Sincronismo en los cifradores en flujo


Dentro de los sistemas de cifrado en flujo, es posible distinguir dos
clasificaciones: los síncronos y los autosincronizantes. La diferencia está en si la
transformación de cifrado utiliza o no el conocimiento de los símbolos previos.

11

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

Cifrado síncrono

M C M

K K
Generador Generador
pseudoaleatorio pseudoaleatorio

Cifrado autosincronizante

M C M

K
Generador K Generador
pseudoaleatorio pseudoaleatorio

Figura 2.4: Sincronismo en el cifrado en flujo

Los sistemas síncronos y autosincronizantes presentan, de manera resumida, las


siguientes características:

SÍNCRONOS AUTOSINCRONIZANTES
En el cambio de estado no hay dependencia El estado siguiente depende de los últimos
con el mensaje L caracteres del mensaje
Si hay un error en transmisión, no se Si hay un error en transmisión, la
propaga influencia del error dura L bits
La pérdida de 1 bit rompe el sincronismo La pérdida de 1 bit provoca la pérdida de
sincronismo durante L bits
La secuencia cifrante es periódica La secuencia cifrante es aperiódica, debido
a la dependencia con el mensaje

La característica más relevante de los esquemas síncronos es la pérdida de


sincronismo en el caso de insertar o perder un bit durante la transmisión, y es la que
determina su escenario de trabajo habitual. En aquellos ámbitos en los que es necesaria
una transparencia semántica, como en la transmisión de datos, se utilizan sistemas
síncronos. En cambio, en las aplicaciones como transmisión de voz, o imágenes, donde
los condicionantes temporales son fundamentales se suelen utilizar modelos
autosincronizantes.

12

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

4. Enfoques al cifrado en flujo


Tal como Rueppel especifica en [RUEP86], se distinguen cuatro enfoques en la
construcción de los sistemas de cifrado en flujo. La diferencia se establece en relación
al tipo de seguridad deseado: incondicional, computacionalmente demostrable, probable
y condicional.
Los enfoques son los siguientes:
• Según la teoría de la información
Se parte de la hipótesis de que el criptoanalista posee una capacidad de cálculo y
un tiempo infinitos; por lo tanto este enfoque está en relación con el concepto de
seguridad incondicional. El sistema se considera roto cuando hay una única
solución al criptograma con probabilidad 1.
Se dice que un sistema es perfectamente seguro cuando el mensaje en claro y el
criptograma son estadísticamente independientes. En tales circunstancias el sistema
es imposible de romper.
En su defecto, un sistema es idealmente seguro si existe más de una solución al
mensaje en claro, sin importar la cantidad de criptograma observado.
Un interesante subproblema derivado es aquella situación en que la cantidad de
criptograma de que se puede disponer está limitada; sin necesidad que los dígitos
sean consecutivos. Es el problema de la aleatorización local.
• Según el sistema teórico
El objetivo de este enfoque es conseguir que el algoritmo de cifrado origine al
criptoanalista un problema previamente no conocido y de difícil solución, aunque
no esté basado en un problema difícil clásico. Por lo tanto este enfoque está en
consonancia con el tipo de seguridad probable. Los sistemas se diseñan de manera
que resistan los ataques fundamentales como son la substitución, el análisis
estadístico, el ataque por correlación,... Algunos ejemplos de criterios en el diseño,
que se han ido desarrollando a lo largo de la historia, son el periodo, la complejidad
lineal, la confusión, la difusión, las no-linealidades...
Esta metodología es, hoy en día, la más extendida y utilizada para la creación de
nuevos sistemas de cifrado en flujo.
• Según la complejidad teórica
El diseñador del cifrador basa la fortaleza en un problema computacionalmente
difícil, como son los problemas clásicos del logaritmo discreto, la factorización...
Está en relación con el tipo de seguridad computacionalmente demostrable. El
criptoanálisis consta de dos vertientes. Por una parte, es el proceso de predecir un
único dígito de la secuencia cifrante, y por otra, consiste en poder distinguir la
secuencia cifrante de una realmente aleatoria.
Se dice que un generador es perfecto si, o bien es impredecible, o bien no es
analizable por ningún test estadístico de tiempo polinomial. Cabe destacar que
todavía no se conoce ninguno de estos generadores ni se ha podido demostrar su
existencia (como tampoco negarla).

13

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

• Cifradores de flujo aleatorizados


Por último, existe un tipo de generadores en los que se asegura que el proceso
de criptoanálisis es impráctico, no por la capacidad de cálculo necesaria, sino por la
cantidad de memoria requerida. El objetivo es aumentar el número de bits que el
criptoanalista debe examinar sin tener que incrementar el tamaño de la clave. Esta
característica se consigue haciendo que la clave no especifique el esquema interno
del cifrador, sino que indique una secuencia en particular de una lista pública. El
criptoanalista no tiene más remedio que buscar a través de todas las secuencias
aleatorias.

5. Ventajas e inconvenientes del cifrado en flujo


Los cifradores en flujo gozan de multitud de características peculiares. Una de las
más relevantes es el pequeño tamaño que ocupan en los componentes electrónicos (en la
oblea de silicio) y todas las consecuencias que de ahí se derivan: poco consumo, baratos,
etc... Pero sobretodo, la característica fundamental es la rapidez de cifrado. Son los
sistemas más rápidos que existen, más rápidos que los cifrados en bloque, y muchísimo
más que los sistemas de clave pública.

6. Ataques comunes al cifrado en flujo


Una vez recogida la información en cualesquiera de las modalidades anteriores,
existen varias técnicas para criptoanalizar el criptograma. Los principios básicos de
todos los ataques se basan en los métodos clásicos como: la substitución y
aproximación, "divide y vencerás", búsqueda de deficiencias estadísticas...
Recientemente, han aparecido algoritmos más sofisticados y potentes, a los que hay que
tener en cuenta antes de implementar cualquier cifrador, como es, por ejemplo, el
criptoanálisis diferencial, cuya aparición provocó el criptoanálisis de muchos esquemas
que hasta entonces se creían seguros. Los ataques posteriores más relacionados con el
cifrado en flujo son el ataque por correlación, el ataque por el método del síndrome
lineal, el test de consistencia lineal, y el estudio de la estabilidad de las secuencias
(típicamente con el cálculo de la mejor aproximación afín [B.A.A.: Best Afine
Approximation]).

7. Criterios de diseño
Antes de diseñar un cifrador en flujo, además de aspectos relativos a la facilidad de
implementación, existen algunas características que todo generador pseudoaleatorio
debería cumplir:
1. Longitud de la clave grande
El número total de claves posibles tiene que ser lo suficientemente grande como
para evitar los ataques exhaustivos. El tiempo requerido para comprobar todas las
claves debe ser enorme, de tal manera que el criptoanalista desista de efectuar un
ataque exhaustivo.

2. Periodo largo
Como mínimo, el periodo más pequeño de todas las secuencias cifradoras
generables debe ser mayor que el más grande de todos los mensajes, de manera que
14

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 2 El cifrado en flujo

no haya repeticiones en la secuencia pseudoaleatoria, análogamente al cifrado de


Vernam.

3. Aleatoriedad
La secuencia cifradora ideal debe aleatoria. Por eso, un importante criterio de
diseño es conseguir que la secuencia no presente regularidades, no haya patrones
reconocibles... La secuencia debe parecer al máximo una distribución uniforme,
igual que si se tirara una moneda al aire (no trucada, se supone); debe presentar
buenas propiedades estadísticas para poder enmascarar la estadística del mensaje.
4. Impredecibilidad
Por último, pero no por ello menos importante, la secuencia a la salida debe ser
impredecible. Trasladado a la secuencia cifrante, debe ser difícil conocer el valor
de un símbolo kn, conocidos varios anteriores, (k0, k1, ... , kn-1).

Entre los autores especializados del cifrado en flujo, existe un consenso acerca de
las propiedades características todos los sistemas, que se traducen posteriormente en
algunos tipos de test. Algunas de ellas tienen que ver directamente con los criterios de
diseño. Entre las más importantes se encuentran:

• El periodo
• La complejidad lineal
• El perfil de la complejidad lineal
• La complejidad de máximo orden
• La entropía por bit
• Aleatoriedad k - distribuida
• etc.

Todos ellas serán detallados en el capítulo 4.

15

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Capítulo 3: GENERADORES

1. Introducción
A lo largo de este capítulo, se dan a conocer los generadores pseudoaleatorios más
conocidos, su esquema de funcionamiento, propiedades más relevantes y ámbito de
aplicación.
Básicamente, los algoritmos más frecuentes siguen el modelo convencional de
cifrado en flujo, con un generador pseudoaleatorio y una suma binaria. El estudio
presentado en este capítulo se centra en los sistemas de generación de dígitos binarios
aleatorios.
La clasificación que a continuación se presenta de los generadores pretende ser
práctica, y sencilla a la vez. Está realizada desde el punto de vista del criterio de diseño,
atendiendo a su estructura interna. El software SSP que acompaña a este documento
presenta la misma clasificación.
• Congruenciales
• Registros de desplazamiento realimentados
• Funciones de salida
• Controlados por reloj
• En cascada
• En bloque
Sería imposible poder mencionar todos y cada uno de los que se han propuesto.
Aunque en los últimos años se hayan publicado una gran cantidad de generadores, en la
práctica, sólo algunos son los más representativos y, dentro de éstos, pocos tienen
utilidad práctica hoy en día. Por eso sólo se comentarán los generadores más habituales,
y los que dan una visión de conjunto para cada tipo de diseño. Casi todos ellos han sido
implementados en software en el programa.
17

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

A continuación se comentarán las características de cada generador, así como sus


propiedades más relevantes. Posteriormente, tras estudiar detenidamente en el próximo
capítulo, los diferentes métodos de tests existentes, se mostrarán los resultados de la
aplicación de dichos tests a cada algoritmo de generación de números aleatorios.

2. Generadores congruenciales
Se ha incluido el estudio de estos generadores por su importancia histórica y su
todavía masiva utilización en los sistemas informáticos para producir números
pseudoaleatorios. Por ello se ha creído conveniente incorporarlos para comprobar sus
propiedades estadísticas y compararlas con las de los demás generadores.

2.1. Lineales y afines


Su descripción matemática es muy sencilla:

Congruencial lineal: xn = (a ⋅ xn −1 ) mod m


Congruencial afín: x n = (a ⋅ x n −1 + c) mod m

Como es obvio, los congruenciales lineales son un caso particular de los


congruenciales afines. Todos los resultados serán obtenidos para el caso del generador
afín, directamente aplicables al caso lineal substituyendo por cero allí donde pone c.
Se puede demostrar que cualquier valor de la secuencia está determinado por los
valores iniciales de a, c, m y x0, según la siguiente expresión:

 c ⋅ ( a n − 1 )
xn =  a n ⋅ x0 +  mod m
 a −1 

Realmente no hay ningún algoritmo determinista que pueda generar números


aleatorios, ya que una vez fijados los parámetros iniciales, también se determinan
automáticamente todos los números originados de dicho sistema.
Todo sistema generado mediante una función recursiva

x n = f ( x n −1 ) xi ∈ Z m

y que opere con un número finito de números, a la larga, muestra inevitablemente un


comportamiento cíclico, y los valores acaban por repetirse. La longitud de cada ciclo se
denomina periodo (p). El periodo máximo de la secuencia resultante es m (siendo m el
módulo, y también el número de elementos del conjunto finito en el cual se generan los
números pseudoaleatorios).
Los generadores congruenciales se corresponden a esta descripción. En el caso de los
congruenciales afines, el periodo máximo también puede ser de m (póngase el caso más
sencillo, un contador: a=0, c=1), pero en los congruenciales lineales, el periodo máximo
es de m-1, pues el valor 0 da lugar a un ciclo cerrado sin más elementos.

18

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Uno de los objetivos en el diseño de generadores es conseguir periodos largos. Para


ello, se toma m grande. De todas formas, un elevado valor de n no supone ninguna
garantía a la hora de conseguir un periodo grande. El periodo máximo puede ser m, pero
el que realmente resulta puede ser muy pequeño. Para asegurar un periodo máximo,
existen estudios elaborados que han buscado qué condiciones son las que propician esta
situación.
Para conseguir máximo periodo en los generadores congruenciales afines es
necesario y suficiente que se cumplan las siguientes condiciones:

a) mcd ( m,c ) = 1 (m y c son primos entre sí)


b) ∀q primo tal que q| m ⇒ q|( a − 1 )
c) 4| m ⇒ 4|( a − 1 )

En los generadores congruenciales lineales, el periodo máximo se consigue si:

a) mcd ( x0 , m ) = 1 (x0 y m son primos entre sí)


b) a es un elemento primitivo módulo m
Un elemento es primitivo cuando mediante sucesivas exponenciaciones puede
generar a todos los elementos del conjunto finito. Un número a es un elemento
primitivo módulo pe si y sólo si se cumple alguna de estas condiciones:
i) p e = 2 y a es impar
ii) p e = 4 y a mod 4 = 3
iii) p e = 8 y a mod 8 = 3 ,5 ,7
iv) p = 2 , e ≥ 4 y a mod 8 = 3 ,5
v) p es impar, e = 1, a ≡/ 0 (mod p ) y a ( p −1 )/ q ≡/ 1 (mod p ) ∀q primo ∋ q|( p − 1 )
vi) p es impar, e > 1 , a cumple (v) y además, a ( p −1 ) ≡/ 1 (mod p 2 )

Las demostraciones detalladas se pueden encontrar en [KNUT67].


Para no tener que buscar parámetros que cumplan las condiciones impuestas arriba,
se adjunta en el apéndice A una lista de algunos generadores utilizados, con sus
respectivos parámetros.
En el caso de secuencias binarias, se precisa un algoritmo que genere secuencias de
bits. Por esta razón, los generadores congruenciales implementados, después de calcular
el número xn, devuelven cero si el número está por debajo de la mitad del módulo, y
uno, en caso contrario. En general, si se toma el bit de menor peso del estado se
obtienen peores prestaciones, en cuanto a aleatoriedad, que tomando el de mayor peso.
Debe tenerse en cuenta que el periodo natural de la secuencia en el conjunto de los
números enteros puede verse reducido al realizar la conversión a bit. Una manera de
obtener periodos más largos, sin estar limitados por el tamaño de la palabra del
ordenador, es combinando varios generadores. El periodo máximo resultante es el
mínimo común múltiplo de los periodos máximos de todos ellos.

19

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

La gran ventaja de los generadores congruenciales es que son rápidos, puesto que
requieren pocas operaciones por bit. Sus propiedades de correlación, así como su
predecibilidad debido a su estructura lineal no aconsejan su uso en criptografía ni en
CDMA. Jim Reeds mostró cómo podía romperse la seguridad del algoritmo .

2.2. Polinómicos
Con el fin de evitar las linealidades de los dos métodos anteriores, se pensó en idear
la misma iteración de recurrencia, pero con una función f(!) no lineal, que continuase
siendo computacionalmente sencilla. R. R. Coveyou propuso un método cuadrático
bastante interesante,

xn = xn −1 ( xn −1 + 1 ) mod 2 e

ya que la carga computacional es la misma que en el congruencial afín, y el módulo es


una potencia de dos que permite operar fácilmente en los ordenadores, sin preocupación
por el desbordamiento. Posteriormente, se fue generalizando a sistemas polinómicos de
grados cúbicos...
El siguiente símbolo depende del anterior en forma polinomial, de la siguiente forma:

Congruencial polinómico: ( )
xn = ak ⋅ xnk−1 +!+ a1 xn −1 + a0 mod m

donde k es el grado del polinomio (con k=1, estamos en el caso afín) y sigue habiendo la
reducción modular final.
El método sigue consistiendo en una fórmula de recurrencia que únicamente depende
del símbolo anterior y, por tanto, el periodo máximo que cabe esperar es de m. Las
condiciones matemáticas en las que se cumple el periodo máximo son mucho más
complejas que en los generadores anteriores.
Aun poseyendo varias multiplicaciones y exponenciaciones, el método sigue siendo
bastante rápido (para k razonables), como todos los congruenciales. E, igual que antes, a
pesar de tener una función no lineal para el cambio del estado, estos generadores se han
podido romper bajo un punto de vista criptográfico.
Joan Boyar ideó un ataque criptoanalítico que predecía los valores para los
generadores cuadráticos y cúbicos. Otros investigadores han extendido el trabajo de
Boyar para romper cualquier generador congruencial polinómico.
Estos generadores, a pesar de ofrecer buenas propiedades aleatorias, son muy
predecibles, y por lo tanto, inservibles para la criptografía. Más adelante, con los
L.F.S.R. se volverá a reafirmar la diferencia entre la aleatoriedad y la predictibilidad.

2.3. De Fibonacci
Posteriormente, se ideó una técnica para aumentar el periodo de las secuencias
generadas sin tener que estar limitados por el módulo. El procedimiento consiste en
hacer depender a xn no sólo del símbolo anterior, sino de los dos símbolos anteriores:

xn = f ( xn − 1 , xn − 2 )
20

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Expresado de forma congruencial, con la fórmula más simple, queda la conocida


secuencia de Fibonacci:

xn = xn −1 + xn − 2 mod m
El periodo en las secuencias de Fibonacci normalmente suele resultar algo mayor que
m, pero un análisis con varios tests estadísticos demuestra que no son suficientemente
aleatorias.
Posteriormente, Green, Smith y Klem generalizaron las secuencias de Fibonacci a
una dependencia con los k símbolos anteriores:

xn = f ( xn −1 ,! , xn − k )

ampliando el periodo enormemente (hasta mk) y mejoraban las prestaciones de


aleatoriedad.

Congruencial de Fibonacci: x n = ( x n −1 + x n − 2 ) mod m

El periodo máximo que se puede conseguir con los métodos en que el símbolo
siguiente depende de los dos anteriores es de m2, ya que la secuencia no comenzará a
repetirse hasta que los símbolos consecutivos coincidan. O sea, el periodo será el valor
p, tal que:

( xn + p , xn + p − 1 ) = ( xn , xn − 1 )

3. Registros de desplazamiento realimentados (F.S.R.)


El esquema de los registros de desplazamiento realimentados es la pieza clave sobre
la cual se apoyan la mayoría de generadores pseudoaleatorios, y construyen, a modo de
mecano, agrupando y combinando F.S.R., nuevos mecanismos de generación de
números aleatorios.
Un F.S.R. se compone de 2 partes:
1. Un registro de desplazamiento (memoria)
2. Una función de realimentación (función de cambio de estado)

SL-1 SL-2 S2 S1 S0

Función de realimentación

Figura 3.1. Registro de desplazamiento realimentado

21

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Se contemplará el caso binario, es decir, en el que cada celda representa un bit y la


función de realimentación tiene coeficientes binarios. En este caso las celdas son
implementables mediante un biestable. Los F.S.R. son famosos, en gran parte, debido a
esta facilidad de implementación en hardware digital, que los hace sencillos,
económicos y pequeños.
El mecanismo de funcionamiento viene determinado por un reloj. A cada impulso de
reloj, todos los bits del registro de desplazamiento se desplazan hacia la derecha una
posición. El bit de la salida usualmente se corresponde con el bit de menor peso. El
nuevo bit, el de mayor peso, se calcula en función del valor de los bits del registro.
Las secuencias de salida son periódicas. Tanto el periodo como muchas otras
características de los F.S.R. comenzaron a ser estudiadas a mediados de los años 60 por
Ernst Selmer, el criptógrafo en jefe del gobierno noruego. Dos años más tarde, Solomon
Golomb, un matemático de la N.S.A., publicó un libro con los resultados de Selmer y
algunos propios, que aún sigue siendo una referencia clásica [GOLO67].
Básicamente, los F.S.R. se dividen en dos grandes grupos, diferenciados por el tipo
de realimentación que exista. Por una parte, están las realimentaciones lineales, en las
que el bit realimentado es una combinación lineal de los bits anteriores, los llamados
registros de desplazamiento realimentados linealmente (más brevemente, L.F.S.R), y por
otra, está el gran grupo de todas las realimentaciones que no cumplen la condición de
linealidad, por lo que se las llama registros de desplazamiento realimentados
no-linealmente (o N.L.F.S.R.)

3.1. L.F.S.R.
Los F.S.R. más sencillos son los L.F.S.R. La función de realimentación es,
simplemente, la XOR de ciertos bits del registro. A esta configuración también se la
llama configuración de Fibonacci, por la similitud con el método de Fibonacci
mencionado arriba para generar números.
Inicialmente, los L.F.S.R. fueron utilizados en la codificación de canal para la
generación de las palabras de los códigos bloque. Paralelamente, desde los inicios de la
era electrónica, los sistemas de cifrado en flujo con registros de desplazamiento
realimentados han sido el caballo de batalla de la criptografía militar. No es de extrañar,
pues, que muchos de los resultados hayan provenido también de este campo
(únicamente basta recordar la identidad de Selmer y Golomb, pertenecientes a las
agencias nacionales de seguridad de sus respectivos países).
El esquema general de un L.F.S.R., así como la nomenclatura utilizada se muestran
en la figura 3.2. 'L' representa el número de celdas del L.F.S.R. Los estados se
representarán mediante la letra 'S' y los coeficientes de la realimentación con la letra 'r'.
La numeración comienza por la salida, desde cero hasta L-1, tanto para las celdas como
para los coeficientes de realimentación. La función de realimentación (lineal) se expresa
mediante el siguiente polinomio:
Prealimentacion ( x ) = x L + rL −1 ⋅ x L −1 +!+ r2 ⋅ x 2 + r1 ⋅ x + r0

22

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

SL-1 ... S2 S1 S0

-rL-1 -r2 -r1 -r0

Figura 3.2: Esquema general de un L.F.S.R.

Esta notación facilita la identificación de cada coeficiente con su celda


correspondiente, que no cambia aunque se modifique el tamaño del registro. En aras de
establecer una unicidad de criterios, a lo largo de este libro se identificará a las celdas
con un índice menor como las de menor peso, y a las contrarias como las de mayor peso.
Otra notación, bastante generalizada, consiste en utilizar el polinomio característico
en lugar de utilizar el polinomio de realimentación. En ella, los coeficientes se
acostumbran a escribir con una c mayúscula 'C', y la numeración comienza a partir de la
celda de mayor peso con un 1, y acaban con la de menor peso, con L. Cada notación es
conveniente según la situación, y serán utilizadas indistintamente, indicando
previamente, claro está, la que se vaya a utilizar. Dichos polinomios, el de
realimentación y el característico, se relacionan entre sí por ser uno el recíproco del otro.

Pcaracterís tico ( x ) = C L x L χ C L −1 → x L −1 χ K χ C 2 → x 2 χ C1 → x χ 1

1
Pcaracterístico φx ) = x L Prealimentación  
 x

Hay que señalar que el esquema del L.F.S.R. no está restringido únicamente al caso
binario, sino a cualquier tipo de cuerpo, finito o infinito, como pueden ser los reales.
El funcionamiento es como sigue. En cada impulso de reloj, los valores de las celdas
se multiplican por sus respectivos coeficientes y se suman para dar el nuevo valor (celda
de mayor peso) y a la vez que todos los demás bits se desplazan una posición a la
derecha. Así, los L primeros términos de la secuencia de salida coinciden con el
contenido inicial de las celdas, y los siguientes términos vienen determinados por la
ecuación de recurrencia (utilizando el polinomio característico):

L
sj = − ∑ Ck → s j −k Vj ≥ L
k =1

23

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

En el caso binario, las operaciones de restar y sumar son equivalentes, y los


coeficientes únicamente pueden ser ceros o unos. Físicamente, cuando hay un cero
significa que no hay conexión, y cuando hay un uno sí la hay, aplicando el bit de la celda
directamente sobre el sumador.
Un L.F.S.R. de L celdas tiene 2 L vectores de estado diferentes. Sin embargo, como
la operación de recursión es lineal, cuando el contenido de las celdas es de todo-ceros, el
bit resultante de la realimentación también es cero, y el L.F.S.R. vuelve a quedarse en el
mismo estado, es decir, dicho estado es absorbente. Por eso, como la secuencia generada
por un L.F.S.R. acaba siendo periódica, el periodo máximo que se puede esperar es de
2 L − 1 . En este caso, la secuencia se conoce como una m-secuencia (del inglés:
maximum-length sequence). Sólo los L.F.S.R. con las conexiones apropiadas pueden
generar m-secuencias. Para que haya periodo máximo, el polinomio de realimentación
debe ser primitivo módulo 2. Para aclarar conceptos, se ilustra el siguiente ejemplo. Se
tiene un L.F.S.R. de 3 celdas con un polinomio de realimentación fijado por:

r0 = 1
r1 = 0
r2 = 1

Los polinomios de realimentación y característico son los siguientes:

Prealimentación = x 3 + x 2 + 1
Pcaracterístico = x 3 + x + 1

S2 S1 S0

Figura 3.3: Ejemplo de un L.F.S.R.

Suponiendo un estado inicial ( S2 , S1 , S0 ) = ( 0 ,0 ,1 ) (recordemos que se ha de evitar el


estado inicial nulo), la secuencia que se origina es la siguiente:

24

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Tiempo Estado Salida


0 001 1
1 100 0
2 110 0
3 111 1
4 011 1
5 101 1
6 010 0
7 001 1
8 100 0
9 110 0
10 111 1

Se puede apreciar que a partir del séptimo instante de tiempo, el estado vuelve a
coincidir con el inicial y la secuencia de salida se repite. En este caso tenemos una
secuencia de periodo 7, que, como se ha dicho anteriormente, es el máximo para un
LFSR de 3 celdas. Por lo tanto, el polinomio utilizado es un polinomio primitivo.
L
Un polinomio de grado L es primitivo si y sólo si divide a x 2 −1 + 1 , pero no divide a
ningún polinomio del tipo x d + 1, para cualquier d menor que 2 L − 1 . De hecho,
realmente sólo es necesario comprobar que no divide a ningún x d + 1 siendo d
cualquier divisor de 2 L − 1 .
En general, no existe ningún método simple y universal para generar polinomios
primitivos, ni tampoco para comprobar si un polinomio dado es primitivo o no. Para
ciertos grados dichos polinomios están tabulados, y el proceso habitual consiste en
realizar búsquedas en dichas tablas [PET 72]. Lo que sí es fácil es generar polinomios
irreducibles o comprobar que lo son. Todo polinomio primitivo es irreducible, pero lo
contrario no siempre es cierto. Sólo es cierto cuando 2 L − 1 es primo. En tales casos,
se dice que el primo es un primo de Mersenne. Resumiendo, para comprobar si un
polinomio es primitivo, se calcula 2 L − 1 . Si es primo, únicamente es necesario
comprobar que es irreducible, puesto que todos los polinomios irreducibles también
serán primitivos. Si no es primo, existen varios tipos de test que pueden detectar si un
polinomio no es primitivo (como por ejemplo, que el número de coeficientes sea par,...).
Aunque estos tests no pueden demostrar que un polinomio es primitivo, aumentan las
probabilidades de que lo sea, en el caso de no saber si lo es o no. Para facilitar la
búsqueda de un polinomio primitivo módulo dos, en el anexo se listan algunos.
Visto al revés, la ventaja de conocer los primos de Mersenne es que, si se quiere
encontrar un polinomio primitivo rápidamente, basta con tomar un número 2 L − 1 que
sea primo (primo de Mersenne) y encontrar un polinomio irreducible de grado L. El
problema aparece debido a que hay pocos primos de Mersenne (sólo hay 27 con
L < 45.000 ).
Una vez está asegurado el periodo máximo, en las m-secuencias, Golomb demostró
algunas propiedades aleatorias de los L.F.S.R. mediante análisis matemático, a partir de
las cuales enunció sus famosos tres postulados de aleatoriedad, que más tarde se
describirán. Por eso, a estas secuencias también se las llama pseudo-ruido
(Pseudonoise-sequences).

25

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Aunque los L.F.S.R. cumplen propiedades aleatorias muy buenas y es posible


asegurar un periodo muy grande, no son útiles bajo un punto de vista criptográfico, por
ser fácilmente predecibles, ni en entornos CDMA, ya que el número máximo de
secuencias m de familias con correlación cruzadas pequeñas es insuficiente.
Por definición, una secuencia realmente aleatoria es impredecible, pero en los
esquemas deterministas de generación de secuencias finitas, estrictamente, el concepto
de la aleatoriedad no tiene sentido, y lo que se hace es medir ciertos parámetros
asociados con la aleatoriedad. El hecho que una secuencia cumpla estas características
(como, por ejemplo, que el número de unos sea igual al número de ceros, o por el estilo)
no implica necesariamente que tenga que ser impredecible. Además, se ha de tener en
cuenta que tampoco tiene sentido hablar de predecibilidad si no se menciona qué tipo de
predictor estamos utilizando. En la mayoría de los casos, el predictor es lineal, por lo
que las secuencias generadas mediante algoritmos lineales, como son los L.F.S.R., se
predicen fácilmente. Es decir, en las secuencias finitas, una secuencia puede ser muy
aleatoria, pero también muy predecible; el ejemplo más claro son los L.F.S.R.
En cualquier caso, la complejidad lineal de los L.F.S.R. puede tomar un valor
máximo de 2L (en las m-secuencias), lo que significa que bastan 2L bits para
caracterizar completamente el estado inicial y las conexiones de un L.F.S.R. de L celdas.
Además, existe un algoritmo eficiente propuesto por Massey [MAS 76] que permite
calcularlo rápidamente.

3.2. F.S.R. con realimentación no-lineal


El hecho de que la realimentación sea de tipo lineal no atiende a ninguna necesidad
especial. Simplemente, es más fácil analizar matemáticamente los sistemas que son
lineales que los que no lo son, y se pueden establecer las condiciones óptimas de diseño
en las que se consiguen las propiedades deseadas. Sobre la teoría no-lineal de los
códigos, cada día se sabe más; no obstante, todavía quedan muchas lagunas sin cubrir,
por lo que aún no están claros los métodos de diseño que aseguran unas buenas
propiedades estadísticas, un gran periodo, una gran complejidad lineal, etc.
A pesar de todo, se han propuesto algunos esquemas con una realimentación
no-lineal, algunos, con una función de realimentación con memoria (como los F.C.S.R.
[KLA 95], [KLA 97]) otros, con unos factores de orden mayor que 1 (como el propuesto
en [CRU 95]), en otros, intentando conseguir un periodo máximo (como en las
secuencias de De Bruijn). En todos los casos, el esquema general es como sigue:

SL-1 SL-2 S2 S1 S0

Función de realimentación no-lineal

Figura 3.4: Sistemas F.S.R. no-lineales

26

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Para el análisis sistemático y la representación canónica de estos sistemas


no-lineales, existen varias notaciones, las más extendida es la forma normal algebraica
(A.N.F.), que refleja directamente la suma de productos:

f ( x1 , x 2 ,..., x n ) = a + a1 x1 + a 2 x 2 + ...+ a n x n + a12 x1 x 2 + ...+ a12 ..n x1 x 2 ... x n

3.2.1. N.L.F.S.R. del dept. de M.A.I.T.E.


La mayoría de los sistemas prácticos actuales se basan en un registro de
desplazamiento, mayoritariamente en el L.F.S.R. La característica lineal de L.F.S.R. es
su punto débil y origen de todos sus problemas, pero por lo demás, presenta unas
propiedades muy deseables por cualquier generador. Entre otras, una posible solución
consiste en utilizar módulos F.S.R. con realimentación no-lineal.
Un ejemplo de estos generadores es el presentado en [CRU95]. Su estructura es
simple, permitiendo un crecimiento modular y favoreciendo una implementación
hardware no costosa. Se consiguió un gran periodo, aleatoriedad y una gran complejidad
lineal. La característica de no-linealidad del generador obtenido le confiere la robustez
que le falta al L.F.S.R.; por eso, se pensó en utilizar este generador como su substituto
en todos los esquemas que incluyen un L.F.S.R.
En el esquema se puede apreciar que el sistema emula un L.F.S.R. añadiendo una
no-linealidad de tercer orden. Hacerla de segundo orden se pensó que era demasiado
pequeña ante la posibilidad de ataques por medio de la complejidad cuadrática. El
cálculo de la complejidad cúbica es muy costoso computacionalmente, y el generador
diseñado presentaba buenas propiedades, por lo que se estimó que era suficiente sin
necesidad de complicar más el diseño.

a b c

SL-1 SL-2 S2 S1 S0

Figura 3.5: Esquema del generador N.L.F.S.R. del dept. de M.A.I.T.E.

27

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

La ecuación de recurrencia que describe el comportamiento del N.L.F.S.R. es:

L−1
s n ( t ) = ∑ si ( t ) ⋅ ri + s a ( t ) ⋅ sb ( t ) + s a ( t ) ⋅ sb ( t ) ⋅ s c ( t )
i =0

donde a, b y c son los índices que indican las celdas con conexión a la puerta AND.
Al igual que el L.F.S.R., el estado nulo es absorbente. El periodo y la complejidad
lineal que puede llegar a tener este generador se ha comprobado que pueden llegar a
alcanzar los valores máximos, mediante las conexiones adecuadas.

Periodomax = 2 L − 1
C . L .max = 2 L − 2
Un análisis más detallado acerca de las condiciones que han de poseer las conexiones
y las prestaciones de este generador se pueden encontrar en [SOR96]

4. Generadores con funciones de salida


Los generadores descritos en el apartado anterior, basados únicamente en un registro
de desplazamiento realimentado adolecen de dos problemas. Por una parte, si la
realimentación es lineal (los L.F.S.R.), es posible asegurar un gran periodo, unas buenas
propiedades aleatorias; pero son muy predecibles, y por lo tanto, inseguros
criptográficamente. Por otra parte, cuando se trabaja con realimentaciones no-lineales,
dado que la teoría no-lineal de los cuerpos finitos no está suficientemente desarrollada,
no es posible realizar un análisis criptoanalítico tan sistemático como en el caso lineal, y
los sistemas resultan ser más seguros. Sin embargo, por la misma razón, no se conocen
medios para asegurar largos periodos, ni tampoco buenas propiedades aleatorias. Es
necesario realizar una búsqueda exhaustiva para encontrar las conexiones que ofrecen
buenas propiedades.
Una solución intermedia ampliamente adoptada consiste en utilizar uno o varios
generadores L.F.S.R. para poder asegurar la aleatoriedad y el periodo, pero la salida no
se toma directamente de una de las celdas del registro de desplazamiento, sino que los
estados de los generadores se combinan mediante una función para obtener el bit de
salida. En aplicaciones criptográficas dicha función debe ser no lineal. No es necesario
que los subgeneradores básicos consistan en L.F.S.R., pueden ser también otros tipos de
generadores conocidos que presenten buenas propiedades, pero lo normal es utilizar sólo
L.F.S.R. con polinomios de realimentación primitivos, debido a que son sencillos, poco
voluminosos, rápidos, económicos y fáciles de implementar.
Una de las primeras propuestas que combinaba varios L.F.S.R. para mejorar sus
características fue realizada por Gold, con aplicaciones en CDMA. El objetivo de esta
familia de secuencias generada mediante estos dispositivos es conseguir que
correlaciones cruzadas entre ellas presentaran picos pequeños. Su idea era sumar la
salida de dos L.F.S.R., y aunque esta combinación es lineal, es un primer paso a los
sistemas que combinan varios L.F.S.R. En el capítulo 5 se explicará este generador con
mayor profundidad.
Desde un punto de vista práctico, en el entorno criptográfico, existen dos situaciones
importantes:

28

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

a) Filtrar no linealmente el estado de un L.F.S.R.


b) Combinar las secuencias de salida de varios L.F.S.R.

El primer caso (a) se conoce como los generadores con filtro de salida, y el
segundo (b), como el tipo de generadores combinadores. Los sistemas con filtro se
pueden considerar como un caso especial de los sistemas combinadores, pero debido a
algunas diferencias en el análisis matemático y en la descripción de las características,
es conveniente considerarlos por separado.
Su evolución ha sido favorecida principalmente por dos factores:
1 La tecnología V.L.S.I.:
A medida que iban estando disponibles mejores métodos para la síntesis de
registros de desplazamiento, y sobretodo componentes combinadores como los
multiplexores, los flip-flops, etc...
2 Las propiedades teóricas son demostrables.
Como los subgeneradores internos consisten en L.F.S.R., la mayoría de
propiedades teóricas de estos generadores, tales como el periodo, la complejidad
lineal, las estadísticas aleatorias..., son demostrables y calculables
matemáticamente, a pesar de la función no-lineal en la salida.
En el ámbito de la criptografía las funciones de salida deben ser no lineales. Una de
las precauciones que se deben tomar en su diseño es mantener la aleatoriedad de la
secuencia. El otro gran problema es conseguir una buena impredecibilidad, evitando la
síntesis lineal por el algoritmo de Massey y cualquier ataque criptoanalítico. El futuro de
estos generadores es incierto debido a la continua aparición de nuevos ataques sobre
estos sistemas. Por eso, para garantizar la seguridad, es necesario analizar con mucho
detalle las propiedades; hay muchos requisitos que cumplir para evitar cada uno de los
ataques. Esto ha restado flexibilidad al diseño, hay mucha rigidez, se va perdiendo la
confianza y va aumentando el desinterés respecto a estos sistemas.
Para conocer las propiedades genéricas de los sistemas combinadores y con filtros,
los ataques criptoanalíticos sobre estos esquemas y los criterios no lineales de diseño,
véase [SIMM92].

4.1. Filtros
La figura 3.6 muestra un esquema genérico de filtrado no lineal. El esquema consiste
básicamente en un registro de desplazamiento (habitualmente con realimentación lineal)
y una función de salida no lineal que opera con los bits del estado del registro. La salida
de esa función no lineal da lugar a la secuencia, aunque en algunos casos dicha
secuencia puede constituir la entrada de otro bloque.

29

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Función lineal

Función no-lineal
(FILTRO)

Figura 3.6: Descripción de las funciones de salida con filtro

• Estructura
L.F.S.R. de tamaño L
Función de salida f :(GF ( 2 )) → GF ( 2 )
L

Estado inicial S(0) del L.F.S.R.

• Funcionamiento
1. Desplazar L.F.S.R.
2. Calcular y ( t ) = f ( S( t ))

• Salida
La secuencia y(t)

4.1.1. Generador por rotación múltiple.


En [FUS 91] se presentó un esquema de cifrado basado en una función de filtrado
altamente no-lineal. El subgenerador básico es un L.F.S.R. de L celdas con un
polinomio de conexión primitivo. El valor de L se escoge de forma que cumpla la
condición:
L = n + 2n
para n cualquier número entero.
La función de filtrado consiste en una rotación múltiple de ciertos bits del estado del
L.F.S.R.

30

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

m3 c3
m2 c2
m1 c1
m0 c0
(Y0,...,Y2n -

(R0,...,Rn-1) Rotación múltiple

(X0,...,X2n -

Figura 3.7: Generador por rotación múltiple

El mecanismo comprende los siguientes pasos:


1 El L.F.S.R. se desplaza una posición.
2 Los n bits de mayor peso (R0,...,Rn-1) indican el número de rotaciones que deben
recibir los otros 2n bits (X0,...,X2n -1). La rotación consiste simplemente en un
desplazamiento circular de los bits a la derecha.
3 Una vez efectuada la rotación, los bits rotados son almacenados en un registro de
donde se irán extrayendo los bits para sumarlos con el mensaje. Dado que mediante
una rotación se obtienen n bits, la entrada se agrupa de n en n bits y se suma módulo
2 cada bloque de n bits con la salida del rotador.
Una de las grandes ventajas de este esquema es que permite una modelización
matemática, lo que posibilita un estudio analítico de las características propias de esta
propuesta.
La función de rotación es una función booleana que mapea un vector binario L-
dimensional sobre un espacio binario de n bits:

Rotación:( R0 ,..., Rnχ1, X0 ,..., X2n χ1 ) → (Y0 ,..., Y2n χ1 )

De forma matricial:

R= X −Y

donde la matriz R corresponde a una matriz de Toeplitz con los 2n minterms respectivos
del vector R:

31

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

 m0 m2 n − 1 " m3 m2 m1 
 m m0 " • • m2 
 1 
R =  m2 m1 " • • m3 
 • • " • • • 
m • • • m0 
 2n −1 " 

También se ha realizado un análisis matemático fundado en la notación A.N.F., del


que se han extraído las siguientes conclusiones:
1 Cada una de las 2n secuencias generadas (una por cada Yi ) tienen el mismo periodo
que el número de estados del L.F.S.R. Si el L.F.S.R. es un generador de
m-secuencias, el periodo es de 2L-1
 n
2 La función booleana para cada bit de salida incluye un término lineal y   ⋅ 2 k
 k
términos de cada uno de los posibles ordenes pequeños (k=1,2,...), lo que asegura
una distribución uniforme de ceros y unos a lo largo de la secuencia.
3 El valor de la complejidad lineal de cada una de las secuencias está acotada inferior
y superiormente por la expresión:

 L  n+ 1 L
 
 
 n + 1
≤ C . L .( Yi ) ≤ ∑  
k =0  k 

4 No existe correlación entre cualquiera de las 2n secuencias y la secuencia que


generaría el L.F.S.R., siendo, por lo tanto, inmune a ataques por correlación.

4.2. Combinadores
La evolución de las funciones combinadoras se ha visto muy condicionada por los
métodos criptoanalíticos a medida que han ido apareciendo.
Uno de los ejemplos más simples de generadores combinadores son los de Gold y
Kasami. En ambos casos, la salida equivale a realizar una XOR de dos o tres LFSR, tal
como se verá en el capítulo 5.
Las primeras funciones combinadoras carecían de memoria, y normalmente se
correspondían directamente con algún componente electrónico como biestables JK,
multiplexores... La aparición del criptoanálisis por correlación anuló la utilidad de estos
sistemas. Desde entonces, una nueva imposición en el diseño ha sido conseguir que la
información mutua entre las entradas y la salida sea cero.
Hace poco han aparecido algunas funciones combinadoras con memoria, que intentan
evitar el ataque por correlación. El generador pionero en este tipo de diseño es el
sumador real de Rueppel, que posteriormente será analizado. Después de él, han
aparecido otros muchos diseños con memoria, y algunos algoritmos criptoanalíticos que
muestran debilidades de estos sistemas en algunas situaciones concretas [MEIE92].

32

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

SUBGENERADOR

SUBGENERADOR
FUNCIÓN

COMBINADORA

SUBGENERADOR

Figura 3.8: Funciones combinadoras

• Estructura
N generadores L.F.S.R. (no necesariamente del mismo tamaño)
Función de salida f : (GF ( 2 )) → GF ( 2 )
N

N estados iniciales Sj(0) para cada uno de los N L.F.S.R.


• Funcionamiento
1. Desplazar los N L.F.S.R.
2. Extraer los bits b j de cada L.F.S.R.
3. Calcular y( t ) = f ( b1 ( t ), b2 ( t ),..., bN ( t ))
• Salida
La secuencia y(t)
El periodo máximo alcanzable es el mínimo común múltiplo de los periodos de las
secuencias de entrada a la función combinadora. Si la función no tiene memoria, en este
caso, el máximo esperable es el mínimo común múltiplo de los periodos de entrada.
Para conseguir este requisito, se suele imponer que los grados de los polinomios sean
primos entre sí. La complejidad lineal puede llegar a valer igual que el periodo.
Para conseguir una buena estadística en la salida, se suele imponer que las secuencias
de entrada posean propiedades aleatorias, y a la vez, se impone que la función
combinadora no distorsione estas propiedades.

4.2.1. Generador de Geffe


Este generador usa tres L.F.S.R. combinados no-linealmente mediante un
multiplexor. Dos de los L.F.S.R. son las entradas al MUX, y el tercer L.F.S.R.
selecciona cuál de las entradas se toma como salida. Si a0, a1, y asel son las salidas de los
dos L.F.S.R. de entrada y del seleccionador, respectivamente, la salida se puede
describir como:
b = a sel ⋅ a0 + a sel ⋅ a1

33

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

a0
L.F.S.R. - 0 0

MUX
a1
L.F.S.R. - 1 1

asel
L.F.S.R. - Selector

Figura 3.9: Generador de Geffe

Si los L.F.S.R. tienen longitudes n0, n1 y nsel, respectivamente, entonces la


complejidad lineal del generador es:
nsel ⋅ n0 + ( n sel + 1 ) ⋅ n1
El periodo del generador es el mínimo común múltiplo de los periodos de los tres
generadores. Suponiendo que los grados de los tres polinomios primitivos de
realimentación son primos entre sí, el periodo obtenido es el producto de los periodos de
los tres L.F.S.R.
Aunque a primera vista podría parecer un buen generador, no es criptográficamente
seguro y resulta vulnerable a los ataques por correlación [ZENG89]. La salida del
generador es igual a la del L.F.S.R.-0 en el 75% de los bits. Por eso, si las conexiones
se conocen, se puede adivinar el estado inicial del L.F.S.R.-2 y generar la salida de este
registro. Después, se pueden contar el número de veces que la salida del L.F.S.R.
coincide con la del generador. Si se adivinó mal, las dos secuencias serán iguales
aproximadamente el 50% de las veces. Cuando se acierta, las dos secuencias serán
iguales en sus ¾ partes, así se puede saber cuándo se tuvo éxito.
Con estas correlaciones, el generador del clave cifrante se puede romper fácilmente.
Por ejemplo, si los polinomios primitivos sólo tienen tres términos cada uno, y la
longitud del mayor L.F.S.R. es n, sólo se necesitan 37!n bits de la secuencia de salida
para reconstruir los estados internos de los tres L.F.S.R. [ZENG91].

4.2.2. Generador de Geffe Generalizado


Este generador presenta una estructura muy similar al anterior. Consta de un LFSR
selector, pero la selección no se hace basándose en un único bit. Esto supone que no
sólo haya dos posibilidades, y en consecuencia, se dispone de n registros como entrada
del multiplexor, siendo n una potencia de dos. La figura 3.10 muestra dicho esquema.

34

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

a0
L.F.S.R. - 0 0

MUX
an-1
L.F.S.R. - n-1 n-1

asel
L.F.S.R. - Selector

Figura 3.10: Generador de Geffe generalizado

El funcionamiento es como sigue. El L.F.S.R. selector recibe los impulsos de reloj


log 2 ( n ) veces más rápido que el resto de los L.F.S.R.. Se toman éstos log 2 ( n ) bits
generados, y el número en binario obtenido decide cuál de los n L.F.S.R. se toma como
salida. Aunque más complicado que el generador de Geffe simple, es posible el mismo
tipo de ataque. No es recomendable su uso.

4.2.3. Generador de Jennings


También utiliza un multiplexor para combinar dos L.F.S.R [JEN 83,84]. El L.F.S.R.
que controla el multiplexor selecciona un bit del vector de estado del otro L.F.S.R. para
cada golpe de reloj. Existe una función que permuta los bits del L.F.S.R. con la entrada
al multiplexor.

P
L 0
E
F R
S M MUX
R U
n-1
T

L.F.S.R. -

Figura 3.11: Generador de Jennings

La clave es el estado inicial de los dos L.F.S.R. y la función de permutación.

35

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Si los polinomios de realimentación son primitivos y las longitudes de los L.F.S.R.


primas entre sí ( mcd ( L , Lsel ) = 1), entonces el periodo es el producto de los periodos
P = ( 2 L − 1 ) ⋅ ( 2 Lsel − 1 ) .
Aunque este generador posee buenas propiedades estadísticas, se rompe mediante el
ataque meet-in-the-middle consistency attack y el ataque por consistencia lineal (L.C.T.)
[ZENG89]. Su uso tampoco es recomendable.

4.2.4. Generador umbral


Este generador, propuesto en [BRUE84], intenta solucionar los problemas de
seguridad de los generadores anteriores usando un número variable de L.F.S.R. El
concepto es que si se usan muchos L.F.S.R., el cifrador es difícil de romper.
En este esquema, se toma la salida de un número impar de L.F.S.R. (cuanto más
grande mejor). El periodo total se puede maximizar imponiendo que los periodos de
cada uno sean primos entre sí. La salida se toma realizando un voto por mayoría de los
bits. Si más de la mitad de los bits son 1, entonces la salida del generador es 1. Si, por el
contrario, la mitad de los bits son 0, entonces la salida del generador es 0.

L.F.S.R. - 0
Voto por
mayoría
L.F.S.R. - n-1

Figura 3.12: Generador umbral

Por ejemplo, con tres L.F.S.R., la salida del generador se puede escribir como:
b = a 0 ⋅ a 1 + a0 ⋅ a 2 + a 1 ⋅ a 2
Es muy similar al generador de Geffe, excepto que posee una complejidad lineal
mayor:
Λ = L0 ⋅ L1 + L0 ⋅ L2 + L1 ⋅ L2
Cada bit de salida ofrece alguna información acerca del estado de los L.F.S.R. (0.189
bits para ser exactos), y se rompe mediante un ataque por correlación. Para mayor
número de L.F.S.R., el criptoanálisis se complica, pero el método es el mismo y siempre
es posible romper el generador. No es recomendable su uso.

4.2.5. Sumador real de Rueppel


Presentado en [RUEP85], constituye la primera propuesta de función de combinación
con memoria para evitar el compromiso entre la inmunidad a la correlación y la
complejidad lineal.

36

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Este generador suma la salida de varios L.F.S.R. (n en general) con acarreo. La


operación es altamente no-lineal. El mecanismo de funcionamiento es como sigue. Hay
n subgeneradores L.F.S.R. y un registro de acarreo (C). En cada golpe de reloj, todos
los L.F.S.R. se desplazan una posición, y sus salidas se suman con el registro de acarreo
para formar el nuevo valor de acarreo.
n −1
S ( i ) = C( i ) + ∑ a k ( i )
k =0

y( i ) = S ( i ) mod 2
 S( i ) 
C( i ) = 
 2 

L.F.S.R. - 0
SUMADOR
L.F.S.R. - 1 REAL

L.F.S.R. - n-1 Acarreo

Figura 3.13: Generador sumador real de Rueppel

Para n subgeneradores, la memoria necesaria para el acarreo es de log 2 ( n ) + 1 bits.


Si los polinomios de realimentación son primitivos, el sistema resultante presenta muy
buenas propiedades, entre las que destaca el periodo, que es máximo:

 n 

 Li  − 1
 i =1 
Pmax = 2

La complejidad lineal es grande, y aproximadamente igual al periodo. Los ceros y


los unos están equidistribuidos y se consigue una inmunidad de orden n-1, la máxima
posible.
El generador tuvo gran aceptación, pues por primera vez durante mucho tiempo se
garantizaban todas las propiedades criptográficas, incluida la inmunidad a la
correlación. Durante los años 80, se consideró muy robusto, aunque finalmente se pudo
criptoanalizar mediante el ataque por correlación [MEIE92]. Posteriormente, se
demostró que este es un ejemplo de generador F.C.S.R. (feedback with carry shift
register), y puede ser criptoanalizado.

37

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

4.2.6. Generador de Tatebayashi-Rueppel


Una variación muy conocida del esquema del sumador real de Rueppel, con
aplicación directa en comunicaciones móviles, es el generador propuesto por
Tatebayashi [TATE89]. Se incluye un registro de control (de longitud n) antes de la
combinación con memoria donde cada bit del registro se suma con los bits de salida de
los L.F.S.R.. Se demuestra que las propiedades citadas antes se mantienen para las 2 n
palabras posibles que puede tener dicho registro de control, por lo que el registro de
control se suele utilizar para autentificar al usuario.

5. Generadores controlados por reloj


A menudo, las condiciones que deben satisfacer para presentar buenas propiedades
criptográficas son muy restrictivas, y limitan la velocidad de cifrado, de modo que no
son muy recomendables en según qué aplicaciones.

5.1. Forward
Los esquemas con un mecanismo de control de reloj hacia delante son aquellos en los
que la salida de un generador controla el reloj de otro. La idea básica está ilustrada en la
figura 3.14.

SUBGENERADOR SUBGENERADOR

Figura 3.14: Mecanismo general de un control de reloj forward

Normalmente, existe un generador máster que gobierna el reloj del resto de los
generadores, y la salida se calcula como la suma de los bits de salida de éstos.

5.1.1. Stop and go


Este generador, propuesto por Beth y Piper [BETH84], es uno de los primeros
generadores en los que la salida de los L.F.S.R. controla de alguna manera el reloj.
Consta de tres subgeneradores. La salida de uno de ellos, L.F.S.R. selector, controla
el reloj de uno de los otros dos (al que denominamos L.F.S.R.-0). El L.F.S.R. restante
(L.F.S.R.-1) recibe el reloj siempre. En concreto, L.F.S.R.-0 cambia su estado si y sólo
si la salida del L.F.S.R. selector es uno.

L.F.S.R. Selector
L.F.S.R. - 0

L.F.S.R. - 1

Figura 3.15: Generador Stop-and-go

38

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Sus propiedades estadísticas y criptográficas no son muy buenas. Cada vez que el bit
de la secuencia cifradora cambia de valor, se sabe que el registro de control ha emitido
un 1. Además, existe una alta interdependencia entre los símbolos. Una mejora posible
consiste en sumar un 1 a la secuencia de control.
No se conocen resultados genéricos respecto a su complejidad lineal. Sin embargo, se
puede romper mediante un ataque por correlación [ZENG91].

5.1.2. Alternating stop and go


Este generador, propuesto por Günther [GUNT88], es una modificación mejorada del
esquema anterior. También usa tres L.F.S.R. de longitudes diferentes. Como antes, hay
un L.F.S.R. selector, pero ahora controla el reloj de los otros dos L.F.S.R. El L.F.S.R.-0
ve activado su reloj cuando la salida del selector es 0, y contrariamente, el L.F.S.R.-1 ve
activado su reloj cuando la salida del selector es 1.

L.F.S.R. - 0
L.F.S.R. Selector

L.F.S.R. - 1

Figura 3.16: Generador Alternating Stop-and-go

En el artículo original de Günther, la secuencia de control era de Bruijn, ya que las


demostraciones eran más sencillas, pero, posteriormente se ha optado por utilizar tres
L.F.S.R. con polinomios primitivos como subgeneradores.
Cuando la secuencia es de Bruijn, se han demostrado algunas características:
• El periodo máximo es el mínimo común múltiplo de los tres periodos.
P = mcm( 2 k , P0 , P1 ) =
= 2 k ⋅ P0 ⋅ P1 (sólo si son primos entre sí)
• La complejidad lineal está acotada en el intervalo:

2 k −1 < Λ ≤ 2 k ⋅ ( L0 + L1 )
• Las frecuencias de aparición de las subsecuencias es muy próxima a la ideal. Así,
para longitudes m (con m ≤ min( L0 , L1 ) ) se obtiene una frecuencia de aparición de
 1   1 
2 −m con un error del orden de O m−1  + O n −1  .
2  2 

El generador tiene un periodo largo y una gran complejidad lineal. Los propios
autores encontraron un ataque por el método de "divide y vencerás" sobre el L.F.S.R.
selector, pero no hace substancialmente más débil al generador.
39

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

5.1.3. Bilateral stop and go


Este generador, a salvo de los anteriores, no tiene ningún subgenerador de control.
Usa dos L.F.S.R., ambos de longitud n, y es la salida de cada uno la que marca el reloj
del otro.
La motivación de estos esquemas está basado en la observación de que si una
secuencia binaria tiene un periodo primo P, su complejidad lineal estará acotada
inferiormente por el ordinal de 2 módulo P:
C . L. ≥ Ord T ( 2 )
Por esta razón, es deseable un periodo primo, ya que es posible realizar
transformaciones sin influir en la cota establecida en la complejidad lineal. Sin
embargo, P = 2 n − 1 (primos de Mersenne), tendremos C . L.≥ n .
Se han desarrollado algunos esquemas con L.F.S.R. que obtienen periodos de la
forma q ⋅ 2 n − 1 . Uno de los esquemas más conocidos es el que aquí se describe (q=5).

s(t+n-1) s(t+n-2) ... s(t)

L.F.S.R.-0

L.F.S.R.-1

s(t+n-1) s(t+n-2) ... s(t)

Figura 3.17: Generador Bilateral Stop-and-go

El funcionamiento es el siguiente:
1 Si los dos últimos bits del L.F.S.R.-0 fueron (0,1), entonces se bloquea el reloj del
L.F.S.R.-1.
2 Si los dos últimos bits del L.F.S.R.-1 fueron (0,1) y los del L.F.S.R.-0 no fueron
(0,1), entonces se bloquea el reloj del L.F.S.R.-0.
La complejidad lineal de este sistema es bastante parecida al periodo. De acuerdo
con [ZENG89], no se ha observado una redundancia de la clave en este sistema.

5.2. Feedback
Los esquemas con un mecanismo de control de reloj hacia atrás son aquellos en los
que la salida de un generador gobierna su propio reloj.

40

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

SUBGENERADOR

Figura 3.18: Modelo general del control por reloj feedback

5.2.1. A5
Es el cifrador en flujo utilizado en el sistema estándar europeo de comunicaciones
móviles: G.S.M.. Su ámbito de actuación está en el enlace entre el teléfono móvil y la
estación base, en la transmisión radioeléctrica. El resto de los enlaces no van cifrados.
El esquema aquí presentado es el descrito en [SCH 96]. Se trata de tres L.F.S.R. de
longitudes 19, 22 y 23, con escasas conexiones (tan sólo 4 en cada uno). La salida es la
XOR de los tres L.F.S.R.. El A5 utiliza un control de reloj variable. De cada registro se
toma el bit central y se realiza una votación por mayoría. Sólo cambian de estado los
L.F.S.R. cuyo bit coincida con la votación.

Figura 3.19: Esquema interno del A5

En el mecanismo de establecimiento de la conexión y de la clave de sesión utilizado


en el algoritmo A5 actúan otros dos, denominados A3 y A8, todavía secretos. El
algoritmo A3 se encarga de llevar a cabo la autenticación de la identidad. La estación
base envía al móvil un número aleatorio RAND, que se toma junto con la clave privada
del usuario y se introduce en el algoritmo A3, originando el número SRES, que permite
autentificar al usuario. A partir de ese momento, con el número aleatorio RAND y la
clave privada Ki, el algoritmo A8 genera la clave de sesión KC utilizada por el A5.
41

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Durante la transmisión, la clave de sesión KC no se varía, pero el algoritmo A5 tiene


en cuenta además el número de la trama donde va introducido el paquete de voz, por lo
que la salida cambia dependiendo de la trama concreta en la que nos hallemos.

Ki RAND

A3 A8

SRES KC

COUNT A5
Secuencia
cifrante

Figura 3.20: Cifrado y autentificación en G.S.M.

5.2.2. Autodecimado de Rueppel


Los generadores autodecimados son los que controlan su propio reloj. En el
generador autodecimado propuesto por Rueppel [RUEP87] cuando la salida del L.F.S.R.
es 0, el estado evoluciona m pasos. Cuando la salida es un 1, el estado avanza n pasos.

0: m pasos
1: n pasos L.F.S.R.

Figura 3.21: Generador autodecimado de Rueppel

El objetivo es conseguir unas secuencias con complejidad lineal y periodos iguales (o


parecidos) y comparables al límite 2 L .
Para ilustrar el proceso de autodecimado se tomará el siguiente ejemplo. Se considera
un L.F.S.R. de periodo máximo, utilizando el polinomio primitivo x 5 + x 3 + 1 . La
secuencia resultante sin el autodecimado es una m-secuencia de periodo 31:

1000010101110110001111100110100

42

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Tomando m=1, n=2, el periodo se reduce a 20, y de toda la secuencia se eliminan los
números que están subrayados.

1000010101110110001111100110100
por lo que queda la secuencia:
10001111100011101010
con un periodo y una complejidad lineal iguales de 20.
Aparece un problema: la reducción del periodo. En general, para valores mayores en
m y n, la reducción es más acuciada. Por ejemplo, para m=3, n=2, el periodo se reduce
a 13 (00111110111000) y aparece un preludio, el primer bit en el primer periodo no es
0, sino 1.
Se ha demostrado que con un L.F.S.R. con L celdas, generador de m-secuencias, el
periodo tiene una cota superior de:
3
P ≤ ⋅ 2L − 1
4
( )
Tal como se describe en [ZENG91] el generador puede criptoanalizarse.

5.2.3. Autodecimado de Chambers y Gollmann


La idea básica es la misma que en el generador anterior, pero el mecanismo es algo
más complicado. Se toman las últimas k conexiones del L.F.S.R. y se aplica una NOR
[CHA88]. Si la salida de la NOR es un 0 (lo cual ocurre la mayoría de las veces), el
reloj sólo golpea una vez. Cuando la salida es un 1, el estado avanza 2 pasos. El
modelo es muy fácil de generalizar para que cuando la salida sea un 0, avance m pasos y
en caso contrario, avance n pasos.

0: m pasos
1: n pasos L.F.S.R.

Figura 3.22: Generador autodecimado de Chambers y Gollmann

Los valores de L y k no pueden ser cualesquiera. Sólo algunas combinaciones son


útiles para obtener secuencias con buenas características (alto periodo y complejidad).
Para ello, es necesario que se satisfaga la relación:

2
P = ( 2 L − 1) − ⋅ ( 2 L− k − 1 ) con L − z par
3

43

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Los valores de L y k no pueden ser cualesquiera. Sólo algunas combinaciones son


útiles para obtener secuencias con buenas características (alto periodo y complejidad).
Para ello, es necesario que se satisfaga la relación:

2
P χ ( 2 L → 1) → = ( 2 L →k → 1 ) con L → z par
3

siendo L la longitud del L.F.S.R., k el número de entradas en la NOR, y P el periodo. El


periodo debe satisfacer que para todo j<P, 2 j → 1 no sea múltiplo de P.
El diseño está orientado para ser un elemento básico de un sistema en cascada.
Al igual que el de Rueppel, este generador no es seguro. Se han propuesto algunas
modificaciones a estos esquemas para corregir los problemas [SIMM92].

5.3. Multiclocking
Estos sistemas de cifrado engloban a cualquier tipo de combinación de generadores en
la que los relojes de cada uno van a ritmos de reloj distintos.

5.3.1. Multiclocking de Massey y Rueppel


Este generador, también llamado Inner Product Generator, desarrollado por Massey
y Rueppel [MASS84], utiliza dos L.F.S.R. a velocidades diferentes. El L.F.S.R.-1 va d
veces más rápido que el L.F.S.R.-0. Los bits individuales de los dos L.F.S.R. se
multiplican entre sí y se suman para producir el bit de la salida.

φ1 L.F.S.R. - 0

φ2 L.F.S.R. - 1

Figura 3.23: Generador multiclocking de Massey y Rueppel

Aunque su complejidad lineal es elevada y goza de excelentes propiedades


estadísticas, falla ante un ataque por consistencia lineal (LCT) [ZENG91]. Si L0 es la
longitud del L.F.S.R.-0, L1 es la longitud del L.F.S.R.-1, y d es el múltiplo de velocidad
entre los dos, entonces el estado interno del generador se puede calcular a partir de una
secuencia de longitud:
n0 − n1 − log 2 ( d )

44

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

6.1. Cascada de Gollmann


La cascada de Gollmann (descrita en [GOLL89]) es una versión reforzada el
generador stop-and-go. Consta de una serie de L.F.S.R. de manera que el reloj de cada
uno de ellos está controlado por el L.F.S.R. previo. Si la salida del primer L.F.S.R. es 1,
entonces el segundo L.F.S.R. cambia de estado. Si además, la salida de éste es 1, el
tercer L.F.S.R. cambia de estado, y así sucesivamente. La salida del último L.F.S.R. es
la salida del generador.

1
L.F.S.R.-0 • L.F.S.R.-1 • L.F.S.R.-1

Figura 3.24: Generador en cascada de Gollmann

Si todos los L.F.S.R. tienen el mismo tamaño, L, la complejidad lineal del sistema
global con k L.F.S.R. es de:
L ⋅ ( 2 L − 1) k −1
Conceptualmente estos generadores son muy simples y se pueden utilizar para
generar secuencias con periodos enormes, grandes complejidades lineales y buenas
propiedades estadísticas.
Son vulnerables frente al ataque llamado lock-in, desarrollado en el mismo artículo
que describe el generador. El método consiste en reconstruir la entrada el último registro
de la cascada, e ir rompiendo la cascada registro por registro. Es posible tomar algunas
precauciones para minimizar el ataque [GOLL89].
Según [SCHN96], se recomienda utilizar al menos 15 L.F.S.R., y se comenta que es
mejor utilizar muchos L.F.S.R. de pequeño tamaño que pocos L.F.S.R. de gran tamaño.

7. Generadores en bloque

7.1. RC4
El RC4 es un cifrador en flujo con una clave de longitud variable desarrollado en
1987 por Ronald Rivest. Durante muchos años, la empresa R.S.A. Data Security ha
mantenido la patente de este esquema y los detalles del algoritmo sólo eran accesibles
después de firmar una cláusula de no-divulgación.
En septiembre de 1994, alguien introdujo el código fuente anónimamente en la lista
de correo electrónico Cypherpunks. El código se divulgó rápidamente a través del grupo
sci.crypt y, vía Internet, por todo el mundo. Algunos poseedores de la copias legales del
RC4 confirmaron la compatibilidad. RSA Data Security intentó mantener el control
argumentando que aún era un secreto comercial incluso aunque fuera público, pero sin
éxito.

45

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Su descripción es sencilla. El algoritmo trabaja en modo OFB. Tiene una S-box de


256 entradas: S0, S1, ... , S255. Dichas entradas son una permutación de los números del 0
al 255, en función de la clave (cuya longitud es variable). Tiene dos contadores, i y j,
inicializados a cero.
Para generar un byte aleatorio se opera de la siguiente forma:

i = ( i + 1 )mod 256
j = ( j + Si )mod 256
Intercambia Si y S j
t = ( Si + S j )mod 256
K = St
El byte resultante K se opera con el byte del mensaje mediante una XOR, para
producir el criptograma. En recepción, se efectúa la misma operación para recuperar el
mensaje en claro.
El algoritmo es rápido (cerca de 10 veces más rápido que D.E.S.)
La inicialización de la caja S es simple. Primero, se rellena linealmente: S 0=0, S1=1,
..., S255=255. A continuación se rellena otro array de 256 bytes con la clave,
repitiéndola, si es necesario, hasta completar totalmente el array: K 0, K1, ..., K255. El
proceso posterior es el siguiente:

j =0
Para i desde 0 hasta 255
j = ( j + Si + Ki )mod 256
Intercambia Si y S j

RSA Data Security asegura que el algoritmo es inmune al criptoanálisis


diferencial y lineal, no parece tener ciclos pequeños y es altamente no-lineal. El número
de estados posibles es enorme, de 256 2 ⋅ 256 ! ≈ 2 1700 . El contador i asegura que cada
elemento de la caja S cambia, y la variable j asegura que el cambio sea aleatorio.
El uso de este sistema de cifrado está ampliamente extendido, incluyendo Lotus
Notes, Apple Computer's AOCE, Oracle Secure SQL, parte de la especificación de la
Cellular Digital Packet Data, etc...

7.2. SEAL
Es un cifrador pensado para ser muy eficiente en software, con registros de 32 bits y
caché de unos pocos kilobytes. Diseñado en I.B.M. por Phil Rogaway y Don
Coppersmith.

46

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 3 Generadores

Una característica interesante de SEAL es que no es realmente un cifrador en flujo


tradicional, más bien es una familia de funciones pseudoaleatorias. Dada una clave de
160 bits (k), y un número de 32 bits (n), genera una salida de L bits (con L<64
kilobytes). Aparentemente, si la clave se elige aleatoriamente, la salida debería ser
computacionalmente indistinguible de una función aleatoria de L bits de n. La
particularidad de ser una familia de funciones ofrece nuevas aplicaciones donde los
cifradores en flujo convencionales no llegan, ya que para obtener el bit i-ésimo de la
secuencia generada, es necesario calcular todos los bits previos. En cambio, en una
familia de funciones es posible acceder a cualquier posición deseada de la secuencia
cifrante.
Internamente, hay tres tablas derivadas de la clave (llamadas R, S y T) que controlan
el algoritmo. En la etapa de inicialización, la clave k se mapea sobre estas tablas
mediante un procedimiento basado en SHA. Se usan cuatro registros de 32 bits (A, B, C,
y D) cuyos valores iniciales están determinados por n y las tablas R y T. Estos registros
se modifican después de muchas iteraciones, cada una conllevando 8 vueltas.
Finalmente, los registros A, B, C y D se suman a la clave cifradora, convenientemente
enmascarados y mezclados mediante sumas o XOR. La iteración se completa sumando
a A y C valores adicionales dependientes de n, n1, n2, n3, n4.
Las ideas importantes del diseño parecen ser:
1 Empleo gran caja-S derivada de la clave (tabla T).
2 Alternar operaciones aritméticas que no conmutan (suma y OR exclusiva).
3 Usar el estado interno mantenido por el cifrador, el cual no se manifiesta
directamente en la salida (los valores ni que modifican A y C al final de cada
iteración).
4 Variar la función de las 8 vueltas de acuerdo con el número de la vuelta, y variar la
función de iteración de acuerdo con el número de iteración.
Su problema, al igual que en RC4 es el tiempo necesario para la inicialización de las
tablas y la memoria necesaria para almacenar los valores. Es un algoritmo reciente, y
todavía no ha habido noticia de ninguna publicación que evalúe su seguridad.

47

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

Capítulo 4: EVALUACIÓN DE LA SEGURIDAD

1. Introducción
El propósito de cualquier generador pseudoaleatorio es obtener secuencias que se
comporten estadísticamente como si fueran aleatorias. Aunque se conocen algunos
criterios de diseño, ¿cómo se puede decidir cuándo una secuencia es suficientemente
aleatoria? ¿cómo se puede medir la impredecibilidad?.
Para detectar regularidades en las secuencias binarias, es necesario recurrir a estudios
probabilísticos que permiten evaluar cuantitativamente la aleatoriedad de una secuencia.
A estas técnicas se les suele llamar tests. Generalmente, cada uno de ellos analiza un
aspecto de seguridad concreto en las secuencias evaluadas.
Existen infinidad de tests posibles. Se analizarán los tests que han demostrado ser
más útiles, instructivos y sencillos para realizar un cálculo computacional rápido.
Si una secuencia pasa los tests T1, T2, ..., Tn, no se puede estar seguro de que, en
general, no fallará cuando esté sujeta a un test posterior Tn+1. Sin embargo, está claro
que cuantos más tests se superan, hay una mayor confianza en las buenas propiedades de
la secuencia.
En la práctica, se aplican varios tests de distintas clases, y si la secuencia los pasa
satisfactoriamente, se considera que tiene un comportamiento aleatorio.
Se distinguen 4 tipos de test:
• Tests estadísticos: no actúan directamente sobre la secuencia, sino que sirven de
apoyo al resto de tests.
• Tests empíricos: calculan estadísticas.
• Tests teóricos: se apoyan en métodos con un trasfondo matemático importante.
• Complejidades: en vez de calcular propiedades de la secuencia, intentan predecir su
comportamiento mediante estructuras de orden 1, 2, ...
49

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

El resultado de los tests es booleano: o se acepta, o se rechaza la secuencia; o pasa el


test, o no lo pasa.
Los parámetros más importantes de los tests estadísticos son la longitud N de la
secuencia analizada y la tasa de rechazo, que es la probabilidad de que una fuente
binaria simétrica fuese rechazada. Existe un compromiso entre la probabilidad de
detección y la de falsa alarma.
El objetivo de los tests es comprobar si se cumplen las especificaciones de seguridad,
y hasta qué punto.
Todos los tests aquí descritos están desarrollados en el software SSP adjunto.

2. Cálculo del periodo de una secuencia


Los cifradores en flujo son máquinas de estados finitos, y por lo tanto, las secuencias
que generen son, en última instancia, periódicas.
Se dice que una secuencia (s1, s2, ...) es periódica, de periodo P, cuando se cumple
que si=si+P para todo i. La secuencia queda perfectamente definida son un sólo periodo:
(s1, s2, ..., sP-1)∞. Es necesario saber identificar y cuantificar este periodo.
El algoritmo utilizado para calcular el periodo consiste en desplazar la secuencia n
posiciones y comparar la secuencia original y la resultante del desplazamiento. Primero,
la secuencia se desplaza una posición, después dos, ... y así sucesivamente hasta que
todos los bits en la misma posición coincidan.

Secuencia original: 11011011


Secuencia desplazada una posición: 11011011

Secuencia original: 11011011


Secuencia desplazada dos posiciones: 11011011

Secuencia original: 11011011


Secuencia desplazada tres posiciones: 11011011
Cuando todos los bits coinciden, no hace falta calcular más, el periodo es el valor del
desplazamiento que se ha llevado a cabo.
Este procedimiento es exacto ( a diferencia de otros existentes basados en la
autocorrelación). Solamente cuando el tramo de la secuencia de la que se dispone no
contiene al menos dos periodos, el resultado del periodo será mayor que la mitad de los
bits de la secuencia, y la decisión de si el valor obtenido es realmente el periodo o no
queda a disposición del usuario, el algoritmo devuelve la distancia a partir de la cual los
bits se repiten.

3. Análisis estadístico de distribuciones


La mayoría de tests que se expondrán posteriormente realizan cálculos estadísticos
sobre la secuencia, devolviendo distribuciones sobre un suceso, como por ejemplo el
número de apariciones de parejas de bits, etc... A partir de esta distribución, y
conociendo el valor ideal que debería tener, existen algunos procedimientos
matemáticos que analizan cuánto se aleja una distribución de su valor ideal.

50

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

Estos procedimientos suelen calcular estadísticos de los que se conoce su distribución


para una secuencia aleatoria. Sobre los valores obtenidos, se realiza un contraste de
hipótesis descartando aquellas secuencias cuyos valores obtenidos se alejan
significativamente de la media.
Existen multitud de estadísticos diferentes, de los cuales se comentarán la prueba de
la χ2 (Ji-cuadrado) y la de KS (Kolmogorov-Smirnov).

3.1. Prueba de la Ji-cuadrado (χ2)


Es el test estadístico mejor conocido, y también el más utilizado.
Antes de describirlo matemáticamente, describiremos el concepto mediante un
ejemplo sencillo. Supongamos que la experiencia consiste en el lanzamiento de una
moneda tres veces y se cuenta el número de caras obtenidas (obsérvese que el
experimento de lanzar una moneda es equivalente al de obtener un bit de manera
aleatoria). Suponiendo que la moneda no está trucada,
= 3) 1
P( i caras ) → φ  3
−i  2
Se supone que las tiradas son independientes. Realizando el experimento muchas
veces (por ejemplo 128) y anotando los valores obtenidos, se puede obtener una tabla de
resultados como la siguiente:

Resultado Valores obtenidos Valores ideales


0 caras 14 16
1 cara 40 48
2 caras 54 48
3 caras 20 16
El número observado acostumbra a ser distinto del esperado (de hecho, si las tiradas
son realmente aleatorias, difícilmente se obtendrán las frecuencias correctas exactas).
Si el experimento es realmente aleatorio (la moneda no está trucada), cualquiera de
las 128 posibles secuencias de valores de 128 tiradas es igualmente probable. Así,
cualquier secuencia tiene la misma probabilidad que aquella en la que todo son ceros
(no sale ninguna cara). Pero, si en las 128 tiradas, se observase que todos los
lanzamientos son cruces, tendríamos argumentos justificados para sospechar que la
moneda está trucada.
¿Cómo se puede determinar si la moneda está trucada o no? La respuesta es que no
se puede dar una decisión definitiva, pero se puede dar una respuesta probabilística. Se
puede decir cuán probable o improbable son algunos sucesos.

La manera natural de proceder en el caso anterior es hallar la diferencia cuadrática


media entre los valores obtenidos y(i), y los esperados.

k 1 2
D→
a y(i)  n  p(i)f
i→0
n  p(i )

51

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

siendo k el número de resultados o categorías diferentes (4 en nuestro ejemplo) y n el


número de experiencias realizadas.
Es importante señalar que las observaciones han de ser independientes. A este
estadístico se le llama Ji-cuadrado, porque para un número de observaciones elevado,
tiende a una distribución en Ji-cuadrado, con k-1 grados de libertad. Para que esta
aproximación sea buena, se suele imponer que el número esperado en cualquier
categoría sobrepase 5, o 10. O sea, el número de observaciones n debe ser tal que n!p(i)
sea mayor o igual que 5.
Normalmente, se establece un umbral al 1 %, o al 5 %, y todos los experimentos cuyo
valor de la Ji-cuadrado sobrepasa el marcado por este umbral se rechazan. Para esto
existen tablas de valores de la distribución de la Ji-cuadrado con diferentes porcentajes y
grados de libertad.
Debe tenerse en cuenta que no importan n ni p(i) para la evaluación del test, el único
parámetro que interviene es el número de grados de libertad.
Interesa un número de observaciones elevado, n grande. Mientras mayor sea n, mayor
potencia del test. Pero, por el contrario, suaviza el comportamiento no aleatorio local
(puede ser que tramos largos con una fuerte desviación estén seguidos de otros con la
desviación contraria, se anule el efecto y no se detecte en el cómputo final). Por eso es
recomendable hacer el test para diferentes valores de n.

3.2. Prueba de Kolmogorov-Smirnov (KS)


La prueba de la Ji-cuadrado se aplica cuando el resultado del experimento está
dividido en k categorías. Pero a veces, el resultado puede tomar infinitos valores. En
estos casos de utiliza el test de KS.
Se parte de la función de distribución ideal:

FX ( x ) = P ( X ≤ x )

Dadas n observaciones independientes, se forma la función de distribución empírica:

1
Fn ( x ) = ⋅ (nº de X ( i ) ≤ x)
n

El estadístico KS mide la diferencia entre las dos funciones. De hecho mide la


variación máxima que puede haber:

Kn = n max Fn ( x ) − F ( x )
−∞< x <+∞

Para hacer el cálculo más sencillo, el estadístico se divide en otros dos:

K n+ = n max (Fn ( x ) − F ( x ))
−∞< x <+∞

K n− = n max (F ( x ) − Fn ( x ))
−∞< x <+∞

52

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

K n+ mide la desviación máxima cuando Fn ( x ) es mayor que F ( x ) .


K n− mide la desviación máxima cuando Fn ( x ) es menor que F ( x ) .
El término n actúa como factor de escala, de manera que la desviación estándar es
independiente de n. De igual manera que en la Ji-cuadrado, existen tablas de percentiles
para poder determinar si los resultados son significativamente grandes o pequeños.
Para facilitar el cómputo de K n+ y K n− , se aprovecha la particularidad de que las
funciones distribución son crecientes y que Fn ( x ) crece a saltos. El procedimiento es
como sigue:
1. Obtener las observaciones X ( i ) .
2. Reordenar X ( i ) de menor a mayor: X ( 1) ≤ X ( 2 ) ≤ ... ≤ X ( n )
3. Calcular los estadísticos:
j 
Kn+ = n max  − F ( X j )
1 ≤ j ≤ n n 
 j − 1
Kn− = n max  F ( X j ) − 
1 ≤ j ≤ n n 
El valor de n, no necesita ser tan elevado como en la Ji-cuadrado, pero mientras
mayor sea n, con más detalle se pueden observar las diferencias entre dos distribuciones
distintas.
Existe un compromiso en el valor de n; interesaría que fuese tan grande como sea
posible, pero la ordenación de los valores impide que los valores de n sean tan elevados
como queramos. Un valor que se acostumbra a tomar es n = 1000. Cuando la KS se
aplica sobre los resultados de varias pruebas de Ji-cuadrado, no se necesita una n tan
elevada, y se acostumbra a tomar n = 10.

3.3. Diferencias entre la Ji-cuadrado y KS


La prueba de Kolmogorov-Smirnov se aplica para distribuciones continuas, con F(x)
sin saltos. En cambio, la Ji-cuadrado se aplica sobre distribuciones que lo único que
tienen son saltos (k categorías). Esta característica hace que ambos tests sean duales y
que la aplicación de cada uno llegue donde el otro test no llega.
Es posible modificar la Ji-cuadrado para aplicarla sobre distribuciones continuas,
realizando una división previa del dominio de F(x) en k partes, e ignorando las
variaciones internas de cada parte.

4. Tests empíricos
En la descripción de cada uno de los tests empíricos se muestra el algoritmo y las
bases matemáticas que lo sustentan. La notación seguida es la de indicar con las letras X
o Y las secuencias de bits (o de números enteros entre 0 y d-1).Un valor típico de d es
2 p , ya que los ordenadores trabajan con aritmética binaria.
Los tests están pensados para secuencias de valores continuos y discretos, pero
únicamente me centro en el caso particular de la aplicación a secuencias binarias.
En el software adjunto se han introducido los aquí expuestos:
• Equidistribuido

53

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

• Serie
• Gap
• Póker
• Postulados de Golomb

4.1. Test equidistribuido


La idea del test es comprobar que la función de densidad resultante es uniforme. Se
cuentan el número de ceros y de unos que aparecen en la secuencia. Entonces, sobre este
resultado, se aplica el test de la Ji-cuadrado con k = 2 categorías, y una probabilidad
teórica de ½ en cada categoría.
El problema de este test es que no comprueba la interdependencia entre los símbolos.

4.2. Test serie


Es un paso más allá al test equidistribuido. No sólo los bits han de ser
equiprobables, sino que también las parejas consecutivas de bits deben serlo.
Se cuenta el número de veces que (Y ( 2 j ), Y ( 2 j + 1) )= (q , r )∀j ≥ 0 siendo q y r
bits. O sea, se cuentan todos los pares (q,r) y se aplica la Ji-cuadrado sobre estas
k = 2 2 = 4 categorías; a saber, 00, 01, 10, 11.
En cada categoría, el par (q,r) tiene una probabilidad ¼ (distribución uniforme).
Como sabemos, para que el estimador tienda a una Ji-cuadrado, como mínimo deben
haber cinco sucesos en cada categoría, así hacen falta:
n ≥ 5 ⋅ 2 2 parejas = 40 bits
El método es fácilmente generalizable a tríos, cuartetos... El problema que aparece es
que a medida que crece el número de agrupaciones (t), se necesita una secuencia de
longitud más larga. Para agrupaciones largas, se toman otros tests, como pueden ser el
test de póker, de concepción más heurística.
El test equidistribuido se puede considerar como un caso particular del test serie. El
mecanismo general es:
1 Se toman t-plas no solapadas: (Y ( jt ),...,Y (( j + 1) ⋅ t − 1) )
2 Se calcula una estadística
3 Se aplica el test de la Ji-cuadrado con k = 2 t categorías, cada una con probabilidad
2−t .
4 El número de observaciones, m, debe ser m ≥ 5 ⋅ 2 t .
5 El número de bits, n, debe ser n ≥ 5 ⋅ t ⋅ 2 t .
Los bits hay que tomarlos separados, ya que la aplicación de la Ji-cuadrado supone
independencia entre las observaciones.

4.3. Gap test (Test de rachas)


Se basa en analizar la estadística de las longitudes de los tramos de la secuencia en
las que ningún elemento pertenece a un determinado conjunto (para simplificar, el
conjunto se toma como un intervalo).

54

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

Se contabiliza el número de rachas de 0 o 1 consecutivos que presenta la secuencia


aleatoria y se verifica que el valor obtenido se encuentre dentro de unos límites
establecidos. Para generalizar el proceso, los bits se agrupan de t en t formando
números entre 0 y d-1 ( d = 2 t ).
Se toma un intervalo [a, b]. Por ejemplo, para t = 3, [a = 1, b = 4], y dada la
secuencia siguiente, se encuentran los gaps indicados:

Y = ( 0, 7, 1, 7, 6, 0, 3, 4, 5, 0, 7, 2, ...)

2 3 0 3
Los elementos subrayados son los que pertenecen al intervalo. Entre estos elementos,
se hayan los gaps; así entre el 1 y el 3, hay un gap de longitud tres.

Si Y ( j − 1 ) ∈ [ a ,b ] (o j − 1 < 0 )
y si Y ( j ),Y( j + 1 ),...,Y( j + r − 1 ) ∉ [ a ,b ] ⇒ Hay un gap de longitud r.
Y ( j + r ) ∈ [ a ,b ]

El test cuenta los gaps de longitud 0,1,..., L-1 y los de longitud ≥ L , y almacena
los resultados en un vector. Sobre este vector, se aplica una Ji-cuadrado y se compara
con una distribución geométrica:

b−a +1
p = P(Y ( j ) ∈ [ a ,b ]) =
d
p( 0 ) = p
p( 1 ) = p ⋅ ( 1 − p )
p( 2 ) = p ⋅ ( 1 − p )2
...
p( t − 1 ) = p ⋅ ( 1 − p )t −1
p( t ) = ( 1 − p )t

4.4. Test de póker


La idea está basada en el juego de naipes que le da nombre. La motivación para su
elaboración se debió a que calcular el test serie con agrupaciones de 4 o 5 bits resulta
costoso. En consecuencia, se pensó en usar otro método no tan riguroso en las
dependencias, con un número pequeño de categorías que mirara algunas propiedades de
hasta longitud 5, y sobre todo, que fuera rápido.
Existen dos modalidades: el método clásico y el simplificado.

4.4.1. Modalidad clásica


Se toman n grupos de 5 enteros sucesivos de la secuencia (para obtener números
enteros a partir de la secuencia, se puede hacer lo mismo que lo que se ha hecho antes,
agrupar los bits de t en t, formando palabras de d = 2t valores diferentes). A
continuación, la secuencia de números se trocea de 5 en 5:

55

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

(Y ( 5 j ),Y( 5 j + 1 ),Y( 5 j + 2 ),Y( 5 j + 3 ),Y( 5 j + 4 ) ) j ≥0


Se consideran 7 posibilidades diferentes (categorías):
• Todos diferentes abcde
• Una pareja aabcd
• Dos parejas aabbc
• Trío aaabc
• Full aaabb
• Póker aaaab
• Repóker aaaaa
El orden de los símbolos no se tiene en cuenta.
Sobre los resultados, se aplica una Ji-cuadrado, indicándose a continuación la
probabilidad de cada categoría:

d ⋅ ( d − 1)⋅ ( d − 2 ) ⋅( d − 3 )⋅ ( d − 4 )
Pr( todos diferentes abcde ) =
d5
d ⋅ ( d − 1 ) ⋅ ( d − 2 ) ⋅ ( d − 3 )  5
Pr( una pareja aabcd ) = ⋅ 
d5  2
d ⋅ ( d − 1 ) ⋅ ( d − 2 )  5  3 1
Pr( dos parejas aabbc ) = ⋅  ⋅  ⋅
d5  2  2 2
d ⋅ ( d − 1 ) ⋅ ( d − 2 )  5
Pr( trio aaabc ) = ⋅ 
d5  3
d ⋅ ( d − 1 )  5
Pr( full aaabb ) = ⋅ 
d5  3
d ⋅ ( d − 1 )  5
Pr( po ker aaaab ) = ⋅ 
d5  1
d
Pr( repo ker aaaaa ) = 5
d

Para la elaboración de estas probabilidades, se supone que d > 4 (es decir, t > 2),
en caso contrario, las probabilidades ideales que deben tenerse en cuenta varían
ligeramente.

4.4.2. Modalidad simplificada


Se reducen el número de posibilidades para que el cálculo de las probabilidades sea
más sencillo y rápido. Además, el concepto permite agrupaciones de números diferentes
a 5. Esta reducción hace que el cálculo sea más sistemático, y las prestaciones no varían
mucho del método clásico.
El criterio consiste en contar el número de valores distintos en el grupo de cinco
símbolos. De esta manera aparecen cinco categorías:

56

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

• Cinco diferentes Todos diferentes


• Cuatro diferentes Una pareja
• Tres diferentes Dos parejas o trio
• Dos diferentes Full o póker
• Cinco iguales Repóker

Aquí se vuelve a aplicar una Ji-cuadrado. La probabilidad de cada categoría es:

⋅ d − r + 1 ) 5 
d ⋅ ( d − 1 )⋅...(
Pr( r diferentes valores ) = 5
⋅ 
d r 

k 
donde   son los números de Stirling de 2ª clase, y su significado es el número de
r 
maneras que se puede particionar un conjunto de k elementos en r partes.

5  5  5  5  5
 =1   = 15   = 25   = 10  =1
1  2  3  4  5
Es necesario, igual que antes, que d > 4, ya que si no, hay algunos casos que no son
posibles. Los bits se agrupan de t en t, formando símbolos para pasar el test de póker.
Para t ≥ 3 no hay ningún problema, pero para t = 1, o t = 2, las probabilidades teóricas
cambian. Esto se ha tenido en cuenta en la aplicación desarrollada.

4.5. Postulados de Golomb


Estos tres postulados deben su nombre a Solomon Golomb [GOLO67], quien
descubrió que todas las m-secuencias generadas por los L.F.S.R. cumplen siempre unas
regularidades muy relacionadas con el concepto de aleatoriedad. Así, los postulados
surgen como consecuencia de estas propiedades.
Son tres propiedades que expresan de forma sencilla algunas características de
aleatoriedad de las secuencias. Las secuencias que cumplen los postulados reciben el
nombre de PN-aleatorias. Los postulados sólo comprueban la aleatoriedad, pero no la
impredecibilidad de las secuencias.
Para describir los postulados, hace falta explicar que los valores binarios para
Golomb toman los valores +1 y -1, en vez de 0 y 1, respectivamente, para poder realizar
algunas operaciones de sumas y multiplicaciones que en aritmética módulo 2 carecerían
de sentido. No se van a detallar todas las características de los tres postulados,
simplemente se enuncia cada uno de ellos.

4.5.1. Primer postulado


En un periodo, la diferencia entre el número de unos y de ceros no debe ser mayor
que 1.
P

∑a n ≤1
n =1

57

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

4.5.2. Segundo postulado


En un periodo, la mitad de las carreras (tiras consecutivas de un mismo bit) son de
longitud 1, la cuarta parte son de longitud 2, la octava parte de longitud 3, etc... Más
aún, para cada longitud hay tantas carreras de ceros como de unos, y por tanto, el
número total de carreras de ceros y de ceros se iguala.

4.5.3. Tercer postulado


La función de autocorrelación normalizada es bivaluada.

1 si τ = 0
1 P 
C( τ ) = ⋅ ∑ a n a n + τ =  1
P n =1 − p si τ ≠ 0

El parámetro 1/p se utiliza para normalizar la correlación.

Los tres postulados son independientes, y cada uno de ellos analiza un aspecto
diferente de la secuencia.

5. Tests teóricos

5.1. Test espectral


Este es uno de los tests más completos de todos los conocidos, no sólo porque todos
los buenos generadores aleatorios lo pasan, sino porque muchos generadores que se
conocen que son defectuosos, entre ellos los congruenciales, no lo pasan. Trabaja con
todo el periodo de la secuencia, por lo que sus resultados se refieren a la totalidad de la
secuencia.
El test se puede encontrar ampliamente descrito en [KNUT67]. La motivación
matemática está basada en la transformada de Fourier discreta de una función definida
en un conjunto finito. La función que se transforma es la distribución estadística de los
símbolos de la secuencia. Si la secuencia es realmente aleatoria, esta distribución será
constante, y por lo tanto, la transformada presentará un único pico centrado en la
frecuencia cero y el resto de valores serán ceros. Cualquier desviación quedará reflejada
en el espectro en componentes frecuenciales diferentes de cero.
El procedimiento sigue los siguientes pasos:

1. Se calcula la distribución de las frecuencias relativas de aparición de los símbolos.

Dada la secuencia x(!), se calcula la función de las frecuencias relativas f(!) de la


siguiente manera:
1 n −1
f ( i ) = lim ∑ δ ( x( j ) − i )
n →∞ n
j =0

58

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

donde i recorre todos los valores que puede tomar X(j): desde 0 hasta d-1. Como
la secuencia es binaria, para formar números enteros, los bits se agrupan en t-plas
formando palabras de d = 2 t valores distintos.

Debido a que las secuencias con las que tratamos son periódicas (de periodo P),
es posible eliminar el límite sin alterar la igualdad:

1 P−1
f (i ) = ∑ δ ( x( j ) − i )
P j =0

2. Sobre la distribución de probabilidad, se aplica la transformada de Fourier discreta.

La fórmula de la transformada de Fourier discreta es:

d −1
F ( w ) = ∑ f ( i ) ⋅ e − w⋅i
i =0

Las frecuencias que aparecen, w, toman valores continuos desde 0 hasta 2π.
Para que la transformada pueda ser manejable por el ordenador, se utiliza la
D.F.T.. Como la transformación trabaja con todos los valores de la función f(!),
no hay aliasing respecto la transformada de Fourier.

d −1 2π
− ⋅ k ⋅i
F( k ) = ∑ f ( i ) ⋅ e d

i =0

3. Una vez obtenida la transformada de Fourier, el resultado se compara con la


transformada ideal resultante si la secuencia fuera realmente aleatoria:

1 k =0
F( k ) = 
0 otro caso

Como medida de discrepancia se ha optado por medir la distorsión cuadrática entre el


valor en el origen y el resto de valores. De hecho, sólo se utiliza el módulo de la
transformada, pues es el que aporta información acerca de la energía de cada
componente espectral.

∑ F( k )
2

k ≠0
distorsion = 2
F( 0 )

Es posible ampliar el concepto del test espectral a varias dimensiones, tomando una
distribución de probabilidades de varios símbolos consecutivos de la secuencia, como si
se tratara de una distribución conjunta de varias variables aleatorias.
1 P −1
f ( i1 ,i 2 ,...,in ) = ∑ δ ( x( j ) − i1 ) ⋅ δ ( x( j + 1 ) − i 2 )⋅...⋅δ ( x( j + n − 1 ) − in )
P j =0
59

© L o s a u t o r e s , 1 9 9 9 ; © E d i c i o n s U P C , 1 9 9 9 .
Capítulo 4 Evaluación de la seguridad

La transformada de Fourier resultante también es n-dimensional:

d −1 2π
− ⋅(k1i1 + k 2i2 + ...+ knin )
F ( k1 ,..., k n ) = ∑ f ( i1 ,i 2 ,...,i n ) ⋅ e d

i1 ,i2 ,...,in = 0

d −1  1 P −1  − 2dπ ⋅(k1i1 + ...+ knin )


= ∑  ∑ δ ( x ( j ) − i 1 )⋅ ⋅
... δ ( x ( j + n − 1 ) − i n  ⋅e
)
i1 ,i2 ,...,in = 0  P j = 0 
1 P −1 − 2dπ ⋅(k1 x ( j )+ ...+ kn x ( j + n −1 ) )
= ∑e
P j =0

El cálculo de la distorsión es análogo a como se ha descrito antes.


También se ha utilizado otra medida de discrepancia entre la transformada ideal y la
calculada, que es la relación lóbulo principal-secundario. Es el cociente entre el valor
en el cero y el pico más alto de toda la transformada, y se acostumbra a dar en dB.

5.2. Test de entropía por bit de Maurer


Este test propuesto por Maurer [MAUR91] está pensado para poder detectar
cualquier desviación estadística significativa de la secuencia cifradora que se aleje de
una fuente binaria simétrica.
A diferencia de la mayoría de tests, pretende detectar cualquier alteración en la
estadística, y no sólo un tipo de desviación no-aleatoria concreta. Para conseguirlo, el
objetivo del test consiste en medir la entropía por bit de la secuencia bajo prueba.
Un cifrador robusto, en la práctica, es aquel en el que no se conoce ningún método
criptoanalítico para romperlo más rápido que por prueba y error exhaustivos de todo el
espacio de claves. El tamaño del espacio de claves se escoge lo suficientemente grande
como para asegurar que un ataque por fuerza bruta requiere una capacidad
computacional inmensa. Si los valores posibles de la clave no tienen una probabilidad a
priori igual, entonces la estrategia óptima para la búsqueda exhaustiva de claves es
comenzar por la clave más probable y continuar probando con claves de probabilidad
decrecientes. De esta manera se minimiza el tiempo de búsqueda.
En teoría de la información se define:

 k

µ s ( n ,∂ ) = min k ∑ P( Z i )≥∂ 
 i =1 

Cuando ∂ vale ½, a esta función se la suele llamar el tamaño efectivo de la clave.

 1 
log 2  µ s ( n , )
 2 
Para n grandes, el valor de es prácticamente independiente de n.
n
 1 
Si la secuencia es realmente aleatoria, log 2  µ s ( n , ) = n − 1 . Además, para una fuente
 2 
ergódica estacionaria, se cumple que:
60

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

log 2 (µ s ( n ,∂ ) )
lim = HS
n →∞ n

donde HS es la entropía por bit de la secuencia, y también el factor en el que se reduce el


tamaño efectivo de la clave. Por esta razón, la entropía por bit representa una buena
medida de la calidad criptográfica de un generador.
El test consiste en calcular la entropía de la fuente generadora de bits y rechazar el
generador si el valor de la entropía está por debajo de un determinado umbral. Para
poder calcular la entropía de una fuente, Maurer demostró que los comportamientos no
deseados se pueden modelar adecuadamente mediante una fuente ergódica estacionaria
con memoria relativamente pequeña.
Para la ejecución del test, se deben definir tres parámetros:

• L memoria de la fuente
• Q número de pasos de inicialización del test
• K número de iteraciones del test

La longitud necesaria de la secuencia para poder realizar el test es de L ⋅ ( Q + K ) .


El algoritmo de cálculo sigue los siguientes pasos:
1 La secuencia s se segmenta en bloques de L bits no superpuestos.
2 Se toma el bloque n-ésimo: bn ( s ) = ( sn⋅ L , sn⋅ L +1 ,..., sn⋅ L +( L −1 ) ) con n = ( 0 , Q + K − 1 )
3 Se inspecciona la secuencia en busca del índice i donde se halle el mismo bloque
más próximo:
i t .q . bn ( s ) = bn −i ( s )
4. An ( s ) = i , si existe alguna i que lo cumpla. En caso de no ser así, An ( s ) = n .
5. Por último, se calcula el valor de la función f T ( s ) , definida como la media del
logaritmo (en base 2) de los K términos AQ ( s ), AQ +1 ( s ),..., AQ + K −1 ( s ) :

1 Q + K −1
fT ( s) = ⋅ ∑ log 2 ( An ( s ) )
K n=Q
Los valores a escoger de los parámetros L, Q y K no son muy restringidos. Maurer
recomienda tomar L entre 8 y 16. El valor de Q debe ser tal que se garantice, con alta
probabilidad, que en la inicialización todas las subsecuencias de L bits aparecen al
menos una vez. En lo que se refiere al valor de K, cuanto más grande mejor, pero a
partir de un cierto valor, el valor de la entropía se mantiene estable y sólo varían algunos
decimales de muy poco peso.
Una vez obtenido el valor de la función f T ( s ) , la entropía se puede calcular gracias
a la relación:
γ
lim (E ( f T ( s ) )− L ⋅ H S )= − ≈ −0 .832746177
L →∞ ln 2

Suponiendo que los valores de L igual a 8 o 16 son lo suficientemente grandes como


para eliminar el límite:
61

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

f ( s ) + 0 .832746
H! S = T
L
Existen tablas del valor medio y la esperanza de f T ( s ) que permiten determinar los
umbrales de decisión para rechazar los generadores sospechosos de padecer algún
defecto (aunque el test no nos diga de qué tipo de defecto se trata).

R es el conjunto de secuencias aleatorias generadas por una fuente binaria simétrica.


Los valores de los umbrales vienen definidos por:

t 1 = E ( f T ( s ) )− y ⋅ ∂ t 2 = E ( f T ( s ) )+ y ⋅ ∂

L E ( f T ( R )) VAR(log 2 ( An ( R )) ) L E ( f T ( R )) VAR(log 2 ( An ( R )) )
1 0.73264948 0.690 9 8.17642476 3.311
2 1.53743829 1.338 10 9.17232431 3.356
3 2.40160681 1.901 11 10.1700323 3.384
4 3.31122472 2.358 12 11.1687649 3.401
5 4.25342659 2.705 13 12.1680703 3.410
6 5.21770525 2.954 14 13.1676926 3.416
7 6.19625065 3.125 15 14.1674884 3.419
8 7.18366555 3.238 16 15.1673788 3.421
VAR(log 2 ( An ( s )) )
∂= ≈ VAR( f T ( s ))
K

y se escoge tal que: N ( − y ) = φ 2 , donde φ es la probabilidad de falsa alarma, que


normalmente se fija al 1% o al 0.1%. En estos casos, y = 2.58 e y = 3.30
respectivamente.

1

x
N( x ) = e − t dt
2

2π −∞

5.3. Test de entropía por bit por cálculo directo


Este test consiste en medir directamente el valor de la entropía tal como se expresa
matemáticamente para fuentes con memoria, de aquí proviene el nombre de "cálculo
directo".
La fórmula de la entropía de varias variables aleatorias y sus propiedades se pueden
encontrar en cualquier libro básico de la teoría de la información, como por ejemplo en
[BLAH83]:

62

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

n1 nk
H ( X 1 ,..., X k ) = − ∑ ... ∑ P( x1 = j1 ,..., x k = j k ) ⋅ log( P( x1 = j1 ,..., x k = j k ))
j1 = 1 jk =1

Esta fórmula se puede adaptar a los generadores pseudoaleatorios de secuencias


binarias de la siguiente forma. Cada grupo de k bits consecutivos de la salida forman
una palabra. Se toman todas las palabras y se calcula la probabilidad cada combinación
de k bits. Una vez hecho esto, la entropía por bit se calcula como:

1 2 −1
k

H ( Fuente ) = − ∑ P( x1 ... x k ) ⋅ log 2 ( P( x1 ... x k ))


k i =0

El valor de k corresponde a la memoria de que se supone que dispone el generador.


Cuando k sea igual al tamaño de la clave del generador, el valor de la entropía calculado
por este test será exactamente igual al real.
Este test sirve también como una referencia para contrastar los resultados que calcula
el test de Maurer.

6. Complejidades
Todos los tests anteriores ponen su punto de atención en los aspectos aleatorios de las
secuencias, pero no dan mucha información acerca de su impredecibilidad. Para medir
estos aspectos existen algoritmos de cálculo que intentan reproducir la secuencia
mediante unos esquemas preestablecidos. De todas las complejidades, la complejidad
lineal se considera como la medida clásica, destacando por su historia, importancia, y
sobre todo, facilidad de cálculo.
En los últimos años, han aparecido nuevos conceptos de complejidad que intentan
aportar mayor información sobre las secuencias, como son la complejidad cuadrática, la
complejidad de máximo orden, la complejidad de Ziv-Lempel, la complejidad
no-periódica de Kwok-Beale, y algunas otras más.

6.1. Complejidad lineal


La medida de la complejidad lineal aparece a causa del problema existente de
codificación de encontrar el L.F.S.R. más corto capaz de generar una secuencia dada.
Massey, en su artículo [MASS76] adaptó un algoritmo recurrente original de
Berlekamp capaz de sintetizar los dígitos de una secuencia. La longitud del L.F.S.R.
resultante es lo que se conoce como complejidad lineal.
El algoritmo original es válido para cualquier tipo de secuencias, ya contengan
números reales o elementos de algún cuerpo finito. Sin embargo, el caso binario es muy
sencillo, y el de mayor utilidad para el cifrado en flujo.

63

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

Existe otro algoritmo, publicado en [GAME83], que también calcula la complejidad


lineal. Es muy rápido, sólo necesita un número de pasos igual a log( P ) , donde P es el
periodo de la secuencia, en lugar de 2c (c es la complejidad lineal) que requiere el
algoritmo de Massey-Berlekamp. Por el contrario, necesita O( P ) de memoria, mientras
que el de Massey sólo necesita O( c ) , y sólo es aplicable a secuencias con una longitud
igual a una potencia de dos.
Un L.F.S.R. genera una secuencia finita de longitud N si y sólo si los primeros N bits
de salida del L.F.S.R. para una inicialización concreta coinciden con los de la secuencia.
L es el tamaño del L.F.S.R. Si L ≥ N , entonces el L.F.S.R. siempre puede generar la
secuencia. Para L < N , el L.F.S.R. genera la secuencia cuando:

L
s j + ∑ Ci ⋅ s j −i = 0 ∀j = L , L + 1,..., N − 1
i =1

donde C N ( D ) es el polinomio de conexión del L.F.S.R. de longitud mínima L N ( s )


que genera la secuencia.
Sea S una secuencia infinita de manera que (s0, s1, sN-1) formen los N primeros bits
de S, L N ( s ) se define como la mínima de las longitudes de todos los L.F.S.R que
generen (s0, s1, ..., sN-1). L N ( s ) siempre es menor que N y, además, es una función
monótonamente no decreciente a medida que N va creciendo. Por convenio, se impone
que la secuencia todo-ceros tiene una complejidad lineal cero.
Si un L.F.S.R. de longitud L N ( s ) que genera (s0, s1, ..., sN-1), también genera (s0, s1,
..., sN-1, sN), entonces LN +1 ( s ) = LN ( s ).
Cuando un L.F.S.R. de longitud L N ( s ) que genera (s0, s1, ..., sN-1) falla al intentar
generar el siguiente símbolo, el nuevo L.F.S.R. mínimo que genera la secuencia se
puede calcular recursivamente a partir del anterior L.F.S.R. tal como se indica a
continuación. Se calcula la discrepancia, dN, definida como la diferencia entre el término
N+1 de la secuencia S, y el término N+1 de la secuencia que genera el L.F.S.R. que
hemos encontrado que puede generar los primeros n términos de esa secuencia. En el
caso binario, sólo puede valer 0 o 1. Cuando la discrepancia es cero, estamos en el
primer caso, en el que el L.F.S.R. que genera la secuencia hasta el término N, también lo
hace hasta el término N+1. Cuando la discrepancia es diferente de cero, el nuevo
L.F.S.R se calcula como:

C N +1 ( D ) = C N ( D ) − d N d m−1 D m− n C m ( D )

donde m es la longitud de la secuencia antes del último cambio de longitud del registro
de desplazamiento mínimo, cuando:

Lm ( s ) < L N ( s )
Lm .+1 ( s ) = L N ( s )

En el caso binario, las restas son iguales a las sumas, y las discrepancias sólo
pueden tomar los valores 0 y 1, d N d m−1 = 1, por lo que la fórmula se simplifica:

64

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

C N +1 ( D ) = C N ( D ) + D m− n C m ( D )
La máxima complejidad de una secuencia de longitud N es N, y la de una secuencia
de periodo P, es P. En principio, interesa tener la máxima complejidad lineal posible,
pero también es necesario que la secuencia sea estable; esto será mejor comentado
cuando se comente la complejidad de peso p. Una manera sencilla de aumentar la
complejidad es insertando operaciones no lineales tipo AND, OR, ...
No sólo interesa el valor de la complejidad de una secuencia, sino también el perfil
de crecimiento de la complejidad lineal (L.C.P.) [RUEP86] a medida que se va
desarrollando el algoritmo. Se conoce cuál es el L.C.P. esperado para una secuencia
aleatoria (que sigue la recta N/2), y también la desviación estándar respecto este valor
ideal. Por esta razón, aunque una secuencia posea una gran complejidad lineal, puede
ser rechazada debido a que su perfil muestre una desviación significativa respecto el
valor medio esperado.
Hay que tener en cuenta que las desviaciones respecto a la recta N/2 no son iguales al
principio, que en la zona central, que al final de la secuencia, y que las secuencias con
un L.C.P. muy cercado a N/2 no implica que tengan buenas propiedades estadísticas. El
contraejemplo más evidente es la secuencia:

1 n = 2j −1
y( n ) =  ∀j = 0 ,1,2 ,...
0 otro n

Esta secuencia muestra un evidente desequilibrio entre los ceros y los unos, en
cambio, su perfil de complejidad lineal es perfecto.
La esperanza y la varianza de la complejidad lineal de secuencias aleatorias de
longitud N vienen dadas por la expresión:
N 4 + ( N mod 2 ) 1  N 2  N
E ( c( s N )) = − − N +  →
2 18 2  3 9  N →∞ 2
86 1  14 − ( N mod 2 ) 82 − 2 ⋅ ( N mod 2 )
VAR( c( s N )) = − N N+ −
81 2  27 81 
1 1 2 4 4 86
− 2N 
N + N+  →
2 9 27 81 N →∞ 81

Para N grandes, la varianza tiende a una constante. Esto implica que la distribución
de las secuencias, es virtualmente independiente de la longitud de las mismas.
Por último, es posible utilizar otros dos parámetros que permiten realizar tests
estadísticos sobre la secuencia basados en el perfil L.C.P.:

• Test estadístico basado en el número de saltos de la complejidad lineal

2 si L ≤ n 2
(
E W" C . L.( s n ) = L = )
2 + 2 L − n si L > n 2

65

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

• Test estadístico basado en la longitud entre dos saltos consecutivos de la complejidad


lineal.

2 si L ≥ n 2
( )
E ∆C . L ." C . L.( s n ) = L = 
2 − 2 L − n si L < n 2

6.2. Complejidad de peso p


No sólo es importante que la secuencia tenga una elevada complejidad lineal, sino
también que goce de una gran estabilidad [DING91].
Se dice que una secuencia es estable cuando la variación de unos pocos bits no altera
de manera significativa el valor de la complejidad lineal. Por ejemplo, la secuencia
todo-ceros seguidos por un uno: 000.....001 tiene la complejidad lineal máxima, puesto
que sólo un L.F.S.R. de longitud igual a la longitud de la secuencia puede generarla. En
cambio, se aprecia claramente que esta secuencia no es buena criptográficamente.
Cambiando el último bit por un cero, pasamos de complejidad máxima a complejidad
igual a cero, la mínima. En estos casos, se dice que la secuencia no es estable. Esto
demuestra que las altas complejidades son necesarias (o como mínimo, deseables), pero
no suficientes.
Una de las técnicas para medir la estabilidad de una secuencia es la llamada
complejidad de peso p. El algoritmo consiste en variar p bits de la secuencia y calcular
la complejidad lineal resultante. La complejidad de peso p es el valor de la complejidad
lineal mínima que se obtiene de todas las posibles combinaciones de secuencias que
varían en p bits respecto a la original.
El problema de este tipo de complejidad es su alto coste computacional.

6.3. Complejidad de máximo orden


El objetivo es encontrar el F.S.R. más corto posible, con una función de
realimentación cualquiera, probablemente no-lineal [JAN 89].
La importancia de la medida reside en que da información acerca del número mínimo
de bits que han de ser observados para ser capaces de sintetizar la secuencia entera
mediante un F.S.R.
Un punto de vista diferente para calcular la complejidad (y de hecho, ha sido la idea
que se ha implementado en software), es el que se fija en las repeticiones de las
subsecuencias de símbolos seguidos. La complejidad de máximo orden de una
secuencia es igual a la longitud más uno de la subsecuencia más larga que ocurra como
mínimo dos veces son símbolos sucesores diferentes.
Por ejemplo, la secuencia: (2003405602340221876) tiene complejidad de máximo
orden 4, puesto que todas las subsecuencias de longitud 4 son distintas y la subsecuencia
340 tiene dos sucesores distintos: 5 y 2.El valor máximo de la complejidad para una
secuencia de longitud N es N-1, y para una secuencia de periodo P, es P-1. Además,
una secuencia de longitud N tiene complejidad N-1 si, y sólo si, consiste en una serie de
N-1 caracteres repetidos seguidos de un último símbolo distinto. De esto se deduce, al
igual que en la complejidad lineal, que no siempre las secuencias con muy elevada
complejidad son aptas para su uso en criptografía.
La mínima complejidad de una secuencia con periodo P, es log2P (en el caso binario).
66

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

Para poder comparar los resultados con los valores que obtendríamos de una
secuencia realmente aleatoria de longitud N, se sabe que los límites inferior y superior
de la complejidad de máximo orden en este caso son:

E (C min )= log 2 N
E (C max )= 2 ⋅ log 2 N

6.4. Complejidad cuadrática


Desde el punto de vista de la complejidad de máximo orden, la complejidad lineal es
la complejidad de orden 1. La complejidad que ahora se expone correspondería a la de
orden 2.
La complejidad cuadrática se propuso por primera vez en [CHAN89]. Su idea está
basada en calcular la longitud mínima del F.S.R. con una función de realimentación de
segundo orden (sin término independiente) que puede generar la secuencia en estudio.

n −1 n −1
f ( x0 , x1 ,..., xn −1 ) = ∑ ∑ a j ,k x j xk
j =0 k = j

Para poder calcular la complejidad, el problema de segundo orden se transforma en


un sistema de ecuaciones lineales. Por ejemplo, para una secuencia de longitud 8 y una
complejidad cuadrática de 3, se obtiene el sistema:

a 
 s0 s1 s0 s1 s2 s0 s2 s1 s2   a0   s3 
s s2 s1 s2 s3 s1 s3 s2 s3   a 1   s4 
 s1 s3 s2 s3 s4 s2 s4 s3 s4  ⋅  0 ,1  =  s5 
 2
s4 s5   2   s6 
a
 s3 s4 s3 s4 s5 s3 s5
 a0 ,2 
 s4 s5 s4 s5 s6 s4 s6 s5 s6     s7 
 a1,2 
Si el sistema de ecuaciones no tiene solución, entonces, la complejidad cuadrática de
la secuencia es mayor que la indicada.
La ventaja de este sistema es que se puede ampliar fácilmente a complejidades de
orden n-ésimo. Sin embargo, a medida que crece el orden, se va creciendo también el
coste computacional asociado de manera exponencial y se necesita mucha memoria, por
lo que la aplicación práctica de este tipo de complejidad encuentra grandes dificultades.

6.5. Complejidad de Ziv-Lempel


Esta medida de la complejidad es conocida desde hace mucho tiempo, pero no ha
tenido mucha aceptación en criptografía. Hace cuatro años, Mund [MUND89], la
retomó, insistiendo en el significado criptográfico de esta medida.
Como ya se ha visto anteriormente, valores altos en la complejidad lineal, de máximo
orden,... no implican necesariamente que esas secuencias fueran apropiadas para un uso
criptográfico. Para evitar esta deficiencia, Rueppel propuso estudiar el perfil de
crecimiento de la complejidad y compararlo con el que tienen las secuencias realmente
aleatorias. La complejidad de Ziv-Lempel, en cambio, posee ambas propiedades en una
sola medida.

67

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 4 Evaluación de la seguridad

La complejidad de Ziv-Lempel representa la tasa de aparición de nuevas


subsecuencias distintas de las anteriores. El algoritmo de cálculo sobre una secuencia
s = ( s1 , s2 ,..., s N ) es muy sencillo:
1. Después del primer símbolo s1 se inserta un separador "/".
2. Después del último separador i-ésimo, colocado después de ski ( 1 ≤ ki ≤ N − 1 ) . El
próximo separador será insertado después de ski+1 , donde ki +1 = ki + Li − 1 ≤ N y Li
es la longitud máxima de la subsecuencia ski +1 ,..., ski + Li tal que existe un entero pi
(donde 1 ≤ pi ≤ ki ) para el cual s pi +1 ,..., s pi + Li −1 = ski+1 ,..., ski + Li .
3. Si sN viene seguido de un separador, la complejidad de Ziv-Lempel es igual al
número de separadores. En caso contrario, la complejidad es igual al el número de
separadores más uno.
Por ejemplo, para la secuencia s = 1001101110000111, la colocación de los
separadores quedaría de la siguiente forma: s = 1/0/01/101/1100/00111/, por lo que la
complejidad de Ziv-Lempel de esta secuencia es igual a c(s) = 6.
Algunas propiedades de la complejidad de Ziv-Lempel son las siguientes: en una
secuencia de periodo p, la complejidad de Ziv-Lempel se estabiliza a un valor constante
después de examinar 2p-1 valores de la secuencia; la complejidad de dos secuencias
complementarias es la misma; la secuencia 000...001 tiene una complejidad de
Ziv-Lempel mínima, en lugar de máxima; ... Éstas y algunas otras características hacen
que esta complejidad resulte muy apropiada para la detección de repeticiones dentro de
una misma secuencia, y sobretodo, su perfil de crecimiento da mayor información que la
que ofrecen los perfiles del resto de complejidades.

7. Compresiones
Según una idea del propio Shannon, una secuencia es aleatoria cuando no es posible
comprimirla. Inspirado en este concepto, se han realizado varios tests sobre las
secuencias binarias utilizando los compresores estándares más conocidos.
El procedimiento es como sigue. Se toma la secuencia binaria generada por un
generador y se graba bit a bit en un fichero binario. Posteriormente, se intenta
comprimir dicho fichero mediante cualquiera de los programas compresores más
comercializados: Arj, Pkzip, Lha, ... Los métodos de compresión se basan
principalmente en las técnicas de codificación de Huffmann adaptativa, la codificación
aritmética, la compresión por ventana deslizante y el modelado estadístico. Para una
mayor comprensión sobre estos métodos véase [NELS92]. El cociente entre el tamaño
de fichero comprimido y el tamaño del fichero original es una estimación de la bondad
de la secuencia.

68

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

Capítulo 5: CDMA

1. Introducción a la técnica de acceso CDMA

CDMA es una técnica de acceso múltiple para comunicaciones en las que participa
un gran número de usuarios que comparten un mismo canal. A diferencia de los
sistemas tradicionales no se intenta dividir recursos temporales o frecuenciales entre los
distintos comunicantes, sino que se distribuyen los recursos entre todos los usuarios
simultáneos, controlando la potencia transmitida por cada uno para que se garanticen los
valores mínimos de relación S/N requeridos. Obviamente, para conseguir que los
destinatarios puedan recuperar perfectamente su señal correspondiente, es preciso poder
separar en el receptor la señal deseada de la del resto de usuarios.
CDMA es una técnica de espectro ensanchado, es decir, el espectro frecuencial de la
señal de datos de un usuario se expande distribuyendo su energía en un ancho de banda
muy superior al original. En la técnica DS-CDMA cada participante emplea una
secuencia pseudoaleatoria, denominada código, que ocupa todo el ancho de banda del
canal. El procedimiento seguido en emisión consiste en multiplicar la señal de datos por
dicha secuencia pseudoaleatoria. La figura 5.1 muestra el modelo en banda base tanto en
emisión como en recepción

69

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

Datos Codificación
y entrelazado

Generador
pseudoaleatorio

Codificación Datos
y entrelazado
Generador
pseudoaleatorio

Sincronismo
Figura 5.1. Modelo banda-base emisión recepción DS-CDMA

Dichos códigos son distintos para cada usuario, y sus correlaciones cruzadas deben
ser muy pequeñas, es decir, las secuencias asociadas a los distintos usuarios deben ser
prácticamente ortogonales para poder separar las distintas señales. El equipo que recibe
la señal transmitida es capaz de seleccionar la información deseada si conoce el código
del emisor correspondiente.
Entre otras, este técnica de acceso presenta las siguientes ventajas: baja densidad
espectral de potencia, reducción del efecto multicamino, alta tolerancia a interferencias,
y se permite que el instante de inicio de la transmisión sea arbitrario.
El principal parámetro en estos sistemas es la ganancia de procesado G=Tb/Tc.
Básicamente identifica el ensanchamiento del espectro y la disminución de la densidad
espectral de potencia ocasionadas por la multiplicación de la secuencia c(t). Asimismo,
este parámetro determina el número de usuarios que puede haber en un sistema, la
cantidad de reducción del efecto multicamino, etc.
En la figura 5.2 se muestra como se combina los datos de usuario con la secuencia
pseudoaleatoria (o código).

Código

Datos

Señal

Tb: Duración de bit Tc: Duración de chip

Figura 5.2. Ensanchamiento espectro DS

70

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

En recepción, la señal recibida se vuelve a multiplicar por el código correspondiente


debidamente sincronizado. Dado que dicha secuencia pseudoaleatoria está constituida
exclusivamente por +1 y –1, al multiplicar los datos de usuario dos veces por el código
(una en emisión y otra en recepción) desaparece su efecto y se recuperan dichos datos.
Para poder ver el efecto de la interferencia de otros usuarios, veamos el siguiente
ejemplo. Supongamos que dos usuarios, A y B, transmiten simultáneamente.
Denominamos A(i) el bit i-ésimo de las secuencias de datos asociada al usuario A y aj el
valor correspondiente a la muestra j-ésima del código asociado a dicho usuario. Cada
una de esas muestras se denomina chip.
A(n) A(n+1)
a0 a1 aτ-1 ... aL-1 a0 a1 a2

B(n) B(n+1)
BL-τ-1 BL-1 b0 b1 ...

Figura 5.3. Bits de datos con sus respectivos códigos para un sistema DS-CDMA con dos usuarios

La duración del bit de datos se divide en L partes, de manera que dos bits de usuario
consecutivos comienzan con el mismo chip. En la gráfica se puede apreciar que no es
preciso que haya sincronismo entre los datos de usuario a nivel de bit, de manera que la
interferencia generada entre dos usuarios depende del desfase entre los dos códigos. La
señal que recupera el usuario A, sería:
τ −1 L −1
x n (n ) = ∑ (A(n)a(i) + B (n)b( L + i − τ ) )a(i ) + ∑ (A(n)a (i) + B(n + 1)b(i − τ ) )a(i ) =
i =0 i =τ

 τ −1 L −1 
= La(n ) +  B(n )∑ b(L − τ + i )a(i ) + B(n + 1) ∑ b(i − τ )a (i )
 i=0 i =τ +1 

La interferencia es el término de la expresión anterior introducido entre llaves


Como conclusión, podemos indicar las siguientes premisas como requisitos que deben
satisfacer las secuencias código.

1. Con el fin de facilitar el sincronismo, todas las secuencias utilizadas deben ser
fácilmente distinguibles de una versión desplazada de ellas mismas. Eso implica que
la autocorrelación de una secuencia debe presentar valores pequeños para
desplazamientos no nulos. Este requisito también asegura una cierta protección
frente a interferencias debidas a la propagación multicamino.
2. Para poder distinguir la secuencia de un usuario frente a la del resto, la correlación
cruzada entre secuencias de la misma familia debe ser muy pequeña para cualquier
decalaje temporal.
3. Los conjuntos de secuencias que cumplen las propiedades anteriores deben albergar
un elevado número de secuencias, con el fin que el sistema pueda dar servicio a un
gran número de usuarios

71

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

2. Correlación aperiódica e impar


La interferencia es el término de la expresión anterior introducido entre llaves.
Vemos por tanto que la correlación es un parámetro fundamental. La correlación
cruzada entre las secuencias a(.) y b(.) viene determinada por la siguiente expresión:
L −1
θ a ,b (τ ) = ∑ a(n )b(n + τ )
i =0

Tal como se ha indicado anteriormente, el sincronismo no será necesariamente a


nivel de bit, por lo tanto es preciso definir nuevos parámetros para modelar la
interferencia. Con esta finalidad se define la correlación aperiódica entre dos secuencias,
tal como se indica a continuación:
L−τ −1
 ∑ a(i )b(i +τ ) 0 ≤ τ ≤ L −1
Li+=τ0−1

Ca,b (τ ) =  ∑ a(i −τ )b(i ) 1− L ≤ τ < 0
 i=0
 0 τ ≥L


A partir esta expresión, la interferencia que tendría un usuario como
consecuencia de los datos emitidos por otro, se puede expresar de la siguiente manera:

B(n )C a,b (τ − L ) + B(n + 1)C a,b (τ )

Se puede deducir fácilmente que el nivel de interferencia depende de B(n) y


B(n+1). Aproximadamente la probabilidad de coincidencia de dichos bits es de 0.5. En
tal caso, la interferencia es:
B(n + 1)(C a ,b (τ ) − C a ,b (τ −L )) 0 ≤ τ ≤ L −1
En caso que los bits difieran, la expresión sería:

B(n + 1)(C a ,b (τ ) + C a ,b (τ −L )) 0 ≤ τ ≤ L −1
Este resultado da lugar a la correlación impar,

θˆb,a (τ ) = C a,b (τ ) − C a,b (τ −L ) 0 ≤ τ ≤ L −1

De estos resultados se desprende que es importante tener en cuenta no sólo la


autocorrelación y la correlación cruzada periódica. En la elección de un conjunto de
secuencias también se deben valorar los picos de la correlación cruzada impar.
Los valores de pico de correlación cruzada y autocorrelación (fuera del origen)
de una familia de secuencias χ de longitud L, se definen de la siguiente manera:
{
θ c = máx θ x , y (τ ) : 0 ≤ τ ≤ L − 1, ∀x, y ∈ χ , x ≠ y }
θ a = máx{θ x (τ ) : 1 ≤ τ ≤ L − 1, ∀x ∈ χ }
θ máx = máx{θ c , θ a }

72

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

Se conocen cotas inferiores para los valores de θmáx. El primero de estos límites,
denominada cota de Welch [WEL 74], indica el valor mínimo de θmáx en una familia
constituida por N secuencias de longitud L. Dicha cota es:

N −1
θ máx ≥ L
LN − 1
En el caso particular de tener secuencias binarias con N ≥ L, existe otro límite,
cota de Sidelnikov, más restrictivo que el anterior.
θ máx = 2(L − 1)

3. Familias de secuencias pseudoaleatorias para sistemas CDMA.

Las familias de secuencias empleadas en los sistemas CDMA se basan en las


secuencias m, generadas mediante LFSR. Dichas secuencias ya fueron introducidas en el
capítulo 3.

3.1 Secuencias de Gold


Se trata de una familia de secuencias periódicas, de longitud no máxima
(teniendo en cuenta la suma de las longitudes de los LFSR a partir de los cuales se
obtienen), que permite dar servicio a un gran número de usuarios, manteniendo unos
valores aceptables de correlación cruzada entre dos secuencias y autocorrelación
[GOLD67].
La técnica de construcción de una secuencia de Gold consiste en la XOR de la
salida de dos LFSR realimentados con los polinomios primitivos adecuados p(D) y
p’(D), de grado m, tal como se indica en la figura 5.3.

Figura 5.3 Esquema generador de Gold.

73

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

En el supuesto que el estado inicial de ambos registros sea distinto del estado
nulo, este esquema es equivalente a tener un único LFSR realimentado con el polinomio
f(D)=p(D)p’(D). Por ejemplo, si se hubiese considerado el polinomio p(D) = D5+ D2+ 1
y p’(D)= D5+ D4+ D2+ D+ 1, la secuencia obtenida se podría conseguir con un único
registro de diez celdas, con polinomio de realimentación igual a D10+ D9+ D3+ D+ 1

Nótese que el polinomio resultante no es primitivo, por lo que la secuencia


obtenida no es una secuencia PN. En cuanto a la elección de la pareja de polinomios de
realimentación, ambos de grado m, se toma uno con raíz α, y se escoge el otro de
manera que una raíz sea αt(m), siendo t(m):
t (m) = 1 + 2 (m + 2 ) / 2 
A nivel de ejemplo, si el primer LFSR utiliza como polinomio de realimentación
D + D + 1, el segundo LFSR debería realimentarse mediante el polinomio D5+ D4+ D3+
5 3

D+ 1.
Como se ha mencionado anteriormente, los polinomios primitivos están
tabulados. Una forma alternativa de hallar la pareja preferida de un polinomio es
haciendo uso de dichas tablas, ya que en ellas se indica la raíz más pequeña de ese
polinomio. Por ejemplo, si se escoge el primer polinomio D5+ D2+ 1 (cuya raíz es α), el
segundo deberá tener como raíz α9, pero también α18, α36=α5 (ya que el periodo es 31),
α10 y α20. Se puede ver que el polinomio con raíz α5 figura en las tablas, siendo D5+ D4+
D2+ D+ 1, por lo tanto ese seria el par preferido del polinomio inicial.
Sea a la secuencia PN generada mediante el LFSR con realimentación p(D), y a’
la secuencia que genera el otro LFSR (realimentación p’(D)). La familia de secuencias
de Gold estará constituida por {a, a’, a⊕Ta’, a⊕T2a’, a⊕T3a’, a⊕ TL-1a’}, siendo Tkb
la secuencia resultante de desplazar k posiciones ciclícamente la secuencia b, y L el
periodo de las secuencias, o sea, 2m-1. En total, el número de secuencias que constituyen
la familia es de L+2.
Para las secuencias de Gold, tanto la correlación cruzada entre estas secuencias,
como la autocorrelación puede tomar uno de los tres valores siguientes:
{− t (m ), − 1, t (m ) − 2}
Este comportamiento supera a la cota de Welch en un factor √2 para valores de n
impar y 2 si la n es par. Por otra parte, dado que el número de secuencias de la familia es
superior al periodo de dichas secuencias, un límite inferior para θmáx es la cota de
Sidelnikov.
La siguiente tabla muestra los valores de θmáx para distintos valores de m, y las
cotas de Welch y Sidelnikov para dichos valores

m 5 6 7 8 9 10 11 12
θmáx 9 17 17 33 33 65 65 129
Cota Welch 6 8 12 16 23 32 46 64
Cota Sidelnikov 8 12 16 23 32 46 64 91

74

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

3.2 Secuencias de Kasami


Bajo esta denominación se engloban dos familias, el conjunto pequeño de
secuencias de Kasami y el conjunto grande de secuencias de Kasami.

3.2.1 Conjunto pequeño de Kasami


El conjunto pequeño está constituido por 2m/2 secuencias de periodo L=2m-1,
siendo m un número par. El procedimiento utilizado para generar dichas secuencias es
similar al comentado anteriormente para las secuencias de Gold.
Se parte de una secuencia a, y se obtiene a’ muestreando la secuencia original
cada 2 +1 bits. Dado que el periodo de a es 2m-1 = (2m/2+1) (2m/2-1), la secuencia a’
m/2

tendrá un periodo L’= 2m/2-1 bits, y se puede generar mediante un LFSR de m/2 celdas.
Así por ejemplo, si se escoge como secuencia a la generada por el polinomio
6
D + D+ 1, la secuencia a’ resultante del diezmado cada nueve muestras es la que
obtendríamos con un registro de tres celdas realimentado con el polinomio D3+ D2+ 1.
El conjunto pequeño de secuencias de Kasami está constituido por {a, a⊕a’,
a⊕T a’, a⊕T2a’, a⊕ TL’-1a’}, es decir, consta de 2m/2 secuencias.
1

Para las secuencias pertenecientes al conjunto pequeño de Kasami, la


autocorrelación y correlación cruzada, toma uno de los siguientes valores {-1, -(2m/2+1),
2m/2-1}, de modo que se consigue prácticamente la cota de Welch, tal como se muestra
en la tabla siguiente:

m 6 8 10 12 14
θmáx 9 17 33 65 129
Cota Welch 8 16 32 64 128

Si comparamos este conjunto con la familia de Gold, dado un valor de m (número de


celdas del LFSR básico) se tiene valores de correlación aproximadamente la mitad, a
costa de reducir el número de secuencias, ya que en el conjunto de Kasami es 2m/2,
mientras que en el caso de Gold se dispone de 2m+1 secuencias.

3.2.2 Conjunto grande de Kasami


El procedimiento seguido para obtener dicho conjunto es similar al anterior, pero
realizando dos muestreos distintos. Se parte de una secuencia PN que denominaremos a,
obtenida utilizando un registro con un número par de celdas. A partir de ella se obtienen
a’ y a’’ muestreando cada 2m/2+1, y 2(m+2)/2+1 bits respectivamente. El conjunto está
constituido de la misma manera que en el conjunto pequeño, teniendo en cuenta todas
las posibilidades de decalajes en a’ y a’’, de manera que el número de secuencias es
mucho mayor. El número total de secuencias es 23m/2 si m es múltiplo de 4, y 23m/2 +
2m/2 en caso contrario. Según Dinan y Jabbari [DIN 98], dichas secuencias son una de
las candidatas para W-CDMA.

75

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

A modo de ejemplo, supongamos que partimos de la secuencia a obtenida


mediante un LFSR realimentado con el polinomio D6+ D+ 1. El procedimiento para
generar la secuencia a’ es idéntico al empleado en el conjunto pequeño de Kasami; de
modo que dicha secuencia es la generada mediante un LFSR realimentado con el
polinomio D3+ D+ 1. La secuencia a’’ se obtiene tomando de la secuencia a una
muestra cada diecisiete. Dado que m.c.d. (17, 63) = 1, la secuencia a’’ presenta también
un periodo igual a 63, y se puede generar mediante un registro de desplazamiento
realimentado con el polinomio D6+ D5+ D2+ D+1.
El periodo de cualquiera de las posibles combinaciones (excepto a’) que
constituyen el conjunto grande de Kasami es de 63, ya que es el mínimo común múltiplo
de los periodos de a, a’ y a’’. Para calcular el número total de secuencias del conjunto,
primero fijaremos para el primer registro un estado inicial (no nulo) y podemos
comprobar que tenemos 29 posibilidades de estados iniciales para los otros dos registros,
con lo cual ya tenemos 29 secuencias distintas. Suponiendo que el primer registro tiene
el estado nulo, debemos considerar el caso en que el tercero tiene un estado fijo (no
nulo), y el segundo tiene como estado inicial cualquiera, es decir, 23 posibilidades más.
Por tanto, el número total de secuencias es de 29+ 23, o sea, 23m/2+ 2m/2.

Figura 5.4 Esquma generador conjunto grande de Kasami

76

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

En el conjunto grande de Kasami, la autocorrelación y correlación cruzada entre


secuencias, toman uno de los siguientes cinco valores {-1, -1±2m/2, -1±2(m+2)/2},
superiores a los valores obtenidos en el conjunto pequeño. En este caso se puede aplicar
la cota de Sidelnikov, ya que el número de secuencias es mayor que su periodo. Los
valores de correlación son iguales a los obtenidos en Gold, siendo mucho mayor el
número de secuencias.

m 6 8 10 12 14
θmáx 17 33 65 129 257
Cota Welch 8 16 32 64 128
Cota Sidelnikov 12 23 46 91 182

3.3 Códigos ortogonales


Dichos códigos se basan en el uso de funciones ortogonales, es decir, funciones
que presentan una correlación cruzada nula en el origen. Sin embargo, en el resto de
puntos, dicha correlación puede ser muy elevada, por lo cual no son secuencias útiles
para el ensanchado si el sincronismo es a nivel de chip. Un caso de estas funciones son
las de Walsh.
Dichas funciones son adecuadas en códigos ortogonales de longitud variable
[ADA 97], lo cual permite mejorar la capacidad de comunicaciones multimedia. En W-
CDMA los servicios ofrecidos pueden tener tasas muy diversas.
Para ello se considera la tasa global del usuario (Rglobal), y se parte del servicio de
menor tasa (Rmín), y se considera extendido por un código de longitud N=2n, con el valor
de n adecuado, tal que Rmín = 2-nRglohal. Si se desea un servicio de tasa 2k Rmín (k<n), el
código asociado deberá tener una longitud 2n-k. El número de servicios que se puede
ofrecer está acotado. Si denominamos #serv(i) el número de servicios de tasa 2i Rmín,
los servicios ofrecidos están limitados por la siguiente expresión:
n
2 n ≥ ∑ # serv (i ) ⋅ 2 i
i =1
La gráfica 5.5 ilustra el proceso de asignación de códigos a cada servicio, según
el factor de ensanchamiento. Como se puede observar de cada código con factor de
ensanchamiento (SF) 2i, salen dos códigos con factor de ensanchamiento 2i+1, siendo el
primero de ellos, el código anterior repetido, y el segundo de ellos también repite el
código original pero en la repetición se cambia el signo de todos los bits. Trabajando de
esta forma, una vez se utiliza un código con SF=2i, no se puede usar ningún código de
factor mayor que 2i, si dicho código proviene del ya utilizado. Por ejemplo, si se desea
utilizar una tasa mitad de la global para un servicio, al que le asignamos el código 1,-1,
no se podrá utilizar ningún código que esté en la mitad baja de la tabla, o sea, ni el 1, -1,
1, -1, ni el 1,-1,1,-1, ni sus propios descendientes.

77

© Los autores, 1999; © Edicions UPC, 1999.


Capítulo 5 Introducción a CDMA

Figura 5.5 Secuencias de Walsh


Debe tenerse en cuenta que si se usan estas secuencias de longitud variable, el
tiempo de chip para cada una de ellas es la misma, lo cual implica que el tiempo de bit
será menor cuanto menor sea el factor SF, es decir, cuanto mayor sea la tasa empleada
por ese servicio.

78

© Los autores, 1999; © Edicions UPC, 1999.

Vous aimerez peut-être aussi