Introducción a XAES-256-GCM
- XAES-256-GCM es un algoritmo de cifrado autenticado (AEAD) que usa una clave de 256 bits y un nonce de 192 bits
- Objetivos principales:
- admitir de forma segura nonces generados aleatoriamente
- cumplimiento de FIPS 140
- implementación sencilla en bibliotecas de cifrado comunes
Objetivos de diseño de XAES-256-GCM
- Uso de un nonce grande para poder generarlo aleatoriamente de forma segura para una cantidad ilimitada de mensajes
- Posibilidad de uso en diversos entornos gracias al cumplimiento de FIPS 140
- Reducción de la carga para el usuario mediante una implementación simple
Principio de funcionamiento de XAES-256-GCM
- Usa una estructura de nonce extendido basada en AES-256-GCM
- Calcula una clave derivada usando la clave de entrada y el nonce
- Procesa el mensaje con tres llamadas a AES-256
Implementación y optimización
- La implementación de referencia en Go consta de menos de 100 líneas de código
- Usa únicamente
crypto/cipher y crypto/aes de la biblioteca estándar
- Puede describirse usando NIST SP 800-108r1 KDF y NIST AES-256-GCM AEAD
Implementaciones de terceros y compatibilidad
- Existen implementaciones de terceros en .NET 8+, pyca/cryptography y Web Cryptography API
- No es posible cambiar el número de rondas para mantener el cumplimiento de FIPS 140
Alternativas y vectores de prueba
- Existen varias alternativas, como AES-GCM-SIV
- Incluye vectores de prueba para las rutas de código principales
Resumen
- XAES-256-GCM está diseñado como un AEAD seguro, conforme e interoperable
- Cumple un papel complementario a XChaCha20Poly1305 y AES-GCM-SIV
- Se espera que pueda añadirse a la biblioteca estándar de Go
Opinión de GN⁺
- Destaca el uso de un nonce grande para mejorar la seguridad
- Puede utilizarse en diversos entornos gracias al cumplimiento de FIPS 140
- Su implementación sencilla en lenguajes como Go lo hace útil para desarrolladores
- También vale la pena considerar alternativas como AES-GCM-SIV
- Al adoptar una nueva tecnología, conviene evaluar cuidadosamente el rendimiento y la compatibilidad
1 comentarios
Comentarios de Hacker News
El diseño es muy ingenioso: basado en CMAC, puede derivar la clave usando AES-CBC cuando no hay primitivas de bajo nivel disponibles
El trabajo de Filippo es excelente: resuelve el problema de tener que rotar la clave cada ~2^32 mensajes cuando se usan nonces aleatorios
Ojalá esto hubiera existido hace unos años cuando escribí un sistema de archivos cifrado
Espero que esto se use en una variante compatible con FIPS de age[1] para cifrado de archivos de archivo
Pregunta de un no criptógrafo: me intriga por qué usar un nonce de 192 bits y no de 256 bits
(riesgo de colisión de 2⁻³² con 2⁸⁰ mensajes)