L'épinglage des certificats Transport Layer Security (TLS) est une technique de sécurité qui aide à prévenir les attaques Man-in-the-Middle (MitM).
Normalement, lorsqu'un client se connecte à un serveur Web, il vérifie le certificat numérique présenté par le serveur pour s'assurer qu'il a été émis par une autorité de certification (CA) de confiance. Cependant, ce processus peut être vulnérable aux attaques MitM, dans lesquelles un attaquant intercepte le trafic et présente un faux certificat numérique également signé par une autorité de certification de confiance.L'épinglage de certificat TLS résout cette vulnérabilité en permettant à un client de spécifier un ou plusieurs hachages de clé publique ou certificats numériques attendus qui doivent être utilisés par le serveur Web. Lorsque le client se connecte au serveur, il vérifie que le certificat ou le hachage de clé publique attendu est présenté, et sinon, il mettra fin à la connexion ou déclenchera une alerte.
L'épinglage de certificat est le mécanisme permettant d'associer un nom de domaine à un ou plusieurs certificats TLS attendus. Plus précisément, le mécanisme recommandé par Approov est l'épinglage de l'identité de clé publique du sujet (SPKI) où une clé publique particulière pour un certificat est requise. Cette approche est la plus flexible et la plus maintenable car elle permet la rotation des certificats sans épingler les modifications s'ils sont générés à l'aide de la même clé publique.
Chaque fois que l'application doit établir une connexion avec le serveur hébergeant ce nom de domaine, une négociation TLS a lieu afin que les deux parties puissent échanger des messages, établir les algorithmes de cryptage à utiliser et définir les clés de cryptage de session à utiliser par la suite. Lors de la négociation TLS, lorsque l'appareil reçoit la chaîne de certificats du serveur, il établit la connexion uniquement s'il fait confiance à un ou plusieurs certificats de cette chaîne.
L'épinglage garantit que la connexion a bien été établie entre l'application et le backend officiel. L'épinglage empêche une attaque Man-in-the-Middle (MitM) ou un proxy du trafic où les données cryptées entre l'application et le backend pourraient être observées, voire manipulées, par un tiers.
En utilisant l'épinglage de certificat TLS, un attaquant qui intercepte le trafic et tente de présenter un faux certificat numérique échouera, car le client n'acceptera que le certificat spécifique ou les hachages de clé publique qu'il attend. Cela fournit une couche de sécurité supplémentaire contre les attaques MITM.