Sécurité
Les données financières méritent une retenue de niveau financier.
Cette page décrit ce que nous faisons aujourd'hui, en termes précis. Elle évite volontairement le langage marketing. Quand quelque chose n'est pas encore en place, elle le dit.
Chemin de contrôleune action sensible
En coursRequête · action sensible
en attenteUn membre supprime un fichier brut
La requête arrive avec le cookie de session (HTTP-only, limité à l’origine) et le contexte d’espace de travail du membre.
Cloisonnement de l’espace de travail
en attenteLa sécurité au niveau des lignes filtre la requête
La base de données elle-même restreint la requête à l’espace de travail du membre. Le code applicatif ne peut pas contourner la politique par inadvertance.
Stockage privé
en attenteL’objet vit dans un bucket privé
Sous le préfixe de l’espace de travail, lu uniquement via des URL signées de courte durée. La suppression retire l’objet ; il n’est pas simplement masqué.
AAL2 · élévation
en attenteUn second facteur récent est exigé
Les actions sensibles exigent une vérification TOTP récente (AAL2), pas seulement une session valide.
Événement d’audit
en attenteAuteur · action · objet · horodatage
La suppression est enregistrée avec son auteur et son horodatage, comme les confirmations de règles, les décisions et les changements de membres.
Chaque contrôle existe dans le code aujourd’hui et est exercé par les tests automatisés.
Architecture
Le chemin que suit un document, et le contrôle qui s'applique à chaque étape. Chaque propriété ci-dessous est en place aujourd'hui.
- Navigateur
Cookie de session, HTTP-only, limité à l'origine.
En place - Cloisonnement de l'espace de travail
Sécurité au niveau des lignes : chaque requête est filtrée sur votre espace de travail dans la base de données, pas seulement dans l'application.
En place - Stockage privé
Fichiers dans un bucket privé sous le préfixe de votre espace de travail. Accès signé, de courte durée. Supprimables à la demande ; supprimés automatiquement selon le calendrier prévu.
En place - Extraction
Un modèle propose des conditions de facturation à partir du texte du contrat. Les propositions sont étiquetées et stockées à part des règles.
En place - Règles confirmées par une personne
Seule une personne transforme une proposition en règle. Versionnée, datée, attribuée.
En place - Calcul déterministe
Arithmétique entière, arrondi unique, chaque étape enregistrée. Rejouable à partir des données stockées.
En place
Chaque contrôle ci-dessous existe dans le code et est couvert par les suites de tests automatisées. La vérification sur l'environnement de production hébergé fait partie du jalon de lancement et n'est pas revendiquée ici.
Isolation des espaces de travail
Chaque enregistrement métier — contrats, règles, fichiers importés, constats, décisions — porte un identifiant d'espace de travail. L'accès est appliqué par une sécurité au niveau des lignes (row-level security) dans la base de données : une requête ne renvoie que les lignes appartenant à un espace de travail dont l'utilisateur connecté est membre. Le code applicatif ne peut pas contourner cette règle par inadvertance, car la base de données applique la politique quelle que soit la requête.
Les identifiants de service à privilèges élevés ne sont utilisés que côté serveur, pour les webhooks de paiement et les tâches planifiées, jamais depuis le navigateur.
Stockage et conservation
- Les fichiers importés sont écrits par le serveur dans un espace de stockage privé. Aucun objet n'est public.
- Les fichiers sont lus via des URL signées à courte durée de vie, générées uniquement pour le membre qui en fait la demande.
- Vous pouvez supprimer immédiatement n'importe quel fichier brut. La suppression retire l'objet du stockage ; il n'est pas simplement masqué.
- Les fichiers bruts que vous n'avez pas supprimés sont retirés automatiquement après 30 jours.
- Les règles de facturation confirmées, les constats, leurs données et étapes de calcul, ainsi que vos décisions de confirmation ou de rejet sont conservés tant que le preflight existe, afin que chaque résultat puisse être rejoué et audité.
Périmètre de l'IA
Un modèle de langage est utilisé pour deux tâches précises : extraire des conditions de facturation candidates d'un contrat, et proposer quelle ligne de facture pourrait correspondre à quel concept. Sa sortie est validée, étiquetée comme proposée par l'IA et stockée séparément des règles confirmées.
- Rien de ce que le modèle propose n'affecte un constat financier tant qu'une personne ne l'a pas confirmé.
- Le modèle ne calcule jamais de montants. Tous les montants sont produits par un moteur déterministe à partir des règles confirmées et des preuves importées, en unités monétaires entières, chaque étape étant enregistrée.
- Le texte du contrat est envoyé au fournisseur d'IA uniquement depuis nos serveurs, via des connexions chiffrées, pour la durée de la requête.
Analyse d'usage et supervision
Nous enregistrons des événements produit (un preflight a été créé, une règle a été confirmée) et les erreurs applicatives afin de maintenir le service en état de marche. Ces événements contiennent des identifiants et des horodatages, pas de contenu. Les extraits de contrat, les lignes de facture, les montants et le contenu des fichiers sont exclus des données d'analyse et des rapports d'erreur.
Accès et sessions
- L'authentification est assurée par notre fournisseur d'identité ; nous ne stockons jamais les mots de passe en clair.
- Les sessions reposent sur des cookies HTTP-only, limités à l'origine truviate.com.
- L'appartenance à un espace de travail détermine ce qu'un utilisateur peut voir et faire. Retirer un membre révoque immédiatement son accès.
- Tout le trafic est chiffré en transit (TLS).
Authentification multifacteur et élévation de niveau
- L’authentification multifacteur par mot de passe à usage unique (TOTP) est activée avant le premier dépôt de document.
- Les actions sensibles — gestion des membres, paramètres de sécurité, suppression de l’espace de travail — exigent une vérification récente du second facteur (élévation AAL2), pas seulement une session valide.
- Les sessions actives sont listées dans les paramètres de sécurité et peuvent être révoquées individuellement.
Piste d’audit
- Confirmations de règles, décisions sur les constats, changements de membres et suppressions sont enregistrés avec l’auteur et l’horodatage.
- Les constats conservent leurs entrées et étapes de calcul, de sorte que tout résultat peut être rejoué à partir des données stockées.
Conservation et purge
- Les fichiers bruts déposés peuvent être supprimés immédiatement par un membre et sont purgés automatiquement après la période de conservation.
- Supprimer un espace de travail supprime ses enregistrements ; le dernier propriétaire ne peut pas être retiré par accident.
En place aujourd’hui, et ce qui est encore en cours de finalisation
- Isolation des espaces de travail
- Stockage et conservation
- Périmètre de l'IA
- Authentification multifacteur et élévation de niveau
- Piste d’audit
- Conservation et purge
- Vérification de la configuration de production hébergée (hooks d’authentification, limites de débit, protection anti-bot) dans le cadre de la gate de lancement.
- Envoi des e-mails transactionnels depuis un domaine d’expédition vérifié.
- Une revue de sécurité indépendante par un tiers.
Ce que nous ne revendiquons pas encore
Truviate n'a pas encore obtenu de certification de sécurité tierce ni fait l'objet d'un audit indépendant. Nous préférons le dire clairement plutôt que d'emprunter un badge. Les contrôles ci-dessus sont ceux réellement en place ; si vous avez besoin d'un élément précis pour votre propre revue, demandez-le et nous répondrons directement.
Signalement responsable
Si vous pensez avoir découvert une faille de sécurité, écrivez à support@truviate.com avec suffisamment de détails pour la reproduire. Nous accusons réception rapidement, vous tenons informé pendant l'analyse et n'engageons pas de poursuites contre les chercheurs agissant de bonne foi.