Un hash di un intero a 32 bit produce un hash salt migliore del numero intero stesso?

3

Ho uno scenario in cui ho già una tabella delle password delle risorse memorizzate come hash 128-bit non salati. Non riesco a forzare i proprietari a fornire nuove password, quindi sto cercando di mitigare la situazione rielaborando tutte le password con un salt.

Purtroppo posso solo ricavare il sale dai dati esistenti e l'unico dato che posso garantire rimarrà coerente è l'ID intero (sequenziale) a 32 bit dell'oggetto.

Oltre ad aggiungere un ulteriore livello di oscurità, c'è qualche vantaggio nell'estendere la lunghezza del sale tagliando l'ID? Ripetere semplicemente il numero intero per ottenere un valore a 128 bit ha gli stessi risultati? O entrambi questi approcci sono inutili?

    
posta user115439 24.06.2016 - 03:07
fonte

2 risposte

2

In realtà la maggior parte delle implementazioni di algoritmi come BCrypt generano un sale per conto proprio, dalla fonte casuale del sistema operativo. Questo è il migliore che si possa fare e non c'è bisogno di derubare un sale da altri parametri.

Un valore di sale dovrebbe essere globalmente univoco per ogni password, quindi un utente malintenzionato non può trovare tabelle arcobaleno precalcolate e dovrebbe creare una tabella arcobaleno separata per ciascuna password.

  1. Unicamente locale: se ogni password del tuo database riceve un valore diverso, l'utente malintenzionato non può riutilizzare le tabelle arcobaleno. Hashing il numero intero (id utente) non farà alcuna differenza in questo caso.
  2. Globalmente unico: se si utilizzano sali unici in tutto il mondo, un utente malintenzionato non può trovare tabelle arcobaleno già precalcolate. Trovare tabelle precalcolate per gli ID utente è leggermente più semplice che trovarle per gli hash degli interi, quindi l'hashing migliorerebbe davvero un po 'la sicurezza.

Ancora una volta, puoi ottenere un vantaggio senza distoglierlo da altri parametri, e lo fai. Lascia che la funzione di hash lo faccia, o prendilo dalla fonte casuale del sistema operativo.

    
risposta data 24.06.2016 - 08:58
fonte
1

Per rispondere alla domanda che si è specificamente chiesto ... No, l'hashing del valore Int32 da utilizzare come sale non è significativamente più strong dell'utilizzo diretto di Int32. Come sospetti, sarebbe più oscuro della sicurezza. Come Martin ha sottolineato nella sua risposta, la proprietà chiave di un sale è che è globalmente unica. Non si ottiene questa proprietà con un int o con l'hash di un int, quindi si aggiungerebbe complessità alla soluzione, ma non molta sicurezza.

    
risposta data 20.07.2016 - 01:38
fonte

Leggi altre domande sui tag