# La crittografia simmetrica moderna La crittografia simmetrica è uno dei pilastri della sicurezza informatica moderna. Si basa sull’uso di una **singola chiave segreta** che deve essere condivisa tra il mittente e il destinatario per cifrare e decifrare i dati. ## Come funziona 1. **Cifratura**: Il mittente utilizza un algoritmo di crittografia e una chiave segreta per trasformare i dati in un formato incomprensibile (testo cifrato). *Esempio*: `"CIAO"` → `"Xl3A#f"` (testo cifrato). 2. **Trasmissione**: Il testo cifrato viene inviato al destinatario. 3. **Decifratura**: Il destinatario utilizza la **stessa** chiave segreta per trasformare il testo cifrato nel messaggio originale. *Esempio*: `"Xl3A#f"` → `"CIAO"`. ## Caratteristiche principali della crittografia simmetrica moderna 1. **Efficienza**: È estremamente veloce, soprattutto se confrontata con la crittografia asimmetrica, ed è ideale per cifrare grandi quantità di dati. 2. **Modalità operative**: Gli algoritmi simmetrici operano in modalità come: - **ECB (Electronic Codebook)**: Cifra i blocchi di dati in modo indipendente (vulnerabile ad attacchi di pattern). - **CBC (Cipher Block Chaining)**: Cifra ogni blocco combinandolo con il precedente, rendendo i dati più sicuri. - **GCM (Galois/Counter Mode)**: Aggiunge autenticità e integrità ai dati cifrati. 3. **Algoritmi principali**: - **AES (Advanced Encryption Standard)**: Uno standard moderno per la crittografia simmetrica, utilizzato in applicazioni come il Wi-Fi sicuro (WPA2), i file system e i protocolli web (TLS). - **ChaCha20**: Algoritmo a flusso veloce e sicuro, ideale per dispositivi mobili e IoT. ## Limitazioni della crittografia simmetrica 1. **Gestione delle chiavi**: La chiave segreta deve essere condivisa tra mittente e destinatario in modo sicuro. Questo processo può diventare complesso in reti con molti utenti. 2. **Vulnerabilità all’intercettazione**: Se un attaccante ottiene la chiave, può decifrare tutte le comunicazioni. ## Utilizzi della crittografia simmetrica - **Protezione delle comunicazioni**: - Protocollo TLS per connessioni HTTPS. - Reti Wi-Fi sicure (WPA2/WPA3). - **Crittografia dei file**: - Protezione dei dati in sistemi come BitLocker e FileVault. - **Applicazioni in tempo reale**: - Chat crittografate e videochiamate. --- # Hashing L’hashing è un processo che trasforma un input (di qualsiasi dimensione) in una stringa di lunghezza fissa, chiamata **hash**. A differenza della crittografia, l’hashing **non è reversibile**: non è possibile ottenere l’input originale dall’hash. ## Come funziona 1. **Input**: Un dato (ad esempio una password o un file). *Esempio*: `"password123"`. 2. **Algoritmo di hashing**: Un algoritmo (come SHA-256) calcola una rappresentazione univoca dell’input. *Esempio*: `SHA-256("password123")` → `ef92b778bafe771e89245b89ecbc7...` 3. **Risultato**: L’hash risultante è una stringa di lunghezza fissa, indipendentemente dalla dimensione dell’input. ## Caratteristiche principali dell’hashing 1. **Unidirezionalità**: Una volta calcolato l’hash, non è possibile risalire all’input originale. 2. **Deterministico**: Lo stesso input produrrà sempre lo stesso hash. 3. **Sensibilità ai cambiamenti**: Anche una piccola modifica all’input produce un hash completamente diverso. *Esempio*: - `SHA-256("password123")` → `ef92b778bafe771e...` - `SHA-256("Password123")` → `b12c4f2327de4c9f...` 4. **Collisioni rare**: È altamente improbabile che due input differenti producano lo stesso hash, anche se non impossibile. Per esempio, con un algoritmo di hashing che produce hash a 256 bit (come SHA-256), ci sono $2^{256} \approx 1.1579209 \times 10^{77}$ possibili hash distinti, rendendo le collisioni estremamente improbabili per un numero ragionevole di input. ## Algoritmi principali - **MD5**: Obsoleto, ma ancora usato in contesti non critici (ad esempio, checksum dei file). Il checksum dei file è un valore numerico calcolato a partire dal contenuto di un file. Questo valore serve a verificare l'integrità del file: se anche un solo bit del file cambia, il checksum risultante sarà diverso. In questo modo, è possibile rilevare errori o alterazioni nel file. È molto utilizzato nei contesti di trasmissione dei file (reti). - **SHA-256 (Secure Hash Algorithm 256-bit)**: Sicuro e ampiamente utilizzato per firme digitali e certificati. - **bcrypt e Argon2**: Specifici per la protezione delle password, con un’attenzione particolare alla lentezza per contrastare attacchi brute force. ## Utilizzi dell’hashing 1. **Protezione delle password**: - Le password vengono memorizzate come hash nei database. - Al login, il sistema confronta l’hash della password inserita con quello memorizzato. 2. **Verifica dell’integrità**: - Hash di file o dati per controllare che non siano stati modificati. *Esempio*: Verifica dell’integrità di un file scaricato. 3. **Firme digitali**: - L’hash di un messaggio viene cifrato per creare una firma digitale. ## Differenze principali tra crittografia simmetrica e hashing | **Caratteristica** | **Crittografia Simmetrica** | **Hashing** | |--------------------------------|---------------------------------------------|-------------------------------------------| | **Reversibilità** | Reversibile (con la chiave segreta) | Non reversibile | | **Scopo principale** | Protezione dei dati in transito o archiviati| Verifica dell’integrità o protezione password | | **Chiave** | Richiede una chiave segreta | Non richiede una chiave | | **Utilizzo** | Comunicazioni sicure, crittografia file | Controllo password, verifica dell’integrità | --- ## Conclusione La crittografia simmetrica e l’hashing risolvono problemi diversi, ma complementari: - La crittografia simmetrica è ideale per proteggere i dati in modo bidirezionale, consentendo il recupero dei dati originali da parte di chi possiede la chiave. - L’hashing, invece, garantisce la protezione o l’integrità dei dati in modo unidirezionale, senza la possibilità di risalire all’originale. Entrambi sono strumenti fondamentali nella sicurezza informatica moderna e vengono spesso utilizzati insieme, ad esempio nei protocolli di autenticazione e nei sistemi di gestione delle comunicazioni.