Từ NFC tag đến EMV & CCCD — đọc thẳng từ mã nguồn. Một cuốn sách from-the-source của loạt RumitX: hiểu sâu công nghệ đứng sau thẻ ngân hàng, thẻ chạm (contactless) và con chip CCCD (Căn cước công dân) — bằng cách đọc mã nguồn Java thật, có thể chạy, trích dẫn chính xác theo
file:line.
Cuốn sách viết bằng tiếng Việt, giữ nguyên keyword tiếng Anh (APDU, TLV, ISO 7816, EMV,
SW1/SW2, BAC/PACE, NDEF…) — vì đó là ngôn ngữ của spec, dịch ra chỉ làm bạn khó tra cứu hơn.
Cho kỹ sư đã biết lập trình (Java/Kotlin là lợi thế) và muốn hiểu bản chất một chiếc thẻ khi nó
được "quẹt": chuyện gì xảy ra giữa reader và card, tại sao có APDU, TLV, AID, AFL, vì sao thẻ
ngân hàng và chip CCCD lại "cùng họ" dù dùng cho hai việc khác nhau.
Nếu bạn từng làm việc với POS Android (đọc thẻ EMV/Napas, quét QR) hay với luồng đọc CCCD, các khái
niệm ở đây sẽ nối thẳng vào công việc thật của bạn — sách có vài callout 🔌 bắc cầu tới đó, nhưng
không ép: trọng tâm là học công nghệ cho vững.
Không cần phần cứng đặc biệt: hầu hết lab chạy được với một điện thoại Android có NFC, hoặc chỉ cần đọc-hiểu mã nguồn trong các clone được pin.
Không có một repo "chuẩn" nào phủ hết công nghệ thẻ, nên cuốn sách neo vào nhiều repo Java nhỏ, dễ
đọc. Mọi trích dẫn file:line đều verify được ở đúng SHA dưới đây (đọc kèm trong learning/):
| Vai trò | Repo | Pin (tag @ SHA) |
|---|---|---|
| Spine chính — EMV over NFC, ISO 7816 APDU, TLV, EMV tags, transaction core | devnied/EMV-NFC-Paycard-Enrollment |
parent-3.1.0 @ f636879f193a |
| e-ID (Android usage) — đọc chip ICAO-9303 trên Android | tananaev/passport-reader |
v3.4 @ a52ff1a0c46e |
| e-ID (internals) — BAC/PACE, Secure Messaging, DG/SOD | E3V3A/JMRTD |
master @ 594420577615 |
| QR — EMVCo Merchant-Presented-Mode (= VietQR / Napas QR) | mvallim/emv-qrcode |
v0.1.5 @ fdfa8d0e9126 |
⚠️ Nói thẳng về phần đóng: kernel của Napas (switch nội địa) và applet trên chip CCCD là closed-source, do nhà nước/nhà phát hành kiểm soát. Cuốn sách dạy phần chuẩn mở tương đương: EMV cho thanh toán, vàICAO 9303(MRTD) cho chip CCCD — về mặt kỹ thuật đây là mô tả đúng.
- Vì sao quan trọng — vấn đề mà tầng này giải quyết.
- Mental model + sơ đồ ASCII — một bức tranh để giữ trong đầu.
- Đọc mã nguồn có dẫn đường — trích dẫn
file:linechính xác vào clone. - Lab — lệnh/thao tác cụ thể bạn tự chạy, có kết quả kỳ vọng, ghi lại vào
labs/labN-*.md. - Checkpoint — 4–6 câu hỏi tự kiểm; câu nào lung lay thì quay lại đọc mục tương ứng.
- Next — liên kết sang chương kế (đôi khi kèm callout
🔌nối với công việc thật của bạn).
Độ sâu dồn vào chương 03 (flagship) — lõi TLV + EMV tag + luồng giao dịch. Các chương khác xoay
quanh nó.
| # | Chương | Tầng |
|---|---|---|
| 00 | Environment & Java / NFC Refresher | Foundation |
| 01 | Mental Model & the Card Stack | Foundation |
| 02 | The APDU Lifecycle & ISO 7816-4 | Foundation |
| 03 | ★ TLV, EMV Tags & the Transaction Core | Flagship |
| 04 | The Card & NFC Zoo | Core |
| 05 | Payment Schemes: EMV & Napas | Core |
| 06 | QR & Tokenization | Application |
| 07 | e-ID: the Vietnamese CCCD Chip | Application |
| 08 | Capstone & Staying Current | Mastery |
Nhịp gợi ý: 1 chương / buổi (~60–90 phút), riêng chương 03 nên chia 2 buổi. Cả cuốn ~2 tuần nếu làm đủ lab.
- 00 — Môi trường sẵn sàng: đã clone + pin 4 repo, đọc được UID một NFC tag.
- 01 — Vẽ lại được card stack và trace một lần chạm thẻ từ đầu đến cuối.
- 02 — Giải thích được một
APDU(CLA INS P1 P2 Lc Data Le) vàSW1/SW2; gửi đượcSELECTthô. - 03 — ★ Đọc được BER-
TLV, tra được EMV tag, mô tả đượcSELECT PPSE → GPO → AFL → READ RECORD. - 04 — Phân biệt được NFC Type 1–4, MIFARE, và vị trí của thẻ ngân hàng & CCCD.
- 05 — Giải thích được EMV kernel, contactless, và Napas nằm ở đâu trong bức tranh.
- 06 — Decode được một chuỗi VietQR (EMVCo MPM).
- 07 — Mô tả được
BAC/PACE, Secure Messaging,DG1/DG2/SODcủa chip CCCD. - 08 — Đọc được một spec/PR thật không cần trợ giúp; biết cách re-pin.
card-book/
├── README.md # trang này
├── 00..08-*.md # 9 chương
├── labs/ # ghi chú lab + một artifact nhỏ chạy được
├── reference/glossary.md # bảng thuật ngữ + "Key files" (chỉ mục nguồn multi-repo)
├── diagrams/ # (placeholder)
└── site_src/build_site.py # bộ dựng site tĩnh của RumitX
Dựng site đọc offline (11 trang + handbook.html một-file):
python3 site_src/build_site.pyA RumitX publication · rumitx.com · từ NFC tag đến EMV & CCCD.