Le protocole Signal

Le double cliquet (Double Ratchet)

Le cliquet symétrique du chapitre 1 protège le passé, mais pas le futur après un vol. Signal résout ce problème en combinant deux cliquets. C'est l'algorithme du Double Ratchet (double cliquet), au cœur de Signal, WhatsApp, et de bien d'autres.

Deux cliquets, deux rôles

Le Double Ratchet fait tourner deux mécanismes qui s'imbriquent :

  • Le cliquet symétrique : une KDF appliquée à chaque message, comme au chapitre 1. Il assure la forward secrecy fine, message par message.
  • Le cliquet Diffie-Hellman : un nouvel échange DH effectué à chaque aller-retour de la conversation (quand on passe d'émetteur à récepteur). Son résultat est mélangé dans les clés. Il assure la sécurité post-compromission.

Le rôle du cliquet Diffie-Hellman

À chaque tour de parole, l'expéditeur joint une nouvelle clé publique DH éphémère à son message. Chaque partie combine sa clé privée avec la clé publique reçue pour produire un secret DH frais, qui vient réinitialiser les clés de chaîne.

C'est ce qui « répare » le système : si un attaquant a volé l'état à un instant donné, il connaît les clés de chaîne actuelles. Mais dès le prochain aller-retour, un nouveau DH introduit un secret qu'il ne possède pas (il faudrait voler aussi la nouvelle clé privée éphémère). À partir de là, il perd le fil — le système s'est auto-réparé.

        Cliquet DH (à chaque aller-retour)
   RK0 --DH frais--> RK1 --DH frais--> RK2 ...
        |                 |                |
        v                 v                v
   Cliquet symétrique (à chaque message)
    CK -KDF-> CK'      CK -KDF-> CK'    CK -KDF-> CK'
     |          |        |         |      |         |
    MK1        MK2      MK3       MK4    MK5       MK6

RK = clé racine (root key)   CK = clé de chaîne   MK = clé de message

La complémentarité

Les deux cliquets se répartissent le travail :

Cliquet Rythme Propriété assurée Protège…
Symétrique (KDF) chaque message forward secrecy fine le passé
Diffie-Hellman chaque aller-retour post-compromission le futur
  • Le cliquet symétrique, à sens unique, garantit que voler l'état ne révèle pas les messages passés.
  • Le cliquet DH, en injectant sans cesse de l'aléa neuf, garantit que le système redevient sûr après un vol : il protège le futur.

Ensemble, ils réduisent la portée d'une compromission à une fenêtre minuscule : au pire, quelques messages autour de l'instant du vol, jamais toute la conversation.

Une adoption massive

Cet algorithme, publié par Open Whisper Systems, n'est pas resté confidentiel : le protocole Signal équipe l'application Signal, mais aussi WhatsApp (plus de deux milliards d'utilisateurs), Messenger, Google Messages et d'autres. C'est aujourd'hui le standard de fait du chiffrement de bout en bout pour la messagerie.

En résumé

  • Le Double Ratchet combine un cliquet symétrique (KDF à chaque message) et un cliquet Diffie-Hellman (nouveau DH à chaque aller-retour).
  • Le cliquet symétrique assure la forward secrecy (protège le passé).
  • Le cliquet DH assure la sécurité post-compromission en réinjectant de l'aléa (protège le futur).
  • Il est utilisé par Signal, WhatsApp et beaucoup d'autres messageries.