Criptograf´ y Seguridad en ıa Computadores
Segunda Edici´n. Septiembre de 1999 o
Manuel Jos´ Lucena L´pez e o
Departamento de Inform´tica a Escuela Polit´cnica Superior e Universidad de Ja´n e e-mail: mlucena@ujaen.es
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
Copyright
c 1999 de Manuel Jos´ Lucena L´pez. Todos los derechos reservados. e o Este documento puede ser distribuido libre y gratuitamente bajo cualquier soporte siempre que se respete su integridad. Queda prohibida su venta sin permiso expreso del autor.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
6
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Agradecimientos
A Loles, ella sabe por qu´. e A los chicos de Kript´polis, por darme esta oportunidad. o A mis alumnos, por aguantarme cada a˜o. n A todos los que alguna vez han compartido sus conocimientos, por enriquecernos a todos.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
8
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Prefacio
El presente documento ha sido elaborado originalmente como apoyo a la asignatura “Criptograf´ y Seguridad en Computadores”, de 3er Curso de Ingenier´ T´cnica en Inform´tica ıa ıa e a A X 2ε . de Gesti´n, de la Universidad de Ja´n, empleando el procesador de textos L TE o e No se pretende que estos apuntes sustituyan a la bibliograf´ de la asignatura, ni a las ıa clases te´ricas, sino que sirvan m´s bien como complemento a las notas que el alumno debe o a tomar en clase. Asimismo, no debe considerarse un documento definitivo y exento de errores, si bien ha sido elaborado con detenimiento y revisado exhaustivamente. El autor pretende que sea mejorado y ampliado con cierta frecuencia, lo que probablemente desembocar´ en sucesivas a versiones, y para ello nadie mejor que los propios lectores para plantear dudas, buscar errores, y sugerir mejoras. Ja´n, Septiembre de 1999. e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
10
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
´ Indice General
I Preliminares 17
19 19 20 22 24 25 25 26 27 28 29 30
1 Introducci´n o 1.1 1.2 1.3 1.4 C´mo Leer esta Obra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Algunas notas sobre la Historia de la Criptograf´ . . . . . . . . . . . . . . . . . ıa N´meros Grandes u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acerca de la Terminolog´ Empleada . . . . . . . . . . . . . . . . . . . . . . . . ıa
2 Conceptos B´sicos sobre Criptograf´ a ıa 2.1 2.2 2.3 2.4 2.5 2.6 Criptograf´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa Criptosistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esteganograf´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa Criptoan´lisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Compromiso entre Criptosistema y Criptoan´lisis . . . . . . . . . . . . . . . . . a Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
II
Fundamentos Te´ricos de la Criptograf´ o ıa
33
35 35 36 38 40 40
3 Teor´ de la Informaci´n ıa o 3.1 3.2 3.3 3.4 3.5 Cantidad de Informaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Entrop´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa Entrop´ Condicionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ıa Cantidad de Informaci´n entre dos Variables . . . . . . . . . . . . . . . . . . . o Criptosistema Seguro de Shannon . . . . . . . . . . . . . . . . . . . . . . . . . .
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
12 3.6 3.7 3.8 3.9
´ INDICE GENERAL Redundancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Desinformaci´n y Distancia de Unicidad . . . . . . . . . . . . . . . . . . . . . . o Confusi´n y Difusi´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 42 43 43 45 45 46 47 47 47 48 49 49 50 50 51 52 52 53 53 55 55 56 56 57 58 60 62 62
4 Fundamentos de Aritm´tica Modular e 4.1 Aritm´tica Modular. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . e 4.1.1 4.2 Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C´lculo de Inversas en Aritm´tica Modular . . . . . . . . . . . . . . . . . . . . a e 4.2.1 4.2.2 4.2.3 Existencia de la Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . Funci´n de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Algoritmo Extendido de Euclides . . . . . . . . . . . . . . . . . . . . . .
4.3
Exponenciaci´n. Logaritmos Discretos . . . . . . . . . . . . . . . . . . . . . . . o 4.3.1 4.3.2 Algoritmo de Exponenciaci´n R´pida . . . . . . . . . . . . . . . . . . . o a El Problema de los Logaritmos Discretos . . . . . . . . . . . . . . . . .
4.4
Factorizaci´n. Tests de Primalidad . . . . . . . . . . . . . . . . . . . . . . . . . o 4.4.1 4.4.2 4.4.3 4.4.4 M´todo de Lehmann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e M´todo de Rabin-Miller . . . . . . . . . . . . . . . . . . . . . . . . . . . e Consideraciones Pr´cticas . . . . . . . . . . . . . . . . . . . . . . . . . . a Primos fuertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5
Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Aritm´tica Entera de M´ ltiple Precisi´n e u o 5.1 5.2 Representaci´n de enteros largos . . . . . . . . . . . . . . . . . . . . . . . . . . o Operaciones aritm´ticas sobre enteros largos . . . . . . . . . . . . . . . . . . . . e 5.2.1 5.2.2 5.2.3 5.2.4 5.3 5.4 Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplicaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Divisi´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o
Aritm´tica modular con enteros largos . . . . . . . . . . . . . . . . . . . . . . . e Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
´ INDICE GENERAL 6 Criptograf´ y N´ meros Aleatorios ıa u 6.1 Tipos de Secuencias Aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.1.2 6.1.3 6.2 Secuencias pseudoaleatorias . . . . . . . . . . . . . . . . . . . . . . . . . Secuencias criptogr´ficamente aleatorias . . . . . . . . . . . . . . . . . . a Secuencias totalmente aleatorias . . . . . . . . . . . . . . . . . . . . . .
13 65 65 65 66 66 67 67 69 70 71
Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas . . . . . . . . o a a 6.2.1 6.2.2 6.2.3 6.2.4 Obtenci´n de Bits Aleatorios . . . . . . . . . . . . . . . . . . . . . . . . o Eliminaci´n del Sesgo . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Generadores Aleatorios Criptogr´ficamente Seguros . . . . . . . . . . . . a Generador Blum Blum Shub . . . . . . . . . . . . . . . . . . . . . . . .
III
Criptograf´ de Llave Privada ıa
73
75 75 76 77 78 78 79 80 82 82 83 83 83 84 85 86 87
7 Criptograf´ Cl´sica ıa a 7.1 Algoritmos Cl´sicos de Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . a 7.1.1 7.1.2 7.1.3 7.1.4 7.2 Cifrados Monoalfab´ticos . . . . . . . . . . . . . . . . . . . . . . . . . . e Cifrados Polialfab´ticos . . . . . . . . . . . . . . . . . . . . . . . . . . . e Cifrados por Sustituci´n Homof´nica . . . . . . . . . . . . . . . . . . . . o o Cifrados de Transposici´n . . . . . . . . . . . . . . . . . . . . . . . . . . o
M´quinas de Rotores. La M´quina ENIGMA . . . . . . . . . . . . . . . . . . . a a 7.2.1 7.2.2 7.2.3 Un poco de Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Consideraciones Te´ricas Sobre la M´quina ENIGMA . . . . . . . . . . o a Otras M´quinas de Rotores . . . . . . . . . . . . . . . . . . . . . . . . . a
8 Algoritmos Sim´tricos de Cifrado e 8.1 Cifrado de producto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 8.1.2 8.1.3 8.2 Redes de Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cifrados con Estructura de Grupo . . . . . . . . . . . . . . . . . . . . . S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El Algoritmo DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.1 Claves D´biles en DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
14 8.3
´ INDICE GENERAL Variantes de DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.1 8.3.2 8.3.3 8.3.4 8.4 8.5 DES M´ltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u DES con Subclaves Independientes . . . . . . . . . . . . . . . . . . . . . DES Generalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DES con S-Cajas Alternativas . . . . . . . . . . . . . . . . . . . . . . . . 89 89 89 89 90 90 92 92 93 94 95 95 96 96
El algoritmo IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modos de Operaci´n para Algoritmos de Cifrado por Bloques . . . . . . . . . . o 8.5.1 8.5.2 8.5.3 8.5.4 Modo ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modo CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modo CFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Otros Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.6
Criptoan´lisis de Algoritmos Sim´tricos . . . . . . . . . . . . . . . . . . . . . . a e 8.6.1 8.6.2 Criptoan´lisis Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . a Criptoan´lisis Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a
IV
Criptograf´ de Llave P´ blica ıa u
97
99 99
9 Algoritmos Asim´tricos de Cifrado e 9.1 Aplicaciones de los Algoritmos Asim´tricos . . . . . . . . . . . . . . . . . . . . e 9.1.1 9.1.2 9.2
Protecci´n de la Informaci´n . . . . . . . . . . . . . . . . . . . . . . . . 100 o o Autentificaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 o
El Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.2.1 9.2.2 Seguridad del Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . 103 Vulnerabilidades de RSA . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.3
Otros Algoritmos Asim´tricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 e 9.3.1 9.3.2 Algoritmo de ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Algoritmo de Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.4
El Protocolo SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 111 . . . . . . . . . . . . . . . . . . . . . . . 111 Criptograf´ y Seguridad en Computadores ıa
10 M´todos de Autentificaci´n e o 10.1 Firmas Digitales. Funciones Resumen Manuel J. Lucena L´pez o
´ INDICE GENERAL
15
10.1.1 Longitud Adecuada para una Signatura . . . . . . . . . . . . . . . . . . 112 10.1.2 Estructura de una Funci´n Resumen . . . . . . . . . . . . . . . . . . . . 113 o 10.1.3 Algoritmo MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.1.4 El Algoritmo SHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.2 Autentificaci´n de Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 o 10.3 Autentificaci´n de Usuario Mediante Contrase˜a . . . . . . . . . . . . . . . . . 118 o n 10.3.1 Ataques Mediante Diccionario . . . . . . . . . . . . . . . . . . . . . . . . 119 10.4 Dinero Electr´nico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 o 10.5 Esteganograf´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 ıa 10.6 Certificados X.509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 11 PGP 125
11.1 Fundamentos e Historia de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . 125 11.2 Estructura de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 11.2.1 Codificaci´n de Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . 126 o 11.2.2 Firma Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.2.3 Armaduras ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.2.4 Gesti´n de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 o 11.2.5 Distribuci´n de Claves y Redes de Confianza . . . . . . . . . . . . . . . 129 o 11.2.6 Otros PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 11.3 Vulnerabilidades de PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
V
Seguridad en Redes de Computadores
133
135
12 Seguridad en Redes
12.1 Importancia de las Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 12.2 Redes Internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 12.3 Redes Externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 12.3.1 Intranets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 12.4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
16 13 Hackers 13.1 El Hielo y los Vaqueros
´ INDICE GENERAL 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
13.2 C´mo act´a un Hacker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 o u 13.2.1 Protocolo TCP/IP. Demonios y Puertos . . . . . . . . . . . . . . . . . . 143 13.2.2 Suplantando Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 13.2.3 Borrando las Huellas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 13.2.4 Ataques Pasivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 13.3 C´mo Protegerse del Ataque de los Hackers . . . . . . . . . . . . . . . . . . . . 146 o 13.4 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 14 Virus 149
14.1 Origen de los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 14.2 Anatom´ de un Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 ıa 14.2.1 M´todos de Contagio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 e 14.2.2 La Fase Destructiva de un Virus . . . . . . . . . . . . . . . . . . . . . . 151 14.3 Cu´ndo son Peligrosos los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 a 14.4 Protegerse frente a los Virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
VI
Ap´ndices e
153
155
A Ayudas a la Implementaci´n o
A.1 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 A.1.1 S-Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 A.1.2 Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 A.1.3 Valores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 A.2 IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Parte I
Preliminares
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 1
Introducci´n o
A lo largo de 1995 y principios de 1996, los profesores Jos´ Ignacio Pel´ez S´nchez, Antonio e a a S´nchez Solana y Manuel Lucena L´pez elaboraron una Colecci´n de Apuntes para la asiga o o natura ‘Criptograf´ y Seguridad en Computadores’, impartida en tercer curso de Ingenier´ ıa ıa T´cnica en Inform´tica de Gesti´n, en la Universidad de Ja´n. Varios a˜os han pasado desde e a o e n entonces, y, como cab´ esperar en una disciplina de tan r´pida evoluci´n, las cosas han camıa a o biado. Algunos algoritmos han perdido parte de su inter´s —como es el caso de DES, que fue e 1 el verano de 1998—, nuevas t´cnicas han surgido o se han popularizado —PGP es un vencido e claro ejemplo de que para el usuario de a pie se puede conseguir aut´ntica privacidad—, temas e que antes ten´ un inter´s limitado se han convertido en fundamentales —la r´pida expansi´n ıan e a o de Internet obliga no s´lo al profesional, sino al usuario medio, a tener ciertos conocimientos o b´sicos sobre seguridad—, etc. 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, la escasez de documentaci´n en Espa˜ol sobre Criptograf´ ıo. o n ıa, 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. o
1.1
C´mo Leer esta Obra o
Esta obra ha sido organizada en cinco partes: 1. Preliminares. Aqu´ se incluyen todos los conceptos b´sicos y se introduce la terminolog´ ı a ıa empleada en el resto del libro. Su lectura es recomendable incluso para las personas que ya conocen el tema, puesto que puede evitar cierta confusi´n en los t´rminos empleados o e
1 En realidad, el ataque que logr´ tener ´xito se realiz´ por la fuerza bruta, por lo que no podemos hablar o e o en un sentido estricto de derrota. De hecho, a´n no se ha encontrado ninguna debilidad seria en su dise˜o; lo u n que s´ qued´ patente es que su longitud de clave es demasiado peque˜a. ı o n
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
20 a lo largo de la obra.
1. Introducci´n o
2. Fundamentos Te´ricos de la Criptograf´ Se desarrollan brevemente los resultados te´rio ıa. o cos sobre los que se va a apoyar el resto del libro. Si usted no domina las Matem´ticas, a o simplemente no tiene inter´s en estos fundamentos, puede pasarla por alto. e 3. Criptograf´ de Llave Privada. Se introduce la Criptograf´ Cl´sica, as´ como los algoıa ıa a ı ritmos sim´tricos de cifrado. e 4. Criptograf´ de Llave P´blica. En esta parte se estudian los algoritmos asim´tricos y los ıa u e m´todos de autentificaci´n. Adem´s se incluye un cap´ e o a ıtulo sobre PGP. 5. Seguridad en Redes de Computadores. 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). Se a estudian en ella los problemas de seguridad que se dan en redes de computadoras, para que el lector pueda comenzar a elaborar por s´ mismo estrategias de protecci´n de la ı o informaci´n. o Este texto no tiene por qu´ ser le´ cap´ e ıdo ıtulo por cap´ ıtulo, aunque se ha organizado de manera que los contenidos m´s b´sicos aparezcan primero. 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 pero puede ser ignorada si el lector est´ dispuesto a creerse lo que encuentre en posteriores a cap´ ıtulos. 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, o correr´ el riesgo de perderse ıa, o a entre conceptos que, si de una parte son necesarios para una comprensi´n profunda del tema, o no son imprescincibles a la hora de empezar a adentrarse en este apasionante mundo. Se ha pretendido que todos los conceptos queden suficientemente claros con la sola lectura de este libro, 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ı, ıa tos, pudiendo emplear como punto de partida las propias referencias que aparecen al final de este documento, aunque por desgracia, algunas de las m´s interesantes est´n en ingl´s. a a e
1.2
Algunas notas sobre la Historia de la Criptograf´ ıa
La Criptograf´ moderna nace al mismo tiempo que las computadoras. Durante la Segunda ıa Guerra Mundial, en un lugar llamado Bletchley Park, un grupo de cient´ ıficos entre los que se encontraba Alan Turing, 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. 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—. 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. ıan Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
1.2. Algunas notas sobre la Historia de la Criptograf´ ıa
21
Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnolog´ cripıa togr´fica, si bien la mayor parte de estos avances se manten´ —y se siguen manteniendo, a ıan seg´n algunos— en secreto. Financiadas fundamentalmente por la NSA (Agencia Nacional u de Seguridad de los EE.UU.), la mayor parte de las investigaciones hasta hace relativamente poco tiempo han sido tratadas como secretos militares. Sin embargo en los ultimos a˜os, ´ n investigaciones serias llevadas a cabo en universidades de todo el mundo han logrado que la criptograf´ sea una ciencia al alcance de todos, y que se convierta en la piedra angular de ıa asuntos tan importantes como el comercio en Internet. Muchas son las voces que claman por la disponibilidad p´blica de la criptograf´ La exu ıa. periencia ha demostrado que la unica manera de tener buenos algoritmos es que ´stos sean ´ e p´blicos, para que puedan ser sometidos al escrutinio de toda la comunidad cient´ u ıfica. Casos 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 fue e o descubierto. Adem´s se puso en evidencia la deliberada debilitaci´n del algoritmo que los goa o biernos hab´ impuesto a sus creadores para facilitar las escuchas por parte de sus servicios ıan de espionaje. Otro ejemplo son los graves problemas de seguridad que presentaba el protocolo de comunicaciones seguras punto a punto que Microsoft inclu´ en Windows NT. La seguriıa dad no debe basarse en mantener los algoritmos ocultos, puesto que ´stos, tarde o temprano, e acaban siendo analizados y descritos, sino en su resistencia demostrada tanto te´rica como o pr´cticamente, y la unica manera de demostrar la fortaleza de un algoritmo es someti´ndolo a a ´ e todo tipo de ataques. El ultimo cap´ ´ ıtulo de esta historia ocurri´ en el verano de 1999, cuando o un programador denunci´ una supuesta puerta trasera en el c´digo criptogr´fico de todas las o o a versiones de Windows. Como este c´digo permanece en secreto, y se considera delito su an´lio a sis —¿Qu´ pensar´ usted si se compra un coche y se le proh´ desarmarlo para ver c´mo e ıa ıbe o funciona?—, es desgraciadamente imposible que Microsoft pueda despejar cualquier sombra de duda sobre la seguridad de sus sistemas operativos. Es imposible desligar la Criptograf´ moderna de todas las consideraciones pol´ ıa ıticas, filos´ficas y morales que suscita. Recordemos, por ejemplo, que el software criptogr´fico est´ suo a a jeto en EE.UU. a las mismas leyes que el armamento nuclear, y que en Europa se pretende elaborar legislaciones parecidas. Una consecuencia inmediata de esto es que las versiones que se exportan de los exploradores de Internet m´s extendidos (Netscape y Explorer), incorporan a una seguridad d´bil, impidiendo, por ejemplo, establecer conexiones realmente seguras para e conectarse a un banco —con el agravante de que no se informa de ello adecuadamente al usuario—. Otra de las l´ ıneas de debate es la intenci´n de algunos gobiernos de almacenar o todas las claves privadas de sus ciudadanos y considerar ilegales aquellas que no est´n regise tradas. Es como pedirnos a todos que le demos a la polic´ una copia de las llaves de nuestra ıa casa —con el pretexto, por supuesto, de luchar contra el terrorismo y el narcotr´fico—. a Existe un falaz argumento que algunos esgrimen en contra del uso privado de la Criptograf´ proclamando que ellos nada tienen que ocultar. Estas personas insin´an que cualquiera ıa, u que abogue por el uso libre de la Criptograf´ es poco menos que un delincuente, y que la neıa cesita para encubrir sus cr´ ımenes. En ese caso, ¿por qu´ esas personas que no tienen nada que e ocultar no env´ todas sus cartas en tarjetas postales, para que todos leamos su contenido?, ıan Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
22
1. Introducci´n o
o ¿por qu´ se molestan si alguien escucha sus conversaciones telef´nicas?. Defender el ´mbito e o a de lo privado es un derecho inalienable de la persona, que en mi opini´n debe prevalecer sobre o la obligaci´n que tienen los estados de perseguir a los delincuentes. D´mosle a los gobiernos o e poder para entrometerse en nuestras vidas, y acabar´n haci´ndolo, no les quepa duda. a e En el ojo del hurac´n se encuentra actualmente la red Echelon, que constituye una de las a mayores amenazas contra la libertad de toda la Historia de la Humanidad. B´sicamente se trata a de una red, creada por la NSA en 1980 —sus precursoras datan de 1952— en colaboraci´n o con Gran Breta˜a, Australia y Nueva Zelanda, para monitorizar pr´cticamente todas las n a comunicaciones electr´nicas —tel´fono, e-mail y fax principalmente— del planeta, y buscar o e de manera autom´tica ciertas palabras clave. La informaci´n obtenida ir´ a la NSA, que a o ıa luego podr´ a su vez brind´rsela a otros pa´ ıa a ıses. En marzo de 1999 el Parlamento Europeo fue interpelado por un comit´ de expertos para que se comprobara la posible vulneraci´n de e o 2 . El pretexto es, nuevamente, la lucha contra el derechos fundamentales por parte de esta red terrorismo, pero podr´ ser empleado tanto para espionaje industrial —como presuntamente ıa ha hecho durante a˜os el Gobierno Franc´s, poniendo a disposici´n de sus propias compa˜´ n e o nıas secretos robados a empresas extranjeras—, como para el control de aquellas personas que pueden representar amenazas pol´ ıticas a la estabilidad de la sociedad moderna. Sin embargo, parece que las intenciones de la Uni´n Eurpea son otras: el despliegue de su propia red de o vigilancia electr´nica, llamada Enfopol, en la que lleva trabajando unos diez a˜os. o 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, buzones de voz, faxes, o e chats y correo electr´nico, adem´s de la incorporaci´n de puertas traseras a los proveedores o a o de Internet. Existe un ducumento de la U.E. —ENFOPOL 112 10037/95—, firmado por todos y cada uno de los miembros de la Uni´n, en el que se aprueba la creaci´n de esta o o red. Sin embargo, ninguno de los estados miembros ha confirmado ni desmentido nada al respecto. Este secretismo es m´s que preocupante, pues deja a la supuesta democracia en que a vivimos maniatada frente a un asunto tan importante, impidiendo que se abra el imprescindible debate p´blico que deber´ anteceder a tan grave asunto. ¿Qu´ nos queda de la Libertad y la u ıa e Democracia si se nos ocultan asuntos tan importantes por nuestro bien?. Las ultimas noticias ´ apuntan a mediados de octubre de 1999 como la fecha en que los estados miembros de la U.E. piensan tomar una decisi´n definitiva sobre el tema. Si usted quiere saber m´s sobre Enfopol, o a visite la p´gina de Arturo Quirantes, http://www.ugr.es/~aquiran/cripto/enfopol.htm a
1.3
N´ meros Grandes u
Los algoritmos criptogr´ficos emplean claves con un elevado n´mero de bits, y usualmente a u se mide su calidad por la cantidad de esfuerzo que se necesita para romperlos. El tipo de ataque m´s simple es la fuerza bruta, que simplemente trata de ir probando una a una todas a las claves. Por ejemplo, el algoritmo DES tiene 256 posibles claves. ¿Cu´nto tiempo nos llevar´ a ıa probarlas todas si, por ejemplo, dispusi´ramos de un computador capaz de hacer un mill´n de e o
2
M´s informaci´n en http://jya.com/stoa-atpc.htm a o
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
1.3. N´meros Grandes u 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 estalle 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
23
1 entre 9.000.000.000 (233 ) 1 entre 13.983.816 (223 ) 1 entre 256
14.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.9 × 1024 (282 ) Kg. 2 × 1030 (2100 ) Kg. 1050 (2166 ) Kg. 1021 (269 ) m3 1027 (289 ) m3 1082 (2272 ) m3
Tabla 1.1: Algunos n´meros grandes u
operaciones por segundo? Tardar´ ıamos. . . ¡m´s de 2200 a˜os! Pero ¿y si la clave del ejemplo a n anterior tuviera 128 bits? El tiempo requerido ser´ de 1024 a˜os. ı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. En la tabla 1.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. 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). Esto nos deber´ disuadir de emplear mecanismos o ıa basados en la fuerza bruta para reventar claves de 128 bits. Para manejar la tabla con mayor rapidez, recordemos que un mill´n es aproximadamente o 220 , y que un a˜o tiene m´s o menos 224 segundos. Recorrer completamente un espacio de n a claves de, por ejemplo, 256 bits a raz´n de un mill´n por segundo supone 2256−44 = 2212 a˜os o o n de c´lculo. a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
24
1. Introducci´n o
1.4
Acerca de la Terminolog´ Empleada ıa
En muchos libros sobre Criptograf´ aparecen t´rminos como encriptar y desencriptar, ıa e adoptados con toda probabilidad del verbo anglosaj´n encrypt. El lector podr´ comprobar o a que este tipo de expresiones ha sido evitado en el presente texto, debido a la existencia de palabras perfectamente v´lidas que pertenecen al idioma castellano, como son cifrar-descifrar y a codificar-decodificar (o descodificar). 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. Esta ultima es la situaci´n en la que se encuentra la palabra esteganoo ´ o graf´ hispanizaci´n del t´rmino ingl´s steganography. ıa, o e e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 2
Conceptos B´sicos sobre a Criptograf´ ıa
2.1 Criptograf´ ıa
Seg´n el Diccionario de la Real Academia, la palabra Criptograf´ proviene del griego u ıa κρυπτ oς, que significa oculto, y γρ´ ϕ ιν, que significa escritura, y su definici´n es: “Arte de ´ α o escribir con clave secreta o de un modo enigm´tico”. Obviamente la Criptograf´ hace a˜os que a ıa n dej´ de ser un arte para convertirse en una t´cnica, o m´s bien un conglomerado de t´cnicas, o e a e que tratan sobre la protecci´n —ocultamiento frente a observadores no autorizados— de la o informaci´n. Entre las disciplinas que engloba cabe destacar la Teor´ de la Informaci´n, la o ıa o Teor´ de N´meros —o Matem´tica Discreta, que estudia las propiedades de los n´meros ıa u a u enteros—, y la Complejidad Algor´ ıtmica. Existen dos documentos fundamentales, uno escrito por Claude Shannon en 1948 (“A Mathematical Theory of Communication”), en el que se sientan las bases de la Teor´ de ıa la Informaci´n, y que junto con otro art´ o ıculo posterior del mismo autor sirvi´ de base para o la Criptograf´ moderna. El segundo trabajo fundamental, publicado por Whitfield Diffie y ıa Martin Hellman en 1976, se titulaba “New directions in Cryptography”, e introduc´ el concepto ıa de Criptograf´ de Llave P´blica, abriendo enormemente el abanico de aplicaci´n de esta ıa u o disciplina. Conviene hacer notar que la palabra Criptograf´ s´lo se refiere al uso de c´digos, por ıa o o lo que no engloba a las t´cnicas que se usan para romper dichos c´digos (Criptoan´lisis). El e o a t´rmino Criptolog´ aunque no est´ recogido a´n en el Diccionario, se emplea habitualmente e ıa, a u para agrupar estas dos disciplinas. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
26
2. Conceptos B´sicos sobre Criptograf´ a ıa
2.2
Criptosistema
Definiremos un criptosistema como una qu´ ıntupla (M, C, K, E, D), donde: • M representa el conjunto de todos los mensajes sin cifrar (lo que se denomina texto plano, o plaintext) que pueden ser enviados. • C representa el conjunto de todos los posibles mensajes cifrados, o criptogramas. • K representa el conjunto de claves que se pueden emplear en el criptosistema. • E es el conjunto de transformaciones de cifrado o familia de funciones que se aplica a cada elemento de M para obtener un elemento de C. Existe una transformaci´n diferente o Ek para cada valor posible de la clave k. • D es el conjunto de transformaciones de descifrado, an´logo a E. a Todo criptosistema ha de cumplir la siguiente condici´n: o Dk (Ek (m)) = m (2.1)
es decir, que si tenemos un mensaje m, lo ciframos empleando la clave k y luego lo desciframos empleando la misma clave, obtenemos de nuevo el mensaje original m. Existen dos tipos fundamentales de criptosistemas: • Criptosistemas sim´tricos o de clave privada. Son aquellos que emplean la misma clave e k tanto para cifrar como para descifrar. Presentan el inconveniente de que para ser empleados en comunicaciones la clave k debe estar tanto en el emisior como en el receptor, lo cual nos lleva preguntarnos c´mo transmitir la clave de forma segura. o • Criptosistemas asim´tricos o de llave p´blica, que emplean una doble clave (kp , 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. En o o muchos casos son intercambiables, esto es, si empleamos una para cifrar la otra sirve para descifrar y viceversa. Estos criptosistemas deben cumplir adem´s que el conocimiento de a la clave p´blica kP no permita calcular la clave privada kp . Ofrecen un abanico superior u de posibilidades, pudiendo emplearse para establecer comunicaciones seguras por canales inseguros (puesto que unicamente viaja por el canal la clave p´blica, que s´lo sirve para ´ u o cifrar), o para llevar a cabo autentificaciones. En la pr´ctica se emplea una combinaci´n de estos dos tipos de criptosistemas, puesto a o que los segundos presentan el inconveniente de ser computacionalmente mucho m´s costosos a que los primeros. En el mundo real se codifican los mensajes (largos) mediante algoritmos sim´tricos, que suelen ser muy eficientes, y luego se hace uso de la criptograf´ asim´trica para e ıa e codificar las claves sim´tricas (cortas). e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
2.3. Esteganograf´ ıa Claves D´biles e
27
En la inmensa mayor´ de los casos los conjuntos M y C definidos anteriormente son ıa iguales. Esto quiere decir que tanto los textos planos como los textos cifrados se representan empleando el mismo alfabeto —por ejemplo, cuando se usa el algoritmo DES, ambos son cadenas de 64 bits—. Por esta raz´n puede darse la posibilidad de que exista alg´n k ∈ K tal o u que Ek (M ) = M , lo cual ser´ catastr´fico para nuestros prop´sitos, puesto que el empleo de ıa o o esas claves dejar´ todos nuestros mensajes ¡sin codificar!. ıa Tambi´n puede darse el caso de que ciertas claves concretas generen textos cifrados de poca e calidad. Una posibilidad bastante com´n en ciertos algoritmos es que algunas claves tengan u la siguiente propiedad: Ek (Ek (M )) = M , lo cual quiere decir que basta con volver a codificar el criptograma para recuperar el texto plano original. Estas circunstancias podr´ llegar a ıan simplificar enormemente un intento de violar nuestro sistema, por lo que tambi´n habr´ que e a evitarlas a toda costa. La existencia de claves con estas caracter´ ısticas, como es natural, depende en gran medida de las peculiaridades de cada algoritmo en concreto, y en muchos casos tambi´n de los e par´metros escogidos a la hora de aplicarlo. Llamaremos en general a las claves que no coa difican correctamente los mensajes claves d´biles (weak keys en ingl´s). 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. No obstante, conviene conocer esta circunstancia para poder u evitar en la medida de lo posible sus consecuencias.
2.3
Esteganograf´ ıa
La esteganograf´ —o empleo de canales subliminales— consiste en ocultar en el interior ıa de una informaci´n, aparentemente inocua, otro tipo de informaci´n (cifrada o no). Este o o m´todo ha cobrado bastante importancia ultimamente debido a que permite burlar diferentes e ´ sistemas de control. Supongamos que un disidente pol´ ıtico quiere enviar un mensaje fuera de su pa´ burlando la censura. Si lo codifica, las autoridades jam´s permitir´n que el mensaje ıs, a a atraviese las fronteras independientemente de que puedan acceder a su contenido, mientras que si ese mismo mensaje viaja camuflado en el interior de una imagen digital para una inocente felicitaci´n navide˜a, tendr´ muchas m´s posibilidades de llegar a su destino. Como o n a a es de suponer, existen tantos mecanismos para llevar a cabo este camuflaje como nuestra imaginaci´n nos permita. o Menci´n especial merece el uso de la esteganograf´ para exportar informaci´n sin violar o ıa o las leyes restrictivas que, con respecto a la Criptograf´ fuerte, existen en algunos pa´ ıa ıses. El mensaje se env´ como texto plano, pero entremezclado con cantidades ingentes de basura. ıa El destinatario emplear´ t´cnicas esteganogr´ficas para separar la informaci´n util del resto. a e a o ´ Esta t´cnica se conoce como chaffing and winnowing, que vendr´ a traducirse como llenar e ıa de paja y separar el grano de la paja. En consecuencia, tenemos un mecanismo para transmitir informaci´n no cifrada, pero que s´lo puede ser reconstruida por el destinatario, con lo o o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
28
2. Conceptos B´sicos sobre Criptograf´ a ıa
que en realidad hemos logrado protegerla sin usar en ning´n momento ning´n algoritmo de u u codificaci´n. Este sistema surgi´ en marzo de 1998, propuesto por Ronald L. Rivest —uno o o de los creadores de RSA—, como desaf´ a la pol´ ıo ıtica restrictiva del Gobierno de los EE.UU. con respecto a la Criptograf´ No deja de ser en cierto modo una curiosidad, debido a lo ıa. enormemente grandes que son los mensajes en comparaci´n con la cantidad de texto util que o ´ se puede incluir en ellos.
2.4
Criptoan´lisis a
El criptoan´lisis consiste en comprometer la seguridad de un criptosistema. Esto se puede a hacer descifrando un mensaje sin conocer la llave, o bien obteniendo a partir de uno o m´s a criptogramas la clave que ha sido empleada en su codificaci´n. No se considera criptoan´lisis o a el descubrimiento de un algoritmo secreto de cifrado; hemos de suponer por el contrario que los algoritmos siempre son conocidos. En general el criptoan´lisis se suele llevar a cabo estudiando grandes cantidades de pares a mensaje-criptograma generados con la misma clave. El mecanismo que se emplee para obtenerlos es indiferente, y puede ser resultado de escuchar un canal de comunicaciones, o de la posibilidad de que el objeto de nuestro ataque responda con un criptograma cuando le enviemos un mensaje. Obviamente, cuanto mayor sea la cantidad de pares, m´s probabilidades de a ´xito tendr´ el criptoan´lisis. e a a Uno de los tipos de an´lisis m´s interesantes es el de texto plano escogido, que parte de que a a conocemos una serie de pares de textos planos —elegidos por nosotros— y sus criptogramas correspondientes. Esta situaci´n se suele dar cuando tenemos acceso al dispositivo de cifrado o y ´ste nos permite efectuar operaciones, pero no nos permite leer su clave —por ejemplo, las e tarjetas de los tel´fonos m´viles GSM—. El n´mero de pares necesarios para obtener la clave e o u desciende entonces significativamente. Cuando el sistema es d´bil, pueden ser suficientes unos e cientos de mensajes para obtener informaci´n que permita deducir la clave empleada. o Tambi´n podemos tratar de criptoanalizar un sistema aplicando el algoritmo de descifrae do, con todas y cada una de las claves, a un mensaje codificado que poseemos y comprobar cu´les de las salidas que se obtienen tienen sentido como posible texto plano. Este m´todo a e y todos los que buscan exhaustivamente por el espacio de claves K, se denominan ataques por la fuerza bruta, y en muchos casos no suelen considerarse como aut´nticas t´cnicas de e e criptoan´lisis, reserv´ndose este t´rmino para aquellos mecanismos que explotan posibles dea a e bilidades intr´ ınsecas en el algoritmo de cifrado. Se da por supuesto que el espacio de claves para cualquier criptosistema digno de inter´s ha de ser suficientemente grande como para e que un ataque por la fuerza bruta sea inviable. Hemos de tener en cuenta no obstante que la capacidad de c´lculo de las computadoras crece a gran velocidad, por lo que algoritmos a que hace unos a˜os eran resistentes frente a ataques por la fuerza bruta hoy pueden resultar n inseguros, como es el caso de DES. Sin embargo, existen longitudes de clave para las que resultar´ imposible a todas luces un ataque de este tipo. Por ejemplo, si dise˜´ramos una ıa na m´quina capaz de recorrer todas las combinaciones que pueden tomar 256 bits, cuyo consumo a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
2.5. Compromiso entre Criptosistema y Criptoan´lisis a
29
fuera m´ ınimo en cada cambio de estado1 , no habr´ energ´ suficiente en el Universo para que ıa ıa pudiera completar su trabajo. 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 8.6, p´gina 95). El primero de ellos, partiendo de a o a pares de mensajes con diferencias m´ ınimas —usualmente de un bit—, estudia las variaciones que existen entre los mensajes cifrados correspondientes, tratando de identificar patrones comunes. El segundo emplea operaciones XOR entre algunos bits del texto plano y algunos bits del texto cifrado, obteniendo finalmente un unico bit. Si realizamos esto con muchos pares de ´ texto plano-texto cifrado podemos obtener una probabilidad p en ese bit que calculamos. Si p est´ suficientemente sesgada (no se aproxima a 1 ), tendremos la posibilidad de recuperar la a 2 clave. Otro tipo de an´lisis, esta vez para los algoritmos asim´tricos, consistir´ en tratar de a e ıa deducir la llave privada a partir de la p´blica. 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, logaritmos discretos, etc. Mientras estos problemas gen´ricos o e permanezcan sin soluci´n eficiente, podremos seguir confiando en estos algoritmos. o La Criptograf´ no s´lo se emplea para proteger informaci´n, tambi´n se utiliza para perıa o o e mitir su autentificaci´n, es decir, para identificar al autor de un mensaje e impedir que nadie o suplante su personalidad. En estos casos surge un nuevo tipo de criptoan´lisis que est´ encaa a minado unicamente a permitir que elementos falsos pasen por buenos. Puede que ni siquiera ´ nos interese descifrar el mensaje original, sino simplemente poder sustituirlo por otro falso y que supere las pruebas de autentificaci´n. o Como se puede apreciar, la gran variedad de sistemas criptogr´ficos produce necesariaa mente gran variedad de t´cnicas de criptoan´lisis, cada una de ellas adaptada a un algoritmo e a o familia de ellos. Con toda seguridad, cuando en el futuro aparezcan nuevos mecanismos de protecci´n de la informaci´n, surgir´n con ellos nuevos m´todos de criptoan´lisis. De hecho, la o o a e a investigaci´n en este campo es tan importante como el desarrollo de algoritmos criptogr´ficos, o a y esto es debido a que, mientras que la presencia de fallos en un sistema es posible demostrarla, su ausencia es por definici´n indemostrable. o
2.5
Compromiso entre Criptosistema y Criptoan´lisis a
En la secci´n 3.5 (p´g. 40) veremos que pueden existir sistemas idealmente seguros, capaces o a de resistir cualquier ataque. Tambi´n veremos que estos sistemas en la pr´ctica carecen de e a inter´s, lo cual nos lleva a tener que adoptar un compromiso entre el coste del sistema — e tanto computacional como de almacenamiento, e incluso econ´mico— frente a su resistencia o a diferentes ataques criptogr´ficos. a La informaci´n posee un tiempo de vida, y pierde su valor transcurrido ´ste. 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.
1
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
30
2. Conceptos B´sicos sobre Criptograf´ a ıa
la estrategia de inversiones a largo plazo de una gran empresa, por ejemplo, tienen un mayor periodo de validez que la exclusiva period´ ıstica de una sentencia judicial que se va a hacer p´blica al d´ siguiente. Ser´ suficiente, pues, 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. Esto no suele ser f´cil, sobre todo porque no tardar´ lo mismo un o e a a oponente que disponga de una unica computadora de capacidad modesta, que otro que emplee ´ una red de supercomputadoras. 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, porque entonces a a puede que no est´ segura. La seguridad de los criptosistemas se suele medir en t´rminos del e e n´mero de computadoras y del tiempo necesarios para romperlos, y a veces simplemente en u funci´n del dinero necesario para llevar a cabo esta tarea con garant´ de ´xito. o ıas e En cualquier caso hoy por hoy existen sistemas que son muy poco costosos —o incluso gratuitos, como algunas versiones de PGP—, y que nos garantizan un nivel de protecci´n o tal que toda la potencia de c´lculo que actualmente hay en el planeta ser´ insuficiente para a ıa romperlos. Tampoco conviene depositar excesiva confianza en el algoritmo de cifrado, 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. Por ejemplo, no tiene sentido emplear algoritmos con niveles de seguridad extremadamente elevados si luego escogemos contrase˜as (passwords) rid´ n ıculamente f´ciles de adivinar. Una pr´ctica muy extendida por desgracia es la de escoger palabras clave a a que contengan fechas, nombres de familiares, nombres de personajes o lugares de ficci´n, etc. o Son las primeras que un atacante avispado probar´ Tampoco es una pr´ctica recomendable ıa. a anotarlas o dec´ ırselas a nadie, puesto que si la clave cae en malas manos, todo nuestro sistema queda comprometido, por buenos que sean los algoritmos empleados.
2.6
Seguridad
El concepto de seguridad en la informaci´n es mucho m´s amplio que la simple protecci´n o a o de los datos a nivel l´gico. Para proporcionar una seguridad real hemos de tener en cuenta o m´ltiples factores, tanto internos como externos. En primer lugar habr´ que caracterizar el u ıa sistema que va a albergar la informaci´n para poder identificar las amenazas, y en este sentido o podr´ ıamos hacer la siguiente subdivisi´n: o
1. Sistemas aislados. Son los que no est´n conectados a ning´n tipo de red. De unos a˜os a a u n esta parte se han convertido en minor´ debido al auge que ha experimentado Internet. ıa, 2. Sistemas interconectados. Hoy por hoy casi cualquier ordenador pertenece a alguna red, enviando y recogiendo informaci´n del exterior casi constantemente. 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. u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
2.6. Seguridad
31
En cuanto a las cuestiones de seguridad que hemos de fijar podr´ ıamos clasificarlas de la siguiente forma: 1. Seguridad f´ ısica. Englobaremos dentro de esta categor´ a todos los asuntos relacionados ıa con la salvaguarda de los soportes f´ ısicos de la informaci´n, m´s que de la informaci´n o a o propiamente dicha. En este nivel estar´ ıan, entre otras, las medidas contra incendios y sobrecargas el´ctricas, la prevenci´n de ataques terroristas, las pol´ e o ıticas de backup, etc. 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. ´ 2. Seguridad de la informaci´n. En este apartado prestaremos atenci´n a la preservaci´n o o o de la informaci´n frente a observadores no autorizados. Para ello podemos emplear tano to criptograf´ sim´trica como asim´trica, estando la primera unicamente indicada en ıa e e ´ sistemas aislados, ya que si la emple´ramos en redes, al tener que transmitir la clave por a el canal de comunicaci´n, estar´ o ıamos asumiendo un riesgo excesivo. 3. Seguridad del canal de comunicaci´n. Los canales de comunicaci´n rara vez se consideran o o seguros. Debido a que en la mayor´ de los casos escapan a nuestro control, ya que ıa pertenecen a terceros, resulta imposible asegurarse totalmente de que no est´n siendo a escuchados o intervenidos. 4. Problemas de autentificaci´n. Debido a los problemas del canal de comunicaci´n, es o o necesario asegurarse de que la informaci´n que recibimos en la computadora viene de o quien realmente creemos que viene. Para esto se suele emplear criptograf´ asim´trica ıa e en conjunci´n con funciones resumen (ver secci´n 10.1, p´gina 111). o o a 5. Problemas de suplantaci´n. En las redes tenemos el problema a˜adido de que cualquier o n usuario autorizado puede acceder al sistema desde fuera, por lo que hemos de confiar en sistemas fiables para garantizar que los usuarios no est´n siendo suplantados por intrusos. a Normalmente se emplean mecanismos basados en password para conseguir esto.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
32
2. Conceptos B´sicos sobre Criptograf´ a ıa
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
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 a ıa a hubiera salido negra dir´ ıamos que ese suceso no nos extra˜a (nos aporta poca informaci´n). n o En 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 nos aporta 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 a a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
36
3. Teor´ de la Informaci´n ıa o
caso, 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 (lo conocemos de o antemano). Por el contrario, si tenemos una certeza del 99% sobre la posible ocurrencia del valor xi , obtener un xj nos aportar´ bastante informaci´n, como ya hemos visto. Este concepto a o de informaci´n es cuantificable y se puede definir de la siguiente forma: o 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 si a o ıa su probabilidad se acercara a 0, tender´ a +∞ (esto es l´gico, un suceso que no puede suceder ıa o nos aportar´ una cantidad infinita de informaci´n si llega a ocurrir). a o
3.2
Entrop´ ıa
Sumando ponderadamente las cantidades de informaci´n de todos los posibles estados de o una variable aleatoria V , obtenemos:
n n
H(V ) = −
P (xi ) log2 [P (xi )] =
i=1 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
iii. H(x1 , x2 . . . xn ) = H(x1 , x2 . . . xn , xn+1 ) si P (xn+1 ) = 0 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
ii. H(V ) = 0 ⇐⇒ ∃i tal que P (xi ) = 1 y P (xj ) = 0 ∀i = j
3.2. Entrop´ ıa
37
Como ejercicio vamos a demostrar la propiedad i. Para ello emplearemos el Lema de Gibbs, que dice que dados dos sistemas de n´meros p1 , . . . pn y q1 , . . . qn no negativos tales que u
n n
pi =
i=1 i=1
qi
se verifica que
n n
−
i=1
pi log2 (pi ) ≤ −
1 N,
pi log2 (qi )
i=1
(3.3)
Entonces, si tomamos pi = P (xi ) y qi =
n
resulta que
n
− y por lo tanto
i=1
pi log2 (pi ) ≤ −
pi log2
i=1
1 N
H(X) ≤ − log2
1 N
n
pi = log2 (N )
i=1
Obs´rvese que la entrop´ es proporcional a la longitud media de los mensajes necesaria e ıa para codificar una serie de valores de V de manera ´ptima dado un alfabeto cualquiera. Esto o quiere decir que cuanto m´s probable sea un valor individual, aportar´ menos informaci´n a a o cuando aparezca, y podremos codificarlo empleando un mensaje m´s corto. Si P (xi ) = 1 no a necesitar´ ıamos ning´n mensaje, puesto que sabemos de antemano que V va a tomar el valor u xi , mientras que si P (xi ) = 0.9 parece m´s l´gico emplear mensajes cortos para representar a o el suceso xi y largos para los xj restantes, ya que el valor que m´s nos va a aparecer en una a secuencia de sucesos es precisamente xi . Volveremos sobre este punto un poco m´s adelante. 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.5 log2 (0.5) + 0.5 log2 (0.5)) = 1 Este suceso aporta exactamente una unidad de informaci´n. o • Si la moneda est´ trucada (60% de probabilidades para cara, 40% para cruz), nos sale: a H(M ) = −(0.6 log2 (0.6) + 0.4 log2 (0.4)) = 0.970 • Veamos el ejemplo de las bolas (nueve negras y una blanca): H(M ) = −(0.9 log2 (0.9) + 0.1 log2 (0.1)) = 0.468 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
38
3. Teor´ de la Informaci´n ıa o
La unidad de cantidad de informaci´n que vamos a emplear es la cantidad de informaci´n o o que aporta el suceso m´s simple (dos posibilidades equiprobables, como el caso de la moneda a sin trucar), y a esa unidad se le denomina bit. Esta es precisamente la raz´n por la que o empleamos logaritmos base 2, para que la cantidad de informaci´n del suceso m´s simple sea o a igual a la unidad. Podemos decir que la entrop´ de un suceso es el n´mero medio de bits que necesitaremos ıa u para codificar cada uno de los estados de la variable (expresamos cada suceso empleando un mensaje escrito en un alfabeto binario). Supongamos que queremos representar los diez d´ ıgitos decimales usando secuencias de bits. Con tres bits no tenemos suficiente, as´ que necesitaremos ı m´s, pero ¿cu´ntos m´s? Si usamos cuatro bits para representar todos los d´ a a a ıgitos tal vez nos estemos pasando. . . Veamos cu´nta entrop´ tienen diez sucesos equiprobables: a ıa
10
H=−
i=1
1 log2 10
1 10
= − log2
1 10
= 3.32bits
El valor que acabamos de calcular es el l´ ımite te´rico, que normalmente no se puede alcano zar. 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. Veamos la siguiente cou dificaci´n: 000 para 0, 001 para 1, 010 para 2, 011 para 3, 100 para 4, 101 para 5 ,1100 para o 6, 1101 para 7, 1110 para 8, y 1111 para 9. Con esta codificaci´n empleamos, como media o 3·6+4·4 = 3.4bits 10 para codificar cada mensaje. El denominado M´todo de Huffman, uno de los m´s utilizados e a en transmisi´n de datos, permite obtener codificaciones binarias que se aproximan bastante o al ´ptimo te´rico de una forma sencilla y eficiente. o o
3.3
Entrop´ Condicionada ıa
Supongamos que tenemos ahora una variable aleatoria bidimensional (X, Y ). Recordemos las distribuciones de probabilidad m´s usuales que podemos definir sobre dicha variable, tea niendo n posibles casos para X y m para Y : 1. Distribuci´n conjunta de (X, Y ): o P (xi , yj ) 2. Distribuciones marginales de X e Y :
m n
P (xi ) =
j=1
P (xi , yj )
P (yj ) =
i=1
P (xi , yj )
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
3.3. Entrop´ Condicionada ıa 3. Distribuciones condicionales de X sobre Y y viceversa: P (xi /yj ) = P (xi , yj ) P (yj ) P (yj /xi ) = P (xi , yj ) P (xi )
39
Definiremos la entrop´ de las distribuciones que acabamos de referir: ıa
n m
H(X, Y ) = −
P (xi , yj ) log2 (P (xi , yj ))
i=1 j=1
n
H(X/Y = yj ) = −
P (xi /yj ) log2 (P (xi /yj ))
i=1
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 ) = − = −
P (yj )P (xi /yj ) log2 (P (xi /yj )) =
i=1 j=1 n m
P (xi , yj ) log2 (P (xi /yj ))
i=1 j=1
(3.4)
As´ como existe una Ley de la Probabilidad Total, an´logamente se define la Ley de Enı a trop´ Totales: ıas H(X, Y ) = H(X) + H(Y /X) cumpli´ndose adem´s, si X e Y son variables independientes: e a H(X, Y ) = H(X) + H(Y ) (3.6) (3.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, alcanz´ndose la igualdad si y s´lo si las variables ıa a o X e Y son independientes. Este teorema representa una idea intuitiva bien clara: conocer algo acerca de la variable Y puede que nos ayude a saber m´s sobre X (tener menos entrop´ pero en ning´n caso a ıa), u har´ aumentar nuestra incertidumbre. a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
40
3. Teor´ de la Informaci´n ıa o
3.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. Se definir´, pues, la cantidad de informaci´n de Shannon que a o la variable X contiene sobre Y como: I(X, Y ) = H(Y ) − H(Y /X) (3.7)
Esto quiere decir que la cantidad de 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. Sus propiedades son las siguientes: i. I(X, Y ) = I(Y, X) ii. I(X, Y ) ≥ 0
3.5
Criptosistema Seguro de Shannon
Diremos que un criptosistema es seguro si la cantidad de informaci´n que nos aporta el o hecho de conocer el mensaje cifrado c sobre la entrop´ del texto plano m vale cero. Es decir: ıa I(C, M ) = 0 (3.8)
Esto significa sencillamente que la distribuci´n de probabilidad que nos inducen todos los o posibles mensajes no cifrados no cambia si conocemos el mensaje cifrado. Para entenderlo mejor supongamos que s´ se modifica dicha distribuci´n: El hecho de conocer un mensaje ı o cifrado, al variar la distribuci´n de probabilidad sobre M har´ unos mensajes m´s probables o ıa a que otros, y por consiguiente unas claves de cifrado (aquellas que nos permitan llegar de los m m´s probables al c concreto que tenga en cada momento) m´s probables que otras. Repitiendo a a esta operaci´n muchas veces con mensajes diferentes, cifrados con la misma clave, podr´ o ıamos ir modificando la distribuci´n de probabilidad sobre la clave empleada hasta obtener un valor o de clave mucho m´s probable que los otros, permiti´ndonos romper el criptosistema. a e Si por el contrario el sistema cumpliera la condici´n 3.8, jam´s podr´ o a ıamos romperlo, ni siquiera empleando una m´quina con capacidad de proceso infinita. Por ello los criptosistemas a que cumplen la condici´n de Shannon se denominan tambi´n criptosistemas ideales. o e Se puede demostrar tambi´n que para que un sistema sea criptoseguro seg´n el criterio de e u Shannon, la cardinalidad del espacio de claves ha de ser al menos igual que la del espacio de mensajes. En otras palabras, que la clave ha de ser al menos tan larga como el mensaje que queramos cifrar. Esto vuelve in´tiles a estos criptosistemas en la pr´ctica, porque si la clave u a es tanto o m´s larga que el mensaje, a la hora de protegerla nos encontraremos con el mismo a problema que ten´ ıamos para proteger el mensaje. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
3.6. Redundancia
41
3.6
Redundancia
Si una persona lee un mensaje en el que faltan algunas letras, normalmente puede reconstruirlo. Esto ocurre porque casi todos los s´ ımbolos de un mensaje en lenguaje natural contienen informaci´n que se puede extraer de los s´ o ımbolos de alrededor (informaci´n que, o en la pr´ctica, se est´ enviando dos veces), o en otras palabras, porque el lenguaje natural a a es redundante. Puesto que tenemos mecanismos para definir la cantidad de informaci´n que o presenta un suceso, podemos intentar medir el exceso de informaci´n (redundancia) de un o lenguaje. Para ello vamos a dar una serie de definiciones: ´ • Indice de un lenguaje. Definiremos el ´ ındice de un lenguaje para mensajes de longitud k como: Hk (M ) rk = (3.9) k siendo Hk (M ) la entrop´ de todos los posibles mensajes de longitud k. Estamos miıa diendo el n´mero de bits de informaci´n que nos aporta cada car´cter en mensajes u o a de una longitud determinada. Para idiomas como el Ingl´s, rk suele valer alrededor de e 1.3 bits/letra para valores peque˜os de k. n ´ • Indice absoluto de un lenguaje. Es el m´ximo n´mero de bits de informaci´n que pueden a u o ser codificados en cada car´cter, asumiendo que todas las combinaciones de caracteres a son igualmente probables. Suponiendo m letras diferentes en nuestro alfabeto (27 en el caso del Espa˜ol), este ´ n ındice vale: R = log2 (m) En el caso del Espa˜ol podr´ n ıamos codificar 4.7 bits/letra aproximadamente, luego parece que el nivel de redundancia (asumiendo que su ´ ındice r sea parecido al del Ingl´s) es e alto. • Finalmente, 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, para medir la aut´ntica redundancia de un lenguaje, hemos de tener e en cuenta secuencias de cualquier n´mero de caracteres, por lo que la expresi´n 3.9 deber´ u o ıa calcularse en realidad como: r∞ = lim Manuel J. Lucena L´pez o Hn (M ) n (3.10)
n→∞
Criptograf´ y Seguridad en Computadores ıa
42
3. Teor´ de la Informaci´n ıa o
Precisamente una de las aplicaciones de la Teor´ de la Informaci´n es la compresi´n de ıa o o datos, que simplemente trata de eliminar la redundancia dentro de un archivo (considerando cada byte como un mensaje elemental, y codific´ndolo con m´s o menos bits seg´n su frecuencia a a u de aparici´n). o Otra de las aplicaciones directas de la Teor´ de la Informaci´n son los C´digos de Redunıa o o dancia C´ ıclica (CRC), que permiten introducir un campo de longitud m´ ınima en el mensaje, tal que ´ste proporcione la mayor redundancia posible. As´ si el mensaje original resultase e ı, alterado, la probabilidad de que el CRC a˜adido siga siendo correcto es m´ n ınima. N´tese que, conocidos los patrones de redundancia de un lenguaje, 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. 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. El n´mero de claves suele ser tan u elevado que resulta imposible una inspecci´n visual. Una estrategia bastante interesante para o protegerse contra este tipo de ataques, y que suele emplearse con frecuencia, consiste en comprimir los mensajes antes de codificarlos. 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.
3.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: H(M/C) = − P (c)P (m/c)log2 (P (m/c))
m∈M c∈C
(3.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. Si esa incertidumbre fuera la misma que desconociendo c —en cuyo caso se cumplir´ que H(M ) = H(M/C)—, nos encontrar´ ıa ıamos con que C y M son variables estad´ ısticamente independientes, y por lo tanto estar´ ıamos frente a un criptosistema seguro de Shannon, ya que jam´s podr´ a ıamos disminuir nuestra incertidumbre acerca de m. 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), por lo que H(M/C) < H(M ). Adicionalmente, si el valor de H(M/C) fuera muy peque˜o con respecto a H(M ), signin ficar´ que el hecho de conocer c nos aporta mucha informaci´n sobre m, lo cual quiere decir ıa o que nuestro criptosistema es inseguro. El peor de los casos ser´ que H(M/C) = 0, puesto que ıa entonces, conociendo el valor de c tendr´ ıamos albsoluta certeza sobre el valor de m. Esta magnitud se puede medir tambi´n en funci´n del conjunto K de claves, y entonces e o nos dir´ la incertidumbre que nos queda sobre k conocida c: a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
3.8. Confusi´n y Difusi´n o o
43
H(K/C) = −
P (c)P (k/c)log2 (P (k/c))
k∈K c∈C
(3.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. En otras palabras, es la cantidad de texto cifrado que necesitamos para poder descubrir la clave. Los criptosistemas seguros de Shannon tienen distancia de unicidad infinita. 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. a a a
3.8
Confusi´n y Difusi´n o o
Seg´n la Teor´ de Shannon, las dos t´cnicas b´sicas para ocultar la redundancia en un u ıa e a texto plano son la confusi´n y la difusi´n. Estos conceptos, a pesar de su antig¨edad, poseen o o u una importancia clave en Criptograf´ moderna. ıa • Confusi´n. Trata de ocultar la relaci´n entre el texto plano y el texto cifrado. Recordemos o o que esa relaci´n existe y se da a partir de la clave k empleada, puesto que si no existiera o jam´s podr´ a ıamos descifrar los mensajes. El mecanismo m´s simple de confusi´n es la a o sustituci´n, que consiste en cambiar cada ocurrencia de un s´ o ımbolo en el texto plano por otro. La sustituci´n puede ser tan simple o tan compleja como queramos. o • Difusi´n. Diluye la redundancia del texto plano reparti´ndola a lo largo de todo el texto o e cifrado. El mecanismo m´s elemental para llevar a cabo una difusi´n es la transposici´n a o o (que consiste en cambiar de sitio elementos individuales del texto plano).
3.9
Ejercicios Propuestos
1. Calcule la cantidad de informaci´n que tiene el hecho de que en un dado no cargado o salga un n´mero par. u 2. Calcule la entrop´ que tiene un dado que presenta doble probabilidad para el n´mero ıa u tres que para el resto. 3. Demuestre el Lema de Gibbs, teniendo en cuenta la siguiente propiedad: ∀x, x > 0 =⇒ log2 (x) ≤ x − 1 4. Demuestre la Ley de Entrop´ Totales. ıas 5. Suponga que un equipo de f´tbol gana por regla general el 65% de sus partidos, pero que u cuando llueve s´lo gana el 35%. La probabilidad de que llueva en un partido es del 15%. o ¿Cu´l es la cantidad de informaci´n que nos aporta la variable aleatoria lluvia sobre la a o variable ganar un partido? Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
44
3. Teor´ de la Informaci´n ıa o 6. Suponga un conjunto de 20 mensajes equiprobables. ¿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. o
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 4
Fundamentos de Aritm´tica e Modular
4.1 Aritm´tica Modular. Propiedades e
Dados tres n´meros a, b, n ∈ N, decimos que a es congruente con b m´dulo n, y se escribe: u o a ≡ b(mod n) si se cumple: a = b + kn k∈Z
El n´mero natural n inducir´ n clases de equivalencia (n´meros congruentes con 0, n´meros u a u u congruentes con 1, . . . , n´meros congruentes con n−1). Podemos definir ahora las operaciones u suma y producto en ese conjunto de clases de equivalencia: • a + b ≡ c(modn) ⇐⇒ a + b = c + kn • ab ≡ c(modn) ⇐⇒ ab = c + kn k∈Z k∈Z
La operaci´n suma en este conjunto cumple las propiedades asociativa y conmutativa o y posee elementos neutro y sim´trico, por lo que el conjunto tendr´ estructura de grupo e a conmutativo. A partir de ahora llamaremos grupo finito inducido por n a dicho conjunto. Con la operaci´n producto se cumplen las propiedades asociativa y conmutativa, y tieo ne elemento neutro, pero no necesariamente sim´trico. La estructura del conjunto con las e operaciones suma y producto es, pues, de anillo conmutativo. M´s adelante veremos bajo a qu´ condiciones existe el elemento sim´trico para el producto. e e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
46
4. Fundamentos de Aritm´tica Modular e
4.1.1
Algoritmo de Euclides
Quiz´ sea el algoritmo m´s antiguo que se conoce, y a la vez es uno de los m´s utiles. a a a ´ Permite calcular el m´ximo com´n divisor de dos n´meros. a u u Sean a y b dos n´meros enteros de los que queremos calcular su m´ximo com´n divisor m. u a u El Algoritmo de Euclides explota la siguiente propiedad:
m|a ∧ m|b =⇒ m|(a − kb) con k ∈ Z =⇒ m|(a mod b) a|b quiere decir que a divide a b, o en otras palabras, que b es m´ltiplo de a. u Si llamamos c a (a mod b), podemos aplicar de nuevo la propiedad y tenemos:
m|(b mod c)
Sabemos, pues, que m tiene que dividir a todos los restos que vayamos obteniendo. Es evidente que el ultimo resto ser´ cero, puesto que los restos siempre son inferiores al divisor. ´ a El pen´ltimo valor obtenido es el mayor n´mero que divide tanto a a como a b. El algoritmo u u queda entonces como sigue:
int euclides(int a, int b) { int i; g[0]=a; g[1]=b; i=1; while (g[i]!=0) { g[i+1]=g[i-1]%g[i]; i++; } return(g[i-1]); }
El invariante del algoritmo es el siguiente: gi+1 = gi−1 (mod gi ) Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
4.2. C´lculo de Inversas en Aritm´tica Modular a e
47
4.2
4.2.1
C´lculo de Inversas en Aritm´tica Modular a e
Existencia de la Inversa
Hemos comentado en la secci´n 4.1 que los elementos de un grupo finito no tienen por o qu´ tener inversa (elemento sim´trico para el producto). 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. u Lema: Dados a,n ∈ N mcd(a, n) = 1 =⇒ ai = aj(mod n) ∀i=j 0 < i, j < n (4.1)
Demostraci´n: Supongamos que mcd(a, n) = 1, y que existen i = j tales que ai ≡ aj( mod o n). Se cumple, pues: (ai − aj)|n =⇒ a(i − j)|n puesto que a y n son primos entre s´ a no puede dividir a n, luego ı, (i − j)|n =⇒ i ≡ j(mod n) con lo que hemos alcanzado una contradicci´n. o Ahora podemos hacer la siguiente reflexi´n: Si ai = aj para cualesquiera i = j, 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), por lo que forzosamente ha de existir un valor tal que al multiplicarlo por a nos d´ 1. Eso nos conduce al siguiente teorema: e Teorema: Si mcd(a, n) = 1, a tiene inversa m´dulo n. o Corolario: Si n es primo, el grupo finito que genera tiene estructura de cuerpo (todos sus elementos tienen inversa para el producto excepto el cero).
4.2.2
Funci´n de Euler o
Llamaremos conjunto reducido de residuos m´dulo n al conjunto de n´meros primos relao u tivos con n. En otras palabras, todos los n´meros que tienen inversa m´dulo n. Por ejemplo, u o si n fuera 12, su conjunto reducido de residuos ser´ ıa: {1, 5, 7, 11} El cardinal del conjunto reducido de residuos m´dulo n es igual a: o
n
Φ(n) =
i=1
pei −1 (pi − 1) i
(4.2)
siendo pi los factores primos de n y ei su multiplicidad. Por ejemplo, si n fuera el producto de dos n´meros primos p y q, Φ(n) = (p − 1)(q − 1). u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
48 Φ(n) se conoce como la funci´n de Euler sobre n. o Teorema: Si mcd(a, n) = 1:
4. Fundamentos de Aritm´tica Modular e
aΦ(n) ≡ 1(mod n)
(4.3)
Demostraci´n: Puesto que a y n son primos entre s´ a multiplicado por cualquier elemento o ı, del conjunto reducido de residuos m´dulo n {r1 , . . . , rΦ(n) } ha de ser tambi´n primo con n, por o e lo tanto el conjunto {ar1 , . . . , arΦ(n) } no es m´s que una permutaci´n del conjunto anterior, a o lo cual nos lleva a:
Φ(n) Φ(n) Φ(n)
ri =
i=1 i=1
ari = a
Φ(n) i=1
ri =⇒ aΦ(n) ≡ 1(mod n)
Teorema de Fermat: Si p es primo, entonces ap−1 ≡ 1(mod n) (4.4)
Podemos emplear, pues, la funci´n de Euler para calcular inversas m´dulo n, puesto que: o o aΦ(n) = aaΦ(n)−1 ≡ 1(mod n) =⇒ a−1 ≡ aΦ(n)−1 (mod n)
4.2.3
Algoritmo Extendido de Euclides
El Algoritmo Extendido de Euclides simplemente tiene en cuenta los cocientes en cada paso adem´s de los restos. El invariante que mantiene es el siguiente, suponiendo que se le a pasen como par´metros n y a: a gi = nui + avi El ultimo valor de gi ser´ el m´ximo com´n divisor, que ser´ 1 si a y n son primos relativos, ´ a a u a por lo que tendremos: 1 = nui + avi (vi mod n) ser´ entonces la inversa de a m´dulo n. a o Nuestra segunda alternativa para calcular inversas, cuando desconozcamos Φ(n), ser´ pues a el Algoritmo Extendido de Euclides: int euclides_ext(int n, int a) { int c,i; g[0]=n; g[1]=a; u[0]=1; u[1]=0; v[0]=0; v[1]=1; Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
4.3. Exponenciaci´n. Logaritmos Discretos o i=1; while (g[i]!=0) { c=g[i-1]/g[i]; g[i+1]=g[i-1]%g[i]; u[i+1]=u[i-1]-c*u[i]; v[i+1]=v[i-1]-c*v[i]; i++; } return(v[i-1]%n); }
49
4.3
Exponenciaci´n. Logaritmos Discretos o
Muchos de los algoritmos de llave p´blica emplean exponenciaciones dentro de grupos u finitos para codificar los mensajes. Tanto las bases como los exponentes en esos casos son n´meros astron´micos, de incluso miles de bits de longitud. Efectuar las exponenciaciones u o mediante multiplicaciones reiterativas de la base ser´ inviable. En esta secci´n veremos meıa o canismos eficientes para llevar a cabo estas operaciones. Tambi´n comentaremos brevemente e el problema inverso, el c´lculo de los logaritmos discretos, puesto que en ´l basan muchos a e algoritmos su resistencia.
4.3.1
Algoritmo de Exponenciaci´n R´pida o a
Supongamos que tenemos dos n´meros naturales a y b, y queremos calcular ab . El mecau nismo m´s sencillo ser´ multiplicar a por s´ mismo b veces. Sin embargo, para valores muy a ıa ı grandes de b este algoritmo no nos sirve. Tomemos la representaci´n binaria de b: o b = 20 b0 + 21 b1 + 22 b2 + . . . + 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 +...+2n b n 0 1 2
=
i=0
a2 bi
i
recordemos que los bi s´lo pueden valer 0 ´ 1, 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. N´tese, adem´s, que a2 = (a2 )2 , por lo que, partiendo de a, podemos calcular el siguiente o a valor de esta serie elevando al cuadrado el anterior. El Algoritmo de Exponenciaci´n R´pida o a queda como sigue: Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
i i−1
50
4. Fundamentos de Aritm´tica Modular e
int exp_rapida(int a, int b) { int z,x,resul; z=b; x=a; resul=1; while (z>0) { if (z%1==1) resul=resul*x; x=x*x; z=z/2; } return(resul); }
La variable z se inicializa con el valor de b y se va dividiendo por 2 en cada paso para tener siempre el i-´simo bit de b en el menos significativo de z. En la variable x se almacenan e 2i . los valores de a
4.3.2
El Problema de los Logaritmos Discretos
El problema inverso la exponenciaci´n es el c´lculo de logaritmos discretos. Dados dos o a n´meros a, b y el m´dulo n, 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) (4.5)
En la actualidad no existen algoritmos eficientes que sean capaces de calcular en tiempo razonable logaritmos de esta naturaleza, y muchos esquemas criptogr´ficos basan su resistencia a en esta circunstancia. El problema de los logaritmos discretos est´ ´ a ıntimamente relacionado con el de la factorizaci´n, de hecho est´ demostrado que si se puede calcular un logaritmo, o a entonces se puede factorizar f´cilmente (el rec´ a ıproco no se ha podido demostrar).
4.4
Factorizaci´n. Tests de Primalidad o
Para explotar la dificultad de c´lculo de logaritmos discretos, muchos algoritmos cripa togr´ficos de llave p´blica se basan en operaciones de exponenciaci´n en grupos finitos. 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). Estos algoritmos funcionan si se conoce n y sus factores se mantienen en secreto. Habitualmente para obtener n se calculan primero dos n´meros primos u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
4.4. Factorizaci´n. Tests de Primalidad o
51
muy grandes, que posteriormente se multiplican. Necesitaremos pues mecanismos para poder calcular esos n´meros primos grandes. u La factorizaci´n es el problema inverso a la multiplicaci´n: dado n, se trata de buscar un o o conjunto de n´meros tales que su producto valga n. Normalmente, y para que la soluci´n sea u o unica, se impone la condici´n de que los factores de n que obtengamos sean todos primos. Al ´ o igual que para el problema de los logaritmos discretos, no existen algoritmos eficientes para efectuar este tipo de c´lculos, siempre y cuando los factores (como veremos m´s adelante) a a hayan sido escogidos correctamente. Esto nos permite confiar en que los factores de n ser´n a imposibles de calcular aunque se conozca el propio n. En cuanto al c´lculo de primos grandes, bastar´ con aplicar un algoritmo de factorizaci´n a ıa o para saber si un n´mero es primo o no. Este mecanismo es inviable, puesto que acabamos de u decir que no hay algoritmos eficientes de factorizaci´n. Por suerte, 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. Cabr´ preguntarse, dado que para los algoritmos asim´tricos de cifrado necesitaremos ıa e generar muchos n´meros primos, si realmente hay suficientes. De hecho se puede pensar que, u a fuerza de generar n´meros, llegar´ un momento en el que repitamos un primo generado con u a anterioridad. Podemos estar tranquilos, porque si a cada ´tomo del universo le asign´ramos a a mil millones de n´meros primos cada microsegundo desde su origen hasta hoy, har´ falta un u ıan total de 10109 n´meros primos diferentes, mientras que el total estimado de n´meros primos u u 151 . de 512 bits o menos es aproximadamente de 10 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. Por desgracia, 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, el artilugio pesar´ m´s de 10 ıa a y ocupar´ casi 10130 metros c´bicos, es decir, ser´ miles de billones de veces m´s grande y ıa u ıa a pesado que la V´ L´ctea. ıa a En los pr´ximos apartados vamos a ver algunos de los m´todos m´s comunes para generar o e a n´meros primos. u
4.4.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. Escoger un n´mero aleatorio a < p. u 2. Calcular b = a(p−1)/2 (mod p). 3. Si b = 1(mod p) y b = −1(mod p), p no es primo. 4. Si b ≡ 1(mod p) ´ b ≡ −1(mod p), la probabilidad de que p sea primo es igual o o superior al 50%. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
52
4. Fundamentos de Aritm´tica Modular e
Repitiendo el algoritmo n veces, la probabilidad de que p supere el test y sea compuesto (es decir, no primo) ser´ de 1 contra 2n . a
4.4.2
M´todo de Rabin-Miller e
Es el algoritmo m´s empleado, debido a su facilidad de implementaci´n. Sea p el n´mero a o u que queremos saber si es primo. Se calcula b, siendo b el n´mero de veces que 2 divide a (p−1), u es decir, 2b es la mayor potencia de 2 que divide a (p − 1). Calculamos entonces m, tal que p = 1 + 2b ∗ m. 1. Escoger un n´mero aleatorio a < p. u 2. Sea j = 0 y z = am (mod p). 3. Si z = 1, o z = p − 1, entonces p pasa el test y puede ser primo. 4. Si j > 0 y z = 1, p no es primo. 5. Sea j = j + 1. Si j = b y z = p − 1, p no es primo. 6. Si j < b y z = p − 1, z = z 2 (mod p). Volver al paso (4). 7. Si j < b y z = p − 1, entonces p pasa el test y puede ser primo. 8. p no es primo. La probabilidad de que un n´mero compuesto pase este algoritmo para un n´mero a es del u u 25%. Esto quiere decir que necesitaremos menos pasos para llegar al mismo nivel de confianza que el obtenido con el algoritmo de Lehmann.
4.4.3
Consideraciones Pr´cticas a
A efectos pr´cticos el algoritmo que se suele emplear para saber si un n´mero es o no a u primo es el siguiente: 1. Generar un n´mero aleatorio p de n bits. u 2. Poner a uno el bit m´s significativo (garantizamos que el n´mero es de n bits) y el menos a u significativo (debe ser impar para poder ser primo). 3. Intentar dividir p por una tabla de primos precalculados (usualmente se usan los primos menores que 2000). Esto elimina gran cantidad de n´meros no primos de una forma muy u r´pida. Baste decir a t´ a ıtulo informativo que m´s del 99.8% de los n´meros impares no a u primos es divisible por alg´n n´mero primo menor que 2000. u u 4. Ejecutar el test de Rabin-Miller como m´ ınimo cinco veces. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
4.5. Ejercicios Propuestos
53
4.4.4
Primos fuertes
Aunque p y q sean primos grandes, existen algunos casos en los que es relativamente f´cil a factorizar el n´mero n = pq. Se proponen entonces una serie de condiciones para p y q que u dificultan la factorizaci´n de n. Se dice que p y q son n´meros primos fuertes si cumplen: o u • El m´ximo com´n divisor de p − 1 y q − 1 debe ser peque˜o. a u n • p − 1 y q − 1 deben tener alg´n factor primo grande p y q . u • Tanto p − 1 como q − 1 deben tener factores primos grandes. • Tanto p + 1 como q + 1 deben tener factores primos grandes. Las dos primeras condiciones se cumplen si tanto (p − 1)/2 como (q − 1)/2 son n´meros u primos.
4.5
Ejercicios Propuestos
1. Comprobar las propiedades de la suma en grupos finitos. 2. Comprobar las propiedades del producto en grupos finitos.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
54
4. Fundamentos de Aritm´tica Modular e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 5
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, 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. e o
5.1
Representaci´n de enteros largos o
Llamaremos n´mero largo a aquel que posee gran cantidad de d´ u ıgitos significativos, normalmente m´s de los que los tipos de dato convencionales de los lenguajes de programaci´n a o cl´sicos pueden soportar. En este apartado vamos a indicar c´mo representarlos y operar con a o ellos empleando tipos de dato de menor precisi´n. o Todos conocemos la representaci´n tradicional en base 10 de los n´meros, en la que cada o u cifra contiene unicamente valores de 0 a 9. Esta representaci´n no es m´s que un caso particular ´ o a (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. Sabemos que dicha representaci´n es unica, y que significa que n en base B se escribe: o ´ (−)an an−1 . . . a0 .a−1 . . . En cualquier caso, puesto que nuestro objetivo es representar unicamente n´meros enteros ´ u positivos, prescindiremos del signo y de los t´rminos con sub´ e ındice negativo. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
56
5. Aritm´tica Entera de M´ltiple Precisi´n e u o
Cualquier n´mero vendr´ representado por una serie unica de coeficientes ai (cifras), de las u a ´ que importa tanto su valor como su posici´n dentro del n´mero. Esta estructura corresponde o u claramente a la de un vector (array). 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). Para almacenar los resultados parciales de las operaciones aritm´tiu e cas emplearemos un tipo de dato de doble precisi´n (unsigned long int, correspondiente a o B = 232 ´ B = 264 ) de forma que no se nos desborde al multiplicar dos cifras. Normalmente o se escoge una longitud que pueda manejar directamente la ALU (Unidad Aritm´tico-L´gica) e o de la computadora, para que las operaciones elementales entre cifras sean r´pidas. a Por todo esto, para nosotros un n´mero entero largo ser´ un vector (din´mico o no) de u a a unsigned int. En cualquier caso, y a partir de ahora, nuestro objetivo ser´ estudiar algoritmos a eficientes para efectuar operaciones aritm´ticas sobre este tipo de n´meros, independientemene u te de la base en la que se encuentren representados.
5.2
Operaciones aritm´ticas sobre enteros largos e
Vamos a describir en este apartado c´mo realizar operaciones aritm´ticas (suma, resta, o e multiplicaci´n y divisi´n) de enteros largos. o o
5.2.1
Suma
La suma de a = (a0 , a1 . . . an−1 ) y b = (b0 , 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 . . . n (ai + bi + ci ) mod B para i = 0 . . . n − 1 ci para i = n
ci es el acarreo de la suma de los d´ ıgitos inmediatamente anteriores. Tenemos en cuenta el coeficiente n de la suma porque puede haber desbordamiento, en cuyo caso la suma tendr´ ıa n + 1 d´ ıgitos y su cifra m´s significativa ser´ precisamente cn . Este no es otro que el algoritmo a ıa cl´sico que todos hemos empleado en la escuela cuando hemos aprendido a sumar. a El algoritmo para la suma quedar´ pues, como sigue: ıa, suma (unsigned *a, unsigned *b, unsigned *s) { unsigned long sum; Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
5.2. Operaciones aritm´ticas sobre enteros largos e unsigned acarreo; n=max(num. de digitos de a, num. de digitos de b) acarreo=0; for (i=0;i b: (a − b)i = (ai − bi − ri ) mod B siendo 0 ri = 1 − (ai−1 − bi−1 − ri−1 ) div B para i = 0 para i = 1 . . . n para i = 0 . . . n − 1
ri representa el acarreo de la resta (borrow ), que puede valer 0 o 1 seg´n la resta parcial salga u positiva o negativa. N´tese que, como a > b, el ultimo acarreo siempre ha de valer 0. o ´ resta (unsigned *a, unsigned *b, unsigned *d) { unsigned long dif; unsigned acarreo; n=max(num. de digitos de a, num. de digitos de b) acarreo=0; for (i=0;i Devuelve el valor del digito de mayor peso de a. Bits_Significativos(x) => Siendo x un digito, devuelve el numero de bits de los digitos quitando los ceros de la izquierda. */ despl=Num_bits_digito-Bits_significativos(Digito_Mas_Significativo(d)); factor=2^despl; /* Desplazamos d hasta que su digito mas significativo tenga su bit de mayor peso a 1 (di>=B/2) */
dd=d*factor; Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
5.2. Operaciones aritm´ticas sobre enteros largos e cc=c*factor; if (Digitos(cc)==Digitos(c)) Poner_Un_Cero_A_La_Izquierda(cc);
61
/* Garantizar que cc tiene */ /* exactamente un digito */ /* mas que c */
t=Digito_Mas_Significativo(dd); /* Ya hemos normalizado. El cociente que obtengamos seguira siendo valido, pero el resto habra luego que dividirlo por factor */ Poner_a_cero(a); for (i=Digitos(c)-Digitos(dd); i>=0; i--) { /* Subestimar digito del cociente (ai) */ if (t==B-1) /* No podemos dividir por t+1 */ /* La estimacion es el primer digito significativo de cc */
ai=cc[i+Digitos(dd)];
else ai=(cc[i+Digitos(dd)]*B+cc[i+Digitos(dd)-1])/(t+1); /* La estimacion es el cociente entre los dos primeros digitos de cc y t+1 */ cc=cc-ai*dd*B^i; /* Restar a cc */
while (cc[i+Digitos(dd)] || mayor(cc,dd*B^i))
/* Si no se ha hecho cero el digito mas sign. de cc... */ /* o si cc es mayor o igual que dd*B^i, */
{ ai++; cc=cc-dd*B^i; } a[i]=ai;
/* Hemos de aumentar la estimacion */
} b=cc/factor; /* Lo que nos queda en cc es el resto */ /* dividimos por factor para deshacer */ /* la normalizacion */ }
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
62
5. Aritm´tica Entera de M´ltiple Precisi´n e u o
Aunque a primera vista pueda parecer un algoritmo muy complejo, vamos a ver que no es tan complicado siguiendo su funcionamiento para un ejemplo concreto, con B = 16, c = 3F BA2, y d = 47: ¯ 1. Normalizaci´n: multiplicamos por 2 y nos queda c = 7F 744, d = 8E o ¯ ¯ 2. a2 = 7F div 9 = E; c = c − a2 dB 2 = 7F 744 − 7C400 = 3344 ¯ ¯ Puesto que c < dB 2 = 8E00, no hay que incrementar a2 . ¯ ¯ ¯ 3. a1 = 33 div 9 = 5; c = c − a1 dB = 3344 − 2C60 = 6E4 ¯ ¯ Puesto que c < dB = 8E0, no hay que incrementar a1 . ¯ ¯ ¯ 4. a0 = 6E div 9 = C; c = c − a0 d = 6E4 − 6A8 = 3C ¯ ¯ Puesto que c < d = 8E, tampoco hay que incrementar a0 ¯ ¯ 5. a = E5C; b =
c ¯ 2
= 1E
5.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. Empleando los algoritmos del apartado 5.2 son inmediatas las operaciones de suma, resta y multiplicaci´n m´dulo n. La divisi´n habremos de tratarla o o o de manera diferente. • Para sumar dos n´meros basta con efectuar su suma entera y dividir despu´s por el u e m´dulo, siendo el resto obtenido el resultado de la suma modular. o • Para restar basta con sumar el m´dulo al minuendo, restarle el sustraendo, y tomar el o resto como en la suma. • El producto se lleva a cabo multiplicando los factores y tomando el resto de dividir el resultado por el m´dulo. o • La divisi´n habremos de implementarla multiplicando el dividendo por la inversa del o divisor. Para calcular la inversa de un n´mero m´dulo n basta con emplear el Algoritu o mo Extendido de Euclides, sustituyendo las operaciones elementales por llamadas a las operaciones con enteros largos descritas en la secci´n 5.2. o
5.4
Ejercicios Propuestos
1. Efectue el trazado del algoritmo de la divisi´n con B = 8 para calcular el siguiente o cociente: c = 35240, d = 234. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
5.4. Ejercicios Propuestos
63
2. 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, a partir del cual la t´cnica e no recursiva es m´s eficiente. Implemente el algoritmo de la multplicaci´n mediante esta a o t´cnica y calcule su umbral correspondiente. 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. a 4. Proponga una especificaci´n para la estructura del ejercicio anterior y discuta su eficieno cia.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
64
5. Aritm´tica Entera de M´ltiple Precisi´n e u o
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 6
Criptograf´ y N´ meros Aleatorios ıa u
Los algoritmos de llave p´blica, debido a su mayor orden de complejidad, suelen ser emu pleados en conjunci´n con algoritmos de llave privada de la siguiente forma (ver cap´ o ıtulo 9): el mensaje primero se codifica empleando un algoritmo sim´trico y la llamada clave de sesi´n, e o que ser´ diferente cada vez. Es la clave de sesi´n la que se codifica empleando criptograf´ a o ıa asim´trica. 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, esto es, que sean aleatorias. De aqu´ surge el ı inter´s por los n´meros aleatorios en Criptograf´ e u ıa. Seguro que el lector conoce generadores pseudoaleatorios y diferentes tests de aleatoriedad —como el denominado test ψ 2 , que puede ser consultado en casi cualquier libro de Estad´ ıstica—. Los generadores tradicionales no nos permiten calcular secuencias realmente aleatorias, puesto que conociendo un 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—. Si bien las series que producen estos generadores superan los test estad´ ısticos de aleatoriedad, son totalmente previsibles, y esa condici´n es inadmisible para o aplicaciones criptogr´ficas. Un famoso ejemplo de este problema ocurri´ en una de las primeras a o versiones de Netscape, que resultaba insegura debido al uso de un generador pseudoaleatorio demasiado previsible. En este cap´ ıtulo vamos a caracterizar diferentes tipos de secuencias aleatorias, as´ como ı su 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. ´ a
6.1
6.1.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 estas m´quinas son —al menos en teor´ a ıa— completamente Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
66
6. Criptograf´ y N´meros Aleatorios ıa u
deterministas. Todos los generadores pseudoaleatorios producen secuencias finitas y peri´dicas o de n´meros empleando operaciones aritm´ticas y/o l´gicas. 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. En este sentido podr´ ıamos hablar de: • Secuencias estad´ ısticamente aleatorias: Secuencias que superan los tests estad´ ısticos de aleatoriedad. Un generador congruencial lineal1 cumple esta propiedad, pero en Criptograf´ ser´ del ıa a todo in´til, debido a que cada valor de la secuencia se emplea como semilla para calcular el u siguiente, lo cual nos permite conocer toda la serie a partir de un unico valor. Supongamos ´ que tenemos un sistema que se basa en emplear claves aleatorias para cada sesi´n y usamos o un generador de este tipo. Bastar´ con que una de las claves quedara comprometida para ıa que todas las comunicaciones —pasadas y futuras— pudieran ser descifradas sin problemas. Incluso se ha demostrado que conociendo unicamente un bit de cada valor de la secuencia, ´ ´sta puede ser recuperada completamente con una cantidad relativamente peque˜a de valores. e n
6.1.2
Secuencias criptogr´ficamente aleatorias a
El problema de las secuencias estad´ ısticamente aleatorias, y lo que las hace poco utiles en ´ Criptograf´ es que son completamente predecibles. Definiremos, por tanto: ıa, • Secuencias criptogr´ficamente aleatorias: Para que una secuencia pseudoaleatoria sea a criptogr´ficamente aleatoria, ha de cumplir la propiedad de ser impredecible. 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. o Existen generadores pseudoaleatorios criptogr´ficamente resistentes que cumplen esta proa piedad. Sin embargo no son suficientes para nuestros prop´sitos, debido a que se necesita una o semilla para inicializar el generador. Si un atacante lograra averiguar la semilla que estamos empleando en un momento dado, podr´ de nuevo comprometer nuestro sistema. Necesitamos ıa para ella valores realmente impredecibles, de forma que nuestro adversario no pueda averiguarlos ni tratar de simular el proceso de generaci´n que nosotros hemos llevado a cabo. o Necesitamos, pues, valores aut´nticamente aleatorios. e
6.1.3
Secuencias totalmente aleatorias
Como ya se ha dicho antes, no existe la aleatoriedad cuando se habla de computadoras. En realidad se puede decir que no existen en el Universo sucesos cien por cien aleatorios. En
Un generador congruencial lineal opera seg´n la expresi´n an+1 = (an b + c) mod m, donde a0 es la semilla u o pseudoaleatoria y b, c y m son los par´metros del generador. a
1
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
6.2. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a
67
cualquier caso, y a efectos pr´cticos, 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. Llegados a este punto parece claro que nuestro objetivo no va a ser generar secuencias aleatorias puras, sino m´s bien secuencias impredecibles e irreproducibles. Ser´ suficiente, pues, a a con emplear un generador criptogr´ficamente aleatorio alimentado por una semilla totalmente a aleatoria.
6.2
Generaci´n de Secuencias Aleatorias Criptogr´ficamente o a V´lidas a
Para poder obtener secuencias a la vez impredecibles e irreproducibles, haremos uso de generadores de secuencias criptogr´ficamente aleatorias, en conjunci´n con alg´n mecanismo a o u de recolecci´n de bits aleatorios, que nos va a permitir inicializar la semilla del generador. Un o esquema de este tipo ser´ seguro siempre que se salvaguarde adecuadamente la semilla empleaa da. Comentaremos en primer lugar algunos mecanismos para obtener los bits de la semilla, y despu´s nos centraremos en los generadores criptogr´ficamente aleatorios propiamente dichos. e a
6.2.1
Obtenci´n de Bits Aleatorios o
Como hemos dicho antes, las operaciones aritm´ticas y l´gicas que realiza una computadora e o son completamente deterministas. Sin embargo, los ordenadores, como veremos a continuaci´n, o poseen elementos menos deterministas que pueden ser utiles para nuestros prop´sitos. ´ o Para obtener n bits aleatorios bastar´ con que una persona lanzara una moneda al aire ıa n veces y nos fuera diciendo el resultado. En la actualidad apenas hay computadores que incorporen hardware espec´ ıfico para esta tarea, aunque existe y ser´ bastante barato y sencillo ıa incorporarlo a la arquitectura de cualquier ordenador. Existen valores obtenidos del hardware de la computadora que suelen proporcionar algunos bits de aleatoriedad. Parece razonable que leer en un momento dado el valor de un reloj interno de alta precisi´n proporcione un resultado m´s o menos impredecible, por lo que o a podr´ ıamos emplearlo para recolectar valores aleatorios. Diferentes pruebas han demostrado sin embargo que mecanismos de este tipo, que pueden ser utiles en ciertas arquitecturas y ´ sistemas operativos, dejan de servir en otras versiones del mismo sistema o en arquitecturas muy similares, por lo que hemos de tener mucho cuidado con esto. Algunas veces se ha propuesto el uso de los n´meros de serie de los componentes f´ u ısicos (hardware) de un sistema, pero recordemos que estos n´meros tienen una estructura muy u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
68
6. Criptograf´ y N´meros Aleatorios ıa u
r´ ıgida, y a veces conociendo simplemente el fabricante y la fecha aproximada de fabricaci´n o podemos adivinar casi todos sus d´ ıgitos, por lo que van a ser demasiado predecibles. Tampoco son utiles las fuentes p´blicas de informaci´n, como por ejemplo los bits de un ´ u o CD de audio, puesto que nuestros atacantes pueden disponer de ellas, con lo que el unico resto ´ de aleatoriedad que nos va a quedar es la posici´n que escojamos dentro del CD para extraer o los bits. 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, podemos emplear algunos dispositivos hardware relativamente comunes en los ordenadores actuales: • Tarjetas digitalizadoras de sonido o v´ ıdeo. Un dispositivo digitalizador de audio (o v´ ıdeo) sin ninguna entrada conectada, siempre que tenga ganancia suficiente, capta esencialmente ruido t´rmico, con una distribuci´n aleatoria, y por lo tanto puede ser apto para e o nuestros prop´sitos. o • Unidades de Disco. Las unidades de disco presentan peque˜as fluctuaciones en su velon cidad de giro debido a turbulencias en el aire. Si se dispone de un m´todo para medir el e tiempo de acceso de la unidad con suficiente precisi´n, se pueden obtener bits aleatorios o de la calidad necesaria. 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. Por ejemplo, podr´ o ıamos leer el reloj del sistema, alg´n identificador del hardware, la fecha y la hora locales, el estado de los registros u de interrupciones del sistema, etc. Esto garantizar´ que en total se ha recogido una cantidad a suficiente de bits realmente aleatorios. La mezcla de todas esas fuentes puede proporcionarnos suficiente aleatoriedad para nuestros prop´sitos. 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, hemos de buscar un mecanismo para llevar a cabo esa combinaci´n. Emplearemos o a tal efecto las denominadas funciones de mezcla fuertes. 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. o Por t´rmino medio, modificar un bit en la entrada deber´ alterar aproximadamente la mitad e ıa de los bits de salida. Podemos emplear diferentes algoritmos criptogr´ficos para construir este a tipo de funciones: • Algoritmos Sim´tricos (ver cap´ e ıtulo 8). Un algoritmo sim´trico de cifrado puede ser util e ´ como funci´n de mezcla de la siguiente forma: supongamos que usa una clave de n bits, y o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
6.2. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a
69
que tanto su entrada como su salida son bloques de m bits. Si disponemos de n + m bits inicialmente, podemos codificar m bits usando como clave los n restantes, y as´ obtener ı como salida un bloque de m bits con mejor aleatoriedad. As´ por ejemplo, si usamos ı, DES, podemos reducir a 64 bits un bloque de 120. • Funciones Resumen (ver secci´n 10.1) . 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. u
6.2.2
Eliminaci´n del Sesgo o
En la mayor´ de los casos, los bits obtenidos de las fuentes aleatorias est´n sesgados, ıa a es decir, que hay m´s unos que ceros o viceversa. Esta situaci´n no es deseable, puesto que a o necesitamos una fuente aleatoria no sesgada, que presente igual probabilidad tanto para el 0 como para el 1. Como veremos a continuaci´n, esta circunstancia no constituye un problema o serio, ya que existen diversas t´cnicas para solucionarla. e Bits de Paridad Si tenemos una secuencia de valores cero y uno, con un sesgo arbitrario, podemos emplear el bit de paridad2 de la secuencia para obtener una distribuci´n con una desviaci´n tan peque˜a o o n como queramos. Para comprobarlo, supongamos que d es el sesgo, luego las probabilidades que tenemos para los bits de la secuencia son: p = 0.5 + d q = 0.5 − d
donde p es la probabilidad para el 1 y q es la probabilidad para el 0. Se puede comprobar que las probabilidades para el bit de paridad de los n primeros bits valen r= 1 ((p + q)n + (p − q)n ) 2 s= 1 ((p + q)n − (p − q)n ) 2
donde r ser´ la probabilidad de que el bit de paridad sea 0 ´ 1 dependiendo de si n es par o a o impar. Puesto que p + q = 1 y p − q = 2d, tenemos 1 r = (1 + (2d)n ) 2 Siempre que n > 1 s = (1 − (2d)n ) 2
log2 (2 ) el sesgo de la paridad ser´ menor que , por lo que bastar´ con a a log2 (2d) coger esos n bits. Por ejemplo, si una secuencia de bits tiene p = 0.01 y q = 0.99, basta con coger la paridad de cada 308 bits para obtener un bit con sesgo inferior a 0.001.
El bit de paridad de una secuencia vale 1 si el n´mero de unos de dicha secuencia es par (paridad impar) u o impar (paridad par).
2
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
70 M´todo de Von Neumann e
6. 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. Eliminamos los pares 00 y 11, e interpretamos 01 como 0 y 10 como 1. Por ejemplo, la serie 00.10.10.01.01.10.10.10.11 dar´ ıa lugar a 1.1.0.0.1.1.1. Es f´cil comprobar que, siendo d el sesgo de la distribuci´n inicial a o P (01) = P (10) = (0.5 + d)(0.5 − d) por lo que la cadena de bits resultantes presenta exactamente la misma probabilidad tanto para el 0 como para el 1. El problema de este 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. o o Uso de Funciones Resumen Si calculamos la entrop´ de una secuencia sesgada (ecuaci´n 3.2, p´gina 36), obtendremos ıa o a el n´mero n de bits reales de informaci´n que transporta. Entonces podremos aplicar una u o funci´n resumen y quedarnos exactamente con los n bits menos significativos del resultado o obtenido. Veamos un ejemplo: sea una secuencia de 300 bits con una probabilidad P (1) = 0.99. La entrop´ de cada bit ser´ ıa a H = −0.99 log2 (0.99) − 0.01 log2 (0.01) = 0.08079 bits Luego los 300 bits originales aportar´n 300 × 0.08079 24 bits de informaci´n real. 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. a
6.2.3
Generadores Aleatorios Criptogr´ficamente Seguros a
Suponiendo que ya tenemos una cantidad suficiente de bits aut´nticamente aleatorios (ime predecibles e irreproducibles), vamos a ver un par de generadores pseudoaleatorios que permiten obtener secuencias lo suficientemente seguras como para ser empleadas en aplicaciones criptogr´ficas. a Generador X9.17 Propuesto por el Instituto Nacional de Est´ndares Norteamericano, permite, a partir de a una semilla inicial s0 de 64 bits, obtener secuencias de valores tambi´n de 64 bits. El algoritmo e para obtener cada uno de los valores gn de la secuencia es el siguiente: Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
6.2. Generaci´n de Secuencias Aleatorias Criptogr´ficamente V´lidas o a a
71
gn = DES(k, DES(k, t) ⊕ sn ) sn+1 = DES(k, DES(k, t) ⊕ gn ) donde k es una clave aleatoria reservada para la generaci´n de cada secuencia, y t es el tiempo o en el que cada valor es generado —cuanta m´s resoluci´n tenga (hasta 64 bits), mejor—. a o DES(K, M ) representa la codificaci´n de M mediante el algoritmo DES, empleando la clave o K, y ⊕ representa la funci´n or-exclusivo. 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
6.2.4
Generador Blum Blum Shub
Es quiz´ el algoritmo que m´s pruebas de resistencia ha superado, con la ventaja adicional a a de su gran simplicidad —aunque es computacionalmente mucho m´s costoso que el algoritmo a X9.17—. Consiste en escoger dos n´meros primos grandes, p y q, que cumplan la siguiente u propiedad: p ≡ 3(mod 4) q ≡ 3(mod 4)
Sea entonces n = pq. Escogemos un n´mero x aleatorio primo relativo con n, que ser´ nuestra u a semilla inicial. Al contrario que x, que debe ser mantenido en secreto, n puede ser p´blico. 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 . De hecho, 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.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
72
6. Criptograf´ y N´meros Aleatorios ıa u
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Parte III
Criptograf´ de Llave Privada ıa
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 7
Criptograf´ Cl´sica ıa a
El ser humano siempre ha tenido secretos de muy diversa ´ ındole, y ha buscado mecanismos para mantenerlos fuera del alcance de miradas indiscretas. Julio C´sar empleaba un sencillo e algoritmo para evitar que sus comunicaciones militares fueran incerceptadas. Leonardo Da Vinci escrib´ las anotaciones sobre sus trabajos de derecha a izquierda y con la mano zurda. ıa Otros personajes, como Sir Francis Bacon o Edgar Allan Poe eran conocidos por su afici´n a o los c´digos criptogr´ficos, que en muchas ocasiones constitu´ un apasionante divertimento o a ıan y un reto para el ingenio. En este cap´ ıtulo haremos un breve repaso de los mecanismos criptogr´ficos considerados a cl´sicos. Podemos llamar as´ a todos los sistemas de cifrado anteriores a la II Guerra Mundial, a ı o lo que es lo mismo, al nacimiento de las computadoras. Estas t´cnicas tienen en com´n que e u pueden ser empleadas usando simplemente l´piz y papel, y que pueden ser criptoanalizadas a casi de la misma forma. De hecho, con la ayuda de las computadoras, los mensajes cifrados empleando estos c´digos son f´cilmente descifrables, por lo que cayeron r´pidamente en desuso. 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, cuando el Servicio de Inteligencia aliado rompe la m´quina de cifrado del a ej´rcito alem´n, llamada ENIGMA. e a Todos los algoritmos criptogr´ficos cl´sicos son sim´tricos, 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.
7.1
Algoritmos Cl´sicos de Cifrado a
Estudiaremos en esta secci´n algunos criptosistemas que en la actualidad han perdido o su eficacia, debido a que son f´cilmente criptoanalizables empleando cualquier computadora a dom´stica, pero que fueron empleados con ´xito hasta principios del siglo XX. Algunos se e e remontan incluso, como el algoritmo de C´sar, a la Roma Imperial. Sin embargo mantienen e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
76
7. Criptograf´ Cl´sica ıa a
un inter´s te´rico, ya que nos van a permitir explotar algunas de sus propiedades para entender e o mejor los algoritmos modernos.
7.1.1
Cifrados Monoalfab´ticos e
Se engloban dentro de este apartado todos los algoritmos criptogr´ficos que, sin desordenar a los s´ ımbolos dentro del mensaje, establecen una correspondencia unica para todos ellos en todo ´ el texto. Es decir, si al s´ ımbolo A le corresponde el s´ ımbolo D, esta correspondencia se mantiene a lo largo de todo el mensaje.
Algoritmo de C´sar e El algoritmo de C´sar, llamado as´ porque es el que empleaba Julio C´sar para enviar e ı e mensajes secretos, es uno de los algoritmos criptogr´ficos m´s simples. Consiste en sumar 3 a a al n´mero de orden de cada letra. De esta forma a la A le corresponde la D, a la B la E, y u as´ sucesivamente. Si asignamos a cada letra un n´mero (A = 0,B = 1. . . ), y consideramos un ı u alfabeto de 26 letras, la transformaci´n criptogr´fica ser´ o a ıa: C = (M + 3) mod 26 obs´rvese que este algoritmo ni siquiera posee clave, puesto que la transformaci´n siempre es e o la misma. Obviamente, para descifrar basta con restar 3 al n´mero de orden de las letras del u criptograma.
Sustituci´n Af´ o ın Es el caso general del algoritmo de C´sar. Su transformaci´n ser´ e o ıa: E(a,b) (M ) = (aM + b) mod N siendo a y b dos n´meros enteros menores que el cardinal N del alfabeto, y cumpliendo que u mcd(a, N ) = 1. La clave de cifrado k viene entonces dada por el par (a, b). El algoritmo de C´sar ser´ pues una transformaci´n af´ con k = (1, 3). e a o ın
Cifrado Monoalfab´tico General e Es el caso m´s general de cifrado monoalfab´tico. La sustituci´n ahora es arbitraria, siendo a e o la clave k precisamente la tabla de sustituci´n de un s´ o ımbolo por otro. En este caso tenemos N ! posibles claves. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
7.1. Algoritmos Cl´sicos de Cifrado a Criptoan´lisis de los M´todos de Cifrado Monoalfab´ticos a e e
77
El cifrado monoalfab´tico constituye la familia de m´todos m´s simple de criptoanalizar, e e a puesto que las propiedades estad´ ısticas del texto plano se conservan en el criptograma. Supongamos que, por ejemplo, la letra que m´s aparece en Castellano es la A. Parece l´gico que la a o letra m´s frecuente en el texto codificado sea aquella que corresponde con la A. 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 plano, podremos averiguar a f´cilmente la clave. a En el peor de los casos, es decir, cuando tenemos un emparejamiento arbitrario, la Distancia de Unicidad de Shannon que obtenemos es: S= log2 (N !) H(K) = D D (7.1)
donde D es la redundancia del lenguaje empleado en el mensaje original, y N es el n´mero u de s´ ımbolos de dicho lenguaje. Como es l´gico, suponemos que las N ! claves diferentes son o equiprobables en principio. En casos m´s restringidos, como el af´ el criptoan´lisis es a´n m´s simple, puesto que a ın, a u a el emparejamiento de todos los s´ ımbolos debe responder a alguna combinaci´n de coeficientes o (a, b).
7.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 plano. En realidad corresponde a la apliaci´n c´ o e o ıclica de n cifrados monoalfab´ticos. e Cifrado de Vigenere Es un ejemplo t´ ıpico de cifrado polialfab´tico, cuya clave es una secuencia de s´ e ımbolos K = {k0 , k1 , . . . kd−1 } 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 plano y n el cardinal del alfabeto de entrada. Criptoan´lisis 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. Para estimar d, u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
78
7. Criptograf´ Cl´sica ıa a
buscaremos la periodicidad de los patrones comunes que puedan aparecer en el texto cifrado. Obviamente, para el criptoan´lisis, necesitaremos al menos d veces m´s cantidad de texto que a a con los m´todos monoalfab´ticos. e e
7.1.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, existe una familia de algoritmos que trata de ocultar las propiedades estad´ ısticas del texto plano empleando un alfabeto de salida con m´s s´ a ımbolos que el alfabeto de entrada. Supongamos que nuestro alfabeto de entrada posee cuatro letras, {a, b, c, d}. Supongamos adem´s que en nuestros textos la letra a aparece con una probabilidad 0.4, y el resto con a probabilidad 0.2. Podr´ ıamos emplear el siguiente alfabeto de salida {α, β, γ, δ, } efectuando la siguiente asociaci´n: o
E(a) = E(b) = E(c) = E(d) =
α con probabilidad 1/2 β con probabilidad 1/2 γ δ
En el texto cifrado ahora todos los s´ ımbolos aparecen con igual probabilidad, lo que imposibilita un ataque basado en frecuencias. A diferencia de lo que se puede pensar en un principio, este 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, para aplicarlo hace falta conocer la distribuci´n estad´ o ıstica a priori de los s´ ımbolos en el texto plano, informaci´n de o la que, por desgracia, no siempre se dispone.
7.1.4
Cifrados de Transposici´n o
Este tipo de mecanismos de cifrado no sustituye unos s´ ımbolos por otros, sino que cambia su orden dentro del texto. Un mecanismo de transposici´n podr´ consistir en colocar el texto o ıa en una tabla de n columnas, y dar como texto cifrado los s´ ımbolos de una columna —ordenados de arriba a abajo— concatenados con los de otra, etc. La clave k se compondr´ del n´mero ıa u n junto con el orden en el que se deben leer las columnas. Por ejemplo, supongamos que queremos cifrar el texto “El perro de San Roque no tiene rabo”, con n = 5 y la permutaci´n {3, 2, 5, 1, 4} como clave. Colocamos el texto en una tabla o y obtenemos: Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
7.2. M´quinas de Rotores. La M´quina ENIGMA a a 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
79
Tendr´ ıamos como texto cifrado la concatenaci´n de las columnas 3,2,5,1 y 4 respectivao mente: “ Osonealr r irednu eoere et p aqonb”. N´tese que hemos de conservar el espacio al o principio del texto cifrado para que el mecanismo surta efecto. 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 plano. Suponiendo que conocemos n, que en nuestro es igual a 5, e tenemos 5! = 120 posibles claves. Descifrar´ ıamos el texto empleando cada una de ellas y comprobar´ ıamos si los pares y tripletas de s´ ımbolos consecutivos que vamos obteniendo se corresponden con los m´s frecuentes en Castellano. De esa forma podremos asignarle una a probabilidad autom´ticamente a cada una de las posibles claves. a Si, por el contrario, desconocemos n, basta con ir probando con n = 2, n = 3 y as´ suı cesivamente. Este m´todo es bastante complejo de llevar a cabo manualmente, a no ser que e se empleen ciertos trucos, pero una computadora puede completarlo en un tiempo m´s que a razonable sin demasiados problemas.
7.2
M´quinas de Rotores. La M´quina ENIGMA a a
En el a˜o 1923, un ingeniero alem´n llamado Arthur Scherbius patent´ una m´quina esn a o a pec´ ıficamente dise˜ada para facilitar las comunicaciones seguras. Se trataba de un instrumento n de apariencia simple, 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. El destinatario copiaba dichas letras en su propia m´quina y el mensaje original a aparec´ de nuevo. La clave la constitu´ las posiciones iniciales de tres tambores o rotores ıa ıan que el ingenio pose´ en su parte frontal. ıa En la figura 7.1 podemos apreciar un esquema de esta m´quina, llamada ENIGMA. Los a rotores no son m´s que tambores con contactos en su superficie y cableados en su interior, a de forma que cuando se pulsa una tecla, la posici´n de ´stos determina cu´l es la letra que o e a se ha de iluminar. Cada vez que se pulsa una tecla el primer rotor avanza una posici´n; o el segundo avanza cuando el anterior ha dado una vuelta completa y as´ sucesivamente. El ı Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
80
7. Criptograf´ Cl´sica ıa a
Figura 7.1: Esquema de la m´quina Enigma. a
reflector no exist´ en los primeros modelos, se introdujo posteriormente para permitir que la ıa misma m´quina sirviera tanto para cifrar como para descifrar, como veremos posteriormente. a
7.2.1
Un poco de Historia
ENIGMA pronto llam´ la atenci´n del ej´rcito alem´n, que la utiliz´ de forma intensiva o o e a o a lo largo de la II Guerra Mundial. Adem´s se le aplicaron varias mejoras, como incluir a un peque˜o sistema previo de permutaci´n de letras, llamado Stecker, hacer que los rotores n o fueran intercambiables —se pod´ elegir y colocar en cualquier orden tres de entre cinco ıan disponibles—, e incluso se ampli´ el n´mero de rotores a cuatro. o u Aunque ENIGMA parec´ virtualmente imposible de romper, presentaba una serie de ıa debilidades, tanto en su dise˜o como en los mecanismos empleados para utilizarla, que fueron n aprovechadas por el ej´rcito aliado. El primero en conseguir avances significativos fue el servicio e de inteligencia polaco, ya que en 1928 se recibi´ accidentalmente en ese pa´ un ejemplar por o ıs correo ordinario. Al ser reclamado urgentemente por las autoridades alemanas, despert´ el o inter´s del servicio secreto, que dispuso de un fin de semana entero para desmontar, analizar e y volver a empaquetar cuidadosamente la m´quina antes de devolverla a sus due˜os el lunes. a n El conocimiento preciso de la m´quina permiti´ a un equipo de tres matem´ticos (Marian a o a Rejewski, Jerzy Rozycki y Henryk Zygalski) elaborar un mecanismo para aprovechar una debilidad, no en la m´quina en s´ sino en el protocolo empleado por el ej´rcito alem´n para a ı, e a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
7.2. M´quinas de Rotores. La M´quina ENIGMA a a
81
colocar los rotores al principio de cada mensaje. Dicho protocolo consist´ en escoger una ıa posici´n de un libro de claves, y enviar tres letras cualesquiera dos veces, para evitar posibles o errores. En realidad se estaba introduciendo una redundancia tal en el mensaje que permit´ ıa obtener sin demasiados problemas la clave empleada. Se construy´ un aparato que permit´ o ıa descifrar los mensajes, y se bautiz´ como Cicl´metro. o o En 1938 Alemania cambi´ el protocolo, lo cual oblig´ a los matem´ticos polacos a refinar su o o a sistema, aunque b´sicamente se segu´ enviando tres letras repetidas. No vamos a entrar en a ıan detalles, pero el ataque se basaba en buscar ordenaciones de los rotores que llevaran dos letras consecutivas iguales a la misma letra. Estas configuraciones especiales daban una informaci´n o vital sobre la posici´n inicial de los rotores para un mensaje concreto. Se construy´ entonces o o una versi´n mejorada del cicl´metro, llamada Bomba, que era capaz de encontrar estas confio o guraciones de forma autom´tica. Sin embargo, a finales de ese mismo a˜o se introdujeron dos a n rotores adicionales, lo cual obligaba a emplear sesenta bombas simult´neamente para romper a el sistema. Polonia simplemente carec´ de medios econ´micos para afrontar su construcci´n. ıa o o Los polacos entonces pusieron en conocimiento de los servicios secretos brit´nico y franc´s a e sus progresos, esperando poder establecer una v´ de colaboraci´n para seguir descifrando los ıa o mensajes germanos, pero la invasi´n de Polonia era inminente. Tras destruir todas las pruebas o que pudieran indicar al ej´rcito alem´n el ´xito polaco frente a ENIGMA, el equipo de Ree a e jewski huy´ precipitadamente, transportando lo que pudieron salvar en varios camiones. Tras o pasar por Ruman´ e Italia, y tener que quemar todos los camiones por el camino excepto uno, ıa llegaron a Par´ donde colaboraron con un equipo de siete espa˜oles expertos en criptograf´ ıs, n ıa, liderados por un tal Camaz´n. Cuando al a˜o siguiente Alemania invadi´ Francia el nuevo o n o equipo tuvo que huir a Africa, y posteriormente instalarse en Montpellier, donde reanudaron sus trabajos. En 1942, la entrada alemana en Vichy forz´ a los matem´ticos a escapar o a de nuevo, los polacos a Espa˜a (donde muri´ Rozycki), y los espa˜oles a Africa, donde se n o n perdi´ definitivamente su pista. o Cuando el equipo de Rejewski lleg´ por fin a Inglaterra, ya no se le consider´ seguro, o o al haber estado en contacto con el enemigo, y se le confiaron unicamente trabajos menores. ´ Mientras tanto, en Bletchley Park, Alan Turing desarrollaba una segunda Bomba bas´ndose a en los estudios del polaco, m´s evolucionada y r´pida que su antecesora, en el marco del a a proyecto ULTRA brit´nico, que se encargaba de recoger informaci´n acerca de los sistemas de a o comunicaciones germanos. En su desarrollo particip´ tambi´n Max Von Neumann, y se llegaron o e a construir varios cientos de ellas. Este nuevo dispositivo aprovechaba una debilidad esencial en ENIGMA: un mensaje no puede codificarse en s´ mismo, lo cual implica que ninguna de ı las letras del texto plano puede coincidir con ninguna del texto cifrado. La Bomba de Turing part´ de una palabra adivinada (en contra de las normas de uso de ENIGMA, la mayor´ de ıa ıa los mensajes que enviaba el ej´rcito alem´n comenzaban de igual forma, lo cual facilit´ la tarea e a o del equipo aliado enormemente), y buscaba un emparejamiento con el mensaje cifrado tal que el supuesto texto plano y el fragmento de criptograma asociado no coincidieran en ninguna letra. 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. a Un hecho bastante poco conocido es que Alemania regal´ al r´gimen de Franco casi una o e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
82
7. Criptograf´ Cl´sica ıa a
veintena de m´quinas ENIGMA, que fueron utilizadas para comunicaciones secretas hasta a entrados los a˜os cincuenta, suponemos que para regocijo de los servicios de espionaje brit´nico n a y norteamericano.
7.2.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. a o El cableado hace que cada una de las letras se haga corresponder con otra. Todas las letras tienen imagen y no hay dos letras con la misma imagen. Si notamos una permutaci´n como π, o podemos escribir que la permutaci´n resultante de combinar todos los rotores en un instante o dado es:
−1 −1 −1 πtotal = π0 , π1 , π2 , π3 , π2 , π1 , π0 −1 La permutaci´n π3 corresponde al reflector, y debe cumplir que π3 = π3 , es decir, que o aplicada dos veces nos d´ lo mismo que ten´ e ıamos al principio. De esta forma se cumple la propiedad de que, para una misma posici´n de los rotores, la codificaci´n y la decodificaci´n o o o son sim´tricas. e
La fuerza de la m´quina ENIGMA radicaba en que tras codificar cada letra se giran los a rotores, lo cual hace que la permutaci´n que se aplica a cada letra sea diferente, y que esa o permutaci´n adem´s no se repita hasta que los rotores recuperen su posici´n inicial. Tengamos o a o en cuenta que hay 17576 posiciones iniciales de los rotores, y 60 combinaciones de tres rotores a partir de los cinco de entre los que se puede elegir. Puesto que el stecker tambi´n presenta e un n´mero bastante alto de combinaciones, existe una cantidad enorme de posibles dispou siciones iniciales del la m´quina (al menos para aquella ´poca). La potencia del m´todo de a e e criptoan´lisis empleado radica en que se pod´ identificar un emparejamiento plausible entre a ıa el criptograma y el texto plano, 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. o No disponer de dicho emparejamiento hubiera complicado enormemente el criptoan´lisis, tal a vez hasta el punto de hacerlo fracasar.
7.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
Cap´ ıtulo 8
Algoritmos Sim´tricos de Cifrado e
8.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, en la p´gina 43), o o o a que se combinan para dar lugar a los denominados cifrados de producto. Recordemos que la confusi´n consiste en tratar de ocultar la relaci´n que existe entre o o el texto plano, 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 planos 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 una tabla de aproximadamente 1063 entradas. 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 un paso simple de sustituci´n-permutaci´n repetido n veces, como ocurre con DES. a o o
8.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 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
84
8. Algoritmos Sim´tricos de Cifrado e
Figura 8.1: Estructura de una red de Feistel.
de cada ronda se usa como entrada para la siguiente seg´n la relaci´n (ver figura 8.1): u o Li = Ri−1 Ri = Li−1 ⊕ f (Ri−1 , Ki ) Ln = Ln−1 ⊕ f (Rn−1 , Kn ) Rn = Rn−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 e de ser reversible, independientemente de c´mo sea la funci´n f , para ello basta con aplicar o o de nuevo el algoritmo al resultado, pero empleando las Ki en orden inverso. Esto nos va a permitir emplear el mismo mecanismo tanto para cifrar como para descifrar. si i < n. (8.1)
8.1.2
Cifrados con Estructura de Grupo
Otra de las cuestiones a tener en cuenta en los cifrados de producto es la posibilidad de que posean estructura de grupo. Se dice que un cifrado tiene estructura de grupo si se cumple la siguiente propiedad: ∀ k1 , k2 ∃ k3 tal que Ek2 (Ek1 (M )) = Ek3 (M ) (8.2)
esto es, si hacemos dos cifrados encadenados con k1 y k2 , existe una clave k3 que realiza la transformaci´n equivalente. o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
8.1. Cifrado de producto
85
Figura 8.2: A: S-Caja individual. B: combinaci´n de cuatro S-Cajas. o
Es interesante que un algotritmo criptogr´fico no posea estructura de grupo, ya que si a ciframos un mensaje primero con la clave k1 y el resultado con la clave k2 , es como si hubi´ramos empleado una clave de longitud doble, aumentando la seguridad del sistema. Si, por e el contrario, la transformaci´n criptogr´fica presentara estructura de grupo, esto hubiera sido o a equivalente a cifrar el mensaje una unica vez con una tercera clave, con lo que no habr´ ´ ıamos ganado nada.
8.1.3
S-Cajas
Hemos dicho antes que para poder construir buenos algoritmos de producto, intercalaremos sustituciones sencillas (confusi´n), con tablas peque˜as, y permutaciones (difusi´n). Estas o n o tablas peque˜as de sustituci´n se denominan de forma gen´rica S-Cajas. n o e Una S-Caja de m*n bits (ver figura 8.2) es una tabla de sustituci´n que toma como o entrada cadenas de m bits y da como salida cadenas de n bits. DES, por ejemplo, emplea ocho S-Cajas de 6*4 bits. La 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, haciendo uso de la S-Caja correspondiente. Normalmente, cuanto m´s grandes sean las S-Cajas, m´s resistente ser´ el a a a algoritmo resultante, aunque la elecci´n de los valores de salida para que den lugar a un buen o algoritmo no es en absoluto trivial. Existe un algoritmo criptogr´fico, llamado CAST, que emplea seis S-Cajas de 8*32 bits. a CAST codifica bloques de 64 bits empleando claves de 64 bits, consta de ocho rondas y deposita pr´cticamente toda su fuerza en las S-Cajas. De hecho, existen muchas variedades de CAST, a cada una con sus S-Cajas correspondientes —algunas de ellas secretas—. Este algoritmo se ha demostrado resistente a las t´cnicas habituales de criptoan´lisis, y s´lo se conoce la fuerza e a o bruta como mecanismo para atacarlo. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
86
8. Algoritmos Sim´tricos de Cifrado e
Figura 8.3: Esquema de la funci´n f del algoritmo DES. o
8.2
El Algoritmo DES
Es el algoritmo sim´trico m´s extendido mundialmente. Data de mediados de los setenta, e a cuando fue adoptado como est´ndar para las comunicaciones seguras por el Gobierno de los a EE.UU. En realidad la NSA lo dise˜´ para ser implementado por hardware, con la intenci´n de no o mantenerlo en secreto, pero al parecer por un malentendido entre ellos y la Oficina Nacional de Estandarizaci´n, su especificaci´n se hizo p´blica con suficiente detalle como para que o o u cualquiera pudiera implementarlo por software. No fue casualidad que el siguiente algoritmo adoptado (Skipjack ) fuera mantenido en secreto. A mediados de 1998, se demostr´ que un ataque por la fuerza bruta a DES era viable, o debido a la escasa longitud que emplea en su clave. No obstante, el algoritmo a´n no ha u demostrado ninguna debilidad grave desde el punto de vista te´rico, por lo que su estudio o sigue siendo plenamente interesante. El algoritmo DES codifica bloques de 64 bits empleando claves de 56 bits. Es una Red de Feistel de 16 rondas, m´s dos permutaciones, una que se aplica al principio (Pi ) y otra que se a −1 aplica al final (Pf ), tales que Pi = Pf . La funci´n f (figura 8.3) se compone de una permutaci´n de expansi´n (E), que convierte o o o el bloque de 32 bits correspondiente en uno de 48. Despu´s realiza un or-exclusivo con el valor e Ki , tambi´n de 48 bits, aplica ocho S-Cajas de 6*4 bits, y efectua una nueva permutaci´n P . e o Se calcula un total de 16 valores de Ki (figura 8.4), uno para cada ronda, efectuando primero una permutaci´n inicial EP1 sobre la clave de 64 bits, llevando a cabo desplazamientos o a la izquierda de cada una de las dos mitades —de 28 bits— resultantes, y realizando finalmente una elecci´n permutada (EP2) de 48 bits en cada ronda, que ser´ la Ki . Los desplazamientos o a a la izquierda son de dos bits, salvo para las rondas 1, 2, 9 y 16, en las que se desplaza s´lo un o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
8.2. El Algoritmo DES
87
Figura 8.4: C´lculo de las Ki para el algoritmo DES. EP1 representa la primera elecci´n a o permutada, que s´lo conserva 56 bits de los 64 de entrada, y EP2 representa la segunda, que o se queda con 48 bits. El signo “<<” representa un desplazamiento de bits a la izquierda (uno o dos dependiendo de la ronda).
bit. N´tese que aunque la clave para el algoritmo DES tiene en principio 64 bits, se ignoran o ocho de ellos —un bit de paridad por cada byte de la clave—, por lo que en la pr´ctica se usan a s´lo 56 bits. o
−1 Para descifrar basta con usar el mismo algoritmo (ya que Pi = Pf ) empleando las Ki en orden inverso.
8.2.1
Claves D´biles en DES e
El algoritmo DES presenta algunas claves d´biles. En general, todos aquellos valores de la e llave que conducen a una secuencia inadecuada de Ki ser´n poco recomendables. Distinguia remos entre claves d´biles (tabla 8.1), que son aquellas que generan un conjunto de diecis´is e e valores iguales de Ki —y que cumplen Ek (Ek (M )) = M —, y claves semid´biles (tabla 8.2), e que generan dos valores diferentes de Ki , cada uno de los cuales aparece ocho veces. En cualquier caso, 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, que no debe suponer un motivo de preocupaci´n. o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
88
8. Algoritmos Sim´tricos de Cifrado e
Clave 0101010101010101 1F1F1F1F0E0E0E0E E0E0E0E0F1F1F1F1 FEFEFEFEFEFEFEFE
Clave tras 0000000 0000000 FFFFFFF FFFFFFF
aplicar Pi 0000000 FFFFFFF 0000000 FFFFFFF
Tabla 8.1: Claves d´biles para el algoritmo DES (64 bits), expresadas en hexadecimal. e
Clave 01FE01FE01FE01FE FE01FE01FE01FE01 1FE01FE00EF10EF1 E01FE01FF10EF10E 01E001E001F101F1 E001E001F101F101 1FFE1FFE0EFE0EFE FE1FFE1FFE0EFE0E 011F011F010E010E 1F011F010E010E01 E0FEE0FEF1FEF1FE FEE0FEE0FEF1FEF1
Clave tras AAAAAAA 5555555 AAAAAAA 5555555 AAAAAAA 5555555 AAAAAAA 5555555 0000000 0000000 FFFFFFF FFFFFFF
aplicar Pi AAAAAAA 5555555 5555555 AAAAAAA 0000000 0000000 FFFFFFF FFFFFFF AAAAAAA 5555555 AAAAAAA 5555555
Tabla 8.2: Claves semi-d´biles para el algoritmo DES (64 bits), expresadas en hexadecimal. e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
8.3. Variantes de DES
89
8.3
Variantes de DES
A mediados de julio de 1998, una empresa sin ´nimo de lucro, llamada EFF (Electronic a Frontier Foundation), logr´ fabricar una m´quina capaz de descifrar un mensaje DES en meo a nos de tres d´ Curiosamente, pocas semanas antes, un alto cargo de la NSA hab´ declarado ıas. ıa que dicho algoritmo segu´ siendo seguro, y que descifrar un mensaje resultaba a´n excesivaıa u mente costoso, incluso para organizaciones gubernamentales. DES-Cracker cost´ menos de 40 o millones de pesetas. A pesar de su ca´ ıda, DES sigue siendo ampliamente utilizado en multitud de aplicaciones, como por ejemplo las transacciones de los cajeros autom´ticos. De todas formas, el problema a real de DES no radica en su dise˜o, sino en que emplea una clave demasiado corta (56 bits), lo n cual hace que con el avance actual de las computadoras los ataques por la fuerza bruta comiencen a ser opciones realistas. Mucha gente se resiste a abandonar este algoritmo, precisamente porque ha sido capaz de sobrevivir durante veinte a˜os sin mostrar ninguna debilidad en su n dise˜o, y prefieren proponer variantes que, de un lado evitar´ el riesgo de tener que confiar n ıan en algoritmos nuevos, y de otro permitir´ aprovechar gran parte de las implementaciones ıan por hardware existentes de DES.
8.3.1
DES M´ ltiple u
Consiste en aplicar varias veces el algoritmo DES con diferentes claves al mensaje original. Se puede hacer ya que DES no presenta estructura de grupo (ecuaci´n 8.2). El m´s com´n de o a u todos ellos es el Tripe-DES, que responde a la siguiente estructura:
−1 C = Ek1 (Ek2 (Ek1 (M )))
es decir, codificamos con la subclave k1 , decodificamos con k2 y volvemos a codificar con k1 . La clave resultante es la concatenaci´n de k1 y k2 , con una longitud de 112 bits. o
8.3.2
DES con Subclaves Independientes
Consiste en emplear subclaves diferentes para cada una de las 16 rondas de DES. Puesto que estas subclaves son de 48 bits, la clave resultante tendr´ 768 bits en total. No es nuestro ıa objetivo entrar en detalles, pero empleando criptoan´lisis diferencial, esta variante podr´ ser a ıa 61 textos planos escogidos, por lo que en la pr´ctica no presenta un avance sustancial rota con 2 a sobre DES est´ndar. a
8.3.3
DES Generalizado
Esta variante emplea n trozos de 32 bits en cada ronda en lugar de dos, por lo que aumentamos tanto la longitud de la clave como el tama˜o de mensaje que se puede codificar, n Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
90
8. Algoritmos Sim´tricos de Cifrado e
manteniendo sin embargo el orden de complejidad del algoritmo. Se ha demostrado sin embargo que no s´lo se gana poco en seguridad, sino que en muchos casos incluso se pierde. o
8.3.4
DES con S-Cajas Alternativas
Consiste en utilizar S-Cajas diferentes a las de la versi´n original de DES. En la pr´ctica o a no se han encontrado S-Cajas mejores que propias de DES. De hecho, 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. o
8.4
El algoritmo IDEA
El algoritmo IDEA (International Data Encryption Algorithm) es bastante m´s joven que a DES, pues data de 1992. Para muchos constituye el mejor y m´s seguro algoritmo sim´trico a e disponible en la actualidad. Trabaja con bloques de 64 bits de longitud y emplea una clave de 128 bits. Como en el caso de DES, se usa el mismo algoritmo tanto para cifrar como para descifrar. IDEA es un algoritmo bastante seguro, y hasta ahora se ha mostrado resistente a multitud de ataques, entre ellos el criptoan´lisis diferencial. No presenta claves d´biles1 , y su longitud a e de clave hace imposible en la pr´ctica un ataque por la fuerza bruta. a Como ocurre con todos los algoritmos sim´tricos de cifrado por bloques, IDEA se basa en e los conceptos de confusi´n y difusi´n, haciendo uso de las siguientes operaciones elementales o o (todas ellas f´ciles de implementar): a • XOR. • Suma m´dulo 216 . o • Producto m´dulo 216 + 1. o El algoritmo IDEA consta de ocho rondas. Dividiremos el bloque X a codificar, de 64 bits, en cuatro partes X1 , X2 , X3 y X4 de 16 bits. Denominaremos Zi a cada una de las 52 subclaves de 16 bits que vamos a necesitar. Las operaciones que llevaremos a cabo en cada ronda son las siguientes: 1. Multiplicar X1 por Z1 . 2. Sumar X2 con Z2 .
1 En realidad, IDEA tiene un peque˜isimo subconjunto de claves que pueden dar ciertas ventajas a un n criptoanalista, pero la probabilidad de encontrarnos con una de ellas es de 1 entre 296 , por lo que no representan un peligro real.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
8.4. El algoritmo IDEA 3. Sumar X3 con Z3 . 4. Multiplicar X4 por Z4 . 5. Hacer un XOR entre los resultados del paso 1 y el paso 3. 6. Hacer un XOR entre los resultados del paso 2 y el paso 4. 7. Multiplicar el resultado del paso 5 por Z5 . 8. Sumar los resultados de los pasos 6 y 7. 9. Multiplicar el resultado del paso 8 por Z6 . 10. Sumar los resultados de los pasos 7 y 9. 11. Hacer un XOR entre los resultados de los pasos 1 y 9. 12. Hacer un XOR entre los resultados de los pasos 3 y 9. 13. Hacer un XOR entre los resultados de los pasos 2 y 10. 14. Hacer un XOR entre los resultados de los pasos 4 y 10.
91
La salida de cada iteraci´n ser´n los cuatro sub-bloques obtenidos en los pasos 11, 12, 13 y o a 14, que ser´n la entrada del siguiente ciclo, en el que emplearemos las siguientes seis subclaves, a hasta un total de 48. 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). Despu´s de la octava iteraci´n, se realiza la siguiente transformaci´n: e o o 1. Multiplicar X1 por Z49 . 2. Sumar X2 con Z50 . 3. Sumar X3 con Z51 . 4. Multiplicar X4 por Z52 . Las primeras ocho subclaves se calculan dividiendo la clave de entrada en bloques de 16 bits. Las siguientes ocho se calculan rotando la clave de entrada 25 bits a la izquierda y volviendo a dividirla, y as´ sucesivamente. ı Las subclaves necesarias para descifrar se obtienen cambiando de orden las Zi y calculando sus inversas para la suma o la multiplicaci´n, seg´n la tabla 8.3. Puesto que 216 + 1 es un o u n´mero primo, nunca podremos obtener cero como producto de dos n´meros, por lo que u u no necesitamos representar dicho valor. Cuando estemos calculando productos, utilizaremos el cero para expresar el n´mero 216 —un uno seguido de 16 ceros—. Esta representaci´n u o es coherente puesto que los registros que se emplean internamente en el algoritmo poseen unicamente 16 bits. ´ Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
92
8. Algoritmos Sim´tricos de Cifrado e
8.5
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. En primer lugar, independientemente del m´todo empleado para codificar, 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. Entonces tenemos que a˜adir informaci´n u n n o al final para que s´ lo sea. El mecanismo m´s sencillo consiste en rellenar con ceros (o alg´n ı a u otro patr´n) el ultimo bloque que se codifica. El problema ahora consiste en saber cuando se o ´ descifra por d´nde hay que cortar. 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 8.5). Esto tiene el inconveniente de u n que si el tama˜o original es m´ltiplo del bloque, hay que alargarlo con otro bloque entero. Por n u ejemplo, si el tama˜o de bloque fuera 64 bits, y sobraran cinco bytes al final, a˜adir´ n n ıamos dos ceros y un tres. Si por contra no sobrara nada, tendr´ ıamos que a˜adir siete ceros y un ocho. n
8.5.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. Simplemente se subdivide la cadena que se quiere codificar en bloques del tama˜o adecuado y se cifran todos ellos empleando la misma clave. n A favor de este m´todo podemos decir que permite codificar los bloques independientee mente de su orden, lo cual es adecuado para codificar bases de datos o ficheros en los que se requiera un acceso aleatorio. Tambi´n es resistente a errores, pues si uno de los bloques e sufriera una alteraci´n, el resto quedar´ intacto. o ıa Por contra, si el mensaje presenta patrones repetitivos, el texto cifrado tambi´n los pree sentar´, y eso es peligroso, sobre todo cuando se codifica informaci´n muy redundante (como a o ficheros de texto), o con patrones comunes al inicio y final (como el correo electr´nico). Un o 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
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 8.3: Subclaves empleadas en el algoritmo IDEA
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
8.5. Modos de Operaci´n para Algoritmos de Cifrado por Bloques o
93
Figura 8.5: Relleno (padding) de los bytes del ultimo bloque al emplear un algoritmo de cifrado ´ por bloques.
contrincante puede en estos casos efectuar un ataque estad´ ıstico y extraer bastante informaci´n. o Otro riesgo bastante importante que presenta el modo ECB es el de la sustituci´n de o bloques. El atacante puede cambiar un bloque sin mayores problemas, y alterar los mensajes incluso desconociendo la clave y el algoritmo empleados. Simplemente se escucha una comunicaci´n de la que se conozca el contenido, como por ejemplo una transacci´n bancaria a nuestra o o cuenta corriente. 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). En cuesti´n de horas u o nos habremos hecho ricos.
8.5.2
Modo CBC
El modo CBC (Cipher Book Chaining Mode) incorpora un mecanismo de retroalimentaci´n o en el cifrado por bloques. Esto significa que la codificaci´n de bloques anteriores condiciona la o codificaci´n del bloque actual, por lo que ser´ imposible sustituir un bloque individual en el o a mensaje cifrado. Esto se consigue efectuando una operaci´n XOR entre el bloque del mensaje o que queremos codificar y el ultimo criptograma obtenido (ver figura 8.6). ´ En cualquier caso, dos mensajes id´nticos se codificar´n de la misma forma usando el modo e a CBC. M´s a´n, dos mensajes que empiecen igual se codificar´n igual hasta llegar a la primera a u a diferencia entre ellos. Para evitar esto se emplea un vector de inicializaci´n, que puede ser o un bloque aleatorio, como bloque inicial de la transmisi´n. Este vector ser´ descartado en o a destino, pero garantiza que siempre los mensajes se codifiquen de manera diferente, aunque tengan partes comunes. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
94
8. Algoritmos Sim´tricos de Cifrado e
Figura 8.6: Modo de operaci´n CBC. A) codificaci´n, B) decodificaci´n. o o o
8.5.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. Esta circunstancia puede convertirse en o un serio inconveniente, por ejemplo en el caso de terminales, que deber´ poder transmitir ıan cada car´cter que pulsa el usuario de manera individual. Una posible soluci´n ser´ emplear a o ıa un bloque completo para transmitir cada byte y rellenar el resto con ceros, pero esto har´ que a tengamos unicamente 256 mensajes diferentes en nuestra transmisi´n y que un atacante pue´ o da efectuar un sencillo an´lisis estad´ a ıstico para comprometerla. Otra opci´n ser´ rellenar el o ıa bloque con informaci´n aleatoria, aunque segur´ o ıamos desperdiciando gran parte del ancho de banda de la transmisi´n. 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, lo cual permite aprovechar o n totalmente la capacidad de transmisi´n del canal de comunicaciones, manteniendo adem´s un o a nivel de seguridad adecuado. En la figura 8.7 podemos ver el esquema de funcionamiento de este modo de operaci´n. Sea o p el tama˜o de bloque del algoritmo sim´trico, y sea n el tama˜o de los bloques que queremos n e n transmitir (n ha de divisor de p). Sea mi el i−´simo bloque del texto plano, de tama˜o n. e n Empleamos entonces un registro de desplazamiento R de logitud p y lo cargamos con un vector de inicializaci´n. Codificamos el registro R con el algoritmo sim´trico y obtenemos en r sus n o e bits m´s a la izquierda. El bloque que deberemos enviar es ci = r ⊕ mi . Desplazamos R n bits a a la izquierda e introducimos ci por la derecha. Para descifrar basta con cargar el vector de inicializaci´n en R y codificarlo, calculando r. o Entonces mi = r ⊕ ci . Desplazamos luego R e introducimos ci por la derecha como hac´ ıamos en el algoritmo de cifrado. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
8.6. Criptoan´lisis de Algoritmos Sim´tricos a e
95
Figura 8.7: Esquema del modo de operaci´n CFB. o
N´tese que si n = p, el modo CFB queda reducido al modo CBC. o
8.5.4
Otros Modos
Existen protocolos criptogr´ficos que no se basan en la transmisi´n de bloques, sino en a o un mecanismo secuencial de codificaci´n de streams de tama˜o variable. Estos algoritmos o n permiten cifrar un mensaje bit a bit de forma continua y enviar cada bit antes que el siguiente sea codificado. Funcionan a partir de lo que se llama un generador de secuencia de clave (keystream generator), un algoritmo que genera una clave continua de longitud infinita (o muy grande) bit a bit. Lo que se hace es aplicar una operaci´n XOR entre cada bit del texto plano o y cada bit de la clave. En el destino existe otro generador id´ntico sincronizado para llevar a e cabo el descifrado. El problema fundamental es mantener ambos generadores sincronizados, para evitar errores si se pierde alg´n bit de la transmisi´n. u o Los algoritmos de codificaci´n por bloques pueden ser empleados como generadores de o secuencia de clave. Existen para ello otros modos de operaci´n de estos algoritmos, como o el OFB (Output-Feedback), que incorporan mecanismos para mantener la sincron´ entre los ıa generadores de secuencia origen y destino.
8.6
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. Mucha gente desconfiaba (y a´n desconf´ del algoritmo propuesto por la NSA. Se u ıa) dice que existen estructuras extra˜as, que muchos consideran sencillamente puertas traseras n colocadas por la Agencia para facilitarles la decodificaci´n de los mensajes. Nadie ha podido o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
96
8. Algoritmos Sim´tricos de Cifrado e
a´n demostrar ni desmentir este punto. 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. Ni que decir tiene que estos m´todos no han conseguido doblegar a DES, pero s´ repree ı sentan mecanismos significativamente m´s eficientes que la fuerza bruta para criptoanalizar a un mensaje. Los dos m´todos que vamos a comentar parten de que disponemos de grandes e cantidades de pares texto plano-texto cifrado obtenidos con la clave que queremos descubrir.
8.6.1
Criptoan´lisis Diferencial a
Descubierto por Biham y Shamir en 1990, permite efectuar un ataque de texto plano escogido a DES que resulta m´s eficiente que la fuerza bruta. Se basa en el estudio de los pares a de criptogramas que surgen cuando se codifican dos textos planos con diferencias particulares, analizando la evoluci´n de dichas diferencias a lo largo de las rondas de DES. 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. Usando las diferencias entre los textos e u cifrados, se asignan probabilidades a las diferentes claves de cifrado. Conforme tenemos m´s a y m´s pares, una de las claves aparece como la m´s probable. Esa ser´ la clave buscada. a a a
8.6.2
Criptoan´lisis Lineal a
El criptoan´lisis lineal, descubierto por Mitsuru Matsui, basa su funcionamiento en tomar a algunos bits del texto plano y efectuar una operaci´n XOR entre ellos, tomar algunos del o texto cifrado y hacerles lo mismo, y finalmente hacer un XOR de los dos resultados anteriores, obteniendo un unico bit. Efectuando esa operaci´n a una gran cantidad de pares de texto ´ o plano y criptograma diferentes podemos ver si se obtienen m´s ceros o m´s unos. a a Existen combinaciones de bits que, bien escogidas, dan lugar a un sesgo significativo en la medida anteriormente definida, es decir, que el n´mero de ceros (o unos) es apreciablemente u superior. Esta propiedad nos va a permitir poder asignar mayor probabilidad a unas claves sobre otras y de esta forma descubrir la clave que buscamos.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Parte IV
Criptograf´ de Llave P´ blica ıa u
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 9
Algoritmos Asim´tricos de Cifrado e
Los algoritmos de llave p´blica, o algoritmos asim´tricos, han demostrado su inter´s para u e e ser empleados en redes de comunicaci´n inseguras (Internet). Introducidos por Whitfield Diffie o y Martin Hellman a mediados de los a˜os 70, su novedad fundamental con respecto a la n criptograf´ sim´trica es que las claves no son unicas, sino que forman pares. Hasta la fecha ıa e ´ han aparecido multitud de algoritmos asim´tricos, la mayor´ de los cuales son inseguros. e ıa Otros son poco pr´cticos, bien sea porque el criptograma es considerablemente mayor que a el mensaje original, bien sea porque la longitud de la clave es enorme. Se basan en general en plantear al atacante problemas matem´ticos dif´ a ıciles de resolver (ver cap´ ıtulo 4). En la pr´ctica muy pocos algoritmos son realmente utiles. El m´s popular por su sencillez es RSA, a ´ a que ha sobrevivido a multitud de ataques, si bien necesita una longitud de clave considerable. Otros algoritmos son los de ElGamal y Rabin. Los algoritmos asim´tricos emplean generalmente longitudes de clave mucho mayores que e los sim´tricos. Por ejemplo, mientras que para algoritmos sim´tricos se considera segura una e e clave de 128 bits, para algoritmos asim´tricos se recomiendan claves de al menos 1024 bits. e Adem´s, la complejidad de c´lculo que comportan estos ultimos los hace considerablemente a a ´ m´s lentos que los algoritmos de cifrado por bloques. En la pr´ctica los m´todos asim´tricos a a e e se emplean unicamente para codificar la clave de sesi´n (sim´trica) de cada mensaje. ´ o e
9.1
Aplicaciones de los Algoritmos Asim´tricos e
Los algoritmos asim´tricos poseen dos claves diferentes en lugar de una, Kp y KP , denoe minadas clave privada y clave p´blica. Una de ellas se emplea para codificar, mientras que la u otra se usa para decodificar. Dependiendo de la aplicaci´n que le demos al algoritmo, la clave o p´blica ser´ la de cifrado o viceversa. 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. ıcil Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
100
9. Algoritmos Asim´tricos de Cifrado e
Figura 9.1: Transmisi´n de informaci´n empleando algoritmos asim´tricos. 1. A tiene el meno o e saje m y quiere envi´rselo a B; 2. B env´ a A su clave p´blica, KP ; 3. A codifica el mensaje a ıa u m y env´ a B el criptograma EKP (m); 4. B decodifica el criptograma empleando la clave ıa privada Kp .
9.1.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, lo cual permite su uso en canales o o inseguros. Supongamos que A quiere enviar un mensaje a B (figura 9.1). Para ello solicita a B su clave p´blica KP . A genera entonces el mensaje cifrado EKP (m). Una vez hecho esto u unicamente quien posea la clave Kp —en nuestro ejemplo, B— podr´ recuperar el mensaje ´ a original m. N´tese que para este tipo de aplicaci´n, la llave que se hace p´blica es aquella que permite o o u codificar los mensajes, mientras que la llave privada es aquella que permite descifrarlos.
9.1.2
Autentificaci´n o
La segunda aplicaci´n de los algoritmos asim´tricos es la autentificaci´n de mensajes, con o e o ayuda de funciones resumen (ver secci´n 10.1), que nos permiten obtener una firma a partir o de un mensaje. Dicha firma es mucho m´s peque˜a que el mensaje original, y es muy dif´ a n ıcil encontrar otro mensaje que tenga la misma firma. Supongamos que A recibe un mensaje m de B y quiere comprobar su autenticidad. Para ello B genera un resumen del mensaje r(m) Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
9.2. El Algoritmo RSA
101
Figura 9.2: Autentificaci´n de informaci´n empleando algoritmos asim´tricos. 1. A, que posee o o e la clave p´blica KP de B, recibe el mensaje m y quiere autentificarlo; 2. B genera el resumen de u m env´ a A el criptograma asociado EKp (r(m)); 3. A genera por su cuenta r (m) y decodifica ıa el criptograma recibido usando la clave KP ; 4. A compara r(m) y r (m) para comprobar la autenticidad del mensaje m.
(ver figura 9.2) y lo codifica empleando la clave de cifrado, que en este caso ser´ privada. La a clave de descifrado se habr´ hecho p´blica previamente, y debe estar en poder de A. B env´ a u ıa entonces a A el criptograma correspondiente a r(m). A puede ahora generar su propia r (m) y compararla con el valor r(m) obtenido del criptograma enviado por B. Si coinciden, el mensaje ser´ aut´ntico, puesto que el unico que posee la clave para codificar es precisamente B. a e ´ N´tese que en este caso la clave que se emplea para cifrar es la clave privada, justo al rev´s o e que para la simple codificaci´n de mensajes. o Muchos de los algoritmos asim´tricos presentan claves duales, esto quiere decir que si e empleamos una para codificar, la otra permitir´ decodificar y viceversa. Esto ocurre con el a algoritmo RSA, por lo que un unico par de claves es suficiente para codificar y autentificar. ´
9.2
El Algoritmo RSA
De entre todos los algoritmos asim´tricos, quiz´ RSA sea el m´s sencillo de comprender e e a a implementar. Sus pares de claves son duales, por lo que sirve tanto para codificar como para autentificar. Su nombre proviene de sus tres inventores: Ron Rivest, Adi Shamir y Leonard Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
102
9. Algoritmos Asim´tricos de Cifrado e
Adleman. Desde su nacimiento nadie ha conseguido probar o rebatir su seguridad, pero se le tiene como uno de los algoritmos asim´tricos m´s seguros. e a RSA se basa en la dificultad para factorizar grandes n´meros. 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. El u atacante se enfrenatar´, si quiere recuperar un texto plano a partir del criptograma y la llave a p´blica, a un problema de factorizaci´n (ver secci´n 4.4). u o o Para generar un par de llaves (KP , Kp ), en primer lugar se escogen aleatoriamente dos n´meros primos grandes, p y q. Despu´s se calcula el producto n = pq. u e Escogeremos ahora un n´mero e primo relativo con (p − 1)(q − 1). (e, n) ser´ la clave u a p´blica. N´tese que e debe tener inversa m´dulo (p − 1)(q − 1), por lo que exisitr´ un n´mero u o o a u d tal que de ≡ 1 (mod (p − 1)(q − 1)) es decir, que d es la inversa de e m´dulo (p − 1)(q − 1). (d, n) ser´ la clave privada. Esta o a inversa puede calcularse f´cilmente empleando el Algoritmo Extendido de Euclides. N´tese a o que si desconocemos los factores de n, este c´lculo resulta pr´cticamente imposible. a a La codificaci´n se lleva a cabo seg´n la expresi´n: o u o c = me (mod n) mientras que la decodificaci´n se har´ de la siguiente forma: o a m = cd (mod n) 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), por lo que, seg´n la ecuaci´n (4.3), (mk )(p−1)(q−1) = 1, u o lo cual nos lleva de nuevo a m. En la pr´ctica, cogeremos p y q con un n´mero grande de bits, por ejemplo 200, con lo a u que n tendr´ 400 bits. Subdividiremos el mensaje que queramos enviar en bloques de 399 bits a (de esta forma garantizamos que el valor de cada bloque sea menor que n) y efectuamos la codificaci´n de cada uno. Obtendremos un mensaje cifrado ligeramente m´s grande, puesto o a que estar´ compuesto por bloques de 400 bits. 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), y obtendremos bloques de 399 bits. El atacante, si quiere recuperar la clave privada a partir de la p´blica, debe conocer los u factores p y q de n, y esto representa un problema computacionalmente intratable, siempre Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa (9.2) (9.1)
9.2. El Algoritmo RSA que p y q —y, por lo tanto, n— sean lo suficientemente grandes.
103
9.2.1
Seguridad del Algoritmo RSA
T´cnicamente no es cierto que el algoritmo RSA deposite su fuerza en el problema de e la factorizaci´n. 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. 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, este m´todo podr´ ser empleado como una nueva o e ıa t´cnica para factorizar n´meros enteros, por lo que la anterior afirmaci´n se considera en la e u o pr´ctica cierta. De hecho, existen estudios que demuestran que incluso recuperar s´lo algunos a o bits del mensaje original resulta tan dif´ como descifrar el mensaje entero. ıcil Aparte de factorizar n, podr´ ıamos intentar calcular Φ(n) directamente, o probar por la fuerza bruta tratando de encontrar la clave privada. Ambos ataques son m´s costosos compua tacionalmente que la propia factorizaci´n de n, afortunadamente. o Otro punto que cabr´ preguntarse es qu´ pasar´ si los primos p y q que escogemos realıa e ıa mente fueran compuestos. Recordemos que los algoritmos de prueba de primos que conocemos son probabil´ ısticos, por lo que jam´s tendremos la absoluta seguridad de que p y q son reala mente primos. Pero obs´rvese que si aplicamos, por ejemplo, treinta pasadas del algoritmo e de Rabin-Miller (secci´n 4.4), las probabilidades de que el n´mero escogido pase el test y o u siga siendo primo son de una contra 260 : resulta m´s f´cil que nos toque la primitiva y que a a simult´neamente nos parta un rayo (tabla 1.1). Por otra parte, si p o q fueran compuestos, el a algoritmo RSA simplemente no funcionar´ ıa.
9.2.2
Vulnerabilidades de RSA
Aunque el algoritmo RSA es bastante seguro conceptualmente, existen algunos puntos d´biles en la forma de utilizarlo que pueden ser aprovechados por un atacante. En esta secci´n e o comentaremos estas posibles vulnerabilidades, as´ como la forma de evitar que surjan. ı
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, es decir me = m (mod n) (9.3)
En realidad, siempre hay mensajes que quedan inalterados al ser codificados mediante RSA, sea cual sea el valor de n. Nuestro objetivo ser´ reducir al m´ a ınimo el n´mero de ´stos. u e Se puede comprobar que, siendo n = pq y e el exponente para codificar, Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
104
9. Algoritmos Asim´tricos de Cifrado e
σn = (1 + mcd(e − 1, p − 1)) (1 + mcd(e − 1, q − 1)) 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 , con p y q primos, entonces mcd(e − 1, p − 1) puede valer 1, 2 ´ p —an´logamente o a ocurre con q —. Los valores posibles de σn ser´n entonces 4, 6, 9, 2(p + 1), 2(q + 1), 3(p + a 1), 3(p + 1), y (p + 1)(q + 1). Afortunadamente, los cinco ultimos son extremadamente ´ improbables, por lo que no deben preocuparnos. No obstante, como medida de precauci´n, se o puede calcular σn a la hora de generar las llaves p´blica y privada. u
Claves Demasiado Cortas Actualmente se considera segura una clave RSA con una longitud de n de al menos 768 bits, si bien se recomienda el uso de claves no inferiores a 1024 bits. Hasta hace relativamente poco se recomendaban 512 bits, pero en mayo de 1999, Adi Shamir present´ el denominado dispositivo o Twinkle, un ingenio capaz de factorizar n´meros de manera muy r´pida, aprovechando los u a ultimos avances en la optimizaci´n de algoritmos espec´ ´ o ıficos para esta tarea. Este dispositivo, a´n no construido, podr´ ser incorporado en ordenadores de bajo coste y pondr´ en serio u ıa ıa peligro los mensajes cifrados con claves de 512 bits o menos. Teniendo en cuenta los avances de la tecnolog´ y suponiendo que el algoritmo RSA no ıa, sea roto anal´ ıticamente, deberemos escoger la longitud de la clave en funci´n del tiempo que o queramos que nuestra informaci´n permanezca en secreto. Efectivamente, 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. n
Ataques de Intermediario El ataque de intermediario (figura 9.3) puede darse con cualquier algoritmo asim´trico. e Supongamos que A quiere establecer una comunicaci´n con B, y que C quiere espiarla. Cuando o A le solicite a B su clave p´blica KB , C se interpone, obteniendo la clave de B y enviando a A u una clave falsa kC creada por ´l. Cuando A codifique el mensaje, C lo interceptar´ de nuevo, e a decodific´ndolo con su clave propia y empleando KB para recodificarlo y enviarlo a B. Ni A a ni B son conscientes de que sus mensajes est´n siendo interceptados. 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. Para ello nada mejor que ´sta est´ firmada por un amigo com´n, que certifique e e e u la autenticidad de la clave. En la actualidad existen los llamados anillos de confianza, que permiten certificar la autenticidad de las claves sin necesidad de centralizar el proceso. Por eso se nos recomienda cuando instalamos paquetes como el PGP que firmemos todas las claves sobre las que tengamos certeza de su autenticidad, y s´lamente ´sas. o e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
9.2. El Algoritmo RSA
105
Figura 9.3: Ataque de intermediario para un algoritmo asim´trico. e
Ataques de Texto Plano 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. Para que el ataque surta efecto, ´ la firma debe hacerse codificando el mensaje completo, no el resultado de una funci´n resumen o sobre ´l. Por ello se recomienda que las firmas digitales se lleven a cabo siempre sobre una e funci´n resumen del mensaje, nunca sobre el mensaje en s´ o ı. Otro tipo de ataque con texto plano escogido podr´ ser el siguiente: para falsificar una ıa firma sobre un mensaje m, se pueden calcular dos mensajes individuales m1 y m2 , aparentemente inofensivos, tales que m1 m2 = m, y envi´rselos a la v´ a ıctima para que los firme. Entonces d y md . Aunque desconozcamos d, si calculamos obtendr´ ıamos un m1 2 md md = md (mod n) 1 2 obtendremos el mensaje m firmado. Ataques de M´dulo Com´ n o u Podr´ pensarse que, una vez generados p y q, ser´ m´s r´pido generar tantos pares de ıa a a a llaves como queramos, en lugar de tener que emplear dos n´meros primos diferentes en cada u caso. Sin embargo, si lo hacemos as´ un atacante podr´ decodificar nuestros mensajes sin ı, a necesidad de la llave privada. Sea m el texto plano, que codificamos empleando dos claves de cifrado diferentes e1 y e2 . Los criptogramas que obtenemos son los siguientes: c1 = me1 (mod n) c2 = me2 (mod n) El atacante conoce pues n, e1 , e2 , c1 y c2 . Si e1 y e2 son primos relativos, el Algoritmo Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
106
9. Algoritmos Asim´tricos de Cifrado e
Extendido de Euclides nos permitir´ encontrar r y s tales que a re1 + se2 = 1 Ahora podemos hacer el siguiente c´lculo a cr cs = me1 r me2 s = me1 r+e2 s = m1 (mod n) 1 2 Recordemos que esto s´lo se cumple si e1 y e2 son n´meros primos relativos, pero precio u samente eso es lo que suele ocurrir en la gran mayor´ de los casos. Por lo tanto, se deben ıa generar p y q diferentes para cada par de claves. Ataques de Exponente Bajo Si el exponente de codificaci´n e es demasiado bajo, existe la posibilidad de que un atacante o pueda romper el sistema. Esto se soluciona rellenando los m que se codifican con bits aleatorios por la izquierda. Por ejemplo, si n es de 400 bits, una estrategia razonable ser´ coger bloques ıa de 392 bits (que es un n´mero exacto de bytes) e incluirles siete bits aleatorios por la izquierda. u Cuando decodifiquemos simplemente ignoraremos esos siete bits. Por otra parte, si d es demasiado bajo, tambi´n existen mecanismos para romper el sistema, e por lo que se recomienda emplear valores altos para d. Firmar y Codificar Con el algoritmo RSA nunca se debe firmar un mensaje despu´s de codificarlo, por el cone trario, debe firmarse primero. Existen ataques que aprovechan mensajes primero codificados y luego firmados, aunque se empleen funciones resumen.
9.3
9.3.1
Otros Algoritmos Asim´tricos e
Algoritmo de ElGamal
Fue dise˜ado en un principio para producir firmas digitales, pero posteriormente se extenn di´ tambi´n para codificar mensajes. Se basa en el problema de los logaritmos discretos, que o e est´ ´ a ıntimamente relacionado con el de la factorizaci´n de n´meros enteros. o u Para generar un par de llaves, se escoge un n´mero primo p y dos n´meros aleatorios g y u u x menores que p. Se calcula entonces y = g x (mod p) Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
9.3. Otros Algoritmos Asim´tricos e La llave p´blica es (g, y, p), mientras que la llave privada es x. u Firmas Digitales de ElGamal
107
Para firmar un mensaje m basta con escoger un n´mero k aleatorio, tal que mcd(k, p−1) = u 1, y calcular a = g k (mod p) Luego se emplea el Algoritmo Extendido de Euclides para resolver la ecuaci´n o m = (xa + kb) (mod (p − 1)) La firma la constituye el par (a, b). En cuanto al valor k, debe mantenerse en secreto y ser diferente cada vez. La firma se verifica comprobando que y a ab = g m (mod p) Codificaci´n de ElGamal o Para codificar el mensaje m se escoge primero un n´mero aleatorio k primo relativo con u (p−1), que tambi´n ser´ mantenido en secreto. Calculamos entonces las siguientes expresiones e a a = g k (mod p) b = y k m (mod p) (9.5) (9.4)
(9.6)
El par (a, b) es el texto cifrado, de doble longitud que el texto original. Para decodificar se calcula m = b/ax (mod p) (9.7)
9.3.2
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. Este problema se ha demostrado que es equivalente al de la o u factorizaci´n de dicho n´mero. o u En primer lugar escogemos dos n´meros primos, p y q, ambos congruentes con 3 m´dulo 4 u o (los dos ultimos bits a 1). Estos primos son la clave privada. La clave p´blica es su producto, ´ u n = pq. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
108
9. Algoritmos Asim´tricos de Cifrado e Para codificar un mensaje m, simplemente se calcula c = m2 (mod n) 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) (9.8)
Luego se escogen a y b tales que a = q(q −1 (mod p)) y b = p(p−1 (mod q)). Los cuatro posibles mensajes originales son ma mb mc md = = = = (am1 + bm3 ) (am1 + bm4 ) (am2 + bm3 ) (am2 + bm4 ) (mod (mod (mod (mod n) n) n) n)
(9.9)
Desgraciadamente, no existe ning´n mecanismo para decidir cu´l de los cuatro es el aut´ntico, 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.
9.4
El Protocolo SSL
El protocolo SSL (Secure Sockets Layer) permite establecer conexiones seguras a trav´s e de Internet, de forma sencilla y transparente. La idea consiste en interponer una fase de codificaci´n de los mensajes antes de enviarlos por la red. Una vez que se ha establecido la o comunicaci´n, cuando una aplicaci´n quiere enviar informaci´n a otra computadora, la capa o o o SSL la recoge y la codifica, para luego enviarla a su destino a trav´s de la red. An´logamente, e a el m´dulo SSL del otro ordenador se encarga de decodificar los mensajes y se los pasa como o texto plano a la aplicaci´n destino. o Una comunicaci´n SSL consta fundamentalmente de dos fases: o 1. Fase de saludo (handshaking). Consiste b´sicamente en una identificaci´n mutua de los a o interlocutores, para la cual se emplean habitualmente los certificados X.509, que veremos en la secci´n 10.6. Tras el intercambio de claves p´blicas, los dos sistemas escogen una o u clave de sesi´n, de tipo sim´trico. o e 2. Fase de comunicaci´n. En esta fase se produce el aut´ntico intercambio de informaci´n, o e o que se codifica mediante la clave de sesi´n acordada en la fase de saludo. o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
9.4. El Protocolo SSL
109
Cada sesi´n SSL lleva asociado un identificador unico que evita la posibilidad de que un o ´ atacante escuche la red y repita exactamente lo mismo que ha o´ ıdo, a´n sin saber lo que u significa, para enga˜ar a uno de los interlocutores. n Las ventajas de este protocolo son evidentes, ya que liberan a las aplicaciones de llevar a cabo las operaciones criptogr´ficas antes de enviar la informaci´n, y su transparencia permite a o usarlo de manera inmediata sin modificar apenas los programas ya existentes. Desde hace tiempo los principales navegadores de Internet incorporan un m´dulo SSL, que se activa de o forma autom´tica cuando es necesario. Desgraciadamente, las versiones de exportaci´n tanto a o de Netscape como de Internet Explorer trabajan con claves de sesi´n de 40 bits, que pueden o ser descifradas en cuesti´n de pocas horas por cualquier PC m´s o menos potente, por lo que o a en ning´n caso pueden ser merecedoras de nuestra confianza. Afortunadamente, este problema u se puede subsanar con utilidades como Fortify, que restauran su total funcionalidad a estos programas.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
110
9. Algoritmos Asim´tricos de Cifrado e
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 10
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. Dicha caracter´ ıstica puede ser su origen, su no manipulaci´n, su identidad, etc. Consideraremos tres grandes tipos dentro de los m´todos de o e autentificaci´n: o • Autentificaci´n de mensaje. Queremos garantizar la procedencia de un mensaje conocido, o de forma que podamos asegurarnos de que no es una falsificaci´n. Este mecanismo se o conoce habitualmente como firma digital. • Autentificaci´n de usuario mediante contrase˜a. En este caso se trata de garantizar la o n presencia de un usuario legal en el sistema. El usuario deber´ poseer una contrase˜a a n secreta que le permita identificarse. • Autentificaci´n de dispositivo. Se trata de garantizar la presencia de un dispositivo v´lido. 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. n N´tese que la autentificaci´n de usuario por medio de alguna caracter´ o o ıstica biom´trica, e como pueden ser las huellas digitales, la retina, el iris, la voz, etc. puede reducirse a un problema de autentificaci´n de dispositivo, solo que el dispositivo en este caso es el propio o usuario. De todas formas, en este cap´ ıtulo unicamente trataremos m´todos de autentificaci´n ´ e o basados en t´cnicas criptogr´ficas. e a
10.1
Firmas Digitales. Funciones Resumen
En el cap´ ıtulo 9 vimos que la criptograf´ asim´trica permit´ autentificar informaci´n, ıa e ıa o es decir, poder asegurar que un mensaje m proviene de un emisor A y no de cualquier otro. As´ ımismo vimos que la autentificaci´n deb´ hacerse empleando una funci´n resumen y no o ıa o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
112
10. M´todos de Autentificaci´n e o
codificando el mensaje completo. En esta secci´n estudiaremos dichas funciones resumen, que o nos van a permitir crear firmas digitales. Sabemos que un mensaje m puede ser autentificado codificando con la llave privada Kp el resultado de aplicarle una funci´n resumen, EKp (r(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 . Cualquiera que tenga la llave p´blica correspondiente estar´ en condiciones u a de decodificar y verificar la firma. Para que sea segura, la funci´n resumen r(x) debe cumplir o adem´s ciertas caracter´ a ısticas: • r(m) es de longitud fija, independientemente de la longitud de m. • Dado m, es f´cil calcular r(m). a • Dado r(m), es computacionalmente intratable recuperar m. • Dado m, es computacionalmente intratable obtener un m tal que r(m) = r(m ).
10.1.1
Longitud Adecuada para una Signatura
Para decidir cu´l debe ser la longitud apropiada de una signatura, veamos primero el a siguiente ejemplo: ¿Cu´l es la cantidad de personas que hay que poner en una habitaci´n a o para que la probabilidad de que el cumplea˜os de una de ellas sea el mismo d´ que el m´ n ıa ıo? Debemos calcular n tal que n 1 > 0.5 365
luego n > 182. Sin embargo, ¿cu´l ser´ la cantidad de gente necesaria para que dos persoa ıa nas cualesquiera tengan el mismo cumplea˜os? Cada pareja tiene una probabilidad 1/365 de n compartir el cumplea˜os, y en un grupo de n personas hay n(n − 1)/2 parejas diferentes de n personas, luego n(n − 1) 1 · > 0.5 2 365 Esto se cumple si n > 19, una cantidad sorprendentemente mucho menor que 182. La consecuencia de esta paradoja es que aunque resulte muy dif´ dado m calcular un m ıcil tal que r(m) = r(m ), es mucho menos costoso buscar dos valores aleatorios m y m , tales que r(m) = r(m ). En el caso de una firma de 64 bits, necesitar´ ıamos 264 mensajes dado un m para obtener el m , pero bastar´ con generar aproximadamente 232 mensajes aleatorios para que aparecieran ıa dos con la misma signatura —en general, si la primera cantidad es muy grande, la segunda cantidad es aproximadamente su ra´ cuadrada—. El primer ataque nos llevar´ 600.000 ız ıa Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.1. Firmas Digitales. Funciones Resumen
113
Figura 10.1: Estructura iterativa de una funci´n resumen. o
a˜os con una computadora que generara un mill´n de mensajes por segundo, mientras que el n o segundo necesitar´ apenas una hora. ı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, m y m , tales que r(m) = r(m ). ıcil Hoy por hoy se recomienda emplear signaturas de al menos 128 bits, siendo 160 bits el valor m´s usado. a
10.1.2
Estructura de una Funci´n Resumen o
En general, las funciones resumen se basan en la idea de funciones de compresi´n, que dan o como resultado bloques de longitud n a partir de bloques de longitud m. Estas funciones se encadenan de forma iterativa, haciendo que la entrada en el paso i sea funci´n del i-´simo o e bloque del mensaje y de la salida del paso i − 1 (ver figura 10.1). En general, se suele incluir en alguno de los bloques del mensaje m —al principio o al final—, informaci´n sobre la o longitud total del mensaje. De esta forma se reducen las probabilidades de que dos mensajes con diferentes longitudes den el mismo valor en su resumen. En esta secci´n veremos dos algoritmos de generaci´n de firmas digitales: MD5 y DSA. o o
10.1.3
Algoritmo MD5
Se trata de uno de los m´s populares algoritmos de generaci´n de signaturas, debido a a o su inclusi´n en las primeras versiones de PGP. Resultado de una serie de mejoras sobre el o algoritmo MD4, dise˜ado por Ron Rivest, procesa los mensajes de entrada en bloques de 512 n bits, y produce una salida de 128 bits. En primer lugar, el mensaje se alarga hasta que su longitud es exactamente 64 bits inferior a un m´ltiplo de 512 bits. El alargamiento se lleva a cabo a˜adiendo un 1 seguido de tantos u n ceros como sea necesario. En segundo lugar, se a˜aden 64 bits que representan la longitud del n mensaje original, sin contar los bits a˜adidos en el proceso anterior. De esta forma tenemos n Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
114
10. M´todos de Autentificaci´n e o
el mensaje como un n´mero entero de bloques de 512 bits, y le hemos a˜adido informaci´n u n o sobre la longitud del mensaje. Seguidamente, se inicializan cuatro registros de 32 bits con los siguientes valores (hexadecimales): A B C D = = = = 01234567 89ABCDEF F EDCBA98 76543210
Posteriormente comienza el lazo principal del algoritmo, que se repetir´ para cada bloque a de 512 bits del mensaje. En primer lugar copiaremos los valores de A,B,C y D en otras cuatro variables, a,b,c y d. Luego definiremos las siguientes cuatro funciones: F (X, Y, Z) G(X, Y, Z) H(X, Y, Z) I(X, Y, Z) = = = = (X ∧ Y ) ∨ ((¬X) ∧ Z) (X ∧ Z) ∨ ((Y ∧ (¬Z)) X ⊕Y ⊕Z Y ⊕ (X ∧ (¬Z))
Ahora representaremos por mj el j-´simo bloque de 32 bits del mensaje m (de 0 a 15), y e definiremos otras cuatro funciones: F F (a, b, c, d, mj , s, ti ) GG(a, b, c, d, mj , s, ti ) HH(a, b, c, d, mj , s, ti ) II(a, b, c, d, mj , s, ti ) representa representa representa representa a = b + ((a + F (b, c, d) + mj + ti ) a = b + ((a + G(b, c, d) + mj + ti ) a = b + ((a + H(b, c, d) + mj + ti ) a = b + ((a + I(b, c, d) + mj + ti ) s) s) s) s)
donde la funci´n a s representa desplazar circularmente el valor a s bits a la izquieda. o Las 64 operaciones que se realizan en total quedan agrupadas en cuatro rondas. • Primera Ronda: F F (a, b, c, d, m0 , 7, D76AA478) F F (d, a, b, c, m1 , 12, E8C7B756) F F (c, d, a, b, m2 , 17, 242070DB) F F (b, c, d, a, m3 , 22, C1BDCEEE) F F (a, b, c, d, m4 , 7, F 57C0F AF ) F F (d, a, b, c, m5 , 12, 4787C62A) F F (c, d, a, b, m6 , 17, A8304613) F F (b, c, d, a, m7 , 22, F D469501) F F (a, b, c, d, m8 , 7, 698098D8) F F (d, a, b, c, m9 , 12, 8B44F 7AF ) F F (c, d, a, b, m10 , 17, F F F F 5BB1) Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.1. Firmas Digitales. Funciones Resumen F F (b, c, d, a, m11 , 22, 895CD7BE) F F (a, b, c, d, m12 , 7, 6B901122) F F (d, a, b, c, m13 , 12, F D987193) F F (c, d, a, b, m14 , 17, A679438E) F F (b, c, d, a, m15 , 22, 49B40821) • Segunda Ronda: GG(a, b, c, d, m1 , 5, F 61E2562) GG(d, a, b, c, m6 , 9, C040B340) GG(c, d, a, b, m11 , 14, 265E5A51) GG(b, c, d, a, m0 , 20, E9B6C7AA) GG(a, b, c, d, m5 , 5, D62F 105D) GG(d, a, b, c, m10 , 9, 02441453) GG(c, d, a, b, m15 , 14, D8A1E681) GG(b, c, d, a, m4 , 20, E7D3F BC8) GG(a, b, c, d, m9 , 5, 21E1CDE6) GG(d, a, b, c, m14 , 9, C33707D6) GG(c, d, a, b, m3 , 14, F 4D50D87) GG(b, c, d, a, m8 , 20, 455A14ED) GG(a, b, c, d, m13 , 5, A9E3E905) GG(d, a, b, c, m2 , 9, F CEF A3F 8) GG(c, d, a, b, m7 , 14, 676F 02D9) GG(b, c, d, a, m12 , 20, 8D2A4C8A) • Tercera Ronda: HH(a, b, c, d, m5 , 4, F F F A3942) HH(d, a, b, c, m8 , 11, 8771F 681) HH(c, d, a, b, m11 , 16, 6D9D6122) HH(b, c, d, a, m14 , 23, F DE5380C) HH(a, b, c, d, m1 , 4, A4BEEA44) HH(d, a, b, c, m4 , 11, 4BDECF A9) HH(c, d, a, b, m7 , 16, F 6BB4B60) HH(b, c, d, a, m10 , 23, BEBF BC70) HH(a, b, c, d, m13 , 4, 289B7EC6) HH(d, a, b, c, m0 , 11, EAA127F A) HH(c, d, a, b, m3 , 16, D4EF 3085) HH(b, c, d, a, m6 , 23, 04881D05) HH(a, b, c, d, m9 , 4, D9D4D039) HH(d, a, b, c, m12 , 11, E6DB99E5) HH(c, d, a, b, m15 , 16, 1F A27CF 8) HH(b, c, d, a, m2 , 23, C4AC5665) • Cuarta Ronda: II(a, b, c, d, m0 , 6, F 4292244) II(d, a, b, c, m7 , 10, 432AF F 97) Manuel J. Lucena L´pez o
115
Criptograf´ y Seguridad en Computadores ıa
116 II(c, d, a, b, m14 , 15, AB9423A7) II(b, c, d, a, m5 , 21, F C93A039) II(a, b, c, d, m12 , 6, 655B59C3) II(d, a, b, c, m3 , 10, 8F 0CCC92) II(c, d, a, b, m10 , 15, F F EF F 47D) II(b, c, d, a, m1 , 21, 85845DD1) II(a, b, c, d, m8 , 6, 6F A87E4F ) II(d, a, b, c, m15 , 10, F E2CE6E0) II(c, d, a, b, m6 , 15, A3014314) II(b, c, d, a, m13 , 21, 4E0811A1) II(a, b, c, d, m4 , 6, F 7537E82) II(d, a, b, c, m11 , 10, BD3AF 235) II(c, d, a, b, m2 , 15, 2AD7D2BB) II(b, c, d, a, m9 , 21, EB86D391)
10. M´todos de Autentificaci´n e o
Finalmente, los valores resultantes de a,b,c y d son sumados con A,B,C y D, se procesa el siguiente bloque de datos. El resultado final del algoritmo es la concatenaci´n de A,B,C y D. o A modo de curiosidad, diremos que las constantes ti empleadas en cada paso son la parte entera del resultado de la operaci´n 232 · abs(sin(i)), estando i representado en radianes. o En los ultimos tiempos el algoritmo MD5 ha mostrado ciertas debilidades, aunque sin ´ implicaciones pr´cticas reales, por lo que se sigue considerando en la actualidad un algoritmo a seguro, si bien su uso tiende a disminuir.
10.1.4
El Algoritmo SHA
El algoritmo SHA fue desarrollado por la NSA, para ser incluido en el est´ndar DSS a (Digital Signature Standard). Al contrario que los algoritmos de cifrado propuestos por esta organizaci´n, SHA se considera seguro y libre de puertas traseras, ya que favorece a los propios o intereses de la NSA que el algoritmo sea totalmente seguro. Produce firmas de 160 bits, a partir de bloques de 512 bits del mensaje original. El algoritmo es similar a MD5, y se inicializa igual que ´ste, solo que con cinco registros e de 32 bits en lugar de cuatro: A B C D E = = = = = 67452301 EF CDAB89 98BADCF E 10325476 C3D2E1F 0
Una vez que los cinco valores est´n inicializados, se copian en cinco variables, a, b, c, d y a e. El lazo principal tiene cuatro rondas con 20 operaciones cada una: Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.2. Autentificaci´n de Dispositivos o
117
F (X, Y, Z) = (X ∧ Y ) ∨ ((¬X) ∧ Z) G(X, Y, Z) = X ⊕ Y ⊕ Z H(X, Y, Z) = (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z) La operaci´n F se emplea en la primera ronda, la G en la segunda y en la cuarta, y la H o en la tercera. Adem´s se emplean cuatro constantes, una para cada ronda: a K0 K1 K2 K3 = = = = 5A827999 6ED9EBA1 8F 1BBCDC CA62C1D6
El bloque de mensaje m se trocea en 16 partes de 32 bits m0 a m15 y se convierte en 80 trozos de 32 bits w0 a w79 usando el siguiente algoritmo: wt = mt para t = 0 . . . 15 wt = (wt−3 ⊕ wt−8 ⊕ wt−14 ⊕ wt−16 ) 1 para t = 16 . . . 79 Como curiosidad, diremos que la NSA introdujo el desplazamiento a la izquierda para corregir una debilidad del algoritmo, pero no ha dado explicaciones sobre la naturaleza de esta debilidad. El lazo principal del algoritmo es entonces el siguiente: FOR t = 0 TO 79 i = t div 20 T mp = (a 5) + A(b, c, d) + e + wt + Ki e=d d=c c = b 30 b=a a = T mp siendo A la funci´n F , G o H seg´n el valor de t. Despu´s los valores de a a e son sumados a o u e los registros A a E y el algoritmo contin´a con el siguiente bloque de datos. u
10.2
Autentificaci´n de Dispositivos o
Los algoritmos sim´tricos pueden ser empleados para autentificar dispositivos, 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. Un ejemplo de este mecanismo de autentificaci´n o lo tenemos en las tarjetas que emplean los tel´fonos GSM. Dichas tarjetas llevan implementado e Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
118
10. M´todos de Autentificaci´n e o
Figura 10.2: Esquema de autentificaci´n por desaf´ o ıo.
un algoritmo sim´trico de cifrado, y usan una clave k almacenada en un lugar de la memoria e que no se puede leer desde el exterior. En cada tarjeta se graba una unica clave, de la que se ´ guarda una copia en lugar seguro. Si la compa˜´ quiere identificar una tarjeta simplemente nıa genera un bloque de bits aleatorio X y calcula su criptograma Ek (X) asociado. Posteriormente se env´ X a la tarjeta para que lo codifique. Si ambos mensajes codificados coinciden, la tarjeta ıa ser´ aut´ntica. Esta t´cnica se conoce como autentificaci´n por desaf´ (fig. 10.2). N´tese que a e e o ıo o la clave k en ning´n momento queda comprometida. u
10.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, que le permite identificarse positivamente frente al sistema. Supon´ dremos que el usuario se encuentra en un terminal seguro, es decir, libre de posibles ataques del exterior. Distinguiremos entonces dos casos claramente diferenciados: a) El sistema se comunica con el usuario, pero ´ste no puede entrar en ´l. Pi´nsese en un cajero e e e autom´tico. El usuario carece de acceso a los archivos del sistema y no tiene posibilidad a ejecutar aplicaciones en ´l, unicamente puede llevar a cabo una serie de opearciones muy e ´ restringidas. b) El sistema permite al usuario entrar. Este es el caso de los sistemas operativos como UNIX, que ofreen la posibilidad a los usuarios operar con el sistema desde terminales remotos. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.3. Autentificaci´n de Usuario Mediante Contrase˜a o n
119
Normalmente el usuario tiene acceso m´s o menos restringido a los archivos del sistema y a puede ejecutar programas. El primer caso es el m´s simple y sencillo de resolver. Basta con que el sistema mantenga a la lista de usuarios y sus contrase˜as asociadas en un archivo. Como este archivo no puede ser n consultado desde el exterior, es imposible averiguar la clave de un usuario. Para protegerse de los ataques por la fuerza bruta, ser´ 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. n o El caso b es considerablemente m´s complejo. Por un lado deberemos tomar las mismas a medidas que en el caso anterior para protegernos de los ataques por la fuerza bruta, y por otro hemos de tener en cuenta que cualquier usuario puede acceder a algunos ficheros. 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—, por o n e lo que las palabras clave no pueden ser almacenadas como texto plano en dicho fichero. El mecanismo que surge entonces de manera inmediata consiste en almacenar en el fichero de claves la signatura de cada contrase˜a. De esta forma ser´ dif´ adivinar una contrase˜a que n a ıcil n se ajuste a una signatura concreta. Los sistemas operativos modernos impiden adem´s leer el a fichero de claves de forma directa, pero eso no evita que en algunos casos ´ste pueda quedar e comprometido.
10.3.1
Ataques Mediante Diccionario
El principal problema de las palabras clave son las elecciones poco afortunadas por parte de los usuarios. Desgraciadamente todav´ hay personas que emplean su fecha de nacimiento, ıa el nombre de alg´n familiar o la matr´ u ıcula del coche como contrase˜a. Un atacante avispado n podr´ tratar de generar millones de claves y construir un diccionario. El siguiente paso ser´ ıa ıa precalcular las signaturas de todas las claves que hay en su diccionario. Si de alguna manera ha obtenido el fichero con las signaturas de las claves, 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. Tengamos en cuenta que un diccionario con m´s de 150.000 claves de ocho caracteres a cabe (sin comprimir) en un diskette de 3 pulgadas y media, y que ha habido casos en los que con diccionarios de este tama˜o se ha conseguido averiguar un sorprendente n´mero de claves. 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, 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. En el fichero de claves n se almacenar´, junto con la signatura, la sal necesaria para su obtenci´n. 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. De todas formas, si la contrase˜a n buscada aparece en el diccionario, el unico inconveniente para el atacante ser´ que en lugar de ´ a obtenerla de forma casi instant´nea, se tardar´ alg´n tiempo en conseguirla. Deberemos pues a a u evitar a toda costa emplear contrase˜as que puedan aparecer en un diccionario. n Adem´s de estar bien salvaguardadas, las palabras clave han de cumplir una serie de a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
120 condiciones para que puedan considerarse seguras:
10. M´todos de Autentificaci´n e o
1. Deben ser memorizadas. Una contrase˜a jam´s debe ser escrita en un papel, por razones n a obvias. 2. Suficientemente complejas. Una buena contrase˜a debe constar de al menos ocho letras. n Pensemos que si empleamos unicamente seis caracteres alfanum´ricos (n´meros y letras), ´ e u tenemos unicamente unos dos mil millones de posibilidades. Teniendo en cuenta que hay ´ programas para PC capaces de probar m´s de cuarenta mil claves en un segundo, una a clave de estas caracter´ ısticas podr´ ser descubierta en menos de quince horas. ıa 3. Carecer de significado. Una contrase˜a jam´s debe significar nada, puesto que entonces n a aumentar´ la probabilidad de que aparezca en alg´n diccionario. Evitemos los nombres a u propios, en especial aquellos que pertenezcan a lugares o personajes de ficci´n. o 4. F´ciles de recordar. Puesto que una palabra clave ha de ser memorizada, no tiene sentido a emplear contrase˜as dif´ n ıciles de recordar. Para esto podemos seguir reglas como que la palabra se pueda pronunciar en voz alta, o que responda a alg´n acr´nimo m´s o menos u o a complejo. En este punto no debemos olvidar que hay que evitar a toda costa palabras que signifiquen algo. 5. Deben ser modificadas con frecuencia. Hemos de partir de la premisa de que toda palabra clave caer´ tarde o temprano, por lo que ser´ muy recomendable que nuestras contraa a se˜as sean cambiadas peri´dicamente. La frecuencia con la que se produzca el cambio n o depender´ de la complejidad de las claves y del nivel de seguridad que se desee alcanzar. a Y lo m´s importante: ante cualquier sospecha, cambiar todas las claves. a 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. 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. Si bien el compromiso de este tipo de archivos es un grave inconveniente, si las e claves que ´ste almacena hubieran tenido suficiente calidad, hubieran resistido sin problemas e el ataque, permaneciendo a salvo.
10.4
Dinero Electr´nico o
Si hay un concepto contrario al de autentificaci´n, ´ste es falsificaci´n. 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. 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—. Parece bastante razonable o o dedicar pues un breve comentario dentro de esta obra al dinero como objeto de autentificaci´n. o Obviamente, nos referimos al dinero electr´nico. o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.4. Dinero Electr´nico o
121
El dinero f´ ısico es algo bastante engorroso. Es inc´modo de transportar, se desgasta con o facilidad y suele ser susceptible de falsificaci´n. Adem´s debe ser cambiado peri´dicamente o a o debido a la renovaci´n de las monedas. Para sustituirlo est´n las tarjetas de cr´dito y los o a e cheques. El problema que ´stos presentan es que rompen el anonimato de quien los emplea, e por lo que la privacidad queda comprometida. Existen sin embargo protocolos que permiten el intercambio de capital de una forma segura y an´nima. Es lo que denominaremos dinero o electr´nico. 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, y adem´s garantizar´ el anonimato en las o a a transacciones comerciales. Hoy por hoy no existe un unico protocolo aceptado universalmente, ´ aunque s´ muchas propuestas. Por ello haremos unicamente una breve introducci´n acerca de ı ´ o c´mo deber´ ser un protocolo a t´ o ıa ıtulo meramente ilustrativo. Supongamos que queremos enviar un cheque an´nimo. Para ello creamos cien cheques por o la misma cantidad, los metemos cada uno en un sobre y los enviamos al banco. El banco abre noventa y nueve al azar y se asegura de que todos llevan la misma cantidad. Al que queda le pone su sello sin abrirlo y nos lo devuelve, restando la cantidad de nuestra cuenta corriente. Tenemos ahora un cheque validado por el banco, pero del que el banco no sabe nada (la probabilidad de que tenga una cantidad diferente de la que el banco supone es unicamente ´ del uno por ciento). Cuando entreguemos ese cheque y alguien quiera cobrarlo, bastar´ con a que lo lleve al banco, que verificar´ su sello y abonar´ su importe, sin conocer su procedencia. 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. Este las comprueba y o o ıan firma digitalmente una, restando adem´s la cantidad correspondiente en nuestra cuenta. El a destinatario podr´ cobrar la orden de pago cuando quiera. a El problema que surge con el protocolo anterior es que una orden se puede cobrar varias veces. Para evitar esto basta con incluir una cadena aleatoria en cada orden de pago, de forma que sea muy dif´ tener dos ´rdenes con la misma cadena. Cada una de las cien ıcil o o ´rdenes tendr´ pues una cadena de identificaci´n diferente. El banco, cuando pague la cantidad, 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. Ahora cada orden de pago es unica, por lo que el banco puede detectar una orden dupli´ cada, pero no sabe qui´n de los dos ha cometido fraude: el que paga o el que cobra. Existen e mecanismos que permiten saber, cuando la orden de pago aparece duplicada, qui´n de los dos e ha intentado enga˜ar. Si lo ha hecho el cobrador, puede ser localizado sin problemas, pero n ¿y si quien env´ dos veces la misma orden es el pagador?. El protocolo completo de dinero ıa electr´nico hace que la identidad del pagador quede comprometida si env´ dos veces la misma o ıa orden de pago, por lo que podr´ ser capturado. a En cuanto a los diferentes protocolos propuestos hoy en d´ hay que decir que son muy ıa dispares, y que todav´ ninguno de ellos ha sido adoptado como est´ndar. Los clasificaremos ıa a en tres grupos, seg´n el tipo de criptograf´ en que se basen: u ıa
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
122
10. M´todos de Autentificaci´n e o
• Basados en Criptograf´ Sim´trica: NetBill y NetCheque. ıa e • Basados en Criptograf´ Asim´trica: Proyecto CAFE, ECash, NetCash, CyberCash, iKP ıa e de IBM, y Anonymous Credit Cards (ACC) de los Laboratorios AT & Bell. • No basados en Criptograf´ ISN, Compuserve y FIRST VIRTUAL Holdings Incorporaıa: ted. Por desgracia, ninguno de estos protocolos acaba de imponerse, precisamente porque permiten recuperar el anonimato al comprador —y, por tanto, su privacidad—, y dificultan el rastreo de capital. Pero mucho nos tememos que hay una causa mucho m´s sutil y poderosa a a la vez en esta sociedad mercantilizada. Supongamos por un momento que yo poseo una gran empresa que vende todo tipo de productos, y que mis clientes emplean sus tarjetas de cr´dito e para comprar. Yo puedo almacenar un perfil de cada tarjeta de cr´dito con la que se pagan los e productos, incluso desconociendo los datos personales del titular, en el que se reflejen detalladamente sus h´bitos de consumo, lo cual me permite elaborar campa˜as de mercado mucho a n m´s eficientes, 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. Y todo ello sin violar la intimidad de los compradores, puesto que no se almacena ning´n dato personal. u
10.5
Esteganograf´ ıa
La esteganograf´ consiste en almacenar informaci´n camuflada dentro de otra informaci´n. ıa o o Supongamos que queremos enviar un mensaje secreto a un interlocutor que se encuentra en un lugar donde la Criptograf´ est´ prohibida. Podr´ ıa a ıamos, por ejemplo, enviarle una imagen de mapa de bits y utilizar el bit menos significativo del color de cada p´ para guardar cada ıxel bit del mensaje secreto. La imagen ser´ v´lida y un observador externo nunca sospechar´ que a a a en realidad esconde un mensaje secreto. Existen infinidad de m´todos de esteganograf´ s´lo limitados por la imaginaci´n, pero, e ıa, 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, que s´lo sirve para despistar. Podr´ o ıamos definirla entonces como el mecanismo que nos permite entresacar la informaci´n util, reduciendo este problema a una o ´ simple autentificaci´n. o Volvamos al ejemplo de la imagen de mapa de bits. Si el observador externo conociera el algoritmo que hemos empleado para camuflar nuestro mensaje dentro de la imagen, el sistema quedar´ autom´ticamente comprometido. 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. Existe sin embargo una forma m´s elegante de proteger la informaci´n sin emplear a o ning´n algoritmo criptogr´fico. u a Podr´ ıamos generar una gran cantidad de informaci´n irrelevante y subdividirla junto con o el mensaje original en peque˜os paquetes, a los que a˜adir´ n n ıamos un c´digo de identificaci´n o o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
10.6. Certificados X.509
123
(signatura), de forma que s´lo los paquetes que corresponden al mensaje contengan una sigo natura correcta. Si enviamos una secuencia de paquetes en la que aparece el mensaje original entremezclado con la basura, 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. ıa a Sin embargo, el mensaje ha sido enviado como texto plano, sin ser codificado en ning´n mou mento. El ejemplo del mapa de bits no ser´ m´s que un caso particular de este esquema, 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. ıxel a
10.6
Certificados X.509
Un certificado es esencialmente una clave p´blica y un identificador, firmados digitalmente u por una autoridad de certificaci´n, y su utilidad es demostrar que una clave p´blica pertenece a o u un usuario concreto. El formato de certificados X.509 (Recomendaci´n X.509 de CCITT:“The o Directory - Autentication Framework”. 1988) es el m´s com´n y extendido en la actualidad. a u El est´ndar X.509 s´lo define la sintaxis de los certificados, por lo que no est´ atado a a o a ning´n algoritmo en particular, y contempla los siguientes campos: u • Versi´n. o • N´mero de serie. u • Identificador del algoritmo empleado para la firma digital. • Nombre del certificador. • Periodo de validez. • Nombre del sujeto. • Clave p´blica del sujeto. u • Identificador unico de certificador. ´ • Identificador unico de sujeto. ´ • Extensiones. • Firma digital de todo lo anterior generada por el certificador. Estos certificados se estructuran de forma jer´rquica, de tal forma que nosotros podemos a verificar la autenticidad de un certificado comprobando la firma de la autoridad que lo emiti´, o que a su vez tendr´ otro certificado expedido por otra autoridad de rango superior. De esta a forma vamos subiendo en la jerarqu´ hasta llegar al nivel m´s alto, que deber´ estar ocupado ıa a a por un certificador que goce de la confianza de toda la comunidad. Normalmente las claves Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
124
10. M´todos de Autentificaci´n e o
p´blicas de los certificadores de mayor nivel se suelen publicar incluso en papel para que u cualquiera pueda verificarlas. El mecanismo que debe emplearse para conseguir un certificado X.509 es enviar nuestra clave p´blica —¡nunca la privada!— a la autoridad de certificaci´n, despu´s de habernos u o e identificado positivamente frente a ella. Existen autoridades de certificaci´n que, frente a una o solicitud, generan un par llave p´blica-privada y lo env´ al usuario. Hemos de hacer notar u ıan que en este caso, si bien tendremos un certificado v´lido, nuestro certificador podr´ descifrar a a todos nuestros mensajes.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 11
PGP
El nombre PGP responde a las siglas pretty good privacy (privacidad bastante buena), y se trata de un proyecto iniciado a principios de los 90 por Phill Zimmerman. La total ausencia por aquel entonces de herramientas sencillas, potentes y baratas que acercaran la criptograf´ ıa seria al usuario movi´ a su autor a desarrollar una aplicaci´n que llenara este hueco. o o Con el paso de los a˜os, PGP se ha convertido en uno de los mecanismos m´s populares y n a fiables para mantener la seguridad y privacidad en las comunicaciones, especialmente a trav´s e del correo electr´nico, tanto para peque˜os usuarios como para grandes empresas. Hasta la o n fecha la pol´ ıtica de distribuci´n de PGP ha consistido en permitir su uso gratuito para usos o no comerciales y en publicar el c´digo fuente en su integridad, con el objetivo de satisfacer a o los desconfiados y a los curiosos. Actualmente PGP se ha convertido en un est´ndar internacional (RFC 2440), lo cual a est´ dando lugar a la aparici´n de m´ltiples productos PGP, que permiten desde cifrar correo a o u electr´nico hasta a codificar particiones enteras del disco duro (PGPDisk), pasando por la o codificaci´n autom´tica y transparente de todo el tr´fico TCP/IP (PGPnet). o a a
11.1
Fundamentos e Historia de PGP
PGP trabaja con criptograf´ asim´trica, 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. Si uno emplea algoritmos asim´tricos, debe poseer las claves p´blicas de todos sus e u interlocutores, adem´s de la clave privada propia. Con PGP surge el concepto de anillo de a claves (o llavero), 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. 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, 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. Esta facilidad en la gesti´n de claves es una de las causas fundmentales o que han hecho a PGP tan popular. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
126
11. PGP
La historia de PGP se remonta a comienzos de los a˜os 90. La primera versi´n era complen o tamente diferente a los PGP posteriores, adem´s de ser incompatible con ´stos. La familia de a e versiones 2.x.x fue la que alcanz´ una mayor popularidad, y sigue siendo utilizada por mucha o gente en la actualidad. Los PGP 2.x.x emplean unicamente los algoritmos IDEA, RSA y MD5. ´ En alg´n momento una versi´n de PGP atraves´ las fronteras de EE.UU. y naci´ la priu o o o mera versi´n internacional de PGP, denominada PGPi, lo que le supuso a Phill Zimmermann o una investigaci´n de m´s de tres a˜os por parte del FBI, 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. Para la versi´n 5 de PGP se subsan´ este problema exportando una versi´n impresa o o o del c´digo fuente, que luego era reconstruida y compilada en Europa (m´s informaci´n en o a o http://www.pgpi.com). En la actualidad la versi´n internacional de PGP va por su versi´n 6.0.2i, mientras que la o o versi´n comercial ha alcanzado la versi´n 6.5.1. o o
11.2
11.2.1
Estructura de PGP
Codificaci´n de Mensajes o
Como el lector ya sabe, los algoritmos sim´tricos de cifrado son considerablemente m´s e a r´pidos que los asim´tricos. Por esta raz´n PGP cifra primero el mensaje empleando un ala e o goritmo sim´trico (ver figura 11.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. Dicha clave es u extraida convenientemente del anillo de claves p´blicas a partir del identificador suministrado u por el usuario, todo ello de forma transparente, por lo que unicamente debemos preocuparnos ´ de indicar el mensaje a codificar y la lista de identificadores de los destinatarios. 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. o u Cuando se trata de decodificar el mensaje, PGP simplemente busca en la cabecera las claves p´blicas con las que est´ codificado y nos pide una contrase˜a. 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 caso afirmativo, PGP descifrar´ el mensaje. N´tese que siempre a o que queramos hacer uso de una clave privada, habremos de suministrar a PGP la contrase˜a n correspondiente, por lo que si el anillo de claves privadas quedara comprometido, un atacante a´n tendr´ que averiguar nuestra contrase˜a para descifrar nuestros mensajes. No obstante, u ıa n si el anillo de claves privadas quedara comprometido, lo mejor ser´ revocar todas las claves a que tuviera almacenadas y generar otras nuevas. Como puede comprenderse, gran parte de la seguridad de PGP reside en la calidad del generador aleatorio que se emplea para generar las claves de sesi´n, puesto que si alguien logra o predecir la secuencia de claves que estamos usando, podr´ descifrar todos nuestros mensajes a independientemente de los destinatarios a los que vayan dirigidos. Afortunadamente, PGP utiliza un m´todo de generaci´n de n´meros pseudoaleatorios muy seguro —una secuencia e o u Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
11.2. Estructura de PGP
127
Figura 11.1: Codificaci´n de un mensaje PGP o
aleatoria pura es imposible de conseguir, como se dijo en el cap´ ıtulo 6—, y protege criptogr´fia camente la semilla aleatoria que necesita. No obstante, consideraremos sensible al fichero que contiene dicha semilla —normalmente RANDSEED.BIN—, y por lo tanto habremos de evitar que quede expuesto.
11.2.2
Firma Digital
En lo que se refiere a la firma digital, las primeras versiones de PGP obtienen en primer lugar la signatura MD5 (ver secci´n 10.1.3), que posteriormente se codifica empleando la clave o privada RSA correspondiente. Las versiones actuales implementan el algoritmo DSA (secci´n o 10.1.4). La firma digital o signatura puede ser a˜adida al fichero u obtenida en otro fichero aparte. n Esta opci´n es muy util si queremos firmar un fichero ejecutable, por ejemplo. o ´
11.2.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. Obviamente, todas las salidas de PGP (mensajes codificados, claves p´blicas extraidas de alg´n anillo, firmas digitales, etc.) consisten en u u secuencias binarias, que pueden ser almacenadas en archivos. Sin embargo, en la mayor´ de ıa los casos puede interesarnos enviar la informaci´n mediante correo electr´nico, o almacenarla o o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
128 en archivos de texto.
11. PGP
Recordemos que el c´digo ASCII es de 7 bits, eso quiere decir que los caracteres situados o por encima del valor ASCII 127 no est´n definidos, y de hecho diferentes computadoras y a sistemas operativos los interpretan de manera distinta. Tambi´n hay que tener en cuenta e que entre los 128 caracteres ASCII se encuentran muchos que representan c´digos de control, o como el retorno de carro, el fin de fichero, el tabulador, etc. La idea es elegir 64 caracteres imprimibles (que no sean de control) dentro de esos 128 caracteres. Con los 64 caracteres escogidos podremos representar exactamente 6 bits, por lo que una secuencia de tres bytes (24 bits) podr´ representarse mediante cuatro de estos caracteres. Esta cadena de caracteres a resultante se trocea colocando en cada l´ ınea un n´mero razonable de s´ u ımbolos, por ejemplo 72. El resultado es una secuencia de caracteres que pueden ser tratados como texto est´ndar a y, por tanto, manipulados en cualquier editor de texto y, por supuesto, enviados por correo electr´nico. o Como ejemplo incluyo mi clave p´blica PGP (firmada por los chicos de Kript´polis) en u o formato ASCII: -----BEGIN PGP PUBLIC KEY BLOCK----Version: PGPfreeware 6.0.2i mQGiBDRkk6kRBADKYHrNnFeXlggr14IVGy6FudLG2Cd1wb3yKOaNnodyjZa0a5oi Ls9jDfDfEdq8K+W6QBLv06w7oVFPNMYsU+ufb0pa/bHWq6IrHxKkTVH4o4PUYTmH W0jfGjoXEtAUZ0vp9wYR0Yqi7wXO3L/N5KuVNjLj7rXOT7rOmHsOjmY1cQCg//2w OcyAnkaDCODFNif/VdowntcD/j5midszzU6M7BWmeDJoqEEGzSuxfmRSNyNZe6/6 5k8TFXIVpB0vnxwsZSh0POSlNgz1cmX6VbEmmUXoYsMRfq7iXHSAZ3DLB333yR2b QUbkrH5WZF75G2vvTO7rKS5KtmROJ8E+vX/py6PGz1f3tBZJ94KwM787g6j43F4X IYTAA/9L5GZzClHOGt01BtZkioH5YoHnDGHKC8mMXcykXA5KdJvl+9jGz3InUHiG 04StaMxMcDcWLzL5FVLz3LBzlOXGs7jikgH3BYBI3p7dIExfRADucDHyKL/CpIl5 zqHBI+5bxY3Tysu3UlA1UkQloJMsSInlkkjQhwihNYsj8Avr9LQsTWFudWVsIEx1 Y2VuYSBMb3BleiA8bWx1Y2VuYUBhcG9sby51amFlbi5lcz6JAEsEEBECAAsFAjRk k6kECwMBAgAKCRBIslFhaatXhPnAAJsEyj9JCmn043BtdBprjIWcJuXtrQCg9bF7 21L0JLqEU6M6zzmPT+hmkVyJAD8DBRA0cv9B4JPOvVv6kF8RAkTnAKDPxk/I+DSb iHaVpmtXQJpTT9gXxQCfe9BiiiWXte5XLLi6BluP60pcA5SJAD8DBRA0l/L8m7gH ree7aT8RApE+AKC1zW+YjhCFeoZ6CDGEHSONoFbUvwCgjX5zkCuh79i1yC9wCSCU 2wiY+AGJAEYEEBECAAYFAjd5CskACgkQ+LhibI3yqfOpIgCgnnpqwmHiy+b8XJa/ 58TeO9mpJWkAn3Qh0Lm65cgfvR/jjlO9/Eq3R4S8tCZNYW51ZWwgTHVjZW5hIExv cGV6IDxtbHVjZW5hQHVqYWVuLmVzPokASwQQEQIACwUCNNrgWgQLAwECAAoJEEiy UWFpq1eE73IAn28jVBaKEgoxRriDdLy3cRln1JfGAJoCN+cfHwprLKWbpdeOOwLq IkoGZokAPwMFEDTa5h2buAet57tpPxEC8K4AoOTP5I1fJFN6KtZdmLtENKSRrKfx AJ4gwl5R1MzpeTFiysWKab/PsU5GwokARgQQEQIABgUCN3kK3wAKCRD4uGJsjfKp 8wNbAJ4lUBelf+oAVT6tCHbdWK7bsuPmkACg07slb31NbUTcv1PPRYczJgVUS+O5 Ag0ENGSUXxAIAMP4hm01vTmk8n1eETWXYNR0QxhMmrGXRDwjPYoT5H70MiuOJx9d zrHmopCGKMqAPwRYlnkzXB72/+Cjrgithpzv6f+qIRXADiuWpxMoBq4VFLbVMPJG GdK1ARSCZ7q7Q3McGsLoGzxb96gPrJ++equ11MY507aaLvpVso+lZDfxL62Q3/RO Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
11.2. Estructura de PGP 4pD1KkbiLB8yeT1MMqVrV2ioNh3wpSpGZWBas3TwwrLK1zn42Q8dquhknpOkoI+T 4d1+KKaFyMegn5qeBC2Jr3Zpw7uKHugOpf1yEPDTYY/hsXbToE6vECg0Vpdn+jN6 UID52MwR6AyKp6/4nvIyuLHg3s0T7S9f05UAAgIH/iV8NN0NaKSwQGjv1mZXLNko hM6r/oApBVvb5NmyW0mOD0B8Ii3NB8HDxA4u4yLvUMSX2XB5GsfF4F5Ar3xSRRZq oKmqyDs16fwYImMpmuhlQJl3COpSPWUoMz772jRRntP+0emK6Hnu5yf/UcsRfPUi PvubWWPv26S7igG51/UgNzxJ1Fohw9mod3At1Vza7rN5bCgOzBId6vcZ6Bf/Ge78 JXaylMi2XWg6kjO4rMiORXtD1p/5rVuPu/6426GmOzxiQgKrZ/HBw7wckWAmfJC0 ZaG0B8y/FzdX7HXwb+lgzXkvSKgQl3DzBO0dtcMrbItljA52C+60FlPwoC6hcdiJ AD8DBRg0ZJRfSLJRYWmrV4QRAvckAJ9N++HoDvQD03ZJudEGaS25EGn02wCfZlBu mDR5p5VG7N6MDZAzuV2vPnc= =hXLK -----END PGP PUBLIC KEY BLOCK-----
129
Como puede verse, los unicos s´ ´ ımbolos empleados son las letras may´sculas y min´sculas, u u los n´meros, y los signos ‘/’y ‘+’; el resto de s´ u ımbolos y caracteres de control simplemente ser´ ignorado. Cualquiera podr´ copiar esta clave p´blica a mano (¡!) o emplear un OCR para a ıa u introducirla en su anillo de claves correspondiente, aunque es mejor descargarla a trav´s de e Internet.
11.2.4
Gesti´n de Claves o
PGP, como ya se ha dicho, almacena las claves en unas estructuras denominadas anillos. Un anillo no es m´s que una colecci´n de claves, almacenadas en un fichero. Cada usuaa o rio tendr´ dos anillos, uno para las claves p´blicas (PUBRING.PKR) y otro para las privadas a u (SECRING.SKR). Cada una de las claves, adem´s de la secuencia binaria correspondiente para el algoritmo a concreto donde se emplee, posee una serie de datos, como son el identificador del usuario que la emiti´, la fecha de expiraci´n, la versi´n de PGP con que fue generada, y la denominada o o o huella digital (fingerprint). Este ultimo campo es bastante util, pues se trata de una secuencia ´ ´ hexadecimal lo suficientemente larga como para que sea unica, y lo suficientemente corta como ´ para que pueda ser escrita en un papel, o leida de viva voz. La huella digital se emplea para asegurar la autenticidad de una clave. Por ejemplo, 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, bastar´ con que llamara ıa por tel´fono al autor, y le pididera que le leyera la su huella digital. e
11.2.5
Distribuci´n de Claves y Redes de Confianza o
PGP, como cualquier sistema basado en clave p´blica, es susceptible a ataques de intermeu diario (secci´n 9.2.2). Esto nos obliga a establecer mecanismos para asegurarnos de que una o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
130
11. PGP
clave procede realmente de quien nosotros creemos. Uno de los mecanismos que permite esto es la huella digital, pero no el unico. ´ PGP permite a un usuario firmar claves, y de esta forma podremos confiar en la autenticidad de una clave siempre que ´sta venga firmada por una persona de confianza. Hay que e distinguir entonces dos tipos de confianza: aquella que nos permite creer en la validez de una clave, y aquella que nos permite fiarnos de una persona como certificador de claves. La primera se puede calcular autom´ticamente, en funci´n de que las firmas que contenga una clave a o pertenezcan a personas de confianza, pero la segunda ha de ser establecida manualmente. No olvidemos que el hecho de que una clave sea aut´ntica no nos dice nada acerca de la persona e que la emiti´. Por ejemplo, yo puedo tener la seguridad de que una clave pertenece a una pero sona, pero esa persona puede dedicarse a firmar todas las claves que le llegan, sin asegurarse de su autenticidad, por lo que en ning´n caso merecer´ nuestra confianza. u a Cuando una clave queda comprometida, puede ser revocada por su autor. 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. Para generarlo es necesaria la clave privada, 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. Afortunadamente, las ultimas versiones de PGP permiten nombrar revocadores de claves, que ´ son usuarios capaces de invalidar nuestra propia clave, sin hacer uso de la llave privada.
11.2.6
Otros PGP
La r´pida popularizaci´n de PGP entre ciertos sectores de la comunidad de Internet, y la a o disponibilidad del c´digo fuente, han hecho posible la proliferaci´n de variantes m´s o menos o o a complejas de PGP. Muchas de ellas simplemente implementaban claves de mayor longitud (como PGPg), y otras corresponden a proyectos tan ambiciosos como GNU-PG (GNU Privacy Guard), que se basa unicamente en algoritmos de libre distribuci´n. ´ o
11.3
Vulnerabilidades de PGP
Seg´n todo lo dicho hasta ahora, parece claro que PGP proporciona un nivel de seguriu dad que nada tiene que envidiar a cualquier otro sistema criptogr´fico jam´s desarrollado. a a ¿Qu´ sentido tiene, pues, hablar de sus vulnerabilidades, si ´stas parecen no existir? e e Como cualquier herramienta, PGP proporcionar´ un gran rendimiento si se emplea correca tamente, pero su uso inadecuado podr´ convertirlo en una protecci´n totalmente in´til. Es ıa o u 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. a • Escoger contrase˜as adecuadas. Todo lo comentado en la secci´n 10.3 es v´lido para n o a PGP. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
11.3. Vulnerabilidades de PGP
131
• Proteger adecuadamente los archivos sensibles. Estos archivos ser´n, l´gicamente, nuesa o tros llaveros (anillos de claves) y el fichero que alberga la semilla aleatoria. Esta protecci´n debe llevarse a cabo tanto frente al acceso de posibles curiosos, 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!). a a u • Emitir revocaciones de nuestras claves al generarlas y guardarlas en lugar seguro. Ser´n a el unico mecanismo v´lido para revocar una clave en caso de p´rdida del anillo priva´ a e do. Afortunadamente, la versi´n 6 de PGP permite nombrar revocadores para nuestras o claves, de forma que ´stos podr´n invalidarla en cualquier momento sin necesidad de e a nuestra clave privada. • Firmar s´lo las claves de cuya autenticidad estemos seguros. Es la unica manera de o ´ que las redes de confianza puedan funcionar, ya que si todos firm´ramos las claves a alegremente, podr´ ıamos estar certificando claves falsas.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
132
11. PGP
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Parte V
Seguridad en Redes de Computadores
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 12
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. Con tal nivel de o a a interconexi´n, los virus y los hackers campan a sus anchas, aprovechando las deficientes medio das de seguridad tomadas por administradores y usuarios a los que esta nueva revoluci´n ha o cogido por sorpresa. Las ventajas de las redes en Inform´tica son evidentes, pero muchas veces se minusvaloran a ciertos riesgos, circunstancia que a menudo pone en peligro la seguridad de los sistemas. En unos pocos a˜os la inmensa mayor´ de las empresas operar´n a trav´s de la Red, 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. o
12.1
Importancia de las Redes
La Inform´tica es la ciencia del tratamiento autom´tico de la informaci´n, pero tanto o m´s a a o a importante que su procesamiento y almacenamiento es la capacidad para poder transmitirla de forma eficiente. La informaci´n tiene un tiempo de vida cada vez menor y la rapidez con o la que pueda viajar es algo crucial. 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. En este sentido las redes de computadoras n desempe˜an un papel fundamental en la Inform´tica moderna. 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. Hemos de depositar nuestra confianza en la Criptograf´ para garantizar la confidencialidad ıa en las comunicaciones. Uno de los mayores obst´culos que han tenido que superarse para que las redes pudieran a desarrollarse, ha sido encontrar lenguajes comunes para que computadoras de diferentes tipos Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
136
12. Seguridad en Redes
pudieran entenderse. En este sentido el protocolo TCP/IP se ha erigido como est´ndar de facto a en la industria de la Inform´tica. En general todas las redes de computadoras se construyen a conceptualmente sobre diferentes capas de abstracci´n, que desarrollan tareas distintas y proo porcionan un protocolo unificado a las capas superiores. La Criptograf´ podr´ entonces ser ıa a empleada en diferentes niveles de abstracci´n. Por ejemplo, podemos codificar un fichero antes o de transmitirlo por la red, lo cual corresponder´ al nivel de abstracci´n mayor, o podemos ıa o enviarlo sin codificar, pero a trav´s de un protocolo de bajo nivel que cifre cada uno de los e paquetes de informaci´n en los que se va a subdividir el fichero en el momento de transmitirlo. o En funci´n del tipo de red con el que trabajemos nos enfrentaremos a diferentes clases de o riesgos, lo cual nos conducir´ inevitablemente a medidas de diferente naturaleza para garana tizar la seguridad en las comunicaciones. En este cap´ ıtulo haremos una breve reflexi´n sobre o algunos de los casos que pueden darse, sin tratar de ser exhaustivos —ser´ imposible, dada ıa la inmensa cantidad de posibilidades—. Nuestro objetivo se centrar´ en aportar una serie a de directrices que nos permitan analizar cada situaci´n y establecer una correcta pol´ o ıtica de protecci´n de la informaci´n. o o Ya que no existe una soluci´n universal para proteger una red, en la mayor´ de los casos la o ıa mejor estrategia suele consistir en tratar de colarnos nosotros mismos para poner de manifiesto y corregir posteriormente los agujeros de seguridad que siempre encontraremos. Esta estrategia se emplea cada vez con mayor frecuencia, y en algunos casos hasta se contrata a hackers para que impartan cursillos de seguridad a los responsables de las redes de las empresas.
12.2
Redes Internas
El caso m´s sencillo de red que nos podemos encontrar es local (LAN), con todos los coma putadores interconectados a trav´s de unos cables de los que tambi´n se es propietario. Esta e e ultima circunstancia nos va a permitir ejercer un control total sobre el canal de comunicacio´ nes, pudiendo protegerlo f´ ısicamente, lo cual evita pr´cticamente cualquier riesgo de falta de a privacidad en 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, que pueden ser minimizados llevando a cabo una adecuada pol´ ıtica de copias de respaldo, que deber´n ser confeccionadas peri´dicamente, almacenadas en un lugar a o diferente de aquel donde se encuentra la red, y protegidas adecuadamente contra incendios y accesos no deseados. Otro riesgo que se da en las redes locales, a menudo infravalorado, es el que viene del uso inadecuado del sistema por parte de los propios usuarios. Ya sea por mala fe o descuido, un usuario con demasiados privilegios puede destruir informaci´n, por lo que estos permisos o deben ser asignados con mucho cuidado por parte de los administradores. Esta circunstancia es muy importante, ya que, sobre todo en peque˜as empresas, el due˜o muchas veces cree que n n debe conocer la clave del administrador, y luego es incapaz de resistir la tentaci´n de jugar o con ella, poniendo en serio peligro la integridad del sistema y entorpeciendo el trabajo del superusuario. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
12.3. Redes Externas
137
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. Pi´nsese en un edificio corporativo con un acceso no muy a e restringido, por ejemplo un aulario de una universidad, que posee conexiones ethernet en todas sus dependencias. En principio, nada impedir´ a una persona conectar un ordenador 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, a a o suplantar a cualquier otro computador. En estos casos ser´ conveniente llevar a cabo alg´n a u tipo de control, como la deshabilitaci´n din´mica de las conexiones de red no utilizadas en cada o a momento, la verificaci´n del identificador unico de la tarjeta de red concreta que debe estar o ´ conectada en cada punto, o la adopci´n de protocolos de autentificaci´n de las computadoras o o dentro de la red, como por ejemplo Kerberos1 .
12.3
Redes Externas
Consideraremos red externa a aquella que en todo o en parte se apoye en un canal f´ ısico de comunicaci´n ajeno. Existir´n redes externas de muy diferentes tipos, pero todas ellas tienen o a en com´n la caracter´ u ıstica de que que en alg´n momento la informaci´n viaja por canales sobre u o los que no se tiene ning´n tipo de control. Todas las t´cnicas que nos van a permitir llevar a u e cabo protecciones efectivas de los datos deber´n hacer uso necesariamente de la Criptograf´ a ıa. Para identificar los posibles riesgos que presentar´ una red externa, hemos de fijarnos en a cuestiones tan dispares como el sistema operativo que corre sobre los ordenadores o el tipo de acceso que los usuarios legales del sistema pueden llevar a cabo. Una de las 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 el a exterior). Los cortafuegos son herramientas muy poderosas si se emplean adecuadamente, pero pueden entra˜ar ciertos riesgos si se usan mal. Por ejemplo, existen muchos lugares donde el n cortafuegos est´ conectado a la red local y ´sta a su vez a la red externa (ver figura 12.1, caso a e A). Esta configuraci´n es la m´s sencilla y barata, puesto que s´lo necesitamos una tarjeta o a o de red en el cortafuegos, pero no impedir´ a un computador situado en el exterior acceder ıa directamente a los de la red local. La configuraci´n correcta se puede apreciar en el caso B de o la figura 12.1, donde la red externa (y todos sus peligros) est´ separada f´ a ıscamente de la red local. Podemos distinguir dos grandes tipos de peligros potenciales que pueden comprometer nuestra informaci´n desde una red externa: o • Ataques indiscriminados. Suelen ser los m´s frecuentes, y tambi´n los menos da˜inos. a e n Dentro de esta categor´ podemos incluir los troyanos y los virus, programas dise˜ados ıa n normalmente para colarse en cualquier sistema y producir efectos de lo m´s variopinto. a Precisamente por su car´cter general, existen programas espec´ a ıficos que nos protegen de
1 Kerberos es uno de los protocolos de autentificaci´n que forma parte del proyecto Athena, en el MIT o (Instituto Tecnol´gico de Massachusetts), y permite a un computador identificarse positivamente dentro de o una red.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
138
12. Seguridad en Redes
Figura 12.1: A: Configuraci´n incorrecta, el cortafuegos tiene una unica tarjeta de red, y los o ´ terminales est´n conectados f´ a ısicamente a la red externa. B: Configuraci´n correcta, el cortao fuegos dispone de dos tarjetas de red y el resto de las computadoras est´ aislado f´ a ısicamente de la red externa.
ellos, como los antivirus. Conviene disponer de un buen antivirus y actualizarlo peri´dio camente. • Ataques a medida. Mucho menos comunes que los anteriores, y tambi´n m´s peligrosos, e a son los ataques que generalmente llevan a cabo los hackers. En estos casos las v´ ıctimas son casi siempre grandes corporaciones, y muchas veces la informaci´n ni siquiera es o destruida o comprometida, puesto que los hackers s´lo persiguen enfrentarse al reto que o supone para ellos entrar en un sistema grande. El problema es que para borrar sus huellas y dificultar el rastreo de sus acciones, suelen atacar en primer lugar sistemas peque˜os n para desde ellos cometer sus travesuras, lo cual convierte a cualquier sistema en potencial v´ ıctima de estos personajes. Lo que ocurre en la mayor´ de los casos es que su necesidad ıa de emplear sistemas peque˜os como plataforma les obliga a no da˜arlos, para no dejar n n ning´n tipo de rastro que permita localizarlos posteriormente. u
En cuanto a la protecci´n de las comunicaciones en s´ baste decir que existen protocoo ı, los de comunicaci´n segura de bajo nivel, como el SSL (Secure Sockets Layer), que permite o establecer comunicaciones seguras a trav´s de Internet, haciendo uso de algoritmos sim´trie e cos y asim´tricos simult´neamente. Este protocolo es transparente y puede correr bajo otros e a protocolos ampliamente conocidos, como POP3, TELNET, FTP, HTTP, etc. De hecho, gran cantidad de aplicaciones emplean protocolos de este tipo en sus comunicaciones. Desgraciadamente, las restrictivas leyes norteamericanas en cuanto a la exportaci´n de material cripo togr´fico hacen que la gran mayor´ de las aplicaciones seguras que se venden fuera de los a ıa EE.UU. y Canad´ est´n en realidad debilitadas, por lo que hemos de informarnos muy bien a e antes de depositar nuestra confianza en ellas. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
12.4. Conclusiones
139
12.3.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. Obviamente, 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, puesto que el tr´fico que nosotros vemos como interno a o a nuestra red, en realidad viaja por Internet.
12.4
Conclusiones
Despu´s de todo lo dicho parece una locura conectarse a una red externa, y ciertamente e lo es si no se toman las precauciones adecuadas. La cantidad de posibles riesgos es enorme, y con toda seguridad en el futuro aparecer´n nuevos peligros, pero no olvidemos que ante todo a debemos ser racionales. Si bien puede ocurrir que un equipo de hackers trate de entrar en nuestro sistema, esta posibilidad suele ser remota en la mayor´ de los casos, debido precisaıa mente al escaso inter´s que va a despertar en ellos penetrar en una red peque˜a. Por otro lado e n hay que tener en cuenta que cierto tipo de ataques requiere fuertes inversiones, por lo que si nuestra informaci´n no resulta realmente valiosa para el atacante, podemos considerarnos a o salvo. 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 dem´s, parece claro que las ventajas que nos o a proporcionar´ estar en la Red son claramente mayores que los inconvenientes, pero nunca se a debe bajar la guardia. En general, conviene estar preparado para el peor de los casos, que suele ser la p´rdida e de la informaci´n, casi siempre debida a fallos f´ o ısicos o a la presencia de virus. En cuanto al resto de posibilidades, ser´ suficiente con la adopci´n de protocolos seguros, adem´s de a o a llevar un registro de todas las operaciones que tienen lugar dentro del sistema, registro que deber´ ser controlado peri´dicamente para detectar posibles anomal´ Otra pr´ctica bastante a o ıas. a recomendable consiste en mantenerse al d´ sobre los fallos de seguridad detectados en los ıa programas y sistemas operativos que empleemos, as´ como de los sucesivos parches que las ı empresas de software suelen distribuir peri´dicamente. o
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
140
12. Seguridad en Redes
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 13
Hackers
Se consideran a s´ mismos una casta, y su filosof´ de la vida es casi una religi´n. Delinı ıa o cuentes para unos, h´roes para otros, multitud de leyendas circulan sobre estos personajes. e Al igual que en otras ´pocas hab´ alquimistas, capaces de dominar los oscuros poderes de e ıa la materia, hoy los hackers est´n considerados por muchos como los nigromantes de la era a tecnol´gica. Nos guste o no, los hackers son ya un mito en la cultura de finales del siglo XX. o No debemos confundir el t´rmino hacker con el de pirata inform´tico, ya que ´ste ultimo es e a e ´ un concepto m´s amplio. Aquellos que conozcan la cultura cyberpunk, sabr´n que adem´s de a a a hackers hay otros grupos, tales como los crackers, que se dedican a la copia ilegal de software, y los phreakers, que dirigen sus esfuerzos hacia las compa˜´ telef´nicas. Cada uno de ellos nıas o se especializa en alg´n tipo de actividad —curiosamente, las actividades de los crackers y u phreakers suelen ser siempre delictivas, mientras que las de los hackers en algunos casos no lo son—. Por supuesto, todos ellos justifican sus formas de pensar y actuar con argumentos de lo m´s variopinto, que tienen como punto com´n la lucha contra el sistema establecido. a u Peri´dicamente los medios de comunicaci´n nos sorprenden con alguna nueva haza˜a de o o n estos personajes, contribuyendo, junto con la industria cinematogr´fica, al crecimiento y proa pagaci´n de su leyenda. o
13.1
El Hielo y los Vaqueros
Un hacker es un individuo que se dedica a infiltrarse en sistemas inform´ticos. Su actividad, a tan antigua como las redes de ordenadores, conoce diversas variantes. Desde aquellos que no tratan de hacer ning´n da˜o, y que consideran estas actuaciones como un excitante reto a u n sus inteligencias, hasta aquellos cuyo unico objetivo es sabotear una red, llev´ndose toda la ´ a informaci´n que posea para luego venderla, podemos decir que hay hackers para todos los o gustos. En 1983, William Gibson escribi´ “Neuromante”, pieza clave de la literatura de Ciencia o Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
142
13. Hackers
Ficci´n moderna y referencia obligada cuando se habla de cultura cyberpunk. 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, Intrusion Countermeasures Electronics— a trav´s a e e del ciberespacio, —tambi´n denominado matriz en el libro, o si se prefiere, matrix—. e Huelga decir que la magia y lo esot´rico nada tienen que ver con estos sujetos. En general e son individuos bastante ingeniosos y bien informados que se dedican a buscar y explotar fallos m´s o menos sutiles en los sistemas de seguridad. Puesto que cada sistema se puede decir que a es unico, los buenos vaqueros suelen elaborar ataques a medida, poniendo a prueba su profundo ´ conocimiento sobre las redes de ordenadores. Es pr´cticamente imposible protegerse al cien a por cien de un ataque de esta naturaleza, y debemos pensar que si, por alguna raz´n, nos o convertimos en objetivo de un hacker lo suficientemente bueno, tarde o temprano acabaremos cayendo. Tambi´n hay que decir que aunque muchos act´an solos, los vaqueros suelen formar grupos, 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, no conoci´ndose entre ellos. Suelen dominar bastante bien el uso de la Criptograf´ y e ıa, frecuentemente la emplean en sus comunicaciones. Alguno podr´ pensar que este es un buen ıa argumento para imponer un control gubernamental sobre el uso privado de la Criptograf´ ıa, pero en ese caso tambi´n deber´ e ıamos permitir que la polic´ entre en nuestras casas, lea ıa nuestras cartas y escuche nuestras conversaciones telef´nicas sin nuestro consentimiento, para o evitar que cometamos delitos. Pero no todo va a ser negativo. La gente que instala un dispositivo antirrobo en su casa sabe que puede ser burlado por un ladr´n altamente especializado, pero a´n as´ lo considera o u ı seguro, ya que un ladr´n profesional asumir´ el riesgo s´lo si la casa despierta el suficiente o a o inter´s. As´ pues, basta con tomar unas medidas de seguridad proporcionales al valor que e ı posea el sistema que queremos proteger. El problema es que en muchos casos, por simple desconocimiento, los sistemas est´n mal protegidos, hasta tal punto que es como si dej´ramos a a abierta la puerta de nuestra casa. En esos casos, cualquiera puede entrar a fisgonear. Por desgracia, las computadoras son tan heterog´neas que no existe un conjunto de medidas e universal que nos permita protegernos de estos chicos traviesos. Intentaremos no obstante dar unas pautas sobre las t´cnicas que m´s emplean para que as´ cada cual pueda saber qu´ medidas e a ı e debe tomar en su caso concreto.
13.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, ni siquiera que sean las mejores, pero servir´n para hacernos ´ e a una idea del modo de actuar de estos individuos. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
13.2. 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 NTTP (News) Login Shell Spooler
143
Tabla 13.1: Algunos puertos TCP/IP.
13.2.1
Protocolo TCP/IP. Demonios y Puertos
TCP/IP es el protocolo que se ha impuesto como norma universal de facto en las comunicaciones. Internet se basa en dicho protocolo, y aunque existan otros para redes locales, los sistemas operativos actuales permiten su coexistencia, por lo que podemos decir sin temor a equivocarnos que pr´cticamente cualquier m´quina conectada a Internet entiende el protocolo a a TCP/IP. Un computador con TCP/IP puede establecer m´ltiples comunicaciones simult´neamente, u a a trav´s de los denominados puertos. Un puerto se comporta como los canales de un televisor: e a trav´s de un unico cable llegan m´ltiples emisiones, de las cuales podemos escoger cu´l ver e ´ u a con solo seleccionar el canal correspondiente. Existen puertos dedicados a tareas concretas. As´ por ejemplo el puerto 80 se emplea para ı las p´ginas web, y el 21 para la transferencia de ficheros. En la tabla 13.1 podemos ver algunos a de los m´s usuales, aunque existen muchos m´s. Hay que decir que esta tabla es orientativa: a a nada nos impedir´ situar nuestro demonio de FTP en el puerto 300, por ejemplo, aunque eso ıa obligar´ a quienes quisieran establecer una comunicaci´n FTP con nosotros a emplear dicho ıa o puerto. De hecho, ciertos servidores de acceso restringido emplean puertos no normalizados para evitar visitantes molestos. Un demonio (daemon1 , en ingl´s) es un programa que escucha a trav´s de un puerto a la e e espera de establecer comunicaciones. As´ por ejemplo, un servidor de p´ginas web tiene un ı, a demonio asociado al puerto 80, esperando solicitudes de conexi´n. Cuando nosotros cargamos o una p´gina en el navegador estamos enviando una solicitud al puerto 80 del servidor, que a responde con la p´gina correspondiente. Si el servidor web no estuviera ejecutando el demonio a
En realidad, el concepto de daemon es mucho m´s amplio, y se refiere a cualquier programa que, cuando a se ejecuta, entra en un estado de espera hasta que alg´n suceso lo activa. u
1
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
144
13. Hackers
o ´ste estuviera escuchando en otro puerto, no podr´ e ıamos consultar la p´gina que buscamos. a Una vez que se establece la comunicaci´n en un puerto, los ordenadores hablan entre ellos, o usando diferentes idiomas, como por ejemplo HTTP para las p´ginas web, FTP para las a transferencias de ficheros, etc. Ahora vamos a ver un ejemplo utilizando la orden telnet de UNIX y el protocolo SMTP de env´ de correos electr´nicos, que se ubica en el puerto 25: ıo o usuario> telnet 1.2.3.4 25 Trying 1.2.3.4... Connected to 1.2.3.4. Escape character is ’^]’. 220 host.dominio.pais ESMTP Sendmail 8.9.3; Fri, 10 Sep 1999 16:16:55 A partir de este momento el ordenador con IP2 1.2.3.4 (host.dominio.pais) est´ esperando a nuestros mensajes a trav´s de su puerto 25. Si escribimos e helo mlucena el demonio responder´ algo parecido a a 250 host.dominio.pais Hello mlucena@host [3.2.5.6], pleased to meet you Puesto que el demonio es un programa, puede que contenga errores, o que simplemente haya situaciones en las que no funcione adecuadamente. En los sistemas tipo UNIX, uno puede enviar mensajes extra˜os para los que el demonio no se encuentra preparado, y as´ lograr n ı que aborte su ejecuci´n, dej´ndonos una consola de texto con la que podremos tomar el o a control del sistema. En general, los fabricantes de software suelen actualizar peri´dicamente o sus programas, subsanando paulatinamente los errores que ´stos puedan contener, por lo que e es de una importancia crucial que los demonios instalados en nuestro sistema sean fiables y se encuentren al d´ Un fallo muy famoso y que dio mucho que hablar estaba en el demonio que ıa. escuchaba las comunicaciones SMB en las primeras versiones de Windows 95. Si uno enviaba un mensaje concreto a ese puerto pod´ bloquear de forma instant´nea el ordenador de su ıa a v´ ıctima, y para ello s´lo ten´ que conocer su n´mero de IP. o ıa u En general, el hacker se dedica a tratar de averiguar en qu´ puertos est´ escuchando el ordee a nador objetivo, y luego a localizar y explotar posibles fallos en los demonios correspondientes, para tomar el control del sistema. Muchas veces nuestro ordenador puede que est´ escuchando e alg´n puerto sin que nosotros lo sepamos. Existe un troyano (ver cap´ u ıtulo 14) que corre sobre los sistemas Windows, denominado Back Orifice, que escucha un puerto a la espera de que el ordenador atacante tome el control de nuestra m´quina. a
El IP es un conjunto de cuatro n´meros, separados por puntos, que identifica un´ u ıvocamente a un ordenador conectado a Internet.
2
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
13.2. C´mo act´a un Hacker o u
145
Por desgracia, existen programas cuya configuraci´n por defecto no es lo suficientemente o conservadora, y que habilitan ciertas caracter´ ısticas a no ser que se les diga lo contrario, abriendo inevitablemente agujeros de seguridad. A modo de ejemplo, citaremos el problema que surgi´ en el verano de 1998, cuando se descubri´ que era posible descargar, si el servidor o o corr´ bajo Windows NT, el c´digo fuente de algunas p´ginas web de tipo ASP de una manera ıa o a muy simple, a no ser que el administrador tomara ciertas precauciones. Afortunadamente, el problema se solucion´ con rapidez, y gracias a estos peque˜os sustos cada vez se pone m´s o n a cuidado a la hora de elaborar software sensible.
13.2.2
Suplantando Usuarios
Lo ideal para entrar en un sistema es hacerlo como administrador, lo cual proporciona suficientes privilegios como para alterar cualquier cosa sin ning´n problema. A veces ocurre u que el ordenador v´ ıctima no presenta vulnerabilidades en los puertos que escucha, por lo que debemos buscar otros medios para entrar en ´l. e La mayor´ de los sistemas operativos permiten la existencia de usuarios gen´ricos, llaıa e mados invitados, que no necesitan contrase˜a para entrar en el sistema y que tienen unos n privilegios de acceso bastante limitados. En muchos casos esos privilegios pueden llegar a ser suficientes como para perpetrar un ataque con garant´ de ´xito, debido a que un invitado ıas e puede acceder al fichero que almacena las contrase˜as. Afortunadamente, esta circunstancia n ha sido subsanada en casi todos los sistemas operativos, pero ha de ser tenida en cuenta, para evitar desagradables sorpresas. Como ya indicamos en la secci´n 10.3.1, si un usuario posee el fichero de contrase˜as, o n puede llevar a cabo un ataque con diccionario, y eventualmente llegar a averiguar las claves de cada usuario, lo cual le permitir´ entrar en el sistema. Este tipo de ataque se volver´ in´til a a u si los usuarios escogen contrase˜as adecuadas, del tipo que se propone en esta obra. n Una posibilidad bastante inquietante es la de, una vez que se han ganado suficientes privilegios, sustituir el fichero de contrase˜as por otro elaborado por el hacker, lo cual dejar´ sin n ıa acceso a todos los usuarios leg´ ıtimos del sistema, ¡incluidos los administradores!. En tal caso habr´ que desconectar el sistema de la red y restaurarlo manualmente, con el consiguiente ıa coste tanto de tiempo como de dinero.
13.2.3
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. Un vaquero que se precie debe eliminar todas las entradas de dicho registro relativas a su paso por el sistema, si no quiere que un polic´ llame a su puerta a los pocos d´ . . ıa ıas. Adem´s de tratar de borrar todas sus huellas, un hacker suele organizar sus ataques de a forma que si queda alg´n rastro de su paso por el sistema elegido, ´ste sea realmente confuso. u e Para ello nada mejor que emplear otros ordenadores m´s modestos como plataforma para a Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
146
13. Hackers
atacar al aut´ntico objetivo. Normalmente los vaqueros buscan ordenadores poco protegidos, e entran en ellos, y control´ndolos remotamente intentan encontrar las debilidades del objetivo a real. Esta estrategia har´ que en los registros del sistema atacado aparezcan datos sospechosos a acerca del ordenador intermedio, pero pocas veces del aut´ntico enemigo. 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
13.2.4
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. 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 el env´ de alg´n fichero propio al atacante, todo ello de forma inadvertida, por ıo u supuesto. El atacante s´lo tiene que esperar a que los incautos vayan cayendo. . . o Desgraciadamente, cada versi´n de los navegadores m´s populares presenta nuevos probleo a mas de este tipo, si bien suelen ser identificados —que no siempre resueltos— con bastante celeridad, en gran parte gracias al excelente trabajo de Juan Carlos Garc´ Cuartango. Espeıa remos que poco a poco esta tendencia se vaya corrigiendo.
13.3
C´mo Protegerse del Ataque de los Hackers o
Despu´s de haber le´ las anteriores secciones, parece una aut´ntica locura tener ordenae ıdo e dores conectados a Internet. Nada m´s lejos de la realidad. As´ como hay muchas formas de a ı poder entrar fraudulentamente en un ordenador, tambi´n hay muchas formas de protegerse e razonablemente contra estos ataques. Vamos a dar una serie de consejos pr´cticos que, si no a nos protegen totalmente, ponen las cosas bastante dif´ ıciles a los hackers. No obstante, lo mejor es conocer bien nuestro propio sistema para poder adaptar estas medidas a nuestro caso concreto. • S´lo la Informaci´n Necesaria. No almacene informaci´n sensible en su ordenador si ´sta o o o e no necesita ser consultada desde el exterior. ¿Por qu´ colocar un premio extra para los e hackers? • Instalaci´n de Demonios. Cuando instale cualquier software que incluya alg´n demonio, o u aseg´rese de que se trata de la versi´n m´s reciente y actualizada, que deber´ ser la u o a ıa m´s segura. Desconf´ de las versiones beta, a no ser que sepa muy bien lo que hace. a ıe Configure sus servidores de la forma m´s conservadora posible. No habilite usuarios a gen´ricos sin antes asegurarse de que no poseen excesivos privilegios. Si tiene alguna e duda sobre alguna funcionalidad del servidor en cuesti´n, deshabil´ o ıtela. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
13.4. Conclusiones
147
Consulte peri´dicamente las p´ginas de los fabricantes de software y aquellas especializao a das en alertar sobre fallos de seguridad, ellas le informar´n de los agujeros m´s recientes a a y de c´mo eliminarlos. Muchos hackers tambi´n las consultan, pero con otros prop´sitos. o e o Ejecute peri´dicamente alguna utilidad que recorra los puertos de su sistema para saber o en cu´les hay demonios. Esto le permitir´ detectar programas del tipo Back Orifice. a a • Vigile su Software Criptogr´fico. Emplee siempre que pueda el protocolo SSL en sus coa municaciones, y aseg´rese de que el software criptogr´fico que usa no funciona con claves u a de 40 bits, a todas luces inseguras. Desgraciadamente, todas las versiones internacionales del software producido en Estados Unidos llevan este tipo de claves, debido a las leyes sobre exportaci´n de material criptogr´fico que posee este pa´ o a ıs. • Contra los Ataques por Diccionario. Muchos sistemas operativos impiden que un administrador abra una consola remota, por lo que aunque alguien averig¨e su contrase˜a, u n no podr´ emplearla a no ser que disponga de acceso f´ a ısico a la computadora. Si su ordenador est´ conectado a Internet, use esta caracter´ a ıstica, a no ser que necesite poder abrir consolas remotas como administrador. Aseg´rese de que el fichero de contrase˜as est´ protegido frente a accesos externos. Aforu n a tunadamente, casi todos los sistemas operativos modernos incorporan esta caracter´ ıstica por defecto. Cambie peri´dicamente las contrase˜as, y sobre todo, use buenas contrase˜as. Existen o n n utilidades para realizar ataques de diccionario (por ejemplo, la famosa John The Ripper) que nos permitir´n saber si nuestras claves son satisfactorias. a • Los Archivos de Registro. Ser´n nuestra mejor defensa contra los hackers. Hay que cona sultarlos frecuentemente para detectar entradas sospechosas, y nunca bajar la guardia. Tampoco viene mal efectuar copias de seguridad en medios externos al ordenador, como pueden ser diskettes o cintas magn´ticas. De esta forma el vaquero no podr´ borrar e a totalmente sus huellas.
13.4
Conclusiones
Cuando hacemos un viaje solemos tomar ciertas precauciones, que reducen el riesgo de tener un accidente, o al menos el posible da˜o en caso de sufrirlo. 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. Estos razonamientos son totalmente v´lidos cuando nos a enfrentamos a los hackers. No hay que alarmarse, pero tampoco hemos de bajar la guardia. Todos hemos o´ historias acerca de personas que se infiltran en redes, que cambian la ıdo trayectoria de sat´lites de comunicaciones, o que venden secretos militares a pa´ enemigos. e ıses Todo esto es muy espectacular, y en algunos casos puede que hasta cierto. Pero si razonamos un poco nos daremos cuenta de que los mejores hackers no han sido descubiertos, bien por Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
148
13. Hackers
razones de publicidad —pensemos en un banco al que le roban varios cientos de millones de pesetas—, bien porque ha resultado imposible localizarlos.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Cap´ ıtulo 14
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. Programas malignos que son capaces de parasitar un sistema, a reproduci´ndose y devor´ndolo por dentro, la imagen que la gente tiene acerca de los virus e a est´ deformada por el desconocimiento. a Los virus estaban entrando ya en lo que parec´ su definitivo declive cuando el auge de ıa Internet provoc´ su relanzamiento, y la aparici´n de nuevas y m´s peligrosas formas de contao o a gio. Hoy por hoy constituyen uno de los problemas de seguridad que m´s dinero e informaci´n a o hacen perder a la gente, por lo que dedicaremos un breve cap´ ıtulo a estudiarlos.
14.1
Origen de los Virus
De origen incierto, los virus existen pr´cticamente desde los inicios de la Inform´tica a a a gran escala. Desde aquellos programas gusano, capaces de copiarse a s´ mismos hasta colapsar ı un sistema, hasta el Melissa, que en marzo de 1999 trajo de cabeza a una gran cantidad de usuarios, el aumento de complejidad en los sistemas ha llevado aparejada nuevas e inquietantes formas de comprometer la seguridad de los sistemas de computadoras. Muchos dicen que los virus nacieron como una medida de las compan´ de desarrollo de ı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, muchos sugieren que algunos virus eran inoculados en las copias legales de algunos programas, programados para activarse cuando se intentara llevar a cabo una copia fraudulenta. El tiempo ha demostrado que los verdaderos perjudicados son las mismas compa˜´ y los propios usuarios. nıas Lo cierto es que hoy por hoy existen miles de virus, y que cada d´ surgen m´s. Al igual ıa a que unos son creados con el unico y dudoso ´nimo de provocar una sonrisa en los afectados, ´ a no es menos cierto que otros se desarrollan con fines aut´nticamente destructivos, casi podr´ e ıa decirse que terroristas. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
150
14. Virus
14.2
Anatom´ de un Virus ıa
Pero, ¿qu´ es un virus? Consideraremos un virus a cualquier programa capaz de infiltrarse e en un sistema y ejecutarse sin que el usuario tenga noticia de ello. Normalmente los propios virus sacan copias de s´ mismos de forma m´s o menos indiscriminada, aunque esto no ocurre ı a siempre. 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
14.2.1
M´todos de Contagio e
Al principio, cuando las redes inform´ticas eran pocas y estaban relativamente aisladas, a los mecanismos de contagio de los virus se basaban en modificar los programas ejecutables, a˜adi´ndoles el c´digo del propio virus. El usuario apenas se daba cuenta de que sus ficheros n e o ejecutables crec´ ligeramente, y cuando los copiara en diskettes y los llevara a otros ordenaıan dores, el contafio estar´ asegurado. En otros casos se modificaban los denominados sectores de ıa 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 atractivo a 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 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 es de suponer, Melissa provoc´ la ca´ de varios servidores de correo electr´nico en cuesti´n de horas. o ıda o o Pero no todos los medios de contagio tienen por qu´ ser tan sofisticados. Algunos proe
1 Un programa se dice multiplataforma si se puede ejecutar en diferentes sistemas operativos. As´ por ı, 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
14.3. Cu´ndo son Peligrosos los Virus a
151
gramas 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 a o n simp´tica, un chiste, etc.— para que el usuario desprevenido lo ejecute. Un ejemplo bastante a sorprendente de lo peligroso que puede ser un troyano se dio 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
14.2.2
La Fase Destructiva de un Virus
La mayor´ de los virus posee una denominada fase de letargo, en la que permanecen inacıa tivos, o a lo sumo se dedican 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 como ´stas pueda concebir. a e
14.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 que entre en acci´n. o 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 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
152
14. Virus
operativos que usa casi todo el mundo otorgan control total sobre la computadora a cualquier programa que lance el usuario, y de esta forma permiten que un virus —o cualquier otro programa— pueda producir da˜os impunemente. Esto no ocurre en los sistemas operativos n serios, donde cada usuario tiene diferentes privilegios, de forma que s´lo los programas que o 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 archivos de quien lo e o a ejecut´, pero en ning´n caso podr´ llegar a afectar al sistema. o u a
14.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 van 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 o Windows NT. • 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
Ap´ndice A 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. Aquellos que no sepan programar, o que simplemente no a deseen escribir sus propias versiones de los criptosistemas que aparecen en este libro, pueden prescindir de esta secci´n. o
A.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, pero se han omitido deliberadamente algunos detalles que s´lo o son utiles de cara a la implementaci´n, como pueden ser los valores concretos de las S-Cajas ´ o y de las permutaciones que se emplean en este algoritmo.
A.1.1
S-Cajas
La tabla A.1 representa las ocho S-Cajas 6*4 que posee DES. Para aplicarlas basta con coger el n´mero de seis bits de entrada b0 b1 b2 b3 b4 b5 , y buscar la entrada correspondiente a la u fila b0 b5 , columna b1 b2 b3 b4 . Por ejemplo, el valor de la tercera S-Caja para 110010 corresponde a la fila 2 (10), columna 9 (1001), es decir, 1 (0001).
A.1.2
Permutaciones
DES lleva a cabo permutaciones a nivel de bit en diferentes momentos. Las tablas que aqu´ se incluyen deben leerse por filas de arriba a abajo, 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. o Por ejemplo, la primera tabla de A.2 lleva el valor b1 b2 b3 . . . b64 en b58 b50 b42 . . . b7 . Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
156
A. 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 A.1: S-Cajas de DES.
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
A.1. 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
157
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 A.2: Permutaciones Inicial (Pi ) y Final (Pf ) del algoritmo DES. 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 A.3: Permutaciones E y P para la funci´n f de DES. o
Permutaciones Inicial y Final La tabla A.2 contiene las permutaciones inicial y final Pi y Pf del algoritmo DES. La primera de ellas se lleva a cabo justo al principio, antes de la primera ronda, y la segunda se aplica justo al final. N´tese que cada una de estas permutaciones es la inversa de la otra. o Funci´n f o En el c´lculo de la funci´n f se emplean dos permutaciones, E y P (ver figura 8.3). Dichas a o permutaciones se detallan en la tabla A.3. E es una permutaci´n de expansi´n, por lo que da o o como salida 48 bits a partir de los 32 de entrada. Generaci´n de las Ki o En la figura 8.4 podemos observar el proceso de generaci´n de los 16 valores de Ki , en el o que se emplean dos nuevas permutaciones (EP1 y EP2), detalladas en la tabla A.4. La primera toma como entrada 64 bits, de los que conserva s´lo 56, mientras que la segunda toma 56, y o devuelve 48. Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
158 Permutaci´n o 17 9 1 35 27 19 23 15 7 47 29 21 Permutaci´n o 3 28 15 13 2 41 39 56 34 EP1 58 11 62 13 EP2 6 52 53
A. 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 A.4: Permutaciones EP1 y EP2 para DES.
A.1.3
Valores de prueba
Una vez que tengamos implementado nuestro algoritmo DES, conviene asegurarse de que funciona adecuadamente. Se incluyen en esta secci´n algunos valores de prueba, que contieo nen todos los datos intermedios que se emplean en el algoritmo, para que el lector pueda compararlos y asegurarse de que su programa es correcto. Los datos est´n representados en a hexadecimal, siendo el bit m´s a la izquierda el m´s significativo. 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. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
A.1. DES Codificaci´n o Codificando con Clave : 0123456789ABCDEF
159
Texto Plano :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 Plano :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 Plano :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=A8AEA01C Paso02 Paso03 : L=71F914D1 R=BC196339 Paso04 Paso05 : L=6893EC61 R=D5C2706F Paso06 Paso07 : L=ABD6DDAC R=017151AF Paso08 Manuel J. Lucena 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
160 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 : : : :
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 Plano :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 Plano :123456789ABCDEF0 Bloque permutado :CCFF6600F0AA7855 Paso01 : L=F0AA7855 R=E0D40658 Paso02 Paso03 : L=BA8920BC R=90264C4F Paso04 Paso05 : L=2E3FA1F4 R=8D42B315 Paso06 Paso07 : L=8769003E R=9F14B42F Paso08 Paso09 : L=E48646E9 R=6B185CDC Paso10 Paso11 : L=4E789B16 R=F3AA9FA8 Paso12 Paso13 : L=56397838 R=541678B2 Paso14 Paso15 : L=A4C1CE1A R=191E936E Paso16 Resultado sin permutar:8C0D6935191E936E Resultado final :9D2A73F6A9070648 -----
: : : : : : : :
L=01BA8064 L=C4DEA13D L=95AD3310 L=1FFFFF76 L=CA47EDD9 L=DB9C4677 L=8A5D943F L=FE6A1216
R=A657157E R=0C766133 R=C5C12518 R=33571627 R=5B462EE4 R=E0B23FE6 R=3ABFFA37 R=5CBDAD14
: : : : : : : :
L=E0D40658 L=90264C4F L=8D42B315 L=9F14B42F L=6B185CDC L=F3AA9FA8 L=541678B2 L=191E936E
R=BA8920BC R=2E3FA1F4 R=8769003E R=E48646E9 R=4E789B16 R=56397838 R=A4C1CE1A R=8C0D6935
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
A.2. IDEA Decodificando con Clave : 23FE536344578A49 Texto Plano :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
161
: : : : : : : :
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
A.2
IDEA
Incluimos ahora valores de prueba para el algoritmo IDEA, tanto para las claves intermedias Zi de codificaci´n y decodificaci´n, como para los valores de las Xi en cada ronda. Los o o datos, al igual que en el caso de DES, est´n representados en hexadecimal, 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. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
162 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. 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
A. Ayudas a la Implementaci´n o
Criptograf´ y Seguridad en Computadores ıa
A.2. 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
163
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 Plano: 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 Plano: 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. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
164 Ronda 8 Resultado ----: F2A5 C848 9746 6910 : 7374 4387 DD37 5315
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 Plano: 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 0000 39EB 9FDD C190 3AB1 B874 4A76 BFB0 02DE DCD3 X2 0000 36B0 04DB 33CE 172A B1F9 9475 1DD6 8519 8419 X3 0000 E85D B915 5D6F CDBE 2D7B 6BA5 83A0 C980 FB6E X4 0000 3959 178F D44F 744D 9A42 B114 F4A3 CBD8 A1E1
Texto Plano: Ronda 1 : Ronda 2 : Ronda 3 : Ronda 4 : Ronda 5 : Ronda 6 : Ronda 7 : Ronda 8 : Resultado : -----
Decodificando con Clave: 6382 6F7E 8AB1 0453 BFED 93DC D810 9472 X1 X2 X3 X4 Texto Plano: 0123 4567 89AB CDEF Ronda 1 : 4490 2B63 85DB 5A10 Ronda 2 : 61D8 C3DB 881D 2404 Manuel J. Lucena L´pez o Criptograf´ y Seguridad en Computadores ıa
A.2. IDEA 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 6E63 F4C7 19DF 6C8A 497E C558 9114 8C36 E658 4073 X2 7F8A EB12 90E0 4D53 BA5D D308 9FD0 FE0F 1F85 BF43 X3 8B8C C708 E5F2 8F75 E167 3327 784A D3B9 E165 EC52 X4 8394 F851 B16B C3EB 26BB BA26 2A59 420F 736D 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
165
Texto Plano: Ronda 1 : Ronda 2 : Ronda 3 : Ronda 4 : Ronda 5 : Ronda 6 : Ronda 7 : Ronda 8 : Resultado :
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
166
A. Ayudas a la Implementaci´n o
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa
Bibliograf´ ıa
[1] Bruce Schneier. Applied Cryptography. Second Edition. John Wiley & sons, 1996. [2] Seberry, J., Pieprzyk, J. Cryptography. An Introduction to Computer Security. Prentice Hall. Australia, 1989. [3] Juan Manuel Vel´zquez y Arturo Quirantes. Manual de PGP 5.53i. 1998. a [4] John D. Lipson. Elements of Algebra and Algebraic Computing. Addison-Wesley, 1981. [5] RFC 2440: Open PGP Message Format. http://www.ietf.org/rfc/rfc2440.txt [6] RFC 1750: Randomness Recommendations for Security. http://www.it.kth.se/docs/rfc/rfcs/rfc1750.txt [7] P´gina Web de Kript´polis. a o http://www.kriptopolis.com [8] P´gina Web de PGP International. a http://www.pgpi.com [9] P´gina Web de Replay Associates. a http://www.replay.com
Manuel J. Lucena L´pez o
Criptograf´ y Seguridad en Computadores ıa