具体实施方式
本发明涉及一种流密码生成器,用于生成与时钟触发同步的24比特的流密码(密钥流)。下面结合附图对流密码生成器进一步的描述。
<流密码生成器>
如图1所示,本发明的流密码生成器包括:
三个线性反馈移位寄存器LFSRα、LFSRβ和LFSRγ。其中,LFSRα为64比特,特征多项式为f(x)=x8+x6+x5+x+1;LFSRβ为35比特,特征多项式为f(x)=x35+x30+x22+x11+x6+1;LFSRγ共有31比特,其特征多项式为f(x)=x31+x13+x7+x6+x3+1。
三个线性变换模块T1、K和L,其中T1对LFSRα的数据进行反馈置乱,线性变换K对LFSRβ的数据进行置乱,L对LFSRγ的数据进行置乱。
一个输入模块,用于向所述的LFSRα、LFSRβ、LFSRγ和三个线性变换模块T1、K和L分别输入密钥及向量值。
三个状态读取列表模块A、B和C,其中A读取LFSRα中预定位的数据,B读取LFSRβ中预定位的数据,C读取LFSRγ中预定位的数据。线性变换模块F,其中F输入从A、B和C输出的数据,经反馈压缩及置乱后输出24比特的数据。
一查表压缩变换模块D,对从B输出的数据,经查表压缩后输出16比特的数据。一输出模块G,对从上述的F、D和C输出的数据压缩后每个时钟触发输出24比特的数据流。
一存储/截取模块,该存储/截取模块用于存储预先埋入的初始密钥及初始向量,以及用于截取和存储运行中生成的随机数、重新认证密钥及向量、场更新密钥。
一控制单元,用于协调各组成部分的运作,并控制整个流密码生成器的运行。
上述的各组成单元在时钟脉冲触发下进行动作,初始状态下的寄存器的缺省值为零。同时,各组成部分之间通过总线进行数据传输。
上述的流密码生成器的一个基本的工作过程包括:(1)输入过程:从密钥生成模块或从存储/截取模块读入密钥或向量,其中128比特密钥用一个脉冲触发分别输入到三个线性反馈移位寄存器LFSRα、LFSRβ和LFSRγ,以及128比特的向量是通过6个时钟脉冲分别输入三个线性变换模块T1、K和L,此时输出模块G对外无输出,其24比特的输出数据反馈到线性变换模块T1中;所述的A、B、C、D、F模块按预定的方式工作;(2)封闭循环运行过程:此时输入模块无数据输入,输出模块G对外也无输数据出,G的24比特输出的数据反馈到线性变换模块T1中;而所述的A、B、C、D、F等模块在预定方式下工作。(3)输出过程:此时输入模块无数据输入,所述的A、B、C、D、F等模块在预定方式下工作;输出模块G对外输出24比特的数据流。
实施例1
线性反馈移位寄存器LFSRa,其按字节进行移位操作,有64位。其预定位的8比特数串行输出并经异或运算(即这些8比特的串模2相加),作为结果的8比特τ反馈到线性变换模块T1中。
其中,T1是一线性变换模块,其输出为8比特。T1的结构如图1B所示:包括三个相互独立的部件T1A、T1B、T1C,和一选择开关。
T1A部件由读入单元、调整单元和运算单元等3部分组成。在输入过程,该读入单元从总线读入LFSRa反馈的8比特τ、输出模块G的输出G2(8比特)、G1(8比特)、G0(8比特)和8比特输入的向量IV3k+2(k=0,1,...,4,五轮输入);该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,形成长度都是8比特的5个数据(τ>>>3)、G2、(G1>>>2)、G0、IV3k+2;该运算单元利用异或运算将上述5个数据进行异或运算,其逻辑表达式为:T1=[(τ>>>3)⊕G0⊕(G1>>>2)⊕G2⊕IV3k+2],其中τ>>>3表示LFSRα反馈的8比特τ循环右移3位的值,G1>>>2表示变换G的输出G1循环右移两位的值,⊕表示求异或运算,公式所得即T1A部件的最终输出的值。
T1B部件由读入单元、调整单元和运算单元等3部分组成。在封闭循环运行过程中,该读入单元读入LFSRα反馈的8比特τ、输出模块G的输出G2(8比特)、G1(8比特)、G0(8比特);该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,形成长度都是8比特的4个数据(τ>>>3)、G2、(G1>>>2)、G0;运算单元利用异或运算器将上述4个8比特数据按比特进行异或运算,逻辑运算式为T1=[(τ>>>3)⊕G0⊕(G1>>>2)⊕G2],其中G1>>>2表示G1右移2位的值,如G1为0234567则G1>>>2表示67012345,所得的值即T1B部件的输出。
T1C部件由读入单元和调整单元2部分组成。在对外输出过程中,读入单元从数据总线读入LFSRα反馈的8比特τ;该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,形成长度是8比特的数据,逻辑运算式为T1=[τ>>>3],所得的值即T1C部件的输出。
上述的三个独立部件T1A、T1B、T1C分别对应于输入过程、封闭循环运行过程、输出过程等三个阶段。通过所述的选择开关根据系统控制单元给出的选择信号在不同的阶段分别将其中某一对应部分选择作为线性变换模块T1的工作单元,该单元的输出作为线性变换模块T1的输出。这里的G2(8比特)、G1(8比特)、G0(8比特)是输出模块G的24比特输出的不同段,其中G1为G0=g7g6g5g4g3g2g1g0,G1为G1=g15g14g13g12g11g10g9,G2为G2=g23g22g21g20g19g18g17g16。
其中,在输入过程:LFSRα通过一个脉冲输入64个比特的密钥,然后将预定位的数异或反馈到T1,然后T1对LFSRα反馈输入的数循环右移3位,并用G反馈的数和从输入模块输入的向量对其作异或运算,然后将运算结果回输到LFSRα的左端,然后LFSRα右移8位;
在封闭循环运行过程:LFSRα将预定位的数异或反馈到T1,然后T1对LFSRα反馈输入的数τ循环右移3位,并用G反馈的数对其作异或运算,并将运算结果回输到LFSRα左端,然后LFSRα右移8位;
在对外输出过程:LFSRα将预定位的数异或反馈到T1,然后T1对LFSRα反馈输入的数τ循环右移3位,并将运算结果回输到LFSRα左端,然后LFSRα右移8位。
实施例2
线性反馈移位寄存器LFSRβ有35比特,其在脉冲触发下移位操作。在输入过程,LFSRβ先通过一个脉冲读入33比特的密钥,此过程中:将其预定位的数(如第1、7、13、23、31位)经异或运算后(即将这些位输出的8比特的数进行2进制相加)反馈到其左端,并右移1位,然后由K对其左端的8位进行异或运算,然后循环右移8位。在封闭循环运行和对外输出过程,LFSRβ先将预定位的数异或反馈到其左端,并右移1位,然后循环右移8位。在封闭循环运行和对外输出过程:将其预定位的数经异或运算后(即将这些位输出的8比特的数进行2进制相加)反馈到其左端,并右移1位,然后循环右移8位。
K的结构组成如图1C所示:包括读入单元、调整单元、运算单元、写入单元和一选择开关。线性变换模块K在输入过程中,该选择开关用于对K的工作状态进行选择为”“ON”,此时通过5个脉冲由输入模块输入5个8比特的向量IV3k+1(其中k=0,1,...,4)并由读入单元读入LFSRβ经1比特移位后的左端8比特;该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,形成长度都是8比特的两个数据;该运算单元利用异或运算器将上述2个数据按比特进行异或运算,其逻辑表达式为:K=K=[β34β33β32β31β30β29β28β27⊕IV3k+1],公式所得即K的输出;所述写入单元将运算结果写入到LFSRβ中的左端8位,同时LFSRβ循环右移8位。在封闭循环运行过程和对外输出过程,K无向量输入,其选择开关对K的工作状态选择为“OFF”,K不对LFSRβ循环移位反馈后的数据进行操作,而是LFSRβ自行先右移1位,然后循环右移8位。
<实施例3>
线性反馈移位寄存器LFSRγ共有31比特,其在脉冲触发下移位操作。在读入过程,LFSRγ通过一个脉冲读入31比特的密钥,将其预定位的数(如第1、4、7、8、14的数)经异或运算后(即将这些位输出的8比特的数进行2进制相加)反馈到其左端,并右移1位,然后由L对其左端的8位进行异或运算,然后循环右移8位。在封闭循环运行和对外输出过程,LFSRγ先将预定位的数异或反馈到其左端,并右移1位,然后循环右移8位。在封闭循环运行和对外输出过程:将其预定位的数经异或运算后(即将这些位输出的8比特的数进行2进制相加)反馈到其左端,并右移1位,然后循环右移8位。
线性变换模块L的结构组成如图1D所示:包括读入单元、调整单元、运算单元和一选择开关。在输入过程,该选择开关用于对K的工作状态进行选择为“ON”,此时读入LFSRγ经1比特移位后的左端8比特和6个8比特的向量IV3k(k=0,1,...,5);该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,形成长度都是8比特的两个数据;该运算单元利用异或运算器将上述2个数据按比特进行异或运算,其逻辑表达式为:L=[r30r29r28r27r26r25r24r23⊕IV3k],公式所得即L的输出;所述写入单元将运算结果的值输入到LFSRγ左端8位中。
在封闭循环运行过程和对外输出过程,K无向量输入,其选择开关对L的工作状态选择为“OFF”,L不对LFSRγ循环移位反馈后的数据进行操作。
<实施例4>
图1A中的状态读取列表模块A、B和C,其每个时钟触发分别从LFSRα,LFSRβ和LFSRγ中分别读取32,24和16比特。并且,读取的位置应满足比较大的差集,并减少两次时钟触发列表中相同元素的数量。
具体如图6D所示,状态读取列表模块A,包含一个读出单元(用于从LFSRα中读取32比特数据)、一个排列组合单元(用于将32比特变量重新调整排列顺序)、一个由寄存器组成的输出单元(用于暂存选择单元的输出,并向下一级模块输出)。
状态读取列表模块B,包含一个读出单元(用于从LFSRβ中读取24比特数据)、一个排列组合单元(用于将24比特变量重新调整排列顺序)、一个由寄存器组成的输出单元(用于暂存选择单元的输出,并向下一级模块输出)。
状态读取列表模块C,包含一个读出单元(用于从LFSRγ中读取16比特数据)、一个排列组合单元(用于将16比特变量重新调整排列顺序)、一个由寄存器组成的输出单元(用于暂存选择单元的输出,并向下一级模块输出)。
另外,如图1A所示,状态读取列表模块A的输出32比特作为线性变换模块F的输入之一,状态读取列表模块B的24比特输出分别作为线性变换模块F和查表压缩变换模块D的输入,状态读取列表模块C的16比特输出作为线性变换模块F的输入和输出模块G的输入。其中查表压缩变换模块D包括两个并行的查表变换,D的16比特输出作为输出模块G的输入之一。线性变换模块F的24比特输出作为输出模块G的输入之一。下文将详细描述线性变换模块F和查表压缩变换模块D的运算过程。
<实施例5>
线性变换模块F具有两个主要的模块,第一模块FF1和第二模块FF2,各自的主要运算为:
第一模块FF1,其是把从状态读取列表模块A读入的32比特,从B读入的24比特和从C读入的16比特以及线性变换模块F自身的24比特线性的压缩变换为适于FF2输入的24比特,压缩后的24比特用F0’F1’F2’表示,其中F0’为f7f6f5f4f3f2f1f0,F1’为f15f14f13f12f11f10f9f8,F2’为f23f22f21f20f19f18f17f16。
另外第二模块FF2,其对FF1得到的24比特进一步置乱、混淆,提高流密码生成器的非线性复杂度。如图3A所示,FF2包括两个非可逆线性变换模块M0、M1,FF1向FF2输入的24比特F2’F1’F0’(f’23f’22...f’1f’0)分成两个12比特,分别记为F”0=f’0f’15f’7f’2f’22f’19f’13f’5f’17f’23f’11f’9和F”1=f’20f’3f’14f’21f’4f’18f’6f’1f’16f’8f’12f’10。其中,F”0和F”1分别和两个线性变换的矩阵M0和M1作矢量乘法运算,得到两个8比特的输出,即:F’0=F”0×M0和F’1=F”1×M1。
另外,第二模块FF2包括4个并联的S-盒(S3S2S1S0),FF1模块输出的F2’段的8比特作为S-盒的输入,另外S-盒由FF1输出的F1’的最低两个比特(f9f8)控制,S盒查表变换一共输出为8比特,用F’2表示。这些S-盒查表变换的存在有效防止特殊密钥(如全0,全1)造成的弱密钥。对每一个表Si(i=0,1,2,3),输出的值是均匀分布的,输出差分的概率也是相等的,这样差分分析不能得到密钥f9f8的信息。
矩阵M0,M1的每行中至少有5个比特为1,所以每改变1比特输入影响输出8比特中的至少5比特。因为矩阵M0,M1的每列中至少有7个比特为1,所以结果中的每1比特至少受12比特中的7比特影响。这样增加了分析的难度,并且S-盒输出的8比特和非可逆线性变换输出的两个8比特,三组数据交替循环变换,加速了置乱过程。
经过以上的S-盒查表变换和两个非可逆线性变换M0、M1的输出记为F’2F’1F’0,该输出经循环左移8位后作为线性变换模块F的24比特输出,记为F2F1F0。
<实施例6>
状态读取列表模块B的24比特输出作为查表压缩变换模块D的输入。D包括两个并行的查表变换,通过查表变换把状态读取列表模块B的24比特输出进一步压缩为16比特的输出,并作为输出模块G的其中一个16比特输入。
查表压缩变换模块D的组成结构:两个并行的查表运算模块M、H,从状态读取列表模块B输入的24比特的高位16比特经过一个查表运算模块M输出8比特作为查表压缩变换模块D的最终输出的高位8比特;从B输入的24比特的低位8比特在另外两比特(D从B输入的24比特的高位2比特b23b22)的控制下,经查表运算模块H输出8比特,作为D最终输出的低位8比特。
查表运算模块M,如图4B所示,包含一个读入单元(用于从模块B的输出中读取其中的16比特数据)、一个排列组合单元(用于将16比特数据重新排列顺序)、一个存储器(事先在其中特定单元存放制定的数值)。运行过程:利用读入单元从B中读取16比特数据,经过排列组合单元将此16比特数据重新排列顺序,然后作为读地址信号去从存储器中读取(长度为8比特的)数据,此数据即为查表压缩变换模块D的最终输出的高位8比特。
查表运算模块H,如图4C所示,包含一个读入单元(用于从模块B的输出中读取其中10比特数据)、一个排列组合单元(用于将16比特数据重新排列顺序)、一个存储器(事先在其中特定单元存放制定的数值)。运行过程:利用读入单元用于从模块B中读取10比特数据(b23b22和b7b6 b5b4 b3b2b1b0),经过排列组合单元将此10比特数据重新排列顺序,然后作为读地址信号去从存储器中读取(长度为8比特的)数据,这个从存储器中读出的数据即为查表压缩变换模块D的最终输出的高位8比特。
综上,查表压缩变换模块D的输出为B5B4B3B2 B11 B10 B01 B00,上述D的逻辑过程如图4A的框图所示。
<实施例7>
输出模块G的输入包括线性变换模块F输出的24比特、查表压缩变换模块D输出的16比特和状态读取列表模块C输出的16比特,共计56比特,经线性变换输出24比特的数据。
输出模块G的组成包括:读入单元、调整单元和运算单元。其中,该读入单元读入线性变换模块F的输出数据X(8比特)、Y(8比特)、Z(8比特)、查表压缩变换模块D的输出数据DD(16比特)、状态读取列表模块C的输出数据CC(16比特);该调整单元利用调整数据线排列顺序的方法将读入的数据重新调整数据的比特顺序,并在必要时用0来补足空缺数据位,形成三个长度都是24比特的数据GIN1=(X<<<1)‖Y‖(Z>>>1)、GIN2=Y‖00000000、GIN3=00000000‖(CC>>>5);该运算单元对3个数据段做异或运算,逻辑公式为:G=[(X<<<1)‖Y‖(Z>>>1)⊕(DD>>>7)的高位8比特‖(DD>>>7)的低位8比特‖00000000⊕00000000‖(列表C>>>5)的高位8比特‖(列表C>>>5)的低位8比特],其结果g23g22...g2g1g0就是模块G的最后输出,G的运算单元的逻辑如图5所示。其中这里的“‖”表示数据的级联;“⊕”表示异或运算;“DD>>>7”表示循环右移7位。DD为查表压缩变换模块D的输出的16比特。
该输出模块G:在输入过程和封闭循环运行过程中,输出模块G输出的24比特反馈到线性变换模块T1作为T1的一部分输入,进而影响LFSRα的状态变化,促进数据的置乱;对外输出过程,对外输出24比特的密钥流。
<随机数生成方法>
用上述的本发明流密码生成器可以生成随机数,其具体的方法包括:
(一).在流密码生成器的存储/截取模块中预先埋入128比特的密钥及向量,这两个数值不变或很少改变。
(二).流密码生成器加电启动后,其输入模块从存储/截取模块中读入128比特的密钥及向量,并通过一个脉冲将密钥分别输入三个线性反馈移位寄存器,其中LFSRα输入64比特密钥、LFSRβ输入33比特密钥、LFSRγ输入31比特密钥;通过6个脉冲将向量输入到三个线性变换模块T1、K和L中,其中T1和K输入5个8比特向量,L输入6个8比特向量。
在这过程中:流密码生成器中所述T1对LFSRα中的密钥进行置乱,K对LFSRβ中的密钥进行置乱,L对LFSRγ中的密钥进行置乱;三个状态读取列表模块A、B和C,其分别从所述的LFSRα、LFSRβ和LFSRγ的预定位读取并按预定方式重新排序后输出;一个线性变换模块F,对从所述A、B和C输出的数,进行压缩及反馈置乱后输出;一个查表压缩变换模块D,将从B输出的数查表压缩后输出;一个输出模块G,将从所述F、D和C输入的数压缩成预定位的数输出,其中该输出在所述的输入过程和其后的封闭循环运行过程中反馈到T1。
(三).流密码生成器封闭循环运行一定的脉冲,其中具体的脉冲数可以根据需要进行调整。
在这一过程中:流密码生成器中所述T1对LFSRα中的密钥进行置乱,K对LFSRβ中的密钥进行置乱,L对LFSRγ中的密钥进行置乱;三个状态读取列表模块A、B和C,其分别从所述的LFSRα、LFSRβ和LFSRγ的预定位读取并按预定方式重新排序后输出;一个线性变换模块F,对从所述A、B和C输出的数,进行压缩及反馈置乱后输出;一个查表压缩变换模块D,将从B输出的数查表压缩后输出;一个输出模块G,将从所述F、D和C输入的数压缩成预定位的数输出,其中该输出在所述的输入过程和其后的封闭循环运行过程中反馈到T1。
(四).流密码生成器对外输出24比特的数据流,截取该24比特的数据流生成任意长度的随机数串,例如可以截取8个脉冲的24比特数据,生成192比特的随机数,也可以截取43个脉冲的24比特数据生成96比特的随机数。
在这一过程中:LFSRα、LFSRβ和LFSRγ进行反馈移位操作;状态读取列表模块A、B和C,其分别从所述的LFSRα、LFSRβ和LFSRγ的预定位读取并按预定方式重新排序后输出;一个线性变换模块F,对从所述A、B和C输出的数,进行压缩及反馈置乱后输出;一个查表压缩变换模块D,将从B输出的数查表压缩后输出;一个输出模块G,将从所述F、D和C输入的数压缩成预定位的数输出。
<同步对称加密系统>
如图7所示,在数据传输的发送端即加密端和数据传输的接收端即解密端分别设置如上所述的流密码生成器,另外在加密端还具有一个认证单元。
所述的认证单元如图8所示,包括认证模块和一秘钥生成模块。其中认证模块中预先写入了认证协议,根据加密端和解密端生成并发送的随机数进行用户的合法性认证。所述的密钥生成模块中写入密钥协商协议(AKE),其在认证通过的情况下,用两端的流密码生成器生成的随机数来生成一致的密钥及向量。
采用上述的同步对称加密系统进行同步对称加密的工作过程如下所述。其中,
如图2A所示,解密端的流密码生成器的流程为:
步骤一:加电启动后运行启动子程序即读入初始密钥和初始向量,封闭循环运行,截取输出模块G输出数据生成随机数和重新认证密钥及向量;发出认证请求;
步骤二:等待认证单元的认证结果:认证单元读取两端的流密码生成器生成的随机数进行认证,如认证通过运行下一步,如认证失败,直接结束过程;
步骤三:获取认证单元生成的中间密钥及向量,并运行密钥流生成子程序即输入该中间密钥及向量封闭循环运行,生成场更新密钥、校验向量和24比特的密钥流;
其中加密端用该24比特的密钥流对从加密端传输的密文数据流进行解密。
步骤四:当对一定量的数据加密传输后运行场密钥更新子程序即:输入生成的场更新密钥到三个线性反馈移位寄存器中,封闭循环运行,生成下一个场更新密钥、下一校验向量和24比特的密钥流;
步骤五:当数据传输被干扰或传输时延超出预定的范围时,还需要运行重新认证子程序即输入上次认证所生成的重新认证密钥及向量;封闭循环运行生成随机数和重新认证密钥及向量;请求认证并等待认证结果,如认证则运行密钥流生成子程序,如认证失败则数据流加密传输过程结束。
与解密端对应,如图2B所示加密端的流密码生成器的工作流程包括:
步骤一’:根据认证请求,启动运行启动子程序即读入初始密钥和初始向量,封闭循环运行,根据解密端的认证请求信号,生成随机数和重新认证密钥及向量;
步骤二’:等待认证单元的认证结果:认证单元读取两端的流密码生成器生成的随机数进行认证,如获认证通过信息则运行下一步,如认证失败,直接结束过程;
步骤三’:运行密钥流生成子程序即从认证单元读入中间密钥及向量后封闭循环运行,截取G的输出生成场更新密钥、校验向量和24比特的密钥流;
其中加密端用该24比特的密钥流传输的明文数据流进行解密。
步骤四’:当对一定量的数据加密传输后运行场密钥更新子程序,输入前步生成的场更新密钥到三个线性反馈移位寄存器中,封闭循环运行,生成下一个场更新密钥、下一校验向量和24比特的密钥流;
步骤五’:当数据传输被干扰或传输时延超出预定的范围时,还需要运行重新认证子程序,输入上次认证所生成的重新认证密钥及向量,封闭循环运行,生成随机数和重新认证密钥及向量;请求认证并等待认证结果,如认证则运行密钥流生成子程序,如认证失败则数据流加密传输过程结束。
上述的两端之间进行同步对称的对传输的数据流进行加密解密,但由于网络传输等原因会产生时延等问题,为解决这一问题,通过在传输数据流同时发送校验向量,进行同步校验。校验的方式为解密端比较接收到的加密端传来的校验向量和解密端生成的校验向量,如二者相同则说明该期间收到的数据流的加密密钥和解密端生成的解密密钥是对应的,解密和加密过程是同步的。
在解密端和加密端的流密码生成器的流程中的“步骤二”和“步骤二’”中所述认证过程需认证单元的参与,具体为:认证单元在收到接收到解密端的认证请求信号后,读取流密码生成器生成的随机数进行用户认证,如认证通过则发出认证通过信息,并根据两个随机数所生成的128比特的密钥和向量,由两端的流密码生成器读入,如认证失败则发出认证失败的信息。
<实施例8>
上述的启动子程序,如图2C所示,具体包括以下过程:
(1)输入模块将预先埋入在存储/截取模块中的128比特(16字节)的初始密钥RK通过一个脉冲分别输入到三个线性反馈移位寄存器中,其中LFSRα输入64比特,LFSRβ输入33比特,LFSRγ输入31比特;并将128比特(16字节)的初始向量RIV通过6个脉冲分别输到三个线性变换模块T1、K和L中,其中T1、K中输入5个字节向量,L中输入6个字节的向量;前述的A、B、C、D、F等模块按预定的方式工作;G输出反馈到T1;T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱。
(2)封闭循环运行34个脉冲,输出模块G的输出反馈到线性变换模块T1种;所述T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱,具体置乱方式如前述;A、B、C、D、F等模块按预定的前述方式工作。
(3)输出模块G输出24比特的数据,存储/截取模块截取8个脉冲的24比特密钥流生成192比特的随机数,截取6个脉冲的24比特密钥流144位的低128位生成第一对128比特的重新认证密钥及向量,该重新认证密钥及向量暂存到存储/截取模块。
<实施例9>
上述的密钥流生成子程序,如图2D所示,具体包括以下过程:
(1)输入模块从认证单元读入128比特的中间密钥及向量;
(2)输入模块将前述的128比特(16字节)的中间密钥通过一个脉冲分别输入到三个线性反馈移位寄存器中,其中LFSRα输入64比特,LFSRβ输入33比特,LFSRγ输入31比特;并将128比特(16字节)的中间向量通过6个脉冲分别输到三个线性变换模块T1、K和L中,其中T1、K中输入5个字节向量,L中输入6个字节的向量;前述的A、B、C、D、F等模块按前述预定方式工作;G输出反馈到T1;T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱,具体方式见前述。
(3)封闭循环运行34个脉冲,输出模块G的输出反馈到线性变换模块T1,所述T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱,具体方式见前述;以及A、B、C、D、F等模块按预定的方式工作,具体见前述。
(4)输出模块G输出24比特的数据,存储/截取模块截取6个脉冲的24比特密钥流144位的低128位生成场更新密钥及校验向量,及输出24比特的密钥流。
加密端用生成的密钥流对传输的明文数据流进行加密,并将校验向量同步发送到解密端;解密端用生成的密钥流对从加密端传输来密文流进行解密,并用两端生成的校验向量对加密解密过程进行同步校验。
<实施例10>
上述的场密钥更新子程序,如图2E所示,具体包括以下过程:
(1)输入模块将前述的128比特(16字节)的场更新密钥通过一个脉冲分别输入到三个线性反馈移位寄存器中,其中LFSRα输入64比特,LFSRβ输入33比特,LFSRγ输入31比特;所述的A、B、C、D、F等模块按前述预定方式工作;G输出反馈到T1;T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱。
(2)封闭循环运行34个脉冲,输出模块G的输出反馈到线性变换模块T1,所述T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱,具体方式见前述;以及A、B、C、D、F等模块按预定的方式工作。
(3)输出模块G输出24比特的数据,存储/截取模块截取6个脉冲的24比特密钥144位的低128位生成场更新密钥及校验向量,及输出24比特的密钥流;
加密端用生成的密钥流对传输的明文数据流进行加密,并将校验向量同步发送到解密端;解密端用生成的密钥流对从加密端传输来密文流进行解密,并用两端的是生成的校验向量对加密解密过程进行同步校验。
<实施例11>
上述的重新认证子程序,如图2F所示,具体包括以下过程:
(1)输入模块将前述的128比特(16字节)的重新认证密钥通过一个脉冲分别输入到三个线性反馈移位寄存器中,其中LFSRα输入64比特,LFSRβ输入33比特,LFSRγ输入31比特;并将128比特(16字节)的重新认证向量通过6个脉冲分别输到三个线性变换模块T1、K和L中,其中T1、K中输入5个字节向量,L中输入6个字节的向量;前述的A、B、C、D、F等模块按预定的方式工作;G输出反馈到T1;T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱。
(2)封闭循环运行34个脉冲,G输出反馈到T1,T1、K、L分别对LFSRα、LFSRβ、LFSRγ中的密钥进行反馈置乱;A、B、C、D、F等模块按预定的方式工作。
(3)G输出24比特的数据流,存储/截取模块截取8个脉冲的24比特密钥流生成192比特的随机数,截取6个脉冲的24比特密钥流144位的低128位生成第一对128比特的重新认证密钥及向量,该重新认证密钥及向量暂存到存储/截取模块。
(4)对于解密端,其发出认证请求,由认证单元将生成的随机数读入其中,等待认证结果;对于加密端其根据认证请求生成随机数和重新认证密钥及向量,将随机数发送到认证单元。
认证单元根据认证请求读取两端生成的随机数,并进行认证,如认证通过则用该两个随机数生成一致的中间密钥及向量,并发出认证通过的信息;如认证失败则发出认证失败信息,系统进的进程结束。
另外,其中所提及的截取输出模块的输出数据生成随机数或中间密钥及向量或场更新密钥及校验向量的具体方式,如第几个到第几个24比特数据,并未限定,其可根据情况而选择确定。另外,LFSRα反馈到T1的数的位置可以改变,T1对LFSRα反馈的数和G反馈的数的移位多少也可以改变。另外,状态读取列表模块读取线性移位反馈寄存器的预定的位置可以改变。还包括,根据需要对发明的技术方案中那些假定的位置或移位数或循环次数等作适应性的改变。
根据本发明的同步对称加密方法,所生成的密钥流的种子密钥为128比特的初始密钥,其长度远大于现有技术中所用的56比特的种子密钥,因而加密的安全级别也有很大的提高。