Módulo 2.3. Criptografía de Clave Simétrica
Módulo 2.3. Criptografía de Clave Simétrica
Módulo 2.3. Criptografía de Clave Simétrica
clave simétrica
Criptosistemas en flujo y en bloque
PID_00235167
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico,
mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
del titular de los derechos.
⃝
c FUOC • PID_00235167 Criptografía de clave simétrica
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 El cifrado en flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1 Periodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Aleatoriedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Test de aleatoriedad del NIST . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Generadores no lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1 A5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Trivium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.1 Inicialización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5 El cifrado en bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1 Modos de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6 El criptosistema AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1 Descripción del funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Detalle de una iteración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.3 Función AddRoundKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4 Función ByteSub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.4.1 Las cajas S del AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.5 Función ShiftRow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.6 Función MixColumns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.7 Generación de subclaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
⃝
c FUOC • PID_00235167 Criptografía de clave simétrica
6.8 Descifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
⃝
c FUOC • PID_00235167 5 Criptografía de clave simétrica
Introducción
Como veremos en este módulo, el cifrado en flujo utiliza una clave diferente
para cada bit de información. Esta clave depende del estado inicial del gene-
rador, pero también del estado del generador en el momento de cifrar un bit
concreto. Por lo tanto, dos bits iguales se pueden cifrar de maneras diferentes
dependiendo del estado en que se encuentre el generador. En el cifrado en blo-
que esto no pasa. El cifrado en bloque actúan sin memoria y, por lo tanto, el
texto cifrado solo depende del texto en claro y de la clave. De este modo, dos
bloques de texto en claro iguales se cifran siempre del mismo modo cuando
se utiliza la misma clave.
⃝
c FUOC • PID_00235167 6 Criptografía de clave simétrica
Habrá que estudiar este hecho en detalle, puesto que si no se corrige, los siste-
mas de cifrado que resultan de él son bastante vulnerables, porque se pueden
insertar o borrar bloques de texto cifrado sin que se pueda detectar. Además,
el hecho de que dos bloques de texto en claro queden cifrados de una misma
manera, puede dar pistas para un posible criptoanálisis de tipo estadístico.
Objetivos
2. Asimilar las características necesarias que tiene que cumplir una secuencia
seudoaleatoria para que sea utilizable en un esquema de cifrado en flujo.
Los dos tipos de cifrado de clave simétrica más utilizados son el cifrado en
flujo y en bloque. La diferencia entre los dos tipos de cifrados radica en có-
mo se procesa la información: en el cifrado en flujo la información se cifra
bit por bit, es decir, los bits se cifran de manera individual, mientras que los
criptosistemas en bloque cifran un bloque entero de n bits a la vez.
⃝
c FUOC • PID_00235167 10 Criptografía de clave simétrica
2. El cifrado en flujo
.
Tanto el emisor como el receptor disponen de una misma clave k, llamada se-
milla del generado, y de un mismo algoritmo determinista Alg, llamado gene-
rador seudoaleatorio. Al proporcionar la clave k como entrada al algoritmo,
este da como salida una secuencia s, que se denomina secuencia cifrante.
Para cifrar el mensaje, el emisor va sumando cada bit del mensaje m con ca-
da bit de la secuencia cifrante s, obteniendo el mensaje cifrado y. Cuando el
receptor recibe el mensaje cifrado y, utiliza el mismo algoritmo determinista
Alg y la clave k, que comparte con el emisor, para obtener la misma secuen-
cia cifrante. Así, sumando bit a bit el mensaje y que le llega con la secuencia
resultante del algoritmo s, obtiene el texto en claro m enviado por el emisor.
A lo largo de todo este módulo didáctico las secuencias con las que trabajare-
mos serán binarias y las operaciones a las que haremos referencia serán todas
módulo 2.
Para que este criptosistema sea seguro, es básico que la secuencia cifrante no Suma módulo 2
sea conocida, es decir, que en ningún momento se pueda saber cuál será el bit De manera equivalente,
de salida siguiente. Idealmente, lo que se necesita para la seguridad incondi- podemos pensar la suma
módulo 2 como una XOR.
cional es que la clave, en este caso la secuencia cifrante, sea completamente
⃝
c FUOC • PID_00235167 11 Criptografía de clave simétrica
Si nos fijamos en el esquema de cifrado en flujo de la figura 1 vemos que, para No olvidemos el mundo
real
obtener el texto cifrado que enviamos al receptor, tenemos que ir sumando
el texto en claro con la secuencia cifrante que resulta del generador seudo- Los teléfonos móviles con
tecnología GSM incorporan
aleatorio. Esto quiere decir que la velocidad de transmisión de los datos entre
un cifrador en flujo. Sería
el emisor y el receptor viene determinada por el mínimo entre la velocidad impensable que el coste
económico del cifrador
de generación del mensaje, m, y la velocidad de generación de la secuencia
incrementara el precio del
cifrante, s. Así pues, hay que tener en cuenta este hecho cuando estudiamos teléfono móvil. Tampoco no
sería admisible que la
los posibles generadores seudoaleatorios, puesto que en función de su imple- velocidad de la comunicación
mentación (ya sea en hardware o en software), obtendremos una velocidad u se viera afectada por la
velocidad de este cifrador.
otra. Es necesario que el algoritmo que nos genere la secuencia sea de fácil im-
plementación, tanto desde el punto de vista de complejidad como en cuanto
a la vertiente económica.
2.1 Periodo
si+p = si
Dado que el periodo se repite, una vez se conoce, ya se puede determinar exac-
Periodo grande
tamente toda la secuencia cifrante y, por lo tanto, el criptosistema se puede
romper. Por eso es necesario que las secuencias que se utilizan para el cifra- El concepto de periodo
do en flujo tengan un periodo muy grande, puesto que de este modo tardan grande es relativo al cifrador
y a la aplicación. Un periodo
mucho en repetirse y, por lo tanto, es más difícil predecir su salida. de 232 puede no ser lo
suficientemente largo para
un cifrador que cifre a 1
megabyte/seg, ya que a esta
velocidad el período se repite
2.2 Aleatoriedad solo cada 8,5 minutos.
. Determinismo de los
PRNG
Un generador seudoaleatorio (o PRNG, del inglés pseudo random num-
Notad que los PRNG son
ber generator) es un algoritmo determinista que genera una secuencia algoritmos deterministas, es
a partir de una entrada que denominamos semilla. La secuencia gene- decir, dado un PRNG y una
semilla, la secuencia
rada por un PRNG intenta reproducir las propiedades que tendría una generada será siempre la
secuencia generada de manera aleatoria. misma.
Una configuración bastante habitual en criptografía es usar CSPRNG con va- Ruido térmico
lores verdaderamente aleatorios como semillas. Conseguir números (verdade-
Se llama ruido térmico o
ramente) aleatorios no es una tarea sencilla. Para generarlos hay que disponer ruido de Johnson-Nyquist a
las fluctuaciones eléctricas
de una fuente de aleatoriedad natural. Adicionalmente, si esta fuente de alea-
generadas por la agitación
toriedad se quiere usar en criptografía, habrá que asegurar también que un térmica de los electrones.
adversario no es capaz de manipularla ni observarla. Existen, principalmente,
⃝
c FUOC • PID_00235167 13 Criptografía de clave simétrica
Así pues, los ceros se convierten en –1 y los unos siguen representándose con 1. A partir del valor sobs , los test
del NIST calculan el nivel de
significación observado para
Después, se calcula sobs : decidir si la secuencia supera
∑n o no la comprobación. En
| xi | concreto, se considera que la
sobs = √
i=1
n secuencia supera la prueba si
el valor p és más elevado o
igual que 0.01.
Si la secuencia es aleatoria, sobs tenderá hacia 0, mientras que si hay demasia-
dos ceros o demasiados unos en la secuencia, entonces sobs tenderá a ser más
Superación del test
grande que cero.
En este caso, el nivel de
Ejemplo de cálculo de la prueba de frecuencia de bits individuales significación para
sobs = 1.1339 es de 0.256, lo
Dada la secuencia S = {0,1,0,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,0,1,0,1,0,0,0} con n = 28, que hace que el test se
procedemos a calcular sobs . considere superado, ya que
0.256 ≥ 0.01
En primer lugar, transformamos la secuencia de ceros y unos en una secuencia de –1 y 1:
∑28
| xi | | –6 |
sobs = √i=1 = √ ≈ 1.1339
28 28
⃝
c FUOC • PID_00235167 14 Criptografía de clave simétrica
∑m
j=1 s(k–1)m+j
πk =
m
Finalmente, se calcula:
2
∑
b
χobs = 4m (πk – 1/2)2
k=1
∑m ∑6
j=1 s(k–1)m+j j=1 sj 2
π1 = = = = 1/3
m 6 6
∑6
j=1 s6+j
π2 = = 1/6
6
∑6
j=1 s2·6+j 4
π3 = = = 2/3
6 6
∑6
j=1 s3·6+j 3
π4 = = = 1/2
6 6
⃝
c FUOC • PID_00235167 15 Criptografía de clave simétrica
∑
b
2
χobs = 4m (πk – 1/2)2
k=1
Superación del test
k=1
(teniendo en cuenta que
tenemos b = 4 bloques) es de
( ) 0.4060, lo que hace que el
= 24 · (1/3 – 1/2)2 + (1/6 – 1/2)2 + (2/3 – 1/2)2 + (1/2 – 1/2)2 test se considere superado,
ya que 0.4060 ≥ 0.01.
( n–1 )
∑
Vn (obs) = r(i) +1
i=1
Valores más grandes de Vobs indican que las oscilaciones de valores en la se-
cuencia evaluada (es decir, los cambios de uno a cero o de cero a uno) suceden
Oscilaciones
rápidamente, mientras que valores pequeños indican que las oscilaciones son
lentas. La secuencia 10101010 oscila
muy rápidamente, ya que
cada bit cambia el valor
El NIST recomienda que las secuencias evaluadas con este test tengan como respecto al bit anterior. En
cambio, la secuencia
mínimo 100 bits (es decir, n ≥ 100). Adicionalmente, este test tiene como 11111100 oscila muy
prerrequisito que la secuencia pase el test de frecuencia de bits individuales lentamente, ya que solo se
produce un cambio de valor
que hemos descrito anteriormente. Es decir, si una secuencia no supera el test en toda la secuencia.
de bits individuales, entonces ya no se realiza el test de ráfagas.
En primer lugar, comprobamos que la secuencia supere el test de frecuencia de bits indi-
viduales. Como hemos visto en el primer ejemplo, la secuencia supera este test, así que
procedemos a calcular V28 (obs).
( n–1 )
∑ Superación del test
Vn (obs) = r(y) +1
i=1
En este caso, el nivel de
significación para
= (1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0+ Vn (obs) = 15 (y teniendo en
cuenta que la secuencia tiene
28 bits y una proporción de
+ 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0) + 1 = 15
11/28) es de 0.5151, de
manera que el test se
considera superado, ya que
0.5151 ≥ 0.01.
Como se ha comentado, el banco de pruebas del NIST recoge quince test dife-
rentes. Además de los tres comentados, los otros test comprueban la aparición
de las ráfagas de unos más largas, la repetición de subsecuencias concretas
dentro de la secuencia, la facilidad de comprimirla, su complejidad lineal o
sus propiedades espectrales, entre otros.
⃝
c FUOC • PID_00235167 17 Criptografía de clave simétrica
En el apartado 2, hemos estudiado las propiedades que deben tener las se-
cuencias cifrantes para poderlas utilizar en criptosistemas de cifrado en flujo.
Tratamos ahora cómo tienen que ser los algoritmos deterministas que generan
estos tipos de secuencias.
Desde un punto de vista general tenemos dos tipos de generadores: los lineales
y los no lineales.
Los generadores lineales son aquellos que solo realizan operaciones lineales
sobre los elementos de entrada para obtener la secuencia de salida. Contraria-
mente, los generadores no lineales son los que realizan, además, operaciones
no lineales, como podrían ser permutaciones.
Hay que decir, sin embargo, que estos tipos de generadores seudoaleatorios
no son seguros desde un punto de vista criptográfico, puesto que se ha podi-
do demostrar que con pocos valores xi conocidos ya se pueden averiguar los
parámetros secretos {x0 ,a,b,m}. Incluso solo con una parte de los bits que for-
man los xi , pero, eso sí, conociendo los parámetros {a,b,m}, se puede llegar a
determinar el valor de la semilla x0 .
Aun así, estos tipos de generadores son muy utilizados en sistemas informáti-
cos para aplicaciones no criptográficas.
Ejemplo 1
La función rand() del sistema UNE BSD utiliza el generador congruencial afín siguiente:
sn+1 = c1 sn + · · · + cn s1 (1)
en que los ci ∈ {0,1} corresponden a los valores de las puertas lógicas del
esquema. Es decir, los coeficientes serán 1 si hay una conexión y 0 si no la
hay. Este nuevo elemento, sn+1 , se sitúa en la celda sn , que ha quedado vacía
debido al desplazamiento.
Este ejemplo sigue el funcionamiento del LFSR de cuatro celdas que encontraréis repre-
sentado en la figura 3.
Como se puede ver, el estado inicial es 1010, que corresponde al impulso de reloj t = 0.
La tabla 1 muestra la evolución del LFSR en los diferentes instantes de tiempos.
s1 (t = y) = s2 (t = y – 1)
s2 (t = y) = s3 (t = y – 1)
s3 (t = y) = s4 (t = y – 1)
s4 (t = y) = s1 (t = y – 1) ⊕ s3 (t = y – 1)
Una vez definido lo que es un LFSR podemos pasar a hacer un estudio algo
más exhaustivo para determinar las características más importantes. La ven-
taja principal de los LFSR es que tienen una formulación matemática muy
simple, como veremos a continuación y, por lo tanto, se pueden estudiar de
forma bastante clara y completa. Además, como se definen por medio de cel-
das y puertas lógicas, se implementan fácilmente en el hardware, hecho que
permite obtener generadores de gran velocidad.
Primeramente hay que hacer notar que el estado inicial de un LFSR no puede
ser el cero. Si así fuera, la secuencia que produciría sería también toda de ceros,
puesto que todas las operaciones son lineales. Se dice que el estado que tan
solo tiene ceros es un estado absorbente. También conviene destacar que el
periodo máximo de un LFSR es 2n – 1. Este valor se obtiene de considerar todos
los estados posibles 2n y eliminar el estado absorbente.
C(x) = 1 + c1 x1 + c2 x2 + · · · + cn xn
C(x) = 1 + 0 · x1 + 1 · x2 + 0 · x3 + 1 · x4 = 1 + x2 + x4
L1 = 1000100110101111000 . . .
Si generamos una segunda secuencia con el mismo LFSR, pero usando los valores 1010
como estado inicial, la secuencia que se obtiene es:
L2 = 0101111000100110101 . . .
El polinomio de conexiones que hemos usado es también irreducible. Por lo tanto, las
secuencias generadas con diferentes estados iniciales son las mismas, pero con un des-
plazamiento. En efecto, podemos ver que la secuencia L2 es la secuencia L1 desplazada 9
posiciones a la izquierda:
L1 = 100010011 0101111000100110101
L2 = 0101111000100110101
Para acabar, aprovecharemos el ejemplo para mostrar por qué no podemos generar una
secuencia de periodo superior con un LFSR de 4 celdas. La tabla 2 muestra todos los
estados por los cuales pasa el LFSR a la hora de generar la secuencia L1 :
Fijaos que el estado t = 15 corresponde al estado inicial (t = 0), por cuyo motivo la
secuencia empieza a repetirse. Notad también que el LFSR pasa por quince estados dife-
rentes, que son todos los posibles estados que se pueden generar con 4 bits, exceptuando
el estado absorbente (0000). El periodo es, pues, máximo, y no hay manera de generar un
periodo superior con la estructura de un LFSR, puesto que no hay más estados posibles.
Adicionalmente, fijaos que el estado t = 9 corresponde al estado inicial con el que gene-
ramos la secuencia L2 .
Número de polinomios
primitivos
3.3 Limitaciones de los generadores lineales
No debemos olvidar que el
número de polinomios
Ya hemos puesto de relieve que los LFSR se comportan muy bien en términos
primitivos de grado n viene
de facilidad de análisis, de implementación y de velocidad. Uno de los puntos dado por la expresión
ϕ (2n – 1)/n, donde ϕ es la
función totiente de Euler.
⃝
c FUOC • PID_00235167 22 Criptografía de clave simétrica
Por lo tanto, una secuencia generada por un LFSR de longitud n tiene obvia-
Algoritmo de Massey
mente como mucho complejidad lineal n, muy baja comparada con el pe-
riodo, 2n – 1. El mismo Massey propuso un algoritmo que, a partir de una Massey propuso un algoritmo
para sintetizar el LFSR más
secuencia, determina el LFSR mínimo que la genera con el estado inicial co- corto capaz de generar una
rrespondiente. secuencia en 1969 en el
artículo “Shift-Register
Synthesis and BCH
decoding”.
Para disminuir la predictibilidad de la secuencia de cifrado es necesario, pues,
aumentar la complejidad lineal de la secuencia de cifrado, que convendría que
fuera de longitud cercana a la del periodo. Una forma de hacerlo es basándose
en operaciones no lineales, tal como veremos más adelante.
⃝
c FUOC • PID_00235167 23 Criptografía de clave simétrica
4. Generadores no lineales
.
4.1 A5
El A5 es uno de los algoritmos de cifrado en flujo que más se usan actualmen- GSM
te, en parte por su utilización para el cifrado de datos en las transmisiones GSM son las siglas de global
de la red GSM. El A5 dispone de cuatro variantes, denotadas con los nombres system for mobile
communication, la red que
A5/0, A5/1, A5/2 y A5/3. El A5/0 no usa cifrado (devuelve el mismo texto en englobaba más del 80% de
claro), el A5/1 corresponde a la versión original del algoritmo que se usa en las conexiones móviles en
2010. El uso de la red ha ido
Europa, el A5/2 es un algoritmo de cifrado más débil creado para poder cum- menguando con la aparición
plir con las regulaciones para exportar criptografía (y que se usa en los Estados de redes con más ancho de
banda, como por ejemplo el
Unidos) y el A5/3 es un algoritmo de cifrado totalmente diferente (añadido 3G o 4G.
con posterioridad). En este subapartado, describiremos el funcionamiento del
algoritmo A5/1.
El A5 empezó a utilizarse en la red GSM sin hacer pública su especificación, Principio de Kerckhoffs
siguiendo el principio de seguridad por oscuridad (en inglés, security through
Recordemos que el principio
obscurity). El uso de este paradigma está totalmente desaconsejado por los ex- de Kerckhoffs postula que un
pertos, puesto que viola el principio de Kerckhoffs. A pesar de no hacerse pú- criptosistema debe ser seguro
aunque toda la información
blico oficialmente, un primer borrador del algoritmo fue publicado en 1994 sobre el criptosistema sea
y la especificación completa fue finalmente obtenida a través de un proceso pública, exceptuando la
clave, que debe permanecer
de ingeniería inversa del firmware de un teléfono móvil y dada a conocer al privada. Es decir, la seguridad
público en 1999. de un criptosistema debe
recaer únicamente en el
secreto de la clave.
Para cifrar 228 bits más habrá que volver a reinicializar los LFSR, obtener los
nuevos 228 bits de la secuencia cifrante y hacer la XOR con los nuevos bits de
texto en claro.
La inicialización de los tres LFSR que forman el A5/1 no se limita a dar sus
valores iniciales, sino que el contenido inicial de las celdas de los LFSR se
calcula a partir de unas claves de entrada y de unas transformaciones que
describiremos más adelante. Como la inicialización de los LFSR se hace a partir
de mismo funcionamiento del sistema, pasamos primero a describir cómo se
obtienen los bits de la secuencia de cifrado.
El A5/1 tiene una estructura formada por tres LFSR, tal como se muestra en la
figura 5.
La tabla 3 detalla las longitudes de cada uno de los LFSR del A5/1, así como
sus polinomios de conexiones.
Así, por ejemplo, si en la celda 9 del primer LFSR hay un 1, y en las celdas
11 del segundo y tercero LFSR hay un 0, solo avanzarán el segundo y el tercer
LFSR, que tienen un 0. Si los tres son iguales, entonces avanzan todos. De este
modo se van obteniendo las salidas de cada uno de los LFSR que forman la
XOR, que acabará proporcionando cada bit de la secuencia de cifrado.
⃝
c FUOC • PID_00235167 25 Criptografía de clave simétrica
Se calcula a partir de la salida de los tres LFSR (los bits subrayados en los estados internos).
1) En primer lugar, se llenan todos los registros de los tres LFSR con el valor 0.
Finalmente, para cifrar una trama, se hará una XOR con los 228 bits obtenidos
de la salida de la A5/1 y los 228 bits que representan el texto en claro de la
trama.
Notad que la clave de sesión no se cambia por cada nueva trama que se quiere
cifrar, sino que se actualiza cuando la red decide volver a autenticar el dispo-
sitivo móvil.
4.2 Trivium
A diferencia del A5, el Trivium no se basa en LFSR, pero sí que está formado
por tres registros de desplazamiento, a pesar de que su realimentación no es
lineal. Es decir, las celdas que contienen los registros se desplazan a la derecha
como en un LFSR, pero su retroalimentación no está definida por una función
lineal. En la figura 7 podemos ver el esquema del Trivium.
⃝
c FUOC • PID_00235167 27 Criptografía de clave simétrica
Como se puede ver, el Trivium está formado por tres registros de desplaza-
miento, A, B y C, de 93, 84 y 111 celdas, respectivamente. La retroalimen-
tación de cada registro no es lineal y, además, la salida de cada uno de los
registros retroalimenta otro de los registros.
Por un lado, la salida del Trivium (z) viene determinada en cada instante por
las salidas de los tres registros (t a , t b , t c ):
z = ta + tb + tc
donde cada uno de los elementos son bits y, por lo tanto, la suma se realiza
módulo 2.
Cada una de las salidas t quedan determinadas por el estado de los registros
de la manera siguiente:
t a =sa93 + sa66
t b = sb84 + sb69
t c = sc111 + sc66
donde, de nuevo, todos los operandos son bits y tanto la suma como el pro-
ducto de esta expresión se realizan módulo 2.
⃝
c FUOC • PID_00235167 28 Criptografía de clave simétrica
La tabla 4 resume las acciones que realiza cada posición específica de cada uno
de los registros.
t b = sb84 + sb69 = 1 + 0 = 1
t c = sc111 + sc66 = 0 + 1 = 1
Notad que los bits involucrados en los cálculos de los valores t se encuentran subrayados
en el estado de los registros para facilitar la lectura.
z = ta + tb + tc = 0 + 1 + 1 = 0
Podemos calcular también los bits que se usarán en la retroalimentación de los registros,
para actualizar el estado:
Notad que los bits involucrados en los cálculos de los valores snews se encuentran indica-
dos en negrita en el estado de los registros para facilitar la lectura.
Los bits snew servirán para actualizar el estado interno de cada uno de los registros. A
modo de ejemplo, vemos cuál sería el estado del registro A en el instante t + 1:
4.2.1 Inicialización
Una vez se han situado estos valores en los estados de los tres registros, se
ejecutan 1152 ciclos de reloj descartando los bits de salida de estas 1152 itera-
ciones.
5. El cifrado en bloque
.
c = Ek (b)
Para asegurar que al descifrar un texto cifrado con E (con una misma clave k)
obtenemos el texto original, la función E tiene que ser invertible. Así pues, el
cifrado en bloque también disponen de una función de descifrado, que realiza
el proceso inverso de la de cifrado:
b = Dk (c)
El modo de operación más sencillo se conoce como ECB (del inglés electronic
code book) y consiste en cifrar cada uno de los bloques del mensaje en claro,
mi , de forma individual, usando la misma clave. Así, se obtienen los bloques
cifrados ci , que se concatenan para formar el texto cifrado c. La figura 9 esque-
matiza el proceso de cifrado en modo ECB.
⃝
c FUOC • PID_00235167 31 Criptografía de clave simétrica
Las propiedades principales que nos ofrece el modo ECB son las siguientes:
Para ejemplificar las consecuencias de usar el modo ECB para cifrar datos de
tamaño superior al bloque, procedemos a cifrar una imagen con este modo,
y a visualizar el texto cifrado resultante también en forma de imagen (ved la
figura 10).
ci = Ek (mi ⊕ ci–1 )
Para hacer el descifrado también hay que partir del texto cifrado anterior, y
entonces tenemos que ejecutar la operación siguiente:
Con esta estructura, el modo CBC consigue ocultar los patrones del texto en
claro mucho mejor que el modo ECB. Si repetimos el procedimiento de cifrar
la imagen del candado usando ahora el modo CBC (utilizando también el
AES), podremos observar que ahora no podemos intuir el perfil de la imagen
a partir de la imagen cifrada (ved la figura 12).
c1 = m1 ⊕ E(VI)l
Es decir, hemos desplazado los bloques de n bits hacia la izquierda para añadir
el bloque c1 y descartar el VI1 . De este modo, el segundo bloque de texto
cifrado lo obtenemos haciendo la operación siguiente:
c2 = E(VIb )l ⊕ m2
El modo CTR (del inglés, counter) es similar al OFB, puesto que también con-
vierte el criptosistema en bloque con un cifrador en flujo. La secuencia de
cifrado se genera cifrando valores sucesivos de un contador (de aquí surge su
nombre), que puede ser cualquier función que tenga un periodo grande.
6. El criptosistema AES
.
El año 1998, los criptógrafos belgas Vincent Rijmen y Joan Daemen desarro-
llaron el algoritmo llamado (en reconocimiento a los autores) criptosistema
de Rijndael. Este criptosistema fue elegido por el NIST como AES (del inglés,
advanced encryption standard) en 2000, reemplazando el DES.
De hecho, el Rijndael es una familia de algoritmos de cifrado con diferentes Medidas en bloque y en
clave
medidas en clave y en bloque. El AES es solo un subconjunto, con medida en
bloque fijada a 128 bits. El Rijndael permite múltiples
medidas en bloque y en
clave. En concreto, el Rijndael
. define bloques y claves de
medida mínima de 128 y
El criptosistema AES cifra bloques de texto en claro de 128 bits de lon- máxima de 256, aceptando
múltiples de 32 bits.
gitud. La longitud de las claves de cifrado que este criptosistema emplea
puede variar entre 128, 192 o 256 bits. Las operaciones criptográficas
se basan en un grupo finito de orden 28 .
Número de iteraciones
Figura 16. Estructura del AES
El número de iteraciones que
se muestran en la figura 16 es
n – 1, ya que la iteración final,
a pesar de ser considerada
una iteración, no contiene la
función mixColumn.
⃝
c FUOC • PID_00235167 38 Criptografía de clave simétrica
Nk = 4 Nk = 6 Nk = 8
10 12 14
La unidad básica de información con que trabaja el AES es el byte. Todas las
cadenas de bits (textos en claro y claves) se representan con matrices de bytes.
Por ejemplo, tenemos una cadena de 128 bits de texto en claro:
m = m1 m2 · · · m127 m128
a0,0 = m1 m2 m3 m4 m5 m6 m7 m8
a1,0 = m9 m10 m11 m12 m13 m14 m15 m16
···
a3,3 = m121 m122 m123 m124 m125 m126 m127 m128
Las diferentes funciones que ejecuta el AES (por ejemplo, AddRoundKey, By-
teSub, etc.) tienen como entrada y como salida una matriz de bytes como la
anterior.
Las operaciones de suma y producto de bytes que ejecuta el AES no son las
operaciones convencionales que conocemos. En concreto, el AES considera los
bytes en una representación de polinomio. Cada byte b se puede representar
con 8 bits:
b = [b7 ,b6 ,b5 ,b4 ,b3 ,b2 ,b1 ,b0 ],on bi ∈ {0,1}
⃝
c FUOC • PID_00235167 39 Criptografía de clave simétrica
∑7
b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0 = i=0 bi xi
Ejemplo de
representación
polinómica
Para simplificar la notación, representaremos los bytes en notación hexadeci-
mal. Así, el elemento 01100011 en base binaria se representará por un 63 en El byte 01100011 tiene como
representación el polinomio
base hexadecimal, puesto que 01100011(2 = 99(10 = 63(16 . x6 + x5 + x + 1.
Sean las representaciones binarias de los bytes x = (x7 ,x6 ,x5 ,x4 ,x3 ,x2 ,x1 ,x0 ) y Operación XOR
y = (y7 ,y6 ,y5 ,y4 ,y3 ,y2 ,y1 ,y0 ).
Recordad que la operación
XOR queda definida por:
1 ⊕ 0 = 0 ⊕ 1 = 1,1 ⊕ 1 =
Por un lado, definimos la operación suma:
0 ⊕ 0 = 0.
x ⊗ y = (x7 x7 + x6 x6 + x5 x5 + x4 x4 + x3 x3 + x2 x2 + x1 x + x0 )(y7 x7 + y6 x6 + y5 x5 +
y4 x4 + y3 x3 + y2 x2 + y1 x + b0 ) (mod x8 + x4 + x3 + x + 1)
x = 57(16 = 01010111(2 = x6 + x4 + x2 + x + 1
y = 83(16 = 10000011(2 = x7 + x + 1
= x7 + x6 + 1 = 11000001(2 = C1(16
. Subclaves
La función AddRoundKey hace una suma XOR de la matriz de esta- El índice i denota la subclave
de 128 bits que se usa en la
do con cada byte de la subclave K(i) correspondiente. En el caso de la i-ésima iteración teniendo en
transformación inicial, tenemos i = 0; por lo tanto, utilizamos la prime- cuenta que K(0) será la
subclave que se usará para la
ra subclave K(0). transformación inicial. Podéis
encontrar la descripción de
cómo se obtienen las
subclaves a partir de la clave
Ejemplo de cálculo de la función AddRoundKey inicial de cifrado en el
subapartado 6.7 de este
Consideramos la subclave: módulo.
Fijaos que la suma XOR de las matrices corresponde a la suma XOR de cada una de sus
entradas. Así, por ejemplo, la primera posición de la transformación vale 2B, puesto que
9D ⊕ B6 = 10011101 ⊕ 10110110 = 2B.
⃝
c FUOC • PID_00235167 41 Criptografía de clave simétrica
. Nombre de la función
ByteSub
La función ByteSub aplica una sustitución no lineal de los bytes de la
matriz de estado. La función ByteSub aparece
con esta denominación en la
propuesta inicial del
criptosistema de Rijndael. En
la publicación del AES en el
La función recibe como entrada una matriz de estado A, aplica una trans- estándar FIP-197, la función
formación S y obtiene otra matriz de estado B, de forma que bij = S(aij ). La se denomina SubBytes. Sea
cual sea el nombre que se le
transformación de cada byte de la matriz se realiza de manera independiente. da, en los dos casos es la
misma función.
Las cajas S del AES son una matriz de 256 elementos que se utiliza como tabla Tabla de consulta
de consulta. Normalmente se representan como una matriz de 16 filas y 16
Una tabla de consulta (en
columnas. Si representamos cada byte que hay que procesar con dos caracteres inglés, lookup table) es una
estructura de datos que
hexadecimales x y y, entonces el valor x indica la fila, y el valor y, la columna
sustituye una ejecución
de la posición donde se encuentra el byte resultante. algorítmica por una
operación de indexación.
Normalmente el objetivo de
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf utilizar tablas de consulta es
reducir el tiempo de
0y 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 obtención del resultado
esperado.
1y ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2y b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3y 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4y 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5y 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6y d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7y 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
8y cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9y 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
ay e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
by e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
cy ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
dy 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
ey e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
fy 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
⃝
c FUOC • PID_00235167 42 Criptografía de clave simétrica
b5 b1 b9 b5
c9 cc c5 c8
S=
17 11 1b 15
9e 99 92 9d
d5 c8 56 d5
dd 4b a6 e8
ByteSub(S) =
f 0 82 af 59
0b ee 4f 5e
Podemos realizar el cálculo de la función ShiftRow tal como se muestra en la figura 18,
dejando la fila cero de la matriz sin modificar y desplazando las filas 1, 2 y 3, una, dos y
tres posiciones, respectivamente:
d5 c8 56 d5
4b a6 e8 dd
ShiftRow(S) =
af 59 f0 82
5e 0b ee 4f
⃝
c FUOC • PID_00235167 43 Criptografía de clave simétrica
Tened en cuenta que las operaciones de suma y producto entre los elementos
de la matriz y los del vector columna son las operaciones ⊕ y ⊗ definidas en
el subapartado 6.1
Esto nos dará un vector columna de cuatro bytes determinados por los valores siguientes:
(02 ⊗ d5) ⊕ (03 ⊗ 4b) ⊕ (01 ⊗ af ) ⊕ (01 ⊗ 5e)
(01 ⊗ d5) ⊕ (02 ⊗ 4b) ⊕ (03 ⊗ af ) ⊕ (01 ⊗ 5e)
(01 ⊗ d5) ⊕ (01 ⊗ 4b) ⊕ (02 ⊗ af ) ⊕ (03 ⊗ 5e)
(03 ⊗ d5) ⊕ (01 ⊗ 4b) ⊕ (01 ⊗ af ) ⊕ (02 ⊗ 5e)
Por ejemplo, veamos cuánto vale la segunda posición del vector columna:
(“01”⊗“D5”) == (1)(x7 +x6 +x4 +x2 +1) (mod x8 +x4 +x3 +x+1) = x7 +x6 +x4 +x2 +1 → 11010101
(“01”⊗“5E”) == (1)(x6 +x4 +x3 +x2 +x) (mod x8 +x4 +x3 +x+1) = x6 +x4 +x3 +x2 +x → 01011110
Así, la transformación inicial utiliza la subclave K(0) formada por las primeras
4 palabras de W y en cada una de las Nr iteraciones se utilizan 4 palabras. De
este modo, por valores de Nk de 4, 6 y 8 se generarán, respectivamente, claves
extendidas W de 44, 52 y 60 palabras de 32 bits(que corresponden a 1408,
1664 y 1920 bits).
Wi = Ki ,∀i = 0, . . . ,Nk – 1
ción SubWord es la misma función que ByteSub (definida anteriormente). Recordad que cada carácter
La función RotWord simplemente hace una permutación cíclica a la pala- hexadecimal permite
representar 4 bits; es decir,
bra de 4 bytes, es decir, si tenemos [a0, a1, a2, a3] como entrada, la salida valores desde 0 hasta 15.
será [a1, a2, a3, a0]. Asimismo, también se usa la constante Rcon[i], que va-
le Rcon[i] = [xi–1 ,“00”,“00”,“00”]. Recordad que el polinomio x en hexadecimal
vale “02”, puesto que corresponde a la representación en binario de 00000010.
K = 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
| {z }| {z }| {z }| {z }
K0 K1 K2 K3
⃝
c FUOC • PID_00235167 46 Criptografía de clave simétrica
Con estos parámetros tenemos que el número de iteraciones es Nr = 10. Esto quiere decir
que la clave extendida W tendrá 4 · (10 + 1) = 44 palabras de 32 bits.
Denotando por K(i) la clave que se usa en la i-ésima iteración. Los primeros bytes de la
clave extendida son los mismos que los de la clave de cifrado:
W0 = 00 01 02 03
W1 = 04 05 06 07
W2 = 08 09 0A 0B
W3 = 0C 0D 0E 0F
Por lo tanto:
Estas cuatro palabras son las que se usan en la transformación inicial del algoritmo.
W4 = 00 01 02 03 ⊕ D7 AB 76 FE ⊕ 01 00 00 00 = D6 AA 74 FD
W5 =W1 ⊕ W4 = 04 05 06 07 ⊕ D6 AA 74 FD = D2 AF 72 FA
W6 =W2 ⊕ W5 = 08 09 0A 0B ⊕ D2 AF 72 FA = DA A6 78 F1
W7 =W3 ⊕ W6 = 0C 0D 0E 0F ⊕ DA A6 78 F1 = D6 AB 76 FE
6.8 Descifrado
Resumen
En cuanto al cifrado en flujo, hemos estudiado las propiedades que debe tener
una secuencia aleatoria para que se pueda utilizar como secuencia de cifrado.
Hemos presentado igualmente diferentes tipos de generadores para obtener se-
cuencias seudoaleatorias. Hemos señalado que los registros de desplazamiento
realimentados linealmente (LFSR) son los más interesantes porque son fáciles
de estudiar, a pesar de que, como ya hemos apuntado, no aconsejamos su
aplicación en criptografía, porque su criptoanálisis es muy sencillo. Finalmen-
te, hemos estudiado dos generadores que se usan hoy en día en productos
habituales, el A5 y el Trivium.
Ejercicios de autoevaluación
1. Calculad los primeros 15 bits de la secuencia de salida de un LFSR de 5 celdas que tiene
como polinomio de conexiones 1 + x2 + x5 y que se inicializa con el estado 0,0,0,1,1.
2. ¿Cuál es el periodo y la complejidad lineal máxima de las secuencias generadas por el LFSR
con polinomio de conexiones 1 + x2 + x5 ?
5. Cifrad el mismo mensaje m con la función E y la clave k = 10, usando ahora el modo de
operación CBC con el vector inicial 10.
6. Cifrad el mismo mensaje m con la función E y la clave k = 10, usando ahora el modo de
operación CFB con el vector inicial 10.
7. Cifrad el mismo mensaje m con la función E y la clave k = 10, usando ahora el modo de
operación OFB con el vector inicial 10.
8. Cifrad el mismo mensaje m con la función E y la clave k = 10, usando ahora el modo de
operación CTR con el vector inicial 10.
9. Supongamos que la clave de cifrado de 192 bits de un cifrador AES expresada en hexade-
cimal es la siguiente:
8E 73 B0 F7 DA 0E 64 52 C8 10 F3 2B 80 90 79 E5 62 F8 EA D2 52 2C 6B 7B
10. Dado un cifrador Rijndael con clave de cifrado K y un bloque de texto para cifrar B:
K = 2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C
B = 32 43 F6 A8 88 5A 30 8D 31 31 98 A2 E0 37 07 34
¿Cuántas iteraciones hay que hacer para cifrar este bloque de texto en claro con esta clave?
¿Cuál es la matriz de estado al inicio de la segunda iteración?
⃝
c FUOC • PID_00235167 50 Criptografía de clave simétrica
Solucionario
1. Teniendo en cuenta el polinomio de conexiones del LFSR, el nuevo bit se calcula haciendo
una XOR entre los bits de las celdas s4 y s1 (que se encuentran subrayados en la tabla 7) en
el instante de tiempo anterior:
6. En este caso, la medida en bloque del criptosistema es de 2 bits, por lo cual los bloques de
texto que hay que cifrar pueden ser como mucho de 2 bits. Cogemos, pues, bloques de texto
que queremos cifrar de 2 bits y procedemos a realizar el proceso de cifrado. Particionamos
el mensaje M en bloques de 2 bits y hacemos una XOR de cada bloque con el resultado de
cifrar el bloque anterior, utilizando el vector inicial como bloque anterior para la primera
iteración. Ved todo el proceso en la tabla 9.
7. En este caso, la medida en bloque del criptosistema es de 2 bits, por lo cual los bloques
de texto que se quieren cifrar pueden ser como mucho de 2 bits. Cogemos, pues, bloques
de texto que se quieren cifrar de 2 bits y procedemos a realizar el proceso de cifrado. Parti-
cionamos el mensaje M en bloques de 2 bits y hacemos una XOR de cada bloque Mi con el
resultado de cifrar vi , donde vi = E(vi–1 ), con v0 = VI. Ved todo el proceso en la tabla 10.
9. Dado que la clave de cifrado es de 192 bits, el número de palabras de 32 bits de la clave
vale Nk = 6; por lo tanto, tendremos que aplicar el algoritmo para el caso Nk ≤ 6.
⃝
c FUOC • PID_00235167 52 Criptografía de clave simétrica
Los primeros bits de la clave extendida son exactamente los mismos bits de la clave de
cifrado:
W0 = 8E 73 B0 F7
W1 = DA 0E 64 52
W2 = C8 10 F3 2B
W3 = 80 90 79 E5
W4 = 62 F8 EA D2
W5 = 52 2C 6B 7B
Por lo tanto:
K(0) = W0 W1 W2 W3 W4 W5 =
=K
W6 = 8E 73 B0 F7 ⊕ 71 7F 21 00 ⊕ 01 00 00 00 = 8E 73 B0 F7 ⊕ 70 7F 21 00 = FE 0C 91 F7
W7 =W1 ⊕ W6 = DA 0E 64 52 ⊕ FE 0C 91 F7 = 24 02 F5 A5
W8 =W2 ⊕ W7 = C8 10 F3 2B ⊕ 24 02 F5 A5 = EC 12 06 8E
W9 =W3 ⊕ W8 = 80 90 79 E5 ⊕ EC 12 06 8E = 6C 82 7F 6B
W10 =W4 ⊕ W9 = 62 F8 EA D2 ⊕ 6C 82 7F 6B = 0E 7A 95 B9
K(1) = FE 0C 91 F7 24 02 F5 A5 EC 12 06 8E 6C 82 7F 6B 0E 7A 95 B9 5C 56 FE C2
10. Habrá que hacer diez iteraciones para cifrar este bloque de texto en claro, puesto que la
longitud de la clave es de 16 bytes; por lo tanto, Nk = 4.
En la transformación inicial se aplica la transformación AddRoundKey. En nuestro caso:
32 88 31 e0 2b 28 ab 09 19 a0 9ae9
43 5a31 37 7e ae f7 cf 3d f4 c6 f 8
AddRoundKey(S,K(0)) =
⊕
=
= S1
f 6 30 98 07 15 d2 15 4f e3 e2 8d 48
a8 8d a2 34 16 a6 88 3c b3 2b 2a08
19 a0 9a e9 d4 e0 b8 1e
3d f4 c6 f 8 41
ByteSub = 27 bf b4 = S2
e3 e2 8d 48 11 98 5d 52
b3 2b 2a 08 ae f1 e5 30
El resultado de la función ShiftRow sobre la matriz de estado S2 es:
d4 e0 b8 1e d4 e0 b8 1e
27 bf b4 41 bf b4 41 27
ShiftRow
=
= S3
11 98 5d 52 5d 52 11 98
ae f1 e5 30 30 ae f1 e5
El resultado de la función MixColumns sobre la matriz de estado S3 es:
d4 e0 b8 1e 04 e0 48 28
bf b4 41 27
MixColumns = 66 cb f 8 06 = S4
5d 52 11 98 81 19 d3 26
30 ae f1 e5 e5 9a 7a 4c
Calculamos el valor de la clave de la segunda iteración:
a0 88 23 2a
fa 54 a3 6c
fe 2c 39 76
17 b1 39 05
Finalmente, el resultado de la función AddRoundKey sobre la matriz de estado S4 resulta:
04 e0 48 28 a0 88 23 2a a4 68 6b 02
66 cb f 8 06 fa 54 a3 6c 9c 9f 5b 6a
⊕ =
81 19 d3 26 fe 2c 39 76 7f 35 ea 50
e5 9a 7a 4c 17 b1 39 05 f2 2b 43 49
Así, el valor de la matriz de estado al inicio de la segunda iteración valdrá:
a4 68 6b 02
9c 9f 5b 6a
S=
7f 35 ea 50
f2 2b 43 49
⃝
c FUOC • PID_00235167 54 Criptografía de clave simétrica
Glosario
A5 m Familia de algoritmos de cifrado en flujo utilizada en la red GSM.
cipher block chaining m Modo de operación del cifrado en bloque en el que no se cifra
directamente cada bloque de texto en claro, sino que primero se aplica una XOR con el
bloque cifrado anterior.
sigla CBC
cipher feedback m Modo de operación del cifrado en bloque que usa el cifrador en bloque
como generador seudoaleatorio utilizando cada bloque cifrado para realimentar el cifrado
del bloque siguiente.
sigla CFB
complejidad lineal de una secuencia f Número de celdas del LFSR más corto que es capaz
de generarla.
counter m Modo de operación del cifrado en bloque que usa el cifrador en bloque como
generador seudoaleatorio, generando la secuencia cifrante a partir de cifrar un contador.
sigla CTR
criptosistema en bloque m Sistema de cifrado de clave simétrica que procesa los bits de
entrada en bloques de un tamaño predeterminado de bits.
electronic code book m Modo de operación del cifrado en bloque en que cada bloque de
entrada se cifra de manera individual, usando la misma clave.
generador lineal m Generador de secuencias de bits que solo ejecuta operaciones lineales
sobre los elementos de entrada para obtener la secuencia de salida.
global system for mobile communication m Red que englobaba más del 80% de las conexio-
nes móviles en 2010.
output feedback m Modo de operación del cifrado en bloque que usa el cifrador en bloque
como generador seudoaleatorio, usando la salida del cifrador a cada iteración para realimen-
tar el cifrado del bloque siguiente.
periodo m En una secuencia {si }i≥0 periódica, entero más pequeño p tal que si+p = si para
todo i ≥ 0.
Bibliografía
Cannière, C. de; Preneel, B. (2005). Trivium Specifications. Lovaina: Universidad Católica de
Lovaina.
Daemen, J.; Rijmen, V. (2002). The Design of Rijndael, AES - The Advanced Encryption Standard
(pág. 238). Springer-Verlag.
Massey, J. L. (1969). “Shift-register synthesis and BCH decoding”. IEEE transactions donde
Information Theory (vol. 15, núm. 1, págs. 122-127).
Menezes, A.; Oorschot, P. van; Vanstone, S. (1996). Handbook of Applied Cryptography. Flo-
rida: CRC Press. <http://cacr.uwaterloo.ca/hac/>
Paar, C.; Pelzl, J. (2009). Understanding Cryptography: A Textbook for Students and Practitioners.
Nueva York: Springer.
Rukhin, A.; Soto, J.; Nechvatal, J. y otros (2010). A Statistical Test Suite for Random and
Pseudorandom Number Generators for Cryptographic Applications. Maryland: Instituto Nacional
de Estándares y Tecnología.
<http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf>
Stockinger, T. (2005). GSM network and its privacy - the A5 stream cipher.