Definition

SSL

Secure Sockets Layer (SSL) est un protocole réseau qui gère l'authentification des serveurs et des clients, ainsi que la communication chiffrée entre eux.

SSL combine le chiffrement par clé publique et par clé symétrique pour sécuriser une connexion entre deux machines, généralement un serveur Web ou un serveur de messagerie et une machine cliente, communiquant via Internet ou un réseau interne.

Utilisant le modèle de référence OSI, SSL s'exécute au-dessus du protocole TCP/IP, qui est chargé du transport et de l'acheminement des données sur un réseau, et au-dessous des protocoles plus généraux tels que HTTP et IMAP, qui chiffrent les données des connexions réseau dans la couche application de la suite IP (Internet Protocol). Le « sockets » du nom du protocole fait référence à la méthode de transmission bidirectionnelle de données par sockets entre un client et un programme serveur sur un réseau, ou entre couches de programme dans le même ordinateur.

Le protocole Transport Layer Security (TLS) est issu de SSL et l'a largement supplanté, bien que les termes SSL ou SSL/TLS restent couramment usités ; SSL est souvent utilisé pour désigner ce qui relève en réalité du protocole TLS.

La combinaison SSL/TLS forme le protocole de sécurité le plus largement déployé de nos jours ; elle se retrouve dans des applications telles que les navigateurs Web, la messagerie et dans pratiquement toutes les situations impliquant l'échange sécurisé de données sur un réseau : transferts de fichiers, connexions VPN, messagerie instantanée et voix sur IP (VoIP).

Fonctionnement

Le protocole SSL comprend deux sous-protocoles : le protocole d'enregistrement et le protocole d'établissement de liaison (« handshake »). Ces protocoles permettent à un client d'authentifier un serveur et d'établir une connexion SSL chiffrée. Dans ce qu'on appelle la « procédure initiale d'établissement de liaison », un serveur prenant en charge SSL présente au client son certificat numérique, qui permet d'authentifier son identité. Les certificats de serveur respectent le format de certificat X.509 qui est défini par les normes du système cryptographique à clé publique (PKCS, Public-Key Cryptography Standards). Le processus d'authentification utilise le chiffrement par clé publique pour valider le certificat numérique et confirmer qu'un serveur est bien celui qu'il prétend être.

Une fois le serveur authentifié, le client et le serveur établissent des paramètres de chiffrement et une clé partagée servant à chiffrer les informations qu'ils vont échanger au cours de la session. Cela permet de garantir la confidentialité et l'intégrité des données. Tout ce processus reste invisible de l'utilisateur. Par exemple, si une page Web exige une connexion SSL, l'URL changera de HTTP en HTTPS, et une icône de cadenas apparaîtra dans le navigateur une fois le serveur authentifié.

L'établissement de liaison permet également au client de s'authentifier auprès du serveur. Dans ce cas, une fois l'authentification du serveur effectuée, le client doit présenter au serveur son propre certificat, qui authentifie son identité, avant que la session SSL chiffrée puisse être établie.

Historique du protocole SSL

Le protocole SSL a été développé par Netscape Communications dans les années 90. La société cherchait à chiffrer ses données en transit entre son célèbre navigateur Netscape Navigator et les serveurs Web sur Internet, afin d'assurer la protection des données sensibles, telles que les numéros de carte de crédit. La version 1.0 du protocole n'a jamais été commercialisée et la version 2.0, publiée en février 1995, présentait un certain nombre de failles de sécurité. Après un remaniement complet, la version 3.0 a été publiée en 1996. Bien que n'ayant jamais fait l'objet d'une normalisation formelle (l'IETF a publié la version préliminaire de 1996 de SSL 3.0 sous forme de fiche historique dans la RFC 6101), elle est devenue la norme de facto pour la sécurité des communications sur Internet.

Lorsque l'IETF a officiellement repris le protocole SSL pour le normaliser dans le cadre d'un processus ouvert, la version 3.1 de SSL a été publiée sous le nom de Transport Layer Security 1.0. Elle introduisait des améliorations de la sécurité pour pallier les lacunes constatées dans les versions antérieures. Le nom a été modifié pour éviter tout problème juridique avec Netscape.

La vulnérabilité POODLE est une faille bien connue du protocole SSL 3.0, reposant sur le fait qu'il ignore les octets de remplissage lors de son exécution en mode CBC (Cipher Block Chaining). Cette faille pourrait ainsi permettre à un pirate de déchiffrer des informations sensibles, tels que les cookies d'identification. TLS 1.0 n'est pas vulnérable à cette attaque car il spécifie que tous les octets de remplissage doivent avoir la même valeur et être vérifiés.

D'autres différences essentielles entre SSL et TLS font de ce dernier un protocole plus sûr et plus efficace : l'authentification des messages, la génération des clés et les suites de chiffrement prises en charge, TLS gérant des algorithmes plus récents et plus sûrs. TLS et SSL ne sont pas interopérables, mais TLS offre une rétrocompatibilité pour pouvoir fonctionner avec les systèmes anciens.

Cette définition a été mise à jour en février 2016

Pour approfondir sur Connectivité, Accès Internet