MIFARE

<image>

MIFARE是恩智浦半導體公司（NXP Semiconductors）擁有的一系列非接觸式智慧卡和近傍型卡技術的註冊商標。

MIFARE包括一系列依循ISO/IEC 14443-A規格，利用無線射頻識別（頻率為13.56MHz）的多種非接觸式智慧卡專有解決方案。這項技術是最早是1994年由米克朗集團（Mikron Group）開發，在1998年轉售給飛利浦電子公司（2006年拆分成為恩智浦半導體公司）。近年來MIFARE已經普遍在日常生活當中使用，如大眾運輸系統付費、商店小額消費、門禁安全系統、借書證等。

## 發展歷史

<image>

- 1994 — MIFARE Classic 1K，非接觸式讀取技術開發成功。
- 1996 — 韓國首爾市地鐵成為首個採用MIFARE的商轉系統。
- 1997 — MIFARE Pro，兼容接觸與非接觸式的智慧卡，並採用了3DES的協同處理器（coprocessor）機制。
- 1999 — MIFARE Pro X，開發完成公開金鑰基礎建設（PKI）機制。
- 2001 — MIFARE UltraLight規格開發成功。
- 2002 — MIFARE DESFire，開發以微處理器（microprocessor）為基礎的產品。
- 2004 — MIFARE DESFire SAM，增強了MIFARE DESFire的安全基礎架構連接。
- 2006 — MIFARE DESFire EV1，第一個支援128bit 進階加密標準（AES）的產品。
- 2008 — MIFARE Plus，替換MIFARE Classic使用的128bit AES。
- 2008 — MIFARE Ultralight C，內建有三重數據加密演演算法驗證的紙質票證IC（Paperticket IC）。
- 2010 — MIFARE SAM AV2，加入可讀取進階加密標準（AES）、三重數據加密演演算法（3DS）、公開金鑰基礎架構（PKI）等安全密鑰的驗證機制。
- 2012 — MIFARE Ultralight EV1，與MIFARE Ultralight相同的規格但是取消了加密功能。
- 2013 — MIFARE DESFire EV2，更好的效能、保密性並且支援多種加密程式。
- 2016 - MIFARE SDK改名為TapLinx，並改進產品支援。
- 2020 - MIFARE DESFire EV3 推出
- 2022 - MIFARE Ultralight AES 推出

MIFARE的名字由來是米克朗車資收費系統（MIkron FARE-collection System）組合而來，飛利浦電子公司在1998年收購了這項技術。

1994年，米克朗公司授權英飛凌 科技在MIFARE現有的基礎上開發新的機制。當時英飛凌取得的樣本規格是1K的記憶體容量，8、16、32位元的虛擬微處理器和USIM用的NFC設備。

摩托羅拉公司曾經嘗試開發與MIFARE功能類似的接觸式晶片，原本該公司預估每個月有1百萬次的使用量，但是最後只有10萬次。以致最後放棄了這個產品。

1998年飛利浦將MIFARE Classic技術授權給了日立製作所，該公司在1999年至2006為日本電信電話（NTT）開發了非接觸式智慧卡的解決方案。另外為NTT開發的電話卡專案有3個合作夥伴（分別是：Tokin-Tamura-Siemens、日立製作所、電裝公司），原本規劃以MIFARE Classic授權為基礎進而開發出兩種大小不同容量的接觸式產品，但是最後只有完成大容量的產品。

2008年，NXP為日立製作所提供了包含MIFARE Plus及MIFARE DESFire2項技術，日立製作所的半導體部門也更名為瑞薩電子。

2010年，NXP把MIFARE授權給金雅拓公司（Gemalto），2011年NPX授權法國歐貝特科技使用在SIM卡上。這些授權都是用來開發NFC領域的產品。

## 硬體架構及工作原理

MIFARE Ultralight｜MIFARE Classic｜MIFARE Plus｜MIFARE DESFire

MIFARE Ultralight EV1｜MIFARE Ultralight C｜MIFARE Classic EV1｜MIFARE Plus (S/X)｜MIFARE Plus SE｜MIFARE DESFire EV1｜MIFARE DESFire EV2｜MIFARE DESFire EV3

射頻介面｜ISO/IEC 14443-2，TYPE A

通訊協定｜ISO/IEC 14443-3｜ISO/IEC 14443-3&4｜ISO/IEC 14443-4

UID碼｜UID：7位元組｜UID：7位元組，RID：4位元組（無UID）｜UID：7位元組，RID：4位元組（無UID）

通訊速度｜106Kbps｜106Kbps-848Kbps

資料儲存容量｜48bytes｜128bytes｜144bytes｜1K、4Kbytes｜2K、4Kbytes｜256、2K、4K、8Kbytes｜2K、4K、8Kbytes

驗證金鑰種類｜無｜TDES｜Crypto-1｜Crypto-1、AES｜TDES、AES

機卡驗證類型｜密碼｜三重認證

機卡通訊加密類型｜無｜Encrypted｜Plain，Encrypted以及CMACed

共同準則認證類型（Common Criteria Certification）｜無｜EAL4+｜無｜EAL4+｜EAL5+

UID：唯一識別碼（Unique Identifier）， RID：安全隨機識別碼（Random Security Identifier）

區段｜區塊 0｜區塊 1｜區塊 2｜區塊 3

0｜製造商代碼｜資料區｜資料區｜金鑰、存取權限

1｜資料區｜資料區｜資料區｜金鑰、存取權限

2｜資料區｜資料區｜資料區｜金鑰、存取權限

:｜:｜:｜:

14｜資料區｜資料區｜資料區｜金鑰、存取權限

15｜資料區｜資料區｜資料區｜金鑰、存取權限

- 卡片架構：卡片上面有一組唯一識別碼、通訊介面（包含天線及調變解調器）以及一個ASIC裡面包含了通訊邏輯電路、加密控制邏輯電路與資料儲存區（EEPROM），可以作為電子錢包或其它門禁、差勤考核、借書證等用途。
- 資料存儲區塊：可分16個區段（sector 0-15），每個區段由4個區塊（block 0-3）組成，而每個區塊都是獨立的單元，每1個區塊的容量有16Byte。而每個區段的最後一個區塊則用來存放2組金鑰（KeyA、KeyB），以及金鑰對應各自的存取權限（Access bit）。
- 每張卡片第一區段的第一區塊（sector 0，block 0）只能讀取無法寫入資料，稱為製造商代碼（Manufacturer Code），第1－4byte為UID。第5byte為位元計數檢查碼（bit count check），其餘的存放卡片製造商的資料。所以每張卡片實際能使用的只有15個區段，即便如此也可用於15個不同的應用。
- 讀寫卡機架構：讀卡機包含CPU、電源模組、讀（寫）模組、記憶模組、控制模組等，有些還有顯示模組、定時模組等其他模組。
- 工作流程：當卡片接近讀寫卡機進入通訊天線的感應範圍（約2.5公分至10公分）之後，讀寫卡機便會提供微量電力（約達2伏特之後）驅動卡片上的電路。此時卡、機各以曼徹斯特編碼（MANCHESTER Encoding）及米勒編碼（Miller encoding）加密通訊內容後再以振幅偏移調變（Amplitude Shift Keying，ASK）透過調變解調器收發無線電波信號互相驗證是否為正確卡片，如果驗證結果正確讀寫卡機就會確認要存取的資料存儲區塊，並對該區塊進行密碼校驗，在卡、機三重認證無誤之後，就可以透過加密進行實際工作通訊。這個過程大約只需要0.1秒就可以完成。如果同時有多張卡片進入讀寫卡機感應範圍，讀寫卡機會將卡 片編號並選定1張卡片進行驗證直到完成所有卡片驗證（稱為防碰撞機制）或是離開感應範圍為止。
- 卡機三重認證步驟：1.卡片產生一個亂數RB傳送到讀卡機。2.讀卡機會將接收到的亂數RB依公式加密編碼後的TokenAB數值並傳送回卡片。3.卡片接收到TokenAB後，會把加密部份解譯出來然後比對參數B、亂數RB。同時並依據收到的亂數RA，參照公式編碼後產生TokenBA傳送回讀卡機。4.讀卡機接收到TokenBA後，又把加密過的部份解譯，比較亂數RB，RA與TokenBA中解出之RB、RA是否相符，正確的就可以完成指令（扣款、打開門鎖或是登記其他事項）。

## 攻擊事件

2007年12月，在混沌通訊大會上Henryk Plötz和Karsten Nohl發表了部分用於MIFARE晶片演演算法上的反向工程技術。

2008年3月，在荷蘭的奈梅亨大學（Radboud University Nijmegen）數位安全研究群裡發表了利用反向工程複製並且修改採用MIFARE Classic技術的電子票證OV卡（ov-chipkaart）上的餘額。

奈梅亨大學發表了下列三篇關於MIFARE Classic的文件：

- A Practical Attack on the MIFARE Classic
- Dismantling MIFARE Classic
- Wirelessly Pickpocketing a MIFARE Classic Card

恩智浦半導體曾經嘗試在荷蘭的法庭提出訴訟以阻止這些文件發表，但是法官認為這屬於言論自由，便否決NXP公司所提

2008年8月在第17屆高等計算系統協會（USENIX）中有另外一份講述如何利用反向工程的程序發表

臺大電機教授示範竄改悠遊卡：2010年7月，臺灣大學電機系教授鄭振牟團隊使用改進過的監聽封包（Sniffer-Based）的攻擊手法攻擊Mifare卡。將1張正常使用中的悠遊卡，將餘額從正100多元，更改成為負五百多元。

資安顧問竄改悠遊卡：2011年7月，某科技公司一名24歲資安顧問，宣稱在美國網站購買讀寫卡機，再下載美國學生破解波士頓地鐵查理卡（Charlie Card）的文章後花了四個月的時間撰寫程式，破解悠遊卡防護系統，以自製讀寫卡機為悠遊卡竄改加值成功並盜刷六次。