Come Pontile protegge i tuoi documenti.
In poche righe: come funziona la cifratura, cosa vediamo e cosa resta fuori dalla nostra portata.
Come funziona
Come funziona, in 4 passi.
Tutto avviene nel tuo browser, prima che un byte raggiunga i nostri server.
La tua password
Dalla password il browser ricava le chiavi del tuo account. La password non lascia mai il dispositivo.
Per tecnici
Argon2id (64 MiB, 3 iterazioni) e poi HKDF-SHA-256: una chiave serve al login, l’altra cifra la chiave principale. Al server arriva solo un valore derivato.
Le tue chiavi restano sul dispositivo
Le chiavi personali nascono nel browser. Al server arrivano solo chiuse con chiavi che conosci soltanto tu.
Per tecnici
Una coppia X25519 per ricevere chiavi e una Ed25519 per firmare; le parti private sono cifrate con XChaCha20-Poly1305 sotto la chiave principale.
Ogni file chiuso a chiave prima di partire
Ogni file è cifrato con una chiave nuova. Ai nostri server arrivano solo byte illeggibili.
Per tecnici
XChaCha20-Poly1305 a segmenti da 1 MiB, una chiave per ogni versione; il manifesto è firmato con Ed25519 e l’integrità si verifica con BLAKE2b-256.
Solo chi inviti lo riapre
Invitare qualcuno vuol dire consegnargli la chiave, chiusa solo per lui. Se lo rimuovi, le chiavi cambiano.
Per tecnici
La chiave della sezione è sigillata verso la chiave pubblica X25519 dell’invitato (sealed box); ogni accesso è un record firmato Ed25519, verificato fino al titolare.
Chiavi
Una chiave dentro l’altra.
Ogni chiave apre solo quella sotto: chi ha la chiave di una sezione non legge le altre.
- PasswordLa conosci solo tu
- Chiavi personaliRestano nel tuo browser
- Chiave dell’hubNomi delle sezioni
- Chiave della sezioneCambia a ogni revoca
- Chiave del fileNuova per ogni versione
Per tecnici: tutte le chiavi
- PWK · Password keyArgon2id(password, salt)Mai conservata
- AK · Authentication keyHKDF(PWK, «hub-v1/auth»)Sul server solo un HMAC
- KEK · Key encryption keyHKDF(PWK, «hub-v1/kek»)Mai conservata
- MK · Master key32 byte casuali alla registrazioneCifrata con KEK e, a parte, con RK
- RK · Recovery key32 byte casuali, consegnati all’utente come codiceMai conservata
- IEK · Identity encryption keypairX25519, riceve le chiavi di hub e sezionePrivata cifrata con MK
- ISK · Identity signing keypairEd25519, firma inviti, caricamenti, eventiPrivata cifrata con MK
- HK · Hub key32 byte casuali, metadati comuni dell’hubSigillata per ogni membro
- SK · Section key, per epoca32 byte casuali, nuova a ogni rotazioneSigillata per ogni membro della sezione
- DK · Deposit keypair, per epocaX25519, caricamenti senza diritto di letturaPrivata cifrata con SK
- FK · File key32 byte casuali, nuova per ogni versioneAvvolta con SK (o sigillata verso DK)
- MDK · Metadata keyHKDF(FK, «hub-v1/meta»)Mai conservata
- NK · Folder key32 byte casuali, nuova a ogni modificaAvvolta con SK
- OK, OEK, RQK · Organizzazioni e richiesteChiave dell’organizzazione, sua coppia X25519, chiave di ogni richiestaSigillate ai soli membri o destinatari
Metadati
Cosa vediamo, cosa non vediamo.
Per far funzionare il servizio il server conosce alcune informazioni. Il contenuto no.
Vediamo
- Email e chiavi pubbliche degli utenti
- Chi è membro di quale hub e sezione, con quale ruolo
- Quanti file ci sono, quanto pesano cifrati e quando cambiano
- Indirizzi IP, per al massimo 30 giorni
Non vediamo
- Il contenuto dei file
- I nomi di file, cartelle, sezioni e hub
- Commenti, promemoria ed esiti delle richieste
- Le chiavi per leggere
Limiti
Cosa non può proteggere.
Nessuna cifratura protegge da tutto. Ecco i limiti, detti prima.
Per tecnici
Le primitive crittografiche.
Con il rilascio pubblicheremo il codice dell’app che gira nel tuo browser: è lì che avviene la cifratura, ed è lì che chiunque potrà verificarla.
Mostra la tabella delle primitive
| Funzione | Algoritmo |
|---|---|
| Chiave dalla password | Argon2id v1.3 (RFC 9106): 64 MiB, 3 iterazioni |
| Sotto-chiavi | HKDF-SHA-256 (RFC 5869) |
| Cifratura dei dati | XChaCha20-Poly1305, cifratura autenticata |
| Chiavi verso un destinatario | X25519, sealed box |
| Firme | Ed25519 (RFC 8032) |
| Hash e registro delle chiavi | BLAKE2b-256, albero di Merkle (RFC 6962) |
Solo primitive standard, da libsodium o implementazioni equivalenti.
Domande sul protocollo?
Rispondiamo volentieri a tecnici, avvocati e revisori.