RGPD
Registre des traitements tenu dans l’application, par cabinet (table registre_rgpd, migration 076). DPA et liste des sous-traitants publiés. Contact RGPD : dpo@kontia.fr. Aucune analyse d’impact (AIPD) n’a été réalisée à ce jour.
Hébergement dans l'Union européenne
Base de données et fichiers chez Supabase (Francfort, Allemagne), application sur Vercel (région Francfort, fra1), cache Upstash (UE). Les requêtes à l’IA sont traitées par Anthropic (États-Unis), transfert hors Union européenne encadré par son contrat de traitement. Sauvegardes et chiffrement au repos assurés par ces hébergeurs selon leur offre.
Chiffrement
Au 25 septembre 2026, voici ce que le code chiffre réellement en AES-256-GCM (lib/crypto, appelé explicitement à l’écriture) : les identifiants des connecteurs du cabinet (clés d’API des intégrations), les déclarations de soupçon rédigées dans le laboratoire TRACFIN, et la sauvegarde avant son dépôt sur le stockage distant. L’IBAN de remboursement des notes de frais est chiffré par le code, et la colonne qui le reçoit (migration 108) existe en production depuis le 25 septembre 2026 à 22:30 UTC (registre des migrations) ; les IBAN saisis avant cette date vivent toujours dans les métadonnées du compte, non chiffrés par Kontia, jusqu’à ce que chaque collaborateur ressaisisse le sien dans « Mon RIB ». Le SIRET n’est pas chiffré. TLS en transit. Une seule clé de chiffrement, détenue par la plateforme : il n’existe ni clé par cabinet, ni rotation automatique ; le format stocké porte l’empreinte de la clé, ce qui rend une rotation manuelle possible sans perdre l’historique. Une colonne écrite sans passer par ce module reste en clair : le chiffrement n’est pas automatique.
IA responsable
Kontia appelle l’API d’Anthropic sous ses conditions commerciales standard : selon ces conditions, les données envoyées à l’API ne servent pas à entraîner ses modèles. Kontia n’a négocié aucune clause particulière de non-rétention — chaque cabinet est invité à lire ces conditions.
Signature des travaux
Un travail d’expertise comptable porte la signature personnelle du professionnel et le visa ou la signature de la société inscrite (art. 12 al. 3 de l’ordonnance n° 45-2138 du 19 septembre 1945) ; l’exécuter habituellement sans être inscrit au Tableau est un exercice illégal (art. 20 al. 2). Ce que Kontia tient depuis le 25 septembre 2026 : chaque pièce qui sort du cabinet (rapport, liasse, acte, classeur, FEC — 19 routes recensées) passe un verrou de signataire inscrit — sans profil déclaré comme inscrit par l’administration du cabinet, elle ne sort qu’à l’état de projet — et porte un bloc de signature qui nomme qui la remet, sa qualité et son numéro d’inscription tels que déclarés, la société pour laquelle elle sort, et la date. À partir de la version 7.99.25, l’empreinte SHA-256 de la pièce remise est signée en Ed25519 par la clé de la chaîne du journal et rendue avec la pièce (en-tête X-Kontia-Signature) ; quand la clé manque, la pièce le dit (X-Kontia-Signature-Absente) plutôt que de sortir muette. Kontia n’interroge ni le Tableau de l’Ordre ni la liste de la CNCC : la qualité et le numéro sont imprimés avec leur origine, jamais présentés comme vérifiés.
Preuve publique
Journal scellé
Kontia recalcule la chaîne de son journal d’audit à chaque passage du cron (02:15, 04:45, 08:30, 13:30, 18:30 et 23:55 UTC) et la scelle dès que le journal a avancé — plus une seule fois par jour : chaque scellement est publié avec son instant par la route publique /api/scellement. Huit valeurs sont relevées ici : le jour scellé, le dernier rang de séquence, l’empreinte SHA-256 de la dernière ligne, l’ancre de l’historique, le nombre de lignes chaînées, le nombre total de lignes du journal, la version de la charge hachée et la frontière de contiguïté des rangs.
Un tiers — commissaire aux comptes, client, huissier — relève ces valeurs et les horodate chez lui : Kontia ne peut pas réécrire ce qui a déjà été noté ailleurs.
Si une ligne du journal est modifiée ou retirée après coup, l’empreinte cesse de correspondre au relevé du tiers, et un journal qui a rétréci se lit au nombre de lignes.
Le nombre de lignes chaînées et le dernier rang de séquence ne coïncident pas, et c’est normal : des rangs sont consommés par des insertions annulées — une transaction qui a pris son rang puis échoué ne le rend pas. Le nombre de lignes compte les lignes réellement chaînées ; le dernier rang dit jusqu’où les rangs ont été attribués. Un rang qui reculerait, ou un nombre de lignes qui diminuerait, signalerait une réécriture.
La frontière de contiguïté dit à partir de quel rang un trou cesse d’être excusable : au-dessus de ce rang, tout trou est une rupture — une ligne absente, que scripts/verifier-chaine.mjs refuse sous le nom « trou_de_sequence » ; en dessous, les rangs brûlés par l’ancienne séquence ne prouvent rien, ni dans un sens ni dans l’autre. Tant qu’aucune frontière n’est relevée, aucun trou de rangs ne peut être jugé : la carte le dit, au lieu de combler le vide par une valeur.
L’ancre fige l’historique antérieur à la séquence : sans elle, republier l’empreinte de la veille suffirait à présenter la même façade. Une ancre VIDE n’est pas un manque : elle dit qu’aucune ligne ne précède la séquence — c’est l’ancre de genèse, et la carte l’écrit ainsi plutôt que de laisser un blanc, qui se lirait comme une mesure oubliée ; « non relevé » est un tout autre état, celui d’un scellement écrit avant que cette mesure existe. La version de la charge hachée dit quelle concaténation recalculer — 1 sans l’identité de l’auteur, 2 avec l’auteur, le module et le détail.
Pour refaire le calcul plutôt que de le croire : un cabinet lit GET /api/audit-trail/chaine (route authentifiée), puis rejoue scripts/verifier-chaine.mjs, qui recalcule la chaîne ligne à ligne et nomme la première rupture.
Lecture du dernier scellement…
Assiette du journal
Le nombre de lignes relevé ci-dessus est celui des lignes CHAÎNÉES, pas celui de toutes les lignes du journal. La route publique publie les deux : nbLignes pour les lignes chaînées, nbLignesTotal pour le total. L’écart est le nombre de lignes écrites avant que la chaîne ne couvre le journal.
Une ligne hors chaîne n’est pas opposable : rien ne permet d’établir qu’elle n’a pas été ajoutée, modifiée ou retirée après coup. Une partie de ces lignes a été écrite pendant que les politiques d’accès de la base étaient ouvertes — la déclaration d’incident le dit en détail.
Vérifier par soi-même : signature, clé, jeton, historique
LA SIGNATURE. Chaque export de la chaîne du journal est scellé par une signature Ed25519 : il porte l’instant de sa génération donné par le serveur, l’empreinte de son contenu, et cette signature. Ce qu’elle atteste : ce fichier est bien sorti d’un serveur détenant la clé privée, à cet instant-là, et il n’a pas été retouché depuis. Ce qu’elle n’atteste pas : la sincérité du journal lui-même — qui détient la base ET la clé privée peut signer un export réécrit. C’est pourquoi le relevé horodaté chez un tiers reste le seul point que Kontia ne peut pas réécrire.
LA CLÉ PUBLIQUE. Elle est publiée par la route publique /api/scellement, champ clePublique, au format SPKI PEM, avec son empreinte SHA-256 reprise ci-dessus. La publier ne révèle rien : elle ne permet que de VÉRIFIER. Si aucune clé n’est configurée sur le serveur, les exports sortent non signés et le disent eux-mêmes, en clair — jamais une signature de façade.
LE JETON. Un commissaire aux comptes n’a pas à recevoir l’export de la main de l’audité : c’est l’audité qui choisirait alors le moment, la fenêtre et le fichier. Un cabinet peut lui remettre un jeton de lecture — créé par un expert-comptable ou un associé inscrit, numéro déclaré, en lecture seule, valable trente jours au plus, révocable, compté à chaque usage — que le tiers présente lui-même sur /api/audit-trail/chaine, sans aucun compte Kontia. Le jeton peut être borné à UN seul dossier : l’auditeur d’une société ne reçoit alors, en clair, que les lignes de cette société ; celles des autres clients du cabinet ne portent que leur rang et leurs deux chaînons, de quoi suivre la chaîne sans la lire. La création et la révocation de chaque jeton laissent une ligne dans le journal chaîné, que le cabinet ne peut pas retirer.
L’HISTORIQUE. La route publique /api/scellement/historique rend TOUS les scellements, par ordre croissant de jour puis d’instant, avec pour chacun le jour, l’instant, le dernier rang, l’empreinte, l’ancre, le nombre de lignes et la version de la charge. Un relevé unique ne montrait ni les trous ni les reculs ; la série, elle, les rend visibles : un rang qui recule, un nombre de lignes qui diminue ou un jour manquant se voient d’un coup d’œil. Cette série reste servie par Kontia — elle ne vaut que confrontée à ce qu’un tiers a noté chez lui.
COMMENT RECEVOIR LE RELEVÉ. Un tiers n’a pas à venir chercher l’empreinte : Kontia envoie chaque scellement par courriel aux adresses que le cabinet inscrit dans Sécurité › Chaîne d’audit, section « Recevoir chaque scellement par courriel ». Le message porte les mêmes valeurs que ci-dessus — jour, instant, dernier rang, empreinte, nombre de lignes, version de la charge, ancre, clé publique — plus la frontière de contiguïté (le rang à partir duquel tout trou est une rupture) et la commande à rejouer : neuf valeurs en tout. Demandez à votre cabinet d’y inscrire votre adresse : la date de réception chez vous est le seul horodatage de ces valeurs que Kontia ne détient pas. Ce que cela ne change pas : ce courriel est composé et envoyé par Kontia, et sa valeur vient de l’endroit où il est conservé, pas de son contenu. Un échec d’envoi entre dans le journal chaîné ; un jour sans relevé n’est pas un jour sans scellement, c’est une question à poser.
Disponibilité
Ce qui est engagé, et ce qui est mesuré
Kontia prend des engagements contractuels de disponibilité, plan par plan, et eux seuls sont opposables : ils sont écrits à l’accord de niveau de service, et nulle part ailleurs. Le plan le plus élevé y adosse des pénalités.
Aucune mesure de disponibilité n’existe à ce jour. La page de statut publie un état instantané, relevé à l’ouverture puis chaque minute, et n’en conserve rien : ni historique, ni taux mensuel, ni journal des incidents. Une demande de crédit au titre des pénalités ne peut donc s’appuyer sur aucun relevé produit par Kontia.
Ce qui est publié ici est un constat, pas une promesse : tant qu’aucune mesure n’est conservée, le respect de l’engagement ne peut être ni établi ni contesté par un chiffre de Kontia.
Sous-traitants
Nos partenaires technologiques
| Sous-traitant | Fonction | Localisation | Base du recours |
|---|---|---|---|
| Anthropic | Modèles Claude : réponses de l’assistant, analyse des documents et des écritures soumis dans la conversation. | États-Unis — transferts encadrés par les clauses contractuelles types. | Sous-traitant du contrat |
| Supabase | Base de données PostgreSQL, authentification et stockage des fichiers du cabinet. | Union européenne — Francfort (aws eu-central-1). | Sous-traitant du contrat |
| Vercel | Hébergement de l’application, exécution des routes serveur et diffusion des pages. | Union européenne — Francfort (région fra1 déclarée dans vercel.json). | Sous-traitant du contrat |
| Upstash | Cache Redis des réponses et limitation de débit des routes. | Union européenne. | Sous-traitant du contrat |
| Relais SMTP sortant | Envoi des e-mails sortants (invitations, rappels d’échéance, livrables). L’hôte réel est celui de SMTP_HOST, smtp.office365.com à défaut ; le cabinet peut y substituer son propre serveur. | Dépend du serveur configuré. Sur le relais Microsoft 365 par défaut : Union européenne et États-Unis, transferts encadrés par les clauses contractuelles types. | Sous-traitant du contrat |
| Pappers | Recherche d’informations légales publiques sur une entreprise (identité, dirigeants, comptes déposés). | France. | Sous-traitant du contrat |
| Perplexity | Recherche web sur l’actualité juridique et fiscale, en complément des sources officielles. | États-Unis — transferts encadrés par les clauses contractuelles types. | Sous-traitant du contrat |
| OpenAI | Vectorisation des textes de la base de connaissance pour la recherche sémantique. Inactif tant que OPENAI_API_KEY n’est pas configurée. | États-Unis — transferts encadrés par les clauses contractuelles types. | Sous-traitant du contrat |
| Telegram | Remontée des alertes techniques à l’équipe d’exploitation. Inactif tant que TELEGRAM_BOT_TOKEN n’est pas configuré. | Hors Union européenne. | Sous-traitant du contrat |
| Google Drive | Dépôt des sauvegardes de la base. Inactif tant que GOOGLE_SERVICE_ACCOUNT_JSON et GOOGLE_DRIVE_BACKUP_FOLDER_ID ne sont pas configurés. | Union européenne et États-Unis — transferts encadrés par les clauses contractuelles types. | Sous-traitant du contrat |
| Microsoft 365 — Graph (Outlook, OneDrive, SharePoint) | Lecture du calendrier, des e-mails et des fichiers du cabinet après autorisation explicite du compte Microsoft. | Union européenne et États-Unis — transferts encadrés par les clauses contractuelles types. | Activé par le cabinet |
| Google Workspace — Gmail | Lecture et tri de la boîte e-mail du cabinet après autorisation OAuth explicite. | Union européenne et États-Unis — transferts encadrés par les clauses contractuelles types. | Activé par le cabinet |
| DocuSign | Signature électronique des lettres de mission et des documents envoyés aux clients du cabinet. | Union européenne par défaut (compte eu.docusign.net) ; dépend du compte DocuSign du cabinet. | Activé par le cabinet |
| Pennylane | Import des écritures, factures et journaux du dossier tenu dans Pennylane. | France. | Activé par le cabinet |
| ACD | Import des dossiers, balances, journaux et grands livres tenus dans ACD. | Dépend de l’adresse ACD configurée par le cabinet. | Activé par le cabinet |
| MEG (Mon Expert en Gestion) | Import des dossiers tenus dans MEG. | Dépend de l’adresse MEG configurée par le cabinet. | Activé par le cabinet |
| Chorus Pro (plateforme PISTE de l’État) | Dépôt et suivi des factures à destination du secteur public. | France. | Activé par le cabinet |
| Slack, Microsoft Teams ou webhook du cabinet | Envoi des notifications du cabinet vers le canal que celui-ci a déclaré. | Dépend du destinataire choisi par le cabinet. | Activé par le cabinet |
Des questions sur la sécurité ?
Écrivez au contact RGPD de Kontia : toute question sur cette page, sur le DPA ou sur le registre des traitements reçoit une réponse écrite.
Contactez notre DPO à dpo@kontia.fr