密钥流生成方法及装置
技术领域
本发明涉及计算机技术领域,特别是指一种密钥流生成方法及装置。
背景技术
进入21世纪,信息技术飞速发展,世界各地都形成了难以想象的超大容量的通信网络,为井喷式的信息流量提供了一个良好的传输平台。但与此同时,网络安全威胁和风险日益突出,并渐渐向政治、经济、社会、国防等领域传导渗透。随着具备强大破译能力的量子计算机不断发展,通信的数据内容存在“被截获、被复制、被篡改”的重大隐患。
流加密是如今运用最广泛的加密方法之一,属于对称加密算法的一种,加密和解密双方使用相同随机加密数据流作为密钥,明文每次与密钥顺次对应加密,得到密文。其遵守“一次一密”原则,密钥只使用一次,在密钥安全的情况下可以保证绝对安全。
该加密方法核心是种子密钥和伪随机数发生器。种子密钥特征由协商方法决定,一般无法改变。在计算机上利用数学方法产生随机数的第一个随机数发生器是20世纪40年代出现的“平方取中法”;以后又出现“乘积取中法”、位移法、线性同余法、组合同余法、反馈位移寄存器方法等等。如今通信发展突飞猛进,通信速率也达到Gbit/s级,为了得到通信所需的大量密钥,现如今使用的密钥流生成方法已变得不再适用,暴露出许多问题。
首先,通信协商方法各有不同,常常根据光纤信道特征的变化,如环路的误码率、光纤的偏振模色散、信号的相位变化等等,来量化生成密钥。由于每次实验环境各不相同,且每次实验也有误差,不同协商方法得到的初始密钥随机性各异,所以不能保证每次用以扩展的种子密钥都是性能良好的,所以最后得到的密钥流可能无法抵御攻击。其次,伪随机数发生器就是根据一个函数,把一个数(种子)进行多次迭代,生成一个长序列。因生成函数的周期对随机性起决定性作用,所以通常会忽视实际需求而选择超大周期的函数,虽保证了安全性,但同时增大了计算机处理的数据量,大大降低了密钥扩充的效率。
发明内容
有鉴于此,本发明的目的在于提出一种密钥流生成方法及装置,能够提高密钥流的安全性和稳定性。
基于上述目的,本发明提供的密钥流生成方法,包括:
获取初始密钥;
对所述初始密钥进行后处理,获得种子密钥;
对所述种子密钥进行扩充,获得扩充密钥;
提取所述扩充密钥中的一半数据,作为最终的运行密钥流。
进一步地,所述对所述初始密钥进行后处理,获得种子密钥,具体包括:
对所述初始密钥进行多次差分异或处理;
对处理后的初始密钥进行哈希映射,获得所述种子密钥。
进一步地,所述初始密钥为二进制随机序列;
所述对所述初始密钥进行多次差分异或处理,具体包括:
将所述初始密钥分别移动不同位数,且每移动一次获得相应的差分密钥;
将所述初始密钥依次与每一差分密钥进行异或处理,使处理后的初始密钥中的0和1的个数相同。
进一步地,所述种子密钥为二进制序列;
所述对所述种子密钥进行扩充,获得扩充密钥,具体包括:
对所述种子密钥进行分段,将每段种子密钥由二进制转换为十进制;
依次将转换后的每段种子密钥输入至组合同余发生器,并输出相应的随机数列作为子扩充密钥;
将所有子扩充密钥进行合并,获得所述扩充密钥。
进一步地,所述组合同余发生器包括第一同余发生器和第二同余发生器,每段种子密钥包括第一子密钥和第二子密钥;
所述依次将转换后的每段种子密钥输入至组合同余发生器,并输出相应的随机数列作为子扩充密钥,具体包括:
每转换一段种子密钥,将所述一段种子密钥的第一子密钥输入至所述第一同余发生器,依次输出k个随机数,并将所述k个随机数按顺序存放至矢量T中,T=(t1,t2,…,tk);
将所述一段种子密钥的第二子密钥输入至所述第二同余发生器,并依次输出N个随机整数j,1≤j≤k;
基于所述N个随机整数j依次从矢量T中获取随机数,并将获取的随机数组成随机数列,作为所述一段种子密钥的子扩充密钥。
进一步地,所述基于所述N个随机整数j依次从矢量T中获取随机数,并将获取的随机数组成随机数列,作为所述一段种子密钥的子扩充密钥,具体包括:
在输出第n个随机整数j时,令xn=tj,并采用所述第一同余发生器产生一个随机数y,将矢量T中的tj更新为y,1≤n≤N;
将随机数列{x1,…,xn}作为所述一段种子密钥的子扩充密钥。
进一步地,所述第一同余发生器和所述第二同余发生器中的运算函数为:
其中,X0为第一子密钥或第二子密钥,Xi-1为输入数据,Xi为输出数据,a为乘数,b为增量,c为模量。
进一步地,所述将所有子扩充密钥进行合并,获得所述扩充密钥,具体包括:
将每一子扩充密钥由十进制转换为二进制,并选取转换后的所有子扩充密钥的低位数据进行合并,获得所述扩充密钥。
进一步地,所述扩充密钥为二进制序列;
所述提取所述扩充密钥中的一半数据,作为最终的运行密钥流,具体包括:
提取所述扩充密钥中的奇数位或偶数位序列,作为最终的运行密钥流。
相应地,本发明实施例还提供一种密钥流生成装置,能够实现上述密钥流生成方法的所有流程,所述装置包括:
获取模块,用于获取初始密钥;
后处理模块,用于对所述初始密钥进行后处理,获得种子密钥;
扩充模块,用于对所述种子密钥进行扩充,获得扩充密钥;以及,
提取模块,用于提取所述扩充密钥中的一半数据,作为最终的运行密钥流。
从上面所述可以看出,本发明提供的密钥流生成方法及装置,能够采用保密增强技术对初始密钥进行后处理,获得种子密钥,以提高种子密钥的随机程度,进而对种子密钥进行扩充,并提取扩充密钥中的一半数据作为最终的运行密钥流,以降低短时相关性,增强随机性,从而提高最终密钥流的安全性和稳定性,提高密钥流的抗攻击能力;采用两个同余发生器对种子密钥进行扩充,提高密钥流生成效率,且将同余发生器的运算函数由现有技术中的一次函数改为二次函数,加大反推原函数的难度,提高安全性。
附图说明
图1为本发明实施例提供的密钥流生成方法的流程示意图;
图2为本发明实施例提供的密钥流生成装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
参见图1,是本发明实施例提供的密钥流生成方法的流程示意图,所述方法包括:
S1、获取初始密钥。
本实施例中,通信双方经协商获取的密钥为初始密钥K0,初始密钥K0为二进制随机序列,例如初始密钥K0可以是长度为1024比特的0、1随机序列。
S2、对所述初始密钥进行后处理,获得种子密钥。
本实施例中,后处理过程的目的在于提高初始密钥K0的随机性,减少其相关性。随机性的提取是数据后处理的实际操作阶段,其实现方式有很多种,例如异或处理、差分处理、哈希函数等。
具体地,步骤S2包括:
对所述初始密钥进行多次差分异或处理;
对处理后的初始密钥进行哈希映射,获得所述种子密钥。
本实施例中,对初始密钥K0进行多次差分异或处理,使处理后的初始密钥K0中的0、1的比例各趋于一半。然后对处理后的初始密钥K0进行哈希映射,例如SHA-512算法,筛选出窃听者可能获知的信息,从而增强其随机性,获得种子密钥K1。
其中,异或处理是最为简单的一种后处理手段,异或处理是将两路互相独立、长度相等的初始随机序列在对应位上进行异或运算,得到的另一路等长的随机序列作为最终的随机序列。异或操作的真值表如表1所示。
表1
假设随机序列1中“0”的概率对1/2的偏离为Δα,则此序列中“0”出现的概率P1(0)=0.5+Δα,“1”出现的概率为P1(1)=0.5-Δα。同理随机序列2中“0”的概率对1/2的偏离为-Δβ,则此序列中“0”出现的概率P2(0)=0.5-Δβ,“1”出现的概率为P1(1)=0.5+Δβ,那么经过异或处理后,“0”和“1”对0.5的偏离为2ΔαΔβ,而Δα(Δβ)>2ΔαΔβ,即“0”和“1”的偏差缩小。
差分处理也是一种异或处理手段,所不同的是异或的对象是随机序列与其延迟序列,其工作原理如下:
设初始数据序列中“0”的概率为p,“1”的概率为1-p。将此序列与它的延迟序列进行1次异或,得到的结果是P(0)=p2+(1-p)2,P(1)=2p(1-p)。由此类推当进行了n次异或运算后, 由于|2p-1|<1,因此进行多次延迟异或后,“0”和“1”的概率相差无几。在实际使用中,还会常常需要改变延迟进行多次的独立差分处理,然后把各个差分处理的结果再进行异或运算来进一步提高数据的随机性。另一方面,异或运算不仅可以用来均衡数据序列中0和1的比例,它也可以优化随机序列的相关性。
哈希函数本质上是一种压缩映射,又被称为单向散列函数。它可以把任意长度输入,通过散列算法变换成固定长度的输出,即Y=H(X),X的长度是任意的(一般来说要大于Y的长度),而Y的长度是固定的。哈希函数具有下面三个特性:
1.随机性,即输出Y是服从均匀分布的。
2.单向性,由输入X推出输出Y是方便并且快速的,但是反过来由Y推出X是不可行的。
3.不能有效找到不同的X1和X2,使H(X1)=H(X2)。
通信双方从一个部分保密的比特串中提取一个高度保密的比特串的方法也可实现保密增强。通信双方通过一些哈希映射对窃听者所获得的信息进行了大量消除。
进一步地,所述对所述初始密钥进行多次差分异或处理,具体包括:
将所述初始密钥分别移动不同位数,且每移动一次获得相应的差分密钥;
将所述初始密钥依次与每一差分密钥进行异或处理,使处理后的初始密钥中的0和1的个数相同。
例如,先将初始密钥K0分别向右移动2、3、5位,得到对应的差分密钥K01、K02、K03。进而,将初始密钥K0依次与差分密钥K01、K02、K03按位异或,序列长度不变,且处理后的初始密钥中的0、1的占比趋于0.5。长度为1024比特的初始密钥K0经过后处理后,变成长度为512比特的种子密钥K1。
S3、对所述种子密钥进行扩充,获得扩充密钥。
具体地,步骤S3包括:
对所述种子密钥进行分段,将每段种子密钥由二进制转换为十进制;
依次将转换后的每段种子密钥输入至组合同余发生器,并输出相应的随机数列作为子扩充密钥;
将所有子扩充密钥进行合并,获得所述扩充密钥。
本实施例中,先对种子密钥K1进行分段,例如,将种子密钥K1分为32段密钥,再将每段种子密钥转换为十进制,并将十进制的种子密钥输入至组合同余发生器,获得扩充密钥。
进一步地,所述组合同余发生器包括第一同余发生器和第二同余发生器,转换后的每段种子密钥包括第一子密钥和第二子密钥;
所述依次将转换后的每段种子密钥输入至组合同余发生器,并输出相应的随机数列作为子扩充密钥,具体包括:
每转换一段种子密钥,将所述一段种子密钥的第一子密钥输入至所述第一同余发生器,依次输出k个随机数,并将所述k个随机数按顺序存放至矢量T中,T=(t1,t2,…,tk);
将所述一段种子密钥的第二子密钥输入至所述第二同余发生器,并依次输出N个随机整数j;
基于所述N个随机整数j依次从矢量T中获取随机数,并将获取的随机数组成随机数列,作为所述一段种子密钥的子扩充密钥,1≤j≤k。
进一步地,所述基于所述N个随机整数j依次从矢量T中获取随机数,并将获取的随机数组成随机数列,作为所述一段种子密钥的子扩充密钥,具体包括:
在输出第n个随机整数j时,令xn=tj,并采用所述第一同余发生器产生一个随机数y,将矢量T中的tj更新为y,1≤n≤N;
将随机数列{x1,…,xn}作为所述一段种子密钥的子扩充密钥。
需要说明的是,每段种子密钥分为两个子密钥,即第一子密钥和第二子密钥,分别输入至两个不同的同余发生器中。第一同余发生器基于输入的第一子密钥,产生k个随机数,且k个随机数被顺序地存放在矢量T中,T=(t1,t2,…,tk)中,即t1,t2,…,tk为第一同余发生器产生的k个随机数。此时,令n=1;第二同余发生器基于输入的第二子密钥产生一个随机整数j,令xn=tj;然后用第一同余发生器产生一个随机数y,令tj=y:置n=n+1,并使第二同余发生器产生另一个随机整数j,以重复上述步骤,获得随机数列{x1,…,xn}。
具体地,所述第一同余发生器和所述第二同余发生器中的运算函数为:
其中,X0为第一子密钥或第二子密钥,Xi-1为输入数据,Xi为输出数据,a为乘数,b为增量,c为模量。
例如,种子密钥K1分为32段密钥,每段种子密钥中的第一子密钥为11比特数据,第二子密钥为5比特数据,将每段种子密钥转换为十进制数据。
先以第一同余发生器中的运算函数进行迭代运算, 其中,X0为第一子密钥,c1取值231,a1取值为314159269,b1取值为453806245。输出的128个随机数被顺序地存放在矢量T=(t1,t2,…,t128)中。进而,以第二同余发生器中的运算函数进行运算,产生一个随机整数j,1≤j≤128。其中,c2取128,a2取29,b2取35。令xn=tj,然后用第一同余发生器产生一个随机数y,令tj=y,n=n+1;每一次同余发生器的种子皆为上一次同余发生器产生的数。重复上述步骤4096次,得长度为4096bit的随机数列{x1,…,xn},即为子扩充密钥。
进一步地,所述将所有子扩充密钥进行合并,获得所述扩充密钥,具体包括:
将每一子扩充密钥由十进制转换为二进制,并选取转换后的所有子扩充密钥的低位数据进行合并,获得所述扩充密钥。
例如,先将每一子扩充密钥转换为二进制数据,选择每一子扩充密钥的16个低位数据进行存储合并,获得32×16×4096=2097152比特的扩充密钥K2。
S4、提取所述扩充密钥中的一半数据,作为最终的运行密钥流。
具体地,所述扩充密钥为二进制序列,步骤S4包括:
提取所述扩充密钥中的奇数位或偶数位的序列,作为最终的运行密钥流。
例如,提取扩充密钥中的奇数位或偶数位的序列,作为最终的运行密钥流K3,进一步降低短时相关性,增强随机性,最终的运行密钥流K3的长度为1048576比特。
本发明提供的密钥流生成方法,能够利用保密增强技术,对初始协商所得初始密钥进行后处理,改良密钥随机性后得到种子密钥,再根据种子密钥大小和目标密钥长度匹配选择随机生成函数及参数,充分利用每次迭代得到的随机性好的低位数据,再用第二同余发生器打乱第一同余发生器生成的数,得到扩充密钥,同余发生器将一次函数改为二次函数,加大了反推原函数的难度,提高了安全性,最后取奇数位或偶数位,得到最终的运行密钥,进一步降低短时相关性、增强随机性,从而提高了运行密钥流的安全性和稳定性,促进各类加密通信系统的广泛应用。
相应地,本发明还提供一种密钥流生成装置,能够实现上述密钥流生成方法的所有流程。
参见图2,是本发明实施例提供的密钥流生成装置的结构示意图,该装置包括:
获取模块1,用于获取初始密钥;
后处理模块2,用于对所述初始密钥进行后处理,获得种子密钥;
扩充模块3,用于对所述种子密钥进行扩充,获得扩充密钥;以及,
提取模块4,用于提取所述扩充密钥中的一半数据,作为最终的运行密钥流。
本发明提供的密钥流生成装置,能够利用保密增强技术,对初始协商所得初始密钥进行后处理,改良密钥随机性后得到种子密钥,再根据种子密钥大小和目标密钥长度匹配选择随机生成函数及参数,充分利用每次迭代得到的随机性好的低位数据,再用第二同余发生器打乱第一同余发生器生成的数,得到扩充密钥,同余发生器将一次函数改为二次函数,加大了反推原函数的难度,提高了安全性,最后取奇数位或偶数位,得到最终的运行密钥,进一步降低短时相关性、增强随机性,从而提高了运行密钥流的安全性和稳定性,促进各类加密通信系统的广泛应用。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。