0 研究导读
门禁卡安全么?二代身份证安全么?他们能够轻易复制,又是使用什么样的技术进行通信和储存信息的?本文解答你的苦恼。
1 卡片分类
IC卡,ID卡,M1卡,RFID卡,各是哪些?按照哪些来进行分类的?
首先介绍卡片的种类和特点。
1.1 ID卡:一般只读,只存储ID
ID卡:只储存了ID号,设备辨识ID号,没有算法可言,容易复制,安全性低。应用:普通门禁卡。
1.2 IC卡(Integrated Circuit):带芯片的智能卡也称
1970年由英国人Roland Moreno发明,他第一次将可编程设置的IC芯片放于卡片中非接触ic卡读写器模块,使卡片具有更多功能。IC卡”和“磁卡”都是从技术角度起的名子,不能将其和“信用卡”、“电话卡”等从应用角度命名的卡相混淆。自一卡通出现之后,国际上对它有多种别称。英文名称有“Smart Card”、“IC Card”等;在欧洲非常是台湾、台湾地区,多称为“聪明卡”、“智慧卡”、“智能卡”等;在我国,一般简称为“IC卡”。
1.3 磁条卡:磁性介质储存的卡。
磁性介质储存,可被轻易读取,被复制,无密码时,复制的卡片无认证,极易被偷刷。一般为接触式。
1.4 RFID 卡:所有采用射频辨识技术的卡、无接触式
所有采用无线射频辨识即射频识别技术(Radio Frequency Identification,RFID)的卡。根据供电形式又分为:
无源卡:没有电源,近距离接触辨识、频段低。应用:校园卡,公交卡,二代身份证。
有源卡:自带电源,可以主动向外发射讯号。应用:ETC系统。
半有源卡:平常处于休眠状态,低频讯号激活后,电源供电高频精确通讯。无源RFID自身不供电,但有效辨识距离太紧。有源RFID辨识距离足够长,但需外接电源,体积较大。而半有源RFID就是为这一矛盾而妥协的产物。半有源RFID又称作低频激活触发技术。在一般情况下,半有源RFID产品处于休眠状态,仅对标签中保持数据的部份进行供电非接触ic卡读写器模块,因此耗电量较小,可维持较长时间。当标签步入射频识别阅读器辨识范围后,阅读器先以125KHz低频讯号在小范围内精确激活标签使之步入工作状态,再通过2.4GHz微波与其进行信息传递。也即是说,先借助低频讯号精确定位,再利用高频讯号快速传输数据。
1.5 M1卡(NXP Mifare1 Card):使用M1芯片的非接触式一卡通,可读写
所谓的M1芯片,是指飞利浦下属子公司恩智浦出品的芯片简写,全称为NXP Mifare1系列,常用的有S50及S70两种机型。常见的有卡式和钥匙扣式。存储了ID号,可读写数据,M1卡发一个数据到设备,设备再传一个数据给M1卡确认,再进行交易或身分认证,只有一个算法。可以反复估算卡片密钥,进行暴力破解。特点:可读写,有存储器无处理器。
1.6 射频存储卡
同上是采用了射频功能的存储卡。M1卡是射频存储卡的一个子集,市面上大部分使用的射频存储卡,都采用了M1卡芯片。特点:可读写,有存储器无处理器。
1.7 CPU 卡:有处理器的卡
有操作系统,可储存数据,也有自己的ID号,CPU卡发一串数据给设备,设备与SAM卡进行运算,设备再发一串数据回CPU卡确认,然后进行交易或身分认证;跟M1卡的区别在于一个算法在空中,一个算法在设备上面;无论是卡商,设备商,运营商,都不知道其中的算法,所以这个系统的安全性会高好多。有接触式也有非接触式。特点:可读写,有存储器和处理器。安全性极高,卡片内部有微处理器和存储空间,
1.8 芯片卡:
CPU卡的另外一种简称,即可接触式也可以非接触式。
1.9 其他概念接触式非接触式:
非接触式卡虽然就是射频卡,由IC芯片、感应天线组成,封装在一个标准的PVC卡片内,芯片及天线无任何外露部份(也不一定)。
接触式卡:芯片金属曝露在外,肉眼可以看到,通过芯片上的触点可与读写外界接触交换信息。现在的建行卡大部分都是接触式的芯片卡。
但是也有例外,以扬州的公积金卡为例,芯片曝露在外边,既可以进行接触式刷卡(刷社保),也可以进行非接触式刷卡(坐公汽等)。是将RFID和这两种技术融合在一起了。
NFC 和 RFID的关系和区别
NFC是RFID的一部分,ETC是RFID的一个分支。
两者都是无线射频技术。它们都有各自的使用领域,可以说是相辅相成。NFC的工作频度为13.56MHz,ETC的工作频度为2.45GHZ,而RFID的工作频度有低频,高频(13.56MHz)及超高频。工作距离:NFC的工作距离理论上为0-20cm,但是在产品的实现上,由于采用了特殊功率抑制技术,使其工作距离只有0-10cm,从而更好地保证业务的安全性。由于RFID具有不同的频度,其工作距离在几厘米到几十米不等。工作模式:NFC同时支持读写模式和卡模式。而在RFID中,读卡器和非接触卡是独立的两个实体,不能切换。点对点通信:NFC支持P2P模式,RFID不支持P2P模式。应用领域: RFID更多的应用在生产,物流,跟踪和资产管理上,ETC主要用于高速收费,而NFC则工作在门禁,公交卡,手机支付等领域。标准合同: NFC的底层通信合同兼容高频RFID的底层通讯标准,即兼容ISO14443/ISO15693标准。NFC技术还定义了比较完整的下层合同,如LLCP,NDEF和RTD等。
2 各类卡片结构&通信原理合同&识别方法&安全性剖析
前面是把各种卡片的类型大致梳理了一遍,接下来介绍各个卡片的结构和通讯原理。
这里主要介绍非接触式IC卡的结构
2.1 卡片组成结构
非接触式IC卡主要有:IC芯片、感应线圈组成的,封装在一个标准的PVC卡片内部。实际上是将一卡通和射频辨识技术结合在一起,通信距离大约是5-10cm。
2.2 供电原理
无源一卡通 比如M1卡是带有储存功能,CPU卡除了有存储器还有微处理器。所以在接触过程中,需要进行供电。
供电的方法是采用电磁感应,射频读写器回应一卡通发一组固定频度的电磁波。卡片内部就有一个LC连谐振电路,和读写器发射的频度相同。这样在电磁波激励下,LC谐振电路形成共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个双向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电流,将卡内数据发射出去或接受读写器的数据。
也就是感应线圈,从中获得持续稳定的直流工作电源电流,通过查文献,现在的电流早已可以达到3.5V。
2.3 通信原理
非接触性一卡通与优盘之间通过无线电波来完成读写操作。二者之间的通信频度为13.56MHZ。非接触性一卡通本身是无源卡,当读写器对卡进行读写操作时,读写器发出的讯号由两部份叠加组成:
一部分是电源讯号,该讯号由卡接收后,与本身的L/C形成一个顿时能量来供给芯片工作。
另一部分则是指令和数据讯号,指挥芯片完成数据的读取、修改、储存等,并返回讯号给读写器,完成一次读写操作。
reader-读写器 则通常由单片机,专用智能模块和天线组成,并配有与PC的通信插口,打印口,I/O口等,以便应用于不同的领域。
2.4 通信协议
先描述几个概念:标签(Tag)———卡片背部储存信息又称作标签。比如我们用Mifare Classic Tool 对卡片进行读取的时侯。提示的就是对标签进行查找,一般卡上的标签指的是卡片UID。
通信分为以下几个过程:
寻卡过程:当 MIFARE Classic 卡接近优盘的磁场区域时,卡片会接收到优盘发来的寻卡指令,然后根据防冲突合同发出自己的卡号 UID。
选卡过程:收到 UID 后,读卡器会选择这张卡(选卡过程)。接着优盘发出对某一块磁道or全部的认证恳求。
认证过程(双方):大部分情况下,可以具象为以下三个步骤:
【1】卡片形成一个随机数 NT 并以明文形式发送给优盘。(一般是伪随机数,且为硬件随机的方法)
【2】读卡器获取到卡片的ID和随机数NT,根据卡片的ID在数据库中找到卡片的key。使用key将卡片发出的随机数NT加密 得到对卡片的应答aR。接着将对卡片的应答aR和优盘的自己的随机数nR发给卡片
【3】卡片首先用自己的密钥key验证nR ,如果优盘发送的nR错误,认证流程直接结束,所有的数据就会弄成不可读。如果优盘发送的nR正确,卡片会用自己的密钥对优盘的随机数nR估算后发送。整个过程如图所示:
有些卡是非加密卡,可以直接进行读取和模拟。值得一提的是,在只有储存功能的M1卡中,加解密算法以及key都使用电路硬件实现的,写死在卡片上。所以这就形成了一个问题,可以不断地重复,对密钥进行爆破。因为M1卡没有记录密钥尝试次数的功能。所以,只要有设备我们就可以对M1卡进行一个爆破了。然而,CPU卡 就复杂多了,内部有处理器,加密过程是通过CPU实现的。同时拥有记录尝试次数的逻辑判定,如果密钥输入次数过多,卡片都会锁死Hash-Lock。
3 M1卡片破解
M1卡 破解以及读写工具:
3.1 最简单工具——带NFC功能的小米手机
【1】硬件工具:NFC功能手机【2】软件:Mifare Classic Tools
3.2PN532 30¥左右
PN532 淘宝价钱大约30¥左右,
需要进行点焊或则用胶水粘上去
用USB联接笔记本进行使用
上位机安装miLazyCracker
下载地址:
CraptEV1文件可自行下载 提取码: 7vjj*
Linux上安装libnfc驱动,参考见这篇简书
Linux上安装miLazyCracker,就一行命令:./miLazyCrackerFreshInstall.sh
安装完毕后,创建一个临时目录,既可以开始暴力破解了。可以参考这篇文章
3.3 PM5PM6 100-110¥左右
这个软件大约长这样的:
有专门的M1卡服务程序:可以进行一键读写、爆破等。
设备之间的对比:现在某宝上早已可以买到PM6了,可以破解更多机型的卡片。
4 破解实战——身边的卡片
首先第一个想到的是公司饭堂饭卡,其次是公司的门禁卡,然后就是公积金卡、身份证。本人全都试了。因为没有订购专门的破解设备,我就先用手机进行尝试:
4.1 公司卡:
看见里面有写SAK20,SAK20的卡是CPU卡,没有通用的破解工具,无法进行简单破解。毕竟是安全公司哈,安全性还是可以的。
4.2 接着看一下公积金卡:
社保卡读取的数据全部都是空,我市的公积金卡是有NFC功能,并且可以当作公汽卡刷卡使用的。没有数据,有可能是因为是半加密的,也有可能是因为没有使用过NFC的功能,所以没有数据。
4.3 接着是二代身份证:
将卡片放置在手机NFC功能上,手机能感应到卡片,但是没有任何响应,甚至连标签Tag都没有出现。我猜想二代身份证是使用的CPU卡,到网上查找资料,是非接触式IC卡(typeB的带COS-芯片操作系统-的CPU卡),也就是我们说的RFID功能的CPU卡。但是为何读不下来,就不清楚了,可能采用的芯片,MCT软件辨识不下来,连卡片的UID都没有。
4.4 某餐饮公司饭卡:
M1 是被动卡,需要优盘为之供能,一旦优盘切断电源,卡中临时数据都会遗失,所以无论试错多少次密码都不会被锁定因而容易被暴力破解。
所有的数据都可以读下来
可以观察到只有0-3这四个磁道有数据,别的磁道没数据。因为每晚只有早上喝水的时侯用到这张饭卡,所以首先须要积累一定量的数据量。然后再进行剖析。首先采集了三天的数据,每天刷一次卡,且晓得卡的金额,对比。
Block0是卡片的信息数据。包括卡片本身的UID、型号厂商等信息。最后一行代表的是卡片的key好多不安全的卡片默认key为FFFFFFFFFFF。keyA和keyB的作用各不相同。后面解释一下
将磁道2-3的数据提取下来,5天的量。可以观察到磁道2的第一行四个十六进制代表的是卡片余额。如下:
【255】9C630000000000000000001C3E000B00000000DC05000000000000000001000000000000000074290B1C0EC67400001A------------FF078069FFFFFFFFFFFF【270】78690000000000000000004038000A00000000DC05000000000000000001000000000000000073290B2214C673000000------------FF078069FFFFFFFFFFFF【285】546F0000000000000000006432000900000000DC05000000000000000001000000000000000072290B1E1BC6720000FA------------FF078069FFFFFFFFFFFF【300】3075000000000000000000882C000800000000DC05000000000000000001000000000000000071290B1C03C67100001A------------FF078069FFFFFFFFFFFF【315】0C7B000000000000000000AC26000700000000DC05000000000000000001000000000000000070290B1D00C6700000F9------------FF078069FFFFFFFFFFFF
比如 255元对应的9C63 实际上进行一个颠倒就是 63 9C,转换成十进制就是25500。是余额精确到分的16进制表示 255.00。这个块的前面4个十进制数代表的仍然意义不明。直到在网上查了M1卡开发手册,猜测是某种校准。后来将所有的数据中金额和前面16补码数加上去,发现结果都相同,验证了我的猜测。
69 78 +28 40=A1B863 9C+ 3E 1C=A1B8....所以,校验的形式就是将两个数字相乘。
第二行的数据DC05 原本以为是固定不变的数据,后来发觉是每晚的消费金额, 05DC 十进制是1500 是每晚消费的金额15元,后面1表示的是每晚消费的次数为1次。
第三行数据,分别比较各个数据 29 7X的数据是一个递增数据,猜测应当是某钟时间数据。根据前面的记录,发现并不是依次递增,比如经过某个周日的时侯,这个数据会跳两个。应该是日期的数据。然后就是0B1C0E的数据,这几个数据是不规则变化的,但是经过观察发觉 1C 0E等等转化成十进制永远不超过60。猜测应当是上一次刷卡的时间数据。有一次晚上喝水的时侯,观察了刷卡机里面的时间,验证得到确实是时间数据。比如0B2214 就是11:34:20秒,这样的一个时间数据。最后一个C674的数据也是个递增数据,应该是刷卡次数的递增数据。记录累计的刷卡次数。
然后还有最后两个十六进制数,应该是一个校准数据。至此,关键数据全部成功推算下来。
5 总结和展望5.1 IC 发展现况
2011年的数据:我国也已成为世界上最大的 IC 卡市场之一,2011年,我国 IC 卡实现销售收入达到 90 亿元,销售数目达到 24.3 亿张(包括接触式 IC 卡、非接触式 IC 卡和双界面卡)。二代身份证是我国非接触式 IC 卡最大的应用之一,据统计,截止 2011 年底,我国已累计发行二代身份证 10 亿张左右。
IC卡发展要求:
高安全性 应用最广泛的是对称密钥加密算法 DES 算法以及双宽度秘钥的 3DES 算法。此外,还有一些 IC 卡早已集成了非对称性秘钥算法,如 1024 位 RSA 算法。
低功耗 绝大多数非接触式 IC 卡的内部不带有电瓶,其工作电源主要来源于天线上感应到的磁场能量。因而低功耗设计对于非接触式 IC 卡来说变得极为重要,且现今非接触式 IC 卡的功能越来越复杂,容量也越来越大,有些 CPU卡中还包含微处理器及高性能的安全算法,这无疑对非接触式 IC 卡的低功耗设计提出了更高的要求。
一卡多用 一张 IC 卡才能具有健康卡、信用卡、交通卡等多种功能, 如此将要求 IC 卡具有更大的存储容 量、更快的存取速度。
大容量 实现非接触式 IC 卡一卡多用的功能,需要在卡中集成具有一 定容量的存储器以保证就能储存卡在不同应用下的数据。目前的 IC 卡大多采用 存储器分区的方式来实现不同应用数据的储存。而 CPU 卡的出现,则促使 IC 卡 需要开辟一定的储存区域用于储存卡里操作系统。因此,大容量是现今 IC 卡发 展的重要方向。
复合式 发展复合式 IC 卡 复合式卡即双界面卡,其既可以通过接触式形式与优盘进行交互,也可以通过非接触式形式与优盘进行交互,这促使 IC 卡可以应用于多种场合,极大的便捷了人们的生活。现在好多国际大公司包括国外的一些公司都已成功开发了双界面一卡通并投入使用。
国家三种标准的非接触IC卡距离
5.2 威胁建模以及功击方法研究现况
攻击者可借助标签和优盘通讯信道的数学特点施行的功击,攻击主要方法有以下几种。
【1】干扰功击:干扰功击主要采用一些技术手段搅乱、破坏标签和读写器之间的传输讯号,以达到破坏系统的可用性的目的。但有些时侯,攻击不都是外部有目的的干扰,也可能是多读写器同时工作,或信道本身质量不好引起的内部干扰。
【2】克隆功击:也可以称之为复制功击。主要通过复制别人的电子标签或智能卡等的信息,并借助它进行冒名顶替以获得个别经济或其它方面的利益。从目前的情形来看,攻击者复制智能卡的成本不是太高,对技术条件的要求也比较低,这样就促使克隆功击时常发生。
【克隆功击-案例】2004年,约翰霍普金斯大学和实验室的一些研究人员找到了DST的安全弱点,并示范复制功击这儿,由荷兰仪器(公司制造的一种低频设备,该设备通过外置加密功能来实现数字签名验证功能。当时,主要被用于避免车辆抢劫,已经被配备在数以万计的车辆上。研究者们的功击显示,只通过一些少量的、简单的挑战-响应对,可以破解富含的车辆钢匙,实现对的完全复制。
【3】芯片功击:芯片是标签的核心部件,承担储存和估算功能。针对标签芯片常见的功击手段主要有两种:电流剖析功击和故障功击。根据施行特性,电流剖析功击可以分为简单电源功击和差分电源功击。故障功击的原理是通过功击造成一个或多个触发器出现故障,从而对标签寄存器中的数据进行破坏。该功击的主要目的是通过一些泄露信息,来获得芯片内密码算法信息,甚至秘钥信息。
【芯片功击-案例1】:2008年,荷兰政府声称的芯片可以被破解。是芯片类的一大家族,被广泛应用于城市的非接触公汽卡和门禁卡,据恐怕,当时全球起码有亿张含芯片的卡片处于使用当中。芯片的易受攻击性可被黑客借助来克隆采用该芯片的非接触卡。荷兰大学和德国大学两个独立研究小组分别否认了芯片的易受攻击性。荷兰大学实际进行了芯片的破解过程,并将项的举办过程公布的网路上,还附上一段视频,以电影的方式述说了一个黑客团体在未知的情况下对卡进行了克隆。德国学院则发表了篇破解芯片加密算法的论文。(由于 Mifare 1 卡的认证与数据的传输均采用相同的安全算法和秘钥,安全算法的破解促使攻击者在较短时间内即可获得 Mifare 1 卡的秘钥,进而获取 Mifare 1 卡中的数据信息并可对卡中的数据做恢复或对卡进行复制。为避免这种风波的出现,目前已有一些国家宣布严禁继续使用 Mifare 1 卡,而在其它一些地区,也对 Mifare 1 卡的安全性提出了重新评估的要求。与此同时,我国也下发了相关文件,要求各级单位对 IC 卡安全工作梳理排查,采取保障举措,防止不法分子借助 Mifare 1 卡漏洞进行恶意功击和破坏。)
【芯片功击-案例2】:2011年,德国鲁尔大学的研究人员采用侧信道功击,花费了七个小时,破解了使用Mifare DESFire MF3ICD40 的安全算法,获得了智能卡使用的112位加密密钥,破解所需设备须要3000美元。该破解加密算法的出现将促使对RFID芯片的完美复制成为可能。
【4】可用性功击
毁坏功击是攻击者在获得、接触到标签实体的情况下,对标签实体施行化学破坏。例如对天线部份进行破坏,这样将造成标签未能获得足够的通讯能量,还可以造成电子标签读写距离降到最小同时,一种更中级的远程功击方式被提出,在不需要接触标签的情况下,使相关工具形成强电磁脉冲来破坏标签接收电路,使得标签不能使用。该功击的是使标签被损,不能与读写器通讯。
【5】其他功击形式(暂无使用案例)重放,异化,标签失效,Dos攻击,窃听功击,中间人,等等
【其他案例】2009年2月13日,恩智普全球交通事业部总经理CiaranFisher和HenriArdevol恩智普中国智能辨识事业部高级经理田陌晨、职员姜晨以及芯片代理商深圳市杰灵昌科技有限公司总经理曹磊一行共5人,专门就M1芯片漏洞及其解决方案到达实公司进行了历时三个小时的交流。并针对网上留传的荷兰政府发布了一项警告进行了澄清及解释,提出此破解S50卡前题还须要以下几个前提:
1、需要订购国内提供破解方案组织的专用设备(此设备已按照相关政府组织严禁转让)2、或须要领到正在使用中的原系统的读卡设备3、需要接触到正在使用中的用户卡片,再针对此算法的漏洞进行暴力破解。
具备这种条件后,复制一张卡须要10~30分钟,这种破解方法,理论上任何密码都能破解,只要有足够的时间,从原理上说就是强行对秘钥算法的破解。本次秘钥的破解也只是针对使用标准锁匙算法中出现的一种风险事件,但并不代表所有使用Mifare卡系统产品的加密机制全部直接采用原有锁匙。
因此现今市面上大部分采用加密芯片的卡片,相对都比较安全,因为功击条件比较苛刻。
5.3 M1卡的安全建议
国内好多厂商对于卡密都没有进行更改大部分都是弱密码,如 FFFFFFFFFFFF、000000000000 等而 M1 是被动卡,需要优盘为之供能,一旦优盘切断电源,卡中临时数据都会遗失,所以无论试错多少次密码都不会被锁定因而容易被暴力破解。可以采用复杂密码以提升安全。
IC 卡分 16 个磁道,很多厂商只对和金钱有关的磁道进行加密,这样就很容易通过对比来揭秘加密的磁道。可以 16 个磁道全加密多加混淆以提升剖析难度。
由于有些厂商对 IC 卡的加密十分信任,数据完全储存于 IC 卡中,不与数据库做交互,因此有人借助这一漏洞来更改一卡通中的信息因而达到非法的目的。这种问题的解决办法是将卡中信息存入数据库中,每次刷卡时将一卡通中的信息与数据库中的信息做对照,如果一样可以使用,如果不一样则严禁此卡使用。
逐渐 M1 卡替换成安全系数更高的 CPU 卡。