專利名稱:用于隨機(jī)數(shù)和流密碼生成的小型密碼引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于鑒別和信息數(shù)據(jù)加擾的密碼引擎。
背景技術(shù):
許多密碼系統(tǒng)的安全性取決于不可預(yù)料的數(shù)值的生成,這些數(shù)值必須有足夠的規(guī)模并且是隨機(jī)的。線性反饋移位寄存器(LFSR)因其實(shí)現(xiàn)起來簡單并且有效而成為最普遍使用的流密碼生成器中的基本組成部件。然而,伴隨著LFSR的某些吸引人的特性產(chǎn)生了這些構(gòu)造中的許多構(gòu)造不能滿足良好的密碼強(qiáng)度的問題。特別是,LFSR固有的線性和代數(shù)結(jié)構(gòu)經(jīng)常是破譯這些密碼系統(tǒng)的基礎(chǔ)。可以很容易地獲得生成的多項(xiàng)式,而且生成一個(gè)具體序列的初始狀態(tài)將會(huì)產(chǎn)生許多可預(yù)知的序列。
為了避免此線性問題,采用一種其輸入取自移位寄存器的某些級(jí)以產(chǎn)生輸出的非線性濾波函數(shù)來打破原始序列的線性和代數(shù)結(jié)構(gòu)。采用非線性組合發(fā)生器形式的非線性濾波器是使這些結(jié)果更安全的必要因素。然而,這些濾波器中的大多數(shù)是基于若干個(gè)平行LFSR的輸出的非線性組合函數(shù)f設(shè)計(jì)的。
所采用的非線性函數(shù)f是一個(gè)固定函數(shù)。因此非線性函數(shù)f定義的映射是一對(duì)一的映射,而且對(duì)于加在f上的相同輸入,將獲得相同的輸出。如果在密鑰流和各個(gè)子發(fā)生器的輸出序列之間存在相關(guān)性,這種發(fā)生器則會(huì)遭到分離并破解的攻擊。
上述問題的一種解決方案可以利用數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)使輸出隨機(jī)化,但是,因?yàn)樾枰罅康挠布?,這種解決方案非常不經(jīng)濟(jì)。總而言之,問題的出現(xiàn)是由于基于LFSR的流密碼或隨機(jī)數(shù)發(fā)生器加密不安全,而為了使其安全必須使用大量的硬件。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服或至少減少上述問題。
根據(jù)本發(fā)明,提供一種小型雙函數(shù)隨機(jī)數(shù)發(fā)生器(RNG)和流密碼發(fā)生器(SCG),包括密碼引擎和用于控制密碼引擎按RNG或SCG操作的控制器,控制器控制的三個(gè)復(fù)用器有選擇地向密碼引擎提供信號(hào)和接收來自密碼引擎的信號(hào),其中安排第一復(fù)用器用來接收RNG種子信號(hào)或SCG密鑰信號(hào),安排第二復(fù)用器用來接收動(dòng)態(tài)同步參數(shù)信號(hào)或恒定同步信號(hào),安排第三復(fù)用器用來接收來自密碼引擎的信號(hào),和分別提供在每種情況下的隨機(jī)數(shù)輸出信號(hào)或流密碼輸出信號(hào)。
可以提供并安排異或門用來接收來自第三復(fù)用器的流密碼輸出信號(hào)并將流密碼信號(hào)分成明文或密文,以使異或門的輸出分別是密文或明文。
在雙函數(shù)發(fā)生器中可以提供多個(gè)剪裁的(clipped)跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)。
可以包括種子/密鑰輸入;同步參數(shù)輸入;種子/密鑰隨機(jī)函數(shù)發(fā)生器和非線性操縱器。
剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)可以具有為非線性交互作用提供動(dòng)態(tài)/恒定同步參數(shù)輸入的輸入CHNN(ICHNN),和為非線性交互作用提供相鄰ICHNN輸出的輸出CHNN(OCHNN)。
剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)可以包括單個(gè)迭代CHNN對(duì)和k流水線CHNN對(duì)中的一個(gè)、判定框(DEC)和吸引子(attractor)映射表(AMT)。
剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)可以包括兩個(gè)狀態(tài)的神經(jīng)元{0,1}、三個(gè)狀態(tài)的突觸(synaptic)權(quán)值{-1,0,1}、和非線性激活函數(shù){0,1}。
可以安排到n個(gè)神經(jīng)元的剪裁跳躍字段神經(jīng)網(wǎng)絡(luò)的輸入在有限的k次迭代步驟以后收斂到網(wǎng)絡(luò)的2n+1個(gè)穩(wěn)定狀態(tài)或吸引子中的一個(gè)。
如果n值較小的話,可以利用級(jí)聯(lián)的查閱表構(gòu)成剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)。該查閱表可與初始突觸權(quán)值矩陣和隨機(jī)選擇的置換突觸權(quán)值矩陣相關(guān)聯(lián)。
該小型雙函數(shù)可以在某些選定的比特序列組合中包括“反復(fù)”特征,以避免統(tǒng)計(jì)偏差和可能的相關(guān)攻擊。
現(xiàn)在參考附圖通過實(shí)例來描述用于隨機(jī)數(shù)和流密碼生成的小型雙函數(shù)密碼引擎,其中圖1是小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器的方框圖;圖2說明密碼引擎的結(jié)構(gòu);圖3是剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)的方框圖;圖4是說明具有8個(gè)神經(jīng)元的剪裁跳躍字段神經(jīng)網(wǎng)絡(luò)的初始收斂域的表1;圖5是說明具有8個(gè)神經(jīng)元的剪裁跳躍字段神經(jīng)網(wǎng)絡(luò)的置換收斂域的表2;圖6是說明利用MUX2中的恒定同步輸入滿足FIPS 140-2的統(tǒng)計(jì)測(cè)試結(jié)果的表3;和圖7是說明利用到MUX2中的動(dòng)態(tài)同步輸入滿足FIPS 140-2的統(tǒng)計(jì)測(cè)試結(jié)果的表4。
具體實(shí)施例方式
本發(fā)明的實(shí)施例提供雙函數(shù)小型密碼引擎,當(dāng)以隨機(jī)數(shù)發(fā)生器(RNG)的形式配置和使用該密碼引擎時(shí),該密碼引擎能夠產(chǎn)生任何長度的隨機(jī)序列,當(dāng)以流密碼發(fā)生器(SCG)的形式配置或使用該密碼引擎時(shí),該密碼引擎能夠?qū)⑷魏伍L度的數(shù)據(jù)加密。以前,同一個(gè)密碼引擎(本身是已知的)不能以兩種形式配置或使用。
參考附圖,圖1中的方框圖表示基本結(jié)構(gòu)。用控制器10控制密碼引擎11的操作是以RNG還是以SCG形式使用。復(fù)用器MUX1 12分別針對(duì)RNG選擇“種子”或針對(duì)SCG選擇“密鑰”作為到密碼引擎的初始輸入。復(fù)用器MUX2 13選擇兩個(gè)外部輸入動(dòng)態(tài)或恒定同步參數(shù)。該動(dòng)態(tài)參數(shù)可以是可變的地址位置或變化的實(shí)時(shí)時(shí)鐘。恒定同步參數(shù)可以是另一個(gè)密鑰或任何固定參數(shù)。復(fù)用器MUX3 14選擇來自密碼引擎的輸出是來自RNG還是SCG。來自RNG的輸出可以反饋到輸入并且成為下一個(gè)隨機(jī)數(shù)狀態(tài)的新“種子”。利用異或門15,來自SCG的輸出可以是加密以后的密文或解密以后的明文。
圖2表示加密引擎的基本組成部分。附圖的上半部分包括剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)。
首先將保密且隨機(jī)的種子/密鑰分成m個(gè)子種子/子密鑰,其中m是指并聯(lián)的CHNN的數(shù)目。使用各具有n個(gè)神經(jīng)元的CHNN。圖3表示具有n個(gè)神經(jīng)元的CHNN的示意結(jié)構(gòu)。標(biāo)記為Z-1的方框表示單位延遲。每個(gè)神經(jīng)元處于兩個(gè)狀態(tài){0,1}中的一個(gè)。網(wǎng)絡(luò)中的神經(jīng)元對(duì)i和j通過突觸權(quán)值wij連接。
如圖3所示,CHNN中每個(gè)神經(jīng)元的輸出反饋到所有其他的神經(jīng)元,包括它自己。對(duì)于上述實(shí)施例中的CHNN,兩個(gè)神經(jīng)元間的作用可以是激發(fā)(即,wij=1)、抑制(即,wij=-1)或不直接相連(即,wij=0)。CHNN的突觸權(quán)值矩陣剪裁為三個(gè)值{0,1,-1}。
具有n個(gè)神經(jīng)元的CHNN根據(jù)下面的等式取n位輸入x和n位輸出yyi=f(Σj=0n-1wijxj)---i=0,1,...n-1-----(1)]]>其中f是符號(hào)函數(shù)形式的非線性函數(shù),即當(dāng)σ≥0時(shí),f(σ)=1,當(dāng)σ<0時(shí),f(σ)=0。
到CHNN的輸入可以在有限的k次迭代步驟以后收斂到網(wǎng)絡(luò)的一個(gè)穩(wěn)定狀態(tài)或吸引子。對(duì)于具有n個(gè)神經(jīng)元的CHNN,到網(wǎng)絡(luò)的大部分輸入將在大約k次迭代步驟以后收斂到2n+1個(gè)穩(wěn)定狀態(tài)中的一個(gè)。對(duì)于n=8,將有17個(gè)穩(wěn)定狀態(tài),迭代次數(shù)是2,即在經(jīng)過2個(gè)連續(xù)的CHNN以后,達(dá)到穩(wěn)定狀態(tài)。
密碼引擎(圖2)包括種子/密鑰隨機(jī)函數(shù)發(fā)生器和非線性操縱器。在種子/密鑰隨機(jī)函數(shù)發(fā)生器中,每個(gè)n位的子種子/子密鑰首先經(jīng)過具有n個(gè)神經(jīng)元的CHNN層。
該電路是基于如下所述剪裁的標(biāo)準(zhǔn)跳躍字段神經(jīng)網(wǎng)絡(luò)。‘剪裁的’跳躍字段神經(jīng)網(wǎng)絡(luò)已經(jīng)被建議用于其它的密碼系統(tǒng),但不用于支持本發(fā)明的實(shí)施例提供的雙函數(shù)密碼引擎。來自CHNN_1到CHNN_m的輸出與同步輸入進(jìn)行異或運(yùn)算。來自O(shè)UT1_1到OUT2_m的這些輸出分別成為CHNN2_1到CHNN2_m的輸入。通過進(jìn)一步的異或運(yùn)算,生成OUT2_1到OUT2_m并傳送到非線性操縱器(NLM)。利用k個(gè)連續(xù)的CHNN或k次迭代的單個(gè)CHNN構(gòu)成NLM以達(dá)到穩(wěn)定狀態(tài)。
如果n值較小,即16,利用查找表以另一種方式可以構(gòu)成CHNN。通過在突觸權(quán)值矩陣上執(zhí)行隨機(jī)選擇的n×n的置換矩陣,可以導(dǎo)致不同的吸引子和輸入對(duì)。表1和表2(圖4和圖5)給出在具有8個(gè)神經(jīng)元的CHNN中具有兩個(gè)不同突觸權(quán)值矩陣的吸引子的收斂域。從這些表中看出,密碼引擎已在到CHNN的輸入和輸出吸引子之間產(chǎn)生了不規(guī)則的關(guān)系。
方框DEC(圖2)是選擇密碼引擎是按RNG操作還是按SCG操作的判定框。對(duì)于RNG,需要進(jìn)一步的異或函數(shù),并反饋?zhàn)罱K的隨機(jī)序列輸出,以便成為下一個(gè)隨機(jī)數(shù)狀態(tài)的新種子。對(duì)于SCG,使用吸引子映射表(AMT)將n位的吸引子映射成1位序列,其中1≤n。每個(gè)AMT的輸出組合在一起形成密鑰流,該密鑰流分別與明文/密文異或運(yùn)算以形成加密/解密數(shù)據(jù)。
為避免統(tǒng)計(jì)偏差和可能的相關(guān)破譯,可以設(shè)計(jì)某些選定的位序列組合具有“反復(fù)”特征,即同一序列連續(xù)表現(xiàn)為補(bǔ)充(complementary)輸出。
通過利用置換矩陣生成不同的突觸權(quán)值矩陣,即使使用相同的“密鑰”和“同步輸入”,也可以獲得不同的密鑰流。此外,根據(jù)CHNN的非線性動(dòng)態(tài)屬性,下面的屬性將出現(xiàn)在不同的密鑰流中可以從相同明文生成不同的密文;可以從不同的明文生成相同的密文,或者不同的明文可以生成不同的密文。因此,此方案可以防止密碼破譯者只需破譯密文。此外,選定的明文破譯或已知的明文破譯都無法猜測(cè)保密的“密鑰”。
從RNG生成的隨機(jī)數(shù)和從SCG生成的密鑰流都滿足一定程度的隨機(jī)性,以確保其可用于密碼處理。已經(jīng)考慮到按FIPS 140-2中規(guī)定的、用于隨機(jī)性測(cè)試的統(tǒng)計(jì)測(cè)試。這些統(tǒng)計(jì)測(cè)試共同用于確定該二進(jìn)制序列是否具有可能呈現(xiàn)真正的隨機(jī)序列的某些特定特性。滿足比特流的下列屬性單個(gè)比特的分布(單比特測(cè)試)、16個(gè)可能的4位組合中的每一個(gè)出現(xiàn)的次數(shù)(撲克(poker)測(cè)試)、1或0的連續(xù)出現(xiàn)次數(shù)(游程測(cè)試)和最大連續(xù)出現(xiàn)次數(shù)(長游程測(cè)試)。經(jīng)過上述每種測(cè)試的20,000個(gè)連續(xù)比特的單個(gè)比特流在統(tǒng)計(jì)上沒有表現(xiàn)出更高的被破譯的可能性。
表3(圖6)是對(duì)使用恒定同步輸入產(chǎn)生的隨機(jī)數(shù)(RNG)的測(cè)試結(jié)果。
圖4(圖7)是對(duì)使用動(dòng)態(tài)同步輸入產(chǎn)生的密鑰流(SCG)的測(cè)試結(jié)果。這兩個(gè)結(jié)果都表示該序列具有良好的統(tǒng)計(jì)特性并滿足所有的測(cè)試。輸出值Xout保持在用不同的種子/密鑰和不同的突觸權(quán)值矩陣生成的序列的可接受限度內(nèi)。
在本發(fā)明的實(shí)施例中,隨機(jī)數(shù)生成和流密碼加密二者都可以利用相同的軟件或硬件模塊實(shí)現(xiàn)。這樣顯著節(jié)省了硬件部件、存儲(chǔ)空間和設(shè)計(jì)時(shí)間。這在諸如使用智能卡之類有限資源的市場(chǎng)中提供應(yīng)用尤其重要。本發(fā)明的實(shí)施例完全適用于受約束的用硅實(shí)現(xiàn)的裝置,例如智能卡密鑰生成和數(shù)據(jù)加擾,以及大型可重新配置的隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器。
本發(fā)明的實(shí)施例可在并聯(lián)架構(gòu)中實(shí)現(xiàn)。該結(jié)構(gòu)要求簡單的異或及邏輯函數(shù)。這樣允許用軟件或硬件技術(shù)快速而有效的實(shí)現(xiàn)雙函數(shù)密碼引擎。利用同步輸入,保持了計(jì)算輸出結(jié)果的匹配并且與同類型的位于外部的裝置一樣好。
權(quán)利要求
1.一種小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,包括密碼引擎和用于控制密碼引擎作為隨機(jī)數(shù)發(fā)生器或流密碼發(fā)生器操作的控制器,包括由控制器控制的三個(gè)復(fù)用器,以便有選擇地向密碼引擎提供信號(hào)和從密碼引擎接收信號(hào),其中安排第一復(fù)用器用來接收隨機(jī)數(shù)發(fā)生器種子信號(hào)或流密碼發(fā)生器密鑰信號(hào),安排第二復(fù)用器用來接收動(dòng)態(tài)同步參數(shù)或恒定同步信號(hào),安排第三復(fù)用器用來從密碼引擎接收信號(hào)和分別在每種情況下提供隨機(jī)數(shù)輸出信號(hào)或流密碼輸出信號(hào)。
2.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括異或門,用于接收來自第三復(fù)用器的流密碼輸出信號(hào)并將流密碼信號(hào)分成明文或密文,以使異或門的輸出分別是密文或明文。
3.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)。
4.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì),種子/密鑰輸入,同步參數(shù)輸入,種子/密鑰隨機(jī)函數(shù)發(fā)生器和非線性操縱器。
5.根據(jù)權(quán)利要求4所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于在剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)中,輸入CHNN為非線性交互作用提供動(dòng)態(tài)/恒定同步參數(shù)輸入,和輸出CHNN為非線性交互作用提供相鄰的輸入CHNN的輸出。
6.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)、單個(gè)迭代CHNN對(duì)和k流水線CHNN對(duì)中的一個(gè)、判定框和吸引子映射表。
7.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)、兩種狀態(tài)的神經(jīng)元、三種狀態(tài)的突觸權(quán)值、和非線性激活函數(shù)。
8.根據(jù)權(quán)利要求7所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于神經(jīng)元的狀態(tài)是0和1;突觸權(quán)值的狀態(tài)是-1、0和1;非線性激活函數(shù)是0和1。
9.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì),其中安排到n個(gè)神經(jīng)元的剪裁跳躍字段神經(jīng)網(wǎng)絡(luò)的一個(gè)輸入在有限的k次迭代步驟后收斂到網(wǎng)絡(luò)的2n+1個(gè)穩(wěn)定狀態(tài)或吸引子中的一個(gè)。
10.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì),其中如果n值較小,可以利用級(jí)聯(lián)的查閱表構(gòu)成剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)。
11.根據(jù)權(quán)利要求10所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于該查閱表與初始突觸權(quán)值矩陣和隨機(jī)選擇的置換突觸權(quán)值矩陣相關(guān)聯(lián)。
12.根據(jù)權(quán)利要求1所述的小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,其特征在于包括多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì),在某些選定的位序列組合中包括反復(fù)特征以避免統(tǒng)計(jì)偏差和可能的相關(guān)破譯。
全文摘要
一種小型雙函數(shù)隨機(jī)數(shù)發(fā)生器和流密碼發(fā)生器,包括密碼引擎,該密碼引擎具有控制該引擎工作以其一個(gè)或另一個(gè)函數(shù)操作的控制器。該密碼引擎并入多個(gè)剪裁的跳躍字段神經(jīng)網(wǎng)絡(luò)對(duì)。
文檔編號(hào)H04L9/22GK1381813SQ02106138
公開日2002年11月27日 申請(qǐng)日期2002年4月4日 優(yōu)先權(quán)日2001年4月19日
發(fā)明者鄭利明, 陳志光, 陳彩娟 申請(qǐng)人:香港城市大學(xué)