利索能及
我要发布
收藏
专利号: 2022102728342
申请人: 山东大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-05-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种Quartet轻量级加密算法的实现装置,其特征在于,包括明文处理模块、状态更新模块、状态寄存器组、状态控制单元、轮常数生成模块、密钥流生成模块、多路开关、数据选择器Mux1和数据选择器Mux2;

所述明文处理模块接收用户输入的指示信号flag和明文,输出处理后的64‑bit明文给状态控制单元;

所述状态更新模块包括三个,用于在状态控制单元输出的使能信号的驱动下进行3种不同的扩散运算,为加密算法计算不断更新的内部状态,并将更新后的状态送入状态寄存器组中;

所述状态寄存器组由4个状态寄存器state0‑state3组成,负责存储加密算法运行过程中生成并不断更新的状态,每个时刻4个状态寄存器state0‑state3的取值称为该时刻的状态,分别记作x0‑x3;

所述状态控制单元的输入端K和输入端IV分别用于接收用户输入的初始化密钥和初始化向量,输入端ADi用于接收用户输入的8‑bit关联数据,输入端mi与明文处理模块的输出相连,接收处理过的64‑bit明文;所述状态控制单元的输入端CIN0~CIN3分别与4个状态寄存器state0~state3的输出一一对应相连,用于每个时刻读取一组状态;所述状态控制单元的输出cnt与所述轮常数生成模块的输入、以及数据选择器Mux2的地址端相连,分别为轮常数生成模块提供计数值和为数据选择器Mux2提供地址;所述状态控制单元将读入的128‑bit的初始化密钥按照高低64位分成两组,即K[127:64]和K[63:0],直接连线输出给数据选择器Mux2的数据输入端,供生成认证标签时使用;

所述轮常数生成模块由26选1的数据选择器Mux3组成,可根据输入端的输入选择输出对应地址的轮常数,用于初始化阶段中的状态更新;

所述密钥流生成模块与状态寄存器组的输出相连,密钥流生成模块根据状态寄存器组的取值与数据选择器Mux2的输出异或生成密钥流;

所述多路开关的数据输入端与状态控制单元的输出cout0~cout3相连,地址输入端与状态控制单元中状态指示寄存器mode相连,数据输出端分别与三个状态更新模块的输入相连,可根据地址输入端的输入将状态控制单元的输出给某个状态更新模块;

所述数据选择器Mux1的数据输入端与三个状态更新模块的输出相连,地址输入端与状态控制单元中状态指示寄存器mode相连,输出与状态寄存器组相连,可根据地址输入端的输入将某个状态更新模块的输出给状态寄存器组;

所述数据选择器Mux2的两个数据输入端分别与状态控制单元输出的两组初始化密钥K[127:64]和K[63:0]相连,地址输入端与状态控制单元的输出cnt相连,可根据地址输出初始化密钥的部分位,用于与密钥流逐位异或生成认证标签。

2.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述状态更新模块包括执行ASCON线性扩散函数的扩散运算单元和二选一的数据选择器Mux4,所述数据选择器Mux4具备使能端记作ENABLE,ENABLE取值为0或者1;当其值为1时,4个64‑bit数据通过输入端口Si_x0~Si_x3被送入扩散运算单元中,1≤i≤3,i代表状态更新模块号;每个64‑bit数据均需经过4个ASCON线性扩散函数获得运算结果,通过输出端口Si_S0~Si_S3输出,1≤i≤3,i代表状态更新模块号;当ENABLE取值为0时,状态更新模块的输出等于输入的数据。

3.根据权利要求2所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述扩散运算单元由非门、与门、异或门及循环移位单元一、循环移位单元二、循环移位单元三组成,功能是对输入的数据进行扩散运算,所述循环移位单元一、循环移位单元二、循环移位单元三的功能是对输入的数据进行循环向左移动2位;

所述扩散运算单元的具体逻辑如下:

χ函数:OUTi←INi^(~INi+2)&INi+1;0≤i≤3

ρ函数:OUTi←{INi[63‑ni:32],INi[63:64‑ni],INi[31‑ni:0],INi[31:32‑ni]};0≤i≤3λ函数:OUTi←INi^{INi[ri,1‑1:0],INi[63:ri,1]}^{INi[ri,2‑1:0],INi[63:ri,2]};0≤i≤3其中,INi代表输入的64比特数据,^表示逐位异或,逻辑值相同则结果为0,不同则结果为1;~表示逐位取反,逻辑值1取反为0,逻辑值0取反为1;&表示逐位相与;INi[∶]表示64比特中的某些比特位,{}表示拼接,即将几个不同位宽的信号拼接为一个信号,而最终信号的位宽等于各个信号位宽的和;ni代表ASCON线性扩散函数中ρ函数使用的参数值;在算法运行的不同阶段,ni的取值始终是固定的;ri,1,ri,2代表ASCON线性扩散函数中χ函数使用的参数值,在算法运行的不同阶段,ri,1,ri,2的取值是可变的。

4.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述密钥流生成模块由异或门、非门和循环移位单元四组成;所述密钥流生成模块每轮将状态x1逐位取反,状态x0循环右移nz比特,二者相与的结果再和状态x2、x3逐位异或,最终生成64‑bit的密钥流zt用于加密。

5.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述明文处理模块包括一个二选一的数据选择器Mux5和一个七选一的数据选择器Mux6,所述数据选择器Mux6具备一个输入端flag,用于接收指示输入的明文是否完整;所述数据选择器Mux5具有一个输入端length(`m),用于接收不完整明文的长度;所述数据选择器Mux5具有一个输出端Mi,用于输出64‑bit的明文mi;所述明文处理模块的功能是对用户输入的明文进行处理,如果flag取值为1,表示输入的明文是完整的64‑bit,此时数据选择器Mux5将直接按照用户输入的明文进行输出;如果flag取值为0,则表示输入的明文是不完整的,需要进行填充,数据选择器Mux5将通过数据选择器Mux6选择与不完整明文长度对应的填充完成的序列输出。

6.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述状态控制单元包括一个9比特计数器,三个比较器,三个使能信号寄存器en1~en3,一个状态指示寄存器mode以及三个数据选择器Mux7~Mux9,用于指示硬件装置依次进入五个阶段:载入阶段、初始化阶段、处理关联数据阶段、加密数据及密钥流生成阶段、生成认证标签阶段;所述计数器具备复位端rst,其取值为0或1,当取值为1时为有效状态,计数器清零,否则计数器计数并输出计数值cnt。

7.根据权利要求6所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述计数器用于计算加密算法消耗的周期数,并通过比较器控制改变使能信号寄存器en1~en3和状态指示寄存器mode的值;其中,使能信号寄存器en1~en3取值为0或1,当取值为1时为有效状态,否则为无效状态;状态指示寄存器mode可取8个值,范围为0~7,不同的取值代表对输入数据进行不同的逻辑操作,而三个数据选择器Mux7~Mux9通过状态指示寄存器mode的值选择对输入的4个64‑bit数据cin0~cin3做不同逻辑操作并输出。

8.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述多路开关根据状态控制单元中状态指示寄存器mode的值,将状态控制单元的输出cout0~cout3送入某个状态更新模块的输入,当mode取值为0、1、2、4、5、6时;将状态控制单元的输出cout0~cout3送入状态更新模块1的输入;当mode取值为3时;将状态控制单元的输出cout0~cout3送入状态更新模块2的输入;当mode取值为7时;将状态控制单元的输出cout0~cout3送入状态更新模块3的输入。

9.根据权利要求1所述的一种Quartet轻量级加密算法的实现装置,其特征在于,所述数据选择器Mux1根据状态控制单元中状态指示寄存器mode的值,将某个状态更新模块的输出送入状态寄存器组;当mode取值为0、1、2、4、5、6时;将状态更新模块一的输出送入状态寄存器组;当mode取值为3时;将状态更新模块二的输出送入状态寄存器组;当mode取值为7时;将状态更新模块三的输出送入状态寄存器组。

10.一种Quartet轻量级加密算法的实现方法,采用如权利要求1‑9任一项所述的一种Quartet轻量级加密算法的实现装置,其特征在于,包括如下过程:(1)载入阶段:

算法开始前,状态控制单元将三个使能信号寄存器en1~en3全部置为低电平无效状态,状态指示寄存器mode取值为0,此时三个状态更新模块关闭,位于状态控制单元的输入端K和输入端IV多轮读入初始化密钥和初始化向量,状态寄存器state0~state3根据K和IV的部分位进行指定组合并形成初值,载入阶段结束;

(2)初始化阶段:

状态控制单元通过输入端CIN0~CIN3从状态寄存器组中获取4个64‑bit的数据cin0~cin3,同时计数器开始计数,使能信号寄存器en1的值为高电平有效,使能信号寄存器en2和en3为低电平无效,状态指示寄存器mode取值为1,则状态控制单元对输入数据进行如下操作:cout0=cin0

cout1=cin1

cout2=cin2

cout3=cin3^Cr_num

其中,Cr_num是轮常数生成模块根据状态控制单元中计数器输出的计数值cnt而产生的初始化每轮需要的轮常数;cout0~cout3为状态控制单元的输出;

多路开关根据状态指示寄存器mode的值将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3;状态更新模块一接收到有效使能信号后,通过扩散运算单元的与或非操作及循环移位,获得一次扩散运算的结果;而数据选择器Mux1根据状态指示寄存器mode的取值将状态更新模块一的输出s1_s0~s1_s3与状态寄存器state0~state3一一对应相连,进而更新一次状态寄存器组的值;

当下一次时钟到达时,使能信号寄存器en1仍然有效,使能信号寄存器en2和en3均无效,状态指示寄存器mode的值为1,状态控制单元继续通过端口CIN0~CIN3从状态寄存器组读入4个64‑bit的数据,操作同上;多路开关仍将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3,状态更新模块一重复进行扩散运算及与轮常数异或的计算,数据选择器Mux1根据状态指示寄存器mode的取值将状态更新模块一的输出s1_s0~s1_s3送入状态寄存器state0~state3,如此循环直至当计数器计数值到达24时,状态控制单元将使能信号寄存器en1置为低电平,状态指示寄存器mode的值为2,状态控制单元对读入的cin0~cin3进行如下操作:cout0=cin0^k[63:0]

cout1=cin1^k[127:64]

cout2=cin2

cout3=cin3

其中,k为载入阶段多轮读入的初始化密钥Key;

根据状态指示寄存器mode的取值,多路开关仍将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3;由于状态控制单元一已被关闭,所以最终计算结果不会进行扩散运算而是被直接输出;数据选择器Mux1根据状态指示寄存器mode的取值将状态更新模块一的输出s1_s0~s1_s3送入状态寄存器state0~state3中,至此初始化阶段结束;

(3)处理关联数据阶段:

状态控制单元通过端口CIN0~CIN3从状态寄存器组中获取4个64‑bit的数据cin0~cin3,通过位于状态控制单元的端口Adi读入用户输入的8‑bit关联数据adi,并将使能信号寄存器en2置为高电平有效,使能信号寄存器en1和en3置为低电平无效,状态指示寄存器mode取值置为3,则状态控制单元对输入数据进行如下操作:cout0=cin0

cout1=cin1^adi

cout2=cin2

cout3=cin3

多路开关根据状态指示寄存器mode的值,将状态控制单元的输出cout0~cout3连接到状态更新模块二的输入s2_x0~s2_x3;状态更新模块二接收到有效使能信号后通过扩散运算单元的与或非操作及循环移位,获得一次扩散运算的结果;而数据选择器Mux1根据状态指示寄存器mode的取值,将状态更新模块二的输出s2_s0~s2_s3与状态寄存器state0~state3一一对应相连,进而更新一次状态寄存器组的值;如此循环直至当关联数据全部处理完成后,此时计数器计数值到达指定数,状态控制单元将使能信号寄存器en2置为低电平,使能信号寄存器en1置为高电平,此时状态指示寄存器mode的值变为4,状态控制单元通过端口CIN0~CIN3从状态寄存器组中获取4个64‑bit的数据cin0~cin3,并根据状态指示寄存器mode的取值做如下操作:cout0=cin0

cout1=cin1

cout2=cin2

cout3=cin3

多路开关将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3,由于状态更新模块二已被关闭,而状态更新模块一接收到了有效使能信号,因此状态更新模块一开始进行扩散运算,数据选择器Mux1根据状态指示寄存器mode的取值将状态更新模块一的输出s1_s0~s1_s3送入状态寄存器state0~state3中,如此循环12个时钟周期;

12轮状态更新结束后,状态控制单元将使能信号寄存器en1~en3全部置为低电平无效,状态指示寄存器mode取值为5,此时对获取的4个64‑bit的数据cin0~cin3做如下操作:cout0=cin0

cout1=cin1

cout2=cin2

cout3=cin3^1′b1

其中,1’b1代表1位二进制数1;多路开关仍将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3;由于状态更新模块一已被关闭,因此最终计算结果不会进行扩散运算而是被数据选择器Mux1直接送入状态寄存器state0~state3中,至此,处理关联数据阶段结束;

(4)加密数据及密钥流生成阶段:

关联数据处理结束后,明文处理模块接收到外部用户输入的高电平flag信号,状态控制单元通过端口Mi读入完整的64‑bit明文,并将使能信号寄存器en2、en3均置为低电平无效,使能信号寄存器en1置为高电平有效,状态指示寄存器mode取值为6;状态控制单元通过端口CIN0~CIN3从状态寄存器组中获取4个64‑bit的数据cin0~cin3,并根据状态指示寄存器mode的取值做如下操作:cout0=cin0^mi

cout1=cin1

cout2=cin2

cout3=cin3

多路开关根据mode的取值将状态控制单元的输出cout0~cout3连接到状态更新模块一的输入s1_x0~s1_x3;状态更新模块一接收到有效使能信号后,进行一次扩散运算;而数据选择器Mux1根据mode的取值,将状态更新模块一的输出s2_s0~s2_s3与状态寄存器state0~state3一一对应相连,进而更新一次状态寄存器组的值,此时密钥流生成模块开始工作,从状态寄存器组中取值,并根据其内部逻辑生成密钥流;如此循环直至完整明文全部处理完成,此时计数器计数值到达指定数,flag输入即将变为0;此后,flag输入变为低电平,明文处理模块对不完整明文进行处理,根据不完整明文的长度length(`m),明文处理模块选择对应填充好的64‑bit明文输出,由于使能信号寄存器en1仍为高电平,使能信号寄存器en2、en3为低电平,状态指示寄存器mode的值仍为6,因此状态控制单元对读入数据cin0~cin3的操作以及状态更新模块以的工作过程与对完整明文处理时的完全相同;

当明文全部处理完毕后,状态控制单元将使能信号寄存器en1、en2置为低电平无效,使能信号寄存器en3置为高电平有效,状态指示寄存器mode取值为7,状态控制单元通过端口CIN0~CIN3从状态寄存器组中获取4个64‑bit的数据cin0~cin3,并根据mode的取值做如下操作:cout0=cin0

cout1=cin1

cout2=cin2

cout3=cin3

多路开关根据状态指示寄存器mode的取值将状态控制单元的输出cout0~cout3连接到状态更新模块三的输入s3_x0~s3_x3,状态更新模块一和状态更新模块二关闭,状态更新模块三接收到有效使能信号后进行一次扩散运算,数据选择器Mux1根据状态指示寄存器mode的取值,将状态更新模块三的输出s3_s0~s3_s3与状态寄存器state0~state3一一对应相连,进而更新一次状态寄存器组的值,密钥流生成模块继续从状态寄存器组中取值,并根据其内部逻辑生成密钥流,如此循环共需24轮;

(5)生成认证标签阶段:

当进行至第23轮时,数据选择器Mux2将状态控制单元输出的初始化密钥K[63:0]选择输出,与生成的密钥流逐位异或,生成认证标签Tag的低64位;第24轮时,数据选择器Mux2将状态控制单元输出的初始化密钥K[127:64]选择输出,与生成的密钥流逐位异或,生成认证标签Tag的高64位,至此认证标签生成结束。