Quand vous envoyez un message chiffré sur WhatsApp, Signal, Google Messages ou Hashe, un mécanisme invisible transforme votre texte en un flux de données illisible pour quiconque tente de l'intercepter. Ce mécanisme, c'est le protocole Signal. Il est aujourd'hui considéré comme l'étalon-or du chiffrement de bout en bout, et il protège les conversations de plus de deux milliards de personnes dans le monde.
Mais que se passe-t-il concrètement quand vous appuyez sur "Envoyer" ? Comment deux appareils qui ne se sont jamais parlé parviennent-ils à créer un secret partagé sans jamais le transmettre sur le réseau ? Pourquoi dit-on que même si un attaquant vole votre clé aujourd'hui, il ne pourra pas lire vos messages d'hier ? Ce guide technique répond à toutes ces questions.
1. L'histoire du protocole Signal
L'histoire commence en 2010, quand Moxie Marlinspike, chercheur en sécurité et hacker reconnu, fonde Whisper Systems avec Stuart Anderson. L'entreprise lance deux applications Android : TextSecure pour les SMS chiffrés et RedPhone pour les appels vocaux chiffrés. En 2011, Twitter rachète Whisper Systems. Marlinspike quitte Twitter en 2013 et fonde Open Whisper Systems, une organisation à but non lucratif.
C'est sous la bannière d'Open Whisper Systems que le protocole Signal prend forme. En 2013, Marlinspike et Trevor Perrin publient la première version du protocole, alors appelé Axolotl Ratchet. Il combine deux concepts fondamentaux : l'échange de clés Diffie-Hellman et le mécanisme de "ratchet" (cliquet) qui renouvelle les clés à chaque message.
En 2014, le protocole est intégré dans TextSecure. En novembre 2014, WhatsApp annonce un partenariat avec Open Whisper Systems pour intégrer le protocole dans sa messagerie. Le déploiement complet sera terminé en avril 2016, activant le chiffrement de bout en bout pour plus d'un milliard d'utilisateurs du jour au lendemain.
Le protocole est formellement renommé "Signal Protocol" et sa spécification est publiée ouvertement. Depuis, il est devenu le standard mondial du chiffrement de messagerie. Des audits indépendants réalisés par des universités et des laboratoires de cryptographie ont confirmé sa robustesse.
2. X3DH : l'échange de clés initial
Avant de pouvoir chiffrer un message, deux interlocuteurs doivent établir un secret partagé. C'est le rôle du protocole X3DH (Extended Triple Diffie-Hellman). Le défi est de taille : comment créer ce secret même si l'un des deux interlocuteurs est hors ligne ?
X3DH repose sur trois types de clés, toutes basées sur la courbe elliptique Curve25519 :
- Identity Key (clé d'identité) : Une paire de clés permanente, générée une seule fois à l'installation de l'application. Elle représente l'identité cryptographique de l'utilisateur. La clé privée ne quitte jamais l'appareil.
- Signed Pre-Key (clé pré-signée) : Une paire de clés rotative, renouvelée périodiquement (généralement toutes les semaines). Elle est signée par la clé d'identité pour prouver son authenticité.
- One-Time Pre-Key (clé à usage unique) : Un lot de clés générées à l'avance et déposées sur le serveur. Chaque clé n'est utilisée qu'une seule fois, puis supprimée. C'est ce qui garantit que chaque nouvelle conversation commence avec un matériau cryptographique frais.
Voici comment l'échange se déroule concrètement. Imaginons qu'Alice veut envoyer un message à Bob :
Étape 1 : Alice télécharge depuis le serveur le "pre-key bundle" de Bob, qui contient sa clé d'identité publique, sa clé pré-signée publique et l'une de ses clés à usage unique publiques.
Étape 2 : Alice génère une clé éphémère (ephemeral key) et réalise trois échanges Diffie-Hellman distincts :
- DH1 : clé d'identité d'Alice × clé pré-signée de Bob
- DH2 : clé éphémère d'Alice × clé d'identité de Bob
- DH3 : clé éphémère d'Alice × clé pré-signée de Bob
Un quatrième échange optionnel utilise la clé à usage unique de Bob (DH4 : clé éphémère d'Alice × One-Time Pre-Key de Bob).
Étape 3 : Les résultats de ces échanges sont combinés via une fonction de dérivation de clé (KDF, typiquement HKDF) pour produire un shared secret unique. Ce secret servira de point de départ au Double Ratchet.
L'élégance du système est que Bob n'a pas besoin d'être en ligne. Ses clés publiques sont déjà sur le serveur. Alice peut calculer le secret partagé seule, chiffrer son message, et l'envoyer. Quand Bob se connectera, il récupérera le message et pourra calculer le même secret partagé de son côté, car les mathématiques de Diffie-Hellman le permettent.
3. Double Ratchet : le chiffrement continu
Une fois le secret partagé établi par X3DH, le Double Ratchet prend le relais. C'est le coeur du protocole Signal, le mécanisme qui assure que chaque message est chiffré avec une clé différente et que ces clés évoluent constamment.
Le Double Ratchet combine deux mécanismes complémentaires :
Le Symmetric Ratchet (cliquet symétrique) : Après chaque message envoyé ou reçu, une fonction de dérivation de clé (KDF chain) génère une nouvelle clé de message à partir de la clé précédente. Ce procédé est à sens unique : connaissant la clé actuelle, il est impossible de retrouver les clés précédentes. Chaque message utilise donc une clé unique, calculée séquentiellement.
Le DH Ratchet (cliquet Diffie-Hellman) : À chaque tour de conversation (quand l'interlocuteur répond), un nouvel échange Diffie-Hellman est réalisé. Les deux parties génèrent de nouvelles clés éphémères et les utilisent pour recalculer un nouveau secret partagé. Ce nouveau secret "réinitialise" la chaîne symétrique, injectant du matériau cryptographique frais dans le système.
En pratique, le Double Ratchet maintient trois chaînes de clés simultanées :
- Root chain (chaîne racine) : La chaîne principale, alimentée par chaque nouvel échange DH. Elle produit les clés de départ pour les chaînes d'envoi et de réception.
- Sending chain (chaîne d'envoi) : Génère une nouvelle clé de chiffrement pour chaque message envoyé.
- Receiving chain (chaîne de réception) : Génère une nouvelle clé de déchiffrement pour chaque message reçu.
Le terme "ratchet" (cliquet) est choisi délibérément : comme un cliquet mécanique, le système ne peut avancer que dans un sens. Il est mathématiquement impossible de revenir en arrière pour recalculer une clé antérieure. Cette propriété est fondamentale pour les garanties de sécurité du protocole.
Chaque message est protégé par une clé qui n'a jamais existé avant lui et qui n'existera plus après. Compromettre une clé ne compromet qu'un seul message.
4. Perfect Forward Secrecy
La Perfect Forward Secrecy (PFS), ou confidentialité persistante, est l'une des propriétés les plus importantes du protocole Signal. Elle garantit que la compromission d'une clé à long terme ne permet pas de déchiffrer les messages passés.
Concrètement, voici comment ça fonctionne : chaque clé de message est utilisée une seule fois pour chiffrer un message, puis elle est immédiatement supprimée de la mémoire de l'appareil. Le Symmetric Ratchet avance, et la clé suivante est dérivée mathématiquement. Puisque la fonction de dérivation est à sens unique, retrouver la clé supprimée à partir de la clé actuelle est mathématiquement impossible.
Imaginons qu'un attaquant parvienne à obtenir votre clé d'identité privée (le pire scénario possible). Grâce à la PFS :
- Il ne peut pas déchiffrer les messages déjà échangés, car les clés de message ont été supprimées.
- Il ne peut pas recalculer les clés éphémères passées, car la fonction de dérivation est irréversible.
- Même s'il a enregistré tout le trafic chiffré transitant par le réseau, ces données restent illisibles.
Cette propriété est particulièrement importante face aux stratégies d'agences de renseignement qui collectent et stockent des communications chiffrées en masse dans l'espoir de pouvoir les déchiffrer plus tard. Avec la PFS, cette stratégie échoue : les clés n'existent plus nulle part.
5. Post-Compromise Security
La Post-Compromise Security (PCS), également appelée "Future Secrecy" ou "self-healing", est la propriété complémentaire de la PFS. Là où la PFS protège les messages passés, la PCS protège les messages futurs après une compromission.
Voici le scénario : un attaquant parvient à compromettre l'état cryptographique complet d'un appareil à un instant T. Il obtient toutes les clés en mémoire. Grâce au DH Ratchet du protocole Signal, dès que l'interlocuteur répond, un nouvel échange Diffie-Hellman est réalisé avec de nouvelles clés éphémères. Ce nouvel échange injecte du matériau cryptographique frais que l'attaquant ne possède pas.
Résultat : la sécurité de la conversation est automatiquement restaurée après quelques échanges de messages. L'attaquant perd sa capacité à déchiffrer les messages futurs sans avoir besoin de réinitialiser la conversation ou de générer de nouveaux comptes.
Cette propriété est exceptionnelle. La plupart des protocoles de chiffrement ne l'offrent pas. Si un attaquant compromet une clé TLS, par exemple, il peut déchiffrer tout le trafic futur jusqu'au renouvellement du certificat. Avec le protocole Signal, la fenêtre de vulnérabilité se referme automatiquement en quelques messages.
Le protocole Signal se répare de lui-même. Même si un attaquant obtient vos clés aujourd'hui, la conversation retrouve sa sécurité dès les prochains échanges.
6. Qui utilise le protocole Signal ?
Le protocole Signal est devenu le standard de facto pour le chiffrement de messagerie. Voici les principales applications qui l'implémentent :
- WhatsApp : Plus de 2 milliards d'utilisateurs. Le déploiement du protocole Signal a été achevé en avril 2016, faisant de WhatsApp la plus grande implémentation du chiffrement de bout en bout au monde. Le contenu des messages est protégé, mais Meta collecte les métadonnées.
- Google Messages (RCS) : Google a intégré le protocole Signal dans Google Messages pour les conversations RCS. Avec l'adoption croissante du RCS (y compris par Apple depuis iOS 18), des centaines de millions d'utilisateurs supplémentaires bénéficient de ce chiffrement.
- Facebook Messenger : Depuis décembre 2023, Meta a activé le chiffrement de bout en bout par défaut pour toutes les conversations Messenger, utilisant une implémentation du protocole Signal. C'était un chantier technique majeur qui a pris plusieurs années.
- Skype Private Conversations : Microsoft a intégré le protocole Signal dans Skype pour les conversations privées, bien que cette fonctionnalité doive être activée manuellement.
- Signal : L'application Signal, développée par la Signal Foundation, est l'implémentation de référence du protocole. Elle offre la meilleure protection contre la collecte de métadonnées grâce à des technologies complémentaires comme le Sealed Sender.
- Hashe : Conçue en France, Hashe implémente le protocole Signal complet et y ajoute le Sealed Sender, le message padding et l'anonymat total (aucun identifiant personnel requis).
Au total, le protocole Signal protège les conversations de plus de trois milliards de personnes. C'est une réussite remarquable pour un protocole né dans un petit laboratoire de cryptographie.
7. PQXDH et résistance quantique
L'avènement des ordinateurs quantiques représente une menace théorique pour les systèmes cryptographiques actuels. Un ordinateur quantique suffisamment puissant pourrait briser les échanges Diffie-Hellman sur courbes elliptiques en temps polynomial grâce à l'algorithme de Shor. Le protocole Signal n'a pas attendu que cette menace devienne réalité pour s'y préparer.
En septembre 2023, Signal a annoncé le protocole PQXDH (Post-Quantum Extended Diffie-Hellman), qui remplace X3DH pour l'établissement initial des sessions. PQXDH combine deux approches :
- X25519 : L'échange Diffie-Hellman classique sur Curve25519, éprouvé et fiable contre les ordinateurs classiques.
- CRYSTALS-Kyber (ML-KEM) : Un mécanisme d'encapsulation de clés basé sur des problèmes de réseaux euclidiens (lattice-based), résistant aux attaques quantiques. Kyber a été sélectionné par le NIST comme standard post-quantique.
L'approche est hybride : les deux mécanismes sont combinés de sorte que la sécurité est assurée tant que l'un des deux reste sûr. Si Kyber présente une vulnérabilité inattendue, X25519 protège toujours. Si un ordinateur quantique brise X25519, Kyber assure la résistance.
En 2024 et 2025, la recherche a progressé vers le SPQR Triple Ratchet, qui étend la protection post-quantique au-delà de l'échange initial. L'objectif est de protéger également le Double Ratchet contre les attaques quantiques, en remplaçant les échanges DH éphémères par des mécanismes KEM post-quantiques à chaque étape du ratchet.
Ces avancées garantissent que les messages chiffrés aujourd'hui resteront illisibles même lorsque les ordinateurs quantiques seront opérationnels. C'est une protection contre la stratégie "harvest now, decrypt later" employée par certaines agences de renseignement qui stockent des communications chiffrées en attendant de pouvoir les déchiffrer avec des technologies futures.
Hashe et le protocole Signal
Hashe implémente le protocole Signal complet : X3DH pour l'échange de clés, Double Ratchet pour le chiffrement continu, Curve25519, AES-256 et HMAC-SHA256. En plus du protocole Signal, Hashe ajoute le Sealed Sender pour masquer l'expéditeur, ainsi qu'un message padding en blocs de 160 octets pour empêcher l'analyse de trafic. Conçue en France, open source et sans aucun identifiant personnel requis.
Télécharger Hashe8. En résumé
Le protocole Signal est le fruit de plus d'une décennie de recherche en cryptographie appliquée. Son architecture, fondée sur X3DH et le Double Ratchet, offre des propriétés de sécurité que peu d'autres protocoles peuvent égaler : chiffrement de bout en bout, Perfect Forward Secrecy, Post-Compromise Security.
Sa force réside aussi dans sa transparence. Le protocole est entièrement spécifié, open source et audité indépendamment. Il n'y a pas de "boîte noire" ni de secret propriétaire. N'importe quel cryptographe peut en vérifier la robustesse, et beaucoup l'ont fait.
Avec l'arrivée de PQXDH et les travaux sur le SPQR Triple Ratchet, le protocole Signal se prépare déjà à un monde post-quantique. Les messages chiffrés aujourd'hui sont conçus pour rester protégés pendant des décennies.
Mais le protocole Signal ne protège que le contenu des messages. Pour une protection complète, il faut également protéger les métadonnées (qui parle à qui), l'identité de l'expéditeur (Sealed Sender), la taille des messages (padding) et les données locales. C'est l'approche adoptée par Hashe, qui combine le protocole Signal avec des couches de protection supplémentaires pour offrir une sécurité sans compromis.