APP下载

轻量级的射频识别系统认证协议①

2022-01-05谢海宝郝伟伟

计算机系统应用 2021年12期
关键词:读卡器电子标签消息

谢海宝, 郝伟伟, 吕 磊

1(河南省市场监督管理局 信息中心, 郑州 450008)

2(河南工业大学 信息科学与工程学院, 郑州 450008)

射频识别技术虽出现在上个世纪上半时期, 但真正得到大范围推广却是在本世纪; 该技术是一种不需要与特定商品相接触, 就可以读出该特定商品中存放数据的技术[1,2]. 一个完整的射频识别系统具备成本低、较容易部署、使用寿命长等优势, 使得射频识别技术现在多个领域中应用, 比如: 门禁系统、地铁卡系统、校园卡系统等[3,4].

比较经典的射频识别系统一般至少包含后台数据库、电子标签、读卡器3个实体设备[5-7]. 后台数据库主要用来存放系统应用过程中产生的数据, 具备强大的计算和搜索查找能力, 同时也具备较大的存储空间;电子标签一般主要在用户手上, 用于存放用户的一些个人隐私信息, 比如: 用户标识、用户金额等, 电子标签计算能力有限、存储空间同样也有限; 读卡器一般主要固定在某个地方, 用于读取电子标签中信息, 再将读取的信息发送给后台数据库, 很多时候读卡器并不真正的参与运算.

在上述经典的射频识别系统中, 电子标签与读卡器之间无线方式交互数据, 极其容易被第三方窃听, 导致用户隐私信息泄露, 研究人员一般认为不可靠、不安全; 读卡器与后台数据库之间绝大多数基于有线方式交互信息, 第三方获取数据并不是很容易, 一般可认定为安全、可靠, 并可将二者看成一个系统或整体对待[8,9]. 文中为能够保证电子标签与后台数据库二者间数据交互安全, 提出一个采用伪随机函数实现加密的轻量级认证协议.

1 相关工作

文献[10]中利用散列函数设计一个认证协议, 对协议分析, 可以提供一些安全需求, 但因数据加密过程中部分数据第三方可以获取, 使得协议无法抵抗第三方穷举分析.

文献[11]中设计一个超轻量级的协议, 虽能够极大程度上降低系统计算量, 但依据现有的研究结果表明, 超轻量级的协议绝大多数都是基于按位运算实现,而简单的按位运算是无法提供绝对的安全性, 因此文献[11]中协议安全性级别有待商榷.

文献[12]中利用经典的哈希函数设计一个认证协议. 协议设计过程中充分考虑到各种常见类型的攻击,因此该协议具备良好的安全需求. 但电子标签一端将会多次用到哈希函数进行运算, 将会使得系统整体计算量增加, 低沉本受限制的电子标签无法大规模推广.

文献[13]中基于物理不可克隆技术设计一个认证协议. 物理不可克隆技术使得协议可以抵抗假冒攻击等, 但对协议分析, 表明协议最后一个步骤并没有完成电子标签对读卡器的验证, 使得协议存在安全缺陷.

文献[14]中结合Universal哈希函数给出一个协议. Universal哈希函数与经典的哈希函数之间存在些许不同, 但整体工作原理相差并不大. 因具备的单向性,是第三方难以假冒或重放; 却无法在低成本电子标签系统中推广使用.

文献[15]中采用RRAM物理不可克隆技术设计一个认证协议. 协议设计过程中, 部分消息加密时未混入随机数, 使得部分消息前后多次认证过程中消息计算数值相同, 给了第三方破解机会.

对近些年经典协议进行分析, 指出大多数协议存在或多或少缺陷不足, 文中基于伪随机函数设计一个轻量级的认证协议.

2 双向认证协议设计

(1)协议中部分符号解释

READER: 由读卡器和后台数据库构成的整体

TAG: 电子标签

IDT: TAG的假名身份标识

IDT_new: TAG当前的假名身份标识

IDT_old: TAG上次的假名身份标识

IDT_L: TAG真实身份标识前面一半

IDT_R: TAG真实身份标识后面一半

KEY: TAG与READER二者间共享秘密值

KEYnew: TAG与READER二者间当前共享秘密值

KEYold: TAG与READER二者间上次共享秘密值

f(x,y): 伪随机函数

x: TAG生成的随机数

y: READER生成的随机数

⊕: 按位异或运算

&: 按位与运算

(2)认证协议步骤

可以结合图1中的流程, 将文中协议步骤描述如下:

图1 协议流程图

① READER向TAG发送一个认证请求指令, READER与TAG之间将开启认证.

② TAG接到消息, TAG先生成随机数, 在依次计算得到消息M1=x⊕IDT_L、M2=f(x,IDT_R), 待消息计算完毕, TAG将向READER发送M1、M2、IDT.

③ READER接到消息, 先在数据库中查找是否有数据与接到的IDT相同.

若未找到, 则协议停止.

若找到, 则协议可继续. READER将对接到的M1进行变形, 并将变形之后结果带入消息M2中可得到M2′=f(x′,IDT_R)=f(M1⊕IDT_L,IDT_R), 然后对比M2、M2′值是否相等.

若不相等, 则协议停止.

若相等, 则可表明TAG通过READER验证, 协议再次继续. READER将生成随机数, 并依次计算得到消息M3=y⊕IDT_R,M4=f(x,y), 最后将M3,M4发送给TAG.

④ TAG接到消息后, TAG会发起对READER的验证, 具体验证过程如下:

TAG将先对接到的消息M3进行变形处理, 并将变形处理结果带入消息M4中可得到M4′=f(x,y′)=f(x,M3⊕IDT_R), 接着比较M4、M4′二者是否相等.

若不相等, 协议停止.

若相等, 可表明READER通过TAG的验证, 协议继续. TAG将计算消息M5=f(x⊕KEY,y&KEY), 并将M5发送给READER. 待TAG发送消息M5之后,TAG一端将进行共享秘密值、TAG假名身份标识更新操作IDT=f(y,IDT)、KEY=f(x,KEY).

⑤ READER接到消息后, 先用当前READER与TAG间共享秘密值KEYnew来验证TAG, 具体过程见下:

READER利用存放的KEYnew、之前计算所得x、自己生成y计算得到消息M5′=f(x⊕KEYnew,y&KEYnew),接着比较计算得到M5′与接到消息M5大小关系.

两者关系不等, READER将再次用上次二者间共享秘密值验证TAG, 即用KEYold替换KEYnew再次进行计算可得到M5′′=f(x⊕KEYold,y&KEYold), 然后再次对比M5与M5′′大小. 还是不等, 协议停止; 此时等,READER验证TAG通过, 协议继续执行, READER向TAG发送ACK确定消息, 同时READER端进行信息更新IDT_old=IDT_new,IDT_new=f(y,IDT),KEYnew=f(x,KEYold).

两者关系等, READER验证TAG通过, 协议继续执行, READER向TAG发送ACK确定消息, 同时READER端进行信息更新IDT_old=IDT_new,IDT_new=f(y,IDT),KEYold=KEYnew,KEYnew=f(x,KEYnew).

⑥ TAG接到消息, 确定接到消息为ACK, 则表明TAG与READER间双向认证完成, 协议可正常结束.

3 安全性分析

(1)双向认证

双向认证是协议要具备的最基本的安全需求. 文中协议具备该安全需求, 具体的分析见下:

在第③步中, READER将先通过TAG假名参数验证TAG真实性, 接着将再次结合消息M1、M2对TAG进行验证, 只有两次都验证通过, READER才会继续执行协议.

在第④步中, TAG将结合消息M3、M4对READER进行验证, 验证通过, TAG将才会进行后续操作.

在第⑤步中, READER将先用KEYnew来验证TAG真假; 验证不通过时, READER将再次用KEYold来验证TAG真伪. 前后两次验证通过, 协议才继续.

基于上述分析, 文中协议可提供双向认证安全需求.

(2)假冒攻击

从理论上来讲, 第三方既可以假冒成READER, 也可以假冒成TAG. 鉴于文中篇幅有限, 这里仅选取第三方假冒成READER来分析.

比如: READER假冒成合法读卡器向合法TAG发送认证请求指令, 开始认证协议. 经过一段时候后,第三方可以收到合法TAG发送来的消息M1、M2, 第三方试图通过对接到的消息M1、M2进行分析从而破解出隐私信息, 然后在计算正确消息M3、M4, 但第三方无法成功. 无法成功的主要原因有: 第三方不知晓TAG真实身份标识, 使得第三方无法通过消息M1、M2破解分析出合法TAG生成的随机数x, 第三方在不知道随机数x的情况下, 第三方只能随机选择一个数冒充为随机数x, 可想而知, 第三方就无法计算出正确的消息M3、M4. 当合法TAG接到第三方发送来的消息M3、M4时, 只需要进行简单计算, 合法TAG即可识别出第三方是假冒的, 协议停止.

基于上述分析, 文中协议可提供抵抗假冒攻击安全需求.

(3)重放攻击

第三方可以窃听当前会话过程, 获悉当前会话过程中所有消息, 待下轮会话时, 第三方可以重放窃听的消息, 以企图通过合法实体验证, 进而获取更多隐私信息. 但文中协议中, 第三方只能以失败而告终, 具体原因如下: 文中协议设计过程中, 每个消息加密之时, 都引入随机数, 或引入READER生成的随机数, 或引入TAG生成的随机数, 或同时引入READER、TAG生成的随机数, 这样操作之后, 将使得每轮消息计算值处于变动之中. 即: 第三方人员在重放上轮窃听消息时,本轮认证中用到的消息值早已发生变更, 第三方重放消息失败, 协议停止, 第三方未获取任何隐私信息.

基于上述分析, 文中协议可提供抵抗重放攻击安全需求.

(4)异步攻击

文中协议在READER一端将会存放READER与TAG间之前认证过程中用到的共享秘密值, 这样就可以抵抗第三方发起的异步攻击. 具体原因分析如下: 当READER用当前共享秘密值发起对TAG验证时, 验证通过, 就直接进行后续操作; 如果没有验证验证, 则READER将会调出上一轮认证过程中用到的共享秘密值, 将用上轮认证过程中用到的共享秘密值替换当前共享秘密值再次发起对TAG的验证. 如果本次验证还是失败, 则READER将再次调出上上次认证用到的共享秘密值, 以此方式可以实现抵抗第三方发起的异步攻击.

基于上述分析, 文中协议可提供抵抗异步攻击安全需求.

(5)穷举攻击

第三方可能对窃听获悉的消息采用穷举的方式穷尽出所有其可能值, 进而获取隐私信息. 但文中协议可是第三方无法穷举成功, 这里选择消息M1、M2为例进行详细分析:

第三方可以对消息M1进行变形处理, 并将变形处理结果带入消息M2中可得到M2′=f(M1⊕IDT_L,IDT_R). 在变形之后所得到消息M2中, 第三方仍有两个参量IDT_L、IDT_R不知晓, 因此第三方就无法采用穷举方式穷尽所有可能值, 第三方只能以失败而告终.

基于上述分析, 文中协议可提供抵抗穷举攻击安全需求.

(6)前向安全

第三方想通过窃听获悉的消息逆推出上轮认证用到的部分隐私信息, 以此来获悉更多用户隐私信息. 但文中协议中, 第三方无法从窃听获悉的消息中分析或逆推出上轮会话中用户隐私信息, 具体原因分析如下:文中协议设计过程中, 每个认证消息均不是明文方式发送, 而是采用伪随机函数加密之后再发送, 这使得第三方窃听获悉的数据是密文; 第三方在不知晓关键参数情况下, 是无法分析或逆推出之前认证中用户隐私信息; 同时所有消息加密过程中都有随机数的加入, 这样使得前后每次消息值不同, 并且随机数具备互异性、无法预测性, 更加增加了第三方破解分析难度.

基于上述分析, 文中协议可提供前向安全需求.

4 性能分析

从文中前面章节有关经典射频识别系统组成描述可以知晓, READER整体计算能力强、存储空间大; 相反, TAG计算能力薄弱、存储空间有限, 故本章节仅选取TAG作为性能分析对象. 将文中协议与其他近些年提出的经典协议进行性能方面分析, 结果见表1所示.

表1 不同协议之间性能分析对比

对表1中出现的符号所表示的意思解释见下面:Ta符号代表的意思为按位运算的计算量(此处按位运算可包含按位异或运算、按位与运算等); Tb符号代表的意思为物理不可克隆函数的计算量; Tc符号代表的意思为随机数发生器产生随机数的计算量; Td符号代表的意思为哈希函数的计算量; Te符号代表的意思为伪随机函数的计算量.

文中协议整个过程中TAG一端仅只生成一个随机数, 故会有1 Tc计算量. 在步骤(2)中, TAG在计算消息M1时第1次用到Ta计算量, 在计算消息M2时第1次用到Te计算量; 在步骤(4)中, TAG在对消息M3变形处理时会第2次用到Ta计算量, 在计算消息M4′时会第2次用到Te计算量, 在计算消息M5时会第3次用到Te计算量, 在更新TAG假名身份标识、共享秘密值时分别第4次、第5次用到Te计算量.

基于上述分析, 文中协议在TAG一端总体计算量为2 Ta+5 Te+1 Tc.

文中协议一个完整会话包含的会话消息有M1、M2、IDT、M3、M4、M5、ACK、认证请求指令QUERY,其中消息M1、M2、IDT、M3、M4、M5每个长度都是L位, ACK、认证请求指令QUERY长度都是1个比特即可. 故文中协议通信量大小为6 L+2 bit.

通过本节及第3节分析, 可发现文中协议不仅可以弥补其他经典协议中安全不足, 同时在计算量方面优于其他协议, 具有推广使用价值.

5 结论与展望

文中先介绍射频识别技术在运用过程中出现的安全隐患, 在分析近些年经典的认证协议存在的问题, 最后设计出一个轻量级的认证协议. 文中设计协议在兼顾计算量的同时, 也考虑安全性, 故选择轻量级的伪随机函数作为消息加密算法; 为能够应对假冒、重放等攻击, 协议在消息加密中全部混入随机数, 可保持消息新鲜性; 为能够抵抗第三方发起的异步攻击, 协议在READER一端存放若干轮之前认证用到的共享秘密值. 结合安全性、计算量等角度分析文中协议及近些年其他经典协议可发现, 文中协议可弥补其他协议安全不足之处, 同时可保证计算量、门电路总个数未增加.

猜你喜欢

读卡器电子标签消息
基于伪随机数发生器的双向认证协议
与淘汰命运抗争 看懂笔记本的读卡器
一张图看5G消息
晚步见道旁花开
颜值与功能并重
基于EMV非接通信规范的非接触读卡器设计
多合一读卡器
浅析RFID在图书管理系统中的应用