Links

MIFARE 感應門禁卡應用

感應卡

感應卡(Proximity card)適用於ISO/IEC 14443標準與ISO/IEC 15693標準。它也可以用來指那些使用125 kHz或13.56 MHz的非接觸型RFID感應卡,這些技術通常被使用於非接觸型智慧卡之上。
Standard
Frequency
Common Name
Example
EM
125kHz
Proximity card/EM卡/ID卡
簡易門禁感應卡磁扣
MIFARE
13.56MHZ
MIFARE卡/IC卡
悠遊卡/銀行卡

Spec

Sector 0 - Block 0

每張卡片第一區段的第一區塊(sector 0,block 0)只能讀取無法寫入資料,稱為製造商代碼(Manufacturer Code)
Classic with 4 UID:
Byte
Length
Content
0
4
UID
4
1
bit count check
5
1
SAK (08:一般加密卡, 28:特殊加密卡如銀行卡)

讀卡機驗證原理

卡機三重認證步驟:
  1. 1.
    卡片產生一個亂數RB傳送到讀卡機。
  2. 2.
    讀卡機會將接收到的亂數RB依公式加密編碼後的TokenAB數值並傳送回卡片。
  3. 3.
    卡片接 收到TokenAB後,會把加密部份解譯出來然後比對參數B、亂數RB。同時並依據收到的亂數RA,參照公式編碼後產生TokenBA傳送回讀卡機。
  4. 4.
    讀卡機接收到TokenBA後,又把加密過的部份解譯,比較亂數RB,RA與TokenBA中解出之RB、RA是否相符,正確的就可以完成指令(扣款、打 開門鎖或是登記其他事項)。
加解密驗證原理建立在讀卡機使用的Key與卡片的Key相同

Key

Standard Keys (如MifareClassicTool中的std.keys list):
Key
Purpose
Description
FF:FF:FF:FF:FF:FF
Factory default key
No NDEF data for Key A & Key B
A0:A1:A2:A3:A4:A5
Public NDEF key
NDEF message for key A with MAD sector (sector 0)
D3:F7:D3:F7:D3:F7
Public NDEF key
NDEF message for key A with sectors 1~15

Crack 破解與複製

讀取部分只需要裝置晶片支援,手機app可使用如MifareClassicTool利用Key Brute attack掃出Sector內容。 寫入部分一般晶片會禁止對Sector 0 - Block 0寫入,支援該需寫入的如ACR122U讀寫器

手機 NFC Tag

現行 global 手機的 NFC Tag UID 都是每次讀取動態改變,只能透過 root 才能使用 Emulator,而中國出廠的手機則支援自家 Wallet App 複製模擬 UID。 不 root 情況下的門禁應用,目前 Samsung Pay 的悠遊卡服務創建卡片後其手機 NFC Tag UID 就會固定跟隨該卡。

References