PRINCIPIO
El cifrado de clave pública que utiliza certificados X.509 permite asegurar los intercambios de datos sin necesitar un secreto compartido previamente. El remitente utiliza la clave pública del destinatario (disponible en su certificado X.509) para cifrar un secreto temporal, que luego se utilizará para cifrar el contenido con un algoritmo simétrico de alto rendimiento.
DETALLES TÉCNICOS
El cifrado con certificado X.509 combina dos tipos de criptografía:
- Criptografía asimétrica (o de clave pública): utilizada para el intercambio seguro de la clave de sesión
- Criptografía simétrica: utilizada para el cifrado eficiente de datos
La aplicación ofrece dos algoritmos de cifrado simétrico para elegir:
- AES-GCM (Advanced Encryption Standard en modo Galois/Counter con AAD - Datos Adicionales Autenticados)
- ChaCha20-Poly1305 (Combinación del cifrado de flujo ChaCha20 con el autenticador Poly1305)
PROCESO DE CIFRADO
- El remitente recupera el certificado X.509 del destinatario que contiene su clave pública
- Se genera una clave simétrica aleatoria (clave de sesión)
- Esta clave de sesión se cifra con la clave pública del certificado X.509 del destinatario
- La clave de sesión se utiliza con el algoritmo elegido (AES-GCM o ChaCha20-Poly1305) para cifrar los datos
- El mensaje final contiene:
- La clave de sesión cifrada
- Los datos cifrados
- Información sobre el algoritmo utilizado
- Metadatos de autenticación
CARACTERÍSTICAS DE LOS ALGORITMOS SIMÉTRICOS
AES-GCM
- Utiliza el algoritmo AES con un tamaño de clave de 256 bits
- Modo GCM (Galois/Counter Mode) con AAD que garantiza tanto la confidencialidad como la autenticidad
- Requiere un vector de inicialización (IV) único para cada mensaje
- Estándar ampliamente adoptado y auditado
- Excelente rendimiento en procesadores con instrucciones AES-NI
ChaCha20-Poly1305
- Combina el cifrado de flujo ChaCha20 (256 bits) con el autenticador Poly1305
- Requiere un nonce único para cada mensaje
- Excelente rendimiento en dispositivos móviles y procesadores sin instrucciones AES-NI
- Adoptado en protocolos modernos como TLS 1.3
INDEPENDENCIA CRIPTOGRÁFICA
Los dos algoritmos (AES-GCM y ChaCha20-Poly1305) se basan en principios criptográficos diferentes:
- AES-GCM utiliza cifrado por bloques
- ChaCha20-Poly1305 utiliza cifrado por flujo
Esta independencia presenta una importante ventaja de seguridad: si se descubriera una vulnerabilidad en uno de los algoritmos, el otro normalmente no se vería afectado por la misma vulnerabilidad. Esto proporciona seguridad adicional a la aplicación, que puede cambiar de un algoritmo a otro si es necesario.