Crackstation "Secure Salted Password" Esempio Java: è davvero sicuro?

2

Sto creando un servizio di autenticazione, quindi ho cercato alcune buone implementazioni Java / Groovy di hashing password + salt. Ho trovato questo articolo su crackstation con un esempio di codice e ho deciso di renderlo mio. La prima cosa che ho notato è SHA1 e solo 1000 iterazioni, quindi le ho cambiate in SHA256 e 90510 (devo ancora testare le prestazioni sul server e magari aumentarlo ad almeno 100k).

Una cosa comunque mi ha colpito. La stringa risultante è "[iterazioni]: [sale come esagono]: [hash come esadecimale]". Perché le iterazioni vengono aggiunte al risultato? Non sarebbe insicuro? Non sarebbe come dare via un pezzo della chiave? O sono solo troppo paranoico.

L'ho rimosso, ma mi chiedo perché è lì? Qual è lo scopo di dimostrarlo? Nel caso in cui il numero predefinito di iterazioni cambi? Il numero di iterazioni dovrebbe essere randomizzato in una laurea?

    
posta MrPlow 27.01.2015 - 19:38
fonte

1 risposta

5

Molto simile al sale, il conteggio dell'iterazione non dovrebbe essere tenuto segreto dagli aggressori. Rende il compito degli attaccanti un po 'più difficile se non conoscono il conteggio delle iterazioni poiché aggiunge un pezzo di informazioni che devono trovare altrove. Ma generalmente non ci si aspetta che sia un ostacolo che non sono in grado di superare.

Memorizzando il valore di iterazione insieme alla password, è più semplice aggiornare il conteggio delle iterazioni sul sistema, continuando a supportare le password esistenti fino a quando non possono essere modificate. La routine di controllo della password conosce sempre il numero appropriato di iterazioni da provare quando si combina l'hash della password per ciascun utente specifico. Altrimenti dovresti cercare di gestire diversi conteggi di iterazioni possibili passati e correnti all'interno del codice di controllo della password.

Randomizzare il numero di iterazioni non aggiunge molto valore dato che gli attaccanti non si limitano a crackare strumenti con conteggi di iterazione hardcoded o utilizzando tabelle arcobaleno precompilate con un certo numero di iterazioni.

    
risposta data 27.01.2015 - 19:47
fonte

Leggi altre domande sui tag