El cifrado de datos como medida de seguridad Los dos lugares de Internet donde es más probable ver en acción a los mecanismos de cifrado son los dos métodos más extendidos de comunicación, es decir, el correo electrónico y el trafico web. Para gestionar la transferencia de datos a través de la web, Netscape lanzó el SSE, o Capa de Conectores Seguros (Secure Socket Layer) del que hemos tratado brevemente al hablar del protocolo http. El correo electrónico se suele proteger mediante el sistema PGP (Pretty Good Privacy), creado por Phil Zimmermann. Independientemente de la técnica de codificación empleada, existe un método común de «negociación» (handshaking) para intercambiar la información necesaria para decodificar los datos. Para que los datos se almacenen de forma no legible, deben ser modificados de alguna forma. Obviamente, si se utiliza el mismo método de cifrado de los datos en todos los clientes de red, la idea de cifrado pierde sentido. Si se aplica el mismo algoritmo siempre, cualquiera puede cifrar o descifrar cualquier dato. Para hacer que los datos sean seguros, los sistemas de cifrado hacen uso de una clave, que a veces se genera aleatoriamente y otras veces es seleccionada por el usuario. Esta clave Se utiliza entonces como parte del proceso decifrado y los datos cifrados son, como consecuencia, únicos para esa clave en particular. Si se cifran exactamente los mismos datos pero con otra clave, el archivo de datos resultante será completamente distinto. Para poder recuperar los datos en su forma original, el receptor debe conocer la clave. Este sistema de claves es la base de la mayoría de las técnicas de cifrado utilizadas en la actualidad. Si medita en lo que acabamos de decir, podrá ver que existe un pequeño problema: en concreto, que el receptor necesita conocer la clave que fue utilizada para cifrar los datos. Si se están distribuyendo los datos a través de la red, podría pensarse en distribuir la clave junto con los datos. ¡Ve cuál es el problema? La clave, que es‘ el elemento necesario para recuperar la información original, no está cifrada. Si se la envía junto con los datos cifrados, cualquiera podría potencialmente leer el archivo y emplear la clave para descifrarlo. No parece un mecanismo muy, seguro. Debido a esto, necesitamos analizar el concepto de claves públicas y claves privadas. La idea funciona, básicamente, de esta forma: la clave pública y la clave privada están relacionadas entre sí, pero no pueden ser usadas para deducir la clave pública a partir de la privada, o viceversa. Esta pareja de claves es generada automáticamente por el software, y ambas juegan un importante papel en el proceso de cifrado. La clave privada es exactamente lo que su nombre sugiere: privada. Esta clave se conserva en nuestra computadora, no compartiéndola con nadie más; si llegase a ser conocida, nuestros datos ya no estarían a salvo. La clave pública, por el contrario, es la que se distribuye al resto del mundo. La mayoría de las personas que utilizan PGP incluyen su clave pública en la firma de sus mensajes. Esta clave puede publicarse en cualquier sitio: en una página web, en los mensajes de correo, etc.; dicha clave no contiene ninguna información que pueda ser empleada para descifrar los datos. Ahora, con las dos claves, el proceso de cifrado de datos funciona de la siguiente forma: • • Si alguien quiere enviarnos un documento privado, dicha persona conoce nuestra clave pública. Entonces, ejecuta su programa de cifrado y le proporciona el archivo que quiere cifrar y nuestra clave pública. El archivo resultante será seguro. De hecho, la persona que ha cifrado el archivo no es capaz de descifrarlo. Esa persona nos enviará el archivo por correo electrónico. Para poder ver el archivo, una vez recibido, utilizamos nuestra clave privada para descifrar los datos. El proceso de cifrado funciona codificando los datos con nuestra clave pública de un modo tal que sólo son descifrables mediante nuestra clave privada. • Si queremos responder al mensaje, tendremos que repetir el mismo proceso, pero esta vez utilizando la clave pública de nuestro interlocutor como clave de cifrado. Al separar las dos claves, de forma que la clave original utilizada para cifrar no pueda emplearse para descifrar los datos, podemos transmitir datos cifrados y claves a través de la red, sin tener que preocuparnos de que las claves sean interceptadas Cada persona que necesite transmitir datos utiliza su clave privada y, para cifrar los datos salientes, las claves públicas de las personas con las que tenga que comunicarse. Existen muchos métodos distintos de realizar el cifrado de los datos transferidos, pero el sistema de clave pública/privada y sus variaciones es el mecanismo que proporciona soporte a dichos métodos. En SSL, las claves se generan y se intercambian durante una fase de negociación y autenticación. No existe interacción, desde el punto de vista del usuario, en términos de generación de claves públicas y ‘privadas. Todo esto tiene lugar de manera transparente y no es algo de lo que se deba preocupar la persona situada delante de la computadora. En el caso de PGP, las claves son necesarias para más de una conexión y son, por tanto, visibles y accesibles para el usuario. Eso es todo con respecto a las claves? Efectivamente, eso no es todo. De hecho, existe una gran variedad de métodos distintos para transferir y utilizar claves. La descripción sobre claves públicas/privadas debe considerarse como una exposición de muy alto nivel de los mecanismos mediante los que funcionan las comunicaciones seguras. SSL por ejemplo dispone de diferentes niveles de negociación en los que la computadora host realiza una serie de intercambios de claves para verificar que el cliente es quien dice ser, y lo mismo vale para éste. El número de claves utilizadas no tiene por qué limitarse a dos. En PGP, hay dos claves, pero la clave privada se emplea en la practica para cifrar una tercera clave de sesión, que es la que en realidad se usa para codificar el cuerpo principal de la información. El generar las claves es una cosa, pero el cifrar los datos es algo completamente distinto. El propio proceso de cifrado puede llevarse a cabo (y normalmente así sucede) de muchas formas distintas. El objetivo de cualquier esquema de cifrado es encontrar un método para enviar los datos tal que resulte muy difícil, y requiera una cantidad excesiva de potencia de proceso, que alguien intente obtener la clave para decodificar el mensaje. En la actualidad se emplean muchas técnicas de cifrado distintas, como DES, que fue originalmente desarrollado por el gobierno americano, y RSA, que se emplea en los exploradores web, en PEP y en otros sistemas criptológicos. En lugar de intentar explicar con mis propias palabras cómo funcionan estos estándares de cifrado, he aquí un resumen de la lista de preguntas más frecuentes sobre RSA, albergada en: http:// www.rsa.com/ Lo que sigue a continuación tiene un alto nivel matemático y se proporciona, simplemente para que el lector se haga una idea de la cantidad de trabajo que ha llevado desarrollar las técnicas existentes de cifrado, Estas técnicas son bastante más complejas que el viejo mecanismo de sustituir una letra por otra. Obtenido de la lista de preguntas más frecuentes sobre RSA ¿Qué es RSA? RSA es un sistema criptográfico de clave pública que permite realizar tanto operaciones de cifrado como de firma digital (autenticación). RSA fue desarrollado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman [RSA78] el nombre de RSA proviene de la primera letra del apellido de cada uno de sus inventores. RSA funciona de la forma siguiente: tómense dos números primos muy grandes, p y q, y calcúlese su producto n=pq; n se denomina el módulo Elíjase un número, e, menor que n y que sea relativamente primo a (p-1) (q-l), lo que quiere decir que e y (p-1) (q-l) no tienen factores comunes, salvo el 1. Encuéntrese otro número d tal que (ed-1) sea divisible por (p-1) (q-l). Los valores e y d se denominan exponentes público y privado, respectivamente. La clave pública es la pareja (n, e); la clave privada es la pareja (n, d). Los factores p y q pueden conservarse con la clave privada o descartarse. Es muy difícil obtener la clave privada d a partir de la clave pública (n, e). Sin embargo, si se pudieran calcular los factores p y q de n, podría obtenerse perfectamente la clave privada d Por tanto, la seguridad de RSA se basa en el presupuesto de que el realizar la factorización de n es difícil, Si se descubriera un método sencillo de factorización, RSA sería «roto». He aquí como utilizar RSA para realizar operaciones de cifrado y de firma digital (en la práctica, la utilización es ligeramente distinta). Cifrado RSA Supongamos que Alice quiere enviar un mensaje m a Bob, Alice crea el texto cifrado c realizando la operación de exponenciación : c=me mod n, donde e y n son la clave pública de Bob. Alice envía c a Bob. Para descifrar, Bob también realiza una operación de exponenciación: m=cd mod n; la relación entre e y d garantiza que Bob recuperará m correctamente. Puesto que sólo Bob conoce d, sólo él puede descifrar este mensaje. Firma digital RSA Supongamos que Alice quiere enviar un mensaje m a Bob de modo que éste tenga la seguridad de que el mensaje es autentico, no ha sido manipulado y proviene, efectivamente de Alice. Alice crea una firma digital s realizando la operación de exponenciación s=md mod n, donde d y n son la clave privada de Alice. Alice envía m y s a Bob. Para verificar la firma, Bob realiza una operación de exponenciación y comprueba que el resultado es el mensaje m: m=se mod n, donde e y n son la clave pública de Alice De esta forma, el cifrado y la autenticación tienen lugar sin compartir las claves privadas: cada persona utiliza sólo su propia clave privada o la clave pública de otra persona. Cualquiera puede enviar un mensaje cifrado o verificar un mensaje firmado, pero sólo alguien que esté en posesión de la clave privada correcta puede descifrar o firmar un mensaje. Que es una autoridad de Certificación? Una autoridad de certificación (CA, Certifying Authority) es una entidad que emite a los usuarios firmas digitales y es responsable de verificar que dichas firmas siguen siendo válidas. El obtener un identificador de una autoridad de certificación tranquiliza a las personas que se comunican con nosotros, porque dicha identidad certifica que realmente somos quienes decimos ser. Uno de los mayores proveedores de identificaciones digitales es Verisign. Puede visitar su página web si desea obtener más información; la dirección es http: / /www verisign. com. Afortunadamente para todos nosotros, el software que utiliza las técnicas de cifrado, como RSA, es mucho más sencillo de utilizar que de entender la propia técnica de cifrado. Veamos ahora algunos paquetes software PGP que podemos emplear para cifrar nuestros datos. Estos paquetes están disponibles para Windows, Mac OS y UNIX, y son completamente gratuitos, de modo que, en sólo unos minutos, podrá generar su propia pareja de claves pública y privada y unirse a los miles de personas que ya se comunican de manera segura. El mayor problema actual es que hay múltiples paquetes PGP disponibles. Puede descargarse un buen paquete para Mac OS y Windows 95/NT desde: http://www.nai.com/products/security/pgpfreeware.asp Pueden encontrarse versiones MS-DOS y UNIX en: http://web.mit.edu/network/pgp.html Descargue los archivos apropiados para su sistema operativo, descomprima la utilidad y vea lo simple que es, en la practica, cifrar la información en nuestra computadora. Las versiones Mac OS y Windows del software PGPFreeware son prácticamente idénticas, dejando aparte las diferencias en cuanto a interfaz de usuario dictadas por ambos sistemas operativos. Dada la similitud, no tiene sentido mostrar la misma configuración para ambos sistemas. En lugar de ello, resaltaremos las diferencias que puedan aparecer. Utilización de PGPFreeware en Mac OS y Windows La aplicación PGPFreeware instala dos utilidades diferentes en el sistema: la aplicación PGPKey y el programa PGPTools. Este último se emplea para cifrar y firmar archivos, mientras que PGPKey mantiene una lista de claves de las personas con las que se desea contactar. Lo primero que aparece al ejecutar el programa PGPKey es el asistente de generación de claves, mostrado en la Figura 4. Con él podrá empezar a funcionar muy rápidamente con su propia clave PGP En primer lugar, es necesario introducir el nombre completo, y dirección de correo electrónico, que serán almacenados con la clave PGP La dirección de correo electrónico permite al software PGP integrarse con e l programa de correo electrónico utilizado. A continuación, seleccione el tamaño de las claves que desea utilizar, como muestra la Figura 5. Cuanto más grande sea la clave, más seguros estarán los datos, aunque más tiempo se tardará en realizar el proceso de cifrado. El valor predeterminado del tamaño de clave es de 2.048 bits, lo que, de acuerdo con mi experiencia, es bastante rápido en cualquier computadora Pentium o PowerPC. El utilizar tamaños grandes de clave en un 486 requiere un poco de paciencia. Si quiere establecer una fecha de caducidad para su clave, puede hacerlo en el siguiente cuadro de diálogo, mostrado en la Figura 6, Después de que la clave caduque, no podrá cifrar ningún otro archivo. Si quiere, puede cambiar de una clave a otra ocasionalmente por razones de seguridad, pero hay pocos motivos para hacer esto. Como nivel adicional de seguridad, el software solo le permitirá firmar documentos si ha seleccionado una contraseña para dicha operación. Este paso, mostrado en la Figura 7, evita que otras personas usurpen su identidad y firmen documentos seguros utilizando su clave. FIGURA 4. El asistente de generación de claves de PGP simplifica el proceso de cifrado FIGURA 5 El siguiente paso consiste en seleccionar el tamaño de clave que quiera utilizarse. FIGURA 6. Puede seleccionar una fecha de caducidad en este cuadro de diálogo. FIGURA 7 Para firmar documentos, es necesario suministrar una frase de contraseña Por último, el software necesita generar un número aleatorio, que utilizara para generar la clave. Para ello, le pedirá que mueva el ratón por la pantalla, escriba caracteres aleatorios en el teclado, o ambas cosas, como muestra la Figura 8. El programa utilizará estas acciones para generar un número aleatorio y, a partir de él, la clave. FIGURA 8 Al realizar movimientos aleatorios con el ratón o pulsaciones aleatorias de PGP a que genere un número aleatorio. teclas, se ayuda al programa PGP a que genere un número aleatorio Finalmente, el programa PGP generará la clave. Dependiendo de la velocidad de la computadora, esta operación puede requerir algunos minutos. Una vez completada, se tiene la opción de enviar la clave a un servidor de claves. Esta es una característica muy conveniente de este paquete software en particular, porque el servidor de claves mantiene una base de datos de todas las claves registradas. Si quiere enviar un archivo a alguien, pero no conoce su clave, puede buscarla en el servidor. Si prefiere no hacer pública su clave pública, desmarque la opción Send my key to root server now, mostrada en la Figura 9. FIGURA 9 Si no quiere hacer pública su clave pública, asegúrese de desmarcar esta casilla de verificación Ahora dispone de su propia clave PGP que debe aparecer en la ventana PGPKeys, como muestra la Figura 10. Esta ventana presenta toda la información acerca de las claves almacenadas en el sistema: el tamaño de la clave, el nivel de «confianza» concedido a una clave determinada, la fecha de caducidad, etc. Explore esta ventana a voluntad; puede expandir las claves individuales para mostrar más información acerca de la clave y de su propietario. FIGURA10 Ahora dispone de su propia clave PGP Utilizando la barra de herramientas situada en la parte superior de la ventana Utilizando la barra de herramientas situada en la parte superior de la ventana PGPKeys, puede borrar claves, volver a ejecutar el asistente de generación de claves PGPKeys, puede borrar claves, volver a ejecutar el asistente de generación de claves, exportar e importar archivos de clave y, lo más importante, buscar las claves ves, exportar e importar archivos de clave y, lo más importante, buscar las claves correspondientes a otros usuarios. Pulse el icono de lupa para acceder al cuadro de diálogo de búsqueda, mostrado en la Figura 11. Puede buscar a un usuario concreto en un servidor de claves introduciendo su identificación de usuario (probablemente, un nombre de usuario obtenido a partir de una dirección de correo electrónico) y pulsando el botón Search. Por ejemplo, si usted quisiera buscar al autor de estas líneas, bastaría con que escribiera jray en el campo de búsqueda y ordenara iniciar ésta. El sistema le devolvería varios jray, uno de los cuales debería ser [email protected]. Si quiere añadirme a su lista de claves almacenadas, basta con que arrastre mi nombre desde la ventana de resultados de la búsqueda a la ventana de claves. Con esto podrá cifrar documentos y enviarlos. FIGURA 11 PGPKeys permite buscar una clave determinada. ¿Cuál es la manera de cifrar una información?. Existen dos formas distintas. La mas sencilla es utilizar el programa PGPTools incluido en el paquete de software PGP PGPTools, mostrado en la Figura 12, proporciona distintas utilidades; en concreto, permite cifrar y descifrar datos. FIGURA 12 El programa PGPTools es el que permite realizar el cifrado de los datos basándose en la clave. También podrá ver que hay opciones para firmar los datos. El realizar esta operación añade nuestra firma al archivo cifrado. También se incluyen dos utilidades de borrado, que pueden emplearse para eliminar archivos de forma permanente del disco fijo. PGPTools puede también activarse arrastrando los archivos que se quiera cifrar o descifrar hasta los iconos de la barra de herramientas de PGPTools. También puede utilizarse este programa seleccionando los archivos con los que se quiera trabajar y luego pulsando con el botón derecho del ratón (O, en el Macintosh, presionando la tecla Control y pulsando) para que aparezca un menú contextual PGP, que ofrece las mismas opciones que la barra de herramientas. Esta, sin embargo, es la forma lenta de hacer las cosas. Si el lector es como yo, querrá disponer de la posibilidad de escribir un mensaje y codificarlo con PGP de manera instantánea, sin tener que preocuparse de andar pulsando aquí y allá y realizando una serie de acciones. No se preocupe; también puede hacerse eso con PGPFreeware. Cuando el software PGP se instala, se integra con el programa de correo electrónico que esté utilizándose en la máquina. Esto permite utilizar PGP fácil y rápidamente, sin necesidad de andar cambiando a otros programas. Utilización de Outlook Express y PGP en el Macintosh Supongamos, por ejemplo, que esta utilizando Outlook Express como cliente de correo electrónico en un Macintosh. La instalación de PGP proporciona rutinas de cifrado a este cliente. La Figura 13 muestra la ventana de programa de Outlook Express. Observe el icono de menú que representa un «candado», situado en el centro de la barra de menú principal. Para cifrar un mensaje que vaya a enviarse, basta con escribir el mensaje y, al terminar, asegurarse de que el cursor se encuentre al final del mensaje de texto. A continuación, es necesario elegir la opción Encrypt (cifrar) o Encrypt and Sign (cifrar y firmar) en el menú indicado por el candado. Para poder cifrar el mensaje, será necesario indicar quiénes son los receptores que van a tener que decodificarlo. Aparecerá el cuadro de diálogo PGP Recipients, en el que pueden arrastrarse los nombres apropiados desde el panel superior al inferior, como ilustra la Figura 14. FIGURA 13 Después de instalar PGP puede cifrarse el correo electrónico en el programa cliente que se esté utilizando. FIGURA 14 Seleccione los destinatarios que podrán decodificar el mensaje, utilizando este cuadro de diálogo. Una vez termine, pulse OK y el mensaje será codificado En unos cuantos segundos, el mensaje saliente será reescrito como mensaje codificado PGP y enviado de la forma normal. La Figura 15 muestra un ejemplo de un mensaje codificado. Como puede ver, el mensaje de correo electrónico ha sido convertido en una cadena de caracteres sin sentido. El proceso de decodificación de un mensaje PGP entrante funciona de forma similar. Basta con seleccionar el mensaje codificado y luego la opción Decrypt/Verify (descifrar/verificar) en el menú de PGP El programa pedirá la contraseña que permite desbloquear la clave privada, con la que el software puede decodificar el mensaje. Figura 15 Después de la codificacion el mensaje ya no es legible para los ojos humanos. Utilización de PGP con Outlook Express en Windows La utilización de PGP con Outlook Express en la plataforma Windows cambia un poco con respecto a la de Macintosh, para mejor. El software PGP instala un menú PGP en Outlook. En dicho menú, puede seleccionarse la opción Preferences (preferencias) y pulsarse la ficha Email donde, como muestra la Figura 16, puede instruirse al software PGP para que codifique y decodifique automáticamente los mensajes enviados y recibidos se requiere intervención del usuario! Figura 16 En Windows, PGP añade un cuadro de diálogo a Outlook express que permite el cifrado y descifrado automáticos. Este nivel de integración con el software que necesita ser seguro es muy cómodo. Hace de PGP una utilidad que puede emplearse de manera regular, en lugar de algo que haya que extraer de algún directorio oculto y desempolvar, cada vez que se necesita enviar algo de modo seguro. Recuerde que también puede usar PGP para cifrar documentos locales en su computadora. El programa no esta limitado a su uso con el correo electrónico, aunque es ciertamente un excelente compañero de las transmisiones electrónicas. Utilización de la versión UNIX de PGP en Linux Desafortunadamente, debido a la gran variedad de máquinas UNIX disponibles y a las diferentes interfaces, no cabe esperar una interfaz atractiva como las disponibles en las computadoras Mac OS y Windows. En lugar de ello, es necesario controlar Linux PGP mediante líneas de órdenes, aunque el programa sigue ejecutando la tarea requerida. Una vez descargado y descomprimido el archivo PGP desde el MIT, ejecute el script de instalación, pgpinst, que instalará los archivos ejecutable PGP en su sistema.