La sicurezza delle password è un aspetto cruciale nell’era digitale, dove gli attacchi informatici sono sempre più frequenti e sofisticati. L’ “Agenzia per la Cybersicurezza Nazionale” (ACN), in collaborazione con il “Garante per la Protezione dei Dati Personali” (GPDP), ha redatto un documento fondamentale intitolato “Linee Guida Conservazione Password” che fornisce raccomandazioni dettagliate per garantire la protezione delle password archiviate.

L’importanza della Conservazione Sicura delle Password.

L’accesso ai sistemi e ai servizi informatici spesso richiede l’uso di password, che devono essere gestite e conservate in modo sicuro per prevenire accessi non autorizzati.

Le password archiviate possono finire nelle mani di malintenzionati a seguito di attacchi informatici, con conseguenze gravi come il furto di dati personali.

Per questo motivo, è essenziale adottare tecniche di conservazione sicura delle password.

Tecniche di Conservazione delle Password.

Il documento in commento propone diverse tecniche avanzate per la conservazione delle password, focalizzandosi sull’uso di funzioni di hashing crittografiche e altri accorgimenti che rendono difficile per gli attaccanti ottenere le password originali.

Password Hashing.

Il password hashing è una tecnica di base per proteggere le password archiviate. Una funzione di hash crittografica prende una password come input e restituisce una stringa di bit di lunghezza fissa chiamata digest. Le caratteristiche principali delle funzioni di hash includono:

  • Non invertibilità:è estremamente difficile risalire alla password originale partendo dal digest.
  • Deterministicità: la stessa password produce sempre lo stesso digest.
  • Resistenza alle collisioni: è difficile trovare due diverse password che producano lo stesso digest.

Utilizzare funzioni di hash per la conservazione delle password rende impraticabile per un attaccante ottenere le password originali anche se riesce a ottenere i digest.

Salt.

Il salt è una stringa di bit casuali aggiunta a ciascuna password prima del calcolo dell’hash. Questo approccio presenta diversi vantaggi:

  • Unicità del digest: utenti con la stessa password avranno digest diversi grazie al salt unico per ciascuno.
  • Mitigazione degli attacchi con rainbow tables: rende le tabelle precompilate di hash inutili, poiché il salt modifica i digest.
  • Aumento della sicurezza: rende più difficili gli attacchi al dizionario e forza bruta, poiché ogni tentativo deve considerare il salt specifico.

È fondamentale che il salt sia generato casualmente e abbia una lunghezza adeguata (almeno 128 bit). Inoltre, il salt deve essere memorizzato in chiaro insieme al digest della password, facilitando il processo di autenticazione.

Pepper.

Il pepper è una stringa di bit casuali simile al salt ma con alcune differenze chiave:

  • Segretezza: il pepper è lo stesso per tutte le password e deve essere mantenuto segreto.
  • Utilizzo come chiave: il pepper viene utilizzato come chiave in un HMAC o in un meccanismo di cifratura simmetrica applicato al digest della password.

L’uso del pepper aggiunge un ulteriore livello di sicurezza, rendendo più difficile per un attaccante ricostruire le password originali, anche se riesce a ottenere i digest.

Aggiornamento delle Funzioni di Password Hashing.

Per mantenere un alto livello di sicurezza, è necessario aggiornare periodicamente le funzioni di hashing utilizzate. Questo può essere fatto in vari modi:

  1. Re-hashing dei digest: applicare una nuova funzione di hashing ai digest esistenti, ad esempio salvando H(h(P)) invece di h(P).
  2. Flag di aggiornamento: segnare le password che necessitano di aggiornamento e applicare la nuova funzione di hashing al primo accesso dell’utente.
  3. Obbligo di aggiornamento delle password: richiedere agli utenti di aggiornare le proprie password, calcolando il digest con la nuova funzione di hashing.
Algoritmi di Hashing Raccomandati.

Il documento descrive in dettaglio quattro algoritmi di hashing raccomandati per la conservazione delle password:

  1. PBKDF2:
    • Basato su HMAC (Hash-based Message Authentication Code) con un numero elevato di iterazioni per aumentare la sicurezza.
    • Raccomandato l’uso di HMAC-SHA256 o HMAC-SHA512 con almeno 600.000 iterazioni per SHA256 e 210.000 per SHA512.
    • Il salt deve essere di almeno 128 bit.
  2. scrypt:
    • Progettato per richiedere molta memoria, rendendo meno efficaci gli attacchi con hardware specializzato.
    • Parametri configurabili: Memoria (n), Dimensione dei blocchi (r), Parallelizzazione (p).
    • Richiede un salt di almeno 128 bit e raccomanda configurazioni che massimizzano l’uso della memoria.
  3. bcrypt:
    • Specificamente progettato per il password hashing, utilizza il cifrario a blocchi Blowfish.
    • Include un parametro di costo (c) che determina il numero di iterazioni e quindi il tempo necessario per calcolare l’hash.
    • Raccomandato per la sua semplicità e resistenza agli attacchi, nonostante sia meno recente rispetto ad altri algoritmi.
  4. Argon2:
    • Vincitore della Password Hashing Competition, progettato per essere resistente agli attacchi con ASIC.
    • Versioni: Argon2d (resistente agli attacchi hardware), Argon2i (resistente agli attacchi side-channel), e Argon2id (misto dei precedenti).
    • Parametri configurabili: Iterazioni (c), Memoria (m), Parallelizzazione (p).
    • Raccomandato come il più robusto ed efficiente, con parametri adattabili alle capacità computazionali e di memoria disponibili.

In definitiva, le linee guida per la conservazione delle password forniscono una base solida per proteggere gli archivi di password contro vari tipi di attacchi informatici. L’uso di funzioni di hashing robuste, insieme a tecniche come il salt e il pepper, aumenta significativamente la sicurezza delle password archiviate. Gli algoritmi PBKDF2, scrypt, bcrypt e Argon2 offrono diverse opzioni adattabili alle esigenze specifiche dei sistemi informativi, garantendo una protezione adeguata in un panorama di minacce in continua evoluzione. La costante revisione e aggiornamento delle tecniche e degli algoritmi di hashing è essenziale per mantenere la sicurezza a lungo termine.

In conclusione, la protezione delle password non può essere trascurata. Implementare queste linee guida e tecniche avanzate può fare la differenza nella sicurezza dei dati personali e aziendali. Rimanere aggiornati sulle migliori pratiche e adattare le strategie di sicurezza alle nuove minacce è fondamentale per garantire una protezione continua ed efficace.