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）的文章后花了四个月的时间撰写程式，破解悠游卡防护系统，以自制读写卡机为悠游卡窜改加值成功并盗刷六次。