Académique Documents
Professionnel Documents
Culture Documents
Generación y análisis
de secuencias pseudoaleatorias
Primera edición: septiembre de 1999
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
2. El cifrado en flujo
3. Generadores
4. Evaluación de la seguridad
5. CDMA
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.
B-2
© Los autores, 1999; © Edicions UPC, 1999.
Bibliografía.
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
2. Entornos de aplicación
DISPOSITIVO
mi CON ci
MEMORIA
ci = E ki (mi )
K k i = f ( K ,i )
Aleatorizador
Canal
Canal
Aleatorizador
y(n) â(n)
Ecualizador Destino
Secuencia
z(n) pseudoaleatoria
a(n)
+-
e(n)
X n + 1 = a ⋅ X n mod m
X0 es el valor inicial
a es el multiplicador
m es el módulo
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.
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.
FUENTE
ALEATORIA
BINARIA
SIMÉTRICA
mi ci mi
Entrada
FUNCIÓN Salida
N DE
SALIDA L
FUNCIÓN
DE CAMBIO
DE ESTADO
ESTADO
M
10
Entrada
1
1
SUBFUNCIÓN
DE Salida
SALIDA Función
de1
salida
M
ESTADO
M
FUNCIÓN
DE CAMBIO
DE ESTADO
11
Cifrado síncrono
M C M
K K
Generador Generador
pseudoaleatorio pseudoaleatorio
Cifrado autosincronizante
M C M
K
Generador K Generador
pseudoaleatorio pseudoaleatorio
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
12
13
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
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.
15
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
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.
c ⋅ ( a n − 1 )
xn = a n ⋅ x0 + mod m
a −1
x n = f ( x n −1 ) xi ∈ Z m
18
19
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
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
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 )
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 )
SL-1 SL-2 S2 S1 S0
Función de realimentación
21
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
SL-1 ... S2 S1 S0
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
r0 = 1
r1 = 0
r2 = 1
Prealimentación = x 3 + x 2 + 1
Pcaracterístico = x 3 + x + 1
S2 S1 S0
24
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
SL-1 SL-2 S2 S1 S0
26
a b c
SL-1 SL-2 S2 S1 S0
27
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]
28
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
Función lineal
Función no-lineal
(FILTRO)
• Estructura
L.F.S.R. de tamaño L
Función de salida f :(GF ( 2 )) → GF ( 2 )
L
• Funcionamiento
1. Desplazar L.F.S.R.
2. Calcular y ( t ) = f ( S( t ))
• Salida
La secuencia y(t)
30
m3 c3
m2 c2
m1 c1
m0 c0
(Y0,...,Y2n -
(X0,...,X2n -
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
m0 m2 n − 1 " m3 m2 m1
m m0 " • • m2
1
R = m2 m1 " • • m3
• • " • • •
m • • • m0
2n −1 "
L n+ 1 L
n + 1
≤ C . L .( Yi ) ≤ ∑
k =0 k
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
SUBGENERADOR
SUBGENERADOR
FUNCIÓN
COMBINADORA
SUBGENERADOR
• Estructura
N generadores L.F.S.R. (no necesariamente del mismo tamaño)
Función de salida f : (GF ( 2 )) → GF ( 2 )
N
33
a0
L.F.S.R. - 0 0
MUX
a1
L.F.S.R. - 1 1
asel
L.F.S.R. - Selector
34
a0
L.F.S.R. - 0 0
MUX
an-1
L.F.S.R. - n-1 n-1
asel
L.F.S.R. - Selector
P
L 0
E
F R
S M MUX
R U
n-1
T
L.F.S.R. -
35
L.F.S.R. - 0
Voto por
mayoría
L.F.S.R. - n-1
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.
36
y( i ) = S ( i ) mod 2
S( i )
C( i ) =
2
L.F.S.R. - 0
SUMADOR
L.F.S.R. - 1 REAL
n
∑
Li − 1
i =1
Pmax = 2
37
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
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.
L.F.S.R. Selector
L.F.S.R. - 0
L.F.S.R. - 1
38
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].
L.F.S.R. - 0
L.F.S.R. Selector
L.F.S.R. - 1
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
L.F.S.R.-0
L.F.S.R.-1
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
SUBGENERADOR
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.
Ki RAND
A3 A8
SRES KC
COUNT A5
Secuencia
cifrante
0: m pasos
1: n pasos L.F.S.R.
1000010101110110001111100110100
42
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.
0: m pasos
1: n pasos L.F.S.R.
2
P = ( 2 L − 1) − ⋅ ( 2 L− k − 1 ) con L − z par
3
43
2
P χ ( 2 L → 1) → = ( 2 L →k → 1 ) con L → z par
3
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.
φ1 L.F.S.R. - 0
φ2 L.F.S.R. - 1
44
1
L.F.S.R.-0 • L.F.S.R.-1 • L.F.S.R.-1
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
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
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
47
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
50
k 1 2
D→
a y(i) n p(i)f
i→0
n p(i )
51
FX ( x ) = P ( X ≤ x )
1
Fn ( x ) = ⋅ (nº de X ( i ) ≤ x)
n
Kn = n max Fn ( x ) − F ( x )
−∞< x <+∞
K n+ = n max (Fn ( x ) − F ( x ))
−∞< x <+∞
K n− = n max (F ( x ) − Fn ( x ))
−∞< x <+∞
52
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
• Serie
• Gap
• Póker
• Postulados de Golomb
54
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
55
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.
56
⋅ 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.
∑a n ≤1
n =1
57
1 si τ = 0
1 P
C( τ ) = ⋅ ∑ a n a n + τ = 1
P n =1 − p si τ ≠ 0
Los tres postulados son independientes, y cada uno de ellos analiza un aspecto
diferente de la secuencia.
5. Tests teóricos
58
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
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
1 k =0
F( k ) =
0 otro caso
∑ 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
d −1 2π
− ⋅(k1i1 + k 2i2 + ...+ knin )
F ( k1 ,..., k n ) = ∑ f ( i1 ,i 2 ,...,i n ) ⋅ e d
i1 ,i2 ,...,in = 0
k
µ s ( n ,∂ ) = min k ∑ P( Z i )≥∂
i =1
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
log 2 (µ s ( n ,∂ ) )
lim = HS
n →∞ n
• L memoria de la fuente
• Q número de pasos de inicialización del test
• K número de iteraciones del test
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
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).
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
1
∫
x
N( x ) = e − t dt
2
2π −∞
62
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
1 2 −1
k
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.
63
L
s j + ∑ Ci ⋅ s j −i = 0 ∀j = L , L + 1,..., N − 1
i =1
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
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.:
2 si L ≤ n 2
(
E W" C . L.( s n ) = L = )
2 + 2 L − n si L > n 2
65
2 si L ≥ n 2
( )
E ∆C . L ." C . L.( s n ) = L =
2 − 2 L − n si L < n 2
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
n −1 n −1
f ( x0 , x1 ,..., xn −1 ) = ∑ ∑ a j ,k x j xk
j =0 k = j
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.
67
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
Capítulo 5: 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
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
70
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
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
B(n + 1)(C a ,b (τ ) + C a ,b (τ −L )) 0 ≤ τ ≤ L −1
Este resultado da lugar a la correlación impar,
72
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)
73
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
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
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
m 6 8 10 12 14
θmáx 9 17 33 65 129
Cota Welch 8 16 32 64 128
75
76
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
77
78