掌桥专利:专业的专利平台
掌桥专利
首页

基于非易失性存储器的轻量级流密码算法实现方法

文献发布时间:2024-04-18 19:52:40


基于非易失性存储器的轻量级流密码算法实现方法

技术领域

本发明涉及信息安全领域,具体是基于非易失性存储器的轻量级流密码算法实现方法。

背景技术

流密码是对称密码系统的一个重要分支,其实现简单,加解密速度快,便于软硬件实施。流密码应用广泛,经典的流密码算法包括eSTREAM中的Grain v1、MICKEY 2.0和Trivium等,这些算法一般采用比特级操作,适用资源受限环境。

流密码的一个结构特点是必然有内部状态,这使其容易受到时间-存储-数据权衡(TimeMemory Data Tradeoff,TMDTO)攻击。为抵抗这种攻击,通常要求流密码的内部状态的长度至少是密钥长度的两倍,例如Grain、Grain-128a系列算法的内部状态是密钥长度的两倍,而Trivium算法的内部状态大于密钥长度的两倍。这种情况导致流密码在硬件实现时所占用的硬件资源代价过大,例如Trivium算法的硬件面积是2580门,不适用于资源受限、低功耗、物联网等新的应用场景。

为了既能抵抗TMDTO,又能减小内部状态的长度,研究人员最近几年提出“小状态”轻量级流密码。所谓小状态是指既能够抵抗TMDTO攻击且内部状态的长度小于密钥长度两倍。相应的轻量级流密码算法包括Sprout、Fruit、Lizard和Plantlet等,这些算法整体结构高度相似,都基于Grain算法的驱动结构采用线性或者非线性反馈移位寄存器(Linear/Nonlinear Feedback Shift Register,LFSR/NFSR)的串联结构。目前,轻量级流密码形成了三种通用结构:(1)Lizard;(2)CKEY(Continuous Key)构造;(3)CIV(Continuous IV)构造。

传统流密码多使用反馈移位寄存器,即易失性的寄存器;除了易失性寄存器之外,越来越多的算法开始使用非易失性存储器,使用存储在非易失性存储器中的值不仅可以减少内部寄存器大小,使算法硬件面积减小,还能提供更高的安全级别。流密码Fruit、Plantlet和Sprout在其状态更新期间连续使用存储在非易失性存储器中的密钥,附加的密钥位将增强与易失性内部状态位相关的生日界限之外的安全性。然而,这种CKEY构造被证明对通用TMDTO攻击的抵抗能力最多为内部状态大小的一半。与CKEY相反,CIV不使用初始密钥,而是使用初始值作为非易失性部分,尽管该构造方法被提出,但是到目前为止还没有基于CIV结构的流密码算法。

发明内容

本发明的目的是提供一种安全强度高,能够有效抵抗TMDTO攻击且硬件开销小,适合资源受限环境的基于非易失性存储器的轻量级流密码算法实现方法,该方法结合CKEY和CIV思想,基于2个NFSR,以及1个非易失性存储器,构造一个轻量级流密码算法,以非易失性存储器存储密钥和初始向量,并通过选择函数使其分别参与到初始化和密钥流的生成过程中,在降低硬件开销的同时,有效抵抗TMDTO攻击,提高算法安全性。

实现本发明目的的技术方案是:

基于非易失性存储器的轻量级流密码算法实现方法,主要包括如下步骤:

(1)构造轻量级流密码算法

选择2个NFSR部件,分别是NFSR1和NFSR2,设计1个非易失性存储器,构造轻量级流密码算法;

构造方法是:将NFSR1和NFSR2串联,并选取2个NFSR的内部状态比特作为非线性的输出函数的输入,使2个NFSR寄存器的状态进一步的混淆,进一步提供算法的非线性;为保证NFSR的轻量化,并抵抗TMDTO攻击,使用1个非易失性的存储器,存储初始向量与密钥前缀,使用选择函数对参与的非易失性状态比特进行选择,分别用于算法的初始化和密钥流生成过程;

在算法初始化过程中,输出函数的输出参与内部状态的更新;

密钥流生成阶段,输出函数的输出为密钥比特且不参与更新;

NFSR1的选择,本发明选用eSTREAM第2阶段(硬件组合)候选算法中ACHTERBAHN-128/80的32比特的NFSR A

NFSR2的选择,本发明使用的100比特的NFSR2,来自对Grain-128AEAD算法中的128位NFSR的修改,通过修改抽头构造出100位寄存器的更新函数;为提高NFSR2的非线性度,增加了NFSR2更新函数的非线性项;最终,NFSR2的更新函数由线性项和非线性项组成,每个抽头仅出现一次,非线性度为549656723456,且弹性为4,代数次数为4;

非易失性存储器为132位,其状态由100位初始向量和128位初始密钥的前32位组成;非易失性存储器具有断电不丢失,读取速度快等优点,且相对同样长度的寄存器其开销更小;在这132比特的存储器中,初始向量占高位的100比特,初始密钥占低位的32比特,且存储在非易失性存储器中的值在整个过程中保持不变;设置一个选择函数,每次选择1个非易失性状态比特参与内部状态更新,使得初始向量和密钥混淆扩散的更加充分;

(2)算法结构输出函数设计

算法结构的输出函数为非线性函数,由一个线性函数、一个二次函数和两个三角函数组成,通过将多位内部状态比特作为输入,充分混合寄存器的状态,以进一步增强密码的非线性性质、良好的相关性以及统计特性;

(3)算法初始化

初始化阶段,将密钥加载到2个NFSR中,根据选择函数选择非易失性存储器中的比特位参与迭代,1比特输出位参与2个NFSR状态位的更新,在384轮迭代后再次将初始密钥异或进2个NFSR状态,并再次进行132轮迭代,以使状态比特更好地扩散和混淆,此时输出位不再参与状态的更新;

(4)生成密钥流

算法初始化后,算法的输出为密钥比特,每一轮迭代生成1比特的密钥,多次迭代的输出比特组成密钥流;

(5)算法加解密

数据加密时,根据明文的大小,产生密钥流,并逐比特和明文比特异或产生密文;解密时,将密钥流逐比特与密文异或恢复明文。

本发明的有益效果是:

(1)本发明方法采用两个密钥过滤器,且输出函数有较好的代数次数,且函数平衡,可较好的抵抗代数攻击,能够有效抵抗平凡的统计攻击、强攻击、一般猜测攻击等。

(2)本发明方法内部状态小,使用初始值和密钥前缀作为其非易失性状态,面积小,功耗低,适用于资源受限环境。

(3)本发明的算法简洁,各个部件独立,软硬件实现容易。

附图说明

图1为本发明方法中密钥初始化结构图;

图2为本发明方法中密钥生成结构图。

具体实施方式

下面结合实施例和附图对本发明内容作进一步的详细说明,但不是对本发明的限定。

实施例

基于非易失性存储器的轻量级流密码算法实现方法,主要包括如下步骤:

(1)构造轻量级流密码算法

选择2个NFSR部件,分别是NFSR1和NFSR2,设计1个非易失性存储器,构造轻量级流密码算法;

构造方法是:将NFSR1和NFSR2串联,并选取2个NFSR的内部状态比特作为非线性的输出函数的输入,使2个NFSR寄存器的状态进一步的混淆,进一步提供算法的非线性;为保证NFSR的轻量化,并抵抗TMDTO攻击,使用1个非易失性的存储器,存储初始向量与密钥前缀,使用选择函数对参与的非易失性状态比特进行选择,分别用于算法的初始化和密钥流生成过程;

在算法初始化过程中,输出函数的输出参与内部状态的更新;

密钥流生成阶段,输出函数的输出为密钥比特且不参与更新;

选用eSTREAM第2阶段(硬件组合)候选算法中ACHTERBAHN-128/80的32比特的NFSRA

选用100比特的NFSR2,来自对Grain-128AEAD算法中的128位NFSR的修改,通过修改抽头构造出100位寄存器的更新函数;NFSR2的更新函数由线性项和非线性项组成,每个抽头仅出现一次,非线性度为549656723456,且弹性为4,代数次数为4;

非易失性存储器为132位,其状态由100位初始向量和128位初始密钥的前32位组成;在这132比特的存储器中,初始向量占高位的100比特,初始密钥占低位的32比特,且存储在非易失性存储器中的值在整个过程中保持不变;设置一个选择函数,每次选择1个非易失性状态比特参与内部状态更新,使得初始向量和密钥混淆扩散的更加充分;

(2)算法结构输出函数设计

算法结构的输出函数为非线性函数,由一个线性函数、一个二次函数和两个三角函数组成,通过将多位内部状态比特作为输入,充分混合寄存器的状态,以进一步增强密码的非线性性质、良好的相关性以及统计特性;

(3)算法初始化

初始化阶段,将密钥加载到2个NFSR中,根据选择函数选择非易失性存储器中的比特位参与迭代,1比特输出位参与2个NFSR状态位的更新,在384轮迭代后再次将初始密钥异或进2个NFSR状态,并再次进行132轮迭代,以使状态比特更好地扩散和混淆,此时输出位不再参与状态的更新;

(4)生成密钥流

算法初始化后,算法的输出为密钥比特,每一轮迭代生成1比特的密钥,多次迭代的输出比特组成密钥流;

(5)算法加解密

数据加密时,根据明文的大小,产生密钥流,并逐比特和明文比特异或产生密文;解密时,将密钥流逐比特与密文异或恢复明文。

进一步地,步骤(1)所述构造轻量级流密码算法,具体方法是:

设置一个128比特的初始密钥,以及100比特的初始向量;将128比特的初始密钥加载到2个NFSR部件,初始密钥低位加载到NFSR2,高位加载到NFSR1,NFSR1最后4比特用1110填充;将100比特初始向量和初始密钥低位的32比特加载到132位的非易失性存储器,其中存储器低位为初始密钥低位的32比特,高位为100比特初始向量;在初始化过程中,输出函数输出的比特,参与到2个NFSR的状态更新,2个NFSR的比特分别控制选择非易失性部件中的比特,并参与进状态更新;经过384次迭代后,将初始密钥再次分别异或进2个NFSR的内部状态,并再次迭代132轮,期间输出比特不再参与2个NFSR的状态更新,此后开始密钥流的生成;密钥流生成过程中,每次迭代,算法输出1比特的密钥。

进一步地,步骤(1)所述构造轻量级流密码算法中NFSR1的选择,具体方法是:

32比特的NFSR1以

其中,为方便在初始化阶段和密钥流生成阶段中表示状态更新结果,以

进一步地,步骤(1)所述构造轻量级流密码算法中NFSR2的选择,具体方法是:

100比特NFSR2的状态以

其中,一次项为线性项,二次及以上的项为非线性项;

进一步地,步骤(1)所述构造轻量级流密码算法中非易失性存储器设计,具体方法是:

非易失性存储器128比特初始密钥以K=k

针对此132位非易失性内部状态,在时钟周期t中,密钥-初始向量选择位d

其中cn为非易失性存储器中初始密钥的索引下标,

进一步地,步骤(2)所述算法结构输出函数设计,为了补偿内部状态小所造成的安全性的缺陷,本发明的输出函数具有更多的输入比特和更大的代数次数,将2个NFSR的状态进一步混淆,其输入比特尽量选择与2个NFSR的更新函数的比特不同的抽头,具体方法如下:

输出函数由具有7个单项的线性函数

/>

其中

设置输出函数为z(t),

进一步地,参照图1,步骤(3)所述算法初始化,具体方法如下:

(3.1)读取128比特初始密钥K=k

(3.2)128比特的初始密钥加载到2个NFSR中,低位加载到NFSR2,高位加载到NFSR1,NFSR1最后4比特用1110填充;

其中,

(3.3)设置迭代变量t=0;

(3.4)将输出函数的输出比特与2个NFSR更新函数的输出进行异或,以此参与反馈移位寄存器的更新,具体步骤如下:

(3.4.1)取输出函数中的

(3.4.2)取输出函数中的

(3.4.3)取输出函数中的

计算得到/>

(3.4.4)取输出函数中的

(3.4.5)将步骤(3.4.1)到(3.4.4)得到的值异或,得到输出z

(3.4.6)将NFSR1的更新函数的值与(6.4.5)得到的输出比特z

(3.4.7)若t<256,非易失性状态的密钥-初始向量选择位d

(3.4.8)取NFSR1的第一个比特

(3.4.9)若t≠384,t=t+1,转(3.4.1);若t=384,结束迭代;

(3.5)128位密钥以逐比特方式与内部状态异或,最后4位赋值为1,即:

(3.6)进行132轮的迭代,以获得NFSR1右侧位置的必要扩散,具体步骤如下:

(3.6.1)更新NFSR1,其中,

(3.6.2)取NFSR1最后5比特

(3.6.3)取NFSR1的第一个比特

(3.6.4)若t≠516,t=t+1,转(3.6.1);若t=516,转步骤(3.6.5);

(3.6.5)结束迭代,完成初始化。

进一步地,参照图2,步骤(4)所述生成密钥流,具体方法如下:

(4.1)假设明文为m,长度为p;

(4.2)t=516;

(4.3)更新NFSR1,其中,

(4.4)取NFSR1最后5比特

(4.5)取NFSR1的第一个比特

(4.6)取输出函数中的

(4.7)取输出函数中的

(4.8)取输出函数中的

计算得到/>

(4.9)取输出函数中的

(4.10)将步骤(4.6)到(4.9)得到的值异或,得到输出比特z

(4.11)t=t+1,p=p-1,若p≠0,转步骤(4.3);若p=0,转步骤(4.12);

(4.12)结束迭代,完成密钥流的生成。

进一步地,步骤(5)所述算法加解密,具体方法如下:

(5.1)针对算法的加密实现,具体过程如下;

(5.1.1)输入明文m;

(5.1.2)将明文m与密钥流z逐比特进行异或,z为一段时间内生成的密钥比特组成的密钥流,得到密文c,即密文中的每个比特操作为

(5.2)针对算法的解密实现,具体过程如下;

(5.2.1)输入密文c;

(5.2.2)将密文c与密钥流z逐比特进行异或,得到明文m,即密文中的每个比特操作为

本发明方法,采用FP(1)模式,初始向量与密钥一样都在初始化过程和密钥流产生过程参与运算,这样初始向量和密钥会混淆和扩散得更加充分,使得从初始状态求逆恢复密钥困难,达到对于TMDTO攻击的可证明安全性的同时,内部状态小于密钥的两倍。

相关技术
  • 基于并行循环移位寄存器的轻量级流密码生成方法
  • 基于并行循环移位寄存器的轻量级流密码生成方法
技术分类

06120116332709