Crittografia Zero-Knowledge
Ogni trasferimento ospitato viene cifrato sul dispositivo prima di partire. La modalità Zero-Knowledge fa un passo in più: la chiave che sblocca i file non raggiunge mai i nostri server, quindi, a differenza della modalità predefinita, non possiamo davvero leggerli.
«Zero-knowledge» è un’affermazione forte, quindi conviene essere precisi su ciò che significa qui. Per leggere i file serve una sola cosa: la chiave di cifratura. Zero-knowledge significa che quella chiave non ci raggiunge mai: non ne sappiamo nulla. I dati cifrati che conserviamo, senza la chiave, sono soltanto rumore su un disco.
Questa precisione vale in entrambe le direzioni. Ogni trasferimento ospitato viene cifrato sul dispositivo con AES-256-GCM, in qualsiasi modalità, ma solo la modalità Zero-Knowledge tiene la chiave interamente fuori dai nostri server. È quindi l’unica modalità in cui non possiamo davvero decifrare i file, e l’unica che descriviamo così.
Le due modalità per la chiave, affiancate
Entrambe le modalità cifrano i file sul dispositivo, con la stessa robustezza. L’unica differenza sta in ciò che accade alla chiave che li sblocca.
| Cosa confrontiamo | Chiave in custodia sul server (predefinita) | Zero-Knowledge (a pagamento) |
|---|---|---|
| Dove vengono cifrati i file | Sul dispositivo, prima del caricamento | Sul dispositivo, prima del caricamento |
| Cosa conserviamo | I dati cifrati più la chiave, protetta da una chiave di cifratura gestita nel cloud | Solo i dati cifrati: nessuna chiave, mai |
| Dove si trova la chiave | In custodia sui nostri server, protetta da una chiave gestita nel cloud | Solo nel frammento «#» del link di condivisione |
| Transferify può decifrare i file? | Tecnicamente sì: possiamo sbloccare la chiave | No: non riceviamo mai la chiave |
| In caso di smarrimento del link | Ancora recuperabile: la chiave è in nostro possesso | Perso per sempre: non possiamo fare nulla |
| Disponibilità | Tutti i piani, compreso quello gratuito | I piani che includono l’opzione |
Dove si trova la chiave, e perché conta il «#» nel link
Una chiave di file Transferify è una chiave AES casuale a 256 bit, generata nel browser. In modalità Zero-Knowledge raggiunge il destinatario all’interno del frammento del link, la parte che segue il simbolo «#», per esempio transferify.eu/download/abc123#k=…
Qui sta tutto il trucco. Secondo una regola che ogni browser rispetta, il frammento non viene mai inviato al server: resta nel browser e viene usato solo sulla pagina stessa. Quando il destinatario apre il link, quindi, la chiave viene letta in locale per decifrare il download, e i nostri server vedono la richiesta senza la parte «#». Semplicemente non la riceviamo mai.
Questo significa anche che il link è la chiave. Chiunque riceva il link completo può aprire i file, quindi va condiviso su un canale di fiducia. Per una sicurezza in più si può aggiungere una password: la chiave viene allora protetta con la password (PBKDF2, 600.000 iterazioni) prima di entrare nel link e sbloccata nel browser del destinatario; neanche la password arriva mai a noi.
Come vengono cifrati i file
I file vengono cifrati con AES-256-GCM, un cifrario autenticato standard usato in tutto il web moderno. I file di grandi dimensioni sono suddivisi in blocchi: 8 MiB per i trasferimenti di uso comune, più grandi man mano che il file cresce. Ogni blocco viene sigillato e dotato di un proprio tag di autenticazione, poi trasmesso in streaming direttamente all’archiviazione, perciò la cifratura funziona anche con file molto più grandi della memoria del dispositivo.
Ogni blocco è legato alla sua posizione esatta nel trasferimento. Se la nostra archiviazione restituisse mai un blocco manomesso, riordinato o scambiato, la decifratura fallirebbe in modo evidente, invece di consegnare al destinatario dati danneggiati o errati. I file sono conservati nell’UE, su Cloudflare R2 in un bucket limitato alla giurisdizione UE oppure su AWS S3 a Francoforte, e restano cifrati a riposo.
Cosa fa la modalità predefinita, e perché è corretto dirlo
Per impostazione predefinita, e nel piano gratuito, usiamo la custodia della chiave sul server. I file vengono comunque cifrati sul dispositivo, ma noi conserviamo in custodia la chiave del file, protetta da una chiave di cifratura gestita nel cloud. Ciò significa che siamo tecnicamente in grado di decifrare un file ospitato, per esempio per consegnarlo o per ottemperare a una richiesta legittima, e quindi non sosteniamo di non poterlo vedere.
Il vantaggio è la comodità: il link di download è breve, non contiene alcuna chiave e un link smarrito resta recuperabile, perché possiamo sbloccare di nuovo la chiave. È la scelta giusta per la condivisione di tutti i giorni. Non è zero-knowledge, e non lo chiamiamo così.
Quando scegliere Zero-Knowledge
Conviene attivare la modalità Zero-Knowledge quando «fidarsi di noi» non è sufficiente, quando serve poter dimostrare che il fornitore non può leggere un file.
- Documenti riservati: legali, finanziari, medici, delle risorse umane
- Credenziali, chiavi o tutto ciò che non si invierebbe mai in chiaro
- Lavoro soggetto a requisiti rigorosi di privacy o conformità
- Ogni volta che si preferisce che la chiave semplicemente non esista dalla nostra parte
Il compromesso è che non possiamo aiutare a recuperare un link smarrito, perché non conserviamo nulla da cui recuperarlo. Se si custodisce il link con cura (magari con una password), i file restano privati anche per noi.
Non sa quale scegliere? Ogni trasferimento è comunque cifrato: parta dalla modalità predefinita e attivi Zero-Knowledge per quelli che contano davvero.