Subido por HIPOLITO ROMARIO ALBA CULLASH

Criptografía-Cifrado AES

Anuncio
Cifrado de clave privada AES
Hipolito Romario Alba Cullash , e-mail: [email protected]
David Daniel Campos Mendoza , e-mail: [email protected]
Luis Ignacio Atarama Aguilar , e-mail: [email protected]
Diego Bayes Santos , e-mail: [email protected]
Marlon Torres Rosado , e-mail: [email protected]
Resumen
El presente proyecto tiene como objetivo explicar el cifrado estándar AES, también llamado
Rijndael, debido a su importancia en el almacenamiento de información y transacciones
financieras. Explicar los conceptos matemáticos necesarios para el desarrollo del cifrado y
desarrollar un código en C++ para una mejor comprensión de su funcionamiento.
Palabras Claves: Criptográfia, Rijndael.
Abstract
The objective of this project is explain the Advanced Encryption Standard, also called Rijndael,
due to its importance in information storage and financial transactions. Explain the
mathematical concepts necessary for the development of encryption and develop a code in C++
for a better understanding of its operation.
Keywords: Cryptography, Rijndael.
1. INTRODUCCIÓN
unos dı́as; por ello la decisión de reemplazarlo con
Rijndael, quien agrupa la información en bloques de
AES del inglés Advanced Encryption Standard, es co-
mayor tamaño, por ende, asume el uso de una clave
mo se comenzó a llamar al algoritmo Rijndael luego
de mayor tamaño también.
de que sea seleccionado como el nuevo estándar de
cifrado en el año 2000, con el fin de proteger infor-
La combinación de los factores seguridad, velocidad,
mación del gobierno de los EE.UU. calificada como
eficiencia, sencillez y flexibilidad fueron influyentes
ultrasecreta.
para su selección. Aunque no es uno de los algorit-
El NIST convocó un concurso público, pues a su pre-
mos más seguros, sino, más bien modesto (por la
decesor, el algoritmo DES, se le encontraron vulne-
matemática envuelta en su proceso), se recalca la
rabilidades. Se llegó a descifrar información por ata-
sencillez de su estructura y fácil análisis del diseño
ques de fuerza bruta, el método más lento de averi-
que permite cifrar y descifrar información, además
guar la clave del cifrado de un sistema, en tan solo
es posible extender la cantidad de datos con que se
1
desea trabajar lo que hace al algoritmo muy flexible.
diversas razones, bien sea un mal uso en contra de
1.1. Objetivos
los intereses de una entidad o información que puede
dañar a la entidad que goza de acceso a esta, por
1.1.1. Objetivos Generales
tanto la codificación se ha visto en un constante deProponer el algoritmo AES como una aplicación de
sarrollo para encontrarse a la par de los métodos de
la matemática de pregrado, reconociendo la interco-
decodificación. Lo que aquı́ haremos será mostrar el
nexión de los conceptos que expondremos.
cifrado de clave privada AES-Rijndael el cual actualmente ha tomado el puesto de estándar para la co-
1.1.2. Objetivos Particulares
dificación de documentos clasificación Top Secret en
Aprender y explicar el funcionamiento y la estructura
Estados Unidos, y qué además ha sido implementado
del cifrado estándar, enfocándonos en la conversión
por otros muchos gobiernos dado el gran margen de
de información por medio de funciones, llamadas ron-
protección con el que cuenta y qué aún no se ha en-
das. Conocer a profundidad el conjunto de funciones
contrado un método de romper el cifrado en tiempo
aplicadas en cada ronda y aprovechar su diseño tan
viable computacionalmente.
simple para esconder información útil.
2. CONCEPTOS PREVIOS
1.2. Justificación
Los ciberataques, que pueden ser en forma de malwa-
2.1. Criptologı́a
re; como el spyware, que transmite la información del
La Criptologı́a, del griego kryptos:’oculto’ y lo-
disco duro, o como el ransoware, que encripta todos
gos:’estudio’, por lo tanto la criptologı́a se puede en-
los datos de nuestro equipo, dejándolo inhabilitado;
tender como el estudio de lo oculto en los mensajes
son problemas frecuentes en el mundo de las comu-
que, procesados se convierten en dı́ficiles entender.
nicaciones. Frente a esto surge la necesidad de es-
2.2. Criptográfia Simétrica
cudarse y prevenir el robo de nuestras contraseñas,
Utiliza la misma clave para cifrar y descrifrar, es de-
cuentas bancarias, nuestro trabajo guardado e inclu-
cir, se basa en un secreto compartido entre el emisor
so recuerdos como fotográfias de viajes o encuentros
y el receptor, la seguridad de este proceso depende
familiares. Por ello, proponemos que mediante un al-
mucho de la facilidad con la que una persona no au-
goritmo de cifrado público, como lo es el AES, sea
torizada puede conseguir la clave .
usado para salvarguardar información últil, y aunque
en el proyecto lo haremos de forma primitiva; es un
2.3. Criptográfia Asimétrica
buen comienzo para iniciar a comprender desde una
Utiliza dos claves, una para cifrar y otra para des-
perspectiva aplicativa, el gran panorama que las ma-
cifrar, estas claves se relacionan de tal manera que
temáticas dejan de los cursos teóricos y abstractos
una no puede descifrar lo que cifra, además, cuando
en nuestra realidad.
se completa la generación de una clave asimétrica y
se definen las dos claves, lo que cifra una, unicamente
1.3. Identificación del Problema
puede ser descifrado por la otra.
Dado el desarrollo que ha llevado la época de la in-
2.4. Data Encryption Standard (DES)
formación, mucha de esta debe ser restringida por
2
Fue el primer estándar de cifrado publicado por
4. Para cada a ∈ K, existe (−a) ∈ K, tal que
el National Institute of Standard and Technology
a + (−a) = 0. −a se llama opuesto de a.
(NIST), aprobado en 1976, fue diseñado por IBM
2.6.2 Producto
y basado en el cifrado Lucifer. DES usa una clave de
• : K × K −→ K
56 bits, y mapas de bloque de entrada de 64 bits en
(a, b) 7−→ a • b
un bloque de salida de 64 bits. Existieron continuas
sospechas sobre las vulnerabilidades de este algorit-
5. a • b = b • a, ∀ a, b ∈ K.
mo y que la NSA tenı́a conocimientos previos de esto.
6. a • (b • c) = (a • b) • c, ∀ a, b, c ∈ K.
Actualmente se considera inseguro debido a los nu-
7. Existe 1 ∈ K, 1 6= 0, llamado uno, tal que a•1 = a,
merosos ataques y métodos registrados que explotan
∀ a ∈ K.
sus debilidades, principalmente su longitud de clave
8. Para cada a ∈ K, a 6= 0, existe a−1 ∈ K tal que
tan corta.
a • a−1 = 1. El número a−1 se llama inverso de a.
2.5. Advanced Encryption Standard (AES)
2.7. Cuerpos Finitos GF(28 )
Fue desarrollado por dos criptólogos belgas, Joan
En este algoritmo todos los bytes se interpretan co-
Daemen y Vincent Rijmen. En realidad el nombre
mo elementos de un cuerpo finito. Concretamente, se
del algoritmo es Rijndael, el cual fue ganador del
representan mediante Campos de Galois GF(k).
concurso público de candidato a AES. Es un cifrado
Aritmética en módulo ”p” sobre polinomios de grado
simétrico por bloques (al igual que el DES), cifra blo-
”m”, siendo ”p” un número primo. GF(pm ), donde
ques de datos de 128 bits, utilizando claves simétricas
los elementos de GF(pm ) se representan como poli-
de 128, 192 o 256 bits. Actualmente no se ha encon-
nomios con coeficientes en Zp de grado menor que
trado ningún ataque exitoso contra el AES, aunque
m.
existen preocupaciones porque a diferencia de otros
cifrados por bloques, el AES tiene una descripción
GF (pm ) = {a0 + a1 x + a2 x2 + . . . + am−1 xm−1 }
matemática muy ordenada.
{a0 , a1 , a2 , . . . , am−1 ∈ Zp }
2.6. Cuerpo
Un cuerpo conmutativo o simplemente cuerpo es un
Cada elemento de GF(pm ) es un resto módulo p(x),
conjunto K 6= ∅, en donde las operaciones suma y
donde p(x) es un polinomio de grado ”m”. Cada ele-
producto verifican las siguientes propiedades.
mento del campo se respresenta con ”m” bits y el
2.6.1. Suma
número de elementos será 2m .
+ : K × K −→ K
Un byte ”B”, se compone de los bits b7 b6 b5 b4 b3
b2 b1 b0 , si lo consideramos como un polinomio con
(a, b) 7−→ a + b
coeficientes en {0, 1} tenemos el polinomio:
1. a + b = b + a, ∀ a, b ∈ K.
2. a + (b + c) = (a + b) + c, ∀ a, b, c ∈ K.
b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x1 + b0
3. ∃! 0 ∈ K, llamado cero, tal que a+0 = a, ∀ a ∈ K.
3
2.8. Suma en GF(28 )
inversa multiplicativa. a(x) es un polinomio inverso
m
En GF(2 ) hay que considerar que las operaciones
de b(x) si:
matemáticas sobre los coeficientes se hacen en módu-
a(x) · b(x) mod m(x) = 1 o
lo ”p” con lo cual en GF(2m ) se reducen los resulta-
b(x)−1 = a(x) mod m(x)
dos de la suma de dos coeficientes módulo 2.
Sea x, y ∈ GF(p), entonces:
Ejemplo: Sea b(x) ∈ GF(28 ) y b(x) = x6 + x5 , calcular un polinomio inverso de b(x).
x + y = w mod p
Solución:
Para x, y ∈ GF(28 ), basta con aplicar O-Exclusiva,
b(x) = x6 + x5 y m(x) = x8 + x4 + x3 + x + 1
tenemos:
a(x) · b(x) mod m(x) = 1
Operación XOR
Pero también
1⊕1=0
1 = c(x)m(x) + b(x)a(x)
1⊕0=1
Acá usaremos el algoritmo extendido de euclides
0⊕1=1
x8 + x4 + x3 + x + 1 = (x6 + x5 )(x2 + x + 1) + (x5 +
0⊕0=0
x4 + x3 + x + 1)
2.9. Multiplicación en GF(28 )
x6 + x5 = (x5 + x4 + x3 + x + 1)x + x4 + x2 + x
En la multiplicación de polinomios en GF(2m ), es po-
x5 + x4 + x3 + x + 1 = (x4 + x2 + x)(x + 1) + 1
sible que el resultado contenga elementos que estén
Entonces:
fuera del cuerpo del polinomio por lo que deberemos
reducir los exponentes mediante un polinomio p(x)
1 = (x5 + x4 + x3 + x + 1) − (x + 1)(x4 + x2 + x)
necesariamente irreducible y grado ”m”.
1 = m(x)−(x2 +x+1)b(x)+(x+1)[b(x)−(x)(m(x)−
Para GF(28 ) la multiplicación de polinomios se rea-
(x2 + x + 1)b(x))]
liza módulo con un polinomio irreducible de grado
1 = (x2 + x + 1)m(x) + (x4 + x2 + x)b(x)
8. El polinomio irreducible utilizado en el algoritmo
∴ b(x)−1 = x4 + x2 + x mod m(x)
Rijndael es:
3.PROBLEMA
m(x) = x8 + x4 + x3 + x + 1
Hay información que se considera fundamental paLa multiplicación de polinomios es asociativa y su
ra una pesona o alguna empresa, y tal información
elemento neutro es el ”1”. Para cualquier polinomio
no puede divulgarse, por lo que es importante imple-
binario b(x) de grado menor que 8, se puede aplicar
mentar algoritmos para cifrar dicha información con
el algoritmo extendido de Euclides para calcular un
tal de proporcionarle seguridad. Desarrollaremos una
polinomio inverso de b(x). En este caso se habla de
implementación del algoritmo que planteamos para
4
el proceso de cifrado, en este caso dada nuestra ex-
Las cuatro operaciones realizadas en el cifrado son
periencia en el manejo del lenguaje de programación
denominadas:
C++ usaremos este.
SubBytes.
3.1. Estructura del Algoritmo
Para definir el proceso de cifrado del AES, vamos a
ShiftRows.
asumir que la longitud de la clave escogida es de 128
MixColumns.
bits.
AddRoundKey.
Básicamente, el cifrador aplica al Estado cuatro ope3.1.2. AddRoundKey
raciones durante un número determinado de rondas.
La operación AddRoundKey consiste, en la combinaProceso de Cifrado
ción de la subclave de ronda correspondiente con el
Estado
Estado.
Esta combinación se realiza a través de la operación
AddRound
XOR.
Ronda Inicial
3.1.3. SubBytes
SubBytes
La operación SubBytes consiste, en una sustitución
no lineal de bytes. Dicha sustitución se realiza apli-
No
cando la fórmula:
ShiftRows
p
−1
Si,j
= M · Si,j
+C
MixColumns
9 Rondas
Donde

1

1


1


1
M =

1

0


0

0
AddRound
Nr=9
SubBytes
ShiftRows
Ronda Final
0
0
0
1
1
1
1
0
0
0
1
1
1
0
0
0
0
1
1
1
0
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
1
0
0
1
1
1
1
 
1
 




1
1

 
0
1
 


 

0
1
C =  

 
0
0
 


1
0
 
 


1
0
 
1
0
1

−1
Si,j
= Inverso multiplicativo del byte a transformar,
con el bit menos significativo arriba.
AddRound
p
Si,j
= Transformación SubBytes con el bit menos
Texto Cifrado
significativo arriba.
Dicho número de rondas (Nr ) viene definido por
Existe una tabla de sustitución fija, llamada S-box,
la longitud de clave utilizada, siendo Nr = 10 para
que permite realizar la operación SubBytes mediante
una longitud de clave de 128 bits.
un simple vistazo.
5
S-box
x0
x1
x2
x3
x4
x5
x6
x7
x0
63
7C
77
7B
F2
6B
6F
C5
1x
CA
82
C9
7D
FA
59
47
F0
2x
B7
FD
93
26
36
3F
F7
CC
3x
04
C7
23
C3
18
96
05
9A
4x
09
83
2C
1A
1B
6E
5A
A0
5x
53
D1
00
ED
20
FC
B1
5B
6x
D0
EF
AA
FB
43
4D
33
85
7x
51
A3
40
8F
92
9D
38
F5
8x
CD
0C
13
EC
5F
97
44
17
9x
60
81
4F
Dc
22
2A
90
88
Ax
E0
32
3A
0A
49
06
24
5C
Bx
E7
C8
37
6D
8D
D5
4E
A9
Cx
BA
78
25
2E
1C
A6
B4
C6
Dx
70
3E
B5
66
48
03
F6
0E
Ex
E1
F8
98
11
69
D9
8E
94
En la operación MixColumns, los cuatro bytes de ca-
Fx
8C
A1
89
0D
BF
E6
42
68
da columna de la notación matricial del Estado se
x8
x9
xA
xB
xC
xD
xE
xF
combinan utilizando una transformación lineal inver-
x0
30
01
67
2B
FE
D7
AB
76
sible. Es más sencillo verlo como una multiplicación
1x
AD
D4
A2
AF
9C
A4
72
C0
matricial, donde el Estado siempre se multiplica a la
2x
34
A5
E5
F1
71
D8
31
15
derecha de la misma matriz:
3x
07
12
80
E2
EB
27
B2
75
4x
52
3B
D6
B3
29
E3
2F
84
5x
6A
CB
BE
39
4A
4C
58
6x
45
F9
02
7F
50
3C
7x
BC
B6
DA
21
10
8x
C4
A7
7E
3D
9x
46
EE
B8
Ax
C2
D3
Bx
6C
Cx
3.1.4. ShiftRows
La operación ShiftRows consiste, en una rotación
cı́clica hacia la izquierda de las filas de la notación
matricial del Estado, de manera que la primera fila permanece igual, la segunda fila rota hacia la izquierda una posición, la tercera fila se rota hacia la
izquierda dos posiciones y, por último, la cuarta fila
se rota hacia la izquierda tres posiciones.
b15
b11
b7
b3
b15
b11
b7
b3
b14
b10
b6
b10
b6
b2
b14
b13
b9
b5
b2 ShiftRows
−→
b1
b5
b1
b13
b9
b12
b8
b4
b0
b0
b12
b8
b4
3.1.5. MixColumns
02 03 01
01
CF
01 02 03
01
9F
A8
01 01 02
03
FF
F3
D2
03 01 01
02
65
5D
19
73
14
DE
5E
0B
DB
AC
62
91
95
E4
79
56
F4
EA
65
7A
AE
08
E8
DD
74
1F
4B
BD
8B
8A
Dx
61
35
57
B9
86
CI
1D
9E
Ex
9B
1E
87
E9
CE
55
28
DF
Fx
41
99
2D
0F
B0
54
BB
16
02 03 01 01
Es decir:
b15
b11
b7
b3
b14
b10
b6
b2
01 01 02 03
b13
b9
b5
b1
03 01 01 02
b12
b8
b4
b0
01 02 03 01
·
Se adjunta el código del programa en C++:
https://www.overleaf.com/read/ytfjbkcqpndv
6
4. ANÁLISIS Y MODELAMIENTO
B = 11, C = 12, D = 13, E = 14 y F = 15. Se debe
usar estos valores en la sustitución para las matrices
En esta aplicación usaremos la frase Somos la cien-
anteriores.
cia, la cual representa 128 bits. La clave que usare-
Entonces, para empezar con la ronda inicial, o ron-
mos para la encriptación será Esta es la clave, la
da 0, usaremos la función AddRoundKey para es-
cual también es de 128 bits. Con esta clave realiza-
tas matrices de la siguiente forma:
remos el proceso para una clave de este tamaño, es
Ronda 0
decir, el proceso tendrá 10 round.
4.1. Ejecución del Programa
Somos la ciencia ⇐⇒
Esta es la clave ⇐⇒
53
73
20
6E
45 20 6C
6C
6F
20
63
63 M 73 65
61
61
53
73
20
6E
6D
6C
69
69
74 73
20
76
6F
20
63
63
6F
61
65
61
61 20
63
65
6D
6C
69
69
6F
61
65
61
AddRoundKey
−→
16
53
4C
02
1C
45
02
02
19
1F
49
1F
0E
41
06
04
45
20 6C
6C
73
65
61
61
74
73
20
76
Es decir, como es la ronda 0, aplicaremos solo la fun-
61
20
63
65
ción AddRoundKey para ambas matrices y tendremos la matriz resultante, que se usará en la ronda
El proceso para realizar esta sustitución es:
1 como matriz de estado.
Pasar cada letra de la frase a su código ASCII.
A la subclave K0 le aplicaremos la función Expan-
Pasar el código ASCII de cada letra al sistema
sión K, la cual consiste de las 4 subfunciones Rot-
hexadecimal.
word, SubBytes, XOR (i-4) y XOR RCON para
generar las subclaves de las siguientes rondas (1-10).
Posicionar los códigos (ya en sistema hexadeci-
Esta función se aplica por completo únicamente para
mal) en la matriz.
obtener la primera columna de las subclaves, ya que
Por ejemplo, S en código ASCII es 83, pasando el
para las siguientes columnas solo se aplica la subfun-
83 a base hexadecimal se obtiene el número 5316 , el
ción XOR (i-4).
cual ubicamos en el primer espacio de la tabla.
Ahora comenzaremos el proceso de la ronda 1 hasta
El posicionamiento de las letras convertidas a ba-
la ronda 9 con el uso de las funciones SubBytes,
se hexadecimal se realiza primero por columnas, de
ShiftRows, MixColumns y AddRoundKey, en
arriba hacia abajo. Una vez que se llena la primer
ese orden, para las subclaves y matrices de estado,
columna, se pasa a llenar la segunda columna de la
proceso que se llevará a cabo 9 veces.
misma forma y ası́ con las columnas restantes.
Ronda 1
Recordar que en base hexadecimal las letras desde la
A hasta la F representan una cifra cada una : A = 10,
Empezaremos aplicando la función Expansión K a
7
la subclave K0 para obtener la subclave K1 .
K0 =
ShiftRows
45 20
6C
6C
73 65
61
61
47
ED
29
77
74 73
20
76
6E
77
77
9C
61 20
63
65
3B
C0
D4
C0
F2
AB
83
6F
Expansión K
MixColumns
AB
8B
E7
8B
4B
2E
4F
2E
F5
33
9C
FE
39
4A
6A
1C
24
F3
23
60
31
11
72
17
52
E7
73
C1
63
D6
C5
1B
K1 =
Del Round 0 se tiene :
Denotemos :
M1 =
16
53
4C
02
1C
45
02
02
19
1F
49
1F
0E
41
06
04
M1p =
F5
33
9C
FE
24
F3
23
60
52
E7
73
C1
63
D6
C5
1B
Entonces, aplicamos las funciones SubBytes, Shif-
Ası́, usamos la función AddRoundKey con las ma-
tRows, MixColumns y AddRoundKey a M1 :
trices M1p y K1 para obtener M2 , la cual se usará en
la ronda 2:
16
53
4C
02
1C
45
02
02
F5
33
9C
FE
AB
8B
E7
8B
19
1F
49
1F
24
F3
23
60 M 4B
2E
4F
2E
0E
41
06
04
52
E7
73
C1
39
4A
6A
1C
63
D6 C5
1B
31
11
72
17
SubBytes
AddRoundKey
−→
5E
B8
7B
75
6F
DD
6C
4E
6B
AD
19
DD
52
C7
B7
0C
= M2
47
ED
29
77
9C
6E
77
77
D4
C0
3B
C0
La matriz M2 se usará para la ronda 2.
AB
83
6F
F2
Este proceso, para obtener la subclave y la matriz
8
de estado, se realizará, tal cual especificamos en la
ronda 1, hasta la ronda 9.
CB
6B
68
49
2B
CD
49
D6
Ronda 2
DD
9F
45
53 M 4B
57
94
39
AD
67
2F
70
5A
92
DB
E2
4E
B5
B7
6D
95
C3
11
B2
Aplicando la función Expansión K a la subclave K1
se obtiene K2 :
K2 =
98
13
F4
7F
D7
F9
B6
98
C9
83
E9
F5
0C
1D
6F
78
E0
A6
2E
9F
96
C8
D1
6A
F7
F5
F4
92
DB
79
A6
DF
AddRoundKey
−→
= M10
Ahora, para terminar el algoritmo, en la ronda
10 aplicaremos únicamente las funciones SubBytes,
Aplicando las funciones SubBytes, ShiftRows y
ShiftRows y AddRoundKey.
MixColumns a M2 se obtiene M2p :
Ronda 10
M2p =
C2
E9
8A
FE
58
94
38
DB
Obtenemos la subclave K10 a partir de la subclave
33
A5
A1
E4
K9 haciendo uso de la función Expansión K :
1A
25
A4
C8
K9 =
Por último, usamos AddRoundKey con las matrices M2p y K2 , de lo cual se obtiene M3 :
C2
E9
8A
FE
98
13
F4
7F
58
94
38
DB M D7
F9
B6
98
33
A5
A1
E4
C9
83
E9
F5
1A
25
A4
C8
0C
1D
6F
78
AddRoundKey
−→
FA
7E
81
8F
6D
8E
43
FA
26
48
11
16
38
CB
B0
6B
68
49
DD
9F
45
53
AD
67
2F
70
4E
B5
B7
6D
Expansión K
K10 =
5A
CB
10
7B
13
5A
8C
13
56
05
91
F6
D9
A9
75
C0
77
1A
= M3
En este punto, solo se da uso a las funciones SubBytes, ShiftRows y AddRoundKey con la matriz
M10 para obtener la matriz final con la frase encrip-
Mismo proceso se aplica hasta la ronda 9.
tada.
Ronda 9
Usamos AddRoundKey con las matrices K9 y
M10 =
M9p ,
de lo cual se obtiene M10 :
9
E0
A6
2E
9F
96
C8
D1
6A
F7
F5
F4
92
DB
79
A6
DF
necesita es agrupar las letras de forma ordenada en
SubBytes
matrices 4 × 4 para luego proceder a ejecutar el algoritmo en cada una de las matrices, como se puede
E1
24
31
DB
apreciar en esto último el tiempo computacional de
90
E8
3E
02
ejecución del algoritmo aumenta considerablemente
68
E6
BF
4F
para cadenas de texto más grandes, razón por la cual
B9
38
24
9E
hicimos la implementación del cifrado en el lenguaje de programación C++, ya que este goza de una
rapidez de ejecución superior a la de otros lengua-
ShiftRows
jes, además en el presente trabajo solo se muestra la
función principal del codigo ya que dada la brevedad
E1
24
31 DB
E8
3E
02
90
BF
4F
68
E6
9E
B9
38
24
que debe tener este articulo se extiende demasiado al
poner el codigo completo de la implementación, pa-
p
= M10
ra visualizar el codigo completo se puede hacer una
investigación mas detallada del tema en internet o
libros especializados del tema. Ası́ mismo un pun-
Para terminar la encriptación, usamos la función
AddRoundKey con las matrices
p
M10
to importante a tomar en cuenta es que este cifrado
y K10 para
el altamente complejo en estructura matemática y
obtener la matriz final MF :
numero de operaciones a ejecutar, por esta razón se
E1
24
31
E8
3E
BF
4F
9E
10
7B
13
5A
02
90 M 8C
13
56
05
68
E6
91
F6
D9
A9
B9 38
24
75
C0
77
1A
AddRoundKey
−→
DB
F1
5F
22
81
64
2D
54
95
2E
B9
B1
4F
EB
79
4F
3E
hace inviable su uso para cifrar cadenas de texto de
manera manual a lápiz y papel, como es lógico al leer
detalladamente el presente artı́culo ya habrá podido
percatarse de esto.
6. CONCLUSIONES
= MF
El cifrado AES ha sido diseñado con una estructura
matemática muy ordenada, usa conceptos de alge-
Esta última matriz MF representa el texto cifrado
bra abstracta, ası́ como teorı́a de codificación, por
mediante el algoritmo de Rijndael.
tanto, para su implementación se necesita el manejo de lenguajes de programación y el conocimiento
Texto desencriptado: “Somos la ciencia”
del algebra abstracta para la compresión de los con-
5. RESULTADOS Y DISCUSIONES
ceptos teóricos de la estructura de este. El proyecto
Se pudo llevar a cabo satisfactoriamente el algorit-
nos brindó como conclusión además que el cifrado
mo en una matriz 4 × 4 , el cual es el tamaño base
de información en el mundo actual es realmente im-
de las matrices en el cifrado AES, en el caso de que-
portante dado el fácil acceso del que se goza a esta
rer cifrar cadenas de texto más grandes lo que se
por medios como internet en el cual se puede extraer
10
sistema bancario.
toneladas de información en cuestión de segundos,
información que bien puede ser pública o privada,
de la cual una indebida manipulación puede afectar
Por tanto se concluye que el cifrado de información
gravemente, por ejemplo en el sistema bancario en
es un pilar fundamental en la época en que vivimos,
el cual el acceso por parte de terceros a la clave de
y cifrados como el AES el cual es el estándar a nivel
un determinado usuario puede ver vulnerada su in-
mundial brindan seguridad a millones de personas
formación bancaria e incluso la manipulación de los
en el acceso a información privada, garantizando ası́
fondos por parte de personas que no son el usuario
que nuestra información sea privada segun nuestras
algo que serı́a indeseable para cualquier usuario del
necesidades.
—————————————————————————–
1. Joan Daernen and Vincent (2001). The Design of
Madrid: Seguridad Europea para EEUU.
Rijndael: AES - The Advanced Encryption Stan-
3. Martı́nez de la Torre, J. (2016). Cifrado de clave pri-
dard.Springer
vada: AES.
2. Muñoz, A. (2004). Algoritmo Criptográfico Rijndael.
11
Descargar