專利名稱::流密碼生成方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)字安全認證技術(shù)。
背景技術(shù):
:流密碼屬于對稱密碼體系的一種。由于它實現(xiàn)簡單,加密速度快,以及沒有或只有有限的錯誤傳播,使流密碼在實際應(yīng)用中,特別是在專用和機密機構(gòu)中仍保持著優(yōu)勢。它的主要原理是通過有限個狀態(tài)數(shù)產(chǎn)生性能優(yōu)良的偽隨機序列,使用該序列對明文數(shù)據(jù)流進行加密(逐比特加密)得到密文數(shù)據(jù)流,流密碼算法的好壞主要取決于最終輸出的密鑰流序列的隨機性能以及此序列的周期大小。隨著數(shù)字化技術(shù)、網(wǎng)絡(luò)技術(shù)、計算機技術(shù)、多媒體技術(shù)、存儲技術(shù)的發(fā)展,對數(shù)字內(nèi)容的復(fù)制、修改、傳播變得非常容易。現(xiàn)實中的各種信息(語音,圖像,文本,報文等)都可以經(jīng)過量化編碼等技術(shù)轉(zhuǎn)化成二進制數(shù)字序列,因此數(shù)字內(nèi)容安全傳輸實現(xiàn)的過程中可以二進制的方式進行讀寫和運算。在使用流密碼算法實現(xiàn)安全傳輸時,由于明文序列與密鑰流序列逐比特加/解密,為了達到良好的安全性,密鑰流序列一定要具有與明文序列相當(dāng)?shù)拈L度。但這樣的密鑰流序列難于分配和管理,因此,流密碼系統(tǒng)設(shè)計的主要任務(wù)就是研究如何用一個或幾個較短的密鑰輸入生成一個足夠長的安全的密鑰流序列。實際上的密鑰流序列都是由密鑰空間中較短的密鑰經(jīng)過某些具有特殊性質(zhì)的變換形成的,如一些典型的非線性置換S盒子等。如國外的HDCP(寬帶數(shù)字內(nèi)容保護)系統(tǒng),用于保護HDMI和DVI接口傳輸?shù)臄?shù)字內(nèi)容,其中使用的加密技術(shù)為流密碼加密技術(shù)。用于HDCP保護的流密碼生成機制包含生成步驟、混淆步驟、輸出步驟,生成步驟對初始化向量進行初步置亂,混淆步驟對初步置亂后的輸出結(jié)果做進一步的非可逆性變換,輸出步驟對混淆處理的結(jié)果進行重新組合再輸出。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是,提供一種適合實際高速數(shù)字內(nèi)容安全傳輸應(yīng)用的流密碼生成方法。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,流密碼生成方法,包括生成步驟、混淆步驟、輸出步驟,所述混淆步驟采用2個4進4出的S盒子進行,混淆步驟具體為a、將混淆步驟的輸入結(jié)果與反饋回的變換R進行線性壓縮,得到變換結(jié)果RA;b、對變換結(jié)果RA進行非可逆線性變換,得到變換結(jié)果I;c、將變換結(jié)果I以4bit為一組輸入所述S盒子,對于輸入的4bit數(shù)組,以2bit對應(yīng)S盒子的行,另2bit對應(yīng)S盒子的列,査找輸入數(shù)組對應(yīng)的4bit輸出,得到變換結(jié)果R,并反饋回步驟a;d、將變換結(jié)果R通過兩次査表運算,得到變換結(jié)果S,將變換結(jié)果S作為輸出步驟的輸入所述生成步驟采用三個線性移位寄存器對初始化向量進行變換后得到變換結(jié)果V,將變換結(jié)果V作為混淆步驟的輸入結(jié)果?;蛘?,還包括選擇步驟,選擇步驟在生成步驟之后,混淆步驟之前;所述選擇步驟采用列表方式從變換結(jié)果V中抽取固定比特數(shù)作為選擇步驟的輸出結(jié)果,并將該選擇步驟的輸出結(jié)果作為混淆步驟的輸入結(jié)果。本發(fā)明的有益效果是,具有良好隨機性,并適合硬件實現(xiàn)。圖l為LFSRa結(jié)構(gòu)圖2為LFSRf3結(jié)構(gòu)圖3為LFSRy結(jié)構(gòu)圖4為變換R中變換RB的變換流程;圖5為實施例流密碼生成流程圖。具體實施例方式主要分為兩個部分描述本實施例流密碼生成方法以及輸出密鑰流的隨機性檢測。(一)流密碼生成方法流密碼生成器主要由以下4個模塊構(gòu)成(1)生成模塊密碼生成器的驅(qū)動部分;(2)選擇模塊給出了三個選擇函數(shù)D、E、F;(3)混淆模塊,這個模塊是流密碼生成器的最主要部分,對密鑰流進一步的混淆;(4)輸出模塊,經(jīng)過一系列組合變換輸出最后的32bit密鑰流;依次介紹流密碼生成器的4個模塊與流密碼生成流程,如圖5所示(1)生成模塊執(zhí)行生成步驟,此模塊是流密碼生成器的驅(qū)動部分,一共有3個線性移位寄存器LFSR(LFSRci、LFSR{3、LFSRy)以及相應(yīng)的三個數(shù)學(xué)變換(L,K,N),3個線性移位寄存器LFSR對應(yīng)的生成多項式如下表<table>tableseeoriginaldocumentpage5</column></row><table>3個LFSR各自對應(yīng)的生成多項式,其中LFSRa以字節(jié)為單位構(gòu)成,每一個移位寄存器有8位,一共有64位。LFSRP和LFSRy以比特為單位構(gòu)成,LFSRP共有35位,LFSRy共有31位。流密碼生成器在具體使用中需要256bit的初始化向量IV輸入。隨機選擇其中的128bit作為線性反饋移位寄存器(LFSRa、LFSRf3、LFSRy)的初始化密鑰輸入,其中LFSRf3的最高兩位輸入0,其余的128bit作為初始化向量IV分為16段IV0…IV15,每段8bit分6步循環(huán)輸入到三個變化L、K、n中第k次輸入(k^,1,2,3,4,5):*IV3k+2輸入到變換L中去;*IV3k+i輸入到變換K中去;*IV3k輸入到變換N中去;當(dāng)k二5時,L和K沒有IV輸入,最后8比特的IV僅輸入到變換n中去。初始化完成后,為了使系統(tǒng)的狀態(tài)充分混合,系統(tǒng)在無任何輸入和輸出的情況下封閉循環(huán)34步。在封閉循環(huán)之后,系統(tǒng)在下一個周期進入密鑰流輸出階段。下面分別給出變換L、K、n的過程a)變換L:如圖1所示,線性反饋移位寄存器LFSRa在每次脈沖時為左端貢獻8位(比特)輸入,同時右移8位,LFSRa的左端輸入由變換L提供,變換L的輸出為在初始化內(nèi)部狀態(tài)時[《>>>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更新為在初始化內(nèi)部狀態(tài)吋^4&AAu^y^y^A7④^^+i,左二o…5其它階段不變A4A3A2AiA。A^AsA7其中,Pi代表LFSRe中的第i位。c)變換N線性反饋移位寄存器LFSRy在每次脈沖時為左端貢獻l位輸入,同時右移l位;在此之后,LFSRy左端的8個比特更新為*在初始化內(nèi)部狀態(tài)吋y30&9&7K6y25&4^30/r3t,A=0…5*其它階段不變"30y";^sr27;^6;^5;^4;^3其中,Yi代表LFSRy中的第i位。變換K和變換N,只在初始化階段存在,輸出密鑰流時不存在。經(jīng)過變換L、K、N后從LFSRa、LFSRP、LFSRy中的數(shù)據(jù)共130bit,作為生成步驟的變換結(jié)果V,輸入至選擇模塊。(2)選擇模塊執(zhí)行選擇步驟在初始化完成(6步的IV輸入,34步的封閉循環(huán))后,分別根據(jù)列表D,E,F(xiàn)從LFSRa、LFSRf3、LFSRy中分別抽取32比特、24比特、16比特的數(shù)據(jù)。列表D從LFSRa中抽取的4字節(jié)(32比特)記為D3D2D1D0,如下表<table>tableseeoriginaldocumentpage6</column></row><table>列表F從LFSRY中抽取的1S比待記為FIFO,如下表:<table>tableseeoriginaldocumentpage7</column></row><table>(3)混淆模塊執(zhí)行混淆步驟,這個模塊是流密碼生成器的最主要部分,利用了兩個變換R和S,其中用了四進四出的S盒子、非線性變換等,對密鑰流進一步的混淆。下面分別介紹變換R和S:a)變換R變換R分為兩個主要模塊,第一個模塊RA和第二個模塊RB,主要運算如下第一個模塊RA,主要功能是把來自列表D(32比特),E(24比特)和F(16比特)以及變換R的24比特輸出(第一次進行此變換時,當(dāng)變換R沒有輸出的情況下,默認R的輸出為0)共96比特,線性壓縮變換為適于變換RB的24比特輸入,字節(jié)格式記為RAO,RA1,RA2(RA0,RA1,RAM充稱為變化結(jié)果RA),規(guī)則夢^<formula>formulaseeoriginaldocumentpage7</formula>變換R的第二個模塊RB,主要功能是對變換結(jié)果RA得到的24比特進一步置亂、混淆,提高密鑰流生成器的非線性復(fù)雜度。RB變換流程如圖4,RA0,RA1,RA2同時輸入非可逆線性變換I中,非可逆線性變換I中包含兩個變換矩陣IO和Il,經(jīng)過這兩個變換矩陣后輸出后,賦值于變換結(jié)果R1、R2;同時RA2分為高4bit與低4bit后,進入2個四進四出的S盒子,將S盒子的輸出賦值于變換結(jié)果RO;變換結(jié)果R0、Rl、R2組成變換結(jié)果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的二維數(shù)組,對于輸入的4bit,從左向右的順序,前面的2bit對應(yīng)數(shù)組的行,后面的2bit對應(yīng)數(shù)組的列,此時査找到的元素即為相應(yīng)的4bit輸出。以盒子S1為例,輸入IOOI,那么査找2行1列的元素,得到相應(yīng)的輸出0x8,g卩1000。存儲的2維數(shù)組的行數(shù)與列數(shù)都是從O開始的。經(jīng)過上述變換,最后輸出24比特的變換結(jié)果R:R2R1R0。b)壓縮變換S變換S把列表E的24比特輸入變換為16比特輸出變換S使用兩個査表運算(表A,表B),高位16比特經(jīng)過一個査表A輸出8比特成為變換S最終輸出的高8位;低8位比特在另外兩比特(變換S輸入的高位2比特,e23e22)的控制下,輸出8比特,成為變換S最終輸出的低8位。表A如下<table>tableseeoriginaldocumentpage9</column></row><table>變換S對E5,E4,E3,E2査表A進行運算,運算結(jié)果記為S7,S6,S5,S4共8比特放在變換S最終輸出結(jié)果的高8位。變化S對E1,E0依據(jù)e23e22査表B進行運算,運算結(jié)果記為S3,S2,Sl,S0共8比特放在變化S最終輸出結(jié)果的低8位。最終得到變換結(jié)果S:S7S6S5S4S3S2S1S0,共16比特。(4)輸出模塊執(zhí)行組合輸出步驟密鑰流輸出變換T分為兩個階段,如下表所示<table>tableseeoriginaldocumentpage9</column></row><table>第一階段,即流密碼的初始化階段,變換T的32比特輸出中的24比特作為變換L的一部分輸入;第二階段,即流密碼的密鑰流生成階段,變換T的輸出(32比特)就是該系統(tǒng)輸出的密鑰流t3l…t3工。(二)密鑰流的隨機性檢測針對流密碼生成器最后輸出的密鑰流所作的隨機性檢測,主要是針對實際應(yīng)用比較關(guān)注的一些指標進行統(tǒng)計檢測,具體的檢測指標如下a、頻數(shù)檢驗(F-檢驗)在序列截斷zn中"0"、"1"的個數(shù)分別記為I1Q、m。檢驗統(tǒng)計量'\2,2、J—通過準則在0.05的顯著性水平下,當(dāng),21<3.841時,則zn通過頻數(shù)檢驗。b、序偶檢驗(S-檢驗)對n比特序列截段z11,nij表示n比特樣本序列zn中相鄰呈現(xiàn)(i,j)型序偶的次數(shù)。檢驗統(tǒng)計量((i,.i)型序偶即是(0,0),(0,1),(1,0),(1,1))<formula>formulaseeoriginaldocumentpage10</formula>當(dāng)£(2)<5.991時,則zn通過序偶檢驗c通過準則在0.05的顯著性水平下,當(dāng)-c、撲克檢驗(P-檢驗)將n比特樣本序列zn劃分為長m的分組,每一個分組對應(yīng)著集合{0,1,……,2""-1}中的-個元素。力為"i"在m長分組序列中出現(xiàn)的頻次。則<formula>formulaseeoriginaldocumentpage10</formula>這里L(fēng)^」為不大于^的最大整數(shù)。檢驗統(tǒng)計j2/、之"^2<formula>formulaseeoriginaldocumentpage10</formula>通過準則在0.05的顯著性水平下:取hp4,則當(dāng)7:(2"2-1)〈24.996吋,f通過撲克檢驗;0<t《n-l。對取hf8,則當(dāng)/"2"5—1)<292.26吋,f通過撲克檢驗。d、自相關(guān)檢驗(A-檢驗)對于n比特長序列截段z11,作變換U^2102^,""'序列U^作頻數(shù)檢驗,若u^通過頻數(shù)檢驗,則,通過自相關(guān)檢驗(在檢驗中我們?nèi)=1,2,8,16,32,64,128.e、游程檢驗(R-檢驗)(1)游程總數(shù)檢驗設(shè)序列zn的長度為n比特,R為序列中游程的總數(shù)。檢驗統(tǒng)計ii-二通過準則在0.05的顯著性水平下,當(dāng)|11|<1.96時,則zn通過游程總數(shù)檢驗。(2)游程總體分布檢驗設(shè)序列zn的長度為n比特,R為序列中游程的總數(shù)。r為不小于[log2ii]的某一個整數(shù),通常取F[log勸]。iii表示i長游程的個數(shù),i=l,2,,r-1。nr表示游程長度不小于r的游程巧=丄'i=l'2'......'r-1。取Pr二;數(shù)。令2;2"。檢驗統(tǒng)計量水通過準則在0.05的顯著性水平下取1=14,則當(dāng)/>-1)<23.685時,zn通過游程總體分布檢驗;取^=20,則當(dāng);^一-1)<30.144時,Zn通過游程總體分布檢驗;取r二26,則當(dāng);^〔^-1)<37.652時,zn通過游程總體分布檢驗。對實際應(yīng)用,有如下的規(guī)定隨機截取檢測所需大小的密鑰流,針對每一種檢測指標,每1000K大小的密鑰流作為一組輸入,檢測6組這樣的隨機輸入,最后計算失敗的百分比,失敗率在5%以下認為非常好;5%-—10%之間認為通過;10%以上認為失敗。本實施例的密鑰流隨機性檢測結(jié)果見下表<table>tableseeoriginaldocumentpage12</column></row><table>可以計算密鑰流檢測結(jié)果平均失敗率為4.7335%表明本流密碼產(chǎn)生方法具備非常好的特性。權(quán)利要求1.流密碼生成方法,包括生成步驟、混淆步驟、輸出步驟,其特征在于,所述混淆步驟采用2個4進4出的S盒子進行,混淆步驟具體為a、將混淆步驟的輸入結(jié)果與反饋回的變換結(jié)果R進行線性壓縮,得到變換結(jié)果RA;如無反饋回的變換結(jié)果R輸入,則默認反饋回的變換結(jié)果R為0;b、對變換結(jié)果RA進行非可逆線性變換,得到變換結(jié)果I;c、將變換結(jié)果I以4bit為一組輸入所述S盒子,對于輸入的4bit數(shù)組,以2bit對應(yīng)S盒子的行,另2bit對應(yīng)S盒子的列,查找輸入數(shù)組對應(yīng)的4bit輸出,得到變換結(jié)果R,并反饋回步驟a;d、將變換結(jié)果R通過兩次查表運算,得到變換結(jié)果S,將變換結(jié)果S作為輸出步驟的輸入。2.如權(quán)利要求l所述流密碼生成方法,其特征在于,所述生成步驟采用三個線性移位寄存器對初始化向量進行變換后得到變換結(jié)果V,將變換結(jié)果V作為混淆步驟的輸入結(jié)果。3.如權(quán)利要求l所述流密碼生成方法,其特征在于,還包括選擇步驟,選擇步驟在生成步驟之后,混淆步驟之前;所述選擇步驟采用列表方式從變換結(jié)果V中抽取固定比特數(shù)作為選擇步驟的輸出結(jié)果,并將該選擇步驟的輸出結(jié)果作為混淆步驟的輸入結(jié)果。全文摘要本發(fā)明涉及數(shù)字安全認證技術(shù),提供一種適合實際高速數(shù)字內(nèi)容安全傳輸應(yīng)用的流密碼生成方法,包括生成步驟、混淆步驟、輸出步驟,混淆步驟采用2個4進4出的S盒子進行,混淆步驟具體為a.將混淆步驟的輸入結(jié)果與反饋回的變換R進行線性壓縮,得到變換結(jié)果RA;b.對變換結(jié)果RA進行非可逆線性變換,得到變換結(jié)果I;c.將變換結(jié)果I以4bit為一組輸入S盒子,對于輸入的4bit數(shù)組以2bit對應(yīng)S盒子行,另2bit對應(yīng)S盒子列,查找輸入數(shù)組對應(yīng)的4bit輸出,得到變換結(jié)果R,并反饋回步驟a;d.將變換結(jié)果R通過兩次查表運算,得到變換結(jié)果S,將變換結(jié)果S作為輸出步驟的輸入。本發(fā)明具有良好隨機性,適合硬件實現(xiàn)。文檔編號H04L9/28GK101355423SQ20081030445公開日2009年1月28日申請日期2008年9月10日優(yōu)先權(quán)日2008年9月10日發(fā)明者劉賢洪,康紅娟,勇蔡申請人:四川長虹電器股份有限公司