WebAuthn (Web Authentication) là một tiêu chuẩn dành cho Web API cho phép xác thực người dùng an toàn hơn mà không cần mật khẩu truyền thống.

WebAuthn sử dụng một cặp khoá

  • public key (khoá công khai) - được gửi đến server của ứng dụng
  • private key (khoá riêng) - được lưu an toàn trên thiết bị

Khi đăng nhập, bạn chỉ cần chứng mình bạn có private key mà không cần gửi nó lên server để xác thực.

Cách hoạt động
Khi đăng ký
  • Thiết bị tạo cặp khoá, và server sẽ lưu lại public key
Khi đăng nhập
  • Server gửi cho bạn một challenge - một chuỗi ngẫu nhiên duy nhất
  • Thiết bị dùng private key để ký (sign) cái challenge đó
  • Bạn gửi lại challenge + chữ ký
  • Server sử dụng public key để verify
Vì sao an toàn?
  • Chỉ có người có private key mới tạo được chữ ký hợp lệ
  • Từ chữ ký không thể suy ngược ra private key
  • Mỗi challenge khác nhau, nên không thể replay chữ ký cũ