tags:

views:

57

answers:

3

If the password salt for keys are viewable does it not improve security compared to without salt?

Would it be better just to not use the salt and improve some performance?

+3  A: 

Even a publicly viewable salt increases the security a bit, because your attackers cannot use previously generated rainbow tables. They have to generate their own. This takes a very long time.

Marius
Then does it matter how long the salt be?
Atomble
If the salt is very short - for example only one byte - an attacker could just generate all possible 256 rainbow tables. But when the salt gets longer - maybe four bytes and longer - it no longer really matters because of the exponential growth there are just to many possible salts. But using a long salt - maybe 16, 32 or 64 bytes - doesn't cost much and you may gain some security against some (not yet discovered) attacks, hence I prefer using quite long salts.
Daniel Brückner
If the salt is known, then the length does not matter Since the attacker knows the salt, he only needs to generate one rainbow table. If the salt is not known, then make a salt which is at least a few bytes long. As Daniel said, it costs almost nothing to use a salt which is very long.
Marius
A: 

It prevents the use of pre-calculated hash tables or rainbow tables from being used to merely lookup an acceptable input.

Take a look at: http://en.wikipedia.org/wiki/Rainbow_table

Keep in mind that having the salt hidden increases security, because then the attacker does not know exactly what function is being used to generate the hashes. However, the main benefit of hashing passwords is in the event of them being obtained -- much more work to make use of a list of hashes than a list of plain passwords. If someone has your hashes, they likely have your salt as well. Just food for thought.

gahooa
A: 

A unique salt will per password will prevent a Rainbow attack with a pre-computed hash. Using a unique salt per password requires the attacker to calculate the hash foreach individual password for each attempt.

It's main goal is slow the attacker down enough, to make the attack no longer feasible.

pb