Clavenzo
Français
Gratuit

Comment fonctionne Clavenzo

Vue d'ensemble, en langage clair, sans rien omettre d'important. En version courte : votre téléphone ou votre ordinateur fabrique une clé, la clé est votre adresse, et tout ce qui circule entre deux appareils est chiffré avec des clés que seuls ces deux-là détiennent.

Votre identité est une clé, pas un compte

La plupart des messageries commencent par demander un numéro de téléphone. Ce numéro est délivré par un opérateur, rattaché à un nom légal, transférable par quiconque sait convaincre un vendeur, et consultable par tous ceux qui l'ont. C'est une mauvaise fondation pour une conversation privée.

Clavenzo commence autrement. À la première ouverture, l'application génère une paire de clés cryptographiques sur l'appareil. La moitié publique devient votre adresse. La moitié privée reste sur l'appareil. Elle n'est jamais sauvegardée dans un nuage et jamais détenue par nous. Elle ne quitte l'appareil que si vous l'exportez vous-même, scellée par un code à usage unique.

Votre adresse s'affiche de deux façons : un code de 16 caractères que vous pouvez dicter ou coller, et un QR que l'on peut scanner. Il existe aussi un code plus court, servant uniquement à vérifier que vous parlez à la bonne personne : trop court pour ajouter quelqu'un, assez long pour être comparé à voix haute.

L'écran d'identité de Clavenzo : un QR code, le code complet en dessous et le code court qui sert à vérifier à qui vous parlez.

Ce qui se passe quand vous appelez

Deux téléphones doivent se trouver, puis s'accorder sur une clé. Clavenzo fait la seconde partie d'une manière qui rend la première sans intérêt pour qui écoute.

  1. Se trouver. Si vous appelez quelqu'un qui figure sous À proximité sur le même Wi-Fi, les téléphones se connectent directement et aucun serveur n'intervient. Sinon, un petit service de rendez-vous remet une offre scellée et les deux téléphones tentent d'établir un chemin direct entre eux. Pour cela, chaque téléphone communique à l'autre ses adresses réseau, si bien que l'application de l'autre personne apprend votre adresse IP.
  2. Se mettre d'accord sur une clé. Les deux appareils effectuent un échange X25519 éphémère et signé, puis, un instant après la connexion, y ajoutent un échange de clés post-quantique, ML-KEM-768. « Éphémère » est le mot important : les clés sont créées pour ce seul appel et détruites à la fin.
  3. Parler. La parole est encodée en 33 octets toutes les 20 millisecondes, et chacun de ces paquets est chiffré et authentifié séparément. Pour qui observe le réseau, le contenu ressemble à un bruit aléatoire, même si le rythme des paquets peut encore révéler quand quelqu'un parle.
  4. Vérifier. Les deux téléphones dérivent quatre mots de la clé réellement convenue. Lisez-les à voix haute. S'ils concordent sur les deux écrans, il n'y a pas de tiers au milieu.

Cette dernière étape est celle qu'on saute et celle qui compte le plus. Le chiffrement garantit que celui qui détient l'autre clé peut vous lire. Il ne peut pas, à lui seul, vous dire qui c'est. Les quatre mots sont la façon de le savoir.

L'écran d'appel de Clavenzo pendant un appel : l'appelant, la durée, le choix entre HD et standard, et les quatre mots de sécurité à lire à voix haute.

Pourquoi l'enregistrement de l'appel d'aujourd'hui reste illisible

Il existe une attaque courante et réaliste qui consiste à être patient : enregistrer maintenant le trafic chiffré, obtenir la clé plus tard (par réquisition, par vol, en pénétrant un appareil des années après) puis déchiffrer tranquillement.

Les clés éphémères la mettent en échec. La clé qui a réellement chiffré votre appel a existé le temps de l'appel, sur deux appareils, et a été détruite à la fin. Votre clé d'identité durable ne fait que signer l'échange ; elle ne chiffre pas une seconde d'audio. La compromettre demain permet de vous usurper demain. Elle ne permet pas d'ouvrir ce qui a été enregistré hier.

Cette propriété s'appelle la confidentialité persistante, et c'est la chose la plus précieuse qu'un appel chiffré puisse avoir.

Chaque appel renouvelle aussi ses clés avec ML-KEM-768, un algorithme post-quantique, une fraction de seconde après la connexion, quand les deux applications le prennent en charge. Il répond au même attaquant patient muni d'un meilleur outil : un trafic enregistré maintenant et ouvert plus tard par un ordinateur quantique. Pour les messages et les fichiers, c'est différent, pour l'instant. Ils sont scellés avec RSA et ML-KEM-768 ensemble, mais aujourd'hui la clé ML-KEM est dérivée de la clé RSA, donc nous ne les disons pas encore post-quantiques. Et un message qui attend sur le serveur pour un téléphone éteint n'a pas de confidentialité persistante : quelqu'un qui l'aurait enregistré et obtiendrait plus tard la clé d'identité du destinataire pourrait l'ouvrir.

Ce que fait le serveur, et ce qu'il ne peut pas faire

Il y a une tâche qu'une application pair-à-pair ne peut pas accomplir seule : réveiller un téléphone dont l'application est fermée. Un service de rendez-vous existe pour cela, conçu pour en savoir le moins possible tout en le faisant.

  • Il ne voit jamais le contenu. Les offres et les messages hors ligne sont scellés avec la clé du destinataire avant de quitter votre téléphone. Le service stocke des octets qu'il ne peut pas ouvrir.
  • Il ne connaît pas votre nom. Son annuaire contient l'adresse de chaque appareil, ses clés publiques et sa plateforme, et, pour un téléphone, son jeton de notification. Il n'a ni noms, ni numéros de téléphone, ni adresses e-mail, parce que l'application n'en demande jamais. Quiconque possède une adresse peut demander si elle est enregistrée.
  • Ses notifications ne portent ni expéditeur ni contenu. L'avis qui réveille votre téléphone dit seulement s'il s'agit d'un appel ou d'un message. Sur iPhone, une notification de message affiche « New message » et « Tap to read ». Apple et Google voient qu'un avis est parti, et quand ; ils ne voient ni quoi ni de qui.
  • Il oublie vite. Une invitation d'appel vit 60 secondes. Un message scellé hors ligne, 72 heures au plus. Un enregistrement d'appareil expire après 30 jours sans renouvellement.
  • Il voit qui appelle qui, le temps de l'attente. Une invitation d'appel ou un message hors ligne doit nommer la clé à laquelle il est destiné et celle dont il vient, donc le serveur voit passer les deux. Il ne garde aucune trace de la paire une fois l'invitation ou le message disparu : une invitation est oubliée au bout de 60 secondes et un message au bout de 72 heures au plus. Masquer aussi l'expéditeur (l'expéditeur scellé) figure sur notre liste. Nos serveurs se trouvent derrière Cloudflare, qui voit les mêmes informations, et jamais le contenu.

Quand un appel ne peut pas passer en direct, le plus souvent parce que les deux réseaux le refusent (ce qui arrive chez certains opérateurs mobiles), un relais transmet les paquets chiffrés : notre propre relais en UDP, puis en TCP, puis les relais de Cloudflare. Le relais ne fait que transmettre les données. Il n'a pas de clé et ne peut pas en obtenir. Il voit en revanche les adresses IP des deux appareils. Aucun réglage ne permet aujourd'hui de faire passer chaque appel par un relais, et lors de chaque appel, relayé ou non, chaque appareil apprend l'adresse IP de l'autre.

Des appels sur le même Wi-Fi

Deux appareils sur le même réseau Wi-Fi, ou reliés au même partage de connexion, peuvent se trouver et tenir un appel chiffré complet sans connexion Internet et sans serveur. Aujourd'hui, cela fonctionne sur Android une fois que le téléphone appelé a touché Prêt à recevoir, sur iPhone tant que Clavenzo y est ouvert, et sur un ordinateur tant que Clavenzo tourne ; l'iPhone peut demander l'autorisation d'utiliser le réseau local. Les messages et les fichiers passent de la même façon, chiffrés, tant que l'application est ouverte sur les deux appareils.

Ce n'est pas un mode de secours moins sûr. C'est le même chiffrement et les mêmes mots de sécurité, l'étape de rendez-vous étant remplacée par une découverte locale. C'est utile en avion, dans un bâtiment sans réseau, sur un site doté d'un réseau privé, et partout où Internet est peu fiable ou peu bienvenu.

Clavenzo en attente d'un appel sur le Wi-Fi local, avec les étapes de mise en place de l'appel listées dans l'ordre.

Quand les choses cassent

Clavenzo a été conçu autour d'une question difficile : qu'est-ce qui fonctionne encore quand tout va mal ? Une tempête met à terre un centre de données. Un pays bride ses connexions. Un hébergeur disparaît. Les antennes tombent et il ne reste qu'un réseau local. Chacun de ces cas a sa réponse ci-dessous.

  • Aucun internet. Les téléphones sur le même Wi-Fi ou point d'accès peuvent s'appeler directement, dans les limites décrites plus haut. Pas de serveur, rien hors de la pièce.
  • Les serveurs sont petits, et il y en a plusieurs. Ils ne font que présenter deux téléphones et garder des messages scellés. L'audio et la vidéo ne les traversent jamais sauf si un relais est nécessaire, si bien que tout le service tourne sur une poignée de petites machines chez des hébergeurs différents, à des endroits différents.
  • Aucun d'eux n'est indispensable. Votre téléphone s'inscrit auprès de chaque serveur et relève le courrier de chacun. Si l'un tombe, les autres continuent, et un appel est décroché via le serveur qui l'a livré.
  • La liste des serveurs est signée. Les téléphones la récupèrent auprès des serveurs eux-mêmes et la vérifient avec une clé qui ne touche jamais un serveur. De nouveaux serveurs peuvent s'ajouter sans mise à jour de l'application, et une ancienne liste ne peut jamais être rejouée pour envoyer les téléphones là où ils ne devraient pas aller.
  • Pas de DNS, pas de problème. La liste contient des adresses réseau brutes avec certificats épinglés, si bien que les téléphones peuvent joindre un serveur quand un serveur de noms est en panne ou ment, ou qu'un réseau de diffusion de contenu tombe, sans faire confiance à aucune autorité de certification.
  • Deux relais, une échelle. Quand deux réseaux refusent un chemin direct, un relais transporte l'appel chiffré : notre propre relais en UDP, puis en TCP, puis les relais de Cloudflare. Si l'un tombe en panne, vous perdez un barreau, pas l'appel.
  • Liens maigres et instables. La voix demande 13,2 kbit/s. Le tampon de gigue mesure le réseau et s'y adapte, les paquets perdus sont masqués au lieu de claquer, et les gros fichiers se mettent en pause et reprennent tout seuls.
  • Réseaux qui s'en mêlent. Les proxys SOCKS5 et HTTP CONNECT sont intégrés, pour les réseaux qui en imposent un ou dont le résolveur local est bloqué ou falsifié.

Messages, photos, fichiers et messages vocaux

La messagerie repose sur le même chiffrement. Le texte, les photos, les fichiers et les messages vocaux sont chiffrés pour le destinataire, et la conversation est stockée dans l'espace privé de l'application sur votre téléphone. Cet espace est protégé par le chiffrement et le verrouillage d'écran du téléphone lui-même, et il est exclu des sauvegardes Google et iCloud. Sur un ordinateur, les conversations sont conservées dans le dossier propre à l'application, sous votre compte utilisateur.

Un message destiné à quelqu'un dont le téléphone est éteint est scellé avec sa clé et laissé au service de rendez-vous, qui le garde 72 heures au plus sans pouvoir en lire un seul octet.

Les fichiers de plus de 1 Mo sont une exception délibérée : ils voyagent de téléphone à téléphone uniquement, jamais par un serveur. Si aucun chemin direct n'est encore disponible, le transfert attend et reprend tout seul, plutôt que d'acheminer discrètement votre gros fichier par la machine d'un autre.

Il y a aussi les messages éphémères, par conversation, décomptés depuis votre envoi et depuis leur lecture ; les accusés de lecture, désactivables dans les deux sens à la fois ; et un état de demande de message, pour que quelqu'un qui n'est pas dans vos contacts ne puisse pas savoir si son message est arrivé ou a été lu tant que vous ne l'avez pas accepté.

Une conversation Clavenzo en mode sombre : des messages dans les deux sens avec accusés de lecture, la trace d'un appel, une photo et un message vocal.

Ce que vous pouvez activer

  • Verrouillage de l'application : le verrouillage d'écran de votre téléphone (code, schéma, empreinte ou visage) au retour dans Clavenzo, et Windows Hello sous Windows. Les appels sonnent toujours ; les notifications cessent d'afficher le texte des messages. Il n'est pas encore proposé sous Linux.
  • Sécurité de l'écran : sur Android, bloque les captures et l'enregistrement d'écran de l'application et masque son contenu dans la liste des applications récentes. Sur iPhone, où aucune application ne peut bloquer une capture d'écran, masque l'application dans le sélecteur d'applications. Sous Windows, garde la fenêtre hors des captures, des enregistrements et des partages d'écran ; sous Linux, cela ne peut pas être imposé. Les codes de sauvegarde et de transfert sont toujours protégés, quel que soit ce réglage.
  • Clavier incognito (Android uniquement) : demande à votre clavier de ne pas apprendre de ce que vous tapez. Ce n'est qu'une demande, et certains claviers l'ignorent, c'est pourquoi l'application le précise. L'iPhone ne permet aux applications aucune demande de ce genre.
  • Prise en charge d'un proxy : SOCKS5 ou HTTP CONNECT, pour les réseaux qui l'imposent ou là où le résolveur local est bloqué ou ment.
  • Rendre silencieux les appels des inconnus : ils ne sonnent pas. Ils apparaissent quand même en appels manqués, que vous pouvez rappeler.
Les réglages de confidentialité de Clavenzo : visible sur ce Wi-Fi, le voyant d'acheminement, les accusés de lecture, le silence pour les inconnus et la sécurité de l'écran.

Changer de téléphone

Deux exports distincts, délibérément séparés, parce qu'ils transportent des choses différentes.

Une sauvegarde chiffrée contient vos conversations, photos, historique d'appels et contacts dans un fichier unique que vous rangez où vous voulez. Il ne s'ouvre qu'avec un code affiché une seule fois à l'export et stocké nulle part. L'import ajoute ce qui manque et n'écrase jamais ce qui est déjà là.

Un export d'identité déplace la clé qui est votre adresse. Il est scellé par son propre code de transfert à usage unique, se tient derrière le verrouillage d'écran de votre téléphone, et c'est la seule façon dont cette clé quitte un appareil. L'importer fait répondre le nouveau téléphone sous cette identité.

Là où cette conception s'arrête

Toute conception a ses limites. Voici les nôtres.

  • Qui parle à qui. Une invitation d'appel ou un message hors ligne nomme les deux adresses entre lesquelles il passe, donc le serveur, et Cloudflare devant lui, voient cette paire tant qu'il est conservé. La poignée de main d'ouverture d'un appel direct transporte aussi les deux clés d'identité en clair, si bien que quelqu'un qui observe ce réseau peut savoir quelles deux identités se parlent. Aucune des deux ne révèle un mot de ce qui se dit. Ce sont des métadonnées, et les deux sont sur la liste des choses à corriger.
  • Horodatage et métadonnées. Le serveur voit nécessairement quand votre appareil se signale. Le rythme des paquets pendant un appel peut révéler quand quelqu'un parle, même si rien de ce qui est dit n'échappe au chiffrement.
  • Votre adresse IP. Lors de chaque appel, même s'il finit par passer par un relais, l'application de l'autre personne apprend votre adresse IP, car les deux appareils échangent leurs adresses réseau pour chercher un chemin direct. Elle peut indiquer approximativement où vous vous trouvez. Un relais voit aussi les deux adresses IP.
  • Votre appareil est le point faible. Qui tient votre téléphone déverrouillé tient vos messages. Un logiciel malveillant sur le téléphone lit ce que vous tapez avant tout chiffrement. C'est vrai de toutes les messageries jamais écrites.
  • Il n'a pas été audité indépendamment. Il est construit avec soin et testé abondamment. Ce n'est pas la même chose et nous ne ferons pas semblant du contraire.

Si votre modèle de menace inclut un adversaire capable de surveiller un réseau entier, comprenez ces limites, utilisez la prise en charge du proxy, et ne misez sur aucun outil unique (celui-ci compris) rien que vous ne puissiez vous permettre de perdre.

Les questions qu'on nous pose