射频识别技术漫谈(18)——Mifare Desfire
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种不同的文件类型,每种类型使用一个字节的类型编码来表示。文件类型及其编码如下:
| 文件类型 | 类型编码 |
| 标准数据文件 | 0x00 |
| 备份数据文件 | 0x01 |
| 带有备份的值文件 | 0x02 |
| 带有备份的线性记录文 | 0x03 |
| 带有备份的循环记录文件 | 0x04 |
每种应用与读写器之间的通讯加密等级根据安全性不同分为3类,使用一个字节的通讯设置码来表示。通讯设置码的各个bit代表的意义如下表所示:
|
通讯模式 |
Bit7-bit2 |
Bit1 |
Bit0 |
|
明文通讯 |
RFU=0 |
忽略 |
0 |
|
具有DES/3DES MAC校验的明文通讯 |
RFU=0 |
0 |
1 |
|
完全DES/3DES密文通讯 |
RFU=0 |
1 |
1 |
明文模式最简单,就是直接传送没有加密的真值,一旦被截获,黑客看到的就是真实信息;
带有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运算。
DES密钥举例:0x00 11 22 33 44 55 66 77 00 11 22 33 44 55 66 77
0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3DES密钥举例:0x00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
0x00 11 22 33 44 55 66 77 00 00 00 00 00 00 01 00
0x00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00
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次握手认证并生成段密码的过程,这部分内容我将用专门的一篇博文叙述。
射频识别技术漫谈(18)——Mifare Desfire的更多相关文章
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- 射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(13)——Mifare S50与Mifare S70
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
- 射频识别技术漫谈(16)——Mifare UltraLight
Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本.小容量的卡片.低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片 ...
- 射频识别技术漫谈(14)——Mifare S50与S70的存取控制
存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有“读”.“写”.“加值”.“减值(含传输和存储)”四种,对控制块的操作只有“读”和“写”两种. S50 ...
- 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】
从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...
- 射频识别技术漫谈(19)——Desfire的3次握手认证和段密码生成
3次握手认证并生成临时的通讯密钥在通讯技术中的应用非常普遍,Mifare Desfire也使用了这种成熟的认证加密方法.Desfire在卡片数据传输前使用DES或3DES进行3次握手认证,认证成功一方 ...
- 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】
通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...
随机推荐
- C++ TR1 置随机数种子
1. #include <stdlib.h> #include <random> #include <iostream> using namespace std; ...
- SQL学习之用通配符进行数据过滤
一.Like操作符 之前介绍的所有的操作符都是针对已知值进行过滤.不管匹配一个值还是多个值,检验大于还是小于已知值,或者检查某个范围的值,其共同点是过滤中使用的值都是已知的. 但是这种方法并不是任何时 ...
- SET QUOTED_IDENTIFIER (Transact-SQL)
使 SQL Server 遵从关于引号分隔标识符和文字字符串的 ISO 规则. 由双引号分隔的标识符可以是 Transact-SQL 保留关键字,也可以包含 Transact-SQL 标识符语法约定通 ...
- 单选,复选操作div,显示隐藏
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- HOJ1014
Niven Numbers My Tags (Edit) Source : Unknown Time limit : 1 sec Memory limit : 32 M Submitt ...
- USACO Section 3.3 Camlot(BFS)
BFS.先算出棋盘上每个点到各个点knight需要的步数:然后枚举所有点,其中再枚举king是自己到的还是knight带它去的(假如是knight带它的,枚举king周围的2格(网上都这么说,似乎是个 ...
- Django Web开发【6】使用Ajax增强用户体验
Ajax及其优点 Ajax实际上就是指异步Javascript与XML,它包含以下技术: HTML与CSS Javascript XMLHttpRequest XML Ajax技术让客户端与服务器实现 ...
- python 字符串探讨
本文内容基于python3 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出.字符串的学习是重点中的重点,这一节将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等.大部 ...
- 四轴飞行器1.2.3 STM32F407时钟配置和升级标准库文件
原创文章,欢迎转载,转载请注明出处 这个星期进度比较慢哈,只有周末和晚上下班回来才能做,事件不连续,琐碎的事情又比较多,挺烦的,有多琐碎呢? 1.本人有点小强迫症哈,虽然RTT将文 ...
- .net中不能在DropDownList中选中多个项的解决方法
页面中放有多个DropDownList,点击修改时候,需要根据值来设置两个DropDownList的选中项,当值为空时则需要选中默认值. 页面报错:不能在DropDownList中选中多个项. 直接粘 ...