智能卡安全概览
智能卡安全概览
智能卡是一种通过内嵌芯片实现的携带个体信息的身份识别卡。IOT安全研究中智能门锁、智能汽车等都会涉及智能卡。
智能卡分类
从读取机制上,智能卡分为接触式和非接触式。接触式智能卡如银行卡,通常芯片暴露在表面;非接触式智能卡内置芯片和通信线圈,没有裸露部分。在应用上,非接触式智能卡更加广泛,外形有卡贴、首饰、薄卡、钥匙卡等。
从通讯频率上,智能卡分为125KHz低频(LF)、13.56MHz高频(HF)、868MHz-915Mhz超高频(UHF),低频卡又称ID卡,高频卡又称IC卡。频率越高,波长越小,能携带的信息越多,传输距离越远。
ID卡:频率有125KHz、250KHz、375KHz、500KHz,多为125KHz;只存储卡号;芯片出产后卡号不可修改;卡片类ID卡多为圆线圈;和IC卡相比线圈大芯片小
IC卡:频率有13.56MHz、868MHz,多为13.56MHz;存储卡号及其它数据;可由授权用户反复擦写;卡片类IC卡多为方线圈;和ID卡相比线圈小芯片大
各频率的加密情况和市场占有率如图(图片来源):
非接触式智能卡是RFID技术的一种应用,各个频带的非接触式智能卡都属于RFID卡。RFID技术中各个频率的应用如下(图片来源):
RFID和NFC
RFID,全称Radio Frequency Identification(射频识别),是由雷达技术衍生出的一种无线通信技术。RFID系统包括读写器(Reader)、标签(Tag)和数据管理系统三个部分,标签中存储ID和个体信息,读写器读写其中内容进行识别,并与数据管理系统交互进行数据管理和处理。读写器和标签间采用各个频率的无线电波进行通信。
NFC,全称Near-field communication(近场通信),是一套短距高频无线通信的标准。NFC由RFID演变而来,同样使用无线电波进行通信,但是仅在13.56MHz工作,通信距离一般在10cm以内。NFC兼容了RFID,NFC设备能够模拟为IC卡被读卡器识别。除此之外,NFC还能作为非接触读卡器读取别的标签,两个NFC设备之间能够实现点对点通信。
二者最显著的不同在于:
RFID在各个频率都有应用,而NFC只工作在13.56MHz。
RFID中只能由读取器单向对标签进行读写,而NFC中设备能够相互读写。
NFC在13.56MHz兼容RFID,因此带有NFC芯片的设备也能识别13.56MHz的IC卡。
还有一种专门为NFC标准定制的卡称为NTAG卡,该类卡能被所有NFC设备读取,但是无法被无NFC功能的RFID读卡器识别。
IC分类及复制卡检测机制
ID卡仅存储ID且不加密,价格低廉,没有安全性可言,因此破解方面主要讨论IC卡。
ISO/IEC 14443 A/B
国际标准化组织(ISO)和国际电子技术委员会(IEC)制定了非接触式IC卡的国际标准——ISO/IEC14443。
该标准规定射频IC卡分为Type A和Type B两种卡型。Type A卡比Type B卡更常见,但是Type B卡通信抗干扰能力和安全性更强。目前的二代身份证,社保卡,护照等都是Type B卡,平时的饭卡、门禁卡、水卡、一卡通等大多是Type A卡。
Mifare卡
MIFARE是恩智浦半导体(NXP Semiconductors)拥有的商标之一,是一个全球化的非接触式智能卡巨头。MIFARE包括一系列依循ISO/IEC 14443-A规格,利用无线射频识别(频率为13.56MHz)的多种非接触式智能卡专有解决方案。
M1卡
M1卡是使用M1芯片封装的逻辑加密IC卡。M1芯片全称NXP Mifare1系列,常用的有S50(容量1K)及S70(容量4K)两种型号。
M1卡是世界上使用量最大的非接触式IC卡。从M1卡进入中国市场开始,在复制和防复制的对抗过程中演变出了各种各样的检测机制和各类沿用M1数据结构的复制卡。
目前针对IC卡破解的对抗手段有扇区加密、防火墙、滚动码和服务器数据校验等,还有直接脱离逻辑加密IC卡范畴的CPU卡,通过内置微机使其能够实现更复杂的保护机制。目前市场上逻辑加密IC卡仍是主流,但CPU卡破解难度最高,是以后的趋势,恩智浦也推出了CPU卡产品 - Mifare Plus。
各Mifare卡的SAK值如下
防火墙绕过
M1卡将存储空间划分为多个扇区,又将每个扇区划分为多个区块,都从0开始编号。标准M1卡的第0个扇区的第0个区块存放了卡号(UID)、卡号校验位(BCC)、芯片类型(SAK)、应答类别(ATQA)和生产厂商信息,厂商读卡时对这些信息进行校验。0区块不可修改,其它扇区验证后可反复修改。通过修改0区块,就能复制和伪造M1卡。
UID复制卡:可以通过后门指令重复擦写所有扇区。
读卡系统通过检测卡片对后门指令的回应识别UID卡,因此UID卡几乎无法绕过任何防火墙。
CUID复制卡:可以经过常规密码验证后使用普通指令擦写0区块,绕过了对UID卡的检测。
读卡系统通过尝试擦写0区块识别CUID卡,可擦写是复制卡,不可擦写是正常卡。CUID卡可以绕过部分防火墙。
此外,由于CUID卡擦写需要经过密码验证,写错数据有可能破坏验证信息变成废卡,无法再修复。
FUID复制卡:只能修改一次0区块,通过修改一次后锁0区块绕过了对CUID卡的检测。
读卡系统很难识别FUID卡,锁卡后FUID卡就是标准M1卡。FUID卡可以绕过大部分防火墙。
UFUID复制卡: UID卡和FUID卡的结合体,可以手动控制是否锁定,不锁定就是UID卡,锁定后就是标准M1卡,锁定后无法再解锁。同样可以绕过大部分防火墙。
滚动码绕过
滚动码原理:厂商在卡片中增加数据标识,每次刷卡数据标识发生变化,比如刚开始是0,刷一次变成1,再刷一次变成2,0-9不断循环。
- GTU/GUID/GID/GPU卡:这些卡是同一种卡,统称GTU卡。GTU卡通过修改扇区的控制字节将保存滚动码的数据块设置为只读,使读卡器更新滚动码失败。
针对部分存在漏洞的滚动码系统,可以使用GTU卡绕过:
漏洞1:读卡器中没有新办卡的滚动码记录,无法校验滚动码的初始值。因此读卡器读到卡的滚动码为初始值时不会进行校验,默认识别为正常卡(新卡或复位卡)。使用GTU卡复制一张新办卡或复位卡即可利用该漏洞绕过滚动码检测。
漏洞2:读卡的流程是,读卡器向卡中写入更新后的滚动码,再将卡中的新滚动码读入读卡器,下次刷卡时,检查滚动码与读卡器中保存的是否相同,不相同则判定为非法的复制卡。如果更新时写卡失败,有的读卡器不保存更新后的滚动码,有的读卡器保存卡中未更新的滚动码,这两种情况都导致刷卡完成后滚动码不更新,存在漏洞。使用GTU卡或者手动修改控制字节让卡的滚动码更新时写卡失败,就能绕过滚动码检测。
针对上述漏洞,有对应的防御手段:
- 防御漏洞1:有的系统不需要初始值来判断是否的第一次刷卡,自身存储内没有刷卡记录,则认为是首次刷卡。复位值也不一定存在,有的系统没有设计复位功能。
- 防御漏洞2:一旦写卡失败直接终止刷卡流程或者将新滚动码先保存在临时变量再存入读卡器内存,而非从卡片中读取新滚动码。
- 滚动码暗桩:添加数据位以增加系统的复杂程度,例如新增一处数据用于标识滚动码的循环次数。
因此针对滚动码防护,GTU卡作用有限,最优解是破解系统发卡流程实现自主发卡。
内置微机防复制
CPU卡:卡内集成电路中包括中央处理器(CPU)、只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)以及片内操作系统(COS)等主要部分,比普通IC卡多了CPU和COS,相当于一台微型电脑。CPU卡容量大、能执行指令,可以实现复杂的加密,目前没有公开的破解手段。
CPU模拟卡:部分CPU卡,部分M1卡,如复旦FM1208(7k CPU + 1K M1)。目前公开资料中只能破解其M1卡部分。
SAK值为28的大部分是CPU模拟卡,少部分是CPU卡;SAK值为20大部分是CPU卡,小部分是国产CPU模拟卡。
总结
本文查阅网上各种资料介绍了智能卡的分类和攻防现状,下一篇文章梳理智能卡的破解方法。