Skip to content
AppVault

FILE G2 / CRITTOGRAFIA SPIEGATA

AES-256-GCM: lo standard di cifratura autenticata che protegge i file del tuo iPhone

AES-256-GCM è l’algoritmo di cifratura autenticata che protegge le connessioni TLS 1.3, i tunnel VPN WireGuard, i messaggi di Signal e i file cifrati sul tuo iPhone. Combina l’Advanced Encryption Standard con una chiave a 256 bit in modalità Galois/Counter, offrendo sia riservatezza che verifica dell’integrità in un unico passaggio. Questo articolo spiega come funziona AES-256-GCM, dove viene utilizzato e come AppVault lo implementa con nonce per file e wrapping della chiave tramite Secure Enclave.

Cover illustration for: AES-256-GCM: lo standard di cifratura autenticata che protegge i file del tuo iPhone
FILE COVER · / GUIDES / WHAT-IS-AES-256-GCM /

AGGIORNATO · 2026-05-16 · RECENSITO DA APPVAULT

TL;DR

AES-256-GCM è un algoritmo di cifratura autenticata che cifra i dati e ne verifica l’integrità usando una singola chiave e un nonce unico per ogni messaggio. È definito dagli standard NIST, accelerato via hardware sui moderni iPhone e utilizzato da TLS 1.3, WireGuard e Signal. AppVault applica AES-256-GCM con un nonce a 96 bit unico per file, una chiave derivata da PBKDF2 e avvolta dal Secure Enclave, senza chiamate di rete.

AES-256-GCM non è un singolo algoritmo. È la combinazione di due standard: l’Advanced Encryption Standard (AES) con una chiave a 256 bit e la modalità operativa Galois/Counter (GCM). Insieme formano uno schema di cifratura autenticata che fornisce sia riservatezza che verifica dell’integrità in un unico passaggio. È il cifrario predefinito in TLS 1.3, WireGuard, Signal e nella cifratura a livello di file di iOS. Capire come funziona è importante perché la maggior parte dei fallimenti di sicurezza in AES-256-GCM deriva da errori di implementazione, non dalla rottura del cifrario.

Per un’introduzione non tecnica al cifrario a blocchi sottostante — cosa significa “chiave a 256 bit”, perché lo spazio delle chiavi è inviolabile con forza bruta, come AES è stato selezionato dal NIST nel 2001 — leggi prima la panoramica in linguaggio semplice Cos’è la cifratura AES-256?. Questo articolo approfondisce specificamente la modalità GCM.

Il cifrario a blocchi: AES-256

AES è un cifrario simmetrico a blocchi standardizzato dal NIST in FIPS 197. Opera su blocchi da 128 bit e supporta chiavi di 128, 192 e 256 bit. AES-256 usa una chiave a 256 bit ed esegue 14 round di operazioni di sostituzione-permutazione. Ogni round applica quattro trasformazioni: SubBytes (sostituzione non lineare tramite S-box), ShiftRows (trasposizione di byte), MixColumns (moltiplicazione di matrici in GF(2^8)) e AddRoundKey (XOR con la chiave di round derivata dalla chiave master).

Il margine di sicurezza di AES-256 è elevato. I migliori attacchi crittoanalitici noti riguardano varianti a round ridotti (ad esempio AES-128 a 7 round) o modelli a chiave correlata che non si applicano all’uso reale. Per il full-round AES-256 a 14 round, non esiste un attacco pratico che riduca la dimensione effettiva della chiave al di sotto di 256 bit. Questo è il motivo per cui AES-256 è approvato per dati Top Secret dalla National Security Agency degli Stati Uniti.

AES-256 è accelerato via hardware su praticamente tutte le CPU moderne. I processori Intel e AMD includono istruzioni AES-NI. Apple Silicon (chip serie M e A) include estensioni ARM Crypto che accelerano le operazioni AES, SHA e GCM. Su un iPhone, la cifratura AES-256 di un file da 10 MB richiede millisecondi.

La modalità: Galois/Counter (GCM)

Un cifrario a blocchi cifra un solo blocco alla volta. Per cifrare messaggi più lunghi di 128 bit serve una modalità operativa. GCM, specificata in NIST SP 800-38D, è una modalità di cifratura autenticata che combina una variante della modalità contatore per la cifratura con una funzione hash universale (GHASH) per l’autenticazione. La stessa costruzione è registrata come primitiva AEAD in IETF RFC 5116.

GCM funziona in due fasi. Prima, il testo in chiaro viene cifrato usando AES in modalità contatore: un contatore a 128 bit viene incrementato per ogni blocco, cifrato con AES e combinato tramite XOR con il testo in chiaro per produrre il testo cifrato. Il valore iniziale del contatore deriva da un nonce (numero usato una sola volta) più un contatore che parte da 1. In secondo luogo, il testo cifrato e i dati associati (metadati che devono essere autenticati ma non cifrati) vengono inseriti in GHASH, una valutazione polinomiale in GF(2^128). L’output di GHASH viene poi cifrato con AES per produrre il tag di autenticazione.

Il risultato è un unico output: testo cifrato più un tag di autenticazione a 128 bit (lunghezza predefinita, può essere troncato). Il destinatario decifra ricalcolando il tag e confrontandolo. Se il tag corrisponde, i dati sono autentici. In caso contrario, il destinatario deve rifiutare i dati.

GCM è parallelizzabile. La modalità contatore permette di cifrare più blocchi contemporaneamente, motivo per cui l’accelerazione hardware può raggiungere un throughput elevato. Su un iPhone con estensioni ARM Crypto, AES-256-GCM può cifrare a diversi gigabit al secondo.

Disciplina del nonce: il punto di fallimento più comune

AES-256-GCM richiede un nonce. Lo standard specifica un nonce a 96 bit. Il nonce deve essere unico per ogni cifratura eseguita con la stessa chiave. Riutilizzare un nonce con la stessa chiave permette a un attaccante di recuperare la chiave di autenticazione GHASH (H) e quindi di contraffare messaggi arbitrari.

La matematica è implacabile: se due testi cifrati condividono lo stesso nonce e la stessa chiave, lo XOR dei due output GHASH rivela lo XOR dei testi in chiaro. Da lì, un attaccante può recuperare H e produrre tag validi per qualsiasi testo cifrato. Non si tratta di un attacco teorico. È stato sfruttato nella pratica, come nel famoso articolo del 2015 “Nonce-Disrespecting Adversaries” che ha trovato vulnerabilità di riutilizzo del nonce in diverse implementazioni TLS.

La mitigazione corretta è non riutilizzare mai un nonce sotto la stessa chiave. In pratica, ciò significa generare un nonce casuale (96 bit danno 2^96 possibilità, ma il limite del compleanno impone di non cifrare più di 2^32 messaggi con nonce casuali per mantenere la probabilità di collisione trascurabile) oppure usare un contatore deterministico garantito unico per messaggio.

AppVault utilizza un nonce a 96 bit unico per file. Il nonce viene generato usando un generatore di numeri casuali crittograficamente sicuro (SecRandomCopyBytes su iOS) e memorizzato insieme al testo cifrato. Poiché ogni file ha il proprio nonce e la chiave è derivata per installazione e avvolta dal Secure Enclave, il rischio di riutilizzo del nonce è eliminato.

Accelerazione hardware: perché è importante

AES-256-GCM è computazionalmente intensivo via software. La moltiplicazione GHASH in GF(2^128) è particolarmente costosa senza supporto hardware. Le CPU moderne includono istruzioni dedicate che eseguono round AES e operazioni GHASH in un singolo ciclo.

Su un iPhone, le estensioni ARM Crypto includono:

  • Istruzioni AES (AESE, AESD, AESMC, AESIMC) che eseguono un round di cifratura o decifratura AES.
  • Istruzioni GHASH (PMULL/PMULL2 per moltiplicazione polinomiale) che accelerano il calcolo GHASH.

Il Secure Enclave di Apple Silicon include un motore AES dedicato che può cifrare dati senza esporre la chiave alla CPU principale. AppVault utilizza il Secure Enclave per avvolgere la chiave di cifratura dei file, garantendo che anche se la CPU principale viene compromessa, la chiave rimane protetta.

Senza accelerazione hardware, AES-256-GCM sarebbe troppo lento per applicazioni in tempo reale come gli handshake TLS o lo streaming video. Con essa, l’overhead è trascurabile.

Dove viene usato AES-256-GCM

AES-256-GCM è la suite di cifratura predefinita in TLS 1.3 (TLS_AES_256_GCM_SHA384). Ogni connessione HTTPS che utilizza TLS 1.3 si basa su di esso. WireGuard, il moderno protocollo VPN, usa AES-256-GCM (o ChaCha20-Poly1305 su dispositivi senza AES hardware). Signal, l’app di messaggistica crittografata, usa AES-256-GCM per la cifratura dei file multimediali. iOS usa AES-256-GCM per la cifratura a livello di file di Data Protection.

L’ubiquità di AES-256-GCM non è casuale. È uno standard NIST, accelerato via hardware e ben compreso dalla comunità crittografica. È la scelta predefinita sicura per qualsiasi applicazione che necessiti di cifratura autenticata.

Confronto con altre modalità di cifratura autenticata

AES-256-GCM non è l’unica modalità AEAD. ChaCha20-Poly1305 è un’alternativa popolare, specialmente su dispositivi senza accelerazione AES hardware. ChaCha20 è un cifrario a flusso, non a blocchi, e Poly1305 è un hash polinomiale simile a GHASH. ChaCha20-Poly1305 è più veloce via software di AES-256-GCM via software, ma su hardware con AES-NI, AES-256-GCM è più veloce.

AES-256-CCM (Counter con CBC-MAC) è un’altra modalità AEAD standard NIST, ma non è parallelizzabile ed è più lenta di GCM. CCM è usata in alcuni protocolli IoT e wireless, ma TLS e la maggior parte delle applicazioni moderne preferiscono GCM.

AES-256-GCM-SIV è una variante resistente al riutilizzo del nonce che degrada in modo elegante se un nonce viene riutilizzato (rivela solo che due messaggi sono uguali, non il testo in chiaro). È più lenta del GCM standard e meno diffusa.

Per la maggior parte delle applicazioni, AES-256-GCM è la scelta giusta. È veloce, standard e sicuro se implementato correttamente.

Come AppVault implementa AES-256-GCM

AppVault utilizza AES-256-GCM per ogni file archiviato nel vault. L’implementazione segue questi passaggi:

  1. Derivazione della chiave. Il pattern lock dell’utente viene trasformato in una chiave master a 256 bit usando PBKDF2-SHA256 con 600.000 iterazioni e un sale a 128 bit per installazione. Questa chiave non viene mai usata direttamente per la cifratura.
  2. Wrapping tramite Secure Enclave. La chiave master viene inviata al Secure Enclave, che genera una nuova chiave (la “chiave di wrapping”) che non lascia mai il chip. L’Enclave cifra la chiave master con la chiave di wrapping e restituisce la chiave avvolta alla CPU principale. La chiave master in chiaro viene poi azzerata dalla memoria.
  3. Cifratura dei file. Per ogni file, viene generato un nuovo nonce a 96 bit usando SecRandomCopyBytes. La chiave avvolta viene spacchettata all’interno del Secure Enclave e usata per cifrare il file con AES-256-GCM. Il testo cifrato e il nonce vengono scritti in memoria. Il tag di autenticazione viene aggiunto al testo cifrato.
  4. Cifratura del catalogo. Anche l’elenco dei file (nomi, date, dimensioni) viene cifrato con AES-256-GCM usando una chiave separata derivata dalla stessa chiave master. Ciò significa che un attaccante con accesso raw al dispositivo non può determinare quanti file esistono.

Il risultato è che nessun file produce lo stesso testo cifrato, anche se contengono lo stesso testo in chiaro. Il Secure Enclave garantisce che la chiave di cifratura non venga mai esposta al sistema operativo principale. E poiché AppVault non effettua chiamate di rete, non esiste un server che possa essere compromesso per far trapelare chiavi o testi cifrati.

Limitazioni di AES-256-GCM

AES-256-GCM non protegge da tutto. È vulnerabile ad attacchi side-channel se l’implementazione rivela tempistiche o consumo energetico. Il calcolo GHASH è particolarmente sensibile agli attacchi temporali; sono necessarie implementazioni a tempo costante. La libreria CoreCrypto di Apple fornisce un’implementazione a tempo costante di AES-256-GCM, e AppVault utilizza quella libreria.

AES-256-GCM non fornisce forward secrecy. Se la chiave viene compromessa, tutti i testi cifrati passati possono essere decifrati. La forward secrecy si ottiene a livello di protocollo (ad esempio, TLS 1.3 utilizza lo scambio di chiavi Diffie-Hellman effimero) e non è una proprietà del cifrario stesso. AppVault mitiga questo mantenendo la chiave sul dispositivo e non trasmettendola mai.

AES-256-GCM non è resistente al quantum. L’algoritmo di Grover riduce la dimensione effettiva della chiave di AES-256 da 256 bit a 128 bit. Un computer quantistico abbastanza grande potrebbe violarlo. Tuttavia, un tale computer quantistico non esiste e non è previsto nel prossimo decennio. Per segreti a lungo termine, sono in fase di standardizzazione cifrari post-quantistici come CRYSTALS-Kyber.

AES-256-GCM non protegge contro la crittoanalisi rubber-hose o la confisca fisica del dispositivo. Se un attaccante ha accesso fisico al tuo iPhone e può costringerti a sbloccarlo, nessuna cifratura può proteggere i tuoi file. Il modello di minaccia di AppVault presuppone che il dispositivo sia sotto il tuo controllo.

Perché AppVault ha scelto AES-256-GCM

AppVault ha scelto AES-256-GCM perché è l’algoritmo di cifratura autenticata più diffuso, con accelerazione hardware su ogni iPhone moderno. È standardizzato, revisionato tra pari e utilizzato dai più grandi protocolli di sicurezza al mondo. Permette ad AppVault di cifrare i file rapidamente senza consumare la batteria, e la sua verifica dell’integrità garantisce che i file archiviati non siano stati manomessi.

L’alternativa, ChaCha20-Poly1305, è anch’essa sicura e viene utilizzata da AppVault per alcune operazioni in cui l’AES hardware non è disponibile (ad esempio su dispositivi più vecchi). Ma per la cifratura dei file su iOS, AES-256-GCM è la scelta naturale.

Ogni file in AppVault è cifrato con AES-256-GCM, un nonce unico e una chiave derivata dal tuo pattern lock e avvolta dal Secure Enclave. L’intero stack crittografico è documentato nella pagina Cifratura AES-256-GCM, con citazioni a NIST FIPS 197, NIST SP 800-38D e alla Guida alla sicurezza della piattaforma Apple. La pagina Modello di minaccia spiega cosa questa architettura difende e cosa no. La pagina Architettura zero-knowledge spiega perché AppVault non vede mai i tuoi dati.

DIAGRAM · 02

DOSSIER

5 × 5 grid 25 dots ~1 B paths (8 dot) PBKDF2 SHA-256 600 000 iter. + 128-bit salt
PATTERN LOCK — 5×5 grid, one of more than a billion 8-dot paths

QUESTIONS

10 sharp answers.

  1. 01 Cos’è AES-256-GCM?
    AES-256-GCM è un algoritmo di cifratura autenticata che cifra i dati usando l’Advanced Encryption Standard con una chiave a 256 bit in modalità Galois/Counter, e contemporaneamente ne verifica l’integrità con un tag di autenticazione.
  2. 02 In cosa differisce AES-256-GCM da AES-256-CBC?
    AES-256-CBC fornisce solo riservatezza e richiede un HMAC separato per l’integrità. AES-256-GCM fornisce entrambi in un unico passaggio, è parallelizzabile e non richiede padding, risultando più veloce e sicuro nei protocolli moderni.
  3. 03 Perché GCM è preferito a CBC in TLS 1.3?
    GCM è una cifratura autenticata, quindi impedisce la manomissione senza un ulteriore livello MAC. Evita inoltre gli attacchi di padding oracle che affliggono CBC, ed è più veloce su hardware con AES-NI o ARM Crypto Extensions.
  4. 04 Cos’è un nonce in AES-GCM?
    Un nonce è un numero a 96 bit che deve essere unico per ogni cifratura eseguita con la stessa chiave. Riutilizzare un nonce permette a un attaccante di recuperare la chiave di autenticazione GHASH e di contraffare messaggi.
  5. 05 Cos’è il tag di autenticazione in AES-GCM?
    Il tag di autenticazione è un output a 128 bit (predefinito) che dimostra che il testo cifrato non è stato modificato. Il destinatario ricalcola il tag e lo confronta; se non corrisponde, i dati vengono rifiutati.
  6. 06 AES-256-GCM può essere violato?
    Non esiste un attacco pratico contro AES-256-GCM quando implementato correttamente con un nonce unico per messaggio. I migliori attacchi noti riguardano varianti a round ridotti o implementazioni che riutilizzano i nonce.
  7. 07 AES-256-GCM è resistente al quantum?
    No. AES-256 offre sicurezza a 128 bit contro attacchi classici, ma solo a 64 bit contro l’algoritmo di Grover su un computer quantistico. Tuttavia, l’algoritmo di Grover richiede un computer quantistico fault-tolerant abbastanza grande da eseguire l’intero circuito AES-256, cosa non prevista nel prossimo decennio.
  8. 08 AES-256-GCM richiede supporto hardware?
    Può funzionare via software, ma l’accelerazione hardware (AES-NI su Intel/AMD, ARM Crypto Extensions su Apple Silicon) lo rende circa 10 volte più veloce e riduce il consumo energetico. Tutti gli iPhone moderni includono accelerazione hardware AES.
  9. 09 Come usa AppVault AES-256-GCM?
    AppVault cifra ogni file con AES-256-GCM usando un nonce a 96 bit unico. La chiave di cifratura è derivata tramite PBKDF2-SHA256 (600.000 iterazioni) e poi avvolta da una chiave generata all’interno del Secure Enclave. Il nonce è memorizzato insieme al testo cifrato. In questo modo, anche se due file contengono lo stesso testo in chiaro, i loro testi cifrati sono diversi.
  10. 10 Qual è la derivazione della chiave per AES-256-GCM in AppVault?
    Il pattern lock dell’utente viene trasformato in una chiave master usando PBKDF2-SHA256 con un sale a 128 bit per installazione e 600.000 iterazioni. Questa chiave master viene poi avvolta dal Secure Enclave prima di essere usata per la cifratura AES-256-GCM. La chiave avvolta non lascia mai il Secure Enclave in chiaro.

INIZIA

Sigilla la cassaforte.

Scaricabile gratuitamente. La prima cassaforte è gratuita per sempre. Aggiorna solo quando ne hai bisogno.