1Conceptos básicos de criptografía

La criptografía es una herramienta matemática muy útil para la protección de la información en los sistemas de transmisión de datos. Muchas aplicaciones de seguridad se basan en el uso de la criptografía para el cifrado y descifrado de datos. Gracias a la criptografía, se pueden transmitir datos críticos a través de redes de telecomunicaciones, de forma segura, sin la amenaza que la información sea interceptada y posteriormente, comprometida. El cifrado se puede definir como el proceso de elaboración de información indescifrable e inútil para todos excepto los destinatarios autorizados de dicha información. El descifrado es la conversión de los datos de nuevo a su forma original.

Esta técnica se utiliza en muchas acciones cotidianas, como establecer o recibir una llamada desde un teléfono móvil, pagar con una tarjeta de débito o crédito, retirar dinero de un cajero automático, iniciar una sesión en un ordenador con una contraseña,... La criptografía permite almacenar información crítica o transmitirla a través de redes inseguras (como Internet), de modo que no pueda ser leída por nadie excepto el destinatario. La criptografía se ha convertido en un estándar de la industria para proporcionar seguridad en el almacenamiento de la información, en el control de acceso a los recursos, y en las transacciones electrónicas. Sin embargo, es importante señalar que la criptografía por sí sola no es suficiente para ofrecer protección frente a todas las amenazas a la seguridad de la información.

Un algoritmo criptográfico no es más que un conjunto de secuencias para llevar a cabo tanto el cifrado como el descifrado correspondiente. Es decir, el cifrado de los datos es el resultado de una fórmula matemática diseñada específicamente para ocultar unos datos. Los algoritmos de cifrado más ampliamente extendidos utilizan como parte del proceso operativo con una o varias claves. Un mismo texto claro tiene diferentes cifrados cuando se utilizan diferentes claves. Idealmente, si se desconoce la clave correspondiente, no debería haber ninguna manera de encontrar el texto original a partir del texto cifrado, excepto la fuerza bruta, es decir, probando todas las posibles claves hasta encontrar la clave correcta. La seguridad de los datos cifrados depende totalmente de dos cosas: de la robustez del algoritmo criptográfico y del secreto de la clave.

El número de claves posibles debe ser lo suficientemente grande para que sea computacionalmente imposible llevar a cabo un ataque de fuerza bruta con éxito en un período de tiempo razonable. Muchos algoritmos criptográficos aumentan su protección aumentando la longitud de las claves que utilizan. Sin embargo, cuanto mayor sea la clave, mayor es el tiempo de computación que se requiere para cifrar y descifrar datos. Por ello, es importante elegir un algoritmo de cifrado que tenga un buen equilibrio entre las necesidades de protección y el coste computacional de la protección de los datos.

Los algoritmos criptográficos modernos se pueden clasificar atendiendo a dos criterios distintos: el tipo de clave que se utiliza, y la manera en que operan sobre los datos.

Respecto al tipo de clave utilizada, los algoritmos criptográficos se pueden clasificar en:

  1. Algoritmos de clave simétrica, también llamados de clave secreta. La criptografía de clave simétrica se refiere a métodos de cifrado en los que emisor y receptor comparten la misma clave (o, con menor frecuencia, en los que sus claves son diferentes, pero relacionados de una manera fácilmente computable). Un ejemplo de algoritmo simétrico ampliamente utilizado es el “Advanced Encryption Standard (AES)”.
  2. Algoritmos de clave pública, también llamados de clave asimétrica. Se trata de esquemas que utilizan un par de claves para cada usuario: una clave pública, que puede ser conocido por todo cualquier usuario, y una clave privada, conocida sólo por el usuario correspondiente. Obviamente, las dos claves de un mismo par están vinculadas matemáticamente; sin embargo, es computacionalmente imposible conocer la clave privada a partir de la clave pública. Un usuario o entidad publica su clave pública y mantiene en secreto su clave privada. Cualquier persona que tenga la clave pública de otro usuario puede cifrar información destinada a dicho usuario, pero no puede descifrarla. Sólo la persona que tiene la clave privada correspondiente puede descifrar la información.

La principal ventaja de la criptografía de clave pública es que permite que personas que no tienen ningún acuerdo de seguridad previo puedan intercambiar mensajes de forma segura. El emisor y el receptor no tienen que compartir las claves secretas a través de canales seguros; todas las transmisiones exigen sólo el conocimiento de las claves públicas, y las claves privadas nunca se transmiten ni se comparten.

En cuanto a la manera en que los algoritmos operan con los datos, los sistemas criptográficos se pueden clasificar en,

  1. Cifrado en bloque: operan con grupos que tienen un número concreto de bits, llamados bloques, utilizando una transformación invariable que depende de la clave. Se divide el mensaje en bloques y se cifra un bloque cada vez. Si el algoritmo de cifrado en bloque se considera seguro, también se considera protegido el texto cifrado resultante de un único bloque de datos. Sin embargo, el sistema no es seguro cuando se cifran varios mensajes con la misma clave, ya que bloques de mensajes idénticos dan bloque de texto cifrado también idénticos. Por lo tanto, un atacante podría detectar fácilmente repeticiones de bloque en el mensaje; en consecuencia, el uso directo de un cifrado de bloques (sin encadenamientos) es desaconsejable, y por ello se utilizan modos de operación diferentes para evitar este problema.
  2. Cifrados de flujo: convierten un símbolo del texto original en un símbolo de texto cifrado. Trabajan mediante la generación de una secuencia pseudoaleatoria que funciona como una cadena de claves criptográficas. Este flujo de claves es básicamente una secuencia de bits que se combina con el texto original para cifrar un símbolo cada vez, generando así el texto cifrado.

Durante el módulo se utilizará la siguiente terminología: