LA CIENCIA DE LOS ORDENADORES
SEGURIDAD DE LOS DATOS EN LAS REDES INFORMÁTICAS
(Peter J. Denning)
American Scientist, Volumen 75, enero febrero 1987
(Traducción: María Paz Sánchez Sánchez)
(Corredora de Comercio Colegiada)
Teleciencia. La NASA emplea este término para referirse a la investigación científica realizada por medio de ordenadores e instrumentos conectados por redes a larga distancia. Comprende el control remoto de experimentos en plataformas del espacio, el funcionamiento de estos experimentos y la colaboración entre científicos de todo el mundo que interpretan y publican resultados. Lo mejor está por llegar, ya que se espera que la teleciencia sea un recurso habitual de investigación en todos los campos científicos hacia mediados de los noventa.
Para la seguridad e integridad de su investigación, los investigadores quieren tener certeza de que están ligados a sus propios instrumentos cuando hacen una conexión y que ninguna otra persona puede conectarse. Quieren estar seguros de que nadie puede alterar los datos que transmiten o las órdenes autorizadas que envían desde sus instrumentos. Quieren estar seguros de que nadie descubre las comunicaciones confidenciales con sus colegas. La primera garantía, llamada autenticación, certifica la identidad del participante -persona, ordenador o aparato- al que se accede en la red. La segunda garantía, llamada integridad, certifica que un conjunto de datos procede realmente de una fuente previamente autenticada. La tercera garantía, denominada secreto, certifica que el contenido de la serie de datos permanece escondido de las miradas de afuera. Las transmisiones de datos que cumplen estos requisitos se denominan comunicaciones seguras. La teleciencia precisa comunicaciones seguras en redes con un ancho de banda(1) grande, un millón de bits (Mbps) por segundo o más.
¿Quién proporciona estas garantías?. Los autores de los programas que se utilizan en una red deben suministrar los protocolos(2) de comunicaciones. Todos estos mecanismos requieren en última instancia que cada participante pueda poseer u obtener información que identifique a cualquier otro. La verificación de identidad puede englobarse bajo la rúbrica de cifrado de datos. Los mecanismos deben ser capaces no sólo de cifrar y descifrar los datos eficientemente, sino también de distribuir y proteger las claves. A continuación, presentaremos una breve reseña de esta fascinante materia. Un estudio detallado puede encontrarse en el libro de Dorothy Denning, Cryptography and Data Security (1). (Criptografía y Seguridad de Datos).
Los participantes pueden comunicarse mediante conversaciones en dos sentidos en tiempo real, o en un sentido, enviando una serie de datos a gran velocidad o un mensaje de correo electrónico. Algunas comunicaciones deben firmarse, añadiendo una marca indeleble que confirme la identidad del emisor y descarte cualquier duda razonable.
Una vía de comunicaciones en una red incluirá muchos enlaces, cambios, ordenadores, redes locales y pasarelas de Internet. En la mayoría de las redes estos componentes son vulnerables, porque la seguridad de los datos no se tuvo en cuenta en el planteamiento inicial. Cada componente es una oportunidad potencial para que un intruso se inmiscuya en la conversación, lea el correo, modifique alguna parte de los mensajes anteriores o altere la transmisión de datos. Debido a que dos participantes que deseen comunicarse no tienen control sobre muchos componentes de la red, deben utilizar protocolos que les permitan examinar los mecanismos de encriptación y las claves.
Los criptosistemas tradicionales se basan en una simple clave k, conocida sólo por A y B, participantes que desean comunicarse. Se envía un mensaje M como texto cifrado, representado por [M]k. Este esquema aporta tanto autenticación como secreto: si cuando B intenta descifrar el mensaje obtiene un resultado incoherente, B sabe que no ha sido A el emisor del mensaje.
El sistema de cifrado informático más conocido es el estándar de encriptación de datos (Data Encryption Standard, DES), promulgado en 1977 por la Oficina Nacional de Estándares de Estados Unidos (National Bureau of Standards). DES utiliza una clave de 56 caracteres para cifrar sucesivos bloques de datos de 64 caracteres. Los chips de los ordenadores que contienen el algoritmo DES operan a una velocidad mayor que 10 Mbps, velocidad superior a la requerida en la mayor parte de las redes de comunicación de área extendida. En un principio surgen dudas sobre si la clave DES es lo suficientemente grande como para evitar que el código pueda adivinarse mediante la búsqueda sucesiva de claves y si dicho código contiene trampas que permitan al gobierno leer cifrados DES. Estas controversias han producido inquietud, aunque no se han encontrado fallos. Para lograr mayor protección puede utilizarse doble o triple cifrado con diferentes claves. Como DES tiene ahora diez años, los criptógrafos han comenzado a buscar sustitutos adecuados para uso comercial.
Otro tipo de criptosistema fue propuesto en 1976 por Whitfield Diffie y Martin Hellman de la Universidad de Stanford. Lo denominaron criptosistema de clave pública para diferenciarlo de los tradicionales sistemas de clave privada. El sistema de clave pública utiliza dos claves complementarias: una se hace pública y se utiliza para cifrar mensajes, la otra se guarda en secreto y se emplea para descifrar los mensajes. La clave secreta no puede deducirse de la clave pública. Los critposistemas de clave única son simétricos, porque utilizan la misma clave para cifrar y descifrar; los sistemas de dos claves son asimétricos. En un criptosistema simétrico puede servir como clave casi cualquier combinación binaria. Sin embargo, hay que hacer muchos cálculos para generar un par de claves para un criptosistema asimétrico.
El funcionamiento de un sistema de clave pública es como sigue. Un participante A tiene una clave secreta y una pública, representadas por SA y PA. Para comunicarse con A, B envía el texto cifrado [M]PA ; A lee el mensaje descifrando el texto con la clave secreta, porque M = [[M]PA]SA. A y B pueden mantener una conversación mandándose mensajes cifrados bajo la clave pública de cada uno. Se mantendrá el sigilo porque sólo hay una copia de la clave secreta, que permanece en poder del participante que la ha generado.
En un criptosistema de doble clave están separados secreto y autenticación. El secreto se logra cifrando con la clave pública del destinatario. Cualquiera puede generar [M]PA, pero sólo A puede descifrarlo. La autenticación se consigue con la clave secreta del emisor: sólo A puede generar [M]SA y cualquiera puede descifrarlo. Se necesitan dos cifrados para lograr ambos: secreto y autenticación. [[M]SA]PB puede cifrarse sólo por A y descifrarse sólo por B.
El primer criptosistema de clave pública con estas propiedades fue desarrollado en 1977 por Ronald Rivest, Adi Shamir y Len Adleman de MIT y es conocido por sus iniciales, RSA (2). Funciona como sigue: para generar una clave, se eligen dos números primos grandes, p y q. Después hallamos dos números enteros d y e que satisfagan
d e módulo (p-1) (q-1) = 1
(En general, «x módulo y» es el resto de dividir x por y)
Sea
n = pq.
La clave secreta es (d,n) y la pública (e,n). Para cifrar haremos
C = [M]PA = Me módulo n
Y para descifrar haremos
M = [C]SA = Cd módulo n
Al descifrar recuperaremos M, porque el teorema clásico de Fermat dice que
Mde módulo n = M
Como ejemplo, supongamos
p = 3
q = 11
Entonces
n = 33
(p-1) (q-1) = 20
Elijamos nosotros:
(d,e) = (3,7)
Es válido porque
de módulo 20 = 21 módulo 20 = 1
Supongamos que M = 4; entonces el texto cifrado es C = 16, porque
47 módulo 33 = 16.384 módulo 33 = (33 x 496 + 16) módulo 33 = 16
El mensaje descifrado es M = 4, porque
163 módulo 33 = 4.096 módulo 33 = (33 x 124 + 4) módulo 33 = 4.
La seguridad del sistema RSA se basa en la extrema dificultad de hallar un número compuesto grande: si los números primos p y q pueden obtenerse fácilmente conociendo n, la clave para descifrar el cifrado público también puede computarse fácilmente. En el verano de 1986, después de varios días de trabajo en una red de ordenadores, investigadores de la Mitre Corporation hallaron un número de 84 cifras, el mayor obtenido hasta entonces. Para mantenerse a salvo de los súper computadores rápidos y los métodos más eficientes de calcular algoritmos, la mayoría de los programadores de sistemas RSA recomiendan que n tenga del orden de 200 cifras (665 bits aproximadamente).
Se han desarrollado chips de ordenador que contienen el algoritmo RSA. Debido al gran número de caracteres que hay en cada bloque de clave cifrada (aproximadamente 200), estos chips son bastante lentos, operando a pocos Kilobits por segundo. Esto significa que en los sistemas conocidos de clave pública, las conversaciones secretas entre ordenadores resultan muy lentas, aun con anchos de banda grandes.
Entonces, ¿Cuál es la ventaja del sistema de clave pública?. La posibilidad de separar autenticación y secreto. Esta separación permite firmas digitales, donde un tercero puede certificar la identidad del emisor. Funciona como sigue: un mensaje firmado consta de un encabezamiento, un cuerpo M y una firma X = [F(M)]SA. El encabezamiento indica que el mensaje procede de determinado emisor, llamado A; la firma es un pequeño bloque calculado a partir de M y después cifrado con la clave secreta de A. La función de compresión de datos F, frecuentemente denominada función hash(3), es pública; su resultado F(M) se denomina suma de comprobación(4)
. El receptor aceptará el mensaje sólo si la firma descifrada con la clave pública de A, es idéntica a la suma de comprobación del mensaje recibido. Si A manifiesta que B cambió el mensaje o B alega que A envió un mensaje diferente, un tercero puede resolver la controversia descifrando la firma y comparando la suma de comprobación del mensaje reclamado. Si el mensaje es secreto, el cuerpo del mensaje puede cifrarse [M]K y la clave de cifrado [K]PB puede añadirse al bloque de la firma.
Los mismos principios funcionan en terrenos más complejos. Supongamos que una estación del espacio tiene un telescopio que emite una serie de datos que, por convenio, está al alcance de cualquier astrónomo del mundo. ¿Cómo puede el astrónomo estar seguro de que los datos son de hecho transmitidos por el telescopio y que nadie ha podido alterarlos?. Los datos primarios pueden recogerse en un buffer local del telescopio del espacio, al que se le asigna la clave pública PT y la clave privada ST. Cada buffer se procesa como un mensaje M; cuando el buffer está lleno se añade el autenticador [F(M)ST] y el resultado se hace público. Cualquier receptor puede seguir el proceso inverso y comprobar que todo bloque de datos es auténtico.
En 1978 Gus Simmons de los Laboratorios Sandia propuso un esquema similar para verificar el cumplimiento de los tratados de prohibición de pruebas nucleares. Supuso que los Estados Unidos querrían tener certeza de que los aparatos de vigilancia implantados en suelo soviético no serían interceptados y que los soviéticos no podrían conocer las transmisiones realizadas desde aquéllos.
Hay que tener en cuenta muchas variables para elaborar sistemas de firma que ofrezcan seguridad en redes grandes. Por ejemplo, la hash function debe desaminar a intrusos potenciales que tengan medios de construir falsos mensajes con la misma suma de comprobación que el mensaje auténtico. Esta materia ha sido analizada en los artículos de Donald Davies y Dorothy Denning (3,4).
Un criptosistema no tiene utilidad a menos que la distribución de la clave resulte segura. Veamos los problemas en las redes donde todas las conversaciones están protegidas por criptosistemas de clave privada. ¿Cómo se distribuyen las claves para que cada interlocutor esté seguro de la identidad del otro?. Una solución obvia es crear un servicio de registro R. Se genera una clave privada para cada participante, una copia de la misma se almacena en R y otra copia en una tarjeta de claves (u otro medio) que puede insertarse con un sistema de cifrado ligado a A. Ahora R puede facilitar a A claves privadas para conversaciones con otros participantes en la red. Roger Needham y Michael Schroeder propusieron protocolos que permiten a cualquier A y B, con la ayuda de R, obtener la clave privada para comunicaciones seguras entre ellos (5). Victor Voydock y Stephen Kent demostraron como aplicar estos protocolos en redes reales.
La seguridad de las redes depende de una correcta o fiable operación de registro de claves. Esta tarea resulta compleja en redes grandes: los errores en los registros pueden disuadir a los participantes de iniciar nuevas conversaciones y poner en peligro las claves. Confiar en ellos es un problema serio en una red grande; por ejemplo, es improbable que los gobiernos de Estados Unidos y la Unión Soviética piensen que los encargados del registro se abstendrán de escuchar conversaciones para las que hayan generado claves.
La fiabilidad del sistema puede aumentar utilizando cifrado de clave pública para intercambiar claves privadas de conversaciones. Ahora el servicio de Registro se ha convertido en un simple sistema de directorio D. Los participantes pueden registrar claves públicas con D para la redistribución posterior, pero no necesitan revelar la clave secreta a D. Para ponerse en contacto con B, A consulta D para obtener la clave pública PB, genera una conversación en clave K y envía [K]PB con la solicitud de iniciar una conversación. También A debe autenticarse ante B, lo que puede hacerse con un certificado como se dirá más adelante. Ahora la responsabilidad de generar claves es de los interlocutores y el servicio de directorio no tiene conocimiento especial que le permita escuchar cualquier conversación.
Aún queda un problema por resolver: fiarse de la autenticidad de las claves públicas proporcionadas por el servicio de directorio o por cualquier otro participante. La autenticidad de esta información puede garantizarse guardándola como certificados de clave pública creados, previo requerimiento, por un servicio de notario en la red. Los certificados son mensajes de la forma [B,PB,T]SN, donde SN es la clave secreta del servicio de notario y T es el tiempo de creación del certificado. Cualquiera puede descifrar el certificado utilizando la clave pública del notario y en consecuencia obtener la clave pública del participante que se pretende identificar. Si por cualquier razón alguien descubre la clave secreta del notario, se anulan todos los certificados posteriores. Hay que hacer un gran esfuerzo para proteger la clave secreta del notario, pero merece la pena, porque así la seguridad de las comunicaciones en la red no se basa en la confianza en el servicio de directorio (4).
Las comunicaciones seguras son esenciales para operar en una red que trabaje con teleciencia. Los algoritmos matemáticos adecuados para cifrar datos y distribuir claves permiten que la seguridad sea un objetivo alcanzable.
Referencias
1. D. E. Denning. 1982. Cryptografy and Data Security. Addison-Wesley. (Especialmente los capítulos 1 y 2).
2. R. Rivest, A. Shamir, and L. Adleman. 1978. A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM, February.
. W. Davies. 1983. Applying the RSA digital signature to electronic mail. IEEE Computer, February.
4. D. E. Denning. 1983. Protecting public keys and signature Keys. IEEE Computer, February.
5. R. M. Needham and M.D. Schroeder. 1978. Using encryption for authentication in large networks of computers. Commun. ACM, December.
6. V. L. Voydock and S. T. Kent. 1983. Security mechanisms in high level network protocols. ACM Computing Surveys, June.
1. Nota del traductor: el ancho de banda es la cantidad de información, generalmente expresada en bits por segundo, que puede transmitirse en una conexión por unidad de tiempo. La velocidad de transmisión de una línea RDSI (Red Digital de Servicios Integrados) es del orden de 115.000 caracteres por segundo continuos. El autor hace referencia a un millón de bits por segundo o más, un ancho de banda casi nueve veces mayor que el de una línea RDSI.
2. Nota del traductor: Protocolo es el conjunto de directrices que regulan las comunicaciones entre ordenadores. Es el lenguaje que utilizan dos ordenadores cuando se comunican entre sí.
3. Nota del traductor: Se usa el término inglés, porque aún no hay traducción. Hash function es la función que transforma una clave de identificación, de la manera más aleatoria posible, en un valor entero que se utiliza como índice donde colocar (y luego recuperar) en primera instancia el registro correspondiente en una tabla (que así se llama tabla «hash»).
4. Nota del traductor: Suma de comprobación (checksum) es la suma aritmética de los octetos que constituyen un mensaje. Se incluye con el fin de permitir al receptor del mismo la detección de posibles errores de transmisión. Un octeto son ocho bits, que es la traducción de bytes.