# Reducing the probability that a password will be guessed

In a file users' password hashes are stored. There are 2 approaches to reduce the probability that the password is guessed.

1. Increase the size of the salt from 12 bits to 24 bits.
2. Increase the length of the password to 16 characters by hashing the first 8 characters using current hash function, the second set of characters using the current hash function and the same salt, and concatenating the two.

Which approach will increase the time required to guess the password?

• I have a hard time understanding your second approach, can you please give a nice formula (such as $\tau=H(H(P,s)||H(P,s),s)$ or try to clarify it? Can it be assumed that all salts are unique (even when they're 12 bit)? – SEJPM Apr 12 '16 at 20:34
• Formula: F = H(H(P,s)||H(P,s)) Use 8 characters while hashing on either parts of concatenation. First 8 characters in first part and other 8 characters in second part of concatenation. We can assume that all salts are unique. – Shridhar R Kulkarni Apr 12 '16 at 22:48

This looks like a (homework) assignment as the parameters are artificially small and the method is highly unconventional as opposed to the standard "You want the attacker to do more work?" - "Just increase the work parameter!". Because of this I'll give you some hints on how to solve this.

Increase the size of the salt from 12 bits to 24 bits.

You said, all salts can be assumed to be unique and now remember what a salt actually does and why it was invented and the effect of this change should be obvious.

Further hint: "A salt is a way to select a specific hash function among a big family of hash functions." (the bear) If you widen the possible number of hash functions, does this change the time needed to break one specific instance (which is unique for each password)?

Increase the length of the password to 16 characters by hashing the first 8 characters using current hash function, the second set of characters using the current hash function and the same salt, and concatenating the two.
Formula: $\tau = H(H(P_1,s)||H(P_2,s),s)$ with $P_1$ and $P_2$ being the first and second eight characters of the password.

Compare the amount of computations (read: hash calls) an attacker has to make for verifying $\tau$ in this scenario with the amount of computations he has to make when $\tau=H(P,s)$. Note further that an attacker can't skip any of the internal calls for verification of $\tau$ and note even further that an attacker will try many instances in parallel anyway and thus parallelizing stuff doesn't make it go any faster if you do it en mass.

• @SEPJM : The time required to brute force will definitely increase in first case. The hash calls can be run in parallel in second case. So the time required to guess the password will be more in first case. Right? Will you add anything more? – Shridhar R Kulkarni Apr 16 '16 at 20:48