
Passkey (khóa truy cập) đang trở thành tiêu chuẩn mới để thay thế mật khẩu truyền thống, mang lại trải nghiệm đăng nhập an toàn hơn và tiện lợi hơn nhờ chuẩn WebAuthn và FIDO2. Thay vì nhớ hàng chục mật khẩu phức tạp, người dùng chỉ cần xác thực bằng vân tay, Face ID, PIN thiết bị hoặc security key vật lý — tất cả đều dựa trên mật mã học khóa công khai (public-key cryptography) chống giả mạo hiệu quả.
Passkey hoạt động như thế nào?
Khi đăng ký tài khoản, trình duyệt tạo một cặp khóa mật mã: khóa riêng (private key) lưu an toàn trong TPM/Secure Enclave của thiết bị, và khóa công khai (public key) gửi lên server. Mỗi lần đăng nhập, server gửi một thách thức (challenge) ngẫu nhiên, thiết bị ký thách thức đó bằng khóa riêng và gửi chữ ký về. Server xác thực chữ ký bằng khóa công khai — không bao giờ thấy khóa riêng, không thể bị lừa đảo (phishing) vì khóa riêng không rời thiết bị.

WebAuthn và FIDO2: Hai trụ cột kỹ thuật
WebAuthn (Web Authentication) là API chuẩn W3C cho phép trình duyệt giao tiếp với authenticator (thiết bị xác thực) — hỗ trợ cả platform authenticator (Windows Hello, Touch ID, Face ID, Android Biometric) và roaming authenticator (YubiKey, Titan Security Key). FIDO2 là tập hợp chuẩn của FIDO Alliance bao gồm WebAuthn và CTAP (Client to Authenticator Protocol), định nghĩa cách client (trình duyệt/OS) liên lạc với authenticator ngoại vi qua USB/NFC/Bluetooth.

Lợi ích so với mật khẩu và 2FA truyền thống
- Chống phishing tuyệt đối: Khóa riêng không bao giờ rời thiết bị, không thể bị đánh cắp qua trang web giả mạo.
- Không cần nhớ mật khẩu: Xác thực bằng sinh trắc học hoặc PIN thiết bị — trải nghiệm mượt mà như mở khóa điện thoại.
- Đồng bộ đa thiết bị: Passkey có thể đồng bộ qua iCloud Keychain (Apple), Google Password Manager (Android/Chrome), 1Password, Bitwarden — đăng nhập trên máy mới chỉ cần quét vân tay.
- Không tái sử dụng credential: Mỗi trang web có cặp khóa riêng biệt, vi phạm dữ liệu trang A không ảnh hưởng trang B.
- Tuân thủ quy định: Đáp ứng yêu cầu xác thực đa yếu tố (MFA) của GDPR, PSD2, NIST 800-63B.
Hỗ trợ hiện nay (2025)
| Platform | Hỗ trợ Passkey | Đồng bộ |
|---|---|---|
| iOS/macOS (Safari, Chrome) | Đầy đủ từ iOS 16/macOS Ventura | iCloud Keychain |
| Android (Chrome, Brave) | Đầy đủ từ Android 9+ | Google Password Manager |
| Windows 10/11 (Edge, Chrome) | Windows Hello (PIN, vân tay, Face) | Microsoft account / 1Password |
| Linux (Chrome, Firefox) | WebAuthn platform + security key | 1Password, Bitwarden, Passkey manager |
Hàng trăm dịch vụ lớn đã triển khai: Google, GitHub, Microsoft, Amazon, PayPal, eBay, Shopify, WhatsApp, TikTok, Nintendo, Sony PlayStation và nhiều ngân hàng Việt Nam (Vietcombank, Techcombank, VPBank qua ứng dụng di động).

Triển khai Passkey cho developer
Backend cần lưu credential ID và public key của từng user. Quy trình đăng ký (registration ceremony):
// 1. Server tạo challenge ngẫu nhiên
const challenge = crypto.getRandomValues(new Uint8Array(32));
// 2. Gọi navigator.credentials.create() ở frontend
const credential = await navigator.credentials.create({
publicKey: {
challenge,
rp: { name: "MyApp", id: "myapp.com" },
user: { id: userId, name: "[email protected]", displayName: "User" },
pubKeyCredParams: [{ alg: -7, type: "public-key" }], // ES256
authenticatorSelection: {
authenticatorAttachment: "platform",
requireResidentKey: true,
userVerification: "preferred"
},
timeout: 60000,
attestation: "none"
}
});
// 3. Gửi credential.id (base64url) và credential.response.attestationObject
// lên server để verify và lưu public key
Quy trình đăng nhập (authentication ceremony) tương tự dùng navigator.credentials.get() với allowCredentials chứa các credential ID đã lưu.
Thách thức và lưu ý triển khai
- Account recovery: Nếu mất thiết bị và không có passkey đồng bộ, cần quy trình khôi phục (email/SMS OTP, security key dự phòng, support team).
- Cross-platform: Passkey tạo trên iPhone (iCloud) không tự động dùng được trên Windows Chrome trừ khi đồng bộ qua 1Password/Bitwarden.
- Enterprise: Quản trị IT cần chính sách cho phép/khóa passkey, hỗ trợ security key vật lý (YubiKey) cho nhân viên không dùng sinh trắc học.
- Legacy system: Hệ thống cũ dùng mật khẩu cần migration song song (hybrid) — cho phép cả passkey và password trong giai đoạn chuyển đổi.
Kết luận
Passkey dựa trên WebAuthn/FIDO2 là bước tiến lớn nhất trong xác thực nhân loại từ khi ra mật khẩu. Nó loại bỏ hoàn toàn vector tấn công phishing, credential stuffing và brute-force, đồng thời mang lại trải nghiệm “đăng nhập một chạm” như mở khóa điện thoại. Developer và doanh nghiệp nên bắt đầu triển khai song song ngay hôm nay — người dùng sẽ cảm ơn vì không còn phải nhớ hay reset mật khẩu bao giờ nữa.
WebAuthn Guide, FIDO2 Specifications, Passkeys.dev – Implementation Resources
