APP下载

RFID加密算法的FPGA实现研究

2015-12-25徐远泽张文科

信息安全与通信保密 2015年2期
关键词:读写器寄存器比特

徐远泽, 张文科

(卫士通信息产业股份有限公司,四川成都610041)

0 引言

射频识别技术(Radio Frequency Identification,RFID)是一种非接触式的自动识别技术,它基于大规模集成电路与无线通信技术,利用射频信号或者空间耦合的传输特性来实现对物体的自动识别。近年来,随着物联网的快速发展,作为物联网四大关键技术之一的RFID技术呈现出加速发展趋势[1]。目前,RFID技术已被广泛应用于物流、供应链、动物和车辆识别、门禁系统、图书管理、自动收费和生产制造等领域,特别是超高频段(800-900 MHz)的RFID具有广阔的应用市场前景[2-3]。

RFID技术获得快速发展的同时,其安全性问题日益突出,并逐渐受到人们的重视。在美国拉斯维加斯举行的Black Hat 2004会议上,Lukas Grunwa-ld公开展示了一个名为RF Dump的工具,它可以利用RFID系统的弱点发动攻击。任何一个人,只要在自己的笔记本电脑中插上一个读写器,就可以使用RF Dump软件获得3英尺内的被动式RFID标签中的数据。美国的密码学研究专家Adi Shamir表示,目前的RFID系统毫无安全可言,简直是畅通无阻。RFID标签因其成本受限、存储空间有限和计算能力较弱等特点,成为了RFID系统被攻击的主要对象[4]。于是,IBM等公司研究人员想出了裁剪标签天线、标签外套电磁屏蔽罩等物理保护机制,然而这些方法均以牺牲标签某些功能来实现安全保护,存在使用不便等问题[5],因此,基于密码技术的安全保护机制得到国内外学者的广泛关注。

在2007年,德国Ruhr大学的A.Bogdanov提出了一种针对RFID等安全应用环境的轻量级密码算法—PRESNET算法,因其具有优秀的算法安全性及硬件实现效率,成为轻量级密码算法的典型代表,并已成为ISO/IEC 29192-2:2012轻量级密码算法国际标准。在2011年,我国中科院吴文玲、张蕾等人提出了一种轻量级算法—LBlock算法。该算法考虑了实现代价、实现效率和算法安全性等多方面因素,是我国轻量级密码领域研究的成果之一。以下主要针对上述两种算法的FPGA实现展开研究。

1 算法原理

1.1 PRESENT算法

PRESENT算法[6]基于SP网络结构,加解密过程需要32轮迭代运算,其数据分组长度为64比特,密钥有80比特和128比特两种长度。于是,根据密钥长度的不同,PRESENT算法分为PRESENT-80和PRESENT-128两种版本。以下主要研究PRESE-NT-128在RFID系统上的应用。

图1 PRESENT算法加密流程

PRESENT-128每轮加密主要由三种运算组成:异或、S盒替换、P置换。异或运算是每轮数据进行加密的第一种运算,主要是将当前状态数据与轮密钥进行异或处理。S盒替换是非线性运算,首先将异或结果按4比特分组,划分为16组,分别送入S盒进行替换处理,其输入输出关系如表1,表中x代表十进制输入,S(x)代表十进制输出。P置换是将S盒处理的结果进行比特位的重新排序,提高数据的扩散速度,P置换的输入输出关系如表2所示,表中i代表输入的比特位,P(i)代表输出比特位,如输入的第4比特位经过P置换后变成输出的第1比特位。

表1 PRESENT-128算法的S盒

表2 PRESENT-128算法的P置换

PRESENT-128每轮的密钥更新过程如下:首先,密钥存储在密钥寄存器K中,其按比特可表示为k127k126…k0。密钥寄存器循环左移61位,然后,高8位数据经过S盒替换,轮计数值与寄存器的62-66比特位进行异或运算,经过上述变换得到新的密钥,并将新密钥的高64位作为轮密钥输出。上述过程可表示为以下表达式:

PRESENT-128的解密过程同加密过程相似,只是解密过程中使用的S盒和P置换是逆S盒和逆P置换,并且子密钥的使用顺序是反向的。

1.2 LBlock算法

LBlock算法[7]基于Feistel架构,数据分组长度为64比特,密钥长度为80比特,迭代轮数32轮。算法的过程如下:

首先,将64比特明文P分成左右两个32比特X1和X0,即

最后,将输出X32和X33拼接在一起作为64比特密文输出

为加快推进木图工程建设项目审批制度改革,加强从事土木工程活动的勘察设计企业和施工图审查机构的动态监管,提高勘察设计行业信息化管理水平,健全全过程电子监管,推进施工图审查提速增效和企业诚信管理,营造诚实守信的勘察设计市场环境。可以建立数字化施工图审查系统平台、勘察设计企业和施工图审查机构信用评价管理平台。两个平台的同步运用,进一步完善了勘察设计行业的事中事后管理措施,全面提高审批效率,实现了事半功倍。

其中F函数包括两种运算:S盒替换和P置换。S盒采用984个不同的4比特输入4比特输出S盒,P置换是将8个S盒的输出进行顺序交换变化。S盒的输入输出关系如表3,其中x代表十进制输入,S(x)代表十进制输出。P置换的过程如下:

假设P置换的32位输入为X,按4比特分组可表示为

经过P置换后输出为

表3 LBlock算法的S盒

LBlock每轮的密钥更新过程如下:首先,密钥存储在密钥寄存器K中,其按比特可表示为k79k78…k0。密钥寄存器循环左移29位,然后,高8位数据经过S8盒和S9盒替换,轮计数值与寄存器的46-50比特位进行异或运算,经过上述变换得到新的密钥,并将新密钥的高32位作为轮密钥输出。上述过程可表示为以下表达式:

LBlock的解密过程同加密过程相似,只是解密过程中先进行S盒和P置换,然后再进行循环移位,循环移位的方向反向,并且子密钥的使用顺序也是反向的。

2 算法协议

在2013年,我国正式发布了超高频段RFID协议——GB/T29768-2013《信息技术 射频识别800/900 MHz空中接口协议》,并于2014年正式进入实施阶段。协议主要针对840MHz-845MHz、920MHz-925MHz频段范围内的RFID应用,并对 RFID安全性进行了充分考虑,涵盖了安全鉴别和安全通信内容,对规范我国超高频段RFID应用具有重要的指导作用。

将算法应用到协议中,设计了图2所示的对称加密双向鉴别协议[6]。

图2 对称加密双向鉴别协议

基于PRESENT-128或者LBlock的对称加密双向鉴别协议过程如下:

首先,读写器发送安全参数获取命令ꎻ

第二步,标签对安全参数获取命令做出响应,将标签标识符TID以及安全模式、安全功能等安全参数发送给读写器ꎻ

第三步,读写器用根密钥RK和标签的TID生成鉴别密钥AK,发送请求鉴别命令Req_SAuth给标签ꎻ

第四步,标签收到请求鉴别命令后,生成随机数RNt发送给读写器ꎻ

第五步,读写器生成随机数RNr和会话密钥SK,使用PRESENT-128算法或者LBlock算法对鉴别密钥AK、待加密数据RNr||RNt||SK 进行加密,并得到加密结果 EAK(RNr||RNt||SK),将加密结果通过双向鉴别命令 Mul_SAuth(RNt||EAK(RNr||RNt||SK))发送给标签ꎻ

第六步,标签收到鉴别命令后,首先判断接收到的RNt是否与自己在第四步中自己产生的RNt相等,若相等,标签通过PRESENT-128算法或者LBlock算法,载入密钥AK以及加密数据 EAK(RNr||RNt||SK)),解密得到 RNr′||RNt′||SK。 接着比较RNt′与RNt,若相等,则标签认为读写器通过鉴别,将RNr′发送给读写器,跳转到开放状态,并将SK作会话密钥为安全通信阶段使用ꎻ如果不相等,则标签认为读写器未通过鉴别,发送响应数据包,跳转到仲裁状态ꎻ

第七步,读写器接收到RNr”后,比较RNr”和RNr是否相等,若相等,则认为标签通过鉴别,且将SK作会话密钥为安全通信阶段使用ꎻ如果不相等,则读写器认为标签未通过鉴别。

3 算法的硬件设计

3.1 PRESENT-128算法的硬件结构

图3 PRESENT-128接口图

设计的算法模块接口如图3所示,PRESENT-128共有6个端口。 其中 CLK、Ready、Data_i、Key_i为 6 个输入端口,Data_o、Done为2个输出端口。6个输入端口中,CLK为时钟信号ꎻData_i和Key_i分别为64比特的明文输入和128比特的初始密钥输入ꎻReady为明文和密钥输入信号,当Ready=1后的第一个时钟上升沿,明文和初始密钥开始从端口Data_i和Key_i输入。2个输出信号中,Data_o为加密后的64比特数据输出ꎻDone为输出有效信号,当Done为1时,代表Data_o输出的数据为最终加密的有效数据。

如图4所示,PRESENT-128加密硬件实现由两个并行处理的部分组成:数据加密处理和密钥扩展处理。电路开始运行时,首先将待加密数据和初始密钥分别载入Data和Key两个个寄存器。Data是64位的寄存器,用于存储加密数据。Key为128位的寄存器,用于存储密钥。数据加载完成后,开始进行数据加密处理,同时进行密钥的扩展更新,每一轮的加密和密钥扩展均在一个时钟周期内完成。在每一轮加密过程中,Data与相应的加密轮密钥进行异或,然后将异或的结果经过16个4比特输入4比特输出的S盒进行变换,变换后的数据又经过P_Layer进行混淆处理,处理后的结果更新到Data中。于此同时,密钥进行更新处理,首先进行61比特循环左移,然后将相应的比特位进行S盒置换以及异或运算处理,生成新的密钥数据以更新Key寄存器,并将高32比特数据作为轮密钥送入数据加密处理。按上述步骤进行32轮加密,最后输出加密结果。

图4 PRESENT-128加密硬件结构

3.2 LBlock算法的硬件结构

图5 LBlock接口图

LBlock算法的硬件接口同PRESENT-128算法相似,同样有6个端口。 其中 CLK、Ready、Data_i、Key_i为 6个输入端口,Data_o、Done为2个输出端口。6个输入端口中,CLK为时钟信号ꎻData_i和Key_i分别为64比特的明文输入和80比特的初始密钥输入ꎻReady为明文和密钥输入信号,当Ready=1后的第一个时钟上升沿,明文和初始密钥开始从端口Data_i和Key_i输入。2个输出信号中,Data_o为加密后的64比特数据输出ꎻDone为输出有效信号,当Done为1时,代表Data_o输出的数据为最终加密的有效数据。

图6 LBlock加密硬件结构

如图6所示,LBlock加密的硬件实现也可以分为两个并行处理的部分:数据加密处理和密钥扩展处理。电路开始运行时,首先将待加密数据和初始密钥分别载入 Data_L、Data_R和 Key三个寄存器。 Data_L和 Data_R均是 32位的寄存器,用于存储加密数据。Key为128位的寄存器,用于存储密钥。数据加载完成后,开始进行数据加密处理,同时进行密钥的扩展更新,每一轮的加密和密钥扩展均在一个时钟周期内完成。在每一轮加密过程中,Data_R与相应的加密轮密钥进行异或,然后将异或的结果经过8个4比特输入4比特输出的S盒进行置换,置换后的数据又经过P_Layer进行混淆处理,处理后的结果与Data_L异或生成新的Data_R,同步将更新前的Data_R数据存储到Data_L中。于此同时,密钥进行更新处理,首先进行29比特循环左移,然后将相应的比特位进行S盒置换以及异或运算处理,生成新的密钥数据以更新Key寄存器,并将最高32比特密钥数据作为轮密钥送入数据加密处理。按上述步骤进行31轮加密,第32轮取消Data_L和Data_R的交换作为输出结果。

4 实现结果

利用Xilinx ISE9.2i软件,选择xilinx公司型号为xc5vlx330的FPGA作为平台库,对LBlock算法、PRESENT-128的Verilog HDL代码进行综合分析,评估了算法在FPGA上实现情况。实现的结果见表4,其中还列出了PRESENT-80的实现结果。

根据表4可以看出,LBlock的FPGA实现占用了资源75 Sclices,比PRESENT-80的资源占用量 79Sclices和 PRESENT-128的资源占用量90Sclices均小。然而,LBlock的最大工作频率为521MHz,比PRESNT-80和 PRESNT-128的最大工作频率较低,导致其吞吐量也比PRESENT-80和PRESENT-128稍低。

表4 实现结果比较

PRESENT-128因其密钥长度最长,导致其电路用于存储密钥的FFs数比LBlock和 PRESENT-80的都多,同时 PRESENT-128电路LUTs数也占用较多,导致其资源占用Sclices数最多。将其与FPGA的总资源做一个比较,得到表5所示结果。从表5可知,PRESENT-128各项资源占用量均在0.2%以下,显然,LBlock和PRESENT-80的资源占用量也是低于0.2%的,因此,再次证明PRESENT算法和LBlock算法是适合于RFID等轻量化的安全应用环境,同时也是适合于FPGA硬件实现的。

表5 PRESENT-128占用FPGA资源情况

5 结语

RFID技术快速发展的同时,其安全性问题日益突出,基于轻量级密码算法的RFID安全方案得到广泛研究。PRESENT算法和LBlock算法因其安全性高、实现效率高等优点得到广泛研究。通过对这两种算法的研究,实现了算法在协议上的应用,同时研究了这两种算法在FPGA上的实现结构和实现性能。通过在统一FPGA平台下对两种算法进行了评估分析,从结果中可以看出,这两种轻量级算法是适合于FPGA硬件实现的,特别是可以作为RFID系统中标签和读写器的安全组成部分。

[1] 李如年.基于RFID技术的物联网研究[J].中国电子科学研究院学报, 2009,4(06):594-597.

[2] WEINSTEIN Ron.RFID:A Technical Overview and Its Application to the Enterprise[J].IT professional, 2005,7(3):27-33

[3] OREN Yossef,SHAMIR Adi.Remote Password Extraction from RFID Tags[J].IEEE Transactions on Computers archive,2007,56(9):1292-1296.

[4] 张宏壮,王建民.RFID中的安全隐私问题及策略分析[J].微计算机信息,2008,24(6-3):47-49.

[5] 彭朋,韩伟力,赵一鸣等.基于RFID的物联网安全需求研究[J].计算机安全,2011(01):75-79.

[6] A.BOGDANOV, L.R.KNUDSEN, G.LEANDER, and et al.PRESENT:An Ultra-Lightweight Block Cipher[C]//The 9th InternationalWorkshop on Cryptographic Hardware and Embedded Systems.Berlin:Springer Berlin Heidelberg, 2007:450-466.

[7] WU Wenling,ZHANG Lei.LBlock:A Lightweight Block Cipher[C]//The 9th International Conference on Applied Cryptography and Network Security.Berlin:Springer Berlin Heidelberg,2011:327-344.

[8] 全国信息技术标准化技术委员会.GB/T 29768-2013,信息技术 射频识别800-900MHz空中接口协议[S].北京:中国标准出版社,2014:45-50.

猜你喜欢

读写器寄存器比特
Lite寄存器模型的设计与实现
比特币还能投资吗
比特币分裂
分簇结构向量寄存器分配策略研究*
比特币一年涨135%重回5530元
基于视频抓拍读写器的高速公路防倒卡研究
苹果封杀比特币应用另有隐情?
基于随机时隙的RFID读写器防冲突方法
高速数模转换器AD9779/AD9788的应用
RFID网络读写器冲突避免MAC协议