Qu'est-ce que TLS?

 · Temps de lecture: 6 mins

En quoi consiste TLS?

TLS, initialement connu sous le nom de Secure Sockets Layer (SSL), est un sigle pour Transport Layer Security. Il s’agit d’un protocole de chiffrage des communications au sein d’un réseau permettant :

  • l’authentification du serveur;
  • la confidentialité des données échangées (ou session chiffrée);
  • et l’intégrité des données échangées

Par exemple, ce protocole est souvent utilisé pour des sites de paiement en ligne afin qu’un tiers n’intercepte pas des données sensibles transitant par le réseau (numéro de carte bancaire et mot de passes). Vous pouvez vous assurer que les communications effectuées entre votre machine et un serveur web sont cryptées en :

  • vérifiant que l’URL de la barre d’addresse commence par https:// et non http;
  • vérifiant la présence d’une clé ou d’un cadenas généralement à gauche de la barre d’adresse ou dans la barre inférieure de la fenêtre;
  • tapant l’URL du site web que vous voulez visiter dans la barre de recherche de cet outil

Le fonctionnement de TLS

TLS est un protocole de sécurité que l’on combine avec le protocole HTTP afin d’obtenir HTTPS (HyperText Transfer Protocol).

Ci-dessous se trouve le processus d’établissement de la connexion client-serveur dans TLS 1.3 (RFC 8446).

Le processus de “handshake”

Il s’agit principalement d’établir une liaison sécurisée entre le serveur et le client:

Étape 1: La génération des clés d’échange (coté client)

Le client commence à générer une paire de clés privée/publique. Il gardera la clé privée pour la décryption et enverra la clé publique au serveur.

Étape 2: HELLO!

Le client commence par dire “HELLO” et commence à transmettre la clé publique, la liste des suites de chiffrage supportées par le client, la liste des versions de TLS/SSL supportés par le client, et des données aléatoires.

Étape 3: La génération des clés d’échange (côté serveur)

Le serveur fait la même chose que le client faisait (à l’étape 1). En vrai, comme on le verra par la suite, il s’agit d’une technique mathématique par laquelle 2 côtés peuvent être d’accord sur un même nombre choisi, sans qu’un espion puisse dire quel nombre il s’agit.

Étape 4: HELLO!

Le serveur fait un HELLO pareil à celui du client

Étape 5: Les calculs de clés

Chaque bord utilise ses méthodes mathématiques pour comparer leurs clés. Le serveur utilise sa clé privée, la clé publique du client ainsi que les sésames SHA256 des 2 HELLOs. Il obtient le secret partagé qui est le résultat des échanges qui font que le client et le serveur sont d’accord sur un même nombre choisi - le serveur multiplie, avec l’algorithme curve25519() la clé publique du client et la clé privée du serveur pour ensuite obtenir le secret partagé qu’il utilisera. Ensuite, le serveur calcule le sésame SHA256 de tout le “handshake”. Après, il s’agit d’intégrer le sésame SHA256 obtenu plus tôt et le secret partagé dans plusieurs opérations de dérivation (d/dx ou (f)' si vous avez oublié) et on peut ainsi obtenir les clés nécessaires, qui seront aussi calculées chez le client et qui se compareront. Si jamais en utilisant le serveur chiffre des données avec les clés qu’il a obtenus, mais que les clés que le client aura calculés ne marchent pas pour déchiffrer le contenu, la transmission sera coupée immédiatement, signe d’une attaque.

Étape 6: La couverture

À partir de maintenant, comme les paires de clés sont identiques, la communication peut enfin commencer. Le serveur chiffre les données, et les envoie au client qui les déchiffre. Pour plus de sécurité, seulement quelques données sont envoyées avant tout: le certificat SSL/TLS du serveur. Il doit être vérifié par le client à travers plusieurs étapes.

Étape 7: La vérification du certificat serveur

Le client déchiffre le certificat SSL/TLS du serveur, et vérifie automatiquement auprès des certificats des autorités de certification si le certificat du serveur est valide.

Étape 8: Les calculs des clés

Idem que pour l’étape 5, mais cette fois il s’agit de la transmission des données du vrai contenu et non du handshake.

Étape 9: la transmission des données

Les données se transmettent, chiffrées par le serveur puis déchiffrées par le client.

Étape 10: Les tickets de session

Le serveur envoie des tickets de session à usage unique au client pour éviter de refaire une partie du processus du handshake.

Étape 11: La fin

Le serveur envoie “pong” signe de la fin des communications.

Pourquoi installer TLS?

Le processus semble compliqué, mais tout cela se fait en une fraction de seconde!

Il y a un grand nombre d’avantages à l’installation de TLS:

  • Page sécurisée, intégrité des données
  • La page est visiblement protégée (présence d’un cadenas)
  • Boost SEO chez Google > amélioration de la position donc plus de visiteurs
  • La gratuité de TLS grâce aux autorités comme Let’s Encrypt, Encryption Everywhere, cPanel ou Buypass (WoSign et StartCom n’offrent plus des certificats gratuits pour le handshake.)
  • Le support de TLS 1.1 et 1.2 par énormément de naviguateurs :
    • Apple Safari 7 et suivants;
    • Google Chrome et Chromium 30 et suivants ;
    • Microsoft Internet Explorer 11 et suivants ;
    • Mozilla Firefox 27 et suivants ;
    • Opera 17 et suivants ;
    • Microsoft Edge.
  • La possibilité de protéger plusieurs sites en même temps.

Mais aussi quelques difficultés qui peuvent survenir:

  • Le temps nécessaire pour la validation dans le cas des certificats SSL/TLS qui affichent le nom de la compagnie titulaire peut être considérable
  • Seulement une protection des transmissions mais pas du serveur
  • Le prix peut être un facteur pour les certificats durant plus de 90 jours.
  • Dans des environnements ne supportant pas SNI (un moyen de dire quel nom d’hôte protéger donc dire au serveur quel certificat envoyer en particulier), il est compliqué d’avoir 1 seul certificat pour des centaines de domaines.

L’amélioration de TLS

Plusieurs concepts rendent TLS plus sécuritaire:

  • HSTS (HTTP Strict Transport Security), protocole qui force le navigateur web à se mettre sur HTTPS sur un site web qui envoie cet en-tête
  • HPKP (HTTP Public Key Pinning), protocole obligeant le navigateur à procéder au handshake uniquement avec un certificat SSL/TLS particulier. Très avantageux pour les certificats SSL à long terme, mais mauvais pour les certificats SSL à court terme.
  • CAA (Certification Authority Authorization), record DNS qui permet de limiter la création de certificats SSL pour un nom de domaine à un service particulier.

Conclusion

SSL/TLS est un moyen de sécuriser efficacement et rapidement des communications entre plusieurs machines, qui s’implémente très facilement et évite bien des ennuis!


Publié par Rémy Samkocwa