News for hackers. Stuff that matters.
Re:WeChat permanently closes account after user sets offensi... by arghwhat on Friday June 05, 2020 @05:06PM (#23433966)
Stacking hashes is not cryptographically sound. The additional hashing weakens the credentials. Cryptographic hashing is a very fragile subject.

"Assuming an attacker has broken TLS" - this makes no sense. If I had broken TLS, I could send you a login form with no hashing. I could modify your legitimate API requests, without the need for your credentials. I could take your token and forge requests as I wanted. All your assumptions go down the drain, as the security relied on the presence of TLS.

Basically, making this setup is generally harmful, while only providing negligible benefit in a doomsday scenario where all bets are off regardless.

If you truly want to have better security, you need an entirely different system. E.g., local private keys used to sign requests, or a proper password exchange/validation protocol. Smacking another hash on top does nothing good, and the idea is a good example of why normal people shouldn't crypto.

Re:WeChat permanently closes account after user sets offensi... by Jach on Friday June 05, 2020 @07:06PM (#23435026)
I've heard the "additional hashing weakens the credentials" line since I started programming, but no one ever bothers to link a citation, or if just reasoning simply from e.g. the pigeonhole principle seems to realize the increased likelihood of collisions is negligible for typical hash choices. It also flies in the face of common in-practice schemes (pre-bcrypt) like doing n rounds of sha256. There should be no real problem with doing the first round on the client.

I agree with you on the general pointlessness of client hashing, though, and oh what a world if we had pub-priv keys for authentication instead of passwords...

Re:WeChat permanently closes account after user sets offensi... by arghwhat on Saturday June 06, 2020 @06:00PM (#23442609)
> I've heard the "additional hashing weakens the credentials" line since I started programming, but no one ever bothers to link a citation

The main issue is that security analysis is non-trivial due to the interaction of their security guarantees. The end-result is effectively a new hashing algorithm. Figuring out the properties of this new algorithm requires a new cryptoanalysis (which is more than just avalanche tests).

> It also flies in the face of common in-practice schemes (pre-bcrypt) like doing n rounds of sha256. There should be no real problem with doing the first round on the client.

Old practices are deprecated for good reason, primarily due to flaws. Looking at what we used to do it not that useful.

The main problem is that it's not just "n rounds". The hash on the client must be salted, and it must be salted uniquely for that credential set, and must use a different salt from the backend hash. Plenty of ways to mess this up, and that's before we're even consider the implementation details of salting.

Then comes the interactions between likely different hashes. All in all, it's pretty complicated.

> I agree with you on the general pointlessness of client hashing, though, and oh what a world if we had pub-priv keys for authentication instead of passwords...

Especially with the only sensible procedure being password managers, it's silly we don't have asymmetric authentication. :(

Re:WeChat permanently closes account after user sets offensi... by mlaci on Saturday June 13, 2020 @06:04PM (#23513193)
> The additional hashing weakens the credentials.

If it's true, the attacker just has to do additional hashings to crack the password.