Fiche de traitement des renseignements personnels par hide4ai
Cette fiche décrit ce que le logiciel fait, à partir de son code, au 26 octobre 2026. Elle ne contient aucune interprétation de la loi. Les valeurs par défaut citées peuvent être changées par celui qui exploite le serveur (le cabinet, ou l'éditeur dans le service hébergé) : le réglage est alors indiqué.
Chaque ligne indique où le vérifier dans le code du logiciel.
Ce qui entre dans le logiciel
| Renseignements | D'où ils viennent | Où ils sont gardés | Combien de temps | Protection |
|---|---|---|---|---|
| Le contenu des documents déposés (tout ce que le document contient, y compris des renseignements sensibles) | Un utilisateur (ou une clé d'API) dépose le fichier | En mémoire du serveur. Une exception : l'aperçu d'un document Word, Excel ou PowerPoint passe par LibreOffice, qui reçoit une copie temporaire dans le dossier temporaire du serveur, supprimée à la fin de la conversion, y compris en cas d'erreur (apps/server/src/preview.ts). Le code du détecteur lui-même n'écrit aucun document sur le disque. | 30 minutes sans utilisation, au plus 50 documents à la fois ; un fichier ré-identifié : 30 minutes, 20 à la fois (apps/server/src/app.ts, SessionStore) | Un document n'est visible que par la personne ou la clé qui l'a déposé |
Les valeurs détectées et leurs jetons (« Gaston Bergeron » ↔ [PERSONNE_1]) | Calculées à partir du document | Le coffre : un fichier chiffré par document, sur le disque du serveur (apps/server/src/vault.ts) | 30 jours par défaut (réglage HIDE4AI_VAULT_TTL_DAYS) puis suppression automatique (purge toutes les heures) ; suppression manuelle possible. Un coffre illisible, mis à part sous le nom ….corrupt-<horodatage>, est supprimé après la même durée, comptée depuis sa mise à l'écart ; le fichier temporaire d'une écriture interrompue l'est après une heure | Chiffrement AES-256-GCM ; clé maître HIDE4AI_VAULT_KEY, ou fichier vault.key à côté des données si la variable est absente (le serveur l'avertit) |
| Le dictionnaire du cabinet (noms de clients à toujours protéger, exclusions, types personnalisés) | Saisi par les utilisateurs | Un fichier dictionary.json sur le disque (apps/server/src/dictionary-store.ts) | Jusqu'à suppression par le cabinet | Chiffré si HIDE4AI_DICTIONARY_KEY est défini ; sinon en clair, et le serveur l'avertit au démarrage |
| Les comptes : courriel, nom affiché, rôle, mot de passe, état | Créés par l'administrateur, ou par la personne qui confirme son essai | Base PostgreSQL | Tant que le compte existe | Mot de passe stocké sous forme de hachage scrypt ; jamais en clair |
| Les sessions de connexion | À la connexion | Base PostgreSQL ; le navigateur ne garde qu'un jeton aléatoire (cookie hide4ai_session, HttpOnly, SameSite=Strict) | 8 heures sans utilisation, 7 jours au plus (apps/server/src/auth-sessions.ts) | Seul le hachage du jeton est stocké |
| Le second facteur (secret TOTP, codes de secours) | Activé par l'utilisateur | Base PostgreSQL | Tant qu'il est activé | Secret chiffré par la clé maître ; codes de secours stockés sous forme de hachage SHA-256 |
| Les clés d'API | Créées par l'administrateur | Base PostgreSQL | Jusqu'à révocation (expiration facultative) | Seul le hachage SHA-256 est stocké ; la clé n'est montrée qu'une fois |
| Les fournisseurs d'IA (nom, adresse, modèle, clé du fournisseur) | Saisis par l'administrateur | Base PostgreSQL | Jusqu'à suppression | Clé du fournisseur chiffrée par la clé maître |
| Le journal d'audit | Produit par l'application | Fichier audit.jsonl sur le disque, chaque ligne chaînée à la précédente par un hachage | Conservé jusqu'à ce que celui qui exploite le serveur le supprime : aucune purge automatique | Jamais une valeur d'un document ni un nom de fichier : seulement des empreintes SHA-256 de fichiers, des nombres par type, des identifiants, l'acteur et l'heure (apps/server/src/audit.ts) |
L'essai de 14 jours, la démonstration publique et le formulaire de contact
Ces trois fonctions n'existent que dans le service que l'éditeur exploite et ouvre au public.
| Fonction | Ce qui est reçu | Où | Combien de temps | Protection |
|---|---|---|---|---|
Demande d'essai de 14 jours (apps/server/src/trials.ts) | Nom, courriel, organisation, profession, usage prévu (500 caractères au plus) ; les empreintes de l'appareil et du réseau quand la démonstration publique est active ; l'empreinte du lien de confirmation | Base PostgreSQL, table des demandes | Le lien vaut 24 heures et ne sert qu'une fois. Une demande jamais confirmée est effacée 7 jours après l'expiration du lien. Après la confirmation, le nom, l'organisation, la profession et l'usage sont effacés 44 jours plus tard (30 jours de conservation après les 14 jours d'essai) et le courriel est remplacé par sa forme normalisée, qui reste pour refuser un second essai (apps/server/src/trial-maintenance.ts) | Le lien n'est gardé que sous forme de hachage SHA-256 ; trois courriels par adresse et par jour au plus |
| Compte d'essai | Le compte créé à la confirmation (nom affiché, courriel, mot de passe sous forme de hachage scrypt) | Base PostgreSQL | 14 jours à compter de la confirmation ; un rappel est envoyé quand il reste 3 jours ou moins ; à la fin le compte est désactivé et ses sessions sont fermées ; 30 jours plus tard, les coffres du compte sont supprimés, les clés d'API qu'il a créées sont révoquées et le compte est supprimé | Le compte d'essai n'a ni le dictionnaire du cabinet ni l'envoi à une IA (apps/server/src/app.ts) |
| Journal des courriels d'essai | Le courriel sous forme normalisée et l'heure de l'envoi | Base PostgreSQL | Supprimé après 2 jours | Sert seulement à compter les envois |
Démonstration publique sans compte (apps/server/src/demo-routes.ts, demo-trials.ts) | Le texte (20 000 caractères au plus) ou le fichier (2 Mo au plus) déposé ; une signature de l'appareil envoyée par la page (taille d'écran, fuseau horaire, langue principale, plateforme) ; l'adresse réseau de la requête | Le document, en mémoire, dans une application qui n'appartient qu'au visiteur, avec son propre dictionnaire vide ; aucun coffre. Dans la base : un identifiant de visiteur (hasard), les empreintes de l'appareil et du réseau, la date et le type de chaque essai | Le document : 15 minutes sans utilisation. Les empreintes et la liste des essais : 90 jours | Les empreintes sont calculées avec une clé secrète (HMAC-SHA-256) ; le réseau est réduit à ses trois premiers blocs (IPv4) ou à ses quatre premiers (IPv6) avant le calcul. L'adresse elle-même n'est pas écrite dans la base. Deux témoins : hide4ai_demo (identifiant signé, un an) et hide4ai_demo_device (signature de l'appareil, un an) |
Formulaire de contact (apps/server/src/contact-routes.ts) | Nom, courriel, organisation (facultative), message | Nulle part dans le logiciel : le message est envoyé par courriel à l'adresse de réception configurée, puis oublié par le logiciel. Pour limiter les envois (cinq par heure et par réseau), le logiciel compte en mémoire les messages venus d'un réseau | Le compte en mémoire : une heure | Un champ caché attrape les programmes ; le nom et le courriel ne peuvent pas ajouter d'en-tête au courriel envoyé |
Le site (les pages publiques) ne dépose aucun témoin, n'a aucun outil de statistiques et n'appelle aucun service extérieur : un test automatisé de l'équipe refuse toute adresse extérieure dans ses pages (apps/site/test/site.test.tsx).
Ce qui sort du logiciel
| Vers où | Quoi | Quand |
|---|---|---|
| Un fournisseur d'IA choisi et configuré par l'administrateur | Le texte dépersonnalisé du document généré, et la consigne de l'utilisateur après le même remplacement des valeurs (apps/server/src/app.ts, route d'envoi) | Seulement quand un utilisateur choisit d'envoyer un document généré, et jamais si le cabinet est en mode « hors ligne » |
| Le serveur de courriel configuré | Les courriels de l'essai (lien de confirmation, rappel de fin d'essai, avis disant qu'un compte existe déjà) et les messages du formulaire de contact | À chaque envoi |
| Nulle part ailleurs | Aucune télémétrie, aucun appel obligatoire à l'éditeur, aucun envoi de statistiques | Un test automatisé (npm run leakcheck) surveille les connexions et les résolutions de noms du serveur (Node) et du détecteur (Python), le texte reçu par un faux fournisseur d'IA, les journaux, le journal d'audit, les réponses d'erreur et les fichiers de données. Il ne voit pas les processus qui ne sont ni Node ni Python (dont LibreOffice), ni le navigateur, ni le système : il dit ce qu'il a vu, pas plus |
Le détecteur (les modèles qui repèrent les noms, adresses, organisations) est un service interne du déploiement : dans la configuration Docker fournie, il est sur un réseau interne sans accès à Internet, comme la base de données, et ses modèles sont embarqués dans son image (rien n'est téléchargé à l'exécution) (deploy/docker-compose.yml).
Ce que le logiciel ne fait pas
- Il ne rend pas les renseignements anonymes. Il les dépersonnalise : il remplace les valeurs repérées par des jetons réversibles, et garde les correspondances dans le coffre. Le texte dépersonnalisé peut encore contenir des renseignements permettant d'identifier une personne (dates, montants, détails, valeurs non détectées).
- Il ne garantit pas que toutes les valeurs soient détectées. Les mesures publiées sont sur la page Mesures de la détection du site ; la relecture humaine est obligatoire avant toute génération, et le logiciel refuse de générer tant qu'une valeur détectée n'est pas confirmée.
- Il ne conserve pas le contenu des documents au-delà des 30 minutes de session, mais conserve les correspondances (valeurs d'origine) dans le coffre jusqu'à son expiration : la durée du coffre est le principal réglage de conservation.
Mesures de sécurité propres au logiciel
Authentification par mot de passe, double authentification facultative (que le cabinet peut exiger), limitation des essais de connexion, rôles (professionnel, administrateur, responsable de la conformité), documents et coffres visibles seulement par leur propriétaire, journal d'audit à chaînage, chiffrement du coffre, du dictionnaire (si la clé est définie), des secrets de double authentification et des clés de fournisseurs, vérification du fichier produit avant export (toute valeur d'origine retrouvée bloque l'export), caviardage réel des PDF (le texte sous-jacent est supprimé, pas masqué).
À la charge de celui qui exploite le serveur, pas du logiciel : le chiffrement du transport (TLS) — les clés d'API et les sessions voyagent dans des en-têtes —, la sauvegarde et la conservation de la clé maître (la perdre rend le coffre, les secrets de double authentification et les clés de fournisseurs illisibles), la sauvegarde de la base, la durée du journal et l'heure exacte du serveur.
Ce que l'éditeur voit
- Logiciel installé chez le client : l'éditeur ne reçoit aucun renseignement personnel. Le logiciel ne fait aucun appel obligatoire à l'éditeur, et sa licence se vérifie sans connexion Internet. L'éditeur n'y accède que si le client lui en donne l'accès, par exemple pour du soutien.
- Service hébergé par l'éditeur : les documents déposés passent par le serveur de l'éditeur, avec les durées de la première partie de cette fiche. Ce que l'éditeur s'engage à faire, et à ne pas faire, avec ces renseignements est écrit dans la page Engagements de l'éditeur.
- Démonstration publique et essai : voir la partie précédente.