基于USB接口加密算法研究

时间:2022-10-10 08:28:44

基于USB接口加密算法研究

摘 要: 随着信息时代的到来,网络应用范围的日益扩大,电子商务以及网络银行等新兴业务逐渐兴起,给信息安全提出更高要求。加密算法是加密系统的核心内容。在现有数据加密体系基础之上,对基于USB接口加密算法进行阐述,并对算法FPGA进行分析。

关键词: USB接口;加密算法;Rijndael;FPGA

0 前言

随着信息时代的到来,计算机及互联网的应用范围越来越广,广泛涉及到各个领域,诸如电子商务、网络银行等新兴业务逐步发展起来,在给人们的工作及生活带来极大便利的同时,也将信息安全问题摆在了人们面前,维护信息安全性是信息时代的一大热点课题。加密算法是信息加密系统中最为关键的内容,加密算法的设计极为重要。本文在对现有数据加密体系进行研究的基础之上,提出了基于USB接口的加密算法,并对算法FPGA模式解决方案进行全面阐述。

1 Rijndael算法分析

就是加密和解密使用的不同是一个密钥,在非对称加密体系中,密钥被分解为一对(即公开密钥和私有密钥)。密钥中任何一把都可作为公开密钥,通过非保密方式向他人公开,而另一把作为私有密钥加以保存。公开密钥用于加密,私有密钥用于解密,两个必需配对使用,否则不能打开加密文件。在网络上传输加密文件,收件人解密时,只要用自己的私钥,即可避免密钥的传输安全性问题。非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,广泛应用于身份认证、数字签名等信息交换领域。

作为加密系统中最为关键的内容之一,加密算法的选择或设计应予以足够重视。本文选用的数据加密算法是比利时密码专家所研发的,并由美国国家标准及技术研究所宣布当选AES的Rijndael算法。Rijndael算法属于迭代分组密码算法,可以根据实际需求,调整分组长度及密钥长度,此外本算法具有一定扩充性,在以32bit为步长,128bit至256bit区间内,允许对算法分组长度及密钥长度进行调整。占用内存空间少,并且密钥安装简单是本算法最大的优势;此外,该算法具有较好的兼容性,对运行平台的要求极低,支持并行处理。

Rijndael算法对加法及乘法两种运算方式作出了定义,字节及4字节是运行的基本单位。在算法设计方面,主要是考虑到以下几方面:便于实现、对攻击的抵抗性以及多种平台中的运行速度及代码效率。Rijndael算法用Square结构取代了传统加密算法中的Feistel结构,中间态变换知识进行以为处理,三个可逆的简单变换构成轮变换,也就是层。字节的处理方式不受状态变换的影响,这样为快速并行处理的实现奠定了基础。在设计过程中针对层进行不同的组合方式,可以使其具备对线性以及差分攻击的抵抗性能。其中,线性混合层的主要作用在于,保证系统的扩散效果在经过数轮的变换之后依然满足需求;非线性层的功能主要是利用S盒的并行应用,实现了最差情况下输入数据以及密钥组合非线性特征的优化;密钥相加层,主要是在中间状态下,实现本轮密钥以及数据的异或操作。Rijndael算法的密钥为一个长度为 的比特串,

特明文组为加密对象,得到的密文组长依然为 。加解密处理的中间结果称为状态。

Rijndael解密算法与其加密算法之间在结构方面并无差异,解密变换极为加密算法变换的逆过程,只是在密钥扩展方面稍有改动。Rijndael算法以Square算法为原型,并采取主要面向差分分析以及线性分析的宽轨迹策略,其突出的优势在于给出了算法的最佳差分特征概率以及最佳线性逼近的偏差界,从而为分析该算法的抗击差分密码及其线性密码。

2 算法的FPGA分析

加密产品一般都要求较快的速度、较大的安全通信容量以及优越的物理安全性能,这就在一定程度上促进了借助硬件实现的加密的发展。利用硬件描述语言来对加密算法进行设计,在此基础上进行逻辑综合及优化,最后装配到FPGA器件。

在上述加密算法模块设计示意图中,Control输入表示的是数据输入读与写以及注入密钥数据的控制信号,input/key表示的是数据总线,通过与Control进行有效配合,将加密数据以及密钥数据向FPGA进行传输。作为状态机逻辑的Control在FPGA中主要作用是对算法流程进行控制,Input interface表示的是输入数据格式处理逻辑单元,Key scheduling及EncrypTion/dec

ryption分别表示密钥扩展算法以及迭代算法,output interfa

Ce代表输出数据格式处理逻辑单元,格伦密钥数据内部的RAM需要存放在Memory of internal key中。

对于Rijndael算法而言,最为重要的环节就是对各轮的数据处理进行设计,针对每轮数据开展并行处理是利用FPGA进行轮运算设计的主要思路。

1)S盒设计。Rijndael算法中替换字节的算法大致可以通过两个步骤实现,第一步就是针对输入字节进行乘法逆,第二步便是开展仿射变换。具体到本函数中,输出的字节与输入的字节是一样的,都是8bit的字节,因此,出于提升运算速度的考虑,需要先将全部输入的输出值计算出来,并将计算结果进行保存;在接下来所开展的加密运算的过程中在通过对相关的计算替换表进行查询开展具体的运算。FPGA的实现过程需要先在FPGA中的ROM中将计算替换表进行保存,并以字节数值为主要依据进行查找替换,这样有助于提升字节替换运算速度。因为用于脱密的S盒和用于加密的S盒之间是存在一定差别的,这就对FPGA内部的用来对S盒进行保存的ROM的空间提出了一定的要求,即用于不能低于2*256字节=512字节=4096bit。若要将全部128bit字节替换所用的时间控制在一个时钟周期以内,还需要相应的扩大存储空间,也就是说用于存放替换表的存储空间必须达到16*4096bit=65536bit。在具体的设计过程中,可以以所选定的FPGA芯片对应的ROM容量为主要依据,确定需要存放的替换表的具体数量。这势必会在一定程度上影响到系统的执行时间,举例来说,如对16个加密替换表进行保存,共需要11个时钟周期才可以完成一个分组的加密计算,若对8个加密替换表进行保存,则需要花费22个时钟周期才能完成一个分组加密计算。

2)列混合的设计。根据对算法的描述可以认识到,从本质上讲,列混合就是一个 上的矩阵乘法函数,输入与输出的列向量分别是 和 ,其中, 与 均为1字节。

以方程组实现为基本理论基础,对MixColumn模块硬件函数进行设计。

经过分析可知,通过整理矩阵乘法运算,达到了对Xtime

运算以及XOR运算进行简化的目的,这也在一定程度上实现了对MixColumn结构的简化,使其变得更加简单、清楚,从而为借助VHDL硬件语言进行描述提供了便利。

3)密钥扩展设计。Rijndael算法主要包括InitKey、RoundKey(i=1,2,L,rN—1)以及FinalKey等N+1个子密钥,子密钥的获取方式为:由给定的字节主密钥充当下一列级移存器的初态,进动足够多拍生成32bits字序列。从一定意义上讲,主密钥就是移位存储器的初始状态,InitKey同样可以充当主密钥,在其之后,每进动四拍将会有一个新的子密钥生成,这一新产生的子密钥就是开展下一轮运算所需要的轮密钥。在本文中,算法设计过程中所采用的是VHDL语言,设计方案的编译综合采用的是FPGAExpress,并且针对MAX PLUS II进行仿真实验,实验结果令人满意。

4)行位移设计。行位移的实现相对简单,通常情况下,只需要借助VHDL语言索引信号下标即可。

3 结语

综上所述,数据加密算法是信息保密系统中最为重要的内容,选择或设计一个优良的加密算法可以为信息安全提供最有利的保障。特别是进入信息时代之后,计算机及互联网广泛深入到社会生活的方方面面,诸如电子商务、网络银行等新兴业务逐步发展起来,这一方面给人们的工作及生活带来了极大的便利,但另一方面也导致给信息安全造成了一定的威胁。本文着重分析了被选定为AES加密标准的Rijndael算法,通过测试差分性能,证实了该算法优越的扩散特性。为满足信息加密对速度的需求,特提出FPGA设计原理及仿真结果,并充分证实了Rijndael算法实现的便易性。

参考文献:

[1]涂望明、魏友国、段道聚、梁季程、张学志、谢存,基于USB接口设备的驱动程序设计[J].兵工自动化,2007(05).

[2]毕进军、于志平、李伦,通过USBN 9603/P89 C51平台实现USB接口硬件加密[J].微型机与应用,2004(04).

[3]张春霞、乔卫民、敬岚、季鹏,Windows2000的管理机制(WMI)

和WDM驱动程序的研究与应用[J].计算机工程与应用,2004(25).

[4]朱玉军、贾先德、江海河、王进祖、王志斌,基于USB和目标识别的图像采集系统的设计实现[J].微计算机信息,2006(01).

[5]刘彦峰、李峥,Windows CE和Windows 2000/XP设备驱动开发的区别[J].单片机与嵌入式系统应用,2009(12).

[6](美)DonAnderson著,USB系统体系[M].精英科技译,中国电力出版社,2001.

上一篇:射频电子识别技术在电梯电子监管系统中的研究... 下一篇:不同土地利用方式下土壤线虫群落的垂直分布分...