Cryptographie
Algorithme de chiffrement authentifié avec données associées (AEAD) qui associe le chiffrement par flot ChaCha20 et l'authentificateur Poly1305, standardisé dans la RFC 8439. Il chiffre les données et produit une étiquette de 128 bits qui signale la moindre modification du message.
Deux pièces, une clé : ChaCha20 génère un flux pseudo-aléatoire à partir d'une clé de 256 bits, d'un nonce de 96 bits et d'un compteur de blocs, puis le combine au message par XOR. Le premier bloc de ce flux sert de clé à usage unique à Poly1305, qui calcule l'étiquette sur les données associées et sur le chiffré.
Rapide sans matériel dédié : L'algorithme n'utilise que des additions, des rotations et des XOR sur des mots de 32 bits : aucune table, donc aucune fuite par le cache, et de bonnes performances sur les processeurs dépourvus d'instructions AES. On le trouve donc dans TLS 1.3, WireGuard et OpenSSH.
Le nonce, jamais deux fois : Réutiliser un même couple clé et nonce expose le XOR de deux messages clairs et permet de forger des étiquettes. Tirer le nonce de 96 bits au hasard reste raisonnable jusqu'à environ 2^32 messages par clé. Au-delà, le paradoxe des anniversaires se charge de la démonstration, avec la discrétion habituelle des défauts crypto qui ne font aucun bruit avant d'avoir fait beaucoup de dégâts. XChaCha20-Poly1305 et son nonce de 192 bits lèvent cette contrainte.
Ce qui arrive si on s'en passe
Sans ChaCha20-Poly1305 ni AEAD équivalent, deux protections disparaissent. La première est la confidentialité : les données circulent ou sont stockées en clair, lisibles par quiconque accède au canal ou au support. La seconde est l'intégrité. ChaCha20 seul, sans l'étiquette Poly1305, reste malléable, car le chiffré n'est qu'un XOR entre le message et le flot de clé. Inverser un bit du chiffré inverse le même bit du clair. Un attaquant qui connaît la structure du message peut donc modifier un champ ou un montant sans connaître la clé. Le destinataire déchiffre alors un contenu altéré sans aucun signal d'alerte. Les données associées (en-têtes, numéros de séquence) ne sont plus liées au chiffré : elles peuvent être modifiées ou réutilisées pour un rejeu sans que rien ne le révèle, puisque aucune étiquette n'est vérifiée.
Explication de la marmotte
Imagine que tu envoies une lettre secrète à un ami. Il faut deux choses : que personne ne puisse la lire, et que personne ne puisse la modifier en route. Cette méthode fait les deux d'un coup. D'abord, elle mélange chaque lettre de ton message avec une longue suite de lettres tirées au hasard, que seul ton ami sait reproduire grâce à un secret que vous partagez. Ensuite, elle colle sur l'enveloppe un petit sceau calculé à partir du message brouillé. Si quelqu'un change ne serait-ce qu'une virgule, le sceau ne correspond plus et ton ami jette la lettre. En plus, elle fonctionne vite, même sur un vieux téléphone.
Où ce terme est utilisé
- Choisir, combiner et migrer les algorithmes symétriques (4 occurrences)
- Chiffrement par flot : état, compteurs et réutilisation interdite (3 occurrences)
- Transformer un bloc en chiffrement de message (3 occurrences)
- Chiffrer et authentifier en une seule construction (2 occurrences)
- Migrer TLS legacy sans casser les clients anciens (2 occurrences)
- Du chiffre manuel au chiffrement moderne (1 occurrence)
- Exploiter les clés : rotation, KMS et secrets (1 occurrence)
- Formats, bibliothèques et API : rendre la crypto utilisable (1 occurrence)
- La poignée de main TLS 1.3 en une page (1 occurrence)
- Principes de sécurité, identité et cryptographie utile au réseau (1 occurrence)
