Le fingerprinting TLS désigne le processus d'identification d'un client en examinant les champs du message Client Hello qu'il envoie au serveur lors du handshake TLS. Pour en savoir plus sur le système d'exploitation ou la version du navigateur d'un client, le fingerprinting TLS est fréquemment employé. Les fournisseurs de services internet (FAI) peuvent déduire le comportement en ligne d'un client et les sites qu'il visite en analysant le trafic TLS chiffré. De plus, le système d'exploitation et d'autres détails des serveurs distants peuvent être découverts via le fingerprinting TLS.
Contournez la détection de bots basée sur TLS avec anti-bot bypass: consultez notre glossaire fingerprinting TLS pour les définitions.
Dans les contextes anti-fraude où l'identification précise des utilisateurs est essentielle, le fingerprinting TLS peut également s'avérer utile. Lorsqu'ils commettent des actes frauduleux répétés sur un site, les fraudeurs dissimulent souvent leur identité. Les sites web peuvent identifier précisément les visiteurs grâce aux cookies et au fingerprinting navigateur, et le fingerprinting TLS ajoute une couche supplémentaire d'identification à la pile anti-fraude. En comprenant le fonctionnement interne du fingerprinting TLS, vous pouvez renforcer la sécurité de votre site contre la fraude et obtenir des informations utiles sur votre réseau et vos sources de trafic.
Transport Layer Security (TLS) est un protocole de sécurité internet utilisé pour protéger les communications sur le web. Il remplace Secure Sockets Layer (SSL) et est fréquemment employé pour sécuriser des données sensibles telles que les mots de passe, les numéros de carte bancaire et autres informations confidentielles. TLS protège les données échangées entre deux parties, par exemple un serveur web et un navigateur, à l'aide du chiffrement. Les données sont protégées contre l'interception et la manipulation grâce à une combinaison de méthodes de chiffrement symétrique et asymétrique. TLS offre également une authentification pour garantir que les parties à la communication sont bien celles qu'elles prétendent être. Cela se fait via des certificats numériques émis par des autorités de certification (CA) reconnues. Ces certificats contiennent des informations sur l'identité de l'entité.
Le protocole TLS se compose de deux niveaux principaux : le protocole d'enregistrement TLS et le protocole de handshake TLS.** Le protocole de handshake établit la connexion, détermine la technique de chiffrement et les clés, et effectue l'authentification. Le protocole d'enregistrement chiffre et déchiffre les données effectivement transférées. TLS prend en charge plusieurs standards de chiffrement, dont l'Advanced Encryption Standard (AES), largement considéré comme l'un des standards les plus sûrs actuellement disponibles. Il prend également en charge divers algorithmes de hachage, utilisés pour garantir l'intégrité des données transmises. Afin de corriger les failles de sécurité et d'améliorer la protection globale, TLS a évolué au fil du temps. Des méthodes de chiffrement plus robustes et d'autres améliorations figurent dans la version la plus récente, TLS 1.3, qui apporte une avancée significative par rapport aux versions antérieures.
TLS constitue un élément essentiel de la sécurité en ligne, car il offre le chiffrement, l'authentification et la protection de l'intégrité des données sensibles transmises sur internet. C'est un outil crucial pour se défendre contre les cyberattaques, et le fait qu'il évolue et s'améliore en permanence témoigne de son importance pour la protection des interactions en ligne.

Il existe toutefois des moyens de contourner toute procédure de sécurité. Le fingerprinting TLS est une approche que les pirates utilisent pour déterminer la suite de chiffrement et la version TLS employées par un serveur. Une fois ces informations obtenues, les attaquants peuvent tenter d'exploiter les failles connues de cette version et de cette suite de chiffrement.
Comment fonctionne le fingerprinting TLS ?
Le fingerprinting TLS est une méthode d'identification d'un client ou d'un serveur en examinant les champs du message Client Hello du handshake TLS. Le message Client Hello est le premier message qu'un client envoie pour initier une connexion TLS avec un serveur. Lors du handshake TLS, le client et le serveur négocient les paramètres de chiffrement de la connexion. Ces paramètres incluent la version du protocole TLS, les techniques de chiffrement et les algorithmes de hachage de la communication. Le fingerprinting TLS consiste à analyser les valeurs spécifiques de ces paramètres pour créer une identité distincte pour le client ou le serveur. Par exemple, une empreinte unique pour un client peut être construite à partir du numéro de version TLS, de la suite de chiffrement et des extensions prises en charge par ce client.
L'empreinte obtenue peut ensuite être comparée à une base de données d'empreintes connues pour identifier le client ou le serveur. Ces bases peuvent être créées manuellement en analysant les empreintes TLS de clients et serveurs connus, ou automatiquement à l'aide de programmes qui parcourent internet à la recherche de ces empreintes. Les administrateurs réseau et les experts en sécurité peuvent en apprendre davantage sur le matériel et les applications utilisés par les serveurs et clients de leur réseau grâce au fingerprinting TLS. Cependant, certains clients et serveurs peuvent modifier leurs empreintes pour échapper à la détection, ce qui complique l'identification précise par les techniques de fingerprinting TLS. Pour comprendre le fonctionnement du fingerprinting TLS, examinons un exemple. Supposons qu'un client souhaite se connecter de manière sécurisée à un serveur web via HTTP
Le fingerprinting TLS consiste à examiner les valeurs spécifiques de ces paramètres pour produire un identifiant client unique. Par exemple, la suite de chiffrement peut être TLS RSA WITH AES 128 CBC SHA256 et le numéro de version TLS peut être TLS 1.2. Ces valeurs peuvent être combinées pour attribuer au client une empreinte distinctive. L'empreinte générée peut être comparée à une base de données d'empreintes déjà connues pour identifier le client. Supposons, par exemple, que l'empreinte corresponde à un client connu pour utiliser le système d'exploitation Windows et le navigateur Google Chrome. Le client peut alors être identifié comme un ordinateur Windows exécutant Google Chrome.
De plus, les serveurs peuvent être identifiés via le fingerprinting TLS. Par exemple, si le serveur utilise le logiciel Apache, l'empreinte TLS peut contenir des informations sur la version d'Apache et d'autres détails du serveur. Ces informations permettent de localiser des serveurs vulnérables ou de vérifier si les serveurs d'un réseau disposent des correctifs de sécurité les plus récents.
Pourquoi le fingerprinting TLS constitue-t-il une menace ?
Bien que le fingerprinting TLS soit utile pour identifier clients et serveurs, les attaquants cherchant à exploiter des failles dans des algorithmes de chiffrement obsolètes ou inefficaces peuvent également s'en servir. Un attaquant peut mener une attaque efficace contre un serveur grâce à ces informations, par exemple si le serveur utilise une version TLS obsolète ou une suite de chiffrement présentant des failles de sécurité connues.
Le fingerprinting TLS n'est pas réservé aux criminels. Certaines entreprises l'utilisent également pour surveiller les réseaux ou détecter une activité potentiellement malveillante. Même si des motivations légitimes peuvent exister, cette approche peut soulever des questions de confidentialité, et les données collectées peuvent être détournées. Le fingerprinting TLS présente des avantages, mais aussi des risques et des conséquences à prendre en compte. Les entreprises doivent l'employer de manière transparente et mettre en place les garanties nécessaires pour protéger la vie privée et les données des utilisateurs. Il est également impératif de maintenir systèmes et logiciels à jour afin d'éviter les vulnérabilités exploitables par des attaquants utilisant le fingerprinting TLS. Utilisé de manière malveillante, par exemple pour suivre l'activité des utilisateurs ou identifier des failles de sécurité sur des serveurs ou clients, le fingerprinting TLS peut être considéré comme une menace.
L'utilisation du fingerprinting TLS par des pirates pour déterminer les failles de sécurité d'un réseau cible en est un exemple. Par exemple, identifier le système d'exploitation et les versions logicielles d'un serveur via le fingerprinting TLS peut fournir à un attaquant des informations sur des failles et vulnérabilités connues. Avec ces connaissances, l'attaquant peut mener une attaque ciblée contre le serveur, compromettant potentiellement des données importantes et causant des dommages à l'entreprise.
Le fingerprinting TLS peut être employé pour surveiller l'activité des utilisateurs, notamment pour identifier les sites qu'une personne visite et les actions qu'elle effectue en ligne. Outre des usages potentiellement malveillants comme l'usurpation d'identité ou d'autres formes de fraude, ces informations peuvent aussi servir à la publicité ciblée. Des régimes répressifs ou des gouvernements autoritaires peuvent utiliser le fingerprinting TLS pour tracer et surveiller l'activité en ligne de leurs citoyens. Ce type de suivi peut porter atteinte au droit à la vie privée et à la liberté d'expression, et servir à réprimer la dissidence ou l'opposition.
Comment vous protéger contre le fingerprinting TLS ?
Le fingerprinting TLS représente un risque pour la sécurité en ligne, car les attaquants peuvent utiliser cette technique pour identifier des points faibles dans les défenses et mener des attaques efficaces. Plusieurs mesures peuvent être prises pour se défendre contre ce type d'attaque. L'utilisation d'une technique de chiffrement robuste avec la version TLS et la suite de chiffrement les plus récentes est l'une des meilleures stratégies pour éviter le fingerprinting TLS. Cela garantit que même si un attaquant parvient à déterminer la suite de chiffrement et la version TLS du serveur, il ne pourra pas exploiter de failles connues. Il est également essentiel de maintenir vos logiciels à jour et de corriger les failles connues, car des algorithmes de chiffrement obsolètes ou inefficaces peuvent vous exposer à des attaques. L'obfuscation TLS peut également être utilisée pour compliquer la tâche des attaquants souhaitant déterminer la version TLS et la suite de chiffrement exactes employées par le serveur. Pour ce faire, les messages du handshake TLS doivent être modifiés afin de les rendre plus difficiles à interpréter. C'est une méthode efficace pour compliquer l'identification de la version TLS et de la suite de chiffrement précises utilisées par le serveur.
Vous pouvez prendre plusieurs mesures de protection pour prévenir le fingerprinting TLS :
- Mise à jour des logiciels et systèmes : Assurez-vous que votre système d'exploitation, vos applications et vos navigateurs web sont tous à jour. Cela réduit la probabilité que des attaquants exploitent des vulnérabilités connues.
- Assurez-vous que vos communications sont chiffrées et difficiles à décoder en utilisant des méthodes de chiffrement robustes, telles que TLS 1.3 et des suites de chiffrement solides.
- Utilisez un réseau privé virtuel (VPN) : Un VPN peut aider à masquer votre adresse IP et à chiffrer votre trafic internet, rendant plus difficile pour les attaquants d'identifier votre activité.
- Employez des outils anti-fingerprinting : Il existe plusieurs extensions et plugins de navigateur qui peuvent aider à prévenir le fingerprinting. L'extension Privacy Badger, par exemple, peut bloquer les scripts et trackers tiers utilisés pour capturer les empreintes numériques des utilisateurs.
- Désactivez les fonctionnalités inutilisées du navigateur : Les cookies et JavaScript ne sont que quelques-uns des outils pouvant servir à créer des empreintes numériques. Désactiver ces fonctionnalités peut réduire la capacité de votre navigateur à laisser des empreintes.
- Méfiez-vous des réseaux Wi-Fi publics non sécurisés, car ils peuvent être rapidement compromis par des intrus, leur donnant accès à vos communications et permettant le fingerprinting. Évitez d'utiliser des réseaux Wi-Fi publics pour des communications privées.
Avec ces mesures, vous pouvez réduire le risque de fingerprinting TLS et protéger votre confidentialité et votre sécurité en ligne.

Quelle est l'importance du fingerprinting TLS ?
Le fingerprinting TLS est crucial car il permet aux entreprises de déterminer les suites de chiffrement et les algorithmes de chiffrement utilisés par les serveurs de leur réseau. À partir de ces données, on peut évaluer la posture de sécurité du réseau et identifier d'éventuelles failles ou problèmes de conformité. La capacité à identifier des techniques de chiffrement obsolètes ou non sécurisées, potentiellement vulnérables aux attaques, est l'un des principaux avantages du fingerprinting TLS pour les entreprises. Par exemple, si un serveur utilise encore le protocole SSLv3, connu pour être vulnérable à des attaques comme POODLE, un attaquant pourrait exploiter cette faille pour intercepter et déchiffrer les données échangées entre le serveur et le client.
Les organisations peuvent identifier ces vulnérabilités grâce au fingerprinting TLS et prendre des mesures correctives, comme migrer vers un protocole de chiffrement plus sécurisé ou désactiver les suites de chiffrement vulnérables. L'identification d'un trafic potentiellement malveillant sur un réseau est une autre application du fingerprinting TLS. Par exemple, un pirate pourrait utiliser une empreinte TLS différente pour contourner des mesures de sécurité conçues pour identifier certains types de communication. Les organisations peuvent détecter ce type de comportement et prendre les mesures nécessaires pour bloquer ou surveiller le trafic grâce au fingerprinting TLS. Le fingerprinting TLS peut également être employé pour garantir le respect de réglementations telles que PCI DSS. En identifiant les protocoles de chiffrement et les suites de chiffrement utilisés sur un réseau, les organisations peuvent s'assurer de leur conformité et corriger les failles éventuelles. Le fingerprinting TLS est essentiel car il permet aux entreprises de détecter des failles de sécurité potentielles, d'identifier une activité potentiellement malveillante et de garantir la conformité réglementaire. Grâce à cette méthode, les entreprises peuvent renforcer la sécurité et les performances de leur réseau tout en protégeant les données sensibles transmises sur internet.
Processus de handshake TLS
TLS est un protocole de sécurité utilisé pour authentifier et chiffrer les communications internet. Le handshake TLS marque le début d'une session de communication sécurisée via TLS. Lors de ce handshake, les deux parties échangent plusieurs messages pour établir les méthodes cryptographiques, valider mutuellement leurs identités et créer les clés de session. Les handshakes TLS sont indispensables pour établir des connexions HTTPS sécurisées.
Un handshake TLS, première étape de la création d'une session de communication sécurisée via le protocole de chiffrement et d'authentification TLS, peut se décrire simplement comme suit. Il implique des échanges de messages entre les parties communicantes afin de déterminer les méthodes de chiffrement, de convenir des clés de session et de garantir la sécurité de la connexion. Les handshakes TLS constituent un élément essentiel du protocole HTTPS.
Comment fonctionne le fingerprinting TLS
L'échange initial d'informations lors de l'établissement d'une connexion sécurisée via le protocole Transport Layer Security (TLS) est appelé processus de handshake TLS. Il est essentiel pour établir une connexion sécurisée entre un client et un serveur afin de protéger les données en transit. Le processus de handshake TLS regroupe une série d'actions visant à créer une connexion sécurisée et à authentifier le client et le serveur. La procédure commence lorsque le client envoie au serveur un message « Client Hello ». Ce message inclut des informations sur les suites de chiffrement disponibles, les méthodes de chiffrement et d'autres paramètres spécifiques à la connexion pour le client. Le serveur répond par un message « Server Hello » contenant la suite de chiffrement choisie par le serveur, un protocole de chiffrement et un certificat numérique nécessaire pour vérifier l'identité du serveur. Le client authentifie le certificat et s'assure qu'il a été émis par une autorité de certification fiable. Une fois le certificat validé, le client et le serveur échangent une série de messages pour négocier les clés de chiffrement qui seront utilisées pour chiffrer et déchiffrer les données transmises entre eux. Parmi ces messages figurent les messages « Client Key Exchange » et « Server Key Exchange ».
Le client envoie un message « Finished » au serveur une fois les clés de chiffrement convenues, confirmant que la connexion est établie et que les données échangées entre eux seront chiffrées et sécurisées. Le processus de handshake TLS regroupe une série d'actions destinées à établir une connexion sécurisée entre un client et un serveur. Des messages doivent être échangés pour négocier les protocoles de chiffrement, les suites de chiffrement et les clés de chiffrement. De plus, les certificats numériques doivent être vérifiés afin d'authentifier le client et le serveur. Ce processus est crucial pour établir une connexion sécurisée et chiffrée entre un client et un serveur afin de protéger les données sensibles en transit.
Un client et un serveur doivent établir une connexion de communication sécurisée via le processus de handshake TLS. Le client initie le handshake TLS, qui comprend plusieurs étapes pour créer une connexion sécurisée. Le processus de handshake TLS est détaillé étape par étape comme suit :
Client Hello : Le client envoie un message Client Hello au serveur pour démarrer le processus de handshake TLS. Le message Client Hello inclut la version TLS prise en charge par le client, une chaîne d'octets aléatoires client (client-random) et une liste des suites de chiffrement disponibles. L'ordre des suites de chiffrement est déterminé par la préférence du client, la suite la plus souhaitée apparaissant en premier. Un secret pré-maître est créé par le client à partir du client-random et sera utilisé ultérieurement dans le processus de handshake pour établir les clés de session chiffrant les données échangées entre le client et le serveur.
Le message Client Hello contient les informations suivantes :
- Versions TLS prises en charge : Le client fournit une liste ordonnée par préférence des versions TLS qu'il prend en charge. Le client peut, par exemple, prendre en charge TLS 1.2 et 1.3, TLS 1.3 étant la version préférée.
- Suites de chiffrement : Le client liste les suites de chiffrement prises en charge par ordre de préférence. Une suite de chiffrement est un ensemble d'algorithmes cryptographiques utilisés pour établir des connexions sécurisées. Une suite de chiffrement peut inclure, par exemple, un algorithme de chiffrement, un algorithme d'authentification de message et un algorithme d'échange de clés.
- Nombre aléatoire : Le message contient un nombre aléatoire généré par le client. Ce nombre aléatoire est utilisé pour prévenir les attaques par rejeu et rendre le handshake unique.
- ID de session : Lors de l'envoi d'un message, le client peut inclure l'ID de session s'il a déjà interagi avec le serveur. La session peut ainsi se poursuivre sans relancer entièrement le processus de handshake.
- Extensions : Pour fournir des informations supplémentaires au serveur ou négocier des fonctionnalités, le client peut inclure des extensions TLS dans le message. Le client peut par exemple utiliser des extensions pour demander un certain niveau de sécurité ou signaler la prise en charge d'un protocole spécifique.
Server Hello : Le serveur répond au message Client Hello en envoyant un message Server Hello. Le message inclut la suite de chiffrement choisie, la version TLS que le serveur utilisera pour la connexion et une chaîne d'octets aléatoires appelée Server Random.
Le message Server Hello contient les détails suivants :
- Version du protocole TLS : la version TLS que le serveur a décidé d'utiliser pour la connexion.
- Sélection de la suite de chiffrement : Le serveur en choisit une parmi la liste fournie par le client dans le message Client Hello. Le serveur déterminera la suite de chiffrement la plus robuste prise en charge à la fois par le client et le serveur.
- Server random : Le serveur génère un nombre aléatoire appelé server random et l'inclut dans le message Server Hello. Le server random est combiné au client random pour générer les clés de session qui seront utilisées pour le chiffrement et le déchiffrement des données échangées pendant la session.
- Certificat SSL du serveur : Le serveur envoie son certificat SSL au client. Le certificat SSL contient la clé publique que le client utilisera pour chiffrer le secret pré-maître.
Une fois le message Server Hello envoyé, le serveur a terminé sa part de la négociation et est prêt à passer aux étapes suivantes du handshake TLS.
- Certificate : Le serveur envoie son certificat numérique au client. Le certificat contient la clé publique du serveur et est utilisé par le client pour vérifier l'identité du serveur. Le client peut également envoyer son propre certificat numérique au serveur.
- Server Key Exchange : Dans certains cas, le serveur peut envoyer des informations supplémentaires que le client utilisera pour générer les clés de session. Il s'agit du message Server Key Exchange.
- Certificate Request : Si le serveur exige une authentification client, il peut envoyer un message Certificate Request pour demander le certificat numérique du client.
- Server Hello Done : Après le Server Key Exchange et le Certificate Request (si nécessaire), le serveur envoie un message Server Hello Done au client.
- Client Key Exchange : Le client génère une chaîne aléatoire appelée Premaster Secret et la chiffre avec la clé publique du serveur issue du certificat numérique. Le Premaster Secret chiffré est ensuite envoyé au serveur dans un message Client Key Exchange.
- Change Cipher Spec : Le client envoie un message Change Cipher Spec au serveur, indiquant qu'il commencera à utiliser les nouvelles clés de session convenues pour chiffrer les données.
- Encrypted Handshake Message : Le client envoie un Encrypted Handshake Message au serveur, contenant une vérification que les deux parties peuvent calculer le master secret à partir du client random, du server random et du premaster secret.
- Change Cipher Spec : Le serveur envoie un message Change Cipher Spec au client, indiquant qu'il commencera à utiliser les nouvelles clés de session convenues pour chiffrer les données.
- Finished : Le serveur envoie un message finished au client, contenant un code d'authentification de message (MAC) pour vérifier que tous les messages précédents ont été reçus correctement et que le serveur a calculé les mêmes clés de session que le client.**
- Encrypted Handshake Message : Le client envoie un Encrypted Handshake Message au serveur, contenant un code d'authentification de message (MAC) pour vérifier que tous les messages précédents ont été reçus correctement et que le client a calculé les mêmes clés de session que le serveur.**
- Session Established : Le handshake est maintenant terminé et la session est établie. Le client et le serveur peuvent désormais communiquer de manière sécurisée en utilisant la suite de chiffrement et les clés de session convenues.

Où le fingerprinting TLS est-il utilisé ?
Pour les solutions anti-bot et anti-DDoS visant à protéger les sites web contre le crawling massif ou les attaques DDoS, le fingerprinting TLS est une approche précieuse. Les solutions peuvent déterminer si une requête provient d'un script ou d'un navigateur en examinant l'empreinte du client (c'est-à-dire un bot). Avec ces informations, les solutions peuvent décider d'approuver la requête, de la refuser ou d'ajouter un défi supplémentaire basé sur JavaScript pour valider davantage le client. L'utilisation du fingerprinting TLS dans les campagnes de phishing en est un exemple intéressant. Les sites de phishing peuvent utiliser le fingerprinting TLS pour déterminer si le client est un navigateur. Si le client est un navigateur, le site de phishing affichera son contenu frauduleux à des victimes imprudentes. En revanche, le site refusera la requête si le client est un programme automatisé ou un produit de sécurité tentant d'identifier des sites de phishing. Cela rend plus difficile pour les logiciels de sécurité de détecter et de bloquer les attaques de phishing. Le fingerprinting TLS est une méthode efficace avec de nombreuses applications, notamment la détection de sites de phishing et la protection des pages web contre les bots et les attaques DDoS. Toute personne souhaitant renforcer sa sécurité en ligne et se défendre contre les cyberattaques doit comprendre le fingerprinting TLS.

Pour aller plus loin
- Décodeur JA4 (outil gratuit): décodez les chaînes d'empreinte TLS JA4
- Analyseur de capture TLS: analysez les captures JSON tls.peet.ws
- Ressources fingerprinting: sites de test, bibliothèques et outils toolbox Piloterr
- hellojs vs undici JA4: comparaison d'empreinte TLS Node.js
- FAQ Fingerprinting TLS: questions fréquentes sur les handshakes TLS et les suites de chiffrement
- RNet : client TLS fingerprint Python: client HTTP Python propulsé par Rust
- Wreq : client TLS fingerprint Rust: émulation navigateur en Rust
- Bibliothèque de scraping hRequests: bibliothèque Python avec empreintes TLS navigateur
- Bibliothèques Python pour contourner l'anti-bot: guide comparatif d'outils