Qu'est-ce que le secret persistant parfait (PFS) ?
Le secret persistant parfait (PFS), également appelé confidentialité vers l'avant, est un type de chiffrement connu pour produire des échanges de clés privées temporaires entre les clients et les serveurs. Pour chaque session individuelle initiée par un utilisateur, une clé de session unique est générée. Si le certificat d'identification ou l'une de ces clés de session est compromis, les données de toute autre session ne seront pas affectées. Par conséquent, les sessions passées et les informations qu'elles contiennent sont protégées contre toute attaque future.
Sans confidentialité persistante parfaite, lorsqu'un utilisateur initie une session de communication avec un client, l'ensemble de la conversation est chiffré à l'aide de la clé spéciale du terminal. Cependant, le terminal utilise la même clé spéciale pour générer le chiffrement de toutes ses sessions. Si la clé est compromise, toutes les informations contenues dans chacune des communications jamais effectuées par le terminal le sont également.
Avec la confidentialité persistante parfaite, chaque session de communication génère une clé de chiffrement unique, distincte de la clé spéciale, qui n'est valable que pendant la durée de la session. Ainsi, si un pirate venait à compromettre la clé spéciale d'un utilisateur, les communications resteraient chiffrées et sécurisées. De même, si un pirate venait à compromettre la clé de chiffrement unique, seule cette session spécifique serait compromise.
Protégeant les données au niveau de la couche transport d'un réseau, le PFS est devenu une norme de sécurité que les développeurs doivent implémenter dans les services de messagerie ou les sites Web dédiés à la confidentialité des utilisateurs. Les outils qui appliquent cette fonctionnalité peuvent changer les clés de chiffrement aussi souvent que chaque SMS, appel téléphonique ou actualisation de page. L'Internet Engineering Task Force a publié la norme Transport Layer Security afin d'imposer la confidentialité persistante parfaite pour toutes les sessions TLS.
Pourquoi la confidentialité persistante est-elle importante ?
La confidentialité persistante aide à protéger contre les attaques de type « enregistrer maintenant, déchiffrer plus tard ». Il est recommandé de partir du principe que tout le trafic transitant par un réseau public est enregistré, y compris tout ce qui est transmis par Internet ou par transmission sans fil. Sans confidentialité persistante, chaque message envoyé vers ou provenant d'un point d'extrémité spécifique pourrait être protégé par la même clé secrète. Si cette clé secrète était acquise par un pirate, soit en piratant le point d'extrémité, soit en compromettant la clé, tous les messages enregistrés par le passé seraient alors faciles à décrypter.
Avec la confidentialité persistante, chaque message est protégé par une clé différente. Cela signifie que si le certificat ou la clé à longue durée de vie utilisé lors de l'échange initial était volé ou piraté, il ne révélerait aucun contenu du message. Si la clé de session était piratée pour un message spécifique, elle ne révélerait que le contenu de ce message et aucun autre.
Comment fonctionne la confidentialité persistante parfaite ?
Le PFS comprend plusieurs étapes, qui incluent généralement une poignée de main et un échange de clés de session.
- Poignée de main ou authentification. Un point de terminaison contacte l'autre. Pour confirmer leur identité, un secret à longue durée de vie est utilisé. Il peut s'agir d'une clé pré-partagée, d'un mot de passe ou d'un certificat de clé publique. Cet échange initial est uniquement utilisé à des fins d'authentification, et même s'il peut fournir un cryptage, la communication via ce canal n'est pas considérée comme sécurisée.
- Échange de clés de session. Les deux points d'extrémité utilisent une méthode pour générer un secret partagé ou une clé de session, sans le transmettre. Cela se fait souvent à l'aide d'algorithmes d'échange de clés tels que Diffie-Hellman ou Rivest-Shamir-Adleman. Ce secret partagé est utilisé pour chiffrer le message unique.
- Répéter l'échange de clés. L'échange de clés est répété pour chaque nouveau message. Dans certains systèmes, les clés pour plusieurs messages sont générées en une seule fois afin d'éviter les échanges de communications actifs.
Heartbleed et confidentialité persistante parfaite
La confidentialité persistante parfaite a suscité davantage d'intérêt après la découverte du bug Heartbleed qui a affecté OpenSSL à partir de 2012. Cette vulnérabilité résulte d'une validation insuffisante des entrées lors de l'utilisation de l'extension heartbeat du protocole TLS.
Heartbleed est connu comme une vulnérabilité de type « buffer over-read ». Il permet à l'utilisateur de lire plus de données que ce qui est autorisé, divulguant ainsi une chaîne complète d'informations pouvant atteindre 64 kilo-octets. Les pirates pourraient exploiter le bug Heartbleed pour lire la mémoire privée du serveur, et si cette mémoire privée contenait la clé secrète, ils seraient alors en mesure de déchiffrer tout le trafic sécurisé de ce serveur.
Bien que Heartbleed ait été rendu public depuis 2014, il a démontré la simplicité d'une attaque OpenSSL et a suscité un débat autour des méthodes temporaires d'échange de clés. En ajoutant la confidentialité persistante, tout le trafic passé pouvait être considéré comme sûr.
Secret persistant parfait à l'usage
Depuis sa création, le secret parfait vers l'avant a été largement adopté par les fournisseurs d'informations et est reconnu comme une fonctionnalité de sécurité essentielle. Signal, un protocole de messagerie pour le chiffrement de bout en bout utilisé dans WhatsApp, Google Allo Messenger et les conversations Facebook, a popularisé le PFS. Connu sous le nom de système « double ratchet », le protocole Signal crée une nouvelle clé de chiffrement pour chaque message, offrant ainsi une sécurité vers l'avant et vers l'arrière. Plus récemment, il a également introduit une fonctionnalité qui permet aux messages de s'autodétruire.
En 2011, Google a fourni par défaut une confidentialité persistante parfaite aux utilisateurs de Gmail, Google Docs et de la recherche cryptée. X, anciennement Twitter, offre une confidentialité persistante parfaite à tous ses utilisateurs depuis 2013. En 2016, Apple a annoncé un nouveau protocole obligatoire pour toutes les applications iOS nécessitant l'utilisation d'App Transport Security, une fonctionnalité de sécurité qui utilise la confidentialité persistante parfaite.
Secret persistant dans le Wi-Fi
Le secret persistant parfait est une fonctionnalité obligatoire dans la dernière norme de sécurité Wi-Fi, Wi-Fi Protected Access 3 (WPA3). Elle n'était pas présente dans les versions précédentes du WPA grand public, de sorte que tout le trafic pouvait être déchiffré par toute personne disposant du secret partagé. Cela permettait à un pirate d'enregistrer tout le trafic sans fil sur un réseau et de le stocker pour des attaques hors ligne. Tout pirate disposant du mot de passe Wi-Fi pouvait lire tout le trafic sans fil.
C'est l'une des raisons pour lesquelles le Wi-Fi public est considéré comme extrêmement peu sûr. Par exemple, toute personne se trouvant dans un café équipé d'un réseau Wi-Fi partagé utilisant le protocole WPA ou WPA2 pourrait lire toutes les données transmises entre n'importe quel appareil et le routeur.
Au fur et à mesure que les réseaux sans fil ont progressé, les protocoles permettant de les sécuriser ont considérablement évolué. Découvrez les normes de sécurité des réseaux locaux sans fil et apprenez à distinguer clairement les différences entre WEP, WPA, WPA2 et WPA3.
