Le Protocole Signal expliqué en détail
Le Protocole Signal (Signal Protocol) est l’un des protocoles de chiffrement de bout en bout les plus sécurisés et les plus utilisés au monde. Il est au cœur de l’application Signal, WhatsApp, Facebook Messenger (conversations secrètes) et bien d’autres.
1. Qu’est-ce que le Protocole Signal ?
C’est un protocole de chiffrement open-source développé par Open Whisper Systems. Il permet un chiffrement de bout en bout asynchrone (les utilisateurs n’ont pas besoin d’être en ligne en même temps).
2. Les deux composants principaux
A. X3DH (Extended Triple Diffie-Hellman)
C’est la « poignée de main » initiale qui permet à deux utilisateurs d’établir un secret partagé même si l’un est hors ligne. Depuis 2023-2025, une version post-quantique (PQXDH) a été ajoutée pour résister aux futurs ordinateurs quantiques.
B. Double Ratchet (Double Cliquet)
C’est le mécanisme principal qui assure une sécurité évolutive. Il combine :
- Symmetric-key ratchet : nouvelle clé à chaque message (Forward Secrecy)
- Diffie-Hellman ratchet : échange régulier de nouvelles clés (Post-Compromise Security)
3. Propriétés de sécurité
- Forward Secrecy : Les anciens messages restent protégés même si une clé est compromise plus tard.
- Post-Compromise Security : La conversation peut se rétablir après une compromission (ex. : téléphone volé).
- Confidentialité & Intégrité : Seuls les destinataires peuvent lire les messages.
- Dénégabilité cryptographique : Difficile de prouver à un tiers qui a envoyé quoi.
- Asynchronisme : Fonctionne même si l’autre personne est hors ligne.
4. Comparaison
| Aspect | Chiffrement classique | Protocole Signal |
|---|---|---|
| Qui peut lire ? | Le serveur (Meta, etc.) | Seulement les deux utilisateurs |
| Téléphone compromis | Historique exposé | Anciens messages protégés |
| Après compromission | Sécurité perdue | Peut se rétablir |
5. Limites
- Les métadonnées (qui parle à qui, quand) ne sont pas entièrement cachées.
- Dépend de la sécurité de l’appareil de l’utilisateur.
- Le serveur doit distribuer les pré-clés (mais ne voit jamais le contenu).