Permutacion
Permutacion
Permutacion
Ecuador.
Los derechos de autor han sido entregados a la ESCUELA POLITCNICA
NACIONAL bajo el libre consentimiento del (los) autor(es).
Al consultar esta tesis deber acatar con las disposiciones de la Ley y las
siguientes condiciones de uso:
Cualquier uso que haga de estos documentos o imgenes deben ser slo para
efectos de investigacin o estudio acadmico, y usted no puede ponerlos a
disposicin de otra persona.
Usted deber reconocer el derecho del autor a ser identificado y citado como el
autor de esta tesis.
No se podr obtener ningn beneficio comercial y las obras derivadas tienen
que estar bajo los mismos trminos de licencia que el trabajo original.
El Libre Acceso a la informacin, promueve el reconocimiento de la originalidad de
las ideas de los dems, respetando las normas de presentacin y de citacin de
autores con el fin de no incurrir en actos ilegtimos de copiar y hacer pasar como
propias las creaciones de terceras personas.
Respeto hacia s mismo y hacia los dems.
ii
DECLARACIN
Nosotros, Mara Fernanda Granda Galarza y Verlaine Leandro Reina Prez,
declaramos bajo juramento que el trabajo aqu descrito es de nuestra autora;
que no ha sido previamente presentada para ningn grado o calificacin
profesional; y, que hemos consultado las referencias bibliogrficas que se
incluyen en este documento.
A travs de la presente declaracin cedemos nuestros derechos de propiedad
intelectual correspondientes a este trabajo, a la Escuela Politcnica Nacional,
segn lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por
la normatividad institucional vigente.
__________________________
Mara Fernanda Granda Galarza
__________________________
Verlaine Leandro Reina Prez
iii
CERTIFICACIN
Certifico que el presente trabajo fue desarrollado por Mara Fernanda Granda
Galarza y Verlaine Leandro Reina Prez, bajo mi supervisin.
________________________________
Ing. Robin lvarez Rueda, MSc, PhD
DIRECTOR DEL PROYECTO
iv
AGRADECIMIENTO
A mis padres, hermanos y sobrino por el apoyo incondicional en cada momento
de mi vida.
A mi compaero de Tesis, por todo este tiempo juntos.
A nuestro Director de Proyecto: Dr. Robn lvarez, por creer en este trabajo.
Mara Fernanda.
AGRADECIMIENTO
A mi madre, mis abuelitos
difciles.
A mi compaera de tesis, por toda la dedicacin y empeo para sacar adelante el
proyecto.
Al PhD Robn lvarez, por brindarnos su apoyo incondicional.
A mis amigos, por todos los momentos compartidos en la Escuela Politcnica
Nacional.
Leandro.
vi
DEDICATORIA
Mara Fernanda.
vii
DEDICATORIA
Leandro.
viii
NDICE DE CONTENIDOS
DECLARACIN ........................................................................................................... ii
CERTIFICACIN ........................................................................................................ iii
AGRADECIMIENTO .................................................................................................... iv
AGRADECIMIENTO ..................................................................................................... v
DEDICATORIA ............................................................................................................ vi
DEDICATORIA ........................................................................................................... vii
RESUMEN ................................................................................................................ xix
PRESENTACIN ....................................................................................................... xx
CONTENIDO
CAPTULO 1 ........................................................................................................................... . 1
INTRODUCCIN ....................................................................................................................... 1
1.1 CONCEPTOS .................................................................................................... 1
1.2 CLASIFICACIN DE CRIPTOSISTEMAS ......................................................... 1
1.2.1
ix
xi
xii
NDICE DE FIGURAS
CAPTULO 1 .............................................................................................................. 1
Figura 1-1. Sistemas de cifrado clsico. ...................................................................... 2
Figura 1-2 Distribucin de las letras en un texto comn en espaol. ........................ 3
Figura 1-3. Distribucin de las letras en un texto comn en ingls. ........................... 3
Figura 1-4. Texto en espaol. Libro: El mundo y sus demonios, pags: 43-44. ........... 4
Figura 1-5. Resultado de distribucin de letras de un texto en espaol. ................... 5
Figura 1-6. Texto en ingls. Libro: The Demon-Haunted, pags: 27-28...................... 6
Figura 1-7. Resultado de distribucin de letras en ingls. .......................................... 6
Figura 1-8. Alfabeto cifrado Csar. .............................................................................. 6
Figura 1-9. Ejemplo cifrado Csar. .............................................................................. 7
Figura 1-10. Resultado criptoanlisis cifrado Csar. ................................................... 8
Figura 1-11. Cifrado polialfabtico............................................................................... 9
Figura 1-12. Representacin grfica del cifrado Vernam. ........................................ 10
Figura 1- 13. Ejemplo cifrado Vigenre. .................................................................... 12
Figura 1-14. Funcionamiento cifrado Vigenre.......................................................... 12
Figura 1-15. Resultado cifrado Vigenre. .................................................................. 13
Figura 1-16. Funcionamiento descifrado Vigenre. ................................................... 13
Figura 1-17. Ejemplo de descifrado Vigenre. .......................................................... 13
Figura 1-18. Sistemas de cifrado moderno................................................................ 15
Figura 1-19. Cifrado simtrico. .................................................................................. 16
Figura 1-20. Red clsica de Feistel. .......................................................................... 17
Figura 1-21. Modo EBC. ........................................................................................... 18
Figura 1-22. Modo CBC. .......................................................................................... 19
Figura 1-23. Cifrado asimtrico. ................................................................................ 20
CAPTULO 2 ............................................................................................................ 22
Figura 2-1. Representacin grfica del cifrado S-DES. ............................................. 22
Figura 2-2. Diagrama de flujo de la permutacin P10. ............................................. 24
Figura 2-3. Diagrama del desplazamiento shift1 y shift2. .......................................... 25
Figura 2-4. Diagrama de flujo del desplazamiento shift1. .......................................... 26
xiii
Figura 2-5. Diagrama de la permutacin P8, para obtener la subllave Ks1. ............. 28
Figura 2-6. Diagrama de flujo shift2. ......................................................................... 29
Figura 2-7. Representacin detallada del proceso de cifrado S-DES. ..................... 30
Figura 2-8. Diagrama de flujo de la permutacin inicial PI. ....................................... 32
Figura 2-9. Diagrama de flujo de la permutacin E/P. ............................................... 34
Figura 2-10. Valores n1, n2, n3, n4, correspondientes a la permutacin E/P. .......... 34
Figura 2-11. Operacin xor....................................................................................... 35
Figura 2-12. Asignacin de valores de las cajas S0 yS1. ....................................... 36
Figura 2-13. Diagrama de flujo de la sustitucin S0 yS1. ......................................... 37
Figura 2-14. Diagrama de flujo correspondiente a la permutacin P4....................... 39
Figura 2-15. Diagrama de flujo de la permutacin PI-1. ............................................. 42
Figura 2-16. Interfaz grfica S-DES. ......................................................................... 42
Figura 2-17. Diagrama de flujo Interfaz grfica S-DES. ............................................ 43
Figura 2-18. Diseo de un sistema de cifrado usando S-DES. ................................. 44
Figura 2-19. Esquema RTL de la entidad SDES. ..................................................... 45
Figura 2-20. Esquema RTL interno de la entidad SDES. ......................................... 46
Figura 2-21. Esquema RTL interno de la entidad llave_Expansion. ......................... 48
Figura 2-22. Simulacin entidad llave_Expansion. ................................................... 50
Figura 2-23. Esquema RTL interno de la entidad cifrador. ....................................... 51
Figura 2-24. Esquema RTL interno de la entidad FK. ............................................... 52
Figura 2-25. Simulacin entidad cifrador. .................................................................. 53
Figura 2-26. Esquema RTL del sistema de cifrado S-DES. ...................................... 53
Figura 2-27. Transmisin de un byte. ........................................................................ 54
Figura 2-28. Esquema RTL de la entidad uart. ......................................................... 54
Figura 2-29. Diagrama RTL interno de la entidad uart .............................................. 55
Figura 2-30. Diagrama ASM de la mquina de estados del receptor. ....................... 56
Figura 2-31. Cifrado DES. ......................................................................................... 61
Figura 2-32. Permutacin PC-1. ............................................................................... 62
Figura 2-33. Diagrama de flujo correspondiente a la permutacin PC1. .................. 64
Figura 2-34. Representacin grfica del desplazamiento a la izquierda. ................. 65
Figura 2-35. Ci-1 y Di-1. ............................................................................................ 65
Figura 2-36. Desplazamiento Ci-1 y Di-1. ................................................................. 66
Figura 2-37. Agrupacin LCST. .................................................................................. 66
xiv
xv
xvi
xvii
Figura 4-16. Archivo .UCF de asignacin de pines en el dispositivo FPGA. ........... 175
Figura 4-17. Ubicacin de puertos del sistema de cifrado AES............................... 176
Figura 4-18. Ejemplo prctico: sistema de cifrado AES usando un dispositivo
FPGA. ..................................................................................................................... 177
Figura 4-19. Ingreso texto plano para el proceso de cifrado AES en openssl. ........ 178
Figura 4-20. Resultado cifrado AES en openssl. ..................................................... 179
xviii
NDICE DE TABLAS
CAPTULO 1 .............................................................................................................. 1
Tabla 1-1. Tabla de datos de un texto en espaol ...................................................... 4
Tabla 1-2. Tabla de datos de un texto en ingls.......................................................... 5
Tabla 1-3. Cdigo Baudot. [1.1].................................................................................. 9
Tabla 1-4. Ejemplo cifrado Vernam. .......................................................................... 10
Tabla 1-5. Ejemplo descifrado Vernam. .................................................................... 11
Tabla 1-6. Tabla de Vigenre. [1.5] .......................................................................... 11
CAPTULO 2 ............................................................................................................ 22
Tabla 2-1. Permutacin P10. [2.1] ............................................................................. 26
Tabla 2-2. Permutacin P8. [2.1] ............................................................................... 26
Tabla 2-3. Permutacin Inicial PI. [2.1] ..................................................................... 31
Tabla 2-4. Permutacin E/P. [2.1] ............................................................................ 33
Tabla 2-5. Permutacin P4. [2.1] .............................................................................. 38
Tabla 2-6. Permutacin PI-1. [2.1] ........................................................................... 41
Tabla 2-7. Permutacin PC1. [2.1] ............................................................................ 63
Tabla 2-8. Permutacin PC2. [2.1] ............................................................................ 68
Tabla 2-9. Valor de desplazamiento para generacin de subllaves. ......................... 70
Tabla 2-10. Permutacin IP. [2.1] .............................................................................. 73
Tabla 2-11. Permutacin EP. [2.1] ............................................................................ 76
Tabla 2-12. Cajas S del algoritmo DES. .................................................................... 79
Tabla 2-13. Resultado cajas S del algoritmo DES..................................................... 80
Tabla 2-14. Permutacin P. [2.1] ............................................................................... 82
Tabla 2-15. Permutacin IP-1. [2.1] ........................................................................... 85
CAPTULO 3 ............................................................................................................ 90
Tabla 3-1. Valores hexadecimales. ........................................................................... 94
Tabla 3-2. Valores de Nk y Nr. .................................................................................. 96
Tabla 3-3. Caja-S.
xix
RESUMEN
su
simulacin
en
MatLab,
exponindolos
de
forma
didctica.
xx
PRESENTACIN
Este proyecto presenta el estudio, simulacin de S-DES, DES y AES, usando
MatLab, as como los procesos de descripcin VHDL, sntesis e implementacin
en un FPGA, del cifrado S-DES y el estndar AES.
El desarrollo de este proyecto se divide en cinco captulos:
Captulo 1: Introduccin. Este captulo comienza presentando una breve
descripcin de los estndares de cifrado desde los tradicionales hasta los
modernos. El estudio se realiza en orden cronolgico al desarrollo y evolucin de
los estndares de cifrado, as como una descripcin didctica de los estndares
ms representativos.
Captulo 2: S-DES y DES. Se expone inicialmente el cifrado S-DES, de una forma
introductoria, realizando cada una de las etapas de cifrado y desarrollando paso a
paso un ejemplo, adicionalmente se realiza el diseo e implementacin de este
cifrado en el dispositivo FPGA. Continuando con el desarrollo del captulo, se
realiza el estudio del estndar DES y se detalla el proceso para la implementacin
en MatLab.
Captulo 3: AES. El captulo inicia con el estudio del estndar AES y su desarrollo
en MatLab, es importante indicar que el fundamento matemtico para este estudio
se detalla en los anexos 9 y 10; a continuacin se explica el diseo, para la
implementacin en hardware del estndar, as como el proceso de sntesis. Por
ltimo se realizan las pruebas de comprobacin de resultados.
Captulo 4: PRUEBAS Y RESULTADOS. Se expone inicialmente el resultado de
un ejemplo prctico para la implementacin del cifrado S-DES en MatLab y luego
se desarrolla el mismo ejemplo para la implementacin en el dispositivo FPGA; a
continuacin se expone un ejemplo para el cifrado DES en MatLab y la respectiva
comprobacin de resultados. Por ltimo se realiza el mismo procedimiento para el
estndar AES en MatLab y VHDL.
xxi
CAPTULO 1
INTRODUCCIN
1.1 CONCEPTOS
Esta seccin define los conceptos bsicos de cifrado:
la llave,
TRANSPOSICIN
SUSTITUCIN
GRUPOS
MONOALFABTICA
POLIALFABTICA
ESCTALA
NO PERIDICA
SERIE
COLUMNAS
MONOGRMICA
POLIGRMICA
PERIDICA
VERNAM
FILAS
LINEALES
DIGRMICA
N-GRMICA
PLAYFAIR
HILL
PROGRESIVOS
ENIGMA
ALFABETO
ESTNDAR
ALFABETO
MIXTO
ALFABETO
ESTNDAR
ALFABETO
MIXTO
VIGENRE
OTROS
CSAR
OTROS
Fuente [1.1]
Figura 1-1. Sistemas de cifrado clsico.
Las tcnicas de cifrado clsico fueron descartadas ya que se encontraron
vulnerabilidades por medio del criptoanlisis.
1.2.1.1
Transposicin
La transposicin consiste en cambiar el orden de los datos del texto plano. Los
cifradores por transposicin se desarrollaron en la antigedad, siendo el ms
conocido el desarrollado por los espartanos:
Esctala.
1.2.1.2
Sustitucin
En los cifradores por sustitucin los elementos del texto plano, son cambiados por
otros elementos. De la clasificacin que se observa en la figura 1-1 para el
mtodo de sustitucin se explicar el funcionamiento los siguientes tipos de
cifrado:
Carl Sagan
Pgina
43-44
Total de letras
2402
Yo fui nio en una poca de esperanza. Quise ser cientfico desde mis primeros das de escuela. El momento en que cristaliz mi deseo lleg
cuando capt por primera vez que las estrellas eran soles poderosos, cuando constat lo increblemente lejos que deban de estar para aparecer
como simples puntos de luz en el cielo. No estoy seguro de que entonces supiera siquiera el significado de la palabra ciencia, pero de alguna manera
quera sumergirme en toda su grandeza. Me llamaba la atencin el esplendor del universo, me fascinaba la perspectiva de comprender cmo
funcionan realmente las cosas, de ayudar a descubrir misterios profundos, de explorar nuevos mundos... quiz incluso literalmente. He tenido la
suerte de haber podido realizar este sueo al menos en parte. Para m, el romanticismo de la ciencia sigue siendo tan atractivo y nuevo como lo fuera
aquel da, hace ms de medio siglo, que me ensearon las maravillas de la Feria Mundial de 1939.
Popularizar la ciencia intentar hacer accesibles sus mtodos y descubrimientos a los no cientficos es algo que viene a continuacin, de manera
natural e inmediata. No explicar la ciencia me parece perverso. Cuando uno se enamora, quiere contarlo al mundo. Este libro es una
declaracin personal que refleja mi relacin de amor de toda la vida con la ciencia.
Pero hay otra razn: la ciencia es ms que un cuerpo de conocimiento, es una manera de pensar. Preveo cmo ser la Amrica de la poca
de mis hijos o nietos: Estados Unidos ser una economa de servicio e informacin; casi todas las industrias manufactureras clave se habrn
desplazado a otros pases; los temibles poderes tecnolgicos estarn en manos de unos pocos y nadie que represente el inters pblico se
podr acercar siquiera a los asuntos importantes; la gente habr perdido la capacidad de establecer sus prioridades o de cuestionar con
conocimiento a los que ejercen la autoridad; nosotros, aferrados a nuestros cristales y consultando nerviosos nuestros horscopos, con las
facultades crticas en declive, incapaces de discernir entre lo que nos hace sentir bien y lo que es cierto, nos iremos deslizando, casi sin darnos cuenta, en
la supersticin y la oscuridad.
La cada en la estupidez de Norteamrica se hace evidente principalmente en la lenta decadencia del contenido de los medios de
comunicacin, de enorme influencia, las cuas de sonido de treinta segundos (ahora reducidas a diez o menos), la programacin de nivel nfimo, las
crdulas presentaciones de pseudociencia y supersticin, pero sobre todo en una especie de celebracin de la ignorancia. En estos momentos, la pelcula
en vdeo que ms se alquila en Estados Unidos es Dumb and Dumber. Beavis y Buttheadi siguen siendo populares (e influyentes) entre los jvenes
espectadores de televisin. La moraleja ms clara es que el estudio y el conocimiento no slo de la ciencia, sino de cualquier cosa son
prescindibles, incluso indeseables.
Fuente [1.3]
Figura 1- 4. Texto en espaol. Libro: El mundo y sus demonios, pags: 43-44.
Los resultados de la distribucin de letras del texto en espaol se muestran en la
figura 1-5.
344
350
300
245
250
200
149
133 128
150
125
93 99
100
50
200
191
184
171
70
11
24
9 17 15 13
62
15 6
20
23
21
1
14 13
0
a b c d e f g h i j l m n o p q r s t u v x y z
Letras
Autor
Carl Sagan
Pgina
27-28
Total de letras
2070
Fuente [1.4]
Figura 1-6. Texto en ingls. Libro: The Demon-Haunted Worls, pags: 27-28.
Nmero de repeticiones
300
250
200
150
256
100
188
161
154
50
64
87
76
45
31
g h
144
109
87
57
45
0
a b c d e
174
154
12
60
38
l m n o p q
54
24
43
3
u v w x
Letras
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Alfabeto cifrado
Figura 1-8. Alfabeto cifrado Csar.
3 desplazamientos a la derecha
Llave
Texto cifrado
Generalizando se tiene:
C = E(P) = (P + k) mod 27
P = D(C) = (C - k) mod 27
Donde k representa la llave del descifrado es decir el nmero de posiciones
desplazadas que para el ejemplo se puede tomar valores entre 1 y 26. Por
lo tanto para conocer el texto plano sin conocer la llave k lo que se debe
hacer es ensayar de 1 a 26 posibilidades que tiene la llave k, como se
observa en la figura 1-10.
Texto cifrado
k=1
k=2
k=3
Cdigo
Carcter
Binario
Cdigo
Carcter
Binario
Cdigo
Carcter
Binario
Cdigo
Carcter
Binario
00000
Blanco
01000
<
10000
11000
00001
01001
10001
11001
00010
01010
10010
11010
00011
01011
10011
11011
00100
Espacio
01100
10100
11100
00101
01101
10101
11101
00110
01110
10110
11110
00111
01111
10111
11111
10
[1.1]
Figura 1-12. Representacin grfica del cifrado Vernam.
El cifrado Vernam es la base fundamental para los algoritmos simtricos, ya que
estos
Llave: SOL
Operacin
Resultado
Llave
Xor
Xor
HS
10100 00101
10001
OO
11000 11000
00000
Blanco
LL
10010 10010
00000
Blanco
AS
00011 00101
00110
EspacioO
00100 11000
11100
ML
11100 10010
01110
US
00111 00101
00010
NO
01100 11000
10100
DL
01001 10010
11011
11000 00101
11101
OS
Texto cifrado
11
Llave: SOL
Operacin
Resultado
Texto
llave
Xor
Xor
plano
ZS
10001 00101
10100
Blanco O
00000 11000
11000
Blanco L
00000 10010
10010
I S
00110 00101
00011
MO
11100 11000
00100
Espacio
NL
01110 10010
11100
=S
00010 00101
00111
HO
10100 11000
01100
11011 10010
01001
11101 00101
11000
XS
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
12
La figura 1-13, est formada por una serie de desplazamientos tipo cifrado
Csar.
Se hace corresponder a cada letra del texto plano, las letras de la llave, las
veces que fueran necesarias, hasta completar el texto plano como se
observa a continuacin:
Texto plano
Llave
Texto plano
13
Llave
Texto cifrado
Texto plano
Llave
Llave
Texto cifrado
14
creando el
estndar DES para cifrar mensajes de texto, archivos de un disco duro, registros
de una base de datos y en general para cifrar grandes cantidades de datos.
El estudio del cifrado moderno se realizar en base a la figura 1-18, y haciendo
referencia a los mtodos ms utilizados.
1.2.2.1 Cifrado en flujo
El cifrado en flujo es un algoritmo, que realiza el cifrado incrementalmente,
convirtiendo el texto plano en un texto ilegible. Esto se logra construyendo un
generador de flujo de llave.
Un flujo de llave es una secuencia de bits de tamao arbitrario que puede
emplearse para oscurecer los contenidos de un conjunto de datos, combinando el
flujo de llave y de datos mediante la funcin XOR. Si el flujo de llave es seguro, el
de datos cifrados tambin lo ser. [1.7]
En este trabajo no se dar ms detalles ya que este estudio se basar en el
cifrado en bloque.
15
CIFRADO MODERNO
CIFRADO EN FLUJO
A5
RC4
CIFRADO EN BLOQUE
SIMTRICO
ASIMTRICO
EXPONENCIACIN
SUMA / PRODUCTO
RSA
ElGamal
CURVAS
ELPTICA
DES
3DES
IDEA
AES
Fuente [1.1]
Figura 1-18. Sistemas de cifrado moderno.
1.2.2.2 Cifrado en bloque
Un cifrado en bloque, procesa el texto plano en bloques. La longitud del bloque
depende de la tcnica de cifrado que se utilice.
CIFRADO SIMTRICO
En el cifrado simtrico, se utiliza un algoritmo de cifrado con una llave para cifrar
el texto plano. Para descifrar el texto cifrado se usa la misma llave de cifrado. A
este tipo de cifrado tambin se lo conoce como cifrado de llave secreta. La
seguridad del cifrado simtrico, depende de la privacidad de la llave, mas no de la
privacidad del algoritmo de cifrado, el cual es pblico. Una representacin grfica
se indica en la figura 1-19.
Algunos ejemplos de cifrado simtrico son:
16
DESCIFRADOR
CIFRADOR
Llave cifrador
Algoritmo de
cifrado
#%& /($I
#%& /($I
#%& /($I
#%& /($I
#%& /($I
Texto plano
texto
texto
texto
texto
plano
plano
plano
plano
Texto Cifrado
Llave cifrador
#%& /($I
#%& /($I
#%& /($I
#%& /($I
#%& /($I
Algoritmo de
descifrado
Texto plano
texto
texto
texto
texto
Texto Plano
Texto Cifrado
Texto Plano
Una llave K.
Las dos mitades del texto plano (L0 y R0), pasan a travs de n etapas de
procesamiento y, a continuacin, se combinan para producir el bloque de texto
cifrado.
Cada etapa tiene como entradas Li-1 y Ri-1, derivadas de la etapa anterior, as
como una subllave Ki, que se deriva de K. En general, las subllaves Ki son
diferentes de K.
plano
plano
plano
plano
17
L0
Etapa 1
w bits
w bits
R0
K1
L1
R1
Ki
Etapa i
Li
Ri
Etapa n
Kn
Ln
Rn
Rn+1
Ln+1
[1.7]
18
Texto Plano
Texto Plano
Bloque de Cifrado
Texto Cifrado
Texto Plano
Bloque de Cifrado
Texto Cifrado
Bloque de Cifrado
Texto Cifrado
ECB Cifrado
Texto Cifrado
Bloque de Descifrado
Texto Cifrado
Texto Cifrado
Texto Plano
Bloque de Descifrado
Texto Plano
Bloque de Descifrado
Texto Plano
ECB Descifrado
Fuente [1.8]
Figura 1-21. Modo EBC.
19
Texto Plano
Texto Plano
Texto Plano
Vector (IV)
Bloque de Cifrado
Texto Cifrado
Bloque de Cifrado
Texto Cifrado
Texto Cifrado
CBC Cifrado
Vector (IV)
Bloque de Descifrado
Texto Cifrado
Texto Cifrado
Texto Cifrado
Bloque de Descifrado
Texto Plano
Texto Plano
Bloque de Cifrado
Bloque de Descifrado
Texto Plano
CBC Descifrado
Fuente [1.8]
Figura 1-22. Modo CBC.
Entre otros modos de operacin de Cifrado en bloque se puede nombrar:
CIFRADO ASIMTRICO
En el cifrado asimtrico se usa un algoritmo de cifrado, y dos llaves, una pblica
para el proceso de cifrado, y una llave privada para el proceso de descifrado. La
llave pblica es conocida por todo el mundo, mientras que la privada es conocida
solo por el usuario. Una representacin grfica se indica en la figura 1-23.
20
DESCIFRADOR
CIFRADOR
Llave Pblica
Algoritmo de
cifrado
#%& /($I
#%& /($I
#%& /($I
#%& /($I
#%& /($I
Texto plano
texto
texto
texto
texto
plano
plano
plano
plano
Texto Plano
Texto Cifrado
Texto plano
Llave Privada
#%& /($I
#%& /($I
#%& /($I
#%& /($I
#%& /($I
Texto Cifrado
Algoritmo de
descifrado
texto
texto
texto
texto
plano
plano
plano
plano
Texto Plano
21
REFERENCIAS
[1.1] (2011) Libro Electrnico Seguridad en Redes. [Online]. Disponible:
http://www.lpsi.eui.upm.es/SInformatica/diapositivas.htm
[1.2] (2011) Anlisis de Frecuencias. [Online]. Disponible:
http://es.wikipedia.org/wiki/An%C3%A1lisis_de_frecuencia
[1.3] C. Sagan, El mundo y sus demonios. Segunda Edicin, 1997.
[1.4] C. Sagan, The Demon-Haunted Word. Primera Edicin, 1996.
[1.5] (2011) The Vigenre Chiper. [Online]. Disponible:
http://www.cs.trincoll.edu/~crypto/historical/vigenere.html
[1.6] (2011) Cifrado en Flujo. [Online]. Disponible:
http://es.wikipedia.org/wiki/Cifrador_de_flujo
[1.7] W. Stallings, Fundamentos de Seguridad en Redes, Aplicaciones y
Estndares. Segunda Edicin, Madrid, 2004.
[1.8] (2011) Modos de operacin de una unidad de cifrado por bloques. [Online].
Disponible:.http://es.wikipedia.org/wiki/Modos_de_operaci%C3%B3n_de_un
a_unidad_de_cifrado_por_bloques
22
CAPTULO 2
ESTNDAR DE CIFRADO DE DATOS (DES) Y ESTNDAR
SIMPLE DE CIFRADO DE DATOS (S-DES)
2.1 S-DES
S-DES (Simplified Data Encryption Standard), es una versin reducida del
estndar DES (Data Encryption Standard). Tiene propiedades similares a DES
pero este abarca un texto plano ms reducido. El proceso de cifrado, generacin
de subllaves y descifrado siguen el esquema de la figura 2-1.
CIFRADO
Ks1
P8
PI-1
Ks1
Shift 2
SW
fk
Shift 1
PI
fk
P10
DESCIFRADO
Ks2
P8
fk
SW
Ks2
fk
PI-1
PI
Fuente [2.1]
Figura 2-1. Representacin grfica del cifrado S-DES.
2.1.1 GENERACIN DE SUBLLAVES Ks1 Y Ks2
Como se indica en la figura 2-1, la etapa de generacin de las subllaves consiste
en generar a partir de la llave inicial K, dos subllaves. En esta etapa se realizan
23
Permutacin P10
Shift 1
Permutacin P8
Shift 2
10
24
Ejemplo:
Llave permutada = P10 (K)
Llave permutada = P10 (0 1 0 0 0 0 0 1 0 1)
Llave permutada = 0 0 1 0 0 1 0 0 1 0
Diagrama de flujo de la permutacin P10
El diagrama de flujo correspondiente a la permutacin P10 se muestra en la figura
2-2.
Leer llave K
KK1,K2,K3,K4,K5,K6,K7,K8,K9,K10
P10 = K3,K5,K2,K7,K4,K10,K1,K9,K8,K6
Escribir resultado de
la permutacin P10
25
P10
LS11
LS12
SHIFT 1
P8
Ks1
LS21
LS22
SHIFT 2
P8
Ks2
26
Inicio Shift1
Leer P10
P10 P1,P2,P3,P4,P5,P6,P7,P8,P9,P10
LS11 = P2,P3,P4,P5,P1
LS12 = P7,P8,P9,P10,P6
Shift1 = [LS11,LS12]
Escribir Shift1
Fin Shift1
2.1.1.3 Permutacin P8
Siguiendo la figura 2-1, se realiza la permutacin P8, a los diez bits resultantes de
shift1, segn la regla del algoritmo definida en la tabla 2-2. La subllave Ks1, se
obtiene despus de realizar la permutacin P8 al resultado de shitf1.
P8
6
10
27
Shift permutado = P8 (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10)
Shift permutado = s6, s3, s7, s4, s8, s5, s10, s9
La subllave Ks1 se obtiene del valor de la permutacin P8:
Ks1 = Shift permutado
Ejemplo:
Shift permutado = P8 (0 1 0 0 0 0 0 1 0 1)
Shift permutado = P8 (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10)
Shift permutado = 0 0 0 0 1 0 1 0
Ks1 = 0 0 0 0 1 0 1 0
Diagrama de flujo de la permutacin P8
El diagrama de flujo correspondiente a la permutacin P8 se muestra en la figura
2-5.
2.1.1.4 Shift 2
Como se indica en la figura 2-3, el resultado de Shift 1, se divide en dos partes,
cada una de 5 bits denominadas LS21 y LS22 respectivamente, a las cuales se
les realiza dos desplazamiento a la izquierda.
El resultado del desplazamiento shift1, se desplaza como se como se indica a
continuacin:
Shift2 = Shift (Shift1)
Shift2 = Shift (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10)
LS21 = s3, s4, s5, s1, s2
LS22 = s8, s9, s10, s6, s7
Shif2 = (LS21, LS22)
28
Inicio Permutacin P8
Leer Shitf1
Shift S1,S2,S3,S4,S5,S6,S7,S8,S9,S10
P8 = S6,S3,S7,S4,S8,S5,S10,S9
Ks1 P8
Escribir P8
Fin Shift1
29
Inicio Shift2
Leer Shift2
Shift1 S1,S2,S3,S4,S5,S6,S7,S8,S9,S10
LS21 = s3,s4,s5,s1,s2
LS22 = s8,s9,s10,s6,s7
Shift2 = [LS21,LS22]
Escribir Shift2
Fin Shift2
para
obtener
30
PI
4
E/P
E/P
8
Ks1
fk1
S0
S1
2
P4
4
4
SW
4
E/P
E/P
fk2
Ks2
4
S0
S1
2
P4
4
4
PI-1
Fuente [2.1]
Figura 2-7. Representacin detallada del proceso de cifrado S-DES.
Si se considera al texto plano de 8 bits como TP, cada bit correspondiente a TP
se representa como:
31
Permutacin inicial PI
Funcin fk1
SW
Funcin fk2
Permutacin IP-1
32
Inicio Permutacin PI
TP TP1,TP2,TP3,TP4,TP5,TP6,TP7,TP8
PI=TP2,TP6,TP3,TP1,TP4,TP8,TP5,TP7
Escribir PI
Fin PI
33
A. Permutacin E/P
La permutacin E/P, se realiza con 4 bits de entrada, correspondientes a los
bits: PI5, PI6, PI7, PI8 correspondientes al resultado de la permutacin inicial,
segn la regla definida por el algoritmo, como indica la tabla 2-4.
E/P
4
34
Leer PI
PI PI1,PI2,PI3,PI4,PI5,PI6,PI7,PI8
E/P=PI8,PI5,PI6,PI7,PI6,PI7,PI8,PI5
Escribir E/P
Fin E/P
Figura 2-10. Valores n1, n2, n3, n4, correspondientes a la permutacin E/P.
Los 8 bits de la subllave Ks1 se representan como:
Ks1 = k11, k12, k13, k14, k15, k16, k17, k18
35
Fuente [2.1]
Figura 2-11. Operacin xor.
Renombrando el resultado anterior se obtiene:
Fuente [2.1]
Ejemplo:
E/P = 0 0 1 0 1 0 0 0
Ks1 = 0 0 0 0 1 0 1 0
P12 = 1
P03 = 0 P13 = 0
C. Sustitucin S0 y S1
Siguiendo la figura 2-7, S0 y S1 son una versin reducida de las cajas S, del
algoritmo de cifrado DES, y sus valores constantes se indican a continuacin:
S0
2 3
S1
1 2 3
36
Bin
P00
P01
P10
P11
P01 = 0
P02 = 1
P10 = 0
P13 = 0
P11 = 0
P12 = 1
Dec
P03 = 0 0 = 0
P02 = 0 1 = 1
P13 = 0 0 = 0
P12 = 01 = 1
fS0
cS0
fS1
cS1
S0
1 2 3
S1
0 1 2 3
Dec
0
Bin
00
Dec
1
Bin
01 = S1
= S0
37
filaS0 P00,P03
columnaS0 P01,P02
filaS1 P10,P13
columnaS1 P11,P12
CS0
CS1
S0 = CS0(filaS0, columnaS0)
S1 = CS1(filaS1, columnaS1)
Escribir S0, S1
D. Permutacin P4
Siguiendo la figura 2-7, la siguiente etapa consiste en realizar la permutacin
P4, con los 4 bits de entrada correspondientes al resultado de S0 y S1.La
regla est definida por el algoritmo, como indica la tabla 2-5.
38
P4
2
= 1000
39
Xor2 = PI P4 = 1 0 0 0 0 1 0 0
Xor2 = 1 1 0 0
Inicio permutacin P4
Leer S0,S1
S0 S01, S02
S1 S11, S12
S01
S02
S11
S12
Si1
Si2
Si3
Si4
Escribir P4
Fin P4
2.1.2.3 SW
Como indica la figura 2-7, una vez finalizada la etapa correspondiente a fk1, se
debe realizar la operacin SW. Esta operacin consiste en intercambiar el orden
de los resultados de la operacin xor2 y el segundo bloque de 4 bits de la
permutacin PI como se indica a continuacin:
Xor2 = X1, X2, X3, X4
PI
40
Ejemplo:
Xor2 = 1 1 0 0
PI
= 0100
SW = 0 1 0 0 1 1 0 0
= 1101
Xor2 = 1001
fk2
= 10011100
41
IP
4
42
Leer fk
fkfk1,fk2,fk3,fk4,fk5,fk6,fk7,fk8
PI-1=fk4,fk1,fk3,fk5,fk7,fk2,fk8,fk6
Fin PI-1
43
Inicio
Ingresar
Texto plano
Llave
Texto plano TP
Llave K
No
TP = 8 bits
K = 10 bits
Si
Texto Cifrado TC
Escribir TC
Si
Cifrar nuevo TP
No
Salir
Fin
44
La informacin que contiene cada uno de los anexos, debe ser comprendida
antes de continuar con la descripcin de cada una de las etapas del diseo.
En un diseo inicial para la implementacin de S-DES, se intent usar el cdigo
realizado en MatLab, asimilarlo y convertirlo en VHDL, para lo cual se usa
subprogramas basados en funciones (function) y procedimientos (procedure).
Este mtodo no result efectivo, ya que se cre cdigo con la sintaxis correcta,
pero no sintetizable.
Se debe entender que lo que se intenta hacer en VHDL, no es programar en un
nuevo lenguaje, sino modelar el algoritmo S-DES en hardware. Una vez
comprendido el objetivo de VHDL, se usa una descripcin estructural del
algoritmo, creando un circuito basado en componentes ms pequeos,
especificando cada una de sus partes y conexiones. La unin de cada una de
estas partes denominadas entidades se realiza mediante la tcnica de
componentes (components). La implementacin de este sistema de cifrado, se
usar como un ejemplo bsico introductorio al uso de VHDL y FPGA. El diseo
de bloques se indica en la figura 2-18.
Texto
Plano
Hyperterminal
PC
Generacin
llave y
texto cifrado
UART
rx
Visualizacin
texto cifrado
FPGA
Tarjeta de Entrenamiento XUPV5-LX110T
45
Bloque UART rx: Este bloque se usa para la recepcin de los datos en el
dispositivo FPGA.
46
Como se indica en la figura 2-19, la entidad SDES, contiene los siguientes puertos
de entrada y salida:
STD_LOGIC_VECTOR (7
downto 0);
SDES:1
llave_Expansion
texto_Plano(7:0)
llave_texto(7:0)
llave_
ve_text
x o(7:0)
cifrador
k1(7:0)
k1(7:0)
k2(7:0)
k2(7:0)
texto_plano(7:0)
text
x o_plano(7:0)
texto_cifrado(7:0)
text
x o_cifrado(7:0)
texto_Cifrado(7:0)
texto_plano(7:0)
text
x o_plano(7:0)
U1_llave_Expansion
U2_cifrador
SDES_unit
led(7:0)
47
y las dos
llave_texto(7:0)
llave_t
e_ ext
x o(7:0)
llave_P10(9:0)
U1_Permutacion10
llave(7:0)
llave(7
v :0)
Permutacion10
U4_LS_2
LS_2
U2_LS_1
LS_2(9:0)
P8(7:0)
k2(7:0)
texto_plano(7:0)
text
x o_plano(7:0)
k1(7:0)
texto_plano(7:0)
text
x o_plano(7:0)
k2(7:0)
k1(7:0)
SDES_unit
U5_PermutacionP8
salida_LS1(9:0)
PermutacionP8
U3_PermutacionP8
P8(7:0)
PermutacionP8
salida_LS1(9:0)
LS_1_Salida(9:0)
U1_llave_Expansion
salida_LS1(9:0)
salida_LS1(9:
:0)
salida_P10(9:0)
sa
LS_1
llave_Expansion:1
SDES:1
48
U2_cifrador
cifrador
texto_cifrado(7:0)
text
x o_cifrado(7:0)
texto_Cifrado(7:0)
0)
lled(7:0)
ed(7:0)
49
50
texto_Plano 01000001
Llave 0100000101
El resultado se observa en la figura 2-22.
texto_Plano(7:0)
k2(7:0)
k1(7:0)
k2(7:0)
:0)
k1(7:0)
texto_plano(7:0)
texto
x _plano(7:0)
0)
texto_plano(7:0)
texto_
xto_plano(7:0)
llave_Expansion
U1_llave_Expansion
on
llave_texto(7:0)
llave_text
x o(7:0)
derecha_IP(3:0)
U1_IP
IP
U2_FK
derecha_IP(3:0)
derecha
IP(3:0)
U2_cifrador
SW2(3:0)
U3_SW
salida_IPderecha(3:0)
entrada_2(3:0)
entra
ada_2(3:0)
entrada_1(3:0)
entrada
1(3:0)
SW1(3:0)
0)
SW
U4_FK
FK(3:0)
salida_FK(3:0)
0)
k(7:0))
izquierda_IP(3:0)
izquierda
IP(3:0)
SDES_unit
izquierda_ip(3:0)
derecha_ip(3:0)
dere
echa_ip(3:0)
FK(3:0)
FK
cifrador:1
texto_plano(7:0)
te
text
x o_plano(7:0)
o_
k(7:0)
0)
izquierda_IP(3:0)
izqu
quierda_IP(3:0)
FK
SDES:1
51
U5_IPinv
IPinv
salida_IP(7:0)
texto_cifrado(7:0)
text
te
x o_cifrado(7:0)
led(7:0)
texto_Cifrado(7:0)
52
Entidad IPinv,
Los
53
54
Fuente [2.2]
Figura 2-27. Transmisin de un byte.
La seal de reloj no es enviada en la lnea serial, por lo tanto este tipo de
transmisin requiere de un previo acuerdo de los parmetros de transmisin,
entre el transmisor y el receptor: la velocidad de seal (baud rate), el nmero de
bits de datos, bits de parada y paridad en caso de que sta se est usando. Las
velocidades de seal comunes son: 2400, 4800, 9600, 19200. [2.2]. Los puertos
asignados a esta entidad uart se observan en la figura 2-28.
55
uart:1
mod_m_counter
clk
clk
clk
reset
reset
reset
uart_rx
clk
q(8:0)
max_tick
fifo
dout(7:0)
reset
r_data(7:0)
r_data(7:0)
empty
rx_empty
clk
rd
rx
baud_gen_unit
w_data(7:0)
s_tick
rx_done_tick
reset
wr
full
uart_rx_unit
fifo_rx_unit
rx
rx
btn
rd_uart
uart_unit
56
idle
rx = 0
T
S 0
star
stop
s_tick=1
T
F
s = 7
T
s 0
n 0
s s + 1
s_tick =
1
s=SB_TICK
-1
T
s = s + 1
rx_done_tick
<=1
data
F
s_tick=1
s s+1
s = 15
T
s 0
b rx&(b>>1)
n=D_BIT+1
n n + 1
Fuente [2.2]
Figura 2-30. Diagrama ASMD de la mquina de estados del receptor.
_________________________
1
ASMD (Algorithmic StateMachine with Data path). Se trata de un tipo de representacin de una mquina de
estados, que funciona con unidad de control y rutas de datos.
57
Donde:
o Se espera hasta que la seal de entrada se convierte en "0" (el bit
de inicio) y luego inicia la toma de muestras (tick).
o Cuando el contador llega a 7, la seal de entrada alcanza la posicin
media del bit de inicio. Desactiva el contador y reinicia.
o Cuando el contador llega a 15, se encuentra en el centro del primer
bit de datos, se recupera y almacena en un registro. Luego se
reinicia el contador.
o Repite el paso anterior N-1 veces para recuperar el resto de los bits
de datos.
o Si el bit opcional de paridad se utiliza, repita este paso una vez ms.
o Repita este paso M veces ms para obtener los bits de parada.
El esquema de sobremuestreo reemplaza la funcin del reloj. En vez de
usar el flanco ascendente para muestrear, se usan las marcas de muestreo
(ticks) para estimar la posicin central de cada bit. [2.2]
Cabe recalcar que el sistema de reloj debe ser ms rpido que la velocidad
de seal para que el sobremuestreo sea posible.
58
59
la frecuencia
de la velocidad de transmisin
El cdigo fuente de los mdulos VHDL, de cada una de las etapas descritas se
muestran en el anexo 7.
2.2 DES
A finales de la dcada de los sesenta, IBM cre un proyecto de investigacin en
criptografa para computadoras liderado por Horst Feistel. El proyecto concluy en
1971 con el desarrollo de un algoritmo denominado LUCIFER, que posteriormente
fue vendido a Lloyd de Londres para ser usado en un sistema que entregaba
dinero. LUCIFER es un cifrado de bloques de Feistel, que opera con bloques de
64 bits, usando una llave de tamao de 128 bits.
Debido a los resultados favorables que produjo el proyecto LUCIFER, IBM se
embarc en el desarrollo de un producto comercial de cifrado, dicho producto
podra ser implementado en un solo chip. El resultado de este proyecto fue una
versin refinada del algoritmo LUCIFER que era ms resistente al criptoanlisis
pero que tambin reduca el tamao de la llave a 56 bits para adaptarse a un solo
chip.
60
61
Generacin de subllaves
Cifrado
PI
PC1
Ks1
Ronda 1
PC2
Desplazamiento Izquierda
PC2
Desplazamiento Izquierda
PC2
Desplazamiento Izquierda
Ks2
Ronda 2
Ronda 16
Ks16
(64 bits)
Fuente [2.1]
Figura 2-31. Cifrado DES.
62
Permutacin PC1
Desplazamiento Izquierda
Permutacin PC2
63
PC-1
57
49
41
33
25
17
58
50
42
34
26
18
10
59
51
43
35
27
19
11
60
52
44
36
63
55
47
39
31
23
15
62
54
46
38
30
22
14
61
53
45
37
29
21
13
28
20
12
Dato de salida:
KPC = 00000000111111111111111100000010110101101011001010000100
Diagrama de flujo de la permutacin PC1
El diagrama de flujo correspondiente a la permutacin PC1 se indica en la figura
2-33.
2.2.1.2
Desplazamiento izquierda
64
Leer llave K
KK1,K2,K3,K4,K5,K6,K7,K8,K64
PC = [57,49,41,33,25,17,9,1,58,50,42,34,26,18,
10,2,59,51,43,35,27,19,11,3,60,52,44,36,
63,55,47,39,31,23,15,7,62,54,46,38,30,22,
14,6,61,53,45,37,29,21,13,5,28,20,12,4]
Iniciar i a 1
No
i<= C
Si
elemento [elemento, K(PC(1,i))]
KPC(1,i) elemento (i)
Escribir llave
permutada KPC
i+1
65
66
67
Ci-1 = 0000000011111111111111110000
Di-1 = 0010110101101011001010000100
LCS (Ci-1) = 0000000111111111111111100000
LCS (Di-1) = 0101101011010110010100001000
LCST = [LCS (Ci-1), LCS (Di-1)]
LCST = 00000001111111111111111000000101101011010110010100001000
Leer resultado de la
permutacin PC1
KPCT1,T2,T3,T4,T5,T6,T7,T8,T56
Ci-1 = T1,T2,T3,T4,T5,T6,,T27,T28
Di-1 = T29,T30,T31,T32,T33,,T55 ,T56
LCS(Ci-1) = T2,T3,T4,T5,T6,,T27,T28,T1
LCS(Di-1) = T30,T31,T32,T33,,T55 ,T56,T29
LCST [LCS(Ci-1),LCS(Di-1)]
Escribir resultado
desplazamiento izquierda
LCST
68
2.2.1.3
Permutacin PC2
17
11
24
28
15
21
10
23
19
12
26
16
27
20
13
41
52
31
37
47
55
30
40
51
45
33
48
44
49
39
56
34
53
46
42
50
36
29
32
69
LCSTL1,L2,L3,L4,L5,L6,L7,L8,L56
PC2 =
[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,
26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,
51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32]
Iniciar i a 1
No
i<= C
Si
elemento [elemento, LCST(PC2(1,i))]
KPC2(1,i) elemento (i)
Ks1 KPC2
i+1
70
Nmero de
Nmero de desplazamientos
Subllave
ronda
a la izquierda
generada
Ks1
Ks2
Ks3
Ks4
Ks5
Ks6
Ks7
Ks8
Ks9
10
Ks10
11
Ks11
12
Ks12
13
Ks13
14
Ks14
15
Ks15
16
Ks16
71
Ejemplo:
Para las subllaves que se generan en base a la figura 2-40 y la tabla 2-9, el
resultado se observa a continuacin:
Ks2 = 111000001011011001110110111110000100001010010111
Ks3 = 111001001101011001110110000101110100001010001011
Ks4 = 111001101101001101110010100101100011000101000001
Ks5 = 101011101101001101110011101000101010001101100100
Ks6 = 101011110101001101011011011100001010111110000010
Ks7 = 001011110101001111011001011111000000010000011011
Ks8 = 000111110101100111011001010011110111000001001010
Ks9 = 000111110100100111011001010010001000111110100011
Ks10 = 000111110110100110011101010111100100110000011001
Ks11 = 000111110010110110001101010010110101000101011000
Ks12 = 010110110010110010101101100000011111000100101000
Ks13 = 110110011010110010101100111000000001111000100100
Ks14 = 110100001010111010101110110110000000101010111110
Ks15 = 111100001011111000100110000101010101101010011001
Ks16 = 111100001011111000100110101010000010111010000100
2.2.2 CIFRADO
Continuando con la figura 2-31, una vez generadas las 16 subllaves, se sigue con
el proceso de cifrado.
El estndar DES es un algoritmo de cifrado por bloques, si la informacin a ser
cifrada se presenta como un flujo de bits lo que se debe hacer es dividir ese flujo
de bits en bloques de 64 bits de longitud.
Para cifrar el texto plano, este debe ingresar en bloques de 64 bits, en el caso de
que un bloque no cumpla con los 64 bits, se debe realizar un relleno. Para este
72
caso se realizar con bits ceros. La figura 2-41, indica el texto plano dividido en
bloques de 64 bits.
Permutacin PI
Rondas 1, 2, 3, 4, 5..16
Swap
Permutacin PI-1
Permutacin IP
73
Permutacin Inicial
58
50
42
34
26
18
10
60
52
44
36
28
20
12
62
54
46
38
30
22
14
64
56
48
40
32
24
16
57
49
41
33
25
17
59
51
43
35
27
19
11
61
53
45
37
29
21
13
63
55
47
39
31
23
15
2.2.2.2 Rondas
Continuando con el proceso de cifrado, la siguiente etapa es realizar una ronda,
se le llama as porque este procedimiento debe ser repetido 16 veces. Cada
ronda contiene operaciones especficas como permutaciones, operacin xor y
sustitucin.
74
Inicio Permutacin IP
TPTP1,TP2,TP3,TP4,TP5,TP6,TP7T64
IP =
[58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,
53,45,37,29,21,13,5,63,55,47,39,31,23,15,7]
Iniciar i a 1
No
i<= C
Si
elemento [elemento, TP(IP(1,i))]
IP1(1,i) elemento (i)
Escribir resultado de
permutacin IP1
i+1
Fin permutacin IP
75
76
Ejemplo:
IP = IP1, IP2, IP3, IP4 IP64
IP= 11111111000001000110101110010010
00000000111111110010100000101101
L1 = IP1, IP2, IP3, IP4IP32
L1 = 11111111000001000110101110010010
R1 = IP33, IP34, IP35, IP36IP64
R1= 00000000111111110010100000101101
A.2 Permutacin EP
Los 32 bits R, del resultado anterior ingresan a la permutacin EP, se
obtienen 48 bits a la salida. La permutacin EP, sigue la regla de la tabla
2-11.
Permutacin EP
32
10
11
12
13
12
13
14
15
16
17
16
17
18
19
20
21
20
21
22
23
24
25
24
25
26
27
28
29
28
29
30
31
32
77
Inicio Permutacin EP
Leer el valor de R
R R1,R2,R3,R4,R5,R6,R7R32
EP =
[32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,14,15,
16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,
26,27,28,29,28,29,30,31,32,1]
Iniciar i a 1
No
i<= C
Si
elemento [elemento, R(EP(1,i))]
REP(1,i) elemento (i)
Escribir resultado de
permutacin REP
i+1
Fin permutacin EP
78
A.3 Xor1
Como indica la figura 2-43, se debe realizar la operacin con el resultado
de la permutacin EP y la subllave que corresponde a la ronda 1, para este
caso corresponde Ks1.
Ejemplo:
Xor1 = EP Ks1
EP = 10000000 0001011111111110100101010000000101011010
Ks1 = 11100000 1011111001100110000100110011000001110001
Xor1 = 01100000 1010100110011000100001100011000100101011
79
Una caja S es una matriz de 4 filas por 16 columnas. Cada una de dichas
cajas se detalla en la tabla 2-12.
[2.3]
Tabla 2-12. Cajas S del algoritmo DES.
Ejemplo:
Xor1 = 011000001010100110011000100001100011000100101011
Si corresponde a las cajas S
Los valores de la operacin Xor1 se dividen en 8 bloques de 6 bits, cada
bloque se usar para ser sustituido por un valor en la caja S que le
corresponda.
Xor1B1 = 011000
Xor1B2 = 001010
Xor1B3 = 100110
Xor1B4 = 011000
Xor1B5 = 100001
Xor1B6 = 100011
Xor1B7 = 000100
Xor1B8 = 101011
80
que indican la fila de la caja S1, los cuatro bits intermedios indican la
columna de la caja S1, como se ilustra en la figura 2-46.
00
Fila caja S1 00 0
Xor1B1 = 0 1 1 0 0 0
S1 50101
1100
Caja S
Fila
caja S
Columna caja
S
Valor decimal
caja S
Valor binario
caja S
Xo1B1
011000
00
1100
0101
Xor1B2
001010
00
0101
11
1011
Xor1B3
100110
10
0011
1001
Xor1B4
011000
00
1100
11
1011
Xor1B5
100001
11
0000
11
1011
Xor1B6
100011
11
0001
0011
Xor1B7
000100
00
0010
0010
Xor1B8
101011
11
0101
10
1010
81
Xor1 Xor1,Xor2,Xor3,Xor4,Xor5,Xor48
Iniciar x a 1
x<=8
Iniciar y a 1
y<=6
XoriBi(y) = Xor1(y)
y y+1
XoriBi Y1,Y2,Y3,Y4,Y5,Y6
fila = Y1Y6
Columna = Y2Y3Y4Y5
Cambiar a decimal
fila = fi
Columna = ci
Comparador
C=1
C=2
C=3
C=4
C=5
CS5 =
CS2 =
CS3 =
CS4 =
[14,4,13,1,2,15,...,13]
[15,1,8,14,6,11,3,...,9]
[10,0,9,14,6,3,...,12]
[7,13,14,3,0,6,...,14]
S1 =CS1(f1,c1)
S2 =CS2(f2,c2)
S3 =CS3(f3,c3)
S4 =CS4(f4,c4)
CS1 =
C= x
C=6
CS6 =
[2,12,4,1,7,10,...,3]
[12,1,10,15,9,2,...,13]
S5 =CS5(f5,c5)
S6 =CS6(f6,c6)
S = S1,S2,S3,S4,S5,S6,S7,S8
Escribir resultado de
Cajas-s S
y y+1
C=7
C=8
CS7 =
CS8 =
[4,11,2,14,15,0,...,12]
[13,2,8,4,6,15,...,11]
S7 =CS7(f7,c7)
S8 =CS8(f8,c8)
82
A.5 Permutacin P
El resultado de los 32 bits de la operacin de las cajas-S, son permutados
de acuerdo a la permutacin P que se muestra en la tabla 2-14.
Permutacin P
16
20
21
29
12
28
17
15
23
26
18
31
10
24
14
32
27
19
13
30
22
11
25
A.6 Xor2
Como indica la figura 2-43, se debe realizar la operacin xor con el
resultado de la permutacin P y el valor de Li-1, el valor de L es el resultado
de realizar la operacin divisin de la permutacin IP. El resultado de la
operacin Xor2, se denominara Ri.
83
Inicio Permutacin P
Leer el valor de S
S S1,S2,S3,S4,S5,S6,S7S32
P =
[16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,
8,24,14,32,27,3,9,19,13,30,6,22,11,4,25]
Iniciar i a 1
No
i<= C
Si
Escribir resultado de
permutacin RP
i+1
Fin permutacin P
L1 = 11111111000001000110101110010010
P = 11101101011010101110010111000010
R2 = 00010010011011101000111001010000
84
85
2.2.2.3
SWAP
Como se indica en la figura 2-31, una vez que se realizan las 16 rondas, la
siguiente etapa es la operacin de swap. Al final de la ronda 16 se tiene los
grupos L y R cada uno de 32 bits, estos intercambian posiciones el uno con el otro
a esto se le conoce como la operacin SWAP.
Ejemplo:
Ronda 16 = Lr16, Rr16
Lr16 = L1, L2, L3..L16
Lr16 = 01010111111000100001111010001000
Rr16 = R1, R2, R3..R16
Rr16 = 10011010110111000011101000010101
Swap = Rr16, Lr16
Swap=1001101011011100001110100001010101010111111000100001111010001000
2.2.2.4 Permutacin IP-1
Finalmente el bloque de 64 bits resultante de la operacin SWAP es permutado
de acuerdo a la regla de la permutacin inicial inversa (IP -1) como muestra la
figura 2-31. La regla de permutacin se muestra en la tabla 2-15. El resultado de
esta permutacin corresponde al texto cifrado.
48
16
56
24
64
32
39
47
15
55
23
63
31
38
46
14
54
22
62
30
37
45
13
53
21
61
29
36
44
12
52
20
60
28
35
43
11
51
19
59
27
34
42
10
50
18
58
26
33
41
49
17
57
25
86
Swap = 1001101011011100001110100001010101010111111000100001111010001000
IP-1 = Sw40, Sw8, Sw48.Sw25.
IP-1 = 1000000111101100100110010101111011011101001001001011000001110010
Leer el valor de Sw
Sw S1,S2,S3,S4,S5,S6,S7S64
IP-1 = [
40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25]
Iniciar i a 1
No
i<= C
Si
Escribir resultado de
permutacin RIP-1
i+1
87
GRFICA
DE
MATLAB
PARA
EL
88
Inicio
Ingresar
Texto plano
Llave
Texto plano TP
Llave K
No
TP vaco
K = 56 bits
Si
Texto Cifrado TC
Escribir TC
Si
Cifrar nuevo TP
No
Salir
Fin
89
REFERENCIAS
[2.1] W. Stallings, Cryptography and Network Security Principles and Practices.
Segunda Edicin, 1995.
90
CAPTULO 3
ESTNDAR DE CIFRADO AVANZADO (AES)
3.1 INTRODUCCIN AES
El estndar AES, se encuentra descrito en la publicacin FIPS PUB 197 (Federal
Information Processing Standards Publications),
por
bloque.
Seguridad.
Eficiencia computacional.
Requisitos de memoria.
MARS
91
RC6
Rijndael
Serpent
Twofish
candidatos:
CAST 256: Este algoritmo era similar al algoritmo Serpenter, pero con un
alto costo de implementacin.
seguridad bajo.
Luego de que el NIST anunci a los cinco finalistas, una notable contribucin se
origin a partir de la NSA: la presentacin de los resultados de las simulaciones
de rendimiento de hardware realizadas para los cinco finalistas en las cuales
Rijndael y Twofish tuvieron resultados excelentes, demostrando ser muy
adecuados para la implementacin en hardware, mientras que RC6 present un
alto costo en la implementacin en hardware debido al uso de 32 bits de
multiplicacin; MARS result ser bastante costoso en recursos de hardware.
El
2 de octubre del 2000, el NIST dio a conocer que Rijndael, podra ser
seleccionado como el nuevo estndar del NIST (AES), por su seguridad y alto
rendimiento a nivel de hardware y software. El estndar final fue publicado en
noviembre del 2001.
92
Rijndael, fue desarrollado y presentado por dos criptgrafos belgas: Dr. Joan
Daemen y Dr. Vincent Rijimen.
128 bits
Llave
128 bits
128 bits
128 bits
Texto plano
AES
128 bits
128 bits
128 bits
Texto cifrado
3.1.3 NOTACIN
93
b3,
puede ser
[3.4]
Ejemplo:
{01000110}, puede ser representado como:
0
0 1
94
Carcter
Patrn
de bits
Carcter
Patrn
de bits
Carcter
Patrn
de bits
Carcter
0000
0100
1000
1100
0001
0101
1001
1101
0010
0110
1010
1110
0011
0111
1011
1111
S0,0
S0,1
S0,2
S0,3
S1,0
S1,1
S1,2
S1,3
S2,0
S2,1
S2,2
S2,3
S3,0
S3,1
S3,2
S3,3
95
S0,0
S0,1
S0,2
S0,3
S0,4
S0,5
S1,0
S1,1
S1,2
S1,3
S1,4
S1,5
S2,0
S2,1
S2,2
S2,3
S2,4
S2,5
S3,0
S3,1
S3,2
S3,3
S3,4
S3,5
S0,1
S0,2
S0,3
S0,4
S0,5
S0,6
S0,7
S1,0
S1,1
S1,2
S1,3
S1,4
S1,5
S1,6
S1,7
S2,0
S2,1
S2,2
S2,3
S2,4
S2,5
S2,6
S2,7
S3,0
S3,1
S3,2
S3,3
S3,4
S3,5
S3,6
S3,7
Ejemplo:
16 bytes ordenados como: Sf,c = 3b 6d 11 61 56 ab e2 36 ae ff 55 08 c9 11 4a 33
3b
56
ae
c9
6d
Ab
ff
11
11
e2
55
4a
61
36
08
33
Como se indic anteriormente, la longitud de la llave puede tener 128, 192 o 256
bits. La longitud de la llave se la representa por Nk, la misma que puede tomar
valores de 4, 6 o 8, estos valores reflejan el nmero de columnas de la llave de
cifrado. Tambin se debe considerar que el nmero de rondas, representado por
Nr, depende del tamao de la llave, es decir que Nr depende del valor de Nk: Por
96
Tamao del
Bloque
Nb
Nmero de
Rondas
Nr
AES-128
10
AES-192
12
AES-256
14
97
Proceso de cifrado.- Consta de diez rondas y una ronda inicial. Cada ronda
se encuentra conformada por operaciones bsicas de bytes, entre las que
se tiene: SubBytes, ShiftRows, MixColumns y Xor.
W4, W5,W6,W7
XOR
TEXTO CIFRADO
128 Bits
Cifrado
ShiftRows
SubBytes
XOR
MixColumns
ShiftRows
SubBytes
Ronda
10
Ronda
2
Ronda
1
Ronda
Incial
TEXTO PLANO
128 Bits
Figura 3-2. Representacin grfica cifrado AES, para el caso de una llave de 128 bits.
Expansin de llave
W41
W42
W43
W40
W9
W10
W11
W8
W5
W6
W7
Temp Xor
W4
W0
W1
W2
W3
Rcon
SubWord
RotWord
LLAVE
128 Bits
98
99
En donde i representa un nmero que sigue la regla Nb(Nr + 1), como se indica
en la tabla 3-2.
Ejemplo:
Si se tiene una longitud de llave de 128 bits, es decir, 16 bytes, entonces se
tiene un nmero de rondas igual a 10, por lo tanto si se aplica la regla Nb(Nr + 1),
se concluye que el nmero de palabras generadas ser 44, numeradas de 0 a
43, de la siguiente manera:
W0, W1,W2,,W43.
Para expandir la llave, se sigue dos procedimientos, uno para las llaves que son
mltiplos de Nk y otro para las llaves que no son mltiplos de Nk. El valor de Nk,
se indica en la tabla 3-2.
La generacin de cada palabra W, es de la siguiente manera:
Las palabras W[0], W[1], W[2] y W[3], se generan directamente con los
valores de la llave ingresada.
Las
palabras
que
nos
son
mltiplos
de
Nk
=4,
W[5],
100
K = K0, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K14, K15
Organizando en formato matricial se tiene:
K0
K4
K8
K12
K1
K5
K9
K13
K2
K6
K10 K14
K3
K7
K11 K15
F G H
K L
N O P
llave (HEX) = 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50
W[0] W[1] W[2] W[3]
41
45
49
4D
42
46
4A
4E
43
47
4B
4F
44
48
4C
50
101
A. Transformacin RotWord
Esta transformacin toma la palabra W[Nk - 1] = [a0, a1, a2, a3] como entrada,
realiza una permutacin cclica del primer elemento de la columna y lo
desplaza hacia el ltimo elemento de la columna, dando como resultado la
palabra WRotWord = [a1, a2, a3, a0]. Para el caso de W[4]:
W[Nk - 1] = W [ 4 - 1] = W[3]
La figura 3-3, representa en forma grfica la permutacin cclica.
102
ENTRADA:
SALIDA:
WRotWord
W [3]
a0
a1
a1
a3
a3
a4
a4
a0
Inicio RotWord
W[3] a0
a1, a2, a3
WRotWord = a3, a0
a1, a2,
Escribir
WRotWord
Fin RotWord
103
B. Transformacin SubWord
La transformacin SubWord tiene por objetivo romper la linealidad de la
informacin de los datos originales, ya que para construir la misma se toman
en cuenta criterios como la no linealidad y complejidad algebraica.
No Linealidad.- En este criterio se toman aspectos como:
[3.2]
104
Ejemplo:
De la etapa anterior se obtuvo: WRotWord = [4E 4F 50 4D]. Cada byte se
ubica en la tabla 3-3, su salida correspondiente. En este ejemplo se tiene los
siguientes datos:
Entrada:
4 E 4 F 5 0 4 D
x y x y x y x
Salida:
2 F 8 4 5 3 E 3
ENTRADA:
SALIDA:
WRotWord
WSubWord
4E
2F
4F
84
50
53
4D
E3
Caja - S
Figura 3-5. Representacin grfica de la transformacin WSubWord.
105
Inicio SubWord
Leer WRotWord
WRotWord a3
,a0,a1,a2
a3
a0
a3
a2
=
=
=
=
X0Y0
X1Y1
X2Y2
X3Y3
X0Y0=f0c0
= SubWord(0)
X1Y1=f1c1 = SubWord(1)
X2 Y2=f2c2 = SubWord(2)
X3Y3 =f3c3 = SubWord(3)
SubWord(0)
WSubWord =
SubWord(1)
SubWord(2)
SubWord(3)
Escribir
WSubWord
Fin WSubWord
rondas del proceso de cifrado. Estos valores son los que se indican en la
figura 3-7, y el fundamento matemtico para conseguir estos valores se
detallan en el anexo 10.
106
Ronda 2
RCon[2]
Ronda 3
RCon[3]
Ronda 4
RCon[4]
Ronda 5
RCon[5]
01
02
04
08
10
20
40
80
1B
36
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
Ronda7
Ronda6
RCon[6] RCon[7]
Ronda8
RCon[8]
Ronda 9
Ronda10
RCon[9]RC RCon[10]
Ronda 1
RCon[1]
ENTRADA 1:
WSubWord
ENTRADA 2:
Ronda 1 R[1]
SALIDA:
WSubWorXorRcon
2F
01
2E
84
00
84
53
E3
XOR
00
00
53
E3
107
se
Inicio XorRcon
Leer:
- WSubWord
-Rcon
WSubWord a0 ,a1,a2,a3r
Rcon r0 ,r1,r2,r3
WSubWord
XOR Rcon
WSubWordXorRcon = WAfterSubWord
Rcon
Escribir
WSubWordXorRcon
Fin XorRcon
108
SALIDA:
W [0]
W [i -Nk] = W [4 - 4] = W [ 0 ]
41
42
43
44
Figura 3-10. W[ i- Nk ].
F. W[i] =TEMP XOR W[i-Nk]
Esta operacin consiste en realizar la operacin xor con el resultado de la
transformacin (Xor con Rcon) y el valor de W [ i Nk ], encontrado en el
paso anterior. El resultado corresponde a la palabra W[4], como se indica en
la figura 3-2.
Ejemplo:
WXorRcon = [2E 84 53 E3]
W[i-Nk] = W [4-4] = W [0]
W [0] = [41 42 43 44]
La representacin grfica se ilustra en la figura 3-11.
De la misma forma que se encontr W [4], se obtienen las siguientes palabras
mltiplos de cuatro. En el caso de W[8], se inicia la operacin de RotWord, con
W[7]; para W[12] con W[11] y as sucesivamente.
se
109
ENTRADA 1:
ENTRADA 2:
SALIDA:
WXorRcon
W [0]
W[4]
2E
41
6F
84
42
C6
53
E3
XOR
43
10
A7
44
Inicio TempXorW[i-Nk]
Leer
WXorRcon
w [i-Nk]
WXorRcon a0 ,a1,a2,a3r
w [i-Nk]
wi0 ,wi1,wi2,wi3
w [i-Nk] =
W[0]
Escribir
W[4]
Fin TempXorW[i-Nk]
110
Valor
W[i]
Valor
W[i]
Valor
W[i]
Valor
W[0]
41424344
W[11]
55E50529
W[22]
C31CB0C3
W[33]
871501FF
W[1]
45464748
W[12]
EF40B86A
W[23]
2E601EA6
W[34]
33102C01
W[2]
494A4B4C
W[13]
F7EBF213
W[24]
BFE4303B
W[35]
228220E7
W[3]
4D4E4F50
W[14]
8C8AA4C9
W[25]
48EB8F7D
W[36]
B050872C
W[4]
6FC610A7
W[15]
D96FA1E0
W[26]
8BF73FBE
W[37]
374586D3
W[5]
2A8057EF
W[16]
4F72595F
W[27]
A5972118
W[38]
0455AAD2
W[6]
63CA1CA3
W[17]
B899AB4C
W[28]
77199D3D
W[39]
26D78A35
W[7]
2E8453F3
W[18]
34130F85
W[29]
3FF21240
W[40]
882E11DB
W[8]
322B1D96
W[19]
ED7CAE65
W[30]
B4052DFE
W[41]
BF6B9708
W[9]
18AB4A79
W[20]
4F96140A
W[31]
11920CE6
W[42]
BB3E3DDA
W[10]
7B6156DA
W[21]
F70FBF46
W[32]
B8E713BF
W[43]
9DE9B7EF
111
se
Inicio W[i]_Simple
Leer
W[i-1]
W[i-Nk]
W[i-1] a0 ,a1,a2,a3r
w [i-Nk]
wi0 ,wi1,wi2,wi3
W[i- Nk]
Escribir
W[i]
Fin W[i]_Simple
3.2.2 CIFRADO
Como se indica en la figura 3-2, una vez encontradas las 44 palabras (W[0], W[1],
W[2].W[43]) en el proceso de expansin de llave, ya se puede realizar el
cifrado.
Se ha tomado como ejemplo de texto plano un bloque de 128 bits denotado como:
Texto plano (ASCII) = F E
N D A
R N
N D A
112
Texto plano
Llave
Ronda inicial
46
41
46
41
41
45
49
4D
07
04
0F
0C
45
4E
45
4E
42
46
4A
4E
07
08
0F
00
52
44
52
44
43
47
4B
4F
11
03
19
0B
4E
41
4E
41
44
48
4C
50
0A
09
02
11
Figura 3-14. Ronda Inicial: resultado de la operacin xor entre el texto plano y la
llave.
Diagrama de Flujo de la ronda inicial
El diagrama de flujo correspondiente a la ronda inicial, se indica en la figura 315.
3.2.2.2 Ronda 1
Como se ilustra en la figura 3-2, la siguiente etapa corresponde a la Ronda 1,
proceso que contiene cuatro operaciones:
113
A. SubByte
B. ShiftRows
C. MixColumns
D. Xor
Inicio RondaInicial
Leer
Texto Plano TP
Llave K
TP tp0,tp1,..tp127
k0,k1,..k127
Escribir
RondaInicial
Fin RondaIncial
114
Salida:
SubBytes
Entrada:
Ronda inicial
07
04
0F
0C
C5
F2
76
FE
07
08
0F
00
C5
30
76
63
11
03
19
0B
82
7B
D4
2B
0A
09
02
11
67
01
77
82
Leer RondaIncial RI
RI a0
,a1,a2,..a16
a0
X0Y0
a1
X1Y1
..
a16
X16Y16
X0Y0
f0c0
X1Y1=f1c1
.
X16Y16 =f16c16
SubBytes = f0c0,f1c1,f2c2,.f16c16
Escribir
SubByte
Fin SubByte
115
B. ShiftRows
Consiste en aplicar el desplazamiento de filas al resultado de la matriz
SubByte, tal como indica la figura 3-18.
Entrada:
Salida:
SubBytes
Desplazamiento de filas
C5
F2
76
FE
C5
F2
76
FE
C5
30
76
63
30
76
63
C5
82
7B
D4
2B
D4
2B
82
7B
67
01
77
82
82
67
01
77
116
Inicio ShiftRows
Leer SubBytes SB
SB
ShiftRows =
S00
S10
S20
S30
S00
S11
S22
S33
S01
S11
S21
S31
S01
S12
S23
S30
S02
S12
S22
S32
S03
S13
S23
S33
S02
S13
S20
S31
S03
S10
S21
S32
Escribir ShiftRows
Fin ShiftRows
117
Entrada:
ShiftRows
MixColumns
C5
F2
76
FE
97
29
CA
BF
30
76
63
C5
40
04
2C
95
D4
2B
82
7B
DB
7B
09
54
82
67
01
77
AF
9E
79
49
118
Inicio MixColumns
Leer
ShiftRows SR
SR
M =
C1 =
C2 =
C3 =
C4 =
a00
a10
a20
a30
02
01
01
03
a01
a11
a21
a31
a02
a12
a22
a32
03
02
01
01
01
03
02
01
a03
a13
a23
a33
01
01
03
02
a00'
02
a10'
01
a20' = 01
a30'
03
03
02
01
01
01
03
02
01
01
01
03
02
a00
a10
a20
a30
a01'
02
01
a11'
a21' = 01
a31'
03
03
02
01
01
01
03
02
01
01
01
03
02
a01
a11
a21
a31
a02'
02
a12'
01
a22' = 01
a32'
03
03
02
01
01
01
03
02
01
01
01
03
02
a02
a12
a22
a32
a03'
02
a13'
01
a23' = 01
a33'
03
03
02
01
01
01
03
02
01
01
01
03
02
a03
a13
a23
a33
Resultado: MixColumns
MixColumns MC
a00' a01'
a10' a11'
MC=[MC1 MC2 MC3 MC4]= a20' a21'
a30' a31'
a02'
a12'
a22'
a32'
a03'
a13'
a23'
a33'
Escribir
MC
Fin MixColumns
119
ENTRADA 1:
ENTRADA 2:
MixColumns
SALIDA:
Ronda 1
97
29
CA
BF
6F
2A
63
2E
F8
03
A9
91
40
04
2C
95
C6
80
CA
84
86
84
E6
11
DB
7B
09
54
10
57
1C
53
CB
2C
C1
07
AF
9E
79
49
A7
EF
A3
F3
08
71
DA
BA
3.2.2.3 Rondas 2, 3, 4, 5, 6, 7, 8 y 9
Como se indica en la figura 3-2, para la ronda 2, se ejecuta con el dato de
entrada correspondiente al resultado de la ronda 1 y las palabras W[8], W[9],
W[10], y W[11]. El dato de entrada para la ronda tres ser el resultado de la
ronda dos y las palabras W[12], W[13], W[14], y W[15]. Lo mismo hasta la ronda
nueve.
Realizando estos clculos, se tiene los siguientes resultados:
Ronda 1: F803A9918684E611CB2C15070871DABA
Ronda 2: FC92E7A6CBB32F28B67EC7DBA0DF742A
Ronda 3: 000F33D19EBE3AE9C6FA21CADBB5335F
Ronda 4: 5202EA6285D1FEE03F65C59F2C4BC09C
Ronda 5: 75652834C5126E92044DF26C355DB8F6
Ronda 6: 15AE8CEB32E51C8AAB5C6FF64352C7AD
Ronda 7: 880B9C319FE93B25F2C0F303969D4E38
120
Ronda 8: 030702540FFC6E12DA952622F520728A
Ronda 9: 04694A962CEDE5253BD078481A5CA089
Inicio Xor
Leer
MixColumns MC
Palabras W
MC MC0,MC1,..MC127
W W0,W1,..W127
Escribir
Ronda1
Fin Xor
121
A. SubBytes
En la figura 3-26,
se ilustra
Entrada:
SubBytes
Ronda 1
04
69
4A
96
F2
F9
D6
90
2C
ED
E5
25
71
55
D9
3F
3B
D0
78
48
E2
70
BC
52
1A
5C
A0
89
A2
4A
E0
A7
se ilustra
Salida:
SubBytes
ShiftRows
F2
F9
D6
90
F2
F9
D6
90
71
55
D9
3F
55
D9
3F
71
E2
70
BC
52
BC
52
E2
70
A2
4A
E0
A7
A7
A2
4A
E0
122
ENTRADA 1:
ENTRADA 2:
ShiftRows
SALIDA:
Ronda 10
F2
F9
D6
90
88
BF
BB
9D
7A
46
6D
0D
55
D9
3F
71
2E
6B
3E
E9
7B
B2
01
98
BC
52
E2
70
11
97
3D
B7
AD
C5
DF
C7
A7
A2
4A
E0
DB
08
DA
ED
7C
AA
90
0F
3.2.3 DESCIFRADO
El descifrado sigue la estructura de la figura 3-29. El proceso de expansin de
llave es el mismo que se emple en el proceso de cifrado.
3.2.3.1 Ronda 1
Como
W4, W5,W6,W7
Descifrado
TEXTO CIFRADO
128 Bits
Ronda
1
Ronda
2
Ronda
9
Ronda
Final
TEXTO PLANO
128 Bits
Expansin de llave
W41
W42
W43
W40
W37
W38
W39
W36
W5
W6
W7
Temp Xor
W4
W0
W1
W2
W3
Rcon
SubWord
RotWord
LLAVE
128 Bits
123
XOR
ShiftRows Inv.
SubBytes Inv.
XOR
MixColumns Inv.
ShiftRows Inv.
SubBytes Inv.
124
B. ShiftRows inversa
La operacin ShiftRows, de forma inversa se realiza como una permutacin,
tal como indica la figura 3-30.
pero la
sustitucin de los valores se los aplica con la caja-S inversa. Los valores de la
caja-S inversa se muestran en la tabla 3-5. El fundamento matemtico para la
obtencin de estos valores se desarrolla en el anexo 10.
125
W[38] y W[39]. El dato de entrada para la ronda tres ser el resultado de la ronda
dos y las palabras W[35], W[36], W[37] y W[38], y as sucesivamente. Las etapas
que corresponden a cada una de estas rondas son:
A. Xor
B. MixColumns Inversa
C. ShiftRows Inversa
D. SubByte Inversa
A continuacin se detalla el funcionamiento de la etapa MixColumns inversa, ya
que las otras etapas se realizan de la misma forma que se describi en el punto
anterior.
B. MixColumns inversa
Consiste en multiplicar
126
a.
b.
c.
d.
127
Botn Cifrar
Botn Descifrar
Botn Guardar
Botn Abrir
Botn Clear
Botn Salir
128
Inicio
No
Cifrar
Si
Ingresar
Texto plano
Llave
Ingresar
Texto cifrado
Llave
Texto plano TP
Llave K
Texto cifrado TP
Llave K
TP vacio
K = 128 bits
TC vacio
K = 128 bits
No
No
Si
Si
Texto Cifrado TC
Texto Plano TP
Cifrar:
TC [TP,K]
Descifrar:
TP [TC,K]
Escribir TC
Escribir TP
Cifrar nuevo TP
Descifrar nuevo TC
Si
No
No
Salir
Fin
129
Registro
Paralelo/Serial
Mdulo en Matlab
de
envio
y
recepcion de datos
UART Rx/Tx
Cifrador
AES
PC
Comparador
Activador
FPGA
anterior, los segundos 128 representan la entrada de las 4 subllaves y los 128
pines de salida corresponden a la salida de cada ronda.
El bloque de la ronda inicial de igual manera tambin posee 384 puertos, 256 de
entrada y 128 de salida. Los primeros 128 de entrada representan los datos del
130
texto plano, los segundos 128 de entrada representan los datos de entrada de las
4 subllaves y los 128 puertos de salida corresponden a la salida de la ronda
inicial y la entrada a la ronda uno.
Por otra parte el bloque expansin de la llave posee 1536 puertos, de los cuales
128 son de entrada y los restantes 1408 son de salida. Los 128 de entrada
corresponden la llave que ingresa el usuario y los puertos de salida corresponden
a las 44 subllaves generadas a partir de la llave inicial. En este bloque se tendra
que las 44 subllaves son generadas en paralelo.
Como ventaja de este diseo se tiene la velocidad en cuanto al procesamiento de
los datos ya que estos en su mayora se calculan,
en forma paralela. La
y espacios de
131
132
133
134
rd : in STD_LOGIC;
wr : in STD_LOGIC;
w_data : in STD_LOGIC_VECTOR (B-1 downto 0);
empty : out STD_LOGIC;
full : out STD_LOGIC;
r_data : out STD_LOGIC_VECTOR (B-1 downto 0);
Donde los valores de B corresponden a un tipo de dato generic denotado
como:
generic( B: natural := 8);
A diferencia de la fifo de recepcin, aqu se almacenan 128 bits
correspondientes al texto cifrado. Los datos en la fifo de transmisin, se
reciben serialmente mediante la entidad registro. Una vez que se llena la
fifo se enva la bandera de full que es visualizada mediante un led en la
tarjeta y se envan los datos manualmente a la uart_tx. La lectura y envi
de los datos se realiza de uno en uno en bloques de 8 bits, como indica la
figura 3-38.
135
Entidad uart_tx, enva los datos cifrados a la interfaz grfica para que
sean visualizados por los usuarios. [3.6]
Los puertos de entrada y salida son:
clk : in STD_LOGIC;
reset : in STD_LOGIC;
tx_start : in STD_LOGIC;
s_tick : in STD_LOGIC;
din : in STD_LOGIC_VECTOR (7 downto 0);
tx_done_tick : out STD_LOGIC;
tx : out STD_LOGIC;
El diseo de este bloque contempla una mquina de estados finitos. En
este diseo se tiene cuatro estados:
Idle
Start
Data
Stop
136
137
138
139
140
Entidad inpu_ronda_inicial,
141
Entidad ronda, esta entidad es generada una sola vez, pero es clonada
nueve veces correspondientes a las nueve rondas del proceso de cifrado.
Los puertos de entrada y salida son:
cin1 : in STD_LOGIC_VECTOR (31 downto 0);
cin2 : in STD_LOGIC_VECTOR (31 downto 0);
cin3 : in STD_LOGIC_VECTOR (31 downto 0);
cin4 : in STD_LOGIC_VECTOR (31 downto 0);
subllave: in std_logic_vector (127 downto 0);
cout1 : out STD_LOGIC_VECTOR (31 downto 0);
cout2 : out STD_LOGIC_VECTOR (31 downto 0);
cout3 : out STD_LOGIC_VECTOR (31 downto 0);
cout4 : out STD_LOGIC_VECTOR (31 downto 0);
De este proceso es importante describir la lgica de descripcin de
hardware de cada una de las entidades internas:
142
A. subByte
B. shiftRows
C. mix_column
D. ope_xor
143
process(byte_Uno)
begin
aux(31 downto 24) <= SBOX(to_integer(unsigned(byte_Uno)));
end process;
144
B. Entidad shiftRows
Este bloque realiza un desplazamiento de las filas de la matriz de estado. Para
representar este desplazamiento en este diseo se realiza el reordenamiento
de los elementos de las columnas de la matriz de estado ya que en este
bloque se tiene como elementos de entrada columnas. La figura 3-49, contiene
fragmento de cdigo de esta permutacin.
downto
downto
downto
downto
24)&cin2(23
24)&cin3(23
24)&cin4(23
24)&cin1(23
downto
downto
downto
downto
16)&cin3(15
16)&cin4(15
16)&cin1(15
16)&cin2(15
downto
downto
downto
downto
8)&cin4(7
8)&cin1(7
8)&cin2(7
8)&cin3(7
downto
downto
downto
downto
end arch;
figura 3-50
muestra
0);
0);
0);
0);
145
146
Caso 1
= 11110000 = F0 =
Multiplicacin de por {02}
11110000
10
111100000
111100000
100011011
011111011
11110000
11
100010000
Reducir mdulo 11B
+ + ++1
1
100010000
100011011
000001011
147
Caso 2
= 01110000 = 70 =
01110000
10
011100000
= 10010000
De lo explicado en el caso 1 y 2, se puede realizar las operacines de
mix_columun en VHDL como se indica en el la figura 3-51.
process (c1,polinomio_red)
begin
-- Multiplicacin ;
if
y luego se
148
La
figura 3-52
muestra
149
figura 3-54
muestra
150
Entidad ronda10,
151
Entidad LLAVE_EXPANSION,
las
operaciones
AfterRotWord,
AfterSubWord,
SubBytes,
152
153
process(byte_Uno)
begin
aux(31 downto 24) <= SBOX(to_integer(unsigned(byte_Uno)));
end process;
154
La figura 3-59 ilustra la simulacin de la entidad cifrador, con los siguientes datos
de entrada:
Llave ABCDEFGHIJKLMNOP
155
156
wr : in STD_LOGIC;
rd : in STD_LOGIC;
w_data : in STD_LOGIC_VECTOR (127 downto 0);
r_data : out STD_LOGIC_VECTOR (7 downto 0);
157
158
159
REFERENCIAS
[3.1] (2012) Grupo (Matemtica). [Online]. Disponible:
http://es.wikipedia.org/wiki/Grupo_(matem%C3%A1tica)
[3.2] W. Stallings, Cryptography and Network Security Principles and Practices.
Cuarta Edicin, 2005.
[3.3] J. Daemen y V. Rijrnen, The Design of Rijndael AES The Advanced
Encryption Standard, Primera Edicin, 2002.
160
CAPTULO 4
PRUEBAS Y RESULTADOS
Una vez que se ha expuesto el cifrado S-DES, los estndares DES y AES en
MatLab como en VHDL; en este captulo se procede a realizar la verificacin de
los resultados obtenidos a nivel de software y hardware.
S-DES en MatLab.
S-DES en VHDL.
en
Llave 0100000101
161
Llave 0100000101
162
comprender de una forma educativa las distintas etapas del algoritmo de cifrado
DES.
163
Se puede observar que los recursos utilizados son pocos, ya que este es un
ejemplo bsico introductorio a VHDL y la complejidad del algoritmo S-DES en
relacin a las operaciones matemticas necesarias para su implementacin son
mnimas comparada con diseos posteriores.
Se usa el 1% de IOBs correspondiente a 12 de 640 puertos disponibles de
entrada y salida.
Para el diseo de los bloques en hardware se usan 387 de 69190 slice. Como
elementos de almacenamiento se usa un 42% correspondiente a 164 de 387
LUT-FF.
4.1.2.2 Implementacin
Una vez realizada la sntesis y al no haber errores en esta etapas se procede a
generar el archivo UCF, de asignacin de pines para la los puertos de entrada y
salida. Los puertos del dispositivo FPGA correspondientes a
xc5vlx110t se
164
165
166
Tarjeta flash 1 G
Hyperterminal
Fuente de alimentacin
Cables XUP-USB
Tarjeta de entrenamiento
Figura 4-7. Elementos para ejecutar el cifrador S-DES con un dispositivo FPGA.
Las propiedades de comunicacin en el hyperterminal son las siguientes:
167
Llave 0100000101
Resultado:
Texto Cifrado 1 1 0 1 0 0 0 1
168
1000
1011
en
Llave fernanda
169
170
171
AES en MatLab.
AES en VHDL.
en
MatLab 7.6.0 (R2008a). En este diseo el usuario puede usar el programa para:
A. Cifrar. El usuario deber ingresar un texto plano y la llave en formato
ASCII. El proceso de cifrado se ejecutar con el botn
Cifrar y es
172
173
174
Used
[-]
Available
613
613
Utilization
69,120
1%
9,732
69,120
14%
9,730
69,120
14%
3,325
17,280
19%
9,475
10,088
93%
356
10,088
3%
257
10,088
2%
69,120
1%
640
1%
100%
Number of BUFG/BUFGCTRLs
32
3%
Note(s)
10,088
11.30
4.3.2.2 Implementacin
Una vez realizada la sntesis, se procede a generar el archivo UCF, de asignacin
de pines para la los puertos de entrada y salida. Los puertos del dispositivo FPGA
175
176
5
1
7
6
177
Llave ABCDEFGHIJKLMNOP
En ingreso de los datos antes descritos, se observa en la figura 4-18, para mayor
facilidad del usuario el texto plano y la llave se ingresan en formato ASCII; y para
la comprobacin del resultado el texto cifrado se muestra en formato hexadecimal.
El usuario debe seleccionar el puerto de comunicacin serial:
Resultado:
178
Figura 4-19. Ingreso texto plano para el proceso de cifrado AES en openssl.
2. Para cifrar el archivo textoplano.txt se utiliza el comando:
179
180
CAPTULO 5
CONCLUSIONES Y RECOMENDACIONES
5.1 CONCLUSIONES
Se verifica que el estndar de cifrado AES, posee una estructura ptima y
eficiente para ser implementado en hardware, ya que las operaciones que se
utilizan para transformar la informacin no consumen muchos recursos de
hardware.
El diseo planteado, es en su mayora un diseo combinacional es decir que el
valor de las salidas dependen del valor de las entradas, la ventaja de este tipo de
diseo es que se obtiene mayor rapidez para realizar las operaciones de cifrado,
la desventaja de este tipo de diseo es que se utilizan ms recursos del FPGA.
Otra alternativa de diseo sera el diseo con retroalimentacin ya que este nos
permite en su mayora reutilizar el hardware, el problema de este diseo es que
los resultados son ms lentos ya que el valor de las salidas dependen del valor de
las entradas y de un estado anterior, dado que el FPGA utilizado corresponde a la
familia Virtex 5, el misma que posee ms recursos de hardware se escogi el
diseo combinacional.
El bloque que realiza la operacin de la mezcla de columnas (mix columns), en un
diseo inicial se describi como una operacin de multiplicacin y reduccin de
polinomios, dicha solucin consuma demasiados recursos de hardware a tal
punto que el esquema total de diseo del estndar AES no poda ser realizado,
por tal motivo este bloque fue rediseado.
En un diseo inicial para la implementacin de S-DES, se intent usar el cdigo
realizado en MatLab, asimilarlo y convertirlo en VHDL, para lo cual se usa
subprogramas (funciones, subrutinas y procesos). Este mtodo no result
efectivo, ya que se cre cdigo con la sintaxis correcta, pero no sintetizable, ya
181
182
5.2 RECOMENDACIONES
Se recomienda implementar un sistema de cifrado AES ms equilibrado en el
sentido de que se use la menor cantidad de recursos del FPGA, sin que esto
disminuya la velocidad de procesamiento del sistema implementado.
Para optimizar la cantidad de recursos utilizados en los FPGAs, se debe utilizar
una metodologa de descripcin de hardware que se conoce como la
transferencia de registros (RT por sus siglas en ingls), esta metodologa
contempla la reutilizacin de registros y localidades de memoria del chip,
adicionalmente este tipo de descripcin permite implementar modelos o sistemas
de programacin secuenciales.
Se debe tener muy en cuenta la sincronizacin cuando se realice un determinado
diseo de un sistema, ya que si se realiza una errnea forma de descripcin del
circuito, cuando este se sintetiza se infiere la creacin de latches no previstos, los
mismos que dan lugar a la desincronizacin de las entidades internas del circuito
principal, producindose resultados de salida errneos.
Se recomienda tener mucho cuidado cuando se describe un determinado circuito
utilizando el lenguaje VHDL, cuando se realiza los procesos de traslate, map y
place & route, si en este proceso se generan warnings se debe prestar mucha
atencin a los mismos, ya que ellos nos pueden informar sobre la creacin de
latches o la desconexin de un determinado puerto de una entidad.
183
ANEXO 1
184
ANEXO 2
por
conmutador
programable
en
comparacin
con
las
185
186
a
b
c
LUT
MUX
q
FLIPFLOP
cl
k
187
LXT: familia que optimiza un alto rendimiento lgico con baja potencia y
conectividad serial.
El nmero de CLBs.
188
189
Una
tarjeta
entrenamiento
de
XUPV5-
LX110T.
Un cable SATA.
Un adaptador de DVI a
VGA.
Una
fuente
de
alimentacin 6A.
190
Una tarjeta de 32 bits ZBT sincrnica con SRAM e Intel P30 StrataFlash.
Un puerto USB.
Un cdec stereo AC97 lnea in, lnea out, auricular, micrfono y conectores
para audio digital SPDIF.
Un puerto RS-232.
Bloques de entrada/salida.
191
Fuente [A2.1]
Figura A2-5. Disposicin de sectores en un CLB.
Las herramientas de Xilinx identifican a los slices de la siguiente manera:
Una Y seguida por un identificador nos dice a qu fila del CLB pertenece el
slice. En la figura A2-6, se muestra un ejemplo de la ubicacin de los slice
en el CLB.
192
Fuente [A2.1]
Figura A2-6. Ubicacin de los slice en el CLB.
El nmero de recursos lgicos en un CLB se especifican en la tabla A2-2.
Slice
LUTs
Flip-flops
Arithmetic
and carry
chains
Distributed
RAM
Shift register
256 bits
128 bits
2.2.1.1.1. Slice
Un slice contiene cuatro generadores de funciones lgicas o tambin conocidas
como Look-Up Tables (LUTs), cuatro elementos de almacenamiento, multiplexers
y lgica de acarreo (carry logic). Estos elementos son utilizados por todos los
slices para proveer operaciones lgicas, operaciones de aritmtica y funciones de
ROM.
En algunos casos los slices pueden soportar dos funciones adicionales:
almacenamiento de datos utilizando una RAM distribuda y desplazamiento de
datos con registros de 32 bits, estos slices se los conoce como: SLICEL y
SLICEM.
En la figura A2-7, se muestra la estructura de SLICEM.
193
Fuente [A2.1]
Figura A2-7. Estructura de un SLICEM.
Los elementos que forman un slice son:
A. Look_Up Tables.
B. Elementos de almacenamiento.
194
C. RAM distribuda.
D. ROM.
E. Registros de desplazamiento.
F. Multiplexores.
G. Lgica de acarreo rpida.
A. Look-Up Tables
Los generadores de funcin LUTs son basados en una memoria RAM, tienen seis
entradas independientes (por ejemplo si se tiene las entradas A, estas se
numeran de A1 hasta A6) y dos salidas independientes (O5 y O6) para cada uno
de los generadores de funcin en un slice denominados A, B, C y D. Los
generadores de funcin pueden ser definir cualquier funcin booleana.
Un slice adems de contener LUTs, contiene multiplexores:
B. Elementos de almacenamiento
Como elementos de almacenamiento en un slice se tiene un arreglo de flip-flops
tipo D o latches sensibles a nivel, las entradas para los flip-flops tipo D son
manejadas por multiplexores.
En la figura A2-8, se muestra la configuracin de los flip-flops en un slice.
C. RAM distribuda
La RAM distribuda solo puede estar habilitada en el SLICEM, en esencia
mltiples LUTs pueden ser combinados de varias maneras para almacenar
grandes cantidades de datos. Los mdulos de RAM distribuda son sincrnicos
195
Fuente [A2.1]
Figura A2-8. Configuracin de los flip-flops en un slice.
En la tabla A2-3, se muestra el nmero de LUTs (4 por slice) ocupados por cada
configuracin de RAM distribuda.
196
RAM
32 x 1S
Nmero de
LUTs
1
32 x 1D
32 x 2Q
32 x 6 SDP
64 x 1S
64 x 1D
64 x 1Q
64 x 3SDP
128 x 1S
128 x 1D
256 x 1S
Q: puerto cudruple
D: puerto dual
D. ROM
Cada generador de funcin en SLICEM o en SLICEL puede implementar una
memoria ROM de 64 x 1 bit. De este esquema resulta tres posibles
configuraciones de ROM: ROM 64 x 1, ROM 128 x 1 y ROM 256 x 1
ROM
64 x 1
Nmero de
LUTs
1
128 x 1
256 x 1
197
E. Registros de desplazamiento
Los registros de desplazamiento nicamente se encuentran habilitados en el
SLICEM. Un generador de funcin de un SLICEM tambin puede ser configurado
como un registro de desplazamiento de 32 bits, sin usar los flip-flops presentes en
ese slice. Ciertas aplicaciones requieren cierto retardo o latencia por lo que hacen
uso de estos registros de desplazamiento para realizar diseos eficientes. Los
registros de desplazamiento son muy usados para implementar una memoria
FIFO.
F. Multiplexores
Los generadores de funciones y los multiplexores presentes en el FPGA Virtex-5,
pueden implementar los siguientes multiplexores:
198
Fuente [A2.1]
Figura A2-9. Configuracin de los flip-flops en un slice.
2.2.1.2 Bloques RAM
En adicin con la memoria RAM distribuda, los dispositivos Virtex-5 presentan un
gran nmero de bloques RAM de 36Kb. Cada bloque RAM contiene dos bloques
RAM de 18Kb cada uno, los mismos que son controlados independientes uno del
otro.
Los bloques RAM estn ubicados en columnas y el nmero total de bloques RAM
depende del tamao del dispositivo Virtex-5, adems los bloques de 36Kb se
encuentran ubicados en cascada para que cuando estos sean habilitados la
penalizacin en tiempo sea mnima.
199
200
Fuente [A2.1]
Figura A2-10. Memoria RAM de puerto dual.
2.2.1.2.4 Modos de escritura en la memoria RAM
Write_first
Es el modo por default, el dato de entrada es escrito simultneamente en la
memoria y almacenado en el dato de salida. En la figura A2-11, se muestra
las formas de onda correspondientes a este modo de escritura.
Fuente [A2.1]
Figura A2- 11. Formas de onda para el modo WRITE_FIRST.
201
Read_First
En este modo los datos deben ser previamente almacenados para que
luego estos puedan ser ledos. En la figura A2-12, se muestra las formas
de onda del modo READ_FIRST.
Fuente [A2.1]
Figura A2-12. Formas de onda para el modo READ_FIRST.
202
El bloque RAM puede ser configurado como una memoria FIFO con un reloj
comn para realizar las operaciones de escritura y lectura, o tambin con un reloj
independiente. El puerto A del bloque RAM es usado como un puerto de lectura
de la memoria FIFO y el puerto B del bloque RAM es usado como el puerto de
escritura de la memoria FIFO. El dato es ledo de la memoria FIFO con cada
flanco del reloj de lectura y un dato es escrito en la memoria FIFO con cada flanco
del reloj de escritura.
Fifo Multirate
Este tipo de memoria ofrece una interfaz de usuario muy sencilla. Los
relojes de lectura y escritura pueden ser de idnticas o diferentes
frecuencias y ests pueden ser seleccionadas hasta su lmite mximo de
frecuencia.
Este diseo evita cualquier ambigedad o problemas de estabilidad aun
cuando las frecuencias sean completamente diferentes.
203
Fuente [A2.1]
Figura A2-13. Estructura bsica de un IOB.
2.2.1.3.1 Organizacin en bancos de los pines de entrada/salida
Dependiendo del dispositivo Virtex-5 el nmero de IOBs de entrada/salida vara
entre 220 y 1200.
Un banco consiste de 40 IOBs cada uno, con excepcin de algunos bancos
centrales que son de 20 IOBs. Una tensin de alimentacin VCCO es la que
alimenta a cada uno de los bancos, esta tensin es comn a cada uno de los
pines, as como algunos buffers de entrada.
Cada bloque IOB es muy verstil y puede ser configurado con diferentes valores
de tensin (1.2 a 3.3 V). Con excepcin de los pines de alimentacin
y de los
que son dedicados a seales de reloj. La figura A2-14, indica la distribucin de los
bancos.
Fuente [A2.1]
Figura A2-14. Distribucin de los bancos.
204
205
206
2.2.1.5.1 DCM
El administrador digital de relojes (DCM) en los dispositivos Virtex-5 presenta:
A. Reloj de Alineacin.
B. Sntesis de Frecuencia
C. Desplazamiento de Fase
Fuente [A2.1]
Figura A2-15. Regiones de reloj.
Fuente [A2.1]
Figura A2-16. Ubicacin de un CMT.
207
A. Reloj de Alineacin
El DCM contiene un lazo cerrado de retardo (DLL) para eliminar los retardos de la
distribucin de reloj.
El DLL contiene elementos de retardo, unos pequeos buffers y lgica de control.
La lgica de control contiene un detector de fase y un selector de lnea de retardo.
El detector de fase compara la seal entrante de reloj (CLKIN) con una seal de
entrada de retroalimentacin (CLKFB) y dirige el retraso de la lnea del selector,
luego adiciona retardo a la salida del DCM hasta que la seal CLKIN coincida con
la seal CLKFB.
B. Sntesis de Frecuencia
El usuario puede especificar cualquier nmero entero, un multiplicador M y un
divisor D dentro del rango especificado en el data sheet. Una calculadora interna
determina la seleccin apropiada para hacer que el flanco de salida coincida con
el reloj de entrada cuando sea matemticamente posible.
C. Desplazamiento de Fase
EL DCM permite desplazamiento de frecuencia fino y grueso. El desplazamiento
grueso de frecuencia usa las fases de 90o 180 o y 270 o de CLK0 para construir
CLK90 CLK180 y CLK270.
El desplazamiento fino permite a todas las salidas del reloj DCM ser desplazadas
en fase con respecto al CLKIN mientras mantiene la relacin entre la fase de
salida gruesa.
2.2.1.5.2 PLL (phase locked loop)
El propsito principal de un PLL es servir como un sintetizador de frecuencia para
un amplio rango de frecuencias y para servir como un filtro de jitter para relojes
208
Fuente [A2.1]
Figura A2-17. Diagrama de bloques de un PLL.
El corazn de un PLL es un oscilador controlado por voltaje o VCO (Voltage
Controllerd Oscillator) con un rango de frecuencias de 400MHz a 1100MHz. A
partir de tres divisores de frecuencia programables (D, M y O) se adapta el VCO a
la aplicacin requerida.
El VCO tiene ocho salidas igualmente espaciadas (0 , 45 , 90 , 135 , 225 , 270
, y 315 ) cada una de las cuales puede ser seleccionada para atacar uno de los
seis divisores de salida. Cada divisor puede ser configurado en un rango entero
de 1 a 127.
El PLL tiene dos opciones de filtrado de jitter de la seal de entrada: modo de
ancho de banda ancha o estrecha. El modo de ancho de banda estrecha es el
que ms atena el jitter, pero no debe ser usado con relojes que cambian de
frecuencia rpidamente. En cambio, el modo de banda ancha produce menor
atenuacin del jitter y est pensado para relojes de entrada que pueden variar su
frecuencia rpidamente.
209
REFERENCIAS
[A2-1] Virtex-5 User Guide UG190(v 5.3), Xilinx, 2010.
210
ANEXO 3
INTRODUCCIN A VHDL
3. VHDL
HDL por sus siglas en ingls hardware description language, es un lenguaje
utilizado para describir el comportamiento de un circuito electrnico o un sistema.
Los lenguajes HDL ms utilizados son Verilog y VHDL, este proyecto de titulacin
se ha desarrollado en VHDL.
VHDL por el acrnimo VHSIC Hardware Description Language, VHSIC a su vez
por
3.1.
Library.
Entity.
Architecture
211
LIBRARY nombre_librera;
USE nombre_librera.nombre_paquete.parte_paquete;
Especificacin
Especifica el tipo de dato STD_LOGIC
std_logic_arith
std_logic_signed
std_logic_unsigned
El paquete std_logic_1164, debe ser colocado cuando se necesite hacer uso del
tipo de dato std_logic, este tipo de dato se utiliza cuando se representa una seal
o variable, cuando varan de uno y cero.
212
ENTITY
PORT
nombre_entidad
IS
nombre_puerto :
nombre_puerto :
modo_seal
modo_seal
tipo_seal;
tipo_seal;
...);
END
nombre_entidad;
Ejemplo:
Se desea implementar la compuerta lgica Xor, la entidad sera la siguiente:
entity Xor_compuerta is
Port (
operando1 : in
STD_LOGIC;
operando2 : in
STD_LOGIC;
salida : out
STD_LOGIC);
end Xor_compuerta;
213
ARCHITECTURE
nombre_arquitectura
OF nombre_endidad
IS
[inicializacin_seales]
BEGIN
(cdigo)
END
nombre_arquitectura
214
BIT {0,1}
STD_LOGIC 8 valores
215
Weak high
Dont care
[A3-4]
1, Z, W, L, H, -)
3.3 OPERADORES
El lenguaje VHDL es muy verstil, ya que posee una serie de operadores, entre
ellos se puede citar operadores de tipo aritmtico para realizar operaciones
como: suma, resta, multiplicacin, exponenciacin y divisin. Para utilizar estos
operadores se debe tener en cuenta que slo aceptan operadores de tipo
entero.Existen tambin operadores de concatenacin, operadores para realizar
operaciones de comparacin entre dos operandos, para verificar si un operando
es igual a otro, o si no lo es, para comprobar si un operando es mayor o menor,
etc.
Otro tipo de operadores son los lgicos, como la operacin not, xor, and, or, pero
estos slo se aplican a tipos de datos boolean, std_logic y std_logic_vector.
Se debe tener precaucin al momento de sintetizar un circuito ya que no todos los
operadores son sintetizables como por ejemplo el operador de la divisin es un
operador no sintetizable, ya que se gastara muchos recursos de hardware para
sintetizar dicha operacin, por lo tanto al momento de realizar la sntesis se va a
producir un error. La descripcin de los operadores y los tipos de datos aplicables
se resumen en la tabla A3-2.
216
Operator
Description
a **b
abs a
not a
exponentiation
absolute value
negation
a*b
a /b
a mod b
a rem b
+a
-b
a+b
ab
a&b
a sll b
a sri b
a sla b
a sri b
a rol b
a ror b
multiplication
division
modulo
remainder
Identity
negation
Addition
subtraction
concatenation
shift-left logical
shift-right logical
shift-left aritmetic
shift-right aritmetic
rotate left
rotate right
a=b
a /=b
a<b
a <= b
a>b
a >= b
a and b
a or b
a xor b
a nand b
a nor b
xnor b
equal to
not equal to
less than
less than or equal to
greater than
grater than or equal to
And
or
xor
nand
nor
xnor
Data type
of operand a
integer
integer
boolean, bit,
bit_vector
integer
Data type
of operand b
intenger
Integer
integer
Data type
of result
Integer
integer
boolean, bit,
bit_vector
Integer
Integer
Integer
1-D array,
element
bit_vector
Integer
1-D array,
element
Integer
Integer
1-D array
any
same as a
Boolean
scalar or 1-D
array
same as a
boolean
boolean, bit
bit_vector
same as a
same as a
bit_vector
[A3-3]
217
1-------------------------------------------------------------------2-- Company:
3-- Engineer:
4-5-- Create Date:
17:45:50 05/05/2012
6-- Design Name:
7-- Module Name:
xor_entity - arch
8-- Project Name:
9-- Target Devices:
10-- Tool versions:
11-- Description:
12-13-- Dependencies:
14-15-- Revision:
16-- Revision 0.01 - File Created
17-- Additional Comments:
18-19------------------------------------------------------------------20library IEEE;
21use IEEE.STD_LOGIC_1164.ALL;
22
23-- Uncomment the following library declaration if using
24-- arithmetic functions with Signed or Unsigned values
25--use IEEE.NUMERIC_STD.ALL;
26
27-- Uncomment the following library declaration if instantiating
28-- any Xilinx primitives in this code.
29--library UNISIM;
30--use UNISIM.VComponents.all;
31
32entity xor_entity is
33
Port ( a : in STD_LOGIC;
34
b : in STD_LOGIC;
35
salida : out STD_LOGIC);
36end xor_entity;
37
38architecture arch of xor_entity is
39
40begin
41
salida <= a xor b;
42
43end arch;
218
32entity xor_entity is
33
Port ( a : in STD_LOGIC;
34
b : in STD_LOGIC;
35
salida : out STD_LOGIC);
36end xor_entity;
3.5 OBJETOS
Existen cuatro tipos de objetos en VHDL: signal, variable, constant y file.
Signal: Este es el objeto ms utilizado en el lenguaje VHDL y se declara entre la
arquitectura y la palabra reservada begin.
Las signals son de tipo global, cuando son declaradas estas pueden ser utilizadas
por cualquier proceso. La sintaxis de una seal es la siguiente:
SIGNAL
nombre_seal : tipo_de_dato
219
Tambin se pueden declarar de tipo array como por ejemplo una seal del tipo
std_logic_vector:
signal byte : std_logic_vector;
A diferencia de una seal, la variable slo puede ser de tipo local, es decir slo
puede ser utilizado en el interior de un proceso.
Una variable tambin puede tomar un valor inicial:
variable x := 1;
Constantes: Una contaste toma un valor que no puede ser cambiado. Su sintaxis
es:
220
Instruccin when/else
Este tipo de instrucciones son similares a las instrucciones if y case en un
lenguaje tradicional de programacin, su sintaxis es la siguiente:
nombre_seal <= valor_expresion_1 when boolean_expresion_1 else
valor_expresion_2 when boolean_expresion_1 else
valor_expresion_n;
221
Ejemplo:
Se representar un circuito que se activa en 1 cuando se ingrese un
determinado valor, en este caso la salida ser verdadera si se ingresa el
ASCII que corresponde a la letra A mayscula (01000001).
---------------------------------------- Entidad comparador
--------------------------------------entity comparador is
Port (
end comparador;
---------------------------------------- Arquitectura arch
--------------------------------------architecture arch of comparador is
begin
salida <= 1 when (entrada = 01000001) else
0;
end arch;
Instruccin with/select/when
Esta sentencia es muy similar a una sentencia case en un lenguaje de
programacin tradicional, su sintaxis es:
Ejemplo:
Se representar un circuito multiplexor.
222
---------------------------------entity multiplexor is
Port ( entrada : in STD_LOGIC_VECTOR(1 downto 0);
seleccionador : in STD_LOGIC_VECTOR(1 downto 0);
salida : out STD_LOGIC_VECTOR(1 downto 0));
end multiplexor;
---------------------------------------- Arquitectura arch
Instruccin process
Esta instruccin nos permite encapsular instrucciones de tipo secuencial,
per la instruccin process en si es un tipo de instruccin concurrente, es
decir se ejecuta en paralelo con las dems instrucciones siempre y cuando
una seal que se encuentra en el interior de su lista sensitiva cambie.
Existe una gran variedad de instrucciones secuenciales, pero muchas de
ellas no son sintetizables en hardware. Para no tener problemas de sntesis
se debe tener en cuenta dos aspectos importantes en el uso de la
instruccin process:
223
Instruccin if y else
El significado de estas sentencias es el miso que para un lenguaje de
programacin tradicional. Su sintaxis es:
if (expresin_booleana_1) then
sentencias_secuenciales;
elsif (expresin_booleana_2)then
sentencias_secuenciales;
else (expresin_booleana_3) then
sentencias_secuenciales;
end if;
Ejemplo:
Como ejemplo un comparador de seales, se puede evaluar condiciones
para activar una u otra seal dependiendo de las seales en la lista
sensitiva
224
---------------------------------------- Proccess
---------------------------------process (a, b, c)
begin
if (a = 1) then
salida <= 00;
elsif (b = 1) then
salida <= 01;
else
salida <= 11;
end process;
Sentencia case
El significado de estas sentencias es el miso que para un lenguaje de
programacin tradicional. Su sintaxis es:
case selector is
when caso1 =>
sentencias_secuenciales;
when caso2 =>
sentencias_secuenciales;
when others =>
sentencias_secuenciales;
end case;
3.7 COMPONENTS
Los components son cdigo que es utilizado para la construccin de un diseo
jerrquico.
Ejemplo:
225
Paso tres: se realiza la unin de las dos entidades OR y NOT, para formar la
entidad de nivel superior NOR.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
226
entity Nor_entity is
Port ( operando1 : in STD_LOGIC;
operando2 : in STD_LOGIC;
salida_nor : out STD_LOGIC);
end Nor_entity;
architecture Behavioral of Nor_entity is
signal entrada_aux : std_logic;
begin
-- Declaracin de la entidad Not_entity.
Not_unit : entity work.Not_entity(Behavioral)
port map(
c => entrada_aux,
salida_not => salida_nor
);
-- Declaracin de la entidad Or_entity.
Or_unit : entity work.Or_entity(Behavioral)
port map(
a => operando1,
b => operando2,
salida_or => entrada_aux
);
end Behavioral;
Nor_entity:1
Or_en
Or_entity
r
tity
operand
o1
operand
o2
Not_entity
salida_
or
salida_
not
Or_unit
Not_unit
Nor_entity:1
Figura A3-2. Diagrama RTL de la compuerta NOR.
salida_
nor
227
REFERENCIAS
[A3.1] W. Fook , Coding and Logic Synthesis with Synopsys. Primera Edicin,
2000.
[A3.2] P. Chu, FPGA Prototyping by VHDL Examples. Primera Edicin, 2008.
[A3.3] P. Chu, RTL HARDWARE DESIGN USING VHDL. Primera Edicin, 2006.
[A3.4]
P. Vonei,
228
ANEXO 4
MI PRIMER PROYECTO EN ISE PROJECT NAVIGATOR
13.1
Este anexo describir un ejemplo bsico para la utilizacin del ISE, la versin
usada es 13.1, la versin es fundamental ya que en esta se pueden realizar
diseos que son ejecutados en una tarjeta de entrenamiento Virtex-5. El software
puede ser descargado de la pgina oficial de xilinx:
http://www.xilinx.com/support/download/index.htm
Creando una cuenta en este sitio web, se puede obtener una licencia de prueba
que dura 30 das. Se proceder como ejemplo prctico la implementacin de una
compuerta xor de dos bit de entrada.
Una vez instalado el software los pasos a seguir son:
1. Abrir la Aplicacin Xilinx ISE.
229
el
nombre
del
MI_PRIMER_PROGRAMA_VHDL.
b. Indicar la ubicacin del proyecto.
c. Top-Level: HDL.
d. Clic Next.
proyecto
en
este
caso:
230
a. Name:
MI_PRIMER_PROGRAMA_VHDL
b. Location: En la carpeta
XilinxProy (que se crea cuando se
instala el programa)
231
232
MI_PRIMER_PROGRAMA_VHDL
c. Source for:
Implementation
a. Clic: derecho
b. New Source
233
a. VHDL
MODULE
XOR_entity
d. NEXT
11. Se definen las caractersticas la aplicacin, que desde este momento la se
llama como una entidad Xor_entity, la cual contiene una arquitectura, puertos
de entrada y puertos de salida.
a. Entity Name:
XOR_entity
XOR_entity
b. Architecture
name: Behavioral
c. Puertos
de
Entrada: a y b
d. Puertos de Salida:
c
e. NEXT
NOTA: Una representacin grfica de esta entidad, es la siguiente:
234
a
b
XOR_entity
se da clic en
FINISH.
a. Selecciona
entidad:
Xor_entity
la
b. Se
programa
la
entidad, con el cdigo:
c <= a xor b;
d. Sintetizar
ar el programa
Synthesize
235
14. Se puede observar los recursos utilizados, dando clic en la parte inferior de la
pantalla en la opcin: Design Summary (Sinthesized).
b. Resumen de los
recursos utilizados
de la tarjeta.
236
b. Pines: DIP-Switch
a. LEDs
c. LEDs
237
4. En la opcin I/O Ports, se asignan los puertos dando doble clic en las entradas
a b, y en la salida c.
a U25
b AG27
cAF13
238
239
Implement Design
El proceso de implementacin consta de 3 etapas:
Translate.-
240
9. Una vez que se abra iMPACT, deben estar realizadas las conexin
correspondientes entra la tarjeta de entrenamiento y la PC.
10. Se muestra la interface de Impact, y se selecciona un NewProject.
241
El chip correspondiente,
donde se graba el programa.
Clic: Bypass
14. Cuando el chip 5, cambie de color a verde indica que se est trabajando en
este. En la ventana Asing New Configuration File, seleccionar el archivo .bit,
creado en el paso 8. Cargar el mismo y dar clic en OPEN.
242
Chip: XC5Vlx110t1ff1136
Seleccionar el archivo:
XOR_entity.bit
Clic: OPEN
Clic derecho:
seleccionar Program
243
18. Verificar envi de los datos y si todo es correcto dar un mensaje: succeeded.
244
ANEXO 5
SIMULACIN EN ISE PROJECT NAVIGATOR 10.1
La fase de simulacin se realiz en Ise Project Navigator 10.1, pues la versin
13.1 no tiene la herramienta Test Bench Waveform, que permite implementar la
simulacin.
En la versin 13.1, s se puede realizar simulaciones pero el proceso es ms
complejo ya que se tiene que programar los parmetros de la misma. Es por esta
razn que se ha optado por usar una versin anterior solo en esta etapa del
diseo. Los pasos a seguir son menos complejos y justifica usar la herramienta
Test Bench Waveform. El ejemplo que se va a simular es el realizado en el anexo
4.
Una vez creado el proyecto y sintetizado, se siguen los siguientes pasos para la
simulacin:
1. En la entidad xor_entity, dar clic derecho New source.
New source
Sntesis correcta
245
Nombre:
TBWF_xor_entity
3. Clic Next.
4. Clic Finish.
5. En esta ventana se detallan los parmetros del reloj, si todo es correcto dar
clic en Finish.
246
Seales entrada: a y b
247
a. Behavioral Simulation
b. Simulate
Behavioral
Model
248
y el
249
ANEXO 6
DIAGRAMA RTL
Un diagrama RTL por sus siglas en ingls Register Transfer Level,
es una
Clic
250
RTL
251
252
REFERENCIAS
[A6.1] Xilinx ISE Design Suite 13 Software Manuals, Xilinx, 2011.
253
ANEXO 7
254
ANEXO 8
255
ANEXO 9
CAMPOS FINITOS
9.1 GRUPO, ANILLO Y CAMPOS
Para comprender el significado de un Campo (F) se debe saber la definicin de
Grupo (G) y Anillo (R).
9.1.1 GRUPO
Un grupo es una estructura algebraica que consta de un conjunto (G), junto con
una operacin (), que combina cualquier pareja de elementos (a,b) de G, para
formar un tercer elemento ab o ab. Suele estar denotado por {G, } y para que
se pueda calificar como un grupo, el conjunto y la operacin deben satisfacer
algunas condiciones llamadas axiomas de grupo establecidos en la tabla A9-1.
[A9.1] [A9.2]
Condicin
Clausura
Asociativa
Elemento
Identidad
Elemento
Inverso
Definicin
a, b G : a b G
a, b, c G : (a b) c = a (b c)
e G, a G : a e = e a = a
a G, a G : a a = a a = e
256
+ : G x G G : (a , b) a + b.
[A9.3]
Condicin
Definicin
a, b G : a b G.
Clausura
a, b, c G : (a b) c = a (b c).
Asociativa
Conmutativa
Elemento Neutro
Elementos Inversos
a, b G : a b = b a.
0 G, a G : a + 0 = a.
a G, b G : a + b = 0
Tabla A9- 2. Condiciones para que sea un grupo abeliano {G,+}. [A9.3]
9.1.1.1.1 Anillo
Un anillo (R), es un conjunto de elementos con dos operaciones, llamadas adicin
y multiplicacin, cuya notacin es: {R, +, *}, de modo que {R,*} es un grupo
conmutativo con elemento neutro. El producto (*)
es asociativo y tiene la
La estructura
es un grupo abeliano.
257
Las dos operaciones (+) y (*) estn relacionadas por la ley distributiva.
9.1.1.1.2 Campo
F es un campo si y solamente si F es un anillo en el cul la multiplicacin es
conmutativa y cada elemento, excepto 0, tiene un inverso multiplicativo. Es
posible definir un campo {F,+,x}, con respecto a la adicin y la multiplicacin si:
GF(p)
GF(pn)
GF(2n)
258
Ejemplo:
259
[A9.2]
Expresin
(w+x) mod n = (x + w) mod n
(w x x) mod n =(x x w) mod n
Asociativa
[ (w + x) + y ] mod n = [ w + (x + y) ] mod n
[ (w x x) x y ] mod n = [ w x (x x y) ] mod n
Distributiva
[ w +( x + y) ] mod n = [( w x x) +( w x y) ] mod n
[w +( x x y) ] mod n = [( w + x) x ( w + y) ] mod n
Identidad
(0 + w) mod n = w mod n
(1 + w) mod n = w mod n
campo finito posee una estructura diferente que la de los campos finitos con n > 1.
[A9.2]
Para un nmero primo p, el campo finito de orden p se define como el conjunto de
enteros no negativos:
260
Zp,
es
modulo
decir
debe
Tambin se
para
Ejemplo:
Demostrar que GF(2) es un campo finito.
PD: ;
aritmtica
261
+ 0 1
0 0 1
1 1 0
Suma
x 0 1
0 0 1
1 1 0
Multiplicacin
x -w w-1
0 0 1 1 1
Inversos
Donde los ai
[A9.2]
262
[A9.2]
[A9.2]
Ejemplo:
Realizar las operaciones de aritmtica modular usando los polinomios f(x), g(x)
sobre GF(2) y MatLab:
Suma
% Operacin Suma
f = [1 1 0 0 1 1 1];
g = [0 0 0 0 1 1 1];
suma = mod(f+g,2)
suma = 1
1
0
0
0
0
0
% Respuesta en representacin polinomial
Resta
% Operacin Resta
f = [1 1 0 0 1 1 1];
g = [0 0 0 0 1 1 1];
resta = mod(f-g,2)
resta = 1
1
0
0
0
0
0
% Respuesta en representacin polinomial resta
Multiplicacin
% Operacin Multiplicacin
f = [1 1 0 0 1 1 1];
g = [0 0 0 0 1 1 1];
mult = mod(conv(f,g),2)
263
mult =
1
0
0
1
1
0
1
0
1
% Respuesta en representacin polinomial mult
Divisin
% Operacin Multiplicacin
f = [1 1 0 0 1 1 1];
g = [1 1 1];
div = mod(deconv(f,g),2)
div =
1
0
1
1
1
% Respuesta en representacin polinomial mult
Los factores del trmino independiente 1 son: -1 y +1. Al usar el factor -1; y
se divide para x + 1:
% Divisin f(x)/g(x).
f = [1 0 0 1];
g = [1 1];
% Almacenar cociente y
[q,r]=deconv(f,g);
% Convertir mod2 [q,r]
qmod = mod(q,2)
qmod = 1
1
1
rmod = mod(r,2)
rmod = 0
0
0
residuo en [q,r]
264
Ejemplo:
Los factores del trmino independiente 1 son: -1 y +1. Al usar el factor -1; y
% Divisin f(x)/g(x).
f = [1 0 1 1];
g = [1 1];
% Almacenar cociente y
[q,r]=deconv(f,g);
% Convertir mod2 [q,r]
qmod = mod(q,2)
qmod = 1
1
0
rmod = mod(r,2)
rmod = 0
0
0
residuo en [q,r]
Se dice que el polinomio c(x) es el mximo comn divisor de dos polinomios a(x)
y b(x) si cumple:
265
[A9.2]
[A9.2]
[A9.2]
266
residuo
puede
ser
representado por:
[A9.2]
Polinomio irreducible:
Ejemplo:
Realizar la suma de los polinomios f(x), g(x) sobre GF(28) con
, usando MatLab.
267
g=[1 0 0 0 1 0 1];
% Suma (f+g)
suma= mod((f+g),2)
suma = 1
1
Ejemplo:
% Multiplicacin (f x g)
mul = mod (conv(f,g),2)
mul = 0 1 0 1 0 0 1
[A9.2]
268
nicamente puede ser representado por sus coeficientes n binaria (an1 an2 . ..
a0). Por lo tanto, todo polinomio en GF (2n) Puede ser representado por n-bits.
La suma de polinomios se realiza, sumando los correspondientes coeficientes, y,
en el caso de polinomios sobre Z2, adems es la operacin XOR.
As, la adicin de dos polinomios f(x) y g(x) en GF (28) con
Operacin
Resultado
Notacin
Polinomial
( 0 01 1 0 1 1 1 0)
Binaria
{2B} {45}
{6E}
Hexadecimal
(0101011) (1000101)
269
REFERENCIAS
[A9.1] (2012) Grupo (Matemtica). [Online]. Disponible:
http://es.wikipedia.org/wiki/Grupo_(matem%C3%A1tica)
[A9.2] W. Stallings, Cryptography and Network Security Principles and Practices.
Cuarta Edicin, 2005.
[A9.3] J. Daemen y V. Rijrnen, The Design of Rijndael AES The Advanced
Encryption Standard, Primera Edicin, 2002.
[A9.4] Advanced Encryption Standard (AES), Federal Information Processing
Standards Publication 197, 2001.
270
ANEXO 10
FUNDAMENTOS MATEMTICOS DE LAS FUNCIONES DE
AES
10.1 CAJA S
Para calcular los valores que comprenden la Caja-S, se toman los siguientes
criterios:
271
Paso uno:
Paso dos:
Paso tres:
Paso cuatro:
Paso cinco:
Paso seis:
Paso siete:
Paso ocho:
En donde , corresponde al polinomio irreducible que
272
Paso Dos:
En este paso se debe verificar si , en caso de ser cierto se retorna el
valor , y se dice que no existe elemento inverso de b(x).
Paso Tres:
En el caso en el que , se retorna como mximo comn divisor de m(x) y
b(x) el valor de y como valor de inverso multiplicativo de b(x) el valor .
Paso Cuatro:
En caso de que el valor , se debe obtener el quociente de
Paso Cinco:
En
este
paso
el
algoritmo
indica
que
se
asigne
los
valores:
, a los polinomios
tupla , respectivamente.
Paso Seis:
Se debe actualizar los valores de con los valores de
, respectivamente.
Paso Siete:
273
00
01
8d
f6
cb
52
7b
d1
e8
4f
29
c0
b0
e1
e5
c7
74
b4
aa
4b
99
2b
60
5f
58
3f
fd
cc
ff
40
ee
b2
3a
6e
5a
f1
55
4d
a8
c9
c1
0a
98
15
30
44
a2
c2
2c
45
92
6c
f3
39
66
42
f2
35
20
6f
77
bb
59
19
1d
fe
37
67
2d
31
f5
69
a7
64
ab
13
54
25
e9
09
ed
5c
05
ca
4c
24
87
Bf
18
3e
22
f0
51
ec
61
17
16
5e
af
d3
49
a6
36
43
f4
47
91
df
33
93
21
3b
79
b7
85
10
b5
Ba
3c
b6
70
d0
d0
06
a1
fa
81
82
83
7e
7f
80
96
73
be
56
9b
9e
95
d9
f7
02
b9
a4
de
6a
32
6d
d8
84
72
2a
14
9f
88
f9
dc
89
9a
fb
7c
2e
c3
8f
b8
65
48
26
c8
12
4a
ce
e7
d2
62
0c
e0
1f
ef
11
75
78
71
a5
8e
76
3d
bd
bc
86
57
0b
28
2f
a3
da
d4
e4
0f
a9
27
53
04
1b
fc
ac
e6
7a
07
ae
63
c5
Db
e2
Ea
94
8b
c4
d5
9d
f8
90
6b
b1
0d
d6
eb
c6
0e
cf
Ad
08
4e
d7
e3
5d
50
1e
b3
5b
23
38
34
68
46
03
8c
dd
9c
7d
a0
cd
1a
41
1c
274
[A10-1]
Iteracin 1.
1.
2.
3.
4.
Iteracin 2.
5.
Iteracin 3.
275
Iteracin 4.
Representacin en bits
276
Representacin matricial
Ejemplo:
Se realizar un ejemplo prctico para demostrar como funciona la transformacin
lineal sobre los inversos multiplicativos.
Representacin hexadecimal: FE
Representacin binaria:
277
[A10.2]
los
valores
dados
por
278
Dado:
+ +
+
+ + +
Los polinomios , , se reducen a modulo ( +1), donde:
mod ( +1)=1
mod ( +1)=x
mod ( +1)=
+
+
+ +
+
279
.
Una representacin grfica se indica en la figura A10-1.
fijo
cx
280
REFERENCIAS
[A10.1] W. Stallings, Cryptography and Network Security Principles and Practices.
Cuarta Edicin, 2005.
[A10.2] Advanced Encryption Standard (AES), Federal Information Processing
Standards Publication 197, 2001.
281
ANEXO 11
282
ANEXO 12
283
ANEXO 13