Threat model
Assumiamo furto del dispositivo, intercettazione di rete ed esposizione accidentale via backup o cloud sync. Assumiamo che le credenziali dell'utente possano essere compromesse. Non assumiamo avversari di livello statale con accesso fisico a dispositivi sbloccati — Fluera non è uno strumento di segretezza, è uno strumento di studio.
Dentro quel modello, tre garanzie:
- I dati locali sono illeggibili senza la chiave. Un dispositivo rubato produce un blob cifrato.
- I dati sincronizzati sono cifrati in transito (TLS) e a riposo sull'infrastruttura UE. Il sync non è end-to-end: come titolari del trattamento possiamo tecnicamente accedere ai contenuti sincronizzati, ma non li vendiamo né li usiamo per pubblicità.
- La telemetria è consensuale e de-identificata. Gli analytics non possono collegare un utente ai suoi contenuti nemmeno in caso di breach completo.
At-rest: SQLCipher, AES-256
Ogni quaderno Fluera vive in un database SQLite locale cifrato con SQLCipher — un'estensione ampiamente verificata che cifra trasparentemente ogni pagina del database con AES-256-CBC e integrity check HMAC-SHA512 per pagina.
La chiave del database locale è una chiave casuale a 256 bit generata da Fluera e custodita nell'archivio sicuro della piattaforma — Keychain su iOS/macOS, Keystore su Android, DPAPI su Windows e libsecret su Linux. Non è la password dell'account né una passphrase del cloud sync, e la chiave del database locale non viene inviata ai server Fluera.
In transito: TLS 1.3
Tutto il traffico di rete è TLS 1.3 con cifrari moderni.
Sync tra dispositivi: cifrato in transito e a riposo
Il cloud sync, quando attivato, trasmette i quaderni al server di sync (Supabase, regione UE, eu-north-1) cifrati in transito tramite TLS e cifrati a riposo a livello di infrastruttura. Il sync non è end-to-end: il contenuto è leggibile lato server e, come titolari del trattamento, possiamo tecnicamente accedervi. Non vendiamo mai i tuoi contenuti né li usiamo per pubblicità. Il sync è opt-in per quaderno — puoi tenerne alcuni solo locali mentre ne sincronizzi altri.
Collaborazione P2P: diretta, cifrata
La collaborazione real-time usa WebRTC DataChannel con cifratura DTLS-SRTP. Supabase Realtime fa solo da broker di signaling — setup della connessione — non da relay per il traffico vero del canvas. Dopo l'handshake, gli edit del canvas fluiscono peer-to-peer. Il server non li vede.
Su NAT restrittivi passiamo via TURN, nel qual caso il relay vede solo pacchetti DTLS cifrati che non può decrittare.
Chiamate AI: via proxy, mai dirette
Le chiamate ai modelli Google Gemini (Socratic Mode, Ghost Map, LaTeX OCR, Exam Session) sono servite tramite Google Vertex AI ed elaborate nell'UE (europe-west4 NL / europe-west1 BE). Passano attraverso un proxy che custodisce le credenziali lato server: i dispositivi client non vedono mai la chiave. Il proxy applica i rate limit per piano e logga le durate delle chiamate per la contabilità — mai il contenuto del canvas.
Se disattivi le funzioni AI in Impostazioni → Privacy, nessun contenuto del canvas viene inviato a Gemini, nemmeno per fallback OCR on-device.
Telemetria: opt-in, hashata, allowlisted
Gli analytics di prodotto sono disattivati di default. Quando attivati, gli eventi sono limitati a una whitelist lato server (inizio/fine sessione, invocazione feature, durata chiamata AI — mai contenuto). L'ID utente è hashato SHA-256 sul dispositivo; l'ID in chiaro non lascia mai il client. Gli eventi sono conservati 180 giorni, poi aggregati o eliminati.
Audit log (account Istituzionali)
Ogni accesso ai quaderni condivisi — chi, da quale dispositivo, quando — viene scritto in un audit log append-only. Gli amministratori possono esportare il log in CSV o JSON per i controlli di compliance. Il log è write-once: la cancellazione richiede una motivazione documentata ed è a sua volta loggata.
Recupero dei dati
I quaderni sincronizzati sono associati al tuo account: dopo il normale flusso di recupero dell'account, accedi di nuovo per scaricarli su un nuovo dispositivo. Non esiste una passphrase separata del cloud sync da ricordare o perdere. Il recupero dell'account non può ricostruire un quaderno rimasto solo locale se i dati del dispositivo sono stati cancellati; attiva il sync per i quaderni che vuoi poter recuperare su altri dispositivi.
Responsible disclosure
I security researcher sono benvenuti. Segnala le vulnerabilità a lorenco@fluera.dev con cifratura PGP (chiave pubblicata sul profilo GitHub). Riceviamo riscontro entro 24 ore, patch dei problemi critici entro 72, e citiamo chi segnala nella hall of fame salvo richiesta di anonimato.
Scope: l'app Fluera (tutte le piattaforme), il servizio di sync, il proxy AI e questo sito marketing. Fuori scope: servizi terzi (Supabase, Google, Apple, Sentry, RevenueCat) — segnala ai vendor corrispondenti.
Valutazioni esterne
Fluera non ha attualmente certificazioni SOC 2 o ISO 27001. Sono sulla roadmap enterprise e saranno annunciate pubblicamente a completamento. Preferiamo non dichiarare controlli che non abbiamo verificato in modo indipendente.
La lista sub-processor è pubblica e aggiornata. Il Data Processing Agreement è disponibile su richiesta a lorenco@fluera.dev.