The Web Authentication API allows websites served via HTTPS to allow users to authenticate via asymmetric encryption. The procedure for login is basically the following:
- Server sends a challenge (16 random bytes);
- Client signs the challenge;
- Client sends the signature.
How is this better than password-based authentication?
MDN says:
This resolves significant security problems related to phishing, data breaches, and attacks against SMS texts or other second-factor authentication methods [...]
I don't understand how it prevents phishing or attacks against 2FA methods. Data breach consequences are not reduced if the passwords are properly hashed and TLS already ensures that a man-in-the-middle can't steal the password nor perform replay attacks, right?