I miei dati sono al sicuro?

I dati risiedono sul tuo dispositivo

Il concetto fondamentale di Capitally è che tutti i tuoi dati sono crittografati e conservati sul tuo dispositivo. I nostri server memorizzano solo una copia del tuo progetto per la sincronizzazione tra dispositivi, ma poiché solo tu hai accesso alle chiavi di crittografia, non possiamo vedere i dati effettivi — e va benissimo anche se blocchi queste richieste di sincronizzazione.

Concretamente, tale copia risiede nel database del sito all’interno del tuo browser (IndexedDB), non come file apribile tramite Finder o Explorer, ed è crittografata anche lì: il testo in chiaro esiste solo in memoria mentre l’app è aperta. Ogni browser mantiene il proprio archivio e l’app installata ne ha uno separato rispetto al browser da cui è stata effettuata l’installazione (vedi App desktop e mobile); ecco perché effettuare l’accesso su un nuovo dispositivo richiede una risincronizzazione invece di un caricamento istantaneo dei dati.

Due conseguenze da tenere a mente: se desideri una copia che puoi conservare, esegui un export JSON (vedi Eseguire il backup e il ripristino del tuo progetto). Se due dispositivi mostrano numeri differenti, si tratta di un problema di sincronizzazione o di prezzi memorizzati nella cache su uno di essi, non di un problema relativo ai dati (vedi Risoluzione dei problemi dell’app).

L'unica cosa che «vediamo» sono i simboli di mercato con cui hai interagito — quelli cercati o di cui hai recuperato i prezzi — ma non li colleghiamo al tuo account.

Capitally è anche un portfolio tracker senza Plaid, Yodlee o altri aggregatori di collegamento al broker. Non ti chiediamo username e password del broker e non leggiamo il tuo conto corrente. Gli import avvengono solo tramite caricamento diretto di file (CSV/XLS/XML/JSON) o inserimento manuale. È una scelta di privacy, ma anche di precisione — gli export CSV dei broker risalgono al giorno di apertura del conto e mantengono le operazioni societarie, i reinvestimenti dei dividendi e le conversioni FX che gli aggregatori in genere perdono, cioè esattamente il dettaglio da cui dipendono un prezzo di carico accurato (e la dichiarazione fiscale).

I progetti sono crittografati per impostazione predefinita

Ogni progetto Capitally utilizza la crittografia AES-256 lato client (AES-GCM) con chiavi derivate dalla tua password tramite PBKDF2 e protette da key wrapping RSA-OAEP. Si tratta di crittografia zero-knowledge: le chiavi di crittografia non lasciano mai il tuo dispositivo e i nostri server memorizzano soltanto testo cifrato.

Crittografando i tuoi dati, vogliamo proteggerli da:

  • accesso non autorizzato ai dati archiviati nei nostri database, sia da parte di dipendenti, hacker o agenzie governative
  • accesso non autorizzato sul tuo dispositivo, ma solo finché proteggi il profilo del tuo browser dall'accesso diretto, o non scegli l'opzione «Ricordami» durante il login

Non siamo in grado di proteggerli da:

  • attacchi alla supply chain o man-in-the-middle in cui gli aggressori sostituiscono il nostro codice sorgente
  • scritture o cancellazioni non autorizzate effettuate nei nostri database o sul dispositivo client
  • rilevamento dell'attività del progetto — i metadati del progetto, come il tipo di operazione (transazione creata, aggiornata, eliminata, ecc.) e i timestamp (quando hai apportato la modifica, non la transazione effettiva) non sono crittografati

Come funziona la crittografia

Quando crei un progetto puoi scegliere tra tre modalità di crittografia:

  1. Password utente — al login, usiamo PBKDF2 per derivare due password da quella che inserisci, utilizzando due salt separati. La prima password ti autentica, così i nostri server di autenticazione (Google Identity Platform) non ricevono mai la password che digiti, e la seconda non può essere derivata da essa. La seconda password crittografa (con AES-GCM) un insieme di chiavi private usate per la crittografia del progetto. Puoi scegliere di memorizzare in modo sicuro quella chiave nel browser per non doverla digitare di nuovo.
  2. Password del progetto — come sopra, ma imposti una password di progetto separata che deriva la chiave di crittografia, distinta da quella di login.
  3. Chiave remota — una volta effettuato il login, l'app recupera una chiave di crittografia dal server. La chiave non è memorizzata nel database; viene derivata al volo dalle tue credenziali, da un salt e dalla nostra chiave privata. L'endpoint che detiene questa chiave privata è separato da ogni altro endpoint.

Cosa significhi ogni modalità nella schermata di accesso — quale viene assegnata di default a un account Google e cosa viene eliminato con il Logout — è spiegato in Il tuo account e l’accesso.

Ogni utente del progetto (il sistema è pronto per la condivisione dei progetti, anche se oggi è supportato un solo utente) ha una coppia di chiavi RSA-OAEP. La chiave privata è crittografata con la chiave di crittografia principale sopra descritta e viene usata per decifrare le share key (un'altra AES-GCM), che a loro volta crittografano e decifrano i dati del progetto. Possono esserci più share key per progetto — ad esempio una per ciascun insieme di dati condivisi tra gli stessi utenti.

La chiave pubblica viene usata per crittografare le share key rilasciate all'utente e per firmare i messaggi generati dal backend (ad esempio nuove transazioni da un broker) in modo che solo l'utente designato possa leggerli.

Una volta inserita la password, non viene memorizzata né inviata da nessuna parte. Le chiavi di crittografia derivate possono essere memorizzate nel browser, ma sono non esportabili — possono decifrare i tuoi dati, ma il materiale della chiave stesso non può essere letto, nemmeno dal codice dell'applicazione di Capitally.

Accesso e sicurezza dell’account

Capitally si basa su due livelli indipendenti: l’autenticazione, che decide chi può accedere al tuo account, e la crittografia, che decide chi può leggere i dati. La maggior parte della protezione risiede nel secondo livello: anche se qualcuno riuscisse a entrare nel tuo account, si troverebbe comunque di fronte a del testo cifrato se il progetto ha una sua password.

Autenticazione a due fattori (2FA). Accedere con Google ti offre l’autenticazione multi-fattore di Google, che è attualmente il modo più diretto per aggiungere un secondo livello di sicurezza a un account Capitally. La 2FA nativa — tramite app TOTP come Google Authenticator o Authy, oltre alla verifica via email e SMS — è nella roadmap.

Un secondo segreto per i dati stessi. Una Password progetto (chiamata anche «porta la tua chiave») crittografa il progetto indipendentemente dalla modalità di accesso; pertanto, il solo accesso all’account non è sufficiente per leggere nulla. È descritta come modalità 2 in Come funziona la crittografia qui sopra.

Chiavi hardware. La tua chiave di crittografia viene derivata dalla tua password sul tuo dispositivo e non raggiunge mai i nostri server. Pertanto, una chiave hardware come YubiKey rappresenta una comodità per l’accesso e la gestione delle chiavi, non la barriera che protegge i tuoi dati da un malintenzionato, come accadrebbe invece in un servizio che conserva le chiavi lato server. Anche il supporto per le passkey, per l’accesso e per la crittografia del progetto, è nella roadmap.

In caso di smarrimento della password del progetto

Non possiamo reimpostare la password di un progetto né recuperare i dati in esso contenuti: la chiave viene derivata dalla tua password ed esiste solo sul tuo dispositivo, mentre i nostri server conservano solo testo cifrato. Prima di concludere che i dati siano persi, verifica tre punti — e leggi il primo prima di toccare qualsiasi cosa.

1. Sei ancora connesso da qualche altra parte? Le chiavi di crittografia rimangono nella sessione del browser finché non clicchi esplicitamente su Logout: chiudere la scheda, uscire dal browser o riavviare il computer non le elimina. Quindi, qualsiasi dispositivo o browser in cui hai aperto il progetto senza mai uscire rappresenta un percorso ancora attivo: apri il progetto lì e imposta una nuova password in Impostazioni → Crittografia. Non effettuare il logout da quella sessione per «riprovare»: sta conservando l’unica copia della chiave che ti rimane.

2. La password è stata salvata? Accedi normalmente e lascia che il browser o il portachiavi inseriscano automaticamente la password del progetto. Se funziona, imposta subito una nuova password per il progetto o passa alla crittografia tramite password utente, così da avere un solo segreto da custodire.

3. Qual è la modalità di crittografia del progetto? Con la Password utente non esiste un segreto separato per il progetto: il progetto si sblocca con la password di accesso. Con la Chiave remota, la chiave viene ricalcolata al volo dalle tue credenziali, quindi il normale flusso di ripristino dell’account ti farà rientrare. Solo la Password progetto mette nelle tue mani un secondo segreto che nulla può reimpostare. Se hai smarrito proprio la password di accesso, i percorsi 1 e 2 sono le tue uniche opzioni.

Se nessuno di questi casi è applicabile, i dati in quel progetto non possono essere recuperati — né da te, né da noi, né da un malintenzionato, né tramite mandato giudiziario. È la stessa caratteristica che rende la crittografia un elemento prezioso.

Hosting, GDPR e residenza dei dati nell'UE

Capitally è sviluppato in Europa per investitori di tutto il mondo e opera secondo il diritto europeo in materia di privacy.

  • Hosting in Europa. Tutti i server e i database si trovano in data center dell'UE — i tuoi dati crittografati non escono mai dalla giurisdizione europea. Utilizziamo Google Cloud, Railway, Hetzner, MongoDB e Cloudflare.
  • Conforme al GDPR. Hai il diritto di esportare e di eliminare definitivamente i tuoi dati in qualsiasi momento; entrambe le operazioni richiedono un solo clic all'interno dell'app, senza bisogno di inviare email.
  • Igiene dei server secondo gli standard del settore oltre alla crittografia end-to-end: HTTPS per tutto il traffico, crittografia a riposo, accesso su base need-to-know per il nostro team, autenticazione a due fattori e log degli accessi.
  • Nessun data broker di terze parti. Non condividiamo dati con inserzionisti e nessun SDK di analytics ha accesso al tuo portafoglio — puoi anche disattivare completamente gli analytics (vedi Analytics e tracciamento errori qui sotto).

Il codice è open source e verificato?

Capitally è un progetto closed-source, ma l'app client è scritta in TypeScript e tutta la gestione dei dati avviene lato client. Tutte le comunicazioni di rete sono facilmente verificabili negli strumenti per sviluppatori del browser.

Come con qualsiasi software, alla fine è una questione di fiducia. Devi fidarti del fatto che noi (o un hacker) non modificheremo di nascosto quel codice per rubare le chiavi di crittografia o le password.

La maggior parte degli altri portfolio tracker si descrivono come «crittografati a livello bancario», il che significa che il provider detiene le tue chiavi e può leggere i tuoi dati. Capitally è crittografato end-to-end, il che significa che solo tu puoi farlo — nemmeno i nostri ingegneri possono, per progettazione.

Analytics e tracciamento degli errori

Non vogliamo conoscere i tuoi dati finanziari, ma per migliorare l'app e aiutarti in caso di problemi, raccogliamo alcuni dati sull'utilizzo se ci dai il permesso. Nello specifico, raccogliamo attualmente:

  • il tuo ID utente
  • l'URL della pagina, che può contenere l'ID dell'asset
  • gli URL delle richieste di rete (che conterranno gli ID degli asset di mercato)
  • gli elementi su cui clicchi (solo il loro ID di sistema)
  • i messaggi di log di sistema (che possono contenere ID degli asset di mercato)

Se non ci consenti di identificarti, non memorizzeremo nessuno degli ID sopra menzionati. In tal caso, registriamo solo gli errori e un utilizzo minimo delle funzionalità, in modo completamente anonimo, senza ID né log dettagliati.

Questo consenso è distinto da quello per i cookie funzionali, che ricorda la tua selezione del progetto e le tue colonne tabella tra una sessione e l’altra. Rifiutare l’analisi lascia intatti questi elementi; rifiutare i cookie funzionali è ciò che causa la riapertura del progetto Demo ogni volta — vedi Impostazioni e preferenze di visualizzazione.

Cose che non raccogliamo mai:

  • la dimensione o il valore dei tuoi investimenti
  • nomi, note o qualsiasi testo che crei tu stesso
  • fonti di quotazione personalizzate