專利名稱:一種偽隨機(jī)序列產(chǎn)生方法及加密方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全技術(shù)領(lǐng)域,具體地說,本發(fā)明提供了一種輸出比特等價(jià)保熵的偽隨機(jī)序列產(chǎn)生方法及加密方法。
背景技術(shù):
偽隨機(jī)序列源的選擇與設(shè)計(jì)是序列密碼設(shè)計(jì)中的一個(gè)核心內(nèi)容。以移位寄存器為基礎(chǔ)的序列源設(shè)計(jì),大多考慮二元域GF(2)上的m序列或一般有限域GF(2n)上線性遞歸序列。然而,這類序列的比特之間具有明顯的、多重的線性關(guān)系,這使得以其為序列源的序列密碼容易受到相關(guān)攻擊。另外,線性遞歸的方式和簡(jiǎn)單的非線性改造手段也使代數(shù)攻擊建立低次方程成為可能。因此,以GF(2n)上的線性遞歸序列作為序列源,將導(dǎo)致S-盒設(shè)計(jì)的困難性和復(fù)雜性,很難達(dá)到序列密碼體制簡(jiǎn)潔、安全的設(shè)計(jì)目標(biāo)。
設(shè)p是2或奇素?cái)?shù),對(duì)于環(huán)Z/(pe)上線性遞歸序列,因?yàn)閜-adic高權(quán)位序列由低權(quán)位序列和遞歸運(yùn)算過程中產(chǎn)生的復(fù)雜進(jìn)位序列復(fù)合而成,從而天然蘊(yùn)含豐富的非線性結(jié)構(gòu),具備諸多優(yōu)良的偽隨機(jī)性質(zhì)。Z/(pe)上本原序列,即極大周期的線性遞歸序列,其最高權(quán)位序列的密碼性質(zhì)更為優(yōu)良,例如,保熵性,豐富的非線性結(jié)構(gòu),優(yōu)良的元素分布特性和復(fù)雜度特性等。但是作為序列源,它仍然存在如下不足之處。
(1)周期特性不理想 Z/(pe)上n次本原序列的周期為pe-1·(pn-1),參見文獻(xiàn)[2]。參數(shù)e稍大時(shí)(例如,e=8,16或32),周期pe-1·(pn-1)遠(yuǎn)遠(yuǎn)小于pe·n,兩者比例不足p-(e-1)(n-1)+1,這導(dǎo)致提高序列周期需要耗費(fèi)的寄存器資源增長(zhǎng)太快,遠(yuǎn)大于周期增長(zhǎng)的幅度。例如,對(duì)于Z/(2e)上的情形,假設(shè)序列周期需要達(dá)到264。當(dāng)e=8時(shí),寄存器的規(guī)模必須達(dá)到456比特;當(dāng)e=16時(shí),寄存器規(guī)模需要784比特;當(dāng)e=32時(shí),寄存器規(guī)模為1056比特;因此,Z/(2e)上本原序列的周期特性很不理想。
(2)權(quán)位序列不具備代數(shù)等價(jià)性 考察Z/(pe)上線性遞歸序列的進(jìn)位序列的運(yùn)算特性,可以看出,對(duì)于該序列的權(quán)位序列而言,權(quán)位越高,序列的密碼性質(zhì)越好,例如,隨著權(quán)位的增長(zhǎng),權(quán)位序列的周期按照p的指數(shù)級(jí)方式增長(zhǎng)。因此,若采用Z/(pe)上本原序列作為序列源,必須消除權(quán)位序列之間的這種不等價(jià)性。然而,掩蓋序列源弱點(diǎn)的做法總是令人擔(dān)憂的,這就類似與基于GF(2n)上的線性反饋移位寄存器的序列密碼體制試圖掩蓋源序列的線性本質(zhì)總是難以成功。
除以上兩點(diǎn)外,對(duì)于奇素?cái)?shù)p,因?yàn)槟e運(yùn)算實(shí)現(xiàn)的困難性,Z/(pe)上線性遞歸序列的實(shí)現(xiàn)效率遠(yuǎn)遠(yuǎn)滿足不了現(xiàn)實(shí)需要。
基于以上分析,本發(fā)明的發(fā)明人認(rèn)為Z/(pe)上本原序列不適合用作序列密碼設(shè)計(jì)的序列源。因此,需要尋求新型序列源的產(chǎn)生方法,既能保持Z/(pe)上本原序列的優(yōu)良特性,又能避免其不足之處。
發(fā)明內(nèi)容
本發(fā)明提供的一種產(chǎn)生偽隨機(jī)序列的方法,包括 從取值空間{1,2,...,2e-1}獲取元素,其中e是一個(gè)大于2的正整數(shù);基于所獲取的元素及反饋多項(xiàng)式采用線性遞歸方式生成序列,所述反饋多項(xiàng)式是Z/(2e-1)上的本原多項(xiàng)式,所生成序列的初態(tài)中至少有一個(gè)元素a與2e-1互素。
根據(jù)該方法可輸出比特等價(jià)保熵的偽隨機(jī)序列,它的任一比特權(quán)位包含整體序列所有信息,同時(shí)序列的信息在所有比特位置均勻分布,沒有給序列攻擊者留下可利用的序列差異特征。另外,該序列源蘊(yùn)含豐富的非線性結(jié)構(gòu),周期增長(zhǎng)迅速,選取合適的參數(shù),使得序列周期和序列互異圈個(gè)數(shù)達(dá)到平衡,同時(shí)滿足大周期和豐富互異圈兩方面的需求。該方法在各種軟件、硬件平臺(tái)易于快速實(shí)現(xiàn)。這些優(yōu)良性質(zhì)將大大降低算法設(shè)計(jì)中對(duì)于序列源加工改造工作的困難性和復(fù)雜性,容易達(dá)到序列密碼體制簡(jiǎn)潔、安全的設(shè)計(jì)目標(biāo)。
本發(fā)明提供的一種構(gòu)建流密碼體制的方法,包括 采用前述方法構(gòu)造的具有比特等價(jià)保熵性的偽隨機(jī)序列源作為核心序列源。
按照如下方式加工序列源進(jìn)而輸出密鑰字序列在序列源的每拍狀態(tài)中,抽取固定抽頭位置的取值為選擇數(shù);根據(jù)選擇數(shù)提取參與密鑰字合成的變化抽頭位置;變化抽頭的取值結(jié)合重要的固定抽頭的取值綜合合成兩個(gè)待選數(shù)和一個(gè)控制數(shù);最后由控制數(shù)各比特位置的0,1取值情況分別選擇兩個(gè)待選數(shù)對(duì)應(yīng)位置的取值組合成為該拍的密鑰字。
在密鑰字合成過程中,采用元素異或運(yùn)算消除核心序列源取值空間少一個(gè)元素的現(xiàn)象,使得密鑰輸出序列分布均衡。
體制的初始狀態(tài)由密鑰Key和公開隨機(jī)的初始向量IV混合擴(kuò)展而成,初始化運(yùn)轉(zhuǎn)過程中輸出的密鑰字與序列遞歸輸出的元素異或綜合重新置入狀態(tài)最后一個(gè)位置參與下一拍運(yùn)算。
進(jìn)一步,作為前述序列產(chǎn)生方法和流密碼體制構(gòu)建方法的應(yīng)用實(shí)例,本發(fā)明提供一個(gè)流密碼體制,命名為“飛環(huán)”(“Flying-Ring”)。它是一個(gè)簡(jiǎn)潔、安全、高效的序列密碼算法,在軟件、硬件各種平臺(tái)都易高速實(shí)現(xiàn),可為數(shù)據(jù)安全提供高效的安全服務(wù)。
具體實(shí)施例方式 本發(fā)明將提供一種輸出序列具有比特等價(jià)保熵性的偽隨機(jī)序列產(chǎn)生方法,同時(shí)提供以此方法生成序列為核心序列源的一種流密碼體制的構(gòu)建方法,并設(shè)計(jì)了一個(gè)具體的流密碼體制,命名為“飛環(huán)”(“Flying-Ring”)。
(一)序列產(chǎn)生方法 稱本發(fā)明提供序列產(chǎn)生方法得到的序列為“環(huán)Z/(2e-1)上本原序列”,具體產(chǎn)生方法如下 (1)取參數(shù)e和n都是大于或等于2的正整數(shù); (2)選取多項(xiàng)式f(x)=xn-(cn-1xn-1+cn-2xn-2+...+c0),ci∈{0,1,...,2e-2},i=0,1,...,n-1,滿足如下性質(zhì)對(duì)于整數(shù)2e-1的任意大于1的素?cái)?shù)方冪因子pw,其中p是素?cái)?shù),f(x)(mod pw)的最小正周期為T=pw-1·(pn-1),即,整數(shù)T是使得xT≡1(modf(x),pw)成立的最小正整數(shù)。
(3)取初態(tài)向量(a0,a1,...,an-1),其中ai∈Z/(2e-1),i=0,1,...,n-1,至少有一個(gè)ai滿足如下性質(zhì)整數(shù)ai和2e-1互素(最大公因子為1); 或者說,對(duì)于整數(shù)2e-1的任意素?cái)?shù)因子p,ai≠0(mod p),即p不是ai的因子。
(4)按照如下遞歸方式輸出序列a=(a0,a1,...,an-1,an,an+1,...)=(at)t≥0,an+k=an-1+k·cn-1+an-2+k·cn-2+...+a0+k·c0(mod 2e-1),k=0,1,2,....序列a即為Z/(2e-1)上由f(x)生成的一條本原序列。所有由f(x)生成的本原序列之集記為G′(f(x),2e-1),其中序列同由f(x)產(chǎn)生,不同的只是在生成過程中選取不同的序列初態(tài)(a0,a1,...,an-1)。
上述方法得到的Z/(2e-1)上本原序列集G′(f(x),2e-1)可以用作流密碼的序列源。
(二)序列源的性質(zhì)分析 任給Z/(2e-1)上本原多項(xiàng)式f(x),集合G′(f(x),2e-1)就是本發(fā)明提供方法產(chǎn)生的序列源之一。該類序列源達(dá)到了如下三方面的設(shè)計(jì)目標(biāo), 充分保留Z/(pe)上本原序列的保熵性質(zhì)和優(yōu)良的非線性性質(zhì); 盡量避免Z/(pe)上本原序列的不足之處周期特性不理想,序列權(quán)位不等價(jià); 容易實(shí)現(xiàn)序列源的快速遞歸生成。
下面詳細(xì)分析該類序列源的密碼性質(zhì)。
(2.1)具備比特等價(jià)保熵性 對(duì)于元素α∈Z/(2e-1),存在唯一的2-adic分解 α=α0+α1·2+...+αe-1·2e-1,其中αi∈{0,1},i=0,1,...,e-1.稱元素αi為α的第i比特權(quán)位。
同理,對(duì)于Z/(2e-1)上序列a,有如下唯一2-adic分解 a=a0+a1·2+...+ae-1·2e-1,其中ai是0,1序列,i=0,1,...,e-1.稱序列ai是a的第i比特權(quán)位序列,簡(jiǎn)稱為第i權(quán)位序列。
對(duì)于a∈G′(f(x),2e-1),2·a(mod 2e-1)仍然屬于G′(f(x),2e-1);又因?yàn)閆/(2e-1)中元素的2倍運(yùn)算相當(dāng)于左循環(huán)移位1比特,所以任給i≠j∈{0,1,...,e-1},序列a的第i權(quán)位序列等同與G′(f(x),2e-1)中另外一條序列的第j權(quán)位序列。這就表明G′(f(x),2e-1)中序列的各個(gè)比特權(quán)位序列是相互等價(jià)的(周期相同,相互之間的地位和作用也相同),權(quán)位序列之間具備代數(shù)等價(jià)性。
另外,當(dāng)本原序列的次數(shù)n≥2時(shí),可以證明,任給a,b∈G′(f(x),2e-1),都有a=b當(dāng)且僅當(dāng)a(mod 2)=b(mod 2)。該結(jié)論表明G′(f(x),2e-1)中序列的第0比特權(quán)位序列蘊(yùn)含原始序列的所有信息,即環(huán)Z/(2e-1)上本原序列的第0比特權(quán)位是保熵的。再結(jié)合比特權(quán)位序列的相互等價(jià)性,可知,本原序列的任一比特權(quán)位都是保熵的。
具有比特等價(jià)保熵性,是本發(fā)明序列產(chǎn)生方法所得到序列源-環(huán)Z/(2e-1)上本原序列,區(qū)別其它常規(guī)(多比特輸出)序列源的最重要的本質(zhì)特征。該性質(zhì)保證序列的信息在所有比特位置分布均勻,沒有給序列攻擊者留下可利用的序列差異特征。
(2.2)擁有理想的周期特性 周期特性是評(píng)價(jià)序列源的一個(gè)重要指標(biāo)。如果序列的周期增長(zhǎng)太慢,為提高序列周期,將要耗費(fèi)過多的寄存器資源。一個(gè)好的序列源,應(yīng)該在寄存器資源有限增長(zhǎng)的條件下實(shí)現(xiàn)周期的快速增長(zhǎng)。
因?yàn)?e-1通常含有較大素因子,環(huán)Z/(2e-1)上本原序列的周期特性非常好。設(shè)
其中{p0,p1,...,pw-1}是2e-1互異素因子之集,ei≥1。
Z/(2e-1)上n次本原多項(xiàng)式的周期為 其中符號(hào)“Lcm”表示最小公倍數(shù)。G′(f(x),2e-1)中序列都是本原序列,它們的周期都等于per(f(x),2e-1)。當(dāng)參數(shù)e的取值稍大時(shí)(例如e=8,16,32),隨著次數(shù)n的增大,周期增長(zhǎng)非常迅速。
表1對(duì)比列出Z/(2321)和Z/(232)上本原序列周期隨次數(shù)變化情況。由表1可以看出Z/(232-1)上本原序列的周期增長(zhǎng)速度相對(duì)要快得多。假設(shè)序列周期需要達(dá)到264,采用Z/(232)上序列,次數(shù)n的取值最小為33,寄存器的規(guī)模必須達(dá)到1056=33×32比特,采用Z/(2321)上本原序列,次數(shù)n的取值為3,寄存器的規(guī)模只需要96=3×32比特。采用Z/(2321)上本原序列作為序列源需要耗費(fèi)的資源要小得多。
表1 (2.3)序列周期和序列互異圈個(gè)數(shù)容易達(dá)到平衡 序列互異圈的個(gè)數(shù)也是評(píng)價(jià)一個(gè)序列源的重要指標(biāo)。兩條不同的序列如果平移等價(jià),它們則被認(rèn)為同屬一個(gè)序列圈。同屬一個(gè)序列圈的序列,相對(duì)比較容易從一條序列獲得另外一條序列。所以一個(gè)序列源的設(shè)計(jì)通常需要它具有足夠多的序列互異圈,使得不同序列同圈的概率很小。
在固定寄存器規(guī)模的條件下,序列的周期和互異圈的個(gè)數(shù)是兩個(gè)相互對(duì)立的參數(shù)。對(duì)于Z/(2e-1)上本原序列而言,基于不同的次數(shù)n,兩者對(duì)立的程度也有所變化。設(shè)計(jì)者容易取得合適的n,同時(shí)滿足大周期和豐富互異圈兩方面的需求。
表2給出Z/(232-1)上本原序列的周期和互異圈個(gè)數(shù)的取值情況??梢钥闯鰠?shù)n取6,12,16時(shí),序列的周期已經(jīng)足夠大,同時(shí)互異圈的個(gè)數(shù)分別超過261,276,265,對(duì)應(yīng)序列同圈的概率分別小于2-61,2-76,2-65,同圈的可能性已經(jīng)足夠小。
表2 (2.4)天然蘊(yùn)含豐富的非線性結(jié)構(gòu) 由于在遞歸運(yùn)算的過程中,每條比特權(quán)位序列是由其它權(quán)位序列和大量的多層進(jìn)位結(jié)果復(fù)合而成,單個(gè)權(quán)位序列的生成和其它e-1條比特權(quán)位序列的任意一條直接相關(guān)。
(2.5)具備優(yōu)良的偽隨機(jī)特性 偽隨機(jī)測(cè)試平臺(tái)驗(yàn)證,環(huán)Z/(2e-1)上本原序列的偽隨機(jī)特性優(yōu)良,元素分布均衡,復(fù)雜度特性良好,線性復(fù)雜度譜在1/2線附近隨機(jī)擺動(dòng)。
(2.6)序列的資源非常豐富 設(shè)
其中{p0,p1,..,pw-1}是2e-1互異素因子之集,ei≥1。環(huán)
上n次本原多項(xiàng)式的個(gè)數(shù)為
其中
(*)表示歐拉函數(shù)。環(huán)Z/(2e-1)上n次本原多項(xiàng)式的個(gè)數(shù)為 表3和表4分別給出Z/(2321)和Z/(216-1)上本原多項(xiàng)式的周期和本原多項(xiàng)式數(shù)量的對(duì)比取值情況。本原多項(xiàng)式周期和對(duì)應(yīng)本原序列的周期取值相同,前面分析可知,周期增長(zhǎng)非常迅速,在次數(shù)n的取值很小時(shí),周期取值就已經(jīng)非常巨大;表3和表4數(shù)據(jù)顯示,本原多項(xiàng)式的數(shù)量和周期取值相當(dāng)。環(huán)Z/(2e-1)上擁有非常豐富的本原多項(xiàng)式資源,而每個(gè)本原多項(xiàng)式對(duì)應(yīng)一個(gè)不同參數(shù)的序列源模型,因此,環(huán)Z/(2e-1)上本原序列的資源非常豐富。
表3 表4 (2.7)易于軟件、硬件平臺(tái)的快速實(shí)現(xiàn) 首先,序列遞歸生成過程中沒有復(fù)雜的模運(yùn)算,模2e-1運(yùn)算實(shí)際上可由2次加法完成。
其次,通過選擇低權(quán)重的多項(xiàng)式系數(shù),序列生成過程的乘法運(yùn)算可以用少量的循環(huán)移位和加法替代實(shí)現(xiàn)。
另外,選取模2e-1的代表元集合為{1,2,...,2e-1},可以快速實(shí)現(xiàn)Z/(2e-1)上元素的模運(yùn)算。模運(yùn)算結(jié)果只要落入e比特表示的范圍內(nèi),模運(yùn)算就結(jié)束了。若采用常用的代表元集合{0,1,...,2e-2},模運(yùn)算結(jié)果落入e比特表示的范圍內(nèi),我們還需要判斷結(jié)果是否是2e-1,若是,需要將其置0,增加了額外的運(yùn)算開銷。
(2.8)序列取值空間少一個(gè)元素不影響序列源的正常使用 Z/(2e-1)上本原序列的取值空間比e比特元素集合少一個(gè)元素,這種情況不影響該序列作為序列源的正常使用。通過簡(jiǎn)單的元素異或運(yùn)算就可以消除取值空間少一個(gè)元素的痕跡。
取模2e-1的代表元集合為J={1,2,...,2e-1},考察可重復(fù)集合 中元素分布情況。記x在W中出現(xiàn)的個(gè)數(shù)為N(x),簡(jiǎn)單計(jì)算后,可得 N(0)=2e-1,N(t)=2e-2,1≤t≤2e-1. 由此可知,異或運(yùn)算很好地解決了序列取值空間少一個(gè)元素的問題。至于取模2e-1其他的代表元集合,可得到幾乎一樣的結(jié)論。
(2.9)權(quán)位序列可能存在的平移等價(jià)性不影響序列源的正常使用 對(duì)于參數(shù)e的某些取值,Z/(2e-1)上同一條本原序列的不同權(quán)位之間存在平移等價(jià)關(guān)系,但是因?yàn)樾蛄械闹芷谔匦院芾硐?,使得平移跨度非常大,遠(yuǎn)遠(yuǎn)大于單次加密/解密需要的序列片段長(zhǎng)度,這種平移等價(jià)關(guān)系不影響序列源的正常使用。
例如,模數(shù)232-1的性質(zhì)決定了Z/(2321)上本原序列的某些權(quán)位之間具有如下半周期平移等價(jià)性。設(shè)a=a0+a1·2+...+a31·231是Z/(232-1)上的一條由f(x)生成的本原序列,周期為T,則由于xT/2≡216(mod f(x))在Z/(2321)上成立,故對(duì)于任意的t≥0有 at+T/2≡216·at(mod 232-1). 上式意味著序列a的比特權(quán)位之間存在如下半周期平移等價(jià)關(guān)系 xT/2ai=ai+16,i=0,1,...,15. 因?yàn)閆/(232-1)上本原序列的周期特性很理想,例如,如次數(shù)為16時(shí),周期超過了2446,在實(shí)際序列源的使用過程中,單次加密/解密需要的序列片段長(zhǎng)度不可能達(dá)到周期的量級(jí)。權(quán)位序列半周期的平移等價(jià)性不影響序列源的正常使用。
(三)序列源的使用說明 基于以上對(duì)于序列源的性質(zhì)分析,下面給出序列源的使用注意事項(xiàng)。
參照當(dāng)前計(jì)算能力,當(dāng)前密碼安全強(qiáng)度通常設(shè)定為128比特或256比特,單次加密/解密報(bào)文長(zhǎng)度上限通常設(shè)定為264。依據(jù)這兩個(gè)設(shè)定,下面討論序列源的實(shí)施過程中的注意情況。(即使將來當(dāng)前計(jì)算能力提高了,安全要求強(qiáng)度增加了,同樣可以根據(jù)如下原則設(shè)置相應(yīng)的參數(shù)。) (3.1)參數(shù)e和n的選取 參數(shù)e的選擇參照計(jì)算平臺(tái)的整數(shù)運(yùn)算的字長(zhǎng)設(shè)定。例如,當(dāng)前主流計(jì)算機(jī)的字長(zhǎng)為32比特,選取參數(shù)e=32,可以充分利用32比特整數(shù)運(yùn)算的特性,快速實(shí)現(xiàn)模232-1運(yùn)算。另外,對(duì)于專用硬件平臺(tái),字長(zhǎng)可以根據(jù)需求設(shè)定。此時(shí)可以選擇參數(shù)e=29,它可以避免出現(xiàn)同一條序列不同權(quán)位的平移等價(jià)情況。
參數(shù)n的選擇,通常使得e·n的取值是安全強(qiáng)度參數(shù)的2倍左右。同時(shí)兼顧本原序列互異圈是否足夠多。
當(dāng)前主流計(jì)算機(jī)的字長(zhǎng)為32比特,選取參數(shù)e=32。依據(jù)當(dāng)前安全強(qiáng)度,選取參數(shù)n=12或16。
參數(shù)n取12或16時(shí),本原序列的周期分別大于2307.9954和2446.8395;序列的周期足夠大,同時(shí)本原序列互異圈也足夠多,分別達(dá)到276.0045和265.1604,不同序列同圈的概率分別小于2-76.0045和2-65.1604。
因?yàn)閆/(232-1)上本原序列的周期特性很理想,在實(shí)際序列源的使用過程中,單次加密/解密需要的序列片段長(zhǎng)度不可能達(dá)到周期的量級(jí)。權(quán)位序列半周期的平移等價(jià)性不影響序列源的正常使用。設(shè)周期為T,容易證明,對(duì)于間隔長(zhǎng)度在T/215之內(nèi)的子序列之間不存在倍數(shù)關(guān)系。由此,可以認(rèn)為,作為序列源,Z/(232-1)上本原序列在實(shí)際使用過程中輸出序列幾乎不會(huì)出現(xiàn)反復(fù),不同的輸出序列之間幾乎不存在簡(jiǎn)單的倍數(shù)關(guān)系。
(3.2)模2e-1的代表元集選取 建議取模2e-1的代表元集合為{1,2,...,2e-1}。
采用該代表元集,可以快速實(shí)現(xiàn)Z/(2e-1)上元素的模運(yùn)算。模運(yùn)算結(jié)果只要落入e比特表示的范圍內(nèi),模運(yùn)算就結(jié)束了。若采用常用的代表元集合{0,1,...,2e-2},模運(yùn)算結(jié)果落入e比特表示的范圍內(nèi),我們還需要判斷結(jié)果是否是2e-1,若是,需要將其置0,增加了額外的運(yùn)算開銷。
(3.3)反饋多項(xiàng)式的選取 設(shè)f(x)=xn-(cn-1xn-1+cn-2xn-2+...+c0)是Z/(232-1)上本原多項(xiàng)式,可以根據(jù)以下基本原則先確定反饋抽頭位置(1)反饋抽頭位置之間的間隔長(zhǎng)度盡量不同;(2)每一拍產(chǎn)生的新元素必須參與下一拍的反饋計(jì)算。
確定好反饋抽頭位置后,可以按照以下原則確定具體的反饋多項(xiàng)式系數(shù)。(1)為了盡可能地提高序列源的遞歸生成速度,根據(jù)環(huán)Z/(232-1)上運(yùn)算的特點(diǎn),應(yīng)選用具有低漢明重量的系數(shù);(2)為了使反饋運(yùn)算達(dá)到較好的混亂效果,非零系數(shù)的2進(jìn)制展開中所有1的位置兩兩不同,間隔盡量不同;(3)在算法速度許可的范圍內(nèi),盡量提高抽頭系數(shù)cn-1,cn-2,...,c0的總重量,并且這個(gè)重量一定為偶數(shù)。
例如,取n=16,選取抽頭個(gè)數(shù)為5,選取抽頭位置為15,13,10,4,0,對(duì)應(yīng)的反饋多項(xiàng)式的形式為 f(x)=x16-(c15·x15+c13·x13+c10·x10+c4·x4+c0); 再按照系數(shù)確定原則,最終可以選取反饋多項(xiàng)式為 f(x)=x16-((211+219)·x15+28·x13+228·x10+218·x4+(20+22+221)). (3.4)序列源不退化設(shè)定 設(shè)f(x)是Z/(2e-1)上本原多項(xiàng)式,G(f(x),2e-1)中某條序列是本原序列的充要條件為該序列初態(tài)中存在某個(gè)元素,它與2e-1互素。在實(shí)際的使用過程中,可以設(shè)定初態(tài)某個(gè)位置為一個(gè)與2e-1互素的常數(shù)。
(3.5)消除源序列(序列源取值)空間少一個(gè)元素的影響 Z/(2e-1)上本原序列的取值空間比e比特元素集合少一個(gè)元素,在實(shí)際的使用過程中,可以采用簡(jiǎn)單的元素異或運(yùn)算消除該現(xiàn)象。
(3.6)模2e-1乘法運(yùn)算的替代實(shí)現(xiàn) 例如,設(shè)0≤a<232,2k·a(mod 232-1)可以用左循環(huán)移位實(shí)現(xiàn),即 2k·a(mod 232-1)=(a<<<k)。
可以選擇系數(shù)ci權(quán)重較小的多項(xiàng)式 f(x)=xn-(cn-1xn-1+cn-2xn-2+...+c0), 使得序列遞歸反饋時(shí),ci·a(mod 232-1)的計(jì)算過程可以用簡(jiǎn)單的左循環(huán)移位運(yùn)算和加法運(yùn)算替代完成。
對(duì)于e的其他取值,也可以同樣處理,尤其是在硬件芯片實(shí)現(xiàn)環(huán)境中,更是如此。
(四)序列源在密碼中的應(yīng)用——“飛環(huán)”流密碼體制 “飛環(huán)”流密碼體制采用前述序列方法生成核心序列源,是一個(gè)安全、高效的流密碼算法。下面詳細(xì)討論。
(4.1)有關(guān)“飛環(huán)”流密碼體制中序列源選擇和運(yùn)算說明 參照前述序列源的使用說明,選擇序列源,即選擇序列的反饋多項(xiàng)式?!帮w環(huán)”流密碼體制采用如下Z/(232-1)上本原多項(xiàng)式 f(x)=x16-((211+219)·x15+28·x13+228·x10+218·x4+(5+221)). G′(f(x),232-1)就是“飛環(huán)”流密碼體制的序列源,其中序列a=(a0,a1,...)∈G′(f(x),232-1),滿足如下遞歸關(guān)系 a16+k=(211+219)·a15+k+28·a13+k +228·a10+k+218·a4+k+(5+221)·ak(mod 232-1),k≥0. 運(yùn)算N(mod 232-1)的實(shí)現(xiàn)取{1,2,...,232-1}為mod 232-1的剩余代表集,從而將0視為232-1。計(jì)算N(mod 232-1)只需將N按4字節(jié)為單位進(jìn)行分組,將各部分進(jìn)行累加,和結(jié)果中超出232的進(jìn)位部分重新加到低位部分即可,最后小于232的和值即為mod 232-1的運(yùn)算結(jié)果。例如,N=N0+N1·232,N0+N1=N2+c·232,其中0≤N0,N1,N2<232,c為0或1,則N(mod 232-1)=N2+c。
需要說明的是,“飛環(huán)”流密碼體制中的mod 232-1運(yùn)算全部按這種方式實(shí)現(xiàn)。
下面先給出“飛環(huán)”流密碼體制中出現(xiàn)的運(yùn)算符號(hào)說明。
符號(hào)
表示2進(jìn)制對(duì)位模2加運(yùn)算。
符號(hào)“||”表示數(shù)據(jù)的級(jí)聯(lián),每個(gè)參與級(jí)聯(lián)的數(shù)都是8比特整數(shù)。例如,(a||b||c||d)=a·224+b·216+c·28+d。
符號(hào)“<<<”表示32比特整數(shù)的左循環(huán)移位運(yùn)算。例如
(注頭部是0x的數(shù)據(jù)是16進(jìn)制無符號(hào)整數(shù)。) (4.2)“飛環(huán)”流密碼體制的密鑰裝入算法 參數(shù)128比特的初始密鑰K和128比特的初始向量IV。
任務(wù)將K和IV擴(kuò)展為512比特的“飛環(huán)”算法工作向量(S
,S[1],...,S[15])的初態(tài),其中每個(gè)S[i]都是32比特長(zhǎng)的字。
密鑰裝入流程如下 (4.2.1)將密鑰和初始向量按字節(jié)分組,即 K=(k0,k1,...,k15),IV=(iv0,iv1,...,iv15), 其中ki和ivi都是8比特字節(jié)。
(4.2.2)選取常數(shù)D=(d0,d1,...,d14),要求每個(gè)di都是8比特常數(shù),2進(jìn)制展開中0、1分布均勻。下面給出D的一種選擇 0x96,0x9A,0x1B,0xA5,0x4B,0x27,0x2D,0xA6, 0xAD,0x36,0x39,0x4E,0x78,0x8D,0x9C. (4.2.3)密鑰擴(kuò)展和填充 對(duì)于i=0,1,...,14,計(jì)算 其中k-1=k15,iv-1=iv15。
設(shè)置32比特常數(shù)S[15],它與232-1互素,2進(jìn)制展開中0、1分布均勻。
S[15]=0x4D34D349=1295307593. (4.3)“飛環(huán)”流密碼體制的工作過程 共有3個(gè)過程,先執(zhí)行算法初始化過程,隨后執(zhí)行密鑰字輸出過程,最后執(zhí)行算法加密/解密過程。
(4.3.1)算法初始化過程,包括如下步驟 (4.3.1.1)按照密鑰裝入算法設(shè)計(jì),將K和IV進(jìn)行擴(kuò)展并填入 (S
,S[1],...,S[15]). (4.3.1.2)按照如下方式運(yùn)行15拍,每拍順序計(jì)算獲得選擇數(shù)B 其中0≤A0,A1<216, 其中0≤bi≤15,i=0,1,2,3. 計(jì)算密鑰字Z 完成一次序列反饋遞歸運(yùn)算 順序執(zhí)行S[i]=S[i+1],i=0,1,2,...,15。
(4.3.1.3)按照如下方式運(yùn)行8拍,每拍完成一次序列獨(dú)立遞歸運(yùn)算 S[16]=(211+219)·S15+28·S13+228·S10 +218·S4+(5+221)·S0(mod 232-1), 順序執(zhí)行S[i]=S[i+1],i=0,1,2,...,15。
(4.3.2)密鑰字輸出過程 重復(fù)執(zhí)行如下過程,每次輸出一個(gè)32比特的密鑰字Z,每拍順序執(zhí)行如下步驟。
(4.3.2.1)獲得選擇數(shù)B 其中0≤A0,A1<216, 其中0≤Bi≤15,i=0,1,2,3. (4.3.2.2)輸出密鑰字Z (4.3.2.3)完成一次序列獨(dú)立遞歸運(yùn)算 S[16]=(211+219)·S15+28·S13+228·S10+218·S4+(5+221)·S0(mod 232-1). 順序執(zhí)行S[i]=S[i+1],i=0,1,2,...,15。
(4.3.3)加解密過程 執(zhí)行前面兩過程得到密鑰字序列流Z=(Z0,Z1,Z2,...),每個(gè)Zi都是32比特字。
(4.3.3.1)加密過程 將明文轉(zhuǎn)換為32比特字序列M=(M0,M1,M2,...),每個(gè)Mi都是32比特字。順序執(zhí)行 得到密文序列C=(C0,C1,C2,....)。
(4.3.3.2)解密過程 已知密文序列C=(C0,C1,C2,...),每個(gè)Ci都是32比特字。順序執(zhí)行 得到明文序列M=(M0,M1,M2,...)。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1、一種偽隨機(jī)序列產(chǎn)生方法,其特征在于,包括
從取值空間{1,2,...,2e-1}獲取元素,其中e是一個(gè)大于2的正整數(shù);
基于所獲取的元素及反饋多項(xiàng)式采用線性遞歸方式生成序列,所述反饋多項(xiàng)式是Z/(2e-1)上的本原多項(xiàng)式,所生成序列的初態(tài)中至少有一個(gè)元素a與2e-1互素。
2、如權(quán)利要求1所述的方法,其特征在于,模2e-1采用{1,2,...,2e-1}代表集,該方法中包括模2e-1運(yùn)算的替換實(shí)現(xiàn),具體包括
對(duì)目標(biāo)按e比特為單位進(jìn)行分組,將各分組進(jìn)行累加,和結(jié)果中超出e比特的進(jìn)位部分重新加到低位部分,得到小于2e的和值為mod 2e-1的運(yùn)算結(jié)果。
3、如權(quán)利要求1所述的方法,其特征在于,所述反饋多項(xiàng)式為f(x)=xn-(cn-1xn-1+cn-2xn-2+...+c0),在保證其本原的前提下,用于生成序列選擇反饋多項(xiàng)式應(yīng)遵循如下原則
(1)反饋抽頭位置(ci非0的位置)之間的間隔長(zhǎng)度盡量不同;
(2)序列生成過程中每一拍產(chǎn)生的新元素必須參與下一拍的反饋計(jì)算;
(3)選用具有低漢明重量的系數(shù)ci,將序列遞歸生成過程所需的復(fù)雜的模乘法運(yùn)算轉(zhuǎn)化為少量的循環(huán)移位和加法運(yùn)算;
(4)非零系數(shù)的2進(jìn)制展開中所有1的位置兩兩不同,間隔盡量不同;
(5)在算法速度許可的范圍內(nèi),提高抽頭系數(shù)cn-1,cn-2,...,c0的總重量,并且該重量為偶數(shù)。
4、一種構(gòu)建流密碼體制的方法,其特征在于,包括
采用權(quán)利要求1所述方法構(gòu)造的具有比特等價(jià)保熵性的偽隨機(jī)序列源作為核心序列源;
按照如下方式加工序列源進(jìn)而輸出密鑰字序列
在序列源的每拍狀態(tài)中,抽取固定抽頭位置的取值為選擇數(shù);
根據(jù)選擇數(shù)提取參與密鑰字合成的變化抽頭位置;
變化抽頭的取值結(jié)合重要的固定抽頭的取值綜合合成兩個(gè)待選數(shù)和一個(gè)控制數(shù);
由控制數(shù)各比特位置的0,1取值情況分別選擇兩個(gè)待選數(shù)對(duì)應(yīng)位置的取值組合成為該拍的密鑰字。
5、如權(quán)利要求4所述的方法,其特征在于,采用元素異或運(yùn)算消除核心序列源取值空間少一個(gè)元素的現(xiàn)象,使得密鑰輸出序列分布均衡。
6、如權(quán)利要求4所述的方法,其特征在于,每拍輸出一個(gè)32比特密鑰字,體制的加解密采用對(duì)位模2加運(yùn)算。
7、如權(quán)利要求4所述的方法,其特征在于,初始狀態(tài)由密鑰Key和公開隨機(jī)的初始向量IV混合擴(kuò)展而成,初始化運(yùn)轉(zhuǎn)過程中輸出的密鑰字與序列遞歸輸出的元素異或綜合重新置入狀態(tài)最后一個(gè)位置參與下一拍運(yùn)算。
全文摘要
本發(fā)明公開了一種偽隨機(jī)序列產(chǎn)生方法,包括從取值空間{1,2,...,2e-1}獲取元素,e為大于2的正整數(shù);基于所述元素及Z/(2e-1)上的本原多項(xiàng)式采用線性遞歸方式生成序列,該序列的初態(tài)中至少有一個(gè)元素與2e-1互素。得到具有比特等價(jià)保熵的偽隨機(jī)序列,該序列蘊(yùn)含豐富的非線性結(jié)構(gòu),周期增長(zhǎng)迅速,可使得序列周期和序列互異圈個(gè)數(shù)達(dá)到平衡,可大大降低算法設(shè)計(jì)中對(duì)于序列源加工的復(fù)雜性,使得序列密碼體制簡(jiǎn)潔、安全。本發(fā)明還提供一種構(gòu)建流密碼體制的方法,采用前述方法構(gòu)造的具有比特等價(jià)保熵性的偽隨機(jī)序列作為核心序列源;在密鑰字合成過程中,采用元素異或運(yùn)算使得密鑰輸出序列分布均衡,提供一個(gè)簡(jiǎn)潔、安全、高效的序列密碼算法,為數(shù)據(jù)安全提供保障。
文檔編號(hào)G09C1/00GK101674180SQ20081014950
公開日2010年3月17日 申請(qǐng)日期2008年9月10日 優(yōu)先權(quán)日2008年9月10日
發(fā)明者朱宣勇, 戚文峰, 甜 田 申請(qǐng)人:中國(guó)人民解放軍信息工程大學(xué)