本發(fā)明涉及真隨機(jī)數(shù)發(fā)生器領(lǐng)域,尤其涉及一種基于加密算法的真隨機(jī)數(shù)發(fā)生器。
背景技術(shù):
真隨機(jī)數(shù)發(fā)生器(trng)是信息加密設(shè)備中一個(gè)重要的組成部分,它產(chǎn)生的不可預(yù)知、不可再現(xiàn)的密鑰數(shù)字串對(duì)信息加密有著重要的作用。從某種程度上講,隨機(jī)數(shù)的隨機(jī)性和安全性決定了整個(gè)加密算法的性能和安全性?;谖锢黼S機(jī)源的真隨機(jī)數(shù)雖然在隨機(jī)序列的長(zhǎng)度、獨(dú)立性等方面相比偽隨機(jī)數(shù)發(fā)生器得到了突破性進(jìn)展,但是其產(chǎn)生的真隨機(jī)數(shù)序列的隨機(jī)性不夠穩(wěn)定,隨機(jī)數(shù)的質(zhì)量不高,生成速率也較慢。因此,現(xiàn)有技術(shù)真隨機(jī)數(shù)發(fā)生器研究的一個(gè)重要方向是基于振蕩器采樣實(shí)現(xiàn)真隨機(jī)數(shù)發(fā)生器,利用cmos環(huán)形振蕩器中的相位噪聲及相位抖動(dòng)作為隨機(jī)源,可以很方便的利用純數(shù)字電路實(shí)現(xiàn)。早期的嘗試中,fisher、kohlbrenner和tkacik等人都是采用基于時(shí)鐘信號(hào)抖動(dòng)的方法,實(shí)現(xiàn)了隨機(jī)數(shù)發(fā)生器,但是隨機(jī)數(shù)的生成速率不高,通常小于1mbit/s。隨后,sunar等人采用等長(zhǎng)環(huán)形振蕩器實(shí)現(xiàn)了輸出速率為2.5mbit/s的隨機(jī)數(shù)發(fā)生器。速率低主要是由于半導(dǎo)體噪聲、串?dāng)_以及其他不穩(wěn)定因素需要積累到一定程度才能引起相位抖動(dòng),通過(guò)相位抖動(dòng)引起每次采樣時(shí)刻的不確定性,使輸出序列具有隨機(jī)性。參見(jiàn)圖1,所示為現(xiàn)有技術(shù)環(huán)形振蕩器的采樣示意圖,基于傳統(tǒng)環(huán)振的真隨機(jī)數(shù)發(fā)生器采樣一般在產(chǎn)生相位抖動(dòng)的地方進(jìn)行,而從電路上電到發(fā)生相位抖動(dòng)還需要經(jīng)歷過(guò)渡階段、穩(wěn)定振蕩階段以及噪聲影響的積累階段,實(shí)際采樣中如果采樣過(guò)快,則可能會(huì)因?yàn)樵肼暦e累不夠而造成隨機(jī)數(shù)質(zhì)量的降低,生成隨機(jī)數(shù)相關(guān)性增大,降低最終隨機(jī)數(shù)的隨機(jī)性。為了保證隨機(jī)性,每次相位抖動(dòng)積累需要較長(zhǎng)震蕩時(shí)間,導(dǎo)致生成真隨機(jī)數(shù)序列速度較慢。與此同時(shí),噪聲在一定環(huán)境下趨于穩(wěn)定,導(dǎo)致了生成真隨機(jī)數(shù)序列仍具有一定相關(guān)性。為了克服上述技術(shù)問(wèn)題,現(xiàn)有技術(shù)通過(guò)在環(huán)形振蕩器各個(gè)環(huán)路中增加多項(xiàng)式反饋環(huán),通過(guò)反饋縮減相位抖動(dòng)的積累時(shí)間,同時(shí),在一定程度上也能夠使序列相關(guān)性減弱。比如,golic'首先提出了fibonacci環(huán)形振蕩器(firo)和galois(garo)環(huán)形振蕩器的概念,參見(jiàn)圖2,所示為fibonacci環(huán)形振蕩器的結(jié)構(gòu)框圖,采用n個(gè)反相器連接成環(huán)形振蕩器,每個(gè)反相器的輸出端通過(guò)反饋環(huán)路反饋至第一個(gè)反相器的輸入端;參見(jiàn)圖3,所示為galois環(huán)形振蕩器的結(jié)構(gòu)框圖,采用n個(gè)反相器連接成環(huán)形振蕩器,第n個(gè)反相器的輸出端信號(hào)通過(guò)反饋環(huán)路反饋至每個(gè)反相器的輸入端。進(jìn)一步的,
故,針對(duì)目前現(xiàn)有技術(shù)中存在的上述缺陷,實(shí)有必要進(jìn)行研究,以提供一種方案,解決現(xiàn)有技術(shù)中存在的缺陷。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,確有必要提供一種高速真隨機(jī)數(shù)發(fā)生器,能夠提高隨機(jī)數(shù)的輸出速率且極大改善隨機(jī)性,從而滿足高速加密系統(tǒng)的應(yīng)用需求。
為了克服現(xiàn)有技術(shù)的缺陷,本發(fā)明的技術(shù)方案如下:
一種高速真隨機(jī)數(shù)發(fā)生器,包括第一反饋環(huán)振真隨機(jī)源、第二反饋環(huán)振真隨機(jī)源和加密運(yùn)算單元,所述第一反饋環(huán)振真隨機(jī)源用于產(chǎn)生第一隨機(jī)序列,所述第二反饋環(huán)振真隨機(jī)源用于產(chǎn)生第二隨機(jī)序列,所述加密運(yùn)算單元以第一隨機(jī)序列作為明文數(shù)據(jù)且以第二隨機(jī)序列作為密鑰進(jìn)行加密運(yùn)算并輸出密文數(shù)據(jù)作為隨機(jī)數(shù)輸出;
所述第一反饋環(huán)振真隨機(jī)源和所述第二反饋環(huán)振真隨機(jī)源至少包括一個(gè)新型firo環(huán)形振蕩器或新型garo環(huán)形振蕩器;
所述新型firo環(huán)形振蕩器包括多路改進(jìn)型firo環(huán)形振蕩器,每路改進(jìn)型firo環(huán)形振蕩器的輸出端分別與多路選擇器的多個(gè)輸入端相連接,所述多路選擇器受控于控制信號(hào)使其在當(dāng)前時(shí)刻僅選通一路改進(jìn)型firo環(huán)形振蕩器并輸出信號(hào);所述改進(jìn)型firo環(huán)形振蕩器采用n個(gè)反相器連接成環(huán)形振蕩器,每個(gè)反相器的輸出信號(hào)均通過(guò)反饋環(huán)路反饋至第一個(gè)反相器的輸入端,每個(gè)反相器的輸入端都接一個(gè)二選一選擇器,所述二選一選擇器的輸出端與該反相器的輸入端相連接,所述二選一選擇器的第一輸入端與該反相器的輸出端相連接,所述二選一選擇器的第二輸入端與前級(jí)反相器的輸出端相連接,所述二選一選擇器受控于控制信號(hào)使其選通第一輸入端或第二輸入端,當(dāng)所述第一輸入端選通時(shí),每個(gè)反相器從大環(huán)路中斷開(kāi),形成獨(dú)立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)所述第二輸入端選通時(shí),每個(gè)反相器從子環(huán)振斷開(kāi),重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài);
所述新型garo環(huán)形振蕩器包括多路改進(jìn)型garo環(huán)形振蕩器,每路改進(jìn)型garo環(huán)形振蕩器的輸出端分別與多路選擇器的多個(gè)輸入端相連接,所述多路選擇器受控于控制信號(hào)使其在當(dāng)前時(shí)刻僅選通一路改進(jìn)型garo環(huán)形振蕩器并輸出信號(hào);所述改進(jìn)型garo環(huán)形振蕩器采用n個(gè)反相器連接成環(huán)形振蕩器,第n個(gè)反相器的輸出端信號(hào)通過(guò)反饋環(huán)路反饋至每個(gè)反相器的輸入端,每個(gè)反相器的輸入端都接一個(gè)二選一選擇器,所述二選一選擇器的輸出端與該反相器的輸入端相連接,所述二選一選擇器的第一輸入端與該反相器的輸出端相連接,所述二選一選擇器的第二輸入端與前級(jí)反相器的輸出端相連接,所述二選一選擇器受控于控制信號(hào)使其選通第一輸入端或第二輸入端,當(dāng)所述第一輸入端選通時(shí),每個(gè)反相器從大環(huán)路中斷開(kāi),形成獨(dú)立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)所述第二輸入端選通時(shí),每個(gè)反相器從子環(huán)振斷開(kāi),重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
優(yōu)選地,所述第一反饋環(huán)振真隨機(jī)源采用多個(gè)新型firo環(huán)形振蕩器異或輸出;所述第二反饋環(huán)振真隨機(jī)源采用多個(gè)新型garo環(huán)形振蕩器異或輸出。
優(yōu)選地,所述改進(jìn)型firo環(huán)形振蕩器和改進(jìn)型garo環(huán)形振蕩器中,除第n反相器以外的其他反相器輸出端的反饋環(huán)路中接入反饋開(kāi)關(guān)(fi,i為1至n-1的自然數(shù)),采用本原多項(xiàng)式作為反饋多項(xiàng)式控制反饋開(kāi)關(guān)。
優(yōu)選地,所述第一反饋環(huán)振真隨機(jī)源和所述第二反饋環(huán)振真隨機(jī)源中,采用不同的本原多項(xiàng)式使所述第一隨機(jī)序列和所述第二隨機(jī)序列正交。
優(yōu)選地,還包括異或鏈電路,所述第一反饋環(huán)振真隨機(jī)源產(chǎn)生的第一隨機(jī)序列和所述第二反饋環(huán)振真隨機(jī)源產(chǎn)生的第二隨機(jī)序列分別經(jīng)所述異或鏈電路處理后再輸出至所述加密運(yùn)算單元。
優(yōu)選地,所述異或鏈電路包括多個(gè)串接的d觸發(fā)器,所述第一隨機(jī)序列或第二隨機(jī)序列串行輸入至第一個(gè)d觸發(fā)器,每個(gè)d觸發(fā)器的輸出端均與其下一級(jí)d觸發(fā)器的輸入端相連接,所述多個(gè)串接的d觸發(fā)器通過(guò)一同步時(shí)鐘信號(hào)控制每個(gè)d觸發(fā)器同時(shí)輸出信號(hào)并通過(guò)一異或門(mén)異或輸出后作為所述異或鏈電路的輸出。
優(yōu)選地,所述加密運(yùn)算單元為des加密運(yùn)算單元。
優(yōu)選地,所述第一反饋環(huán)振真隨機(jī)源采用9個(gè)新型firo環(huán)形振蕩器異或輸出;所述第二反饋環(huán)振真隨機(jī)源采用9個(gè)新型garo環(huán)形振蕩器異或輸出。
優(yōu)選地,所述新型firo環(huán)形振蕩器包括2路改進(jìn)型firo環(huán)形振蕩器。
優(yōu)選地,所述新型garo環(huán)形振蕩器包括2路改進(jìn)型garo環(huán)形振蕩器。
與現(xiàn)有技術(shù)相比較,本發(fā)明采用加密的方式實(shí)現(xiàn)真隨機(jī)數(shù)發(fā)生器,它的熵源是在firo和garo結(jié)構(gòu)的基礎(chǔ)上通過(guò)加入亞穩(wěn)態(tài)控制電路,使振蕩器的輸出不斷的在亞穩(wěn)態(tài)與穩(wěn)態(tài)之間轉(zhuǎn)換,從而使熵源獲得足夠的熵值,并通過(guò)異或鏈和des算法將生成隨機(jī)數(shù)進(jìn)行均衡校正實(shí)現(xiàn)兩種環(huán)形振蕩器產(chǎn)生隨機(jī)數(shù)的組合,最終隨機(jī)數(shù)生成速率達(dá)到400mbit/s。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)環(huán)形振蕩器的采樣示意圖。
圖2為fibonacci環(huán)形振蕩器(firo)的結(jié)構(gòu)框圖。
圖3為galois(garo)環(huán)形振蕩器的結(jié)構(gòu)框圖。
圖4為高速真隨機(jī)數(shù)發(fā)生器的結(jié)構(gòu)框圖。
圖5為本發(fā)明提出的新型firo環(huán)形振蕩器的電路原理圖。
圖6為改進(jìn)型firo環(huán)形振蕩器的電路原理圖。
圖7為本發(fā)明提出的新型garo環(huán)形振蕩器的電路原理圖。
圖8為改進(jìn)型garo環(huán)形振蕩器的電路原理圖。
圖9為本發(fā)明采用的亞穩(wěn)態(tài)子振環(huán)的結(jié)構(gòu)框圖。
圖10為第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源一種實(shí)施方式的結(jié)構(gòu)框圖。
圖11為本發(fā)明采用的異或鏈電路的原理框圖。
圖12為加密運(yùn)算單元的的原理框圖。
圖13為本發(fā)明真隨機(jī)數(shù)發(fā)生器的功能仿真圖。
圖14為最終輸出信號(hào)的波形圖。
如下具體實(shí)施例將結(jié)合上述附圖進(jìn)一步說(shuō)明本發(fā)明。
具體實(shí)施方式
以下將結(jié)合附圖對(duì)本發(fā)明提供的一種高速真隨機(jī)數(shù)發(fā)生器作進(jìn)一步說(shuō)明。
參見(jiàn)圖4,所示為本發(fā)明高速真隨機(jī)數(shù)發(fā)生器的結(jié)構(gòu)框圖,至少包括第一反饋環(huán)振真隨機(jī)源、第二反饋環(huán)振真隨機(jī)源和加密運(yùn)算單元,第一反饋環(huán)振真隨機(jī)源用于產(chǎn)生第一隨機(jī)序列,第二反饋環(huán)振真隨機(jī)源用于產(chǎn)生第二隨機(jī)序列,加密運(yùn)算單元以第一隨機(jī)序列作為明文數(shù)據(jù)且以第二隨機(jī)序列作為密鑰進(jìn)行加密運(yùn)算并輸出密文數(shù)據(jù)作為隨機(jī)數(shù)輸出。圖4中,第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源組成了熵源部分,異或鏈電路和加密運(yùn)算單元組成了真隨機(jī)數(shù)發(fā)生器的后處理單元,最終真隨機(jī)數(shù)通過(guò)輸出寄存器送至片上系統(tǒng)總線。本發(fā)明通過(guò)兩路獨(dú)立的熵源產(chǎn)生隨機(jī)序列分別作為明文和密鑰,利用加密算法來(lái)進(jìn)一步提高生隨機(jī)數(shù)的質(zhì)量。
為了進(jìn)一步提高經(jīng)加密處理后序列的隨機(jī)性,兩路熵源采用不同的振蕩器結(jié)構(gòu),第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源至少包括一個(gè)新型firo環(huán)形振蕩器或新型garo環(huán)形振蕩器。
要實(shí)現(xiàn)一個(gè)高質(zhì)量的真隨機(jī)數(shù)發(fā)生器不僅要通過(guò)后處理單元提高隨機(jī)數(shù)質(zhì)量,同時(shí)還要提高熵源的品質(zhì)。現(xiàn)有技術(shù)也提出了許多不同原理不同結(jié)構(gòu)的熵源設(shè)計(jì)方案,比如圖2和圖3所示的fibonacci環(huán)形振蕩器(firo)和galois(garo)環(huán)形振蕩器,其優(yōu)點(diǎn)在于設(shè)計(jì)簡(jiǎn)單,僅需使用少量邏輯塊,利用相對(duì)較少的資源就可輸出很高熵值,并且能夠在所有的fpga家族或者在asic中實(shí)現(xiàn);能夠利用fpga工具全自動(dòng)綜合。但是目前的實(shí)現(xiàn)方法中輸出速率都相對(duì)較低,且輸出頻譜中可能會(huì)存在一個(gè)優(yōu)勢(shì)頻率。針對(duì)上述技術(shù)缺陷,本發(fā)明從隨機(jī)數(shù)生成速率的角度出發(fā)對(duì)上述電路進(jìn)行了改進(jìn),提出了新型firo環(huán)形振蕩器和新型garo環(huán)形振蕩器的電路結(jié)構(gòu)。
參見(jiàn)圖5,所示為本發(fā)明提出的新型firo環(huán)形振蕩器的電路原理圖,包括多路改進(jìn)型firo環(huán)形振蕩器,每路改進(jìn)型firo環(huán)形振蕩器的輸出端分別與多路選擇器的多個(gè)輸入端相連接,多路選擇器受控于控制信號(hào)使其在當(dāng)前時(shí)刻僅選通一路改進(jìn)型firo環(huán)形振蕩器并輸出信號(hào)。雖然圖5的電路僅給出了兩路改進(jìn)型firo環(huán)形振蕩器并接的情況,本領(lǐng)域普通技術(shù)人員應(yīng)該能夠明白該電路結(jié)構(gòu)理論上能夠擴(kuò)充為任意路。
參見(jiàn)圖6,所示為改進(jìn)型firo環(huán)形振蕩器的電路原理圖,采用n個(gè)反相器連接成環(huán)形振蕩器,每個(gè)反相器的輸出信號(hào)均通過(guò)反饋環(huán)路反饋至第一個(gè)反相器的輸入端,每個(gè)反相器的輸入端都接一個(gè)二選一選擇器,二選一選擇器的輸出端與該反相器的輸入端相連接,二選一選擇器的第一輸入端與該反相器的輸出端相連接,二選一選擇器的第二輸入端與前級(jí)反相器的輸出端相連接,二選一選擇器受控于控制信號(hào)使其選通第一輸入端或第二輸入端,當(dāng)?shù)谝惠斎攵诉x通時(shí),每個(gè)反相器從大環(huán)路中斷開(kāi),形成獨(dú)立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)?shù)诙斎攵诉x通時(shí),每個(gè)反相器從子環(huán)振斷開(kāi),重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
參見(jiàn)圖7,所示為本發(fā)明提出的新型garo環(huán)形振蕩器的電路原理圖,包括多路改進(jìn)型garo環(huán)形振蕩器,每路改進(jìn)型garo環(huán)形振蕩器的輸出端分別與多路選擇器的多個(gè)輸入端相連接,多路選擇器受控于控制信號(hào)使其在當(dāng)前時(shí)刻僅選通一路改進(jìn)型garo環(huán)形振蕩器并輸出信號(hào)。雖然圖7的電路僅給出了兩路改進(jìn)型garo環(huán)形振蕩器并接的情況,本領(lǐng)域普通技術(shù)人員應(yīng)該能夠明白該電路結(jié)構(gòu)理論上能夠擴(kuò)充為任意路。
參見(jiàn)圖8,所示為改進(jìn)型garo環(huán)形振蕩器的電路原理圖,采用n個(gè)反相器連接成環(huán)形振蕩器,第n個(gè)反相器的輸出端信號(hào)通過(guò)反饋環(huán)路反饋至每個(gè)反相器的輸入端,每個(gè)反相器的輸入端都接一個(gè)二選一選擇器,二選一選擇器的輸出端與該反相器的輸入端相連接,二選一選擇器的第一輸入端與該反相器的輸出端相連接,二選一選擇器的第二輸入端與前級(jí)反相器的輸出端相連接,二選一選擇器受控于控制信號(hào)使其選通第一輸入端或第二輸入端,當(dāng)?shù)谝惠斎攵诉x通時(shí),每個(gè)反相器從大環(huán)路中斷開(kāi),形成獨(dú)立的子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)?shù)诙斎攵诉x通時(shí),每個(gè)反相器從子環(huán)振斷開(kāi),重新接入大環(huán)振,快速進(jìn)入穩(wěn)態(tài)。
現(xiàn)有技術(shù)通常將隨機(jī)數(shù)采樣點(diǎn)設(shè)置相位抖動(dòng)的地方,而忽略振蕩器從起振到穩(wěn)定振蕩所要經(jīng)歷的另一個(gè)不確定的亞穩(wěn)態(tài)狀態(tài),此時(shí)電路的輸出將會(huì)取決于電路的噪聲特性而變得具有真隨機(jī)性。因此,亞穩(wěn)態(tài)狀態(tài)使一種理想的熵源,但是亞穩(wěn)態(tài)狀態(tài)稍縱即逝,只存在于起振階段,進(jìn)入穩(wěn)定振蕩之后就不會(huì)再出現(xiàn)。如圖1所示,起振時(shí)從過(guò)渡階段進(jìn)入穩(wěn)定振蕩階段時(shí),由于起振階段電路噪聲的不確定性會(huì)進(jìn)入亞穩(wěn)態(tài)狀態(tài),從而使穩(wěn)定振蕩階段的初識(shí)電平變得不確定。本發(fā)明圖6和圖8的電路結(jié)構(gòu)中每個(gè)反相器增加了亞穩(wěn)態(tài)子振環(huán),通過(guò)控制信號(hào)使每次采樣時(shí)都引入新的亞穩(wěn)態(tài)狀態(tài),從而有效降低輸出序列的相關(guān)性。
參見(jiàn)圖9,所示亞穩(wěn)態(tài)子振環(huán)的結(jié)構(gòu)框圖,當(dāng)開(kāi)關(guān)閉合后,它的輸出將會(huì)逐漸收斂于亞穩(wěn)定狀態(tài),并由于電路熱噪聲的影響,輸出會(huì)在亞穩(wěn)定狀態(tài)細(xì)微的波動(dòng),而當(dāng)開(kāi)關(guān)斷開(kāi)后,由于反相器在非邏輯值范圍有非常大的反饋系數(shù),反相器的輸出會(huì)快速的離開(kāi)亞穩(wěn)態(tài)區(qū)域進(jìn)去穩(wěn)態(tài),但由于半導(dǎo)體熱噪聲的影響,最終反相器的輸出是進(jìn)入邏輯高電平還是低電平將會(huì)變得具有不確定性。
采用上述技術(shù)方案,就構(gòu)成了能夠不斷在亞穩(wěn)態(tài)和穩(wěn)態(tài)之間轉(zhuǎn)換的firo環(huán)振和garo環(huán)振,這里稱(chēng)之為基于亞穩(wěn)態(tài)的fibonacci反饋環(huán)陣(mfiro)和基于亞穩(wěn)態(tài)的galois反饋環(huán)陣(mgaro)。根據(jù)控制信號(hào)不同,環(huán)形振蕩器會(huì)處于以下兩種狀態(tài):當(dāng)控制信號(hào)為低電平時(shí),各反相器會(huì)從大環(huán)路斷開(kāi),各子環(huán)振進(jìn)入亞穩(wěn)定狀態(tài);當(dāng)控制信號(hào)變?yōu)楦唠娖綍r(shí),各反相器從子環(huán)振斷開(kāi),接入大環(huán)振,同時(shí)它們會(huì)結(jié)束亞穩(wěn)定狀態(tài),快速進(jìn)入穩(wěn)態(tài)。當(dāng)電路從先前的亞穩(wěn)態(tài)模式切換至穩(wěn)態(tài)時(shí),每一個(gè)反相器的輸出值都由其隨機(jī)噪聲決定,環(huán)振的瞬時(shí)電壓同樣也是隨機(jī)的,如此就產(chǎn)生了高熵值。在控制信號(hào)為高電平時(shí),采樣1bit隨機(jī)數(shù)據(jù),在采樣完成后,此真隨機(jī)數(shù)發(fā)生器熵源又進(jìn)入亞穩(wěn)態(tài)來(lái)收集新的隨機(jī)性。因此對(duì)于整個(gè)過(guò)程,僅需要等待幾個(gè)環(huán)振周期,相較于傳統(tǒng)的利用環(huán)振抖動(dòng)結(jié)構(gòu)的發(fā)生器輸出速率顯著提高,同時(shí),通過(guò)選擇器將多個(gè)改進(jìn)型環(huán)振組合在一起,每個(gè)改進(jìn)型環(huán)振都能獨(dú)立的工作,通過(guò)控制信號(hào)選擇,每個(gè)時(shí)刻僅有一個(gè)改進(jìn)型環(huán)振輸出隨機(jī)數(shù),而其他改進(jìn)型環(huán)振已經(jīng)完成亞穩(wěn)態(tài)積累,進(jìn)一步消除了進(jìn)入亞穩(wěn)態(tài)的積累時(shí)間,至少可以保證在控制信號(hào)的高電平和低電平都采樣,在控制信號(hào)頻率相同的情況下,其輸出信號(hào)頻率至少提升了一倍以上。同時(shí),由于采用多個(gè)改進(jìn)型環(huán)振,每個(gè)改進(jìn)型環(huán)振的積累時(shí)間各不相同,有些剛剛從亞穩(wěn)態(tài)進(jìn)入穩(wěn)定振蕩狀態(tài),有些則已經(jīng)在穩(wěn)定振蕩狀態(tài)運(yùn)行一段時(shí)間完成了相位抖動(dòng)積累,實(shí)際上只要改進(jìn)型環(huán)振的數(shù)量足夠多,能夠保證較高隨機(jī)數(shù)輸出速率的同時(shí)讓輸出信號(hào)經(jīng)歷了兩次隨機(jī)過(guò)程,從而進(jìn)一步提升了隨機(jī)數(shù)的質(zhì)量,能夠完全消除兩個(gè)隨機(jī)數(shù)之間的相關(guān)性。
在一種優(yōu)選實(shí)施方式中,第一反饋環(huán)振真隨機(jī)源采用多個(gè)新型firo環(huán)形振蕩器異或輸出;第二反饋環(huán)振真隨機(jī)源采用多個(gè)新型garo環(huán)形振蕩器異或輸出。參見(jiàn)圖10,所示為第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源一種實(shí)施方式的結(jié)構(gòu)框圖,采用9級(jí)反饋環(huán)振,每個(gè)反饋環(huán)振連接一個(gè)d觸發(fā)器,通過(guò)采樣信號(hào)控制d觸發(fā)器采樣反饋環(huán)振的振蕩信號(hào),每個(gè)d觸發(fā)器的輸出端均與異或門(mén)的輸入端相連接,異或門(mén)輸出端再經(jīng)由d觸發(fā)器同步后輸出給后處理電路。由于第一反饋環(huán)振真隨機(jī)源采用9個(gè)新型firo環(huán)形振蕩器,第二反饋環(huán)振真隨機(jī)源采用9個(gè)新型garo環(huán)形振蕩器,從而能夠進(jìn)一步改善隨機(jī)序列的隨機(jī)性。
為了避免一些極端的環(huán)境下,單一的環(huán)形振蕩器的輸出序列特征被暴露,在一種優(yōu)選實(shí)施方式中,在改進(jìn)型firo環(huán)形振蕩器和改進(jìn)型garo環(huán)形振蕩器中,除第n反相器以外的其他反相器輸出端的反饋環(huán)路中接入反饋開(kāi)關(guān)(fi,i為1至n-1的自然數(shù)),采用本原多項(xiàng)式作為反饋多項(xiàng)式控制反饋開(kāi)關(guān)。
本原多項(xiàng)式的二進(jìn)制系數(shù)決定著環(huán)形振蕩器的反饋連接,規(guī)定當(dāng)fi=1時(shí)反饋開(kāi)關(guān)閉合,當(dāng)fi=0時(shí)反饋開(kāi)關(guān)斷開(kāi),用二進(jìn)制的多項(xiàng)式來(lái)表示為:
對(duì)于改進(jìn)型firo環(huán)形振蕩器,反饋多項(xiàng)式只有在滿足以下條件時(shí),它的輸出才不會(huì)出現(xiàn)固定不變的狀態(tài):
f(x)=(1+x)h(x)且h(1)=1(2)
即f(x)可以被1+x整除,但是h(x)不能被1+x整除,其中級(jí)數(shù)n(即反相器的個(gè)數(shù))可以是奇數(shù)也可以是偶數(shù),但是不能等于2。
而對(duì)于改進(jìn)型garo環(huán)形振蕩器,只有在反饋多項(xiàng)式滿足以下條件時(shí),它的輸出才不會(huì)出現(xiàn)固定不變的狀態(tài):
f(x)=(1+x)h(x)(3)
即f(x)可以被1+x整除,其中級(jí)數(shù)n只能是奇數(shù)。
如果反饋多項(xiàng)式h(x)是一個(gè)本原多項(xiàng)式,那么上述的條件都能得到滿足,同時(shí)即使控制信號(hào)始終為高電平,生成的序列也將是一個(gè)周期長(zhǎng)度為2n-2的偽隨機(jī)序列。
隨機(jī)源的隨機(jī)性主要是由邏輯門(mén)的隨機(jī)延時(shí)和傳輸時(shí)間引入,同時(shí)亞穩(wěn)態(tài)結(jié)束后,由于各種內(nèi)外部噪聲的影響,例如熱噪聲、電壓和溫度不可預(yù)測(cè)的短期或者長(zhǎng)期波動(dòng)等,每個(gè)反相器的延遲與相位抖動(dòng)實(shí)際上都不相同,這些反相器的輸出很難會(huì)在同一時(shí)刻變化,會(huì)導(dǎo)致反饋到第一個(gè)反相器的信號(hào)很難預(yù)料,從而會(huì)使反饋信號(hào)出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn),隨機(jī)的延遲和轉(zhuǎn)換時(shí)間導(dǎo)致環(huán)形振蕩器信號(hào)變得不規(guī)則,使得輸出信號(hào)最終具備真隨機(jī)和偽隨機(jī)特性。
進(jìn)一步的,第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源中,采用不同的本原多項(xiàng)式使第一隨機(jī)序列和第二隨機(jī)序列正交。采用不同本原多項(xiàng)式作為反饋多項(xiàng)式的fibonacci環(huán)形振蕩器和galois環(huán)形振蕩器輸出序列是正交的[,因此他們中的任何一個(gè)都可作為原始數(shù)據(jù)或密鑰輸入。
實(shí)際設(shè)計(jì)中為了進(jìn)一步增加熵源隨機(jī)性,第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源均采用9級(jí)反饋環(huán)形振蕩器,每級(jí)反饋環(huán)形振蕩器都采用不同的本原多項(xiàng)式組合,具體見(jiàn)表1。
表1本原多項(xiàng)式表
實(shí)際電路中,由于電路內(nèi)外部各種噪聲影響,隨機(jī)源輸出的隨機(jī)位不可能如理想情況那樣,‘0’和‘1’等概率出現(xiàn),輸出序列的分布可能不能滿足要求,影響最終結(jié)果的統(tǒng)計(jì)特性,因此必須采取后處理電路對(duì)數(shù)據(jù)進(jìn)行消偏處理。
為了克服上述技術(shù)缺陷,本發(fā)明高速真隨機(jī)數(shù)發(fā)生器還包括異或鏈電路,第一反饋環(huán)振真隨機(jī)源產(chǎn)生的第一隨機(jī)序列和第二反饋環(huán)振真隨機(jī)源產(chǎn)生的第二隨機(jī)序列分別經(jīng)異或鏈電路處理后再輸出至加密運(yùn)算單元。
參見(jiàn)圖11,所示為本發(fā)明采用的異或鏈電路的原理框圖,包括多個(gè)串接的d觸發(fā)器,第一隨機(jī)序列或第二隨機(jī)序列串行輸入至第一個(gè)d觸發(fā)器,每個(gè)d觸發(fā)器的輸出端均與其下一級(jí)d觸發(fā)器的輸入端相連接,多個(gè)串接的d觸發(fā)器通過(guò)一同步時(shí)鐘信號(hào)控制每個(gè)d觸發(fā)器同時(shí)輸出信號(hào)并通過(guò)一異或門(mén)異或輸出后作為異或鏈電路的輸出。
上述異或鏈電路的原理如下:假設(shè)輸入隨機(jī)序列中1出現(xiàn)的概率為p,0出現(xiàn)的概率為1-p,則要使相鄰兩個(gè)d觸發(fā)器的異或輸出為1,則他們的輸入必須為01或10,此時(shí)輸出為1的概率為2p(1-p),當(dāng)他們的輸入是00和11時(shí),最終的異或輸出將為0,概率為p2+(1-p)2。當(dāng)有n個(gè)d觸發(fā)器時(shí),由數(shù)學(xué)歸納法知,輸出為1的概率為:
p(1)=0.5-2n-1(p-0.5)n(4)
輸出為0的概率為:
p(0)=0.5+2n-1(p-0.5)n(5)
因此,當(dāng)n趨于無(wú)窮大時(shí),p(1)與p(0)都會(huì)無(wú)限接近0.5。通過(guò)以上分析,隨著異或鏈級(jí)數(shù)的增加,它可以有效的消除序列偏置,實(shí)際上當(dāng)級(jí)數(shù)為6時(shí),序列的偏置就已經(jīng)非常小了。
經(jīng)過(guò)異或鏈電路處理后的序列仍然不能滿足大多數(shù)安全系統(tǒng)的要求,因?yàn)榻?jīng)過(guò)嚴(yán)格的游程檢測(cè)會(huì)發(fā)現(xiàn)在序列中仍然存在不均勻的分布。上述各環(huán)形振蕩器的輸出雖然是真隨機(jī)的,但是它們包含了共模分量,而長(zhǎng)游程檢測(cè)會(huì)很大可能的揭示共模分量的存在。美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(nist,即nationalinstituteofstandardsandtechnology)發(fā)布了sp800-22標(biāo)準(zhǔn),明確規(guī)定了如何評(píng)價(jià)隨機(jī)數(shù)質(zhì)量的好壞。通過(guò)加密/解密算法迭代運(yùn)算可以有效消除輸出比特流中的共模分量,有效的提高共模抑制比(cmrr)。
在一種優(yōu)選實(shí)施方式中,加密運(yùn)算單元為des加密運(yùn)算單元。參見(jiàn)圖12,所示為des加密運(yùn)算單元的原理框圖,明文寄存器和密鑰寄存器從異或鏈輸出端獲取數(shù)據(jù),當(dāng)明文寄存器和密鑰寄存器存滿以后,控制模塊發(fā)送使能信號(hào)給加密運(yùn)算模塊,加密運(yùn)算工作完成后,密文輸出端將64位隨機(jī)數(shù)送到真隨機(jī)數(shù)輸出寄存器等待其他模塊取用。
參見(jiàn)圖13,所示為本發(fā)明真隨機(jī)數(shù)發(fā)生器的功能仿真圖。其中,reset、start和clk為輸入信號(hào),當(dāng)start為高電平時(shí)電路開(kāi)始工作,reset為復(fù)位信號(hào)當(dāng)為低電平時(shí)電路復(fù)位,系統(tǒng)時(shí)鐘clk經(jīng)二分頻后得到狀態(tài)控制時(shí)鐘clk_ctrl,通過(guò)它控制熵源不斷的亞穩(wěn)態(tài)和穩(wěn)態(tài)之間轉(zhuǎn)換,clk_sampling是采樣時(shí)鐘,在它的上升沿采樣1bit數(shù)據(jù),fibonacci_out和galois_out是經(jīng)過(guò)異或電路處理后的輸出,它們分別經(jīng)過(guò)串轉(zhuǎn)并電路后轉(zhuǎn)換為64位的并行信號(hào)des_in和key_in,當(dāng)每次轉(zhuǎn)換完成后des_in_vld和key_in_vld會(huì)被拉高,告知des模塊數(shù)據(jù)已準(zhǔn)備完畢,可以開(kāi)始des運(yùn)算,經(jīng)過(guò)17個(gè)系統(tǒng)時(shí)鐘后,des運(yùn)算全部完成,此時(shí)des_vld信號(hào)會(huì)被拉高,輸出鎖存器會(huì)將此時(shí)的des_out64位輸出數(shù)據(jù)進(jìn)行鎖存,trng_out和trng_rdy是最終的輸出信號(hào),當(dāng)trng_rdy被拉高后,說(shuō)明des模塊的輸出數(shù)據(jù)已被鎖存,系統(tǒng)可以通過(guò)64位的輸出總線trng_out獲取生成的隨機(jī)數(shù)。
借助某型fpga平臺(tái),綜合后共占用1,041個(gè)邏輯單元和412個(gè)寄存器,系統(tǒng)時(shí)鐘頻率為50mhz,通過(guò)pll倍頻后產(chǎn)生200mhz的時(shí)鐘作為工作時(shí)鐘,通過(guò)示波器觀察后處理電路處理后的第一反饋環(huán)振真隨機(jī)源和第二反饋環(huán)振真隨機(jī)源輸出信號(hào),最終信號(hào)輸出波形如圖14所示,輸出頻率為6.25mhz左右。由于des加密運(yùn)算單元輸出為64位,按照計(jì)算公式:輸出速率=位寬*頻率,因此,得到最終真隨機(jī)數(shù)生成速率在400mbit/s,相對(duì)于現(xiàn)有技術(shù),隨機(jī)數(shù)生成速率有了較大的提升。
為了進(jìn)一步測(cè)試本發(fā)明所產(chǎn)生隨機(jī)數(shù)的隨機(jī)性,根據(jù)美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所提供的nistsp800-22標(biāo)準(zhǔn),使用其隨機(jī)數(shù)測(cè)試套件對(duì)所接收到的1000組總計(jì)126mbit的真隨機(jī)數(shù)數(shù)據(jù)進(jìn)行隨機(jī)性評(píng)估測(cè)試,測(cè)試項(xiàng)目和結(jié)果如表2所示。
表2隨機(jī)序列的nist測(cè)試結(jié)果
由表2的測(cè)試結(jié)果驗(yàn)證本發(fā)明的技術(shù)方案通過(guò)了nist認(rèn)證。同時(shí),該方案采用純數(shù)字電路設(shè)計(jì),功耗較低,集成度較高,便于實(shí)現(xiàn),可以作為ip核使用,能快速移植到集成電路設(shè)計(jì)流程中,縮短開(kāi)發(fā)周期,且輸出速率較高,從而能夠在實(shí)際芯片設(shè)計(jì)和產(chǎn)業(yè)化中得到了廣泛應(yīng)用。
在獲得完整的fpga結(jié)果后,本發(fā)明技術(shù)方案被采納應(yīng)用于usb閃存盤(pán)(usbflashmemorydrive)控制器芯片中。該控制器主要特征有:
具有usb2.0接口,數(shù)據(jù)傳輸速率480mb/s,
數(shù)據(jù)存儲(chǔ)速度:連續(xù)讀30mb/s,連續(xù)寫(xiě)20mb/s.
驅(qū)動(dòng)2通道nand型閃存(flashmemory),
具有8個(gè)片選信號(hào),最大支持16顆nand型閃存,
具有72bit糾錯(cuò)算法(ecc)和均衡算法(wear-leveling),
片上數(shù)據(jù)加密算法,速度達(dá)到50mb/s.
針對(duì)數(shù)據(jù)加密功能,該控制器集成了aes加密算法和商密ms4算法實(shí)現(xiàn)數(shù)據(jù)流的對(duì)稱(chēng)加密/解密,而本發(fā)明的真隨機(jī)數(shù)發(fā)生器就是用來(lái)產(chǎn)生密鑰。芯片采用110納米(110nm)邏輯工藝實(shí)現(xiàn),芯片面積3.085mm*2.750mm,采用qfn封裝(48引腳),已經(jīng)進(jìn)入了批量生產(chǎn),投入市場(chǎng)數(shù)量已超過(guò)100萬(wàn)顆,是國(guó)際上當(dāng)前主流的加密型u盤(pán)控制器芯片之一。
以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。