# Cifra e decifra testo e file con AES-256-GCM

> Cifra e decifra testo o file con AES-256-GCM e password, direttamente nel browser. Chiave derivata con PBKDF2, salt e IV casuali. Nessun upload, nessun dato inviato.

Strumento gratuito nel browser (nessun upload): https://www.mauriziofonte.it/strumenti/cripta-decripta-testo-file-aes

Cifratura simmetrica **AES-256 in modalità GCM** (autenticata) con chiave derivata dalla tua password tramite **PBKDF2-HMAC-SHA-256** a 210.000 iterazioni, **salt** e **IV** generati in modo casuale a ogni operazione. Funziona su testo (output Base64) e su file di qualsiasi tipo. Tutto avviene tramite la **Web Crypto API** del browser: il contenuto e la password non lasciano mai il dispositivo e non vengono inviati ad alcun server.

## Come cifrare e decifrare con AES

1. **Scegli testo o file e l'operazione** - Seleziona se lavorare su testo o su file e se vuoi cifrare o decifrare. Per testo digiti o incolli direttamente; per file trascini l'elemento nell'area di rilascio.
2. **Inserisci la password** - La password è l'unica chiave. Usane una robusta e diversa da quelle che usi altrove. Non c'è recupero: se la dimentichi, il dato cifrato resta illeggibile per sempre.
3. **Esegui** - In cifratura ottieni una stringa Base64 (testo) o un file .aes (file). In decifratura, fornendo lo stesso contenuto cifrato e la stessa password, riottieni l'originale. Se la password è sbagliata o il dato è stato alterato, GCM rifiuta la decifratura e te lo segnala.
4. **Conserva o condividi** - Copia l'output Base64 o scarica il file. Per condividerlo in sicurezza, trasmetti il contenuto cifrato e la password su canali separati (es. il file via email, la password a voce).

## Come funziona la cifratura, nel dettaglio

Lo schema è quello consigliato per la cifratura simmetrica autenticata. La password non viene usata direttamente come chiave: passa per **PBKDF2-HMAC-SHA-256** con **210.000 iterazioni** e un **salt casuale di 16 byte**, generando una chiave AES a 256 bit. Il salt casuale fa sì che la stessa password produca chiavi diverse a ogni cifratura, vanificando le rainbow table. Le iterazioni alte rendono costoso il brute force.

La cifratura usa **AES-256 in modalità GCM** (Galois/Counter Mode), che è *autenticata*: oltre a cifrare, calcola un tag di integrità. In decifratura, se anche un solo bit del contenuto o del tag è stato modificato, l'operazione fallisce invece di restituire dati corrotti. Ogni cifratura usa un **IV (nonce) casuale di 12 byte**, il valore raccomandato per GCM, per non riusare mai la stessa combinazione chiave/IV.

Il formato dell'output è una semplice concatenazione: `salt (16 byte) + IV (12 byte) + testo cifrato e tag`. Per il testo il tutto viene codificato in Base64; per i file resta binario in un file `.aes`. In decifratura il tool rilegge salt e IV dalla testa del dato, rideriva la chiave dalla password e decifra. Tutto gira sulla **Web Crypto API** nativa del browser: nessuna libreria di crittografia di terze parti, nessun dato trasmesso.

## Glossario

- **AES-256**: Advanced Encryption Standard con chiave a 256 bit, lo standard simmetrico più diffuso. Cifratura e decifratura usano la stessa chiave.
- **GCM (modalità autenticata)**: Galois/Counter Mode: cifra e contemporaneamente produce un tag di autenticazione. Garantisce riservatezza e integrità: un dato manomesso non si decifra, fallisce.
- **PBKDF2**: Password-Based Key Derivation Function 2. Trasforma una password in una chiave crittografica applicando ripetutamente HMAC-SHA-256 (qui 210.000 volte) con un salt, per rallentare gli attacchi a forza bruta.
- **Salt**: Valore casuale unito alla password prima della derivazione della chiave. Casuale a ogni cifratura, impedisce che password identiche generino chiavi identiche e neutralizza le rainbow table.
- **IV / Nonce**: Initialization Vector: valore casuale (12 byte per GCM) che rende ogni cifratura diversa dalle altre anche con la stessa chiave e lo stesso testo. Non deve mai ripetersi con la stessa chiave.
- **Base64**: Codifica che rappresenta dati binari come testo ASCII. Qui serve a trasportare il risultato cifrato (binario) come stringa copiabile e incollabile.

## Domande frequenti su cifratura AES

### I miei dati o la password vengono inviati a un server?

No. Tutta l'operazione avviene nel browser tramite la Web Crypto API. Il testo, il file e la password non lasciano il dispositivo e non vengono salvati né trasmessi. Puoi disconnetterti da internet dopo aver caricato la pagina e il tool funziona ugualmente.

### Cosa succede se dimentico la password?

Il dato è irrecuperabile. Non esiste backdoor né recupero: è il senso della cifratura forte. La chiave deriva esclusivamente dalla password tramite PBKDF2; senza la password corretta, AES-GCM non può decifrare e fallisce. Conserva la password in un password manager.

### Posso decifrare altrove un file cifrato qui?

Sì, se rispetti il formato. Il file è la concatenazione salt(16) + IV(12) + ciphertext-con-tag GCM, con chiave AES-256 derivata da PBKDF2-HMAC-SHA-256, 210.000 iterazioni. Con questi parametri puoi decifrare con qualsiasi libreria (Python cryptography, OpenSSL con script, Node crypto). I parametri sono documentati nella sezione tecnica.

### Perché GCM e non CBC?

GCM è una modalità autenticata: rileva la manomissione del dato cifrato. CBC cifra ma non autentica, quindi un attaccante può alterare il ciphertext senza che la decifratura se ne accorga (servono costruzioni aggiuntive tipo encrypt-then-MAC). Per un tool generico, GCM è la scelta sicura di default.

### Quanto è sicura una password rispetto a una chiave casuale?

Dipende dalla password. Una passphrase lunga e casuale è robusta; una password corta o comune è attaccabile a dizionario, nonostante PBKDF2. Le 210.000 iterazioni rallentano ogni tentativo, ma non sostituiscono una password debole. Per dati molto sensibili usa una passphrase di almeno 4-5 parole casuali.

### C'è un limite di dimensione per i file?

Il limite pratico è la memoria del browser: il file viene caricato interamente in memoria per essere cifrato. File fino a qualche centinaio di MB funzionano sui dispositivi moderni; file molto grandi (GB) possono saturare la RAM della scheda. Per archivi enormi conviene uno strumento desktop dedicato.

### Il tool usa librerie di crittografia esterne?

No. Usa solo la Web Crypto API nativa del browser (crypto.subtle), implementata dal motore del browser e sottoposta ad auditing. Nessuna libreria JavaScript di crittografia di terze parti, che storicamente sono una fonte di vulnerabilità se non mantenute.

### Posso fidarmi del fatto che sia davvero offline?

Puoi verificarlo: apri gli strumenti per sviluppatori del browser, scheda Rete, ed esegui una cifratura. Non vedrai alcuna richiesta in uscita relativa al contenuto. In alternativa, carica la pagina, disattiva la connessione e usa il tool: continua a funzionare perché tutto il calcolo è locale.

---
Uno strumento di Maurizio Fonte, senior backend engineer. Tutti gli strumenti: https://www.mauriziofonte.it/strumenti/
