0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

阗笑 来源:魏道志 作者:魏道志 2023-10-16 17:00 次阅读

射频识别技术漫谈(12)——三次相互认证并生成临时的通讯密钥在通讯技术中的应用非常普遍,Mifare Desfire也使用了这种成熟的认证加密方法。Desfire在卡片数据传输前使用DES或3DES进行3次握手认证,认证成功一方面表明卡片和读写器双方是可以相互信任的,同时为双方之后的数据传送提供了一组临时使用的段密码进行加密保护。
DES/3DES的基本运算包括加密和解密,Desfir卡片规定,当读写器(PCD)与卡片(PICC)进行DES/3DES运算时,卡片总是进行加密运算,与之对应,读写器总是进行解密运算。DES密钥有16个字节,如果前8个字节与后8个字节相同,则进行DES运算,反之如果前8个字节和后8个字节不同,则进行3DES运算。如下表所示:

wKgZomUs-4iAS53nAAArVCa4WXU097.png

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位闭合左循环,从而将第一个字节移到了最后一个字节的位置,结果记为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个字节。
得到16字节的段密码后,3次相互握手认证完成。如果之后的通讯是DES/3DES加密传输,则使用刚产生的16字节段密码作为临时的DES密钥。

审核编辑 黄宇

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

    关注

    383

    文章

    5784

    浏览量

    234669
  • 射频识别
    +关注

    关注

    8

    文章

    552

    浏览量

    38698
收藏 人收藏

    评论

    相关推荐

    射频识别技术漫谈(31)——射频卡的复位时间

    射频识别技术漫谈(31)——射频卡的复位时间
    的头像 发表于 11-14 14:14 304次阅读

    射频识别技术漫谈(27)——CPU卡概述

    射频识别技术漫谈(27)——CPU卡概述
    的头像 发表于 10-24 16:15 1008次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(27)——CPU卡概述

    射频识别技术漫谈(25)——Felica简介

    射频识别技术漫谈(25)——Felica简介
    的头像 发表于 10-20 11:10 1647次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(25)——Felica简介

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

    射频识别技术漫谈(18)——Mifare Desfire
    的头像 发表于 10-16 16:34 886次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(18)——Mifare <b class='flag-5'>Desfire</b>

    射频识别技术漫谈(16)——Mifare UltraLight

    射频识别技术漫谈(16)——Mifare UltraLight
    的头像 发表于 10-16 16:13 1409次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(16)——Mifare UltraLight

    射频识别技术漫谈(12)——三次相互认证

    射频识别技术漫谈(12)——三次相互认证
    的头像 发表于 10-11 16:19 778次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(12)——三次相互<b class='flag-5'>认证</b>

    射频识别技术漫谈(9)——动物标签HDX

    射频识别技术漫谈
    的头像 发表于 10-10 18:00 1092次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(9)——动物标签HDX

    射频识别技术漫谈(8)——动物标签

    射频识别技术漫谈
    的头像 发表于 10-10 17:53 706次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(8)——动物标签

    射频识别技术漫谈(7)——ID卡

    射频识别技术漫谈
    的头像 发表于 10-09 15:35 1019次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(7)——ID卡

    射频识别技术漫谈(6)——通讯协议概述

    射频识别技术漫谈
    的头像 发表于 10-09 15:12 538次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(6)——通讯协议概述

    射频识别技术漫谈(5)——防冲突

    射频识别技术漫谈
    的头像 发表于 10-09 11:40 605次阅读

    射频识别技术漫谈(4)——数据编码

    射频识别技术漫谈
    的头像 发表于 10-09 11:19 1180次阅读
    <b class='flag-5'>射频</b><b class='flag-5'>识别</b><b class='flag-5'>技术</b><b class='flag-5'>漫谈</b>(4)——数据编码

    射频识别技术漫谈(3)——能量、调制

    射频识别技术漫谈
    的头像 发表于 10-09 10:54 501次阅读

    射频识别技术漫谈(2)——国际标准

    射频识别技术漫谈
    的头像 发表于 10-09 10:53 666次阅读

    射频识别技术漫谈(1)——概念、分类

    射频识别技术漫谈(1)——概念、分类
    的头像 发表于 10-09 10:51 586次阅读