1.一种Espresso流密码的硬件实现装置,其特征在于,包括控制单元、伽罗瓦型非线性反馈移位寄存器和一个20比特输入的密钥输出函数(h(x));
所述的控制单元包括计数器和状态机,用于协调Espresso算法加载初始状态、初始化内部状态和生成密钥流;所述的控制单元控制加密算法依次经过初始状态载入阶段、初始化阶段和密钥流输出阶段;
所述的计数器共9比特,计数范围为0‑511;在复位后清零,此后每个时钟周期加1,计数器用于为状态机提供输入信号;
所述的状态机共4种状态:IDLE、LOAD、INIT和WORK,用于阶段指示;
当装置复位后,状态机进入IDLE状态,随后在下一个时钟周期进入LOAD状态;当状态机指示LOAD状态且计数器为255,在下一个时钟周期进入INIT状态;当状态机指示INIT状态且计数器为511,在下一个时钟周期进入WORK状态,同时9比特的计数器自然溢出;状态机随后保持WORK状态,直到复位信号到来;因此LOAD状态对应初始状态载入阶段,INIT状态对应初始化阶段,WORK状态对应密钥流输出阶段;
所述的伽罗瓦型非线性反馈移位寄存器包括256比特存储结构和14个非线性反馈函数,
所述的256比特储存结构记作xi,i=0,1,…,255,共256位;用于存储256位内部状态,所述的非线性反馈函数记作gi(x),表示用于更新xi,14个非线性反馈函数分别为g255(x),g251(x),g247(x),g243(x),g239(x),g235(x),g231(x),g217(x),g213(x),g209(x),g205(x),g201(x),g197(x),g193(x);当状态机指示INIT状态时,装置处于初始化阶段,函数g217(x)和g255(x)需要分别异或h(x);
所述14个非线性反馈函数用于更新256比特储存结构的内部状态,更新过程与时钟同步,当时钟上升沿来临时,14个非线性反馈函数同时将当前结果更新在14位256比特储存结构的内部状态中;
14个非线性反馈函数分别为:
所述的20比特输入的密钥输出函数h(x)由组合逻辑电路实现,在FPGA内该组合逻辑电路由查找表资源实现,其用于提取非线性反馈移位寄存器中20个特定位,经过与、或运算,生成密钥流;
所述的h(x)由一个6比特输入线性函数和一个14输入非线性函数构成,实现为:
2.一种Espresso流密码斐波那契型变体Espresso‑F的硬件实现装置,其特征在于,包括控制单元、斐波那契型非线性反馈移位寄存器和一个20比特输入的密钥输出函数(h(x));
所述的斐波那契型非线性反馈移位寄存器包括256比特存储结构和2个非线性反馈函数f255(x)和f217(x);
所述的斐波那契型非线性反馈移位寄存器中的256比特储存结构与权利要求1中Espresso流密码的硬件实现装置中GaloisNFSR的256比特储存结构相同;
所述2个非线性反馈函数用于更新256比特储存结构的内部状态,更新过程与时钟同步,当时钟上升沿来临时,2个非线性反馈函数同时将当前结果更新在2位256比特储存结构的内部状态中;
所述的2个非线性反馈函数分别实现为:所述的控制单元、20比特输入的密钥输出函数h(x)与权利要求1中Espresso流密码的硬件实现装置相同。
3.一种Espresso流密码线性反馈移位寄存器变体Espresso‑L的硬件实现装置,其特征在于,包括控制单元、斐波那契型线性反馈移位寄存器和一个104比特输入的密钥输出函数hl(x);
所述的控制单元与Espresso流密码的硬件实现装置相同;
所述的斐波那契型线性反馈移位寄存器包括256比特存储结构和1个线性反馈函数fl255(x);
所述的斐波那契型线性反馈移位寄存器中的256比特储存结构与Espresso流密码的硬件实现装置中GaloisNFSR的256比特储存结构相同;
所述1个线性反馈函数用于更新256比特储存结构的内部状态,更新过程与时钟同步,当时钟上升沿来临时,1个非线性反馈函数同时将当前结果更新在1位256比特储存结构的内部状态中;
所述的线性反馈函数fl255(x)实现为:所述的104比特输入的密钥输出函数hl(x)由组合逻辑电路实现,在FPGA内该组合逻辑电路由查找表资源实现,其用于提取非线性反馈移位寄存器中104个特定位,经过与、或运算,生成密钥流;104比特输入的密钥输出函数实现为:其中, 表示xk的补充项,分别为:
4.一种利用权利要求1‑3任意一项权利要求所述Espresso流密码及其变体的硬件实现装置的面积优化方法,能够尽可能地降低硬件资源占用;
在FPGA中占用面积通过占用基本单元Slices的数量估算,Slices内包括查找表和触发器,其功能是实现连续的移位寄存器,定义连续片段为非线性或线性反馈移位寄存器中连续的、不需要提取内部状态的片段,记作连续片段P(i,j),除去连续片段最低位xi和最高位xj外,其余位xk,i
定义连续片段P(i,j)可替代长度为j‑i,可用1个LUT替换实现连续片段,从而最多节省j‑i个FF;
所述的面积优化方法具体步骤如下:根据该变体的密码学描述,求出该变体所有的连续片段,按照连续片段的长度由大到小排序;
依次用若干个LUT替换长度从大到小的连续片段。
5.一种利用权利要求1‑3任意一项权利要求所述Espresso流密码及其变体的硬件实现装置的吞吐率优化方法,硬件实现装置能够实现单周期内生成多比特密钥流,从而提升吞吐率;
其关键参数为并行宽度w,即当并行宽度为w时,每个时钟周期输出w比特的密钥流;
在吞吐率优化方法下,Espresso流密码的硬件实现装置与Espresso流密码斐波那契型变体Espresso‑F的硬件实现需要复制密钥输出函数w次,即分别在w个函数的自变量索引上
0 1 w‑1
加j,j=0,1,…,w‑1构成h(x),h(x),…,h (x);
吞吐率优化方法下,w个密钥输出函数分别为:Espresso流密码线性反馈移位寄存器变体Espresso‑L的硬件实现装置,按照上述复制方法,需要复制密钥输出函数w次,即分别在w个函数的自变量索引上加j,j=0,1,…,w‑1构
0 1 w‑1
成hl(x),hl(x),…,hl (x);
在吞吐率优化方法下,按照上述复制方法,需要复制w次非线性反馈函数,记为w组非线性反馈函数;因此对于Espresso流密码的硬件实现装置,需要复制w次14个非线性反馈函数,即共计w*14个反馈函数,
其中j=0,1,…,w‑1
Espresso流密码斐波那契型变体Espresso‑F的硬件实现装置需要复制w次2个非线性反馈函数,即共计w*2个反馈函数, 其中j=0,1,…,w‑1Espresso流密码线性反馈移位寄存器变体Espresso‑L的硬件实现装置需要复制w次1个线性反馈函数,即共计w*1个反馈函数, 其中j=0,1,…,w‑1。