Privacy
Privacy
OpenCaseLaw registra le richieste per l’esercizio del servizio e per la ricerca, ma senza cookie né tracciamento di terze parti. Tutte le metriche pubblicate sono aggregate, k-anonime e differenzialmente private.
§01 Sintesi
La sintesi
OpenCaseLaw è un progetto di ricerca pubblico. Non esiste un account utente né un identificativo permanente che colleghi automaticamente una richiesta a una persona. Questo non significa che non raccogliamo dati: testo delle richieste, momento, identificativi di sessione e di client, nonché i log di accesso del server, vengono registrati, come descritto nel dettaglio qui sotto. Questa pagina indica cosa viene effettivamente raccolto, perché e per quanto tempo.
- Nessun cookie. Il sito non installa alcun cookie, né necessario né facoltativo.
- Nessun fingerprinting. Né canvas, né font, né audio, né WebGL. Nessuna analisi di terze parti.
- Niente Google Analytics, niente Plausible Cloud, niente Sentry. Ogni analisi è eseguita sul nostro server in Germania.
- Dati di sviluppo: rilevamento completo, archivio di ricerca permanente. Per migliorare la ricerca, a fini di ricerca scientifica e per addestrare modelli propri registriamo dati di richiesta completi: strumento, parametri incluso il testo della query, momento, classe di client e un identificativo di sessione. Nessun indirizzo IP viene memorizzato con le richieste; le sessioni non possono essere ricondotte a persone — nessun account, nessun login, l'identificativo cambia a ogni connessione. Il testo dei documenti del componente aggiuntivo Word non viene mai memorizzato, solo la sua lunghezza. I testi delle query vengono conservati in modo permanente, privi di riferimenti a sessioni e persone, in un archivio di ricerca privato ad accesso ristretto — per la qualità della ricerca, la ricerca scientifica e l'addestramento di modelli; non si applica alcun limite temporale. La durata di conservazione sui sistemi server dei dati grezzi con riferimento di sessione è rimessa alla discrezione dello sviluppatore. In modo permanente restano statistiche aggregate, questo archivio di query e i modelli addestrati su di essi. Il codice di raccolta è open source (
mcp_server.py,scripts/collect_dev_data.py). - Nessun account utente, nessun identificativo permanente. Non c’è login. Gli identificativi che esistono sono limitati nel tempo e ruotano: l’identificativo di sessione MCP a ogni connessione, la pseudonimizzazione nel registro dei costi ogni giorno, l’hash di installazione dell’add-in Word ogni mese (dettagli sotto, §02 e §04).
- Tutti i numeri pubblicati sono differenzialmente privati (ε = 1,0) e soggetti a una soglia di k-anonimità k = 10.
§02 Log & conservazione
Log del server a tre livelli
Ogni server web registra le richieste — è tecnicamente inevitabile. Una parte dei nostri log è strutturata in modo tale da decomporsi in aggregati innocui nel giro di pochi giorni; le eccezioni con conservazione più lunga o indefinita sono indicate sotto.
Livello 1 — access.log (72 ore)
Contiene indirizzo IP e User-Agent. Base legale: interesse legittimo alla difesa da DDoS e abusi. Conservazione: rigorosamente 72 ore, poi triturato crittograficamente (shred -u). Mai usato per le statistiche.
Controllo di costi e abusi
Sono in funzione due sistemi distinti. Primo, i limiti giornalieri per indirizzo IP per gli endpoint LLM (attest, verify-claim, check_claim_support e altri): vengono registrati indirizzo IP, endpoint e numero di chiamate al giorno. Per questi contatori non è attualmente attiva alcuna cancellazione automatica. Secondo, un registro dei costi per chiamata: contiene una pseudonimizzazione dell'indirizzo IP che ruota ogni giorno (mai l'indirizzo in chiaro), lo strumento chiamato e il costo della chiamata. Conservazione: 90 giorni sui sistemi server; teniamo inoltre un archivio privato ad accesso ristretto di queste registrazioni per la durata dell'esercizio. Finalità di entrambi i sistemi: limiti giornalieri, controllo dei costi, difesa dall'abuso commerciale e sua documentazione. Limiti superiori: team@jonashertner.com.
Tracce di qualità della ricerca (30 giorni)
Per misurare la qualità del ranking (BM25, cross-encoder, riordinamento Haiku) registriamo per ogni ricerca gli ID dei candidati e i tempi di elaborazione; per le voci di riordinamento Haiku, inoltre, i primi 200 caratteri del testo della richiesta. Questo record non contiene né indirizzo IP né identificativo di sessione; il result_set_id in esso contenuto può tuttavia, quando la registrazione completa (vedi sopra) è attiva, essere collegato a un evento di recupero legato a una sessione dello stesso giorno. Conservazione: 30 giorni, poi cancellazione automatica.
Elaborazione IA tramite l'API di Anthropic (per richiesta)
Diverse funzioni inviano testo all'API di Anthropic (api.anthropic.com, modelli Claude) per l'elaborazione al momento della richiesta: l'analisi della richiesta, la sua espansione e il riordinamento dei risultati inviano il testo della richiesta e brevi estratti delle decisioni candidate; check_claim_support invia l'affermazione esaminata insieme al passaggio rispetto al quale viene verificata; attest_response con audit_grounding=true invia le frasi attorno a ogni citazione insieme al considerando citato; le funzioni Verificare, Fondare e Specchio del componente aggiuntivo Word (/billing/verify, /billing/find-support, /billing/reflect) inviano il testo selezionato o il testo del documento; Audit (/attest) e Rafforzare restano sul nostro server. Tutti e cinque gli endpoint Pro ricevono il testo solo dopo che il componente ha sostituito nove categorie di dati personali con segnaposto (e-mail, numero AVS, IBAN, IDI, telefono, data di nascita, indirizzo, NAP/località, nomi preceduti da un titolo; basato su pattern, senza garanzia di completezza — portata e limiti su word.opencaselaw.ch/privacy.html); il server ricontrolla i cinque pattern strutturati e altrimenti respinge la richiesta. Non vengono mai inviati: indirizzo IP, identificativo di sessione, classe di client o qualsiasi altro identificativo. La trasmissione è soggetta alle condizioni commerciali dell'API e all'informativa sulla privacy di Anthropic; la conservazione presso Anthropic non è sotto il nostro controllo. Da parte nostra vengono registrati per chiamata il modello, il numero di token e il costo (vedi registro dei costi sopra), e per il riordinamento i primi 200 caratteri della richiesta (vedi tracce di qualità della ricerca). Base legale: esecuzione della funzione richiesta; queste funzioni non possono essere eseguite senza questa elaborazione.
Livello 2 — tier2.log (14 giorni, nessun dato personale)
Contiene esclusivamente etichette di classe: classe client (p. es. «cursor», «claude_hosted», «word_addin»), classe di endpoint (p. es. «rest_search_decisions»), codice HTTP, tempo di risposta, dimensione della risposta. Nessun IP. Nessun User-Agent. Nessuna query string. Nessun referer. Questo file è strutturalmente incapace di identificare una persona. Conservazione: 14 giorni per sicurezza, poi eliminato.
Livello 3 — analytics.db (illimitato, aggregato & privato)
Aggregati giornalieri per (classe client, classe di endpoint). Nessuna riga per utente, nessuna granularità più fine del giorno. Le celle con n < 10 sono soppresse nella colonna pubblica. I numeri pubblicati portano rumore di Laplace con ε = 1,0 (privacy differenziale formale). Questo file può ed è reso pubblico — perché è matematicamente provato che non rivela nulla sugli individui.
Numero di utenti unici (schizzo di conteggio)
Per determinare il numero giornaliero e mensile di utenti diretti unici, gli indirizzi IP vengono sottoposti a hashing esclusivamente in memoria, con un segreto rotante, e immessi in uno schizzo di conteggio HyperLogLog. Su disco arrivano solo i registri dello schizzo e i totali; matematicamente non consentono di stabilire se un determinato indirizzo fosse presente. Il segreto viene cancellato a ogni cambio di giorno e di mese, il che esclude anche qualsiasi collegamento successivo tra le finestre.
Agente Microsoft 365 Copilot (/mcp-edu)
L'agente OpenCaseLaw per Microsoft 365 Copilot chiama un endpoint proprio, /mcp-edu. Per le richieste che passano da questo endpoint non vi sono né raccolta completa (nessun testo di richiesta, nessun identificativo di sessione, nessun archivio di ricerca, nessun addestramento di modelli), né tracce di qualità della ricerca, né registro dei costi per indirizzo IP. Restano il log di livello 1 (qui con l'indirizzo IP di Microsoft, 72 ore), i livelli 2 e 3 senza dati personali e la contabilità dei costi senza indirizzo IP né testo di richiesta (modello, token, costo). L'analisi e il riordinamento delle richieste tramite Anthropic e la ricerca di atti cantonali tramite LexFind funzionano come descritto sopra.
Il codice di aggregazione è open source e verificabile: scripts/rollup_analytics.py. La configurazione nginx si trova in ops/nginx/ocl-logging.conf.
§03 Aggregazione & DP
Cosa misuriamo, e come
Misuriamo solo ciò che serve per le decisioni operative — e lo facciamo a livello aggregato, mai per utente. Le seguenti metriche sono calcolate quotidianamente e pubblicate su opencaselaw.ch/stats.json:
- Chiamate agli strumenti al giorno, suddivise per classe client ed endpoint.
- Tempi di risposta p50 e p95 per endpoint.
- Tasso di errore per endpoint (4xx, 5xx, 429).
- Numero approssimativo di installazioni attive per classe client (tramite sketch HyperLogLog, a rotazione mensile).
- Distribuzione dei codici HTTP su tutte le richieste.
Cosa non raccogliamo mai
- Profili individuali permanenti — nessun indirizzo IP con le richieste, nessun account utente, nessun collegamento tra una sessione e una persona. Durante la fase di valutazione le richieste della stessa sessione vengono collegate tra loro; la durata di conservazione di questi dati grezzi è rimessa alla discrezione dello sviluppatore e segue gli scopi indicati. Ciò che viene conservato in modo permanente non contiene riferimenti a sessioni o persone.
- Quali decisioni o leggi una determinata persona consulta.
- Indirizzi IP grezzi negli aggregati o nei dati di livello 3.
- Stringhe User-Agent complete oltre le 72 ore (solo la classe).
- Header Referer — rivelerebbe da quale chat o documento è stato chiamato uno strumento.
- Fingerprinting (canvas, font, WebGL, audio) — mai, in nessuna circostanza.
- Collegamento dei dati cliente Stripe (Word Add-in Pro) con l’utilizzo.
§04 Add-in Word
Add-in Word — un caso speciale
L’add-in Word è l’unica parte di OpenCaseLaw che invia, in modo facoltativo, un hash di coorte di installazione per permetterci di stimare il numero approssimativo di installazioni attive al mese. Il meccanismo è deliberatamente costruito per rendere il tracciamento tra un mese e l’altro crittograficamente impossibile:
- Al primo avvio, l’add-in genera un UUID casuale e lo memorizza localmente in
localStorage. - A ogni richiesta API, calcola
SHA-256(uuid + "AAAA-MM")e invia i primi 8 caratteri hex come headerX-Install-Cohort. - Il sale mensile cambia ogni mese. Gli hash di aprile e maggio sono crittograficamente non correlati — anche se conservassimo tutti gli hash per sempre (cosa che non facciamo).
- Usiamo questi hash esclusivamente per riempire uno sketch HyperLogLog al giorno per classe client. Lo sketch fornisce una stima — i valori di input non possono essere ricostruiti.
Opt-out: nel menu dell’add-in sotto «Impostazioni → Statistiche anonime di utilizzo» potete disattivare questo header in qualsiasi momento.
Gli abbonamenti Pro sono gestiti tramite Stripe. OpenCaseLaw vede solo la chiave di licenza e la confronta durante le richieste Pro. Non esiste alcun collegamento tra i dati cliente Stripe e le statistiche di utilizzo.
§05 I vostri diritti
I vostri diritti (nLPD / RGPD)
La legge svizzera rivista sulla protezione dei dati (nLPD, in vigore da settembre 2023) e il RGPD europeo vi garantiscono diritti di accesso, rettifica e cancellazione. OpenCaseLaw non tiene alcun account utente né un identificativo permanente che colleghi automaticamente una richiesta a una persona. Questo limita ciò che possiamo attribuirvi in pratica, ma non abolisce questi diritti:
- Diritto di accesso: senza account o identificativo permanente, di norma non possiamo collegare una richiesta a voi di nostra iniziativa. Se ci comunicate l’identificativo di sessione, il momento approssimativo e lo strumento usato (ad esempio dai vostri log client), cerchiamo le voci corrispondenti nei sistemi descritti al §02 e vi comunichiamo cosa troviamo.
- Diritto alla cancellazione: le voci che possono esservi attribuite in questo modo vengono cancellate su richiesta, nella misura in cui la cancellazione è tecnicamente possibile nel sistema interessato. Se avete installato l’add-in Word, la disinstallazione rimuove inoltre l’UUID locale dal vostro dispositivo.
- Portabilità: dove le voci possono essere attribuite, ve le forniamo su richiesta in un formato comune.
- Opposizione: potete opporvi ai log di livello 1 di 72 ore non utilizzando i servizi; un’eccezione non è tecnicamente possibile, poiché i server web devono registrare le richieste per poter rispondere agli abusi. Per gli altri sistemi descritti al §02, indirizzate la vostra opposizione all’indirizzo di contatto indicato sotto.
Responsabile del trattamento ai sensi della nLPD: Jonas Hertner, e-mail team@jonashertner.com. I server sono gestiti da Hetzner Online GmbH in Germania.
§06 Contatto
Domande, preoccupazioni, audit
Tutti i meccanismi qui descritti sono open source e verificabili nel repository GitHub. Se notate una discrepanza tra questa pagina e il comportamento effettivo del sistema, consideratela un bug — segnalatecela e la correggeremo.
E-mail: team@jonashertner.com
Le domande sulla privacy ricevono risposta in pochi giorni.