MIFARE

**MIFARE**是恩智浦半導體公司（NXP Semiconductors）拥有的一系列非接觸式智慧卡和近傍型卡技术的注册商标。

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

## 發展歷史

* 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的名字由來是米克朗車資收費系統（ **MI**kron **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領域的產品。

## 硬體架構及工作原理

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

*卡片架構：卡片上面有一組唯一識別碼、通訊介面（包含天線及調變解調器）以及一個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伏特之後）驅動卡片上的電路。此時卡、機各以曼徹斯特編碼（）及（）加密通訊內容後再以振幅偏移調變（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）的文章後花了四個月的時間撰寫程式，破解悠遊卡防護系統，以自製讀寫卡機為悠遊卡竄改加值成功並盜刷六次。

## 相關條目
* RFID
* NFC
* FeliCa
* 智慧卡
* 悠遊卡 (台灣)
* iPASS一卡通 (台灣)

## 參考

## 外部連結
* MIFARE官網
* 台灣恩智浦半導體公司官網