Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
messagerie-instantanee:xmpp:omemo [22/12/2025 17:12] – créée - théorie Codimpmessagerie-instantanee:xmpp:omemo [26/12/2025 12:15] (Version actuelle) – typo et inversion Codimp
Ligne 1: Ligne 1:
 # OMEMO # OMEMO
  
-OMEMO (pour « OMEMO Multi-End Message and Object Encryption ») est l'extension XMPP qui permet le chiffrement de bout en bout des informations (messages, fichiers, etc) sur XMPP. Il utilise pour cela l'algorythme dit [« Double Cliquet »](https://fr.wikipedia.org/wiki/Algorithme_%C3%A0_Double_Ratchet) ([« Double Ratchet »](https://en.wikipedia.org/wiki/Double_Ratchet_Algorithm) en anglais).+OMEMO (pour « OMEMO Multi-End Message and Object Encryption ») est l'extension XMPP qui permet le chiffrement de bout en bout des informations (messages, fichiers, etc) sur XMPP. Il utilise pour cela l'algorithme dit [« Double Cliquet »](https://fr.wikipedia.org/wiki/Algorithme_%C3%A0_Double_Ratchet) ([« Double Ratchet »](https://en.wikipedia.org/wiki/Double_Ratchet_Algorithm) en anglais).
  
 C'est donc surtout une manière de chiffrer les communications sur XMPP. Mais comme toujours avec le chiffrement, c'est complexe et quand on ne le comprend pas ça peut mener à des soucis. C'est pourquoi je fais cette page : permettre au plus grand nombre de comprendre OMEMO afin de bien l'utiliser, bien diagnostiquer les problèmes et bien les résoudre. C'est donc surtout une manière de chiffrer les communications sur XMPP. Mais comme toujours avec le chiffrement, c'est complexe et quand on ne le comprend pas ça peut mener à des soucis. C'est pourquoi je fais cette page : permettre au plus grand nombre de comprendre OMEMO afin de bien l'utiliser, bien diagnostiquer les problèmes et bien les résoudre.
Ligne 42: Ligne 42:
  
 - Le client XMPP sur l'appareil de Tom va aller demander au serveur XMPP de Jerry « C'est quoi la clé d'identité publique de l'appareil de Jerry ? » - Le client XMPP sur l'appareil de Tom va aller demander au serveur XMPP de Jerry « C'est quoi la clé d'identité publique de l'appareil de Jerry ? »
-  - Le serveur XMPP de Jerry va lui répondre « C'est la clé **A** »+  - Le serveur XMPP de Jerry va lui répondre « C'est la clé **B** »
 - Idem, le client XMPP sur l'appareil de Jerry va aller demander au serveur XMPP de Tom « C'est quoi la clé d'identité publique de l'appareil de Tom ? » - Idem, le client XMPP sur l'appareil de Jerry va aller demander au serveur XMPP de Tom « C'est quoi la clé d'identité publique de l'appareil de Tom ? »
-  - Le serveur XMPP de Tom va lui répondre « C'est la clé **B** »+  - Le serveur XMPP de Tom va lui répondre « C'est la clé **A** »
 - Tom et Jerry vont alors vérifier les **empreintes** de leurs clés via un autre canal de confiance (en se rencontrant physiquement, etc) - Tom et Jerry vont alors vérifier les **empreintes** de leurs clés via un autre canal de confiance (en se rencontrant physiquement, etc)
   - Tom va dire à Jerry « Ma clé c'est bien **A** »   - Tom va dire à Jerry « Ma clé c'est bien **A** »
   - Jerry va dire à Tom « Ma clé c'est bien **B** »   - Jerry va dire à Tom « Ma clé c'est bien **B** »
 - Tom va alors envoyer un premier message à Jerry - Tom va alors envoyer un premier message à Jerry
-  - Immédiatement, leurs appareils vont "échanger" une première **clé de session** (à l'aide d'un algorythme [Diffie-Hellman](https://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman)) qu'on va nommer **S-1**+  - Immédiatement, leurs appareils vont "échanger" une première **clé de session** (à l'aide d'un algorithme [Diffie-Hellman](https://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9s_Diffie-Hellman)) qu'on va nommer **S-1**
     - À partir de cette clé de session **S-1**, Une clé de message est générée, qu'on va nommer **M-1**     - À partir de cette clé de session **S-1**, Une clé de message est générée, qu'on va nommer **M-1**
 - Le message de Tom est chiffré avec cette clé de message **M-1** et envoyé à l'appareil de Jerry - Le message de Tom est chiffré avec cette clé de message **M-1** et envoyé à l'appareil de Jerry
Ligne 57: Ligne 57:
 - Jerry envois ensuite 2 autres messages, cette fois pas de nouvelle clé de session, la clé de message **M-3** est dérivée de la clé de message **M-2** et la clé **M-4** est dérivée de **M-3**, etc - Jerry envois ensuite 2 autres messages, cette fois pas de nouvelle clé de session, la clé de message **M-3** est dérivée de la clé de message **M-2** et la clé **M-4** est dérivée de **M-3**, etc
  
-## Des vidéos pour mieux comprendre+### Des vidéos pour mieux comprendre
  
-Voici deux vidéos que je recommande pour comprendre l'algorythme derrière OMEMO, elles sont en anglais mais des pistes audio en français sont disponibles :+Voici deux vidéos que je recommande pour comprendre l'algorithme derrière OMEMO, elles sont en anglais mais des pistes audio en français sont disponibles :
  
 - [Double ratchet algorithm: The ping-pong game encrypting Signal and WhatsApp](https://www.youtube.com/watch?v=7uEeE3TUqmU) - [Double ratchet algorithm: The ping-pong game encrypting Signal and WhatsApp](https://www.youtube.com/watch?v=7uEeE3TUqmU)
 - [Double Ratchet Messaging Encryption - Computerphile](https://www.youtube.com/watch?v=9sO2qdTci-s) - [Double Ratchet Messaging Encryption - Computerphile](https://www.youtube.com/watch?v=9sO2qdTci-s)
 +
 +## Utiliser OMEMO via nos clients
 +
 +Ici je vais parler un peu des client que je recommande et comment utiliser OMEMO avec. Mais avant tout regardons ensemble les bonnes pratiques à appliquer.
 +
 +### Les bonnes pratiques
 +
 +Voici quelques bonnes pratiques que vous devriez idéalement **toujours** appliquer sur XMPP avec vos correspondant·es, en discussion à 2 ou en groupe :
 +
 +- **Activer OMEMO par défaut** : Tous les bons clients XMPP vous permettent d'activer/désactiver OMEMO globalement mais aussi par conversation. Vous devriez toujours l'activer par défaut.
 +
 +- **Vraiment vérifier les empreintes** : Quand vous ajoutez un nouveau contact, vous devriez systèmatiquement vérifier mutuellement vos empreintes de clés OMEMO. Vous pouvez éventuellement publier vos empreintes si vous avez un site web ([les miennes sont ici](https://toutetrien.lithio.fr/.well-known/omemo.txt)). Vérifiez ensemble vos empreintes via un canal de confiance (qui vous permet de prouver vos identités).
 +
 +- **Être vigilant·e si de nouvelles clés se présentent** : Il arrivera qu'un de vos contact ai soudain une nouvelle clé OMEMO, la plupart du temps sans qu'il vous en ai averti avant. Cela devrait déclencher une petite alerte dans votre tête : demandez-lui immédiatement de vérifier cette nouvelle clé via son empreinte ! Soit en vous la confirmant via un autre appareil dont vous avez déjà vérifié la clé, soit via un autre canal de confiance si c'était son seul appareil. Évitez de discuter de quoi que ce soit d'autre tant que cette nouvelle clé n'est pas vérifiée, sauf preuve du contraire une nouvelle clé non-vérifiée doit être considéré comme celle d'un attaquant.
 +
 +- **Ne pas faire vos tests de clients avec votre compte principal** : Il arrive que des personnes test plein de clients XMPP, ce qui génére donc sur leur compte plein de clés OMEMO qu'ils ne vont pas utiliser ensuite. Cela confuse énormément leurs correspondant·es qui vont alors arrêter de faire confiance à ces personnes et croire aveuglément toute nouvelle clé qui apparait. C'est le meilleur moyen pour détruire tout le principe de confiance des clés OMEMO. Si vous voulez tester plein de clients, faites un compte de test pour ne pas embêter les personnes qui discutent avec vous.
 +
 +### Gajim
 +
 +Sur [Gajim](https://gajim.org) vous pouvez :
 +
 +- Activer OMEMO par défaut : Via les **Préférences** (l'icône d'engrenage en bas à gauche), sélectionnez votre compte, puis dans l'onglet **Confidentialité** règlez la **Méthode de chiffrement par défaut** sur *OMEMO*.
 +
 +- Activer OMEMO par conversation : Via **Choisir un chiffrement** (l'icône de cadena en bas à droite d'une conversation) et en sélectionnant **OMEMO**.
 +
 +- Voir vos propres empreintes de clés d'identité : Via les **Préférences** (l'icône d'engrenage en bas à gauche), sélectionnez votre compte, puis dans l'onglet **Chiffrement (OMEMO)** vous pouvez voir l'*Empreinte pour cet appareil* ainsi que les *Autres appareils connectés à votre compte*.
 +
 +- Activer/désactiver la confiance aveugle dans les clés d'identité : Via les **Préférences** (l'icône d'engrenage en bas à gauche), sélectionnez votre compte, puis dans l'onglet **Chiffrement (OMEMO)** vous pouvez activer ou non la **Confiance aveugle**.
 +
 +- Vérifier les empreintes des personnes dans une conversation : En faisant un clic-droit sur l'avatar d'une personne, puis **détails** et en allant dans l'onglet **Chiffrement (OMEMO)**.
 +
 +### Conversations
 +
 +Sur [Conversations](https://conversations.im) vous pouvez :
 +
 +- Activer OMEMO par défault : **Menu** (les trois points en haut à droite), puis **Paramètres**, section **Sécurité**, dans **Chiffrement OMEMO** sélectionnez **Activé par défaut** ou **Toujours**.
 +
 +- Activer OMEMO par conversation : Dans une conversation, sélectionnez la cadena en haut, puis **OMEMO**.
 +
 +- Voir vos propres empreintes de clés d'identité : **Menu** (les trois points en haut à droite), puis **Gérer les comptes**, sélectionner votre compte, en bas vous pouvez voir l'empreinte de cet appareil sous **Votre nom** et plus bas les empreintes des **Autres appareils**.
 +
 +- Activer/désactiver la confiance aveugle dans les clés d'identité : **Menu** (les trois points en haut à droite), puis **Paramètres**, section **Sécurité**, cochez ou non **Faire aveuglément confiance avant vérification**.
 +
 +- Vérifier les empreintes des personnes dans une conversation : Dans une conversation, appuyez longtemps sur l'image d'une personne, puis **Détails du contact**, en bas vous pouvez voir les clés OMEMO et activer/désactiver la confiance.
 +
 +## Questions et problèmes fréquents
 +
 +Voici les questions qu'on voient souvent posés sur OMEMO mais aussi les problèmes les plus fréquents et comment les résoudre.
 +
 +### C'est vraiment utile de chiffrer ?
 +
 +Oui, de manière générale si on a le choix entre chiffrer et ne pas chiffrer je considère qu'il vaut mieux chiffrer. Typiquement « est-ce que c'est utile de chiffrer ? » est une question que beaucoup de personnes se posent mais la question est dans le mauvais sens, il faut plutôt ce demander « Est-ce qu'il y a vraiment une bonne raison de **ne pas** chiffrer ? »
 +
 +Tout dépend bien sur du modèle de menace qui s'applique à nous, nos interlocuteurs ou nos groupes, mais de manière générale et sans plus d'infos sur les modèles de menace je considère qu'il vaut mieux chiffrer par défaut.
 +
 +### C'est complexe tout ça et trop compliqué, pourquoi ce n'est pas plus simple ?
 +
 +La sécurité nécessite toujours des connaissances, des apprentissages et des compromis. Ces méthodes sont nécessaires pour bien vérifier avec qui on parle et que personne ne lis nos conversations privées.
 +
 +Les personnes qui concoivent les protocoles et logiciels tentent régulièrement de faciliter l'usage du chiffrement, mais il faudra toujours apprendre à s'en servir correctement. Croyez-moi ça en vaut la peine.
 +
 +### C'est quoi la confiance aveugle ?
 +
 +La confiance aveugle avant vérification (nommé *BTBV* en anglais pour *« Blind Trust Before Verification »*), est une méthode popularisée par le client Conversations.
 +
 +Le principe est simple : Permettre de faire fonctionner OMEMO sans valider les clés la première fois qu'on les vois pour faciliter l'accès au chiffrement. C'est censé être temporaire, le temps de valider la nouvelle clé. Hélas beaucoup de personnes ne font que de la confiance aveugle et ne valident jamais sérieusement les clés OMEMO.
 +
 +Pensez toujours à valider les clés OMEMO que vous recevez rapidement et encouragez vos correspondant·es à faire de même.
 +
 +### J'ai lu que la version d'OMEMO est trop vieille ou que ce n'est pas assez sécurisé, c'est vrai ?
 +
 +En fait il existe actuellement 2 grandes versions d'OMEMO :
 +
 +- OMEMO `0.3` (dit « OMEMO 1 ») : Version la plus implémentée. Le contenu des message est chiffré mais pas les metadonnées qui l'entoure (dans le XML).
 +- OMEMO `0.8+` (dit « OMEMO 2 ») : Version peu implémentée. Le contenu des messages et leurs metadonnées sont chiffrés.
 +
 +OMEMO 2 est incompatible avec OMEMO 1, ce qui fait que n'importe quel client qui l'implémenterai ne pourrait plus communiquer avec les autres qui ne l'auraient pas encore fait (ou qui ne gérerait pas les 2 versions "à la fois") : c'est d'ailleur déjà le cas de clients qui implémentent OMEMO 2 comme [Kaidan](https://www.kaidan.im).
 +
 +En soit on serait ravis d'avoir enfin OMEMO 2 partout mais ça demande beaucoup de travail de la part des développeur·euses et de test que très peu de gens font (la cryptographie c'est complexe), on a pas encore les outils logiciels pour faire ça dans tous les langages de programmation. Mais si des personnes veulent s'y attaquer ça serait super !
 +
 +Concernant la sécurité : parler en absolu ne fonctionne pas (autant de la part des personnes qui disent que "c'est parfait" que de la part des personnes qui disent "c'est nul"). Il y a les mathématiques d'un côté avec les meilleures formules du monde qu'on puisse avoir et la réalité du monde véritable de l'autre : Il faut toujours concevoir ses mesures de sécurité en fonction de son modèle de menace, et un algorithme de sécurité qui n'est pas adapté pour quelqu'un peut l'être pour quelqu'un d'autre avec un autre modèle. Ce n'est pas "tout bien" ou "tout naze", il y a des situations, des cas d'usages, des compromis, etc.