Pepper (crittografia)
In [[crittografia]], un '''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 [[Salt (crittografia)|salt]], ma a differenza di quest'ultimo non viene salvato insieme all'output della funzione di hash. Le configurazioni più comuni per il pepper sono le seguenti:

* il pepper è lungo almeno quanto il salt, è salvato separatamente dal valore di cui deve essere fatto l'hash, e spesso è segreto all'interno dell'applicazione;
* il pepper è un valore di piccole dimensioni generato casualmente, che non viene mai salvato; per verificare se l'input è corretto, l'applicazione itera sull'insieme dei possibili valori che il pepper può assumere (per evitare timing attacks) valutando per ognuno di questi l'output della funzione di hash.<ref>{{Cita web|url=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.437.9101&rep=rep1&type=pdf|titolo=Catena: A Memory-Consuming Password-Scrambling Framework|accesso=9 dicembre 2016}}</ref>

Il pepper 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 ==
Di seguito è riportato un esempio incompleto riguardo all'utilizzo di un ''pepper'' costante per salvare le password. La seguente tabella contiene due combinazioni di username e password.
{| class="wikitable"
|'''Username'''
|'''Password'''
|-
|user1
|<kbd>password123</kbd>
|-
|user2
|<kbd>password123</kbd>
|}
La password non è salvata, e il pepper di 8-byte (64-bit) 44534C70C6883DE2 è salvato in un luogo sicuro separato dai valori di output dell'hash.
{| class="wikitable"
|'''Username'''
|'''Stringa di cui fare l'hashing'''
|'''Valore di output dell'hash = SHA256(Password + pepper)'''
|-
|user1
|<kbd>password123+44534C70C6883DE2</kbd>
|<kbd>D63E21DF3A2A6853C2DC675EDDD4259F3B78490A4988B49FF3DB7B2891B3B48D</kbd>
|-
|user2
|<kbd>password123+44534C70C6883DE2</kbd>
|<kbd>D63E21DF3A2A6853C2DC675EDDD4259F3B78490A4988B49FF3DB7B2891B3B48D</kbd>
|}
A differenza del salt, il pepper non fornisce protezione ad utenti che utilizzano la stessa password, ma protegge da [[Attacco a dizionario|attacchi a dizionario]], a meno che l'attaccante non abbia a disposizione il valore del pepper. Siccome lo stesso pepper non viene condiviso tra applicazioni diverse, un attaccante non è in grado di riutilizzare gli hash di un database compromesso ad un altro.

Uno schema completo per il salvataggio delle password solitamente comprende sia l'utilizzo del salt che quello del pepper.

== Note ==
<references />

== Voci correlate ==
* [[Passwd]]
* [[Salt (crittografia)]]

[[Categoria:Crittografia]]