NXP Tag IC Signature 如何運作
NXP 的 Tag IC Signature(又稱 Originality Signature、ECC Signature) 本質上是一個數位簽章(Digital Signature),目的是證明這顆 NFC/RFID IC 是 NXP 原廠生產,而不是仿製晶片。它不是拿來加密資料,也不是用來認證使用者,而是驗證 IC 的真偽。
1. NXP 持有一組 ECC 金鑰
Section titled “1. NXP 持有一組 ECC 金鑰”NXP 在生產線上持有一組 ECC 金鑰:
Private Key(私鑰)
- 永遠保存在 NXP
- 外界不知道
Public Key(公鑰)
- 提供給開發者
- 用來驗證 Signature
這就是典型的不對稱加密(ECC Digital Signature)。
2. 每顆 IC 都有唯一 UID
Section titled “2. 每顆 IC 都有唯一 UID”例如:
04 7A 1C 92 65 4A 80每顆晶片的 UID 都不同。
3. 生產時產生 Signature
Section titled “3. 生產時產生 Signature”NXP 在工廠會使用私鑰對 UID 進行數位簽章:
Signature = Sign(PrivateKey, UID)例如(非實際資料):
UID
04 7A 1C 92 65 4A 80
↓
ECDSA
↓
Signature
A3 9F ...Signature 會依照不同產品使用不同的 ECC 曲線與長度,例如:
- NTAG21x:約 32 Bytes
- NTAG424 DNA:使用更大的 ECC 曲線,因此 Signature 也較長
4. Signature 寫入 IC
Section titled “4. Signature 寫入 IC”Signature 在晶片出廠前就燒錄完成。
之後一般使用者:
- 不能修改
- 不能重新計算
- 只能讀取
因此每張卡都包含:
UID
+
Signature5. Reader 驗證流程
Section titled “5. Reader 驗證流程”Reader 驗證流程分成三個步驟。
Step 1:讀取 UID
Section titled “Step 1:讀取 UID”UID = 04 7A ...Step 2:讀取 Signature
Section titled “Step 2:讀取 Signature”以 NTAG 為例:
READ_SIG (0x3C)取得:
SignatureStep 3:使用 NXP Public Key 驗證
Section titled “Step 3:使用 NXP Public Key 驗證”Verify( PublicKey, UID, Signature)驗證成功:
✓ Genuine NXP IC驗證失敗:
✗ Fake整個流程可以完全離線完成,不需要連線至 NXP 伺服器。
為什麼不能自己產生 Signature?
Section titled “為什麼不能自己產生 Signature?”因為你沒有:
Private Key只有 NXP 持有這把私鑰。
即使知道:
- UID
- Signature
- Public Key
也無法反推出 Private Key。
ECC 的安全性正是建立在這件事上。
為什麼 Clone 卡很難通過驗證?
Section titled “為什麼 Clone 卡很難通過驗證?”假設原卡:
UID04 12 34 56 78 90 AB
SignatureAA BB CC DD ...自己製作一張卡:
UID11 22 33 44 ...
Signature ??因為沒有 Private Key,就無法為新的 UID 產生合法 Signature。
因此驗證:
Verify()
↓
Fail那直接把 UID 和 Signature 一起複製呢?
Section titled “那直接把 UID 和 Signature 一起複製呢?”這是很多人第一次看到 Signature 時會想到的問題。
如果 Clone 卡真的能做到:
UID完全一樣
+
Signature完全一樣那 ECC 驗證本身是無法分辨兩者的。
原因是 Signature 就是針對該 UID 所產生的合法數位簽章。
Originality Signature 的目的只是證明:
這顆 IC 是由 NXP 生產。
它並不是用來證明:
世界上只有這一張卡存在。
真正的困難在於:
大多數 NXP 原廠 IC:
UID不可修改因此仿製卡通常只能:
修改 UID卻沒有能力產生新的合法 Signature。
如果可以模擬 UID 呢?
Section titled “如果可以模擬 UID 呢?”若攻擊者使用的是高階模擬器或特殊 Magic Card,能夠同時模擬:
- 任意 UID
- 任意 Signature
並且直接複製原卡:
UID完全相同
Signature完全相同那麼如果系統只檢查 Originality Signature,就可能被騙過。
因此高安全性的系統通常還會搭配:
- Challenge-Response
- AES Authentication
- 後端資料庫驗證
- Transaction Counter
- Session Key
而不是只依賴 Originality Signature。
Originality Signature 與 Challenge-Response 的差異
Section titled “Originality Signature 與 Challenge-Response 的差異”| Originality Signature | Challenge-Response |
|---|---|
| 驗證 IC 是否為 NXP 原廠 | 驗證目前通訊的是正版 IC |
| 生產時建立一次 | 每次驗證都重新計算 |
| 使用 ECC Digital Signature | 通常使用 AES 或其他對稱式演算法 |
| 不需要 IC 持有私鑰運算 | IC 需要保存 Secret Key 並參與運算 |
| 可完全離線驗證 | 需要 Reader 與 IC 互動 |
Originality Signature 可以視為 IC 的「出生證明」。
- 證明這顆晶片是由 NXP 生產。
- Signature 由 NXP 使用 Private Key 對 UID 進行數位簽章。
- Reader 使用 Public Key 即可驗證真偽。
- 不需要網路即可完成驗證。
但 Originality Signature 不是防 Clone 機制。
如果攻擊者能完整複製 UID + Signature,而 Reader 又只驗證 Originality Signature,那仍可能被欺騙。
因此真正需要高安全性的應用(如門禁、支付、票證等),通常還會搭配 Challenge-Response、AES Authentication 或其他動態驗證機制,以確保目前通訊的是真正持有秘密金鑰的 IC,而不只是擁有一組合法的 UID 與 Signature。