Remix.run Logo
▲ Maskawanian 2 hours ago

What are you talking about? Whenever I've written authentication, passwords are hashed on the client side and never transmitted in the clear.

The way passkeys are being pushed is so clearly an attempt to add friction to leaving walled gardens. Stop talking in absolutes in a world of greys.

▲linkregister 2 hours ago | parent | next [-]

That's not accurate. If that were true, then a hacker stealing password hashes would enable them to instantly log in, without cracking them. Rainbow tables and dictionary attacks exist for a reason.

Pass-the-hash has been tried in NTLMv1 and thankfully that was the end of that failed experiment.

Modern password authentication is performed by the client sending a plaintext password encapsulated within a symmetrically-encrypted tunnel. On the Web that's with TLS. The server then uses bcrypt or another scheme to hash the password (along with the stored salt) and compared that resulting hash with the value in the table.

▲Ra8 2 hours ago | parent | prev | next [-]

> Whenever I've written authentication, passwords are hashed on the client side and never transmitted in the clear.

Unless I'm misunderstanding what you're doing, this achieves nothing.

Hashing the password on the client side makes the hash the password, and MITM attacks are still possible.

▲Maskawanian 2 hours ago | parent | next [-]

Sure, you could MITM still if all you do is that, as with anything it depends on what you are defending against.

If you are defending against clear text being discoverable, then bcrypt hashing with a unique salt on the client is good enough.

If you are trying to prevent MITM you can combine that salting with public/private key transmission of the bcrypt hash to the backend (effectively the same idea as pass keys without the downsides).

MITM just affects your service, and doesn't always matter depending on what the service is, for example, a recipe manager doesn't need to have bullet proof security.

▲Ra8 2 hours ago | parent [-]

What if the hash you're sending is discovered? I can use that to login to the service; it offers the same protection as a plain text password.

▲Maskawanian an hour ago | parent [-]

As the hash is being encrypted with the public key in the client, that would require that the client be compromised. In which case the original password is already exposed at that point, thus a discussion of the transport is no longer the concern.

▲MBCook an hour ago | parent | prev [-]

Correct. The hash effectively is the password at that point.

If you’re storing the hash unencrypted in the DB, and it’s “just” a hash so why not, you’ve gone backwards.

▲bayindirh 2 hours ago | parent | prev | next [-]

> Whenever I've written authentication, passwords are hashed on the client side and never transmitted in the clear.

While rare, a couple of sites which has many (>1000) users have sent me my password in the plain when I told I forgot them.

Many sites have e-mailed my password in the open when I registered, as well.

I don't defend passkeys here, but too many weak links are present in password based flows today. If someone uses per-site strong passwords, one can contain the leaks, but use the password even once, and the problem grows exponentially.

▲Barbing 2 hours ago | parent [-]

> Many sites have e-mailed my password in the open when I registered, as well.

A phpBB forum era classic!

▲bayindirh 2 hours ago | parent | next [-]

It adds a vintage character to otherwise modern and boring websites. This happened to me as recent as last week, BTW.

▲supermetals 2 hours ago | parent | prev [-]

[flagged]

▲mlfreeman 2 hours ago | parent | prev [-]

> Whenever I've written authentication, passwords are hashed on the client side and never transmitted in the clear.

Don't assume everyone coding a login page is as competent as you though...sadly.

▲encom 2 hours ago | parent [-]

But the sites where I actually care if my account gets compromised - Steam, FastMail, DigitalOcean etc. - are very unlikely to screw up password storage.

I'm never going to bother with paranoid security inconveniences for the crappy website my local pizza place uses.