买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:桂林电子科技大学
摘要:本发明公开了一种基于NFSR和钟控双LFSR的流密码实现方法,包括设计流密码算法总体结构;设计LFSR部件;使用Grain‑128AEAD算法中的128比特状态的NFSR;设计算法结构输出函数;算法初始化;生成密钥流;算法加解密的步骤。本发明方法使用两个LFSR,在初始化阶段由NFSR控制LFSR的选择,NFSR与LFSR相互影响,并在密钥流生成阶段使用一个额外的钟控函数控制LFSR的选择,使初始向量和密钥混淆和扩散的更充分,有效抵抗时间‑存储‑数据权衡攻击,提高算法安全性。密钥流初始化阶段采用288轮迭代,其输出函数平衡,能够有效抵抗平凡的统计攻击、强攻击、一般猜测攻击等。
主权项:1.基于NFSR和钟控双LFSR的流密码实现方法,其特征在于,包括如下步骤:1设计流密码算法总体结构采用LFSR和NFSR的串联结构,并与非线性的滤波函数结合混合两种寄存器的状态,在不同阶段设置不同函数进行状态更新并选择相应部件参与计算,具体方法如下:1.1使用两个LFSR部件,提供生成有良好的统计特性的基础源序列;在算法运行过程中,通过钟控选择其中的一个LFSR部件;1.2使用1个NFSR部件,NFSR为算法提供非线性,掩盖掉LFSR的线性特征;1.3算法输出使用非线性的滤波函数,混合两个寄存器的状态,进一步提供算法的非线性;1.4设置一个128比特的初始密钥,以及两个64比特的互补的初始向量;将128比特的初始密钥加载到NFSR,两个64比特的互补的初始向量分别加载到2个LFSR中,在初始化过程中,滤波函数输出的比特,参与到NFSR和LFSR的状态更新,并且由NFSR控制LFSR的选择,经过288次迭代后,开始密钥流的生成;密钥流生成过程中,钟控函数使用两个LFSR中的状态比特,控制选择LFSR的参与;每次迭代,算法输出1比特的密钥;2设计LFSR部件使用两个LFSR部件,其中,LFSR1为78比特,更新函数包括4个抽头;LFSR2为82比特,更新函数包含6个抽头;并设置钟控函数完成输出控制,具体方法如下:2.178比特的LFSR1以表示,其中表示t时刻LFSR1的第i个状态位,LFSR1的本原反馈多项式表示为f1x;设置f1x=1+x+x2+x7+x78;LFSR1的更新函数为其中表示在t时刻LFSR1的更新函数产生的值;2.282比特的LFSR2以表示,其中表示t时刻LFSR2的第i个状态位,LFSR2的本原反馈多项式表示为f2x;设置f2x=1+x+x4+x6+x7+x8+x82;LFSR2相应的更新函数为其中表示在t时刻LFSR2的更新函数产生的值;2.3设置控制LFSR的选择的钟控函数为wt,wt是以两个LFSR的状态比特为输入的5输入1输出的布尔函数,当wt的输出为0时,选择LFSR1参与运算;当wt的输出为1时,选择LFSR2参与运算;3使用Grain-128AEAD算法中的128比特状态的NFSR部件,具体方法如下:128比特的NFSR以表示,其中表示t时刻NFSR的第i个状态位比特,NFSR的反馈多项式表示为gx,则gx=1+x32+x37+x72+x102+x128+x44x60+x61x125+x63x67+x69x101+x80x88+x110x111+x115x117+x46x50x58+x103x104x106+x33x35x36x40NFSR对应的更新函数为: 其中表示在t时刻NFSR的更新函数产生的值;4设计算法结构输出函数输出函数为非线性函数,混合两种寄存器的状态,以进一步增强密码的非线性性质、良好的相关性以及统计特性,具体方法如下:4.1输出函数将NFSR和被选择的LFSR的状态混合到一起,由一个非线性函数ht和一个线性部分组成,其中,其中表示t时刻NFSR的第i个状态位比特,表示t时刻被选择的LFSR的第i个状态位比特;线性部分为:其中表示t时刻NFSR的第j个状态位比特;4.2设置输出函数为zt,zt为t时刻输出的密钥流比特,z为输出函数在t287时间内产生的密钥流;5算法初始化初始化阶段,将初始向量和密钥加载到寄存器中,并在迭代过程中通过NFSR控制LFSR的选择,具体方法如下:5.1读取128比特初始密钥K=k0,k1,…,k127和两个64比特初始向量其中IV2为IV1的补码;5.2将128比特的初始密钥加载到NFSR中,即将64比特的初始向量IV1加载到LFSR1的前64比特,后14比特用1和0填充,其中除最后一位外,其余位都填充1;64比特的初始向量IV2加载到LFSR2的前64比特,后18比特用1和0填充,其中除最后一位外,其余位都填充1;5.3设置迭代变量t=0;5.4将输出函数的输出比特与NFSR更新函数的输出、和在该轮迭代中被NFSR选择的LFSR的更新函数的输出进行异或,具体步骤如下:5.4.1取输出函数zt的ht函数表达式中的变量,即NFSR的3个比特和LFSR1的10个比特计算得到ht的值;5.4.2取输出函数zt的线性部分表达式中的变量,即NFSR的7个比特和LFSR1的1个比特与5.4.1得到的ht值异或,得到输出比特zt;5.4.3将LFSR1的更新函数的值与5.4.2得到的输出比特zt异或,并更新LFSR1,其中,5.4.4取LFSR1的第一个比特和输出比特zt与NFSR的更新函数的输出值异或,更新NFSR,其中,转到步骤5.4.9;5.4.5取输出函数zt的ht函数表达式中的变量,即NFSR的3个比特和LFSR2的10个比特计算得到ht的值;5.4.6取输出函数zt的线性部分表达式中的变量,即NFSR的7个比特和LFSR2的1个比特与5.4.5得到的ht值异或,得到输出比特zt;5.4.7将LFSR2的更新函数的值与5.4.6得到的输出比特zt异或,并更新LFSR2,其中,5.4.8取LFSR2的第一个比特和输出比特zt与NFSR的更新函数的输出值异或,更新NFSR,其中,5.4.9若t≠288,t=t+1,取NFSR的更新函数的输出比特,若输出比特为0,选择LFSR1,转步骤5.4.1;若输出比特为1,选择LFSR2,转步骤5.4.5;若t=288,结束迭代,转5.4.10;5.4.10结束迭代,完成初始化;6生成密钥流通过初始化迭代,输出密钥比特;并以2个LFSR的状态比特作为钟控函数的输入完成对LFSR的选择,具体方法如下:6.1假设明文为m,长度为p;6.2t=288;6.3从LFSR1,LFSR2中选取出5个比特,进行运算,设置计算结果为wt,若wt为0,则下一步选择LFSR1,转步骤6.4;若wt为1,则下一步选择LFSR2,转步骤6.8;6.4更新LFSR1,令6.5取LFSR1的第一个比特参与NFSR的更新,令6.6取输出函数zt的ht函数表达式中的变量,即NFSR的3个比特和LFSR1的10个比特计算得到ht的值;6.7取输出函数zt的线性部分表达式中的变量,即NFSR的7个比特和LFSR1的1个比特与步骤6.6得到的ht值异或,得到输出zt;转步骤6.12;6.8更新LFSR2,令6.9取LFSR2的第一个比特参与NFSR的更新,令6.10取输出函数zt的ht函数表达式中的变量,即NFSR的3个比特和LFSR2的10个比特计算得到ht的值;6.11取输出函数zt的线性部分表达式中的变量,即NFSR的7个比特和LFSR2的1个比特与步骤6.10得到的ht值异或,得到输出比特zt;6.12t=t+1,p=p-1,若p≠0,转步骤6.3;若p=0,转步骤6.13;6.13结束迭代,完成密钥流的生成;7算法加解密加密时,将密钥流逐比特和明文比特异或产生密文;解密时,将密钥流和密文异或恢复明文,具体方法如下:7.1针对算法的加密实现,具体过程如下;7.1.1输入明文m;7.1.2将明文m与密钥流z逐比特进行异或,得到密文c,即密文中的每个比特操作为ci=mi⊕zi,ci为密文的第i比特,mi为明文的第i比特,zi为密钥流的第i比特;7.2针对算法的解密实现,具体过程如下;7.2.1输入密文c;7.2.2将密文c与密钥流z逐比特进行异或,得到明文m,即密文中的每个比特操作为mi=ci⊕zi。
全文数据:
权利要求:
百度查询: 桂林电子科技大学 基于NFSR和钟控双LFSR的流密码实现方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。