En informática y criptografía, un algoritmo criptográfico es un procedimiento matemático definido que se utiliza para transformar información o generar valores criptográficos con el fin de proporcionar propiedades de seguridad, como la confidencialidad, la integridad, la autenticación, el establecimiento de claves o la firma digital.

Los algoritmos criptográficos suelen operar sobre datos utilizando una o más claves criptográficas, aunque algunas primitivas, como las funciones hash, no requieren una clave secreta. La seguridad de un sistema criptográfico no depende únicamente del algoritmo empleado, sino también del tamaño y generación de las claves, de los parámetros utilizados, de la gestión de claves, de la generación de números aleatorios y de su correcta implementación.

Antecedentes de codificación de información

miniaturadeimagen|Quipu incaico conservado en el Museo Larco de Lima. Los quipus utilizaban cuerdas, colores y distintos tipos y posiciones de nudos para representar y registrar información. Constituyen un ejemplo histórico de codificación y almacenamiento estructurado de información, aunque no un algoritmo criptográfico en el sentido moderno.

Mucho antes del desarrollo de la criptografía computacional existieron sistemas estructurados para representar y transmitir información. Entre ellos se encuentran los quipus utilizados en los Andes y, de manera especialmente extensa, por el Imperio incaico. Los quipus almacenaban información mediante características físicas como el color de las cuerdas, su disposición, dirección y diferentes tipos de nudos.

Estos sistemas pueden estudiarse como antecedentes históricos de la codificación y representación de información. Sin embargo, no deben confundirse con los algoritmos criptográficos modernos, que se definen mediante operaciones matemáticas y modelos formales de seguridad.

Clasificación

Los algoritmos y primitivas criptográficas pueden clasificarse según la función que realizan.

Criptografía simétrica

En la criptografía simétrica las partes utilizan la misma clave secreta —o claves directamente relacionadas— para cifrar y descifrar información.

Los cifradores simétricos se dividen principalmente en:

Cifradores de bloque, que procesan bloques de datos de tamaño fijo. Ejemplos: ** AES ** DES ** 3DES ** IDEA ** Blowfish

Cifradores de flujo, que generan una secuencia criptográfica que se combina con el mensaje. Ejemplos: ** RC4 ** ChaCha20

Algoritmos históricos como DES y RC4 continúan siendo importantes para el estudio de la criptografía, pero sus niveles de seguridad ya no son adecuados para numerosos sistemas modernos. En particular, el uso de RC4 fue prohibido en TLS por el IETF.

Cifrado autenticado

Los sistemas modernos frecuentemente combinan confidencialidad e integridad mediante esquemas de cifrado autenticado. Los modos conocidos como AEAD permiten cifrar el mensaje y, al mismo tiempo, verificar que no haya sido modificado.

Entre los esquemas ampliamente utilizados se encuentran:

AES-GCM ChaCha20-Poly1305

Criptografía asimétrica

La criptografía asimétrica utiliza normalmente un par formado por una clave pública y una clave privada. Dependiendo del algoritmo, puede utilizarse para cifrado, establecimiento de claves o firmas digitales.

Cifrado de clave pública

RSA ElGamal

Establecimiento e intercambio de claves

Estos algoritmos permiten que dos participantes establezcan un secreto compartido sobre un canal no seguro.

Diffie-Hellman ECDH Mecanismos de encapsulación de claves (KEM)

Diffie-Hellman, aunque habitualmente se incluye dentro de la criptografía de clave pública, no es en sí mismo un algoritmo de cifrado, sino un protocolo para establecer un secreto compartido.

Firmas digitales

Los algoritmos de firma digital permiten verificar el origen y la integridad de un mensaje mediante una clave pública.

Entre ellos se encuentran:

RSA DSA ECDSA EdDSA

DSA pertenece a esta categoría y no a las funciones hash.

Funciones hash criptográficas

Una función hash criptográfica transforma datos de longitud arbitraria en un valor de longitud normalmente fija denominado hash, digest o resumen criptográfico.

A diferencia del cifrado, una función hash no está diseñada para que la operación pueda invertirse posteriormente. Entre sus propiedades de seguridad se encuentran la resistencia a preimagen, la resistencia a segunda preimagen y la resistencia a colisiones.

Entre las funciones hash conocidas se encuentran:

MD5 SHA-1 SHA-2 ** SHA-256 ** SHA-512 SHA-3 BLAKE2 BLAKE3

MD5 y SHA-1 tienen importancia histórica, pero presentan debilidades criptográficas frente a ataques de colisión. Para nuevas aplicaciones, organismos de normalización como el NIST recomiendan familias más modernas como SHA-2 y SHA-3.

Códigos de autenticación de mensajes

Un código de autenticación de mensajes o MAC utiliza una clave secreta para comprobar la integridad y autenticidad de un mensaje.

Ejemplos:

HMAC CMAC Poly1305

A diferencia de una firma digital, un MAC generalmente utiliza una clave secreta compartida entre las partes.

Derivación de claves

Las funciones de derivación de claves (KDF) permiten obtener una o más claves criptográficas a partir de otro secreto, una contraseña u otro material criptográfico.

Algunos ejemplos son:

HKDF PBKDF2 scrypt Argon2

Estas funciones pueden incorporar parámetros como una sal criptográfica, un número de iteraciones o requisitos de memoria para aumentar el coste de ataques por fuerza bruta.

Criptografía poscuántica

La criptografía poscuántica estudia algoritmos diseñados para mantener propiedades de seguridad frente a adversarios que dispongan de computadores cuánticos de gran escala.

En agosto de 2024, el NIST publicó sus primeros estándares principales de criptografía poscuántica:

ML-KEM: mecanismo de encapsulación de claves basado en retículas, derivado de CRYSTALS-Kyber. ML-DSA: algoritmo de firma digital basado en retículas, derivado de CRYSTALS-Dilithium. SLH-DSA: esquema de firma digital basado en funciones hash, derivado de SPHINCS+.

Los mecanismos de encapsulación de claves como ML-KEM no cifran directamente grandes cantidades de información; se utilizan principalmente para establecer una clave secreta que posteriormente puede emplearse con un algoritmo de cifrado simétrico.

Propiedades de seguridad

Dependiendo de su función, el diseño de un algoritmo criptográfico puede buscar una o varias propiedades:

Confidencialidad: impedir que terceros puedan conocer el contenido de la información. Integridad: detectar modificaciones no autorizadas. Autenticidad: permitir comprobar el origen de la información. No repudio: proporcionar evidencia criptográfica sobre la autoría de determinadas operaciones, principalmente mediante firmas digitales. Resistencia a colisiones: dificultar la búsqueda de dos entradas diferentes que produzcan el mismo resumen criptográfico. Resistencia a preimagen: dificultar la recuperación de una entrada que produzca un hash determinado. Secreto hacia adelante (forward secrecy): en determinados protocolos, impedir que la futura revelación de claves de largo plazo permita descifrar sesiones anteriores.

Consideraciones de seguridad

La existencia de un algoritmo criptográfico seguro no garantiza por sí sola la seguridad de un sistema. También son relevantes factores como:

el tamaño y la generación de las claves; la calidad de la aleatoriedad; el uso correcto de vectores de inicialización y nonces; el protocolo en el que se emplea el algoritmo; la protección de las claves privadas; la resistencia de la implementación frente a ataques de canal lateral; la actualización o sustitución de algoritmos cuando aparecen nuevos ataques criptográficos.

Por este motivo, los sistemas de seguridad modernos suelen construirse combinando distintas primitivas criptográficas en protocolos diseñados y analizados específicamente para una aplicación.

Véase también

Criptografía Criptoanálisis Criptografía simétrica Criptografía asimétrica Criptografía de curva elíptica Criptografía poscuántica Función hash criptográfica Firma digital Código de autenticación de mensajes Generador de números pseudoaleatorios criptográficamente seguro Protocolo criptográfico

Referencias