一种基于fpga的在线生成密钥的aes数据加密方法

文档序号:10596987阅读:276来源:国知局
一种基于fpga的在线生成密钥的aes数据加密方法
【专利摘要】本发明涉及一种基于FPGA的在线生成密钥的AES数据加密方法,包括:将预分割形成的状态数组首先进行第0轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式的密钥形成方法通过在线方式依次顺序产生的1?10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出;第1轮的密钥的生成时刻与第0轮轮密钥加操作同步。本发明提出的基于FPGA的AES数据加密方法,通过以上的技术方案,大大提高了加密算法的加密处理的性能。
【专利说明】
一种基于FPGA的在线生成密钥的AES数据加密方法
技术领域
[0001]本发明属于汽车涂装技术领域,具体涉及一种基于FPGA的在线生成密钥的AES数据加密方法。
【背景技术】
[0002]随着信息化的发展,计算机和互联网深入到生活工作生产中的方方面面。对应的,网络信息安全问题也随之成为目前至关重要的问题之一。
[0003]网络安全主是要针对网络攻击,防洪网络攻击。针对网络攻击,从网络结构上筑造坚固的堡皇进行防范和完善恶意行为监测机制是一方面,另一方面数据安全,即数据传输、数据存储的安全也至关重要。而数据的泄露主要是由于数据传输存储过程中采用明文或是仅采用简单加密方式导致的信息泄露。黑客攻击防不胜防,在数据的传输和存储过程中,对数据选取安全有效的加密加密算法进行加密是保证数据安全、防止信息泄露的最常见也是最重要的方式。
[0004]对数据加密采用的算法的安全有效性方面,AES(Advanced Encrypt1nStandard)算法已久经考验。Ri jndael算法是经过五年的觀选评估测试,由美国国家标准与技术研究院(NIST)最终选定的新一代数据加密标准,即AES JES算法指的就是Rijndael算法,它是一种开放性对称分组加密算法。AES算法不仅对目前已知的密码分析攻击具备很强的抗攻击性,而且在实现方面,算法简单明了,计算量相对较小。作为目前最优秀的对称加密算法,其应用已深入各个安全领域,是事实标准。
[0005]然而在针对目前大规模的高速数据流,数据加密性能方面,使用传统的软件加密来处理,不仅在实时性上会拖慢传输速度,而且大量占用主机的CPU,使得主机性能严重下降,若加密模块的实现采用专用高速硬件的实现方式,就能够绕开传统软件加密的缺点,更好地实现性能需求。但是在国内,针对高性能的硬件加密模块的研究却不多,更多的研究集中于低功耗的嵌入式设备中的加密模块设计。因此,设计能实现高性能硬件加密模块,对于应对我国目前的数据加密性能需求具有重要意义。

【发明内容】

[0006]本发明的目的在于解决上述的技术问题而提供一种基于FPGA的AES数据加密方法。
[0007]为实现上述目的,本发明采用如下技术方案:
一种基于FPGA的在线生成密钥的AES数据加密方法,包括以下步骤:
将待处理的数据流按预设的处理方法预处理,分割成多个预定长度的状态数组;将所述状态数组首先进行第O轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式通过在线方式依次顺序产生的1-10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出;
其中,第1-9轮的加密过程依次包括字节替换、行移位、列混合和轮密钥加的操作,且1-9轮中每轮的列混合和轮密钥加的步骤合并形成一个步骤,所述列混合和轮密钥加的步骤采用三个异或门依次进行完成每轮轮密钥加处理;第10轮的加密过程包括字节替换、行移位和轮密钥加的操作;
其中,第I轮的密钥的生成时刻与第O轮轮密钥加操作同步。
[0008]所述1-10轮密钥是利用输入的种子密钥和密钥扩展算法按逻辑顺序在线依次生成。
[0009]所述种子密钥是AES加密算法的输入密钥,该输入密钥作为输入参与第O轮轮密钥加操作。
[0010]所述1-10轮密钥的每一轮密钥的生成采用以下步骤:
维护一个密钥调度表,用于存储种子密钥和十轮密钥;该密钥调度表为一个4行4 X 11列的二维数组,每个数组单元为一个字节,二维数组的每一列作为一个字;所述种子密钥被复制到密钥调度表的前四个字中,然后第一轮密钥扩展生成的密钥占据之后的四个字,依此编排,十轮扩展之后,密钥调度表会被填满,密钥扩展过程结束,其中,每一轮密钥生成是通过字循环移位、字节替换以及轮常量异或的步骤顺序操作形成。
[0011]每一轮的加密操作以及每一轮的密钥扩展操作中的字节替换均是通过S盒查找表的方式实现。
[0012]所述S盒采用FPGA的的可重构逻辑单元实现通过查找表的方式实现。
[0013]所述1-10轮密钥利用三个异或门依次处理后而形成。
[0014]本发明提出的基于FPGA的AES数据加密方法,通过将预先分割形成的状态数组首先进行第O轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式通过在线方式依次顺序产生的1-10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出,且1-9轮中每轮的列混合和轮密钥加的步骤合并形成一个步骤,第I轮的密钥的生成时刻与第O轮轮密钥加操作同步,大大提高了加密算法的加密处理的性能。
【附图说明】
[0015]图1为本发明实施例提供的基于FPGA的在线生成密钥的AES数据加密方法的加密流程示意图;
图2为本发明实施例提供的基于FPGA的在线生成密钥的AES数据加密方法的密钥的形成流程示意图;
图3为本发明实施例提供的基于FPGA的在线生成密钥的AES数据加密方法的电路原理示意图。
【具体实施方式】
[0016]下面,结合实例对本发明的实质性特点和优势作进一步的说明,但本发明并不局限于所列的实施例。
[0017]参见图1-3所示,一种基于FPGA的在线生成密钥的AES数据加密方法,包括以下步骤:
将待处理的数据流按预设的处理方法预处理,分割成多个预定长度的状态数组; 将所述状态数组首先进行第O轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式的密钥形成方法通过在线方式依次顺序产生的1-10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出;
其中,第1-9轮的加密过程依次包括字节替换、行移位、列混合和轮密钥加的操作,且1-9轮中每轮的列混合和轮密钥加的步骤合并形成一个步骤,所述列混合和轮密钥加的步骤采用三个异或门ROX依次进行完成每轮轮密钥加处理;第10轮的加密过程包括字节替换、行移位和轮密钥加的操作;
其中,第I轮的密钥的生成时刻与第O轮轮密钥加操作同步。
[0018]所述的列混合和轮密钥加的步骤采用三个异或门R0X,如图1所示,分别为列混合和轮密钥加第一个异或门R0X、列混合和轮密钥加第二个异或门R0X、列混合和轮密钥加第三个异或门ROX。
[0019]所述1-10轮密钥是利用输入的种子密钥和密钥扩展算法按逻辑顺序在线依次生成。
[0020]具体在对一组状态数组进行加密时,通过首先判断加密轮数R是否为O依次按上述的方法步骤进行10轮的加密处理操作,在加密轮数为11时结束,这样一组状态数组的加密完成,然后再按同样的加密操作处理方法进行下一组状态数组的加密,最后输出相应的密文。
[0021 ]所述种子密钥是AES加密算法的输入密钥,该输入密钥作为输入参与第O轮轮密钥加操作,同时也是密钥扩展的唯一输入参数。
[0022]本发明中,所述1-10轮密钥的每一轮密钥的生成采用以下步骤:
维护一个密钥调度表,用于存储种子密钥和十轮密钥;该密钥调度表为一个4行4 X 11列的二维数组,每个数组单元为一个字节,二维数组的每一列作为一个字;所述种子密钥被复制到密钥调度表的前四个字中,然后第一轮密钥扩展生成的密钥占据之后的四个字,依此编排,十轮扩展之后,密钥调度表会被填满,密钥扩展过程结束,其中,每一轮密钥生成是通过上一轮密钥的四个字经过字循环移位、字节替换以及轮常量异或的步骤顺序操作形成。
[0023]具体的,如一个128bit长度的初始密钥被视为一个分组,按照与数据分组相同的状态数组编排规则,将初始密钥分组编排成状态数组的形式,密钥以同样的状态数组形式存在,这样的设计使得密钥能够更加直观简便地参与到加密过程中。
[0024]其中,所述1-10轮密钥利用三个异或门依次处理后而形成,如图2所示密钥扩展第一异或门、密钥扩展第二异或门、密钥扩展第三个异或门,前一个异或门的输出作为下一下异或门的输入进行处理,通过三个异或门最终完成该每轮的轮密钥架的操作。
[0025]需要说明的是,本发明中,每一轮的所述密钥在字循环移位、字节替换后具体可采用三个异或门ROX通过轮常量异或生成。
[0026]每一轮的密钥形成的步骤具体是,对上一轮密钥的最后一个字进行循环移位,然后进行字节替换以及轮常量异或而形成。
[0027]字节替换就是对循环移位产生的结果进行字节替换;
轮常量异或就是字节替换产生的结果需要与一个常量进行异或运算,该常量称为轮常量,该异或操作这里称为轮常量异或。十轮密钥扩展使用的轮常量各不相同,用一个数组来
[0028]具体的,生产每轮所述密钥的三个异或门的处理过程分别分别对应于加密操作的列混合和轮密钥加的三个异或门的处理步骤,生成的每一轮密钥分别用于对应的每轮列混合和轮密钥加的步骤(其中,第10轮中无列混合步骤,只有轮密钥架的操作步骤)。
[0029]具体的,本发明中,每一轮的加密操作以及每一轮的密钥操作中的字节替换均是通过S盒查(S-B0X)找表的方式实现。
[0030]所述S盒采用FPGA的的可重构逻辑单元实现通过查找表的方式实现,通过可重构逻辑单元访问该查找表并不经过总线访存,该查找表同加密算法的其他模块之间有快速的交互通道,从而提高了处理的速度,减少了延时。
[0031]本发明中,每一轮的加密操作以及密钥中的字节替换采用S盒实现,所述S盒的作用是针对状态数组或密钥数组的每一个字节,找到它对应的非线性变换后的结果,在状态数组或密钥数组中对其进行替换。
[0032]需要说明的是,本发明中,所述FPGA器件可以采用为Altera公司的Stratix IV系列,该系列FPGA中ALM(High_performance adaptive logic modules,可重构单元)数量在23万至36万之间,一个ALM至少可以相当于一个256的RAM,相当于可以实现6-9Mbit的RAM,用于实现不在一个数量级的40Kbit或400Kbit的S盒,并且不影响其他设计。
[0033]本发明方法运用在Altera的Stratix IV系列FPGA环境中,在线密钥生成时,反馈模式的吞吐率能够达到3.76Gbps。
[0034]可见,本发明提出的基于FPGA的AES数据加密方法,通过将预先分割形成的状态数组首先进行第O轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式通过在线方式依次顺序产生的1-10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出,且1-9轮中每轮的列混合和轮密钥加的步骤合并形成一个步骤,第I轮的密钥的生成时刻与第O轮轮密钥加操作同步,大大提高了加密算法的加密处理的性會K。
[0035]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,包括以下步骤: 将待处理的数据流按预设的处理方法预处理,分割成多个预定长度的状态数组; 将所述状态数组首先进行第O轮轮密钥加操作,之后再按加密算法的加密逻辑顺序输入按反馈工作模式的密钥形成方法通过在线方式依次顺序产生的1-10轮密钥对上一轮加密操作后形成的状态数组依次顺序加密形成相应密文输出; 其中,第1-9轮的加密过程依次包括字节替换、行移位、列混合和轮密钥加的操作,且1-9轮中每轮的列混合和轮密钥加的步骤合并形成一个步骤,所述列混合和轮密钥加的步骤采用三个异或门依次进行完成每轮轮密钥加处理;第10轮的加密过程包括字节替换、行移位和轮密钥加的操作; 其中,第I轮的密钥的生成时刻与第O轮轮密钥加操作同步。2.根据权利要求1所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,所述1-10轮密钥是利用输入的种子密钥和密钥扩展算法按逻辑顺序在线依次生成。3.根据权利要求2所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,所述种子密钥是AES加密算法的输入密钥,该输入密钥作为输入参与第O轮轮密钥加操作。4.根据权利要求3所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,所述1-10轮密钥的每一轮密钥的生成采用以下步骤: 维护一个密钥调度表,用于存储种子密钥和十轮密钥;该密钥调度表为一个4行4 X 11列的二维数组,每个数组单元为一个字节,二维数组的每一列作为一个字;所述种子密钥被复制到密钥调度表的前四个字中,然后第一轮密钥扩展生成的密钥占据之后的四个字,依此编排,十轮扩展之后,密钥调度表会被填满,密钥扩展过程结束,其中,每一轮密钥生成是通过字循环移位、字节替换以及轮常量异或的步骤顺序操作形成。5.根据权利要求4所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,每一轮的加密操作以及每一轮的密钥扩展操作中的字节替换均是通过S盒查找表的方式实现。6.根据权利要求5所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,所述S盒采用FPGA的的可重构逻辑单元实现通过查找表的方式实现。7.根据权利要求1所述基于FPGA的在线生成密钥的AES数据加密方法,其特征在于,所述1-10轮密钥利用三个异或门依次处理后而形成。
【文档编号】H04L9/06GK105959100SQ201610467088
【公开日】2016年9月21日
【申请日】2016年6月23日
【发明人】杨志欣, 李 杰, 倪红
【申请人】天津中安华典数据安全科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1