Scaling Verify with Wallet for Identity Verification at Uber
Bài tóm tắt Uber 2026 3. Quy mô lớn Độ khó: Trung bình
Uber · 2026 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Nền tảng xác minh danh tính dùng chung cho các app của Uber (Uber, Uber Eats, Postmates) đã có quét giấy tờ và chụp selfie. Ví điện thoại (Apple Wallet) giờ chứa giấy tờ số (mDoc, như bằng lái mDL) có nguồn gốc do chính quyền cấp; API Verify with Wallet cho app nhận dữ liệu đó, chỉ đúng phần được yêu cầu, và cả cơ quan cấp lẫn Apple không thấy người dùng chia sẻ ở đâu.
- Thách thức: mỗi use case cần dữ liệu khác nhau (onboard tài xế, đặt hàng có giới hạn tuổi, thuê xe). App khai một file Entitlements chứa tập hợp mọi trường mà các use case của nó cần, và mỗi trường phải được Apple duyệt riêng cho mục đích của nó. Nền tảng phải phục vụ được mọi tổ hợp trường đã duyệt, nhưng một use case không bao giờ được vượt phạm vi đã duyệt của nó. Thêm: lớp ánh xạ không phụ thuộc nền tảng, kiểm mật mã theo ISO/IEC 18013-5, theo dõi chứng chỉ gốc khi cơ quan cấp xoay vòng.
Thay đổi chính
- Thu hẹp phạm vi ở server: app giữ tập quyền rộng; Identity Verification Service điều phối mỗi yêu cầu bằng cấu hình phía server: mỗi use case một danh sách trường và
IntentToStore(chỉ xác minh một lần hay lưu lâu dài). Từ iOS 26.2, thông điệp giải thích cho người dùng tuỳ chỉnh được theo use case. Mọi response được kiểm lại xem trường trả về có đúng cấu hình của use case đang chạy. - Lớp ánh xạ từ mô hình danh tính nội bộ sang đối tượng PassKit, để logic không gắn vào API của một hãng và sẵn sàng cho tích hợp khác theo cùng chuẩn.
- Giải mã và kiểm: response mã hoá bằng HPKE (RFC 9180) với chứng chỉ truy cập của app, server giải mã payload CBOR. Session transcript gắn response với đúng giao dịch (nonce, định danh client, hash khoá công khai) để chống replay. Ba bước: kiểm MSO (Mobile Security Object: dữ liệu không bị sửa từ lúc cấp, còn hạn); device binding (chữ ký thiết bị khớp khoá công khai trong MSO, tức là đúng thiết bị gốc); chuỗi chứng chỉ tới chứng chỉ gốc IACA của cơ quan cấp.
- Kho chứng chỉ gốc IACA lấy từ cổng của từng bang (DMV) và danh sách VICAL của AAMVA; cho phép nhiều chứng chỉ còn hiệu lực mỗi khu vực để giấy tờ ký bằng khoá cũ vẫn hợp lệ trong khi khoá mới đã được nhận; cập nhật và thu hồi cùng đối tác.
- Hướng tiếp: thêm loại giấy tờ (ISO/IEC 23220-2), hỗ trợ ngoài Apple theo cùng chuẩn mở.
Vì sao
- Làm một nền tảng thay vì nhiều tích hợp lẻ cho từng app; quyền rộng ở app là bắt buộc về kỹ thuật, nên nguyên tắc tối thiểu phải được thực thi ở server.
Bài học cho SWE
- Khi lớp dưới chỉ cho cấp quyền theo app, thực thi phạm vi theo use case ở server và kiểm lại response.
- Ràng buộc response với giao dịch (nonce + định danh) để không dùng lại được.
- Xoay vòng khoá gốc là sự kiện thường lệ: thiết kế cho nhiều khoá cùng hợp lệ.
- Tách mô hình nội bộ khỏi API của nhà cung cấp bằng lớp ánh xạ.
Liên quan
- Xác thực và phân quyền (authn/authz)
- Cùng công ty: Uber 2023 · Uber 2026
- Cùng bài toán: Mozilla 2018 (khoá không rời máy)
#Identity verification#Apple Verify with Wallet#mDL#mDoc#entitlements#per-use-case scoping#server-side orchestration#ISO/IEC 18013-5#HPKE#CBOR#session transcript#MSO#device binding#IACA root certificates
Được nhắc tới trong
Chủ đề (1)
Công ty (1)