Tích hợp eKYC: Đọc chip CCCD bằng NFC, Liveness Detection và OCR giấy tờ
Hướng dẫn kiến trúc eKYC với NFC đọc chip căn cước, OCR giấy tờ, face matching, liveness/PAD, kiểm tra tính toàn vẹn, bảo vệ dữ liệu sinh trắc học và vận hành production.
ShanverseUpdated 12 min read— viewsLoading views
eKYC
Computer Vision
Biometrics
eKYC là một chuỗi bằng chứng
Electronic Know Your Customer thường gồm bốn lớp:
Evidence capture: chụp giấy tờ hoặc đọc chip không tiếp xúc.
Evidence validation: kiểm tra chất lượng, cấu trúc, tính toàn vẹn và nguồn phát hành.
Identity verification: so sánh khuôn mặt sống với ảnh chân dung trên giấy tờ/chip.
Risk decision: kết hợp kết quả, thiết bị, mạng, lịch sử và policy để approve, review hoặc reject.
OCR, NFC và liveness giải quyết những vấn đề khác nhau. OCR trích xuất chữ; NFC đọc dữ liệu chip; liveness/PAD chống ảnh in, màn hình phát lại, mặt nạ hoặc nội dung tổng hợp. Không thành phần nào tự đủ để kết luận danh tính.
Kiến trúc tham khảo
Mermaid
Loading diagram…
Comments
Mobile app chỉ thu thập bằng chứng và hiển thị hướng dẫn. Quyết định cuối cùng, policy, threshold và audit nên được thực hiện hoặc xác nhận ở backend.
Luồng end-to-end
Mermaid
Loading diagram…
Session phải có thời hạn ngắn, nonce, state machine và ràng buộc với user/device. Không cho client tự gửi verified: true hoặc điểm số cuối cùng.
State machine của phiên eKYC
Không phải use case nào cũng bắt buộc chip. Policy có thể phân tầng:
Low assurance: OCR + checks cơ bản.
Medium assurance: document validation + liveness + face match.
High assurance: chip authenticity + liveness/PAD + face match + risk controls và review khi cần.
Tên và mức assurance phải tuân thủ quy định của tổ chức/ngành áp dụng, không tự gắn nhãn pháp lý.
Bước 1: Capture giấy tờ cho OCR
Một pipeline tốt bắt đầu bằng quality gate, không phải OCR ngay:
Phát hiện đủ bốn góc giấy tờ.
Kiểm tra blur, glare, shadow, over/under-exposure.
Kiểm tra document chiếm đủ diện tích khung hình.
Perspective correction, crop và orientation.
Phát hiện photocopy, screenshot hoặc màn hình phát lại khi có thể.
Yêu cầu chụp lại nếu chất lượng dưới ngưỡng.
Mermaid
Loading diagram…
Hướng dẫn UX nên cụ thể: “Di chuyển gần hơn”, “Giữ yên”, “Tránh phản chiếu”, thay vì lỗi chung chung.
Bước 2: OCR và chuẩn hóa trường dữ liệu
OCR raw text chưa phải identity data đáng tin cậy. Sau nhận dạng cần:
Phân loại loại giấy tờ và phiên bản/mẫu.
Trích xuất field theo layout: số định danh, họ tên, ngày sinh, ngày hết hạn, địa chỉ.
Chuẩn hóa Unicode, khoảng trắng, chữ hoa/thường và định dạng ngày.
Giữ cả raw value, normalized value và confidence.
Kiểm format, check digit/checksum nếu loại giấy tờ có quy định.
Cross-check dữ liệu giữa mặt trước, mặt sau, mã máy đọc/QR/chip khi hợp lệ.
Không tự sửa field confidence thấp mà không lưu dấu vết.
Cần policy cho tên tiếng Việt, dấu, tên dài, địa danh thay đổi và dữ liệu thiếu. Fuzzy matching không được biến hai danh tính khác nhau thành một chỉ vì chuỗi gần giống.
Bước 3: Đọc chip căn cước qua NFC
Quy trình ở mức kiến trúc:
Kiểm tra thiết bị hỗ trợ NFC và quyền sử dụng.
Giải thích mục đích, xin consent và mở phiên ngắn hạn.
Hướng dẫn đặt thẻ đúng vị trí anten.
Thiết lập kết nối với chip theo protocol được cơ quan/nhà cung cấp chính thức hỗ trợ.
Thực hiện access control và secure messaging theo specification.
Đọc đúng tập dữ liệu được phép, không quét toàn bộ.
Xác minh tính toàn vẹn/chữ ký và certificate chain bằng trust material hợp lệ.
Nếu profile hỗ trợ, xác thực chip để giảm nguy cơ chip clone.
Cross-check dữ liệu chip với OCR và session.
Xóa key tạm, buffer và dữ liệu không cần thiết.
Vì sao đọc được dữ liệu chưa đủ?
NFC communication thành công chỉ chứng minh điện thoại nói chuyện được với một chip. Hệ thống còn phải phân biệt:
Dữ liệu đúng cấu trúc nhưng bị thay đổi.
Chữ ký đúng nhưng certificate không thuộc trust store hợp lệ.
Certificate hết hạn hoặc bị thu hồi theo policy.
Dữ liệu được sao chép sang chip khác.
Session cũ bị replay.
Các khái niệm thường gặp ở tài liệu điện tử không tiếp xúc gồm access control, secure messaging, passive authentication và chip authentication. Cơ chế chính xác phụ thuộc profile định danh. Không bỏ bước xác minh chữ ký chỉ vì ảnh và text “trông hợp lý”.
Thiết kế NFC UX thực tế
Hiển thị animation vị trí anten cho từng nhóm thiết bị.
Cho phép rung/âm thanh khi tag được phát hiện.
Giữ màn hình sáng và ngăn app chuyển background giữa phiên.
Retry có giới hạn; phân biệt “mất kết nối”, “thẻ di chuyển” và “không hỗ trợ”.
Không ghi log APDU/raw personal data trong production.
Có fallback/manual review khi NFC lỗi hoặc thiết bị không hỗ trợ, tùy policy.
NFC read có thể mất vài giây. Cần progress theo bước nhưng không hiển thị dữ liệu nhạy cảm quá mức trên màn hình.
Bước 4: Liveness Detection và Presentation Attack Detection
Liveness là một phần của Presentation Attack Detection — PAD. Threat model gồm:
Ảnh in.
Ảnh trên điện thoại/màn hình.
Video replay.
Mặt nạ 2D/3D.
Virtual camera hoặc camera injection.
Deepfake/face swap.
Session relay giữa hai thiết bị.
Active liveness
Yêu cầu hành động ngẫu nhiên như quay đầu, nhìn theo điểm, đọc số hoặc thực hiện cử chỉ. Ưu điểm là có challenge; nhược điểm là UX lâu, accessibility kém và vẫn có thể bị automation/deepfake nâng cao tấn công.
Passive liveness
Phân tích một hoặc vài frame/video ngắn mà không yêu cầu hành động rõ ràng. UX tốt hơn nhưng phụ thuộc mạnh vào model, camera và coverage của dữ liệu tấn công.
Hệ thống rủi ro cao có thể kết hợp passive signals, challenge ngẫu nhiên, device integrity và server-generated nonce.
Session binding chống injection và replay
Một liveness video đẹp vẫn vô nghĩa nếu attacker upload file có sẵn thay vì camera live.
Backend phát session_id, nonce và challenge ngắn hạn.
App gắn challenge vào capture metadata/bằng chứng ký.
Chỉ nhận media trong time window.
Phát hiện emulator, root/jailbreak, hook và virtual camera như risk signals.
Dùng device/app attestation khi phù hợp, nhưng không xem nó là tuyệt đối.
Hash evidence và ràng buộc document, NFC, liveness vào cùng session.
Chặn reuse một evidence trên nhiều tài khoản bằng privacy-preserving signals và policy hợp pháp.
Face detection khác face matching
Face detection: có khuôn mặt trong frame hay không.
Quality: góc mặt, ánh sáng, occlusion, độ phân giải.
PAD/liveness: đây có phải presentation thật trước camera không.
Face matching: khuôn mặt live có tương đồng với ảnh portrait tham chiếu không.
Không dùng một score duy nhất cho tất cả. Pipeline nên trả các kết quả độc lập và reason codes.
Threshold phải được hiệu chỉnh trên population, thiết bị và điều kiện thực tế. Theo dõi false match, false non-match và hiệu năng PAD; không sao chép threshold của vendor khác.
Cross-check bằng chứng
Decision engine nên so sánh:
OCR fields với chip fields.
Portrait trên chip/giấy tờ với live face.
Số định danh với hồ sơ hiện có và duplicate account rules.
Ngày sinh/hết hạn với business policy.
Device, IP, velocity và lịch sử thất bại.
Document template và dấu hiệu chỉnh sửa.
Mismatch không luôn đồng nghĩa gian lận: OCR có thể nhầm, ảnh chip có thể cũ, khuôn mặt thay đổi hoặc giấy tờ hư. Các vùng xám cần manual review thay vì reject cứng.
Risk-based decision
Ví dụ chỉ minh họa kiến trúc. Production phải có versioned policy, explainable reason, maker-checker cho override và đánh giá pháp lý.
Bảo vệ PII và dữ liệu sinh trắc học
Dữ liệu eKYC có mức nhạy cảm cao:
Thu thập tối thiểu theo mục đích đã thông báo.
Tách raw images/video khỏi hồ sơ nghiệp vụ.
Encrypt in transit và at rest; key management tách biệt.
Access control theo service và vai trò; không cho support xem mặc định.
Signed URL ngắn hạn, không public bucket.
Không gửi PII vào log, analytics, crash report hoặc prompt AI công cộng.
Có retention và deletion policy cho raw capture, template, audit và kết quả.
Vendor không được tái sử dụng dữ liệu để train nếu chưa có căn cứ/đồng ý phù hợp.
Ghi audit mọi lần truy cập, export và manual override.
Biometric template không phải mật khẩu có thể đổi dễ dàng. Thiết kế privacy và breach response ngay từ đầu.
API contract gợi ý
Upload idempotent theo artifact ID/hash.
Validate content type từ bytes, không tin filename.
Malware scan và image decoder sandbox.
Rate limit theo account, device, IP và session.
Không trả raw vendor score không cần thiết cho client.
Callback từ vendor phải xác minh signature và xử lý idempotent.
Observability nhưng không lộ dữ liệu
Theo dõi:
Completion/drop-off theo bước và loại thiết bị.
NFC availability, read success và thời gian đọc.
OCR field confidence và recapture rate.
PAD attack presentation accept/reject metrics.
Face match review rate và outcome của reviewer.
Vendor latency/error, retry và callback lag.
Decision distribution theo policy version.
False reject complaint và fraud confirmed rate.
Dashboard chỉ dùng aggregate hoặc pseudonymous identifiers. Không đưa ảnh khuôn mặt vào tracing.
Manual review
Reviewer cần:
Chỉ thấy dữ liệu tối thiểu cho nhiệm vụ.
Watermark, chống download và session timeout.
So sánh evidence theo layout nhất quán.
Reason codes chuẩn hóa.
Maker-checker cho case rủi ro cao.
Không được sửa raw OCR/chip evidence; correction là record mới có audit.
Quality sampling và inter-reviewer agreement.
Manual review không phải “lối tắt bỏ qua mọi kiểm tra”; nó là một control có đào tạo, giám sát và quyền hạn giới hạn.
Test matrix production
Ảnh mờ, glare, mất góc và độ phân giải thấp.
Font/Unicode tiếng Việt, tên dài và địa chỉ nhiều dòng.
OCR đúng nhưng chip mismatch.
NFC tag mất kết nối giữa chừng.
Dữ liệu chip bị sửa hoặc certificate không tin cậy.
Ảnh in, màn hình, video replay và virtual camera.
Deepfake/face swap trên tập đánh giá được phép.
Người thật có kính, khẩu trang, ánh sáng yếu hoặc thay đổi ngoại hình.
Session replay, upload cũ và hai account dùng cùng evidence.
Callback vendor trùng, chậm và sai thứ tự.
Policy/threshold version rollback.
PII không xuất hiện trong log, analytics và backup ngoài retention.
Accessibility và fallback/manual review.
Anti-pattern nguy hiểm
OCR ra đúng text thì auto-approve.
Đọc được NFC nhưng không verify chữ ký/trust chain.
So selfie với ảnh OCR chất lượng thấp trong khi có portrait chip tốt hơn.
Chỉ yêu cầu chớp mắt như bằng chứng liveness duy nhất.
Cho client quyết định pass/fail.
Lưu ảnh CCCD và video vô thời hạn.
Ghi raw APDU, token hoặc PII vào log.
Dùng threshold vendor mặc định mà không đo false accept/reject.
Auto-reject mọi mismatch, không có manual review.
Chọn vendor chỉ dựa vào demo đẹp, không có PAD/conformance evaluation.
Checklist triển khai
Threat model và assurance level được định nghĩa.
OCR có quality gate, confidence và field validation.
NFC dùng SDK/spec/trust material được phép.
Chip data được xác minh integrity/signature, không chỉ parse.
Liveness/PAD được đánh giá theo ISO/IEC 30107-3:2023 hoặc profile áp dụng.
Live capture, document và chip evidence ràng buộc cùng session.
Face threshold được calibrate và theo dõi bias/performance.
Decision policy có version, reason và manual-review band.
PII/biometric encryption, retention, deletion và audit hoạt động.
Có fallback an toàn khi NFC hoặc automation thất bại.
Kết luận
eKYC tốt là một hệ thống identity proofing, không phải ba SDK ghép lại. OCR hỗ trợ nhập liệu, chip cung cấp bằng chứng điện tử mạnh hơn khi được xác thực đúng, còn liveness/PAD giúp chống presentation attack.
Quyết định đáng tin cậy phải ràng buộc tất cả bằng chứng vào cùng phiên, kiểm tra chéo độc lập, bảo vệ dữ liệu sinh trắc học và chuyển vùng không chắc chắn sang manual review có kiểm soát.
Hướng dẫn xây hệ thống điểm danh bằng QR động hoặc nhận diện khuôn mặt, tập trung chống gian lận, liveness, quyền riêng tư, audit và triển khai an toàn.
Hướng dẫn xây trợ lý học tập AI 24/7 với RAG, vector database, semantic search, citation verification, chống hallucination, bảo mật tài liệu và đánh giá chất lượng.