Passkey

Passwordless Authentication method

May 5, 2025

Passkey là gì

Passkey là một phương thức xác thực mới, được thiết kế để thay thế mật khẩu truyền thống bằng cách sử dụng mã hóa khóa công khai (public key cryptography). Nó giúp người dùng đăng nhập vào tài khoản một cách an toàn hơn và tiện lợi hơn, thường chỉ cần sử dụng vân tay, khuôn mặt, hoặc mã PIN thiết bị.

Cách hoạt động của Passkey:

Khi bạn tạo một passkey, hệ thống sẽ tạo ra một cặp khóa công khai và khóa riêng.

  • Khóa công khai được lưu trên máy chủ của dịch vụ.

  • Khóa riêng được lưu an toàn trên thiết bị của bạn (điện thoại, máy tính,…).

Khi đăng nhập, dịch vụ sẽ gửi một yêu cầu xác thực, thiết bị của bạn sẽ dùng khóa riêng (được bảo vệ bởi vân tay, Face ID hoặc mã PIN) để ký yêu cầu đó.

Dịch vụ kiểm tra chữ ký bằng khóa công khai để xác thực danh tính.

Ưu điểm của Passkey:

  • Không thể bị rò rỉ do không có mật khẩu để lộ.

  • Chống phishing: Passkey chỉ hoạt động trên đúng trang web/dịch vụ được tạo.

  • Dễ dùng hơn: Chỉ cần Face ID, vân tay, hoặc mã PIN.

Tương thích:

Được hỗ trợ bởi Apple (iOS, macOS), Google (Android, Chrome) và Microsoft (Windows, Edge).

Dữ liệu passkey có thể đồng bộ qua iCloud Keychain (Apple) hoặc Google Password Manager,…

iOS (Apple) Tối thiểu: iOS 16

Passkey được giới thiệu chính thức từ iOS 16 (ra mắt 2022).

Tích hợp trong iCloud Keychain, cho phép đồng bộ Passkey giữa các thiết bị Apple.

✅ Hỗ trợ Face ID, Touch ID, mã PIN ✅ Sử dụng được trong cả Safari lẫn ứng dụng native qua ASAuthorizationPlatformPublicKeyCredentialProvider (Apple API).

Android (Google) Tối thiểu: Android 9 (API level 28)

Nhưng hỗ trợ đầy đủ và chính thức Passkey (multi-device credentials) bắt đầu từ Android 14 (2023).

Android sử dụng Google Password Manager để lưu và đồng bộ Passkey.

✅ Hỗ trợ trong Chrome, WebView, và ứng dụng native thông qua Credential Manager API.

Ví dụ:

Khi bạn đăng nhập Gmail trên máy tính, bạn có thể nhận thông báo trên điện thoại yêu cầu xác thực bằng vân tay – đó chính là sử dụng passkey thay vì nhập mật khẩu.

Đăng ký Passkey trong mobile app

Thành phần:

  • Người dùng
  • Mobile App
  • Passkey API (WebAuthn/FIDO2 client)
  • Thiết bị (TPM/Secure Enclave)
  • Máy chủ dịch vụ (Server)

Biểu đồ tuần tự

Actor Sys Desc
Người dùng -> Mobile App : Mở app, chọn “Đăng ký với passkey”
Mobile App -> Server : Gửi yêu cầu tạo passkey (username, email,…)
Server -> Mobile App : Trả về challenge và thông tin cấu hình (relying party ID, options,…)
Mobile App -> Passkey API : Gửi yêu cầu tạo passkey với challenge
Passkey API -> Thiết bị : Yêu cầu xác thực sinh trắc học (vân tay / Face ID / PIN)
Thiết bị -> Passkey API : Tạo cặp khóa (private/public key) và xác thực người dùng
Passkey API -> Mobile App : Trả về public key credential
Mobile App -> Server : Gửi credential (public key, ID, metadata,…)
Server -> Server : Lưu khóa công khai (public key) và liên kết với tài khoản
Server -> Mobile App : Xác nhận đăng ký thành công
Mobile App -> Người dùng : Hiển thị “Đăng ký passkey thành công”

Ghi chú:

  • Thiết bị tạo cặp khóa bất đối xứng và chỉ gửi khóa công khai cho máy chủ.
  • Private key được lưu an toàn trong thiết bị, không bao giờ gửi ra ngoài.
  • Passkey chỉ dùng được cho một domain duy nhất (ví dụ example.com), đảm bảo chống phishing.

Sử dụng đăng nhập Passkey trong mobile app

Thành phần:

  • Người dùng
  • Mobile App
  • Passkey API (WebAuthn/FIDO2 client)
  • Thiết bị (TPM/Secure Enclave)
  • Máy chủ dịch vụ (Server)

Biểu đồ tuần tự

Actor Sys Desc
Người dùng -> Mobile App : Mở ứng dụng, chọn “Đăng nhập bằng passkey”
Mobile App -> Server : Gửi yêu cầu lấy challenge để xác thực
Server -> Mobile App : Trả về challenge (nonce)
Mobile App -> Passkey API : Yêu cầu xác thực với challenge
Passkey API -> Thiết bị : Yêu cầu xác minh sinh trắc học (vân tay / Face ID / PIN)
Thiết bị -> Passkey API : Đã xác thực (ký challenge bằng private key)
Passkey API -> Mobile App : Trả về dữ liệu xác thực (signed challenge, public key ID)
Mobile App -> Server : Gửi signed challenge và ID passkey
Server -> Server : Xác minh chữ ký bằng khóa công khai đã lưu
Server -> Mobile App : Xác thực thành công → cấp token phiên làm việc
Mobile App -> Người dùng : Đăng nhập thành công

Ghi chú:

  • Challenge: là chuỗi ngẫu nhiên server tạo ra để đảm bảo mỗi lần xác thực là duy nhất.
  • Private key: nằm trên thiết bị và không bao giờ rời khỏi đó.
  • Public key: được server lưu từ lúc người dùng tạo passkey lần đầu (đăng ký).

Q&A

  1. Mất điện thoại, mất Passkey? Hoàn toàn KHÔNG. Passkey thường được đồng bộ hóa trên nhiều thiết bị. Nếu bạn sử dụng Apple Passwords, việc khôi phục passkey đơn giản chỉ là đăng nhập vào một thiết bị Apple khác. Các trình quản lý mật khẩu như Dashlane, LastPass hay 1Password… cũng hoạt động tương tự.

  2. Passkey chỉ được hỗ trợ bởi Google và Apple? Câu trả lời là KHÔNG. Nhiều nền tảng khác cũng đã cung cấp dịch vụ đồng bộ hóa passkey. Microsoft đã công bố tính năng này cho Windows 11 và Google đang triển khai hỗ trợ trên cả macOS và Windows.

  3. Dữ liệu sinh trắc học được gửi lên mạng khi sử dụng Passkey? Khi bạn sử dụng Face ID hoặc vân tay để mở khóa passkey, dữ liệu sinh trắc học chỉ được xử lý trên thiết bị của bạn. Trang web chỉ nhận được thông báo xác thực thành công, không phải thông tin sinh trắc học cá nhân.

  4. Không thể thay đổi Passkey? Bạn vẫn có thể thay đổi passkey bằng cách xóa passkey cũ và tạo mới trên trang web tương ứng. Mỗi passkey là duy nhất và không thể bị đánh cắp thông qua phishing như mật khẩu truyền thống.

  5. Mã PIN kém an toàn hơn mật khẩu? Điều đó là KHÔNG PHẢI. Mã PIN chỉ hoạt động trên thiết bị của bạn và có giới hạn số lần nhập sai, giúp ngăn chặn các cuộc tấn công brute-force. Sự kết hợp giữa bảo mật thiết bị và xác thực cá nhân, khiến mã PIN an toàn hơn mật khẩu trong nhiều trường hợp.

  6. Trình quản lý mật khẩu tốt hơn Passkey? Mặc dù trình quản lý mật khẩu giúp lưu trữ các mật khẩu phức tạp, nhưng chúng vẫn có nguy cơ bị đánh cắp thông tin qua phishing. Passkey, ngược lại mang đến lớp bảo vệ tốt hơn, chống các cuộc tấn công, đánh cắp dữ liệu trên Internet.

  7. Passkey “khóa” người dùng vào một nền tảng? FIDO Alliance đã phát triển các tiêu chuẩn cho phép xuất passkey giữa các nền tảng. Hiện các trình quản lý mật khẩu hàng đầu đang triển khai hỗ trợ chuyển đổi passkey, giúp người dùng gia tăng lớp bảo vệ cho tài khoản.