security - Salting Hashes - why is the salt treated by the literature as being known to Eve? -
the title says everything. don't understand: why shouldn't keep salt secret password. or did misunderstand something?
the salt treated public because keeping secret isn't necessary.
the point of salt make dictionary attacks more difficult/less practical. in dictionary attack, attacker hashes common words dictionary, , (if he's serious @ all) supplements things common names. equipped this, if can hold of list of hashed passwords, can see if of them matches hash in list. assuming have significant number of users, has pretty chance of finding @ least one. when does, looks in list find word produced hash, , can use log in , impersonate user.
adding salt means instead of doing once, has once each possible salt value. example, if use 24-bit salt, has hash each word in dictionary ~16 million times, , store results of ~16 million hashes.
just sake of argument, let's assume without salt, take attacker 8 hours hash candidate words, , 16 megabytes store results (hashes , word produced each). we'll further assume storage equally divided between hashes , list of words/names/whatever produced them.
using same 24-bit salt, means time multiplied same factor of ~16 million. storage words produced hashes remains same, hashes (again) multiplied ~16 million. working out math, come out approximately 15,000 years of computation , 128 terabytes of storage.
in short, without salt, dictionary attack within easy reach of anybody. believe (for example) let computer run overnight hashing pull april fools joke on few of co-workers (easy believe, because i've seen done).
when down it, it's numbers game: dictionary attack isn't betting every user have password that's easy guess, enough them find @ least few open holes. likewise, making salt public allow simpler attack, downloading salt each hash, , doing individual dictionary attacks on each, using known salt each one. assuming system has fewer users possible hash values, more practical attack. nonetheless, he's stuck attacking each password individually, rather using single dictionary not entire system, in fact systems might want attack use same hash algorithm.
in summary: salt can job though it's made public. 1 of aims of security system minimize amount of information needs kept secret. since salt can work if public, it's assumed public knowledge. in practical system, don't try publish attackers, don't (shouldn't, anyway) rely on remaining secret either.
Comments
Post a Comment