Tejiendo la Red


¿Es la red lo suficientemente confiable?

por Daniel M. Germán y Alejandro López-Ortiz


Se habla mucho de un futuro mercado electrónico, en que será tan fácil comprar, desde nuestro hogar, productos en venta en Bombay, en Toronto o en la Cd. de México, todo esto a través de Internet. Pero ¿puede la Red garantizar transacciones seguras? En éste y los siguientes meses, analizaremos las condiciones actuales del comercio en la Red y hasta qué punto es un ambiente en que se dan las condiciones mínimas para convertirse en el supermercado del siglo XXI.

Una red donde la seguridad es secundaria

Internet nació como una red científica y militar hace unos 20 años. Durante sus inicios, se decidió que la seguridad de la información que transmitía no era una prioridad; lo más valioso en ese momento era interconectar computadoras de forma tal que pudieran resistir fallas severas, posiblemente resultado de un ataque militar. El protocolo principal de Internet no ha variado mucho desde sus inicios. Cuando una computadora envía información a otra, ésta se divide en pequeños paquetes (llamados datagramas) que son enviados a través de la Red, en canales comunes semejantes a autopistas, donde cada datagrama sería un automóvil. Cualquiera que se detenga, al lado de esta carretera, verá cada uno de los datagramas que en ella se transmiten. Si, por ejemplo, se envía un mensaje de A a Z, y éste tiene que pasar por la computadora M (recordemos que Internet es una red de redes, en la que cada mensaje puede pasar por múltiples redes locales y por lo tanto múltiples computadoras antes de llegar a su destino). La computadora M puede "intervenir" la línea, copiar y almacenar cada uno de los datagramas que A envía a Z, reensamblarlos y reproducir exactamente el mensaje enviado si todos los datagramas pasaron por M[1]. TCP/IP (el conjunto de protocolos que especifican cómo debe realizarse la comunicación entre dos computadoras conectadas a Internet) no incluye métodos para cifrar la información que se transmite, y deja esta responsabilidad a la aplicación.

Hasta hace poco tiempo, las principales virtudes de Internet eran su capacidad de comunicación rápida (correo electrónico, World Wide Web) y de conectarse a una computadora remota (telnet y Rlogin). En el primer caso, si la información a transmitir era secreta, el correo electrónico podía ser sustituído por el teléfono (incluyendo el fax). De hecho, actualmente es buena práctica no enviar números de tarjetas de crédito a través de correo electrónico, y en lugar de ello, enviarlos por fax, que aun cuando no es absolutamente seguro, es menos probable que sea interceptado. Los usuarios de telnet, ftp y todos los servicios que requieren de una clave de acceso notaron la necesidad de proteger sus sistemas contra accesos ilícitos y como consecuencia se creó Kerberos (ver [1]).

World Wide Web se creó para distribuir información y hasta hace poco utilizaba métodos simples de control de acceso (a través de una clave de acceso, o restringir el acceso a un dominio particular, por citar algunos ejemplos). Sin embargo, WWW es el brazo comercial de Internet, y estos métodos son insuficientes para realizar comercio electrónico: la información intercambiada entre un cliente y un servidor de WWW, en principio, no está cifrada. Netscape Communications y otras compañías han iniciado proyectos para crear un sistema de transacciones lo suficientemente seguro para que sus usuarios estén dispuestos a confiar en él.

Criptografía

El futuro comercial de Internet depende de la criptografía. La criptografía es la parte de las matemáticas que se encarga de estudiar los métodos de cifrado y descifrado de mensajes. Se le atribuyen a Julio César los primeros algoritmos de cifrado y durante siglos su principal uso era el militar (excepto, claro, cartas incriminatorias de amor).

En la actualidad, los tipos de algoritmos de cifrado más empleados son dos: el de llave única, y de doble llave. Denotemos por M el mensaje a enviar, y por Ll la llave del sistema de llave única, el equivalente cifrado de M, denotado por C, se obtiene usando la función de cifrado f y la llave Ll, C = f (M, Ll), y para revertir el mensaje C a M usamos la función de descifrado g, M= g(C, L1), donde f y g son dos funciones bien definidas y por lo regular idénticas. La ventaja de usar la misma función para cifrar y descifrar es que se requiere un solo programa, máquina o chip para codificar y decodificar mensajes. El sistema de doble llave, como su nombre lo indica, emplea una llave privada (que llamaremos Llpri) y una llave pública (Llpub). En este caso, C se calcula C = h(M, Llpub) y M = j(C, Llpri). De nuevo h y j son, normalmente, idénticas.

Una de las dificultades principales de la criptografía computacional es que, para ser efectiva, las funciones de cifrado y descifrado deben ser conocidas, pues de otra forma se corre el riesgo que el receptor de un mensaje cifrado sea incapaz de decodificarlo, aun cuando conociese la llave; de esta forma solamente requerimos mantener un secreto: la llave. En consecuencia, un atacante -alguien que desee romper un mensaje (dícese del acto de decodificar un mensaje ilegitamente)- necesita solamente adivinar la llave necesaria. Por ejemplo, supongamos que utilizamos un método de llave única con una función de cifrado y descifrado (f) bien conocidas, supongamos ahora que podemos elegir la llave Ll de entre n diferentes posibilidades (públicamente disponible). El atacante necesita simplemente intentar cada una de las n posibilidades. Con la ayuda de una computadora y un diccionario de palabras es posible automatizar la tarea y eventualmente obtendrá la respuesta. Entonces, ¿cómo puede un mensaje cifrado ser seguro? Si n es lo suficientemente grande, intentar cada una de las posibilidades puede tomar suficiente tiempo como para volver la tarea impráctica. Por ejemplo, si la llave fuera un número decimal de 14 cifras, y si el atacante pudiese intentar 1 millón de llaves por segundo, le tomaría más de un año intentar cada una de ellas. El algoritmo DES (Digital Encryption Standard), desarrollado a mediados de los 70's por IBM, es el algoritmo estándar de cifrado en EUA. El tamaño de llave es de 56 bits, lo que da un universo de 7.2 x 1016 llaves posibles. Excepto en situaciones en las que el documento debe mantenerse cifrado por años o en casos en que la llave es usada muy frecuentemente, DES es una solución segura[2]. Sin embargo, el sistema de llave única tiene varios problemas; para que una persona envíe un mensaje cifrado y su corresponsal lo pueda leer, es necesario que ambos conozcan la llave, lo que significa que por cada par de corresponsales debe crearse un llave única. Como consecuencia, para que n personas se comuniquen entre sí, en una forma en que sólo el remitente y el destinatario de un mensaje lean el contenido de cada mensaje, seran necesarias (n-1) n/2 llaves. Además, una vez que cada pareja decide tener una llave común, el siguiente problema es cómo compartir esta llave sin que ésta corra el riesgo de caer en manos de un atacante. Obviamente, si se transmite la llave por correo electrónico, ésta puede se interceptada y de nada serviría cifrar el mensaje, pues el atacante tendría la llave secreta.

Criptografía de llave pública

Los algoritmos de doble llave resuelven este problema. El destinatario genera dos llaves, una de las cuales la entrega a su corresponsal (Llpub) y la otra la mantiene secreta (Llpri). Llpub puede ser conocida por cualquiera que desee enviar un mensaje a un destinario particular, y por ende se le llama llave pública, mientras que la otra llave (Llpri) debe ser conocida solamente por el destinatario y de ahí que se le llame llave privada. La llave pública puede publicarse en "directorios", accesibles a quien quiera enviar un mensaja cifrado a una persona en particular. Como consecuencia, se necesitan solamente n pares de llaves para n usuarios y se elimina el problema de distribuir una llave secreta a nuestro corresponsal. Es común que este tipo de llaves tengan longitudes de más de 128 bits (lo que da más de 3.4 x 1038 diferentes posibilidades) y que hace prácticamente inviable el intentar cada una de ellas hasta que se encuentre la correcta. Ambas llaves están relacionadas y, teóricamente, conociendo una llave no puede determinarse la otra, aunque puede reducirse el tamaño del conjunto de llaves de donde se selecciona la otra. Esto podría ser de gran ayuda al atacante, pues en lugar de tener que intentar 1038 llaves diferentes, tendría que intentar, por poner un ejemplo 1020, que es considerablemente menor. Para evitarlo, en la práctica se busca que la relación entre una y otra llave se base en un problema difícil de resolver (difícil en el sentido de que toma mucho tiempo); uno de los métodos más empleados es el encontrar la factorización en números primos de un número dado. Por ejemplo, 315 es el producto de 3*3*5*7. Para números de pocas cifras este es un problema relativamente sencillo.

Actualmente los métodos más avanzados pueden factorizar números menores que 2128. Se estima que no será posible factorizar números cercanos a 2512 por los siguientes diez años, por ello, hoy día una llave de 512 bits es considerada relativamente segura. En 10 años, cuando ya no lo sea más, el mismo algoritmo puede ser usado con llaves de 1024 bits, que son exponencialmente más seguras. La criptografía de llave pública es claramente superior a la de llave única desde el punto de vista de seguridad, pero tiene el inconveniente que toma demasiado tiempo cifrar un mensaje utilizando este método. Esto es particularmente grave en el caso de bancos y tarjetas de crédito que efectúan cientos de transacciones por minuto. Hoy día el método de llave pública es usado ampliamente en el sistema de llaves PGP, del cual hablaremos en Tejiendo la Red del próximo mes.

Combinando ambos métodos

Mencionamos antes que DES es lo suficientemente seguro para la mayor parte de las aplicaciones, pero su desventaja es la creación y distribución de las llaves. El problema del método de llave pública es su lentitud. Veamos ahora la siguiente situación: supongamos que A desea comunicarse con Z. Primero, A encuentra la llave pública de Z, y le envía un mensaje cifrado con ella diciendo: Soy A y a partir de este momento utilizaremos la siguiente llave K y el algoritmo DES para comunicarnos. Los siguientes mensajes entre A y Z se envían utilizando criptografía de una llave. El primer mensaje es seguro (y por lo tanto el intercambio de la llave K) y aún cuando sea caro codificarlo, puesto que el mensaje es corto, es viable. En el momento en que A y Z den por terminada la conversación, K deja de utilizarse (conceptualmente se destruye). La creación dinámica de llaves para DES y el compartirlas con criptografía de llave pública hacen que el método combinado sea ideal para su uso en redes de computadoras.

El siguiente mes exploraremos las implementaciones comerciales de criptografía de llave pública y sus usos que, sorpresivamente, van más allá del cifrado de mensajes.

[1] Espinosa, E. "El sistema de autentificación Kerberos", Soluciones Avanzadas, Año 3, No. 23, Julio 1995, pp. 46-51.


This article is Copyright © 1996, A. Lopez-Ortiz and Daniel M. Germán
Last modified: Mon Feb 12 21:32:18 1996