Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx

上传人:b****4 文档编号:17131059 上传时间:2022-11-28 格式:DOCX 页数:20 大小:1.25MB
下载 相关 举报
Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx_第1页
第1页 / 共20页
Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx_第2页
第2页 / 共20页
Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx_第3页
第3页 / 共20页
Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx_第4页
第4页 / 共20页
Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx

《Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

Mifare卡地算法破解和应用刘欣凯Word格式文档下载.docx

Mifarecardhasbeenusedinmanyfrontier.Withthedevelopmentofthemifarecard,peoplehaveafurtherresearchonitthanbefore.Themifarecardwasconsideredsafeinsomeyearsyet.Butinnowadays,ithasbeencracked.Aimingatthephenomenon,wehaveastudyontheconstructofthemifarecard.Andatthesametime,weputforwardanewmethodtoinsureitssafety.Inthisway,themifarecardcanstillbeusedinmanyfrontierinsafe.

Keywords:

Mifarecard、Algorithmcrack、Securityapplications、SM7algorithm

二、Mifare卡的简单介绍

1、Mifare1卡领导了非接触式IC卡的革命

Mifare1非接触式IC卡是1994年由荷兰NXP半导体公司(简称NXP公司)发明。

它成功地将射频识别技术和lC卡技术相结合,解决了无源(卡中无电源)和免接触的技术难题,是电子科技领域的技术创新的成果。

Mifare1卡是目前世界上使用量最大、技术最成熟、性能最稳定的一种感应式智能lC卡。

其具有如下优点:

(1)操作简单、快捷:

由于采用射频无线通讯,使用时无须插拔卡且不受方向和正反面的限制,所以非常方便用户使用。

完成一次读写操作仅需0.1秒,大大提高了每次使用的速度。

既适用于一般场合,又适用于快速、高流量的场所。

(2)抗干扰能力强:

Mifare1卡中有快速防冲突机制。

在多卡同时进入读写范围内时,能有效防止卡片之间出现数据干扰。

读写设备可一一对卡进行处理,提高了应用的并行性及系统工作的速度。

(3)可靠性高:

Mifare1卡与读写器之间没有机械接触。

避免了由于接触读写而产生的各种故障;

而且卡中的芯片和感应天线完全密封在标准的PVC中,进一步提高了应用的可靠性和卡的使用寿命。

(4)安全性好:

Mifare1卡的序列号是全球唯一的,不可以更改;

读写时卡与读写器之间采用三次双向认证机制.,互相验证使用的合法性。

而且在通讯过程中所有的数据都加密传输;

此外.卡片各个分区都有自己的读写密码和访问机制,卡内数据的安全得到了有效的保证。

(5)适合于一卡多用:

Mifare1卡的存贮结构及特点使其能应用于不同的场合或系统,尤其适用于政府机关、公用设施、学校、企事业单位、智能小区的身份识别、门禁控制、停车场管理、考勤签到、食堂就餐、娱乐消费、图书管理等多方面的综合应用。

有很强的系统应用扩展性.,可以真正做到“一卡通”。

(6)成本低:

随着Mifarel卡的广泛应用,中国不但成为全球最大的卡片生产基地.,而且芯片生产技术也为多家国内的厂家掌握,使得Mifare1及其兼容卡的出厂价格大幅下降,大大降低了用户的投资。

2、Mifare1非接触式IC卡的构造简介

Mifarel非接触式IC卡(又称Mifare1射频卡,以下简称M1卡)采用先进的芯片制造工艺制作,内建有高速的CM0SEEPROM、MCU等。

它的核心是Philips公司的Mifare1ICS50(一01,一02,一03,一04)系列微模块(微晶片),该模块确定了卡片的特性以及卡片读写器的诸多性能。

卡片上除了IC微晶片及一副高效率天线外,无任何其它元件。

卡片上无源(无任何电池),工作时的电源能量由卡片读写器天线发送无线电载波信号耦合到卡片上天线而产生电能,一般可达2V以上,供卡片上IC工作。

工作频率13.56MHz。

M1卡所具有的独特的MIFARERF非接触式接口标准已被制定为国际标准:

IS0/IEC14443TYPEA标准。

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方案,且几乎都是使用Mifarel卡。

市场上已经使用的Mifare1卡的数量超过10亿张。

我国140多个城市的公共交通领域在使用Mifare1卡,市场占有率超过70%。

同时,众多的Mifare1卡读写机具的生产厂商也为用户提供了便利、廉价、及时的服务。

三、Mifare1的构造及其功能模块

1、Mifare1非接触式IC卡的工作原理

M1卡片的电气部分只由一个天线和一个微模块组成。

天线是只有几组绕线的线圈,很适于封装到ISO卡片中,微模块由一个高速的RF射频接口电路和数字电路部分组成。

其工作原理是:

读写器向卡片发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。

2、Mifare1非接触式IC卡功能组成

M1卡核心微模块ICS50的功能组成如图1所示。

整个模块主要由两个部分组成:

RF射频接口电路和数字电路部分。

(1)RF射频接口电路

在RF射频接口电路中,主要包括有波形转换模块、调制/解调模块、电压调节模块和POR模块。

波形转换模块可将卡片读写器上的13.56MHz的无线电调制信号接收,一方面送调制/解调模块进行解调,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,并由电压调节模块对电压进行稳压等进一步的处理,最终输出的电压供给卡片上的各个电路。

POR模块主要是对卡片上的各个电路进行P0wER一0N—RESET上电复位,使各电路同步启动工作。

(2)数字电路部分

ATR模块(AnswertoRequest):

请求应答模块

当一张M1卡片处在卡片读写器天线的工作范围之内时,读写器内的读卡程序会向卡片发出REQUESTa11(或REQUESTstd)请求命令,于是卡片的ATR将启动,将卡片的类型号(TagType)共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。

如果不进行第一步的ATR工作,读写器对卡片的其他操作将不会进行。

AntiCollision模块:

防止(卡片)重叠功能模块

如果有多张M1卡片处在卡片读写器天线的工作范围之内时,AntiCo11ision模块的防重叠功能将被启动工作。

卡片读写器在程序控制下将会首先与每一张卡片进行通信,取得每一张卡片的序列号(共5个字节,其中4个字节为序列号,另一个字节为校验字节),由于M1卡片每一张都具有其惟一的序列号,因此根据卡片的序列号可以识别每一张卡片。

卡片读写器中的读写电路MCM的防重叠功能,配合卡片上的防重叠功能模块一起工作,在程序控制下根据卡片的序列号选定其中一张卡片。

最后被选中的卡片将直接与读写器进行数据交换,未被选中的卡片处于等待状态,随时准备与卡片读写器进行通信。

SelectApplication模块:

卡片选择模块

当卡片与读写器完成了上述两步操作之后,接下来读写器还必须对卡片进行选择操作,即与被选中的卡片进行一次数据交换。

当某卡片被选中后,被选中的卡片便将其容量传送给读写器,当读写器收到卡片的容量信息后,便可以对卡片进行下一步的操作了。

Authentication&AccessControl模块:

认证及存取控制模块

在成功完成上述三步操作之后,接下来读写器要对卡片上某个扇区已经设置的密码进行认证。

如果认证通过,则允许读写器对卡片上该扇区进行读写操作。

否则要重新认证。

M1卡片的认证过程包含三次相互验证,图2所示为三次验证的令牌原理框图。

认证过程是这样进行的:

(A)环:

由M1卡向读写器发送一个随机数据RB;

(B)环:

读写器收到RB后,向M1卡片发送一个令牌数据TOKENAB,其中包含了读写器发出的一个随机数据RA;

(C)环:

M1卡收至0TOKENAB后,对TOKENAB的加密部分进行解密,并校验第一次由(A)环中M1卡发出去的随机数RB是否与(B)环中接收到的TOKENAB中的RA相一致;

(D)环:

如果(c)环校验是正确的,则M1卡向读写器发送令牌TOKENBA;

(E)环:

读写器收到令牌TOKENBA后,将对令牌TOKENBA中的RB(随机数)进行解密;

并校验第一次由(B)环中读写器发出的随机数RA是否与(D)环中接收到的TOKENBA中的RA相一致。

如果上述每一个环都能正确通过验证,则整个的认证过程成功。

读写器将可以对刚刚认证通过的卡片上的这个扇区进行读写操作。

在对卡片上其它扇区的读写操作之前,都必须完成上述的认证过程。

认证过程中任何一环出现差错,整个认证将告失败。

如果事先不知卡片上的密码,则由于密码的变化可以极其复杂,因此靠猜测密码而想打开卡片上的一个扇区的可能性几乎为零。

这里提醒一下程序员和卡片的使用者,必须牢记卡片中16个扇区的每一个密码,否则,遗忘某一扇区的密码,将使该扇区中的数据不能读写,没有任何办法可以挽救这种低级错误。

但是,卡片上的其他扇区可以照样使用。

综上所述,可以充分地说明M1卡片的高度安全性、保密性,卡片的应用场合多样性和一卡多用的特点。

Control&ArlthmetlcUnit:

控制及算术运算单元

这一单元是整个卡片的控制中心,是卡片的“头脑”。

它主要对整个卡片的各个单元进行微操作控制,协调卡片的各个操作;

同时它还对各种收/发的数据进行算术运算处理、递增/递减处理、CRC运算处理等等。

可以说是卡片中内建的中央微处理机(MCU)单元。

RAM和ROM:

RAM和ROM单元

RAM主要配合控制及算术运算单元,将运算的结果进行暂时存储,如果某些数据需要存储到EEPROM,则由控制及算术运算单元取出送到EEPROM存储区中;

果某些数据需要传送给读写器,则由控制及算术运算单元取出,经过RF射频接口电路的处理,通过卡片上的天线传送给卡片读写器。

RAM中的数据在卡片失掉电源后(即卡片离开读写器天线的有效工作范围内)将被清除。

ROM中固化了卡片运行所需要的程序指令,由控制及算术运算单元取出对每个单元进行微指令控制。

从而使卡片能有条不紊地与卡片读写器进行数据通信。

Cryptounit:

数据加密单元

该单元完成对数据的加密处理及密码保护,加密的算法通常为DES标准算法或其他。

EEPROMMEMORY/EEPROMINTERFACE:

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、Mifare1非接触式IC卡与卡片读写器的通讯

M1卡与卡片读写器之间的数据通讯过程如图4所示。

复位应答(Answertorequest)

M1卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,此时读写器会接收到由射频卡发出的卡片的类型号,从而确定该卡是否为Ml卡,即验证卡片的卡型。

防冲突机制(Antico11isionLoop)

当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程操作成功会返回被选卡片的序列号。

选择卡片(SelectTag)

选择被选中的卡片的序列号,此时读写器会接收到卡片的容量信息。

三次互相验证(3PassAuthentication)

选定好要处理的卡片之后,读写器接下来需要确定所访问的扇区号,并对该扇区密码进行密码校验,在三次相互验证之后就可以通过加密流进行数据通讯。

(注意:

在选择另一扇区时,则必须进行另一扇区密码校验。

以上操作成功之后,便可以对相应的扇区进行操作,其操作方式可有以下几种类型:

读操作(Read):

读一个块;

写操作(write):

写一个块;

加值操作(Increment):

对数值块进行加值;

减值操作(Decrement):

对数值块进行减值;

存储操作(Restore):

将块中的内容存到数据寄存器中;

传输操作(Transfer):

将数据寄存器中的内容写入块中;

中止操作(Halt):

将卡置于暂停工作状态。

四、Mifare卡的破解

1、mifare卡的基本认证协议

当MIFAREClassic卡接近读卡器的磁场区域时,卡片会接收到读卡器发来的寻卡指令,然后按照防冲突协议发出自己的卡号UID(寻卡过程)。

收到UID后,读卡器会选择这张卡(选卡过程)。

接着读卡器发出对某一块的认证请求,然后就开始了一个标准的三步认证协议。

卡片产生一个随机数nT并以明文方式发送给读卡器。

紧接着读卡器发出它的随机数nR和对卡片的应答aR。

最后卡片返回一个对读卡器的应答aT。

如果读卡器的应答不正确,卡将不会发送aT。

从nR开始,所有的数据都会被加密,也就是说nR,aR,aT会与密钥流ks1,ks2,ks3异或以后再发送出去。

整个过程如图1所示。

2、Cryptol算法

MIFARE卡的安全性,主要依赖于基本认证协议和流加密算法Crypto1。

无论是认证还是加密,都需要卡中密钥的参与,密钥流由Crypto1算法生成。

Crypto1算法由1个48bit的线性反馈移位寄存器(LFSR)和1个两层的20bit输入1比特输出的非线性函数组成。

48bitLFSR由密钥初始化以一定的方式产生密钥流。

国外研究者提出了一些不同的攻击方法,荷兰奈梅亨Raboud大学F.D.Garcia教授等人提出的攻击方案是其中效率较高的。

这种攻击方法主要是利用了密码结构本身的弱点:

非线性函数的抽头只取奇数位,从而把密钥搜索空间从48位降低到20位。

文献的研究结果表明,在获得一组完整的基本认证数据的条件下,攻击者就可以恢复出原始密钥。

3、MIFARE系统的攻击过程

在现实环境中,MIFARE应用系统开发商根据实际需要,往往以三种不同的方式来实现上述基本认证协议。

我们对于MIFAREClassic卡的攻击直接建立在对这三种认证方式的攻击之上。

为此,我们首先需要侦听MIFAREClassic卡与读卡器之间的交互数据。

利用这些数据和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步的明文为300426EE,表示读04块。

接下来第12步为04块中的16字节数据和两字节的校验。

③多扇区认证

相比前两种认证方式,多扇区认证具有更好的安全性,因此往往被一些安全要求较高的应用系统所采用。

该认证方式的特点是:

第一次扇区的认证采用基本认证协议方式,从第二次扇区认证开始,所有的交互过程都是加密的,直到一次完整的交互结束。

这个过程如图2(c)所示,其中a~k与图2(b)中一致。

注意到,第k步完成后读卡器并没有发送新的寻卡指令,而是直接发送加密的认证请求,读卡器接着发送的随机数也是加密的(第m步),这与前面的认证过程不同,之后都与前面的认证过程相同。

这时,由于第二次认证请求卡片再发送随机数都是密文的,使得我们无法获得随机数明文数据。

因此,我们通过穷举所有可能的随机数(216个)来计算密钥,这时我们大约需要做216次单扇区认证解密的离线计算时间。

通过一些如校验位等的漏洞可以减少尝试的随机数,以提高破译密钥的速度。

表3给出了我们实验仿真的多扇区认证的过程。

第13步读卡器直接发送了加密的认证指令,而第14步是一个加密的随机数。

根据第08~10步的数据,我们花费了几秒的时间就计算出第一步认证的密钥是0x307E00DFD5D6。

再根据第14~16步的数据穷举卡发送的随机数,计算出第二步认证的密钥为0x2A9E0E770EFF。

这次我们大概花费几个小时的离线计算时间。

接着我们依次解密出:

第17步的明文为30084A20,表示读08块;

第18步为08块中的16字节数据和两字节的校验。

(3)复制、篡改卡片

从理论上讲,获得了MIFAREClassic的密钥,卡片的安全性就已经丧失。

对于攻击者来说,他们会利用密钥来复制一张相同的卡或者将此卡片按照自己的目的进行修改,给实际应用带来危害。

对于攻击者来说,获得密钥之后只需一台支持MIFAREClassic卡的读卡器就可以将一张合法卡的内容全部复制出来,写入另外一张空白卡片中,而系统并没有办法区分这两张卡片是不同的。

实际中,尽管MIFAREClassic空白卡片的UID是预先固定的,但攻击者可以使用其他类型的支持MIFAREClassic

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1