Vai al contenuto
HexaTransfer
Torna al blog
Crittografia e sicurezza

Guida alla crittografia AES-256: protezione di livello militare

Comprendi la crittografia AES-256 e perché è il gold standard. Scopri come questo cifrario militare protegge i tuoi trasferimenti.

AES-256 è un cifrario a blocchi simmetrico approvato dalla NSA statunitense per i dati TOP SECRET ai sensi di CNSSP-15. Cifra blocchi a 128 bit con una chiave a 256 bit attraverso 14 round di operazioni di sostituzione, permutazione e mescolamento. Forzare con brute force una singola chiave AES-256 richiederebbe circa 2^255 operazioni in media — un numero così grande che ogni computer sulla Terra in esecuzione per l'età dell'universo non riuscirebbe a craccarla. Per questo motivo ogni servizio serio di trasferimento file, da SwissTransfer a Tresorit, usa AES-256 come cifrario bulk. Ecco come funziona davvero.

Da dove viene il "256"

AES è disponibile in tre dimensioni di chiave: 128, 192 e 256 bit. Il numero si riferisce solo alla lunghezza della chiave, non alla dimensione del blocco (che è sempre 128 bit). La dimensione della chiave determina quanti round esegue il cifrario: 10 per AES-128, 12 per AES-192, 14 per AES-256.

Più round significa più diffusione — ogni bit di output dipende da più bit di input — e maggiore resistenza agli attacchi crittanalitici come l'attacco biclique pubblicato nel 2011, che ha teoricamente ridotto la sicurezza effettiva di AES-256 da 256 a 254,4 bit. Questo è ancora ben al di là di qualsiasi attacco pratico.

Lo Standard federale di elaborazione delle informazioni FIPS 197 definisce AES, e le NIST SP 800-38A fino a 800-38G definiscono le modalità operative.

Modalità operative: GCM vs CBC vs ECB

AES è un cifrario a blocchi, il che significa che sa solo come cifrare un blocco da 128 bit. Per cifrare un file di dimensioni arbitrarie, hai bisogno di una modalità operativa. La scelta è enormemente importante:

  • ECB (Electronic Codebook): blocchi di testo in chiaro identici producono testo cifrato identico. Non usarlo mai. Il famoso "pinguino ECB" mostra il profilo di Tux visibile attraverso i pixel cifrati con ECB.
  • CBC (Cipher Block Chaining): esegue XOR di ogni blocco con il testo cifrato precedente. Sicuro se abbinato a HMAC per l'autenticazione, ma CBC da solo è vulnerabile agli attacchi padding oracle (POODLE ha colpito SSL nel 2014).
  • GCM (Galois/Counter Mode): cifra con un contatore e produce un tag di autenticazione a 128 bit nello stesso passaggio. La manomissione del testo cifrato interrompe la decrittazione in modo evidente. Questa è la modalità che usano i servizi moderni.

AES-256-GCM è il default in TLS 1.3, Signal, WireGuard e ogni servizio di trasferimento file credibile. Se un servizio menziona "AES-256" senza specificare la modalità, assumere GCM e verificare.

L'IV (nonce) da non riutilizzare mai

GCM richiede un vettore di inizializzazione a 96 bit univoco per ogni cifratura con una data chiave. Riutilizzare un IV con la stessa chiave anche una sola volta, e un attaccante può fare XOR di due testi cifrati per recuperare il testo in chiaro — un fallimento catastrofico famosamente sfruttato contro il Wi-Fi WEP.

Best practice: genera l'IV con un RNG crittograficamente sicuro (crypto.getRandomValues() nei browser, /dev/urandom su Linux) e aggiungilo come prefisso al testo cifrato. Un IV casuale a 96 bit ha una probabilità di collisione di circa 2^-48 dopo aver cifrato 2^32 file — accettabile per un servizio di trasferimento file. Per il riutilizzo della chiave su miliardi di file, usa invece un contatore deterministico.

Derivazione della chiave: trasformare le password in chiavi

Gli utenti vogliono password come ilmiocane2024. AES vuole 256 bit di casualità uniforme. Il ponte è una funzione di derivazione delle chiavi (KDF). Tre sono in uso comune:

  • PBKDF2 con HMAC-SHA-256 e 600.000 iterazioni (raccomandazione OWASP 2023). Ampiamente supportato, disponibile nella Web Crypto API.
  • scrypt aggiunge memory-hardness, aumentando i costi degli attacchi GPU. Bitcoin e LastPass lo usano.
  • Argon2id è l'attuale best practice, vincitore della Password Hashing Competition del 2015. Parametri: memory=64 MB, iterations=3, parallelism=4.

Una password casuale di 12 caratteri attraverso Argon2id richiede a una GPU moderna circa un miliardo di anni per il brute force. Una password debole come password123 cade in millisecondi indipendentemente dalla KDF.

AES nel browser: la Web Crypto API

I browser espongono AES-256-GCM nativamente tramite window.crypto.subtle. Un flusso tipico:

const key = await crypto.subtle.generateKey(
  { name: "AES-GCM", length: 256 },
  true,
  ["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv },
  key,
  fileBytes
);

Le CPU moderne hanno istruzioni AES-NI che accelerano questo a circa 3-5 GB/s per core. Un file da 1 GB si cifra in meno di un secondo su un laptop di fascia media. Su mobile, i chip Apple A-series e Qualcomm Snapdragon includono le ARMv8 Crypto Extensions per una velocità simile.

Cosa protegge AES-256 (e cosa no)

AES-256 risolve un problema specifico: la riservatezza dei dati a riposo o in transito, dato che la chiave è segreta. Non risolve:

  • La gestione delle chiavi. Se invii la password insieme al file via email, AES-256 non aggiunge nulla.
  • La compromissione dell'endpoint. Il malware che legge il testo in chiaro prima della crittografia bypassa completamente il cifrario.
  • I bug di implementazione. Gli attacchi BEAST, CRIME e Lucky13 del 2018 prendevano di mira le implementazioni TLS, non AES stesso.
  • Gli attacchi side-channel. Il timing della cache e l'analisi dell'alimentazione hanno estratto chiavi AES da dispositivi vincolati. AES-NI mitiga ampiamente questo sui desktop.

AES-256 non prova nemmeno chi ha inviato il file. Per questo, abbinalo a firme digitali con Ed25519 o ECDSA.

Perché "grado militare" è per lo più marketing

La frase viene usata perché la NSA CNSSP-15 ha approvato AES-256 per i dati TOP SECRET nel 2003. Questo è reale, ma ha anche 23 anni a questo punto — AES-128 è approvato per SECRET e servirebbe la maggior parte dei casi d'uso civili in modo identico. Il salto da 128 a 256 è una copertura contro i futuri progressi nell'informatica quantistica: l'algoritmo di Grover dimezza teoricamente la sicurezza della chiave simmetrica, riducendo la forza effettiva di AES-256 a 128 bit, che è ancora sicura.

In pratica, AES-256 costa forse il 40% in più di CPU rispetto a AES-128 con AES-NI ed è universalmente supportato, quindi è diventato il default anche quando 128 sarebbe sufficiente.

Come verificare che un servizio usi davvero AES-256-GCM

Tre modi per controllare:

  1. Leggi il whitepaper sulla sicurezza. I servizi credibili (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) pubblicano la modalità esatta e la gestione dell'IV.
  2. Ispeziona il codice client. Apri DevTools, cerca nel bundle JavaScript AES-GCM o aes-256-gcm. Dovresti vederlo esplicitamente.
  3. Controlla gli audit di terze parti. Cure53, NCC Group e Trail of Bits pubblicano audit che nominano gli algoritmi esaminati.

Bandiere rosse: "crittografia di livello bancario" senza modalità specificata, "algoritmo proprietario" di qualsiasi tipo, o riferimenti a AES-128-ECB.

Mettilo al lavoro

Per inviare un file sensibile oggi: scegli un servizio che indichi AES-256-GCM esplicitamente, usa un IV casuale a 96 bit per file, ed esegue la crittografia nel tuo browser (non sul loro server). Abbina quello a una passphrase di 16+ caratteri derivata tramite Argon2id o PBKDF2 a 600.000+ iterazioni.

Provalo su hexatransfer.com — gratis, senza registrazione, fino a 10 GB.

Invia file di grandi dimensioni in modo sicuro con crittografia end-to-end

Trasferisci file fino a 10 GB gratuitamente con crittografia end-to-end. Nessun account necessario. I tuoi file vengono crittografati nel browser prima del caricamento — nessun altro può leggerli.

Invia un file