Nous avons précédemment
écrit que l'Internet Engineering Council (IETF) a approuvé une nouvelle version de TLS-1.3. La semaine dernière, le protocole a été reconnu comme standard. Aujourd'hui - parlons de ses capacités.
/ photo Charles Dyer CCCaractéristiques de TLS 1.3
Ils ont commencé à travailler sur la mise à jour du protocole en 2014. Officieusement, les travaux sur TLS 1.3 se sont terminés en mars de cette année, mais les ingénieurs ont eu besoin de quelques mois de plus pour effectuer des vérifications supplémentaires.
Les créateurs affirment que la version finale de TLS 1.3 est plus sécurisée et productive: toutes les vulnérabilités connues (aujourd'hui) de TLS 1.2 sont fermées dans ses algorithmes de chiffrement, et le processus de «prise de contact» est deux fois plus rapide que son prédécesseur. Les développeurs ont également
ajouté le secret avancé et de nouvelles fonctionnalités comme 0-RTT.
TLS 1.3 a apporté le plus grand nombre de changements significatifs dans l'histoire du protocole. Pour cette raison, certains ont même
suggéré de l' appeler TLS 2.0.
Maintenant que la nouvelle version du protocole TLS 1.3 (
RFC 8446 ) est officiellement approuvée, il reste à l'implémenter pour toutes les connexions réseau.
Difficultés de mise en œuvre
TLS a une sorte de compatibilité descendante. Lorsqu'une connexion est établie entre le client et le serveur, les versions prises en charge du protocole sont échangées et celle avec laquelle les deux parties peuvent travailler est sélectionnée. Cependant, cette fonctionnalité n'est pas utilisée partout. Avec l'avènement de TLS 1.3, plus de 3% des serveurs prenant en charge TLS 1.2 se sont simplement déconnectés au lieu d'envoyer au client le numéro de version pris en charge.
Un problème similaire s'est produit avec les nœuds intermédiaires (
boîtier de médiation ). Étant donné que TLS n'a pas beaucoup changé, des choses comme les pare-feu, NAT et les équilibreurs de charge ont refusé de travailler avec la nouvelle version du protocole.
Les ingénieurs ont qualifié ce phénomène d'ossification (ossification). Le fait que certains développeurs n'utilisent pas les fonctionnalités flexibles du protocole rend difficile l'introduction de nouvelles implémentations de celui-ci. Par analogie, les participants de l'industrie citent l'
exemple de l'ancienne porte. Si vous ne le touchez pas pendant longtemps, les boucles rouillent et il s'ouvre avec un craquement.
/ photo Christopher Sessums CCIl s'avère que le protocole précédent est obsolète, mais il ne fonctionnera pas pour en introduire un nouveau par défaut. Pour en savoir plus sur le sujet, par exemple, dans l'étude de l'IEEE de l'an dernier (
PDF ).
La solution a été trouvée par David Benjamin, travaillant sur le chrome. Il a suggéré de déguiser le premier message d'un client prenant en charge TLS 1.3 en un message TLS 1.2. Et cela a fonctionné: les 3% des serveurs mentionnés ont cessé de se déconnecter. Pour les sites intermédiaires, Kyle Nekritz de Facebook a suggéré d'utiliser la même approche. Cela a réduit le nombre de plantages de 6,5% dans Chrome et de 2% dans Firefox.
Pour vérifier si les boîtiers intermédiaires sont compatibles avec la nouvelle version du protocole, vous pouvez utiliser le
test développé dans Cloudflare.
Comment simplifier la mise en œuvre
Selon Eric Rescorla, l'un des développeurs de spécifications pour TLS et HTTPS, en général, la mise en œuvre de TLS 1.3 n'est pas si difficile. Le conseil d'ingénierie a essayé de rendre ce processus aussi simple que possible. TLS 1.3 utilise les mêmes clés et certificats que TLS 1.2. Cela permet au client et au serveur d'établir automatiquement une connexion sur TLS 1.3 s'ils prennent tous les deux en charge la nouvelle version du protocole.
De plus, plusieurs bibliothèques peuvent vous aider à déployer le protocole plus rapidement. Par exemple, au début de la semaine dernière, Facebook a
transféré sa bibliothèque TLS 1.3 Fizz
en open source . Fizz
réduit la latence lors de la transmission de données, ainsi que la charge sur le CPU.
Les développeurs ont préparé un guide sur la façon de commencer à utiliser Fizz sur Ubuntu 16.04 LTS. Il se trouve
dans le référentiel officiel de GitHub (il contient également un guide pour MacOS).
Vous devez d'abord installer les
dépendances folie et
libsodium nécessaires:
sudo apt-get install \ g++ \ cmake \ libboost-all-dev \ libevent-dev \ libdouble-conversion-dev \ libgoogle-glog-dev \ libgflags-dev \ libiberty-dev \ liblz4-dev \ liblzma-dev \ libsnappy-dev \ make \ zlib1g-dev \ binutils-dev \ libjemalloc-dev \ libssl-dev \ pkg-config \ libsodium-dev
Ensuite, vous devez créer et installer la folie:
git clone https://github.com/facebook/folly mkdir folly/build_ && cd folly/build_ cmake configure .. make -j $(nproc) sudo make install
Ensuite, vous pouvez procéder à l'installation de Fizz:
cd ../.. git clone https://github.com/facebookincubator/fizz mkdir fizz/build_ && cd fizz/build_ cmake configure ../fizz make -j $(nproc) sudo make install
En plus de Fizz, il existe d'autres bibliothèques sur le réseau, par exemple,
wolfSSL ,
GnuTLS ou
rustls .
Protocole futur
Pour enfin résoudre le problème de l '«ossification» du protocole, David Benjamin a
proposé en plus de la version officielle du standard d'utiliser un certain nombre de ses variantes, qui sortiront toutes les six semaines (avec la sortie de nouvelles versions de Chrome). Ainsi, les serveurs et les nœuds intermédiaires seront tenus de respecter toutes les règles d'établissement d'une connexion, sinon la plupart des clients ne pourront pas se connecter aux services.
Pour cette raison, les développeurs espèrent éviter les plantages possibles lors du chargement des pages Web, ainsi que des problèmes similaires avec les futures versions de TLS.
La sécurité globale du réseau devrait augmenter considérablement après l'introduction de TLS 1.3. Les bibliothèques qui facilitent le déploiement d'une nouvelle version du protocole devront contribuer à la distribution de masse.
PS Autres documents de notre blog d'entreprise IaaS:
Ce que nous faisons dans IT-GRAD - les principaux domaines:
Infrastructure virtuelle (IaaS) | Hébergement PCI DSS | Cloud FZ-152