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...
    1. 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

CaratteristicaCrittografia SimmetricaHashing
ReversibilitàReversibile (con la chiave segreta)Non reversibile
Scopo principaleProtezione dei dati in transito o archiviatiVerifica dell’integrità o protezione password
ChiaveRichiede una chiave segretaNon richiede una chiave
UtilizzoComunicazioni sicure, crittografia fileControllo 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.