Revolut âm thầm triển khai passkeys. Cùng tìm hiểu về tác động đến bảo mật ngân hàng, trải nghiệm người dùng và những điểm cần cải thiện trong bài phân tích toàn diện của chúng tôi.
Vincent
Created: July 15, 2025
Updated: July 16, 2025
See the original blog version in English here.
Want to learn how top banks deploy passkeys? Get our 80-page Banking Passkeys Report (incl. ROI insights). Trusted by JPMC, UBS & QNB.
Get ReportTrong lĩnh vực ngân hàng số, nhu cầu về bảo mật mạnh mẽ mà không làm ảnh hưởng đến trải nghiệm người dùng đã thúc đẩy sự ra đời của các giải pháp sáng tạo. Trong số đó, passkeys nổi bật lên như một tiêu chuẩn mới cho việc xác thực người dùng. Gần đây, Revolut, một ngân hàng thế hệ mới (neo-bank) hàng đầu có trụ sở tại London, đã âm thầm bắt đầu triển khai passkeys cho cả tài khoản Cá nhân và Doanh nghiệp. Bước đi chiến lược này không chỉ phù hợp với nhu cầu ngày càng tăng về trải nghiệm kỹ thuật số an toàn và tiện lợi hơn, mà còn định vị Revolut như một đơn vị tiên phong trong việc áp dụng passkeys trong ngành ngân hàng.
Với việc triển khai passkeys, Revolut đang đi theo xu hướng của các gã khổng lồ công nghệ, với Coinbase, WhatsApp, Nintendo và Uber dẫn đầu làn sóng passkeys. Trong lĩnh vực tài chính, Revolut là một trong những ngân hàng đầu tiên, nếu không muốn nói là ngân hàng lớn nhất cho đến nay, triển khai passkeys.
Recent Articles
♟️
Mastercard Identity Check: Mọi Điều Tổ Chức Phát Hành & Đơn Vị Chấp Nhận Thanh Toán Cần Biết
♟️
Passkeys cho Nhà cung cấp Thanh toán: Cách Xây dựng SDK của Bên thứ ba
♟️
Máy chủ Kiểm soát Truy cập EMV 3DS: Passkeys, FIDO và SPC
♟️
Xác thực PCI DSS 4.0: Passkeys
♟️
Toàn cảnh Passkey thanh toán: 4 Mô hình tích hợp cốt lõi
Lưu ý: Chúng tôi dự kiến trong những tuần tới, passkeys sẽ được triển khai dần trên quy mô rộng hơn và các lỗi sẽ được khắc phục. Chúng tôi sẽ cập nhật bài viết khi có thông tin mới. Phiên bản hiện tại được cập nhật vào ngày 7 tháng 2 năm 2024.
Passkeys đại diện cho giai đoạn tiếp theo của xác thực không mật khẩu, mang đến cho người dùng một cách thức liền mạch nhưng vẫn an toàn để truy cập vào tài khoản của họ. Không giống như mật khẩu truyền thống, passkeys loại bỏ nhu cầu phải nhớ các mật khẩu phức tạp, thay vào đó dựa trên công nghệ mật mã bất đối xứng với các khóa riêng biệt cho mỗi người dùng và thiết bị. Phương pháp này không chỉ tăng cường bảo mật bằng cách giảm nguy cơ bị tấn công phishing và vi phạm dữ liệu, mà còn đơn giản hóa quá trình đăng nhập, vì người dùng chỉ cần sử dụng Face ID, Touch ID hoặc Windows Hello, từ đó cải thiện trải nghiệm người dùng tổng thể.
Revolut triển khai passkeys theo từng giai đoạn và các tính năng cũng không được tung ra đồng thời cho tài khoản Doanh nghiệp và Cá nhân. Những khác biệt chính mà chúng tôi nhận thấy trong quá trình nghiên cứu được nêu trong bảng sau:
Tính năng | Revolut Personal | Revolut Business |
---|---|---|
Nút đăng nhập bằng passkey hiển thị trên trang đăng nhập | Không | Có |
Popup quảng bá passkey sau khi đăng nhập thành công trên thiết bị mới | Có, nhưng không thành công trên mọi thiết bị | Có, trên mọi thiết bị nhưng chỉ tạo passkey thành công trên Windows 11 |
Có mục cài đặt passkey trong phần cài đặt bảo mật tài khoản | Có, tuy nhiên không có nút để tạo passkey | Không |
Hỗ trợ passkeys trên ứng dụng gốc iOS / Android | Không | Không |
Những khía cạnh sau đây cần được ghi nhận một cách tích cực trong việc tích hợp passkey của Revolut:
Mặc dù bước đi táo bạo của Revolut trong việc tích hợp passkey là đáng khen ngợi, quá trình triển khai vẫn còn một số thiếu sót.
Tiếp theo, chúng tôi sẽ đi sâu hơn vào tài khoản Revolut Personal và Business và cách passkeys được triển khai trên các thiết bị và nền tảng được chọn.
Chúng tôi bắt đầu phân tích passkeys của Revolut Business bằng cách xem xét kỹ hơn ứng dụng web trước khi phân tích các ứng dụng gốc.
Để giữ cho nội dung sau đây ngắn gọn, chúng tôi chỉ nêu bật một số kết hợp nền tảng, thiết bị và trình duyệt nhất định.
Lưu ý rằng, bạn chỉ nhận được popup về passkey từ Revolut một lần, sau khi đăng nhập thành công bằng các phương thức xác thực hiện có. Để kích hoạt lại popup, bạn cần xóa cookie của Revolut hoặc truy cập trang web ở chế độ Ẩn danh / Duyệt web riêng tư.
Khi bạn truy cập trang đăng nhập của Revolut Business, bạn sẽ ngay lập tức nhận thấy một tùy chọn đăng nhập mới nổi bật nằm bên dưới trường nhập email và phía trên các tùy chọn đăng nhập mạng xã hội Google / Apple, có nhãn: Tiếp tục với passkey.
Popup quảng bá passkeys trông như sau:
Điều thú vị là, đối với Revolut Business, mặc dù định danh người dùng chính là địa chỉ email, passkeys lại được liên kết với số điện thoại, có lẽ vì tài khoản Revolut Personal được tạo bằng số điện thoại trước tiên.
Bây giờ bạn đã tạo thành công một passkey trên Windows 11 và Chrome, bạn có thể đăng xuất và nhấp vào Tiếp tục với passkey trên trang đăng nhập. Sau đó, giao diện người dùng của trình duyệt để xử lý xác thực passkey sẽ xuất hiện:
Trái ngược với quy trình đăng nhập hiện tại của Revolut Business, nơi bạn cần cung cấp mật khẩu và xác nhận danh tính qua thông báo đẩy trong ứng dụng gốc hoặc liên kết ma thuật qua email làm yếu tố thứ hai, không cần phương thức xác thực bổ sung nào cho việc đăng nhập bằng passkey, vì passkeys vốn đã đóng vai trò là 2FA. Điều này thể hiện một sự cải thiện đáng kể về trải nghiệm người dùng, đặc biệt là trên các thiết bị máy tính để bàn, vì nó loại bỏ nhu cầu chuyển đổi ngữ cảnh hoặc sử dụng thiết bị thứ hai.
Trên Android 14 và trong Chrome 121, nút đăng nhập Tiếp tục với passkey rất nổi bật.
Trên iOS 17.3 và trong Safari, nút đăng nhập Tiếp tục với passkey cũng rất nổi bật.
Các ứng dụng gốc iOS và Android cho Revolut Business chưa hỗ trợ passkeys. Do đó, không có tùy chọn Passkey trong mục Bảo mật & quyền riêng tư của ứng dụng iOS (xem ảnh chụp màn hình) hoặc ứng dụng Android:
Một trong những khác biệt ban đầu cần lưu ý là Revolut Personal sử dụng số điện thoại làm định danh người dùng chính. Thay vì mật khẩu, việc xác thực được quản lý thông qua một mật mã từ 6 đến 12 chữ số, trong khi Revolut Business sử dụng mật mã 4 chữ số và sử dụng mật khẩu trong quy trình đăng nhập mặc định.
Để giữ cho nội dung sau đây ngắn gọn, chúng tôi chỉ nêu bật một số kết hợp nền tảng, thiết bị và trình duyệt nhất định.
Popup quảng bá passkey sau đây được hiển thị lần đầu tiên bạn đăng nhập (hoặc sau khi xóa cookie / ở chế độ Duyệt web riêng tư):
Vì một lý do nào đó, sau khi nhấp vào Thêm passkey ở màn hình trước, chúng tôi đã được chuyển thẳng đến trang đã đăng nhập, mà không có cơ hội bắt đầu quy trình tạo passkey với Touch ID. Khi điều tra vấn đề, chúng tôi đã tìm thấy lệnh gọi API tương ứng (https://sso.revolut.com/api/challenges /webauthn) trong tab mạng của công cụ dành cho nhà phát triển của Safari. Tuy nhiên, lệnh gọi API này đã trả về mã trạng thái HTTP 403, cho thấy rằng tính năng này dường như chưa được triển khai đầy đủ.
Trái ngược với tài khoản Revolut Business, cài đặt tài khoản trong Revolut Personal có một mục dành cho passkeys:
Popup quảng bá passkey sau đây được hiển thị lần đầu tiên bạn đăng nhập (hoặc sau khi xóa cookie / ở chế độ Duyệt web riêng tư):
Các ứng dụng gốc iOS và Android cho Revolut Personal chưa hỗ trợ passkeys. Tuy nhiên, ứng dụng iOS cũng như ứng dụng Android (xem ảnh chụp màn hình bên dưới) có một mục cài đặt bảo mật cho passkeys:
Bên dưới, chúng tôi sẽ đi sâu hơn vào một số khía cạnh kỹ thuật.
Chúng tôi đã xem xét các chi tiết triển khai kỹ thuật. Về cơ bản, mỗi khi trang đăng nhập được tải, một client_id sẽ được gửi đến backend, sau đó backend sẽ trả về các tùy chọn xác thực khác nhau dựa trên loại tài khoản:
Điều thú vị là, tùy chọn passkey cho tài khoản Revolut Personal đã được chuẩn bị nhưng chưa được kích hoạt (xem ảnh chụp màn hình bên dưới), cho thấy rằng việc triển khai có thể sắp xảy ra và được thực hiện nhanh chóng, cho phép có một nút "Tiếp tục với passkey" cho cả tài khoản Cá nhân.
Quyết định hiển thị các tùy chọn đăng nhập dựa trên client_id. Ví dụ: https://sso.revolut.com/signin?client_id=o3r08ao16zvdlf2y5fde Để thử nghiệm, chúng tôi đã thay đổi client_id thành một giá trị ngẫu nhiên, điều này đã làm hiển thị tất cả các tùy chọn đăng nhập (bao gồm khả năng chuyển đổi giữa số điện thoại và email làm định danh đăng nhập) trên Windows 11 với Chrome.
Trong quy trình đăng nhập, chúng tôi đã phân tích PublicKeyCredentialRequestOptions. Đáng chú ý, allowCredentials không được thiết lập, trong khi ID Bên Tin Cậy (relying party ID) được đặt là "sso.revolut.com." Việc đặt userVerification thành 'preferred' là một lựa chọn thận trọng từ góc độ bảo mật.
publicKeyCredentialRequestOptions.json{ "allowCredentials": [], "challenge": "WHAxZnJDaDB1VnNXMmlOQW1hVndqdTYzSzF3emR3b3gtRFRCWHVxRjJYRQ", "rpId": "sso.revolut.com", "userVerification": "preferred" }
Chúng tôi cũng đã phân tích cách thức triển khai trên các ứng dụng gốc iOS và Android có thể trông như thế nào và do đó đã sử dụng ID Bên Tin Cậy (relying party ID) của sso.revolut.com và nối thêm các đường dẫn đến tệp assetlinks.json (Android) và apple-app-site-association (iOS) để xem các tệp này có thể đã chứa thông tin gì về việc triển khai passkey.
Việc cố gắng truy cập https://sso.revolut.com/.well-known/assetlinks.json dẫn đến lỗi 404 từ nginx, cho thấy việc sử dụng reverse proxy để quản lý tệp. Bằng cách sử dụng tên miền https://app.revolut.com, chúng tôi đã tìm thấy tệp assetlinks.json tại https://app.revolut.com/.well-known/assetlinks.json, tệp này cung cấp thông tin sâu sắc cho Revolut Personal:
assetlinks.json[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.revolut", "sha256_cert_fingerprints": [ "9C:9B:E0:71:35:E9:72:78:02:82:C2:E5:D2:7D:A0:6E:CB:8E:E3:AD:FC:75:30:39:17:DD:F6:6D:6F:AA:EF:A4", "11:F2:5B:D6:30:60:CE:B4:EF:EC:48:7C:C8:1F:6D:3D:D0:3A:75:C3:E9:D2:C5:32:3D:69:55:9D:C1:7F:6A:23" ] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.revolut.test", "sha256_cert_fingerprints": [ "90:EC:5D:75:11:4E:67:B7:F1:3F:C0:D0:57:85:9B:78:0D:A0:BA:49:E2:22:4C:60:42:7E:D2:EA:00:84:D1:B7" ] } } ]
Qua https://well-known.dev, chúng tôi cũng đã phát hiện ra tệp liên kết cho Revolut Business tại https://business.revolut.com/.well-known/assetlinks.json:
assetlinks.json[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.business", "sha256_cert_fingerprints": [ "9C:9B:E0:71:35:E9:72:78:02:82:C2:E5:D2:7D:A0:6E:CB:8E:E3:AD:FC:75:30:39:17:DD:F6:6D:6F:AA:EF:A4", "9F:07:80:54:0F:3A:C9:6F:D7:26:02:8A:37:C5:CD:48:DB:A3:67:EE:2D:93:B3:9D:DE:51:BC:F2:2E:7F:B1:88", "F8:F5:95:3A:C3:85:DB:0D:85:C3:56:E9:9B:37:BD:CA:4D:EE:B0:D2:52:C6:2A:36:4F:BA:C8:3B:C6:AF:3A:C2" ] } } ]
Vì cả tệp assetlinks.json cho Revolut Personal và tệp cho Revolut Business đều không nằm trên đường dẫn được chỉ định bởi ID Bên Tin Cậy (relying party) để liên kết ứng dụng Android gốc với ứng dụng web, thật thú vị khi xem xét những thay đổi nào là cần thiết để cho phép passkeys hoạt động trên cả ứng dụng web và ứng dụng Android gốc.
Tệp apple-app-site-association cho Revolut Personal có thể truy cập tại https://revolut.com/.well-known/apple-app-site-association, chưa có chi tiết nào được thêm vào liên quan đến thông tin xác thực web (web credentials):
apple-app-site-association{ "applinks": { "apps": [], "details": [ { "appID": "QUZEZSEARC.com.revolut.revolut", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.test", "paths": ["/app/*"] } ] } }
Ngược lại, tệp apple-app-site-association của Revolut Business chứa thông tin toàn diện hơn, đáng chú ý là liên quan đến thông tin xác thực web. Điều này cho thấy ứng dụng iOS QUZEZSEARC.com.revolut.business được cấu hình để chia sẻ thông tin xác thực với ứng dụng web Revolut Business. Tệp này có thể truy cập tại https://business.revolut.com/.well-known/apple-app-site-association.
{ "applinks": { "apps": [], "details": [ { "appID": "QUZEZSEARC.com.revolut.business", "paths": [ "/", "/accept-payments/in-person", "/accept-payments/online-requests", "/accept-payments/web-integrations", "/accounts", "/accounts/connect-external", "/accounts/connect-external/*", "/accounts/new", "/accounts/transactions", "/account-transactions/*", "/action/confirm", "/add-card-to-wallet", "/advances", "/advances/manual-repayment", "/app/*", "/application", "/approvals/requests", "/article/*", "/articles/*", "/bug-report", "/card-reader/order", "/cards", "/cards/*", "/cards/*/sca-counters-exceed", "/cards/*/sca-counters-warn", "/cards/*/security", "/cards/*/settings", "/cards/*/transactions", "/cashback", "/catalogue/manage", "/challenges/*", "/consumer-tickets/*", "/crypto", "/e-commerce", "/exchange", "/expense-documents/*", "/expenses", "/expenses/*", "/faq", "/faq/*", "/favourites", "/form", "/form/*", "/help-centre", "/help-centre/topic/*", "/hub/integrations", "/insurance", "/invoices", "/invoices/*", "/marketplace", "/merchant", "/merchant/*", "/new-card-acceptance-pricing", "/offboarding", "/open-onboarding-application-next-step", "/orders", "/pay-in-store/order/*", "/payments", "/payments/scheduled", "/payments/transfers", "/plan/subscriptions", "/points", "/pricing-plans", "/qr-code-sign-in/*", "/referrals", "/referrals/invite-contacts", "/referrals/invitee-details/*", "/request-info", "/request-info/merchant", "/requests", "/requests/request", "/reset-password", "/rewards", "/sales/revolut-me", "/statements", "/savings", "/send", "/settings/accounts-and-documents", "/settings/business-profile", "/settings/manage-devices", "/settings/merchant-profile", "/settings/merchant-profile/branding", "/settings/notifications", "/settings/personal-profile", "/settings/trusted-merchants", "/settings/vat-number", "/signup/invite", "/stories/*", "/story/*", "/subscriptions", "/team", "/team/approvals", "/team/member/add", "/team/roles", "/tip/settings", "/topup", "/transactions", "/transactions/*/add-expense-info", "/transactions/*/add-info-flow", "/transactions/*/chargeback-status", "/transfers", "/treasury", "/upgrade", "/vouchers" ] } ] }, "webcredentials": { "apps": ["QUZEZSEARC.com.revolut.business"] } }
Cũng giống như với Android, vẫn còn là một điều thú vị về cách thức chia sẻ passkeys đa nền tảng giữa ứng dụng gốc và ứng dụng web có thể được triển khai, vì ID Bên Tin Cậy (relying party) cho ứng dụng web (sso.revolut.com) không có các tệp liên kết ở các vị trí dự kiến.
Tóm lại, việc Revolut triển khai passkey là một bước tiến quan trọng trong việc cách mạng hóa xác thực người dùng trong lĩnh vực ngân hàng. Bằng cách áp dụng passkeys, Revolut không chỉ cải thiện bảo mật bằng cách loại bỏ mật khẩu truyền thống mà còn nâng cao đáng kể trải nghiệm người dùng thông qua quy trình đăng nhập đơn giản hơn. Mặc dù gặp phải những thách thức trong giai đoạn triển khai ban đầu, bao gồm sự không nhất quán trên các thiết bị và việc thiếu hỗ trợ ứng dụng gốc, những nỗ lực của Revolut đã nhấn mạnh cam kết đối với sự đổi mới kỹ thuật số và thiết kế lấy người dùng làm trung tâm.
Phân tích kỹ thuật cho thấy rằng mặc dù nền tảng cho việc tích hợp passkey liền mạch đã được đặt ra, vẫn còn những lĩnh vực cần được cải thiện. Tăng cường giao tiếp, đảm bảo tính nhất quán trên các nền tảng, và mở rộng hỗ trợ để bao gồm các ứng dụng di động gốc là những bước đi quan trọng tiếp theo. Việc giải quyết những lĩnh vực này không chỉ hoàn thiện việc triển khai của Revolut mà còn đặt ra một tiêu chuẩn cho ngành, khuyến khích các tổ chức tài chính khác sớm áp dụng passkeys (xem thêm bài blog của chúng tôi về sự tuân thủ PSD2 của passkeys).
Next Step: Ready to implement passkeys at your bank? Our 80-page Banking Passkeys Report is available. Book a 15-minute briefing and get the report for free.
Get the Report
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents