Criptografia

Page 1

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


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.

2


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.

3


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,

4


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.

5


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.

6


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.

7


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

8


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

9


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

10


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.

11


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.

12


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:

13


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:

14


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:

15


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.

16


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

17


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,

18


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.

19


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 AscomTech, 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.

20


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

21


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

22


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),

23


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. n?

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

2.

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

3.

todo M <

¿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).

24


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.

25


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.