Confidentialité

Confidentialité

OpenCaseLaw journalise les requêtes pour l’exploitation du service et pour la recherche, mais sans cookies ni suivi par des tiers. Toutes les métriques publiées sont agrégées, k-anonymes et différentiellement privées.

§01 Résumé

Le résumé

OpenCaseLaw est un projet de recherche public. Il n’existe ni compte utilisateur ni identifiant permanent reliant automatiquement une requête à une personne. Cela ne signifie pas que nous ne collectons aucune donnée : texte des requêtes, horodatage, identifiants de session et de client, ainsi que les journaux d’accès du serveur, sont enregistrés, comme décrit en détail ci-dessous. Cette page indique ce qui est réellement collecté, pourquoi, et pour combien de temps.

  • Aucun cookie. Le site n’installe aucun cookie, ni nécessaire ni facultatif.
  • Aucun fingerprinting. Ni canvas, ni polices, ni audio, ni WebGL. Aucune analyse tierce.
  • Pas de Google Analytics, pas de Plausible Cloud, pas de Sentry. Toute analyse s’exécute sur notre propre serveur en Allemagne.
  • Données de développement : capture complète, archive de recherche permanente. Pour améliorer la recherche, à des fins de recherche scientifique et pour entraîner nos propres modèles, nous enregistrons des données de requête complètes : outil, paramètres y compris le texte de la requête, horodatage, classe de client et un identifiant de session. Aucune adresse IP n'est stockée avec les requêtes; les sessions ne peuvent pas être rattachées à des personnes — pas de compte, pas de connexion permanente, l'identifiant change à chaque connexion. Le texte des documents du complément Word n'est jamais stocké, seulement sa longueur. Les textes des requêtes sont conservés de manière permanente, sans référence de session ni de personne, dans une archive de recherche privée à accès restreint — pour la qualité de la recherche, la recherche scientifique et l'entraînement de modèles; aucune durée maximale ne s'y applique. La durée de conservation sur les serveurs des données brutes portant une référence de session est laissée à l’appréciation du développeur. Subsistent durablement les statistiques agrégées, cette archive de requêtes et les modèles entraînés à partir de celles-ci. Le code de collecte est open source (mcp_server.py, scripts/collect_dev_data.py).
  • Pas de compte utilisateur, pas d’identifiant permanent. Il n’y a pas de connexion. Les identifiants qui existent sont limités dans le temps et tournent : l’identifiant de session MCP à chaque connexion, la pseudonymisation du grand livre des coûts chaque jour, le hash d’installation de l’add-in Word chaque mois (détails ci-dessous, §02 et §04).
  • Tous les chiffres publiés sont différentiellement privés (ε = 1,0) et soumis à un seuil d’anonymat k = 10.

§02 Logs & rétention

Logs serveur en trois niveaux

Tout serveur web journalise les requêtes — c’est techniquement inévitable. Une partie de nos logs est structurée de telle sorte qu’elle se désintègre en agrégats inoffensifs en quelques jours ; les exceptions à conservation plus longue ou indéfinie figurent ci-dessous.

Niveau 1 — access.log (72 heures)

Contient l’adresse IP et le User-Agent. Base légale : intérêt légitime pour la réponse aux attaques DDoS et aux abus. Rétention : strictement 72 heures, puis déchiquetage cryptographique (shred -u). Jamais utilisé pour les statistiques.

Contrôle des coûts et des abus

Deux systèmes distincts sont ici en jeu. D'abord, les limites journalières par adresse IP pour les endpoints LLM (attest, verify-claim, check_claim_support et d'autres) : sont enregistrés l'adresse IP, l'endpoint et le nombre d'appels par jour. Aucune suppression automatique n'est actuellement en vigueur pour ces compteurs. Ensuite, un grand livre des coûts par appel : il contient une pseudonymisation de l'adresse IP qui tourne chaque jour (jamais l'adresse en clair), l'outil appelé et le coût de l'appel. Conservation : 90 jours sur les systèmes serveurs ; nous tenons en outre une archive privée à accès restreint de ces entrées pour la durée de l'exploitation. Finalité des deux systèmes : limites journalières, contrôle des coûts, défense contre l'abus commercial et sa documentation. Limites supérieures : team@jonashertner.com.

Traces de qualité de recherche (30 jours)

Pour mesurer la qualité du classement (BM25, cross-encoder, réordonnancement Haiku), nous journalisons par recherche les identifiants des candidats et les temps de traitement ; pour les entrées de réordonnancement Haiku, en plus les 200 premiers caractères du texte de la requête. Cet enregistrement ne contient ni adresse IP ni identifiant de session ; le result_set_id qu'il contient peut néanmoins, lorsque la capture complète (voir ci-dessus) est active, être relié à un événement de récupération lié à une session le même jour. Conservation : 30 jours, puis suppression automatique.

Traitement IA via l'API d'Anthropic (par requête)

Plusieurs fonctions envoient du texte à l'API d'Anthropic (api.anthropic.com, modèles Claude) pour traitement au moment de la requête : l'analyse de la requête, son expansion et le réordonnancement des résultats envoient le texte de la requête et de courts extraits des décisions candidates ; check_claim_support envoie l'affirmation examinée avec le passage contre lequel elle est vérifiée ; attest_response avec audit_grounding=true envoie les phrases entourant chaque citation avec le considérant cité ; les fonctions Vérifier, Fonder et Miroir de l'add-in Word (/billing/verify, /billing/find-support, /billing/reflect) envoient le texte sélectionné ou le texte du document ; Audit (/attest) et Renforcer restent sur notre serveur. Les cinq endpoints Pro ne reçoivent le texte qu'après que l'add-in a remplacé neuf catégories de données personnelles par des marqueurs (e-mail, numéro AVS, IBAN, IDE, téléphone, date de naissance, adresse, NPA/lieu, noms précédés d'un titre ; par motifs, sans garantie d'exhaustivité — portée et limites sur word.opencaselaw.ch/privacy.html) ; le serveur revérifie les cinq motifs structurés et rejette sinon la requête. Ne sont jamais envoyés : adresse IP, identifiant de session, classe de client ou tout autre identifiant. La transmission est soumise aux conditions commerciales de l'API et à la politique de confidentialité d'Anthropic ; la conservation chez Anthropic échappe à notre contrôle. De notre côté sont enregistrés par appel le modèle, le nombre de tokens et le coût (voir le grand livre des coûts ci-dessus), et pour le réordonnancement les 200 premiers caractères de la requête (voir les traces de qualité de recherche). Base légale : exécution de la fonction demandée ; ces fonctions ne peuvent pas s'exécuter sans ce traitement.

Niveau 2 — tier2.log (14 jours, aucune donnée personnelle)

Contient exclusivement des étiquettes de classe : classe client (p. ex. «cursor», «claude_hosted», «word_addin»), classe de point d’accès (p. ex. «rest_search_decisions»), code HTTP, temps de réponse, taille de réponse. Aucune IP. Aucun User-Agent. Aucune chaîne de requête. Aucun referer. Ce fichier est structurellement incapable d’identifier une personne. Rétention : 14 jours par précaution, puis supprimé.

Niveau 3 — analytics.db (illimité, agrégé & privé)

Agrégats journaliers par (classe client, classe de point d’accès). Aucune ligne par utilisateur, aucune granularité plus fine que le jour. Les cellules avec n < 10 sont supprimées dans la colonne publique. Les chiffres publiés portent un bruit de Laplace avec ε = 1,0 (confidentialité différentielle formelle). Ce fichier peut et sera rendu public — parce qu’il est mathématiquement prouvé qu’il ne révèle rien sur des individus.

Nombre d’utilisateurs uniques (esquisse de comptage)

Pour déterminer le nombre quotidien et mensuel d’utilisateurs directs uniques, les adresses IP sont hachées uniquement en mémoire vive, avec un secret rotatif, puis versées dans une esquisse de comptage HyperLogLog. Seuls les registres de l’esquisse et des totaux atteignent le disque; ils ne permettent mathématiquement pas de savoir si une adresse donnée était présente. Le secret est supprimé à chaque changement de jour et de mois, ce qui exclut aussi tout rapprochement ultérieur entre fenêtres.

Agent Microsoft 365 Copilot (/mcp-edu)

L'agent OpenCaseLaw pour Microsoft 365 Copilot appelle un endpoint propre, /mcp-edu. Pour les requêtes passant par cet endpoint, il n'y a ni capture complète (aucun texte de requête, aucun identifiant de session, aucune archive de recherche, aucun entraînement de modèles), ni traces de qualité de recherche, ni grand livre des coûts par adresse IP. Restent le journal de niveau 1 (ici avec l'adresse IP de Microsoft, 72 heures), les niveaux 2 et 3 sans données personnelles et la comptabilité des coûts sans adresse IP ni texte de requête (modèle, tokens, coût). L'analyse et le réordonnancement des requêtes via Anthropic ainsi que la recherche d'actes cantonaux via LexFind fonctionnent comme décrit ci-dessus.

Le code d’agrégation est open source et vérifiable : scripts/rollup_analytics.py. La configuration nginx se trouve dans ops/nginx/ocl-logging.conf.

§03 Agrégation & DP

Ce que nous mesurons, et comment

Nous ne mesurons que ce qui est nécessaire aux décisions opérationnelles — et au niveau agrégé, jamais par utilisateur. Les métriques suivantes sont calculées quotidiennement et publiées sur opencaselaw.ch/stats.json :

  • Appels d’outil par jour, ventilés par classe client et point d’accès.
  • Temps de réponse p50 et p95 par point d’accès.
  • Taux d’erreur par point d’accès (4xx, 5xx, 429).
  • Nombre approximatif d’installations actives par classe client (via une esquisse HyperLogLog, à rotation mensuelle).
  • Distribution des codes HTTP sur toutes les requêtes.

Ce que nous ne collectons jamais

  • Profils individuels permanents — aucune adresse IP avec les requêtes, aucun compte d'utilisateur, aucun lien entre une session et une personne. Pendant la période d'évaluation, les requêtes d'une même session sont liées entre elles; la durée de conservation de ces données brutes relève de l’appréciation du développeur et suit les finalités indiquées. Ce qui est conservé durablement ne comporte aucune référence de session ni de personne.
  • Quelles décisions ou lois une personne donnée consulte.
  • Adresses IP brutes dans les agrégats ou les données de niveau 3.
  • Chaînes User-Agent complètes au-delà de 72 heures (seulement la classe).
  • En-tête Referer — révélerait depuis quel chat ou document un outil a été appelé.
  • Fingerprinting (canvas, polices, WebGL, audio) — jamais, en aucune circonstance.
  • Association des données client Stripe (Word Add-in Pro) avec l’utilisation.

§04 Add-in Word

Add-in Word — un cas particulier

L’add-in Word est la seule partie d’OpenCaseLaw qui envoie, de manière optionnelle, un hash de cohorte d’installation pour que nous puissions estimer le nombre approximatif d’installations actives par mois. Le mécanisme est délibérément conçu pour qu’un suivi d’un mois à l’autre soit cryptographiquement impossible :

  1. Au premier lancement, l’add-in génère un UUID aléatoire et le stocke localement dans localStorage.
  2. À chaque requête API, il calcule SHA-256(uuid + "AAAA-MM") et envoie les 8 premiers caractères hexa comme en-tête X-Install-Cohort.
  3. Le sel mensuel change chaque mois. Les hashes d’avril et de mai sont cryptographiquement non liés — même si nous conservions tous les hashes pour toujours (ce qui n’est pas le cas).
  4. Nous utilisons ces hashes exclusivement pour remplir une esquisse HyperLogLog par jour et par classe client. L’esquisse fournit une estimation — les valeurs d’entrée ne peuvent pas en être reconstruites.

Désactivation : dans le menu de l’add-in sous «Préférences → Statistiques anonymes d’utilisation», vous pouvez désactiver cet en-tête à tout moment.

Les abonnements Pro sont gérés par Stripe. OpenCaseLaw ne voit que la clé de licence et la compare lors des requêtes Pro. Il n’existe aucun lien entre les données client Stripe et les statistiques d’utilisation.

§05 Vos droits

Vos droits (nFADP / RGPD)

La loi suisse révisée sur la protection des données (nFADP, en vigueur depuis septembre 2023) et le RGPD européen vous accordent des droits d’accès, de rectification et de suppression. OpenCaseLaw ne tient ni compte utilisateur ni identifiant permanent reliant automatiquement une requête à une personne. Cela limite ce que nous pouvons vous attribuer en pratique, mais n’abolit pas ces droits :

  • Droit d’accès : sans compte ni identifiant permanent, nous ne pouvons généralement pas relier une requête à vous de notre propre initiative. Si vous nous communiquez l’identifiant de session, le moment approximatif et l’outil utilisé (par exemple depuis vos propres journaux client), nous recherchons les entrées correspondantes dans les systèmes décrits au §02 et vous indiquons ce que nous trouvons.
  • Droit de suppression : les entrées qui peuvent vous être attribuées de cette manière sont supprimées sur demande, dans la mesure où une suppression est techniquement possible dans le système concerné. Si vous avez installé l’add-in Word, la désinstallation efface en outre l’UUID d’installation local sur votre appareil.
  • Portabilité : là où des entrées peuvent être attribuées, nous vous les fournissons sur demande dans un format courant.
  • Opposition : vous pouvez vous opposer aux logs de niveau 1 de 72 heures en n’utilisant pas les services ; une exception est techniquement impossible, car les serveurs web doivent journaliser les requêtes pour pouvoir répondre aux abus. Pour les autres systèmes décrits au §02, adressez votre opposition à l’adresse de contact ci-dessous.

Responsable du traitement au sens de la nFADP : Jonas Hertner, e-mail team@jonashertner.com. Les serveurs sont opérés par Hetzner Online GmbH en Allemagne.

§06 Contact

Questions, préoccupations, audits

Tous les mécanismes décrits ici sont open source et vérifiables dans le dépôt GitHub. Si vous constatez un écart entre cette page et le comportement réel du système, considérez cela comme un bug — signalez-le et nous le corrigerons.

E-mail : team@jonashertner.com
Les questions de confidentialité reçoivent une réponse en quelques jours.

Dernière mise à jour : 2026-08-31 · Versionné dans Git, modifications publiquement consultables.