Les deux noms sont des constructions AEAD, les deux sont normalisés, et sur un serveur x86 actuel chacun d eux sature une liaison gigabit sans effort visible. Le choix cesse d être arbitraire quand vous quittez ce serveur : les routeurs bon marché, les téléphones anciens et les appliances virtuelles manquent souvent d accélération AES, et là l écart est important. La comparaison ne porte donc pas sur le chiffrement le plus rapide, mais sur celui qui tourne bien sur cet ensemble de points de terminaison, et sur le fait que le protocole offre seulement un choix.

Même travail, cœurs différents

Les deux constructions assurent confidentialité et intégrité en une passe et authentifient les données associées, ce qui explique que les protocoles VPN les utilisent pour le canal de données. La différence est interne : AES-GCM est le chiffrement par blocs AES en mode compteur avec un authentificateur polynomial sur GF(2^128), tandis que ChaCha20-Poly1305 est un chiffrement de flux à clé de 256 bits avec un authentificateur à usage unique séparé.

Ce qui compte en exploitation est commun : les deux échouent catastrophiquement en cas de réutilisation de nonce, les deux exigent une gestion de l espace de nonce par clé, et aucun ne répare un pair qui authentifie la mauvaise chose. Un profil qui affiche AES-256-GCM n est pas plus sûr qu un profil qui affiche CHACHA20-POLY1305 ; les deux sont solides quand l implémentation est correcte.

Où AES-GCM gagne

AES dispose d instructions dédiées sur la plupart des processeurs modernes : AES-NI sur x86, les extensions cryptographiques sur ARMv8 et des équivalents sur les conceptions récentes POWER et RISC-V. Quand elles sont présentes, GCM traite plusieurs blocs en parallèle par classe de cycle et l implémentation logicielle devient sans importance. C est le cas courant des serveurs, des ordinateurs de bureau et des téléphones actuels, et c est pourquoi le conseil d utiliser AES est une valeur par défaut raisonnable dans un centre de données.

Le problème est le cas de second ordre. Sans instructions dédiées, AES en logiciel est lent, et les implémentations logicielles pilotées par tables sont celles qui ont un long historique de problèmes de temps d accès au cache. Un concentrateur VPN dans une machine virtuelle dont l hôte n expose pas les indicateurs AES à l invité est exactement ce cas, et il est facile à manquer parce que le processeur de l hôte possède la fonction.

Vérifiez ce que le processus voit réellement, et non ce que le processeur prend en charge : grep -o aes /proc/cpuinfo | head -1 sous Linux, ou l indicateur de fonction équivalent dans le modèle de processeur de l hyperviseur.

Où ChaCha20-Poly1305 gagne

ChaCha20 est rapide en logiciel portable parce qu il n utilise que l addition, la rotation et XOR, et ses implémentations évitent par conception les recherches de tables dépendantes du secret. Sur un appareil sans accélération AES, c est un avantage matériel, et c est la raison pour laquelle WireGuard l a choisi : la description du protocole WireGuard liste ChaCha20-Poly1305 comme chiffrement de données sans alternative.

Ce choix unique dit quelque chose d utile : sur du matériel où AES est accéléré, WireGuard abandonne un peu de débit par rapport à AES-GCM, et ses auteurs l ont accepté en échange d un comportement prévisible sur les téléphones, les routeurs domestiques et les hôtes de conteneurs. Si votre parc est surtout composé de petites boîtes ARM, cet échange joue en votre faveur.

Le cas inverse est un concentrateur x86 chargé, où AES-GCM avec AES-NI est la voie plus rapide et mieux prise en charge, et où ChaCha20 coûte un temps processeur mesurable par gigabit. Aucune des deux constructions n est une faiblesse ; la question est de savoir laquelle votre matériel exécute à bas coût.

Ce que votre protocole vous laisse réellement choisir

ProtocolWhat you get
WireGuardChaCha20-Poly1305 only; no negotiation
OpenVPN 2.5 and laterData channel negotiated from data-ciphers: AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305
IPsec / IKEv2AES-GCM as a combined-mode transform, or ChaCha20-Poly1305 where both peers implement it
OpenVPN control channelTLS decides; TLS 1.3 offers AES-GCM and ChaCha20-Poly1305 suites

Remarquez la séparation dans OpenVPN : le canal de contrôle et le canal de données sont négociés séparément, donc la suite que vous voyez pour TLS ne dit rien du chiffrement qui protège votre charge utile. Le résumé de session signale les deux, et n en lire qu un seul est une source courante de confusion.

Dans OpenVPN, le chiffrement du canal de données vient de la liste data-ciphers aux deux extrémités. Si la liste du serveur et celle du client ne se recoupent pas, la connexion retombe sur ce que data-ciphers-fallback autorise ou échoue complètement, et cet échec est généralement imputé à la mauvaise couche. Placez la même liste des deux côtés, puis confirmez le résultat négocié dans le journal au lieu de supposer que l ordre de la liste a été respecté.

Décidez à partir de trois faits sur le déploiement

Premièrement, les points de terminaison disposent-ils de l accélération AES ? Si chaque pair en a, AES-GCM est le choix le moins coûteux et la valeur par défaut dans la plupart des configurations maintenues. Si une part significative est constituée de petits routeurs ou de téléphones anciens, ChaCha20-Poly1305 évite que la queue du parc ne devienne la limite de capacité.

Deuxièmement, le protocole offre-t-il seulement un choix ? Avec WireGuard, la décision est prise pour vous, et le travail utile consiste à vérifier que l outillage autour ne substitue pas silencieusement autre chose. Avec OpenVPN et IPsec, la réponse est une ligne de configuration et un résultat négocié à consigner.

Troisièmement, les deux extrémités peuvent-elles s accorder ? Un chiffrement qu un pair n implémente pas n est pas une décision de performance, c est une panne. C est pourquoi la liste des pairs compte plus que n importe quel banc d essai : un parc hétérogène a besoin de l intersection des capacités, pas de la préférence de la machine la plus rapide.

Si vous mesurez, gardez identiques l appareil, le point de terminaison et la charge, et ne changez qu une chose. Un test qui compare deux serveurs dans des régions différentes mesure la route, pas le chiffrement, et un banc d essai sur portable ne dit rien d un hôte de conteneurs dont les indicateurs processeur sont masqués. Comparez, puis notez quel chiffrement a réellement été négocié : ce relevé vaut plus que le banc d essai.

Articles similaires