L'aggiornamento degli algoritmi per l'allungamento della chiave e / o delle ripetizioni è una cosa?

2

Considera che negli anni '90 sei avanti rispetto alla curva, hai hashed e hai salato le tue password con SHA e sei un grande sito, milioni di account, ecc.

Bene, il web si evolve, e nel tempo diventano sempre più avanzate misure di sicurezza e luogo comune. Allungamento chiave, hardware più avanzato, hardware più economico, ecc.

Immagina che non tutti i tuoi clienti accedano ogni anno. Non ti interessa quanto spesso si collegano, se hanno creato l'account negli anni '90 e vogliono accedervi nel 2014, questo è perfetto. Ma vuoi migliorare la loro sicurezza.

Immagina un'evoluzione nella sicurezza in cui vai da un semplice hash SHA, a PBKDF, a Bcrypt, a Scrypt e in futureCrypt. Nel corso di questa evoluzione, aumenti le ripetizioni e tutti gli altri valori configurabili che potrebbero verificarsi quando l'hardware aumenta di potenza e accessibilità.

Suppongo che

1) le persone fanno questo, è una cosa?

E

2) Quali sono le strategie attuali o le strategie teoriche per l'aggiornamento della sicurezza delle password in questo modo?

    
posta Andrew Hoffman 19.06.2014 - 16:46
fonte

2 risposte

4

Questo è stato fatto e la strategia maggiormente utilizzata è questa:

  • Genera l'hash con il vecchio algoritmo sha1(password+salt)
  • Ora implementa la nuova funzione di hashing (prendiamo lo scrypt)
  • Prendi il database ed esegui il tuo scrypt(hash) su tutti gli hash delle password salvate
  • Implementa il tuo codice scrypt(sha1(password+salt)) in modo che utilizzi anche questo algoritmo per modificare le password

Puoi quindi fare un ulteriore passo avanti e anche implementare in modo che quando un utente accede alla sua password sia cambiato di conseguenza, quindi l'hash di scrypt(password) (puoi tenere una lista di user-id che usano l'algoritmo precedente e usare per autenticarli, migrare la password dopo aver effettuato l'accesso al nuovo algoritmo e quindi portarli fuori dalla lista). Il vantaggio qui è che tutte le tue password useranno scrypt anche quelle con account dormienti.

    
risposta data 19.06.2014 - 17:02
fonte
6

L'aggiornamento degli hash delle password è una cosa. Infatti, come per la teoria dell'hash delle password , l'iterazione conta una buona funzione di hashing della password (ad es. bcrypt) è un compromesso: si rende la funzione tanto lenta quanto si può tollerare nel proprio contesto corrente . Quando acquisti un nuovo hardware più veloce, puoi aumentare il conteggio delle iterazioni e quindi dovresti. Il conteggio delle iterazioni consente di contrastare gli effetti della legge di Moore , ma funziona solo finché il conteggio è effettivamente regolare è aumentato.

Il metodo generico è aspettare che l'utente torni indietro e re-hash la password con i nuovi parametri (o anche la nuova funzione) in quel punto in cui il server ottiene effettivamente la password e può lavorarci. Le persone che lo fanno spesso lo abbinano a una politica di scadenza (i conti che non sono stati consultati in due anni sono chiusi o almeno "congelati").

Se vogliamo fare di più, ad esempio aggiornando gli hash delle password in modalità offline (senza aspettare che l'utente venga visualizzato), allora dobbiamo mettere le mani nella crittografia. Uno può escogitare alcuni meccanismi di hashing di nidificazione come descritto in questa risposta , ma questa è la progettazione crittografica, quindi si dovrebbe essere particolarmente attenti e fondamentalmente astenersi da esso. Generalmente, "hash l'hash" per (temporaneamente) rafforzare un valore hash fino a quando l'utente non ritorna.

Per il Concorso di hashing password in corso , il call per i candidati elencati come funzionalità desiderabile:

Ability to transform an existing hash to a different cost setting without knowledge of the password.

Tale funzionalità richiede una struttura interna specifica. Alcuni candidati al PHC lo offrono, ad es. mio .

    
risposta data 19.06.2014 - 17:04
fonte

Leggi altre domande sui tag