1. Introduction

Konstruct est une messagerie à chiffrement de bout en bout, construite sur Signal Protocol et centrée sur la confidentialité. La présente politique explique précisément quelles données nous collectons, pourquoi, et lesquelles nous ne collectons pas. Konstruct a été conçu dès l’origine pour que nous détenions le moins de données possible sur vous.

Principe fondamental : nous ne collectons que le strict minimum de données nécessaire au routage des messages chiffrés. Le contenu de vos messages est protégé par un chiffrement de bout en bout — nos serveurs ne peuvent pas le lire, et nous n’essayons pas de le faire.

2. Données que nous collectons

2.1 Identifiant de compte

Konstruct n’exige ni numéro de téléphone, ni adresse e-mail, ni mot de passe, ni vrai nom.

Aucune information permettant de vous identifier n’est requise pour créer un compte et utiliser Konstruct.

2.2 Ensemble de clés cryptographiques

Pour que l’échange de clés de Signal Protocol fonctionne, votre appareil génère et envoie au serveur les clés publiques suivantes. Les clés privées correspondantes ne quittent jamais l’appareil et sont conservées dans le stockage de clés protégé de la plateforme (iOS Keychain, Android Keystore).

Clé Type Stockée sur le serveur Finalité
Identity Public Key X25519 (long terme) Oui, en permanence Authentifie votre appareil ; utilisée dans le handshake X3DH
Signed PreKey X25519 (moyen terme) Oui, renouvelée périodiquement Utilisée dans l’accord de clés X3DH
Préclés à usage unique (OTPK) X25519 (éphémère) Oui, jusqu’à leur utilisation Consommées une par session, pour la confidentialité persistante parfaite
Clés privées — Jamais Toutes les clés privées restent uniquement sur votre appareil

Le serveur suit le nombre de préclés à usage unique restantes et demande à l’appareil de reconstituer le stock lorsqu’il baisse. Une fois qu’une OTPK a servi à établir une session, elle est supprimée définitivement du serveur.

2.3 File des messages en attente

Lorsque vous envoyez un message, il est chiffré sur votre appareil avant la transmission. Le serveur conserve le message chiffré dans la boîte aux lettres du destinataire. Il ne supprime pas un message parce qu’un appareil a signalé l’avoir reçu : les boîtes ne sont purgées que selon la durée de conservation — chacune a une limite de taille, et tout ce qui date de plus d’environ 7 jours est supprimé. Un message déjà remis peut donc rester sur notre serveur — chiffré et illisible pour nous — pendant environ 7 jours au plus.

Ce qui est stocké dans la boîte aux lettres (jusqu’à expiration) :

Si votre appareil est hors ligne, les messages attendent dans la boîte aux lettres jusqu’à la prochaine connexion. Un message non récupéré en environ 7 jours est supprimé sans avoir été lu.

Furtivité — protection de l’expéditeur (sealed sender) : toujours active pour le trafic utilisateur éligible (messages, accusés de réception, signalisation des appels, etc. ; quelques chemins de service sont exclus par conception). Votre appareil retire le User ID de l’expéditeur de l’enveloppe et scelle un certificat d’expéditeur signé sur la clé d’identité du destinataire — seul le destinataire peut savoir qui a écrit, le serveur ne le peut pas. Des jetons anonymes Privacy Pass peuvent accompagner les envois scellés pour lutter contre le spam ; la vérification des jetons côté serveur est encore en cours de déploiement. La protection de l’expéditeur ne masque à la couche réseau ni l’heure d’envoi, ni la taille, ni votre adresse IP.

2.4 Relations avec les contacts

Lorsque vous ajoutez un contact (par code QR ou lien d’invitation), le serveur enregistre cette relation afin de déterminer le routage des messages et l’abonnement au flux. Cela permet à Konstruct de vous signaler qu’un contact connu est en ligne et de vous abonner à son flux de messages. L’enregistrement est masqué : les deux parties sont stockées sous la forme d’un hachage à clé (HMAC-SHA256) de l’identifiant du compte, et non sous la forme des identifiants eux-mêmes ; une fuite de la base de données ne livre donc pas de graphe social lisible. Disons précisément ce que cela vaut : la clé appartient au serveur, cette protection vaut donc contre une fuite, pas contre nous.

2.5 Jetons de notification push

Sur iOS, pour remettre en temps réel les notifications de messages lorsque l’application est en arrière-plan (sur Android il n’y a pas de service push : l’application maintient sa propre connexion) :

2.6 Authentification de session

2.7 Appels audio et vidéo

Les appels audio et vidéo sont protégés par chiffrement de bout en bout. L’établissement de l’appel — la description de session WebRTC (SDP) et les candidats de connectivité ICE — transite par le même chemin chiffré de bout en bout que la conversation, de sorte que nos serveurs ne peuvent pas le lire. Le son et la vidéo de l’appel utilisent DTLS-SRTP de WebRTC ; comme les clés de chiffrement du média sont échangées et authentifiées au sein de cette signalisation chiffrée de bout en bout, le média est chiffré de bout en bout entre les deux appareils : ni nos serveurs ni les relais que nous utilisons ne peuvent le déchiffrer. Notre serveur sait si un appel commence en audio ou en vidéo, afin que le téléphone du destinataire affiche un appel du bon type ; l’activation et la désactivation de la caméra pendant l’appel ne lui sont pas transmises. Un relais peut distinguer la vidéo de la voix d’après le volume de trafic chiffré qu’il transmet.

Pour établir un appel, les appareils échangent des adresses réseau candidates (ICE standard de WebRTC) à la recherche d’un chemin direct. Lorsqu’une connexion directe est impossible, le média chiffré est relayé par un serveur TURN : le relais ne transmet que le média chiffré, qu’il ne peut pas lire, mais il voit les adresses réseau des participants. Ces métadonnées de connexion sont nécessaires au routage de l’appel et ne sont pas associées au contenu des messages. Sur iOS, les appels entrants réveillent l’application via le jeton PushKit VoIP décrit à la section 2.5 ; le push lui-même ne transporte aucun contenu d’appel. Sur Android, l’appel arrive par la propre connexion de l’application, sans push. Le serveur TURN fonctionne aux Pays-Bas.

2.8 Pièces jointes multimédias

Lorsque vous envoyez une photo, une vidéo, un fichier ou un message vocal, la pièce jointe est compressée et chiffrée sur votre appareil (AES-256-GCM avec une clé neuve pour chaque fichier) avant le téléversement. La clé de déchiffrement voyage uniquement à l’intérieur du message chiffré de bout en bout jusqu’au destinataire : elle n’est jamais transmise au serveur de médias ni conservée par lui. Le serveur ne stocke qu’un blob chiffré opaque associé à un media ID aléatoire et ne peut pas en lire le contenu.

Les objets multimédias chiffrés sont supprimés automatiquement environ 7 jours après le téléversement (qu’ils aient été téléchargés ou non) ; l’appareil du destinataire les récupère et les déchiffre dans cette fenêtre. Nous ne conservons pas de média en clair ; pour chaque objet, le serveur ne connaît que le blob chiffré lui-même, son identifiant, sa classe de taille après remplissage, le hachage du texte chiffré ainsi que l’heure de téléversement et de suppression.

2.9 Ce que nous ne collectons PAS

Les éléments suivants ne sont expressément pas collectés ni conservés :

2.10 Adresses IP et métadonnées de connexion

Se connecter à n’importe quel service en ligne expose votre adresse IP à ses serveurs au niveau du réseau — c’est inévitable, et Konstruct ne fait pas exception. Toutefois, nous n’écrivons pas votre adresse IP brute dans nos bases de données. Pour les limitations lors de l’enregistrement des appareils et pour les défis de preuve de travail (proof-of-work), nous n’utilisons qu’un hachage unidirectionnel salé de l’adresse. Pour limiter le débit d’envoi des messages et des demandes de clés, le serveur conserve brièvement l’adresse elle-même (pour IPv6, son réseau /64) dans un compteur en mémoire vive, qui expire au bout d’environ une minute. Nous ne conservons aucune correspondance « IP — compte ».

Nous n’utilisons ni votre adresse ni son empreinte hachée pour construire des profils comportementaux, les relier au contenu de vos messages ou les transmettre à des fins publicitaires. Mais un hachage salé réduit l’exposition sans anonymiser parfaitement — l’espace d’adresses IPv4 étant restreint, une partie détenant le sel secret pourrait encore tester des adresses candidates. Il retire l’adresse brute de tout ce que nous conservons ; ce n’est pas une garantie que l’origine réseau de la connexion ne pourra jamais être déterminée par notre infrastructure.

Si vous voulez retirer complètement votre adresse réseau du chemin, activez la Protection anti-censure dans Paramètres, ou utilisez un VPN ou Tor — même si le point qui termine votre connexion voit tout de même l’adresse source apparente de celle-ci.

3. Protection contre l’analyse du trafic

Konstruct applique du remplissage et, sur iOS, une gigue aléatoire de l’heure d’envoi, afin qu’un observateur du réseau — et notre serveur — ait plus de mal à déduire ce que vous envoyez d’après la taille ou l’heure exacte. Les messages sont complétés jusqu’à des blocs de taille fixe. Les pièces jointes (photos, vidéos, messages vocaux, fichiers, photos de profil) sont complétées jusqu’à des classes de taille : le serveur conserve une plage de taille, et non la taille exacte du fichier — un fichier grossit d’au plus 12 %, d’environ 3 % en général (les plus petits fichiers sont complétés jusqu’à 4 Ko) — et ne reçoit pas le type du fichier. Ces mesures sont activées par défaut et ne demandent aucun réglage.

Nous n’envoyons volontairement pas de faux trafic de couverture planifié. Une couverture permanente exige une connexion toujours ouverte et des envois programmés, ce qui vide la batterie et consomme des données ; un client mobile ne le supporterait pas, et l’imposer reviendrait à sacrifier un vrai confort pour un faible gain sur les métadonnées. Le remplissage et la gigue (ci-dessus) sont notre réponse mobile ; une couverture permanente n’est possible que sur un client de bureau toujours allumé et reste une option réservée au bureau, non une promesse sur mobile. Nous préférons ne pas fournir de couverture du tout plutôt que d’annoncer ce qui ne fonctionne pas.

À part, la protection anti-censure est une couche d’obfuscation au niveau du réseau qui aide votre connexion à se fondre dans le trafic HTTPS ordinaire lorsque le TLS direct est bloqué. C’est un mécanisme de contournement de la censure, et non de dissimulation des métadonnées : il n’empêche pas, à lui seul, un observateur qui voit déjà votre connexion d’en déduire l’heure et la taille des messages.

4. Protection contre le spam : Proof of Work

Pour prévenir le spam sans numéro de téléphone ni adresse e-mail, Konstruct demande à votre appareil d’effectuer un petit calcul de Proof of Work à l’inscription, ainsi qu’à l’envoi lorsque la limite de fréquence est dépassée. Ce calcul s’effectue côté client : pour un usage honnête, son coût est négligeable, tandis que le spam de masse devient coûteux en calcul. Aucune donnée personnelle n’est impliquée.

5. Comment nous utilisons vos données

Données Finalité
User ID Authentification de votre appareil et routage des messages
Ensemble de clés publiques Prise en charge de l’échange de clés du chiffrement de bout en bout Signal Protocol
File des messages non remis Conservation des messages chiffrés jusqu’à leur remise
Relations avec les contacts Routage des messages et abonnements aux flux
Jeton APNs Remise des notifications push en arrière-plan
Jeton PushKit VoIP Réveil de l’application lors des invitations entrantes à un appel
Jeton de session Authentification de la connexion gRPC

Nous n’utilisons pas les données collectées pour la publicité, le profilage, l’analyse ni à aucune fin étrangère au fonctionnement du service de messagerie.

6. Conservation des données et sécurité

6.1 Infrastructure

6.2 Chiffrement

6.3 Ce qui est stocké sur votre appareil

Votre appareil conserve l’historique complet des messages localement, dans un stockage protégé par le système d’exploitation (protection des données iOS ; sur Android, stockage isolé de l’application, clés dans l’Android Keystore). Cela comprend :

Ces données sont sous votre contrôle. La désinstallation de l’application efface définitivement toutes les données locales.

6.4 Durées de conservation

Type de données Conservation
Messages non remis Supprimés selon la durée de conservation : limite de taille de la boîte aux lettres et au plus ~7 jours — et non à la remise
Pièces jointes multimédias (chiffrées) Suppression automatique environ 7 jours après le téléversement (selon l’âge de l’objet, qu’il ait été téléchargé ou non)
Préclés à usage unique Supprimées du serveur dès leur utilisation
Jetons de session Jeton d’accès : 24 heures, jeton d’actualisation : 90 jours ; révoqués à la déconnexion ou à la suppression du compte
Jeton APNs Conservé jusqu’à la suppression du compte ou le renouvellement du jeton
Jeton PushKit VoIP Conservé jusqu’à la suppression du compte ou le renouvellement du jeton
Hachage du nom d’utilisateur et User ID Conservés jusqu’à la suppression du compte
Signed PreKey Remplacée lors de la rotation, l’ancienne clé est supprimée
Relations avec les contacts Actuellement non supprimées, ni à la suppression d’un contact ni à celle du compte (enregistrements dépersonnalisés, voir 8.3)

7. Transfert de données et tiers

Nous ne vendons ni ne louons vos données, et nous ne les transmettons pas à des fins publicitaires, de profilage ou à toute autre fin étrangère au fonctionnement du service. Le fonctionnement lui-même exige les prestataires énumérés ci-dessous ; chacun reçoit le minimum nécessaire à sa tâche, et aucun ne reçoit le contenu des messages.

7.1 Prestataires d’infrastructure

7.2 Respect de la législation

Nous pouvons être tenus de divulguer des données en vertu d’une injonction légale valide d’une autorité compétente. Toutefois :

8. Vos droits

8.1 Utilisation anonyme

Vous pouvez utiliser Konstruct sans communiquer aucune information permettant de vous identifier. Votre User ID est un UUID aléatoire attribué par le serveur ; il n’encode rien à votre sujet.

8.2 Accès à vos données

Vous pouvez à tout moment demander une copie de toutes les métadonnées associées à votre compte en nous écrivant à l’adresse ci-dessous.

8.3 Suppression du compte

Vous pouvez supprimer votre compte depuis les paramètres de l’application. Lors de la suppression :

Les messages précédemment remis à des destinataires ne sont conservés que localement sur leurs appareils et, une fois remis, échappent à notre contrôle.

8.4 Nom d’utilisateur

Vous pouvez ajouter, modifier ou supprimer un nom d’utilisateur à tout moment dans les paramètres du compte.

9. Âge minimum

Konstruct est destiné aux utilisateurs âgés de 16 ans et plus, conformément à la classification d’âge 16+ de l’App Store. Il ne s’adresse pas aux personnes de moins de 16 ans et n’est pas conçu pour elles, et nous ne collectons sciemment aucune donnée les concernant. Comme Konstruct ne conserve que les métadonnées de routage minimales décrites ci-dessus et aucun contenu de message, les données associées à un compte sont limitées par conception. Si vous pensez qu’une personne de moins de 16 ans utilise Konstruct, contactez-nous (section 12) et nous prendrons des mesures.

10. Qui est responsable de vos données

Konstruct est un projet indépendant, et non une entreprise. Le responsable du traitement au sens du RGPD est Maxim Eliseyev, mainteneur du projet ; son adresse figure à la section 12. Konstruct n’est pas assez important pour devoir désigner un délégué à la protection des données (Data Protection Officer), et aucun n’a été désigné : les demandes relevant de la section 8 arrivent à la même adresse et reçoivent une réponse de la même personne. Si cela change — si une personne morale est créée ou si la responsabilité passe à quelqu’un d’autre —, cette section changera aussi, et nous en informerons selon les modalités décrites à la section 11.

11. Modifications de la présente politique

Nous informerons les utilisateurs des modifications importantes par les moyens suivants :

La poursuite de l’utilisation de Konstruct après les modifications vaut acceptation de la politique mise à jour.

12. Contact

Pour toute question relative à la confidentialité, toute demande d’accès aux données et tout doute :

En bref

Ni numéro de téléphone ni e-mail requis Chiffrement de bout en bout (Signal Protocol)
Utilisation entièrement anonyme prise en charge Messages stockés uniquement chiffrés et supprimés selon une durée (jusqu’à ~7 jours)
Ni suivi ni SDK d’analyse Obfuscation du trafic intégrée
Les clés privées ne quittent jamais l’appareil Uniquement des métadonnées minimales
Aucune vente de données à des tiers Juridiction RGPD (UE : serveur aux Pays-Bas, sauvegardes en Allemagne)