Cuando hablamos de criptografía aparecen muchos nombres que pueden parecer complicados: RSA, ECDSA, Diffie-Hellman, SHA-2, HMAC…
Pero la idea fundamental es bastante sencilla: son mecanismos matemáticos que permiten proteger información y comunicaciones.
El CCN (Centro Criptológico Nacional) dispone de información y criterios sobre algoritmos criptográficos utilizados en sistemas que necesitan garantizar la seguridad de la información.
En este artículo vamos a ver algunos de estos algoritmos de una forma muy sencilla.
🔐 ¿Para qué sirve la criptografía?
Imaginemos que queremos enviar un mensaje:
«La contraseña es 123456»
No queremos que cualquier persona que intercepte la comunicación pueda leerlo.
La criptografía nos proporciona diferentes mecanismos para conseguir objetivos como:
- 🔒 Cifrar información para que nadie pueda leerla.
- ✍️ Firmar digitalmente documentos y mensajes.
- 🔑 Intercambiar claves de forma segura.
- 🔎 Comprobar que una información no ha sido modificada.
- 🛡️ Verificar quién ha generado un mensaje o documento.
Y aquí aparece una primera idea importante:
No existe un único algoritmo criptográfico que haga todo.
Cada algoritmo tiene una función determinada.
🔑 Algoritmos asimétricos
Los algoritmos asimétricos utilizan un concepto muy interesante:
cada usuario dispone de dos claves:
- 🔓 Una clave pública que se puede compartir.
- 🔐 Una clave privada que debe mantenerse secreta.
Podemos imaginarlo como un buzón.
Cualquiera puede introducir una carta en nuestro buzón utilizando la parte pública, pero solamente nosotros tenemos la llave necesaria para abrirlo.
Entre los algoritmos asimétricos encontramos:
- DSA
- ECDSA
- RSA
- ECIES
✍️ DSA
DSA significa:
Digital Signature Algorithm
Es un algoritmo diseñado para generar firmas digitales.
Una firma digital permite comprobar principalmente que:
- El mensaje procede de quien dice haberlo firmado.
- El mensaje no ha sido modificado después de firmarse.
Por ejemplo, si recibimos un documento firmado digitalmente, podemos comprobar su firma.
Es parecido a una firma manuscrita, pero utilizando técnicas criptográficas.
✍️ ECDSA
ECDSA significa:
Elliptic Curve Digital Signature Algorithm
Es otro algoritmo utilizado para generar firmas digitales, pero utiliza matemáticas basadas en curvas elípticas.
La ventaja de las curvas elípticas es que permiten conseguir determinados niveles de seguridad utilizando claves relativamente pequeñas.
ECDSA aparece, por ejemplo, en diferentes sistemas y protocolos criptográficos.
En resumen:
ECDSA = firmas digitales utilizando criptografía de curva elíptica.
🔐 RSA
Probablemente uno de los nombres más conocidos de la criptografía.
RSA puede utilizarse para diferentes operaciones criptográficas, entre ellas:
- Cifrado.
- Firmas digitales.
- Protección de claves.
Su funcionamiento se basa en propiedades matemáticas relacionadas con números primos y factorización.
De forma muy simplificada:
clave pública → se puede compartir
clave privada → debe mantenerse secreta
Una de las características que hizo famoso a RSA es precisamente la dificultad computacional de determinados problemas matemáticos utilizados en su construcción.
🔐 ECIES
ECIES significa:
Elliptic Curve Integrated Encryption Scheme
Es un esquema de cifrado que utiliza criptografía de curva elíptica.
Su objetivo principal es permitir cifrar información utilizando criptografía asimétrica basada en curvas elípticas.
Podemos resumirlo así:
ECIES = cifrado basado en criptografía de curva elíptica.
🔄 Intercambio de claves
Ahora llegamos a una categoría diferente.
Supongamos que dos ordenadores quieren comunicarse de forma segura.
Necesitan utilizar una clave secreta para proteger posteriormente la comunicación.
Pero aparece un problema:
¿Cómo pueden ponerse de acuerdo sobre una clave secreta si están comunicándose a través de una red que podría estar siendo vigilada?
Para solucionar este problema existen algoritmos de intercambio o acuerdo de claves.
Entre ellos encontramos:
- DH
- MQV
- ECDH
- ECMQV
🔄 Diffie-Hellman (DH)
DH significa:
Diffie-Hellman Key Agreement
Es uno de los mecanismos clásicos para establecer una clave compartida.
Imaginemos que:
- Ana tiene unos datos secretos.
- Pedro tiene otros datos secretos.
- Ambos intercambian determinada información públicamente.
- Gracias a las matemáticas utilizadas por Diffie-Hellman, ambos pueden terminar obteniendo la misma clave secreta.
Lo importante es que la clave secreta no tiene que viajar directamente por la red.
Una explicación muy simplificada sería:
Ana + información pública + secreto de Ana → 🔑
Pedro + información pública + secreto de Pedro → 🔑
Y ambos terminan obteniendo una clave compartida.
🔄 MQV
MQV significa:
Menezes-Qu-Vanstone Key Agreement
Es otro mecanismo para realizar un acuerdo de claves criptográficas.
Su nombre procede de sus investigadores:
- Alfred Menezes
- Minghua Qu
- Scott Vanstone
Su objetivo es permitir que dos partes puedan establecer una clave compartida utilizando criptografía de clave pública.
🔄 ECDH
ECDH significa:
Elliptic Curve Diffie-Hellman
Podemos verlo como una variante de Diffie-Hellman que utiliza curvas elípticas.
Por tanto:
DH → Diffie-Hellman
ECDH → Diffie-Hellman utilizando curvas elípticas
La criptografía de curva elíptica permite trabajar con tamaños de clave más pequeños para determinados niveles de seguridad.
ECDH es utilizado ampliamente en protocolos y sistemas modernos.
🔄 ECMQV
ECMQV significa:
Elliptic Curve Menezes-Qu-Vanstone
Es la versión basada en curvas elípticas del mecanismo MQV.
Su finalidad es, nuevamente, permitir un acuerdo seguro de claves.
Podemos verlo de esta manera:
MQV → acuerdo de claves
ECMQV → acuerdo de claves utilizando curvas elípticas
#️⃣ Funciones resumen o Hash
Aquí cambia completamente el concepto.
Una función hash no funciona como un cifrado tradicional.
Una función hash recibe una información y genera un valor de longitud determinada.
Por ejemplo:
Documento
↓
SHA-2
↓
"8f4a...92bc"
Ese resultado se conoce normalmente como hash, resumen o digest.
Una característica importante es que, en condiciones normales, no podemos coger el hash y recuperar directamente el documento original.
#️⃣ SHA-2
SHA-2 significa:
Secure Hash Algorithm 2
Es una familia de funciones hash.
Entre sus variantes encontramos, por ejemplo:
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Uno de los más conocidos es SHA-256.
Por ejemplo:
Hola
↓
SHA-256
↓
2cf24dba5fb0a30e...
Si cambiamos una sola letra del mensaje:
Hola
por:
hola
el resultado será completamente diferente.
Por eso los hashes son muy útiles para detectar modificaciones.
🛡️ HMAC
HMAC significa:
Hash-based Message Authentication Code
Es un mecanismo que combina:
una función hash + una clave secreta
Su finalidad es permitir comprobar que un mensaje:
- procede de alguien que conoce la clave secreta;
- no ha sido modificado.
Podemos imaginarlo así:
Mensaje + clave secreta
↓
HMAC
↓
Código HMAC
El receptor puede realizar el mismo cálculo y comprobar si el resultado coincide.
🧠 Resumen rápido
La forma más sencilla de recordar estos algoritmos es clasificarlos según su función.
| Algoritmo | ¿Para qué sirve? |
|---|---|
| DSA | Firmas digitales |
| ECDSA | Firmas digitales con curvas elípticas |
| RSA | Cifrado y firmas digitales |
| ECIES | Cifrado con curvas elípticas |
| DH | Intercambio/acuerdo de claves |
| MQV | Intercambio/acuerdo de claves |
| ECDH | Acuerdo de claves con curvas elípticas |
| ECMQV | Acuerdo de claves con curvas elípticas |
| SHA-2 | Funciones hash |
| HMAC | Autenticación e integridad mediante hash + clave |
🔐 Una forma muy sencilla de entenderlo
Podemos imaginar una comunicación entre dos personas.
1️⃣ Primero necesitan ponerse de acuerdo sobre una clave
Utilizan mecanismos como:
DH / ECDH / MQV / ECMQV
↓
🔑 Obtienen una clave compartida
2️⃣ Quieren proteger información
Pueden utilizar mecanismos criptográficos como:
RSA / ECIES
↓
🔒 Información protegida
3️⃣ Quieren demostrar quién ha firmado un documento
Pueden utilizar:
DSA / ECDSA / RSA
↓
✍️ Firma digital
4️⃣ Quieren comprobar que un archivo no ha cambiado
Pueden utilizar:
SHA-2
↓
#️⃣ Hash del archivo
Si el archivo cambia, su hash también cambiará.
5️⃣ Quieren comprobar la autenticidad de un mensaje
Pueden utilizar:
HMAC
↓
🛡️ Mensaje autenticado
🎯 La idea fundamental
No debemos aprendernos estos nombres simplemente como una lista.
Es mucho más fácil recordar qué problema resuelve cada uno:
🔐 RSA / ECIES → proteger información
✍️ DSA / ECDSA → firmar
🔑 DH / ECDH / MQV / ECMQV → acordar claves
#️⃣ SHA-2 → obtener una huella digital de los datos
🛡️ HMAC → comprobar autenticidad e integridad utilizando una clave
Y esta clasificación es probablemente la forma más sencilla de empezar a entender la criptografía moderna.
La criptografía no consiste solamente en «cifrar». También permite identificar, firmar, intercambiar claves y detectar modificaciones en la información.