AES-256-GCM (Advanced Encryption Standard, blocco da 256 bit, modalità Galois/Counter Mode) è uno degli algoritmi simmetrici autenticati più solidi disponibili: oltre alla cifratura garantisce, tramite un authentication tag da 128 bit, che il file non sia stato manomesso o spostato.
256 bit (32 byte) per la master key e per ogni chiave derivata.
Ogni file viene cifrato con una chiave dedicata, prodotta tramite HKDF-SHA256 (RFC 5869) a partire da:
Conseguenza pratica: due file diversi, anche dello stesso utente, vengono cifrati con due chiavi diverse. Se per un qualsiasi malfunzionamento il sistema tentasse di leggere un file che non appartiene a chi sta facendo la richiesta e allo strumento/chat che sta vedendo/usando in quel momento, la decifratura fallirebbe per impossibilità di derivare la chiave corretta: la conseguenza sarebbe che nessun contenuto verrebbe esposto.
Ogni file include nel tag GCM l'identificativo utente e il percorso, legando crittograficamente il contenuto al suo contesto. Spostare un file da una cartella all'altra renderebbe il file, automaticamente, illeggibile.
La chiave principale risiede esclusivamente sull'infrastruttura backend, separata dai server applicativi che servono il sito. Viene richiesta server-to-server al momento del bisogno, con autenticazione tramite chiave condivisa, e non transita mai tramite il browser dell'utente né viene esposta a JavaScript.
Il formato dei file cifrati include un identificatore di versione della chiave (key_id), che permetterà di ruotare la master key senza richiedere una ri-cifratura immediata di tutto lo storico.
Ogni operazione di cancellazione si traduce in una rimozione fisica del file dal filesystem (unlink a livello POSIX). Non manteniamo cestini, snapshot applicativi o copie ombra. L'eliminazione è permanente e irreversibile: né l'utente né Canonity possono recuperare un file dopo la cancellazione. Consigliamo di scaricare localmente i contenuti che si desidera conservare prima di eliminarli.