Tema 21.1 Integridad y autenticidad

La criptografía, un arte milenario transformado por la era digital, es la ciencia de proteger la información mediante técnicas de codificación y descifrado. Desde los jeroglíficos egipcios hasta los sistemas de seguridad en línea, la criptografía ha evolucionado para salvaguardar la confidencialidad, autenticidad e integridad de los datos en un mundo interconectado. Este campo fascinante no solo abarca la codificación de mensajes, sino también la creación de algoritmos y sistemas sofisticados que desempeñan un papel crucial en la seguridad de la información en la era moderna.
La Criptografía es la técnica que transforma mensajes en otros mensajes cuyo contenido no se puede conocer.
Otra rama importante es el criptoanálisis, encargada de buscar vulnerabilidades en los sistemas criptográficos, y acceder a la información secreta sin disponer de la o las claves de cifrado.
Los mecanismos criptográficos se usan prácticamente en todas nuestras comunicaciones en Internet. Si accedemos a un sitio web, si leemos correos electrónicos, si enviamos un mensaje de Telegram o WhatsApp, si vemos una película en el tele, si hacemos una videoconferencia, etc.
Antes de seguir aclaremos la diferencia entre seguridad informática y seguridad de la información:
- Seguridad de la información: métodos y proceso destinados a proteger los archivos de información en general, no necesariamente sobre medio informático.
- Seguridad informática: métodos y procedimientos técnicos para lograr la confidencialidad, disponibilidad e integridad de la información. Si se trata de comunicaciones seguras en red, puede añadirse otra propiedad: la autenticación de la información, y su característica asociada, el no repudio (defino estos términos más adelante en este artículo).
Esta definición de seguridad informática se le suman las prácticas de prevención de ataques maliciosos a la infraestructura en cuanto a estaciones de trabajo, servidores, dispositivos activos, redes, dispositivos móviles, sistemas de almacenamiento, etc.
Creo que una buena forma de entender todas las propiedades que hacen a una comunicación segura es mediante un esquema denominado criptosistema.
Un criptosistema incorpora todos los elementos de un sistema criptográfico necesarios para lograr la seguridad en una comunicación. Supongamos el esquema de un criptosistema como el de la siguiente figura. Más adelante hablaremos sobre claves y algoritmos. Por el momento me interesa que nos centremos en la comunicación.

Aquí tenemos un emisor, Alice, que envía un mensaje a un receptor, Bob. El atacante, Eva en este caso, intercepta la comunicación entre Alice y Bob, e intenta vulnerarla.
Los mecanismos de cifrado y descifrado, y sus claves, permiten transformar la información sin cifrar (texto plano) en información cifrada (texto cifrado), implementando mecanismos que hagan que la comunicación sea segura.
Integridad y autenticidad
Protegiendo las Comunicaciones
Para garantizar comunicaciones seguras, las organizaciones enfocan sus esfuerzos en el tráfico interno, pero en mayor medida en el tráfico externo. Las comunicaciones seguras se consiguen garantizando cuatro elementos básicos en lo referente a los datos:
| Función | Método | Ejemplo | |
| Integridad | Evitar alteraciones en los datos cuando son enviados | Algoritmos de seguridad HASH SHA-2 y SHA-3. También MD5, pero es vulnerable. | Es como un sello que pones en una carta para asegurarte de que nadie la abrió antes de que llegue. Usamos algoritmos especiales para esto, como cuando usamos un candado para cerrar una caja y asegurarnos de que nadie la abra sin la llave. |
| Autentificación | Autenticar tanto al mensaje como al remitente. | Algoritmo HMAC | Es como cuando recibes una carta y sabes que es de tu mejor amigo porque reconoces su letra. Usamos trucos matemáticos para estar seguros de que la persona que envía el mensaje es realmente quien dice ser. |
| Confidencialidad | Garantizar que solo usuarios autorizados puedan interpretar el mensaje. | Algoritmos de encriptación simétricos y asimétricos. | A veces, queremos enviar un mensaje privado que solo la persona que debe recibirlo pueda entender. Lo mezclamos con trucos matemáticos para que, si alguien más lo ve, sea muy difícil de entender. |
| No negociación | Garantizar que el remitente no pueda negar ni refutar la validez de un mensaje enviado | Firmas digitales. | Imagina que recibes un regalo y luego la persona que te lo dio dice que no lo hizo. Usamos métodos para que eso no pase con los mensajes. Es como si cada regalo tuviera una firma secreta que solo la persona que lo envió conoce. |
La criptografía puede usarse casi en cualquier lugar donde haya comunicación de datos. De hecho, estamos yendo hacia un mundo donde toda la comunicación se encriptará.
Funciones del Hash Criptográfico
Los hash criptográficos, se utilizan para garantizar la integridad y la autentificación de datos o entidades. Estos están basados en una función matemática unidireccional, que resulta en una encriptación sencilla y en una difícil desencriptación.

Por ejemplo: el café molido es una buena analogía de una función unidireccional, es fácil moler los granos de café, pero es casi imposible volver a unir todas las partes minúsculas para reconstruir los granos originales
Una función hash (1) toma un bloque variable de datos binarios (2), llamado “mensaje”, y origina una representación condensada de longitud fija (3), denominada hash.
El hash resultante también se denomina síntesis del mensaje, síntesis o huella digital.
Con las funciones de hash:
- Es imposible que dos conjuntos diferentes de datos tengan el mismo resultado de hash.
- Si se cambian o modifican los datos, el valor hash también lo hará.
- De aquí surge el concepto de “huella dactilar digital”, que detecta:
- Archivos de datos duplicados.
- Cambios en las versiones de archivos.
- Protege lo datos frente a cambios accidentales o intencionales, y del daño accidental.
Funcionamiento del Hash criptográfico
Como se aprecia en la siguiente imagen, se emplea la ecuación h= H(x) para poder explicar el funcionamiento del algoritmo hash. La función de hash (H) toma un valor de entrada (x) y arroja una cadena de tamaño fijo con valor de hash (h).
Propiedades que debe presentar una función hash criptográfica:
- Longitud: entrada variable, salida fija.
- H(x):fácil de calcular, independientemente de la entrada (x). Es unidireccional e irreversible. Entradas diferentes producen salidas diferentes.
En la siguiente imagen podemos ver como el mensaje, cuando se envía, se encripta mediante el algoritmo hash. Cuando llega al remitente, este elimina el hash y vuelve a codificar el mensaje con la misma función hash. Si el código resultante es diferente, es que no ha sido posible garantizar la integridad del mensaje en el envío.

- El dispositivo de envío ingresa el mensaje en un algoritmo hash y calcula su hash de longitud fija (4ehiDx67NMop9).
- Este hash se adjunta al mensaje y se envía al receptor. Tanto el mensaje como el hash se transmiten en texto sin formato.
- El dispositivo receptor elimina el hash del mensaje e introduce el mensaje en el mismo algoritmo
- Si el hash calculado es igual al que se adjunta al mensaje: El mensaje no se modificó durante su recorrido.
- Si el hash calculado es diferente al que se adjunta al mensaje: No es posible garantizar la integridad del mensaje.
MD5 y SHA
Existen tres funciones hash muy conocidas:
| Hash | Desarrollador | Longitud en bits/ Tamaño del digest | Uso |
| MD5 | Ron Rivest | 128 | Obsoleto |
| SHA-1 | Agencia Nacional de Seguridad de los EEUU (NSA) | 160 | Obsoleto |
| SHA-2 | NSA | 224, 256, 384 y 512 | SHA-224 desaconsejado |
| SHA-3 | Instituto Nacional de Estándares y Tecnología (NITS) | 224, 256, 384 y 512 | El más moderno y eficiente |
- Hash se puede utilizar para detectar modificaciones accidentales.
- No brinda protección contra cambios deliberados hechos por un agente de amenaza.
- No existe información de identificación única del emisor en el procedimiento de hash.
- Cualquier persona puede calcular un hash para cualesquiera sean los datos (siempre y cuando tengan la función de hash correcta).
- Por ejemplo, cuando un mensaje pasa por la red, un atacante potencial puede interceptarlo, cambiarlo, o recalcular el hash y añadirlo al mensaje.
- El dispositivo receptor solo validará el hash que esté añadido.
- Hash es vulnerable a los ataques man-in-the-middle (ataque de intermediario) y no proporciona seguridad a los datos transmitidos.Por ello, es necesario añadir la autentificación en el origen.
Autenticación de origen
El hash garantiza la confidencialidad, mientras que la autentificación del origen garantiza la autenticidad y la integridad del mensaje. Para ello, se usa un código hash con clave (HMAC), que añade una clave secreta adicional. HMAC se utiliza, incluso, en sistemas como SSL, IPSec y SSH.
Así, solo el emisor y el receptor deben conocer la clave secreta, para que solo ellos tengan calcular la función HMAC, evitando de esta forma los ataques man-in-the-middle. De esta forma, al utilizar la clave secreta en la codificación, ambos obtendrán un valor hash autenticado.
Veamos un ejemplo en el que se crea y verifica un valor HMAC:
1. Algoritmos de hashing de HMC: Como se muestra en la figura, un HMAC se calcula utilizando cualquier algoritmo criptográfico que combine una función hash criptográfica con una clave secreta. Las funciones de hash son la base del mecanismo de protección de HMAC.
Solo el emisor y el receptor conocen la clave secreta y el resultado de la función de hash ahora depende de los datos de entrada y la clave secreta. Solo las personas que tienen acceso a esa clave secreta pueden calcular la síntesis de una función de HMAC. Esta característica derrota los ataques man-in-the-middle y proporciona autenticación del origen de los datos.
Si las dos partes comparten una clave secreta y utilizan funciones HMAC para la autenticación, una síntesis HMAC construida correctamente de un mensaje que ha recibido un tercero indica que la otra parte fue la que originó el mensaje. Esto se debe a que la otra parte posee la clave secreta.
2.Creando un valor HMAC: Como se ve en la figura, el dispositivo emisor introduce datos (como el pago de Terry Smith de $100 y la clave secreta) en el algoritmo de hash y calcula la síntesis de HMAC de longitud fija. Luego, esta síntesis autenticada se adjunta al mensaje y se envía al receptor.
3.Verificando un valor HMAC: En la figura, el dispositivo receptor elimina la síntesis del mensaje y utiliza el mensaje de texto plano con su clave secreta como valor de entrada para la misma función de hash.
Si la síntesis que calcula el dispositivo receptor es igual a la síntesis que se envió, el mensaje no se modificó. Adicionalmente, el origen del mensaje se autentifica porque solamente el emisor posee una copia de la clave secreta compartida. La función de HMAC comprobó la autenticidad del mensaje.
4.Ejemplo de HMAC en Cisco router: La figura muestra cómo las HMAC son usadas por los routers Cisco que están configurados para usar la Ruta Abierta de Acceso mas Corto (Open Shortest Path First OSPF).
R1 esta envíando una Actualización de Estado de Enlace (LSU, siglas en inglés) sobre una ruta hacia la red 10.2.0.0/16:
- R1 calcula el valor de hash mediante el mensaje de LSU y la clave secreta.
- El valor de hash que resulta se envía con la LSU al R2.
- R2 calcula el valor de hash mediante la LSU y su clave secreta. R2 acepta la actualización si los valores de hash coinciden. Si no coinciden, R2 descarta la actualización.
| PROCESO AUTENTICACIÓN CON HMAC | ||
| PUNTO | DESCRIPCIÓN | |
| Algoritmo de Hashing de HMAC | Función | Combina función hash con clave secreta. |
| Secreto | Solo emisor y receptor conocen la clave. | |
| Autenticación | Derrota ataques man-in-the-middle. | |
| Síntesis HMAC | Solo quienes tienen la clave pueden calcularla. | |
| Compartición | La clave compartida autentica el origen del mensaje. | |
| Creación valor para HMAC | El emisor introduce datos en el algoritmo de hash junto con la clave secreta. | |
| Calcula la síntesis de HMAC de longitud fija. | ||
| La síntesis autenticada se adjunta al mensaje y se envía al receptor. | ||
| Verificación valor para HMAC | El receptor utiliza la clave secreta y el mensaje de texto plano como entrada para la función de hash. | |
| Verifica la igualdad entre la síntesis calculada y la síntesis recibida. | ||
| Si coinciden, el mensaje no fue modificado, y el origen está autenticado. | ||
| Ejemplo HMAC en Router Cisco | R1 calcula el valor de hash usando el mensaje LSU y la clave secreta. | |
| El valor de hash se envía con la LSU a R2. | ||
| R2 calcula el valor de hash usando la LSU y su clave secreta. | ||
| R2 acepta la actualización si los valores de hash coinciden; de lo contrario, descarta la actualización. | ||
Antes de realizar la práctica, necesitamos descargar la máquina virtual del punto 1.1.5 Práctica de laboratorio: Instalar las máquinas virtuales
Instalación en Windows
En esta práctica de laboratorio, es necesario instalar VirtualBox en sus computadoras personales. Luego, es necesario descargar e instalar la máquina virtual (VM) de CyberOps Workstation.
Instalación en MAC
En esta práctica de laboratorio, es necesario instalar VirtualBox en sus computadoras personales. Luego, es necesario descargar e instalar la máquina virtual (VM) de CyberOps Workstation.
Descargar de este enlace
Práctica de laboratorio: Convertir Elementos en Hashes
En esta práctica de laboratorio cumpliremos los siguientes objetivos:
- Crear hashes con OpenSSL
- Verificando Hashes





