33c3 – Deploying TLS 1.3: the great, the good and the bad (Filippo Valsorda, Nick Sullivan)

Cet article est en grande partie basé sur la conférence « Deploying TLS 1.3: the great, the good and the bad » cependant certains éléments ont été étudiés plus en profondeur via la consultation du draft de la RFC « The TLS Protocol version 1.3 ».

TLS 1.3 apporte une modification profonde dans l’établissement d’une connexion chiffrée via TLS. En effet de 4 messages dans le cas de TLS 1.2 pour l’établissement d’une connexion standard, TLS 1.3 permet d’établir une connexion en 2 messages en cas de connexion standard. Cette évolution a été apportée grâce à un envoi direct de la part du client de la négociation de clef via l’utilisation de groupes Diffie-Hellman communs, de sorte que le serveur n’ait plus qu’à valider sa part de l’échange en complétant le Diffie-Hellman, en validant l’algorithme AEAD utilisé et en envoyant le certificat. Le client peut alors commencer directement la connexion chiffrée avec le paquet finished. En cas de besoin de renégociation du serveur, un envoi supplémentaire est fait avec de nouveaux arguments.

TLS 1.3 apporte également la possibilité de réaliser une connexion chiffré en 1 message (0-RTT) par l’utilisation d’un ticket de session. Le ticket de session est envoyé avec le premier bloc chiffré à partir de la clef précédente (exposant alors à une rupture du PFS). Le reste de l’échange se fait de manière standard mais les premières données ayant été envoyés, le chiffrement est instantané. Cependant, deux problèmes se posent alors:

  • Il est possible de réaliser une attaque par rejeu (CCA)
  • Une clef cassée a posteriori expose le message

Différentes mesures ont été mises en place pour éviter ces attaques:

  • Limiter la durée de vie du ticket de session (obfuscated_ticket_age),
  • ne traiter les « early data » qu’après la fin de la renégociation de clef et l’envoi d’un paquet finished.

Cependant il est possible alors de saturer la mémoire d’un serveur via l’envoi de early data volumineuse. Cette vulnérabilité peut-être traiter par l’ajout de limitation de la taille des early data envoyées. Cependant de manière générale, la technologie 0-RTT devrait être considéré comme potentiellement dangereuse et désactivé par défaut.

TLS 1.3 apporte aussi un bon nombre de nouveauté avec la disparition de RSA, RC4, 3DES, SHA, AES-CBC, PKCS#1 v1.5 … en effet la norme s’est centrée sur la mise à niveau de la sécurité via l’usage de mode de chiffrement authentifié, SHA256 devient l’algorithme minimum pour le contrôle d’intégrité des hash. Le modèle des ciphersuits devient basé sur TLS_AEAD_HASH avec AES-CCM et AES-GCM pour les modes de chiffrement par blocs. Enfin TLS a subi plusieurs vérifications formelles de son implémentation qui ont permis d’éliminer certaines erreurs de design.

Facebooktwittergoogle_pluslinkedin
Pierre d'Huy
Pierre d'Huy est un ingénieur spécialisé dans la sécurité des Systèmes d'Information. Il donne occasionnellement des conférences en école (ESE, ESGI Secure Day...) ou devant des publics non-techniques (Les matinées du droits Lamy, l'AFCDP). Amateur de cryptographie et de cartographie, il propose des articles sur de nombreux sujets qui le passionnent.

Leave a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *