Los algoritmos de clave simétrica son un método de criptografía en el que la misma clave (el mismo secreto compartido) se utiliza tanto para el cifrado como para el descifrado. El secreto puede generarse de forma aleatoria, derivarse de una contraseña mediante una función de derivación de claves (KDF), o establecerse mediante un procedimiento de intercambio de claves seguro como Diffie-Hellman. La seguridad del sistema depende de que esa clave permanezca secreta y de la calidad de los mecanismos de generación y almacenamiento de la clave.
Los algoritmos de clave simétrica son ampliamente usados porque, en general, son mucho más rápidos en los ordenadores que los algoritmos de clave pública. En la criptografía de clave pública (también llamada criptografía asimétrica) la clave de cifrado puede hacerse pública y todo el mundo puede cifrar mensajes para el propietario de la clave privada. Ese enfoque es muy útil para intercambiar claves o autenticar identidades, pero las operaciones asimétricas son costosas en tiempo de CPU. Por eso las aplicaciones prácticas usan un esquema híbrido: la criptografía asimétrica sirve para negociar una clave secreta y después los algoritmos de clave simétrica se encargan del cifrado de los datos por su eficiencia.
Tipos básicos: cifradores de flujo y de bloque
Existen dos tipos principales de algoritmos de clave simétrica: los cifrados de flujo y los cifrados de bloque.
- Cifradores de flujo: procesan los datos bit a bit o byte a byte, generando una secuencia pseudoaleatoria que se combina con el mensaje (por ejemplo mediante XOR). Son adecuados para transmitir datos en tiempo real y para tamaños arbitrarios. Ejemplos históricos incluyen RC4, aunque RC4 hoy se considera inseguro en la mayoría de usos.
- Cifradores de bloque: toman bloques fijos de bits y los cifran como unidades completas. Los bloques suelen ser de 64 o 128 bits; algoritmos modernos como el Advanced Encryption Standard (AES) usan bloques de 128 bits. Para cifrar mensajes más largos que un bloque se usan modos de operación (ver más adelante).
Ejemplos de algoritmos
Algunos cifrados simétricos populares y relevantes históricamente son: Twofish, Serpent, AES (también conocido como Rijndael, también conocido como Rijndael), Blowfish, CAST5, RC4, TDES (Triple DES) e IDEA. Algunos están estandarizados y se usan ampliamente (por ejemplo AES); otros han caído en desuso por debilidades, problemas de rendimiento o por razones de compatibilidad y normativa.
Modos de operación (por qué importan)
Un cifrador de bloque por sí solo sólo transforma bloques individuales; para cifrar mensajes más largos se usan modos de operación que definen cómo encadenar bloques y cómo emplear vectores de inicialización o contadores. Los modos habituales incluyen ECB, CBC, CFB, OFB, CTR, y modos autenticados como GCM o CCM. Es importante elegir el modo adecuado:
- ECB (Electronic Codebook): no es recomendable para datos repetitivos porque bloques iguales resultan en texto cifrado igual.
- CBC (Cipher Block Chaining): requiere un IV aleatorio y es ampliamente usado, pero vulnerable a ciertos ataques si no se valida el relleno (padding oracle).
- CTR y OFB/CFB: convierten un cifrador de bloque en cifrador de flujo; requieren que los nonces/IV no se repitan.
- GCM/CCM: proporcionan cifrado y autenticación (AEAD), protegiendo además contra manipulaciones del texto cifrado.
Vulnerabilidades y ataques
La seguridad real de un esquema simétrico no depende sólo del algoritmo matemático, sino también de su uso. A lo largo de la historia, varios métodos de criptoanálisis han explotado debilidades de diseño, implementación o uso incorrecto:
- Ataques de texto plano conocido: el atacante conoce parte del texto claro y lo utiliza para recuperar la clave o más texto claro.
- Ataques de texto plano elegido: el atacante puede obtener cifrados de textos escogidos y explotar la relación entre entrada y salida.
- Criptoanálisis diferencial y criptoanálisis lineal: técnicas matemáticas que analizan cómo pequeños cambios en la entrada afectan al cifrado, valiéndose de grandes cantidades de pares texto claro/texto cifrado para recuperar la clave.
- Fuerza bruta: ensayo de todas las claves posibles. La resistencia depende de la longitud de la clave (por ejemplo, claves de 128 bits son seguras frente a ataques de fuerza bruta con la tecnología actual).
- Reutilización de IV/nonce: en modos como CTR u OFB, reutilizar un nonce permite relaciones directas entre textos cifrados y puede revelar información. En RC4, reutilizar clave o flujos iniciales también fue una fuente de ataques.
- Padding oracle y errores de implementación: problemas en cómo se valida el relleno o se manejan errores pueden filtrar información y permitir recupero de texto claro.
- Ataques de canal lateral: obtención de la clave mediante análisis del tiempo de ejecución, consumo de energía, emisiones electromagnéticas, fallos inducidos, etc.
- Debilidad por tamaño de bloque: cifradores con bloques de 64 bits (p. ej. DES, Triple DES) sufren problemas prácticos de colisiones por la paradoja del cumpleaños en grandes volúmenes de datos (ej.: ataque Sweet32).
Buenas prácticas
- Usar algoritmos y modos modernos y estandarizados (p. ej. AES en modos AEAD como GCM o CCM) en lugar de esquemas obsoletos como RC4 o DES.
- Elegir longitudes de clave adecuadas: 128 bits suele ser suficiente para la mayoría de usos actuales; 256 bits se emplea cuando se desea margen adicional para resistencia futura.
- Generar claves y nonces/IVs con generadores de números aleatorios criptográficamente seguros. Nunca reutilizar IVs/nonce cuando el modo lo prohíbe.
- Derivar claves de contraseñas con funciones robustas (PBKDF2, Argon2, scrypt) y parámetros adecuados para evitar ataques por fuerza bruta.
- Implementar autenticación de los datos (MAC o usar AEAD) para detectar modificaciones y prevenir ataques de manipulación.
- Proteger las claves en reposo y en uso (almacenamiento seguro, uso de módulos HSM, protección contra fugas por side-channels).
- Actualizar y parchear bibliotecas criptográficas; preferir implementaciones bien auditadas y mantenidas.
Aplicaciones prácticas
La criptografía simétrica se utiliza para cifrar grandes volúmenes de datos con eficiencia: comunicaciones seguras (p. ej. la etapa simétrica en TLS después del intercambio de claves), cifrado de disco y archivos, VPNs, protocolos inalámbricos, almacenamiento en la nube y muchas aplicaciones de software que requieren confidencialidad y rendimiento.
En la historia también ha habido ataques que explotaban la simetría o debilidades concretas en diseños o implementaciones, por lo que los sistemas simétricos antiguos se consideraron menos seguros en ciertos contextos. Esos ataques incluyen los ya mencionados ataques de texto plano conocido, ataques de texto plano elegido, criptoanálisis diferencial y criptoanálisis lineal.
Otros términos usados para describir este tipo de cifrado son clave secreta, clave compartida, clave única y, a veces, cifrado de clave privada (este último no debe confundirse con la "clave privada" de la criptografía de clave pública). En la práctica moderna, la criptografía simétrica forma parte de sistemas híbridos donde se combinan lo mejor de la criptografía asimétrica y simétrica para lograr seguridad y rendimiento.

