Está en la página 1de 237

Criptograf y Seguridad en a Computadores

Tercera Edicin (Versin 2.10). Mayo de 2003 o o

Manuel Jos Lucena Lpez e o


e-mail: mlucena@ujaen.es

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Qu signica habla, amigo y entra? pregunt Merry. e o Es bastante claro dijo Gimli. Si eres un amigo, dices la contrasea y las puertas se n abren y puedes entrar. S dijo Gandalf, es probable que estas puertas estn gobernadas por palabras. . . e El Seor de Los Anillos n J.R.R. Tolkien

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Copyright
c 1999-2003 de Manuel Jos Lucena Lpez. Todos los derechos reservados. e o Este documento puede ser distribuido libre y gratuitamente bajo cualquier soporte siempre que se respete su integridad. Queda prohibida su venta sin permiso expreso del autor.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Agradecimientos
A Loles, ella sabe por qu. e A los chicos de Kriptpolis, por darme esta oportunidad. o A mis alumnos, por aguantarme cada ao. n A Borja Arbers, Alejandro Benabn, Manuel Ctedra, Jess Cea, Dextar, Gabriel Horacio a e a u D Luis Escnez, Lzaro Escudero, Sacha Fuentes, David Garc Luis Garc Alfonso ez, a a a, a, Gonzlez, Germn Jcome, Mart Knoblauch, Juan Mart Javier Nieto, Juan Andrs a a a n n, e Olmo, Juan Ramn Moral, Antonio Jess Navarro, Alejandro Noguera, Jos A. Ramos, o u e Carlos Romeo, Javier Rubio, Felipe Santos, V ctor A. Villagra, y a todos aquellos que, enviando sugerencias o correcciones, han ayudado a mejorar esta obra. A todos los que alguna vez han compartido sus conocimientos, por enriquecernos a todos.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Prefacio
El presente documento ha sido elaborado originalmente como apoyo a la asignatura Criptograf y Seguridad en Computadores, de 3er Curso de Ingenier Tcnica en Informtica de a a e a A X 2 , y los editores Gestin, de la Universidad de Jan, empleando el procesador de textos L TE o e grcos XFig y Gimp. Puede descargarse su ultima versin, as como eventuales correcciones a o en la siguiente direccin web: o http://wwwdi.ujaen.es/~mlucena No se pretende que estos apuntes sustituyan a la bibliograf de la asignatura, ni a las a clases tericas, sino que sirvan ms bien como complemento a las notas que el alumno debe o a tomar en clase. Asimismo, no debe considerarse un documento denitivo y exento de errores, si bien ha sido elaborado con detenimiento y revisado exhaustivamente. El autor pretende que sea mejorado y ampliado con cierta frecuencia, lo que probablemente desembocar en sucesivas a versiones, y para ello nadie mejor que los propios lectores para plantear dudas, buscar errores, y sugerir mejoras. Jan, 27 de mayo de 2003. e

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

10

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Indice general
I Preliminares 19
21 21 22 25 25 27 29 29 30 31 32 33 34

1. Introduccin o 1.1. Cmo Leer esta Obra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.2. Algunas notas sobre la Historia de la Criptograf . . . . . . . . . . . . . . . . . a 1.3. Nmeros Grandes u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4. Acerca de la Terminolog Empleada . . . . . . . . . . . . . . . . . . . . . . . . a 1.5. Notacin Algor o tmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Conceptos Bsicos sobre Criptograf a a 2.1. Criptograf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.2. Criptosistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Esteganograf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.4. Criptoanlisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.5. Compromiso entre Criptosistema y Criptoanlisis . . . . . . . . . . . . . . . . . a 2.6. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

II

Fundamentos Tericos de la Criptograf o a

37
39 39 40 42 44

3. Teor de la Informacin a o 3.1. Cantidad de Informacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.2. Entrop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.3. Entrop Condicionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.4. Cantidad de Informacin entre dos Variables . . . . . . . . . . . . . . . . . . . o Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

12

INDICE GENERAL 3.5. Criptosistema Seguro de Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Redundancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7. Desinformacin y Distancia de Unicidad . . . . . . . . . . . . . . . . . . . . . . o 3.8. Confusin y Difusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o 3.9. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 45 46 47 48 49 49 51 52 53 53 54 55 57 57 58 59 60 60 61 62 63 64 64 65 65 66 66 67

4. Introduccin a la Complejidad Algor o tmica 4.1. Concepto de Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Complejidad Algor tmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.2.1. Operaciones Elementales . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Algoritmos Polinomiales, Exponenciales y Subexponenciales . . . . . . . . . . . 4.4. Clases de Complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5. Algoritmos Probabil sticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Fundamentos de Aritmtica Modular e 5.1. Aritmtica Modular. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . e 5.1.1. Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Complejidad de las Operaciones Aritmticas en Zn . . . . . . . . . . . . e 5.2. Clculo de Inversas en Zn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 5.2.1. Existencia de la Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2. Funcin de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 5.2.3. Algoritmo Extendido de Euclides . . . . . . . . . . . . . . . . . . . . . . 5.3. Teorema Chino del Resto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4. Exponenciacin. Logaritmos Discretos . . . . . . . . . . . . . . . . . . . . . . . o 5.4.1. Algoritmo de Exponenciacin Rpida . . . . . . . . . . . . . . . . . . . o a 5.4.2. El Problema de los Logaritmos Discretos . . . . . . . . . . . . . . . . .

5.4.3. El Problema de Die-Hellman . . . . . . . . . . . . . . . . . . . . . . . 5.5. Importancia de los Nmeros Primos . . . . . . . . . . . . . . . . . . . . . . . . u 5.6. Algoritmos de Factorizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 5.6.1. Mtodo de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

INDICE GENERAL 5.6.2. Mtodo p 1 de Pollard . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5.6.3. Mtodos Cuadrticos de Factorizacin . . . . . . . . . . . . . . . . . . . e a o 5.7. Tests de Primalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7.1. Mtodo de Lehmann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5.7.2. Mtodo de Rabin-Miller . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5.7.3. Consideraciones Prcticas . . . . . . . . . . . . . . . . . . . . . . . . . . a 5.7.4. Primos fuertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8. Anillos de Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.1. Polinomios en Zn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Introduccin a las Curvas El o pticas 6.1. Curvas El pticas en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1. Suma en E(R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Curvas El pticas en GF (n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13 68 69 70 70 71 71 72 72 73 74 75 75 76 78 79 79 80 80 81 81 82 82 83 84 86 89 90 91 Criptograf y Seguridad en Computadores a

6.3. Curvas El pticas en GF (2n ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1. Suma en E(GF (2n )) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. El Problema de los Logaritmos Discretos en Curvas El pticas . . . . . . . . . . 6.5. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Aritmtica Entera de M ltiple Precisin e u o 7.1. Representacin de enteros largos . . . . . . . . . . . . . . . . . . . . . . . . . . o 7.2. Operaciones aritmticas sobre enteros largos . . . . . . . . . . . . . . . . . . . . e 7.2.1. Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2. Resta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.3. Multiplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 7.2.4. Divisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 7.3. Aritmtica modular con enteros largos . . . . . . . . . . . . . . . . . . . . . . . e 7.4. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Criptograf y N meros Aleatorios a u Manuel J. Lucena Lpez o

14

INDICE GENERAL 8.1. Tipos de Secuencias Aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1. Secuencias pseudoaleatorias . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.2. Secuencias criptogrcamente aleatorias . . . . . . . . . . . . . . . . . . a 8.1.3. Secuencias totalmente aleatorias . . . . . . . . . . . . . . . . . . . . . . 8.2. Generacin de Secuencias Aleatorias Criptogrcamente Vlidas . . . . . . . . o a a 8.2.1. Obtencin de Bits Aleatorios . . . . . . . . . . . . . . . . . . . . . . . . o 8.2.2. Eliminacin del Sesgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 8.2.3. Generadores Aleatorios Criptogrcamente Seguros . . . . . . . . . . . . a 91 91 92 92 93 93 95 96

III

Criptograf de Llave Privada a

99
101

9. Criptograf Clsica a a

9.1. Algoritmos Clsicos de Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 a 9.1.1. Cifrados Monoalfabticos . . . . . . . . . . . . . . . . . . . . . . . . . . 102 e 9.1.2. Cifrados Polialfabticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 e 9.1.3. Cifrados por Sustitucin Homofnica . . . . . . . . . . . . . . . . . . . . 104 o o 9.1.4. Cifrados de Transposicin . . . . . . . . . . . . . . . . . . . . . . . . . . 104 o 9.2. Mquinas de Rotores. La Mquina ENIGMA . . . . . . . . . . . . . . . . . . . 105 a a 9.2.1. Un poco de Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 9.2.2. Consideraciones Tericas Sobre la Mquina ENIGMA . . . . . . . . . . 108 o a 9.2.3. Otras Mquinas de Rotores . . . . . . . . . . . . . . . . . . . . . . . . . 109 a 10.Cifrados por Bloques 111

10.1. Cifrado de producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.1.1. Redes de Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.2. Cifrados con Estructura de Grupo . . . . . . . . . . . . . . . . . . . . . 114 10.1.3. S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.2. El Algoritmo DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.2.1. Claves Dbiles en DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 e 10.3. Variantes de DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.3.1. DES Mltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

INDICE GENERAL

15

10.3.2. DES con Subclaves Independientes . . . . . . . . . . . . . . . . . . . . . 118 10.3.3. DES Generalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.3.4. DES con S-Cajas Alternativas . . . . . . . . . . . . . . . . . . . . . . . . 119 10.4. El algoritmo IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.5. El algoritmo Rijndael (AES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

10.5.1. Estructura de AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.5.2. Elementos de AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.5.3. Las Rondas de AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.5.4. Clculo de las Subclaves . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 a 10.5.5. Seguridad de AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.6. Modos de Operacin para Algoritmos de Cifrado por Bloques . . . . . . . . . . 126 o 10.6.1. Modo ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.6.2. Modo CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.6.3. Modo CFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.6.4. Otros Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.7. Criptoanlisis de Algoritmos Simtricos . . . . . . . . . . . . . . . . . . . . . . 130 a e 10.7.1. Criptoanlisis Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . 130 a 10.7.2. Criptoanlisis Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 a 11.Cifrados de Flujo 131

11.1. Secuencias Pseudoaleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 11.2. Tipos de Generadores de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . 132 11.2.1. Generadores S ncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 11.2.2. Generadores As ncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 11.3. Registros de Desplazamiento Retroalimentados . . . . . . . . . . . . . . . . . . 133 11.3.1. Registros de Desplazamiento Retroalimentados Lineales . . . . . . . . . 134 11.3.2. Registros de Desplazamiento Retroalimentados No Lineales . . . . . . . 134 11.3.3. Combinacin de Registros de Desplazamiento . . . . . . . . . . . . . . . 135 o 11.4. Otros Generadores de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.4.1. Algoritmo RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.4.2. Algoritmo SEAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

16

INDICE GENERAL

IV

Criptograf de Llave P blica a u

139
141

12.Algoritmos Asimtricos de Cifrado e

12.1. Aplicaciones de los Algoritmos Asimtricos . . . . . . . . . . . . . . . . . . . . 141 e 12.1.1. Proteccin de la Informacin . . . . . . . . . . . . . . . . . . . . . . . . 142 o o 12.1.2. Autenticacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 o 12.2. El Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 12.2.1. Seguridad del Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . 146 12.2.2. Vulnerabilidades de RSA . . . . . . . . . . . . . . . . . . . . . . . . . . 146 12.3. Otros Algoritmos Asimtricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 e 12.3.1. Algoritmo de Die-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . 149 12.3.2. Algoritmo de ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 12.3.3. Algoritmo de Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 12.3.4. Algoritmo DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 12.4. Criptograf de Curva El a ptica . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 12.4.1. Cifrado de ElGamal sobre Curvas El pticas . . . . . . . . . . . . . . . . 153 12.5. Los Protocolos SSL y TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 12.6. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 13.Mtodos de Autenticacin e o 13.1. Firmas Digitales. Funciones Resumen 157 . . . . . . . . . . . . . . . . . . . . . . . 157

13.1.1. Longitud Adecuada para una Signatura . . . . . . . . . . . . . . . . . . 158 13.1.2. Estructura de una Funcin Resumen . . . . . . . . . . . . . . . . . . . . 159 o 13.1.3. Algoritmo MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 13.1.4. El Algoritmo SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 13.1.5. Funciones de Autenticacin de Mensaje . . . . . . . . . . . . . . . . . . 164 o 13.2. Autenticacin de Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 o 13.3. Autenticacin de Usuario Mediante Contrasea . . . . . . . . . . . . . . . . . 165 o n 13.3.1. Ataques Mediante Diccionario . . . . . . . . . . . . . . . . . . . . . . . . 166 13.4. Dinero Electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 o 13.5. Esteganograf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

INDICE GENERAL

17

13.6. Certicados X.509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 14.PGP 171

14.1. Fundamentos e Historia de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . 171 14.2. Estructura de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 14.2.1. Codicacin de Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . 172 o 14.2.2. Firma Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 14.2.3. Armaduras ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 14.2.4. Gestin de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 o 14.2.5. Distribucin de Claves y Redes de Conanza . . . . . . . . . . . . . . . 175 o 14.2.6. Otros PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 14.3. Vulnerabilidades de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Seguridad en Redes de Computadores

179
181

15.Seguridad en Redes

15.1. Importancia de las Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 15.2. Redes Internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 15.3. Redes Externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 15.3.1. Intranets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 15.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 16.Hackers 16.1. El Hielo y los Vaqueros 187 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

16.2. Cmo acta un Hacker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 o u 16.2.1. Protocolos TCP/IP. Demonios y Puertos . . . . . . . . . . . . . . . . . 189 16.2.2. Desbordamientos de Buer . . . . . . . . . . . . . . . . . . . . . . . . . 191 16.2.3. Suplantando Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 16.2.4. Borrando las Huellas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 16.2.5. Ataques Pasivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 16.2.6. Ataques Coordinados Manuel J. Lucena Lpez o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Criptograf y Seguridad en Computadores a

18

INDICE GENERAL 16.3. Cmo Protegerse del Ataque de los Hackers . . . . . . . . . . . . . . . . . . . . 193 o 16.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

17.Virus

195

17.1. Origen de los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 17.2. Anatom de un Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 a 17.2.1. Mtodos de Contagio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 e 17.2.2. La Fase Destructiva de un Virus . . . . . . . . . . . . . . . . . . . . . . 197 17.3. Cundo son Peligrosos los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 a 17.4. Protegerse frente a los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

VI

Apndices e

199
201

A. Criptograf Cuntica a a

A.1. Mecnica Cuntica y Criptograf . . . . . . . . . . . . . . . . . . . . . . . . . . 201 a a a A.2. Computacin Cuntica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 o a A.3. Expectativas de Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 B. Ayudas a la Implementacin o 205

B.1. DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 B.1.1. S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 B.1.2. Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 B.1.3. Valores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 B.2. IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 B.3. AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 B.4. MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 B.5. SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 C. Ejercicios Resueltos 227

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Parte I

Preliminares

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 1

Introduccin o
A lo largo de 1995 y principios de 1996, los profesores Jos Ignacio Pelez Snchez, Antonio e a a Snchez Solana y Manuel Jos Lucena Lpez elaboraron una Coleccin de Apuntes para la a e o o asignatura Criptograf y Seguridad en Computadores, impartida en tercer curso de Ingea nier Tcnica en Informtica de Gestin, en la Universidad de Jan. Varios aos han pasado a e a o e n desde entonces, y, como cab esperar en una disciplina de tan rpida evolucin, las cosas han a a o cambiado. Algunos algoritmos han perdido parte de su inters como es el caso de DES, que e 1 el verano de 1998, nuevas tcnicas han surgido o se han popularizado PGP fue vencido e es un claro ejemplo de que para el usuario de a pie se puede conseguir autntica privacidad, e temas que antes ten un inters limitado se han convertido en fundamentales la rpian e a da expansin de Internet obliga no slo al profesional, sino al usuario medio, a tener ciertos o o conocimientos bsicos sobre seguridad, etc. a La presente coleccin de apuntes naci con la vocacin de intentar cubrir en la medida de o o o lo posible ese vac Sin embargo, la escasez de documentacin en Espaol sobre Criptograf o. o n a, y las dicultades que encontraban muchos alumnos para complementar bibliogrcamente la a asignatura, unido todo ello a la sorprendente difusin del anterior texto hizo surgir en el autor o la idea de distribuir esta obra en formato electrnico y de forma gratuita. o

1.1.

Cmo Leer esta Obra o

Esta obra ha sido organizada en cinco partes: 1. Preliminares. Aqu se incluyen todos los conceptos bsicos y se introduce la terminolog a a empleada en el resto del libro. Su lectura es recomendable incluso para las personas que ya conocen el tema, puesto que puede evitar cierta confusin en los trminos empleados o e
1 En realidad, el ataque que logr tener xito se realiz por la fuerza bruta, por lo que no podemos hablar o e o en un sentido estricto de derrota. De hecho, an no se ha encontrado ninguna debilidad seria en su diseo; lo u n que s qued patente es que su longitud de clave es demasiado pequea. o n

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

22 a lo largo de la obra.

1. Introduccin o

2. Fundamentos Tericos de la Criptograf Se desarrollan brevemente los resultados terio a. o cos sobre los que se va a apoyar el resto del libro. Si usted no domina las Matemticas, a o simplemente no tiene inters en estos fundamentos, puede pasarla por alto. e 3. Criptograf de Llave Privada. Se introduce la Criptograf Clsica, as como los algoa a a ritmos simtricos de cifrado. e 4. Criptograf de Llave Pblica. En esta parte se estudian los algoritmos asimtricos y los a u e mtodos de autenticacin. Adems se incluye un cap e o a tulo sobre PGP. 5. Seguridad en Redes de Computadores. Esta es la parte menos terica y quiz ms prctica o a a a desde el punto de vista de la seguridad (no desde el punto de vista criptogrco). Se a estudian en ella brevemente los problemas que se dan en redes de computadoras, para que el lector pueda comenzar a elaborar por s mismo estrategias de proteccin de la o informacin. o Este texto no tiene por qu ser le cap e do tulo por cap tulo, aunque se ha organizado de manera que los contenidos ms bsicos aparezcan primero. La parte de fundamentos tericos a a o est orientada a personas con unos conocimientos m a nimos sobre Algebra y Programacin, o pero puede ser ignorada si el lector est dispuesto a creerse lo que encuentre en posteriores a cap tulos. La recomendacin del autor en este sentido es clara: si es su primer contacto con la o Criptograf deje los fundamentos tericos justo para el nal, o correr el riesgo de perderse a, o a entre conceptos que, si de una parte son necesarios para una comprensin profunda del tema, o no son imprescindibles a la hora de empezar a adentrarse 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 inters por profundizar en e cualquiera de los aspectos tratados aqu consulte la bibliograf para ampliar sus conocimien, a tos, pudiendo emplear como punto de partida las propias referencias que aparecen al nal de este documento, aunque por desgracia, algunas de las ms interesantes estn en ingls. a a e

1.2.

Algunas notas sobre la Historia de la Criptograf a

La Criptograf moderna nace al mismo tiempo que las computadoras. Durante la Segunda a Guerra Mundial, en un lugar llamado Bletchley Park, un grupo de cient cos entre los que se encontraba Alan Turing, trabajaba en el proyecto ULTRA tratando de descifrar los mensajes enviados por el ejrcito alemn con los ms sosticados ingenios de codicacin ideados e a a o hasta entonces: la mquina ENIGMA y el cifrado Lorenz. Este grupo de cient a cos dise y no utiliz el primer computador de la Historia, denominado Colossus aunque esta informacin o o permaneci en secreto hasta mediados de los 70. o Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnolog cripa togrca, si bien la mayor parte de estos avances se manten y se siguen manteniendo, a an Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

1.2. Algunas notas sobre la Historia de la Criptograf a

23

segn algunos en secreto. Financiadas fundamentalmente por la NSA (Agencia Nacional u de Seguridad de los EE.UU.), la mayor parte de las investigaciones hasta hace relativamente poco tiempo han sido tratadas como secretos militares. Sin embargo, en los ultimos aos, n investigaciones serias llevadas a cabo en universidades de todo el mundo han logrado que la Criptograf sea una ciencia al alcance de todos, y que se convierta en la piedra angular de a asuntos tan importantes como el comercio electrnico, la telefon mvil, o las nuevas plataforo a o mas de distribucin de contenidos multimedia. Esta dualidad civilmilitar ha dado lugar a una o curiosa doble historia de la Criptograf en la que los mismos algoritmos eran descubiertos, a, con pocos aos de diferencia, primero por equipos de annimos militares y posteriormente por n o matemticos civiles, alcanzando unicamente estos ultimos el reconocimiento pblico por sus a u trabajos. Muchas son las voces que claman por la disponibilidad pblica de la Criptograf La exu a. periencia ha demostrado que la unica manera de tener buenos algoritmos es que stos sean e accesibles, para que puedan ser sometidos al escrutinio de toda la comunidad cient ca. Ejemplos claros de oscurantismo y de sus nefastas consecuencias han sido la ca del algoritmo que da emplean para su autenticacin los telfonos celulares GSM en menos de cuarenta y ocho hoo e ras desde que su cdigo fuera descubierto, el controvertido y maniestamente intil algoritmo o u de proteccin de los DVD, o las infructuosas iniciativas de las casas discogrcas encaminao a das a impedir la pirater por citar algunos. La seguridad no debe basarse en mantener los a, algoritmos ocultos puesto que stos, aparte de suscitar poca conanza en los usuarios, tarde e o temprano acaban siendo analizados y descritos sino en su resistencia demostrada tanto terica como prcticamente, y la unica manera de demostrar la fortaleza de un algoritmo es o a sometindolo a todo tipo de ataques. Uno de los cap e tulos ms conocidos de esta historia ocua rri en el verano de 1999, cuando un programador denunci una supuesta puerta trasera en el o o cdigo criptogrco de todas las versiones del sistema operativo Windows. Como este cdigo o a o permanece en secreto, y se considera delito su anlisis Qu pensar usted si se compra un a e a coche y se le proh desarmarlo para ver cmo funciona?, es desgraciadamente imposible be o que Microsoft pueda despejar cualquier sombra de duda sobre la seguridad de sus sistemas operativos. La pretensin de establecer sistemas de patentes sobre el software viene a agravar o la situacin, con un claro perjuicio tanto de los usuarios como de las pequeas empresas freno n te al poder de las grandes corporaciones. Por desgracia, parece que a nuestros gobiernos les interesan ms los benecios de las multinacionales que los intereses de los ciudadanos. a Es imposible desligar la Criptograf moderna de todas las consideraciones pol a ticas, loscas y morales que suscita. Recordemos, por ejemplo, que el software criptogrco est suo a a jeto en EE.UU. a las mismas leyes que el armamento nuclear, y que en Europa se pretende elaborar legislaciones parecidas. Una consecuencia inmediata de esto es que las versiones que se exportan de los exploradores de Internet ms extendidos (Netscape y Explorer), incorporaban a hasta hace poco tiempo una seguridad dbil, impidiendo, por ejemplo, establecer conexiones e realmente seguras para conectarse a un banco con el agravante de que no se informaba de ello adecuadamente al usuario. Si bien esta situacin se ha visto aliviada, debido a la relajacin o o de estas restrictivas leyes, an queda mucho camino por recorrer. Otra de las l u neas de debate es la intencin de algunos gobiernos de almacenar todas las claves privadas de sus ciudadanos, o necesarias para rmar digitalmente, y considerar ilegales aquellas que no estn registradas. Es e Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

24

1. Introduccin o

como pedirnos a todos que le demos a la polic una copia de las llaves de nuestra casa con a el pretexto, por supuesto, de luchar contra el terrorismo y el narcotrco. a Existe un falaz argumento que algunos esgrimen en contra del uso privado de la Criptograf proclamando que ellos nada tienen que ocultar. Estas personas insinan que cualquiera a, u que abogue por el uso libre de la Criptograf es poco menos que un delincuente, y que la nea cesita para encubrir sus cr menes. En ese caso, por qu esas personas que no tienen nada que e ocultar no env todas sus cartas en tarjetas postales, para que todos leamos su contenido?, an o por qu se molestan si alguien escucha sus conversaciones telefnicas?. Defender el mbito e o a de lo privado es un derecho inalienable de la persona, que en mi opinin debe prevalecer sobre o la obligacin que tienen los estados de perseguir a los delincuentes. Dmosle a los gobiernos o e poder para entrometerse en nuestras vidas, y acabarn hacindolo, no les quepa duda. a e En el ojo del huracn se encuentra la red Echelon, que constituye una de las mayores a amenazas contra la libertad de toda la Historia de la Humanidad. Bsicamente se trata de a una red, creada por la NSA en 1980 sus precursoras datan de 1952 en colaboracin o con Gran Bretaa, Australia y Nueva Zelanda, para monitorizar prcticamente todas las n a comunicaciones electrnicas telfono, e-mail y fax principalmente del planeta, y buscar o e de manera automtica ciertas palabras clave. La informacin obtenida ir a la NSA, que a o a luego podr a su vez brindrsela a otros pa a a ses. El pretexto es, nuevamente, la lucha contra el terrorismo, pero podr ser empleada tanto para espionaje industrial como presuntamente a ha hecho durante aos el Gobierno Francs, poniendo a disposicin de sus propias compa n e o nas secretos robados a empresas extranjeras, como para el control de aquellas personas que pueden representar amenazas pol ticas a la estabilidad de la sociedad moderna. La Unin o Europea reconoci la existencia de Echelon, pero hasta la fecha nadie ha exigido a ningn o u gobierno explicacin alguna; es ms, parece que los planes de la U.E. a respecto pasan por o a el despliegue de su propia red de vigilancia electrnica, llamada Enfopol, en la que lleva o trabajando unos doce aos. n La red Enfopol tendr caracter a sticas tan aterradoras como la posesin de todas las claves o privadas de los ciudadanos europeos, la monitorizacin de telfonos, buzones de voz, faxes, o e chats y correo electrnico, adems de la incorporacin de puertas traseras a los proveedores o a o de Internet. Existe un documento de la U.E. ENFOPOL 112 10037/95, rmado por todos y cada uno de los miembros de la Unin, en el que se aprueba la creacin de esta red. Sin o o embargo, ninguno de los estados miembros ha conrmado ni desmentido nada al respecto. Este secretismo es ms que preocupante, pues deja a la supuesta democracia en que vivimos a maniatada frente a un asunto tan importante, impidiendo que se abra el imprescindible debate pblico que deber anteceder a tan grave asunto. Qu nos queda de la Libertad y la u a e Democracia si se nos ocultan asuntos tan importantes por nuestro bien?. Afortunadamente, el proyecto Enfopol se encuentra paralizado, pero, por cunto tiempo? a No cabe duda de que la informacin se est convirtiendo en la mayor fuente de poder que o a ha conocido la Humanidad, y que la Criptograf es una herramienta esencial para su control. a 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 informacin relevante de manera honesta e imparcial, Cmo va a poder decidir su futuro? o o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

1.3. Nmeros Grandes u Esta obra pretende poner su pequeo granito de arena en ese sentido. n

25

1.3.

N meros Grandes u

Los algoritmos criptogrcos emplean claves con un elevado nmero de bits, y usualmente a u se mide su calidad por la cantidad de esfuerzo que se necesita para romperlos. El tipo de ataque ms simple es la fuerza bruta, que simplemente trata de ir probando una a una todas a las claves. Por ejemplo, el algoritmo DES tiene 256 posibles claves. Cunto tiempo nos llevar a a probarlas todas si, pongamos por caso, dispusiramos de un computador capaz de hacer un e milln de operaciones por segundo? Tardar o amos. . . ms de 2200 aos! Pero y si la clave del a n ejemplo anterior tuviera 128 bits? El tiempo requerido ser de 1024 aos. a n Es interesante dedicar un apartado a tratar de jar en nuestra imaginacin la magnitud real o de este tipo de nmeros. En el cuadro 1.1 podemos observar algunos valores que nos ayudarn a u a comprender mejor la autntica magnitud de muchos de los nmeros que veremos en este texto. e u Observndola podremos apreciar que 1024 aos es aproximadamente cien billones de veces la a n edad del universo (y eso con un ordenador capaz de ejecutar el algoritmo de codicacin o completo un milln de veces por segundo). Esto nos deber disuadir de emplear mecanismos o a basados en la fuerza bruta para reventar claves de 128 bits. 220 , Para manejar la tabla con mayor rapidez, recordemos que un milln es aproximadamente o 24 segundos. Recorrer completamente un espacio de y que un ao tiene ms o menos 2 n a claves de, por ejemplo, 256 bits a razn de un milln por segundo supone 225644 = 2212 aos o o n de clculo. a

1.4.

Acerca de la Terminolog Empleada a

En muchos libros sobre Criptograf aparecen trminos como encriptar y desencriptar, a e adoptados con toda probabilidad del verbo anglosajn encrypt. El lector podr comprobar o a que este tipo de expresiones ha sido evitado en el presente texto, debido a la existencia de palabras perfectamente vlidas que pertenecen al idioma castellano, como son cifrar-descifrar y a codicar-decodicar (o descodicar). La opinin del autor es que slo deben emplearse trminos o o e forneos cuando nuestro riqu a simo idioma carezca de expresiones adecuadas para representar las ideas en cuestin. Esta ultima es la situacin en la que se encuentra la palabra esteganoo o graf hispanizacin del trmino ingls steganography que a su vez proviene del t a, o e e tulo del libro Steganographia, escrito por Johannes Trithemius en 1518. El lector podr advertir que en este texto aparece el trmino autenticacin, en lugar a e o de autenticacin. Quisiera hacer notar en este punto que ambos trminos son correctos y o e estn recogidos en el Diccionario de la Real Academia, y que aqu empleo el primero de ellos a simplemente porque me gusta ms que el otro. a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

26

1. Introduccin o

Valor Probabilidad de ser fulminado por un rayo (por d a) Probabilidad de ganar el primer premio de la Loter Primia tiva Espaola n Probabilidad de ganar el primer premio de la Primitiva y caer fulminado por un rayo el mismo d a Tiempo hasta la prxima glaciacin o o Tiempo hasta que el Sol se extinga Edad del Planeta Tierra Edad del Universo Nmero u Nmero u Nmero u Nmero u cura) de tomos en el Planeta Tierra a de tomos en el Sol a de tomos en la V Lctea a a a de tomos en el Universo (excluyendo materia osa

Nmero u 1 entre 9.000.000.000 (233 ) 1 entre 13.983.816 (223 ) 1 entre 256

14.000 (214 ) aos n 9 (230 ) a os 10 n 109 (230 ) aos n 1010 (234 ) aos n 1051 1057 1067 1077 (2170 ) (2189 ) (2223 ) (2255 )

Masa de la Tierra Masa del Sol Masa estimada del Universo (excluyendo materia oscura) Volumen de la Tierra Volumen del Sol Volumen estimado del Universo

5,9 1024 (282 ) Kg. 2 1030 (2100 ) Kg. 1050 (2166 ) Kg. 1021 (269 ) m3 1027 (289 ) m3 1082 (2272 ) m3

Cuadro 1.1: Algunos nmeros grandes u

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

1.5. Notacin Algor o tmica

27

1.5.

Notacin Algor o tmica

En este libro se describen varios algoritmos de inters en Criptograf La notacin empleae a. o da en ellos es muy similar a la del lenguaje de programacin C, con objeto de que sea accesible o al mayor nmero de personas posible. Si usted no conoce este lenguaje, siempre puede acudir u a cualquier tutorial bsico para poder entender los algoritmos de este libro, y despus llevar a a e cabo sus propias implementaciones en cualquier otro lenguaje de programacin. Sin embargo, o aunque la notacin que uso es parecida, no es exactamente la misma: all donde el empleo de o un C puro pon en peligro la claridad en la descripcin de los algoritmos, me he permitido a o pequeas licencias. Tampoco he tenido en cuenta ni mucho menos la eciencia de tiempo o n memoria para estos algoritmos, por lo que mi sincero consejo es que no intenten cortar y pegar para realizar sus propias implementaciones.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

28

1. Introduccin o

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 2

Conceptos Bsicos sobre a Criptograf a


2.1. Criptograf a

Segn el Diccionario de la Real Academia, la palabra Criptograf proviene del griego u a o, que signica oculto, y , que signica escritura, y su denicin es: Arte de o escribir con clave secreta o de un modo enigmtico. Obviamente la Criptograf hace aos que a a n dej de ser un arte para convertirse en una tcnica, o ms bien un conglomerado de tcnicas, o e a e que tratan sobre la proteccin ocultamiento frente a observadores no autorizados de la o informacin. Entre las disciplinas que engloba cabe destacar la Teor de la Informacin, la o a o Teor de Nmeros o Matemtica Discreta, que estudia las propiedades de los nmeros a u a u enteros, y la Complejidad Algor tmica. Existen dos trabajos fundamentales sobre los que se apoya prcticamente toda la teor a a criptogrca actual. Uno de ellos, desarrollado por Claude Shannon en sus art a culos A Mathematical Theory of Communication (1948) y Communication Theory of Secrecy Systems (1949), sienta las bases de la Teor de la Informacin y de la Criptograf moderna. El sea o a gundo, publicado por Whiteld Die y Martin Hellman en 1976, se titulaba New directions in Cryptography, e introduc el concepto de Criptograf de Llave Pblica, abriendo enora a u memente el abanico de aplicacin de esta disciplina. o Conviene hacer notar que la palabra Criptograf slo hace referencia al uso de cdigos, a o o por lo que no engloba a las tcnicas que se usan para romper dichos cdigos, conocidas en su e o conjunto como Criptoanlisis. En cualquier caso ambas disciplinas estn a a ntimamente ligadas; no olvidemos que cuando se disea un sistema para cifrar informacin, hay que tener muy n o presente su posible criptoanlisis, ya que en caso contrario podr a amos llevarnos desagradables sorpresas. Finalmente, el trmino Criptolog aunque no est recogido an en el Diccionario, se e a, a u emplea habitualmente para agrupar tanto la Criptograf como el Criptoanlisis. a a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

30

2. Conceptos Bsicos sobre Criptograf a a

2.2.

Criptosistema

Deniremos un criptosistema como una qu ntupla (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 criptogramas. 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 transformacin diferente o Ek para cada valor posible de la clave k. D es el conjunto de transformaciones de descifrado, anlogo a E. a Todo criptosistema ha de cumplir la siguiente condicin: o Dk (Ek (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 simtricos o de clave privada. Son aquellos que emplean la misma clave e 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 cmo transmitir la clave de forma segura. o Criptosistemas asimtricos o de llave pblica, que emplean una doble clave (kp , kP ). e u kp se conoce como clave privada y kP se conoce como clave pblica. Una de ellas sirve u para la transformacin E de cifrado y la otra para la transformacin D de descifrado. En o o muchos casos son intercambiables, esto es, si empleamos una para cifrar la otra sirve para descifrar y viceversa. Estos criptosistemas deben cumplir adems que el conocimiento de a la clave pblica kP no permita calcular la clave privada kp . Ofrecen un abanico superior u de posibilidades, pudiendo emplearse para establecer comunicaciones seguras por canales inseguros puesto que unicamente viaja por el canal la clave pblica, que slo sirve para u o cifrar, o para llevar a cabo autenticaciones. En la prctica se emplea una combinacin de estos dos tipos de criptosistemas, puesto a o que los segundos presentan el inconveniente de ser computacionalmente mucho ms costosos a que los primeros. En el mundo real se codican los mensajes (largos) mediante algoritmos simtricos, que suelen ser muy ecientes, y luego se hace uso de la criptograf asimtrica para e a e codicar las claves simtricas (cortas). e Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

2.3. Esteganograf a Claves Dbiles e

31

En la inmensa mayor de los casos los conjuntos M y C denidos anteriormente son a 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 algoritmo DES, ambos son cadenas de 64 bits. Por esta razn puede darse la posibilidad de que exista algn k K tal o u que Ek (M ) = M , lo cual ser catastrco para nuestros propsitos, puesto que el empleo de a o o esas claves dejar todos nuestros mensajes sin codicar!. a Tambin puede darse el caso de que ciertas claves concretas generen textos cifrados de poca e calidad. Una posibilidad bastante comn en ciertos algoritmos es que algunas claves tengan u la siguiente propiedad: Ek (Ek (M )) = M , lo cual quiere decir que basta con volver a codicar el criptograma para recuperar el texto claro original. Estas circunstancias podr llegar a an simplicar enormemente un intento de violar nuestro sistema, por lo que tambin habr que e a evitarlas a toda costa. La existencia de claves con estas caracter sticas, como es natural, depende en gran medida de las peculiaridades de cada algoritmo en concreto, y en muchos casos tambin de los e parmetros escogidos a la hora de aplicarlo. Llamaremos en general a las claves que no coa dican correctamente los mensajes claves dbiles (weak keys en ingls). Normalmente en un e e buen criptosistema la cantidad de claves dbiles es cero o muy pequea en comparacin con el e n o nmero total de claves posibles. No obstante, conviene conocer esta circunstancia para poder u evitar en la medida de lo posible sus consecuencias.

2.3.

Esteganograf a

La esteganograf o empleo de canales subliminales consiste en ocultar en el interior a de una informacin, aparentemente inocua, otro tipo de informacin (cifrada o no). Este o o mtodo ha cobrado bastante importancia ultimamente debido a que permite burlar diferentes e sistemas de control. Supongamos que un disidente pol tico quiere enviar un mensaje fuera de su pa burlando la censura. Si lo codica, las autoridades jams permitirn que el mensaje s, a a atraviese las fronteras independientemente de que puedan acceder a su contenido, mientras que si ese mismo mensaje viaja camuado en el interior de una imagen digital para una inocente felicitacin navidea, tendr muchas ms posibilidades de llegar a su destino. Como o n a a es de suponer, existen tantos mecanismos para llevar a cabo este camuaje como nuestra imaginacin nos permita. o Mencin especial merece el uso de la esteganograf para exportar informacin sin violar o a o las leyes restrictivas que, con respecto a la Criptograf fuerte, existen en algunos pa a ses. El mensaje se env como texto claro, pero entremezclado con cantidades ingentes de basura. El a destinatario emplear tcnicas esteganogrcas para separar la informacin util del resto. Esta a e a o tcnica se conoce como chang and winnowing, que vendr a traducirse como llenar de paja y e a separar el grano de la paja. En consecuencia, tenemos un mecanismo para transmitir informacin no cifrada, pero que slo puede ser reconstruida por el destinatario, con lo que en realidad o o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

32

2. Conceptos Bsicos sobre Criptograf a a

hemos logrado protegerla sin usar en ningn momento ningn algoritmo de codicacin. Este u u o sistema surgi en marzo de 1998, propuesto por Ronald L. Rivest uno de los creadores de o RSA, como desaf a la pol o tica restrictiva del Gobierno de los EE.UU. con respecto a la Criptograf No deja de ser en cierto modo una curiosidad, debido a lo enormemente grandes a. que son los mensajes en comparacin con la cantidad de texto util que se puede incluir en o ellos.

2.4.

Criptoanlisis a

El criptoanlisis consiste en comprometer la seguridad de un criptosistema. Esto se puede a hacer descifrando un mensaje sin conocer la llave, o bien obteniendo a partir de uno o ms a criptogramas la clave que ha sido empleada en su codicacin. No se considera criptoanlisis o a el descubrimiento de un algoritmo secreto de cifrado; hemos de suponer por el contrario que los algoritmos siempre son conocidos. En general el criptoanlisis se suele llevar a cabo estudiando grandes cantidades de pares a mensaje-criptograma 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, ms probabilidades de a xito tendr el criptoanlisis. e a a Uno de los tipos de anlisis ms interesantes es el de texto claro escogido, que parte de que a a conocemos una serie de pares de textos claros elegidos por nosotros y sus criptogramas correspondientes. Esta situacin se suele dar cuando tenemos acceso al dispositivo de cifrado o y ste nos permite efectuar operaciones, pero no nos permite leer su clave por ejemplo, las e tarjetas de los telfonos mviles GSM. El nmero de pares necesarios para obtener la clave e o u desciende entonces signicativamente. Cuando el sistema es dbil, pueden ser sucientes unos e cientos de mensajes para obtener informacin que permita deducir la clave empleada. o Tambin podemos tratar de criptoanalizar un sistema aplicando el algoritmo de descifrae do, con todas y cada una de las claves, a un mensaje codicado que poseemos y comprobar cules de las salidas que se obtienen tienen sentido como posible texto claro. Este mtodo a e y todos los que buscan exhaustivamente por el espacio de claves K, se denominan ataques por la fuerza bruta, y en muchos casos no suelen considerarse como autnticas tcnicas de e e criptoanlisis, reservndose este trmino para aquellos mecanismos que explotan posibles dea a e bilidades intr nsecas en el algoritmo de cifrado. Se da por supuesto que el espacio de claves para cualquier criptosistema digno de inters ha de ser sucientemente grande como para e que un ataque por la fuerza bruta sea inviable. Hemos de tener en cuenta no obstante que la capacidad de clculo de las computadoras crece a gran velocidad, por lo que algoritmos a que hace unos aos eran resistentes frente a ataques por la fuerza bruta hoy pueden resultar n inseguros, como es el caso de DES. Sin embargo, existen longitudes de clave para las que resultar imposible a todas luces un ataque de este tipo. Por ejemplo, si diseramos una a na mquina capaz de recorrer todas las combinaciones que pueden tomar 256 bits, cuyo consumo a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

2.5. Compromiso entre Criptosistema y Criptoanlisis a

33

fuera m nimo en cada cambio de estado1 , no habr energ suciente en el Universo para que a a pudiera completar su trabajo. Un par de mtodos de criptoanlisis que han dado interesantes resultados son el anlisis e a a diferencial y el anlisis lineal (ver seccin 10.7, pgina 130). El primero de ellos, partiendo de a o a pares de mensajes con diferencias m nimas usualmente de un bit, estudia las variaciones que existen entre los mensajes cifrados correspondientes, tratando 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 claro-texto cifrado podemos obtener una probabilidad p en ese bit que calculamos. Si p 1 est sucientemente sesgada (no se aproxima a 2 ), tendremos la posibilidad de recuperar la a clave. Otro tipo de anlisis, esta vez para los algoritmos asimtricos, consistir en tratar de a e a deducir la llave privada a partir de la pblica. Suelen ser tcnicas anal u e ticas que bsicamente a intentan resolver los problemas de elevado coste computacional en los que se apoyan estos criptosistemas: factorizacin, logaritmos discretos, etc. Mientras estos problemas genricos o e permanezcan sin solucin eciente, podremos seguir conando en estos algoritmos. o La Criptograf no slo se emplea para proteger informacin, tambin se utiliza para pera o o e mitir su autenticacin, es decir, para identicar al autor de un mensaje e impedir que nadie o suplante su personalidad. En estos casos surge un nuevo tipo de criptoanlisis que est encaa a minado unicamente a permitir que elementos falsos pasen 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 autenticacin. o Como se puede apreciar, la gran variedad de sistemas criptogrcos produce necesariaa mente gran variedad de tcnicas de criptoanlisis, cada una de ellas adaptada a un algoritmo e a o familia de ellos. Con toda seguridad, cuando en el futuro aparezcan nuevos mecanismos de proteccin de la informacin, surgirn con ellos nuevos mtodos de criptoanlisis. De hecho, la o o a e a investigacin en este campo es tan importante como el desarrollo de algoritmos criptogrcos, o a y esto es debido a que, mientras que la presencia de fallos en un sistema es posible demostrarla, su ausencia es por denicin indemostrable. o

2.5.

Compromiso entre Criptosistema y Criptoanlisis a

En la seccin 3.5 (pg. 44) veremos que pueden existir sistemas idealmente seguros, capaces o a de resistir cualquier ataque. Tambin veremos que estos sistemas en la prctica carecen de e a inters, lo cual nos lleva a tener que adoptar un compromiso entre el coste del sistema e tanto computacional como de almacenamiento, e incluso econmico frente a su resistencia o a diferentes ataques criptogrcos. a La informacin posee un tiempo de vida, y pierde su valor transcurrido ste. Los datos sobre o e
Segn las Leyes de la Termodinmica existe una cantidad m u a nima de energ necesaria para poder modicar a el estado de un sistema.
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

34

2. Conceptos Bsicos sobre Criptograf a a

la estrategia de inversiones a largo plazo de una gran empresa, por ejemplo, tienen un mayor periodo de validez que la exclusiva period stica de una sentencia judicial que se va a hacer pblica al d siguiente. Ser suciente, pues, tener un sistema que garantice que el tiempo u a a que se puede tardar en comprometer su seguridad es mayor que el tiempo de vida de la propia informacin que ste alberga. Esto no suele ser fcil, sobre todo porque no tardar lo mismo un o e a a oponente que disponga de una unica computadora de capacidad modesta, que otro que emplee una red de supercomputadores. Por eso tambin ha de tenerse en cuenta si la informacin que e o queremos proteger vale ms que el esfuerzo de criptoanlisis que va a necesitar, porque entonces a a puede que no est segura. La seguridad de los criptosistemas se suele medir en trminos del e e nmero de computadoras y del tiempo necesarios para romperlos, y a veces simplemente en u funcin del dinero necesario para llevar a cabo esta tarea con garant de xito. o as e 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 proteccin o tal que toda la potencia de clculo que actualmente hay en el planeta ser insuciente para a a romperlos. Tampoco conviene depositar excesiva conanza en el algoritmo de cifrado, puesto que en el proceso de proteccin de la informacin existen otros puntos dbiles que deben ser tratados o o e con un cuidado exquisito. Por ejemplo, no tiene sentido emplear algoritmos con niveles de seguridad extremadamente elevados si luego escogemos contraseas (passwords) rid n culamente fciles de adivinar. Una prctica muy extendida por desgracia es la de escoger palabras clave a a que contengan fechas, nombres de familiares, nombres de personajes o lugares de ccin, etc. o Son las primeras que un atacante avispado probar Tampoco es una prctica recomendable a. a anotarlas o dec rselas 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 informacin es mucho ms amplio que la simple proteccin o a o de los datos a nivel lgico. Para proporcionar una seguridad real hemos de tener en cuenta o mltiples factores, tanto internos como externos. En primer lugar habr que caracterizar el u a sistema que va a albergar la informacin para poder identicar las amenazas, y en este sentido o podr amos hacer la siguiente subdivisin: o

1. Sistemas aislados. Son los que no estn conectados a ningn tipo de red. De unos aos a a u n esta parte se han convertido en minor debido al auge que ha experimentado Internet. a, 2. Sistemas interconectados. Hoy por hoy casi cualquier ordenador pertenece a alguna red, enviando y recogiendo informacin del exterior casi constantemente. Esto hace que las o redes de ordenadores sean cada d ms complejas y supongan un peligro potencial que a a no puede en ningn caso ser ignorado. u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

2.6. Seguridad

35

En cuanto a las cuestiones de seguridad que hemos de jar podr amos clasicarlas de la siguiente forma: 1. Seguridad f sica. Englobaremos dentro de esta categor a todos los asuntos relacionados a con la salvaguarda de los soportes f sicos de la informacin, ms que de la informacin o a o propiamente dicha. En este nivel estar an, entre otras, las medidas contra incendios y sobrecargas elctricas, la prevencin de ataques terroristas, las pol e o ticas de backup, etc. Tambin se suelen tener en cuenta dentro de este punto aspectos relacionados con la e restriccin de acceso f o sico a las computadoras unicamente a personas autorizadas. 2. Seguridad de la informacin. En este apartado prestaremos atencin a la preservacin o o o de la informacin frente a observadores no autorizados. Para ello podemos emplear tano to criptograf simtrica como asimtrica, estando la primera unicamente indicada en a e e sistemas aislados, ya que si la empleramos en redes, al tener que transmitir la clave por a el canal de comunicacin, estar o amos asumiendo un riesgo excesivo. 3. Seguridad del canal de comunicacin. Los canales de comunicacin rara vez se consideran o o seguros. Debido a que en la mayor de los casos escapan a nuestro control, ya que a pertenecen a terceros, resulta imposible asegurarse totalmente de que no estn siendo a escuchados o intervenidos. 4. Problemas de autenticacin. Debido a los problemas del canal de comunicacin, es o o necesario asegurarse de que la informacin que recibimos en la computadora viene de o quien realmente creemos que viene. Para esto se suele emplear criptograf asimtrica a e en conjuncin con funciones resumen (ver seccin 13.1, pgina 157). o o a 5. Problemas de suplantacin. En las redes tenemos el problema aadido de que cualquier o n usuario autorizado puede acceder al sistema desde fuera, por lo que hemos de conar en sistemas ables para garantizar que los usuarios no estn siendo suplantados por intrusos. a Normalmente se emplean mecanismos basados en password para conseguir esto. 6. No repudio. Cuando se recibe un mensaje no slo es necesario poder identicar de forma o un voca al remitente, sino que ste asuma todas las responsabilidades derivadas de la e informacin que haya podido enviar. En este sentido es fundamental impedir que el o emisor pueda repudiar un mensaje, es decir, negar su autor sobre l. a e

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

36

2. Conceptos Bsicos sobre Criptograf a a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Parte II

Fundamentos Tericos de la o Criptograf a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 3

Teor de la Informacin a o
Comenzaremos el estudio de los fundamentos tericos de la Criptograf dando una serie de o a nociones bsicas sobre Teor de la Informacin, introducida por Claude Shannon a nales de a a o los aos cuarenta. Esta disciplina nos permitir efectuar una aproximacin terica al estudio n a o o de la seguridad de cualquier algoritmo criptogrco. a

3.1.

Cantidad de Informacin o

Vamos a introducir este concepto partiendo de su idea intuitiva. Para ello analizaremos el siguiente ejemplo: supongamos que tenemos una bolsa con nueve bolas negras y una blanca. Cunta informacin obtenemos si alguien nos dice que ha sacado una bola blanca de la bolsa?. a o Y cunta obtenemos si despus saca otra y nos dice que es negra? a e Obviamente, la respuesta a la primera pregunta es que nos aporta bastante informacin, o puesto que estbamos casi seguros de que la bola ten que salir negra. Anlogamente si hubiera a a a salido negra dir amos que ese suceso no nos extraa (nos suministra poca informacin). En n o cuanto a la segunda pregunta, claramente podemos contestar que no nos aporta ninguna informacin, ya que al no quedar bolas blancas sab o amos que iba a salir negra. Podemos jarnos en la cantidad de informacin como una medida de la disminucin de o o incertidumbre acerca de un suceso. Por ejemplo, si nos dicen que el nmero que ha salido en u un dado es menor que dos, nos dan ms informacin que si nos dicen que el nmero que ha a o u salido es par. Se puede decir que la cantidad de informacin que obtenemos al conocer un hecho es dio rectamente proporcional al nmero posible de estados que ste ten a priori. Si inicialmente u e a ten amos diez posibilidades, conocer el hecho nos proporciona ms informacin que si inia o cialmente tuviramos dos. Por ejemplo, supone mayor informacin conocer la combinacin e o o ganadora del prximo sorteo de la Loter Primitiva, que saber si una moneda lanzada al aire o a va a caer con la cara o la cruz hacia arriba. Claramente es ms fcil acertar en el segundo caa a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

40

3. Teor de la Informacin a o

so, puesto que el nmero de posibilidades a priori y por tanto la incertidumbre, suponiendo u sucesos equiprobables es menor. Tambin la cantidad de informacin es proporcional a la probabilidad de un suceso. En e o el caso de las bolas pueden pasar dos cosas: sacar bola negra, que es ms probable, y sacar a bola blanca, que es menos probable. Sacar una bola negra aumenta nuestro grado de certeza inicial de un 90 % a un 100 %, proporcionndonos una ganancia del 10 %. Sacar una bola a blanca aumenta esa misma certeza en un 90 % puesto que partimos de un 10 %. Podemos considerar la disminucin de incertidumbre proporcional al aumento de certeza, por lo cual o diremos que el primer suceso sacar bola negra aporta menos informacin. o A partir de ahora, con objeto de simplicar la notacin, vamos a emplear una variable o aleatoria V para representar los posibles sucesos que nos podemos encontrar. Notaremos el suceso i-simo como xi , P (xi ) ser la probabilidad asociada a dicho suceso, y n ser el nmero e a a u de sucesos posibles. Supongamos ahora que sabemos con toda seguridad que el unico valor que puede tomar V es xi . Saber el valor de V no nos va a aportar ninguna informacin, ya que lo conocemos o de antemano. Por el contrario, si tenemos una certeza del 99 % sobre la posible ocurrencia de un valor cualquiera xi , obtener un xj diferente nos aportar bastante informacin, como ya a o hemos visto. Este concepto de informacin es cuanticable y se puede denir de la siguiente o forma: Ii = log2 (P (xi )) (3.1)

siendo P (xi ) la probabilidad del estado xi . Obsrvese que si la probabilidad de un estado e fuera 1 (mxima), la cantidad de informacin que nos aporta ser igual a 0, mientras que a o a si su probabilidad se acercara a 0, tender a + esto es lgico, un suceso que no puede a o suceder nos aportar una cantidad innita de informacin si llegara a ocurrir. a o

3.2.

Entrop a

Efectuando una suma ponderada de las cantidades de informacin de todos los posibles o estados de una variable aleatoria V , obtenemos:
n n

H(V ) =
i=1

P (xi ) log2 [P (xi )] =


i=1

P (xi ) log2

1 P (xi )

(3.2)

Esta magnitud H(V ) se conoce somo la entrop de la variable aleatoria V . Sus propiedades a son las siguientes: i. 0 H(V ) log2 N ii. H(V ) = 0 i tal que P (xi ) = 1 y P (xj ) = 0 j = i Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

3.2. Entrop a iii. H(x1 , x2 . . . xn ) = H(x1 , x2 . . . xn , xn+1 ) si P (xn+1 ) = 0

41

Como ejercicio vamos a demostrar la propiedad (i). Para ello emplearemos el Lema de Gibbs, que dice que dados dos sistemas de nmeros p1 , . . . pn y q1 , . . . qn no negativos tales que u
n n

pi =
i=1 i=1

qi

se verica que
n n

i=1

pi log2 (pi )
i=1 1 N,

pi log2 (qi )

(3.3)

Entonces, si tomamos pi = P (xi ) y qi =


n

resulta que
n

i=1

pi log2 (pi )
i=1

pi log2

1 N

y por lo tanto 1 N
n

H(X) log2

pi = log2 (N )
i=1

Obsrvese que la entrop es proporcional a la longitud media de los mensajes que se necee a sitar para codicar una serie de valores de V de manera ptima dado un alfabeto cualquiera. a o Esto quiere decir que cuanto ms probable sea un valor individual, aportar menos informaa a cin cuando aparezca, y podremos codicarlo empleando un mensaje ms corto. Si P (xi ) = 1 o a no necesitar amos ningn mensaje, puesto que sabemos de antemano que V va a tomar el valor u xi , mientras que si P (xi ) = 0,9 parece ms lgico emplear mensajes cortos para representar a o el suceso xi y largos para los xj restantes, ya que el valor que ms nos va a aparecer en una a secuencia de sucesos es precisamente xi . Volveremos sobre este punto un poco ms adelante. a Veamos unos cuantos ejemplos ms: a La entrop de la variable aleatoria asociada a lanzar una moneda al aire es la siguiente: a H(M ) = (0,5 log2 (0,5) + 0,5 log2 (0,5)) = 1 Este suceso aporta exactamente una unidad de informacin. o Si la moneda est trucada (60 % de probabilidades para cara, 40 % para cruz), nos sale: a H(M ) = (0,6 log2 (0,6) + 0,4 log2 (0,4)) = 0,970 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

42

3. Teor de la Informacin a o Veamos el ejemplo de las bolas (nueve negras y una blanca): H(M ) = (0,9 log2 (0,9) + 0,1 log2 (0,1)) = 0,468

La cantidad de informacin asociada al suceso ms simple, que consta unicamente de dos o a posibilidades equiprobables como el caso de la moneda sin trucar, ser nuestra unidad a a la hora de medir esta magnitud, y la denominaremos bit. Esta es precisamente la razn por la o que empleamos logaritmos base 2, para que la cantidad de informacin del suceso ms simple o a sea igual a la unidad. Podemos decir que la entrop de una variable aleatoria es el nmero medio de bits que a u necesitaremos para codicar cada uno de los estados de la variable, suponiendo que expresemos cada suceso empleando un mensaje escrito en un alfabeto binario. Imaginemos ahora que queremos representar los diez d gitos decimales usando secuencias de bits: con tres bits no tenemos suciente, as que necesitaremos ms, pero cuntos ms? Si usamos cuatro bits para a a a representar todos los d gitos tal vez nos estemos pasando. . . Veamos cunta entrop tienen a a diez sucesos equiprobables:
10

H=
i=1

1 log2 10

1 10

= log2

1 10

= 3,32bits

El valor que acabamos de calcular es el l mite terico, que normalmente no se puede alcano zar. Lo unico que podemos decir es que no existe ninguna codicacin que emplee longitudes o promedio de mensaje inferiores al nmero que acabamos de calcular. Veamos la siguiente cou dicacin: 000 para 0, 001 para 1, 010 para 2, 011 para 3, 100 para 4, 101 para 5 ,1100 para o 6, 1101 para 7, 1110 para 8, y 1111 para 9. Con esta codicacin empleamos, como media o 36+44 = 3,4bits 10 para representar cada mensaje. Ntese que este esquema permite codicar una secuencia de o nmeros por simple yuxtaposicin, sin ambigedades, por lo que no necesitaremos s u o u mbolos que acten de separadores, ya que stos alargar la longitud media de los mensajes. El u e an denominado Mtodo de Human, uno de los ms utilizados en transmisin de datos, permite e a o obtener codicaciones binarias que se aproximan bastante al ptimo terico de una forma o o sencilla y eciente.

3.3.

Entrop Condicionada a

Supongamos que tenemos ahora una variable aleatoria bidimensional (X, Y ). Recordemos las distribuciones de probabilidad ms usuales que podemos denir sobre dicha variable, tea niendo n posibles casos para X y m para Y : Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

3.3. Entrop Condicionada a 1. Distribucin conjunta de (X, Y ): o P (xi , yj ) 2. Distribuciones marginales de X e Y :


m n

43

P (xi ) =
j=1

P (xi , yj )

P (yj ) =
i=1

P (xi , yj )

3. Distribuciones condicionales de X sobre Y y viceversa: P (xi /yj ) = P (xi , yj ) P (yj ) P (yj /xi ) = P (xi , yj ) P (xi )

Deniremos la entrop de las distribuciones que acabamos de referir: a


n m

H(X, Y ) =
i=1 j=1 n

P (xi , yj ) log2 (P (xi , yj ))

H(X/Y = yj ) =
i=1

P (xi /yj ) log2 (P (xi /yj ))

Haciendo la suma ponderada de los H(X/Y = yj ) obtenemos la expresin de la Entrop o a Condicionada de X sobre Y :
n m

H(X/Y ) =
i=1 j=1 n m

P (yj )P (xi /yj ) log2 (P (xi /yj )) = P (xi , yj ) log2 (P (xi /yj ))
i=1 j=1

(3.4)

As como existe una Ley de la Probabilidad Total, anlogamente se dene la Ley de En a trop Totales: as H(X, Y ) = H(X) + H(Y /X) cumplindose adems, si X e Y son variables independientes: e a H(X, Y ) = H(X) + H(Y ) (3.6) (3.5)

Teorema de Disminucin de la Entrop La entrop de una variable X condicionada por o a: a otra Y es menor o igual a la entrop de X, alcanzndose la igualdad si y slo si las variables a a o X e Y son independientes. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

44

3. Teor de la Informacin a o

Este teorema representa una idea intuitiva bien clara: conocer algo acerca de la variable Y puede que nos ayude a saber ms sobre X lo cual se deber traducir en una reduccin a a o de su entrop a, pero en ningn caso podr hacer que aumente nuestra incertidumbre. u a

3.4.

Cantidad de Informacin entre dos Variables o

Shannon propuso una medida para la cantidad de informacin que aporta sobre una vao riable el conocimiento de otra. Se denir, pues, la cantidad de informacin de Shannon que a o la variable X contiene sobre Y como: I(X, Y ) = H(Y ) H(Y /X) (3.7)

Esto quiere decir que la cantidad de informacin que nos aporta el hecho de conocer X al o medir la incertidumbre sobre Y es igual a la disminucin de entrop que este conocimiento o a 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 informacin que nos aporta el o hecho de conocer el mensaje cifrado c sobre la entrop del texto claro m vale cero. Es decir: a I(C, M ) = 0 (3.8)

Esto signica sencillamente que la distribucin de probabilidad que nos inducen todos los o posibles mensajes en claro el conjunto M no cambia si conocemos el mensaje cifrado. Para entenderlo mejor supongamos que s se modica dicha distribucin: El hecho de conocer o un mensaje cifrado, al variar la distribucin de probabilidad sobre M har unos mensajes o a ms probables que otros, y por consiguiente unas claves de cifrado ms probables que otras. a a Repitiendo esta operacin muchas veces con mensajes diferentes, cifrados con la misma clave, o podr amos ir modicando la distribucin de probabilidad sobre la clave empleada hasta obo tener un valor de clave mucho ms probable que todos los dems, permitindonos romper el a a e criptosistema. Si por el contrario el sistema cumpliera la condicin 3.8, jams podr o a amos romperlo, ni siquiera empleando una mquina con capacidad de proceso innita. Por ello los criptosistemas a que cumplen la condicin de Shannon se denominan tambin criptosistemas ideales. o e Se puede demostrar tambin que para que un sistema sea criptoseguro segn el criterio de e u Shannon, la cardinalidad del espacio de claves ha de ser al menos igual que la del espacio de Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

3.6. Redundancia

45

mensajes. En otras palabras, que la clave ha de ser al menos tan larga como el mensaje que queramos cifrar. Esto vuelve intiles a estos criptosistemas en la prctica, porque si la clave u a es tanto o ms larga que el mensaje, a la hora de protegerla nos encontraremos con el mismo a problema que ten amos para proteger el mensaje. Un ejemplo clsico de criptosistema seguro es el algoritmo inventado por Mauborgne y a Vernam en 1917, que consist en emplear como clave de codicacin una secuencia de letras a o tan larga como el mensaje original, y usar cada carcter de la clave para cifrar exactamente a una letra del mensaje, haciendo la suma mdulo 26. Este sistema dio lugar a las secuencias de o un solo uso (one-time pads): cadenas de longitud arbitraria que se combinan byte a byte con el mensaje original mediante la operacin or-exclusivo u otra similar para obtener el criptograma. o

3.6.

Redundancia

Si una persona lee un mensaje en el que faltan algunas letras, normalmente puede reconstruirlo. Esto ocurre porque casi todos los s mbolos de un mensaje en lenguaje natural contienen informacin que se puede extraer de los s o mbolos de alrededor informacin que, o en la prctica, se est enviando dos o ms veces, o en otras palabras, porque el lenguaje a a a natural es redundante. Puesto que tenemos mecanismos para denir la cantidad de informacin que presenta un suceso, podemos intentar medir el exceso de informacin (redundancia) o o de un lenguaje. Para ello vamos a dar una serie de deniciones: Indice de un lenguaje. Deniremos el ndice de un lenguaje para mensajes de longitud k como: Hk (M ) rk = (3.9) k siendo Hk (M ) la entrop de todos los posibles mensajes de longitud k. Estamos mia diendo el nmero de bits de informacin que nos aporta cada carcter en mensajes de u o a una longitud determinada. Para idiomas como el Espaol, rk suele valer alrededor de n 1,4 bits/letra para valores pequeos de k. n Indice absoluto de un lenguaje. Es el mximo nmero de bits de informacin que pueden a u o ser codicados en cada carcter, asumiendo que todas las combinaciones de caracteres a son igualmente probables. Suponiendo m s mbolos diferentes en nuestro alfabeto este ndice vale: log2 (mk ) k log2 (m) R= = = log2 (m) k k Ntese que el o ndice R es independiente de la longitud k de los mensajes. En el caso del espaol, puesto que tenemos 27 s n mbolos, podr amos codicar 4,7 bits/letra aproximadamente, luego parece que el nivel de redundancia de los lenguajes naturales es alto. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

46

3. Teor de la Informacin a o Finalmente, la redundancia de un lenguaje se dene como la diferencia entre las dos magnitudes anteriores: D =Rr Tambin se dene el e ndice de redundancia como el siguiente cociente: I= D R

Desgraciadamente, para medir la autntica redundancia de un lenguaje, hemos de tener e en cuenta secuencias de cualquier nmero de caracteres, por lo que la expresin 3.9 deber u o a calcularse en realidad como: r = l m Hn (M ) n (3.10)

Hay principalmente dos aplicaciones fundamentales de la Teor de la Informacin, relaa o cionadas directamente con la redundancia: Compresin de datos: simplemente trata de eliminar la redundancia dentro de un archivo, o considerando cada byte como un mensaje elemental, y codicndolo con ms o menos a a bits segn su frecuencia de aparicin. En este sentido se trata de codicar exactamente u o la misma informacin que transporta el archivo original, pero empleando un nmero de o u bits lo ms pequeo posible. a n Cdigos de Redundancia C o clica (CRC): permiten introducir un campo de longitud m nima en el mensaje, tal que ste proporcione la mayor redundancia posible. As si el e , mensaje original resultase alterado, la probabilidad de que el CRC aadido siga siendo n correcto es m nima. Ntese que, conocidos los patrones de redundancia de un lenguaje, es posible dar de forma o automtica una estimacin de si una cadena de s a o mbolos corresponde o no a dicho lenguaje. Esta caracter stica es aprovechada para efectuar ataques por la fuerza bruta, ya que ha de asignarse una probabilidad a cada clave individual en funcin de las caracter o sticas del mensaje obtenido al decodicar el criptograma con dicha clave. El nmero de claves suele ser tan u elevado que resulta imposible una inspeccin visual. Una estrategia bastante interesante para o 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 ms dif a un atacante apoyarse en las caracter a cil sticas del mensaje original para recuperar la clave.

3.7.

Desinformacin y Distancia de Unicidad o

Deniremos desinformacin de un sistema criptogrco como la entrop condicionada del o a a conjunto M de posibles mensajes sobre el conjunto C de posibles criptogramas: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

3.8. Confusin y Difusin o o

47

H(M/C) =
mM cC

P (c)P (m/c)log2 (P (m/c))

(3.11)

Esta expresin nos permite saber la incertidumbre que nos queda sobre cul ha sido mensaje o a enviado m si conocemos su criptograma asociado c. Si esa incertidumbre fuera la misma que desconociendo c en cuyo caso se cumplir que H(M ) = H(M/C), nos encontrar a amos con que C y M son variables estad sticamente independientes, y por lo tanto estar amos frente a un criptosistema seguro de Shannon, ya que jams podr a amos disminuir nuestra incertidumbre acerca de m. Lo habitual no obstante es que exista relacin estad o stica entre C y M (a travs e del espacio de claves K), por lo que H(M/C) < H(M ). Adicionalmente, si el valor de H(M/C) fuera muy pequeo con respecto a H(M ), signin car que el hecho de conocer c nos aporta mucha informacin sobre m, lo cual quiere decir a o que nuestro criptosistema es inseguro. El peor de los casos ser que H(M/C) = 0, puesto que a entonces, conociendo el valor de c tendr amos absoluta certeza sobre el valor de m. Esta magnitud se puede medir tambin en funcin del conjunto K de claves, y entonces e o nos dir la incertidumbre que nos queda sobre k conocida c: a H(K/C) =
kK cC

P (c)P (k/c)log2 (P (k/c))

(3.12)

Deniremos nalmente la distancia de unicidad de un criptosistema como la longitud m nima 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 disear n un sistema criptogrco ser que la distancia de unicidad sea lo ms grande posible. a a a

3.8.

Confusin y Difusin o o

Segn la Teor de Shannon, las dos tcnicas bsicas para ocultar la redundancia en un u a e a texto claro son la confusin y la difusin. Estos conceptos, a pesar de su antigedad, poseen o o u una importancia clave en Criptograf moderna. a Confusin. Trata de ocultar la relacin entre el texto claro y el texto cifrado. Recordemos o o que esa relacin existe y se da a partir de la clave k empleada, puesto que si no existiera o jams podr a amos descifrar los mensajes. El mecanismo ms simple de confusin es la a o sustitucin, que consiste en cambiar cada ocurrencia de un s o mbolo en el texto claro por otro. La sustitucin puede ser tan simple o tan compleja como queramos. o Difusin. Diluye la redundancia del texto claro repartindola a lo largo de todo el texto o e cifrado. El mecanismo ms elemental para llevar a cabo una difusin es la transposicin, a o o que consiste en cambiar de sitio elementos individuales del texto claro. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

48

3. Teor de la Informacin a o

3.9.

Ejercicios Propuestos

1. Calcule la informacin que proporciona el hecho de que en un dado no cargado salga un o nmero par. u 2. Calcule la entrop que tiene un dado que presenta doble probabilidad para el nmero a u tres que para el resto. 3. Demuestre el Lema de Gibbs, teniendo en cuenta la siguiente propiedad: x, x > 0 = log2 (x) x 1 4. Demuestre la Ley de Entrop Totales. as 5. Suponga un equipo de ftbol que nunca empata, que cuando no llueve vence el 65 % u de sus partidos, y que si llueve slo gana el 35 % de las veces. La probabilidad de que o llueva en un partido es del 15 %. Cul es la cantidad de informacin que nos aporta la a o variable aleatoria lluvia sobre la variable ganar un partido? 6. Suponga un conjunto de 20 mensajes equiprobables. Cul ser la longitud media de a a cada mensaje para una transmisin ptima? Escriba un cdigo binario que aproxime su o o o longitud media de mensaje a ese valor ptimo. o 7. Considere un conjunto de 11 mensajes, el primero con probabilidad 50 %, y el resto con probabilidad 5 %. Calcule su entrop a.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 4

Introduccin a la Complejidad o Algor tmica


Cuando diseamos un algoritmo criptogrco, pretendemos plantear a un posible atacante n a un problema que ste sea incapaz de resolver. Pero, bajo qu circunstancias podemos consie e derar que un problema es intratable? Evidentemente, queremos que nuestro sgn se enfrente o a unos requerimientos de computacin que no pueda asumir. La cuestin es cmo modelizar y o o o cuanticar la capacidad de clculo necesaria para abordar un problema. En este cap a tulo 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, prcticamente todas las aplicaciones criptogrcas emplean computadoa a ras en sus clculos, y las computadoras convencionales estn diseadas para ejecutar algorita a n mos. Deniremos algoritmo como una secuencia nita y ordenada de instrucciones elementales que, dados los valores de entrada de un problema, en algn momento naliza y devuelve la u solucin. o En efecto, las computadoras actuales poseen una memoria, que les sirve para almacenar datos, unos dispositivos de entrada y salida que les permiten comunicarse con el exterior, una unidad capaz de hacer operaciones aritmticas y lgicas, y una unidad de control, capaz e o de leer, interpretar y ejecutar un programa o secuencia de instrucciones. Habitualmente, las unidades aritmticolgica y de control se suelen encapsular en un unico circuito integrado, e o que se conoce por microprocesador o CPU. Cuando nosotros diseamos un algoritmo de cifrado, estamos expresando, de un modo n ms o menos formal, la estructura que ha de tener la secuencia de instrucciones concreta que a permita implementar dicho algoritmo en cada computadora particular. Habr computadoras a con ms o menos memoria, velocidad o incluso nmero de microprocesadores capaces de a u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

50

4. Introduccin a la Complejidad Algor o tmica

ejecutar varios programas al mismo tiempo, pero en esencia todas obedecern al concepto a de algoritmo. La Teor de Algoritmos es una ciencia que estudia cmo construir algoritmos para resolver a o diferentes problemas. En muchas ocasiones no basta con encontrar una forma de solucionar el problema: la solucin ha de ser ptima. En este sentido la Teor de Algoritmos tambin o o a e proporciona herramientas formales que nos van a permitir decidir qu algoritmo es mejor en e cada caso, independientemente de las caracter sticas particulares1 de la computadora concreta en la que queramos implantarlo. La Criptograf depende en gran medida de la Teor de Algoritmos, ya que por un lado a a hemos de asegurar que el usuario leg timo, que posee la clave, puede cifrar y descifrar la informacin de forma rpida y cmoda, mientras que por otro hemos de garantizar que un o a o atacante no dispondr de ningn algoritmo eciente capaz de comprometer el sistema. a u Cabr plantearnos ahora la siguiente cuestin: si un mismo algoritmo puede resultar ms a o a rpido en una computadora que en otra, podr existir una computadora capaz de ejecutar a a de forma eciente algoritmos que sabemos que no lo son?. Existe un principio fundamental en Teor de Algoritmos, llamado principio de invarianza, que dice que si dos implementaciones a del mismo algoritmo consumen t1 (n) y t2 (n) segundos respectivamente, siendo n el tamao de n los datos de entrada, entonces existe una constante positiva c tal que t1 (n) c t2 (n), siempre que n sea lo sucientemente grande. En otras palabras, que aunque podamos encontrar una computadora ms rpida, o una implementacin mejor, la evolucin del tiempo de ejecucin a a o o o del algoritmo en funcin del tamao del problema permanecer constante, por lo tanto la o n a respuesta a la pregunta anterior es, afortunadamente, negativa. Eso nos permite centrarnos por completo en el algoritmo en s y olvidarnos de la implementacin concreta a la hora de o hacer nuestro estudio. En muchas ocasiones, el tiempo de ejecucin de un algoritmo viene dado por las entradas o concretas que le introduzcamos. Por ejemplo, se necesitan menos operaciones 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 nmero de operaciones necesario cuando los datos se encuentran distriu buidos de la mejor forma posible para el algoritmo. Evidentemente este caso no es muy prctico, puesto que un algoritmo puede tener un mejor caso muy bueno y comportarse a muy mal en el resto. Peor caso: Es el nmero de operaciones necesario para la distribucin ms pesimista de u o a los datos de entrada. Nos permitir obtener una cota superior del tiempo de ejecucin a o necesario. Un algoritmo que se comporte bien en el peor caso, ser siempre un buen a algoritmo. Caso promedio: Muchas veces, hay algoritmos que en el peor caso no funcionan bien, pero en la mayor de los casos que se presentan habitualmente tienen un comportamiento a
En algunos casos, sobre todo cuando se trata de computadoras con muchos microprocesadores, se estudian algoritmos espec cos para aprovechar las peculiaridades de la mquina sobre la que se van a implantar. a
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

4.2. Complejidad Algor tmica

51

razonablemente eciente. De hecho, algunos algoritmos t picos de ordenacin necesitan o el mismo nmero de operaciones en el peor caso, pero se diferencian considerablemente u en el caso promedio.

4.2.

Complejidad Algor tmica

En la mayor de los casos carece de inters calcular el tiempo de ejecucin concreto de un a e o algoritmo en una computadora, e incluso algunas veces simplemente resulta imposible. En su lugar emplearemos una notacin de tipo asinttico, que nos permitir acotar dicha magnitud. o o a Normalmente consideraremos el tiempo de ejecucin del algoritmo como una funcin f (n) o o del tamao n de la entrada. Por lo tanto f debe estar denida para los nmeros naturales y n u devolver valores en R+ . Dada la funcin f (n), haremos las siguientes deniciones: o L mite superior asinttico: f (n) = O(g(n)) si existe una constante positiva c y un nmero o u entero positivo n0 tales que 0 f (n) cg(n) n n0 . L mite inferior asinttico: f (n) = (g(n)) si existe una constante positiva c y un nmero o u entero positivo n0 tales que 0 cg(n) f (n) n n0 . L mite exacto asinttico: f (n) = (g(n)) si existen dos constantes positivas c1 , c2 y un o nmero entero positivo n0 tales que c1 g(n) f (n) c2 g(n) n n0 . u Notacin o: f (n) = o(g(n)) si para cualquier constante positiva c existe un nmero o u entero positivo n0 > 0 tal que 0 f (n) cg(n) n n0 . Intuitivamente, f (n) = O(g(n)) signica que f (n) crece asintticamente no ms rpido o a a que g(n) multiplicada por una constante. Anlogamente f (n) = (g(n)) quiere decir que a f (n) crece asintticamente al menos tan rpido como g(n) multiplicada por una constante. o a Deniremos ahora algunas propiedades sobre la notacin que acabamos de introducir: o 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 comn, podemos denir directamente su orden de compleu jidad: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

52

4. Introduccin a la Complejidad Algor o tmica Funciones polinomiales: Si f (n) es un polinomio de grado k, y su coeciente de mayor grado es positivo, entonces f (n) = (nk ). Funciones logar tmicas: Para cualquier constante c > 0, logc (n) = (ln(n)). Factoriales: n! = (2n ). Logaritmo de un factorial: ln(n!) = (n ln(n)).

Veamos un ejemplo: supongamos que tenemos un algoritmo que necesita llevar a cabo f (n) = 20n2 + 10n + 1000 operaciones elementales. Podemos decir que ese algoritmo tiene un orden de ejecucin (n2 ), es decir, que el tiempo de ejecucin crece, de forma asinttica, o o o proporcionalmente al cuadrado del tamao de la entrada. Otro algoritmo que necesite g(n) = n n3 +1 operaciones efectuar menos clculos para una entrada pequea, pero su orden es (n3 ), a a n por lo que crecer mucho ms rpidamente que el anterior y, en consecuencia, ser menos a a a a eciente.

4.2.1.

Operaciones Elementales

Hasta ahora hemos empleado el trmino operaciones elementales sin especicar su sige nicado concreto. Podemos considerar una operacin elemental como aquella que se ejecuta o siempre en tiempo constante. Evidentemente, en funcin de las caracter o sticas concretas de la computadora que estemos manejando, habr operaciones que podrn considerarse elementales a a o no. Por ejemplo, en una computadora que pueda operar unicamente con nmeros de 16 bits, u no podr considerarse elemental una operacin con nmeros de 32 bits. a o u En general, el tamao de la entrada a un algoritmo se mide en bits, y se consideran en n principio elementales unicamente las operaciones a nivel de bit. Sean a y b dos nmeros enteros u positivos, ambos menores o iguales que n. Necesitaremos, pues, aproximadamente log2 (n) bits para representarlos ntese que, en este caso, log2 (n) es el tamao de la entrada. Segn o n u este criterio, las operaciones aritmticas, llevadas a cabo mediante los algoritmos tradicionales, e presentan los siguientes rdenes de complejidad: o Suma (a + b): O(log2 (a) + log2 (b)) = O(log2 (n)) Resta (a b): O(log2 (a) + log2 (b)) = O(log2 (n)) Multiplicacin (a b): O(log2 (a) log2 (b)) = O((log2 (n))2 ) o Divisin (a/b): O(log2 (a) log2 (b)) = O((log2 (n))2 ) o 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 aritmticas con nmeros e u de ms bits unicamente introducir factor de proporcionalidad recurdese que loga (x) = a a e logb (x) loga (b). Dicho factor no afectar al orden de complejidad obtenido, por lo que a podemos considerar que estas operaciones se efectan en grupos de bits de tamao arbitrario. u n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

4.3. Algoritmos Polinomiales, Exponenciales y Subexponenciales

53

En otras palabras, una computadora que realice operaciones con nmeros de 32 bits deber u a tardar la mitad en ejecutar el mismo algoritmo que otra que slo pueda operar con nmeros o u de 16 bits pero, asintticamente, el crecimiento del tiempo de ejecucin en funcin del tamao o o o n de la entrada ser el mismo para ambas. a

4.3.

Algoritmos Polinomiales, Exponenciales y Subexponenciales

Diremos que un algoritmo es polinomial si su peor caso de ejecucin es de orden O(nk ), o donde n es el tamao de la entrada y k es una constante. Adicionalmente, cualquier algoritn mo que no pueda ser acotado por una funcin polinomial, se conoce como exponencial. En o 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 funcin de ejecucin o o o(n) , donde n es el tama o de la entrada. Son asintticamente ms rpidos que es de la forma e n o a a los exponenciales puros, pero ms lentos que los polinomiales. a

4.4.

Clases de Complejidad

Para simplicar la notacin, en muchas ocasiones se suele reducir el problema de la como plejidad algor tmica a un simple problema de decisin, de forma que se considera un algoritmo o 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 decisin que pueden o 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, empleando alguna informacin extra, denominada certicado. o La clase de complejidad coNP es el conjunto de todos los problemas para los cuales una respuesta negativa puede ser vericada en tiempo polinomial, usando un certicado apropiado. Ntese que el hecho de que un problema sea NP, no quiere decir necesariamente que el o certicado correspondiente sea fcil de obtener, sino que, dado ste ultimo, puede vericarse a e la respuesta armativa en tiempo polinomial. Una observacin anloga puede llevarse a cabo o a sobre los problemas coNP. Sabemos que P NP y que P co-NP. Sin embargo, an no se sabe si P = NP, si u NP = coNP, o si P = NP coNP. Si bien muchos expertos consideran que ninguna de estas tres igualdades se cumple, este punto no ha podido ser demostrado matemticamente. a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

54

4. Introduccin a la Complejidad Algor o tmica

NPC NP

NP

coNP coNP P

Figura 4.1: Relacin entre las clases de complejidad P, NP, coNP y NPC. o

Dentro de la clase NP, existe un subconjunto de problemas que se llaman NPcompletos, 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 logrramos resolver alguno de a ellos en tiempo polinomial, los habr amos resuelto todos. Tambin se puede decir que cualquier e problema NPcompleto es al menos tan dif de resolver como cualquier otro problema NP, cil lo cual hace a la clase NPC la de los problemas ms dif a ciles de resolver computacionalmente. Sea A = {a1 , a2 , . . . an } un conjunto de nmeros enteros positivos, y s otro nmero entero u u 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. Ntese que dado un subconjunto de A, es muy fcil o a vericar si suma s, y que dado un subconjunto de A que sume s que desempear el papel n a de certicado, se puede vericar fcilmente que la respuesta al problema es armativa. a En la gura 4.1 puede observarse grcamente la relacin existente entre las distintas clases a o 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 slo sobre los de decisin, y que o o contiene la versin computacional del problema denido anteriormente, que consistir en o a encontrar el subconjunto de A cuyos elementos suman s.

4.5.

Algoritmos Probabil sticos

Hasta ahora hemos estudiado la complejidad de algoritmos de tipo determin stico, que siempre siguen el mismo camino de ejecucin y que siempre llegan si lo hacen a la misma o solucin. Sin embargo, existen problemas para los cuales puede ser ms interesante emplear o a algoritmos de tipo no determin stico, tambin llamados probabil e sticos o aleatorizados. Este tipo de algoritmos maneja algn tipo de parmetro aleatorio, lo cual hace que dos ejecuciones u a diferentes con los mismos datos de entrada no tengan por qu ser idnticas. En algunos casos, e e mtodos de este tipo permiten obtener soluciones en una cantidad de tiempo considerablemente e inferior a los determin sticos (ver seccin 5.7). o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

4.6. Conclusiones

55

Podemos clasicar los algoritmos no determin sticos segn la probabilidad con la que deu vuelvan la solucin correcta. Sea A un algoritmo aleatorizado para el problema de decisin L, o o y sea I una instancia arbitraria de L. Sea P 1 la probabilidad de que A devuelva cierto cuando I es cierto, y P 2 la probabilidad de que A devuelva cierto cuando I es falso. A es de tipo error nulo si P 1 = 1 y P 2 = 0. A es de tipo error simple si P 1 c, siendo c una constante positiva, y P 2 = 0 A es de tipo error doble si P 1
1 2

+ , y P2

1 2

Deniremos tambin el tiempo esperado de ejecucin de un algoritmo aleatorizado como e o el l mite superior del tiempo de ejecucin esperado para cada entrada, expresado en funcin o o del tamao de la entrada. El tiempo de ejecucin esperado para cada entrada ser la media n o a de los tiempos obtenidos para esa entrada y todas las posibles salidas del generador aleatorio. Las clases de complejidad probabil stica son las siguientes: Clase ZPP: conjunto de todos los problemas de decisin para los cuales existe un algoo ritmo de tipo error nulo que se ejecuta en un tiempo esperado de ejecucin polinomial. o Clase RP: conjunto de los problemas de decisin para los cuales existe un algoritmo de o tipo error simple que se ejecuta en el peor caso en tiempo polinomial. Clase BPP: conjunto de los problemas de decisin para los cuales existe un algoritmo o 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 cap tulo hemos contemplado unicamente aquellos problemas para los que exis te una solucin algor o tmica el programa naliza siempre, aunque necesite un nmero asu tronmico de operaciones elementales, y hemos dejado a un lado deliberadamente aquellos o problemas para los cuales no existen algoritmos cuya nalizacin est garantizada (problemas o e nodecidibles y semidecicibles), ya que en principio escapan al propsito de este libro. o Se han repasado las clases genricas de problemas que se pueden afrontar, en funcin e o del tipo de algoritmos que permiten resolverlos, y se ha descrito una notacin general para o expresar de forma precisa la complejidad de un algoritmo concreto. Se ha puesto de maniesto asimismo que un algoritmo ineciente, cuando el tamao de la entrada es lo sucientemente n grande, es totalmente inabordable incluso para la ms potente de las computadoras, al menos a con la tecnolog actual. a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

56

4. Introduccin a la Complejidad Algor o tmica

El hecho de que no se conozca un algoritmo eciente para resolver un problema no quiere decir que ste no exista, y por eso es tan importante la Teor de Algoritmos para la Criptoe a graf Si, por ejemplo, se lograra descubrir un mtodo eciente capaz de resolver logaritmos a. e discretos (ver seccin 5.4), algunos de los algoritmos asimtricos ms populares en la actualio e a dad dejar de ser seguros. De hecho, la continua reduccin del tiempo de ejecucin necesario an o o para resolver ciertos problemas, propiciada por la aparicin de algoritmos ms ecientes, juno a to con el avance de las prestaciones del hardware disponible, obliga con relativa frecuencia a actualizar las previsiones sobre la seguridad de muchos sistemas criptogrcos. a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 5

Fundamentos de Aritmtica e Modular


5.1. Aritmtica Modular. Propiedades e

La aritmtica modular es una parte de las Matemticas extremadamente util en Cripe a tograf ya que permite realizar clculos complejos y plantear problemas interesantes, mana, a teniendo siempre una representacin numrica compacta y denida, puesto que slo maneja o e o un conjunto nito de nmeros enteros. Mucha gente la conoce como la aritmtica del reloj, u e 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 c clicamente, de forma que tras el 59 viene de nuevo el 0. Desde el punto de vista matemtico dir a amos que los segundos se expresan mdulo 60. o Empleemos ahora un punto de vista ms formal y riguroso: Dados tres nmeros a, b, n N, a u decimos que a es congruente con b mdulo n, y se escribe: o ab si se cumple: a = b + kn, para algn k Z u Por ejemplo, 37 5 (md 8), ya que 37 = 5 + 4 8. De hecho, los nmeros 5, -3, 13, -11, o u 21, -19, 29. . . son todos equivalentes en la aritmtica mdulo 8, es decir, forman una clase de e o equivalencia. Como se puede apreciar, cualquier nmero entero pertenecer necesariamente a u a alguna de esas clases, y en general, tendremos n clases de equivalencia mdulo n (nmeros o u congruentes con 0, nmeros congruentes con 1, . . . , nmeros congruentes con n1). Por razones u u de simplicidad, representaremos cada clase de equivalencia por un nmero comprendido entre u 0 y n 1. De esta forma, en nuestro ejemplo (mdulo 8) tendremos el conjunto de clases o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a (md n) o

58

5. Fundamentos de Aritmtica Modular e

de equivalencia {0, 1, 2, 3, 4, 5, 6, 7}, al que denominaremos Z8 . Podemos denir ahora las operaciones suma y producto en este tipo de conjuntos: a + b c (md n) a + b = c + kn o ab c (md n) ab = c + kn o Propiedades de la suma: Asociativa: a, b, c Zn Conmutativa: a, b Zn Elemento Neutro: a Zn (a + b) + c a + (b + c) a + b b + a (md n) o 0 tal que a + 0 a (md n) o b tal que a + b 0 (md n) o (md n) o kZ kZ

Elemento Simtrico (opuesto): a Zn e Propiedades del producto: Asociativa: a, b, c Zn Conmutativa: a, b Zn Elemento Neutro: a Zn

(a b) c a (b c) a b b a (md n) o

(md n) o

1 tal que a 1 a (md n) o

Propiedades del producto con respecto de la suma: Distributiva: a, b, c Zn (a + b) c (a c) + (b c) (md n) o

La operacin suma en este conjunto cumple las propiedades asociativa y conmutativa o y posee elementos neutro y simtrico, por lo que el conjunto tendr estructura de grupo e a conmutativo. A partir de ahora llamaremos grupo nito inducido por n a dicho conjunto. Con la operacin producto se cumplen las propiedades asociativa y conmutativa, y tiene o elemento neutro, pero no necesariamente simtrico recordemos que al elemento simtrico pae e ra el producto se le suele denominar inverso. La estructura del conjunto con las operaciones suma y producto es, pues, de anillo conmutativo. Ms adelante veremos bajo qu condiciones a e existe el elemento simtrico para el producto. e

5.1.1.

Algoritmo de Euclides

Quiz sea el algoritmo ms antiguo que se conoce, y a la vez es uno de los ms utiles. a a a Permite obtener de forma eciente el mximo comn divisor de dos nmeros. a u u Sean a y b dos nmeros enteros de los que queremos calcular su mximo comn divisor m. u a u El Algoritmo de Euclides explota la siguiente propiedad: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

5.1. Aritmtica Modular. Propiedades e

59

m|a m|b = m|(a kb) con k Z = m|(a md b) o a|b quiere decir que a divide a b, o en otras palabras, que b es mltiplo de a, mientras que u (a md b) representa el resto de dividir a entre b. En esencia estamos diciendo, que, puesto o que m divide tanto a a como a b, debe dividir a su diferencia. Entonces si restamos k veces b de a, llegar un momento en el que obtengamos el resto de dividir a por b, o sea a md b. a o Si llamamos c a (a md b), podemos aplicar de nuevo la propiedad anterior y tenemos: o m|(b md c) o Sabemos, pues, que m tiene que dividir a todos los restos que vayamos obteniendo. Es evidente que el ultimo de ellos ser cero, puesto que los restos siempre son inferiores al divisor. a El penltimo valor obtenido es el mayor nmero que divide tanto a a como a b, o sea, el u u mximo comn divisor de ambos. El algoritmo queda entonces como sigue: a u 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]); }

El invariante condicin que se mantiene en cada iteracin del Algoritmo de Euclides o o es el siguiente: gi+1 = gi1 (md gi ) o y su orden de complejidad ser de O((log2 (n))2 ) operaciones a nivel de bit, siendo n una cota a superior de a y b.

5.1.2.

Complejidad de las Operaciones Aritmticas en Zn e

La complejidad algor tmica de las operaciones aritmticas modulares es la misma que la e de las no modulares: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

60

5. Fundamentos de Aritmtica Modular e Suma modular ((a + b) md n): O(log2 (a) + log2 (b)) = O(log2 (n)) o Resta modular ((a b) md n): O(log2 (a) + log2 (b)) = O(log2 (n)) o Multiplicacin modular ((a b) md n): O(log2 (a) log2 (b)) = O((log2 (n))2 ) o o

5.2.
5.2.1.

Clculo de Inversas en Zn a
Existencia de la Inversa

Hemos comentado en la seccin 5.1 que los elementos de un grupo nito no tienen por o qu tener inversa elemento simtrico para el producto. En este apartado veremos qu cone e e diciones han de cumplirse para que exista la inversa de un nmero dentro de un grupo nito. u Denicin: Dos nmeros enteros a y b se denominan primos entre s (o coprimos), si o u mcd(a, b) = 1. Lema: Dados a,n N mcd(a, n) = 1 = ai = aj (md n) o i=j 0 < i, j < n (5.1)

Demostracin: Supongamos que mcd(a, n) = 1, y que existen i = j tales que ai aj( md o o n). Se cumple, pues: n|(ai aj) = n|a(i j) puesto que a y n son primos entre s n no puede dividir a a, luego , n|(i j) = i j con lo que hemos alcanzado una contradiccin. o Ahora podemos hacer la siguiente reexin: Si ai = aj para cualesquiera i = j, multiplicar o a por todos los elementos del grupo nito mdulo n nos producir una permutacin de los o a o elementos del grupo (exceptuando el cero), por lo que forzosamente ha de existir un valor tal que al multiplicarlo por a nos d 1. Eso nos conduce al siguiente teorema: e Denicin: Un nmero entero p 2 se dice primo si sus unicos divisores positivos son 1 y o u p. En caso contrario se denomina compuesto. Teorema: Si mcd(a, n) = 1, a tiene inversa mdulo n. o 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 Matemticas, se denominan Cuerpos de Galois, y se notan GF (n). a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a (md n) o

5.2. Clculo de Inversas en Zn a

61

5.2.2.

Funcin de Euler o

Llamaremos conjunto reducido de residuos mdulo n y lo notaremos Z al conjunto o n de nmeros primos relativos con n. En otras palabras, Z es el conjunto de todos los nmeros u u n que tienen inversa mdulo n. Por ejemplo, si n fuera 12, su conjunto reducido de residuos o ser a: {1, 5, 7, 11} Existe una expresin que nos permite calcular el nmero de elementos el cardinal del o u conjunto reducido de residuos mdulo n: o
n

|Z | n

=
i=1

e pi i 1 (pi 1)

(5.2)

siendo pi los factores primos de n y ei su multiplicidad. Por ejemplo, si n fuera el producto de dos nmeros primos p y q, |Z | = (p 1)(q 1). u n Se dene la funcin de Euler sobre n, y se escribe (n), como el cardinal de Z , es decir: o n (n) = |Z | n Teorema: Si mcd(a, n) = 1: a(n) 1 (md n) o (5.3)

Demostracin: Puesto que a y n son primos entre s a multiplicado por cualquier elemento o , del conjunto reducido de residuos mdulo n {r1 , . . . , r(n) } ha de ser tambin primo con n, por o e lo tanto el conjunto {ar1 , . . . , ar(n) } no es ms que una permutacin del conjunto anterior, a o lo cual nos lleva a:
(n) (n) (n)

ri =
i=1 i=1

ari = a

(n) i=1

ri = a(n) 1

(md n) o

(Pequeo) Teorema de Fermat: Si p es primo, entonces n ap1 1 (md p) o (5.4)

Como consecuencia de este ultimo teorema podemos deducir que si r s (md p 1), o entonces ar as (md p), sea cual sea el valor de a. Por lo tanto, cuando trabajamos mdulo o o p, siendo p primo, los exponentes pueden ser reducidos mdulo p 1. o Denicin: Sea a Z . Se dene el orden de a, denotado ord(a), como el menor entero o n positivo t tal que at 1 (md n). o Existe una interesante propiedad de ord(a). Si as 1 (md n), entonces ord(a) divide a o s. En particular, tenemos que ord(a) siempre divide a (n). Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

62

5. Fundamentos de Aritmtica Modular e

Despus de todo lo expuesto, queda claro que uno de los posibles mtodos para calcular e e inversas mdulo n, es precisamente la Funcin de Euler, puesto que: o o a(n) = aa(n)1 1 (md n) = a1 a(n)1 o (md n) o

5.2.3.

Algoritmo Extendido de Euclides

El Algoritmo Extendido de Euclides tambin puede ser empleado para calcular inversas. e Es una ampliacin del de Euclides, que posee el mismo orden de complejidad, y que se obtiene o simplemente al tener en cuenta los cocientes adems de los restos en cada paso. El invariante a que mantiene es el siguiente, suponiendo que se le pasen como parmetros n y a: a gi = nui + avi El ultimo valor de gi ser el mximo comn divisor entre a y n, que valdr 1 si estos a a u a nmeros son primos relativos, por lo que tendremos: u 1 = nui + avi o sea, avi 1 (md n) o luego (vi md n) ser la inversa de a mdulo n. o a o Nuestra segunda alternativa para calcular inversas, cuando desconozcamos (n), ser pues a el Algoritmo Extendido de Euclides. En la implementacin que damos, como puede apreciarse, o calculamos tanto los ui como los vi , aunque luego en la prctica slo empleemos estos ultimos. a o Obsrvese tambin la segunda clusula while, que tiene como unico n que el valor devuelto e e a est comprendido entre 0 y n 1. e 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++; Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

5.3. Teorema Chino del Resto } while (v[i-1]<0) v[i-1]=v[i-1]+n; return(v[i-1]%n); }

63

5.3.

Teorema Chino del Resto

El Teorema Chino del Resto es una potente herramienta matemtica, que posee interesana tes aplicaciones criptogrcas. a Teorema: Sea p1 , . . . pr una serie de nmeros primos entre s y n = p1 p2 . . . pr , entonces u , el sistema de ecuaciones en congruencias x xi (md pi ) o i = 1, . . . , r (5.5)

tiene una unica solucin comn en [0, n 1], que viene dada por la expresin: o u o
r

x=
i=1

n (n/pi )1 pi

(md pi ) xi o

(md n) o

(5.6)

n n Demostracin: Para cada i, mcd pi , pi = 1. Por lo tanto, cada pi debe tener una inversa o yi tal que n yi 1 pi Tambin se cumple e n yi 0 pi n ya que pi es mltiplo de cada pj . u
r

(md pi ) o

(md pj ) o

i = j

Sea x =
i=1

n yi xi pi x=

(md n). Entonces x es una solucin a (5.5), ya que o o n n yk xk + yi xi = 0 + 1 xi xi pk pi (md pi ). o

k=i

Como puede apreciarse, esta demostracin nos proporciona adems una solucin al sistema o a o de ecuaciones (5.5), lo cual puede resultarnos de gran utilidad para ciertas aplicaciones, como por ejemplo, el algoritmo RSA (ver seccin 12.2). o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

64

5. Fundamentos de Aritmtica Modular e

5.4.

Exponenciacin. Logaritmos Discretos o

Muchos de los algoritmos de llave pblica emplean exponenciaciones dentro de grupos u nitos para codicar los mensajes. Tanto las bases como los exponentes en esos casos son nmeros astronmicos, incluso de miles de bits de longitud. Efectuar las exponenciaciones u o mediante multiplicaciones reiterativas de la base ser inviable. En esta seccin veremos mecaa o nismos ecientes para llevar a cabo estas operaciones. Tambin comentaremos brevemente el e problema inverso, el clculo de los logaritmos discretos, puesto que en su dicultad intr a nseca se apoyan muchos algoritmos criptogrcos. a

5.4.1.

Algoritmo de Exponenciacin Rpida o a

Supongamos que tenemos dos nmeros naturales a y b, y queremos calcular ab . El mecau nismo ms sencillo ser multiplicar a por s mismo b veces. Sin embargo, para valores muy a a grandes de b este algoritmo no nos sirve. Tomemos la representacin binaria de b: o b = 20 b0 + 21 b1 + 22 b2 + . . . + 2n bn Expresemos la potencia que vamos a calcular en funcin de dicha representacin: o o
n

ab = a2

0 b +21 b +22 b +...+2n b n 0 1 2

=
i=0

a2 bi

recordemos que los bi slo pueden valer 0 1, por tanto para calcular ab slo hemos de o o o i multiplicar los a2 correspondientes a los d gitos binarios de b que valgan 1. Ntese, adems, que a2 = (a2 )2 , por lo que, partiendo de a, podemos calcular el siguiente o a valor de esta serie elevando al cuadrado el anterior. El Algoritmo de Exponenciacin Rpida o a queda como sigue: int exp_rapida(int a, int b) { int z,x,resul; z=b; x=a; resul=1; while (z>0) { if (z%2==1) resul=resul*x; x=x*x; z=z/2; Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a
i i1

5.4. Exponenciacin. Logaritmos Discretos o } return(resul); }

65

La variable z se inicializa con el valor de b y se va dividiendo por 2 en cada paso para tener siempre el i-simo bit de b en el menos signicativo de z. En la variable x se almacenan e i los valores de a2 . La extensin a Zn de este algoritmo es muy simple, pues bastar sustituir las operaciones o a producto por el producto mdulo n, mientras que su orden de complejidad, siendo n una cota o superior de a, b y ab es de O(log(n)) multiplicaciones sobre nmeros de tamao log(n), por lo u n 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 exponenciacin es el clculo de logaritmos discretos. Dados dos o a nmeros a, b y el mdulo n, se dene el logaritmo discreto de a en base b mdulo n como: u o o c = logb (a) (md n) a bc o (md n) o (5.7)

En la actualidad no existen algoritmos ecientes que sean capaces de calcular en tiempo razonable logaritmos de esta naturaleza, y muchos esquemas criptogrcos basan su resistencia a en esta circunstancia. El problema de los logaritmos discretos est a ntimamente relacionado con el de la factorizacin, de hecho est demostrado que si se puede calcular un logaritmo, o a entonces se puede factorizar fcilmente (el rec a proco no se ha podido demostrar).

5.4.3.

El Problema de Die-Hellman

El problema de Die-Hellman est a ntimamente relacionado con el problema de los Logaritmos Discretos, y es la base de algunos sistemas criptogrcos de clave pblica, como el de a u Die-Hellman (apartado 12.3.1) y el de ElGamal (apartado 12.3.2). Antes de enunciarlo deniremos el trmino generador. Dado el conjunto Z , con p primo, e p diremos que Z es un generador de Z , si se cumple p p b Z , i tal que i = b p El enunciado del problema es el siguiente: dado un nmero primo p, un nmero que sea u u un generador de Z , y los elementos a y b , encontrar ab (md p). o p Ntese que nosotros conocemos a y b , pero no el valor de a ni el de b. De hecho, si o pudisemos efectuar de forma eciente logaritmos discretos, ser suciente con calcular a y e a luego (b )a = ab . Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

66

5. Fundamentos de Aritmtica Modular e

5.5.

Importancia de los N meros Primos u

Para explotar la dicultad de clculo de logaritmos discretos, muchos algoritmos cripa togrcos de llave pblica se basan en operaciones de exponenciacin en grupos nitos. Dichos a u o conjuntos deben cumplir la propiedad de que su mdulo n sea un nmero muy grande con o u 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 nmeros primos u muy grandes, que posteriormente se multiplican. Necesitaremos pues mecanismos para poder calcular esos nmeros primos grandes. u La factorizacin es el problema inverso a la multiplicacin: dado n, se trata de buscar un o o conjunto de nmeros tales que su producto valga n. Normalmente, y para que la solucin sea u o unica, se impone la condicin de que los factores de n que obtengamos sean todos primos o elevados a alguna potencia. Al igual que para el problema de los logaritmos discretos, no existen algoritmos ecientes para efectuar este tipo de clculos. Esto nos permite conar en a que, en la prctica, ser imposible calcular los factores de n , incluso disponiendo de elevados a a recursos computacionales. En cuanto al clculo de primos grandes, bastar con aplicar un algoritmo de factorizacin a a o para saber si un nmero es primo o no. Este mecanismo es inviable, puesto que acabamos de u decir que no hay algoritmos ecientes de factorizacin. Por suerte, s que existen algoritmos o probabil sticos que permiten decir con un grado de certeza bastante elevado si un nmero u cualquiera es primo o compuesto. Cabr preguntarse, dado que para los algoritmos asimtricos de cifrado necesitaremos a e generar muchos nmeros primos, si realmente hay sucientes. De hecho se puede pensar que, u a fuerza de generar nmeros, llegar un momento en el que repitamos un primo generado con u a anterioridad. Podemos estar tranquilos, porque si a cada tomo del universo le asignramos a a mil millones de nmeros primos cada microsegundo desde su origen hasta hoy, har falta un u an total de 10109 nmeros primos diferentes, mientras que el total estimado de nmeros primos u u de 512 bits o menos es aproximadamente de 10151 . Tambin podr e amos pensar en calcular indiscriminadamente nmeros primos para luego u emplearlos en algn algoritmo de factorizacin rpida. Por desgracia, si quisiramos construir u o a e un disco duro que albergara diez mil GBytes por cada gramo de masa y mil metro cbico u 135 Kg para almacenar todos los primos de 512 bits o menos, el artilugio pesar ms de 10 a a y ocupar casi 10130 metros cbicos, es decir, ser miles de billones de veces ms grande y a u a a pesado que la V Lctea. a a

5.6.

Algoritmos de Factorizacin o

Como bien es sabido, la descomposicin de un nmero entero n = pe1 pe2 . . . pek , siendo pi o u 1 2 k nmeros primos y ei nmeros enteros mayores que 1, es unica. Cuando tratamos de obtener la u u factorizacin de n, normalmente nos conformamos con alcanzar una descomposicin n = a b o o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

5.6. Algoritmos de Factorizacin o

67

no trivial la descomposicin trivial es aquella en la que a = n y b = 1. En tal caso, y o puesto que tanto a como b son menores que n, podemos aplicar el mismo algoritmo de forma recursiva hasta que recuperemos todos los factores primos. Esta es la razn por la que los o algoritmos de factorizacin suelen limitarse a dividir n en dos factores. o Tambin conviene apuntar el hecho de que, como se ver en la seccin 5.7, es mucho ms e a o a eciente comprobar si un nmero es primo que tratar de factorizarlo, por lo que normalmente u se recomienda aplicar primero un test de primalidad para asegurarse de que el nmero puede u descomponerse realmente de alguna manera no trivial. Finalmente, queda la posibilidad de que n tenga un unico superior a 1. Afortunadamente, existen mtodos capaces de e perfecta xk , con k > 1, por lo que todos los algoritmos que partirn de la suposicin de que n tiene al menos dos factores a o factor, elevado a una potencia vericar si n es una potencia comentaremos en esta seccin o primos diferentes.

El algoritmo ms sencillo e intuitivo para tratar de factorizar un nmero n es probar a a u dividirlo por todos los nmeros enteros positivos comprendidos entre 2 y n. Evidentemente, u este mtodo es del todo inaceptable en cuanto n alcanza valores elevados, y ha sido ampliae mente mejorado por otras tcnicas que, sin llegar a ser realmente ecientes, son mucho ms e a rpidas que la fuerza bruta. En esta seccin haremos un breve repaso a algunos de los mtodos a o e ms interesantes aparecidos hasta la fecha. a

5.6.1.

Mtodo de Fermat e

Para factorizar n, el mtodo de Fermat intenta representarlo mediante la expresin e o n = x2 y 2 con x, y Z, x, y 1. Es fcil ver que a n = (x + y)(x y) = a b donde a y b sern dos factores de n. El mtodo de Fermat empieza tomando x0 como el primer a e entero mayor que n. Se comprueba entonces que y0 = x2 n es un cuadrado perfecto, y en 0 caso contrario se calcula xi+1 = xi + 1. Usando la siguiente expresin: o yi+1 = x2 n = (xi + 1)2 n = x2 n + 2xi + 1 = yi + 2xi + 1 i+1 i se puede obtener el siguiente yi haciendo uso unicamente de operaciones sencillas. En cuanto encontremos un yi que sea un cuadrado perfecto, habremos dado con una factorizacin de n. o Por ejemplo, vamos a intentar factorizar el nmero 481: u x0 x1 x2 x3 Manuel J. Lucena Lpez o = 22 = 23 = 24 = 25 y0 = 3 y1 = 48 y2 = 95 y3 = 144 2x0 + 1 = 45 2x1 + 1 = 47 2x2 + 1 = 49 (5.8)

Criptograf y Seguridad en Computadores a

68

5. Fundamentos de Aritmtica Modular e Como puede verse, y3 es el cuadrado de 12, luego podemos poner: 481 = (25 + 12)(25 12) = 13 37

Este mtodo permite an varios renamientos, pero en cualquier caso resulta inviable e u cuando el nmero n a factorizar es lo sucientemente grande, ya que presenta un orden de u complejidad para el peor caso de O(n) ntese que al ser lineal en n, resulta exponencial en o el tamao de n. n

5.6.2.

Mtodo p 1 de Pollard e

Este mtodo se basa en poseer un mltiplo cualquiera m de p 1, siendo p un factor e u primo de n. Todo ello, por supuesto, sin conocer el valor de p. Para ello necesitaremos denir el concepto de uniformidad. Diremos que n es Buniforme si todos sus factores primos son menores o iguales a B. Llegados a este punto, suponemos que p es un factor de n y p 1 es B1 uniforme, con B1 sucientemente pequeo. Calcularemos m como el producto de todos los nmeros primos n u inferiores a B1 , elevados a la mxima potencia que los deje por debajo de n. De esta forma, a garantizamos que m es un mltiplo de p 1, aunque no conozcamos el valor de p. Una vez u obtenido el valor de m, el algoritmo de factorizacin queda como sigue: o 1. Escoger un nmero a aleatorio dentro del conjunto {2, . . . , n 1}. u 2. Calcular d = mcd(a, n). Si d > 1, d es un factor de n. Fin. 3. Calcular x = (am md n). o 4. Calcular d = mcd(x 1, n). Si d > 1, d es un factor de n. Fin. 5. Devolver fallo en la bsqueda de factores de n. Fin. u Ntese que, en el paso 3, puesto que m es mltiplo de p 1, x deber ser congruente con o u a 1 mdulo p, luego x 1 deber ser mltiplo de p, por lo que el paso 4 deber devolver p. o a u a Est demostrado que este algoritmo tiene un 50 % de probabilidades de encontrar un valor a de a que permita obtener un factor de n. Ejecutndolo, pues, varias veces, es bastante probable a que podamos hallar algn factor de n. u Como ejemplo, vamos a tratar de factorizar el nmero 187, suponiendo que alguno de u sus factores es 3uniforme. En tal caso m = 27 34 = 10368. Sea a = 2, entonces x = (210368 md 187) = 69. Calculando mcd(68, 187) nos queda 17, que divide a 187, por lo que o 187 = 17 13. El orden de eciencia de este algoritmo es de O(B logB (n)) operaciones de multiplicacin o modular, suponiendo que n tiene un factor p tal que p 1 es Buniforme. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

5.6. Algoritmos de Factorizacin o

69

5.6.3.

Mtodos Cuadrticos de Factorizacin e a o

Los mtodos cuadrticos de factorizacin se basan en la ecuacin e a o o x2 y 2 Siempre y cuando x y tanto (md n) o (5.9)

(md n), tenemos que (x2 y 2 ) es mltiplo de n, y por lo o u n|(x y)(x + y) (5.10)

Adicionalmente, puesto que tanto x como y son menores que n, n no puede ser divisor de (x + y) ni de (x y). En consecuencia, n ha de tener factores comunes tanto con (x + y) como con (x y), por lo que el valor d = mcd(n, x y) debe ser un divisor de n. Se puede demostrar que si n es impar, no potencia de primo y compuesto, entonces siempre se pueden encontrar x e y. Para localizar un par de nmeros satisfactorio, en primer lugar elegiremos un conjunto u F = {p0 , p1 , . . . , pt1 } formado por t nmeros primos diferentes, con la salvedad de que p0 puede ser igual a 1. u Buscaremos ahora ecuaciones en congruencias con la forma x2 zi i (md n) o (5.11)

tales que zi se pueda factorizar completamente a partir de los elementos de F . El siguiente paso consiste en buscar un subconjunto de los zi tal que el producto de todos sus elementos, al que llamaremos z, sea un cuadrado perfecto. Puesto que tenemos la factorizacin de los zi , o basta con escoger estos de forma que la multiplicidad de sus factores sea par. Este problema equivale a resolver un sistema de ecuaciones lineales con coecientes en Z2 . Multiplicando los x2 correspondientes a los factores de z escogidos, tendremos una ecuacin del tipo que o i necesitamos, y por lo tanto una factorizacin de n. o Criba Cuadrtica a Este mtodo se basa en emplear un polinomio de la forma e q(x) = (x + m)2 n siendo m = n , donde x representa la parte entera de x. Puede comprobarse que q(x) = x2 + 2mx + m2 n x2 + 2mx es un valor pequeo en relacin con n, siempre y cuando x en valor absoluto sea pequeo. Si n o n escogemos xi = ai + m y zi = q(ai ), tendremos que se cumple la relacin (5.11). o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

70

5. Fundamentos de Aritmtica Modular e

Lo unico que nos queda es comprobar si zi puede descomponerse totalmente con los ele mentos de F . Esto se consigue con la fase de criba, pero antes nos jaremos en que si pi F divide a q(x), tambin dividir a q(x + kp). Calcularemos la solucin de la ecuacin e a o o q(x) 0 (md p) o (5.12)

obteniendo una o dos series dependiendo del nmero de soluciones que tenga la ecuacin u o de valores y tales que p divide a q(y). La criba propiamente dicha se lleva a cabo deniendo un vector Q[x], con M x M , que se inicializa segn la expresin Q[x] = log |q(x)| . Sean x1 , x2 las soluciones a (5.12). u o Entonces restamos el valor log(p) a aquellas entradas Q[x] tales que x sea igual a algn u valor de las series de soluciones obtenidas en el paso anterior. Finalmente, los valores de Q[x] que se aproximen a cero son los ms susceptibles de ser descompuestos con los elementos de a F , propiedad que se puede vericar de forma directa tratando de dividirlos. Criba del Cuerpo de N meros u Hoy por hoy es el algoritmo de factorizacin ms rpido que se conoce, y fue empleado o a a con xito en 1996 para factorizar un nmero de 130 d e u gitos decimales. Es una extensin de o la criba cuadrtica, que emplea una segunda base de factores, esta vez formada por polinoa mios irreducibles. Los detalles de este mtodo de factorizacin requieren unos conocimientos e o algebraicos que escapan a los contenidos de este libro, por lo que se recomienda al lector que acuda a la bibliograf si desea conocer ms a fondo este algoritmo de factorizacin. a a o

5.7.

Tests de Primalidad

Como ya hemos dicho, no es viable tratar de factorizar un nmero para saber si es o u no primo, pero existen mtodos probabil e sticos que nos pueden decir con un alto grado de certeza si un nmero es o no compuesto. En esta seccin veremos algunos de los algoritmos u o ms comunes para vericar que un nmero sea primo. a u

5.7.1.

Mtodo de Lehmann e

Es uno de los tests ms sencillos para saber si un nmero p es o no primo: a u 1. Escoger un nmero aleatorio a < p. u 2. Calcular b = a(p1)/2 3. Si b = 1 (md p). o (md p), p no es primo. o (md p), la probabilidad de que p sea primo es igual o o

(md p) y b = 1 o

4. Si b 1 (md p) b 1 o o superior al 50 %. Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

5.7. Tests de Primalidad

71

Repitiendo el algoritmo n veces, la probabilidad de que p supere el test y sea compuesto es decir, no primo ser de 1 contra 2n . a

5.7.2.

Mtodo de Rabin-Miller e

Es el algoritmo ms empleado, debido a su facilidad de implementacin. Sea p el nmero a o u que queremos saber si es primo. Se calcula b, siendo b el nmero de veces que 2 divide a (p1), u es decir, 2b es la mayor potencia de 2 que divide a (p 1). Calculamos entonces m, tal que p = 1 + 2b m. 1. Escoger un nmero aleatorio a < p. u 2. Sea j = 0 y z = am (md p). o

3. Si z = 1, o z = p 1, entonces p pasa el test y puede ser primo. 4. Si j > 0 y z = 1, p no es primo. 5. Sea j = j + 1. Si j = b y z = p 1, p no es primo. 6. Si j < b y z = p 1, z = z 2 (md p). Volver al paso (4). o

7. Si j < b y z = p 1, entonces p pasa el test y puede ser primo. 8. p no es primo. La probabilidad de que un nmero compuesto pase este algoritmo para un nmero a es del u u 25 %. Esto quiere decir que necesitaremos menos pasos para llegar al mismo nivel de conanza que el obtenido con el algoritmo de Lehmann.

5.7.3.

Consideraciones Prcticas a

A efectos prcticos, el algoritmo que se suele emplear para generar aleatoriamente un a nmero primo p es el siguiente: u 1. Generar un nmero aleatorio p de n bits. u 2. Poner a uno el bit ms signicativo garantizamos que el nmero es de n bits y el a u menos signicativo debe ser impar para poder ser primo. 3. Intentar dividir p por una tabla de primos precalculados (usualmente aquellos que sean menores que 2000). Esto elimina gran cantidad de nmeros no primos de una forma muy u rpida. Baste decir a t a tulo informativo que ms del 99.8 % de los nmeros impares no a u primos es divisible por algn nmero primo menor que 2000. u u 4. Ejecutar el test de Rabin-Miller sobre p como m nimo cinco veces. 5. Si el test falla, incrementar p en dos unidades y volver al paso 3. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

72

5. Fundamentos de Aritmtica Modular e

5.7.4.

Primos fuertes

Debido a que muchos algoritmos de tipo asimtrico (ver cap e tulo 12) basan su potencia en la dicultad para factorizar nmeros enteros grandes, a lo largo de los aos se propusieron u n diversas condiciones que deb cumplir los nmeros empleados en aplicaciones criptogrcas an u a para que no fueran fciles de factorizar. Se empez entonces a hablar de nmeros primos a o u fuertes. Sin embargo, en diciembre de 1998, Ronald Rivest y Robert Silverman publicaron un trabajo en el que quedaba demostrado que no era necesario emplear primos fuertes para los algoritmos asimtricos. En l se argumentaba que la supuesta necesidad de nmeros de este e e u tipo surgi para dicultar la factorizacin mediante ciertos mtodos como por ejemplo, el o o e mtodo p 1, pero la aparicin de tcnicas ms modernas como la de Lenstra, basada en e o e a curvas el pticas, o la criba cuadrtica, hac que se ganase poco o nada con el empleo de este a a tipo de nmeros primos. u

5.8.

Anillos de Polinomios

Denicin: Si tenemos un anillo conmutativo R, entonces un polinomio con variable x o sobre el anillo R tiene la siguiente forma f (x) = an xn + an1 xn1 + + a1 x + a0 donde cada ai R y n 0. El elemento ai se denomina coeciente isimo de f (x), y el e mayor m para el cual am = 0 se denomina grado de f (x). Si f (x) = a0 con a0 = 0, entonces se dice que f (x) tiene grado 0. Si todos los coecientes de f (x) valen 0, se dice que el grado de f (x) es . Finalmente, un polinomio se dice mnico si su coeciente de mayor grado vale 1. o Podemos denir las operaciones suma y producto de polinomios de la siguiente forma, siendo f (x) = an xn + + a0 y g(x) = bm xm + + b0 : Suma: f (x) + g(x) = Producto: f (x) g(x) = cr xr , donde ci = ai + bi . cr xr , donde ci = aj bk , tal que j + k = i.

La suma de polinomios cumple las propiedades asociativa, conmutativa, elemento neutro y elemento simtrico, mientras que el producto cumple la asociativa, conmutativa y elemento e neutro. El conjunto de polinomios denidos en un anillo R, que notaremos R[x], con las operaciones suma y producto, tiene en consecuencia estructura 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 operacin es la divisin de polinomios, donde c(x) desempea el papel o o n de cociente, y r(x) el de resto, y tiene propiedades anlogas a la de enteros. Eso nos permite a denir una aritmtica modular sobre polinomios, igual que la que ya hemos denido para e enteros. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

5.8. Anillos de Polinomios Denicin: Se dice que g(x) es congruente con h(x) mdulo f (x), y se nota o o g(x) h(x) si g(x) = h(x) + k(x)f (x), para algn k(x) R[x] u (md f (x)) o

73

Denicin: Un polinomio f (x) en R[x] induce un conjunto de clases de equivalencia de o polinomios en R[x], donde cada clase posee al menos un representante de grado menor que el de f (x). La suma y multiplicacin pueden llevarse a cabo, por tanto, mdulo f (x), y tienen o o estructura de anillo conmutativo. Denicin: Decimos que un polinomio f (x) R[x] de grado mayor o igual a 1 es irreducible o 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 irreducible, , el conjunto de clases de equivalencia que genera tiene estructura de cuerpo. Ntese que en o este caso, el papel que desempeaba un nmero primo es ahora ocupado por los polinomios n u irreducibles.

5.8.1.

Polinomios en Zn

Puesto que, como ya sabemos, Zn es un anillo conmutativo, podemos denir el conjunto Zn [x] de polinomios con coecientes en Zn . Vamos a centrarnos ahora en el conjunto Z2 [x]. En este caso, todos los coecientes de los polinomios pueden valer unicamente 0 1, por lo que un polinomio puede ser representado o mediante una secuencia de bits. Por ejemplo, f (x) = x3 + x + 1 podr representarse mediante a 2 + 1 vendr dado por el n mero 101. el nmero binario 1011, y g(x) = x u a u Podemos ver que f (x) + g(x) = x3 + x2 + x, que viene dado por el nmero 1110. Puesto u que las operaciones se realizan en Z2 , esta suma podr haber sido realizada mediante una a simple operacin or-exclusivo entre los nmeros binarios que representan a f (x) y g(x). Como o u vemos, ser muy fcil implementar estas operaciones mediante hardware, y sta es una de las a a e principales ventajas de trabajar en Z2 [x]. Si escogemos un polinomio irreducible en Z2 , podemos generar un cuerpo nito, o sea, un cuerpo de Galois. Dicho conjunto se representa como GF (2n ), siendo n el grado del polinomio irreducible que lo genera, y tiene gran importancia en Criptograf ya que algunos algoritmos a, de cifrado simtrico, como el estndar de cifrado AES, se basan en operaciones en GF (2n ) e a (ver seccin 10.5). o A modo de ejemplo, veamos cmo funciona la operacin producto dentro de estos conjuntos. o o Tomemos el polinomio f (x) = x8 + x4 + x3 + x + 1, que es irreducible en Z2 [x], y genera un cuerpo de Galois GF (28 ). Vamos a multiplicar dos polinomios: (x5 + x) (x4 + x3 + x2 + 1) = x9 + x8 + x7 + x5 + x5 + x4 + x3 + x = = x9 + x8 + x7 + x4 + x3 + x Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

74

5. Fundamentos de Aritmtica Modular e

Ntese que x5 + x5 = 0, dado que los coecientes estn en Z2 . Ahora hemos de tomar el resto o a mdulo f (x). Para ello emplearemos el siguiente truco: o x8 + x4 + x3 + x + 1 0 luego x9 + x8 + x7 + x4 + x3 + x = x(x8 ) + x8 + x7 + x4 + x3 + x = = x(x4 + x3 + x + 1) + (x4 + x3 + x + 1) + x7 + x4 + x3 + x = = x5 + x4 + x2 + x + x4 + x3 + x + 1 + x7 + x4 + x3 + x = = x7 + x5 + x4 + x4 + x4 + x3 + x3 + x2 + x + x + x + 1 = = x7 + x5 + x4 + x2 + 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 aritmticos. En realidad, aunque e el orden de complejidad sea el mismo, se logra multiplicar la velocidad por una constante y simplicar el diseo de los circuitos, por lo que se obtienen sistemas con mayores prestaciones, n y a la vez ms baratos. a (md f (x)) = x8 x4 + x3 + x + 1 o (md f (x)) o

5.9.

Ejercicios Propuestos

1. Comprobar las propiedades de la suma en grupos nitos. 2. Comprobar las propiedades del producto en grupos nitos. 3. Calcular el valor de la funcin de Euler para los siguientes nmeros: 64, 611, 2197, 5, o u 10000. 4. Resolver el siguiente sistema de ecuaciones en congruencias: x 12 (md 17) o x 13 (md 64) o x 8 (md 27) o 5. Cmo calcular el valor de (210368 md 187), empleando unicamente lpiz, papel y o a o a calculadora? 6. Calcule la suma y el producto de los polinomios correspondientes a los nmeros binarios u 6 ) denido por el polinomio irreducible f (x) = x6 +x+1. 100101 y 1011, dentro del GF (2

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 6

Introduccin a las Curvas El o pticas


La Criptograf de Curva El a ptica es una de las disciplinas ms prometedoras en el campo a de los cifrados asimtricos. Las curvas el e pticas constituyen un formalismo matemtico conocia do y estudiado desde hace ms de 150 aos, y presentan una serie de propiedades que da lugar a n a problemas dif ciles (ver seccin 5.4) anlogos a los que presentaba la aritmtica modular, o a e lo cual las hace vlidas para aplicar algunos de los algoritmos asimtricos ms conocidos (ver a e a cap tulo 12). Si bien su estructura algebraica es algo compleja, su implementacin suele resulo tar tanto o ms eciente que la aritmtica modular, y adems con claves mucho ms cortas se a e a a puede alcanzar el mismo nivel de seguridad que con otras tcnicas. e Las primeras propuestas de uso de las curvas el pticas en Criptograf fueron hechas por a Neal Koblitz y Victor Miller en 1985. Precisamente el principal argumento que esgrimen los detractores de estas tcnicas es que, si bien las curvas el e pticas han sido objeto de estudio y anlisis durante ms de un siglo, las propiedades que pueden estar directamente relacionadas a a con su calidad como base para un sistema criptogrco, apenas llevan quince aos siendo a n consideradas. Para introducir el concepto de Curva El ptica, vamos a establecer un paralelismo con otro formalismo mucho ms cercano e intuitivo: los nmeros enteros. Como ya vimos en el a u cap tulo 5, los nmeros enteros constitu un conjunto para el que pod u an amos denir una serie de operaciones, y stas ten unas propiedades concretas. Estos conjuntos y operaciones e an mostraban una estructura que hac surgir problemas computacionalmente dif a ciles de tratar. Vamos a hacer exactamente lo mismo con las curvas el pticas.

6.1.

Curvas El pticas en R

Denicin: Una curva el o ptica sobre R es el conjunto de puntos del plano (x, y) que cumplen la siguiente ecuacin: o y 2 = x3 + ax + b (6.1) Los coecientes a y b caracterizan un vocamente cada curva. En la gura 6.1 puede verse la Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

76

6. Introduccin a las Curvas El o pticas

Figura 6.1: Grcas de curvas el a pticas. a) y 2 = x3 5x + 1; b) y 2 = x3 3x + 4.

representacin grca de dos de ellas ntese que la curva se extender hacia la derecha hasta o a o a el innito. Si x3 +ax+b no tiene ra mltiples, lo cual es equivalente a que 4a3 +27b2 = 0, entonces ces u la curva correspondiente, en conjuncin con un punto especial O, llamado punto en el innito, o ms la operacin suma que deniremos ms adelante, es lo que vamos a denominar grupo de a o a curva el ptica 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.

6.1.1.

Suma en E(R)

Ya tenemos un conjunto sobre el que trabajar. Nuestro siguiente paso ser denir una ley a de composicin interna que, dados dos elementos cualesquiera, nos devuelva otro que tambin o e pertenezca al conjunto. Denominaremos suma a esta operacin y la representaremos mediante o el signo +, de forma totalmente anloga a lo que hac a amos con Z. Sean los puntos r = (rx , ry ), s = (sx , sy ), p = (px , py ), t = (tx , ty ) E(R), la operacin o suma se dene de la siguiente forma: r + O = O + r = r, sea cual sea el valor de r. Esto quiere decir que O desempea el n papel de elemento neutro para la suma. Si rx = sx y ry = sy , decimos que r es el opuesto de s, escribimos r = s, y adems a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

6.1. Curvas El pticas en R

77

Figura 6.2: Interpretacin grca de la suma de dos puntos en una curva el o a ptica. r + s = s + r = O por denicin. o Si r = s y r = s, entonces para sumarlos se traza la recta que une r con s. Dicha recta cortar la curva en un punto. La suma t de r y s ser el opuesto de dicho punto (ver a a gura 6.2a). Para sumar un punto p consigo mismo, se emplea la tangente a la curva en p. Si py = 0, dicha tangente cortar a la curva en un unico punto. La suma t = p + p ser el opuesto a a de dicho punto (ver gura 6.2b). Para sumar un punto p consigo mismo, cuando py = 0, la tangente a la curva ser pera pendicular al eje de abscisas, por lo que podemos considerar que corta a la curva en el innito. Por lo tanto, p + p = O si py = 0. Por razones de simplicidad en la notacin diremos que sumar un punto p consigo mismo o k veces, es como multiplicar dicho punto por el escalar k, y lo notaremos kp Ntese que, cuando se suma r y r, la recta que los une resulta perpendicular al eje de o abcisas, por lo que cortar a la curva en el innito, dando como resultado O. Comprubese, a e adems, que cuando ry = 0, se cumple: a 2r = r + r = O 3r = 2r + r = O + r = r 4r = 3r + r = r + r = O ... Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

78

6. Introduccin a las Curvas El o pticas

Algebraicamente, la suma de curvas el pticas se dene de la siguiente forma: Sea r = (rx , ry ) y s = (sx , sy ), donde r = s, entonces r + s = t donde d= ry sy ; rx sx tx = d2 rx sx ; ty = ry + d(rx tx ) (6.2)

y cuando queremos sumar un punto consigo mismo, tenemos que 2p = t donde 3p2 + a x ; 2py tx = d2 2px ;

d=

ty = py + d(px tx )

(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. Obsrvese que cuando introdujimos los grupos nitos en Z, seleccionbamos un subcone a junto de elementos de Z y den amos la operacin suma, junto con sus propiedades, para o este subconjunto. Con las curvas el pticas hemos hecho exactamente lo mismo, slo que el o subconjunto es extra del plano R2 y la operacin suma es ligeramente ms complicada. do o a

6.2.

Curvas El pticas en GF (n)

Recordemos que un cuerpo de Galois GF (n) es el grupo nito generado por n, siendo n un nmero primo. En dicho conjunto todos los elementos menos el cero tienen inversa, por lo u que podemos sumar, restar, multiplicar y dividir exactamente de la misma forma que en R, por lo que nada nos impide ver qu puntos cumplen la ecuacin e o y 2 = x3 + ax + b deniendo de esta forma el conjunto E(GF (n)). A modo de ejemplo, vamos a estudiar la curva el ptica con a = 7 y b = 4 en GF (17). En primer lugar, habremos de comprobar, igual que antes, que 4a3 + 27b2 = 0: 4 73 + 27 42 = 2 (md 17) o (md n) o

Seguidamente, vamos a ver qu puntos pertenecen a la curva el e ptica. Si hacemos los clculos a 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) Ntese que dado un punto de la curva (x, y), el valor (x, y) (mod n) tambin pertenece o e a sta. Calculemos ahora la suma de dos puntos cualesquiera, por ejemplo (2, 3) y (3, 16), e Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

6.3. Curvas El pticas en GF (2n ) empleando la expresiones de (6.2): d = (3 16)/(2 3) = 13 (md 17) o x = 132 2 3 = 11 (md 17) o y = 3 + 13 (2 3) = 1 (md 17) o

79

luego (2, 3) + (3, 16) = (11, 1). Como cabr esperar, nos da como resultado un punto que a tambin pertenece a la curva. e

6.3.

Curvas El pticas en GF (2n )

Vamos a dar un paso ms. Como ya se vio en la seccin 5.8.1, los elementos de GF (pn ) a o y las operaciones entre ellos presentan unas propiedades anlogas a las de los elementos a de GF (n), con la caracter stica aadida de que, cuando p = 2, la implementacin de los n o algoritmos correspondientes es ms sencilla y rpida. Nada nos impedir pues, denir el a a a, conjunto E(GF (2n )). En GF (2n ), debido a su especial estructura, la ecuacin de curva el o ptica que ser util para a nuestros propsitos es ligeramente diferente a la dada en (6.1): o y 2 + xy = x3 + ax2 + b y la unica condicin necesaria para que genere un grupo es que b = 0. o Dentro de GF (2n ), los puntos de nuestra curva van a ser polinomios de grado n 1 con coecientes binarios, por lo que podrn ser representados mediante cadenas de bits. a (6.4)

6.3.1.

Suma en E(GF (2n ))

Sean los puntos r = (rx , ry ), s = (sx , sy ), p = (px , py ), t = (tx , ty ) E(GF (2n )), la operacin suma se dene de la siguiente forma: o r + O = O + r = r, sea cual sea el valor de r. Si rx = sx y ry = sx + sy , decimos que r es el opuesto de s, escribimos r = s, y adems a r + s = s + r = O por denicin. o Si r = s y r = s, la suma t = r + s se calcula de la siguiente forma: d= sy ry ; sx rx tx = d2 + d + rx + sx + a; ty = d(rx + tx ) + tx + ry

Para calcular la suma t = 2p, con px = 0, se emplea la siguiente frmula: o py d = px + ; tx = d2 + d + a; ty = p2 + (d + 1)tx x px Finalmente, si px = 0, 2p = O. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

80

6. Introduccin a las Curvas El o pticas

6.4.

El Problema de los Logaritmos Discretos en Curvas El pticas

Tomemos un punto p cualquiera de una curva el ptica. Denominaremos p al conjunto {O, p, 2p, 3p,. . . }. En E(GF (n)) y E(GF (2m )) los conjuntos de esta naturaleza debern a necesariamente ser nitos, ya que el nmero de puntos de la curva es nito. Por lo tanto, si u disponemos de un punto q p , debe existir un nmero entero k tal que kp = q. u El Problema de los Logaritmos Discretos en Curvas El pticas consiste precisamente en hallar el nmero k a partir de p y q. Hasta ahora no se ha encontrado ningn algoritmo u u eciente (subexponencial) para calcular el valor de k. Al igual que los descritos en la seccin o 5.4, este problema puede ser empleado con xito para el desarrollo de algoritmos criptogrcos e a de llave pblica. u

6.5.

Ejercicios Propuestos

1. Se denomina ra de un polinomio p(x) a los valores de x tales que p(x) = 0. Las ra z ces ri de un polinomio tienen la propiedad de que el polinomio pi (x) = x ri divide a p(x). Una ra es mltiple, y su multiplicidad es m, si el polinomio (pi (x))m divide a p(x). Por z u lo tanto, si el polinomio e(x) = x3 + ax + b tiene ra ces mltiples, debe poder escribirse u de la forma x3 + ax + b = (x q)2 (x r) Demuestre, a partir de la expresin anterior, que 4a3 + 27b2 = 0 es condicin suciente o o para que e(x) tenga ra ces mltiples. u 2. En el ejemplo de la seccin 6.2, calcule el conjunto p con p = (11, 16). o 3. Sea el grupo GF (23 ) generado por el polinomio x3 + x + 1. Calcule los puntos que pertenecen a la curva el ptica con parmetros a = 100 y b = 010. a 4. Compruebe geomtricamente las propiedades asociativa y conmutativa de la suma en e E(R).

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 7

Aritmtica Entera de M ltiple e u Precisin o


En este cap tulo daremos una serie de nociones bsicas y algoritmos sobre aritmtica entera a e de mltiple precisin, disciplina que ha cobrado un gran inters debido al uso extensivo que u o e hacen de ella sobre todo los algoritmos asimtricos de cifrado y autenticacin. e o

7.1.

Representacin de enteros largos o

Llamaremos nmero largo a aquel que posee gran cantidad de d u gitos signicativos, normalmente ms de los que los tipos de dato convencionales de los lenguajes de programacin a o clsicos pueden soportar. En este apartado vamos a indicar cmo representarlos y operar con a o ellos empleando tipos de dato de menor precisin. o Todos conocemos la representacin tradicional en base 10 de los nmeros reales, en la que o u cada cifra contiene unicamente valores de 0 a 9. Esta representacin no es ms que un caso o a particular (B = 10) de la siguiente expresin general: o

n = ()

ai B i

donde los trminos con e ndice negativo corresponden a la parte no entera (decimal ) del nmero u real n. Sabemos que, dado el valor de B, dicha representacin es unica, y que signica que n o en base B se escribe: ()an an1 . . . a0 .a1 . . . Donde cada ai est comprendido entre 0 y B 1. Por ejemplo, en base 10, el nmero 3,1415926 a u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

82 corresponder a la expresin: a o

7. Aritmtica Entera de Mltiple Precisin e u o

3 100 + 1 101 + 4 102 + 1 103 + 5 104 + 9 105 + 2 106 + 6 107 En cualquier caso, puesto que nuestro objetivo es representar unicamente nmeros enteros u positivos, prescindiremos del signo y de los trminos con sub e ndice negativo. Cualquier nmero vendr representado por una serie unica de coecientes ai (cifras), de las u a que importa tanto su valor como su posicin dentro del nmero. Esta estructura corresponde o u 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 = 216 B = 232 para o que cada cifra de nuestro nmero se pueda almacenar en un dato del tipo unsigned int sin u desperdiciar ningn bit). Para almacenar los resultados parciales de las operaciones aritmtiu e cas emplearemos un tipo de dato de doble precisin (unsigned long int, correspondiente a o B = 232 B = 264 ) de forma que no se nos desborde al multiplicar dos cifras. Normalmente o se escoge una longitud que pueda manejar directamente la ALU (Unidad Aritmtico-Lgica) e o de la computadora, para que las operaciones elementales entre cifras sean rpidas. a Por todo esto, para nosotros un nmero entero largo ser un vector de unsigned int. En u a cualquier caso, y a partir de ahora, nuestro objetivo ser estudiar algoritmos ecientes para a efectuar operaciones aritmticas sobre este tipo de nmeros, independientemente de la base e u en la que se encuentren representados.

7.2.

Operaciones aritmticas sobre enteros largos e

Vamos a describir en este apartado cmo realizar operaciones aritmticas (suma, resta, o e multiplicacin y divisin) de enteros largos. o o

7.2.1.

Suma

La suma de a = (a0 , a1 . . . an1 ) y b = (b0 , b1 . . . bn1 ) se puede denir como: (a + b)i = siendo ci = 0 para i = 0 (ai1 + bi1 + ci1 ) div B para i = 1 . . . n (ai + bi + ci ) md B para i = 0 . . . n 1 o ci para i = n

ci es el acarreo de la suma de los d gitos inmediatamente anteriores. Tenemos en cuenta el coeciente n de la suma porque puede haber desbordamiento, en cuyo caso la suma tendr a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

7.2. Operaciones aritmticas sobre enteros largos e

83

n + 1 d gitos y su cifra ms signicativa ser precisamente cn . Este no es otro que el algoritmo a a clsico que todos hemos empleado en la escuela cuando hemos aprendido a sumar. a El algoritmo para la suma quedar pues, como sigue: a, 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 = (ai bi ri ) md B o siendo 0 ri = 1 (ai1 bi1 ri1 + B) div B para i = 0 para i = 1 . . . n para i = 0 . . . n 1

ri representa el acarreo de la resta (borrow ), que puede valer 0 1 segn la resta parcial salga o u positiva o negativa. Ntese que, como a > b, el ultimo acarreo siempre ha de valer 0. o resta (unsigned *a, unsigned *b, unsigned *d) { unsigned long dif; unsigned acarreo; n=max(num. de digitos de a, num. de digitos de b) Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

84 acarreo=0; for (i=0;i<n;i++) { dif=a[i]-b[i]-acarreo+BASE; d[i]=dif%BASE; acarreo=1-dif/BASE; } }

7. Aritmtica Entera de Mltiple Precisin e u o

El resultado se devuelve en d. La razn por la que sumamos la base a dif es para que la o resta parcial salga siempre positiva y poder hacer el mdulo correctamente. En ese caso, si el o valor era positivo, al sumarle B y dividir por B de nuevo nos queda 1. Si fuera negativo, nos saldr 0. Por eso asignamos al nuevo acarreo el valor 1-dif/BASE. a Nos queda comprobar cul de los dos nmeros es mayor para poder emplearlo como mia u nuendo. Esta comprobacin se puede realizar fcilmente deniendo una funcin que devuelva o a o el nmero cuyo d u gito ms signicativo tenga un nmero de orden mayor. En caso de igualdad a u ir amos comparando d gito a d gito, empezando por los ms signicativos hasta que encontrea mos alguno mayor o lleguemos al ultimo d gito, situacin que unicamente ocurrir si los dos o a nmeros son iguales. u

7.2.3.

Multiplicacin o

Para obtener el algoritmo del producto emplearemos la expresin general de un nmero o u entero positivo en base B. Si desarrollamos el producto de dos nmeros cualesquiera a y b de u longitudes m y n respectivamente nos queda:
m1

ab =
i=0

ai B i b

A la vista de esto podemos descomponer el producto como m llamadas a una funcin que o multiplica un entero largo por ai B i (es decir, un entero largo con un unico d gito signicativo) y despus sumar todos los resultados parciales. e Para poder implementar esto primero deniremos una funcin (summult) que multiplique o b por ai B i y el resultado se lo sume al vector s, que no tiene necesariamente 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++) Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

7.2. Operaciones aritmticas sobre enteros largos e { 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++; } }

85

La segunda parte de la funcin se encarga de acumular los posibles acarreos en el vector o s. A partir de la funcin que acabamos de denir, queda entonces como sigue: o producto(unsigned *a,int m, unsigned *b, int n, unsigned *p) { int k; for (k=0;k<=m+n;k++) 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 multiplicacin de enteros que nos va a permitir efectuar estas o operaciones de manera ms eciente. Tomemos un nmero entero cualquiera a de k d a u gitos en base B. Dicho nmero puede ser representado mediante la de la siguiente expresin: u o a = al B 2 + ar Es decir, partimos a en dos mitades. Por razones de comodidad, llamaremos Bk a B 2 . Veamos ahora cmo queda el producto de dos nmeros cualesquiera a y b, en funcin de sus o u o respectivas mitades:
2 ab = al bl Bk + (al br + ar bl )Bk + ar br
k k

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 propiedad: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

86

7. Aritmtica Entera de Mltiple Precisin e u o

al br + ar bl = al br + ar bl + al bl al bl + ar br ar br = (al + ar )(bl + br ) al bl ar br quedando nalmente, lo siguiente: x = al bl y = (al + ar )(bl + br ) z = ar br

2 ab = xBk + (y x z)Bk + z

Hemos reducido los cuatro productos y tres sumas del principio a tres productos y seis sumas. Como es lgico, esta tcnica debe emplearse dentro de una estrategia divide y vencers. o e a

7.2.4.

Divisin o

El algoritmo ms simple para dividir dos nmeros se consigue a partir de su representacin a u o binaria: cociente_bin(unsigned *c, unsigned *d, unsigned *a, unsigned *b) { Calcular a= c div d b= c mod d Bits_Significativos(x) => Siendo x un digito, devuelve el numero de bits de los digitos quitando los ceros de la izquierda. 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); 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; } } Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

7.2. Operaciones aritmticas sobre enteros largos e

87

El funcionamiento del algoritmo es extremadamente simple: copiamos el dividendo 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 operacin sucesivamente se obtiene el cociente en a y el resto en b. A modo o de ejemplo, dividiremos 37 (100101) entre 7 (111): 1. b = 100101; 2. b = 100101; 3. b = 001001; 4. b = 001001; 5. b = 010 Este algoritmo resulta muy lento, ya que opera a nivel de bit, por lo que intentaremos encontrar otro ms rpido aunque con el mismo orden de eciencia. Nos basaremos en el a a algoritmo tradicional de la divisin. Suponiendo que queremos dividir c por d, obteniendo su o cociente (a) y resto (b), iremos calculando cada d gito del cociente en base B de un solo golpe. Nuestro objetivo ser estimar a la baja el valor de cada uno de los d a gitos a, e incrementarlo hasta alcanzar el valor correcto. Para que la estimacin se quede lo ms cerca posible del o a valor correcto efectuaremos una normalizacin de los nmeros, de forma que el d o u gito ms a signicativo d tenga su bit de mayor peso a 1. Esto se consigue multiplicando c y d por 2k , siendo k el nmero de ceros a la izquierda del bit ms signicativo del divisor d. Posteriormente u a habremos de tener en cuenta lo siguiente: c = ad + b 2k c = a(2k d) + 2k b luego el cociente ser el mismo pero el resto habr que dividirlo por el factor de normalizacin. a a o Llamaremos c, d a los valores de c y d normalizados. Para hacer la estimacin a la baja de los ai , dividiremos cj B+cj1 por dm +1 (cj es el d o gito ms signicativo de c en el paso i, y dm es el d a gito ms signicativo de d). Luego actualizamos a c con c dai B i y vamos incrementando ai (y actualizando c) mientras nos quedemos cortos. Finalmente, habremos calculado el valor del cociente (a) y el valor del resto ser a b 2k a = ; a = 0 ; a = 01 ; a = 010; d1 = 111000; d1 = 11100; d1 = 110; d1 = 111; b > d1 a = 0 b > d1 a = 01

b > d1 a = 010 b > d1 a = 0101

b= El algoritmo podr quedar como sigue: a

cociente(unsigned *c, unsigned *d, unsigned *a, unsigned *b) { /* Calcular a= c div d Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

88 b= c mod d

7. Aritmtica Entera de Mltiple Precisin e u o

Digito_Mas_Significativo(a) => Devuelve el valor del digito de mayor peso de a. Bits_Significativos(x) => Siendo x un digito, devuelve el numero de bits de los digitos quitando los ceros de la izquierda. 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 */ /* La estimacion es el primer digito significativo de cc */

ai=cc[i+Digitos(dd)];

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 */

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

7.3. Aritmtica modular con enteros largos e cc=cc-ai*dd*pow(B,i); /* Restar a cc */

89

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*B^i, */

{ 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 = 3F BA2, y d = 47: 1. Normalizacin: multiplicamos por 2 y nos queda c = 7F 744, d = 8E o 2. a2 = 7F div 9 = E; c = c a2 dB 2 = 7F 744 7C400 = 3344 Puesto que c < dB 2 = 8E00, no hay que incrementar a2 . 3. a1 = 33 div 9 = 5; c = c a1 dB = 3344 2C60 = 6E4 Puesto que c < dB = 8E0, no hay que incrementar a1 . 4. a0 = 6E div 9 = C; c = c a0 d = 6E4 6A8 = 3C Puesto que c < d = 8E, tampoco hay que incrementar a0 5. a = E5C; b =
c 2

= 1E

7.3.

Aritmtica modular con enteros largos e

Los algoritmos criptogrcos de llave pblica ms extendidos se basan en operaciones a u a modulares sobre enteros muy largos. Empleando los algoritmos del apartado 7.2 son inmediatas las operaciones de suma, resta y multiplicacin mdulo n. La divisin habremos de tratarla o o o de manera diferente. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

90

7. Aritmtica Entera de Mltiple Precisin e u o Para sumar dos nmeros mdulo n basta con efectuar su suma entera y, si el resultado u o es mayor que n, restar el mdulo. o Para restar basta con sumar el mdulo n al minuendo, restarle el sustraendo, y si el o resultado es mayor que n, restar el mdulo. o El producto se lleva a cabo multiplicando los factores y tomando el resto de dividir el resultado por el mdulo. o La divisin habremos de implementarla multiplicando el dividendo por la inversa del o divisor. Para calcular la inversa de un nmero mdulo n basta con emplear el Algoritu o mo Extendido de Euclides, sustituyendo las operaciones elementales por llamadas a las operaciones con enteros largos descritas en la seccin 7.2. o

7.4.

Ejercicios Propuestos

1. Efecte el trazado del algoritmo de la divisin con B = 8 para calcular el siguiente u o cociente: c = 35240, d = 234. 2. La tcnica divide y vencers se basa en subdividir el problema y aplicar recursivamente e a el algoritmo en cuestin hasta llegar a un umbral m o nimo, a partir del cual la tcnica no e recursiva es ms eciente. Implemente el algoritmo de la multiplicacin mediante esta a o tcnica y calcule su umbral correspondiente. e 3. Elabore la especicacin de una Estructura de Datos que permita almacenar nmeros o u enteros largos y dena sus primitivas bsicas. a 4. Proponga una especicacin para la estructura del ejercicio anterior y discuta su ecieno cia.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 8

Criptograf y N meros Aleatorios a u


Los algoritmos de llave pblica, debido a su mayor orden de complejidad, suelen ser emu pleados en conjuncin con algoritmos de llave privada de la siguiente forma (ver cap o tulo 12): el mensaje primero se codica empleando un algoritmo simtrico y la llamada clave de sesin, e o que ser diferente cada vez. Es la clave de sesin la que se codica empleando criptograf a o a asimtrica. La unica manera de que estas claves sean seguras es que no exista ningn tipo e u de dependencia entre una clave y la siguiente, esto es, que sean aleatorias. De aqu surge el inters por los nmeros aleatorios en Criptograf e u a. Seguro que el lector conoce generadores pseudoaleatorios y diferentes tests de aleatoriedad como el denominado test 2 , que puede ser consultado en casi cualquier libro de Estad stica. Los generadores tradicionales no nos permiten calcular secuencias realmente aleatorias, puesto que conociendo un nmero obtenido con el generador podemos determinar u cualquiera de los posteriores recordemos que cada elemento de la secuencia se emplea como semilla para el siguiente. Si bien las series que producen estos generadores superan los test estad sticos de aleatoriedad, son totalmente previsibles, y esa condicin es inadmisible para o aplicaciones criptogrcas. Un famoso ejemplo de este problema ocurri en una de las primeras a o versiones de Netscape, que resultaba insegura debido al uso de un generador pseudoaleatorio demasiado previsible. En este cap tulo vamos a caracterizar diferentes tipos de secuencias aleatorias, as como su inters en Criptograf Tambin veremos cmo implementar un buen generador aleatorio e a. e o util desde el punto de vista criptogrco. a

8.1.
8.1.1.

Tipos de Secuencias Aleatorias


Secuencias pseudoaleatorias

En realidad es casi del todo imposible generar secuencias autnticamente aleatorias en e una computadora, puesto que estas mquinas son al menos en teor a a completamente Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

92

8. Criptograf y Nmeros Aleatorios a u

deterministas. Todos los generadores pseudoaleatorios producen secuencias nitas y peridicas o de nmeros empleando operaciones aritmticas y/o lgicas. Lo unico que podremos conseguir u e o es que estas secuencias sean lo ms largas posible antes de comenzar a repetirse y que superen a los tests estad sticos de aleatoriedad. En este sentido podr amos hablar de: Secuencias estad sticamente aleatorias: Secuencias que superan los tests estad sticos de aleatoriedad. Un generador congruencial lineal1 cumple esta propiedad, pero en Criptograf ser del a a todo intil, debido a que cada valor de la secuencia se emplea como semilla para calcular el u 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 sesin y usamos o un generador de este tipo. Bastar con que una de las claves quedara comprometida para a que todas las comunicaciones pasadas y futuras pudieran ser descifradas sin problemas. Incluso se ha demostrado que conociendo unicamente un bit de cada valor de la secuencia, sta puede ser recuperada completamente con una cantidad relativamente pequea de valores. e n

8.1.2.

Secuencias criptogrcamente aleatorias a

El problema de las secuencias estad sticamente aleatorias, y lo que las hace poco utiles en Criptograf es que son completamente predecibles. Deniremos, por tanto: a, Secuencias criptogrcamente aleatorias: Para que una secuencia pseudoaleatoria sea a criptogrcamente aleatoria, ha de cumplir la propiedad de ser impredecible. Esto quiea re decir que debe ser computacionalmente intratable el problema de averiguar el siguiente nmero de la secuencia, teniendo total conocimiento acerca de todos los nmeros anteu u riores y del algoritmo de generacin empleado. o Existen generadores pseudoaleatorios criptogrcamente resistentes que cumplen esta proa piedad. Sin embargo no son sucientes para nuestros propsitos, debido a que se necesita una o semilla para inicializar el generador. Si un atacante lograra averiguar la semilla que estamos empleando en un momento dado, podr de nuevo comprometer nuestro sistema. Necesitamos a para ella valores realmente impredecibles, de forma que nuestro adversario no pueda averiguarlos ni tratar de simular el proceso de generacin que nosotros hemos llevado a cabo. o Necesitamos, pues, valores autnticamente aleatorios. e

8.1.3.

Secuencias totalmente aleatorias

Como ya se ha dicho antes, no existe la aleatoriedad cuando se habla de computadoras. En realidad se puede decir que no existen en el Universo sucesos cien por cien aleatorios. En
Un generador congruencial lineal opera segn la expresin an+1 = (an b + c) md m, donde a0 es la semilla u o o pseudoaleatoria y b, c y m son los parmetros del generador. a
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

8.2. Generacin de Secuencias Aleatorias Criptogrcamente Vlidas o a a

93

cualquier caso, y a efectos prcticos, consideraremos un tercer tipo de secuencias pseudoaleaa torias: Secuencias aleatorias: Diremos que una secuencia es totalmente aleatoria (o simplemente aleatoria) si no puede ser reproducida de manera able. Llegados a este punto parece claro que nuestro objetivo no va a ser generar secuencias aleatorias puras, sino ms bien secuencias impredecibles e irreproducibles. Ser suciente, pues, a a con emplear un generador criptogrcamente aleatorio alimentado por una semilla totalmente a aleatoria.

8.2.

Generacin de Secuencias Aleatorias Criptogrcamente o a Vlidas a

Para poder obtener secuencias a la vez impredecibles e irreproducibles, haremos uso de generadores de secuencias criptogrcamente aleatorias, en conjuncin con algn mecanismo a o u de recoleccin de bits aleatorios, que nos va a permitir inicializar la semilla del generador. Un o esquema de este tipo ser seguro siempre que se salvaguarde adecuadamente la semilla empleaa da. Comentaremos en primer lugar algunos mecanismos para obtener los bits de la semilla, y despus nos centraremos en los generadores criptogrcamente aleatorios propiamente dichos. e a

8.2.1.

Obtencin de Bits Aleatorios o

Como hemos dicho antes, las operaciones aritmticas y lgicas que realiza una computadora e o son completamente deterministas. Sin embargo, los ordenadores, como veremos a continuacin, o poseen elementos menos deterministas que pueden ser utiles para nuestros propsitos. o Para obtener n bits aleatorios bastar con que una persona lanzara una moneda al aire a n veces y nos fuera diciendo el resultado. En la actualidad apenas hay computadores que incorporen hardware espec co para esta tarea, aunque existe y ser bastante barato y sencillo a incorporarlo a la arquitectura de cualquier ordenador. Existen valores obtenidos del hardware de la computadora que suelen proporcionar algunos bits de aleatoriedad. Parece razonable que leer en un momento dado el valor de un reloj interno de alta precisin proporcione un resultado ms o menos impredecible, por lo que o a podr amos 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 hemos de tener mucho cuidado con esto. Algunas veces se ha propuesto el uso de los nmeros de serie de los componentes f u sicos (hardware) de un sistema, pero recordemos que estos nmeros tienen una estructura muy u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

94

8. Criptograf y Nmeros Aleatorios a u

r gida, y a veces conociendo simplemente el fabricante y la fecha aproximada de fabricacin o podemos adivinar casi todos sus d gitos, por lo que van a ser demasiado predecibles. Tampoco son utiles las fuentes pblicas de informacin, como por ejemplo los bits de un u o 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 posicin que escojamos dentro del CD para extraer o los bits. Fuentes Adecuadas de Obtencin de Bits Aleatorios o Cuando no disponemos de un elemento f sico en la computadora espec camente diseado n para producir datos aleatorios, podemos emplear algunos dispositivos hardware relativamente comunes en los ordenadores actuales: Tarjetas digitalizadoras de sonido o v deo. Un dispositivo digitalizador de audio (o v deo) sin ninguna entrada conectada, siempre que tenga ganancia suciente, capta esencialmente ruido trmico, con una distribucin aleatoria, y por lo tanto puede ser apto para e o nuestros propsitos. o Unidades de Disco. Las unidades de disco presentan pequeas uctuaciones en su velon cidad de giro debido a turbulencias en el aire. Si se dispone de un mtodo para medir el e tiempo de acceso de la unidad con suciente precisin, se pueden obtener bits aleatorios o de la calidad necesaria. Si no se dispone de una fuente able de bits aleatorios se puede efectuar la combinacin o de varias fuentes de informacin menos ables. Por ejemplo, podr o amos leer el reloj del sistema, algn identicador del hardware, la fecha y la hora locales, el estado de los registros u de interrupciones del sistema, etc. Esto garantizar que en total se ha recogido una cantidad a suciente de bits realmente aleatorios. La mezcla de todas esas fuentes puede proporcionarnos suciente aleatoriedad para nuestros propsitos. Teniendo en cuenta que el nmero de bits realmente aleatorios que se obtendrn o u a como resultado nal del proceso ha de ser necesariamente menor que el nmero de bits recogido u inicialmente, hemos de buscar un mecanismo para llevar a cabo esa combinacin. Emplearemos o a tal efecto las denominadas funciones de mezcla fuertes. Una funcin de mezcla es aquella que toma dos o ms fuentes de informacin y produce o a o una salida en la que cada bit es una funcin compleja y no lineal de todos los bits de la entrada. o Por trmino medio, modicar un bit en la entrada deber alterar aproximadamente la mitad e a de los bits de salida. Podemos emplear diferentes algoritmos criptogrcos para construir este a tipo de funciones: Algoritmos Simtricos (ver cap e tulo 10). Un algoritmo simtrico de cifrado puede ser e util como funcin de mezcla de la siguiente forma: supongamos que usa una clave de n o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

8.2. Generacin de Secuencias Aleatorias Criptogrcamente Vlidas o a a

95

bits, y que tanto su entrada como su salida 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 seccin 13.1) . Una funcin resumen puede ser empleada para o o obtener un nmero jo de bits a partir de una cantidad arbitraria de bits de entrada. u

8.2.2.

Eliminacin del Sesgo o

En la mayor de los casos, los bits obtenidos de las fuentes aleatorias estn sesgados, a a es decir, que hay ms unos que ceros o viceversa. Esta situacin no es deseable, puesto que a o necesitamos una fuente aleatoria no sesgada, que presente igual probabilidad tanto para el 0 como para el 1. Como veremos a continuacin, esta circunstancia no constituye un problema o serio, ya que existen diversas tcnicas para solucionarla. e Bits de Paridad Si tenemos una secuencia de valores cero y uno, con un sesgo arbitrario, podemos emplear el bit de paridad2 de la secuencia para obtener una distribucin con una desviacin tan pequea o o n 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 comprobar que las probabilidades para el bit de paridad de los n primeros bits valen r= 1 ((p + q)n + (p q)n ) 2 s= 1 ((p + q)n (p q)n ) 2

donde r ser la probabilidad de que el bit de paridad sea 0 1 dependiendo de si n es par o a o impar. Puesto que p + q = 1 y p q = 2d, tenemos 1 r = (1 + (2d)n ) 2 Siempre que n > 1 s = (1 (2d)n ) 2

log2 (2 ) el sesgo de la paridad ser menor que , por lo que bastar con a a log2 (2d) 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.
El bit de paridad de una secuencia vale 1 si el nmero de unos de dicha secuencia es par (paridad impar) u o impar (paridad par).
2

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

96 Mtodo de Von Neumann e

8. Criptograf y Nmeros Aleatorios a u

El mtodo que propuso Von Neumann para eliminar el sesgo de una cadena de bits consiste e 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 dar a lugar a 1.1.0.0.1.1.1. Es fcil comprobar que, siendo d el sesgo de la distribucin inicial a o P (01) = P (10) = (0,5 + d)(0,5 d) por lo que la cadena de bits resultantes presenta exactamente la misma probabilidad tanto para el 0 como para el 1. El problema de este mtodo es que no sabemos a priori cuntos bits e a de informacin sesgada necesitamos para obtener cada bit de informacin no sesgada. o o Uso de Funciones Resumen Si calculamos la entrop de una secuencia sesgada (ecuacin 3.2, pgina 40), obtendremos a o a el nmero n de bits reales de informacin que transporta. Entonces podremos aplicar una u o funcin resumen y quedarnos exactamente con los n bits menos signicativos del resultado o obtenido. Veamos un ejemplo: sea una secuencia de 300 bits con una probabilidad P (1) = 0,99. La entrop de cada bit ser a a H = 0,99 log2 (0,99) 0,01 log2 (0,01) = 0,08079 bits Luego los 300 bits originales aportarn 300 0,08079 24 bits de informacin real. Podea o mos calcular la rma MD5 o SHA de dicha secuencia y considerar los 24 bits menos signicativos del resultado como bits aleatorios vlidos. a

8.2.3.

Generadores Aleatorios Criptogrcamente Seguros a

Suponiendo que ya tenemos una cantidad suciente de bits autnticamente aleatorios (ime predecibles e irreproducibles), vamos a ver un par de generadores pseudoaleatorios que permiten obtener secuencias lo sucientemente seguras como para ser empleadas en aplicaciones criptogrcas. a Generador X9.17 Propuesto por el Instituto Nacional de Estndares Norteamericano, permite, a partir de a una semilla inicial s0 de 64 bits, obtener secuencias de valores tambin de 64 bits. El algoritmo e para obtener cada uno de los valores gn de la secuencia es el siguiente: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

8.2. Generacin de Secuencias Aleatorias Criptogrcamente Vlidas o a a

97

gn = DES(k, DES(k, t) sn ) sn+1 = DES(k, DES(k, t) gn ) donde k es una clave aleatoria reservada para la generacin de cada secuencia, y t es el tiempo o en el que cada valor es generado cuanta ms resolucin tenga (hasta 64 bits), mejor. a o DES(K, M ) representa la codicacin de M mediante el algoritmo DES, empleando la clave o K, y representa la funcin or-exclusivo. Ntese que el valor k ha de ser mantenido en secreto o o para que la seguridad de este generador sea mxima. a Generador Blum Blum Shub Es quiz el algoritmo que ms pruebas de resistencia ha superado, con la ventaja adicional a a de su gran simplicidad aunque es computacionalmente mucho ms costoso que el algoritmo a X9.17. Consiste en escoger dos nmeros primos grandes, p y q, que cumplan la siguiente u propiedad: p 3(md 4) o q 3(md 4) o

Sea entonces n = pq. Escogemos un nmero x aleatorio primo relativo con n, que ser nuestra u a semilla inicial. Al contrario que x, que debe ser mantenido en secreto, n puede ser pblico. u Calculamos los valores si de la serie de la siguiente forma: s0 = (x2 )(md n) o si+1 = (s2 )(md n) o i Hay que tener cuidado de emplear unicamente como salida unos pocos de los bits menos signicativos de cada si . De hecho, si cogemos no ms que log2 (log2 (si )) bits en cada caso a podemos asegurar que predecir el siguiente valor de la serie es al menos tan dif como cil factorizar n.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

98

8. Criptograf y Nmeros Aleatorios a u

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Parte III

Criptograf de Llave Privada a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 9

Criptograf Clsica a a
El ser humano siempre ha tenido secretos de muy diversa ndole, y ha buscado mecanismos para mantenerlos fuera del alcance de miradas indiscretas. Julio Csar empleaba un sencillo e algoritmo para evitar que sus comunicaciones militares fueran interceptadas. Leonardo Da Vinci escrib las anotaciones sobre sus trabajos de derecha a izquierda y con la mano zurda. a Otros personajes, como Sir Francis Bacon o Edgar Allan Poe eran conocidos por su acin a o los cdigos criptogrcos, que en muchas ocasiones constitu un apasionante divertimento o a an y un reto para el ingenio. En este cap tulo haremos un breve repaso de los mecanismos criptogrcos considerados a clsicos. Podemos llamar as a todos los sistemas de cifrado anteriores a la II Guerra Mundial, a o lo que es lo mismo, al nacimiento de las computadoras. Estas tcnicas tienen en comn que e u pueden ser empleadas usando simplemente lpiz y papel, y que pueden ser criptoanalizadas a casi de la misma forma. De hecho, con la ayuda de las computadoras, los mensajes cifrados empleando estos cdigos son fcilmente descifrables, por lo que cayeron rpidamente en desuso. o a a La transicin desde la Criptograf clsica a la moderna se da precisamente durante la II o a a Guerra Mundial, cuando el Servicio de Inteligencia aliado rompe la mquina de cifrado del a ejrcito alemn, llamada ENIGMA. e a Todos los algoritmos criptogrcos clsicos son simtricos, ya que hasta mediados de los a a e aos setenta no naci la Criptograf asimtrica, y por esa razn este cap n o a e o tulo se engloba dentro del bloque de la asignatura dedicado a los algoritmos de llave privada.

9.1.

Algoritmos Clsicos de Cifrado a

Estudiaremos en esta seccin algunos criptosistemas que en la actualidad han perdido o su ecacia, debido a que son fcilmente criptoanalizables empleando cualquier computadora a domstica, pero que fueron empleados con xito hasta principios del siglo XX. Algunos se e e remontan incluso, como el algoritmo de Csar, a la Roma Imperial. Sin embargo mantienen e Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

102

9. Criptograf Clsica a a

un inters terico, ya que nos van a permitir explotar algunas de sus propiedades para entender e o mejor los algoritmos modernos.

9.1.1.

Cifrados Monoalfabticos e

Se engloban dentro de este apartado todos los algoritmos criptogrcos que, sin desordenar a los s mbolos dentro del mensaje, establecen una correspondencia unica para todos ellos en todo el texto. Es decir, si al s mbolo A le corresponde el s mbolo D, esta correspondencia se mantiene a lo largo de todo el mensaje.

Algoritmo de Csar e El algoritmo de Csar, llamado as porque es el que empleaba Julio Csar para enviar e e mensajes secretos, es uno de los algoritmos criptogrcos ms simples. Consiste en sumar 3 a a al nmero de orden de cada letra. De esta forma a la A le corresponde la D, a la B la E, y u as sucesivamente. Si asignamos a cada letra un nmero (A = 0,B = 1. . . ), y consideramos un u alfabeto de 26 letras, la transformacin criptogrca ser o a a: C = (M + 3) md 26 o obsrvese que este algoritmo ni siquiera posee clave, puesto que la transformacin siempre es e o la misma. Obviamente, para descifrar basta con restar 3 al nmero de orden de las letras del u criptograma.

Sustitucin Af o n Es el caso general del algoritmo de Csar. Su transformacin ser e o a: E(a,b) (M ) = (aM + b) md N o siendo a y b dos nmeros enteros menores que el cardinal N del alfabeto, y cumpliendo que u mcd(a, N ) = 1. La clave de cifrado k viene entonces dada por el par (a, b). El algoritmo de Csar ser pues una transformacin af con k = (1, 3). e a o n

Cifrado Monoalfabtico General e Es el caso ms general de cifrado monoalfabtico. La sustitucin ahora es arbitraria, siendo a e o la clave k precisamente la tabla de sustitucin de un s o mbolo por otro. En este caso tenemos N ! posibles claves. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

9.1. Algoritmos Clsicos de Cifrado a Criptoanlisis de los Mtodos de Cifrado Monoalfabticos a e e

103

El cifrado monoalfabtico constituye la familia de mtodos ms simple de criptoanalizar, e e a puesto que las propiedades estad sticas del texto claro se conservan en el criptograma. Supongamos que, por ejemplo, la letra que ms aparece en Castellano es la A. Parece lgico que la a o letra ms frecuente en el texto codicado sea aquella que corresponde con la A. Emparejando a las frecuencias relativas de aparicin de cada s o mbolo en el mensaje cifrado con el histograma de frecuencias del idioma en el que se supone est el texto claro, podremos averiguar fcilmente a a la clave. En el peor de los casos, es decir, cuando tenemos un emparejamiento arbitrario, la Distancia de Unicidad de Shannon que obtenemos es: H(K) log2 (N !) = D D

S=

(9.1)

donde D es la redundancia del lenguaje empleado en el mensaje original, y N es el nmero u de s mbolos de dicho lenguaje. Como es lgico, suponemos que las N ! claves diferentes son o equiprobables en principio. En casos ms restringidos, como el af el criptoanlisis es an ms simple, puesto que a n, a u a el emparejamiento de todos los s mbolos debe responder a alguna combinacin de coecientes o (a, b).

9.1.2.

Cifrados Polialfabticos e

En los cifrados polialfabticos la sustitucin aplicada a cada carcter var en funcin de la e o a a o posicin que ocupe ste dentro del texto claro. En realidad corresponde a la aplicacin c o e o clica de n cifrados monoalfabticos. e

Cifrado de Vig`nere e Es un ejemplo t pico de cifrado polialfabtico que debe su nombre a Blaise de Vig`nere, e e su creador, y que data del siglo XVI. La clave est constituida por una secuencia de s a mbolos K = {k0 , k1 , . . . kd1 }, y que emplea la siguiente funcin de cifrado: o

Ek (mi ) = mi + k(i

md d) o

(md n) o

siendo mi el isimo s e mbolo del texto claro y n el cardinal del alfabeto de entrada. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

104 Criptoanlisis a

9. Criptograf Clsica a a

Para criptoanalizar este tipo de claves basta con efectuar d anlisis estad a sticos independientes agrupando los s mbolos segn la ki empleada para codicarlos. Para estimar d, u buscaremos la periodicidad de los patrones comunes que puedan aparecer en el texto cifrado. Obviamente, para el criptoanlisis, necesitaremos al menos d veces ms cantidad de texto que a a con los mtodos monoalfabticos. e e

9.1.3.

Cifrados por Sustitucin Homofnica o o

Para paliar la sensibilidad frente a ataques basados en el estudio de las frecuencias de aparicin de los s o mbolos, existe una familia de algoritmos que trata de ocultar las propiedades estad sticas del texto claro empleando un alfabeto de salida con ms s a mbolos que el alfabeto de entrada. Supongamos que nuestro alfabeto de entrada posee cuatro letras, {a, b, c, d}. Supongamos adems que en nuestros textos la letra a aparece con una probabilidad 0.4, y el resto con a probabilidad 0.2. Podr amos emplear el siguiente alfabeto de salida {, , , , } efectuando la siguiente asociacin: o con probabilidad 1/2 con probabilidad 1/2

E(a) = E(b) = E(c) = E(d) =

En el texto cifrado ahora todos los s mbolos aparecen con igual probabilidad, lo que imposibilita un ataque basado en frecuencias. A diferencia de lo que se puede pensar en un principio, este mtodo presenta demasiados inconvenientes para ser util en la prctica: adems del proe a a blema de necesitar un alfabeto de salida mayor que el de entrada, para aplicarlo hace falta conocer la distribucin estad o stica a priori de los s mbolos en el texto claro, informacin de la o que, por desgracia, no siempre se dispone.

9.1.4.

Cifrados de Transposicin o

Este tipo de mecanismos de cifrado no sustituye unos s mbolos por otros, sino que cambia su orden dentro del texto. Quizs el ms antiguo conocido sea el escitalo, formado por un a a bastn cil o ndrico con un radio particular y una tira de piel que se enrollaba alrededor de aqul. El texto se escrib a lo largo del bastn y slo pod ser le si se dispon de otro e a o o a do a bastn de dimensiones similares. Un mecanismo de transposicin sencillo, que no precisa otra o o cosa que lpiz y papel, podr consistir en colocar el texto en una tabla de n columnas, y dar a a como texto cifrado los s mbolos de una columna ordenados de arriba a abajo concatenados Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

9.2. Mquinas de Rotores. La Mquina ENIGMA a a

105

con los de otra, etc. La clave k se compondr del nmero n junto con el orden en el que se a u 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 permutacin {3, 2, 5, 1, 4} como clave. Colocamos el texto en una tabla o y obtenemos: 1 E R E E T 2 L R R I R 3 O S O N E A 4 P A Q O N B 5 E D N U E O

Tendr amos como texto cifrado la concatenacin de las columnas 3,2,5,1 y 4 respectivao mente: Osonealr r irednu eoere et p aqonb. Ntese que hemos de conservar el espacio al o principio del texto cifrado para que el mecanismo surta efecto.

Criptoanlisis a Este tipo de mecanismos de cifrado se puede criptoanalizar efectuando un estudio estad stico sobre la frecuencia de aparicin de pares y tripletas de s o mbolos en el lenguaje en que est escrito el texto claro. Suponiendo que conocemos n, que en nuestro caso es igual a e 5, tenemos 5! = 120 posibles claves. Descifrar amos el texto empleando cada una de ellas y comprobar amos si los pares y tripletas de s mbolos consecutivos que vamos obteniendo se corresponden con los ms frecuentes en Castellano. De esa forma podremos asignarle una a probabilidad automticamente a cada una de las posibles claves. a Si, por el contrario, desconocemos n, basta con ir probando con n = 2, n = 3 y as su cesivamente. Este mtodo es bastante complejo de llevar a cabo manualmente, a no ser que e se empleen ciertos trucos, pero una computadora puede completarlo en un tiempo ms que a razonable sin demasiados problemas.

9.2.

Mquinas de Rotores. La Mquina ENIGMA a a

En el ao 1923, un ingeniero alemn llamado Arthur Scherbius patent una mquina esn a o a pec camente diseada para facilitar las comunicaciones seguras. Se trataba de un instrumento n de apariencia simple, parecido a una mquina de escribir. Quien deseara codicar un mensaje a slo ten que teclearlo y las letras correspondientes al mensaje cifrado se ir iluminando o a an en un panel. El destinatario copiaba dichas letras en su propia mquina y el mensaje original a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

106

9. Criptograf Clsica a a

Figura 9.1: Esquema de la mquina Enigma. a

aparec de nuevo. La clave la constitu las posiciones iniciales de tres tambores o rotores a an que el ingenio pose en su parte frontal. a En la gura 9.1 podemos apreciar un esquema de esta mquina, llamada ENIGMA. Los a rotores no son ms que tambores con contactos en su supercie y cableados en su interior, a de forma que con cada pulsacin del teclado, la posicin de stos determina cul es la letra o o e a que se ha de iluminar. Cada vez que se pulsa una tecla el primer rotor avanza una posicin; o el segundo avanza cuando el anterior ha dado una vuelta completa y as sucesivamente. El reector no exist en los primeros modelos, se introdujo posteriormente para permitir que la a misma mquina sirviera tanto para cifrar como para descifrar, como veremos ms adelante. a a

9.2.1.

Un poco de Historia

ENIGMA pronto llam la atencin del ejrcito alemn, que la utiliz de forma intensiva a lo o o e a o largo de la II Guerra Mundial. Adems se le aplicaron varias mejoras, como incluir un pequeo a n sistema previo de permutacin, llamado stecker que permit escoger seis pares de letras para o a ser intercambiadas previamente al cifrado, hacer que los rotores fueran intercambiables se pod elegir y colocar en cualquier orden tres de entre cinco disponibles, e incluso ampliar an a cuatro el nmero de rotores. u Aunque ENIGMA parec virtualmente imposible de romper, presentaba una serie de a debilidades, tanto en su diseo como en los mecanismos empleados para utilizarla, que fueron n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

9.2. Mquinas de Rotores. La Mquina ENIGMA a a

107

aprovechadas por el ejrcito aliado. El primero en conseguir avances signicativos fue el servicio e de inteligencia polaco, ya que en 1931 los franceses, en virtud de un acuerdo de cooperacin o rmado diez aos antes, les facilitaron informacin detallada sobre la mquina1 , que ellos a n o a su vez hab obtenido sobornando a un miembro de la ocina de cifras alemana. De hecho, an los esp franceses consideraban esta informacin totalmente intil, ya que pensaban que as o u ENIGMA era, sencillamente, indescifrable. El conocimiento preciso de la mquina permiti a un equipo de tres matemticos (Marian a o a Rejewski, Jerzy Rozycki y Henryk Zygalski) elaborar un mecanismo para aprovechar una debilidad, no en la mquina en s sino en el protocolo empleado por el ejrcito alemn para a , e a colocar los rotores al principio de cada mensaje. Dicho protocolo consist en escoger una a posicin de un libro de claves, y enviar tres letras cualesquiera dos veces, para evitar posibles o errores. En realidad se estaba introduciendo una redundancia tal en el mensaje que permit a obtener sin demasiados problemas la clave empleada. Se construy un aparato que permit o a descifrar los mensajes, y se le bautiz como Ciclmetro. o o En 1938 Alemania cambi el protocolo, lo cual oblig a los matemticos polacos a renar o o a su sistema, aunque bsicamente se segu enviando tres letras repetidas. No vamos a entrar a an en detalles, pero el ataque se basaba en buscar ciertas conguraciones de la mquina, con a propiedades espec cas. Estas conguraciones especiales daban una informacin vital sobre la o posicin inicial de los rotores para un mensaje concreto. Se construy entonces una versin o o o mejorada del ciclmetro, llamada Bomba, que era capaz de encontrar estas conguraciones de o forma automtica. Sin embargo, a nales de ese mismo ao se introdujeron dos rotores adia n cionales, lo cual obligaba a emplear sesenta bombas simultneamente para romper el sistema. a Polonia simplemente carec de medios econmicos para afrontar su construccin. a o o Los polacos entonces pusieron en conocimiento de los servicios secretos britnico y francs a e sus progresos, esperando poder establecer una v de colaboracin para seguir descifrando los a o mensajes germanos, pero la invasin de Polonia era inminente. Tras destruir todas las pruebas o que pudieran indicar al ejrcito alemn el xito polaco frente a ENIGMA, el equipo de Ree a e jewski huy precipitadamente, transportando lo que pudieron salvar en varios camiones. Tras o pasar por Ruman e Italia, y tener que quemar todos los camiones por el camino excepto uno, a llegaron a Par donde colaboraron con un equipo de siete espaoles expertos en criptograf s, n a, liderados por un tal Camazn. Cuando al ao siguiente Alemania invadi Francia el nuevo o n o equipo tuvo que huir a Africa, y posteriormente instalarse en Montpellier, donde reanudaron sus trabajos. En 1942, la entrada alemana en Vichy forz a los matemticos a escapar o a de nuevo, los polacos a Espaa (donde muri Rozycki), y los espaoles a Africa, donde se n o n perdi denitivamente su pista. o Cuando el equipo de Rejewski lleg por n a Inglaterra, ya no se le consider seguro, o o al haber estado en contacto con el enemigo, y se le conaron unicamente trabajos menores. Mientras tanto, en Bletchley Park, Alan Turing desarrollaba una segunda Bomba basndose a en los estudios del polaco, ms evolucionada y rpida que su antecesora, en el marco del a a
En anteriores ediciones de este libro se mencionaba el env por error a Polonia de una mquina, pero o a parece que se trata simplemente de una leyenda.
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

108

9. Criptograf Clsica a a

proyecto ULTRA britnico, que se encargaba de recoger informacin acerca de los sistemas de a o comunicaciones germanos. En su desarrollo particip tambin Max Von Neumann, y se llegaron o e a construir varios cientos de ellas. 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 puede coincidir con ninguna del texto cifrado. La Bomba de Turing part de una palabra adivinada en contra de las normas de uso de ENIGMA, la mayor de a a los mensajes que enviaba el ejrcito alemn comenzaban de igual forma, lo cual facilit la tarea e a o 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 coincidieran en ninguna letra. A partir de ah la Bomba realizaba una bsqueda exhaustiva de la conguracin inicial u o de la mquina para decodicar el mensaje, mediante un ingenioso sistema que permit ignorar a a la posicin del stecker. o Un hecho bastante poco conocido es que Alemania regal al rgimen de Franco casi una o e veintena de mquinas ENIGMA, que fueron utilizadas para comunicaciones secretas hasta a entrados los aos cincuenta, suponemos que para regocijo de los servicios de espionaje britnico n a y norteamericano.

9.2.2.

Consideraciones Tericas Sobre la Mquina ENIGMA o a

Observemos que un rotor no es ms que una permutacin dentro del alfabeto de entrada. a o 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 permutacin como , o podemos escribir que la permutacin resultante de combinar todos los rotores en un instante o dado es:
1 1 1 total = 0 , 1 , 2 , 3 , 2 , 1 , 0 1 La permutacin 3 corresponde al reector, y debe cumplir que 3 = 3 , es decir, que o aplicada dos veces nos d lo mismo que ten e amos al principio. De esta forma se cumple la propiedad de que, para una misma posicin de los rotores, la codicacin y la decodicacin o o o son simtricas. e

La fuerza de la mquina ENIGMA radicaba en que tras codicar cada letra se giran los a rotores, lo cual hace que la permutacin que se aplica a cada letra sea diferente, y que esa o permutacin adems no se repita hasta que los rotores recuperen su posicin inicial. Tengamos o a o en cuenta que hay 17576 posiciones iniciales de los rotores, 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 combinaciones, existe una cantidad enorme de posibles disposiciones iniciales del la mquina aproximadamente 1017 . La potencia del mtodo de criptoanlisis a e a empleado radica en que se pod identicar un emparejamiento vlido entre el criptograma y a a el texto claro, e ignorar la posicin del stecker, de forma que slo bastaba con rastrear dentro o o del espacio de posibles conguraciones para encontrar aquella que llevara a cabo la transformacin esperada. No disponer de dicho emparejamiento hubiera complicado enormemente el o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

9.2. Mquinas de Rotores. La Mquina ENIGMA a a criptoanlisis, tal vez hasta el punto de hacerlo fracasar. a

109

9.2.3.

Otras Mquinas de Rotores a

Adems de la mquina alemana ENIGMA, existieron otros dispositivos criptogrcos baa a a sados en rotores. Estos dispositivos son mucho menos conocidos por diversas razones. La mquina SIGABA, empleada por el ejrcito norteamericano, de la cual apenas se conoce a e nada por razones obvias. Tambin citaremos las mquinas japonesas empleadas en la II Guerra Mundial, que se e a denominaron PURPLE y RED, cuyas caracter sticas son secretas o desconocidas. De hecho los norteamericanos declararon no haber tenido nunca ocasin de capturar nada ms que un o a ejemplar, concretamente en la embajada japonesa tras la toma de Berl n.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

110

9. Criptograf Clsica a a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 10

Cifrados por Bloques


10.1. Cifrado de producto

La gran mayor de los algoritmos de cifrado simtricos se apoyan en los conceptos de a e confusin y difusin inicialmente propuestos por Shannon (ver seccin 3.8), que se combinan o o o para dar lugar a los denominados cifrados de producto. Estas tcnicas consisten bsicamente e a en trocear el mensaje en bloques de tamao jo, y aplicar la funcin de cifrado a cada uno de n o ellos. Recordemos que la confusin consiste en tratar de ocultar la relacin que existe entre o o el texto claro, el texto cifrado y la clave. Un buen mecanismo de confusin har demasiado o a complicado extraer relaciones estad sticas entre las tres cosas. Por su parte la difusin trata de o repartir la inuencia de cada bit del mensaje original lo ms posible entre el mensaje cifrado. a Hemos de hacer notar que la confusin por s sola ser suciente, ya que si establecemos o a una tabla de sustitucin completamente diferente para cada clave con todos los textos claros o posibles tendremos un sistema extremadamente seguro. Sin embargo, dichas tablas ocupar an cantidades astronmicas de memoria, por lo que en la prctica ser inviables. Por ejemplo, o a an un algoritmo que codicara bloques de 128 bits empleando una clave de 80 bits necesitar a 63 entradas. una tabla de aproximadamente 10 Lo que en realidad se hace para conseguir algoritmos fuertes sin necesidad de almacenar tablas enormes es intercalar la confusin (sustituciones simples, con tablas pequeas) y la o n difusin (permutaciones). Esta combinacin se conoce como cifrado de producto. La mayor o o a de los algoritmos se basan en diferentes capas de sustituciones y permutaciones, estructura que denominaremos Red de Sustitucin-Permutacin. En muchos casos el criptosistema no es o o ms que una operacin combinada de sustituciones y permutaciones, repetida n veces, como a o ocurre con DES. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

112

10. Cifrados por Bloques

L0
f

R0

K1

L1 L n1
f

R1 R n1

Kn

Ln

Rn

Figura 10.1: Estructura de una red de Feistel.

10.1.1.

Redes de Feistel

Muchos de los cifrados de producto tienen en comn que dividen un bloque de longitud n u 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 segn la relacin (ver gura 10.1): u o

Li = Ri1 Ri = Li1 f (Ri1 , Ki ) Ln = Ln1 f (Rn1 , Kn ) Rn = Rn1

si i < n. (10.1)

Este tipo de estructura se denomina Red de Feistel, y es empleada en multitud de algoritmos, como DES, Lucifer, FEAL, CAST, Blowsh, etctera. Tiene la interesante propiedad de e que para invertir la funcin de cifrado es decir, para descifrar basta con aplicar el mismo o algoritmo, pero con las Ki en orden inverso. Ntese, adems, que esto ocurre independienteo a mente de cmo sea la funcin f . o o Podemos emplear la induccin matemtica 1 para comprobar esta propiedad. Sea En (L, R) o a la funcin de cifrado para una red de Feistel de n rondas y Dn (L, R) la funcin de descifrao o do anloga. Desdoblaremos cada funcin en sus bloques izquierdo y derecho y los denotarea o L R L R mos con super ndices, En (L, R), En (L, R), Dn (L, R) y Dn (L, R) . Hemos de demostrar que L L R R L R Dn (En (L, R), En (L, R)) = L y Dn (En (L, R), En (L, R)) = R para cualquier valor de n.
1

Este principio nos garantiza que si demostramos el caso n = 1, y luego demostramos el caso n+1 suponiendo cierto el caso n, la propiedad en cuestin ha de cumplirse para cualquier valor de n igual o superior a 1 o

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

10.1. Cifrado de producto Si n = 1 tenemos:

113

L E1 (A, B) = A f (B, K1 ) R (A, B) = B E1 y L D1 (A, B) = A f (B, K1 ) R D1 (A, B) = B

luego
L L R L R D1 E1 (L, R), E1 (L, R) = E1 (L, R) f E1 (L, R), K1 =

= L f (R, K1 ) f (R, K1 ) = L y
R L R R D1 E1 (L, R), E1 (L, R) = E1 (L, R) = R

Suponiendo que se cumple el caso n, demostrar el caso n + 1: Ntese en primer lugar que cifrar con n + 1 rondas equivale a hacerlo con n rondas, o permutar el resultado y aplicar el paso n + 1 de cifrado segn la relacin 10.1: u o
L R L En+1 (L, R) = En (L, R) f En (L, R), Kn+1 R L En+1 (L, R) = En (L, R)

El descifrado con n + 1 ser igual a aplicar el primer paso del algoritmo con Kn+1 y a luego descifrar el resultado con n rondas: Dn+1 (A, B) = Dn B, A f (B, Kn+1 ) Haciendo que A y B sean ahora el resultado de cifrar con n + 1 rondas tenemos:
L R R L R Dn+1 En+1 (L, R), En+1 (L, R) = Dn En+1 (L, R), En+1 (L, R) f (En+1 (L, R), Kn+1 ) L R Sustituyendo En+1 (L, R) y En+1 (L, R) en la parte derecha de la anterior expresin nos o queda: L R Dn+1 En+1 (L, R), En+1 (L, R) = L R L L = Dn En (L, R), En (L, R) f (En (L, R), Kn+1 ) f (En (L, R), Kn+1 )

o sea,
L L R Dn+1 En+1 (L, R), En+1 (L, R) R R L Dn+1 En+1 (L, R), En+1 (L, R) L L R = Dn En (L, R), En (L, R) = L R L R = Dn En (L, R), En (L, R) = R

con lo que naliza nuestra demostracin. o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

114

10. Cifrados por Bloques

10.1.2.

Cifrados con Estructura de Grupo

Otra de las cuestiones a tener en cuenta en los cifrados de producto es la posibilidad de que posean estructura de grupo. Se dice que un cifrado tiene estructura de grupo si se cumple la siguiente propiedad: k1 , k2 k3 tal que Ek2 (Ek1 (M )) = Ek3 (M ) (10.2)

esto es, si hacemos dos cifrados encadenados con k1 y k2 , existe una clave k3 que realiza la transformacin equivalente. o Es interesante que un algoritmo criptogrco carezca de este tipo de estructura, ya que a si ciframos un mensaje primero con la clave k1 y el resultado con la clave k2 , es como si hubiramos empleado una clave de longitud doble, aumentando la seguridad del sistema. Si, e por el contrario, la transformacin criptogrca presentara estructura de grupo, esto hubiera o a sido equivalente a cifrar el mensaje una unica vez con una tercera clave, con lo que no habr amos ganado nada.

10.1.3.

S-Cajas

Hemos dicho antes que para poder construir buenos algoritmos de producto, intercalaremos sustituciones sencillas (confusin), con tablas pequeas, y permutaciones (difusin). Estas o n o tablas pequeas de sustitucin se denominan de forma genrica S-Cajas. n o e Una S-Caja de m*n bits (ver gura 10.2) es una tabla de sustitucin que toma como o 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 utilizacin de las S-Cajas es sencilla: se divide el bloque original en o 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 ms grandes sean las S-Cajas, ms resistente ser el a a a algoritmo resultante, aunque la eleccin de los valores de salida para que den lugar a un buen o algoritmo no es en absoluto trivial. Existe un algoritmo criptogrco, llamado CAST, que emplea seis S-Cajas de 8*32 bits. a CAST codica bloques de 64 bits empleando claves de 64 bits, consta de ocho rondas y deposita prcticamente toda su fuerza en las S-Cajas. De hecho, existen muchas variedades de CAST, a cada una con sus S-Cajas correspondientes algunas de ellas secretas. Este algoritmo se ha demostrado resistente a las tcnicas habituales de criptoanlisis, y slo se conoce la fuerza e a o bruta como mecanismo para atacarlo.

10.2.

El Algoritmo DES

Es el algoritmo simtrico ms extendido mundialmente. Se basa en el algoritmo LUCIFER, e a que hab sido desarrollado por IBM a principios de los setenta, y fue adoptado como estndar a a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.2. El Algoritmo DES

115

32 bits

SCaja 8x6

SCaja 8x6

SCaja 8x6

SCaja 8x6

SCaja 8x6

24 bits

Figura 10.2: A: S-Caja individual. B: combinacin de cuatro S-Cajas. o

por el Gobierno de los EE.UU. para comunicaciones no clasicadas en 1976. En realidad la NSA lo dise para ser implementado por hardware, creyendo que los detalles iban a ser no mantenidos en secreto, pero la Ocina Nacional de Estandarizacin public su especicacin o o o con suciente detalle como para que cualquiera pudiera implementarlo por software. No fue casualidad que el siguiente algoritmo adoptado (Skipjack ) fuera mantenido en secreto. A mediados de 1998, se demostr que un ataque por la fuerza bruta a DES era viable, o debido a la escasa longitud que emplea en su clave. No obstante, el algoritmo an no ha u demostrado ninguna debilidad grave desde el punto de vista terico, por lo que su estudio o 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, ms dos permutaciones, una que se aplica al principio (Pi ) y otra que se a 1 aplica al nal (Pf ), tales que Pi = Pf . La funcin f (gura 10.3) se compone de una permutacin de expansin (E), que convierte o o o el bloque de 32 bits correspondiente en uno de 48. Despus realiza un or-exclusivo con el valor e Ki , tambin de 48 bits, aplica ocho S-Cajas de 6*4 bits, y efecta una nueva permutacin P . e u o Se calcula un total de 16 valores de Ki (gura 10.4), uno para cada ronda, efectuando primero una permutacin inicial EP1 sobre la clave de 64 bits, llevando a cabo desplazamientos o a la izquierda de cada una de las dos mitades de 28 bits resultantes, y realizando nalmente una eleccin permutada (EP2) de 48 bits en cada ronda, que ser la Ki . Los desplazamientos o a a la izquierda son de dos bits, salvo para las rondas 1, 2, 9 y 16, en las que se desplaza slo un o bit. Ntese que aunque la clave para el algoritmo DES tiene en principio 64 bits, se ignoran o ocho de ellos un bit de paridad por cada byte de la clave, por lo que en la prctica se usan a slo 56 bits. o
1 Para descifrar basta con usar el mismo algoritmo (ya que Pi = Pf ) empleando las Ki en

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

116

10. Cifrados por Bloques

Ri (32 bits) E 48 bits Ki (48 bits)

SCaja

SCaja

SCaja

SCaja

SCaja

SCaja

SCaja

SCaja

P 32 bits

Figura 10.3: Esquema de la funcin f del algoritmo DES. o

K (64 bits)

EP1

L0 (28 bits)

R0 (28 bits)

<<

<< K1 (48 bits) EP2

<<

<< K16 (48 bits) EP2

Figura 10.4: Clculo de las Ki para el algoritmo DES. EP1 representa la primera eleccin a o permutada, que slo conserva 56 bits de los 64 de entrada, y EP2 representa la segunda, que o se queda con 48 bits. El signo << representa un desplazamiento de bits a la izquierda (uno o dos dependiendo de la ronda).

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

10.3. Variantes de DES Clave 0101010101010101 1F1F1F1F0E0E0E0E E0E0E0E0F1F1F1F1 FEFEFEFEFEFEFEFE Clave tras aplicar EP1 0000000 0000000 0000000 FFFFFFF FFFFFFF 0000000 FFFFFFF FFFFFFF

117

Cuadro 10.1: Claves dbiles para el algoritmo DES (64 bits), expresadas en hexadecimal. e

Clave 01FE01FE01FE01FE FE01FE01FE01FE01 1FE01FE00EF10EF1 E01FE01FF10EF10E 01E001E001F101F1 E001E001F101F101 1FFE1FFE0EFE0EFE FE1FFE1FFE0EFE0E 011F011F010E010E 1F011F010E010E01 E0FEE0FEF1FEF1FE FEE0FEE0FEF1FEF1

Clave tras aplicar EP1 AAAAAAA AAAAAAA 5555555 5555555 AAAAAAA 5555555 5555555 AAAAAAA AAAAAAA 0000000 5555555 0000000 AAAAAAA FFFFFFF 5555555 FFFFFFF 0000000 AAAAAAA 0000000 5555555 FFFFFFF AAAAAAA FFFFFFF 5555555

Cuadro 10.2: Claves semi-dbiles para el algoritmo DES (64 bits), expresadas en hexadecimal. e

orden inverso.

10.2.1.

Claves Dbiles en DES e

El algoritmo DES presenta algunas claves dbiles. En general, todos aquellos valores de la e llave que conducen a una secuencia inadecuada de Ki sern poco recomendables. Distinguirea mos entre claves dbiles (cuadro 10.1), que son aquellas que generan un conjunto de diecisis e e valores iguales de Ki y que cumplen Ek (Ek (M )) = M , y claves semidbiles (cuadro 10.2), e que generan dos valores diferentes de Ki , cada uno de los cuales aparece ocho veces. En cualquier caso, el nmero de llaves de este tipo es tan pequeo en comparacin con el nmero u n o u total de posibles claves, que no debe suponer un motivo de preocupacin. o

10.3.

Variantes de DES

A mediados de julio de 1998, una empresa sin nimo de lucro, llamada EFF (Electronic a Frontier Foundation), logr fabricar una mquina capaz de descifrar un mensaje DES en meo a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

118

10. Cifrados por Bloques

nos de tres d Curiosamente, pocas semanas antes, un alto cargo de la NSA hab declarado as. a que dicho algoritmo segu siendo seguro, y que descifrar un mensaje resultaba an excesivaa u mente costoso, incluso para organizaciones gubernamentales. DES-Cracker cost menos de 40 o millones de pesetas. A pesar de su ca da, DES sigue siendo ampliamente utilizado en multitud de aplicaciones, como por ejemplo las transacciones de los cajeros automticos. De todas formas, el problema a real de DES no radica en su diseo, sino en que emplea una clave demasiado corta (56 bits), lo n cual hace que con el avance actual de las computadoras 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 sobrevivir durante veinte aos sin mostrar ninguna debilidad en su n diseo, y preeren proponer variantes que, de un lado evitar el riesgo de tener que conar n an en algoritmos nuevos, y de otro permitir aprovechar gran parte de las implementaciones an por hardware existentes de DES.

10.3.1.

DES M ltiple u

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 (ecuacin 10.2). El ms comn o a u de todos ellos es el Triple-DES, que responde a la siguiente estructura:
1 C = Ek1 (Ek2 (Ek1 (M )))

es decir, codicamos con la subclave k1 , decodicamos con k2 y volvemos a codicar con k1 . La clave resultante es la concatenacin de k1 y k2 , con una longitud de 112 bits. o

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 tendr 768 bits en total. No es nuestro a objetivo entrar en detalles, pero empleando criptoanlisis diferencial, esta variante podr ser a a rota con 261 textos claros escogidos, por lo que en la prctica no presenta un avance sustancial a sobre DES estndar. a

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 tamao de mensaje que se puede codicar, n manteniendo sin embargo el orden de complejidad del algoritmo. Se ha demostrado sin embargo que no slo se gana poco en seguridad, sino que en muchos casos incluso se pierde. o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.4. El algoritmo IDEA

119

10.3.4.

DES con S-Cajas Alternativas

Consiste en utilizar S-Cajas diferentes a las de la versin original de DES. En la prctica o a 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 tcnicas e de criptoanlisis que no fueron conocidas fuera de la NSA hasta muchos aos despus de la a n e aparicin del algoritmo. o

10.4.

El algoritmo IDEA

El algoritmo IDEA (International Data Encryption Algorithm) es bastante ms joven que a DES, pues data de 1992. Para muchos constituye el mejor y ms seguro algoritmo simtrico a e 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 criptoanlisis diferencial. No presenta claves dbiles2 , y su longitud a e de clave hace imposible en la prctica un ataque por la fuerza bruta. a Como ocurre con todos los algoritmos simtricos de cifrado por bloques, IDEA se basa en e los conceptos de confusin y difusin, haciendo uso de las siguientes operaciones elementales o o (todas ellas fciles de implementar): a XOR. Suma mdulo 216 . o Producto mdulo 216 + 1. o El algoritmo IDEA consta de ocho rondas. Dividiremos el bloque X a codicar, de 64 bits, en cuatro partes X1 , X2 , X3 y X4 de 16 bits. Para la interpretacin entera de dichos registros o se emplear el criterio big endian, lo cual signica que el primer byte es el ms signicativo. a a Denominaremos Zi 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 X1 por Z1 . 2. Sumar X2 con Z2 . 3. Sumar X3 con Z3 .
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 296 , por lo que no representan un peligro real.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

120 4. Multiplicar X4 por Z4 . 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 Z5 . 8. Sumar los resultados de los pasos 6 y 7. 9. Multiplicar el resultado del paso 8 por Z6 . 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.

10. Cifrados por Bloques

La salida de cada iteracin sern los cuatro sub-bloques obtenidos en los pasos 11, 12, 13 y o a 14, que sern la entrada del siguiente ciclo, en el que emplearemos las siguientes seis subclaves, a 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). Despus de la octava iteracin, se realiza la siguiente transformacin: e o o 1. Multiplicar X1 por Z49 . 2. Sumar X2 con Z50 . 3. Sumar X3 con Z51 . 4. Multiplicar X4 por Z52 . 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 Zi y calculando sus inversas para la suma o la multiplicacin, segn el cuadro 10.3. Puesto que 216 + 1 es un o u nmero primo, nunca podremos obtener cero como producto de dos nmeros, por lo que u u no necesitamos representar dicho valor. Cuando estemos calculando productos, utilizaremos el cero para expresar el nmero 216 un uno seguido de 16 ceros. Esta representacin u o es coherente puesto que los registros que se emplean internamente en el algoritmo poseen unicamente 16 bits. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.5. El algoritmo Rijndael (AES) Ronda 1 2 3 4 5 6 7 8 Final Subclaves Z2 Z3 Z8 Z9 Z14 Z15 Z20 Z21 Z26 Z27 Z32 Z33 Z38 Z39 Z44 Z45 Z50 Z51 de Cifrado Z4 Z5 Z10 Z11 Z16 Z17 Z22 Z23 Z28 Z29 Z34 Z35 Z40 Z41 Z46 Z47 Z52 Subclaves de Descifrado 1 Z50 Z51 Z52 Z47 1 Z45 Z44 Z46 Z41 1 Z39 Z38 Z40 Z35 1 Z33 Z32 Z34 Z29 1 Z27 Z26 Z28 Z23 1 Z21 Z20 Z22 Z17 1 Z15 Z14 Z16 Z11 1 Z9 Z8 Z10 Z5 1 Z2 Z3 Z4

121

Z1 Z7 Z13 Z19 Z25 Z31 Z37 Z43 Z49

Z6 Z12 Z18 Z24 Z30 Z36 Z42 Z48

1 Z49 1 Z43 1 Z37 1 Z31 1 Z25 1 Z19 1 Z13 1 Z7 1 Z1

Z48 Z42 Z36 Z30 Z24 Z18 Z12 Z6

Cuadro 10.3: Subclaves empleadas en el algoritmo IDEA

10.5.

El algoritmo Rijndael (AES)

En octubre de 2000 el NIST (National Institute for Standards and Technology) anunciaba ocialmente la adopcin del algoritmo Rijndael (pronunciado ms o menos como reindal3 ) coo a mo nuevo Estndar Avanzado de Cifrado (AES) para su empleo en aplicaciones criptogrcas a a no militares, culminando as un proceso de ms de tres aos, encaminado a proporcionar a a n la comunidad internacional un nuevo algoritmo de cifrado potente, eciente, y fcil de implea mentar. DES ten por n un sucesor. a La palabra Rijndael en adelante, para referirnos a este algoritmo, emplearemos la denominacin AES es un acrnimo formado por los nombres de sus dos autores, los belgas o o Joan Daemen y Vincent Rijmen. Su inters radica en que todo el proceso de seleccin, revie o sin y estudio tanto de este algoritmo como de los restantes candidatos, se ha efectuado de o forma pblica y abierta, por lo que, prcticamente por primera vez, toda la comunidad cripu a togrca mundial ha participado en su anlisis, lo cual convierte a Rijndael en un algoritmo a a perfectamente digno de la conanza de todos. AES es un sistema de cifrado por bloques, diseado para manejar longitudes de clave y n de bloque variables, ambas comprendidas entre los 128 y los 256 bits. Realiza varias de sus operaciones internas a nivel de byte, interpretando stos como elementos de un cuerpo de e 8 ) (ver seccin 5.8.1). El resto de operaciones se efect an en trminos de registros Galois GF (2 o u e de 32 bits. Sin embargo, en algunos casos, una secuencia de 32 bits se toma como un polinomio de grado inferior a 4, cuyos coecientes son a su vez polinomios en GF (28 ). Si bien, como ya se ha dicho, este algoritmo soporta diferentes tamaos de bloque y clave, n en el estndar adoptado por el Gobierno Estadounidense en noviembre de 2001 (FIPS PUB a 197), se especica una longitud ja de bloque de 128 bits (Nb = 4, como se ver ms adelante), a a y la longitud de clave a escoger entre 128, 192 y 256 bits.
3

Gracias a Sven Magnus por la aclaracin. o

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

122 a0,0 a1,0 a2,0 a3,0 a0,1 a1,1 a2,1 a3,1 a0,2 a1,2 a2,2 a3,2 a0,3 a1,3 a2,3 a3,3 a0,4 a1,4 a2,4 a3,4

10. Cifrados por Bloques

Cuadro 10.4: Ejemplo de matriz de estado con Nb =5 (160 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 composicin de cuatro funciones invertibles o diferentes, formando tres capas, diseadas para proporcionar resistencia frente a criptoanlisis n a lineal y diferencial. Cada una de las funciones tiene un propsito preciso: o La capa de mezcla lineal funciones DesplazarFila y MezclarColumnas permite obtener un alto nivel de difusin a lo largo de varias rondas. o La capa no lineal funcin ByteSub consiste en la aplicacin paralela de s-cajas con o o propiedades ptimas de no linealidad. o La capa de adicin de clave es un simple or-exclusivo entre el estado intermedio y la o subclave correspondiente a cada ronda.

10.5.2.

Elementos de AES

AES es un algoritmo que se basa en aplicar un nmero determinado de rondas a un valor u intermedio que se denomina estado. Dicho estado puede representarse mediante una matriz rectangular de bytes, que posee cuatro las, y Nb columnas. As por ejemplo, si nuestro bloque , tiene 160 bits (cuadro 10.4), Nb ser igual a 5. a La llave tiene una estructura anloga a la del estado, y se representar mediante una tabla a a con cuatro las y Nk columnas. Si nuestra clave tiene, por ejemplo, 128 bits, Nk ser igual a 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 a0,0 , a1,0 , a2,0 , a3,0 , a0,1 . . ., y anlogamente, los bytes de la a clave se copian sobre la matriz de clave en el mismo orden, a saber, k0,0 , k1,0 , k2,0 , k3,0 , k0,1 . . .. Siendo B el bloque que queremos cifrar, y S la matriz de estado, el algoritmo AES con n rondas queda como sigue: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.5. El algoritmo Rijndael (AES) k0,0 k1,0 k2,0 k3,0 k0,1 k1,1 k2,1 k3,1 k0,2 k1,2 k2,2 k3,2 k0,3 k1,3 k2,3 k3,3

123

Cuadro 10.5: Ejemplo de clave con Nk =4 (128 bits). Nb = 4 (128 bits) 10 12 14 Nb = 6 (192 bits) 12 12 14 Nb = 8 (256 bits) 14 14 14

Nk = 4 (128 bits) Nk = 6 (192 bits) Nk = 8 (256 bits)

Cuadro 10.6: Nmero de rondas para AES en funcin de los tamaos de clave y bloque. u o n

1. Calcular K0 , K1 , . . . Kn subclaves a partir de la clave K. 2. S B K0 3. Para i = 1 hasta n hacer 4. Aplicar ronda isima del algoritmo con la subclave Ki . e

Puesto que cada ronda es una sucesin de funciones invertibles, el algoritmo de descifrado o consistir en aplicar las inversas de cada una de las funciones en el orden contrario, y utilizar a los mismos Ki que en el cifrado, slo que comenzando por el ultimo. o

10.5.3.

Las Rondas de AES

Puesto que AES permite emplear diferentes longitudes tanto de bloque como de clave, el nmero de rondas requerido en cada caso es variable. En el cuadro 10.6 se especica cuntas u a rondas son necesarias en funcin de Nb y Nk . o Siendo S la matriz de estado, y Ki la subclave correspondiente a la ronda isima, cada e una de las rondas posee la siguiente estructura: 1. S ByteSub(S) 2. S DesplazarFila(S) 3. S MezclarColumnas(S) 4. S Ki S La ultima ronda es igual a las anteriores, pero eliminando el paso 3. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

124 Nb 4 6 8 c1 1 1 1 c2 2 2 3 c3 3 3 4

10. Cifrados por Bloques

Cuadro 10.7: Valores de ci segn el tamao de bloque Nb u n

Funcin ByteSub o La transformacin ByteSub es una sustitucin no lineal que se aplica a cada byte de la o o matriz de estado, mediante una s-caja 8*8 invertible, que se obtiene componiendo dos transformaciones: 1. Cada byte es considerado como un elemento del GF (28 ) que genera el polinomio irreducible m(x) = x8 + x4 + x3 + x + 1, y sustituido por su inversa multiplicativa. El valor cero queda inalterado. 2. Despus se aplica la siguiente transformacin af en GF (2), siendo x0 , x1 , . . . , x7 los e o n bits del byte correspondiente, e y0 , y1 , . . . , y7 los del resultado: y0 y1 y2 y3 y4 y5 y6 y7 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 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 x0 x1 x2 x3 x4 x5 x6 x7 1 1 0 0 0 1 1 0

La funcin inversa de ByteSub ser la aplicacin de la inversa de la s-caja correspondiente o a o a cada byte de la matriz de estado.

Funcin DesplazarFila o Esta transformacin consiste en desplazar a la izquierda c o clicamente las las de la matriz de estado. Cada la fi se desplaza un nmero de posiciones ci diferente. Mientras que c0 u siempre es igual a cero (esta la siempre permanece inalterada), el resto de valores viene en funcin de Nb y se reeja en el cuadro 10.7. o La funcin inversa de DesplazarFila ser, obviamente, un desplazamiento de las las de la o a matriz de estado el mismo nmero de posiciones que en el cuadro 10.7, pero a la derecha. u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.5. El algoritmo Rijndael (AES) Funcin MezclarColumnas o

125

Para esta funcin, cada columna del vector de estado se considera un polinomio cuyos o coecientes pertenecen a GF (28 ) es decir, son tambin polinomios y se multiplica mdulo e o 4 + 1 por: x c(x) = 03x4 + 01x2 + 01x + 02 donde 03 es el valor hexadecimal que se obtiene concatenando los coecientes binarios del polinomio correspondiente en GF (28 ), en este caso 00000011, o sea, x + 1, y as sucesivamente. La inversa de MezclarColumnas se obtiene multiplicando cada columna de la matriz de estado por el polinomio: d(x) = 0Bx4 + 0Dx2 + 09x + 0E

10.5.4.

Clculo de las Subclaves a

Las diferentes subclaves Ki se derivan de la clave principal K mediante el uso de dos funciones: una de expansin y otra de seleccin. Siendo n el nmero de rondas que se van a o o u aplicar, la funcin de expansin permite obtener, a partir del valor de K, una secuencia de o o 4 (n + 1) Nb bytes. La seleccin simplemente toma consecutivamente de la secuencia obtenida o bloques del mismo tamao que la matriz de estado, y los va asignando a cada Ki . n Sea K(i) un vector de bytes de tamao 4 Nk , conteniendo la clave, y sea W (i) un vector n de Nb (n + 1) registros de 4 bytes, siendo n el nmero de rondas. La funcin de expansin u o o tiene dos versiones, segn el valor de Nk : u a) Si Nk 6: 1. Para i desde 0 hasta Nk 1 hacer 2. 4. 5. 6. 7. W (i) (K(4 i), K(4 i + 1), K(4 i + 2), K(4 i + 3)) tmp W (i 1) Si i md Nk = 0 o tmp Sub(Rot(tmp)) R(i/Nk ) W (i) W (i Nk ) tmp 3. Para i desde Nk hasta Nb (n + 1) hacer

b) Si Nk > 6: 1. Para i desde 0 hasta Nk 1 hacer 2. W (i) (K(4 i), K(4 i + 1), K(4 i + 2), K(4 i + 3)) 3. Para i desde Nk hasta Nb (n + 1) hacer Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

126 4. 5. 6. 7. 8. 9. tmp W (i 1) Si i md Nk = 0 o tmp Sub(Rot(tmp)) Rc(i/Nk ) Si i md Nk = 4 o tmp Sub(tmp) W (i) W (i Nk ) tmp

10. Cifrados por Bloques

En los algoritmos anteriores, la funcin Sub devuelve el resultado de aplicar la s-caja de o AES a cada uno de los bytes del registro de cuatro que se le pasa como parmetro. La funcin a o Rot desplaza a la izquierda una posicin los bytes del registro, de tal forma que si le pasamos o como parmetro el valor (a, b, c, d) nos devuelve (b, c, d, a). Finalmente, Rc(j) es una constante a denida de la siguiente forma: Rc(j) = (R(j), 0, 0, 0) Cada R(i) es el elemento de GF (28 ) correspondiente al valor x(i1) .

10.5.5.

Seguridad de AES

Segn sus autores, es altamente improbable que existan claves dbiles o semidbiles en u e e AES, debido a la estructura de su diseo, que busca eliminar la simetr en las subclaves. n a Tambin se ha comprobado que es resistente a criptoanlisis tanto lineal como diferencial (ver e a seccin 10.7). En efecto, el mtodo ms eciente conocido hasta la fecha para recuperar la clave o e a a partir de un par texto cifrado-texto claro es la bsqueda exhaustiva, por lo que podemos u considerar a este algoritmo uno de los ms seguros en la actualidad. a

10.6.

Modos de Operacin para Algoritmos de Cifrado por o Bloques

En esta seccin comentaremos algunos mtodos para aplicar cifrados por bloques a mensao e jes de gran longitud. En primer lugar, independientemente del mtodo empleado para codicar, e hemos de tener en cuenta lo que ocurre cuando la longitud de la cadena que queremos cifrar no es un mltiplo exacto del tamao de bloque. Entonces tenemos que aadir informacin u n n o al nal para que s lo sea. El mecanismo ms sencillo consiste en rellenar con ceros (o algn a u otro patrn) el ultimo bloque que se codica. El problema ahora consiste en saber cuando se o descifra por dnde hay que cortar. Lo que se suele hacer es aadir como ultimo byte del ultimo o n bloque el nmero de bytes que se han aadido (ver gura 10.5). Esto tiene el inconveniente de u n que si el tamao original es mltiplo del bloque, hay que alargarlo con otro bloque entero. Por n u ejemplo, si el tamao de bloque fuera 64 bits, y nos sobraran cinco bytes al nal, aadir n n amos dos ceros y un tres, para completar los ocho bytes necesarios en el ultimo bloque. Si por contra no sobrara nada, tendr amos que aadir siete ceros y un ocho. n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.6. Modos de Operacin para Algoritmos de Cifrado por Bloques o

127

0 0

0 0 0

0 0 0

5 4 8

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.1.

Modo ECB

El modo ECB (Electronic Codebook) es el mtodo ms sencillo y obvio de aplicar un e a algoritmo de cifrado por bloques. Simplemente se subdivide la cadena que se quiere codicar en bloques del tamao adecuado y se cifran todos ellos empleando la misma clave. n A favor de este mtodo podemos decir que permite codicar los bloques independientee mente de su orden, lo cual es adecuado para codicar bases de datos o cheros en los que se requiera un acceso aleatorio. Tambin es resistente a errores, pues si uno de los bloques e sufriera una alteracin, el resto quedar intacto. o a Por contra, si el mensaje presenta patrones repetitivos, el texto cifrado tambin los pree sentar, y eso es peligroso, sobre todo cuando se codica informacin muy redundante (como a o cheros de texto), o con patrones comunes al inicio y nal (como el correo electrnico). Un o contrincante puede en estos casos efectuar un ataque estad stico y extraer bastante informacin. o Otro riesgo bastante importante que presenta el modo ECB es el de la sustitucin de o 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 comunicacin de la que se conozca el contenido, como por ejemplo una transaccin bancaria a nuestra o o cuenta corriente. Luego se escuchan otras comunicaciones y se sustituyen los bloques correspondientes al nmero de cuenta del beneciario de la transaccin por la versin codicada de u o o nuestro nmero (que ni siquiera nos habremos molestado en descifrar). En cuestin de horas u o nos habremos hecho ricos.

10.6.2.

Modo CBC

El modo CBC (Cipher Book Chaining Mode) incorpora un mecanismo de retroalimentacin o en el cifrado por bloques. Esto signica que la codicacin de bloques anteriores condiciona la o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

128

10. Cifrados por Bloques

M i1

Mi

M i+1

C i1

Ci

C i+1

EK

EK

EK

DK

DK

DK

C i1

Ci

C i+1

M i1

Mi

M i+1

A.

B.

Figura 10.6: Modo de operacin CBC. A: codicacin, B: decodicacin. o o o

codicacin del bloque actual, por lo que ser imposible sustituir un bloque individual en el o a mensaje cifrado. Esto se consigue efectuando una operacin XOR entre el bloque del mensaje o que queremos codicar y el ultimo criptograma obtenido (ver gura 10.6). En cualquier caso, dos mensajes idnticos se codicarn de la misma forma usando el modo e a CBC. Ms an, dos mensajes que empiecen igual se codicarn igual hasta llegar a la primera a u a diferencia entre ellos. Para evitar esto se emplea un vector de inicializacin, que puede ser o un bloque aleatorio, como bloque inicial de la transmisin. Este vector ser descartado en o a destino, pero garantiza que siempre los mensajes se codiquen de manera diferente, aunque tengan partes comunes.

10.6.3.

Modo CFB

El modo CBC no empieza a codicar (o decodicar) hasta que no se tiene que transmitir (o se ha recibido) un bloque completo de informacin. Esta circunstancia puede convertirse en o un serio inconveniente, por ejemplo en el caso de terminales, que deber poder transmitir an cada carcter que pulsa el usuario de manera individual. Una posible solucin ser emplear a o a un bloque completo para transmitir cada byte y rellenar el resto con ceros, pero esto har que a tengamos unicamente 256 mensajes diferentes en nuestra transmisin y que un atacante pue o da efectuar un sencillo anlisis estad a stico para comprometerla. Otra opcin ser rellenar el o a bloque con informacin aleatoria, aunque seguir o amos desperdiciando gran parte del ancho de banda de la transmisin. El modo de operacin CFB (Cipher-Feedback Mode) permitir codio o a car la informacin en unidades inferiores al tamao del bloque, lo cual permite aprovechar o n totalmente la capacidad de transmisin del canal de comunicaciones, manteniendo adems un o a nivel de seguridad adecuado. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

10.6. Modos de Operacin para Algoritmos de Cifrado por Bloques o

129

R (p bits)
n n

...

c i1
n n n

Ek
n n

...

mi ci
Figura 10.7: Esquema del modo de operacin CFB. o

En la gura 10.7 podemos ver el esquema de funcionamiento de este modo de operacin. Sea o p el tamao de bloque del algoritmo simtrico, y sea n el tamao de los bloques que queremos n e n transmitir (n ha de divisor de p). Sea mi el isimo bloque del texto claro, de tamao n. e n Empleamos entonces un registro de desplazamiento R de longitud p y lo cargamos con un vector de inicializacin. Codicamos el registro R con el algoritmo simtrico y obtenemos en o e r sus n bits ms a la izquierda. El bloque que deberemos enviar es ci = r mi . Desplazamos a R n bits a la izquierda e introducimos ci por la derecha. Para descifrar basta con cargar el vector de inicializacin en R y codicarlo, calculando r. o Entonces mi = r ci . Desplazamos luego R e introducimos ci por la derecha como hac amos en el algoritmo de cifrado. Ntese que si n = p, el modo CFB queda reducido al modo CBC. o

10.6.4.

Otros Modos

Existen protocolos criptogrcos que no se basan en la transmisin de bloques, sino en un a o mecanismo secuencial de codicacin de streams de tamao variable. Estos algoritmos, que o n veremos con ms detalle en el cap a tulo 11, permiten cifrar un mensaje bit a bit de forma continua y enviar cada bit antes que el siguiente sea codicado. Funcionan a partir de lo que se llama un generador de secuencia de clave (keystream generator), un algoritmo que genera una clave continua de longitud innita (o muy grande) bit a bit. Lo que se hace es aplicar una operacin XOR entre cada bit del texto claro y cada bit de la clave. En el destino existe otro o generador idntico sincronizado para llevar a cabo el descifrado. El problema fundamental es e mantener ambos generadores sincronizados, para evitar errores si se pierde algn bit de la u transmisin. o Los algoritmos de codicacin por bloques pueden ser empleados como generadores de o secuencia de clave. Existen para ello otros modos de operacin de estos algoritmos, como o el OFB (Output-Feedback), que incorporan mecanismos para mantener la sincron entre los a generadores de secuencia origen y destino. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

130

10. Cifrados por Bloques

10.7.

Criptoanlisis de Algoritmos Simtricos a e

Se podr decir que el criptoanlisis se comenz a estudiar seriamente con la aparicin a a o o de DES. Mucha gente desconaba (y an desconf del algoritmo propuesto por la NSA. Se u a) dice que existen estructuras extraas, que muchos consideran sencillamente puertas traseras n colocadas por la Agencia para facilitarles la decodicacin de los mensajes. Nadie ha podido o an demostrar ni desmentir este punto. Lo unico cierto es que el inters por buscar posibles u e debilidades en l ha llevado a desarrollar tcnicas que posteriormente han tenido xito con e e e otros algoritmos. Ni que decir tiene que estos mtodos no han conseguido doblegar a DES, pero s repree sentan mecanismos signicativamente ms ecientes que la fuerza bruta para criptoanalizar a un mensaje. Los dos mtodos que vamos a comentar parten de que disponemos de grandes e cantidades de pares texto claro-texto cifrado obtenidos con la clave que queremos descubrir.

10.7.1.

Criptoanlisis Diferencial a

Descubierto por Biham y Shamir en 1990, permite efectuar un ataque de texto claro escogido a DES que resulta ms eciente que la fuerza bruta. Se basa en el estudio de los pares a de criptogramas que surgen cuando se codican dos textos claros con diferencias particulares, analizando la evolucin de dichas diferencias a lo largo de las rondas de DES. o Para llevar a cabo un criptoanlisis diferencial se toman dos mensajes cualesquiera (incluso a aleatorios) idnticos salvo en un nmero concreto de bits. Usando las diferencias entre los textos e u cifrados, se asignan probabilidades a las diferentes claves de cifrado. Conforme tenemos ms a y ms pares, una de las claves aparece como la ms probable. Esa ser la clave buscada. a a a

10.7.2.

Criptoanlisis Lineal a

El criptoanlisis lineal, descubierto por Mitsuru Matsui, basa su funcionamiento en tomar a algunos bits del texto claro y efectuar una operacin XOR entre ellos, tomar algunos del o texto cifrado y hacerles lo mismo, y nalmente hacer un XOR de los dos resultados anteriores, obteniendo un unico bit. Efectuando esa operacin a una gran cantidad de pares de texto claro o y criptograma diferentes podemos ver si se obtienen ms ceros o ms unos. a a Si el algoritmo criptogrco en cuestin es vulnerable a este tipo de ataque, existirn a o a combinaciones de bits que, bien escogidas, den lugar a un sesgo signicativo en la medida anteriormente denida, es decir, que el nmero de ceros (o unos) es apreciablemente superior. u Esta propiedad nos va a permitir poder asignar mayor probabilidad a unas claves sobre otras y de esta forma descubrir la clave que buscamos.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 11

Cifrados de Flujo
En 1917, J. Mauborgne y G. Vernam inventaron un criptosistema perfecto segn el criterio u de Shannon (ver seccin 3.8). Dicho sistema consist en emplear una secuencia aleatoria o a de igual longitud que el mensaje, que se usar una unica vez lo que se conoce en ingls a e como one-time pad, combinndola mediante alguna funcin simple y reversible usualmente a o el or exclusivo con el texto en claro carcter a carcter. Este mtodo presenta el grave a a e 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 no emplearlo para transmitir el mensaje directamente? e Evidentemente, un sistema de Vernam carece de utilidad prctica en la mayor de los a a casos, pero supongamos que disponemos de un generador pseudoaleatorio capaz de generar secuencias criptogrcamente aleatorias, de forma que la longitud de los posibles ciclos sea a extremadamente grande. En tal caso podr amos, empleando la semilla del generador como clave, obtener cadenas de bits de usar y tirar, y emplearlas para cifrar mensajes simplemente aplicando la funcin xor entre el texto en claro y la secuencia generada. Todo aquel que conozca o la semilla podr reconstruir la secuencia pseudoaleatoria y de esta forma descifrar el mensaje. a Uno de los primeros criptosistemas que explotaban la idea del generador pseudoaleatorio fue el cifrado de Lorenz, empleado por Alemania en la II Guerra Mundial, junto con la mquina a ENIGMA. Este sistema se basaba en un dispositivo que generaba una secuencia supuestamente imposible de reproducir sin conocimiento de la clave, que se combinaba con los mensajes para obtener los criptogramas. Por suerte para los expertos de Bletchley Park, estas secuencias presentaban una sutil estructura que pod ser analizada mediante tcnicas estad a e sticas. Para ello un equipo de ingenieros, entre los que se encontraba Max Von Neumann, puso en prctica a las ideas de Alan Turing y desarroll Colossus, el primer computador de la Historia, capaz de o descifrar los mensajes codicados mediante el sistema Lorenz. En este cap tulo analizaremos algunos criptosistemas de clave privada que explotan esta idea. Dichos algoritmos no son ms que la especicacin de un generador pseudoaleatorio, a o y permiten cifrar mensajes de longitud arbitraria, combinando el mensaje con la secuencia mediante la operacin or exclusivo byte a bye, en lugar de dividirlos en bloques para codicarlos o por separado. Como cabr esperar, estos criptosistemas no proporcionan seguridad perfecta, a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

132

11. Cifrados de Flujo

ya que mientras en el cifrado de Vernam el nmero de posibles claves era tan grande como el u de posibles mensajes, cuando empleamos un generador tenemos como mucho tantas secuencias distintas como posibles valores iniciales de la semilla.

11.1.

Secuencias Pseudoaleatorias

Como ve amos en el cap tulo 8, los generadores criptogrcamente aleatorios ten la proa an piedad de que, a partir de una porcin de la secuencia arbitrariamente grande, era computacioo nalmente intratable el problema de predecir el siguiente bit de la secuencia. Adicionalmente, dijimos que no eran buenos como generadores aleatorios debido a que el conocimiento de la semilla nos permitir regenerar la secuencia por completo. Evidentemente, en el caso que nos a ocupa, esta caracter stica se convertir en una ventaja, ya que es precisamente lo que necesia tamos: que por un lado no pueda calcularse la secuencia completa a partir de una porcin de o sta, y que a la vez pueda regenerarse completamente conociendo una pieza de informacin e o 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 parmetros que se empleen para calcular el valor de cada porcin a o de la secuencia. Comentaremos brevemente en esta seccin sus caracter o sticas bsicas. a

11.2.1.

Generadores S ncronos

Un generador s ncrono es aquel en el que la secuencia es calculada de forma independiente 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: si+1 = g(si , k) oi = h(si , k) ci = w(mi , oi )

(11.1)

Donde k es la clave, si es el estado interno del generador, s0 es el estado inicial, oi es la salida en el instante i, mi y ci son la isima porcin del texto claro y cifrado respectivamente, y e o w es una funcin reversible, usualmente or exclusivo. En muchos casos, la funcin h depende o o unicamente de si , siendo k = s0 . Cuando empleamos un generador de estas caracter sticas, necesitamos que tanto el emisor como el receptor estn sincronizados para que el texto pueda descifrarse. Si durante la transe misin se pierde o inserta algn bit, ya no se estar aplicando en el receptor un xor con la o u a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

11.3. Registros de Desplazamiento Retroalimentados

133

misma secuencia, por lo que el resto del mensaje ser imposible de descifrar. Esto nos obliga a a emplear tanto tcnicas de vericacin como de restablecimiento de la sincron e o a. Otro problema muy comn con este tipo de tcnicas es que si algn bit del criptograma u e u es alterado, la sincronizacin no se pierde, pero el texto claro se ver modicado en la misma o a posicin. Esta caracter o stica podr permitir a un atacante introducir cambios en nuestros a mensajes, simplemente conociendo qu bits debe alterar. Para evitar esto, deben empleare se mecanismos de vericacin que garanticen la integridad del mensaje recibido, como las o funciones resumen (ver seccin 13.1). o

11.2.2.

Generadores As ncronos

Un generador de secuencia as ncrono o auto-sincronizado es aquel en el que la secuencia generada es funcin de una semilla, ms una cantidad ja de los bits anteriores de la propia o a secuencia, como puede verse en la gura 11.1(b). Formalmente: oi = h(k, cit , cit+1 , . . . , ci1 ) ci = w(oi , mi )

(11.2)

Donde k es la clave, mi y ci son la isima porcin del texto claro y cifrado respectivamente e o y w es una funcin reversible. Los valores ct , ct+1 , . . . , c1 constituyen el estado inicial del o generador. Esta familia de generadores es resistente a la prdida o insercin de informacin, ya que e o o acaba por volver a sincronizarse de forma automtica, en cuanto llegan t bloques correctos de a forma consecutiva. Tambin ser sensible a la alteracin de un mensaje, ya que si se modica la e a o unidad de informacin ci , el receptor tendr valores errneos de entrada en su funcin h hasta o a o o que se alcance el bloque ci+t , momento a partir del cual la transmisin habr recuperado o a la sincronizacin. En cualquier caso, al igual que con los generadores s o ncronos, habr que a introducir mecanismos de vericacin. o Una propiedad interesante de estos generadores es la dispersin de las propiedades eso tad sticas del texto claro a lo largo de todo el mensaje cifrado, ya que cada d gito del mensaje inuye en todo el criptograma. Esto hace que los generadores as ncronos se consideren en general ms resistentes frente a ataques basados en la redundancia del texto en claro. a

11.3.

Registros de Desplazamiento Retroalimentados

Los registros de desplazamiento retroalimentados (feedback shift registers, o FSR en ingls) e son la base de muchos generadores de secuencia para cifrados de ujo. Dedicaremos esta seccin o a analizar su estructura bsica y algunas de sus propiedades. a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

134

11. Cifrados de Flujo

si+1 g K si h oi w ci K h oi w

ci

mi

mi

ci

Figura 11.1: Esquema de generadores de secuencia: A: generador s ncrono. B: generador as ncrono.

11.3.1.

Registros de Desplazamiento Retroalimentados Lineales

Estos registros, debido a que permiten generar secuencias con per odos muy grandes y con buenas propiedades estad sticas, adems de su bien conocida estructura algebraica y su a 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, {S0 , S1 , . . . , SL1 }, capaces de almacenar un bit cada uno (g 11.2.a). Esta estructura viene controlada por un reloj que controla los ujos de informacin entre los estados. Durante o cada unidad de tiempo se efectan las siguientes operaciones: u 1. El contenido de S0 es la salida del registro. 2. El contenido de Si es desplazado al estado Si1 , para 1 i L 1. 3. El contenido de SL1 se calcula como la suma mdulo 2 de los valores de un subconjunto o prejado de L. Un generador de estas caracter sticas devolver, en funcin de los valores iniciales de los a o estados, y del subconjunto concreto de L empleado en el paso 3, una secuencia de salidas de carcter peridico en algunos casos, la secuencia ser peridica si ignoramos una cierta a o a o 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, {S0 , S1 , . . . , SL1 }, capaces de almacenar un bit cada uno (g 11.2.b). Durante cada Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

11.3. Registros de Desplazamiento Retroalimentados

135

r L1

r L2

r1

r0

S L1

S L2

S 1

S 0

Salida

B
S L1 S L2 S 1 S 0
Salida

Figura 11.2: Registros de Desplazamiento Retroalimentados: A: Registro lineal, en el que cerrando el circuito en los puntos r0 a rL1 se puede seleccionar qu estados se emplearn e a para calcular el nuevo valor de SL1 . B: Registro no lineal, donde se emplea una funcin f o genrica. e

unidad de tiempo se efectan las siguientes operaciones: u 1. El contenido de S0 es la salida del registro. 2. El contenido de Si es desplazado al estado Si1 , para 1 i L 1. 3. El contenido de SL1 se calcula como una funcin booleana f (Sj1 , Sj2 , . . . , SjL ), o donde Sji es el contenido del registro SLi en el estado anterior. Obsrvese que si sustituimos la funcin f en un registro de esta naturaleza por la suma e o mdulo 2 de un subconjunto de L, obtenemos un registro de desplazamiento lineal. o

11.3.3.

Combinacin de Registros de Desplazamiento o

En la mayor de los casos, los registros de desplazamiento retroalimentados no lineales a presentan unas mejores condiciones como generadores de secuencia que los generadores de tipo lineal. Sin embargo, la extrema facilidad de implementacin por hardware de estos ultimos ha o llevado a los diseadores a estudiar diferentes combinaciones de registros lineales, de tal forma n que se puedan obtener secuencias mejores. En general, se emplear n generadores lineales y una funcin f no lineal para combinar an o sus salidas, de tal forma que cada bit de la secuencia se obtendr mediante la expresin a o f (R1 , R2 , . . . , Rn ) Manuel J. Lucena Lpez o (11.3)

Criptograf y Seguridad en Computadores a

136 siendo Ri la salida del isimo registro de desplazamiento lineal. e

11. Cifrados de Flujo

11.4.

Otros Generadores de Secuencia

Si bien los registros de desplazamiento son muy interesantes para generar secuencias mediante hardware, en realidad no son especialmente fciles de implementar, ni ecientes, si a se usan por software. Esto ha llevado a la comunidad a proponer algoritmos de generacin o de secuencia especialmente pensados para ser incorporados por software. Nosotros vamos a comentar dos de ellos: RC4 y SEAL.

11.4.1.

Algoritmo RC4

El algoritmo RC4 fue diseado por Ron Rivest en 1987 para la compa RSA Data n na Security. Su implementacin es extremadamente sencilla y rpida, y est orientado a generar o a a secuencias en unidades de un byte, adems de permitir claves de diferentes longitudes. Por a desgracia es un algoritmo propietario, lo cual implica que no puede ser incluido en aplicaciones de tipo comercial sin pagar los royalties correspondientes. El cdigo del algoritmo no se ha publicado nunca ocialmente, pero en 1994 alguien dio fundi en los grupos de noticias de Internet una descripcin que, como posteriormente se ha o o comprobado, genera las mismas secuencias. Dicha descripcin consta de una S-Caja de 8*8 o (ver cap tulo 10), que almacenar una permutacin del conjunto {0, . . . , 255}. Dos contadores a o i y j se ponen a cero. Luego, cada byte Or de la secuencia se calcula como sigue: 1. 2. 3. 4. 5. i = (i + 1) md 256 o j = (j + Si ) md 256 o Intercambiar los valores de Si y Sj t = (Si + Sj ) md 256 o Or = St Si = i 0 i 255 Rellenar el array K0 a K255 repitiendo la clave tantas veces como sea necesario. j=0 Para i = 0 hasta 255 hacer: j = (j + Si + Ki ) md 256 o Intercambiar Si y Sj .

Para calcular los valores iniciales de la S-Caja, se hace lo siguiente: 1. 2. 3. 4.

El algoritmo RC4 genera secuencias en las que los ciclos son bastante grandes, y es inmune a los criptoanlisis diferencial y lineal, si bien algunos estudios indican que puede poseer claves a dbiles, y que es sensible a estudios anal e ticos 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 correlacin con un subconjunto de los bytes de la clave, lo cual es un comportamiento muy o poco recomendable. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

11.4. Otros Generadores de Secuencia

137

A pesar de las dudas que existen en la actualidad sobre su seguridad, es un algoritmo ampliamente utilizado en muchas aplicaciones de tipo comercial.

11.4.2.

Algoritmo SEAL

SEAL es un generador de secuencia diseado en 1993 para IBM por Phil Rogaway y Don n Coppersmith, cuya estructura est especialmente pensada para funcionar de manera eciente a en computadores con una longitud de palabra de 32 bits. Su funcionamiento 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 rpida. Por a desgracia, tambin es un algoritmo sujeto a patentes. e Una caracter stica muy util de este algoritmo es que no se basa en un sistema lineal de generacin, sino que dene una familia de funciones pseudoaleatorias, de tal forma que se puede o calcular cualquier porcin de la secuencia suministrando unicamente un nmero entero n de o u 32 bits. La idea es que, dado ese nmero, junto con la clave k de 160 bits, el algoritmo genera u un bloque k(n) de L bits de longitud. De esa forma, cada valor de k da lugar a una secuencia total de L 232 bits, compuesta por la yuxtaposicin de los bloques k(0), k(1), . . . , k(232 1). o SEAL se basa en el empleo del algoritmo SHA (ver seccin 13.1.4) para generar las tablas o 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 versin revisada, o SHA-1.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

138

11. Cifrados de Flujo

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Parte IV

Criptograf de Llave P blica a u

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 12

Algoritmos Asimtricos de Cifrado e


Los algoritmos de llave pblica, o algoritmos asimtricos, han demostrado su inters para u e e ser empleados en redes de comunicacin inseguras (Internet). Introducidos por Whiteld Die o y Martin Hellman a mediados de los aos 70, su novedad fundamental con respecto a la n criptograf simtrica es que las claves no son unicas, sino que forman pares. Hasta la fecha a e han aparecido multitud de algoritmos asimtricos, la mayor de los cuales son inseguros; otros e a son poco prcticos, bien sea porque el criptograma es considerablemente mayor que el mensaje a original, bien sea porque la longitud de la clave es enorme. Se basan en general en plantear al atacante problemas matemticos dif a ciles de resolver (ver cap tulo 5). En la prctica muy pocos a algoritmos son realmente utiles. El ms popular por su sencillez es RSA, que ha sobrevivido a a multitud de ataques, si bien necesita una longitud de clave considerable. Otros algoritmos son los de ElGamal y Rabin. Los algoritmos asimtricos emplean generalmente longitudes de clave mucho mayores que e los simtricos. Por ejemplo, mientras que para algoritmos simtricos se considera segura una e e clave de 128 bits, para algoritmos asimtricos si exceptuamos aquellos basados en curvas e el pticas se recomiendan claves de al menos 1024 bits. Adems, la complejidad de clculo que a a comportan estos ultimos los hace considerablemente ms lentos que los algoritmos de cifrado a simtricos. En la prctica los mtodos asimtricos se emplean unicamente para codicar la e a e e clave de sesin (simtrica) de cada mensaje o transaccin particular. o e o

12.1.

Aplicaciones de los Algoritmos Asimtricos e

Los algoritmos asimtricos poseen dos claves diferentes en lugar de una, Kp y KP , denoe minadas clave privada y clave pblica. Una de ellas se emplea para codicar, mientras que la u otra se usa para decodicar. Dependiendo de la aplicacin que le demos al algoritmo, la clave o pblica ser la de cifrado o viceversa. Para que estos criptosistemas sean seguros tambin ha u a e de cumplirse que a partir de una de las claves resulte extremadamente dif calcular la otra. cil Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

142

12. Algoritmos Asimtricos de Cifrado e

A
1. m KP

B
Kp

2.

KP

KP

Kp

3.

KP

E K (m)
P

KP

Kp

4.

KP

KP
m

Kp

Figura 12.1: Transmisin de informacin empleando algoritmos asimtricos. 1. A tiene el o o e mensaje m y quiere envirselo a B; 2. B env a A su clave pblica, KP ; 3. A codica el a a u mensaje m y env a B el criptograma EKP (m); 4. B decodica el criptograma empleando la a clave privada Kp .

12.1.1.

Proteccin de la Informacin o o

Una de las aplicaciones inmediatas de los algoritmos asimtricos es el cifrado de la infore macin sin tener que transmitir la clave de decodicacin, lo cual permite su uso en canales o o inseguros. Supongamos que A quiere enviar un mensaje a B (gura 12.1). Para ello solicita a B su clave pblica KP . A genera entonces el mensaje cifrado EKP (m). Una vez hecho esto u unicamente quien posea la clave Kp en nuestro ejemplo, B podr recuperar el mensaje a original m. Ntese que para este tipo de aplicacin, la llave que se hace pblica es aquella que permite o o u codicar los mensajes, mientras que la llave privada es aquella que permite descifrarlos.

12.1.2.

Autenticacin o

La segunda aplicacin de los algoritmos asimtricos es la autenticacin de mensajes, con o e o ayuda de funciones resumen (ver seccin 13.1), que nos permiten obtener una rma digital a o partir de un mensaje. Dicha rma es mucho ms pequea que el mensaje original, y es muy a n dif encontrar otro mensaje que d lugar a la misma. Supongamos que A recibe un mensaje cil e m de 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 privada. a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

12.2. El Algoritmo RSA

143

A
1. KP m KP

B
Kp

2. m

KP

E K pr(m)

KP

Kp

3.

KP
m

r(m) KP
m

KP

Kp

4.

r(m) r(m)

KP

Kp

Figura 12.2: Autenticacin de informacin empleando algoritmos asimtricos. 1. A, que posee o o e la clave pblica KP de B, recibe el mensaje m y quiere autenticarlo; 2. B genera el resumen de u m env a A el criptograma asociado EKp (r(m)); 3. A genera por su cuenta r (m) y decodica a el criptograma recibido usando la clave KP ; 4. A compara r(m) y r (m) para comprobar la autenticidad del mensaje m.

La clave de descifrado se habr hecho pblica previamente, y debe estar en poder de A. B a u env entonces a A el criptograma correspondiente a r(m). A puede ahora generar su propia a r (m) y compararla con el valor r(m) obtenido del criptograma enviado por B. Si coinciden, el mensaje ser autntico, puesto que el unico que posee la clave para codicar es precisamente a e B. Ntese que en este caso la clave que se emplea para cifrar es la clave privada, justo al revs o e que para la simple codicacin de mensajes. o En muchos de los algoritmos asimtricos ambas claves sirven tanto para cifrar como para e descifrar, de manera que si empleamos una para codicar, la otra permitir decodicar y a viceversa. Esto ocurre con el algoritmo RSA, en el que un unico par de claves es suciente para codicar y autenticar.

12.2.

El Algoritmo RSA

De entre todos los algoritmos asimtricos, quiz RSA sea el ms sencillo de comprender e a a e implementar. Como ya se ha dicho, sus claves sirven indistintamente tanto para codicar como para autenticar. Debe su nombre a sus tres inventores: Ronald Rivest, Adi Shamir y Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

144

12. Algoritmos Asimtricos de Cifrado e

Leonard Adleman, y estuvo bajo patente de los Laboratorios RSA hasta el 20 de septiembre de 2000, por lo que su uso comercial estuvo restringido hasta esa fecha. De hecho, las primeras versiones de PGP (ver cap tulo 14) lo incorporaban como mtodo de cifrado y rma digital, e pero se desaconsej su uso a partir de la versin 5 en favor de otros algoritmos, que por entonces o o s eran libres. Sujeto a mltiples controversias, desde su nacimiento nadie ha conseguido probar u o rebatir su seguridad, pero se le tiene como uno de los algoritmos asimtricos ms seguros. e a RSA se basa en la dicultad para factorizar grandes nmeros. Las claves pblica y privada u u se calculan a partir de un nmero que se obtiene como producto de dos primos grandes. El u atacante se enfrentar, si quiere recuperar un texto claro a partir del criptograma y la llave a pblica, a un problema de factorizacin (ver seccin 5.6). u o o Para generar un par de llaves (KP , Kp ), en primer lugar se eligen aleatoriamente dos nmeros primos grandes, p y q. Despus se calcula el producto n = pq. u e Escogeremos ahora un nmero e primo relativo con (p 1)(q 1). (e, n) ser la clave u a pblica. Ntese que e debe tener inversa mdulo (p 1)(q 1), por lo que existir un nmero u o o a u d tal que de 1 (md (p 1)(q 1)) o

es decir, que d es la inversa de e mdulo (p 1)(q 1). (d, n) ser la clave privada. Esta o a inversa puede calcularse fcilmente empleando el Algoritmo Extendido de Euclides. Ntese a o que si desconocemos los factores de n, este clculo resulta prcticamente imposible. a a La codicacin se lleva a cabo segn la expresin: o u o c = me (md n) o (12.1)

mientras que la decodicacin se har de la siguiente forma: o a m = cd ya que cd = (me )d = med = mk(p1)(q1)+1 = (mk )(p1)(q1) m Recordemos que (n) = (p 1)(q 1), por lo que, segn la ecuacin (5.3), (mk )(p1)(q1) = 1, u o lo cual nos lleva de nuevo a m, siempre y cuando m y n sean primos relativos. Ya que en nuestro caso n es compuesto, puede ocurrir que no sea primo relativo con m. Para ver lo que ocurre, podemos llevar a cabo el siguiente razonamiento: buscamos un nmero u a tal que ma 1 Manuel J. Lucena Lpez o (md n) o Criptograf y Seguridad en Computadores a (md n) o (12.2)

12.2. El Algoritmo RSA

145

Tiene que cumplirse que ma 1 (md p) y ma 1 (md q), ya que p y q dividen a n. o o Aplicando el Teorema de Fermat (expresin 5.4), tenemos que a debe ser mltiplo de (p 1) o u y de (q 1), por lo que a = mcm(p 1, q 1). Ya que el m nimo comn mltiplo de (p 1) u u y (q 1) divide a (p 1)(q 1), el razonamiento dado inicialmente para demostrar el buen funcionamiento del algoritmo sigue siendo vlido. Por esta razn, en muchos lugares se propone a o obtener d de forma que: de 1 (md mcm(p 1, q 1)) o

con lo que obtendremos valores ms pequeos, y por lo tanto ms manejables, para la clave a n a de descifrado. En muchos casos, se suele utilizar el Teorema Chino del Resto (seccin 5.3) para facilitar o los clculos a la hora de descifrar un mensaje. Para ello se incluyen p y q en la llave privada, se a calcula p1 = p1 (md q), y cuando se desea descifrar un mensaje c, se plantea el siguiente o sistema de congruencias: [c md p][d o [c md q][d o
md (p1)] o md (q1)] o

m1 m2

(md p) o (md q) o

Evidentemente, estas ecuaciones tienen una solucin unica m mdulo n. Para recuperar el o o mensaje original m, en lugar de usar la frmula que dimos en la demostracin del teorema, o o emplearemos otra ligeramente distinta: m = m1 + p[(m2 m1 )p1 (md q)] o

Es inmediato comprobar que esta expresin es igual a m1 mdulo p. Si por el contrario tomamos o o mdulo q, vemos que el segundo sumando es igual a m2 m1 , por lo que nos quedar m2 . o a Con ello conseguimos que el mdulo a la hora de hacer las exponenciaciones sea sensiblemente o menor, y, en consecuencia, los clculos ms rpidos. Ntese que los valores [d md (p 1)], a a a o o [d md (q 1)] y p1 pueden tenerse calculados de antemano y, de hecho, se suelen incluir o en la clave privada. En la prctica, cogeremos p y q con un nmero grande de bits, por ejemplo 200, con lo a u que n tendr 400 bits. Subdividiremos el mensaje que queramos enviar en bloques de 399 bits a de esta forma garantizamos que el valor de cada bloque sea menor que n y efectuaremos la codicacin de cada uno. Obtendremos un mensaje cifrado ligeramente ms grande, puesto o a que estar compuesto por bloques de 400 bits. Para decodicar partiremos el mensaje cifrado a en bloques de 400 bits ya que en este caso sabemos que el valor de cada bloque ha de ser menor que n, y obtendremos bloques de 399 bits. El atacante, si quiere recuperar la clave privada a partir de la pblica, debe conocer los u factores p y q de n, y esto representa un problema computacionalmente intratable, siempre que p y q y, por lo tanto, n sean lo sucientemente grandes. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

146

12. Algoritmos Asimtricos de Cifrado e

12.2.1.

Seguridad del Algoritmo RSA

Tcnicamente no es del todo cierto que el algoritmo RSA deposite su fuerza en el problema e de la factorizacin. En realidad el hecho de tener que factorizar un nmero para descifrar un o u mensaje sin la clave privada es una mera conjetura. Nadie ha demostrado que no pueda surgir un mtodo en el futuro que permita descifrar un mensaje sin usar la clave privada y sin e factorizar el mdulo n. De todas formas, este mtodo podr ser empleado como una nueva o e a tcnica para factorizar nmeros enteros, por lo que la anterior armacin se considera en la e u o prctica cierta. De hecho, existen estudios que demuestran que incluso recuperar slo algunos a o bits del mensaje original resulta tan dif como descifrar el mensaje entero. cil Aparte de factorizar n, podr amos intentar calcular (n) directamente, o probar por la fuerza bruta tratando de encontrar la clave privada. Ambos ataques son ms costosos compua tacionalmente que la propia factorizacin de n, afortunadamente. o Otro punto que cabr preguntarse es qu pasar si los primos p y q que escogemos reala e a mente fueran compuestos. Recordemos que los algoritmos de prueba de primos que conocemos son probabil sticos, por lo que jams tendremos la absoluta seguridad de que p y q son reala mente primos. Pero obsrvese que si aplicamos, por ejemplo, treinta pasadas del algoritmo e de Rabin-Miller (seccin 5.7), las probabilidades de que el nmero escogido pase el test y o u 60 : resulta ms fcil que nos toque la primitiva y que siga siendo primo son de una contra 2 a a simultneamente nos parta un rayo (cuadro 1.1). Por otra parte, si p o q fueran compuestos, a el algoritmo RSA simplemente no funcionar correctamente. a

12.2.2.

Vulnerabilidades de RSA

Aunque el algoritmo RSA es bastante seguro conceptualmente, existen algunos puntos dbiles en la forma de utilizarlo que pueden ser aprovechados por un atacante. En esta seccin e o comentaremos estas posibles vulnerabilidades, as como la forma de evitar que surjan.

Claves Dbiles en RSA e Se puede demostrar matemticamente que existen ciertos casos para los cuales el algoritmo a RSA deja el mensaje original tal cual, es decir me = m (md n) o (12.3)

En realidad, siempre hay mensajes que quedan inalterados al ser codicados mediante RSA, sea cual sea el valor de n. Nuestro objetivo ser reducir al m a nimo el nmero de stos. u e Se puede comprobar que, siendo n = pq y e el exponente para codicar, n = [1 + mcd(e 1, p 1)] [1 + mcd(e 1, q 1)] Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

12.2. El Algoritmo RSA

147

es el nmero de valores de m que quedan igual al ser codicados. Si hacemos que p = 1 + 2p y u q = 1 + 2q , con p y q primos, entonces mcd(e 1, p 1) puede valer 1, 2 p anlogamente o a ocurre con q . Los valores posibles de n sern entonces 4, 6, 9, 2(p + 1), 2(q + 1), 3(p + a 1), 3(p + 1), y (p + 1)(q + 1). Afortunadamente, los cinco ultimos son extremadamente improbables, por lo que no deben preocuparnos. No obstante, como medida de precaucin, se o puede calcular n a la hora de generar las llaves pblica y privada. u Claves Demasiado Cortas Actualmente se considera segura una clave RSA con una longitud de n de al menos 768 bits, si bien se recomienda el uso de claves no inferiores a 1024 bits. Hasta hace relativamente poco se recomendaban 512 bits, pero en mayo de 1999, Adi Shamir present el denominado dispositivo o Twinkle, un ingenio capaz de factorizar nmeros de manera muy rpida, aprovechando los u a ultimos avances en la optimizacin de algoritmos espec o cos para esta tarea. Este dispositivo, an no construido, podr ser incorporado en ordenadores de bajo coste y pondr en serio u a a peligro los mensajes cifrados con claves de 512 bits o menos. Teniendo en cuenta los avances de la tecnolog y suponiendo que el algoritmo RSA no a, sea roto anal ticamente, deberemos escoger la longitud de la clave en funcin del tiempo que o queramos que nuestra informacin permanezca en secreto. Efectivamente, una clave de 1024 o bits parece a todas luces demasiado corta como para proteger informacin por ms de unos o a pocos aos. n Ataques de Intermediario El ataque de intermediario (gura 12.3) puede darse con cualquier algoritmo asimtrico. e Supongamos que A quiere establecer una comunicacin con B, y que C quiere espiarla. Cuando o A le solicite a B su clave pblica KB , C se interpone, obteniendo la clave de B y enviando a A u una clave falsa kC creada por l. Cuando A codique el mensaje, C lo interceptar de nuevo, e a decodicndolo con su clave propia y empleando KB para recodicarlo y enviarlo a B. Ni A a ni B son conscientes de que sus mensajes estn siendo interceptados. a La unica manera de evitar esto consiste en asegurar a A que la clave pblica que tiene de B u es autntica. Para ello nada mejor que sta est rmada por un amigo comn, que certique e e e u la autenticidad de la clave. En la actualidad existen los llamados anillos de conanza, que permiten certicar la autenticidad de las claves sin necesidad de centralizar el proceso. Por eso se nos recomienda cuando instalamos paquetes como el PGP que rmemos todas las claves sobre las que tengamos certeza de su autenticidad, y solamente esas. Ataques de Texto en Claro Escogido Existe una familia de ataques a RSA que explotan la posibilidad de que un usuario codique y rme un unico mensaje empleando el mismo par de llaves. Para que el ataque surta efecto, Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

148

12. Algoritmos Asimtricos de Cifrado e

C KC KB

KC m A E Kc (m)

KB E K (m)
B

Kp B

KB

Figura 12.3: Ataque de intermediario para un algoritmo asimtrico. e

la rma debe hacerse codicando el mensaje completo, no el resultado de una funcin resumen o sobre l. Por ello se recomienda que las rmas digitales se lleven a cabo siempre sobre una e funcin resumen del mensaje, nunca sobre el mensaje en s o . Otro tipo de ataque con texto claro escogido podr ser el siguiente: para falsicar una rma a sobre un mensaje m, se pueden calcular dos mensajes individuales m1 y m2 , aparentemente inofensivos, tales que m1 m2 = m, y envirselos a la v a ctima para que los rme. Entonces d y md . Aunque desconozcamos d, si calculamos obtendr amos un m1 2 md md = md 1 2 obtendremos el mensaje m rmado. (md n) o

Ataques de Mdulo Com n o u Podr pensarse que, una vez generados p y q, ser ms rpido generar tantos pares de a a a a llaves como queramos, en lugar de tener que emplear dos nmeros primos diferentes en cada u caso. Sin embargo, si lo hacemos as un atacante podr decodicar nuestros mensajes sin , a necesidad de la llave privada. Sea m el texto claro, que codicamos empleando dos claves de cifrado diferentes e1 y e2 . Los criptogramas que obtenemos son los siguientes: c1 = me1 c2 = me2 (md n) o (md n) o

El atacante conoce pues n, e1 , e2 , c1 y c2 . Si e1 y e2 son primos relativos, el Algoritmo Extendido de Euclides nos permitir encontrar r y s tales que a re1 + se2 = 1 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

12.3. Otros Algoritmos Asimtricos e Ahora podemos hacer el siguiente clculo a cr cs = me1 r me2 s = me1 r+e2 s = m1 1 2 (md n) o

149

Recordemos que esto slo se cumple si e1 y e2 son nmeros primos relativos, pero precio u samente eso es lo que suele ocurrir en la gran mayor de los casos. Por lo tanto, se deben a generar p y q diferentes para cada par de claves.

Ataques de Exponente Bajo Si el exponente de codicacin e es demasiado bajo, existe la posibilidad de que un atacante o pueda romper el sistema. Esto se soluciona rellenando los m que se codican con bits aleatorios por la izquierda. Por ejemplo, si n es de 400 bits, una estrategia razonable ser coger bloques a de 392 bits (que es un nmero exacto de bytes) e incluirles siete bits aleatorios por la izquierda. u Cuando decodiquemos simplemente ignoraremos esos siete bits. Por otra parte, si d es demasiado bajo, tambin existen mecanismos para romper el sistema, e por lo que se recomienda emplear valores altos para d.

Firmar y Codicar Con el algoritmo RSA nunca se debe rmar un mensaje despus de codicarlo, por el cone trario, debe rmarse primero. Existen ataques que aprovechan mensajes primero codicados y luego rmados, aunque se empleen funciones resumen.

12.3.
12.3.1.

Otros Algoritmos Asimtricos e


Algoritmo de Die-Hellman

Es un algoritmo asimtrico, basado en el problema de Die-Hellman (seccin 5.4.3), que se e o emplea fundamentalmente para acordar una clave comn entre dos interlocutores, a travs de u e un canal de comunicacin inseguro. La ventaja de este sistema es que no son necesarias llaves o pblicas en el sentido estricto, sino una informacin compartida por los dos comunicantes. u o Sean A y B los interlocutores en cuestin. En primer lugar, se calcula un nmero primo o u p y un generador de Z , con 2 p 2. Esta informacin es pblica y conocida por o u p ambos. El algoritmo queda como sigue: 1. A escoge un nmero aleatorio x, comprendido entre 1 y p 2 y env a B el valor u a x Manuel J. Lucena Lpez o (md p) o Criptograf y Seguridad en Computadores a

150

12. Algoritmos Asimtricos de Cifrado e

2. B escoge un nmero aleatorio y, anlogamente al paso anterior, y env a A el valor u a a y 3. B recoge x y calcula K = (x )y 4. A recoge y y calcula K = (y )x (md p) o

(md p). o (md p). o

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 clculo. a

12.3.2.

Algoritmo de ElGamal

Fue diseado en un principio para producir rmas digitales, pero posteriormente se extenn di tambin para codicar mensajes. Se basa en el problema de los logaritmos discretos, que o e est a ntimamente relacionado con el de la factorizacin, y en el de Die-Hellman. o Para generar un par de llaves, se escoge un nmero primo n y dos nmeros aleatorios p y u u x menores que n. Se calcula entonces y = px (md n) o

La llave pblica es (p, y, n), mientras que la llave privada es x. u Escogiendo n primo, garantizamos que sea cual sea el valor de p, el conjunto {p, p2 , p3 . . .} es una permutacin del conjunto {1, 2, , n 1}. Ntese que esto no es necesario para que o o el algoritmo funcione, por lo que podemos emplear realmente 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 nmero k aleatorio, tal que mcd(k, n1) = u 1, y calcular a = pk (md n) o b = (m xa)k 1 (md (n 1)) o

(12.4)

La rma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en secreto y ser diferente cada vez. La rma se verica comprobando que y a ab = pm Manuel J. Lucena Lpez o (md n) o (12.5)

Criptograf y Seguridad en Computadores a

12.3. Otros Algoritmos Asimtricos e Codicacin de ElGamal o

151

Para codicar el mensaje m se escoge primero un nmero aleatorio k primo relativo con u (n1), que tambin ser mantenido en secreto. Calculamos entonces las siguientes expresiones e a a = pk (md n) o b = y k m (md n) o

(12.6)

El par (a, b) es el texto cifrado, de doble longitud que el texto original. Para decodicar se calcula m = b ax (md n) o (12.7)

12.3.3.

Algoritmo de Rabin

El sistema de llave asimtrica de Rabin se basa en el problema de calcular ra cuadradas e ces mdulo un nmero compuesto. Este problema se ha demostrado que es equivalente al de la o u factorizacin de dicho nmero. o u En primer lugar escogemos dos nmeros primos, p y q, ambos congruentes con 3 mdulo 4 u o (los dos ultimos bits a 1). Estos primos son la clave privada. La clave pblica es su producto, u n = pq. Para codicar un mensaje m, simplemente se calcula c = m2 (md n) o (12.8)

La decodicacin del mensaje se hace calculando lo siguiente: o m1 m2 m3 m4 = = = = c(p+1)/4 (md p) o (p c(p+1)/4 ) (md p) o (q+1)/4 (md q) c o (q c(q+1)/4 ) (md q) o

Luego se escogen a y b tales que a = q(q 1 (md p)) y b = p(p1 (md q)). Los cuatro o o posibles mensajes originales son ma mb mc md Manuel J. Lucena Lpez o = = = = (am1 + bm3 ) (md n) o (am1 + bm4 ) (md n) o (am2 + bm3 ) (md n) o (am2 + bm4 ) (md n) o

(12.9)

Criptograf y Seguridad en Computadores a

152

12. Algoritmos Asimtricos de Cifrado e

Desgraciadamente, no existe ningn mecanismo para decidir cul de los cuatro es el autntico, u a e por lo que el mensaje deber incluir algn tipo de informacin para que el receptor pueda a u o distinguirlo de los otros.

12.3.4.

Algoritmo DSA

El algoritmo DSA (Digital Signature Algorithm) es una parte el estndar de rma digital a DSS (Digital Signature Standard). Este algoritmo, propuesto por el NIST, data de 1991, es una variante del mtodo asimtrico de ElGamal. e e Creacin del par llave p blica-llave privada o u El algoritmo de generacin de claves es el siguiente: o 1. Seleccionar un nmero primo q tal que 2159 < q < 2160 . u 2. Escoger t tal que 0 t 8, y seleccionar un nmero primo p tal que 2511+64t < p < u 2512+64t , y que adems q sea divisor de (p 1). a 3. Seleccionar un elemento g Z y calcular = g (p1)/q md p. o p 4. Si = 1 volver al paso 3. 5. Seleccionar un nmero entero aleatorio a, tal que 1 a q 1 u 6. Calcular y = a md p. o 7. La clave pblica es (p, q, , y). La clave privada es a. u Generacin y vericacin de la rma o o Siendo h la salida de una funcin resumen sobre el mensaje m (ver seccin 13.1), la geneo o racin de una rma se hace mediante el siguiente algoritmo: o 1. Seleccionar un nmero aleatorio k tal que 0 < k < q. u 2. Calcular r = (k md p) md q. o o 3. Calcular k 1 md q. o 4. Calcular s = k 1 (h + ar) md q. o 5. La rma del mensaje m es el par (r, s). El destinatario efectuar las siguientes operaciones, suponiendo que conoce la clave pblica a u (p, q, , y), para vericar la autenticidad de la rma: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

12.4. Criptograf de Curva El a ptica 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 = s1 md q. o 4. Calcular u1 = h md q y u2 = r md q. o o 5. Calcular v = (u1 y u2 md p) md q. o o 6. Aceptar la rma si y slo si v = r. o

153

12.4.

Criptograf de Curva El a ptica

Como vimos en la seccin 6.4, para curvas el o pticas existe un problema anlogo al de los a logaritmos discretos en grupos nitos de enteros. Esto nos va a permitir trasladar cualquier algoritmo criptogrco denido sobre enteros, y que se apoye en este problema, al mbito de a a las curvas el pticas. La ventaja que se obtiene es que, con claves ms pequeas, se obtiene un a n nivel de seguridad equiparable. Debido a la relacin existente entre ambos, muchos algoritmos que se apoyan en el problema o de la factorizacin pueden ser replanteados para descansar sobre los logaritmos discretos. o De hecho, existen versiones de curva el ptica de muchos de los algoritmos asimtricos ms e a populares. A modo de ejemplo, en esta seccin veremos cmo se redene el algoritmo de o o cifrado de ElGamal.

12.4.1.

Cifrado de ElGamal sobre Curvas El pticas

Sea un grupo de curva el ptica, denido en GF (n) GF (2n ). Sea p un punto de la curva. o Sea el conjunto p , de cardinal n. Escogemos entonces un valor entero x comprendido entre 1 y n 1, y calculamos y = xp La clave pblica vendr dada por (p, y, n), y la clave privada ser x. u a a El cifrado se har escogiendo un nmero aleatorio k primo relativo con n. Seguidamente a u calculamos las expresiones a = kp b = m + ky (12.10)

(12.11)

siendo m el mensaje original representado como un punto de la curva. El criptograma ser el a par (a, b). Para descifrar, ser suciente con calcular a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

154

12. Algoritmos Asimtricos de Cifrado e

m = (xa) + b

(12.12)

12.5.

Los Protocolos SSL y TLS

El protocolo SSL (Secure Sockets Layer), desarrollado originalmente por la empresa Netscape, permite establecer conexiones seguras a travs de Internet, de forma sencilla y transpae rente. Su fundamento consiste en interponer una fase de codicacin de los mensajes antes de o enviarlos por la red. Una vez que se ha establecido la comunicacin, cuando una aplicacin o o quiere enviar informacin a otra computadora, la capa SSL la recoge y la codica, para luego o enviarla a su destino a travs de la red. Anlogamente, el mdulo SSL del otro ordenador se e a o encarga de decodicar los mensajes y se los pasa como texto claro a la aplicacin destinataria. o TLS (descrito en el documento RFC 2246) es un nuevo protocolo muy similar a SSL, ya que de hecho se basa en la versin 3.0 de este ultimo, mejorndolo en algunos aspectos. Si o a bien su nivel de implantacin an no es muy elevado, todo parece indicar que est llamado a o u a ser su sustituto. Una comunicacin SSL o TLS consta fundamentalmente de dos fases: o

1. Fase de saludo (handshaking). Consiste bsicamente en una identicacin mutua de los a o interlocutores, para la cual se emplean habitualmente los certicados X.509, que veremos en la seccin 13.6. Tras el intercambio de claves pblicas, los dos sistemas escogen una o u clave de sesin, de tipo simtrico. o e 2. Fase de comunicacin. En esta fase se produce el autntico intercambio de informacin, o e o que se codica mediante la clave de sesin acordada en la fase de saludo. o

Cada sesin lleva asociado un identicador unico que evita la posibilidad de que un atacante o escuche la red y repita exactamente lo mismo que ha o do, an sin saber lo que signica, para u engaar a uno de los interlocutores. n Las ventajas de SSL y en el futuro, de TLS son evidentes, ya que liberan a las aplicaciones de llevar a cabo las operaciones criptogrcas antes de enviar la informacin, y su a o transparencia permite usarlo de manera inmediata sin modicar apenas los programas ya existentes. Desde hace tiempo los principales navegadores de Internet incorporan un mdulo SSL, o que se activa de forma automtica cuando es necesario. Hasta diciembre de 1999, debido a a las restricciones de exportacin de material criptogrco existentes en los EE.UU., la mayor o a a de los navegadores incorporaban un nivel de seguridad bastante pobre (claves simtricas de e 40 bits), por lo que conviene comprobar qu nivel de seguridad soporta nuestro navegador, y e actualizarlo si fuera necesario. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

12.6. Ejercicios Propuestos

155

12.6.

Ejercicios Propuestos

1. Suponga un sistema RSA con los siguientes parmetros: a N = 44173 KP = 25277 C = 8767, 18584, 7557, 4510, 40818, 39760, 4510, 39760, 6813, 7557, 14747 a) Factorizar el mdulo N . o b) Calcular la llave privada Kp . c) Descifrar el mensaje C.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

156

12. Algoritmos Asimtricos de Cifrado e

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 13

Mtodos de Autenticacin e o
Por autenticacin entenderemos cualquier mtodo que nos permita comprobar de manera o e segura alguna caracter stica sobre un objeto. Dicha caracter stica puede ser su origen, su integridad, su identidad, etc. Consideraremos tres grandes tipos dentro de los mtodos de e autenticacin: o Autenticacin de mensaje. Queremos garantizar la procedencia de un mensaje conocido, o de forma que podamos asegurarnos de que no es una falsicacin. Este mecanismo se o conoce habitualmente como rma digital. Autenticacin de usuario mediante contrasea. En este caso se trata de garantizar la o n presencia de un usuario legal en el sistema. El usuario deber poseer una contrasea a n secreta que le permita identicarse. Autenticacin de dispositivo. Se trata de garantizar la presencia de un dispositivo vlido. o a Este dispositivo puede estar solo o tratarse de una llave electrnica que sustituye a la o contrasea para identicar a un usuario. n Ntese que la autenticacin de usuario por medio de alguna caracter o o stica biomtrica, e como pueden ser las huellas digitales, la retina, el iris, la voz, etc. puede reducirse a un problema de autenticacin de dispositivo, solo que el dispositivo en este caso es el propio o usuario. De todas formas, en este cap tulo unicamente trataremos mtodos de autenticacin e o basados en tcnicas criptogrcas. e a

13.1.

Firmas Digitales. Funciones Resumen

En el cap tulo 12 vimos que la criptograf asimtrica permit autenticar informacin, a e a o es decir, poder asegurar que un mensaje m proviene de un emisor A y no de cualquier otro. Asimismo vimos que la autenticacin deb hacerse empleando una funcin resumen y no o a o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

158

13. Mtodos de Autenticacin e o

codicando el mensaje completo. En esta seccin estudiaremos dichas funciones resumen, o tambin conocidas como MDC (modication detection codes), que nos van a permitir crear e rmas digitales. Sabemos que un mensaje m puede ser autenticado codicando con la llave privada Kp el resultado de aplicarle una funcin resumen, EKp (r(m)). Esa informacin adicional (que o o denominaremos rma o signatura del mensaje m) slo puede ser generada por el poseedor de o la clave privada Kp . Cualquiera que tenga la llave pblica correspondiente estar en condiciones u a de decodicar y vericar la rma. Para que sea segura, la funcin resumen r(x) debe cumplir o adems ciertas caracter a sticas: r(m) es de longitud ja, independientemente de la longitud de m. Dado m, es fcil calcular r(m). a Dado r(m), es computacionalmente intratable recuperar m. Dado m, es computacionalmente intratable obtener un m tal que r(m) = r(m ).

13.1.1.

Longitud Adecuada para una Signatura

Para decidir cul debe ser la longitud apropiada de una signatura, veamos primero el a siguiente ejemplo: Cul es la cantidad n de personas que hay que poner en una habitacin a o para que la probabilidad P de que el cumpleaos de una de ellas sea el mismo d que el n a 1 m supere el 50 %? Sabemos que cuando n = 1, P = 365 . Cuando n = 2, la probabilidad de o que ningn cumpleaos coincida con el nuestro es el producto de la probabilidad de que no u n coincida el primero, por la probabilidad de que no coincida el segundo, luego: P =1 En el caso general, P =1 364 365
n

364 364 365 365

Para que P > 0,5, n debe ser al menos igual a 253. Sin embargo, cul ser la cantidad de a a gente necesaria para que la probabilidad Q de que dos personas cualesquiera tengan el mismo cumpleaos supere el 50 %? Las dos primeras personas (o sea, cuando n = 2) tienen una n 364 probabilidad 365 de no compartir el cumpleaos; una tercera, supuesto que las dos primeras n no lo comparten, tiene una probabilidad 363 de no compartirlo con las otras dos, por lo que 365 364363 tenemos 365365 , y as sucesivamente. En el caso general nos queda Q=1 Manuel J. Lucena Lpez o 364 363 . . . (365 n + 1) 365n con n 2

Criptograf y Seguridad en Computadores a

13.1. Firmas Digitales. Funciones Resumen

159

Mi r i1 Funcin Resumen

ri

Figura 13.1: Estructura iterativa de una funcin resumen. o

Si hacemos los clculos, veremos que Q > 0,5 si n > 22, una cantidad sorprendentemente a mucho menor que 253. La consecuencia de este ejemplo, conocido como la paradoja del cumpleaos, es que aunque n resulte muy dif dado m calcular un m tal que r(m) = r(m ), es considerablemente menos cil costoso generar muchos valores aleatoriamente, y posteriormente buscar entre ellos una pareja cualquiera (m, m ), tal que r(m) = r(m ). En el caso de una rma de 64 bits, necesitar amos 264 mensajes dado un m para obtener el m , pero bastar con generar aproximadamente 232 mensajes aleatorios para que aparecieran a dos con la misma signatura en general, si la primera cantidad es muy grande, la segunda cantidad es aproximadamente su ra cuadrada. El primer ataque nos llevar 600.000 z a aos con una computadora que generara un milln de mensajes por segundo, mientras que el n o segundo necesitar apenas una hora. a Hemos de aadir pues a nuestra lista de condiciones sobre las funciones resumen la siguienn te:

Debe ser dif encontrar dos mensajes aleatorios, m y m , tales que r(m) = r(m ). cil

Hoy por hoy se recomienda emplear signaturas de al menos 128 bits, siendo 160 bits el valor ms usado. a

13.1.2.

Estructura de una Funcin Resumen o

En general, las funciones resumen se basan en la idea de funciones de compresin, que dan o como resultado bloques de longitud n a partir de bloques de longitud m. Estas funciones se encadenan de forma iterativa, haciendo que la entrada en el paso i sea funcin del i-simo o e bloque del mensaje 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, informacin sobre la o 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. En esta seccin veremos dos algoritmos de generacin de rmas: MD5 y SHA-1. o o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

160

13. Mtodos de Autenticacin e o

13.1.3.

Algoritmo MD5

Se trata de uno de los ms populares algoritmos de generacin de signaturas, debido en a o gran parte a su inclusin en las primeras versiones de PGP. Resultado de una serie de mejoras o sobre el algoritmo MD4, diseado por Ron Rivest, procesa los mensajes de entrada en bloques n 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 mltiplo de 512. El alargamiento se lleva a cabo u aadiendo un 1 seguido de tantos ceros como sea necesario. En segundo lugar, se aaden 64 bits n n con el valor de b, empezando por el byte menos signicativo. De esta forma tenemos el mensaje como un nmero entero de bloques de 512 bits, y adems le hemos aadido informacin sobre u a n o su longitud. Antes de procesar el primer bloque del mensaje, se inicializan cuatro registros de 32 bits con los siguientes valores hexadecimales, segn el criterio little endian el byte menos signicativo u queda en la direccin de memoria ms baja: o a A B C D = = = = 67452301 EF CDAB89 98BADCF E 10325476

Posteriormente comienza el lazo principal del algoritmo, que se repetir para cada bloque a 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) G(X, Y, Z) H(X, Y, Z) I(X, Y, Z) = = = = (X Y ) ((X) Z) (X Z) ((Y (Z)) X Y Z Y (X (Z))

Ahora representaremos por mj el j-simo bloque de 32 bits del mensaje m (de 0 a 15), y e deniremos otras cuatro funciones: F F (a, b, c, d, mj , s, ti ) GG(a, b, c, d, mj , s, ti ) HH(a, b, c, d, mj , s, ti ) II(a, b, c, d, mj , s, ti ) representa representa representa representa a = b + ((a + F (b, c, d) + mj + ti ) a = b + ((a + G(b, c, d) + mj + ti ) a = b + ((a + H(b, c, d) + mj + ti ) a = b + ((a + I(b, c, d) + mj + ti ) s) s) s) s)

donde la funcin a s representa desplazar circularmente la representacin binaria del valor a o o s bits a la izquierda, con reentrada. Las 64 operaciones que se realizan en total quedan agrupadas en cuatro rondas. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

13.1. Firmas Digitales. Funciones Resumen Primera Ronda: F F (a, b, c, d, m0 , 7, D76AA478) F F (d, a, b, c, m1 , 12, E8C7B756) F F (c, d, a, b, m2 , 17, 242070DB) F F (b, c, d, a, m3 , 22, C1BDCEEE) F F (a, b, c, d, m4 , 7, F 57C0F AF ) F F (d, a, b, c, m5 , 12, 4787C62A) F F (c, d, a, b, m6 , 17, A8304613) F F (b, c, d, a, m7 , 22, F D469501) F F (a, b, c, d, m8 , 7, 698098D8) F F (d, a, b, c, m9 , 12, 8B44F 7AF ) F F (c, d, a, b, m10 , 17, F F F F 5BB1) F F (b, c, d, a, m11 , 22, 895CD7BE) F F (a, b, c, d, m12 , 7, 6B901122) F F (d, a, b, c, m13 , 12, F D987193) F F (c, d, a, b, m14 , 17, A679438E) F F (b, c, d, a, m15 , 22, 49B40821) Segunda Ronda: GG(a, b, c, d, m1 , 5, F 61E2562) GG(d, a, b, c, m6 , 9, C040B340) GG(c, d, a, b, m11 , 14, 265E5A51) GG(b, c, d, a, m0 , 20, E9B6C7AA) GG(a, b, c, d, m5 , 5, D62F 105D) GG(d, a, b, c, m10 , 9, 02441453) GG(c, d, a, b, m15 , 14, D8A1E681) GG(b, c, d, a, m4 , 20, E7D3F BC8) GG(a, b, c, d, m9 , 5, 21E1CDE6) GG(d, a, b, c, m14 , 9, C33707D6) GG(c, d, a, b, m3 , 14, F 4D50D87) GG(b, c, d, a, m8 , 20, 455A14ED) GG(a, b, c, d, m13 , 5, A9E3E905) GG(d, a, b, c, m2 , 9, F CEF A3F 8) GG(c, d, a, b, m7 , 14, 676F 02D9) GG(b, c, d, a, m12 , 20, 8D2A4C8A) Tercera Ronda: HH(a, b, c, d, m5 , 4, F F F A3942) HH(d, a, b, c, m8 , 11, 8771F 681) HH(c, d, a, b, m11 , 16, 6D9D6122) HH(b, c, d, a, m14 , 23, F DE5380C) HH(a, b, c, d, m1 , 4, A4BEEA44) HH(d, a, b, c, m4 , 11, 4BDECF A9) HH(c, d, a, b, m7 , 16, F 6BB4B60) Manuel J. Lucena Lpez o

161

Criptograf y Seguridad en Computadores a

162 HH(b, c, d, a, m10 , 23, BEBF BC70) HH(a, b, c, d, m13 , 4, 289B7EC6) HH(d, a, b, c, m0 , 11, EAA127F A) HH(c, d, a, b, m3 , 16, D4EF 3085) HH(b, c, d, a, m6 , 23, 04881D05) HH(a, b, c, d, m9 , 4, D9D4D039) HH(d, a, b, c, m12 , 11, E6DB99E5) HH(c, d, a, b, m15 , 16, 1F A27CF 8) HH(b, c, d, a, m2 , 23, C4AC5665) Cuarta Ronda: II(a, b, c, d, m0 , 6, F 4292244) II(d, a, b, c, m7 , 10, 432AF F 97) II(c, d, a, b, m14 , 15, AB9423A7) II(b, c, d, a, m5 , 21, F C93A039) II(a, b, c, d, m12 , 6, 655B59C3) II(d, a, b, c, m3 , 10, 8F 0CCC92) II(c, d, a, b, m10 , 15, F F EF F 47D) II(b, c, d, a, m1 , 21, 85845DD1) II(a, b, c, d, m8 , 6, 6F A87E4F ) II(d, a, b, c, m15 , 10, F E2CE6E0) II(c, d, a, b, m6 , 15, A3014314) II(b, c, d, a, m13 , 21, 4E0811A1) II(a, b, c, d, m4 , 6, F 7537E82) II(d, a, b, c, m11 , 10, BD3AF 235) II(c, d, a, b, m2 , 15, 2AD7D2BB) II(b, c, d, a, m9 , 21, EB86D391)

13. Mtodos de Autenticacin e o

Finalmente, los valores resultantes de a,b,c y d son sumados con A,B,C y D, quedando listos para procesar el siguiente bloque de datos. El resultado nal del algoritmo es la concatenacin o de A,B,C y D. A modo de curiosidad, diremos que las constantes ti empleadas en cada paso son la parte entera del resultado de la operacin 232 abs(sin(i)), estando i representado en radianes. o En los ultimos tiempos el algoritmo MD5 ha mostrado ciertas debilidades, aunque sin implicaciones prcticas reales, por lo que se sigue considerando en la actualidad un algoritmo a seguro, si bien su uso tiende a disminuir.

13.1.4.

El Algoritmo SHA-1

El algoritmo SHA-1 fue desarrollado por la NSA, para ser incluido en el estndar DSS a (Digital Signature Standard). Al contrario que los algoritmos de cifrado propuestos por esta organizacin, SHA-1 se considera seguro y libre de puertas traseras, ya que el hecho de que el o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

13.1. Firmas Digitales. Funciones Resumen

163

algoritmo sea realmente seguro favorece a los propios intereses 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 ordenacin big endian. Se o inicializa de igual manera, es decir, aadiendo al nal del mensaje un uno seguido de tantos n 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 el a ms signicativo. A diferencia de MD5, SHA-1 emplea cinco registros de 32 bits en lugar a de cuatro: A B C D E = = = = = 67452301 EF CDAB89 98BADCF E 10325476 C3D2E1F 0

Una vez que los cinco valores estn inicializados, se copian en cinco variables, a, b, c, d y a e. El lazo principal tiene cuatro rondas con 20 operaciones cada una: 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 operacin F se emplea en la primera ronda (t comprendido entre 0 y 19), la G en la o 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). Adems se emplean cuatro constantes, una para cada ronda: a K0 K1 K2 K3 = = = = 5A827999 6ED9EBA1 8F 1BBCDC CA62C1D6

El bloque de mensaje m se trocea en 16 partes de 32 bits m0 a m15 y se convierte en 80 trozos de 32 bits w0 a w79 usando el siguiente algoritmo: wt = mt para t = 0 . . . 15 wt = (wt3 wt8 wt14 wt16 ) 1 para t = 16 . . . 79 Todos los mi obtenidos se interpretan como enteros en las operaciones del algoritmo empleando la ordenacin big endian. Como curiosidad, diremos que la NSA introdujo el deso plazamiento a la izquierda para corregir una posible debilidad del algoritmo, lo cual supuso modicar su nombre y cambiar el antiguo (SHA) por SHA-1. El lazo principal del algoritmo es entonces el siguiente: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

164

13. Mtodos de Autenticacin e o

FOR t = 0 TO 79 i = t div 20 T mp = (a 5) + A(b, c, d) + e + wt + Ki e=d d=c c = b 30 b=a a = T mp siendo A la funcin F , G o H segn el valor de t (F para t [0, 19], G para t [20, 39] y o u [60, 79], H para t [40, 59]). Despus los valores de a a e son sumados a los registros A a E y e el algoritmo contina con el siguiente bloque de datos. u

13.1.5.

Funciones de Autenticacin de Mensaje o

Frente a los MDC, vistos en la seccin anterior, existe otra clase de funciones resumen, o llamada genricamente MAC (message authentication codes). Los MAC se caracterizan fundae mentalmente por el empleo de una clave secreta para poder calcular la integridad del mensaje. Puesto que dicha clave slo es conocida por el emisor y el receptor, el efecto conseguido es que o el receptor puede, mediante el clculo de dicha funcin, comprobar tanto la integridad como a o la procedencia del mensaje. Existen multitud de MAC diferentes, pero lo ms comn es cifrar el mensaje mediante un a u algoritmo simtrico en modo CBC ver seccin 10.6, y emplear la salida correspondiente e o al cifrado del ultimo bloque.

13.2.

Autenticacin de Dispositivos o

Los algoritmos MAC pueden ser empleados para autenticar dispositivos, siempre que stos e permitan llevar a cabo las operaciones adecuadas en su interior, a la vez que impiden acceder f sicamente a la clave que llevan almacenada. Un ejemplo de este mecanismo de autenticacin o lo tenemos en las tarjetas SIM que emplean los telfonos celulares GSM. Dichas tarjetas llevan e implementado un algoritmo MAC, denominado COMP1281 , que genera un valor a partir del mensaje y una clave k almacenada en un lugar de la memoria que no se puede leer desde el exterior. En cada tarjeta se graba una unica clave, de la que se guarda una copia en lugar seguro. Si la compa quiere identicar una tarjeta simplemente genera un bloque de bits na aleatorio X y calcula su resumen Ek (X) asociado. Posteriormente se env X a la tarjeta para a que realice el mismo clculo y devuelva su propio resultado. Si ambos coinciden, la tarjeta a ser considerada autntica. Esta tcnica se conoce como autenticacin por desaf (g. 13.2). a e e o o Ntese que la clave k en ningn momento queda comprometida. o u
COMP128, que en principio era secreto, fue reconstruido por la comunidad cypherpunk a partir de documentos ltrados e ingenier inversa, y roto en pocos d por criptoanalistas de la Universidad de Berkeley. a as
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

13.3. Autenticacin de Usuario Mediante Contrasea o n

165

K X MAC E (X)
K

=?

MAC K

E (X)
K

Figura 13.2: Esquema de autenticacin por desaf o o.

13.3.

Autenticacin de Usuario Mediante Contrase a o n

El sistema de autenticacin basa su funcionamiento en una informacin secreta conocida o o unicamente por el usuario, que le permite identicarse positivamente frente al sistema. Supon dremos que el usuario se encuentra en un terminal seguro, es decir, libre de posibles ataques del exterior. Distinguiremos entonces dos casos claramente diferenciados: a) El sistema se comunica con el usuario, pero ste no puede entrar en l. Pinsese en un cajero e e e automtico. El usuario carece de acceso a los archivos del sistema y no tiene posibilidad a ejecutar aplicaciones en l, unicamente puede llevar a cabo una serie de operaciones muy e restringidas. b) El sistema permite al usuario entrar. Este es el caso de los sistemas operativos como UNIX, que ofrecen la posibilidad a los usuarios operar con el sistema desde terminales remotos. Normalmente el usuario tiene acceso ms o menos restringido a los archivos del sistema y a puede ejecutar programas. El primer caso es el ms simple y sencillo de resolver. Basta con que el sistema mantenga a la lista de usuarios y sus contraseas asociadas en un archivo. Como este archivo no puede ser n consultado desde el exterior, es imposible averiguar la clave de un usuario. Para protegerse de los ataques por la fuerza bruta, ser suciente con limitar el nmero de intentos desde un a u terminal concreto e introducir retardos cuando la contrasea introducida sea errnea. n o El caso b es considerablemente ms complejo. Por un lado deberemos tomar las mismas a medidas que en el caso anterior para protegernos de los ataques por la fuerza bruta, y por otro hemos de tener en cuenta que cualquier usuario puede acceder a algunos cheros. En versiones antiguas de sistemas operativos UNIX el chero con las contraseas pod ser descargado por n a cualquier usuario annimo que tiene un nombre concreto y una contrasea genrica, por o n e lo que las palabras clave no pueden ser almacenadas como texto claro en dicho chero. El Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

166

13. Mtodos de Autenticacin e o

mecanismo que surge entonces de manera inmediata consiste en almacenar en el chero de claves la signatura de cada contrasea. De esta forma ser dif adivinar una contrasea que n a cil n se ajuste a una signatura concreta. Los sistemas operativos modernos impiden adems leer el a chero de claves de forma directa, pero eso no evita que en algunos casos ste pueda quedar e comprometido.

13.3.1.

Ataques Mediante Diccionario

El principal problema de las palabras clave son las elecciones poco afortunadas por parte de los usuarios. Desgraciadamente todav hay personas que emplean su fecha de nacimiento, a el nombre de algn familiar o la matr u cula del coche como contrasea. Un atacante avispado n podr tratar de generar millones de claves y construir un diccionario. El siguiente paso ser a a precalcular las signaturas de todas las claves que hay en su diccionario. Si de alguna manera ha obtenido el chero con las signaturas de las claves, bastar con compararlas con las de a su diccionario para obtener en pocos segundos una contrasea que le permita entrar en el n sistema. Tengamos en cuenta que un diccionario con ms de 150.000 claves de ocho caracteres a cabe (sin comprimir) en un diskette de 3 pulgadas y media, y que ha habido casos en los que con diccionarios de este tamao se ha conseguido averiguar un sorprendente nmero de claves. n u Para protegerse frente a este tipo de ataques se introduce en el clculo de la signatura a de la contrasea la denominada sal, que no es ni ms ni menos que un conjunto de bits n a aleatorios que se aaden a la palabra clave antes de calcular su rma. En el chero de claves n se almacenar, junto con la signatura, la sal necesaria para su obtencin. Esto obligar al a o a atacante a recalcular todas las signaturas de su diccionario antes de poder compararlas con cada una de las entradas del chero de claves del sistema. De todas formas, si la contrasea n buscada aparece en el diccionario, el unico inconveniente para el atacante ser que en lugar de a obtenerla de forma casi instantnea, se tardar algn tiempo en conseguirla. Deberemos pues a a u evitar a toda costa emplear contraseas que puedan aparecer en un diccionario. n Adems de estar bien salvaguardadas, las palabras clave han de cumplir una serie de a condiciones para que puedan considerarse seguras: 1. Deben ser memorizadas. Una contrasea jams debe ser escrita en un papel, por razones n a obvias. 2. Sucientemente complejas. Una buena contrasea debe constar de al menos ocho letras. n Pensemos que si empleamos unicamente seis caracteres alfanumricos (nmeros y letras), e u tenemos unicamente unos dos mil millones de posibilidades. Teniendo en cuenta que hay programas para PC capaces de probar ms de cuarenta mil claves en un segundo, una a clave de estas caracter sticas podr ser descubierta en menos de quince horas. a 3. Carecer de signicado. Una contrasea jams debe signicar nada, puesto que entonces n a aumentar la probabilidad de que aparezca en algn diccionario. Evitemos los nombres a u propios, en especial aquellos que pertenezcan a lugares o personajes de ccin. o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

13.4. Dinero Electrnico o

167

4. Fciles de recordar. Puesto que una palabra clave ha de ser memorizada, no tiene sentido a emplear contraseas dif n ciles de recordar. Para esto podemos seguir reglas como que la palabra se pueda pronunciar en voz alta, o que responda a algn acrnimo ms o menos u o a complejo. En este punto no debemos olvidar que hay que evitar a toda costa palabras que signiquen algo. 5. Deben ser modicadas con frecuencia. Hemos de partir de la premisa de que toda palabra clave caer tarde o temprano, por lo que ser muy recomendable que nuestras contraa a seas sean cambiadas peridicamente. La frecuencia con la que se produzca el cambio n o depender de la complejidad de las claves y del nivel de seguridad que se desee alcanzar. a Y lo ms importante: ante cualquier sospecha, cambiar todas las claves. a Para ilustrar este apartado usaremos como ejemplo la desafortunada revelacin del archivo o con las signaturas de todas las contraseas de algunos proveedores de servicios de Internet. n Muchos de los usuarios comprobaban horrorizados como sus claves eran reveladas en cuestin o de pocos minutos por cualquier programa que realizara ataques por diccionario en un simple PC domstico. Si bien el compromiso de este tipo de archivos es un grave inconveniente, si las e claves que ste almacena hubieran tenido suciente calidad, hubieran resistido sin problemas e el ataque, permaneciendo a salvo.

13.4.

Dinero Electrnico o

Si hay un concepto contrario al de autenticacin, ste es falsicacin. Y cuando hablao e o mos de falsicar casi inmediatamente nos viene a la cabeza el objeto ms falsicado de la a historia: el dinero. El objetivo de los pa a la hora de fabricar dinero siempre ha sido evitar ses su falsicacin lo cual equivale a facilitar su autenticacin. Parece bastante razonable o o dedicar pues un breve comentario dentro de esta obra al dinero como objeto de autenticacin. o Obviamente, nos referimos al dinero electrnico. o El dinero f sico es algo bastante engorroso. Es incmodo de transportar, se desgasta con o facilidad y suele ser susceptible de falsicacin. Adems debe ser cambiado peridicamente o a o debido a la renovacin de las monedas. Para sustituirlo estn las tarjetas de crdito y los o a e cheques. El problema que stos presentan es que rompen el anonimato de quien los emplea, e por lo que la privacidad queda comprometida. Existen sin embargo protocolos que permiten el intercambio de capital de una forma segura y annima. Es lo que denominaremos dinero o electrnico. o Las ventajas que reportar su extensin en un futuro prximo son evidentes. Facilitar el a o o a comercio electrnico y las compras por Internet, y adems garantizar el anonimato en las o a a transacciones comerciales. Hoy por hoy no existe un unico protocolo aceptado universalmente, aunque s muchas propuestas. Por ello haremos unicamente una breve introduccin acerca de o cmo deber ser un protocolo a t o a tulo meramente ilustrativo. Supongamos que queremos enviar un cheque annimo. Para ello creamos cien cheques por o la misma cantidad, los metemos cada uno en un sobre y los enviamos al banco. El banco Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

168

13. Mtodos de Autenticacin e o

abre noventa y nueve al azar y se asegura de que todos llevan la misma cantidad. Al que queda le pone su sello sin abrirlo y nos lo devuelve, restando la cantidad de nuestra cuenta corriente. Tenemos ahora un cheque validado por el banco, pero del que el banco no sabe nada (la probabilidad de que tenga una cantidad diferente de la que el banco supone es unicamente del uno por ciento). Cuando entreguemos ese cheque y alguien quiera cobrarlo, bastar con a que lo lleve al banco, que vericar su sello y abonar su importe, sin conocer su procedencia. a a Este protocolo se puede implementar mediante criptograf asimtrica de la siguiente forma: a e se construyen cien rdenes de pago annimas y se env al banco. Este las comprueba y o o an rma digitalmente una, restando adems la cantidad correspondiente en nuestra cuenta. El a destinatario podr cobrar la orden de pago cuando quiera. a El problema que surge con el protocolo anterior es que una orden se puede cobrar varias veces. Para evitar esto basta con incluir una cadena aleatoria en cada orden de pago, de forma que sea muy dif tener dos rdenes con la misma cadena. Cada una de las cien cil o o rdenes tendr pues una cadena de identicacin diferente. El banco, cuando pague la cantidad, a o unicamente tendr que comprobar la cadena de identicacin de la orden para asegurarse de a o que no la ha pagado ya. Ahora cada orden de pago es unica, por lo que el banco puede detectar una orden dupli cada, pero no sabe quin de los dos ha cometido fraude: el que paga o el que cobra. Existen e mecanismos que permiten saber, cuando la orden de pago aparece duplicada, quin de los dos e ha intentado engaar. Si lo ha hecho el cobrador, puede ser localizado sin problemas, pero n y si quien env dos veces la misma orden es el pagador?. El protocolo completo de dinero a electrnico hace que la identidad del pagador quede comprometida si env dos veces la misma o a orden de pago, por lo que podr ser capturado. a En cuanto a los diferentes protocolos propuestos hoy en d hay que decir que son muy a dispares, y que todav ninguno de ellos ha sido adoptado como estndar. Los clasicaremos a a en tres grupos, segn el tipo de criptograf en que se basen: u a Basados en Criptograf Simtrica: NetBill y NetCheque. a e Basados en Criptograf Asimtrica: Proyecto CAFE, ECash, NetCash, CyberCash, iKP a e de IBM, y Anonymous Credit Cards (ACC) de los Laboratorios AT & Bell. No basados en Criptograf ISN, Compuserve y FIRST VIRTUAL Holdings Incorporaa: ted. Por desgracia, ninguno de estos protocolos acaba de imponerse, precisamente porque permiten recuperar el anonimato al comprador y, por tanto, su privacidad, y dicultan el rastreo de capital. Pero mucho nos tememos que hay una causa mucho ms sutil y poderosa a a la vez en esta sociedad mercantilizada. Supongamos por un momento que yo poseo una gran empresa que vende todo tipo de productos, y que mis clientes emplean sus tarjetas de crdito e para comprar. Yo puedo almacenar un perl de cada tarjeta de crdito con la que se pagan los e productos, incluso desconociendo los datos personales del titular, en el que se reejen detalladamente sus hbitos de consumo, lo cual me permite elaborar campaas de mercado mucho a n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

13.5. Esteganograf a

169

ms ecientes, por ejemplo incluyendo publicidad de los productos que a cada cliente ms le a a puedan interesar cada vez que se le sirva un pedido. Y todo ello sin violar la intimidad de los compradores, puesto que no se almacena ningn dato personal. u

13.5.

Esteganograf a

La esteganograf consiste en almacenar informacin camuada dentro de otra informacin. a o o Supongamos que queremos enviar un mensaje secreto a un interlocutor que se encuentra en un lugar donde la Criptograf est prohibida. Podr a a amos, por ejemplo, enviarle una imagen de mapa de bits y utilizar el bit menos signicativo del color de cada p para guardar cada xel bit del mensaje secreto. La imagen ser vlida y un observador externo nunca sospechar que a a a en realidad esconde un mensaje secreto. Existen innidad de mtodos de esteganograf slo limitados por la imaginacin, pero, e a, o o por qu incluir esta tcnica dentro del cap e e tulo dedicado a autenticacin? La respuesta es o sencilla: en general la esteganograf consiste en mezclar informacin util con informacin de a o o alguna otra naturaleza, que slo sirve para despistar. Podr o amos denirla entonces como el mecanismo que nos permite entresacar la informacin util, reduciendo este problema a una o simple autenticacin. o Volvamos al ejemplo de la imagen de mapa de bits. Si el observador externo conociera el algoritmo que hemos empleado para camuar nuestro mensaje dentro de la imagen, el sistema quedar automticamente comprometido. Alguien podr proponer entonces emplear a a a la Criptograf y almacenar en los bits menos signicativos de cada p la versin codicada a xel o del mensaje. Existe sin embargo una forma ms elegante de proteger la informacin sin emplear a o ningn algoritmo criptogrco. u a Podr amos generar una gran cantidad de informacin irrelevante y subdividirla junto con o el mensaje original en pequeos paquetes, a los que aadir n n amos un cdigo de identicacin o o (signatura), de forma que slo los paquetes que corresponden al mensaje contengan una sigo natura correcta. Si enviamos una secuencia de paquetes en la que aparece el mensaje original entremezclado con la basura, slo quien disponga del mecanismo de autenticacin correcto o o que podr depender de una clave estar en condiciones de recuperar el mensaje original. a a Sin embargo, el mensaje ha sido enviado como texto claro, sin ser codicado en ningn mou mento. El ejemplo del mapa de bits no ser ms que un caso particular de este esquema, en el a a que el algoritmo de autenticacin simplemente considera vlidos los bits menos signicativos o a de cada p y descarta todos los dems. xel a

13.6.

Certicados X.509

Un certicado es esencialmente una clave pblica y un identicador, rmados digitalmente u por una autoridad de certicacin, y su utilidad es demostrar que una clave pblica pertenece a o u un usuario concreto. El formato de certicados X.509 (Recomendacin X.509 de CCITT:The o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

170

13. Mtodos de Autenticacin e o

Directory - Autentication Framework. 1988) es el ms comn y extendido en la actualidad. a u El estndar X.509 slo dene la sintaxis de los certicados, por lo que no est atado a a o a ningn algoritmo en particular, y contempla los siguientes campos: u Versin. o Nmero de serie. u Identicador del algoritmo empleado para la rma digital. Nombre del certicador. Periodo de validez. Nombre del sujeto. Clave pblica del sujeto. u Identicador unico de certicador. Identicador unico de sujeto. Extensiones. Firma digital de todo lo anterior generada por el certicador. Estos certicados se estructuran de forma jerrquica, de tal forma que nosotros podemos a vericar la autenticidad de un certicado comprobando la rma de la autoridad que lo emiti, o que a su vez tendr otro certicado expedido por otra autoridad de rango superior. De esta a forma vamos subiendo en la jerarqu hasta llegar al nivel ms alto, que deber estar ocupado a a a por un certicador que goce de la conanza de toda la comunidad. Normalmente las claves pblicas de los certicadores de mayor nivel se suelen publicar incluso en papel para que u cualquiera pueda vericarlas. El mecanismo que debe emplearse para conseguir un certicado X.509 es enviar nuestra clave pblica nunca la privada! a la autoridad de certicacin, despus de habernos u o e identicado positivamente frente a ella. Existen autoridades de certicacin que, frente a una o solicitud, generan un par llave pblica-privada y lo env al usuario. Hemos de hacer notar u an que en este caso, si bien tendremos un certicado vlido, nuestro certicador podr descifrar a a todos nuestros mensajes.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 14

PGP
El nombre PGP responde a las siglas pretty good privacy (privacidad bastante buena), y se trata de un proyecto iniciado a principios de los 90 por Phill Zimmerman. La total ausencia por aquel entonces de herramientas sencillas, potentes y baratas que acercaran la criptograf a seria al usuario movi a su autor a desarrollar una aplicacin que llenara este hueco. o o Con el paso de los aos, PGP se ha convertido en uno de los mecanismos ms populares n a y ables para mantener la seguridad y privacidad en las comunicaciones, especialmente a travs del correo electrnico, tanto para pequeos usuarios como para grandes empresas. Hasta e o n principios de 2001 la pol tica de distribucin de PGP consisti en permitir su uso gratuito para o o usos no comerciales y en publicar el cdigo fuente en su integridad, con el objetivo de satisfacer o a los desconados y a los curiosos. Sin embargo, con el abandono de la empresa por parte de Zimmerman, en febrero de 2001, el cdigo fuente dej de publicarse. o Actualmente PGP se ha convertido en un estndar internacional (RFC 2440), lo cual a est dando lugar a la aparicin de mltiples productos PGP, que permiten desde cifrar coa o u rreo electrnico hasta codicar particiones enteras del disco duro (PGPDisk), pasando por la o codicacin automtica y transparente de todo el trco TCP/IP (PGPnet). o a a

14.1.

Fundamentos e Historia de PGP

PGP trabaja con criptograf asimtrica, y por ello tal vez su punto ms fuerte sea prea e a cisamente la gran facilidad que ofrece al usuario a la hora de gestionar sus claves pblicas y u privadas. Si uno emplea algoritmos asimtricos, debe poseer las claves pblicas de todos sus e u interlocutores, adems de la clave privada propia. Con PGP surge el concepto de anillo de a claves (o llavero), que no es ni ms ni menos que el lugar que este programa proporciona para a que el usuario guarde todas las claves que posee. El anillo de claves es un unico chero en el que se pueden efectuar operaciones de extraccin e insercin de claves de manera sencilla, y o o que adems proporciona un mecanismo de identicacin y autenticacin de llaves completo a o o y simple de utilizar. Esta facilidad en la gestin de claves es una de las causas fundamentales o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

172 que han hecho a PGP tan popular.

14. PGP

La historia de PGP se remonta a comienzos de los aos 90. La primera versin era complen o tamente diferente a los PGP posteriores, adems de ser incompatible con stos. La familia de a e versiones 2.x.x fue la que alcanz una mayor popularidad, y sigue siendo utilizada por mucha o gente en la actualidad. Los PGP 2.x.x emplean unicamente los algoritmos IDEA, RSA y MD5. En algn momento una versin de PGP atraves las fronteras de EE.UU. y naci la priu o o o mera versin internacional de PGP, denominada PGPi, lo que le supuso a Phill Zimmermann o una investigacin de ms de tres aos por parte del FBI, ya que supuestamente se hab o a n an violado las restrictivas leyes de exportacin de material criptogrco que poseen los Estados o a Unidos. Para la versin 5 de PGP se subsan este problema exportando una versin impresa o o o del cdigo fuente, que luego era reconstruida y compilada en Europa (ms informacin en o a o http://www.pgpi.com).

14.2.
14.2.1.

Estructura de PGP
Codicacin de Mensajes o

Como el lector ya sabe, los algoritmos simtricos de cifrado son considerablemente ms e a rpidos que los asimtricos. Por esta razn PGP cifra primero el mensaje empleando un ala e o goritmo simtrico (ver gura 14.1) con una clave generada aleatoriamente (clave de sesin) y e o posteriormente codica la clave haciendo uso de la llave pblica del destinatario. Dicha clave es u extra convenientemente del anillo de claves pblicas a partir del identicador suministrado da u por el usuario, todo ello de forma transparente, por lo que unicamente debemos preocuparnos de indicar el mensaje a codicar y la lista de identicadores de los destinatarios. Ntese que o para que el mensaje pueda ser le por mltiples destinatarios basta con que se incluya en la do u cabecera la clave de sesin codicada con cada una de las claves pblicas correspondientes. o u Cuando se trata de decodicar el mensaje, PGP simplemente busca en la cabecera las claves pblicas con las que est codicado y nos pide una contrasea. La contrasea servir para que u a n n a PGP abra nuestro anillo de claves privadas y compruebe si tenemos una clave que permita decodicar el mensaje. En caso armativo, PGP descifrar el mensaje. Ntese que siempre a o que queramos hacer uso de una clave privada, habremos de suministrar a PGP la contrasea n correspondiente, por lo que si el anillo de claves privadas quedara comprometido, un atacante an tendr que averiguar nuestra contrasea para descifrar nuestros mensajes. No obstante, u a n si nuestro archivo de claves privadas cayera en malas manos, lo mejor ser revocar todas las a claves que tuviera almacenadas y generar otras nuevas. Como puede comprenderse, gran parte de la seguridad de PGP reside en la calidad del generador aleatorio que se emplea para calcular las claves de sesin, puesto que si alguien logra o predecir la secuencia de claves que estamos usando, podr descifrar todos nuestros mensajes a independientemente de los destinatarios a los que vayan dirigidos. Afortunadamente, PGP utiliza un mtodo de generacin de nmeros pseudoaleatorios muy seguro una secuencia e o u aleatoria pura es imposible de conseguir, como se dijo en el cap tulo 8, y protege criptogra Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

14.2. Estructura de PGP

173

Clave(s) Pblica(s) del (los) Receptor(es)

Generador Aleatorio

Clave Simtrica

Algoritmo Asimtrico

Clave Simtrica Cifrada

Mensaje Cifrado Texto Claro Algoritmo Simtrico

Figura 14.1: Codicacin de un mensaje PGP o

camente la semilla que necesita1 . No obstante, consideraremos sensible al chero que contiene dicha semilla normalmente RANDSEED.BIN, y por lo tanto habremos de evitar que quede expuesto.

14.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 seccin 13.1.3), que posteriormente se codica empleando la o clave privada RSA correspondiente. Las versiones actuales implementan el algoritmo DSS, que emplea la funcin resumen SHA-1 y el algoritmo asimtrico DSA (secciones 12.3.4 y o e 13.1.4). La rma digital o signatura puede ser aadida al chero u obtenida en otro chero aparte. n Esta opcin es muy util si queremos rmar un chero ejecutable, por ejemplo. o

14.2.3.

Armaduras ASCII

Una de las funcionalidades ms utiles de PGP consiste en la posibilidad de generar una a armadura ASCII para cualquiera de sus salidas. Obviamente, todas las salidas de PGP (mensajes codicados, claves pblicas extra u das de algn anillo, rmas digitales, etc.) consisten en u secuencias binarias, que pueden ser almacenadas en archivos. Sin embargo, en la mayor de a los casos puede interesarnos enviar la informacin mediante correo electrnico, o almacenarla o o en archivos de texto. Recordemos que el cdigo ASCII original emplea 7 bits para codicar cada letra, lo cual o quiere decir que los caracteres situados por encima del valor ASCII 127 no estn denidos, y a
Algunas implementaciones de PGP emplean otras fuentes de aleatoriedad, como ocurre con GnuPG, por lo que no necesitan almacenar una semilla aleatoria.
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

174

14. PGP

de hecho diferentes computadoras y sistemas operativos los interpretan de manera distinta. Tambin hay que tener en cuenta que entre los 128 caracteres ASCII se encuentran muchos que e representan cdigos de control, como el retorno de carro, el n de chero, el tabulador, etc. La o idea es elegir 64 caracteres imprimibles (que no sean de control) dentro de esos 128. Con este conjunto de cdigos ASCII podremos representar exactamente 6 bits, por lo que una secuencia o de tres bytes (24 bits) podr codicarse mediante cuatro de estos caracteres. Esta cadena a de s mbolos resultante se trocea colocando en cada l nea un nmero razonable de s u mbolos, por ejemplo 72. El resultado es una secuencia de caracteres que pueden ser tratados como texto estndar, adems de ser manipulados en cualquier editor. Existe la ventaja adicional de a a que esta representacin es apropiada para ser enviada por correo electrnico, ya que muchas o o pasarelas de correo no admiten caracteres por encima de 127, y adems truncan las l a neas demasiado largas, por lo que podr alterar los mensajes si viajaran en otro formato. an Como ejemplo incluyo mi clave pblica PGP rmada con la de Kriptpolis en formato u o ASCII: -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.0.4 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBDRkk6kRBADKYHrNnFeXlggr14IVGy6FudLG2Cd1wb3yKOaNnodyjZa0a5oi Ls9jDfDfEdq8K+W6QBLv06w7oVFPNMYsU+ufb0pa/bHWq6IrHxKkTVH4o4PUYTmH W0jfGjoXEtAUZ0vp9wYR0Yqi7wXO3L/N5KuVNjLj7rXOT7rOmHsOjmY1cQCg//2w OcyAnkaDCODFNif/VdowntcD/j5midszzU6M7BWmeDJoqEEGzSuxfmRSNyNZe6/6 5k8TFXIVpB0vnxwsZSh0POSlNgz1cmX6VbEmmUXoYsMRfq7iXHSAZ3DLB333yR2b QUbkrH5WZF75G2vvTO7rKS5KtmROJ8E+vX/py6PGz1f3tBZJ94KwM787g6j43F4X IYTAA/9L5GZzClHOGt01BtZkioH5YoHnDGHKC8mMXcykXA5KdJvl+9jGz3InUHiG 04StaMxMcDcWLzL5FVLz3LBzlOXGs7jikgH3BYBI3p7dIExfRADucDHyKL/CpIl5 zqHBI+5bxY3Tysu3UlA1UkQloJMsSInlkkjQhwihNYsj8Avr9LQmTWFudWVsIEx1 Y2VuYSBMb3BleiA8bWx1Y2VuYUB1amFlbi5lcz6IVgQTEQIAFgUCOHyzZAQLCgQD AxUDAgMWAgECF4AACgkQSLJRYWmrV4TqngCgsDk/ysnBdpPwp/r2dL0Lzcq01J8A nRxUUiS3SoVb3WfnaSQmdb6eaJ3qiEsEEBECAAsFAjTa4FoECwMBAgAKCRBIslFh aatXhO9yAJ9vI1QWihIKMUa4g3S8t3EZZ9SXxgCaAjfnHx8Kayylm6XXjjsC6iJK BmaIPwMFEDTa5h2buAet57tpPxEC8K4AoOTP5I1fJFN6KtZdmLtENKSRrKfxAJ4g wl5R1MzpeTFiysWKab/PsU5GwohGBBARAgAGBQI3eQrfAAoJEPi4YmyN8qnzA1sA niVQF6V/6gBVPq0Idt1Yrtuy4+aQAKDTuyVvfU1tRNy/U89FhzMmBVRL47QtTWFu dWVsIEx1Y2VuYSBMb3BleiA8bWx1Y2VuYUBrcmlwdG9wb2xpcy5jb20+iFYEExEC ABYFAjklG9wECwoEAwMVAwIDFgIBAheAAAoJEEiyUWFpq1eEMZEAnAx9TFz49xbM dwTsGN0a+qvph5b3AJ4stMpniXd+hANnwygWwuOih3mIvLQsTWFudWVsIEx1Y2Vu YSBMb3BleiA8ZXF1aXBvQGtyaXB0b3BvbGlzLmNvbT6IVwQTEQIAFwUCOhjzNQUL BwoDBAMVAwIDFgIBAheAAAoJEEiyUWFpq1eEh9MAnAkTZVoNU1BhfjkIzXmJyWxq +Ee/AKCw8dPJ7uxeoLe0pyy3ilXds7ocDrkCDQQ0ZJRfEAgAw/iGbTW9OaTyfV4R NZdg1HRDGEyasZdEPCM9ihPkfvQyK44nH13OseaikIYoyoA/BFiWeTNcHvb/4KOu CK2GnO/p/6ohFcAOK5anEygGrhUUttUw8kYZ0rUBFIJnurtDcxwawugbPFv3qA+s Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

14.2. Estructura de PGP n756q7XUxjnTtpou+lWyj6VkN/EvrZDf9E7ikPUqRuIsHzJ5PUwypWtXaKg2HfCl KkZlYFqzdPDCssrXOfjZDx2q6GSek6Sgj5Ph3X4opoXIx6Cfmp4ELYmvdmnDu4oe 6A6l/XIQ8NNhj+GxdtOgTq8QKDRWl2f6M3pQgPnYzBHoDIqnr/ie8jK4seDezRPt L1/TlQACAgf+JXw03Q1opLBAaO/WZlcs2SiEzqv+gCkFW9vk2bJbSY4PQHwiLc0H wcPEDi7jIu9QxJfZcHkax8XgXkCvfFJFFmqgqarIOzXp/BgiYyma6GVAmXcI6lI9 ZSgzPvvaNFGe0/7R6Yroee7nJ/9RyxF89SI++5tZY+/bpLuKAbnX9SA3PEnUWiHD 2ah3cC3VXNrus3lsKA7MEh3q9xnoF/8Z7vwldrKUyLZdaDqSM7isyI5Fe0PWn/mt W4+7/rjboaY7PGJCAqtn8cHDvByRYCZ8kLRlobQHzL8XN1fsdfBv6WDNeS9IqBCX cPME7R21wytsi2WMDnYL7rQWU/CgLqFx2Ig/AwUYNGSUX0iyUWFpq1eEEQL3JACf Tfvh6A70A9N2SbnRBmktuRBp9NsAn2ZQbpg0eaeVRuzejA2QM7ldrz53 =D9SU -----END PGP PUBLIC KEY BLOCK-----

175

Como puede verse, los unicos s mbolos empleados son las letras maysculas y minsculas, u u los nmeros, y los signos /y +; el resto de s u mbolos y caracteres de control simplemente ser ignorado. Cualquiera podr copiar esta clave pblica a mano (!) o emplear un OCR para a a u introducirla en su anillo de claves correspondiente, aunque es mejor descargarla a travs de e Internet.

14.2.4.

Gestin de Claves o

PGP, como ya se ha dicho, almacena las claves en unas estructuras denominadas anillos. Un anillo no es ms que una coleccin de claves, almacenadas en un chero. Cada usuaa o rio tendr dos anillos, uno para las claves pblicas (PUBRING.PKR) y otro para las privadas a u (SECRING.SKR). Cada una de las claves, adems de la secuencia binaria correspondiente para el algoritmo a concreto donde se emplee, posee una serie de datos, como son el identicador del usuario que la emiti, la fecha de expiracin, la versin de PGP con que fue generada, y la denominada o o o 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 papel, o le de viva voz. La huella digital se emplea para da asegurar la autenticidad de una clave. Por ejemplo, la huella digital de la clave pblica anterior u es: 9E2B 9D14 CBCE FE12 16A8 C103 48B2 5161 69AB 5784

Si alguien quisiera asegurarse de la autenticidad de dicha clave, bastar con que llamara a por telfono al autor, y le pididera que le leyera la su huella digital. e

14.2.5.

Distribucin de Claves y Redes de Conanza o

PGP, como cualquier sistema basado en clave pblica, es susceptible a ataques de interu mediario (seccin 12.2.2). Esto nos obliga a establecer mecanismos para asegurarnos de que o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

176

14. PGP

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 sta venga rmada por una persona de conanza. Hay que e 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 automticamente, en funcin de que las rmas que contenga una clave a o pertenezcan a personas de conanza, pero la segunda ha de ser establecida manualmente. No olvidemos que el hecho de que una clave sea autntica no nos dice nada acerca de la persona e que la emiti. Por ejemplo, yo puedo tener la seguridad de que una clave pertenece a una pero sona, pero esa persona puede dedicarse a rmar todas las claves que le llegan, sin asegurarse de su autenticidad, por lo que en ningn caso merecer nuestra conanza. u a Cuando una clave queda comprometida, puede ser revocada por su autor. Para ello basta con generar y distribuir un certicado de revocacin que informar a todos los usuarios de o a que esa clave ya no es vlida. Para generarlo es necesaria la clave privada, por lo que en a muchos casos se recomienda generar con cada clave su certicado de revocacin y guardarlo o en lugar seguro, de forma que si perdemos la clave privada 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.

14.2.6.

Otros PGP

La rpida popularizacin de PGP entre ciertos sectores de la comunidad de Internet, y el a o desarrollo del estndar pblico Open PGP, han hecho posible la proliferacin de variantes ms a u o a o menos complejas del programa de Zimmerman. Muchas de ellas son desarrolladas por los propios usuarios, para mejorar alguna caracter stica, como manejar claves de mayor longitud (PGPg), y otras corresponden a aplicaciones de tipo comercial. Especial mencin merece la implementacin de Open PGP que est llevando a cabo el o o a proyecto GNU: GnuPG (GNU Privacy Guard), que funciona en mltiples plataformas, y emu plea unicamente algoritmos de libre distribucin entre ellos AES, aunque presenta una o estructura que la hace fcilmente extensible. De hecho, hoy por hoy, podr a amos decir que es la implementacin de PGP ms completa, segura y util para cualquier usuario. o a

14.3.

Vulnerabilidades de PGP

Segn todo lo dicho hasta ahora, parece claro que PGP proporciona un nivel de seguriu dad que nada tiene que envidiar a cualquier otro sistema criptogrco jams desarrollado. a a Qu sentido tiene, pues, hablar de sus vulnerabilidades, si stas parecen no existir? e e Como cualquier herramienta, PGP proporcionar un gran rendimiento si se emplea correca tamente, pero su uso inadecuado podr convertirlo en una proteccin totalmente intil. Es a o u Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

14.3. Vulnerabilidades de PGP

177

por ello que parece interesante llevar a cabo una pequea recapitulacin acerca de las buenas n o costumbres que harn de PGP nuestro mejor aliado. a Escoger contraseas adecuadas. Todo lo comentado en la seccin 13.3 es vlido para n o a PGP. Proteger adecuadamente los archivos sensibles. Estos archivos sern, lgicamente, nuesa o tros llaveros (anillos de claves) y el chero que alberga la semilla aleatoria. Esta proteccin debe llevarse a cabo tanto frente al acceso de posibles curiosos, como frente a una o posible prdida de los datos (recuerde que si pierde el archivo con su clave privada no e podr descifrar jams ningn mensaje!). a a u Emitir revocaciones de nuestras claves al generarlas y guardarlas en lugar seguro. Sern a el unico mecanismo vlido para revocar una clave en caso de prdida del anillo priva a e do. Afortunadamente, la versin 6 de PGP permite nombrar revocadores para nuestras o claves, de forma que stos podrn invalidarla en cualquier momento sin necesidad de e a nuestra clave privada. Firmar slo las claves de cuya autenticidad estemos seguros. Es la unica manera de o que las redes de conanza puedan funcionar, ya que si todos rmramos las claves a alegremente, podr amos estar certicando claves falsas. Al margen de un uso correcto, que es fundamental, debemos mencionar que ultimamente han sido detectados algunos fallos en las diversas implementaciones de PGP. Clasicaremos dichas vulnerabilidades en dos grupos claramente diferenciados: Debidas a la implementacin: Estos agujeros de seguridad son provocados por una imo plementacin defectuosa de PGP, y corresponden a versiones concretas del programa. o Por ejemplo, el fallo descubierto en la versin 5.0 de PGP para UNIX, que hac que o a las claves de sesin no fueran completamente aleatorias, o el encontrado en todas las o versiones para Windows, desde la 5.0 a la 7.0.4, en la que un inadecuado procesamiento de las armaduras ASCII permit a un atacante introducir cheros en la computadora a de la v ctima. Intr nsecas al protocolo: En este apartado habr que resear aquellos agujeros de sea n guridad que son inherentes a la denicin del estndar Open PGP. En este sentido, a o a principios de 2001 se hizo pblica una tcnica que permitir a un atacante falsicar ru e a mas digitales. En cualquier caso, se necesita acceso f sico a la computadora de la v ctima para manipular su clave privada, por lo que el fallo carece de inters prctico, aunque e a suponemos que obligar a una revisin del protocolo. a o

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

178

14. PGP

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Parte V

Seguridad en Redes de Computadores

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 15

Seguridad en Redes
La rpida expansin y popularizacin de Internet ha convertido a la seguridad en redes a o o en uno de los tpicos ms importantes dentro de la Informtica moderna. Con tal nivel de o a a interconexin, los virus y los hackers campan a sus anchas, aprovechando las decientes medio das de seguridad tomadas por administradores y usuarios a los que esta nueva revolucin ha o cogido por sorpresa. Las ventajas de las redes en Informtica son evidentes, pero muchas veces se minusvaloran a ciertos riesgos, circunstancia que a menudo pone en peligro la seguridad de los sistemas. En unos pocos aos la inmensa mayor de las empresas operarn a travs de la Red, y esto slo n a a e o ser posible si los profesionales de la Informtica saben aportar soluciones que garanticen la a a seguridad de la informacin. o

15.1.

Importancia de las Redes

La Informtica es la ciencia del tratamiento automtico de la informacin, pero tanto o ms a a o a importante que su procesamiento y almacenamiento es la posibilidad de poder transmitirla de forma eciente. La informacin tiene un tiempo de vida cada vez menor y la rapidez con la o que pueda viajar es algo crucial. Los ultimos avances en compresin y transmisin de datos o o digitales permiten hoy por hoy transferir cantidades enormes de informacin a velocidades o que hace tan solo unos aos eran impensables. En este sentido las redes de computadoras n desempean un papel fundamental en la Informtica moderna. n a Pero hemos de tener en cuenta que la complejidad de las grandes redes y su carcter pblico a u convierte la proteccin f o sica de los canales de comunicacin en algo tremendamente dif o cil. Hemos de depositar nuestra conanza en la Criptograf para garantizar la condencialidad a en las comunicaciones. Uno de los mayores obstculos que han tenido que ser superados para que las redes pudiea ran desarrollarse, ha sido encontrar lenguajes comunes para que computadoras de diferentes Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

182

15. Seguridad en Redes

tipos pudieran entenderse. En este sentido el conjunto de protocolos TCP/IP se ha erigido como estndar de facto en la industria de la Informtica. En general todas las redes de compua a tadoras se construyen conceptualmente sobre diferentes capas de abstraccin, que desarrollan o tareas distintas y proporcionan un protocolo unicado a las capas superiores. La Criptograf a podr entonces ser empleada en diferentes niveles de abstraccin. Por ejemplo, podemos cifrar a o un chero antes de transmitirlo por la red, lo cual corresponder al nivel de abstraccin maa o yor, o podemos enviarlo en claro, pero a travs de un protocolo de bajo nivel que cifre cada e uno de los paquetes de informacin en los que se va a subdividir el chero en el momento de o transmitirlo. En funcin del tipo de red con el que trabajemos nos enfrentaremos a diferentes clases de o riesgos, lo cual nos conducir inevitablemente a medidas de diferente naturaleza para garana tizar la seguridad en las comunicaciones. En este cap tulo haremos una breve reexin sobre o algunos de los casos que pueden darse, sin tratar de ser exhaustivos ser imposible, dada a la inmensa cantidad de posibilidades. Nuestro objetivo se centrar en aportar una serie a de directrices que nos permitan analizar cada situacin y establecer una correcta pol o tica de proteccin de la informacin. o o Ya que no existe una solucin universal para proteger una red, en la mayor de los casos la o a mejor estrategia suele consistir en tratar de colarnos nosotros mismos para poner de maniesto y corregir posteriormente los agujeros de seguridad que siempre encontraremos. Esta estrategia se emplea cada vez con mayor frecuencia, y en algunos casos hasta se contrata a hackers para que impartan cursillos de seguridad a los responsables de las redes de las empresas.

15.2.

Redes Internas

El caso ms sencillo de red que nos podemos encontrar corresponde al trmino LAN1 , de a e a mbito muy limitado geogrcamente usualmente un unico edicio con todos los coma putadores interconectados a travs de unos cables de los que se es propietario. Esta ultima e circunstancia nos va a permitir ejercer un control total sobre el canal de comunicaciones, pudiendo protegerlo f sicamente, lo cual evita prcticamente cualquier peligro de falta de pria vacidad en la informacin. o Uno de los riesgos dignos de mencin en estos casos son las posibles prdidas de informacin o e o debidas a fallos f sicos, que pueden ser minimizados llevando a cabo una adecuada pol tica de copias de respaldo, que debern ser confeccionadas peridicamente, almacenadas en un lugar a o diferente de aquel donde se encuentra la red, y protegidas adecuadamente contra incendios y accesos no deseados. Otro riesgo que se da en las redes locales, a menudo infravalorado, es el que viene del uso inadecuado del sistema por parte de los propios usuarios. Ya sea por mala fe o descuido, un usuario con demasiados privilegios puede destruir informacin, por lo que estos permisos o deben ser asignados con mucho cuidado por parte de los administradores. Esta circunstancia
1

Local Area Network, red de rea local. a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

15.3. Redes Externas

183

es muy importante, ya que, sobre todo en pequeas empresas, el dueo muchas veces cree que n n debe conocer la clave del administrador, y luego es incapaz de resistir la tentacin de jugar o con ella, poniendo en serio peligro la integridad del sistema y entorpeciendo el trabajo del administrador o superusuario. Existen redes internas en las que un control exhaustivo sobre el medio f sico de transmisin o de datos es en la prctica imposible. Pinsese en un edicio corporativo con un acceso no muy a e restringido, por ejemplo un aulario de una universidad, que posee conexiones ethernet en todas sus dependencias. En principio, nada impedir a una persona conectar un ordenador porttil a a a una de esas conexiones para llevar a cabo un anlisis del trco de la red sin ser descubierta, a a o suplantar a cualquier otro computador. En estos casos ser conveniente llevar a cabo algn a u tipo de control, como la deshabilitacin dinmica de las conexiones de red no utilizadas en cada o a momento, la vericacin del identicador unico de la tarjeta de red concreta que debe estar o conectada en cada punto, o la adopcin de protocolos de autenticacin de las computadoras o o dentro de la red, como por ejemplo Kerberos2 . Uno de los ultimos avances en redes locales son las denominadas WLAN3 , muy en boga en la actualidad, que basan su funcionamiento en el empleo de ondas de radio como canal de comunicaciones, proporcionando una exibilidad sin precedentes a las redes. Sin embargo, los protocolos propuestos hasta la fecha (IEEE 802.11 y 802.11b) proporcionan un nivel de seguridad realmente deciente, que podr permitir a un atacante analizar el trco con relativa a a facilidad, por lo que se recomienda emplear protocolos de cifrado en las capas de mayor nivel.

15.3.

Redes Externas

Consideraremos red externa a aquella que, en todo o en parte, se apoye en un canal f sico de comunicacin ajeno. En la actualidad, la mayor parte de las redes externas e internas o estn interconectadas, formando lo que conocemos como Internet. Existirn redes externas de a a muy diferentes tipos, pero todas ellas tienen en comn la caracter u stica de que que en algn u momento la informacin viaja por canales sobre los que no se tiene ningn tipo de control. o u Todas las tcnicas que nos van a permitir llevar a cabo protecciones efectivas de los datos e debern hacer uso necesariamente de la Criptograf a a. Para identicar los posibles riesgos que presenta una red externa, hemos de jarnos en cuestiones tan dispares como el sistema operativo que corre sobre los ordenadores o el tipo de acceso que los usuarios legales del sistema pueden llevar a cabo. Una de las conguraciones ms comunes consiste en el uso de una red local conectada al a exterior mediante un cortafuegos computadora que ltra el trco entre la red interna y a el exterior. Los cortafuegos son herramientas muy poderosas si se emplean adecuadamente, pero pueden entraar ciertos riesgos si se usan mal. Por ejemplo, existen muchos lugares donde n
Kerberos es uno de los protocolos de autenticacin que forma parte del proyecto Athena, en el MIT o (Instituto Tecnolgico de Massachusetts), y permite a un computador identicarse positivamente dentro de o una red. 3 Wireless Local Area Network, red de rea local sin hilos. a
2

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

184

15. Seguridad en Redes





             

       

Cortafuegos Red Interna A Internet

Cortafuegos Red Interna A Internet

Terminales

Terminales

Figura 15.1: A: Conguracin incorrecta, el cortafuegos tiene una unica tarjeta de red, y los o terminales estn conectados f a sicamente a la red externa. B: Conguracin correcta, el cortao fuegos dispone de dos tarjetas de red y el resto de las computadoras est aislado f a sicamente de la red externa. el cortafuegos est conectado a la red local y sta a su vez a la red externa (ver gura 15.1, caso a e A). Esta conguracin es la ms sencilla y barata, puesto que slo necesitamos una tarjeta o a o de red en el cortafuegos, pero no impedir a un computador situado en el exterior acceder a directamente a los de la red local. La conguracin correcta se puede apreciar en el caso B de o la gura 15.1, donde la red externa (y todos sus peligros) est separada f a sicamente de la red local. Podemos distinguir dos grandes tipos de peligros potenciales que pueden comprometer nuestra informacin desde una red externa: o Ataques indiscriminados. Suelen ser los ms frecuentes, y tambin los menos dainos. a e n Dentro de esta categor podemos incluir los troyanos y los virus, programas diseados a n normalmente para colarse en cualquier sistema y producir efectos de lo ms variopinto. a Precisamente por su carcter general, existen programas espec a cos que nos protegen de ellos, como los antivirus. Conviene disponer de un buen antivirus y actualizarlo peridio camente. Ataques a medida. Mucho menos comunes que los anteriores, y tambin ms peligrosos, e a son los ataques que generalmente llevan a cabo los hackers. En estos casos las v ctimas son casi siempre grandes corporaciones, y muchas veces la informacin ni siquiera es o destruida o comprometida, puesto que los hackers slo persiguen enfrentarse al reto que o supone para ellos entrar en un sistema grande. El problema es que para borrar sus huellas y dicultar el rastreo de sus acciones, suelen atacar en primer lugar sistemas pequeos n para desde ellos cometer sus travesuras, lo cual convierte a cualquier sistema en potencial Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

15.4. Conclusiones

185

v ctima de estos personajes. Lo que ocurre en la mayor de los casos es que su necesidad a de emplear sistemas pequeos como plataforma les obliga a no daarlos, para no dejar n n ningn tipo de rastro que permita localizarlos posteriormente. u En cuanto a la proteccin de las comunicaciones en s baste decir que existen protocolos o , de comunicacin segura de bajo nivel, como SSL y TLS (ver seccin 12.5), que permiten o o establecer comunicaciones seguras a travs de Internet, haciendo uso de algoritmos simtricos e e y asimtricos simultneamente. Estos protocolos son transparentes y pueden correr bajo otros e a ampliamente conocidos, como POP3, TELNET, FTP, HTTP, etc. De hecho, gran cantidad de aplicaciones los emplean en sus comunicaciones. Desgraciadamente, las restrictivas leyes norteamericanas en cuanto a la exportacin de material criptogrco hacen que la gran mayor o a a de las aplicaciones seguras que se venden fuera de los EE.UU. y Canad estn en realidad a e debilitadas, por lo que hemos de informarnos muy bien antes de depositar nuestra conanza en ellas.

15.3.1.

Intranets

El trmino intranet se ha popularizado recientemente y hace alusin a redes externas que e o se comportan de cara a los usuarios como redes privadas internas. Obviamente, este tipo de redes ha de ser implementado haciendo uso de protocolos criptogrcos de autenticacin y a o codicacin de las transmisiones, puesto que el trco que nosotros vemos como interno a o a nuestra red, en realidad viaja por Internet.

15.4.

Conclusiones

Despus de todo lo dicho parece una locura conectarse a una red externa, y ciertamente e lo es si no se toman las precauciones adecuadas. La cantidad de posibles riesgos es enorme, y con toda seguridad en el futuro aparecern nuevos peligros, pero no olvidemos que ante todo a debemos ser racionales. Si bien puede ocurrir que un equipo de hackers trate de entrar en nuestro sistema, esta posibilidad suele ser remota en la mayor de los casos, debido precisaa mente al escaso inters que va a despertar en ellos penetrar en una red pequea. Por otro lado e n hay que tener en cuenta que cierto tipo de ataques requiere fuertes inversiones, por lo que si nuestra informacin no resulta realmente valiosa para el atacante, podemos considerarnos a o salvo. No olvidemos que el coste de la proteccin en ningn caso puede superar el valor de la o u propia informacin que se desea proteger. Por lo dems, parece claro que las ventajas que nos o a proporcionar estar en la Red son claramente mayores que los inconvenientes, pero nunca se a debe bajar la guardia. En general, conviene estar preparado para el peor de los casos probables, que suele ser la prdida de la informacin, casi siempre debida a fallos f e o sicos o a la presencia de virus. En cuanto al resto de posibilidades, ser suciente con la adopcin de protocolos seguros, adems a o a de llevar un registro de todas las operaciones que tienen lugar dentro del sistema, registro Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

186

15. Seguridad en Redes

que deber ser controlado peridicamente para detectar posibles anomal a o as. Otra prctica a bastante recomendable consiste en mantenerse al d sobre los fallos de seguridad detectados a en los programas y sistemas operativos que empleemos, as como de los sucesivos parches que las empresas de software suelen distribuir peridicamente, con objeto de eliminar los agujeros o de seguridad.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 16

Hackers
Se consideran a s mismos una casta, y su losof de la vida es casi una religin. Delin a o cuentes para unos, hroes para otros, multitud de leyendas circulan sobre estos personajes. e Al igual que en otras pocas hab alquimistas, capaces de dominar los oscuros poderes de e a la materia, hoy los hackers estn considerados por muchos como los nigromantes de la era a tecnolgica. Nos guste o no, los hackers son ya un mito en la cultura de nales del siglo XX. o No debemos confundir el trmino hacker con el de pirata informtico, ya que este ultimo es e a un concepto ms amplio. Aquellos que conozcan la cultura cyberpunk, sabrn que adems de a a a hackers hay otros grupos, tales como los crackers, que se dedican a la copia ilegal de software, y los phreakers, que dirigen sus esfuerzos hacia las compa telefnicas. Cada uno de ellos nas o se especializa en algn tipo de actividad curiosamente, las actuaciones de los crackers y u phreakers suelen ser siempre delictivas, mientras que las de los hackers en algunos casos no lo son, mal que les pese a muchos. Por supuesto, todos ellos justican sus formas de pensar y actuar con argumentos de lo ms variopinto, que tienen como punto comn la lucha contra el a u sistema establecido. Peridicamente los medios de comunicacin nos sorprenden con alguna nueva hazaa de o o n estos personajes, contribuyendo, junto con la industria cinematogrca, al crecimiento y proa pagacin de su leyenda. o

16.1.

El Hielo y los Vaqueros

Un hacker es un individuo que se dedica a inltrarse en sistemas informticos. Su actividad, a tan antigua como las redes de ordenadores, conoce diversas variantes. Desde aquellos que no tratan de hacer ningn dao, y que consideran estas actuaciones como un excitante reto a u n su inteligencia, hasta aquellos cuyo unico objetivo es sabotear una red, llevndose toda la a informacin que posea para luego venderla, podemos decir que hay hackers para todos los o gustos. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

188

16. Hackers

En 1983, William Gibson escribi Neuromante, pieza clave de la literatura de Ciencia o Ficcin moderna y referencia obligada cuando se habla de cultura cyberpunk. En esta obra los o vaqueros trmino empleado por Gibson para referirse a los hackers burlaban el Hielo de e los sistemas informticos del ingls ICE, Intrusion Countermeasures Electronics a travs a e e del ciberespacio, tambin denominado matriz en el libro, o si se preere, matrix. e Huelga decir que la magia y lo esotrico nada tienen que ver con estos sujetos. En general e son individuos bastante ingeniosos y bien informados que se dedican a buscar y explotar fallos ms o menos sutiles en los sistemas de seguridad. Puesto que cada sistema se puede decir que a es unico, los buenos vaqueros suelen elaborar ataques a medida, poniendo a prueba su profundo conocimiento sobre las redes de ordenadores. Es prcticamente imposible protegerse al cien a por cien de un ataque de esta naturaleza, y debemos pensar que si, por alguna razn, nos o convertimos en objetivo de un hacker lo sucientemente bueno, tarde o temprano acabaremos cayendo. Tambin hay que decir que aunque muchos actan solos, los vaqueros suelen formar grupos, e u en los que cada uno tiene su alias, y que normalmente slo establecen contacto a travs de o e la Red, no conocindose personalmente entre ellos. Suelen dominar bastante bien el uso de e la Criptograf y frecuentemente la emplean en sus comunicaciones. Alguno podr pensar a, a que este es un buen argumento para imponer un control gubernamental sobre el uso privado de la Criptograf pero en ese caso tambin deber a, e amos permitir que la polic entre en a nuestras casas, lea nuestras cartas y escuche nuestras conversaciones telefnicas sin nuestro o consentimiento, para evitar que cometamos delitos. Pero no todo va a ser negativo. La gente que instala un dispositivo antirrobo en su casa sabe que puede ser burlado por un ladrn altamente especializado, pero an as lo considera o u seguro, ya que un ladrn profesional asumir el riesgo slo si la casa despierta el suciente o a o inters. As pues, basta con tomar unas medidas de seguridad proporcionales al valor que e posea el sistema que queremos proteger. El problema es que en muchos casos, por simple desconocimiento, los sistemas estn mal protegidos, hasta tal punto que es como si dejramos a a abierta la puerta de nuestra casa. En esos casos, cualquiera puede entrar a sgonear. Por desgracia, las computadoras son tan heterogneas que no existe un conjunto de medidas e universal que nos permita protegernos de estos chicos traviesos. Intentaremos no obstante dar unas pautas sobre las tcnicas que ms emplean para que as cada cual pueda saber qu medidas e a e debe tomar en su caso concreto.

16.2.

Cmo act a un Hacker o u

Comentaremos en esta seccin muy brevemente algunas de las tcnicas ms comunes emo e a pleadas para inltrarse en computadores ajenos a travs de la Red. Esto no quiere decir que e sean las unicas tcnicas posibles, ni siquiera que sean las mejores, pero servirn para hacernos e a una idea del modo de actuar de estos individuos. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

16.2. Cmo acta un Hacker o u Puerto 21 23 25 37 43 80 110 117 119 513 514 515 Funcin o FTP Telnet SMTP (Mail) Time Whois HTTP (Servidor Web) POP3 (Mail) UUCP NNTP (News) Login Shell Spooler

189

Cuadro 16.1: Algunos puertos TCP/IP.

16.2.1.

Protocolos TCP/IP. Demonios y Puertos

TCP/IP es el conjunto de protocolos que se ha impuesto como norma universal de facto en las comunicaciones. Internet se basa en dicho protocolo, y aunque existan otros para redes locales, los sistemas operativos actuales permiten su coexistencia, por lo que podemos decir sin temor a equivocarnos que prcticamente cualquier mquina conectada a Internet entiende a a TCP/IP. Un computador con TCP/IP puede establecer mltiples comunicaciones simultneamente, u a a travs de los denominados puertos. Un puerto se comporta como los canales de un televisor: e a travs de un unico cable llegan muchas emisiones, de las cuales podemos escoger cul ver e a con solo seleccionar el canal correspondiente. Existen puertos dedicados a tareas concretas. As por ejemplo el puerto 80 se emplea para las pginas web, y el 21 para la transferencia de cheros. En el cuadro 16.1 podemos ver algunos a de los ms usuales, aunque existen muchos ms. Hay que decir que esta tabla es orientativa: a a nada nos impedir situar nuestro demonio de FTP en el puerto 300, por ejemplo, aunque eso a obligar a quienes quisieran establecer una comunicacin FTP con nosotros a emplear dicho a o puerto. De hecho, ciertos servidores de acceso restringido emplean puertos no normalizados para evitar visitantes molestos. Un demonio (daemon1 , en ingls) es un programa que escucha a travs de un puerto a la e e espera de establecer comunicaciones. As por ejemplo, un servidor de pginas web tiene un , a demonio asociado al puerto 80, esperando solicitudes de conexin. Cuando nosotros cargamos o una pgina en el navegador estamos enviando una solicitud al puerto 80 del servidor, que a responde con la pgina correspondiente. Si el servidor web no estuviera ejecutando el demonio a
En realidad, el concepto de daemon es mucho ms amplio, y se reere a cualquier programa que, cuando a se ejecuta, entra en un estado de espera hasta que algn suceso lo activa. u
1

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

190

16. Hackers

o ste estuviera escuchando en otro puerto, no podr e amos consultar la pgina que buscamos. a Una vez que se establece la comunicacin en un puerto, los ordenadores hablan entre ellos, o usando diferentes idiomas, como por ejemplo HTTP para las pginas web, FTP para las a transferencias de cheros, etc. Ahora vamos a ver un ejemplo utilizando la orden telnet de UNIX y el protocolo SMTP de env de correos electrnicos, que se ubica en el puerto 25: o o usuario> telnet 1.2.3.4 25 Trying 1.2.3.4... Connected to 1.2.3.4. Escape character is ^]. 220 host.dominio.pais ESMTP Sendmail 8.9.3; Fri, 10 Sep 1999 16:16:55 A partir de este momento el ordenador con IP2 1.2.3.4 (host.dominio.pais) est esperando a nuestros mensajes a travs de su puerto 25. Si escribimos e helo mlucena el demonio responder algo parecido a a 250 host.dominio.pais Hello mlucena@host [3.2.5.6], pleased to meet you Puesto que el demonio es un programa, puede que contenga errores, o que simplemente haya situaciones en las que no funcione adecuadamente. En los sistemas tipo UNIX, uno puede enviar mensajes extraos para los que el demonio no se encuentra preparado, y as lograr n que aborte su ejecucin, dejndonos una consola de texto con la que podremos tomar el o a control del sistema. En general, los fabricantes de software suelen actualizar peridicamente o sus programas, subsanando paulatinamente los errores que stos puedan contener, por lo que e es de una importancia crucial que los demonios instalados en nuestro sistema sean ables y se encuentren al d Un fallo muy famoso y que dio mucho que hablar estaba en el demonio que a. escuchaba las comunicaciones SMB en las primeras versiones de Windows 95. Si uno enviaba un mensaje concreto a ese puerto pod bloquear de forma instantnea el ordenador de su a a v ctima, y para ello slo ten que conocer su nmero de IP. o a u En general, el hacker se dedica a tratar de averiguar en qu puertos est escuchando el ordee a nador objetivo, y luego a localizar y explotar posibles fallos en los demonios correspondientes, para tomar el control del sistema. Muchas veces nuestro ordenador puede que est escuchando e algn puerto sin que nosotros lo sepamos. Existe un troyano (ver cap u tulo 17) que corre sobre los sistemas Windows, denominado Back Orice, que escucha un puerto a la espera de que el ordenador atacante tome el control de nuestra mquina. a
El IP es un conjunto de cuatro nmeros, separados por puntos, que identica un u vocamente a un ordenador conectado a Internet.
2

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

16.2. Cmo acta un Hacker o u

191

Por desgracia, existen programas cuya conguracin por defecto no es lo sucientemente o conservadora, y que habilitan ciertas caracter sticas a no ser que se les diga lo contrario, abriendo inevitablemente agujeros de seguridad. A modo de ejemplo, citaremos el problema que surgi en el verano de 1998, cuando se descubri que era posible descargar, si el servidor o o corr bajo Windows NT, el cdigo fuente de algunas pginas web de tipo ASP de una manera a o a muy simple, a no ser que el administrador tomara ciertas precauciones. Afortunadamente, el problema se solucion con rapidez, y gracias a estos pequeos sustos cada vez se pone ms o n a cuidado a la hora de elaborar software sensible.

16.2.2.

Desbordamientos de Buer

Uno de los mecanismos ms empleados para hacer saltar a un demonio es el desbordamiento a de buer, que aprovecha una caracter stica muy comn en casi todos los compiladores de u lenguajes de programacin modernos. Cuando se ejecuta un procedimiento o subprograma, el o ordenador reserva memoria para los datos de entrada al procedimiento, junto con informacin o relativa a la direccin de memoria por la que debe continuar la ejecucin una vez nalizado. o o En algunos casos, los datos de entrada pueden ser de mayor tamao que el espacio que el n programador estim suciente en su d para albergarlos, por lo que, al salirse de su lugar, o a pueden sobreescribir y modicar otros campos. Un atacante podr entonces pasar al demonio a una cadena que incluyera cdigo ejecutable, y que machacara el campo que indica dnde o o debe seguir la ejecucin del programa, para que apuntara precisamente a su cdigo malicioso. o o De esta forma se podr ejecutar virtualmente cualquier cosa en la mquina de la v a a ctima. Evidentemente, la construccin de cadenas de este tipo no es una tarea sencilla, pero una vez o elaboradas, podr amos emplearlas cuantas veces quisiramos, y desde cualquier otro ordenador. e

16.2.3.

Suplantando Usuarios

Lo ideal para entrar en un sistema es hacerlo como administrador, lo cual proporciona sucientes privilegios como para alterar cualquier cosa sin ningn problema. A veces ocurre u que el ordenador v ctima no presenta vulnerabilidades en los puertos que escucha, por lo que debemos buscar otros medios para entrar en l. e La mayor de los sistemas operativos permiten la existencia de usuarios genricos, llaa e mados invitados, que no necesitan contrasea para entrar en el sistema y que tienen unos n privilegios de acceso bastante limitados. En muchos casos esos privilegios pueden llegar a ser sucientes como para perpetrar un ataque con garant de xito, debido a que un invitado as e puede acceder al chero que almacena las contraseas. Afortunadamente, esta circunstancia n ha sido subsanada en casi todos los sistemas operativos, pero ha de ser tenida en cuenta, para evitar desagradables sorpresas. Como ya indicamos en la seccin 13.3.1, si un usuario posee el chero de contraseas, o n puede llevar a cabo un ataque con diccionario, y eventualmente llegar a averiguar las claves de cada usuario, lo cual le permitir entrar en el sistema. Este tipo de ataque se volver intil a a u si los usuarios escogen contraseas adecuadas, del tipo que se propone en esta obra. n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

192

16. Hackers

Una posibilidad bastante inquietante es la de, una vez que se han ganado sucientes privilegios, sustituir el chero de contraseas por otro elaborado por el hacker, lo cual dejar sin n a acceso a todos los usuarios leg timos del sistema, incluidos los administradores!. En tal caso habr que desconectar el sistema de la red y restaurarlo manualmente, con el consiguiente a coste tanto de tiempo como de dinero.

16.2.4.

Borrando las Huellas

Todos los sistemas operativos serios incorporan algn sistema de registro de los eventos u del sistema que permite saber con detalle lo que en la computadora ha ido ocurriendo. Un vaquero que se precie debe eliminar todas las entradas de dicho registro relativas a su paso por el sistema, si no quiere que un polic llame a su puerta a los pocos d . . a as. Adems de tratar de borrar todas sus huellas, un hacker suele organizar sus ataques de a forma que si queda algn rastro de su paso por el sistema elegido, ste sea realmente confuso. u e Para ello nada mejor que emplear otros ordenadores ms modestos como plataforma para a atacar al autntico objetivo. Normalmente los vaqueros buscan ordenadores poco protegidos, e entran en ellos, y controlndolos remotamente intentan encontrar las debilidades del objetivo a real. Esta estrategia har que en los registros del sistema atacado aparezcan datos sospechosos a acerca del ordenador intermedio, pero pocas veces del autntico enemigo. Las autoridades e tendrn que ponerse en contacto con el ordenador empleado como plataforma para buscar en a l indicios del verdadero atacante. e

16.2.5.

Ataques Pasivos

Recientemente se han detectado fallos de seguridad en los navegadores de Internet que permitir a un hipottico atacante colocar en su pgina web cdigo malicioso. De esta an e a o forma todos los que visitaran esa pgina y no hubieran tomado las adecuadas precauciones a se ver afectados con problemas tales como la ejecucin de algn programa posiblemente an o u un virus, o el env de algn chero propio al atacante, todo ello de forma inadvertida, por o u supuesto. El atacante slo tiene que esperar a que los incautos vayan cayendo. . . o Desgraciadamente, cada versin de los navegadores ms populares presenta nuevos probleo a mas de este tipo, si bien suelen ser identicados que no siempre resueltos con bastante celeridad, en gran parte gracias al excelente trabajo de Juan Carlos Garc Cuartango. Espea remos que poco a poco esta tendencia se vaya corrigiendo.

16.2.6.

Ataques Coordinados

Uno de los tipos de ataque que ms fama ha cobrado ultimamente es el que se conoce a como Denegacin de Servicio (en ingls Denial of Service, o DoS). Este se aprovecha de que los o e servidores, cuando reciben una solicitud de conexin, reservan memoria para atenderla. Basta, o pues, con efectuar miles de solicitudes incompletas para bloquear la memoria del servidor, e Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

16.3. Cmo Protegerse del Ataque de los Hackers o

193

impedir que acepte ms conexiones. En la prctica, este ataque no permite robar informacin, a a o sino unicamente paralizar un servidor, lo cual puede hacer suciente dao en sitios web que n ofrecen servicios en l nea, como los dedicados al comercio electrnico. o En realidad, la unica modalidad efectiva de ataque DoS es aquella que se lleva a cabo, simultneamente y de forma distribuida, por muchos computadores. El quid de la cuestin a o radica en que prcticamente cualquier tipo de ataque puede ser automatizado mediante un a programa adecuado, por lo que un hacker podr construir un troyano que incorporara el a cdigo necesario para efectuar el ataque, y limitarse a coordinarlo cuando lo estime oportuno. o Vulgarmente, se denomina zombie a aquella computadora que contiene un cdigo capaz de o contribuir en un ataque distribuido, de forma inadvertida para sus usuarios. Obsrvese que el crecimiento casi explosivo de Internet, impulsado en muchas ocasiones e por pol ticas poco realistas de los gobiernos, est conduciendo a la existencia de un nmero a u cada vez mayor de computadoras con una deciente administracin, conectadas a la Red en o bibliotecas, colegios, etc., perfectas candidatas a protagonizar el prximo ataque distribuido, o que posiblemente provocar prdidas millonarias y har correr r de tinta. a e a os

16.3.

Cmo Protegerse del Ataque de los Hackers o

Despus de haber le las anteriores secciones, parece una autntica locura tener ordenae do e dores conectados a Internet. Nada ms lejos de la realidad. As como hay muchas formas de a poder entrar fraudulentamente en un ordenador, tambin hay muchas formas de protegerse e razonablemente contra estos ataques. Vamos a dar una serie de consejos prcticos que, si no a nos protegen totalmente, ponen las cosas bastante dif ciles a los hackers. No obstante, lo mejor es conocer bien nuestro propio sistema para poder adaptar estas medidas a nuestro caso concreto. Slo la Informacin Necesaria. No almacene informacin sensible en su ordenador si sta o o o e no necesita ser consultada desde el exterior. Por qu colocar un premio extra para los e hackers? Instalacin de Demonios. Cuando instale cualquier software que incluya algn demonio, o u asegrese de que se trata de la versin ms reciente y actualizada, que deber ser la u o a a ms segura. Desconf de las versiones beta, a no ser que sepa muy bien lo que hace. a e Congure sus servidores de la forma ms conservadora posible. No habilite usuarios a genricos sin antes asegurarse de que no poseen excesivos privilegios. Si tiene alguna e duda sobre alguna funcionalidad del servidor en cuestin, deshabil o tela. Consulte peridicamente las pginas de los fabricantes de software y aquellas especializao a das en alertar sobre fallos de seguridad, ellas le informarn de los agujeros ms recientes a a y de cmo eliminarlos. Muchos hackers tambin las consultan, pero con otros propsitos. o e o Ejecute peridicamente alguna utilidad que recorra los puertos de su sistema para saber o en cules hay demonios. Esto le permitir detectar programas del tipo Back Orice. a a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

194

16. Hackers Vigile su Software Criptogrco. Emplee siempre que pueda SSL o TLS en sus comunia caciones, y asegrese de que todos los programas de cifrado que usa funcionan con claves u de al menos 128 bits. Contra los Ataques por Diccionario. Muchos sistemas operativos impiden que un administrador abra una consola remota, por lo que aunque alguien averige su contrasea, u n no podr emplearla a no ser que disponga de acceso f a sico a la computadora. Si su ordenador est conectado a Internet, use esta caracter a stica, a no ser que necesite poder abrir consolas remotas como administrador. Asegrese de que el chero de contraseas est protegido frente a accesos externos. Aforu n a tunadamente, casi todos los sistemas operativos modernos incorporan esta caracter stica por defecto. Cambie peridicamente las contraseas, y sobre todo, use buenas contraseas. Existen o n n utilidades para realizar ataques de diccionario (por ejemplo, la famosa John The Ripper) que nos permitirn saber si nuestras claves son satisfactorias. a Los Archivos de Registro. Sern nuestra mejor defensa contra los hackers. Hay que cona sultarlos frecuentemente para detectar entradas sospechosas, y nunca bajar la guardia. Tampoco viene mal efectuar copias de seguridad en medios externos al ordenador, como pueden ser diskettes o cintas magnticas. De esta forma el vaquero no podr borrar e a totalmente sus huellas.

16.4.

Conclusiones

Cuando hacemos un viaje solemos tomar ciertas precauciones, que reducen el riesgo de tener un accidente, o al menos el posible dao en caso de sufrirlo. Nadie que est lo sucienn e temente equilibrado mentalmente y que conozca los medios de transporte emprende un viaje pensando que va a sufrir un accidente. Estos razonamientos son totalmente vlidos cuando nos a enfrentamos a los hackers. No hay que alarmarse, pero tampoco hemos de bajar la guardia. Todos hemos o historias acerca de personas que se inltran en redes, que cambian la do trayectoria de satlites de comunicaciones, o que venden secretos militares a pa enemigos. e ses Todo esto es muy espectacular, y en algunos casos puede que hasta cierto. Pero si razonamos un poco nos daremos cuenta de que los mejores hackers no han sido descubiertos, bien por razones de publicidad pensemos en un banco al que le roban varios cientos de millones de pesetas, bien porque ha resultado imposible localizarlos.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Cap tulo 17

Virus
Quiz uno de los temas ms famosos y sobre los que ms mitos corren en el mbito de a a a a la Informtica sean los virus. Programas malignos que son capaces de parasitar un sistema, a reproducindose y devorndolo por dentro, la imagen que la gente tiene acerca de los virus e a est deformada por el desconocimiento y las modernas leyendas urbanas. a Los virus estaban entrando ya en lo que parec su denitivo declive cuando el auge de a Internet provoc su relanzamiento, y la aparicin de nuevas y ms peligrosas formas de contao o a gio. Hoy por hoy constituyen uno de los problemas de seguridad que ms dinero e informacin a o hacen perder a los usuarios, por lo que dedicaremos un breve cap tulo a estudiarlos.

17.1.

Origen de los Virus

De origen incierto, los virus existen prcticamente desde los inicios de la Informtica a gran a a escala. Desde aquellos programas gusano, capaces de copiarse a s mismos hasta colapsar un sistema, hasta casos que han dado recientemente la vuelta al mundo, como Melissa y I Love You, que trajeron de cabeza a una gran cantidad de usuarios, el aumento de complejidad en los sistemas ha llevado aparejada nuevas e inquietantes formas de comprometer la seguridad de las computadoras. Muchos dicen que los virus nacieron como una medida de las compa de desarrollo de nas software para disuadir a la gente del uso de copias piratas de sus programas. Aunque este extremo no ha sido demostrado ni tampoco desmentido, muchos sugieren que algunos virus eran inoculados en las versiones legales de algunos programas, congurados para activarse cuando se intentara llevar a cabo una copia fraudulenta. El tiempo ha demostrado que los verdaderos perjudicados son las mismas compa y los propios usuarios. nas Lo cierto es que hoy por hoy existen miles de virus, y que cada d surgen ms. Al igual a a que unos son creados con el unico y dudoso nimo de provocar una sonrisa en los afectados, a no es menos cierto que otros se desarrollan con nes autnticamente destructivos, casi podr e a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

196 decirse que terroristas.

17. Virus

17.2.

Anatom de un Virus a

Pero, qu es un virus? Denominaremos as a cualquier programa capaz de inltrarse en e un sistema y ejecutarse sin que el usuario tenga noticia de ello. Normalmente sacan copias de s mismos de forma ms o menos indiscriminada, con la intencin de reproducirse, aunque esto a o no ocurre siempre. En realidad son dos las habilidades propias de un virus: la capacidad de propagarse, y sus efectos destructivos. Si unicamente presenta la primera de ellas, careciendo de la segunda, se suele denominar gusano. Aquellos programas que slamente son destructivos, o y que no se contagian, se denominan genricamente bombas lgicas. El caso de los troyanos, e o como veremos ms adelante, es ligeramente distinto, ya que si bien no pueden reproducirse a por sus propios medios, s que nacen con la intencin de ser propagados. o El trmino virus se tom prestado a los bilogos porque responde bastante bien a la losof e o o a de estos programas. Un virus biolgico se inltra en una clula y le inocula su cdigo gentico o e o e para, aprovechando el sistema de reproduccin de su involuntaria antriona, duplicarse tantas o veces como le sea posible. La clula muere en el proceso. Un virus informtico se instala en e a una computadora y se ejecuta de manera inadvertida para el usuario. Cuando esa ejecucin o tiene lugar, primero se efectan las copias y despus el virus daa el sistema. u e n

17.2.1.

Mtodos de Contagio e

Al principio, cuando las redes informticas eran pocas y estaban relativamente aisladas, a los mecanismos de propagacin de los virus se basaban en modicar los programas ejecutao bles, aadindoles el cdigo del propio virus. El usuario apenas se daba cuenta de que sus n e o cheros ejecutables crec ligeramente, y cuando los copiara en diskettes y los llevara a otros an ordenadores, el contagio estar asegurado. En otros casos se modicaban los denominados a sectores de arranque, que son las zonas de los discos duros y diskettes que el ordenador carga en memoria y ejecuta en el momento de ser puesto en marcha. Este mecanismo, pensado originalmente para que una computadora pueda cargar el sistema operativo, resultaba ms que a atractivo como medio de transporte de los virus. Esto explica la insistencia de los expertos en que no se arranque el ordenador con diskettes dudosos en su interior, o en que se arranque con diskettes limpios ante cualquier sospecha sobre el estado de salud del disco duro. Hoy las cosas han cambiado. Los sistemas operativos han crecido en complejidad, y programas tan inocentes como los paquetes de ocina que agrupan procesador de textos, hoja de clculo, gestor de correo electrnico, etc. incorporan complet a o simos lenguajes de programacin que nos permiten automatizar cualquier tarea. Esta caracter o stica, pese a ser extremadamente poderosa, puede ser terreno abonado para un virus. En marzo de 1999, el virus Melissa, que no es ni ms ni menos que una macro de Microsoft Word lo cual lo convierte, al menos a en teor en un virus multiplataforma1 , colaps las redes corporativas de varias empresas. a, o
1

Un programa se dice multiplataforma si se puede ejecutar en diferentes sistemas operativos. As por ,

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

17.3. Cundo son Peligrosos los Virus a

197

Melissa ven camuado en un inocente archivo de texto, que al ser abierto por el usuario, le a a las primeras cincuenta entradas de la libreta de direcciones del gestor de correo electrnico, o y se reenviaba por dicho medio a otras tantas nuevas v ctimas. Como era de suponer, este gusano provoc la ca de varios servidores de correo electrnico en cuestin de horas. Lo o da o o ms preocupante de todo esto es que la situacin, lejos de ser corregida, volvi a repetirse a o o apenas un ao despus con en archiconocido I Love You, de caracter n e sticas similares. Pero no todos los medios de contagio tienen por qu ser tan sosticados. Algunos programas e funcionan exactamente igual que el Caballo de Troya, y precisamente por eso se les denomina troyanos. Un troyano no tiene un mecanismo de contagio propiamente dicho, sino que dispone de un envoltorio ms o menos atractivo una felicitacin navidea, una imagen simptica, un a o n a chiste, etc. para que el usuario desprevenido lo ejecute. Un ejemplo bastante sorprendente de lo peligroso que puede ser un troyano se dio en 1999 cuando unos hackers, tras haberse introducido en un servidor bastante conocido que suministraba utilidades de monitorizacin o de red, sustituyeron uno de los programas ms usados por los administradores por otro que a enviaba informacin condencial acerca del sistema por correo electrnico. o o

17.2.2.

La Fase Destructiva de un Virus

La mayor de los virus posee una denominada fase de letargo, en la que permanece inactivo, a o a lo sumo se dedica unicamente a reproducirse. Diferentes eventos pueden provocar que un virus despierte, como puede ser una fecha los famosos virus Viernes 13 y Chernobyl son un claro ejemplo, un nmero determinado de ejecuciones, etc. u Cuando un virus entra en su fase destructiva puede ocurrir cualquier cosa. Desde el simple bloqueo del sistema, con algn mensaje en la pantalla, hasta la destruccin total y absoluta u o del contenido del disco duro del sistema, hay casi tantos posibles comportamientos como virus. El tremendo auge que est teniendo Internet en los ultimos aos est propiciando la apaa n a ricin de virus que permiten a un usuario remoto tomar literalmente el control del sistema, o haciendo creer a la v ctima que su ordenador est poco menos que pose por algn fantasma. a do u Este comportamiento lo podemos ver en el tristemente famoso Back Orice. Otros comportamientos no menos desagradables pueden ser el env de informacin privada a travs de la o o e red, y prcticamente cualquier cosa que una mente calenturienta pueda concebir. a

17.3.

Cundo son Peligrosos los Virus a

Hay personas que creen que con slo acercar un diskette contaminado a un ordenador sano, o ste ultimo puede quedar contagiado, o que basta con leer un correo electrnico para que un e o virus se extienda inexorablemente por nuestro sistema aniquilndolo todo a su paso. Esto es a rotundamente falso; un virus no es ms que un programa, y como tal ha de ser ejecutado para a
ejemplo, el lenguaje de programacin Java est diseado para que un mismo programa pueda correr en casi o a n cualquier ordenador, independientemente del sistema operativo que posea.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

198 que entre en accin. o

17. Virus

En cuanto al mito de los correos electrnicos, diremos que leer un correo de texto es, como o cabr esperar, del todo punto inofensivo. Ahora bien, si ese correo lleva incluido algn archivo a u ejecutable, o algn archivo capaz de llevar cdigo ejecutable un chero de procesador de u o texto, o de hoja de clculo, por ejemplo, puede que el ordenador haga correr dicho cdigo a o sin avisar al usuario. Este problema ha sido detectado recientemente en ciertos programas y constituye un agujero de seguridad ciertamente intolerable, para el que esperamos haya pronto una solucin satisfactoria. o Pero el problema real de todo este asunto lo constituye el hecho de que los sistemas operativos que usa casi todo el mundo otorgan control total sobre la computadora a cualquier programa que lance el usuario, de forma consciente o no, y de esta forma permiten que un virus o cualquier otro programa pueda producir daos impunemente. Esto no ocurre en n los sistemas operativos serios, donde cada usuario tiene diferentes privilegios, de forma que slo o los programas que ejecute el administrador de la computadora pueden llegar a ser peligrosos. Si un usuario normal ejecuta un virus, ste slo podr estropear, en el peor de los casos, los e o a archivos de quien lo ejecut, pero en ningn caso podr llegar a afectar al sistema. o u a

17.4.

Protegerse frente a los Virus

Una vez que sabemos algo ms sobre los virus, y que hemos visto por dnde se pueden a o inltrar en un sistema y por dnde no, estamos en condiciones de elaborar un conjunto m o nimo de medidas preventivas que nos va a permitir defendernos de este peligro. Trabaje habitualmente en su sistema como usuario, no como administrador. Si por error ejecuta un virus, ste no tendr privilegios para daar el sistema. Este consejo va dirigido e a n a usuarios de sistemas operativos serios, como UNIX, Linux, FreeBSD, Windows NT y Windows 2000. No ejecute nunca programas de origen dudoso o desconocido. Utilice software original. Si emplea un paquete de ocina capaz de ejecutar macros, asegrese de que tiene desacu tivada la ejecucin automtica de stas. Si no puede desactivarla, emplee otro programa. o a e Utilice frecuentemente un buen antivirus. Esto no le proteger a usted, sino ms bien a a a la comunidad. Suponga que todo el mundo emplea antivirus, entonces todos los virus conocidos se vern frenados en su contagio, quedando slo los desconocidos, frente a los a o que un antivirus se vuelve intil. Podr entonces pensarse en dejar de emplear antivirus, u a pero en ese caso los virus conocidos volver a representar un peligro. an Realice con frecuencia copias de seguridad de la informacin importante. De esta forma, o si un virus destruye sus datos, siempre podr echar mano de la copia para minimizar el a dao. n Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

Parte VI

Apndices e

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Apndice A e

Criptograf Cuntica a a
La F sica Cuntica estudia el comportamiento de la materia a escalas muy pequeas, del a n orden de los tomos. En el mundo cuntico las reglas que rigen la Mecnica Clsica dejan a a a a de tener validez, y se producen fenmenos tan sorprendentes como interesantes, que abren o las puertas a posibilidades de aplicacin casi incre o bles en muchos campos, entre los que se encuentra, por supuesto, la Criptograf a. Cabe recordar que hoy por hoy ya existen algunas aplicaciones prcticas de la Mecnica a a Cuntica en Criptograf mientras que otras, como las basadas en los computadores cunticos, a a, a siguen perteneciendo al mbito de la especulacin, ya que la tecnolog que podr permitirnos a o a a desarrollar dispositivos de este tipo an no existe. u

A.1.

Mecnica Cuntica y Criptograf a a a

Una de las aplicaciones directas de los fenmenos cunticos en Criptograf viene de un o a a principio bsico de esta teor un objeto no puede interaccionar con otro sin experimentar a a: alguna modicacin. Esto est permitiendo fabricar canales de comunicacin en los que los dao a o tos viajan en forma de fotones individuales con diferentes caracter sticas. El hecho aqu es que si un atacante intentara interceptar la comunicacin no tendr ms remedio que interactuar o a a con esos fotones, modicndolos de manera detectable por el receptor. a Este tipo de propiedades permite construir l neas de comunicacin totalmente imposibles o de interceptar sin ser descubierto, y de hecho ya se han llevado a cabo algunos experimentos en los que se ha logrado transmitir informacin a distancias y velocidades respetables. Evio dentemente, estos canales ultraseguros dif cilmente sern tan rpidos o tan baratos como las a a l neas elctricas y pticas actuales, pero en un futuro prximo constituirn medios idneos e o o a o para transmitir informacin de carcter sensible. o a Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

202

A. Criptograf Cuntica a a

1 2

A 3 4

Figura A.1: Experimento con espejos para comprobar la superposicin cuntica de estados o a en un fotn. A es una fuente emisora de fotones, B y C son receptores, 1 y 4 son espejos o 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 dir la intuicin, en B no se detecta nada. a o

A.2.

Computacin Cuntica o a

Existe un fenmeno en Mecnica Cuntica realmente dif de entender para nuestras o a a cil clsicas mentes. Obsrvese la gura A.1. En ella se ilustra un conocido y sorprendente experia e mento. 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 intuicin y la Mecnica Clsica nos dir o a a an que cada fotn acabar excitando B o C con un 50 % de probabilidades. Pues bien, lo que en o a realidad ocurre es que C se excita siempre y B no lo hace nunca. Esto demuestra que, a nivel subatmico, cualquier part o cula puede estar en dos sitios simultneamente, o ms propiamena a te, en una superposicin cuntica de dos estados, lo cual signica que est realmente en esos o a a 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 cunticos de una o muy pocas part a culas. Si colocamos dichas part culas en una combinacin de los dos estados bsicos, tendr o a amos un bit cuntico (o qubit), capaz de a representar un 1 y un 0. . . al mismo tiempo!. Estas ideas, que datan de los aos 80, se han barajado ms bien como simples entretenin a mientos para mentes inquietas, hasta que a mediados de los 90 se propuso el primer algoritmo capaz de ser ejecutado en una computadora cuntica. Dicho algoritmo podr de forma ea a, ciente, factorizar nmeros enteros muy grandes. Imag u nense las implicaciones que esto tiene para la Criptograf moderna, ya que supondr la ca de la gran mayor de los algorita a da a mos asimtricos, que basan su funcionamiento en el problema de la factorizacin de grandes e o enteros, y la necesidad inmediata de alargar considerablemente las longitudes de claves para algoritmos simtricos. Evidentemente, estos resultados han provocado que mucha gente tome e muy en serio este tipo de computadoras, y que en la actualidad haya importantes grupos Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

A.3. Expectativas de Futuro dedicados a la investigacin en este campo. o

203

A.3.

Expectativas de Futuro

Por fortuna o por desgracia, segn se mire, los modelos cunticos de computacin hoy u a o por hoy no pasan de meras promesas, ya que la tecnolog actual no permite connar part a culas individuales de forma que preserven su estado cuntico. Los ms optimistas aseguran que en a a pocos aos tendremos los primeros microprocesadores cunticos en funcionamiento, mientras n a que la gran mayor opina que todav transcurrirn dcadas antes de poder disponer del a a a e primer dispositivo realmente operativo si es que lo conseguimos algn d u a. Lo que s podemos armar con rotundidad es que los modelos criptogrcos actuales se a guirn siendo vlidos durante algunos aos ms. En cualquier caso, no conviene perder de vista a a n a estas promesas tecnolgicas, ya que cuando se conviertan en realidades, obligarn a replantear o a muchas cuestiones, y no slo en el mbito de la Criptograf o a a.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

204

A. Criptograf Cuntica a a

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Apndice B e

Ayudas a la Implementacin o
Incluiremos en este apndice informacin util para facilitar al lector la implementacin de e o o diferentes algoritmos criptogrcos. Aquellos que no sepan programar, o que simplemente no a deseen escribir sus propias versiones de los criptosistemas que aparecen en este libro, pueden prescindir de esta seccin. o

B.1.

DES

En el cap tulo dedicado a algoritmos simtricos por bloques se ha hecho una descripcin e o completa del algoritmo DES, pero se han omitido deliberadamente algunos detalles que slo o son utiles de cara a la implementacin, como pueden ser los valores concretos de las S-Cajas o 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 nmero de seis bits de entrada b0 b1 b2 b3 b4 b5 , y buscar la entrada correspondiente a la u la b0 b5 , columna b1 b2 b3 b4 . 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 corresponden al nmero u de bit del valor inicial (empezando por el 1) que debe aparecer en la posicin correspondiente. o Por ejemplo, la primera tabla de B.2 lleva el valor b1 b2 b3 . . . b64 en b58 b50 b42 . . . b7 . Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

206

B. Ayudas a la Implementacin o

Fila 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

0 14 0 4 15 15 3 0 13 10 13 13 1 7 13 10 3 2 14 4 11 12 10 9 4 4 13 1 6 13 1 7 2

1 4 15 1 12 1 13 14 8 0 7 6 10 13 8 6 15 12 11 2 8 1 15 14 3 11 0 4 11 2 15 11 1

2 13 7 14 8 8 4 7 10 9 0 4 13 14 11 9 0 4 2 1 12 10 4 15 2 2 11 11 13 8 13 4 14

3 1 4 8 2 14 7 11 1 14 9 9 0 3 5 0 6 1 12 11 7 15 2 5 12 14 7 13 8 4 8 1 7

4 2 14 13 4 6 15 10 3 6 3 8 6 0 6 12 10 7 4 10 1 9 7 2 9 15 4 12 1 6 10 9 4

5 15 2 6 9 11 2 4 15 3 4 15 9 6 15 11 1 10 7 13 14 2 12 8 5 0 9 3 4 15 3 12 10

6 11 13 2 1 3 8 13 4 15 6 3 8 9 0 7 13 11 13 7 2 6 9 12 15 8 1 7 10 11 7 14 8

Columna 7 8 8 3 1 10 11 15 7 5 4 9 14 12 1 5 2 11 5 1 10 2 0 11 7 4 10 1 3 4 13 15 8 9 6 8 1 5 8 15 13 6 8 0 5 6 3 7 10 11 13 3 10 14 14 10 7 9 1 10 4 12 2 0 13 15

9 10 6 12 11 7 0 8 6 13 8 1 15 2 7 1 4 5 0 9 15 13 1 0 14 12 3 15 5 9 5 6 12

10 6 12 9 3 2 1 12 7 12 5 2 14 8 2 3 5 3 15 12 0 3 13 4 1 9 5 6 0 3 6 10 9

11 12 11 7 14 13 10 6 12 7 14 12 3 5 12 14 11 15 10 5 9 4 14 10 7 7 12 8 15 14 11 13 0

12 5 9 3 10 12 6 9 0 11 12 5 11 11 1 5 12 13 3 6 10 14 0 1 6 5 2 0 14 5 0 15 3

13 9 5 10 0 0 9 3 5 4 11 10 5 12 10 2 7 0 9 3 4 7 11 13 0 10 15 5 2 0 14 3 5

14 0 3 5 6 5 11 2 14 2 15 14 2 4 14 8 2 14 8 0 5 5 3 11 8 6 8 9 3 12 9 5 6

15 7 8 0 13 10 5 15 9 8 1 7 12 15 9 4 14 9 6 14 3 11 8 6 13 1 6 2 12 7 2 8 11

S-Caja S1

S2

S3

S4

S5

S6

S7

S8

Cuadro B.1: S-Cajas de DES.

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

B.1. DES Permutacin Inicial Pi o 18 10 2 60 52 44 22 14 6 64 56 48 17 9 1 59 51 43 21 13 5 63 55 47 Permutacin Final Pf o 24 64 32 39 7 47 22 62 30 37 5 45 20 60 28 35 3 43 18 58 26 33 1 41

207

58 62 57 61 40 38 36 34

50 54 49 53 8 6 4 2

42 46 41 45 48 46 44 42

34 38 33 37 16 14 12 10

26 30 25 29 56 54 52 50

36 40 35 39 15 13 11 9

28 32 27 31 55 53 51 49

20 24 19 23 23 21 19 17

12 16 11 15 63 61 59 57

4 8 3 7 31 29 27 25

Cuadro B.2: Permutaciones Inicial (Pi ) y Final (Pf ) del algoritmo DES. Permutacin o 4 5 6 16 17 16 26 27 28 Permutacin o 28 17 1 3 9 19 E 7 17 29 P 15 13

32 12 22 16 2

1 13 23 7 8

2 12 24 20 24

3 13 25 21 14

4 14 24 29 32

5 15 25 12 27

8 18 28 23 30

9 19 29 26 6

8 20 30 5 22

9 21 31 18 11

10 20 32 31 4

11 21 1 10 25

Cuadro B.3: Permutaciones E y P para la funcin f de DES. o

Permutaciones Inicial y Final La tabla B.2 contiene las permutaciones inicial y nal Pi y Pf 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. Ntese que cada una de estas permutaciones es la inversa de la otra. o Funcin f o En el clculo de la funcin f se emplean dos permutaciones, E y P (ver gura 10.3). Dichas a o permutaciones se detallan en la tabla B.3. E es una permutacin de expansin, por lo que da o o como salida 48 bits a partir de los 32 de entrada. Generacin de las Ki o En la gura 10.4 podemos observar el proceso de generacin de los 16 valores de Ki , en el o 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 slo 56, mientras que la segunda toma 56, y o devuelve 48. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

208 Permutacin o 17 9 1 35 27 19 23 15 7 37 29 21 Permutacin o 3 28 15 13 2 41 39 56 34 EP1 58 11 62 13 EP2 6 52 53

B. Ayudas a la Implementacin o

57 10 63 14 14 26 51 17 8 45

49 2 55 6 11 16 33

41 59 47 61 24 7 48

33 51 39 53 1 27 44

25 43 31 45 5 20 49

50 3 54 5 21 31 46

42 60 46 28 10 37 42

34 52 38 20 23 47 50

26 44 30 12 19 55 36

18 36 22 4 12 30 29 4 40 32

Cuadro B.4: Permutaciones EP1 y EP2 para DES.

B.1.3.

Valores de prueba

Una vez que tengamos implementado nuestro algoritmo DES, conviene asegurarse de que funciona adecuadamente. Se incluyen en esta seccin algunos valores de prueba, que contieo nen 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 estn representados en a 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 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

B.1. DES Codicacin o Codificando con Clave : 0123456789ABCDEF

209

Texto Claro :0000000000000000 Bloque permutado :0000000000000000 Paso01 : L=00000000 R=2F52D0BD Paso02 Paso03 : L=0CB9A16F R=15C84A76 Paso04 Paso05 : L=8E857E15 R=20AC7F5A Paso06 Paso07 : L=526671A7 R=D1AE9EE9 Paso08 Paso09 : L=6C4BBB2C R=92882868 Paso10 Paso11 : L=694A6072 R=A0A3F716 Paso12 Paso13 : L=0A0D3F66 R=E672C20E Paso14 Paso15 : L=C0DBACF2 R=0B78E40C Paso16 Resultado sin permutar:2F4BCFCD0B78E40C Resultado final :D5D44FF720683D0D ----Codificando con

: : : : : : : :

L=2F52D0BD L=15C84A76 L=20AC7F5A L=D1AE9EE9 L=92882868 L=A0A3F716 L=E672C20E L=0B78E40C

R=0CB9A16F R=8E857E15 R=526671A7 R=6C4BBB2C R=694A6072 R=0A0D3F66 R=C0DBACF2 R=2F4BCFCD

Clave : 0000000000000000

Texto Claro :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=E0D40658 Paso02 Paso03 : L=BA8920BC R=90264C4F Paso04 Paso05 : L=2E3FA1F4 R=8D42B315 Paso06 Paso07 : L=8769003E R=9F14B42F Paso08 Paso09 : L=E48646E9 R=6B185CDC Paso10 Paso11 : L=4E789B16 R=F3AA9FA8 Paso12 Paso13 : L=56397838 R=541678B2 Paso14 Paso15 : L=A4C1CE1A R=191E936E Paso16 Resultado sin permutar:8C0D6935191E936E Resultado final :9D2A73F6A9070648 ----Codificando con

: : : : : : : :

L=E0D40658 L=90264C4F L=8D42B315 L=9F14B42F L=6B185CDC L=F3AA9FA8 L=541678B2 L=191E936E

R=BA8920BC R=2E3FA1F4 R=8769003E R=E48646E9 R=4E789B16 R=56397838 R=A4C1CE1A R=8C0D6935

Clave : 23FE536344578A49

Texto Claro :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=A8AEA01C Paso02 Paso03 : L=71F914D1 R=BC196339 Paso04 Paso05 : L=6893EC61 R=D5C2706F Paso06 Paso07 : L=ABD6DDAC R=017151AF Paso08 Manuel J. Lucena Lpez o

: : : :

L=A8AEA01C L=BC196339 L=D5C2706F L=017151AF

R=71F914D1 R=6893EC61 R=ABD6DDAC R=3FB9D8DA

Criptograf y Seguridad en Computadores a

210 Paso09 : L=3FB9D8DA R=3AAAC260 Paso10 Paso11 : L=283E370C R=FBA98CD4 Paso12 Paso13 : L=65FBC266 R=FCA1C494 Paso14 Paso15 : L=F7A90537 R=745EBD6A Paso16 Resultado sin permutar:86810420745EBD6A Resultado final :1862EC2AA88BA258 : : : :

B. Ayudas a la Implementacin o L=3AAAC260 L=FBA98CD4 L=FCA1C494 L=745EBD6A R=283E370C R=65FBC266 R=F7A90537 R=86810420

Decodicacin o Decodificando con Clave : 0123456789ABCDEF Texto Cifrado :0000000000000000 Bloque permutado :0000000000000000 Paso01 : L=00000000 R=01BA8064 Paso02 Paso03 : L=A657157E R=C4DEA13D Paso04 Paso05 : L=0C766133 R=95AD3310 Paso06 Paso07 : L=C5C12518 R=1FFFFF76 Paso08 Paso09 : L=33571627 R=CA47EDD9 Paso10 Paso11 : L=5B462EE4 R=DB9C4677 Paso12 Paso13 : L=E0B23FE6 R=8A5D943F Paso14 Paso15 : L=3ABFFA37 R=FE6A1216 Paso16 Resultado sin permutar:5CBDAD14FE6A1216 Resultado final :14AAD7F4DBB4E094 ----Decodificando con Clave : 0000000000000000 Texto Cifrado :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=E0D40658 Paso02 Paso03 : L=BA8920BC R=90264C4F Paso04 Paso05 : L=2E3FA1F4 R=8D42B315 Paso06 Paso07 : L=8769003E R=9F14B42F Paso08 Paso09 : L=E48646E9 R=6B185CDC Paso10 Paso11 : L=4E789B16 R=F3AA9FA8 Paso12 Paso13 : L=56397838 R=541678B2 Paso14 Paso15 : L=A4C1CE1A R=191E936E Paso16 Resultado sin permutar:8C0D6935191E936E Resultado final :9D2A73F6A9070648 -----

: : : : : : : :

L=01BA8064 L=C4DEA13D L=95AD3310 L=1FFFFF76 L=CA47EDD9 L=DB9C4677 L=8A5D943F L=FE6A1216

R=A657157E R=0C766133 R=C5C12518 R=33571627 R=5B462EE4 R=E0B23FE6 R=3ABFFA37 R=5CBDAD14

: : : : : : : :

L=E0D40658 L=90264C4F L=8D42B315 L=9F14B42F L=6B185CDC L=F3AA9FA8 L=541678B2 L=191E936E

R=BA8920BC R=2E3FA1F4 R=8769003E R=E48646E9 R=4E789B16 R=56397838 R=A4C1CE1A R=8C0D6935

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

B.2. IDEA Decodificando con Clave : 23FE536344578A49 Texto Cifrado :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=3C272434 Paso02 Paso03 : L=0349A079 R=57DB85A0 Paso04 Paso05 : L=2456EB13 R=0664691A Paso06 Paso07 : L=A7E17FC4 R=5C492B70 Paso08 Paso09 : L=5DA12B1E R=A8F499FD Paso10 Paso11 : L=3556E6F4 R=DA8A4F75 Paso12 Paso13 : L=D544F4AE R=6A25EFF3 Paso14 Paso15 : L=30E29C71 R=5F3B58B8 Paso16 Resultado sin permutar:AF054FAE5F3B58B8 Resultado final :F4E5D5EFAA638C43

211

: : : : : : : :

L=3C272434 L=57DB85A0 L=0664691A L=5C492B70 L=A8F499FD L=DA8A4F75 L=6A25EFF3 L=5F3B58B8

R=0349A079 R=2456EB13 R=A7E17FC4 R=5DA12B1E R=3556E6F4 R=D544F4AE R=30E29C71 R=AF054FAE

B.2.

IDEA

Incluimos ahora valores de prueba para el algoritmo IDEA, tanto para las claves intermedias Zi de codicacin y decodicacin, como para los valores de las Xi en cada ronda. o o Los datos, al igual que en el caso de DES, estn representados en hexadecimal. Ntese que la a o interpretacin numrica de cada registro de 16 bits es, a diferencia de algoritmos como MD5, o e de tipo big endian. Esto signica que el primer byte en la memoria es el ms signicativo. a 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 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

212 Ronda Ronda Ronda Ronda Ronda Ronda ----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 Manuel J. Lucena Lpez o 4 5 6 7 8 9 : : : : : : 743E 1E4E B2B4 963D 3F93 35AA 6544 A191 C844 21FE 30ED BA99 87F7 C3B3 D951 A865 3211 7655 77DA E01F 7A66 A086 4F6A 153B 1A2B 159E 37BC DE02 0123 3C4D 26AF 048D 468A 4567

B. Ayudas a la Implementacin o

Criptograf y Seguridad en Computadores a

B.2. IDEA Ronda 7 : 3334 4445 5556 6667 0222 2444 Ronda 8 : 4666 6888 8AAA ACCC CEEE F111 Ronda 9 : 888C CCD1 1115 5559 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

213

Codicacin o Codificando con Clave: 0123 4567 89AB CDEF 0123 4567 89AB CDEF X1 0000 101C 5F13 BA0B 700D 7EC9 478C 348A 5500 EC29 X2 0000 6769 2568 A218 8CE7 402F FFA0 5D2B 73E7 65C9 X3 0000 FD5D 288F 1F43 C7EE 8593 EBFF DFD1 FAD6 EFA7 X4 0000 8A28 1326 D376 4315 58EE 2668 E289 5353 4710

Texto Claro: Ronda 1 : Ronda 2 : Ronda 3 : Ronda 4 : Ronda 5 : Ronda 6 : Ronda 7 : Ronda 8 : Resultado : -----

Codificando con Clave: 6382 6F7E 8AB1 0453 BFED 93DC D810 9472 X1 0123 14E6 E7A7 79A2 095B C6B0 4FB9 X2 4567 1CEF 30E6 D4C4 4ACF D5D9 7BFD X3 89AB 9EE7 FFE5 EDCA B0B8 CCF4 BF7A X4 CDEF 5701 B63C 4B56 B584 C359 BB4E Criptograf y Seguridad en Computadores a

Texto Claro: Ronda 1 : Ronda 2 : Ronda 3 : Ronda 4 : Ronda 5 : Ronda 6 :

Manuel J. Lucena Lpez o

214 Ronda 7 Ronda 8 Resultado ----: 8219 6501 11EB B6EC : F2A5 C848 9746 6910 : 7374 4387 DD37 5315

B. Ayudas a la Implementacin o

Codificando con Clave: 1111 2222 3333 4444 5555 6666 7777 8888 X1 6E63 B370 E798 6A74 8C64 1DE0 1872 A47C C87D A16D X2 7F8A EDF7 CE57 FE29 BCB9 615A CF37 34B1 F1BD DFEC X3 8B8C C835 118E 618B 5E6C FB09 E332 F343 131B 02D2 X4 8394 49A3 94EA 52D9 0DE6 D5CD 557B A473 6E87 1B16

Texto Claro: Ronda 1 : Ronda 2 : Ronda 3 : Ronda 4 : Ronda 5 : Ronda 6 : Ronda 7 : Ronda 8 : Resultado :

Decodicacin o 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 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

B.3. AES Ronda 2 Ronda 3 Ronda 4 Ronda 5 Ronda 6 Ronda 7 Ronda 8 Resultado ----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 : : : : : : : : 61D8 C7DB AFB0 E988 0C98 A38B 5D35 AACC C3DB 9502 58F8 A044 B5C8 5982 58BD 8DB9 881D 4CE9 1920 DCCC CD67 EA9C FD37 CE0C 2404 C1FC 4DA6 D5A7 9A95 D31D 4D2F 7163

215

B.3.

AES

Para el algoritmo AES vamos a representar, en primer lugar, los conjuntos de subclaves Ki para claves de cifrado de 128, 192 y 256 bits respectivamente. Cada subclave se ha representado como un conjunto de nmeros hexadecimales de ocho d u gitos, cada uno de los cuales corresponder a una columna de la matriz de clave (ver cuadro 10.5, en la pgina 123), a a de forma que los dos primeros d gitos del primer nmero corresponden al valor k0,0 , los dos u siguientes a k1,0 , y as sucesivamente

Clave : 0123456789ABCDEF0123456789ABCDEF (128 bits) Total rondas : 10 Subclaves de cifrado: K00 : 67452301 EFCDAB89 67452301 EFCDAB89 K01 : C09A9E62 2F5735EB 481216EA A7DFBD63 K02 : 3BC6001A 149135F1 5C83231B FB5C9E78 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

216 K03 K04 K05 K06 K07 K08 K09 K10 : : : : : : : : 87C94A15 90D15D38 D9905E4D 9EB855C3 DCDDC7A9 89E55F7A 7C700A57 9EDF2188 93587FE4 038922DC DA197C91 44A12952 987CEEFB 1199B181 6DE9BBD6 F3369A5E CFDB5CFF CC527E23 164B02B2 52EA2BE0 CA96C51B DB0F749A B6E6CF4C 45D05512 3487C287 F8D5BCA4 EE9EBE16 BC7495F6 76E250ED ADED2477 1B0BEB3B 5EDBBE29

B. Ayudas a la Implementacin o

Clave : 8765F4765A8594E74635D86950B78432C756365A15326D0E (192 bits) Total rondas : 12 Subclaves de cifrado: K00 : 76F46587 E794855A K01 : 5A3656C7 0E6D3215 K02 : A113E9B9 93975EE9 K03 : CD991227 0552CED8 K04 : FE7771A6 39BB4B9D K05 : 32981129 054E68A1 K06 : 2BAEEB98 BD77DDD0 K07 : 7198BD5F B31AEFC5 K08 : BF5B587E 35FAFC26 K09 : E8ABF593 D81F6114 K10 : 16DC8435 E1A42A89 K11 : F008E448 A2B62104 K12 : 23AF37C5 B4E3EAE7

69D83546 2F5F59A5 C9A1082E A4412761 938BF890 FB391907 8FEFCCF9 8DC34957 44624179 6744396A 4F53BC36 B46AA531 44EB0EAF

3284B750 C8CBDCFF C7CC3A3B 37D67988 96D93648 C282529A 8AA1A458 30B49487 F778AEBC 52BEC54C 974CDD22 55CE8FB8 E65D2FAB

: 8765F4765A8594E74635D86950B78432C756365A15326DE012345678E214320A (256 bits) Total rondas : 14 Subclaves de cifrado: K00 : 76F46587 E794855A K01 : 5A3656C7 E06D3215 K02 : EE93467C 0907C326 K03 : 5A0FD5C3 BA62E7D6 K04 : 197B29B8 107CEA9E K05 : C94E9948 732C7E9E K06 : 09CD5BBE 19B1B120 K07 : 7AC91582 09E56B1C K08 : 89B54A27 9004FB07 K09 : 4D79315F 449C5A43 Manuel J. Lucena Lpez o

Clave

69D83546 78563412 60DFF660 C234D3C4 70A31CFE B118AD5A 6912ADDE B8FDC646 F91656D9 FC619C05

3284B750 0A3214E2 525B4130 C806C726 22F85DCE 791E6A7C 4BEAF010 C1E3AC3A B2FCA6C9 3D82303F Criptograf y Seguridad en Computadores a

B.3. AES K10 K11 K12 K13 K14 : : : : : FC925933 81693169 36601ED5 1A0E935D 64F8A87D 6C96A234 C5F56B2A 5AF6BCE1 DFFBF877 3E0E149C 9580F4ED 3994F72F CF76480C E66F0F58 F1785C90 277C5224 0416C710 E80A1A28 E279C848 197246B8

217

Seguidamente representaremos los valores intermedios de cifrado y descifrado de un bloque de datos para estas tres claves. En cada l nea se representa la matriz de estado (ver cuadro 10.4, pgina 122), de forma anloga a la que se ha empleado para representar la matriz de a a clave. Clave : 0123456789ABCDEF0123456789ABCDEF (128 bits)

CIFRADO: Bloque Ronda 01 Ronda 02 Ronda 03 Ronda 04 Ronda 05 Ronda 06 Ronda 07 Ronda 08 Ronda 09 Ronda 10 Cifrado

: : : : : : : : : : : :

7563957A 201D4467 0486AEC2 EDEF12D7 C398674B C707CA8E D4D13E6C 508F2AEF E500843A 5585CDD0 74B460BC 74B460BC

7C6E9274 70B06937 951CEAA5 E6C5DB1E C9822958 A5C9F7EE 46952EB2 746D34C0 4302ADE4 43ADC584 4496A083 4496A083

6E87F937 8FBFA93C 87BCD35D E2E45A51 E84F1592 C2BB119F F24BAAEC D13BF25D 5E7E684E 1B81F49C BDBF6D1A BDBF6D1A

A2F4AB04 1D4757CF CE92939C 8D1F89E9 0C4556C0 D177A68A 6D5929FE 288DCBBA DE924E02 1EBB3594 5B297D80 5B297D80

(128 bits)

DESCIFRADO: Bloque : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 10 : Descifrado: 7563957A B319F6D6 3968DE25 9706478A 87C9E8FB C808ECD8 6528BC87 6FA21399 60C97EE2 75C4C689 3E08FE25 3E08FE25 7C6E9274 F00601B2 C6266F04 462565BA 25B34D03 A3E29DAE 22719EE4 A1A4D30D 7509D120 5B36142C DE23F126 DE23F126 6E87F937 031D107C A33BA0FF 164FF166 D74DE19C 94293CCB FD034F6F 45B2E47D 7C04EB6C A18AEADD F00782B7 F00782B7 A2F4AB04 1E876239 D7C06313 8FECC208 5FA360A5 6304742C 2EF66891 B5A718DF 8DE033A3 22F1EB70 1D64561D 1D64561D (128 bits)

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

218 Clave

B. Ayudas a la Implementacin o : 8765F4765A8594E74635D86950B78432C756365A15326D0E (192 bits)

CIFRADO: Bloque Ronda 01 Ronda 02 Ronda 03 Ronda 04 Ronda 05 Ronda 06 Ronda 07 Ronda 08 Ronda 09 Ronda 10 Ronda 11 Ronda 12 Cifrado

: : : : : : : : : : : : : :

7563957A 160FB8C4 6FCAABF7 B1FE1D21 C4A63E0D 3AD99ABB 726C6E54 E9DC1656 CCE9EE83 99765788 D732AFDE 35EBB790 53C657C8 53C657C8

7C6E9274 526A9EC9 D15A8F7D 418746AA 9C5AAA4F AD937C2E FA30A491 D1F328F5 33D87F86 F3391287 BED82C86 C52B1D57 41EB61D4 41EB61D4

6E87F937 D0AFCB25 9A5EDF3E 9DCA21F6 B71F18E7 81572FED CF114FD5 5BEEFF85 099585FE 2F36C0DD D7A9B478 C609E1EC 1BC2421F 1BC2421F

A2F4AB04 70621BF8 37A5BC37 FA2C13FA DCDA3D84 D9E7C4E8 289E7E5A 55D84773 6D8EC86F 7F13F5B7 DDFE7792 8927113C 0CC6F928 0CC6F928

(128 bits)

DESCIFRADO: Bloque : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 12 : Descifrado: 7563957A 8A102DA6 EAC1F79A 109FC072 FD4EEFDE 623F847F 8ADB4E04 48A546C4 C253B1A9 6076F92C 88241F51 7DA56D33 94622E60 94622E60 7C6E9274 32EE44E5 C3EE67FB 45BC7406 3CC42E4F 2246E5C3 97319AB8 56732D30 D32607F4 D62A52EA 3CBD888F B33A0C47 11AC4FF2 11AC4FF2 6E87F937 0F5EA9B9 F8AAA566 7AE5206B 50BB5BE9 FDADA89E 52A9E478 A735D297 E6D6C966 10204094 6CBEEFBC 7BAA5759 45976B5C 45976B5C A2F4AB04 85A8D1DB 5C1EF22D 0DBD735E 673BA16D 5AA2D81C F16FEFB9 8292A0A3 623A15C6 B9CB8884 F7BB9655 51C5B996 20D50554 20D50554 (128 bits)

: 8765F4765A8594E74635D86950B78432C756365A15326DE012345678E214320A (256 bits) CIFRADO: Bloque : 7563957A 7C6E9274 6E87F937 A2F4AB04 (128 bits) Ronda 01 : 160FB8C4 526A9E27 67C2C272 6DAAE23A Ronda 02 : 51EA071B CD262D8C 3E4861B7 99CCC7EB Ronda 03 : 7E32CCE3 2800F0B7 C7C7F049 02E624F7 Ronda 04 : 04FB5028 8002D19E 02A99DAD F2D8E262 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

Clave

B.4. MD5 Ronda 05 Ronda 06 Ronda 07 Ronda 08 Ronda 09 Ronda 10 Ronda 11 Ronda 12 Ronda 13 Ronda 14 Cifrado : : : : : : : : : : : DACD92A2 AEA43CAB B4A5EBA6 BF57D255 C4A02922 F35D1EF6 FCE5A501 7E4AF5E5 828F3938 6E8B7B83 6E8B7B83 DD89451C 0356A2B2 412FAC38 45579B83 46505017 FE10F4BA D8E0274E C3E6C807 6332099E 674D5839 674D5839 4FE6B50C 2AB55277 A684D752 B0DFB737 D1CA1979 326AB6DB D865B039 BC97AAF4 F21541F6 19356AFA 19356AFA CF2A40F9 535718FA EF68376F F7DD1C5F 8C482CE5 32AE9F4F 841FCCFB 38B13938 70E4B9B0 E935735B E935735B

219

DESCIFRADO: Bloque : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 02 : Ronda 01 : Ronda 14 : Descifrado: 7563957A D90293DE 6DF747AF 496618FA 13502465 639BEB46 F87CDE96 FC6D0433 8F872F53 33CB011A 68CE0A4D 14D2CABB BEF20489 28C8A02E 691FB267 691FB267 7C6E9274 EFCBC692 78006F1F C59E36F5 4FB09CFA 25C9AD76 69CB5302 C8E51A5D D54D5DAA 1DE03C16 3FB38D7D 7D3AAFE8 FF3AD947 B3526182 1134AC93 1134AC93 6E87F937 87620BEC 40DAFBE8 3ABC05F3 6745440A 242C9AA9 C8AE6B76 DE349F93 1E8CB849 A468722A FC8060FB 48675BF3 5B211677 0C735A92 C77D9FD5 C77D9FD5 A2F4AB04 A9E1A3D9 D333B4C3 7011CFA5 BFC062A8 39066FDC B2FEAF5B 2D113855 E8B2DC30 2C2A38AA BCCD1AB9 B5133A20 4EB766DA ACDA0765 FA385CF1 FA385CF1 (128 bits)

B.4.

MD5

En esta seccin detallaremos todos los valores intermedios que se obtienen al aplicar el o 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 escrito en hexadecimal, que dicha cadena genera, en el que se puede apreciar cmo tras los cdigos ASCII correspondientes aparece el o o valor 80, es decir, un uno seguido de ceros, y cmo los ultimos 64 bits correspondientes a los o diecisis ultimos d e gitos 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. Ntese o Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

220

B. Ayudas a la Implementacin o

que, en este caso, la representacin como valores enteros de los registros de 32 bits es de tipo o 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: 6180000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000800000000000000 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: 7465737480000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000002000000000000000 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 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 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

B.4. MD5 Ronda 56: a=79F7507F b=CA8F6F9D c=19E4244E Ronda 60: a=1176200C b=82BC77EB c=997A7EAD Ronda 64: a=66266C08 b=840575BD c=EA9401CC Resultado: 098F6BCD4621D373CADE4E832627B4F6 d=3DE059DA d=08C989F3 d=E681D2B0

221

Cadena: "experimento" (88 bits) Bloque: 6578706572696D656E746F800000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000005800000000000000 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: 6B726970746F706F6C6973800000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000005800000000000000 Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 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 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

222 Ronda 48: a=F94C1268 b=18268270 c=39A9E934 Ronda 52: a=55703A51 b=F4D6A7B3 c=EF9EDE35 Ronda 56: a=42081E66 b=50A3C1E5 c=F85BC50F Ronda 60: a=F4D3A73C b=9E487E08 c=BEAE5BB7 Ronda 64: a=DC5B1FD3 b=C48CAC59 c=72B24EFA Resultado: D442A043E2575AB4F82B6D0B819ADF4A

B. Ayudas a la Implementacin o d=E9406B33 d=460E123F d=ABE4D855 d=8DC8E081 d=3AAD460B

B.5.

SHA-1

Se incluyen aqu los valores intermedios del algoritmo SHA-1 para las mismas cuatro cadenas de la seccin anterior. Recordemos que en este caso el orden de los bytes a la hora o de representar enteros es big endian, de forma que, por ejemplo, en la representacin de la o longitud b del mensaje total el ultimo byte es el menos signicativo. Cadena: "a" (8 bits) Bloque: 6180000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000008 Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0 Ronda 02: a=8D43E36D b=013498B3 c=59D148C0 d=7BF36AE2 e=98BADCFE Ronda 04: a=98ECF029 b=178D2F08 c=6350F8DB d=C04D262C e=59D148C0 Ronda 06: a=24FDDFA9 b=9531EFB8 c=663B3C0A d=05E34BC2 e=6350F8DB Ronda 08: a=1706BD51 b=628293E2 c=493F77EA d=254C7BEE e=663B3C0A Ronda 10: a=B48452FD b=E6E3DBB3 c=45C1AF54 d=98A0A4F8 e=493F77EA Ronda 12: a=06A530AF b=910E0091 c=6D2114BF d=F9B8F6EC e=45C1AF54 Ronda 14: a=94A32E14 b=DE9B35CA c=C1A94C2B d=64438024 e=6D2114BF Ronda 16: a=2ECAE907 b=3CD2D518 c=2528CB85 d=B7A6CD72 e=C1A94C2B Ronda 18: a=16FFEBFC b=5FADB00B c=CBB2BA41 d=0F34B546 e=2528CB85 Ronda 20: a=3AD1E596 b=AB5979F5 c=05BFFAFF d=D7EB6C02 e=CBB2BA41 Ronda 22: a=57668EF8 b=0DD747B1 c=8EB47965 d=6AD65E7D e=05BFFAFF Ronda 24: a=587C3B69 b=57212656 c=15D9A3BE d=4375D1EC e=8EB47965 Ronda 26: a=37225DA7 b=94A32676 c=561F0EDA d=95C84995 e=15D9A3BE Ronda 28: a=D72C806E b=C073A57E c=CDC89769 d=A528C99D e=561F0EDA Ronda 30: a=229C3156 b=831D03EB c=B5CB201B d=B01CE95F e=CDC89769 Ronda 32: a=94F65775 b=B4F37984 c=88A70C55 d=E0C740FA e=B5CB201B Ronda 34: a=C174A741 b=2A032F9B c=653D95DD d=2D3CDE61 e=88A70C55 Ronda 36: a=25E95D6B b=481844C5 c=705D29D0 d=CA80CBE6 e=653D95DD Ronda 38: a=42285BB1 b=FC08D9F3 c=C97A575A d=52061131 e=705D29D0 Ronda 40: a=AC15A69D b=A3B72B37 c=508A16EC d=FF02367C e=C97A575A Ronda 42: a=504F64C1 b=E6CD1F2C c=6B0569A7 d=E8EDCACD e=508A16EC Ronda 44: a=7D09F328 b=B45FC818 c=5413D930 d=39B347CB e=6B0569A7 Ronda 46: a=B44DB2B6 b=7B7354D5 c=1F427CCA d=2D17F206 e=5413D930 Ronda 48: a=F9ADD677 b=C43968F2 c=AD136CAD d=5EDCD535 e=1F427CCA Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

B.5. SHA-1 Ronda 50: a=2D5EDB70 b=5432B748 c=FE6B759D d=B10E5A3C Ronda 52: a=7C1B92B1 b=5C350FCB c=0B57B6DC d=150CADD2 Ronda 54: a=C530EAD6 b=C60F44D9 c=5F06E4AC d=D70D43F2 Ronda 56: a=AF4F737E b=D7A11B36 c=B14C3AB5 d=7183D136 Ronda 58: a=68346C20 b=81923337 c=ABD3DCDF d=B5E846CD Ronda 60: a=C682F53F b=80C84724 c=1A0D1B08 d=E0648CCD Ronda 62: a=CEEC2B04 b=193B35BD c=F1A0BD4F d=203211C9 Ronda 64: a=377A9914 b=829ED919 c=33BB0AC1 d=464ECD6F Ronda 66: a=CD6D6C13 b=DAC285B9 c=0DDEA645 d=60A7B646 Ronda 68: a=D3FCDF01 b=639762AA c=F35B5B04 d=76B0A16E Ronda 70: a=C4B7981A b=3E5A0CC1 c=74FF37C0 d=98E5D8AA Ronda 72: a=42650D26 b=26F94DF5 c=B12DE606 d=4F968330 Ronda 74: a=65E8D295 b=9487B5C9 c=90994349 d=49BE537D Ronda 76: a=CE8E1721 b=064CC166 c=597A34A5 d=6521ED72 Ronda 78: a=22890379 b=A6E259D2 c=73A385C8 d=81933059 Ronda 80: a=1FB2C136 b=0AD7FC73 c=48A240DE d=A9B89674 Resultado: 86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8 e=AD136CAD e=FE6B759D e=0B57B6DC e=5F06E4AC e=B14C3AB5 e=ABD3DCDF e=1A0D1B08 e=F1A0BD4F e=33BB0AC1 e=0DDEA645 e=F35B5B04 e=74FF37C0 e=B12DE606 e=90994349 e=597A34A5 e=73A385C8

223

Cadena: "test" (32 bits) Bloque: 7465737480000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000020 Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0 Ronda 02: a=69F251EF b=141A0C27 c=59D148C0 d=7BF36AE2 e=98BADCFE Ronda 04: a=D698D619 b=AD78FF44 c=DA7C947B d=C5068309 e=59D148C0 Ronda 06: a=27A84E9E b=4FED19DC c=75A63586 d=2B5E3FD1 e=DA7C947B Ronda 08: a=D1725C31 b=8FBF195D c=89EA13A7 d=13FB4677 e=75A63586 Ronda 10: a=C43997BA b=985E8C80 c=745C970C d=63EFC657 e=89EA13A7 Ronda 12: a=E671210F b=DF9D4AEF c=B10E65EE d=2617A320 e=745C970C Ronda 14: a=3A4BF38D b=4E12148F c=F99C4843 d=F7E752BB e=B10E65EE Ronda 16: a=0690C1E0 b=4F049361 c=4E92FCE3 d=D3848523 e=F99C4843 Ronda 18: a=28D8607D b=ED827927 c=01A43078 d=53C124D8 e=4E92FCE3 Ronda 20: a=A594E7C5 b=D7E2BB59 c=4A36181F d=FB609E49 e=01A43078 Ronda 22: a=3E7F1747 b=89CF51DE c=696539F1 d=75F8AED6 e=4A36181F Ronda 24: a=08667DF4 b=C1714F43 c=CF9FC5D1 d=A273D477 e=696539F1 Ronda 26: a=F78CDC7E b=63420FC9 c=02199F7D d=F05C53D0 e=CF9FC5D1 Ronda 28: a=301C99FA b=C11D04BC c=BDE3371F d=58D083F2 e=02199F7D Ronda 30: a=31E08911 b=2563E943 c=8C07267E d=3047412F e=BDE3371F Ronda 32: a=63D791B9 b=99B4D18E c=4C782244 d=C958FA50 e=8C07267E Ronda 34: a=66AA9C75 b=0525A937 c=58F5E46E d=A66D3463 e=4C782244 Ronda 36: a=3E4E8518 b=BF1CD105 c=59AAA71D d=C1496A4D e=58F5E46E Ronda 38: a=B32B1931 b=18AB89BD c=0F93A146 d=6FC73441 e=59AAA71D Ronda 40: a=80F549BF b=ED3E0D75 c=6CCAC64C d=462AE26F e=0F93A146 Ronda 42: a=04BDFD86 b=B6353C2E c=E03D526F d=7B4F835D e=6CCAC64C Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

224

B. Ayudas a la Implementacin o e=E03D526F e=812F7F61 e=61D71D4E e=159EA532 e=32915211 e=B493C2DD e=F8352EEB e=CFC10860 e=84D25BDA e=D91959BB e=04E1FA79 e=3F1187AC e=7C02C5E3 e=8E0435A2 e=80854B86 e=37FAD99C e=C97127D9 e=68F3BFE5 e=D45CD9E3

Ronda 44: a=875C7539 b=02132FC0 c=812F7F61 d=AD8D4F0B Ronda 46: a=567A94C8 b=64C62440 c=61D71D4E d=0084CBF0 Ronda 48: a=CA454844 b=AE30686B c=159EA532 d=19318910 Ronda 50: a=D24F0B76 b=F039F33C c=32915211 d=EB8C1A1A Ronda 52: a=E0D4BBAF b=46A89C74 c=B493C2DD d=3C0E7CCF Ronda 54: a=3F042183 b=9E1A2F5D c=F8352EEB d=11AA271D Ronda 56: a=13496F6A b=ACB50C2A c=CFC10860 d=67868BD7 Ronda 58: a=646566EF b=B3E7F37D c=84D25BDA d=AB2D430A Ronda 60: a=1387E9E4 b=2A106003 c=D91959BB d=6CF9FCDF Ronda 62: a=FC461EB0 b=7A8ACB6F c=04E1FA79 d=CA841800 Ronda 64: a=F00B178D b=4E7E642E c=3F1187AC d=DEA2B2DB Ronda 66: a=3810D68A b=39938A7E c=7C02C5E3 d=939F990B Ronda 68: a=02152E1A b=11876ADB c=8E0435A2 d=8E64E29F Ronda 70: a=DFEB6670 b=69F18CE7 c=80854B86 d=C461DAB6 Ronda 72: a=25C49F67 b=4F6EC7D7 c=37FAD99C d=DA7C6339 Ronda 74: a=A3CEFF95 b=882DA0C9 c=C97127D9 d=D3DBB1F5 Ronda 76: a=5173678F b=24CEC91C c=68F3BFE5 d=620B6832 Ronda 78: a=0E44ADD6 b=0D7E5447 c=D45CD9E3 d=0933B247 Ronda 80: a=42056CE4 b=DCE3F01D c=83912B75 d=C35F9511 Resultado: A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

Cadena: "experimento" (88 bits) Bloque: 6578706572696D656E746F800000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000058 Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0 Ronda 02: a=7EBB5D72 b=052D0918 c=59D148C0 d=7BF36AE2 e=98BADCFE Ronda 04: a=75DD0E53 b=B4F0DF48 c=9FAED75C d=014B4246 e=59D148C0 Ronda 06: a=BF3915DD b=05A16415 c=DD774394 d=2D3C37D2 e=9FAED75C Ronda 08: a=9B5914B1 b=0E916082 c=6FCE4577 d=41685905 e=DD774394 Ronda 10: a=E406B102 b=F304AC67 c=66D6452C d=83A45820 e=6FCE4577 Ronda 12: a=7E5DA8FA b=ADCB3390 c=B901AC40 d=FCC12B19 e=66D6452C Ronda 14: a=C474F542 b=860F061D c=9F976A3E d=2B72CCE4 e=B901AC40 Ronda 16: a=14CC37BD b=519A992D c=B11D3D50 d=6183C187 e=9F976A3E Ronda 18: a=B07CDCEE b=DAD274C5 c=45330DEF d=5466A64B e=B11D3D50 Ronda 20: a=DBA8A460 b=3C5ABB3E c=AC1F373B d=76B49D31 e=45330DEF Ronda 22: a=CF0B1462 b=D9B84C74 c=36EA2918 d=8F16AECF e=AC1F373B Ronda 24: a=00FA7488 b=B5017A00 c=B3C2C518 d=366E131D e=36EA2918 Ronda 26: a=678F9C3D b=55535315 c=003E9D22 d=2D405E80 e=B3C2C518 Ronda 28: a=36ED4BC6 b=2C053172 c=59E3E70F d=5554D4C5 e=003E9D22 Ronda 30: a=D46C6C32 b=CEF800E2 c=8DBB52F1 d=8B014C5C e=59E3E70F Ronda 32: a=31B75696 b=7109F222 c=B51B1B0C d=B3BE0038 e=8DBB52F1 Ronda 34: a=7CAE903B b=5BC99A55 c=8C6DD5A5 d=9C427C88 e=B51B1B0C Ronda 36: a=7B134BC7 b=522A73DB c=DF2BA40E d=56F26695 e=8C6DD5A5 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

B.5. SHA-1 Ronda 38: a=AF987330 b=A90C28E7 c=DEC4D2F1 d=D48A9CF6 Ronda 40: a=3A793DF9 b=8847DFE3 c=2BE61CCC d=EA430A39 Ronda 42: a=79238476 b=B7083A1D c=4E9E4F7E d=E211F7F8 Ronda 44: a=6381087C b=860C3C86 c=9E48E11D d=6DC20E87 Ronda 46: a=4601F05C b=2DCC49C0 c=18E0421F d=A1830F21 Ronda 48: a=8EB6C83B b=1C149969 c=11807C17 d=0B731270 Ronda 50: a=D5D79282 b=5666238B c=E3ADB20E d=4705265A Ronda 52: a=0C947120 b=0823F989 c=B575E4A0 d=D59988E2 Ronda 54: a=C218BAA5 b=920A30EA c=03251C48 d=4208FE62 Ronda 56: a=B5022079 b=F30D765D c=70862EA9 d=A4828C3A Ronda 58: a=E70F5DFB b=766D14A3 c=6D40881E d=7CC35D97 Ronda 60: a=110BCB99 b=46BA94E7 c=F9C3D77E d=DD9B4528 Ronda 62: a=F200718D b=63A74A72 c=4442F2E6 d=D1AEA539 Ronda 64: a=23F6D36A b=21C432A4 c=7C801C63 d=98E9D29C Ronda 66: a=C210491B b=7973CC2D c=88FDB4DA d=08710CA9 Ronda 68: a=34DC1778 b=383D5D93 c=F0841246 d=5E5CF30B Ronda 70: a=674E55A5 b=463558B7 c=0D3705DE d=CE0F5764 Ronda 72: a=E452151C b=DB6379D9 c=59D39569 d=D18D562D Ronda 74: a=CE40A960 b=95A1780C c=39148547 d=76D8DE76 Ronda 76: a=42B352EB b=7994D2F8 c=33902A58 d=25685E03 Ronda 78: a=E3B07323 b=ADDFDC73 c=D0ACD4BA d=1E6534BE Ronda 80: a=21D68E46 b=6F2351DF c=F8EC1CC8 d=EB77F71C Resultado: 891BB1475EF0FD6891A6F9C6FBAA4B92947FB6AA e=DF2BA40E e=DEC4D2F1 e=2BE61CCC e=4E9E4F7E e=9E48E11D e=18E0421F e=11807C17 e=E3ADB20E e=B575E4A0 e=03251C48 e=70862EA9 e=6D40881E e=F9C3D77E e=4442F2E6 e=7C801C63 e=88FDB4DA e=F0841246 e=0D3705DE e=59D39569 e=39148547 e=33902A58 e=D0ACD4BA

225

Cadena: "kriptopolis" (88 bits) Bloque: 6B726970746F706F6C6973800000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000058 Inicio : a=67452301 b=EFCDAB89 c=98BADCFE d=10325476 e=C3D2E1F0 Ronda 02: a=400081DD b=0B270223 c=59D148C0 d=7BF36AE2 e=98BADCFE Ronda 04: a=61557CFE b=D9886E7F c=50002077 d=C2C9C088 e=59D148C0 Ronda 06: a=B62CB646 b=3145031C c=98555F3F d=F6621B9F e=50002077 Ronda 08: a=2D45AF5F b=46807E85 c=AD8B2D91 d=0C5140C7 e=98555F3F Ronda 10: a=F43BF9F6 b=A85EF180 c=CB516BD7 d=51A01FA1 e=AD8B2D91 Ronda 12: a=072108C8 b=697D55A9 c=BD0EFE7D d=2A17BC60 e=CB516BD7 Ronda 14: a=DF29879C b=3503FAD9 c=01C84232 d=5A5F556A e=BD0EFE7D Ronda 16: a=0678F27A b=481EB2E3 c=37CA61E7 d=4D40FEB6 e=01C84232 Ronda 18: a=A15AB731 b=3EE9ADE2 c=819E3C9E d=D207ACB8 e=37CA61E7 Ronda 20: a=AB2F7D99 b=5704D5FE c=6856ADCC d=8FBA6B78 e=819E3C9E Ronda 22: a=28A91B1F b=D90DB07B c=6ACBDF66 d=95C1357F e=6856ADCC Ronda 24: a=C2BE33DB b=4B342F34 c=CA2A46C7 d=F6436C1E e=6ACBDF66 Ronda 26: a=1DAB7331 b=27F1416F c=F0AF8CF6 d=12CD0BCD e=CA2A46C7 Ronda 28: a=D85BDF45 b=AB5927D5 c=476ADCCC d=C9FC505B e=F0AF8CF6 Ronda 30: a=43B8E8A4 b=74386A94 c=7616F7D1 d=6AD649F5 e=476ADCCC Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

226

B. Ayudas a la Implementacin o e=7616F7D1 e=10EE3A29 e=CF6AB913 e=13F706E2 e=DF963A9E e=2E52E1E1 e=866D5BA8 e=B17100B3 e=421E24F0 e=4430E7E9 e=7F28B93A e=0A59D6C5 e=8C320F24 e=21CEE0CB e=BA817404 e=4B94C27F e=18C4A69B e=C4180293 e=AD9E8CAC e=61119279 e=3DC07BE8 e=55F91F81 e=2A1342A2 e=C2CF34A4 e=71E7941B

Ronda 32: a=3DAAE44F b=774E7172 c=10EE3A29 d=1D0E1AA5 Ronda 34: a=4FDC1B88 b=5D5610F1 c=CF6AB913 d=9DD39C5C Ronda 36: a=7E58EA7B b=EA9DF552 c=13F706E2 d=5755843C Ronda 38: a=B94B8784 b=7CDB656F c=DF963A9E d=BAA77D54 Ronda 40: a=19B56EA2 b=88361E28 c=2E52E1E1 d=DF36D95B Ronda 42: a=C5C402CE b=B4AA1C2E c=866D5BA8 d=220D878A Ronda 44: a=087893C1 b=E5C8DD17 c=B17100B3 d=AD2A870B Ronda 46: a=10C39FA5 b=8781E3DC c=421E24F0 d=F9723745 Ronda 48: a=FCA2E4E9 b=00DB97DB c=4430E7E9 d=21E078F7 Ronda 50: a=29675B14 b=E07CFB83 c=7F28B93A d=C036E5F6 Ronda 52: a=30C83C92 b=E8C85C50 c=0A59D6C5 d=F81F3EE0 Ronda 54: a=873B832C b=4D5329BE c=8C320F24 d=3A321714 Ronda 56: a=EA05D012 b=5EEE15EE c=21CEE0CB d=9354CA6F Ronda 58: a=2E5309FD b=C3E8ACC8 c=BA817404 d=97BB857B Ronda 60: a=63129A6C b=9D77469B c=4B94C27F d=30FA2B32 Ronda 62: a=10600A4F b=EB9C641B c=18C4A69B d=E75DD1A6 Ronda 64: a=B67A32B2 b=7326BFF5 c=C4180293 d=FAE71906 Ronda 66: a=844649E5 b=E8A707A8 c=AD9E8CAC d=5CC9AFFD Ronda 68: a=F701EFA0 b=5EF992A0 c=61119279 d=3A29C1EA Ronda 70: a=57E47E05 b=70BF4F9C c=3DC07BE8 d=17BE64A8 Ronda 72: a=A84D0A88 b=4B833CB9 c=55F91F81 d=1C2FD3E7 Ronda 74: a=0B3CD293 b=2B01A32B c=2A1342A2 d=52E0CF2E Ronda 76: a=C79E506D b=A1584161 c=C2CF34A4 d=CAC068CA Ronda 78: a=761449FA b=DB91E0C7 c=71E7941B d=68561058 Ronda 80: a=8AB36355 b=2F2C07DB c=9D85127E d=F6E47831 Resultado: F1F886561EF9B364363FEF7C0716CCA735BA760B

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Apndice C e

Ejercicios Resueltos
Cap tulo 3
1. La probabilidad de que en un dado no cargado salga un nmero par es 1 . Por lo tanto, u 2 empleando la expresin (3.1) tenemos que la informacin asociada al suceso vale: o o Ipar = log2 1 2 = 1 bit

2. El dado presenta la siguiente distribucin de probabilidad: o 2 P (x = 3) = ; 7 Su entrop ser, pues a a 2 H(X) = log2 7 2 7 5 1 log2 7 1 7 = 0,5163 + 2,0052 = 2,5215 P (x = 3) = 1 7

q 3. Sea el cociente pi . Puesto que tanto pi como qi son positivos, su cociente tambin lo e i ser, luego a log2 qi pi = log2 (qi ) log2 (pi ) qi 1 pi

Multiplicando ambos miembros de la desigualdad por pi se tiene pi log2 (qi ) pi log2 (pi ) qi pi Puesto que pi es positivo, se mantiene el sentido de la desigualdad. Ahora sumemos todas las desigualdades y obtendremos lo siguiente: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

228

C. Ejercicios Resueltos

pi log2 (qi )
i=1 i=1

pi log2 (pi )
i=1

qi
i=1

pi = 0

Reorganizando los trminos obtenemos nalmente la expresin buscada e o


n n

i=1

pi log2 (pi )
i=1

pi log2 (qi )

4. Desarollemos el valor de H(Y /X), segn la expresin (3.4): u o H(Y /X) =


j=1 i=1 m n

P (xi , yj ) log2 (P (yj /xi ))

La Ley de la Probabilidad Total dice que P (X, Y ) = P (X) P (Y /X) por lo que nuestra expresin se convierte en o
j=1 i=1 m n

P (xi , yj ) log2

P (xi , yj ) P (xi )

Descomponiendo el logaritmo del cociente como la diferencia de logaritmos se obtiene


j=1 i=1 m n

P (xi , yj ) [log2 (P (xi , yj )) log2 (P (xi ))]

Si desarrollamos la expresin anterior tenemos o


j=1 i=1 m n

P (xi , yj ) log2 (P (xi ))

P (xi , yj ) log2 (P (xi , yj )) +


j=1 i=1

El primer sumando es igual a H(X, Y ). Observemos el ultimo sumando:


j=1 i=1 n

P (xi , yj ) =

P (xi , yj ) log2 (P (xi )) =


i=1

log2 (P (xi ))
j=1

=
i=1

log2 (P (xi ))P (xi )

= H(X) Criptograf y Seguridad en Computadores a

Manuel J. Lucena Lpez o

229 Luego H(Y /X) = H(X, Y ) H(X). Reorganizando los trminos, llegamos nalmente a e la expresin de la Ley de Entrop Totales: o as H(X, Y ) = H(X) + H(Y /X) 5. Sea G la variable aleatoria que representa los partidos. Sea gs el suceso correspondiente a que el equipo gane el partido, y gn el suceso asociado a que lo pierda. Anlogamente, a deniremos la variable L, asociada a que llueva o no. Tendremos, pues: P (ls ) P (ln ) P (gs , ls ) P (gs , ln ) P (gn , ls ) P (gn , ln ) P (gs /L = ls ) P (gs /L = ln ) P (gn /L = ls ) P (gn /L = ln ) P (gs ) P (gn ) = = = = = = = = = = = = 0,15 0,85 0,35 0,15 = 0,0525 0,65 0,85 = 0,5525 0,65 0,15 = 0,0975 0,35 0,85 = 0,2975 0,35 0,65 0,65 0,35 P (ln ) P (gs /L = ln ) + P (ls ) P (gs /L = ls ) = 0,605 P (ln ) P (gn /L = ln ) + P (ls ) P (gn /L = ls ) = 0,395

Calculemos ahora las entrop as:

H(G) = P (gs ) log2 (P (gs )) P (gn ) log2 (P (gn )) = 0,9679 H(G/L) = P (gs , ls ) log2 (P (gs /L = ls )) P (gs , ln ) log2 (P (gs /L = ln )) P (gn , ls ) log2 (P (gn /L = ls )) P (gn , ln ) log2 (P (gn /L = ln )) = = 0,0525 log2 (0,35) 0,5525 log2 (0,65) 0,0975 log2 (0,65) 0,2975 log2 (0,35) = 0,9333 La cantidad de informacin entre G y L es, nalmente o H(G) H(G/L) = 0,9679 0,9333 = 0,0346 bits 6. La longitud media ptima de los mensajes, cuando stos son equiprobables, es el logao e ritmo base dos del nmero de mensajes, por tanto u log2 (20) = 4,3219 Una posible codicacin, con una longitud media de 4,4 bits por mensaje, ser la sio a guiente: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

230 m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 00000 00001 00010 00011 00100 00101 00110 00111 0100 0101 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

C. Ejercicios Resueltos

7. La entrop de los mensajes es igual a: a H(X) = 0,5 log2 (0,5) 10 0,05 log2 (0,05) = 2,660 bits

Cap tulo 5
1. La suma en grupos nitos cumple las propiedades conmutativa y asociativa, adems de a la existencia de elementos neutro y simtrico. Tendremos en cuenta que: e ab (md n) k Z tal que o a=b+kn

Propiedad conmutativa: Puesto que a + b = b + a, tenemos que a+b=b+a+kn si k = 0, luego

a + b b + a (md n) o 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 (md n) o Elemento neutro: Trivialmente, a+0=a+kn si k = 0, luego

a + 0 a (md n) o por lo tanto, 0 es el elemento neutro para la suma. Elemento simtrico: Sea a Zn y b = n a, tenemos e a + b = a + (n a) = k n a+b0 si k = 1, luego

(md n) o

por tanto, b es el inverso de a para la suma. Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

231 2. El producto en grupos nitos cumple las propiedades conmutativa y asociativa, adems a de la existencia de elementos neutro. Tendremos en cuenta, al igual que en el ejercicio anterior, que: ab (md n) k Z tal que o a=b+kn

Propiedad conmutativa: Puesto que a b = b a, tenemos que ab=ba+kn si k = 0, luego

a b b a (md n) o 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 (md n) o Elemento neutro: Trivialmente, a1=a+kn si k = 0, luego

a 1 a (md n) o por lo tanto, 1 es el elemento neutro para el producto. 3. Para calcular la funcin de Euler emplearemos la expresin (5.2): o o 64 = 26 611 = 13 47 2197 = 133 5 es primo 10000 = 24 54 (64) = 25 (2 1) = 32 (611) = (13 1) (47 1) = 552 (2197) = 132 12 = 2028 (5) = 5 1 = 4 (10000) = 23 1 53 4 = 4000

4. Emplearemos la expresin (5.6) para resolver el sistema: o x 12 (md 17) o x 13 (md 64) o x 8 (md 27) o Puesto que n = 17 64 27 = 29376, tenemos x = (29376/17)[17281 (md 17)] 12+ o 1 (md 64)) 13+ +(29376/64)(459 o +(29376/27)(10881 (md 27)) 8 o Calculamos ahora las inversas: Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

232 1728 459 1088 11 (md 17), o 11 (md 64), o 8 (md 27), o 111 111 81 (md 17) o (md 64) o (md 27) o

C. Ejercicios Resueltos = = = 14 35 17

Sustituyendo los valores, nos queda x = 1728 14 12 + 459 35 13 + 1088 17 8 = 647117 845 (md 29376) o 5. Para calcular el valor de (210368 md 187), se puede emplear el algoritmo de exponeno ciacin rpida (apartado 5.4.1): o a r r r r r r r r r r r r r r r = 1 = 1 = 1 = 1 = 1 = 1 = 1 = 1 = 69 = 69 = 69 = 69 = 4761 = 86 = 8858 z z z z z z z z z z z z (md 187) = 86 z o z (md 187) = 69 o = 10368 a = 2 = 5184 a = 4 = 2592 a = 8 = 1296 a = 16 = 648 a = 32 = 324 a = 64 = 162 a = 128 = 81 a = 256 = 40 a = 4761 = 20 a = 7396 = 10 a = 10609 = 5 a = 18769 = 2 a = 7396 = 1 a = 10609

(md o (md o (md o (md o (md o (md o (md o

187) = 69 187) = 86 187) = 103 187) = 137 187) = 69 187) = 86 187) = 103

6. Para calcular la suma, es suciente con aplicar un or-exclusivo entre ambos, por lo tanto: 100101 1011 = 101110 = x5 + x3 + x2 + x En cuanto al producto, tenemos lo siguiente: (x5 + x2 + 1)(x3 + x + 1) = x8 + x6 + x5 + x5 + x3 + x2 + x3 + x + 1 = = x8 + x6 + x2 + x + 1 Ahora nos queda calcular el mdulo x6 + x + 1. Para ello aplicaremos la propiedad o x6 + x + 1 0 = x6 x + 1 que nos deja x8 + x6 + x2 + x + 1 = x2 x6 + x6 + x2 + x + 1 = = x2 (x + 1) + (x + 1) + x2 + x + 1 = x3 + x2 + x + 1 + x2 + x + 1 = = x3 Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

233

Cap tulo 6
1. Partiendo de la expresin o x3 + ax + b = (x q)2 (x r) desarrollaremos el segundo trmino: e

(x q)2 (x r) = (x2 2qx + q 2 )(x r) = x3 2qx2 rx2 + 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 = q2r Despejando r en la primera igualdad y sustituyendo su valor en las dos restantes se obtiene a = 3q 2 b = 2q 3 Elevando al cuadrado la primera expresin y al cubo la segunda, podemos despejar q 6 o en ambas e igualar: q6 = b2 a3 = 27 4

Para que el sistema de ecuaciones tenga solucin, la igualdad anterior debe cumplirse; o si la desarrollamos, nalmente nos queda a3 b2 = 27 4 = 4a3 = 27b2 = 4a3 + 27b2 = 0

2. Emplearemos la expresin (6.3) para calcular 2p y (6.2) para el resto: o 2p = p + p: d = (3 112 + 7)/(2 16) = 2 tx = 4 22 = 16 ty = 16 + 2 (11 16) = 8 Por lo tanto, 2p = (16, 8) Manuel J. Lucena Lpez o Criptograf y Seguridad en Computadores a

234 3p = 2p + p: d = (16 8)/(11 16) = 12 tx = 8 11 16 = 15 ty = 16 + 12 (11 15) = 4 Por lo tanto, 3p = (15, 4) ... Aplicando los clculos de forma sucesiva, tenemos que a p

C. Ejercicios Resueltos

= {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 el ptica en cuestin. o

Cap tulo 7
1. A partir de los valores c = 35240 y d = 234, calculamos el factor de normalizacin, o que ser 2, por lo que dd = 470 y cc = 72500. Ntese que todas las operaciones estn a o a efectuadas en base octal. Los pasos del algoritmo arrojarn los siguientes valores: a t a2 a1 a1 a0 = = = = = 4 07 5 = 1 25 5 = 3 a1 + 1 = 4 15=0

cc cc cc cc

= = = =

72500 1 47000 = 23500 23500 3 4700 = 5000 5000 4700 = 100 100 0 470 = 100

Ahora deshacemos la normalizacin, con lo que nos queda un cociente a = 140 y un o resto b = 40.

Cap tulo 12
1. a) Para factorizar N , basta con emplear el mtodo de tanteo (prueba y error) a partir e de la ra cuadrada de 44173, obtenindose que N = 271 163. z e b) Kp debe ser la inversa de KP mdulo (N ) = 270 162 = 43740. Empleando el o Algoritmo Extendido de Euclides, llegamos a
1 Kp = KP = 252771

(md 43740) = 26633 o Criptograf y Seguridad en Computadores a

Manuel J. Lucena Lpez o

235 c) El descifrado podemos llevarlo a cabo empleando el Algoritmo de Exponenciacin o Rpida: a c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 = = = = = = = = = = = 8767 18584 7557 4510 40818 39760 4510 39760 6813 7557 14747 m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 = = = = = = = = = = = 8767Kp 18584Kp 7557Kp 4510Kp 40818Kp 39760Kp 4510Kp 39760Kp 6813Kp 7557Kp 14747Kp (md 44173) = 75 o (md 44173) = 114 o (md 44173) = 105 o (md 44173) = 112 o (md 44173) = 116 o (md 44173) = 111 o (md 44173) = 112 o (md 44173) = 111 o (md 44173) = 108 o (md 44173) = 105 o (md 44173) = 115 o

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

236

C. Ejercicios Resueltos

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

Bibliograf a
[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. Prentice Hall. Australia, 1989. [4] Juan Manuel Velzquez y Arturo Quirantes. Manual de PGP 5.53i. 1998. a [5] John D. Lipson. Elements of Algebra and Algebraic Computing. Addison-Wesley, 1981. [6] RFC 2440: Open PGP Message Format. http://www.ietf.org/rfc/rfc2440.txt [7] RFC 1750: Randomness Recommendations for Security. http://www.it.kth.se/docs/rfc/rfcs/rfc1750.txt [8] Pgina Web de Kriptpolis. a o http://www.kriptopolis.com [9] Pgina Web de PGP International. a http://www.pgpi.org [10] Pgina Web de Zedz Consultants (antes Replay). a http://www.zedz.net

Manuel J. Lucena Lpez o

Criptograf y Seguridad en Computadores a

También podría gustarte