ISO/IEC 14443 Type A 的 SAK (Select Acknowledge) 說明
SAK 是什麼?
Section titled “SAK 是什麼?”SAK(Select Acknowledge)是 ISO/IEC 14443 Type A 防碰撞(Anti-collision)流程中的回應值。
當讀卡機完成一個 SELECT 指令後,卡片會回傳一個 1 Byte 的 SAK,用來告知讀卡機:
- UID 是否還有下一個 Cascade Level。
- 是否支援 ISO/IEC 14443-4(ISO-DEP)。
- 其他由標準或廠商定義的能力位元。
SAK 的目的不是辨識卡片型號。
SAK 的位元定義
Section titled “SAK 的位元定義”SAK 為 1 Byte:
Bit: 7 6 5 4 3 2 1 0其中最重要的是:
| Bit | Mask | 意義 |
|---|---|---|
| Bit 2 | 0x04 | Cascade Bit,表示 UID 還有下一層 |
| Bit 5 | 0x20 | 支援 ISO/IEC 14443-4(ISO-DEP) |
Cascade Bit(0x04)
Section titled “Cascade Bit(0x04)”如果:
SAK & 0x04 != 0表示:
UID 尚未完整,還有下一個 Cascade Level。
例如:
CL1SAK = 04代表:
還有 CL2若第二層完成後:
SAK = 20則表示 UID 已完整。
ISO14443-4 Bit(0x20)
Section titled “ISO14443-4 Bit(0x20)”如果:
SAK & 0x20 != 0表示:
卡片支援 ISO/IEC 14443-4(ISO-DEP)。
通常代表:
- DESFire
- JCOP
- CPU Card
- EMV Card
- Type 4 Tag
常見 SAK
Section titled “常見 SAK”| SAK | 常見卡片 |
|---|---|
0x00 | Ultralight、NTAG |
0x08 | MIFARE Classic(以及許多 Clone Card) |
0x20 | DESFire、JCOP、CPU Card |
0x28 | ISO14443-4 + 其他能力 |
0x04 | UID 尚未完成(不是最終 SAK) |
注意:SAK 並不能唯一辨識卡片種類。
相同的 SAK 可能出現在不同廠商或不同產品上,因此判斷卡片類型通常需要搭配 ATQA、UID 長度、SAK、ATS 等資訊。
7 Bytes UID 的 SAK
Section titled “7 Bytes UID 的 SAK”7 Bytes UID 一定會經過 兩個 Cascade Level。
流程如下:
REQA ↓ATQA
Anti-collision CL1 ↓SELECT CL1 ↓SAK = 04
Anti-collision CL2 ↓SELECT CL2 ↓SAK = 最終 SAK因此:
- 第一個 SAK 固定為
0x04 - 第二個 SAK 才是真正代表卡片能力的 最終 SAK
常見的最終 SAK
Section titled “常見的最終 SAK”| CL1 SAK | CL2 SAK | 常見卡片 |
|---|---|---|
0x04 | 0x00 | NTAG、Ultralight |
0x04 | 0x20 | DESFire、JCOP、CPU Card |
0x04 | 0x08 | 某些 Memory Card、Clone Card |
0x04 | 0x28 | 支援 ISO14443-4 的部分卡片 |
NTAG213
Section titled “NTAG213”UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 00表示:
- UID 已完成
- 不支援 ISO14443-4
DESFire EV1
Section titled “DESFire EV1”UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 20表示:
- UID 已完成
- 支援 ISO14443-4
某些 Clone Card
Section titled “某些 Clone Card”UID = 7 Bytes
CL1 SAK = 04CL2 SAK = 08表示:
- UID 已完成
- 不支援 ISO14443-4
10 Bytes UID
Section titled “10 Bytes UID”10 Bytes UID 共有三個 Cascade Level:
CL1 SAK = 04CL2 SAK = 04CL3 SAK = 最終 SAK因此:
- 4 Bytes UID:1 個 SAK
- 7 Bytes UID:2 個 SAK
- 10 Bytes UID:3 個 SAK
- SAK(Select Acknowledge)是卡片在完成
SELECT後回傳的 1 Byte 回應。 0x04(Bit 2)表示 UID 尚未完成,還有下一個 Cascade Level。0x20(Bit 5)表示支援 ISO/IEC 14443-4(ISO-DEP)。- SAK 不是卡片型號,不能單獨用來辨識卡片。
- 判斷卡片類型通常需要搭配 ATQA、UID 長度、SAK、ATS 等資訊。
- 對於 7 Bytes UID:
- 第一個 SAK 固定為
0x04。 - 第二個(最終)SAK 才具有實際參考價值。
- 第一個 SAK 固定為