Pepe (crittografia)

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

In crittografia, il pepe (pepper) è una sequenza di bit segreta aggiunta ad un input, per esempio una password, prima di effettuarne l'hash con una funzione crittografica di hash. Il pepper ha funzione similare al sale, ma a differenza di quest'ultimo non viene salvato insieme all'output della funzione di hash. Le configurazioni più comuni per il pepe sono le seguenti:

  • Il pepe è lungo almeno quanto il sale ed è salvato separatamente dal valore di cui deve essere fatto l'hash. Spesso è un segreto dell'applicativo;
  • Il pepe è un valore randomico di piccole dimensioni, che non viene mai salvato. Per verificare se l'input è corretto, l'applicazione itera sull'insieme dei possibili valori che il pepe può assumere (per evitare timing attacks) valutando per ognuno di questi l'output della funzione di hash.[1]

Il pepe aumenta la sicurezza del database in cui vengono salvati i valori di output della funzione di hash, perché aumenta il numero di elementi di cui bisogna essere in possesso per recuperare l'input, rendendo più difficoltoso un attacco brute force.

Esempio di utilizzo[modifica | modifica wikitesto]

Di seguito è riportato un esempio incompleto riguardo l'utilizzo di un pepe costante per salvare le password. La seguente tabella contiene due combinazioni di username e password.

Username Password
user1 password123
user2 password123

La password non è salvata, e il pepe di 8-byte (64-bit) 44534C70C6883DE2 è salvato in un luogo sicuro separato dai valori di output dell'hash.

Username Stringa di cui fare l'hashing Valore di output dell'hash = SHA256(Password + Pepe)
user1 password123+44534C70C6883DE2 D63E21DF3A2A6853C2DC675EDDD4259F3B78490A4988B49FF3DB7B2891B3B48D
user2 password123+44534C70C6883DE2 D63E21DF3A2A6853C2DC675EDDD4259F3B78490A4988B49FF3DB7B2891B3B48D

A differenza del sale, il pepe non fornisce protezione ad utenti che utilizzano la stessa password, ma protegge da attacchi a dizionario, a meno che l'attaccante non abbia a disposizione il valore del pepe. Siccome lo stesso pepe non viene condiviso tra applicazioni diverse, un attaccante non è in grado di riutilizzare gli hash di un database compromesso ad un altro.

Un schema completo per il salvataggio delle password solitamente comprende sia l'utilizzo del sale che quello del pepe.

Note[modifica | modifica wikitesto]

  1. ^ Catena: A Memory-Consuming Password-Scrambling Framework, su citeseerx.ist.psu.edu. URL consultato il 9 dicembre 2016.

Voci correlate[modifica | modifica wikitesto]