專利名稱:數(shù)字式真隨機數(shù)發(fā)生器電路的制作方法
技術領域:
本發(fā)明涉及信息安全領域中的真隨機數(shù)生成。
背景技術:
真隨機數(shù)在非對稱加密算法RSA和ECC (橢圓曲線加密)中有非常廣泛的應用,比如RSA的密鑰生成需要隨機數(shù)作為種子,通過對其進行Miller-Rabin素數(shù)測試和一系列防攻擊性檢測篩選出可用的P,q,而素數(shù)測試本身也需要隨機數(shù)作為測試向量。ECC橢圓曲線簽名算法中,需要隨機數(shù)k作為簽名的種子,并且k的安全性與密鑰等價,所以對其隨機性有非常高的要求。另外,RSA,ECC等非對稱算法,以及AES,SMS4等對稱算法,都需要高安全性的密鑰,而真隨機數(shù)發(fā)生器的不可預測性保證可以生成符合要求的密鑰。
隨機數(shù)的生成分為真隨機數(shù)和偽隨機數(shù)生成兩種方式。偽隨機數(shù)生成一般采用數(shù)學算法實現(xiàn)。偽隨機數(shù)發(fā)生器的缺點是,連續(xù)的兩個隨機數(shù)輸出符合η位多項式,考慮到不可約多項式的數(shù)量,假如采用長度較小的多項式,很容易通過遍歷法尋找其生成多項式;另外,作為種子的n-bit隨機數(shù)必須采用手動輸入或者真隨機數(shù)生成,否則每次上電后偽隨機數(shù)將會生成同樣的隨機數(shù)序列,輸出結果就違背了不可重復性,比如RSA的密鑰生成,利用這樣的序列,每次將生成完全相同的素數(shù),不具有利用價值。偽隨機數(shù)的好處是可以采用全數(shù)字電路實現(xiàn),而且容易獲取高的輸出速率,但依然無法替代真隨機數(shù)發(fā)生器。
真隨機數(shù)發(fā)生器分為模擬和數(shù)字兩種實現(xiàn)方法。模擬方法可以采用混沌效應等電路中不可預測的物理現(xiàn)象提取隨機數(shù),但是需要針對工藝定制的電路,不具備遷移性。數(shù)字式真隨機數(shù)發(fā)生器則是利用電路中的亞穩(wěn)態(tài)或時鐘抖動等隨機性作為熵源,因為采用全數(shù)字實現(xiàn),所以具有很好的移植性,可以采用FPGA或者不同工藝的ASIC實現(xiàn)。發(fā)明內容
本發(fā)明要解決的技術問題是如何利用數(shù)字電路中的隨機源產(chǎn)生隨機數(shù)。
本發(fā)明的特征在于,含有真隨機數(shù)發(fā)生器電路SI和偏置矯正電路S2,其中
真隨機數(shù)發(fā)生電路SI,含有六個反相器INVf INV6、兩個選擇信號電路Mf M2、兩個觸發(fā)電路DfD2和一個與門AND1,其中
與門AND1,輸入為時鐘信號clock和選擇信號select,輸出同時送往兩個所述選擇信號電路,
在六個反相器INVl INV6中
反相器INV1、反相器INV2和反相器INV3依次串接,所述反相器INVl的輸入端與選擇信號電路Ml的輸出端相連,所述反相器INV3的輸出端和所述選擇 信號電路Ml的“I” 的輸入端相連,
反相器INV4、反相器INV5和反相器INV6依次串接,所述反相器INV4的輸入端與選擇信號電路M2的輸出端相連,所述反相器INV6的輸出端和所述反相器電路M2的“I”輸入端相連,
所述反相器INVl的輸出信號輸入到所述選擇信號電路M2的“O”輸入端,所述反相器INV4的輸出信號輸入到所述選擇信號電路Ml的“O”輸入端,在兩個觸發(fā)器DfD2中,觸發(fā)器Dl和觸發(fā)器D2依次串接,其中觸發(fā)器Dl,時鐘信號輸入端輸入所述時鐘信號clock,輸入端D和所述反相器INVl的輸出端相連,觸發(fā)器D2,時鐘信號輸入端輸入所述時鐘信號clock,輸入端D和所述觸發(fā)器Dl的Q輸出端相連,偏置矯正電路S2,含有兩個選擇開關SWfSW2,六個觸發(fā)器D3 D8,以及四個異或門XORl X0R4,其中選擇開關SW1,輸入端與所述觸發(fā)器D2的輸出端Q相連,在四個觸發(fā)器D3 D8中觸發(fā)器D3 觸發(fā)器D6共四個觸發(fā)器,四個時鐘信號輸入端都輸入所述時鐘信號clock,四個D輸入端分別連接到所述選擇信號開關SWl的四個選擇輸出端,在四個異或門XORl X0R4中異或門XORl的兩個輸入端分別與所述觸發(fā)器D3、觸發(fā)器D4的輸出端Q相連,異或門X0R2的兩個輸入端分別與所述觸發(fā)器D5、觸發(fā)器D6的輸出端Q相連,異或門X0R3的兩個輸入端分別與所述異或門X0R1、異或門X0R2的輸出端相連,異或門X0R4,輸出使能信號enable,選擇開關SW2,輸入端與所述異或門X0R3的輸出端相連,在兩個觸發(fā)器D7 D8中時鐘信號輸入端都輸入所述時鐘信號clock,各自的輸入端Q分別與所述選擇開關SW2的兩個選擇輸出端相連,觸發(fā)器D7的輸出端Q與所述異或門X0R4的第一個輸入端相連,觸發(fā)器D8的輸出端Q與所述異或門X0R4的第二個輸入端相連,同時輸出數(shù)據(jù)輸出信號dataout,所述真隨機數(shù)發(fā)生器按以下步驟產(chǎn)生真隨機數(shù)第I步當select信號和clock信號皆為“I”時,三個所述反相器INVl、INV2、INV3形成奇數(shù)級反相器環(huán)路Loopl,三個反相器INV4、INV5、INV6也形成奇數(shù)級反相器環(huán)路Loop2,而當select信號為“ I ”而clock信號為“O”時,兩個所述反相器INV1、INV4形成環(huán)路Loop3,由反相器INVl輸出數(shù)據(jù),select信號為O而clock為任意值時電路不工作;第2步在第I步中的輸出的數(shù)據(jù)輸入到觸發(fā)器Dl的輸入端D,經(jīng)觸發(fā)器Dl、觸發(fā)器D2后消除亞穩(wěn)態(tài);第3步所述觸發(fā)器D2輸出的數(shù)據(jù)在時刻1、時刻2、時刻3、時刻4分別輸入到四個所述觸發(fā)器D3、D4、D5和D6,輸出經(jīng)存儲后異或輸出;第4步第3步輸出的數(shù)據(jù)在時刻5輸入到觸發(fā)器D8中,經(jīng)存儲后得到數(shù)據(jù)輸出信號dataout,并與前一工作周期時刻O存儲在觸發(fā)器D7中的數(shù)據(jù)異或得到有效信號enable,在連續(xù)向所述觸發(fā)器D7和觸發(fā)器D8輸入“00”或者“ 11”時enable為“0”,輸入“10”時 enable 為“1”,輸出為“0”,輸入 “01 ” 時,enable 為 “ I ”,輸出為“I”。本發(fā)明利用全數(shù)字電路生成真隨機數(shù),可以在不同集成電路工藝下方便地移植,而且可以在FPGA平臺上運行,可以用來替代傳統(tǒng)的模擬電路生成隨機數(shù)的方法,減少了設計成本和研發(fā)周期。
圖1是按照本發(fā)明一種實施方式的真隨機數(shù)生成器電路圖。
具體實施方式
本發(fā)明利用兩個奇數(shù)級反向器環(huán)構成的回路,兩個觸發(fā)器生成隨機數(shù),并由偏置 電路矯正輸出。
具體包括如下步驟
Sll :SeleCt信號為“I”時,當clock為“1”,S1形成奇數(shù)級反向器環(huán)路Loopl (反 相器 INVl, INV2, INV3 構成),Loop2 (反相器 INV4, INV5, INV6 構成);當 clock 為 “0”,SI 形成回路Loop3 (反相器INVl, INV4構成),由INVl輸出數(shù)據(jù)。select信號為“O”時,電路 不工作。
S12 :將Sll輸出數(shù)據(jù)連接到觸發(fā)器Dl的輸入端,經(jīng)過觸發(fā)器Dl,D2消除亞穩(wěn)態(tài)。
313:在時刻1、2、3、4分別寄存312輸出數(shù)據(jù)到4個觸發(fā)器03、04、05、06中。對 觸發(fā)器D3 D6的存儲結果異或輸出。
S14:將S13的輸出數(shù)據(jù)在時刻O、時刻5寄存到觸發(fā)器D7和觸發(fā)器D8上。利用 觸發(fā)器D7 D8存儲結果輸出有效信號enable和數(shù)據(jù)輸出dataout。在連續(xù)向D7、D8輸入 “ 00 ”或者“ 11 ”的時候,enab I e為“ O ” ;輸入“ 10 ”時,enab I e為“ I ”,輸出“ O ” ;輸入“ OI ” 時,enable 為 “1”,輸出 “I”。
下面結合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施 例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
本發(fā)明的顯著特點在于利用全數(shù)字的方法設計了真隨機數(shù)發(fā)生器,方便了在不同 工藝下的隨機數(shù)單元集成,并且可以在FPGA上實現(xiàn),為ECC和RSA等公鑰加密算法提供了 必要的隨機數(shù)發(fā)生源,減少了片外添加芯片的開銷,同時生成隨機數(shù)的速度足以保證系統(tǒng) 的性能。
下面介紹根據(jù)圖1所示的隨機數(shù)發(fā)生器示例介紹其詳細過程
圖1中的電路分為兩塊,分別用兩個框圖表示,代表真隨機數(shù)發(fā)生器SI和偏置矯 正電路S2。
SI
當select信號置于“I”時,真隨機數(shù)發(fā)生器工作。clock信號為“ I ”時,INVl INV3 構成奇數(shù)級反向器環(huán),形成環(huán)形振蕩器,同理INV4 INV6獨立形成另一振蕩器。由于電路噪 聲和器件的差別,兩個振蕩器在時鐘頻率和相位同步上會有差別。當clock信號置為邏輯 O時,反相器INVl和INV4構成偶數(shù)級反向器環(huán),兩個振蕩器的信號疊加,經(jīng)過負反饋環(huán)路, 最終確定在邏輯“O”或者“ I”上,經(jīng)過D觸發(fā)器在clock信號上升沿采樣輸出。
當隨機數(shù)電路不需要工作的時候,可以將select信號置為“0”,這樣整個電路處 于確定態(tài),不再產(chǎn)生振蕩,從而減少了不必要的動態(tài)功耗。隨機數(shù)發(fā)生器的最高頻率取決于 信號穩(wěn)定的時間,即clock信號低電平時間,而且偶數(shù)級反向器和D觸發(fā)器環(huán)有利于數(shù)據(jù)從 亞穩(wěn)態(tài)到邏輯“O”或者“I”的恢復。
S2 對SI的隨機數(shù)輸出進行偏置矯正。隨機數(shù)電路中生成的電路可能會存在偏置的情況,即“I”的生成概率P ^ 50%,反之亦然。但是完善的真隨機數(shù)發(fā)生源不容許這種偏置的存在,為了消除這種偏置,獲取有高隨機性的熵源,可以采用以下兩種后處理電路。XOR電路是對四個連續(xù)隨機數(shù)輸出進行異或,最終獲得一個輸出。通過條件概率的分析,假如輸入隨機數(shù)偏置偏差不多的情況下,通過選擇合理的XOR電路可以有效提升O、I分布的均衡性。XOR電路的輸出會經(jīng)過消除連續(xù)“I”或者“O”電路,效果是均衡分布,同時減少連續(xù)“I”或者“O”的個數(shù)。該濾波電路有輸出有效信號enable和數(shù)據(jù)輸出dataout。在連續(xù)向該單元輸入連續(xù)“I”或者“O”的時候,enable為O ;輸入“10”時,enable為“1”,輸出“O”;輸入“01”時,enable為“1”,輸出“I”。真隨機數(shù)在enable為“1”,時刻O時輸出有效隨機數(shù)數(shù)據(jù)。本設計用Verilog進行FPGA仿真驗證,驗證隨機數(shù)發(fā)生器的可靠性和可行性?;贏ltera FPGA Cyclone II系列FPGA進行綜合并下載到FPGA芯片中驗證,利用Signaltap采樣數(shù)據(jù)輸出,獲得2100萬比特的數(shù)據(jù)輸出。利用NIST SP800-22標準提供的測試軟件進行隨機性測試,測試數(shù)據(jù)均滿足測試標準要求,因而證明輸出數(shù)據(jù)是真隨機數(shù),本設計是可行的。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關技術領域的普通技術人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發(fā) 明的范疇,本發(fā)明的專利保護范圍應由權利要求限定。
權利要求
1.數(shù)字式真隨機數(shù)發(fā)生器,其特征在于,含有真隨機數(shù)發(fā)生器電路Si和偏置矯正電路S2,其中 真隨機數(shù)發(fā)生電路SI,含有六個反相器INVf INV6、兩個選擇信號電路Mf M2、兩個觸發(fā)電路DfD2和一個與門ANDl,其中 與門AND1,輸入為時鐘信號clock和選擇信號select,輸出同時送往兩個所述選擇信號電路, 在六個反相器INV1 INV6中 反相器INV1、反相器INV2和反相器INV3依次串接,所述反相器INVl的輸入端與選擇信號電路Ml的輸出端相連,所述反相器INV3的輸出端和所述選擇信號電路Ml的“I”的輸入端相連, 反相器INV4、反相器INV5和反相器INV6依次串接,所述反相器INV4的輸入端與選擇信號電路M2的輸出端相連,所述反相器INV6的輸出端和所述反相器電路M2的“I”輸入端相連, 所述反相器INVl的輸出信號輸入到所述選擇信號電路M2的“ 0”輸入端, 所述反相器INV4的輸出信號輸入到所述選擇信號電路Ml的“ 0”輸入端, 在兩個觸發(fā)器DfD2中,觸發(fā)器Dl和觸發(fā)器D2依次串接,其中 觸發(fā)器Dl,時鐘信號輸入端輸入所述時鐘信號clock,輸入端D和所述反相器INVl的輸出端相連, 觸發(fā)器D2,時鐘信號輸入端輸入所述時鐘信號clock,輸入端D和所述觸發(fā)器Dl的Q輸出端相連, 偏置矯正電路S2,含有兩個選擇開關SWfSW2,六個觸發(fā)器D3 D8,以及四個異或門XORl X0R4,其中 選擇開關SW1,輸入端與所述觸發(fā)器D2的輸出端Q相連, 在四個觸發(fā)器D3 D8中 觸發(fā)器D3 觸發(fā)器D6共四個觸發(fā)器,四個時鐘信號輸入端都輸入所述時鐘信號clock,四個D輸入端分別連接到所述選擇信號開關SWl的四個選擇輸出端, 在四個異或門X0R1 X0R4中 異或門XORl的兩個輸入端分別與所述觸發(fā)器D3、觸發(fā)器D4的輸出端Q相連, 異或門X0R2的兩個輸入端分別與所述觸發(fā)器D5、觸發(fā)器D6的輸出端Q相連, 異或門X0R3的兩個輸入端分別與所述異或門X0R1、異或門X0R2的輸出端相連, 異或門X0R4,輸出使能信號enable, 選擇開關SW2,輸入端與所述異或門X0R3的輸出端相連, 在兩個觸發(fā)器D7 D8中時鐘信號輸入端都輸入所述時鐘信號clock,各自的輸入端Q分別與所述選擇開關SW2的兩個選擇輸出端相連, 觸發(fā)器D7的輸出端Q與所述異或門X0R4的第一個輸入端相連, 觸發(fā)器D8的輸出端Q與所述異或門X0R4的第二個輸入端相連,同時輸出數(shù)據(jù)輸出信號 dataout, 所述真隨機數(shù)發(fā)生器按以下步驟產(chǎn)生真隨機數(shù) 第I步當select信號和clock信號皆為“I”時,三個所述反相器INV1、INV2、INV3形成奇數(shù)級反相器環(huán)路Loop I,三個反相器INV4、INV5、INV6也形成奇數(shù)級反相器環(huán)路Loop2,而當select信號為“I”而clock信號為“0”時,兩個所述反相器INV1、INV4形成環(huán)路Loop3,由反相器INVl輸出數(shù)據(jù),select信號為0而clock為任意值時電路不工作; 第2歩在第I步中的輸出的數(shù)據(jù)輸入到觸發(fā)器Dl的輸入端D,經(jīng)觸發(fā)器Dl、觸發(fā)器D2后消除亞穩(wěn)態(tài); 第3步所述觸發(fā)器D2輸出的數(shù)據(jù)在時刻1、時刻2、時刻3、時刻4分別輸入到四個所述觸發(fā)器D3、D4、D5和D6,輸出經(jīng)存儲后異或輸出; 第4歩第3步輸出的數(shù)據(jù)在時刻5輸入到觸發(fā)器D8中,經(jīng)存儲后得到數(shù)據(jù)輸出信號dataout,并與前一工作周期時刻0存儲在觸發(fā)器D7中的數(shù)據(jù)異或得到有效信號enable,在連續(xù)向所述觸發(fā)器D7和觸發(fā)器D8輸入“00”或者“ 11”時enable為“0”,輸入“ 10”時enable為 “1”,輸出為“0”,輸入“ 01 ”吋,enable為“ I ”,輸出為“I”。
全文摘要
數(shù)字式真隨機數(shù)發(fā)生器,涉及數(shù)字簽名和認證技術領域,其特征在于S1利用全數(shù)字電路產(chǎn)生隨機數(shù);S2對隨機數(shù)進行偏置矯正產(chǎn)生符合國際標準的真隨機數(shù)。本發(fā)明利用全數(shù)字電路生成真隨機數(shù),可以在不同集成電路工藝下方便地移植,而且可以在FPGA平臺上運行,可以用來替代傳統(tǒng)的模擬電路生成隨機數(shù)的方法,減少了設計成本和研發(fā)周期。
文檔編號G06F7/58GK103049242SQ20121051289
公開日2013年4月17日 申請日期2012年12月4日 優(yōu)先權日2012年12月4日
發(fā)明者李樹國, 王虎森, 李麗娟 申請人:清華大學