Cifrare un file, poi mandare la chiave per un'altra strada
Pubblicato il 06/08/2026 · 12 min di lettura · Strumenti per sviluppatori
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso Allin
Performance web · Formati di file
Verificato su 4 fonti
Lo strumento di cifratura dei file gira interamente nel tuo browser e usa AES-256-GCM tramite l'API WebCrypto. Leggendo il codice pubblicato ed eseguendolo: la tua passphrase viene allungata con PBKDF2-HMAC-SHA256 su 150 000 iterazioni fino a una chiave da 256 bit; a ogni cifratura vengono generati un sale casuale di 16 byte e un nonce casuale di 12 byte; entrambi sono scritti in chiaro in testa al file .enc, seguiti dal testo cifrato e da un tag di autenticazione a 128 bit. Il sovraccarico misurato è costante: 44 byte, da un file da 1 MB a uno da 1 GB. Cifrare due volte lo stesso file con la stessa passphrase dà due uscite diverse. Invertire un bit del testo cifrato, o un bit del nonce, fa fallire la decifratura invece di restituire in silenzio dati rovinati. È una costruzione solida, e non è lì che le persone sbagliano. L'errore è la consegna: il file cifrato e la passphrase percorrono la stessa strada. Un allegato cifrato più «la password è Marseille2019» nello stesso thread non è cifratura, è un rinvio — chi legge la casella ha entrambe le metà. Un secondo canale significa un altro mezzo, possibilmente su un altro dispositivo e un altro account: il file per e-mail, la passphrase detta a voce al telefono. E poiché il contenitore .enc non ha alcuna intestazione — i primi byte sono il sale grezzo — nulla di standard lo apre: chi lo riceve ha bisogno dello stesso strumento. Se la passphrase si perde, il file è perso con lei. È il progetto che funziona, non un difetto.
Cifrare è la metà facile. Ecco esattamente che cosa fa lo strumento al tuo file — cifrario, derivazione della chiave, sale, nonce — e perché un allegato cifrato con la password nello stesso thread non protegge nulla.
Che cosa fa davvero lo strumento al tuo file
Vale la pena essere precisi, perché «AES-256» su un pulsante non dice quasi nulla: le stesse tre lettere coprono costruzioni eccellenti e costruzioni rotte. Questa chiama l'implementazione WebCrypto del browser in modalità AES-GCM, cioè cifratura autenticata: non nasconde soltanto il contenuto, dimostra anche che il contenuto non è stato alterato. La chiave è da 256 bit. Il tag di autenticazione è da 128 bit, e puoi verificarlo senza leggere una riga di codice: un testo in chiaro da 71 byte ha dato un cifrato da 87 byte, esattamente i sedici byte in più che la RFC 5116 prevede per AES-256-GCM.
Una passphrase non è una chiave: va trasformata in una. Lo strumento usa PBKDF2-HMAC-SHA256 su 150 000 iterazioni, con un sale di 16 byte preso dalla sorgente casuale crittografica del browser. Il sale è nuovo a ogni cifratura, ed è ciò che impedisce a una tabella precalcolata di coprire più file in una volta. Il nonce è di 12 byte e cambia anch'esso ogni volta — verificato cifrando due volte lo stesso file con la stessa passphrase e confrontando: sale diverso, nonce diverso, cifrato diverso. Entrambi sono salvati in chiaro in testa all'uscita, e questo è corretto, non sciatto. Un sale e un nonce non sono segreti; devono solo essere unici, e chi decifra ne ha bisogno per ricostruire la chiave.
La metà di autenticazione non è un ornamento. Inverti un solo bit in qualunque punto del cifrato e la decifratura rifiuta; inverti un solo bit del nonce salvato e rifiuta anche; dagli una passphrase che differisce di una maiuscola e rifiuta. In ogni caso ottieni un errore, mai un file pieno di spazzatura dall'aria plausibile. Questa distinzione conta più di quanto sembri: una modalità senza autenticazione, come AES-CBC senza un controllo d'integrità separato, restituisce dati rovinati senza fiatare, e un attaccante in grado di modificare il file in transito riesce a volte a indirizzare quel danno.
L'errore che fanno tutti: la chiave viaggia con il file
La forma è questa. Cifri il foglio degli stipendi, alleghi il file .enc a un'e-mail e — dato che il destinatario ovviamente ne ha bisogno — scrivi la passphrase nello stesso messaggio. Oppure in un messaggio successivo, che sembra più prudente e non lo è. Oppure in una risposta sullo stesso thread, che è peggio, perché ora entrambe le metà stanno in un'unica conversazione che qualunque ricerca farà emergere insieme. Qualunque sia la variante, hai messo una serratura e attaccato la chiave alla porta.
Il motivo per cui «te la mando in una seconda e-mail» non funziona è che non cambia chi può leggere. La cifratura in transito non è il modello di minaccia qui: la posta tra grandi fornitori è già cifrata sul filo. Ciò da cui ti stai davvero difendendo è qualcuno che legge la casella: un account compromesso, un telefono lasciato sbloccato, un indirizzo di famiglia condiviso, un datore di lavoro con accesso legale all'archivio, un backup trapelato, un thread inoltrato che ha raccolto un destinatario di troppo. Ognuno di questi casi espone la seconda e-mail esattamente quanto la prima. Due messaggi nella stessa casella sono un solo canale usato due volte.
Che cos'è davvero un secondo canale
Un secondo canale deve differire in ciò che davvero cede. Vale la pena separare tre assi. Un mezzo diverso — e-mail contro voce contro carta — perché un protocollo compromesso non consegni entrambe le metà. Un account diverso — la tua casella di lavoro contro una messaggistica personale — perché una sola credenziale non apra entrambe. E un dispositivo diverso, perché un telefono rubato o infetto non tenga il file e la passphrase l'uno accanto all'altra. Manda il file da un portatile e la passphrase dall'app di messaggistica dello stesso portatile, e avrai spostato la chiave dall'altra parte della scrivania, non fuori dalla stanza.
Ecco perché una passphrase dettata al telefono è davvero migliore, e non soltanto antiquata. Non lascia copie: nessun messaggio da cercare dopo, nessun backup che trapeli, nessun thread inoltrato per sbaglio, nessun archivio che un amministratore possa aprire fra due anni. Intercettarla richiede essere in linea nell'istante in cui viene pronunciata, un attacco molto più stretto e molto più costoso che leggere con comodo una casella. Dà anche qualcosa che nessun canale offre da solo: riconosci la voce, quindi sai chi l'ha ricevuta. Detta lentamente, usa l'alfabeto NATO per tutto ciò che è ambiguo e falla ripetere.
Quello che si dimentica: chi riceve deve poterlo aprire
Un file cifrato che dall'altra parte nessuno riesce a decifrare non è sicurezza, è una consegna fallita — e la riparazione abituale è peggiore del problema iniziale, perché finisce con qualcuno che rimanda il file in chiaro «solo per questa volta». Verifica quindi l'altro capo prima di inviare. Il file .enc che questo strumento produce non ha alcuna intestazione: i suoi primi byte sono il sale casuale grezzo, senza numero magico, senza versione, senza nome dell'algoritmo e senza il nome del file originale. È una disposizione su misura. Non è uno ZIP, non è un messaggio OpenPGP, non è un file age, non è l'uscita di openssl enc — e nessuno di questi lo aprirà.
La conseguenza pratica però è buona: poiché lo strumento gira interamente nel browser, chi riceve non deve installare nulla, creare un account o affidare il file a un server. Apre la stessa pagina, carica il file .enc, digita la passphrase e preme decifra, e il testo in chiaro atterra nei suoi download. Non viene caricato nulla, in nessuna direzione. Quindi la frase da mandare insieme al file non è il suggerimento della password: è quale pagina aprire. E quella frase mandala sullo stesso canale del file, visto che non è un segreto; solo la passphrase cambia strada.
Quando la passphrase è persa
Non si può fare nulla. Né il sito, né un'assistenza, né tu. Non esiste alcun account che ne tenga copia, nessuna chiave di recupero, nessun deposito e nessuna porta di servizio: la chiave non è mai esistita altrove se non nella memoria della scheda che l'ha creata, ed era derivata dalla passphrase al volo. Perdi la passphrase e il file è un blocco di rumore che resterà rumore. Vale la pena dirlo chiaramente, perché si dà per scontato che esista una via di recupero, come per la password di una webmail.
Ed è il progetto che funziona, non che fallisce. Una via di recupero è per definizione un secondo ingresso, e da un secondo ingresso può passare anche un attaccante — o un tribunale può costringere qualcuno ad aprirlo. La risposta giusta non è sperare in una porta di servizio ma riporre la passphrase in un posto duraturo prima di averne bisogno: una scheda del gestore di password legata al nome del file, o carta in un cassetto se il file conterà ancora fra cinque anni. Scegli una passphrase che tu possa dettare, perché probabilmente dovrai farlo. Quattro o cinque parole senza legame battono una singola parola storpiata su entrambi i fronti: è più robusta e sopravvive alla lettura ad alta voce.
Una debolezza onesta: il numero di iterazioni
Non è il cifrario l'anello più sottile qui, è la derivazione della chiave. PBKDF2 esiste per rendere costoso indovinare, e il suo costo è fissato dal numero di iterazioni. Questo strumento ne usa 150 000. La OWASP Password Storage Cheat Sheet, il riferimento da cui parte la maggior parte dei difensori, oggi raccomanda 600 000 per PBKDF2-HMAC-SHA256. La cifra pubblicata ne è un quarto, il che quadruplica la produttività di un attaccante che indovina fuori linea. Misurate su un core, 150 000 iterazioni richiedono circa 36 millisecondi per tentativo: un core comune prova all'incirca 28 passphrase al secondo; l'hardware specializzato va molto oltre, e PBKDF2 gli è più favorevole di una funzione avida di memoria come Argon2id.
Questo non rende lo strumento insicuro, e non cambia nulla del cifrario, del sale o del nonce, che sono giusti. Sposta da dove viene la sicurezza: con una derivazione più leggera, il peso ricade di più sulla passphrase stessa. Una passphrase di quattro parole estratte a caso da un elenco ampio resta fuori portata in entrambi i casi; una parola di dizionario con un numero in fondo non è mai stata protetta dal numero di iterazioni. Scegli la passphrase come se non esistesse alcuno stiramento, e la differenza fra 150 000 e 600 000 smette di riguardarti.
| Il file passa per | La passphrase passa per | Davvero separato? | Che cosa serve a un attaccante |
|---|---|---|---|
| Allegato e-mail | Lo stesso messaggio | No | Leggere la casella una volta |
| Allegato e-mail | Seconda e-mail, stesso indirizzo | No | Leggere la casella una volta |
| Link condiviso su cloud | Commento sullo stesso file | No | L'account cloud |
| Allegato e-mail | Messaggio di testo a un telefono | In parte | La casella e il telefono — ma un backup del telefono può contenerli entrambi |
| Allegato e-mail | Detta a voce al telefono | Sì | La casella più essere in linea in quell'istante |
| Link condiviso su cloud | Messaggistica cifrata end-to-end, altro account | Sì | Due account distinti su due servizi |
| Consegnato su una chiavetta USB | Detta di persona, nulla di scritto | Sì | Accesso fisico a entrambi, nello stesso momento |
Domande frequenti
- AES-256-GCM basta da solo?
- Per la cifratura in sé sì: è una modalità autenticata standard e l'implementazione del browser è la stessa che serve HTTPS. Ma un cifrario protegge solo ciò che protegge la chiave. Qui la chiave deriva dalla tua passphrase, quindi il vero soffitto di robustezza è la passphrase, e il vero modo di fallire è mandarla sullo stesso canale del file. AES-256-GCM non può nulla né per l'una né per l'altro.
- Perché il sale sta in chiaro all'inizio del file?
- Perché non è un segreto e non doveva esserlo. Un sale esiste perché la stessa passphrase produca una chiave diversa ogni volta, il che impedisce a una tabella precalcolata di attaccare molti file in una volta. Deve solo essere unico, non nascosto. Lo stesso vale per il nonce. Chi decifra ha bisogno di entrambi per ricostruire la chiave, quindi devono viaggiare con il cifrato: nasconderli significherebbe cifrarli, il che richiederebbe una chiave, e si torna al punto di partenza.
- Posso mandare la passphrase in una seconda e-mail?
- No, ed è la versione più diffusa dell'errore. Due e-mail allo stesso indirizzo finiscono nella stessa casella, nello stesso archivio e nello stesso backup. Chi può leggere l'una legge l'altra, e una ricerca sul nome del mittente le tira su affiancate. Non è un secondo canale, è lo stesso canale usato due volte. Cambia mezzo — la voce, o una messaggistica su un altro account — altrimenti la cifratura compra solo il tempo di scorrere lo schermo.
- Chi riceve può aprire il file .enc con 7-Zip, GPG o openssl?
- No. Il contenitore ha una disposizione su misura — 16 byte di sale, 12 di nonce, poi cifrato e tag — senza numero magico, senza byte di versione e senza identificatore di algoritmo, quindi nessuno strumento standard riesce nemmeno a riconoscerlo. Chi riceve apre la stessa pagina nel proprio browser, carica il file, digita la passphrase e preme decifra; non si installa nulla e non si carica nulla. Digli quale pagina aprire nello stesso messaggio del file. Quella parte non è segreta.
- Ho perso la passphrase: davvero non c'è nulla da fare?
- Davvero nulla. La chiave è esistita soltanto dentro la scheda che l'ha creata, derivata dalla passphrase al momento della cifratura; nessuna copia è conservata da nessuna parte, da nessuno. Non c'è chiave di recupero, né deposito, né via di assistenza, e questa assenza è voluta: qualunque percorso di recupero è un secondo ingresso, che anche un attaccante potrebbe usare. Se ricordi la passphrase a grandi linee, provare varianti a mano è l'unica opzione, e ogni tentativo costa circa un ventesimo di secondo.
Articoli che potrebbero interessarti
Tutte le guide →Strumenti correlati
Il cifrario, la derivazione della chiave, il sale, il nonce e la struttura del contenitore qui descritti sono stati letti nel codice dello strumento e confermati eseguendolo nell'agosto 2026; il software cambia, quindi verifica prima di appoggiarti a un numero preciso. Questa è un'indicazione generale per gestire i tuoi file, non un audit di sicurezza della tua organizzazione, e i dati regolamentati o classificati seguono regole che nessuno strumento da browser può soddisfare da solo.
Fonti
- IETF — RFC 5116 — An Interface and Algorithms for Authenticated Encryption (AEAD_AES_256_GCM: 12-byte nonce, 16-byte tag)
- NIST — SP 800-38D — Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC
- OWASP — Password Storage Cheat Sheet — PBKDF2-HMAC-SHA256 iteration guidance
- W3C — Web Cryptography API — AES-GCM and PBKDF2
Hai notato un errore in questo articolo?