I.

La necesidad de una comunicación segura

Desde el auge de Internet, hemos trasladado a la red una gran parte de nuestras comunicaciones. Dado que Internet, como medio de comunicación, se basa en millones de ordenadores que transfieren los bits de información que intercambiamos, por el camino vamos dejando huellas de nuestras comunicaciones y de nosotros mismos.

Puede que un único intercambio no proporcione mucha información a los demás, pero utilizamos Internet tan a menudo que nuestro rastro de datos es inmenso. Por muy fragmentado que esté, se pueden unir las diferentes pistas y es inevitable que alguien lo haga para identificarte. Si las bases de datos no están protegidas adecuadamente, tus datos pueden quedar expuestos, con lo que tu información personal se puede filtrar a Internet.

Para limitar la cantidad de información que vas dejando, es fundamental que tus comunicaciones sean privadas. Al protegerlas, básicamente, estás ocultando información que podría incluirse en fuentes disponibles públicamente. La mayoría de los métodos para mantener la comunicación en privado se basan en el cifrado. El cifrado oculta tus comunicaciones a todos los demás ordenadores por los que se transmite la información. El algoritmo de cifrado es lo que determina el grado de seguridad de ese cifrado. No obstante, dado que los datos se gestionan con ordenadores que no siempre son de fiar (recuerda que cualquiera puede crear un nodo de Internet), también puede haber puntos débiles en la forma de intercambiar las claves de cifrado.

Breve introducción a la criptografía

No es necesario que entiendas todos los detalles del cifrado, pero vamos a explicar brevemente en qué consisten varios métodos de cifrado sencillos. Creemos que esta información puede parecerte interesante. La criptografía existe desde hace miles de años, de una forma u otra. Por lo que sabemos, es posible que los primeros en usarla fueran los egipcios, aunque tal vez sea anterior la sustitución de ciertos elementos de los mensajes para ocultar el significado original.

Note

¿Recuerdas el primer capítulo, donde hablamos de la tríada CID? La criptografía es un método habitual para gestionar correctamente el factor de la confidencialidad.

El cifrado César

Los romanos utilizaban la criptografía bastante a menudo. Se sabe que Julio César utilizaba un método de cifrado por sustitución que hoy se conoce como cifrado César. El cifrado es un algoritmo que se usa para cifrar y descifrar datos. El cifrado por sustitución es un tipo de cifrado en el que cada carácter se sustituye por otro, determinado de algún modo. Por ejemplo, César empleaba un cifrado en el que cada letra se sustituía por el carácter situado tres lugares después en orden alfabético, es decir, la A se escribía como D, la B como E y así sucesivamente.

Cifrado César
Cifrado César

Como puedes ver en la imagen, la clave de este cifrado consiste en avanzar tres pasos en el alfabeto. Este tipo de cifrados se pueden deducir más o menos fácilmente según en qué medida se pueda mantener en secreto el sistema de cifrado, más que la clave concreta. En el ejemplo del cifrado César, la clave podría ser cualquiera y se podría adivinar fácilmente probando todas las combinaciones (por fuerza bruta) u observando la frecuencia de las letras en un idioma determinado. Por ejemplo, si la letra P es la más frecuente en el mensaje codificado y sabemos que el mensaje está en castellano, podemos suponer que la P del mensaje secreto representa a la E del texto en claro, ya que la E es la letra más habitual en nuestro idioma. Durante al menos un milenio, se utilizaron diferentes variaciones de este sistema de cifrado por sustitución, hasta que las matemáticas proporcionaron mejores métodos de cifrado.

Note

Otro cifrado de sustitución muy conocido es el llamado cifrado Kamasutra. El cifrado se menciona en el Kamasutra como una técnica para ocultar mensajes, que utilizaban especialmente las mujeres. El cifrado Kamasutra sugiere que el alfabeto se divida en dos y se emparejen ambas mitades. Con este cifrado, cada letra se sustituye por su pareja, en lugar de contar cierta cantidad de pasos a partir de las letras.

Por cierto: el cifrado no tiene por qué ser perfecto. Por ejemplo, en las guerras, el simple hecho de asegurarse de que el mensaje no se pueda leer en cuestión de minutos u horas puede ser fundamental. Sin embargo, si los datos cifrados son confidenciales y también pueden causar daños en el futuro, debes asegurarte de que el método que utilices no sea demasiado fácil de averiguar.

Cifrado Vigenère

En el siglo XVI se desarrolló un nuevo método de cifrado más avanzado, que protegía contra los ataques basados en la frecuencia. El cifrado Vigenère emplea una clave que se repite, con lo que el análisis de frecuencias no sirve de nada, ya que la letra P deja de coincidir con la E en la mayoría de los textos cifrados.

El cifrado Vigenère se basa en una clave variable, por lo que es una versión más robusta del cifrado de sustitución. La clave se repite hasta cubrir toda la longitud del mensaje. La longitud de la clave es la parte más importante del cifrado Vigenère, ya que, con una longitud de clave de 1, este cifrado sería básicamente un cifrado César. Veamos un ejemplo.

Cifrado Vigenère
Cifrado Vigenère

Este es un ejemplo de una tabla de Vigenère. Como ves, esta versión del cifrado Vigenère es básicamente un cifrado César desplazado de forma cíclica.

Como se observa en la tabla anterior, utilizando una clave que tenga solamente el carácter D, el cifrado es idéntico al que utilizaba el César en sus mensajes. En la tabla, si te fijas en la fila D, columna A, encontrarás la letra A cifrada como la letra D, igual que en el cifrado César.

Para entender lo útil que es el cifrado Vigenère, vamos a ver un ejemplo más completo con una clave más larga. Utilizando la tabla de Vigenère anterior, podemos cifrar el mensaje de texto «CIBERSEGURIDAD» con la clave «SECRETO» de la siguiente manera:

Mensaje original: CIBERSEGURIDAD

Clave: SECRETOSECRETO

Mensaje cifrado:

En primer lugar, tenemos que buscar la columna de la letra C y encontrar el punto donde coincide con la fila S de la tabla. En la tabla, vemos que el resultado es la letra U. La tomamos como la primera letra del texto cifrado.

Mensaje original: CIBERSEGURIDAD

Clave: SECRETOSECRETO

Mensaje cifrado: U

La siguiente letra del mensaje es la I, en la fila E (la segunda letra de la clave de cifrado). El resultado es la letra M. Si la añadimos, vemos que las dos primeras letras del texto codificado (o cifrado) son UM.

Mensaje original: CIBERSEGURIDAD

Clave: SECRETOSECRETO

Mensaje cifrado: UM

Siguiendo el mismo patrón, obtenemos todo el texto cifrado:

Mensaje original: CIBERSEGURIDAD

Clave: SECRETOSECRETO

Mensaje cifrado: UMDVVLSYYTZHTR

¡Enhorabuena! Has codificado tu primer mensaje con cifrado Vigenère. Este método de cifrado se empleó durante unos tres siglos, hasta que se descubrió la manera de descifrarlo. Aunque, como tal vez hayas adivinado, lo más probable es que algunos mensajes ya se hubieran descifrado antes, ya que la confidencialidad del mensaje depende de la confidencialidad y la calidad de la clave.

El cifrado Vigenère fue seguro durante mucho tiempo, pero en el siglo XIX se encontraron y publicaron varios de sus puntos débiles. Con esos métodos era fácil resolver el cifrado, fuera cual fuera la clave utilizada. Los ataques se basan en los puntos débiles y en la repetición de la clave en el algoritmo para averiguar la longitud de la clave (o las posibles longitudes de la clave) y, con esa información, se puede emplear un ataque de eliminación de claves para averiguar la clave utilizada. Hay diversos métodos para determinar la longitud de la clave con un alto porcentaje de aciertos.

En la guerra civil estadounidense, las fuerzas confederadas también usaban un tipo de cifrado Vigenère. Era habitual que sus enemigos —las fuerzas de la Unión— descifraran esos mensajes, dado que ya se habían detectado varios puntos débiles en ese sistema de cifrado.

Los cifrados Vigenère que aplican una clave realmente aleatoria con la misma longitud que el mensaje de texto en claro se suelen considerar indescifrables y se denominan libreta de un solo uso (del inglés one-time pad). Las libretas de un solo uso no tienen los puntos débiles de las claves que se repiten. Como los ataques de diccionario no se pueden aplicar a las claves que son realmente aleatorias, la confidencialidad del mensaje depende de la clave y no del cifrado. Sin embargo, es difícil utilizar una libreta de un solo uso, ya que el punto débil será la manera de intercambiar la clave entre las partes.

Note

El escritor Simon Singh ha publicado un sitio web interactivo muy ameno con numerosos ejemplos de funciones criptografías utilizadas a lo largo de la historia: The Black Chamber (La cámara negra).

Con la invención de la ingeniería mecánica, en el campo del cifrado surgieron métodos más nuevos y avanzados. Se crearon máquinas en las que, al pulsar una tecla, se iluminaba la letra cifrada. Estas primeras máquinas de cifrado mecánico también ampliaron la longitud del vocabulario añadiendo rotores giratorios situados unos junto a otros. Cuando un rotor de 26 caracteres giraba de la A a la Z, otro se movía un paso más allá y ocultaba así el patrón de repetición de la clave. De esta manera, un solo rotor podía proporcionar una clave de longitud 26. Si se añadía otro rotor, las posiciones disponibles se ampliaban a 26 × 26 = 676. Para definir la clave compartida, solo había que comunicar el estado inicial de ambos rotores.

Suponiendo que tenemos tres rotores y que la posición inicial de todos es A, obtendremos las siguientes posiciones cada vez que se pulse una tecla:

A A A

B A A

C A A

D A A

Z A A

A B A

B B A

Y Z Z

Z Z Z

A A A

En realidad, la configuración, el cableado y el funcionamiento de esas máquinas es más complejo, pero con este ejemplo puedes hacerte una idea de lo que se puede lograr automatizando la generación de la clave de cifrado a partir de la posición inicial de las máquinas mecánicas.

Note

La más conocida de estas máquinas de rotores fue la Enigma, muy utilizada por los alemanes en la Segunda Guerra Mundial. Las máquinas Enigma de esa época tenían entre tres y ocho rotores. Sin embargo, la forma en que los alemanes utilizaban esas máquinas permitió a los criptólogos polacos y británicos aprovechar los puntos débiles para descifrar los mensajes del bando germano.

En Wikipedia puedes consultar más información sobre esta máquina de cifrado, posiblemente la más famosa de la historia.

Los cifrados que hemos descrito son cifrados simétricos, es decir, para descifrar el mensaje se puede usar la misma clave que se aplicó para cifrarlo. A lo largo de los años, se han creado varios métodos con los que no es necesario transmitir la clave secreta al destinatario: es el llamado cifrado asimétrico. En el cifrado asimétrico, el mensaje se cifra con una clave pública que se deriva de la clave secreta del destinatario del mensaje. Por ejemplo, si quieres que tus compañeros de trabajo cifren los mensajes que te envían, puedes enviarles tu clave pública y ellos la usarán para cifrar los mensajes que estén dirigidos a ti. Una vez cifrados esos mensajes, solo podrá descifrarlos quien tenga tu clave secreta (esperemos que seas tú). Esto se denomina criptografía de clave pública, porque se usa una clave pública para el cifrado.

Hashes para demostrar la integridad

Las funciones hash también se suelen usar para verificar la integridad de un mensaje. Como recordarás, la integridad es uno de los componentes de la tríada CID (confidencialidad, integridad y disponibilidad). La función hash se puede utilizar para verificar la integridad de la misma manera que se puede proteger una contraseña. Este método consiste en aplicar una función hash para calcular el valor resultante de todo el contenido de un mensaje y enviarlo junto con el mensaje original. Entonces, quien recibe esa contraseña codificada puede comprobar que el valor del hash (el llamado resumen del mensaje) coincide con el valor calculado en el lugar de recepción. Algunas funciones hash criptográficas incluyen la identidad en la función, que puede ser verificada por el receptor. Estas funciones crean lo que se llama un código de autenticación de mensaje o message authentication code (MAC).

Criptografía moderna

La criptografía moderna se basa en la confidencialidad de la clave. Se utilizan métodos de cifrado ampliamente estudiados, designados con nombres concretos. Esos métodos de cifrado pueden ser conocidos, ya que la confidencialidad depende de la clave, no de cómo se use. Por ejemplo, cuando consultas tu cuenta bancaria por Internet, tu navegador y el servidor web del banco intercambian de forma segura una clave secreta simétrica (y larga) que se utiliza para cifrar el tráfico entre el navegador y el servidor del banco. Además, la criptografía de clave pública se suele usar para verificar la identidad de la otra parte. También se puede verificar cada mensaje mediante un código de autenticación de mensaje o message authentication code (MAC). Este proceso de intercambio de claves, verificación y autenticación entre el navegador y el servidor se denomina TLS o transport layer security (seguridad de la capa de transporte) y lo explicaremos más detalladamente en el próximo capítulo. Las versiones anteriores utilizaban un método ya obsoleto, llamado SSL o secure socket layer (capa de puertos seguros).

Note

Qué debes recordar sobre la criptografía

  • La confidencialidad de tu mensaje siempre debe depender de que se mantenga en secreto la clave, y no el sistema de cifrado (esto se conoce como el principio de Kerckhoffs).

  • Utiliza siempre sistemas de cifrado que hayan sido revisados públicamente y que se hayan consolidado como estándar. Usar un sistema de cifrado secreto o inventar uno no es buena idea porque, al igual que el cifrado César, una vez que se conoce y se entiende el sistema, se pueden descifrar todos los mensajes.

Next section
II. Mensajería y cifrado de extremo a extremo