身边的智能卡安全么?——IC卡安全性初探
2020-12-22 11:50:47 Author: xz.aliyun.com(查看原文) 阅读量:490 收藏

门禁卡安全么?二代身份证安全么?他们能否轻易复制,又是使用什么样的技术进行通讯和存储信息的?
一文解答你的困惑。

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产品处于休眠状态,仅对标签中保持数据的部分进行供电,因此耗电量较小,可维持较长时间。当标签进入射频识别阅读器识别范围后,阅读器先现以125KHz低频信号在小范围内精确激活标签使之进入工作状态,再通过2.4GHz微波与其进行信息传递。也即是说,先利用低频信号精确定位,再利用高频信号快速传输数据。

1.5 M1卡(NXP Mifare1 Card):使用M1芯片的非接触式IC卡,可读写

所谓的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等。

前面是把各类卡片的类型大致梳理了一遍,接下来介绍各个卡片的结构和通信原理。

这里主要介绍非接触式IC卡的结构

2.1 卡片组成结构

非接触式IC卡主要由:IC芯片、感应线圈组成的,封装在一个标准的PVC卡片内部。
实际上是将IC卡和射频识别技术结合在一起,通信距离大概是5-10cm。

2.2 供电原理

无源IC卡 比如M1卡是带有存储功能,CPU卡不仅有存储器还有微处理器。所以在接触过程中,需要进行供电。

供电的方式是采用电磁感应,射频读写器回想IC卡发一组固定频率的电磁波。卡片内部就有一个LC连谐振电路,和读写器发射的频率相同。
这样在电磁波激励下,LC谐振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。

也就是感应线圈,从中获得持续稳定的直流工作电源电压,通过查文献,现在的电压已经可以达到3.5V。

2.3 通信原理

非接触性IC卡与读卡器之间通过无线电波来完成读写操作。
二者之间的通讯频率为13.56MHZ。
非接触性IC卡本身是无源卡,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:

  1. 一部分是电源信号,该信号由卡接收后,与本身的L/C产生一个瞬间能量来供给芯片工作。
  2. 另一部分则是指令和数据信号,指挥芯片完成数据的读取、修改、储存等,并返回信号给读写器,完成一次读写操作。

reader-读写器 则一般由单片机,专用智能模块和天线组成,并配有与PC的通讯接口,打印口,I/O口等,以便应用于不同的领域。

2.4 通信协议

先描述几个概念:
标签(Tag)———卡片头部存储信息又叫做标签。比如我们用Mifare Classic Tool 对卡片进行读取的时候。提示的就是对标签进行查找,一般卡上的标签指的是卡片UID。

通信分为以下几个过程:

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

  2. 选卡过程:
    收到 UID 后,读卡器会选择这张卡(选卡过程)。接着读卡器发出对某一块扇区or全部的认证请求。

  3. 认证过程(双方):
    大部分情况下,可以抽象为以下三个步骤:
    【1】卡片产生一个随机数 NT 并以明文方式发送给读卡器。(一般是伪随机数,且为硬件随机的方式)
    【2】读卡器获取到卡片的ID和随机数NT,根据卡片的ID在数据库中找到卡片的key。使用key将卡片发出的随机数NT加密 得到对卡片的应答aR。接着将对卡片的应答aR和读卡器的自己的随机数nR发给卡片
    【3】卡片首先用自己的秘钥key验证nR ,如果读卡器发送的nR错误,认证流程直接结束,所有的数据都会变成不可读。如果读卡器发送的nR正确,卡片会用自己的秘钥对读卡器的随机数nR计算后发送。
    整个过程如图所示:

有些卡是非加密卡,可以直接进行读取和模拟。
值得一提的是,在只有存储功能的M1卡中,加解密算法以及key都使用电路硬件实现的,写死在卡片上。
所以这就产生了一个问题,可以不断地重复,对秘钥进行爆破。因为M1卡没有记录秘钥尝试次数的功能。
所以,只要有设备我们就可以对M1卡进行一个爆破了。
然而,CPU卡 就复杂多了,内部有处理器,加密过程是通过CPU实现的。同时拥有记录尝试次数的逻辑判断,如果秘钥输入次数过多,卡片就会锁死。

M1卡 破解以及读写工具:

3.1 最简单工具——带NFC功能的小米手机

【1】硬件工具:NFC功能手机
【2】软件:Mifare Classic Tools

3.2 PN532 30¥左右

PN532 淘宝价格大概30¥左右,

需要进行焊接或者用胶带粘起来

用USB连接电脑进行使用

上位机安装miLazyCracker

  1. 下载地址:https://github.com/nfc-tools/miLazyCracker
  2. CraptEV1文件可自行下载
    https://pan.baidu.com/s/1FOWQUTH6AQ_aPcrsW9fILA
    提取码: 7vjj*
  3. Linux上安装libnfc驱动,参考见这篇简书https://www.jianshu.com/p/313510d67411
  4. Linux上安装miLazyCracker,就一行命令:./miLazyCrackerFreshInstall.sh

安装完毕后,创建一个临时目录,既可以开始暴力破解了。

3.3 PM5PM6 100-110¥左右

大概长这样的:

有专门的M1卡服务程序:可以进行一键读写、爆破等。

设备之间的对比:现在某宝上已经可以买到PM6了,可以破解更多型号的卡片。

首先第一个想到的是公司食堂饭卡,其次是公司的门禁卡,然后就是社保卡、身份证。
本人全都试了。
因为没有购买专门的破解设备,我就先用手机进行尝试:

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】
9C630000000000000000001C3E000B00
000000DC050000000000000000010000
00000000000074290B1C0EC67400001A
------------FF078069FFFFFFFFFFFF
【270】
78690000000000000000004038000A00
000000DC050000000000000000010000
00000000000073290B2214C673000000
------------FF078069FFFFFFFFFFFF
【285】
546F0000000000000000006432000900
000000DC050000000000000000010000
00000000000072290B1E1BC6720000FA
------------FF078069FFFFFFFFFFFF
【300】
3075000000000000000000882C000800
000000DC050000000000000000010000
00000000000071290B1C03C67100001A
------------FF078069FFFFFFFFFFFF
【315】
0C7B000000000000000000AC26000700
000000DC050000000000000000010000
00000000000070290B1D00C6700000F9
------------FF078069FFFFFFFFFFFF

比如 255元,的9C63 实际上进行一个颠倒就是 63 9C,转换成十进制就是255.00。时精确到分的16进制表示。这个块的后面4个十进制数代表的一直意义不明。
直到在网上查了M1卡开发指南,猜测是某种校验。后来将所有的数据中金额和后面16进制数加起来,发现结果都相同,验证了我的猜想。

69 78 +28 40=A1B8
63 9C+ 3E 1C=A1B8
....
所以,校验的方式就是将两个数字相加。


第二行的数据DC05 原本以为是固定不变的数据,后来发现是每天的消费金额, 05DC 十进制是1500 是每天消费的金额15元,后面1表示的是每天消费的次数为1次。


第三行数据,分别比较各个数据 29 7X的数据是一个递增数据,猜测应该是某钟时间数据。根据后面的纪录,发现并不是依次递增,比如经过某个周末的时候,这个数据会跳两个。应该是日期的数据。
然后就是0B1C0E的数据,这几个数据是不规则变化的,但是经过观察发现 1C 0E等等转化成十进制永远不超过60。猜测应该是上一次刷卡的时间数据。有一次中午吃饭的时候,观察了刷卡机上面的时间,验证得到确实是时间数据。
比如0B2214 就是11:34:20秒,这样的一个时间数据。
最后一个C674的数据也是个递增数据,应该是刷卡次数的递增数据。记录累计的一个刷卡次数。

然后还有最后两个十六进制数,猜测应该是一个校验数据。
通过对比这些数据,我们可以对上述的卡片数据进行一个改造然后重新写入。
但是,对数据进行改造之后发现无法对饭卡进行写入,错误是写访问秘钥A未知。
但是我们之前已经爆破出来了读取的秘钥,写的秘钥有可能是这个软件的原因,也有可能是设备的原因(按道理是FFFFFFFFFF的默认秘钥),因此无法进行写入。可能需要后续购买设备进行研究。

5.1 智能卡 发展现状

2013年的数据:
我国也已成为世界上最大的 IC 卡市场之一,2011年,我国 IC 卡实现销售收入达到 90 亿元,销售数量达到 24.3 亿张(包括接触式 IC 卡、非接触式 IC 卡和双界面卡)。二代身份证是我国非接触式 IC 卡最大的应用之一,据统计,截止 2011 年底,我国已累计发行二代身份证 10 亿张左右。

智能卡片发展要求:

  1. 高安全性
    应用最广泛的是对称密钥加密算法 DES 算法以及双长度密钥的 3DES 算法。此外,还有一些 IC 卡已经集成了非对称性密钥算法,如 1024 位 RSA 算法。
  2. 低功耗
    绝大多数非接触式 IC 卡的内部不带有电池,其工作电源主要来源于天线上感应到的磁场能量。因而低功耗设计对于非接触式 IC 卡来说显得极为重要,且现在非接触式 IC 卡的功能越来越复杂,容量也越来越大,有些 CPU卡中还包含微处理器及高性能的安全算法,这无疑对非接触式 IC 卡的低功耗设计提出了更高的要求。
  3. 一卡多用
    一张 IC 卡能够具有健康卡、信用卡、交通卡等多种功能, 如此将要求 IC 卡具有更大的存储容
    量、更快的存取速度。
  4. 大容量
    实现非接触式 IC 卡一卡多用的功能,需要在卡中集成具有一
    定容量的存储器以保证能够存放卡在不同应用下的数据。目前的 IC 卡大多采用
    存储器分区的方法来实现不同应用数据的存放。而 CPU 卡的出现,则使得 IC 卡
    需要开辟一定的存储区域用于存放卡内操作系统。因此,大容量是当今 IC 卡发
    展的重要方向。
  5. 复合式
    发展复合式 IC 卡 复合式卡即双界面卡,其既可以通过接触式方式与读卡器进行交互,也可以通过非接触式方式与读卡器进行交互,这使得 IC 卡可以应用于多种场合,极大的方便了人们的生活。现在很多国际大公司包括国内的一些公司都已成功开发了双界面IC卡并投入使用。

国家三种标准的非接触IC卡距离

5.2 威胁建模以及攻击方式研究现状

攻击者可利用标签和读卡器通信信道的物理特性实施的攻击,攻击主要方式有以
下几种。
【1】干扰攻击:干扰攻击主要采用一些技术手段扰乱、破坏标签和读写器之间的传输信号,以达到破坏系统的可用性的目的。但有些时候,攻击不都是外部有目的的干扰,也可能是多读写器同时工作,或信道本身质量不好导致的内部干扰。


【2】克隆攻击:也可以称之为复制攻击。主要通过复制他人的电子标签或智能卡等的信息,并利用它进行冒名顶替以获得某些经济或其它方面的利益。从目前的情形来看,攻击者复制智能卡的成本不是太高,对技术条件的要求也比较低,这样就使得克隆攻击经常发生。
【案例】2004年,约翰霍普金斯大学和实验室的一些研究人员找到了DST的安全弱点,并示范了对的复制攻击这里,是由德国仪器(公司制造的一种低频设备,该设备通过内置加密功能来实现数字签名验证功能。当时,主要被用于防止汽车盗窃,已经被配备在数以万计的汽车上。研究者们的攻击显示,只通过一些少量的、简单的挑战响应对,可以破解含有的汽车钢匙,实现对的完全复制。


【3】芯片攻击:芯片是标签的核心部件,承担存储和计算功能。针对标签芯片常见的攻击手段主要有两种:电流分析攻击和故障攻击。根据实施特点,电流分析攻击可以分为简单电源攻击和差分电源攻击。故障攻击的原理是通过攻击导致一个或多个触发器出现故障,从而对标签寄存器中的数据进行破坏。该攻击的主要目的是通过一些泄漏信息,来获得芯片内密码算法信息,甚至密钥信息。
【案例】:2008年,荷兰政府宣称的芯片可以被破解。是芯片类的一大家族,被广泛应用于城市的非接触公交卡和门禁卡,据估计,当时全球至少有亿张含芯片的卡片处于使用当中。芯片的易受攻击性可被黑客利用来克隆采用该芯片的非接触卡。荷兰大学和德国大学两个独立研究小组分别证实了芯片的易受攻击性。荷兰大学实际进行了芯片的破解过程,并将项的开展过程公布的网络上,还附上一段视频,以影片的形式讲述了一个黑客团体在未知的情况下对卡进行了克隆。德国大学则发表了篇破解芯片加密算法的论文。
(由于 Mifare 1 卡的认证与数据的传输均采用相同的安全算法和密钥,安全算法的破解使得攻击者在较短时间内即可获得 Mifare 1 卡的密钥,进而获取 Mifare 1 卡中的数据信息并可对卡中的数据做恢复或对卡进行复制。为防止此类事件的出现,目前已有一些国家宣布禁止继续使用 Mifare 1 卡,而在其它一些地区,也对 Mifare 1 卡的安全性提出了重新评估的要求。与此同时,我国也下发了相关文件,要求各级单位对 IC 卡安全工作梳理排查,采取保障措施,防止不法分子利用 Mifare 1 卡漏洞进行恶意攻击和破坏。)
【案例】: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卡的安全建议

  1. 国内很多厂商对于卡密都没有进行修改大部分都是弱密码,如 FFFFFFFFFFFF、000000000000 等而 M1 是被动卡,需要读卡器为之供能,一旦读卡器切断电源,卡中临时数据就会丢失,所以无论试错多少次密码都不会被锁定因此容易被暴力破解。可以采用复杂密码以提高安全。
  2. IC 卡分 16 个扇区,很多厂商只对和金钱有关的扇区进行加密,这样就很容易通过对比来解密加密的扇区。可易 16 个扇区全加密多加混淆以提高分析难度。
  3. 由于有些厂商对 IC 卡的加密非常信任,数据完全存放于 IC 卡中,不与数据库做交互,因此有人利用这一漏洞来修改IC卡中的信息从而达到非法的目的。这种问题的解决办法是将卡中信息存入数据库中,每次刷卡时将IC卡中的信息与数据库中的信息做对照,如果一样可以使用,如果不一样则禁止此卡使用。
  4. 逐渐 M1 卡替换成安全系数更高的 CPU 卡。

文章来源: http://xz.aliyun.com/t/8672
如有侵权请联系:admin#unsafe.sh