Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# 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.