专利名称::流密码生成方法
技术领域:
:本发明涉及数字安全认证技术。
背景技术:
:流密码属于对称密码体系的一种。由于它实现简单,加密速度快,以及没有或只有有限的错误传播,使流密码在实际应用中,特别是在专用和机密机构中仍保持着优势。它的主要原理是通过有限个状态数产生性能优良的伪随机序列,使用该序列对明文数据流进行加密(逐比特加密)得到密文数据流,流密码算法的好坏主要取决于最终输出的密钥流序列的随机性能以及此序列的周期大小。随着数字化技术、网络技术、计算机技术、多媒体技术、存储技术的发展,对数字内容的复制、修改、传播变得非常容易。现实中的各种信息(语音,图像,文本,报文等)都可以经过量化编码等技术转化成二进制数字序列,因此数字内容安全传输实现的过程中可以二进制的方式进行读写和运算。在使用流密码算法实现安全传输时,由于明文序列与密钥流序列逐比特加/解密,为了达到良好的安全性,密钥流序列一定要具有与明文序列相当的长度。但这样的密钥流序列难于分配和管理,因此,流密码系统设计的主要任务就是研究如何用一个或几个较短的密钥输入生成一个足够长的安全的密钥流序列。实际上的密钥流序列都是由密钥空间中较短的密钥经过某些具有特殊性质的变换形成的,如一些典型的非线性置换S盒子等。如国外的HDCP(宽带数字内容保护)系统,用于保护HDMI和DVI接口传输的数字内容,其中使用的加密技术为流密码加密技术。用于HDCP保护的流密码生成机制包含生成步骤、混淆步骤、输出步骤,生成步骤对初始化向量进行初步置乱,混淆步骤对初步置乱后的输出结果做进一步的非可逆性变换,输出步骤对混淆处理的结果进行重新组合再输出。
发明内容本发明所要解决的技术问题是,提供一种适合实际高速数字内容安全传输应用的流密码生成方法。本发明为解决上述技术问题所采用的技术方案是,流密码生成方法,包括生成步骤、混淆步骤、输出步骤,所述混淆步骤采用2个4进4出的S盒子进行,混淆步骤具体为a、将混淆步骤的输入结果与反馈回的变换R进行线性压縮,得到变换结果RA;b、对变换结果RA进行非可逆线性变换,得到变换结果I;c、将变换结果I以4bit为一组输入所述S盒子,对于输入的4bit数组,以2bit对应S盒子的行,另2bit对应S盒子的列,査找输入数组对应的4bit输出,得到变换结果R,并反馈回步骤a;d、将变换结果R通过两次査表运算,得到变换结果S,将变换结果S作为输出步骤的输入所述生成步骤采用三个线性移位寄存器对初始化向量进行变换后得到变换结果V,将变换结果V作为混淆步骤的输入结果。或者,还包括选择步骤,选择步骤在生成步骤之后,混淆步骤之前;所述选择步骤采用列表方式从变换结果V中抽取固定比特数作为选择步骤的输出结果,并将该选择步骤的输出结果作为混淆步骤的输入结果。本发明的有益效果是,具有良好随机性,并适合硬件实现。图l为LFSRa结构图2为LFSRf3结构图3为LFSRy结构图4为变换R中变换RB的变换流程;图5为实施例流密码生成流程图。具体实施例方式主要分为两个部分描述本实施例流密码生成方法以及输出密钥流的随机性检测。(一)流密码生成方法流密码生成器主要由以下4个模块构成(1)生成模块密码生成器的驱动部分;(2)选择模块给出了三个选择函数D、E、F;(3)混淆模块,这个模块是流密码生成器的最主要部分,对密钥流进一步的混淆;(4)输出模块,经过一系列组合变换输出最后的32bit密钥流;依次介绍流密码生成器的4个模块与流密码生成流程,如图5所示(1)生成模块执行生成步骤,此模块是流密码生成器的驱动部分,一共有3个线性移位寄存器LFSR(LFSRci、LFSR{3、LFSRy)以及相应的三个数学变换(L,K,N),3个线性移位寄存器LFSR对应的生成多项式如下表<table>tableseeoriginaldocumentpage5</column></row><table>3个LFSR各自对应的生成多项式,其中LFSRa以字节为单位构成,每一个移位寄存器有8位,一共有64位。LFSRP和LFSRy以比特为单位构成,LFSRP共有35位,LFSRy共有31位。流密码生成器在具体使用中需要256bit的初始化向量IV输入。随机选择其中的128bit作为线性反馈移位寄存器(LFSRa、LFSRf3、LFSRy)的初始化密钥输入,其中LFSRf3的最高两位输入0,其余的128bit作为初始化向量IV分为16段IV0…IV15,每段8bit分6步循环输入到三个变化L、K、n中第k次输入(k^,1,2,3,4,5):*IV3k+2输入到变换L中去;*IV3k+i输入到变换K中去;*IV3k输入到变换N中去;当k二5时,L和K没有IV输入,最后8比特的IV仅输入到变换n中去。初始化完成后,为了使系统的状态充分混合,系统在无任何输入和输出的情况下封闭循环34步。在封闭循环之后,系统在下一个周期进入密钥流输出阶段。下面分别给出变换L、K、n的过程a)变换L:如图1所示,线性反馈移位寄存器LFSRa在每次脉冲时为左端贡献8位(比特)输入,同时右移8位,LFSRa的左端输入由变换L提供,变换L的输出为在初始化内部状态时[《>>>3)eroe(n>2)r2e/^+2,ho,..:5在初始化阶段的封闭运行时[(/>3)了0(Tl>>>2)了2■其它阶段其中,T0、Tl、T2是变换T的32比特输出中的低24比特,IV是初始化向量。b)变换K如图2所示,线性反馈移位寄存器LFSRe在每次脉冲时为左端贡献l位输入,同时右移l位;在此之后,LFSRf3左端的8个比特由变换K更新为在初始化内部状态吋^4&AAu^y^y^A7④^^+i,左二o…5其它阶段不变A4A3A2AiA。A^AsA7其中,Pi代表LFSRe中的第i位。c)变换N线性反馈移位寄存器LFSRy在每次脉冲时为左端贡献l位输入,同时右移l位;在此之后,LFSRy左端的8个比特更新为*在初始化内部状态吋y30&9&7K6y25&4^30/r3t,A=0…5*其它阶段不变"30y";^sr27;^6;^5;^4;^3其中,Yi代表LFSRy中的第i位。变换K和变换N,只在初始化阶段存在,输出密钥流时不存在。经过变换L、K、N后从LFSRa、LFSRP、LFSRy中的数据共130bit,作为生成步骤的变换结果V,输入至选择模块。(2)选择模块执行选择步骤在初始化完成(6步的IV输入,34步的封闭循环)后,分别根据列表D,E,F从LFSRa、LFSRf3、LFSRy中分别抽取32比特、24比特、16比特的数据。列表D从LFSRa中抽取的4字节(32比特)记为D3D2D1D0,如下表<table>tableseeoriginaldocumentpage6</column></row><table>列表F从LFSRY中抽取的1S比待记为FIFO,如下表:<table>tableseeoriginaldocumentpage7</column></row><table>(3)混淆模块执行混淆步骤,这个模块是流密码生成器的最主要部分,利用了两个变换R和S,其中用了四进四出的S盒子、非线性变换等,对密钥流进一步的混淆。下面分别介绍变换R和S:a)变换R变换R分为两个主要模块,第一个模块RA和第二个模块RB,主要运算如下第一个模块RA,主要功能是把来自列表D(32比特),E(24比特)和F(16比特)以及变换R的24比特输出(第一次进行此变换时,当变换R没有输出的情况下,默认R的输出为0)共96比特,线性压縮变换为适于变换RB的24比特输入,字节格式记为RAO,RA1,RA2(RA0,RA1,RAM充称为变化结果RA),规则梦^<formula>formulaseeoriginaldocumentpage7</formula>变换R的第二个模块RB,主要功能是对变换结果RA得到的24比特进一步置乱、混淆,提高密钥流生成器的非线性复杂度。RB变换流程如图4,RA0,RA1,RA2同时输入非可逆线性变换I中,非可逆线性变换I中包含两个变换矩阵IO和Il,经过这两个变换矩阵后输出后,赋值于变换结果R1、R2;同时RA2分为高4bit与低4bit后,进入2个四进四出的S盒子,将S盒子的输出赋值于变换结果RO;变换结果R0、Rl、R2组成变换结果R作为输出模块的输入,与第一模块RA的下一次输入。变换矩阵I0和I1如下表所示<table>tableseeoriginaldocumentpage7</column></row><table>接上表<table>tableseeoriginaldocumentpage8</column></row><table>输入I的24比特分成两个12比特,分别记为iO和il,如下<table>tableseeoriginaldocumentpage8</column></row><table>RB变换中的S盒变换S1、S2分别是两个4进4出的盒子,如下表所示,其中左表为Sl盒子,右表为S2盒子<table>tableseeoriginaldocumentpage8</column></row><table>具体的査盒子方法如下将S盒看作4X4的二维数组,对于输入的4bit,从左向右的顺序,前面的2bit对应数组的行,后面的2bit对应数组的列,此时査找到的元素即为相应的4bit输出。以盒子S1为例,输入IOOI,那么査找2行1列的元素,得到相应的输出0x8,g卩1000。存储的2维数组的行数与列数都是从O开始的。经过上述变换,最后输出24比特的变换结果R:R2R1R0。b)压縮变换S变换S把列表E的24比特输入变换为16比特输出变换S使用两个査表运算(表A,表B),高位16比特经过一个査表A输出8比特成为变换S最终输出的高8位;低8位比特在另外两比特(变换S输入的高位2比特,e23e22)的控制下,输出8比特,成为变换S最终输出的低8位。表A如下<table>tableseeoriginaldocumentpage9</column></row><table>变换S对E5,E4,E3,E2査表A进行运算,运算结果记为S7,S6,S5,S4共8比特放在变换S最终输出结果的高8位。变化S对E1,E0依据e23e22査表B进行运算,运算结果记为S3,S2,Sl,S0共8比特放在变化S最终输出结果的低8位。最终得到变换结果S:S7S6S5S4S3S2S1S0,共16比特。(4)输出模块执行组合输出步骤密钥流输出变换T分为两个阶段,如下表所示<table>tableseeoriginaldocumentpage9</column></row><table>第一阶段,即流密码的初始化阶段,变换T的32比特输出中的24比特作为变换L的一部分输入;第二阶段,即流密码的密钥流生成阶段,变换T的输出(32比特)就是该系统输出的密钥流t3l…t3工。(二)密钥流的随机性检测针对流密码生成器最后输出的密钥流所作的随机性检测,主要是针对实际应用比较关注的一些指标进行统计检测,具体的检测指标如下a、频数检验(F-检验)在序列截断zn中"0"、"1"的个数分别记为I1Q、m。检验统计量'\2,2、J—通过准则在0.05的显著性水平下,当,21<3.841时,则zn通过频数检验。b、序偶检验(S-检验)对n比特序列截段z11,nij表示n比特样本序列zn中相邻呈现(i,j)型序偶的次数。检验统计量((i,.i)型序偶即是(0,0),(0,1),(1,0),(1,1))<formula>formulaseeoriginaldocumentpage10</formula>当£(2)<5.991时,则zn通过序偶检验c通过准则在0.05的显著性水平下,当-c、扑克检验(P-检验)将n比特样本序列zn划分为长m的分组,每一个分组对应着集合{0,1,……,2""-1}中的-个元素。力为"i"在m长分组序列中出现的频次。则<formula>formulaseeoriginaldocumentpage10</formula>这里L^」为不大于^的最大整数。检验统计j2/、之"^2<formula>formulaseeoriginaldocumentpage10</formula>通过准则在0.05的显著性水平下:取hp4,则当7:(2"2-1)〈24.996吋,f通过扑克检验;0<t《n-l。对取hf8,则当/"2"5—1)<292.26吋,f通过扑克检验。d、自相关检验(A-检验)对于n比特长序列截段z11,作变换U^2102^,""'序列U^作频数检验,若u^通过频数检验,则,通过自相关检验(在检验中我们取^=1,2,8,16,32,64,128.e、游程检验(R-检验)(1)游程总数检验设序列zn的长度为n比特,R为序列中游程的总数。检验统计ii-二通过准则在0.05的显著性水平下,当|11|<1.96时,则zn通过游程总数检验。(2)游程总体分布检验设序列zn的长度为n比特,R为序列中游程的总数。r为不小于[log2ii]的某一个整数,通常取F[log劝]。iii表示i长游程的个数,i=l,2,,r-1。nr表示游程长度不小于r的游程巧=丄'i=l'2'......'r-1。取Pr二;数。令2;2"。检验统计量水通过准则在0.05的显著性水平下取1=14,则当/>-1)<23.685时,zn通过游程总体分布检验;取^=20,则当;^一-1)<30.144时,Zn通过游程总体分布检验;取r二26,则当;^〔^-1)<37.652时,zn通过游程总体分布检验。对实际应用,有如下的规定随机截取检测所需大小的密钥流,针对每一种检测指标,每1000K大小的密钥流作为一组输入,检测6组这样的随机输入,最后计算失败的百分比,失败率在5%以下认为非常好;5%-—10%之间认为通过;10%以上认为失败。本实施例的密钥流随机性检测结果见下表<table>tableseeoriginaldocumentpage12</column></row><table>可以计算密钥流检测结果平均失败率为4.7335%表明本流密码产生方法具备非常好的特性。权利要求1.流密码生成方法,包括生成步骤、混淆步骤、输出步骤,其特征在于,所述混淆步骤采用2个4进4出的S盒子进行,混淆步骤具体为a、将混淆步骤的输入结果与反馈回的变换结果R进行线性压缩,得到变换结果RA;如无反馈回的变换结果R输入,则默认反馈回的变换结果R为0;b、对变换结果RA进行非可逆线性变换,得到变换结果I;c、将变换结果I以4bit为一组输入所述S盒子,对于输入的4bit数组,以2bit对应S盒子的行,另2bit对应S盒子的列,查找输入数组对应的4bit输出,得到变换结果R,并反馈回步骤a;d、将变换结果R通过两次查表运算,得到变换结果S,将变换结果S作为输出步骤的输入。2.如权利要求l所述流密码生成方法,其特征在于,所述生成步骤采用三个线性移位寄存器对初始化向量进行变换后得到变换结果V,将变换结果V作为混淆步骤的输入结果。3.如权利要求l所述流密码生成方法,其特征在于,还包括选择步骤,选择步骤在生成步骤之后,混淆步骤之前;所述选择步骤采用列表方式从变换结果V中抽取固定比特数作为选择步骤的输出结果,并将该选择步骤的输出结果作为混淆步骤的输入结果。全文摘要本发明涉及数字安全认证技术,提供一种适合实际高速数字内容安全传输应用的流密码生成方法,包括生成步骤、混淆步骤、输出步骤,混淆步骤采用2个4进4出的S盒子进行,混淆步骤具体为a.将混淆步骤的输入结果与反馈回的变换R进行线性压缩,得到变换结果RA;b.对变换结果RA进行非可逆线性变换,得到变换结果I;c.将变换结果I以4bit为一组输入S盒子,对于输入的4bit数组以2bit对应S盒子行,另2bit对应S盒子列,查找输入数组对应的4bit输出,得到变换结果R,并反馈回步骤a;d.将变换结果R通过两次查表运算,得到变换结果S,将变换结果S作为输出步骤的输入。本发明具有良好随机性,适合硬件实现。文档编号H04L9/28GK101355423SQ20081030445公开日2009年1月28日申请日期2008年9月10日优先权日2008年9月10日发明者刘贤洪,康红娟,勇蔡申请人:四川长虹电器股份有限公司