1. Intercambio de ClavesDiffie-Hellman<br />Confiable como es, la seguridad que ofrece RSA depende de hacer aritmética con números gigantescos, lo que determina comunicación muy lenta. Si los mensajes son documentos extensos, RSA resulta de poca utilidad. Es más fácil usar un sistema de clave privada pero rápido –DES es el favorito- y resolver el problema de intercambio de claves de otra manera.<br />Este problema fue resuelto por Diffie y Hellman en 1976. Su seguridad se basa en la dificultad de resolver el problema de logaritmos discretos.<br />Logaritmos discretos. Seguro que ya sabes que el logaritmo de 1000 en base 10 es 3. Esto lo podemos calcular con la calculadora pero lo más interesante para entender en qué consiste el problema del logaritmo discreto es por qué es 3. La razón es que 103=1000. Podemos escribirlo en la notación habitual haciendo uso de la definición de logaritmo:<br />log101000=3 porque 103=1000<br />Logaritmo es sinónimo de exponente. Cada vez que vemos una potencia, desde otro ángulo veremos un logaritmo. Por ejemplo:<br />34=81 es lo mismo que log381=4 <br />En aritmética modular también tenemos logaritmos, siempre que el módulo p sea un número primo. Se apellidan discretos por oposición a continuos que son los que conocemos; tiene que ver con la finitud del conjunto donde se definen.<br />Por ejemplo, para p=7 primo, Z7={0, 1, 2, 3, 4, 5, 6}. Si ignoramos el 0 obtenemos<br />Z7*={1, 2, 3, 4, 5, 6}<br />en el que se puede multiplicar cerradamente, sin salirse de Z7*. Es más, el número 3, por ejemplo, tiene la propiedad que todas sus potencias cubre todo Z7*. Es decir, cada elemento de Z7* es una potencia de 3 y por ello en Z7* tenemos un logaritmo de base 3. En efecto: <br />POTENCIALOGARITMO30=1log31=031=3log33=132=2log32=233=6log36=334=4log34=435=5log35=5<br />Se puede observar que 36=35×3=5×3=15=1 (mod 7) lo cual dice que después de cubrir Z7*, las potencias de 3 se repiten cíclicamente. <br />En todo este pareo hay una base fija que es 3 y cada elemento de Z7* tiene un logaritmo en base 3. No todo elemento sirve de base, como es el caso de 2 cuyas potencias no cubren todo Z7* (verifícalo). Cinco (5) en cambio sí que puede ser base:<br />50, 51, 52, 53, 54, 55=1, 5, 4, 6, 2, 3<br />Ejercicio. Halla todos los elementos que sirvan de base para logaritmos en Z11*.<br />A los elementos que puedan servir de base de logaritmos se llaman generadores, pues con sus potencias generan todo Zp*. Una propiedad de los números primos es que cada Zp* tiene al menos un generador, y a esta verdad se la da la importancia que merece:<br />Si p es primo, existe α∈Zp* tal que αn:entero=Zp*<br />Por ello, si α es generador de Zp*, todo elemento x∈Zp* tiene un logaritmo de base α módulo p.<br />El problema del logaritmo discreto. En un grupo abeliano finito G (habitualmente pensamos en el grupo multiplicativo del anillo Z/mZ o en un grupo multiplicativo de un cuerpo finito) es sencillo calcular ax para un elemento de a∈G y un entero x. Sin embargo, conocidos a, y∈G, y una potencia de a, en general es muy difícil calcular x∈N tal que ax=y. Dicho problema se conoce con el nombre del Problema del Logaritmo Discreto.<br />Intercambio de claves de Diffie-Hellman. El problema del logaritmo discreto fue utilizado por Diffie y Hellman como un medio seguro para el intercambio de claves entre dos usuarios a través de un canal inseguro. El sistema para ello es relativamente simple: supongamos que dos usuarios A y B desean ponerse de acuerdo en una clave común para un sistema de intercambio de clave privada. Supongamos que dicha clave debe ser un elemento de un cuerpo finito Fq, siendo q una potencia de un número primo p (ambos pueden ser públicos). El método es el siguiente: <br />Conciertan un generador β del grupo Fq*.<br /> A elige un entero a (que mantiene en secreto), calcula βa y lo transmite a B. B hace lo propio, elige b y transmite βb.<br /> A y B toman como clave secreta βab.<br />La hipótesis de Diffie y Hellman era que es computacionalmnete intratable calcular βab conocidos βa y βb (que pueden ser conocidos por cualquier escucha en el canal). Se considera (aunque no está probado) que el problema es equivalente a calcular a a partir de βa (o b a partir de βb), es decir, equivalente a resolver el problema del logaritmo discreto.<br />Basados en el problema del logaritmo discreto hay varios sistemas de clave pública (El Gamal, Massey-Omura) y de firma digital, notablemente el sistema DSS (Digital Estándar Signature) propuesto por el NIST (National Institute of Standars and Tecnology, USA) como sistema de firma digital estándar. <br />Ejemplo de intercambio de claves en un canal inseguro.<br />Acuerdo público en acción. A través de un medio inseguro (Internet por ejemplo), Alicia y Benito se ponen de acuerdo en usar un número primo p muy grande y un generador G de Zp* (el intruso Malory detecta ambos números). Alicia escoge un entero a<p que usará como exponente y mantiene el secreto. Benito hace lo propio, escoge un número b<p que usará como exponente y también mantiene en secreto. <br />Intercambio de claves en acción. Con su exponente secreto Alicia calcula Ga (mod p) que envía a Benito (el intruso Malory lo intercepta). Benito por su parte calcula Gb (mod p) que envía a Alicia (Malory lo vuelve a interceptar y ve los resultados de Ga y Gb, pero no ve ni a ni b).<br />Alicia recibe Gb y con su exponente secreto calcula (Ga)b. Benito hace lo propio: recibe Ga y con su exponente secreto calcula (Ga)b. Como<br />(Gb)a=Gba=Gab=(Ga)b=K,<br />Alicia y Benito comparten el número K que nadie más conoce.<br />Malory (intruso) en acción. Malory conoce G, Gab y p. No conoce a. Tiene un problema de logaritmo discreto. Tendrá que recurrir a otros medios. Podría usar su computadora más veloz para calcular potencias sucesivas de G: G2, G3, G4,… hasta encontrar un exponente que le dé Ga. Si el primo p es de más de 200 dígitos, el proceso le puede durar varios años. <br />Ejemplo. Trabajemos a escala microscópica para entender bien este problema. Alicia y Benito acuerdan el número p=2003 y el generador G=106. Todo el mundo sabe que ellos usan (p=2003 y G=106).<br />Alicia escoge su exponente (cabalístico) a=381, no lo revela a nadie y calcula<br />Gamod p=106381 mod 2003=1717,<br />y envía 1717 a Benito.<br />Benito coge su exponente (de buena suerte) b=751, no lo revela a nadie y calcula:<br />Gbmod p=106751 mod 2003=158,<br />y le envía 158 a Alicia. <br />Alicia, en secreto, hace el cálculo <br />158381 mod 2003=1193<br />Benito, en secreto, hace el cálculo<br />17177511 mod 2003=1193<br />y K=1193 es la clave que comparten.<br />El intruso Malory conoce p=2003, el generador G=106 y Ga=1717. Su problema es hallar:<br />log1061717(mod 2003) ó log106158(mod 2003)<br />Con un número p de 4 cifras, CALC puede obtener una respuesta, pero si p tuviera 200 cifras o más, el cálculo de cualquiera de los dos logaritmos sería muy costoso en términos de tiempo.<br />Ejercicio. (CALC) Imagina que tú eres Malory, el intruso. Navegas por los portales de Alicia y Benito y en ambos hallas (p=43 y G=18). Luego ves el misterioso número 11 en la página de Benito y el misterioso número 15 en la página de Benito. ¿Puedes determinar el número secreto que Alicia y Benito comparten?<br />Bibliografía<br />Manuel J. Lucena López. Criptografía y Seguridad en Computadores. Universidad de Jaén. Versión 4-0.9.0<br />Jorge M. López. Conceptos Básicos de Criptografía. <br />Félix Delgado de la Mata, Criptografía. Universidad de Valladolid.<br />