Criptograf´ y Seguridad en ıa Computadores

Tercera Edici´n (Versi´n 1.00). Junio de 2001 o o

Manuel Jos´ Lucena L´pez e o
e-mail: mlucena@ujaen.es mlucena@kriptopolis.com

2

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

—¿Qu´ significa habla, amigo y entra? —pregunt´ Merry. e o —Es bastante claro —dijo Gimli—. Si eres un amigo, dices la contrase˜a y las puertas se n abren y puedes entrar. —S´ —dijo Gandalf—, es probable que estas puertas est´n gobernadas por palabras. . . ı e El Se˜or de Los Anillos n J.R.R. Tolkien

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

4

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

e o Este documento puede ser distribuido libre y gratuitamente bajo cualquier soporte siempre que se respete su integridad. 2001 de Manuel Jos´ Lucena L´pez. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .Copyright c 1999. Todos los derechos reservados. Queda prohibida su venta sin permiso expreso del autor. 2000. Manuel J.

6 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

enviando sugerencias o correcciones. por darme esta oportunidad. e A los chicos de Kript´polis. por enriquecernos a todos. Manuel J. n A todos aquellos que. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o A mis alumnos. A todos los que alguna vez han compartido sus conocimientos. ella sabe por qu´. por aguantarme cada a˜o.Agradecimientos A Loles. han ayudado a mejorar esta obra.

8 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

Asimismo. e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .kriptopolis.com http://wwwdi.es/~mlucena No se pretende que estos apuntes sustituyan a la bibliograf´ de la asignatura. de la Universidad de Ja´n. ni a las ıa clases te´ricas. Ja´n.Prefacio El presente documento ha sido elaborado originalmente como apoyo a la asignatura “Criptograf´ y Seguridad en Computadores”. empleando el procesador de textos L TE o e gr´ficos XFig y Gimp. y para ello nadie mejor que los propios lectores para plantear dudas. Puede descargarse su ultima versi´n y eventuales correcciones en las a ´ o siguientes direcciones web: http://www. y sugerir mejoras.ujaen. sino que sirvan m´s bien como complemento a las notas que el alumno debe o a tomar en clase. no debe considerarse un documento definitivo y exento de errores. buscar errores. Junio de 2001. y los editores Gesti´n. lo que probablemente desembocar´ en sucesivas a versiones. de 3er Curso de Ingenier´ T´cnica en Inform´tica de ıa ıa e a A X 2ε . El autor pretende que sea mejorado y ampliado con cierta frecuencia. si bien ha sido elaborado con detenimiento y revisado exhaustivamente.

10 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

. . . . . . . . . . .1 1. Acerca de la Terminolog´ Empleada . . . . . . . . . . .2 3. . . . . . . . . . . . . . . ıa Entrop´ Condicionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Conceptos B´sicos sobre Criptograf´ a ıa 2. . . . . . . . Esteganograf´ . a Compromiso entre Criptosistema y Criptoan´lisis . . . . . . . . . . . . . . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . . . . . .1 3. . . . . . . .4 Cantidad de Informaci´n . . . a Seguridad . . . . . . . . . . . . . . . . . . . .2 1. . . . . . . . . . . . o Algunas notas sobre la Historia de la Criptograf´ . . . . . . . . . . . . . . . .5 2. . . . . . . . . . . . . . . . . . . .3 3. . . . . o Manuel J. . . . . . . . . . . . . . . . . . . . . . . . . .´ Indice General I Preliminares 19 21 21 22 24 25 25 29 29 30 31 32 33 34 1 Introducci´n o 1. . . . . . . . .4 1. . . . . . . . . . . . . ıa Criptoan´lisis . . . . . .1 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa N´meros Grandes u . . . . . . . . . . o Entrop´ . . . . . . .2 2. . . . . . . . . ıa Notaci´n Algor´ o ıtmica . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1. . . . . . . . . . . . . . . . II Fundamentos Te´ricos de la Criptograf´ o ıa 37 39 39 40 42 44 3 Teor´ de la Informaci´n ıa o 3. . . . . . . . . . . . . . . . . . . . . . . .4 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2. . . ıa Cantidad de Informaci´n entre dos Variables . . . ıa Criptosistema . . . . . . . . . . . .6 Criptograf´ . . . . . .5 C´mo Leer esta Obra . . . . . .

.1 5. . . . . . . . . . . . o a El Problema de los Logaritmos Discretos . . . . . . . . . . . . . . . . . .1 4. . .1. . . . . . u Algoritmos de Factorizaci´n . . . . . . . .4. . . . . . . . . . . . 5. . .5 3. . . . Exponenciales y Subexponenciales . . . . . . . . . . . .3 Existencia de la Inversa . .2 5. . . .1 5. . . . .2 5. .9 ´ INDICE GENERAL Criptosistema Seguro de Shannon . . . . . . . . . . . . . . . . . . . . Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Manuel J. Operaciones Elementales . . . . o Confusi´n y Difusi´n . . . . . . . . . Redundancia . . . . . . . . . . . .1 4. . . . e 5. . . Logaritmos Discretos . . . . . . . . . . . .2. . . . .5 4. . . . . . . . . . . . . . . . . . Complejidad Algor´ ıtmica 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . .4 4. . . . . .6.12 3. . . . . . . . . . . . . . . . . . . .5 5. . . . . . . . . .4. . . . Desinformaci´n y Distancia de Unicidad . . . . .2. . .2. .3 Algoritmo de Exponenciaci´n R´pida . Algoritmos Probabil´ ısticos . . . . Complejidad de las Operaciones Aritm´ticas en Zn . . . . . . .3 5. o o Ejercicios Propuestos . . . . . . . . . . .4 Teorema Chino del Resto . . . . . . . . . . . . .1 5.1 Aritm´tica Modular. . . . .2 5. . . . . . e C´lculo de Inversas en Zn .3 4. . . . . . . . . . . . . . . . . . . . . Clases de Complejidad . . . . . . . . . Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . o 5. . . Funci´n de Euler . . . . . . . .1. . . . . . . . . . . . . . . . . . . . Algoritmos Polinomiales. . .2. . Exponenciaci´n. . . . . . . . . . . . . . . . .6 Importancia de los N´meros Primos . . . . . . . . . . .7 3. . . . . . . . .6 . . . . . . o Algoritmo Extendido de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . 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 Introducci´n a la Complejidad Algor´ o ıtmica 4. .2 Algoritmo de Euclides . . . . . . . .8 3. . . . . . . . a 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 3. . . . . . . . . . . . . . . . . . . . . . . . . . 5 Fundamentos de Aritm´tica Modular e 5. . . . . El Problema de Diffie-Hellman . . . . . . . . . . . . o 5. . . . . . . . . . . . . .2 Concepto de Algoritmo .1 M´todo de Fermat . . . . . . . . . . . . . . .

. . e M´todos Cuadr´ticos de Factorizaci´n . . . . . .2 7. . . . . .4 M´todo de Lehmann . . . . . . . . . . . . . . . . . . . . e M´todo de Rabin-Miller . . . . . .2. . . . .7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Criptograf´ y N´ meros Aleatorios ıa u Manuel J.6. . . .3 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 5. . . . .8 Anillos de Polinomios . . . .3. . . . . . . . . .3 5. . . . . . .2. . . . . . . .7 M´todo p − 1 de Pollard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Suma . . . . . .2 5. . . . . . . . . . . . . 6. . . . . . . . . . . . . Divisi´n . .3 Suma en E(R) . . . . . . . . . . . . . . . . . . . . 6 Introducci´n a las Curvas El´ o ıpticas 6. . . .2 5. . . . . . . . . . . . . .4 7. . . . . . . . . .3 5. . . . . . . . . . . .7. . . . .1 6. . . . . . . Ejercicios Propuestos . . . . e 7. . . . . . . . . o Operaciones aritm´ticas sobre enteros largos . . . . . . . . . . . . 5. . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . .2 Representaci´n de enteros largos . . . . . . . . . . . . . . . . . . . . . Multiplicaci´n o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . .1 Suma en E(GF (2n )) . . . . . .6. . . . . Curvas El´ ıpticas en GF (n) Curvas El´ ıpticas en GF (2n ) . . . . .2. . . . . . . . . . . . o Aritm´tica modular con enteros largos .2 6. . . . . . . . . .9 Ejercicios Propuestos . . . . a Primos fuertes . . . .´ INDICE GENERAL 5. . . . . . . . . . . . . . . . . . . . . . Lucena L´pez o . .8. . . e Ejercicios Propuestos . . 5. . . . . . . . . 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . . . . . . .5 El Problema de los Logaritmos Discretos en Curvas El´ ıpticas . . . . . . . . . .1 Curvas El´ ıpticas en R . . . . . . . . . . . . . . .1 7. . e Consideraciones Pr´cticas . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Aritm´tica Entera de M´ ltiple Precisi´n e u o 7. . . .4 6. .2. . . . . . . . . . . . . . . . . . . . . .3 7. . . . . .7. . . . . . . . . . . . . . . . 6. . . . . . . . . . . . . . . .1 7. . . . Resta . . . e a o 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 Tests de Primalidad . . . . . . . . . .1 Polinomios en Zn . .

. .1 8. . . 104 o o Cifrados de Transposici´n . . . . . . . . . . . 112 10. . . .2. . a Generador Blum Blum Shub . .1 9. . . . . . . . . .1 Claves D´biles en DES . . . . . . .3 S-Cajas .4 Cifrados Monoalfab´ticos . .2 M´quinas de Rotores. .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . La M´quina ENIGMA . . . . . . . . .2 Cifrados con Estructura de Grupo . . . . . . . . . . . . . . . .2 El Algoritmo DES . . . . . . . . . . . . . . . . . . .2. . . . . . . . .1. . . . . . . . . .3 Variantes de DES .1. . . . . . . . . . . . . . . . . 106 Consideraciones Te´ricas Sobre la M´quina ENIGMA . . . . . . . . . . . . .1. . . . . . III Criptograf´ de Llave Privada ıa 99 101 9 Criptograf´ Cl´sica ıa a 9. .2 8. . . . . . . 104 o 9. . . . . . .3 8. .14 8. . . . . . . . . . . 114 10. . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . .2. .1. .3 9. . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 a 111 10 Cifrados por Bloques 10. . . .1. . . . . . .3 Un poco de Historia . . . . . . . . Secuencias criptogr´ficamente aleatorias . . . . . . . 103 e Cifrados por Sustituci´n Homof´nica . . . . . .1. . . . . . . . . . . . . . . . . . . .1 9. . . . . . . . . . . . . . . . . o a a 8. . . . . . . . . . . . . 108 o a Otras M´quinas de Rotores . . . . . . . 102 e Cifrados Polialfab´ticos . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . 101 a 9. . o Eliminaci´n del Sesgo . . . . 114 10. . . . . . . 8. . . .1 8.2. . . . . . . . . . . . . .1.2 9. . . 111 10. . . . . .2 9. . . . .3 8. 91 91 92 92 93 93 95 96 97 Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas . o Generadores Aleatorios Criptogr´ficamente Seguros . . . . . . . . . . 117 Manuel J. . . . . . . . . . . . . . . . . . . . . 105 a a 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . . . . . . . . . . . . . . .1 Redes de Feistel . . . . . . 114 10. . . . . . . . . .1. . .2. . . .2 Secuencias pseudoaleatorias . . . . . . . . . .1 Algoritmos Cl´sicos de Cifrado . . . . .4 Obtenci´n de Bits Aleatorios . . . . . . . . . . a Secuencias totalmente aleatorias . 117 e 10. . . . .2.1 Cifrado de producto . . . . . . . .2 8. . . . . . .1 ´ INDICE GENERAL Tipos de Secuencias Aleatorias . . . . . . . . . . . . . .

. . . . . .2 Modo CBC . 128 10.5 El algoritmo Rijndael (AES) . . . . . . . . . . 121 10. . . . .2. . . . . .3 Modo CFB . . . . . . . . . . . . . . . . 130 a e 10. . . . . . . .´ INDICE GENERAL 15 10. . . . . 126 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Estructura de AES . . . . . . . . . . . . . . . . . .6 Modos de Operaci´n para Algoritmos de Cifrado por Bloques . 132 11. 127 10. . .3 DES Generalizado . . . . . .3. . . . . . . . . . . . . .3. . . . . . . . . . 126 o 10. . . . .5. . . . . . .2 DES con Subclaves Independientes . . . .2 Elementos de AES . .1 Generadores S´ ıncronos . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . 136 Manuel J. . . . .3. . . . . . . . . . . . . 131 11. . . 121 10. . . . . . . .2 Generadores As´ ıncronos . . .1 Registros de Desplazamiento Retroalimentados Lineales . . . . . . . . . . . . . . . . . . . . . . . . . .4 C´lculo de las Subclaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . . . . . . . . . . . 118 u 10. . . . .5. . . . . . . . . .2. .5. . . . . . . . . . . . . .3. . . . . . . . . . 130 a 10. . . . . . . . . . . 134 11. .6. . . 132 11. . . . . . . . . . . . . . . . . .5.6. . 119 10. . . . . . . . . . . . . . . . . .1 DES M´ltiple . . . . . .4.4 DES con S-Cajas Alternativas . . . . . . . . . . . . . . . 134 11. . . . . . .2 Tipos de Generadores de Secuencia .1 Modo ECB . . . . . . . 122 10. . . . . . . .6. . . . .4 Otros Modos . . . . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . .6. . . .2 Registros de Desplazamiento Retroalimentados No Lineales . . . . . . . . 133 11. . . . . . . . . . .1 Criptoan´lisis Diferencial . 127 10. . . . . . 134 11. . . . . . .7 Criptoan´lisis de Algoritmos Sim´tricos . . . . . . . . . 129 10. . . .5 Seguridad de AES . . . . . . . . . . .4 El algoritmo IDEA . .4 Otros Generadores de Secuencia . . . . . . . . 135 o 11. . . . . . . . 119 10. . . . . . .3 Combinaci´n de Registros de Desplazamiento . . .3 Las Rondas de AES . . . . . . . . . . . . . . . . .2 Criptoan´lisis Lineal . . . . . .7. . . . . . . . . . . 118 10. . . . . . . .3 Registros de Desplazamiento Retroalimentados . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . . . . . 118 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Secuencias Pseudoaleatorias . . . . . . . . .3. . . . . . . . . . . . . . . . 125 a 10. . . 130 a 11 Cifrados de Flujo 131 11. . . . . . . . . . . . . . . . .1 Algoritmo RC4 . . . . . . . 135 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . .

. . . . . . . .1. . . . 143 12. . . . . 164 o n 13. . . . . . . . 164 o 13. . . . . .1 Aplicaciones de los Algoritmos Asim´tricos . . . . . . .1 Algoritmo de Diffie-Hellman . . . . . . . 153 12. . . . . . . . . . . . .3 Otros Algoritmos Asim´tricos . . . . . . . . . . . . . . . . . . .2.4 El Algoritmo SHA-1 . . . . . . . . . . . . . . .2 Autentificaci´n de Dispositivos . . . . . . . . . . . . . . . . . . . .4 Algoritmo DSA . . . . 159 o 13. . . . . . . . . . . . . .2 Autentificaci´n . . . . . . . . . . .3. . . . . . . . . . . . . .2 Estructura de una Funci´n Resumen . . . . . . .4. . . . . . . . . . . . . . .1 Longitud Adecuada para una Signatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 12. . . . . . . . . . . . . . .3 Autentificaci´n de Usuario Mediante Contrase˜a . . . . . . . .2 Algoritmo de ElGamal . . . . . . . .1. . . . . 146 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Manuel J. . . . .5 Los Protocolos SSL y TLS . . . . . . . . . .1 Seguridad del Algoritmo RSA . . .3. . . . . . . . 154 12. . . . .2 Algoritmo SEAL . . . . . . . . . . . . . .1 Protecci´n de la Informaci´n . . . . . .1 Cifrado de ElGamal sobre Curvas El´ ıpticas . . 155 13 M´todos de Autentificaci´n e o 13. . . . . . . 146 12. . . . . . Funciones Resumen 157 . . . . . . . . 164 o 13.5 Funciones de Autentificaci´n de Mensaje . . . . .2. . .1. . . . . . . . . . . .1. . . .3. . . . . . . . . . .16 ´ INDICE GENERAL 11. . . . . . . . . . . .6 Ejercicios Propuestos . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . .1 Ataques Mediante Diccionario . . 149 12. . . 149 e 12. . . . .4 Criptograf´ de Curva El´ ıa ıptica . . . . 141 e 12. . . . . 162 13. . . . . . . . . . . . . . . . .3. . . . . . . . . . . . .3 Algoritmo MD5 . . . . . . . . . . . 157 13. . . . . . . . . . . . . . . . . . .3 Algoritmo de Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Firmas Digitales. 158 13. . . . . 152 12. . . . . . . . . . . 136 IV Criptograf´ de Llave P´ blica ıa u 139 141 12 Algoritmos Asim´tricos de Cifrado e 12. . . . . . . . . . . . . . . . . . . . . . . .1. . 159 13. . . . . . . . 142 o 12. . . . . .3.1. . . . . . . . . . . . .2 Vulnerabilidades de RSA . . . . . . . . . . .4. . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 o o 12. . . . . . . . . . . . . . . . 153 12. . . . . . . . . . . . . . . . . .2 El Algoritmo RSA . . . . . . . . . . 150 12. .

. .2 C´mo act´a un Hacker . . . . . . . . .5 Esteganograf´ . . . . . . . . . . 191 16. . . . . . . . . . 185 15. . . . . . .4 Dinero Electr´nico . . . .2. . . . . . . . 173 14. 167 o 13. . . . . . . .2. . . . . . . . . . . . . . . . . . .2 Firma Digital . . . . . . . . . . . .3 Redes Externas . 172 14. .4 Borrando las Huellas . Demonios y Puertos . . . . . . . . . . . 176 14. . . . .2. . .2. .3 Vulnerabilidades de PGP . . . . . . . . . . . . . . . . . . . . . . . . 181 15. . . . . . . . . . . . . . . . . . . . . . . . . .2 Redes Internas . . . . . . . . . . . . . . . . . . . . .4 Gesti´n de Claves . . . . . . 169 14 PGP 171 14. . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 14.509 . . . . . . . 183 15. . . . . . 189 16. . . . . . . . . . . . . . . . . . .2 Desbordamientos de Buffer . . . . . . . . . . . . .3 Armaduras ASCII . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . .1 Protocolo TCP/IP. . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . 187 16. . . . . . . . . 171 14. . . . . . . . . . . . 175 o 14. 176 V Seguridad en Redes de Computadores 179 181 15 Seguridad en Redes 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Fundamentos e Historia de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Suplantando Usuarios . . . . . . . . . .1 Codificaci´n de Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Estructura de PGP . . . . . . . .5 Distribuci´n de Claves y Redes de Confianza . . . . . . . . 175 o 14. . . . . . . . . . . . . . . . . 172 o 14. . . . . . . . . . . . . . 168 ıa 13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Intranets . . . . . . . . . . . . . .6 Certificados X. .´ INDICE GENERAL 17 13. 182 15. . . . . . . . . . . . . .4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. 185 16 Hackers 16. . . . . . . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . . . . . . .2. . . . . . . . . . . . . . .1 El Hielo y los Vaqueros 187 . . .1 Importancia de las Redes .2. . . . . 192 Manuel J. .6 Otros PGP . . . . . . . . . . . 188 o u 16. . . . . . . . . . . . . . . . 191 16.

. . . . . . . . . . .2 Anatom´ de un Virus . . . . .1. . . . . . . . . 205 B. . . 208 B. . . . . . . . . . . . . . . .2. . . . 194 17 Virus 195 17. . .4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 a 17. . . . . . . . . .1 M´todos de Contagio . . . . . . . . . . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . . . . . . .1. . . . . . .3 Valores de prueba . . . . . . . . . . . . . . .2 IDEA . . . . . . . . . . . . . . . . . . . . 201 a a ıa A.1 Origen de los Virus . . . . . . . . . . .18 ´ INDICE GENERAL 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 B Ayudas a la Implementaci´n o 205 B. . . . . . . 192 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 e 17. . . . . . . . . . . . . . . . . . .3 C´mo Protegerse del Ataque de los Hackers . . . .2. . . . . 211 B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 17. . . . . . . . . . . . . . . . .4 Protegerse frente a los Virus . . . . . . . . . . . . . . . .2 Permutaciones . . . . . . . . . . . . . . . .1. . . . . . . . . . . . .5 Ataques Pasivos . . . . . . . . . . .2. . . . . . . 192 16. . . .2. . . . . . . . 197 17. . . . . . 205 B. . . . . . . . . . . . .2 La Fase Destructiva de un Virus . . . . 196 ıa 17. . . . . . . . . .3 Cu´ndo son Peligrosos los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 VI Ap´ndices e 199 201 A Criptograf´ Cu´ntica ıa a A. . . . . .3 Expectativas de Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 o 16. . . .1 S-Cajas . . . . . . . . . 205 B. . . . . . . . . . . . . . . . .6 Ataques Coordinados . . . . . . . . . .3 MD5 . . . . . . . . . . . . . . .1 Mec´nica Cu´ntica y Criptograf´ . . .2 Computaci´n Cu´ntica . . . . . . . . . . . . . . . . . . . . . . . . . 202 o a A. . . . . . . . . . . . . . . . . . . . . . . . . .1 DES . . 215 C Ejercicios Resueltos 217 Manuel J. . . . . . . . . . . . . . . . . .

Parte I Preliminares Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

.

impartida en tercer curso de Ingeıa nier´ T´cnica en Inform´tica de Gesti´n. Varios a˜os han pasado ıa e a o e n desde entonces. que e 1 el verano de 1998—. lo u n que s´ qued´ patente es que su longitud de clave es demasiado peque˜a. y. a´n no se ha encontrado ninguna debilidad seria en su dise˜o. o 1. a tener ciertos o o conocimientos b´sicos sobre seguridad—. el ataque que logr´ tener ´xito se realiz´ por la fuerza bruta. puesto que puede evitar cierta confusi´n en los t´rminos empleados o e 1 En realidad. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . nuevas t´cnicas 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 aut´ntica privacidad—. la escasez de documentaci´n en Espa˜ol sobre Criptograf´ ıo. en la Universidad de Ja´n. las cosas han ıa a o cambiado. a La presente colecci´n de apuntes naci´ con la vocaci´n de intentar cubrir en la medida de o o o lo posible ese vac´ Sin embargo. etc. los profesores Jos´ Ignacio Pel´ez S´nchez.1 C´mo Leer esta Obra o Esta obra ha sido organizada en cinco partes: 1. o n ıa. De hecho. e temas que antes ten´ un inter´s limitado se han convertido en fundamentales —la r´piıan e a da expansi´n de Internet obliga no s´lo al profesional. como cab´ esperar en una disciplina de tan r´pida evoluci´n. por lo que no podemos hablar o e o en un sentido estricto de derrota. y las dificultades que encontraban muchos alumnos para complementar bibliogr´ficamente la a asignatura. unido todo ello a la sorprendente difusi´n del anterior texto hizo surgir en el autor o la idea de distribuir esta obra en formato electr´nico y de forma gratuita. Aqu´ se incluyen todos los conceptos b´sicos y se introduce la terminolog´ ı a ıa empleada en el resto del libro.Cap´ ıtulo 1 Introducci´n o A lo largo de 1995 y principios de 1996. Preliminares. Su lectura es recomendable incluso para las personas que ya conocen el tema. sino al usuario medio. ı o n Manuel J. Antonio e a a S´nchez Solana y Manuel Jos´ Lucena L´pez elaboraron una Colecci´n de Apuntes para la a e o o asignatura ‘Criptograf´ y Seguridad en Computadores’. Algunos algoritmos han perdido parte de su inter´s —como es el caso de DES.

La recomendaci´n del autor en este sentido es clara: si es su primer contacto con la o Criptograf´ deje los fundamentos te´ricos justo para el final. trabajaba en el proyecto ULTRA tratando de descifrar los mensajes enviados por el ej´rcito alem´n con el m´s sofisticado ingenio de codificaci´n ideado hasta e a a o entonces: la m´quina ENIGMA. Esta es la parte menos te´rica y quiz´ m´s pr´ctica o a a a desde el punto de vista de la seguridad (no desde el punto de vista criptogr´fico). 1. Se ha pretendido que todos los conceptos queden suficientemente claros con la sola lectura de este libro. Fundamentos Te´ricos de la Criptograf´ Se desarrollan brevemente los resultados te´rio ıa. e 4.22 a lo largo de la obra. Adem´s se incluye un cap´ e o a ıtulo sobre PGP. aunque por desgracia. o no son imprescincibles a la hora de empezar a adentrarse en este apasionante mundo. algunas de las m´s interesantes est´n en ingl´s. ıa tos. o pero puede ser ignorada si el lector est´ dispuesto a creerse lo que encuentre en posteriores a cap´ ıtulos. a a e 1. a o simplemente no tiene inter´s en estos fundamentos. Criptograf´ de Llave Privada. Se introduce la Criptograf´ Cl´sica. o correr´ el riesgo de perderse ıa. o Este texto no tiene por qu´ ser le´ cap´ e ıdo ıtulo por cap´ ıtulo. ıan Manuel J. e 3. La parte de fundamentos te´ricos a a o ´ est´ orientada a personas con unos conocimientos m´ a ınimos sobre Algebra y Programaci´n. o cos sobre los que se va a apoyar el resto del libro. para que el lector pueda comenzar a elaborar por s´ mismo estrategias de protecci´n de la ı o informaci´n. o a entre conceptos que. Seguridad en Redes de Computadores. Introducci´n o 2. pudiendo emplear como punto de partida las propias referencias que aparecen al final de este documento. si de una parte son necesarios para una comprensi´n profunda del tema. puede pasarla por alto. en un lugar llamado Bletchley Park. Se a estudian en ella brevemente los problemas que se dan en redes de computadoras. Este grupo de cient´ a ıficos empleaba el que hoy se considera el primer computador —aunque esta informaci´n permaneci´ en secreto hasta mediados de o o los 70—. En esta parte se estudian los algoritmos asim´tricos y los ıa u e m´todos de autentificaci´n. Su uso y la llegada del polaco Marian Rejewski tras la invasi´n de su pa´ natal o ıs cambiar´ para siempre el curso de la Historia. Si usted no domina las Matem´ticas. as´ como los algoıa ıa a ı ritmos sim´tricos de cifrado. Criptograf´ de Llave P´blica. 5.2 Algunas notas sobre la Historia de la Criptograf´ ıa La Criptograf´ moderna nace al mismo tiempo que las computadoras. un grupo de cient´ ıficos entre los que se encontraba Alan Turing. pero se recomienda vivamente que si el lector tiene inter´s por profundizar en e cualquiera de los aspectos tratados aqu´ consulte la bibliograf´ para ampliar sus conocimienı. Durante la Segunda ıa Guerra Mundial. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . aunque se ha organizado de manera que los contenidos m´s b´sicos aparezcan primero.

citar algunos. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . a´n queda mucho camino por recorrer.2. Es e como pedirnos a todos que le demos a la polic´ una copia de las llaves de nuestra casa —con ıa el pretexto. a las mismas leyes que el armamento nuclear. si bien la mayor parte de estos avances se manten´ —y se siguen manteniendo. la telefon´ m´vil. o y se considera delito su an´lisis —¿Qu´ pensar´ usted si se compra un coche y se le proh´ a e ıa ıbe desarmarlo para ver c´mo funciona?—. aparte de suscitar poca confianza en los usuarios. por ejemplo. La seguridad no debe basarse en mantener los algoritmos ocultos —puesto que ´stos. Una consecuencia inmediata de esto es que las versiones que se exportan de los exploradores de Internet m´s extendidos (Netscape y Explorer). Es imposible desligar la Criptograf´ moderna de todas las consideraciones pol´ ıa ıticas. Como este c´digo permanece en secreto. o u o las infructosas iniciativas de las casas discogr´ficas encaminadas a impedir la pirater´ por a ıa. Financiadas fundamentalmente por la NSA (Agencia Nacional u de Seguridad de los EE. Por desgracia. Otra de las l´ u ıneas de debate es la intenci´n de algunos gobiernos de almacenar todas las claves privadas de sus ciudadanos. de luchar contra el terrorismo y el narcotr´fico—. la mayor parte de las investigaciones hasta hace relativamente poco tiempo han sido tratadas como secretos militares. y considerar ilegales aquellas que no est´n registradas. es desgraciadamente imposible que Microsoft pueda o despejar cualquier sombra de duda sobre la seguridad de sus sistemas operativos. Ejemplos claros de oscurantismo y de sus nefastas consecuencias han sido la ca´ del algoritmo ıda que emplean los tel´fonos GSM en menos de cuarenta y ocho horas desde que su c´digo fuera e o descubierto.). el controvertido y manifiestamente in´til algoritmo de protecci´n de los DVD. Sin embargo en los ultimos a˜os. periencia ha demostrado que la unica manera de tener buenos algoritmos es que ´stos sean ´ e accesibles. parece que a nuestros gobiernos les interesan m´s los a beneficios de las multinacionales que los intereses de los ciudadanos. tarde o temprano acaban siendo anae lizados y descritos— sino en su resistencia demostrada tanto te´rica como pr´cticamente. por supuesto. Si bien esta situaci´n se ha visto aliviada. a Manuel J. debido a la relajaci´n o o de estas restrictivas leyes. para que puedan ser sometidos al escrutinio de toda la comunidad cient´ ıfica.UU. La pretensi´n de establecer sistemas de patentes sobre el software viene a agravar la situaci´n. a o cuando un programador denunci´ una supuesta puerta trasera en el c´digo criptogr´fico de o o a todas las versiones del sistema operativo Windows. por ejemplo. y o a la unica manera de demostrar la fortaleza de un algoritmo es someti´ndolo a todo tipo de ´ e ataques. filos´ficas y morales que suscita. Algunas notas sobre la Historia de la Criptograf´ ıa 23 Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnolog´ cripıa togr´fica.UU. con un o o claro perjuicio tanto de los usuarios como de las peque˜as empresas frente al poder de las n grandes corporaciones. y que se convierta en la piedra angular de ıa asuntos tan importantes como el comercio electr´nico. o Muchas son las voces que claman por la disponibilidad p´blica de la Criptograf´ La exu ıa. a ıan seg´n algunos— en secreto. ´ n investigaciones serias llevadas a cabo en universidades de todo el mundo han logrado que la Criptograf´ sea una ciencia al alcance de todos.1. y que en Europa se pretende elaborar legislaciones parecidas. Uno de los cap´ ıtulos m´s conocidos de esta historia ocurri´ en el verano de 1999. establecer conexiones e realmente seguras para conectarse a un banco —con el agravante de que no se informaba de ello adecuadamente al usuario—. incorporaban a hasta hace poco tiempo una seguridad d´bil. que el software criptogr´fico est´ suo a a jeto en EE. o las nuevas platao ıa o formas de distribuci´n de contenidos multimedia. o necesarias para firmar digitalmente. Recordemos. impidiendo.

y que la neıa cesita para encubrir sus cr´ ımenes. o e chats y correo electr´nico. que constituye una de las mayores a amenazas contra la libertad de toda la Historia de la Humanidad. Defender el ´mbito e o a de lo privado es un derecho inalienable de la persona. Existe un ducumento de la U. es m´s. pero. que en mi opini´n debe prevalecer sobre o la obligaci´n que tienen los estados de perseguir a los delincuentes.E. Australia y Nueva Zelanda. impidiendo que se abra el imprescindible debate p´blico que deber´ anteceder a tan grave asunto. creada por la NSA en 1980 —sus precursoras datan de 1952— en colaboraci´n o con Gran Breta˜a. —ENFOPOL 112 10037/95—. para que todos leamos su contenido?.24 1. y usualmente a u se mide su calidad por la cantidad de esfuerzo que se necesita para romperlos. Sin embargo. La Uni´n o Europea reconoci´ la existencia de Echelon.E. y acabar´n haci´ndolo. y buscar o e de manera autom´tica ciertas palabras clave. para monitorizar pr´cticamente todas las n a comunicaciones electr´nicas —tel´fono. Estas personas insin´an que cualquiera ıa. ¿por qu´ esas personas que no tienen nada que e ocultar no env´ todas sus cartas en tarjetas postales. no les quepa duda. buzones de voz.3 N´ meros Grandes u Los algoritmos criptogr´ficos emplean claves con un elevado n´mero de bits. pero podr´ ser empleada tanto para espionaje industrial —como presuntamente ıa ha hecho durante a˜os el Gobierno Franc´s. en la que lleva o trabajando unos diez a˜os. la lucha contra el terrorismo. nuevamente. B´sicamente se trata de a una red. como para el control de aquellas personas que pueden representar amenazas pol´ ıticas a la estabilidad de la sociedad moderna. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . ninguno de los estados miembros ha confirmado ni desmentido nada al respecto. n La red Enfopol tendr´ caracter´ ıa ısticas tan aterradoras como la posesi´n de todas las claves o privadas de los ciudadanos europeos. la monitorizaci´n de tel´fonos. ¿por cu´nto tiempo? a 1. a respecto pasan por o a el despliegue de su propia red de vigilancia electr´nica. pero hasta la fecha nadie ha exigido a ning´n o u gobierno explicaci´n alguna. El pretexto es. Afortunadamente. faxes. Este secretismo es m´s que preocupante. En ese caso. el proyecto Enfopol se encuentra paralizado. e-mail y fax principalmente— del planeta. El tipo de ataque m´s simple es la fuerza bruta. Introducci´n o Existe un falaz argumento que algunos esgrimen en contra del uso privado de la Criptograf´ proclamando que ellos nada tienen que ocultar. que simplemente trata de ir probando una a una todas a Manuel J. adem´s de la incorporaci´n de puertas traseras a los proveedores o a o de Internet. parece que los planes de la U. ¿Qu´ nos queda de la Libertad y la u ıa e Democracia si se nos ocultan asuntos tan importantes por nuestro bien?. firmado por todos y cada uno de los miembros de la Uni´n. La informaci´n obtenida ir´ a la NSA. ıan o ¿por qu´ se molestan si alguien escucha sus conversaciones telef´nicas?. en el que se aprueba la creaci´n de esta o o red. pues deja a la supuesta democracia en que a vivimos maniatada frente a un asunto tan importante. que a o ıa luego podr´ a su vez brind´rsela a otros pa´ ıa a ıses. llamada Enfopol. poniendo a disposici´n de sus propias compa˜´ n e o nıas secretos robados a empresas extranjeras—. u que abogue por el uso libre de la Criptograf´ es poco menos que un delincuente. a e En el ojo del hurac´n se encuentra la red Echelon. D´mosle a los gobiernos o e poder para entrometerse en nuestras vidas.

¡m´s de 2200 a˜os! Pero ¿y si la clave del a n 24 a˜ os. El lector podr´ advertir que en este texto aparece el t´rmino autentificaci´n. siempre puede acudir u a cualquier tutorial b´sico para poder entender los algoritmos de este libro. Si usted no conoce este lenguaje. el algoritmo DES tiene 256 posibles claves. con objeto de que sea accesible o al mayor n´mero de personas posible. e u Observ´ndola podremos apreciar que 1024 a˜os es aproximadamente cien billones de veces la a n edad del universo (y eso con un ordenador capaz de ejecutar el algoritmo de codificaci´n o completo un mill´n de veces por segundo). escrito por Johannes Trithemius en 1518—. Quisiera hacer notar en este punto que ambos t´rminos son correctos y o e est´n recogidos en el Diccionario de la Real Academia.1 podemos observar algunos valores que nos ayudar´n a u a comprender mejor la aut´ntica magnitud de muchos de los n´meros que veremos en este texto.1. a 1. por ejemplo. pongamos por caso. recordemos que un mill´n es aproximadamente o 220 . Acerca de la Terminolog´ Empleada ıa 25 las claves. . a 1.5 Notaci´n Algor´ o ıtmica En este libro se describen varios algoritmos de inter´s en Criptograf´ La notaci´n empleae ıa. La opini´n del autor es que s´lo deben emplearse t´rminos o o e for´neos cuando nuestro riqu´ a ısimo idioma carezca de expresiones adecuadas para representar las ideas en cuesti´n. Recorrer completamente un espacio de n a claves de. El lector podr´ comprobar o a que este tipo de expresiones ha sido evitado en el presente texto. 256 bits a raz´n de un mill´n por segundo supone 2256−44 = 2212 a˜os o o n de c´lculo. Por ejemplo. o da en ellos es muy similar a la del lenguaje de programaci´n C. Esto nos deber´ disuadir de emplear mecanismos o ıa basados en la fuerza bruta para reventar claves de 128 bits. y despu´s llevar a a e cabo sus propias implementaciones en cualquier otro lenguaje de programaci´n. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Para manejar la tabla con mayor rapidez. debido a la existencia de palabras perfectamente v´lidas que pertenecen al idioma castellano. en lugar a e o de autenticaci´n. como son cifrar-descifrar y a codificar-decodificar (o descodificar). dispusi´ramos de un computador capaz de hacer un e mill´n de operaciones por segundo? Tardar´ o ıamos. o e e ıtulo del libro ‘Steganographia’.4 Acerca de la Terminolog´ Empleada ıa En muchos libros sobre Criptograf´ aparecen t´rminos como encriptar y desencriptar. ejemplo anterior tuviera 128 bits? El tiempo requerido ser´ de 10 ıa n Es interesante dedicar un apartado a tratar de fijar en nuestra imaginaci´n la magnitud real o de este tipo de n´meros. . Sin embargo. En la tabla 1. ¿Cu´nto tiempo nos llevar´ a ıa probarlas todas si. y que aqu´ empleo el primero de ellos a ı simplemente porque me gusta m´s que el otro. Esta ultima es la situaci´n en la que se encuentra la palabra esteganoo ´ o graf´ hispanizaci´n del t´rmino ingl´s steganography —que a su vez proviene del t´ ıa. no es exactamente la misma: all´ donde el empleo de o ı Manuel J. ıa e adoptados con toda probabilidad del verbo anglosaj´n encrypt. o aunque la notaci´n que uso es parecida.4. y que un a˜o tiene m´s o menos 224 segundos.

000. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .1: Algunos n´meros grandes u Manuel J. Introducci´n o Valor Probabilidad de ser fulminado por un rayo (por d´ ıa) Probabilidad de ganar el primer premio de la Loter´ Primiıa tiva Espa˜ola n Probabilidad de ganar el primer premio de la Primitiva y caer fulminado por un rayo el mismo d´ ıa Tiempo hasta la pr´xima glaciaci´n o o Tiempo hasta que el Sol se extinga Edad del Planeta Tierra Edad del Universo N´mero u N´mero u N´mero u N´mero u cura) de ´tomos en el Planeta Tierra a de ´tomos en el Sol a de ´tomos en la V´ L´ctea a ıa a de ´tomos en el Universo (excluyendo materia osa N´mero u 1 entre 9.26 1.983. 2 × 1030 (2100 ) Kg. 1050 (2166 ) Kg.9 × 1024 (282 ) Kg. 1021 (269 ) m3 1027 (289 ) m3 1082 (2272 ) m3 Tabla 1.000.000 (233 ) 1 entre 13.000 (214 ) a˜os n 9 (230 ) a˜ os 10 n 109 (230 ) a˜os n 1010 (234 ) a˜os 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.816 (223 ) 1 entre 256 14.

1. Tampoco he tenido en cuenta ni mucho menos la eficiencia de tiempo o n memoria para estos algoritmos. me he permitido ıa o peque˜as licencias. por lo que mi sincero consejo es que no intenten cortar y pegar para realizar sus propias implementaciones. Manuel J. Notaci´n Algor´ o ıtmica 27 un C puro pon´ en peligro la claridad en la descripci´n de los algoritmos. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .5.

28 1. Introducci´n o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

a u emplea habitualmente para agrupar tanto la Criptograf´ como el Criptoan´lisis. se e ıa.1 Criptograf´ ıa Seg´n el Diccionario de la Real Academia. o Conviene hacer notar que la palabra Criptograf´ s´lo hace referencia al uso de c´digos. desarrollado por Claude Shannon en sus art´ a ıculos “A Mathematical Theory of Communication” (1948) y “Communication Theory of Secrecy Systems” (1949). o m´s bien un conglomerado de t´cnicas. ya que en caso contrario podr´ a ıamos llevarnos desagradables sorpresas. hay que tener muy n o presente su posible criptoan´lisis. que estudia las propiedades de los n´meros ıa u a u enteros—. sienta las bases de la Teor´ de la Informaci´n y de la Criptograf´ moderna. y γρ´ ϕ ιν. El seıa o ıa gundo. y su definici´n es: “Arte de ´ α o escribir con clave secreta o de un modo enigm´tico”. Uno de ellos. se titulaba “New directions in Cryptography”. abriendo enorıa ıa u memente el abanico de aplicaci´n de esta disciplina. que significa oculto. conocidas en su e o conjunto como Criptoan´lisis. y la Complejidad Algor´ ıtmica. Obviamente la Criptograf´ hace a˜os que a ıa n dej´ de ser un arte para convertirse en una t´cnica. ıa o o por lo que no engloba a las t´cnicas que se usan para romper dichos c´digos.Cap´ ıtulo 2 Conceptos B´sicos sobre a Criptograf´ ıa 2. Entre las disciplinas que engloba cabe destacar la Teor´ de la Informaci´n. o e a e que tratan sobre la protecci´n —ocultamiento frente a observadores no autorizados— de la o informaci´n. e introduc´ el concepto de Criptograf´ de Llave P´blica. En cualquier caso ambas disciplinas est´n ´ a a ıntimamente ligadas. publicado por Whitfield Diffie y Martin Hellman en 1976. Existen dos trabajos fundamentales sobre los que se apoya pr´cticamente toda la teor´ a ıa criptogr´fica actual. la palabra Criptograf´ proviene del griego u ıa κρυπτ oς. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Finalmente. el t´rmino Criptolog´ aunque no est´ recogido a´n en el Diccionario. ıa a Manuel J. la o ıa o Teor´ de N´meros —o Matem´tica Discreta. no olivdemos que cuando se dise˜a un sistema para cifrar informaci´n. que significa escritura.

e Manuel J. que s´lo sirve para ´ u o cifrar—. que si tenemos un mensaje m. o plaintext) que pueden ser enviados. En el mundo real se codifican los mensajes (largos) mediante algoritmos sim´tricos. Estos criptosistemas deben cumplir adem´s que el conocimiento de a la clave p´blica kP no permita calcular la clave privada kp . Son aquellos que emplean la misma clave e k tanto para cifrar como para descifrar. o • Criptosistemas asim´tricos o de llave p´blica. K. o para llevar a cabo autentificaciones. si empleamos una para cifrar la otra sirve para descifrar y viceversa. Ofrecen un abanico superior u de posibilidades. esto es. y luego se hace uso de la criptograf´ asim´trica para e ıa e codificar las claves sim´tricas (cortas). o criptogramas. Conceptos B´sicos sobre Criptograf´ a ıa 2. D). E. • 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.1) es decir. Existe una transformaci´n diferente o Ek para cada valor posible de la clave k. En o o muchos casos son intercambiables.2 Criptosistema Definiremos un criptosistema como una qu´ ıntupla (M. an´logo a E. lo ciframos empleando la clave k y luego lo desciframos empleando la misma clave. que suelen ser muy eficientes. a Todo criptosistema ha de cumplir la siguiente condici´n: o Dk (Ek (m)) = m (2. Presentan el inconveniente de que para ser empleados en comunicaciones la clave k debe estar tanto en el emisior como en el receptor. • K representa el conjunto de claves que se pueden emplear en el criptosistema. Existen dos tipos fundamentales de criptosistemas: • Criptosistemas sim´tricos o de clave privada. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . kP ). lo cual nos lleva preguntarnos c´mo transmitir la clave de forma segura. En la pr´ctica se emplea una combinaci´n de estos dos tipos de criptosistemas. C. donde: • M representa el conjunto de todos los mensajes sin cifrar (lo que se denomina texto claro. puesto a o que los segundos presentan el inconveniente de ser computacionalmente mucho m´s costosos a que los primeros. obtenemos de nuevo el mensaje original m.30 2. • C representa el conjunto de todos los posibles mensajes cifrados. que emplean una doble clave (kp . e u kp se conoce como clave privada y kP se conoce como clave p´blica. Una de ellas sirve u para la transformaci´n E de cifrado y la otra para la transformaci´n D de descifrado. pudiendo emplearse para establecer comunicaciones seguras por canales inseguros —puesto que unicamente viaja por el canal la clave p´blica. • D es el conjunto de transformaciones de descifrado.

Estas circunstancias podr´ llegar a ıan simplificar enormemente un intento de violar nuestro sistema. pero que s´lo puede ser reconstruida por el destinatario. La existencia de claves con estas caracter´ ısticas. Esto quiere decir que tanto los textos claros como los textos cifrados se representan empleando el mismo alfabeto —por ejemplo. lo cual ser´ catastr´fico para nuestros prop´sitos. existen tantos mecanismos para llevar a cabo este camuflaje como nuestra imaginaci´n nos permita. mientras que si ese mismo mensaje viaja camuflado en el interior de una imagen digital para una inocente felicitaci´n navide˜a. como es natural. por lo que tambi´n habr´ que e a evitarlas a toda costa. aparentemente inocua. a a atraviese las fronteras independientemente de que puedan acceder a su contenido. con respecto a la Criptograf´ fuerte. Si lo codifica. que vendr´ a traducirse como llenar de paja y e ıa separar el grano de la paja. Como o n a a es de suponer.2.3 Esteganograf´ ıa La esteganograf´ —o empleo de canales subliminales— consiste en ocultar en el interior ıa de una informaci´n. No obstante. pero entremezclado con cantidades ingentes de basura. cuando se usa el algoritmo DES. Por esta raz´n puede darse la posibilidad de que exista alg´n k ∈ K tal o u que Ek (M ) = M . Esteganograf´ ıa Claves D´biles e 31 En la inmensa mayor´ de los casos los conjuntos M y C definidos anteriormente son ıa iguales. ıa Tambi´n puede darse el caso de que ciertas claves concretas generen textos cifrados de poca e calidad. existen en algunos pa´ ıa ıses. y en muchos casos tambi´n de los e par´metros escogidos a la hora de aplicarlo. tenemos un mecanismo para transmitir informaci´n no cifrada. depende en gran medida de las peculiaridades de cada algoritmo en concreto. ambos son cadenas de 64 bits—. Esta a e a o ´ t´cnica se conoce como chaffing and winnowing. Normalmente en un e e buen criptosistema la cantidad de claves d´biles es cero o muy peque˜a en comparaci´n con el e n o n´mero total de claves posibles. tendr´ muchas m´s posibilidades de llegar a su destino. Una posibilidad bastante com´n en ciertos algoritmos es que algunas claves tengan u la siguiente propiedad: Ek (Ek (M )) = M . conviene conocer esta circunstancia para poder u evitar en la medida de lo posible sus consecuencias. El mensaje se env´ como texto claro. El ıa destinatario emplear´ t´cnicas esteganogr´ficas para separar la informaci´n util del resto. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Llamaremos en general a las claves que no coa difican correctamente los mensajes claves d´biles (weak keys en ingl´s). lo cual quiere decir que basta con volver a codificar el criptograma para recuperar el texto claro original. otro tipo de informaci´n (cifrada o no). 2. las autoridades jam´s permitir´n que el mensaje ıs. con lo que en realidad o o Manuel J. puesto que el empleo de ıa o o esas claves dejar´ todos nuestros mensajes ¡sin codificar!. Supongamos que un disidente pol´ ıtico quiere enviar un mensaje fuera de su pa´ burlando la censura.3. En consecuencia. Este o o m´todo ha cobrado bastante importancia ultimamente debido a que permite burlar diferentes e ´ sistemas de control. o Menci´n especial merece el uso de la esteganograf´ para exportar informaci´n sin violar o ıa o las leyes restrictivas que.

En general el criptoan´lisis se suele llevar a cabo estudiando grandes cantidades de pares a mensaje-criptograma generados con la misma clave. m´s probabilidades de a ´xito tendr´ el criptoan´lisis. como es el caso de DES. Este u u o sistema surgi´ en marzo de 1998. Esta situaci´n se suele dar cuando tenemos acceso al dispositivo de cifrado o y ´ste nos permite efectuar operaciones.UU. debido a lo enormemente grandes ıa. e a a Uno de los tipos de an´lisis m´s interesantes es el de texto claro escogido. pero no nos permite leer su clave —por ejemplo. Conceptos B´sicos sobre Criptograf´ a ıa hemos logrado protegerla sin usar en ning´n momento ning´n algoritmo de codificaci´n. y en muchos casos no suelen considerarse como aut´nticas t´cnicas de e e criptoan´lisis. Se da por supuesto que el espacio de claves para cualquier criptosistema digno de inter´s ha de ser suficientemente grande como para e que un ataque por la fuerza bruta sea inviable. Rivest —uno de los creadores de o RSA—. propuesto por Ronald L. pueden ser suficientes unos e cientos de mensajes para obtener informaci´n que permita deducir la clave empleada.4 Criptoan´lisis a El criptoan´lisis consiste en comprometer la seguridad de un criptosistema. reserv´ndose este t´rmino para aquellos mecanismos que explotan posibles dea a e bilidades intr´ ınsecas en el algoritmo de cifrado. hemos de suponer por el contrario que los algoritmos siempre son conocidos. existen longitudes de clave para las que resultar´ imposible a todas luces un ataque de este tipo. si dise˜´ramos una ıa na m´quina capaz de recorrer todas las combinaciones que pueden tomar 256 bits. y puede ser resultado de escuchar un canal de comunicaciones. a un mensaje codificado que poseemos y comprobar cu´les de las salidas que se obtienen tienen sentido como posible texto claro. cuyo consumo a Manuel J. Obviamente.32 2. o de la posibilidad de que el objeto de nuestro ataque responda con un criptograma cuando le enviemos un mensaje. por lo que algoritmos a que hace unos a˜os eran resistentes frente a ataques por la fuerza bruta hoy pueden resultar n inseguros. o Tambi´n podemos tratar de criptoanalizar un sistema aplicando el algoritmo de descifrae do. Por ejemplo. Esto se puede a hacer descifrando un mensaje sin conocer la llave. con todas y cada una de las claves. Hemos de tener en cuenta no obstante que la capacidad de c´lculo de las computadoras crece a gran velocidad. que parte de que a a conocemos una serie de pares de textos claros —elegidos por nosotros— y sus criptogramas correspondientes. se denominan ataques por la fuerza bruta. 2. cuanto mayor sea la cantidad de pares. El mecanismo que se emplee para obtenerlos es indiferente. El n´mero de pares necesarios para obtener la clave e o u desciende entonces significativamente. o bien obteniendo a partir de uno o m´s a criptogramas la clave que ha sido empleada en su codificaci´n. como desaf´ a la pol´ ıo ıtica restrictiva del Gobierno de los EE. Cuando el sistema es d´bil. con respecto a la Criptograf´ No deja de ser en cierto modo una curiosidad. Este m´todo a e y todos los que buscan exhaustivamente por el espacio de claves K. las e tarjetas de los tel´fonos m´viles GSM—. que son los mensajes en comparaci´n con la cantidad de texto util que se puede incluir en o ´ ellos. Sin embargo. No se considera criptoan´lisis o a el descubrimiento de un algoritmo secreto de cifrado. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

su ausencia es por definici´n indemostrable. estudia las variaciones que existen entre los mensajes cifrados correspondientes. lo cual nos lleva a tener que adoptar un compromiso entre el coste del sistema — e tanto computacional como de almacenamiento. o La Criptograf´ no s´lo se emplea para proteger informaci´n. Un par de m´todos de criptoan´lisis que han dado interesantes resultados son el an´lisis e a a diferencial y el an´lisis lineal (ver secci´n 10. 44) veremos que pueden existir sistemas idealmente seguros.5. o a y esto es debido a que. Con toda seguridad.7. logaritmos discretos. consistir´ en tratar de a e ıa deducir la llave privada a partir de la p´blica. etc.5 Compromiso entre Criptosistema y Criptoan´lisis a En la secci´n 3. Mientras estos problemas gen´ricos o e permanezcan sin soluci´n eficiente. De hecho.5 (p´g. El primero de ellos. 1 Manuel J. mientras que la presencia de fallos en un sistema es posible demostrarla. la gran variedad de sistemas criptogr´ficos produce necesariaa mente gran variedad de t´cnicas de criptoan´lisis. podremos seguir confiando en estos algoritmos. En estos casos surge un nuevo tipo de criptoan´lisis que est´ encaa a minado unicamente a permitir que elementos falsos pasen por buenos. o Como se puede apreciar. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . cada una de ellas adaptada a un algoritmo e a o familia de ellos. El segundo emplea operaciones XOR entre algunos bits del texto claro y algunos bits del texto cifrado. surgir´n con ellos nuevos m´todos de criptoan´lisis. Si p est´ suficientemente sesgada (no se aproxima a 1 ). Los datos sobre o e Seg´n las Leyes de la Termodin´mica existe una cantidad m´ u a ınima de energ´ necesaria para poder modificar ıa el estado de un sistema. cuando en el futuro aparezcan nuevos mecanismos de protecci´n de la informaci´n. Otro tipo de an´lisis. sino simplemente poder sustituirlo por otro falso y que supere las pruebas de autentificaci´n. partiendo de a o a pares de mensajes con diferencias m´ ınimas —usualmente de un bit—. no habr´ energ´ suficiente en el Universo para que ıa ıa pudiera completar su trabajo. la o o a e a investigaci´n en este campo es tan importante como el desarrollo de algoritmos criptogr´ficos. Tambi´n veremos que estos sistemas en la pr´ctica carecen de e a inter´s. tratando de identificar patrones comunes. p´gina 130). es decir. capaces o a de resistir cualquier ataque. Si realizamos esto con muchos pares de ´ texto claro-texto cifrado podemos obtener una probabilidad p en ese bit que calculamos. tambi´n se utiliza para perıa o o e mitir su autentificaci´n. e incluso econ´mico— frente a su resistencia o a diferentes ataques criptogr´ficos. tendremos la posibilidad de recuperar la a 2 clave. a La informaci´n posee un tiempo de vida. Suelen ser t´cnicas anal´ u e ıticas que b´sicamente a intentan resolver los problemas de elevado coste computacional en los que se apoyan estos criptosistemas: factorizaci´n. esta vez para los algoritmos asim´tricos. Compromiso entre Criptosistema y Criptoan´lisis a 33 fuera m´ ınimo en cada cambio de estado1 . o 2.2. Puede que ni siquiera ´ nos interese descifrar el mensaje original. para identificar al autor de un mensaje e impedir que nadie o suplante su personalidad. y pierde su valor transcurrido ´ste. obteniendo finalmente un unico bit.

Conceptos B´sicos sobre Criptograf´ a ıa la estrategia de inversiones a largo plazo de una gran empresa. La seguridad de los criptosistemas se suele medir en t´rminos del e e n´mero de computadoras y del tiempo necesarios para romperlos. etc. que otro que emplee ´ una red de supercomputadoras. porque entonces a a puede que no est´ segura. De unos a˜os a a u n esta parte se han convertido en minor´ debido al auge que ha experimentado Internet. 2. Hoy por hoy casi cualquier ordenador pertenece a alguna red. nombres de familiares. Una pr´ctica muy extendida por desgracia es la de escoger palabras clave a a que contengan fechas. Tampoco conviene depositar excesiva confianza en el algoritmo de cifrado. Por eso tambi´n ha de tenerse en cuenta si la informaci´n que e o queremos proteger vale m´s que el esfuerzo de criptoan´lisis que va a necesitar. Ser´ suficiente. no tiene sentido emplear algoritmos con niveles de seguridad extremadamente elevados si luego escogemos contrase˜as (passwords) rid´ n ıculamente f´ciles de adivinar. y a veces simplemente en u funci´n del dinero necesario para llevar a cabo esta tarea con garant´ de ´xito. Son los que no est´n conectados a ning´n tipo de red. Por ejemplo. tanto internos como externos. por buenos que sean los algoritmos empleados. como algunas versiones de PGP—. sobre todo porque no tardar´ lo mismo un o e a a oponente que disponga de una unica computadora de capacidad modesta. y en este sentido o podr´ ıamos hacer la siguiente subdivisi´n: o 1. Sistemas interconectados. puesto que en el proceso de protecci´n de la informaci´n existen otros puntos d´biles que deben ser tratados o o e con un cuidado exquisito. tienen un mayor periodo de validez que la exclusiva period´ ıstica de una sentencia judicial que se va a hacer p´blica al d´ siguiente. ıa. por ejemplo. Sistemas aislados.6 Seguridad El concepto de seguridad en la informaci´n es mucho m´s amplio que la simple protecci´n o a o de los datos a nivel l´gico. pues. o ıas e En cualquier caso hoy por hoy existen sistemas que son muy poco costosos —o incluso gratuitos. tener un sistema que garantice que el tiempo u ıa a que se puede tardar en comprometer su seguiridad es mayor que el tiempo de vida de la propia informaci´n que ´ste alberga. nombres de personajes o lugares de ficci´n. a anotarlas o dec´ ırselas a nadie. En primer lugar habr´ que caracterizar el u ıa sistema que va a albergar la informaci´n para poder identificar las amenazas. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Para proporcionar una seguridad real hemos de tener en cuenta o m´ltiples factores. enviando y recogiendo informaci´n del exterior casi constantemente. puesto que si la clave cae en malas manos.34 2. o Son las primeras que un atacante avispado probar´ Tampoco es una pr´ctica recomendable ıa. u Manuel J. Esto no suele ser f´cil. todo nuestro sistema queda comprometido. 2. Esto hace que las o redes de ordenadores sean cada d´ m´s complejas y supongan un peligro potencial que ıa a no puede en ning´n caso ser ignorado. y que nos garantizan un nivel de protecci´n o tal que toda la potencia de c´lculo que actualmente hay en el planeta ser´ insuficiente para a ıa romperlos.

4. ıa e Manuel J. Seguridad de la informaci´n. o o a 5. ya que ıa pertenecen a terceros. Cuando se recibe un mensaje no s´lo es necesario poder identificar de forma o un´ ıvoca al remitente.6. Debido a los problemas del canal de comunicaci´n. 3. Debido a que en la mayor´ de los casos escapan a nuestro control. En este nivel estar´ ıan. etc. p´gina 157). 6. Tambi´n se suelen tener en cuenta dentro de este punto aspectos relacionados con la e restricci´n de acceso f´ o ısico a las computadoras unicamente a personas autorizadas. estando la primera unicamente indicada en ıa e e ´ sistemas aislados. Englobaremos dentro de esta categor´ a todos los asuntos relacionados ıa con la salvaguarda de los soportes f´ ısicos de la informaci´n. la prevenci´n de ataques terroristas. Para esto se suele emplear criptograf´ asim´trica ıa e en conjunci´n con funciones resumen (ver secci´n 13. En las redes tenemos el problema a˜adido de que cualquier o n usuario autorizado puede acceder al sistema desde fuera. resulta imposible asegurarse totalmente de que no est´n siendo a escuchados o intervenidos. negar su autor´ sobre ´l.2. sino que ´ste asuma todas las responsabilidades derivadas de la e informaci´n que haya podido enviar. Problemas de suplantaci´n. al tener que transmitir la clave por a el canal de comunicaci´n. Seguridad 35 En cuanto a las cuestiones de seguridad que hemos de fijar podr´ ıamos clasificarlas de la siguiente forma: 1. es o o necesario asegurarse de que la informaci´n que recibimos en la computadora viene de o quien realmente creemos que viene. es decir. Seguridad f´ ısica. entre otras. Problemas de autentificaci´n. En este sentido es fundamental impedir que el o emisor pueda repudiar un mensaje. por lo que hemos de confiar en sistemas fiables para garantizar que los usuarios no est´n siendo suplantados por intrusos. En este apartado prestaremos atenci´n a la preservaci´n o o o de la informaci´n frente a observadores no autorizados. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Los canales de comunicaci´n rara vez se consideran o o seguros. a Normalmente se emplean mecanismos basados en password para conseguir esto. ´ 2. las pol´ e o ıticas de backup. Para ello podemos emplear tano to criptograf´ sim´trica como asim´trica. ya que si la emple´ramos en redes.1. m´s que de la informaci´n o a o propiamente dicha. las medidas contra incendios y sobrecargas el´ctricas. Seguridad del canal de comunicaci´n. estar´ o ıamos asumiendo un riesgo excesivo. No repudio.

Conceptos B´sicos sobre Criptograf´ a ıa Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .36 2.

Parte II

Fundamentos Te´ricos de la o Criptograf´ ıa

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

Cap´ ıtulo 3

Teor´ de la Informaci´n ıa o
Comenzaremos el estudio de los fundamentos te´ricos de la Criptograf´ dando una serie de o ıa nociones b´sicas sobre Teor´ de la Informaci´n, introducida por Claude Shannon a finales de a ıa o los a˜os cuarenta. Esta disciplina nos permitir´ efectuar una aproximaci´n te´rica al estudio n a o o de la seguridad de cualquier algoritmo criptogr´fico. a

3.1

Cantidad de Informaci´n 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. ¿Cu´nta informaci´n obtenemos si alguien nos dice que ha sacado una bola blanca de la bolsa?. a o ¿Y cu´nta obtenemos si despu´s saca otra y nos dice que es negra? a e Obviamente, la respuesta a la primera pregunta es que nos aporta bastante informaci´n, o puesto que est´bamos casi seguros de que la bola ten´ que salir negra. An´logamente si hubiera a ıa a salido negra dir´ ıamos que ese suceso no nos extra˜a (nos suministra poca informaci´n). En n o cuanto a la segunda pregunta, claramente podemos contestar que no nos aporta ninguna informaci´n, ya que al no quedar bolas blancas sab´ o ıamos que iba a salir negra. Podemos fijarnos en la cantidad de informaci´n como una medida de la disminuci´n de o o incertidumbre acerca de un suceso. Por ejemplo, si nos dicen que el n´mero que ha salido en u un dado es menor que dos, nos dan m´s informaci´n que si nos dicen que el n´mero que ha a o u salido es par. Se puede decir que la cantidad de informaci´n que obtenemos al conocer un hecho es dio rectamente proporcional al n´mero posible de estados que ´ste ten´ a priori. Si inicialmente u e ıa ten´ ıamos diez posibilidades, conocer el hecho nos proporciona m´s informaci´n que si inia o cialmente tuvi´ramos dos. Por ejemplo, supone mayor informaci´n conocer la combinaci´n e o o ganadora del pr´ximo 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 m´s f´cil acertar en el segundo caa a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

40

3. Teor´ de la Informaci´n ıa o

so, puesto que el n´mero de posibilidades a priori —y por tanto la incertidumbre, suponiendo u sucesos equiprobables— es menor. Tambi´n la cantidad de informaci´n es proporcional a la probabilidad de un suceso. En e o el caso de las bolas tenemos dos sucesos: sacar bola negra, que es m´s probable, y sacar a bola blanca, que es menos probable. Sacar una bola negra aumenta nuesto grado de certeza inicial de un 90% a un 100%, proporcion´ndonos una ganancia del 10%. Sacar una bola blanca a aumenta esa misma certeza en un 90% (puesto que partimos de un 10%). Podemos considerar la disminuci´n de incertidumbre proporcional al aumento de certeza, por lo cual diremos que o el primer suceso (sacar bola negra) aporta menos informaci´n. o A partir de ahora, con objeto de simplificar la notaci´n, 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 n´mero 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 informaci´n, 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 informaci´n, como ya a o hemos visto. Este concepto de informaci´n es cuantificable y se puede definir de la siguiente o forma: Ii = − log2 (P (xi )) (3.1)

siendo P (xi ) la probabilidad del estado xi . Obs´rvese que si la probabilidad de un estado e fuera 1 (m´xima), la cantidad de informaci´n que nos aporta ser´ igual a 0, mientras que a o ıa si su probabilidad se acercara a 0, tender´ a +∞ —esto es l´gico, un suceso que no puede ıa o suceder nos aportar´ una cantidad infinita de informaci´n si llegara a ocurrir—. ıa o

3.2

Entrop´ ıa

Efectuando una suma ponderada de las cantidades de informaci´n 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 ∀i = j Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . xn+1 ) si P (xn+1 ) = 0 41 Como ejercicio vamos a demostrar la propiedad (i). . . qn no negativos tales que u n n pi = i=1 i=1 qi se verifica que n n − i=1 pi log2 (pi ) ≤ − i=1 1 N. xn . 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 Obs´rvese que la entrop´ es proporcional a la longitud media de los mensajes que se necee ıa sitar´ para codificar una serie de valores de V de manera ´ptima dado un alfabeto cualquiera. Volveremos sobre este punto un poco m´s adelante. pn y q1 . y podremos codificarlo empleando un mensaje m´s corto. H(x1 . Para ello emplearemos el Lema de Gibbs. . puesto que sabemos de antemano que V va a tomar el valor u xi . . .3.5)) = 1 Este suceso aporta exactamente una unidad de informaci´n. . ya que el valor que m´s nos va a aparecer en una a secuencia de sucesos es precisamente xi . nos sale: a H(M ) = −(0. x2 . pi log2 (qi ) (3.6) + 0. x2 . 40% para cruz).4)) = 0.4 log2 (0. ıa o Esto quiere decir que cuanto m´s probable sea un valor individual. . a Veamos unos cuantos ejemplos m´s: a • La entrop´ de la variable aleatoria asociada a lanzar una moneda al aire es la siguiente: ıa H(M ) = −(0.3) Entonces. mientras que si P (xi ) = 0. aportar´ menos informaa a ci´n cuando aparezca.9 parece m´s l´gico emplear mensajes cortos para representar a o el suceso xi y largos para los xj restantes.970 Manuel J. o • Si la moneda est´ trucada (60% de probabilidades para cara.5 log2 (0.6 log2 (0.5) + 0. que dice que dados dos sistemas de n´meros p1 . xn ) = H(x1 .2. Entrop´ ıa iii. Si P (xi ) = 1 o a no necesitar´ ıamos ning´n mensaje.5 log2 (0. . .

as´ que necesitaremos m´s.9 log2 (0. Lo unico que podemos decir es que no existe ninguna codificaci´n que emplee longitudes ´ o promedio de mensaje inferiores al n´mero que acabamos de calcular. Teor´ de la Informaci´n ıa o • Veamos el ejemplo de las bolas (nueve negras y una blanca): H(M ) = −(0. 101 para 5 . tea niendo n posibles casos para X y m para Y : Manuel J.42 3. que normalmente no se puede alcano zar. 3. pero ¿cu´ntos m´s? Si usamos cuatro bits para ı a a a representar todos los d´ ıgitos tal vez nos estemos pasando. El u e ıan denominado M´todo de Huffman.3 Entrop´ Condicionada ıa Supongamos que tenemos ahora una variable aleatoria bidimensional (X.1100 para o 6. Esta es precisamente la raz´n por la o que empleamos logaritmos base 2. 010 para 2. 011 para 3. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . ya que ´stos alargar´ la longitud media de los mensajes. Podemos decir que la entrop´ de una variable aleatoria es el n´mero medio de bits que ıa u necesitaremos para codificar cada uno de los estados de la variable. y la denominaremos bit.9) + 0. ser´ nuestra unidad a a la hora de medir esta magnitud.1 log2 (0. Imaginemos ahora que queremos representar los diez d´ ıgitos decimales usando secuencias de bits: con tres bits no tenemos suficiente. por lo que no necesitaremos s´ u o u ımbolos que act´en de separadores. permite e a o obtener codificaciones binarias que se aproximan bastante al ´ptimo te´rico de una forma o o sencilla y eficiente. 001 para 1. Recordemos las distribuciones de probabilidad m´s usuales que podemos definir sobre dicha variable. N´tese que este esquema permite codificar una secuencia de o n´meros por simple yuxtaposici´n. .32bits El valor que acabamos de calcular es el l´ ımite te´rico. Y ). suponiendo que expresemos cada suceso empleando un mensaje escrito en un alfabeto binario. . Veamos la siguiente cou dificaci´n: 000 para 0. como media o 3·6+4·4 = 3. Veamos cu´nta entrop´ tienen a ıa diez sucesos equiprobables: 10 H=− i=1 1 log2 10 1 10 = − log2 1 10 = 3.4bits 10 para representar cada mensaje. para que la cantidad de informaci´n del suceso m´s simple o a sea igual a la unidad. 100 para 4. 1101 para 7. Con esta codificaci´n empleamos. uno de los m´s utilizados en transmisi´n de datos. que consta unicamente de dos o a ´ posibilidades equiprobables —como el caso de la moneda sin trucar—.1)) = 0. sin ambig¨edades. y 1111 para 9.468 La cantidad de informaci´n asociada al suceso m´s simple. 1110 para 8.

yj ) log2 (P (xi .3. an´logamente se define la Ley de Enı a trop´ Totales: ıas H(X. Entrop´ Condicionada ıa 1. Distribuciones condicionales de X sobre Y y viceversa: P (xi /yj ) = P (xi .3. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Manuel J. yj )) H(X/Y = yj ) = − i=1 P (xi /yj ) log2 (P (xi /yj )) Haciendo la suma ponderada de los H(X/Y = yj ) obtemos la expresi´n 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 . alcanz´ndose la igualdad si y s´lo si las variables ıa a o X e Y son independientes. Y ) = − i=1 j=1 n P (xi . Y ) = H(X) + H(Y /X) cumpli´ndose adem´s. yj ) P (yj ) P (yj /xi ) = P (xi . yj ) P (yj ) = i=1 P (xi . si X e Y son variables independientes: e a H(X. Distribuciones marginales de X e Y : m n 43 P (xi ) = j=1 P (xi . yj ) 2. Y ): o P (xi . Y ) = H(X) + H(Y ) (3. yj ) log2 (P (xi /yj )) i=1 j=1 = − (3. yj ) 3. Distribuci´n conjunta de (X. yj ) P (xi ) Definiremos la entrop´ de las distribuciones que acabamos de referir: ıa n m H(X.6) (3.4) As´ como existe una Ley de la Probabilidad Total.5) Teorema de Disminuci´n 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.

5 Criptosistema Seguro de Shannon Diremos que un criptosistema es seguro si la cantidad de informaci´n que nos aporta el o hecho de conocer el mensaje cifrado c sobre la entrop´ del texto claro m vale cero.8) Esto significa sencillamente que la distribuci´n de probabilidad que nos inducen todos los o posibles mensajes en claro —el conjunto M — no cambia si conocemos el mensaje cifrado. Por ello los criptosistemas a que cumplen la condici´n de Shannon se denominan tambi´n criptosistemas ideales.7) Esto quiere decir que la cantidad de informaci´n que nos aporta el hecho de conocer X al o medir la incertidumbre sobre Y es igual a la disminuci´n de entrop´ que este conocimiento o ıa conlleva. Teor´ de la Informaci´n ıa o Este teorema representa una idea intuitiva bien clara: conocer algo acerca de la variable Y puede que nos ayude a saber m´s sobre X —lo cual se deber´ traducir en una reducci´n a ıa o de su entrop´ ıa—. Para entenderlo mejor supongamos que s´ se modifica dicha distribuci´n: El hecho de conocer ı o un mensaje cifrado. I(X. ni siquiera empleando una m´quina con capacidad de proceso infinita. I(X. pues.4 Cantidad de Informaci´n entre dos Variables o Shannon propuso una medida para la cantidad de informaci´n que aporta sobre una vao riable el conocimiento de otra. Si por el contrario el sistema cumpliera la condici´n 3. la cantidad de informaci´n de Shannon que a o la variable X contiene sobre Y como: I(X. y por consiguiente unas claves de cifrado m´s probables que otras. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . M ) = 0 (3. la cardinalidad del espacio de claves ha de ser al menos igual que la del espacio de Manuel J.44 3. Sus propiedades son las siguientes: i. a a Repitiendo esta operaci´n muchas veces con mensajes diferentes. X) ii. Es decir: ıa I(C. cifrados con la misma clave. jam´s podr´ o a ıamos romperlo. u a 3. permiti´ndonos romper el a a e criptosistema. Y ) = I(Y. al variar la distribuci´n de probabilidad sobre M har´ unos mensajes o ıa m´s probables que otros. Se definir´. o e Se puede demostrar tambi´n que para que un sistema sea criptoseguro seg´n el criterio de e u Shannon. o podr´ ıamos ir modificando la distribuci´n de probabilidad sobre la clave empleada hasta obo tener un valor de clave mucho m´s probable que todos los dem´s. Y ) ≥ 0 3. pero en ning´n caso podr´ hacer que aumente nuestra incertidumbre.8. Y ) = H(Y ) − H(Y /X) (3.

Esto ocurre porque casi todos los s´ ımbolos de un mensaje en lenguaje natural contienen informaci´n que se puede extraer de los s´ o ımbolos de alrededor —informaci´n que.4 bits/letra para valores peque˜os de k.9) rk = k siendo Hk (M ) la entrop´ de todos los posibles mensajes de longitud k. o en la pr´ctica. rk suele valer alrededor de n 1. 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 operaci´n or-exclusivo u otra similar para obtener el criptograma. normalmente puede reconstruirlo. n ´ • Indice absoluto de un lenguaje. que la clave ha de ser al menos tan larga como el mensaje que queramos cifrar. podr´ ıamos codificar 4. Puesto que tenemos mecanismos para definir la cantidad de informaci´n que presenta un suceso.7 bits/letra aproximadamente.6 Redundancia Si una persona lee un mensaje en el que faltan algunas letras.3.6. luego parece que el nivel de redundancia de los lenguajes naturales es alto. Para ello vamos a dar una serie de definiciones: ´ • Indice de un lenguaje. podemos intentar medir el exceso de informaci´n (redundancia) o o de un lenguaje. Para idiomas como el Espa˜ol. o 3. porque si la clave u a es tanto o m´s larga que el mensaje. o en otras palabras. y usar cada car´cter de la clave para cifrar exactamente a una letra del mensaje. Redundancia 45 mensajes. Estamos miıa diendo el n´mero de bits de informaci´n que nos aporta cada car´cter en mensajes de u o a una longitud determinada. Manuel J. Definiremos el ´ ındice de un lenguaje para mensajes de longitud k como: Hk (M ) (3. En otras palabras. En el caso del espa˜ol. haciendo la suma m´dulo 26. se est´ enviando dos o m´s veces—. puesto que tenemos 27 s´ n ımbolos. que consist´ en emplear como clave de codificaci´n una secuencia de letras ıa o tan larga como el mensaje original. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . porque el lenguaje a a a natural es redundante. Suponiendo m s´ ımbolos diferentes en nuestro alfabeto este ´ ındice vale: log2 (mk ) k log2 (m) R= = = log2 (m) k k N´tese que el ´ o ındice R es independiente de la longitud k de los mensajes. Es el m´ximo n´mero de bits de informaci´n que pueden a u o ser codificados en cada car´cter. a la hora de protegerla nos encontraremos con el mismo a problema que ten´ ıamos para proteger el mensaje. asumiendo que todas las combinaciones de caracteres a son igualmente probables. Un ejemplo cl´sico de criptosistema seguro es el algoritmo inventado por Mauborgne y a Vernam en 1917. Esto vuelve in´tiles a estos criptosistemas en la pr´ctica.

consiste en comprimir los mensajes antes de codificarlos.9 deber´ u o ıa calcularse en realidad como: r∞ = lim Hn (M ) n (3. tal que ´ste proporcione la mayor redundancia posible. 3. por lo que la expresi´n 3. En este sentido se trata de codificar exactamente u o la misma informaci´n que transporta el archivo original. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . El n´mero de claves suele ser tan u elevado que resulta imposible una inspecci´n visual. relaıa o cionadas directamente con la redundancia: • Compresi´n de datos: simplemente trata de eliminar la redundancia dentro de un archivo. y codific´ndolo con m´s o menos a a bits seg´n su frecuencia de aparici´n. o considerando cada byte como un mensaje elemental. Esta caracter´ ıstica es aprovechada para efectuar ataques por la fuerza bruta. ya que ha de asignarse una probabilidad a cada clave individual en funci´n de las caracter´ o ısticas del mensaje obtenido al decodificar el criptograma con dicha clave.7 Desinformaci´n y Distancia de Unicidad o Definiremos desinformaci´n de un sistema criptogr´fico como la entrop´ condicionada del o a ıa conjunto M de posibles mensajes sobre el conjunto C de posibles criptogramas: Manuel J. a n • C´digos de Redundancia C´ o ıclica (CRC): permiten introducir un campo de longitud m´ ınima en el mensaje. mensaje original resultase alterado. De esa manera eliminamos la redundancia y hacemos m´s dif´ a un atacante apoyarse en las caracter´ a ıcil ısticas del mensaje original para recuperar la clave. As´ si el e ı. hemos de tener e en cuenta secuencias de cualquier n´mero de caracteres. pero empleando un n´mero de o u bits lo m´s peque˜o posible.46 3.10) n→∞ Hay principalmente dos aplicaciones fundamentales de la Teor´ de la Informaci´n. la redundancia de un lenguaje se define como la diferencia entre las dos magnitudes anteriores: D =R−r Tambi´n se define el ´ e ındice de redundancia como el siguiente cociente: I= D R Desgraciadamente. es posible dar de forma o autom´tica una estimaci´n de si una cadena de s´ a o ımbolos corresponde o no a dicho lenguaje. para medir la aut´ntica redundancia de un lenguaje. y que suele emplearse con frecuencia. N´tese que. Teor´ de la Informaci´n ıa o • Finalmente. Una estrategia bastante interesante para o protegerse contra este tipo de ataques. la probabilidad de que el CRC a˜adido siga siendo n correcto es m´ ınima. conocidos los patrones de redundancia de un lenguaje.

a a a 3. Nuestro objetivo a la hora de dise˜ar n un sistema criptogr´fico ser´ que la distancia de unicidad sea lo m´s grande posible. lo cual quiere decir ıa o que nuestro criptosistema es inseguro. Si esa incertidumbre fuera la misma que desconociendo c —en cuyo caso se cumplir´ que H(M ) = H(M/C)—. las dos t´cnicas b´sicas para ocultar la redundancia en un u ıa e a texto claro son la confusi´n y la difusi´n. Diluye la redundancia del texto claro reparti´ndola a lo largo de todo el texto o e cifrado. puesto que si no existiera o jam´s podr´ a ıamos descifrar los mensajes.12) Definiremos finalmente la distancia de unicidad de un criptosistema como la longitud m´ ınima de mensaje cifrado que aproxima el valor H(K/C) a cero. Esta magnitud se puede medir tambi´n en funci´n del conjunto K de claves. que consiste en cambiar cada ocurrencia de un s´ o ımbolo en el texto claro por otro. a pesar de su antig¨edad. La sustituci´n puede ser tan simple o tan compleja como queramos. y por lo tanto estar´ ıamos frente a un criptosistema seguro de Shannon. ıa • Confusi´n. Trata de ocultar la relaci´n entre el texto claro y el texto cifrado. signin ficar´ que el hecho de conocer c nos aporta mucha informaci´n sobre m. Recordemos o o que esa relaci´n existe y se da a partir de la clave k empleada. poseen o o u una importancia clave en Criptograf´ moderna. Confusi´n y Difusi´n o o 47 H(M/C) = − m∈M c∈C P (c)P (m/c)log2 (P (m/c)) (3. Adicionalmente. por lo que H(M/C) < H(M ). Manuel J. si el valor de H(M/C) fuera muy peque˜o con respecto a H(M ). Los criptosistemas seguros de Shannon tienen distancia de unicidad infinita.8 Confusi´n y Difusi´n o o Seg´n la Teor´ de Shannon. El peor de los casos ser´ que H(M/C) = 0. El mecanismo m´s elemental para llevar a cabo una difusi´n es la transposici´n. puesto que ıa entonces. nos encontrar´ ıa ıamos con que C y M son variables estad´ ısticamente independientes. es la cantidad de texto cifrado que necesitamos para poder descubrir la clave. Lo habitual no obstante es que exista relaci´n estad´ o ıstica entre C y M (a trav´s e del espacio de claves K).8. y entonces e o nos dir´ la incertidumbre que nos queda sobre k conocida c: a H(K/C) = − k∈K c∈C P (c)P (k/c)log2 (P (k/c)) (3. Estos conceptos. ya que jam´s podr´ a ıamos disminuir nuestra incertidumbre acerca de m.3. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .11) Esta expresi´n nos permite saber la incertidumbre que nos queda sobre cu´l ha sido mensaje o a enviado m si conocemos su criptograma asociado c. En otras palabras. conociendo el valor de c tendr´ ıamos albsoluta certeza sobre el valor de m. El mecanismo m´s simple de confusi´n es la a o sustituci´n. a o o que consiste en cambiar de sitio elementos individuales del texto claro. o • Difusi´n.

Calcule su entrop´ ıa. Manuel J.48 3. o ¿Cu´l es la cantidad de informaci´n que nos aporta la variable aleatoria lluvia sobre la a o variable ganar un partido? 6. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Teor´ de la Informaci´n ıa o 3. La probabilidad de que llueva en un partido es del 15%. el primero con probabilidad 50%. pero que u cuando llueve s´lo gana el 35%. Suponga que un equipo de f´tbol gana por regla general el 65% de sus partidos. Calcule la informaci´n que proporciona el hecho de que en un dado no cargado salga un o n´mero par. x > 0 =⇒ log2 (x) ≤ x − 1 4. y el resto con probabilidad 5%. Suponga un conjunto de 20 mensajes equiprobables.9 Ejercicios Propuestos 1. Demuestre el Lema de Gibbs. Calcule la entrop´ que tiene un dado que presenta doble probabilidad para el n´mero ıa u tres que para el resto. ıas 5. teniendo en cuenta la siguiente propiedad: ∀x. Demuestre la Ley de Entrop´ Totales. o 7. 3. Considere un conjunto de 11 mensajes. ¿Cu´l ser´ la longitud media de a a cada mensaje para una transmisi´n ´ptima? Escriba un c´digo binario que aproxime su o o o longitud media de mensaje a ese valor ´ptimo. u 2.

capaz e o de leer. En este cap´ a ıtulo efectuaremos un breve repaso de las herramientas formales que nos van a permitir dar respuesta a estos interrogantes. Pero. Definiremos algoritmo como una secuencia finita y ordenada de instrucciones elementales que. estamos expresando. ¿bajo qu´ circunstancias podemos consie e derar que un problema es intratable? Evidentemente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . una unidad capaz de hacer operaciones aritm´ticas y l´gicas. velocidad o incluso n´mero de microprocesadores —capaces de a u Manuel J. las computadoras actuales poseen una memoria. unos dispositivos de entrada y salida que les permiten comunicarse con el exterior. queremos que nuestro fisg´n se enfrente o a unos requerimientos de computaci´n que no pueda asumir. e o ´ que se conoce por microprocesador o CPU. las unidades aritm´tico–l´gica y de control se suelen encapsular en un unico circuito integrado. pretendemos plantear a un posible atacante n a un problema que ´ste sea incapaz de resolver.Cap´ ıtulo 4 Introducci´n a la Complejidad o Algor´ ıtmica Cuando dise˜amos un algoritmo criptogr´fico. 4. dados los valores de entrada de un problema. de un modo n m´s o menos formal. interpretar y ejecutar un programa o secuencia de instrucciones. y las computadoras convencionales est´n dise˜adas para ejecutar algorita a n mos. que les sirve para almacenar datos. y una unidad de control. Habitualmente. La cuesti´n es c´mo modelizar y o o o cuantificar la capacidad de c´lculo necesaria para abordar un problema. en alg´n momento finaliza y devuelve la u soluci´n. Habr´ computadoras a con m´s o menos memoria.1 Concepto de Algoritmo En la actualidad. Cuando nosotros dise˜amos un algoritmo de cifrado. o En efecto. pr´cticamente todas las aplicaciones criptogr´ficas emplean computadoa a ras en sus c´lculos. la estructura que ha de tener la secuencia de instrucciones concreta que a permita implementar dicho algoritmo en cada computadora particular.

En este sentido la Teor´ de Algoritmos tambi´n o o ıa e proporciona herramientas formales que nos van a permitir decidir qu´ algoritmo es mejor en e cada caso. que dice que si dos implementaciones ıa del mismo algoritmo consumen t1 (n) y t2 (n) segundos respectivamente. sobre todo cuando se trata de computadoras con muchos microprocesadores. La Teor´ de Algoritmos es una ciencia que estudia c´mo construir algoritmos para resolver ıa o diferentes problemas. 2. • Peor caso: Es el n´mero de operaciones necesario para la distribuci´n m´s pesimista de u o a los datos de entrada. a u Cabr´ plantearnos ahora la siguiente cuesti´n: si un mismo algoritmo puede resultar m´s ıa o a r´pido en una computadora que en otra. ser´ siempre un buen a algoritmo. siendo n el tama˜o de n los datos de entrada. 6. puede cifrar y descifrar la informaci´n de forma r´pida y c´moda. se necesitan menos operaciones elementales para ordenar de menor a mayor la secuencia {1. • Caso promedio: Muchas veces. Eso nos permite centrarnos por completo en el algoritmo en s´ y olvidarnos de la implementaci´n concreta a la hora de ı o hacer nuestro estudio. 1. Nos permitir´ obtener una cota superior del tiempo de ejecuci´n a o necesario. afortunadamente. Existe un principio fundamental en Teor´ de Algoritmos. En muchas ocasiones. 5. 3. puesto que un algoritmo puede tener un mejor caso muy bueno y comportarse a muy mal en el resto. Un algoritmo que se comporte bien en el peor caso. En muchas ocasiones no basta con encontrar una forma de solucionar el problema: la soluci´n ha de ser ´ptima. La Criptograf´ depende en gran medida de la Teor´ de Algoritmos. 5} que {6. pero en esencia todas obedecer´n al concepto a de algoritmo. que posee la clave. ¿podr´ existir una computadora capaz de ejecutar a ıa de forma eficiente algoritmos que sabemos que no lo son?. En otras palabras. Eso nos llevar´ a a distinguir entre tres alternativas: • Mejor caso: Es el n´mero de operaciones necesario cuando los datos se encuentran distriu buidos de la mejor forma posible para el algoritmo. el tiempo de ejecuci´n de un algoritmo viene dado por las entradas o concretas que le introduzcamos. pero en la mayor´ de los casos que se presentan habitualmente tienen un comportamiento ıa En algunos casos. 3. hay algoritmos que en el peor caso no funcionan bien. independientemente de las caracter´ ısticas particulares1 de la computadora concreta en la que queramos implantarlo.50 4. 2. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . llamado principio de invarianza. 4. entonces existe una constante positiva c tal que t1 (n) ≤ c · t2 (n). se estudian algoritmos espec´ ıficos para aprovechar las peculiaridades de la m´quina sobre la que se van a implantar. que aunque podamos encontrar una computadora m´s r´pida. mientras que por otro hemos de garantizar que un o a o atacante no dispondr´ de ning´n algoritmo eficiente capaz de comprometer el sistema. a 1 Manuel J. 4}. siempre que n sea lo suficientemente grande. Por ejemplo. la evoluci´n del tiempo de ejecuci´n a a o o o del algoritmo en funci´n del tama˜o del problema permanecer´ constante. o una implementaci´n mejor. Evidentemente este caso no es muy pr´ctico. ya que por un lado ıa ıa hemos de asegurar que el usuario leg´ ıtimo. Introducci´n a la Complejidad Algor´ o ıtmica ejecutar varios programas al mismo tiempo—. por lo tanto la o n a respuesta a la pregunta anterior es. negativa.

Para algunas funciones de uso com´n. entonces (f · g)(n) = O(h(n)l(n)). e incluso algunas veces simplemente resulta imposible.2 Complejidad Algor´ ıtmica En la mayor´ de los casos carece de inter´s calcular el tiempo de ejecuci´n concreto de un ıa e o algoritmo en una computadora. • L´ ımite inferior asint´tico: f (n) = Ω(g(n)) si existe una constante positiva c y un n´mero o u entero positivo n0 tales que 0 ≤ cg(n) ≤ f (n) ∀n ≥ n0 . f) Si f (n) = O(g(n)) ∧ g(n) = O(h(n)). entonces f (n) = O(h(n)). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . u • Notaci´n o: f (n) = o(g(n)) si para cualquier constante positiva c existe un n´mero o u entero positivo n0 > 0 tal que 0 ≤ f (n) ≤ cg(n) ∀n ≥ n0 . An´logamente f (n) = Ω(g(n)) quiere decir que a f (n) crece asint´ticamente al menos tan r´pido como g(n) multiplicada por una constante. En su lugar emplearemos una notaci´n de tipo asint´tico. 4.2. que nos permitir´ acotar dicha magnitud. pero se diferencian considerablemente u en el caso promedio. • L´ ımite exacto asint´tico: f (n) = Θ(g(n)) si existen dos constantes positivas c1 . algunos algoritmos t´ ıpicos de ordenaci´n necesitan o el mismo n´mero de operaciones en el peor caso. entonces (f + g)(n) = O(h(n)). haremos las siguientes definiciones: o • L´ ımite superior asint´tico: f (n) = O(g(n)) si existe una constante positiva c y un n´mero o u entero positivo n0 tales que 0 ≤ f (n) ≤ cg(n) ∀n ≥ n0 . d) Si f (n) = O(h(n)) ∧ g(n) = O(l(n)). podemos definir directamente su orden de compleu jidad: Manuel J. f (n) = O(g(n)) significa que f (n) crece asint´ticamente no m´s r´pido o a a que g(n) multiplicada por una constante. b) f (n) = Θ(g(n)) ⇐⇒ f (n) = O(g(n)) ∧ f (n) = Ω(g(n)). o a Definiremos ahora algunas propiedades sobre la notaci´n que acabamos de introducir: o a) f (n) = O(g(n)) ⇐⇒ g(n) = Ω(f (n)). c) Si f (n) = O(h(n)) ∧ g(n) = O(h(n)). Por lo tanto f debe estar definida para los n´meros naturales y n u devolver valores en R+ . o o a Normalmente consideraremos el tiempo de ejecuci´n del algoritmo como una funci´n f (n) o o del tama˜o n de la entrada.4. Dada la funci´n f (n). c2 y un o n´mero entero positivo n0 tales que c1 g(n) ≤ f (n) ≤ c2 g(n) ∀n ≥ n0 . e) f (n) = O(f (n)). Intuitivamente. De hecho. Complejidad Algor´ ıtmica 51 razonablemente eficiente.

ambos menores o iguales que n. Seg´n o este criterio. a o u En general. entonces f (n) = Θ(nk ). Podemos considerar una operaci´n elemental como aquella que se ejecuta o siempre en tiempo constante.1 Operaciones Elementales Hasta ahora hemos empleado el t´rmino operaciones elementales sin especificar su sige nificado concreto. Por ejemplo. Dicho factor no afectar´ al orden de complejidad obtenido. pues. en este caso. en una computadora que pueda operar unicamente con n´meros de 16 bits. ´ u no podr´ considerarse elemental una operaci´n con n´meros de 32 bits. las operaciones aritm´ticas. 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)) • Multiplicaci´n (a · b): O(log2 (a) · log2 (b)) = O((log2 (n))2 ) o • Divisi´n (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. Sean a y b dos n´meros enteros ´ u positivos. habr´ operaciones que podr´n considerarse elementales a a o no. pero su orden es Θ(n3 ). y se consideran en n principio elementales unicamente las operaciones a nivel de bit. 4. el tama˜o de la entrada a un algoritmo se mide en bits. aproximadamente log2 (n) bits n u para representarlos —n´tese que. log2 (n) es el tama˜o de la entrada—.2. • Factoriales: n! = Ω(2n ). por lo que a podemos considerar que estas operaciones se efect´an en grupos de bits de tama˜o arbitrario. de forma asint´tica. es decir. logc (n) = Θ(ln(n)). • Funciones logar´ ıtmicas: Para cualquier constante c > 0. y su coeficiente de mayor grado es positivo. en consecuencia. • Logaritmo de un factorial: ln(n!) = Θ(n ln(n)). llevadas a cabo mediante los algoritmos tradicionales. ser´ menos a a a a eficiente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Podemos decir que ese algoritmo tiene un orden de ejecuci´n Θ(n2 ). Introducci´n a la Complejidad Algor´ o ıtmica • Funciones polinomiales: Si f (n) es un polinomio de grado k. u n Manuel J. Otro algoritmo que necesite g(n) = n n3 +1 operaciones efectuar´ menos c´lculos para una entrada peque˜a.52 4. Evidentemente. a a n por lo que crecer´ mucho m´s r´pidamente que el anterior y. Veamos un ejemplo: supongamos que tenemos un algoritmo que necesita llevar a cabo f (n) = 20n2 + 10n + 1000 operaciones elementales. o o o proporcionalmente al cuadrado del tama˜o de la entrada. que el tiempo de ejecuci´n crece. Necesitaremos. por lo que la capacidad de realizar en tiempo constante operaciones aritm´ticas con n´meros e u de m´s bits unicamente introducir´ factor de proporcionalidad —recu´rdese que loga (x) = a ´ a e logb (x) · loga (b)—. en funci´n de las caracter´ o ısticas concretas de la computadora que estemos manejando.

Un algoritmo se denomina subexponencial si en el peor de los casos. la funci´n de ejecuci´n o o o(n) . cualquier algoritn mo que no pueda ser acotado por una funci´n polinomial.4. Sin embargo. • La clase de complejidad NP es el conjunto de todos los problemas para los cuales una respuesta afirmativa puede ser verificada en tiempo polinomial. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . a´n no se sabe si P = NP. puede verificarse a e ´ la respuesta afirmativa en tiempo polinomial. sino que. no quiere decir necesariamente que el o certificado correspondiente sea f´cil de obtener.4 Clases de Complejidad Para simplificar la notaci´n. usando un certificado apropiado. asint´ticamente.3 Algoritmos Polinomiales. ı • La clase de complejidad P es el conjunto de todos los problemas de decisi´n que pueden o ser resueltos en tiempo polinomial. a 4. una computadora que realice operaciones con n´meros de 32 bits deber´ u ıa tardar la mitad en ejecutar el mismo algoritmo que otra que s´lo pueda operar con n´meros o u de 16 bits pero. a 4.3. dado ´ste ultimo. este punto no ha podido ser demostrado matem´ticamente. Adicionalmente. En o general. Son asint´ticamente m´s r´pidos que es de la forma e n o a a los exponenciales puros. N´tese que el hecho de que un problema sea NP. Algoritmos Polinomiales. o si P = NP ∩ co–NP. Si bien muchos expertos consideran que ninguna de estas tres igualdades se cumple. Una observaci´n an´loga puede llevarse a cabo o a sobre los problemas co–NP. se conoce como exponencial. o • La clase de complejidad co–NP es el conjunto de todos los problemas para los cuales una respuesta negativa puede ser verificada en tiempo polinomial. Sabemos que P ⊆ NP y que P ⊆ co-NP. empleando alguna informaci´n extra. Exponenciales y Subexponenciales 53 En otras palabras. a Manuel J. si u NP = co–NP. mientras que los exponenciales se consideran ineficientes. el crecimiento del tiempo de ejecuci´n en funci´n del tama˜o o o o n de la entrada ser´ el mismo para ambas. o donde n es el tama˜o de la entrada y k es una constante. pero m´s lentos que los polinomiales. de forma que se considera un algoritmo o como un mecanismo que permite obtener una respuesta s´ o no a un problema concreto. Exponenciales y Subexponenciales Diremos que un algoritmo es polinomial si su peor caso de ejecuci´n es de orden O(nk ). denominada certificado. los algoritmos polinomiales se consideran eficientes. en muchas ocasiones se suele reducir el problema de la como plejidad algor´ ıtmica a un simple problema de decisi´n. donde n es el tama˜ o de la entrada.

. se puede verificar f´cilmente que la respuesta al problema es afirmativa. Estos problemas tienen la peculiaridad de que todos ellos son equivalentes.5 Algoritmos Probabil´ ısticos Hasta ahora hemos estudiado la complejidad de algoritmos de tipo determin´ ıstico. El problema de determinar si existe un subconjunto de A cuyos elementos sumen s es un problema NP–completo. o Dentro de la clase NP. es decir. .54 4. se pueden reducir unos en otros. que siempre siguen el mismo camino de ejecuci´n y que siempre llegan —si lo hacen— a la misma o soluci´n. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . tambi´n llamados probabil´ e ısticos o aleatorizados. lo cual hace que dos ejecuciones u a diferentes con los mismos datos de entrada no tengan por qu´ ser id´nticas. N´tese que dado un subconjunto de A. Finalmente. Sea A = {a1 . an } un conjunto de n´meros enteros positivos. o Manuel J. apuntaremos que existe una clase de problemas. Introducci´n a la Complejidad Algor´ o ıtmica NPC NP NP co−NP co−NP P Figura 4. . existe un subconjuto de problemas que se llaman NP–completos. a2 . a En la figura 4. y si logr´ramos resolver alguno de a ellos en tiempo polinomial. Sin embargo. y que dado un subconjunto de A que sume s —que desempe˜ar´ el papel n ıa de certificado—. y s otro n´mero entero u u positivo. los habr´ ıamos resuelto todos. 4.1 puede observarse gr´ficamente la relaci´n existente entre las distintas clases a o de complejidad que acabamos de definir. y que o o contiene la versi´n computacional del problema definido anteriormente. no s´lo sobre los de decisi´n—. NP. Este tipo de algoritmos maneja alg´n tipo de par´metro aleatorio. y. todos los problemas de esta clase pueden ser reducidos a una instancia de este.1: Relaci´n entre las clases de complejidad P. ıcil lo cual hace a la clase NPC la de los problemas m´s dif´ a ıciles de resolver computacionalmente. En algunos casos. que consistir´ en o ıa encontrar el subconjunto de A cuyos elementos suman s. co–NP y NPC. y cuya clase se nota como NPC. como ya se ha dicho. Tambi´n se puede decir que cualquier e problema NP–completo es al menos tan dif´ de resolver como cualquier otro problema NP. los denominados NP–duros —esta clase se define sobre los problemas en general.7). existen problemas para los cuales puede ser m´s interesante emplear o a algoritmos de tipo no determin´ ıstico. es muy f´cil o a verificar si suma s. e e m´todos de este tipo permiten obtener soluciones en una cantidad de tiempo considerablemente e inferior a los determin´ ısticos (ver secci´n 5.

6.4. o o y sea I una instancia arbitraria de L. Las clases de complejidad probabil´ ıstica son las siguientes: • Clase ZPP: conjunto de todos los problemas de decisi´n para los cuales existe un algoo ritmo de tipo error nulo que se ejecuta en un tiempo esperado de ejecuci´n polinomial. Conclusiones 55 Podemos clasificar los algoritmos no determin´ ısticos seg´n la probabilidad con la que deu vuelvan la soluci´n correcta. ıa Manuel J. ya que en principio escapan al prop´sito de este libro. y hemos dejado a un lado deliberadamente aquellos o problemas para los cuales no existen algoritmos cuya finalizaci´n est´ garantizada (problemas o e no–decidibles y semidecicibles). • A es de tipo error nulo si P 1 = 1 y P 2 = 0. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . al menos a con la tecnolog´ actual. Finalmente. 4. en funci´n e o del tipo de algoritmos que permiten resolverlos. es totalmente inabordable incluso para la m´s potente de las computadoras. y P2 ≤ 1 2 − Definiremos tambi´n el tiempo esperado de ejecuci´n de un algoritmo aleatorizado como e o el l´ ımite superior del tiempo de ejecuci´n esperado para cada entrada.6 Conclusiones En este cap´ ıtulo hemos contemplado unicamente aquellos problemas para los que exis´ te una soluci´n algor´ o ıtmica —el programa finaliza siempre. Sea P 1 la probabilidad de que A devuelva cierto cuando I es cierto. Se ha puesto de manifiesto as´ ımismo que un algoritmo ineficiente. y se ha descrito una notaci´n general para o expresar de forma precisa la complejidad de un algoritmo concreto. Sea A un algoritmo aleatorizado para el problema de decisi´n L. aunque necesite un n´mero asu tron´mico de operaciones elementales—. El tiempo de ejecuci´n 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. expresado en funci´n o o del tama˜o de la entrada. diremos que P ⊆ ZPP ⊆ RP ⊆ BPP y RP ⊆ NP. • A es de tipo error simple si P 1 ≥ c. o • Clase RP: conjunto de los problemas de decisi´n 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 decisi´n para los cuales existe un algoritmo o de tipo error doble que se ejecuta en el peor caso en tiempo polinomial. cuando el tama˜o de la entrada es lo suficientemente n grande. o Se han repasado las clases gen´ricas de problemas que se pueden afrontar. y P 2 la probabilidad de que A devuelva cierto cuando I es falso. siendo c una constante positiva. y P 2 = 0 • A es de tipo error doble si P 1 ≥ 1 2 + .

e discretos (ver secci´n 5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . por ejemplo. De hecho.56 4. la continua reducci´n del tiempo de ejecuci´n necesario ıan o o para resolver ciertos problemas. a Manuel J. algunos de los algoritmos asim´tricos m´s populares en la actualio e a dad dejar´ de ser seguros. propiciada por la aparici´n de algoritmos m´s eficientes. y por eso es tan importante la Teor´ de Algoritmos para la Criptoe ıa graf´ Si. Introducci´n a la Complejidad Algor´ o ıtmica El hecho de que no se conozca un algoritmo eficiente para resolver un problema no quiere decir que ´ste no exista.4). juno a to con el avance de las prestaciones del hardware disponible. se lograra descubrir un m´todo eficiente capaz de resolver logaritmos ıa. obliga con relativa frecuencia a actualizar las previsiones sobre la seguridad de muchos sistemas criptogr´ficos.

n´meros congruentes con n−1). b. -11. a u decimos que a es congruente con b m´dulo n. 29. n´meros congruentes con 1. es decir. manıa. en nuestro ejemplo (m´dulo 8) tendremos el conjunto de clases o Manuel J. . para alg´n k ∈ Z u Por ejemplo. n ∈ N.1 Aritm´tica Modular. De esta forma. decimos que son las 19:14:00. los segundos —al igual que los minutos—. y no las 19:13:60. 37 ≡ 5 (mod 8). -19. tendremos n clases de equivalencia m´dulo n (n´meros o u congruentes con 0. representaremos cada clase de equivalencia por un n´mero comprendido entre u 0 y n − 1. . -3. Desde el punto de vista matem´tico dir´ a ıamos que los segundos se expresan m´dulo 60. y en general. Como se puede apreciar. Propiedades e La aritm´tica modular es una parte de las Matem´ticas extremadamente util en Cripe a ´ tograf´ ya que permite realizar c´lculos complejos y plantear problemas interesantes. .Cap´ ıtulo 5 Fundamentos de Aritm´tica e Modular 5. los n´meros 5. se expresan empleando sesenta valores c´ ıclicamente. cualquier n´mero entero pertenecer´ necesariamente a u a alguna de esas clases. De hecho. y se escribe: o a≡b si se cumple: a = b + kn. . forman una clase de e o equivalencia. . . u 21. Como vemos. son todos equivalentes en la aritm´tica m´dulo 8. Por ejemplo. o Empleemos ahora un punto de vista m´s formal y riguroso: Dados tres n´meros a. si son las 19:13:59 y pasa un segundo. Por razones u u de simplicidad. de forma que tras el 59 viene de nuevo el 0. u e debido a su parecido con la forma que tenemos de contar el tiempo. Mucha gente la conoce como la aritm´tica del reloj. ya que 37 = 5 + 4 · 8. 13. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa (mod n) . a teniendo siempre una representaci´n num´rica compacta y definida. puesto que s´lo maneja o e o un conjunto finito de n´meros enteros.

Podemos definir ahora las operaciones suma y producto en este tipo de conjuntos: • a + b ≡ c (mod n) ⇐⇒ a + b = c + kn • ab ≡ c (mod n) ⇐⇒ ab = c + kn Propiedades de la suma: • Asociativa: ∀a.58 5. 3. c ∈ Zn • Conmutativa: ∀a. c ∈ Zn (a + b) · c ≡ (a · c) + (b · c) (mod n) La operaci´n suma en este conjunto cumple las propiedades asociativa y conmutativa o y posee elementos neutro y sim´trico. u a u El Algoritmo de Euclides explota la siguiente propiedad: Manuel J. M´s adelante veremos bajo qu´ condiciones a e existe el elemento sim´trico para el producto. La estructura del conjunto con las operaciones suma y producto es. a u u Sean a y b dos n´meros enteros de los que queremos calcular su m´ximo com´n divisor m. b.1 Algoritmo de Euclides Quiz´ sea el algoritmo m´s antiguo que se conoce. 6. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . y a la vez es uno de los m´s utiles. Con la operaci´n producto se cumplen las propiedades asociativa y conmutativa. pues. pero no necesariamente sim´trico —recordemos que al elemento sim´trico pae e ra el producto se le suele denominar inverso—. A partir de ahora llamaremos grupo finito inducido por n a dicho conjunto. y tiene o elemento neutro. a a a ´ Permite obtener de forma eficiente el m´ximo com´n divisor de dos n´meros. de anillo conmutativo. 2. b. b ∈ Zn • Elemento Neutro: ∀a ∈ Zn (a · b) · c ≡ a · (b · c) a · b ≡ b · a (mod n) (mod n) ∃ 1 tal que a · 1 ≡ a (mod n) Propiedades del producto con respecto de la suma: • Distributiva: ∀a. Fundamentos de Aritm´tica Modular e de equivalencia {0. al que denominaremos Z8 . 4. 5. b ∈ Zn • Elemento Neutro: ∀a ∈ Zn (a + b) + c ≡ a + (b + c) a + b ≡ b + a (mod n) ∃ 0 tal que a + 0 ≡ a (mod n) ∃ b tal que a + b ≡ 0 (mod n) (mod n) k∈Z k∈Z • Elemento Sim´trico (opuesto): ∀a ∈ Zn e Propiedades del producto: • Asociativa: ∀a. e 5. por lo que el conjunto tendr´ estructura de grupo e a conmutativo. b.1. 1. c ∈ Zn • Conmutativa: ∀a. 7}.

debe dividir a su diferencia. o sea a mod b. int b) { int i. Propiedades e 59 m|a ∧ m|b =⇒ m|(a − kb) con k ∈ Z =⇒ m|(a mod b) a|b quiere decir que a divide a b. que b es m´ltiplo de a. que m tiene que dividir a todos los restos que vayamos obteniendo.1. int g[]. puesto que los restos siempre son inferiores al divisor. i++. while (g[i]!=0) { g[i+1]=g[i-1]%g[i]. g[1]=b.5. En esencia estamos diciendo. g[0]=a. El algoritmo queda entonces como sigue: a u int euclides(int a. 5.2 Complejidad de las Operaciones Aritm´ticas en Zn e La complejidad algor´ ıtmica de las operaciones artim´ticas modulares es la misma que la e de las no modulares: Manuel J. Aritm´tica Modular. } El invariante —condici´n que se mantiene en cada iteraci´n— del Algoritmo de Euclides o o es el siguiente: gi+1 = gi−1 (mod gi ) y su orden de complejidad ser´ de O((log2 (n))2 ) operaciones a nivel de bit. podemos aplicar de nuevo la propiedad anterior y tenemos: m|(b mod c) Sabemos. ´ a El pen´ltimo valor obtenido es el mayor n´mero que divide tanto a a como a b. llegar´ un momento en el que obtengamos el resto de dividir a por b. el u u m´ximo com´n divisor de ambos. mientras que u (a mod b) representa el resto de dividir a entre b. que.1. a Si llamamos c a (a mod b). i=1. siendo n una cota a superior de a y b. pues. } return(g[i-1]). Es evidente que el ultimo de ellos ser´ cero. Entonces si restamos k veces b de a. o sea. o en otras palabras. puesto que m divide tanto a a como a b. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

luego ı. b) = 1. y se notan GF (n). a tiene inversa m´dulo n. Teorema: Si mcd(a. se denominan Campos de Galois. o Corolario: Si n es primo. j < n (5.n ∈ N mcd(a. (i − j)|n =⇒ i ≡ j con lo que hemos alcanzado una contradicci´n. pues: (ai − aj)|n =⇒ a(i − j)|n puesto que a y n son primos entre s´ a no puede dividir a n. o Ahora podemos hacer la siguiente reflexi´n: Si ai = aj para cualesquiera i = j. Estos cuerpos finitos tienen una gran importancia en Matem´ticas.2. Se cumple.1 C´lculo de Inversas en Zn a Existencia de la Inversa Hemos comentado en la secci´n 5. y que existen i = j tales que ai ≡ aj( mod o n). En caso contrario se denomina compuesto. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa (mod n) . Lema: Dados a.60 5. n) = 1. el grupo finito que genera tiene estructura de cuerpo —todos sus elementos tienen inversa para el producto excepto el cero—.1) Demostraci´n: Supongamos que mcd(a. u Definici´n: Dos n´meros enteros a y b se denominan primos entre s´ (o coprimos). a Manuel J. n) = 1 =⇒ ai = aj (mod n) ∀i=j 0 < i. multiplicar o a por todos los elementos del grupo finito m´dulo n nos producir´ una permutaci´n de los o a o elementos del grupo (exceptuando el cero). En este apartado veremos qu´ cone e e diciones han de cumplirse para que exista la inversa de un n´mero dentro de un grupo finito. Eso nos conduce al siguiente teorema: e Definici´n: Un n´mero entero p ≥ 2 se dice primo si sus unicos divisores positivos son 1 y o u ´ p. por lo que forzosamente ha de existir un valor tal que al multiplicarlo por a nos d´ 1. si o u ı mcd(a. n) = 1.1 que los elementos de un grupo finito no tienen por o qu´ tener inversa —elemento sim´trico para el producto—.2 5. Fundamentos de Aritm´tica Modular e • Suma modular ((a + b) mod n): O(log2 (a) + log2 (b)) = O(log2 (n)) • Resta modular ((a − b) mod n): O(log2 (a) + log2 (b)) = O(log2 (n)) • Multiplicaci´n modular ((a · b) mod n): O(log2 (a) · log2 (b)) = O((log2 (n))2 ) o 5.

Zn es el conjunto de todos los n´meros u u que tienen inversa m´dulo n. . Por lo tanto.2. u n Se define la funci´n de Euler sobre n. .2. como el menor entero o n positivo t tal que at ≡ 1 (mod n). su conjunto reducido de residuos o ser´ ıa: {1. y se escribe φ(n). del conjunto reducido de residuos m´dulo n {r1 .5. C´lculo de Inversas en Zn a 61 5. o Definici´n: Sea a ∈ Z∗ .2) siendo pi los factores primos de n y ei su multiplicidad.2 Funci´n de Euler o Llamaremos conjunto reducido de residuos m´dulo n —y lo notaremos Z∗ — al conjunto o n de n´meros primos relativos con n. Manuel J. a o lo cual nos lleva a: φ(n) φ(n) φ(n) ri = i=1 i=1 ari = a φ(n) i=1 ri =⇒ aφ(n) ≡ 1 (mod n) (Peque˜o) Teorema de Fermat: Si p es primo.3) Demostraci´n: Puesto que a y n son primos entre s´ a multiplicado por cualquier elemento o ı. n) = 1: aφ(n) ≡ 1 (mod n) (5. En particular. rφ(n) } ha de ser tambi´n primo con n. Si as ≡ 1 (mod n). 7. sea cual sea el valor de a. 11} Existe una expresi´n que nos permite calcular el n´mero de elementos —el cardinal— del o u conjunto reducido de residuos m´dulo n: o n |Z∗ | n = i=1 pei −1 (pi − 1) i (5. . si n fuera 12. . entonces ord(a) divide a s. denotado ord(a). por o e lo tanto el conjunto {ar1 . Por ejemplo. como el cardinal de Z∗ . ´ entonces ar ≡ as (mod p). Existe una interesante propiedad de ord(a). . . arφ(n) } no es m´s que una permutaci´n del conjunto anterior. cuando trabajamos m´dulo o p. siendo p primo. 5. Por ejemplo. es decir: o n φ(n) = |Z∗ | n Teorema: Si mcd(a. . |Z∗ | = (p − 1)(q − 1). si n fuera el producto de dos n´meros primos p y q. . Se define el orden de a. tenemos que ord(a) siempre divide a φ(n).4) Como consecuencia de este ultimo teorema podemos deducir que si r ≡ s (mod p − 1). los exponentes pueden ser reducidos m´dulo p − 1. En otras palabras. entonces n ap−1 ≡ 1 (mod p) (5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

u[]. que valdr´ 1 si estos ´ a a u a n´meros son primos relativos. g[0]=n.i. como puede apreciarse. En la implementaci´n que damos. u[1]=0. o ´ Obs´rvese tambi´n la segunda cl´usula while. Fundamentos de Aritm´tica Modular e Despu´s de todo lo expuesto. v[0]=0. u[i+1]=u[i-1]-c*u[i]. o calculamos tanto los ui como los vi . i++.v[]. g[i+1]=g[i-1]%g[i]. int a) { int c. e Es una ampliaci´n del de Euclides. v[i+1]=v[i-1]-c*v[i]. El invariante a que mantiene es el siguiente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . queda claro que uno de los posibles m´todos para calcular e e inversas m´dulo n. y que se obtiene o simplemente al tener en cuenta los cocientes adem´s de los restos en cada paso. puesto que: o o aφ(n) = aaφ(n)−1 ≡ 1 (mod n) =⇒ a−1 ≡ aφ(n)−1 (mod n) 5. es precisamente la Funci´n de Euler. Manuel J. int g[]. u[0]=1. suponiendo que se le pasen como par´metros n y a: a gi = nui + avi El ultimo valor de gi ser´ el m´ximo com´n divisor entre a y n.62 5. g[1]=a. v[1]=1. aunque luego en la prctica s´lo empleemos estos ultimos. while (g[i]!=0) { c=g[i-1]/g[i]. avi ≡ 1 (mod n) luego (vi mod n) ser´ la inversa de a m´dulo n. a o Nuestra segunda alternativa para calcular inversas.2. cuando desconozcamos φ(n). que tiene como unico fin que el valor devuelto e e a ´ est´ comprendido entre 0 y n − 1. ser´ pues a el Algoritmo Extendido de Euclides. e int inversa(int n. por lo que tendremos: u 1 = nui + avi o sea. que posee el mismo orden de complejidad. i=1.3 Algoritmo Extendido de Euclides El Algoritmo Extendido de Euclides tambi´n puede ser empleado para calcular inversas.

.2). . cada pi debe tener una inversa o yi tal que n yi ≡ 1 pi Tambi´n se cumple e n yi ≡ 0 pi n ya que pi es m´ltiplo de cada pj . Teorema Chino del Resto } while (v[i-1]<0) v[i-1]=v[i-1]+n. u r (mod pi ) (mod pj ) ∀i = j Sea x = i=1 n yi xi pi x= (mod n). . . . el algoritmo RSA (ver secci´n 12. mcd pi .5. Por lo tanto. . esta demostraci´n nos proporciona adem´s una soluci´n al sistema o a o de ecuaciones (5.5).3 Teorema Chino del Resto El Teorema Chino del Resto es una potente herramienta matem´tica. n − 1].6) n n Demostraci´n: Para cada i. a Teorema: Sea p1 . ya que o n n yk xk + yi xi = 0 + 1 · xi ≡ xi pk pi (mod pi ).5) tiene una unica soluci´n com´n en [0. que viene dada por la expresi´n: ´ o u o r x= i=1 n (n/pi )−1 pi (mod pi ) xi (mod n) (5. return(v[i-1]%n). k=i Como puede apreciarse. Entonces x es una soluci´n a (5. r (5. como por ejemplo. entonces u ı. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o Manuel J.5).3. . que posee interesana tes aplicaciones criptogr´ficas. · pr . el sistema de ecuaciones en congruencias x ≡ xi (mod pi ) i = 1. pi = 1. . pr una serie de n´meros primos entre s´ y n = p1 · p2 · . . lo cual puede resultarnos de gran utilidad para ciertas aplicaciones. } 63 5.

+ 2n bn Expresemos la potencia que vamos a calcular en funci´n de dicha representaci´n: o o n ab = a2 0 b +21 b +22 b +. el c´lculo de los logaritmos discretos. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa i i−1 . z=z/2. Fundamentos de Aritm´tica Modular e 5. .+2n b n 0 1 2 = i=0 a2 bi i recordemos que los bi s´lo pueden valer 0 ´ 1. a 5. por lo que. while (z>0) { if (z%2==1) resul=resul*x.4. Tomemos la representaci´n binaria de b: o b = 20 b0 + 21 b1 + 22 b2 + . y queremos calcular ab . que a2 = (a2 )2 .4 Exponenciaci´n. El mecau nismo m´s sencillo ser´ multiplicar a por s´ mismo b veces.. z=b. adem´s. resul=1. para valores muy a ıa ı grandes de b este algoritmo no nos sirve. incluso de miles de bits de longitud. Manuel J. Sin embargo. x=a. partiendo de a. podemos calcular el siguiente o a valor de esta serie elevando al cuadrado el anterior. En esta secci´n veremos mecaıa o nismos eficientes para llevar a cabo estas operaciones.64 5. Logaritmos Discretos o Muchos de los algoritmos de llave p´blica emplean exponenciaciones dentro de grupos u finitos para codificar los mensajes. N´tese. Tanto las bases como los exponentes en esos casos son n´meros astron´micos. int b) { int z. x=x*x. El Algoritmo de Exponenciaci´n R´pida o a queda como sigue: int exp_rapida(int a. por tanto para calcular ab s´lo hemos de o o o i multiplicar los a2 correspondientes a los d´ ıgitos binarios de b que valgan 1.. . Tambi´n comentaremos brevemente el e problema inverso.resul.x.1 Algoritmo de Exponenciaci´n R´pida o a Supongamos que tenemos dos n´meros naturales a y b. puesto que en su dificultad intr´ a ınseca se apoyan muchos algoritmos criptogr´ficos. Efectuar las exponenciaciones u o mediante multiplicaciones reiterativas de la base ser´ inviable.

b y el m´dulo n. En la variable x se almacenan e 2i . siendo n una cota o superior de a. y muchos esquemas criptogr´ficos basan su resistencia a en esta circunstancia. pues bastar´ sustituir las operaciones o ıa producto por el producto m´dulo n. Dado el conjunto Z∗ .4.3. Antes de enunciarlo definiremos el t´rmino generador.2 El Problema de los Logaritmos Discretos El problema inverso la exponenciaci´n es el c´lculo de logaritmos discretos. Exponenciaci´n. por lo u n 3 ) operaciones a nivel de bit. con p primo. b y ab es de O(log(n)) multiplicaciones sobre n´meros de tama˜o log(n). e p diremos que α ∈ Z∗ es un generador de Z∗ . ∃ i tal que αi = b n El enunciado del problema es el siguiente: dado un n´mero primo p. Logaritmos Discretos o } return(resul).2).3. ser´ suficiente con calcular a y e ıa luego (αb )a = αab . un n´mero α que sea u u un generador de Z∗ . De hecho. 5. se define el logaritmo discreto de a en base b m´dulo n como: u o o c = logb (a) (mod n) ⇐⇒ a ≡ bc (mod n) (5.7) En la actualidad no existen algoritmos eficientes que sean capaces de calcular en tiempo razonable logaritmos de esta naturaleza.3 El Problema de Diffie-Hellman El problema de Diffie-Hellman est´ ´ a ıntimamente relacionado con el problema de los Logaritmos Discretos.5. si se cumple n n ∀ b ∈ Z∗ . los valores de a La extensi´n a Zn de este algoritmo es muy simple. si o pudi´semos efectuar de forma eficiente logaritmos discretos.1) y el de ElGamal (apartado 12. n N´tese que nosotros conocemos αa y αb . o a entonces se puede factorizar f´cilmente (el rec´ a ıproco no se ha podido demostrar).4. de hecho est´ demostrado que si se puede calcular un logaritmo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . mientras que su orden de complejidad. y es la base de algunos sistemas criptogr´ficos de clave p´blica. } 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 significativo de z. que nos queda O((log(n)) 5. pero no el valor de a ni el de b. Dados dos o a n´meros a. Manuel J.4. El problema de los logaritmos discretos est´ ´ a ıntimamente relacionado con el de la factorizaci´n. y los elementos αa y αb . como el de a u Diffie-Hellman (apartado 12. encontrar αab (mod p).

bastar´ con aplicar un algoritmo de factorizaci´n a ıa o para saber si un n´mero es primo o no. Necesitaremos pues mecanismos para poder calcular esos n´meros primos grandes. se impone la condici´n de que los factores de n que obtengamos sean todos primos ´ o elevados a alguna potencia. puesto que acabamos de u decir que no hay algoritmos eficientes de factorizaci´n. Cabr´ preguntarse. har´ falta un u ıan total de 10109 n´meros primos diferentes. s´ que existen algoritmos o ı probabil´ ısticos que permiten decir con un grado de certeza bastante elevado si un n´mero u cualquiera es primo o compuesto. Al igual que para el problema de los logaritmos discretos. Dichos a u o conjuntos deben cumplir la propiedad de que su m´dulo n sea un n´mero muy grande con o u pocos factores —usualmente dos—. el artilugio pesar´ m´s de 10 ıa a y ocupar´ casi 10130 metros c´bicos. ıa a 5. si realmente hay suficientes. Cuando tratamos de obtener la u u ´ factorizaci´n de n. se trata de buscar un o o conjunto de n´meros tales que su producto valga n. y para que la soluci´n sea u o unica. Este mecanismo es inviable. Tambi´n podr´ e ıamos pensar en calcular indiscriminadamente n´meros primos para luego u emplearlos en alg´n algoritmo de factorizaci´n r´pida. es decir. Por desgracia. dado que para los algoritmos asim´tricos de cifrado necesitaremos ıa e generar muchos n´meros primos. Fundamentos de Aritm´tica Modular e 5.5 Importancia de los N´ meros Primos u Para explotar la dificultad de c´lculo de logaritmos discretos. u a fuerza de generar n´meros. pek . si quisi´ramos construir u o a e un disco duro que albergara diez mil GBytes por cada gramo de masa y mil´ ımetro c´bico u 135 Kg para almacenar todos los primos de 512 bits o menos. que posteriormente se multiplican. no existen algoritmos eficientes para efectuar este tipo de c´lculos. siendo pi o u 2 1 k n´meros primos y ei n´meros enteros mayores que 1. Normalmente. normalmente nos conformamos con alcanzar una descomposici´n n = a · b o o Manuel J. muchos algoritmos cripa togr´ficos de llave p´blica se basan en operaciones de exponenciaci´n en grupos finitos. Por suerte. la descomposici´n de un n´mero entero n = pe1 · pe2 . u La factorizaci´n es el problema inverso a la multiplicaci´n: dado n.6 Algoritmos de Factorizaci´n o Como bien es sabido. mientras que el total estimado de n´meros primos u u de 512 bits o menos es aproximadamente de 10151 . De hecho se puede pensar que. es unica. ser´ miles de billones de veces m´s grande y ıa u ıa a pesado que la V´ L´ctea. a En cuanto al c´lculo de primos grandes. Habitualmente para obtener n se calculan primero dos n´meros primos u muy grandes. siempre y cuando los factores a —como veremos m´s adelante— hayan sido escogidos correctamente. . porque si a cada ´tomo del universo le asign´ramos a a mil millones de n´meros primos cada microsegundo desde su origen hasta hoy. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .66 5. . Podemos estar tranquilos. llegar´ un momento en el que repitamos un primo generado con u a anterioridad. Esto nos permite confiar a en que los factores de n ser´n imposibles de calcular aunque se conozca el propio n. Estos algoritmos funcionan si se conoce n y sus factores se mantienen en secreto.

habremos dado con una factorizaci´n de n. El m´todo de Fermat empieza tomando x0 como el primer a e √ entero mayor que n. Afortunadamente.6. o Por ejemplo. y o puesto que tanto a como b son menores que n. y ∈ Z. u este m´todo es del todo inaceptable en cuanto n alcanza valores elevados. y en 0 caso contrario se calcula xi+1 = xi + 1. El algoritmo m´s sencillo e intuitivo para tratar de factorizar un n´mero n es probar a a u √ dividirlo por todos los n´meros enteros positivos comprendidos entre 2 y n. En tal caso. podemos aplicar el mismo algoritmo de forma recursiva hasta que recuperemos todos los factores primos.6. y ha sido ampliae mente mejorado por otras t´cnicas que. Finalmente.5. Evidentemente. o Tambi´n conviene apuntar el hecho de que. como se ver´ en la secci´n 5. elevado a una potencia verificar si n es una potencia comentaremos en esta secci´n o primos diferentes. por lo que todos los algoritmos que partir´n de la suposici´n de que n tiene al menos dos factores a o factor. a 5. Usando la siguiente expresi´n: 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. son mucho m´s e a r´pidas que la fuerza bruta. En esta secci´n haremos un breve repaso a algunos de los m´todos a o e m´s interesantes aparecidos hasta la fecha. x.7. Algoritmos de Factorizaci´n o 67 no trivial —la descomposici´n trivial es aquella en la que a = n y b = 1—. vamos a intentar factorizar el n´mero 481: u x0 x1 x2 x3 Manuel J. Esta es la raz´n por la que los o algoritmos de factorizaci´n suelen limitarse a dividir n en dos factores. Lucena L´pez o = 22 = 23 = 24 = 25 y0 = 3 y1 = 48 y2 = 95 y3 = 144 2x0 + 1 = 45 2x1 + 1 = 47 2x2 + 1 = 49 (5. por lo que normalmente u se recomienda aplicar primero un test de primalidad para asegurarse de que el n´mero puede u descomponerse realmente de alguna manera no trivial. En cuanto ´ encontremos un yi que sea un cuadrado perfecto.1 M´todo de Fermat e Para factorizar n. el m´todo de Fermat intenta representarlo mediante la expresi´n e o n = x2 − y 2 con x. con k > 1. Es f´cil ver que a n = (x + y)(x − y) = a · b donde a y b ser´n dos factores de n. es mucho m´s e a o a eficiente comprobar si un n´mero es primo que tratar de factorizarlo. Se comprueba entonces que y0 = x2 − n es un cuadrado perfecto. sin llegar a ser realmente eficientes. existen m´todos capaces de e perfecta xk . y ≥ 1.8) Criptograf´ y Seguridad en Computadores ıa . queda la posibilidad de que n tenga un unico ´ superior a 1.

vamos a tratar de factorizar el n´mero 187. luego podemos poner: 481 = (25 + 12)(25 − 12) = 13 · 37 Este m´todo permite a´n varios refinamientos. n 5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . elevados a la m´xima potencia que los deje por debajo de n. u 2. . n − 1}. . 3. es bastante probable a que podamos hallar alg´n factor de n.6. En tal caso m = 27 · 34 = 10368. Ejecut´ndolo. Si d > 1. El orden de eficiencia de este algoritmo es de O(B logB (n)) operaciones de multiplicaci´n o modular. puesto que m es m´ltiplo de p − 1. por lo que el paso 4 deber´ devolver p. 5. siendo p un factor primo e u de n. ya que presenta un orden de u complejidad para el peor caso de O(n) —n´tese que al ser lineal en n. Una vez obtenido el valor de m. el algoritmo de u factorizaci´n queda como sigue: o 1. suponiendo que n tiene un factor p tal que p − 1 es B–uniforme. Llegados a este punto. d es un factor de n. con B1 suficientemente peque˜o. Fin. u N´tese que. que divide a 187. u Como ejemplo. 4. Calcular d = mcd(a. Para ello necesitaremos definir el concepto de uniformidad. pues. 187) nos queda 17. pero en cualquier caso resulta inviable e u cuando el n´mero n a factorizar es lo suficientemente grande. d es un factor de n. Calcularemos m como el producto de todos los n´meros primos n u inferiores a B1 . Calculando mcd(68. Calcular x = (am mod n). por lo que 187 = 17 · 13. varias veces. De esta forma. suponiendo que alguno de u sus factores es 3–uniforme. Fundamentos de Aritm´tica Modular e Como puede verse. a garantizamos que m es un m´ltiplo de p − 1. Sea a = 2. resulta exponencial en o el tama˜o de n—. Escoger un n´mero a aleatorio dentro del conjunto {2. n). Si d > 1. entonces x = (210368 mod 187) = 69. luego x − 1 deber´ ser m´ltiplo de p. Manuel J.68 5. Devolver fallo en la b´squeda de factores de n. en el paso 3. Calcular d = mcd(x − 1. y3 es el cuadrado de 12. Fin. . Fin. Diremos que n es B–uniforme si todos sus factores primos son menores o iguales a B. . n).2 M´todo p − 1 de Pollard e Este m´todo se basa en poseer un m´ltiplo cualquiera m de p − 1. 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. suponemos que p es un factor de n y p − 1 es B1 –uniforme. x deber´ ser congruente con o u ıa 1 m´dulo p.

tendremos una ecuaci´n del tipo que o i necesitamos. tendremos que se cumple la relaci´n (5. Puesto que tenemos la factorizaci´n de los zi . puesto que tanto x como y son menores que n.3 M´todos Cuadr´ticos de Factorizaci´n e a o Los m´todos cuadr´ticos de factorizaci´n se basan en la ecuaci´n e a o o x2 ≡ y 2 Siempre y cuando x ≡ ±y tanto (mod n) (5. siempre y cuando x en valor absoluto sea peque˜o. Multiplicando los x2 correspondientes a los factores de z escogidos. . Si n o n escogemos xi = ai + m y zi = q(ai ). al que llamaremos z.5. con la salvedad de que p0 puede ser igual a −1. Para localizar un par de n´meros satisfactorio. . En consecuencia. y por lo tanto una factorizaci´n de n. sea un cuadrado perfecto. Algoritmos de Factorizaci´n o 69 5. u Buscaremos ahora ecuaciones en congruencias con la forma x2 ≡ zi i (mod n) (5.11) tales que zi se pueda factorizar completamente a partir de los elementos de F . pt−1 } formado por t n´meros primos diferentes. Se puede demostrar que si n es impar. n no puede ser divisor de (x + y) ni de (x − y). o Criba Cuadr´tica a Este m´todo se basa en emplear un polinomio de la forma e q(x) = (x + m)2 − n siendo m = √ n . no potencia de primo y compuesto.6.11). tenemos que (x2 − y 2 ) es m´ltiplo de n.10) Adicionalmente. donde x representa la parte entera de x. p1 . entonces siempre se pueden encontrar x e y. o basta con escoger estos de forma que la multiplicidad de sus factores sea par. El siguiente paso consiste en buscar un subconjunto de los zi tal que el producto de todos sus elementos. n ha de tener factores comunes tanto con (x + y) como con (x − y). . en primer lugar elegiremos un conjunto u F = {p0 . Este problema equivale a resolver un sistema de ecuaciones lineales con coeficientes en Z2 .6. . por lo que el valor d = mcd(n. x − y) debe ser un divisor de n. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . y por lo u n|(x − y)(x + y) (5. o Manuel J.9) (mod n). Puede comprobarse que q(x) = x2 + 2mx + m2 − n ≈ x2 + 2mx es un valor peque˜o en relaci´n con n.

Escoger un n´mero aleatorio a < p. y fue empleado o a a con ´xito en 1996 para factorizar un n´mero de 130 d´ e u ıgitos decimales. (mod p). esta vez formada por polinoa mios irreducibles. por lo que se recomienda al lector que acuda a la bibliograf´ si desea conocer m´s a fondo este algoritmo de factorizaci´n. la probabilidad de que p sea primo es igual o (mod p) y b = −1 4. Sean x1 . Finalmente. a u 5. Si b = 1 (mod p). Fundamentos de Aritm´tica Modular e Lo unico que nos queda es comprobar si zi puede descomponerse totalmente con los ele´ mentos de F .12).70 5. En esta secci´n veremos algunos de los algoritmos u o m´s comunes para verificar que un n´mero sea primo. Los detalles de este m´todo de factorizaci´n requieren unos conocimientos e o algebraicos que escapan a los contenidos de este libro. La criba propiamente dicha se lleva a cabo definiendo un vector Q[x]. que se inicializa seg´n la expresi´n Q[x] = log |q(x)| . (mod p). u 2. p no es primo. u o Entonces restamos el valor log(p) a aquellas entradas Q[x] tales que x sea igual a alg´n u valor de las series de soluciones obtenidas en el paso anterior.1 M´todo de Lehmann e Es uno de los tests m´s sencillos para saber si un n´mero p es o no primo: a u 1. los valores de Q[x] que se aproximen a cero son los m´s susceptibles de ser descompuestos con los elementos de a F . Calcularemos la soluci´n de la ecuaci´n e a o o q(x) ≡ 0 (mod p) (5. Criba del Cuerpo de N´ meros u Hoy por hoy es el algoritmo de factorizaci´n m´s r´pido que se conoce. pero existen m´todos probabil´ e ısticos que nos pueden decir con un alto grado de certeza si un n´mero es o no compuesto.12) obteniendo una o dos series —dependiendo del n´mero de soluciones que tenga la ecuaci´n— u o de valores y tales que p divide a q(y). con −M ≤ x ≤ M .7 Tests de Primalidad Como ya hemos dicho. propiedad que se puede verificar de forma directa tratando de dividirlos. x2 las soluciones a (5. Manuel J. pero antes nos fijaremos en que si pi ∈ F divide a q(x). ıa a o 5. que emplea una segunda base de factores. Calcular b = a(p−1)/2 3.7. Es una extensi´n de o la criba cuadr´tica. Si b ≡ 1 (mod p) ´ b ≡ −1 o superior al 50%. tambi´n dividir´ a q(x + kp). Esto se consigue con la fase de criba. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . no es viable tratar de factorizar un n´mero para saber si es o u no primo.

7. 2b es la mayor potencia de 2 que divide a (p − 1). Volver al paso (4).5. Esto elimina gran cantidad de n´meros no primos de una forma muy u r´pida. 5. Poner a uno el bit m´s significativo —garantizamos que el n´mero es de n bits— y el a u menos significativo —debe ser impar para poder ser primo—. 5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Baste decir a t´ a ıtulo informativo que m´s del 99. Tests de Primalidad 71 Repitiendo el algoritmo n veces. Sea j = j + 1. u u 4. Ejecutar el test de Rabin-Miller sobre p como m´ ınimo cinco veces. 4. Si el test falla. tal que p = 1 + 2b ∗ m. 3. Manuel J. p no es primo. Esto quiere decir que necesitaremos menos pasos para llegar al mismo nivel de confianza que el obtenido con el algoritmo de Lehmann. 6.7. La probabilidad de que un n´mero compuesto pase este algoritmo para un n´mero a es del u u 25%. no primo— ser´ de 1 contra 2n . Si j = b y z = p − 1. Se calcula b. el algoritmo que se suele emplear para generar aleatoriamente un a n´mero primo p es el siguiente: u 1. la probabilidad de que p supere el test y sea compuesto —es decir. 3. Sea p el n´mero a o u que queremos saber si es primo. Si j < b y z = p − 1. 1. Si j > 0 y z = 1.3 Consideraciones Pr´cticas a A efectos pr´cticos. u 2. debido a su facilidad de implementaci´n. u 2. Si j < b y z = p − 1. Calculamos entonces m. Generar un n´mero aleatorio p de n bits. siendo b el n´mero de veces que 2 divide a (p−1).2 M´todo de Rabin-Miller e Es el algoritmo m´s empleado. 5. 7. z = z 2 (mod p). a 5. o z = p − 1. Escoger un n´mero aleatorio a < p. entonces p pasa el test y puede ser primo. entonces p pasa el test y puede ser primo.8% de los n´meros impares no a u primos es divisible por alg´n n´mero primo menor que 2000. Si z = 1. incrementar p en dos unidades y volver al paso 3.7. p no es primo. p no es primo. Intentar dividir p por una tabla de primos precalculados (usualmente aquellos que sean menores que 2000). 8. u es decir. Sea j = 0 y z = am (mod p).

4 Primos fuertes Debido a que muchos algoritmos de tipo asim´trico (ver cap´ e ıtulo 12) basan su potencia en la dificultad para factorizar n´meros enteros grandes. mientras que el producto cumple la asociativa. y tiene propiedades an´logas a la de enteros. Sin embargo. conmutativa. tales que f (x) = ´ g(x)c(x) + r(x). hac´ que se ganase poco o nada con el empleo de este a ıa tipo de n´meros primos. El elemento ai se denomina coeficiente i–´simo de f (x). conmutativa y elemento e neutro. donde ci = aj bk . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o la criba cuadr´tica.72 5. igual que la que ya hemos definido para e enteros. En ´l se argumentaba que la supuesta necesidad de n´meros de este e e u tipo surgi´ para dificultar la factorizaci´n mediante ciertos m´todos —como por ejemplo. El conjunto de polinomios definidos en un anillo R. entonces se dice que f (x) tiene grado 0. en diciembre de 1998. existen dos polinomios unicos c(x) y r(x). entonces un polinomio con variable x o sobre el anillo R tiene la siguiente forma f (x) = an xn + an−1 xn−1 + · · · + a1 x + a0 donde cada ai ∈ R y n ≥ 0. Eso nos permite a definir una aritm´tica modular sobre polinomios. a lo largo de los a˜os se propusieron u n diversas condiciones que deb´ cumplir los n´meros empleados en aplicaciones criptogr´ficas ıan u a para que no fueran f´ciles de factorizar. siendo f (x) = an xn + · · · + a0 y g(x) = bm xm + · · · + b0 : • Suma: f (x) + g(x) = • Producto: f (x) · g(x) = cr xr . pero la aparici´n de t´cnicas m´s modernas como la de Lenstra. tiene en consecuencia estructura de anillo conmutativo. que notaremos R[x]. donde c(x) desempe˜a el papel o o n de cociente. Si todos los coeficientes de f (x) valen 0. cr xr . elemento neutro y elemento sim´trico. u 5. tal que j + k = i.8 Anillos de Polinomios Definici´n: Si tenemos un anillo conmutativo R. La suma de polinomios cumple las propiedades asociativa. y el e mayor m para el cual am = 0 se denomina grado de f (x). y r(x) el de resto. Se empez´ entonces a hablar de n´meros primos a o u fuertes. Ronald Rivest y Robert Silverman publicaron un trabajo en el que quedaba demostrado que no era necesario emplear primos fuertes para los algoritmos asim´tricos. con las operaciones suma y producto. Finalmente. Dados f (x). Si f (x) = a0 con a0 = 0. el o o e m´todo “p − 1”—. se dice que el grado de f (x) es −∞. Fundamentos de Aritm´tica Modular e 5. un polinomio se dice m´nico si su coeficiente de mayor grado vale 1. Manuel J. g(x) ∈ R[x]. basada en e o e a curvas el´ ıpticas.7. o Podemos definir las operaciones suma y producto de polinomios de la siguiente forma. donde ci = ai + bi . Esta operaci´n es la divisi´n de polinomios.

y tienen o o estructura de anillo conmutativo. todos los coeficientes de los polinomios pueden valer unicamente 0 ´ 1. N´tese que en o este caso. En este caso. m´dulo f (x). que es irreducible en Z2 [x]. Dicho conjunto se representa como GF (2n ). o sea. por tanto. para alg´n k(x) ∈ R[x] u (mod f (x)) 73 Definici´n: Un polinomio f (x) en R[x] induce un conjunto de clases de equivalencia de o polinomios en R[x]. el n´mero binario 1011. Por ejemplo. esta suma podr´ haber sido realizada mediante una ıa simple operaci´n or-exclusivo entre los n´meros binarios que representan a f (x) y g(x). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . un Campo de Galois. de cifrado sim´trico. Si escogemos un polinomio irreducible en Z2 . o o Tomemos el polinomio f (x) = x8 + x4 + x3 + x + 1. como el est´ndar de cifrado AES. podemos generar un cuerpo finito. Vamos a centrarnos ahora en el conjunto Z2 [x]. el conjunto de clases de equivalencia que genera tiene estructura de cuerpo. Aunque no lo demostraremos aqu´ se puede deducir que si un polinomio es irreducible. siendo n el grado del polinomio irreducible que lo genera.1 Polinomios en Zn Puesto que. 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. Zn es un anillo conmutativo. ser´ muy f´cil implementar estas operaciones mediante hardware. Anillos de Polinomios Definici´n: Se dice que g(x) es congruente con h(x) m´dulo f (x). se basan en operaciones en GF (2n ) e a (ver secci´n 10. Como o u vemos. que viene dado por el n´mero 1110. el papel que desempe˜aba un n´mero primo es ahora ocupado por los polinomios n u irreducibles. y tiene gran importancia en Criptograf´ ya que algunos algoritmos ıa. ı. veamos c´mo funciona la operaci´n producto dentro de estos conjuntos.5. y g(x) = x u ıa u Podemos ver que f (x) + g(x) = x3 + x2 + x. f (x) = x3 + x + 1 podr´ representarse mediante ıa 2 + 1 vendr´ dado por el n´ mero 101.5). y se nota o o g(x) ≡ h(x) si g(x) = h(x) + k(x)f (x). o A modo de ejemplo.8. Definici´n: 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]. y genera un campo de Galois GF (28 ). La suma y multiplicaci´n pueden llevarse a cabo.8. Puesto u que las operaciones se realizan en Z2 . podemos definir el conjunto Zn [x] de polinomios con coeficientes en Zn . y ´sta es una de las ıa a e principales ventajas de trabajar en Z2 [x]. 5. donde cada clase posee al menos un representante de grado menor que el de f (x). como ya sabemos. por lo que un polinomio puede ser representado ´ o mediante una secuencia de bits.

4. empleando unicamente l´piz. ¿C´mo calcular´ el valor de (210368 mod 187). aunque e el orden de complejidad sea el mismo. a (mod f (x)) =⇒ x8 ≡ x4 + x3 + x + 1 (mod f (x)) 5. Calcular el valor de la funci´n φ de Euler para los siguientes n´meros: 64. 2. 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 aritm´ticos.9 Ejercicios Propuestos 1. 611. 3. Ahora hemos de tomar el resto o a m´dulo f (x). se logra multiplicar la velocidad por una constante y simplificar el dise˜o de los circuitos. Comprobar las propiedades de la suma en grupos finitos. Fundamentos de Aritm´tica Modular e N´tese que x5 + x5 = 0. por lo que se obtienen sistemas con mayores prestaciones. dado que los coeficientes est´n en Z2 . 5. o u 10000. 2197. 100101 y 1011. En realidad. Resolver el siguiente sistema de ecuaciones en congruencias: x ≡ 12 (mod 17) x ≡ 13 (mod 64) x ≡ 8 (mod 27) 5. Calcule la suma y el producto de los polinomios correspondientes a los n´meros binarios u 6 ) definido por el polinomio irreducible f (x) = x6 +x+1. papel y o ıa ´ a calculadora? 6. dentro del GF (2 Manuel J. Comprobar las propiedades del producto en grupos finitos.74 5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . n y a la vez m´s baratos.

Estos conjuntos y operaciones e ıan mostraban una estructura que hac´ surgir problemas computacionalmente dif´ ıa ıciles de tratar.4) an´logos a los que presentaba la aritm´tica modular. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . su implementaci´n suele resulo tar tanto o m´s eficiente que la aritm´tica modular. En la figura 6. Para introducir el concepto de Curva El´ ıptica. Vamos a hacer exactamente lo mismo con las curvas el´ ıpticas.Cap´ ıtulo 6 Introducci´n a las Curvas El´ o ıpticas La Criptograf´ de Curva El´ ıa ıptica es una de las disciplinas m´s prometedoras en el campo a de los cifrados asim´tricos. Si bien su estructura algebraica es algo compleja. los n´meros enteros constitu´ un conjunto para el que pod´ u ıan ıamos definir una serie de operaciones. y presentan una serie de propiedades que da lugar a n a problemas dif´ ıciles (ver secci´n 5.1) Los coeficientes a y b caracterizan un´ ıvocamente cada curva. apenas llevan quince a˜os siendo a n consideradas. si bien las curvas el´ e ıpticas han sido objeto de estudio y an´lisis durante m´s de un siglo.1 Curvas El´ ıpticas en R Definici´n: Una curva el´ o ıptica sobre R es el conjunto de puntos del plano (x. y ´stas ten´ unas propiedades concretas. Como ya vimos en el a u cap´ ıtulo 5. y) que cumplen la siguiente ecuaci´n: o y 2 = x3 + ax + b (6. Las curvas el´ e ıpticas constituyen un formalismo matem´tico conocia do y estudiado desde hace m´s de 150 a˜os. 6.1 puede verse la Manuel J. y adem´s con claves mucho m´s cortas se a e a a puede alcanzar el mismo nivel de seguridad que con otras t´cnicas. o a e lo cual las hace v´lidas para aplicar algunos de los algoritmos asim´tricos m´s conocidos (ver a e a cap´ ıtulo 12). 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 t´cnicas es que. las propiedades que pueden estar directamente relacionadas a a con su calidad como base para un sistema criptogr´fico. vamos a establecer un paralelismo con otro formalismo mucho m´s cercano e intuitivo: los n´meros enteros.

b) y 2 = x3 − 3x + 4. y adem´s a Manuel J. la operaci´n o suma se define de la siguiente forma: • r + O = O + r = r. t = (tx . py ). es lo que vamos a denominar grupo de a o a curva el´ ıptica E(R). de forma totalmente an´loga a lo que hac´ a ıamos con Z. s = (sx . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .1 Suma en E(R) Ya tenemos un conjunto sobre el que trabajar. sea cual sea el valor de r.1. lo cual es equivalente a que 4a3 +27b2 = 0. Sean los puntos r = (rx . representaci´n gr´fica de dos de ellas —n´tese que la curva se extender´ hacia la derecha hasta o a o a el infinito—.1: Gr´ficas de curvas el´ a ıpticas. nos devuelva otro que tambi´n o e pertenezca al conjunto. 6. Nuestro siguiente paso ser´ definir una ley a de composici´n interna que. ty ) ∈ E(R). entonces ıces u la curva correspondiente. dados dos elementos cualesquiera. escribimos r = −s. • Si rx = sx y ry = −sy . Si x3 +ax+b no tiene ra´ m´ltiples. y que por lo tanto no tiene un valor concreto. llamado punto en el infinito. decimos que r es el opuesto de s. ry ). en conjunci´n con un punto especial O. p = (px . Denominaremos suma a esta operaci´n y la representaremos mediante o el signo ‘+’.76 6. Esto quiere decir que O desempe˜a el n papel de elemento neutro para la suma. o m´s la operaci´n suma que definiremos m´s adelante. Hay que recalcar que O es un punto imaginario situado por encima del eje de abcisas a una distancia infinita. sy ). a) y 2 = x3 − 5x + 1. Introducci´n a las Curvas El´ o ıpticas Figura 6.

.6. Por lo tanto.2a). dicha tangente cortar´ a la curva en un unico punto. la recta que los une resulta perpendicular al eje de o abcisas.1. cuando py = 0. Por razones de simplicidad en la notaci´n diremos que sumar un punto p consigo mismo o k veces. Compru´bese. Si py = 0. y lo notaremos kp N´tese que. o • Si r = s y r = −s.2: Interpretaci´n gr´fica de la suma de dos puntos en una curva el´ o a ıptica. • Para sumar un punto p consigo mismo. que cuando ry = 0. La suma t = p + p ser´ el opuesto a ´ a de dicho punto (ver figura 6. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . cuando se suma r y −r. • Para sumar un punto p consigo mismo.2b). se emplea la tangente a la curva en p. La suma t de r y s ser´ el opuesto de dicho punto (ver a a figura 6. Manuel J. es como multiplicar dicho punto por el escalar k. p + p = O si py = 0. la tangente a la curva ser´ pera pendicular al eje de abcisas. a e adem´s. dando como resultado O. r + s = s + r = O por definici´n. Dicha recta cortar´ la curva en un punto. entonces para sumarlos se traza la recta que une r con s. Curvas El´ ıpticas en R 77 Figura 6.. por lo que cortar´ a la curva en el infinito. por lo que podemos considerar que corta a la curva en el infinito. se cumple: a 2r = r + r = O 3r = 2r + r = O + r = r 4r = 3r + r = r + r = O .

3) Si nos fijamos un poco. entonces r + s = t donde d= ry − sy . 2py tx = d2 − 2px .16) (11. −y) (mod n) tambi´n pertenece o e a ´sta. e Manuel J. Con las curvas el´ ıpticas hemos hecho exactamente lo mismo. siendo n un n´mero primo. por lo u que podemos sumar.2 Curvas El´ ıpticas en GF (n) Recordemos que un Campo de Galois GF (n) es el grupo finito generado por n. d= ty = −py + d(px − tx ) (6.13) (16. vamos a estudiar la curva el´ ıptica con a = 7 y b = 4 en GF (17). Si hacemos los c´lculos a pertinentes.16) (15. o bien a la tangente en el punto p. que 4a3 + 27b2 = 0: 4 · 73 + 27 · 42 = 2 (mod 17) (mod n) Seguidamente.9) N´tese que dado un punto de la curva (x. Introducci´n a las Curvas El´ o ıpticas Algebraicamente. y).2) (0. A modo de ejemplo. 16). rx − sx tx = d2 − rx − sx . tenemos que 2p = t donde 3p2 + a x . junto con sus propiedades. En primer lugar.78 6. donde r = −s. ıdo o a 6.2) y cuando queremos sumar un punto consigo mismo. sy ). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 3) y (3. igual que antes.1) (11. seleccion´bamos un subcone a junto de elementos de Z y defin´ ıamos la operaci´n suma. ry ) y s = (sx . podremos observar que d representa a la pendiente de la recta que une r y s. restar.1) (3. el valor (x. multiplicar y dividir exactamente de la misma forma que en R. Obs´rvese que cuando introdujimos los grupos finitos en Z. En dicho conjunto todos los elementos menos el cero tienen inversa. ty = −ry + d(rx − tx ) (6. tenemos los siguientes: (0. por lo que nada nos impide ver qu´ puntos cumplen la ecuaci´n e o y 2 = x3 + ax + b definiendo de esta forma el conjunto E(GF (n)). Calculemos ahora la suma de dos puntos cualesquiera. para o este subconjunto. por ejemplo (2. habremos de comprobar.3) (2.4) (15.15) (2. vamos a ver qu´ puntos pertenecen a la curva el´ e ıptica. s´lo que el o subconjunto es extra´ del plano R2 y la operaci´n suma es ligeramente m´s complicada.8) (16.14) (3. la suma de curvas el´ ıpticas se define de la siguiente forma: Sea r = (rx .

3.6.3 Curvas El´ ıpticas en GF (2n ) Vamos a dar un paso m´s. tx = d2 + d + a. Manuel J. p = (px . 3) + (3. py ). sy ). definir el a a ıa. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . • Si rx = sx y ry = sx + sy . ty = d(rx + tx ) + tx + ry • Para calcular la suma t = 2p. si px = 0. nos da como resultado un punto que ıa tambi´n pertenece a la curva. t = (tx . e 6. decimos que r es el opuesto de s. o • Si r = s y r = −s. Nada nos impedir´ pues. conjunto E(GF (2n )). Como cabr´ esperar. ty = p2 + (d + 1)tx x px • Finalmente. los puntos de nuestra curva van a ser polinomios de grado n − 1 con coeficientes binarios. debido a su especial estructura. Curvas El´ ıpticas en GF (2n ) empleando la expresiones de (6. con px = 0. la ecuaci´n de curva el´ o ıptica que ser´ util para a´ nuestros prop´sitos es ligeramente diferente a la dada en (6. ry ).8.1 Suma en E(GF (2n )) Sean los puntos r = (rx .4) 6. ty ) ∈ E(GF (2n )). 2p = O. 16) = (11. los elementos de GF (pn ) a o o —y las operaciones entre ellos— presentan unas propiedades an´logas a las de los elementos a de GF (n). Como ya se vi´ en la secci´n 5. escribimos r = −s. sx − rx tx = d2 + d + rx + sx + a. a (6. 1). se emplea la siguiente f´rmula: o py d = px + . y adem´s a r + s = s + r = O por definici´n. la implementaci´n de los n o algoritmos correspondientes es m´s sencilla y r´pida. sea cual sea el valor de r. por lo que podr´n ser representados mediante cadenas de bits. la operaci´n suma se define de la siguiente forma: o • r + O = O + r = r.3.1): o y 2 + xy = x3 + ax2 + b y la unica condici´n necesaria para que genere un grupo es que b = 0.1. la suma t = r + s se calcula de la siguiente forma: d= sy − ry . En GF (2n ). s = (sx . ´ o Dentro de GF (2n ).2): d = (3 − 16)/(2 − 3) = 13 (mod 17) x = 132 − 2 − 3 = 11 (mod 17) y = −3 + 13 · (2 − 3) = 1 (mod 17) 79 luego (2. cuando p = 2. con la caracter´ ıstica a˜adida de que.

Sea el grupo GF (23 ) generado por el polinomio x3 + x + 1.2. 2p. 3p.5 Ejercicios Propuestos 1. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o 3. p. 16). ya que el n´mero de puntos de la curva es finito. si el polinomio e(x) = x3 + ax + b tiene ra´ ıces m´ltiples. . si u disponemos de un punto q ∈ p . Al igual que los descritos en la secci´n o 5. Las ra´ ız ıces ri de un polinomio tienen la propiedad de que el polinomio pi (x) = x − ri divide a p(x). Denominaremos p al conjunto {O. Por lo tanto. a partir de la expresi´n anterior. Introducci´n a las Curvas El´ o ıpticas 6. Hasta ahora no se ha encontrado ning´n algoritmo u u eficiente (subexponencial) para calcular el valor de k. u El Problema de los Logaritmos Discretos en Curvas El´ ıpticas consiste precisamente en hallar el n´mero k a partir de p y q. }. Se denomina ra´ de un polinomio p(x) a los valores de x tales que p(x) = 0. . este problema puede ser empleado con ´xito para el desarrollo de algoritmos criptogr´ficos e a de llave p´blica. debe poder escribirse u de la forma x3 + ax + b = (x − q)2 (x − r) Demuestre. u 6. a 4. que 4a3 + 27b2 = 0 es condici´n suficiente o o para que e(x) tenga ra´ ıces m´ltiples. Una ra´ es m´ltiple.4. calcule el conjunto p con p = (11. debe existir un n´mero entero k tal que kp = q. Calcule los puntos que pertenecen a la curva el´ ıptica con par´metros a = 100 y b = 010. si el polinomio (pi (x))m divide a p(x). Por ız u lo tanto.. Manuel J. u 2. En el ejemplo de la secci´n 6.4 El Problema de los Logaritmos Discretos en Curvas El´ ıpticas Tomemos un punto p cualquiera de una curva el´ ıptica.80 6. y su multiplicidad es m. En E(GF (n)) y E(GF (2m )) los conjuntos de esta naturaleza deber´n a necesariamente ser finitos. Compruebe geom´tricamente las propiedades asociativa y conmutativa de la suma en e E(R).

Esta representaci´n no es m´s que un caso ´ o a particular (B = 10) de la siguiente expresi´n general: o ∞ n = (−) −∞ ai B i donde los t´rminos con ´ e ındice negativo corresponden a la parte no entera (decimal ) del n´mero u real n.Cap´ ıtulo 7 Aritm´tica Entera de M´ ltiple e u Precisi´n o En este cap´ ıtulo daremos una serie de nociones b´sicas y algoritmos sobre aritm´tica entera a e de m´ltiple precisi´n. dicha representaci´n es unica. Sabemos que. disciplina que ha cobrado un gran inter´s debido al uso extensivo que u o e hacen de ella sobre todo los algoritmos asim´tricos de cifrado y autentificaci´n. Donde cada ai est´ comprendido entre 0 y B − 1. o Todos conocemos la representaci´n tradicional en base 10 de los n´meros reales. Por ejemplo.a−1 . dado el valor de B. y que significa que n o ´ en base B se escribe: (−)an an−1 . . . En este apartado vamos a indicar c´mo representarlos y operar con a o ellos empleando tipos de dato de menor precisi´n. normalmente m´s de los que los tipos de dato convencionales de los lenguajes de programaci´n a o cl´sicos pueden soportar.1415926 a u Manuel J.1 Representaci´n de enteros largos o Llamaremos n´mero largo a aquel que posee gran cantidad de d´ u ıgitos significativos. a0 . . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . en la que o u cada cifra contiene unicamente valores de 0 a 9. el n´mero en base 10 3. e o 7. .

independientemente de la base e u en la que se encuentren representados. o e multiplicaci´n y divisi´n) de enteros largos. resta. n − 1 ci para i = n ci es el acarreo de la suma de los d´ ıgitos inmediatamente anteriores. . prescindiremos del signo y de los t´rminos con sub´ e ındice negativo. En u a cualquier caso. b1 . bn−1 ) se puede definir como: (a + b)i = siendo ci = 0 para i = 0 (ai−1 + bi−1 + ci−1 ) div B para i = 1 . correspondiente a o B = 232 ´ B = 264 ) de forma que no se nos desborde al multiplicar dos cifras.1 Suma La suma de a = (a0 . Para almacenar los resultados parciales de las operaciones aritm´tiu e cas emplearemos un tipo de dato de doble precisi´n (unsigned long int. para que las operaciones elementales entre cifras sean r´pidas. en cuyo caso la suma tendr´ ıa Manuel J. . a1 . y a partir de ahora. o o 7. . . 7. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . para nosotros un n´mero entero largo ser´ un vector de unsigned int. . n (ai + bi + ci ) mod B para i = 0 .2. . . Esta estructura corresponde o u claramente a la de un vector (array). de las u a ´ que importa tanto su valor como su posici´n dentro del n´mero. . an−1 ) y b = (b0 . Tenemos en cuenta el coeficiente n de la suma porque puede haber desbordamiento. nuestro objetivo ser´ estudiar algoritmos eficientes para a efectuar operaciones aritm´ticas sobre este tipo de n´meros.2 Operaciones aritm´ticas sobre enteros largos e Vamos a describir en este apartado c´mo realizar operaciones aritm´ticas (suma.82 corresponder´ a la expresi´n: ıa o 7. puesto que nuestro objetivo es representar unicamente n´meros enteros ´ u positivos. Para representar de forma eficiente enteros largos emplearemos una base que sea potencia de dos (normalmente se escoge B = 216 ´ B = 232 para o que cada cifra de nuestro n´mero se pueda almacenar en un dato del tipo unsigned int sin u desperdiciar ning´n bit). Cualquier n´mero vendr´ representado por una serie unica de coeficientes ai (cifras). a Por todo esto. Normalmente o se escoge una longitud que pueda manejar directamente la ALU (Unidad Aritm´tico-L´gica) e o de la computadora. Aritm´tica Entera de M´ltiple Precisi´n e u o 3 · 100 + 1 · 10−1 + 4 · 10−2 + 1 · 10−3 + 5 · 10−4 + 9 · 10−5 + 2 · 10−6 + 6 · 10−7 En cualquier caso.

N´tese que. de digitos de a.7. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . que puede valer 0 ´ 1 seg´n la resta parcial salga o u positiva o negativa. unsigned acarreo. for (i=0. unsigned acarreo. suma (unsigned *a.2 Resta La resta es muy parecida a la suma. n − 1 ri representa el acarreo de la resta (borrow ). como sigue: ıa. Este no es otro que el algoritmo a ıa cl´sico que todos hemos empleado en la escuela cuando hemos aprendido a sumar. unsigned *d) { unsigned long dif. acarreo=sum/BASE. como a > b. unsigned *s) { unsigned long sum. s[i]=sum%BASE. salvo que en este caso los acarreos se restan.i++) { sum=acarreo+a[i]+b[i]. 7. el ultimo acarreo siempre ha de valer 0. n=max(num. Operaciones aritm´ticas sobre enteros largos e 83 n + 1 d´ ıgitos y su cifra m´s significativa ser´ precisamente cn . Suponiendo que a > b: (a − b)i = (ai − bi − ri ) mod B siendo 0 ri = 1 − (ai−1 − bi−1 − ri−1 + B) div B para i = 0 para i = 1 . . unsigned *b.2.2. n para i = 0 . de digitos de b) acarreo=0. de digitos de b) Manuel J. de digitos de a. a El algoritmo para la suma quedar´ pues. num. o ´ resta (unsigned *a. n=max(num. } s[n]=acarreo. . } El resultado se devuelve en s. unsigned *b. num. .i<n. .

sum. } } 7. unsigned acarreo. Si fuera negativo. Para poder implementar esto primero definiremos una funci´n (summult) que multiplique o b por ai B i y el resultado se lo sume al vector s. d[i]=dif%BASE. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . La raz´n por la que sumamos la base a dif es para que la o resta parcial salga siempre positiva y poder hacer el m´dulo correctamente. int m. unsigned *s) { int k.2.3 Multiplicaci´n o Para obtener el algoritmo del producto emplearemos la expresi´n general de un n´mero o u entero positivo en base B. u 7. for (i=0. Por eso asignamos al nuevo acarreo el valor 1-dif/BASE. for (k=0. Esta comprobaci´n se puede realizar f´cilmente definiendo una funci´n que devuelva o a o el n´mero cuyo d´ u ıgito m´s significativo tenga un n´mero de orden mayor. k++) Manuel J.i++) { dif=a[i]-b[i]-acarreo+BASE. empezando por los m´s significativos hasta que encontrea mos alguno mayor o lleguemos al ultimo d´ ´ ıgito.84 acarreo=0. al sumarle B y dividir por B de nuevo nos queda 1. unsigned long prod. que no tiene necesariamente que estar a cero: summult(unsigned ai. int i.i<n. acarreo=0. un entero largo con un unico d´ ´ ıgito significativo) y despues sumar todos los resultados parciales. En caso de igualdad a u ir´ ıamos comparando d´ ıgito a d´ ıgito. En ese caso. ıa Nos queda comprobar cu´l de los dos n´meros es mayor para poder emplearlo como mia u nuendo. Aritm´tica Entera de M´ltiple Precisi´n e u o El resultado se devuelve en d. Si desarrollamos el producto de dos n´meros cualesquiera a y b de u longitudes m y n respectivamente nos queda: m−1 ab = i=0 ai B i b A la vista de esto podemos descomponer el producto como m llamadas a una funci´n que o multiplica un entero largo por ai B i (es decir. nos saldr´ 0. k<m. unsigned *b. acarreo=1-dif/BASE. situaci´n que unicamente ocurrir´ si los dos o ´ a n´meros son iguales. si el o valor era positivo.

Operaciones aritm´ticas sobre enteros largos e { prod=ai*b[k]+s[i+k]+acarreo.k++) summult(a[k].2.k. s[i+k]=prod%BASE.k++) p[k]=0. A partir de la funci´n que acabamos de definir. unsigned *b. unsigned *p) { int k.k<=m+n. int n. partimos a en dos mitades.b. while (acarreo!=0) { sum=s[k]+acarreo. El truco para que este desarrollo nos proporcione un aumento de eficiencia consiste en hacer uso de la siguiente propiedad: Manuel J. } } 85 La segunda parte de la funci´n se encarga de acumular los posibles acarreos en el vector o s. for (k=0. } k=m+i.int m. llamaremos Bk a B 2 .n. Dicho n´mero puede ser representado mediante la de la siguiente expresi´n: u o a = al B 2 + ar Es decir. for (k=0.p). Tomemos un n´mero entero cualquiera a de k d´ a u ıgitos en base B. Por razones de comodidad.k<m. queda entonces como sigue: o producto(unsigned *a. } El resultado se devuelve en p. Existe otra propiedad de la multiplicaci´n de enteros que nos va a permitir efectuar estas o operaciones de manera m´s eficiente. acarreo=sum/BASE. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Veamos ahora c´mo queda el producto de dos n´meros cualesquiera a y b.7. acarreo=prod/BASE. en funci´n 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. s[k]=sum%BASE. k++.

unsigned *a. b=c. devuelve el numero de bits de los digitos quitando los ceros de la izquierda. unsigned *b) { Calcular a= c div d b= c mod d Bits_Significativos(x) => Siendo x un digito. Como es l´gico. o e a 7. } } Manuel J. m=Bits_Significativos(c). } else Poner_bit_a_0(a. esta t´cnica debe emplearse dentro de una estrategia divide y vencer´s.2. a=0.i). unsigned *d. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .i).b) => Calcula el valor de a elevado a b.x) => Pone a 1 el i-esimo bit de a. pow(a. for (i=m-n.x) => Pone a 0 el i-esimo bit de a. Poner_bit_a_0(a.i>=0. Poner_bit_a_1(a. d1=d1/2. n=Bits_Significativos(d). 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.m-n).i--) { if (b>d1) { Poner_bit_a_1(a. b=b-d1.4 Divisi´n o El algoritmo m´s simple para dividir dos n´meros se consigue a partir de su representaci´n a u o binaria: cociente_bin(unsigned *c.86 7. d1=d*pow(2. Aritm´tica Entera de M´ltiple Precisi´n 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 finalmente.

a = 010−. b = 100101. 3. 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. Esto se consigue multiplicando c y d por 2k . Para que la estimaci´n se quede lo m´s cerca posible del o a valor correcto efectuaremos una normalizaci´n de los n´meros. unsigned *b) { /* Calcular a= c div d Manuel J. unsigned *d.7. 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 normalizaci´n. Nos basaremos en el a a algoritmo tradicional de la divisi´n. y dm es el d´ a ıgito m´s significativo de d). ¯ ¯ ¯ ¯ Finalmente. Si el valor resultante es menor que b. a a o Llamaremos c. iremos calculando cada d´ ıgito del cociente en base B de un solo golpe. 5. b = 001001. Suponiendo que queremos dividir c por d. Luego actualizamos a c con c − dai B i y vamos incrementando ai (y actualizando c) mientras nos quedemos cortos. dividiremos cj B+cj−1 por dm +1 (cj es el d´ o ıgito ¯ ¯ m´s significativo de c en el paso i. a = 0 − −−. 4. unsigned *a. obteniendo su o cociente (a) y resto (b). d1 = 111. d a los valores de c y d normalizados. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . d1 = 111000. se lo restamos y ponemos a 1 el bit correspondiente de a. de forma que el d´ o u ıgito m´s a significativo d tenga su bit de mayor peso a 1. Operaciones aritm´ticas 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. ¯ ¯ ¯ Para hacer la estimaci´n a la baja de los ai . dividiremos 37 (100101) entre 7 (111): 1. d1 = 11100. Repitiendo esta operaci´n sucesivamente se obtiene el cociente en a y el resto en b. siendo k el n´mero de ceros a la izquierda del bit m´s significativo del divisor d. d1 = 110. habremos calculado el valor del cociente (a) y el valor del resto ser´ a ¯ b 2k a = − − −−. b = 001001. Nuestro objetivo ser´ estimar a la baja el valor de cada uno de los d´ a ıgitos a.2. ya que opera a nivel de bit. b = 100101. 2. por lo que intentaremos encontrar otro m´s r´pido —aunque con el mismo orden de eficiencia—. b = 010 Este algoritmo resulta muy lento. a = 01 − −. e incrementarlo hasta alcanzar el valor correcto. A modo o de ejemplo.

/* Garantizar que cc tiene */ /* exactamente un digito */ /* mas que c */ t=Digito_Mas_Significativo(dd).88 b= c mod d 7. Aritm´tica Entera de M´ltiple Precisi´n e u o Digito_Mas_Significativo(a) => Devuelve el valor del digito de mayor peso de a. else ai=(cc[i+Digitos(dd)]*B+cc[i+Digitos(dd)-1])/(t+1). factor=pow(2.b) => Calcula el valor de a elevado a b. Bits_Significativos(x) => Siendo x un digito. cc=c*factor. /* Desplazamos d hasta que su digito mas significativo tenga su bit de mayor peso a 1 (di>=B/2) */ dd=d*factor. if (Digitos(cc)==Digitos(c)) Poner_Un_Cero_A_La_Izquierda(cc). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . i>=0. */ despl=Num_bits_digito-Bits_significativos(Digito_Mas_Significativo(d)). /* Ya hemos normalizado.despl). for (i=Digitos(c)-Digitos(dd). devuelve el numero de bits de los digitos quitando los ceros de la izquierda. pero el resto habra luego que dividirlo por factor */ Poner_a_cero(a). /* La estimacion es el cociente entre los dos primeros digitos de cc y t+1 */ Manuel J. 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)]. pow(a. El cociente que obtengamos seguira siendo valido.

7.3.. c = 3F BA2. */ { ai++. Empleando los algoritmos del apartado 7.2 son inmediatas las operaciones de suma. } b=cc/factor. de cc. ¯ ¯ ¯ 3. vamos a ver que no es tan complicado siguiendo su funcionamiento para un ejemplo concreto. c = c − a0 d = 6E4 − 6A8 = 3C ¯ ¯ Puesto que c < d = 8E. b = c ¯ 2 = 1E 7. ¯ ¯ ¯ 4.. d = 8E o ¯ ¯ 2. y d = 47: ¯ 1. La divisi´n habremos de tratarla o o o de manera diferente. /* Restar a cc */ 89 while (cc[i+Digitos(dd)] || /* Si no se ha hecho cero el digito mas sign. a2 = 7F div 9 = E. tampoco hay que incrementar a0 ¯ ¯ 5. */ mayor(cc. /* Hemos de aumentar la estimacion */ cc=cc-dd*pow(B. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Manuel J. con B = 16. no hay que incrementar a1 . c = c − a1 dB = 3344 − 2C60 = 6E4 ¯ ¯ Puesto que c < dB = 8E0. a1 = 33 div 9 = 5.i).dd*pow(B. /* 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.i). Aritm´tica modular con enteros largos e cc=cc-ai*dd*pow(B. resta y multiplicaci´n m´dulo n. c = c − a2 dB 2 = 7F 744 − 7C400 = 3344 ¯ ¯ Puesto que c < dB 2 = 8E00.3 Aritm´tica modular con enteros largos e Los algoritmos criptogr´ficos de llave p´blica m´s extendidos se basan en operaciones a u a modulares sobre enteros muy largos. Normalizaci´n: multiplicamos por 2 y nos queda c = 7F 744. } a[i]=ai. no hay que incrementar a2 . a = E5C.i))) /* o si cc es mayor o igual que dd*B^i. a0 = 6E div 9 = C.

90 7. d = 234. o • El producto se lleva a cabo multiplicando los factores y tomando el resto de dividir el resultado por el m´dulo. a 4. e 3. Elabore la especificaci´n de una Estructura de Datos que permita almacenar n´meros o u enteros largos y defina sus primitivas b´sicas. Efect´e el trazado del algoritmo de la divisi´n con B = 8 para calcular el siguiente u o cociente: c = 35240. si el resultado u o es mayor que n. Proponga una especificaci´n para la estructura del ejercicio anterior y discuta su eficieno cia. sustituyendo las operaciones elementales por llamadas a las operaciones con enteros largos descritas en la secci´n 7. restar el m´dulo. Para calcular la inversa de un n´mero m´dulo n basta con emplear el Algoritu o mo Extendido de Euclides. Manuel J. o 7. restarle el sustraendo. La t´cnica divide y vencer´s se basa en subdividir el problema y aplicar recursivamente e a el algoritmo en cuesti´n hasta llegar a un umbral m´ o ınimo. o • Para restar basta con sumar el m´dulo n al minuendo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 2. Implemente el algoritmo de la multplicaci´n mediante esta a o t´cnica y calcule su umbral correspondiente. a partir del cual la t´cnica e no recursiva es m´s eficiente.2. y si el o resultado es mayor que n. restar el m´dulo. o • La divisi´n habremos de implementarla multiplicando el dividendo por la inversa del o divisor.4 Ejercicios Propuestos 1. Aritm´tica Entera de M´ltiple Precisi´n e u o • Para sumar dos n´meros m´dulo n basta con efectuar su suma entera y.

debido a su mayor orden de complejidad. esto es. puesto que estas m´quinas son —al menos en teor´ a ıa— completamente Manuel J. La unica manera de que estas claves sean seguras es que no exista ning´n tipo e ´ u de dependencia entre una clave y la siguiente. son totalmente previsibles.Cap´ ıtulo 8 Criptograf´ y N´ meros Aleatorios ıa u Los algoritmos de llave p´blica. Si bien las series que producen estos generadores superan los test estad´ ısticos de aleatoriedad.1. ´ a 8. as´ como ı su inter´s en Criptograf´ Tambi´n veremos c´mo implementar un buen generador aleatorio e ıa. e o util desde el punto de vista criptogr´fico. e o que ser´ diferente cada vez. Un famoso ejemplo de este problema ocurri´ en una de las primeras a o versiones de Netscape. Es la clave de sesi´n la que se codifica empleando criptograf´ a o ıa asim´trica. En este cap´ ıtulo vamos a caracterizar diferentes tipos de secuencias aleatorias.1 8. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . y esa condici´n es inadmisible para o aplicaciones criptogr´ficas. suelen ser emu pleados en conjunci´n con algoritmos de llave privada de la siguiente forma (ver cap´ o ıtulo 12): el mensaje primero se codifica empleando un algoritmo sim´trico y la llamada clave de sesi´n. que puede ser consultado en casi cualquier libro de Estad´ ıstica—.1 Tipos de Secuencias Aleatorias Secuencias pseudoaleatorias En realidad es casi del todo imposible generar secuencias aut´nticamente aleatorias en e una computadora. puesto que conociendo un n´mero 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—. que sean aleatorias. Los generadores tradicionales no nos permiten calcular secuencias realmente aleatorias. que resultaba insegura debido al uso de un generador pseudoaleatorio demasiado previsible. Seguro que el lector conoce generadores pseudoaleatorios y diferentes tests de aleatoriedad —como el denominado test ψ 2 . De aqu´ surge el ı inter´s por los n´meros aleatorios en Criptograf´ e u ıa.

lo cual nos permite conocer toda la serie a partir de un unico valor. En Un generador congruencial lineal opera seg´n la expresi´n an+1 = (an b + c) mod m. Todos los generadores pseudoaleatorios producen secuencias finitas y peri´dicas o de n´meros empleando operaciones aritm´ticas y/o l´gicas. Si un atacante lograra averiguar la semilla que estamos empleando en un momento dado. Supongamos ´ que tenemos un sistema que se basa en emplear claves aleatorias para cada sesi´n y usamos o un generador de este tipo. e 8. o Necesitamos. Esto quiea re decir que debe ser computacionalmente intratable el problema de averiguar el siguiente n´mero de la secuencia. teniendo total conocimiento acerca de todos los n´meros anteu u riores y del algoritmo de generaci´n empleado.92 8. ha de cumplir la propiedad de ser impredecible. a 1 Manuel J. Necesitamos ıa para ella valores realmente impredecibles. por tanto: ıa. Criptograf´ y N´meros Aleatorios ıa u deterministas. e n 8. En realidad se puede decir que no existen en el Universo sucesos cien por cien aleatorios. Incluso se ha demostrado que conociendo unicamente un bit de cada valor de la secuencia. podr´ de nuevo comprometer nuestro sistema.3 Secuencias totalmente aleatorias Como ya se ha dicho antes. pero en Criptograf´ ser´ del ıa a todo in´til. no existe la aleatoriedad cuando se habla de computadoras. En este sentido podr´ ıamos hablar de: • Secuencias estad´ ısticamente aleatorias: Secuencias que superan los tests estad´ ısticos de aleatoriedad. de forma que nuestro adversario no pueda averiguarlos ni tratar de simular el proceso de generaci´n que nosotros hemos llevado a cabo. Sin embargo no son suficientes para nuestros prop´sitos.1. o Existen generadores pseudoaleatorios criptogr´ficamente resistentes que cumplen esta proa piedad. debido a que cada valor de la secuencia se emplea como semilla para calcular el u siguiente.2 Secuencias criptogr´ficamente aleatorias a El problema de las secuencias estad´ ısticamente aleatorias.1. • Secuencias criptogr´ficamente aleatorias: Para que una secuencia pseudoaleatoria sea a criptogr´ficamente aleatoria. pues. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . debido a que se necesita una o semilla para inicializar el generador. y lo que las hace poco utiles en ´ Criptograf´ es que son completamente predecibles. valores aut´nticamente aleatorios. Definiremos. donde a0 es la semilla u o pseudoaleatoria y b. Un generador congruencial lineal1 cumple esta propiedad. Lo unico que podremos conseguir u e o ´ es que estas secuencias sean lo m´s largas posible antes de comenzar a repetirse y que superen a los tests estad´ ısticos de aleatoriedad. c y m son los par´metros del generador. ´ ´sta puede ser recuperada completamente con una cantidad relativamente peque˜a de valores. Bastar´ con que una de las claves quedara comprometida para ıa que todas las comunicaciones —pasadas y futuras— pudieran ser descifradas sin problemas.

y despu´s nos centraremos en los generadores criptogr´ficamente aleatorios propiamente dichos. En la actualidad apenas hay computadores que incorporen hardware espec´ ıfico para esta tarea. aunque existe y ser´ bastante barato y sencillo ıa incorporarlo a la arquitectura de cualquier ordenador. 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 fiable. por lo que hemos de tener mucho cuidado con esto. o poseen elementos menos deterministas que pueden ser utiles para nuestros prop´sitos. 8.8.1 Obtenci´n de Bits Aleatorios o Como hemos dicho antes. y a efectos pr´cticos. pues. Parece razonable que leer en un momento dado el valor de un reloj interno de alta precisi´n proporcione un resultado m´s o menos impredecible.2 Generaci´n de Secuencias Aleatorias Criptogr´ficamente o a V´lidas a Para poder obtener secuencias a la vez impredecibles e irreproducibles. ´ 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. los ordenadores. Sin embargo. dejan de servir en otras versiones del mismo sistema o en arquitecturas muy similares.2. por lo que o a podr´ ıamos emplearlo para recolectar valores aleatorios. Comentaremos en primer lugar algunos mecanismos para obtener los bits de la semilla. Llegados a este punto parece claro que nuestro objetivo no va a ser generar secuencias aleatorias puras. Un o esquema de este tipo ser´ seguro siempre que se salvaguarde adecuadamente la semilla empleaa da. haremos uso de generadores de secuencias criptogr´ficamente aleatorias. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Ser´ suficiente. como veremos a continuaci´n. e a 8. que pueden ser utiles en ciertas arquitecturas y ´ sistemas operativos. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a 93 cualquier caso. Existen valores obtenidos del hardware de la computadora que suelen proporcionar algunos bits de aleatoriedad. las operaciones aritm´ticas y l´gicas que realiza una computadora e o son completamente deterministas. sino m´s bien secuencias impredecibles e irreproducibles.2. Diferentes pruebas han demostrado sin embargo que mecanismos de este tipo. pero recordemos que estos n´meros tienen una estructura muy u Manuel J. en conjunci´n con alg´n mecanismo a o u de recolecci´n de bits aleatorios. a a con emplear un generador criptogr´ficamente aleatorio alimentado por una semilla totalmente a aleatoria. que nos va a permitir inicializar la semilla del generador. Algunas veces se ha propuesto el uso de los n´meros de serie de los componentes f´ u ısicos (hardware) de un sistema.

o • Unidades de Disco. Un dispositivo digitalizador de audio (o v´ ıdeo) sin ninguna entrada conectada. con una distribuci´n aleatoria. Tampoco son utiles las fuentes p´blicas de informaci´n. como por ejemplo los bits de un ´ u o CD de audio. Teniendo en cuenta que el n´mero de bits realmente aleatorios que se obtendr´n o u a como resultado final del proceso ha de ser necesariamente menor que el n´mero de bits recogido u inicialmente. Esto garantizar´ que en total se ha recogido una cantidad a suficiente de bits realmente aleatorios. podr´ o ıamos leer el reloj del sistema. Si no se dispone de una fuente fiable de bits aleatorios se puede efectuar la combinaci´n o de varias fuentes de informaci´n menos fiables. Un algoritmo sim´trico de cifrado puede ser e util como funci´n de mezcla de la siguiente forma: supongamos que usa una clave de n ´ o Manuel J. Criptograf´ y N´meros Aleatorios ıa u r´ ıgida. capta esencialmente ruido t´rmico. se pueden obtener bits aleatorios o de la calidad necesaria. y por lo tanto puede ser apto para e o nuestros prop´sitos. o Por t´rmino medio. hemos de buscar un mecanismo para llevar a cabo esa combinaci´n. etc. Podemos emplear diferentes algoritmos criptogr´ficos para construir este a tipo de funciones: • Algoritmos Sim´tricos (ver cap´ e ıtulo 10). y a veces conociendo simplemente el fabricante y la fecha aproximada de fabricaci´n o podemos adivinar casi todos sus d´ ıgitos. podemos emplear algunos dispositivos hardware relativamente comunes en los ordenadores actuales: • Tarjetas digitalizadoras de sonido o v´ ıdeo. alg´n identificador del hardware. Por ejemplo. Las unidades de disco presentan peque˜as fluctuaciones en su velon cidad de giro debido a turbulencias en el aire.94 8. la fecha y la hora locales. Emplearemos o a tal efecto las denominadas funciones de mezcla fuertes. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . modificar un bit en la entrada deber´ alterar aproximadamente la mitad e ıa de los bits de salida. por lo que van a ser demasiado predecibles. con lo que el unico resto ´ de aleatoriedad que nos va a quedar es la posici´n que escojamos dentro del CD para extraer o los bits. puesto que nuestros atacantes pueden disponer de ellas. Una funci´n de mezcla es aquella que toma dos o m´s fuentes de informaci´n y produce o a o una salida en la que cada bit es una funci´n compleja y no lineal de todos los bits de la entrada. el estado de los registros u de interrupciones del sistema. Fuentes Adecuadas de Obtenci´n de Bits Aleatorios o Cuando no disponemos de un elemento f´ ısico en la computadora espec´ ıficamente dise˜ado n para producir datos aleatorios. Si se dispone de un m´todo para medir el e tiempo de acceso de la unidad con suficiente precisi´n. La mezcla de todas esas fuentes puede proporcionarnos suficiente aleatoriedad para nuestros prop´sitos. siempre que tenga ganancia suficiente.

u 8. luego las probabilidades que tenemos para los bits de la secuencia son: p = 0. con un sesgo arbitrario. As´ por ejemplo. si una secuencia de bits tiene p = 0.2 Eliminaci´n del Sesgo o En la mayor´ de los casos.5 − d donde p es la probabilidad para el 1 y q es la probabilidad para el 0.5 + d q = 0. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a 95 bits.01 y q = 0. podemos codificar m bits usando como clave los n restantes.001. Puesto que p + q = 1 y p − q = 2d. por lo que bastar´ con a a log2 (2d) coger esos n bits.8. e Bits de Paridad Si tenemos una secuencia de valores cero y uno. basta con coger la paridad de cada 308 bits para obtener un bit con sesgo inferior a 0. ıa a es decir. si usamos DES. El bit de paridad de una secuencia vale 1 si el n´mero de unos de dicha secuencia es par (paridad impar) u o impar (paridad par). supongamos que d es el sesgo. Una funci´n resumen puede ser empleada para o o obtener un n´mero fijo de bits a partir de una cantidad arbitraria de bits de entrada. y as´ obtener como salida un bloque de m bits con mejor aleatoriedad. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . podemos emplear el bit de paridad2 de la secuencia para obtener una distribuci´n con una desviaci´n tan peque˜a o o n como queramos. ı ı.2.2. 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 . y que tanto su entrada como su salida son bloques de m bits. Esta situaci´n no es deseable. puesto que a o necesitamos una fuente aleatoria no sesgada. • Funciones Resumen (ver secci´n 13. 2 Manuel J. que hay m´s unos que ceros o viceversa. Por ejemplo. 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. Si disponemos de n + m bits inicialmente.1) . esta circunstancia no constituye un problema o serio. Para comprobarlo. los bits obtenidos de las fuentes aleatorias est´n sesgados.99. Como veremos a continuaci´n. ya que existen diversas t´cnicas para solucionarla. podemos reducir a 64 bits un bloque de 120. que presente igual probabilidad tanto para el 0 como para el 1.

Es f´cil comprobar que.0.1.3 Generadores Aleatorios Criptogr´ficamente Seguros a Suponiendo que ya tenemos una cantidad suficiente de bits aut´nticamente aleatorios (ime predecibles e irreproducibles). Criptograf´ y N´meros Aleatorios ıa u El m´todo 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.96 M´todo de Von Neumann e 8. p´gina 40). permite.10. Veamos un ejemplo: sea una secuencia de 300 bits con una probabilidad P (1) = 0.10. Eliminamos los pares 00 y 11.99) − 0. El algoritmo e para obtener cada uno de los valores gn de la secuencia es el siguiente: Manuel J.2. Por ejemplo.01) = 0.10.10.01.11 dar´ ıa lugar a 1.5 − d) por lo que la cadena de bits resultantes presenta exactamente la misma probabilidad tanto para el 0 como para el 1.1. a 8. a Generador X9. siendo d el sesgo de la distribuci´n inicial a o P (01) = P (10) = (0.99. la serie 00.01. a partir de a una semilla inicial s0 de 64 bits. Podea o mos calcular la firma MD5 o SHA de dicha secuencia y considerar los 24 bits menos significativos del resultado como bits aleatorios v´lidos.99 log2 (0.10. o o Uso de Funciones Resumen Si calculamos la entrop´ de una secuencia sesgada (ecuaci´n 3. Entonces podremos aplicar una u o funci´n resumen y quedarnos exactamente con los n bits menos significativos del resultado o obtenido.1.2.08079 24 bits de informaci´n real.08079 bits Luego los 300 bits originales aportar´n 300 × 0. La entrop´ de cada bit ser´ ıa a H = −0. El problema de este m´todo es que no sabemos a priori cu´ntos bits e a de informaci´n sesgada necesitamos para obtener cada bit de informaci´n no sesgada. obtendremos ıa o a el n´mero n de bits reales de informaci´n que transporta.01 log2 (0.17 Propuesto por el Instituto Nacional de Est´ndares Norteamericano.5 + d)(0.1. e interpretamos 01 como 0 y 10 como 1.0. obtener secuencias de valores tambi´n de 64 bits. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . vamos a ver un par de generadores pseudoaleatorios que permiten obtener secuencias lo suficientemente seguras como para ser empleadas en aplicaciones criptogr´ficas.

De hecho.17—. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a 97 gn = DES(k. t) ⊕ sn ) sn+1 = DES(k. p y q. DES(k. Al contrario que x. Escogemos un n´mero x aleatorio primo relativo con n. DES(k. Consiste en escoger dos n´meros primos grandes. u Calculamos los valores si de la serie de la siguiente forma: s0 = (x2 )(mod n) si+1 = (s2 )(mod n) i Hay que tener cuidado de emplear unicamente como salida unos pocos de los bits menos ´ significativos de cada si .2. a 8. t) ⊕ gn ) donde k es una clave aleatoria reservada para la generaci´n de cada secuencia. que debe ser mantenido en secreto. que ser´ nuestra u a semilla inicial. y t es el tiempo o en el que cada valor es generado —cuanta m´s resoluci´n tenga (hasta 64 bits). mejor—. y ⊕ representa la funci´n or-exclusivo. M ) representa la codificaci´n de M mediante el algoritmo DES. Manuel J.4 Generador Blum Blum Shub Es quiz´ el algoritmo que m´s pruebas de resistencia ha superado. n puede ser p´blico.8. empleando la clave o K.2. que cumplan la siguiente u propiedad: p ≡ 3(mod 4) q ≡ 3(mod 4) Sea entonces n = pq. N´tese que el valor k ha de ser mantenido en secreto o o para que la seguridad de este generador sea m´xima. a o DES(K. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . con la ventaja adicional a a de su gran simplicidad —aunque es computacionalmente mucho m´s costoso que el algoritmo a X9. si cogemos no m´s 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.

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Criptograf´ y N´meros Aleatorios ıa u Manuel J.98 8.

Parte III Criptograf´ de Llave Privada ıa Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

.

a la Roma Imperial. debido a que son f´cilmente criptoanalizables empleando cualquier computadora a dom´stica. pero que fueron empleados con ´xito hasta principios del siglo XX. Leonardo Da Vinci escrib´ las anotaciones sobre sus trabajos de derecha a izquierda y con la mano zurda. como el algoritmo de C´sar. con la ayuda de las computadoras. Estas t´cnicas tienen en com´n que e u pueden ser empleadas usando simplemente l´piz y papel. Algunos se e e remontan incluso. e a Todos los algoritmos criptogr´ficos cl´sicos son sim´tricos. y ha buscado mecanismos para mantenerlos fuera del alcance de miradas indiscretas. a ı o lo que es lo mismo. 9. ıa Otros personajes. Sin embargo mantienen e Manuel J. llamada ENIGMA. ya que hasta mediados de los a a e a˜os setenta no naci´ la Criptograf´ asim´trica. y por esa raz´n este cap´ n o ıa e o ıtulo se engloba dentro del bloque de la asignatura dedicado a los algoritmos de llave privada. En este cap´ ıtulo haremos un breve repaso de los mecanismos criptogr´ficos considerados a cl´sicos. por lo que cayeron r´pidamente en desuso. al nacimiento de las computadoras. los mensajes cifrados empleando estos c´digos son f´cilmente descifrables.1 Algoritmos Cl´sicos de Cifrado a Estudiaremos en esta secci´n algunos criptosistemas que en la actualidad han perdido o su eficacia. o a a La transici´n desde la Criptograf´ cl´sica a la moderna se da precisamente durante la II o ıa a Guerra Mundial. que en muchas ocasiones constitu´ un apasionante divertimento o a ıan y un reto para el ingenio. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Julio C´sar empleaba un sencillo e algoritmo para evitar que sus comunicaciones militares fueran incerceptadas. y que pueden ser criptoanalizadas a casi de la misma forma.Cap´ ıtulo 9 Criptograf´ Cl´sica ıa a El ser humano siempre ha tenido secretos de muy diversa ´ ındole. De hecho. Podemos llamar as´ a todos los sistemas de cifrado anteriores a la II Guerra Mundial. cuando el Servicio de Inteligencia aliado rompe la m´quina de cifrado del a ej´rcito alem´n. como Sir Francis Bacon o Edgar Allan Poe eran conocidos por su afici´n a o los c´digos criptogr´ficos.

Manuel J. esta correspondencia se mantiene a lo largo de todo el mensaje. llamado as´ porque es el que empleaba Julio C´sar para enviar e ı e mensajes secretos. 9. 3). y consideramos un ı u alfabeto de 26 letras. sin desordenar a los s´ ımbolos dentro del mensaje. siendo a e o la clave k precisamente la tabla de sustituci´n de un s´ o ımbolo por otro. La sustituci´n ahora es arbitraria. Algoritmo de C´sar e El algoritmo de C´sar. y u as´ sucesivamente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . Criptograf´ Cl´sica ıa a un inter´s te´rico.102 9. Consiste en sumar 3 a a al n´mero de orden de cada letra. Obviamente. a la B la E. Es decir. para descifrar basta con restar 3 al n´mero de orden de las letras del u criptograma.1 Cifrados Monoalfab´ticos e Se engloban dentro de este apartado todos los algoritmos criptogr´ficos que. Sustituci´n Af´ o ın Es el caso general del algoritmo de C´sar.b) (M ) = (aM + b) mod N siendo a y b dos n´meros enteros menores que el cardinal N del alfabeto.B = 1. N ) = 1. es uno de los algoritmos criptogr´ficos m´s simples. Si asignamos a cada letra un n´mero (A = 0. ya que nos van a permitir explotar algunas de sus propiedades para entender e o mejor los algoritmos modernos. la transformaci´n criptogr´fica ser´ o a ıa: C = (M + 3) mod 26 obs´rvese que este algoritmo ni siquiera posee clave.1. La clave de cifrado k viene entonces dada por el par (a. y cumpliendo que u mcd(a. El algoritmo de C´sar ser´ pues una transformaci´n af´ con k = (1. e a o ın Cifrado Monoalfab´tico General e Es el caso m´s general de cifrado monoalfab´tico. En este caso tenemos N ! posibles claves. Su transformaci´n ser´ e o ıa: E(a. . establecen una correspondencia unica para todos ellos en todo ´ el texto. si al s´ ımbolo A le corresponde el s´ ımbolo D. De esta forma a la A le corresponde la D. puesto que la transformaci´n siempre es e o la misma. b). ).

e e a puesto que las propiedades estad´ ısticas del texto claro se conservan en el criptograma. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . En casos m´s restringidos. podremos averiguar f´cilmente a a la clave.1) donde D es la redundancia del lenguaje empleado en el mensaje original. e Cifrado de Vig`nere e Es un ejemplo t´ ıpico de cifrado polialfab´tico que debe su nombre a Blaise de Vig`nere. k1 . la letra que m´s aparece en Castellano es la A. . Algoritmos Cl´sicos de Cifrado a Criptoan´lisis de los M´todos de Cifrado Monoalfab´ticos a e e 103 El cifrado monoalfab´tico constituye la familia de m´todos m´s simple de criptoanalizar. a u a el emparejamiento de todos los s´ ımbolos debe responder a alguna combinaci´n de coeficientes o (a. por ejemplo.9. Manuel J. La clave est´ constituida por una secuencia de s´ a ımbolos K = {k0 . b). cuando tenemos un emparejamiento arbitrario. la Distancia de Unicidad de Shannon que obtenemos es: H(K) log2 (N !) = D D S= (9. y que emplea la siguiente funci´n de cifrado: o Ek (mi ) = mi + k(i mod d) (mod n) siendo mi el i−´simo s´ e ımbolo del texto claro y n el cardinal del alfabeto de entrada. En el peor de los casos. Supongamos que.1.2 Cifrados Polialfab´ticos e En los cifrados polialfab´ticos la sustituci´n aplicada a cada car´cter var´ en funci´n de la e o a ıa o posici´n que ocupe ´ste dentro del texto claro. y que data del siglo XVI. es decir. suponemos que las N ! claves diferentes son o equiprobables en principio. Parece l´gico que la a o letra m´s frecuente en el texto codificado sea aquella que corresponde con la A. En realidad corresponde a la apliaci´n c´ o e o ıclica de n cifrados monoalfab´ticos. . Como es l´gico. y N es el n´mero u de s´ ımbolos de dicho lenguaje.1. puesto que a ın. 9. como el af´ el criptoan´lisis es a´n m´s simple. Emparejando a las frecuencias relativas de aparici´n 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. kd−1 }. e e su creador.

y dar a ıa como texto cifrado los s´ ımbolos de una columna —ordenados de arriba a abajo— concatenados Manuel J. A diferencia de lo que se puede pensar en un principio. por desgracia. para el criptoan´lisis. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . El texto se escrib´ a lo largo del bast´n y s´lo pod´ ser le´ si se dispon´ de otro e ıa o o ıa ıdo ıa bast´n de dimensiones similares. informaci´n de la o que. {a. e e 9. 9. b. sino que cambia su orden dentro del texto. este m´todo presenta demasiados inconvenientes para ser util en la pr´ctica: adem´s del proe ´ a a blema de necesitar un alfabeto de salida mayor que el de entrada. d}. Un mecanismo de transposici´n sencillo. γ.1. Supongamos adem´s que en nuestros textos la letra a aparece con una probabilidad 0.3 Cifrados por Sustituci´n Homof´nica o o Para paliar la sensibilidad frente a ataques basados en el estudio de las frecuencias de aparici´n de los s´ o ımbolos.104 Criptoan´lisis a 9. c. Criptograf´ Cl´sica ıa a Para criptoanalizar este tipo de claves basta con efectuar d an´lisis estad´ a ısticos independientes agrupando los s´ ımbolos seg´n la ki empleada para codificarlos. no siempre se dispone. Podr´ ıamos emplear el siguiente alfabeto de salida {α. necesitaremos al menos d veces m´s cantidad de texto que a a con los m´todos monoalfab´ticos. β. que no precisa otra o o cosa que l´piz y papel. Quiz´s el m´s antiguo conocido sea el escitalo. Para estimar d.4. podr´ consistir en colocar el texto en una tabla de n columnas.1. formado por un a a bast´n cil´ o ındrico con un radio particular y una tira de piel que se enrollaba alrededor de aqu´l. existe una familia de algoritmos que trata de ocultar las propiedades estad´ ısticas del texto claro empleando un alfabeto de salida con m´s s´ a ımbolos que el alfabeto de entrada. para aplicarlo hace falta conocer la distribuci´n estad´ o ıstica a priori de los s´ ımbolos en el texto claro. y el resto con a probabilidad 0. } efectuando la siguiente asociaci´n: 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.4 Cifrados de Transposici´n o Este tipo de mecanismos de cifrado no sustituye unos s´ ımbolos por otros. δ. Supongamos que nuestro alfabeto de entrada posee cuatro letras. u buscaremos la periodicidad de los patrones comunes que puedan aparecer en el texto cifrado. Obviamente. lo que imposibilita un ataque basado en frecuencias.2.

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 m´s frecuentes en Castellano. Se trataba de un instrumento n de apariencia simple. desconocemos n. La M´quina ENIGMA a a En el a˜o 1923. N´tese que hemos de conservar el espacio al o principio del texto cifrado para que el mecanismo surta efecto. 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 concatenaci´n de las columnas 3. etc. 4} como clave. El destinatario copiaba dichas letras en su propia m´quina y el mensaje original a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .2 M´quinas de Rotores. 9. supongamos que queremos cifrar el texto “El perro de San Roque no tiene rabo”. Este m´todo es bastante complejo de llevar a cabo manualmente.2. que en nuestro es igual a 5.9.5. basta con ir probando con n = 2. 1. M´quinas de Rotores. Criptoan´lisis a Este tipo de mecanismos de cifrado se puede criptoanalizar efectuando un estudio estad´ ıstico sobre la frecuencia de aparici´n de pares y tripletas de s´ o ımbolos en el lenguaje en que est´ escrito el texto claro. La M´quina ENIGMA a a 105 con los de otra. pero una computadora puede completarlo en un tiempo m´s que a razonable sin demasiados problemas. a Si. por el contrario. a no ser que e se empleen ciertos trucos. Suponiendo que conocemos n. un ingeniero alem´n llamado Arthur Scherbius patent´ una m´quina esn a o a pec´ ıficamente dise˜ada para facilitar las comunicaciones seguras. De esa forma podremos asignarle una a probabilidad autom´ticamente a cada una de las posibles claves. La clave k se compondr´ del n´mero n junto con el orden en el que se ıa u deben leer las columnas.2. con n = 5 y la permutaci´n {3. 2. 5. e tenemos 5! = 120 posibles claves. parecido a una m´quina de escribir. Quien deseara codificar un mensaje a s´lo ten´ que teclearlo y las letras correspondientes al mensaje cifrado se ir´ iluminando o ıa ıan en un panel. Por ejemplo.1 y 4 respectivao mente: “ Osonealr r irednu eoere et p aqonb”. n = 3 y as´ suı cesivamente.

a aparec´ de nuevo.1: Esquema de la m´quina Enigma. que la utiliz´ de forma intensiva o o e a o a lo largo de la II Guerra Mundial. El ı reflector no exist´ en los primeros modelos. presentaba una serie de ıa debilidades.106 9. llamada ENIGMA. Adem´s se le aplicaron varias mejoras. que fueron n aprovechadas por el ej´rcito aliado. llamado Stecker.2. hacer que los rotores n o fueran intercambiables —se pod´ elegir y colocar en cualquier orden tres de entre cinco ıan disponibles—. o el segundo avanza cuando el anterior ha dado una vuelta completa y as´ sucesivamente. tanto en su dise˜o como en los mecanismos empleados para utilizarla. o u Aunque ENIGMA parec´ virtualmente imposible de romper. Criptograf´ Cl´sica ıa a Figura 9. se introdujo posteriormente para permitir que la ıa misma m´quina sirviera tanto para cifrar como para descifrar. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . a de forma que con cada pulsaci´n del teclado. e incluso se ampli´ el n´mero de rotores a cuatro. como incluir a un peque˜o sistema previo de permutaci´n de letras. la posici´n de ´stos determina cu´l es la letra o o e a que se ha de iluminar. La clave la constitu´ las posiciones iniciales de tres tambores o rotores ıa ıan que el ingenio pose´ en su parte frontal.1 podemos apreciar un esquema de esta m´quina. Cada vez que se pulsa una tecla el primer rotor avanza una posici´n. como veremos posteriormente.1 Un poco de Historia ENIGMA pronto llam´ la atenci´n del ej´rcito alem´n. Los a rotores no son m´s que tambores con contactos en su superficie y cableados en su interior. a 9. El primero en conseguir avances significativos fue el servicio e Manuel J. ıa En la figura 9.

y los espa˜oles a Africa. y posteriormente instalarse en Montpellier. donde se n o n perdi´ definitivamente su pista. n ıa. donde reanudaron sus trabajos. o o En 1938 Alemania cambi´ el protocolo. No vamos a entrar en a ıan detalles. y se le confiaron unicamente trabajos menores. En su desarrollo particip´ tambi´n Max Von Neumann. Sin embargo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Se construy´ un aparato que permit´ o ıa descifrar los mensajes. Tras destruir todas las pruebas o que pudieran indicar al ej´rcito alem´n el ´xito polaco frente a ENIGMA. despert´ el correo ordinario o inter´s del servicio secreto. transportando lo que pudieron salvar en varios camiones. e Manuel J. en el marco del a a proyecto ULTRA brit´nico. e a colocar los rotores al principio de cada mensaje. En realidad se estaba introduciendo una redundancia tal en el mensaje que permit´ ıa obtener sin demasiados problemas la clave empleada. Polonia simplemente carec´ de medios econ´micos para afrontar su construcci´n. liderados por un tal Camaz´n. o Cuando el equipo de Rejewski lleg´ por fin a Inglaterra. o o al haber estado en contacto con el enemigo. a n El conocimiento preciso de la m´quina permiti´ a un equipo de tres matem´ticos (Marian a o a Rejewski. Dicho protocolo consist´ en escoger una ıa posici´n de un libro de claves. Tras o pasar por Ruman´ e Italia. y tener que quemar todos los camiones por el camino excepto uno. el equipo de Ree a e jewski huy´ precipitadamente. que dispuso de un fin de semana entero para desmontar. para evitar posibles o errores. Se construy´ entonces o o una versi´n mejorada del cicl´metro. aunque b´sicamente se segu´ enviando tres letras repetidas. analizar e y volver a empaquetar cuidadosamente la m´quina antes de devolverla a sus due˜os el lunes. ´ Mientras tanto. ıa llegaron a Par´ donde colaboraron con un equipo de siete espa˜oles expertos en criptograf´ ıs. pero el ataque se basaba en buscar ordenaciones de los rotores que llevaran dos letras consecutivas iguales a la misma letra. los polacos a Espa˜a (donde muri´ Rozycki). Estas configuraciones especiales daban una informaci´n o vital sobre la posici´n inicial de los rotores para un mensaje concreto. esperando poder establecer una v´ de colaboraci´n para seguir descifrando los ıa o mensajes germanos. Al ser reclamado urgentemente por las autoridades alemanas. es vista por muchos como una simple invenci´n de aquellos que se ıa o empe˜an en minusvalorar las habilidades criptoanal´ n ıticas de los matem´ticos polacos. la entrada alemana en Vichy forz´ a los matem´ticos a escapar o a de nuevo. m´s evolucionada y r´pida que su antecesora. a finales de ese mismo a˜o se introdujeron dos a n rotores adicionales. Alan Turing desarrollaba una segunda Bomba bas´ndose a en los estudios del polaco. lo cual oblig´ a los matem´ticos polacos a refinar su o o a sistema. Cuando al a˜o siguiente Alemania invadi´ Francia el nuevo o n o equipo tuvo que huir a Africa. La M´quina ENIGMA a a 107 de inteligencia polaco.9. ya que en 1928 se recibi´ accidentalmente en ese pa´ un ejemplar por o ıs 1 . y se llegaron o e 1 La teor´ del error postal. que era capaz de encontrar estas confio o guraciones de forma autom´tica. en Bletchley Park. pero la invasi´n de Polonia era inminente. y se le bautiz´ como Cicl´metro. En 1942. e intentan arrogarse todo a el m´rito en lo referente al descifrado de ENIGMA.2. y enviar tres letras cualesquiera dos veces. no obstante. ya no se le consider´ seguro. ıa o o Los polacos entonces pusieron en conocimiento de los servicios secretos brit´nico y franc´s a e sus progresos. que se encargaba de recoger informaci´n acerca de los sistemas de a o comunicaciones germanos. no en la m´quina en s´ sino en el protocolo empleado por el ej´rcito alem´n para a ı. llamada Bomba. Jerzy Rozycki y Henryk Zygalski) elaborar un mecanismo para aprovechar una debilidad. M´quinas de Rotores. lo cual obligaba a emplear sesenta bombas simult´neamente para romper a el sistema.

suponemos que para regocijo de los servicios de espionaje brit´nico n a y norteamericano. o podemos escribir que la permutaci´n resultante de combinar todos los rotores en un instante o dado es: −1 −1 −1 πtotal = π0 . tal a vez hasta el punto de hacerlo fracasar. y que esa o permutaci´n adem´s no se repita hasta que los rotores recuperen su posici´n inicial. A partir de ah´ la Bomba realizaba una b´squeda exhaustiva de la configuraci´n inicial ı u o de la m´quina para decodificar el mensaje. π2 . a o El cableado hace que cada una de las letras se haga corresponder con otra.2. 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. es decir. y debe cumplir que π3 = π3 . Este nuevo dispositivo aprovechaba una debilidad esencial en ENIGMA: un mensaje no puede codificarse en s´ mismo. Criptograf´ Cl´sica ıa a a construir varios cientos de ellas. π3 . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . π1 . Manuel J. y 60 combinaciones de tres rotores a partir de los cinco de entre los que se puede elegir. π2 . existe una cantidad enorme de posibles u disposiciones iniciales del la m´quina (al menos para aquella ´poca). la mayor´ de ıa ıa los mensajes que enviaba el ej´rcito alem´n comenzaban de igual forma. que o aplicada dos veces nos d´ lo mismo que ten´ e ıamos al principio. para una misma posici´n de los rotores. 9. lo cual facilit´ la tarea e a o del equipo aliado enormemente). lo cual hace que la permutaci´n que se aplica a cada letra sea diferente.108 9. lo cual implica que ninguna de ı las letras del texto claro puede coincidir con ninguna del texto cifrado. Tengao a o mos en cuenta que hay 17576 posiciones iniciales de los rotores. π1 . de forma que s´lo bastaba con rastrear dentro del espacio de o posibles configuraciones para encontrar aquella que llevara a cabo la transformaci´n esperada. la codificaci´n y la decodificaci´n o o o son sim´tricas. que fueron utilizadas para comunicaciones secretas hasta a entrados los a˜os cincuenta. π0 −1 La permutaci´n π3 corresponde al reflector. Puesto que el stecker tambi´n e presenta un n´mero bastante alto de combinaciones. Si notamos una permutaci´n como π. Todas las letras tienen imagen y no hay dos letras con la misma imagen. La Bomba de Turing part´ de una palabra adivinada (en contra de las normas de uso de ENIGMA. De esta forma se cumple la propiedad de que. La potencia del m´todo a e e de criptoan´lisis empleado radica en que se pod´ identificar un emparejamiento v´lido entre a ıa a el criptograma y el texto claro.2 Consideraciones Te´ricas Sobre la M´quina ENIGMA o a Observemos que un rotor no es m´s que una permutaci´n dentro del alfabeto de entrada. e La fuerza de la m´quina ENIGMA radicaba en que tras codificar cada letra se giran los a rotores. o No disponer de dicho emparejamiento hubiera complicado enormemente el criptoan´lisis. a Un hecho bastante poco conocido es que Alemania regal´ al r´gimen de Franco casi una o e veintena de m´quinas ENIGMA.

9.2. M´quinas de Rotores. La M´quina ENIGMA a a

109

9.2.3

Otras M´quinas de Rotores a

Adem´s de la m´quina alemana ENIGMA, existieron otros dispositivos criptogr´ficos baa a a sados en rotores. Estos dispositivos son mucho menos conocidos por diversas razones. La m´quina SIGABA, empleada por el ej´rcito norteamericano, de la cual apenas se conoce a e nada por razones obvias. Tambi´n citaremos las m´quinas 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 ocasi´n de capturar nada m´s que un o a ejemplar, concretamente en la embajada japonesa tras la toma de Berl´ ın.

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

110

9. Criptograf´ Cl´sica ıa a

Manuel J. Lucena L´pez 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 sim´tricos se apoyan en los conceptos de ıa e confusi´n y difusi´n inicialmente propuestos por Shannon (ver secci´n 3.8), que se combinan o o o para dar lugar a los denominados cifrados de producto. Estas t´cnicas consisten b´sicamente e a en trocear el mensaje en bloques de tama˜o fijo, y aplicar la funci´n de cifrado a cada uno de n o ellos. Recordemos que la confusi´n consiste en tratar de ocultar la relaci´n que existe entre o o el texto claro, el texto cifrado y la clave. Un buen mecanismo de confusi´n har´ demasiado o a complicado extraer relaciones estad´ ısticas entre las tres cosas. Por su parte la difusi´n trata de o repartir la influencia de cada bit del mensaje original lo m´s posible entre el mensaje cifrado. a Hemos de hacer notar que la confusi´n por s´ sola ser´ suficiente, ya que si establecemos o ı ıa una tabla de sustituci´n completamente diferente para cada clave con todos los textos claros o posibles tendremos un sistema extremadamente seguro. Sin embargo, dichas tablas ocupar´ ıan cantidades astron´micas de memoria, por lo que en la pr´ctica ser´ inviables. Por ejemplo, o a ıan un algoritmo que codificara 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 confusi´n (sustituciones simples, con tablas peque˜as) y la o n difusi´n (permutaciones). Esta combinaci´n 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 Sustituci´n-Permutaci´n. En muchos casos el criptosistema no es o o m´s que una operaci´n combinada de sustituciones y permutaciones, repetida n veces, como a o ocurre con DES. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

112

10. Cifrados por Bloques

L0
f

R0

K1

L1 L n−1
f

R1 R n−1

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 com´n que dividen un bloque de longitud n u en dos mitades, L y R. Se define entonces un cifrado de producto iterativo en el que la salida de cada ronda se usa como entrada para la siguiente seg´n la relaci´n (ver figura 10.1): u o

Li = Ri−1 Ri = Li−1 ⊕ f (Ri−1 , Ki ) Ln = Ln−1 ⊕ f (Rn−1 , Kn ) Rn = Rn−1

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, Blowfish, etc´tera. Tiene la interesante propiedad de e que para invertir la funci´n de cifrado —es decir, para descifrar— basta con aplicar el mismo o algoritmo, pero con las Ki en orden inverso. N´tese, adem´s, que esto ocurre independienteo a mente de c´mo sea la funci´n f . o o Podemos emplear la inducci´n matem´tica 1 para comprobar esta propiedad. Sea En (L, R) o a la funci´n de cifrado para una red de Feistel de n rondas y Dn (L, R) la funci´n de descifrao o do an´loga. Desdoblaremos cada funci´n en sus bloques izquierdo y derecho y los denotarea o R L R L mos con super´ ındices, En (L, R), En (L, R), Dn (L, R) y Dn (L, R) . Hemos de demostrar que L (E L (L, R), E R (L, R)) = L y D R (E L (L, R), E R (L, R)) = R para cualquier valor de n. Dn n n n n n
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 cuesti´n ha de cumplirse para cualquier valor de n igual o superior a 1 o
1

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Kn+1 ) o sea. En+1 (L. R). B) = B luego L L R L R D1 E1 (L. B) = B E1 y L D1 (A. En+1 (L. R). R) = En (L. E1 (L. R) = Dn En+1 (L. R) ⊕ f E1 (L. R) = E1 (L. R) L L R = Dn En (L. R). R). Kn+1 R L En+1 (L. En (L. B) = Dn B. R). R). A ⊕ f (B. R) = En (L. Kn+1 ) L R o Sustituyendo En+1 (L. R). o permutar el resultado y aplicar el paso n + 1 de cifrado seg´n la relaci´n 10. K1 ) R D1 (A. R) en la parte derecha de la anterior expresi´n nos queda: L R Dn+1 En+1 (L. K1 ) = L y R L R R D1 E1 (L. En+1 (L. K1 ) R (A. R). Kn+1 ) ⊕ f (En (L. R) = L R L R = Dn En (L. B) = A ⊕ f (B. R) = R • Suponiendo que se cumple el caso n. L L R Dn+1 En+1 (L. R) = E1 (L.10. R). R) L R R Dn+1 En+1 (L.1. Cifrado de producto • Si n = 1 tenemos: 113 L E1 (A. En+1 (L. R) = R con lo que finaliza nuestra demostraci´n. E1 (L. K1 ) ⊕ f (R. R) ⊕ f (En+1 (L. B) = A ⊕ f (B. R) ⊕ f En (L. En (L. En+1 (L. R). R) y En+1 (L. R) = L L L R = Dn En (L.1: u o R L L En+1 (L. R). En (L. demostrar el caso n + 1: N´tese en primer lugar que cifrar con n + 1 rondas equivale a hacerlo con n rondas. 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. 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). R). K1 = = L ⊕ f (R. R). R). R) ⊕ f (En (L. o Manuel J.

es como si hubi´ramos empleado una clave de longitud doble. que emplea seis S-Cajas de 8*32 bits. Normalmente. Existe un algoritmo criptogr´fico.2 El Algoritmo DES Es el algoritmo sim´trico m´s extendido mundialmente. con tablas peque˜as. Se basa en el algoritmo LUCIFER. intercalaremos sustituciones sencillas (confusi´n). aumentando la seguridad del sistema. n o e Una S-Caja de m*n bits (ver figura 10. e a que hab´ sido desarrollado por IBM a principios de los setenta. aunque la elecci´n de los valores de salida para que den lugar a un buen o algoritmo no es en absoluto trivial. y s´lo se conoce la fuerza e a o bruta como mecanismo para atacarlo. la transformaci´n criptogr´fica presentara estructura de grupo. a CAST codifica bloques de 64 bits empleando claves de 64 bits. e por el contrario. Este algoritmo se ha demostrado resistente a las t´cnicas habituales de criptoan´lisis. k2 ∃ k3 tal que Ek2 (Ek1 (M )) = Ek3 (M ) (10. llamado CAST. 10. y permutaciones (difusi´n). Si.2) es una tabla de sustituci´n que toma como o entrada cadenas de m bits y da como salida cadenas de n bits. con lo que no habr´ ´ ıamos ganado nada. o Es interesante que un algoritmo criptogr´fico carezca de este tipo de estructura.1.114 10. De hecho. Cifrados por Bloques 10.1. 10.2) esto es. y fue adoptado como est´ndar ıa a Manuel J. por ejemplo. m´s resistente ser´ el a a a algoritmo resultante. existen muchas variedades de CAST. haciendo uso de la S-Caja correspondiente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .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 . Estas o n o tablas peque˜as de sustituci´n se denominan de forma gen´rica S-Cajas. La utilizaci´n 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. cuanto m´s grandes sean las S-Cajas. ya que a si ciframos un mensaje primero con la clave k1 y el resultado con la clave k2 . si hacemos dos cifrados encadenados con k1 y k2 . emplea ocho S-Cajas de 6*4 bits.3 S-Cajas Hemos dicho antes que para poder construir buenos algoritmos de producto. existe una clave k3 que realiza la transformaci´n equivalente. esto hubiera o a sido equivalente a cifrar el mensaje una unica vez con una tercera clave. a cada una con sus S-Cajas correspondientes —algunas de ellas secretas—. consta de ocho rondas y deposita pr´cticamente toda su fuerza en las S-Cajas. DES.

2. por lo que su estudio o sigue siendo plenamente interesante. Despu´s realiza un or-exclusivo con el valor e Ki .3) se compone de una permutaci´n de expansi´n (E). por lo que en la pr´ctica se usan a s´lo 56 bits. llevando a cabo desplazamientos o a la izquierda de cada una de las dos mitades —de 28 bits— resultantes. que ser´ la Ki . 9 y 16. El Algoritmo DES 115 32 bits S−Caja 8x6 S−Caja 8x6 S−Caja 8x6 S−Caja 8x6 S−Caja 8x6 24 bits A B Figura 10. No obstante. o debido a la escasa longitud que emplea en su clave. tales que Pi = Pf .2: A: S-Caja individual. y efectua una nueva permutaci´n P . e o Se calcula un total de 16 valores de Ki (figura 10. En realidad la NSA lo dise˜´ para ser implementado por hardware. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . A mediados de 1998. se demostr´ que un ataque por la fuerza bruta a DES era viable. que convierte o o o el bloque de 32 bits correspondiente en uno de 48. aplica ocho S-Cajas de 6*4 bits. Los desplazamientos o a a la izquierda son de dos bits. en las que se desplaza s´lo un o bit. pero la Oficina Nacional de Estandarizaci´n public´ su especificaci´n o o o con suficiente detalle como para que cualquiera pudiera implementarlo por software. El algoritmo DES codifica bloques de 64 bits empleando claves de 56 bits. 2. se ignoran o ocho de ellos —un bit de paridad por cada byte de la clave—. y realizando finalmente una elecci´n permutada (EP2) de 48 bits en cada ronda. No fue casualidad que el siguiente algoritmo adoptado (Skipjack ) fuera mantenido en secreto. uno para cada ronda. el algoritmo a´n no ha u demostrado ninguna debilidad grave desde el punto de vista te´rico. m´s dos permutaciones.UU. efectuando primero una permutaci´n inicial EP1 sobre la clave de 64 bits. o por el Gobierno de los EE. B: combinaci´n de cuatro S-Cajas. para comunicaciones no clasificadas en 1976. N´tese que aunque la clave para el algoritmo DES tiene en principio 64 bits. Es una Red de Feistel de 16 rondas. La funci´n f (figura 10. o −1 Para descifrar basta con usar el mismo algoritmo (ya que Pi = Pf ) empleando las Ki en Manuel J.10. creyendo que los detalles iban a ser no mantenidos en secreto. una que se aplica al principio (Pi ) y otra que se a −1 aplica al final (Pf ). salvo para las rondas 1.4). tambi´n de 48 bits.

EP1 representa la primera elecci´n a o permutada. Manuel J. y EP2 representa la segunda. que s´lo conserva 56 bits de los 64 de entrada. o K (64 bits) EP1 L0 (28 bits) R0 (28 bits) << << K1 (48 bits) EP2 << << K16 (48 bits) EP2 Figura 10.116 10. Cifrados por Bloques Ri (32 bits) E 48 bits Ki (48 bits) S−Caja S−Caja S−Caja S−Caja S−Caja S−Caja S−Caja S−Caja P 32 bits Figura 10. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .3: Esquema de la funci´n f del algoritmo DES. El signo “<<” representa un desplazamiento de bits a la izquierda (uno o dos dependiendo de la ronda). que o se queda con 48 bits.4: C´lculo de las Ki para el algoritmo DES.

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 Tabla 10.1).1: Claves d´biles para el algoritmo DES (64 bits). e que generan dos valores diferentes de Ki .3.10. el n´mero de llaves de este tipo es tan peque˜o en comparaci´n con el n´mero u n o u total de posibles claves. En general. 10. e orden inverso. que son aquellas que generan un conjunto de diecis´is e e valores iguales de Ki —y que cumplen Ek (Ek (M )) = M —. una empresa sin ´nimo de lucro. expresadas en hexadecimal. Distinguia remos entre claves d´biles (tabla 10.2).3 Variantes de DES A mediados de julio de 1998. o 10.1 Claves D´biles en DES e El algoritmo DES presenta algunas claves d´biles. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . que no debe suponer un motivo de preocupaci´n. Variantes de DES Clave 0101010101010101 1F1F1F1F0E0E0E0E E0E0E0E0F1F1F1F1 FEFEFEFEFEFEFEFE Clave tras aplicar EP1 0000000 0000000 0000000 FFFFFFF FFFFFFF 0000000 FFFFFFF FFFFFFF 117 Tabla 10.2: Claves semi-d´biles para el algoritmo DES (64 bits). todos aquellos valores de la e llave que conducen a una secuencia inadecuada de Ki ser´n poco recomendables. y claves semid´biles (tabla 10. llamada EFF (Electronic a Frontier Foundation). expresadas en hexadecimal. logr´ fabricar una m´quina capaz de descifrar un mensaje DES en meo a Manuel J. En cualquier caso. cada uno de los cuales aparece ocho veces.2.

3. DES sigue siendo ampliamente utilizado en multitud de aplicaciones. lo n cual hace que con el avance actual de las computadoras los ataques por la fuerza bruta comiencen a ser opciones realistas. esta variante podr´ ser a ıa rota con 261 textos claros escogidos. de un lado evitar´ el riesgo de tener que confiar n ıan en algoritmos nuevos. ıa que dicho algoritmo segu´ siendo seguro. Mucha gente se resiste a abandonar este algoritmo. por lo que aumentamos tanto la longitud de la clave como el tama˜o de mensaje que se puede codificar.3. El m´s com´n o a u de todos ellos es el Triple-DES. Se puede hacer ya que DES no presenta estructura de grupo (ecuaci´n 10.3. o 10. un alto cargo de la NSA hab´ declarado ıas. Se ha demostrado sin embargo que no s´lo se gana poco en seguridad.2 DES con Subclaves Independientes Consiste en emplear subclaves diferentes para cada una de las 16 rondas de DES. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . y de otro permitir´ aprovechar gran parte de las implementaciones ıan por hardware existentes de DES. sino que en muchos casos incluso se pierde.3 DES Generalizado Esta variante emplea n trozos de 32 bits en cada ronda en lugar de dos. pocas semanas antes. Cifrados por Bloques nos de tres d´ Curiosamente.1 DES M´ ltiple u Consiste en aplicar varias veces el algoritmo DES con diferentes claves al mensaje original. codificamos con la subclave k1 . la clave resultante tendr´ 768 bits en total. La clave resultante es la concatenaci´n de k1 y k2 . como por ejemplo las transacciones de los cajeros autom´ticos.2). incluso para organizaciones gubernamentales. 10. decodificamos con k2 y volvemos a codificar con k1 . DES-Cracker cost´ menos de 40 o millones de pesetas. precisamente porque ha sido capaz de sobrevivir durante veinte a˜os sin mostrar ninguna debilidad en su n dise˜o. n manteniendo sin embargo el orden de complejidad del algoritmo. A pesar de su ca´ ıda. Puesto que estas subclaves son de 48 bits. sino en que emplea una clave demasiado corta (56 bits). De todas formas. y prefieren proponer variantes que. el problema a real de DES no radica en su dise˜o. por lo que en la pr´ctica no presenta un avance sustancial a sobre DES est´ndar. No es nuestro ıa objetivo entrar en detalles. y que descifrar un mensaje resultaba a´n excesivaıa u mente costoso. o Manuel J. que responde a la siguiente estructura: −1 C = Ek1 (Ek2 (Ek1 (M ))) es decir.118 10. a 10. con una longitud de 112 bits. pero empleando criptoan´lisis diferencial.

Para muchos constituye el mejor y m´s seguro algoritmo sim´trico a e disponible en la actualidad.3. entre ellos el criptoan´lisis diferencial. Denominaremos Zi a cada una de las 52 subclaves de 16 bits que vamos a necesitar. en cuatro partes X1 . Como en el caso de DES. haciendo uso de las siguientes operaciones elementales o o (todas ellas f´ciles de implementar): a • XOR. De hecho. El algoritmo IDEA 119 10. Sumar X3 con Z3 . Trabaja con bloques de 64 bits de longitud y emplea una clave de 128 bits. algunos estudios han revelado que las S-Cajas originales presentan propiedades que las hacen resistentes a t´cnicas e de criptoan´lisis que no fueron conocidas fuera de la NSA hasta muchos a˜os despu´s de la a n e aparici´n del algoritmo. a Como ocurre con todos los algoritmos sim´tricos de cifrado por bloques. Dividiremos el bloque X a codificar. No presenta claves d´biles2 . IDEA es un algoritmo bastante seguro. 2 En realidad. Sumar X2 con Z2 . IDEA se basa en e los conceptos de confusi´n y difusi´n. Las operaciones que llevaremos a cabo en cada ronda son las siguientes: 1.10. Multiplicar X4 por Z4 . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 2. de 64 bits. IDEA tiene un peque˜isimo subconjunto de claves que pueden dar ciertas ventajas a un n criptoanalista. y hasta ahora se ha mostrado resistente a multitud de ataques. o • Producto m´dulo 216 + 1. En la pr´ctica o a no se han encontrado S-Cajas mejores que propias de DES. 4. 3. por lo que no representan un peligro real. o El algoritmo IDEA consta de ocho rondas.4. pero la probabilidad de encontrarnos con una de ellas es de 1 entre 296 . y su longitud a e de clave hace imposible en la pr´ctica un ataque por la fuerza bruta. X2 .4 DES con S-Cajas Alternativas Consiste en utilizar S-Cajas diferentes a las de la versi´n original de DES. • Suma m´dulo 216 . pues data de 1992. Multiplicar X1 por Z1 . Manuel J. o 10. se usa el mismo algoritmo tanto para cifrar como para descifrar.4 El algoritmo IDEA El algoritmo IDEA (International Data Encryption Algorithm) es bastante m´s joven que a DES. X3 y X4 de 16 bits.

11. 13 y o a 14. Hacer un XOR entre los resultados de los pasos 3 y 9. Multiplicar el resultado del paso 8 por Z6 . 13. Multiplicar el resultado del paso 5 por Z5 . Puesto que 216 + 1 es un o u n´mero primo. 7. 9. nunca podremos obtener cero como producto de dos n´meros. Sumar X3 con Z51 . 14. Cifrados por Bloques La salida de cada iteraci´n ser´n los cuatro sub-bloques obtenidos en los pasos 11. 12. ´ Manuel J. 2. Sumar los resultados de los pasos 7 y 9. Hacer un XOR entre los resultados de los pasos 1 y 9. Hacer un XOR entre los resultados de los pasos 2 y 10. 4. Las siguientes ocho se calculan rotando la clave de entrada 25 bits a la izquierda y volviendo a dividirla. ı Las subclaves necesarias para descifrar se obtienen cambiando de orden las Zi y calculando sus inversas para la suma o la multiplicaci´n. en el que emplearemos las siguientes seis subclaves. Hacer un XOR entre los resultados del paso 1 y el paso 3. Al final de todo intercambiaremos los dos bloques centrales (en realidad con eso deshacemos el intercambio que llevamos a cabo en los pasos 12 y 13). utilizaremos el cero para expresar el n´mero 216 —un uno seguido de 16 ceros—. Multiplicar X1 por Z49 . Multiplicar X4 por Z52 . 12. por lo que u u no necesitamos representar dicho valor. 10. 3. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .3. Sumar X2 con Z50 . que ser´n la entrada del siguiente ciclo. 8. 6. Despu´s de la octava iteraci´n. Sumar los resultados de los pasos 6 y 7. y as´ sucesivamente. seg´n la tabla 10. se realiza la siguiente transformaci´n: e o o 1.120 5. Esta representaci´n u o es coherente puesto que los registros que se emplean internamente en el algoritmo poseen unicamente 16 bits. Hacer un XOR entre los resultados de los pasos 4 y 10. a hasta un total de 48. Las primeras ocho subclaves se calculan dividiendo la clave de entrada en bloques de 16 bits. Cuando estemos calculando productos. Hacer un XOR entre los resultados del paso 2 y el paso 4. 10.

revie o si´n y estudio tanto de este algoritmo como de los restantes candidatos. o Manuel J. lo cual convierte a Rijndael en un algoritmo a a perfectamente digno de la confianza de todos. El resto de operaciones se efect´ an en t´rminos de registros Galois GF (2 o u e de 32 bits. para referirnos a este algoritmo. una secuencia de 32 bits se toma como un polinomio de grado inferior a 4.5. Sin embargo. interpretando ´stos como elementos de un campo de e 8 ) (ver secci´n 5. Su inter´s radica en que todo el proceso de selecci´n. 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 Tabla 10. eficiente. AES es un sistema de cifrado por bloques. En su lugar se ha definido cada ronda como una composici´n de cuatro funciones invertibles o 3 Gracias a Sven Magnus por la aclaraci´n. los belgas o o Joan Daemen y Vincent Rijmen. no posee estructura de red de Feistel.1). toda la comunidad cripu a togr´fica mundial ha participado en su an´lisis.3: Subclaves empleadas en el algoritmo IDEA 10. Realiza varias de sus operaciones internas a nivel de byte.1 Estructura de AES AES. a diferencia de algoritmos como DES. dise˜ado para manejar longitudes de clave y n de bloque variables.5.8. en algunos casos. y f´cil de implea mentar. pr´cticamente por primera vez.5 El algoritmo Rijndael (AES) En octubre de 2000 el NIST (National Institute for Standards and Technology) anunciaba oficialmente la adopci´n del algoritmo Rijndael (pronunciado m´s o menos como reindal3 ) coo a mo nuevo Est´ndar Avanzado de Cifrado (AES) para su empleo en aplicaciones criptogr´ficas a a no militares. ambas comprendidas entre los 128 y los 256 bits. cuyos coeficientes son a su vez polinomios en GF (28 ). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . culminando as´ un proceso de m´s de tres a˜os. encaminado a proporcionar a ı a n la comunidad internacional un nuevo algoritmo de cifrado potente. DES ten´ por fin un sucesor.10. emplearemos la denominaci´n AES— es un acr´nimo formado por los nombres de sus dos autores. 10. se ha efectuado de o forma p´blica y abierta. por lo que. ıa La palabra Rijndael —en adelante.

10.0 .0 a3.2 k0.1 .2 a1. k0. siguiendo la secuencia a0.4 a2.1 .0 . a saber.4 a3. y se representar´ mediante una tabla a a con cuatro filas y Nk columnas. a1.0 a1.4 10.2 Elementos de AES AES es un algoritmo que se basa en aplicar un n´mero determinado de rondas a un valor u intermedio que se denomina estado.3 a3.1 k3.2 k2. .1 k2. El bloque que se pretende cifrar o descifrar se traslada directamente byte a byte sobre la matriz de estado.0 .3 a1. estando cada registro constituido por los bytes de la columna correspondiente. por ejemplo. .1 k0. a La llave tiene una estructura an´loga a la del estado. Nb ser´ igual a 5.3 k2. a2. 128 bits.3 a2. tiene 160 bits (tabla 10. los bytes de la a clave se copian sobre la matriz de clave en el mismo orden. dise˜adas para proporcionar resistencia frente a criptoan´lisis n a lineal y diferencial..0 .5: Ejemplo de clave con Nk =4 (128 bits).1 k1. si nuestro bloque ı. . que posee cuatro filas. Cada una de las funciones tiene un prop´sito preciso: o • La capa de mezcla lineal —funciones DesplazarFila y MezclarColumnas— permite obtener un alto nivel de difusi´n a lo largo de varias rondas.0 k2. y Nb columnas. formando tres capas.2 a3. Si nuestra clave tiene.5.1 a3.. o • La capa de adici´n de clave es un simple or-exclusivo entre el estado intermedio y la o subclave correspondiente a cada ronda. As´ por ejemplo.3 a0. k3.0 k1. Manuel J.1 a1.4).2 a2. Cifrados por Bloques Tabla 10.1 a0. k0. a0.3 k1.5). o • La capa no lineal —funci´n ByteSub— consiste en la aplicaci´n paralela de s-cajas con o o propiedades ´ptimas de no linealidad. k2.2 k1.0 k3.0 a2.0 k0. Nk ser´ igual a a 4 (tabla 10.0 .122 a0. diferentes.2 a0.3 k3. .3 Tabla 10.0 a0.4: Ejemplo de matriz de estado con Nb =5 (160 bits). k1.0 . tanto el estado como la clave se consideran como vectores de registros de 32 bits.4 a1. En algunos casos.0 . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . k0.1 a2.0 . Dicho estado puede representarse mediante una matriz rectangular de bytes.2 k3. a3. ordenados de arriba a abajo. y an´logamente.

u o n Siendo B el bloque que queremos cifrar. y utilizar a los mismos Ki que en el cifrado. . pero eliminando el paso 3. Para i = 1 hasta n hacer 4. el algoritmo de descifrado o consistir´ en aplicar las inversas de cada una de las funciones en el orden contrario.6: N´mero de rondas para AES en funci´n de los tama˜os de clave y bloque. S ←−MezclarColumnas(S) 4. Aplicar ronda i–´sima del algoritmo con la subclave Ki .6 se especifica cu´ntas u a rondas son necesarias en funci´n de Nb y Nk . S ←− Ki ⊕ S La ultima ronda es igual a las anteriores. S ←−DesplazarFila(S) 3. ´ Manuel J. Kn subclaves a partir de la clave K. El algoritmo Rijndael (AES) Nb = 4 (128 bits) 10 12 14 Nb = 6 (192 bits) 12 12 14 Nb = 8 (256 bits) 14 14 14 123 Nk = 4 (128 bits) Nk = 6 (192 bits) Nk = 8 (256 bits) Tabla 10. En la tabla 10.10. K1 . o Siendo S la matriz de estado. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .5. o ´ 10. e Puesto que cada ronda es una sucesi´n de funciones invertibles. cada e una de las rondas posee la siguiente estructura: 1. S ←−ByteSub(S) 2. el algoritmo AES con n rondas queda como sigue: 1. S ←− B ⊕ K0 3.5. s´lo que comenzando por el ultimo. el n´mero de rondas requerido en cada caso es variable. . Calcular K0 .3 Las Rondas de AES Puesto que AES permite emplear diferentes longitudes tanto de bloque como de clave. y S la matriz de estado. . 2. y Ki la subclave correspondiente a la ronda i–´sima.

7: Valores de ci seg´n el tama˜o de bloque Nb u n Funci´n ByteSub o La transformaci´n ByteSub es una sustituci´n no lineal que se aplica a cada byte de la o o matriz de estado. x7 los e o ın bits del byte correspondiente.124 Nb 4 6 8 c1 1 1 1 c2 2 2 3 c3 3 3 4 10. . u Manuel J. . que se obtiene componiendo dos transformaciones: 1.7. y sustituido por su inversa multiplicativa. el resto de valores viene en funci´n o de Nb y se refleja en la tabla 10. y1 . mediante una s-caja 8*8 invertible. siendo x0 . . 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 funci´n inversa de ByteSub ser´ la aplicaci´n de la inversa de la s-caja correspondiente o ıa o a cada byte de la matriz de estado. . obviamente. Cifrados por Bloques Tabla 10. . Cada byte es considerado como un elemento del GF (28 ) que genera el polinomio irreducible m(x) = x8 + x4 + x3 + x + 1. . . El valor cero queda inalterado. Funci´n DesplazarFila o Esta transformaci´n consiste en desplazar a la derecha c´ o ıclicamente las filas de la matriz de estado. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Cada fila fi se desplaza un n´mero de posiciones ci diferente. e y0 . 2. un desplazamiento de las filas de la o a matriz de estado el mismo n´mero de posiciones que en la tabla 10. pero a la izquierda.7. x1 . . La funci´n inversa de DesplazarFila ser´. Mientras que c0 siempre u es igual a cero (esta fila siempre permanece inalterada). Despu´s se aplica la siguiente transformaci´n af´ en GF (2).

K(4 · i + 2).4 C´lculo de las Subclaves a Las diferentes subclaves Ki se derivan de la clave principal K mediante el uso de dos funciones: una de expansi´n y otra de selecci´n. K(4 · i + 2). conteniendo la clave. La funci´n de expansi´n u o o tiene dos versiones. 6. o sea. ı La inversa de MezclarColumnas se obtiene multiplicando cada columna de la matriz de estado por el polinomio: d(x) = 0Bx4 + 0Dx2 + 09x + 0E 10. 7. W (i) ← (K(4 · i). a partir del valor de K.10. El algoritmo Rijndael (AES) Funci´n MezclarColumnas o 125 Para esta funci´n. Para i desde 0 hasta Nk − 1 hacer 2.5. W (i) ← (K(4 · i). K(4 · i + 3)) 3. una secuencia de o o 4 · (n + 1) · Nb bytes. y as´ sucesivamente.5. Para i desde 0 hasta Nk − 1 hacer 2. Para i desde Nk hasta Nb · (n + 1) hacer Manuel J. n Sea K(i) un vector de bytes de tama˜o 4 · Nk . y los va asignando a cada Ki . x + 1. y sea W (i) un vector n de Nb · (n + 1) registros de 4 bytes. seg´n el valor de Nk : u a) Si Nk ≤ 6: 1. la funci´n de expansi´n permite obtener. cada columna del vector de estado se considera un polinomio cuyos o coeficientes pertenecen a GF (28 ) —es decir. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Para i desde Nk hasta Nb · (n + 1) hacer b) Si Nk > 6: 1. en este caso 00000011. La selecci´n simplemente toma consecutivamente de la secuencia obtenida o bloques del mismo tama˜o que la matriz de estado. K(4 · i + 1). K(4 · i + 3)) tmp ← W (i − 1) Si i mod Nk = 0 tmp ← Sub(Rot(tmp)) ⊕ R(i/Nk ) W (i) ← W (i − Nk ) ⊕ tmp 3. K(4 · i + 1). siendo n el n´mero de rondas. Siendo n el n´mero de rondas que se van a o o u aplicar. 5. son tambi´n polinomios– y se multiplica m´dulo e o 4 + 1 por: x c(x) = 03x4 + 01x2 + 01x + 02 donde 03 es el valor hexadecimal que se obtiene concatenando los coeficientes binarios del polinomio correspondiente en GF (28 ). 4.

c. a 10. 0. Si por contra ´ no sobrara nada. Finalmente. hay que alargarlo con otro bloque entero. tendr´ ıamos que a˜adir siete ceros y un ocho. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Esto tiene el inconveniente de u n que si el tama˜o original es m´ltiplo del bloque. 9. En efecto. Cifrados por Bloques En los algoritmos anteriores. y nos sobraran cinco bytes al final. n ıa Tambi´n se ha comprobado que es resistente a criptoan´lisis tanto lineal como diferencial (ver e a secci´n 10. 0. 5. 10. Por n u ejemplo. 7. a). Lo que se suele hacer es a˜adir como ultimo byte del ultimo o n ´ ´ bloque el n´mero de bytes que se han a˜adido (ver figura 10. que busca eliminar la simetr´ en las subclaves. de tal forma que si le pasamos o como par´metro el valor (a. n Manuel J. 6. Entonces tenemos que a˜adir informaci´n u n n o al final para que s´ lo sea.5 Seguridad de AES Seg´n sus autores. independientemente del m´todo empleado para codificar. debido a la estructura de su dise˜o. La funci´n a o Rot desplaza a la izquierda una posici´n los bytes del registro.6 Modos de Operaci´n para Algoritmos de Cifrado por Bloo ques En esta secci´n comentaremos algunos m´todos para aplicar cifrados por bloques a mensao e jes de gran longitud.7). 0) • Cada R(i) es el elemento de GF (28 ) correspondiente al valor x(i−1) .5). El mecanismo m´s sencillo consiste en rellenar con ceros (o alg´n ı a u otro patr´n) el ultimo bloque que se codifica. a˜adir´ n n ıamos dos ceros y un tres.126 4. el m´todo m´s eficiente conocido hasta la fecha para recuperar la clave o e a a partir de un par texto cifrado-texto claro es la b´squeda exhaustiva. e hemos de tener en cuenta lo que ocurre cuando la longitud de la cadena que queremos cifrar no es un m´ltiplo exacto del tama˜o de bloque. 8. Rc(j) es una constante a definida de la siguiente forma: • Rc(j) = (R(j). En primer lugar. c. la funci´n 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 par´metro. tmp ← W (i − 1) Si i mod Nk = 0 tmp ← Sub(Rot(tmp)) ⊕ Rc(i/Nk ) Si i mod Nk = 4 tmp ← Sub(tmp) W (i) ← W (i − Nk ) ⊕ tmp 10. d. por lo que podemos u considerar a este algoritmo uno de los m´s seguros en la actualidad. d) nos devuelve (b. b. es altamente improbable que existan claves d´biles o semid´biles en u e e AES.5. si el tama˜o de bloque fuera 64 bits. para completar los ocho bytes necesarios en el ultimo bloque. El problema ahora consiste en saber cuando se o ´ descifra por d´nde hay que cortar.

lo cual es adecuado para codificar bases de datos o ficheros en los que se requiera un acceso aleatorio. o con patrones comunes al inicio y final (como el correo electr´nico). Luego se escuchan otras comunicaciones y se sustituyen los bloques correspondientes al n´mero de cuenta del beneficiario de la transacci´n por la versi´n codificada de u o o nuestro n´mero (que ni siquiera nos habremos molestado en descifrar).6. o ıa Por contra. Esto significa que la codificaci´n de bloques anteriores condiciona la o Manuel J. y alterar los mensajes incluso desconociendo la clave y el algoritmo empleados. Simplemente se escucha una comunicaci´n de la que se conozca el contenido. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . n A favor de este m´todo podemos decir que permite codificar los bloques independientee mente de su orden. Modos de Operaci´n para Algoritmos de Cifrado por Bloques o 127 0 0 0 0 0 0 0 0 0 5 4 8 0 0 0 0 0 Bytes pertenecientes al mensaje Bytes añadidos Figura 10. 10. sobre todo cuando se codifica informaci´n muy redundante (como a o ficheros de texto). En cuesti´n de horas u o nos habremos hecho ricos. o Otro riesgo bastante importante que presenta el modo ECB es el de la sustituci´n de o bloques.2 Modo CBC El modo CBC (Cipher Book Chaining Mode) incorpora un mecanismo de retroalimentaci´n o en el cifrado por bloques. como por ejemplo una transacci´n bancaria a nuestra o o cuenta corriente. 10.5: Relleno (padding) de los bytes del ultimo bloque al emplear un algoritmo de ´ cifrado por bloques. Simplemente se subdivide la cadena que se quiere codificar en bloques del tama˜o adecuado y se cifran todos ellos empleando la misma clave. El atacante puede cambiar un bloque sin mayores problemas. pues si uno de los bloques e sufriera una alteraci´n.6. si el mensaje presenta patrones repetitivos. y eso es peligroso.1 Modo ECB El modo ECB (Electronic Codebook) es el m´todo m´s sencillo y obvio de aplicar un e a algoritmo de cifrado por bloques. Un o contrincante puede en estos casos efectuar un ataque estad´ ıstico y extraer bastante informaci´n. el texto cifrado tambi´n los pree sentar´. el resto quedar´ intacto. Tambi´n es resistente a errores.10.6.

128 10. como bloque inicial de la transmisi´n. por ejemplo en el caso de terminales. Para evitar esto se emplea un vector de inicializaci´n.3 Modo CFB El modo CBC no empieza a codificar (o decodificar) hasta que no se tiene que transmitir (o se ha recibido) un bloque completo de informaci´n.6: Modo de operaci´n CBC. o o o codificaci´n del bloque actual. Manuel J. por lo que ser´ imposible sustituir un bloque individual en el o a mensaje cifrado. Otra opci´n ser´ rellenar el o ıa bloque con informaci´n aleatoria. que puede ser o un bloque aleatorio. B: decodificaci´n. dos mensajes que empiecen igual se codificar´n igual hasta llegar a la primera a u a diferencia entre ellos. B. pero garantiza que siempre los mensajes se codifiquen de manera diferente. pero esto har´ que a tengamos unicamente 256 mensajes diferentes en nuestra transmisi´n y que un atacante pue´ o da efectuar un sencillo an´lisis estad´ a ıstico para comprometerla. dos mensajes id´nticos se codificar´n de la misma forma usando el modo e a CBC. Cifrados por Bloques M i−1 Mi M i+1 C i−1 Ci C i+1 EK EK EK DK DK DK C i−1 Ci C i+1 M i−1 Mi M i+1 A. Este vector ser´ descartado en o a destino. manteniendo adem´s un o a nivel de seguridad adecuado. Esta circunstancia puede convertirse en o un serio inconveniente. aunque tengan partes comunes. Una posible soluci´n ser´ emplear a o ıa un bloque completo para transmitir cada byte y rellenar el resto con ceros.6).6. A: codificaci´n. Figura 10. aunque segur´ o ıamos desperdiciando gran parte del ancho de banda de la transmisi´n. M´s a´n. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Esto se consigue efectuando una operaci´n XOR entre el bloque del mensaje o que queremos codificar y el ultimo criptograma obtenido (ver figura 10. El modo de operaci´n CFB (Cipher-Feedback Mode) permitir´ codio o a ficar la informaci´n en unidades inferiores al tama˜o del bloque. ´ En cualquier caso. que deber´ poder transmitir ıan cada car´cter que pulsa el usuario de manera individual. 10. lo cual permite aprovechar o n totalmente la capacidad de transmisi´n del canal de comunicaciones.

6. El problema fundamental es e mantener ambos generadores sincronizados. Modos de Operaci´n para Algoritmos de Cifrado por Bloques o 129 R (p bits) n n . El bloque que deberemos enviar es ci = r ⊕ mi . c i−1 n n n Ek n n . Sea mi el i−´simo bloque del texto claro. Desplazamos luego R e introducimos ci por la derecha como hac´ ıamos en el algoritmo de cifrado.10. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .7: Esquema del modo de operaci´n CFB. o 10. Lo que se hace es aplicar una operaci´n XOR entre cada bit del texto claro y cada bit de la clave. que incorporan mecanismos para mantener la sincron´ entre los ıa generadores de secuencia origen y destino.. el modo CFB queda reducido al modo CBC.. o En la figura 10. Funcionan a partir de lo que se llama un generador de secuencia de clave (keystream generator). Para descifrar basta con cargar el vector de inicializaci´n en R y codificarlo. para evitar errores si se pierde alg´n bit de la u transmisi´n. o Los algoritmos de codificaci´n por bloques pueden ser empleados como generadores de o secuencia de clave. En el destino existe otro o generador id´ntico sincronizado para llevar a cabo el descifrado. sino en un a o mecanismo secuencial de codificaci´n de streams de tama˜o variable. de tama˜o n.. N´tese que si n = p.7 podemos ver el esquema de funcionamiento de este modo de operaci´n. n n n mi ci Figura 10. y sea n el tama˜o de los bloques que queremos n e n transmitir (n ha de divisor de p). o Entonces mi = r ⊕ ci .. Codificamos el registro R con el algoritmo sim´trico y obtenemos en o e r sus n bits m´s a la izquierda. como o el OFB (Output-Feedback). Manuel J.6. permiten cifrar un mensaje bit a bit de forma continua y enviar cada bit antes que el siguiente sea codificado. Existen para ello otros modos de operaci´n de estos algoritmos. Estos algoritmos. calculando r. un algoritmo que genera una clave continua de longitud infinita (o muy grande) bit a bit. Sea o p el tama˜o de bloque del algoritmo sim´trico.4 Otros Modos Existen protocolos criptogr´ficos que no se basan en la transmisi´n de bloques. e n Empleamos entonces un registro de desplazamiento R de logitud p y lo cargamos con un vector de inicializaci´n. Desplazamos a R n bits a la izquierda e introducimos ci por la derecha. que o n veremos con m´s detalle en el cap´ a ıtulo 11.

tomar algunos del o texto cifrado y hacerles lo mismo. descubierto por Mitsuru Matsui. a a Si el algoritmo criptogr´fico en cuesti´n es vulnerable a este tipo de ataque. Manuel J. a a a 10. 10. analizando la evoluci´n de dichas diferencias a lo largo de las rondas de DES. pero s´ repree ı sentan mecanismos significativamente m´s eficientes que la fuerza bruta para criptoanalizar a un mensaje. Efectuando esa operaci´n a una gran cantidad de pares de texto claro ´ o y criptograma diferentes podemos ver si se obtienen m´s ceros o m´s unos. Ni que decir tiene que estos m´todos no han conseguido doblegar a DES. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Se u ıa) dice que existen estructuras extra˜as. bien escogidas. Lo unico cierto es que el inter´s por buscar posibles u ´ e debilidades en ´l ha llevado a desarrollar t´cnicas que posteriormente han tenido ´xito con e e e otros algoritmos. que muchos consideran sencillamente puertas traseras n colocadas por la Agencia para facilitarles la decodificaci´n de los mensajes. Mucha gente desconfiaba (y a´n desconf´ del algoritmo propuesto por la NSA. Conforme tenemos m´s a y m´s pares.130 10. 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. se asignan probabilidades a las diferentes claves de cifrado.7. Esa ser´ la clave buscada. obteniendo un unico bit. Se basa en el estudio de los pares a de criptogramas que surgen cuando se codifican dos textos claros con diferencias particulares. Cifrados por Bloques 10. Usando las diferencias entre los textos e u cifrados. y finalmente hacer un XOR de los dos resultados anteriores. es decir. Los dos m´todos 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.2 Criptoan´lisis Lineal a El criptoan´lisis lineal. una de las claves aparece como la m´s probable. o Para llevar a cabo un criptoan´lisis diferencial se toman dos mensajes cualesquiera (incluso a aleatorios) id´nticos salvo en un n´mero concreto de bits. Nadie ha podido o a´n demostrar ni desmentir este punto. permite efectuar un ataque de texto claro escogido a DES que resulta m´s eficiente que la fuerza bruta.1 Criptoan´lisis Diferencial a Descubierto por Biham y Shamir en 1990.7 Criptoan´lisis de Algoritmos Sim´tricos a e Se podr´ decir que el criptoan´lisis se comenz´ a estudiar seriamente con la aparici´n ıa a o o de DES. basa su funcionamiento en tomar a algunos bits del texto claro y efectuar una operaci´n XOR entre ellos. que el n´mero de ceros (o unos) es apreciablemente superior. existir´n a o a combinaciones de bits que.7. den lugar a un sesgo significativo en la medida anteriormente definida.

En tal caso podr´ ıamos. estos criptosistemas no proporcionan seguridad ıa perfecta. ¿por qu´ no emplearlo para transmitir el mensaje directamente? e Evidentemente. empleando la semilla del generador como clave. Manuel J. que se usar´ una unica vez —lo que se conoce en ingl´s como ıa ´ e one-time pad—. a partir de una porci´n de la secuencia arbitrariamente grande. combin´ndola mediante alguna funci´n simple y reversible con el texto en a o claro car´cter a car´cter. y emplearlas para cifrar mensajes simplemente aplicando la funci´n xor entre el texto en claro y la secuencia generada. era computacioo nalmente intratable el problema de predecir el siguiente bit de la secuencia. a En este cap´ ıtulo analizaremos algunos criptosistemas de clave privada que explotan esta idea. Dicho sistema consist´ en emplear una secuencia aleatoria de o ıa igual longitud que el mensaje. pero supongamos que disponemos de un generador pseudoaleatorio capaz de generar secuencias criptogr´ficamente aleatorias. Dichos algoritmos no son m´s que la especificaci´n de un generador pseudoaleatorio. Adicionalmente. Como cabr´ esperar. obtener cadenas de bits de usar y tirar.Cap´ ıtulo 11 Cifrados de Flujo En 1917. un sistema de Vernam carece de utilidad pr´ctica en la mayor´ de los a ıa casos. ya que mientras en el cifrado de Vernam el n´mero de posibles claves era tan grande u como el de posibles mensajes. de forma que la longitud de los posibles ciclos sea a extremadamente grande. Mauborgne y G.1 Secuencias Pseudoaleatorias Como ve´ ıamos en el cap´ ıtulo 8. J. Vernam inventaron un criptosistema perfecto seg´n el criterio u de Shannon (ver secci´n 3. 11. sin necesidad de dividirlos en bloques para codificarlos por separado. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Este m´todo presenta el grave inconveniente de que la clave es tan a a e larga como el propio mensaje. y a o permiten cifrar mensajes de longitud arbitraria. cuando empleamos un generador tenemos como mucho tantas secuencias distintas como posibles valores iniciales de la semilla. Todo aquel que conozca o la semilla podr´ reconstruir la secuencia pseudoaleatoria y de esta forma descifrar el mensaje.8). y si disponemos de un canal seguro para enviar la clave. los generadores criptogr´ficamente aleatorios ten´ la proa ıan piedad de que.

si es el estado interno del generador. la sincronizaci´n no se pierde. usualmente or exclusivo. o Manuel J. 11. En el caso general. viene dado por las siguientes ecuaciones: si+1 = g(si . simplemente conociendo qu´ bits debe alterar. como las o funciones resumen (ver secci´n 13.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. Para evitar esto. Evidentemente. Comentaremos brevemente en esta secci´n sus caracter´ o ısticas b´sicas. ya que es precisamente lo que necesia tamos: que por un lado no pueda calcularse la secuencia completa a partir de una porci´n de o ´sta.1) Donde k es la clave. Esto nos obliga a a emplear tanto t´cnicas de verificaci´n como de restablecimiento de la sincron´ e o ıa. por lo que el resto del mensaje ser´ imposible de descifrar.1(a). a 11. ya no se estar´ aplicando en el receptor un xor con la o u a misma secuencia. y e o w es una funci´n reversible. pero el texto claro se ver´ modificado en la misma o a posici´n. dependiendo de los par´metros que se empleen para calcular el valor de cada porci´n a o de la secuencia.1). En muchos casos.2. deben empleare se mecanismos de verificaci´n que garanticen la integridad del mensaje recibido. y que a la vez pueda regenerarse completamente conociendo una pieza de informaci´n e o como la semilla del generador. ilustrado en la figura 11. necesitamos que tanto el emisor como el receptor est´n sincronizados para que el texto pueda descifrarse. Cifrados de Flujo dijimos que no eran buenos como generadores aleatorios debido a que el conocimiento de la semilla nos permitir´ regenerar la secuencia por completo. k) ci = w(mi . esta caracter´ ıstica se convertir´ en una ventaja. ´ Cuando empleamos un generador de estas caracter´ ısticas.2 Tipos de Generadores de Secuencia Los generadores que se emplean como cifrado de flujo pueden dividirse en dos grandes grupos. s0 es el estado inicial. Si durante la transe misi´n se pierde o inserta alg´n bit. oi es la salida en el instante i. oi ) (11. siendo k = s0 . mi y ci son la i–´sima porci´n del texto claro y cifrado respectivamente. k) oi = h(si . la funci´n h depende o o unicamente de si . en el caso que nos ıa ocupa. Esta caracter´ o ıstica podr´ permitir a un atacante introducir cambios en nuestros ıa mensajes. Otro problema muy com´n con este tipo de t´cnicas es que si alg´n bit del criptograma u e u es alterado. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .132 11.

1(b). ci−t . habr´ que a introducir mecanismos de verificaci´n. en cuanto llegan t bloques correctos de a forma consecutiva. a Manuel J. En cualquier caso. mi y ci son la i–´sima porci´n del texto claro y cifrado respectivamente e o y w es una funci´n reversible. ya que cada d´ ıgito del mensaje influye en todo el criptograma. B: generador as´ ıncrono. . o Una propiedad interesante de estos generadores es la dispersi´n de las propiedades eso tad´ ısticas del texto claro a lo largo de todo el mensaje cifrado. .2. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . ya que si se modifica la e a o unidad de informaci´n ci .1: Esquema de generadores de secuencia: A: generador s´ ıncrono.2. Esta familia de generadores es resistente a la p´rdida o inserci´n de informaci´n.2 Generadores As´ ıncronos Un generador de secuencia as´ ıncrono o auto-sincronizado es aquel en el que la secuencia generada es funci´n de una semilla. al igual que con los generadores s´ o ıncronos. el receptor tendr´ valores err´neos de entrada en su funci´n h hasta o a o o que se alcance el bloque ci+t . c−1 constituyen el estado inicial del o generador. Los valores c−t . Esto hace que los generadores s´ ıncronos se consideren en general m´s resistentes frente a ataques basados en la redundancia del texto en claro. .11.2) Donde k es la clave. . ci−t+1 . . ya que e o o acaba por volver a sincronizarse de forma autom´tica. momento a partir del cual la transmisi´n habr´ recuperado o a la sincronizaci´n. m´s una cantidad fija de los bits anteriores de la propia o a secuencia. mi ) (11. . Tambi´n ser´ sensible a la alteraci´n de un mensaje. . c−t+1 . como puede verse en la figura 11. ci−1 ) ci = w(oi . Formalmente: oi = h(k. Tipos de Generadores de Secuencia 133 si+1 g K si h oi w ci K h oi w ci mi mi ci A B Figura 11. 11.

. Sj−L ). se encuentran presentes en muchos de los generadores de secuencia propuestos en la literatura. . 11. El contenido de S0 es la salida del registro. SL−1 }. {S0 . para 1 ≤ i ≤ L − 1. . Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . la secuencia ser´ peri´dica si ignoramos una cierta a o a o cantidad de bits al principio—. Durante cada unidad de tiempo se efect´an las siguientes operaciones: u 1. . . Cifrados de Flujo 11. capaces de almacenar un bit cada uno (fig 11.b).2. . o donde Sj−i es el contenido del registro SL−i en el estado anterior.2. Obs´rvese que si sustituimos la funci´n f en un registro de esta naturaleza por la suma e o m´dulo 1 de un subconjunto de L. una secuencia de salidas de car´cter peri´dico —en algunos casos. El contenido de SL−1 se calcula como una funci´n booleana f (Sj−1 . El contenido de Si es desplazado al estado Si−1 . .2 Registros de Desplazamiento Retroalimentados No Lineales Un registro de desplazamiento retroalimentado general (o no lineal) L es un conjunto de L estados. 3. . . S1 . 3. a 11. Un generador de estas caracter´ ısticas devolver´. y del subconjunto concreto de L empleado en el paso 3.134 11.3.3. 2. debido a que permiten generar secuencias con per´ ıodos muy grandes y con buenas propiedades estad´ ısticas. en funci´n de los valores iniciales de los a o estados. . 2. . para 1 ≤ i ≤ L − 1. Durante o cada unidad de tiempo se efectuan las siguientes operaciones: 1. Un registro de desplazamiento retroalimentado lineal L es un conjunto de L estados. El contenido de SL−1 se calcula como la suma m´dulo 1 de los valores de un subconjunto o prefijado de L.1 Registros de Desplazamiento Retroalimentados Lineales Estos registros.a). capaces de almacenar un bit cada uno (fig 11. Esta estructura viene controlada por un reloj que controla los flujos de informaci´n entre los estados. SL−1 }.3 Registros de Desplazamiento Retroalimentados Los registros de desplazamiento retroalimentados (feedback shift registers. adem´s de su bien conocida estructura algebraica y su a facilidad para ser implementados por hardware. El contenido de Si es desplazado al estado Si−1 . El contenido de S0 es la salida del registro. {S0 . Dedicaremos esta secci´n o a analizar su estructura b´sica y algunas de sus propiedades. o Manuel J. obtenemos un registro de desplazamiento lineal. o FSR en ingl´s) e son la base de muchos generadores de secuencia para cifrados de flujo. Sj−2 . S1 .

11.4. Otros Generadores de Secuencia

135

A

r L−1

r L−2

r1

r0

S L−1

S L−2

S 1

S 0

Salida

f

B
S L−1 S L−2 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 rL−1 se puede seleccionar qu´ estados se emplear´n e a para calcular el nuevo valor de SL−1 . B: Registro no lineal, donde se emplea una funci´n f o gen´rica. e

11.3.3

Combinaci´n de Registros de Desplazamiento o

En general, los registros de desplazamiento retroalimentados no lineales presentan unas mejores condiciones como generadores de secuencia que los generadores de tipo lineal. Sin embargo, la extrema facilidad de implementaci´n por hardware de estos ultimos ha llevado a o ´ los dise˜adores a estudiar diferentes combinaciones de registros lineales, de tal forma que se n puedan obtener secuencias mejores. En general, se emplear´ n generadores lineales y una funci´n f no lineal para combinar ıan o sus salidas, de tal forma que cada bit de la secuencia se obtendr´ mediante la expresi´n ıa o f (R1 , R2 , . . . , Rn ) siendo Ri la salida del i–´simo registro de desplazamiento lineal. e (11.3)

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 f´ciles de implementar, ni eficientes, si a se usan por software. Esto ha llevado a la comunidad a proponer algoritmos de generaci´n o de secuencia especialmente pensados para ser incorporados por software. Nosotros vamos a comentar dos de ellos: RC4 y SEAL. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

136

11. Cifrados de Flujo

11.4.1

Algoritmo RC4

El Algoritmo RC4 fue dise˜ado por Ron Rivest en 1987 para la compa˜´ RSA Data n nıa Security. Su implementaci´n es extremadamente sencilla y r´pida, y est´ orientado a generar o a a secuencias en unidades de un byte, adem´s 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 c´digo del algoritmo no se ha publicado nunca oficialmente, pero en 1994 alguien dio fundi´ en los grupos de noticias de Internet una descripci´n que, como posteriormente se ha o o comprobado, genera las mismas secuencias. Dicha descripci´n consta de una S-Caja de 8*8 o (ver cap´ ıtulo 10), que almacenar´ una permutaci´n 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) mod 256 j = (j + Si ) mod 256 Intercambiar los valores de Si y Sj t = (Si + Sj ) mod 256 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 ) mod 256 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 criptoan´lisis diferencial y lineal, si bien algunos estudios indican que puede poseer claves a d´biles, y que es sensible a estudios anal´ e ıticos del contenido de la S-Caja. De hecho, algunos afirman que en una de cada 256 claves posibles, los bytes que se generan tienen una fuerte correlaci´n con un subconjunto de los bytes de la clave, lo cual es un comportamiento muy o poco recomendable. 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 dise˜ado en 1993 para IBM por Phil Rogaway y Don n Coppersmith, cuya estructura est´ especialmente pensada para funcionar de manera eficiente 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 r´pida. Por a desgracia, tambi´n es un algoritmo sujeto a patentes. e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

11.4. Otros Generadores de Secuencia

137

Una caracter´ ıstica muy util de este algoritmo es que no se basa en un sistema lineal de ´ generaci´n, sino que define una familia de funciones pseudoaleatorias, de tal forma que se puede o calcular cualquier porci´n de la secuencia suministrando unicamente un n´mero entero n de o ´ u 32 bits. La idea es que, dado ese n´mero, 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 yuxtaposici´n de los bloques k(0), k(1), . . . , k(232 − 1). o SEAL se basa en el empleo del algoritmo SHA (ver secci´n 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 versi´n revisada, o SHA-1.

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

138

11. Cifrados de Flujo

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .Parte IV Criptograf´ de Llave P´ blica ıa u Manuel J.

.

ıcil Manuel J. El m´s popular por su sencillez es RSA. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Dependiendo de la aplicaci´n que le demos al algoritmo. Adem´s. que ha sobrevivido ´ a a multitud de ataques. bien sea porque la longitud de la clave es enorme. otros e ıa son poco pr´cticos. denoe minadas clave privada y clave p´blica. mientras que para algoritmos sim´tricos se considera segura una e e clave de 128 bits. bien sea porque el criptograma es considerablemente mayor que el mensaje a original. Kp y KP . En la pr´ctica los m´todos asim´tricos se emplean unicamente para codificar la e a e e ´ clave de sesi´n (sim´trica) de cada mensaje o transacci´n particular. Por ejemplo. si bien necesita una longitud de clave considerable. o e o 12. para algoritmos asim´tricos —si exceptuamos aquellos basados en curvas e el´ ıpticas— se recomiendan claves de al menos 1024 bits. Otros algoritmos son los de ElGamal y Rabin.Cap´ ıtulo 12 Algoritmos Asim´tricos de Cifrado e Los algoritmos de llave p´blica. la complejidad de c´lculo que a a comportan estos ultimos los hace considerablemente m´s lentos que los algoritmos de cifrado ´ a sim´tricos. o algoritmos asim´tricos. mientras que la u otra se usa para decodificar. Hasta la fecha ıa e ´ han aparecido multitud de algoritmos asim´tricos. sino que forman pares. Una de ellas se emplea para codificar. la clave o p´blica ser´ la de cifrado o viceversa. Introducidos por Whitfield Diffie o y Martin Hellman a mediados de los a˜os 70. Los algoritmos asim´tricos emplean generalmente longitudes de clave mucho mayores que e los sim´tricos. han demostrado su inter´s para u e e ser empleados en redes de comunicaci´n inseguras (Internet). Se basan en general en plantear al atacante problemas matem´ticos dif´ a ıciles de resolver (ver cap´ ıtulo 5).1 Aplicaciones de los Algoritmos Asim´tricos e Los algoritmos asim´tricos poseen dos claves diferentes en lugar de una. su novedad fundamental con respecto a la n criptograf´ sim´trica es que las claves no son unicas. Para que estos criptosistemas sean seguros tambi´n ha u a e de cumplirse que a partir de una de las claves resulte extremadamente dif´ calcular la otra. la mayor´ de los cuales son inseguros. En la pr´ctica muy pocos a algoritmos son realmente utiles.

12. Dicha firma es mucho m´s peque˜a que el mensaje original. B decodifica el criptograma empleando la ıa clave privada Kp . que en este caso ser´ privada.2) y lo codifica empleando la clave de cifrado. mientras que la llave privada es aquella que permite descifrarlos. 12. Una vez hecho esto u unicamente quien posea la clave Kp —en nuestro ejemplo.1: Transmisi´n de informaci´n empleando algoritmos asim´tricos. 3.1 Protecci´n de la Informaci´n o o Una de las aplicaciones inmediatas de los algoritmos asim´tricos es el cifrado de la infore maci´n sin tener que transmitir la clave de decodificaci´n. que nos permiten obtener una firma digital a o partir de un mensaje. 2. y es muy a n dif´ encontrar otro mensaje de lugar a la misma. Supongamos que A recibe un mensaje m ıcil de B y quiere comprobar su autenticidad. Algoritmos Asim´tricos de Cifrado e A 1. KP . con o e o ayuda de funciones resumen (ver secci´n 13. m KP KP Kp 3. m KP E K (m) P KP Kp 4. B env´ a A su clave p´blica.1. 4. N´tese que para este tipo de aplicaci´n.142 12. Supongamos que A quiere enviar un mensaje a B (figura 12. 1. m KP B Kp 2. A codifica el a ıa u mensaje m y env´ a B el criptograma EKP (m). Para ello B genera un resumen del mensaje r(m) (ver figura 12. a Manuel J. A genera entonces el mensaje cifrado EKP (m). la llave que se hace p´blica es aquella que permite o o u codificar los mensajes. lo cual permite su uso en canales o o inseguros. m KP KP m Kp Figura 12. Para ello solicita a B su clave p´blica KP . A tiene el o o e mensaje m y quiere envi´rselo a B. B— podr´ recuperar el mensaje ´ a original m.1). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .2 Autentificaci´n o La segunda aplicaci´n de los algoritmos asim´tricos es la autentificaci´n de mensajes.1.1).

recibe el mensaje m y quiere autentificarlo. justo al rev´s o e que para la simple codificaci´n de mensajes. m KP E K pr(m) KP Kp 3. N´tese que en este caso la clave que se emplea para cifrar es la clave privada. 12. Esto ocurre con el algoritmo RSA.2 El Algoritmo RSA De entre todos los algoritmos asim´tricos. la otra permitir´ decodificar y a viceversa. 3. 4. en el que un unico par de claves es suficiente ´ para codificar y autentificar.2. que posee o o e la clave p´blica KP de B. 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 Algoritmo RSA 143 A 1. sus claves sirven indistintamente tanto para codificar como para autentificar. A compara r(m) y r (m) para comprobar la autenticidad del mensaje m. Como ya se ha dicho. quiz´ RSA sea el m´s sencillo de comprender e a a e implementar. el mensaje ser´ aut´ntico. y debe estar en poder de A. 2. B a u env´ entonces a A el criptograma correspondiente a r(m). 1.12. puesto que el unico que posee la clave para codificar es precisamente a e ´ B. KP m r’(m) KP m KP Kp 4. o En muchos de los algoritmos asim´tricos ambas claves sirven tanto para cifrar como para e descifrar. Adi Shamir y Manuel J. La clave de descifrado se habr´ hecho p´blica previamente. KP m KP B Kp 2.2: Autentificaci´n de informaci´n empleando algoritmos asim´tricos. A genera por su cuenta r (m) y decodifica ıa el criptograma recibido usando la clave KP . de manera que si empleamos una para codificar. r’(m) r(m) KP Kp Figura 12. Debe su nombre a sus tres inventores: Ronald Rivest. B genera el resumen de u m env´ a A el criptograma asociado EKp (r(m)). Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . A.

por lo que exisitr´ un n´mero u o o a u d tal que de ≡ 1 (mod (p − 1)(q − 1)) es decir.2) . a a La codificaci´n se lleva a cabo seg´n la expresi´n: o u o c = me (mod n) (12. N´tese a o que si desconocemos los factores de n.6). El u atacante se enfrenatar´. p y q. u o lo cual nos lleva de nuevo a m. De hecho. que d es la inversa de e m´dulo (p − 1)(q − 1). Para ver lo que ocurre. (e. e a RSA se basa en la dificultad para factorizar grandes n´meros. n) ser´ la clave privada.3). desde su nacimiento nadie ha conseguido probar ı u o rebatir su seguridad. por lo que su uso comercial estuvo restringido hasta esa fecha.1) mientras que la decodificaci´n se har´ de la siguiente forma: o a m = cd ya que cd = (me )d = med = mk(p−1)(q−1)+1 = (mk )(p−1)(q−1) m recordemos que φ(n) = (p − 1)(q − 1). Las claves p´blica y privada u u se calculan a partir de un n´mero que se obtiene como producto de dos primos grandes. si quiere recuperar un texto claro a partir del criptograma y la llave a p´blica. siempre y cuando m y n sean primos relativos. pero se le tiene como uno de los algoritmos asim´tricos m´s seguros. N´tese que e debe tener inversa m´dulo (p − 1)(q − 1). u o o Para generar un par de llaves (KP . n) ser´ la clave u a p´blica. Ya que en nuestro caso n es compuesto. e pero se desaconsej´ su uso a partir de la versi´n 5 en favor de otros algoritmos. por lo que. Kp ). (d. este c´lculo resulta pr´cticamente imposible. a un problema de factorizaci´n (ver secci´n 5. seg´n la ecuaci´n (5.144 12. Esta o a inversa puede calcularse f´cilmente empleando el Algoritmo Extendido de Euclides. Sujeto a m´ltiples controversias. en primer lugar se eligen aleatoriamente dos n´meros primos grandes. y estuvo bajo patente de los Laboratorios RSA hasta el 20 de septiembre de 2000. puede ocurrir que no sea primo relativo con m. podemos llevar a cabo el siguiente razonamiento: buscamos un n´mero u a tal que ma ≡ 1 Manuel J. Despu´s se calcula el producto n = pq. Algoritmos Asim´tricos de Cifrado e Leonard Adleman. u e Escogeremos ahora un n´mero e primo relativo con (p − 1)(q − 1). Lucena L´pez o (mod n) Criptograf´ y Seguridad en Computadores ıa (mod n) (12. (mk )(p−1)(q−1) = 1. que por entonces o o s´ eran libres. las primeras versiones de PGP (ver cap´ ıtulo 14) lo incorporaban como m´todo de cifrado y firma digital.

n— sean lo suficientemente grandes. Aplicando el Teorema de Fermat (expresi´n 5. en lugar de usar la f´rmula que dimos en la demostraci´n del teorema. por lo que a = mcm(p − 1. para la clave a n a de descifrado. por lo tanto.3) para facilitar o los c´lculos a la hora de descifrar un mensaje. con lo a u que n tendr´ 400 bits.12. Por esta raz´n. tenemos que a debe ser m´ltiplo de (p − 1) o u y de (q − 1). en muchos lugares se propone a o obtener d de forma que: de ≡ 1 (mod mcm(p − 1. los c´lculos m´s r´pidos.4). Obtendremos un mensaje cifrado ligeramente m´s grande. se plantea el siguiente sistema de congruencias: [c mod p][d [c mod q][d mod (p−1)] mod (q−1)] ≡ m1 ≡ m2 (mod p) (mod q) Evidentemente. En muchos casos. cogeremos p y q con un n´mero grande de bits. y esto representa un problema computacionalmente intratable. Para decodificar 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—. En la pr´ctica. N´tese que los valores [d mod (p − 1)]. q − 1). en consecuencia. vemos que el segundo sumando es igual a m2 − m1 . o o emplearemos otra ligeramente distinta: m = m1 + p[(m2 − m1 )p1 (mod q)] Es inmediato comprobar que esta expresi´n es igual a m1 m´dulo p. se suelen incluir en la clave privada—. y por lo tanto m´s manejables. Manuel J. por ejemplo 200. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . se a calcula p1 = p−1 (mod q). Si por el contrario tomamos o o m´dulo q. 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 codificaci´n de cada uno. q − 1)) con lo que obtendremos valores m´s peque˜os. a a a o [d mod (q − 1)] y p1 pueden tenerse calculados de antemano —y. si quiere recuperar la clave privada a partir de la p´blica. Para ello se incluyen p y q en la llave privada. y. Para recuperar el o ´ o mensaje original m. y obtendremos bloques de 399 bits. debe conocer los u factores p y q de n. siempre que p y q —y. estas ecuaciones tienen una soluci´n unica m m´dulo n.2. puesto o a que estar´ compuesto por bloques de 400 bits. y cuando se desea descifrar un mensaje c. o a Con ello conseguimos que el m´dulo a la hora de hacer las exponenciaciones sea sensiblemente o menor. El Algoritmo RSA 145 Tiene que cumplirse que ma ≡ 1 (mod p) y ma ≡ 1 (mod q). el razonamiento dado inicialmente para demostrar el buen funcionamiento del algoritmo sigue siendo v´lido. por lo que nos quedar´ m2 . de hecho. se suele utilizar el Teorema Chino del Resto (secci´n 5. Ya que el m´ ınimo com´n m´ltiplo de (p − 1) u u y (q − 1) divide a (p − 1)(q − 1). El atacante. ya que p y q dividen a n.

por lo que la anterior afirmaci´n se considera en la e u o pr´ctica cierta. Nadie ha demostrado que no pueda surgir un m´todo en el futuro que permita descifrar un mensaje sin usar la clave privada y sin e factorizar el m´dulo n. De todas formas. ıcil Aparte de factorizar n. p − 1)] · [1 + mcd(e − 1. Por otra parte.2. u e Se puede comprobar que. o Otro punto que cabr´ preguntarse es qu´ pasar´ si los primos p y q que escogemos realıa e ıa mente fueran compuestos. q − 1)] Manuel J. podr´ ıamos intentar calcular φ(n) directamente. o probar por la fuerza bruta tratando de encontrar la clave privada.3) En realidad. ı Claves D´biles en RSA e Se puede demostrar matem´ticamente que existen ciertos casos para los cuales el algoritmo a RSA deja el mensaje original tal cual.1). De hecho. Pero obs´rvese que si aplicamos.7). por lo que jam´s tendremos la absoluta seguridad de que p y q son reala mente primos. las probabilidades de que el n´mero escogido pase el test y o u 60 : resulta m´s f´cil que nos toque la primitiva y que siga siendo primo son de una contra 2 a a simult´neamente nos parta un rayo (tabla 1. Algoritmos Asim´tricos de Cifrado e 12.2 Vulnerabilidades de RSA Aunque el algoritmo RSA es bastante seguro conceptualmente. por ejemplo. 12. el a algoritmo RSA simplemente no funcionar´ ıa. En realidad el hecho de tener que factorizar un n´mero para descifrar un o u mensaje sin la clave privada es una mera conjetura. Recordemos que los algoritmos de prueba de primos que conocemos son probabil´ ısticos. En esta secci´n e o comentaremos estas posibles vulnerabilidades. siempre hay mensajes que quedan inalterados al ser codificados mediante RSA. existen algunos puntos d´biles en la forma de utilizarlo que pueden ser aprovechados por un atacante.2. Ambos ataques son m´s costosos compua tacionalmente que la propia factorizaci´n de n.1 Seguridad del Algoritmo RSA T´cnicamente no es del todo cierto que el algoritmo RSA deposite su fuerza en el problema e de la factorizaci´n. sea cual sea el valor de n. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . este m´todo podr´ ser empleado como una nueva o e ıa t´cnica para factorizar n´meros enteros. siendo n = pq y e el exponente para codificar. afortunadamente. Nuestro objetivo ser´ reducir al m´ a ınimo el n´mero de ´stos.146 12. existen estudios que demuestran que incluso recuperar s´lo algunos a o bits del mensaje original resulta tan dif´ como descifrar el mensaje entero. es decir me = m (mod n) (12. si p o q fueran compuestos. as´ como la forma de evitar que surjan. σn = [1 + mcd(e − 1. treinta pasadas del algoritmo e de Rabin-Miller (secci´n 5.

2. Hasta hace relativamente poco se recomendaban 512 bits. se o puede calcular σn a la hora de generar las llaves p´blica y privada. No obstante.12. con p y q primos. n Ataques de Intermediario El ataque de intermediario (figura 12. sea roto anal´ ıticamente. que certifique e e e u la autenticidad de la clave.3) puede darse con cualquier algoritmo asim´trico. aprovechando los u a ultimos avances en la optimizaci´n de algoritmos espec´ ´ o ıficos para esta tarea. 9. una clave de 1024 o bits parece a todas luces demasiado corta como para proteger informaci´n por m´s de unos o a pocos a˜os. El Algoritmo RSA 147 es el n´mero de valores de m que quedan igual al ser codificados. Si hacemos que p = 1 + 2p y u q = 1 + 2q . como medida de precauci´n. Teniendo en cuenta los avances de la tecnolog´ y suponiendo que el algoritmo RSA no ıa. 2 ´ p —an´logamente o a ocurre con q —. 3(p + a 1). deberemos escoger la longitud de la clave en funci´n del tiempo que o queramos que nuestra informaci´n permanezca en secreto. Afortunadamente. ´ Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . obteniendo la clave de B y enviando a A u una clave falsa kC creada por ´l. si bien se recomienda el uso de claves no inferiores a 1024 bits. y que C quiere espiarla. Adi Shamir present´ el denominado dispositivo o Twinkle. C lo interceptar´ de nuevo. Ni A a ni B son conscientes de que sus mensajes est´n siendo interceptados. los cinco ultimos son extremadamente ´ improbables. C se interpone. Por eso se nos recomienda cuando instalamos paquetes como el PGP que firmemos todas las claves sobre las que tengamos certeza de su autenticidad. Cuando A codifique el mensaje. 2(p + 1). y (p + 1)(q + 1). a La unica manera de evitar esto consiste en asegurar a A que la clave p´blica que tiene de B ´ u es aut´ntica. e Supongamos que A quiere establecer una comunicaci´n con B. o Ataques de Texto en Claro Escogido Existe una familia de ataques a RSA que explotan la posibilidad de que un usuario codifique y firme un unico mensaje empleando el mismo par de llaves. y s´lamente esas. 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. 2(q + 1). Para ello nada mejor que ´sta est´ firmada por un amigo com´n. un ingenio capaz de factorizar n´meros de manera muy r´pida. u Claves Demasiado Cortas Actualmente se considera segura una clave RSA con una longitud de n de al menos 768 bits. e a decodific´ndolo con su clave propia y empleando KB para recodificarlo y enviarlo a B. 3(p + 1). Los valores posibles de σn ser´n entonces 4. Efectivamente. a´n no construido. Cuando o A le solicite a B su clave p´blica KB . que permiten certificar la autenticidad de las claves sin necesidad de centralizar el proceso. pero en mayo de 1999. Para que el ataque surta efecto. Este dispositivo. En la actualidad existen los llamados anillos de confianza. por lo que no deben preocuparnos. 6. entonces mcd(e − 1. p − 1) puede valer 1.

y envi´rselos a la v´ a ıctima para que los firme. e1 . e2 . Si e1 y e2 son primos relativos. nunca sobre el mensaje en s´ o ı. Sin embargo. se pueden calcular dos mensajes individuales m1 y m2 . si calculamos obtendr´ ıamos un m1 2 md md = md 1 2 obtendremos el mensaje m firmado. ser´ m´s r´pido generar tantos pares de ıa a a a llaves como queramos. tales que m1 m2 = m. aparentemente inofensivos. a necesidad de la llave privada.148 12. Entonces d y md . si lo hacemos as´ un atacante podr´ decodificar nuestros mensajes sin ı. en lugar de tener que emplear dos n´meros primos diferentes en cada u caso. (mod n) Ataques de M´dulo Com´ n o u Podr´ pensarse que. Aunque desconozcamos d. e la firma debe hacerse codificando el mensaje completo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Otro tipo de ataque con texto claro escogido podr´ ser el siguiente: para falsificar una firma ıa sobre un mensaje m. c1 y c2 . que codificamos empleando dos claves de cifrado diferentes e1 y e2 . Por ello se recomienda que las firmas digitales se lleven a cabo siempre sobre una e funci´n resumen del mensaje. Sea m el texto claro. el Algoritmo Extendido de Euclides nos permitir´ encontrar r y s tales que a re1 + se2 = 1 Manuel J.3: Ataque de intermediario para un algoritmo asim´trico. Los criptogramas que obtenemos son los siguientes: c1 = me1 c2 = me2 (mod n) (mod n) El atacante conoce pues n. una vez generados p y q. no el resultado de una funci´n resumen o sobre ´l. Algoritmos Asim´tricos de Cifrado e C KC KB KC m A E Kc (m) KB E K (m) B Kp B KB Figura 12.

El algoritmo queda como sigue: 1. sino una informaci´n compartida por los dos comunicantes. Lucena L´pez o (mod p) Criptograf´ y Seguridad en Computadores ıa . pero precio u samente eso es lo que suele ocurrir en la gran mayor´ de los casos. 12. En primer lugar. La ventaja de este sistema es que no son necesarias llaves o p´blicas en el sentido estricto.3 12. por el cone trario. si n es de 400 bits.4. Esta informaci´n es p´blica y conocida por o u p ambos. una estrategia razonable ser´ coger bloques ıa de 392 bits (que es un n´mero exacto de bytes) e incluirles siete bits aleatorios por la izquierda.12. A escoge un n´mero aleatorio x.3. existe la posibilidad de que un atacante o pueda romper el sistema.3. que se e o emplea fundamentalmente para acordar una clave com´n entre dos interlocutores. Por ejemplo. Firmar y Codificar Con el algoritmo RSA nunca se debe firmar un mensaje despu´s de codificarlo.3). con 2 ≤ α ≤ p − 2. Por lo tanto. debe firmarse primero. se deben ıa generar p y q diferentes para cada par de claves. si d es demasiado bajo. u Cuando decodifiquemos simplemente ignoraremos esos siete bits. Por otra parte. se calcula un n´mero primo o u p y un generador α de Z∗ . Esto se soluciona rellenando los m que se codifican con bits aleatorios por la izquierda. Otros Algoritmos Asim´tricos e Ahora podemos hacer el siguiente c´lculo a cr cs = me1 r me2 s = me1 r+e2 s = m1 1 2 (mod n) 149 Recordemos que esto s´lo se cumple si e1 y e2 son n´meros primos relativos. Existen ataques que aprovechan mensajes primero codificados y luego firmados. aunque se empleen funciones resumen. tambi´n existen mecanismos para romper el sistema. e por lo que se recomienda emplear valores altos para d. basado en el problema de Diffie-Hellman (secci´n 5.1 Otros Algoritmos Asim´tricos e Algoritmo de Diffie-Hellman Es un algoritmo asim´trico. Ataques de Exponente Bajo Si el exponente de codificaci´n e es demasiado bajo. comprendido entre 1 y p − 2 y env´ a B el valor u ıa αx Manuel J. u o Sean A y B los interlocutores en cuesti´n. a trav´s de u e un canal de comunicaci´n inseguro.

5) Criptograf´ y Seguridad en Computadores ıa . y env´ a A el valor u a ıa αy 3. u Escogiendo n primo. por lo que podemos emplear realmente un n no primo. a 12. (mod p). Se basa en el problema de los logaritmos discretos. Se calcula entonces y = px (mod n) La llave p´blica es (p. garantizamos que sea cual sea el valor de p. n). y calcular a = pk (mod n) b = (m − xa)k −1 (mod (n − 1)) (12. B recoge αx y calcula K = (αx )y 4. p3 . B escoge un n´mero aleatorio y. 2. n−1) = u 1.} es una permutaci´n del conjunto {1. pero posteriormente se extenn di´ tambi´n para codificar mensajes. an´logamente al paso anterior. Lucena L´pez o (mod n) (12.150 12. el conjunto {p. . A recoge αy y calcula K = (αy )x (mod p) (mod p). o Para generar un par de llaves. Firmas Digitales de ElGamal Para firmar un mensaje m basta con escoger un n´mero k aleatorio.3.4) La firma la constituye el par (a. Algoritmos Asim´tricos de Cifrado e 2. En cuanto al valor k. b). siempre que el conjunto generado por las potencias de p sea lo suficientemente grande. que o e est´ ´ a ıntimamente relacionado con el de la factorizaci´n. tal que mcd(k. mientras que la llave privada es x. p2 . . debe mantenerse en secreto y ser diferente cada vez.2 Algoritmo de ElGamal Fue dise˜ado en un principio para producir firmas digitales. N´tese que esto no es necesario para que o o el algoritmo funcione. sin que nadie que capture los mensajes transmitidos pueda repetir el c´lculo. y en el de Diffie-Hellman. Puesto que x e y no viajan por la red. al final A y B acaban compartiendo el valor de K. · · · . y. se escoge un n´mero primo n y dos n´meros aleatorios p y u u x menores que n. La firma se verifica comprobando que y a ab = pm Manuel J. n − 1}.

Lucena L´pez o = = = = (am1 + bm3 ) (am1 + bm4 ) (am2 + bm3 ) (am2 + bm4 ) (mod (mod (mod (mod n) n) n) n) (12. simplemente se calcula c = m2 (mod n) (12. de doble longitud que el texto original. o u En primer lugar escogemos dos n´meros primos. ´ u n = pq. Los cuatro posibles mensajes originales son ma mb mc md Manuel J. que tambi´n ser´ mantenido en secreto.12.9) Criptograf´ y Seguridad en Computadores ıa . Estos primos son la clave privada. Para decodificar se calcula m = b · a−x (mod n) (12. b) es el texto cifrado. Este problema se ha demostrado que es equivalente al de la o u factorizaci´n de dicho n´mero. Otros Algoritmos Asim´tricos e Codificaci´n de ElGamal o 151 Para codificar el mensaje m se escoge primero un n´mero aleatorio k primo relativo con u (n−1).8) La decodificaci´n del mensaje se hace calculando lo siguiente: o m1 m2 m3 m4 = = = = c(p+1)/4 (mod p) (p − c(p+1)/4 ) (mod p) c(q+1)/4 (mod q) (q − c(q+1)/4 ) (mod q) Luego se escogen a y b tales que a = q(q −1 (mod p)) y b = p(p−1 (mod q)). p y q. Calculamos entonces las siguientes expresiones e a a = pk (mod n) b = y k m (mod n) (12.7) 12.6) El par (a.3. La clave p´blica es su producto.3 Algoritmo de Rabin El sistema de llave asim´trica de Rabin se basa en el problema de calcular raices cuadradas e m´dulo un n´mero compuesto.3. Para codificar un mensaje m. ambos congruentes con 3 m´dulo 4 u o (los dos ultimos bits a 1).

α. Seleccionar un n´mero aleatorio k tal que 0 < k < q. suponiendo que conoce la clave p´blica a u (p. u a e por lo que el mensaje deber´ incluir alg´n tipo de informaci´n para que el receptor pueda a u o distinguirlo de los otros. 3. e e Creaci´n del par llave p´ blica-llave privada o u El algoritmo de generaci´n de claves es el siguiente: o 1. no existe ning´n mecanismo para decidir cu´l de los cuatro es el aut´ntico. data de 1991. Este algoritmo.3. s). y que adem´s q sea divisor de (p − 1). u Generaci´n y verificaci´n de la firma o o Siendo h la salida de una funci´n resumen sobre el mensaje m (ver secci´n 13. 7. p 4. q. Calcular y = αa mod p. a 3. u 2. es una variante del m´todo asim´trico de ElGamal. u 2.4 Algoritmo DSA El algoritmo DSA (Digital Signature Algorithm) es una parte el est´ndar de firma digital a DSS (Digital Signature Standard). Calcular s = k −1 (h + ar) mod q. Escoger t tal que 0 ≤ t ≤ 8. 12. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .1). La clave p´blica es (p. propuesto por el NIST. y). tal que 1 ≤ a ≤ q − 1 u 6. q. Algoritmos Asim´tricos de Cifrado e Desgraciadamente. y). La clave privada es a. El destinatario efectuar´ las siguientes operaciones. Calcular k −1 mod q. 4. α. Seleccionar un n´mero primo q tal que 2159 < q < 2160 . para verificar la autenticidad de la firma: Manuel J. Si α = 1 volver al paso 3. Seleccionar un n´mero entero aleatorio a. 5. y seleccionar un n´mero primo p tal que 2511+64t < p < u 2512+64t . 5. Seleccionar un elemento g ∈ Z∗ y calcular α = g (p−1)/q mod p. Calcular r = (αk mod p) mod q.152 12. La firma del mensaje m es el par (r. la geneo o raci´n de una firma se hace mediante el siguiente algoritmo: o 1.

Para descifrar. y calculamos y = xp La clave p´blica vendr´ dada por (p. definido en GF (n) ´ GF (2n ). Esto nos va a permitir trasladar cualquier algoritmo criptogr´fico definido sobre enteros. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .11) Siendo m el mensaje original representado como un punto de la curva. El criptograma ser´ el a par (a. Calcular ω = s−1 mod q. de cardinal n.1 Cifrado de ElGamal sobre Curvas El´ ıpticas Sea un grupo de curva el´ ıptica. 4. 5.4. al ´mbito de a a las curvas el´ ıpticas. b). Calcular v = (αu1 y u2 mod p) mod q. o 153 12. Aceptar la firma si y s´lo si v = r. 12. en esta secci´n veremos c´mo se redefine el algoritmo de o o cifrado de ElGamal. o Sea el conjunto p . se obtiene un a n nivel de seguridad equiparable. con claves m´s peque˜as. Seguidamente a u calculamos las expresiones a = kp b = m + ky (12. u a a El cifrado se har´ escogiendo un n´mero aleatorio k primo relativo con n.10) (12. muchos algoritmos que se apoyan en el problema o de la factorizaci´n pueden ser replanteados para descansar sobre los logaritmos discretos. En caso contrario. Criptograf´ de Curva El´ ıa ıptica 1. ser´ suficiente con calcular a Manuel J. rechazar la firma.4.12.4. Escogemos entonces un valor entero x comprendido entre 1 y n − 1. n). y que se apoye en este problema. Sea p un punto de la curva. 3. Calcular u1 = ω · h mod q y u2 = ω · r mod q. A modo de ejemplo. 2. Calcular el valor de h a partir de m. o De hecho. Verificar que 0 < r < q y 0 < s < q. y. 6. y la clave privada ser´ x. La ventaja que se obtiene es que. existen versiones de curva el´ ıptica de muchos de los algoritmos asim´tricos m´s e a populares.4 Criptograf´ de Curva El´ ıa ıptica Como vimos en la secci´n 6. para curvas el´ o ıpticas existe un problema an´logo al de los a logaritmos discretos en grupos finitos de enteros. Debido a la relaci´n existente entre ambos.

y e actualizarlo si fuera necesario. o e 2. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . y su a o transparencia permite usarlo de manera inmediata sin modificar apenas los programas ya existentes. cuando una aplicaci´n o o quiere enviar informaci´n a otra computadora. o que se activa de forma autom´tica cuando es necesario. la capa SSL la recoge y la codifica. Su fundamento consiste en interponer una fase de codificaci´n de los mensajes antes de o enviarlos por la red. de TLS— son evidentes. de tipo sim´trico.509.12) 12. que veremos en la secci´n 13.. Desde hace tiempo los principales navegadores de Internet incorporan un m´dulo SSL. permite establecer conexiones seguras a trav´s de Internet. Si o ´ a bien su nivel de implantaci´n a´n no es muy elevado. Manuel J. la mayor´ o a ıa de los navegadores incorporaban un nivel de seguridad bastante pobre (claves sim´tricas de e 40 bits). o e o que se codifica mediante la clave de sesi´n acordada en la fase de saludo. a´n sin saber lo que significa. Una comunicaci´n SSL o TLS consta fundamentalmente de dos fases: o 1. Una vez que se ha establecido la comunicaci´n. los dos sistemas escogen una o u clave de sesi´n. Consiste b´sicamente en una identificaci´n mutua de los a o interlocutores.UU.154 12. ya que liberan a las aplicaciones de llevar a cabo las operaciones criptogr´ficas antes de enviar la informaci´n. En esta fase se produce el aut´ntico intercambio de informaci´n. ya que de hecho se basa en la versi´n 3. debido a a las restricciones de exportaci´n de material criptogr´fico existentes en los EE. para u enga˜ar a uno de los interlocutores. Hasta diciembre de 1999. o TLS (descrito en el documento RFC 2246) es un nuevo protocolo muy similar a SSL. desarrollado originalmente por la empresa Netscape. mejor´ndolo en algunos aspectos. de forma sencilla y transpae rente. o Cada sesi´n lleva asociado un identificador unico que evita la posibilidad de que un atacante o ´ escuche la red y repita exactamente lo mismo que ha o´ ıdo. para la cual se emplean habitualmente los certificados X. el m´dulo SSL del otro ordenador se e a o encarga de decodificar los mensajes y se los pasa como texto claro a la aplicaci´n destinataria. todo parece indicar que est´ llamado a o u a ser su sustituto. Fase de saludo (handshaking). n Las ventajas de SSL —y en el futuro.6.5 Los Protocolos SSL y TLS El protocolo SSL (Secure Sockets Layer).0 de este ultimo. para luego o enviarla a su destino a trav´s de la red. Tras el intercambio de claves p´blicas. Algoritmos Asim´tricos de Cifrado e m = −(xa) + b (12. por lo que conviene comprobar qu´ nivel de seguridad soporta nuestro navegador. An´logamente. Fase de comunicaci´n.

6 Ejercicios Propuestos 1. 4510. 40818. 6813. Manuel J. 7557. 39760. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 7557.12. c) Descifrar el mensaje C. 18584. Ejercicios Propuestos 155 12. o b) Calcular la llave privada Kp . 14747 a) Factorizar el m´dulo N .6. Suponga un sistema RSA con los siguientes par´metros: a • N = 44173 • KP = 25277 • C = 8767. 39760. 4510.

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Algoritmos Asim´tricos de Cifrado e Manuel J.156 12.

e a 13. etc. As´ ımismo vimos que la autentificaci´n deb´ hacerse empleando una funci´n resumen y no o ıa o Manuel J. Este mecanismo se o conoce habitualmente como firma digital. En este caso se trata de garantizar la o n presencia de un usuario legal en el sistema. el iris. ıa e ıa o es decir. o a Este dispositivo puede estar solo o tratarse de una llave electr´nica que sustituye a la o contrase˜a para identificar a un usuario. poder asegurar que un mensaje m proviene de un emisor A y no de cualquier otro. • Autentificaci´n de dispositivo. la voz. o de forma que podamos asegurarnos de que no es una falsificaci´n. Funciones Resumen En el cap´ ıtulo 12 vimos que la criptograf´ asim´trica permit´ autentificar informaci´n. su integridad. De todas formas. Queremos garantizar la procedencia de un mensaje conocido. la retina. Dicha caracter´ ıstica puede ser su origen. e como pueden ser las huellas digitales. Se trata de garantizar la presencia de un dispositivo v´lido.1 Firmas Digitales. n N´tese que la autentificaci´n de usuario por medio de alguna caracter´ o o ıstica biom´trica. puede reducirse a un problema de autentificaci´n de dispositivo. El usuario deber´ poseer una contrase˜a a n secreta que le permita identificarse.Cap´ ıtulo 13 M´todos de Autentificaci´n e o Por autentificaci´n entenderemos cualquier m´todo que nos permita comprobar de manera o e segura alguna caracter´ ıstica sobre un objeto. solo que el dispositivo en este caso es el propio o usuario. • Autentificaci´n de usuario mediante contrase˜a. en este cap´ ıtulo unicamente trataremos m´todos de autentificaci´n ´ e o basados en t´cnicas criptogr´ficas. su identidad. etc. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Consideraremos tres grandes tipos dentro de los m´todos de e autentificaci´n: o • Autentificaci´n de mensaje.

o tambi´n conocidas como MDC (modification detection codes). pero bastar´ con generar aproximadamente 232 mensajes aleatorios para que aparecieran ıa Manuel J. es computacionalmente intratable recuperar m. Sabemos que un mensaje m puede ser autentificado codificando con la llave privada Kp el resultado de aplicarle una funci´n resumen. luego n(n − 1) 1 · > 0. En el caso de una firma de 64 bits. tales que r(m) = r(m ). y en un grupo de n personas hay n n(n − 1)/2 parejas diferentes de personas.5 2 365 Esto se cumple si n > 19. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .5 365 luego n > 182. En esta secci´n estudiaremos dichas funciones resumen. 13. M´todos de Autentificaci´n e o codificando el mensaje completo. la funci´n resumen r(x) debe cumplir o adem´s ciertas caracter´ a ısticas: • r(m) es de longitud fija. • Dado m. EKp (r(m)). independientemente de la longitud de m. Cualquiera que tenga la llave p´blica correspondiente estar´ en condiciones u a de decodificar y verificar la firma.1. La consecuencia de esta paradoja es que aunque resulte muy dif´ dado m calcular un m ıcil tal que r(m) = r(m ). veamos primero el a siguiente ejemplo: ¿Cu´l es la cantidad de personas que hay que poner en una habitaci´n para a o que la probabilidad de que el cumplea˜os de una de ellas sea el mismo d´ que el m´ supere n ıa ıo 50%? Debemos calcular n tal que n 1 > 0. • Dado m. Esa informaci´n adicional (que o o denominaremos firma o signatura del mensaje m) s´lo puede ser generada por el poseedor de o la clave privada Kp . Sin embargo. es mucho menos costoso buscar dos valores aleatorios m y m . necesitar´ ıamos 264 mensajes dado un m para obtener el m .158 13. es computacionalmente intratable obtener un m tal que r(m) = r(m ). a • Dado r(m). ¿cu´l ser´ la cantidad de gente necesaria para la probabilidad a ıa de que dos personas cualesquiera tengan el mismo cumplea˜os supere el 50%? Cada pareja n tiene una probabilidad 1/365 de compartir el cumplea˜os. Para que sea segura.1 Longitud Adecuada para una Signatura Para decidir cu´l debe ser la longitud apropiada de una signatura. una cantidad sorprendentemente mucho menor que 182. que nos van a permitir crear e firmas digitales. es f´cil calcular r(m).

El alargamiento se lleva a cabo u a˜adiendo un 1 seguido de tantos ceros como sea necesario. En esta secci´n veremos dos algoritmos de generaci´n de firmas: MD5 y SHA-1.1. siendo 160 bits el valor m´s usado. o dos con la misma signatura —en general. ıa Hemos de a˜adir pues a nuestra lista de condiciones sobre las funciones resumen la siguienn te: • Debe ser dif´ encontrar dos mensajes aleatorios. tales que r(m) = r(m ). En general.3 Algoritmo MD5 Se trata de uno de los m´s populares algoritmos de generaci´n de signaturas. Estas funciones se encadenan de forma iterativa. dise˜ado por Ron Rivest. se suele incluir en alguno de los bloques del mensaje m —al principio o al final—. si la primera cantidad es muy grande.1. Firmas Digitales. El primer ataque nos llevar´ 600. que dan o como resultado bloques de longitud n a partir de bloques de longitud m. la segunda cantidad es aproximadamente su ra´ cuadrada—. empezando por el byte menos significativo. y produce una salida de 128 bits. m y m .13. Resultado de una serie de mejoras o sobre el algoritmo MD4.000 ız ıa a˜os con una computadora que generara un mill´n de mensajes por segundo. Funciones Resumen 159 Mi r i−1 Función Resumen ri Figura 13. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o o 13. En segundo lugar. las funciones resumen se basan en la idea de funciones de compresi´n.2 Estructura de una Funci´n Resumen o En general. ıcil Hoy por hoy se recomienda emplear signaturas de al menos 128 bits. se a˜aden 64 bits n n con el valor de b. a 13. De esta forma se reducen las probabilidades de que dos mensajes con diferentes longitudes den el mismo valor en su resumen.1. debido en a o gran parte a su inclusi´n en las primeras versiones de PGP. haciendo que la entrada en el paso i sea funci´n del i-´simo o e bloque del mensaje y de la salida del paso i − 1 (ver figura 13. mientras que el n o segundo necesitar´ apenas una hora.1: Estructura iterativa de una funci´n resumen.1). De esta forma tenemos el mensaje Manuel J. en primer lugar se alarga m hasta que su longitud sea exactamente 64 bits inferior a un m´ltiplo de 512. informaci´n sobre la o longitud total del mensaje. procesa los mensajes de entrada en bloques n de 512 bits. Siendo m un mensaje de b bits de longitud.

c. a. d) + mj + ti ) s) s) s) s) donde la funci´n a s representa desplazar circularmente el valor a s bits a la izquieda. Luego definiremos las siguientes cuatro funciones: F (X. 17. A8304613) Los n´meros que aqu´ se indican son los valores enteros hexadecimales tal y como se introducir´ en el u ı ıan c´digo fuente de un programa. y as´ sucesivamente. a. Y. En primer lugar copiaremos los valores de A. d. F 57C0F AF ) F F (d. mj . c. N´tese que de esta forma. c. c. b. Z) H(X. 17. b. C1BDCEEE) F F (a. a. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 4787C62A) F F (c. 22. m1 . mj . suponiendo que el byte menos significativo quede en la direcci´n de memoria o o m´s baja (little endian). s. Y. d. b. mj . 12. c. a. d. • Primera Ronda: F F (a.B. c. M´todos de Autentificaci´n e o como un n´mero entero de bloques de 512 bits.c y d. ti ) GG(a. E8C7B756) F F (c. D76AA478) F F (d. Seguidamente. d) + mj + ti ) a = b + ((a + I(b. b. 12. Y. b.160 13. m5 . c. 242070DB) F F (b. m0 . se inicializan cuatro registros de 32 bits con los siguientes valores hexadecimales 1 : A B C D = = = = 67452301 EF CDAB89 98BADCF E 10325476 Posteriormente comienza el lazo principal del algoritmo. b. c. Z) G(X. que se repetir´ para cada bloque a de 512 bits del mensaje. c.C y D en otras cuatro variables. s. d. b. d. d) + mj + ti ) a = b + ((a + G(b. m2 .b. m3 . d. y adem´s le hemos a˜adido informaci´n sobre u a n o su longitud. tendr´ ıamos que en las posiciones correspondientes al registro A aparecer´ los bytes 01-23-45-67. b. c. si escribimos los valores hexadecimales byte a byte de cada a o registro en el orden en que quedan en la memoria. d. m6 . c. 7. mj . 7. y e definiremos otras cuatro funciones: F F (a. b. m4 . ti ) representa representa representa representa a = b + ((a + F (b. a. Z) I(X. 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). d. d) + mj + ti ) a = b + ((a + H(b. d. b. c. Y. o Las 64 operaciones que se realizan en total quedan agrupadas en cuatro rondas. ti ) II(a. c. ıan ı 1 Manuel J. ti ) HH(a. a. s. s.

b. 23. a. b. d. 289B7EC6) HH(d. Funciones Resumen F F (b. F F F A3942) HH(d. c. b. 9. a. m3 . b. c. a. c. a. b. 12. a. c. Firmas Digitales. c. b. a. D4EF 3085) HH(b. b. a. d. b. c. b. m13 . 04881D05) HH(a. a. 895CD7BE) F F (a. m15 . 4. m1 . F DE5380C) HH(a. c. m9 . c. a. a. d. F D469501) F F (a. 14. A4BEEA44) HH(d. a. c. 22. m12 . F F F F 5BB1) F F (b. d. d. a. a. c. b. d. m6 . 11. a. 23. m11 . 5. 265E5A51) GG(b. a. b. 4. F 61E2562) GG(d. F D987193) F F (c. m4 . m12 . 14. c. c. 16. m7 . b. E6DB99E5) HH(c. D62F 105D) GG(d. b. m12 . C33707D6) GG(c. b. m1 . 14. d. b. A679438E) F F (b. m11 . d. b. d. m0 . 11. a. d. b. d. 7. 12. F 6BB4B60) HH(b. 9. b. d. 1F A27CF 8) Manuel J. 455A14ED) GG(a. c. c. d. 8771F 681) HH(c. d. b. a. 8D2A4C8A) • Tercera Ronda: HH(a. c. m14 . c. c. 9. a. 11. 49B40821) • Segunda Ronda: GG(a. d. 16. A9E3E905) GG(d. 16. E9B6C7AA) GG(a. 9. F CEF A3F 8) GG(c. m8 . d. 4. F 4D50D87) GG(b. d. c. m11 . m13 . d. 21E1CDE6) GG(d. 22.13. a. a. m10 . c. D9D4D039) HH(d. d. 5. 16. m9 . m14 . c. b. 7. b. a. 11. d. d. a. EAA127F A) HH(c. c. 5. a. m4 . m2 . d. m8 . b. 22. b. c. a. m13 .1. BEBF BC70) HH(a. d. a. b. 20. c. m8 . m9 . 4. 17. 02441453) GG(c. m10 . c. b. a. a. c. c. m7 . m6 . 4BDECF A9) HH(c. c. 23. d. m7 . b. 17. 676F 02D9) GG(b. a. d. m5 . d. b. d. m3 . 20. d. C040B340) GG(c. c. m15 . 6B901122) F F (d. m10 . Lucena L´pez o 161 Criptograf´ y Seguridad en Computadores ıa . 20. 6D9D6122) HH(b. c. a. a. d. b. 8B44F 7AF ) F F (c. D8A1E681) GG(b. b. b. 698098D8) F F (d. m0 . 14. m15 . c. m14 . m5 . E7D3F BC8) GG(a. d. 20. 5.

b. 13. Produce firmas de 160 bits. C4AC5665) • Cuarta Ronda: II(a. 15. para ser incluido en el est´ndar DSS a (Digital Signature Standard). b. m5 . 10. d. M´todos de Autentificaci´n e o Finalmente. c. SHA-1 emplea cinco registros de 32 bits en lugar de cuatro: Manuel J. o En los ultimos tiempos el algoritmo MD5 ha mostrado ciertas debilidades. m9 . a. m12 . a. b. 85845DD1) II(a. d. b. m4 . a. c. F C93A039) II(a. diremos que las constantes ti empleadas en cada paso son la parte entera del resultado de la operaci´n 232 · abs(sin(i)). EB86D391) 13. d. c. 15. a. c. 21. aunque sin ´ implicaciones pr´cticas reales. ya que favorece a los o propios intereses de la NSA que el algoritmo sea totalmente seguro. a˜adiendo al final del mensaje e n un uno seguido de tantos ceros como sea necesario hasta completar 448 bits en el ultimo ´ bloque. 6. c. b. A diferencia de MD5. 6F A87E4F ) II(d. a. si bien su uso tiende a disminuir. m7 . o A modo de curiosidad. 8F 0CCC92) II(c. F E2CE6E0) II(c. 2AD7D2BB) II(b. 15. a partir de bloques de 512 bits del mensaje original. d. d. m10 . m8 . m13 . c. d. d.C y D. d. a. c. 10. b. 21. b. 15. 6. para luego yuxtaponer la longitud en bytes del propio mensaje.B. m11 . c. 655B59C3) II(d. 432AF F 97) II(c. c. b. b. a. m1 . El algoritmo es similar a MD5. 23. y se inicializa igual que ´ste. A3014314) II(b. b.c y d son sumados con A.162 HH(b. por lo que se sigue considerando en la actualidad un algoritmo a seguro. d. a. 10. a. b. 4E0811A1) II(a. F 7537E82) II(d. m15 . BD3AF 235) II(c. se procesa el siguiente bloque de datos. d. d. m2 . AB9423A7) II(b. m6 . 10. El resultado final del algoritmo es la concatenaci´n de A. 6. F F EF F 47D) II(b. m0 . F 4292244) II(d. d. 6. c. Al contrario que los algoritmos de cifrado propuestos por esta organizaci´n. b. m3 .4 El Algoritmo SHA-1 El algoritmo SHA-1 fue desarrollado por la NSA. d.B. a. m14 . m2 . los valores resultantes de a. 21. a. c. b. SHA-1 se considera seguro y libre de puertas traseras. 21.1. a. estando i representado en radianes. a. c. c. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .C y D.

la G en la o segunda (t entre 20 y 39) y en la cuarta (t entre 60 y 79). se a a copian en cinco variables. lo cual supuso modificar su nombre y cambiar el antiguo (SHA) por SHA-1. d y e. c. El lazo principal tiene cuatro rondas con 20 operaciones cada una: F (X. 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 . Adem´s se emplean cuatro constantes. . diremos que la NSA introdujo el desplazamiento a la izquierda para corregir una posible debilidad del algoritmo. Funciones Resumen 163 A B C D E = = = = = 67452301 EF CDAB89 98BADCF E 10325476 C3D2E1F 0 Una vez que los cinco valores est´n inicializados (ver la nota al pie de la p´gina 160). El lazo principal del algoritmo es entonces el siguiente: FOR t = 0 TO 79 i = t div 20 T mp = (a 5) + A(b. Z) = (X ∧ Y ) ∨ ((¬X) ∧ Z) G(X. a. Z) = (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z) La operaci´n F se emplea en la primera ronda (t comprendido entre 0 y 19). . Z) = X ⊕ Y ⊕ Z H(X. Y. Y. Firmas Digitales. y la H en la tercera (t entre 40 y 59). d) + e + wt + Ki e=d d=c c = b 30 b=a a = T mp Manuel J.13. 15 wt = (wt−3 ⊕ wt−8 ⊕ wt−14 ⊕ wt−16 ) 1 para t = 16 . 79 Como curiosidad.1. c. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . b. . Y.

Despu´s los valores de a a e son sumados a los registros A a E y e el algoritmo contin´a con el siguiente bloque de datos. la tarjeta ıa ser´ aut´ntica. Los MAC se caracterizan fundae mentalmente por el empleo de una clave secreta para poder calcular la integridad del mensaje. el efecto conseguido es que o el receptor puede. En cada tarjeta se graba una unica clave. 19]. vistos en la secci´n anterior. H para t ∈ [40. Distinguiremos entonces dos casos claramente diferenciados: a) El sistema se comunica con el usuario. M´todos de Autentificaci´n e o siendo A la funci´n F . y emplear la salida correspondiente e o al cifrado del ultimo bloque. 59]). mediante el c´lculo de dicha funci´n. que le permite identificarse positivamente frente al sistema. 13.164 13.5 Funciones de Autentificaci´n de Mensaje o Frente a los MDC. G para t ∈ [20.3 Autentificaci´n de Usuario Mediante Contrase˜ a o n El sistema de autentificaci´n basa su funcionamiento en una informaci´n secreta conocida o o unicamente por el usuario.6—. El usuario carece de acceso a los archivos del sistema y no tiene posibilidad a Manuel J. N´tese que a e e o ıo o la clave k en ning´n momento queda comprometida. ´ 13. Si ambos mensajes codificados coinciden.2 Autentificaci´n de Dispositivos o Los algoritmos sim´tricos pueden ser empleados para autentificar dispositivos. libre de posibles ataques del exterior.1. Supon´ dremos que el usuario se encuentra en un terminal seguro. siempre e que ´stos permitan hacer operaciones de cifrado/descifrado a la vez que impidan acceder e f´ ısicamente a la clave que llevan almacenada. u 13. pero lo m´s com´n es cifrar el mensaje mediante un a u algoritmo sim´trico en modo CBC —ver secci´n 10. pero ´ste no puede entrar en ´l. Puesto que dicha clave s´lo es conocida por el emisor y el receptor. u 13. es decir. existe otra clase de funciones resumen. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o llamada gen´ricamente MAC (message authentication codes). 39] y o u [60. Posteriormente se env´ X a la tarjeta para que lo codifique. G o H seg´n el valor de t (F para t ∈ [0. comprobar tanto la integridad como a o la procedencia del mensaje.2). Un ejemplo de este mecanismo de autentificaci´n o lo tenemos en las tarjetas que emplean los tel´fonos GSM. y usan una clave k almacenada en un lugar de la memoria e que no se puede leer desde el exterior. Existen multitud de MAC diferentes. Dichas tarjetas llevan implementado e un algoritmo sim´trico de cifrado. de la que se ´ guarda una copia en lugar seguro. Pi´nsese en un cajero e e e autom´tico. Si la compa˜´ quiere identificar una tarjeta simplemente nıa genera un bloque de bits aleatorio X y calcula su criptograma Ek (X) asociado. Esta t´cnica se conoce como autentificaci´n por desaf´ (fig. 79].

ıa Manuel J.13. que ofreen la posibilidad a los usuarios operar con el sistema desde terminales remotos. Por un lado deberemos tomar las mismas a medidas que en el caso anterior para protegernos de los ataques por la fuerza bruta. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . En versiones antiguas de sistemas operativos UNIX el fichero con las contrase˜as pod´ ser descargado por n ıa cualquier usuario an´nimo —que tiene un nombre concreto y una contrase˜a gen´rica—.3. ser´ suficiente con limitar el n´mero de intentos desde un a u terminal concreto e introducir retardos cuando la contrase˜a introducida sea err´nea. De esta forma ser´ dif´ adivinar una contrase˜a que n a ıcil n se ajuste a una signatura concreta. n o El caso b es considerablemente m´s complejo. es imposible averiguar la clave de un usuario. Autentificaci´n de Usuario Mediante Contrase˜a o n 165 K X Algoritmo Simétrico E (X) K =? X Algoritmo Simétrico K’ E K’ (X) Figura 13. pero eso no evita que en algunos casos ´ste pueda quedar e comprometido. Basta con que el sistema mantenga a la lista de usuarios y sus contrase˜as asociadas en un archivo. Para protegerse de los ataques por la fuerza bruta. unicamente puede llevar a cabo una serie de opearciones muy e ´ restringidas. b) El sistema permite al usuario entrar.2: Esquema de autentificaci´n por desaf´ o ıo.3. El mecanismo que surge entonces de manera inmediata consiste en almacenar en el fichero de claves la signatura de cada contrase˜a. Como este archivo no puede ser n consultado desde el exterior. y por otro hemos de tener en cuenta que cualquier usuario puede acceder a algunos ficheros. Desgraciadamente todav´ hay personas que emplean su fecha de nacimiento.1 Ataques Mediante Diccionario El principal problema de las palabras clave son las elecciones poco afortunadas por parte de los usuarios. por o n e lo que las palabras clave no pueden ser almacenadas como texto claro en dicho fichero. Este es el caso de los sistemas operativos como UNIX. ejecutar aplicaciones en ´l. Los sistemas operativos modernos impiden adem´s leer el a fichero de claves de forma directa. El primer caso es el m´s simple y sencillo de resolver. 13. Normalmente el usuario tiene acceso m´s o menos restringido a los archivos del sistema y a puede ejecutar programas.

se tardar´ alg´n tiempo en conseguirla. cambiar todas las claves. 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 fichero de claves del sistema. En el fichero de claves n se almacenar´. Carecer de significado.166 13. F´ciles de recordar. que no es ni m´s ni menos que un conjunto de bits n a aleatorios que se a˜aden a la palabra clave antes de calcular su firma. 2. ıa 3. si la contrase˜a n buscada aparece en el diccionario. Puesto que una palabra clave ha de ser memorizada. De todas formas. Una contrase˜a jam´s debe significar nada. Deben ser memorizadas. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Para esto podemos seguir reglas como que la palabra se pueda pronunciar en voz alta. Hemos de partir de la premisa de que toda palabra clave caer´ tarde o temprano. 5. o que responda a alg´n acr´nimo m´s o menos u o a complejo. Una buena contrase˜a debe constar de al menos ocho letras. por lo que ser´ muy recomendable que nuestras contraa a se˜as sean cambiadas peri´dicamente. en especial aquellos que pertenezcan a lugares o personajes de ficci´n. 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. una a clave de estas caracter´ ısticas podr´ ser descubierta en menos de quince horas. bastar´ con compararlas con las de ıa su diccionario para obtener en pocos segundos una contrase˜a que le permita entrar en el n sistema.000 claves de ocho caracteres a cabe (sin comprimir) en un diskette de 3 pulgadas y media. ´ e u tenemos unicamente unos dos mil millones de posibilidades. a Y lo m´s importante: ante cualquier sospecha. n Pensemos que si empleamos unicamente seis caracteres alfanum´ricos (n´meros y letras). M´todos de Autentificaci´n e o el nombre de alg´n familiar o la matr´ u ıcula del coche como contrase˜a. Deberemos pues a a u evitar a toda costa emplear contrase˜as que puedan aparecer en un diccionario. a Manuel J. la sal necesaria para su obtenci´n. Evitemos los nombres a u propios. puesto que entonces n a aumentar´ la probabilidad de que aparezca en alg´n diccionario. El siguiente paso ser´ ıa ıa precalcular las signaturas de todas las claves que hay en su diccionario. n u Para protegerse frente a este tipo de ataques se introduce en el c´lculo de la signatura a de la contrase˜a la denominada sal. Teniendo en cuenta que hay ´ programas para PC capaces de probar m´s de cuarenta mil claves en un segundo. Deben ser modificadas con frecuencia. o 4. y que ha habido casos en los que con diccionarios de este tama˜o se ha conseguido averiguar un sorprendente n´mero de claves. Tengamos en cuenta que un diccionario con m´s de 150. En este punto no debemos olvidar que hay que evitar a toda costa palabras que signifiquen algo. Un atacante avispado n podr´ tratar de generar millones de claves y construir un diccionario. n Adem´s de estar bien salvaguardadas. junto con la signatura. las palabras clave han de cumplir una serie de a condiciones para que puedan considerarse seguras: 1. Suficientemente complejas. no tiene sentido a emplear contrase˜as dif´ n ıciles de recordar. Una contrase˜a jam´s debe ser escrita en un papel. Si de alguna manera ha obtenido el fichero con las signaturas de las claves. el unico inconveniente para el atacante ser´ que en lugar de ´ a obtenerla de forma casi instant´nea. por razones n a obvias.

o Obviamente. los metemos cada uno en un sobre y los enviamos al banco. 13. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Hoy por hoy no existe un unico protocolo aceptado universalmente. Es inc´modo de transportar. Para ello creamos cien cheques por o la misma cantidad. Este las comprueba y o o ıan firma digitalmente una. El objetivo de los pa´ a la hora de fabricar dinero siempre ha sido evitar ıses su falsificaci´n —lo cual equivale a facilitar su autentificaci´n—. que verificar´ su sello y abonar´ su importe. Es lo que denominaremos dinero o electr´nico. Supongamos que queremos enviar un cheque an´nimo. ´ aunque s´ muchas propuestas. hubieran resistido sin problemas e el ataque. El a destinatario podr´ cobrar la orden de pago cuando quiera. restando adem´s la cantidad correspondiente en nuestra cuenta. Adem´s debe ser cambiado peri´dicamente o a o debido a la renovaci´n de las monedas. nos referimos al dinero electr´nico. Parece bastante razonable o o dedicar pues un breve comentario dentro de esta obra al dinero como objeto de autentificaci´n.13. e por lo que la privacidad queda comprometida. Si bien el compromiso de este tipo de archivos es un grave inconveniente. Para sustituirlo est´n las tarjetas de cr´dito y los o a e cheques. permaneciendo a salvo. y adem´s garantizar´ el anonimato en las o a a transacciones comerciales. Cuando entreguemos ese cheque y alguien quiera cobrarlo. restando la cantidad de nuestra cuenta corriente. Al que queda le pone su sello sin abrirlo y nos lo devuelve. n Muchos de los usuarios comprobaban horrorizados como sus claves eran reveladas en cuesti´n o de pocos minutos por cualquier programa que realizara ataques por diccionario en un simple PC dom´stico.4 Dinero Electr´nico o Si hay un concepto contrario al de autentificaci´n. Dinero Electr´nico o 167 Para ilustrar este apartado usaremos como ejemplo la desafortunada revelaci´n del archivo o con las signaturas de todas las contrase˜as de algunos proveedores de servicios de Internet. El problema que ´stos presentan es que rompen el anonimato de quien los emplea. El banco abre noventa y nueve al azar y se asegura de que todos llevan la misma cantidad. Por ello haremos unicamente una breve introducci´n acerca de ı ´ o c´mo deber´ ser un protocolo a t´ o ıa ıtulo meramente ilustrativo. Existen sin embargo protocolos que permiten el intercambio de capital de una forma segura y an´nima. 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). Tenemos ahora un cheque validado por el banco. bastar´ con a que lo lleve al banco. Y cuando hablao e o mos de falsificar casi inmediatamente nos viene a la cabeza el objeto m´s falsificado de la a historia: el dinero. sin conocer su procedencia. o El dinero f´ ısico es algo bastante engorroso. a El problema que surge con el protocolo anterior es que una orden se puede cobrar varias Manuel J. ´ste es falsificaci´n.4. se desgasta con o facilidad y suele ser susceptible de falsificaci´n. si las e claves que ´ste almacena hubieran tenido suficiente calidad. o Las ventajas que reportar´ su extensi´n en un futuro pr´ximo son evidentes. Facilitar´ el a o o a comercio electr´nico y las compras por Internet. a a Este protocolo se puede implementar mediante criptograf´ asim´trica de la siguiente forma: ıa e ´ se construyen cien ´rdenes de pago an´nimas y se env´ al banco.

precisamente porque permiten recuperar el anonimato al comprador —y. ninguno de estos protocolos acaba de imponerse.168 13. Si lo ha hecho el cobrador. puesto que no se almacena ning´n dato personal. ıa e • Basados en Criptograf´ Asim´trica: Proyecto CAFE. Ahora cada orden de pago es unica. y que mis clientes emplean sus tarjetas de cr´dito e para comprar. u 13. Podr´ ıa a ıamos. por tanto. pero no sabe qui´n de los dos ha cometido fraude: el que paga o el que cobra. ıa o o Supongamos que queremos enviar un mensaje secreto a un interlocutor que se encuentra en un lugar donde la Criptograf´ est´ prohibida. a En cuanto a los diferentes protocolos propuestos hoy en d´ hay que decir que son muy ıa dispares. por lo que podr´ ser capturado. ECash. Y todo ello sin violar la intimidad de los compradores. cuando la orden de pago aparece duplicada. por lo que el banco puede detectar una orden dupli´ cada. a o unicamente tendr´ que comprobar la cadena de identificaci´n de la orden para asegurarse de ´ a o que no la ha pagado ya. cuando pague la cantidad. enviarle una imagen de mapa de bits y utilizar el bit menos significativo del color de cada p´ para guardar cada ıxel Manuel J. Los clasificaremos ıa a en tres grupos. El banco. Por desgracia. por ejemplo. seg´n el tipo de criptograf´ en que se basen: u ıa • Basados en Criptograf´ Sim´trica: NetBill y NetCheque. lo cual me permite elaborar campa˜as de mercado mucho a n m´s eficientes. puede ser localizado sin problemas. El protocolo completo de dinero ıa electr´nico hace que la identidad del pagador quede comprometida si env´ dos veces la misma o ıa orden de pago. • No basados en Criptograf´ ISN. Existen e mecanismos que permiten saber. y Anonymous Credit Cards (ACC) de los Laboratorios AT & Bell. y que todav´ ninguno de ellos ha sido adoptado como est´ndar. Yo puedo almacenar un perfil de cada tarjeta de cr´dito con la que se pagan los e productos. CyberCash. en el que se reflejen detalladamente sus h´bitos de consumo. de forma que sea muy dif´ tener dos ´rdenes con la misma cadena. Para evitar esto basta con incluir una cadena aleatoria en cada orden de pago. incluso desconociendo los datos personales del titular. Cada una de las cien ıcil o o ´rdenes tendr´ pues una cadena de identificaci´n diferente. pero n ¿y si quien env´ dos veces la misma orden es el pagador?. Compuserve y FIRST VIRTUAL Holdings Incorporaıa: ted. qui´n de los dos e ha intentado enga˜ar. por ejemplo incluyendo publicidad de los productos que a cada cliente m´s le a a puedan interesar cada vez que se le sirva un pedido. Pero mucho nos tememos que hay una causa mucho m´s sutil y poderosa a a la vez en esta sociedad mercantilizada. su privacidad—. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . M´todos de Autentificaci´n e o veces. Supongamos por un momento que yo poseo una gran empresa que vende todo tipo de productos. iKP ıa e de IBM. y dificultan el rastreo de capital.5 Esteganograf´ ıa La esteganograf´ consiste en almacenar informaci´n camuflada dentro de otra informaci´n. NetCash.

el mensaje ha sido enviado como texto claro. a los que a˜adir´ n n ıamos un c´digo de identificaci´n o o (signatura).6 Certificados X.509 Un certificado es esencialmente una clave p´blica y un identificador. de forma que s´lo los paquetes que corresponden al mensaje contengan una sigo natura correcta. El formato de certificados X. Manuel J. a u El est´ndar X.509 (Recomendaci´n X. en el ıa a que el algoritmo de autentificaci´n simplemente considera v´lidos los bits menos significativos o a de cada p´ y descarta todos los dem´s. Si el observador externo conociera el algoritmo que hemos empleado para camuflar nuestro mensaje dentro de la imagen. ıxel a 13. y su utilidad es demostrar que una clave p´blica pertenece a o u un usuario concreto. pero. reduciendo este problema a una o ´ simple autentificaci´n. Certificados X.Autentication Framework”. o Volvamos al ejemplo de la imagen de mapa de bits. ıa a Sin embargo. sin ser codificado en ning´n mou mento. e ıa. 1988) es el m´s com´n y extendido en la actualidad. s´lo quien disponga del mecanismo de autentificaci´n correcto o o —que podr´ depender de una clave— estar´ en condiciones de recuperar el mensaje original. que s´lo sirve para despistar. u a Podr´ ıamos generar una gran cantidad de informaci´n irrelevante y subdividirla junto con o el mensaje original en peque˜os paquetes.509 169 bit del mensaje secreto. • Nombre del certificador. Existe sin embargo una forma m´s elegante de proteger la informaci´n sin emplear a o ning´n algoritmo criptogr´fico. Existen infinidad de m´todos de esteganograf´ s´lo limitados por la imaginaci´n.509 s´lo define la sintaxis de los certificados. Si enviamos una secuencia de paquetes en la que aparece el mensaje original entremezclado con la basura. u • Identificador del algoritmo empleado para la firma digital. o o ¿por qu´ incluir esta t´cnica dentro del cap´ e e ıtulo dedicado a autentificaci´n? La respuesta es o sencilla: en general la esteganograf´ consiste en mezclar informaci´n util con informaci´n de ıa o ´ o alguna otra naturaleza. Alguien podr´ proponer entonces emplear ıa a ıa la Criptograf´ y almacenar en los bits menos significativos de cada p´ la versi´n codificada ıa ıxel o del mensaje. o • N´mero de serie. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . el sistema quedar´ autom´ticamente comprometido. y contempla los siguientes campos: u • Versi´n.509 de CCITT:“The o Directory . Podr´ o ıamos definirla entonces como el mecanismo que nos permite entresacar la informaci´n util. La imagen ser´ v´lida y un observador externo nunca sospechar´ que a a a en realidad esconde un mensaje secreto. firmados digitalmente u por una autoridad de certificaci´n.6.13. por lo que no est´ atado a a o a ning´n algoritmo en particular. El ejemplo del mapa de bits no ser´ m´s que un caso particular de este esquema.

´ • Identificador unico de sujeto. Manuel J. Hemos de hacer notar u ıan que en este caso. • Clave p´blica del sujeto. u • Identificador unico de certificador. M´todos de Autentificaci´n e o • Firma digital de todo lo anterior generada por el certificador. ´ • Extensiones. si bien tendremos un certificado v´lido. • Nombre del sujeto. despu´s de habernos u o e identificado positivamente frente a ella. Existen autoridades de certificaci´n que. El mecanismo que debe emplearse para conseguir un certificado X. de tal forma que nosotros podemos a verificar la autenticidad de un certificado comprobando la firma de la autoridad que lo emiti´. 13.170 • Periodo de validez. nuestro certificador podr´ descifrar a a todos nuestros mensajes. Normalmente las claves p´blicas de los certificadores de mayor nivel se suelen publicar incluso en papel para que u cualquiera pueda verificarlas. Estos certificados se estructuran de forma jer´rquica. De esta a forma vamos subiendo en la jerarqu´ hasta llegar al nivel m´s alto. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . generan un par llave p´blica-privada y lo env´ al usuario. frente a una o solicitud. que deber´ estar ocupado ıa a a por un certificador que goce de la confianza de toda la comunidad. o que a su vez tendr´ otro certificado expedido por otra autoridad de rango superior.509 es enviar nuestra clave p´blica —¡nunca la privada!— a la autoridad de certificaci´n.

El anillo de claves es un unico fichero en el ´ que se pueden efectuar operaciones de extracci´n e inserci´n de claves de manera sencilla. PGP se ha convertido en uno de los mecanismos m´s populares n a y fiables para mantener la seguridad y privacidad en las comunicaciones. con el objetivo de satisfacer o a los desconfiados y a los curiosos. y se trata de un proyecto iniciado a principios de los 90 por Phill Zimmerman. Esta facilidad en la gesti´n de claves es una de las causas fundmentales o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . pasando por la o codificaci´n autom´tica y transparente de todo el tr´fico TCP/IP (PGPnet). con el abandono de la empresa por parte de Zimmerman. Si uno emplea algoritmos asim´tricos. especialmente a trav´s del correo electr´nico.Cap´ ıtulo 14 PGP El nombre PGP responde a las siglas pretty good privacy (privacidad bastante buena). lo cual a est´ dando lugar a la aparici´n de m´ltiples productos PGP. Hasta e o n principios de 2001 la pol´ ıtica de distribuci´n de PGP consisti´ en permitir su uso gratuito para o o usos no comerciales y en publicar el c´digo fuente en su integridad. potentes y baratas que acercaran la criptograf´ ıa seria al usuario movi´ a su autor a desarrollar una aplicaci´n que llenara este hueco. que no es ni m´s ni menos que el lugar que este programa proporciona para a que el usuario guarde todas las claves que posee. o Actualmente PGP se ha convertido en un est´ndar internacional (RFC 2440). en febrero de 2001. que permiten desde cifrar correo a o u electr´nico hasta a codificar particiones enteras del disco duro (PGPDisk). y por ello tal vez su punto m´s fuerte sea preıa e a cisamente la gran facilidad que ofrece al usuario a la hora de gestionar sus claves p´blicas y u privadas.1 Fundamentos e Historia de PGP PGP trabaja con criptograf´ asim´trica. tanto para peque˜os usuarios como para grandes empresas. adem´s de la clave privada propia. debe poseer las claves p´blicas de todos sus e u interlocutores. Con PGP surge el concepto de anillo de a claves (o llavero). el cdigo fuente dej´ de publicarse. o a a 14. y o o que adem´s proporciona un mecanismo de identificaci´n y autentificaci´n de llaves completo a o o y simple de utilizar. o o Con el paso de los a˜os. Sin embargo. La total ausencia por aquel entonces de herramientas sencillas.

1) con una clave generada aleatoriamente (clave de sesi´n) y e o posteriormente codifica la clave haciendo uso de la llave p´blica del destinatario. PGP descifrar´ el mensaje. La primera versi´n era complen o tamente diferente a los PGP posteriores.com). y naci´ la priu o o o mera versi´n internacional de PGP. PGP utiliza un m´todo de generaci´n de n´meros pseudoaleatorios muy seguro —una secuencia e o u aleatoria pura es imposible de conseguir.1 Estructura de PGP Codificaci´n de Mensajes o Como el lector ya sabe. Por esta raz´n PGP cifra primero el mensaje empleando un ala e o goritmo sim´trico (ver figura 14.172 que han hecho a PGP tan popular. por lo que si el anillo de claves privadas quedara comprometido. La contrase˜a servir´ para que u a n n a PGP abra nuestro anillo de claves privadas y compruebe si tenemos una clave que permita decodificar el mensaje. ´ En alg´n momento una versi´n de PGP atraves´ las fronteras de EE. como se dijo en el cap´ ıtulo 8—. ya que supuestamente se hab´ o a n ıan violado las restrictivas leyes de exportaci´n de material criptogr´fico que poseen los Estados o a Unidos. o u Cuando se trata de decodificar el mensaje. En caso afirmativo. denominada PGPi. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . gran parte de la seguridad de PGP reside en la calidad del generador aleatorio que se emplea para calcular las claves de sesi´n.pgpi. puesto que si alguien logra o predecir la secuencia de claves que estamos usando. lo que le supuso a Phill Zimmermann o una investigaci´n de m´s de tres a˜os por parte del FBI. y sigue siendo utilizada por mucha o gente en la actualidad. N´tese que siempre a o que queramos hacer uso de una clave privada. todo ello de forma transparente.UU. Para la versi´n 5 de PGP se subsan´ este problema exportando una versi´n impresa o o o del c´digo fuente. No obstante. La familia de a e versiones 2. los algoritmos sim´tricos de cifrado son considerablemente m´s e a r´pidos que los asim´tricos. que luego era reconstruida y compilada en Europa (m´s informaci´n en o a o http://www. un atacante a´n tendr´ que averiguar nuestra contrase˜a para descifrar nuestros mensajes. Los PGP 2. Como puede comprenderse. y protege criptogr´fia Manuel J. u ıa n si nuestro archivo de claves privadas cayera en malas manos.x. habremos de suministrar a PGP la contrase˜a n correspondiente.x fue la que alcanz´ una mayor popularidad.x. podr´ descifrar todos nuestros mensajes a independientemente de los destinatarios a los que vayan dirigidos. adem´s de ser incompatible con ´stos.x emplean unicamente los algoritmos IDEA. por lo que unicamente debemos preocuparnos ´ de indicar el mensaje a codificar y la lista de identificadores de los destinatarios. PGP La historia de PGP se remonta a comienzos de los a˜os 90. N´tese que o para que el mensaje pueda ser leido por m´ltiples destinatarios basta con que se incluya en la u cabecera la clave de sesi´n codificada con cada una de las claves p´blicas correspondientes. 14. RSA y MD5. Afortunadamente. lo mejor ser´ revocar todas las a claves que tuviera almacenadas y generar otras nuevas. Dicha clave es u extraida convenientemente del anillo de claves p´blicas a partir del identificador suministrado u por el usuario.2. 14. PGP simplemente busca en la cabecera las claves p´blicas con las que est´ codificado y nos pide una contrase˜a.2 14.

todas las salidas de PGP (mensajes codificados.3).2.4). o e La firma digital o signatura puede ser a˜adida al fichero u obtenida en otro fichero aparte.2.3. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .BIN—. n Esta opci´n es muy util si queremos firmar un fichero ejecutable. 14. como ocurre con GnuPG. y a de hecho diferentes computadoras y sistemas operativos los interpretan de manera distinta. etc. firmas digitales. y por lo tanto habremos de evitar que quede expuesto.4 y 13. Obviamente. que pueden ser almacenadas en archivos.1: Codificaci´n de un mensaje PGP o camente la semilla que necesita1 . por lo que no necesitan almacenar una semilla aleatoria. o ´ 14.) consisten en u u secuencias binarias. 1 Manuel J. que emplea la funci´n resumen SHA-1 y el algoritmo asim´trio DSA (secciones 12. Recordemos que el c´digo ASCII original emplea 7 bits para codificar cada letra.1. Sin embargo. lo cual o quiere decir que los caracteres situados por encima del valor ASCII 127 no est´n definidos. Algunas implementaciones de PGP emplean otras fuentes de aleatoriedad. en la mayor´ de ıa los casos puede interesarnos enviar la informaci´n mediante correo electr´nico.1. No obstante. las primeras versiones de PGP obtienen en primer lugar la signatura MD5 (ver secci´n 13. que posteriormente se codifica empleando la o clave privada RSA correspondiente. por ejemplo.3 Armaduras ASCII Una de las funcionalidades m´s utiles de PGP consiste en la posibilidad de generar una a ´ armadura ASCII para cualquiera de sus salidas.2.14. consideraremos sensible al fichero que contiene dicha semilla —normalmente RANDSEED. claves p´blicas extraidas de alg´n anillo.2 Firma Digital En lo que se refiere a la firma digital. Las versiones actuales implementan el algoritmo DSS. Estructura de PGP 173 Clave(s) Pública(s) del (los) Receptor(es) Generador Aleatorio Clave Simétrica Algoritmo Asimétrico Clave Simétrica Cifrada Mensaje Cifrado Texto Claro Algoritmo Simétrico Figura 14. o almacenarla o o en archivos de texto.

el tabulador. ya que muchas o o pasarelas de correo no admiten caracteres por encima de 127. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . el fin de fichero. y adem´s truncan las l´ a ıneas demasiado largas.gnupg. Con este conjunto de c´digos ASCII podremos representar exactamente 6 bits.174 14. El resultado es una secuencia de caracteres que pueden ser tratados como texto est´ndar. adem´s de ser manipulados en cualquier editor. como el retorno de carro. por ejemplo 72. ıan Como ejemplo incluyo mi clave p´blica PGP —firmada con la de Kript´polis— en formato u o ASCII: -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.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 n756q7XUxjnTtpou+lWyj6VkN/EvrZDf9E7ikPUqRuIsHzJ5PUwypWtXaKg2HfCl Manuel J.4 (GNU/Linux) Comment: For info see http://www. etc.0. por lo que una secuencia o de tres bytes (24 bits) podr´ codificarse mediante cuatro de estos caracteres. La o idea es elegir 64 caracteres imprimibles (que no sean de control) dentro de esos 128. por lo que podr´ alterar los mensajes si viajaran en otro formato. PGP Tambi´n hay que tener en cuenta que entre los 128 caracteres ASCII se encuentran muchos que e representan c´digos de control. Existe la ventaja adicional de a a que esta representaci´n es apropiada para ser enviada por correo electr´nico. Esta cadena a de s´ ımbolos resultante se trocea colocando en cada l´ ınea un n´mero razonable de s´ u ımbolos.

el resto de s´ u ımbolos y caracteres de control simplemente ser´ ignorado. la versi´n de PGP con que fue generada.5 Distribuci´n de Claves y Redes de Confianza o PGP. almacena las claves en unas estructuras denominadas anillos. como son el identificador del usuario que la emiti´. u u los n´meros. y lo suficientemente corta como ´ para que pueda ser escrita en un papel. como cualquier sistema basado en clave p´blica. posee una serie de datos. y los signos ‘/’y ‘+’.2.2. Por ejemplo. almacenadas en un fichero. bastar´ con que llamara ıa por tel´fono al autor.2). y la denominada o o o huella digital (fingerprint). uno para las claves p´blicas (PUBRING. Un anillo no es m´s que una colecci´n de claves. como ya se ha dicho.14.4 Gesti´n de Claves o PGP. La huella digital se emplea para asegurar la autenticidad de una clave.2.PKR) y otro para las privadas a u (SECRING. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . 14. Cualquiera podr´ copiar esta clave p´blica a mano (¡!) o emplear un OCR para a ıa u introducirla en su anillo de claves correspondiente. o leida de viva voz. es susceptible a ataques de interu mediario (secci´n 12. pues se trata de una secuencia ´ ´ hexadecimal lo suficientemente larga como para que sea unica.SKR). y le pididera que le leyera la su huella digital. la huella digital de la clave p´blica anterior u es: 9E2B 9D14 CBCE FE12 16A8 C103 48B2 5161 69AB 5784 Si alguien quisiera asegurarse de la autenticidad de dicha clave. e 14. adem´s de la secuencia binaria correspondiente para el algoritmo a concreto donde se emplee. los unicos s´ ´ ımbolos empleados son las letras may´sculas y min´sculas. la fecha de expiraci´n. Estructura de PGP 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. Cada una de las claves. Cada usuaa o rio tendr´ dos anillos.2. Este ultimo campo es bastante util. Esto nos obliga a establecer mecanismos para asegurarnos de que o Manuel J. aunque es mejor descargarla a trav´s de e Internet.

La primera se puede calcular autom´ticamente.176 14. 14. Para generarlo es necesaria la clave privada. por lo que en ning´n caso merecer´ nuestra confianza. De hecho. aunque presenta una ´ o estrtuctura que la hace f´cilmente extensible. sin asegurarse de su autenticidad. hoy por hoy. u a Cuando una clave queda comprometida. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .6 Otros PGP La r´pida popularizaci´n de PGP entre ciertos sectores de la comunidad de Internet. pero esa persona puede dedicarse a firmar todas las claves que le llegan. yo puedo tener la seguridad de que una clave pertenece a una pero sona. es la huella digital. parece claro que PGP proporciona un nivel de seguriu dad que nada tiene que envidiar a cualquier otro sistema criptogr´fico jam´s desarrollado. que ´ son usuarios capaces de invalidar nuestra propia clave. PGP proporcionar´ un gran rendimiento si se emplea correca tamente. y otras corresponden a aplicaciones de tipo comercial. Una de las cosas que permite esto. aunque no la unica. ´ PGP permite a un usuario firmar claves. puede ser revocada por su autor. y el a o desarrollo del est´ndar p´blico Open PGP. Hay que e distinguir entonces dos tipos de confianza: aquella que nos permite creer en la validez de una clave. que funciona en m´ltiples plataformas. segura y util para cualquier usuario. a a ¿Qu´ sentido tiene. y de esta forma podremos confiar en la autenticidad de una clave siempre que ´sta venga firmada por una persona de confianza. en funci´n de que las firmas que contenga una clave a o pertenezcan a personas de confianza. Especial menci´n merece la implementaci´n de Open PGP que est´ llevando a cabo el o o a proyecto GNU: GnuPG (GNU Privacy Guard). PGP una clave procede realmente de quien nosotros creemos. pues. como manejar claves de mayor longitud (PGPg). si ´stas parecen no existir? e e Como cualquier herramienta. podr´ a ıamos decir que es la implementaci´n de PGP m´s completa. sin hacer uso de la llave privada.2. y aquella que nos permite fiarnos de una persona como certificador de claves. pero la segunda ha de ser establecida manualmente. Muchas de ellas son desarrolladas por los propios usuarios. Por ejemplo. para mejorar alguna caracter´ ıstica. pero su uso inadecuado podr´ convertirlo en una protecci´n totalmente in´til. Para ello basta con generar y distribuir un certificado de revocaci´n que informar´ a todos los usuarios de o a que esa clave ya no es v´lida. Afortunadamente. Es ıa o u Manuel J. o a ´ 14.3 Vulnerabilidades de PGP Seg´n todo lo dicho hasta ahora. han hecho posible la proliferaci´n de variantes m´s a u o a o menos complejas del programa de Zimmerman. hablar de sus vulnerabilidades. y emu plea unicamente algoritmos de libre distribuci´n —entre ellos AES—. las ultimas versiones de PGP permiten nombrar revocadores de claves. por lo que en a muchos casos se recomienda generar con cada clave su certificado de revocaci´n y guardarlo o en lugar seguro. de forma que si perdemos la clave privada podamos revocarla de todas formas. No olvidemos que el hecho de que una clave sea aut´ntica no nos dice nada acerca de la persona e que la emiti´.

Esta protecci´n debe llevarse a cabo tanto frente al acceso de posibles curiosos. nuesa o tros llaveros (anillos de claves) y el fichero que alberga la semilla aleatoria. podr´ ıamos estar certificando claves falsas. el fallo descubierto en la versi´n 5. En este sentido. a o Manuel J. o Por ejemplo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . ya que si todos firm´ramos las claves a alegremente. Es la unica manera de o ´ que las redes de confianza puedan funcionar.14. a a u • Emitir revocaciones de nuestras claves al generarlas y guardarlas en lugar seguro. a • Escoger contrase˜as adecuadas. • Firmar s´lo las claves de cuya autenticidad estemos seguros.0 de PGP para UNIX.3 es v´lido para n o a PGP. Al margen de un uso correcto. Clasificaremos dichas vulnerabilidades en dos grupos claramente diferenciados: • Debidas a la implementaci´n: Estos agujeros de seguridad son provocados por una imo plementaci´n defectuosa de PGP. que es fundamental.0 a la 7. Todo lo comentado en la secci´n 13. en la que un inadecuado procesamiento de las armaduras ASCII permit´ a un atacante introducir ficheros en la computadora ıa de la v´ ıctima. • Proteger adecuadamente los archivos sensibles. l´gicamente. desde la 5. por lo que el fallo carece de inter´s pr´ctico. y corresponden a versiones concretas del programa. Vulnerabilidades de PGP 177 por ello que parece interesante llevar a cabo una peque˜a recapitulaci´n acerca de las buenas n o costumbres que har´n de PGP nuestro mejor aliado. se necesita acceso f´ ısico a la computadora de la v´ ıctima para manipular su clave privada. o el encontrado en todas las o versiones para Windows.0. • Intr´ ınsecas al protocolo: En este apartado habr´ que rese˜ar aquellos agujeros de seıa n guridad que son inherentes a la definici´n del est´ndar Open PGP. a o a principios de 2001 se hizo p´blica una t´cnica que permitir´ a un atacante falsificar firu e ıa mas digitales. Ser´n a el unico mecanismo v´lido para revocar una clave en caso de p´rdida del anillo priva´ a e do. la versi´n 6 de PGP permite nombrar revocadores para nuestras o claves.4.3. de forma que ´stos podr´n invalidarla en cualquier momento sin necesidad de e a nuestra clave privada. Afortunadamente. aunque e a suponemos que obligar´ a una revisi´n del protocolo. debemos mencionar que ultimamente ´ han sido detectados algunos fallos en las diversas implementaciones de PGP. En cualquier caso. como frente a una o posible p´rdida de los datos (¡recuerde que si pierde el archivo con su clave privada no e podr´ descifrar jam´s ning´n mensaje!). Estos archivos ser´n. que hac´ que o ıa las claves de sesi´n no fueran completamente aleatorias.

PGP Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .178 14.

Parte V Seguridad en Redes de Computadores Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

.

pero tanto o m´s a a o a importante que su procesamiento y almacenamiento es la posibilidad de poder transmitirla de forma eficiente. y esto s´lo n ıa a e o ser´ posible si los profesionales de la Inform´tica saben aportar soluciones que garanticen la a a seguridad de la informaci´n. Con tal nivel de o a a interconexi´n. ha sido encontrar lenguajes comunes para que computadoras de diferentes Manuel J. En este sentido las redes de computadoras n desempe˜an un papel fundamental en la Inform´tica moderna. Hemos de depositar nuestra confianza en la Criptograf´ para garantizar la confidencialidad ıa en las comunicaciones. Los ultimos avances en compresi´n y transmisi´n de datos ´ o o digitales permiten hoy por hoy transferir cantidades enormes de informaci´n a velocidades o que hace tan solo unos a˜os eran impensables. o 15. Uno de los mayores obst´culos que han tenido que ser superados para que las redes pudiea ran desarrollarse. Las ventajas de las redes en Inform´tica son evidentes. n a Pero hemos de tener en cuenta que la complejidad de las grandes redes y su car´cter p´blico a u convierte la protecci´n f´ o ısica de los canales de comunicaci´n en algo tremendamente dif´ o ıcil. En unos pocos a˜os la inmensa mayor´ de las empresas operar´n a trav´s de la Red.Cap´ ıtulo 15 Seguridad en Redes La r´pida expansi´n y popularizaci´n de Internet ha convertido a la seguridad en redes a o o en uno de los t´picos m´s importantes dentro de la Inform´tica moderna. circunstancia que a menudo pone en peligro la seguridad de los sistemas. los virus y los hackers campan a sus anchas.1 Importancia de las Redes La Inform´tica es la ciencia del tratamiento autom´tico de la informaci´n. pero muchas veces se minusvaloran a ciertos riesgos. aprovechando las deficientes medio das de seguridad tomadas por administradores y usuarios a los que esta nueva revoluci´n ha o cogido por sorpresa. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . La informaci´n tiene un tiempo de vida cada vez menor y la rapidez con la o que pueda viajar es algo crucial.

o En funci´n del tipo de red con el que trabajemos nos enfrentaremos a diferentes clases de o riesgos. en la mayor´ de los casos la o ıa mejor estrategia suele consistir en tratar de colarnos nosotros mismos para poner de manifiesto y corregir posteriormente los agujeros de seguridad que siempre encontraremos. que deber´n ser confeccionadas peri´dicamente. Ya sea por mala fe o descuido.2 Redes Internas El caso m´s sencillo de red que nos podemos encontrar corresponde al t´rmino LAN1 . almacenadas en un lugar a o diferente de aquel donde se encuentra la red. podemos cifrar un fichero antes o de transmitirlo por la red. Otro riesgo que se da en las redes locales. y protegidas adecuadamente contra incendios y accesos no deseados. a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . un usuario con demasiados privilegios puede destruir informaci´n. es el que viene del uso inadecuado del sistema por parte de los propios usuarios. por lo que estos permisos o deben ser asignados con mucho cuidado por parte de los administradores. el due˜o muchas veces cree que n n 1 Local Area Network. y en algunos casos hasta se contrata a hackers para que impartan cursillos de seguridad a los responsables de las redes de las empresas. que pueden ser minimizados llevando a cabo una adecuada pol´ ıtica de copias de respaldo. lo cual corresponder´ al nivel de abstracci´n mayor. Nuestro objetivo se centrar´ en aportar una serie a de directrices que nos permitan analizar cada situaci´n y establecer una correcta pol´ o ıtica de protecci´n de la informaci´n. o Uno de los riesgos dignos de menci´n en estos casos son las posibles p´rdidas de informaci´n o e o debidas a fallos f´ ısicos. ya que. sobre todo en peque˜as empresas. o podemos ıa o enviarlo en claro. En este sentido el protocolo TCP/IP se ha erigido como est´ndar a de facto en la industria de la Inform´tica. Esta estrategia se emplea cada vez con mayor frecuencia. pudiendo protegerlo f´ ısicamente. sin tratar de ser exhaustivos —ser´ imposible. En general todas las redes de computadoras se consa truyen conceptualmente sobre diferentes capas de abstracci´n. pero a trav´s de un protocolo de bajo nivel que cifre cada uno de los paquetes e de informaci´n en los que se va a subdividir el fichero en el momento de transmitirlo. red de ´rea local. dada ıa la inmensa cantidad de posibilidades—. Por ejemplo. Esta circunstancia es muy importante. de a e a ´mbito muy limitado geogr´ficamente —usualmente un unico edificio— con todos los coma ´ putadores interconectados a trav´s de unos cables de los que se es propietario. 15. La Criptograf´ podr´ entonces ıa a ser empleada en diferentes niveles de abstracci´n. Seguridad en Redes tipos pudieran entenderse. En este cap´ ıtulo haremos una breve reflexi´n sobre o algunos de los casos que pueden darse. que desarrollan tareas distintas o y proporcionan un protocolo unificado a las capas superiores. lo cual nos conducir´ inevitablemente a medidas de diferente naturaleza para garana tizar la seguridad en las comunicaciones. o o Ya que no existe una soluci´n universal para proteger una red. lo cual evita pr´cticamente cualquier peligro de falta de pria vacidad en la informaci´n. Esta ultima e ´ circunstancia nos va a permitir ejercer un control total sobre el canal de comunicaciones.182 15. a menudo infravalorado.

poniendo en serio peligro la integridad del sistema y entorpeciendo el trabajo del administrador o superusuario. como por ejemplo Kerberos Uno de los ultimos avances en redes locales son las denominadas WLAN3 . dentro de la red. pero todas ellas tienen en com´n la caracter´ u ıstica de que que en alg´n u momento la informaci´n viaja por canales sobre los que no se tiene ning´n tipo de control.3. existen muchos lugares donde n el cortafuegos est´ conectado a la red local y ´sta a su vez a la red externa (ver figura 15. la verificaci´n del identificador unico de la tarjeta de red concreta que debe estar o ´ conectada en cada punto. y permite a un computador identificarse positivamente dentro de o una red. 3 Wireless Local Area Network. o u Todas las t´cnicas que nos van a permitir llevar a cabo protecciones efectivas de los datos e deber´n hacer uso necesariamente de la Criptograf´ a ıa. Para identificar los posibles riesgos que presenta una red externa. la mayor parte de las redes externas e internas o est´n interconectadas. En principio. a a o suplantar a cualquier otro computador. por ejemplo un aulario de una universidad.3 Redes Externas Consideraremos red externa a aquella que. en el MIT o (Instituto Tecnol´gico de Massachusetts). o la adopci´n de protocolos de autentificaci´n de las computadoras o o 2.15. a 2 Manuel J. se apoye en un canal f´ ısico de comunicaci´n ajeno. en todo o en parte. pero pueden entra˜ar ciertos riesgos si se usan mal.1. Pi´nsese en un edificio corporativo con un acceso no muy a e restringido. que posee conexiones ethernet en todas sus dependencias. y luego es incapaz de resistir la tentaci´n de jugar o con ella. nada impedir´ a una persona conectar un ordenador port´til ıa a a una de esas conexiones para llevar a cabo un an´lisis del tr´fico de la red sin ser descubierta. por lo que se recomienda emplear protocolos de cifrado en las capas de mayor nivel. Una de las configuraciones m´s comunes consiste en el uso de una red local conectada al a exterior mediante un cortafuegos —computadora que filtra el tr´fico entre la red interna y a el exterior—. En la actualidad. Por ejemplo. como la deshabilitaci´n din´mica de las conexiones de red no utilizadas en cada o a momento. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Los cortafuegos son herramientas muy poderosas si se emplean adecuadamente. En estos casos ser´ conveniente llevar a cabo alg´n a u tipo de control. hemos de fijarnos 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. Redes Externas 183 debe conocer la clave del administrador. Existir´n redes externas de a a muy diferentes tipos. proporcionando una flexibilidad sin precedentes a las redes. 15. Existen redes internas en las que un control exhaustivo sobre el medio f´ ısico de transmisi´n o de datos es en la pr´ctica imposible.11 y 802. los protocolos propuestos hasta la fecha (IEEE 802. que podr´ permitir a un atacante analizar el tr´fico con relativa ıa a facilidad.11b) porporcionan un nivel de seguridad realmente deficiente. caso a e Kerberos es uno de los protocolos de autentificaci´n que forma parte del proyecto Athena. formando lo que conocemos como Internet. muy en boga ´ en la actualidad. red de ´rea local sin hilos. que basan su funcionamiento en el empleo de ondas de radio como canal de comunicaciones. Sin embargo.

como los antivirus. lo cual convierte a cualquier sistema en potencial v´ ıctima de estos personajes. existen programas espec´ a ıficos que nos protegen de ellos. Lo que ocurre en la mayor´ de los casos es que su necesidad ıa Manuel J. El problema es que para borrar sus huellas y dificultar el rastreo de sus acciones. Esta configuraci´n es la m´s sencilla y barata. Mucho menos comunes que los anteriores. y muchas veces la informaci´n ni siquiera es o destruida o comprometida. B: Configuraci´n correcta. En estos casos las v´ ıctimas son casi siempre grandes corporaciones. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . el cortafuegos tiene una unica tarjeta de red. e a son los ataques que generalmente llevan a cabo los hackers. a e n Dentro de esta categor´ podemos incluir los troyanos y los virus. y tambi´n los menos da˜inos. A). La configuraci´n correcta se puede apreciar en el caso B de o la figura 15. Suelen ser los m´s frecuentes. el cortao fuegos dispone de dos tarjetas de red y el resto de las computadoras est´ aislado f´ a ısicamente de la red externa. y los o ´ terminales est´n conectados f´ a ısicamente a la red externa. puesto que los hackers s´lo persiguen enfrentarse al reto que o supone para ellos entrar en un sistema grande.1: A: Configuraci´n incorrecta. suelen atacar en primer lugar sistemas peque˜os n para desde ellos cometer sus travesuras. pero no impedir´ a un computador situado en el exterior acceder ıa directamente a los de la red local. • Ataques a medida.184 15. Seguridad en Redes           ¥ ¤ ¥ ¤ ¥  ¨ ¨ ¨ ¨ ¢  ¢ ¢  ¨ © ¨ © ¨ © ¨ ¢  £ ¢ £ ¢ £  ¨ © ¨ © ¨ © ¨ ¢  £ ¢ £ ¢ £     § ¦ § ¦ § ¦     ¡   ¡   ¢ ¢ ¢ ¤ ¡  § ¦ § ¦ § ¦  ¡   ¡   ¡  § ¦ § ¦ § ¦  ¡   ¡   ¡  § ¦ § ¦ § ¦  ¡   ¡   ¡  § ¦ § ¦ § ¦  ¡   ¡   ¡ Cortafuegos Red Interna A Internet Cortafuegos Red Interna A Internet Terminales           Terminales A B Figura 15. a Precisamente por su car´cter general. Conviene disponer de un buen antivirus y actualizarlo peri´dio camente. Podemos distinguir dos grandes tipos de peligros potenciales que pueden comprometer nuestra informaci´n desde una red externa: o • Ataques indiscriminados. puesto que s´lo necesitamos una tarjeta o a o de red en el cortafuegos.1. donde la red externa (y todos sus peligros) est´ separada f´ a ıscamente de la red local. programas dise˜ados ıa n normalmente para colarse en cualquier sistema y producir efectos de lo m´s variopinto. y tambi´n m´s peligrosos.

en realidad viaja por Internet. casi siempre debida a fallos f´ e o ısicos o a la presencia de virus. podemos considerarnos a o salvo. etc. No olvidemos que el coste de la protecci´n en ning´n caso puede superar el valor de la o u propia informaci´n que se desea proteger. por lo que si nuestra informaci´n no resulta realmente valiosa para el atacante. y con toda seguridad en el futuro aparecer´n nuevos peligros. como SSL y TLS (ver secci´n 12. pero nunca se a debe bajar la guardia. que suele ser la p´rdida de la informaci´n.4 Conclusiones Despu´s de todo lo dicho parece una locura conectarse a una red externa. Desgraciadamente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . La cantidad de posibles riesgos es enorme.UU. puesto que el tr´fico que nosotros vemos como interno a o a nuestra red. Por lo dem´s.1 Intranets El t´rmino intranet se ha popularizado recientemente y hace alusi´n a redes externas que e o se comportan de cara a los usuarios como redes privadas internas. conviene estar preparado para el peor de los casos probables. FTP. HTTP. TELNET. Estos protocolos son transparentes y pueden correr bajo otros e a ampliamente conocidos.5). Conclusiones 185 de emplear sistemas peque˜os como plataforma les obliga a no da˜arlos. y ciertamente e lo es si no se toman las precauciones adecuadas. por lo que hemos de informarnos muy bien antes de depositar nuestra confianza en ellas.4. registro que deber´ ser controlado peri´dicamente para detectar posibles anomal´ a o ıas. adem´s a o a de llevar un registro de todas las operaciones que tienen lugar dentro del sistema. 15. 15. que permiten o o establecer comunicaciones seguras a trav´s de Internet. gran cantidad de aplicaciones los emplean en sus comunicaciones. y Canad´ est´n en realidad a e debilitadas. ser´ suficiente con la adopci´n de protocolos seguros. parece claro que las ventajas que nos o a proporcionar´ estar en la Red son claramente mayores que los inconvenientes. Otra pr´ctica a Manuel J. En cuanto al resto de posibilidades. Si bien puede ocurrir que un equipo de hackers trate de entrar en nuestro sistema. Por otro lado e n hay que tener en cuenta que cierto tipo de ataques requiere fuertes inversiones.3. debido precisaıa mente al escaso inter´s que va a despertar en ellos penetrar en una red peque˜a. las restrictivas leyes norteamericanas en cuanto a la exportaci´n de material criptogr´fico hacen que la gran mayor´ o a ıa de las aplicaciones seguras que se venden fuera de los EE. de comunicaci´n segura de bajo nivel. Obviamente. De hecho. este tipo de redes ha de ser implementado haciendo uso de protocolos criptogr´ficos de autentificaci´n y a o codificaci´n de las transmisiones. para no dejar n n ning´n tipo de rastro que permita localizarlos posteriormente. En general.15. u En cuanto a la protecci´n de las comunicaciones en s´ baste decir que existen protocolos o ı. pero no olvidemos que ante todo a debemos ser racionales. haciendo uso de algoritmos sim´tricos e e y asim´tricos simult´neamente. esta posibilidad suele ser remota en la mayor´ de los casos. como POP3.

186 15. Seguridad en Redes 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 peri´dicamente. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Manuel J. con objeto de eliminar los agujeros o de seguridad.

y su filosof´ de la vida es casi una religi´n. tales como los crackers. o No debemos confundir el t´rmino hacker con el de pirata inform´tico. Desde aquellos que no tratan de hacer ning´n da˜o. y que consideran estas actuaciones como un excitante reto a u n su inteligencia. que dirigen sus esfuerzos hacia las compa˜´ telef´nicas. Por supuesto. a tan antigua como las redes de ordenadores. llev´ndose toda la ´ a informaci´n que posea para luego venderla. hasta aquellos cuyo unico objetivo es sabotear una red. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . las actuaciones de los crackers y u phreakers suelen ser siempre delictivas. conoce diversas variantes. ya que este ultimo es e a ´ un concepto m´s amplio. multitud de leyendas circulan sobre estos personajes. junto con la industria cinematogr´fica. que tienen como punto com´n la lucha contra el a u sistema establecido. mal que les pese a muchos—.Cap´ ıtulo 16 Hackers Se consideran a s´ mismos una casta. h´roes para otros. hoy los hackers est´n considerados por muchos como los nigromantes de la era a tecnol´gica. Su actividad. Manuel J. Cada uno de ellos nıas o se especializa en alg´n tipo de actividad —curiosamente. sabr´n que adem´s de a a a hackers hay otros grupos. podemos decir que hay hackers para todos los o gustos. todos ellos justifican sus formas de pensar y actuar con argumentos de lo m´s variopinto. mientras que las de los hackers en algunos casos no lo son. contribuyendo. e Al igual que en otras ´pocas hab´ alquimistas. Nos guste o no. Aquellos que conozcan la cultura cyberpunk. los hackers son ya un mito en la cultura de finales del siglo XX. capaces de dominar los oscuros poderes de e ıa la materia. al crecimiento y proa pagaci´n de su leyenda.1 El Hielo y los Vaqueros Un hacker es un individuo que se dedica a infiltrarse en sistemas inform´ticos. Delinı ıa o cuentes para unos. o 16. Peri´dicamente los medios de comunicaci´n nos sorprenden con alguna nueva haza˜a de o o n estos personajes. y los phreakers. que se dedican a la copia ilegal de software.

pero servir´n para hacernos ´ e a una idea del modo de actuar de estos individuos. Manuel J. Pero no todo va a ser negativo. William Gibson escribi´ “Neuromante”. Hackers En 1983. lea nuestras cartas y escuche nuestras conversaciones telef´nicas sin nuestro o consentimiento. por simple desconocimiento. tarde o temprano acabaremos cayendo. por alguna raz´n. El problema es que en muchos casos. Alguno podr´ pensar ıa. En general e son individuos bastante ingeniosos y bien informados que se dedican a buscar y explotar fallos m´s o menos sutiles en los sistemas de seguridad. e ıamos permitir que la polic´ entre en ıa nuestras casas. los buenos vaqueros suelen elaborar ataques a medida. e u en los que cada uno tiene su alias. y que normalmente s´lo establecen contacto a trav´s de o e la Red. ıa que este es un buen argumento para imponer un control gubernamental sobre el uso privado de la Criptograf´ pero en ese caso tambi´n deber´ ıa. y debemos pensar que si. basta con tomar unas medidas de seguridad proporcionales al valor que e ı posea el sistema que queremos proteger.188 16. Suelen dominar bastante bien el uso de e la Criptograf´ y frecuentemente la emplean en sus comunicaciones. La gente que instala un dispositivo antirrobo en su casa sabe que puede ser burlado por un ladr´n altamente especializado. matrix—. poniendo a prueba su profundo ´ conocimiento sobre las redes de ordenadores. cualquiera puede entrar a fisgonear. Puesto que cada sistema se puede decir que a es unico. las computadoras son tan heterog´neas que no existe un conjunto de medidas e universal que nos permita protegernos de estos chicos traviesos. —tambi´n denominado matriz en el libro. Tambi´n hay que decir que aunque muchos act´an solos. para evitar que cometamos delitos. los vaqueros suelen formar grupos. e Huelga decir que la magia y lo esot´rico nada tienen que ver con estos sujetos. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . nos o convertimos en objetivo de un hacker lo suficientemente bueno. o si se prefiere. pero a´n as´ lo considera o u ı seguro. Es pr´cticamente imposible protegerse al cien a por cien de un ataque de esta naturaleza. ni siquiera que sean las mejores. pieza clave de la literatura de Ciencia o Ficci´n moderna y referencia obligada cuando se habla de cultura cyberpunk. Intentaremos no obstante dar unas pautas sobre las t´cnicas que m´s emplean para que as´ cada cual pueda saber qu´ medidas e a ı e debe tomar en su caso concreto. 16. ya que un ladr´n profesional asumir´ el riesgo s´lo si la casa despierta el suficiente o a o inter´s. Intrusion Countermeasures Electronics— a trav´s a e e del ciberespacio. los sistemas est´n mal protegidos. no conoci´ndose personalmente entre ellos. Por desgracia. As´ pues.2 C´mo act´ a un Hacker o u Comentaremos en esta secci´n muy brevemente algunas de las t´cnicas m´s comunes emo e a pleadas para infiltrarse en computadores ajenos a trav´s de la Red. Esto no quiere decir que e sean las unicas t´cnicas posibles. En esta obra los o vaqueros —t´rmino empleado por Gibson para referirse a los hackers— burlaban el Hielo de e los sistemas inform´ticos —del ingl´s ICE. hasta tal punto que es como si dej´ramos a a abierta la puerta de nuestra casa. En esos casos.

Internet se basa en dicho protocolo. que a responde con la p´gina correspondiente. entra en un estado de espera hasta que alg´n suceso lo activa. C´mo act´a un Hacker o u Puerto 21 23 25 37 43 80 110 117 119 513 514 515 Funci´n o FTP Telnet SMTP (Mail) Time Whois HTTP (Servidor Web) POP3 (Mail) UUCP NNTP (News) Login Shell Spooler 189 Tabla 16. por lo que podemos decir sin temor a equivocarnos que pr´cticamente cualquier m´quina conectada a Internet entiende TCP/IP. u 1 Manuel J. de las cuales podemos escoger cu´l ver e ´ a con solo seleccionar el canal correspondiente. Un demonio (daemon1 .2. aunque eso ıa obligar´ a quienes quisieran establecer una comunicaci´n FTP con nosotros a emplear dicho ıa o puerto. u a a trav´s de los denominados puertos. Cuando nosotros cargamos o una p´gina en el navegador estamos enviando una solicitud al puerto 80 del servidor. a En realidad. 16. a a Un computador con TCP/IP puede establecer m´ltiples comunicaciones simult´neamente.1: Algunos puertos TCP/IP. y el 21 para la transferencia de ficheros. Existen puertos dedicados a tareas concretas. Si el servidor web no estuviera ejecutando el demonio a o ´ste estuviera escuchando en otro puerto. Demonios y Puertos TCP/IP es el protocolo que se ha impuesto como norma universal de facto en las comunicaciones. ciertos servidores de acceso restringido emplean puertos no normalizados para evitar visitantes molestos.1 Protocolo TCP/IP. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .2.16. En la tabla 16. por ejemplo. cuando a se ejecuta. y se refiere a cualquier programa que. De hecho. en ingl´s) es un programa que escucha a trav´s de un puerto a la e e espera de establecer comunicaciones.1 podemos ver algunos a de los m´s usuales. y aunque existan otros para redes locales. esperando solicitudes de conexi´n. los sistemas operativos actuales permiten su coexistencia. As´ por ejemplo el puerto 80 se emplea para ı las p´ginas web. a demonio asociado al puerto 80. un servidor de p´ginas web tiene un ı. no podr´ e ıamos consultar la p´gina que buscamos. As´ por ejemplo. el concepto de daemon es mucho m´s amplio. Hay que decir que esta tabla es orientativa: a a nada nos impedir´ situar nuestro demonio de FTP en el puerto 300. aunque existen muchos m´s. Un puerto se comporta como los canales de un televisor: e a trav´s de un unico cable llegan muchas emisiones.

subsanando paulatinamente los errores que ´stos puedan contener.4. existen programas cuya configuraci´n por defecto no es lo suficientemente o conservadora. pleased to meet you Puesto que el demonio es un programa.pais) est´ esperando a nuestros mensajes a trav´s de su puerto 25.9.4 25 Trying 1. para tomar el control del sistema. o usando diferentes idiomas. que identifica un´ u ıvocamente a un ordenador conectado a Internet.2.3. 10 Sep 1999 16:16:55 A partir de este momento el ordenador con IP2 1. y luego a localizar y explotar posibles fallos en los demonios correspondientes. Escape character is ’^]’. Ahora vamos a ver un ejemplo utilizando la orden telnet de UNIX y el protocolo SMTP de env´ de correos electr´nicos. puede que contenga errores. En los sistemas tipo UNIX.4 (host. a Por desgracia. etc.2.2. el hacker se dedica a tratar de averiguar en qu´ puertos est´ escuchando el ordee a nador objetivo. que escucha un puerto a la espera de que el ordenador atacante tome el control de nuestra m´quina.2. FTP para las a transferencias de ficheros. El IP es un conjunto de cuatro n´meros. Connected to 1.5.190 16. En general. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Si escribimos e helo mlucena el demonio responder´ algo parecido a a 250 host. uno puede enviar mensajes extra˜os para los que el demonio no se encuentra preparado. escuchaba las comunicaciones SMB en las primeras versiones de Windows 95. Muchas veces nuestro ordenador puede que est´ escuchando e alg´n puerto sin que nosotros lo sepamos. denominado Back Orifice.pais Hello mlucena@host [3.dominio. los fabricantes de software suelen actualizar peri´dicamente o sus programas.3. y as´ lograr n ı que aborte su ejecuci´n.3.pais ESMTP Sendmail 8. separados por puntos. 2 Manuel J.4. Fri. o ıa u En general. por lo que e es de una importancia crucial que los demonios instalados en nuestro sistema sean fiables y se encuentren al d´ Un fallo muy famoso y que dio mucho que hablar estaba en el demonio que ıa. que se ubica en el puerto 25: ıo o usuario> telnet 1. como por ejemplo HTTP para las p´ginas web. Si uno enviaba un mensaje concreto a ese puerto pod´ bloquear de forma instant´nea el ordenador de su ıa a v´ ıctima. y para ello s´lo ten´ que conocer su n´mero de IP. Existe un troyano (ver cap´ u ıtulo 17) que corre sobre los sistemas Windows. y que habilitan ciertas caracter´ ısticas a no ser que se les diga lo contrario..3. Hackers Una vez que se establece la comunicaci´n en un puerto. 220 host.dominio.2. dej´ndonos una consola de texto con la que podremos tomar el o a control del sistema.3.6]. los ordenadores hablan entre ellos. o que simplemente haya situaciones en las que no funcione adecuadamente.dominio..

o o En algunos casos.1. 16. Un atacante podr´ entonces pasar al demonio ıa una cadena que incluyera c´digo ejecutable. Afortunadamente. C´mo act´a un Hacker o u 191 abriendo inevitablemente agujeros de seguridad. y que machacara el campo que indica d´nde o o debe seguir la ejecuci´n del programa. o o De esta forma se podr´ ejecutar virtualmente cualquier cosa en la m´quina de la v´ ıa a ıctima. A modo de ejemplo. podr´ ıamos emplearlas cuantas veces quisi´ramos. para evitar desagradables sorpresas. por lo que. la construcci´n de cadenas de este tipo no es una tarea sencilla. o ıa pueden sobreescribir y modificar otros campos. Afortunadamente. el c´digo fuente de algunas p´ginas web de tipo ASP de una manera ıa o a muy simple. si el servidor o o corr´ bajo Windows NT.16. Como ya indicamos en la secci´n 13. Este tipo de ataque se volver´ in´til a a u si los usuarios escogen contrase˜as adecuadas. pero ha de ser tenida en cuenta. esta circunstancia n ha sido subsanada en casi todos los sistemas operativos. n Una posibilidad bastante inquietante es la de. pero una vez o elaboradas.2 Desbordamientos de Buffer Uno de los mecanismos m´s empleados para hacer saltar a un demonio es el desbordamiento a de buffer. si un usuario posee el fichero de contrase˜as. lo cual le permitir´ entrar en el sistema. y eventualmente llegar a averiguar las claves de cada usuario.3 Suplantando Usuarios Lo ideal para entrar en un sistema es hacerlo como administrador. que aprovecha una caracter´ ıstica muy com´n en casi todos los compiladores de u lenguajes de programaci´n modernos. que no necesitan contrase˜a para entrar en el sistema y que tienen unos n privilegios de acceso bastante limitados.3.2. una vez que se han ganado suficientes priviManuel J. En muchos casos esos privilegios pueden llegar a ser suficientes como para perpetrar un ataque con garant´ de ´xito. al salirse de su lugar. Cuando se ejecuta un procedimiento o subprograma. y gracias a estos peque˜os sustos cada vez se pone m´s o n a cuidado a la hora de elaborar software sensible. Evidentemente. el o ordenador reserva memoria para los datos de entrada al procedimiento. a no ser que el administrador tomara ciertas precauciones. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .2. por lo que debemos buscar otros medios para entrar en ´l. cuando se descubri´ que era posible descargar. del tipo que se propone en esta obra. para que apuntara precisamente a su c´digo malicioso. y desde cualquier otro ordenador. citaremos el problema que surgi´ en el verano de 1998. junto con informaci´n o relativa a la direcci´n de memoria por la que debe continuar la ejecuci´n una vez finalizado. debido a que un invitado ıas e puede acceder al fichero que almacena las contrase˜as. e La mayor´ de los sistemas operativos permiten la existencia de usuarios gen´ricos. lo cual proporciona suficientes privilegios como para alterar cualquier cosa sin ning´n problema. e 16.2. llaıa e mados invitados. el problema se solucion´ con rapidez. A veces ocurre u que el ordenador v´ ıctima no presenta vulnerabilidades en los puertos que escucha. o n puede llevar a cabo un ataque con diccionario. los datos de entrada pueden ser de mayor tama˜o que el espacio que el n programador estim´ suficiente en su d´ para albergarlos.

reservan memoria para atenderla. En tal caso habr´ que desconectar el sistema de la red y restaurarlo manualmente. Basta. con el consiguiente ıa coste tanto de tiempo como de dinero. Normalmente los vaqueros buscan ordenadores poco protegidos.4 Borrando las Huellas Todos los sistemas operativos serios incorporan alg´n sistema de registro de los eventos u del sistema que permite saber con detalle lo que en la computadora ha ido ocurriendo. ¡incluidos los administradores!.2.5 Ataques Pasivos Recientemente se han detectado fallos de seguridad en los navegadores de Internet que permitir´ a un hipot´tico atacante colocar en su p´gina web c´digo malicioso. o Desgraciadamente. sustituir el fichero de contrase˜as por otro elaborado por el hacker. En la pr´ctica. Las autoridades e tendr´n que ponerse en contacto con el ordenador empleado como plataforma para buscar en a ´l indicios del verdadero atacante. e entran en ellos. u e Para ello nada mejor que emplear otros ordenadores m´s modestos como plataforma para a atacar al aut´ntico objetivo. con efectuar miles de solicitudes incompletas para bloquear la memoria del servidor. Espeıa remos que poco a poco esta tendencia se vaya corrigiendo. un hacker suele organizar sus ataques de a forma que si queda alg´n rastro de su paso por el sistema elegido. . De esta ıan e a o forma todos los que visitaran esa p´gina y no hubieran tomado las adecuadas precauciones a se ver´ afectados con problemas tales como la ejecuci´n de alg´n programa —posiblemente ıan o u un virus—. o DoS). Esta estrategia har´ que en los registros del sistema atacado aparezcan datos sospechosos a acerca del ordenador intermedio. por ıo u supuesto. cuando reciben una solicitud de conexi´n. o pues. e impedir que acepte m´s conexiones. Adem´s de tratar de borrar todas sus huellas. si no quiere que un polic´ llame a su puerta a los pocos d´ . a a o Manuel J. cada versi´n de los navegadores m´s populares presenta nuevos probleo a mas de este tipo. lo cual dejar´ sin n ıa acceso a todos los usuarios leg´ ıtimos del sistema. Este se aprovecha de que los o e servidores. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . . si bien suelen ser identificados —que no siempre resueltos— con bastante celeridad. o el env´ de alg´n fichero propio al atacante.192 16. 16. en gran parte gracias al excelente trabajo de Juan Carlos Garc´ Cuartango. este ataque no permite robar informaci´n.6 Ataques Coordinados Uno de los tipos de ataque que m´s fama ha cobrado ultimamente es el que se conoce a ´ ´ como Denegaci´n de Servicio (en ingl´s Denial of Service. Hackers legios.2. Un vaquero que se precie debe eliminar todas las entradas de dicho registro relativas a su paso por el sistema.2. El atacante s´lo tiene que esperar a que los incautos vayan cayendo. 16. ´ste sea realmente confuso. ıa ıas. e 16. y control´ndolos remotamente intentan encontrar las debilidades del objetivo a real. . todo ello de forma inadvertida. pero pocas veces del aut´ntico enemigo.

Muchos hackers tambi´n las consultan. pero con otros prop´sitos. perfectas candidatas a protagonizar el pr´ximo ataque distribuido.16. a ıe Configure sus servidores de la forma m´s conservadora posible. colegios. Si tiene alguna e duda sobre alguna funcionalidad del servidor en cuesti´n. ¿Por qu´ colocar un premio extra para los e hackers? • Instalaci´n de Demonios. que deber´ ser la u o a ıa m´s segura. No obstante. lo cual puede hacer suficiente da˜o en sitios web que ´ n ofrecen servicios en l´ ınea. impulsado en muchas ocasiones e por pol´ ıticas poco realistas de los gobiernos. Cuando instale cualquier software que incluya alg´n demonio. Esto le permitir´ detectar programas del tipo Back Orifice. o e o Ejecute peri´dicamente alguna utilidad que recorra los puertos de su sistema para saber o en cu´les hay demonios.—. No habilite usuarios a gen´ricos sin antes asegurarse de que no poseen excesivos privilegios. ellas le informar´n de los agujeros m´s recientes a a y de c´mo eliminarlos. conectadas a la Red —en o bibliotecas. o Vulgarmente. etc.3. si no a nos protegen totalmente. No almacene informaci´n sensible en su ordenador si ´sta o o o e no necesita ser consultada desde el exterior. se denomina zombie a aquella computadora que contiene un c´digo capaz de o contribuir en un ataque distribuido. As´ como hay muchas formas de a ı poder entrar fraudulentamente en un ordenador. por muchos computadores. Nada m´s lejos de la realidad. Desconf´ de las versiones beta. o u aseg´rese de que se trata de la versi´n m´s reciente y actualizada. est´ conduciendo a la existencia de un n´mero a u cada vez mayor de computadoras con una deficiente administraci´n. parece una aut´ntica locura tener ordenae ıdo e dores conectados a Internet. como los dedicados al comercio electr´nico. Vamos a dar una serie de consejos pr´cticos que. de forma inadvertida para sus usuarios. Consulte peri´dicamente las p´ginas de los fabricantes de software y aquellas especializao a das en alertar sobre fallos de seguridad. lo mejor es conocer bien nuestro propio sistema para poder adaptar estas medidas a nuestro caso concreto. tambi´n hay muchas formas de protegerse e razonablemente contra estos ataques. o En realidad. ´ simult´neamente y de forma distribuida. a no ser que sepa muy bien lo que hace. la unica modalidad efectiva de ataque DoS es aquella que se lleva a cabo. a a Manuel J. o que posiblemente provocar´ p´rdidas millonarias y har´ correr r´ de tinta.3 C´mo Protegerse del Ataque de los Hackers o Despu´s de haber le´ las anteriores secciones. a e a ıos 16. y limitarse a coordinarlo cuando lo estime oportuno. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . C´mo Protegerse del Ataque de los Hackers o 193 sino unicamente paralizar un servidor. por lo que un hacker podr´ construir un troyano que incorporara el ıa c´digo necesario para efectuar el ataque. ponen las cosas bastante dif´ ıciles a los hackers. deshabil´ o ıtela. • S´lo la Informaci´n Necesaria. Obs´rvese que el crecimiento casi explosivo de Internet. El quid de la cuesti´n a o radica en que pr´cticamente cualquier tipo de ataque puede ser automatizado mediante un a programa adecuado.

Aseg´rese de que el fichero de contrase˜as est´ protegido frente a accesos externos. • Contra los Ataques por Diccionario.194 16. por lo que aunque alguien averig¨e su contrase˜a. Aforu n a tunadamente. Pero si razonamos un poco nos daremos cuenta de que los mejores hackers no han sido descubiertos. casi todos los sistemas operativos modernos incorporan esta caracter´ ıstica por defecto. Hay que cona sultarlos frecuentemente para detectar entradas sospechosas. De esta forma el vaquero no podr´ borrar e a totalmente sus huellas. bien por razones de publicidad —pensemos en un banco al que le roban varios cientos de millones de pesetas—. la famosa John The Ripper) que nos permitir´n saber si nuestras claves son satisfactorias. Ser´n nuestra mejor defensa contra los hackers. Existen o n n utilidades para realizar ataques de diccionario (por ejemplo. Estos razonamientos son totalmente v´lidos cuando nos a enfrentamos a los hackers.4 Conclusiones Cuando hacemos un viaje solemos tomar ciertas precauciones. Todos hemos o´ historias acerca de personas que se infiltran en redes. pero tampoco hemos de bajar la guardia. Manuel J. Muchos sistemas operativos impiden que un administrador abra una consola remota. use buenas contrase˜as. a no ser que necesite poder abrir consolas remotas como administrador. 16. Cambie peri´dicamente las contrase˜as. use esta caracter´ a ıstica. y nunca bajar la guardia. a • Los Archivos de Registro. y aseg´rese de que todos los programas de cifrado que usa funcionan con claves u de al menos 128 bits. y en algunos casos puede que hasta cierto. Tampoco viene mal efectuar copias de seguridad en medios externos al ordenador. bien porque ha resultado imposible localizarlos. No hay que alarmarse. y sobre todo. e ıses Todo esto es muy espectacular. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . o que venden secretos militares a pa´ enemigos. que reducen el riesgo de tener un accidente. Nadie que est´ lo suficienn e temente equilibrado mentalmente y que conozca los medios de transporte emprende un viaje pensando que va a sufrir un accidente. como pueden ser diskettes o cintas magn´ticas. o al menos el posible da˜o en caso de sufrirlo. que cambian la ıdo trayectoria de sat´lites de comunicaciones. Si su ordenador est´ conectado a Internet. Emplee siempre que pueda SSL o TLS en sus comunia caciones. Hackers • Vigile su Software Criptogr´fico. u n no podr´ emplearla a no ser que disponga de acceso f´ a ısico a la computadora.

por lo que dedicaremos un breve cap´ ıtulo a estudiarlos. ´ a no es menos cierto que otros se desarrollan con fines aut´nticamente destructivos.Cap´ ıtulo 17 Virus Quiz´ uno de los temas m´s famosos y sobre los que m´s mitos corren en el ´mbito de a a a a la Inform´tica sean los virus. capaces de copiarse a s´ mismos hasta colapsar un ı sistema. el aumento de complejidad en los sistemas ha llevado aparejada nuevas e inquietantes formas de comprometer la seguridad de las computadoras. 17. Desde aquellos programas gusano. Hoy por hoy constituyen uno de los problemas de seguridad que m´s dinero e informaci´n a o hacen perder a los usuarios. y la aparici´n de nuevas y m´s peligrosas formas de contao o a gio. configurados para activarse cuando se intentara llevar a cabo una copia fraudulenta. los virus existen pr´cticamente desde los inicios de la Inform´tica a gran a a escala. El tiempo ha demostrado que los verdaderos perjudicados son las mismas compa˜´ y los propios usuarios. como Melissa y I Love You. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . casi podr´ e ıa Manuel J. muchos sugieren que algunos virus eran inoculados en las versiones legales de algunos programas. la imagen que la gente tiene acerca de los virus e a est´ deformada por el desconocimiento y las modernas leyendas urbanas. a reproduci´ndose y devor´ndolo por dentro. nıas Lo cierto es que hoy por hoy existen miles de virus.1 Origen de los Virus De origen incierto. que trajeron de cabeza a una gran cantidad de usuarios. Programas malignos que son capaces de parasitar un sistema. Muchos dicen que los virus nacieron como una medida de las compa˜´ de desarrollo de nıas software para disuadir a la gente del uso de copias piratas de sus programas. Aunque este extremo no ha sido demostrado ni tampoco desmentido. Al igual ıa a que unos son creados con el unico y dudoso ´nimo de provocar una sonrisa en los afectados. a Los virus estaban entrando ya en lo que parec´ su definitivo declive cuando el auge de ıa Internet provoc´ su relanzamiento. hasta casos que han dado recientemente la vuelta al mundo. y que cada d´ surgen m´s.

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 infiltrarse en e ı un sistema y ejecutarse sin que el usuario tenga noticia de ello. Normalmente sacan copias de s´ mismos de forma m´s o menos indiscriminada, con la intenci´n 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 s´lamente son destructivos, o y que no se contagian, se denominan gen´ricamente bombas l´gicas. El caso de los troyanos, e o como veremos m´s adelante, es ligeramente distinto, ya que si bien no pueden reproducirse a por sus propios medios, s´ que nacen con la intenci´n de ser propagados. ı o El t´rmino virus se tom´ prestado a los bi´logos porque responde bastante bien a la filosof´ e o o ıa de estos programas. Un virus biol´gico se infiltra en una c´lula y le inocula su c´digo gen´tico o e o e para, aprovechando el sistema de reproducci´n de su involuntaria anfitriona, duplicarse tantas o veces como le sea posible. La c´lula muere en el proceso. Un virus inform´tico se instala en e a una computadora y se ejecuta de manera inadvertida para el usuario. Cuando esa ejecuci´n o tiene lugar, primero se efect´an las copias y despu´s el virus da˜a el sistema. u e n

17.2.1

M´todos de Contagio e

Al principio, cuando las redes inform´ticas eran pocas y estaban relativamente aisladas, a los mecanismos de propagaci´n de los virus se basaban en modificar los programas ejecutao bles, a˜adi´ndoles el c´digo del propio virus. El usuario apenas se daba cuenta de que sus n e o ficheros ejecutables crec´ ligeramente, y cuando los copiara en diskettes y los llevara a otros ıan ordenadores, el contagio estar´ asegurado. En otros casos se modificaban 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 m´s 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 oficina —que agrupan procesador de textos, hoja de c´lculo, gestor de correo electr´nico, etc.— incorporan complet´ a o ısimos lenguajes de programaci´n 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 m´s 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 L´pez o

Criptograf´ y Seguridad en Computadores ıa

17.3. Cu´ndo son Peligrosos los Virus a

197

Melissa ven´ camuflado 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 electr´nico, 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 electr´nico en cuesti´n de horas. Lo o ıda o o m´s preocupante de todo esto es que la situaci´n, lejos de ser corregida, volvi´ a repetirse a o o apenas un a˜o despu´s con en archiconocido I Love You, de caracter´ n e ısticas similares. Pero no todos los medios de contagio tienen por qu´ ser tan sofisticados. 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 m´s o menos atractivo —una felicitaci´n navide˜a, una imagen simp´tica, 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 monitorizaci´n o de red, sustituyeron uno de los programas m´s usados por los admninistradores por otro que a enviaba informaci´n confidencial acerca del sistema por correo electr´nico. 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 n´mero determinado de ejecuciones, etc. u Cuando un virus entra en su fase destructiva puede ocurrir cualquier cosa. Desde el simple bloqueo del sistema, con alg´n mensaje en la pantalla, hasta la destrucci´n 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 a˜os est´ propiciando la apaa ´ n a rici´n 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 alg´n fantasma. a ıdo u Este comportamiento lo podemos ver en el tristemente famoso Back Orifice. Otros comportemientos no menos desagradables pueden ser el env´ de informaci´n privada a trav´s de la ıo o e red, y pr´cticamente cualquier cosa que una mente calenturienta pueda concebir. a

17.3

Cu´ndo son Peligrosos los Virus a

Hay personas que creen que con s´lo acercar un diskette contaminado a un ordenador sano, o ´ste ultimo puede quedar contagiado, o que basta con leer un correo electr´nico para que un e ´ o virus se extienda inexorablemente por nuestro sistema aniquil´ndolo todo a su paso. Esto es a rotundamente falso; un virus no es m´s que un programa, y como tal ha de ser ejecutado para a
ejemplo, el lenguaje de programaci´n Java est´ dise˜ado para que un mismo programa pueda correr en casi o a n cualquier ordenador, independientemente del sistema operativo que posea.

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

198 que entre en acci´n. o

17. Virus

En cuanto al mito de los correos electr´nicos, diremos que leer un correo de texto es, como o cabr´ esperar, del todo punto inofensivo. Ahora bien, si ese correo lleva incluido alg´n archivo ıa u ejecutable, o alg´n archivo capaz de llevar c´digo ejecutable —un fichero de procesador de u o texto, o de hoja de c´lculo, por ejemplo—, puede que el ordenador haga correr dicho c´digo 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 soluci´n 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 da˜os impunemente. Esto no ocurre en n los sistemas operativos serios, donde cada usuario tiene diferentes privilegios, de forma que s´lo o los programas que ejecute el administrador de la computadora pueden llegar a ser peligrosos. Si un usuario normal ejecuta un virus, ´ste s´lo podr´ estropear, en el peor de los casos, los e o a archivos de quien lo ejecut´, pero en ning´n caso podr´ llegar a afectar al sistema. o u a

17.4

Protegerse frente a los Virus

Una vez que sabemos algo m´s sobre los virus, y que hemos visto por d´nde se pueden a o infiltrar en un sistema y por d´nde 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 da˜ar 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 oficina capaz de ejecutar macros, aseg´rese de que tiene desacu tivada la ejecuci´n autom´tica de ´stas. Si no puede desactivarla, emplee otro programa. o a e • Utilice frecuentemente un buen antivirus. Esto no le proteger´ a usted, sino m´s bien a a a la comunidad. Suponga que todo el mundo emplea antivirus, entonces todos los virus conocidos se ver´n frenados en su contagio, quedando s´lo los desconocidos, frente a los a o que un antivirus se vuelve in´til. 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 informaci´n importante. De esta forma, o si un virus destruye sus datos, siempre podr´ echar mano de la copia para minimizar el a da˜o. n Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa

Parte VI

Ap´ndices e

Manuel J. Lucena L´pez o

Criptograf´ y Seguridad en Computadores ıa

.

El hecho aqu´ es que ı si un atacante intentara interceptar la comunicaci´n no tendr´ m´s remedio que interactuar o ıa a con esos fotones. pero en un futuro pr´ximo constituir´n medios id´neos e o o a o para transmitir informaci´n de car´cter sensible. la Criptograf´ ıa. y de hecho ya se han llevado a cabo algunos experimentos en los que se ha logrado transmitir informaci´n a distancias y velocidades respetables.Ap´ndice A e Criptograf´ Cu´ntica ıa a La F´ ısica Cu´ntica estudia el comportamiento de la materia a escalas muy peque˜as. entre los que se encuentra. modific´ndolos de manera detectable por el receptor. o a Manuel J. u A. por supuesto. Evio dentemente. y se producen fen´menos tan sorprendentes como interesantes. a ıa. Esto est´ permitiendo fabricar canales de comunicaci´n en los que los dao a o tos viajan en forma de fotones individuales con diferentes caracter´ ısticas. a siguen perteneciendo al ´mbito de la especulaci´n. a Este tipo de propiedades permite construir l´ ıneas de comunicaci´n totalmente imposibles o de interceptar sin ser descubierto. que abren o las puertas a posibilidades de aplicaci´n casi incre´ o ıbles en muchos campos. Cabe recordar que hoy por hoy ya existen algunas aplicaciones pr´cticas de la Mec´nica a a Cu´ntica en Criptograf´ mientras que otras. como las basadas en los computadores cu´nticos. estos canales ultraseguros dif´ ıcilmente ser´n tan r´pidos o tan baratos como las a a l´ ıneas el´ctricas y ´pticas actuales. del a n orden de los ´tomos. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . En el mundo cu´ntico las reglas que rigen la Mec´nica Cl´sica dejan a a a a de tener validez. ya que la tecnolog´ que podr´ permitirnos a o ıa ıa desarrollar dispositivos de este tipo a´n no existe.1 Mec´nica Cu´ntica y Criptograf´ a a ıa Una de las aplicaciones directas de los fen´menos cu´nticos en Criptograf´ viene de un o a ıa principio b´sico de esta teor´ un objeto no puede interaccionar con otro sin experimentar a ıa: alguna modificaci´n.

2 Computaci´n Cu´ntica o a Existe un fen´meno en Mec´nica Cu´ntica realmente dif´ de entender para nuestras o a a ıcil cl´sicas mentes. la intuici´n —y la Mec´nica Cl´sica— nos dir´ o a a ıan que cada fot´n acabar´ excitando B o C con un 50% de probabilidades. y la necesidad inmediata de alargar considerablemente las longitudes de claves para algoritmos sim´tricos. se han barajado m´s bien como simples entretenin a mientos para mentes inquietas.1. en B no se detecta nada. tendr´ o a ıamos un bit cu´ntico (o qubit). Pues bien. Esto demuestra que. ya que supondr´ la ca´ de la gran mayor´ de los algoritıa ıa ıda ıa mos asim´tricos. A es una fuente capaz de emitir fotones. en una superposici´n cu´ntica de dos estados. ciente. capaz de a representar un 1 y un 0. B y C son receptores. Imag´ u ınense las implicaciones que esto tiene para la Criptograf´ moderna. Estas ideas. Evidentemente. A es una fuente emisora de fotones. lo que en o a realidad ocurre es que C se excita siempre y B no lo hace nunca. Dicho algoritmo podr´ de forma efia ıa. ıa o A. y 2 y 3 son espejos que reflejan exactamente la mitad de la luz y dejan pasar la otra mitad. .1: Experimento con espejos para comprobar la superposici´n cu´ntica de estados o a en un fot´n. . Obs´rvese la figura A. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . ¡al mismo tiempo!. En ella se ilustra un conocido y sorprendente experia e mento. factorizar n´meros enteros muy grandes. 1 y 4 son espejos o totalmente reflectantes. Supongamos ahora que logramos construir un dispositivo capaz de representar bits mediante estados cu´nticos de una o muy pocas part´ a ıculas. cualquier part´ o ıcula puede estar en dos sitios simult´neamente. y 2 y 3 espejos semirreflectantes. Criptograf´ Cu´ntica ıa a B 1 2 C A 3 4 Figura A. y que en la actualidad haya importantes grupos Manuel J. a nivel subat´mico. estos resultados han provocado que mucha gente tome e muy en serio este tipo de computadoras. lo cual significa que est´ realmente en esos o a a dos estados. Si colocamos dichas part´ ıculas en una combinaci´n de los dos estados b´sicos. en lugar estar en uno u otro con determinada probabilidad. que reflejan la mitad de la luz y dejan pasar la otra mitad. Contrariamente a lo que dir´ la intuici´n.202 A. o m´s propiamena a te. Si situamos en B y C detectores de fotones. que datan de los a˜os 80. hasta que a mediados de los 90 se propuso el primer algoritmo capaz de ser ejecutado en una computadora cu´ntica. que basan su funcionamiento en el problema de la factorizaci´n de grandes e o enteros. 1 y 4 dos espejos completamente reflectantes.

A. Expectativas de Futuro dedicados a la investigaci´n en este campo. mientras n a que la gran mayor´ opina que todav´ transcurrir´n d´cadas antes de poder disponer del ıa ıa a e primer dispositivo realmente operativo —si es que lo conseguimos alg´n d´ u ıa—.3 Expectativas de Futuro Por fortuna —o por desgracia. seg´n se mire—.3. En cualquier caso. ya que cuando se conviertan en realidades. Los m´s optimistas aseguran que en a a pocos a˜os tendremos los primeros microprocesadores cu´nticos en funcionamiento. obligar´n a replantear o a muchas cuestiones. o 203 A. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Manuel J. y no s´lo en el ´mbito de la Criptograf´ o a ıa. Lo que s´ podemos afirmar con rotundidad es que los modelos criptogr´ficos actuales seı a guir´n siendo v´lidos durante algunos a˜os m´s. los modelos cu´nticos de computaci´n hoy u a o por hoy no pasan de meras promesas. no conviene perder de vista a a n a estas promesas tecnol´gicas. ya que la tecnolog´ actual no permite confinar part´ ıa ıculas individuales de forma que preserven su estado cu´ntico.

204 A. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Criptograf´ Cu´ntica ıa a Manuel J.

pero se han omitido deliberadamente algunos detalles que s´lo o son utiles de cara a la implementaci´n. Aquellos que no sepan programar. y sus entradas corresponden al n´mero ı u de bit del valor inicial (empezando por el 1) que debe aparecer en la posici´n correspondiente.Ap´ndice B e Ayudas a la Implementaci´n o Incluiremos en este ap´ndice informaci´n util para facilitar al lector la implementaci´n de e o ´ o diferentes algoritmos criptogr´ficos. B. Por ejemplo. como pueden ser los valores concretos de las S-Cajas ´ o y de las permutaciones que se emplean en este algoritmo. columna 9 (1001).1. es decir. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . columna b1 b2 b3 b4 . o que simplemente no a deseen escribir sus propias versiones de los criptosistemas que aparecen en este libro. . .1. b64 en b58 b50 b42 . Para aplicarlas basta con coger el n´mero de seis bits de entrada b0 b1 b2 b3 b4 b5 .2 Permutaciones DES lleva a cabo permutaciones a nivel de bit en diferentes momentos. y buscar la entrada correspondiente a la u fila b0 b5 . B. b7 . la primera tabla de B. Las tablas que aqu´ se incluyen deben leerse por filas de arriba a abajo. el valor de la tercera S-Caja para 110010 corresponde a la fila 2 (10).1 representa las ocho S-Cajas 6*4 que posee DES.1 S-Cajas La tabla B. . Manuel J. o Por ejemplo.1 DES En el cap´ ıtulo dedicado a algoritmos sim´tricos por bloques se ha hecho una descripci´n e o completa del algoritmo DES. 1 (0001). . o B.2 lleva el valor b1 b2 b3 . pueden prescindir de esta secci´n.

206 B. Ayudas a la Implementaci´n 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 Tabla B. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .1: S-Cajas de DES.

y la segunda se aplica justo al final.2: Permutaciones Inicial (Pi ) y Final (Pf ) del algoritmo DES.4. Manuel J. E es una permutaci´n de expansi´n. La primera toma como entrada 64 bits. de los que conserva s´lo 56.3. antes de la primera ronda. Permutaci´n o 4 5 6 16 17 16 26 27 28 Permutaci´n 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 Tabla B. o Funci´n f o En el c´lculo de la funci´n f se emplean dos permutaciones.1. E y P (ver figura 10. La primera de ellas se lleva a cabo justo al principio.2 contiene las permutaciones inicial y final Pi y Pf del algoritmo DES.3). detalladas en la tabla B. mientras que la segunda toma 56. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . por lo que da o o como salida 48 bits a partir de los 32 de entrada. y o devuelve 48. Dichas a o permutaciones se detallan en la tabla B.B. N´tese que cada una de estas permutaciones es la inversa de la otra. Generaci´n de las Ki o En la figura 10.4 podemos observar el proceso de generaci´n de los 16 valores de Ki .3: Permutaciones E y P para la funci´n f de DES. en el o que se emplean dos nuevas permutaciones (EP1 y EP2). o Permutaciones Inicial y Final La tabla B. DES Permutaci´n 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 Permutaci´n 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 Tabla B.

Ayudas a la Implementaci´n 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 Tabla B.208 Permutaci´n o 17 9 1 35 27 19 23 15 7 37 29 21 Permutaci´n o 3 28 15 13 2 41 39 56 34 EP1 58 11 62 13 EP2 6 52 53 B. Los datos est´n representados en a hexadecimal. conviene asegurarse de que funciona adecuadamente. siendo el bit m´s a la izquierda el m´s significativo. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . a a 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. Se incluyen en esta secci´n algunos valores de prueba.1.4: Permutaciones EP1 y EP2 para DES.3 Valores de prueba Una vez que tengamos implementado nuestro algoritmo DES. B. 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.

1. DES Codificaci´n 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.B. Lucena L´pez o : : : : L=A8AEA01C L=BC196339 L=D5C2706F L=017151AF R=71F914D1 R=6893EC61 R=ABD6DDAC R=3FB9D8DA Criptograf´ y Seguridad en Computadores ıa .

Ayudas a la Implementaci´n o L=3AAAC260 L=FBA98CD4 L=FCA1C494 L=745EBD6A R=283E370C R=65FBC266 R=F7A90537 R=86810420 Decodificaci´n 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.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. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

como para los valores de las Xi en cada ronda.2. siendo el bit m´s a a a la izquierda el m´s significativo. 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 Ronda 4 : 743E 6544 87F7 77DA 1A2B 3C4D Manuel J.2 IDEA Incluimos ahora valores de prueba para el algoritmo IDEA. 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. tanto para las claves intermedias Zi de codificaci´n y decodificaci´n.B. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Los o o datos. al igual que en el caso de DES. est´n representados en hexadecimal.

212 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 Ronda 7 : 3334 4445 5556 6667 0222 2444 Manuel J. Ayudas a la Implementaci´n o Criptograf´ y Seguridad en Computadores ıa . Lucena L´pez o 5 6 7 8 9 : : : : : 1E4E B2B4 963D 3F93 35AA A191 C844 21FE 30ED BA99 C3B3 D951 A865 3211 7655 E01F 7A66 A086 4F6A 153B 159E 37BC DE02 0123 26AF 048D 468A 4567 B.

B. IDEA 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 Codificaci´n 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 X2 X3 X4 Texto Claro: 0123 4567 89AB CDEF Ronda 1 : 14E6 1CEF 9EE7 5701 Ronda 2 : E7A7 30E6 FFE5 B63C Ronda 3 : 79A2 D4C4 EDCA 4B56 Ronda 4 : 095B 4ACF B0B8 B584 Ronda 5 : C6B0 D5D9 CCF4 C359 Ronda 6 : 4FB9 7BFD BF7A BB4E Ronda 7 : 8219 6501 11EB B6EC Manuel J.2. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

214 Ronda 8 Resultado ----: F2A5 C848 9746 6910 : 7374 4387 DD37 5315 B. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Ayudas a la Implementaci´n 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 : Decodificaci´n 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 Ronda 2 : 61D8 C3DB 881D 2404 Manuel J.

Dicho orden se denomina little endian si u el byte de un entero que se almacena en la posici´n de memoria con el n´mero de ´ o u ındice m´s a bajo es el menos significativo.3 MD5 Incluiremos los resultados que se obtienen al aplicar el algoritmo MD5 a algunas cadenas de caracteres ASCII (excluyendo las comillas): "a" "test" "experimento" "kriptopolis" 0cc175b9c0f1b6a831c399e269772661 098f6bcd4621d373cade4e832627b4f6 304982bc8de3c4948067ceedab604593 d442a043e2575ab4f82b6d0b819adf4a Recuerde que la implementaci´n de este algoritmo es sensible al orden que emplee su o microprocesador para representar n´meros enteros.3. pero en diferente orden. y big endian en el caso opuesto. MD5 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 : : : : : : : C7DB AFB0 E988 0C98 A38B 5D35 AACC 9502 58F8 A044 B5C8 5982 58BD 8DB9 4CE9 1920 DCCC CD67 EA9C FD37 CE0C C1FC 4DA6 D5A7 9A95 D31D 4D2F 7163 215 B. Si sus resultados contienen los mismos valores.B. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . probablemente haya considerado err´neamente esta o caracter´ ıstica.

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .216 B. Ayudas a la Implementaci´n o Manuel J.

5163 + 2. La probabilidad de que en un dado no cargado salga un n´mero par es 2 . Ahora sumemos todas las desigualdades y obtendremos lo siguiente: Manuel J. pues ıa a 2 H(X) = − log2 7 2 7 −5· 1 log2 7 1 7 = 0. se mantiene el sentido de la desigualdad. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .1) tenemos que la informaci´n asociada al suceso vale: o o Ipar = − log2 1 2 = 1 bit 2. El dado presenta la siguiente distribuci´n de probabilidad: o 2 P (x = 3) = .0052 = 2. Puesto que tanto pi como qi son positivos.5215 P (x = 3) = 1 7 q 3. Sea el cociente pi . 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. su cociente tambi´n lo e i ser´.Ap´ndice C e Ejercicios Resueltos Cap´ ıtulo 3 1 1. Por lo tanto. 7 Su entrop´ ser´. u empleando la expresi´n (3.

yj ) = = i=1 log2 (P (xi ))P (xi ) = −H(X) Criptograf´ y Seguridad en Computadores ıa Manuel J. seg´n la expresi´n (3. Lucena L´pez o . yj )) +    m n j=1 i=1 P (xi . yj ) log2 j=1 i=1  P (xi . Y ) = P (X) · P (Y /X) por lo que nuestra expresi´n se convierte en o  m n − P (xi . yj ) log2 (P (yj /xi ))  La Ley de la Probabilidad Total dice que P (X. yj ) [log2 (P (xi . yj ) log2 (P (xi )) =  n log2 (P (xi )) i=1 j=1 P (xi . Ejercicios Resueltos n n n n pi log2 (qi ) − i=1 i=1 pi log2 (pi ) ≤ i=1 qi − i=1 pi = 0 Reorganizando los t´rminos obtenemos finalmente la expresi´n buscada e o n n − i=1 pi log2 (pi ) ≤ − i=1 pi log2 (qi ) 4. yj ) log2 (P (xi .218 C.4): u o  m n H(Y /X) = − j=1 i=1 P (xi . yj )  P (xi ) Descomponiendo el logaritmo del cociente como la diferencia de logaritmos se obtiene  m n − j=1 i=1 P (xi . yj )) − log2 (P (xi ))]  Si desarrollamos la expresi´n anterior tenemos o  m n − j=1 i=1 P (xi . Desarollemos el valor de H(Y /X). Observemos el ultimo sumando: ´      m n n m j=1 i=1 P (xi . Y ). yj ) log2 (P (xi ))  El primer sumando es igual a H(X.

35) = 0. Y ) − H(X).2975 · log2 (0.15 = 0.9333 = 0. ser´ la sio ıa guiente: Manuel J. ln ) P (gn . cuando ´stos son equiprobables. Y ) = H(X) + H(Y /X) 5.0525 · log2 (0.35 · 0.0975 0. asociada a que llueva o no.0346 bits 6. ls ) P (gn .9679 H(G/L) = −P (gs .2975 0.15 0. Sea G la variable aleatoria que representa los partidos. ls ) log2 (P (gs /L = ls )) − P (gs .65 0.395 Calculemos ahora las entrop´ ıas: H(G) = −P (gs ) log2 (P (gs )) − P (gn ) log2 (P (gn )) = 0. ls ) log2 (P (gn /L = ls )) − P (gn .5525 0.35 P (ln ) · P (gs /L = ln ) + P (ls ) · P (gs /L = ls ) = 0.35 0. Sea gs el suceso correspondiente a que el equipo gana el partido.3219 Una posible codificaci´n.65 · 0. y gn el suceso asociado a que lo pierda. es el logao e ritmo base dos del n´mero de mensajes. La longitud media ´ptima de los mensajes.65)− −0.65 0. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . pues: P (ls ) P (ln ) P (gs . finalmente o H(G) − H(G/L) = 0. ls ) P (gs . por tanto u log2 (20) = 4. Reorganizando los t´rminos.605 P (ln ) · P (gn /L = ln ) + P (ls ) · P (gn /L = ls ) = 0.15 = 0.35) − 0.0525 0.219 Luego H(Y /X) = H(X.65) − 0.85 0.65 · 0.9333 La cantidad de informaci´n entre G y L es. ln ) P (gs /L = ls ) P (gs /L = ln ) P (gn /L = ls ) P (gn /L = ln ) P (gs ) P (gn ) = = = = = = = = = = = = 0. llegamos finalmente a e la expresi´n de la Ley de Entrop´ Totales: o ıas H(X. con una longitud media de 4. a definiremos la variable L.85 = 0. An´logamente.35 · 0.0975 · log2 (0.4 bits por mensaje. Tendremos.5525 · log2 (0.9679 − 0. ln ) log2 (P (gs /L = ln ))− −P (gn . ln ) log2 (P (gn /L = ln )) = = −0.85 = 0.

660 bits Cap´ ıtulo 5 1.5) − 10 · 0. tenemos que a+b=b+a+k·n si k = 0.05 · log2 (0. luego a + b ≡ b + a (mod n) • Propiedad asociativa: Puesto que a + (b + c) = (a + b) + c. luego a + 0 ≡ a (mod n) por lo tanto. b es el inverso de a para la suma. • Elemento sim´trico: Sea a ∈ Zn y b = n − a. luego (mod n) por tanto. tenemos e a + b = a + (n − a) = k · n a+b≡0 si k = 1. adem´s de a la existencia de elementos neutro y sim´trico. La suma en grupos finitos cumple las propiedades conmutativa y asociativa. tenemos que a + (b + c) = (a + b) + c + k · n si k = 0. luego a + (b + c) ≡ (a + b) + c (mod n) • Elemento neutro: Trivialmente. a+0=a+k·n si k = 0. Ejercicios Resueltos 7. 0 es el elemento neutro para la suma. Tendremos en cuenta que: e a≡b (mod n) ⇐⇒ ∃k ∈ Z tal que a = b + k · n • Propiedad conmutativa: Puesto que a + b = b + a. La entrop´ de los mensajes es igual a: ıa H(X) = −0.05) = 2. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .5 · log2 (0. Manuel J.220 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.

luego a · 1 ≡ a (mod n) por lo tanto.6) para resolver el sistema: o x ≡ 12 (mod 17) x ≡ 13 (mod 64) x ≡ 8 (mod 27) Puesto que n = 17 · 64 · 27 = 29376.221 2. luego a · (b · c) ≡ (a · b) · c (mod n) • Elemento neutro: Trivialmente. Tendremos en cuenta. 3.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. tenemos x = (29376/17)[1728−1 (mod 17)] · 12+ +(29376/64)(459−1 (mod 64)) · 13+ +(29376/27)(1088−1 (mod 27)) · 8 Calculamos ahora las inversas: Manuel J. El producto en grupos finitos cumple las propiedades conmutativa y asociativa. 1 es el elemento neutro para el producto. Emplearemos la expresi´n (5. a·1=a+k·n si k = 0. adem´s a de la existencia de elementos neutro. tenemos que a · (b · c) = (a · b) · c + k · n si k = 0. al igual que en el ejercicio anerior. luego a · b ≡ b · a (mod n) • Propiedad asociativa: Puesto que a · (b · c) = (a · b) · c. tenemos que a·b=b·a+k·n si k = 0. que: a ≡ b (mod n) ⇐⇒ ∃k ∈ Z tal que a = b + k · n • Propiedad conmutativa: Puesto que a · b = b · a. Para calcular la funci´n φ de Euler emplearemos la expresi´n (5. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

por lo tanto: 100101 ⊕ 1011 = 101110 = x5 + x3 + x2 + x En cuanto al producto. Para calcular el valor de (210368 mod 187).4. nos queda x = 1728 · 14 · 12 + 459 · 35 · 13 + 1088 · 17 · 8 = 647117 ≡ 845 (mod 29376) 5. 11−1 11−1 8−1 (mod 17) (mod 64) (mod 27) C. 11 (mod 64). es suficiente con aplicar un or-exclusivo entre ambos. Para calcular la suma. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . se puede emplear el algoritmo de exponenciaci´n r´pida (apartado 5.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 (mod 187) = 86 z z (mod 187) = 69 = 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 (mod (mod (mod (mod (mod (mod (mod 187) = 69 187) = 86 187) = 103 187) = 137 187) = 69 187) = 86 187) = 103 6. Ejercicios Resueltos = = = 14 35 17 Sustityendo los valores. 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 m´dulo 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. 8 (mod 27).222 1728 459 1088 ≡ ≡ ≡ 11 (mod 17).

2p = (16. la igualdad anterior debe cumplirse. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa . Partiendo de la expresi´n o x3 + ax + b = (x − q)2 (x − r) desarrollaremos el segundo t´rmino: e (x − q)2 (x − r) = (x2 − 2qx + q 2 )(x − r) = x3 − 2qx2 − rx2 + q 2 x + 2qrx − q 2 r Igualando los coeficientes 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 expresi´n y al cubo la segunda. finalmente nos queda b2 a3 = −27 4 =⇒ 4a3 = −27b2 =⇒ 4a3 + 27b2 = 0 2. podemos despejar q 6 o en ambas e igualar: q6 = b2 a3 = −27 4 Para que el sistema de ecuaciones tenga soluci´n.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. Emplearemos la expresi´n (6.223 Cap´ ıtulo 6 1. 8) Manuel J. o si la desarrollamos.3) para calcular 2p y (6.

Empleando el o Algoritmo Extendido de Euclides. (16.. 16). Aplicando los c´lculos de forma sucesiva. obteniendose que N = 271 · 163. a) Para factorizar N . 13). 15). 3p = (15. 4) • . Lucena L´pez o . o que ser´ 2. N´tese que todas las operaciones est´n a o a efectuadas en base octal. (0. por lo que dd = 470 y cc = 72500. con lo que nos queda un cociente a = 140 y un o resto b = 40. (11. o Cap´ ıtulo 7 1. en este caso p contiene todos los puntos de la curva el´ ıptica en cuesti´n. 1). 1)} Como se puede observar. Los pasos del algoritmo arrojar´n los siguientes valores: a t a2 a1 a1 a0 = = = = = 4 07 ÷ 5 = 1 25 ÷ 5 = 3 a1 + 1 = 4 1÷5=0 cc cc cc cc = = = = 72500 − 1 · 47000 = 23500 23500 − 3 · 4700 = 5000 5000 − 4700 = 100 100 − 0 · 470 = 100 Ahora deshacemos la normalizaci´n. (0. 2). 14). tenemos que a p C. (3. (16. (2. (2.224 • 3p = 2p + p: d = (16 − 8)/(11 − 16) = 12 tx = 8 − 11 − 16 = 15 ty = −16 + 12 · (11 − 15) = 4 Por lo tanto. 16). Ejercicios Resueltos = {O. (3. 9). llegamos a −1 Kp = KP = 25277−1 (mod 43740) = 26633 Criptograf´ y Seguridad en Computadores ıa Manuel J. 3). Cap´ ıtulo 12 1. (15. calculamos el factor de normalizaci´n. 4).. 8). basta con emplear el m´todo de tanteo (prueba y error) a partir e de la ra´ cuadrada de 44173. ız b) Kp debe ser la inversa de KP m´dulo φ(N ) = 270 · 162 = 43740. A partir de los valores c = 35240 y d = 234. (15. (11.

225 c) El descifrado podemos llevarlo a cabo empleando el Algoritmo de Exponenciaci´n o R´pida: 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 (mod 44173) = 75 (mod 44173) = 114 (mod 44173) = 105 (mod 44173) = 112 (mod 44173) = 116 (mod 44173) = 111 (mod 44173) = 112 (mod 44173) = 111 (mod 44173) = 108 (mod 44173) = 105 (mod 44173) = 115 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .

Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .226 C. Ejercicios Resueltos Manuel J.

[4] Juan Manuel Vel´zquez y Arturo Quirantes. 1996. Australia. a [5] John D. Handbook of Applied Cryptography. Prentice Hall.53i. J. [3] Seberry. 1989. Pieprzyk. Lipson. a o http://www. Elements of Algebra and Algebraic Computing. 1998. a http://www.org/rfc/rfc2440.txt [8] P´gina Web de Kript´polis. http://www. John Wiley & sons. Vanstone. [6] RFC 2440: Open PGP Message Format. 1981. Manual de PGP 5. An Introduction to Computer Security.pgpi. http://www. a http://www.txt [7] RFC 1750: Randomness Recommendations for Security.net Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa .kth.. 1996.kriptopolis. Menezes.se/docs/rfc/rfcs/rfc1750. Addison-Wesley. Cryptography. Paul C.ietf.org [10] P´gina Web de Zedz Consultants (antes Replay).it. Applied Cryptography. [2] Alfred J. Second Edition.com [9] P´gina Web de PGP International.Bibliograf´ ıa [1] Bruce Schneier. van Oorschot y Scott A.zedz. CRC Press. J.

Sign up to vote on this title
UsefulNot useful