El criptoanálisis es la disciplina que se ocupa del conjunto de técnicas para descifrar mensajes en ausencia de las claves (romper el cifrado).
La criptología es la disciplina que engloba tanto la criptografía como el criptoanálisis.
La esteganografía es la disciplina que se ocupa del conjunto de técnicas que permiten el ocultamiento de mensajes dentro de otros, llamados portadores, de modo que no se perciba su existencia. En informática probablemente el sistema esteganográfico más utilizado sea el de ocultar mensajes en imágenes a nivel binario, alterando los bits de menor peso de determinados píxeles de la imagen e insertando en ellos el mensaje. Esta técnica hace indistinguible al ojo humano la imagen original de la alterada. Como además los mensajes se guardan cifrados en píxeles determinados por una clave no es posible saber si una imagen dada lleva un mensaje oculto o no.
Un ejemplo:
Dos presos, Ana y Bob, planean fugarse y para organizarlo necesitan intercambiar mensajes. La única manera de enviar mensajes es solicitándole a la guardiana Eva que haga de portadora. Si Ana le da a Eva un mensaje para Bob que dice Nos fugamos mañana a las 12 no es muy probable que la fuga tenga éxito. Ana puede utilizar la criptografía para enviar entonces el siguiente mensaje gdtrhfuwjeldikarstyivh, pero Eva sospechará que algo ocurre, aunque no sepa qué. Por último Ana puede utilizar la esteganografía para enviar un mensaje en apariencia normal que oculte el mensaje real para Bob. Este mensaje podría ser, por ejemplo, un poema acróstico50. Para mayor seguridad Ana podría enviar un mensaje cifrado oculto mediante esteganografía. |
Los algoritmos informáticos se basan principalmente en la trasposición de bloques52 de bits en base a claves binarias.
Por ejemplo es fácil multiplicar dos números primos pero es difícil factorizar el resultado. Lo mismo ocurre con el módulo de grandes números primos (DSA), los logaritmos discretos (ElGamal) o las matemáticas de las curvas elípticas. Por ejemplo si se usa la función ga mod p=s, es fácil calcular s a partir del resto de valores (g,a,p), pero es muy costoso computacionalmente calcular a a partir del resto de valores (g,p,s).
Se dice que un algoritmo de clave pública es reversible si se puede utilizar tanto la clave privada como la pública para cifrar y siempre es necesaria la clave contraria para descifrar.
La Criptografía de Curva Elíptica (ECC: Elliptic Curve Cryptography) es una variante de la criptografía asimétrica basada en las matemáticas de las curvas elípticas. Sus autores argumentan que la CCE puede ser más rápida y usar claves más cortas que los métodos anteriores al tiempo que proporcionan un nivel de seguridad equivalente.
El sistema básico para firmar un fichero, un mensaje o un resumen es mediante su cifrado con una clave, de forma que solo podrá entenderse descifrándolo de nuevo. El hecho de que pueda descifrarse con la clave establecida garantiza su integridad (si se hubiese alterado una vez cifrado no se podría descifrar) y su autenticidad (ha sido cifrado con la clave -firma- correcta).
Para firmar un mensaje o un fichero se genera un resumen y se cifra únicamente el resumen, por varios motivos:
Además los protocolos de firma agregan mecanismos de estampado de tiempo, lo que aporta no-repudio a la comunicación, es decir el emisor no puede negar que es quién ha creado el mensaje si la clave no había sido comprometida con anterioridad.
Por tanto los protocolos de firma se componen de un algoritmo de cifrado de clave pública, un algoritmo de resumen y mecanismos de estampado de tiempo. En vez de algoritmos de clave asimétrica se pueden utilizar un algoritmo de clave simétrica con clave pre-compartida para realizar el cifrado.
Cuando se firman mensajes de comunicación dentro de un protocolo seguro, las firmas generadas se conocen como código de autenticación de mensaje(MAC o kHMAC keyed-Hash Message Authentication Code).
Además han de utilizarse técnicas de firmado para garantizar la integridad y autenticidad del mensaje.
Estas tres garantías (Autenticidad, Confidencialidad e Integridad) definen una comunicación segura.
Por tanto para establecer una comunicación segura las dos partes establecen una negociación en la que acuerdan el uso de un algoritmo de cifrado simétrico -son los más rápidos-, una clave para el algoritmo -que puede ir variando con el tiempo- y un sistema de firmado (mediante claves asimétricas o clave simétrica pre-compartida que también tendrán que acordar). Una vez realizada la negociación y establecidos los parámetros de una comunicación segura se dice que se ha establecido una asociación de seguridad (SA: Security Association).
Si ambas partes de la comunicación utilizan algoritmos asimétricos reversibles y disponen de la clave pública de la otra parte pueden realizar la negociación de manera segura usando un medio inseguro. Para ello el remitente debe firmar sus mensajes con su clave privada y utilizar la clave pública del destinatario para cifrar los mensajes que le envía.
Esto permite que:
Para que una parte otorgue validez a un certificado de nuevo necesita conocer la clave pública de la entidad certificadora persistiendo el problema original. Por ello en última instancia las entidades certificadoras distribuyen su clave pública lo máximo posible mediante medios fiables, incluso en la propia instalación de los sistemas operativos y aplicaciones, por medio de certificados autofirmados. Además las entidades certificadoras deben certificarse unas a otras y crear listados de revocación de claves (para anular la validez de claves certificadas en su periodo de validez por haber quedado comprometidas).
Si no se dispone de PKI las partes deben acordar una clave para el algoritmo de cifrado simétrico sin llegar a comunicársela y sin que un tercero a la escucha pueda deducirla ya que entonces tendría capacidad para entender toda la comunicación. Este problema se conoce como intercambio de claves aunque, como se ha dicho, en realidad lo que se hace no es intercambiar una clave sino acordar una clave entre las partes.
Alternativamente las redes de confianza se basan en que cada usuario firme las claves públicas de usuarios de su entera confianza, que a su vez firman las claves públicas de otros exponencialmente, creando una red de claves públicas de confianza. Para obtener redes amplias y de calidad los usuarios deben conseguir que muchos terceros firmen su clave pública y, esto es muy importante, firmar solo la clave pública de terceros de confianza.
Su funcionamiento se puede ver en el siguiente ejemplo con la función ga mod p=s:
Un extremo Ana quiere acordar una clave
con Bob por un canal en el que escucha
Eva.
Ana informa a Bob (y a Eva) de que va a utilizar g=5 y p=23. En la práctica g suele ser 2 o 5, pero p debe ser un número primo de al menos 300 dígitos. Entonces Ana elige un número aleatorio a=6 (en la práctica a debe ser un número de al menos 100 dígitos), calcula 56 mod 23=8 y envía a Bob (y a Eva) el resultado (8). Bob elige un número aleatorio b=15 (que como el número aleatorio a de Ana debe ser en la práctica de al menos 100 dígitos), calcula 515 mod 23=19 y envía a Ana (y a Eva) el resultado (19). Con estos datos Ana calcula que la clave acordada con Bob es 196 mod 23=2. Bob calcula que la clave acordada con Ana es 815 mod 23=2. Nótese que solo Ana conoce a y solo Bob conoce b pero ambos calculan el mismo valor para la clave s=2. Eva para conocer la clave acordada s sin conocer ni a ni b debería resolver el sistema de ecuaciones
|
Siguiendo el ejemplo anterior:
Si Eva en vez de solo escuchar quisiera hacer un ataque tipo hombre-en-medio, lo que haría es establecer una comunicación con Ana fingiendo ser Bob y establecer otra comunicación con Bob fingiendo ser Ana. Usando el esquema Diffie-Hellman acordaría una clave con Ana y otra con Bob. Después desencriptaría los mensajes enviados por Ana con la clave acordada con ella y los volvería a encriptar con la clave acordada por Bob para enviárselos a él. De la misma manera desencriptaría los mensajes enviados por Bob con la clave acordada con él y los volvería a encriptar con la clave acordada por Ana para enviárselos a ella. |
Si Eva quiere hacer un ataque tipo hombre-en-medio en una comunicación
con claves asimétricas entre Ana y Bob, lo que haría es enviar a
Ana su clave pública -una generada al efecto- como si fuese la de Bob
y enviar a Bob otra clave pública -generada al efecto- como si fuese
la de Ana. De nuevo establecería una comunicación segura con Ana y
otra con Bob, reenviando los mensajes interceptados tras descifrarlos y
volverlos a cifrar y firmar.
Como hemos visto, este ataque no es posible si previamente Ana y Bob conocen las claves públicas de la otra parte o si Ana y Bob verifican las claves públicas que reciben mediante certificados de una entidad que previamente hayan reconocido. |
El uso de PKI con claves públicas certificadas por las partes hace innecesario el esquema DH. Pero ¿qué ocurre cuando un cliente sin certificado quiere comunicarse de manera segura con un servidor con certificado? Es decir ¿y si solo una de las partes usa PKI para certificar su autenticidad?
En estos casos se utiliza el intercambio DH y el servidor firma todos sus mensajes. Esto hace que el hombre-en-medio pueda alterar los mensajes solo en una dirección (cliente sin certificar 3#3 servidor). Haciéndolo podría engañar al servidor pero no al cliente, con lo que la comunicación cliente-servidor no se establecería. Si no se altera ningún mensaje, como hemos visto, cliente y servidor podrán acordar una clave sin que ningún tercero sea capaz de averiguarla.
2009-05 Güimi (http://guimi.net) Está permitido copiar, distribuir y/o modificar los documentos bajo los términos de la licencia "Reconocimiento-Compartir bajo la misma licencia 3.0 España" de Creative Commons. Puede ver una copia de esta licencia completa. |