隨機(jī)數(shù)生成器和流密碼的制作方法
【專利摘要】用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備(100),所述電子隨機(jī)數(shù)生成設(shè)備包括:電子參數(shù)存儲(chǔ)裝置(110),其被配置成存儲(chǔ)多個(gè)函數(shù),以及為多個(gè)函數(shù)中的每個(gè)函數(shù)存儲(chǔ)相關(guān)聯(lián)的模數(shù),不是所有的模數(shù)都相等;以及電子函數(shù)求值設(shè)備(120),其被配置成生成隨機(jī)數(shù)的內(nèi)部序列,所述函數(shù)求值設(shè)備被配置成通過如下方式生成隨機(jī)數(shù)的內(nèi)部序列的下一個(gè)數(shù),即,為多個(gè)函數(shù)中的每個(gè)函數(shù),針對(duì)隨機(jī)數(shù)的內(nèi)部序列的先前生成值按與正求值的函數(shù)相關(guān)聯(lián)的模數(shù)取模來對(duì)函數(shù)求值,從而獲得多個(gè)求值結(jié)果,并且將組合函數(shù)應(yīng)用到多個(gè)求值結(jié)果,從而獲得內(nèi)部序列的下一個(gè)數(shù);以及輸出(140),其被配置成根據(jù)所生成的內(nèi)部序列的下一個(gè)數(shù),生成隨機(jī)數(shù)序列的下一個(gè)數(shù)。
【專利說明】隨機(jī)數(shù)生成器和流密碼
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及生成隨機(jī)數(shù)序列,并且涉及借助于隨機(jī)數(shù)序列利用流密碼(stream cipher)對(duì)數(shù)據(jù)序列進(jìn)行加密或者解密。
【背景技術(shù)】
[0002] 隨機(jī)數(shù)生成對(duì)許多密碼學(xué)算法而言是重要要素。例如,需要隨機(jī)數(shù)來產(chǎn)生現(xiàn)時(shí) (nonce)、密鑰(包括會(huì)話密鑰)等等。同樣可能需要隨機(jī)數(shù)來控制密碼學(xué)算法自身。需要特 別大數(shù)量的隨機(jī)數(shù)的一種類型的密碼學(xué)算法是所謂的流密碼。在流密碼中,明文的流是通 過將其與隨機(jī)數(shù)的流相組合而加密的;兩個(gè)流典型地被異或在一起。優(yōu)選的是不使關(guān)于明 文流的統(tǒng)計(jì)學(xué)假設(shè)發(fā)生,這意味著隨機(jī)數(shù)的流對(duì)于攻擊必須特別有彈性(resilient);尤其 是因?yàn)樗暮艽蟮牧繉?duì)于攻擊者而言都是可得到的。要理解的是,當(dāng)提到生成隨機(jī)數(shù)時(shí),并 非意味著真隨機(jī)數(shù),而是意味著偽隨機(jī)數(shù)。
[0003] 隨機(jī)數(shù)也在密碼學(xué)領(lǐng)域之外被使用。例如,隨機(jī)數(shù)在統(tǒng)計(jì)學(xué)中得以使用。仿真也可 能使用隨機(jī)數(shù)來對(duì)真實(shí)世界事件的不可預(yù)測(cè)性建模。然而,在密碼學(xué)領(lǐng)域中置于隨機(jī)數(shù)上 的需求不同于那個(gè)領(lǐng)域之外的那些需求。在密碼學(xué)中,安全性擁有壓倒一切的重要性。密 碼學(xué)和統(tǒng)計(jì)學(xué)兩者都偏好所生成的隨機(jī)數(shù)與真隨機(jī)數(shù)是難以分辨的。然而,通向這的途徑 是不同的。在統(tǒng)計(jì)學(xué)和相關(guān)的領(lǐng)域,沒有相關(guān)的統(tǒng)計(jì)測(cè)試可以檢測(cè)出兩個(gè)流之間的區(qū)別就 足夠了。然而,在密碼學(xué)中,必須假設(shè)的是,攻擊者愿意在調(diào)查被推測(cè)的隨機(jī)數(shù)中投入顯著 的計(jì)算資源。例如,攻擊者可能對(duì)從過去的值預(yù)測(cè)未來的值感興趣。
[0004] 將在密碼學(xué)中使用的隨機(jī)數(shù)的流可以優(yōu)選地是快速生成但僅需要少量資源的;t匕 方說小的智能卡或者RFID芯片。與此同時(shí),它必須相對(duì)于愿意投入不成比例的計(jì)算量的攻 擊者是安全的。這些相互矛盾的需求已經(jīng)導(dǎo)致了許多提出的設(shè)計(jì)。
[0005] 例如,一種類型的隨機(jī)數(shù)生成器是所謂的線性移位寄存器。線性移位寄存器產(chǎn)生 比特序列。序列中的下一比特通過推算序列中所選擇的先前比特的固定組合而被計(jì)算出 來。線性移位寄存器具有長(zhǎng)周期、相對(duì)好的統(tǒng)計(jì)屬性并且是在使用少量資源的情況下很快 的。但是,它們?cè)诿鎸?duì)密碼學(xué)攻擊時(shí)是不安全的:可以使用所謂的Berlekamp-Massey算法 來攻擊流。
[0006]JamesEGentle的書的章節(jié):在:"RandomNumberGenerationandMonteCarlos Methods(SecondEdition),' 中的"ChapterI.SimulatingRandomNumbersfroma UniformDistribution",2005 年I月I日(2005-01-01),Springer,紐約,XP055082923, ISBN:978-0-38-700178-4,第1-56頁公開了若干現(xiàn)有技術(shù)的解決方案。它在第46頁的I. 8 節(jié)中描述了隨機(jī)數(shù)生成經(jīng)常可以通過將一個(gè)以上的生成器相組合而得以改進(jìn),并且被組合 的生成器可以是任何類型的。它還描述了一種使用線性同余生成器和兩個(gè)移位寄存器生成 器的組合生成器。
[0007] 改進(jìn)來自于取得兩個(gè)獨(dú)立生成的線性移位寄存序列并且以某種非線性方式將它 們組合。這種方法的示例是所謂的收縮(shrinking)生成器或者交替步進(jìn)(alternating St印)生成器。這種思想在于,具有兩個(gè)獨(dú)立線性移位寄存器會(huì)使得必須被確定以攻擊序列 的參數(shù)數(shù)量加倍;而且兩個(gè)不相關(guān)的參數(shù)集必須從它們的作用在其中被混合的單個(gè)流中以 某種方式推導(dǎo)出來。
[0008] 的確,它證實(shí)了:兩個(gè)由線性移位寄存器生成的獨(dú)立序列的組合確實(shí)增加了密碼 學(xué)攻擊的難度。然而,盡管如此,這樣的攻擊仍然是可能的,雖然它們需要從更大量的隨機(jī) 數(shù)入手來研究。因此,仍然存在對(duì)于改進(jìn)的隨機(jī)數(shù)生成器的需要。
【發(fā)明內(nèi)容】
[0009] 將有利的是具有一種改進(jìn)的隨機(jī)數(shù)生成器,尤其是供密碼學(xué)算法所用。本發(fā)明由 獨(dú)立權(quán)利要求限定。從屬權(quán)利要求限定有利的實(shí)施例。
[0010] 提供了用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備。電子隨機(jī)數(shù)生成設(shè)備包括電 子參數(shù)存儲(chǔ)裝置、電子函數(shù)求值設(shè)備和輸出。電子參數(shù)存儲(chǔ)裝置被配置成存儲(chǔ)多個(gè)函數(shù)并 且為多個(gè)函數(shù)中的每個(gè)函數(shù)存儲(chǔ)相關(guān)聯(lián)的模數(shù)(modulus)。不是所有的模數(shù)都相等。
[0011] 電子函數(shù)求值(evaluation)設(shè)備被配置成生成隨機(jī)數(shù)的內(nèi)部序列。電子函數(shù)求 值設(shè)備被配置成通過以下方式生成隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù),即:為多個(gè)函數(shù)中的 每個(gè)函數(shù),針對(duì)該隨機(jī)數(shù)的內(nèi)部序列中先前生成的數(shù)按與正求值的函數(shù)相關(guān)聯(lián)的模數(shù)取模 來對(duì)該函數(shù)求值,從而獲得多個(gè)求值結(jié)果,并且將組合函數(shù)應(yīng)用到該多個(gè)求值結(jié)果,以獲得 該內(nèi)部序列中的下一個(gè)數(shù)。
[0012] 輸出被配置成根據(jù)該內(nèi)部序列中的所生成的下一個(gè)數(shù),生成隨機(jī)數(shù)序列的下一個(gè) 數(shù)。
[0013] 本發(fā)明人洞悉到,從兩個(gè)獨(dú)立的序列生成隨機(jī)數(shù)序列不一定是優(yōu)點(diǎn)。與其說使問 題復(fù)雜化,倒不如說獨(dú)立性也可能幫助了攻擊者。實(shí)際上,對(duì)于組合的線性移位寄存器的攻 擊試圖將流彼此隔離,從而分開地攻擊它們。典型地,這通過對(duì)一個(gè)流作出某種假設(shè)("猜 想"),并且通過針對(duì)另一個(gè)流進(jìn)行推算來驗(yàn)證那些猜想而完成。例如,在T.Johansson發(fā) 表于ASIACRYPT1998:342-356 的論文'ReducedComplexityCorrelationAttackson TwoClock-ControlledGenerators"中描述了對(duì)于交替步進(jìn)生成器的攻擊。建議等待含有 數(shù)量較少的一的、長(zhǎng)度為M的分段,并且作出假設(shè):僅有一半的零來自于第一線性移位寄存 器。隨后假設(shè):所有的一和剩余的零均來自于第二線性移位寄存器。
[0014] 由本發(fā)明人提出的隨機(jī)數(shù)生成器克服了這個(gè)固有的缺陷。隨機(jī)數(shù)的內(nèi)部序列(即, 對(duì)用于生成隨機(jī)數(shù)序列的電子設(shè)備而言是內(nèi)部的)是通過將組合函數(shù)應(yīng)用到多個(gè)求值結(jié)果 而生成的。多個(gè)求值結(jié)果不是獨(dú)立地獲得的,而是,它們每個(gè)都取決于相同的內(nèi)部序列。對(duì) 于內(nèi)部隨機(jī)序列的較大參數(shù)狀態(tài)和獨(dú)立貢獻(xiàn)是通過從一些函數(shù)獲得多個(gè)求值結(jié)果而達(dá)到 的,所述函數(shù)通過不同模數(shù)進(jìn)行求值。從數(shù)學(xué)上說,這意味著多個(gè)求值結(jié)果是從數(shù)學(xué)上不相 容的結(jié)構(gòu)獲得的。例如,對(duì)于模數(shù)是質(zhì)數(shù)的情況,這些數(shù)學(xué)結(jié)構(gòu)是所謂的"域(field)",在一 個(gè)域與另一個(gè)域之間的加法和乘法之間不存在關(guān)系。當(dāng)模數(shù)不(全)是質(zhì)數(shù)時(shí),相似的觀測(cè) 結(jié)果仍適用,在這種情況下,作為結(jié)果的結(jié)構(gòu)可能被表征為環(huán)(ring)。
[0015] 優(yōu)選地,對(duì)多個(gè)函數(shù)的求值共享至少一個(gè)先前值作為共享的輸入。再次地,多個(gè)求 值結(jié)果不是獨(dú)立地獲得的,而是,它們每個(gè)都取決于相同的內(nèi)部序列,而且取決于該序列中 的共享值。在這種情況下,先前值的獲得可以為所有函數(shù)立即完成。例如,函數(shù)求值設(shè)備可 以被配置用于獲得隨機(jī)數(shù)的內(nèi)部序列中的先前生成的數(shù),該所獲得的數(shù)可以在所有函數(shù)求 值中使用??商鎿Q地,每個(gè)求值單獨(dú)地獲得先前生成的數(shù)。
[0016] 借助于這些步驟,本發(fā)明人確保對(duì)于隨機(jī)性的貢獻(xiàn)來自于多個(gè)源,每個(gè)源都隨其 帶有添加復(fù)雜度的參數(shù),而與此同時(shí),避免生成多個(gè)完全獨(dú)立的序列,其可能被攻擊者利用 來簡(jiǎn)化攻擊。換言之,獨(dú)立性不是從獨(dú)立生成的序列獲得的,而是通過不相容的下層數(shù)學(xué)結(jié) 構(gòu)獲得的。
[0017] 在優(yōu)選的實(shí)施例中,隨機(jī)數(shù)序列被使用在諸如流密碼的密碼學(xué)算法中。
[0018] 存儲(chǔ)某個(gè)函數(shù)可通過存儲(chǔ)函數(shù)的系數(shù)來完成。例如,可以定義覆蓋許多不同函數(shù) 的函數(shù)模板;所存儲(chǔ)的函數(shù)通過從模板中進(jìn)行選擇(比方說通過選擇系數(shù)),而從許多不同 的函數(shù)中選擇函數(shù)。在優(yōu)選的實(shí)施例中,函數(shù)的一個(gè)或者多個(gè)是多項(xiàng)式。
[0019] 非多項(xiàng)式函數(shù)的示例包括所謂的s-b〇X及其級(jí)聯(lián)。S-b〇X是因其高非線性屬性而 被選取的表。例如,人們可以使用AES的所謂"SubBytes"步驟,但是代替于使用固定的AES S-box,人們可以使用通過參數(shù)從s-box的更大集合中選擇的S-box。優(yōu)選地,s-box陣列與 某些擴(kuò)散函數(shù)(diffusingfunction)相組合,比方說其后跟隨有多項(xiàng)式。
[0020] 在密碼學(xué)中,當(dāng)密碼學(xué)算法的安全性可能鏈接到某個(gè)不同領(lǐng)域中的問題的疑難性 時(shí),這被認(rèn)為是優(yōu)點(diǎn)。具有這樣的鏈接增加了置于這樣的密碼系統(tǒng)中的信任度。存在的問 題是,如何為給出的密碼系統(tǒng)找到這樣的問題,或者相反地,一旦識(shí)別了疑難問題,如何獲 得密碼系統(tǒng)。增加難度的是,在過去,疑難問題經(jīng)常在廣泛不同的領(lǐng)域中獲得,即,數(shù)論、晶 格理論、離散優(yōu)化、NP完整性等等。
[0021] 在最優(yōu)選的實(shí)施例中,多個(gè)函數(shù)全部都是多項(xiàng)式。實(shí)際上,在這種情況下,對(duì)于系 統(tǒng)的攻擊顯現(xiàn)出與解決另一個(gè)疑難問題有關(guān):特別地,在多項(xiàng)式都是1次的情況下,對(duì)于系 統(tǒng)的攻擊與解決所謂的"隱藏?cái)?shù)問題"有關(guān)。對(duì)于較高次多項(xiàng)式,即,至少一個(gè)具有2次或者 更高次,對(duì)于隨機(jī)數(shù)序列的攻擊與所謂的"擴(kuò)展的隱藏?cái)?shù)問題"有關(guān)。在優(yōu)選的實(shí)施例中, 多個(gè)函數(shù)全部都是至少2次的多項(xiàng)式。例如,人們可以正好取得兩個(gè)多項(xiàng)式,每個(gè)多項(xiàng)式都 是2次的。
[0022] 相關(guān)聯(lián)的模數(shù)不是全部相等的。這確保即便是在組合之后,至少兩個(gè)數(shù)學(xué)上不相 容的結(jié)構(gòu)也得以保留。使所有的模數(shù)都不相等將使不相容結(jié)構(gòu)的數(shù)量最大化,因此這是優(yōu) 選的。可替換地,或者甚至更好的是附加地,人們可要求與多個(gè)函數(shù)相關(guān)聯(lián)的模數(shù)是互質(zhì) 的。具有公約數(shù)不一定使結(jié)構(gòu)相同,然而,可能存在某些重疊,例如,在由公約數(shù)生成的理想 數(shù)(ideal)上。為了甚至消除這種部分相容性的偶然性,具有互質(zhì)的模數(shù)是優(yōu)選的。在實(shí) 踐中,這可以通過將模數(shù)選為不同的質(zhì)數(shù)而達(dá)成。在實(shí)施例中,人們可以有具有第一模數(shù)的 第一多項(xiàng)式和具有第二模數(shù)的第二多項(xiàng)式,所述第二模數(shù)與所述第一模數(shù)不同。
[0023] 模數(shù)的大小與系統(tǒng)的安全性有關(guān)。作為示例,商業(yè)上的安全系統(tǒng)可以使用128比 特長(zhǎng)的模數(shù)。更長(zhǎng)的模數(shù)也是可能的,比方說長(zhǎng)于或等于128、長(zhǎng)于或等于256 ;或者更短的 模數(shù)也是可能的,比方說長(zhǎng)于或等于64比特。
[0024] 在優(yōu)選的實(shí)施例中,先前生成的數(shù)可以是緊靠地先前生成的數(shù),S卩,如果順次的序 列已經(jīng)生成Xlri,xn_2等等,那么下一個(gè)生成的數(shù)至少可以取決于Xlri。
[0025] 函數(shù)可以僅取決于單個(gè)先前值,然而這不是必須的,例如,函數(shù)可以是多元的,t匕 方說多元多項(xiàng)式,諸如二元多項(xiàng)式。在實(shí)施例中,函數(shù)的至少一個(gè)是具有多個(gè)(即,數(shù)量大于 I)變量的多元函數(shù),函數(shù)求值設(shè)備被配置成獲得與變量數(shù)量相同數(shù)量的、隨機(jī)數(shù)的內(nèi)部序 列中先前生成的數(shù),并且至少針對(duì)該多個(gè)所獲得的先前生成的數(shù)來對(duì)該多元函數(shù)求值。優(yōu) 選地,在用于多個(gè)函數(shù)、來自內(nèi)部序列的被使用的先前值之間存在某些重疊或者甚至完全 的重疊。
[0026] 對(duì)于組合函數(shù)而言,幾種選擇是可能的。用于組合函數(shù)的優(yōu)選選擇是整數(shù)加法, 艮P,在自然數(shù)上定義的加法。整數(shù)加法把從不同模數(shù)獲得的不相容性很好地混合。然而,其 它選擇也是可能的。對(duì)于組合函數(shù)來說,另一個(gè)可能性是異或函數(shù),其被應(yīng)用到所有函數(shù)的 求值結(jié)果的二進(jìn)制表示。
[0027] 輸出函數(shù)可以簡(jiǎn)單地將內(nèi)部序列復(fù)制到外部,然而,本發(fā)明人已經(jīng)發(fā)現(xiàn),通過對(duì)外 部世界屏蔽函數(shù)的輸出的一部分,安全性甚至被更進(jìn)一步改進(jìn)。例如,輸出可以被配置成通 過從內(nèi)部序列生成的下一個(gè)數(shù)選擇若干比特(b) (S卩,選擇比特中的某些但不是所有),來生 成隨機(jī)數(shù)序列的下一個(gè)數(shù)。例如,人們可以規(guī)定用于取得哪些比特的模式,比方說比特3、5、 8、13、21、34、55、89 (在這個(gè)情況中,b=8)。已經(jīng)發(fā)現(xiàn)有利的是,將值"b"與設(shè)計(jì)的其它部分 (例如,如下文描述的組合函數(shù))相鏈接。在優(yōu)選的實(shí)施例中,選擇b個(gè)最低有效比特。
[0028] 已經(jīng)發(fā)現(xiàn)有利的是,將歸約(reduction)步驟也包括到組合函數(shù)中,典型地作為 組合的最后步驟。例如,組合函數(shù)可以包括對(duì)組合模數(shù)進(jìn)行模運(yùn)算。組合被選擇,使得與 多個(gè)函數(shù)相關(guān)聯(lián)的多個(gè)模數(shù)中的至少一個(gè)具有以下屬性:組合模數(shù)減去多個(gè)模數(shù)中的至少 一個(gè)模數(shù)后是2的冪的倍數(shù),更優(yōu)選地,雖然有不同的倍數(shù),但是所有的模數(shù)都具有這樣的 差。如果更多比特在電子設(shè)備之外是可見的,那么可以選擇更大的二的冪。倍數(shù)中的乘數(shù) 相對(duì)于系數(shù)而言是較小的,例如,小于二的冪。例如,人們可以將二的冪(2~b)取為2~8或 者2~16,那么2的冪的倍數(shù)可以取為小于2~2b,即分別為2~16或者2~32。
[0029] 例如,在實(shí)施例中,所有的模數(shù)HIi均滿足要求Hii=NjbCi,而IciI<2b,其中N是128 比特大奇數(shù),比方說隨機(jī)數(shù)或者質(zhì)數(shù)。值N可以被取為組合模數(shù)。這個(gè)選擇增加了(擴(kuò)展) 隱藏?cái)?shù)問題的難度。
[0030] 降低輸出比特的數(shù)量將隨機(jī)數(shù)序列與所謂的噪聲多項(xiàng)式內(nèi)插問題相聯(lián)系。至今已 知的是:噪聲多項(xiàng)式內(nèi)插問題僅可能被使用基于晶格的方案、以相當(dāng)大的計(jì)算努力來進(jìn)行 攻擊。例如,參見DanielBleichenbacher和PhongQ.Nguyen的論文"NoisyPolynomial InterpolationandNoisyChineseRemaindering"。還沒有提出鏈接到噪聲多項(xiàng)式內(nèi)插 問題的隨機(jī)數(shù)生成。
[0031]如果偶然地,其它函數(shù)碰巧是不同尋常地小或者大的話,則可以說,從個(gè)體函數(shù)到 輸出的泄漏是最大的??梢韵胂螅艨苫谝韵录僭O(shè)(猜想):輸出的特定串對(duì)應(yīng)于大多數(shù) 函數(shù)的小值,以使得差不多所有貢獻(xiàn)都來自于一個(gè)函數(shù)。雖然目前還不知道這樣的攻擊,但 是它會(huì)遵循對(duì)于已組合序列的攻擊的模式。為了主動(dòng)挫敗這樣的企圖,在實(shí)施例中,使用測(cè) 試函數(shù),其確定一個(gè)函數(shù)的貢獻(xiàn)是否比其它函數(shù)的那些貢獻(xiàn)要大得多,并且如果是的話,將 阻擋輸出去得到這個(gè)值。隨后執(zhí)行下一個(gè)迭代。在實(shí)施例中,函數(shù)求值設(shè)備被配置成將測(cè) 試函數(shù)應(yīng)用到隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù),從而確定是否允許輸出去訪問隨機(jī)數(shù)的內(nèi) 部序列中的下一個(gè)數(shù),并且其中假如測(cè)試函數(shù)確定允許訪問,則輸出根據(jù)所生成的內(nèi)部序 列中的下一個(gè)數(shù)來生成隨機(jī)數(shù)序列的下一個(gè)數(shù),否則,函數(shù)求值設(shè)備生成內(nèi)部序列中的下 一個(gè)數(shù),直到測(cè)試函數(shù)確定允許輸出去訪問內(nèi)部序列中的該下一個(gè)數(shù)。
[0032] 例如,如果所生成的數(shù)小于閾值(例如,在〃b〃個(gè)比特由輸出函數(shù)輸出的情況下是 2~b)或者大于閾值(例如,在也使用了模歸約的情況下是大于N_2~b),或者兩種情況都存在 的話,則測(cè)試函數(shù)可以不允許訪問。
[0033] 本發(fā)明另外的方面涉及用于利用流密碼對(duì)數(shù)據(jù)序列加密的電子流密碼設(shè)備,以及 用于利用流密碼對(duì)數(shù)據(jù)序列解密的電子流密碼設(shè)備。電子流密碼設(shè)備包括用于生成隨機(jī) 數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備、參數(shù)生成設(shè)備和組合設(shè)備。參數(shù)生成設(shè)備被配置成獲得密 碼學(xué)密鑰,比方說接收密鑰或者生成密鑰等等,以及配置電子設(shè)備的電子參數(shù)存儲(chǔ)裝置,用 于依賴于密碼學(xué)密鑰而生成隨機(jī)數(shù)序列。組合設(shè)備被配置用于將由電子設(shè)備生成的隨機(jī)數(shù) 序列與數(shù)據(jù)序列相組合,從而分別獲得加密或者解密的數(shù)據(jù)序列,所述電子設(shè)備用于依賴 于所配置的電子參數(shù)存儲(chǔ)裝置而生成隨機(jī)數(shù)序列。例如,參數(shù)生成設(shè)備可以將密鑰擴(kuò)展函 數(shù)應(yīng)用到密鑰,并且從其取得用于函數(shù)的系數(shù),比方說多項(xiàng)式、模數(shù)和/或內(nèi)部序列的初始 值。組合設(shè)備可將數(shù)據(jù)序列與隨機(jī)數(shù)序列相異或。
[0034] 例如,在實(shí)施例中,參數(shù)生成設(shè)備被配置成利用根據(jù)密碼學(xué)密鑰確定的多個(gè)函數(shù) 來配置用于生成隨機(jī)數(shù)序列的電子設(shè)備的電子參數(shù)存儲(chǔ)裝置,所述隨機(jī)數(shù)序列使用根據(jù)密 碼學(xué)密鑰確定的多個(gè)函數(shù)而生成。
[0035] 用于生成隨機(jī)數(shù)序列并且用于加密或者解密的電子設(shè)備可以是移動(dòng)電子設(shè)備,t匕 方說移動(dòng)電話或者機(jī)頂盒、或者電腦等等。
[0036] 本發(fā)明的一個(gè)方面涉及用于生成隨機(jī)數(shù)序列的方法,包括:存儲(chǔ)多個(gè)函數(shù),并且為 多個(gè)函數(shù)中的每個(gè)函數(shù)存儲(chǔ)相關(guān)聯(lián)的模數(shù),不是所有的模數(shù)都相等;以及生成隨機(jī)數(shù)的內(nèi) 部序列,隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù)通過以下方式生成,即:對(duì)于多個(gè)函數(shù)中的每個(gè)函 數(shù),針對(duì)將隨機(jī)數(shù)的內(nèi)部序列中先前生成的數(shù)按與正求值的函數(shù)相關(guān)聯(lián)的模數(shù)取模來對(duì)該 函數(shù)求值,從而獲得多個(gè)求值結(jié)果,并且將組合函數(shù)應(yīng)用到多個(gè)求值結(jié)果,從而獲得內(nèi)部序 列中的下一個(gè)數(shù),并且根據(jù)所生成的內(nèi)部序列中的下一個(gè)數(shù)來生成隨機(jī)數(shù)序列中的下一個(gè) 數(shù)。
[0037] 按照本發(fā)明的方法可以在計(jì)算機(jī)上作為計(jì)算機(jī)實(shí)現(xiàn)的方法實(shí)現(xiàn)、或者在專用硬件 中實(shí)現(xiàn)、或者在兩者的組合中實(shí)現(xiàn)。用于按照本發(fā)明的方法的可執(zhí)行代碼可以存儲(chǔ)在計(jì)算 機(jī)程序產(chǎn)品中。計(jì)算機(jī)程序產(chǎn)品的示例包括存儲(chǔ)器設(shè)備、光學(xué)存儲(chǔ)設(shè)備、集成電路、服務(wù)器、 在線軟件等等。優(yōu)選地,計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的非瞬時(shí)性程序代 碼裝置,其用于當(dāng)所述程序產(chǎn)品在計(jì)算機(jī)上執(zhí)行時(shí)完成按照本發(fā)明的方法。
[0038] 在優(yōu)選的實(shí)施例中,計(jì)算機(jī)程序包括適于當(dāng)計(jì)算機(jī)程序在計(jì)算機(jī)上運(yùn)行時(shí),執(zhí)行 按照本發(fā)明方法的所有步驟的計(jì)算機(jī)程序代碼裝置。優(yōu)選地,計(jì)算機(jī)程序在計(jì)算機(jī)可讀介 質(zhì)中體現(xiàn)。
【專利附圖】
【附圖說明】
[0039] 本發(fā)明的這些和其它方面根據(jù)下文描述的實(shí)施例將是明顯的,并且將參考下文描 述的實(shí)施例進(jìn)行闡明。在附圖中, 圖1是圖示用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備的實(shí)施例的示意性方框圖, 圖2是圖示用于利用流密碼對(duì)數(shù)據(jù)序列進(jìn)行加密或者解密的電子流密碼設(shè)備的第一 實(shí)施例的示意性方框圖, 圖3是圖示用于生成隨機(jī)數(shù)序列的方法的實(shí)施例的示意性流程圖, 圖4是圖示用于利用流密碼對(duì)數(shù)據(jù)序列進(jìn)行加密或者解密的電子流密碼設(shè)備的第二 實(shí)施例的示意性方框圖, 圖5是圖示照明系統(tǒng)的實(shí)施例的示意性方框圖。
[0040] 應(yīng)該注意的是,在不同圖中有相同參考數(shù)字的項(xiàng)具有相同的結(jié)構(gòu)特征和相同的功 能、或者是相同的信號(hào)。在已經(jīng)解釋了這樣的項(xiàng)的功能和/或結(jié)構(gòu)的場(chǎng)合,不必在詳細(xì)描述 中對(duì)其進(jìn)行重復(fù)解釋。
【具體實(shí)施方式】
[0041] 雖然本發(fā)明能有許多不同形式的實(shí)施例,但是在附圖中示出并且將在本文中詳細(xì) 描述一個(gè)或者多個(gè)具體實(shí)施例,且應(yīng)理解,本公開內(nèi)容要被認(rèn)為是本發(fā)明原理的示范,而不 打算用來將本發(fā)明限制于所示出和描述的具體實(shí)施例。
[0042] 本發(fā)明可以與各種各樣的參數(shù)、函數(shù)等等一起使用。在下文中,我們將參考圖1和 3描述用于生成隨機(jī)數(shù)序列的一般實(shí)施例的電子設(shè)備。在下文中,我們將給出可被使用的不 同參數(shù)等等的示例。
[0043] 圖1以示意性方框圖示出電子隨機(jī)數(shù)生成設(shè)備100。
[0044] 電子隨機(jī)數(shù)生成設(shè)備100包括電子參數(shù)存儲(chǔ)裝置110、電子函數(shù)求值設(shè)備120、內(nèi) 部序列存儲(chǔ)器130和輸出140??蛇x地,電子隨機(jī)數(shù)生成設(shè)備100還包括測(cè)試函數(shù)設(shè)備150。
[0045] 電子隨機(jī)數(shù)生成設(shè)備100通過生成隨機(jī)數(shù)的內(nèi)部序列(簡(jiǎn)稱為內(nèi)部序列)而運(yùn)轉(zhuǎn), 所述隨機(jī)數(shù)的內(nèi)部序列通過基于內(nèi)部序列中已經(jīng)生成的值而迭代地生成下一個(gè)值來生成。 在電子隨機(jī)數(shù)生成設(shè)備100外部使用的隨機(jī)數(shù)序列,也被稱為外部的隨機(jī)數(shù)序列(簡(jiǎn)稱為 外部序列),進(jìn)而又從內(nèi)部序列獲得。
[0046] 參數(shù)存儲(chǔ)裝置110包含用于多個(gè)函數(shù)的表示。例如,參數(shù)存儲(chǔ)裝置110可以包含 多個(gè)多項(xiàng)式的表示。表示某個(gè)函數(shù)可以通過列舉系數(shù)(比方說按照某模板)來完成。假如參 數(shù)存儲(chǔ)裝置Iio包含多項(xiàng)式,則人們可以通過列舉其系數(shù)來表示它們,比方說以某種固定 的順序?qū)雾?xiàng)式的次數(shù)(degree)進(jìn)行排序。如果使用一元多項(xiàng)式,則系數(shù)可以簡(jiǎn)單地按次 數(shù)的順序列舉。如果使用多元多項(xiàng)式,則可以對(duì)次數(shù)強(qiáng)加某種其它的排序,比方說詞典式排 序。
[0047] 對(duì)于存儲(chǔ)在參數(shù)存儲(chǔ)裝置110中的每個(gè)函數(shù),也存儲(chǔ)與該函數(shù)相關(guān)聯(lián)的模數(shù)。與 函數(shù)相關(guān)聯(lián)的模數(shù)將稍后當(dāng)對(duì)該函數(shù)求值時(shí)使用并且確保各函數(shù)不會(huì)容易地在輸出中被 分離。模數(shù)不全是相等的,優(yōu)選地,它們是全部不等的。
[0048] 參數(shù)存儲(chǔ)裝置110可以被實(shí)現(xiàn)為電子存儲(chǔ)器,比方說閃速存儲(chǔ)器、或者磁存儲(chǔ)器 (比方說硬盤等等)。參數(shù)存儲(chǔ)裝置110可以包括多個(gè)離散存儲(chǔ)器,其一起組成參數(shù)存儲(chǔ)裝置 110。參數(shù)存儲(chǔ)裝置110還可以是臨時(shí)存儲(chǔ)器,比方說RAM。在臨時(shí)參數(shù)存儲(chǔ)裝置110的情 況下,參數(shù)存儲(chǔ)裝置110包含某些手段來在使用前獲得參數(shù),比方說通過隨機(jī)生成或者通 過在可選的網(wǎng)絡(luò)連接(未示出)上獲得它們。
[0049] 函數(shù)求值設(shè)備120被連接到參數(shù)存儲(chǔ)裝置110,以使得設(shè)備120可以從其中獲得多 個(gè)函數(shù)的表示,比方說多個(gè)多項(xiàng)式。函數(shù)求值設(shè)備120被配置成使用多個(gè)函數(shù)來生成隨機(jī) 數(shù)的內(nèi)部序列中的下一個(gè)值,且在下文中將被更完全地進(jìn)行解釋。
[0050] 序列存儲(chǔ)器130包含所生成的隨機(jī)數(shù)的內(nèi)部序列的所有或者一部分。隨機(jī)數(shù)生成 設(shè)備100被配置成首先生成隨機(jī)數(shù)的內(nèi)部序列,從該隨機(jī)數(shù)的內(nèi)部序列推導(dǎo)出用于輸出的 隨機(jī)數(shù)的外部序列。在較簡(jiǎn)單的實(shí)施例中,外部序列可以被取為與內(nèi)部序列相同,然而,被 發(fā)現(xiàn)更安全的是,在輸出隨機(jī)數(shù)前,對(duì)各種類別的內(nèi)部序列執(zhí)行處理。序列存儲(chǔ)器130至少 大得足以包含隨機(jī)數(shù)的內(nèi)部序列的先前值,其典型地為緊靠地先前生成的值。假如存儲(chǔ)在 參數(shù)存儲(chǔ)裝置110中并且由函數(shù)求值設(shè)備120使用的函數(shù)是多元的,則序列存儲(chǔ)器130大 得足以包含對(duì)應(yīng)數(shù)量的先前值。序列存儲(chǔ)器130既被用作對(duì)于函數(shù)求值設(shè)備120的輸入來 生成內(nèi)部序列中的下一個(gè)值,又被用作對(duì)于輸出140的輸入來生成下一個(gè)外部值。當(dāng)生成 新值時(shí),序列存儲(chǔ)器130被函數(shù)求值設(shè)備120更新。在序列存儲(chǔ)器130的大小被限制于比方 說一個(gè)值或者少量值的情況下,函數(shù)求值設(shè)備120將蓋寫最多迭代以前(mostiterations ago)所生成的值。
[0051] 由于函數(shù)求值設(shè)備120在先前值上操作,所以序列存儲(chǔ)器130需要某種初始化。可 以以各種方式為序列存儲(chǔ)器130生成開始值。例如,為了創(chuàng)建可再生的隨機(jī)序列--其在 該序列用在比方說流密碼中時(shí)是令人期望的,可以用固定值初始化序列存儲(chǔ)器130。例如, 固定值可以存儲(chǔ)在參數(shù)存儲(chǔ)裝置110中。例如,全零可能是適當(dāng)?shù)拈_始值。假如不需要可 再生性,則序列存儲(chǔ)器130也可以用真值或者其它噪聲值(比方說當(dāng)前時(shí)間)初始化。
[0052] 輸出140根據(jù)內(nèi)部序列確定外部序列。雖然輸出140可能不做任何處理,但是優(yōu) 選的是,不輸出內(nèi)部序列。在實(shí)施例中,輸出140被配置以數(shù)量"b",并且輸出140從內(nèi)部 序列中所生成的下一個(gè)值的二進(jìn)制表示中選擇b個(gè)比特來產(chǎn)生外部序列中的下一個(gè)值。例 如,輸出140可以選擇b個(gè)最低有效比特。
[0053] 在圖1示出的實(shí)施例中,函數(shù)求值設(shè)備120包括函數(shù)求值器和求值結(jié)果組合器。函 數(shù)求值器被配置成對(duì)在參數(shù)存儲(chǔ)裝置110中示出的多個(gè)函數(shù)中的函數(shù)求值,并歸約按相關(guān) 聯(lián)的模數(shù)取模的結(jié)果。對(duì)每個(gè)函數(shù)重復(fù)求值,這由返回的線124指示。多個(gè)函數(shù)的結(jié)果隨后 由求值結(jié)果組合器128進(jìn)行組合。函數(shù)求值設(shè)備120可以訪問某個(gè)存儲(chǔ)器,以便臨時(shí)存儲(chǔ) 求值的結(jié)果。假如組合函數(shù)允許部分求值,則那個(gè)存儲(chǔ)器可以被限制為單個(gè)值;否則,那個(gè) 存儲(chǔ)器應(yīng)該臨時(shí)存儲(chǔ)所有多個(gè)求值結(jié)果。在實(shí)施例中,求值設(shè)備120包括多個(gè)函數(shù)求值器, 這有益于并行化,但重要的是,這也允許對(duì)不同函數(shù)類型的使用,而無需對(duì)表示函數(shù)的方式 (即,函數(shù)模板)進(jìn)行大擴(kuò)展。
[0054] 求值結(jié)果組合器128可以是整數(shù)加法,這是優(yōu)選的選擇。求值結(jié)果組合器128也 可以是函數(shù)求值的二進(jìn)制表示的異或。求值結(jié)果組合器128也可以包括(典型地作為最后 的步驟)歸約步驟來減少結(jié)果。例如,如果隨機(jī)數(shù)生成設(shè)備100在固定大小的內(nèi)部字上操 作,比方說128比特,則求值結(jié)果組合器128可以簡(jiǎn)單地將結(jié)果截短成固定大小,比方說通 過移除最高有效比特。然而,通過使用模歸約,到疑難問題的鏈接可以被加強(qiáng),正如下文中 將進(jìn)一步解釋的。在求值結(jié)果組合器128的模歸約中使用的模數(shù)被稱為組合模數(shù)(N)。
[0055] 測(cè)試函數(shù)設(shè)備150是可選但有利的元件。為了避免任何一個(gè)輸出給出關(guān)于多個(gè)函 數(shù)中的一個(gè)特定函數(shù)的信息,測(cè)試函數(shù)設(shè)備15〇測(cè)試將被外部序列使用的內(nèi)部序列的值是 否不同尋常地小或者大。例如,測(cè)試函數(shù)設(shè)備150可以測(cè)試某個(gè)數(shù)是否低于閾值。例如,測(cè) 試函數(shù)設(shè)備150可以測(cè)試某個(gè)數(shù)是否高于閾值。測(cè)試函數(shù)設(shè)備150也可以做這兩個(gè)測(cè)試。 閾值可以被設(shè)置成使得它們的對(duì)數(shù)與值的大小的以2為底的對(duì)數(shù)成比例。上閾值可能與多 個(gè)模數(shù)中的最大模數(shù)有關(guān),或者假如其被使用的話,上閾值可能與組合模數(shù)有關(guān)。
[0056] 在下文中,給出了若干對(duì)于參數(shù)的示例性選擇,所述參數(shù)可以在隨機(jī)數(shù)生成設(shè)備 100中使用(或者在用于生成如下文描述的隨機(jī)數(shù)序列的方法300中使用)。
[0057] 第一個(gè)示例:外部隨機(jī)數(shù)序列可以被定義為序列…, 使得每個(gè)元素對(duì)應(yīng)于內(nèi)部序列的另一個(gè)元素&的6個(gè)比特,例如, 凡二Ugfciws.,從在兩個(gè)有限域多項(xiàng)式(/和W上且通過整數(shù)上的加法進(jìn)行結(jié)果組合的 A的求值而生成,A的求值表示為:?=< /X*+?.-O>p+ < .9(U>,。在這個(gè)表示法中, <…>4表示歸約模q。注意&可能大于P或者q,因?yàn)樗亲鳛樵谡麛?shù)上的加法而生成的, 由于模運(yùn)算,所述值可以直接用于后續(xù)的y值。隨機(jī)數(shù)生成器可以使用值&作為初始種子 來創(chuàng)建不同的序列,比方說隨機(jī)值。
[0058] 其它實(shí)施例包括下列內(nèi)容: 1.序列A也可以被構(gòu)建如下: 1*? - < / (支*?-1〕+ <+ 使用隨機(jī)的A和A作為初始種子。
[0059] 2.多元多項(xiàng)式的使用,例如有兩個(gè)變量,例如 義''Vi ,1(.tzri-ti)〉js十、,91 (尤m;丨.) 2_i+ ! =< /2(A'2n-S<A-2?卜2)>ρ+<#2(Α'2η-?·λ-2η-2) >?| 使用隨機(jī)的^和作為初始種子。
[0060] 3.具有已知初始輸入^的多項(xiàng)式的使用,但是其中某隨機(jī)數(shù)據(jù)被使用來生成這 些多項(xiàng)式的系數(shù)。
[0061] 4.序列&也可以通過使用先前值Zyrf的變換) JCryrf)作為輸入而構(gòu)建。例 如,r()可以是的X比特已移位的版本,或者進(jìn)行映射,以使得的第i比特在 中被移動(dòng)到第J'比特。 λ·" = <f IT(Xu^i))>p 4- <HiT(Xn^l))>(|
[0062] 附加地,對(duì)于兩個(gè)函數(shù)而言,所使用的變換可以是不同的。
[0063] 5.序列&也可以通過按照函數(shù)B()對(duì)多項(xiàng)式的輸出進(jìn)行組合而構(gòu)建,以使得: .C11 =H{<f{T(A->p,<g(T>,,) 〇
[0064] 注意,在上文的實(shí)施例中,B()是在整數(shù)上的加法,但是其它函數(shù)也是可能的,諸 如異或等等。
[0065] 在下文中,多給出選擇參數(shù)的一種方式,因?yàn)槠鋵?duì)應(yīng)于特定的疑難數(shù)學(xué)問題,所以 它是特別有利的。
[0066] 作出關(guān)于組合模數(shù)GV)的大小,以及在一次迭代中輸出的比特?cái)?shù)量(/0的選擇。在 這個(gè)示例中,組合模數(shù)必須是奇數(shù)。組合模數(shù)可以例如被隨機(jī)選擇??赡軆?yōu)選的是為#選 擇質(zhì)數(shù),從而排除組合模數(shù)的不利的因式分解。組合模數(shù)和b可以被視為安全性參數(shù),更大 的組合模數(shù)是更安全的,且輸出更少數(shù)量的比特是更安全的。同樣,作出關(guān)于多項(xiàng)式數(shù)量7 的選擇,再次地,更多的多項(xiàng)式更安全。一種可能的選擇是#=128、6=8、7=2。接下來,為每 個(gè)多項(xiàng)式確定用于多項(xiàng)式的模數(shù)。
[0067] 可以選擇更大的數(shù)b,比方說8、16、32。多項(xiàng)式的數(shù)量可以更大,比方說三個(gè)。組 合模數(shù)的大小可以更小,比方說32、64、80比特,或者可以更大,比方說196或者256或者處 于這些值之間。
[0068] 在這個(gè)實(shí)施例中,所有的模數(shù)巧滿足要求,有其中#是組合模 數(shù)。注意,模數(shù)既可以大于組合模數(shù)又可以小于組合模數(shù)。如果期望具有在中間值上的最 大值(即ΛΟ,那么Ci可以全部被選為正數(shù)。Ci可以被如下地選擇: 1. 選擇隨機(jī)的小隨機(jī)數(shù)C7…C7 2. 設(shè)定模數(shù) 3. 測(cè)試&是否是互質(zhì)的,如果不是,轉(zhuǎn)往步驟1。
[0069] 通過將^.選為不同的質(zhì)數(shù),可以避免步驟3,雖然這可能需要每個(gè)模數(shù)測(cè)試更多的 候選Ci值以便找到質(zhì)數(shù),但是在另一方面,保證了所有^的集合是互質(zhì)的。這也確保了函 數(shù)是在域上而不是在環(huán)中被求值。
[0070] 在選擇模數(shù)之后,利用系統(tǒng)按相關(guān)聯(lián)的模數(shù)取模來確定多項(xiàng)式,即多項(xiàng)式i是按 模數(shù)A取模的??梢噪S機(jī)選擇系數(shù)。我們將假設(shè)一元多項(xiàng)式,但是二元多項(xiàng)式也是可能的。 多項(xiàng)式可具有相等的或者不同的次數(shù)。優(yōu)選地,多項(xiàng)式的至少一個(gè)具有二次或者更高次。
[0071] 整數(shù)加法被用來作為組合函數(shù),,其后跟有模歸約,所述模歸約按組合模數(shù)#取 模。由于這個(gè)模數(shù)如此接近所有其它模數(shù),所以其效果是特別強(qiáng)的。模運(yùn)算的結(jié)果是內(nèi)部 序列中的下一個(gè)值。作為輸出函數(shù),可以使用模運(yùn)算的結(jié)果的b個(gè)最低有效比特。
[0072] 本實(shí)施例和其它實(shí)施例已經(jīng)使用用于NISTSpecialPublication800-22"A StatisticalTestSuiteforRandomandPseudorandomNumberGeneratorsfor CryptographicApplications"中規(guī)定的隨機(jī)性的測(cè)試套件進(jìn)行了測(cè)試。發(fā)現(xiàn)這樣生成的 隨機(jī)數(shù)序列中的隨機(jī)屬性對(duì)于密碼學(xué)用途是很充分的。
[0073] 典型地,電子隨機(jī)數(shù)生成設(shè)備100包括微處理器(未示出),其執(zhí)行存儲(chǔ)在電子隨機(jī) 數(shù)生成設(shè)備100中的合適的軟件,例如,所述軟件可能已經(jīng)被下載并且存儲(chǔ)在相應(yīng)的存儲(chǔ) 器中,例如RAM或者閃速存儲(chǔ)器(未示出)。
[0074] 圖3在示意性流程圖中圖示用于生成隨機(jī)數(shù)序列的方法300。所述方法可以與電 子隨機(jī)數(shù)生成設(shè)備100 -同使用,然而這不是必須的。盡管如此,方法300在電子設(shè)備上被 最好地執(zhí)行,尤其是作為計(jì)算機(jī)實(shí)現(xiàn)的方法。
[0075] 在步驟310,獲得多個(gè)函數(shù),并且為多個(gè)函數(shù)中的每個(gè)函數(shù)獲得相關(guān)聯(lián)的模數(shù),不 是所有的模數(shù)都相等。在步驟320,生成隨機(jī)數(shù)的內(nèi)部序列的初始值。例如,這些初始值可 以是從某個(gè)其它源獲得的噪聲值。在初始序列是不可預(yù)測(cè)的范圍內(nèi),在這種情況下,所產(chǎn)生 的序列將是不可預(yù)測(cè)的??商鎿Q地,這些初始值可以是確定的值,比方說全〇 ;在這種情況 下,序列將是可再生的。對(duì)于不知道初始值的攻擊者(例如,因?yàn)樗鼈儗?duì)于他被保密)而言, 所述序列將與真的隨機(jī)序列難以分辨。至少任何可區(qū)別性都將不足以用來預(yù)測(cè)序列的未來 值。在步驟330,生成隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù)。這以在步驟332-338中所給出的方 式完成。在步驟332,獲得隨機(jī)數(shù)的內(nèi)部序列中先前生成的數(shù)。如果序列被標(biāo)記為^而現(xiàn) 在正生成的下一個(gè)數(shù)是A(更高的下標(biāo)對(duì)應(yīng)于更新近生成的值),那么使用的數(shù)可能是 其也可能是另一個(gè)值。注意,在這個(gè)流程圖中,相同的先前值被使用于所有的函數(shù)。這是優(yōu) 選的情況,因?yàn)槠浔WC了在函數(shù)之間的相依性。在步驟334,針對(duì)內(nèi)部序列的先前獲得的生 成值Crirf)按與正求值的函數(shù)相關(guān)聯(lián)的模數(shù)取模來對(duì)函數(shù)求值。假如函數(shù)是多項(xiàng)式或者是 可能后面跟隨有線性函數(shù)或者多項(xiàng)式的S-box的組合,則這樣的計(jì)算對(duì)于低資源設(shè)備是可 能的。這樣的函數(shù)也可以以自然的方式進(jìn)行編碼,比方說在存儲(chǔ)器110中。在步驟336,確 定是否存在剩余的函數(shù)要求值,并且如果存在的話,流程返回步驟334來對(duì)多個(gè)函數(shù)中的 下一個(gè)函數(shù)求值。在步驟338,多個(gè)求值結(jié)果通過應(yīng)用組合函數(shù)而被組合。對(duì)于許多函數(shù)而 言,特別是加法和異或等等,步驟338可以整合在步驟336中。在步驟340,根據(jù)內(nèi)部序列中 的所生成的下一個(gè)數(shù),生成隨機(jī)數(shù)序列的下一個(gè)數(shù)。
[0076] 執(zhí)行方法的許多不同方式是可能的,正如對(duì)本領(lǐng)域的技術(shù)人員而言將明顯的。例 如,步驟的順序可以變化,或者某些步驟可以并行地執(zhí)行。而且,在步驟之間,可以插入其它 方法步驟。插入的步驟可以代表方法的精細(xì)化,諸如本文描述的,或者可以與本方法無關(guān)。 例如,可以至少部分地并行執(zhí)行步驟310和320或者步驟334。而且,在下一個(gè)步驟開始之 前,給出的步驟可能還沒有完全完成。
[0077] 按照本發(fā)明的方法可以使用軟件來執(zhí)行,所述軟件包括用于使處理器系統(tǒng)執(zhí)行方 法300的指令。軟件可以僅包括那些由系統(tǒng)的特定子實(shí)體所采用的步驟。所述軟件可以存 儲(chǔ)在適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中,諸如硬盤、軟盤、存儲(chǔ)器等等。軟件可以作為信號(hào)沿著線、或者無線 地、或者使用數(shù)據(jù)網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))來發(fā)送??梢允管浖?duì)于下載和/或?qū)τ诜?wù)器上的 遠(yuǎn)程使用是可用的。
[0078] 圖2圖示流密碼中的隨機(jī)序列的使用。
[0079] 該圖顯示參數(shù)生成設(shè)備210。參數(shù)生成設(shè)備210被配置成取得密碼學(xué)密鑰作為輸 入并且產(chǎn)生用于在電子隨機(jī)數(shù)生成設(shè)備100中使用的參數(shù)。注意,參數(shù)中的某些可能是固 定的,某些可能被生成。典型地,多項(xiàng)式的數(shù)量、輸出比特的數(shù)量和多項(xiàng)式的次數(shù)將基于對(duì) 威脅模型的評(píng)估而提前確定。在這個(gè)實(shí)施例中,參數(shù)生成設(shè)備210將至少生成多個(gè)模數(shù)或 者多個(gè)函數(shù)中的一個(gè)。優(yōu)選地,參數(shù)生成設(shè)備210既生成多個(gè)模數(shù)又生成多個(gè)函數(shù)。參數(shù)生 成設(shè)備210可以生成或者不生成函數(shù)本身。優(yōu)選的是,參數(shù)生成設(shè)備210將生成函數(shù)。例 如,參數(shù)生成設(shè)備210可以生成系數(shù)序列,以作為多項(xiàng)式系數(shù)使用。流密碼設(shè)備200進(jìn)一步 包括組合設(shè)備240,用于組合隨機(jī)數(shù)序列。而且,流密碼設(shè)備200被配置成比方說從輸入中 或者從存儲(chǔ)裝置中或者從生成中獲得數(shù)據(jù)流,并且被配置成進(jìn)一步處理輸出流。數(shù)據(jù)流可 以代表明語(Plain)數(shù)據(jù)流,在這種情況下,輸出流是對(duì)應(yīng)的加密數(shù)據(jù)流。數(shù)據(jù)流也可以代 表加密數(shù)據(jù)流,在這種情況下,輸出流代表明語數(shù)據(jù)流。通過將輸入流與取自電子隨機(jī)數(shù)生 成設(shè)備100的隨機(jī)數(shù)的序列(流)相組合,從輸入流中獲得輸出流。
[0080] 在操作中,參數(shù)生成設(shè)備210接收密碼學(xué)密鑰;比方說對(duì)攻擊者而言是秘密的128 比特或者256比特密鑰。參數(shù)生成設(shè)備210也有可能接收現(xiàn)時(shí)或者其它數(shù)據(jù)。利用接收的 數(shù)據(jù),參數(shù)生成設(shè)備210配置電子隨機(jī)數(shù)生成設(shè)備100,即配置參數(shù)存儲(chǔ)裝置110。這時(shí),電 子隨機(jī)數(shù)生成設(shè)備100被配置來產(chǎn)生隨機(jī)數(shù)序列。一旦流密碼設(shè)備200開始接收輸入流 220,輸入流就被與隨機(jī)數(shù)序列相結(jié)合。這可以以各種各樣的方式完成,例如,如在流密碼本 身的領(lǐng)域中已知的方式。特別地,組合設(shè)備240可以是異或設(shè)備。以這種方式,產(chǎn)生輸出流。 輸出流可以被存儲(chǔ)、或者被進(jìn)一步處理或者被傳輸?shù)鹊取?br>
[0081] 由電子隨機(jī)數(shù)生成設(shè)備100使用的序列的初始值可以從密鑰中、或者從計(jì)數(shù)器中 獲得,或者可以是固定的;它們也可以從存儲(chǔ)器110中被獲得,例如,由參數(shù)生成設(shè)備210配 置在那里的。
[0082] 在流密碼設(shè)備200的實(shí)施例中,在偽隨機(jī)數(shù)生成器中使用的多項(xiàng)式的系數(shù)從秘密 密鑰K生成。隨后,偽隨機(jī)生成器通過多項(xiàng)式形成,產(chǎn)生隨機(jī)序列作為輸出。每個(gè)隨機(jī)序列 然后同明文進(jìn)行異或,從而生成密文。解密過程與加密相同,只是輸入是密文消息而輸出是 明文消息。
[0083] 為了使得對(duì)于相同的密鑰能有用于不同消息的不同偽隨機(jī)序列,可以使用現(xiàn)時(shí), 并且將其與密文一同交換?,F(xiàn)時(shí)可以與序列存儲(chǔ)器130中的初始值相組合,或者現(xiàn)時(shí)可以 與作為輸入的密鑰相組合來生成多項(xiàng)式系數(shù)。通過與密鑰相組合,可以生成不同的多項(xiàng)式, 其進(jìn)而又生成不同的偽隨機(jī)序列。一種用來將現(xiàn)時(shí)與密鑰或者計(jì)數(shù)器值相組合的方式是將 它們異或或者級(jí)聯(lián)。
[0084] 圖4示出了一個(gè)不同的替換方案,其使用固定的并且可能是公開的系數(shù)用于多項(xiàng) 式和模數(shù),但使用秘密密鑰來初始化偽隨機(jī)數(shù)生成器。
[0085]該過程牽涉到使用秘密密鑰K(或者從K推導(dǎo)出的數(shù))作為用于電子隨機(jī)數(shù)生成 設(shè)備100的初始種子;作為一個(gè)示例,比方說使用兩個(gè)多項(xiàng)式,比方說每個(gè)多項(xiàng)式是2次多 項(xiàng)式(但是其它選擇也是可能的)。
[0086] 兩個(gè)多項(xiàng)式的求值的結(jié)果被比方說通過簡(jiǎn)單加法來組合,從而獲得R。出自R的η 個(gè)中的僅b比特被暴露為偽隨機(jī)序列。為了生成接下來的b個(gè)偽隨機(jī)比特,上一次的結(jié)果 R被使用來更新下一個(gè)輸入。
[0087] 附加的元素"現(xiàn)時(shí)"可以用在參數(shù)生成設(shè)備210中,其確保如果新消息被加密的 話,對(duì)于相同的密鑰K獲得的偽隨機(jī)序列是不同的。這么做的一種方式將是取得密鑰K并 且將其與現(xiàn)時(shí)進(jìn)行異或。
[0088]擴(kuò)展密鑰可以通過對(duì)它們進(jìn)行散列(hash)而完成,比方說在需要多個(gè)塊的情況下 與計(jì)數(shù)器一起散列。Sha-I和Sha-256是適當(dāng)?shù)倪x擇。
[0089] 流密碼可適用于尤其是在資源受約束的設(shè)備中需要保護(hù)通信的產(chǎn)品和服務(wù)。這樣 的資源受約束的系統(tǒng)的示例是照明控制。這樣的系統(tǒng)在圖5中被圖示。圖5示出電燈控制 器510和電燈520。燈控制器510可以監(jiān)測(cè)和/或控制燈520。燈520可以是比方說燈/ LED驅(qū)動(dòng)器組合。燈控制器510和燈520被配置成雙向通信。然而,如果僅需要監(jiān)測(cè)或者僅 需要控制的話,也可能使用單向通信。燈控制器510和燈520共享共有的秘密密鑰K。燈 控制器510和燈520兩者都包括諸如流密碼設(shè)備200或者流密碼設(shè)備400這樣的設(shè)備。通 過使用共享的秘密和可能它們?cè)缦纫呀?jīng)交換的現(xiàn)時(shí)(可能是以明語的),燈控制器510和燈 520兩者都配置電子隨機(jī)數(shù)生成設(shè)備100。如果燈控制器510把消息發(fā)送到燈520比方說 用于控制,則其被加密為流密碼。當(dāng)在燈520處接收到消息時(shí),所述消息可被使用相同的所 生成的隨機(jī)數(shù)序列進(jìn)行解密。從燈520到燈控制器510的通信相反地運(yùn)轉(zhuǎn)。
[0090] 應(yīng)留意的是,本發(fā)明也擴(kuò)展到計(jì)算機(jī)程序,特別是在載體上或者載體中的計(jì)算機(jī) 程序,其適于將本發(fā)明付諸實(shí)踐。程序可以具有以下形式:源代碼、目標(biāo)代碼、諸如部分編譯 形式那樣的代碼中間源和目標(biāo)代碼,或者程序可以具有任何適用于在按照本發(fā)明的方法的 實(shí)現(xiàn)中使用的其它形式。涉及計(jì)算機(jī)程序產(chǎn)品的實(shí)施例包括對(duì)應(yīng)于所闡述方法中的至少一 個(gè)方法的每一個(gè)處理步驟的計(jì)算機(jī)可執(zhí)行指令。這些指令可以被細(xì)分為子例程和/或被存 儲(chǔ)在可能被靜態(tài)或者動(dòng)態(tài)鏈接的一個(gè)或者多個(gè)文件中。涉及計(jì)算機(jī)程序產(chǎn)品的另一個(gè)實(shí)施 例包括對(duì)應(yīng)于所闡述系統(tǒng)和/或產(chǎn)品中的至少一個(gè)系統(tǒng)和/或產(chǎn)品的每一個(gè)裝置的計(jì)算機(jī) 可執(zhí)行指令。
[0091] 應(yīng)該注意的是,上文提到的實(shí)施例是對(duì)本發(fā)明進(jìn)行舉例說明,而不是進(jìn)行限制,并 且本領(lǐng)域技術(shù)人員將能夠設(shè)計(jì)許多可替換的實(shí)施例。
[0092] 在權(quán)利要求中,放置在圓括號(hào)之間的任何參考標(biāo)記不應(yīng)被解讀為限制所述權(quán)利要 求。動(dòng)詞"包括"及其詞形變化的使用不排除除了那些在權(quán)利要求中陳述的元件或者步驟 之外的其它元件或者步驟的存在。在元件之前的冠詞"一"或者"一個(gè)"不排除多個(gè)這樣的 元件的存在。本發(fā)明可以通過包括幾個(gè)明顯不同的元件的硬件來實(shí)現(xiàn),并且可以通過適當(dāng) 編程的計(jì)算機(jī)來實(shí)現(xiàn)。在枚舉幾個(gè)裝置的設(shè)備權(quán)利要求中,這些裝置中的幾個(gè)可以由硬件 的同一項(xiàng)來體現(xiàn)。在相互不同的從屬權(quán)利要求中陳述某些措施的單純事實(shí)并不表明這些措 施的組合不能被用來獲益。
[0093]圖1、2、4和5中參考數(shù)字的列表 100用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備 110電子參數(shù)存儲(chǔ)裝置 120電子函數(shù)求值設(shè)備 122函數(shù)求值器 124控制路徑 128求值結(jié)果組合器 130內(nèi)部序列存儲(chǔ)器 140輸出 150測(cè)試函數(shù)設(shè)備 200用于利用流密碼對(duì)數(shù)據(jù)序列加密或者解密的電子流密碼設(shè)備 210參數(shù)生成設(shè)備 220數(shù)據(jù)流 230輸出流 240組合設(shè)備 400用于利用流密碼對(duì)數(shù)據(jù)序列加密或者解密的電子流密碼設(shè)備 500電子照明控制系統(tǒng) 510電燈控制器 520電燈
【權(quán)利要求】
1. 一種用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備(100),所述電子隨機(jī)數(shù)生成設(shè)備 包括: -電子參數(shù)存儲(chǔ)裝置(110),其被配置成存儲(chǔ)多個(gè)函數(shù),并且為所述多個(gè)函數(shù)中的每個(gè) 函數(shù)存儲(chǔ)相關(guān)聯(lián)的模數(shù),不是所有的模數(shù)都相等,以及 -電子函數(shù)求值設(shè)備(120),被配置成生成隨機(jī)數(shù)的內(nèi)部序列,所述電子函數(shù)求值設(shè)備 (120)被配置成通過以下方式生成該隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù) 一對(duì)于所述多個(gè)函數(shù)中的每個(gè)函數(shù),針對(duì)該隨機(jī)數(shù)的內(nèi)部序列的先前生成值按與正求 值的函數(shù)相關(guān)聯(lián)的模數(shù)取模來對(duì)該函數(shù)求值,從而獲得多個(gè)求值結(jié)果,并且 一將組合函數(shù)應(yīng)用到該多個(gè)求值結(jié)果,從而獲得該內(nèi)部序列中的下一個(gè)數(shù),以及 -輸出(140),其被配置成根據(jù)該內(nèi)部序列中的所生成的下一個(gè)數(shù),生成該隨機(jī)數(shù)序列 的下一個(gè)數(shù)。
2. 如權(quán)利要求1中的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述多個(gè)函數(shù) 中的函數(shù)是多項(xiàng)式。
3. 如權(quán)利要求2中的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述多個(gè)多項(xiàng) 式的至少一個(gè)具有2次或者更高次。
4. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 函數(shù)的至少一個(gè)是具有若干變量的多元函數(shù),所述函數(shù)求值設(shè)備被配置成獲得與變量數(shù)量 相同數(shù)量的、該隨機(jī)數(shù)的內(nèi)部序列中的先前生成的數(shù),并且至少針對(duì)該多個(gè)所獲得的先前 生成的數(shù)來對(duì)該多元函數(shù)求值。
5. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 組合函數(shù)是整數(shù)加法。
6. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 輸出被配置成通過從該內(nèi)部序列中的所生成的下一個(gè)數(shù)選擇若干(b)個(gè)比特,生成隨機(jī)數(shù) 序列中的下一個(gè)數(shù)。
7. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 函數(shù)求值設(shè)備被配置成將測(cè)試函數(shù)應(yīng)用到隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù),從而確定輸出 是否被允許訪問該隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù),并且其中 -假如所述測(cè)試函數(shù)確定允許訪問,則所述輸出根據(jù)該內(nèi)部序列中的所生成的下一個(gè) 數(shù),生成隨機(jī)數(shù)序列的下一個(gè)數(shù),否則所述函數(shù)求值設(shè)備生成該內(nèi)部序列中的下一個(gè)數(shù),直 到所述測(cè)試函數(shù)確定允許所述輸出訪問該內(nèi)部序列中的下一個(gè)數(shù)。
8. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 組合函數(shù)包括通過組合模數(shù)進(jìn)行的模運(yùn)算,與該多個(gè)函數(shù)相關(guān)聯(lián)的該多個(gè)模數(shù)的至少一個(gè) 具有以下屬性:組合模數(shù)減去該多個(gè)模數(shù)中的至少一個(gè)模數(shù)等于2的冪的倍數(shù)。
9. 如前述權(quán)利要求中任一項(xiàng)的用于生成隨機(jī)數(shù)序列的電子隨機(jī)數(shù)生成設(shè)備,其中所述 與多個(gè)函數(shù)相關(guān)聯(lián)的模數(shù)是互質(zhì)的。
10. -種用于通過流密碼對(duì)數(shù)據(jù)序列加密或解密的電子流密碼設(shè)備(200, 400),所述 電子流密碼設(shè)備包括: -電子隨機(jī)數(shù)生成設(shè)備(100),用于生成如前述權(quán)利要求的任一項(xiàng)的隨機(jī)數(shù)序列, -參數(shù)生成設(shè)備(210),被配置成獲得密碼學(xué)密鑰,并且用于配置電子設(shè)備的電子參數(shù) 存儲(chǔ)裝置以用于依賴于所述密碼學(xué)密鑰而生成隨機(jī)數(shù)序列, -組合設(shè)備(240),用于將由所述電子設(shè)備生成的隨機(jī)數(shù)序列與數(shù)據(jù)序列相組合,從而 分別獲得加密或者解密的數(shù)據(jù)序列,其中所述電子設(shè)備用于依賴于所配置的電子參數(shù)存儲(chǔ) 裝置而生成隨機(jī)數(shù)序列。
11. 一種控制系統(tǒng)(500),包括控制器(510)和受控的設(shè)備(520),它們每個(gè)都包括如權(quán) 利要求10中所要求保護(hù)的電子流密碼設(shè)備(200, 400)。
12. -種用于生成隨機(jī)數(shù)序列的方法,所述方法包括: _獲得多個(gè)函數(shù),并且為該多個(gè)函數(shù)中的每個(gè)函數(shù)獲得相關(guān)聯(lián)的模數(shù),不是所有的模數(shù) 都相等,并且 -生成隨機(jī)數(shù)的內(nèi)部序列,隨機(jī)數(shù)的內(nèi)部序列中的下一個(gè)數(shù)通過以下方式生成 一對(duì)于所述多個(gè)函數(shù)中的每個(gè)函數(shù),針對(duì)該隨機(jī)數(shù)的內(nèi)部序列中的先前生成值按與正 求值的函數(shù)相關(guān)聯(lián)的模數(shù)取模來對(duì)該函數(shù)求值,從而獲得多個(gè)求值結(jié)果,并且 一將組合函數(shù)應(yīng)用到該多個(gè)求值結(jié)果,從而獲得該內(nèi)部序列中的下一個(gè)數(shù),以及 -根據(jù)該內(nèi)部序列中的所生成的下一個(gè)數(shù),生成該隨機(jī)數(shù)序列的下一個(gè)數(shù)。
13. -種計(jì)算機(jī)程序,包括計(jì)算機(jī)程序代碼裝置,其適于當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)上 運(yùn)行時(shí),執(zhí)行權(quán)利要求12的所有步驟。
14. 一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有如權(quán)利要求13所要求的計(jì)算機(jī)程序。
【文檔編號(hào)】H04L9/06GK104380245SQ201480001595
【公開日】2015年2月25日 申請(qǐng)日期:2014年2月20日 優(yōu)先權(quán)日:2013年2月28日
【發(fā)明者】O.加西亞莫喬恩, S.S.庫(kù)馬, L.M.G.M.托休澤恩 申請(qǐng)人:皇家飛利浦有限公司