GDPR Data Flow Audit — Custodir
Versione: 0.1 · 2026-05-11 Scope: mappatura formale dei flussi dati ai sensi degli art. 30 GDPR (Registro dei trattamenti) e a supporto della Data Protection Impact Assessment (DPIA — eventuale, vedi §6). Riferimento tecnico:
cloud/DATA_FLOW.mdper la versione "marketing/trasparenza pubblica" dello stesso contenuto.
1. Titolare del trattamento
| Campo | Valore |
|---|---|
| Denominazione | Alberto Caggia (titolare individuale, in attesa di apertura P.IVA al raggiungimento di €5.000 cumulativi annui — vedi legal/P_IVA_STRATEGY.md) |
| Sede | Torino, Italia |
| Email contatto privacy | supporto@custodir.com |
| DPO | Non designato (non obbligatorio art. 37 GDPR per la dimensione attuale; reviewable se sup. 5.000 utenti UE) |
| Rappresentante UE | Non necessario (Titolare già residente UE) |
2. Registro dei trattamenti (art. 30 GDPR)
2.1 Trattamento "Gestione licenza software"
| Campo | Dettaglio |
|---|---|
| Finalità | Erogazione del software Custodir all'utente che ha acquistato la licenza, validazione anti-pirateria entro il limite SKU, refresh JWT periodico |
| Categorie di interessati | Utenti acquirenti di Custodir (consumatori italiani prevalentemente, anche UE/extra-UE) |
| Categorie di dati | License key (identificativo non riconducibile direttamente a persona), email collegata a Lemon Squeezy, device_fingerprint (random 24-byte hex generato localmente, NO MAC/IP/disk-serial), hostname (opzionale, troncato 80 char) |
| Categorie di destinatari | Cloudflare (hosting Worker + D1), Lemon Squeezy (gestione email + acquisto). Nessun terzo non-essential. |
| Trasferimenti extra-UE | Cloudflare e Lemon Squeezy USA — copertura tramite SCC + DPF |
| Termine conservazione | Dati di licenza: durata licenza + 5 anni (obblighi fiscali + decennale civilistico). Device activation: finché device attivo + 12 mesi rolling. |
| Misure di sicurezza | TLS 1.3, JWT Ed25519 firmati offline-verifiable, KV rate-limit 30 req/60s/IP, rate limiting Cloudflare WAF, audit log Worker (no body, no credentials) |
| Base giuridica | Esecuzione del contratto (art. 6.1.b GDPR) |
2.2 Trattamento "Pagamento e fatturazione"
| Campo | Dettaglio |
|---|---|
| Finalità | Incasso del prezzo della licenza, gestione recesso (14gg), fatturazione UE (gestita da Lemon Squeezy MoR) |
| Categorie di interessati | Acquirenti |
| Categorie di dati | Email, importo, ID transazione, paese (per IVA). Custodir NON riceve dati carta di credito (gestiti da Stripe via LS). |
| Categorie di destinatari | Lemon Squeezy LLC (Merchant of Record), Stripe Inc. (sub-processor di LS), Erario italiano (per dichiarazione IVA quando aprirà P.IVA Alberto) |
| Trasferimenti extra-UE | LS + Stripe USA — SCC + DPF |
| Termine conservazione | 10 anni dalla transazione (art. 2220 c.c.) |
| Misure di sicurezza | Webhook LS firmato HMAC-SHA256 (verificato dal Worker), idempotency via webhook_events.external_id UNIQUE |
| Base giuridica | Esecuzione contratto + obbligo legale (art. 6.1.b + 6.1.c GDPR — obbligo fiscale civilistico) |
2.3 Trattamento "Bot Telegram (opzionale)"
| Campo | Dettaglio |
|---|---|
| Finalità | Notifiche e comandi via @Custodir_Bot per utenti che hanno scelto di collegarsi via /link <license-key> |
| Categorie di interessati | Sottoinsieme di acquirenti che scelgono attivamente di collegare il bot |
| Categorie di dati | telegram_user_id, @username (pubblico Telegram), first_name (pubblico Telegram), chat_id, license_id collegato, timestamp comandi |
| Categorie di destinatari | Telegram FZ-LLC (UAE), Cloudflare (hosting webhook handler) |
| Trasferimenti extra-UE | Telegram UAE (nessuna decisione di adeguatezza UE — adeguatezza ad-hoc, dati condivisi limitatissimi e già-pubblici) |
| Termine conservazione | Finché utente fa /unlink o per durata licenza |
| Misure di sicurezza | Webhook auth via X-Telegram-Bot-Api-Secret-Token (constant-time check), nessuna persistenza del testo dei messaggi |
| Base giuridica | Consenso esplicito (/link è un'azione manuale dell'utente) — art. 6.1.a GDPR |
2.4 Trattamento "Analytics sito"
| Campo | Dettaglio |
|---|---|
| Finalità | Misurare aggregato del traffico al sito custodir.com per ottimizzare landing |
| Categorie di interessati | Visitatori del sito (anche non acquirenti) |
| Categorie di dati | Pagina, paese, browser, OS, referrer (NO IP, NO device fingerprint, NO cookie) |
| Categorie di destinatari | Plausible Insights OÜ (Estonia) |
| Trasferimenti extra-UE | Nessuno (Plausible è UE) |
| Termine conservazione | Dati grezzi: zero (Plausible non li salva). Aggregati: 365 giorni. |
| Misure di sicurezza | Cookieless by design |
| Base giuridica | Legittimo interesse (art. 6.1.f GDPR) — bilanciamento valido per natura aggregata e anonima |
2.5 Trattamento "Supporto utenti"
| Campo | Dettaglio |
|---|---|
| Finalità | Risposta a richieste di supporto/refund/DSAR via email |
| Categorie di interessati | Utenti che scrivono a supporto@custodir.com o info@custodir.com |
| Categorie di dati | Email mittente, contenuto del messaggio (incluse eventuali citazioni di license_key, screenshot allegati) |
| Categorie di destinatari | Cloudflare Email Routing (forwarding), Gmail (casella destinazione caggia.oasi@gmail.com di Alberto) |
| Trasferimenti extra-UE | Google USA — DPF |
| Termine conservazione | 24 mesi dalla chiusura del ticket (per gestione recidive / claim) |
| Misure di sicurezza | TLS in transito (Cloudflare → Gmail), 2FA su account Gmail destinazione |
| Base giuridica | Esecuzione contratto (art. 6.1.b) + legittimo interesse (gestione assistenza) |
3. Categorie di dati che NON trattiamo
Per design del prodotto (privacy by design, art. 25 GDPR):
| Categoria | Dove vive | Perché non passa da noi |
|---|---|---|
| Dati patrimoniali (importi, holdings, transazioni) | Solo PC dell'utente, in DB SQLite cifrato (SQLCipher) | Architettura "PC-locale fa tutto" |
| Credenziali broker (Fineco, TR, Gmail app password) | Solo PC dell'utente, in vault cifrato (AES-256-GCM, master password Argon2id) | Mai trasmesse |
| Email transazionali del broker | Parsate localmente dall'IMAP del client | Mai trasmesse |
| Output AI (recap, tax preview) | Generati localmente, chiamate dirette client → Anthropic/Groq | Mai cached lato cloud |
| Backup database | Locali su PC + opzionalmente push a repo GitHub privato dell'utente | Mai a server Custodir |
4. Diritti degli interessati (art. 15-22 GDPR)
Vedi sezione 6 di PRIVACY_POLICY.md. Procedura interna:
- Richiesta DSAR via
supporto@custodir.com - Verifica identità (email originale + license key)
- Estrazione dati da D1 (license + activation + telegram_link rows) tramite query MCP / wrangler
- Risposta entro 30 giorni con export JSON
- In caso di richiesta cancellazione: DELETE su licenses (CASCADE su device_activations + telegram_links). I record
webhook_eventsdi pagamento restano per obbligo fiscale.
5. Data Breach response
Procedura ai sensi degli art. 33-34 GDPR:
- Detection: alert via Cloudflare WAF anomaly detection + manual log review settimanale
- Containment entro 24h: rotate JWT Ed25519 keypair, revoke tutti i JWT attivi (forza re-activate), redeploy Worker, rotate API tokens
- Notifica al Garante entro 72h (art. 33 GDPR) se il breach comporta rischio per diritti/libertà degli interessati
- Notifica agli interessati senza ingiustificato ritardo (art. 34 GDPR) se rischio elevato
- Documentazione interna dell'incident con root cause, mitigazioni, lessons learned
6. Valutazione necessità DPIA (art. 35 GDPR)
DPIA non obbligatoria al momento perché:
- Non trattiamo dati di categoria particolare (art. 9) — niente dati sanitari, biometrici, religiosi, ecc.
- Non trattiamo dati di minori
- Non facciamo profilazione (Plausible è aggregata)
- Non monitoriamo sistematicamente (analytics sono cookieless aggregate)
- Volume attuale prevedibile < 10.000 utenti
Riconsidereremo la DPIA se:
- Aggiungiamo agenti AI che processano dati patrimoniali sensibili (es. analisi di patrimonio sopra soglia €50k che possa qualificarsi come "dato finanziario sensibile")
- Volume utenti > 10.000 in UE
- Cambia normativa (es. AI Act per agenti AI in scope)
7. Validità
- Versione: 0.1 draft 2026-05-11
- Da approvare: revisione con avvocato privacy prima del lancio commerciale
- Da rivedere: annualmente (calendar reminder) o ad ogni significativo cambio di architettura