criptografia

25
qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghj klzxcvbnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmqw Protocolos SSL y SET Transacciones Seguras en Internet Prof. Luis Manuel Cruz Gómez

Upload: l-manuel-cruz

Post on 25-Mar-2016

212 views

Category:

Documents


0 download

DESCRIPTION

Descripción general sobre la criptografía

TRANSCRIPT

qwertyuiopasdfghjklzxcvbnmqwertyui

opasdfghjklzxcvbnmqwertyuiopasdfgh

jklzxcvbnmqwertyuiopasdfghjklzxcvb

nmqwertyuiopasdfghjklzxcvbnmqwer

tyuiopasdfghjklzxcvbnmqwertyuiopas

dfghjklzxcvbnmqwertyuiopasdfghjklzx

cvbnmqwertyuiopasdfghjklzxcvbnmq

wertyuiopasdfghjklzxcvbnmqwertyuio

pasdfghjklzxcvbnmqwertyuiopasdfghj

klzxcvbnmqwertyuiopasdfghjklzxcvbn

mqwertyuiopasdfghjklzxcvbnmqwerty

uiopasdfghjklzxcvbnmqwertyuiopasdf

ghjklzxcvbnmqwertyuiopasdfghjklzxc

vbnmqwertyuiopasdfghjklzxcvbnmrty

uiopasdfghjklzxcvbnmqwertyuiopasdf

ghjklzxcvbnmqwertyuiopasdfghjklzxc

vbnmqwertyuiopasdfghjklzxcvbnmqw

Protocolos SSL y SET

Transacciones Seguras en Internet

Prof. Luis Manuel Cruz Gómez

2

La necesidad de un canal seguro

Es un hecho de todos conocido que Internet constituye un canal de comunicaciones inseguro, debido a que la información que circula a través de esta vasta red es fácilmente accesible en cualquier punto intermedio por un posible atacante. Los datos transmitidos entre dos nodos de Internet (por ejemplo tu máquina y el servidor web desde el que quiere descargar una página) se segmentan en pequeños paquetes que son encaminados a través de un número variable de nodos intermedios hasta que alcanzan su destino. En cualquiera de ellos es posible leer el contenido de los paquetes, destruirlo e incluso modificarlo, posibilitando todo tipo de ataques contra la confidencialidad y la integridad de tus datos. Ahora bien, ¿qué se puede hacer en el caso de que se necesite enviar datos confidenciales? En el caso de Internet, la solución más comúnmente adoptada se basa en la utilización del protocolo SSL.

Qué es SSL

SSL (Secure Sockets Layer) fue diseñado y propuesto en 1994 por Netscape Communications Corporation junto con su primera versión del Navigator. Sin embargo, no fue hasta su tercera versión, conocida como SSL v3.0 que alcanzó su madurez, superando los problemas de seguridad y limitaciones de sus predecesores. En su estado actual, proporciona cifrado de datos, autenticación de servidores, integridad de mensajes y, opcionalmente, autenticación de cliente para conexiones TCP/IP.

SSL goza de gran popularidad, por lo que se encuentra ampliamente extendido en Internet. Viene soportado por los principales navegadores del mercado. No se necesita realizar ninguna acción especial para invocar el protocolo SSL, basta con seguir un enlace o abrir una página cuya dirección empieza por https://. El navegador se encarga del resto. Eso sí, asegúrate que tienes SSL habilitado en tu navegador.

Cómo funciona SSL

El rasgo que distingue a SSL de otros protocolos para comunicaciones seguras, es que se ubica en la pila OSI entre los niveles de transporte (TCP/IP) y de aplicación (donde se encuentran los conocidos protocolos HTTP para Web, FTP para transferencia de archivos, SMTP para correo electrónico, Telnet para conexión a máquinas remotas, etc.). Gracias a esta característica, SSL resulta muy flexible, ya que puede servir para securizar potencialmente otros servicios además de HTTP para Web, sin más que hacer pequeñas modificaciones en el programa que utilice el protocolo de transporte de datos TCP.

3

SSL proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el cliente con un algoritmo de cifrado simétrico, que puede elegirse entre DES, triple-DES, RC2, RC4 o IDEA, y cifrando la clave de sesión de los algoritmos anteriores mediante un algoritmo de cifrado de clave pública, típicamente el RSA. La clave de sesión es la que se utiliza para cifrar los datos que vienen del y van al servidor seguro. Se genera una clave de sesión distinta para cada transacción, lo cual permite que aunque sea reventada por un atacante en una transacción dada, no sirva para descifrar futuras transacciones.

MD5 o SHA se pueden usar como algoritmos de resumen digital (hash). Esta posibilidad de elegir entre tan amplia variedad de algoritmos dota a SSL de una gran flexibilidad criptográfica.

Durante el protocolo SSL, el cliente y el servidor intercambian una serie de mensajes para negociar las mejoras de seguridad. Este protocolo sigue las siguientes fases (de manera muy resumida):

1. La fase Hola, usada para ponerse de acuerdo sobre el conjunto de algoritmos para mantener la intimidad y para la autenticación. El navegador le informa al servidor de los algoritmos que posee disponibles. Normalmente se utilizarán los más fuertes que se puedan acordar entre las dos partes. En función de las posibilidades criptográficas del navegador, el servidor elegirá un conjunto u otro de algoritmos con una cierta longitud de claves.

2. La fase de autenticación, en la que el servidor envía al navegador su certificado x.509v3 que contiene su clave pública y solicita a su vez al cliente su certificado X.509v3 (sólo si la aplicación exige la autenticación de cliente).

3. La fase de creación de clave de sesión, en la que el cliente envía al servidor una clave maestra a partir de la cual se generará la clave de sesión para cifrar los datos intercambiados posteriormente haciendo uso del algoritmo de cifrado simétrico acordado en la fase 1. El navegador envía cifrada esta clave maestra usando la clave pública del servidor que extrajo de su certificado en la fase 2. Posteriormente, ambos generarán idénticas claves de sesión a partir de la clave maestra generada por el navegador.

4. Por último, la fase Fin, en la que se verifica mutuamente la autenticidad de las partes implicadas y que el canal seguro ha sido correctamente establecido. Una vez finalizada esta fase, ya se puede comenzar la sesión segura.

De ahí en adelante, durante la sesión segura abierta, SSL proporciona un canal de comunicaciones seguro entre los servidores Web y los clientes (los navegadores) a través del cual se intercambiará cifrada la información relevante, como el URL y los contenidos del documento solicitado, los contenidos de cualquier formulario enviado desde el navegador, las cookies enviadas desde el navegador al servidor y viceversa y los contenidos de las cabeceras HTTP.

4

Uso de SSL en comercio electrónico

SSL constituye la solución de seguridad implantada en la mayoría de los servidores web que ofrecen servicios de comercio electrónico. Su mayor mérito radica en ofrecer respuesta al principal problema que afronta el comercio en línea: la renuencia de los usuarios a enviar su número de tarjeta de crédito a través de un formulario web por el temor de que caiga en manos de un hacker y por la desconfianza generalizada hacia Internet, a lo que se suma en México la falta de costumbre de compra por este medio.

La forma más fácil y más extendida para construir un sistema de comercio en Internet consiste en utilizar un servidor web con un catálogo con información sobre los productos o servicios ofrecidos y un formulario para procesar los pedidos. El catálogo estará compuesto por una serie de páginas web describiendo la mercancía en venta, acompañadas de imágenes, dibujos, especificaciones, animaciones, clips de vídeo o audio, applets de Java, controles ActiveX, etc. Estas páginas web se pueden crear estáticamente con un programa de edición HTML, o también pueden crearse dinámicamente desde una base de datos de los artículos y su información asociada, con programas como Joomla.

Junto a cada artículo se sitúa un botón que el usuario puede pulsar para comprarlo o, más comúnmente, para añadirlo al carrito de la compra para pagarlo todo al final. Cuando el cliente ha terminado sus compras, pasa por una "caja virtual", que iniciará el proceso de pago.

Hoy por hoy, el medio de pago más común en Internet es la tarjeta de crédito. No obstante, no hay que despreciar otros métodos más conservadores, aunque a menudo preferidos por los compradores, como el envío contra reembolso o la transferencia bancaria, que representan un porcentaje importante de las ventas en línea. El usuario debe rellenar un formulario con sus datos personales (tanto para el caso del envío de los bienes comprados, como para comprobar la veracidad de la información de pago), y los datos correspondientes a su tarjeta de crédito (número, fecha de caducidad, titular). Esta arquitectura no exige que el servidor disponga de capacidades especiales para el comercio. Basta con que se utilice como mínimo un canal seguro para transmitir la información de pago y el comerciante ya se ocupará manualmente de gestionar con su banco las compras.

Sin embargo, este enfoque, aunque práctico y fácil de implantar, no ofrece una solución comercialmente integrada ni totalmente segura (al menos en México). A medida que el comercio crece, esta arquitectura podría llegar a resultar difícil de expandir o de incorporar nuevas tecnologías y componentes a medida que vayan apareciendo. Existen una serie de desventajas al utilizar exclusivamente SSL para llevar adelante ventas por Internet:

Por un lado, SSL ofrece un canal seguro para el envío de números de tarjeta de crédito, pero carece de capacidad para completar el resto del proceso comercial: verificar la validez del número de tarjeta recibido,

5

autorizar la transacción con el banco del cliente, y procesar el resto de la operación con el banco adquiriente y emisor.

Por otro lado, es importante recalcar que SSL sólo garantiza la confidencialidad e integridad de los datos en tránsito, no antes ni después. Por lo tanto, si se envían datos personales al servidor, entre ellos el ya citado número de tarjeta de crédito, el número de la seguridad social, etc., SSL solamente asegura que mientras viajan desde el navegador hasta el servidor no serán modificados ni espiados. Lo que el servidor haga con ellos, está ya más allá de la competencia de este protocolo. Los datos podrían ser manipulados irresponsablemente o caer en manos de un atacante que asaltara el servidor con éxito.

Además, SSL permite realizar ataques sobre servidores de comercio creados maliciosamente, para averiguar números de tarjeta reales. Un programa escrito por el hacker va probando números de tarjeta válidos, pero que no se sabe si corresponden o no a cuentas reales, realizando compras ficticias en numerosos servidores. Si el número de tarjeta no sirve, el servidor devuelve un error, mientras que si es auténtico, el servidor lo acepta. El programa entonces cancela la compra y registra el número averiguado, para seguir adelante con el proceso. De esta forma, el hacker puede hacerse en breve con cientos de números auténticos.

Todos estos inconvenientes convierten a SSL en una solución deficiente desde el punto de vista del pago electrónico, lo cual no significa que no se deba utilizar ni que no sea útil en otras muchas facetas igualmente necesarias de la actividad empresarial. Al proporcionar un canal seguro de comunicaciones, el comerciante puede ofrecer al cliente de manera confidencial una serie de servicios para estrechar las relaciones de confianza: autenticación del cliente frente al comercio, trato personalizado, evitar que terceras partes espíen las compras de los clientes, intercambio de información privada, etc.

Dado que SSL es un protocolo seguro de propósito general, que no fue diseñado para el comercio en particular, se hace necesaria la existencia de un protocolo específico para el pago. Este protocolo existe y se conoce como SET.

6

Transacciones Electrónicas Seguras (SET)

Transacciones Electrónicas Seguras (Secure Electronic Transaction o SET) es un protocolo estandarizado y respaldado por la industria, diseñado para salvaguardar las compras pagadas con tarjeta a través de redes abiertas, incluyendo Internet. El estándar SET fue desarrollado en 1995 por Visa y MasterCard, con la colaboración de otras compañías líderes en el mercado de las tecnologías de la información, como Microsoft, IBM, Netscape, RSA, VeriSign y otras.

El 19 de diciembre de 1997 Visa y MasterCard formaron SET Secure Electronic Transaction LLC (comúnmente conocida como "SETCo") para que implantase la especificación. En cuanto el protocolo SET 1.0 fue finalizado, comenzó a emerger una infraestructura basada en el mismo para soportar su uso a gran escala. Ya existen numerosos fabricantes de software que han empezado a crear productos para consumidores y comerciantes que deseen realizar sus compras de manera segura disfrutando de las ventajas ofrecidas por SET.

Qué servicios ofrece SET

Autenticación: todas las partes implicadas en la transacción económica (el cliente, el comerciante y los bancos, emisor y adquiriente) pueden autenticarse mutuamente mediante certificados digitales. De esta forma, el comerciante puede asegurarse de la identidad del titular de la tarjeta y/o el cliente. Se evitan así fraudes debidos a usos ilícitos de tarjetas y a falsificaciones de comercios en Internet imitando grandes web comerciales. Por su parte, los bancos pueden verificar así las identidades del titular y del comerciante.

Confidencialidad: la información de pago se cifra para que no pueda ser espiada. Es decir, solamente el número de tarjeta de crédito es cifrado por SET, de manera que ni siquiera el comerciante llegará a verlo, para prevenir fraudes. Si se quiere cifrar el resto de datos de la compra, como por ejemplo qué artículos se han comprado, debe recurrirse a un protocolo de nivel inferior como SSL.

Integridad: garantiza que la información intercambiada, como número de tarjeta, no podrá ser alterada de manera accidental o maliciosa mientras viaja a través de la red. Para lograrlo se utilizan algoritmos de firma digital.

7

Gestión del pago: SET gestiona tareas asociadas a la actividad comercial de gran importancia como registro del titular y del comerciante, autorizaciones y liquidaciones de pagos, anulaciones, etc.

Quiénes participan en SET

El pago mediante tarjeta es un proceso complejo en el cual se ven implicadas varias entidades:

El banco emisor: emite la tarjeta del cliente, extiende su crédito y es responsable de la facturación, recolección y servicio al consumidor.

El banco adquiriente: establece una relación con el comerciante, procesando las transacciones con tarjeta y las autorizaciones de pago.

El titular de la tarjeta: posee la tarjeta emitida por el banco emisor y realiza

y paga las compras.

El comerciante: vende productos, servicios o información y acepta el pago electrónico, que es gestionado por su entidad financiera (adquiriente).

La pasarela de pagos: mecanismo mediante el cual se procesan y autorizan las transacciones del comerciante. La pasarela puede pertenecer a una entidad financiera (adquiriente) o a un operador de medio de pago, el cual procesa todas las transacciones de un conjunto de entidades.

El procesador (redes de medios de pago): proporciona servicios adicionales operando la infraestructura de telecomunicaciones sobre las que se realizan las transacciones.

Autoridad de certificación: certifica las claves públicas del titular de la tarjeta, del comerciante y de los bancos.

En una compra convencional mediante tarjeta de crédito, en la que el cliente paga en la tienda haciendo uso de su tarjeta, la transacción sigue los siguientes pasos:

1. El titular de la tarjeta la presenta al comerciante.

2. Éste la introduce en el Terminal de Punto de Venta (POST), que su banco le ha proporcionado.

3. Los datos de la transacción se envían a través del sistema de redes de medios de pago hasta el banco emisor.

4. El banco emisor comprueba que todos los datos son correctos y remite su aprobación.

8

5. De ahí llega al banco adquiriente y al terminal del comercio, de donde saldrá el recibo de la operación.

6. El comerciante tendrá ingresado el dinero en su cuenta (normalmente) el día siguiente.

7. Por su parte, el cliente no lo verá descontado de su cuenta corriente hasta el mes siguiente, en función de cuándo realice la compra.

A continuación se describe cómo SET realiza este mismo proceso a través de Internet.

El funcionamiento de SET en 10 pasos

Una transacción SET típica funciona de forma muy parecida a una transacción convencional con tarjeta de crédito y consta de los siguientes pasos:

1. Decisión de compra del cliente. El cliente está navegando por el sitio web del comerciante y decide comprar un artículo. Para ello rellenará algún formulario al efecto y posiblemente hará uso de alguna aplicación tipo carrito de la compra, para ir almacenando diversos artículos y pagarlos todos al final. El protocolo SET se inicia cuando el comprador pulsa el botón de Pagar.

2. Arranque del monedero. El servidor del comerciante envía una descripción del pedido que activa a la aplicación monedero del cliente.

3. El cliente comprueba el pedido y transmite una orden de pago de vuelta al comerciante. La aplicación monedero crea dos mensajes que envía al comerciante. El primero, la información del pedido, contiene los datos del pedido, mientras que el segundo contiene las instrucciones de pago del cliente (número de tarjeta de crédito, banco emisor, etc.) para el banco adquiriente. En este momento, el software monedero del cliente genera una firma dual, que permite juntar en un solo mensaje la información del pedido y las instrucciones de pago, de manera que el comerciante puede acceder a la información del pedido, pero no a las instrucciones de pago, mientras que el banco puede acceder a las instrucciones de pago, pero no a la información del pedido. Este mecanismo reduce el riesgo de fraude y abuso, ya que ni el comerciante llega a conocer el número de tarjeta de crédito empleado por el comprador, ni el banco se entera de los hábitos de compra de su cliente.

4. El comerciante envía la petición de pago a su banco. El software SET en el servidor del comerciante crea una petición de autorización que envía a la pasarela de pagos, incluyendo el importe a ser autorizado, el identificador de la transacción y otra información relevante acerca de la misma, todo ello convenientemente cifrado y firmado. Entonces se envían al banco

9

adquiriente la petición de autorización junto con las instrucciones de pago (que el comerciante no puede examinar, ya que van cifradas con la clave pública del adquiriente).

5. El banco adquiriente valida al cliente y al comerciante y obtiene una autorización del banco emisor del cliente. El banco del comerciante descifra y verifica la petición de autorización. Si el proceso tiene éxito, obtiene a continuación las instrucciones de pago del cliente, que verifica a su vez, para asegurarse de la identidad del titular de la tarjeta y de la integridad de los datos. Se comprueban los identificadores de la transacción en curso (el enviado por el comerciante y el codificado en las instrucciones de pago) y, si todo es correcto, se formatea y envía una petición de autorización al banco emisor del cliente a través de la red de medios de pago convencional.

6. El emisor autoriza el pago. El banco emisor verifica todos los datos de la petición y si todo está en orden y el titular de la tarjeta posee crédito, autoriza la transacción.

7. El adquiriente envía al comerciante un testigo de transferencia de fondos. En cuanto el banco del comerciante recibe una respuesta de autorización del banco emisor, genera y firma digitalmente un mensaje de respuesta de autorización que envía a la pasarela de pagos, convenientemente cifrada, la cual se la hace llegar al comerciante.

8. El comerciante envía un recibo al monedero del cliente. Cuando el comerciante recibe la respuesta de autorización de su banco, verifica las firmas digitales y la información para asegurarse de que todo está en orden. El software del servidor almacena la autorización y el testigo de transferencia de fondos. A continuación completa el procesamiento del pedido del titular de la tarjeta, enviando la mercancía o suministrando los servicios pagados.

9. Más adelante, el comerciante usa el testigo de transferencia de fondos para cobrar el importe de la transacción. Después de haber completado el procesamiento del pedido del titular de la tarjeta, el software del comerciante genera una petición de transferencia a su banco, confirmando la realización con éxito de la venta. Como consecuencia, se produce el abono en la cuenta del comerciante.

10. A su debido tiempo, el dinero se descuenta de la cuenta del cliente (cargo).

El protocolo definido por SET especifica el formato de los mensajes, las codificaciones y las operaciones criptográficas que deben usarse. No requiere un método particular de transporte, de manera que los mensajes SET pueden transportarse sobre HTTP en aplicaciones web, sobre correo electrónico o cualquier otro método. Como los mensajes no necesitan transmitirse en tiempo

10

presente, son posibles implantaciones de SET eficientes basadas en correo electrónico u otros sistemas asíncronos.

En su estado actual SET solamente soporta transacciones con tarjeta de crédito/débito, y no con tarjetas monedero. Se está trabajando en esta línea para extender el estándar de manera que acepte nuevas formas de pago. Al mismo tiempo se están desarrollando proyectos para incluir los certificados SET en las tarjetas inteligentes, de tal forma que el futuro cambio de tarjetas de crédito a tarjetas inteligentes pueda incorporar el estándar SET

11

Criptografía clásica (I)

Introducción

Con el paso del tiempo hay un interés general en aumento con respecto a la seguridad de las transmisiones de datos y el cifrado de la información. Sin embargo es necesario tener conocimientos básicos que nos ayuden a entender y comprender estos temas y cuyo contenido es el siguiente: Introducción Datos estadísticos Cifrados de Basura en Medio

Desde que el mundo existe, existen los secretos. Siempre ha habido información que no se podía hacer pública, ya fuera para mantener a salvo un país, un negocio o los intereses personales de alguien. Cuando había que comunicar esta información a un aliado, colaborador o amigo, había que cerciorarse de que sólo obtuviera la información el receptor al que iba dirigida y nadie más, para que la información permaneciera en secreto. Una de las formas de transmitir información secreta es haciendo uso de la criptografía. La palabra criptografía proviene del griego kryptos, que significa oculto y graphein, que significa escribir. El significado previsible a partir de esta etimología sería "escritura oculta". La criptografía es pues el arte y la ciencia de hacer las comunicaciones ininteligibles para todos excepto para el receptor autorizado, que poseerá la clave para desencriptar el mensaje. El proceso de transformar un texto llano en texto cifrado o criptograma se llama encriptar o cifrar. Para este proceso se usa una clave que sólo conocen el emisor y el receptor. Cuando el receptor recoge el criptograma, lo puede desencriptar o descifrar con ayuda de la clave fácilmente. Sin embargo, si el mensaje es interceptado en el camino por un extraño, no es inteligible, y sin la clave, dependiendo de lo robusto que sea el método que se haya usado para encriptarlo, no podrá averiguar su contenido. Los orígenes de la criptografía se remontan a la época de los egipcios, en la que ya se encriptaban mensajes haciendo uso de jeroglíficos. Desde entonces hasta ahora, las técnicas han evolucionado bastante. El criptoanálisis es la ciencia que investiga como romper criptogramas, o sea, cómo poder averiguar el contenido de un texto cifrado sin conocer la clave que se usó para cifrarlo.

12

Datos Estadísticos

Datos estadísticos son tan sólo los datos obtenidos de un recuento o de un estudio. En nuestro caso son los datos obtenidos del estudio de las letras y palabras del castellano, concretamente de su frecuencia de aparición. El conocimiento de estos datos nos será de utilidad, entre otras cosas, para el estudio y análisis de textos cifrados...

Frecuencias de aparición de las letras en castellano

Para obtener las frecuencias reales para las letras del alfabeto lo ideal sería contabilizar la ocurrencia de cada letra en cada expresión posible en castellano, pero esto es imposible. Se ha estudiado una muestra de texto plano suficientemente grande (más de 5 Mb) como para obtener unas frecuencias que no deben diferir en mucho de las reales.

A continuación se muestra una gráfica con los resultados obtenidos:

Para mayor facilidad de consulta se han ordenado las letras alfabéticamente y por frecuencias:

a) Ordenadas alfabéticamente

A continuación se muestra una tabla con las frecuencias de las letras que han dado lugar a la tabla anterior ordenadas por orden alfabético.

13

b) Ordenadas por frecuencias

A continuación se muestra una tabla con las frecuencias de las letras que han dado lugar a la tabla anterior ordenadas por frecuencia de aparición:

14

Palabras más frecuentes

A partir del estudio de un gran archivo de texto se ha llegado a la conclusión de que las palabras más usadas del castellano son las siguientes:

15

Cifrado de basura en medio

Sir Francis Bacon ya había propuesto en su momento que el texto cifrado no debería ser sospechoso, que debería tener una apariencia inocente. Este método hace uso de este consejo y para cifrar un mensaje le introduce una serie de caracteres basura que son irrelevantes y que no hacen más que esconder el verdadero mensaje y despistar a un posible interceptor del mismo. Las letras que se introducen no son aleatorias, se trata de obtener un mensaje inocente y que parezca que no está cifrado...

Richelieu usaba una hoja de cartón con agujeros. Sólo las letras del mensaje visibles al cubrirlo con esta plantilla eran las que formaban el mensaje original. Una plantilla era algo parecido a lo siguiente:

16

Con esta plantilla, que debían poseer el emisor y el receptor para entender el mensaje correctamente, se podía enviar un mensaje tan amoroso como el siguiente:

Que una vez interpretado correctamente no era tan amoroso como se imaginaba

en un principio:

Como podemos observar usando la plantilla, el mensaje que aparece es la terrible orden MATALO MAÑANA, que de amorosa tiene más bien poco.

17

Criptografía moderna (II)

Introducción

La criptografía moderna nace al mismo tiempo que las computadoras. Durante la Segunda

Guerra Mundial, en un lugar llamado Bletchley Park, un grupo de científicos trabajaba en

el proyecto ULTRA tratando de descifrar los mensajes enviados por el ejército alemán con

el mas sofisticado ingenio de codificación ideado hasta entonces: la máquina ENIGMA.

Este grupo de científicos empleaba el que hoy se considera el primer computador (aunque

esta información permaneció en secreto hasta mediados de los 70). Su uso cambiaría para

siempre el curso de la Historia.

En 1940 se construyó la máquina Hagelin C-48 consistente en seis volantes unidos por el

eje y con distinto número de dientes. En la Segunda Guerra Mundial se construyó por

parte alemana la máquina Enigma, que se basaba en un perfeccionamiento del cilindro de

Jefferson, pero la máquina británica Colossus consiguió descifrar los mensajes cifrados con

Enigma. Los americanos construyeron la máquina Magic utilizada para descifrar el código

púrpura japonés; los americanos a su vez usaron a los indios navajos con su difícil lenguaje

para la transmisión de mensajes.

Con la invención del sistema conocido como DES (Data Encryption Standard) en 1976 que

se da a conocer mas ampliamente, principalmente en el mundo industrial y comercial.

Posteriormente con el sistema RSA (Rivest, Shamir, Adleman) en 1978, se abre el

comienzo de la criptografía en un gran rango de aplicaciones: en transmisiones militares,

en transacciones financieras, en comunicación de satélite, en redes de computadoras, en

líneas telefónicas, en transmisiones de televisión etcétera.

Desde entonces hasta hoy ha habido un crecimiento espectacular de la tecnología

criptográfica, si bien la mayor parte de estos avances se mantenían y se siguen

manteniendo, según algunos en secreto. Financiadas fundamentalmente por la NSA

(Agencia Nacional de Seguridad de los EE.UU.), la mayor parte de las investigaciones hasta

hace relativamente poco tiempo han sido tratadas como secretos militares. Sin embargo

en los últimos años, investigaciones serias llevadas a cabo en universidades de todo el

mundo han logrado que la Criptografía sea una ciencia al alcance de todos, y que se

convierta en la piedra angular de asuntos tan importantes como el comercio en Internet.

Además con el desarrollo de la informática en la segunda mitad de este siglo y con el uso

cada vez más extendido de las redes informáticas y del almacenamiento masivo de

18

información se ha dado paso a un gran salto en el estudio de sistemas criptográficos. En

1975 Diffie y Hellman establecieron las bases teóricas de los algoritmos de llave pública,

hasta entonces no se concebía un sistema de cifrado que no fuese de clave secreta. En la

actualidad se usan distintos métodos criptográficos, el DES (de llave secreta), método RSA,

método de Merkle y Hellman, etc.

Como hemos visto en el apartado anterior, los sistemas criptográficos clásicos

presentaban una dificultad en cuanto a la relación complejidad-longitud de la clave /

tiempo necesario para encriptar y desencriptar el mensaje. En la era moderna esta barrera

clásica se rompió, debido principalmente a los siguientes factores:

• Velocidad de cálculo: con la aparición de los computadores se dispuso de una potencia

de cálculo muy superior a la de los métodos clásicos.

• Avance de las matemáticas: que permitieron encontrar y definir con claridad sistemas

criptográficos estables y seguros.

• Necesidades de seguridad: surgieron muchas actividades nuevas que precisaban la

ocultación de datos, con lo que la criptología experimentó un fuerte avance.

A partir de estas bases surgieron nuevos y complejos sistemas criptográficos, que se

clasificaron en dos tipos o familias principales, los de clave simétrica y los de clave pública.

Los modernos algoritmos de encriptación simétricos mezclan la trasposición y la

permutación, mientras que los de clave pública se basan más en complejas operaciones

matemáticas.

Criptografía simétrica

Denominamos criptosistema de clave secreta (de clave privada, de clave única o simétrico)

a aquel criptosistema en el que la clave de cifrado, puede ser calculada a partir de la de

descifrado, y viceversa. En la mayoría de estos sistemas, ambas claves coinciden, y por

supuesto han de mantenerse como un secreto entre emisor y el receptor: si un atacante

descubre la clave utilizada en la comunicación, ha roto el criptosistema.

Hasta la década de los setenta, la invulnerabilidad de todos los sistemas dependía de este

mantenimiento en secreto de la clave de cifrado. Este hecho presentaba una gran

desventaja: había que enviar, aparte del criptograma, la clave de cifrado del emisor al

receptor, para que éste fuera capaz de descifrar el mensaje. Por tanto, se incurría en los

mismos peligros al enviar la clave, por un sistema que había de ser supuestamente seguro,

19

que al enviar el texto plano. De todos los sistemas de clave secreta, el único que se utiliza

en la actualidad es DES (Data Encryption Standard, que veremos más adelante). Otros

algoritmos de clave privada, como el cifrado Caesar o el criptosistema de Vigenère (serán

también brevemente comentados más adelante) han sido criptoanalizados con éxito, lo

cual da una idea del porqué del desuso en que han caído estos sistemas (con la excepción

de DES, que es seguramente el algoritmo de cifra más utilizado en la actualidad). Por si

esto no fuera suficiente, el hecho de que exista al menos una clave de cifrado/descifrado

entre cada dos usuarios de un sistema haría inviable la existencia de criptosistemas

simétricos en las grandes redes de computadores de hoy en día: para un sistema de

computación con N usuarios, se precisarían N(N-1)/2 claves diferentes, lo cual es

obviamente imposible en grandes sistemas. Todos estos motivos han propiciado que el

estudio de los cifradores simétricos (excepto DES) quede relegado a un papel histórico.

Los sistemas de cifrado de clave única se dividen a su vez en dos grandes grupos de

criptosistemas: por una parte tenemos los cifradores de flujo, que son aquellos que

pueden cifrar un sólo bit de texto claro al mismo tiempo, y por tanto su cifrado se produce

bit a bit, y por otro lado tenemos los cifradores de bloque, que cifran un bloque de bits

(habitualmente, cada bloque es de 64 bits) como una única unidad.

Para que un algoritmo de este tipo sea considerado fiable debe cumplir varios requisitos

básicos:

1. Conocido el criptograma (texto cifrado) no se pueden obtener de él ni el texto en

claro ni la clave.

2. Conocidos el texto en claro y el texto cifrado debe resultar más caro en tiempo o

dinero descifrar la clave que el valor posible de la información obtenida por terceros.

Veamos algunos criptosistemas de clave privada.

DES

En 1977, el gobierno de los Estados Unidos, adoptó un cifrador desarrollado por IBM,

basado en cascadas de cajas P y S, como su norma oficial para información no clasificada.

Esta adopción a llevado a numerosos fabricantes a realizar implementaciones Hardware

de este cifrado, conocido como Norma de cifrado de datos (Data Encryption Standard,

DES); el hecho de su implementación hardware (implica gran rapidez en las operaciones

de cifrado y descifrado), y que los dispositivos resulten económicos, ha llevado a muchos

otros usuarios a adoptar el DES como norma de cifrado.

20

A continuación veremos como funciona el DES, de forma superficial, ya que no es uno de

nuestros objetivos un estudio profundo sobre la Norma de cifrado de datos. Por otro lado,

cabe destacar, que en el ejemplo y los gráficos se utiliza una clave de 56 bits, aunque en la

actualidad las claves utilizadas en DES son de 128bits.

El cifrado del texto en claro se realiza en bloques de 64 bits, produciéndose 64 bits de

texto cifrado. La clave utilizada, es de 56 bits. Hay 19 etapas en el proceso; la primera, es

una trasposición independiente de la clave, y la última es la inversa de la primera. La

anterior a la última, intercambia los 32 bits de la derecha con los 32 de la izquierda. Las 16

etapas intermedias son funcionalmente idénticas, pero parametrizadas por diferentes

funciones de la clave, como se puede observar en la figura de la derecha.

Toda la complejidad del sistema recae en la función f, utilizada en cada etapa, que

consiste en varias operaciones XOR, y de desplazamiento, que no se describen a

continuación.

TDES

Un posible algoritmo sucesor del DES, es el TRIPLE DES. Este algoritmo se basa en el DES

tradicional, y utiliza dos claves y tres ejecuciones del algoritmo DES. La función sigue una

secuencia encriptado-desencriptado-encriptado (EDE): C = EK1 [ DK2 [ EK1 [P] ] ]

La utilización del desencriptado en la segunda etapa no tiene ningún significado

criptográfico. Su única ventaja, es que permite a usuarios de DES TRIPLE desencriptar

mensajes generados por usuarios de DES tradicional: C = EK1 [ DK2 [ EK1 [P] ] ]= EK1 [P]

IDEA (International Data Encription Algorithm)

IDEA fue desarrollado por Xuejia Lay y James Massey. A pesar de que solamente lleva unos

años en uso, es probablemente el mejor algoritmo de bloques existente. Utiliza clave de

128 bits y se cree que es resistente al criptoanálisis. Se encuentra bajo patente de Ascom-

Tech, aunque se permite su uso gratuito para aplicaciones no comerciales.

RC2

RC2 es un código protegido bajo secreto comercial (aunque no patentado) por RSA Data

Security Inc. Existen ataques criptoanalíticos que, aunque requieren de gran cantidad de

texto cifrado, muestran las vulnerabilidades de RC-2. Existen versiones mejoradas, y hoy

día RC2 tiende a utilizarse cada vez menos en beneficio de su "hermano mayor" RC4.

21

RC4

RC4 es un intento de reemplazar RC2 por un algoritmo más sólido. También es un secreto

comercial, aunque (al igual que RC2) su código fuente ha sido publicado en grupos de

discusión. No se conocen ataques contra él. Forma una parte vital del sistema de cifrado

en capas SSL, ampliamente utilizado en navegadores de Internet tales como Netscape

Navigator y Microsoft Internet Explorer. Por desgracia, la versión exportable de RC4 tiene

una clave de solamente 40 bits, lo que lo hace altamente vulnerable a ataques de fuerza

bruta. La versión de EEUU, con clave de 128 bits, es segura.

RC5

Éste fue diseñado por Ron Rivest y se encuentra bajo patente de RSA Data Security Inc. Es

relativamente nuevo, y se conocen ciertos tipos de ataques contra él. Asimismo existe un

cierto número (pequeño) de claves débiles que no deben utilizarse. A pesar de ello, se le

considera un sistema seguro.

SAFER

SAFER es un algoritmo diseñado por Robert Massey (uno de los creadores de IDEA). Tiene

claves de hasta 128 bits y, a pesar de algunas debilidades en la primera versión y de

ciertos ataques, parece un algoritmo seguro. Este programa fue desarrollado para la

empresa Cylink, que algunos lo ligan a la no muy querida Agencia de Seguridad Nacional

norteamericana (NSA); por ello, hay quien no se fía.

Rijndael

Actualmente el algoritmo DES está obsoleto y, para sustituirlo, el NIST (National Institute

of Standards and Technology) propuso una competición para desarrollar el estándar AES,

hasta cuya resolución ha adoptado el sistema Triple-DES como una solución temporal.

Los cinco algoritmos finalistas para AES, elegidos entre un total de quince, fueron MARS,

RC6, Rijndael, Serpent y Twofish. Así, Rijndael es un cifrador en bloque diseñado por John

Daemen y Vincent Rijmen como algoritmo candidato al AES (Advanced Encryption

Standard). Su diseño estuvo fuertemente influenciado por el de un cifrador (block cipher

Square), que también fue creado por John Daemen y Vincent Rijmen y se centraba en el

estudio de la resistencia al criptoanálisis diferencial y lineal. El nombre del algoritmo es

una combinación de los nombres de sus dos creadores

22

El cifrador tiene longitudes de bloque y de clave variables y puede ser implementado de

forma muy eficiente en una amplia gama de procesadores y mediante hardware. Como

todos los candidatos del AES es muy seguro y hasta la fecha no se le han encontrado

puntos débiles.

La longitud de la clave de Rijndael, si bien es variable, debe ser de 128, 192 o 256 bits,

según los requisitos establecidos para el AES. Asimismo, la longitud del bloque puede

variar entre 128, 192 o 256 bits. Todas las posibles combinaciones (nueve en total) entre

longitudes de clave y bloque son válidas, aunque la longitud oficial de bloque para AES es

de 128 bits. Las longitudes de la clave y el bloque pueden ser fácilmente ampliadas a

múltiplos de 32 bits. El número de iteraciones del algoritmo principal puede variar de 10 a

14 y depende del tamaño del bloque y de la longitud de la clave. Una de las críticas más

habituales de Rijndael es el escaso número de iteraciones, pero esto no supone un

problema, pues el costo operacional puede aumentarse sin más que incrementar el

tamaño del bloque y la longitud de la clave.

La implementación Stealth de Rijndael usa una clave de 256 bits y un bloque de 128 bits

de tamaño. Usando la mayor longitud posible de clave conseguimos la máxima seguridad

para el usuario. La filosofía de este diseño concedería pues mayor importancia a la

seguridad que a la velocidad. Si el usuario proporciona una clave de menor longitud

Stealth la transforma de una forma especial, casi aleatoriamente, para hacerla de 256 bits.

Y aunque acepta tamaños de bloque mayores que 128 bits, no existe ninguna razón para

usarlos siendo que este número de bits ha sido elegido como tamaño estándar.

Criptografía asimétrica

En 1976, Whitfield Diffie y Martin Hellman, de la Universidad de Stanford, demostraron la

posibilidad de construir criptosistemas que no precisaran de la transferencia de una clave

secreta en su trabajo. Esto motivó multitud de investigaciones y discusiones sobre la

criptografía de clave pública y su impacto, hasta el punto que la NSA ( National Security

Agency ) estadounidense trató de controlar el desarrollo de la criptografía, ya que la

consideraban una amenaza peligrosa para la seguridad nacional. Esta polémica ha llegado

incluso hasta nuestros días, en los que el affaire Zimmermann (el autor de PGP) o el

Clipper Chip han llenado portadas de periódicos de todo el mundo.

Veamos ahora en que se basan los criptosistemas de clave pública. En éstos, la clave de

cifrado se hace de conocimiento general (se le llama clave pública). Sin embargo, no

ocurre lo mismo con la clave de descifrado (clave privada), que se ha de mantener en

secreto. Ambas claves no son independientes, pero del conocimiento de la pública no es

posible deducir la privada sin ningún otro dato (recordemos que en los sistemas de clave

23

privada sucedía lo contrario). Tenemos pues un par de claves: una clave-pública y una

privada; la existencia de ambas claves diferentes, para cifrar o descifrar, hace que también

se conozca a estos criptosistemas como asimétricos.

Cuando un receptor desea recibir una información cifrada, ha de hacer llegar a todos los

potenciales emisores su clave pública, para que estos cifren los mensajes con dicha clave.

De este modo, el único que podrá descifrar el mensaje será el legítimo receptor, mediante

su clave privada.

Para que un algoritmo de clave pública sea considerado seguro debe cumplir:

• Conocido el texto cifrado no debe ser posible encontrar el texto en claro ni la clave

privada.

• Conocido el texto cifrado (criptograma) y el texto en claro debe resultar más caro en

tiempo o dinero descifrar la clave que el valor posible de la información obtenida por

terceros.

• Conocida la clave pública y el texto en claro no se puede generar un criptograma

correcto encriptado con la clave privada.

• Dado un texto encriptado con una clave privada sólo existe una pública capaz de

desencriptarlo, y viceversa.

Diffie-Hellman

Es un algoritmo de intercambio de claves. Una variante conocida como ElGamal funciona

como algoritmo de clave pública; por abuso del lenguaje, se suele conocer dicho algoritmo

como Diffie-Hellman (o DH, variante ElGamal). Se basa en el llamado problema de los

logaritmos discretos, que se cree es computacionalmente tan complejo como el de la

factorización de números primos (y, al igual que su primo RSA, no está demostrado que el

problema de logaritmos discretos no se pueda resolver mediante herramientas

matemáticas más poderosas en el futuro). Está siendo utilizado cada vez con más

frecuencia, entre otras cosas por cuestiones de patentes (la patente D-H ha expirado).

Aunque el algoritmo DH es más antiguo que el RSA, es más reciente en su utilización. Se

ignora si suplantará a RSA o coexistirán.

RSA

Se han propuesto diferentes alternativas, como el criptosistema de clave pública (PKC),

24

que utiliza una clave pública y otra secreta. El PKC, basado en un enfoque matemático,

elimina el problema de la distribución de claves pero no resulta tan eficaz, desde el punto

de vista informático, como el DES. En 1978 apareció el denominado algoritmo RSA, ideado

por Rivest, Shamir y Adleman, que utiliza números primos y la aritmética modular, que

trabaja con subconjuntos finitos de números enteros: los conjuntos de todos los números

enteros que tienen el mismo resto al dividirlos entre n.

Este algoritmo fue desarrollado en el MIT, y publicado en 1978 por primera vez, y desde

entonces fue aceptado mundialmente como algoritmo de encriptación de clave pública.

RSA es un cifrador de bloque, en el que el texto en claro y el texto cifrado son enteros

entre 0 y n – 1 para algún n.

Para algún texto en claro M y un bloque cifrado C, el encriptado y el desencriptado son de

la siguiente forma:

Ambos, el emisor y el receptor deben conocer el valor de n. El emisor conoce el valor de e,

y el receptor sólo debe conocer el valor de d. De esta forma, éste es un algoritmo de clave

pública, con una clave pública dada por Kpu = {e, n}, y una clave privada Kpr = {d, n}. Para

que este algoritmo sea satisfactoriamente un algoritmo de encriptado de clave pública, se

debe contestar además a las siguientes preguntas:

1. ¿Es posible encontrar valores de e, d, n tales que Med = M mod n para todo M <

n?

2. ¿Es relativamente fácil calcular Me y Cd para todos los valores de M < n?

3. ¿Es imposible determinar d dado e y n?

La respuesta a las dos primeras cuestiones es sí, y la respuesta a la tercera es sí para un

valor grande de e y n.

Se han realizado numerosos estudios sobre la seguridad del algoritmo, y se ha

demostrado que hoy en día, con una longitud de clave de 1024 bits, el algoritmo es

relativamente seguro (relativamente, porque cualquier algoritmo puede ser vencido por

fuerza bruta, pero se tardaría un tiempo realmente considerable en conseguirlo).

25

Tabla comparativa entre criptografía Simétrica y Asimétrica

Passwords

La siguiente tabla muestra el tiempo de búsqueda de una clave de acuerdo a su

longitud y tipo de caracteres utilizados. La velocidad de búsqueda se supone en

100,000 passowrds por segundo, aunque este número suele ser mucho mayor

dependiendo del programa utilizado.