Uno de los aspectos fundamentales que distingue unas comunicaciones de otras es la seguridad que se les aplica a estas. Todos queremos que nuestros mensajes, fotos y vídeos sean privados y no se conviertan en uno de los muchos fenómenos virales que circulan por Internet.

Como seguramente muchos de vosotros os hayáis interesado en el tema de la seguridad en las comunicaciones, aquí os dejo un breve resumen a modo introductorio para que podáis entender un poco los principios básicos de la seguridad.

¿Qué es la seguridad en la red?

Este termino por si solo no significa nada. Hay muchos aspectos dentro de la palabra “seguridad”. No es únicamente cifrar un mensaje y mandarlo. Entra en juego , por ejemplo, que dicho mensaje no haya sido modificado. Por lo que vamos a definir correctamente los cuatro aspectos fundamentales que forman parte de la seguridad:

  1. Confidencialidad: sólo el emisor y el receptor al que va destinado el mensaje deberían “entender” el contenido del mismo. Concepto sencillo e intuitivo: El emisor cifra el mensaje y el receptor lo descifra.
  2. Autenticación: el emisor y el receptor quieren confirmar la identidad del otro. ¿Cómo se que no hay nadie haciéndose pasar por mi amigo?
  3. Integridad en el mensaje: emisor y receptor quieren asegurarse de que el mensaje no ha sido alterado (en tránsito o después).
  4. Acceso y disponibilidad: los servicios deben ser accesibles y estar disponibles a los usuarios (que no tiren abajo un servicio web por ejemplo).

Confidencialidad y criptografía

Es esencial que el mensaje que mandamos únicamente lo entienda el receptor. El objetivo principal es que si hay alguien escuchando en el canal de transmisión de dicho mensaje, aunque lo intercepte se quede como está y no sepa que significa.

Las técnicas criptográficas usadas son varias. Según los tipos de claves que se usen para cifrar un mensaje, se pueden clasificar en:

Criptografía de clave simétrica

Implica que tanto el emisor como el receptor conozcan y utilicen la misma clave para cifrar/descifrar el mensaje. Pero, ¿Cómo se ponen de acuerdo en el valor de la clave? Esto se debe de hacer de forma previa a la comunicación mediante ciertos protocolos de los que no voy a hablar en este caso.

Ejemplo cifrado con clave simétrica
Ejemplo cifrado con clave simétrica

Nota: Una clave no es mas que un algoritmo, por lo que la idea de que ambos usen la misma clave significa que ambos tienen que saber que algoritmo aplicar para poder entenderse.

Cuando emisor y receptor conocen ya la clave a usar, el cifrado del mensaje puede realizarse de dos formas:

  • Cifrado de flujo: Cifra bit a bit. Hay un generador de bit aleatorios que va combinando un bit aleatorio con un bit del mensaje, de esta forma se cifra bit a bit todo el mensaje que se quiere enviar. Un cifrado de flujo muy popular es el RC4, usado en WEP y en SSL (explicación de SSL más adelante).
En la imagen: Cifrado en flujo
En la imagen: Cifrado en flujo
  • Cifrado en bloque: Divide el mensaje original (sin cifrar) en bloques de tamaño similar y cifra cada bloque de forma independiente. El problema principal de este apartado es que si hay dos bloques iguales, la salida encriptada va a ser similar también. Por lo que hay que introducir algún elemento que de aleatoriedad al cifrado (cifrado CBC, DES y AES).

Criptografía de clave pública

Como lo realmente difícil es que emisor y receptor se pongan de acuerdo en la clave a usar, se llegó a la conclusión de que era mejor utilizar un sistema de cifrado de clave pública.

Se basa en la idea de que cada uno tenemos dos claves: Una pública y una privada. La pública es conocida por todos y la privada únicamente por el receptor. De tal forma que si ciframos un mensaje con la clave pública del receptor, el receptor al recibirlo aplicará su clave privada de tal forma que obtenga el mensaje original.

En la imagen: ejemplo de cifrado con clave pública
En la imagen: ejemplo de cifrado con clave pública

El algoritmo de cifrado público mas utilizado es RSA. Se basa en obtener dos número primos aleatorios de 1024 bits cada uno (es decir, números increíblemente grandes), y una vez obtenidos se operan mediante operaciones algebraicas para obtener la clave pública y privada. Os pongo el proceso aritmético que se utiliza para la obtención de dichas claves:

RSA

RSA es muy utilizado por la complejidad que conlleva el cálculo y factorización de los números primos (proceso que debería seguir un atacante que quisiera descifrar un mensaje RSA). Hay toda una teoría de algoritmos muy complejos que garantizan la confidencialidad. Os dejo un enlace mas amplio por si queréis saber más del tema.

Nota: El algoritmo DES mencionado anteriormente es 100 veces mas rápido de computar que RSA, por lo que normalmente RSA se utiliza para compartir las claves privadas entre dos entidades y, posteriormente, se pasa a un cifrado simétrico DES.

Funciones de Hash e integridad del mensaje

Una vez explicado como garantizar la confidencialidad del mensaje, pasamos a ver la integridad. Consiste en asegurar que el mensaje no ha sido modificado ni cambiado por ningún otro. Daremos por supuesto que detrás de los procesos que voy a explicar a continuación hay codificación del mensaje (explicado anteriormente).

Una función de Hash no es mas que un algoritmo que toma un mensaje inicial y, sea cual sea este mensaje, proporciona a su salida una cadena de longitud fija. Aparentemente esta cadena tiene ser aleatoria, fácil de calcular computacionalmente e irreversible (ya que solo queremos garantizar que el mensaje no ha sido modificado). La función hash ampliamente utilizada es MD5.

En la imagen: ejemplo de procedimiento para autenticar.
En la imagen: ejemplo de procedimiento para autenticar.

Dentro de este apartado hay que destacar las firmas digitales. No son mas que la combinación de un hash y claves públicas y privadas. Os dejo el proceso que se sigue, pero simplemente el receptor tiene que garantizar que los hash aplicados al mensaje son iguales, por lo que el mensaje no se habrá modificado y así se habrá comprobado la identidad del emisor.

En la imagen: ejemplo de firma digital
En la imagen: ejemplo de firma digital

SSL y el protocolo TCP

Para los que no lo sepan, TCP es un protocolo que se encarga de transportar los datos y garantizar la entrega al receptor. Para ampliar al alcance de este protocolo, SSL es un protocolo de seguridad que se añade a TCP para hacerlo seguro (nunca mejor dicho). Es lo que se usa en el famoso HTTPs, la forma segura de navegación web. También se usa para comercio electrónico y cifrado de los números de las tarjetas de crédito.

El método que garantiza la seguridad con SSL es sencillo. Primero las dos entidades que se quieren comunicar se identifican y autentifican (he explicado antes como lo hacen). Cuando ya se ha completado este proceso, se calculan las claves que se van a usar para cifrar a partir de un “secreto compartido” que se ha utilizado en la autenticación (aparece en las imágenes anteriores). La gracia está en que se utilizan 4 claves distintas, por lo que es muy difícil conocer las cuatro.

IPsec y la seguridad a nivel de red

La seguridad a nivel de red consiste en cifrar el campo de datos que lleva un mensaje que navega por la red de Internet. Es muy frecuente que una empresa tenga entidades en dos localizaciones muy distantes, por lo que en este apartado se usan las VPN como método de seguridad.

Una VPN es la extensión de una red privada en Internet, es decir, una red privada virtual. De esta forma las empresas con el problema mencionado anteriormente pueden mandarse información por Internet simulando que están todos en la misma oficina privada.

En la imagen: ejemplo de uso de VPN en una empresa.
En la imagen: ejemplo de uso de VPN en una empresa.

Para esta tarea, se hace uso del protocolo IPsec. Este protocolo hace uso de dos protocolos: AH y ESP. Lo más normal es utilizar ESP.

Cuando un mensaje IP llega al router de salida de una red privada, este procesa dicho datagrama IP y lo modifica de tal forma que cifra el contenido y añade ciertos campos para que el mensaje pueda llegar a su destino pero sin que nadie lo entienda aunque sea interceptado por el camino.

Al llegar al router destino, este sabe de donde viene por los campos añadidos por el router anterior y lo descifra, entregándoselo al usuario final de forma legible y sin alteraciones.

Comentarios

comentarios