Libro
Libro
Libro
e n C o m p u t a d o r e s
4 E d i c i n . V e r s i n 0 . 7 . 0
Ma n u e l J. Lu c e n a L p e z
2
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3
Qu e signica habla, amigo y entra? pregunt o Merry.
Es bastante claro dijo Gimli. Si eres un amigo, dices la contrase na y las puertas se abren
y puedes entrar.
S dijo Gandalf, es probable que estas puertas est en gobernadas por palabras. . .
J.R.R. Tolkien, El Se nor de Los Anillos
Yo segua sin entender. De pronto, tuve una iluminaci on:
Super thronos viginti quatuor! La inscripci on! Las palabras grabadas sobre el espejo!
Vamos! dijo Guillermo. Quiz as a un estemos a tiempo de salvar una vida!
Umberto Eco, El Nombre de la Rosa
Y qu e? pregunt o un visitante de Washington. Qu e signican otros n umeros primos
m as?
Tal vez signica que nos est an enviando un dibujo. Este mensaje est a compuesto por una
enorme cantidad de bits de informaci on. Supongamos que esa cantidad es el producto de tres
n umeros m as peque nos (. . . ). Entonces, el mensaje tendra tres dimensiones.
Carl Sagan, Contact
En la pantalla se formaban y volvan a formarse dibujos de hielo mientras el tanteaba en
busca de brechas, esquivaba las trampas m as obvias y trazaba la ruta que tomara a trav es
del hielo de la Senso/Red.
William Gibson, Neuromante
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
4
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5
Aviso Importante
Este libro est a en constante evoluci on. Por ello, le aconsejo que consulte la siguien-
te p agina web:
http://wwwdi.ujaen.es/ mlucena/lcripto.html
En ella podr a:
Si no dispone de los archivos .sig correspondientes, vericar la rma digital
del libro.
Consultar la Fe de Erratas.
Descargar la ultima versi on.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
6
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7
Reconocimiento-NoComercial-SinObraDerivada 2.0 Espa na
Usted es libre de:
copiar, distribuir y comunicar p ublicamente la obra
Bajo las condiciones siguientes:
Reconocimiento. Debe reconocer y citar al autor original.
No comercial. No puede utilizar esta obra para nes comerciales.
Sin obras derivadas. No se puede alterar, transformar o generar una
obra derivada a partir de esta obra.
Al reutilizar o distribuir la obra, tiene que dejar bien claro los t erminos de la
licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor
Los derechos derivados de usos legtimos u otras limitaciones no se ven afectados
por lo anterior.
Esto es un resumen legible por humanos del texto legal (la licencia completa)
disponible en la siguiente direcci on:
http://creativecommons.org/licenses/by-nc-nd/2.0/es/legalcode.es
Advertencia
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
8
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Indice general
I Preliminares 19
1. Introducci on 21
1.1. C omo Leer esta Obra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2. Algunas notas sobre la Historia de la Criptografa . . . . . . . . . . . . 22
1.3. N umeros Grandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.4. Acerca de la Terminologa Empleada . . . . . . . . . . . . . . . . . . . . 26
1.5. Notaci on Algortmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2. Conceptos B asicos 29
2.1. Criptografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2. Criptosistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3. Esteganografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4. Criptoan alisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5. Compromiso entre Criptosistema y Criptoan alisis . . . . . . . . . . . . 34
2.6. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7. Autenticaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
II Fundamentos Te oricos de la Criptografa 39
3. Teora de la Informaci on 41
3.1. Cantidad de Informaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10
INDICE GENERAL
3.2. Entropa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3. Entropa Condicionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4. Cantidad de Informaci on entre dos Variables . . . . . . . . . . . . . . . 46
3.5. Criptosistema Seguro de Shannon . . . . . . . . . . . . . . . . . . . . . 47
3.6. Redundancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7. Desinformaci on y Distancia de Unicidad . . . . . . . . . . . . . . . . . 50
3.8. Confusi on y Difusi on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.9. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.10. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4. Complejidad Algortmica 57
4.1. Concepto de Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2. Complejidad Algortmica . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.1. Operaciones Elementales . . . . . . . . . . . . . . . . . . . . . . . 60
4.3. Algoritmos Polinomiales, Exponenciales y Subexponenciales . . . . . . 61
4.4. Clases de Complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.5. Algoritmos Probabilsticos . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5. Aritm etica Modular 67
5.1. Concepto de Aritm etica Modular . . . . . . . . . . . . . . . . . . . . . . 67
5.1.1. Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . 69
5.1.2. Complejidad de las Operaciones Aritm eticas en Z
n
. . . . . . . 70
5.2. C alculo de Inversas en Z
n
. . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.2.1. Existencia de la Inversa . . . . . . . . . . . . . . . . . . . . . . . 70
5.2.2. Funci on de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.3. Algoritmo Extendido de Euclides . . . . . . . . . . . . . . . . . 72
5.3. Teorema Chino del Resto . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.4. Exponenciaci on. Logaritmos Discretos . . . . . . . . . . . . . . . . . . . 75
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
INDICE GENERAL 11
5.4.1. Algoritmo R apido de Exponenciaci on . . . . . . . . . . . . . . . 75
5.4.2. El Problema de los Logaritmos Discretos . . . . . . . . . . . . . 76
5.4.3. El Problema de Dife-Hellman . . . . . . . . . . . . . . . . . . . 76
5.5. Importancia de los N umeros Primos . . . . . . . . . . . . . . . . . . . . 77
5.6. Algoritmos de Factorizaci on . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.6.1. M etodo de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6.2. M etodo p 1 de Pollard . . . . . . . . . . . . . . . . . . . . . . . 79
5.6.3. M etodos Cuadr aticos de Factorizaci on . . . . . . . . . . . . . . . 80
5.7. Tests de Primalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.7.1. M etodo de Lehmann . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.7.2. M etodo de Rabin-Miller . . . . . . . . . . . . . . . . . . . . . . . 83
5.7.3. Consideraciones Pr acticas . . . . . . . . . . . . . . . . . . . . . . 83
5.7.4. Primos fuertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.8. Anillos de Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.8.1. Polinomios en Z
n
. . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.9. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.10. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6. Curvas Elpticas en Criptografa 91
6.1. Curvas Elpticas en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.1.1. Suma en E(R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2. Curvas Elpticas en GF(n) . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.3. Curvas Elpticas en GF(2
n
) . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.3.1. Suma en E(GF(2
n
)) . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4. El Problema de los Logaritmos Discretos en Curvas Elpticas . . . . . . 96
6.5. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.6. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7. Aritm etica Entera de M ultiple Precisi on 101
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
12
INDICE GENERAL
7.1. Representaci on de enteros largos . . . . . . . . . . . . . . . . . . . . . . 101
7.2. Operaciones aritm eticas sobre enteros largos . . . . . . . . . . . . . . . 102
7.2.1. Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.2.2. Resta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.2.3. Producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.2.4. Divisi on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.3. Aritm etica modular con enteros largos . . . . . . . . . . . . . . . . . . . 111
7.4. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.5. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8. Criptografa y N umeros Aleatorios 113
8.1. Tipos de Secuencias Aleatorias . . . . . . . . . . . . . . . . . . . . . . . . 114
8.1.1. Secuencias pseudoaleatorias . . . . . . . . . . . . . . . . . . . . 114
8.1.2. Secuencias criptogr acamente aleatorias . . . . . . . . . . . . . 114
8.1.3. Secuencias totalmente aleatorias . . . . . . . . . . . . . . . . . . 115
8.2. Generaci on de Secuencias Aleatorias Criptogr acamente V alidas . . . 115
8.2.1. Obtenci on de Bits Aleatorios . . . . . . . . . . . . . . . . . . . . 116
8.2.2. Eliminaci on del Sesgo . . . . . . . . . . . . . . . . . . . . . . . . 117
8.2.3. Generadores Aleatorios Criptogr acamente Seguros . . . . . . 119
III Algoritmos Criptogr acos 121
9. Criptografa Cl asica 123
9.1. Algoritmos Cl asicos de Cifrado . . . . . . . . . . . . . . . . . . . . . . . 124
9.1.1. Cifrados Monoalfab eticos . . . . . . . . . . . . . . . . . . . . . . 124
9.1.2. Cifrados Polialfab eticos . . . . . . . . . . . . . . . . . . . . . . . 125
9.1.3. Cifrados por Sustituci on Homof onica . . . . . . . . . . . . . . . 126
9.1.4. Cifrados de Transposici on . . . . . . . . . . . . . . . . . . . . . . 127
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
INDICE GENERAL 13
9.2. M aquinas de Rotores. La M aquina ENIGMA . . . . . . . . . . . . . . . 128
9.2.1. Un poco de Historia . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2.2. Consideraciones Te oricas Sobre la M aquina ENIGMA . . . . . . 131
9.2.3. Otras M aquinas de Rotores . . . . . . . . . . . . . . . . . . . . . 132
9.3. El Cifrado de Lorenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9.3.1. Consideraciones Te oricas sobre el Cifrado de Lorenz . . . . . . 134
9.4. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10. Cifrados por Bloques 137
10.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
10.1.1. Redes de Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.1.2. Cifrados con Estructura de Grupo . . . . . . . . . . . . . . . . . 140
10.1.3. S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.2. El Algoritmo DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
10.2.1. Claves D ebiles en DES . . . . . . . . . . . . . . . . . . . . . . . . 143
10.3. Variantes de DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.3.1. DES M ultiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
10.3.2. DES con Subclaves Independientes . . . . . . . . . . . . . . . . . 145
10.3.3. DES Generalizado . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.3.4. DES con S-Cajas Alternativas . . . . . . . . . . . . . . . . . . . . 146
10.4. El algoritmo IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.5. El algoritmo Rijndael (AES) . . . . . . . . . . . . . . . . . . . . . . . . . 148
10.5.1. Estructura de AES . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.5.2. Elementos de AES . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.5.3. Las Rondas de AES . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10.5.4. C alculo de las Subclaves . . . . . . . . . . . . . . . . . . . . . . . 153
10.5.5. Seguridad de AES . . . . . . . . . . . . . . . . . . . . . . . . . . 154
10.6. Modos de Operaci on para Algoritmos de Cifrado por Bloques . . . . . 155
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
14
INDICE GENERAL
10.6.1. Modo ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.6.2. Modo CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.6.3. Modo CFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.6.4. Otros Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.7. Criptoan alisis de Algoritmos de cifrado por Bloques . . . . . . . . . . . 158
10.7.1. Criptoan alisis Diferencial . . . . . . . . . . . . . . . . . . . . . . 159
10.7.2. Criptoan alisis Lineal . . . . . . . . . . . . . . . . . . . . . . . . . 159
11. Cifrados de Flujo 161
11.1. Secuencias Pseudoaleatorias . . . . . . . . . . . . . . . . . . . . . . . . . 162
11.2. Tipos de Generadores de Secuencia . . . . . . . . . . . . . . . . . . . . . 162
11.2.1. Generadores Sncronos . . . . . . . . . . . . . . . . . . . . . . . . 163
11.2.2. Generadores Asncronos . . . . . . . . . . . . . . . . . . . . . . . 163
11.3. Registros de Desplazamiento Retroalimentados . . . . . . . . . . . . . . 164
11.3.1. Registros de Desplazamiento Retroalimentados Lineales . . . . 165
11.3.2. Registros de Desplazamiento Retroalimentados No Lineales . . 165
11.3.3. Combinaci on de Registros de Desplazamiento . . . . . . . . . . 166
11.4. Otros Generadores de Secuencia . . . . . . . . . . . . . . . . . . . . . . 166
11.4.1. Cifrados por Bloques en Modo OFB . . . . . . . . . . . . . . . . 167
11.4.2. Algoritmo RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
11.4.3. Algoritmo SEAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
12. Cifrados Asim etricos 171
12.1. Aplicaciones de los Algoritmos Asim etricos . . . . . . . . . . . . . . . . 172
12.1.1. Protecci on de la Informaci on . . . . . . . . . . . . . . . . . . . . 172
12.1.2. Autenticaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
12.2. Ataques de Intermediario . . . . . . . . . . . . . . . . . . . . . . . . . . 174
12.3. El Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
12.3.1. Seguridad del Algoritmo RSA . . . . . . . . . . . . . . . . . . . 178
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
INDICE GENERAL 15
12.3.2. Vulnerabilidades de RSA . . . . . . . . . . . . . . . . . . . . . . 179
12.4. Otros Algoritmos Asim etricos . . . . . . . . . . . . . . . . . . . . . . . . 182
12.4.1. Algoritmo de Dife-Hellman . . . . . . . . . . . . . . . . . . . . 182
12.4.2. Algoritmo de ElGamal . . . . . . . . . . . . . . . . . . . . . . . . 183
12.4.3. Algoritmo de Rabin . . . . . . . . . . . . . . . . . . . . . . . . . 184
12.4.4. Algoritmo DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
12.5. Criptografa de Curva Elptica . . . . . . . . . . . . . . . . . . . . . . . . 186
12.5.1. Cifrado de ElGamal sobre Curvas Elpticas . . . . . . . . . . . . 186
12.6. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
13. Funciones Resumen 189
13.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
13.2. Longitud Adecuada para una Signatura . . . . . . . . . . . . . . . . . . 190
13.3. Estructura de una Funci on MDC . . . . . . . . . . . . . . . . . . . . . . 191
13.4. Algoritmo MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
13.5. Algoritmo SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
13.6. Seguridad de las Funciones MDC . . . . . . . . . . . . . . . . . . . . . . 197
13.7. Funciones de Autenticaci on de Mensaje . . . . . . . . . . . . . . . . . 198
14. Esteganografa 201
14.1. M etodos Esteganogr acos . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.1.1. En archivos de texto . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.1.2. En archivos multimedia . . . . . . . . . . . . . . . . . . . . . . . 203
14.2. Detecci on de mensajes esteganograados . . . . . . . . . . . . . . . . . 207
15. Pruebas de Conocimiento Cero 209
15.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
15.2. Elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
15.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
16
INDICE GENERAL
15.4. Modos de Operaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
15.5. Conocimiento Cero sobre Grafos . . . . . . . . . . . . . . . . . . . . . . 212
15.6. Ataques de Intermediario . . . . . . . . . . . . . . . . . . . . . . . . . . 213
IV Aplicaciones Criptogr acas 215
16. Protocolos de Comunicaci on Segura 217
16.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
16.2. Protocolos TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
16.3. Protocolo SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
16.4. Protocolo TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
16.5. Protocolos IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
17. Autenticaci on, Certicados y Firmas Digitales 225
17.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
17.2. Firmas Digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
17.3. Certicados Digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
17.3.1. Certicados X.509 . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
17.3.2. Revocaci on de Certicados . . . . . . . . . . . . . . . . . . . . . 228
17.4. Vericaci on de Certicados Digitales . . . . . . . . . . . . . . . . . . . . 228
17.4.1. Infraestructuras Jer arquicas . . . . . . . . . . . . . . . . . . . . . 229
17.4.2. Infraestructuras Distribuidas . . . . . . . . . . . . . . . . . . . . 230
17.5. Autenticaci on Mediante Funciones Resumen . . . . . . . . . . . . . . 230
17.5.1. Autenticaci on por Contrase nas . . . . . . . . . . . . . . . . . . 231
17.5.2. Autenticaci on por Desafo . . . . . . . . . . . . . . . . . . . . . 233
18. PGP 235
18.1. Fundamentos e Historia de PGP . . . . . . . . . . . . . . . . . . . . . . 235
18.2. Estructura de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
INDICE GENERAL 17
18.2.1. Codicaci on de Mensajes . . . . . . . . . . . . . . . . . . . . . . 236
18.2.2. Firma Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
18.2.3. Armaduras ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . 238
18.2.4. Gesti on de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
18.2.5. Distribuci on de Claves y Redes de Conanza . . . . . . . . . . . 241
18.2.6. Otros PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
18.3. Vulnerabilidades de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
V Ap endices 245
A. Criptografa Cu antica 247
A.1. Mec anica Cu antica y Criptografa . . . . . . . . . . . . . . . . . . . . . . 247
A.2. Computaci on Cu antica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
A.3. Expectativas de Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
B. Ayudas a la Implementaci on 251
B.1. DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
B.1.1. S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
B.1.2. Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
B.1.3. Valores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
B.2. IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
B.3. AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
B.4. MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
B.5. SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
18
INDICE GENERAL
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Parte I
Preliminares
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 1
Introducci on
1.1. C omo Leer esta Obra
Esta obra ha sido organizada en seis partes:
1. Preliminares. Aqu se incluyen todos los conceptos b asicos y se introduce la ter-
minologa empleada en el resto del libro. Su lectura es recomendable incluso
para las personas que ya conocen el tema, puesto que puede evitar cierta con-
fusi on en los t erminos empleados a lo largo de la obra.
2. Fundamentos Te oricos de la Criptografa. Se desarrollan brevemente los resultados
te oricos sobre los que se van a apoyar las diferentes t ecnicas descritas en el
libro. Si usted no domina las Matem aticas, o simplemente no tiene inter es en
estos fundamentos, puede pasar estos captulos por alto.
3. Algoritmos Criptogr acos. Este bloque est a dedicado a los algoritmos de cifrado
sim etricos y asim etricos a las funciones resumen, y en general a las t ecnicas
que permiten garantizar la seguridad de la informaci on.
4. Aplicaciones Criptogr acas. A lo largo de la segunda parte del libro estudiare-
mos distintas aplicaciones de la Criptografa, como la comunicaci on segura, los
certicados digitales, etc.
5. Seguridad en Computadores. El prop osito de esta secci on consiste en identicar y
analizar los distintos problemas de seguridad que surgen en redes de compu-
tadores y en sistemas operativos. Se estudiar an diversas t ecnicas que permiten
resolverlos o, al menos, minimizar los riesgos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
22 1. Introducci on
6. Ap endices.
Este texto no tiene necesariamente que ser ledo captulo por captulo, aunque se
ha organizado de manera que los contenidos m as b asicos aparezcan primero. La parte
de fundamentos te oricos est a orientada a personas con unos conocimientos mnimos
sobre
Algebra y Programaci on, pero puede ser ignorada si el lector est a dispuesto
a prescindir de las justicaciones matem aticas de lo que encuentre en posteriores
captulos. La recomendaci on del autor en este sentido es clara: si es su primer contac-
to con la Criptografa, deje los fundamentos te oricos justo para el nal, o correr a el
riesgo de perderse entre conceptos que, si de una parte son necesarios para una com-
prensi on profunda del tema, no son imprescindibles a la hora de empezar a adentrar-
se en este apasionante mundo.
Se ha pretendido que todos los conceptos queden sucientemente claros con la
sola lectura de este libro, pero se recomienda vivamente que si el lector tiene inter es
por profundizar en cualquiera de los aspectos tratados aqu, consulte la bibliografa
para ampliar sus conocimientos, pudiendo emplear como punto de partida las pro-
pias referencias que aparecen al nal de este libro, aunque por desgracia, algunas de
las m as interesantes est an en ingl es.
1.2. Algunas notas sobre la Historia de la Criptografa
La Criptografa moderna nace al mismo tiempo que las computadoras. Duran-
te la Segunda Guerra Mundial, en un lugar llamado Bletchley Park, un grupo de
cientcos entre los que se encontraba Alan Turing, trabajaba en el proyecto ULTRA
tratando de descifrar los mensajes enviados por el ej ercito alem an con los m as so-
sticados ingenios de codicaci on ideados hasta entonces: la m aquina ENIGMA y
el cifrado Lorenz. Este grupo de cientcos dise n o y utiliz o el primer computador de
la Historia, denominado Colossus aunque esta informaci on permaneci o en secreto
hasta mediados de los 70.
Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnologa
criptogr aca, si bien la mayor parte de estos avances se mantenan y se siguen man-
teniendo, seg un algunos en secreto. Financiadas fundamentalmente por la NSA
(Agencia Nacional de Seguridad de los EE.UU.), la mayor parte de las investigacio-
nes hasta hace relativamente poco tiempo han sido tratadas como secretos militares.
Sin embargo, en los ultimos a nos, investigaciones serias llevadas a cabo en universi-
dades de todo el mundo han logrado que la Criptografa sea una ciencia al alcance
de todos, y que se convierta en la piedra angular de asuntos tan importantes como el
comercio electr onico, la telefona m ovil, o las nuevas plataformas de distribuci on de
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
1.2. Algunas notas sobre la Historia de la Criptografa 23
contenidos multimedia. Esta dualidad civilmilitar ha dado lugar a una curiosa doble
historia de la Criptografa, en la que los mismos algoritmos eran descubiertos, con
pocos a nos de diferencia, por equipos de an onimos militares y posteriormente por
matem aticos civiles, alcanzando unicamente estos ultimos el reconocimiento p ublico
por sus trabajos.
Muchas son las voces que claman por la disponibilidad p ublica de la Criptografa.
La experiencia ha demostrado que la unica manera de tener buenos algoritmos es que
estos sean accesibles, para que puedan ser sometidos al escrutinio de toda la comuni-
dad cientca. Existe una m axima en Criptografa que arma que cualquier persona
o equipo es capaz de desarrollar un algoritmo criptogr aco que el mismo no sea
capaz de romper. Si la seguridad de nuestro sistema se basa en que nadie conozca su
funcionamiento tiene varias implicaciones perversas: por un lado, aquellos que quie-
ran conocer su verdadera resistencia tendr an que conar en nuestra palabra, y por
otro, provoca una falsa sensaci on de seguridad, ya que si alg un enemigo encuentra un
agujero, es bastante probable que no lo publique. En consecuencia, el unico secreto
que debe tener un sistema criptogr aco es la clave. Ejemplos a lo largo de la historia
sobre fracasos de esta poltica de seguridad basada en la oscuridad, por desgracia, hay
muchos, algunos de ellos en ambitos tan delicados como el Voto Electr onico.
Salvo honrosas excepciones
1
, la Criptografa llega hasta nosotros en forma de pro-
gramas inform aticos. Un programa mal dise nado puede echar por tierra la seguridad
de un buen algoritmo criptogr aco, por lo que es necesario conocer c omo est a escrito
el programa en cuesti on, para poder detectar y eliminar los fallos que aparezcan en
el. En este sentido, el Sofware Libre, cuyo c odigo fuente est a a disposici on de los usua-
rios a diferencia del software privativo, que mantiene el c odigo fuente en secreto
quiz as sea el que brinda mejores resultados, ya que permite a cualquiera, adem as de
asegurarse de que no contiene puertas traseras, estudiar y eventualmente corregir el
c odigo si encuentra fallos en el. Actualmente, una de las mayores amenazas sobre el
software libre es la pretensi on de establecer sistemas de patentes sobre los programas
inform aticos, con un claro perjuicio tanto para los usuarios como para las peque nas
empresas frente al poder de las grandes corporaciones. Por desgracia, parece que a
nuestros gobiernos les interesan m as los benecios de las multinacionales que los
intereses de los ciudadanos.
Es imposible desligar la Criptografa moderna de todas las consideraciones polti-
cas, los ocas y morales que suscita. Hoy por hoy, tiene m as poder quien m as infor-
maci on controla, por lo que permitir que los ciudadanos empleen t ecnicas criptogr a-
cas para proteger su intimidad limita de forma efectiva ese poder. Con el pretexto de
la seguridad se est an aplicando medidas para ralentizar el acceso de los ciudadanos
1
Como el algoritmo Solitaire, desarrollado por Bruce Schneier, para el que unicamente se necesita
papel, l apiz, una baraja y algo de paciencia.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
24 1. Introducci on
a la Criptografa fuerte, bien desprestigiando a quienes la usan, bien dicultando por
distintos medios su adopci on generalizada. Una de los frentes de debate m as llamati-
vos en este sentido es la intenci on de algunos gobiernos de almacenar todas las claves
privadas de sus ciudadanos, necesarias para rmar digitalmente, y considerar ilegales
aquellas que no est en registradas. Es como pedirnos a todos que le demos a la polica
una copia de las llaves de nuestra casa. Esta corriente crea una situaci on extrema-
damente perversa: aquellos que quieren emplear la Criptografa para usos legtimos
encuentran dicultades mientras que, por ejemplo, a un tracante de armas le tiene
sin cuidado que sea ilegal usarla, con lo que no se frena su uso delictivo.
Existe un falaz argumento que algunos esgrimen en contra del uso privado de la
Criptografa, proclamando que ellos nada tienen que ocultar. Estas personas insin uan
que cualquiera que abogue por el uso libre de la Criptografa es poco menos que un
delincuente, y que la necesita para encubrir sus crmenes. En ese caso, por qu e esas
personas que no tienen nada que ocultar no envan todas sus cartas en tarjetas posta-
les, para que todos leamos su contenido?, o por qu e se molestan si alguien escucha
sus conversaciones telef onicas?. Defender el ambito de lo privado es un derecho ina-
lienable de la persona, que en mi opini on debe prevalecer sobre la obligaci on que
tienen los estados de perseguir a los delincuentes. D emosle a los gobiernos poder
para entrometerse en nuestras vidas, y acabar an haci endolo, no les quepa duda.
Uno de los elementos m as pol emicos acerca de los ataques indiscriminados a la
intimidad es la red Echelon. B asicamente se trata de una red, creada por la NSA en
1980 sus precursoras datan de 1952 en colaboraci on con Gran Breta na, Australia y
Nueva Zelanda, para monitorizar pr acticamente todas las comunicaciones electr oni-
cas tel efono, e-mail y fax principalmente del planeta, y buscar de manera au-
tom atica ciertas palabras clave. La informaci on obtenida ira a la NSA, que luego
podra a su vez brind arsela a otros pases. El pretexto es, nuevamente, la lucha contra
el terrorismo, pero podra ser empleada tanto para espionaje industrial como pre-
suntamente ha hecho durante a nos el Gobierno Franc es, poniendo a disposici on de
sus propias compa nas secretos robados a empresas extranjeras, como para el con-
trol de aquellas personas que pueden representar amenazas polticas a la estabilidad
de la sociedad moderna. La Uni on Europea reconoci o la existencia de Echelon, pero
hasta la fecha nadie ha exigido a ning un gobierno explicaci on alguna; es m as, parece
que los planes de la U.E. al respecto pasan por el despliegue de su propia red de vi-
gilancia electr onica, llamada Enfopol. Si bien el proyecto se encuentra paralizado, es
conveniente mantenerse en guardia, especialmente desde que los terribles atentados
del 11 de septiembre de 2001 han propiciado una ola de limitaci on de las libertades
civiles con el pretexto de la seguridad. Quiz as algunos deberan recordar aquella fa-
mosa frase de Benjamin Franklin: Quienes son capaces de renunciar a la libertad esencial,
a cambio de una seguridad transitoria, no son merecedores de la seguridad ni de la libertad.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
1.3. N umeros Grandes 25
Uno de los logros m as importantes de la sociedad humana es la libertad de ex-
presi on. Naturalmente, lo ideal sera que todos pudi eramos expresar nuestros pen-
samientos con total libertad, y que cada cual se hiciera responsable de sus palabras.
Sin embargo, todos sabemos que hay situaciones, incluso en ambitos en los que su-
puestamente se respeta la libertad de expresi on, en los que ciertas armaciones in-
convenientes o polticamente incorrectas pueden dar lugar a represalias. Es necesario,
por tanto, para poder garantizar la libertad, poder garantizar tambi en el anonimato.
Tambi en es una cuesti on de higiene otorgar menos cr edito a aquellas cosas que se di-
cen bajo el paraguas del anonimato, pero sera peor no disponer de esa posibilidad.
En este sentido la Criptografa, combinada con otras t ecnicas, es la unica tecnologa
que puede permitirnos llegar a garantizar niveles razonables de anonimato. Despu es
de todo, como dijo Thomas Jefferson, es preferible estar expuesto a los inconvenientes
que surgen de un exceso de libertad que a los que provienen de una falta de ella.
No cabe duda de que la informaci on se est a convirtiendo en la mayor fuente de
poder que ha conocido la Humanidad, y que la Criptografa es una herramienta esen-
cial para su control. Es necesario, pues, que los ciudadanos de a pie conozcan sus
ventajas e inconvenientes, sus peligros y leyendas. Dicen que vivimos en Democracia
pero, si a la gente no se le muestra toda la informaci on relevante de manera honesta e
imparcial, c omo va a poder decidir su futuro? Esta obra pretende poner su peque no
granito de arena en ese sentido.
1.3. N umeros Grandes
Los algoritmos criptogr acos emplean claves con un elevado n umero de bits, y
usualmente se mide su calidad por la cantidad de esfuerzo que se necesita para rom-
perlos. El tipo de ataque m as simple es la fuerza bruta, que simplemente trata de ir
probando una a una todas las claves. Por ejemplo, el algoritmo DES tiene 2
56
posibles
claves. Cu anto tiempo nos llevara probarlas todas si, pongamos por caso, dispu-
si eramos de un computador capaz de hacer un mill on de operaciones por segundo?
Tardaramos. . . m as de 2200 a nos! Pero y si la clave del ejemplo anterior tuviera 128
bits? El tiempo requerido sera de 10
24
a nos.
Es interesante dedicar un apartado a tratar de jar en nuestra imaginaci on la mag-
nitud real de este tipo de n umeros. En el cuadro 1.1 podemos observar algunos va-
lores que nos ayudar an a comprender mejor la aut entica magnitud de muchos de
los n umeros que veremos en este texto. Observ andola podremos apreciar que 10
24
a nos es aproximadamente cien billones de veces la edad del universo (y eso con un
ordenador capaz de ejecutar el algoritmo de codicaci on completo un mill on de ve-
ces por segundo). Esto nos debera disuadir de emplear mecanismos basados en la
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
26 1. Introducci on
fuerza bruta para reventar claves de 128 bits.
Para manejar la tabla con mayor rapidez, recordemos que un mill on es aproxima-
damente 2
20
, y que un a no tiene m as o menos 2
24
segundos. Recorrer completamente
un espacio de claves de, por ejemplo, 256 bits a raz on de un mill on por segundo
supone 2
25644
= 2
212
a nos de c alculo.
1.4. Acerca de la Terminologa Empleada
En muchos libros sobre Criptografa y Seguridad se emplean t erminos como en-
criptar y desencriptar, adoptados con toda probabilidad del verbo anglosaj on encrypt.
El lector podr a comprobar que este tipo de expresiones ha sido evitado en el pre-
sente texto, debido a la existencia de palabras perfectamente v alidas que pertenecen
al idioma castellano, como son cifrardescifrar y codicardecodicar (o descodicar). La
opini on del autor es que s olo deben emplearse t erminos for aneos cuando nuestro ri-
qusimo idioma carezca de expresiones adecuadas para representar las ideas en cues-
ti on. Esta ultima es la situaci on en la que se encuentra la palabra esteganografa, hispa-
nizaci on del t ermino ingl es steganography que a su vez proviene del ttulo del libro
Steganographia, escrito por Johannes Trithemius en 1518.
El lector podr a advertir que en este texto aparece el t ermino autenticaci on, en
lugar de autenticaci on. Quisiera hacer notar en este punto que ambos t erminos son
correctos y est an recogidos en el Diccionario de la Real Academia, y que aqu el uso
del primero de ellos responde simplemente a una cuesti on de gustos personales.
1.5. Notaci on Algortmica
En este libro se describen diversos algoritmos de inter es en Criptografa. La no-
taci on empleada en ellos es muy similar a la del lenguaje de programaci on (, con
objeto de que sea accesible al mayor n umero de personas posible. Si usted no conoce
este lenguaje, siempre puede acudir a cualquier tutorial b asico para poder entender
los algoritmos de este libro, y despu es llevar a cabo sus propias implementaciones en
cualquier otro lenguaje de programaci on. Sin embargo, aunque la notaci on que uso
es parecida, no es exactamente la misma: all donde el empleo de un ( puro pona
en peligro la claridad en la descripci on de los algoritmos, me he permitido peque nas
licencias. Tampoco he tenido en cuenta ni mucho menos la eciencia de tiempo o me-
moria para estos algoritmos, por lo que mi sincero consejo es que no intenten cortar y
pegar para realizar sus propias implementaciones.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
1.5. Notaci on Algortmica 27
Valor N umero
Probabilidad de ser fulminado por un rayo (por da) 1 entre 9.000.000.000 (2
33
)
Probabilidad de ganar el primer premio de la Lotera
Primitiva Espa nola
1 entre 13.983.816 (2
23
)
Probabilidad de ganar el primer premio de la Primiti-
va y caer fulminado por un rayo el mismo da
1 entre 2
56
Tiempo hasta la pr oxima glaciaci on 14.000 (2
14
) a nos
Tiempo hasta que el Sol se extinga 10
9
(2
30
) a nos
Edad del Planeta Tierra 10
9
(2
30
) a nos
Edad del Universo 10
10
(2
34
) a nos
N umero de atomos en el Planeta Tierra 10
51
(2
170
)
N umero de atomos en el Sol 10
57
(2
189
)
N umero de atomos en la Va L actea 10
67
(2
223
)
N umero de atomos en el Universo (excluyendo mate-
ria oscura)
10
77
(2
255
)
Masa de la Tierra 5,9 10
24
(2
82
) Kg.
Masa del Sol 2 10
30
(2
100
) Kg.
Masa estimada del Universo (excluyendo materia os-
cura)
10
50
(2
166
) Kg.
Volumen de la Tierra 10
21
(2
69
) m
3
Volumen del Sol 10
27
(2
89
) m
3
Volumen estimado del Universo 10
82
(2
272
) m
3
Cuadro 1.1: Algunos n umeros grandes
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
28 1. Introducci on
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 2
Conceptos B asicos
2.1. Criptografa
Seg un el Diccionario de la Real Academia, la palabra criptografa proviene de la
uni on de los t erminos griegos o (oculto) y (escritura), y su denici on
es: Arte de escribir con clave secreta o de un modo enigm atico. Obviamente la Cripto-
grafa hace a nos que dej o de ser un arte para convertirse en una t ecnica, o m as bien
un conglomerado de t ecnicas, que tratan sobre la protecci on ocultamiento frente
a observadores no autorizados de la informaci on. Entre las disciplinas que englo-
ba cabe destacar la Teora de la Informaci on, la Teora de N umeros o Matem atica
Discreta, que estudia las propiedades de los n umeros enteros, y la Complejidad
Algortmica.
Existen dos trabajos fundamentales sobre los que se apoya pr acticamente toda
la teora criptogr aca actual. Uno de ellos, desarrollado por Claude Shannon en sus
artculos A Mathematical Theory of Communication (1948) y Communication Theory of
Secrecy Systems (1949), sienta las bases de la Teora de la Informaci on y de la Crip-
tografa moderna. El segundo, publicado por Whiteld Dife y Martin Hellman en
1976, se titulaba New directions in Cryptography, e introduca el concepto de Cripto-
grafa Asim etrica, abriendo enormemente el abanico de aplicaci on de esta disciplina.
Conviene hacer notar que la palabra Criptografa s olo hace referencia al uso de
c odigos, por lo que no engloba a las t ecnicas que se usan para romper dichos c odigos,
conocidas en su conjunto como Criptoan alisis. En cualquier caso ambas disciplinas
est an ntimamente ligadas; no olvidemos que cuando se dise na un sistema para cifrar
informaci on, hay que tener muy presente su posible criptoan alisis, ya que en caso
contrario podramos llevarnos desagradables sorpresas.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
30 2. Conceptos B asicos
Finalmente, el t ermino Criptologa, aunque no est a recogido a un en el Diccionario,
se emplea habitualmente para agrupar Criptografa y Criptoan alisis.
2.2. Criptosistema
Deniremos un criptosistema como una quntupla (M, C, K, E, D), donde:
M representa el conjunto de todos los mensajes sin cifrar (lo que se denomina
texto claro, o plaintext) que pueden ser enviados.
C representa el conjunto de todos los posibles mensajes cifrados, o criptogra-
mas.
K representa el conjunto de claves que se pueden emplear en el criptosistema.
E es el conjunto de transformaciones de cifrado o familia de funciones que se aplica
a cada elemento de M para obtener un elemento de C. Existe una transforma-
ci on diferente E
k
para cada valor posible de la clave k.
D es el conjunto de transformaciones de descifrado, an alogo a E.
Todo criptosistema ha de cumplir la siguiente condici on:
D
k
(E
k
(m)) = m (2.1)
es decir, que si tenemos un mensaje m, lo ciframos empleando la clave k y luego lo
desciframos empleando la misma clave, obtenemos de nuevo el mensaje original m.
Existen dos tipos fundamentales de criptosistemas:
Criptosistemas sim etricos o de clave privada. Son aquellos que emplean la misma
clave k tanto para cifrar como para descifrar. Presentan el inconveniente de que
para ser empleados en comunicaciones la clave k debe estar tanto en el emisor
como en el receptor, lo cual nos lleva preguntarnos c omo transmitir la clave de
forma segura.
Criptosistemas asim etricos o de llave p ublica, que emplean una doble clave (k
p
, k
P
).
k
p
se conoce como clave privada y k
P
se conoce como clave p ublica. Una de ellas
sirve para la transformaci on E de cifrado y la otra para la transformaci on D
de descifrado. En muchos casos son intercambiables, esto es, si empleamos una
para cifrar la otra sirve para descifrar y viceversa. Estos criptosistemas deben
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
2.2. Criptosistema 31
cumplir adem as que el conocimiento de la clave p ublica k
P
no permita calcu-
lar la clave privada k
p
. Ofrecen un abanico superior de posibilidades, pudien-
do emplearse para establecer comunicaciones seguras por canales inseguros
puesto que unicamente viaja por el canal la clave p ublica, o para llevar a cabo
autenticaciones.
En la pr actica se emplea una combinaci on de estos dos tipos de criptosistemas,
puesto que los segundos presentan el inconveniente de ser computacionalmente mu-
cho m as costosos que los primeros. En el mundo real se codican los mensajes (largos)
mediante algoritmos sim etricos, que suelen ser muy ecientes, y luego se hace uso
de la criptografa asim etrica para codicar las claves sim etricas (cortas).
Claves D ebiles
En la inmensa mayora de los casos los conjuntos M y C denidos anteriormente
son iguales. Esto quiere decir que tanto los textos claros como los textos cifrados se
representan empleando el mismo alfabeto por ejemplo, cuando se usa el algorit-
mo DES, ambos son cadenas de 64 bits. Por esta raz on puede darse la posibilidad
de que exista alg un k K tal que E
k
(M) = M, lo cual sera catastr oco para nues-
tros prop ositos, puesto que el empleo de esas claves dejara todos nuestros mensa-
jes. . . sin codicar!
Tambi en puede darse el caso de que ciertas claves concretas generen textos ci-
frados de poca calidad. Una posibilidad bastante com un en ciertos algoritmos es que
algunas claves tengan la siguiente propiedad: E
k
(E
k
(M)) = M, lo cual quiere decir
que basta con volver a codicar el criptograma para recuperar el texto claro original.
Estas circunstancias podran llegar a simplicar enormemente un intento de violar
nuestro sistema, por lo que tambi en habr a que evitarlas a toda costa.
La existencia de claves con estas caractersticas, como es natural, depende en gran
medida de las peculiaridades de cada algoritmo en concreto, y en muchos casos tam-
bi en de los par ametros escogidos a la hora de aplicarlo. Llamaremos en general a las
claves que no codican correctamente los mensajes claves d ebiles (weak keys en ingl es).
Normalmente en un buen criptosistema la cantidad de claves d ebiles es cero o muy
peque na en comparaci on con el n umero total de claves posibles. No obstante, con-
viene conocer esta circunstancia para poder evitar en la medida de lo posible sus
consecuencias.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
32 2. Conceptos B asicos
2.3. Esteganografa
La esteganografa o empleo de canales subliminales consiste en ocultar en el
interior de una informaci on, aparentemente inocua, otro tipo de informaci on (cifra-
da o no). Este m etodo ha cobrado bastante importancia ultimamente debido a que
permite burlar diferentes sistemas de control. Supongamos que un disidente poltico
quiere enviar un mensaje fuera de su pas, evitando la censura. Si lo codica, las auto-
ridades jam as permitir an que el mensaje atraviese las fronteras independientemente
de que puedan acceder a su contenido, mientras que si ese mismo mensaje viaja ca-
muado en el interior de una imagen digital para una inocente felicitaci on navide na,
tendr a muchas m as posibilidades de llegar a su destino.
2.4. Criptoan alisis
El criptoan alisis consiste en comprometer la seguridad de un criptosistema. Esto se
puede hacer descifrando un mensaje sin conocer la llave, o bien obteniendo a partir
de uno o m as criptogramas la clave que ha sido empleada en su codicaci on. No se
considera criptoan alisis el descubrimiento de un algoritmo secreto de cifrado; hemos
de suponer por el contrario que los algoritmos siempre son conocidos.
En general el criptoan alisis se suele llevar a cabo estudiando grandes cantidades
de pares mensajecriptograma generados con la misma clave. El mecanismo que se
emplee para obtenerlos es indiferente, y puede ser resultado de escuchar un canal de
comunicaciones, o de la posibilidad de que el objeto de nuestro ataque responda con
un criptograma cuando le enviemos un mensaje. Obviamente, cuanto mayor sea la
cantidad de pares, m as probabilidades de exito tendr a el criptoan alisis.
Uno de los tipos de an alisis m as interesantes es el de texto claro escogido, que parte
de que conocemos una serie de pares de textos claros elegidos por nosotros y sus
criptogramas correspondientes. Esta situaci on se suele dar cuando tenemos acceso al
dispositivo de cifrado y este nos permite efectuar operaciones, pero no nos permite
leer su clave por ejemplo, las tarjetas de los tel efonos m oviles GSM. El n umero de
pares necesarios para obtener la clave desciende entonces signicativamente. Cuan-
do el sistema es d ebil, pueden ser sucientes unos cientos de mensajes para obtener
informaci on que permita deducir la clave empleada.
Tambi en podemos tratar de criptoanalizar un sistema aplicando el algoritmo de
descifrado, con todas y cada una de las claves, a un mensaje codicado que posee-
mos y comprobar cu ales de las salidas que se obtienen tienen sentido como posible
texto claro. En general, todas las t ecnicas que buscan exhaustivamente por el espacio
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
2.4. Criptoan alisis 33
de claves K se denominan de fuerza bruta, y no suelen considerarse como aut enticas
t ecnicas de criptoan alisis, reserv andose este t ermino para aquellos mecanismos que
explotan posibles debilidades intrnsecas en el algoritmo de cifrado. En general, se
denomina ataque a cualquier t ecnica que permita recuperar un mensaje cifrado em-
pleando menos esfuerzo computacional que el que se usara por la fuerza bruta. Se da
por supuesto que el espacio de claves para cualquier criptosistema digno de inter es
ha de ser sucientemente grande como para que los m etodos basados en la fuer-
za bruta sean inviables. Hemos de tener en cuenta no obstante que la capacidad de
c alculo de las computadoras crece a gran velocidad, por lo que algoritmos que hace
unos a nos eran resistentes a la fuerza bruta hoy pueden resultar inseguros, como es el
caso de DES. Sin embargo, existen longitudes de clave para las que resultara imposi-
ble a todas luces, empleando computaci on tradicional, aplicar un m etodo de este tipo.
Por ejemplo, si dise n aramos una m aquina capaz de recorrer todas las combinaciones
que pueden tomar 256 bits, cuyo consumo fuera mnimo en cada cambio de estado
1
,
no habra energa suciente en el Universo para que pudiera completar su trabajo.
Un par de m etodos de criptoan alisis que han dado interesantes resultados son el
an alisis diferencial y el an alisis lineal (ver secci on 10.7, p agina 158). El primero de ellos,
partiendo de pares de mensajes con diferencias mnimas usualmente de un bit,
estudia las variaciones que existen entre los mensajes cifrados correspondientes, tra-
tando de identicar patrones comunes. El segundo emplea operaciones XOR entre
algunos bits del texto claro y algunos bits del texto cifrado, obteniendo nalmente
un unico bit. Si realizamos esto con muchos pares de texto clarotexto cifrado pode-
mos obtener una probabilidad p en ese bit que calculamos. Si p est a sucientemente
sesgada (no se aproxima a
1
2
), tendremos la posibilidad de recuperar la clave.
Otro tipo de an alisis, esta vez para los algoritmos asim etricos, consistira en tra-
tar de deducir la llave privada a partir de la p ublica. Suelen ser t ecnicas analticas
que b asicamente intentan resolver los problemas de elevado coste computacional en
los que se apoyan estos criptosistemas: factorizaci on, logaritmos discretos, etc. Mien-
tras estos problemas gen ericos permanezcan sin soluci on eciente, podremos seguir
conando en estos algoritmos.
La Criptografa no s olo se emplea para proteger informaci on, tambi en se utiliza
para permitir su autenticaci on, es decir, para identicar al autor de un mensaje e
impedir que nadie suplante su personalidad. En estos casos surge un nuevo tipo de
criptoan alisis que est a encaminado unicamente a permitir que elementos falsos pa-
sen por buenos. Puede que ni siquiera nos interese descifrar el mensaje original, sino
simplemente poder sustituirlo por otro falso y que supere las pruebas de autentica-
ci on.
1
Seg un las Leyes de la Termodin amica existe una cantidad mnima de energa necesaria para poder
modicar el estado de un sistema fsico.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
34 2. Conceptos B asicos
Como se puede apreciar, la gran variedad de sistemas criptogr acos produce ne-
cesariamente gran variedad de t ecnicas de criptoan alisis, cada una de ellas adaptada
a un algoritmo o familia de ellos. Con toda seguridad, cuando en el futuro aparez-
can nuevos mecanismos de protecci on de la informaci on, surgir an con ellos nuevos
m etodos de criptoan alisis. De hecho, la investigaci on en este campo es tan importan-
te como el desarrollo de algoritmos criptogr acos, y esto es debido a que, mientras
que la presencia de fallos en un sistema es posible demostrarla, su ausencia es por
denici on indemostrable.
2.5. Compromiso entre Criptosistema y Criptoan alisis
En la secci on 3.5 (p ag. 47) veremos que pueden existir sistemas idealmente se-
guros, capaces de resistir cualquier ataque. Tambi en veremos que estos sistemas en
la pr actica carecen de inter es, lo cual nos lleva a tener que adoptar un compromiso
entre el coste del sistema tanto computacional como de almacenamiento, e incluso
econ omico frente a su resistencia a diferentes ataques criptogr acos.
La informaci on posee un tiempo de vida, y pierde su valor transcurrido este. Los
datos sobre la estrategia de inversiones a largo plazo de una gran empresa, por ejem-
plo, tienen un mayor periodo de validez que la exclusiva periodstica de una senten-
cia judicial que se va a hacer p ublica al da siguiente. Ser a suciente, pues, tener un
sistema que garantice que el tiempo que se puede tardar en comprometer su seguri-
dad es mayor que el tiempo de vida de la propia informaci on que este alberga. Esto
no suele ser f acil, sobre todo porque no tardar a lo mismo un oponente que disponga
de una unica computadora de capacidad modesta, que otro que emplee una red de
supercomputadores. Por eso tambi en ha de tenerse en cuenta si la informaci on que
queremos proteger vale m as que el esfuerzo de criptoan alisis que va a necesitar, por-
que entonces puede que no est e segura. La seguridad de los criptosistemas se suele
medir en t erminos del n umero de computadoras y del tiempo necesarios para rom-
perlos, y a veces simplemente en funci on del dinero necesario para llevar a cabo esta
tarea con garantas de exito.
En cualquier caso hoy por hoy existen sistemas que son muy poco costosos o
incluso gratuitos, como algunas versiones de PGP, y que nos garantizan un nivel
de protecci on tal que toda la potencia de c alculo que actualmente hay en el planeta
sera insuciente para romperlos.
Tampoco conviene depositar excesiva conanza en el algoritmo de cifrado, pues-
to que en el proceso de protecci on de la informaci on existen otros puntos d ebiles que
deben ser tratados con un cuidado exquisito. Por ejemplo, no tiene sentido emplear
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
2.6. Seguridad 35
algoritmos con niveles de seguridad extremadamente elevados si luego escogemos
contrase nas (passwords) ridculamente f aciles de adivinar. Una pr actica muy exten-
dida por desgracia es la de escoger palabras clave que contengan fechas, nombres
de familiares, nombres de personajes o lugares de cci on, etc. Son las primeras que
un atacante avispado probara. Tampoco es una pr actica recomendable anotarlas o
decrselas a nadie, puesto que si la clave cae en malas manos, todo nuestro sistema
queda comprometido, por buenos que sean los algoritmos empleados.
2.6. Seguridad
El concepto de seguridad en la informaci on es mucho m as amplio que la simple
protecci on de los datos a nivel l ogico. Para proporcionar una seguridad real hemos
de tener en cuenta m ultiples factores, tanto internos como externos. En primer lu-
gar habra que caracterizar el sistema que va a albergar la informaci on para poder
identicar las amenazas, y en este sentido podramos hacer la siguiente subdivisi on:
1. Sistemas aislados. Son los que no est an conectados a ning un tipo de red. De unos
a nos a esta parte se han convertido en minora, debido al auge que ha experi-
mentado Internet.
2. Sistemas interconectados. Hoy por hoy casi cualquier ordenador pertenece a al-
guna red, enviando y recogiendo informaci on del exterior casi constantemente.
Esto hace que las redes de ordenadores sean cada da m as complejas y supon-
gan un peligro potencial que no puede en ning un caso ser ignorado.
En cuanto a las cuestiones de seguridad que hemos de jar podramos clasicarlas
de la siguiente forma:
1. Seguridad fsica. Englobaremos dentro de esta categora a todos los asuntos re-
lacionados con la salvaguarda de los soportes fsicos de la informaci on, m as
que de la informaci on propiamente dicha. En este nivel estaran, entre otras,
las medidas contra incendios y sobrecargas el ectricas, la prevenci on de ataques
terroristas, las polticas de copias de respaldo (backups), etc. Tambi en se suelen
tener en cuenta dentro de este punto aspectos relacionados con la restricci on de
acceso fsico a las computadoras unicamente a personas autorizadas.
2. Seguridad de la informaci on. En este apartado prestaremos atenci on a la preserva-
ci on de la informaci on frente a observadores no autorizados. Para ello podemos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
36 2. Conceptos B asicos
emplear tanto criptografa sim etrica como asim etrica, estando la primera unica-
mente indicada en sistemas aislados, ya que si la emple aramos en redes, al tener
que transmitir la clave por el canal de comunicaci on, estaramos asumiendo un
riesgo excesivo.
3. Seguridad del canal de comunicaci on. Los canales de comunicaci on rara vez se con-
sideran seguros. Debido a que en la mayora de los casos escapan a nuestro
control, ya que pertenecen a terceros, resulta imposible asegurarse totalmente
de que no est an siendo escuchados o intervenidos.
4. Problemas de autenticaci on. Debido a los problemas del canal de comunicaci on,
es necesario asegurarse de que la informaci on que recibimos en la computadora
viene de quien realmente creemos que viene, y que adem as no ha sido alterada.
Para esto se suele emplear criptografa asim etrica en conjunci on con funciones
resumen (hash).
5. Problemas de suplantaci on. En las redes tenemos el problema a nadido de que
cualquier usuario autorizado puede acceder al sistema desde fuera, por lo que
hemos de conar en sistemas ables para garantizar que los usuarios no est an
siendo suplantados por intrusos. Para conseguir esto normalmente se emplean
mecanismos basados en contrase nas.
6. No repudio. Cuando se recibe un mensaje no s olo es necesario poder identicar
de forma unvoca al remitente, sino que este asuma todas las responsabilidades
derivadas de la informaci on que haya podido enviar. En este sentido es fun-
damental impedir que el emisor pueda repudiar un mensaje, es decir, negar su
autora sobre el.
7. Anonimato. Es, en cierta manera, el concepto opuesto al del no repudio. En deter-
minadas aplicaciones, como puede ser un proceso electoral o la simple denun-
cia de violaciones de los derechos humanos en entornos dictatoriales, es crucial
garantizar el anonimato del ciudadano para poder preservar su intimidad y su
libertad. Es una caracterstica realmente difcil de conseguir, y desafortunada-
mente no goza de muy buena fama, especialmente en pases donde prima la
seguridad nacional sobre la libertad y la intimidad de los ciudadanos.
2.7. Autenticaci on
Como ya se ha dicho, el concepto de autenticaci on viene asociado a la compro-
baci on del origen e integridad de la informaci on. En general, y debido a los diferentes
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
2.7. Autenticaci on 37
tipos de situaciones que podemos encontrar en un sistema inform atico, distinguire-
mos tres tipos de autenticaci on:
Autenticaci on de mensaje. Queremos garantizar la procedencia de un mensaje
conocido, de forma que podamos asegurarnos de que no es una falsicaci on.
Este mecanismo se conoce habitualmente como rma digital.
Autenticaci on de usuario mediante contrase na. En este caso se trata de garantizar
la presencia de un usuario legal en el sistema. El usuario deber a poseer una
contrase na secreta que le permita identicarse.
Autenticaci on de dispositivo. Se trata de garantizar la presencia frente al sistema
de un dispositivo concreto. Este dispositivo puede estar solo o tratarse de una
llave electr onica que sustituye a la contrase na para identicar a un usuario.
N otese que la autenticaci on de usuario por medio de alguna caracterstica bio-
m etrica, como pueden ser las huellas digitales, la retina, el iris, la voz, etc. puede
reducirse a un problema de autenticaci on de dispositivo, solo que el dispositivo en
este caso es el propio usuario.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
38 2. Conceptos B asicos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Parte II
Fundamentos Te oricos de la
Criptografa
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 3
Teora de la Informaci on
Comenzaremos el estudio de los fundamentos te oricos de la Criptografa dando
una serie de nociones b asicas sobre Teora de la Informaci on, introducida por Claude
Shannon a nales de los a nos cuarenta. Esta disciplina permite efectuar una aproxi-
maci on formal al estudio de la seguridad de cualquier algoritmo criptogr aco, pro-
porcionando incluso la demostraci on de que existen sistemas invulnerables frente a
cualquier tipo de ataque, incluso disponiendo de capacidad de computaci on innita.
3.1. Cantidad de Informaci on
Vamos a introducir este concepto partiendo de su idea intuitiva. Para ello anali-
zaremos el siguiente ejemplo: supongamos que tenemos una bolsa con nueve bolas
negras y una blanca. Cu anta informaci on obtenemos si alguien nos dice que ha sa-
cado una bola blanca de la bolsa? Y cu anta obtenemos si despu es saca otra y nos
dice que es negra?
Obviamente, la respuesta a la primera pregunta es que aporta bastante informa-
ci on, puesto que est abamos casi seguros de que la bola tena que salir negra. An aloga-
mente si hubiera salido negra diramos que ese suceso no nos extra na (nos suministra
poca informaci on). En cuanto a la segunda pregunta, claramente podemos contestar
que el suceso no proporciona ninguna informaci on, ya que al no quedar bolas blancas
sabamos que iba a salir negra.
Podemos jarnos en la cantidad de informaci on como una medida de la disminu-
ci on de incertidumbre acerca de un suceso. Por ejemplo, si nos dicen que el n umero
que ha salido en un dado es menor que dos, estamos recibiendo m as informaci on que
si nos dicen que el n umero que ha salido es par.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
42 3. Teora de la Informaci on
Se puede decir que la cantidad de informaci on que obtenemos al conocer un he-
cho es directamente proporcional al n umero posible de estados que este tena a priori.
Si inicialmente tenamos diez posibilidades, conocer el hecho nos proporciona m as
informaci on que si inicialmente tuvi eramos dos. Por ejemplo, supone mayor infor-
maci on conocer la combinaci on ganadora del pr oximo sorteo de la Lotera Primitiva,
que saber si una moneda lanzada al aire va a caer con la cara o la cruz hacia arriba.
Claramente es m as f acil acertar en el segundo caso, puesto que el n umero de posibi-
lidades a priori y por tanto la incertidumbre, suponiendo sucesos equiprobables
es menor.
Tambi en la cantidad de informaci on es proporcional a la probabilidad de un su-
ceso. En el caso de las bolas pueden pasar dos cosas: sacar bola negra, que es m as
probable, y sacar bola blanca, que es menos probable. Sacar una bola negra aumenta
nuestro grado de certeza inicial de un 90 %a un 100 %, proporcion andonos una ganan-
cia del 10 %. Sacar una bola blanca aumenta esa misma certeza en un 90 % puesto
que partimos de un 10 %. Podemos considerar la disminuci on de incertidumbre
proporcional al aumento de certeza, por lo cual diremos que el primer suceso sacar
bola negra aporta menos informaci on.
A partir de ahora, con objeto de simplicar la notaci on, vamos a emplear una
variable aleatoria V para representar los posibles sucesos que podemos encontrar.
Notaremos el suceso i- esimo como x
i
, P(x
i
) ser a la probabilidad asociada a dicho
suceso, y n ser a el n umero de sucesos posibles.
Supongamos ahora que sabemos con toda seguridad que el unico valor que pue-
de tomar V es x
i
. Saber el valor de V no va a aportar ninguna informaci on, ya que
lo conocemos de antemano. Por el contrario, si tenemos una certeza del 99 % sobre la
posible ocurrencia de un valor cualquiera x
i
, el hecho de obtener un x
j
diferente pro-
porciona bastante informaci on, como ya hemos visto. Este concepto de informaci on
es cuanticable y se puede denir de la siguiente forma:
I
i
= log
2
(P(x
i
)) (3.1)
siendo P(x
i
) la probabilidad del estado x
i
. Obs ervese que si la probabilidad de un
estado fuera 1 (m axima), la cantidad de informaci on que aporta sera igual a 0, mien-
tras que si su probabilidad se acercara a 0, tendera a +esto es l ogico, un suceso
que no puede suceder nos aportara una cantidad innita de informaci on si llegara a
ocurrir.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.2. Entropa 43
3.2. Entropa
Efectuando una suma ponderada de las cantidades de informaci on de todos los
posibles estados de una variable aleatoria V , obtenemos:
H(V ) =
n
i=1
P(x
i
) log
2
[P(x
i
)] =
n
i=1
P(x
i
) log
2
_
1
P(x
i
)
_
(3.2)
Esta magnitud H(V ) se conoce somo la entropa de la variable aleatoria V . Sus
propiedades son las siguientes:
I. 0 H(V ) log
2
N
II. H(V ) = 0 i tal que P(x
i
) = 1 y P(x
j
) = 0 j ,= i
III. H(x
1
, x
2
. . . x
n
) = H(x
1
, x
2
. . . x
n
, x
n+1
) si P(x
n+1
) = 0
Como ejercicio vamos a demostrar la propiedad (I). Para ello emplearemos el Lema
de Gibbs, que dice que dados dos sistemas de n umeros p
1
, . . . p
n
y q
1
, . . . q
n
no negati-
vos tales que
n
i=1
p
i
=
n
i=1
q
i
se verica que
i=1
p
i
log
2
(p
i
)
n
i=1
p
i
log
2
(q
i
) (3.3)
Entonces, si tomamos p
i
= P(x
i
) y q
i
=
1
N
, resulta que
i=1
p
i
log
2
(p
i
)
n
i=1
p
i
log
2
_
1
N
_
y por lo tanto
H(X) log
2
_
1
N
_
n
i=1
p
i
= log
2
(N)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
44 3. Teora de la Informaci on
Obs ervese que la entropa es proporcional a la longitud media de los mensajes que
se necesitara para codicar una serie de valores de V de manera optima dado un al-
fabeto cualquiera. Esto quiere decir que cuanto m as probable sea un valor individual,
aportar a menos informaci on cuando aparezca, y podremos codicarlo empleando un
mensaje m as corto. Si P(x
i
) = 1 no necesitaramos ning un mensaje, puesto que sabe-
mos de antemano que V va a tomar el valor x
i
, mientras que si P(x
i
) = 0,9 parece
m as l ogico emplear mensajes cortos para representar el suceso x
i
y largos para los x
j
restantes, ya que el valor que m as veces va a aparecer en una secuencia de sucesos es
precisamente x
i
. Volveremos sobre este punto un poco m as adelante.
Veamos unos cuantos ejemplos m as:
La entropa de la variable aleatoria asociada a lanzar una moneda al aire es la
siguiente:
H(M) = (0,5 log
2
(0,5) + 0,5 log
2
(0,5)) = 1
Este suceso aporta exactamente una unidad de informaci on.
Si la moneda est a trucada (60 % de probabilidades para cara, 40 % para cruz), se
obtiene:
H(M) = (0,6 log
2
(0,6) + 0,4 log
2
(0,4)) = 0,970
Veamos el ejemplo de las bolas (nueve negras y una blanca):
H(M) = (0,9 log
2
(0,9) + 0,1 log
2
(0,1)) = 0,468
La cantidad de informaci on asociada al suceso m as simple, que consta unicamen-
te de dos posibilidades equiprobables como el caso de la moneda sin trucar,
ser a nuestra unidad a la hora de medir esta magnitud, y la denominaremos bit. Esta es
precisamente la raz on por la que empleamos logaritmos base 2, para que la cantidad
de informaci on del suceso m as simple sea igual a la unidad.
Podemos decir que la entropa de una variable aleatoria es el n umero medio de
bits que necesitaremos para codicar cada uno de los estados de la variable, supo-
niendo que expresemos cada suceso empleando un mensaje escrito en un alfabeto bi-
nario. Imaginemos ahora que queremos representar los diez dgitos decimales usan-
do secuencias de bits: con tres bits no tenemos suciente, as que necesitaremos m as,
pero cu antos m as? Si usamos cuatro bits para representar todos los dgitos tal vez
nos estemos pasando. . . Veamos cu anta entropa tienen diez sucesos equiprobables:
H =
10
i=1
1
10
log
2
_
1
10
_
= log
2
_
1
10
_
= 3,32bits
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.3. Entropa Condicionada 45
El valor que acabamos de calcular es el lmite te orico, que normalmente no se
puede alcanzar. Lo unico que podemos decir es que no existe ninguna codicaci on
que emplee longitudes promedio de mensaje inferiores al n umero que acabamos de
calcular. Veamos la siguiente codicaci on: 000 para 0, 001 para 1, 010 para 2, 011 para
3, 100 para 4, 101 para 5 ,1100 para 6, 1101 para 7, 1110 para 8, y 1111 para 9. Con esta
codicaci on empleamos, como media
3 6 + 4 4
10
= 3,4bits
para representar cada mensaje. N otese que este esquema permite codicar una se-
cuencia de n umeros por simple yuxtaposici on, sin ambig uedades, por lo que no ne-
cesitaremos smbolos que act uen de separadores, ya que estos alargaran la longitud
media de los mensajes. El denominado M etodo de Huffman, uno de los m as utilizados
en transmisi on de datos, permite obtener codicaciones binarias que se aproximan
bastante al optimo te orico de una forma sencilla y eciente.
3.3. Entropa Condicionada
Supongamos que tenemos ahora una variable aleatoria bidimensional (X, Y ). Re-
cordemos las distribuciones de probabilidad m as usuales que podemos denir sobre
dicha variable, teniendo n posibles casos para X y m para Y :
1. Distribuci on conjunta de (X, Y ):
P(x
i
, y
j
)
2. Distribuciones marginales de X e Y :
P(x
i
) =
m
j=1
P(x
i
, y
j
) P(y
j
) =
n
i=1
P(x
i
, y
j
)
3. Distribuciones condicionales de X sobre Y y viceversa:
P(x
i
/y
j
) =
P(x
i
, y
j
)
P(y
j
)
P(y
j
/x
i
) =
P(x
i
, y
j
)
P(x
i
)
Deniremos la entropa de las distribuciones que acabamos de referir:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
46 3. Teora de la Informaci on
H(X, Y ) =
n
i=1
m
j=1
P(x
i
, y
j
) log
2
(P(x
i
, y
j
))
H(X/Y = y
j
) =
n
i=1
P(x
i
/y
j
) log
2
(P(x
i
/y
j
))
Haciendo la suma ponderada de los H(X/Y = y
j
) obtenemos la expresi on de la
Entropa Condicionada de X sobre Y :
H(X/Y ) =
n
i=1
m
j=1
P(y
j
)P(x
i
/y
j
) log
2
(P(x
i
/y
j
)) =
=
n
i=1
m
j=1
P(x
i
, y
j
) log
2
(P(x
i
/y
j
)) (3.4)
As como existe una Ley de la Probabilidad Total, an alogamente se dene la Ley de
Entropas Totales:
H(X, Y ) = H(X) +H(Y/X) (3.5)
cumpli endose adem as, si X e Y son variables independientes:
H(X, Y ) = H(X) +H(Y ) (3.6)
Teorema de Disminuci on de la Entropa: La entropa de una variable X condicionada
por otra Y es menor o igual a la entropa de X, alcanz andose la igualdad si y s olo si
las variables X e Y son independientes.
Este teorema representa una idea intuitiva bien clara: conocer algo acerca de la
variable Y puede que nos ayude a saber m as sobre X lo cual se debera traducir
en una reducci on de su entropa, pero en ning un caso podr a hacer que aumente
nuestra incertidumbre.
3.4. Cantidad de Informaci on entre dos Variables
Shannon propuso una medida para la cantidad de informaci on que aporta sobre
una variable el conocimiento de otra. Se denir a, pues, la cantidad de informaci on de
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.5. Criptosistema Seguro de Shannon 47
Shannon que la variable X contiene sobre Y como:
I(X, Y ) = H(Y ) H(Y/X) (3.7)
Esto quiere decir que la cantidad de informaci on que obtenemos del hecho de
conocer X al medir la incertidumbre sobre Y es igual a la disminuci on de entropa
que este conocimiento conlleva. Sus propiedades son las siguientes:
I. I(X, Y ) = I(Y, X)
II. I(X, Y ) 0
3.5. Criptosistema Seguro de Shannon
Diremos que un criptosistema es seguro si la cantidad de informaci on que aporta
el hecho de conocer el mensaje cifrado c sobre la entropa del texto claro m vale cero.
Es decir:
I(C, M) = 0 (3.8)
Esto signica sencillamente que la distribuci on de probabilidad que nos inducen
todos los posibles mensajes en claro el conjunto M no cambia si conocemos el
mensaje cifrado. Para entenderlo mejor supongamos que s se modica dicha distri-
buci on: El hecho de conocer un mensaje cifrado, al variar la distribuci on de probabi-
lidad sobre M hara unos mensajes m as probables que otros, y por consiguiente unas
claves de cifrado m as probables que otras. Repitiendo esta operaci on muchas veces
con mensajes diferentes, cifrados con la misma clave, podramos ir modicando la
distribuci on de probabilidad sobre la clave empleada hasta obtener un valor de clave
mucho m as probable que todos los dem as, permiti endonos romper el criptosistema.
Si por el contrario el sistema cumpliera la condici on (3.8), jam as podramos rom-
perlo, ni siquiera empleando una m aquina con capacidad de proceso innita. Por
ello los criptosistemas que cumplen la condici on de Shannon se denominan tambi en
criptosistemas ideales.
Se puede demostrar tambi en que para que un sistema sea criptoseguro seg un el
criterio de Shannon, la cardinalidad del espacio de claves ha de ser al menos igual que
la del espacio de mensajes. En otras palabras, que la clave ha de ser al menos tan larga
como el mensaje que queramos cifrar. Esto vuelve in utiles a estos criptosistemas en la
pr actica, porque si la clave es tanto o m as larga que el mensaje, a la hora de protegerla
nos encontraremos con el mismo problema que tenamos para proteger el mensaje.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
48 3. Teora de la Informaci on
Un ejemplo cl asico de criptosistema seguro es el algoritmo inventado por Mau-
borgne y Vernam en 1917, que consista en emplear como clave de codicaci on una
secuencia de letras tan larga como el mensaje original, y usar cada car acter de la cla-
ve para cifrar exactamente una letra del mensaje, haciendo la suma m odulo 26. Este
sistema dio lugar a las secuencias de un solo uso (one-time pads): cadenas de longitud
arbitraria que se combinan byte a byte con el mensaje original mediante la operaci on
or-exclusivo u otra similar para obtener el criptograma.
3.6. Redundancia
Si una persona lee un mensaje en el que faltan algunas letras, normalmente puede
reconstruirlo. Esto ocurre porque casi todos los smbolos de un mensaje en lengua-
je natural contienen informaci on que se puede extraer de los smbolos de alrededor
informaci on que, en la pr actica, se est a enviando dos o m as veces, o en otras pala-
bras, porque el lenguaje natural es redundante. Puesto que tenemos mecanismos para
denir la cantidad de informaci on que presenta un suceso, podemos intentar medir
el exceso de informaci on (redundancia) de un lenguaje. Para ello vamos a dar una
serie de deniciones:
= lm
n
H
n
(M)
n
(3.10)
Hay principalmente dos aplicaciones fundamentales de la Teora de la Informa-
ci on, relacionadas directamente con la redundancia:
Compresi on de datos: simplemente trata de eliminar la redundancia dentro de un
archivo, considerando cada byte como un mensaje elemental, y codic andolo
con m as o menos bits seg un su frecuencia de aparici on. En este sentido se trata
de codicar exactamente la misma informaci on que transporta el archivo origi-
nal, pero empleando un n umero de bits lo m as peque no posible.
C odigos de Redundancia Cclica (CRC): permiten introducir un campo de longitud
mnima en el mensaje, tal que este proporcione la mayor redundancia posible.
As, si el mensaje original resultase alterado, la probabilidad de que el CRC
a nadido siga siendo correcto es mnima.
N otese que, conocidos los patrones de redundancia de un lenguaje, es posible dar
de forma autom atica una estimaci on de si una cadena de smbolos corresponde o no a
dicho lenguaje. Esta caracterstica es aprovechada para efectuar ataques por la fuerza
bruta, ya que ha de asignarse una probabilidad a cada clave individual en funci on de
las caractersticas del mensaje obtenido al decodicar el criptograma con dicha clave.
El n umero de claves suele ser tan elevado que resulta imposible una inspecci on vi-
sual. Una estrategia bastante interesante para protegerse contra este tipo de ataques,
y que suele emplearse con frecuencia, consiste en comprimir los mensajes antes de
codicarlos. De esa manera eliminamos la redundancia y hacemos m as difcil a un
atacante apoyarse en las caractersticas del mensaje original para recuperar la clave.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
50 3. Teora de la Informaci on
3.7. Desinformaci on y Distancia de Unicidad
Deniremos desinformaci on de un sistema criptogr aco como la entropa condicio-
nada del conjunto M de posibles mensajes sobre el conjunto C de posibles criptogra-
mas:
H(M/C) =
mM
cC
P(c)P(m/c)log
2
(P(m/c)) (3.11)
Esta expresi on permite saber la incertidumbre que queda sobre cu al ha sido men-
saje enviado m si conocemos su criptograma asociado c. Si esa incertidumbre fuera
la misma que desconociendo c en cuyo caso se cumplira que H(M) = H(M/C),
nos encontraramos con que C y M son variables estadsticamente independientes, y
por lo tanto estaramos frente a un criptosistema seguro de Shannon, ya que jam as
podramos disminuir nuestra incertidumbre acerca de m. Lo habitual no obstante es
que exista relaci on estadstica entre C y M (a trav es del espacio de claves K), por lo
que H(M/C) < H(M).
Adicionalmente, si el valor de H(M/C) fuera muy peque no con respecto a H(M),
signicara que el hecho de conocer c proporciona mucha informaci on sobre m, lo
cual quiere decir que nuestro criptosistema es inseguro. El peor de los casos sera
que H(M/C) = 0, puesto que entonces, conociendo el valor de c tendramos absoluta
certeza sobre el valor de m.
Esta magnitud se puede medir tambi en en funci on del conjunto K de claves, y
entonces representar a la incertidumbre que nos queda sobre k conocida c:
H(K/C) =
kK
cC
P(c)P(k/c)log
2
(P(k/c)) (3.12)
Deniremos nalmente la distancia de unicidad de un criptosistema como la lon-
gitud mnima de mensaje cifrado que aproxima el valor H(K/C) a cero. En otras
palabras, es la cantidad de texto cifrado que necesitamos para poder descubrir la
clave. Los criptosistemas seguros de Shannon tienen distancia de unicidad innita.
Nuestro objetivo a la hora de dise nar un sistema criptogr aco ser a que la distancia
de unicidad sea lo m as grande posible.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.8. Confusi on y Difusi on 51
3.8. Confusi on y Difusi on
Seg un la Teora de Shannon, las dos t ecnicas b asicas para ocultar la redundancia
en un texto claro son la confusi on y la difusi on. Estos conceptos, a pesar de su an-
tig uedad, poseen una importancia clave en Criptografa moderna.
Confusi on. Trata de ocultar la relaci on entre el texto claro y el texto cifrado. Re-
cordemos que esa relaci on existe y se da a partir de la clave k empleada, puesto
que si no existiera jam as podramos descifrar los mensajes. El mecanismo m as
simple de confusi on es la sustituci on, que consiste en cambiar cada ocurrencia
de un smbolo en el texto claro por otro. La sustituci on puede ser tan simple o
tan compleja como queramos.
Difusi on. Diluye la redundancia del texto claro reparti endola a lo largo de todo el
texto cifrado. El mecanismo m as elemental para llevar a cabo una difusi on es la
transposici on, que consiste en cambiar de sitio elementos individuales del texto
claro.
3.9. Ejercicios Resueltos
1. Calcule la informaci on que proporciona el hecho de que en un dado no cargado
salga un n umero par.
Soluci on: La probabilidad de que en un dado no cargado salga un n umero par
es
1
2
. Por lo tanto, empleando la expresi on (3.1) tenemos que la informaci on
asociada al suceso vale:
I
par
= log
2
_
1
2
_
= 1 bit
2. Calcule la entropa que tiene un dado que presenta doble probabilidad para el
n umero tres que para el resto.
Soluci on: El dado presenta la siguiente distribuci on de probabilidad:
P(x = 3) =
2
7
; P(x ,= 3) =
1
7
Su entropa ser a, pues
H(X) =
2
7
log
2
_
2
7
_
5
1
7
log
2
_
1
7
_
= 0,5163 + 2,0052 = 2,5215
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
52 3. Teora de la Informaci on
3. Demuestre el Lema de Gibbs, teniendo en cuenta la siguiente propiedad:
x, x > 0 = log
2
(x) x 1
Soluci on: Sea el cociente
q
i
p
i
. Puesto que tanto p
i
como q
i
son positivos, su cociente
tambi en lo ser a, luego
log
2
_
q
i
p
i
_
= log
2
(q
i
) log
2
(p
i
)
q
i
p
i
1
Multiplicando ambos miembros de la desigualdad por p
i
se tiene
p
i
log
2
(q
i
) p
i
log
2
(p
i
) q
i
p
i
Puesto que p
i
es positivo, se mantiene el sentido de la desigualdad. Ahora su-
memos todas las desigualdades y obtendremos lo siguiente:
n
i=1
p
i
log
2
(q
i
)
n
i=1
p
i
log
2
(p
i
)
n
i=1
q
i
i=1
p
i
= 0
Reorganizando los t erminos obtenemos nalmente la expresi on buscada
i=1
p
i
log
2
(p
i
)
n
i=1
p
i
log
2
(q
i
)
4. Demuestre la Ley de Entropas Totales.
Soluci on: Desarrollemos el valor de H(Y/X), seg un la expresi on (3.4):
H(Y/X) =
_
j=1
n
i=1
P(x
i
, y
j
) log
2
(P(y
j
/x
i
))
_
La Ley de la Probabilidad Total dice que
P(X, Y ) = P(X) P(Y/X)
por lo que nuestra expresi on se convierte en
_
j=1
n
i=1
P(x
i
, y
j
) log
2
_
P(x
i
, y
j
)
P(x
i
)
_
_
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.9. Ejercicios Resueltos 53
Descomponiendo el logaritmo del cociente como la diferencia de logaritmos se
obtiene
_
j=1
n
i=1
P(x
i
, y
j
) [log
2
(P(x
i
, y
j
)) log
2
(P(x
i
))]
_
Si desarrollamos la expresi on anterior tenemos
_
j=1
n
i=1
P(x
i
, y
j
) log
2
(P(x
i
, y
j
))
_
+
_
m
j=1
n
i=1
P(x
i
, y
j
) log
2
(P(x
i
))
_
El primer sumando es igual a H(X, Y ). Observemos el ultimo sumando:
_
m
j=1
n
i=1
P(x
i
, y
j
) log
2
(P(x
i
))
_
=
_
n
i=1
log
2
(P(x
i
))
m
j=1
P(x
i
, y
j
)
_
=
=
_
n
i=1
log
2
(P(x
i
))P(x
i
)
_
= H(X)
Luego H(Y/X) = H(X, Y ) H(X). Reorganizando los t erminos, llegamos -
nalmente a la expresi on de la Ley de Entropas Totales:
H(X, Y ) = H(X) +H(Y/X)
5. Suponga un equipo de f utbol que nunca empata, que cuando no llueve vence el
65 % de sus partidos, y que si llueve s olo gana el 35 % de las veces. La probabili-
dad de que llueva en un partido es del 15 %. Cu al es la cantidad de informaci on
que aporta la variable aleatoria lluvia sobre la variable ganar un partido?
Soluci on: Sea G la variable aleatoria que representa los partidos. Sea g
s
el suceso
correspondiente a que el equipo gane el partido, y g
n
el suceso asociado a que
lo pierda. An alogamente, deniremos la variable L, asociada a que llueva o no.
Tendremos, pues:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
54 3. Teora de la Informaci on
P(l
s
) = 0,15
P(l
n
) = 0,85
P(g
s
, l
s
) = 0,35 0,15 = 0,0525
P(g
s
, l
n
) = 0,65 0,85 = 0,5525
P(g
n
, l
s
) = 0,65 0,15 = 0,0975
P(g
n
, l
n
) = 0,35 0,85 = 0,2975
P(g
s
/L = l
s
) = 0,35
P(g
s
/L = l
n
) = 0,65
P(g
n
/L = l
s
) = 0,65
P(g
n
/L = l
n
) = 0,35
P(g
s
) = P(l
n
) P(g
s
/L = l
n
) +P(l
s
) P(g
s
/L = l
s
) = 0,605
P(g
n
) = P(l
n
) P(g
n
/L = l
n
) +P(l
s
) P(g
n
/L = l
s
) = 0,395
Calculemos ahora las entropas:
H(G) = P(g
s
) log
2
(P(g
s
)) P(g
n
) log
2
(P(g
n
)) = 0,9679
H(G/L) = P(g
s
, l
s
) log
2
(P(g
s
/L = l
s
)) P(g
s
, l
n
) log
2
(P(g
s
/L = l
n
))
P(g
n
, l
s
) log
2
(P(g
n
/L = l
s
)) P(g
n
, l
n
) log
2
(P(g
n
/L = l
n
)) =
= 0,0525 log
2
(0,35) 0,5525 log
2
(0,65)
0,0975 log
2
(0,65) 0,2975 log
2
(0,35) = 0,9333
La cantidad de informaci on entre G y L es, nalmente
H(G) H(G/L) = 0,9679 0,9333 = 0,0346 bits
6. Suponga un conjunto de 20 mensajes equiprobables. Cu al ser a la longitud me-
dia de cada mensaje para una transmisi on optima? Escriba un c odigo binario
que aproxime su longitud media de mensaje a ese valor optimo.
Soluci on:La longitud media optima de los mensajes, cuando estos son equipro-
bables, es el logaritmo base dos del n umero de mensajes, por tanto
log
2
(20) = 4,3219
Una posible codicaci on, con una longitud media de 4,4 bits por mensaje, sera
la siguiente:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
3.10. Ejercicios Propuestos 55
m
0
00000 m
10
0110
m
1
00001 m
11
0111
m
2
00010 m
12
1000
m
3
00011 m
13
1001
m
4
00100 m
14
1010
m
5
00101 m
15
1011
m
6
00110 m
16
1100
m
7
00111 m
17
1101
m
8
0100 m
18
1110
m
9
0101 m
19
1111
7. Considere un conjunto de 11 mensajes, el primero con probabilidad 50 %, y el
resto con probabilidad 5 %. Calcule su entropa.
Soluci on: La entropa de los mensajes es igual a:
H(X) = 0,5 log
2
(0,5) 10 0,05 log
2
(0,05) = 2,660 bits
3.10. Ejercicios Propuestos
1. Calcule la cantidad de informaci on asociada a conocer el ganador de una ca-
rrera en la que compiten quince atletas, si suponemos que a priori todos los
corredores tienen las mismas probabilidades de ganar. Calcule tambi en la can-
tidad de informaci on asociada a conocer tambi en qui enes quedan en segundo
y tercer puesto respectivamente.
2. Suponga que lanzamos dos dados y sumamos las puntuaciones obtenidas. Cal-
cule la entropa asociada a dicho experimento.
3. Calcule el ndice absoluto de un lenguaje con 32 smbolos. Calcule la redundan-
cia de dicho lenguaje, sabiendo que su ndice es de 2bits/letra.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
56 3. Teora de la Informaci on
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 4
Complejidad Algortmica
Cuando dise namos un algoritmo criptogr aco, pretendemos plantear a un posi-
ble atacante un problema que este sea incapaz de resolver. Pero, bajo qu e circuns-
tancias podemos considerar que un problema es intratable? Evidentemente, queremos
que nuestro sg on se enfrente a unos requerimientos de computaci on que no pueda
asumir. La cuesti on es c omo modelizar y cuanticar la capacidad de c alculo necesa-
ria para abordar un problema. En este captulo efectuaremos un breve repaso de las
herramientas formales que nos van a permitir dar respuesta a estos interrogantes.
4.1. Concepto de Algoritmo
En la actualidad, la pr actica totalidad de las aplicaciones criptogr acas emplean
computadoras en sus c alculos, y las computadoras convencionales est an dise nadas
para ejecutar algoritmos. Deniremos algoritmo como una secuencia nita y ordenada de
instrucciones elementales que, dados los valores de entrada de un problema, en alg un momento
naliza y devuelve la soluci on.
En efecto, las computadoras actuales poseen una memoria, que les sirve para al-
macenar datos, unos dispositivos de entrada y salida que les permiten comunicarse
con el exterior, una unidad capaz de hacer operaciones aritm eticas y l ogicas, y una
unidad de control, capaz de leer, interpretar y ejecutar un programa o secuencia de
instrucciones. Habitualmente, las unidades aritm eticol ogica y de control se suelen
encapsular en un unico circuito integrado, que se conoce por microprocesador o CPU.
Cuando nosotros dise namos un algoritmo de cifrado, estamos expresando, de un
modo m as o menos formal, la estructura que ha de tener la secuencia de instrucciones
concreta que permita implementar dicho algoritmo en cada computadora particular.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
58 4. Complejidad Algortmica
Habr a computadoras con m as o menos memoria, velocidad o incluso n umero de
microprocesadores capaces de ejecutar varios programas al mismo tiempo, pero
en esencia todas obedecer an al concepto de algoritmo.
La Teora de Algoritmos es una ciencia que estudia c omo construir algoritmos pa-
ra resolver diferentes problemas. En muchas ocasiones no basta con encontrar una
forma de solucionar el problema: la soluci on ha de ser optima. En este sentido la
Teora de Algoritmos tambi en proporciona herramientas formales que nos van a per-
mitir decidir qu e algoritmo es mejor en cada caso, independientemente de las carac-
tersticas particulares
1
de la computadora concreta en la que queramos implantarlo.
La Criptografa depende en gran medida de la Teora de Algoritmos, ya que por
un lado hemos de asegurar que el usuario legtimo, que posee la clave, puede cifrar
y descifrar la informaci on de forma r apida y c omoda, mientras que por otro hemos
de garantizar que un atacante no dispondr a de ning un algoritmo eciente capaz de
comprometer el sistema.
Cabra plantearnos ahora la siguiente cuesti on: si un mismo algoritmo puede re-
sultar m as r apido en una computadora que en otra, podra existir una computadora
capaz de ejecutar de forma eciente algoritmos que sabemos que no lo son?. Existe un
principio fundamental en Teora de Algoritmos, llamado principio de invarianza, que
dice que si dos implementaciones del mismo algoritmo consumen t
1
(n) y t
2
(n) segun-
dos respectivamente, siendo n el tama no de los datos de entrada, entonces existe una
constante positiva c tal que t
1
(n) ct
2
(n), siempre que n sea lo sucientemente gran-
de. En otras palabras, que aunque podamos encontrar una computadora m as r apida,
o una implementaci on mejor, la evoluci on del tiempo de ejecuci on del algoritmo en
funci on del tama no del problema permanecer a constante, por lo tanto la respuesta a
la pregunta anterior es, afortunadamente, negativa. Eso nos permite centrarnos por
completo en el algoritmo en s y olvidarnos de la implementaci on concreta a la hora
de hacer nuestro estudio.
En muchas ocasiones, el tiempo de ejecuci on de un algoritmo viene dado por las
entradas concretas que le introduzcamos. Por ejemplo, se necesitan menos operacio-
nes elementales para ordenar de menor a mayor la secuencia 1, 2, 3, 4, 6, 5 que 6,
5, 3, 2, 1, 4. Eso nos llevar a a distinguir entre tres alternativas:
Mejor caso: Es el n umero de operaciones necesario cuando los datos se encuen-
tran distribuidos de la mejor forma posible para el algoritmo. Evidentemente
este caso no es muy pr actico, puesto que un algoritmo puede tener un mejor
caso muy bueno y comportarse muy mal en el resto.
1
En algunos casos, sobre todo cuando se trata de computadoras con muchos microprocesadores, se
estudian algoritmos especcos para aprovechar las peculiaridades de la m aquina sobre la que se van
a implantar.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
4.2. Complejidad Algortmica 59
Peor caso: Es el n umero de operaciones necesario para la distribuci on m as pe-
simista de los datos de entrada. Nos permitir a obtener una cota superior del
tiempo de ejecuci on necesario. Un algoritmo que se comporte bien en el peor
caso, ser a siempre un buen algoritmo.
Caso promedio: Muchas veces, hay algoritmos que en el peor caso no funcionan
bien, pero en la mayora de los casos que se presentan habitualmente tienen un
comportamiento razonablemente eciente. De hecho, algunos algoritmos tpi-
cos de ordenaci on necesitan el mismo n umero de operaciones en el peor caso,
pero se diferencian considerablemente en el caso promedio.
4.2. Complejidad Algortmica
En la mayora de los casos carece de inter es calcular el tiempo de ejecuci on concre-
to de un algoritmo en una computadora, e incluso algunas veces simplemente resulta
imposible. En su lugar emplearemos una notaci on de tipo asint otico, que nos permi-
tir a acotar dicha magnitud. Normalmente consideraremos el tiempo de ejecuci on del
algoritmo como una funci on f(n) del tama no n de la entrada, y la llamaremos or-
den de complejidad del algoritmo. f debe estar denida para los n umeros naturales y
devolver valores en R
+
.
Dada la funci on f(n), haremos las siguientes deniciones:
Lmite superior asint otico: f(n) = O(g(n)) si existe una constante positiva c y un
n umero entero positivo n
0
tales que 0 f(n) cg(n) n n
0
.
Lmite inferior asint otico: f(n) = (g(n)) si existe una constante positiva c y un
n umero entero positivo n
0
tales que 0 cg(n) f(n) n n
0
.
Lmite exacto asint otico: f(n) = (g(n)) si existen dos constantes positivas c
1
, c
2
y un n umero entero positivo n
0
tales que c
1
g(n) f(n) c
2
g(n) n n
0
.
Notaci on o: f(n) = o(g(n)) si para cualquier constante positiva c existe un n ume-
ro entero positivo n
0
> 0 tal que 0 f(n) cg(n) n n
0
.
Intuitivamente, f(n) = O(g(n)) signica que f(n) crece asint oticamente no m as
r apido que g(n) multiplicada por una constante. An alogamente f(n) = (g(n)) quie-
re decir que f(n) crece asint oticamente al menos tan r apido como g(n) multiplicada
por una constante. Deniremos ahora algunas propiedades sobre la notaci on que
acabamos de introducir:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
60 4. Complejidad Algortmica
a) f(n) = O(g(n)) g(n) = (f(n)).
b) f(n) = (g(n)) f(n) = O(g(n)) f(n) = (g(n)).
c) Si f(n) = O(h(n)) g(n) = O(h(n)), entonces (f +g)(n) = O(h(n)).
d) Si f(n) = O(h(n)) g(n) = O(l(n)), entonces (f g)(n) = O(h(n)l(n)).
e) f(n) = O(f(n)).
f) Si f(n) = O(g(n)) g(n) = O(h(n)), entonces f(n) = O(h(n)).
Para algunas funciones de uso com un, podemos denir directamente su orden de
complejidad:
Funciones polinomiales: Si f(n) es un polinomio de grado k, y su coeciente de
mayor grado es positivo, entonces f(n) = (n
k
).
Funciones logartmicas: Para cualquier constante c > 0, log
c
(n) = (ln(n)).
Factoriales: n! = (2
n
).
Logaritmo de un factorial: ln(n!) = (nln(n)).
Veamos un ejemplo: supongamos que tenemos un algoritmo que necesita llevar a
cabo f(n) = 20n
2
+ 10n + 1000 operaciones elementales. Podemos decir que ese al-
goritmo tiene un orden de ejecuci on (n
2
), es decir, que el tiempo de ejecuci on crece,
de forma asint otica, proporcionalmente al cuadrado del tama no de la entrada. Otro
algoritmo que necesite g(n) = n
3
+ 1 operaciones efectuar a menos c alculos para una
entrada peque na, pero su orden es (n
3
), por lo que crecer a mucho m as r apidamente
que el anterior y, en consecuencia, ser a menos eciente.
4.2.1. Operaciones Elementales
Hasta ahora hemos empleado el t ermino operaciones elementales sin especicar su
signicado concreto. Podemos considerar una operaci on elemental como aquella que
se ejecuta siempre en tiempo constante. Evidentemente, en funci on de las caractersti-
cas concretas de la computadora que estemos manejando, habr a operaciones que
podr an considerarse elementales o no. Por ejemplo, en una computadora que pue-
da operar unicamente con n umeros de 16 bits, no podr a considerarse elemental una
operaci on con n umeros de 32 bits.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
4.3. Algoritmos Polinomiales, Exponenciales y Subexponenciales 61
En general, el tama no de la entrada a un algoritmo se mide en bits, y se consideran
en principio elementales unicamente las operaciones a nivel de bit. Sean a y b dos
n umeros enteros positivos, ambos menores o iguales que n. Necesitaremos, pues,
aproximadamente log
2
(n) bits para representarlos n otese que, en este caso, log
2
(n)
es el tama no de la entrada. Seg un este criterio, las operaciones aritm eticas, llevadas
a cabo mediante los algoritmos tradicionales, presentan los siguientes ordenes de
complejidad:
Suma (a +b): O(log
2
(a) + log
2
(b)) = O(log
2
(n))
Resta (a b): O(log
2
(a) + log
2
(b)) = O(log
2
(n))
Multiplicaci on (a b): O(log
2
(a) log
2
(b)) = O((log
2
(n))
2
)
Divisi on (a/b): O(log
2
(a) log
2
(b)) = O((log
2
(n))
2
)
Recordemos que el orden de complejidad de un logaritmo es independiente de la
base, por lo que la capacidad de realizar en tiempo constante operaciones aritm eti-
cas con n umeros de m as bits unicamente introducir a factor de proporcionalidad
recu erdese que log
a
(x) = log
b
(x) log
a
(b). Dicho factor no afectar a al orden de com-
plejidad obtenido, por lo que podemos considerar que estas operaciones se efect uan
en grupos de bits de tama no arbitrario. En otras palabras, una computadora que rea-
lice operaciones con n umeros de 32 bits debera tardar la mitad en ejecutar el mismo
algoritmo que otra que s olo pueda operar con n umeros de 16 bits pero, asint otica-
mente, el crecimiento del tiempo de ejecuci on en funci on del tama no de la entrada
ser a el mismo para ambas.
4.3. Algoritmos Polinomiales, Exponenciales y Subex-
ponenciales
Diremos que un algoritmo es polinomial si su peor caso de ejecuci on es de orden
O(n
k
), donde n es el tama no de la entrada y k es una constante. Adicionalmente,
cualquier algoritmo que no pueda ser acotado por una funci on polinomial, se conoce
como exponencial. En general, los algoritmos polinomiales se consideran ecientes,
mientras que los exponenciales se consideran inecientes.
Un algoritmo se denomina subexponencial si en el peor de los casos, la funci on de
ejecuci on es de la forma e
o(n)
, donde n es el tama no de la entrada. Son asint oticamente
m as r apidos que los exponenciales puros, pero m as lentos que los polinomiales.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
62 4. Complejidad Algortmica
4.4. Clases de Complejidad
Para simplicar la notaci on, en muchas ocasiones se suele reducir el problema
de la complejidad algortmica a un simple problema de decisi on, de forma que se
considera un algoritmo como un mecanismo que permite obtener una respuesta s o
no a un problema concreto.
La clase de complejidad P es el conjunto de todos los problemas de decisi on que
pueden ser resueltos en tiempo polinomial.
La clase de complejidad NP es el conjunto de todos los problemas para los cuales
una respuesta armativa puede ser vericada en tiempo polinomial, emplean-
do alguna informaci on extra, denominada certicado.
La clase de complejidad coNP es el conjunto de todos los problemas para los cua-
les una respuesta negativa puede ser vericada en tiempo polinomial, usando
un certicado apropiado.
N otese que el hecho de que un problema sea NP, no quiere decir necesariamen-
te que el certicado correspondiente sea f acil de obtener, sino que, dado este ulti-
mo, puede vericarse la respuesta armativa en tiempo polinomial. Una observaci on
an aloga puede llevarse a cabo sobre los problemas coNP.
Sabemos que P NP y que P co-NP. Sin embargo, a un no se sabe si P = NP,
si NP = coNP, o si P = NP coNP. Si bien muchos expertos consideran que nin-
guna de estas tres igualdades se cumple, este punto no ha podido ser demostrado
matem aticamente.
Dentro de la clase NP, existe un subconjunto de problemas que se llaman NP
completos, y cuya clase se nota como NPC. Estos problemas tienen la peculiaridad
de que todos ellos son equivalentes, es decir, se pueden reducir unos en otros, y si
logr aramos resolver alguno de ellos en tiempo polinomial, los habramos resuelto
todos. Tambi en se puede decir que cualquier problema NPcompleto es al menos tan
difcil de resolver como cualquier otro problema NP, lo cual hace a la clase NPC la
de los problemas m as difciles de resolver computacionalmente.
Sea A = a
1
, a
2
, . . . a
n
un conjunto de n umeros enteros positivos, y s otro n ume-
ro entero positivo. El problema de determinar si existe un subconjunto de A cuyos
elementos sumen s es un problema NPcompleto, y, como ya se ha dicho, todos los
problemas de esta clase pueden ser reducidos a una instancia de este. N otese que da-
do un subconjunto de A, es muy f acil vericar si suma s, y que dado un subconjunto
de A que sume s que desempe nara el papel de certicado, se puede vericar
f acilmente que la respuesta al problema es armativa.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
4.5. Algoritmos Probabilsticos 63
Figura 4.1: Relaci on entre las clases de complejidad P, NP, coNP y NPC.
En la gura 4.1 puede observarse gr acamente la relaci on existente entre las dis-
tintas clases de complejidad que acabamos de denir.
Finalmente, apuntaremos que existe una clase de problemas, los denominados
NPduros esta clase se dene sobre los problemas en general, no s olo sobre los
de decisi on, y que contiene la versi on computacional del problema denido ante-
riormente, que consistira en encontrar el subconjunto de A cuyos elementos suman
s.
4.5. Algoritmos Probabilsticos
Hasta ahora hemos estudiado la complejidad de algoritmos de tipo determinsti-
co, que siempre siguen el mismo camino de ejecuci on y que siempre llegan si lo
hacen a la misma soluci on. Sin embargo, existen problemas para los cuales puede
ser m as interesante emplear algoritmos de tipo no determinstico, tambi en llamados
probabilsticos o aleatorizados. Este tipo de algoritmos maneja alg un tipo de par ame-
tro aleatorio, lo cual hace que dos ejecuciones diferentes con los mismos datos de
entrada no tengan por qu e ser id enticas. En algunos casos, m etodos de este tipo per-
miten obtener soluciones en una cantidad de tiempo considerablemente inferior a la
necesaria si se emplean algoritmos determinsticos (ver secci on 5.7).
Podemos clasicar los algoritmos no determinsticos seg un la probabilidad con la
que devuelvan la soluci on correcta. Sea Aun algoritmo aleatorizado para el problema
de decisi on L, y sea I una instancia arbitraria de L. Sea P1 la probabilidad de que A
devuelva cierto cuando I es cierto, y P2 la probabilidad de que A devuelva cierto
cuando I es falso.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
64 4. Complejidad Algortmica
A es de tipo error nulo si P1 = 1 y P2 = 0.
A es de tipo error simple si P1 c, siendo c una constante positiva, y P2 = 0
A es de tipo error doble si P1
1
2
+, y P2
1
2
Deniremos tambi en el tiempo esperado de ejecuci on de un algoritmo aleatoriza-
do como el lmite superior del tiempo de ejecuci on esperado para cada entrada, expresa-
do en funci on del tama no de la entrada. El tiempo de ejecuci on esperado para cada
entrada ser a la media de los tiempos obtenidos para esa entrada y todas las posibles
salidas del generador aleatorio.
Las clases de complejidad probabilstica son las siguientes:
Clase ZPP: conjunto de todos los problemas de decisi on para los cuales existe un
algoritmo de tipo error nulo que se ejecuta en un tiempo esperado de ejecuci on
polinomial.
Clase RP: conjunto de los problemas de decisi on para los cuales existe un algo-
ritmo de tipo error simple que se ejecuta en el peor caso en tiempo polinomial.
Clase BPP: conjunto de los problemas de decisi on para los cuales existe un al-
goritmo de tipo error doble que se ejecuta en el peor caso en tiempo polinomial.
Finalmente, diremos que P ZPP RP BPP y RP NP.
4.6. Conclusiones
En este captulo hemos contemplado unicamente aquellos problemas para los que
existe una soluci on algortmica el programa naliza siempre, aunque necesite un
n umero astron omico de operaciones elementales, y hemos dejado a un lado deli-
beradamente aquellos problemas para los cuales no existen algoritmos cuya nali-
zaci on est e garantizada (problemas nodecidibles y semidecicibles), ya que en principio
escapan al prop osito de este libro.
Se han repasado las clases gen ericas de problemas que se pueden afrontar, en
funci on del tipo de algoritmos que permiten resolverlos, y se ha descrito una notaci on
general para expresar de forma precisa la complejidad de un algoritmo concreto. Se
ha puesto de maniesto asimismo que un algoritmo ineciente, cuando el tama no
de la entrada es lo sucientemente grande, es totalmente inabordable incluso para la
m as potente de las computadoras, al menos con la tecnologa actual.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
4.6. Conclusiones 65
El hecho de que no se conozca un algoritmo eciente para resolver un problema
no quiere decir que este no exista, y por eso es tan importante la Teora de Algorit-
mos para la Criptografa. Si, por ejemplo, se lograra descubrir un m etodo eciente
capaz de resolver logaritmos discretos (ver secci on 5.4), algunos de los algoritmos
asim etricos m as populares en la actualidad dejaran de ser seguros. De hecho, la con-
tinua reducci on del tiempo de ejecuci on necesario para resolver ciertos problemas,
propiciada por la aparici on de algoritmos m as ecientes, junto con el avance de las
prestaciones del hardware disponible, obliga con relativa frecuencia a actualizar las
previsiones sobre la seguridad de muchos sistemas criptogr acos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
66 4. Complejidad Algortmica
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 5
Aritm etica Modular
5.1. Concepto de Aritm etica Modular
La aritm etica modular es una parte de las Matem aticas extremadamente util en
Criptografa, ya que permite realizar c alculos complejos y plantear problemas inte-
resantes, manteniendo siempre una representaci on num erica compacta y denida,
puesto que s olo maneja un conjunto nito de n umeros enteros. Mucha gente la co-
noce como la aritm etica del reloj, debido a su parecido con la forma que tenemos de
contar el tiempo. Por ejemplo, si son las 19:13:59 y pasa un segundo, decimos que son
las 19:14:00, y no las 19:13:60. Como vemos, los segundos al igual que los minutos
, se expresan empleando sesenta valores cclicamente, de forma que tras el 59 viene
de nuevo el 0. Desde el punto de vista matem atico diramos que los segundos se
expresan m odulo 60.
Empleemos ahora un punto de vista m as formal y riguroso: Dados tres n umeros
a, b, n N, decimos que a es congruente con b m odulo n, y se escribe:
a b (mod n)
si se cumple:
a = b +kn, para alg un k Z
Por ejemplo, 37 5 (mod 8), ya que 37 = 5 + 4 8. De hecho, los n umeros 5,
-3, 13, -11, 21, -19, 29. . . son todos equivalentes en la aritm etica m odulo 8, es decir,
forman una clase de equivalencia. Como se puede apreciar, cualquier n umero entero
pertenecer a necesariamente a alguna de esas clases, y en general, tendremos n clases
de equivalencia m odulo n (n umeros congruentes con 0, n umeros congruentes con 1,
. . . , n umeros congruentes con n 1). Por razones de simplicidad, representaremos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
68 5. Aritm etica Modular
cada clase de equivalencia por un n umero comprendido entre 0 y n1. De esta forma,
en nuestro ejemplo (m odulo 8) tendremos el conjunto de clases de equivalencia 0,
1, 2, 3, 4, 5, 6, 7, al que denominaremos Z
8
. Podemos denir ahora las operaciones
suma y producto en este tipo de conjuntos:
a +b c (mod n) a +b = c +kn k Z
ab c (mod n) ab = c +kn k Z
Propiedades de la suma:
Asociativa: a, b, c Z
n
(a +b) +c a + (b +c) (mod n)
Conmutativa: a, b Z
n
a +b b +a (mod n)
Elemento Neutro: a Z
n
0 tal que a + 0 a (mod n)
Elemento Sim etrico (opuesto): a Z
n
b tal que a +b 0 (mod n)
Propiedades del producto:
Asociativa: a, b, c Z
n
(a b) c a (b c) (mod n)
Conmutativa: a, b Z
n
a b b a (mod n)
Elemento Neutro: a Z
n
1 tal que a 1 a (mod n)
Propiedades del producto con respecto de la suma:
Distributiva: a, b, c Z
n
(a +b) c (a c) + (b c) (mod n)
La operaci on suma en este conjunto cumple las propiedades asociativa y conmu-
tativa y posee elementos neutro y sim etrico, por lo que el conjunto tendr a estructura
de grupo conmutativo. A partir de ahora llamaremos grupo nito inducido por n a
dicho conjunto.
Con la operaci on producto se cumplen las propiedades asociativa y conmutativa,
y tiene elemento neutro, pero no necesariamente sim etrico recordemos que al ele-
mento sim etrico para el producto se le suele denominar inverso. La estructura del
conjunto con las operaciones suma y producto es, pues, de anillo conmutativo. M as
adelante veremos bajo qu e condiciones existe el elemento sim etrico para el producto.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.1. Concepto de Aritm etica Modular 69
5.1.1. Algoritmo de Euclides
Quiz a sea el algoritmo m as antiguo que se conoce, y a la vez es uno de los m as
utiles. Permite obtener de forma eciente el m aximo com un divisor de dos n umeros.
Sean a y b dos n umeros enteros de los que queremos calcular su m aximo com un
divisor m. El Algoritmo de Euclides explota la siguiente propiedad:
m[a m[b = m[(a kb) con k Z = m[(a mod b)
a[b quiere decir que a divide a b, o en otras palabras, que b es m ultiplo de a, mientras
que (a mod b) representa el resto de dividir a entre b. En esencia estamos diciendo,
que, puesto que m divide tanto a a como a b, debe dividir a su diferencia. Entonces si
restamos k veces b de a, llegar a un momento en el que obtengamos el resto de dividir
a por b, o sea a mod b.
Si llamamos c a (a mod b), podemos aplicar de nuevo la propiedad anterior y te-
nemos:
m[(b mod c)
Sabemos, pues, que m tiene que dividir a todos los restos que vayamos obtenien-
do. Es evidente que el ultimo de ellos ser a cero, puesto que los restos siempre son
inferiores al divisor. El pen ultimo valor obtenido es el mayor n umero que divide
tanto a a como a b, o sea, el m aximo com un divisor de ambos. El algoritmo queda
entonces como sigue:
int euclides(int a, int b)
{ int i;
int g[];
g[0]=a;
g[1]=b;
i=1;
while (g[i]!=0)
{ g[i+1]=g[i-1]%g[i];
i++;
}
return(g[i-1]);
}
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
70 5. Aritm etica Modular
El invariante condici on que se mantiene en cada iteraci on del Algoritmo de
Euclides es el siguiente:
g
i+1
= g
i1
(mod g
i
)
y su orden de complejidad ser a de O((log
2
(n))
2
) operaciones a nivel de bit, siendo n
una cota superior de a y b.
5.1.2. Complejidad de las Operaciones Aritm eticas en Z
n
La complejidad algortmica de las operaciones aritm eticas modulares es la misma
que la de las no modulares:
Suma modular ((a +b) mod n): O(log
2
(a) + log
2
(b)) = O(log
2
(n))
Resta modular ((a b) mod n): O(log
2
(a) + log
2
(b)) = O(log
2
(n))
Multiplicaci on modular ((a b) mod n): O(log
2
(a) log
2
(b)) = O((log
2
(n))
2
)
5.2. C alculo de Inversas en Z
n
5.2.1. Existencia de la Inversa
Hemos comentado en la secci on 5.1 que los elementos de un grupo nito no tie-
nen por qu e tener inversa elemento sim etrico para el producto. En este apartado
veremos qu e condiciones han de cumplirse para que exista la inversa de un n umero
dentro de un grupo nito.
Denici on: Dos n umeros enteros a y b se denominan primos entre s (o coprimos), si
mcd(a, b) = 1.
Lema: Dados a,n N
mcd(a, n) = 1 = ai ,= aj (mod n) i ,= j 0 < i, j < n (5.1)
Demostraci on: Supongamos que mcd(a, n) = 1, y que existen i ,= j tales que ai
aj(mod n). Se cumple, pues:
n[(ai aj) = n[a(i j)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.2. C alculo de Inversas en Z
n
71
puesto que a y n son primos entre s, n no puede dividir a a, luego
n[(i j) = i j (mod n)
con lo que hemos alcanzado una contradicci on.
Ahora podemos hacer la siguiente reexi on: Si ai ,= aj para cualesquiera i ,= j,
multiplicar a por todos los elementos del grupo nito m odulo n nos producir a una
permutaci on de los elementos del grupo (exceptuando el cero), por lo que forzosa-
mente ha de existir un valor tal que al multiplicarlo por a nos d e 1. Eso nos conduce
al siguiente teorema:
Denici on: Un n umero entero p 2 se dice primo si sus unicos divisores positivos
son 1 y p. En caso contrario se denomina compuesto.
Teorema: Si mcd(a, n) = 1, a tiene inversa m odulo n.
Corolario: Si n es primo, el grupo nito que genera tiene estructura de cuerpo
todos sus elementos tienen inversa para el producto excepto el cero. Estos cuerpos
nitos tienen una gran importancia en Matem aticas, se denominan Cuerpos de Galois,
y se notan GF(n).
5.2.2. Funci on de Euler
Llamaremos conjunto reducido de residuos m odulo n y lo notaremos Z
n
al con-
junto de n umeros primos relativos con n. En otras palabras, Z
n
es el conjunto de todos
los n umeros que tienen inversa m odulo n. Por ejemplo, si n fuera 12, su conjunto re-
ducido de residuos sera:
1, 5, 7, 11
Existe una expresi on que permite calcular el n umero de elementos el cardinal
del conjunto reducido de residuos m odulo n:
[Z
n
[ =
n
i=1
p
e
i
1
i
(p
i
1) (5.2)
siendo p
i
los factores primos de n y e
i
su multiplicidad. Por ejemplo, si n fuera el
producto de dos n umeros primos p y q, [Z
n
[ = (p 1)(q 1).
Se dene la funci on de Euler sobre n, y se escribe (n), como el cardinal de Z
n
, es
decir:
(n) = [Z
n
[
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
72 5. Aritm etica Modular
Teorema: Si mcd(a, n) = 1:
a
(n)
1 (mod n) (5.3)
Demostraci on: Puesto que a y n son primos entre s, a multiplicado por cualquier
elemento del conjunto reducido de residuos m odulo n r
1
, . . . , r
(n)
ha de ser tam-
bi en primo con n, por lo tanto el conjunto ar
1
, . . . , ar
(n)
no es m as que una permu-
taci on del conjunto anterior, lo cual nos lleva a:
(n)
i=1
r
i
=
(n)
i=1
ar
i
= a
(n)
(n)
i=1
r
i
= a
(n)
1 (mod n)
(Peque no) Teorema de Fermat: Si p es primo, entonces
a
p1
1 (mod p) (5.4)
Como consecuencia de este ultimo teorema podemos deducir que si p es un n ume-
ro primo y
r s (mod p 1),
entonces
a
r
a
s
(mod p),
sea cual sea el valor de a. Por lo tanto, cuando trabajamos m odulo p, siendo p primo,
los exponentes pueden ser reducidos m odulo p 1.
Denici on: Sea a Z
n
. Se dene el orden de a, denotado ord(a), como el menor
entero positivo t tal que a
t
1 (mod n).
Existe una interesante propiedad de ord(a). Si a
s
1 (mod n), entonces ord(a)
divide a s. En particular, tenemos que ord(a) siempre divide a (n).
Despu es de todo lo expuesto, queda claro que uno de los posibles m etodos para
calcular inversas m odulo n, es precisamente la Funci on de Euler, puesto que:
a
(n)
= aa
(n)1
1 (mod n) = a
1
a
(n)1
(mod n)
5.2.3. Algoritmo Extendido de Euclides
El Algoritmo Extendido de Euclides tambi en puede ser empleado para calcular
inversas. Es una ampliaci on del de Euclides, que posee el mismo orden de comple-
jidad, y que se obtiene simplemente al tener en cuenta los cocientes adem as de los
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.2. C alculo de Inversas en Z
n
73
restos en cada paso. El invariante que mantiene es el siguiente, suponiendo que se le
pasen como par ametros n y a:
g
i
= nu
i
+av
i
El ultimo valor de g
i
ser a el m aximo com un divisor entre a y n, que valdr a 1 si
estos n umeros son primos relativos, por lo que tendremos:
1 = nu
i
+av
i
o sea,
av
i
1 (mod n)
luego (v
i
mod n) ser a la inversa de a m odulo n.
Nuestra segunda alternativa para calcular inversas, cuando desconozcamos (n),
ser a pues el Algoritmo Extendido de Euclides. En la implementaci on que damos, co-
mo puede apreciarse, calculamos tanto los u
i
como los v
i
, aunque luego en la pr actica
s olo empleemos estos ultimos. Obs ervese tambi en la segunda cl ausula while, que
tiene como unico n que el valor devuelto est e comprendido entre 0 y n 1.
int inversa(int n, int a)
{ int c,i;
int g[],u[],v[];
g[0]=n; g[1]=a;
u[0]=1; u[1]=0;
v[0]=0; v[1]=1;
i=1;
while (g[i]!=0)
{ c=g[i-1]/g[i];
g[i+1]=g[i-1]%g[i];
u[i+1]=u[i-1]-c*u[i];
v[i+1]=v[i-1]-c*v[i];
i++;
}
while (v[i-1]<0) v[i-1]=v[i-1]+n;
return(v[i-1]%n);
}
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
74 5. Aritm etica Modular
5.3. Teorema Chino del Resto
El Teorema Chino del Resto es una potente herramienta matem atica, que posee
interesantes aplicaciones criptogr acas.
Teorema: Sea p
1
, . . . p
r
una serie de n umeros primos entre s, y n = p
1
p
2
. . . p
r
,
entonces el sistema de ecuaciones en congruencias
x x
i
(mod p
i
) i = 1, . . . , r (5.5)
tiene una unica soluci on com un en [0, n 1], que viene dada por la expresi on:
x =
r
i=1
n
p
i
_
(n/p
i
)
1
(mod p
i
)
x
i
(mod n) (5.6)
Demostraci on: Para cada i, mcd
_
p
i
,
n
p
i
_
= 1. Por lo tanto, cada
n
p
i
debe tener una
inversa y
i
tal que
_
n
p
i
_
y
i
1 (mod p
i
)
Tambi en se cumple
_
n
p
i
_
y
i
0 (mod p
j
) i ,= j
ya que
n
p
i
es m ultiplo de cada p
j
.
Sea x =
r
i=1
n
p
i
y
i
x
i
(mod n). Entonces x es una soluci on a (5.5), ya que
x =
k=i
n
p
k
y
k
x
k
+
n
p
i
y
i
x
i
= 0 + 1 x
i
x
i
(mod p
i
).
Como puede apreciarse, esta demostraci on nos proporciona adem as una soluci on
al sistema de ecuaciones (5.5), lo cual puede resultarnos de gran utilidad para ciertas
aplicaciones, como por ejemplo, el algoritmo RSA (ver secci on 12.3).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.4. Exponenciaci on. Logaritmos Discretos 75
5.4. Exponenciaci on. Logaritmos Discretos
Muchos de los algoritmos de llave p ublica emplean exponenciaciones dentro de
grupos nitos para codicar los mensajes. Tanto las bases como los exponentes en
esos casos son n umeros astron omicos, incluso de miles de bits de longitud. Efectuar
las exponenciaciones mediante multiplicaciones reiterativas de la base sera inviable.
En esta secci on veremos mecanismos ecientes para llevar a cabo estas operaciones.
Tambi en comentaremos brevemente el problema inverso, el c alculo de los logarit-
mos discretos, puesto que en su dicultad intrnseca se apoyan muchos algoritmos
criptogr acos.
5.4.1. Algoritmo R apido de Exponenciaci on
Supongamos que tenemos dos n umeros naturales a y b, y queremos calcular a
b
. El
mecanismo m as sencillo sera multiplicar a por s mismo b veces. Sin embargo, para
valores muy grandes de b este algoritmo no nos sirve.
Tomemos la representaci on binaria de b:
b = 2
0
b
0
+ 2
1
b
1
+ 2
2
b
2
+. . . + 2
n
b
n
Expresemos la potencia que vamos a calcular en funci on de dicha representaci on:
a
b
= a
2
0
b
0
+2
1
b
1
+2
2
b
2
+...+2
n
b
n
=
n
i=0
a
2
i
b
i
recordemos que los b
i
s olo pueden valer 0 o 1, por tanto para calcular a
b
s olo hemos
de multiplicar los a
2
i
correspondientes a los dgitos binarios de b que valgan 1.
N otese, adem as, que a
2
i
= (a
2
i1
)
2
, por lo que, partiendo de a, podemos calcular
el siguiente valor de esta serie elevando al cuadrado el anterior. El Algoritmo R apido
de Exponenciaci on queda como sigue:
int exp_rapida(int a, int b)
{ int z,x,resul;
z=b;
x=a;
resul=1;
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
76 5. Aritm etica Modular
while (z>0)
{ if (z%2==1)
resul=resul*x;
x=x*x;
z=z/2;
}
return(resul);
}
La variable z se inicializa con el valor de b y se va dividiendo por 2 en cada paso
para tener siempre el i- esimo bit de b en el menos signicativo de z. En la variable x
se almacenan los valores de a
2
i
.
La extensi on a Z
n
de este algoritmo es muy simple, pues bastara sustituir las ope-
raciones producto por el producto m odulo n, mientras que su orden de complejidad,
siendo n una cota superior de a, b y a
b
es de O(log(n)) multiplicaciones sobre n umeros
de tama no log(n), por lo que nos queda O((log(n))
3
) operaciones a nivel de bit.
5.4.2. El Problema de los Logaritmos Discretos
El problema inverso de la exponenciaci on es el c alculo de logaritmos discretos.
Dados dos n umeros a, b y el m odulo n, se dene el logaritmo discreto de a en base b
m odulo n como:
c = log
b
(a) (mod n) a b
c
(mod n) (5.7)
En la actualidad no existen algoritmos ecientes que sean capaces de calcular en
tiempo razonable logaritmos de esta naturaleza, y muchos esquemas criptogr acos
basan su resistencia en esta circunstancia. El problema de los logaritmos discretos
est a ntimamente relacionado con el de la factorizaci on, de hecho est a demostrado
que si se puede calcular un logaritmo, entonces se puede factorizar f acilmente (el
recproco no se ha podido demostrar).
5.4.3. El Problema de Dife-Hellman
El problema de Dife-Hellman est a ntimamente relacionado con el problema
de los Logaritmos Discretos, y es la base de algunos sistemas criptogr acos de cla-
ve p ublica, como el de Dife-Hellman (apartado 12.4.1) y el de ElGamal (apartado
12.4.2).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.5. Importancia de los N umeros Primos 77
Antes de enunciarlo deniremos el t ermino generador. Dado el conjunto Z
p
, con p
primo, diremos que Z
p
es un generador de Z
p
, si se cumple
b Z
p
, i tal que
i
= b
El enunciado del problema es el siguiente: dado un n umero primo p, un n umero
que sea un generador de Z
p
, y los elementos
a
y
b
, encontrar
ab
(mod p).
N otese que nosotros conocemos
a
y
b
, pero no el valor de a ni el de b. De hecho,
si pudi esemos efectuar de forma eciente logaritmos discretos, sera suciente con
calcular a y luego (
b
)
a
=
ab
.
5.5. Importancia de los N umeros Primos
Para explotar la dicultad de c alculo de logaritmos discretos, muchos algoritmos
criptogr acos de clave p ublica se basan en operaciones de exponenciaci on en gru-
pos nitos. Dichos conjuntos deben cumplir la propiedad de que su m odulo n sea
un n umero muy grande con pocos factores usualmente dos. Estos algoritmos
funcionan si se conoce n y sus factores se mantienen en secreto. Habitualmente para
obtener n se calculan primero dos n umeros primos muy grandes, que posteriormen-
te se multiplican. Necesitaremos pues mecanismos para poder calcular esos n umeros
primos grandes.
La factorizaci on es el problema inverso a la multiplicaci on: dado n, se trata de
buscar un conjunto de n umeros tales que su producto valga n. Normalmente, y para
que la soluci on sea unica, se impone la condici on de que los factores de n que obten-
gamos sean todos primos elevados a alguna potencia. Al igual que para el problema
de los logaritmos discretos, no existen algoritmos ecientes para efectuar este tipo de
c alculos. Esto nos permite conar en que, en la pr actica, ser a imposible calcular los
factores de n , incluso disponiendo de elevados recursos computacionales.
En cuanto al c alculo de primos grandes, bastara con aplicar un algoritmo de fac-
torizaci on para saber si un n umero es primo o no. Este mecanismo es inviable, puesto
que acabamos de decir que no hay algoritmos ecientes de factorizaci on. Por suerte,
s que existen algoritmos probabilsticos que permiten decir con un grado de certeza
bastante elevado si un n umero cualquiera es primo o compuesto.
Cabra preguntarse, dado que para los algoritmos asim etricos de cifrado necesi-
taremos generar muchos n umeros primos, si realmente hay sucientes. De hecho se
puede pensar que, a fuerza de generar n umeros, llegar a un momento en el que re-
pitamos un primo generado con anterioridad. Podemos estar tranquilos, porque si a
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
78 5. Aritm etica Modular
cada atomo del universo le asign aramos mil millones de n umeros primos cada mi-
crosegundo desde su origen hasta hoy, haran falta un total de 10
109
n umeros primos
diferentes, mientras que el total estimado de n umeros primos de 512 bits o menos es
aproximadamente de 10
151
.
Tambi en podramos pensar en calcular indiscriminadamente n umeros primos pa-
ra luego emplearlos en alg un algoritmo de factorizaci on r apida. Por desgracia, si qui-
si eramos construir un disco duro que albergara diez mil GBytes por cada gramo de
masa y milmetro c ubico para almacenar todos los primos de 512 bits o menos, el
artilugio pesara m as de 10
135
Kg y ocupara casi 10
130
metros c ubicos, es decir, sera
miles de billones de veces m as grande y pesado que la Va L actea.
5.6. Algoritmos de Factorizaci on
Como bien es sabido, la descomposici on de un n umero entero n = p
e
1
1
p
e
2
2
. . . p
e
k
k
,
siendo p
i
n umeros primos y e
i
n umeros enteros mayores que 0, es unica. Cuando tra-
tamos de obtener la factorizaci on de n, normalmente nos conformamos con alcanzar
una descomposici on n = a b no trivial la descomposici on trivial es aquella en la
que a = n y b = 1. En tal caso, y puesto que tanto a como b son menores que n, po-
demos aplicar el mismo algoritmo de forma recursiva hasta que recuperemos todos
los factores primos. Esta es la raz on por la que los algoritmos de factorizaci on suelen
limitarse a dividir n en dos factores.
Tambi en conviene apuntar el hecho de que, como se ver a en la secci on 5.7, es
mucho m as eciente comprobar si un n umero es primo que tratar de factorizarlo,
por lo que normalmente se recomienda aplicar primero un test de primalidad para
asegurarse de que el n umero puede descomponerse realmente de alguna manera no
trivial.
Finalmente, queda la posibilidad de que n tenga un unico factor, elevado a una
potencia superior a 1. Afortunadamente, existen m etodos capaces de vericar si n es
una potencia perfecta x
k
, con k > 1, por lo que todos los algoritmos que comenta-
remos en esta secci on partir an de la suposici on de que n tiene al menos dos factores
primos diferentes.
El algoritmo m as sencillo e intuitivo para tratar de factorizar un n umero n es
probar a dividirlo por todos los n umeros enteros positivos comprendidos entre 2 y
c
r
x
r
, donde c
i
= a
i
+b
i
.
Producto: f(x) g(x) =
c
r
x
r
, donde c
i
=
a
j
b
k
, tal que j +k = i.
La suma de polinomios cumple las propiedades asociativa, conmutativa, elemen-
to neutro y elemento sim etrico, mientras que el producto cumple la asociativa, con-
mutativa y elemento neutro. El conjunto de polinomios denidos en un anillo R, que
notaremos R[x], con las operaciones suma y producto, tiene en consecuencia estruc-
tura de anillo conmutativo.
Dados f(x), g(x) R[x], existen dos polinomios unicos c(x) y r(x), tales que
f(x) = g(x)c(x) + r(x). Esta operaci on es la divisi on de polinomios, donde c(x) de-
sempe na el papel de cociente, y r(x) el de resto, y tiene propiedades an alogas a la de
enteros. Eso nos permite denir una aritm etica modular sobre polinomios, igual que
la que ya hemos denido para enteros.
Denici on: Se dice que g(x) es congruente con h(x) m odulo f(x), y se nota
g(x) h(x) (mod f(x))
si
g(x) = h(x) +k(x)f(x), para alg un k(x) R[x]
Denici on: Un polinomio f(x) en R[x] induce un conjunto de clases de equiva-
lencia de polinomios en R[x], donde cada clase posee al menos un representante de
grado menor que el de f(x). La suma y multiplicaci on pueden llevarse a cabo, por
tanto, m odulo f(x), y tienen estructura de anillo conmutativo.
Denici on: Decimos que un polinomio f(x) R[x] de grado mayor o igual a 1 es
irreducible si no puede ser puesto como el producto de otros dos polinomios de grado
positivo en R[x].
Aunque no lo demostraremos aqu, se puede deducir que si un polinomio es irre-
ducible, el conjunto de clases de equivalencia que genera tiene estructura de cuerpo.
N otese que en este caso, el papel que desempe naba un n umero primo es ahora ocu-
pado por los polinomios irreducibles.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
86 5. Aritm etica Modular
5.8.1. Polinomios en Z
n
Puesto que, como ya sabemos, Z
n
es un anillo conmutativo, podemos denir el
conjunto Z
n
[x] de polinomios con coecientes en Z
n
.
Vamos a centrarnos ahora en el conjunto Z
2
[x]. En este caso, todos los coecientes
de los polinomios pueden valer unicamente 0 o 1, por lo que un polinomio puede ser
representado mediante una secuencia de bits. Por ejemplo, f(x) = x
3
+ x + 1 podra
representarse mediante el n umero binario 1011, y g(x) = x
2
+ 1 vendra dado por el
n umero 101.
Podemos ver que f(x) + g(x) = x
3
+ x
2
+ x, que viene dado por el n umero 1110.
Puesto que las operaciones se realizan en Z
2
, esta suma podra haber sido realizada
mediante una simple operaci on or-exclusivo entre los n umeros binarios que repre-
sentan a f(x) y g(x). Como vemos, sera muy f acil implementar estas operaciones
mediante hardware, y esta es una de las principales ventajas de trabajar en Z
2
[x].
Si escogemos un polinomio irreducible en Z
2
, podemos generar un cuerpo nito,
o sea, un cuerpo de Galois. Dicho conjunto se representa como GF(2
n
), siendo n el
grado del polinomio irreducible que lo genera, y tiene gran importancia en Cripto-
grafa, ya que algunos algoritmos de cifrado sim etrico, como el est andar de cifrado
AES, se basan en operaciones en GF(2
n
) (ver secci on 10.5).
A modo de ejemplo, veamos c omo funciona la operaci on producto dentro de estos
conjuntos. Tomemos el polinomio f(x) = x
8
+ x
4
+ x
3
+ x + 1, que es irreducible en
Z
2
[x], y genera un cuerpo de Galois GF(2
8
). Vamos a multiplicar dos polinomios:
(x
5
+x) (x
4
+x
3
+x
2
+ 1) = x
9
+x
8
+x
7
+x
5
+x
5
+x
4
+x
3
+x =
= x
9
+x
8
+x
7
+x
4
+x
3
+x
N otese que x
5
+x
5
= 0, dado que los coecientes est an en Z
2
. Ahora hemos de tomar
el resto m odulo f(x). Para ello emplearemos el siguiente truco:
x
8
+x
4
+x
3
+x + 1 0 (mod f(x)) = x
8
x
4
+x
3
+x + 1 (mod f(x))
luego
x
9
+x
8
+x
7
+x
4
+x
3
+x = x(x
8
) +x
8
+x
7
+x
4
+x
3
+x =
= x(x
4
+x
3
+x + 1) + (x
4
+x
3
+x + 1) +x
7
+x
4
+x
3
+x =
= x
5
+x
4
+x
2
+x +x
4
+x
3
+x + 1 +x
7
+x
4
+x
3
+x =
= x
7
+x
5
+x
4
+x
4
+x
4
+x
3
+x
3
+x
2
+x +x +x + 1 =
= x
7
+x
5
+x
4
+x
2
+x + 1
La ventaja esencial que posee este tipo de conjuntos es que permite llevar a cabo
implementaciones muy sencillas y paralelizables de los algoritmos aritm eticos. En
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.9. Ejercicios Resueltos 87
realidad, aunque el orden de complejidad sea el mismo, se logra multiplicar la velo-
cidad por una constante y simplicar el dise no de los circuitos, por lo que se obtienen
sistemas con mayores prestaciones, y a la vez m as baratos.
5.9. Ejercicios Resueltos
1. Comprobar las propiedades de la suma en grupos nitos.
Soluci on: La suma en grupos nitos cumple las propiedades conmutativa y aso-
ciativa, adem as de la existencia de elementos neutro y sim etrico. Tendremos en
cuenta que:
a b (mod n) k Z tal que a = b +k n
Propiedad conmutativa: Puesto que a +b = b +a, tenemos que
a +b = b +a +k n si k = 0, luego
a +b b +a (mod n)
Propiedad asociativa: Puesto que a + (b +c) = (a +b) +c, tenemos que
a + (b +c) = (a +b) +c +k n si k = 0, luego
a + (b +c) (a +b) +c (mod n)
Elemento neutro: Trivialmente,
a + 0 = a +k n si k = 0, luego
a + 0 a (mod n)
por lo tanto, 0 es el elemento neutro para la suma.
Elemento sim etrico: Sea a Z
n
y b = n a, tenemos
a +b = a + (n a) = k n si k = 1, luego
a +b 0 (mod n)
por tanto, b es el inverso de a para la suma.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
88 5. Aritm etica Modular
2. Comprobar las propiedades del producto en grupos nitos.
Soluci on: El producto en grupos nitos cumple las propiedades conmutativa y
asociativa, adem as de la existencia de elemento neutro. Tendremos en cuenta,
al igual que en el ejercicio anterior, que:
a b (mod n) k Z tal que a = b +k n
Propiedad conmutativa: Puesto que a b = b a, tenemos que
a b = b a +k n si k = 0, luego
a b b a (mod n)
Propiedad asociativa: Puesto que a (b c) = (a b) c, tenemos que
a (b c) = (a b) c +k n si k = 0, luego
a (b c) (a b) c (mod n)
Elemento neutro: Trivialmente,
a 1 = a +k n si k = 0, luego
a 1 a (mod n)
por lo tanto, 1 es el elemento neutro para el producto.
3. Calcular el valor de la funci on de Euler para los siguientes n umeros: 64, 611,
2197, 5, 10000.
Soluci on: Para calcular el valor de la funci on emplearemos la expresi on (5.2):
64 = 2
6
(64) = 2
5
(2 1) = 32
611 = 13 47 (611) = (13 1) (47 1) = 552
2197 = 13
3
(2197) = 13
2
12 = 2028
5 es primo (5) = 5 1 = 4
10000 = 2
4
5
4
(10000) = 2
3
1 5
3
4 = 4000
4. Resolver el siguiente sistema de ecuaciones en congruencias:
x 12 (mod 17)
x 13 (mod 64)
x 8 (mod 27)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
5.9. Ejercicios Resueltos 89
Soluci on: Emplearemos la expresi on (5.6) para resolver el sistema:
x 12 (mod 17)
x 13 (mod 64)
x 8 (mod 27)
Puesto que n = 17 64 27 = 29376, tenemos
x = (29376/17)[1728
1
(mod 17)] 12+
+(29376/64)(459
1
(mod 64)) 13+
+(29376/27)(1088
1
(mod 27)) 8
Calculamos ahora las inversas:
1728 11 (mod 17), 11
1
(mod 17) = 14
459 11 (mod 64), 11
1
(mod 64) = 35
1088 8 (mod 27), 8
1
(mod 27) = 17
Sustituyendo los valores, nos queda
x = 1728 14 12 + 459 35 13 + 1088 17 8 = 647117 845 (mod 29376)
5. C omo calculara el valor de (2
10368
mod 187), empleando unicamente l apiz, pa-
pel y calculadora?
Soluci on: Para calcular el valor de (2
10368
mod 187), se puede emplear el algorit-
mo de exponenciaci on r apida (apartado 5.4.1):
r = 1 z = 10368 x = 2
r = 1 z = 5184 x = 4
r = 1 z = 2592 x = 16
r = 1 z = 1296 x = 256 (mod 187) = 69
r = 1 z = 648 x = 4761 (mod 187) = 86
r = 1 z = 324 x = 7396 (mod 187) = 103
r = 1 z = 162 x = 10609 (mod 187) = 137
r = 1 z = 81 x = 18769 (mod 187) = 69
r = 69 z = 40 x = 4761 (mod 187) = 86
r = 69 z = 20 x = 7396 (mod 187) = 103
r = 69 z = 10 x = 10609 (mod 187) = 137
r = 69 z = 5 x = 18769 (mod 187) = 69
r = 4761 (mod 187) = 86 z = 2 x = 4761 (mod 187) = 86
r = 86 z = 1 x = 7396 (mod 187) = 103
r = 8858 (mod 187) = 69
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
90 5. Aritm etica Modular
6. Calcule la suma y el producto de los polinomios correspondientes a los n umeros
binarios 100101 y 1011, dentro del GF(2
6
) denido por el polinomio irreducible
f(x) = x
6
+x + 1.
Soluci on: Para calcular la suma, es suciente con aplicar un or-exclusivo entre
ambos, por lo tanto:
100101 1011 = 101110 = x
5
+x
3
+x
2
+x
En cuanto al producto, tenemos lo siguiente:
(x
5
+x
2
+ 1)(x
3
+x + 1) = x
8
+x
6
+x
5
+x
5
+x
3
+x
2
+x
3
+x + 1 =
= x
8
+x
6
+x
2
+x + 1
Ahora nos queda calcular el m odulo x
6
+x+1. Para ello aplicaremos la propie-
dad
x
6
+x + 1 0 = x
6
x + 1
que nos deja
x
8
+x
6
+x
2
+x + 1 = x
2
x
6
+x
6
+x
2
+x + 1 =
= x
2
(x + 1) + (x + 1) +x
2
+x + 1 = x
3
+x
2
+x + 1 +x
2
+x + 1 =
= x
3
5.10. Ejercicios Propuestos
1. Calcule el valor de la funci on de Euler para los n umeros: 1024, 748, 5000.
2. Resuelva el siguiente sistema de ecuaciones en congruencias:
x 1 (mod 13)
x 2 (mod 24)
x 20 (mod 125)
3. Calcule el valor de 3
50000
(mod 211).
4. Calcule la suma y el producto de los polinomios correspondientes a los n umeros
binarios 100011 y 10011, dentro del GF(2
6
) denido por el polinomio irreducible
f(x) = x
6
+x + 1.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 6
Curvas Elpticas en Criptografa
La Criptografa de Curva Elptica es una de las disciplinas m as prometedoras en
el campo de los cifrados asim etricos. Las curvas elpticas constituyen un formalismo
matem atico conocido y estudiado desde hace m as de 150 a nos, y presentan una serie
de propiedades que da lugar a problemas difciles (ver secci on 5.4) an alogos a los
que presentaba la aritm etica modular, lo cual las hace v alidas para aplicar algunos
de los algoritmos asim etricos m as conocidos (ver captulo 12). Si bien su estructura
algebraica es algo compleja, su implementaci on suele resultar tanto o m as eciente
que la aritm etica modular, y adem as con claves mucho m as cortas se puede alcanzar
el mismo nivel de seguridad que con otras t ecnicas.
Las primeras propuestas de uso de las curvas elpticas en Criptografa fueron he-
chas por Neal Koblitz y Victor Miller en 1985. Precisamente el principal argumen-
to que esgrimen los detractores de estas t ecnicas es que, si bien las curvas elpticas
han sido objeto de estudio y an alisis durante m as de un siglo, las propiedades que
pueden estar directamente relacionadas con su calidad como base para un sistema
criptogr aco, apenas llevan quince a nos siendo consideradas.
Para introducir el concepto de Curva Elptica, vamos a establecer un paralelis-
mo con otro formalismo mucho m as cercano e intuitivo: los n umeros enteros. Como
ya vimos en el captulo 5, los n umeros enteros constituyen un conjunto sobre el que
podemos denir una serie de operaciones, con unas propiedades concretas. Estos
conjuntos y operaciones presentan una estructura que hace surgir problemas compu-
tacionalmente difciles de tratar. Vamos a hacer exactamente lo mismo con las curvas
elpticas.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
92 6. Curvas Elpticas en Criptografa
Figura 6.1: Gr acas de curvas elpticas. a) y
2
= x
3
5x + 1; b) y
2
= x
3
3x + 4.
6.1. Curvas Elpticas en R
Denici on: Una curva elptica sobre R es el conjunto de puntos del plano (x, y) que
cumplen la siguiente ecuaci on:
y
2
= x
3
+ax +b (6.1)
Los coecientes a y b caracterizan unvocamente cada curva. En la gura 6.1 puede
verse la representaci on gr aca de dos de ellas n otese que la curva se extender a ha-
cia la derecha hasta el innito.
Si x
3
+ax +b no tiene races m ultiples, lo cual es equivalente a que 4a
3
+27b
2
,= 0,
entonces la curva correspondiente, en conjunci on con un punto especial O, llamado
punto en el innito, m as la operaci on suma que deniremos m as adelante, es lo que
vamos a denominar grupo de curva elptica E(R). Hay que recalcar que O es un punto
imaginario situado por encima del eje de abscisas a una distancia innita, y que por
lo tanto no tiene un valor concreto.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
6.1. Curvas Elpticas en R 93
6.1.1. Suma en E(R)
Ya tenemos un conjunto sobre el que trabajar. Nuestro siguiente paso ser a denir
una ley de composici on interna que, dados dos elementos cualesquiera, nos devuel-
va otro que tambi en pertenezca al conjunto. Denominaremos suma a esta operaci on
y la representaremos mediante el signo +, de forma totalmente an aloga a lo que
hacamos con Z.
Sean los puntos r = (r
x
, r
y
), s = (s
x
, s
y
), p = (p
x
, p
y
), t = (t
x
, t
y
) E(R), la
operaci on suma se dene de la siguiente forma:
r+O = O+r = r, sea cual sea el valor de r. Esto quiere decir que O desempe na
el papel de elemento neutro para la suma.
Si r
x
= s
x
y r
y
= s
y
, decimos que r es el opuesto de s, escribimos r = s, y
adem as r +s = s +r = O por denici on.
Si r ,= s y r ,= s, entonces para sumarlos se traza la recta que une r con s. Dicha
recta cortar a la curva en un punto. La suma t de r y s ser a el opuesto de dicho
punto (ver gura 6.2a).
Para sumar un punto p consigo mismo, se emplea la tangente a la curva en p. Si
p
y
,= 0, dicha tangente cortar a a la curva en un unico punto. La suma t = p +p
ser a el opuesto de dicho punto (ver gura 6.2b).
Para sumar un punto p consigo mismo, cuando p
y
= 0, la tangente a la curva
ser a perpendicular al eje de abscisas, por lo que podemos considerar que corta
a la curva en el innito. Por lo tanto, p +p = O si p
y
= 0.
Por razones de simplicidad en la notaci on diremos que sumar un punto p consigo
mismo k veces, es como multiplicar dicho punto por el escalar k, y lo notaremos kp
N otese que, cuando se suma r y r, la recta que los une resulta perpendicular al
eje de abcisas, por lo que cortar a a la curva en el innito, dando como resultado O.
Compru ebese, adem as, que cuando r
y
= 0, se cumple:
2r = r +r = O
3r = 2r +r = O +r = r
4r = 3r +r = r +r = O
. . .
Algebraicamente, la suma de curvas elpticas se dene de la siguiente forma: Sea
r = (r
x
, r
y
) y s = (s
x
, s
y
), donde r ,= s, entonces r +s = t donde
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
94 6. Curvas Elpticas en Criptografa
Figura 6.2: Interpretaci on gr aca de la suma de dos puntos en una curva elptica.
d =
r
y
s
y
r
x
s
x
; t
x
= d
2
r
x
s
x
; t
y
= r
y
+d(r
x
t
x
) (6.2)
y cuando queremos sumar un punto consigo mismo, tenemos que 2p = t donde
d =
3p
2
x
+a
2p
y
; t
x
= d
2
2p
x
; t
y
= p
y
+d(p
x
t
x
) (6.3)
Si nos jamos un poco, podremos observar que d representa a la pendiente de la
recta que une r y s, o bien a la tangente en el punto p.
Obs ervese que cuando introdujimos los grupos nitos en Z, seleccion abamos un
subconjunto de elementos de Z y denamos la operaci on suma, junto con sus pro-
piedades, para este subconjunto. Con las curvas elpticas hemos hecho exactamente
lo mismo, s olo que el subconjunto es extrado del plano R
2
y la operaci on suma es
ligeramente m as complicada.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
6.2. Curvas Elpticas en GF(n) 95
6.2. Curvas Elpticas en GF(n)
Recordemos que un cuerpo de Galois GF(n) es el grupo nito generado por n,
siendo n un n umero primo. En dicho conjunto todos los elementos menos el cero
tienen inversa, por lo que podemos sumar, restar, multiplicar y dividir exactamente
de la misma forma que en R. Nada nos impide entonces calcular qu e puntos cumplen
la ecuaci on
y
2
= x
3
+ax +b (mod n)
deniendo de esta forma el conjunto E(GF(n)).
A modo de ejemplo, vamos a estudiar la curva elptica con a = 7 y b = 4 en
GF(17). En primer lugar, habremos de comprobar, igual que antes, que 4a
3
+27b
2
,= 0:
4 7
3
+ 27 4
2
= 2 (mod 17)
Seguidamente, vamos a ver qu e puntos pertenecen a la curva elptica. Si hacemos los
c alculos pertinentes, tenemos los siguientes:
(0,2) (0,15) (2,3) (2,14) (3,1) (3,16)
(11,1) (11,16) (15,4) (15,13) (16,8) (16,9)
N otese que dado un punto de la curva (x, y), el valor (x, y) (mod n) tambi en
pertenece a esta. Calculemos ahora la suma de dos puntos cualesquiera, por ejemplo
(2, 3) y (3, 16), empleando la expresiones de (6.2):
d = (3 16)/(2 3) = 13 (mod 17)
x = 13
2
2 3 = 11 (mod 17)
y = 3 + 13 (2 3) = 1 (mod 17)
luego (2, 3) + (3, 16) = (11, 1). Como cabra esperar, nos da como resultado un punto
que tambi en pertenece a la curva.
6.3. Curvas Elpticas en GF(2
n
)
Vamos a dar un paso m as. Como ya se vio en la secci on 5.8.1, los elementos de
GF(p
n
) y las operaciones entre ellos presentan unas propiedades an alogas a las
de los elementos de GF(n), con la caracterstica a nadida de que, cuando p = 2, la
implementaci on de los algoritmos correspondientes es m as sencilla y r apida. Nada
nos impide, pues, denir el conjunto E(GF(2
n
)).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
96 6. Curvas Elpticas en Criptografa
En GF(2
n
), debido a su especial estructura, la ecuaci on de curva elptica que
ser a util para nuestros prop ositos es ligeramente diferente a la dada en (6.1):
y
2
+xy = x
3
+ax
2
+b (6.4)
y la unica condici on necesaria para que genere un grupo es que b ,= 0.
Dentro de GF(2
n
), los puntos de nuestra curva van a ser pares de polinomios de
grado n 1 con coecientes binarios, por lo que podr an ser representados mediante
cadenas de bits.
6.3.1. Suma en E(GF(2
n
))
Sean los puntos r = (r
x
, r
y
), s = (s
x
, s
y
), p = (p
x
, p
y
), t = (t
x
, t
y
) E(GF(2
n
)), la
operaci on suma se dene de la siguiente forma:
r +O = O +r = r, sea cual sea el valor de r.
Si r
x
= s
x
y r
y
= s
x
+ s
y
, decimos que r es el opuesto de s, escribimos r = s, y
adem as r +s = s +r = O por denici on.
Si r ,= s y r ,= s, la suma t = r +s se calcula de la siguiente forma:
d =
s
y
r
y
s
x
r
x
; t
x
= d
2
+d +r
x
+s
x
+a; t
y
= d(r
x
+t
x
) +t
x
+r
y
Para calcular la suma t = 2p, con p
x
,= 0, se emplea la siguiente f ormula:
d = p
x
+
p
y
p
x
; t
x
= d
2
+d +a; t
y
= p
2
x
+ (d + 1)t
x
Finalmente, si p
x
= 0, 2p = O.
6.4. El Problema de los Logaritmos Discretos en Curvas
Elpticas
Tomemos un punto p cualquiera de una curva elptica. Denominaremos p) al
conjunto O, p, 2p, 3p,. . . . En E(GF(n)) y E(GF(2
m
)) los conjuntos de esta natu-
raleza deber an necesariamente ser nitos, ya que el n umero de puntos de la curva
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
6.5. Ejercicios Resueltos 97
es nito. Por lo tanto, si disponemos de un punto q p), debe existir un n umero
entero k tal que kp = q.
El Problema de los Logaritmos Discretos en Curvas Elpticas consiste precisamente en
hallar el n umero k a partir de p y q. Hasta ahora no se ha encontrado ning un algorit-
mo eciente (subexponencial) para calcular el valor de k. Al igual que los descritos
en la secci on 5.4, este problema puede ser empleado con exito para el desarrollo de
algoritmos criptogr acos de llave p ublica.
6.5. Ejercicios Resueltos
1. Se denomina raz de un polinomio p(x) a los valores de x tales que p(x) = 0. Las
races r
i
de un polinomio tienen la propiedad de que el polinomio p
i
(x) = xr
i
divide a p(x). Una raz es m ultiple, y su multiplicidad es m, si el polinomio
(p
i
(x))
m
divide a p(x). Por lo tanto, si el polinomio e(x) = x
3
+ax+b tiene races
m ultiples, debe poder escribirse de la forma
x
3
+ax +b = (x q)
2
(x r)
Demuestre, a partir de la expresi on anterior, que 4a
3
+ 27b
2
= 0 es condici on
suciente para que e(x) tenga races m ultiples.
Soluci on: Partiendo de la expresi on
x
3
+ax +b = (x q)
2
(x r)
desarrollaremos el segundo t ermino:
(x q)
2
(x r) = (x
2
2qx +q
2
)(x r) = x
3
2qx
2
rx
2
+q
2
x + 2qrx q
2
r
Igualando los coecientes del mismo grado tenemos las siguientes relaciones:
0 = 2q r
a = q
2
+ 2qr
b = q
2
r
Despejando r en la primera igualdad y sustituyendo su valor en las dos restan-
tes se obtiene
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
98 6. Curvas Elpticas en Criptografa
a = 3q
2
b = 2q
3
Elevando al cuadrado la primera expresi on y al cubo la segunda, podemos des-
pejar q
6
en ambas e igualar:
q
6
=
a
3
27
=
b
2
4
Para que el sistema de ecuaciones tenga soluci on, la igualdad anterior debe
cumplirse; si la desarrollamos, nalmente nos queda
a
3
27
=
b
2
4
= 4a
3
= 27b
2
= 4a
3
+ 27b
2
= 0
2. En el ejemplo de la secci on 6.2, calcule el conjunto p) con p = (11, 16).
Soluci on: Emplearemos la expresi on (6.3) para calcular 2p y (6.2) para el resto:
2p = p +p:
d = (3 11
2
+ 7)/(2 16) = 2
t
x
= 4 22 = 16
t
y
= 16 + 2 (11 16) = 8
Por lo tanto,
2p = (16, 8)
3p = 2p +p:
d = (16 8)/(11 16) = 12
t
x
= 8 11 16 = 15
t
y
= 16 + 12 (11 15) = 4
Por lo tanto,
3p = (15, 4)
. . .
Aplicando los c alculos de forma sucesiva, tenemos que
p) = O, (11, 16), (16, 8), (15, 4), (0, 2), (2, 14), (3, 16),
(3, 1), (2, 3), (0, 15), (15, 13), (16, 9), (11, 1)
Como se puede observar, en este caso p) contiene todos los puntos de la curva
elptica en cuesti on.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
6.6. Ejercicios Propuestos 99
6.6. Ejercicios Propuestos
1. Sea el grupo GF(2
3
) generado por el polinomio x
3
+ x + 1. Calcule los puntos
que pertenecen a la curva elptica con par ametros a = 100 y b = 010.
2. Compruebe geom etricamente las propiedades asociativa y conmutativa de la
suma en E(R).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
100 6. Curvas Elpticas en Criptografa
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 7
Aritm etica Entera de M ultiple
Precisi on
En este captulo daremos una serie de nociones b asicas y algoritmos sobre aritm e-
tica entera de m ultiple precisi on, disciplina que ha cobrado un gran inter es debido
al uso extensivo que hacen de ella sobre todo los algoritmos asim etricos de cifrado y
autenticaci on.
7.1. Representaci on de enteros largos
Llamaremos n umero largo a aquel que posee gran cantidad de dgitos signicati-
vos, normalmente m as de los que los tipos de dato convencionales de los lenguajes
de programaci on cl asicos pueden soportar. En este apartado vamos a indicar c omo
representarlos y operar con ellos empleando tipos de dato de menor precisi on.
Todos conocemos la representaci on tradicional en base 10 de los n umeros reales,
en la que cada cifra contiene unicamente valores de 0 a 9. Esta representaci on no es
m as que un caso particular (B = 10) de la siguiente expresi on general:
n = ()
a
i
B
i
donde los t erminos con ndice negativo corresponden a la parte no entera (decimal)
del n umero real n. Sabemos que, dado el valor de B, dicha representaci on es unica, y
que signica que n en base B se escribe:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
102 7. Aritm etica Entera de M ultiple Precisi on
()a
n
a
n1
. . . a
0
.a
1
. . .
Donde cada a
i
est a comprendido entre 0 y B 1. Por ejemplo, en base 10, el n umero
3,1415926 correspondera a la expresi on:
3 10
0
+ 1 10
1
+ 4 10
2
+ 1 10
3
+ 5 10
4
+ 9 10
5
+ 2 10
6
+ 6 10
7
En cualquier caso, puesto que nuestro objetivo es representar unicamente n ume-
ros enteros positivos, prescindiremos del signo y de los t erminos con subndice nega-
tivo.
Cualquier n umero vendr a representado por una serie unica de coecientes a
i
(ci-
fras), de las que importa tanto su valor como su posici on dentro del n umero. Esta es-
tructura corresponde claramente a la de un vector (array). Para representar de forma
eciente enteros largos emplearemos una base que sea potencia de dos (normalmente
se escoge B = 2
16
o B = 2
32
para que cada cifra de nuestro n umero se pueda almace-
nar en un dato del tipo unsigned int sin desperdiciar ning un bit). Para almacenar
los resultados parciales de las operaciones aritm eticas emplearemos un tipo de dato
de doble precisi on (unsigned long int, correspondiente a B = 2
32
o B = 2
64
) de
forma que no se nos desborde al multiplicar dos cifras. Normalmente se escoge una
longitud que pueda manejar directamente la ALU (Unidad Aritm etico-L ogica) de la
computadora, para que las operaciones elementales entre cifras sean r apidas.
Por todo esto, para nosotros un n umero entero largo ser a un vector de unsigned
int. En cualquier caso, y a partir de ahora, nuestro objetivo ser a estudiar algoritmos
ecientes para efectuar operaciones aritm eticas sobre este tipo de n umeros, indepen-
dientemente de la base en la que se encuentren representados.
7.2. Operaciones aritm eticas sobre enteros largos
Vamos a describir en este apartado c omo realizar operaciones aritm eticas (suma,
resta, multiplicaci on y divisi on) de enteros largos.
7.2.1. Suma
La suma de a = (a
0
, a
1
. . . a
n1
) y b = (b
0
, b
1
. . . b
n1
) se puede denir como:
(a +b)
i
=
_
(a
i
+b
i
+c
i
) mod B para i = 0 . . . n 1
c
i
para i = n
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7.2. Operaciones aritm eticas sobre enteros largos 103
siendo
c
i
=
_
0 para i = 0
(a
i1
+b
i1
+c
i1
) div B para i = 1 . . . n
c
i
es el acarreo de la suma de los dgitos inmediatamente anteriores. Tenemos en cuen-
ta el coeciente n de la suma porque puede haber desbordamiento, en cuyo caso la
suma tendra n+1 dgitos y su cifra m as signicativa sera precisamente c
n
. Este no es
otro que el algoritmo cl asico que todos hemos empleado en la escuela cuando hemos
aprendido a sumar.
El algoritmo para la suma quedara, pues, como sigue:
suma (unsigned *a, unsigned *b, unsigned *s)
{ unsigned long sum;
unsigned acarreo;
n=max(num. de digitos de a, num. de digitos de b)
acarreo=0;
for (i=0;i<n;i++)
{ sum=acarreo+a[i]+b[i];
s[i]=sum%BASE;
acarreo=sum/BASE;
}
s[n]=acarreo;
}
El resultado se devuelve en s.
7.2.2. Resta
La resta es muy parecida a la suma, salvo que en este caso los acarreos se restan.
Suponiendo que a > b:
(a b)
i
= (a
i
b
i
r
i
) mod B para i = 0 . . . n 1
siendo
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
104 7. Aritm etica Entera de M ultiple Precisi on
r
i
=
_
0 para i = 0
1
_
(a
i1
b
i1
r
i1
+B) div B
_
para i = 1 . . . n
r
i
representa el acarreo de la resta (borrow), que puede valer 0 o 1 seg un la resta parcial
salga positiva o negativa. N otese que, como a > b, el ultimo acarreo siempre ha de
valer 0.
resta (unsigned *a, unsigned *b, unsigned *d)
{ unsigned long dif;
unsigned acarreo;
n=max(num. de digitos de a, num. de digitos de b)
acarreo=0;
for (i=0;i<n;i++)
{ dif=a[i]-b[i]-acarreo+BASE;
d[i]=dif%BASE;
acarreo=1-dif/BASE;
}
}
El resultado se devuelve en d. La raz on por la que sumamos la base a dif es para
que la resta parcial salga siempre positiva y poder hacer el m odulo correctamente.
En ese caso, si el valor era positivo, al sumarle B y dividir por B de nuevo nos que-
da 1. Si fuera negativo, nos saldra 0. Por eso asignamos al nuevo acarreo el valor
1-dif/BASE.
Nos queda comprobar cu al de los dos n umeros es mayor para poder emplear-
lo como minuendo. Esta comprobaci on se puede realizar f acilmente deniendo una
funci on que devuelva el n umero cuyo dgito m as signicativo tenga un n umero de
orden mayor. En caso de igualdad iramos comparando dgito a dgito, empezando
por los m as signicativos hasta que encontremos alguno mayor o lleguemos al ultimo
dgito, situaci on que unicamente ocurrir a si los dos n umeros son iguales.
7.2.3. Producto
Para obtener el algoritmo del producto emplearemos la expresi on general de un
n umero entero positivo en base B. Si desarrollamos el producto de dos n umeros cua-
lesquiera a y b de longitudes m y n respectivamente nos queda:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7.2. Operaciones aritm eticas sobre enteros largos 105
ab =
m1
i=0
a
i
B
i
b
A la vista de esto podemos descomponer el producto como mllamadas a una funci on
que multiplica un entero largo por a
i
B
i
(es decir, un entero largo con un unico dgito
signicativo) y despu es sumar todos los resultados parciales.
Para poder implementar esto primero deniremos una funci on (summult) que
multiplique b por a
i
B
i
y el resultado se lo sume al vector s, que no tiene necesaria-
mente que estar a cero:
summult(unsigned ai, int i, unsigned *b, int m, unsigned *s)
{ int k;
unsigned acarreo;
unsigned long prod,sum;
acarreo=0;
for (k=0; k<m; k++)
{ prod=ai*b[k]+s[i+k]+acarreo;
s[i+k]=prod%BASE;
acarreo=prod/BASE;
}
k=m+i;
while (acarreo!=0)
{ sum=s[k]+acarreo;
s[k]=sum%BASE;
acarreo=sum/BASE;
k++;
}
}
La segunda parte de la funci on se encarga de acumular los posibles acarreos en el
vector s. A partir de la funci on que acabamos de denir, queda entonces como sigue:
producto(unsigned *a,int m, unsigned *b, int n, unsigned *p)
{ int k;
for (k=0;k<=m+n;k++)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
106 7. Aritm etica Entera de M ultiple Precisi on
p[k]=0;
for (k=0;k<m;k++)
summult(a[k],k,b,n,p);
}
El resultado se devuelve en p.
Existe otra propiedad de la multiplicaci on de enteros que nos va a permitir efec-
tuar estas operaciones de manera m as eciente. Tomemos un n umero entero cual-
quiera a de k dgitos en base B. Dicho n umero puede ser representado mediante la
de la siguiente expresi on:
a = a
l
B
k
2
+a
r
Es decir, partimos a en dos mitades. Por razones de comodidad, llamaremos B
k
a
B
k
2
. Veamos ahora c omo queda el producto de dos n umeros cualesquiera a y b, en
funci on de sus respectivas mitades:
ab = a
l
b
l
B
2
k
+ (a
l
b
r
+a
r
b
l
)B
k
+a
r
b
r
Hasta ahora no hemos aportado nada nuevo. El truco para que este desarrollo nos
proporcione un aumento de eciencia consiste en hacer uso de la siguiente propie-
dad:
a
l
b
r
+a
r
b
l
= a
l
b
r
+a
r
b
l
+a
l
b
l
a
l
b
l
+a
r
b
r
a
r
b
r
= (a
l
+a
r
)(b
l
+b
r
) a
l
b
l
a
r
b
r
quedando nalmente, lo siguiente:
x = a
l
b
l
y = (a
l
+a
r
)(b
l
+b
r
) z = a
r
b
r
ab = xB
2
k
+ (y x z)B
k
+z
Hemos reducido los cuatro productos y tres sumas del principio a tres productos
y seis sumas. Como es l ogico, esta t ecnica debe emplearse dentro de una estrategia
divide y vencer as.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7.2. Operaciones aritm eticas sobre enteros largos 107
7.2.4. Divisi on
El algoritmo m as simple para dividir dos n umeros se consigue a partir de su re-
presentaci on binaria:
cociente_bin(unsigned *c, unsigned *d, unsigned *a, unsigned *b)
{ /*
Calcular a= c div d
b= c mod d
Bits_Significativos(x) => Devuelve el numero de bits
significativos de x, es decir, el
numero total de bits menos el numero
de ceros a la derecha.
pow(a,b) => Calcula el valor de a elevado a b.
Poner_bit_a_1(a,x) => Pone a 1 el i-esimo bit de a.
Poner_bit_a_0(a,x) => Pone a 0 el i-esimo bit de a.
*/
m=Bits_Significativos(c);
n=Bits_Significativos(d);
b=c;
a=0;
d1=d*pow(2,m-n); /* Desplazamos a la izquierda d */
for (i=m-n;i>=0;i--)
{ if (b>d1)
{ Poner_bit_a_1(a,i);
b=b-d1;
}
else Poner_bit_a_0(a,i);
d1=d1/2;
}
}
El funcionamiento del algoritmo es extremadamente simple: copiamos el dividen-
do en b y desplazamos a la izquierda el divisor hasta que su longitud coincida con
la del dividendo. Si el valor resultante es menor que b, se lo restamos y ponemos a
1 el bit correspondiente de a. Repitiendo esta operaci on sucesivamente se obtiene el
cociente en a y el resto en b. A modo de ejemplo, dividiremos 37 (100101) entre 7
(111):
1. b = 100101; a = ; d1 = 111000; b ,> d1 a = 0
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
108 7. Aritm etica Entera de M ultiple Precisi on
2. b = 100101; a = 0 ; d1 = 11100; b > d1 a = 01
3. b = 001001; a = 01 ; d1 = 1110; b ,> d1 a = 010
4. b = 001001; a = 010; d1 = 111; b > d1 a = 0101
5. b = 010
Este algoritmo resulta muy lento, ya que opera a nivel de bit, por lo que intenta-
remos encontrar otro m as r apido aunque con el mismo orden de eciencia. Nos
basaremos en el algoritmo tradicional de la divisi on. Suponiendo que queremos di-
vidir c por d, obteniendo su cociente (a) y resto (b), iremos calculando cada dgito del
cociente en base B de un solo golpe. Nuestro objetivo ser a estimar a la baja el valor
de cada uno de los dgitos a, e incrementarlo hasta alcanzar el valor correcto. Para
que la estimaci on se quede lo m as cerca posible del valor correcto efectuaremos una
normalizaci on de los n umeros, de forma que el dgito m as signicativo d tenga su bit
de mayor peso a 1. Esto se consigue multiplicando c y d por 2
k
, siendo k el n umero de
ceros a la izquierda del bit m as signicativo del divisor d. Posteriormente habremos
de tener en cuenta lo siguiente:
c = ad +b 2
k
c = a(2
k
d) + 2
k
b
luego el cociente ser a el mismo pero el resto habr a que dividirlo por el factor de
normalizaci on. Llamaremos c,
d a los valores de c y d normalizados.
Para hacer la estimaci on a la baja de los a
i
, dividiremos c
j
B + c
j1
por
d
m
+ 1 (c
j
es el dgito m as signicativo de c en el paso i, y
d
m
es el dgito m as signicativo de
b
2
k
El algoritmo podra quedar como sigue:
cociente(unsigned *c, unsigned *d, unsigned *a, unsigned *b)
{
/* Calcular a= c div d
b= c mod d
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7.2. Operaciones aritm eticas sobre enteros largos 109
Digito_Mas_Significativo(a) => Devuelve el valor del
digito de mayor peso de a.
Bits_Significativos(x) => Devuelve el numero de bits
significativos de x, es decir, el
numero total de bits menos el numero
de ceros a la derecha.
pow(a,b) => Calcula el valor de a elevado a b.
*/
despl=Num_bits_digito -
Bits_significativos(Digito_Mas_Significativo(d));
factor=pow(2,despl); /* Desplazamos d hasta que su digito
mas significativo tenga su bit de mayor
peso a 1 (di>=B/2)
*/
dd=d*factor;
cc=c*factor;
if (Digitos(cc)==Digitos(c))
Poner_Un_Cero_A_La_Izquierda(cc); /* Garantizar que cc
tiene exactamente un
digito mas que c
*/
t=Digito_Mas_Significativo(dd);
/* Ya hemos normalizado. El cociente que obtengamos seguira
siendo valido, pero el resto habra luego que dividirlo por
factor */
Poner_a_cero(a);
for (i=Digitos(c)-Digitos(dd); i>=0; i--)
{
/* Subestimar digito del cociente (ai) */
if (t==B-1) /* No podemos dividir por t+1 */
ai=cc[i+Digitos(dd)]; /* La estimacion es el primer
digito significativo de cc
*/
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
110 7. Aritm etica Entera de M ultiple Precisi on
else ai=(cc[i+Digitos(dd)]*B+cc[i+Digitos(dd)-1])/(t+1);
/* La estimacion es el cociente
entre los dos primeros digitos
de cc y t+1
*/
cc=cc-ai*dd*pow(B,i); /* Restar a cc */
while (cc[i+Digitos(dd)] || /* Si no se ha hecho cero el
digito mas sign. de cc...
*/
mayor(cc,dd*pow(B,i))) /* o si cc es mayor o igual
que dd*Bi
*/
{ ai++; /* Hemos de aumentar la estimacion */
cc=cc-dd*pow(B,i);
}
a[i]=ai;
}
b=cc/factor; /* Lo que nos queda en cc es el resto
dividimos por factor para deshacer
la normalizacion
*/
}
Aunque a primera vista pueda parecer un algoritmo muy complejo, vamos a ver
que no es tan complicado siguiendo su funcionamiento para un ejemplo concreto,
con B = 16, c = 3FBA2, y d = 47:
1. Normalizaci on: multiplicamos por 2 y nos queda c = 7F744,
d = 8E
2. a
2
= 7F div 9 = E; c = c a
2
dB
2
= 7F744 7C400 = 3344
Puesto que c <
dB
2
= 8E00, no hay que incrementar a
2
.
3. a
1
= 33 div 9 = 5; c = c a
1
dB = 3344 2C60 = 6E4
Puesto que c <
dB = 8E0, no hay que incrementar a
1
.
4. a
0
= 6E div 9 = C; c = c a
0
d = 6E4 6A8 = 3C
Puesto que c <
d = 8E, tampoco hay que incrementar a
0
5. a = E5C; b =
c
2
= 1E
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
7.3. Aritm etica modular con enteros largos 111
7.3. Aritm etica modular con enteros largos
Los algoritmos criptogr acos de llave p ublica m as extendidos se basan en opera-
ciones modulares sobre enteros muy largos. Empleando los algoritmos del apartado
7.2 son inmediatas las operaciones de suma, resta y multiplicaci on m odulo n. La di-
visi on habremos de tratarla de manera diferente.
Para sumar dos n umeros m odulo n basta con efectuar su suma entera y, si el
resultado es mayor que n, restar el m odulo.
Para restar basta con comprobar que el minuendo es mayor que el sustraendo,
en cuyo caso aplicamos directamente el algoritmo de la resta. Si, por el contra-
rio, el sustraendo fuera mayor que el minuendo, sumamos a este ultimo el valor
de n antes de hacer la resta.
El producto se lleva a cabo multiplicando los factores y tomando el resto de
dividir el resultado por el m odulo.
La divisi on habremos de implementarla multiplicando el dividendo por la in-
versa del divisor. Para calcular la inversa de un n umero m odulo n basta con
emplear el Algoritmo Extendido de Euclides, sustituyendo las operaciones ele-
mentales por llamadas a las operaciones con enteros largos descritas en la sec-
ci on 7.2.
7.4. Ejercicios Resueltos
1. Efect ue el trazado del algoritmo de la divisi on con B = 8 para calcular el si-
guiente cociente: c = 35240, d = 234.
Soluci on: A partir de los valores c = 35240 y d = 234, calculamos el factor de nor-
malizaci on, que ser a 2, por lo que dd = 470 y cc = 72500. N otese que todas las
operaciones est an efectuadas en base octal. Los pasos del algoritmo arrojar an
los siguientes valores:
t = 4
a
2
= 07 5 = 1 cc = 72500 1 47000 = 23500
a
1
= 25 5 = 3 cc = 23500 3 4700 = 5000
a
1
= a
1
+ 1 = 4 cc = 5000 4700 = 100
a
0
= 1 5 = 0 cc = 100 0 470 = 100
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
112 7. Aritm etica Entera de M ultiple Precisi on
Ahora deshacemos la normalizaci on, con lo que nos queda un cociente a = 140
y un resto b = 40.
7.5. Ejercicios Propuestos
1. La t ecnica divide y vencer as se basa en subdividir el problema y aplicar recur-
sivamente el algoritmo en cuesti on hasta llegar a un umbral mnimo, a partir
del cual la t ecnica no recursiva es m as eciente. Implemente el algoritmo de la
multiplicaci on mediante esta t ecnica y calcule el umbral correspondiente.
2. Elabore la especicaci on de una Estructura de Datos que permita almacenar
n umeros enteros largos y dena sus primitivas b asicas.
3. Proponga una especicaci on para la estructura del ejercicio anterior y discuta
su eciencia.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 8
Criptografa y N umeros Aleatorios
Los algoritmos de llave p ublica, debido a su mayor orden de complejidad, suelen
ser empleados en conjunci on con algoritmos de llave privada de la siguiente forma
(ver captulo 12): el mensaje primero se codica empleando un algoritmo sim etrico y
la llamada clave de sesi on, que ser a diferente cada vez. Es la clave de sesi on la que se
codica empleando criptografa asim etrica. La unica manera de que estas claves sean
seguras es que no exista ning un tipo de dependencia entre una clave y la siguiente,
esto es, que sean aleatorias. De aqu surge el inter es por los n umeros aleatorios en
Criptografa.
Seguro que el lector conoce generadores pseudoaleatorios y diferentes tests de
aleatoriedad como el denominado test
2
, que puede ser consultado en casi cual-
quier libro de Estadstica. Los generadores tradicionales no nos permiten calcular
secuencias realmente aleatorias, puesto que conociendo un n umero obtenido con el
generador podemos determinar cualquiera de los posteriores recordemos que cada
elemento de la secuencia se emplea como semilla para el siguiente. Si bien las se-
ries que producen estos generadores superan los test estadsticos de aleatoriedad, son
totalmente previsibles, y esa condici on es inadmisible para aplicaciones criptogr a-
cas. Un famoso ejemplo de este problema ocurri o en una de las primeras versiones
de Netscape, que resultaba insegura debido al uso de un generador pseudoaleatorio
demasiado previsible.
En este captulo vamos a caracterizar diferentes tipos de secuencias aleatorias,
as como su inter es en Criptografa. Tambi en veremos c omo implementar un buen
generador aleatorio util desde el punto de vista criptogr aco.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
114 8. Criptografa y N umeros Aleatorios
8.1. Tipos de Secuencias Aleatorias
8.1.1. Secuencias pseudoaleatorias
En realidad es casi del todo imposible generar secuencias aut enticamente aleato-
rias en una computadora, puesto que estas m aquinas son al menos en teoracom-
pletamente deterministas. Todos los generadores pseudoaleatorios producen secuen-
cias nitas y peri odicas de n umeros empleando operaciones aritm eticas y/o l ogicas.
Lo unico que podremos conseguir es que estas secuencias sean lo m as largas posible
antes de comenzar a repetirse y que superen los tests estadsticos de aleatoriedad. En
este sentido podramos hablar de:
Secuencias estadsticamente aleatorias: Secuencias que superan los tests estadsti-
cos de aleatoriedad.
Un generador congruencial lineal
1
cumple esta propiedad, pero en Criptografa
ser a del todo in util, debido a que cada valor de la secuencia se emplea como se-
milla para calcular el siguiente, lo cual nos permite conocer toda la serie a partir de
un unico valor. Supongamos que tenemos un sistema que se basa en emplear claves
aleatorias para cada sesi on y usamos un generador de este tipo. Bastara con que una
de las claves quedara comprometida para que todas las comunicaciones pasadas y
futuras pudieran ser descifradas sin problemas. Incluso se ha demostrado que co-
nociendo unicamente un bit de cada valor de la secuencia, esta puede ser recuperada
completamente con una cantidad relativamente peque na de valores.
8.1.2. Secuencias criptogr acamente aleatorias
El problema de las secuencias estadsticamente aleatorias, y lo que las hace poco
utiles en Criptografa, es que son completamente predecibles. Deniremos, por tanto:
Secuencias criptogr acamente aleatorias: Para que una secuencia pseudoaleatoria
sea criptogr acamente aleatoria, ha de cumplir la propiedad de ser impredeci-
ble. Esto quiere decir que debe ser computacionalmente intratable el problema
de averiguar el siguiente n umero de la secuencia, teniendo total conocimiento
acerca de todos los n umeros anteriores y del algoritmo de generaci on emplea-
do.
1
Un generador congruencial lineal opera seg un la expresi on a
n+1
= (a
n
b + c) mod m, donde a
0
es
la semilla pseudoaleatoria y b, c y m son los par ametros del generador.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
8.2. Generaci on de Secuencias Aleatorias Criptogr acamente V alidas 115
Existen generadores pseudoaleatorios capcaces de generar secuencias criptogr a-
camente aleatorias. Sin embargo, habr a situaciones en las que esto no sea suciente
para nuestros prop ositos, debido a que se necesita una semilla para inicializar el ge-
nerador. Si un atacante lograra averiguar la semilla que estamos empleando en un
momento dado, podra de nuevo comprometer nuestro sistema. Sera de gran inter es
poder tener valores realmente impredecibles, de forma que nuestro adversario no pue-
da averiguarlos ni tratar de simular el proceso de generaci on que nosotros hemos
llevado a cabo.
8.1.3. Secuencias totalmente aleatorias
Como ya se ha dicho antes, no existe la aleatoriedad cuando se habla de computa-
doras. En realidad se puede decir que no existen en el Universo sucesos cien por cien
aleatorios
2
. En cualquier caso, y a efectos pr acticos, consideraremos un tercer tipo de
secuencias pseudoaleatorias:
Secuencias aleatorias: Diremos que una secuencia es totalmente aleatoria (o sim-
plemente aleatoria) si no puede ser reproducida de manera able.
Llegados a este punto parece claro que nuestro objetivo no va a ser generar se-
cuencias aleatorias puras, sino m as bien secuencias impredecibles e irreproducibles.
Ser a suciente, pues, con emplear un generador criptogr acamente aleatorio alimen-
tado por una semilla totalmente aleatoria.
8.2. Generaci on de Secuencias Aleatorias Criptogr aca-
mente V alidas
Para poder obtener secuencias a la vez impredecibles e irreproducibles, haremos
uso de generadores de secuencias criptogr acamente aleatorias, en conjunci on con
alg un mecanismo de recolecci on de bits aleatorios, que nos va a permitir inicializar
la semilla del generador. Un esquema de este tipo ser a seguro siempre que se salva-
guarde adecuadamente la semilla empleada. Comentaremos en primer lugar algunos
mecanismos para obtener los bits de la semilla, y despu es nos centraremos en los ge-
neradores criptogr acamente aleatorios propiamente dichos.
2
En el Universo existen multitud de sucesos que son impredecibles, pero pr acticamente todos ellos,
una vez medidos, presentan alg un sesgo estadstico, aunque sea muy leve, por lo que no son, en el
sentido que a nosotros nos interesa, completamente aleatorios.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
116 8. Criptografa y N umeros Aleatorios
8.2.1. Obtenci on de Bits Aleatorios
Como hemos dicho antes, las operaciones aritm eticas y l ogicas que realiza una
computadora son completamente deterministas. Sin embargo, los ordenadores, como
veremos a continuaci on, poseen elementos menos deterministas que pueden ser utiles
para nuestros prop ositos.
Para obtener n bits aleatorios bastara con que una persona lanzara una moneda
al aire n veces y nos fuera diciendo el resultado. En la actualidad apenas hay com-
putadores que incorporen hardware especco para esta tarea, aunque existe y sera
bastante barato y sencillo incorporarlo a la arquitectura de cualquier ordenador.
Existen valores obtenidos del hardware de la computadora que suelen propor-
cionar algunos bits de aleatoriedad. Parece razonable que leer en un momento dado
el valor de un reloj interno de alta precisi on proporcione un resultado m as o me-
nos impredecible, por lo que podramos emplearlo para recolectar valores aleatorios.
Diferentes pruebas han demostrado sin embargo que mecanismos de este tipo, que
pueden ser utiles en ciertas arquitecturas y sistemas operativos, dejan de servir en
otras versiones del mismo sistema o en arquitecturas muy similares, por lo que he-
mos de tener mucho cuidado con esto.
Algunas veces se ha propuesto el uso de los n umeros de serie de los componen-
tes fsicos (hardware) de un sistema, pero recordemos que estos n umeros tienen una
estructura muy rgida, y a veces conociendo simplemente el fabricante y la fecha
aproximada de fabricaci on podemos adivinar casi todos sus dgitos, por lo que van a
ser demasiado predecibles.
Tampoco son utiles las fuentes p ublicas de informaci on, como por ejemplo los bits
de un CD de audio, puesto que nuestros atacantes pueden disponer de ellas, con lo
que el unico resto de aleatoriedad que nos va a quedar es la posici on que escojamos
dentro del CD para extraer los bits.
Fuentes Adecuadas de Obtenci on de Bits Aleatorios
Cuando no disponemos de un elemento fsico en la computadora especcamen-
te dise nado para producir datos aleatorios, podemos emplear algunos dispositivos
hardware relativamente comunes en los ordenadores actuales:
Tarjetas digitalizadoras de sonido o vdeo. Un dispositivo digitalizador de audio (o
vdeo) sin ninguna entrada conectada, siempre que tenga ganancia suciente,
capta esencialmente ruido t ermico, con una distribuci on aleatoria, y por lo tanto
puede ser apto para nuestros prop ositos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
8.2. Generaci on de Secuencias Aleatorias Criptogr acamente V alidas 117
Unidades de Disco. Las unidades de disco presentan peque nas uctuaciones en
su velocidad de giro debido a turbulencias en el aire. Si se dispone de un m eto-
do para medir el tiempo de acceso de la unidad con suciente precisi on, se
pueden obtener bits aleatorios de la calidad necesaria.
Si no se dispone de una fuente able de bits aleatorios se puede efectuar la combi-
naci on de varias fuentes de informaci on menos ables. Por ejemplo, podramos leer
el reloj del sistema, alg un identicador del hardware, la fecha y la hora locales, el es-
tado de los registros de interrupciones del sistema, etc. Esto garantizar a que en total
se ha recogido una cantidad suciente de bits realmente aleatorios.
La mezcla de todas esas fuentes puede proporcionarnos suciente aleatoriedad pa-
ra nuestros prop ositos. Teniendo en cuenta que el n umero de bits realmente aleatorios
que se obtendr an como resultado nal del proceso ha de ser necesariamente menor
que el n umero de bits recogido inicialmente, hemos de buscar un mecanismo para
llevar a cabo esa combinaci on. Emplearemos a tal efecto las denominadas funciones
de mezcla fuertes.
Una funci on de mezcla es aquella que toma dos o m as fuentes de informaci on y
produce una salida en la que cada bit es una funci on compleja y no lineal de todos
los bits de la entrada. Por t ermino medio, modicar un bit en la entrada debera
alterar aproximadamente la mitad de los bits de salida. Podemos emplear diferentes
algoritmos criptogr acos para construir este tipo de funciones:
Algoritmos de cifrado por Bloques (ver captulo 10). Un algoritmo sim etrico de ci-
frado por bloques puede ser util como funci on de mezcla de la siguiente forma:
supongamos que usa una clave de n bits, y que tanto su entrada como su sali-
da son bloques de m bits. Si disponemos de n + m bits inicialmente, podemos
codicar m bits usando como clave los n restantes, y as obtener como salida
un bloque de m bits con mejor aleatoriedad. As, por ejemplo, si usamos DES,
podemos reducir a 64 bits un bloque de 120.
Funciones Resumen (ver captulo 13) . Una funci on resumen puede ser empleada
para obtener un n umero jo de bits a partir de una cantidad arbitraria de bits
de entrada.
8.2.2. Eliminaci on del Sesgo
En la mayora de los casos, los bits obtenidos de las fuentes aleatorias est an sesga-
dos, es decir, que hay m as unos que ceros o viceversa. Esta situaci on no es deseable,
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
118 8. Criptografa y N umeros Aleatorios
puesto que necesitamos una fuente aleatoria no sesgada, que presente igual probabi-
lidad tanto para el 0 como para el 1. Como veremos a continuaci on, esta circunstancia
no constituye un problema serio, ya que existen diversas t ecnicas para solucionarla.
Bits de Paridad
Si tenemos una secuencia de valores cero y uno, con un sesgo arbitrario, podemos
emplear el bit de paridad
3
de la secuencia para obtener una distribuci on con una
desviaci on tan peque na como queramos. Para comprobarlo, supongamos que d es el
sesgo, luego las probabilidades que tenemos para los bits de la secuencia son:
p = 0,5 +d q = 0,5 d
donde p es la probabilidad para el 1 y q es la probabilidad para el 0. Se puede com-
probar que las probabilidades para el bit de paridad de los n primeros bits valen
r =
1
2
((p +q)
n
+ (p q)
n
) s =
1
2
((p +q)
n
(p q)
n
)
donde r ser a la probabilidad de que el bit de paridad sea 0 o 1 dependiendo de si n
es par o impar. Puesto que p +q = 1 y p q = 2d, tenemos
r =
1
2
(1 + (2d)
n
) s =
1
2
(1 (2d)
n
)
Siempre que n >
log
2
(2)
log
2
(2d)
el sesgo de la paridad ser a menor que , por lo que
bastar a con coger esos n bits. Por ejemplo, si una secuencia de bits tiene p = 0,01 y
q = 0,99, basta con coger la paridad de cada 308 bits para obtener un bit con sesgo
inferior a 0,001.
M etodo de Von Neumann
El m etodo que propuso Von Neumann para eliminar el sesgo de una cadena de
bits consiste simplemente en examinar la secuencia de dos en dos bits. Eliminamos
los pares 00 y 11, e interpretamos 01 como 0 y 10 como 1. Por ejemplo, la serie
00.10.10.01.01.10.10.10.11 dara lugar a 1.1.0.0.1.1.1.
3
El bit de paridad de una secuencia vale 1 si el n umero de unos de dicha secuencia es par (paridad
impar) o impar (paridad par).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
8.2. Generaci on de Secuencias Aleatorias Criptogr acamente V alidas 119
Es f acil comprobar que, siendo d el sesgo de la distribuci on inicial
P(01) = P(10) = (0,5 +d)(0,5 d)
por lo que la cadena de bits resultantes presenta exactamente la misma probabili-
dad tanto para el 0 como para el 1. El problema de este m etodo es que no sabemos
a priori cu antos bits de informaci on sesgada necesitamos para obtener cada bit de
informaci on no sesgada.
Uso de Funciones Resumen
Si calculamos la entropa de una secuencia sesgada (ecuaci on 3.2, p agina 43), ob-
tendremos el n umero n de bits reales de informaci on que transporta. Entonces podre-
mos aplicar una funci on resumen (captulo 13) y quedarnos exactamente con los n
bits menos signicativos del resultado obtenido.
Veamos un ejemplo: sea una secuencia de 300 bits con una probabilidad P(1) =
0,99. La entropa de cada bit ser a
H = 0,99 log
2
(0,99) 0,01 log
2
(0,01) = 0,08079 bits
Luego los 300 bits originales aportar an 300 0,08079 24 bits de informaci on
real. Podemos calcular la rma MD5 o SHA de dicha secuencia y considerar los 24
bits menos signicativos del resultado como bits aleatorios v alidos.
8.2.3. Generadores Aleatorios Criptogr acamente Seguros
Suponiendo que ya tenemos una cantidad suciente de bits aut enticamente alea-
torios (impredecibles e irreproducibles), vamos a ver un par de generadores pseu-
doaleatorios que permiten obtener secuencias lo sucientemente seguras como para
ser empleadas en aplicaciones criptogr acas.
Generador X9.17
Propuesto por el Instituto Nacional de Est andares Norteamericano, permite, a
partir de una semilla inicial s
0
de 64 bits, obtener secuencias de valores tambi en de
64 bits. El algoritmo para obtener cada uno de los valores g
n
de la secuencia es el
siguiente:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
120 8. Criptografa y N umeros Aleatorios
g
n
= DES(k, DES(k, t) s
n
)
s
n+1
= DES(k, DES(k, t) g
n
)
donde k es una clave aleatoria reservada para la generaci on de cada secuencia, y t
es el tiempo en el que cada valor es generado cuanta m as resoluci on tenga (hasta
64 bits), mejor. DES(K, M) representa la codicaci on de M mediante el algoritmo
DES, empleando la clave K, y representa la funci on or-exclusivo. N otese que el
valor k ha de ser mantenido en secreto para que la seguridad de este generador sea
m axima.
Generador Blum Blum Shub
Es quiz a el algoritmo que m as pruebas de resistencia ha superado, con la ventaja
adicional de su gran simplicidad aunque es computacionalmente mucho m as cos-
toso que el algoritmo X9.17. Consiste en escoger dos n umeros primos grandes, p y
q, que cumplan la siguiente propiedad:
p 3(mod 4) q 3(mod 4)
Sea entonces n = pq. Escogemos un n umero x aleatorio primo relativo con n, que
ser a nuestra semilla inicial. Al contrario que x, que debe ser mantenido en secreto, n
puede ser p ublico. Calculamos los valores s
i
de la serie de la siguiente forma:
s
0
= (x
2
)(mod n)
s
i+1
= (s
2
i
)(mod n)
Hay que tener cuidado de emplear unicamente como salida unos pocos de los bits
menos signicativos de cada s
i
. De hecho, si cogemos no m as que log
2
(log
2
(s
i
)) bits
en cada caso podemos asegurar que predecir el siguiente valor de la serie es al menos
tan difcil como factorizar n.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Parte III
Algoritmos Criptogr acos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 9
Criptografa Cl asica
El ser humano siempre ha tenido secretos de muy diversa ndole, y ha buscado
mecanismos para mantenerlos fuera del alcance de miradas indiscretas. Julio C esar
empleaba una sencilla t ecnica para evitar que sus comunicaciones militares fueran
interceptadas. Leonardo Da Vinci escriba las anotaciones sobre sus trabajos de de-
recha a izquierda y con la mano zurda. Otros personajes, como Sir Francis Bacon o
Edgar Allan Poe eran conocidos por su aci on a los c odigos criptogr acos, que en
muchas ocasiones constituan un apasionante divertimento y un reto para el ingenio.
En este captulo haremos un breve repaso de los mecanismos criptogr acos con-
siderados cl asicos. Podemos llamar as a todos los sistemas de cifrado anteriores a la
II Guerra Mundial, o lo que es lo mismo, al nacimiento de las computadoras. Estas
t ecnicas tienen en com un que pueden ser empleadas usando simplemente l apiz y
papel, y que pueden ser criptoanalizadas casi de la misma forma. De hecho, con la
ayuda de las computadoras, los mensajes cifrados mediante el uso de estos c odigos
son f acilmente descifrables, por lo que cayeron r apidamente en desuso.
La transici on desde la Criptografa cl asica a la moderna se da precisamente duran-
te la II Guerra Mundial, cuando el Servicio de Inteligencia aliado rompe dos sistemas
empleados por el ej ercito alem an, la m aquina ENIGMA y el cifrado de Lorenz, con-
siderados hasta ese momento absolutamente inexpugnables. Pero lo m as importante
de esa victoria es que se consigue a trav es de revolucionarios desarrollos matem ati-
cos, combinados con el nacimiento de las computadoras modernas.
Todos los algoritmos criptogr acos cl asicos son de car acter sim etrico, ya que hasta
mediados de los a nos setenta no naci o la Criptografa Asim etrica.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
124 9. Criptografa Cl asica
9.1. Algoritmos Cl asicos de Cifrado
Estudiaremos en esta secci on algunos criptosistemas que en la actualidad han
perdido su ecacia, debido a que son f acilmente criptoanalizables empleando cual-
quier computadora dom estica, bien mediante an alisis estadstico o directamente por
la fuerza bruta, pero que fueron empleados con exito hasta principios del siglo XX.
Algunos se remontan incluso, como el algoritmo de C esar, a la Roma Imperial. Sin
embargo mantienen un inter es te orico, ya que nos van a permitir explotar algunas de
sus propiedades para entender mejor los algoritmos modernos.
9.1.1. Cifrados Monoalfab eticos
Se engloban dentro de este apartado todos los algoritmos criptogr acos que, sin
desordenar los smbolos dentro del mensaje, establecen una correspondencia unica
para todos ellos en todo el texto. Es decir, si al smbolo A le corresponde el smbolo
D, esta correspondencia se mantiene a lo largo de todo el mensaje.
Algoritmo de C esar
El algoritmo de C esar, llamado as porque es el que empleaba Julio C esar para
enviar mensajes secretos, es uno de los algoritmos criptogr acos m as simples. Con-
siste en sumar 3 al n umero de orden de cada letra. De esta forma a la A le corres-
ponde la D, a la B la E, y as sucesivamente. Si asignamos a cada letra un n umero
(A = 0,B = 1. . . ), y consideramos un alfabeto de 26 letras, la transformaci on crip-
togr aca sera:
C = (M + 3) mod 26
obs ervese que este algoritmo ni siquiera posee clave, puesto que la transformaci on
siempre es la misma. Obviamente, para descifrar basta con restar 3 al n umero de
orden de las letras del criptograma.
Sustituci on Afn
Es el caso general del algoritmo de C esar. Su transformaci on sera:
E
(a,b)
(M) = (aM +b) mod N
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.1. Algoritmos Cl asicos de Cifrado 125
siendo a y b dos n umeros enteros menores que el cardinal N del alfabeto, y cumplien-
do que mcd(a, N) = 1. La clave de cifrado k viene entonces dada por el par (a, b). El
algoritmo de C esar ser a pues una transformaci on afn con k = (1, 3).
Cifrado Monoalfab etico General
Es el caso m as general de cifrado monoalfab etico. La sustituci on ahora es arbitra-
ria, siendo la clave k precisamente la tabla de sustituci on de un smbolo por otro. En
este caso tenemos N! posibles claves.
Criptoan alisis de los M etodos de Cifrado Monoalfab eticos
El cifrado monoalfab etico constituye la familia de m etodos m as simple de crip-
toanalizar, puesto que las propiedades estadsticas del texto claro se conservan en el
criptograma. Supongamos que, por ejemplo, la letra que m as aparece en Castellano
es la A. Parece l ogico que la letra m as frecuente en el texto codicado sea aquella
que corresponde con la A. Emparejando las frecuencias relativas de aparici on de ca-
da smbolo en el mensaje cifrado con el histograma de frecuencias del idioma en el
que se supone est a el texto claro, podremos averiguar f acilmente la clave.
En el peor de los casos, es decir, cuando tenemos un emparejamiento arbitrario, la
Distancia de Unicidad de Shannon que obtenemos es:
S =
H(K)
D
=
log
2
(N!)
D
(9.1)
donde D es la redundancia del lenguaje empleado en el mensaje original, y N es el
n umero de smbolos de dicho lenguaje. Como es l ogico, suponemos que las N! claves
diferentes son equiprobables en principio.
En casos m as restringidos, como el afn, el criptoan alisis es a un m as simple, puesto
que el emparejamiento de todos los smbolos debe responder a alguna combinaci on
de coecientes (a, b).
9.1.2. Cifrados Polialfab eticos
En los cifrados polialfab eticos la sustituci on aplicada a cada car acter vara en fun-
ci on de la posici on que ocupe este dentro del texto claro. En realidad corresponde a
la aplicaci on cclica de n cifrados monoalfab eticos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
126 9. Criptografa Cl asica
Cifrado de Vig` enere
Es un ejemplo tpico de cifrado polialfab etico que debe su nombre a Blaise de
Vig` enere, su creador, y que data del siglo XVI. La clave est a constituida por una
secuencia de smbolos K = k
0
, k
1
, . . . k
d1
, y que emplea la siguiente funci on de
cifrado:
E
k
(m
i
) = m
i
+k
(i mod d)
(mod n)
siendo m
i
el i esimo smbolo del texto claro y n el cardinal del alfabeto de entrada.
Criptoan alisis
Para criptoanalizar este tipo de claves basta con efectuar d an alisis estadsticos
independientes agrupando los smbolos seg un la k
i
empleada para codicarlos. Ne-
cesitaremos al menos d veces m as cantidad de texto que con los m etodos monoal-
fab eticos.
En lo que respecta a la estimaci on del valor de d, podemos emplear el m etodo
propuesto por Friedrich Kasiski en 1863, que consiste en buscar subcadenas de tres o
m as letras repetidas dentro del texto cifrado, y anotar las distancias s
i
que las separan.
Lo m as probable es que los patrones encontrados se correspondan con subcadenas
repetidas tambi en en el texto claro, separadas por un n umero de caracteres m ultiplo
de d. Podremos, por tanto, estimar d calculando el m aximo com un divisor de todos
los s
i
que hayamos localizado.
9.1.3. Cifrados por Sustituci on Homof onica
Para paliar la sensibilidad frente a ataques basados en el estudio de las frecuencias
de aparici on de los smbolos, existe una familia de algoritmos que trata de ocultar las
propiedades estadsticas del texto claro empleando un alfabeto de salida con m as
smbolos que el alfabeto de entrada.
Supongamos que nuestro alfabeto de entrada posee cuatro letras, a, b, c, d. Su-
pongamos adem as que en nuestros textos la letra a aparece con una probabilidad
0.4, y el resto con probabilidad 0.2. Podramos emplear el siguiente alfabeto de salida
, , , , efectuando la siguiente asociaci on:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.1. Algoritmos Cl asicos de Cifrado 127
E(a) =
_
con probabilidad 1/2
con probabilidad 1/2
E(b) =
E(c) =
E(d) =
En el texto cifrado ahora todos los smbolos aparecen con igual probabilidad, lo
que imposibilita un ataque basado en frecuencias. A diferencia de lo que se puede
pensar en un principio, este m etodo presenta demasiados inconvenientes para ser
util en la pr actica: adem as del problema de necesitar un alfabeto de salida mayor que
el de entrada, para aplicarlo hace falta conocer la distribuci on estadstica a priori de
los smbolos en el texto claro, informaci on de la que, por desgracia, no siempre se
dispone.
9.1.4. Cifrados de Transposici on
Este tipo de mecanismos de cifrado no sustituye unos smbolos por otros, sino
que cambia su orden dentro del texto. Quiz as el m as antiguo conocido sea el escitalo,
formado por un bast on cilndrico con un radio particular y una tira de piel que se
enrollaba alrededor de aqu el. El texto se escriba a lo largo del bast on y s olo poda
ser ledo si se dispona de otro bast on de dimensiones similares. Un mecanismo de
transposici on sencillo, que no precisa otra cosa que l apiz y papel, podra consistir en
colocar el texto en una tabla de n columnas, y dar como texto cifrado los smbolos
de una columna ordenados de arriba abajo concatenados con los de otra, etc. La
clave k se compondra del n umero n junto con el orden en el que se deben leer las
columnas.
Por ejemplo, supongamos que queremos cifrar el texto El perro de San Roque no
tiene rabo, con n = 5 y la permutaci on 3, 2, 5, 1, 4 como clave. Colocamos el texto
en una tabla y obtenemos:
1 2 3 4 5
E L P E
R R O D
E S A N
R O Q U
E N O
T I E N E
R A B O
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
128 9. Criptografa Cl asica
Tendramos como texto cifrado la concatenaci on de las columnas 3,2,5,1 y 4 res-
pectivamente: Osonealr r irednu eoere et p aqonb. N otese que hemos de conservar el
espacio al principio del texto cifrado para que el mecanismo surta efecto.
Criptoan alisis
Este tipo de mecanismos de cifrado se puede criptoanalizar efectuando un estu-
dio estadstico sobre la frecuencia de aparici on de pares y tripletas de smbolos en
el lenguaje en que est e escrito el texto claro. Suponiendo que conocemos n, que en
nuestro caso es igual a 5, tenemos 5! = 120 posibles claves. Descifraramos el texto
empleando cada una de ellas y comprobaramos si los pares y tripletas de smbolos
consecutivos que vamos obteniendo se corresponden con los m as frecuentes en Cas-
tellano. De esa forma podremos asignarle una probabilidad autom aticamente a cada
una de las posibles claves.
Si, por el contrario, desconocemos n, basta con ir probando con n = 2, n = 3 y
as sucesivamente. Este m etodo es bastante complejo de llevar a cabo manualmente,
a no ser que se empleen ciertos trucos, pero una computadora puede completarlo en
un tiempo m as que razonable sin demasiados problemas.
9.2. M aquinas de Rotores. La M aquina ENIGMA
En el a no 1923, un ingeniero alem an llamado Arthur Scherbius patent o una m a-
quina especcamente dise nada para facilitar las comunicaciones seguras. Se trataba
de un instrumento de apariencia simple, parecido a una m aquina de escribir. Quien
deseara codicar un mensaje s olo tena que teclearlo y las letras correspondientes al
texto cifrado se iran iluminando en un panel. El destinatario copiaba dichas letras
en su propia m aquina y el mensaje original apareca de nuevo. La clave la constituan
las posiciones iniciales de tres tambores o rotores que el ingenio posea en su parte
frontal.
En la gura 9.1 podemos apreciar un esquema de esta m aquina, llamada ENIG-
MA. Los rotores no son m as que tambores con contactos en su supercie y cableados
en su interior, de forma que con cada pulsaci on del teclado, la posici on de estos de-
termina cu al es la letra que se ha de iluminar. Cada vez que se pulsa una tecla el
primer rotor avanza una posici on; el segundo avanza cuando el anterior ha dado una
vuelta completa y as sucesivamente. El reector no exista en los primeros modelos,
se introdujo posteriormente para permitir que la misma m aquina sirviera tanto para
cifrar como para descifrar, como veremos m as adelante.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.2. M aquinas de Rotores. La M aquina ENIGMA 129
Figura 9.1: Esquema de la m aquina Enigma.
9.2.1. Un poco de Historia
ENIGMA pronto llam o la atenci on del ej ercito alem an, que la utiliz o de forma
intensiva a lo largo de la II Guerra Mundial. Adem as se le aplicaron varias mejoras,
como incluir un peque no sistema previo de permutaci on, llamado stecker o clavijero
que permita escoger seis pares de letras para ser intercambiadas previamente al
cifrado, hacer que los rotores fueran intercambiables se podan elegir y colocar
en cualquier orden tres de entre cinco disponibles, e incluso ampliar a cuatro el
n umero de rotores.
Aunque ENIGMA pareca virtualmente imposible de romper, presentaba una se-
rie de debilidades, tanto en su dise no como en los mecanismos empleados para utili-
zarla, que fueron aprovechadas por el ej ercito aliado. El primero en conseguir avances
signicativos fue el servicio de inteligencia polaco, ya que en 1931 los franceses, en
virtud de un acuerdo de cooperaci on rmado diez a nos antes, les facilitaron informa-
ci on detallada sobre la m aquina
1
, que ellos a su vez haban obtenido sobornando a un
miembro de la ocina de cifras alemana. De hecho, los espas franceses consideraban
esta informaci on totalmente in util, ya que pensaban que ENIGMA era, sencillamente,
indescifrable.
El conocimiento preciso de la m aquina permiti o a un equipo de tres matem aticos
1
En anteriores ediciones de este libro se mencionaba el envo por error a Polonia de una m aquina,
pero parece que se trata simplemente de una leyenda.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
130 9. Criptografa Cl asica
(Marian Rejewski, Jerzy Rozycki y Henryk Zygalski) elaborar un mecanismo para
aprovechar una debilidad, no en la m aquina en s, sino en el protocolo empleado
por el ej ercito alem an para colocar los rotores al principio de cada mensaje. Dicho
protocolo consista en escoger una posici on de un libro de claves, y enviar tres letras
cualesquiera dos veces, para evitar posibles errores. En realidad se estaba introducien-
do una redundancia en el mensaje que permita obtener, con un nivel de esfuerzo
al alcance de los polacos, la clave empleada. Se construy o un aparato que permita
descifrar los mensajes, y se le bautiz o como Cicl ometro.
En 1938 Alemania cambi o el protocolo, lo cual oblig o a los matem aticos polacos
a renar su sistema, aunque b asicamente se seguan enviando tres letras repetidas.
No vamos a entrar en detalles, pero el ataque se basaba en buscar ciertas congura-
ciones de la m aquina, con propiedades especcas. Estas conguraciones especiales
daban una informaci on vital sobre la posici on inicial de los rotores para un mensaje
concreto. Se construy o entonces una versi on mejorada del cicl ometro, llamada Bomba,
que era capaz de encontrar estas conguraciones de forma autom atica. Sin embargo,
a nales de ese mismo a no se introdujeron dos rotores adicionales, lo cual obligaba
a emplear sesenta bombas simult aneamente para romper el sistema. Polonia simple-
mente careca de medios econ omicos para afrontar su construcci on.
Los polacos entonces pusieron en conocimiento de los servicios secretos brit anico
y franc es sus progresos, esperando poder establecer una va de colaboraci on para
seguir descifrando los mensajes germanos, pero la invasi on de Polonia era inminente.
Tras destruir todas las pruebas que pudieran indicar al ej ercito alem an el exito polaco
frente a ENIGMA, el equipo de Rejewski huy o precipitadamente, transportando lo
que pudieron salvar en varios camiones. Tras pasar por Rumana e Italia, y tener
que quemar todos los camiones por el camino excepto uno, llegaron a Pars, donde
colaboraron con un equipo de siete espa noles expertos en criptografa, liderados por
un tal Camaz on. Cuando al a no siguiente Alemania invadi o Francia el nuevo equipo
tuvo que huir a
Africa, y posteriormente instalarse en Montpellier, donde reanudaron
sus trabajos. En 1942, la entrada alemana en Vichy forz o a los matem aticos a escapar
de nuevo, los polacos a Espa na (donde muri o Rozycki), y los espa noles a
Africa,
donde se perdi o denitivamente su pista.
Cuando el equipo de Rejewski lleg o por n a Inglaterra, ya no se le consider o se-
guro, al haber estado en contacto con el enemigo, y se le conaron unicamente tra-
bajos menores. Mientras tanto, en Bletchley Park, Alan Turing desarrollaba una se-
gunda Bomba bas andose en los estudios del polaco, m as evolucionada y r apida que
su antecesora, en el marco del proyecto ULTRA brit anico, que se encargaba de re-
coger informaci on acerca de los sistemas de comunicaciones germanos. Este nuevo
dispositivo aprovechaba una debilidad esencial en ENIGMA: un mensaje no puede
codicarse en s mismo, lo cual implica que ninguna de las letras del texto claro pue-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.2. M aquinas de Rotores. La M aquina ENIGMA 131
de coincidir con ninguna del texto cifrado. La Bomba de Turing parta de una palabra
adivinada en contra de las normas de uso de ENIGMA, la mayora de los mensajes
que enviaba el ej ercito alem an comenzaban de igual forma, lo cual facilit o la tarea del
equipo aliado enormemente, y buscaba un emparejamiento con el mensaje cifrado
tal que el supuesto texto claro y el fragmento de criptograma asociado no coincidie-
ran en ninguna letra. A partir de ah la Bomba realizaba una b usqueda exhaustiva
de la conguraci on inicial de la m aquina para decodicar el mensaje, mediante un
ingenioso sistema que permita ignorar la posici on del stecker.
Un hecho bastante poco conocido es que Alemania regal o al r egimen de Franco
casi una veintena de m aquinas ENIGMA, que fueron utilizadas para comunicacio-
nes secretas hasta entrados los a nos cincuenta, suponemos que para regocijo de los
servicios de espionaje brit anico y norteamericano.
9.2.2. Consideraciones Te oricas Sobre la M aquina ENIGMA
Observemos que un rotor no es m as que una permutaci on dentro del alfabeto
de entrada. El cableado hace que cada una de las letras se haga corresponder con
otra. Todas las letras tienen imagen y no hay dos letras con la misma imagen. Si
notamos una permutaci on como , podemos escribir que la permutaci on resultante
de combinar todos los rotores en un instante dado es:
total
=
0
,
1
,
2
,
3
,
1
2
,
1
1
,
1
0
)
La permutaci on
3
corresponde al reector, y debe cumplir que
3
=
1
3
, es decir,
que aplicada dos veces nos d e lo mismo que tenamos al principio. De esta forma se
cumple la propiedad de que, para una misma posici on de los rotores, la codicaci on
y la decodicaci on son sim etricas.
La fuerza de la m aquina ENIGMA radicaba en que tras codicar cada letra se
giran los rotores, lo cual hace que la permutaci on que se aplica a cada letra sea di-
ferente, y que esa permutaci on adem as no se repita hasta que los rotores recuperen
su posici on inicial. Tengamos en cuenta que hay 17576 posiciones iniciales de los ro-
tores, y 60 combinaciones de tres rotores a partir de los cinco de entre los que se
puede elegir. Puesto que el stecker presenta en torno a cien mil millones de combina-
ciones, existe una cantidad enorme de posibles disposiciones iniciales de la m aquina
aproximadamente 10
17
. La potencia del m etodo de criptoan alisis empleado ra-
dica en que se poda identicar un emparejamiento v alido entre el criptograma y el
texto claro, e ignorar la posici on del stecker, de forma que s olo bastaba con rastrear
dentro del espacio de posibles conguraciones para encontrar aquella que llevara
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
132 9. Criptografa Cl asica
a cabo la transformaci on esperada. No disponer de dicho emparejamiento hubiera
complicado enormemente el criptoan alisis, tal vez hasta el punto de hacerlo fracasar.
9.2.3. Otras M aquinas de Rotores
Adem as de la m aquina alemana ENIGMA, existieron otros dispositivos criptogr a-
cos basados en rotores. En esta secci on comentaremos SIGABA y PURPLE, ambos
empleados durante la II Guerra Mundial.
La M aquina SIGABA
Esta m aquina de rotores, tambi en conocida como ECM Mark II, Converter M-134
y CSP-889, fue empleada por el ej ercito de los EE.UU. durante la Segunda Guerra
Mundial. A diferencia de la m aquina Enigma, en la que los rotores avanzan una posi-
ci on cada vez que se pulsa una tecla, SIGABA incorpora un segundo juego de rotores,
que se encarga de decidir qu e rotores principales avanzan cada vez que se pulsa una
tecla. Esto aumenta considerablemente la longitud de ciclo de la m aquina, y complica
la localizaci on de posibles patrones en los textos cifrados.
El principal inconveniente de esta m aquina era su excesivo peso y tama no, sin
contar con su su complejidad mec anica, dicultad de manejo y fragilidad. Esto supu-
so que, en la pr actica, no pudiera ser utilizada en muchas situaciones a lo largo de la
guerra, a diferencia de la m aquina Enigma, mucho m as ligera y resistente. En su lu-
gar, se usaba, entre otros, el famoso c odigo consistente en emplear indios navajos, que
simplemente se comunicaban por radio en su propio idioma, demasiado desconocido
y complejo como para ser comprendido por el enemigo.
La M aquina PURPLE
Esta m aquina, bautizada como PURPLE por los EE.UU., fue empleada por el go-
bierno japon es desde poco antes de iniciarse la Segunda Guerra Mundial, con nes
diplom aticos. Se trata de la sucesora de otra m aquina, denominada RED, y fue di-
se nada por un capit an de la armada japonesa. Criptoanalizada durante la II Gue-
rra Mundial por un equipo del Servicio de Inteligencia de Se nales de la Armada de
EE.UU., dirigido por William Friedman, debi o su cada m as a una mala poltica de
elecci on de claves, que a debilidades intrnsecas de la propia m aquina.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.3. El Cifrado de Lorenz 133
9.3. El Cifrado de Lorenz
El cifrado de Lorenz se llevaba a cabo mediante una m aquina, denominada SZ40,
que tena un dise no considerablemente m as complejo que el de la ENIGMA. Para
su descifrado se desarroll o una m aquina descifradora, denominada Colossus, que
supuso el germen de las computadoras tal y como hoy las conocemos. Si bien la
Bomba efectuaba en esencia una b usqueda sistem atica de la clave, el cifrado de Lo-
renz necesitaba de an alisis estadsticos m as complejos, y para ello el matem atico Max
Newman
2
, inspir andose en el concepto de M aquina Universal de Turing, dirigi o el
desarrollo de una m aquina, bautizada con el nombre de Colossus, que podra muy
bien ser considerada como la primera computadora moderna, aunque su existencia
se mantuvo en secreto hasta mediados de los a nos 70. El ingenio, cuya construcci on
fue llevada a cabo por el ingeniero Tommy Flowers, constaba de unas 1.500 v alvulas
de vaco, tecnologa mucho m as moderna que los rel es que constituan el coraz on de
las Bombas.
En el cifrado de Lorenz se empleaba para codicar teletipos, en los que los textos
venan representados por una matriz en formada por columnas de cinco puntos. Ca-
da una de esas columnas corresponda a una letra, y en cada punto poda haber (o
no) un agujero. En esencia, tenemos un sistema de codicaci on de cinco bits por letra.
La m aquina de Lorenz generaba una secuencia pseudoaleatoria (ver captulo 8) bina-
ria que era combinada con la matriz de puntos, mediante una operaci on orexclusivo
para producir el criptograma.
El protocolo de comunicaciones usado para la m aquina de Lorenz obligaba a usar
secuencias pseudoaleatorias distintas para mensajes distintos. Sin embargo, en agos-
to de 1941, un operador alem an cometi o un terrible error: tena que transmitir un
mensaje de cerca de 4.000 caracteres, y tras enviarlo, recibi o la siguiente respuesta:
podras repetirlo?. El operador comenz o a codicar de nuevo el mensaje a mano,
y, probablemente molesto por tener que repetir la operaci on, comenz o a abreviar el
texto claro, de tal forma que se enviaron dos mensajes diferentes combinados con la
misma secuencia pseudoaleatoria. Esta informaci on permiti o a los espas del bando
contrario extraer la secuencia y comenzar a extraer patrones de la misma despu es
de todo, result o m as pseudo que aleatoria. A partir de aqu el unico problema fue que
para descifrar los mensajes, el m etodo manual se mostraba demasiado lento. Precisa-
mente por eso se desarroll o Colossus.
2
No confundir con John Von Neumann, que tambi en hizo aportaciones cruciales en los inicios de
la Inform atica, pero nunca estuvo en Bletchley Park.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
134 9. Criptografa Cl asica
9.3.1. Consideraciones Te oricas sobre el Cifrado de Lorenz
La m aquina SZ40 pretenda emular un sistema Seguro de Shannon (secci on 3.5),
pero para ello las secuencias generadas tendran que ser totalmente aleatorias. Sin
embargo, si las secuencias producidas por la m aquina fueran de este tipo, sera im-
posible reproducirlas en los dos extremos de la comunicaci on, por lo que el sistema
en realidad es una t ecnica de cifrado de Flujo (captulo 11).
Si uno dispone de dos mensajes con sentido en un idioma determinado, cifra-
dos con la misma secuencia pseudoaleatoria, bastar a con buscar cadenas de bits que
permitan descifrar simult aneamente ambos mensajes. Por ejemplo, supongamos la
siguiente codicaci on binaria para cada letra:
a b c d e f g h i j k l m
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0
0 1 0 1 0 1 0 1 0 1 0 1 0
n o p q r s t u v w x y z
0 0 0 1 1 1 1 1 1 1 1 1 1
1 1 1 0 0 0 0 0 0 0 0 1 1
1 1 1 0 0 0 0 1 1 1 1 0 0
0 1 1 0 0 1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0 1 0 1 0 1
Si nos encontramos los mensajes:
10100 11000 11000 10101
10000 11000 11001 11011
podemos generar las 1.024 combinaciones posibles de 10 bits, y tratar de descifrar las
dos primeras letras de cada mensaje. Nos quedaremos unicamente con aquellas com-
binaciones de bits que den lugar a slabas (o partes de slabas) legales en castellano
en ambos mensajes. Por ejemplo, la cadena 1010101010 da lugar a las letras BS para el
primer mensaje, y FS para el segundo, ambas con muy poca probabilidad de aparecer
al principio de un mensaje correcto en castellano.
Si, por el contrario, cont aramos con un unico mensaje cifrado, este an alisis resul-
tara imposible, ya que para todos y cada uno de los mensajes posibles en castellano
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
9.4. Ejercicios Propuestos 135
existir a una secuencia de bits que lo genera. La clave est a en que existir an muy pocas
secuencias tal vez solo una que den lugar, en ambos mensajes cifrados, a textos
claros v alidos.
La tarea es tediosa, pero da resultado, incluso si la secuencia empleada para cifrar
es totalmente aleatoria. En consecuencia, los fallos sobre los que se ciment o el exito
del criptoan alisis del cifrado de Lorenz fueron dos: en primer lugar, el cifrado acci-
dental de dos mensajes distintos con la misma secuencia, y en segundo, el car acter
poco aleatorio de la secuencia en cuesti on.
9.4. Ejercicios Propuestos
1. Descifre los mensajes comentados en la secci on 9.3.1, teniendo en cuenta cada
uno de ellos es una palabra completa y correcta en castellano.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
136 9. Criptografa Cl asica
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 10
Cifrados por Bloques
10.1. Introducci on
Una gran parte de los algoritmos de cifrado sim etrico operan dividiendo el men-
saje que se pretende codicar en bloques de tama no jo, y aplican sobre cada uno
de ellos una combinaci on m as o menos compleja de operaciones de confusi on
sustituciones y difusi on transposiciones (ver secci on 3.8). Estos algoritmos se
denominan, en general, cifrados por bloques.
Recordemos que la confusi on consiste en tratar de ocultar la relaci on que exis-
te entre el texto claro, el texto cifrado y la clave. Un buen mecanismo de confusi on
har a demasiado complicado extraer relaciones estadsticas entre las tres cosas. Por su
parte la difusi on trata de repartir la inuencia de cada bit del mensaje original lo m as
posible entre el mensaje cifrado.
Un hecho digno de ser tenido en cuenta es que la confusi on por s sola resulta
suciente, ya que si establecemos una tabla de sustituci on completamente diferente
para cada clave con todos los textos claros posibles tendremos un sistema extrema-
damente seguro. Sin embargo, dichas tablas ocuparan cantidades astron omicas de
memoria, por lo que en la pr actica resultan inviables. Por ejemplo, un algoritmo que
codicara bloques de 128 bits empleando una clave de 80 bits necesitara una tabla
de aproximadamente 10
63
entradas.
Lo que en realidad se hace para conseguir algoritmos fuertes sin necesidad de al-
macenar tablas enormes es intercalar la confusi on (sustituciones simples, con tablas
peque nas) y la difusi on (permutaciones). Esta combinaci on se conoce como cifrado de
producto. La mayora de los algoritmos se basan en diferentes capas de sustituciones
y permutaciones, estructura que denominaremos Red de Sustituci on-Permutaci on. En
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
138 10. Cifrados por Bloques
f
f
L
L
L
L
R
R
R
R
K
K
1
n
n n
n1 n1
0 0
1 1
Figura 10.1: Estructura de una red de Feistel.
muchos casos el criptosistema no es m as que una operaci on combinada de sustitu-
ciones y permutaciones, repetida n veces, como ocurre con DES.
10.1.1. Redes de Feistel
Muchos de los cifrados de producto tienen en com un que dividen un bloque de
longitud n en dos mitades, L y R. Se dene entonces un cifrado de producto iterativo
en el que la salida de cada ronda se usa como entrada para la siguiente seg un la
relaci on (ver gura 10.1):
L
i
= R
i1
R
i
= L
i1
f(R
i1
, K
i
)
_
si i < n.
L
n
= L
n1
f(R
n1
, K
n
)
R
n
= R
n1
(10.1)
Este tipo de estructura se denomina Red de Feistel, y es empleada en multitud de
algoritmos, como DES, Lucifer, FEAL, CAST, Blowsh, etc etera. Tiene la interesante
propiedad de que para invertir la funci on de cifrado es decir, para descifrar basta
con aplicar el mismo algoritmo, pero con las K
i
en orden inverso. N otese, adem as,
que esto ocurre independientemente de c omo sea la funci on f.
Podemos emplear la inducci on matem atica
1
para comprobar esta propiedad. Sea
1
Este principio garantiza que si demostramos el caso correspondiente a n = 1, y luego demostra-
mos el caso n+1 suponiendo cierto el caso n, la propiedad en cuesti on ha de cumplirse para cualquier
valor entero de n igual o superior a 1
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.1. Introducci on 139
E
n
(L, R) la funci on de cifrado para una red de Feistel de n rondas y D
n
(L, R) la
funci on de descifrado an aloga. Desdoblaremos cada funci on en sus bloques izquier-
do y derecho y los denotaremos con superndices, E
L
n
(L, R), E
R
n
(L, R), D
L
n
(L, R) y
D
R
n
(L, R) . Hemos de demostrar que
D
L
n
(E
L
n
(L, R), E
R
n
(L, R)) = L y D
R
n
(E
L
n
(L, R), E
R
n
(L, R)) = R
para cualquier valor de n.
Si n = 1 tenemos:
E
L
1
(A, B) = A f(B, K
1
)
E
R
1
(A, B) = B
y
D
L
1
(A, B) = A f(B, K
1
)
D
R
1
(A, B) = B
luego
D
L
1
_
E
L
1
(L, R), E
R
1
(L, R)
_
= E
L
1
(L, R) f
_
E
R
1
(L, R), K
1
_
=
=
_
L f(R, K
1
)
_
f(R, K
1
) = L
y
D
R
1
_
E
L
1
(L, R), E
R
1
(L, R)
_
= E
R
1
(L, R) = R
Suponiendo que se cumple el caso n, demostrar el caso n + 1:
N otese en primer lugar que cifrar con n + 1 rondas equivale a hacerlo con n
rondas, permutar el resultado y aplicar el paso n+1 de cifrado seg un la relaci on
10.1:
E
L
n+1
(L, R) = E
R
n
(L, R) f
_
E
L
n
(L, R), K
n+1
_
E
R
n+1
(L, R) = E
L
n
(L, R)
El descifrado con n + 1 ser a igual a aplicar el primer paso del algoritmo con
K
n+1
y luego descifrar el resultado con n rondas:
D
n+1
(A, B) = D
n
_
B, A f(B, K
n+1
)
_
Haciendo que A y B sean ahora el resultado de cifrar con n+1 rondas tenemos:
D
n+1
_
E
L
n+1
(L, R), E
R
n+1
(L, R)
_
=
= D
n
_
E
R
n+1
(L, R), E
L
n+1
(L, R) f(E
R
n+1
(L, R), K
n+1
)
_
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
140 10. Cifrados por Bloques
Sustituyendo E
L
n+1
(L, R) y E
R
n+1
(L, R) en la parte derecha de la anterior expre-
si on nos queda:
D
n+1
_
E
L
n+1
(L, R), E
R
n+1
(L, R)
_
=
= D
n
_
E
L
n
(L, R),
_
E
R
n
(L, R) f(E
L
n
(L, R), K
n+1
)
_
f(E
L
n
(L, R), K
n+1
)
_
o sea,
D
L
n+1
_
E
L
n+1
(L, R), E
R
n+1
(L, R)
_
= D
L
n
_
E
L
n
(L, R), E
R
n
(L, R)
_
= L
D
L
n+1
_
E
R
n+1
(L, R), E
R
n+1
(L, R)
_
= D
R
n
_
E
L
n
(L, R), E
R
n
(L, R)
_
= R
con lo que naliza nuestra demostraci on.
10.1.2. Cifrados con Estructura de Grupo
Otra de las cuestiones a tener en cuenta en los cifrados de producto es la posibi-
lidad de que posean estructura de grupo. Se dice que un cifrado tiene estructura de
grupo si se cumple la siguiente propiedad:
k
1
, k
2
k
3
tal que E
k
2
(E
k
1
(M)) = E
k
3
(M) (10.2)
esto es, si hacemos dos cifrados encadenados con k
1
y k
2
, existe una clave k
3
que
realiza la transformaci on equivalente.
Es interesante que un algoritmo criptogr aco carezca de este tipo de estructura,
ya que si ciframos un mensaje primero con la clave k
1
y el resultado con la clave
k
2
, es como si hubi eramos empleado una clave de longitud doble, aumentando la
seguridad del sistema. Si, por el contrario, la transformaci on criptogr aca presentara
estructura de grupo, esto hubiera sido equivalente a cifrar el mensaje una unica vez
con una tercera clave, con lo que no habramos ganado nada.
10.1.3. S-Cajas
Hemos dicho antes que para poder construir buenos algoritmos de producto, in-
tercalaremos sustituciones sencillas (confusi on), con tablas peque nas, y permutacio-
nes (difusi on). Estas tablas peque nas de sustituci on se denominan de forma gen erica
S-Cajas.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.2. El Algoritmo DES 141
SCaja 8x6 SCaja 8x6 SCaja 8x6 SCaja 8x6
SCaja 8x6
32 bits
24 bits
A B
Figura 10.2: A: S-Caja individual. B: combinaci on de cuatro S-Cajas.
Una S-Caja de m*n bits (ver gura 10.2) es una tabla de sustituci on que toma como
entrada cadenas de m bits y da como salida cadenas de n bits. DES, por ejemplo,
emplea ocho S-Cajas de 6*4 bits. La utilizaci on de las S-Cajas es sencilla: se divide
el bloque original en trozos de m bits y cada uno de ellos se sustituye por otro de n
bits, haciendo uso de la S-Caja correspondiente. Normalmente, cuanto m as grandes
sean las S-Cajas, m as resistente ser a el algoritmo resultante, aunque la elecci on de los
valores de salida para que den lugar a un buen algoritmo no es en absoluto trivial.
Existe un algoritmo criptogr aco, llamado CAST, que emplea seis S-Cajas de 8*32
bits. CAST codica bloques de 64 bits empleando claves de 64 bits, consta de ocho
rondas y deposita pr acticamente toda su fuerza en las S-Cajas. De hecho, existen mu-
chas variedades de CAST, cada una con sus S-Cajas correspondientes algunas de
ellas secretas. Este algoritmo se ha demostrado resistente a las t ecnicas habituales
de criptoan alisis, y s olo se conoce la fuerza bruta como mecanismo para atacarlo.
10.2. El Algoritmo DES
Es el algoritmo sim etrico m as extendido mundialmente. Se basa en el algoritmo
LUCIFER, que haba sido desarrollado por IBM a principios de los setenta, y fue
adoptado como est andar por el Gobierno de los EE.UU. para comunicaciones no cla-
sicadas en 1976. En realidad la NSA lo dise n o para ser implementado por hardware,
creyendo que los detalles iban a ser mantenidos en secreto, pero la Ocina Nacional
de Estandarizaci on public o su especicaci on con suciente detalle como para que
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
142 10. Cifrados por Bloques
48 bits
SCaja SCaja SCaja SCaja SCaja SCaja SCaja SCaja
P
32 bits
Ki (48 bits)
Ri (32 bits)
E
Figura 10.3: Esquema de la funci on f del algoritmo DES.
cualquiera pudiera implementarlo por software. No fue casualidad que el siguiente
algoritmo adoptado (Skipjack) fuera mantenido en secreto.
A mediados de 1998, se demostr o que un ataque por la fuerza bruta a DES era
viable, debido a la escasa longitud que emplea en su clave. No obstante, el algoritmo
a un no ha demostrado ninguna debilidad grave desde el punto de vista te orico, por
lo que su estudio sigue siendo plenamente interesante.
El algoritmo DES codica bloques de 64 bits empleando claves de 56 bits. Es una
Red de Feistel de 16 rondas, m as dos permutaciones, una que se aplica al principio
(P
i
) y otra que se aplica al nal (P
f
), tales que P
i
= P
1
f
.
La funci on f (gura 10.3) se compone de una permutaci on de expansi on (E), que
convierte el bloque de 32 bits correspondiente en uno de 48. Despu es realiza un or-
exclusivo con el valor K
i
, tambi en de 48 bits, aplica ocho S-Cajas de 6*4 bits, y efect ua
una nueva permutaci on P.
Se calcula un total de 16 valores de K
i
(gura 10.4), uno para cada ronda, efec-
tuando primero una permutaci on inicial EP1 sobre la clave de 64 bits, llevando a
cabo desplazamientos a la izquierda de cada una de las dos mitades de 28 bits
resultantes, y realizando nalmente una elecci on permutada (EP2) de 48 bits en cada
ronda, que ser a la K
i
. Los desplazamientos a la izquierda son de dos bits, salvo para
las rondas 1, 2, 9 y 16, en las que se desplaza s olo un bit. N otese que aunque la clave
para el algoritmo DES tiene en principio 64 bits, se ignoran ocho de ellos un bit de
paridad por cada byte de la clave, por lo que en la pr actica se usan s olo 56 bits.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.2. El Algoritmo DES 143
K (64 bits)
EP1
EP2
EP2
<< <<
<< <<
L0 (28 bits) R0 (28 bits)
K1 (48 bits)
K16 (48 bits)
Figura 10.4: C alculo de las K
i
para el algoritmo DES. EP1 representa la primera elec-
ci on permutada, que s olo conserva 56 bits de los 64 de entrada, y EP2 representa la
segunda, que se queda con 48 bits. El signo << representa un desplazamiento de
bits a la izquierda (uno o dos dependiendo de la ronda).
Para descifrar basta con usar el mismo algoritmo (ya que P
i
= P
1
f
) empleando
las K
i
en orden inverso.
10.2.1. Claves D ebiles en DES
El algoritmo DES presenta algunas claves d ebiles. En general, todos aquellos valo-
res de la llave que conducen a una secuencia inadecuada de K
i
ser an poco recomen-
dables. Distinguiremos entre claves d ebiles (cuadro 10.1), que son aquellas que gene-
ran un conjunto de diecis eis valores iguales de K
i
y que cumplen E
k
(E
k
(M)) =
M, y claves semid ebiles (cuadro 10.2), que generan dos valores diferentes de K
i
, ca-
da uno de los cuales aparece ocho veces. En cualquier caso, el n umero de llaves de
este tipo es tan peque no en comparaci on con el n umero total de posibles claves, que
no debe suponer un motivo de preocupaci on.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
144 10. Cifrados por Bloques
Clave Clave tras aplicar EP1
0101010101010101 0000000 0000000
1F1F1F1F0E0E0E0E 0000000 FFFFFFF
E0E0E0E0F1F1F1F1 FFFFFFF 0000000
FEFEFEFEFEFEFEFE FFFFFFF FFFFFFF
Cuadro 10.1: Claves d ebiles para el algoritmo DES (64 bits), expresadas en hexadeci-
mal.
Clave Clave tras aplicar EP1
01FE01FE01FE01FE AAAAAAA AAAAAAA
FE01FE01FE01FE01 5555555 5555555
1FE01FE00EF10EF1 AAAAAAA 5555555
E01FE01FF10EF10E 5555555 AAAAAAA
01E001E001F101F1 AAAAAAA 0000000
E001E001F101F101 5555555 0000000
1FFE1FFE0EFE0EFE AAAAAAA FFFFFFF
FE1FFE1FFE0EFE0E 5555555 FFFFFFF
011F011F010E010E 0000000 AAAAAAA
1F011F010E010E01 0000000 5555555
E0FEE0FEF1FEF1FE FFFFFFF AAAAAAA
FEE0FEE0FEF1FEF1 FFFFFFF 5555555
Cuadro 10.2: Claves semi-d ebiles para el algoritmo DES (64 bits), expresadas en he-
xadecimal.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.3. Variantes de DES 145
10.3. Variantes de DES
A mediados de julio de 1998, una empresa sin animo de lucro, llamada EFF (Elec-
tronic Frontier Foundation), logr o fabricar una m aquina capaz de descifrar un men-
saje DES en menos de tres das. Curiosamente, pocas semanas antes, un alto cargo
de la NSA haba declarado que dicho algoritmo segua siendo seguro, y que desci-
frar un mensaje resultaba a un excesivamente costoso, incluso para organizaciones
gubernamentales. DES-Cracker cost o menos de 250.000 euros.
A pesar de su cada, DES sigue siendo ampliamente utilizado en multitud de apli-
caciones, como por ejemplo las transacciones de los cajeros autom aticos. De todas
formas, el problema real de DES no radica en su dise no, sino en que emplea una
clave demasiado corta (56 bits), lo cual hace que con el avance actual de las com-
putadoras los ataques por la fuerza bruta comiencen a ser opciones realistas. Mucha
gente se resiste a abandonar este algoritmo, precisamente porque ha sido capaz de so-
brevivir durante veinte a nos sin mostrar ninguna debilidad en su dise no, y preeren
proponer variantes que, de un lado evitaran el riesgo de tener que conar en algo-
ritmos nuevos, y de otro permitiran aprovechar gran parte de las implementaciones
por hardware existentes de DES.
10.3.1. DES M ultiple
Consiste en aplicar varias veces el algoritmo DES con diferentes claves al mensaje
original. Se puede hacer ya que DES no presenta estructura de grupo (ecuaci on 10.2).
El m as com un de todos ellos es el Triple-DES, que responde a la siguiente estructura:
C = E
k
1
(E
1
k
2
(E
k
1
(M)))
es decir, codicamos con la subclave k
1
, decodicamos con k
2
y volvemos a codicar
con k
1
. La clave resultante es la concatenaci on de k
1
y k
2
, con una longitud de 112
bits.
10.3.2. DES con Subclaves Independientes
Consiste en emplear subclaves diferentes para cada una de las 16 rondas de DES.
Puesto que estas subclaves son de 48 bits, la clave resultante tendra 768 bits en total.
No es nuestro objetivo entrar en detalles, pero empleando criptoan alisis diferencial,
esta variante podra ser rota con 2
61
textos claros escogidos, por lo que en la pr actica
no presenta un avance sustancial sobre DES est andar.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
146 10. Cifrados por Bloques
10.3.3. DES Generalizado
Esta variante emplea n trozos de 32 bits en cada ronda en lugar de dos, por lo que
aumentamos tanto la longitud de la clave como el tama no de mensaje que se puede
codicar, manteniendo sin embargo el orden de complejidad del algoritmo. Se ha
demostrado sin embargo que no s olo se gana poco en seguridad, sino que en muchos
casos incluso se pierde.
10.3.4. DES con S-Cajas Alternativas
Consiste en utilizar S-Cajas diferentes a las de la versi on original de DES. En la
pr actica no se han encontrado S-Cajas mejores que las propias de DES. De hecho,
algunos estudios han revelado que las S-Cajas originales presentan propiedades que
las hacen resistentes a t ecnicas de criptoan alisis que no fueron conocidas fuera de la
NSA hasta muchos a nos despu es de la aparici on del algoritmo.
10.4. El algoritmo IDEA
El algoritmo IDEA (International Data Encryption Algorithm) es bastante m as
joven que DES, pues data de 1992. Para muchos constituye el mejor y m as seguro
algoritmo sim etrico disponible en la actualidad. Trabaja con bloques de 64 bits de
longitud y emplea una clave de 128 bits. Como en el caso de DES, se usa el mismo
algoritmo tanto para cifrar como para descifrar.
IDEA es un algoritmo bastante seguro, y hasta ahora se ha mostrado resistente
a multitud de ataques, entre ellos el criptoan alisis diferencial. No presenta claves
d ebiles
2
, y su longitud de clave hace imposible en la pr actica un ataque por la fuerza
bruta.
Como ocurre con todos los algoritmos sim etricos de cifrado por bloques, IDEA se
basa en los conceptos de confusi on y difusi on, haciendo uso de las siguientes opera-
ciones elementales (todas ellas f aciles de implementar):
XOR.
Suma m odulo 2
16
.
2
En realidad, IDEA tiene un peque nsimo subconjunto de claves que pueden dar ciertas ventajas a
un criptoanalista, pero la probabilidad de encontrarnos con una de ellas es de 1 entre 2
96
, por lo que
no representan un peligro real.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.4. El algoritmo IDEA 147
Producto m odulo 2
16
+ 1.
El algoritmo IDEA consta de ocho rondas. Dividiremos el bloque X a codicar, de
64 bits, en cuatro partes X
1
, X
2
, X
3
y X
4
de 16 bits. Para la interpretaci on entera de
dichos registros se emplear a el criterio big endian, lo cual signica que el primer byte
es el m as signicativo. Denominaremos Z
i
a cada una de las 52 subclaves de 16 bits
que vamos a necesitar. Las operaciones que llevaremos a cabo en cada ronda son las
siguientes:
1. Multiplicar X
1
por Z
1
.
2. Sumar X
2
con Z
2
.
3. Sumar X
3
con Z
3
.
4. Multiplicar X
4
por Z
4
.
5. Hacer un XOR entre los resultados del paso 1 y el paso 3.
6. Hacer un XOR entre los resultados del paso 2 y el paso 4.
7. Multiplicar el resultado del paso 5 por Z
5
.
8. Sumar los resultados de los pasos 6 y 7.
9. Multiplicar el resultado del paso 8 por Z
6
.
10. Sumar los resultados de los pasos 7 y 9.
11. Hacer un XOR entre los resultados de los pasos 1 y 9.
12. Hacer un XOR entre los resultados de los pasos 3 y 9.
13. Hacer un XOR entre los resultados de los pasos 2 y 10.
14. Hacer un XOR entre los resultados de los pasos 4 y 10.
La salida de cada iteraci on ser an los cuatro sub-bloques obtenidos en los pasos
11, 12, 13 y 14, que ser an la entrada del siguiente ciclo, en el que emplearemos las
siguientes seis subclaves, hasta un total de 48. Al nal de todo intercambiaremos los
dos bloques centrales (en realidad con eso deshacemos el intercambio que llevamos a
cabo en los pasos 12 y 13).
Despu es de la octava iteraci on, se realiza la siguiente transformaci on:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
148 10. Cifrados por Bloques
Ronda Subclaves de Cifrado Subclaves de Descifrado
1 Z
1
Z
2
Z
3
Z
4
Z
5
Z
6
Z
1
49
Z
50
Z
51
Z
1
52
Z
47
Z
48
2 Z
7
Z
8
Z
9
Z
10
Z
11
Z
12
Z
1
43
Z
45
Z
44
Z
1
46
Z
41
Z
42
3 Z
13
Z
14
Z
15
Z
16
Z
17
Z
18
Z
1
37
Z
39
Z
38
Z
1
40
Z
35
Z
36
4 Z
19
Z
20
Z
21
Z
22
Z
23
Z
24
Z
1
31
Z
33
Z
32
Z
1
34
Z
29
Z
30
5 Z
25
Z
26
Z
27
Z
28
Z
29
Z
30
Z
1
25
Z
27
Z
26
Z
1
28
Z
23
Z
24
6 Z
31
Z
32
Z
33
Z
34
Z
35
Z
36
Z
1
19
Z
21
Z
20
Z
1
22
Z
17
Z
18
7 Z
37
Z
38
Z
39
Z
40
Z
41
Z
42
Z
1
13
Z
15
Z
14
Z
1
16
Z
11
Z
12
8 Z
43
Z
44
Z
45
Z
46
Z
47
Z
48
Z
1
7
Z
9
Z
8
Z
1
10
Z
5
Z
6
Final Z
49
Z
50
Z
51
Z
52
Z
1
1
Z
2
Z
3
Z
1
4
Cuadro 10.3: Subclaves empleadas en el algoritmo IDEA
1. Multiplicar X
1
por Z
49
.
2. Sumar X
2
con Z
50
.
3. Sumar X
3
con Z
51
.
4. Multiplicar X
4
por Z
52
.
Las primeras ocho subclaves se calculan dividiendo la clave de entrada en bloques
de 16 bits. Las siguientes ocho se calculan rotando la clave de entrada 25 bits a la
izquierda y volviendo a dividirla, y as sucesivamente.
Las subclaves necesarias para descifrar se obtienen cambiando de orden las Z
i
y
calculando sus inversas para la suma o la multiplicaci on, seg un el cuadro 10.3. Pues-
to que 2
16
+ 1 es un n umero primo, nunca podremos obtener cero como producto
de dos n umeros, por lo que no necesitamos representar dicho valor. Cuando estemos
calculando productos, utilizaremos el cero para expresar el n umero 2
16
un uno se-
guido de 16 ceros. Esta representaci on es coherente puesto que los registros que se
emplean internamente en el algoritmo poseen unicamente 16 bits.
10.5. El algoritmo Rijndael (AES)
En octubre de 2000 el NIST (National Institute for Standards and Technology) anuncia-
ba ocialmente la adopci on del algoritmo Rijndael (pronunciado m as o menos como
reindal
3
) como nuevo Est andar Avanzado de Cifrado (AES) para su empleo en aplica-
ciones criptogr acas no militares, culminando as un proceso de m as de tres a nos,
3
Gracias a Sven Magnus por la aclaraci on.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.5. El algoritmo Rijndael (AES) 149
encaminado a proporcionar a la comunidad internacional un nuevo algoritmo de ci-
frado potente, eciente, y f acil de implementar. DES tena por n un sucesor.
La palabra Rijndael en adelante, para referirnos a este algoritmo, emplearemos
la denominaci on AES es un acr onimo formado por los nombres de sus dos autores,
los belgas Joan Daemen y Vincent Rijmen. Su inter es radica en que todo el proceso de
selecci on, revisi on y estudio tanto de este algoritmo como de los restantes candidatos,
se ha efectuado de forma p ublica y abierta, por lo que, pr acticamente por primera
vez, toda la comunidad criptogr aca mundial ha participado en su an alisis, lo cual
convierte a Rijndael en un algoritmo perfectamente digno de la conanza de todos.
AES es un sistema de cifrado por bloques, dise nado para manejar longitudes de
clave y de bloque variables, ambas comprendidas entre los 128 y los 256 bits. Reali-
za varias de sus operaciones internas a nivel de byte, interpretando estos como ele-
mentos de un cuerpo de Galois GF(2
8
) (ver secci on 5.8.1). El resto de operaciones se
efect uan en t erminos de registros de 32 bits. Sin embargo, en algunos casos, una se-
cuencia de 32 bits se toma como un polinomio de grado inferior a 4, cuyos coecientes
son a su vez polinomios en GF(2
8
).
Si bien, como ya se ha dicho, este algoritmo soporta diferentes tama nos de bloque
y clave, en el est andar adoptado por el Gobierno Estadounidense en noviembre de
2001 (FIPS PUB 197), se especica una longitud ja de bloque de 128 bits (N
b
= 4,
como se ver a m as adelante), y la longitud de clave a escoger entre 128, 192 y 256 bits.
10.5.1. Estructura de AES
AES, a diferencia de algoritmos como DES, no posee estructura de red de Feistel.
En su lugar se ha denido cada ronda como una composici on de cuatro funciones
invertibles diferentes, formando tres capas, dise nadas para proporcionar resistencia
frente a criptoan alisis lineal y diferencial. Cada una de las funciones tiene un prop osi-
to preciso:
La capa de mezcla lineal funciones DesplazarFila y MezclarColumnas permite
obtener un alto nivel de difusi on a lo largo de varias rondas.
La capa no lineal funci on ByteSub consiste en la aplicaci on paralela de s-cajas
con propiedades optimas de no linealidad.
La capa de adici on de clave es un simple or-exclusivo entre el estado intermedio y
la subclave correspondiente a cada ronda.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
150 10. Cifrados por Bloques
a
0,0
a
0,1
a
0,2
a
0,3
a
0,4
a
1,0
a
1,1
a
1,2
a
1,3
a
1,4
a
2,0
a
2,1
a
2,2
a
2,3
a
2,4
a
3,0
a
3,1
a
3,2
a
3,3
a
3,4
Cuadro 10.4: Ejemplo de matriz de estado con N
b
=5 (160 bits).
k
0,0
k
0,1
k
0,2
k
0,3
k
1,0
k
1,1
k
1,2
k
1,3
k
2,0
k
2,1
k
2,2
k
2,3
k
3,0
k
3,1
k
3,2
k
3,3
Cuadro 10.5: Ejemplo de clave con N
k
=4 (128 bits).
10.5.2. Elementos de AES
AES es un algoritmo que se basa en aplicar un n umero determinado de rondas
a un valor intermedio que se denomina estado. Dicho estado puede representarse
mediante una matriz rectangular de bytes, que posee cuatro las, y N
b
columnas.
As, por ejemplo, si nuestro bloque tiene 160 bits (cuadro 10.4), N
b
ser a igual a 5.
La llave tiene una estructura an aloga a la del estado, y se representar a mediante
una tabla con cuatro las y N
k
columnas. Si nuestra clave tiene, por ejemplo, 128 bits,
N
k
ser a igual a 4 (cuadro 10.5).
En algunos casos, tanto el estado como la clave se consideran como vectores de
registros de 32 bits, estando cada registro constituido por los bytes de la columna
correspondiente, ordenados de arriba a abajo.
El bloque que se pretende cifrar o descifrar se traslada directamente byte a byte
sobre la matriz de estado, siguiendo la secuencia a
0,0
, a
1,0
, a
2,0
, a
3,0
, a
0,1
. . ., y an aloga-
mente, los bytes de la clave se copian sobre la matriz de clave en el mismo orden, a
saber, k
0,0
, k
1,0
, k
2,0
, k
3,0
, k
0,1
. . ..
Siendo B el bloque que queremos cifrar, y S la matriz de estado, el algoritmo AES
con n rondas queda como sigue:
1. Calcular K
0
, K
1
, . . . K
n
subclaves a partir de la clave K.
2. S B K
0
3. Para i = 1 hasta n hacer
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.5. El algoritmo Rijndael (AES) 151
N
b
= 4 (128 bits) N
b
= 6 (192 bits) N
b
= 8 (256 bits)
N
k
= 4 (128 bits) 10 12 14
N
k
= 6 (192 bits) 12 12 14
N
k
= 8 (256 bits) 14 14 14
Cuadro 10.6: N umero de rondas para AES en funci on de los tama nos de clave y blo-
que.
4. Aplicar ronda i esima del algoritmo con la subclave K
i
.
Puesto que cada ronda es una sucesi on de funciones invertibles, el algoritmo de
descifrado consistir a en aplicar las inversas de cada una de las funciones en el orden
contrario, y utilizar los mismos K
i
que en el cifrado, s olo que comenzando por el
ultimo.
10.5.3. Las Rondas de AES
Puesto que AES permite emplear diferentes longitudes tanto de bloque como de
clave, el n umero de rondas requerido en cada caso es variable. En el cuadro 10.6 se
especica cu antas rondas son necesarias en funci on de N
b
y N
k
.
Siendo S la matriz de estado, y K
i
la subclave correspondiente a la ronda i esima,
cada una de las rondas posee la siguiente estructura:
1. S ByteSub(S)
2. S DesplazarFila(S)
3. S MezclarColumnas(S)
4. S K
i
S
La ultima ronda es igual a las anteriores, pero eliminando el paso 3.
Funci on ByteSub
La transformaci on ByteSub es una sustituci on no lineal que se aplica a cada byte de
la matriz de estado, mediante una s-caja 8*8 invertible, que se obtiene componiendo
dos transformaciones:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
152 10. Cifrados por Bloques
N
b
c
1
c
2
c
3
4 1 2 3
6 1 2 3
8 1 3 4
Cuadro 10.7: Valores de c
i
seg un el tama no de bloque N
b
1. Cada byte es considerado como un elemento del GF(2
8
) que genera el poli-
nomio irreducible m(x) = x
8
+ x
4
+ x
3
+ x + 1, y sustituido por su inversa
multiplicativa. El valor cero queda inalterado.
2. El siguiente paso consiste en aplicar la siguiente transformaci on afn en GF(2),
siendo x
0
, x
1
, . . . , x
7
los bits del byte correspondiente, e y
0
, y
1
, . . . , y
7
los del re-
sultado:
_
_
y
0
y
1
y
2
y
3
y
4
y
5
y
6
y
7
_
_
=
_
_
1 0 0 0 1 1 1 1
1 1 0 0 0 1 1 1
1 1 1 0 0 0 1 1
1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0
0 0 0 1 1 1 1 1
_
_
x
0
x
1
x
2
x
3
x
4
x
5
x
6
x
7
_
_
+
_
_
1
1
0
0
0
1
1
0
_
_
La funci on inversa de ByteSub sera la aplicaci on de la inversa de la s-caja corres-
pondiente a cada byte de la matriz de estado.
Funci on DesplazarFila
Esta transformaci on consiste en desplazar a la izquierda cclicamente las las de
la matriz de estado. Cada la f
i
se desplaza un n umero de posiciones c
i
diferente.
Mientras que c
0
siempre es igual a cero (esta la siempre permanece inalterada), el
resto de valores viene en funci on de N
b
y se reeja en el cuadro 10.7.
La funci on inversa de DesplazarFila ser a, obviamente, un desplazamiento de las
las de la matriz de estado el mismo n umero de posiciones que en el cuadro 10.7,
pero a la derecha.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.5. El algoritmo Rijndael (AES) 153
Funci on MezclarColumnas
Para esta funci on, cada columna del vector de estado se considera un polinomio
cuyos coecientes pertenecen a GF(2
8
) es decir, son tambi en polinomios y se mul-
tiplica m odulo x
4
+ 1 por:
c(x) = 03x
4
+ 01x
2
+ 01x + 02
donde 03 es el valor hexadecimal que se obtiene concatenando los coecientes bina-
rios del polinomio correspondiente en GF(2
8
), en este caso 00000011, o sea, x + 1, y
as sucesivamente.
La inversa de MezclarColumnas se obtiene multiplicando cada columna de la ma-
triz de estado por el polinomio:
d(x) = 0Bx
4
+ 0Dx
2
+ 09x + 0E
10.5.4. C alculo de las Subclaves
Las diferentes subclaves K
i
se derivan de la clave principal K mediante el uso de
dos funciones: una de expansi on y otra de selecci on. Siendo n el n umero de rondas
que se van a aplicar, la funci on de expansi on permite obtener, a partir del valor de K,
una secuencia de 4(n+1)N
b
bytes. La selecci on simplemente toma consecutivamente
de la secuencia obtenida bloques del mismo tama no que la matriz de estado, y los va
asignando a cada K
i
.
Sea K(i) un vector de bytes de tama no 4 N
k
, conteniendo la clave, y sea W(i) un
vector de N
b
(n + 1) registros de 4 bytes, siendo n el n umero de rondas. La funci on
de expansi on tiene dos versiones, seg un el valor de N
k
:
a) Si N
k
6:
1. Para i desde 0 hasta N
k
1 hacer
2. W(i) (K(4 i), K(4 i + 1), K(4 i + 2), K(4 i + 3))
3. Para i desde N
k
hasta N
b
(n + 1) hacer
4. tmp W(i 1)
5. Si i mod N
k
= 0
6. tmp Sub(Rot(tmp)) Rc(i/N
k
)
7. W(i) W(i N
k
) tmp
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
154 10. Cifrados por Bloques
b) Si N
k
> 6:
1. Para i desde 0 hasta N
k
1 hacer
2. W(i) (K(4 i), K(4 i + 1), K(4 i + 2), K(4 i + 3))
3. Para i desde N
k
hasta N
b
(n + 1) hacer
4. tmp W(i 1)
5. Si i mod N
k
= 0
6. tmp Sub(Rot(tmp)) Rc(i/N
k
)
7. Si i mod N
k
= 4
8. tmp Sub(tmp)
9. W(i) W(i N
k
) tmp
En los algoritmos anteriores, la funci on Sub devuelve el resultado de aplicar la
s-caja de AES a cada uno de los bytes del registro de cuatro que se le pasa como
par ametro. La funci on Rot desplaza a la izquierda una posici on los bytes del regis-
tro, de tal forma que si le pasamos como par ametro el valor (a, b, c, d) nos devuelve
(b, c, d, a). Finalmente, Rc(j) es una constante denida de la siguiente forma:
Rc(j) = (R(j), 0, 0, 0)
Cada R(i) es el elemento de GF(2
8
) correspondiente al valor x
(i1)
, m odulo
x
8
+x
4
+x
3
+x + 1.
10.5.5. Seguridad de AES
Seg un sus autores, es altamente improbable que existan claves d ebiles o semid ebi-
les en AES, debido a la estructura de su dise no, que busca eliminar la simetra en las
subclaves. Tambi en se ha comprobado que es resistente a criptoan alisis tanto lineal
como diferencial (ver secci on 10.7). En efecto, el m etodo m as eciente conocido has-
ta la fecha para recuperar la clave a partir de un par texto cifradotexto claro es la
b usqueda exhaustiva, por lo que podemos considerar a este algoritmo uno de los
m as seguros en la actualidad.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.6. Modos de Operaci on para Algoritmos de Cifrado por Bloques 155
8
4
5 0 0 0 0
0
0
0 0
0 0 0 0 0 0
Bytes pertenecientes al mensaje
Bytes aadidos
Figura 10.5: Relleno (padding) de los bytes del ultimo bloque al emplear un algoritmo
de cifrado por bloques.
10.6. Modos de Operaci on para Algoritmos de Cifrado
por Bloques
En esta secci on comentaremos algunos m etodos para aplicar cifrados por bloques
a mensajes de gran longitud. En primer lugar, independientemente del m etodo em-
pleado para codicar, hemos de tener en cuenta lo que ocurre cuando la longitud de
la cadena que queremos cifrar no es un m ultiplo exacto del tama no de bloque. En-
tonces tenemos que a nadir informaci on al nal para que s lo sea. El mecanismo m as
sencillo consiste en rellenar con ceros (o alg un otro patr on) el ultimo bloque que se
codica. El problema ahora consiste en saber cuando se descifra por d onde hay que
cortar. Lo que se suele hacer es a nadir como ultimo byte del ultimo bloque el n umero
de bytes que se han a nadido (ver gura 10.5). Esto tiene el inconveniente de que si
el tama no original es m ultiplo del bloque, hay que alargarlo con otro bloque entero.
Por ejemplo, si el tama no de bloque fuera 64 bits, y nos sobraran cinco bytes al -
nal, a nadiramos dos ceros y un tres, para completar los ocho bytes necesarios en el
ultimo bloque. Si por contra no sobrara nada, tendramos que a nadir siete ceros y un
ocho.
10.6.1. Modo ECB
El modo ECB (Electronic Codebook) es el m etodo m as sencillo y obvio de aplicar un
algoritmo de cifrado por bloques. Simplemente se subdivide la cadena que se quiere
codicar en bloques del tama no adecuado y se cifran todos ellos empleando la misma
clave.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
156 10. Cifrados por Bloques
A favor de este m etodo podemos decir que permite codicar los bloques indepen-
dientemente de su orden, lo cual es adecuado para codicar bases de datos o cheros
en los que se requiera un acceso aleatorio. Tambi en es resistente a errores, pues si uno
de los bloques sufriera una alteraci on, el resto quedara intacto.
Por contra, si el mensaje presenta patrones repetitivos, el texto cifrado tambi en
los presentar a, y eso es peligroso, sobre todo cuando se codica informaci on muy
redundante (como cheros de texto), o con patrones comunes al inicio y nal (co-
mo el correo electr onico). Un contrincante puede en estos casos efectuar un ataque
estadstico y extraer bastante informaci on.
Otro riesgo bastante importante que presenta el modo ECB es el de la sustituci on
de bloques. El atacante puede cambiar un bloque sin mayores problemas, y alterar los
mensajes incluso desconociendo la clave y el algoritmo empleados. Simplemente se
escucha una comunicaci on de la que se conozca el contenido, como por ejemplo una
transacci on bancaria a nuestra cuenta corriente. Luego se escuchan otras comunica-
ciones y se sustituyen los bloques correspondientes al n umero de cuenta del bene-
ciario de la transacci on por la versi on codicada de nuestro n umero (que ni siquiera
nos habremos molestado en descifrar). En cuesti on de horas nos habremos hecho ri-
cos.
10.6.2. Modo CBC
El modo CBC (Cipher Book Chaining Mode) incorpora un mecanismo de retroali-
mentaci on en el cifrado por bloques. Esto signica que la codicaci on de bloques an-
teriores condiciona la codicaci on del actual, por lo que ser a imposible sustituir un
bloque individual en el mensaje cifrado. Esto se consigue efectuando una operaci on
XOR entre el bloque del mensaje que queremos codicar y el ultimo criptograma ob-
tenido (ver gura 10.6). Para cifrar el primer bloque, se emplea el denominado vector
de inicalizaci on (V.I.), que deber a ser conocido por ambos interlocutores.
Este m etodo evita que un atacante inserte o cambie bloques del mensaje. Sin em-
bargo, cualquier alteraci on en la transmisi on, ya sea por bloques err oneos, perdidos
o insertados, hace que todo el mensaje a partir del primer error se descifre de forma
incorrecta. No resulta apto tampoco para descifrar bloques individuales del mensaje,
ya que para poder descifrar uno ser a necesario haber decodicado todos los anterio-
res.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.6. Modos de Operaci on para Algoritmos de Cifrado por Bloques 157
E
K
E
K
E
K
K
D
C
n
n
M
M
C
n
n
A.
M M
C C
1 2
1 2
V.I.
V.I.
K K
D D
M M
C C
1 2
2 1
B.
Figura 10.6: Modo de operaci on CBC. A: cifrado, B: descifrado. V.I.: Vector de Inicia-
cizaci on.
10.6.3. Modo CFB
El modo de operaci on CFB (Cipher-Feedback), cada bloque es cifrado y luego com-
binado, mediante la operaci on XOR, con el siguiente bloque del mensaje original. Al
igual que en el modo CBC, se emplea un vector de inicializaci on a la hora de codicar
el primer bloque. Con este m etodo, a diferencia de lo que ocurra con el modo CBC,
si se produce un error, este no se propaga a toda la secuencia, sino que se vuelve a
sincronizar de forma autom atica, a partir del segundo bloque consecutivo que llegue
de forma correcta.
Una ventaja importante de este modo de operaci on radica en el hecho de que
la longitud de los bloques del mensaje puede ser menor que la longitud de bloque
que acepta el algoritmo de cifrado, por lo que es apto para ser usado en situaciones
en las que se requiere enviar la informaci on en peque nos paquetes, como por ejemplo
cuando se quiere cifrar la comunicaci on de una computadora con un terminal remoto
teclado y monitor. Tambi en es destacable que, tanto para codicar como a la hora
de descifrar, se usa unicamente la operaci on de cifrado del algoritmo por bloques
correspondiente.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
158 10. Cifrados por Bloques
E
K
M
1
1
C
E
K
E
K
E
K
E
K
E
K
V.I.
C C C
M M M
2 1 n
n 2 1
V.I.
C C
M M
2 n
n 2
A. B.
Figura 10.7: Esquema del modo de operaci on CFB. A: cifrado, B: descifrado. V.I.:
Vector de Iniciacizaci on.
10.6.4. Otros Modos
Otro modo de operaci on interesante es el llamado OFB (Output-Feedback). En rea-
lidad, este m etodo genera una una secuencia de bloques totalmente independiente
del mensaje, que luego se combina con este ultimo bit a bit. Esto es en realidad lo que
se conoce por cifrado de ujo, que veremos con detalle en el captulo 11. En concreto,
el modo de operaci on OFB, ser a comentado en la secci on 11.4.1.
Aparte de los aqu comentados, existen otros modos de operaci on sobre algorit-
mos de cifrado por bloques, cada uno de ellos adaptado a las diferentes necesidades
que surgen en distintas aplicaciones concretas.
10.7. Criptoan alisis de Algoritmos de cifrado por Blo-
ques
Se podra decir que el criptoan alisis se comenz o a estudiar seriamente con la apa-
rici on de DES. Mucha gente desconaba (y a un desconfa) del algoritmo propuesto
por la NSA. Se dice que existen estructuras extra nas, que muchos consideran senci-
llamente puertas traseras colocadas por la Agencia para facilitarles la decodicaci on
de los mensajes. Nadie ha podido a un demostrar ni desmentir este punto. Lo unico
cierto es que el inter es por buscar posibles debilidades en el ha llevado a desarrollar
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
10.7. Criptoan alisis de Algoritmos de cifrado por Bloques 159
t ecnicas que posteriormente han tenido exito con otros algoritmos.
Ni que decir tiene que estos m etodos no han conseguido doblegar a DES, pero
s representan mecanismos signicativamente m as ecientes que la fuerza bruta para
criptoanalizar un mensaje. Los dos m etodos que vamos a comentar parten de que
disponemos de grandes cantidades de pares texto claro-texto cifrado obtenidos con
la clave que queremos descubrir.
10.7.1. Criptoan alisis Diferencial
Descubierto por Biham y Shamir en 1990, permite efectuar un ataque de texto
claro escogido a DES que resulta m as eciente que la fuerza bruta. Se basa en el
estudio de los pares de criptogramas que surgen cuando se codican dos textos claros
con diferencias particulares, analizando la evoluci on de dichas diferencias a lo largo
de las rondas de DES.
Para llevar a cabo un criptoan alisis diferencial se toman dos mensajes cualesquie-
ra (incluso aleatorios) id enticos salvo en un n umero concreto de bits. Usando las dife-
rencias entre los textos cifrados, se asignan probabilidades a las diferentes claves de
cifrado. Conforme tenemos m as y m as pares, una de las claves aparece como la m as
probable. Esa ser a la clave buscada.
10.7.2. Criptoan alisis Lineal
El criptoan alisis lineal, descubierto por Mitsuru Matsui, basa su funcionamiento
en tomar algunos bits del texto claro y efectuar una operaci on XOR entre ellos, tomar
algunos del texto cifrado y hacerles lo mismo, y nalmente hacer un XOR de los dos
resultados anteriores, obteniendo un unico bit. Efectuando esa operaci on a una gran
cantidad de pares de texto claro y criptograma diferentes podemos ver si se obtienen
m as ceros o m as unos.
Si el algoritmo criptogr aco en cuesti on es vulnerable a este tipo de ataque, exis-
tir an combinaciones de bits que, bien escogidas, den lugar a un sesgo signicativo en
la medida anteriormente denida, es decir, que el n umero de ceros (o unos) es apre-
ciablemente superior. Esta propiedad nos va a permitir poder asignar mayor proba-
bilidad a unas claves sobre otras y de esta forma descubrir la clave que buscamos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
160 10. Cifrados por Bloques
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 11
Cifrados de Flujo
En 1917, J. Mauborgne y G. Vernam inventaron un criptosistema perfecto seg un
el criterio de Shannon (ver secci on 3.8). Dicho sistema consista en emplear una se-
cuencia aleatoria de igual longitud que el mensaje, que se usara una unica vez lo
que se conoce en ingl es como onetime pad, combin andola mediante alguna fun-
ci on simple y reversible usualmente el or exclusivo con el texto en claro car acter
a car acter. Este m etodo presenta el grave inconveniente de que la clave es tan larga
como el propio mensaje, y si disponemos de un canal seguro para enviar la clave,
por qu e no emplearlo para transmitir el mensaje directamente?
Evidentemente, un sistema de Vernam carece de utilidad pr actica en la mayora
de los casos, pero supongamos que disponemos de un generador pseudoaleatorio
capaz de generar secuencias criptogr acamente aleatorias, de forma que la longitud de
los posibles ciclos sea extremadamente grande. En tal caso podramos, empleando la
semilla del generador como clave, obtener cadenas de bits de usar y tirar, y emplearlas
para cifrar mensajes simplemente aplicando la funci on xor entre el texto en claro y la
secuencia generada. Todo aquel que conozca la semilla podr a reconstruir la secuencia
pseudoaleatoria y de esta forma descifrar el mensaje.
En este captulo analizaremos algunos criptosistemas de clave privada que ex-
plotan esta idea. Dichos algoritmos no son m as que la especicaci on de un genera-
dor pseudoaleatorio, y permiten cifrar mensajes de longitud arbitraria, combinando
el mensaje con la secuencia mediante la operaci on or exclusivo byte a byte, en lugar
de dividirlos en bloques para codicarlos por separado. Como cabra esperar, estos
criptosistemas no proporcionan seguridad perfecta, ya que mientras en el cifrado de
Vernam el n umero de posibles claves era tan grande como el de posibles mensajes,
cuando empleamos un generador tenemos como mucho tantas secuencias distintas
como posibles valores iniciales de la semilla.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
162 11. Cifrados de Flujo
Existe una debilidad intrnseca a todos los m etodos de cifrado de ujo que vale la
pena destacar: si un atacante conoce parte del texto claro, podr a sustituirlo por otro
sin que lo advierta el legtimo destinatario. Supongamos que m
i
es una porci on del
mensaje original conocida por el atacante, y c
i
el trozo de mensaje cifrado correspon-
diente a el. Sabemos que
c
i
= m
i
o
i
siendo o
i
el trozo de secuencia pseudoaleatoria que fue combinado con el texto en
claro. Haciendo el siguiente c alculo podemos obtener un valor c
i
:
c
i
= c
i
m
i
m
i
= o
i
m
i
Cuando el destinatario calcule c
i
o
i
, obtendr a el valor falso introducido por noso-
tros, m
i
, en lugar del texto en claro original. Esta circunstancia aconseja emplear los
m etodos de cifrado de ujo en combinaci on con m etodos que garanticen la integri-
dad del mensaje (ver captulo 13).
11.1. Secuencias Pseudoaleatorias
Como veamos en el captulo 8, los generadores criptogr acamente aleatorios tenan
la propiedad de que, a partir de una porci on de la secuencia arbitrariamente gran-
de, era computacionalmente intratable el problema de predecir el siguiente bit de
la secuencia. Adicionalmente, dijimos que no eran buenos como generadores aleato-
rios debido a que el conocimiento de la semilla nos permitira regenerar la secuencia
por completo. Evidentemente, en el caso que nos ocupa, esta caracterstica se conver-
tir a en una ventaja, ya que es precisamente lo que necesitamos: que por un lado no
pueda calcularse la secuencia completa a partir de una porci on de esta, y que a la
vez pueda regenerarse completamente conociendo una pieza de informaci on como
la semilla del generador.
11.2. Tipos de Generadores de Secuencia
Los generadores que se emplean como cifrado de ujo pueden dividirse en dos
grandes grupos, dependiendo de los par ametros que se empleen para calcular el va-
lor de cada porci on de la secuencia. Comentaremos brevemente en esta secci on sus
caractersticas b asicas.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
11.2. Tipos de Generadores de Secuencia 163
11.2.1. Generadores Sncronos
Un generador sncrono es aquel en el que la secuencia es calculada de forma inde-
pendiente tanto del texto en claro como del texto cifrado. En el caso general, ilustrado
en la gura 11.1(a), viene dado por las siguientes ecuaciones:
s
i+1
= g(s
i
, k)
o
i
= h(s
i
, k)
c
i
= w(m
i
, o
i
)
(11.1)
Donde k es la clave, s
i
es el estado interno del generador, s
0
es el estado inicial, o
i
es la salida en el instante i, m
i
y c
i
son la i esima porci on del texto claro y cifrado
respectivamente, y w es una funci on reversible, usualmente or exclusivo. En muchos
casos, la funci on h depende unicamente de s
i
, siendo k = s
0
.
Cuando empleamos un generador de estas caractersticas, necesitamos que tanto
el emisor como el receptor est en sincronizados para que el texto pueda descifrarse.
Si durante la transmisi on se pierde o inserta alg un bit, ya no se estar a aplicando en
el receptor un xor con la misma secuencia, por lo que el resto del mensaje ser a impo-
sible de descifrar. Esto nos obliga a emplear tanto t ecnicas de vericaci on como de
restablecimiento de la sincrona.
Otro problema muy com un con este tipo de t ecnicas es que si alg un bit del cripto-
grama es alterado, la sincronizaci on no se pierde, pero el texto claro se ver a modica-
do en la misma posici on. Esta caracterstica podra permitir a un atacante introducir
cambios en nuestros mensajes, simplemente conociendo qu e bits debe alterar. Para
evitar esto, deben emplearse mecanismos de vericaci on que garanticen la integri-
dad del mensaje recibido, como las funciones resumen (ver captulo 13).
11.2.2. Generadores Asncronos
Un generador de secuencia asncrono o auto-sincronizado es aquel en el que la se-
cuencia generada es funci on de una semilla, m as una cantidad ja de los bits anterio-
res de la propia secuencia, como puede verse en la gura 11.1(b). Formalmente:
o
i
= h(k, c
it
, c
it+1
, . . . , c
i1
)
c
i
= w(o
i
, m
i
)
(11.2)
Donde k es la clave, m
i
y c
i
son la i esima porci on del texto claro y cifrado respecti-
vamente y w es una funci on reversible. Los valores c
t
, c
t+1
, . . . , c
1
constituyen el
estado inicial del generador.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
164 11. Cifrados de Flujo
m
i
m
i
c
i
c
i
c
i
o
i
o
i
A B
g
h
w
i+1
s
s
i
K K
w
h
Figura 11.1: Esquema de generadores de secuencia: A: generador sncrono. B: gene-
rador asncrono.
Esta familia de generadores es resistente a la p erdida o inserci on de informaci on,
ya que acaba por volver a sincronizarse autom aticamente, en cuanto llegan t bloques
correctos de forma consecutiva. Tambi en ser a sensible a la alteraci on de un mensaje,
ya que si se modica la unidad de informaci on c
i
, el receptor tendr a valores err oneos
de entrada en su funci on h hasta que se alcance el bloque c
i+t
, momento a partir del
cual la transmisi on habr a recuperado la sincronizaci on. En cualquier caso, al igual
que con los generadores sncronos, habr a que introducir mecanismos de vericaci on.
Una propiedad interesante de estos generadores es la dispersi on de las propieda-
des estadsticas del texto claro a lo largo de todo el mensaje cifrado, ya que cada dgito
del mensaje inuye en todo el criptograma. Esto hace que los generadores asncronos
se consideren en general m as resistentes frente a ataques basados en la redundancia
del texto en claro.
11.3. Registros de Desplazamiento Retroalimentados
Los registros de desplazamiento retroalimentados (feedback shift registers, o FSR en
ingl es) son la base de muchos generadores de secuencia para cifrados de ujo. Dedi-
caremos esta secci on a analizar su estructura b asica y algunas de sus propiedades.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
11.3. Registros de Desplazamiento Retroalimentados 165
11.3.1. Registros de Desplazamiento Retroalimentados Lineales
Estos registros, debido a que permiten generar secuencias con perodos muy gran-
des y con buenas propiedades estadsticas, adem as de su bien conocida estructura al-
gebraica y su facilidad para ser implementados por hardware, se encuentran presentes
en muchos de los generadores de secuencia propuestos en la literatura.
Un registro de desplazamiento retroalimentado lineal L es un conjunto de L estados,
S
0
, S
1
, . . . , S
L1
, capaces de almacenar un bit cada uno (g 11.2.a). Esta estructura
viene controlada por un reloj que controla los ujos de informaci on entre los estados.
Durante cada unidad de tiempo se efect uan las siguientes operaciones:
1. El contenido de S
0
es la salida del registro.
2. El contenido de S
i
es desplazado al estado S
i1
, para 1 i L 1.
3. El contenido de S
L1
se calcula como la suma m odulo 2 de los valores de un
subconjunto prejado de L.
Un generador de estas caractersticas devolver a, en funci on de los valores iniciales
de los estados, y del subconjunto concreto de L empleado en el paso 3, una secuencia
de salidas de car acter peri odico en algunos casos, la secuencia ser a peri odica si
ignoramos una cierta cantidad de bits al principio.
11.3.2. Registros de Desplazamiento Retroalimentados No Lineales
Un registro de desplazamiento retroalimentado general (o no lineal) L es un conjunto
de L estados, S
0
, S
1
, . . . , S
L1
, capaces de almacenar un bit cada uno (g 11.2.b).
Durante cada unidad de tiempo se efect uan las siguientes operaciones:
1. El contenido de S
0
es la salida del registro.
2. El contenido de S
i
es desplazado al estado S
i1
, para 1 i L 1.
3. El contenido de S
L1
se calcula como una funci on booleana
f(S
j1
, S
j2
, . . . , S
jL
),
donde S
ji
es el contenido del registro S
Li
en el estado anterior.
Obs ervese que si sustituimos la funci on f en un registro de esta naturaleza por la
suma m odulo 2 de un subconjunto de L, obtenemos un registro de desplazamiento
lineal.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
166 11. Cifrados de Flujo
Salida
S S
L1 L2 0
S
1
S
f
B
A
Salida
S S
L1 L2 0
S
1
S
r
0
r
1 L1
r r
L2
Figura 11.2: Registros de Desplazamiento Retroalimentados: A: Registro lineal, en
el que cerrando el circuito en los puntos r
0
a r
L1
se puede seleccionar qu e estados
se emplear an para calcular el nuevo valor de S
L1
. B: Registro no lineal, donde se
emplea una funci on f gen erica.
11.3.3. Combinaci on de Registros de Desplazamiento
En la mayora de los casos, los registros de desplazamiento retroalimentados no
lineales presentan unas mejores condiciones como generadores de secuencia que los
generadores de tipo lineal. Sin embargo, la extrema facilidad de implementaci on por
hardware de estos ultimos ha llevado a los dise nadores a estudiar diferentes combina-
ciones de registros lineales, de tal forma que se puedan obtener secuencias mejores.
En general, se emplearan n generadores lineales y una funci on f no lineal para
combinar sus salidas, de tal forma que cada bit de la secuencia se obtendra mediante
la expresi on
f(R
1
, R
2
, . . . , R
n
) (11.3)
siendo R
i
la salida del i esimo registro de desplazamiento lineal.
11.4. Otros Generadores de Secuencia
Si bien los registros de desplazamiento son muy interesantes para generar secuen-
cias mediante hardware, en realidad no son especialmente f aciles de implementar, ni
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
11.4. Otros Generadores de Secuencia 167
E
K
E
K
E
K
V.I.
n 1 2
o o o
Figura 11.3: Esquema del modo de operaci on OFB, para emplear algoritmos de cifra-
do por bloques como generadores de secuencia sncronos para cifrados de ujo.
ecientes, si se usan por software. Esto ha llevado a la comunidad a proponer algorit-
mos de generaci on de secuencia especialmente pensados para ser incorporados por
software. Nosotros vamos a comentar dos de ellos: RC4 y SEAL.
11.4.1. Cifrados por Bloques en Modo OFB
Existe un modo de operaci on (ver secci on 10.6) sobre algoritmos de cifrado por
bloques que puede usarse como generador sncrono, ya que genera, de forma to-
talmente independiente del mensaje, una secuencia pseudoaleatoria basada en una
clave. En la gura 11.3 podemos ver c omo a partir de una clave K, y de un vector
de inicializaci on (V.I.), estos algoritmos nos permiten generar una secucencia o
i
de
bloques perfectamente v alida para ser empleada dentro de un esquema de cifrado de
ujo.
11.4.2. Algoritmo RC4
El algoritmo RC4 fue dise nado por Ron Rivest en 1987 para la compa na RSA Data
Security. Su implementaci on es extremadamente sencilla y r apida, y est a orientado a
generar secuencias en unidades de un byte, adem as de permitir claves de diferentes
longitudes. Por desgracia es un algoritmo propietario, lo cual implica que no puede
ser incluido en aplicaciones de tipo comercial sin pagar los royalties correspondientes.
El c odigo del algoritmo no se ha publicado nunca ocialmente, pero en 1994 al-
guien difundi o en los grupos de noticias de Internet una descripci on que, como poste-
riormente se ha comprobado, genera las mismas secuencias. Dicha descripci on consta
de una S-Caja de 8*8, que almacenar a una permutaci on del conjunto 0, . . . , 255. Dos
contadores i y j se ponen a cero. Luego, cada byte O
r
de la secuencia se calcula como
sigue:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
168 11. Cifrados de Flujo
1. i = (i + 1) mod 256
2. j = (j +S
i
) mod 256
3. Intercambiar los valores de S
i
y S
j
4. t = (S
i
+S
j
) mod 256
5. O
r
= S
t
Para calcular los valores iniciales de la S-Caja, se hace lo siguiente:
1. S
i
= i 0 i 255
2. Rellenar el array K
0
a K
255
repitiendo la clave tantas veces
como sea necesario.
3. j = 0
4. Para i = 0 hasta 255 hacer:
j = (j +S
i
+K
i
) mod 256
Intercambiar S
i
y S
j
.
El algoritmo RC4 genera secuencias en las que los ciclos son bastante grandes, y
es inmune a los criptoan alisis diferencial y lineal, si bien algunos estudios indican
que puede poseer claves d ebiles, y que es sensible a estudios analticos del contenido
de la S-Caja. De hecho, algunos arman que en una de cada 256 claves posibles, los
bytes que se generan tienen una fuerte correlaci on con un subconjunto de los bytes
de la clave, lo cual es un comportamiento muy poco recomendable.
A pesar de las dudas que existen en la actualidad sobre su seguridad, es un algo-
ritmo ampliamente utilizado en muchas aplicaciones de tipo comercial.
11.4.3. Algoritmo SEAL
SEAL es un generador de secuencia dise nado en 1993 para IBM por Phil Rogaway
y Don Coppersmith, cuya estructura est a especialmente pensada para funcionar de
manera eciente en computadores con una longitud de palabra de 32 bits. Su fun-
cionamiento se basa en un proceso inicial en el que se calculan los valores para unas
tablas a partir de la clave, de forma que el cifrado propiamente dicho puede llevarse a
cabo de una manera realmente r apida. Por desgracia, tambi en es un algoritmo sujeto
a patentes.
Una caracterstica muy util de este algoritmo es que no se basa en un sistema
lineal de generaci on, sino que dene una familia de funciones pseudoaleatorias, de tal
forma que se puede calcular cualquier porci on de la secuencia suministrando unica-
mente un n umero entero n de 32 bits. La idea es que, dado ese n umero, junto con la
clave k de 160 bits, el algoritmo genera un bloque k(n) de L bits de longitud. De esa
forma, cada valor de k da lugar a una secuencia total de L 2
32
bits, compuesta por la
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
11.4. Otros Generadores de Secuencia 169
yuxtaposici on de los bloques k(0), k(1), . . . , k(2
32
1).
SEAL se basa en el empleo del algoritmo SHA (ver secci on 13.5) para generar las
tablas que usa internamente. De hecho, existen dos versiones del algoritmo, la 1.0 y
la 2.0, que se diferencian precisamente en que la primera emplea SHA y la segunda
su versi on revisada, SHA-1.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
170 11. Cifrados de Flujo
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 12
Cifrados Asim etricos
Los algoritmos asim etricos o de llave p ublica han demostrado su inter es para ser
empleados en redes de comunicaci on inseguras (Internet). Introducidos por Whit-
eld Dife y Martin Hellman a mediados de los a nos 70, su novedad fundamental
con respecto a la criptografa sim etrica es que las claves no son unicas, sino que
forman pares. Hasta la fecha han aparecido multitud de algoritmos asim etricos, la
mayora de los cuales son inseguros; otros son poco pr acticos, bien sea porque el
criptograma es considerablemente mayor que el mensaje original, bien sea porque
la longitud de la clave es enorme. Se basan en general en plantear al atacante pro-
blemas matem aticos difciles de resolver (ver captulo 5). En la pr actica muy pocos
algoritmos son realmente utiles. El m as popular por su sencillez es RSA, que ha so-
brevivido a multitud de ataques, si bien necesita una longitud de clave considerable.
Otros algoritmos son los de ElGamal y Rabin.
Los algoritmos asim etricos emplean generalmente longitudes de clave mucho ma-
yores que los sim etricos. Por ejemplo, mientras que para algoritmos sim etricos se
considera segura una clave de 128 bits, para algoritmos asim etricos si exceptua-
mos aquellos basados en curvas elpticas se recomiendan claves de al menos 1024
bits. Adem as, la complejidad de c alculo que comportan estos ultimos los hace consi-
derablemente m as lentos que los algoritmos de cifrado sim etricos. En la pr actica los
m etodos asim etricos se emplean unicamente para codicar la clave de sesi on (sim etri-
ca) de cada mensaje o transacci on particular.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
172 12. Cifrados Asim etricos
12.1. Aplicaciones de los Algoritmos Asim etricos
Los algoritmos asim etricos poseen dos claves diferentes en lugar de una, K
p
y
K
P
, denominadas clave privada y clave p ublica. Una de ellas se emplea para codicar,
mientras que la otra se usa para decodicar. Dependiendo de la aplicaci on que le
demos al algoritmo, la clave p ublica ser a la de cifrado o viceversa. Para que estos
criptosistemas sean seguros tambi en ha de cumplirse que a partir de una de las claves
resulte extremadamente difcil calcular la otra.
12.1.1. Protecci on de la Informaci on
Una de las aplicaciones inmediatas de los algoritmos asim etricos es el cifrado de
la informaci on sin tener que transmitir la clave de decodicaci on, lo cual permite su
uso en canales inseguros. Supongamos que A quiere enviar un mensaje a B (gura
12.1). Para ello solicita a B su clave p ublica K
P
. A genera entonces el mensaje cifra-
do E
K
P
(m). Una vez hecho esto unicamente quien posea la clave K
p
en nuestro
ejemplo, B podr a recuperar el mensaje original m.
N otese que para este tipo de aplicaci on, la llave que se hace p ublica es aquella que
permite codicar los mensajes, mientras que la llave privada es aquella que permite
descifrarlos.
12.1.2. Autenticaci on
La segunda aplicaci on de los algoritmos asim etricos es la autenticaci on de men-
sajes, con ayuda de funciones MDC (ver captulo 13), que nos permiten obtener una
rma digital a partir de un mensaje. Dicha rma es mucho m as peque na que el men-
saje original, y es muy difcil encontrar otro mensaje que d e lugar a la misma. Supon-
gamos que Arecibe un mensaje mde B y quiere comprobar su autenticidad. Para ello
B genera un resumen del mensaje r(m) (ver gura 12.2) y lo codica empleando la
clave de cifrado, que en este caso ser a privada. La clave de descifrado se habr a hecho
p ublica previamente, y debe estar en poder de A. B enva entonces a A el cripto-
grama correspondiente a r(m). A puede ahora generar su propia r
(m) y compararla
con el valor r(m) obtenido del criptograma enviado por B. Si coinciden, el mensaje
ser a aut entico, puesto que el unico que posee la clave para codicar es precisamente
B.
N otese que en este caso la clave que se emplea para cifrar es la clave privada, justo
al rev es que para la simple codicaci on de mensajes.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
12.1. Aplicaciones de los Algoritmos Asim etricos 173
Figura 12.1: Transmisi on de informaci on empleando algoritmos asim etricos. 1. B
enva a A su clave p ublica, K
P
; 2. A codica el mensaje y enva a B el criptograma
E
K
P
(m); 3. B decodica el criptograma empleando la clave privada K
p
.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
174 12. Cifrados Asim etricos
Figura 12.2: Autenticaci on de informaci on empleando algoritmos asim etricos. 1. A,
que posee la clave p ublica K
P
de B, recibe un mensaje y quiere autenticarlo; 2. B
genera el resumen r(m) enva a A el criptograma asociado E
K
p
(r(m)); 3. A genera
por su cuenta r
n
= [1 + mcd(e 1, p 1)] [1 + mcd(e 1, q 1)]
es el n umero de valores de m que quedan igual al ser codicados. Si hacemos que
p = 1 + 2p
y q = 1 + 2q
, con p
y q
+ 1), 2(q
+ 1), 3(p
+ 1), 3(p
+ 1), y (p
+ 1)(q
p
, con 2 p 2. Esta informaci on es p ublica y
conocida por ambos. El algoritmo queda como sigue:
1. A escoge un n umero aleatorio x, comprendido entre 1 y p 2 y enva a B el
valor
x
(mod p)
2. B escoge un n umero aleatorio y, an alogamente al paso anterior, y enva a A el
valor
y
(mod p)
3. B recoge
x
y calcula K = (
x
)
y
(mod p).
4. A recoge
y
y calcula K = (
y
)
x
(mod p).
Puesto que x e y no viajan por la red, al nal A y B acaban compartiendo el valor
de K, sin que nadie que capture los mensajes transmitidos pueda repetir el c alculo.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
12.4. Otros Algoritmos Asim etricos 183
12.4.2. Algoritmo de ElGamal
Fue dise nado en un principio para producir rmas digitales, pero posteriormente
se extendi o tambi en para codicar mensajes. Se basa en el problema de los logarit-
mos discretos, que est a ntimamente relacionado con el de la factorizaci on, y en el de
Dife-Hellman.
Para generar un par de llaves, se escoge un n umero primo n y dos n umeros alea-
torios p y x menores que n. Se calcula entonces
y = p
x
(mod n)
La llave p ublica es (p, y, n), mientras que la llave privada es x.
Escogiendo n primo, garantizamos que sea cual sea el valor de p, el conjunto
p, p
2
, p
3
. . . es una permutaci on del conjunto 1, 2, , n 1. N otese que esto no
es necesario para que el algoritmo funcione, por lo que podemos emplear realmen-
te un n no primo, siempre que el conjunto generado por las potencias de p sea lo
sucientemente grande.
Firmas Digitales de ElGamal
Para rmar un mensaje m basta con escoger un n umero k aleatorio, que sea primo
relativo con n 1, y calcular
a = p
k
(mod n)
b = (mxa)k
1
(mod (n 1))
(12.4)
La rma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en se-
creto y ser diferente cada vez. La rma se verica comprobando que
y
a
a
b
= p
m
(mod n) (12.5)
Cifrado de ElGamal
Para cifrar el mensaje m se escoge primero un n umero aleatorio k primo relativo
con (n1), que tambi en ser a mantenido en secreto. Calculamos entonces las siguien-
tes expresiones
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
184 12. Cifrados Asim etricos
a = p
k
(mod n)
b = y
k
m (mod n)
(12.6)
El par (a, b) es el texto cifrado, de doble longitud que el texto original. Para decodicar
se calcula
m = b a
x
(mod n) (12.7)
12.4.3. Algoritmo de Rabin
El sistema de llave asim etrica de Rabin se basa en el problema de calcular races
cuadradas m odulo un n umero compuesto. Este problema se ha demostrado que es
equivalente al de la factorizaci on de dicho n umero.
En primer lugar escogemos dos n umeros primos, p y q, ambos congruentes con
3 m odulo 4 (los dos ultimos bits a 1). Estos primos son la clave privada. La clave
p ublica es su producto, n = pq.
Para codicar un mensaje m, simplemente se calcula
c = m
2
(mod n) (12.8)
La decodicaci on del mensaje se hace calculando lo siguiente:
m
1
= c
(p+1)/4
(mod p)
m
2
= (p c
(p+1)/4
) (mod p)
m
3
= c
(q+1)/4
(mod q)
m
4
= (q c
(q+1)/4
) (mod q)
Luego se escogen a y b tales que a = q(q
1
(mod p)) y b = p(p
1
(mod q)). Los
cuatro posibles mensajes originales son
m
a
= (am
1
+bm
3
) (mod n)
m
b
= (am
1
+bm
4
) (mod n)
m
c
= (am
2
+bm
3
) (mod n)
m
d
= (am
2
+bm
4
) (mod n)
(12.9)
Desgraciadamente, no existe ning un mecanismo para decidir cu al de los cuatro es el
aut entico, por lo que el mensaje deber a incluir alg un tipo de informaci on para que el
receptor pueda distinguirlo de los otros.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
12.4. Otros Algoritmos Asim etricos 185
12.4.4. Algoritmo DSA
El algoritmo DSA (Digital Signature Algorithm) es una parte el est andar de rma
digital DSS (Digital Signature Standard). Este algoritmo, propuesto por el NIST, data
de 1991, es una variante del m etodo asim etrico de ElGamal.
Creaci on del par llave p ublica-llave privada
El algoritmo de generaci on de claves es el siguiente:
1. Seleccionar un n umero primo q tal que 2
159
< q < 2
160
.
2. Escoger t tal que 0 t 8, y seleccionar un n umero primo p tal que 2
511+64t
<
p < 2
512+64t
, y que adem as q sea divisor de (p 1).
3. Seleccionar un elemento g Z
p
y calcular = g
(p1)/q
mod p.
4. Si = 1 volver al paso 3.
5. Seleccionar un n umero entero aleatorio a, tal que 1 a q 1
6. Calcular y =
a
mod p.
7. La clave p ublica es (p, q, , y). La clave privada es a.
Generaci on y vericaci on de la rma
Siendo h la salida de una funci on MDC sobre el mensaje m, la generaci on de una
rma se hace mediante el siguiente algoritmo:
1. Seleccionar un n umero aleatorio k tal que 0 < k < q.
2. Calcular r = (
k
mod p) mod q.
3. Calcular k
1
mod q.
4. Calcular s = k
1
(h +ar) mod q.
5. La rma del mensaje m es el par (r, s).
El destinatario efectuar a las siguientes operaciones, suponiendo que conoce la
clave p ublica (p, q, , y), para vericar la autenticidad de la rma:
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
186 12. Cifrados Asim etricos
1. Vericar que 0 < r < q y 0 < s < q. En caso contrario, rechazar la rma.
2. Calcular el valor de h a partir de m.
3. Calcular = s
1
mod q.
4. Calcular u
1
= h mod q y u
2
= r mod q.
5. Calcular v = (
u
1
y
u
2
mod p) mod q.
6. Aceptar la rma si y s olo si v = r.
12.5. Criptografa de Curva Elptica
Como vimos en la secci on 6.4, para curvas elpticas existe un problema an alogo
al de los logaritmos discretos en grupos nitos de enteros. Esto nos va a permitir
trasladar cualquier algoritmo criptogr aco denido sobre enteros, y que se apoye en
este problema, al ambito de las curvas elpticas. La ventaja que se obtiene es que, con
claves m as peque nas, se alcanza un nivel de seguridad equiparable.
Debido a la relaci on existente entre ambos, muchos algoritmos que se apoyan en
el problema de la factorizaci on pueden ser replanteados para descansar sobre los
logaritmos discretos. De hecho, existen versiones de curva elptica de muchos de los
algoritmos asim etricos m as populares. A modo de ejemplo, en esta secci on veremos
c omo se redene el algoritmo de cifrado de ElGamal.
12.5.1. Cifrado de ElGamal sobre Curvas Elpticas
Sea un grupo de curva elptica, denido en GF(n) o GF(2
n
). Sea p un punto de
la curva. Sea el conjunto p), de cardinal n. Escogemos entonces un valor entero x
comprendido entre 1 y n 1, y calculamos
y = xp (12.10)
La clave p ublica vendr a dada por (p, y, n), y la clave privada ser a x.
El cifrado se har a escogiendo un n umero aleatorio k primo relativo con n. Segui-
damente calculamos las expresiones
a = kp
b = m+ky
(12.11)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
12.6. Ejercicios Resueltos 187
siendo mel mensaje original representado como un punto de la curva. El criptograma
ser a el par (a, b). Para descifrar, ser a suciente con calcular
m = (xa) +b (12.12)
12.6. Ejercicios Resueltos
1. Suponga un sistema RSA con los siguientes par ametros:
N = 44173
K
P
= 25277
C = 8767, 18584, 7557, 4510, 40818, 39760, 4510, 39760, 6813, 7557, 14747
a) Factorizar el m odulo N.
b) Calcular la llave privada K
p
.
c) Descifrar el mensaje C.
Soluci on:
a) Para factorizar N, basta con emplear el m etodo de tanteo (prueba y error) a
partir de la raz cuadrada de 44173, obteni endose que N = 271 163.
b) K
p
debe ser la inversa de K
P
m odulo (N) = 270 162 = 43740. Empleando
el Algoritmo Extendido de Euclides, llegamos a
K
p
= K
1
P
= 25277
1
(mod 43740) = 26633
c) El descifrado podemos llevarlo a cabo empleando el Algoritmo R apido de
Exponenciaci on:
c
0
= 8767 m
0
= 8767
K
p
(mod 44173) = 75
c
1
= 18584 m
1
= 18584
K
p
(mod 44173) = 114
c
2
= 7557 m
2
= 7557
K
p
(mod 44173) = 105
c
3
= 4510 m
3
= 4510
K
p
(mod 44173) = 112
c
4
= 40818 m
4
= 40818
K
p
(mod 44173) = 116
c
5
= 39760 m
5
= 39760
K
p
(mod 44173) = 111
c
6
= 4510 m
6
= 4510
K
p
(mod 44173) = 112
c
7
= 39760 m
7
= 39760
K
p
(mod 44173) = 111
c
8
= 6813 m
8
= 6813
K
p
(mod 44173) = 108
c
9
= 7557 m
9
= 7557
K
p
(mod 44173) = 105
c
10
= 14747 m
10
= 14747
K
p
(mod 44173) = 115
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
188 12. Cifrados Asim etricos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 13
Funciones Resumen
En el captulo 12 vimos que la criptografa asim etrica permite autenticar infor-
maci on, es decir, poder asegurar que un mensaje m proviene de un emisor A y no de
cualquier otro. Asimismo vimos que la autenticaci on deba hacerse empleando una
funci on resumen y no codicando el mensaje completo. En esencia, una funci on resu-
men (hash, en ingl es), proporciona una secuencia de bits de peque na longitud, que va
asociada al mensaje, y que debe resultar muy difcil de falsicar. Existen funciones
resumen que emplean en sus c alculos una clave adicional los denominados MAC
(message authentication code), que veremos en la secci on 13.7, y otras que no la usan,
denominadas gen ericamente MDC (modication detection codes).
13.1. Propiedades
Sabemos que un mensaje m puede ser autenticado codicando con la llave pri-
vada K
p
el resultado de aplicarle una funci on resumen, E
K
p
(r(m)). Esa informaci on
adicional (que denominaremos rma o signatura del mensaje m) s olo puede ser gene-
rada por el poseedor de la clave privada K
p
. Cualquiera que tenga la llave p ublica
correspondiente estar a en condiciones de decodicar y vericar la rma. Para que
sea segura, la funci on resumen r(x) debe cumplir adem as ciertas caractersticas:
r(m) es de longitud ja, independientemente de la longitud de m.
Dado m, es f acil calcular r(m).
Dado r(m), es computacionalmente intratable recuperar m.
Dado m, es computacionalmente intratable obtener un m
).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
190 13. Funciones Resumen
Estas propiedades son v alidas tanto para los MDC como para los MAC, con la
dicultad a nadida para estos ultimos de que el atacante deber a averiguar adem as la
clave correspondiente. De hecho, conocida la clave, un MAC se comporta exactamen-
te igual que un MDC.
13.2. Longitud Adecuada para una Signatura
Para decidir cu al debe ser la longitud apropiada de una signatura, veamos prime-
ro el siguiente ejemplo: Cu al es la cantidad n de personas que hay que poner en una
habitaci on para que la probabilidad P de que el cumplea nos de una de ellas sea el
mismo da que el mo supere el 50 %? Sabemos que cuando n = 1, P =
1
365
. Cuando
n = 2, la probabilidad de que ning un cumplea nos coincida con el nuestro es el produc-
to de la probabilidad de que no coincida el primero, por la probabilidad de que no
coincida el segundo, luego:
P = 1
364
365
364
365
En el caso general,
P = 1
_
364
365
_
n
Para que P > 0,5, n debe ser al menos igual a 253. Sin embargo, cu al sera la canti-
dad de gente necesaria para que la probabilidad Q de que dos personas cualesquie-
ra tengan el mismo cumplea nos supere el 50 %? Las dos primeras personas (o sea,
cuando n = 2) tienen una probabilidad
364
365
de no compartir el cumplea nos; una terce-
ra, supuesto que las dos primeras no lo comparten, tiene una probabilidad
363
365
de no
compartirlo con las otras dos, por lo que tenemos
364363
365365
, y as sucesivamente. En el
caso general nos queda
Q = 1
_
364 363 . . . (365 n + 1)
365
(n1)
_
con n 2
Si hacemos los c alculos, veremos que Q > 0,5 si n > 22, una cantidad sorprendente-
mente mucho menor que 253.
La consecuencia de este ejemplo, conocido como la paradoja del cumplea nos, es que
aunque resulte muy difcil dado m calcular un m
), es conside-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
13.3. Estructura de una Funci on MDC 191
rablemente menos costoso generar muchos valores aleatoriamente, y posteriormente
buscar entre ellos una pareja cualquiera (m, m
).
En el caso de una rma de 64 bits, necesitaramos 2
64
mensajes dado un m pa-
ra obtener el m
).
Hoy por hoy se recomienda emplear signaturas de al menos 128 bits, siendo 160
bits el valor m as usado.
13.3. Estructura de una Funci on MDC
En general, los MDC se basan en la idea de funciones de compresi on, que dan como
resultado bloques de longitud ja a a partir de bloques de longitud ja b, con a < b.
Estas funciones se encadenan de forma iterativa, haciendo que la entrada en el paso
i sea funci on del i- esimo bloque del mensaje (m
i
) y de la salida del paso i 1 (ver
gura 13.1). En general, se suele incluir en alguno de los bloques del mensaje m al
principio o al nal, informaci on sobre la longitud total del mensaje. De esta forma
se reducen las probabilidades de que dos mensajes con diferentes longitudes den el
mismo valor en su resumen.
13.4. Algoritmo MD5
Se trata de uno de los m as populares algoritmos de generaci on de signaturas,
debido en gran parte a su inclusi on en las primeras versiones de PGP. Resultado de
una serie de mejoras sobre el algoritmo MD4, dise nado por Ron Rivest, procesa los
mensajes de entrada en bloques de 512 bits, y produce una salida de 128 bits.
Siendo m un mensaje de b bits de longitud, en primer lugar se alarga m hasta que
su longitud sea exactamente 64 bits inferior a un m ultiplo de 512. El alargamiento se
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
192 13. Funciones Resumen
Figura 13.1: Estructura iterativa de una funci on resumen. R representa la funci on de
compresi on, m es el mensaje completo, m
i
el i- esimo trozo de m, y r
i
la salida de la
funci on en el paso i.
lleva a cabo a nadiendo un 1 seguido de tantos ceros como sea necesario. En segundo
lugar, se a naden 64 bits con el valor de b, empezando por el byte menos signicativo.
De esta forma tenemos el mensaje como un n umero entero de bloques de 512 bits, y
adem as le hemos a nadido informaci on sobre su longitud.
Antes de procesar el primer bloque del mensaje, se inicializan cuatro registros de
32 bits con los siguientes valores hexadecimales, seg un el criterio little endian el
byte menos signicativo queda en la direcci on de memoria m as baja:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
Posteriormente comienza el lazo principal del algoritmo, que se repetir a para cada
bloque de 512 bits del mensaje. En primer lugar copiaremos los valores de A,B,C y D
en otras cuatro variables, a,b,c y d. Luego deniremos las siguientes cuatro funciones:
F(X, Y, Z) = (X Y ) ((X) Z)
G(X, Y, Z) = (X Z) ((Y (Z))
H(X, Y, Z) = X Y Z
I(X, Y, Z) = Y (X (Z))
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
13.4. Algoritmo MD5 193
Ahora representaremos por m
j
el j- esimo bloque de 32 bits del mensaje m (de 0 a
15), y deniremos otras cuatro funciones:
FF(a, b, c, d, m
j
, s, t
i
) representa a = b + ((a +F(b, c, d) +m
j
+t
i
) s)
GG(a, b, c, d, m
j
, s, t
i
) representa a = b + ((a +G(b, c, d) +m
j
+t
i
) s)
HH(a, b, c, d, m
j
, s, t
i
) representa a = b + ((a +H(b, c, d) +m
j
+t
i
) s)
II(a, b, c, d, m
j
, s, t
i
) representa a = b + ((a +I(b, c, d) +m
j
+t
i
) s)
donde la funci on a s representa desplazar circularmente la representaci on binaria
del valor a s bits a la izquierda, con reentrada.
Las 64 operaciones que se realizan en total quedan agrupadas en cuatro rondas.
Primera Ronda:
FF(a, b, c, d, m
0
, 7, D76AA478)
FF(d, a, b, c, m
1
, 12, E8C7B756)
FF(c, d, a, b, m
2
, 17, 242070DB)
FF(b, c, d, a, m
3
, 22, C1BDCEEE)
FF(a, b, c, d, m
4
, 7, F57C0FAF)
FF(d, a, b, c, m
5
, 12, 4787C62A)
FF(c, d, a, b, m
6
, 17, A8304613)
FF(b, c, d, a, m
7
, 22, FD469501)
FF(a, b, c, d, m
8
, 7, 698098D8)
FF(d, a, b, c, m
9
, 12, 8B44F7AF)
FF(c, d, a, b, m
10
, 17, FFFF5BB1)
FF(b, c, d, a, m
11
, 22, 895CD7BE)
FF(a, b, c, d, m
12
, 7, 6B901122)
FF(d, a, b, c, m
13
, 12, FD987193)
FF(c, d, a, b, m
14
, 17, A679438E)
FF(b, c, d, a, m
15
, 22, 49B40821)
Segunda Ronda:
GG(a, b, c, d, m
1
, 5, F61E2562)
GG(d, a, b, c, m
6
, 9, C040B340)
GG(c, d, a, b, m
11
, 14, 265E5A51)
GG(b, c, d, a, m
0
, 20, E9B6C7AA)
GG(a, b, c, d, m
5
, 5, D62F105D)
GG(d, a, b, c, m
10
, 9, 02441453)
GG(c, d, a, b, m
15
, 14, D8A1E681)
GG(b, c, d, a, m
4
, 20, E7D3FBC8)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
194 13. Funciones Resumen
GG(a, b, c, d, m
9
, 5, 21E1CDE6)
GG(d, a, b, c, m
14
, 9, C33707D6)
GG(c, d, a, b, m
3
, 14, F4D50D87)
GG(b, c, d, a, m
8
, 20, 455A14ED)
GG(a, b, c, d, m
13
, 5, A9E3E905)
GG(d, a, b, c, m
2
, 9, FCEFA3F8)
GG(c, d, a, b, m
7
, 14, 676F02D9)
GG(b, c, d, a, m
12
, 20, 8D2A4C8A)
Tercera Ronda:
HH(a, b, c, d, m
5
, 4, FFFA3942)
HH(d, a, b, c, m
8
, 11, 8771F681)
HH(c, d, a, b, m
11
, 16, 6D9D6122)
HH(b, c, d, a, m
14
, 23, FDE5380C)
HH(a, b, c, d, m
1
, 4, A4BEEA44)
HH(d, a, b, c, m
4
, 11, 4BDECFA9)
HH(c, d, a, b, m
7
, 16, F6BB4B60)
HH(b, c, d, a, m
10
, 23, BEBFBC70)
HH(a, b, c, d, m
13
, 4, 289B7EC6)
HH(d, a, b, c, m
0
, 11, EAA127FA)
HH(c, d, a, b, m
3
, 16, D4EF3085)
HH(b, c, d, a, m
6
, 23, 04881D05)
HH(a, b, c, d, m
9
, 4, D9D4D039)
HH(d, a, b, c, m
12
, 11, E6DB99E5)
HH(c, d, a, b, m
15
, 16, 1FA27CF8)
HH(b, c, d, a, m
2
, 23, C4AC5665)
Cuarta Ronda:
II(a, b, c, d, m
0
, 6, F4292244)
II(d, a, b, c, m
7
, 10, 432AFF97)
II(c, d, a, b, m
14
, 15, AB9423A7)
II(b, c, d, a, m
5
, 21, FC93A039)
II(a, b, c, d, m
12
, 6, 655B59C3)
II(d, a, b, c, m
3
, 10, 8F0CCC92)
II(c, d, a, b, m
10
, 15, FFEFF47D)
II(b, c, d, a, m
1
, 21, 85845DD1)
II(a, b, c, d, m
8
, 6, 6FA87E4F)
II(d, a, b, c, m
15
, 10, FE2CE6E0)
II(c, d, a, b, m
6
, 15, A3014314)
II(b, c, d, a, m
13
, 21, 4E0811A1)
II(a, b, c, d, m
4
, 6, F7537E82)
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
13.5. Algoritmo SHA-1 195
II(d, a, b, c, m
11
, 10, BD3AF235)
II(c, d, a, b, m
2
, 15, 2AD7D2BB)
II(b, c, d, a, m
9
, 21, EB86D391)
Finalmente, los valores resultantes de a,b,c y d son sumados con A,B,C y D, que-
dando listos para procesar el siguiente bloque de datos. El resultado nal del algorit-
mo es la concatenaci on de A,B,C y D.
A modo de curiosidad, diremos que las constantes t
i
empleadas en cada paso son
la parte entera del resultado de la operaci on 2
32
abs(sin(i)), estando i representado
en radianes.
13.5. Algoritmo SHA-1
El algoritmo SHA-1 fue desarrollado por la NSA, para ser incluido en el est andar
DSS (Digital Signature Standard). Al contrario que los algoritmos de cifrado propues-
tos por esta organizaci on, SHA-1 se considera seguro
1
y libre de puertas traseras, ya
que el hecho de que el algoritmo sea realmente seguro favorece a los propios intere-
ses de la NSA. Produce rmas de 160 bits, a partir de bloques de 512 bits del mensaje
original.
El algoritmo es similar a MD5, con la diferencia de que usa la ordenaci on big
endian. Se inicializa de igual manera, es decir, a nadiendo al nal del mensaje un uno
seguido de tantos ceros como sea necesario hasta completar 448 bits en el ultimo
bloque, para luego yuxtaponer la longitud en bits del propio mensaje en este caso,
el primer byte de la secuencia ser a el m as signicativo. A diferencia de MD5, SHA-1
emplea cinco registros de 32 bits en lugar de cuatro, que deben ser inicializados antes
de procesar el primer bloque con los siguientes valores:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
Una vez que los cinco valores est an inicializados, se copian en cinco variables, a,
b, c, d y e. El lazo principal tiene cuatro rondas con 20 operaciones cada una:
1
Desafortunadamente, la seguridad de SHA-1 ha quedado puesta en entredicho debido a los avan-
ces conseguidos en 2004 y 2005 por un equipo de cript ologos chinos, liderado por Xiaoyun Wang.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
196 13. Funciones Resumen
F(X, Y, Z) = (X Y ) ((X) Z)
G(X, Y, Z) = X Y Z
H(X, Y, Z) = (X Y ) (X Z) (Y Z)
La operaci on F se emplea en la primera ronda (t comprendido entre 0 y 19), la G
en la segunda (t entre 20 y 39) y en la cuarta (t entre 60 y 79), y la H en la tercera (t
entre 40 y 59). Adem as se emplean cuatro constantes, una para cada ronda:
K
0
= 5A827999
K
1
= 6ED9EBA1
K
2
= 8F1BBCDC
K
3
= CA62C1D6
El bloque de mensaje m se trocea en 16 partes de 32 bits m
0
a m
15
y se convierte
en 80 trozos de 32 bits w
0
a w
79
usando el siguiente algoritmo:
w
t
= m
t
para t = 0 . . . 15
w
t
= (w
t3
w
t8
w
t14
w
t16
) 1 para t = 16 . . . 79
Todos los m
i
obtenidos se interpretan como enteros en las operaciones del algo-
ritmo empleando la ordenaci on big endian. Como curiosidad, diremos que la NSA
introdujo en 1995 el desplazamiento a la izquierda para corregir una debilidad del al-
goritmo, que no fue descubierta por los cript ografos civiles hasta 2004, lo cual supuso
modicar el nombre del mismo para llamar a partir de entonces SHA-0 a la versi on
original, y SHA-1 a la modicada.
El lazo principal del algoritmo es entonces el siguiente:
FOR t = 0 TO 79
i = t div 20
Tmp = (a 5) +A(b, c, d) +e +w
t
+K
i
e = d
d = c
c = b 30
b = a
a = Tmp
siendo A la funci on F, G o H seg un el valor de t (F para t [0, 19], G para t [20, 39]
y [60, 79], H para t [40, 59]). Despu es los valores de a a e son sumados a los registros
A a E y el algoritmo contin ua con el siguiente bloque de datos. Finalmente, el valor
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
13.6. Seguridad de las Funciones MDC 197
de la funci on resumen ser a la concatenaci on de los contenidos de los registros A a E
resultantes de procesar el ultimo bloque del mensaje.
13.6. Seguridad de las Funciones MDC
Puesto que el conjunto de posibles mensajes de longitud arbitraria es innito, y el
conjunto de posibles valores de una funci on MDCes nito, inevitablemente habr a va-
lores para la funci on que se correspondan con m as de un mensaje. De hecho, puede
demostrarse que al menos un valor de la funci on MDC se corresponde necesaria-
mente con innitos mensajes, y es razonable sospechar que, en general, cada uno
de los posibles valores de la funci on va a corresponder con innitos mensajes. En
consecuencia, siempre va a ser posible, dado un valor r(m), encontrar un m
tal que
r(m) = r(m
.
Llamaremos colisi on a un par de mensajes (m, m
). De
lo argumentado en el p arrafo anterior, podemos deducir que todos los algoritmos
MDC presentan colisiones. Distinguiremos no obstante dos tipos de estrategias para
hallarlas, con objeto de delimitar el grado de compromiso que pueden provocar en
un algoritmo concreto:
De preimagen: El atacante parte de un mensaje m, y calcula otro mensaje m
que
colisiona con el primero.
De colisi on propiamente dicha: El atacante se limita a buscar dos valores m y
m
que colisionen, pero desconoce inicialmente tanto sus valores como el que
tomar a la funci on resumen.
En el primer caso, el MDC queda comprometido de manera grave, ya que bas-
tar a con sustituir un m con el m
tales que
colisionen para ambos.
13.7. Funciones de Autenticaci on de Mensaje
Los MAC se caracterizan por el empleo de una clave secreta para poder calcular
la integridad del mensaje. Puesto que dicha clave s olo es conocida por el emisor y el
receptor, el receptor es el unico que puede, mediante el c alculo de la funci on corres-
pondiente, comprobar tanto la integridad como la procedencia del mensaje. Podemos
distinguir varios tipos:
Basados en cifrados por bloques: Son los m as comunes, y consisten en cifrar el men-
saje empleando un algoritmo por bloques en modo de operaci on CBC (secci on
10.6). El valor del MAC ser a entonces el resultado de cifrar el ultimo bloque del
mensaje.
HMAC: Se basan en el uso de cualquier funci on MDC existente, aplicada sobre
una versi on del mensaje a la que se ha a nadido un conjunto de bits, calculados
a partir de la clave que se quiere emplear. Por ejemplo, la funci on HMAC a la
que da lugar el algoritmo MD5 tiene la siguiente estructura:
MD5(k opad, MD5(k ipad, m))
donde k es la clave alargada con ceros por la derecha hasta tener 64 bytes de
longitud, opad es el byte con valor hexadecimal 5C repetido 64 veces, ipad es
el valor hexadecimal 36 repetido 64 veces, mes el mensaje, y la coma representa
la concatenaci on.
Basados en generadores de secuencia: Empleando un generador de secuencia pseu-
doaleatorio el mensaje se parte en dos subcadenas correspondientes al mensa-
je combinado con la secuencia y a la propia secuencia, cada una de las cuales
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
13.7. Funciones de Autenticaci on de Mensaje 199
alimenta un Registro de Desplazamiento Retroalimentado (secci on 11.3). El va-
lor del MAC se obtiene a partir de los estados nales de ambos registros.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
200 13. Funciones Resumen
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 14
Esteganografa
La palabra esteganografa proviene de los t ermimos griegos (cubierto) y
(escritura), por lo que literalmente signica escritura encubierta. A diferen-
cia del concepto de criptografa, en el que se habla de escritura oculta, aqu se hace
menci on explcita de la existencia de una capa superior que cubre el mensaje, de for-
ma que este pueda pasar inadvertido. A lo largo de la historia podemos encontrar
m ultiples ejemplos de t ecnicas esteganogr acas: desde la escritura en la cabeza afei-
tada de un mensajero, cuyo pelo se dejaba crecer antes de enviarlo, hasta los micro-
puntos empleados en la II Guerra Mundial, que camuaban p aginas enteras de texto
microlmadas en un simple signo de puntuaci on, dentro de una aparentemente ino-
fensiva carta. Quiz as el caso m as conocido de esteganografa en lengua castellana sea
el poema que aparece al principio de La Celestina, en el que el bachiller Fernando de
Rojas codic o su nombre y lugar de nacimiento empleando las letras iniciales de cada
verso.
Podemos decir que criptografa y esteganografa son t ecnicas diferentes, e inclu-
so complementarias. Mientras que la primera se encarga de hacer el mensaje ilegible
frente a agentes no autorizados, sin preocuparse de que este pueda tener un aspecto
claramente reconocible, la segunda provee mecanismos para hacer que el texto re-
sulte indetectable, independientemente de que se encuentre cifrado o no. De hecho,
en canales de comunicaci on inseguros, la simple destrucci on del mensaje por parte
de un atacante puede ser suciente para sus prop ositos, independientemente de que
pueda o no acceder a sus contenidos. En este sentido, puede armarse que la estega-
nografa ha sido la t ecnica m as ampliamente utilizada a lo largo de la Historia para
escapar de la censura.
Desde un punto de vista m as formal, la esteganografa toma un mensaje antri on,
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
202 14. Esteganografa
y lo modica hasta encontrar otro mensaje diferente con el mismo signicado
1
. Ese
proceso de modicaci on se hace a partir del mensaje hu esped que queremos ocultar,
de forma que unicamente aquellos que conozcan el proceso seguido para su ocul-
taci on puedan recuperarlo de manera satisfactoria. En funci on de la naturaleza del
mensaje antri on (un texto ASCII, una imagen JPEG, un fragmento de sonido MP3,
etc.), cambiar a radicalmente el concepto de signicado, y por lo tanto los procesos de
modicaci on que permitir an alojar el hu esped sin despertar sospechas.
Una combinaci on adecuada de criptografa y esteganografa puede permitir que,
aunque el atacante conozca por completo el mecanismo de ocultaci on del hu esped
en el antri on, unicamente recupere algo cuyas propiedades estadsticas son iguales
a las del ruido blanco, por lo que el autor del mensaje podr a repudiarlo (ver secci on
2.6), evitando que se le obligue a facilitar sus claves criptogr acas o se le someta a
represalias, ya que resultar a matem aticamente imposible demostrar la propia exis-
tencia del mensaje.
14.1. M etodos Esteganogr acos
Dedicaremos esta secci on a comentar brevemente y de forma general algunas
t ecnicas esteganogr acas. Dependiendo de la naturaleza del mensaje antri on, los
bits que lo componen ser an interpretados de una u otra forma, y por lo tanto ten-
dremos que actuar de manera diferente para poder ocultar informaci on en el. Distin-
guiremos entre archivos de texto, en los que el mensaje es una secuencia de letras,
y archivos que representan alg un tipo de se nal, ya sea unidimensional sonido,
bidimensional imagen, o tridimensional vdeo, que denominaremos gen eri-
camente archivos multimedia.
14.1.1. En archivos de texto
En un archivo de texto, en general, cada byte viene asociado a una letra, un n ume-
ro, un smbolo o un car acter de control. Por ejemplo, si empleamos la codicaci on
ASCII, la letra a se corresponde con el valor num erico 97. Es posible por tanto con-
siderar el mensaje antri on como una secuencia de caracteres, en lugar de tomarlo
colmo una secuencia de bits. Podemos entonces actuar de dos maneras: modicar un
1
En algunos casos, el mensaje antri on puede ser generado a partir del mensaje que se pretende
ocultar. En esas situaciones, la unica condici on que el mensaje generado debe cumplir es que posea
alg un sentido, al menos aparentemente.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
14.1. M etodos Esteganogr acos 203
texto existente en funci on del mensaje que queremos ocultar, sin alterar su signica-
do, o bien generar un texto aparentemente inocuo a partir del mensaje hu esped.
En el primer caso podemos jugar con los caracteres de control, introduciendo es-
pacios o retornos de carro superuos que no alteren el signicado del mensaje an-
tri on. Por ejemplo, si queremos codicar un 1, podramos introducir un espacio doble
entre dos palabras consecutivas, y un espacio simple si queremos representar un 0.
De esta forma ser a relativamente f acil introducir un mensaje hu esped de tantos bits
de longitud como huecos entre palabras contenga el mensaje antri on.
En el segundo caso haremos uso un generador de frases, programado con una
serie de reglas gramaticales y un vocabulario m as o menos extenso, que emplear a el
mensaje hu esped como gua para generar oraciones correctas gramaticalmente. El
destinatario utilizara un analizador l exicosint actico para deshacer la operaci on.
Existen aplicaciones que generan, a trav es de este m etodo, mensajes con aparien-
cia de correos basura (spam), capaces de pasar desapercibidos entre los cientos de
millones de correos de este tipo que cada da viajan por Internet.
14.1.2. En archivos multimedia
Un archivo multimedia representa usualmente la digitalizaci on de alg un tipo de
se nal anal ogica. Dicha se nal anal ogica, de car acter continuo con innitos posibles
valores en cada instante innitesimal de tiempo se convierte en una serie de n ume-
ros discretos que s olo pueden tomar un n umero nito de valores en un n umero
nito de instantes en el tiempo. En el caso del sonido (gura 14.1), los niveles de
presi on en el aire se miden un n umero jo de veces por segundo (frecuencia de mues-
treo), y se aproximan con n umeros enteros (precisi on). Por ejemplo, en un CD de
audio la frecuencia de muestreo es de 44.100Hz, y se emplea un n umero entero de
16 bits para representar el nivel de se nal en cada canal, lo cual permite representar
65.536 niveles distintos. Eso nos deja un total de 176.400 bytes por cada segundo de
sonido.
Cuando se trata de representar im agenes (gura 14.2), estas se subdividen en una
matriz de m n puntos pxeles, y para cada uno de ellos se almacena un valor
entero, que representar a el nivel de gris si es una imagen monocrom atica, o un vector
de tres valores si es una imagen en color, que representar a usualmente los niveles de
rojo (R), verde (G) y azul (B) del pxel en cuesti on. En el caso de un vdeo, a nadiramos
una tercera dimensi on, correspondiente al tiempo.
En general, un archivo multimedia acaba convirti endose en una secuencia de
n umeros que viene a representar una imagen est atica o en movimiento, un sonido,
o una combinaci on de todo lo anterior. Como el lector ya habr a advertido, almace-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
204 14. Esteganografa
Figura 14.1: Proceso de muestreo de una se nal de audio.
nar directamente los valores recogidos en el proceso de digitalizaci on dar a lugar a
cheros extremadamente grandes. Por ejemplo, una hora de sonido con calidad CD
ocupa unos 600 MB, mientras que una imagen en color de 2000 2000 pxeles tiene
un tama no aproximado de 12MB. Por esta raz on la inmensa mayora de los formatos
de almacenamiento de imagen y sonido emplean t ecnicas de compresi on, que a su
vez pueden dividirse en dos tipos:
Sin p erdida. El algoritmo de compresi on permite recuperar exactamente los mis-
mos datos que fueron obtenidos para cada una de las muestras durante en el
proceso de digitalizaci on. Estas t ecnicas trabajan eliminando la redundancia de
la cadena de bits correspondiente (ver secci on 3.6), de forma que al descompri-
mirla obtenemos una copia id entica a la original.
Con p erdida. El algoritmo no permite recuperar con exactitud los valores de cada
muestra, y por lo tanto da lugar a una imagen o sonido distintos del original,
aunque para el ojo u odo humanos la diferencia es apenas perceptible. Estas
t ecnicas permiten obtener grados de compresi on mucho mayores que las ante-
riores, e incluso establecer un nivel de compromiso entre el tama no del archivo
resultante y el grado de degradaci on de la imagen o sonido originales.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
14.1. M etodos Esteganogr acos 205
Figura 14.2: Proceso de muestreo de una imagen monocrom atica. En el caso de una
imagen RGB, en cada pxel se recogeran tres valores: el nivel de rojo (R), el nivel de
verde (G), y el nivel de azul (B).
Archivos multimedia sin p erdida
En este caso, despu es del proceso de digitalizaci on se aplica un algoritmo de
compresi on, que da lugar al chero de imagen o sonido. Este chero ser a nuestro
mensaje antri on. Cuando se desee representar el contenido del archivo, se usar a un
algoritmo de descompresi on, que permitir a recuperar exactamente los valores ori-
ginales obtenidos durante el proceso de muestreo de la se nal correspondiente, y se
enviar a el resultado al dispositivo que corresponda. A la hora de camuar nuestro
mensaje hu esped, actuaremos directamente sobre los valores de muestreo, antes del
proceso de compresi on, ya que estos son unicamente una secuencia de datos num eri-
cos. Obs ervese que todo lo que digamos en este apartado ser a tambi en v alido para
archivos multimedia sin comprimir.
En el caso de un archivo de sonido, una t ecnica bastante efectiva consiste en ma-
nipular los bits menos signicativos de cada muestra, sustituy endolos por los bits
de nuestro mensaje hu esped. Eso introducir a una distorsi on en el sonido resultante
pr acticamente imperceptible para el odo humano. Por ejemplo, si usamos los dos
bits menos signicativos de cada muestra en un archivo con calidad CD, podramos
llegar a introducir unos 75 MB de datos por cada de sonido, con una distorsi on en la
se nal manipulada inferior al 0.01 %.
En lo que respecta a los archivos de imagen podemos actuar de la misma forma,
si bien en este caso existen t ecnicas que, explotando la organizaci on espacial de los
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
206 14. Esteganografa
pxeles de la imagen, permiten detectar zonas en las que la distorsi on provocada
por el mensaje hu esped resulta menos perceptible para el ojo humano, con lo que se
consigue ocultar mayor cantidad de informaci on de forma satisfactoria en una misma
imagen.
Archivos multimedia con p erdida
Los formatos de almacenamiento de imagen y sonido con p erdida dan lugar a
secuencias de valores num ericos distintas de las obtenidas en el proceso de digitali-
zaci on, por lo que si manipulamos directamente los bits de la secuencia, el proceso
de compresi on destruir a la informaci on que hayamos ocultado. Describiremos bre-
vemente el funcionamiento b asico de estos algoritmos de compresi on, para poder
entender c omo deben tratarse si queremos usarlos a modo de hu esped.
Las llamadas transformadas son herramientas matem aticas que permiten represen-
tar cualquier funci on continua o discreta a trav es de una serie de coecientes. En
general, necesitaremos un n umero innito de coecientes en el caso continuo, y tan-
tos coecientes como valores en el caso discreto, para poder representar de manera
absolutamente precisa la se nal. La ventaja que tiene trabajar con transformadas es
que la mayor parte de la informaci on suele estar concentrada en un n umero relativa-
mente peque no de coecientes, por lo que podemos obtener buenas aproximaciones
de la se nal original a partir de un subconjunto de la totalidad de sus coecientes, que
ser an m as o menos precisas en funci on del n umero de coecientes que conservemos.
Los formatos de compresi on de archivos multimedia m as comunes emplean dis-
tintos tipos de transformada, como la Transformada de Fourier, o la Transformada
Discreta del Coseno. En el caso de los archivos JPEG, la imagen se divide en regiones
de 88 pxeles de tama no, y en el de los archivos MP3 en marcos de un n umero deter-
minado de muestras, asociados a un intervalo determinado de tiempo. A cada trozo
se le aplica una transformada, y los coecientes resultantes se truncan cuantizan,
siguiendo unas pautas perceptuales
2
. Finalmente se aplica un algoritmo de compre-
si on sin p erdida al resultado, y se obtiene el chero nal.
Si queremos ocultar un mensaje dentro de uno de estos archivos, habr a que ma-
nipular directamente los coecientes cuantizados, e introducir en ellos los bits del
mensaje. Como es l ogico, ya que los bits que se preservan en los coecientes son los
que mayor cantidad de informaci on transportan, tambi en ser an m as sensibles a al-
teraciones, por lo que podremos ocultar muchos menos bits del mensaje hu esped si
2
Est a demostrado que los sentidos del ser humano son m as sensibles a determinadas caractersti-
cas, por lo que a la hora de truncar los coecientes, se les da prioridad a los que mejor percibimos,
para que las distorsiones sean poco perceptibles.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
14.2. Detecci on de mensajes esteganograados 207
queremos mantener un nivel de distorsi on en el resultado nal que sea realmente
imperceptible.
Una segunda aproximaci on para ocultar informaci on en archivos multimedia con-
siste en manipular la imagen o el sonido originales, antes de pasar por el algoritmo de
compresi on, introduciendo modicaciones sutiles que puedan sobrevivir a diversos
tipos de transformaciones, como recortes, escalados, rotaciones, diferentes compre-
siones y recompresiones con p erdida, etc. Estas t ecnicas resultan m as complejas y se
suelen basar en superponer a la se nal original alguna funci on global cuyo espectro
3
est e en frecuencias muy bajas, tal que el ser humano no la perciba y las degradacio-
nes surgidas del proceso de compresi on no la destruyan. Usualmente, las t ecnicas de
marcas de agua (watermarking) sobre contenidos multimedia digitales se basan en estos
principios.
14.2. Detecci on de mensajes esteganograados
Hasta ahora hemos comentado una serie de m etodos m as o menos sutiles para
ocultar informaci on en diferentes tipos de archivo, pero la cuesti on realmente impor-
tante es la siguiente: es posible detectar si un mensaje cualquiera alberga informa-
ci on esteganograada? Esta pregunta resulta crucial, ya que a la postre el objetivo de
las t ecnicas esteganogr acas es impedir o al menos dicultar esa detecci on.
Para decidir si un mensaje cualquiera es en realidad el antri on de otro, tendre-
mos que ponernos en el lugar de quien lo gener o, y seleccionar en el los bits que
consideremos m as adecuados para ocultar informaci on. Una vez aislados, habr a que
realizar un estudio acerca de su distribuci on estadstica tpica en un mensaje nor-
mal, y comparar los resultados con los valores extrados del archivo sospechoso. Po-
dremos considerar que hemos encontrado un indicio de la presencia de un mensaje
oculto si los resultados obtenidos dieren de los que presenta un mensaje limpio. Esto
nos obliga a conocer, al menos a grandes rasgos, qu e m etodos esteganogr acos ha
podido usar nuestro adversario, y a dise nar pruebas especcas para detectar cada
uno de ellos.
Evidentemente, la recuperaci on completa del mensaje hu esped es una prueba irre-
futable de que este existe, que siempre puede llegar a conseguirse. No obstante, si el
mensaje hu esped se encuentra cifrado, podemos considerar esa posibilidad fuera del
alcance de quien analiza el mensaje antri on. En ese caso, la prueba de la presencia de
un mensaje oculto dentro de otro tendr a que basarse en las propiedades estadsticas
de la informaci on analizada. En general, se puede conseguir que resulte imposible,
3
El espectro de una se nal es el rango de los coecientes no nulos de su transformada.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
208 14. Esteganografa
desde un punto de vista matem atico, demostrar que un mensaje alberga informaci on
esteganograada. Para ello han de seguirse las siguientes pautas:
1. Analizar estadsticamente los bits del mensaje antri on que van a ser alterados
durante el proceso de esteganograado.
2. Cifrar el mensaje hu esped antes de introducirlo en el antri on.
3. Manipular el mensaje hu esped, una vez cifrado, para que presente una distri-
buci on estadstica similar a la de los bits analizados previamente.
El caso ideal consistira en seleccionar un subconjunto de bits del mensaje an-
tri on que posea una distribuci on estadsticamente aleatoria, y cuya alteraci on no
resulte perceptible en el chero resultante, para luego sustituirlos por una versi on
comprimida y cifrada del mensaje hu esped, que tambi en deber a presentar una dis-
tribuci on estadsticamente aleatoria.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 15
Pruebas de Conocimiento Cero
15.1. Introducci on
Cuando un agente A pretende convencer a otro B de que posee una cierta infor-
maci on X, la estrategia m as simple e intuitiva consiste en que A proporcione a B
el valor de X. Sin embargo, a partir de ese momento, B conocer a el secreto de A y
podr a cont arselo a todo el mundo. O lo que es peor: un atacante C puede espiar la
comunicaci on entre A y B y robar el secreto.
Si bien este problema puede ser resuelto a partir de criptografa asim etrica (captu-
lo 12) o de funciones resumen (captulo 13), como veremos en el captulo 17, existe
un mecanismo que, a trav es de un proceso interactivo, permite a A probar a B que
posee el secreto en cuesti on, sin revelar ning un tipo de informaci on acerca de X en
el proceso. En general, estas t ecnicas, conocidas como Pruebas de Conocimiento Cero,
suelen tener modestos requerimientos computacionales en comparaci on con otros
protocolos, de ah su inter es.
Una prueba de conocimiento cero se basa en la formulaci on por parte de B de una
serie de preguntas. Si A conoce el valor de X, podr a responder correctamente a todas
ellas; en caso contrario, tendr a una probabilidad determinada de acertar la respuesta
en cada caso usualmente del 50 %. De esta forma, la probabilidad de que un
impostor logre superar una prueba de n preguntas es de 1/2
n
. Otra caracterstica
importante es que ninguno de los mensajes que intercambian A y B a lo largo del
proceso aporta informaci on a un eventual espa C sobre el valor de X. Finalmente,
es necesario recalcar que la secuencia de preguntas debe ser diferente y aleatoria en
cada caso, de forma que C no pueda memorizar la secuencia concreta de respuestas y
as enga nar a C.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
210 15. Pruebas de Conocimiento Cero
15.2. Elementos
A la hora de describir el funcionamiento de una prueba de conocimiento cero, es
interesante denir los distintos elementos que la componen, con objeto de facilitar su
comprensi on:
Un Secreto X, que puede ser una contrase na, una clave privada, o cualquier otra
informaci on cuya posesi on se quiera demostrar.
Un Demostrador (al que llamaremos David a partir de ahora), que es quien pre-
tende demostrar que posee el secreto X.
Un Vericador (al que llamaremos Vctor), que es quien debe asegurarse de que
David est a en posesi on de X.
Un Problema usualmente alg un problema matem atico computacionalmente
costoso sobre el que basar cada una de las preguntas que se formular an a lo
largo del proceso.
Adicionalmente, habremos de tener en cuenta la posibilidad de que existan agen-
tes que escuchen los mensajes que intercambian Vctor y David, e incluso que los eli-
minen, los manipulen, o a nadan mensajes falsos, para poder garantizar la efectividad
de estas pruebas.
15.3. Desarrollo
Un ejemplo tpico en la literatura para explicar las pruebas de conocimiento ce-
ro se basa en una variante circular de la cueva de Al Bab a (gura 15.1), tal que la
entrada se bifurca y las dos ramas resultantes quedan comunicadas por una puerta.
Supongamos que David conoce la contrase na que abre la puerta, y quiere convencer
a Vctor de ello sin decrsela. David se introducira por una de las ramas de la cue-
va sin que Vctor supiera cu al, seguidamente Vctor entrara y pedira a David que
saliera por una de las ramas, escogida de forma aleatoria. Si David conoce la contra-
se na podr a abrir la puerta cuando lo necesite para salir por el lugar solicitado, pero
si la ignora s olo podr a salir por el lugar correcto la mitad de las veces. Tras repetir un
n umero razonable de veces este proceso, Vctor quedar a convencido de que David
posee la contrase na correcta, sin conocerla el mismo. Adem as, la observaci on de todo
el proceso por parte de un tercero no servir a a nadie para poder hacerse pasar por
David.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
15.3. Desarrollo 211
Figura 15.1: La cueva de conocimiento cero.
Este ejemplo no es m as que una analoga para entender mejor una prueba de
conocimiento cero. De hecho, a David le hubiera bastado con entrar por una rama y
salir por la otra para convencer a Vctor. Veamos ahora el proceso desde un punto de
vista m as completo y formal. David, para demostrar que se encuentra en posesi on
del secreto X, construye un problema matem atico M, computacionalmente difcil de
resolver, de forma que X constituya una soluci on para M n otese que David parte
de la soluci on para elaborar el problema. Se produce entonces el siguiente di alogo:
1. David transforma M para construir un nuevo problema matem atico M
, cuya
soluci on X
.
B = 1, David proporciona la soluci on X
del problema M
, sin revelar la
relaci on entre M y M
.
Observando el protocolo con atenci on, puede verse que la unica forma de que
David pueda responder correctamente a ambas preguntas es que posea la soluci on
X. David unicamente revela, o bien la relaci on entre M y M
, o bien el valor de X
, y
que cada una de estas cosas por separado resulta in util para calcular X.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
212 15. Pruebas de Conocimiento Cero
15.4. Modos de Operaci on
Fundamentalmente, una prueba de conocimiento cero puede ser planteada de tres
formas diferentes:
Interactiva, de forma que David y Vctor generan e intercambian cada mensaje
en lnea, realizando los c alculos para el siguiente s olo cuando han recibido el
anterior.
Paralela, en la que Vctor genera un paquete de preguntas, las enva a David, y
este las contesta todas a la vez.
Fuera de lnea, en la que David genera una serie de problemas /, usa una fun-
ci on resumen (captulo 13) aplicada sobre un mensaje concreto m concatenado
con /, emplea los bits del resultado como los diferentes valores de B, y a nade
a (m, /) el conjunto o de soluciones correspondientes a los problemas. De esta
manera cualquiera podr a vericar que el unico que pudo generar el mensaje
nal (m, /, o) fue David, lo cual puede funcionar como rma digital de David
sobre el mensaje m (ver captulo 17).
15.5. Conocimiento Cero sobre Grafos
Existen muchos problemas matem aticos susceptibles de ser empleados como ba-
se para un protocolo de conocimiento cero. Uno de ellos es el del homomorsmo
de grafos
1
. Dados dos grafos con el mismo n umero de nodos, averiguar si reorde-
nando los nodos del primero se puede obtener una copia exacta del segundo son
homomorfos, es un problema computacionalmente intratable. Para construir una
prueba de conocimiento cero basada en grafos, David partira de un grafo G
1
, y reor-
denando los nodos en funci on del valor de X calculara G
2
. De esta forma, el secreto
X queda asociado a la correspondencia entre G
1
y G
2
. El protocolo quedara como
sigue:
1. David reordena los nodos de G
1
, y obtiene un grafo H, que ser a homomorfo a
G
1
y G
2
.
2. Vctor genera el bit aleatorio B.
3. David enva a Vctor la correspondencia entre G
1
y H si B = 1, o la correspon-
dencia entre G
2
y H si B = 0.
1
Un grafo es un conjunto de puntos o nodos conectados entre s por arcos
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
15.6. Ataques de Intermediario 213
Obs ervese que para conocer la correspondencia entre G
1
y G
2
o sea, el valor
del secreto X son necesarias simult aneamente las correspondencias entre G
1
y H,
y entre H y G
2
. Puesto que David unicamente revela una de las dos, el protocolo
funciona correctamente.
15.6. Ataques de Intermediario
Al igual que cualquier otra t ecnica, las pruebas de conocimiento cero tambi en
presentan puntos d ebiles, que deben ser conocidos para su correcta utilizaci on. En
este caso la mayora de los ataques pueden producirse a trav es de intermediario.
Supongamos que Andr es quiere suplantar a David frente a Vctor. Para conseguir
su objetivo actuara de la siguiente forma:
1. Andr es, haci endose pasar por David, solicita a Vctor realizar la prueba de co-
nocimiento cero.
2. Andr es, haci endose pasar por Vctor, informa a David de que debe realizar la
prueba.
3. David genera el problema correspondiente, Andr es lo recoge y lo enva a Vctor
como si lo hubiera generado el.
4. Vctor genera el bit aleatorio B, lo enva Andr es, y Andr es se lo pasa a David.
5. David responde, y Andr es reenva la respuesta a Vctor.
6. El proceso se repite tantas veces como requiera Vctor.
Como resultado tenemos que Andr es ha logrado convencer a Vctor de que posee
el mismo secreto que David, aunque no lo conce, ni ha ganado informaci on sobre
el. Este ataque resulta indetectable, y puede dar lugar a importantes brechas de
seguridad, especialmente cuando la prueba de conocimiento cero se usa para com-
probar la identidad de alguien.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
214 15. Pruebas de Conocimiento Cero
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Parte IV
Aplicaciones Criptogr acas
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 16
Protocolos de Comunicaci on Segura
16.1. Introducci on
Quiz as la aplicaci on m as antigua de la Criptografa sea precisamente la de estable-
cer canales de comunicaciones seguros entre dos puntos. Desde un soldado galopan-
do a trav es de territorio enemigo hasta un haz l aser, pasando por un hilo telegr aco,
el ser humano ha empleado innidad de medios para poder enviar sus mensajes,
cada uno de ellos con sus propias peculiaridades. Pero si hay una caracterstica que
podemos considerar com un a todos los canales de comunicaciones, es la ausencia de
control que sobre el mismo poseen ambos interlocutores. En el caso del jinete, sera
muy interesante poder crear un pasillo de territorio amigo a lo largo de todo su tra-
yecto, pero en ese caso su propia tarea carecera pr acticamente de sentido. En general,
hemos de considerar que nuestros mensajes son depositados en un medio ajeno a no-
sotros y usualmente hostil, y que los medios que apliquemos para su protecci on
deben ser v alidos en los casos m as desfavorables.
Un mensaje liberado en un medio hostil se enfrenta principalmente a dos peligros:
Acceso por agentes no autorizados. En un medio sobre el que no podemos ejer-
cer ning un control, esta posibilidad debe tomarse muy en serio. Tanto que en
lugar de suponer que el enemigo puede acceder al mensaje, hemos de dar por
hecho que va a hacerlo. Por lo tanto, nuestros sistemas de protecci on deben
centrarse en garantizar que el mensaje resulte ininteligible a nuestro atacante.
Alteraciones en el mensaje. Este problema puede llegar a ser mucho peor que el
anterior, ya que si recibimos un mensaje que ha sido modicado y lo damos por
bueno, las consecuencias para la comunicaci on pueden ser catastr ocas. En este
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
218 16. Protocolos de Comunicaci on Segura
sentido, las alteraciones pueden aplicarse tanto sobre el mensaje propiamente
dicho, como sobre la informaci on acerca de su verdadera procedencia.
La Criptografa, como ya hemos visto en anteriores captulos, proporciona meca-
nismos ables para evitar los dos peligros que acabamos de mencionar. En general,
cada una de las aplicaciones concretas que necesiten de estas t ecnicas poseer a unas
caractersticas especcas, por lo que en cada caso habr a una combinaci on de algo-
ritmos criptogr acos que permitir a proporcionar al sistema el nivel de seguridad ne-
cesario. Estas combinaciones de algoritmos se estructurar an nalmente en forma de
protocolos, para proporcionar m etodos de comunicaci on segura normalizados.
16.2. Protocolos TCP/IP
El conjunto b asico de protocolos sobre los que se construye la red Internet se cono-
ce popularmente como TCP/IP, agrupaci on de los nombres de dos de los elementos
m as importantes, que no los unicos, de la familia: TCP (Transmission Control Protocol)
e IP (Internet Protocol).
El modelo de comunicaciones sobre el que se basa Internet se estructura en for-
ma de capas apiladas, de manera que cada una de ellas se comunica con las capas
inmediatamente superior e inferior, logrando diversos niveles de abstracci on, que
permiten intercambiar informaci on de forma transparente entre ordenadores. La con-
secuencia m as importante de este enfoque es que dos dispositivos cualesquiera, que
pueden estar conectados a Internet por medios totalmente distintos bra optica, ca-
ble de cobre, l aser, ondas electromagn eticas..., y separados por multitud de enlaces
diferentes sat elite, cables submarinos, redes inal ambricas..., pueden conectarse
entre ellos simplemente con que dispongan de una implementaci on de TCP/IP.
A diferencia del modelo OSI, que consta de siete capas, denominadas aplicaci on,
presentaci on, sesi on, transporte, red, enlace y fsica, los protocolos TCP/IP se organizan
unicamente en cinco (gura 16.1). Aunque la correspondencia no es exacta, podemos
decir que, b asicamente, los tres niveles superiores del modelo OSI se agrupan en el
nivel de aplicaci on de TCP/IP. Comentaremos brevemente cada uno de ellos:
Capa Fsica. Describe las caractersticas fsicas de la comunicaci on, como son el
medio empleado, los voltajes necesarios, la modulaci on empleada, etc.
Capa de Enlace. Indica c omo los paquetes de informaci on viajan a trav es del me-
dio fsico, indicando qu e campos de bits se a naden a estos para que puedan ser
reconocidos satisfactoriamente en destino. Ejemplos de protocolos de enlace:
Ethernet, 802.11 WiFi, Token Ring, etc.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
16.2. Protocolos TCP/IP 219
Figura 16.1: Esquema del conjunto de protocolos TCP/IP, en los que se basa la red
Internet.
Capa de Red. En ella se ubica el protocolo IP, cuyo prop osito consiste en hacer
llegar los paquetes a su destino a trav es de una unica red. Existen algunos pro-
tocolos de mayor nivel, como ICMP o IGMP, que aunque se construyen sobre IP,
tambi en pertenecen a la capa de red, a diferencia de lo que ocurre en el modelo
OSI.
Capa de Transporte. Su prop osito es garantizar que los paquetes han llegado a
su destino, y en el orden correcto. El protocolo m as importante en este nivel es
TCP, pero existen otros como UDP, DCCP o RTP.
Capa de Aplicaci on. Esta es la capa a la que acceden de forma directa la mayora
de las aplicaciones que usan Internet. En ella se reciben los datos, que son pa-
sados a las capas inferiores para que sean enviados a su destino. A este nivel
pertenecen prococolos tales como HTTP, FTP, SSH, HTTPS, IMAP, DNS, SMTP,
IRC, etc.
En la pr actica, podemos encontrar protocolos encaminados a obtener comunica-
ciones seguras en pr acticamente todos los niveles de este esquema. En las pr oximas
secciones comentaremos brevemente algunos de ellos.
Los distintos protocolos de comunicaci on segura pueden ser utilizados para cons-
truir las denominadas redes privadas virtuales. Una red privada virtual, en ingl es
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
220 16. Protocolos de Comunicaci on Segura
VPN (Virtual Private Network) es una red de comunicaciones privada construida so-
bre una red p ublica. Hacia los usuarios se comporta como si de una red interna se
tratase, ofreciendo acceso unicamente a aquellos que est en autorizados, y resultan-
do inaccesible para los dem as, cuando en realidad todas las conexiones se realizan a
trav es de Internet.
16.3. Protocolo SSL
El protocolo SSL (Secure Sockets Layer), desarrollado originalmente por la empresa
Netscape, permite establecer conexiones seguras a trav es de Internet, de forma sen-
cilla y transparente. Se sit ua en la capa de aplicaci on (gura 16.1), directamente sobre
el protocolo TCP, y aunque puede proporcionar seguridad a cualquier aplicaci on que
corra sobre TCP, se usa principalmente para proporcionar seguridad a los protocolos
HTTP (web), SMTP (email) y NNTP (news), dando lugar en el primero de los casos
a los servidores web seguros, cuya URL comienza por el prejo https://. Su fun-
damento consiste en interponer una fase de codicaci on de los mensajes antes de
enviarlos a trav es de la red. Una vez que se ha establecido la comunicaci on, cuando
una aplicaci on quiere enviar informaci on a otra computadora, la capa SSL la recoge
y la codica, para luego enviarla a su destino a trav es de la red. An alogamente, el
m odulo SSL del otro ordenador se encarga de decodicar los mensajes y se los pasa
como texto claro a la aplicaci on destinataria.
SSL tambi en incorpora un mecanismo de autenticaci on que permite garantizar
la identidad de los interlocutores. Tpicamente, ya que este protocolo se dise n o origi-
nalmente para establecer comunicaciones web, el unico que suele autenticarse es el
servidor, aunque tambi en puede realizarse una autenticaci on mutua.
Una comunicaci on a trav es de SSL implica tres fases fundamentalmente:
Establecimiento de la conexi on y negociaci on de los algoritmos criptogr acos
que van a usarse en la comunicaci on, a partir del conjunto de algoritmos sopor-
tados por cada uno de los interlocutores.
Intercambio de claves, empleando alg un mecanismo de clave p ublica (ver sec-
ci on 12.4.1), y autenticaci on de los interlocutores a partir de sus certicados
digitales (ver captulo 17).
Cifrado sim etrico del tr aco.
Una de las ventajas de emplear un protocolo de comunicaciones en lugar de un
algoritmo o algoritmos concretos, es que ninguna de las fases del protocolo queda
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
16.4. Protocolo TLS 221
atada a ning un algoritmo, por lo que si en el futuro aparecen algoritmos mejores, o
alguno de los que se emplean en un momento dado quedara comprometido, el cam-
bio se puede hacer sin modicar el protocolo. En la actualidad, las implementaciones
tpicas de SSL soportan algoritmos como RSA, Dife-Hellman o DSA para la parte
asim etrica (captulo 12); RC2, RC4, IDEA, DES, TripleDES o AES para la sim etrica
(captulos 10 y 11), y como funciones resumen (captulo 13) SHA-1 o MD5.
Las ventajas de SSL son evidentes, ya que liberan a las aplicaciones de llevar a
cabo las operaciones criptogr acas antes de enviar la informaci on, y su transparencia
permite usarlo de manera inmediata sin modicar apenas los programas ya existen-
tes. Desde hace tiempo los principales navegadores de Internet incorporan un m odu-
lo SSL, que se activa de forma autom atica cuando es necesario. Hasta diciembre de
1999, debido a las restricciones de exportaci on de material criptogr aco existentes en
los EE.UU., la mayora de los navegadores incorporaban un nivel de seguridad bas-
tante pobre (claves sim etricas de 40 bits), por lo que conviene comprobar qu e nivel
de seguridad se est a empleando cada vez que hagamos una conexi on.
Existen implementaciones de SSL que permiten construir los denominados t une-
les SSL, que permiten dirigir cualquier conexi on a un puerto TCP a trav es de una
conexi on SSL previa, de forma transparente para las aplicaciones que se conectan.
16.4. Protocolo TLS
TLS (descrito en el documento RFC 2246) es un protocolo basado en la versi on
3.0 de SSL, si bien con una serie de mejoras que lo hacen incompatible con este ulti-
mo. Una de las ventajas que proporciona sobre SSL es que puede ser iniciado a partir
de una conexi on TCP ya existente, lo cual permite seguir trabajando con los mismos
puertos que los protocolos no cifrados. Mientras que SSL es un protocolo incompati-
ble con TCP, lo cual signica que no podemos establecer una conexi on de un cliente
TCP a un sevidor SSL ni al rev es, y por tanto es necesario diferenciarlos utilizando
distintos n umeros de puerto (80 para un servidor web normal y 443 para un servidor
web sobre SSL), con TLS puede establecerse la conexi on normalmente a trav es de TCP
y el puerto 80, y luego activar sobre el mismo el protocolo TLS.
En este protocolo se emplea una serie de medidas de seguridad adicionales, enca-
minadas a protegerlo de distintos tipos de ataque, en especial de los de intermediario
(secci on 12.2):
Uso de funciones MAC en lugar de funciones MDC unicamente (ver captulo
13).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
222 16. Protocolos de Comunicaci on Segura
Numeraci on secuencial de todos los campos que componen la comunicaci on, e
incorporaci on de esta informaci on al c alculo de los MAC.
Protecci on frente a ataques que intentan forzar el empleo de versiones antiguas
menos seguras del protocolo o cifrados m as d ebiles.
El mensaje que naliza la fase de establecimiento de la conexi on incorpora una
signatura (hash) de todos los datos intercambiados por ambos interlocutores.
Si bien el m etodo usado con m as frecuencia para establecer conexiones seguras a
trav es de Internet sigue siendo SSL, cabe esperar que con el tiempo sea paulatinamen-
te reemplazado por TLS, y que este ultimo se convierta en el est andar de seguridad
para las comunicaciones cifradas en Internet.
16.5. Protocolos IPsec
IPsec es un est andar que proporciona cifrado y autenticaci on a los paquetes IP,
trabajando en la capa de red (gura 16.1). En lugar de tratarse de un unico protocolo,
IPsec es en realidad un conjunto de protocolos, denidos en diversos RFCs (princi-
palmente en el 2401), encaminados a proporcionar autenticaci on, condencialidad
e integridad a las comunicaciones IP. Su car acter obligatorio dentro del est andar IPv6
recordemos que en IPv4, la versi on m as empleada en la actualidad de este proto-
colo, es opcional har a con seguridad que la popularidad de IPsec crezca al mismo
ritmo que la implantaci on de la nueva versi on del protocolo IP.
IPsec puede ser utilizado para proteger una o m as rutas entre un par de orde-
nadores, un par de pasarelas de seguridad ordenadores que hacen de intermediarios
entre otros, y que implementan los protocolos IPsec o una pasarela y un ordenador.
En funci on del tipo de ruta que se proteja, se distinguen dos modos de operaci on:
Modo t unel: Se realiza entre dos pasarelas de seguridad, de forma que estas se
encargan de crear una ruta segura entre dos ordenadores conectados a ellas, a
trav es de la cual viajan los paquetes. De este modo se puede disponer dentro
de una red local de un ordenador que desempe ne las labores de pasarela, al
que las computadoras de la propia red enven los paquetes, para que este les
aplique los protocolos IPsec antes de remitirlos al destinatario o a su pasare-
la de seguridad asociada. Este modo permite interconectar de forma segura
ordenadores que no incorporen IPsec, con la unica condici on de que existan
pasarelas de seguridad en las redes locales de cada uno de ellos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
16.5. Protocolos IPsec 223
Modo transporte: En este caso los c alculos criptogr acos relativos a los protocolos
IPsec se realizan en cada extremo de la comunicaci on.
B asicamente, IPsec se compone a su vez de dos protocolos, cada uno de los cuales
a nade una serie de campos, o modica los ya existentes, a los paquetes IP:
Cabecera de autenticaci on IP, abreviado como AH (IP Authenticacion Header),
dise nado para proporcionar integridad, autenticaci on del origen de los paque-
tes, y un mecanismo opcional para evitar ataques por repetici on de paquetes.
Protocolo de encapsulamiento de carga de seguridad, o ESP (Encapsulating Se-
curity Payload) que, adem as de proveer integridad, autenticaci on y protecci on
contra repeticiones, permite cifrar el contenido de los paquetes.
Debido a que algunos de los servicios que IPsec proporciona necesitan de la dis-
tribuci on e intercambio de las claves necesarias para cifrar, autenticar y vericar la
integridad de los paquetes, es necesario que este trabaje en consonancia con un con-
junto externo de mecanismos que permita llevar a cabo esta tarea, tales como IKE,
SKIP o Kerberos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
224 16. Protocolos de Comunicaci on Segura
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 17
Autenticaci on, Certicados y Firmas
Digitales
17.1. Introducci on
Cuando se establece una comunicaci on de cualquier tipo es necesario poder ase-
gurar que los mensajes no han sufrido alteraciones, es decir, que la informaci on reci-
bida coincide exactamente con la enviada. En muchos casos, existe el requerimiento
adicional de conocer la identidad de nuestro interlocutor sea este una persona o
alg un tipo de dispositivo, para evitar que sea suplantado por un impostor. Deno-
minaremos en general autenticaci on (o autenticaci on) a las operaciones consistentes
en vericar tanto la identidad de nuestro intelocutor como la integridad de los men-
sajes que de el recibimos.
Independientemente de que la operaci on de autenticaci on se lleve a cabo sobre
el contenido de una comunicaci on o sobre los propios intelocutores, esta puede rea-
lizarse en el mismo momento, de forma interactiva como cuando se introduce una
contrase na para acceder a un sistema, o dejarse pospuesta para ser realizada pos-
teriormente fuera de lnea como cuando se rma digitalmente un mensaje, en cuyo
caso la rma puede ser vericada tantas veces como se desee, una vez nalizada la
comunicaci on.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
226 17. Autenticaci on, Certicados y Firmas Digitales
17.2. Firmas Digitales
Una rma digital es una secuencia de bits que se a nade a una pieza de informa-
ci on cualquiera, y que permite garantizar su autenticidad de forma independiente
del proceso de transmisi on, tantas veces como se desee. Presenta una analoga direc-
ta con la rma manuscrita, y para que sea equiparable a esta ultima debe cumplir las
siguientes propiedades:
Va ligada indisolublemente al mensaje. Una rma digital v alida para un docu-
mento no puede ser v alida para otro distinto.
S olo puede ser generada por su legtimo titular. Al igual que cada persona tie-
ne una forma diferente de escribir, y que la escritura de dos personas diferen-
tes puede ser distinguida mediante an alisis grafol ogicos, una rma digital s olo
puede ser construida por la persona o personas a quienes legalmente corres-
ponde.
Es p ublicamente vericable. Cualquiera puede comprobar su autenticidad en
cualquier momento, de forma sencilla.
La forma m as extendida de calcular rmas digitales consiste en emplear una com-
binaci on de cifrado asim etrico (captulo 12) y funciones resumen (captulo 13). El es-
quema de funcionamiento queda ilustrado en la gura 17.1.
17.3. Certicados Digitales
Un certicado digital es esencialmente una clave p ublica y un identicador, r-
mados digitalmente por una autoridad de certicaci on, y su utilidad es demostrar que
una clave p ublica pertenece a un usuario concreto. Evidentemente, la citada autori-
dad de certicaci on debe encargarse de vericar previamente que la clave p ublica es
aut entica. En Espa na, por ejemplo, la F abrica Nacional de Moneda y Timbre act ua como
autoridad certicadora, rmando las claves p ublicas de los ciudadanos y generando
los certicados digitales correspondientes. Cualquier entidad que disponga de la cla-
ve p ublica de la FNMT estar a en condiciones de vericar sus certicados digitales,
otorgando la conanza correspondiente a las claves p ublicas asociadas a los mismos.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
17.3. Certicados Digitales 227
MDC Mensaje
Firma
Digital
Cifrado
Asimtrico
Clave Privada
MDC Mensaje
Firma
Digital
Descifrado
Asimtrico
Clave Pblica
=?
A B
Figura 17.1: Esquema de una rma digital basada en funciones resumen y algoritmos
de cifrado asim etricos. A: generaci on de la rma; B: vericaci on.
17.3.1. Certicados X.509
El formato de certicados X.509 (Recomendaci on X.509 de CCITT:The Directory -
Autentication Framework. 1988) es uno de los m as comunes y extendidos en la actua-
lidad.
El est andar X.509 s olo dene la sintaxis de los certicados, por lo que no est a atado
a ning un algoritmo en particular, y contempla los siguientes campos:
Versi on.
N umero de serie.
Identicador del algoritmo empleado para la rma digital.
Nombre del certicador.
Periodo de validez.
Nombre del sujeto.
Clave p ublica del sujeto.
Identicador unico del certicador.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
228 17. Autenticaci on, Certicados y Firmas Digitales
Identicador unico del sujeto.
Extensiones.
Firma digital de todo lo anterior generada por el certicador.
17.3.2. Revocaci on de Certicados
Cuando una clave p ublica pierde su utilidad por destrucci on o robo de la cla-
ve privada correspondiente, por ejemplo, es necesario anularla. Para ello se em-
plean los denominados certicados de revocaci on que no son m as que un mensaje que
identica a la clave p ublica que se desea anular, rmada por la clave privada corres-
pondiente. De esta forma se garantiza que una clave p ublica unicamente puede ser
revocada por su legtimo propietario si alguien roba la clave privada, normalmen-
te no le interesar a revocarla, ya que entonces el material robado perdera su valor.
Como puede verse, para revocar una clave p ublica es necesario estar en posesi on de
la privada, por lo que si perdemos esta ultima, jam as podremos hacer la revocaci on.
Para evitar estos problemas, conviene seguir una serie de pautas:
Generar los pares de claves con un perodo limitado de validez. De esta forma,
si no podemos revocar una clave, expirar a por s misma.
Generar el certicado de revocaci on junto con el propio par de claves, y alma-
cenarlo en lugar seguro.
Si el protocolo lo permite, nombrar revocadores para nuestra clave p ublica, que
podr an generar un certicado de revocaci on empleando sus propias claves pri-
vadas.
17.4. Vericaci on de Certicados Digitales
Una autoridad de certicaci on suele tener un ambito relativamente local, como
puede ser una empresa, un campus universitario o un pas entero. Si fuera necesario
vericar un certicado digital de un certicador ajeno, del cual desconocemos su a-
bilidad, existe la posibilidad de que la clave p ublica del propio certicador est e a su
vez rmada por otra entidad de la que s nos emos, y de esta forma propagar nues-
tra conanza hacia la entidad certicadora en cuesti on. Esta circunstancia puede ser
aprovechada de forma jer arquica como en las PKI (Infraestructuras de Clave P ubli-
ca o, en ingl es Public Key Infrastructure) o distribuida como hace PGP (captulo
18).
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
17.4. Vericaci on de Certicados Digitales 229
Figura 17.2: Esquema jer arquico de certicaci on. Si A quiere comprobar la identidad
de B, emplear a la clave p ublica de EC1 para vericar el certicado digital de EC3.
Una vez hecha esta comprobaci on, podr a conar en EC3 como certicador de la clave
p ublica de B.
17.4.1. Infraestructuras Jer arquicas
En esta modalidad, las entidades certicadoras se organizan en forma de arbol
por niveles (ver gura 17.2), de tal manera que las entidades certicadoras de un
nivel poseen certicados digitales emitidos por autoridades de niveles superiores.
Podremos vericar satisfactoriamente un certicado digital cualquiera, siempre que
poseamos la clave p ublica de un certicador de primer nivel que son muy pocos e
internacionalmente reconocidos.
Como es natural, las entidades certicadoras que generen certicados nales
correspondientes a las hojas del arbol tendr an la unica responsabilidad de com-
probar de manera fehaciente que cada clave p ublica pertenece a su propietario. Sin
embargo, aquellas entidades que certiquen a otras entidades, deber an garantizar
adem as que estas ultimas emplean mecanismos adecuados para comprobar las iden-
tidades de sus clientes. De lo contrario, alguien podra crear una autoridad de certi-
caci on, obtener el correspondiente certicado digital de niveles superiores, y luego
emitir certicados falsos.
El esquema jer arquico es realmente simple y efectivo, pero presenta un problema
importante: si uno de los certicadores resulta comprometido, todos sus descendien-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
230 17. Autenticaci on, Certicados y Firmas Digitales
tes en el arbol quedan invalidados. Esto obliga, por un lado, a que las autoridades
de certicaci on sean lo m as transparentes posible, y por otro a que se mantengan las
llamadas listas de revocaci on en ingl es, CRL, certicate revocation lists, que anulan
todas aquellas claves p ublicas que, por alguna causa, han dejado de ser v alidas.
17.4.2. Infraestructuras Distribuidas
Frente a la estructura jer arquica, se puede construir un esquema distribuido de
certicaci on de claves, tambi en conocido como anillo de conanza ring of trust, en
ingl es, en el que todos los usuarios act uan como autoridades de certicaci on. Este
sistema presenta la ventaja de ser muy resistente, ya que no depende de un peque no
grupo de entidades certicadoras, pero tiene el inconveniente de ser considerable-
mente m as complejo de manejar para los propios usuarios.
Puesto que no existen autoridades de certicaci on centralizadas, cada usuario tie-
ne que responsabilizarse de lo siguiente:
Vericar la autenticidad de todas aquellas claves p ublicas que le sea posible.
Certicar aquellas claves sobre las que tenga absoluta certeza de que pertenecen
a sus propietarios.
Elegir en qu e condiciones conar a en los certicados de otro usuario.
Seg un el grado de conanza que presente un usuario, uno puede elegir creerse
todos sus certicados, no aceptar ninguno pi ensese en un usuario que certica todo
lo que cae en sus manos, sin hacer ninguna comprobaci on, o aceptar aquellos que,
adem as, posean rmas de otros usuarios.
Como puede comprobarse, en este esquema la conanza en una entidad certi-
cadora puede tomar muchos valores, frente a los dos conable y no conable
que puede tomar en un esquema jer arquico. Se establece, de hecho, una gradaci on de
niveles de conanza que, como resultado, proporciona a su vez grados de conan-
za sobre las claves p ublicas que nos encontremos, variando desde desconanza total
hasta conanza absoluta.
17.5. Autenticaci on Mediante Funciones Resumen
En muchos casos, la utenticaci on se lleva a cabo a partir de una pieza de infor-
maci on clave o contrase na que posee el agente que pretende autenticarse. Des-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
17.5. Autenticaci on Mediante Funciones Resumen 231
cribiremos en esta secci on dos ejemplos de este tipo: la autenticaci on de un usuario
mediante una contrase na, y la de un dispositivo tarjeta inteligente, por ejemplo
que posee una clave secreta embebida.
17.5.1. Autenticaci on por Contrase nas
Existe un caso muy especial de autenticaci on, cuyo prop osito es la identicaci on
de una persona frente a un sistema inform atico, y que consiste en la introducci on,
usualmente mediante un teclado, de una palabra o frase secreta password o passph-
rase en ingl es que unicamente el conoce.
La primera opci on que cabra emplear consiste simplemente en que el sistema in-
form atico almacene las contrase nas de cada usuario, y que cada vez que un usuario
pretenda acceder, se le pide la palabra clave y despu es se la compara con el valor
almacenado. El problema es que si alguien logra acceder a la base de datos de con-
trase nas, podr a suplantar f acilmente a todos y cada uno de los usuarios del sistema.
Teniendo en cuenta que un sistema inform atico moderno suele permitir el acceso de
m ultiples usuarios, con diversos niveles de privilegios sobre el mismo, e incluso en
muchos casos existe un usuario gen erico invitado, podemos concluir que almacenar
las contrase nas en claro representa un riesgo demasiado elevado. Afortunadamente,
el empleo de funciones resumen nos va a permitir validar las contrase nas sin necesi-
dad de almacenarlas.
Si en lugar de las contrase nas en claro, guardamos en nuestro sistema los valo-
res resultantes de aplicar alguna funci on resumen (captulo 13) sobre las mismas,
podremos vericar las contrase nas introducidas por los usuarios simplemente calcu-
lando la signatura asociada a la clave introducida por el usuario y comparando con
lo que tengamos almacenado. Sin embargo, y debido a las propiedades de las fun-
ciones resumen, resultar a extremadamente complejo para un atacante encontrar una
contrase na a partir de una signatura dada. Este sistema, si bien es considerablemente
m as seguro que el almacenamiento en claro de las contrase nas, puede ser objeto de
un ataque relativamente sencillo:
Ataque de diccionario
Un usuario malicioso puede construir una base de datos con millones de contra-
se nas un diccionario, construidas a partir de palabras, nombres, fechas, combi-
naciones num ericas m as o menos habituales, etc., y calcular la signatura de cada una
de ellas. Una vez obtenido el archivo que contiene las signaturas de las contrase nas
de cada usuario, bastar a con buscar en la base de datos el valor correcto. Este diccio-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
232 17. Autenticaci on, Certicados y Firmas Digitales
nario puede construirse de forma previa e independiente al sistema inform atico que
se pretenda atacar, y ser reutilizado tantas veces como se desee.
Para protegerse de los ataques de diccionario existen dos estrategias b asicas:
Concatenar a cada contrase na un trozo de informaci on aleatorio denominado
sal antes de calcular su signatura, y almacenar en la base de datos tanto la
signatura como la sal. Esto obligara a un posible atacante a recalcular todo el
diccionario cada vez que quisiera averiguar una contrase na, dicultando enor-
memente su tarea.
Escoger contrase nas difciles de adivinar. Es fundamental, a la hora de seleccio-
nar las contrase nas de los usuarios, que estas sean lo sucientemente complejas
como para no aparecer en un diccionario. Para ello es conveniente emplear pro-
gramas especcos de generaci on de contrase nas, en lugar de conar en nuestro
propio ingenio, ya que est a demostrado que el ser humano es bastante prede-
cible. Otra medida bastante recomendable, y que ya incorporan bastantes siste-
mas inform aticos, es incorporar rutinas de medici on de la calidad de las contra-
se nas e impedir a los usuarios seleccionar contrase nas demasiado d ebiles.
Existe no obstante una serie de posibles problemas para un sistema basado en
contrase nas, independientes de su implementaci on desde el punto de vista l ogico,
que conviene tener en cuenta:
Si el acceso se lleva a cabo desde un terminal remoto, la contrase na debe enviar-
se a trav es de un canal de comunicaciones, por lo que debera emplearse una
conexi on previamente cifrada.
El empleo de un teclado para introducir la palabra secreta puede hacer el sis-
tema susceptible de escuchas. Existen estudios que demuestran que a trav es de
las radiaciones electromagn eticas de un teclado cualquiera, e incluso del sim-
ple sonido de cada tecla, es posible conocer lo que introduce el usuario en la
consola.
El modo m as seguro de custodiar la contrase na es la propia memoria, pero si
aquella es demasiado compleja, y especialmente si se cambia con frecuencia,
puede resultar difcil de recordar. En este sentido, hay opiniones para todos los
gustos: desde los que emplean reglas nemot ecnicas, hasta aquellos que reco-
miendan tener anotada la contrase na y custodiarla cuidadosamente.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
17.5. Autenticaci on Mediante Funciones Resumen 233
17.5.2. Autenticaci on por Desafo
Existen muchas aplicaciones en las que un dispositivo electr onico una tarjeta
inteligente, por ejemplo necesita identicarse frente a un sistema inform atico. Esto
se puede hacer a trav es de una clave secreta almacenada en el dispositivo, en alguna
zona de memoria que no pueda ser leda desde el exterior. Como es obvio, en ning un
caso la clave puede ser enviada en claro en el proceso de autenticaci on, porque si
no un atacante que intercepte la comunicaci on podr a suplantar al dispositivo. Tam-
bi en es necesario que cada proceso de autenticaci on involucre mensajes totalmente
distintos, ya que si no el impostor podra memorizar las respuestas dadas por el dis-
positivo y replicarlas posteriormente. De hecho, debe construirse el protocolo de tal
forma que la informaci on que pudiese escuchar un atacante resulte completamente
in util.
Las funciones MAC permiten llevar a cabo de manera sencilla este tipo de autenti-
caciones, denominada autenticaci on por desafo, y se desarrolla de forma interactiva
entre el sistema antri on y el dispositivo que se autentica. Consiste en generar una
clave K, de la cual habr a una copia tanto en el servidor como en el dispositivo (gura
17.3). Cuando el dispositivo solicita ser identicado, el servidor genera un valor alea-
torio X y calcula su MAC empleando la clave K. Posteriormente enva el valor de X,
que ser a distinto en cada realizaci on del protocolo, al dispositivo, que realizar a in-
ternamente los mismos c alculos y devolver a el resultado al servidor. Si la respuesta
recibida por el dispositivo coincide con el valor calculado en el servidor, el proceso
de autenticaci on habr a tenido exito.
Un ejemplo de este mecanismo lo tenemos en las tarjetas SIM que emplean los
tel efonos celulares GSM. Dichas tarjetas llevan implementado un algoritmo MAC,
denominado COMP128, que en principio era secreto, fue reconstruido por la comu-
nidad cypherpunk a partir de documentos ltrados e ingeniera inversa, y roto en pocos
das por criptoanalistas de la Universidad de Berkeley.
Para que este tipo de protocolos funcione correctamente es necesario que el algo-
ritmo MAC sea lo sucientemente bueno, es decir, que a partir de una cantidad arbi-
traria de pares X, MAC
K
(X) resulte computacionalmente imposible recuperar el
valor de K. Este fue precisamente el problema de COMP128, ya que se descubri o una
forma de recuperar K a partir de unos 100.000 pares X, MAC
K
(X). El ataque con-
sista b asicamente en suplantar al servidor y enviar 100.000 valores de X escogidos
cuidadosamente al dispositivo, que devolva sistem aticamente los valores de la fun-
ci on MAC correspondiente para cada uno de ellos. Posteriormente se realizanban los
c alculos fuera de lnea, obteni endose como resultado el valor de K, suciente para
clonar la tarjeta SIM en cuesti on.
Tambi en es necesario que los valores de X que se generen en cada realizaci on
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
234 17. Autenticaci on, Certicados y Firmas Digitales
Figura 17.3: Esquema de autenticaci on por desafo.
del algoritmo sean criptogr acamente aleatorios, ya que en caso contrario un atacan-
te podra predecir el valor de X para la siguiente realizaci on del protocolo, luego
suplantara al servidor usando ese valor, se pondra en contacto con el dispositivo
para que este le devolviera el valor de MAC
K
(X). Con esta informaci on en su poder,
podra solicitar al servidor ser autenticado, y lograra suplantar con exito al dispo-
sitivo.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Captulo 18
PGP
El nombre PGP responde a las siglas pretty good privacy (privacidad bastante bue-
na), y se trata de un proyecto iniciado a principios de los 90 por Phil Zimmermann.
La total ausencia por aquel entonces de herramientas sencillas, potentes y baratas que
acercaran la criptografa seria al usuario movi o a su autor a desarrollar una aplicaci on
que llenara este hueco.
Con el paso de los a nos, PGP se ha convertido en uno de los mecanismos m as
populares y ables para mantener la seguridad y privacidad en las comunicaciones,
especialmente a trav es del correo electr onico, tanto para peque nos usuarios como
para grandes empresas.
Actualmente PGP se ha convertido en un est andar internacional (RFC 2440), lo
cual est a dando lugar a la aparici on de m ultiples productos PGP, que permiten desde
cifrar correo electr onico hasta codicar particiones enteras del disco duro (PGPDisk),
pasando por la codicaci on autom atica y transparente de todo el tr aco TCP/IP
(PGPnet).
18.1. Fundamentos e Historia de PGP
PGP trabaja con criptografa asim etrica, y por ello tal vez su punto m as fuerte
sea precisamente la gran facilidad que ofrece al usuario a la hora de gestionar sus
claves p ublicas y privadas. Si uno emplea algoritmos asim etricos, debe poseer las
claves p ublicas de todos sus interlocutores, adem as de la clave privada propia. Con
PGP surge el concepto de anillo de claves (o llavero), que no es ni m as ni menos que el
lugar que este programa proporciona para que el usuario guarde todas las claves que
posee. El anillo de claves es un unico chero en el que se pueden efectuar operaciones
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
236 18. PGP
de extracci on e inserci on de claves de manera sencilla, y que adem as proporciona un
mecanismo de identicaci on y autenticaci on de llaves completo y simple de utilizar.
Esta facilidad en la gesti on de claves es una de las causas fundamentales que han
hecho a PGP tan popular.
La historia de PGP se remonta a comienzos de los a nos 90. La primera versi on
era completamente diferente a los PGP posteriores, adem as de ser incompatible con
estos. La familia de versiones 2.x.x fue la que alcanz o una mayor popularidad, y sigue
siendo utilizada por mucha gente en la actualidad. Los PGP 2.x.x emplean unicamen-
te los algoritmos IDEA, RSA y MD5.
En alg un momento una versi on de PGP atraves o las fronteras de EE.UU. y na-
ci o la primera versi on internacional de PGP, denominada PGPi, lo que le supuso a
Phil Zimmermann una investigaci on de m as de tres a nos por parte del FBI, ya que
supuestamente se haban violado las restrictivas leyes de exportaci on de material
criptogr aco que poseen los Estados Unidos. Para la versi on 5 de PGP se subsan o es-
te problema exportando una versi on impresa del c odigo fuente, que luego era recons-
truida y compilada en Europa (m as informaci on en http://www.pgpi.com).
Hasta principios de 2001 la poltica de distribuci on de PGP consisti o en permitir
su uso gratuito para usos no comerciales y en publicar el c odigo fuente en su integri-
dad, con el objetivo de satisfacer a los desconados y a los curiosos. Sin embargo, con
el abandono de la empresa por parte de Zimmermann, en febrero de 2001, el c odigo
fuente dej o de publicarse. En la actualidad (nales de 2004), la empresa que gestiona
los productos PGP (PGP Corporation), ha vuelto a publicar el c odigo fuente de los
mismos.
Paralelamente a la azarosa existencia empresarial de PGP, el proyecto GNU ha
estado desarrollando su propia aplicaci on de c odigo abierto compatible con el RFC
2440, denominada GnuPG, y que solo emplea algoritmos libres de patentes.
18.2. Estructura de PGP
18.2.1. Codicaci on de Mensajes
Como el lector ya sabe, los algoritmos sim etricos de cifrado son considerable-
mente m as r apidos que los asim etricos. Por esta raz on PGP cifra primero el mensaje
empleando un algoritmo sim etrico (ver gura 18.1) con una clave generada aleato-
riamente (clave de sesi on) y posteriormente codica la clave haciendo uso de la llave
p ublica del destinatario. Dicha clave es extrada convenientemente del anillo de cla-
ves p ublicas a partir del identicador suministrado por el usuario, todo ello de forma
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
18.2. Estructura de PGP 237
transparente, por lo que unicamente debemos preocuparnos de indicar el mensaje a
codicar y la lista de identicadores de los destinatarios. N otese que para que el
mensaje pueda ser ledo por m ultiples destinatarios basta con que se incluya en la
cabecera la clave de sesi on codicada con cada una de las claves p ublicas correspon-
dientes.
Cuando se trata de decodicar el mensaje, PGP simplemente busca en la cabecera
las claves p ublicas con las que est a codicado y nos pide una contrase na. La con-
trase na servir a para que PGP abra nuestro anillo de claves privadas y compruebe si
tenemos una clave que permita decodicar el mensaje. En caso armativo, PGP des-
cifrar a el mensaje. N otese que siempre que queramos hacer uso de una clave privada,
habremos de suministrar a PGP la contrase na correspondiente, por lo que si el anillo
de claves privadas quedara comprometido, un atacante a un tendra que averiguar
nuestra contrase na para descifrar nuestros mensajes. No obstante, si nuestro archivo
de claves privadas cayera en malas manos, lo mejor ser a revocar todas las claves que
tuviera almacenadas y generar otras nuevas.
Como puede comprenderse, gran parte de la seguridad de PGP reside en la cali-
dad del generador aleatorio que se emplea para calcular las claves de sesi on, puesto
que si alguien logra predecir la secuencia de claves que estamos usando, podr a des-
cifrar todos nuestros mensajes independientemente de los destinatarios a los que va-
yan dirigidos. Afortunadamente, PGP utiliza un m etodo de generaci on de n umeros
pseudoaleatorios muy seguro una secuencia aleatoria pura es imposible de con-
seguir, como se dijo en el captulo 8, y protege criptogr acamente la semilla que
necesita
1
. No obstante, consideraremos sensible al chero que contiene dicha semi-
lla normalmente RANDSEED.BIN, y por lo tanto habremos de evitar que quede
expuesto.
18.2.2. Firma Digital
En lo que se reere a la rma digital, las primeras versiones de PGP obtienen en
primer lugar la signatura MD5 (ver secci on 13.4), que posteriormente se codica em-
pleando la clave privada RSA correspondiente. Versiones m as modernas implemen-
tan el algoritmo DSS, que emplea la funci on resumen SHA-1 y el algoritmo asim etrico
DSA (secciones 12.4.4 y 13.5).
La rma digital o signatura puede ser a nadida al chero u obtenida en otro chero
aparte. Esta opci on es muy util si queremos rmar un chero ejecutable, por ejemplo.
1
Algunas implementaciones de PGP emplean otras fuentes de aleatoriedad, como ocurre con
GnuPG, por lo que no necesitan almacenar una semilla aleatoria.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
238 18. PGP
Figura 18.1: Codicaci on de un mensaje PGP
18.2.3. Armaduras ASCII
Una de las funcionalidades m as utiles de PGP consiste en la posibilidad de gene-
rar una armadura ASCII para cualquiera de sus salidas. Obviamente, todas las salidas
de PGP (mensajes codicados, claves p ublicas extradas de alg un anillo, rmas digi-
tales, etc.) consisten en secuencias binarias, que pueden ser almacenadas en archivos.
Sin embargo, en la mayora de los casos puede interesarnos enviar la informaci on
mediante correo electr onico, o almacenarla en archivos de texto.
Recordemos que el c odigo ASCII original emplea 7 bits para codicar cada letra, lo
cual quiere decir que los caracteres situados por encima del valor ASCII 127 no est an
denidos, y de hecho diferentes computadoras y sistemas operativos los interpretan
de manera distinta. Tambi en hay que tener en cuenta que entre los 128 caracteres
ASCII se encuentran muchos que representan c odigos de control, como el retorno de
carro, el n de chero, el tabulador, etc. La idea es elegir 64 caracteres imprimibles (que
no sean de control) dentro de esos 128. Con este conjunto de c odigos ASCII podre-
mos representar exactamente 6 bits, por lo que una secuencia de tres bytes (24 bits)
podr a codicarse mediante cuatro de estos caracteres. Esta cadena de smbolos resul-
tante se trocea colocando en cada lnea un n umero razonable de smbolos, por ejemplo
72. El resultado es una secuencia de caracteres que pueden ser tratados como texto
est andar, adem as de ser manipulados en cualquier editor. Existe la ventaja adicional
de que esta representaci on es apropiada para ser enviada por correo electr onico, ya
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
18.2. Estructura de PGP 239
que muchas pasarelas de correo no admiten caracteres por encima de 127, y adem as
truncan las lneas demasiado largas, por lo que podran alterar los mensajes si viajaran
en otro formato.
Como ejemplo incluyo mi clave p ublica PGP rmada con la de Kript opolis
en formato ASCII:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.4 (GNU/Linux)
mQGiBDRkk6kRBADKYHrNnFeXlggr14IVGy6FudLG2Cd1wb3yKOaNnodyjZa0a5oi
Ls9jDfDfEdq8K+W6QBLv06w7oVFPNMYsU+ufb0pa/bHWq6IrHxKkTVH4o4PUYTmH
W0jfGjoXEtAUZ0vp9wYR0Yqi7wXO3L/N5KuVNjLj7rXOT7rOmHsOjmY1cQCg//2w
OcyAnkaDCODFNif/VdowntcD/j5midszzU6M7BWmeDJoqEEGzSuxfmRSNyNZe6/6
5k8TFXIVpB0vnxwsZSh0POSlNgz1cmX6VbEmmUXoYsMRfq7iXHSAZ3DLB333yR2b
QUbkrH5WZF75G2vvTO7rKS5KtmROJ8E+vX/py6PGz1f3tBZJ94KwM787g6j43F4X
IYTAA/9L5GZzClHOGt01BtZkioH5YoHnDGHKC8mMXcykXA5KdJvl+9jGz3InUHiG
04StaMxMcDcWLzL5FVLz3LBzlOXGs7jikgH3BYBI3p7dIExfRADucDHyKL/CpIl5
zqHBI+5bxY3Tysu3UlA1UkQloJMsSInlkkjQhwihNYsj8Avr9LYAAAAmTWFudWVs
IEx1Y2VuYSBMb3BleiA8bWx1Y2VuYUB1amFlbi5lcz6IVgQTEQIAFgUCOHyzZAQL
CgQDAxUDAgMWAgECF4AACgkQSLJRYWmrV4TqngCgsDk/ysnBdpPwp/r2dL0Lzcq0
1J8AnRxUUiS3SoVb3WfnaSQmdb6eaJ3qiEsEEBECAAsFAjTa4FoECwMBAgAKCRBI
slFhaatXhO9yAJ9vI1QWihIKMUa4g3S8t3EZZ9SXxgCaAjfnHx8Kayylm6XXjjsC
6iJKBmaIPwMFEDTa5h2buAet57tpPxEC8K4AoOTP5I1fJFN6KtZdmLtENKSRrKfx
AJ4gwl5R1MzpeTFiysWKab/PsU5GwohGBBARAgAGBQI3eQrfAAoJEPi4YmyN8qnz
A1sAniVQF6V/6gBVPq0Idt1Yrtuy4+aQAKDTuyVvfU1tRNy/U89FhzMmBVRL44ht
BBERAgAtBQI+JnRPBYMB4TOAIBpodHRwOi8vd3d3LnRvZWhvbGQuY29tL3JvYm90
Y2EvAAoJEBBYFoXFIQl+g80An1lb7UmR7euGyIwluvc4n84w3opTAJwKLudIa08d
6eOKeSmDMwMYsmHCZrkCDQQ0ZJRfEAgAw/iGbTW9OaTyfV4RNZdg1HRDGEyasZdE
PCM9ihPkfvQyK44nH13OseaikIYoyoA/BFiWeTNcHvb/4KOuCK2GnO/p/6ohFcAO
K5anEygGrhUUttUw8kYZ0rUBFIJnurtDcxwawugbPFv3qA+sn756q7XUxjnTtpou
+lWyj6VkN/EvrZDf9E7ikPUqRuIsHzJ5PUwypWtXaKg2HfClKkZlYFqzdPDCssrX
OfjZDx2q6GSek6Sgj5Ph3X4opoXIx6Cfmp4ELYmvdmnDu4oe6A6l/XIQ8NNhj+Gx
dtOgTq8QKDRWl2f6M3pQgPnYzBHoDIqnr/ie8jK4seDezRPtL1/TlQACAgf+JXw0
3Q1opLBAaO/WZlcs2SiEzqv+gCkFW9vk2bJbSY4PQHwiLc0HwcPEDi7jIu9QxJfZ
cHkax8XgXkCvfFJFFmqgqarIOzXp/BgiYyma6GVAmXcI6lI9ZSgzPvvaNFGe0/7R
6Yroee7nJ/9RyxF89SI++5tZY+/bpLuKAbnX9SA3PEnUWiHD2ah3cC3VXNrus3ls
KA7MEh3q9xnoF/8Z7vwldrKUyLZdaDqSM7isyI5Fe0PWn/mtW4+7/rjboaY7PGJC
Aqtn8cHDvByRYCZ8kLRlobQHzL8XN1fsdfBv6WDNeS9IqBCXcPME7R21wytsi2WM
DnYL7rQWU/CgLqFx2Ig/AwUYNGSUX0iyUWFpq1eEEQL3JACfTfvh6A70A9N2SbnR
BmktuRBp9NsAn2ZQbpg0eaeVRuzejA2QM7ldrz53mQENAzRkY3EAAAEIAOy6UGjP
ly4OJtrPookV6kxUjmL83LY6jI+ZRH5/ZkHeLcQ+Qufmme+bOms5XHv+KTOkKV5R
UdJwUXTQtHe+yX7XcvnLlxnxE/dmhgeNHcLH0XfQ9rBjIvREcKtRhUBP1t0d+QTn
Uro7Jrg8ZQSTupLTb5LO7683FfF/2eBSMsn1QZx6ODSir4t05EqMOzlHc53jV8y2
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
240 18. PGP
bYDRDMhQ5r1C1ap0vZS6tp85Wb64+aun0et1yee4voeUwNubnr1FBXzfBwQUy4e4
IdkJbXYb1f8Iy7+t5B3WviU1BgGQOP29fObjg7eMtXUgaF6eYK88Byu7tHMuFYQR
Oeq37dWwHELi6LEABRO2AAAAJE1hbnVlbCBMdWNlbmEgUlNBIDxtbHVjZW5hQHVq
YWVuLmVzPokBFQMFEDY7Tx/t1bAcQuLosQEBsCEIAOvHEw9fuHTqWpRMxtvqYZnf
oslqg27vNC4fE4QGc/KhyxwCeqm/fUh51geVMna7QwLubbHcmd4IPAZT614LdAhw
zDzv99o+iHDwL3fv+LJWqdmkxCZYHJs7vKMSShaVCd9JXPe5FT6iXIukIy3oCU5T
kjumRZNzr40MgQZzYW5rxCfYX+feoLaX8SBR7EU2mdX1LaMy+RJ3cG7a76btqdKn
Lx+E5USlIDWC26sk7Y+Dutp987F3ZHW9TVO5IUHn5TqirxnL7a6ZGn2c2oq4V27l
oCuFxo6/KJ1m92tddM35SHzoijA6hWWH9OsaMiA6d4Qu1LbK28NElnAo+FZUitOJ
ARUDBRA3eQqZGIrd0JPxO/EBAcE1B/0WG4aU63s6E5lLvlUSsZ0yTtUBPETH0K2y
l5scacX5+uF/7+hHGAoN0/yTbpB0ODoxVNxgctkRDf82QHtDr4HkGdvdux/Grwuu
FigKQoeBEpPZ1yAcLX/zcWKPjveysNhywngFHmzdnvCXJeegWsila1BEoWT4OeMp
elY7U9zH7RLY/u66yKM5TIitFYd5uOWO+SSWnkvD8KvbAv2UYYXbK9aXieIKnrt/
F8SB8nCQzxAUy2A1JBJoQt07B4AyevHhjOZ1zAsUdwVk0zcfx1AsI0N9hWE9NUh/
3WLyKSe4IF35wYZEdcy7+i0SwBinZ4dls8wwvcISF3JwqJmDhL+c
=2wgK
-----END PGP PUBLIC KEY BLOCK-----
Como puede verse, los unicos smbolos empleados son las letras may usculas y
min usculas, los n umeros, y los signos /y +; el resto de smbolos y caracteres de
control simplemente ser a ignorado. Cualquiera podra copiar esta clave p ublica a
mano (!) o emplear una aplicaci on OCR
2
para introducirla en su anillo de claves
correspondiente, aunque es mejor descargarla a trav es de Internet.
18.2.4. Gesti on de Claves
PGP, como ya se ha dicho, almacena las claves en unas estructuras denominadas
anillos. Un anillo no es m as que una colecci on de claves, almacenadas en un chero.
Cada usuario tendr a dos anillos, uno para las claves p ublicas (PUBRING.PKR) y otro
para las privadas (SECRING.SKR).
Cada una de las claves, adem as de la secuencia binaria correspondiente para el
algoritmo concreto donde se emplee, posee una serie de datos, como son el identi-
cador del usuario que la emiti o, la fecha de expiraci on, la versi on de PGP con que fue
generada, y la denominada huella digital (ngerprint). Este ultimo campo es bastante
util, pues se trata de una secuencia hexadecimal lo sucientemente larga como para
que sea unica, y lo sucientemente corta como para que pueda ser escrita en un pa-
pel, o leda de viva voz. La huella digital se emplea para asegurar la autenticidad de
una clave. Por ejemplo, la huella digital de la clave p ublica anterior es:
2
OCR: Optical Character Recognition, reconocimiento optico de caracteres. Permite convertir texto
escrito a formato electr onico.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
18.2. Estructura de PGP 241
9E2B 9D14 CBCE FE12 16A8 C103 48B2 5161 69AB 5784
Si alguien quisiera asegurarse de la autenticidad de dicha clave, bastara con que
llamara por tel efono al autor, y le pidiera que le leyera su huella digital. Afortunada-
mente, las ultimas implementaciones de PGP permiten convertir esta cadena hexa-
decimal en una secuencia de palabras f acilmente legibles por tel efono.
18.2.5. Distribuci on de Claves y Redes de Conanza
PGP, como cualquier sistema basado en clave p ublica, es susceptible a ataques de
intermediario (secci on 12.2). Esto nos obliga a establecer mecanismos para asegurar-
nos de que una clave procede realmente de quien nosotros creemos. Una de las cosas
que permite esto, aunque no la unica, es la huella digital.
PGP permite a un usuario rmar claves, y de esta forma podremos conar en la
autenticidad de una clave siempre que esta venga rmada por una persona de con-
anza. Hay que distinguir entonces dos tipos de conanza: aquella que nos permite
creer en la validez de una clave, y aquella que nos permite arnos de una persona
como certicador de claves. La primera se puede calcular autom aticamente, en fun-
ci on de que las rmas que contenga una clave pertenezcan a personas de conanza,
pero la segunda ha de ser establecida manualmente. No olvidemos que el hecho de
que una clave sea aut entica no nos dice nada acerca de la persona que la emiti o. Por
ejemplo, yo puedo tener la seguridad de que una clave pertenece a una persona, pero
esa persona puede dedicarse a rmar todas las claves que le llegan, sin asegurarse de
su autenticidad, por lo que en ning un caso merecer a nuestra conanza.
Cuando una clave queda comprometida, puede ser revocada por su autor. Para
ello basta con generar y distribuir un certicado de revocaci on que informar a a todos los
usuarios de que esa clave ya no es v alida. Para generarlo es necesaria la clave priva-
da, por lo que en muchos casos se recomienda generar con cada clave su certicado
de revocaci on y guardarlo en lugar seguro, de forma que si perdemos la clave priva-
da podamos revocarla de todas formas. Afortunadamente, las ultimas versiones de
PGP permiten nombrar revocadores de claves, que son usuarios capaces de invalidar
nuestra propia clave, sin hacer uso de la llave privada.
18.2.6. Otros PGP
La r apida popularizaci on de PGP entre ciertos sectores de la comunidad de Inter-
net, y el desarrollo del est andar p ublico Open PGP, han hecho posible la proliferaci on
de variantes m as o menos complejas del programa de Zimmermann. Muchas de ellas
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
242 18. PGP
son desarrolladas por los propios usuarios, para mejorar alguna caracterstica, como
manejar claves de mayor longitud (PGPg), y otras corresponden a aplicaciones de
tipo comercial.
Especial menci on merece la implementaci on de Open PGP que est a llevando a
cabo el proyecto GNU: GnuPG (GNU Privacy Guard), que funciona en m ultiples pla-
taformas, y emplea unicamente algoritmos de libre distribuci on entre ellos AES,
aunque presenta una estructura que la hace f acilmente extensible. De hecho, hoy por
hoy, podramos decir que es la implementaci on de PGP m as completa, segura y util
para cualquier usuario.
18.3. Vulnerabilidades de PGP
Seg un todo lo dicho hasta ahora, parece claro que PGP proporciona un nivel de
seguridad que nada tiene que envidiar a cualquier otro sistema criptogr aco jam as
desarrollado. Qu e sentido tiene, pues, hablar de sus vulnerabilidades, si estas parecen
no existir?
Como cualquier herramienta, PGP proporcionar a un gran rendimiento si se em-
plea correctamente, pero su uso inadecuado podra convertirlo en una protecci on
totalmente in util. Es por ello que parece interesante llevar a cabo una peque na reca-
pitulaci on acerca de las buenas costumbres que har an de PGP nuestro mejor aliado.
Escoger contrase nas adecuadas. Todo lo comentado en la secci on 17.5.1 es v alido
para PGP.
Proteger adecuadamente los archivos sensibles. Estos archivos ser an, l ogicamente,
nuestros llaveros (anillos de claves) y el chero que alberga la semilla aleatoria.
Esta protecci on debe llevarse a cabo tanto frente al acceso de posibles curio-
sos, como frente a una posible p erdida de los datos (recuerde que si pierde el
archivo con su clave privada no podr a descifrar jam as ning un mensaje!).
Emitir revocaciones de nuestras claves al generarlas y guardarlas en lugar seguro.
Ser an el unico mecanismo v alido para revocar una clave en caso de p erdida del
anillo privado. Afortunadamente, la versi on 6 de PGP permite nombrar revoca-
dores para nuestras claves, de forma que estos podr an invalidarla en cualquier
momento sin necesidad de nuestra clave privada.
Firmar s olo las claves de cuya autenticidad estemos seguros. Es la unica manera de
que las redes de conanza puedan funcionar, ya que si todos rm aramos las
claves alegremente, podramos estar certicando claves falsas.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
18.3. Vulnerabilidades de PGP 243
Al margen de un uso correcto, que es fundamental, debemos mencionar que ulti-
mamente han sido detectados algunos fallos en las diversas implementaciones de
PGP. Clasicaremos dichas vulnerabilidades en dos grupos claramente diferencia-
dos:
Debidas a la implementaci on: Estos agujeros de seguridad son provocados por
una implementaci on defectuosa de PGP, y corresponden a versiones concretas
del programa. Por ejemplo, el fallo descubierto en la versi on 5.0 de PGP para
UNIX, que haca que las claves de sesi on no fueran completamente aleatorias,
o el encontrado en todas las versiones para Windows, desde la 5.0 a la 7.0.4,
en la que un inadecuado procesamiento de las armaduras ASCII permita a un
atacante introducir cheros en la computadora de la vctima.
Intrnsecas al protocolo: En este apartado habra que rese nar aquellos agujeros de
seguridad que son inherentes a la denici on del est andar Open PGP. En este
sentido, a principios de 2001 se hizo p ublica una t ecnica que permita a un ata-
cante falsicar rmas digitales. En cualquier caso, se necesita acceso fsico a la
computadora de la vctima para manipular su clave privada, por lo que el fallo
carece de inter es pr actico.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
244 18. PGP
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Parte V
Ap endices
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Ap endice A
Criptografa Cu antica
La Fsica Cu antica estudia el comportamiento de la materia a escalas muy pe-
que nas, del orden de los atomos. En el mundo cu antico las reglas que rigen la Mec ani-
ca Cl asica dejan de tener validez, y se producen fen omenos tan sorprendentes como
interesantes, que abren las puertas a posibilidades de aplicaci on casi increbles en
muchos campos, entre los que se encuentra, por supuesto, la Criptografa.
Cabe recordar que hoy por hoy ya existen algunas aplicaciones pr acticas de la
Mec anica Cu antica en Criptografa, mientras que otras, como las basadas en los com-
putadores cu anticos, siguen perteneciendo al ambito de la especulaci on, ya que la
tecnologa que podra permitirnos desarrollar dispositivos de este tipo a un no existe.
A.1. Mec anica Cu antica y Criptografa
Una de las aplicaciones directas de los fen omenos cu anticos en Criptografa viene
de un principio b asico de esta teora: un objeto no puede interaccionar con otro sin
experimentar alguna modicaci on. Esto est a permitiendo fabricar canales de comu-
nicaci on en los que los datos viajan en forma de fotones individuales con diferentes
caractersticas. El hecho aqu es que si un atacante intentara interceptar la comuni-
caci on no tendra m as remedio que interactuar con esos fotones, modic andolos de
manera detectable por el receptor.
Este tipo de propiedades permite construir lneas de comunicaci on totalmente im-
posibles de interceptar sin ser descubierto, y de hecho ya se han llevado a cabo algu-
nos experimentos en los que se ha logrado transmitir informaci on a distancias y ve-
locidades respetables. Evidentemente, estos canales ultraseguros difcilmente ser an
tan r apidos o tan baratos como las lneas el ectricas y opticas actuales, pero en un
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
248 A. Criptografa Cu antica
2
3
1
C
B
A
4
Figura A.1: Experimento con espejos para comprobar la superposici on cu antica de
estados en un fot on. A es una fuente emisora de fotones, B y C son receptores, 1 y
4 son espejos totalmente reectantes, y 2 y 3 son espejos que reejan exactamente la
mitad de la luz y dejan pasar la otra mitad. Contrariamente a lo que dira la intuici on,
en B no se detecta nada.
futuro pr oximo constituir an medios id oneos para transmitir informaci on de car acter
sensible.
A.2. Computaci on Cu antica
Existe un fen omeno en Mec anica Cu antica realmente difcil de entender para
nuestras cl asicas mentes. Obs ervese la gura A.1. En ella se ilustra un conocido y
sorprendente experimento. A es una fuente capaz de emitir fotones, 1 y 4 dos espejos
completamente reectantes, y 2 y 3 espejos semirreectantes, que reejan la mitad
de la luz y dejan pasar la otra mitad. Si situamos en B y C detectores de fotones, la
intuici on y la Mec anica Cl asica nos diran que cada fot on acabar a excitando B o
C con un 50 % de probabilidades. Pues bien, lo que en realidad ocurre es que C se ex-
cita siempre y B no lo hace nunca. Esto demuestra que, a nivel subat omico, cualquier
partcula puede estar en dos sitios simult aneamente, o m as propiamente, en una super-
posici on cu antica de dos estados, lo cual signica que est a realmente en esos dos estados,
en lugar estar en uno u otro con determinada probabilidad.
Supongamos ahora que logramos construir un dispositivo capaz de representar
bits mediante estados cu anticos de una o muy pocas partculas. Si colocamos dichas
partculas en una combinaci on de los dos estados b asicos, tendramos un bit cu antico
(o qubit), capaz de representar un 1 y un 0. . . al mismo tiempo!.
Estas ideas, que datan de los a nos 80, se han barajado m as bien como simples en-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
A.3. Expectativas de Futuro 249
tretenimientos para mentes inquietas, hasta que a mediados de los 90 se propuso el
primer algoritmo capaz de ser ejecutado en una computadora cu antica. Dicho algorit-
mo podra, de forma eciente, factorizar n umeros enteros muy grandes. Imagnense
las implicaciones que esto tiene para la Criptografa moderna, ya que supondra la
cada de la gran mayora de los algoritmos asim etricos, que basan su funcionamiento
en el problema de la factorizaci on de grandes enteros, y la necesidad inmediata de
alargar considerablemente las longitudes de claves para algoritmos sim etricos. Evi-
dentemente, estos resultados han provocado que mucha gente tome muy en serio este
tipo de computadoras, y que en la actualidad haya importantes grupos dedicados a
la investigaci on en este campo.
A.3. Expectativas de Futuro
Por fortuna o por desgracia, seg un se mire, los modelos cu anticos de compu-
taci on hoy por hoy no pasan de meras promesas, ya que la tecnologa actual no per-
mite connar partculas individuales de forma que preserven su estado cu antico. Los
m as optimistas aseguran que en pocos a nos tendremos los primeros microprocesa-
dores cu anticos en funcionamiento, mientras que la gran mayora opina que todava
transcurrir an d ecadas antes de poder disponer del primer dispositivo realmente ope-
rativo si es que lo conseguimos alg un da.
Lo que s podemos armar con rotundidad es que los modelos criptogr acos ac-
tuales seguir an siendo v alidos durante algunos a nos m as. En cualquier caso, no con-
viene perder de vista estas promesas tecnol ogicas, ya que cuando se conviertan en
realidades, obligar an a replantear muchas cuestiones, y no s olo en el ambito de la
Criptografa.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
250 A. Criptografa Cu antica
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Ap endice B
Ayudas a la Implementaci on
Incluiremos en este ap endice informaci on util para facilitar al lector la implemen-
taci on de diferentes algoritmos criptogr acos. Aquellos que no sepan programar, o
que simplemente no deseen escribir sus propias versiones de los criptosistemas que
aparecen en este libro, pueden prescindir de esta secci on.
B.1. DES
En el captulo dedicado a algoritmos sim etricos por bloques se ha hecho una des-
cripci on completa del algoritmo DES, pero se han omitido deliberadamente algunos
detalles que s olo son utiles de cara a la implementaci on, como pueden ser los valores
concretos de las S-Cajas y de las permutaciones que se emplean en este algoritmo.
B.1.1. S-Cajas
La tabla B.1 representa las ocho S-Cajas 6*4 que posee DES. Para aplicarlas basta
con coger el n umero de seis bits de entrada b
0
b
1
b
2
b
3
b
4
b
5
, y buscar la entrada corres-
pondiente a la la b
0
b
5
, columna b
1
b
2
b
3
b
4
. Por ejemplo, el valor de la tercera S-Caja
para 110010 corresponde a la la 2 (10), columna 9 (1001), es decir, 1 (0001).
B.1.2. Permutaciones
DES lleva a cabo permutaciones a nivel de bit en diferentes momentos. Las tablas
que aqu se incluyen deben leerse por las de arriba a abajo, y sus entradas corres-
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
252 B. Ayudas a la Implementaci on
Columna
Fila 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 S-Caja
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 S
1
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 S
2
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 S
3
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 S
4
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 S
5
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 S
6
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 S
7
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 S
8
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Cuadro B.1: S-Cajas de DES.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.1. DES 253
Permutaci on Inicial P
i
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
Permutaci on Final P
f
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
Cuadro B.2: Permutaciones Inicial (P
i
) y Final (P
f
) del algoritmo DES.
ponden al n umero de bit del valor inicial (empezando por el 1) que debe aparecer
en la posici on correspondiente. Por ejemplo, la primera tabla de B.2 lleva el valor
b
1
b
2
b
3
. . . b
64
en b
58
b
50
b
42
. . . b
7
.
Permutaciones Inicial y Final
La tabla B.2 contiene las permutaciones inicial y nal P
i
y P
f
del algoritmo DES.
La primera de ellas se lleva a cabo justo al principio, antes de la primera ronda, y la
segunda se aplica justo al nal. N otese que cada una de estas permutaciones es la
inversa de la otra.
Funci on f
En el c alculo de la funci on f se emplean dos permutaciones, E y P (ver gura
10.3). Dichas permutaciones se detallan en la tabla B.3. E es una permutaci on de
expansi on, por lo que da como salida 48 bits a partir de los 32 de entrada.
Generaci on de las K
i
En la gura 10.4 podemos observar el proceso de generaci on de los 16 valores
de K
i
, en el que se emplean dos nuevas permutaciones (EP1 y EP2), detalladas en la
tabla B.4. La primera toma como entrada 64 bits, de los que conserva s olo 56, mientras
que la segunda toma 56, y devuelve 48.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
254 B. Ayudas a la Implementaci on
Permutaci on E
32 1 2 3 4 5 4 5 6 7 8 9 8 9 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 1
Permutaci on 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
Cuadro B.3: Permutaciones E y P para la funci on f de DES.
Permutaci on EP1
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
Permutaci on EP2
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
Cuadro B.4: Permutaciones EP1 y EP2 para DES.
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.1. DES 255
B.1.3. Valores de prueba
Una vez que tengamos implementado nuestro algoritmo DES, conviene asegurar-
se de que funciona adecuadamente. Se incluyen en esta secci on algunos valores de
prueba, que contienen todos los datos intermedios que se emplean en el algoritmo,
para que el lector pueda compararlos y asegurarse de que su programa es correcto.
Los datos est an representados en hexadecimal, de izquierda a derecha.
Subclaves
Clave : 0123456789ABCDEF
Eleccion permutada :F0CCAA0AACCF00 -> L=F0CCAA0 R=AACCF00
Llaves Intermedias (Ki):
K01=0B02679B49A5 K02=69A659256A26 K03=45D48AB428D2 K04=7289D2A58257
K05=3CE80317A6C2 K06=23251E3C8545 K07=6C04950AE4C6 K08=5788386CE581
K09=C0C9E926B839 K10=91E307631D72 K11=211F830D893A K12=7130E5455C54
K13=91C4D04980FC K14=5443B681DC8D K15=B691050A16B5 K16=CA3D03B87032
-----
Clave : 23FE536344578A49
Eleccion permutada :42BE0B26F32C26 -> L=42BE0B2 R=6F32C26
Llaves Intermedias (Ki):
K01=A85AC6026ADB K02=253612F02DC3 K03=661CD4AE821F K04=5EE0505777C2
K05=0EC53A3C8169 K06=EE010FC2FC46 K07=2B8A096CA7B8 K08=0938BAB95C4B
K09=11C2CC6B1F64 K10=10599698C9BA K11=342965455E15 K12=836425DB20F8
K13=C907B4A1DB0D K14=D492A91236B6 K15=939262FD09A5 K16=B0AA1B27E2A4
Codicaci on
Codificando con Clave : 0123456789ABCDEF
Texto Claro :0000000000000000
Bloque permutado :0000000000000000
Paso01 : L=00000000 R=2F52D0BD Paso02 : L=2F52D0BD R=0CB9A16F
Paso03 : L=0CB9A16F R=15C84A76 Paso04 : L=15C84A76 R=8E857E15
Paso05 : L=8E857E15 R=20AC7F5A Paso06 : L=20AC7F5A R=526671A7
Paso07 : L=526671A7 R=D1AE9EE9 Paso08 : L=D1AE9EE9 R=6C4BBB2C
Paso09 : L=6C4BBB2C R=92882868 Paso10 : L=92882868 R=694A6072
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
256 B. Ayudas a la Implementaci on
Paso11 : L=694A6072 R=A0A3F716 Paso12 : L=A0A3F716 R=0A0D3F66
Paso13 : L=0A0D3F66 R=E672C20E Paso14 : L=E672C20E R=C0DBACF2
Paso15 : L=C0DBACF2 R=0B78E40C Paso16 : L=0B78E40C R=2F4BCFCD
Resultado sin permutar:2F4BCFCD0B78E40C
Resultado final :D5D44FF720683D0D
-----
Codificando con Clave : 0000000000000000
Texto Claro :123456789ABCDEF0
Bloque permutado :CCFF6600F0AA7855
Paso01 : L=F0AA7855 R=E0D40658 Paso02 : L=E0D40658 R=BA8920BC
Paso03 : L=BA8920BC R=90264C4F Paso04 : L=90264C4F R=2E3FA1F4
Paso05 : L=2E3FA1F4 R=8D42B315 Paso06 : L=8D42B315 R=8769003E
Paso07 : L=8769003E R=9F14B42F Paso08 : L=9F14B42F R=E48646E9
Paso09 : L=E48646E9 R=6B185CDC Paso10 : L=6B185CDC R=4E789B16
Paso11 : L=4E789B16 R=F3AA9FA8 Paso12 : L=F3AA9FA8 R=56397838
Paso13 : L=56397838 R=541678B2 Paso14 : L=541678B2 R=A4C1CE1A
Paso15 : L=A4C1CE1A R=191E936E Paso16 : L=191E936E R=8C0D6935
Resultado sin permutar:8C0D6935191E936E
Resultado final :9D2A73F6A9070648
-----
Codificando con Clave : 23FE536344578A49
Texto Claro :123456789ABCDEF0
Bloque permutado :CCFF6600F0AA7855
Paso01 : L=F0AA7855 R=A8AEA01C Paso02 : L=A8AEA01C R=71F914D1
Paso03 : L=71F914D1 R=BC196339 Paso04 : L=BC196339 R=6893EC61
Paso05 : L=6893EC61 R=D5C2706F Paso06 : L=D5C2706F R=ABD6DDAC
Paso07 : L=ABD6DDAC R=017151AF Paso08 : L=017151AF R=3FB9D8DA
Paso09 : L=3FB9D8DA R=3AAAC260 Paso10 : L=3AAAC260 R=283E370C
Paso11 : L=283E370C R=FBA98CD4 Paso12 : L=FBA98CD4 R=65FBC266
Paso13 : L=65FBC266 R=FCA1C494 Paso14 : L=FCA1C494 R=F7A90537
Paso15 : L=F7A90537 R=745EBD6A Paso16 : L=745EBD6A R=86810420
Resultado sin permutar:86810420745EBD6A
Resultado final :1862EC2AA88BA258
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.1. DES 257
Decodicaci on
Decodificando con Clave : 0123456789ABCDEF
Texto Cifrado :0000000000000000
Bloque permutado :0000000000000000
Paso01 : L=00000000 R=01BA8064 Paso02 : L=01BA8064 R=A657157E
Paso03 : L=A657157E R=C4DEA13D Paso04 : L=C4DEA13D R=0C766133
Paso05 : L=0C766133 R=95AD3310 Paso06 : L=95AD3310 R=C5C12518
Paso07 : L=C5C12518 R=1FFFFF76 Paso08 : L=1FFFFF76 R=33571627
Paso09 : L=33571627 R=CA47EDD9 Paso10 : L=CA47EDD9 R=5B462EE4
Paso11 : L=5B462EE4 R=DB9C4677 Paso12 : L=DB9C4677 R=E0B23FE6
Paso13 : L=E0B23FE6 R=8A5D943F Paso14 : L=8A5D943F R=3ABFFA37
Paso15 : L=3ABFFA37 R=FE6A1216 Paso16 : L=FE6A1216 R=5CBDAD14
Resultado sin permutar:5CBDAD14FE6A1216
Resultado final :14AAD7F4DBB4E094
-----
Decodificando con Clave : 0000000000000000
Texto Cifrado :123456789ABCDEF0
Bloque permutado :CCFF6600F0AA7855
Paso01 : L=F0AA7855 R=E0D40658 Paso02 : L=E0D40658 R=BA8920BC
Paso03 : L=BA8920BC R=90264C4F Paso04 : L=90264C4F R=2E3FA1F4
Paso05 : L=2E3FA1F4 R=8D42B315 Paso06 : L=8D42B315 R=8769003E
Paso07 : L=8769003E R=9F14B42F Paso08 : L=9F14B42F R=E48646E9
Paso09 : L=E48646E9 R=6B185CDC Paso10 : L=6B185CDC R=4E789B16
Paso11 : L=4E789B16 R=F3AA9FA8 Paso12 : L=F3AA9FA8 R=56397838
Paso13 : L=56397838 R=541678B2 Paso14 : L=541678B2 R=A4C1CE1A
Paso15 : L=A4C1CE1A R=191E936E Paso16 : L=191E936E R=8C0D6935
Resultado sin permutar:8C0D6935191E936E
Resultado final :9D2A73F6A9070648
-----
Decodificando con Clave : 23FE536344578A49
Texto Cifrado :123456789ABCDEF0
Bloque permutado :CCFF6600F0AA7855
Paso01 : L=F0AA7855 R=3C272434 Paso02 : L=3C272434 R=0349A079
Paso03 : L=0349A079 R=57DB85A0 Paso04 : L=57DB85A0 R=2456EB13
Paso05 : L=2456EB13 R=0664691A Paso06 : L=0664691A R=A7E17FC4
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
258 B. Ayudas a la Implementaci on
Paso07 : L=A7E17FC4 R=5C492B70 Paso08 : L=5C492B70 R=5DA12B1E
Paso09 : L=5DA12B1E R=A8F499FD Paso10 : L=A8F499FD R=3556E6F4
Paso11 : L=3556E6F4 R=DA8A4F75 Paso12 : L=DA8A4F75 R=D544F4AE
Paso13 : L=D544F4AE R=6A25EFF3 Paso14 : L=6A25EFF3 R=30E29C71
Paso15 : L=30E29C71 R=5F3B58B8 Paso16 : L=5F3B58B8 R=AF054FAE
Resultado sin permutar:AF054FAE5F3B58B8
Resultado final :F4E5D5EFAA638C43
B.2. IDEA
Incluimos ahora valores de prueba para el algoritmo IDEA, tanto para las claves
intermedias Z
i
de codicaci on y decodicaci on, como para los valores de las X
i
en
cada ronda. Los datos, al igual que en el caso de DES, est an representados en he-
xadecimal. N otese que la interpretaci on num erica de cada registro de 16 bits es, a
diferencia de algoritmos como MD5, de tipo big endian. Esto signica que el primer
byte en la memoria es el m as signicativo.
Subclaves
Clave: 0123 4567 89AB CDEF 0123 4567 89AB CDEF
Claves Intermedias Zi (Codificacion):
Ronda 1 : 0123 4567 89AB CDEF 0123 4567
Ronda 2 : 89AB CDEF CF13 579B DE02 468A
Ronda 3 : CF13 579B DE02 468A 37BC 048D
Ronda 4 : 159E 26AF 37BC 048D 159E 26AF
Ronda 5 : 1A2B 3C4D 5E6F 7809 1A2B 3C4D
Ronda 6 : 5E6F 7809 9ABC DEF0 1234 5678
Ronda 7 : 9ABC DEF0 1234 5678 E024 68AC
Ronda 8 : F135 79BD E024 68AC F135 79BD
Ronda 9 : 59E2 6AF3 7BC0 48D1
Claves Intermedias Zi (Decodificacion):
Ronda 1 : 74E6 950D 8440 BBF8 F135 79BD
Ronda 2 : AC8A 1FDC 8643 8794 E024 68AC
Ronda 3 : 6378 EDCC 2110 2CAD 1234 5678
Ronda 4 : 743E 6544 87F7 77DA 1A2B 3C4D
Ronda 5 : 1E4E A191 C3B3 E01F 159E 26AF
Ronda 6 : B2B4 C844 D951 7A66 37BC 048D
Ronda 7 : 963D 21FE A865 A086 DE02 468A
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.2. IDEA 259
Ronda 8 : 3F93 30ED 3211 4F6A 0123 4567
Ronda 9 : 35AA BA99 7655 153B
-----
Clave: 6382 6F7E 8AB1 0453 BFED 93DC D810 9472
Claves Intermedias Zi (Codificacion):
Ronda 1 : 6382 6F7E 8AB1 0453 BFED 93DC
Ronda 2 : D810 9472 FD15 6208 A77F DB27
Ronda 3 : B9B0 2128 E4C7 04DE 114E FFB6
Ronda 4 : 4F73 6042 51C9 8E09 BDFA 2AC4
Ronda 5 : 6C9E E6C0 84A3 931C 137B F455
Ronda 6 : 8822 9DFF 8109 4726 3826 F7E8
Ronda 7 : AB10 453B FED9 3DCD 4C70 4DEF
Ronda 8 : D156 208A 77FD B27B 9B02 128E
Ronda 9 : DFA2 AC41 14EF FB64
Claves Intermedias Zi (Decodificacion):
Ronda 1 : 77BD 53BF EB11 C3BE 9B02 128E
Ronda 2 : CB03 8803 DF76 063B 4C70 4DEF
Ronda 3 : FF28 0127 BAC5 A8F7 3826 F7E8
Ronda 4 : 3921 7EF7 6201 B97D 137B F455
Ronda 5 : 6334 7B5D 1940 8F7B BDFA 2AC4
Ronda 6 : 7FF2 AE37 9FBE 470C 114E FFB6
Ronda 7 : DBFB 1B39 DED8 B150 A77F DB27
Ronda 8 : 3989 02EB 6B8E FB04 BFED 93DC
Ronda 9 : 2E3D 9082 754F B125
-----
Clave: 1111 2222 3333 4444 5555 6666 7777 8888
Claves Intermedias Zi (Codificacion):
Ronda 1 : 1111 2222 3333 4444 5555 6666
Ronda 2 : 7777 8888 4466 6688 88AA AACC
Ronda 3 : CCEE EF11 1022 2244 1111 5555
Ronda 4 : 9999 DDDE 2220 4444 8888 CCCD
Ronda 5 : AB33 33BB BC44 4088 8911 1199
Ronda 6 : 9A22 22AA 7778 8881 1112 2223
Ronda 7 : 3334 4445 5556 6667 0222 2444
Ronda 8 : 4666 6888 8AAA ACCC CEEE F111
Ronda 9 : 888C CCD1 1115 5559
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
260 B. Ayudas a la Implementaci on
Claves Intermedias Zi (Decodificacion):
Ronda 1 : D747 332F EEEB 199A CEEE F111
Ronda 2 : 2F67 7556 9778 9C34 0222 2444
Ronda 3 : AAAD AAAA BBBB 0005 1112 2223
Ronda 4 : 9791 8888 DD56 54A1 8911 1199
Ronda 5 : E637 43BC CC45 6BF7 8888 CCCD
Ronda 6 : 2AAA DDE0 2222 DFFF 1111 5555
Ronda 7 : CF04 EFDE 10EF 3F3E 88AA AACC
Ronda 8 : 5B6D BB9A 7778 D973 5555 6666
Ronda 9 : 7FF9 DDDE CCCD DFFF
Codicaci on
Codificando con Clave: 0123 4567 89AB CDEF 0123 4567 89AB CDEF
X1 X2 X3 X4
Texto Claro: 0000 0000 0000 0000
Ronda 1 : 101C 6769 FD5D 8A28
Ronda 2 : 5F13 2568 288F 1326
Ronda 3 : BA0B A218 1F43 D376
Ronda 4 : 700D 8CE7 C7EE 4315
Ronda 5 : 7EC9 402F 8593 58EE
Ronda 6 : 478C FFA0 EBFF 2668
Ronda 7 : 348A 5D2B DFD1 E289
Ronda 8 : 5500 73E7 FAD6 5353
Resultado : EC29 65C9 EFA7 4710
-----
Codificando con Clave: 6382 6F7E 8AB1 0453 BFED 93DC D810 9472
X1 X2 X3 X4
Texto Claro: 0123 4567 89AB CDEF
Ronda 1 : 14E6 1CEF 9EE7 5701
Ronda 2 : E7A7 30E6 FFE5 B63C
Ronda 3 : 79A2 D4C4 EDCA 4B56
Ronda 4 : 095B 4ACF B0B8 B584
Ronda 5 : C6B0 D5D9 CCF4 C359
Ronda 6 : 4FB9 7BFD BF7A BB4E
Ronda 7 : 8219 6501 11EB B6EC
Ronda 8 : F2A5 C848 9746 6910
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.2. IDEA 261
Resultado : 7374 4387 DD37 5315
-----
Codificando con Clave: 1111 2222 3333 4444 5555 6666 7777 8888
X1 X2 X3 X4
Texto Claro: 6E63 7F8A 8B8C 8394
Ronda 1 : B370 EDF7 C835 49A3
Ronda 2 : E798 CE57 118E 94EA
Ronda 3 : 6A74 FE29 618B 52D9
Ronda 4 : 8C64 BCB9 5E6C 0DE6
Ronda 5 : 1DE0 615A FB09 D5CD
Ronda 6 : 1872 CF37 E332 557B
Ronda 7 : A47C 34B1 F343 A473
Ronda 8 : C87D F1BD 131B 6E87
Resultado : A16D DFEC 02D2 1B16
Decodicaci on
Decodificando con Clave: 0123 4567 89AB CDEF 0123 4567 89AB CDEF
X1 X2 X3 X4
Texto Cifrado: 0000 0000 0000 0000
Ronda 1 : 39EB 36B0 E85D 3959
Ronda 2 : 9FDD 04DB B915 178F
Ronda 3 : C190 33CE 5D6F D44F
Ronda 4 : 3AB1 172A CDBE 744D
Ronda 5 : B874 B1F9 2D7B 9A42
Ronda 6 : 4A76 9475 6BA5 B114
Ronda 7 : BFB0 1DD6 83A0 F4A3
Ronda 8 : 02DE 8519 C980 CBD8
Resultado : DCD3 8419 FB6E A1E1
-----
Decodificando con Clave: 6382 6F7E 8AB1 0453 BFED 93DC D810 9472
X1 X2 X3 X4
Texto Cifrado: 0123 4567 89AB CDEF
Ronda 1 : 4490 2B63 85DB 5A10
Ronda 2 : 61D8 C3DB 881D 2404
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
262 B. Ayudas a la Implementaci on
Ronda 3 : C7DB 9502 4CE9 C1FC
Ronda 4 : AFB0 58F8 1920 4DA6
Ronda 5 : E988 A044 DCCC D5A7
Ronda 6 : 0C98 B5C8 CD67 9A95
Ronda 7 : A38B 5982 EA9C D31D
Ronda 8 : 5D35 58BD FD37 4D2F
Resultado : AACC 8DB9 CE0C 7163
-----
Decodificando con Clave: 1111 2222 3333 4444 5555 6666 7777 8888
X1 X2 X3 X4
Texto Cifrado: 6E63 7F8A 8B8C 8394
Ronda 1 : F4C7 EB12 C708 F851
Ronda 2 : 19DF 90E0 E5F2 B16B
Ronda 3 : 6C8A 4D53 8F75 C3EB
Ronda 4 : 497E BA5D E167 26BB
Ronda 5 : C558 D308 3327 BA26
Ronda 6 : 9114 9FD0 784A 2A59
Ronda 7 : 8C36 FE0F D3B9 420F
Ronda 8 : E658 1F85 E165 736D
Resultado : 4073 BF43 EC52 8795
B.3. AES
Para el algoritmo AES vamos a representar, en primer lugar, los conjuntos de sub-
claves K
i
para ejemplos de claves de cifrado de 128, 192 y 256 bits respectivamente.
Cada subclave se ha representado como un conjunto de n umeros hexadecimales de
ocho dgitos, cada uno de los cuales correspondera a una columna de la matriz de
clave (ver cuadro 10.5, en la p agina 150), de forma que los dos primeros dgitos del
primer n umero corresponden al valor k
0,0
, los dos siguientes a k
1,0
, y as sucesiva-
mente
Clave : 0123456789ABCDEF0123456789ABCDEF (128 bits)
Total rondas : 10
Subclaves de cifrado:
K00 : 67452301 EFCDAB89 67452301 EFCDAB89
K01 : C09A9E62 2F5735EB 481216EA A7DFBD63
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.3. AES 263
K02 : 3BC6001A 149135F1 5C83231B FB5C9E78
K03 : 87C94A15 93587FE4 CFDB5CFF 3487C287
K04 : 90D15D38 038922DC CC527E23 F8D5BCA4
K05 : D9905E4D DA197C91 164B02B2 EE9EBE16
K06 : 9EB855C3 44A12952 52EA2BE0 BC7495F6
K07 : DCDDC7A9 987CEEFB CA96C51B 76E250ED
K08 : 89E55F7A 1199B181 DB0F749A ADED2477
K09 : 7C700A57 6DE9BBD6 B6E6CF4C 1B0BEB3B
K10 : 9EDF2188 F3369A5E 45D05512 5EDBBE29
Clave : 8765F4765A8594E74635D86950B78432C756365A15326D0E (192 bits)
Total rondas : 12
Subclaves de cifrado:
K00 : 76F46587 E794855A 69D83546 3284B750
K01 : 5A3656C7 0E6D3215 2F5F59A5 C8CBDCFF
K02 : A113E9B9 93975EE9 C9A1082E C7CC3A3B
K03 : CD991227 0552CED8 A4412761 37D67988
K04 : FE7771A6 39BB4B9D 938BF890 96D93648
K05 : 32981129 054E68A1 FB391907 C282529A
K06 : 2BAEEB98 BD77DDD0 8FEFCCF9 8AA1A458
K07 : 7198BD5F B31AEFC5 8DC34957 30B49487
K08 : BF5B587E 35FAFC26 44624179 F778AEBC
K09 : E8ABF593 D81F6114 6744396A 52BEC54C
K10 : 16DC8435 E1A42A89 4F53BC36 974CDD22
K11 : F008E448 A2B62104 B46AA531 55CE8FB8
K12 : 23AF37C5 B4E3EAE7 44EB0EAF E65D2FAB
Clave : 8765F4765A8594E74635D86950B78432
C756365A15326DE012345678E214320A (256 bits)
Total rondas : 14
Subclaves de cifrado:
K00 : 76F46587 E794855A 69D83546 3284B750
K01 : 5A3656C7 E06D3215 78563412 0A3214E2
K02 : EE93467C 0907C326 60DFF660 525B4130
K03 : 5A0FD5C3 BA62E7D6 C234D3C4 C806C726
K04 : 197B29B8 107CEA9E 70A31CFE 22F85DCE
K05 : C94E9948 732C7E9E B118AD5A 791E6A7C
K06 : 09CD5BBE 19B1B120 6912ADDE 4BEAF010
K07 : 7AC91582 09E56B1C B8FDC646 C1E3AC3A
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
264 B. Ayudas a la Implementaci on
K08 : 89B54A27 9004FB07 F91656D9 B2FCA6C9
K09 : 4D79315F 449C5A43 FC619C05 3D82303F
K10 : FC925933 6C96A234 9580F4ED 277C5224
K11 : 81693169 C5F56B2A 3994F72F 0416C710
K12 : 36601ED5 5AF6BCE1 CF76480C E80A1A28
K13 : 1A0E935D DFFBF877 E66F0F58 E279C848
K14 : 64F8A87D 3E0E149C F1785C90 197246B8
Seguidamente representaremos los valores intermedios de cifrado y descifrado
de un bloque de datos para estas tres claves. En cada lnea se representa la matriz de
estado (ver cuadro 10.4, p agina 150), de forma an aloga a la que se ha empleado para
representar la matriz de clave.
Clave : 0123456789ABCDEF0123456789ABCDEF (128 bits)
CIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : 201D4467 70B06937 8FBFA93C 1D4757CF
Ronda 02 : 0486AEC2 951CEAA5 87BCD35D CE92939C
Ronda 03 : EDEF12D7 E6C5DB1E E2E45A51 8D1F89E9
Ronda 04 : C398674B C9822958 E84F1592 0C4556C0
Ronda 05 : C707CA8E A5C9F7EE C2BB119F D177A68A
Ronda 06 : D4D13E6C 46952EB2 F24BAAEC 6D5929FE
Ronda 07 : 508F2AEF 746D34C0 D13BF25D 288DCBBA
Ronda 08 : E500843A 4302ADE4 5E7E684E DE924E02
Ronda 09 : 5585CDD0 43ADC584 1B81F49C 1EBB3594
Ronda 10 : 74B460BC 4496A083 BDBF6D1A 5B297D80
Cifrado : 74B460BC 4496A083 BDBF6D1A 5B297D80
DESCIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : B319F6D6 F00601B2 031D107C 1E876239
Ronda 02 : 3968DE25 C6266F04 A33BA0FF D7C06313
Ronda 01 : 9706478A 462565BA 164FF166 8FECC208
Ronda 02 : 87C9E8FB 25B34D03 D74DE19C 5FA360A5
Ronda 01 : C808ECD8 A3E29DAE 94293CCB 6304742C
Ronda 02 : 6528BC87 22719EE4 FD034F6F 2EF66891
Ronda 01 : 6FA21399 A1A4D30D 45B2E47D B5A718DF
Ronda 02 : 60C97EE2 7509D120 7C04EB6C 8DE033A3
Ronda 01 : 75C4C689 5B36142C A18AEADD 22F1EB70
Ronda 10 : 3E08FE25 DE23F126 F00782B7 1D64561D
Descifrado: 3E08FE25 DE23F126 F00782B7 1D64561D
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.3. AES 265
Clave : 8765F4765A8594E74635D86950B78432C756365A15326D0E (192 bits)
CIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : 160FB8C4 526A9EC9 D0AFCB25 70621BF8
Ronda 02 : 6FCAABF7 D15A8F7D 9A5EDF3E 37A5BC37
Ronda 03 : B1FE1D21 418746AA 9DCA21F6 FA2C13FA
Ronda 04 : C4A63E0D 9C5AAA4F B71F18E7 DCDA3D84
Ronda 05 : 3AD99ABB AD937C2E 81572FED D9E7C4E8
Ronda 06 : 726C6E54 FA30A491 CF114FD5 289E7E5A
Ronda 07 : E9DC1656 D1F328F5 5BEEFF85 55D84773
Ronda 08 : CCE9EE83 33D87F86 099585FE 6D8EC86F
Ronda 09 : 99765788 F3391287 2F36C0DD 7F13F5B7
Ronda 10 : D732AFDE BED82C86 D7A9B478 DDFE7792
Ronda 11 : 35EBB790 C52B1D57 C609E1EC 8927113C
Ronda 12 : 53C657C8 41EB61D4 1BC2421F 0CC6F928
Cifrado : 53C657C8 41EB61D4 1BC2421F 0CC6F928
DESCIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : 8A102DA6 32EE44E5 0F5EA9B9 85A8D1DB
Ronda 02 : EAC1F79A C3EE67FB F8AAA566 5C1EF22D
Ronda 01 : 109FC072 45BC7406 7AE5206B 0DBD735E
Ronda 02 : FD4EEFDE 3CC42E4F 50BB5BE9 673BA16D
Ronda 01 : 623F847F 2246E5C3 FDADA89E 5AA2D81C
Ronda 02 : 8ADB4E04 97319AB8 52A9E478 F16FEFB9
Ronda 01 : 48A546C4 56732D30 A735D297 8292A0A3
Ronda 02 : C253B1A9 D32607F4 E6D6C966 623A15C6
Ronda 01 : 6076F92C D62A52EA 10204094 B9CB8884
Ronda 02 : 88241F51 3CBD888F 6CBEEFBC F7BB9655
Ronda 01 : 7DA56D33 B33A0C47 7BAA5759 51C5B996
Ronda 12 : 94622E60 11AC4FF2 45976B5C 20D50554
Descifrado: 94622E60 11AC4FF2 45976B5C 20D50554
Clave : 8765F4765A8594E74635D86950B78432
C756365A15326DE012345678E214320A (256 bits)
CIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : 160FB8C4 526A9E27 67C2C272 6DAAE23A
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
266 B. Ayudas a la Implementaci on
Ronda 02 : 51EA071B CD262D8C 3E4861B7 99CCC7EB
Ronda 03 : 7E32CCE3 2800F0B7 C7C7F049 02E624F7
Ronda 04 : 04FB5028 8002D19E 02A99DAD F2D8E262
Ronda 05 : DACD92A2 DD89451C 4FE6B50C CF2A40F9
Ronda 06 : AEA43CAB 0356A2B2 2AB55277 535718FA
Ronda 07 : B4A5EBA6 412FAC38 A684D752 EF68376F
Ronda 08 : BF57D255 45579B83 B0DFB737 F7DD1C5F
Ronda 09 : C4A02922 46505017 D1CA1979 8C482CE5
Ronda 10 : F35D1EF6 FE10F4BA 326AB6DB 32AE9F4F
Ronda 11 : FCE5A501 D8E0274E D865B039 841FCCFB
Ronda 12 : 7E4AF5E5 C3E6C807 BC97AAF4 38B13938
Ronda 13 : 828F3938 6332099E F21541F6 70E4B9B0
Ronda 14 : 6E8B7B83 674D5839 19356AFA E935735B
Cifrado : 6E8B7B83 674D5839 19356AFA E935735B
DESCIFRADO:
Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits)
Ronda 01 : D90293DE EFCBC692 87620BEC A9E1A3D9
Ronda 02 : 6DF747AF 78006F1F 40DAFBE8 D333B4C3
Ronda 01 : 496618FA C59E36F5 3ABC05F3 7011CFA5
Ronda 02 : 13502465 4FB09CFA 6745440A BFC062A8
Ronda 01 : 639BEB46 25C9AD76 242C9AA9 39066FDC
Ronda 02 : F87CDE96 69CB5302 C8AE6B76 B2FEAF5B
Ronda 01 : FC6D0433 C8E51A5D DE349F93 2D113855
Ronda 02 : 8F872F53 D54D5DAA 1E8CB849 E8B2DC30
Ronda 01 : 33CB011A 1DE03C16 A468722A 2C2A38AA
Ronda 02 : 68CE0A4D 3FB38D7D FC8060FB BCCD1AB9
Ronda 01 : 14D2CABB 7D3AAFE8 48675BF3 B5133A20
Ronda 02 : BEF20489 FF3AD947 5B211677 4EB766DA
Ronda 01 : 28C8A02E B3526182 0C735A92 ACDA0765
Ronda 14 : 691FB267 1134AC93 C77D9FD5 FA385CF1
Descifrado: 691FB267 1134AC93 C77D9FD5 FA385CF1
B.4. MD5
En esta secci on detallaremos todos los valores intermedios que se obtienen al apli-
car el algoritmo MD5 a cuatro ejemplos diferentes. El primer campo es la cadena que
se va a procesar, excluyendo las comillas. El segundo es el bloque de 512 bits de
entrada todos los ejemplos que se han incluido producen un unico bloque escri-
to en hexadecimal, que dicha cadena genera, en el que se puede apreciar c omo tras
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.4. MD5 267
los c odigos ASCII correspondientes aparece el valor 80, es decir, un uno seguido de
ceros, y c omo los ultimos 64 bits correspondientes a los diecis eis ultimos dgitos
hexadecimales representan la longitud total, en bits, de la cadena. Seguidamente,
se especican los valores de los registros a, b, c y d que se obtienen en cada paso, y
para terminar se da el resultado nal de 128 bits, en formato hexadecimal. N otese
que, en este caso, la representaci on como valores enteros de los registros de 32 bits es
de tipo little endian, es decir, que el byte que primero aparece en el bloque es el menos
signicativo del valor entero correspondiente.
Cadena: "a" (8 bits)
Bloque: 618000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000000800000000000000
Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476
Ronda 4: a=A56017F4 b=607D9686 c=E65857A7 d=F2D58361
Ronda 8: a=3A9D5BCC b=A8AF6DA5 c=D31DDC83 d=E0A07DB7
Ronda 12: a=BE580957 b=68493D6A c=F5FDD933 d=F386BEA6
Ronda 16: a=44244CF8 b=F01E3CE2 c=6360A45F d=D0FE9B27
Ronda 20: a=9C341767 b=8D25CC66 c=E39FFD23 d=970AB3A9
Ronda 24: a=8C444930 b=373BEAB0 c=2DACB8A3 d=7267097A
Ronda 28: a=F175E3AD b=C8F891B4 c=87B7F475 d=9D5DF67E
Ronda 32: a=93842E98 b=3745961F c=94A2EBEE d=C7043B64
Ronda 36: a=BD607D1E b=DAF7F308 c=BF8B4F98 d=A6F72085
Ronda 40: a=35A82A7A b=CF7E60DB c=5ABE099C d=89E0EC97
Ronda 44: a=75C151E2 b=CC6F5E9E c=0C0E6AC4 d=942E0C86
Ronda 48: a=0AC50E18 b=918F93BB c=8A4A6356 d=79CA7845
Ronda 52: a=CAB8FE42 b=1EE405EB c=36269C3F d=6A4DAEEE
Ronda 56: a=982C7861 b=893501C0 c=71FC7709 d=6812A362
Ronda 60: a=FEBD62FD b=AA4D8AE3 c=53E33526 d=28936A74
Ronda 64: a=52309E0B b=B8E94637 c=49DEE633 d=50F422F3
Resultado: 0CC175B9C0F1B6A831C399E269772661
Cadena: "test" (32 bits)
Bloque: 746573748000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000002000000000000000
Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476
Ronda 4: a=DED2A12E b=DAF27C2C c=F1824515 d=0F74EDAC
Ronda 8: a=C5ADAD00 b=E95CAA49 c=480530DA d=B7AC6179
Ronda 12: a=D2B0528F b=39C7F222 c=E81C99B1 d=3A68633F
Ronda 16: a=70426956 b=02F9BE0B c=1C3DC813 d=6C99C85B
Ronda 20: a=E6BCA679 b=DCE63C0F c=A1551890 d=95200EE0
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
268 B. Ayudas a la Implementaci on
Ronda 24: a=090098DD b=EB97FA59 c=04BA62B4 d=15C03EC7
Ronda 28: a=7F3420DE b=E2416EB4 c=89F5CC1E d=D933566E
Ronda 32: a=1DFC71B1 b=377D2CE4 c=8841B1FD d=4CB69E35
Ronda 36: a=4F880ED5 b=796304FE c=52B55B13 d=38CC24FB
Ronda 40: a=EF7A4FEE b=42FB05F0 c=0F3B052F d=A79F8A38
Ronda 44: a=6A509FA0 b=4995D409 c=190065DE d=9009C912
Ronda 48: a=95B45DE9 b=A5B6C91B c=412D4C7B d=D02E07C9
Ronda 52: a=F09D8296 b=32C92920 c=10F833EA d=FAA53851
Ronda 56: a=79F7507F b=CA8F6F9D c=19E4244E d=3DE059DA
Ronda 60: a=1176200C b=82BC77EB c=997A7EAD d=08C989F3
Ronda 64: a=66266C08 b=840575BD c=EA9401CC d=E681D2B0
Resultado: 098F6BCD4621D373CADE4E832627B4F6
Cadena: "experimento" (88 bits)
Bloque: 6578706572696D656E746F80000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000005800000000000000
Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476
Ronda 4: a=5D5C19A7 b=46C38F9E c=9D66E599 d=C18D8C6C
Ronda 8: a=5A1B370A b=F00B0D14 c=C2337BF6 d=2BBE5411
Ronda 12: a=999F88DB b=DD5473D0 c=4E1035F1 d=860ED16D
Ronda 16: a=827A70F9 b=5225BF6B c=D7A665AF d=FE0775F8
Ronda 20: a=878C66F1 b=40BEF53B c=8A5ABAE0 d=23DC997C
Ronda 24: a=0C045617 b=468F7087 c=46F386B6 d=960E2AF4
Ronda 28: a=E34880F5 b=B0C9B131 c=58BCA90E d=0790302C
Ronda 32: a=6BEE14CD b=538F2F39 c=FD147E9E d=249FB3A8
Ronda 36: a=B2623128 b=34B78DF5 c=D3D94D7C d=0AB7F770
Ronda 40: a=DB335B6F b=5A3DCDEA c=A5C3B46A d=7E4B5806
Ronda 44: a=B27D89A2 b=6841550D c=257A8EB5 d=B9C1C281
Ronda 48: a=7D088655 b=789F1C2C c=060B818B d=02DB24DB
Ronda 52: a=0E3F05A0 b=545B70C4 c=7660DA54 d=A86030D5
Ronda 56: a=AABCB829 b=47D564F9 c=6CDBF4D6 d=F1E81106
Ronda 60: a=A4298EC8 b=B5246707 c=B26DA205 d=DBB56A4C
Ronda 64: a=553D262F b=A4F73804 c=55138A82 d=83130C35
Resultado: 304982BC8DE3C4948067CEEDAB604593
Cadena: "kriptopolis" (88 bits)
Bloque: 6B726970746F706F6C697380000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000005800000000000000
Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.5. SHA-1 269
Ronda 4: a=D9D91CAC b=24B06776 c=E5B4EE28 d=3E1ABFD1
Ronda 8: a=2CC5E57D b=C013F682 c=937C5146 d=5C1CDC32
Ronda 12: a=F17F3A1B b=3AF41990 c=84045E90 d=45F1B4B2
Ronda 16: a=45781161 b=499471DB c=9521F17B d=2DD56DA0
Ronda 20: a=E1077423 b=E2B7D25E c=288A1472 d=382A7B92
Ronda 24: a=DDD330B8 b=0C9BCC03 c=060CC302 d=2A9772C2
Ronda 28: a=96B3C004 b=7E2F1EAC c=2F65093C d=5B41A3FC
Ronda 32: a=55C59563 b=E8FC5DA2 c=25D8CAE4 d=3D5795BE
Ronda 36: a=4C297776 b=6518EC96 c=0F032874 d=078CF1A4
Ronda 40: a=441953E2 b=73C80FB2 c=2B495D85 d=B6DBBFED
Ronda 44: a=24C417D7 b=8A6D297C c=C3FD834A d=81C5AC48
Ronda 48: a=F94C1268 b=18268270 c=39A9E934 d=E9406B33
Ronda 52: a=55703A51 b=F4D6A7B3 c=EF9EDE35 d=460E123F
Ronda 56: a=42081E66 b=50A3C1E5 c=F85BC50F d=ABE4D855
Ronda 60: a=F4D3A73C b=9E487E08 c=BEAE5BB7 d=8DC8E081
Ronda 64: a=DC5B1FD3 b=C48CAC59 c=72B24EFA d=3AAD460B
Resultado: D442A043E2575AB4F82B6D0B819ADF4A
B.5. SHA-1
Se incluyen aqu los valores intermedios del algoritmo SHA-1 para las mismas
cuatro cadenas de la secci on anterior. Recordemos que en este caso el orden de los
bytes a la hora de representar enteros es big endian, de forma que, por ejemplo, en la
representaci on de la longitud b del mensaje total el ultimo byte es el menos signica-
tivo.
Cadena: "a" (8 bits)
Bloque: 618000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000000000000000000008
Ini: a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0
R02: a=8D43E36D b=013498B3 c=59D148C0 d=7BF36AE2 e=98BADCFE
R04: a=98ECF029 b=178D2F08 c=6350F8DB d=C04D262C e=59D148C0
R06: a=24FDDFA9 b=9531EFB8 c=663B3C0A d=05E34BC2 e=6350F8DB
R08: a=1706BD51 b=628293E2 c=493F77EA d=254C7BEE e=663B3C0A
R10: a=B48452FD b=E6E3DBB3 c=45C1AF54 d=98A0A4F8 e=493F77EA
R12: a=06A530AF b=910E0091 c=6D2114BF d=F9B8F6EC e=45C1AF54
R14: a=94A32E14 b=DE9B35CA c=C1A94C2B d=64438024 e=6D2114BF
R16: a=2ECAE907 b=3CD2D518 c=2528CB85 d=B7A6CD72 e=C1A94C2B
R18: a=16FFEBFC b=5FADB00B c=CBB2BA41 d=0F34B546 e=2528CB85
R20: a=3AD1E596 b=AB5979F5 c=05BFFAFF d=D7EB6C02 e=CBB2BA41
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
270 B. Ayudas a la Implementaci on
R22: a=57668EF8 b=0DD747B1 c=8EB47965 d=6AD65E7D e=05BFFAFF
R24: a=587C3B69 b=57212656 c=15D9A3BE d=4375D1EC e=8EB47965
R26: a=37225DA7 b=94A32676 c=561F0EDA d=95C84995 e=15D9A3BE
R28: a=D72C806E b=C073A57E c=CDC89769 d=A528C99D e=561F0EDA
R30: a=229C3156 b=831D03EB c=B5CB201B d=B01CE95F e=CDC89769
R32: a=94F65775 b=B4F37984 c=88A70C55 d=E0C740FA e=B5CB201B
R34: a=C174A741 b=2A032F9B c=653D95DD d=2D3CDE61 e=88A70C55
R36: a=25E95D6B b=481844C5 c=705D29D0 d=CA80CBE6 e=653D95DD
R38: a=42285BB1 b=FC08D9F3 c=C97A575A d=52061131 e=705D29D0
R40: a=AC15A69D b=A3B72B37 c=508A16EC d=FF02367C e=C97A575A
R42: a=504F64C1 b=E6CD1F2C c=6B0569A7 d=E8EDCACD e=508A16EC
R44: a=7D09F328 b=B45FC818 c=5413D930 d=39B347CB e=6B0569A7
R46: a=B44DB2B6 b=7B7354D5 c=1F427CCA d=2D17F206 e=5413D930
R48: a=F9ADD677 b=C43968F2 c=AD136CAD d=5EDCD535 e=1F427CCA
R50: a=2D5EDB70 b=5432B748 c=FE6B759D d=B10E5A3C e=AD136CAD
R52: a=7C1B92B1 b=5C350FCB c=0B57B6DC d=150CADD2 e=FE6B759D
R54: a=C530EAD6 b=C60F44D9 c=5F06E4AC d=D70D43F2 e=0B57B6DC
R56: a=AF4F737E b=D7A11B36 c=B14C3AB5 d=7183D136 e=5F06E4AC
R58: a=68346C20 b=81923337 c=ABD3DCDF d=B5E846CD e=B14C3AB5
R60: a=C682F53F b=80C84724 c=1A0D1B08 d=E0648CCD e=ABD3DCDF
R62: a=CEEC2B04 b=193B35BD c=F1A0BD4F d=203211C9 e=1A0D1B08
R64: a=377A9914 b=829ED919 c=33BB0AC1 d=464ECD6F e=F1A0BD4F
R66: a=CD6D6C13 b=DAC285B9 c=0DDEA645 d=60A7B646 e=33BB0AC1
R68: a=D3FCDF01 b=639762AA c=F35B5B04 d=76B0A16E e=0DDEA645
R70: a=C4B7981A b=3E5A0CC1 c=74FF37C0 d=98E5D8AA e=F35B5B04
R72: a=42650D26 b=26F94DF5 c=B12DE606 d=4F968330 e=74FF37C0
R74: a=65E8D295 b=9487B5C9 c=90994349 d=49BE537D e=B12DE606
R76: a=CE8E1721 b=064CC166 c=597A34A5 d=6521ED72 e=90994349
R78: a=22890379 b=A6E259D2 c=73A385C8 d=81933059 e=597A34A5
R80: a=1FB2C136 b=0AD7FC73 c=48A240DE d=A9B89674 e=73A385C8
Resultado: 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8
Cadena: "test" (32 bits)
Bloque: 746573748000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000000000000000000020
Ini: a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0
R02: a=69F251EF b=141A0C27 c=59D148C0 d=7BF36AE2 e=98BADCFE
R04: a=D698D619 b=AD78FF44 c=DA7C947B d=C5068309 e=59D148C0
R06: a=27A84E9E b=4FED19DC c=75A63586 d=2B5E3FD1 e=DA7C947B
R08: a=D1725C31 b=8FBF195D c=89EA13A7 d=13FB4677 e=75A63586
R10: a=C43997BA b=985E8C80 c=745C970C d=63EFC657 e=89EA13A7
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.5. SHA-1 271
R12: a=E671210F b=DF9D4AEF c=B10E65EE d=2617A320 e=745C970C
R14: a=3A4BF38D b=4E12148F c=F99C4843 d=F7E752BB e=B10E65EE
R16: a=0690C1E0 b=4F049361 c=4E92FCE3 d=D3848523 e=F99C4843
R18: a=28D8607D b=ED827927 c=01A43078 d=53C124D8 e=4E92FCE3
R20: a=A594E7C5 b=D7E2BB59 c=4A36181F d=FB609E49 e=01A43078
R22: a=3E7F1747 b=89CF51DE c=696539F1 d=75F8AED6 e=4A36181F
R24: a=08667DF4 b=C1714F43 c=CF9FC5D1 d=A273D477 e=696539F1
R26: a=F78CDC7E b=63420FC9 c=02199F7D d=F05C53D0 e=CF9FC5D1
R28: a=301C99FA b=C11D04BC c=BDE3371F d=58D083F2 e=02199F7D
R30: a=31E08911 b=2563E943 c=8C07267E d=3047412F e=BDE3371F
R32: a=63D791B9 b=99B4D18E c=4C782244 d=C958FA50 e=8C07267E
R34: a=66AA9C75 b=0525A937 c=58F5E46E d=A66D3463 e=4C782244
R36: a=3E4E8518 b=BF1CD105 c=59AAA71D d=C1496A4D e=58F5E46E
R38: a=B32B1931 b=18AB89BD c=0F93A146 d=6FC73441 e=59AAA71D
R40: a=80F549BF b=ED3E0D75 c=6CCAC64C d=462AE26F e=0F93A146
R42: a=04BDFD86 b=B6353C2E c=E03D526F d=7B4F835D e=6CCAC64C
R44: a=875C7539 b=02132FC0 c=812F7F61 d=AD8D4F0B e=E03D526F
R46: a=567A94C8 b=64C62440 c=61D71D4E d=0084CBF0 e=812F7F61
R48: a=CA454844 b=AE30686B c=159EA532 d=19318910 e=61D71D4E
R50: a=D24F0B76 b=F039F33C c=32915211 d=EB8C1A1A e=159EA532
R52: a=E0D4BBAF b=46A89C74 c=B493C2DD d=3C0E7CCF e=32915211
R54: a=3F042183 b=9E1A2F5D c=F8352EEB d=11AA271D e=B493C2DD
R56: a=13496F6A b=ACB50C2A c=CFC10860 d=67868BD7 e=F8352EEB
R58: a=646566EF b=B3E7F37D c=84D25BDA d=AB2D430A e=CFC10860
R60: a=1387E9E4 b=2A106003 c=D91959BB d=6CF9FCDF e=84D25BDA
R62: a=FC461EB0 b=7A8ACB6F c=04E1FA79 d=CA841800 e=D91959BB
R64: a=F00B178D b=4E7E642E c=3F1187AC d=DEA2B2DB e=04E1FA79
R66: a=3810D68A b=39938A7E c=7C02C5E3 d=939F990B e=3F1187AC
R68: a=02152E1A b=11876ADB c=8E0435A2 d=8E64E29F e=7C02C5E3
R70: a=DFEB6670 b=69F18CE7 c=80854B86 d=C461DAB6 e=8E0435A2
R72: a=25C49F67 b=4F6EC7D7 c=37FAD99C d=DA7C6339 e=80854B86
R74: a=A3CEFF95 b=882DA0C9 c=C97127D9 d=D3DBB1F5 e=37FAD99C
R76: a=5173678F b=24CEC91C c=68F3BFE5 d=620B6832 e=C97127D9
R78: a=0E44ADD6 b=0D7E5447 c=D45CD9E3 d=0933B247 e=68F3BFE5
R80: a=42056CE4 b=DCE3F01D c=83912B75 d=C35F9511 e=D45CD9E3
Resultado: A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
Cadena: "experimento" (88 bits)
Bloque: 6578706572696D656E746F80000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000000000000000000058
Ini: a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
272 B. Ayudas a la Implementaci on
R02: a=7EBB5D72 b=052D0918 c=59D148C0 d=7BF36AE2 e=98BADCFE
R04: a=75DD0E53 b=B4F0DF48 c=9FAED75C d=014B4246 e=59D148C0
R06: a=BF3915DD b=05A16415 c=DD774394 d=2D3C37D2 e=9FAED75C
R08: a=9B5914B1 b=0E916082 c=6FCE4577 d=41685905 e=DD774394
R10: a=E406B102 b=F304AC67 c=66D6452C d=83A45820 e=6FCE4577
R12: a=7E5DA8FA b=ADCB3390 c=B901AC40 d=FCC12B19 e=66D6452C
R14: a=C474F542 b=860F061D c=9F976A3E d=2B72CCE4 e=B901AC40
R16: a=14CC37BD b=519A992D c=B11D3D50 d=6183C187 e=9F976A3E
R18: a=B07CDCEE b=DAD274C5 c=45330DEF d=5466A64B e=B11D3D50
R20: a=DBA8A460 b=3C5ABB3E c=AC1F373B d=76B49D31 e=45330DEF
R22: a=CF0B1462 b=D9B84C74 c=36EA2918 d=8F16AECF e=AC1F373B
R24: a=00FA7488 b=B5017A00 c=B3C2C518 d=366E131D e=36EA2918
R26: a=678F9C3D b=55535315 c=003E9D22 d=2D405E80 e=B3C2C518
R28: a=36ED4BC6 b=2C053172 c=59E3E70F d=5554D4C5 e=003E9D22
R30: a=D46C6C32 b=CEF800E2 c=8DBB52F1 d=8B014C5C e=59E3E70F
R32: a=31B75696 b=7109F222 c=B51B1B0C d=B3BE0038 e=8DBB52F1
R34: a=7CAE903B b=5BC99A55 c=8C6DD5A5 d=9C427C88 e=B51B1B0C
R36: a=7B134BC7 b=522A73DB c=DF2BA40E d=56F26695 e=8C6DD5A5
R38: a=AF987330 b=A90C28E7 c=DEC4D2F1 d=D48A9CF6 e=DF2BA40E
R40: a=3A793DF9 b=8847DFE3 c=2BE61CCC d=EA430A39 e=DEC4D2F1
R42: a=79238476 b=B7083A1D c=4E9E4F7E d=E211F7F8 e=2BE61CCC
R44: a=6381087C b=860C3C86 c=9E48E11D d=6DC20E87 e=4E9E4F7E
R46: a=4601F05C b=2DCC49C0 c=18E0421F d=A1830F21 e=9E48E11D
R48: a=8EB6C83B b=1C149969 c=11807C17 d=0B731270 e=18E0421F
R50: a=D5D79282 b=5666238B c=E3ADB20E d=4705265A e=11807C17
R52: a=0C947120 b=0823F989 c=B575E4A0 d=D59988E2 e=E3ADB20E
R54: a=C218BAA5 b=920A30EA c=03251C48 d=4208FE62 e=B575E4A0
R56: a=B5022079 b=F30D765D c=70862EA9 d=A4828C3A e=03251C48
R58: a=E70F5DFB b=766D14A3 c=6D40881E d=7CC35D97 e=70862EA9
R60: a=110BCB99 b=46BA94E7 c=F9C3D77E d=DD9B4528 e=6D40881E
R62: a=F200718D b=63A74A72 c=4442F2E6 d=D1AEA539 e=F9C3D77E
R64: a=23F6D36A b=21C432A4 c=7C801C63 d=98E9D29C e=4442F2E6
R66: a=C210491B b=7973CC2D c=88FDB4DA d=08710CA9 e=7C801C63
R68: a=34DC1778 b=383D5D93 c=F0841246 d=5E5CF30B e=88FDB4DA
R70: a=674E55A5 b=463558B7 c=0D3705DE d=CE0F5764 e=F0841246
R72: a=E452151C b=DB6379D9 c=59D39569 d=D18D562D e=0D3705DE
R74: a=CE40A960 b=95A1780C c=39148547 d=76D8DE76 e=59D39569
R76: a=42B352EB b=7994D2F8 c=33902A58 d=25685E03 e=39148547
R78: a=E3B07323 b=ADDFDC73 c=D0ACD4BA d=1E6534BE e=33902A58
R80: a=21D68E46 b=6F2351DF c=F8EC1CC8 d=EB77F71C e=D0ACD4BA
Resultado: 891BB1475EF0FD6891A6F9C6FBAA4B92947FB6AA
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
B.5. SHA-1 273
Cadena: "kriptopolis" (88 bits)
Bloque: 6B726970746F706F6C697380000000000000000000000000
000000000000000000000000000000000000000000000000
00000000000000000000000000000058
Ini: a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0
R02: a=400081DD b=0B270223 c=59D148C0 d=7BF36AE2 e=98BADCFE
R04: a=61557CFE b=D9886E7F c=50002077 d=C2C9C088 e=59D148C0
R06: a=B62CB646 b=3145031C c=98555F3F d=F6621B9F e=50002077
R08: a=2D45AF5F b=46807E85 c=AD8B2D91 d=0C5140C7 e=98555F3F
R10: a=F43BF9F6 b=A85EF180 c=CB516BD7 d=51A01FA1 e=AD8B2D91
R12: a=072108C8 b=697D55A9 c=BD0EFE7D d=2A17BC60 e=CB516BD7
R14: a=DF29879C b=3503FAD9 c=01C84232 d=5A5F556A e=BD0EFE7D
R16: a=0678F27A b=481EB2E3 c=37CA61E7 d=4D40FEB6 e=01C84232
R18: a=A15AB731 b=3EE9ADE2 c=819E3C9E d=D207ACB8 e=37CA61E7
R20: a=AB2F7D99 b=5704D5FE c=6856ADCC d=8FBA6B78 e=819E3C9E
R22: a=28A91B1F b=D90DB07B c=6ACBDF66 d=95C1357F e=6856ADCC
R24: a=C2BE33DB b=4B342F34 c=CA2A46C7 d=F6436C1E e=6ACBDF66
R26: a=1DAB7331 b=27F1416F c=F0AF8CF6 d=12CD0BCD e=CA2A46C7
R28: a=D85BDF45 b=AB5927D5 c=476ADCCC d=C9FC505B e=F0AF8CF6
R30: a=43B8E8A4 b=74386A94 c=7616F7D1 d=6AD649F5 e=476ADCCC
R32: a=3DAAE44F b=774E7172 c=10EE3A29 d=1D0E1AA5 e=7616F7D1
R34: a=4FDC1B88 b=5D5610F1 c=CF6AB913 d=9DD39C5C e=10EE3A29
R36: a=7E58EA7B b=EA9DF552 c=13F706E2 d=5755843C e=CF6AB913
R38: a=B94B8784 b=7CDB656F c=DF963A9E d=BAA77D54 e=13F706E2
R40: a=19B56EA2 b=88361E28 c=2E52E1E1 d=DF36D95B e=DF963A9E
R42: a=C5C402CE b=B4AA1C2E c=866D5BA8 d=220D878A e=2E52E1E1
R44: a=087893C1 b=E5C8DD17 c=B17100B3 d=AD2A870B e=866D5BA8
R46: a=10C39FA5 b=8781E3DC c=421E24F0 d=F9723745 e=B17100B3
R48: a=FCA2E4E9 b=00DB97DB c=4430E7E9 d=21E078F7 e=421E24F0
R50: a=29675B14 b=E07CFB83 c=7F28B93A d=C036E5F6 e=4430E7E9
R52: a=30C83C92 b=E8C85C50 c=0A59D6C5 d=F81F3EE0 e=7F28B93A
R54: a=873B832C b=4D5329BE c=8C320F24 d=3A321714 e=0A59D6C5
R56: a=EA05D012 b=5EEE15EE c=21CEE0CB d=9354CA6F e=8C320F24
R58: a=2E5309FD b=C3E8ACC8 c=BA817404 d=97BB857B e=21CEE0CB
R60: a=63129A6C b=9D77469B c=4B94C27F d=30FA2B32 e=BA817404
R62: a=10600A4F b=EB9C641B c=18C4A69B d=E75DD1A6 e=4B94C27F
R64: a=B67A32B2 b=7326BFF5 c=C4180293 d=FAE71906 e=18C4A69B
R66: a=844649E5 b=E8A707A8 c=AD9E8CAC d=5CC9AFFD e=C4180293
R68: a=F701EFA0 b=5EF992A0 c=61119279 d=3A29C1EA e=AD9E8CAC
R70: a=57E47E05 b=70BF4F9C c=3DC07BE8 d=17BE64A8 e=61119279
R72: a=A84D0A88 b=4B833CB9 c=55F91F81 d=1C2FD3E7 e=3DC07BE8
R74: a=0B3CD293 b=2B01A32B c=2A1342A2 d=52E0CF2E e=55F91F81
R76: a=C79E506D b=A1584161 c=C2CF34A4 d=CAC068CA e=2A1342A2
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
274 B. Ayudas a la Implementaci on
R78: a=761449FA b=DB91E0C7 c=71E7941B d=68561058 e=C2CF34A4
R80: a=8AB36355 b=2F2C07DB c=9D85127E d=F6E47831 e=71E7941B
Resultado: F1F886561EF9B364363FEF7C0716CCA735BA760B
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
Bibliografa
[1] Bruce Schneier. Applied Cryptography. Second Edition. John Wiley & sons, 1996.
[2] Alfred J. Menezes, Paul C. van Oorschot y Scott A. Vanstone. Handbook of Applied
Cryptography. CRC Press, 1996.
[3] Seberry, J., Pieprzyk, J. Cryptography. An Introduction to Computer Security. Pren-
tice Hall. Australia, 1989.
[4] Wikipedia.
http://www.wikipedia.org
[5] Juan Manuel Vel azquez y Arturo Quirantes. Manual de PGP 5.53i. 1998.
[6] John D. Lipson. Elements of Algebra and Algebraic Computing. Addison-Wesley,
1981.
[7] RFC 2440: Open PGP Message Format.
http://www.ietf.org/rfc/rfc2440.txt
[8] RFC 1750: Randomness Recommendations for Security.
http://www.it.kth.se/docs/rfc/rfcs/rfc1750.txt
[9] P agina Web de Kript opolis.
http://www.kriptopolis.org
[10] P agina Web de PGP International.
http://www.pgpi.org
[11] P agina Web de Zedz Consultants (antes Replay).
http://www.zedz.net
[12] P agina Web de los Laboratorios RSA.
http://rsasecurity.com/rsalabs/
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
276 BIBLIOGRAF
IA
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
ETICO
Pruebas de, 209
Secreto, 210
sobre Grafos, 212
Vericador, 210
Contrase nas, 231
Criptoan alisis, 29
Diferencial, 33, 159
Lineal, 33, 159
Criptografa, 29
Asim etrica, 171
Cu antica, 247
Criptograma, 30
Criptologa, 30
Criptoan alisis, 32
Criptosistema, 30
Asim etrico, 30
Seguro de Shannon, 47, 50
Sim etrico, 30
Curvas Elpticas, 91
en GF(n), 95
en R, 92
Grupo de, 92
DES, 141
Cl aves D ebiles, 143
Con S-Cajas Alternativas, 146
Con Subclaves Independientes, 145
Generalizado, 146
M ultiple, 145
Permutaciones de, 251
S-Cajas, 251
Valores de Prueba, 255
Desinformaci on, 50
Diccionario, Ataque de, 231
DifeHellman, Algoritmo de, 182
Dife-Hellman
Problema de, 76
Difusi on, 51
Distancia de Unicidad, 50
DSA, Algoritmo, 185
ECB, Electronic Codebook, 155
ElGamal
Cifrado, 183
Firma Digital, 183
ElGamal, Algoritmo de, 183
Sobre Curvas Elpticas, 186
ENIGMA, M aquina, 123, 129, 131
Enlace, Capa de, 218
Enteros Largos
Aritm etica Modular, 111
Divisi on, 107
Producto, 104
Representaci on, 101
Resta, 103
Suma, 102
Entropa, 43
Condicionada, 46
Ley de Entropas Totales, 46
Teorema de Disminuci on de, 46
Escitalo, 127
ESP, Encapsulating Security Payload, 223
Esteganografa, 32, 201
detecci on, 207
en archivos de texto, 202
en archivos multimedia, 203
Estructura de Grupo, Cifrados con, 140
Euclides
Algoritmo de, 69
Algoritmo Extendido de, 72
Euler
Funci on de, 71
Exponenciaci on, 75
Algoritmo R apido de, 75
Factorizaci on, 77
Algoritmos de, 78
M etodo de Fermat, 79
M etodo de Pollard, 79
M etodos Cuadr aticos, 80
Feistel, Red de, 138
Fermat
Peque no Teorema de, 72
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
INDICE ALFAB
ETICO 279
Firma Digital, 226
Fsica, Capa, 218
Funciones Resumen, 189
Longitud Adecuada, 190
Propiedades, 189
Generadores de Secuencia
Asncronos, 163
Sncronos, 163
GnuPG, 236
HMAC, 198
IDEA, 146
Valores de Prueba, 258
IKE, 223
Informaci on
Cantidad de, 41
entre dos Variables, 46
Teora de la, 41
Infraestructuras de Clave P ublica, 228
Intermediario, Ataque del
En Algoritmos Asim etricos, 174
En Pruebas de Conocimiento Cero,
213
Internet, Protocolos, 218
Invarianza
Principio de, 58
Inversa
Existencia de, 70
IPsec, Protocolos, 222
Kasiski, M etodo de, 126
Kerberos, 223
Lenguaje
Indice de un, 48
Listas de Revocaci on de Certicados, 230
Logaritmos Discretos, 75
Problema de los, 76
Problema en Curvas Elpticas, 96
Lorenz, Cifrado de, 123, 133, 134
MAC, Message Autentication Codes, 189,
198
Marcas de Agua, 207
MD5, 191
Valores de Prueba, 266
MDC
Colisi on, 197
Estructura, 191
Seguridad, 197
MDC, Modication Detection Codes, 189
Mensaje antri on, 201
Mensaje hu esped, 201
Monoalfab etico General, Cifrados, 125
Monoalfab eticos, Cifrados, 124
Criptoan alisis, 125
No Repudio, 36
N umeros Primos
Importancia de, 77
Primos Fuertes, 84
OFB, Output Feedback Mode, 167
Paradoja del Cumplea nos, 190
PGP, 235
Codicaci on de Mensajes, 236
Firma Digital, 237
Gesti on de Claves, 240
Revocaci on de Claves, 241
PKI, 228
Polialfab eticos, Cifrados, 125
Criptoan alisis, 126
Polinomios
Anillos de, 84
Anillos en Z
n
, 86
Probabilidad
Ley de Probabilidad Total, 46
PURPLE, M aquina, 132
Rabin
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores
280
INDICE ALFAB
ETICO
Algoritmo de, 184
RC4, Algoritmo, 167
Red, Capa de, 219
Redes Privadas Virtuales, 219
Redundancia, 48
de un Lenguaje, 49
Indice de, 49
Registros de Desplazamiento Retroali-
mentados, 164
Combinaci on de, 166
Lineales, 165
No Lineales, 165
Rijndael, 148
RSA, Algoritmo, 176
Seguridad, 178
Vulnerabilidades, 179
S-Cajas, 140
de DES, 251
de RC4, 167
Sal, 232
SEAL, Algoritmo, 168
Secuencias Aleatorias
Criptogr acamente, 114
Estadsticamente, 114
Generaci on de, 115
Totalmente, 115
Seguridad
de la Informaci on, 35
del Canal, 36
Fsica, 35
Sesgo, eliminaci on, 117
Mediante Bits de Paridad, 118
Mediante Funciones Resumen, 119
M etodo Von Neumann, 118
SHA-1, 195
Valores de Prueba, 269
SIGABA, M aquina, 132
Signatura, 189
SKIP, 223
Software Libre, 23
Solitaire, Algoritmo, 23
SSL, Protocolo, 220
T uneles, 221
Stecker, 129
Suplantaci on, 36
Sustituci on Afn, Cifrado de, 124
Sustitucion Homof onica, Cifrados de,
126
TCP/IP, Protocolos, 218
Tests de Primalidad, 82
Lehmann, 82
Rabin-Miller, 83
Texto Claro, 30
TLS, Protocolo, 221
Transporte, Capa de, 219
Transposici on, Cifrados de, 127
Criptoan alisis, 128
Turing, M aquina Universal de, 133
ULTRA, Proyecto, 130
Variable Aleatoria, 42
Vector de Inicializaci on, 156
Vernam, Cifrado de, 161
Vig` enere, Cifrado de, 126
VPN, Virtual Private Network, 219
Watermarking, 207
X.509, Certicados, 227
X9.17, Generador Aleatorio, 119
Manuel J. Lucena L opez Criptografa y Seguridad en Computadores