[.edit: even mijn post herordenen want dit is een zooitje zo.]
Als je wel eens van rainbow table hebt gehoord
Been there, done that, got the T-shirt. Als je mijn reacties hier onder dit artikel leest, gaat er dan niet een lichtje branden dat ik heel misschien wel weet waarover ik praat, in plaats van meteen in de verdediging te schieten en te denken dat het mijn doel is om jouw reactie onderuit te halen? Ik beschrijf slechts wat een salt en pepper betekent (
en geef daarbij aan dat jouw definitie niet klopt).
Lees
de link eens door die ik in mijn vorige reactie gaf, misschien snap je het dan beter. Maar ik zal the gist of it even quoten, voor het geval je klik-moe bent:
What Is A Salt
To put it simply, a salt is a unique value that you use to differentiate multiple hashes from each other.
What Is A Pepper
A Pepper is very similar to a salt. It is a single value that's stored unique for a site. That value is used in each and every password (in addition to the salt) to prevent the same hashes from working on multiple sites. It's different from a salt, because it's not stored with the password, or unique to the password.
Met andere woorden:
De termen salt+pepper worden overigens ook gewoon in het hoger onderwijs gebruikt bij security vakken.
Óf jij hebt het dan verkeerd onthouden, óf ze hebben het verkeerd gedoceerd.
In de tweede alinea van mijn vorige post geef ik vervolgens een beschrijving dat het gebruik van een pepper niet bijzonder zinnig is,
maar dat was verder niet op jou persoonlijk gericht maar in het algemeen, omdat mensen hier op t.net schijnen te denken dat een pepper noodzakelijk is.
Afgezien van het misverstand in terminologie ben ik het dus geheel eens met je verhaal. Je moet userwachtwoorden gewoon salten, klaar. En ja, dus per user een specifieke salt. En nee, dat is geen tegenstrijdige term, dat is gewoon wat een salt is.
Een globale pepper meehashen is daarentegen niet bijzonder zinnig. Sure, je kunt geen standaard rainbowtable meer gebruiken, maar die kun je wel genereren. Echter, het genereren van zo'n rainbowtable is useless als je een per-user specifieke salt gebruikt. Maar veel belangrijker: Het is niet bewezen dat het gebruik van een vaste tekenreeks bij álle hashes (oftewel een pepper) de hashfunctie veilig blijft. Zolang dat niet bewezen is kun je er niet vanuit gaan, en het dus beter ook niet gebruiken.
Overigens nog een opmerking:
hashString = hash(applicatiesalt + userpepper + wachtwoord)
De salt moet je altijd áchter het wachtwoord zetten. Beginnen met een salt is hetzelfde als het gebruiken van een andere IV (initialization vector) van de hash functie, en kan leiden tot een mogelijke pre-image collision attack.
[Reactie gewijzigd door .oisyn op 23 juli 2024 06:22]