Software para cifrado

123

Transcript of Software para cifrado

Page 1: Software para cifrado
Page 2: Software para cifrado
Page 3: Software para cifrado

Prólogo

Muchos científicos, matemáticos y gobiernos, han hecho grandes esfuerzos por crear sistemas de seguridad de información lo suficientemente complicados como para no ser evadidos. Aun así no son suficientes. Ningún sistema es 100% seguro.

Este trabajo propone una ¡dea innovadora en la que se combinan sistemas conocidos de tal forma que se enriquecen las posibilidades y propicia su uso para aquellas personas u organizaciones que requieren fortalecer la seguridad de su información.

Se proponen sistemas híbridos para cifrado y descifrado de archivos, con manejo de clave pública para sistemas de cifrado simétrico; o de clave secreta. Estos sistemas Ínteractúan de una manera óptima para lograr un programa que permite el cifrado y descifrado de archivos de texto, convirtiéndolos a un formato de archivos cifrados brindando una mayor confidencialidad de la información.

El sistema ofrece que cada usuario posea dos claves de tipo pública y privada. La pública sirve para cifrar los archivos a un determinado usuario, y la pública para que única y exclusivamente el destinatario sea capaz de descifrar dichos archivos.

Page 4: Software para cifrado

ÍNDICE

1. INTRODUCCIÓN......................................................................................................................................... 1 1.1. CRIPTOGRAFÍA..................................................................................................................................................................................... 1 1.2. BREVE HISTORIA DE LA CRIPTOGRAFÍA................................................................................................................................................................................ 1

2. TÉCNICAS CRIPTOGRÁFICAS..................................................................................................................4

2.1. ASPECTOS DE SEGURIDAD .......................................................................................................... 4 2.2. OBJETIVOS DE LA CRIPTOGRAFÍA...............................................................................................5

2.2.1. Privacidad............................................................................................................................... 5 2.2.2. Integridad................................................................................................................................ 6 2.2.3. Autenticidad............................................................................................................................ 6 2.2.4. No Repudiación ..................................................................................................................... 6

2.3. CRIPTOGRAFÍA CLÁSICA..................................................................................................................................................................................7 2.4. CRIPTOGRAFÍA MODERNA................................................................................................................................................................ 10

2.4.1. Criptografía simétrica............................................................................................................. 10 2.4.2. Criptografía de clave pública................................................................................................. 11 2.4.3. Sistemas híbridos.................................................................................................................... 12

3. ALGORITMOS MÁS IMPORTANTES DE CIFRADO SIMÉTRICO…................................................. 13

3.1. DES (DATA ENCRYPTION STANDARD)................................................................................................................................................ 13 3.1.1. Descripción............................................................................................................................. 14 3.1.2. Generación de las subclaves..................................................................................................... 15 3.1.3. Norma LS(..) de desplazamiento circular a la izquierda de bits............................................. 18 3.1.4. La función ft...)...................................................................................................................... 18

3.2. TRIPLE DES .............................................................................................................................................................................22 3.3. IDEA (INTERNACIONALDATAENCRYPTION ALGORITHM).................................................25

3.3.1. Funcionamiento del Algoritmo............................................................................................... 26 3.1.2. Esquema gráfico de funcionamiento:.................................................................................... 28

4. RSA (CRIPTOGRAFÍA DE CLAVE PÚBLICA)...................................................................................... 29

4.1. BREVE HISTORIA ...................................................................................................................................................................29 4.2. DESCRIPCIÓN DEL ALGORITMO RSA................................................................................................................................................. 30

4.2.1. Algoritmo RSA de llave pública............................................................................................. 34 4.2.2. Algoritmo de Firma Digital.................................................................................................... 34

4.3. ELTAMAÑO DE LA LLAVE PÚBLICA N.....................................................................................................................................................35 4.4. TIEMPO DE FACTORIZACIÓN EN LA PRÁCTICA........................................................................................................................................................................ 35 4.5. CRITERIOS DE IMPLANTACIÓN ............................................................................................................................................................................... 37

4.5.1. Generación de números primos............................................................................................. 38 4.5.2. Pruebas de primacidad........................................................................................................... 38

4.6. ALGORITMOS IMPLANTADOS............................................................................................................................................................................40 4.6.1. La función de Etiler............................................................................................................... 40 4.6.2. Teorema de Fennat................................................................................................................ 41 4.6.3. Algoritmo de Euclides........................................................................................................... 42 4.6.4. Algoritmo de exponenciación modular................................................................................. 43 4.6.5. Generación de números primos............................................................................................. 45 4.6.6. Test de probabilidad de Miller-Rabin................................................................................... 45 4.6.7. Algoritmo generador de bits pseudo aleatorio...................................................................... 47

Page 5: Software para cifrado

5. CURVAS ELÍPTICAS (CRIPTOGRAFÍA DE CLAVE PUBLICA)........................................................47

5.1. DEFINICIÓN DEL PROBLEMA ........................................................................................................................................................................... 47 5.7.7. Ventajas de la criptografía con curvas elípticas............................................................................ 47 5.1.2. Desventajas de la criptografía con curvas elípticas....................................................................... 48

5.2. PROPIEDADES ................................................................................................................................................................................... 48 5.3. LAS CURVAS ELÍPTICAS DEFINIDAS SOBRE UN CUERPO FINITO.......................................................................................................................................... 51

5.3.1. Redefinición de la ecuación de la curva elíptica y de las fórmulas aditivas.................................... 51 5.3.2. La estructura de grupo y el número de puntos............................................................................... 55 5.3.3. Búsqueda de generadores............................................................................................................... 57

5.4. CRIPTOGRAFÍA CON CURVAS ELÍPTICAS............................................................................................................................................................................ 59 5.5. MÉTODO EL GAMAL.................................................................................................................................................................................61

6. FIRMA DIGITAL.........................................................................................................................................65

6.1. DEFINICIÓN................................................................................................................................................................................... 65 6.2. ESQUEMA BÁSICO DE UNA FIRMA DIGITAL.............................................................................................................................................................................. 65

6.2.7. Cifrado y firma deforma conjunta................................................................................................. 66 6.2.2. Cifrado y firma deforma independiente......................................................................................... 67

6.3. FUNCIONES HASH.................................................................................................................................................................... 68 6.4. ALGORITMO IMPLANTADO................................................................................................................................................................71

7. PLANTEAMIENTO DEL SISTEMA ....................................................................................................... 75

8. DISEÑO DEL SISTEMA.............................................................................................................................76

8.1. DIAGRAMAS DE PROCESO........................................................................................................................................................................... 76 8.1.1. Diagrama de los sistemas IDEA y Triple DES.............................................................................. 77 8.1.2. Diagrama del sistema RSA............................................................................................................. 78 8.1.3. Diagrama del sistema de firma RSA.............................................................................................. 80 8.1.4. Diagrama del sistema CCE............................................................................................................ 82 8.1.5. Diagrama del sistema de firma hash.............................................................................................. 84 8.2.1. Diagrama de Flujo del sistema Triple DES.................................................................................... 86 8.2.2. Diagrama de Flujo del sistema IDEA............................................................................................. 87 8.2.3. Diagrama de flujo del sistema de Generación de Claves RSA...................................................... 88 8.2.4. Diagrama de flujo del sistema de cifrado y descifrado RSA .......................................................... 89 8.2.5. Diagrama de flujo del sistema de firmas RSA .............................................................................. 90 8.2.6. Diagrama de flujo del sistema de cifrado y descifrado CCE.......................................................... 91 8.2.7. Diagrama de flujo del sistema de firmas con función hash MD5................................................... 92

9. INTERFAZ GRÁFICA................................................................................................................................93

9.1. INTERFAZ DE USUARIO .................................................................................................................................................................................93 9.2. CONJUNTO DE EJECUTABLES .......................................................................................................................................................................... 94

9.2.7. des.exe............................................................................................................................................ 94 9.2.2. idea.exe.......................................................................................................................................... 95 9.2.3 arsa.exe............................................................................................................................................ 96 9.2.4. ecc.exe........................................................................................................................................... 97 9.2.5. random.exe..................................................................................................................................... 99 9.2.6. md5.exe.......................................................................................................................................... 99 9.2.7. concat.exe....................................................................................................................................... 99 9.2.8. descat.exe..................................................................................................................................... 100

9.3. SECUENCIA PARA CIFRADO................................................................................................................................................................. 100 9.3.7. Triple DES, IDEA......................................................................................................................... 100 9.3.2. RSA sin Autentificación, ECC sin Autentificación........................................................................ 101

Page 6: Software para cifrado

9.3.3. RSA con Autentificación, ECC con Autenüficación................................................................... 101 9.3.4. Híbridos sin Autentificación......................................................................................................... 102 9.3.5. Híbridos con Autentificación........................................................................................................ 103 9.3.6. Resumen MD5.............................................................................................................................. 103

9.4. SECUENCIA PARA DESCIFRADO.......................................................................................................................................................................... 104 9.4.7. Resumen MD5.............................................................................................................................. 104 9.4.2. Triple DES, IDEA......................................................................................................................... 104 9.4.3. RSA sin Autentificación, ECC sin Autentificación..................................................................... 104 9.4.4. RSA con Autentificación, ECC con Autentificación................................................................... 105 9.4.5. Híbridos sin Autentificación......................................................................................................... 105 9.4.6. Híbridos con Autentificación........................................................................................................ 106

10. RESULTADOS OBTENIDOS, CONCLUSIONES Y POSIBLES DESARROLLOS ...................................... 107

11. FUENTES DE INFORMACIÓN.................................................................................................................... 108

APÉNDICE A. FUNDAMENTOS MATEMÁTICOS ............................................................................................. 109

APÉNDICE B. GENERACIÓN DE NÚMEROS PSEUDO ALEATORIOS.......................................................... 112

Page 7: Software para cifrado

1. Introducción

1.1. Criptografía

La criptografía es la técnica, ciencia o arte de la escritura secreta. El principio básico de la criptografía es mantener la privacidad de la comunicación entre dos personas alterando el mensaje original de modo que sea incomprensible a toda persona distinta del destinatario, a esto de debe autenticación, esto es la firma del mensaje de modo que un tercero no pueda hacerse pasar por el emisor. La palabra criptografía proviene de las palabras griegas "criptos" (oculto, secreto) y "grafos" (escritura). A la transformación del mensaje original en el mensaje cifrado (criptograma) se le llama cifrado, y a la inversa, el paso del criptograma al mensaje original se le llama descifrado; estos pasos se realizan mediante un conjunto de reglas preestablecidas entre los comunicantes a la que se le denomina clave. El criptoanalisis es el conjunto de técnicas que intenta encontrar la clave utilizada entre dos comunicantes, revelando así el secreto de su correspondencia. La criptología engloba tanto a la criptografía como al criptoanalisis; el éxito de un criptoanalista supone el fracaso de un criptógrafo y viceversa.

Debemos hacer una distinción entre código y cifra, con un código se sustituye una palabra o frase del texto original por otra palabra o frase en el texto cifrado. La traducción a una lengua extranjera es un buen ejemplo de código, así podemos transformar el mensaje original "estoy contento" por ":-)" o "emprender la guerra" por "to go to war". La cifra suele actuar antes sobre caracteres que sobre palabras, utilizando un sistema de signos en el que se transcriben guarismos, letras símbolos según una clave acordada; podemos, por ejemplo, cifrar el mensaje "emprender la guerra" escribiendo "merpneedlrgaeurra" donde la clave utilizada ha sido: Eliminar los espacios en blanco, tomar las letras de dos en dos y cambiando su orden escribirlas.

1.2. Breve historia de la criptografía

La criptografía es tan antigua como la escritura. Desde que el homo-sapiens inició su recorrido sobre este planeta, ha necesitado comunicarse con sus semejantes, pero en ocasiones no quiere que otros se enteren. Las razones son evidentes, ya que a ninguno le gustaría que el enemigo conociera su estrategia si lograse interceptar un mensaje.

Se dice que las primeras civilizaciones que usaron la criptografía fueron la egipcia, la Mesopotamia, la India y la China. Se puede decir que la criptografía es tan antigua como la civilización, cuestiones militares, religiosas o comerciales impulsaron desde tiempos remotos el uso de escrituras secretas; los antiguos egipcios usaron métodos criptográficos, mientras el pueblo utilizaba la lengua demótica los sacerdotes usaban la escritura hierática (jeroglífica) incomprensible para el resto. Los antiguos babilonios también utilizaron métodos criptográficos en su escritura cuneiforme.

El primer caso claro de uso de métodos criptográficos se dio durante la guerra entre Atenas y Esparta. Los espartanos, 400 años antes de Cristo, utilizaban un sistema secreto de escritura, el cifrado se basaba en la alteración del mensaje original mediante la inclusión de símbolos innecesarios que desaparecían al enrollar la lista en un rodillo llamado escitala , el mensaje quedaba claro cuando se enrollaba la tira de papel alrededor de un rodillo (escitala) de longitud y grosor adecuados. Se escribía entonces el texto en cada una de las vueltas del papiro, pero de arriba hacia abajo. Una vez desenrollado, sólo se podía leer una serie de letras aparentemente inconexas. Para descifrar el mensaje era necesario colocar el papiro exactamente en la misma posición en la que había sido escrito. Antiguos textos judíos fueron encriptados siguiendo el método de sustituir la primera letra del alfabeto por la última y así sucesivamente. En la Biblia (Jeremías 25:26) el nombre de Babilonia aparece encriptado como "Sheshech".

Carlomagno sustituía ya las letras por símbolos extraños. Pero a quien se atribuye el primer método de encriptado con su debida documentación es al general romano Julio César, quien creó un sistema simple de sustitución de letras, que consistía en escribir el documento codificado con la tercera letra que siguiera a la

1

Page 8: Software para cifrado

que realmente correspondía. La A era sustituida por la D, la B por la E y así sucesivamente. En la Edad Media el uso de la escritura codificada se incrementó. Un libro de astronomía escrito en 1390 y atribuido a Geoffrey Chaucer contiene trozos cifrados. En la Edad Media San Bernardina evitaba la regularidad de los signos (con lo que el criptoanalisis por el método de las frecuencias no era efectivo) sustituyendo letras por varios signos distintos, así tenía un símbolo para cada consonante, usaba tres signos distintos para cada una de las vocales y utilizaba signos sin ningún valor. El libro más antiguo del que se tiene constancia y que traía sobre criptografía es el Líber Zifrorutn escrito por Cicco Simoneta en el siglo XIV. En 1470, León Battista Alberti publica "Tratado de cifras" en donde describe una cifra capaz de encriptar un pequeño código crea la primera máquina de criptografía que consiste en dos discos concéntricos que giran independientes consiguiendo con cada giro un alfabeto de transposición. En el siglo XVI, Girolamo Cardano utilizó el método de la tarjeta con agujeros perforados, que se debía colocar sobre un texto para poder leer el mensaje cifrado ; en ese mismo siglo Felipe II utilizó una complicada clave que el francés Viete logró descifrar. En ese mismo siglo, Blaise de Vigenére publica Traicté des Chiffres donde recoge los distintos métodos utilizados en su época, el método Vigenére es un método clásico de cifrado por sustitución que utiliza una clave. Carlos /de Inglaterra usó en el siglo XVII códigos de sustitución silábica. Napoleón, en sus campañas militares y en los escritos diplomáticos, usó los llamados métodos Richelieu y Rossignol y para evitar la regularidad de los símbolos asignaba números a grupos de una o más letras.

No obstante se considera al abate Johannes Trithemius es el padre de la criptografía moderna. Este religioso escribió en 1530 "Poligrafía", el primer libro impreso sobre el tema. Trithemius introdujo el concepto de tabla ajustada, en el cual el alfabeto normal es permutado para codificar los mensajes. Son legendarios los mapas de tesoro escondidos durante los siglos XVII y XVIII. En ellos los piratas supuestamente encriptaban la localización de enormes tesoros, basándose principalmente en métodos de sustitución de alfabeto.

En el siglo XIX se utiliza ampliamente el método de transposición, consistente en la reordenación según distintos criterios de los símbolos del mensaje. Kerckhoffs escribe el libro La criptografía militar en las que da las reglas que debe cumplir un buen sistema criptográfico. En Primera Guerra Mundial los alemanes usaron el sistema denominado ADFGX en el que a cada combinación de dos letras del grupo ADFGX se le hace corresponder una letra del alfabeto y a la que posteriormente se le hacía una transposición en bloques de longitud 20. El presidente americano Jefferson diseño un cilindro formado por varios discos que se utilizaba como máquina criptográfica. El mayor desarrollo de la criptografía se dio en el periodo de entreguerras por la necesidad de establecer comunicaciones militares y diplomáticas seguras.

El principal uso de la criptografía en la era moderna ha sido militar. En 1917, por ejemplo, el servicio de Inteligencia Naval de Inglaterra entregó a los Estados Unidos un mensaje que había sido enviado al embajador alemán en Ciudad de México por el gobierno germano. En el mismo se autorizaba al diplomático a negociar un acuerdo con México para entrar a favor de Alemania en la Primera Guerra Mundial. A cambio, los mexicanos recibirían los territorios de Nuevo México, Arizona y Texas, en el caso de que resultasen vencedores. El texto -conocido como el telegrama Zimmermann- impulsó a los norteamericanos a participar en esa guerra contra Alemania. En 1940 se construyó la máquina Hageiin C-48 consistente en seis volantes unidos por el eje y con distinto número de dientes. En la Segunda Guerra Mundial se construyó por parte alemana la máquina Enigma, que se basaba en un perfeccionamiento del cilindro de Jefferson, pero la máquina británica Colossus consiguió descifrar los mensajes cifrados con Enigma.

Los códigos de la máquina Enigma, usada por los mismos alemanes durante la Segunda Guerra, fueron rotos por los analistas norteamericanos, ai igual que los códigos usados por los japoneses.

Los americanos construyeron la máquina Magic utilizada para descifrar el código púrpura japonés; los americanos a su vez usaron a los indios navajos con su difícil lenguaje para la transmisión de mensajes.

Con el desarrollo de la informática en la segunda mitad de este siglo y con el uso cada vez más extendido de las redes informáticas y del almacenamiento masivo de información se ha dado paso a un gran salto en el

Page 9: Software para cifrado

estudio de sistemas criptográficos. En 1975 Diffie y Reliman establecieron las bases teóricas de los algoritmos de llave pública , hasta entonces no se concebía un sistema de cifrado que no fuese de clave secreta. En la actualidad se usan distintos métodos criptográficos, el DES (de llave secreta), método RSA, método de Merkle y Hellman, etc. Y ahora que la informática se ha apoderado de los hogares, como no, se han de introducir sistemas que sean seguros para realizar operaciones.

Esto que así dicho parece no revestir mayor importancia, se ha convertido en pieza clave de un debate que ha desbordado muchos foros restringidos, hasta configurarse como uno de los focos de mayor atención de la mayoría de los gobiernos del planeta. En algunos países está directamente prohibido el uso de encriptación de mensajes (como Francia o China, por ejemplo), en otros como Estados Unidos está fuertemente controlado, impidiéndose la exportación de programas encriptadores al considerarse por el Acta de Control de Exportación de Armas (Arms Export Control Act) como incluida en su lista, junto a misiles, bombas y armamento diverso.

Hay muchos países que, aunque en su territorio nacional permiten el uso de la criptología, desean que estos programas incluyan una puerta trasera (backdoor) o procedimiento parecido para poder intervenir el mensaje cuando así lo consideren oportuno.

Todo esto nos lleva directamente al enfrentamiento privacidad en las comunicaciones-control gubernamental, lo que en términos orwellianos se denomina "el control del Gran Hermano" (aunque esta expresión se utiliza, también, para denominar a esa especie de ojo vigilante, que presuntamente nos acecha continuamente y cuyo origen es indeterminado: Gobiernos, espías de distinto grado, fisgones o meros curiosos). Todo esto nos lleva directamente al enfrentamiento privacidad en las comunicaciones-control gubernamental, lo que en términos orwellianos se denomina "el control del Gran Hermano" (aunque esta expresión se utiliza, también, para denominar a esa especie de ojo vigilante, que presuntamente nos acecha continuamente y cuyo origen es indeterminado: Gobiernos, espías de distinto grado, fisgones o meros curiosos). En España no hay ningún problema al respecto, pero en muchos países la situación legal está todavía por definir.

La colisión de intereses que se produce es, por un lado el Derecho a la Intimidad y a la Privacidad, y por otro, el deseo de los Cuerpos de Seguridad de que no exista información a la que no puedan tener acceso. Se promete interesante el debate en muchos países, como el que hay actualmente abierto en Estados Unidos. Por un lado los defensores de la Privacidad, por otro, cifras como las que presenta el FBI (y eso que ellos no llevan a cabo la totalidad de las escuchas realizadas en los E. U.). Entre 1.985 y 1.994, las escuchas ordenadas judicialmente formaron parte de las pruebas que concluyeron en 14.648 sentencias, supusieron casi 600 millones de dólares en multas y más de 1.500 millones de dólares en recuperaciones y embargos ordenados por los jueces. Esto se imposibilitaría con el uso de encriptación fuerte.

3

Page 10: Software para cifrado

2. Técnicas criptográficas

2.1. Aspectos de seguridad

El uso de técnicas criptográficas tiene como propósito prevenir algunas faltas de seguridad en un sistema computarizado. La seguridad en general debe de ser considerada como un aspecto de gran importancia en cualquier corporación que trabaje con sistemas computarizado.

El hecho que gran parte de actividades humanas sea cada vez más dependiente de los sistemas computarizados hace que la seguridad juegue un papel importante. Siempre se pueden encontrar razones para reafirmar la trascendencia que tiene la seguridad en los sistemas computarizados, enseguida se da una introducción de cómo es posible atacar este problema.

El diseñar una estrategia de seguridad depende en general de la actividad que se desarrolle, sin embargo, se pueden considerar los siguientes tres pasos generales: el primero crear una política global de seguridad, el segundo realizar un análisis de riesgos y el tercero aplicar las medidas correspondientes.

Política global de seguridad: aquí se establece el estatus de la información para la empresa o la organización, debe de contener un objetivo general, la importancia de la tecnología de la información para la empresa, el periodo de tiempo de validez de la política, los recursos con que se cuenta, objetivos específicos de la empresa.

Debe de establecerse la calidad de la información que se maneja según su objetivo, esto quiere decir que se determine cuándo o para quién la información debe ser confidencial, cuándo debe verificarse su integridad y cuándo debe de verificarse la autenticidad tanto de la información como de los usuarios.

Análisis de riesgos: consiste en listar todo tipo de riesgos a los cuales esta expuesta la información y cuáles son las consecuencias, los posibles atacantes entre persona, empresas y dependencias de inteligencia, las posibles amenazas etc., enumerar todo tipo de posible pérdida, desde pérdidas directas como dinero, clientes, tiempo etc., así como indirectas, créditos no obtenidos, pérdida de imagen, implicación en un litigio, pérdida de imagen, pérdida de confianza etcétera.

El riesgo se puede calcular por la formula riesgo = (probabilidad * pérdida), por ejemplo el riesgo de perder un contrato por robo de información confidencial es igual a la probabilidad de que ocurra el robo multiplicado por la pérdida total en pesos de no hacer el contrato. El riesgo de fraude en transacciones financieras es igual a la probabilidad de que ocurra el fraude por la pérdida en pesos de que llegara ocurrir ese fraude. Si la probabilidad es muy pequeña el riesgo es menor, pero si la probabilidad es casi uno, el riesgo puede ser casi igual a la perdida total. Si por otro lado la pérdida es menor aunque la probabilidad de que ocurra el evento sea muy grande tenemos un riesgo menor. Por ejemplo la pérdida de una transacción de 300 pesos con una probabilidad muy grande de que ocurra al usar criptografía débil, el riesgo llega a ser menor por lo que depende de la política de seguridad para que este riesgo se asuma.

Medidas de seguridad: esta parte se puede plantear como la terminación de la toda la estructura de seguridad de la información. Una vez planteada una política de seguridad, o sea decir cuanto vale la información (en un análisis de riesgo), decir que tanto se pierde si le ocurre algo a la información o que tanto se gana si está protegida, se deben establecer las medidas para que cumpliendo con la política de seguridad las pérdidas sean las menores posibles y que esto se transforme en ganancias, ya sean materiales o de imagen.

4

Page 11: Software para cifrado

Las posibles medidas que se pueden establecer se pueden dividir según la siguiente tabla:

• PF: guardias a la entrada del edificio, control en el acceso de entrada, protección al hardware,

respaldo de datos, ... • DF: monitor de vigilancia, detector de metales, detector de movimiento, ... • CF: respaldo de fuente de poder, ... • PT: firewalls, criptografía, bitácora, ... • DT: control de acceso lógico, sesión de autenticación, ... • CT: programa antivirus, ... • PO: cursos de actualización, organización de las claves, ... • DO: monitoreo de auditoria, ... • CO: respaldos automáticos, p\an de incidentes (sanciones), ...

En resumen se debe mencionar que no existe un sistema computarizado que garantice al 100% la seguridad de la información debido a \a inmensa cantidad de diferentes formas con que se puede romper \a seguridad de un sistema. Sin embargo, una buena planeación de la estrategia para dar seguridad a la información puede resultar desde la salvación de una empresa hasta la obtención de grandes ganancias directas en dinero efectivo, o como ganancias indirectas mejorando la imagen y la seguridad de la empresa. Uno de los objetivos principales de establecer una política de seguridad es el de reducir al mínimo los riegos posibles, implementando adecuadamente las diferentes medidas de seguridad.

2.2. Objetivos de la criptografía

Los principales problemas de seguridad que resuelve la criptografía son: la privacidad, la integridad, la autenticación y el no repudio.

2.2.1. Privacidad

Privacidad: la información sólo puede ser leída por personas autorizadas.

Ejemplos: en la comunicación por teléfono, que alguien intercepte la comunicación y escuche la conversación quiere decir que no existe privacidad. Si se manda una carta y por alguna razón alguien rompe el sobre para leer la carta, ha violado la privacidad.

En la comunicación por Internet es muy difícil estar seguros de la privacidad de la comunicación, ya que no se tiene control de la línea de comunicación. Por lo tanto al cifrar (esconder) la información cualquier intercepción no autorizada no podrá revelar \a información. Esto es posible sv se usan técnicas criptográficas, en particular la privacidad se logra si se cifra el mensaje con un método simétrico.

5

Page 12: Software para cifrado

2.2.2. Integridad

Integridad: la información no puede ser alterada durante el proceso de envío.

Ejemplos: cuando compramos un boleto de avión y los datos del vuelo son cambiados, puede afectar los planes del viajero. Una vez hecho un deposito en el banco, si no es capturada la cantidad correcta causará problemas. La integridad es muy importante en las transmisiones militares ya que un cambio de información puede causar graves problemas.

En Internet las compras se puede hacer desde dos ciudades muy distantes, la información tiene necesariamente que viajar por una línea de transmisión de la cual no se tiene control, si no existe integridad podrían cambiarse por ejemplo el número de una tarjeta de crédito, los datos del pedido, en fin, información que causaría problemas a cualquier comercio y cliente.

La integridad también se puede solucionar con técnicas criptográficas particularmente con procesos simétricos o asimétricos.

2.2.3. Autenticidad

Autenticidad: se puede confirmar que el mensaje recibido ha sido enviado por quien dice enviarlo o que el mensaje recibido es el que se esperaba.

Ejemplo: cuando se quiere cobrar un cheque a nombre de alguien, quien lo cobra debe de someterse a un proceso de verificación de identidad para comprobar que en efecto es la persona quien dice ser, esto en general se lleva a cabo con una credencial que anteriormente fue certificada y acredita la identidad de la persona que la porta. La verificación se lleva a cabo comparando la persona con una foto o con la comparación de una firma convencional.

Por Internet es muy fácil engañar a una persona con quien se tiene comunicación respecto a la identidad, resolver este problema es por lo tanto muy importante para efectuar comunicación confiable.

Las técnicas necesarias para poder verificar la autenticidad tanto de personas como de mensajes usan quizá la más conocida aplicación de la criptografía asimétrica que es la firma digital, de algún modo ésta reemplaza a la firma autógrafa que se usa comúnmente. Para autenticar mensajes se usa criptografía simétrica.

2.2.4. No Repudiación

No repudiación: no se puede negar la autoría de un mensaje enviado.

Cuando se diseña un sistema de seguridad, una gran cantidad de problemas pueden ser evitados si se puede comprobar la autenticidad, garantizar privacidad, asegurar integridad y el no-rechazo de un mensaje.

6

Page 13: Software para cifrado

2.3. Criptografía clásica

El cifrado de textos es una actividad que ha sido ampliamente usada a lo largo de la historia humana, sobre todo en el campo militar y en aquellos otros en los que es necesario enviar mensajes con información confidencial y sensible a través de medios no seguros.

Aunque en cierta forma el sistema de jeroglíficos egipcio puede considerarse ya una forma de criptografía (sólo podían ser entendidos por personas con conocimientos suficientes), el primer sistema criptográfico como tal conocido de debe a Julio Cesar. Su sistema consistía en reemplazar en el mensaje a enviar cada letra por la situada tres posiciones por delante en el alfabeto latino. En nuestro alfabeto actual tendríamos la siguiente tabla de equivalencias:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

Q

o

P

Q

R

S

T

u

V

W

X

Y

Z

D

E

F

G

H

I

J

K

L

M

N

Q

O

P

Q

R

S

T

U

V

w

X

Y

z

A

B

C

Por lo que el mensaje "HOLA MUNDO" se transformaría en "KRQD OXPGR". Para volver al mensaje original desde el texto cifrado tan sólo hay que coger un alfabeto e ir sustituyendo cada letra por la que están tres posiciones antes en el mismo.

Este sistema fue innovador en su época, aunque en realidad es fácil de romper, ya en todo sistema de transposición simple sólo hay un número de variaciones posible igual al de letras que formen el alfabeto (27 en este caso).

Este fue el primer sistema criptográfico conocido, y a partir de él, y a lo largo de la historia, aparecieron otros muchos sistemas, basados en técnicas criptológicas diferentes. Entre ellos caben destacar los sistemas monoalfabéticos (parecidos al de Julio Cesar, pero que transforman cada letra del alfabeto original en la correspondiente de un alfabeto desordenado), el sistema Playfair de Ser Charles Wheastone (1854, sistema monoalfabético de diagramas), los sistemas polialfabéticos, los de permutación, etc.

Aunque han sido muchos, y se va a profundizar, pero sí hay que destacar dos sistemas generales de ocultación, ya que juntos forman la base de muchos de los sistemas criptográficos actuales: Son la sustitución y la permutación.

La sustitución consiste en cambiar los caracteres componentes del mensaje original en otros según una regla determinada de posición natural en el alfabeto. Por ejemplo, fijar una equivalencia entre las letras del alfabeto original y una variación de él, de forma análoga a lo que ocurre en el método de Julio Cesar. Si fijamos la equivalencia de alfabetos:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

Q

o

P

Q

R

S

T

U

V

W

X

Y

Z

J

K

L

M

N

Q

O

P

Q

R

S

T

U

V

w

X

Y

z

A

B

C

D

E

F

G

H

I

El mensaje "HOLA MUNDO" quedaría como "PXTJ UDVMX".

Page 14: Software para cifrado

No es necesario que el alba feto equivalente esté ordenado naturalmente, si no que puede estar en cualquier otro orden. Sólo se exige que tenga todos y cada uno de los elementos del alfabeto original.

Este tipo de sustituciones se denomina monoalfabético, pero existen métodos más eficaces, como los polialfabéticos, en los que existen varios alfabetos de cifrado, que se emplean en rotación.

La transposición en cambio consiste en cambiar los caracteres componentes del mensaje original en otros según una regla determinada de posición en el orden del mensaje. Por ejemplo, si establecemos la siguiente regla de cambio en el orden de las letras en el texto:

la letra

1

2

3

4

5

6

7

8

9

pasa a ser la

5

1

4

7

8

2

9

3

6

La frase "HOLA MUNDO" quedaría "OUDL HOAMN".

Tanto la sustitución como la transposición son técnicas básicas para ocultar la redundancia en un texto plano, redundancia que se transmite al texto cifrado, y que puede ser el punto de partida para un ataque por Criptoanalisis. La redundancia es el hecho de que casi todos los símbolos de un mensaje en lenguaje natural contienen información que se puede extraer de los símbolos que le rodean.

El problema inmediato que se plantea en cualquier sistema complejo, tanto de sustitución como de permutación, es recordar el nuevo orden que se ha establecido para obtener el mensaje camuflado, problema tanto más difícil de resolver cuanto más complicado haya sido el sistema elegido.

Una solución sería escribir en un soporte cualquiera (papel, disquete, etc.) éste nuevo orden, pero siempre queda entonces el nuevo problema de guardar el soporte, ya que si cae en manos extrañas dará al traste con el mecanismo de ocultación.

Mejor solución es implementar un mecanismo de sustitución o de permutación basado en una palabra o serie fácil de recordar. Por ejemplo, podemos establecer un mecanismo criptográfico que se base en una palabra corta. Consideremos que queremos cifrar la frase "HOLA MUNDO" basándonos en la palabra "HTML". Para ello escribimos una tabla o matriz con tantas columnas como letras tenga la palabra elegida, y colocamos en la fila superior dicha palabra. El mensaje a cifrar se va situando en las filas siguientes consecutivamente y si sobran celdas se dejan vacías:

H

T

M

L

H

0

L

A

M

U

N

D

O

8

Page 15: Software para cifrado

El paso siguiente será cambiar el orden de las filas, por ejemplo ordenando la palabra elegida en orden alfabético, en tabla queda:

H

L

M

T

H

A

L

0

M

D

N

U

O

Por último, se pieden transformar las filas de la tabla en columnas:

H

H

M

O

L

A

D

M

L

N

O

Y por último se obtiene el nuevo mensaje, leyendo las filas obtenidas:

Transformación: "HOLA MUNDO" -> "HHMO LAD MLN O".

Para desencriptar el texto cifrado habrá que realizar las operaciones anteriores en sentido inverso.

El uso de una palabra o serie determinada como base de un sistema de cifrado posee la ventaja de que, si el sistema es complejo, tan sólo será fácil obtener el texto en claro a quién sepa dicha palabra, además de ser fácil de recordar. Esta palabra o serie base del mecanismo de cifrado se denomina clave de cifrado, y el número de letras que la forman se llama longitud de la clave.

Indudablemente, cuanto más complicado sea el mecanismo de cifrado y cuanto más larga sea la clave, más difícil será romper el sistema y obtener el mensaje original para un extraño. Pero más complicado será también para el destinatario del mensaje cifrado realizar las operaciones de descifrado y obtener el mensaje original, por lo que se crea el dilema seguridad / tiempo.

Las claves de encriptación van a ser la base fundamental de los modernos sistemas criptográficos, basados en operaciones matemáticas generalmente muy complejas.

9

Page 16: Software para cifrado

2.4. Criptografía moderna

Enseguida se repasan algunas de las técnicas criptográficas que pertenecen a la criptografía moderna, tratando de exponerlas de una forma sencilla de comprender.

La criptografía moderna se divide en dos grandes ramas, la criptografía de clave privada o simétrica y la criptografía de clave pública o asimétrica, IDEA y DES pertenecen al primer grupo RSA y Curvas Elípticas al segundo.

La era moderna se caracteriza por lo siguiente:

• Velocidad de cálculo: con la aparición de los computadores se dispone de una potencia de cálculo muy superior a la de los métodos clásicos.

• Avance de las matemáticas: que permite encontrar y definir con claridad sistemas criptográficos estables y seguros.

• Necesidades de seguridad: surgieron muchas actividades nuevas que precisaban la ocultación de datos, con lo que la Criptología experimentó un fuerte avance.

Los modernos algoritmos de encriptación simétricos mezclan la transposición y la permutación, mientras que los de clave pública se basan más en complejas operaciones matemáticas.

2.4.1. Criptografía simétrica

Incluye los sistemas clásicos, y se caracteriza por que en ellos se usa la misma clave para encriptar y para desencriptar, motivo por el que se denomina simétrica.

Toda la seguridad de este sistema está basada en la llave simétrica, por lo que es misión fundamental tanto del emisor como del receptor conocer esta clave y mantenerla en secreto. Si la llave cae en manos de terceros, el sistema deja de ser seguro, por lo que habría que desechar dicha llave y generar una nueva.

Para que un algoritmo de este tipo sea considerado fiable debe cumplir varios requisitos básicos:

1. Conocido el criptograma (texto cifrado) no se pueden obtener de él ni el texto en claro ni la clave.

2. Conocidos el texto en claro y el texto cifrado debe resultar más caro en tiempo o dinero descifrar la clave que el valor posible de la información obtenida por terceros.

Generalmente el algoritmo de encriptación es conocido, se divulga públicamente, por lo que la fortaleza del mismo dependerá de su complejidad interna y sobre todo de la longitud de la clave empleada, ya que una de las formas de criptoanalisis primario de cualquier tipo de sistema es la de prueba-ensayo, mediante la que se van probando diferentes claves hasta encontrar la correcta.

Los algoritmos simétricos cifran bloques de texto del documento original, y son más sencillos que los sistemas de clave pública, por lo que sus procesos de cifrado y descifrado son más rápidos.

Todos los sistemas criptográficos clásicos se pueden considerar simétricos, y los principales algoritmos simétricos actuales son DES, IDEA y RC5. Actualmente se está llevando a cabo un proceso de selección para establecer un sistema simétrico estándar, que se llamará AES (Advanced Encryption Standar), que se quiere que sea el nuevo sistema que se adopte a nivel mundial.

10

Page 17: Software para cifrado

Las principales desventajas de los métodos simétricos son la distribución de las claves, el peligro de que muchas personas deban conocer una misma clave y la dificultad de almacenar y proteger muchas claves diferentes.

2.4.2. Criptografía de clave pública

También llamada asimétrica, se basa en el uso de dos claves diferentes, claves que poseen una propiedad fundamental: una clave puede desencriptar lo que la otra ha encriptado.

Generalmente una de las claves de la pareja, denominada clave privada, es usada por el propietario para encriptar los mensajes, mientras que la otra, llamada clave pública, es usada para desencriptar el mensaje cifrado.

Las claves pública y privada tienen características matemáticas especiales, de tal forma que se generan siempre a la vez, por parejas, estando cada una de ellas ligada intrínsecamente a la otra, de tal forma que si dos llaves públicas son diferentes, entonces sus llaves privadas asociadas también lo son, y viceversa.

Los algoritmos asimétricos están basados en funciones matemáticas fáciles de resolver en un sentido, pero muy complicadas de realizar en sentido inverso, salvo que se conozca la clave privada, como la potencia y el logaritmo. Ambas claves, pública y privada, están relacionadas matemáticamente, pero esta relación debe ser lo suficientemente compleja como para que resulte muy difícil obtener una a partir de la otra. Este es el motivo por el que normalmente estas claves no las elige el usuario, si no que lo hace un algoritmo específico para ello, y suelen ser de gran longitud.

Mientras que la clave privada debe mantenerla en secreto su propietario, ya que es la base de la seguridad del sistema, la clave pública es difundida ampliamente por Internet, para que esté al alcance del mayor número posible de personas, existiendo servidores que guardan, administran y difunden dichas claves.

En este sistema, para enviar un documento con seguridad, el emisor (A) encripta el mismo con la clave pública del receptor (B) y lo envía por el medio inseguro. Este documento está totalmente protegido en su viaje, ya que sólo se puede desencriptar con la clave privada correspondiente, conocida solamente por B. Al llegar el mensaje cifrado a su destino, el receptor usa su clave privada para obtener el mensaje en claro.

Una variación de este sistema se produce cuando es el emisor A el que en cripta un texto con su clave privada, enviando por el medio inseguro tanto el mensaje en claro como el cifrado. Así, cualquier receptor B del mismo puede comprobar que el emisor a sido A, y no otro que lo suplante, con tan sólo desencriptar el texto cifrado con la clave pública de A y comprobar que coincide con el texto sin cifrar. Como sólo A conoce su clave privada, B puede estar seguro de la autenticidad del emisor del mensaje. Este sistema de autentificación de denomina firma digital.

11

Page 18: Software para cifrado

Para que un algoritmo de clave pública sea considerado seguro debe cumplir:

1. Conocido el texto cifrado no debe ser posible encontrar el texto en claro ni la clave privada.

2. Conocido el texto cifrado (criptograma) y el texto en claro debe resultar más caro en tiempo o dinero descifrar la clave que el valor posible de la información obtenida por terceros.

3. Conocida la clave pública y el texto en claro no se puede generar un criptograma correcto encriptado con la clave privada.

4. Dado un texto encriptado con una clave privada sólo existe una pública capaz de desencriptarlo, y viceversa.

La principal ventaja de los sistemas de clave pública frente a los simétricos es que la clave pública y el algoritmo de cifrado son o pueden ser de dominio público n y que no es necesario poner en peligro la clave privada en tránsito por los medios inseguros, ya que ésta está siempre oculta y en poder únicamente de su propietario. Como desventaja, los sistemas de clave pública dificultan la implementación del sistema y son mucho más lentos que los simétricos.

Generalmente, y debido a la lentitud de proceso de los sistemas de llave pública, estos se utilizan para el envío seguro de claves simétricas, mientras que éstas últimas se usan para el envío general de los datos encriptados.

El primer sistema de clave pública que apareció fue el de Diffie-Hellman, en 1976, y fue la base para el desarrollo de los que después aparecieron, entre los que cabe destacar el RSA (el más utilizado en la actualidad).

Los principales sistemas criptográficos, tanto de clave simétrica como pública, se verán con más detenimiento más adelante.

2.4.3. Sistemas híbridos

En muchas ocasiones se implementan sistemas criptográficos híbridos, en los que se usa la llave pública del receptor para encriptar una clave simétrica que se usará en el proceso de comunicación encriptada. De esta forma se aprovechan las ventajas de ambos sistemas, usando el sistema asimétrico para el envío de la clave sensible y el simétrico, con mayor velocidad de proceso, para el envío masivo de datos.

12

Page 19: Software para cifrado

3. Algoritmos más importantes de cifrado simétrico

3.1. DES (Data Encryption Standard)

En 1973, el National Bureau of Standards (NBS) solicitó el desarrollo de nuevos sistemas criptográficos mediante convocatoria pública en el Registro Federal de los Estados Unidos, Como resultado de la misma, IBM presentó en el año 1975 el sistema de cifrado de clave secreta denominado DES (Data Encryption Standard). Después de gran diversidad de análisis y discusiones públicas, el DES se adoptó como estándar federal en los Estados Unidos para aplicaciones no clasificadas en enero de 1977, convirtiéndose en el procedimiento de cifrado más utilizado mundialmente. El NBS, hoy convertido en el NIST (National Institute of Standards and Technology) revisa el método cada cinco años. La ultima revisión tuvo lugar en 2001. La utilización del DES simple fue aprobada solo hasta el año de 1998, debido a los avances recientes en métodos criptoanalíticos, en las prestaciones de los ordenadores y en la tecnología de microchips, sin embargo, su aplicación en la modalidad de cifrado triple parece ser que seguirá siendo válida y segura para un futuro vigente.

Posteriormente se sacó una versión de DES implementada por hardware, que entró a formar parte de los estándares de la ISO con el nombre de DEA.

Se basa en un sistema monoalfabético, con un algoritmo de cifrado consistente en la aplicación sucesiva de varias permutaciones y sustituciones. Inicialmente el texto en claro a cifrar se somete a una permutación, con bloque de entrada de 64 bits (o múltiplo de 64), para posteriormente ser sometido a la acción de dos funciones principales, una función de permutación con entrada de 8 bits y otra de sustitución con entrada de 5 bits, en un proceso que consta de 16 etapas de cifrado.

En general, DES utiliza una clave simétrica de 64 bits, de los cuales 56 son usados para la encriptación, mientras que los 8 restantes son de paridad, y se usan para la detección de errores en el proceso.

Como la clave efectiva es de 56 bits, son posible un total de 2 elevado a 56 = 72.057.594.037.927.936 claves posibles, es decir, unos 72.000 billones de claves, por lo que la ruptura del sistema por fuerza bruta o diccionario es sumamente improbable, aunque no imposible si se dispone de suerte y una gran potencia de cálculo.

Los principales inconvenientes que presenta DES son:

• Se considera un secreto nacional de EU, por lo que está protegido por leyes específicas, y no se puede comercializar ni en hardware ni en software fuera de ese país sin permiso específico del Departamento de Estado.

• La clave es corta, tanto que no asegura una fortaleza adecuada. Hasta ahora había resultado suficiente, y nunca había sido roto el sistema. Pero con la potencia de cálculo actual y venidera de los computadores y con el trabajo en equipo por Internet se cree que se puede violar el algoritmo, como ya ha ocurrido una vez, aunque eso sí, en un plazo de tiempo que no resultó peligroso para la información cifrada.

• No permite longitud de clave variable, con lo que sus posibilidades de configuración son muy limitadas, además de permitirse con ello la creación de limitaciones legales.

• La seguridad del sistema se ve reducida considerablemente si se conoce un número suficiente textos elegidos, ya que existe un sistema matemático, llamado Criptoanalisis Diferencial, que puede en ese caso romper el sistema en 2 elevado a 47 iteraciones.

13

Page 20: Software para cifrado

Entre sus ventajas cabe citar:

• Es el sistema más extendido del mundo, el que más máquinas usan, el más barato y el más probado.

• Es muy rápido y fácil de implementar.

Actualmente DES ya no es estándar y fue roto en Enero de 1999 con un poder de cómputo que efectuaba aproximadamente 250 mil millones de ensayos en un segundo.

3.1.1. Descripción

El sistema de cifrado de clave secreta DES cifra bloques de información de 64 bits con una clave de 56 bits. La clave inicial K es igualmente de 64 bits, si bien el bit menos significativo de cada byte se utiliza como bit de paridad.

En consecuencia, los bits de paridad (ocho en total) pueden ser eliminados al no aportar ninguna información adicional a la clave, quedando así ésta reducida a 56 bits. En estas condiciones, los 64 bits del mensaje en claro, numerados de más a menos significativo de 1 a 64, se mezclan inicialmente mediante una permutación Pl definida por la siguiente tabla:

La tabla indica que el bit que ocupa la posición 58 del mensaje claro pasa a ocupar la posición 1 después de la permutación y así sucesivamente, leyendo la tabla de izquierda a derecha y de arriba abajo. Con todo ello, los 64 bits permutados se dividen en dos sub-bloques (Lo, Ro), respectivamente izquierdo y derecho, de 32 bits cada uno. En estas condiciones, el cifrado DES viene definido por las ecuaciones:

14

Page 21: Software para cifrado

Al final de la vuelta 16 se aplica la permutación inversa de la inicial Pl a los 64 bits concatenados ( L{1¡ /?16), siendo la salida de esta permutación el cifrado del mensaje inicial. La permutación inversa referida viene definida por la siguiente tabla:

Evidentemente, si el mensaje a cifrar tiene una longitud mayor de 64 bits, entonces se divide en bloques de esta longitud a cada uno de los cuales se aplica el esquema anterior.

3.1.2. Generación de las subclaves

El procedimiento para la generación de las subclaves Ki para i = 1,... 16 se lleva a cabo partiendo de la clave K de 64 bits numerados de más a menos significativo de 1 a 64, a los cuales se aplica una permutación PCI que a su vez elimina los bits de paridad de cada byte de acuerdo con la tabla:

15

Page 22: Software para cifrado

Los 56 bits de salida de PCI se dividen en dos sub-bloques (Co, Do) de 28 bits cada uno. Con todo ello, la generación de las subclaves Ki par i — 1,... 16 se lleva a cabo de acuerdo con ¡as ecuaciones:

16

Page 23: Software para cifrado

17

Page 24: Software para cifrado

donde LS(..) y PC2 es un desplazamiento circular a la izquierda de 1 ó 2 bits del entero binario que toma como argumento de acuerdo con la siguiente tabla:

3.1.3. Norma LS(..) de desplazamiento circular a la izquierda de bits

Por su parte PC2 es una función de permutación y selección de los 56 bits (numerados de más a menos significativo de 1 a 56 ) resultantes de concatenar los valores (C¡, D() de 28 bits cada uno. La salida de PC2, es decir, la subclave Ki está constituida por los 48 bits obtenidos como se indica en la tabla:

Las operaciones LS(... ) y PC2 se repiten 15 veces para así obtener las 15 subclaves de cifrado restantes. Los procesos de cifrado y generación de claves se resumen esquemáticamente en la figura "Cifrado DES".

Para descifrar se utiliza el mismo algoritmo pero con las subcíaves en orden inverso, es decir, K16 en la primera vuelta, K15 en la segunda, etc. En consecuencia, durante el proceso de cifrado las subclaves pueden calcularse en paralelo con los cifrados parciales mientras que para realizar el descifrado es preciso calcular de forma previa todas las subclaves.

3.1.4. La función f(...)

La función /(/?M, AT,) tiene como entradas los 32 bits de ¿?(._, y los 48 bits de la subclave Ki.

Inícialmente, los 32 bits de R¡ ( atraviesan una función de expansión E que los transforma en 48 bits, los cuales se suman con los 48 bits de la subciave Ki mediante una función OR exclusiva. Los 48 bits resultantes se subdividen en 8 bloques de 6 bits cada uno, que son las respectivas entradas a ocho funciones no lineales denominadas cajas (SI , ...... S8). Cada una de estas cajas es una tabla de doble entrada con cuatro filas

18

Page 25: Software para cifrado

(numeradas de arriba abajo como 00, 01,10 y 11) y dieciséis columnas (numeradas de izquierda a derecha como 0000, 0001,...., 1111). En estas condiciones, sea bó b5 b4 b3 b2 bl uno de los ocho bloques de 6 bits de entrada a una de las cajas. Entonces, la salida de la misma es un valor entero de O a 15 (representable con cuatro bits) almacenado en la posición definida por la fila bóbl y la columna b5 b4 b3 b2 de la caja. Los cuatro bits de salida de cada una de las ocho cajas (S1,...,S8) se concatenan de izquierda a derecha formando una secuencia de 32 bits, los cuales se mezclan mediante una permutación P constituyendo la salida de la función f(...)- Lo anterior se muestra esquemáticamente en la siguiente figura:

19

Page 26: Software para cifrado

La robustez del DES está basada en la estructura de estas cajas, habiéndose demostrado que cualquier cambio en ellas debilita el método 1. Algunos de los principios conocidos de su diseño son las siguientes:

1. Las filas de cada caja son una permutación de los enteros (O,-..,15).

2. La salida de ninguna de las cajas es una función lineal o afín de su entrada.

3. El cambio de un bit en la entrada a una caja provoca al menos el cambio de dos bits de la salida de la misma.

4. S(x) y S(x © 001100) deben diferir por lo menos en dos bits.

20

Page 27: Software para cifrado

6. Las cajas se diseñaron de tai manera que cuando un bit de la entrada se mantiene constante minimizan

la diferencia entre el número de ceros y unos a su salida.

7. Si se fijan uno de los bits de la entrada a cualquier caja y se observa un bit de posición fija en la salida entonces el número de entradas para las que el bit de salida es aproximadamente igual al número de entradas para las que el bit de salida es 1.

21

Page 28: Software para cifrado

3.2. Triple DES Como se ha visto, el sistema DES se considera en ta actualidad poco práctico, debido a la corta longitud de su clave. Para solventar este problema y continuar utilizando DES se creó el sistema Triple DES (TOES), basado en tres iteraciones sucesivas del algoritmo DES, con lo que se consigue una longitud de clave de 128 bits, y que es compatible con DES simple.

Este hecho se basa en que DES tiene la característica matemática de no ser un grupo, lo que implica que si se encripta ef mismo bloque dos veces con dos llaves diferentes se aumenta el tamaño efectivo de la llave.

Para implementarlo, se toma una clave de 128 bits y se divide en 2 diferentes de 64 bits, aplicándose el siguiente proceso al documento en claro:

1. Se le aplica al documento a cifrar un primer cifrado mediante ía primera clave, Cl.

2. Al resultado (denominado ANTIDES) se le aplica un segundo cifrado con la segunda clave, C2.

3. Y al resultado se le vuelve a aplicar un tercer cifrado con la primera clave, Cl.

22

Page 29: Software para cifrado

Si la clave de 128 bits está formada por dos claves iguales de 64 bits (C1=C2), entonces el sistema se comporta como un DES simple.

Tras un proceso inicial de búsqueda de compatibilidad con DES, que ha durado 3 años, actualmente TDES usa 3 claves diferentes, lo que hace el sistema mucho más robusto, al conseguirse longitudes de clave de 192 bits (de los cuales son efectivos 168), mientras que el uso de DES simple no está aconsejado.

En concreto, B.S. Kaliski, analiza los métodos de cifrado múltiple propuestos, clasificándolos en tres categorías:

1. Métodos sin encadenamiento de

bloques: EEE3, EEE2,EDE3,EDE2

2. Métodos con encadenamiento del bloque de cifrado exterior a los tres cifrados elementales DES:

EEE3-CBC, EDE3-CBC, EEE2-CBC, EDE2-CBC

3. Métodos con encadenamiento del bloque de cifrado interior a cada uno de los tres cifrados elementales DES:

CBC-EEE3, CBC-EDE3, CBC-EEE2, CBC-EDE2

En la notación anterior 'E' representa el cifrado, 'D1 el descifrado, '3' indica que se utilizan tres claves diferentes Kl?t K2#K3 , una para cada uno de los tres cifrados y '2' significa que se emplean dos claves K1#K2 para efectuar los tres cifrados, utilizándolas en el orden (K1,K2,K1).

Los métodos más utilizados en la industria son el EDE2-CBC así como el CBC-EDE2, ambos con dos claves, puesto que se admite que su seguridad es suficiente. Eos métodos EEE2 y EEE3 no se suelen utilizar ya que la permutación inicial del segundo cifrado deshace la permutación inversa final del primero. Estas permutaciones no añaden seguridad al cifrado elemental DES. Sin embargo se teme que su eliminación en el cifrado múltiple pudiera introducir alguna debilidad aún desconocida en el método.

En la figura siguiente se recogen los esquemas básicos de funcionamiento de dos de los métodos de cifrado triple con dos claves, uno de ellos con encadenamiento del bloque cifrado exterior a los tres cifrados elementales (CBC-ED2) y el otro (ED2-CBC) con encadenamiento del cifrado interior a cada uno de ellos, en donde IV es un vector de inícialización de 64 bits elegido aleatoriamente, que se muestra a continuación:

23

Page 30: Software para cifrado

24

Page 31: Software para cifrado

3.3. IDEA (Internacional Data Encryption Algorithm)

• IDEA nace en Europa como respuesta a la falta de seguridad a largo plazo de DES. El algoritmo se realiza en colaboración por el Swiss Federal Institute of Technology de Zürich ( Dr. X. Lai / Prof. J. Massey) y Ascom.

• IDEA es un algoritmo simétrico (La clave para cifrar y la clave para descifrar es la misma), con clave de 128 bits, (El doble que DES).

• IDEA esta disponible a todo el mundo, totalmente especificado, no tiene restricciones de exportación, y es de fácil comprensión.

• IDEA actúa cifrando grupos de 64 bits binarios. Para ello utiliza una clave de 128 bits. Si el bloque a cifrar es menor de 128 bits, hay que rellenar con ceros.

• IDEA cifra en bloques. Esto quiere decir que con un bloque de 64 bits (texto en claro) y una clave de 128 bits obtenemos un nuevo bloque de 64 bits (criptotexto).

25

Page 32: Software para cifrado

3.3.1. Funcionamiento del Algoritmo

Paso 1: Obtención de las claves:

IDEA utiliza 52 subclaves para el proceso de cifrado de cada bloque de 64 bits. Para obtener las claves Ki se divide la clave principal en 8 sub-bloques de 16 bits. Estas son las primeras 8 subclaves. A continuación se desplaza la clave original de 128 bits 25 posiciones a la izquierda. Se vuelve a dividir en 8 sub-bloques y ya tenemos las 8 subclaves siguientes. Este procedimiento se repite hasta obtener las 52 claves.

Paso 2: Cifrado de un bloque:

El algoritmo de cifrado consta de 8 pasos en los que intervienen 6 subclaves por paso, así como una transformación final que requiere de 4 subclaves mas (Por eso se utilizan 52 subclaves: 8x6 + 4).

Se divide el texto en claro de 64 bits en 4 sub-bloques de 16 bits cada uno. El primer y cuarto sub-bloque se combinan con la primera y cuarta subclave utilizando multiplicación modulo (2A16)+1 (Esto quiere decir que multiplicamos 2 números de 16 bits, correspondiendo el 0000000000000000 a 2A16). A estos resultados lo llamaremos rl y r4. El segundo y tercer bloque se combinan con la segunda y tercera subclave utilizando suma modulo 2A16 y los llamaremos r2 y r3.

A continuación se realiza un XOR entre rl y r3 para obtener si, y XOR entre r2 y r4 para obtener s2. si se multiplica modulo (2A16)+1 con la quinta clave para obtener t i . ti se suma modulo 2A16 con s2 para obtener (2, que se multiplica modulo (2A16)+1 con la sexta clave para obtener t3, el cual se suma modulo 2AI6 con ti para obtener t4.

Haciendo un XOR de t3 con rl obtenemos el primer bloque para el siguiente paso. El segundo bloque es t3 XOR r3. El tercer bloque es t4 XOR r2 y el cuarto bloque es t4 XOR r4.

Con estos 4 bloques y las siguientes 6 claves, repetimos todo el paso anteriormente descrito. Al realizar los 8 pasos, utilizando 48 subclaves, obtendremos 4 bloques. Por ultimo se realiza una transformación final en la que intervienen las últimas 4 subclaves. El primer y cuarto bloque se operan multiplicación modulo (2AI6)+1 con la 49a y 52a claves, y el segundo y tercer bloque se operan suma modulo 2A16 con la 50a y 51a claves. El bloque de 64 bits resultante es el criptotexto.

Paso 3: Descifrado de un Bloque:

El proceso de descifrado a nivel algorítmico es exactamente el mismo que el de cifrado, por lo que el esquema gráfico es idéntico. La única diferencia estriba en las subclaves a utilizar, que serán las siguientes: utilizando subclaves de descifrado calculadas a partir de fas subclaves de cifrado. En concreto, las subclaves de descifrado de ciclo i son:

Las subclaves que en el cifrado se utilizan multiplicando se corresponden con las subclaves inversas en el descifrado, mientras que las subclaves que en el cifrado se utilizan sumando se corresponden con las opuestas en el descifrado. Por su parte, las subclaves correspondientes a la transformación de salida en el descifrado son:

26

Page 33: Software para cifrado

27

Page 34: Software para cifrado

28

Page 35: Software para cifrado

4. RSA (criptografía de clave pública)

4.1. Breve historia

En 1976 Whitfield Diffie y Martín Hellman inventaron un método para el intercambio de claves secretas en canales abiertos surgiendo como ilustración del artículo "New directions in Cryptography". El procedimiento esta basado en un sistema de claves asimétrico en el que cada comunicante posee dos claves, una de ellas secreta y la otra publica. Este método no solo resolvió el problema del intercambio de claves, sino que además fue el origen de la denominada criptografía de clave publica, cuya aplicación tiene importantes implicaciones en el ámbito de la seguridad de las comunicaciones digitales.

Su importancia se debe sobre todo al hecho de ser el inicio de los sistemas asimétricos, ya que en la práctica sólo es válido para el intercambio de claves simétricas, y con esta funcionalidad es muy usado en los diferentes sistemas seguros ímplementados en Internet, como SSL (Secure Socket Layer) y VPN (Virtual Prívate Network).

Matemáticamente se basa en las potencias de los números y en la función mod (módulo discreto). Uniendo estos dos conceptos se define la potencia discreta de un número como Y = Xa mod q. Si bien el cálculo de potencias discretas es fácil, la obtención de su función inversa, el logaritmo discreto, no tiene una solución analítica para números grandes.

Para generar una clave simétrica compartida entre dos usuarios, A y B, ambos parten de un generador de números pseudo aleatorios, que suministra un número de este tipo diferente a cada uno, Xa y Xh. Estos son las claves privadas de A y B. Con estos números y las claves públicas $ y q que ambos conocen, cada uno genera un número intermedio, Ya e Yb, mediante las fórmulas:

Estos números son intercambiados entre ambos, y luego cada uno opera con el que recibe del otro, obteniendo en el proceso el mismo número ambos:

Este número K es la clave simétrica que a partir de ese momento ambos comparten, y que pueden usar para establecer una comunicación cifrada mediante cualquiera de los sistemas simétricos.

Page 36: Software para cifrado

Con este esquema, si se desea compartir una clave privada con otro usuario cualquiera, basta con acceder a su Y y enviarle la nuestra. Para facilitar este proceso se suelen publicar las Y de todos los usuarios interesados u uen un directorio de acceso común.

El sistema de cifrado asimétrico de clave publica RSA fue propuesto por R. L. Rivest, A. Shamir y L. Adleman en 1977 y posteriormente patentado por el MIT (Massachussets Institute of Technology). El sistema RSA es uno de los métodos de cifrado mas utilizados, debido a sus especiales características y prestaciones. Desde su aparición en 1978 ([54]) el sistema de llave pública RSA (de Rivest, Shamir y Adleman) ha ganado gran popularidad, por una parte por la gran seguridad que ofrece al basar ésta en un problema matemático difícil de resolver que había dejado de tener interés en la comunidad mundial, cómo lo es el Problema de la Factorización Entera PFE y a causa del sistema RSA se ha retomado e incrementado su investigación. Por otra parte, aunque ¡mplementar RSA requiere de mucho cuidado en detalles que son necesarios, la idea de su funcionamiento es muy simple de entender, lo que lo hace muy popular principalmente en sectores donde no hay abundancia de matemáticas.

4.2. Descripción del algoritmo RSA

Sean p y q dos números primos grandes de 100 dígitos cada uno y n=pq su producto. Sea ^(AO la función de Euler de n, indicadora del numero de valores enteros menores que N que son relativamente primos con n. En este caso particular , la función ^(tt) viene dada por el producto:

En estas condiciones, sea "e" un valor entero aleatorio relativamente primo con (f>(n) tal que 1<¿'<N y sea d otro entero tal que verifica la congruencia:

con k valor entero. En estas condiciones, para cualquier valor entero M se verifica que si C = Me(mod n) entonces M ~ Cd(mod n), es decir que:

30

Page 37: Software para cifrado

Para demostrarlo se utilizara eí teorema chino de los restos congruentes. Dicho teorema asegura que la congruencia anterior se verifica si y soío si se verifican a su vez las dadas por:

Nótese que en el caso de que M no sea relativamente primo con n, entonces debe ser múltiplo de p o múltiploe q, con lo que las congruencias anteriores se verifican igualmente de forma trivial. Esta demostración es

dla base del sistema de cifrado RSA. Dicho sistema esta constituido por las claves n, e, y d, respectivamente modulo de trabajo y exponentes de cifrado y descifrado. El valor de n es publico, así como el de uno de los dos exponentes (e o d), mientras que el otro permanece en secreto, por ejemplo:

Clave pública: (n , e) Clave secreta: (n , d)

Para realizar el cifrado C de un mensaje en claro M tal que 1 < M < N , el mensaje se eleva a la potencia e y el resultado se reduce al módulo n. Es decir:

La recuperación del mensaje en claro M se lleva a cabo elevando el mensaje cifrado C a la potencia d (clave pareja de e) y reduciendo la expo nene i ación módulo n de acu o con la congruencia: erd

La recuperación del mensaje M puede igualmente llevarse a cabo aplicando el teorema chino de los restos congruentes calculando:

31

Page 38: Software para cifrado

Como se ve, en este procedimiento de cálculo, todas las exponeciaciones modulares se reducen bien (mod p) o bien (mod q), por lo que este método es considerablemente mas rápido que el cómputo de la exponenciación modular.

Además, los valores de las variables dp, dq, Ap y Aq pueden calcularse previamente. Sin embargo, este procedimiento de calculo puede ser tan solo utilizado por el prop tario de la clave secreta, puesto que el es

32

ieel único que conoce los factores primos p y q

Page 39: Software para cifrado

Los números primos p y q son secretos, constituyendo la trampa del sistema. El cálculo de la clave secreta d es sencillo, mientras que sin el conocimiento de los factores primos p y q. eí calculo de la clave secreta es

33

Page 40: Software para cifrado

equivalente al calculo de la factorización de la clave publica N. Aquí es donde radica la seguridad del método RSA, puesto que el problema de la factorización de un numero compuesto n, producto de dos factores primos, tiene un complejidad exponencial dada por e^\n(n) ln In(rc) .

Por esta razón se requiere la utilización de números primos muy grandes.

RSA esta basado sobre la dramática diferencia entre facilidad de encontrar números primos grandes y la dificultad de factorizar el producto de dos números primos grandes.

Respecto a la imple mentación de las técnicas de realizar aritmética con números de múltiple precisión o longitud "grande", se requiere de mayor espacio.

El algoritmo RSA es usado esencialmente en:

• Generación de llaves RSA

• Cifrado del texto original m

• Descifrado del texto cifrado c

Page 41: Software para cifrado

4.3. El tamaño de la llave pública N

Si se puede factorizar al número K , entonces se puede conocer a ™, y por lo tanto calcular a " a partir de e , es decir, se romperá el sistema.

El problema de calcular a " y factorizar a n son computacionalmente equivalentes, la elección de " y ** debe ser de tal forma que la factor i zac ion de " sea computacionalmente "imposible". A continuación se precédese precédese procede a encontrar el tamaño de los números primos " ," , para lograr el objetivo.

_ iY Si n = ¿ entonces n esta en el extremo de ser fácilmente factorizable, es decir, K esta en la forma más simple de poder ser factorizable ya que K tiene muchos factores y estos son del menor tamaño posible. Entonces si n tiene un mínimo de factores y tales factores son grandes, n posiblemente estará en el otro extremo, el de ser "imposible" su factorización. Es decir si ~ *" donde " y * son números primos y de considerable tamaño, entonces la factorización de K debe ser difícil.

4.4. Tiempo de factorización en la práctica

Hoy en día, parece ser que el problema de factorización ha progresado enormemente, este gran impulso lo ha provocado en gran parte la criptografía y más concretamente el sistema RSA. Enseguida nos proponemos a dar los datos que se tienen del crecimiento sobre la factorización de números enteros y estimar cual sería el tiempo en que se tardará la humanidad en factorizar un número entero considerado hoy imposible de factorizar.

Aunque se muestre que un algoritmo corre a tiempo subexponencial o más aún a tiempo polinomial, el tiempo de calendario (tiempo real en meses, días o minutos) puede variar mucho dependiendo de la entrada del algoritmo y del equipo de cómputo con que se cuenta. Existe una forma de medir el potencial de cómputo y de esta forma determinar cuál sería el tiempo en calendario que llevaría factorizar un número entero "grande" y cuándo podría llevarse a cabo esto.

La notación "mips" significa millones de instrucciones por segundo y es tomada como medida estándar para registrar la potencia de cómputo con que se cuenta. Un mips tiene como origen la potencia de cómputo que realizaba una DEC VAX 11/780. Un mipsy significa el número de instrucciones que se pueden realizar en un

i n 9 ano con un poder de cómputo de un mips, es decir 31 536 x instrucciones. 1 u

Para poder determinar cuándo se podría contar con el poder necesario para factorizar un número entero de tamaño conocido se debe saber qué poder de cómputo es necesario utilizar para tal factorización.

Esto se estima de la siguiente manera: partimos de que se sabe cuántos mipsy son utilizados para factorizar un número entero, por ejemplo un número de 129 " - 429 bits se puede factorizar con 1000 my, entonces para

T T poder factorizar un número de 512 bits necesitaremos de 512 , donde 512lo se obtiene de la siguiente fórmula:

donde Tn-1 es el poder de cómputo requerido para un número de menos bits y L[n], L[n-1]son las respectivas complejidades que toma la criba de campos numéricos general, así por ejemplo para saber el poder de cómputo requerido para factorizar un número entero de 512 bits procedemos como sigue:

35

Page 42: Software para cifrado

Enseguida se muestra la estimación del poder de cómputo requerido para factorizar un número enlero de la longitud respectiva pensando en usar la criba de campos numéricos general, ya que el número entero es aleatorio.

36

Page 43: Software para cifrado

Con estos datos se puede; de un modo más fundamentado, estimar la seguridad de las llaves utilizadas en RSA, es decir, el poder usar una llave de longitud predeterminada sin arriesgar la seguridad, al menos evitando el ataque de la factorización (que es el ataque más seguro conocido hasta hoy).

A partir de las observaciones anteriores se muestra en la siguiente tabla el año donde es posible pensar que la longitud de la llave señalada puede ser rota:

El año límite se refiere al año en donde el sistema debe comenzar a evaluar el cambio de la longitud de lallave a una longitud superior.

4.5. Criterios de implantación

En cuanto a las longitudes de claves, el sistema RSA permite longitudes variables, siendo aconsejable actualmente el uso de claves de no menos de 1024 bits (se han roto claves de hasta 512 bits, aunque se necesitaron más de 5 meses y casi 300 ordenadores trabajando juntos para hacerlo). La longitud de las llaves que se usan en el sistema RSA en el año de 2002, deben de ser de 1024 bits, donde los primos tengan casi la misma longitud, esto proporciona una seguridad de al menos 10 años, 896 bits nos proporcionan una seguridad de un año.

Lo anterior nos sugiere que todas las etapas del sistema RSA deben de considerar el tamaño de 1024 bits, enseguida se da el detalle de alguna de ellas.

37

Page 44: Software para cifrado

4.5.1. Generación de números primos

Esta parte se dedicará a revisar el método que tendrá como salida números primos de una longitud que permita a la llave ser de 1024 bits, de hecho, los mismos algoritmos pueden ser usados para generar primos de mayor longitud con el respectivo gasto de tiempo.

Antes de entrar de lleno a la discusión sobre el cómo verificar que un número es primo, hablaremos brevemente de la generación de números pseudo aleatorios, cosa de no menor importancia, ya que de esto dependen fuertemente varios aspectos de seguridad en el sistema.

La principal característica de un número aleatorio, es que su probabilidad de ser elegido es la misma probabilidad que tiene cualquier otro número dentro de un intervalo, además la elección debe ser independiente. Sin embargo, existe una enorme discusión sobre la aleatoriedad real, es decir, cómo se pude estar seguro o cómo se puede demostrar que algún dispositivo es aleatorio, en realidad poco podríamos conseguir si nos restringimos al concepto puro de aleatorio.

La forma práctica de generar números pseudo aleatorios para propósito criptográficos es la siguiente: se spuede decir que se tienen dos etapas y una prueba, las dos etapas consi ten en primero generar un primer snúmero pseudo aleatorio que llamaremos semilla y la segunda una cadena de números pseudo aleatorios que provienen de una función de un sólo sentido, en la práctica se usa MD5, SHA-1, la función RS A, etc.

Para generar la semilla de un dispositivo pseudo aleatorio basado en software se deben de usar eventos que estén muy alejados de la intervención humana; por ejemplo, el sistema de reloj, el teclado, el ratón, el contenido de buffers de entrada y salida, o una combinación de los anteriores.

Para generar la cadena pseudo aleatoria se debe hacer uso de funciones de un sólo sentido como funciones Hash: MD5, SHA-1,..., la función RSA, la función logaritmo en curvas elípticas, etc.

4.5.2. Pruebas de primacidad

Prueba de primacidad con propósitos criptográficos

Paso 1: Genera un número impar aleatorio m

Paso 2: Este número se somete a la prueba de la división.

Paso 3: Si el número pasa la prueba del paso 2, se somete a una prueba probabilística de primacidad.

Paso 4: Si el número pasa la prueba del paso 3, se declara a este número como "primo".

Paso 5: Si el número m no pasa 3, regresamos al paso 2.

Se llamarán a los números que pasan la anterior prueba pseudo primos. En lo que sigue se dedicará a proporcionar cómo se debe de hacer para que la prueba sea eficiente y confiable

Justificación: paso2

Esta prueba consiste en dividir el número entero ^ por números primos pequeños que se mantiene en un arreglo de longitud constante. Primero se justifica la aplicación de esta prueba..

Esta prueba es conocida como la criba de Eratosthenes, que consiste en dividir a m por cada número primo

menor a ^ , y si resulta que ningún primo de estos es factor de m , entonces m es primo. Es obvio observar que como m es de considerable longitud, entonces esta prueba es inaplicable.

38

Page 45: Software para cifrado

39

Page 46: Software para cifrado

aceptables para propósitos comerciales, financieros o de seguridad nacional es muy recomendable usar una prueba más dura como la de Miller-Rabin.

4.5.2.2. Prueba de privacidad de Miller-Rabin

Sin duda, la prueba de Miller-Rabin es la más popular para generar números primos de gran longitud en los sistemas criptográficos, esto es porque además de que su implementación no requiere de mucho costo, este método proporciona una gran probabilidad de certeza. A esta probabilidad de error se denota como Pk,t , donde *• es el número de bits del número que tratamos de probar su primacidad, y * es el número de iteraciones que son usadas en el algoritmo de Miller-Rabin para obtener la probabilidad Pk,t . Mientras pasa el tiempo estas cotas se han ido mejorando.

4.6. Algoritmos implantados

En los procesos tanto de generación de llaves, cifrado y descifrado se realizan operaciones de suma, multiplicación, exponenciación, obtener inversos multiplicativos, etc., esto quiere decir, en términos de implementación y del tamaño de los números de 512 bits al menos, que es necesario diseñar la aritmética para tales números.

El primer problema con que nos encontramos es el cómo representar a números tan grandes ya que por ejemplo, la computadora PC actual sólo permite manejar números enteros de tamaño de 32 bits. La solución ha sido desarrollada ya desde hace varios años y le nombran números de múltiple precisión o de longitud grande. Actualmente, existen varios métodos que permiten realizar aritmética de múltiple precisión tanto implementados en software como en hardware , de esto depende en gran parte la rapidez del sistema por lo que es necesario encontrar las mejores formas de efectuar la aritmética de estos números, por ejemplo, se

-i" r? _ f^¿ _j_ -i

tiene una de las justificaciones que el sistema RSA use como exponente e a la constante * * ya que este número en su representación base 16, que es la más común para este tipo de uso, es 10001, lo que hace que la operación de exponenciación en cada encripción se efectúe lo más rápido posible.

Ea implementación del sistema RSA debe de hacerse con aritmética de múltiple precisión y usarse los algoritmos más rápidos.

4.6.1. La función de Euler Sea n un numero entero. La función de Euler <fr(n) es el número de valores enteros positivos menores que n y relativamente primos con n. Si el valor entero n se expresa de la forma:

con p, factores primos con multiplicidades respectivas e¡ para i = l....,t entonces la función de Euler (j)(ti) viene dada por la ecuación

40

Page 47: Software para cifrado

4.6.1.1. Teorema de Euler

Sean n y a valores enteros con "a" relativamente primo con n. En estas condiciones, si (j)(n) es ía función de Euler de n entonces se verifica que:

41

Page 48: Software para cifrado

42

Page 49: Software para cifrado

4.6.4. Algoritmo de exponenciación modular

La exponenciación modular es una operación básica en la mayoría de los sistemas de cifrado de clave publica. La exponenciación modular es una operación aritmética que tiene como entradas valores enteros a, b y c y como salida otro entero d - ab (mod c),

4.6.4.1. Método binario

Este método realiza el calculo de la exponenciación d = ab (mod c) partiendo de la representación binaria del exponente b. Para describirlo, supondremos en adelante que dicho exponente b tiene una longitud de n bits y un desarrollo binario de la forma:

La idea básica del método consiste en dividir el exponente b en grupos de m bits con O < m<= n, de tal forma que las operaciones necesarias para el calculo de la exponenciación modular se realizan en base a dicho grupo.

En el método binario (m = 1): los bits se agrupan de uno en uno. Este procedimiento también se conoce con la denominación de izquierda - derecha.

Así pues, el exponente queda fragmentado de la forma:

donde b^es el bit j del grupo i con O < i < k y O < j <m. En esta situación, denotaremos por h¡ el numero entero cuya representación binaria es:

con 0<i <k. Con todo lo anterior, un algoritmo general para el calculo de la nenciación modular en función del parámetro m es el siguiente:

43

expo

Page 50: Software para cifrado

44

Page 51: Software para cifrado

4.6.5. Generación de números primos

La generación de números primos es uno de los problemas de mayor relevancia en el desarrollo de sistemas criptográficos de clave publica. Para ello, existen procedimientos que permiten decidir acerca de la primalidad de un determinado valor entero sin necesidad de conocer los factores primos de este.

Las pruebas de primalidad pueden ser básicamente de dos tipos: deterministas y probabdísticas. Los primeros garantizan la primalidad de una manera absoluta, pero presentan el inconveniente de tener un costo computacional muy elevado cuando se trabaja con valores enteros muy grandes, lo cual sucede en la mayoría de los protocolos criptográficos de clave publica. A diferencia de los anteriores, las pruebas probabilísticas garantizan la primalidad tan solo con una cierta probalidad prefijable al comienzo del procedimiento. Sin embargo, esto es precisamente lo que los hace computacional mente viables cuando se trabaja con enteros grandes, razón por la cual son los mas utilizados en los protocolos criptográficos de clave publica antes referidos.

La prueba de probabilidad mas conocido y utilizado es el denominado Test de Miller-Rabin.

4.6.6. Test de probabilidad de Miller-Rabin

Esta es la prueba de primalidad probabilística mas utilizado en la practica. Se conoce también con la denominación de test pseudo primo fuerte y esta basado en el siguiente resultado: Sea N un numero primo impar y sea N-l = 22r con r impar. Entonces, para todo valor entero a relativamente primo con N se verifica una de las dos siguientes congruencias:

Para algún valor entero j tal que 0<j<s. Sin embargo, si n es un numero compuesto e impar, entonces como

áximo IÁ de los valores enteros a tales que 0<a<N verifican alguna de las dos congruencias anteriores. De echo, si N ^ 9, este numero máximo es de (j)(n) 14, siendo como antes (j>(n) la función de Euler de n.

45

mh

Page 52: Software para cifrado

46

Page 53: Software para cifrado

5. Curvas elípticas (criptografía de clave pública)

5.1. Definición del problema

Los protocolos usados en criptografía están claramente dominados por los derivados del sistema RSA, desde que sus autores lo hicieran público en 1978. La violación del RSA requiere o la factorización del módulo o el cálculo de logaritmos en anillos finitos. En ambos casos la complejidad de dichos algoritmos es exponencial si bien avances en métodos y prestaciones de ordenadores exigen utilizar números cada vez mayores para aumentar la seguridad del sistema. De hecho se usan ya habitual mente módulos de 1024 bits de longitud, que sean producto de dos primos de unos 500 y 524 bits de longitud cada uno.

Como gran alternativa, aparecen los criptosistemas basados en curvas elípticas, que fueron admitidos como válidos por la comunidad criptográfica, después de que en 1985 Miller y Koblitz sugirieran su uso. Su seguridad reside en la intratabilidad del problema del logaritmo elíptico. Durante esta última década este problema ha recibido una importante atención por parte de los matemáticos de todo el mundo. Afortunada o desafortunadamente todavía no se conoce ningún algoritmo de tiempo subexponencial para este problema en una curva no supersingular.

Frente a esta dualidad, no se puede dar una pauta general de comportamiento para que prevalezca el uso de un sistema frente al otro, sino que para ciertas necesidades va a ser mas útil uno, y para otro tipo de necesidades será mejor el otro.

5.1.1. Ventajas de la criptografía con curvas elípticas

El problema del logaritmo elíptico tiene una alta complejidad computacional, mayor que la del logaritmo discreto o la factorización. Por lo tanto la primordial ventaja que ofrecen los sistemas de curvas elípticas es su seguridad en relación al tamaño de la clave. La complejidad de cálculo de los llamados logaritmos elípticos, necesarios para la violación de los cifrados con curvas elípticas, es mucho mayor que la de la factorización, lo

47

Page 54: Software para cifrado

que permite obtener con curvas elípticas la misma seguridad que con RSA, pero con aproximadamente la cuarta parte de dígitos.

Este hecho hará que en el futuro crezca el interés por los criptosistemas de curvas elípticas, prefiriéndolos a otros criptosistemas de clave pública. Una clave más corta significa unos certificados y unos parámetros del sistema más cortos. Estas ventajas se manifiestan por sí mismas en temas relacionados con las comunicaciones, como eficiencia en el almacenamiento de datos, anchura de banda y computabilidad.

Si además estos criptosistemas son implementados usando el cuerpo finito F2m la eficiencia es todavía

susceptible de más mejoras, sobre todo aprovechando las compactas arquitecturas existentes para la multiplicación a la hora de implementar el hardware.

Asociadas a un cuerpo finito Fq existen del orden de q curvas elípticas diferentes y no isomerías que pueden ser usadas para los criptosistemas. Además, para un cuerpo finito fijado con q elementos, hay muchas posibles elecciones de una curva elíptica con una estructura determinada del upo de sus puntos. Como grlas operaciones con puntos de una curva elíptica requieren el uso de la aritm ca asociada al cuerpo de étidefinición de la curva, F re el que las optimizaciones de e¡, siempre se puede elegir un cuerpo finito sobeficiencia antes aludidas se puedan llevar a cabo, y reteniendo todavía la capacidad de elección de la curva y de la estructura del grupo de puntos asociada sobre la que se quiere trabajar.

5.1.2. Desventajas de la criptografía con curvas elípticas

Los elementos de una curva elíptica son puntos de dos coordenadas, y son estos con los que se opera en el cifrado y descifrado de mensajes. Las operaciones suma con los puntos no es trivial y exige una aritmética especial, que hace más lento el cifrado y el descifrado.

Por otra parte, en todos los protocolos de cifrado conocidos con curvas elípticas los mensajes cifrados, son por lo menos un 50% más largos que el mensaje en claro. Esto es debido fundamentalmente a que la seguridad del cifrado se basa en un entero k que relaciona dos puntos de la curva mediante la igualdad: \x[' ^i / k\x2' y2 ) • Entonces para mantener este parámetro secreto, se necesitan dos puntos de referencia, ((jtt, _y,), \X2, y 2)), y por lo tanto, al menos, dos elementos del cuerpo donde se ha definido la curva, para cifrar otro elemento de ese cuerpo.

Este hecho perjudica la comunicación al tener que enviar mensajes extensos, que además ralentizan el cifrado, la transmisión de datos y el descifrado, que ya eran inicialmente lentos por la aritmética asociada a ias curvas elípticas.

5.2. Propiedades

El desarrollo de las curvas elípticas en el siglo XX se fundamenta en el estudio de la ecuación que las caracteriza. Por lo tanto, una curva elíptica se define como el conjunto de puntos (je, y) que satisfacen la ecuación de Weierstrass:

48

Page 55: Software para cifrado

Las curvas pueden estar definidas en cualquier cuerpo K\ R de los número reales, Q de los racionales, C de los complejos o en un cuerpo finito Flf con los coeficientes ar a2, ay a4, a6 K. Con esta definición de curvas elípticas se ve claramente que son en realidad variedades algebraicas. Extendiendo la definición introducida antes, para distinguir cuando hablamos de una curva elíptica £ como variedad algebraica definida sobre el cuerpo K, la denotaremos como EIK\ mientras que si nos referimos al conjunto de puntos de una curva elíptica E definida sobre un cuerpo K, la denotaremos como E(K).

Las curvas tienen asociados varios parámetros que definiremos a continuación. Primordial mente: el discriminante A y ely-invarianteyfE).

Las curva elípticas útiles en criptografía son aquéllas cuyo discriminante es distinto de cero, garantizándose con esta condición que carecen de puntos singulares.

Los puntos de una curva elíptica, incluido el punto O, forman un grupo abeliano (E, +) con la siguiente definición de la operación suma, comúnmente llamada suma de la cuerda y la tangente. Para todo punto P, Q e E:

49

Page 56: Software para cifrado

50

Page 57: Software para cifrado

Estas operaciones se generalizan independientemente del cuerpo donde está definida la curva.

5.3. Las curvas elípticas definidas sobre un cuerpo finito

Las características de las curvas definidas sobre cuerpos finitos. Las propiedades del grupo de los puntos de una curva elíptica y los problemas de cálculo al definir esa curva en un cuerpo finito se muestran a continuación.

5.3.1. Redefinición de la ecuación de la curva elíptica y de las fórmulas aditivas

Una curva elíptica definida en un cuerpo finito se convierte en una nube de puntos, como podemos ver en la figura. Además, dado que los cuerpos finitos que se utilizan habitualmente en temas criptográficos son los de característica 2, F2

m, y los que tienen de cardinal un p o p mayor que 3, Fp.

rim

51

Page 58: Software para cifrado

5.3.1.1. Sobre el cuerpo Fp

Sí el cuerpo de definición de la curva tiene característica mayor que 3, independientemente de que tenga cardinal primo o potencia de primo, la ecuación de Weierstrass se puede simplificar bastante mediante cambios de variables biyectivos.

Supongamos que tenemos una curva EIK definida por la ecuación (2.3) y le aplicamos eJ cambio:

52

Page 59: Software para cifrado

53

Page 60: Software para cifrado

54

Page 61: Software para cifrado

5.3.2. La estructura de grupo y el número de puntos

Considerando una curva elíptica E definida sobre Fg, siendo q = pm, entonces para cada valor x e F(, se tienen como mucho dos valores para y. Heurísticamente, se puede esperar que para cada valor x la ecuación tenga solución para y con probabilidad '/2 y por lo tanto es de esperar que el cardinal de E(F(/), que denotamos como #£(F(/), tome un valor cercano a q. De hecho el teorema de Hasse confirma esta suposición.

Teorema de Hasse'. Sea #E(Fq) = q + I - t. Entonces /t/ < 2 q .

Demostración'.

Una consecuencia importante de este teorema, es que se puede encontrar un punto de la curva con relativa facilidad. Así, si se quiere hallar un punto elegimos aleatoriamente una coordenada x e Fír sustituimos su valor en la curva y calculamos la coordenada y resolviendo la ecuación resultante. La probabilidad de éxito es

I 1 de al menos — — — =• . Con lo cual podremos encontrar un punto de la curva con relativa facilidad. De hecho,

2 q contamos con un resultado que nos dice los posibles valores de #£(F(Í), donde E varía sobre todas las curvas elípticas definidas en F(¡.

Lema: Existe una curva elíptica E/Ff¡ tal que E(Fq) tiene orden q + 1 - í en F(/, si y sólo si se cumple alguna de las siguientes condiciones:

m

es impar y se cumple alguno de los siguientes requisitos:

I. t=0 II. t2=2q y p=2 III. t2= 3q y p=3

55

Page 62: Software para cifrado

56

Page 63: Software para cifrado

57

Page 64: Software para cifrado

58

Page 65: Software para cifrado

En la práctica no se conoce esta descomposición tan clara con los puntos de cada subgrupo. Únicamente se conoce la estructura del grupo a partir de la factorización del número de puntos de la curva. Si la dimensión de la curva es n - ",i2n3 U nr tendremos subgrupos de dimensión n¿ (siendo i = l,D,r), subgrupos de dimensión n\n\ (con í G y), etc., siempre que el grupo sea cíclico. Con esto se aprecia que la búsqueda de un generador del grupo no es tan trivial como pudiera parecer.

5.3.3.1. Calcular el número de puntos, factorizar y encontrar generadores

El cálculo del número de puntos es laborioso, como ya se ha indicado, pero es factible y quizá tenga que repetirse varias veces si las curvas elegidas no satisfacen las condiciones requeridas para el grupo de puntos. Este número es del orden de magnitud del número primo p que define el cuerpo finito F en que se opera. Si p es de 50 ó 60 dígitos, la factorización no representa un gran problema.

Si el número de puntos satisface la condición #E(F ) - p{p2 solamente habrá dos subgrupos no triviales, C

y C - En consecuencia lógica, habrá p{ puntos de orden p2, y p2 puntos de orden p¿ y por tanto p{p2 - (1 + p, + í>2) puntos de orden máximo p1/?2. Entonces la probabilidad de encontrar un generador del grupo es:

La extrapolación de esta probabilidad para otra posible factorización es sencilla dependiendo de la cantidad de divisores primos del orden del grupo y de su multiplicidad.

La verificación de que un punto determinado Q es generador (de orden n) requiere el conocimiento del valor de d,Q, para todo divisor d¡ de n. En cambio no es necesario calcular estos valores, ya que bastaría con

n calcular ——Q , recorriendo /j, todos los primos divisores de n. Si alguno de estos puntos es el punto del

Pi infinito, entonces no se tiene un punto generador; en caso contrario se hubiera encontrado un generador. De todas formas todavía habría que refinar un poco más este algoritmo encontrando un método óptimo para multiplicar un entero por un punto de la curva.

5.4. Criptografía con curvas elípticas

Es en 1986 cuando aparece la primera propuesta del uso de curvas elípticas para criptosistemas de clave pública. Desde entonces la implementación y la mejora de las prestaciones de estos criptosistemas han surgido rápidamente como la alternativa más eficiente al RSA. A continuación se observará como esta aplicación se ha llevado a término.

Las curvas elípticas tienen la propiedad de que sus puntos definen un grupo aditivo abeliano con la operación suma descrita anteriormente. La violación del RSA requiere o la factorización del módulo o el cálculo de logaritmos en anillos finitos. En ambos casos la complejidad de dichos algoritmos es subexponencial si bien avances en métodos y prestaciones de ordenadores exigen utilizar números cada vez mayores para aumentar la seguridad del sistema. La complejidad de cálculo de los llamados logaritmos elípticos, necesarios para la violación de los cifrados con curvas elípticas, es mucho mayor que la de la factorización, lo que permite obtener con curvas elípticas la misma seguridad que con RSA, pero con aproximadamente la cuarta parte de dígitos.

59

Page 66: Software para cifrado

Como se ha visto antes dado un punto P de una curva E(F ) es fácil calcular sus múltiplos, es decir, dado P y el entero a se puede obtener ap = Q. Dados dos puntos P y Q relacionados como aP = Q el cálculo de a es lo que se llama e! cálculo del logaritmo elíptico, por analogía con su equivalente en un grupo multiplicativo de un cuerpo finito Fq:

La complejidad computacional del cálculo de los logaritmos elípticos es de O\Jq\ para curvas no supersingulares. El cálculo de un logaritmo elíptico con q de 30 dígitos requiere aproximadamente 3.000 años de ordenador Cray; mientras que el cálculo de un lo ritmo en cuerpo finito con q de 80 dígitos requiere gasolamente un día. Esta dificultad añadida es la que sugiere el uso de curvas elípticas en criptografía.

Ejemplo: La curva £0 3(F2<)}: y2 = x3 + 3 (mod 29). Esta curva es supersingular. La curva tiene un cardinal n = 30 puntos, fáciles de calcular, ya que p - 29 es un número pequeño. Considerando la ordenación de puntos a partir del punto (1,2). Cualquier punto P de la curva se puede obtener como múltiplo aQ de varios otros puntos.

Por ejemplo:

(18, 21) = 24(1, 2) = 3(20, 12) = 8(8, 15) =4(18, 8) = 6(27, 16) = 12(4, 3)

Un ejemplo del problema del logaritmo elíptico en esta curva se puede plantear de la

siguiente manera: "Dado (18, 21) = a(27, 16). Calculara."

Normalmente no se tiene la lista de puntos como la anterior. Si se opera con q de 40 dígitos, 120 bits, la curva 40

tendría aproximadamente 10 puntos de 240 bits, 120 bits por coordenada. Además del tiempo necesario para su cálculo, se necesitaría una memoria de 3-10 Gbytes.

A continuación damos dos tablas donde se puede apreciar las ventajas la criptografía de curvas elípticas frente a la del RSA. Recuérdese que actualmente se recomiendan en RSA módulos de 1024 bits, es decir 300 dígitos. La tabla A indica ia complejidad de cálculo de la operación directa e inversa. Por su parte la tabla B hace una comparación de la seguridad y eficiencia de ambos métodos analizando el cifrado, rotura de la clave y el tiempo estimado para el cálculo de la función inversa.

60

Page 67: Software para cifrado

El métodos de comunicación criptográfica con curvas elípticas, basados en la seguridad ofrecida por el cálculo del logaritmo elíptico, que se utiliza es el siguiente:

5.5. Método El Camal

Es un algoritmo de cifrado de clave pública basado en curvas elípticas,

61

Page 68: Software para cifrado

B calcula hM ~ bkG y obtiene P = N- bM.

Un intruso tendría que calcular un logaritmo elíptico para violar la confidencialidad del mensaje, calculando b a partir de G y de bG-

Como se puede ver, la utilización de este método es independiente del cuerpo donde esté definida la curva, y el mensaje enviado y su cifrado son puntos de dicha curva. Esto podría parecer un problema trivial de protocolo, pero no es tan fácil de resolver como en el caso del RSA.

Un ejemplo de cifrado y descifrado utilizando el Método de El Gamal con Curvas Elípticas.

Usamos una curva E definida con:

62

Page 69: Software para cifrado

63

Page 70: Software para cifrado

64

Page 71: Software para cifrado

6. Firma digital

6.1. Definición

De forma permanente se escucha hablar de las bondades y la necesidad de utilizar la firma digital para efectuar determinadas transacciones en Internet con total seguridad. Sin embargo, la inmensa mayoría de quienes navegan por la red, e incluso muchos de los que hacen negocios en ella, no conocen con exactitud qué es, para qué sirve y cómo funciona la firma digital.

Dada la importancia que está adquiriendo la firma digital en los actuales sistemas de pago electrónico y en los sistemas de autentificación, vamos a ampliar un poco su estudio.

La firma digital es un bloque de caracteres que acompaña a un documento electrónico acreditando:

a) ¿Quién es su autor?

b) Su integridad

c) El no repudio

El mecanismo es el siguiente: se elige un conjunto de caracteres del texto, se cifra con mi clave secreta y lo añado al propio mensaje. Evidentemente, solamente el emisor podrá descifrar ese conjunto de caracteres; pero no es eso lo que importa (dichos caracteres pueden ser simples letras elegidas al azar), sino el hecho de que solamente yo puedo ser capaz de tal cosa. De ese modo se tiene un conjunto de bits asociados con el emisor por medio de la clave secreta. Pero como depende también del conjunto de caracteres (llamado revoltillo, resumen o "hash"), está asimismo ligado al mensaje: copiar una firma dada en otro mensaje no sirve de nada, ya que la clave pública del receptor comprueba que la firma digital:

a) Ha sido generada con la clave secreta del autor, y

b) Corresponde con el texto del mensaje actual.

Para que este esquema tenga éxito, es preciso una función "hash" que escoja fragmentos adecuados del texto a cifrar. Evidentemente, no sirve cifrar las cuatro primeras palabras del mensaje, ya que podría usarse esa fuñía en otro mensaje cuyas tres primeras palabras sean iguales. Es como un cheque donde no se pueden cambiar las palabras "pagúese la cantidad de...", pero sí el resto. Por otro lado, ¿por qué no cifrar todo el mensaje? Puede hacerse, pero este procedimiento podría doblar fácilmente el tamaño del mensaje. Tampoco es aconsejable: el ataque principal contra el sistema de cifrado RSA consiste en firmar un mensaje cuidadosamente escrito por el atacante; eso puede permitirle averiguar la clave secreta del firmante.

6.2. Esquema básico de una firma digital

65

Page 72: Software para cifrado

El proceso de firma digital consta de dos partes bien diferenciadas:

1) Proceso de Firma: en el que el emisor encripta el documento con su llave privada, enviando al destinatario tanto el documento en claro como el encriptado.

2) ón de la Firma; el receptor desencripta el documento cifrado con la clave Proceso de Verificacipública de A y comprueba que coincide con el documento original, lo que atestigua de forma total que el emisor del mismo ha sido efectivamente A.

El m digital no sólo proporciona autenticidad al mensaje enviado por A, si no que étodo de la firmatambién asegura el no repudio, ya que sólo el dueño de una llave privada puede encriptar un documento de tal forma que se pueda desencriptar con su llave pública, lo que garantiza que ha sido A y no otro el que ha enviado dicho documento.

Así mismo proporciona Integridad de datos, ya que si el documento fuera accedido y modificado en el camino el resumen del documento cambiaría también.

La firma digital suele usarse en comunicaciones en las que no existe una confianza inicial total entre los comunicantes. Se usan para autentificar mensajes, para validar compras por Internet, para realizar tran s de negocios. sferencias de fondos bancarios y para otras transaccione

Tan gal la firma electrónica constituye en la mayoría de los ta es la fuerza que posee éste sistema que a nivel lecasos una prueba de indudable de autoría del envío de un documento electrónico, semejante a la firma tradicional de puño y letra.

Un alegato que podría esgrimir A para negar la autoría del envío de un documento cifrado con su clave privada sería el echo de haber perdido dicha llave o que se la hayan sustraído, pero entonces hay que tener en cuenta que A es la única responsable del buen uso de su llave privada, por lo que está obligado a comunicar inmediatamente a la autoridad correspondiente cualquier circunstancia que ponga en peligro la seguridad de la misma.

Esto es análogo a io que ocurre con las tarjetas de débito o crédito, siendo siempre en último extremo responsable del uso indebido de las mismas el dueño de la tarjeta si no ha avisado a tiempo a su entidad financiera o banco de la pérdida o sustracción.

La firma digital es implementada dando dos alternativas, dependiendo de el uso que desea dar el usuario.

6.2.1. Cifrado y firma de forma conjunta

Se cifra el archivo de texto con dos claves, la pública del destinatario y la clave privada de la persona que firmará el mensaje.

Este tipo de cifrado permite que al mismo tiempo que se permite el descifrado exclusivamente al destinatario utilizando su clave privada, se firme el documento, ya que utiliza la clave pública del remitente.

Este tipo de cifrado y firma se ve implementado en RSA ya que este tipo de cifrado asimétrico nos proporciona las ventajas de usar claves públicas y privadas, y la implementación es eficaz porque en una sola emisión se están cubriendo dos fases importantes en la seguridad, es decir la autentificación con firmas digitales y el cifrado.

Para esta implementación primero se verifica cuál de las dos claves (la pública y la privada que se van a utilizar para cifrar) es más corta con el fin de optimizar.

66

Page 73: Software para cifrado

6.2.2. Cifrado y firma de forma independiente.

Para el caso en que se quiera descifrar el archivo independientemente de quien lo mandó, y verificar de forma separada la firma digital, el proceso es el siguiente.

Se cifra el archivo con la clave pública del destinatario y éste lo descifra utilizando únicamente su clave privada. Aquí no se está verificando la autenticidad.

De manera independiente se toma el mensaje que fue cifrado y se le aplica una función resumen (hash) para hacerlo más ligero y por tanto que la ejecución tiempo máquina sea más rápida y se cifra con la clave privada del remitente.

Ambos resultados se envían y al recibir el primero, es decir, el mensaje original, se aplica una función hash, la cual será comparada con el otro resultado que debe ser descifrado con la clave pública del remitente. Si ambos coinciden, se habrá verificado la autenticidad.

Este proceso es computacionalmente un poco más lento ya que efectúa más operaciones, pero es efectivo ya que no siempre se desea firmar, o averiguar quién envió el mensaje.

67

Page 74: Software para cifrado

A M se la aplica la función hash y se compara con el segundo proceso, si coinciden se verifica la autenticidad, pero de lo contrario, de cualquier forma se obtiene el mensaje descifrado. Este proceso se hace de forma interna.

La única diferencia de modo operacional es que se piden hacer las operaciones de forma separada. Primero cifro, luego firmo, y de forma análoga, primero descifro, después verifico la firma.

6.3. Funciones hash

Si imaginamos e] envío de un documento extenso que se quiere firmar digitalmente, se puede apreciar que cifrar el documento entero es una pérdida de tiempo, ya que los medios de encriptación de llave pública son lentos, pues precisan un gran proceso de cómputo.

Para solventar éste aspecto aparecen las funciones hash, que son unas funciones matemáticas que realizan un resumen del documento a firmar. Su forma de operar es comprimir el documento en un único bloque de

68

Page 75: Software para cifrado

longitud fija, bloque cuyo contenido es ilegible y no tiene ningún sentido real. Tanto es así que por definición las funciones hash son irreversibles, es decir, que a partir de un bloque comprimido no se puede obtener el bloque sin comprimir, y si no es así no es una función hash. Estas funciones son además de dominio público.

A un mensaje resumido mediante una función hash y encriptado con una llave privada es lo que en la vida real se denomina firma digital.

El esquema de firma digital mediante una función hash es el siguiente:

Y su mecanismo es el siguiente:

1) El emisor aplica una función hash conocida al documento, con lo que obtiene un resumen hash del mismo.

2) Encripta dicho resumen con su clave privada.

3) Envía al receptor el documento original plano y el resumen hash encriptado.

4) El receptor B aplica la función hash al resumen sin encriptar y desencriptar el resumen encriptado con la llave pública de A.

5) Si ambos coinciden está seguro de que ha sido A el que le ha enviado el documento. Si no coinciden, está seguro de que no ha sido A o de que el envío ha sido interceptado durante el medio de envío y modificado.

El caso de que ambos resúmenes no coincidan contempla también la posibilidad de que el mensaje haya sido alterado en su viaje de A a B, lo que conlleva igualmente el rechazo del documento por no válido.

Las funciones hash y la firma digital son elementos indispensables para el establecimiento de canales seguros de comunicación, basados en los Certificados Digitales.

Para que una función pueda considerarse como función hash debe cumplir:

• Debe transformar un texto de longitud variable en un bloque de longitud fija, que generalmente es pequeña (algunas son de 16 bits).

• Debe ser cómoda de usar e implementar.

• Debe ser irreversible, es decir, no se puede obtener el texto original del resumen hash.

• Debe ser imposible encontrar dos mensajes diferentes cuya firma digital mediante la función hash sea la misma (no-colisión).

69

Page 76: Software para cifrado

• Si se desea además mantener un intercambio de información con Confidencialidad, basta con

cifrar el documento a enviar con la clave pública del receptor.

Las funciones hash (o primitivas hash) pueden operar como MDC (Modificaron Ddetection Codes) o MAC(Message Authentication Codes)

Los MDC sirven para resolver el problema de la integridad de la información, al mensaje se le aplica un MDC (una función hash) y se manda junto con el propio mensaje, al recibirlo el receptor aplica la función hash al mensaje y comprueba que sea igual al hash que se envió antes.

Es decir, se aplica un hash al mensaje M y se envía con el mensaje (M, h(M)), cuando se recibe se le aplica una vez más el hash (ya que M es público)obteniendo h'(M), entonces se acepta que el mensaje se ha transmitido sin ,K.

Los tenticar el origen de los mensajes (junto con la integridad). MAC sirven para au

Es decir, se combina el mensaje M con la clave privada K, y se el aplica un hash (M) se comprueba la integridad de la clave privada K, entonces se demuestra que el origen es solo el que tiene la misma clave K, p autenticidad del origen del mensaje. robando así la

Propiedades que deben tener las primitivas hash:

1. Resistencia a la preimágen.

Significa que dada cualquier imagen, es computacionalmente imposible encontrar un mensaje x tal que h(x)=y. Otra forma como se conoce esta propiedad es que h sea de un solo sentido.

2. 2} Resistencia a una segunda preimágen.

Significa que dado x, es computacional mente imposible encontrar una x' tal que h(x)=h(x'). Otra forma de conocer esta propiedad es que h sea resistente a una colisión suave.

3. 3) Resistencia a colisión.

Signi nte imposible encontrar dos diferentes mensajes x, x' tal que fica que es computad o nal meh(x)-h(x'). Esta propiedad también se conoce como resistencia a colisión fuerte.

Las funciones hash más conocidas y usadas son:

- MD2, abreviatura de Message Digest 2, diseñado para ordenadores con procesador de 8 bits. Todavía se usa, pero no es recomendable, debido a su lentitud de proceso.

- MD4, abreviatura de Message Digest 4, desarrollado por Ron Rivest, uno de los fundadores de RSA Data Security Inc. y padre del sistema asimétrico RSA. Aunque se considera un sistema inseguro, es importante porque ha servido de base para la creación de otras funciones hash. Un sistema de ataque desarrollado por

70

Page 77: Software para cifrado

Hans Dobbertin posibilita el crear mensajes aleatorios con los mismos valores de hash (colisiones), por lo que ya no se usa. De hecho, existe un algoritmo que encuentra una colisión en segundos.

- MD5, abreviatura de Message Digest 5, también obr Ron Rivest, que se creó para dar seguridad a MD4, a dey que ha sido ampliamente usado en diversos campos, como autenticador de mensajes en el protocolo SSL y como fumador de mensajes en el programa de correo PGP. MD5 se sigue usando bastante en la actualidad.

- SHA-1, Secure Hash Algorithm, desarrollado como parte integrante del Secure Hash Standar (SHS) y el Digital Signatura Standar (DSS) por la Agencia de Seguridad Nacional Norteamericana, NSA. Sus creadores afirman que la base de este sistema es similar a la de MD4 de Rivest, y ha sido mejorado debido a ataques nunca desvelados. La versión act al se considera segura (por lo menos has se u ta que demuestre lo contrario) y es muy utilizada algoritmo de firma, como en el programa PGP en sus nuevas claves DH/DSS (Diffie-HelImán/Digital Signature Standar), Destacar también que en la actualidad se están estudiando versiones de SHA con longitudes de clave de 256, 384 y 512 bits.

- RIPEMD-160, desarrollada por un grupo de investigadores europeos, entre los que se encuentra Hans Dobbertin y otros investigadores incluidos en el proyecto RIPE (RACE Integrity Primitives Evaluation). Su primera versión adolecía de las mismas debilidades que MD4, produciendo colisiones, pero las versiones mejoradas actuales son consideradas seguras. Maneja claves muy robustas, normalmente de 160 bits, aunque existen versiones de 128 y se están planteando nuevas de 256 y 320 bits. Es muy rápido y no está patentado.

6.4. Algoritmo implantado

Para implantar las funciones hash, se hizo uso de un algoritmo de digestión en MD5 que se describe a continuación:

MD s datos. 5 es una manera de verificar la integridad de lo

Un algoritmo de cifrado que toma como entrada un mensaje de longitud arbitraria y produce como salida una digest" (compendio de mensajes) "fingerprint" (firma digital, huella dactilar digital) o un "message de 1 utiliza para aplicaciones de firma digital, donde un gran fichero debe 28 bits. El algoritmo MD5 seser comprimido de manera segura antes de ser cifrado con una clave privada (secreta) bajo un sistema de cifrado de clave pública tal como RSA.

DESCRIPCIÓN DEL ALGORITMO MD5

Supongamos tener un mensaje de b bits a la entrada, y se quiere obtener el extracto de salida, b es entero no negativo, puede o no ser múltiplo de 8 e incluso ser 0. Si se tienen los bits del mensaje como:

mOml ... m(b-l)

Se realizan 5 pasos:

Pasol. Abriendo bits de relleno

El mensaje se extiende (padding) hasta que su longitud es congruente con 448 bits (módulo 512). El padding se realiza así: se agrega un " 1" y todos "O" hasta completar 448 bits, al menos se agrega 1 bit y a lo sumo 512.

71

Page 78: Software para cifrado

Paso2. Agregando longitud

La representación de b se abre y se modifica, dicha representación es en 64 bits, si b ahora es mayor de 2A64 entonces sólo se usan los 32 bits de menor orden. El mensaje resultante tiene una longitud múltiplo de 512 bits. En forma equivalente también es múltiplo de 16 (32) bits. Paso3. Inicializando el buffer MD

Se usa un buffer de 4 palabras (A, B, C, D) para computar el extracto del mensaje. A, B, C y D, son registros de 32 bits. Se inicializan así:

palabra A: OI 234567

palabra B: 89 ab cd ef

palabra C: fe de ba

98 palabra D:

765432 10

Paso 4, Procesamiento del Mensaje en bloques de 16-Word

Se definen primero 4 funciones auxiliares para que cada una tome como entrada 3 palabras de 32 bit y produzca 1 salida de 32 bit.

En cada posición F actúa como condicional : Si X entonces Y de lo contrario Z. Si cada bit de X, Y, y Z son independientes cada bit de F(X, Y, Z) deben ser n independientes Las funciones G, H, I son similares a la función F, actúan en paralelo formando sus propios bits de salida independientes a partir de X, Y, y Z,

Este paso utiliza una tabla de 64 elementos T(1...64) construidos a partir de la función seno. Sea T(i), el mismo es igual a la parte entera de 4294967296 veces abs(sin(i)), donde i está en radianes.

Se hace lo siguiente;

Page 79: Software para cifrado

Salva A como AA, B como BB, C como CC, y D como DD A A = A

BB = B

CC=C

DD=D

Round 1

Toma [abcd k s i] denotando la operación

a = b + ((a + F(b,c,d) + X[k] + T[i]> <« s).

Se efectúan las siguientes 16 operaciones

[ABCD 071] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]

[ABCD 475] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 1 1] [ BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

Round 2

Toma [abcd k s i] denotando la operación

a = b + ((a + G(b,c,d) + X[k] + T[i]) <« s).

Se efectúan las siguientes 16 operaciones

[ABCD 1 5 17][DABC6918][CDAB 11 14 19] [BCDA O 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 3 [CDAB 7 14 31] [BCDA 12 20 32]

73

0]

Page 80: Software para cifrado

Round 3

a = b + ((a + H(b,c,d) + X[k] + T[i]> <«

s). Se efectúan las siguientes 16 operaciones

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35J [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 41138] [CDAB 7 16 39] [BCDA ÍO 23 40]

[ABCD 13 4 41] [DABC O 11 42] [CDAB 3 1643] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

Round 4

Toma [abcd k s t] denotando la operación

a = b + ((a + I(b,c,d) + X[k] + T[i]) <« s)

Se efectúan las siguientes 16 operaciones

[ABCD O 6 49] [DABC 7 10 50] [CDAB 141551] {BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCD 4 6 61] [DABC 11 1062] [CDAB 2 15 63] [BCDA 9 21 64]

Entonces se ejecutan las siguientes operaciones de suma (Que son un incremento de los cuatro registros por el valor que tiene ese bloque antes del inicio).

A = A+AA

B = B + B B

C= C + CC

D = D + DD

Paso 5. Salida

El extracto del mensaje producido como salida es A, B, C, D. Esto es, comenzamos con el byte A de bajo orden y se finaliza con el D que es el más significativo.

74

Page 81: Software para cifrado

7. Planteamiento del sistema

Desarrol nstalado en una máquina lar un software que cifre y descifre archivos de texto. El software será ilocal y m ido del archivo de texto. anejará interfaces gráficas, garantizando la confidencialidad del conten

Se utiliza u ave pública con rápidos n Modo Híbrido para cifrado y descifrado de archivos, manejo de clsistemas de cifrado simétrico o de clave secreta.

El software desarrollado corre sobre una plataforma Windows en una computadora personal local. Cifrará y descifrará archivos de texto mediante un sistema de cifrado en modo híbrido convirtiendo los archivos a un formato con extensión .sec garantizando la confidencialidad de la información.

Puede ser aplicado en todas las áreas que deseen disminuir el riesgo de perder la confidencialidad al transmitir archivos de texto (Estados financieros, informes de ventas, comunicados, cartas, etc.)

El usuario con necesidad de proteger sus archivos de texto mediante métodos criptográficos puede utilizar el software para cifrar sus archivos.

El usuario instalará el software en su computadora personal (local), para posteriormente capturar el archivo de texto.

Una vez capturada la información con ayuda de la interfaz gráfica el archivo será cifrado mediante un cifrado de clave secreta, esta clave será cifrada a su vez mediante un cifrado de clave publica. La clave pública ino que previamente ha con la que se cifrará dicha clave secreta será la de la persona destproporcionado al usuario origen.

La clave priva o y únicamente el da solamente la conocerá el usuario destino, con esto se asegura que solusuario d estino podrá descifrar la clave secreta para a su vez descifrar el mensaje.

El archi do mediante el medio que el vo de texto cifrado tendrá un extensión .sec que podrá ser enviausuario elija conveniente.

75

Page 82: Software para cifrado

8. Diseño del sistema

8.1. Diagramas de proceso

En este Capítulo se contempla el estudio de la solución al planteamiento del sistema que implantamos. Una vez que hemos estudiado los sistemas de cifrado asimétrico, simétrico, híbridos y firma digital en forma detallada entonces trasladamos el diseño de estos sistemas a una notación UML y posteriormente a diagramas de flujo. Esta fase del proyecto nos ayuda a ver el sistema en partes y nos ayuda a prever errores de diseño, nos ayuda a comprender mejor todos estos procesos y la interacción entre ellos. Nos da la pauta para escoger las técnicas de programación adecuadas y dar con las mejores soluciones.

UML son las siglas de Unified Modeling Language (Lenguaje unificado de construcción de modelos) porque su finalidad es describir modelos de sistemas (del mundo real y del software). Una técnica excelente que permite mejorar la comprensión de los requerimientos del sistema es la creación de casos de uso, es decir, descripciones narrativas de los procesos.

El caso de uso es un documento narrativo que describe la secuencia de eventos de un actor (agente externo) que utiliza un sistema para completar un proceso. Los casos de uso son historias o casos de utilización de un sistema; no son exactamente los requerimientos ni las especificaciones funcionales, sino que ejemplifican o incluyen tácitamente los requerimientos en las historias que narran.

El actor es una entidad externa del sistema que de alguna manera participa en la historia del caso de uso. Por lo regular estimula el sistema con eventos de entrada o recibe algo de el.

Un diagrama de casos de uso explica gráficamente un conjunto de casos de casos de un sistema, los actores y la relación entre estos y los casos de uso. Estos últimos se muestran en óvalos y los actores son figuras estilizadas.

Los casos primarios de uso representan los procesos comunes más importantes.

Un diagrama de flujo nos permite visualizar el flujo de la información en cada sistema, nos ayuda a comprender la interacción entre los datos de información, es un diseño un poco más elaborado del sistema que ayuda al programador a organizar toda la información y cada uno de los módulos del software.

76

Page 83: Software para cifrado

Tipo: Primaria, esencial

Actores: Usuario emisor y usuario receptor

Descripción: Un usuario emisor llega a la computadora y utiliza el software para cifrar un archivo de texto utilizando cualquiera de los algoritmos simétricos Triple DES o IDEA.

una vez que sus archivos han sido cifrados muda el archivo cifrado a un disco de 3.5 , a una aplicación telnet, correo electrónico, etc. Puede transmitir la clave secreta K a través de un teléfono, directamente con eí usuario receptor, o cifrándola con el sistema de clave pública (RSA, Curvas Elípticas).

El usuario receptor utiliza el software para descifrar el archivo utilizando Triple DES o IDEA y la clave simétrica K transmitida.

77

Page 84: Software para cifrado

78

Page 85: Software para cifrado

Descripción: Un usuario emisor llega a la computadora y utiliza el software para cifrar un clave secreta K o un mensaje pequeño utilizando el sistema RSA y la clave pública del usuario receptor. Este usuario ha generado con anterioridad su clave privada y su clave pública. Muda el archivo cifrado a un disco de 3.5 , o a una aplicación telnet, correo electrónico, etc. El usuario receptor utiliza el software para descifrar el archivo utilizando su clave privada.

79

Page 86: Software para cifrado

80

Page 87: Software para cifrado

Actores: Usuario emisor y usuario receptor

Descripción: Un usuario emisor llega a la computadora y utiliza el software para cifrar y firmar un clave secreta K o un mensaje pequeño utilizando el sistema RSA, la clave pública del usuario receptor y su clave privada. Muda el archivo cifrado y firmado a un disco de 3.5 , o a una aplicación telnet, correo electrónico, etc. El usuario receptor utiliza el software para descifrar y autenticar el archivo utilizando su clave privada y la clave pública del usuario emisor.

81

Page 88: Software para cifrado

Tipo: Primaria, esencial

Actores: Usuario emisor y usuario receptor

Descripción: Un usuario emisor llega a la computadora y utiliza el software para cifrar un clave secreta K o un mensaje pequeño utilizando el sistema HCC y la clave pública del usuario receptor. Este usuario ha generado con anterioridad su clave privada y su clave pública. Manda el archivo cifrado a un disco de 3.5 , o a

82

Page 89: Software para cifrado

una aplicación telnet, correo electrónico, etc. El usuario receptor utiliza el software para descifrar el archivo utilizando su clave privada.

83

Page 90: Software para cifrado

84

Page 91: Software para cifrado

Actores: Usuario emisor y usuario receptor

Descripción: Un usuario emisor llega a la computadora y utiliza el software para cifrar y firmar un clave secreta K o un mensaje pequeño utilizando el sistema RSA, la función hash MD5 y su clave privada. Muda el archivo cifrado y firmado a un disco de 3.5 , o a una aplicación Telnet, FTP, correo electrónico, etc. El usuario receptor utiliza el software para descifrar y autenticar el archivo utilizando la clave pública del usuario emisor y aplicando la función hash MD5 al archivó de texto recibido.

85

Page 92: Software para cifrado

86

Page 93: Software para cifrado

87

Page 94: Software para cifrado

88

Page 95: Software para cifrado

89

Page 96: Software para cifrado

90

Page 97: Software para cifrado

91

Page 98: Software para cifrado

92

Page 99: Software para cifrado

9.1. Interfaz de usuario

Esta capa se encarga de interactuar con el usuario. Tiene la función de capturar y validar los datos (parámetros) que serán pasados a la capa de binarios (ejecutables individuales).

El desarrollo esta hecho sobre Visual Basic 6.0. que fue escogido por la facilidad y rapidez de implementación para ambientes visuales. Siendo una herramienta RAD {Rapid Application Development) técnicamente solo hubo que preocuparse por la validación de datos de entrada, la correcta invocación de binarios externos con sus respectivos parámetros, detalles técnicos de eficiencia y detalles operacionales que hacen de la interfaz un medio agradable para el usuario final, Logísticamente hubo que poner atención en el flujo de los procesos junto con la asignación de parámetros de cada binario ya que la salida de uno puede ser la entrada de otro.

93

Page 100: Software para cifrado

9.2. Conjunto de ejecutables

Esta capa es un conjunto de archivos ejecutables en ambiente MS-DOS que reciben parámetros desde la línea de comandos.', El GUI se encarga de dar el formato adecuado para que los ejecutables independientes los reciban.

Descripción de los

archivos: 9.2.1. des.exe

Este binario ejecuta el algoritmo Triple

DES. • Cifrado

Formato: des.exe <clave> <archivo_de_texto__plano_de_entrada> <archivo_cifrado_de_salida>

Ejemplo: c:\>des.exe miclave mensaje.txt cifrado.des

Descifrado

Formato: des.exe <clave> <archivo_cifrado_de__entrada> <archivo_de_texto_plano.jie_salida> Ejemplo:

c:\>des.exe miclave cifrado.des mensaje.txt

Page 101: Software para cifrado

94

9.2.2. itlea.exe

Este binario ejecuta el algoritmo IDEA. •

Cifrado

Formato: idea.exe e <clave> <archivo_de_jexto_plano_de__entrada> <archivo_cifrado_de_salida>

Ejemplo: c:\>idea.exe e miclave mensaje.txt cifrado.idea

Descifrado

Formato: idea.exe d <clave> <archivo_cifrado_de__entrada> <archivo_de_texto_plano_de_salida> Ejemplo:

c:\>idea.exe d miclave cifrado.idea mensaje.txt

Page 102: Software para cifrado

95

9.2.3 arsa.exe

Este binario ejecuta el algoritmo RSA con y sin Autentificación.

• Cifrado sin Autentificación

Formato: arsa.exe c <archivo_de_Uave_pública_del_receptor> <archivo_de_texto_plano_de__entrada> <archivo_cifrado_de_salida>

Ejemplo: c:\>arsa.exe c receptor.cpb mensaje.txt cifrado.rsa

Cifrado con Autentificación

Formato: arsa.exe C <archivo_de_llave_pública_def_receptor> <archivo_de_llave_privada_del_emisor> <archivo_de_texto_plano_de_entrada> <archivo_ciírado_de_salida>

Ejemplo: c:\>arsa.exe C receptor.cpb emisor.cpv mensaje.txt cifrado.rsa

Page 103: Software para cifrado

96

9.2.4. ecc.exe

Es te binario ejecuta el algoritmo ECC con y sin Autentifícación. •

Cifrado sin Autentificación

Formato: ecc.exe C <archivo_de_Ilave_pública_del_receptor> <archivo_de_entrada>

<archivo_cifrado> Ejemplo: ecc.exe C receptor.cpb mensaje.txt cifrado.ecc

Cifrado con Autentificación

Formato: ecc.exe C <archivo_de_llave_pública_del_receptor> <archivo_de_Ilave_privada_del_emisor> <archivo_de_entrada> <archivo_cifrado>

Ejemplo: ecc.exe C receptor.cpb mensaje.txt cífrado.ecc

Page 104: Software para cifrado

97

Descifrado sin Autentificación

Formato: ecc.exe D <archivo_de_Jlave_privada_del_receptor> <archivo_cifrado_de_entrada> Ejemplo:

ec cc

c.exe D receptor.cpv cifrado.e

Descifrado con Autentificación

Formato: ecc.exe D <archivo_de_llave_privada_del_receptor> <archivo_de__)lave_pública_del_emisor> <archivo_cifrado_de_entrada> <archivo__de_texto_plano_de_salida>

E v emisor.cpb cifrado.ecc mensaje.txt

jemplo: ecc.exe D receptor.cp

Page 105: Software para cifrado

98

9.2.5. random.exe

Este binario ejecuta un algoritmo que genera datos de forma aleatoria, un archivo de salida es numérico y otro archivo de salida es alfanumérico.

Formato: random.exe

Ejemplo: c:\>random.exe

9.2.6. mdS.exe

Este binario genera el resumen MD5 del archivo especificado.

Formato: md5.exe <archivo_jje_entrada> <archivo__ on_resumen_md5_de_salida> Ejemplo: c:Y>rnd5.exe c

cifrado.sec resumen.md5

9.2.7. concat.exe

Este binario concatena (junta) archivos para que tengan el formato final deseado: contenido_de_arcrüvo_Í@@@@@*****contenido_de_archivo__2

Formato: concat.exe <archivo_jde_entrada _1> <archivo_de_entrada_2> <archivo_de__salida>

Ejemplo: c:\>concat.exe cifrado.rsa cifrado.des cifrado.sec

Page 106: Software para cifrado

99

9.2.8. descatexe

Es desconcatena (separa) un archivo con el te binario formato co @@@*****contenido_de_archivo_2 en los dos archivos correspondientes. ntenido_de_archivo_l@@

Formato: descat.exe <archivo_de_entrada> <archivo_de_salida_l> <archivo_de_salida_2>

Ejemplo: c:\>descat.exe cifrado.sec cifrado.rsa cifrado.des

To /C++ por sus características de precisión en el manejo de memoria, dos están hechos en lenguaje Crapidez y eficiencia.

La invocación de binarios se hace en diferente orden dependiendo de la modalidad que se seleccione en la interfaz gráfica.

9.3. Secuencia para cifrado

Cada procedimiento implementado tiene su propia secuencia:

9.3.1. Triple DES, IDEA

Triple DES utiliza: des.exe

IDEA utiliza: idea.exe

Page 107: Software para cifrado

100

9.3.2. RSA sin Autentificación, ECC sin Autentificación

RSA sin Autentifícación utiliza: arsa.exe ECC sin Autentificación utiliza: ecc.exe

9.3.3. RSA con Autentificación, ECC con Autentificación

RSAcon Autenti fie ación utiliza: arsa.exe ECC con Au tificación utiliza: ten

ecc.exe

Page 108: Software para cifrado

101

9.3.4. Híbridos sin Autentificación

Híbrido DES y RSA sin Autentificación utiliza: random.exe; arsa.exe; des.exe; concat.exe Híbrido DES y ECC

sin Autentificación utiliza: random.exe; ecc.exe; des.exe; concat.exe Híbrido IDEA y RSA sin Autentificación

utiliza: random.exe; arsa.exe; idea.exe; concat.exe Híbrido IDEA y ECC sin Autentificación utiliza:

random.exe; ecc.exe; idea.exe; concat.exe

Page 109: Software para cifrado

102

9.3.5. Híbridos con A identificación

Híbrido DES y RSA con Autentificación utiliza: random.exe; arsa.exe; des.exe; concat.exe Híbrido DES y

ECC con Autentificación utiliza: random.exe; ecc.exe; des.exe; concat.exe Híbrido IDEA y RSA con

Autentificación utiliza: random.exe; arsa.exe; idea.exe; concat.exe Híbrido IDEA y ECC con Autentificación

utiliza: random.exe; ecc.exe; idea.exe; concat.exe

103

Page 110: Software para cifrado

9.4. Secuencia para descifrado 9.4.1.

Resumen MD5

Si se selecciona revisar el resumen MD5 del archivo cifrado entonces se ejecuta: md5.exe al momento sobre el archivo cifrado recibido y se compara contra la firma recibida.

9.4.2. Triple DES, IDEA

DES utiliza: des.exe IDEA utiliza: idea.exe

9.4.3. RSA sin Autentificación, ECC sin Autentificación

RSA sin Autentificación utiliza: arsa.exe ECC sin Autentificación utiliza: ecc.exe

Page 111: Software para cifrado

104

9.4.4. RSA con Autentificación, ECC con A identificación

RSA con Autentificación: arsa.exe ECC con Autentificación: ecc.exe

9.4.5. Híbridos sin Autentificación

Híbrido DES y RSA sin Autentificación utiliza: descat.exe; arsu.exe; des.exe Híbrido DES y ECC sin

Autentificación utiliza: descat.exe; ecc.exe; des.exe Híbrido IDEA y RSA sin Autentificación utiliza:

descat.exe; arsa.exe; idea.exe Híbrido IDEA y ECC sin Autentificación utiliza: descat.exe; ecc.exe; idea.exe

Page 112: Software para cifrado

105

9.4.6. Híbridos con Autentificación

Híbrido DES y RSA con Autentificación utiliza: descat xe; arsa.exe; des.exe Híbrido DES y ECC con .e

autentificación utiliza: descat.exe; ecc.exe; des.exe Híbrido IDEA y RSA con Autentiftcación utiliza:

descat.exe; arsa.exe; idea.exe Híbrido IDEA y ECC con Autentificación utiliza: descat.exe; ecc.exe; idea.exe

Page 113: Software para cifrado

106

10. Resultados obtenidos, conclusiones y posibles desarrollos

El resultado fue satisfactorio ya que conseguimos hacer un software para cifrado y descifrado de archivos de texto que resulta ser bastante óptimo debido a las ventajas que nos presenta el haber utilizado el sistema en modo híbrido, esto es aprovechar las ventajas de cada uno de los sistemas y tratar de que las desventajas no afectaran el desempeño general.

Fue necesario estudiar previamente ambos sistemas para conocer bien sus características, operaciones utilizadas, velocidades de las mismas y por tanto la velocidad de procesamiento total y manera en que se ve afectado todo el sistema.

Se estudiaron los estándares de cada sistema (Simétrico y Asimétrico) de forma individual, como son 3DES, IDEA, RSA, ECC, considerando igualmente sus ventajas y desventajas, para acoplar de la manera mas eficiente el sistema híbrido.

Se logró implementar la autenticidad por medio de la firma con el propio sistema RSA y además usando un algoritmo de digestión para hacer la firma de forma individual.

En general el proceso del funcionamiento del sistema se puede ver claramente en el capítulo referente a la interfaz (GUI).

La interfaz utilizada fue Visual Basic 6, y los algoritmos fueron programados en C/C++, debido a las ventajas operacionales que proporciona.

En general el resultado fue óptimo, ya que además de cumplir con los objetivos planteados, se lograron mayores beneficios en el desarrollo del proyecto.

Al sistema se le pueden hacer múltiples desarrollos para su optimización, esto es desde un estudio y análisis de los algoritmos para lograr un mayor desempeño.

El rendimiento puede ser apreciable tanto a nivel procesador como a nivel seguridad.

La seguridad nunca es absoluta por lo que siempre se podrán hacer mejoras y día con día los intrusos a los cuales se pretende combatir mejoran sus estrategias para romper la seguridad de los sitios que son confidenciales principalmente, por lo que la tarea de mejorar los algoritmos criptográficos nunca termina.

El desarrollo de la criptografía con curvas elípticas promete bastantes beneficios, y a pesar de que tienen una complejidad matemática alta, vale la pena estudiarla a fondo y sacar provecho de ésta, ya que tiene un sin fin de aplicaciones en seguridad.

A nivel investigación se pueden diseñar los propios algoritmos de seguridad con criptografía dando un gran avance en la seguridad criptográfica a nivel internacional.

Existen muchos algoritmos que a lo largo de los años se han ido implementando y todos ellos tienen sus ventajas y desventajas; destacando que la seguridad se puede aplicar a toda la información que se desea transmitir, es óptimo diseñar protocolos que se adecúen a las necesidades particulares.

107

Page 114: Software para cifrado

11. Fuentes de información

Técnicas Criptográficas de Protección de Datos

Amparo Fuster Ed. Ra-Ma

Sobre el Estándar de Firma Digital(Tesina)

Rafael Pineda Enzaldo ESFM

Criptografía Digital: Fundamentos y Aplicaciones

Colección Textos Docentes

Network Security

Charlie Kaufman Ed. Prentice May.

www.certicom.com

wvvw.rsa-security.com

108

Page 115: Software para cifrado

Apéndic cos e A. Fundamentos matemáti

Los sistemas criptográficos modernos, tanto si son de clave simétrica como de llave pública, para ser considerados tales deben cumplir una serie de requisitos que los hagan seguros, reversibles y viables. Para obtener sistemas que cumplan estas condiciones se ha desarrollado un campo matemático completo, la Teoría de Códigos, basada en el álgebra de los sistemas discretos y en fas clases residuales de módulo dado, que sirve para definir alfabetos y funciones que permiten obtener sistemas robustos.

Generalmente, todo sistema criptográfico se basa en la obtención de un conjunto de elementos, llamados letras o símbolos, que forman un conjunto finito llamado alfabeto fuente y en una función de transformación de dichos símbolos en otros pertenecientes a un conjunto imagen denominado código. A la función de transformación de le llama función de codificación, fk, y a las sucesiones finitas de elementos del alfabeto fuente se les denominan palabras. En general, habrá una función de codificación fk para cada valor de la clave k, definiendo éstas el conjunto de claves del sistema, K.

Si consideramos ahora otro conjunto de símbolos A y el conjunto asociado A* de todas las palabras posibles que se pueden formar con las letras de A, se denomina código C a todo subconjunto finito de éste. Si C está formado por palabras de longitud fija "n", a n se le llama longitud del código C, y a sus elementos n-palabras. Y si C está formado por "m" elementos, se dice entonces que C es un (n,m) código.

Se define un criptosistema como una quintupla (M, C, K, E, D), donde:

• M representa el conjunto de todos los mensajes sin cifrar (texto plano) que pueden ser enviados.

• C representa el conjunto de todos los posibles mensajes cifrados (criptogramas).

• K representa el conjunto de claves que se pueden emplear en el criptosistema.

• E es el conjunto de las transformaciones de cifrado, es decir, el conjunto de funciones matemáticas que se aplican a cada elemento de M para obtener un elemento de C. Existe una transformación diferente Ek para cada de la clave k.

• D es el conjunto de transformaciones de descifrado, análogo al conjunto E.

Con esta nomenclatura, todo sistema de cifrado debe cumplir la condición:

Dk(Ek(m))=m

Para aclarar un poco estos conceptos, vamos a ver un ejemplo basado en nuestro alfabeto castellano. Este sería el alfabeto fuente, las letras (a, b, c, d, e,...) serían las letras o símbolos del mismo, y las combinaciones de diferentes letras (casa, perro, silla, ...) serán las palabras del alfabeto. Sólo nota que desde un punto de vista matemático y criptográfico también serán palabras dekid, podretyp, lloeer y cualquier otra formada por cualesquiera de las letras del alfabeto fuente, no siendo necesario que tengan sentido alguno.

Sea Analfabeto castellano.

Sea S el alfabeto fuente, subconjunto de A, que es esta caso va a ser S=A, es decir, vamos a considerar como alfabeto fuente todo el alfabeto castellano.

Sea C el código.

109

Page 116: Software para cifrado

Definimos nuestra función de codificación, t\, como: S->f,->C, tal que a cada letra le hace corresponder su siguiente en el alfabeto fuente, e sformaciones: s decir, la función realizará las siguientes tran

A

B

C

D

E

F

G

H

I

J

K

L

M

N

Q

o

p

Q

R

s

T

U

V

w

X

Y

z

B

C

D

E

F

G

II

I

J

K

L

M

N

Q

o

p

Q

R

S

T

U

V

w

X

Y

z

A

Consideremos entonces el conjunto M de textos en plano que se pueden formar con las palabras de S, y dentro de él el elemento M(=HOLA MUNDO. La función de codificación sería en esta caso fi(s)= s+k=s+l, es decir, la función de cifrado desplaza k posiciones cada letra del alfabeto, siendo en nuestro caso k-1 (k es la clave de cifrado). Por lo tanto, al aplicar la función fi a M, tendremos: f1(M1)=f)(HOLA MUNDO)=IPMB NVQEP. Para que una función pueda ser considerada de codificación debe ser biyectiva, por lo que debe cumplir:

1. elementos diferentes deben tener imágenes diferentes, es decir, no puede haber dos palabras del alfabeto fuente que tengan la misma transformación en el código.

2. todos los elementos deben tener imagen, o lo que es lo mismo, no puede haber palabras del alfabeto fuente que no tengan su transformación en el código.

3. no puede haber palabras del código que no se correspondan con alguna palabra del alfabeto fuente.

Estas tres propiedades se resumen diciendo que f debe ser una aplicación uno a uno.

La y exigencia de ser biyectiva se traduce en evitar errores, en que la codificación de un mensaje sea única, su ntan una serie de decodificación también. No obstante, muchos sistemas criptográficos implemeele el medio los datos mentos para la identificación y corrección de errores, ya que durante su viaje por pueden sufrir tales alteraciones que la decodificación resulte incorrecta.

No vamos a extendernos mucho más, pero tenemos que ver otro concepto importante. Normalmente las funciones de codificación reales trabajan con números, ya que es la forma que tiene el computador de operar c pasa los números al sistema binario. Una on rapidez, sobre todo teniendo en cuenta que élfun go de los elementos del ción de codificación debe ser tal que con ella obtener las imágenes en el códialfa r elementos del alfabeto beto fuente sea un proceso simple y rápido, pero la operación contraria, obtenefuente a partir de sus imágenes en el código, si no se conocen ciertos datos (la clave) debe resultar lo más complicado posible. Ese es el verdadero sentido a función de codificación. de una buen

La inclusión de las claves en los procesos de cifrado y descifrado se realiza introduciendo las mismas en los procesos matemáticos pertinentes, generalmente como constantes en la función de codificación. Cuánto más longitud tenga la clave usada, más seguro será el sistema de encriptación y más difícil será romperlo por criptoanalisis, aunque esta fortaleza del cifrado también depende del sistema en sí.

Por ejemplo, los sistemas simétricos tienen, a igualdad de longitud de clave, mucha más fortaleza que los de clave pública. Es por esto que los sistemas simétricos usan 58-128 bits generalmente, mientras que los asimétricos deben manejar clases de más de 512 bits para ser considerados seguros.

* Un último concepto es el de las clases residuales. Dados dos números enteros, a y b, se dice que a es congruente con b módulo n si a y b tienen el mismo resto al ser divididos por n. Por ejemplo, 7 y 10 son congruentes módulo 3, ya que al dividir ambos por 3 nos queda de resto 1.

Con esta consideración, dado un conjunto C se definen sobre él la clases residuales de módulo n como los subconjuntos de C formados por todos sus elementos tales que al ser divididos por n dan el mismo resto.

110

Page 117: Software para cifrado

Por ejemplo, si C-{ 13,14,15,16,17,18,19} tendremos como clases residuales de módulo 3:

Cl={ 15,18} (a! dividirlos entre 3 el resto es 0) C2={ 13,16,19} (al dividirlos entre 3

el resto es 1) } l v r C3={ 14,17 (a di idi los entre 3 el resto es 2)

Este s a , que s l u c e st s concepto e import nte ya mucha de as f nciones de odificación usados n los si ema cript á á a d e s s e a al f togr ficos m s usados están b sa as n la cla es r sidu les del fabeto uen e.

Para ello manejan la denominada función módulo discreto. De esta forma, a mod(b) representa el resto de dividir a entre b. Si a es inferior a b, tendremos que a mod(b)-a. Vamos a ver algunos ejemplos:

17 mod(6)=5 (ya que 17/6=2 con resto 5)

51 mod(6)=3 (ya que 51/6=8 con resto 3)

4

mod(6)-4 (ya que 4<6)

111

Page 118: Software para cifrado

Apéndice B. Generación de números pseudo aleatorios

En gran parte de los sistemas criptográficos usados actualmente se hace necesario generar números aleatorios, sin embargo, es conocido que es una tarea difícil de llevar a cabo, por lo que se opta por generar números pseudo aleatorios, es decir, números que están cerca de ser aleatorios. Se dice que un dispositivo o algoritmo genera números pseudo aleatorios si contiene un proceso determinístico, el cual toma como entrada un número que se supone aleatorio, llamado semilla y tiene como salida una sucesión de números "casi" aleatoria.

Motivación

En algunos ca s necesitamos más bits aleaso torios que los que pueden proporcionarnos nuestras fuentes de entropía. En estos casos se recurre a los generadores de números (o bits) pseudo aleatorios (las siglas inglesas son PRNG- p do random nuseu mber generator) que constituyen en definitiva una forma de expandir unos pocos bits rea nte aleatorios. lme

Definiciones

Un PRNG es una función que toma cierta cantidad de verdadera aleatoriedad (llamada semilla del generador) y genera una secuencia de bits que pueden usarse como si fuesen auténticos números aleatorios, suponiendo que el adversario tiene una cantidad limitada de recursos computacionales y que la semilla es suficientemente grande como para frustrar ataques por fuerza bruta.

La mayoría de los lenguajes de programación (C, Pascal, BASIC, Fortran...) disponen de funciones para generar números pseudo aleatorios que a menudo satisfacen criterios estadísticos de aleatoriedad pero no son suficientes para utilizar en criptografía. La razón principal es que cuando se ve comprometido uno de los valores inmediatamente se conocen todos los anteriores y posteriores de la secuencia. Un PRNG criptográficamente fuerte en cambio, es un algoritmo del que se ha probado que un oponente que conozca el algoritmo y todos los bits generados hasta cierto punto - pero no la semilla- no puede adivinar el siguiente bit que será generado con probabilidad mayor que 1/2+e donde e suele decrecer exponencialmente de acuerdo con cierto parámetro s que típicamente seria la longitud de la semilla.

Generación de Semillas

Para poder considerar que un número es aleatorio, el conjunto de donde es tomado debe de cumplir los requisitos de espacio equiprobable, es decir, que todo elemento tenga la misma probabilidad de ser elegido y que la elección de uno no dependa de la elección del otro. Para poder lograr esto, se debe de hacer a un lado la posible intervención humana y hacer uso de generadores de aleatoriedad lo más natural posible.

Gran parte del éxito de un diseñador de sistemas criptográficos se respalda en sus generadores de números aleatorios, éstos pueden estar basados en "hardware" o en "software". En eí primer caso se toman a eventos físicos como generadores aleatorios, por ejemplo, el tiempo de emisión entre partículas radioactivas, la distribución térmica de semiconductores o resistores, la inestabilidad de un oscilador, la potencia del sonido en micrófonos o la intensidad de vídeo de una cámara, etcétera.

Para garantizar que el generador aleatorio sea seguro, debe de ser ajeno a cualquier atacante. Hoy en día se han creado dispositivos VLSI basados en capacitores y osciladores.

La mayor parte de dispositivos para generar una semilla aleatoria son por explicación obvia, basados en software. En este caso se requiere una vez más que el número generado cumpla las mismas condiciones que antes. Aquí también se hace uso de eventos que estén lo más alejado de la intervención humana como por ejemplo: el sistema de reloj, el tiempo entre cada activación del teclado o el ratón, el contenido de buffers de entrada o salida, entre otros.

Es importante hacer notar que mientras más recursos se utilicen en la generación de las semillas es más probable que nos acerquemos a un buen generador de números aleatorios. Después que se ha decidido

Page 119: Software para cifrado

cuáles eventos deben de ser usados, se recomienda que la combinación de ellos sea la concatenación, ya que esto permite que los eventos sean independientes y así la posibilidad de que sea encontrado el origen por un atacante disminuya considerablemente.

Utilización

Si se elige no usar un PRNG criptográficamente fuerte como modo de expandir una semilla de auténticos números aleatorios hay algunas técnicas que pueden servir en la mayoría de los casos. La utilización descuidada de estos métodos puede producir una reducción catastrófica de la seguridad, en especial debemos prestar atención a no usar una semilla demasiado pequeña o formada por pocos bits realmente aleatorios. Por ejemplo y como ya se hizo notar en otro sitio, la utilización -habitual- de la fecha y hora del sistema sólo proporciona unos pocos bits aleatorios aunque aparentemente y a través del uso de una función hash estemos utilizando 128o 160 bits.

Estas técnicas se resumirían en que una función trampa enmascare algunas operaciones fácilmente predecibles y por tanto débiles. La operación podría consistir simplemente en contar o en el uso de un generador de período largo. Algunas combinaciones comunes son:

• Una función hash criptográficamente fuerte como MD5 o SHA operando sobre una semilla de auténticos números aleatorios concatenada con un contador que se incrementa en cada paso.

• Un algoritmo de cifrado fuerte usando una clave para cifrar una secuencia generada por un generador de periodo suficientemente largo que ha sido inicializado con un verdadero número aleatorio. Por ejemplo podría usarse un generador aditivo de Marsaglia para alimentar un algoritmo Triple DES en modo CBC.

• El cifrado de un contador con una clave realmente aleatoria. Se debe tener la precaución de usar un modo CBC y/o usar sólo una fracción del bloque de salida, de otro modo la secuencia de salida se reconocería como no aleatoria al cabo de un número de bits del orden de la raíz cuadrada del período del contador.

Presumiblemente, predecir valores de una secuencia generada usando una de estas técnicas equivale a romper el algoritmo de cifrado utilizado o a invertir la función hash (que se supone no invertible). Cuanta menos información se revele en cada iteración, tanto más difícil será para el adversario predecir futuros valores. Por ello a menudo se emplea un solo bit de la salida.

Resumiendo: en general un modo correcto de uso implica empezar con una semilla fuerte, auténticamente aleatoria, realizar uno o más pasos criptográficamente sólidos a partir de dicha semilla y no revelar el estado completo del generador en cada elemento de la secuencia de salida. Naturalmente, si cada valor de la secuencia puede calcularse de forma fija a partir del valor anterior, entonces cuando un sólo valor de la secuencia se ve comprometido, todos los futuros valores pueden ser determinados.

Cosas que debemos evitar

Algunos errores frecuentes para los interesados en diseñar su propio PRNG o mejorar algunos de los ya existentes:

Sistemas caóticos: existe bastante confusión entre lo que parece complejo para las personas y lo realmente aleatorio.

Generadores aleatorios de las librerías matemáticas: este tipo de generadores es apto para, por ejemplo, simulación pero no son criptográficamente fuertes.

Generadores congruenciales lineales: los más simples y posiblemente peores de los generadores de librería matemática.

Chain adittion (adición en cadena) otro PRNG que se "rompe" con facilidad.

113

Page 120: Software para cifrado

CD-ROMs, CDs de audio o cintas. El material grabado tiene un gran volumen de bits que a veces se confunde con la aleatoriedad. Sin embargo, el número de bits necesarios para indexar todas las grabaciones existentes en el mundo es suficientemente pequeño como para ser adivinado por fuerza bruta.

Usenet: de nuevo el mismo error anterior. Además las news son públicas y accesibles por cualquier adversario.

E-mail: podría ser una fuente si estuviera tan bien cifrado que el adversario no pueda leerlo pero nunca estamos seguros de lo que el adversario ha visto realmente. Para los textos ingleses utilizados como fuente de entropía, Shannon estima un bit de entropía por carácter como máximo.

Generación de números pseudo aleatorios

Una vez que se obtiene una semilla, se procede a generar la cadena de bits pseudo aleatoria, es decir una cadena que es "casi" aleatoria, la generación de esta cadena debe ser rápida, por tal razón no es práctico usar el método anterior repetidamente.

Sin embargo, es más fácil encontrar una forma que genere la cadena pseudo aleatoria a partir de la semilla. Se ha podido demostrar que cualquier función de un sólo sentido se puede utilizar para generar cadenas pseudo aleatorias

Podemos definir como un generador de números pseudo aleatorios a un dispositivo que recibe como entrada una semilla s, que se supone aleatoria, y da como salida una cadena de bits de longitud n,

Existen varios ejemplos estándar: el propuesto en ANSÍ X9.17 que usa como función de un sólo sentido a DES(FfPS 186).

Existen otros tipos de generadores de números pseudo aleatorios, que en la práctica son más lentos y sin embargo oblema de la aritmética modular o en general la aritmética de un campo , cuando se resuelve el prfinito, es muy recomendable su uso. Estos generadores hacen uso de funciones del tipo RSA , o el Gamal basando su aleatoriedad en la presunta intratabilidad de problemas como la factorización de un número, producto de dos números primos diferentes, y del problema del logaritmo discreto, por ejemplo, sobre una curva elíptica definida en un campo finito de característica 2.

Algunos ejemplos de PRNG

El generador lineal congruencia!

Ponemos como ejemplo este generador porque es uno de ios más difundidos siendo a la vez uno de los más débiles y no apto para uso criptográfico. Se utiliza en la mayoría de las funciones rand() y similares.

La forma general de es: X¡+i-(a.X¡ + b ) mod m donde Xo sería la semilla del generador. La salida suele ser el número X/m, un número en coma flotante en el intervalo [0,1).

Algunas propiedades de estos generadores:

1. El módulo m es una cota superior del número de valores diferentes que puede tomar la semilla.

Si X¡ vuelve a tomar el valor de la semilla inicial la secuencia se repetirá cíclicamente. Todas las secuencias producidas por este tipo de generador si se prolongan lo suficiente (periodo) acaban en un ciclo que se repite indefinidamente.

Un buen generador lineal tendrá un periodo tan largo como sea posible (es decir m). Este máximo se alcanza si y sólo si se cumplen las tres siguientes condiciones jKnuth]

a) b es primo con m

b) a-1 es múltiplo de p para todo primo p que divida a m

2.

Page 121: Software para cifrado

c) a-1 es múltiplo de 4 siempre que m sea múltiplo de 4

Habitualmente se torna como m una potencia de 2 más de 1 de modo que se puede coger por ejemplo b=l y a un número impar.

No sólo este tipo de generador sino todos los de tipo polinómico congruencial, es decir:

x= (anx + ... + a,x + ao) mod m n

son predecibles y por tanto inútiles para cualquier cifrado

serio. El generador ANSÍ X9.17

Este generador esta pensado como mecanismo para generar claves DES y vectores de inicialización, usando triple- DES como primitiva (podría usarse otro algoritmo de cifrado de bloques). También es ampliamente usado en banca y otras aplicaciones.

1) K es una clave secreta para triple DES generada de algún modo en el momento de la inicialización. Debe ser aleatoria y usada sólo para este generador. Es parte del estado secreto del PRNG y nunca varía con las entradas.

2) Cada vez que se desee una salida se hace lo siguiente

a) T¡ = EK(timestamp)

b) salida[i]= EK(T, xor semilla[i])

c) semillan* l]=EK(Tj xor sa!ida[Í]) Existe una variación en Crypto++ la librería

de Wei Dai implementada como sigue:

a) T¡ - EK(T¡.] xor timestamp)

b) salkla[i¡= EK(T, xor semilla[i])

c) semilla[i+l]- EK(T¡ xor salida[i])

Esto supone encriptar los 'timestamp' en modo CBC en lugar del modo ECB que utiliza el generador X9.17 estándar. El 'timestamp' se basa en el uso de la CPU del programa y su resolución depende de la plataforma utilizada, por ejemplo en Linux tiene una resolución de 0.01 segundos.

El generador de DSA

DSA (Digital Signature Standard) describe un PRNG basado en SHA pensado para generar parámetros pseudo aleatorios para el algoritmo de firmas DSA. Este generador permite entradas opcionales del usuario Wi mientras se generan las claves. De otro modo el PRNG nunca se recobraría de un estado interno comprometido. Toda la aritmética se puede realizaren módulo 2N donde 160<= N <= 512.

1) El generador mantiene un estado interno X¡ que varía constantemente.

2) El generador admite una entrada opcional W¡, se asumirá que es cero cuando no se produzca.

3) Cada salida se produce de la siguiente manera:

a) salida[¡]= hash(W¡ + Xi mod 2160)

b) X¡+,= X, + salida[i] + 1 mod 2I6°

115

Page 122: Software para cifrado

El generador RSAREF

Este PRNG se basa en dos operaciones: hash con MD5 y adición módulo 2128 con un diseño relativamente simple. Consiste en lo siguiente:

1) Un contador de 128 bits C¡

2) Un método de procesar entradas X¡ que hace lo siguiente

3) Ci+i=q + MD5(X¡)mod2128

4) Un método de producir salidas así:

a) salida[ij= MD5(Ci) mod 2128

b) Ci+1= C + 1 mod 2i128

El generador de Cryptolib

Cry tográfica desarrollada por Lacy, Mitchell, Schnell y Blaze. La fuente principal de ptolib es una librería cripaleatoriedad de es nd un mecanismo para extraer valores presumiblemente ta librería es TrueRaimp xistentes entre diferentes relojes del sistema. Estos valores pueden redecibles a partir de los sesgos eser ra de 32) o ser usados utilizados directamente (no se recomienda utilizar más de 16 bits de cada palabpara alimentar los dos PRNG disponibles: ísrRand y desRand.

fsrRand posee un estado secreto consistente en una clave DES que llamaremos K y un array de siete valo os como un registro de desplazamiento (shift register). Cada vez que se res de 32 bits, Xo... X¿, organizadrequ s de 32 bits se concatenan formando un número de 64 bits. Este iere una salida, dos de los valorenúm resultado se divide en dos mitades de 32 bits, se realiza un XOR con ero se cifra con DES usando K. Eluna modificando así uno de los registros, mientras que la otra mitad de ellas y uno de los valores de 32 bitses la salida del algoritmo. Se desplaza entonces el registro de modo que se utilizan dos nuevos valores cada vez que se produce una nueva salida.

desRand posee un estado secreto consistente en un contador C de 64 bits, una clave secreta de triple DES que llamarnos K un prefijo secreto de 20 bits, P, y un sufijo secreto de 20 bits, S. Cada nueva salida de 32 bits se produce de la siguiente manera:

1) Usar la función hash SHA1 para calcular hash(P,C,S)

2) Con triple- DES se calcula EK(C)

3) Se hace un XOR de los bits de mayor peso del valor hash con el resultado del cifrado, se ofrecen como salida los cuatro bytes de mayor peso de dicho número.

4) C=C+1

El generador Blum Blum Shub

Este reviarse BBS es el que actualmente tiene una prueba más sólida generador que suele piadosamente abde f se basa en residuos cuadráticos y su única desventaja es que ortaleza. Es también muy simple,requ n con otros generadores clásicos. iere bastante cálculos en comparació

Se empieza eligiendo dos grandes primos p y q que al ser divididos entre 4 den resto 3. Sea n el producto de p por q. Se elige entonces un número aleatorio x primo con n. La semilla inicial para el generador y el método de calcular los siguientes valores de la secuencia son:

S0 = x2 mod n

Si+1 = S2imod n

Page 123: Software para cifrado

Deben emplearse sólo unos pocos bits del final de cada Si. Siempre es seguro utilizar solamente el bit menos significativo. Si se usan no más de Iog2(log2 S¡) de los bits de menos peso, se demuestra que predecir bits adicionales es tan difícil como la factorización de n, un problema tenido por intratable actualmente y base de métodos tan sólidos como RSA.

Otro detalle interesante de este generador es que se puede calcular directam te cualquier valor Si sin teneren que calcular los anteriores. En concreto:

Esto significa que en aplicaciones que generan muchas claves de esta manera, no es necesario almacenarlas todas, cada clave puede ser reconstruida a partir de su índice y los S y n iniciales.

Generador de bits pseudo aleatorio RSA

117