本发明属于密码学技术领域,特别涉及一种序列密码实现装置及其序列密码实现方法。
背景技术:
序列密码常用于保密通信中的数据加密,加解密方式简单,序列密码算法产生伪随机序列,与明文序列逐比特异或相加生成密文,解密者用同样的算法产生伪随机序列与密文逐比特异或相加解密得到明文。随着网络和通信技术的发展,特别是未来移动通信5G网络,对加密算法的要求越来越多样化。5G通信网络具有超高带宽、低延时、海量设备灵活接入、应用场景丰富、设备性能多样等特点,因此数据加密需要具有高速率、低功耗、能够适应多种应用环境的密码算法。在目前4G移动通信网络中,数据加密的国际标准有AES、Snow3G和ZUC等,其中AES是分组密码,Snow3G和ZUC都是序列密码。我国使用的密码是自主设计的祖冲之(ZUC)序列密码算法,它的密钥长度为128比特,采用了域上线性递归序列经过非线性过滤的结构。为了抵抗现有的密码攻击技术,保证算法相应的安全强度,祖冲之密码采用了较复杂的非线性过滤装置,它的硬件开销比较高,超过了10000门电路。面对未来5G移动通信网络的特点,祖冲之密码似乎不再十分适合,特别是在一些资源受限、轻量级的应用环境和设备上,其对功耗和通信速度限制很大。使用少量硬件开销实现的密码算法被称为轻量级密码,通常应用于快速通信、轻便式的设备和环境中。当前的许多轻量级密码算法更倾向于注重硬件开销的减少,而对安全强度的要求不是很高,如何利用少量的硬件开销来达到一定的安全强度是密码算法设计的一个核心问题。设计一个具有环境适应性的密码算法,能够根据用户的速度需求和设备资源的限制,灵活选择合适的实现方式,保证多样化的网络和设备的通信,是5G通信网络中数据加密的一个迫切需求。
技术实现要素:
为克服现有技术中的不足,本发明提供一种序列密码实现装置及其序列密码实现方法,利用较少硬件开销实现较好的安全强度,根据硬件资源和速度要求灵活部署实施,满足多样化的网络和设备的通信的需求。
按照本发明所提供的设计方案,一种列密码实现装置,包含:序列源驱动模块、混淆扩散模块、密钥流序列输出模块;
所述序列源驱动模块,通过Galois结构的非线性反馈移位寄存器生成序列源,其中,非线性反馈移位寄存器包含k个移位寄存器,每运行一拍,k个移位寄存器的反馈端同时更新,每个反馈端与混淆扩散模块连接,k为大于1的整数;
所述混淆扩散模块,包含混淆单元、扩散单元,混淆单元包含S-变换,其中,S-变换为k比特输入k比特输出的非线性布尔函数,通过S-盒和P置换进行双层结构组合混淆;扩散单元包含k个线性函数;混淆单元、扩散单元的输入均来自非线性反馈移位寄存器不同位置的抽头输出,混淆单元的输出与扩散单元的输出进行异或运算后反馈至移位寄存器反馈端;
所述密钥流序列输出模块,将扩散单元的输出经过非线性运算后,形成密钥流序列,与序列源进行异或运算,形成密文。
上述的,k为大于等于8的整数。
上述的,k为8,S-盒为4个不同的4比特输入4比特输出的非线性布尔函数。
上述的,非线性反馈移位寄存器各抽头之间的间距、及各抽头与对应反馈端的间距均不相同。
一种序列密码实现方法,基于上述的序列密码实现装置,其具体包含如下步骤:
步骤1、采用Galois结构的非线性反馈移位寄存器生成序列源,其中,非线性反馈移位寄存器总长度为n级,n级非线性反馈移位寄存器分成k个移位寄存器,形成k个反馈端,k个移位寄存器的长度分别为{i1,i2,...,ik-1,ik},且i1+i2+...+ik-1+ik=n,根据所述反馈端个数k,确定反馈端位置集合:{j1,j2,...,jk-1,jk},其中,jk=n-1,0≤j1<j2<…<jk-1≤n-2,2≤k≤n;
步骤2、初始化,移位寄存器装载密钥Key、初始化向量IV和常数参数,并进行m拍空转,m通过实验确定;
步骤3、混淆单元、扩散单元的输入来自非线性反馈移位寄存器不同位置的抽头输出,混淆单元的输出与扩散单元的输出进行异或运算后反馈至移位寄存器反馈端,混淆扩散,移位寄存器每运行一拍,k个反馈端同时更新,每个反馈端的反馈信号均来自混淆单元与扩散单元两者输出的异或运算,每拍输出1比特;
步骤4、将扩散单元的输出经过非线性运算后,形成密钥流序列,将密钥流序列与序列源异或运算,得到密文。
上述的,步骤2中,当密钥Key长度为128比特,将其重复扩展至长度为256比特,再进行密钥Key装载。
优选的,非线性反馈移位寄存器总长度设定为625级,分成8个移位寄存器,8个移位寄存器对应的级数分别设定为:68、73、79、93和89、87、71、65,移位寄存器分别表示为:A1,A2,A3,A4和B1,B2,B3,B4,步骤2中,256比特密钥Key记为:k0,k1,…,k255,128比特初始化向量IV记为:iv0,iv1,...,iv127,8个移位寄存器装载密钥Key、初始化向量IV的方案如下:
A4:52比特Key
A3:52比特Key
A2:52比特Key
A1:52比特Key
B1:48比特Key
B2:56比特IV
B3:40比特IV
B4:32比特IV;当密钥Key长度为128比特时,空转m1拍,当密钥Key长度为256比特时,空转m2拍,m1<m2。
上述的,非线性反馈移位寄存器各抽头之间的间距及各抽头与对应反馈端的间距均不相同。
本发明的有益效果:
1、本发明采用基于混淆和扩散部件设计的Galois结构非线性反馈移位寄存器作为序列源驱动,寄存器装载完密钥、初始化向量和常数参数后,空转一定拍数,扩散单元的输出经过非线性运算后输出作为密钥流序列,并与明文序列异或加形成密文,使用较少的运算和硬件开销,通过混淆单元和扩散单元的复合运用,多次迭代之后,输出伪随机序列;支持1-32拍的并行实现,用户可以根据速度需求和应用资源要求选择合适的并行实现拍数;针对128比特和256比特长度的密钥,分别设定空转拍数为m1拍和m2拍,保证该序列密码装置能够抵抗差分攻击和线性攻击,部署灵活,环境适用性强。
2、本发明使用“非线性反馈移位寄存器+简单的输出”的整体结构,序列的源头就是非线性的,输出是序列源的二次函数;基于比特,面向硬件实现,可以1-32拍并行,每拍可输出1-32比特,根据用户的实现方式灵活选择;每拍的迭代都是非线性的,通过两个简单的部件:混淆模块和扩散单元,进行多次迭代,实现算法的安全强度,消耗的硬件代价较少,通过非线性高次迭代来确保安全度;利用较少硬件开销实现较好的安全强度,根据硬件资源和速度要求灵活部署实施,满足多样化的网络和设备的通信的需求。
附图说明:
图1为本发明的装置结构示意图;
图2为本发明的方法流程示意图;
图3为本发明的实现结构图;
图4为本发明的S-变换结构示意图。
具体实施方式:
下面结合附图和技术方案对本发明作进一步详细的说明,并通过优选的实施例详细说明本发明的实施方式,但本发明的实施方式并不限于此。
实施例一,参见图1所示,一种列密码实现装置,包含:序列源驱动模块、混淆扩散模块、密钥流序列输出模块;
所述序列源驱动模块,通过Galois结构的非线性反馈移位寄存器生成序列源,其中,非线性反馈移位寄存器包含k个移位寄存器,每运行一拍,k个移位寄存器的反馈端同时更新,每个反馈端与混淆扩散模块连接,k为大于1的整数;
所述混淆扩散模块,包含混淆单元、扩散单元,混淆单元包含S-变换,其中,S-变换为k比特输入k比特输出的非线性布尔函数,通过S-盒和P置换进行双层结构组合混淆;扩散单元包含k个线性函数;混淆单元、扩散单元的输入均来自非线性反馈移位寄存器不同位置的抽头输出,混淆单元的输出与扩散单元的输出进行异或运算后反馈至移位寄存器反馈端;
所述密钥流序列输出模块,将扩散单元的输出经过非线性运算后,形成密钥流序列,与序列源进行异或运算,形成密文。
本发明采用基于混淆和扩散部件设计的Galois结构非线性反馈移位寄存器作为序列源驱动,寄存器装载完密钥、初始化向量和常数参数后,空转一定拍数,扩散单元的输出经过非线性运算后输出作为密钥流序列,并与明文序列异或加形成密文,使用较少的运算和硬件开销,通过混淆单元和扩散单元的复合运用,多次迭代之后,输出伪随机序列;支持1-32拍的并行实现,用户可以根据速度需求和应用资源要求选择合适的并行实现拍数;实施部署灵活,环境适应性强。
实施例二,与实施例一基本相同,不同之处在于:k为大于等于8的整数。
根据实际使用需求,设定k为8,S-盒为4个不同的4比特输入4比特输出的非线性布尔函数。非线性反馈移位寄存器各抽头之间的间距、及各抽头与对应反馈端的间距均不相同。
实施例三,参见图1~4所示,一种序列密码实现方法,基于实施例一所述的序列密码实现装置,其具体包含如下步骤:
步骤1、采用Galois结构的非线性反馈移位寄存器生成序列源,其中,非线性反馈移位寄存器总长度为n级,n级非线性反馈移位寄存器分成k个移位寄存器,形成k个反馈端,k个移位寄存器的长度分别为{i1,i2,...,ik-1,ik},且i1+i2+...+ik-1+ik=n,根据所述反馈端个数k,确定反馈端位置集合:{j1,j2,...,jk-1,jk},其中,jk=n-1,0≤j1<j2<…<jk-1≤n-2,2≤k≤n;
步骤2、初始化,移位寄存器装载密钥Key、初始化向量IV和常数参数,并进行m拍空转,m通过实验确定;
步骤3、混淆单元、扩散单元的输入来自非线性反馈移位寄存器不同位置的抽头输出,混淆单元的输出与扩散单元的输出进行异或运算后反馈至移位寄存器反馈端,混淆扩散,移位寄存器每运行一拍,k个反馈端同时更新,每个反馈端的反馈信号均来自混淆单元与扩散单元两者输出的异或运算,每拍输出1比特;
步骤4、将扩散单元的输出经过非线性运算后,形成密钥流序列,将密钥流序列与序列源异或运算,得到密文。
实施例四,参见图1~4所示,一种序列密码实现方法,基于实施例一所述的序列密码实现装置,其具体包含如下内容:
采用Galois结构的非线性反馈移位寄存器生成序列源,其中,非线性反馈移位寄存器总长度为n级,n级非线性反馈移位寄存器分成k个移位寄存器,形成k个反馈端,k个移位寄存器的长度分别为{i1,i2,...,ik-1,ik},且i1+i2+...+ik-1+ik=n,根据所述反馈端个数k,确定反馈端位置集合:{j1,j2,...,jk-1,jk},其中,jk=n-1,0≤j1<j2<…<jk-1≤n-2,2≤k≤n。
初始化,移位寄存器装载密钥Key、初始化向量IV和常数参数,并进行m拍空转,m通过实验确定;当密钥Key长度为128比特,将其重复扩展至长度为256比特,再进行密钥Key装载,非线性反馈移位寄存器总长度设定为625级,分成8个移位寄存器,8个移位寄存器对应的级数分别设定为:68、73、79、93和89、87、71、65,移位寄存器分别表示为:A1,A2,A3,A4和B1,B2,B3,B4,步骤2中,256比特密钥Key记为:k0,k1,...,k255,128比特初始化向量IV记为:iv0,iv1,...,iv127,8个移位寄存器装载密钥Key、初始化向量IV的方案如下:
A4:52比特Key
A3:52比特Key
A2:52比特Key
A1:52比特Key
B1:48比特Key
B2:56比特IV
B3:40比特IV
B4:32比特IV;当密钥Key长度为128比特时,空转960拍,当密钥Key长度为256比特时,空转1600拍。
混淆单元、扩散单元的输入来自非线性反馈移位寄存器不同位置的抽头输出,非线性反馈移位寄存器各抽头之间的间距及各抽头与对应反馈端的间距均不相同,混淆单元的输出与扩散单元的输出进行异或运算后反馈至移位寄存器反馈端,混淆扩散,移位寄存器每运行一拍,k个反馈端同时更新,每个反馈端的反馈信号均来自混淆单元与扩散单元两者输出的异或运算,每拍输出1比特;初始化结束后,进入工作阶段,扩散单元fi和gi的值经过非线性运算后输出密钥流序列,具体表达式如下:
OUTPUT=f1g3+f3g1+f2+f4+g2+g4
将扩散单元的输出经过非线性运算后,形成密钥流序列,将密钥流序列与序列源异或运算,得到密文。
本发明基于混淆和扩散部件复合迭代的非线性反馈移位寄存器进行序列密码实现,利用较少的硬件开销,通过非线性迭代达到一定的安全强度;该序列密码能够根据硬件资源和速度要求,灵活选择并行实现的拍数,表1给出了各种并行方式下算法硬件实现门电路开销的估计。
表1算法ASIC实现门电路估计
利用Verilog HDL对FPGA实现进行仿真评估,其中,实验平台为Quartus II(ver 11.0),芯片选择Stratix III系列芯片,表2给出了在128比特密钥和256比特密钥两种模式下32拍并行的仿真结果。
表2算法32拍并行下FPGA实现评估
通过实验结果可以看出,该序列密码在单比特输出时,硬件实现代价仅3905门电路,属于轻量级密码。同时该发明可以根据不同应用环境选择合适的并行实现拍数,最高可32拍并行,此时ASIC实现门电路约8710门,FPGA实现的最高频率可超过250MHz,速度超过8Gbps。
本发明不局限于上述具体实施方式,本领域技术人员还可据此做出多种变化,但任何与本发明等同或者类似的变化都应涵盖在本发明权利要求的范围内。