Come si usa un peperone con le password salate?

3

In che modo un peperone (un numero costante di grandi dimensioni) viene utilizzato dopo che una password è stata salata con un sale mediante una funzione di hashing come bcrypt?

Dalla Guida allo studio ufficiale di Sybex CISSP, 8a edizione (2018):

Adding a pepper to a salted password increases the security, making it more difficult to crack.

Un peperone è semplicemente concatenato all'inizio o alla fine di una password salata? È concatenato alla password salata, che viene quindi sottoposta a hashing di nuovo?

    
posta BJ Peter DeLaCruz 13.11.2018 - 02:31
fonte

3 risposte

4

Salt è una stringa casuale utilizzata per mitigare gli attacchi del dizionario.

+-------+------------+-----------------------+
|  id   |    salt    |       hashed_pw       |
+-------+------------+-----------------------+
| user1 | 9060d63fe0 | hash(pass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pass239b3cdd660) |
+-------+------------+-----------------------+

Pepper è una stringa fissa che è più segreta di quella salt e attenua gli attacchi di forza bruta sulle password salate.

Is a pepper simply concatenated to the beginning or end of a salted password? Is it concatenated to the salted password, which is then hashed again?

I peperoni non dovrebbero semplicemente essere concatenati perché il loro obiettivo è rendere impossibile la forzatura bruta. Anche questo deve essere sottoposto a hash.

Assumiamo la password abcd1234 e salt 9060d63fe0 . Se quei due sono stati sottoposti a hash con bcrypt con round 9 , il risultato sarà $2a$09$T.FYSHNRG5W.EiS3ieAU/OqdnNLXtou3yZk98/ZJ0Y7JXAoFlVWKS .

Se in qualche modo la bruta hacker forza la password e riesce a trovare il valore abcd12349060d63fe0 , l'hacker saprà che il valore salt è 9060d63fe0 e la password è abcd1234 perché sale è memorizzato sul DB.

Ma supponiamo che venga applicato un pepe. pepe abab4321 , password abcd1234 e sale 9060d63fe0 . Se l'hacker ha successo con le forze brute  e ha trovato abab4321abcd12349060d63fe0 , l'hacker non sarà in grado di sapere quale parte è il pepe e quale è la password.

I peperoni possono essere applicati prima dell'hashing in questo modo:

+-------+------------+-----------------------------+
|  id   |    salt    |          hashed_pw          |
+-------+------------+-----------------------------+
| user1 | 9060d63fe0 | hash(pepperpass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pepperpass239b3cdd660) |
+-------+------------+-----------------------------+

O dopo l'hashing come questo

+-------+------------+--------------------------------------+
|  id   |    salt    |              hashed_pw               |
+-------+------------+--------------------------------------+
| user1 | 9060d63fe0 | hash(pepper + hash(pass19060d63fe0)) |
| user2 | 39b3cdd660 | hash(pepper + hash(pass239b3cdd660)) |
+-------+------------+--------------------------------------+
    
risposta data 13.11.2018 - 03:25
fonte
1

Di solito non è d'accordo su come usare un peperone, se migliora la sicurezza, o cosa significa "pepe".

  • La maggior parte delle fonti indica che il pepe dovrebbe essere integrato nell'hash. Tuttavia, Dropbox ha scelto esplicitamente di utilizzare la crittografia anziché l'hashing , poiché ciò consente di cambiare facilmente il pepe.
  • La maggior parte delle persone suggerisce di conservare il peperone da qualche parte. Tuttavia, è possibile anche per hash un po ' dei dati insieme con la password e poi buttarli via, non memorizzarli. Ciò significa che quando è necessario verificare la password, il pepe deve essere forzato brutalmente. Questo dato casuale che non viene memorizzato viene a volte indicato anche come pepe, che crea confusione con il tipo memorizzato.
  • Alcune persone sostengono che se gli hash vengono compromessi, l'intera applicazione viene compromessa, quindi il pepe viene compromesso se lo si archivia all'interno dell'applicazione. Ciò significherebbe che il pepe non offre alcuna sicurezza reale.
  • Le funzioni di hash per le password spesso hanno il supporto per i sali ma non per i peperoni. Ciò significa che devi inventare un modo per mettere il pepe in te stesso. Questa è generalmente una pessima idea con la crittografia e può portare a problemi seri .

Concludendo, non penso che ci sia consenso sul fatto che le applicazioni debbano usare un pepe o meno. La maggior parte delle applicazioni che ho visto non incorporano un pepe nell'algoritmo di hashing della password.

    
risposta data 13.11.2018 - 11:58
fonte
0

C'è un modo migliore, per aggiungere una chiave lato server alla procedura di hashing della password. Invece di aggiungerlo alla password prima dell'hash, puoi crittografare l'hash della password già calcolato.

  1. La chiave può essere scambiata ogni volta che è necessario (decrittografare tutti gli hash delle password e ricodificarli con la nuova chiave).
  2. Ottieni gli stessi vantaggi di un pepe, l'attaccante ha bisogno di ulteriori privilegi sul server per ottenere la chiave / pepe, gli hash da soli non lo faranno.

Ricorda che un peperone protegge le password solo fino a quando la chiave / pepe rimane segreta, uno scenario tipico è l'iniezione SQL.

    
risposta data 13.11.2018 - 08:43
fonte

Leggi altre domande sui tag