Transport Layer Security (TLS)
Netscape a développé le protocole SSL pour permettre la sécurité des transactions de commerce électronique sur le Web. Le commerce électronique nécessite un cryptage pour protéger les données confidentielles et privées d'un client, et également pour fournir l'authentification et l'intégrité. Son objectif principal est d'assurer une transaction sûre. La combinaison de ces caractéristiques donne une vue d'ensemble de la sécurité en ligne. Pour ce faire, le protocole SSL est implémenté au niveau de la couche application, directement au-dessus de TCP, comme illustré dans la figure ci-dessous. Lorsque l'IETF a standardisé le protocole SSL, il a été renommé Transport Layer Protocol (TLS), mais techniquement, ce sont des protocoles différents, car chacun décrit une version différente des protocoles.
Le but de TLS et de SSL est de fournir une transaction sécurisée entre le client (navigateur) et le serveur. Les termes SSL et TLS sont souvent utilisés de manière interchangeable ou conjointement (TLS/SSL). Le SSL 3.0 a servi de base à TLS 1.0. On croyait auparavant que TLS 1.0 était légèrement plus sécurisé que SSL 3.0. Les versions ultérieures de TLS 1.1 et 1.2 sont nettement plus sécurisées et corrigent de nombreuses vulnérabilités dans SSL 3.0 et TLS 1.0. Par exemple, l'attaque BEAST peut complètement casser les sites Web fonctionnant sur les protocoles SSL 3.0 et TLS 1.0. La nouvelle version de TLS est correctement configurée pour empêcher le BEAST et d'autres attaques. Le protocole TSL est conçu pour fournir trois services essentiels : la confidentialité, l'authentification et l'intégrité des données. Parallèlement à cela, l'interopérabilité, l'extensibilité et une efficacité accrue sont les autres objectifs. Ces objectifs sont atteints grâce à la mise en œuvre du protocole TLS à deux niveaux.
- Protocole d'enregistrement TLS.
- Protocole d'établissement de liaison.
Protocole d'enregistrement TLS
Le protocole d'enregistrement TLS négocie une connexion privée fiable entre le client et le serveur. Bien que le protocole d'enregistrement puisse être utilisé sans cryptage, il utilise une clé de cryptographie symétrique pour assurer une connexion privée. Cette connexion est sécurisée grâce à l'utilisation d'une fonction de hachage générée à l'aide d'un code d'authentification de message.
Protocole d'établissement de liaison
Le protocole d'établissement de liaison TLS permet au client et au serveur de commencer à échanger des données via TLS. Le client et le serveur négocient pour se mettre d'accord sur la version du protocole TLS et le choix de la méthode de chiffrement, et vérifient le certificat si nécessaire. Le protocole TLS s'exécute sur un protocole TCP fiable à l'aide d'une connexion TCP en place, et le client envoie un certain nombre de spécifications en clair, telles que la version du protocole TLS qu'il exécute, la liste des méthodes de chiffrement prises en charge et d'autres options TLS qu'il peut voulez utiliser. Le serveur sélectionne la version du protocole TLS pour une communication ultérieure, décide d'une méthode de chiffrement à partir de la liste fournie au client, attache son certificat et renvoie la réponse au client. Le serveur envoie également une demande de certificat client et de paramètres pour d'autres extensions TLS.
Le client initie l'échange de clés RSA ou Diffie-Hellman, qui est utilisé pour établir la clé symétrique pour garantir la session. Le serveur traite l'échange de clés à l'aide des paramètres envoyés par les clients, vérifie l'intégrité du message en vérifiant le MAC et renvoie un « Terminé » crypté au client. Le client décrypte le message avec la clé symétrique négociée et vérifie le MAC, et si tout va bien, le tunnel est établi et les données d'application peuvent maintenant être envoyées.
Confidentialité, authentification et intégrité TLS
TLS utilise une combinaison de cryptage symétrique et asymétrique pour garantir la confidentialité. Lors d'une négociation TLS, le client et le serveur TLS conviennent d'un algorithme de chiffrement et d'une clé secrète partagée à utiliser pour une seule session. Tous les messages transmis entre le client et le serveur TLS sont cryptés à l'aide de cet algorithme et de cette clé, garantissant que le message reste privé même s'il est crypté.
TLS assure l'intégrité des données en calculant un condensé (digest) de message. Il utilise généralement des algorithmes de signature numérique RSA et DSA pour diverses combinaisons de chiffrement.