第一范文网 - 专业文章范例文档资料分享平台

射频识别技术漫谈 - 图文

来源:用户分享 时间:2025/10/8 4:55:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

前面说了,每种应用可以有编号为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次握手认证并生成段密码的过程,这部分内容我将用专门的一篇博文叙述。

射频识别技术漫谈(19)——Desfire的3次握手认证和段密码生成

3次握手认证并生成临时的通讯密钥在通讯技术中的应用非常普遍,Mifare Desfire也使用了这种成熟的认证加密方法。Desfire在卡片数据传输前使用DES或3DES进行3次握手认证,认证成功一方面表明卡片和读写器双方是可以相互信任的,同时为双方之后的数据传送提供了一组临时使用的段密码进行加密保护。

DES/3DES的基本运算包括加密和解密,Desfir卡片规定,当读写器(PCD)与卡片(PICC)进行DES/3DES运算时,卡片总是进行加密运算,与之对应,读写器总是进行解密运算。DES密钥有16个字节,如果前8个字节与后8个字节相同,则进行DES运算,反之如果前8个字节和后8个字节不

37

同,则进行3DES运算。如下表所示:

使用密钥 KEY1:3DES密钥的前8个字节 KEY2:3DES密钥的后8个字节 KEY3:3DES密钥的前8个字节 PICC 加密 解密 加密 PCD 解密 加密 解密 DES/3DES运算每次操作8字节,如果数据不足8字节,必须填充为8字节,填充的数据通常是00,如果正好要进行DES运算的数据是“00 00 00”(比如“读取所有数据”命令),则填充一个0x80,后面再填充00。

所有的DES/3DES操作使用密码块链接模式(CBC),即上一次DES运算的结果作为下一次运算的初始向量。发送数据使用发送CBC模式,接收数据使用接收CBC模式。第一次运算的初始向量规定为8字节的00.

以下描述3次握手认证和段密码产生的过程及实例,假设卡片密码为16个00:

第一步:读写器作为发起认证的主导方,向卡片发送认证(Authenticate)命令,并携带一个表示密码序号的参数(卡片上每种应用可以最多有14组不同的密码,其序号为0-D)。如果选定的应用标识符AID为0,那么认证将指向卡片的主密码(卡片密钥),在此情况下,密码序号必须为0。如果AID不为0,则认证的是某一应用的密码。卡片进入磁场上电复位后将默认选中AID为0。也就是说卡片复位的首次密码认证总是指向卡片主密码。如果卡片上不存在指定的密码组号,卡片将返回一个错误码。

第二步:卡片用读写器指定的密码加密一组8字节的随机数RndB,例如RndB=98 E4 EE 2E 8B 4B F7 B1,加密方法使用DES/3DES,其结果用ek(RndB)表示,此处ek(RndB)=61 58 F4 51 8A 25 9B 00,并把ek(RndB)返回给读写器。

第三步:读写器用待认证的密码16个00,对收到的ek(RndB)进行DES/3DES解密从而得到RndB=98 E4 EE 2E 8B 4B F7 B1。接下来读写器对RndB进行8位闭合左循环,从而将第一个字节移到

38

了最后一个字节的位置,结果记为RndB’,RndB’=E4 EE 2E 8B 4B F7 B1 98。然后读写器自己产生一个8字节的随机数RndA,例如RndA=00 11 22 33 44 55 66 77,并与RndB’连接起来组成RndA+RndB’=00 11 22 33 44 55 66 77 E4 EE 2E 8B 4B F7 B1 98共16字节,使用CBC模式的DES/3DES解密运算,得到的结果称为dk(RndA+RndB’)=74 F4 AE 77 7A A4 31 E8 4B 18 BA 8F 74 CF 80 63发送给卡片。

第四步:卡片收到16字节dk(RndA+RndB’)后执行DES/3DES加密运算,得到结果RndA+RndB’。卡片首先将自己原来的RndB大循环左移8位,看结果是否等于RndB’,如果不相等,卡片将停止认证过程,并回送一个错误码。如果相等,证明卡片使用的密码和读写器使用的密码一致,卡片将获得的RndA也大循环左移8位得到RndA’=11 22 33 44 55 66 77 00,然后对RndA’进行DES/3DES加密运算,得到的结果称为ek(RndA’)=F1 81 F7 32 6D CD 86 A6回送给读写器。

第五步:读写器收到ek(RndA’)后执行DES/3DES解密从而得到Rnd A’,并把自己之前产生的RndA大循环左移8位,得到的结果与Rnd A’比较,如果不相等,读写器将退出认证过程并可将卡片休眠。

第六步:卡片将当前的应用设置为通过认证状态,如果AID=0,则将卡片本身设置为通过认证状态。

第七步:如果双方所有的比较都成功,通过组合RndA和RndB得到一个16字节的段密码,组合的方法如下:

段密码=RndA第一部分+RndB第一部分+ RndA第二部分+RndB第二部分

对于本文中的例子,产生的段密码为

00 11 22 33 98 E4 EE 2E 44 55 66 77 8B 4B F7 B1

之所以采取这种组合方法产生段密码是为了避免恶意的读写器通过将RndA=RndB而将3DES运算强行转化为DES运算。如果之后的数据传输确实想使用单DES操作(使段密码的前8字节与后8字节相等),应使用前8个字节,即RndA第一部分+RndB第一部分,而不能使用后8个字节。

39

得到16字节的段密码后,3次相互握手认证完成。如果之后的通讯是DES/3DES加密传输,则使用刚产生的16字节段密码作为临时的DES密钥。

射频识别技术漫谈(20)——RC系列射频接口芯片

目前基于13.56MHz

的射频识别技术主要有ISO14443A、ISO14443B、ISO15693和FELICA技术。

针对13.56MHz的射频识别技术,NXP开发了一系列名字以RC(Radio Chip)开头的射频接口芯片,包括RC500、RC400、RC530、RC531、RC632等,这些芯片的设计架构、引脚排列、内部寄存器阵列、天线设计等方面基本相同,不同之处主要是与微控制器的接口界面、支持的协议种类等不一样。后来的RC522、PN512也大体继承了同样的设计思路,只是在供电电压和封装方面更适合低功耗、小尺寸的嵌入式应用。RC系列射频接口芯片的主要特性如下表所示:

芯片型号 支持协议 RC400 ISO 15693 ICODE1 RC500 ISO14443A CRYPTO 1 RC530 ISO14443A CRYPTO 1 RC531 ISO14443A/B CRYPTO 1 RC632 ISO14443A/B CRYPTO 1 ISO 15693 ICODE1 最大读卡距离 100 mm 100 mm 并口 100 mm 并口 SPI 内部FIFO 封装 64字节 SO32 64字节 SO32 64 4096 bit 64字节 SO32 64 4096 bit 100 mm 并口 SPI 64字节 SO32 64 4096 bit. 100 mm 并口 SPI 64字节 SO32 64 4096 bit. 与微处理器接口 并口 内部寄存器数目 64 E2PROM 1024 bit

从表中可以看出,RC系列芯片的最大区别是支持的通讯协议以及与微处理器的接口界面不同。RC500、RC400和RC530支持的协议比较单一,而RC632几乎支持除FELICA之外所有13.56MHz的射

40

搜索更多关于: 射频识别技术漫谈 - 图文 的文档
射频识别技术漫谈 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0h2xu15n8p57eja0pt91_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top