|
|
|
|
|
by chrisfosterelli
1638 days ago
|
|
There's little security advantage to doing this other than some obscurity, because a well informed attacker can still implement all the same attacks: * An attacker with access to the database will know they can reduce the "hashing algorithm" to two sequential hashing algorithms and still bruteforce a series of plaintext passwords to check to see if the hash matches what is in the database. * An attacker with access to the plaintext network communications or app server can just store and replay the second hash to login * An attacker with access to the client machine can grab the plaintext password still Lastpass does this is for end-to-end encryption reasons, where it is useful, but for standard apps I don't think it would be. |
|
The web browser ecosystem makes this a pretty hard task, unfortunately. You need fallbacks that weaken the process to the point where it is basically useless in a lot of cases. But the goal of a client/server split in the KDF is actually quite sensible. The client side does the large amount of work to protect users from dictionary attacks. The server side does a relatively much smaller amount of work to protect itself from being easily exploited if its hashes are exfiltrated when the hashes aren't themselves vulnerable to dictionary attacks.