Trame

Sécurité

Une application familiale contient l'agenda de vos enfants, votre adresse et vos dépenses. Voici, sans jargon commercial, comment ces données sont protégées — et ce qui ne l'est pas encore.

Le principe : le téléphone n'a jamais le dernier mot

L'application installée sur votre téléphone n'est pas une autorité de confiance : n'importe qui peut l'analyser, la modifier, ou parler directement au serveur sans elle. Toutes les règles d'accès de Trame sont donc appliquées dans la base de données, au niveau de chaque ligne. Une requête qui demande les événements d'un autre foyer ne reçoit pas une erreur : elle reçoit zéro ligne, parce que ces lignes n'existent pas pour elle.

Ces règles s'appuient sur des fonctions qui vivent dans un schéma non exposé par l'API : elles ne sont pas appelables depuis l'extérieur, seulement par la base elle-même.

Ce qui est en place

Isolation par foyer

Chaque table est protégée ligne à ligne. Pour les événements, les articles de liste et les ingrédients, le foyer d'appartenance d'une donnée est réécrit par la base à l'écriture ; pour les autres données, il est vérifié par les règles d'accès à chaque requête.

Rôles réels

Adulte, enfant et lecture seule ne sont pas de simples affichages : un compte enfant ne peut pas supprimer le foyer ni voir le budget, quoi qu'envoie son téléphone.

Connexion sans mot de passe

Pour les utilisateurs : un code à usage unique envoyé par e-mail. Aucun mot de passe à retenir, à réutiliser, ni à se faire voler dans une fuite ailleurs.

Session chiffrée sur l'appareil

Le jeton de session est chiffré (AES-256) ; la clé vit dans le Trousseau d'iOS du téléphone et ne quitte jamais cet appareil.

Fichiers privés

Documents et photos de profil sont stockés dans des espaces privés. L'accès passe par des liens signés à durée limitée, jamais par une adresse publique devinable.

Aucun secret dans le code

Aucune clé ni mot de passe n'est écrit dans le code, les journaux ou l'historique du dépôt. Seules l'adresse du service et une clé publique voyagent avec l'application.

Ce qui le prouve

Affirmer qu'une application est sécurisée ne vaut rien sans vérification. Trame embarque une batterie de tests d'intrusion qui rejouent, depuis un compte d'attaquant, les scénarios qu'on redoute : lire l'agenda d'un autre foyer, s'y ajouter comme membre, se promouvoir administrateur, écrire alors qu'on est en lecture seule.

Ces tests sont conçus pour être rejoués sur une base de données neuve à chaque modification des règles d'accès, pour qu'une règle affaiblie par mégarde soit détectée avant d'atteindre qui que ce soit.

Deux erreurs, et ce qu'elles ont appris

Le durcissement a introduit deux régressions, corrigées depuis. Elles sont documentées publiquement plutôt qu'effacées, parce qu'un rapport de sécurité qui ne contient que des succès n'est pas un rapport de sécurité.

Trame sur le web

La version web (trameapp.app/app) applique exactement les mêmes règles d'accès : elles vivent dans la base, pas dans l'application. La page ne charge aucun script tiers ni aucune mesure d'audience ; une fois connecté, elle ne parle qu'à Supabase, notre hébergeur de données.

Une différence, dite franchement : un navigateur n'a pas de Trousseau. Sur le web, la session est gardée dans le stockage du navigateur, comme sur tout site où l'on reste connecté. Sur un ordinateur partagé, déconnectez-vous en partant (Réglages › Se déconnecter).

Risques assumés

Aucun système n'est parfaitement sûr, et prétendre le contraire est déjà un défaut. Aujourd'hui, les données ne sont pas chiffrées de bout en bout : l'hébergeur pourrait techniquement les lire. Un membre du foyer, par définition, voit les données du foyer. Et la sécurité d'un compte repose sur celle de la boîte e-mail associée.

Signaler une faille

Si vous trouvez un problème de sécurité, écrivez à securite@trameapp.app plutôt que de le publier. Toute divulgation responsable reçoit une réponse, et un correctif si elle est fondée.