Skip to main content
1 of 4

Splitting a password for dual roles

Would like to prompt users for a single passphrase to establish trust with separate normally but not always complimentary systems from one password input.

Essentially looking for a box where one password enters and two leaves where maximum of entropy is maintained and chance of using either output password to derive the other is minimized.

There are some constraints: Algorithm must be public knowledge. No other secret keys can be involved. Output passwords must be deterministic for any given input password.

Simple answer seems to be:

pass1 = HMAC(password,"Magic One") pass2 = HMAC(password,"Magic Two")

With this difficulty of that which knows 'pass1' to derive 'pass2' should be the same as difficulty required to guess 'password'.

Are there better existing algorithms? Only reference I have been able to find is Steve Bellovin's draft-bellovin-hpw-01 using same basic method.

Specifically is it practically possible to increase difficulty of someone with knowledge of 'pass1' to derive 'pass2' to more than difficulty of guessing 'password' itself even if it requires spending portions of available 'password' entropy?

For example 'pass2' is exposed in an environment where it is being attacked "offline" while 'pass1' is less vulnerable. In this case 'pass1' is effectively also exposed to the "offline" risk as much as 'pass2'.