MIFARE 感應門禁卡應用

感應卡

感應卡(Proximity card)適用於ISO/IEC 14443標準與ISO/IEC 15693標準。它也可以用來指那些使用125 kHz或13.56 MHz的非接觸型RFID感應卡,這些技術通常被使用於非接觸型智慧卡之上。


Spec

Sector 0 - Block 0

每張卡片第一區段的第一區塊(sector 0,block 0)只能讀取無法寫入資料,稱為製造商代碼(Manufacturer Code)

Classic with 4 UID:


讀卡機驗證原理

卡機三重認證步驟:

  1. 卡片產生一個亂數RB傳送到讀卡機。

  2. 讀卡機會將接收到的亂數RB依公式加密編碼後的TokenAB數值並傳送回卡片。

  3. 卡片接 收到TokenAB後,會把加密部份解譯出來然後比對參數B、亂數RB。同時並依據收到的亂數RA,參照公式編碼後產生TokenBA傳送回讀卡機。

  4. 讀卡機接收到TokenBA後,又把加密過的部份解譯,比較亂數RB,RA與TokenBA中解出之RB、RA是否相符,正確的就可以完成指令(扣款、打 開門鎖或是登記其他事項)。

加解密驗證原理建立在讀卡機使用的Key與卡片的Key相同

複製一張宿舍門禁卡(三) 操作存取卡片流程 - AndyWu's Notes


Key

Standard Keys (如MifareClassicTool中的std.keys list):


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 就會固定跟隨該卡。

Why does my phone's RFID UID change each time I scan it on a RFID scanning system? - Electrical Engineering Stack Exchange


References

Last updated