專利名稱:基于多變量二次方程的可證明安全的密鑰流生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及密碼學(xué),尤其涉及可證明安全的密鑰流生成器。此外,由于隨機算法和現(xiàn)代 網(wǎng)絡(luò)通信技術(shù)都需要頻繁使用隨機序列,因此本發(fā)明也涉及到這些領(lǐng)域。
背景技術(shù):
本發(fā)明是基于可證安全密碼理論的,在此意義下描述了密鑰流生成器的研究背景。
很多密碼算法都需要使用足夠長的隨機序列來保證安全性,但要得到長的隨機序列的代 價往往很高,實際應(yīng)用中常常代之以算法產(chǎn)生的偽隨機序列。本算法設(shè)計了一個偽隨機序列 生成算法,通常稱為密鑰流生成器。直觀地說,密鑰流生成器是一個確定性的算法,它接受 一個較短的初始內(nèi)部狀態(tài),通過多次迭代計算產(chǎn)生出一個長的和真隨機序列在計算上不可區(qū) 分的偽隨機序列,以代替對真隨機密鑰流的需求,同時又能滿足計算上的安全性,從而實現(xiàn) 一個與"一次一密"相似的加密系統(tǒng)。在實際應(yīng)用中,由于很難找到有足夠大擴張率的函數(shù), 一般的構(gòu)造方法是通過多次迭代,將輸出串聯(lián)起來以得到足夠長的偽隨機序列。這主要體現(xiàn) 在迭代方程組S^2,,…,2 +1)上,前n比特值用來迭代作為每次的輸入x,最后一比特輸出 作為密鑰流。圖1表示現(xiàn)有密鑰流生成器的功能方框圖,其中模塊101表示驅(qū)動部分f ,模 塊102表示非線性組合部分g,驅(qū)動部分/控制生成器的狀態(tài)序列,并為非線性組合部分提 供統(tǒng)計性能良好的輸入,非線性組合部分《輸出具有較高線性復(fù)雜度的密鑰流,化}為狀態(tài)序 列,(Z,J表示第i次迭代輸出的偽隨機值,最終串聯(lián)可得到任意長度的偽隨機序列。
現(xiàn)代密碼學(xué)是建立在計算復(fù)雜性基礎(chǔ)上的,基于各種困難性假設(shè),己經(jīng)出現(xiàn)了很多密鑰 流生成器的構(gòu)造方法,如基于大數(shù)分解問題、離散對數(shù)問題、RSA問題、DDH問題等的生成器, 由這些方法產(chǎn)生的偽隨機序列滿足可證安全性,但是效率都太低。如由于基于的困難行太強, 為生成一個隨機位Gennaro生成器至少要消耗1500個基本運算以保證安全,因此不適于實用。
本發(fā)明的安全性基礎(chǔ)是基于有限域上的多變量二次多項式的難解性問題(MQ問題),下面 給出一個簡單定義
給定有限域GF(q), n個變量的二次多項式Q(A,...,;OeGF(q)[i,,...,;c"],可以表示為
多項式的系數(shù)a", P,, y都是GF(q)中的元素。特別地,當q=2時,單項式、^=、。 解多變量二次多項式方程的問題(MQ問題)是如下定義的給定一個GF(q)上有m個二次
多項式的多變量二次方程組S=(Q1,"*, g ),尋找能滿足2,")=0,對任意的i(l^i^m)的
xeGF(q),如果存在這樣的x。
當n和m分別取不同的值時,MQ問題可以是很容易求解的,也可以很難求解。當m=l時,解的個數(shù)是己知的,并且要找到一個解也很容易。當m比n小很多時,求解也是容易的。 相反地,當m〉n時,如果在該方程組中,有N=w(" + l)/2 + l (q二2)或w(n + 3)/2 + l (q#2), 或更一般來說接近N個線性獨立的二次多項式,那么線性求解該方程組是容易的,求解的復(fù) 雜度僅為0("6)。但一般情況下,即使是在GF(2)上或任何有限域上,MQ問題是NP困難的。 要使MQ問題能夠適用于密碼學(xué)應(yīng)用,不僅僅需要在最壞的情況下是難解問題,而且需要 在取了合適的m和n后,仍然是難解的。當m接近n時,是最難解的。當ra=n, q=2,已有的 最好的求解算法的復(fù)雜度是2"—和窮搜索的復(fù)雜度2"是非常接近的,對一個隨機的n 值超過100實例來說,完全超出了現(xiàn)有的計算能力。由于多項式迭代只需多項式求值計算, 因此基于該問題的密碼算法往往高效;另一方面,由于目前求解該問題的算法還沒有找到, 也使得基于該問題的密鑰流算法設(shè)計適用于安全性較高的領(lǐng)域。
發(fā)明內(nèi)容
本發(fā)明提供了一個密鑰流生成器的構(gòu)造方法,它的安全性基于有限域上多變量二次方程 組的難解性,因此是可證安全的。同時,由于算法的效率很高,很適于實際應(yīng)用。 本發(fā)明所述的密鑰流生成器包括如下步驟
步驟一,隨機地確定一個有限域GF(q),隨機選擇其上n+l個多變量二次多項式,組成 非退化的或至少擁有和非退化的方程組接近的高的階的方程組S:(込,…,g +1),作為密鑰流 生成器的迭代函數(shù)。
步驟二,隨機選擇GF(q)上長為lKl的變長序列密鑰K,長為IIVI的二次序列K), 1}上的 初始向量IV,用兩個仔細選擇的由n個有n個變量的多項式組成的二次多項式方程組S。 , & , 首先設(shè)n比特的K值為初始狀態(tài)x,對IIVI比特的JR到IV|1V|的IV值來說,若=0,則用S。 (x)來代替x;若/K,-l,則用& (x)來代替x。如此IIVl步產(chǎn)生了一個依賴于密鑰K和初 始向量IV的內(nèi)部狀態(tài)x,再用步驟一中的密碼體制迭代IIVI個額外的時間,但不輸出密鑰流, 以更好的變化內(nèi)部狀態(tài)x。
步驟三,當x是當前的內(nèi)部狀態(tài)值時計算GF(q)上n+l元的S^^,…,"+1)的值,輸出
s咖""a+,w的密鑰值;
步驟四,將前次迭代產(chǎn)生的n個元&,(;c戶(Ql,…,2")用來更新內(nèi)部狀態(tài)x。
上面算法的輸出序列是偽隨機的,其安全性取決于多變量二次方程組的難解性,即由該 困難問題可以用反證法證明這個輸出是偽隨機的,因此將輸出序列和同長真隨機序列進行區(qū) 分的能力可用于求解多變量二次方程組問題,且本算法的輸出長度是可變的,可根據(jù)明文的 長度產(chǎn)生相應(yīng)長度的密鑰流,避免了產(chǎn)生過長的密鑰流的情況,減少了計算資源的消耗。圖 2描述了算法第i次迭代的執(zhí)行框架圖。分析以上步驟可知該算法每求解一次多項式方程組 的值可輸出l個隨機位,且其安全水平可達到28°。
圖1為現(xiàn)有密鑰流生成器的功能框架圖2為本發(fā)明所描述的密鑰流生成器的第i次迭代框架圖; 圖3為本發(fā)明的具體實施步驟圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案作詳細說明。
圖3顯示了具體執(zhí)行本發(fā)明的步驟圖,為了清楚地描述本發(fā)明,下面描述一個具體的實
施例,細化圖3各步驟如下
步驟301,按照現(xiàn)在普遍的計算能力,可以選擇安全級別為28°,即使得破解本發(fā)明需要 大約28°次運算;同時為了滿足MQ問題的困難性,隨機地選擇一個大素數(shù)q,構(gòu)造有限域GF(q); 選擇內(nèi)部狀態(tài)長『160bits,最大密鑰流長度L=24°,初始密鑰流K長度lK卜80bits, IV長度 |lV|=80bits;
步驟302,從有限域GF(q)中隨機地選擇系數(shù)c^, A, y (l&^j^n)構(gòu)造多項式
2") = Lo—+L—,,、 選擇n個這樣的a(x) (l<=k〈=n),構(gòu)造出一個MQ 問題的實例S=(g, ,, 。再用同樣的方法構(gòu)造出由n個隨機選擇的有n個變量的多變量 方程組,作為用來產(chǎn)生內(nèi)部狀態(tài)x的迭代函數(shù); ""
步驟三,選擇80位的GF(q)上的隨機變量序列密鑰K和jO, l)上的隨機向量IV,首先設(shè)n比 特的K值為初始x,從IV,到IVIIV|,如此更新x的值若/r' =0,則用S。 (x)來代替x,若巧=1, 則用S, (x)來代替x,再將產(chǎn)生的x代入到生成器模型中先迭代llVl個時間,但不輸出密鑰 流,以獲得復(fù)雜度更好的x。然后再用密鑰流發(fā)生器模型根據(jù)明文長度產(chǎn)生出相應(yīng)長度的密 鑰。
基于MQ問題來構(gòu)建可證安全的流密碼的優(yōu)勢,是通過和已知最快的由Gennaro,提議的 基于離散對數(shù)問題的構(gòu)建的可證安全的流密碼的比較來顯示出來的_一它的初始狀態(tài)長 n=3000 bits(和上面的n=350和初始狀態(tài)長256相比)且每次迭代應(yīng)用3000-bit進行335次 模冪以產(chǎn)生2775比特,且Gennaro^中的安全性分析中沒有設(shè)想到在時間1=28°內(nèi)產(chǎn)生矛盾 的密鑰流序列區(qū)分算法的存在,只考慮在時間T二3.5.1(^s2"內(nèi)的區(qū)分算法。另一個優(yōu)勢是 MQ是NP-困難的,而離散對數(shù)問題只是NPnco-NP困難的。此外,已知最好的解離散對數(shù)問 題的算法是次指數(shù)的,而解MQ問題的算法是指數(shù)的。
本說明書只描述了所述算法的細節(jié),而未更多地涉及其應(yīng)用,但由于流密碼算法在密碼學(xué)和 網(wǎng)絡(luò)通信中的重要價值,其應(yīng)用是相當廣泛的,所以本發(fā)明的精神和范圍不應(yīng)該局限于此處 說描述的實例。
權(quán)利要求
1一種密鑰流序列的生成方法,其特征為,這個密鑰流是由有限域上的多變量二次多項式來定義的。選擇有限域上多項式迭代問題的實例S=(Q1,…,Qn+1),再選擇隨機密鑰K和初始向量IV,首先用兩個仔細地隨機選擇的由n個有n變量的多項式組成的二次多項式方程組S0,S1來初始化內(nèi)部狀態(tài)x,然后將得到的x代入方程組S,輸出值的前n個用來進行下次迭代,而最后一位直接輸出。照此方法計算下去可以得到一個長L的輸出序列,這個輸出序列是偽隨機的;
2.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,有限域上的多項式方程組是二次的;
3.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,內(nèi)部狀態(tài)長n建議取160bits;
4.如權(quán)利1所述的寧鑰流序列生成方法,其特征在于,密鑰K的長度lKl是小于n的, 建議取80bits;
5.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,初始向量長llVl是小于n的, 建議取80bits;
6.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,每次迭代可輸出一位密鑰流;
7.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,數(shù)值L至少有2" bits;
8.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,這個密鑰流生成器是可證安全 的,生成的偽隨機序列和均勻分布的隨機序列是多項式時間內(nèi)計算上不可區(qū)分的;
9.如權(quán)利1所述的密鑰流序列生成方法,其特征在于,這個密鑰流生成器可根據(jù)變長的 明文要求來生成相應(yīng)長度的密文。
全文摘要
本發(fā)明設(shè)計了一種密鑰流生成器,能夠在計算資源消耗很小的情況下輸出任意長度的偽隨機序列,且其中的生成算法是可證明安全的,其安全性基于解有限域上多變量二次方程組問題的困難性,可以滿足可證明安全的密鑰流生成器的設(shè)計需要,可應(yīng)用于安全性要求較高的領(lǐng)域。在一個實例中,本發(fā)明是由一個GF(q)上的多變量多項式組定義的密鑰流生成器,q是一個大素數(shù)。選擇合適的參數(shù),可在較快的速度下根據(jù)明文長度的需求產(chǎn)生任意比特的密鑰流,同時能達到2<sup>80</sup>的安全級別,可以滿足目前大多數(shù)密碼應(yīng)用的需要。
文檔編號H04L9/18GK101677270SQ20081004610
公開日2010年3月24日 申請日期2008年9月19日 優(yōu)先權(quán)日2008年9月19日
發(fā)明者衛(wèi)琳娜, 廖永建, 虎 熊, 秦志光, 聶旭云, 馬秋明 申請人:電子科技大學(xué)