Mifare卡的算法破解和应用---刘欣凯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能卡技术学习报告
——Mifare卡的算法破解和应用
姓名:***
专业:信息安全2班
学号:***********
指导老师:***
目录
一、论文摘要 (3)
二、Mifare卡的简单介绍 (4)
三、Mifare卡的构造及其功能模块 (6)
四、Mifare卡的破解 (12)
五、确保Mifare卡安全应用的新方案 (18)
六、Mifare的应用 (22)
七、参考文献 (24)
一、论文摘要
Mifare是近年来被广泛应用的一种智能卡。
但是随着其广泛应用以及人们对其研究的加深,一度被认为非常安全的mifare卡也存在被破解的危险。
针对此现象,我们对mifare 的构造进行了深入的了解,并提出了mifare卡安全应用的新的方法,使其能够安全的继续应用在各种领域。
关键词:mifare卡、算法破解、安全应用、SM7国密算法
一、Abstract
Mifare card has been used in many frontier. With the development of the mifare card, people have a further research on it than before. The mifare card was considered safe in some years yet. But in nowadays, it has been cracked. Aiming at the phenomenon, we have a study on the construct of the mifare card. And at the same time, we put forward a new method to insure its safety. In this way, the mifare card can still be used in many frontier in safe.
Key words:Mifare card、Algorithm crack、Security applications、SM7 algorithm
二、Mifare卡的简单介绍
1、Mifare 1卡领导了非接触式IC卡的革命
Mifare 1 非接触式IC卡是1994年由荷兰NXP半导体公司(简称NXP公司)发明。
它成功地将射频识别技术和lC卡技术相结合,解决了无源(卡中无电源)和免接触的技术难题,是电子科技领域的技术创新的成果。
Mifare 1卡是目前世界上使用量最大、技术最成熟、性能最稳定的一种感应式智能lC卡。
其具有如下优点: (1)操作简单、快捷:
由于采用射频无线通讯,使用时无须插拔卡且不受方向和正反面的限制,所以非常方便用户使用。
完成一次读写操作仅需0.1秒,大大提高了每次使用的速度。
既适用于一般场合, 又适用于快速、高流量的场所。
(2) 抗干扰能力强:
Mifare 1卡中有快速防冲突机制。
在多卡同时进入读写范围内时,能有效防止卡片之间出现数据干扰。
读写设备可一一对卡进行处理,提高了应用的并行性及系统工作的速度。
(3)可靠性高:
Mifare 1卡与读写器之间没有机械接触。
避免了由于接触读写而产生的各种故障; 而且卡中的芯片和感应天线完全密封在标准的PVC中,进一步提高了应用的可靠性和卡的使用寿命。
(4)安全性好:
Mifare 1卡的序列号是全球唯一的, 不可以更改;读写时卡与读写器之间采用三次双向认证机制.,互相验证使用的合法性。
而且在通讯过程中所有的数据都加密传输; 此外.卡片各个分区都有自己的读写密码和访问机制,卡内数据的安全得到了有效的保证。
(5)适合于一卡多用:
Mifare 1卡的存贮结构及特点使其能应用于不同的场合或系统,尤其适用于政府机关、公用设施、学校、企事业单位、智能小区的身份识别、门禁控制、停车场管理、考勤签到、食堂就餐、娱乐消费、图书管理等多方面的综合应用。
有很强的系统应用扩展性.,可以真正做到“一卡通”。
(6)成本低:
随着Mifare l卡的广泛应用,中国不但成为全球最大的卡片生产基地.,而且芯片生产技术也为多家国内的厂家掌握,使得Mifare 1 及其兼容卡的出厂价格大幅下降,大大降低了用户的投资。
2、Mifare 1非接触式IC卡的构造简介
Mifare l非接触式IC卡(又称Mifare 1射频卡,以下简称M1卡)采用先进的芯片制造工艺制作,内建有高速的CM0S EEPROM、MCU等。
它的核心是Philips公司的Mifare 1 IC S50(一01,一02,一03,一04)系列微模块(微晶片),该模块确定了卡片的特性以及卡片读写器的诸多性能。
卡片上除了IC微晶片及一副高效率天线外,无任何其它元件。
卡片上无源(无任何电池),工作时的电源能量由卡片读写器天线发送无线电载波信号耦合到卡片上天线而产生电能,一般可达2V以上,供卡片上IC工作。
工作频率13.56MHz。
M1卡所具有的独特的MIFARE RF非接触式接口标准已被制定为国际标准:IS0/IEC 14443 TYPE A标准。
M1卡的标准操作距离与读写器的读写电路模块有关,当采用McM500作为读写器的读写模块时,操作距离为100mm;当采用MCM200时,操作距离为25mm。
M1卡具有先进的数据通信加密及双向验证系统,且具有防冲突机制,能在同一时间处理重叠在卡片读写器天线的有效工作距离内的多张重叠的卡片,支持多卡操作。
卡片制造时具有惟一的卡片系列号(32位),没有重复相同的两张M1卡。
M1卡与读写器通信使用握手式半双工通信协议,卡片上有高速的CRC协处理器,符合CCITT标准。
射频卡与读写器的通信速率高达106Kbit/s。
卡片上内建8K位EEPROM存储区,并划分为16个扇区,每个扇区分为4个块,并以块为存取单位。
每个扇区可分别设置各自的密码,并以多种方式进行管理,互不干涉。
因此,每个扇区可以独立地应用于一个应用场合,整个卡片非常适合于各种“一卡通”应用系统。
卡片上还内建有增值/减值的专项的数学运算电路,非常适合公交/地铁等行业的检票/收费系统。
典型的检票交易时间最长不超过100ms(0.1秒)。
卡片上的数据可改写10万次以上,读无限次;数据保存期可达10年以上,且卡片抗静电保护能力达2KV以上。
ISO14443即是以Mifare卡的技术标准为草案形成的。
根据NXP公司提供的数
据, 全球超过50个国家、650个城市在使用Mifare方案,且几乎都是使用Mifare l 卡。
市场上已经使用的Mifare 1卡的数量超过10亿张。
我国140多个城市的公共交通领域在使用Mifare 1卡,市场占有率超过70%。
同时,众多的Mifare 1卡读写机具的生产厂商也为用户提供了便利、廉价、及时的服务。
三、Mifare 1的构造及其功能模块
1、Mifare 1非接触式IC卡的工作原理
M1卡片的电气部分只由一个天线和一个微模块组成。
天线是只有几组绕线的线圈,很适于封装到ISO卡片中,微模块由一个高速的RF射频接口电路和数字电路部分组成。
其工作原理是:读写器向卡片发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
2、Mifare 1非接触式IC卡功能组成
M1卡核心微模块IC S50的功能组成如图1所示。
整个模块主要由两个部分组成:RF射频接口电路和数字电路部分。
(1)RF射频接口电路
在RF射频接口电路中,主要包括有波形转换模块、调制/解调模块、电压调节模块和POR模块。
波形转换模块可将卡片读写器上的13.56MHz的无线电调制信号接收,一方面送调制/解调模块进行解调,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,并由电压调节模块对电压进行稳压等进一步的处理,最终输出的电压供给卡片上的各个电路。
POR模块主要是对卡片上的各个电路进行P0wER一0N—RESET上电复位,使各电路同步启动工作。
(2)数字电路部分
ATR模块(Answer to Request):请求应答模块
当一张M1卡片处在卡片读写器天线的工作范围之内时,读写器内的读卡程序会向卡片发出REQUEST a11(或REQUEST std)请求命令,于是卡片的ATR将启动,将卡片的类型号(TagType)共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。
如果不进行第一步的ATR工作,读写器对卡片的其他操作将不会进行。
AntiCollision模块:防止(卡片)重叠功能模块
如果有多张M1卡片处在卡片读写器天线的工作范围之内时,AntiCo11ision 模块的防重叠功能将被启动工作。
卡片读写器在程序控制下将会首先与每一张卡片进行通信,取得每一张卡片的序列号(共5个字节,其中4个字节为序列号,另一个字节为校验字节),由于M1卡片每一张都具有其惟一的序列号,因此根据卡片的序列号可以识别每一张卡片。
卡片读写器中的读写电路MCM的防重叠功能,配合卡片上的防重叠功能模块一起工作,在程序控制下根据卡片的序列号选定其中一张卡片。
最后被选中的卡片将直接与读写器进行数据交换,未被选中的卡片处于等待状态,随时准备与卡片读写器进行通信。
Select Application模块:卡片选择模块
当卡片与读写器完成了上述两步操作之后,接下来读写器还必须对卡片进行选择操作,即与被选中的卡片进行一次数据交换。
当某卡片被选中后,被选中的卡片便将其容量传送给读写器,当读写器收到卡片的容量信息后,便可以对卡片进行下一步的操作了。
Authentication&Access Control模块:认证及存取控制模块在成功完成上述三步操作之后,接下来读写器要对卡片上某个扇区已经设置的密码进行认证。
如果认证通过,则允许读写器对卡片上该扇区进行读写操作。
否则要重新认证。
M1卡片的认证过程包含三次相互验证,图2所示为三次验证的令牌原理框图。
认证过程是这样进行的:
(A)环:由M1卡向读写器发送一个随机数据RB;
(B)环:读写器收到RB后,向M1卡片发送一个令牌数据TOKEN AB,其中包含了读写器发出的一个随机数据RA;
(C)环:M1卡收至0TOKEN AB后,对TOKEN AB的加密部分进行解密,并校验第一次由(A)环中M1卡发出去的随机数RB是否与(B)环中接收到的TOKEN AB中的RA 相一致;
(D)环:如果(c)环校验是正确的,则M1卡向读写器发送令牌TOKEN BA;
(E)环:读写器收到令牌TOKEN BA后,将对令牌TOKENBA中的RB(随机数)进行解密;并校验第一次由(B)环中读写器发出的随机数RA是否与(D)环中接收到的TOKEN BA中的RA相一致。
如果上述每一个环都能正确通过验证,则整个的认证过程成功。
读写器将可以对刚刚认证通过的卡片上的这个扇区进行读写操作。
在对卡片上其它扇区的读写操作之前,都必须完成上述的认证过程。
认证过程中任何一环出现差错,整个认证将告失败。
如果事先不知卡片上的密码,则由于密码的变化可以极其复杂,因此靠猜测密码而想打开卡片上的一个扇区的可能性几乎为零。
这里提醒一下程序员和卡片的使用者,必须牢记卡片中16个扇区的每一个密码,否则,遗忘某一扇区的密码,将使该扇区中的数据不能读写,没有任何办
法可以挽救这种低级错误。
但是,卡片上的其他扇区可以照样使用。
综上所述,可以充分地说明M1卡片的高度安全性、保密性,卡片的应用场合多样性和一卡多用的特点。
Control&Arlthmetlc Unit:控制及算术运算单元
这一单元是整个卡片的控制中心,是卡片的“头脑”。
它主要对整个卡片的各个单元进行微操作控制,协调卡片的各个操作;同时它还对各种收/发的数据进行算术运算处理、递增/递减处理、CRC运算处理等等。
可以说是卡片中内建的中央微处理机(MCU)单元。
RAM和ROM:RAM和ROM单元
RAM主要配合控制及算术运算单元,将运算的结果进行暂时存储,如果某些数据需要存储到EEPROM,则由控制及算术运算单元取出送到EEPROM存储区中;如果某些数据需要传送给读写器,则由控制及算术运算单元取出,经过RF射频接口电路的处理,通过卡片上的天线传送给卡片读写器。
RAM中的数据在卡片失掉电源后(即卡片离开读写器天线的有效工作范围内)将被清除。
ROM中固化了卡片运行所需要的程序指令,由控制及算术运算单元取出对每个单元进行微指令控制。
从而使卡片能有条不紊地与卡片读写器进行数据通信。
Crypto unit:数据加密单元
该单元完成对数据的加密处理及密码保护,加密的算法通常为DES标准算法或其他。
EEPROM MEMORY/EEPROM INTERFACE:EEPROM存储器及其接口电路该单元主要用于存储密码和数据。
EEPROM中的数据在卡片失掉电源后(即卡片离开读写器天线的有效工作范围内)仍将被保持,因此,用户所要存储的数据都被存放在该单元中。
(3)EEPROM存储器的存储结构
M1卡中EEPROM存储器容量为8K位(即1K字节),共分为16个扇区,每个扇区由4块组成,每块16个字节。
我们将16个扇区的64个块按绝对地址编号为0~63,存储结构如图3所示:
其中,第0扇区的块0用于存放厂商代码,已经固化,不可更改。
每个扇区的块0、块1、块2为数据块,用于存贮数据。
存贮在数据块中的数据可以有两种应用:一是用作一般的数据保存,可以对其进行读、写操作。
二是用作贮值,可以对其进行初始化值、加值、减值、读值操作。
每个扇区的块3为控制块,用于存贮该扇区密码A(6个字节)、存取控制字节(4个字节)、扇区密码B(6个字节)。
每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制位。
扇区中的每个块(包括数据块和控制块)的存取条件由本扇区密码和相应的存取控制位共同决定。
限于篇幅,有关控制位对扇区中每个块的控制情况略。
1、Mifare 1非接触式IC卡与卡片读写器的通讯
M1卡与卡片读写器之间的数据通讯过程如图4所示。
复位应答(Answer to request)
M1卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,此时读写器会接收到由射频卡发出的卡片的类型号,从而确定该卡是否为Ml卡,即验证卡片的卡型。
防冲突机制(Antico11ision Loop)
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程操作成功会返回被选卡片
的序列号。
选择卡片(Select Tag)
选择被选中的卡片的序列号,此时读写器会接收到卡片的容量信息。
三次互相验证(3 Pass Authentication)
选定好要处理的卡片之后,读写器接下来需要确定所访问的扇区号,并对该扇区密码进行密码校验,在三次相互验证之后就可以通过加密流进行数据通讯。
(注意:在选择另一扇区时,则必须进行另一扇区密码校验。
) 以上操作成功之后,便可以对相应的扇区进行操作,其操作方式可有以下几种类型:
读操作(Read):读一个块;
写操作(write):写一个块;
加值操作(Increment):对数值块进行加值;
减值操作(Decrement):对数值块进行减值;
存储操作(Restore):将块中的内容存到数据寄存器中;
传输操作(Transfer):将数据寄存器中的内容写入块中;
中止操作(Halt):将卡置于暂停工作状态。
四、Mifare卡的破解
1、mifare卡的基本认证协议
当 MIFARE Classic 卡接近读卡器的磁场区域时,卡片会接收到读卡器发来的寻卡指令,然后按照防冲突协议发出自己的卡号UID(寻卡过程)。
收到UID 后,读卡器会选择这张卡(选卡过程)。
接着读卡器发出对某一块的认证请求,然后就开始了一个标准的三步认证协议。
卡片产生一个随机数n T 并以明文方式发送给读卡器。
紧接着读卡器发出它的随机数n R和对卡片的应答a R。
最后卡片返回一个对读卡器的应答a T。
如果读卡器的应答不正确,卡将不会发送a T。
从n R开始,所有的数据都会被加密,也就是说n R, a R, a T会与密钥流ks1, ks2, ks3 异或以后再发送出去。
整个过程如图1所示。
2、Cryptol算法
MIFARE 卡的安全性,主要依赖于基本认证协议和流加密算法Crypto1。
无论是认证还是加密,都需要卡中密钥的参与,密钥流由Crypto1 算法生成。
Crypto1 算法由1 个48 bit的线性反馈移位寄存器(LFSR)和1 个两层的20 bit 输入1比特输出的非线性函数组成。
48 bitLFSR 由密钥初始化以一定的方式产生密钥流。
国外研究者提出了一些不同的攻击方法,荷兰奈梅亨Raboud 大学F. D. Garcia 教授等人提出的攻击方案是其中效率较高的。
这种攻击方法主要是利用了密码结构本身的弱点:非线性函数的抽头只取奇数位,从而把密钥搜索空间从48 位降低到20 位。
文献的研究结果表明,在获得一组完整的基本认证数据的条件下,攻击者就可以恢复出原始密钥。
3、MIFARE系统的攻击过程
在现实环境中,MIFARE 应用系统开发商根据实际需要,往往以三种不同的方式来实现上述基本认证协议。
我们对于MIFARE Classic 卡的攻击直接建立在对这三种认证方式的攻击之上。
为此,我们首先需要侦听MIFARE Classic卡与读卡器之间的交互数据。
利用这些数据和F. D. Garcia给出的Crypto1 攻击方法,即可破译卡中的相应扇区密钥,并利用扇区的访问控制策略实现卡内数据的复制
和篡改。
(1)侦听交互数据
我们使用侦听工具来截获卡与读卡器之间的通信数据。
为了恢复出密钥,我们需要截取一次合法卡与读卡器之间的完整的基本认证数据。
(2)攻击基于基本认证协议的三种认证方式
实际中,不同的应用系统所使用的认证方式是不同的,大致上可以分为三类:第一类,无密码认证;第二类,单扇区认证;第三类,多扇区认证。
①无密码认证
对于一些简单的系统或者一个系统中的某些简单的应用(如某些门禁),只验证明文卡号的合法性,不使用任何密码保护,所需的其他数据均从后台数据库中取出,而非从卡中读出。
因此,它没有认证部分的流程,而只有寻卡和选卡部分的流程。
这种认证过程可用如图2(a)所示的流程来表示。
其中,a ~ f为一次完整的寻卡选卡流程,但f之后并没有认证过程,而是又重新进行寻卡选卡(g ~ h),此后也一直进行此过程。
也就是说,这些系统没有使用MIFARE 卡的安全特征,而是单纯的读取卡号。
如果卡号不在应用系统定义的黑名单中,则以此卡号在白名单中查找,找到则返回所需信息,找不到则认为认证失败。
显见,攻击者只要能制作或找到一张卡号相同的卡,则该卡就会被系统误认为是合法的。
我们对此类认证方式下的交互过程进行了仿真实验,所侦听到的通信过程及数据如表1 所示。
②单扇区认证
有些系统的交互流程是每次寻卡选卡后都只与一个特定扇区进行认证。
这类系统或者只使用了一个扇区,或者认证新的扇区时都会重新进行寻卡选卡。
这类认证协议如图2(b)所示,其中a~f 与图2(a)中一致。
注意到从g 开始读卡器发送认证指令,h~j 是一个完整的基本认证过程,此后开始传输加密的指令以及数据(即第k 步);与一个扇区的交互完成后,读卡器根据应用系统的设计要求,可以重新开始寻卡过程。
如此反复进行,直到交互结束。
我们通过仿真实验给出了单扇区认证方式下的通信过程及数据(如表2 所示)。
可以看出,读卡器在与卡进行成功认证(第10 步)后发送了经过加密的指令(即第11 步),然后卡返回了一个18 字节长的加密数据(第12 步)。
这里,可以通过表中第 08~10 步的数据算出一个密钥0x4C4D0A2C0CF3。
这个过程在一台普通的计算机上大概需要8M 内存并在几秒内可以完成。
接着我们就可以解密出:第11 步的明文为30 04 26 EE,表示读04 块。
接下来第12 步为04 块中的16 字节数据和两字节的校验。
③多扇区认证
相比前两种认证方式,多扇区认证具有更好的安全性,因此往往被一些安全要求较高的应用系统所采用。
该认证方式的特点是:第一次扇区的认证采用基本认证协议方式,从第二次扇区认证开始,所有的交互过程都是加密的,直到一次完整的交互结束。
这个过程如图2(c)所示,其中a~k与图2(b)中一致。
注意到,第k步完成后读卡器并没有发送新的寻卡指令,而是直接发送加密的认证请求,读卡器接着发送的随机数也是加密的(第m步),这与前面的认证过程不同,之后都与前面的认证过程相同。
这时,由于第二次认证请求卡片再发送随机数都是密文的,使得我们无法获得随机数明文数据。
因此,我们通过穷举所有可能的随机数(216个)来计算密钥,这时我们大约需要做216次单扇区认证解密的离线计算时间。
通过一些如校验位等的漏洞可以减少尝试的随机数,以提高破译密钥的速度。
表3给出了我们实验仿真的多扇区认证的过程。
第13步读卡器直接发送了加密的认证指令,而第14步是一个加密的随机数。
根据第08~10 步的数据,我们花费了几秒的时间就计算出第一步认证的密钥是0x307E00DFD5D6。
再根据第14~16 步的数据穷举卡发送的随机数,计算出第二步认证的密钥为0x2A9E0E770EFF。
这次我们大概花费几个小时的离线计算时间。
接着我们依次解密出:第17 步的明文为30 08 4A 20,表示读08 块;第18 步为08 块中的16字节数据和两字节的校验。
(3)复制、篡改卡片
从理论上讲,获得了MIFARE Classic 的密钥,卡片的安全性就已经丧失。
对于攻击者来说,他们会利用密钥来复制一张相同的卡或者将此卡片按照自己的目的进行修改,给实际应用带来危害。
对于攻击者来说,获得密钥之后只需一台支持MIFARE Classic 卡的读卡器就可以将一张合法卡的内容全部复制出来,写入另外一张空白卡片中,而系统并没有办法区分这两张卡片是不同的。
实际中,尽管MIFARE Classic 空白卡片的UID 是预先固定的,但攻击者可以使用其他类型的支持MIFARE Classic 标准的卡片或者一些硬件设备来模拟MIFARE Classic卡。
因此,从根本上说,UID 也是可以修改的。
攻击者还可能篡改卡的内容,就是直接改写卡内的数据。
通过对卡内数据(如金额)的存储格式以及是否有完整性保护或者备份进行分析,攻击者就可以对卡片中的内容进行有目的的篡改。
对于存在完整性保护的卡片(即有数据的校验等机制),复制仍然是无法抵御的,因为复制同样也把正确的校验位复制到新的卡中。
对于篡改,攻击者可以重放历史数据,以达到修改数据的目的。
(4)其他攻击方法
前面所提到的攻击都是基于可以同时与合法的卡或读卡器接触,但是攻击者仍可以使用其他攻击方法,不同时与卡或者读卡器接触。
如攻击者可以分别与卡和读卡器交互,先与卡通信获得UID,再与读卡器交互,破译密钥;在读卡器不检测UID 合法性的系统中,攻击者可以直接用非法UID 与读卡器交互也能破译所需密钥;攻击者还可以在只获得合法的卡片,在不需要合法读卡器的情况下,破解出卡中的密钥。
五、确保Mifare卡安全应用的新方案
1、国家出台相关的技术标准
我国智能卡应用技术作为国家信息化发展战略的一部分,已经有了10余年的发展历史。
智能卡应用的行业和地方标准已经初步建立,如中国人民银行早在1998年就颁布了《中国人民银行金融集成电路(IC)卡规范(版本1.0)》,2005年又修订后发布《中国金融集成电路(IC)卡规范(2.0版)》,即通常简称的PBOC2.0。
建设部在2002年颁布实施《建设事业IC卡应用技术(CJ/T 1 6 6 - 2 0 0 2 )》, 2 0 0 6 年修订为《建设事业集成电路(IC)卡应用技术规范。