Comment l’empreinte TLS renforce la protection de DataDome
En matière de détection des bots, il faut garder une longueur d’avance sur les attaquants. Nous cherchons constamment de nouvelles méthodes d’empreintes pour détecter les bots plus précisément et plus efficacement.
Les applications mobiles et les navigateurs qui tentent d’établir une connexion HTTPS avec un serveur doivent partager certaines métadonnées sur ce qu’ils peuvent ou ne peuvent pas prendre en charge en termes d’algorithmes de sécurité dans ce que l’on appelle le « TLS handshake ». L’objectif du TLS handshake est de se mettre d’accord sur les algorithmes spécifiques pris en charge par les deux parties, qui dépendent de diverses caractéristiques, notamment le système d’exploitation (OS), le navigateur, etc.
L’étude de Lee Brotherston en 2015 a démontré que l’empreinte TLS est assez stable et unique pour un type d’appareil, un navigateur et un système d’exploitation, et qu’elle peut détecter :
- Les utilisateurs qui mentent sur leur identité en étant incohérents (souvent des bots).
- Les bots spécifiquement connus qui ont des métadonnées TLS uniques.
Voyons comment DataDome utilise l’empreinte TLS pour détecter la prochaine attaque de grande envergure sur les plateformes de nos clients. Poursuivez votre lecture pour découvrir :
Qu’est-ce que le protocole TLS ?
Le Transport Layer Security (TLS), successeur de Secure Sockets Layer (SSL), aujourd’hui obsolète, est le protocole cryptographique conçu pour assurer la sécurité des communications sur un réseau informatique, à savoir les connexions HTTPS de couche 7.
Pour garantir une connexion sécurisée, TLS utilise un arsenal d’algorithmes cryptographiques répartis dans les catégories suivantes :
- Les algorithmes d’échange de clés : par exemple ECDHE
- Les algorithmes d’authentification/de signature numérique : par exemple ECDSA
- Les algorithmes de chiffrement en bloc : par exemple AES
- Les algorithmes de hachage du code d’authentification des messages : par exemple MD5
Qu’est-ce qu’une empreinte TLS ?
Dans le domaine de la sécurité, une empreinte d’appareil est un ensemble unique (par utilisateur, par appareil ou par catégorie d’appareil) d’attributs qui doivent être suffisamment stables pour permettre une réidentification.
Les algorithmes utilisés par le protocole TLS doivent être négociés avant la communication dans le cadre du TLS handshake. Celui-ci est généralement une liste des suites de chiffrement prises en charge (combinaison d’un échange de clés TLS, d’une authentification par algorithme, d’un algorithme de signature numérique en bloc, de messages d’algorithme de chiffrement et d’algorithmes de code d’authentification) et des extensions (paramètres utilisés par les algorithmes de chiffrement). Le client et le serveur choisissent alors une suite de chiffrement et l’utilisent pour sécuriser la connexion.
Les valeurs des suites de chiffrement prises en charge, les extensions et les autres valeurs du handshake sont reçues par le serveur, puis hachées séparément ou sous une forme concaténée pour fournir une valeur de hachage facile à utiliser. Les modèles de détection DataDome peuvent utiliser la valeur de hachage, que nous appelons une empreinte TLS, pour bloquer les attaques. Le format d’empreinte TLS le plus connu est ja3 (voir l’exemple ci-dessous de l’ingénierie Salesforce).

Comment fonctionne une empreinte TLS ?
Une empreinte TLS repose sur l’hypothèse suivante : les différents clients HTTPS (navigateurs, programmes informatiques, etc.) prennent en charge différents algorithmes. Cela signifie que nous pouvons identifier la classe d’appareils à laquelle un serveur appartient à partir de la liste des codes chiffrés et des extensions pris en charge que le client partage lors du TLS handshake. En d’autres termes :
- TLS du Client Hello (Chrome sur iOS) ≠ TLS du Client Hello (Chrome sur Android)
- TLS du Client Hello (Chrome sur iOS) ≠ TLS du Client Hello (Firefox sur iOS)
- TLS du Client Hello (Googlebot) ≠ TLS du Client Hello (Bingbot)
Le TLS du Client Hello (Chrome 94 normal) restera stable tant que l’utilisateur ne changera rien dans son navigateur ou son système d’exploitation.
Comment nous tirons parti de l’empreinte digitale : les modèles d’empreintes TLS
Nos modèles d’apprentissage automatique (Machine Learning, ML) utilisent des fonctionnalités extraites des signaux d’empreinte TLS que nous collectons pour détecter le trafic malveillant qui leur est associé et générer des modèles de blocage.
Pour chacun des signaux d’empreinte TLS analysés, nous recueillons les fonctionnalités suivantes :
- le pourcentage de bots qui y sont associés,
- la qualité des IP qui l’ont envoyé,
- le système d’exploitation (OS) qui y est associé,
- le nom du navigateur et sa version dans le trafic correspondant.
Lorsque nous avons évalué les performances de nos modèles, nous avons remarqué qu’ils identifiaient deux modèles différents de trafic malveillant à l’aide des empreintes TLS :
- Le trafic malveillant qui peut être directement identifié par son empreinte TLS unique. Certains bots sont programmés de manière à avoir une empreinte TLS différente de toutes les autres, ce qui les rend facilement identifiables.
- Le trafic malveillant qui présente une combinaison incohérente d’empreinte TLS et de classe d’appareil (système d’exploitation/nom du navigateur ou de la version du navigateur). Par exemple, si un attaquant prétend être sur Chrome 102, mais n’a pas l’empreinte TLS correspondante de ce navigateur.
Exemple d’attaque bloquée par l’empreinte TLS
Ce graphique montre une attaque qui a eu lieu le 2 septembre 2022.

Les attaquants ont commencé par un nombre relativement faible de requêtes et se sont montrés plus agressifs le lendemain après avoir été bloqués. Ils ont envoyé 2,1 millions de requêtes, et jusqu’à plus de 160 000 requêtes par heure. L’attaque ciblait un chemin spécifique dans les sites de l’un de nos clients du secteur de l’e-commerce.
Cette attaque était bien répartie. Au total, plus de 100 000 adresses IP distinctes appartenant à plus de 80 pays ont été utilisées :

Vous trouverez ci-dessous un diagramme indiquant le type de système autonome (AS) auquel appartiennent les adresses IP de l’attaquant. Plus de 85 % des IP utilisées par les attaquants appartenaient à des AS résidentiels, une proportion plus faible à des AS mixtes et seule une petite fraction à des AS de data centers :

L’attaque a été largement diffusée. Pour avoir une idée plus précise de la répartition, nous indiquons le nombre d’adresses IP uniques utilisées pendant l’attaque. Les attaquants utilisent la distribution d’adresses IP pour contourner les techniques de détection des bots classiques, notamment le blocage géographique et la liste des adresses IP bloquées :

Nos modèles basés sur le TLS ont géré le blocage de cette attaque en remarquant que le hachage de la suite de chiffrement TLS des attaquants correspondait à des clients HTTPS exécutés sur iOS, et non sur l’OS que les attaquants utilisaient. Ils ont donc été signalés et notre moteur a bloqué l’attaque.
Diversifier vos méthodes d’empreinte avec certaines données côté client (comme les empreintes TLS) peut vous permettre de détecter les attaques qui n’ont pas d’incohérences côté serveur. Ce ne serait pas possible avec les méthodes classiques d’empreinte côté serveur.
Conclusion
L’empreinte TLS est un signal extrait des données partagées lors de la poignée de main initiale entre un client HTTPS et un serveur. Elle contient généralement des informations sur l’appareil qui sont obscures ou difficiles à falsifier. L’empreinte TLS est une méthode solide dans l’arsenal des outils de détection des bots. Nous l’utilisons quotidiennement pour empêcher les attaquants de transgresser les données de nos clients et de les exploiter à des fins malveillantes.
Nous utilisons nos modèles de ML pour détecter des incohérences sur des empreintes TLS inédites en exploitant les signaux extraits d’autres méthodes d’empreinte. Nous pouvons ainsi bloquer en temps réel les requêtes malveillantes à grande échelle sur toutes les plateformes de notre client. L’empreinte TLS est un signal fiable parmi les trois billions de signaux que notre moteur de détection utilise chaque jour pour identifier le trafic web frauduleux.
DataDome utilise, entre autres, les empreintes digitales pour protéger les sites web, les applications mobiles et les API sans affecter l’utilisateur final, qui ne se rend même pas compte de notre présence.