Présentation de XAES-256-GCM
- XAES-256-GCM est un algorithme de chiffrement authentifié (AEAD) utilisant une clé de 256 bits et un nonce de 192 bits
- Objectifs principaux :
- prendre en charge en toute sécurité des nonces générés aléatoirement
- conformité FIPS 140
- mise en œuvre facile dans les bibliothèques de chiffrement courantes
Objectifs de conception de XAES-256-GCM
- utilisation d’un grand nonce permettant une génération aléatoire sûre pour un nombre illimité de messages
- possibilité d’utilisation dans divers environnements grâce à la conformité FIPS 140
- mise en œuvre simple afin de réduire la charge pour les utilisateurs
Principe de fonctionnement de XAES-256-GCM
- utilisation d’une structure de nonce étendue basée sur AES-256-GCM
- calcul d’une clé dérivée à partir de la clé d’entrée et du nonce
- traitement du message avec trois appels à AES-256
Mise en œuvre et optimisation
- l’implémentation de référence en Go tient en moins de 100 lignes de code
- utilise uniquement
crypto/cipher et crypto/aes de la bibliothèque standard
- peut être décrit à l’aide de NIST SP 800-108r1 KDF et de NIST AES-256-GCM AEAD
Implémentations tierces et compatibilité
- des implémentations tierces existent pour .NET 8+, pyca/cryptography et l’API Web Cryptography
- impossible de modifier le nombre de rounds pour respecter la conformité FIPS 140
Alternatives et vecteurs de test
- il existe diverses alternatives, dont AES-GCM-SIV
- inclut des vecteurs de test pour les principaux chemins de code
Résumé
- XAES-256-GCM est conçu comme un AEAD sûr, conforme et interopérable
- il complète XChaCha20Poly1305 et AES-GCM-SIV
- espoir de le voir ajouté à la bibliothèque standard de Go
Avis de GN⁺
- l’usage d’un grand nonce par XAES-256-GCM pour renforcer la sécurité mérite l’attention
- la conformité FIPS 140 permet son utilisation dans divers environnements
- sa facilité d’implémentation dans des langages comme Go le rend utile aux développeurs
- des alternatives comme AES-GCM-SIV méritent aussi d’être prises en compte
- lors de l’adoption d’une nouvelle technologie, il faut examiner avec soin les performances et la compatibilité
1 commentaires
Commentaire Hacker News
Le design est très ingénieux : basé sur CMAC, il permet de dériver une clé avec AES-CBC lorsqu’on ne dispose pas de primitives de bas niveau
CryptoKeyapproprié prévu pour AES-CBC et pouvant être stocké dans IndexedDBLe travail de Filippo est excellent : il résout le problème qui impose de faire tourner la clé toutes les ~2^32 messages lorsqu’on utilise des nonces aléatoires
J’aurais aimé que cela existe il y a quelques années quand j’écrivais un système de fichiers chiffré
J’espère que cela sera utilisé pour une variante conforme FIPS de age[1] pour le chiffrement de fichiers d’archive
Question de non-cryptographe : pourquoi utiliser un nonce de 192 bits plutôt que 256 bits ?
(risque de collision de 2⁻³² à 2⁸⁰ messages)