CN104852798B - 一种数据加解密***及方法 - Google Patents
一种数据加解密***及方法 Download PDFInfo
- Publication number
- CN104852798B CN104852798B CN201510238121.4A CN201510238121A CN104852798B CN 104852798 B CN104852798 B CN 104852798B CN 201510238121 A CN201510238121 A CN 201510238121A CN 104852798 B CN104852798 B CN 104852798B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- mrow
- decryption
- encryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种数据加解密***及方法,该***包括输入数据缓冲模块、主控模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述输入数据缓冲模块暂存外部输入的数据;所述主控模块控制输入数据缓冲模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述调整值生成模块生成XTS加密模式需要的调整值;所述主加解密模块对所述数据的状态矩阵进行加密或解密的轮运算操作,所述密钥扩展模块将初始密钥扩展成所述主加解密模块所需的轮密钥;所述密文窃取模块实现XTS加密模式中的密文窃取;所述密文窃取寄存器模块暂存密文窃取所需要的中间加解密数据;所述数据输出模块向外部输出加密或解密结果。
Description
技术领域
本发明涉及信息科学技术领域,特别是涉及一种数据加解密***及方法。
背景技术
在信息存储领域,针对硬盘数据进行加解密的实现方法可分为软加密和硬加密两大类。硬加密即是通过专用的处理芯片配合相应的软件,来实现对硬盘数据的加解密过程。与不需要额外硬件的软加密相比,硬加密具有速度快、占用***资源少、加密强度高等特点。
上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
本发明(主要)目的在于提出一种一种数据加解密***及方法,以解决上述现有技术存在的加密速度慢的技术问题。
为此,本发明提出一种数据加解密***,包括输入数据缓冲模块、主控模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述输入数据缓冲模块暂存外部输入的数据;所述主控模块控制输入数据缓冲模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述调整值生成模块生成XTS加密模式需要的调整值;所述主加解密模块对所述数据的状态矩阵进行加密或解密的轮运算操作,所述密钥扩展模块将初始密钥扩展成所述主加解密模块所需的轮密钥;所述密文窃取模块实现XTS加密模式中的密文窃取;所述密文窃取寄存器模块暂存密文窃取所需要的中间加解密数据;所述数据输出模块向外部输出加密或解密结果。
一种数据加解密方法,包括如下步骤:主控模块进行初始化设置,根据外部输入的信号,启动加解密功能;设置主加解密模块和调整值生成模块用到的S盒;设置密钥扩展模块用到的S盒;密钥扩展模块根据主控模块传来的数据和信号,产生主加解密模块中使用的轮密钥,产生调整值生成模块中使用的轮密钥;输入数据缓冲模块将外部输入数据暂存,并根据主控模块发出的信号,将暂存的数据输入密文窃取模块中;所述主控模块将接收到的逻辑位置值送入调整值生成模块;密文窃取模块根据主控模块的信号,选择启用或不启用密文窃取模式;主加密模块和调整值生成模块在主控模块的控制下,分别从密钥扩展模块调用相应的轮密钥,调整值生成模块将输入的调柄加密生成调整值,并将其送入主加密模块,主加解密模块从密文窃取模块中获取数据,执行流水线并行加解密操作,将处理后的数据送入数据输出模块中。
本发明与现有技术对比的有益效果包括:本发明采用了适应流水线操作的XTS加解密模式,使得安全性和效率均优于传统的加解密模式。
附图说明
图1是发明的总体结构图;
图2是本发明的调整值生成模块的框图;
图3是本发明的主加解密模块的框图;
图4是密钥扩展模块原理图;
图5是密钥扩展模块的结构框图;
图6是复合S盒模块的结构框图;
图7是行移位列混淆模块的结构框图;
图8是密文窃取模块的原理图;
图9是密文窃取模块的结构框图;
图10是寄存器模块的结构框图;
图11是数据加解密***的状态转移图;
图12是本发明的工作流程图。
具体实施方式
下面结合具体实施方式并对照附图对本发明作进一步详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
参照以下附图,将描述非限制性和非排他性的实施例,其中相同的附图标记表示相同的部件,除非另外特别说明。
本领域技术人员将认识到,对以上描述做出众多变通是可能的,所以实施例仅是用来描述一个或多个特定实施方式。
如图1所示,一种数据加解密***包括输入数据缓冲模块、主控模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块。输入数据缓冲模块用于暂存外部总线输入的数据。主控模块用于转换轮运算模块的加解密模式、协调密钥扩展模块、调整值生成模块和主加解密模块工作、为密钥扩展模块提供必要的数据、控制密文窃取流程和输入输出流程。调整值生成模块用于生成XTS加密模式需要的调整值。主加解密模块负责对数据的状态矩阵进行加密或解密的轮运算操作,轮运算操作包括字节代换、逆字节代换、行移位、逆行移位、列混淆、逆列混淆、轮密钥加等子操作。密钥扩展模块用于将初始密钥扩展成主加解密模块所需的轮密钥。密文窃取模块用于实现XTS加密模式中的密文窃取功能。密文窃取寄存器模块用于暂存密文窃取所需要的中间加解密数据。数据输出模块用于向外部输出加密或解密结果。图1中的各信号名称说明如表1所示:
表1 各外部信号名称说明
图2为调整值生成模块框图。Tweak为预置的128位调柄,将其进行14轮的轮加密运算,而轮加密运算用到的轮密钥是利用外部输入的Key2扩展得到的。调柄经过轮运算后的数据放入调整值寄存器中,然后和Ln信号一起进入调整值幂运算模块中,经过幂运算后,将Tdone信号置于高电平,开始输出调整值。调整值幂运算模块在Tdone信号置于高电平时,将寄存器里的值送出,然后在随后的Ln-1个周期内,循环执行以下操作:首先判断128位输入数据的最高位为1或是0,如果最高位为0,则直接将整体数据左移1位;如果最高位为1,则将整体数据左移1位后,将最低8位与0x87按位异或;然后将数据作为调整值输出,并利用输出值更新调整值寄存器中的值。
图2中各部件的详细描述如下:首轮轮密钥加模块负责将预置的调柄和第0轮的轮密钥进行异或操作;调整值字节代换模块1至调整值字节代换模块14将输入的数据按照映射规则转换为相应的输出数据;调整值行移位列混淆模块1至调整值行移位列混淆模块13将输入的数据进行位置调整,并通过乘法运算和异或运算实现数据的混淆处理;调整值轮密钥加模块1至调整值轮密钥加模块13将当前数据与每一轮的轮密钥进行按位异或操作;调整值行移位轮密钥加模块通过位置调整和异或操作,同时实现数据的行移位功能和轮密钥加功能;调整值寄存器模块用于暂存中间结果;调整值幂运算模块通过移位操作和异或操作,实现数据的幂运算功能。各信号名称及其说明由表2所示:
表2 调整值生成模块信号信号说明
图3为主加解密模块框图,输入数据可为待加密数据或待解密数据,首先将输入数据与调整值和第0轮的轮密钥进行异或,然后对其进行14轮的轮运算,轮运算中用到的轮密钥是利用外部输入的Key1扩展得到的,如果是解密模式,则轮密钥是加密轮密钥经过逆列变换处理后得到的。经过14次轮运算后的数据再和调整值异或后输出结果。图3中各部件的详细描述如下:主加解密字节代换模块1至主加解密字节代换模块14将输入的数据按照映射规则转换为相应的输出数据;主加解密行移位列混淆模块1至主加解密行移位列混淆模块13将输入的数据进行位置调整,并通过乘法运算和异或运算实现数据的混淆;主加解密轮密钥加模块1至主加解密轮密钥加模块13负责将输入数据与相应的轮密钥进行异或运算;第一主加解密异或模块负责将输入数据与调整值及第0轮的轮密钥进行异或操作;主加解密行移位轮密钥加模块通过位置调整和异或操作,同时实现数据的行移位功能和轮密钥加功能;第二主加解密异或模块负责将输入数据与调整值进行异或并进行输出。各信号名称及其说明由表3所示:
表3 主加解密模块信号说明
图4为密钥扩展模块原理图。W4i至W4i+3为当前轮密钥中的第1至第4个32位字,W4i-8至W4i-1为前两轮轮密钥中的8个32位字,函数其中符号为按位异或运算;SubBytes为字节代换操作;RotBytes是以字节为单位的循环移位操作,假设W={b1,b2,b3,b4},其中b1,b2,b3,b4均为8位字节,那么RotBytes(W)={b2,b3,b4,b1};Rcon为32位的轮常数,高24位均为0,低8位为Rc,Rc根据当前轮的轮序号i决定,如表1所示。
图5为密钥扩展模块结构框图。密钥扩展控制单元接收前两轮轮密钥key1和key2,并送入异或模块中。此外将key1的第3个字和key2的第4个字送入F函数模块中,F模块输出的数据也送到第一密钥扩展异或模块中参与轮密钥的生成,F函数模块的功能为符号为按位异或运算;SubBytes为字节代换操作;RotBytes是以字节为单位的循环移位操作。在图5中各部件的功能分别为:密钥扩展控制单元负责接收外部数据和信号、协调密钥扩展算法各个模块协同工作、向外部输出密钥生成完成信号;第一F函数模块负责对当前的前1轮的轮密钥进行F函数操作;第二F函数模块负责对当前的前2轮的轮密钥进行F函数操作;第一密钥扩展异或模块负责按照式(1)的原理,对输入的数据进行异或操作生成当前轮密钥;Mul9模块负责对输入数据进行与9模乘的操作;MulB模块负责对输入数据进行与11模乘的操作;MulD模块负责对输入数据进行与13模乘的操作;MulE模块负责对输入数据进行与14模乘的操作;第二密钥扩展异或模块负责将输入的数据进行异或操作,生成本轮轮密钥对应的逆轮密钥。由于轮密钥的生成不依赖于逆轮密钥,所以逆轮密钥的生成并不会对轮密钥的生成速度造成影响。
逆轮密钥与轮密钥的关密如下式所示,其中k1,j',k2,j',k3,j',k4,j'为逆轮密钥的列元素,k1,j,k2,j,k3,j,k4,j为轮密钥的列元素,均为字节:
密钥扩展模块各信号名称及其说明如表4所示:
表4 密钥扩展模块各信号名称及其含义
名称 | 位数 | 说明 |
Clk | 1 | 时钟信号 |
Reset | 1 | 复位信号,高电平有效 |
RC | 8 | F函数需要的轮常数低8位 |
Saddr | 4 | S盒选择信号 |
En1 | 1 | key1使能信号,高电平有效 |
En2 | 1 | key2使能信号,高电平有效 |
Key1 | 128 | 1轮前的轮密钥 |
Key2 | 128 | 2轮前的轮密钥 |
Key_ready | 1 | 轮密钥完成信号,高电平有效 |
Invkey_ready | 1 | 逆密钥完成信号,高电平有效 |
Key | 128 | 本轮轮密钥输出端口 |
Invkey | 128 | 本轮逆轮密钥输出端口 |
图6为复合S盒模块框图,复合S盒运用于主加解密模块、整值生成模块中的字节代换模块中,以及密钥扩展模块中的F函数模块中。复合S盒由8个8输入8输出的S盒及其逆S盒组成,复合S盒由查找表ROM单元实现,查找地址为12位,高4位用来选择S盒或逆S盒,低8位为字节代换输入数据。复合S盒存在于字节代换模块和F函数模块中,并应用于图1中的主加解密模块、调整值生成模块、密钥扩展模块中。表5中给出了复合S盒的信号名称及其说明。
表5 复合S盒模块信号说明
名称 | 位数 | 说明 |
Clk | 1 | 外部时钟信号 |
Addr | 4 | 用于选择使用的S盒和逆S盒 |
Datain | 8 | 需要进行字节代换的输入数据 |
Dataout | 8 | 经过字节代换后的输出数据 |
图7为行移位列混淆模块框图,本模块可实现行移位、列混淆及其逆运算操作,并运用于调整值生成模块和主加解密模块中。行移位、逆行移位、列混淆、逆列混淆的数学表达形式如表6所示,其中bi,1',bi,2',bi,3',bi,4'和b1,j',b2,j',b3,j',b4,j'为经过操作后的字节,bi,1,bi,2,bi,3,bi,4和b1,j,b2,j,b3,j,b4,j为操作前的字节。行移位列混淆模块利用查找表功能实现有限域上的乘法运算,在异或模块中利用连线实现行移位及逆行移位操作,并选择相应的数据异或得到列混淆及逆列混淆结果,最后由Mode信号线选择输出,Mode为低电平时输出行移位和列混淆后结果,Mode为高电平时输出逆行移位和逆列混淆后结果。图7中各模块的详细描述如下:Mul2模块负责对输入数据进行与2模乘的操作;Mul3模块负责对输入数据进行与3模乘的操作;Mul9模块负责对输入数据进行与9模乘的操作;MulB模块负责对输入数据进行与11模乘的操作;MulD模块负责对输入数据进行与13模乘的操作;MulE模块负责对输入数据进行与14模乘的操作;正向异或模块负责接收Datain数据、Mul2、Mul3输出的数据,并进行异或操作,然后将经过行移位和列混淆后的数据输出;逆向异或模块负责接收Mul9、MulB、MulD、MulE模块输出的数据,并进行异或操作,然后将经过逆行移位和逆列混淆后的数据输出;行移位列混淆寄存器负责暂存正向异或模块和逆向异或模块输出的数据,并根据Mode信号选择其一,输出最终数据。mul2、mul3、mul9、mulB、mulD、mulE这些模乘单元均基于查找表实现,表7至表12分别给出了它们的取值表。
表6 行移位、逆行移位、列混淆、逆列混淆的数学表达形式
表7 mul2模块取值表
表8 mul3模块取值表
表9 mul9模块取值表
表10 mulB模块取值表
表11 mulD模块取值表
表12 mulE模块取值表
图8为密文窃取模块工作原理图,假设待处理的数据块中一共包含n个数据单元,数据单元1至数据单元n-1的长度均为16字节。当数据单元n的长度不满16字节时,设其长度为P字节,将数据单元n-1加解密后的数据分为两个部分,前一部分为中间输出1,长度为P字节,后一部分为中间输出2,长度为16-P字节,将中间输出1作为最终输出n,将中间输出2加入数据单元n的高位,拼成16字节的长度后,送入主加解密模块,得到的结果为中间输出3,并将中间输出3作为最终输出n-1。
图9为密文窃取模块的结构框图,密文窃取调度单元从输入数据缓冲模块中获得整个加密块的数据,并存放在调度寄存器1至调度寄存器32中,每个调度寄存器存放1个数据单元的数据,最多可支持32个数据单元,每个数据单元的字节数不超过16。信号Len1为数据单元的个数,信号Len2为最后一个数据单元的字节数,当最后一个数据单元的字节数不为16时,主控模块将Smode线置为高电平,启用密文窃取功能。假设Len1的值为n,密文窃取调度单元先把数据单元n-1送入主加解密模块中,然后依次将数据单元1至数据单元n-2按顺序送入主加解密模块中,最后从Sdata上读取数据单元n-1经过加解密后的数据,并取出高位数据段和数据单元n合并成长度为16字节的数据,送入主加解密模块中,同时将Sdone置于高电平,表示数据输送完毕。如果数据单元n的字节数刚好为16,则控制模块将Smode线置为低电平,密文窃取调度单元先把数据单元n-1送入主加解密模块中,然后依次将数据单元1至数据单元n-2按顺序送入主加解密模块中,最后直接将数据单元n送入主加解密模块中,并将Sdone信号线拉高以指示密文窃取工作的完成。各信号名称及说明如表13所示:
表13 密文窃取模块各信号说明
图10为密文窃取寄存器模块结构框图,密文窃取寄存器模块主要用于暂存数据单元n-1经过加解密运算后的结果。当复位信号Reset置于高电平时,密文窃取寄存器进入待机状态,等待主加解密模块输出结果,其写使能信号端口En与主加解密模块的完成指示信号端口Isdone相连接,当主加解密模块完成加解密工作时,向密文窃取寄存器模块发送指示信号,密文窃取寄存器模块将加解密结果锁存,供密文窃取模块调用。图10中各部件的详细描述如下:密文寄存控制单元负责接收主加解密模块的Isdone指示信号,并根据此信号指示密文寄存器锁存数据;密文寄存器和主加解密模块的输出数据线相连,并根据密文寄存控制单元的指示信号锁存数据。表14中给出了密文窃取寄存器模块各信号名称及其说明。
表14 密文窃取模块各信号说明
图11为数据加解密***的状态转移图,当Reset置高电平时,***复位至Idle状态待机,在Idle状态下,***检测到Start信号处于高电平状态时,先进入轮密钥扩展状态Keyexpand,当轮密钥扩展完毕时,将Key_ready信号置于高电平,进入加解密流程。加解密流程由Mode信号来决定是处于加密还是解密状态,由Smode信号来决定是否启用密文窃取功能。当Key_ready=1,Mode=0,Smode=1时,进入密文窃取型加密状态Enc_Steal;当Key_ready=1,Mode=0,Smode=0时,进入非密文窃取型加密状态Enc_Normal;当Key_ready=1,Mode=1,Smode=0时,进入非密文窃取型解密状态Dec_Normal;当Key_ready=1,Mode=1,Smode=1时,进入密文窃取型解密状态Dec_Steal。当加解密工作完成后,将Isdone信号置于高电平,***进入对外输出数据状态Output,当数据输出完毕或Reset信号置为高电平时,***回到Idle状态等待Start信号。
实施例:
本实施例是在Xilinx公司的Virtex5的系列芯片XC5VFX130T上完成测试的,具体包括以下步骤:
步骤1:***上电,初始化S盒数据,实施例中的复合S盒由8个8输入8输出的S盒以及它们的逆S盒按顺序在ROM中排列而成,低位按顺序存放1至8号S盒,高位按顺序存放1至8号逆S盒。复合S盒的数据用十进制表示,如表15:
表15 实施例中使用的复合S盒数据表
步骤2:选择密钥扩展使用的S盒组合顺序1以及主加解密模块、调整值生成模块使用的S盒组合顺序2。在实施例中使用的S盒组合顺序1为:{S8,S7,S6,S5,S4,S3,S2,S1,S8,S7,S6,S5,S4},S盒组合顺序2为:{S1,S2,S3,S4,S5,S6,S7,S8,S1,S2,S3,S4,S5,S6}。
步骤3:输入自定的主密钥、次密钥、调柄,用十六进制表示,如表16:
表16 实施例中输入的主密钥、次密钥、调柄值
步骤4:输入测试明文数据,用十六进制表示,如表17:
表17 实施例中输入的测试明文数据
数据单元1 | 0102030405060708090A0B0C0D0E0F10 |
数据单元2 | 1112131415161718191A1B1C1D1E1F20 |
数据单元3 | 2122232425262728292A2B2C2D2E2F30 |
数据单元4 | 3132333435363738393A3B3C3D3E3F40 |
数据单元5 | 4142434445464748494A4B4C4D4E4F50 |
数据单元6 | 5152535455565758595A5B5C5D5E5F60 |
数据单元7 | 6162636465666768696A6B6C6D6E6F70 |
数据单元8 | 7172737475767778797A7B7C7D7E7F80 |
数据单元9 | 8182838485868788898A8B8C8D8E8F90 |
数据单元10 | 9192939495969798999A9B9C9D9E9FA0 |
数据单元11 | 0102030405060708090A0B0C0D0E0F10 |
数据单元12 | 1112131415161718191A1B1C1D1E1F20 |
数据单元13 | 2122232425262728292A2B2C2D2E2F30 |
数据单元14 | 3132333435363738393A3B3C3D3E3F40 |
数据单元15 | 4142434445464748494A4B4C4D4E4F50 |
数据单元16 | 5152535455565758595A5B5C5D5E5F60 |
数据单元17 | 6162636465666768696A6B6C6D6E6F70 |
数据单元18 | 7172737475767778797A7B7C7D7E7F80 |
数据单元19 | 8182838485868788898A8B8C8D8E8F90 |
数据单元20 | 9192939495969798999A9B9C9D9E9FA0 |
数据单元21 | 0102030405060708090A0B0C0D0E0F10 |
数据单元22 | 1112131415161718191A1B1C1D1E1F20 |
数据单元23 | 2122232425262728292A2B2C2D2E2F30 |
数据单元24 | 3132333435363738393A3B3C3D3E3F40 |
数据单元25 | 4142434445464748494A4B4C4D4E4F50 |
数据单元26 | 5152535455565758595A5B5C5D5E5F60 |
数据单元27 | 6162636465666768696A6B6C6D6E6F70 |
数据单元28 | 7172737475767778797A7B7C7D7E7F80 |
数据单元29 | 8182838485868788898A8B8C8D8E8F90 |
数据单元30 | 9192939495969798999A9B9C |
步骤5:将Mode置为低电平,Smode置为高电平,设置为XTS加密模式。然后将Start信号置于高电平,同步启动密钥扩展模块、调整值生成模块。经过28个周期后调整值模块生成完毕,轮密钥也已就绪,此时启动主加解密模块,***以流水线XTS模式进行数据单元加密工作,经过28个周期后,流水线正式建立,每个周期输出128位的密文,轮密钥、逆轮密钥、调整值、密文用十六进制表示,分别如表18、表19、表20、表21所示:
表18 实施例中经扩展得到的轮密钥
轮密钥1 | 201F1E1D1C1B1A191817161514131211 |
轮密钥2 | 100F0E0D0C0B0A090807060504030201 |
轮密钥3 | DFCE154C14030201D7C61D4444D4F04B |
轮密钥4 | BE66D369DBC21940EEB1212339FA9720 |
轮密钥5 | B2C08FAD7DA3CC2C50F801CDF5CD79F9 |
轮密钥6 | 572BE54487B3B7CEDF4550918749419E |
轮密钥7 | 0D407C187A7028A50DBA8A48E35237B4 |
轮密钥8 | 05F9378755B69B479CDB2896C1386CC7 |
轮密钥9 | E53D0E927233956A71B3F9126D6898B3 |
轮密钥10 | 295892E32C50BD4336039F3A13DE31F8 |
轮密钥11 | 7CC4A01A2AD8FE9B434A2CA18910A219 |
轮密钥12 | 96B364C766978263357B3845C3CABA50 |
轮密钥13 | CAAAB866FF21B6FD6FF780556B9241CF |
轮密钥14 | E324E1CF99460240779716FD506135E1 |
轮密钥15 | CFED178D73F2D76706CA202CC4E6D15B |
表19 实施例中经扩展得到的逆轮密钥
逆轮密钥1 | 201F1E1D1C1B1A191817161514131211 |
逆轮密钥2 | AAF98CC33E25302F4261547B362D3827 |
逆轮密钥3 | C6639C71D6BDE897CE6B9479F1BE1377 |
逆轮密钥4 | E5744CBFBA27F825C277B75FD39C95AE |
逆轮密钥5 | 4417D9DAFDA230512DACB4518C616B3E |
逆轮密钥6 | 3E642DAA3C4796A04FA776C5ACB14844 |
逆轮密钥7 | 32391133EE6AA9AAA2CFCFD75E94EE16 |
逆轮密钥8 | 34879E6141D9F1568479D9DD5EB557EE |
逆轮密钥9 | 9D83FEA47822F81C82EF581CDB977210 |
逆轮密钥10 | 110DAAB65823D62FB2B820BA3EA71489 |
逆轮密钥11 | 584B8091EBC00AB63ECF423725624A2F |
逆轮密钥12 | E3170674B2D076042DB546ED94CE3089 |
逆轮密钥13 | E0AAF50136184EF5C6B4B38CC8A20C11 |
逆轮密钥14 | 9ED455F67FCFC5E8606E171231738522 |
逆轮密钥15 | CFED178D73F2D76706CA202CC4E6D15B |
表20 实施例中生成的调整值
调整值1 | A3D507777787B8A1BB1474CA8D6947BB |
调整值2 | C1AB0FEEEE0E71437729E8941BD38E76 |
调整值3 | 82571FDCDD1DE286EE52D02937A61DED |
调整值4 | 83AF3EB8BB3BC40DDDA5A0536E4C3BDA |
调整值5 | 815F7D707777881BBA4B41A7DC9876B4 |
调整值6 | 85BFFAE0EEEE10377497824EB931ED68 |
调整值7 | 0A7FF5C1DDDD216EE82E059D7263DAD1 |
调整值8 | 93FEEA83BBBB43DCD05D0A3AE5C6B4A3 |
调整值9 | A1FDD507777787B8A1BB1474CA8D6947 |
调整值10 | 42FBAB0FEEEE0E71437729E8941BD38E |
调整值11 | 03F6571FDCDD1DE286EE52D02937A61D |
调整值12 | 06ECAF3EB8BB3BC40DDDA5A0536E4C3B |
调整值13 | 0CD85F7D707777881BBA4B41A7DC9876 |
调整值14 | 18B0BFFAE0EEEE10377497824EB931ED |
调整值15 | B7607FF5C1DDDD216EE82E059D7263DA |
调整值16 | E9C1FEEA83BBBB43DCD05D0A3AE5C6B4 |
调整值17 | 5583FDD507777787B8A1BB1474CA8D69 |
调整值18 | AA06FBAB0FEEEE0E71437729E8941BD3 |
调整值19 | D30DF6571FDCDD1DE286EE52D02937A6 |
调整值20 | 211BECAF3EB8BB3BC40DDDA5A0536E4C |
调整值21 | 4236D85F7D707777881BBA4B41A7DC98 |
调整值22 | 036CB0BFFAE0EEEE10377497824EB931 |
调整值23 | 06D8607FF5C1DDDD216EE82E059D7263 |
调整值24 | 0CB0C1FEEA83BBBB43DCD05D0A3AE5C6 |
调整值25 | 9F6083FDD507777787B8A1BB1474CA8D |
调整值26 | B9C106FBAB0FEEEE0E71437729E8941B |
调整值27 | 72830DF6571FDCDD1DE286EE52D02937 |
调整值28 | E4061BECAF3EB8BB3BC40DDDA5A0536E |
调整值29 | C80D36D85F7D707777881BBA4B41A7DC |
调整值30 | 171B6CB0BFFAE0EEEE10377497824EB9 |
表21 实施例中加密得到的密文数据
数据单元1 | FBCFB5D6BC01762BDC72F6F6B69DA861 |
数据单元2 | 3999BA886A05597CE8EB697E2D54D78A |
数据单元3 | 2BC53708573957D439AA6A8DDAB4D8C8 |
数据单元4 | FFAA277342B499F9CA85AA21C190A4E7 |
数据单元5 | CA3E91D8C36D167E164DB6ED7C0E73C2 |
数据单元6 | 59D06CC449C5217F647E640E716ED444 |
数据单元7 | 297BC9C547C92BEFA0DB4C1802486089 |
数据单元8 | 95A8DFF1C6782B481943A7510ABCDA52 |
数据单元9 | E5B7D052D8314ED3503F22507E65045E |
数据单元10 | BE574D498331B5690A1FB732C62ECBDB |
数据单元11 | 775C7089F7BDD5307A1051982635D830 |
数据单元12 | 0DA363875A2A6D58296695449A9E6D94 |
数据单元13 | 92BF63149A25A709E8397406A5F47FE9 |
数据单元14 | C98DABCC9D21542F6ABAD1C46726650A |
数据单元15 | 29526F45BFFEF80564948A006B1EC329 |
数据单元16 | 881C0B277169AB89EB536644744A7474 |
数据单元17 | 3ECB9F75F8F0F09AFC41345E061823A9 |
数据单元18 | 7B9740FED4547F425581644B0102212A |
数据单元19 | 59E8C1F89ED02DA7DB72A77C06A4D1A8 |
数据单元20 | F47A268597601F768103726B6F67F8FD |
数据单元21 | 14CAD8B4AE00A011968826FA66B1390A |
数据单元22 | C272717BAD4B2480044394B9C6841B9F |
数据单元23 | 7A3027B6E415C4D47B106239A58D768F |
数据单元24 | 40B44094C9ADDF6CE43BB012238B7B99 |
数据单元25 | AFDF8D86978AB7C0B92E6675782B856E |
数据单元26 | D0AF4847BA973EF13D1D723BA086004D |
数据单元27 | F1A5D06EA842F2A13984206BE7B592CB |
数据单元28 | C2059F9646BBAFBDDFC6196350E52829 |
数据单元29 | 6B321331EE5A5B9F0FE0E2D1863D7BA4 |
数据单元30 | EABFA35DC647AE2329F43E99 |
步骤6:将Reset置为高电平复位后,重复步骤1至步骤3。然后将表21中的密文数据作为待解密数据输入,输入完毕后将Mode置为高电平,Smode置为高电平,设置为XTS解密模式。然后将Start信号置于高电平,同步启动密钥扩展模块、调整值生成模块。经过28个周期后调整值模块生成完毕,逆轮密钥也已就绪,此时启动主加解密模块,***以流水线XTS模式进行数据单元解密工作,经过28个周期后,流水线正式建立,每个周期输出128位的解密文,解密文数据如表22所示:
表22 实施例中得到的解密文数据
数据单元1 | 0102030405060708090A0B0C0D0E0F10 |
数据单元2 | 1112131415161718191A1B1C1D1E1F20 |
数据单元3 | 2122232425262728292A2B2C2D2E2F30 |
数据单元4 | 3132333435363738393A3B3C3D3E3F40 |
数据单元5 | 4142434445464748494A4B4C4D4E4F50 |
数据单元6 | 5152535455565758595A5B5C5D5E5F60 |
数据单元7 | 6162636465666768696A6B6C6D6E6F70 |
数据单元8 | 7172737475767778797A7B7C7D7E7F80 |
数据单元9 | 8182838485868788898A8B8C8D8E8F90 |
数据单元10 | 9192939495969798999A9B9C9D9E9FA0 |
数据单元11 | 0102030405060708090A0B0C0D0E0F10 |
数据单元12 | 1112131415161718191A1B1C1D1E1F20 |
数据单元13 | 2122232425262728292A2B2C2D2E2F30 |
数据单元14 | 3132333435363738393A3B3C3D3E3F40 |
数据单元15 | 4142434445464748494A4B4C4D4E4F50 |
数据单元16 | 5152535455565758595A5B5C5D5E5F60 |
数据单元17 | 6162636465666768696A6B6C6D6E6F70 |
数据单元18 | 7172737475767778797A7B7C7D7E7F80 |
数据单元19 | 8182838485868788898A8B8C8D8E8F90 |
数据单元20 | 9192939495969798999A9B9C9D9E9FA0 |
数据单元21 | 0102030405060708090A0B0C0D0E0F10 |
数据单元22 | 1112131415161718191A1B1C1D1E1F20 |
数据单元23 | 2122232425262728292A2B2C2D2E2F30 |
数据单元24 | 3132333435363738393A3B3C3D3E3F40 |
数据单元25 | 4142434445464748494A4B4C4D4E4F50 |
数据单元26 | 5152535455565758595A5B5C5D5E5F60 |
数据单元27 | 6162636465666768696A6B6C6D6E6F70 |
数据单元28 | 7172737475767778797A7B7C7D7E7F80 |
数据单元29 | 8182838485868788898A8B8C8D8E8F90 |
数据单元30 | 9192939495969798999A9B9C |
从实施例中可以看出,本发明的硬盘数据加解密处理芯片运用可选择的复合S盒、改进后的密钥扩展算法,成功以XTS加解密模式对数据块进行了加解密,加解密结果完全正确。同样的明文在不同的逻辑位置上可得到不同的密文,且每个时钟周期能够输出128位的处理数据,说明处理芯片在保证了可靠性的同时也达到了高速的处理效率。
如图12所示,本发明中的数据加解密方法包括以下步骤:(1)主控模块根据Reset信号进行初始化设置,根据外部输入的Start信号,启动加解密功能,根据mode信号确定芯片工作在加密或解密模式,并根据Sn1设置主加解密模块和调整值生成模块用到的S盒组合,根据Sn2设置密钥扩展模块用到的S盒组合。(2)密钥扩展模块根据主控模块传来的数据和信号,将Key1扩展为主加解密模块中使用的轮密钥,将Key2扩展为调整值生成模块中使用的轮密钥。(3)输入数据缓冲模块将外部输入数据暂存,并根据主控模块发出的信号,将暂存的数据输入密文窃取模块中;同时,主控模块将预置的调柄和接收到的Ln值送入调整值生成模块。(4)密文窃取模块根据主控模块的信号,选择启用或不启用密文窃取模式。(5)主加密模块和调整值生成模块在主控模块的控制下,分别从密钥扩展模块调用相应的轮密钥,调整值生成模块将预置的调柄加密后生成调整值,并将其送入主加密模块,主加解密模块从密文窃取模块中获取数据,执行流水线并行加解密操作,将处理后的数据送入数据输出模块中。(6)加解密工作完成后,主加解密模块向主控模块发送信号,主控模块协调数据输出模块输出加密或解密结果。
步骤1中的Sn1和Sn2为用户选择的S盒顺序组合,组合数的上限值取决于复合S盒中包含的S盒个数,主加解密模块中和调整值模块中均需要使用14次S盒,密钥扩展模块中需要使用13次S盒,本发明的加密芯片中,复合S盒中包含了8个不同的S盒,故Sn1可选择的组合数上限为814,Sn2可选择的组合数上限为813。
步骤2中的密钥扩展算法,按照以下的公式给出:
其中i=2,3,4,…,14。W4i至W4i+3分别代表轮密钥中的第1至第4个32位字,而W0至W7直接由256位的初始密钥给出。函数其中符号为按位异或运算;SubBytes为字节代换操作;RotBytes是以字节为单位的循环移位操作,假设W={b1,b2,b3,b4},其中b1,b2,b3,b4均为8位字节,那么RotBytes(W)={b2,b3,b4,b1};Rcon为32位的轮常数,后24位均为0,前8位为Rc,Rc根据当前轮的轮序号i决定,如表23所示:
表23 Rcon前八位取值表(十六进制)
i | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
RC | 01 | 02 | 04 | 08 | 10 | 20 | 40 | 80 | 1b | 36 | 6c | d8 | ab |
步骤3中的Ln为加密单元在加密块中的逻辑位置,最开始为0,最大值为31。
步骤4中的密文窃取模块根据主控模块的信号选择是否采用密文窃取模式,假设数据块一共被分割为n个数据单元,前n-1个数据单元长度为16字节,第n个数据单元的长度不大于16字节。密文窃取模块首先将数据单元n-1送入主加解密模块中进行加解密操作,然后依次将数据单元1至数据单元n-2送入主加密模块中进行加解密操作。最后,如果数据单元n的长度刚好为16字节,则主控模块将Smode信号线拉低,密文窃取模块直接把数据单元n送入主加解密模块中;如果数据单元n的长度不为16字节,假设为p个字节(p<16),则主控模块将Smode信号线拉高,密文窃取模块从寄存器模块中取出数据单元n-1的加解密后的高位16-p个字节的数据,与第n个数据单元拼接成16字节的数据,送入主加解密模块中,经过加解密后得到的数据作为最终输出的第n-1个单元,而原来数据单元n-1的加解密后的低位P个字节作为最终输出的第n个单元。
步骤5中的调整值生成模块包含1个首轮轮密钥加模块、14个调整值轮运算模块、1个调整值寄存器模块以及1个调整值幂运算模块。首轮轮密钥加模块负责将预置的调柄和首轮轮密钥进行异或运算操作;调整值轮运算模块负责将输入值进行14次轮运算加密操作,前13个调整值轮运算模块包含调整值字节代换模块、调整值行移位列混淆模块、调整值轮密钥加模块,最后1个调整值轮运算模块包含调整值字节代换模块、调整值行移位轮密钥加模块;调整值寄存器模块用于寄存当前输出的调整值;调整值幂运算模块负责将调整值寄存器模块输出的数据进行有限域GF(2128)上的幂运算及模乘操作。主加解密模块中包括第一主加解密异或模块、第二主加解密异或模块、14个主加解密轮运算模块。第一主加解密异或模块负责将输入数据与调整值、第0轮的轮密钥进行异或操作;第二主加解密异或模块负责将经过轮运算后的数据与调整值进行异或操作;主加解密轮运算模块负责将输入值进行14次轮运算加密操作,前13个主加解密轮运算模块包含主加解密字节代换模块、主加解密行移位列混淆模块、主加解密轮密钥加模块,最后1个主加解密轮运算模块包含主加解密字节代换模块、主加解密行移位轮密钥加模块。
在本发明的数据加解密***和方法中,加解密所采用的算法基于XTS-AES改进而来,主加解密模块、密钥扩展模块、调整值生成模块中涉及到的字节代换操作利用复合S盒实现,复合S盒由多个8输入8输出S盒及其逆S盒组合而成,并可由地址线选择用到的S盒;密钥扩展模块所用到的密钥扩展算法按式(1)给出;加密芯片整体采用适应流水线操作的XTS密文窃取模式,密文窃取模块首先将数据单元n-1送入主加解密模块中进行加解密操作,然后依次将数据单元1至数据单元n-2送入主加密模块中进行加解密操作,最后根据主控模块的信号针对数据单元n进行处理;主加解密模块、调整值生成模块、密钥扩展模块采用流水线结构,这些模块中涉及到的字节代换操作、行移位列混淆操作均基于查找表和连线功能实现。
本发明基于FPGA实现对硬盘数据的流水线加解密操作,采用了适应流水线操作的XTS加解密模式,使得安全性和效率均优于传统的加解密模式。在安全性方面,针对字节代换模块及密钥扩展模块进行了改进,字节代换模块利用复合的S盒,并可由用户指定加解密流程中使用的S盒组合顺序,同时保证了字节代换的速度;密钥扩展模块采用的密钥扩展算法采用不可推导型函数,每轮的轮密钥由前两轮的轮密钥变换而来,攻击者无法由已知的轮密钥推导出剩余的轮密钥,使得密钥扩展算法比AES算法具有更强的安全性。
本发明针对目前AES算法中密钥扩展算法和单一固定S盒的安全性问题,以及传统分组密码加密模式的安全性问题,提出了一种数据加解密***及方法。本发明中的加密算法在AES算法的基础上,改变了密钥扩展算法,使得攻击者无法通过已知的轮密钥推出其余的轮密钥。采取XTS加密模式,不仅使得安全性能进一步优于传统的加密模式,更能利用流水线并行处理数据,提高加密芯片的数据吞吐率。此外,引入了多重S盒机制,依据用户的选择,不同的轮运算将采用不同的S盒。
在本发明提出的数据加解密***中,字节代换操作中使用的置换函数由多个8位输入、8位输出的S盒构成,置换层的输出数据由明文数据以及置换盒选择数据共同决定。使用256位的初始密钥,密钥扩展算法中,每一轮的轮密钥需要由前两轮的轮密钥来共同决定。加密芯片采用XTS加密模式,除了主密钥和明文,增添了调整值的输入,调整值是将预置的调柄进行加密运算和模乘运算后生成的。对于每个明文块,利用密文窃取模式获得密文块的最后32个字节。加解密模块使用相同的流水线结构,由控制单元控制当前模式是加密模式或是解密模式。轮运算中的字节操作和列混淆操作均由查找表ROM模块实现,行移位操作利用连线功能实现。
尽管已经描述和叙述了被看作本发明的示范实施例,本领域技术人员将会明白,可以对其作出各种改变和替换,而不会脱离本发明的精神。另外,可以做出许多修改以将特定情况适配到本发明的教义,而不会脱离在此描述的本发明中心概念。所以,本发明不受限于在此披露的特定实施例,但本发明可能还包括属于本发明范围的所有实施例及其等同物。
Claims (8)
1.一种数据加解密***,其特征在于:包括输入数据缓冲模块、主控模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述输入数据缓冲模块暂存外部输入的数据;所述主控模块控制输入数据缓冲模块、调整值生成模块、主加解密模块、密钥扩展模块、密文窃取模块、密文窃取寄存器模块和数据输出模块;所述调整值生成模块生成XTS加密模式需要的调整值;所述主加解密模块对所述数据的状态矩阵进行加密或解密的轮运算操作,所述密钥扩展模块将初始密钥扩展成所述主加解密模块所需的轮密钥;所述密文窃取模块实现XTS加密模式中的密文窃取;所述密文窃取寄存器模块暂存密文窃取所需要的中间加解密数据;所述数据输出模块向外部输出加密或解密结果;
所述调整值生成模块包括首轮轮密钥加模块、多个调整值字节代换模块、多个调整值行移位列混淆模块、多个调整值轮密钥加模块、调整值行移位轮密钥加模块、调整值寄存器模块、调整值幂运算模块;所述首轮轮密钥加模块将预置的调柄和第0轮的轮密钥进行异或操作;所述多个调整值字节代换模块将输入的数据按照映射规则转换为相应的输出数据;所述多个调整值行移位列混淆模块将输入的数据进行位置调整,并通过乘法运算和异或运算实现数据的混淆处理;所述多个调整值轮密钥加模块将当前数据与每一轮的轮密钥进行按位异或操作;所述调整值行移位轮密钥加模块通过位置调整和异或操作,同时实现数据的行移位功能和轮密钥加功能;所述调整值寄存器模块暂存中间结果;所述调整值幂运算模块通过移位操作和异或操作,实现数据的幂运算功能。
2.如权利要求1所述的数据加解密***,其特征在于:所述主加解密模块包括多个主加解密字节代换模块、多个主加解密行移位列混淆模块、多个主加解密轮密钥加模块、第一主加解密异或模块、主加解密行移位轮密钥加模块、第二主加解密异或模块;所述主加解密字节代换模块将输入的数据按照映射规则转换为相应的输出数据;所述主加解密行移位列混淆模块将输入的数据进行位置调整,并通过乘法运算和异或运算实现数据的混淆;所述主加解密轮密钥加模块将输入数据与相应的轮密钥进行异或运算;所述第一主加解密异或模块将输入数据与调整值及第0轮的轮密钥进行异或操作;所述主加解密行移位轮密钥加模块通过位置调整和异或操作,同时实现数据的行移位功能和轮密钥加功能;所述第二主加解密异或模块将输入数据与调整值进行异或并进行输出。
3.如权利要求1所述的数据加解密***,其特征在于:所述密钥扩展模块包括密钥扩展控制单元、第一F函数模块、第二F函数模块、第一密钥扩展异或模块、第二密钥扩展异或模块、Mul9模块、MulB模块、MulD模块和MulE模块;所述密钥扩展控制单元负责接收外部数据和信号、协调密钥扩展算法各个模块协同工作、向外部输出密钥生成完成信号;所述第一F函数模块对当前的前1轮的轮密钥进行F函数操作;所述第二F函数模块对当前的前2轮的轮密钥进行F函数操作;所述第一密钥扩展异或模块对输入的数据进行异或操作生成当前轮密钥;所述Mul9模块对输入数据进行与9模乘的操作;所述MulB模块对输入数据进行与11模乘的操作;所述MulD模块对输入数据进行与13模乘的操作;所述MulE模块对输入数据进行与14模乘的操作;所述第二密钥扩展异或模块将输入的数据进行异或操作,生成本轮轮密钥对应的逆轮密钥。
4.如权利要求1所述的数据加解密***,其特征在于:所述密文窃取模块包括密文窃取调度单元及多个调度寄存器;所述密文窃取调度单元从所述输入数据缓冲模块中获得整个加密块的数据,并存放在所述调度寄存器内,所述调度寄存器存放经输入数据缓冲模块输入的数据。
5.如权利要求1所述的数据加解密***,其特征在于:所述调整值生成模块、主加解密模块和密钥扩展模块中的字节代换操作利用复合S盒实现,复合S盒包括多个8输入8输出S盒及其逆S盒,并可由地址线选择用到的S盒。
6.如权利要求1所述的数据加解密***,其特征在于:所述主加解密模块、调整值生成模块和密钥扩展模块采用流水线结构,所述调整值生成模块、主加解密模块和密钥扩展模块中的字节代换操作和行移位列混淆操作均基于查找表和连线功能实现。
7.一种数据加解密方法,其特征在于包括如下步骤:
(1)主控模块进行初始化设置,根据外部输入的信号,启动加解密功能;
(2)设置主加解密模块和调整值生成模块用到的S盒;
(3)设置密钥扩展模块用到的S盒;
(4)密钥扩展模块根据主控模块传来的数据和信号,产生主加解密模块中使用的轮密钥,产生调整值生成模块中使用的轮密钥;
(5)输入数据缓冲模块将外部输入数据暂存,并根据主控模块发出的信号,将暂存的数据输入密文窃取模块中;所述主控模块将接收到的逻辑位置值送入调整值生成模块;
(6)密文窃取模块根据主控模块的信号,选择启用或不启用密文窃取模式;
(7)主加密模块和调整值生成模块在主控模块的控制下,分别从密钥扩展模块调用相应的轮密钥,调整值生成模块将输入的调柄加密生成调整值,并将其送入主加密模块,主加解密模块从密文窃取模块中获取数据,执行流水线并行加解密操作,将处理后的数据送入数据输出模块中;
使用如下密钥扩展算法,
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>8</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>5</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<mi>F</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>7</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>6</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>4</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>+</mo>
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>3</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>8</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>5</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<mi>F</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>3</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>+</mo>
<mn>3</mn>
</mrow>
</msub>
<mo>=</mo>
<mi>F</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>5</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>4</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msub>
<mi>W</mi>
<mrow>
<mn>4</mn>
<mi>i</mi>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中i=2,3,4,…,14;W4i至W4i+3分别代表轮密钥中的第1至第4个32位字,而W0至W7直接由256位的初始密钥给出;函数其中符号为按位异或运算;SubBytes为字节代换操作;RotBytes是以字节为单位的循环移位操作。
8.如权利要求7所述的数据加解密方法,其特征在于还包括如下步骤:
加解密工作完成后,主加解密模块向主控模块发送信号,主控模块协调数据输出模块输出加密或解密结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510238121.4A CN104852798B (zh) | 2015-05-11 | 2015-05-11 | 一种数据加解密***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510238121.4A CN104852798B (zh) | 2015-05-11 | 2015-05-11 | 一种数据加解密***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104852798A CN104852798A (zh) | 2015-08-19 |
CN104852798B true CN104852798B (zh) | 2017-10-03 |
Family
ID=53852168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510238121.4A Expired - Fee Related CN104852798B (zh) | 2015-05-11 | 2015-05-11 | 一种数据加解密***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104852798B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105356996B (zh) * | 2015-12-14 | 2018-11-09 | 联想(北京)有限公司 | 一种密文处理方法、电子设备及密文处理装置 |
CN106254061B (zh) * | 2016-08-14 | 2019-08-23 | 北京数盾信息科技有限公司 | 一种高速网络存贮加解密方法 |
CN110276208B (zh) * | 2016-09-29 | 2022-06-17 | 北京忆芯科技有限公司 | 加密电路、解密电路及其方法 |
CN106341419B (zh) * | 2016-10-17 | 2019-04-19 | 重庆邮电大学 | 一种调用外接加解密模块的方法及移动终端 |
CN109150497B (zh) * | 2018-07-26 | 2020-07-24 | 南京航空航天大学 | 一种高性能小面积的xts-sm4加密电路 |
CN111047849B (zh) * | 2019-12-30 | 2021-05-18 | 江苏大周基业智能科技有限公司 | 一种联网遥控密码模块及安全遥控*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8155308B1 (en) * | 2006-10-10 | 2012-04-10 | Marvell International Ltd. | Advanced encryption system hardware architecture |
CN103109296A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 具有对抗重放攻击的保护的用于存储器加密的可调加密模式 |
-
2015
- 2015-05-11 CN CN201510238121.4A patent/CN104852798B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8155308B1 (en) * | 2006-10-10 | 2012-04-10 | Marvell International Ltd. | Advanced encryption system hardware architecture |
CN103109296A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 具有对抗重放攻击的保护的用于存储器加密的可调加密模式 |
Non-Patent Citations (3)
Title |
---|
《SMS4算法应用于空间数据加密的研究及实现》;贾艳梅、陶新;《空间电子技术》;20150425(第2期);全文 * |
《基于XTS-AES的主机加密卡的FPGA的设计与实现》;冉飞;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110415;全文 * |
《高吞吐率XTS-AES加密算法的硬件实现》;李子磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;参见第3.2.1、3.2.3节,图2-7、3-2、3-4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
Also Published As
Publication number | Publication date |
---|---|
CN104852798A (zh) | 2015-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104852798B (zh) | 一种数据加解密***及方法 | |
CN106788974B (zh) | 掩码s盒、分组密钥计算单元、装置及对应的构造方法 | |
CN107707343B (zh) | 加解密一致的sp网络结构轻量级分组密码实现方法 | |
CN101350714B (zh) | 采用混合rijndael s-box的有效高级加密标准数据路径 | |
CN1921382B (zh) | 一种基于aes算法的加解密方法及加解密器 | |
CN104639314A (zh) | 基于aes加密/解密算法的装置和流水控制方法 | |
CN103516512A (zh) | 基于aes算法的加解密方法及加解密器 | |
CN104065474B (zh) | 一种轻量级Surge分组密码实现方法 | |
JP4025722B2 (ja) | データ暗号化のための方法および装置 | |
CN101764684A (zh) | 实现sms4算法的加解密*** | |
CN105959107B (zh) | 一种新型高安全的轻量级sfn分组密码实现方法 | |
Mane et al. | High speed area efficient FPGA implementation of AES algorithm | |
CN101764685A (zh) | 实现sms4算法的加解密*** | |
CN105007154B (zh) | 一种基于aes算法的加密解密装置 | |
CN111431697A (zh) | 一种新型轻量级分组密码corl的实现方法 | |
CN108933653A (zh) | 一种基于大规模数据的aes加解密***及方法 | |
CN110784307A (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
CN109150495A (zh) | 一种轮变换复用电路及其aes解密电路 | |
JP2005513541A (ja) | Aesアルゴリズム用のプログラマブルデータ暗号化エンジン | |
JP2005513541A6 (ja) | Aesアルゴリズム用のプログラマブルデータ暗号化エンジン | |
CN107896149A (zh) | 基于三个群运算的128位对称加密方法 | |
CN112287333A (zh) | 一种轻量级可调分组密码实现方法、***、电子设备以及可读存储介质 | |
CN109033893B (zh) | 基于合成矩阵的aes加密单元、aes加密电路及其加密方法 | |
CN108809627B (zh) | 轮变换复用电路及aes解密电路 | |
CN109033847B (zh) | Aes加密运算单元、aes加密电路及其加密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171003 |
|
CF01 | Termination of patent right due to non-payment of annual fee |