Tejiendo la Red
Visita la página de la Chingada

Usos de la Criptografía de Llave Pública

por Daniel M. Germán y Alejandro López-Ortíz


Como describimos el mes anterior, la criptografía de llave pública utiliza dos llaves, la privada -conocida solamente por su dueño- y la pública -que puede ser conocida por cualquiera. Un mensaje que se desea enviar debe ser encriptado utilizando la llave pública del destinatario. Al recibirlo, el destinatario utilizará su llave privada para desencriptarlo. El sistema de llave pública tiene las siguientes ventajas: a) es muy seguro si las llaves son suficientemente grandes, b) por cada persona es necesaria solo una pareja de llaves, y c) la llave pública de una persona puede -y debe- ser publicada. En cambio, el sistema de llave única requiere que cada pareja de corresponsales comparta una llave única, y que ésta se mantenga siempre en secreto. Desgraciadamente encriptar un mensaje con el sistema de llave pública es lento.

Normalmente un mensaje se encripta primero con la llave pública y despues se desencripta con la llave privada. Sin embargo, se pueden utilizar la llaves en order invertido: primero la privada y luego la pública. Supongamos que el usuario X codifica un mensaje con su llave privada. Cuando dicho mensaje llega a su destinatario, éste utilizará la llave pública de X. Si el resultado es un mensaje legible, entonces sólo X pudo haberlo codificado, pues nadie más conoce su llave privada. Si, en cambio, el mensaje que resulta parece una secuencia de bytes aleatorios, el mensaje no fue codificado utilizando la llave privada de X. Este proceso sirve dos propósitos: autenticar que X envió el mensaje, y autenticar que el mensaje no ha sido modificado en tránsito. Si el mensaje hubiera sido modificado, el resultado de la decodificación sería basura. Sin embargo, como ya mencionamos, codificar un mensaje completo es una tarea lenta, especialmente para documentos largos. Para evitar este cuello de botella, se aplica una función de dispersión (hash) al documento[*] y sólo el resultado, al que se le llama ] firma digital, es encriptado como ya antes se describió. Dicha firma digital se agrega al documento, el cual es enviado. El destinatario separa la firma digital del mensaje, y aplica a este último la misma función de dispersión. Posteriormente decodifica con la llave pública de X la firma digital del mensaje y la compara con la calculada. Si son diferentes entonces, o bien el contenido del mensaje fue modificado después de ser firmado, o X no lo envió. Este tipo de transacciones son de especial utilidad para el cierre de contratos por medios electrónicos.

Águila o Sol electrónico

Otro uso importante de la criptografía de llave pública es el volado electrónico. El problema es el siguiente: ¿cómo pueden echar un volado dos personas a través de correo electrónico, asegurando que ninguna de las partes hace trampa? Las dificultades son numerosas ¿quién arrojará la moneda? ¿en que momento la arroja uno y en que momento pide el otro? Si ya de por si este es un proceso delicado en persona imagínelo en el mundo de las comunicaciones.

El algoritmo para resolverlo se basa en criptografía de llave pública y funciona de la siguiente manera: Llamemos Alicia y Benito a los contendientes (representados en el diagrama por A y B respectivamente). Ambos generan una pareja de llaves públicas y privadas. Benito genera dos mensajes, A y S; cada uno de estos mensaje contendrá una cadena aleatoria y, uno águila y el otro sol. Encripta ambos con su llave pública Apub, y envía ambos [E(A, Apub),E(S, Apub ) ]a Benito. Benito, quien no puede entender ninguno, elige uno al azar, encriptándolo con su llave pública Bpub y enviándolo [E(E(X, Apub) , Bpub) donde X es A, o S],de regreso a Alicia. Alicia, lo "desencripta" utilizando su llave privada Apriv y lo envía a Benito, esto produce produce E(Y, Apriv) donde Y es A o S. Benito hace lo propio con su llave privada Bpriv, en ese momento el mensaje es legible y por lo tanto conoce el resultado del volado. Regresa el mensaje a Alicia, quien autentica que el mensaje, efectivamente, es uno de los dos que envió inicialmente, siempre y cuando la cadena aleatoria que utilizó en la primera etapa se mantenga intacta. La figura 1 muestra el intercambio de mensajes. Benito regresa el mensaje a Alicia y ambos intercambian sus llaves públicas y privadas, para verificar que cada mensaje que recibieron fue el correcto. Un ejercicio interesante es intentar hacer trampa (es decir, "voltear la moneda" después que cayó, o cambiar lo que uno pidió) y verificar como se daría cuenta el otro.

Otras aplicaciones de la criptografía de llave pública en el ciberspacio son el firmado simultáneo de contratos (en que ambas partes aceptan un contrato simultáneamente, algo que frente a frente es también trivial), y el envío y recepción de correo certificado (asegurándose que el destinatario acepta haber recibido un mensaje antes de leerlo). Aún cuando parezca extraño, estos tres protocolos tienen fuertes implicaciones en el comercio electrónico del futuro.

Una historia complicada

Antes de discutir las implentaciones de criptografía publica, es necesario hacer un brever paréntesis histórico. Desde su invento, la criptografía ha sido una poderosa herramienta para el espionaje y la guerra. Por ello los EUA imponen restricciones para la exportación de software que incorpore criptografía avanzada. Rivest, Shamir y Adelman desarrollaron, en 1977, un algoritmo extremadamente seguro y simple para criptografía de llave pública, al cual se le conoce ahora como RSA. A pesar de presiones por parte del gobierno de EUA para evitarlo, el algoritmo fue publicado en 1977 y en 1978 [1]. En 1983, el MIT obtuvo la patente sobre el algoritmo. Esta patente es inválida fuera de EUA y Canadá, pues, excepto en este país, al publicarse el algoritmo, éste se vuelve del dominio público y por lo tanto no es patentable (en EUA hay un periódo de gracia de hasta un año después de su publicación). Más tarde, MIT cede la patente a un grupo llamado Public Key Partners (PKP), que incluye a RSA Data Security, la cual es también dueña de otras patentes que cubren otros algoritmos de criptografía de llave pública. En esencia, la patente da a PKP el derecho a ser un monopolio que controla la criptografía de llave pública en EUA y Canadá por 17 años, el periodo de duración de las patentes. En 1991, Phil Zimmermann autoriza publicar en multiples BBSs y foros de USENET un programa de dominio público llamado Pretty Good Privacy (PGP), que incluye una implementación del algoritmo de RSA, pero basándose en la información pública que se hizo disponible 10 años antes. RSA amenaza con demandarlo, por lo que para evitarlo, Zimmermann promete no continuar con el desarrollo de PGP. Sin embargo, programadores en diversas partes del mundo continúan con su desarrollo, portándolo a multiples arquitecturas y sistemas operativos. Por si fuera poco el código de PGP puede ser obtenido desde cualquier país por lo que el gobierno de los EUA inició una investigación para decidir si Zimmermann violó las restricciones de exportación. Apenas en enero pasado Zimmermann es notificado que se decidió no continuar la investigación. MIT decide negociar con Zimmermann y RSA una licencia para el uso no comercial de PGP, y nace así la versión 2.5, la cual no puede ser exportada. Sin embargo, la secciones no relacionadas con criptografía si pueden ser exportadas, y en ellas se basa Stale Schumacher para crear la versión internacional de PGP, la cual es, a partir de ese momento, compatible con la de MIT.

Implementaciones

PGP es el programa más utilizado en el mundo para criptografía de llave pública. La versión más actual es la 2.6.3i, donde la i identifica a la versión internacional. Es ilegal en México utilizar la versión del MIT (2.6.3) no porque viole la patente, sino porque contiene código protegido por derecho de autor, además que es ilegal exportar desde EUA una copia de 2.6.3. PGP 2.6.3i es gratuito para fines no comerciales, pero es necesario pagar una licencia para su uso comercial (debido a que utiliza un algoritmo llamado IDEA, patentado por Ascom Systec, en Suiza); su precio es relativamente barato: US$15, por usuario. Contrariamente a lo que mucha gente supone, PGP 2.6.3i es tan seguro como su contraparte estadounidense. ViaCript publica una versión comercial de PGP que sólo puede ser exportada a compañías transnacionales estadounidenses que cumplan con ciertos requisitos. Existen paquetes que permiten conectar PGP con programas de correo electrónico para firmar, autenticar, encriptar y desencriptar mensajes electrónicos.

Netscape Communications utiliza RSA para autenticar conexiones a nivel de sockets. El protocolo es llamado Secure Sockets Layer (SSL). Netscape Navigator utiliza SSL para realizar transacciones comerciales entre él y Netscape Commerce Server. Desgraciadamente, de nuevo debido a restricciones de exportación de los EUA, la versión internacional de Netscape permite solamente llaves de 40 bits máximo, que es ordenes de magnitud más débil que la versión estadounidense, que utiliza llaves de 128 bits. Netscape asegura que se necesitan 64 MIPS-años para romper una llave de 40 bits. Si la información vale la pena, puede ser decodificada. Esto no pasaría con una llave de 128 bits (con una de 256 bits sería virtualmente imposible lograrlo aun utilizando toda la energía del universo).

El próximo mes comentaremos más sobre Netscape, Digicash, y otros mecanismos desarrollados para realizar comercio electrónico.

[1] R.L Rivest, A. Shamir y L. Adelman, "A method for obtaining digital signatures and public-key cryptosystems", Communication of the ACM, vol. 21, Número 2, 1978, pp. 120-126.


[Home] [My Research] [Leonora Carrington] [Remedios Varo]
[Spices] [Mexican Cuisine] [México] [Comp-Jugador]
[Tejiendo la Red] [Gramática del Español] [Protocolos de Seguridad]
[La Chingada]

Last Modified: Thu Aug 29 09:49:31 EDT 1996
© 1996 Daniel M. Germán (http://www.reidgroup.com/~dmg )
(Sending me Email)