文/闫鑫原创   转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245

  飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用,比如我们乘车用的公交卡,学校和企业食堂的饭卡等等.它每个扇区有独立的密匙(6个字节的密码),在通信过程中首 先要验证密匙才能读写数据.它的关键技术在于密匙的验证采用三重加密的DES算法,(即:读写器与卡之间传送的密匙是通过随机数加密的),不象早期的 EMID卡和atmel的T557卡都是明码传输,所以在开始一度认为是最安全的卡,被广泛的当做电子钱包使用.

自从08年有人成功破解了M1卡,曾一度造成恐慌.2008年,互联网上公布了破解Mifare Classic IC芯片(即M1芯片)密码的方法;德国研究员亨里克·普洛茨(HenrykPlotz)和弗吉尼亚大学计算机科学在读博士卡尔斯滕·诺尔 (KarstenNoh1)成功地破解了恩智浦半导体的Mirare经典芯片的安全算法;德国Virginia大学和荷兰Radboud大学两个独立研究 小组分别证实了Mi-fare芯片的易受攻击性,并发表了破解芯片加密算法的论文<<“Wirelessly Pickpocketing a Mifare Classic Card”(无线窃取M1卡)>>以及演示了实际操作芯片的破解过程。阐明了M1卡在报文产生奇偶位和所谓嵌套认证两个方面的漏洞;利用此漏 洞,攻击者可以通过工具仅仅研究该工具与M1卡之间通讯数据便可以成功破解该卡的所有密钥,从而克隆这张卡.

文章认为:M1在产生奇偶校验位时将数据链路层和安全通信层本该分层处理的协议混为一谈,先校验后加密,并且重复使用了加密校验位的密码。这是不符合安全原则的并确实可被利用。

1. MIFARE破解方法

1)  暴力破解

即使是暴力破解,也需要先得到确切的明文和对应的码流。这大约要进行1536次认证过程,用时在一秒钟之内。不过还要进行离线暴力破解,估计在36分钟可完成。但是需要专用的硬件设备。

2)  以读卡器的挑战值做变量

这里说的读卡器实际上指的是用来模拟读卡器的攻击工具,下个攻击亦如此。这种攻击又可称选择密文攻击,想法用工具控制被攻击的卡每次在认证时产生同一挑战 值,而读卡端则回应不同值。这种攻击需要大约28500次的认证过程,用时约15分钟,然后计算密钥,用时约一分钟。

3)  卡的挑战值做变量

这种攻击与攻击2类似,但需要使自己的工具的挑战值为常数,而令卡的挑战值数不断变化。需要预制一个384 GB的状态表。要进行4096次认证。大约用时2分钟。

4)  嵌套认证攻击

这种攻击假设攻击者已知了至少一个扇区的密钥,他可以根据漏洞得到其它密钥的32位,然后对其它16位进行穷举攻击。只需3次认证(时间可以忽略不计)。 离线攻击计算时间约为一秒。M1卡嵌套认证的漏洞使得攻击者在得知一个扇区的密钥后可较容易的再破解其它任何扇区的密钥从而做到对该卡的全面破解。这在以 前的攻击中并不容易做到,因为一个应用系统的读卡器不一定能产生其系统中所有卡的所有扇区的密钥,如果设计系统时就没有考虑使用所有扇区的话。

2. Mifare破解对公交卡系统造成的影响

现有国内公交卡普遍采用的基于PSAM/ISAM卡的密钥管理系统。通常采用的做法是使用一个Value Block作为钱包,KeyA负责消费,KeyB负责充值(包括消费)。KeyA的分散密钥放在PSAM中,KeyB的分散密钥放在ISAM中(如果采用 充值联机则KeyB可联机获得)。PSAM和ISAM提供了密钥的外部存储方式,通过特定的分散算法得出M1的密钥,计算过程发生在终端或后台系统中。

而目前破解机制直接对M1卡发生作用,完全绕过、无视了PSAM等安全机制。同样,一卡一密通过采用不同卡片不同密钥的做法增加破解难度,但面对高效率 的破解算法也形同虚设。必须重视的是,现有公交卡系统高度依赖密钥管理系统、一卡一密等安全机制,采用的数据结构基本是统一的、公开的状态,这就意味着一 旦破解密钥就几乎处于不设防状态,即使数据结构不公开也不能寄予希望。

公交卡系统虽然也采用了黑名单等系统审计监控机制,但与银行卡系统的黑名单机制存在非常大的区别:公交卡采用脱机黑名单,容量受到终端设备的限制,而且 属于滞后处理(通常生效和处理周期不小于T+1天);银行卡采用联机黑名单,容量基本不受限制,而且属于实时处理(即时生效和处理)。

3. MIFARE卡系统可能面临的攻击分析

MIFARE卡被破解问题的严重性是不容置疑的,首先,Crypto1攻击的源代码已经公开发布(http://code.google.com/p /crapto1/),属于开源项目,可任意从网上免费下载;其次,配套的几款读卡器(ProxMark,OPENPCD)也可公开从网上订购;再加上攻 击算法效率的提高,实际上恶意用户破解M1密钥的成本(还包括时间成本)已经降到了非常低的水平,已经达到大规模扩散所需要的条件。

公交卡系统将面临的攻击方式包括以下两种:

1)克隆:恶意用户通过破解现有合法卡的密钥并读取全部数据后,复制到多张空白IC卡上。

2)篡改:恶意用户通过破解现有合法卡的密钥后,直接篡改该卡的钱包余额等关键数据。

从攻击效果来看,克隆能够在一张合法卡的基础上制作多张伪卡,而篡改只能在合法卡本身的基础上制作伪卡。

由于现有M1卡采用了全球唯一的、不可篡改的uid物理卡号,而公交卡系统的密钥基本使用物理卡号进行分散计算获得,如果要实施克隆攻击,必须具备复制 uid的能力,即具备M1卡的生产制造能力。而目前能够生产兼容M1卡的是非常有限的几个厂家,基本不可能自己做出非法克隆的事情,也不可能应恶意用户的 要求进行订单生产。虽然通过硬件配合软件能够成功模拟M1卡并且能够与读卡器进行正常通讯,但离产品化还有较大距离。

有种观点认为,只要是采用了一卡一密、实时在线系统,或非接触逻辑加密卡的ID号,就能避免密钥被解密。其实,非接触逻辑加密卡被解密就意味着M1卡可 以被复制,使用在线系统尽管可以避免被非法充值,但是不能保证非法消费,即复制一张一样ID号的M1卡,就可以进行非法消费。现在的技术使用FPGA就可 以完全复制。基于这个原理,Mifare的门禁卡也是不安全的。

其实最重要的是,安全是一个系统级别的概念,安全的系统是有一系列的安全措施来保证的,比如密钥多级分散、比如用PSAM卡而不是终端自身软件计算密 钥、比如卡片内保存密文而不是明文等等一系列的措施来增加最终破解的难度,并保证被破解后的损失降低到最低。安全不是只靠单一的卡片来保证的。另外大家可 以注意的是,最终破解卡片的其实都不是软件暴力破解的,而是剖片等硬件手段起到了至关重要的作用,这其实是对半导体厂商提出了更高的要求,如何让逆向工程 的难度更大。所以不是说CPU卡就一定比M1卡安全,如果芯片自身的安全级别不够,通过剖片、甚至简单的黑客手段都能容易的获知卡片的密码,那么是不是 CPU卡其实都毫无意义,而且CPU卡用的公开算法只会让其安全性比M1还不如(算法破解都免了)。这就是为什么半导体厂商一直很强调自己的芯片过了 EAL5+认证,而国产芯片在这部分其实还存在相当的差距。

转载于:https://www.cnblogs.com/shuk-notes/p/4790056.html

Mifare系列7-安全性(转)相关推荐

  1. MIFARE系列逻辑加密卡的安全性分析

    MIFARE系列逻辑加密卡的安全性分析 原文摘自:http://www.nb-card.com         近来广为讨论的话题,就是MIFARE系列的逻辑加密卡可以被破解和复制一事,因国内发行的这 ...

  2. MIFARE系列6《射频卡与读写器的通讯》

    1. 复位应答(Answer to request) 读写器呼叫磁场内的卡片,卡片对呼叫做出应答.对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26):对于已进行过读写操作并进入休眠 ...

  3. MIFARE系列7《安全》

    飞利浦的MIFARE卡因为它的高安全性在市场上得到广泛应用,比方我们乘车用的公交卡,学校和企业食堂的饭卡等等.它每一个扇区有独立的密匙(6个字节的password),在通信过程中首先要验证密匙才干读写 ...

  4. MIFARE系列5《存储结构》

    Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15).每一个扇区包括4个数据块(Block0-Block3).我们也将16个扇区的64个块按绝对地址编号为0~63.每 ...

  5. 从恩智浦系列芯片学习高频RFID

    众所周知,RFID芯片是电子标签的主要组成部分,是在整个RFID系统的核心.标签芯片的基本结构一般都包含射频前端.模拟前端.数字基带和存储器单元等模块.RFID芯片主要涉及的频段有125KHz,13. ...

  6. 由Mifare 1卡破解带来的危险以及应对方法

    今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...

  7. STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID

    1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件准备 (1)MFRC-522模块 (2)F1的板子,本例使用经典F103C8T6 (3)ST-li ...

  8. Android MIFARE读写器详解2

    Android MIFARE读写器详解2 Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mi ...

  9. zynq 黑金 linux 教程,【黑金ZYNQ7000系列原创视频教程】05.FPGA和ARM的初次结合——LED实验...

    Go语言 获取get.post参数 在贴代码之前如果能先理解一下golang http.request的三个属性Form.PostForm.MultipartForm应该能较好的理解代码,下面摘录一下 ...

最新文章

  1. 地铁闸门会夹伤人吗_西安地铁率先推出分类垃圾箱 四种类型你会放吗?
  2. 【蓝桥java】进制与整除之最大公约数 最小公倍数
  3. 多线程基础-实现多线程的两种方式(二)
  4. 【Spring】Spring 如何更改动态更改运行中某个类的日志级别
  5. android 自定义课程表,Android课程表界面布局实现代码
  6. UVA 10558 A Brief Gerrymander
  7. 使用RedisTemplate执行lua脚本
  8. 获取每日 联想电脑 开机锁屏壁纸
  9. 零信任时代,开放式安全沙箱让管控更灵活
  10. 怎么科学解读闪电鞭?年轻人我劝你耗子尾汁,好好反思
  11. python mpi4py multiprocessing_python基于multiprocessing的多进程创建方法
  12. CentOS查看主板型号及硬件信息
  13. 使用UnblockNeteaseMusic播放网易云音乐客户端无版权歌曲
  14. 多功能噪音消除器支持多种场景模式
  15. 中文分词工具-IKAnalyzer下载及使用
  16. Eclipse/MyEclipse转IntelliJ IDEA完全攻略
  17. dos命令行-禁用和启用本地连接
  18. 算力网络 — 算力中心
  19. 使用Easyar在unity制作ar视频黑屏
  20. 最新版快手去水印原理及源码,简单的原理与面临的挑战

热门文章

  1. message提示框的三种显示方式
  2. Augustus安装问题 (3.0 以上都适用)
  3. Windows API 理解----Nt* Zw*
  4. 算法描述怎么写伪代码java_伪代码描述算法
  5. 【工具】文献分析工具histcite的简单使用
  6. win7开机显示密码错误咋办?
  7. 如何判断两个人合不合适?
  8. HDOJ 3723 Delta Wave
  9. AD绘图中遇到的问题(集)
  10. 史上最恐怖的FLASH游戏 - 咒怨