Tabla de Contenidos
Criptografía y sus Aplicaciones
La criptografía es la técnica que protege documentos y datos. Funciona a través de la utilización de códigos para escribir algo secreto en documentos y datos confidenciales que almacenamos en dispositivos informáticos o se transmiten por las redes.
Su utilización es tan antigua como la escritura. Los romanos usaban códigos para ocultar sus proyectos de guerra de aquellos que no debían conocerlos, con el fin de que sólo las personas que conocían el significado de estos códigos descifraran el mensaje oculto.
Máquina alemana de cifrado usada en la Segunda Guerra Mundial
Cifrados simétricos
Un sistema de cifrado simétrico es un tipo de cifrado que usa una misma clave para cifrar y para descifrar. Las dos partes que se comunican mediante el cifrado simétrico deben estar de acuerdo en la clave a usar de antemano. Una vez de acuerdo, el remitente cifra un mensaje usando la clave, lo envía al destinatario, y éste lo descifra usando la misma clave.
Como ejemplo de sistema simétrico está Enigma. Éste sistema fue usado por Alemania, en el que las claves se distribuían a diario en forma de libros de códigos. Cada día, un operador de radio, receptor o transmisor, consultaba su copia del libro de códigos para encontrar la clave del día. Todo el tráfico enviado por ondas de radio durante aquel día era cifrado y descifrado usando las claves del día. Algunos ejemplos actuales de algoritmos simétricos son 3DES, Blowfish e IDEA.
Máquina Enigma Diseñada por Alan Touring
Un buen sistema de cifrado simétrico pone toda la seguridad en la clave y ninguna en el algoritmo. En otras palabras, no debería ser de ninguna ayuda para un atacante conocer el algoritmo que se está usando. Sólo si el atacante obtuviera la clave, le serviría conocer el algoritmo. Los algoritmos de cifrado usados en GnuPG tienen estas propiedades.
Cifrados asimétricos
El principal problema con los sistemas de cifrado simétricos no está ligado a su seguridad, sino al intercambio de claves. Una vez que el remitente y el destinatario hayan intercambiado las claves pueden usarlas para comunicarse con seguridad, pero ¿qué canal de comunicación que sea seguro han usado para «comunicar» la clave entre ellos?
Clave pública-clave privada
Los sistemas de cifrado de clave pública-privada se inventaron con el fin de evitar por completo el problema del intercambio de claves. Un sistema de cifrado de clave pública-privada usa un par de claves para el envío de mensajes. Las dos claves pertenecen a la misma persona a la que se ha enviado el mensaje. Una clave es pública y se puede entregar a cualquier persona. La otra clave es privada y el propietario debe guardarla para que nadie tenga acceso a ella. El remitente usa la clave pública del destinatario para cifrar el mensaje, y una vez cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje.
Cifrados híbridos
Los cifrados de clave pública-privada no infalibles. Muchos cifrados simétricos son más fuertes desde un punto de vista de seguridad, y el cifrado y descifrado con clave pública son más costosos que las correspondientes operaciones en sistemas simétricos. De todos modos, los cifrados de clave pública son una herramienta efectiva para distribuir claves de cifrado simétrico, y de esta manera es como se usan en sistemas de cifrado híbridos.
Un sistema de cifrado híbrido usa tanto un cifrado simétrico como uno asimétrico. Funciona mediante el uso de un cifrado de clave pública para compartir una clave para el cifrado simétrico. El mensaje que se esté enviando en el momento, se cifra usando la clave y enviándolo al destinatario. Ya que compartir una clave simétrica no es seguro, la clave usada es diferente para cada sesión.
Firmas digitales
Una función `hash' es una función múltiple que asigna su entrada a un valor dentro de un grupo finito. Por regla general este grupo es un rango de números naturales. Un modelo simple de función `hash' es f(x) = 0 para todo entero x. Una función hash más interesante es f(x) = x mod 37, que asigna x al resto de la división x entre 37.
Una firma digital en un documento es el resultado de aplicar una función `hash' al documento. Para que sea de utilidad, la función `hash' necesita satisfacer dos propiedades importantes. Primero, debería ser difícil encontrar dos documentos cuyo valor para una función `hash' sea el mismo. Segundo, dado un valor `hash' debería ser difícil de recuperar el documento que produjo es valor.
Algunos sistemas de cifrado de clave pública[1] se pueden usar para firmar documentos. El firmante cifra el documento con su clave privada. Cualquiera que quiera comprobar la firma y ver el documento, no tiene más que usar la clave pública del firmante para descifrarla. Este algoritmo satisface las dos propiedades necesarias para una buena función de `hash', pero en la práctica este algoritmo es demasiado lento para que sea de utilidad.
Como alternativa está el uso de funciones `hash' designadas para satisfacer estas dos importantes propiedades. SHA y MD5 son dos ejemplos de este tipo de algoritmos. Al usar uno de estos algoritmos, un documento se firma con una función `hash', y el valor del `hash' es la firma. Otra persona puede comprobar la firma aplicando también una función `hash' a su copia del documento y comparando el valor `hash' resultante con el del documento original. Si concuerdan, es casi seguro que los documentos son idénticos.
Aplicación en comunicaciones
SSH
SSH (o Secure SHell) es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.
Permite una conexión mediante terminal, similar a Telnet, para administrar de forma remota un sistema operativo que tenga un servidor SSH.
SSL
Secure Sockets Layer, es un protocolo criptográficos, que proporciona comunicaciones seguras por una red, comúnmente Internet. SSL implica una serie de fases básicas:
- Negociar entre las partes el algoritmo que se usará en la comunicación.
- Intercambio de claves públicas y autenticación basada en certificados digitales.
- Cifrado del tráfico basado en cifrado simétrico.
TLS
Transport Layer Security o TLS, es la implementación sue sustituye a SSL. Se usan certificados X.509 y por lo tanto criptografía asimétrica para autentificar a la contraparte con quien se están comunicando,y para intercambiar una llave simétrica. Esta sesión es luego usada para cifrar el flujo de datos entre las partes.
Esto permite la confidencialidad del dato/mensaje y autenticación del mensaje. Varias versiones del protocolo están en aplicaciones ampliamente utilizadas como navegación web, correo electrónico, mensajería instantánea y voz-sobre-IP (VoIP)
Certificado TLS/SSL
Los certificados TLS/SSL establecen una sesión entre un servidor web y un cliente web a través del protocolo SSL. Codifican la información mediante un código criptográfico, consiguiendo que los datos transferidos entre usuarios y sitios web, o entre dos sistemas, estén encriptados.
TSL Handshake
Entre cliente y servidor se establece un hadshake del siguiente modo:
- Un navegador intenta conectarse a un servior web protegido mediante certificados SSL.
- El navegador solicita que el servidor web se identifique.
- En respuesta el servidor web envía al navegador una copia de su certificado SSL.
- El navegador evalúa si el certificado SSL es confiable. En caso afirmativo, envía una señal al servidor web.
- A continuación, el servidor web devuelve un reconocimiento firmado digitalmente para iniciar una sesión cifrada mediante SSL.
- Los datos cifrados se comparten entre el navegador o servidor y el servidor web.
HTTPS
El Protocolo seguro de transferencia de hipertexto (en inglés, Hypertext Transfer Protocol Secure o HTTPS) es un protocolo de comunicación de Internet basado en el protocolo HTTP, destinado a proteger la integridad y la confidencialidad de los datos de los usuarios entre sus ordenadores y el sitio web. Es decir, es la versión segura de HTTP.
El envío de datos mediante el protocolo HTTPS está protegido con el protocolo TLS, (Transport Layer Security), que proporciona estas tres capas de seguridad principales:
- Cifrado: se cifran los datos intercambiados para mantenerlos a salvo de miradas indiscretas. Eso significa que, cuando un usuario está navegando por un sitio web, nadie puede “escuchar” sus conversaciones.
- Integridad de los datos: los datos no pueden modificarse ni dañarse durante las transferencias sin que esto se detecte.
- Autenticación: demuestra que tus usuarios se comunican con el sitio web previsto. Proporciona protección frente a los ataques mand-in-the-middle.
Diferencias con HTTP
En el protocolo HTTP las URLs comienzan con “http:” y utilizan por omisión el puerto 80, las URLs de HTTPS comienzan con “https:” y utilizan el puerto 443 por omisión.
HTTP es inseguro y está sujeto a ataques man-in-the-middle que pueden permitir al atacante obtener acceso a cuentas de un sitio web e información confidencial. HTTPS está diseñado para resistir esos ataques y ser más seguro.
© 2024 Fernando Valdeón