一种自同步的祖冲之加解密算法的实现系统及其方法

文档序号:10542299阅读:942来源:国知局
一种自同步的祖冲之加解密算法的实现系统及其方法
【专利摘要】本发明公开了一种自同步的祖冲之加解密算法的实现系统及其方法。该系统包括线性反馈移位寄存器模块、比特重组模块、非线性函数F模块、加解密模块、自同步反馈模块。实现更好的同步效果,通过将加密后的数据反馈给线性反馈移位寄存器实现自同步的功能。在加密模块中,将明文与密钥流异或后的密文序列进行截取。截取得到密文序列的高31位C31H后,直接通过自同步反馈线反馈给线性移位寄存器中的异或门。本发明通过从非线性函数F模块中导出一根反馈线,并连接到线性反馈移位寄存器内部,形成祖冲之自同步序列密码。自同步反馈线的连接不仅增强了密文的安全性,也减少了同步过程中误解密率。
【专利说明】
一种自同步的祖冲之加解密算法的实现系统及其方法
技术领域
[0001]本发明涉及信息安全领域,具体涉及到一种自同步的祖冲之加解密算法的实现系统及其方法。
【背景技术】
[0002]中国近五年来在序列密码设计方面最重要的结果是祖冲之算法。祖冲之算法于2011年9月被3GPP LTE采纳为国际加密标准,即第四代移动通信加密标准,和AES、SNOW 3G并成为LIE三大算法。祖冲之算法是由冯登国等国内专家学者设计的序列密码。该设计能够通过已存在的各种密码攻击测试。中国研制的祖冲之序列密码现已得到国内外许多专家学者的认可并被给予了很高的评价。
[0003]根据序列密码的密钥序列与明文、密文的关系,可以将序列密码分为同步序列密码和自同步序列密码。同步序列密码是加密算法与密文无关的一种序列密码。同步序列密码的使用较为普遍,祖冲之序列密码就是典型的同步序列密码。序列密码的同步问题一直是加解密的核心关键所在。序列密码加解密非常强调数据间的顺序,如果掉一位或任意两位之间调换则加解密数据全部出错。在现在的数字加密体系中,为实现正确的同步往往需要消耗大量的资源去实现多个同步电路。同步电路不仅仅消耗了逻辑资源,同时也降低了吞吐量。在同步过程需要插入多个同步信息,同步精度越高,插入的同步信息也越多。因此,在祖冲之算法实现过程中,密码同步问题需要得到近一步的解决。

【发明内容】

[0004]鉴于此,本发明主要解决的技术问题是克服上述现有技术中存在的缺点和不足,提供一种自同步的祖冲之加解密算法的实现系统及其方法,有效提高了序列密码同步的成功率,大大增加了密文的安全性。
[0005]本发明所采用的技术如下:一种自同步的祖冲之加解密算法的实现系统,包括线性反馈移位寄存器模块、比特重组模块、非线性函数F模块、加、解密模块和自同步反馈模块;
[0006]所述线性反馈移位寄存器模块是将输入数据128位初始向量和128位初始密钥构成线性反馈寄存器的基本存储单元,通过选取基本存储单元中六个固定位中的数值进行循环移动相应位数,六个循环移位后的数据进行取模相加得到最终更新值,此时,最终更新值与线性反馈寄存器一起再次循环移位一次;
[0007]所述比特重组模块是从线性反馈移位寄存器模块中8个固定位置各抽取16比特数,重新排列组成4个32位的数据,比特重组模块仅涉及到移位操作;
[0008]所述非线性函数F模块包含寄存器办和他、非线性置换S盒、线性函数L,寄存器办和R2是非线性函数F模块中唯一具有记忆存储功能的小模块,其初始值为零。非线性函数F模块共用到8个并行的非线性置换S盒,每个S盒将输入8比特数作为地址进行寻址,输出存储在S盒中的8比特数据,线性函数L是简单地移位和异或操作;
[0009]所述加、解密模块对非线性函数F输出32位密钥序列的速度进行控制,并且对非线性函数F输出密钥序列进行缓存;
[0010]所述自同步反馈模块由所得密文的高31位反馈给线性移位寄存器模块,通过31位输入的异或门与线性移位寄存器模块每轮迭代生成值V进行异或得到新一轮S15的值。
[0011]本发明还具有如下技术特征:采用上所述的系统得出的一种自同步祖冲之算法加解密的实现方法,包括加、解密步骤,
[0012]加密的实现方法步骤如下:
[0013]步骤101:线性反馈移位寄存器接受输入的128比特数初始向量和128比特数初始密钥,并存储下来;
[0014]步骤102:选取移位寄存器中的6个31比特数,并将其分别循环移位不同位数;
[0015]步骤103:将循环移位后的6个31比特数取模相加得到最终值31比特数;
[0016]步骤104:分别抽取线性反馈移位寄存器中8个16比特数,从新排列成4个32比特数;
[0017]步骤105:取4个32位比特数中两个32比特数,该32比特数与仏异或后再与R2取模相加得到W,W与另一个32比特数异或得到Z,Z与明文异或得到密文,并将密文与步骤103中最终值31比特数相异或,同时并将线性反馈移位寄存器循环移位;
[0018]步骤106:取4个32位比特数中剩下两个32比特数,一个32比特数与仏进行取模相加,另一个与R2异或,将得到的两个新的32比特数位拼接成一个64比特数进行循环左移16位;
[0019]步骤107:将步骤106的结果位分解成两个32比特数,分别通过线性函数L进行移位异或运算;
[0020]步骤108:将步骤107的结果分别送入8个S盒中进行数据的置换;
[0021]步骤109:将步骤108的结果赋值给和R2,并重复步骤101至步骤109进行不断的加密输出;
[0022]解密的实现方法步骤如下:
[0023]步骤201:线性反馈移位寄存器接受输入的128比特数初始向量和128比特数初始密钥,并存储下来;
[0024]步骤202:选取移位寄存器中的6个31比特数,并将其分别循环移位不同位数;
[0025]步骤203:将循环移位后的6个31比特数取模相加得到最终值31比特数;
[0026]步骤204:分别抽取线性反馈移位寄存器中8个16比特数,从新排列成4个32比特数;
[0027]步骤205:取4个32位比特数中两个32比特数,该32比特数与仏异或后再与R2取模相加得到W,W与另一个32比特数异或得到Z,密文与步骤103中最终值31比特数相异或,同时并将线性反馈移位寄存器循环移位一次;
[0028]步骤206:取4个32位比特数中剩下两个32比特数,一个32比特数与仏进行取模相加,另一个与R2异或,将得到的两个新的32比特数位拼接成一个64比特数进行循环左移16位;
[0029]步骤207:将步骤206的结果位分解成两个32比特数,分别通过线性函数L进行移位异或运算;
[0030]步骤208:将步骤207的结果分别送入8个S盒中进行数据的置换;
[0031]步骤209:将步骤208的结果赋值给和R2,并重复步骤201至步骤209进行不断的解密输出。
[0032]本发明的优点及有益效果:本发明有效提高了序列密码同步的成功率,大大增加了密文的安全性。自同步反馈线的连接不仅增强了密文的安全性,也减少了同步过程中误解密率。
【附图说明】
[0033]图1为本发明提供的一种自同步祖冲之的加密实现系统结构示意图;
[0034]图2为本发明提供的一种自同步祖冲之的解密实现系统结构示意图;
[0035]图3为本发明提供的一种自同步祖冲之的加密实现方法结构图;
[0036]图4为本发明提供的一种自同步祖冲之的解密实现方法结构图。
【具体实施方式】
[0037]下面根据附图举例对本发明做进一步解释:
[0038]实施例1
[0039]如图1中所示,一种自同步的祖冲之加解密算法的实现系统,包括线性反馈移位寄存器模块、比特重组模块、非线性函数F模块、加、解密模块和自同步反馈模块;
[0040]所述线性反馈移位寄存器模块是将输入数据128位初始向量和128位初始密钥构成线性反馈寄存器的基本存储单元,通过选取基本存储单元中六个固定位中的数值进行循环移动相应位数,六个循环移位后的数据进行取模相加得到最终更新值,此时,最终更新值与线性反馈寄存器一起再次循环移位一次;
[0041]所述比特重组模块是从线性反馈移位寄存器模块中8个固定位置各抽取16比特数,重新排列组成4个32位的数据,比特重组模块仅涉及到移位操作;
[0042]所述非线性函数F模块包含寄存器办和他、非线性置换S盒、线性函数L,寄存器办和R2是非线性函数F模块中唯一具有记忆存储功能的小模块,其初始值为零。非线性函数F模块共用到8个并行的非线性置换S盒,每个S盒将输入的8比特数作为地址进行寻址,输出存储在S盒中的8比特数据,线性函数L是简单地移位和异或操作;
[0043]所述加、解密模块对非线性函数F输出32位密钥序列的速度进行控制,并且对非线性函数F输出密钥序列进行缓存;
[0044]所述自同步反馈模块由所得密文的高31位反馈给线性移位寄存器模块,通过31位输入的异或门与线性移位寄存器模块每轮迭代生成值V进行异或得到新一轮S15的值。
[0045]祖冲之算法为同步序列密码。为实现更好的同步效果,通过将加密后的数据反馈给线性反馈移位寄存器实现自同步的功能。如图1所示。在加密模块中,将明文与密钥流异或后的密文序列进行截取。截取得到密文序列的高31位C31h后,直接通过自同步反馈线反馈给线性移位寄存器中的异或门。C31h与上一次线性移位寄存器移位后得到的31位最终更新值V相异或得到自同步祖冲之序列密码线性反馈移位寄存器的最终值S15。
[0046]实施例2
[0047]如图2中所示线性反馈移位寄存器模块的输入数据包含初始向量和初始密钥。线性反馈移位寄存器对输入数据进行相加和取模运算,输出31位更新值并循环移位。
[0048]图中比特重组模块抽取线性反馈移位寄存器模块中固定位置的若干数据,并进行重新组合形成4个32位的输出数据。
[0049]图中非线性函数F模块包含寄存器办和1?2、非线性置换S盒、线性函数L。寄存器办和R2具有存储数据功能,初始值为零。非线性函数F模块共用到8个非线性置换S盒,每个S盒对输入8比特数的地址进行寻址,输出存储在S盒中的8比特数据。线性函数L是简单地移位和异或操作。
[0050]图中加、解密模块功能主要为:对非线性函数F输出32位密钥序列的速度进行控制,并且对非线性函数F输出密钥序列进行缓存。
[0051]图中所述,自同步反馈线在解密模块中将输入的密文直接反馈给线性移位寄存器,并使线性反馈移位寄存器循环移位更新数据。解密与加密大致相同,只是在解密时,密文直接参与线性反馈移位寄存器的计算,并使线性反馈移位寄存器循环移位一次,更新数据,如图2所示。在解密模块中,将输入的密文直接反馈给线性移位寄存器,用来生成解密的密钥序列。密钥序列通过异或门与密文异或得到输出的明文序列。
[0052]实施例3
[0053]如图3所示,一种自同步祖冲之算法加密的实现方法,包括如下步骤:
[0054]步骤1000:将输入数据128比特数和128比特数据均分存储到-'S1^S15中。
[0055]步骤1001:将S15循环左移15位,将S13循环左移17位,将S1Q循环左移21位,将S4循环左移20位,将So循环左移8位。
[0056]步骤1002:将步骤1001中五个循环移位后的值进行mod232-l相加得到V。抽取S15的高16位和Sm的低十六位合并成32位的Xo;抽取Sn的低16位和S9的高十六位合并成32位的Xi;抽取S7的低16位和S5的高十六位合并成32位的X2;抽取S2的低16位和So的高十六位合并成32位的X3;
[0057]步骤1003:将R^Xo异或后再与R2进行mod232相加得到IW与X3异或得到Z。
[0058]步骤1004:将Z与32位的明文异或得到密文序列C。并将密文序列的高31位(:3111与¥异或得到新一轮的S15的更新值。与此同时,线性反馈移位寄存器进行循环移位。S1^Sw,其中ie(0,l,2...14)0
[0059]步骤1005 = RgX1进行mod232的加法得到hi,R2与X2异或得到h2。
[0060]步骤1006:将hi和1!2进行位拼接操作,组合成一个64比特的数据。然会对其循环左移十六位。并将高32位记为Ui,低32位记为U2
[0061]步骤1007:将udPu2分别通过线性函数LdPL2。其操作具体为:将m同时循环左移2位、循环左移10位、循环左移18位、循环左移24位,再将这四次循环移位后的数据异或,最后再与m异或得同时循环左移8位、循环左移14位、循环左移22位、循环左移30位,再将这四次循环移位后的数据异或,最后再与U2异或得到1^(1!2)。
[0062]步骤1008 J^L1(U1)和L2(U2)拆分成8个8位的小分组分别送入8个8输入的S盒中,所得结果为Sa1(U1))和S(L2(U2))13再将S(LKm))和S(L2(u2))的值赋给
[0063]步骤1009:重复步骤1001至步骤1008进行多次数据加密。
[0064]实施例4
[0065]如图4所示,一种自同步祖冲之算法解密的实现方法,包括如下步骤:
[0066]步骤2000:将输入数据128比特数和128比特数据均分存储到"'S1^S15中。
[0067]步骤2001:将S15循环左移15位,将S13循环左移17位,将S1Q循环左移21位,将S4循环左移20位,将So循环左移8位。
[0068]步骤2002:将步骤2001中五个循环移位后的值进行mod232-l相加得到V。抽取S15的高16位和Sm的低十六位合并成32位的Xo;抽取Sn的低16位和S9的高十六位合并成32位的Xi;抽取S7的低16位和S5的高十六位合并成32位的X2;抽取S2的低16位和So的高十六位合并成32位的X3;
[0069]步骤2003:将R^Xo异或后在与R2进行mod232相加得到IW与X3异或得到Z。
[0070]步骤2004:将Z与32位的密文异或得到明文序列。并将直接密文序列的高31位C31h与V异或得到新一轮的S15的更新值。与此同时,线性反馈移位寄存器进行循环移位。S1^Si+1,其中ie(0,l,2...14)0
[0071 ] 步骤2005 = RgX1进行mod232的加法得到hi,R2与X2异或得到h2。
[0072]步骤2006:将In和1!2进行位拼接操作,组合成一个64比特的数据。然会对其循环左移十六位。并将高32位记为Ui,低32位记为U2
[0073]步骤2007:将山和仍分别通过线性函数LjPL2t3其操作具体为:将m同时循环左移2位、循环左移10位、循环左移18位、循环左移24位,再将这四次循环移位后的数据异或,最后再与m异或得同时循环左移8位、循环左移14位、循环左移22位、循环左移30位,再将这四次循环移位后的数据异或,最后再与112异或得到L2(U2)。步骤SOOSd^L1(U1)和L2(U2)拆分成8个8位的小分组分别送入8个8输入的S盒中,所得结果为S(L1U1))和S(L2(112))。再将3(1^(111))和3(1^(112))的值赋给1?1和1?2。
[0074]步骤2009:重复步骤2001至步骤2008进行多次数据解密。
【主权项】
1.一种自同步的祖冲之加解密算法的实现系统,其特征在于,包括线性反馈移位寄存器模块、比特重组模块、非线性函数F模块、加、解密模块和自同步反馈模块; 所述线性反馈移位寄存器模块是将输入数据128位初始向量和128位初始密钥构成线性反馈寄存器的基本存储单元,通过选取基本存储单元中六个固定位中的数值进行循环移动相应位数,六个循环移位后的数据进行取模相加得到最终更新值,此时,最终更新值与线性反馈寄存器一起再次循环移位一次; 所述比特重组模块是从线性反馈移位寄存器模块中8个固定位置各抽取16比特数,重新排列组成4个32位的数据,比特重组模块仅涉及到移位操作; 所述非线性函数F模块包含寄存器RjPR2、非线性置换S盒、线性函数L,寄存器RjPR2是非线性函数F模块中唯一具有记忆存储功能的小模块,其初始值为零,非线性置换S盒具有非线性函数F模块共用到8个非线性置换S盒,每个S盒对输入8比特数的地址进行寻址,输出存储在S盒中的8比特数据,线性函数L是简单地移位和异或操作; 所述加、解密模块对非线性函数F输出32位密钥序列的速度进行控制,并且对非线性函数F输出密钥序列进行缓存; 所述自同步反馈模块由所得密文的高31位反馈给线性移位寄存器模块,通过31位输入的异或门与线性移位寄存器模块每轮迭代生成值V进行异或得到新一轮S15的值。2.采用如权利要求1所述的一种自同步的祖冲之加解密算法的实现系统得出的一种自同步祖冲之算法加解密的实现方法,包括加、解密步骤,其特征在于, 加密的实现方法步骤如下: 步骤101:线性反馈移位寄存器接受输入的128比特数初始向量和128比特数初始密钥,并存储下来; 步骤102:选取移位寄存器中的6个31比特数,并将其分别循环移位不同位数; 步骤103:将循环移位后的6个31比特数取模相加得到最终值31比特数; 步骤104:分别抽取线性反馈移位寄存器中8个16比特数,从新排列成4个32比特数; 步骤105:取4个32位比特数中两个32比特数,该32比特数与仏异或后再与R2取模相加得至IJW,W与另一个32比特数异或得到Z,Z与明文异或得到密文,并将密文与步骤103中最终值31比特数相异或,同时并将线性反馈移位寄存器循环移位; 步骤106:取4个32位比特数中剩下两个32比特数,一个32比特数与仏进行取模相加,另一个与R2异或,将得到的两个新的32比特数位拼接成一个64比特数进行循环左移16位; 步骤107:将步骤106的结果位分解成两个32比特数,分别通过线性函数L进行移位异或运算; 步骤108:将步骤107的结果分别送入8个S盒中进行数据的置换; 步骤109:将步骤108的结果赋值给和R2,并重复步骤101至步骤109进行不断的加密输出;解密的实现方法步骤如下: 步骤201:线性反馈移位寄存器接受输入的128比特数初始向量和128比特数初始密钥,并存储下来; 步骤202:选取移位寄存器中的6个31比特数,并将其分别循环移位不同位数; 步骤203:将循环移位后的6个31比特数取模相加得到最终值31比特数; 步骤204:分别抽取线性反馈移位寄存器中8个16比特数,从新排列成4个32比特数; 步骤205:取4个32位比特数中两个32比特数,该32比特数与仏异或后再与R2取模相加得至IJW,W与另一个32比特数异或得到Z,密文与步骤103中最终值31比特数相异或,同时并将线性反馈移位寄存器循环移位一次; 步骤206:取4个32位比特数中剩下两个32比特数,一个32比特数与仏进行取模相加,另一个与R2异或,将得到的两个新的32比特数位拼接成一个64比特数进行循环左移16位; 步骤207:将步骤206的结果位分解成两个32比特数,分别通过线性函数L进行移位异或运算; 步骤208:将步骤207的结果分别送入8个S盒中进行数据的置换; 步骤209:将步骤208的结果赋值给和R2,并重复步骤201至步骤209进行不断的解密输出。
【文档编号】H04W12/02GK105916141SQ201610545863
【公开日】2016年8月31日
【申请日】2016年7月12日
【发明人】丁群, 王传福, 田兴宇
【申请人】黑龙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1