Perdite importanti di password del settore utilizzando HMAC salato ma senza, ad esempio, PBKDF2, scrypt

9

Sto cercando di convincere i superiori su un progetto di utilizzare una funzione di potenziamento iterativo per proteggere la memorizzazione delle password per un nuovo sistema. L'attuale proposta memorizzerebbe qualcosa come un HMAC di un SHA-256 salato (presumibilmente gli altri ingressi HMAC vengono memorizzati separatamente per la sicurezza bonus).

Gli sviluppatori di sicurezza parlano una lingua diversa, quindi è praticamente impossibile comunicare direttamente con loro o determinare esattamente i requisiti. Sono andato direttamente ai superiori che sembrano solo capire gli studi di casi aziendali. Mi è stato detto tra le mie proteste che fondamentalmente l'unico modo per convincerli sarebbe quello di trovare alcuni esempi reali di importanti perdite di password che usavano sia sale che HMAC ma non un rafforzamento iterativo, e di conseguenza molte password sono state compromesse.

Per favore, capisco che non cercherò di raggiungere l'impossibile e convincerli a implementare le raccomandazioni standard esatte per l'archiviazione delle password. Voglio solo che considerino il potenziamento iterativo.

Esistono importanti esempi del mondo reale in cui sono stati utilizzati sale e HMAC, ma a causa della mancanza di rafforzamento iterativo, molte password sono state comunque compromesse? Punti bonus per aziende note come Facebook, LinkedIn, ecc.

    
posta machine yearning 12.10.2015 - 16:37
fonte

4 risposte

5

Non credo che troverai esempi di violazione delle password / delle violazioni come richiesto. L'HMAC di un hash salato SHA-2 a 256 bit è attualmente considerato accettabile per soddisfare, ad esempio, gli standard NIST per il governo federale. [Lo standard federale richiede che l'HMAC sia almeno 112 bit, BTW.]

Tuttavia, la tua preoccupazione ha merito, IMO, per la longevità della soluzione. SHA-2 è in fase di eliminazione. SHA-3 è stato ufficialmente pubblicato da NIST 2 mesi fa. FIPS202 L'approccio che i tuoi colleghi sostengono è di ultima generazione, quindi dovrebbe andare bene per un po ' , ma non avrà una lunga vita prima di essere ufficialmente deprecato.

BTW, l'iterazione di una funzione di hash è un modo ben consolidato per rafforzare la protezione, ma occorre notare che fornisce solo un valore lineare contro un attacco di forza bruta, supponendo che l'attaccante conosca il numero di iterazioni. Allo stesso modo, chiunque non salga il proprio hash dovrebbe essere estromesso dai ranghi degli sviluppatori di software, ma sale protegge solo dagli attacchi basati su tabelle. Oggi e certamente andando avanti, il vero problema è la forza bruta. La lunghezza della password e i requisiti di complessità sono la protezione più importante e 2FA deve essere considerata per tutti gli accessi sensibili.

    
risposta data 12.10.2015 - 19:17
fonte
6

Forse è anche importante sottolineare le violazioni che si sono verificate in assenza di dati compromessi. LastPass, ad esempio, utilizzava "5.000 round di PBKDF2-SHA256" e un salt saltuario ( link ). Dopo la violazione, non ci sono state indicazioni che le password master siano state interrotte.

Questo non vuol dire che sapremo sempre se il database è rotto. Se, ad esempio, il database è stato estrapolato e risiede sulla macchina di un utente, ciò non significa che invierà le password correttamente incrinate a Pastebin.

Sarebbe un buon seguito introdurre l'idea con la dichiarazione che gli account utente minimi sarebbero stati compromessi prima che venisse emesso un reset della password. Riducendo così il rischio e la responsabilità legale.

    
risposta data 12.10.2015 - 18:01
fonte
2

Questo non è il modo in cui questo tipo di decisione dovrebbe essere gestita.

Una misura di sicurezza è un compromesso tra usabilità, costi e sicurezza. Per valutare una tecnologia di mitigazione del rischio, è necessario valutare tutti e tre gli elementi di tale scelta:

  • Quanto è difficile utilizzare la tecnologia, sia per gli utenti che per le persone che li distribuiscono e gestiscono?
  • Quanto è efficace questa soluzione nel mitigare un rischio specifico?
  • Quanto costerebbe implementare e utilizzare questa tecnologia?

Nel tuo caso, l'utilizzo di un sistema di derivazione di password standard del settore ha probabilmente un impatto molto minore sull'usabilità: a meno che non utilizzi dispositivi molto restrittivi, l'impatto sugli utenti (tutti) è probabilmente trascurabile.

L'aggiunta di quel passaggio di espansione chiave, di per sé, offre due vantaggi di sicurezza: rende molto più difficile craccare una password specifica tramite brute-force e, se si utilizza una funzione di derivazione password standard, si mette anche su punto fermo per dire che hai usato tutte le misure possibili per proteggere i tuoi utenti (che, in caso di violazione della password, non è un fattore minore quando si tenta di riguadagnare fiducia).

Per quanto riguarda i costi, dipende molto da come è costruito il tuo sistema: aggiungere una lunga fase di elaborazione obbligatoria a un'operazione probabilmente aumenterà i costi dell'infrastruttura: avrai bisogno di più cicli di CPU per gestire lo stesso numero di richieste di autenticazione dell'utente. Quanto esattamente, ovviamente, è qualcosa che solo tu puoi capire.

    
risposta data 12.10.2015 - 17:07
fonte
0

OWASP ha un ottimo Scheda Cheat di archiviazione password . Queste linee guida sono fondamentalmente ciò che la maggior parte dei professionisti della sicurezza delle informazioni raccomanderebbe ai propri clienti. Assicurati di vedere la sezione su fattore di lavoro .

Inoltre, guarda questo post su Come nascondere in modo sicuro le password

    
risposta data 17.10.2015 - 11:30
fonte

Leggi altre domande sui tag