射频识别技术漫谈(18)——Mifare Desfire

电子说

1.3w人已加入

描述

Mifare  DESFire(MF3 IC D40/D41,本文以D40为例)遵守14443 TypeA协议,卡内的数据以文件形式存储,所以有人认为它是准CPU卡,主要用于安全性要求较高的非接触式领域。

与普通MF1 S50不同,DESFire的数据传输速率不仅支持最基本的106Kbps,还支持212Kbps和424Kbps;其数据传送的加密方法也不再使用已经被破解的Crypto1加密流,而是使用更为安全的DES/3DES、AES加密,至少DES/3DES和AES已经经过了多年的公开检验,至今还没有被破解。

DESFire的全球唯一序列号是7字节,支持ISO14443-4和ISO7816的部分协议。7字节的序列号要使用两个防冲突循环才能读出,第一轮防冲突循环卡片返回层级代码0x88, UID的前3个字节SN0-SN2和校验码BCC0,第二轮防冲突循环返回UID的后4个字节SN3-SN6和校验码BCC1,SN0为制造商的ID号,NXP产品固定为16进制的04H.

DESFire有4K字节的非易失存储空间,典型的写时间为2ms(1ms擦除,1ms编程)。存储空间的组织采用柔性文件系统,D40卡上可同时最多支持28种应用,每种应用用一个3字节的应用标识符(AID)表示,每种应用可以设置序号为0-13的最多14组不同的密码,每种应用下可建立最多16个文件.

卡片支持5种不同的文件类型,每种类型使用一个字节的类型编码来表示。文件类型及其编码如下:

射频识别

每种应用应用与读写器之间的通讯加密等级根据安全性不同分为3类,使用一个字节的通讯设置码来表示。通讯设置码的各个bit代表的意义如下表所示:

射频识别

明文模式最简单,就是直接传送没有加密的真值,一旦被截获,黑客看到的就是真实信息;
    带有MAC校验的明文传输也好不到哪里去,它是把要传送的明文用CBC模式进行DES/3DES加密,把最后一步的8字节加密输出结果中的前4字节称为MAC校验,加在要传送的明文后面,前面的明文还是明文,只不过加了个校验防止出错而已;
    只有第三种完全DES/3DES密文通讯才对得起“DESFire”这个名字,这是真正的加密通讯。所有要传送的密文先用CRC16进行校验,然后明文连同CRC16校验作为一个整体使用CBC模式的DES/3DES加密,传送的是加密后的密文。黑客即使截获了也看不懂,前提是不知道DES密码。
    前面叙述时经常用DES/3DES这个组合,那到底是DES还是3DES呢,二者的运算量和加密强度可是有天壤之别啊!这一点DESFire卡片采用了自动识别的方法。DES和3DES密钥的长度都是16字节,如果前8字节与后8字节相同,则自动被作为DES运算;反之,如果前8字节与后8字节不同,则自动被作为3DES运算。

D40卡片的默认出厂设置为密钥全0,单DES操作。
    DESFire卡片可以为应用中的文件设置不同的读写权限,读写权限的意思就是读或写文件时是否需要验证密码,以及验证哪一组密码。读写权限使用2个字节的编码来表示,2个字节共16个bit,每4个bit表示一种权限类型:

射频识别

前面说了,每种应用可以有编号为0-13的最多14组不同的密码,而4位二进制数可以表示0-15共16种组合。当4位权限码的值为0-13时,表示执行相应的读写操作要验证权限码的值指向的一组密码;当权限码的值为14时,表示不用验证任何密码可直接读写;权限码的值为15时表示冻结,就是不论什么条件也不让读写了。   
    DESFire的卡片命令可以分为6大类:
    (1)ISO14443-3 命令
    (2)ISO14443-4 命令
    (3)安全相关命令
    (4)卡片级命令
    (5)应用层命令
    (6)数据操作命令
    这些命令的理解并不难,DESFire卡片的真正难点在于3次握手认证并生成段密码的过程,这部分内容我将用专门的一篇博文叙述。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分