Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Certificate Pinning

general

Définition

Le Certificate Pinning (ou Public Key Pinning) est une technique de sécurité TLS qui consiste à associer de manière statique, dans le code d'une application ou d'un client, le certificat ou la clé publique spécifique(s) attendu(s) lors de la connexion à un service. Plutôt que de faire confiance à tout certificat valide signé par une autorité de certification (CA) de confiance, l'application vérifie que le certificat présenté correspond exactement à celui ou ceux préalablement configurés. L'objectif principal du pinning est de protéger contre les attaques man-in-the-middle (MITM) qui utiliseraient un certificat valide mais non autorisé — par exemple, un certificat émis par une CA compromise ou malveillante, ou par un proxy d'inspection SSL déployé dans un réseau d'entreprise sans connaissance du client. Sans pinning, un attaquant qui peut insérer sa propre CA dans le magasin de confiance du système d'exploitation peut intercepter le trafic TLS de toutes les applications. Il existe deux variantes de pinning. Certificate Pinning : l'application pin le certificat complet — toute modification (renouvellement, changement de clé) invalide le pin et bloque les connexions. Public Key Pinning : l'application pin uniquement la clé publique — le certificat peut être renouvelé (avec la même clé) sans casser le pin. La deuxième approche est plus flexible pour la gestion opérationnelle. Les défis opérationnels du pinning sont significatifs. Un pin incorrect ou obsolète bloque toutes les connexions de l'application vers le service concerné — potentiellement toutes les fonctionnalités si le pin concerne le serveur API principal. La gestion du cycle de vie (mise à jour des pins lors du renouvellement de certificats) est complexe et nécessite des mises à jour de l'application. HPKP (HTTP Public Key Pinning) — le standard de pinning pour les navigateurs web via headers HTTP — a été déprécié par Google Chrome en 2018 précisément à cause de risques de lockout permanent des sites web. Le pinning est aujourd'hui recommandé principalement pour les applications mobiles natives (iOS/Android) qui communiquent avec des backends connus, et pour les applications à haute sécurité (banking apps, VPN clients) où le risque MITM justifie la complexité opérationnelle. Pour les navigateurs web grand public, le Certificate Transparency (CT) est privilégié comme mécanisme de détection des certificats frauduleux sans les risques de lockout du pinning.

Implémentation iOS et Android

Sur iOS, le pinning se configure via URLSession avec un delegate implémentant urlSession(_:didReceive:completionHandler:) qui compare la clé publique du certificat présenté avec les valeurs attendues (stockées en dur dans le bundle). TrustKit est une bibliothèque open-source qui simplifie le déploiement du pinning sur iOS et macOS avec support des pins de backup. Sur Android, le Network Security Config (XML dans res/xml/network_security_config.xml) permet de configurer le pinning déclarativement sans code : `` avec les SHA-256 des SPKI (Subject Public Key Info). OkHttp (la bibliothèque HTTP la plus utilisée sur Android) dispose d'un CertificatePinner intégré. Les tests de pinning avec des proxies d'interception (Burp Suite, Charles Proxy) sont une étape standard du pentest d'applications mobiles.

Certificate Transparency — alternative moderne au pinning

Certificate Transparency (CT, RFC 6962) est un mécanisme de détection des certificats frauduleux via des logs publics et vérifiables. Chaque CA doit enregistrer tout certificat émis dans des logs CT publics (gérés par Google, Cloudflare, DigiCert, etc.). Les navigateurs Chrome et Safari exigent la preuve CT (Signed Certificate Timestamps — SCT) pour accepter un certificat. Si une CA émet frauduleusement un certificat pour google.com, ce certificat apparaît dans les logs CT et peut être détecté par le propriétaire du domaine via des outils de monitoring CT (crt.sh, Facebook CT Monitor). CT ne prévient pas les attaques MITM en temps réel comme le pinning, mais détecte les certificats frauduleux rapidement pour réaction et révocation.

Bypass de pinning — techniques de test

Les pentesters utilisent plusieurs techniques pour bypasser le certificate pinning lors des tests d'applications mobiles. Sur des appareils jailbreakés/rootés : Frida (framework d'instrumentation dynamique) permet d'injecter du code JavaScript qui remplace les fonctions de vérification TLS pendant l'exécution, bypassing le pinning sans modifier l'APK/IPA. SSL Kill Switch (iOS jailbreaké) : tweak qui désactive la validation de certificat globalement. Sur appareils non rootés : recompilation de l'APK avec le pinning désactivé (reverse engineering), ou utilisation de proxies transparents en combinaison avec un profil de configuration CA installé. Ces techniques montrent l'importance de protéger l'intégrité du code (obfuscation, anti-tampering, root detection) en complément du pinning.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis