Passkey là gì? Đăng nhập không mật khẩu với WebAuthn FIDO2

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 WebAuthnFIDO2. 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ị.

Giao diện Passkey trong Bitwarden hiển thị tùy chọn tạo khóa truy cập

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.

Sơ đồ mã hóa khóa công khai (public key cryptography) cơ bản

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).

Sơ đồ luồng hoạt động WebAuthn/FIDO2 từ tạo khóa đến xác thực

Triển khai Passkey cho developer

Backend cần lưu credential IDpublic 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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Pin thể rắn: Công nghệ pin tăng dung lượng, an toàn cho xe điện

Pin thể rắn là công nghệ pin thế hệ mới, thay thế chất điện phân lỏng bằng chất rắn. Đột phá này hứa hẹn tăng mật độ năng lượng, cải…

Xem thêm

Tailwind CSS v4: CSS-First Config, Engine Oxide Và Tốc Độ Build Nhanh Hơn 3 Lần

Tailwind CSS v4: CSS-First Config, Engine Oxide Và Tốc Độ Build Nhanh Hơn 3 Lần Tailwind CSS v4 ra mắt stable tháng 1/2025, đánh dấu bước chuyển lớn nhất trong…

Xem thêm

Màn Hình Kính Gập Siêu Mỏng: Tương Lai Thiết Bị Di Động

Màn Hình Kính Gập Siêu Mỏng: Cuộc Cách Mạng Thiết Bị Di Động Màn hình kính gập siêu mỏng (UTG – Ultra Thin Glass) là công nghệ màn hình đang…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất