一種生成偽隨機數(shù)的方法及偽隨機數(shù)發(fā)生器的制造方法
【技術領域】
[0001]本發(fā)明關于偽隨機數(shù)技術領域,特別是關于偽隨機數(shù)的生成技術,具體的講是一種生成偽隨機數(shù)的方法及偽隨機數(shù)發(fā)生器。
【背景技術】
[0002]隨機數(shù)一般應用于加密算法等領域。但是,比隨機數(shù)更容易產(chǎn)生的偽隨機數(shù)出現(xiàn)了,由于偽隨機數(shù)更容易操作和處理,被更廣泛的應用于各個領域。
[0003]偽隨機數(shù)又稱偽隨機數(shù)序列,產(chǎn)生這種偽隨機數(shù)的算法稱為偽隨機數(shù)發(fā)生器,可通過軟件或硬件來實現(xiàn)?,F(xiàn)有技術中有許多種方法生成偽隨機數(shù),但是每種生成偽隨機數(shù)的方法都有其局限性,設計方案相對單一,在實際應用中無法給應用平臺提供更多的選擇方案。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有技術存在的上述技術問題,本發(fā)明提供了一種生成偽隨機數(shù)的方法及偽隨機數(shù)發(fā)生器,應用國密SM4算法與3DES算法結合確定生成函數(shù)進而輸出偽隨機數(shù),為偽隨機數(shù)發(fā)生器提供了一種新的設計方案,由于用到國密SM4算法以及3DES算法,因此增加了安全性。
[0005]本發(fā)明的目的之一是,提供一種生成偽隨機數(shù)的方法,所述方法包括:獲取預先設定的密鑰、初始向量、種子以及加密函數(shù),所述的加密函數(shù)調(diào)用SM4算法以及3DES算法;所述SM4算法與3DES算法結合確定生成函數(shù);根據(jù)所述的生成函數(shù)、密鑰、初始向量以及種子輸出偽隨機數(shù)。
[0006]在本發(fā)明的優(yōu)選實施方式中,所述的加密函數(shù)同時包括SM4算法和3DES算法,兩種算法被調(diào)用一次或多次。
[0007]在本發(fā)明的優(yōu)選實施方式中,所述的生成函數(shù)包括所述加密函數(shù)以及代數(shù)運算。
[0008]在本發(fā)明的優(yōu)選實施方式中,所述的方法還包括:預先確定所述加密函數(shù)的調(diào)用方式。
[0009]在本發(fā)明的優(yōu)選實施方式中,所述的方法還包括:根據(jù)輸出的偽隨機數(shù)動態(tài)調(diào)節(jié)所述加密函數(shù)的調(diào)用方式。
[0010]本發(fā)明的目的之一是,提供了偽隨機數(shù)發(fā)生器,所述的偽隨機數(shù)發(fā)生器包括:獲取模塊,用于獲取預先設定的密鑰、初始向量、種子以及加密函數(shù),所述的加密函數(shù)調(diào)用SM4算法以及3DES算法;生成函數(shù)確定模塊,所述SM4算法與3DES算法結合確定生成函數(shù);偽隨機數(shù)輸出模塊,用于根據(jù)所述的生成函數(shù)、密鑰、初始向量以及種子輸出偽隨機數(shù)。
[0011]在本發(fā)明的優(yōu)選實施方式中,所述的加密函數(shù)同時包括SM4算法和3DES算法,兩種算法被調(diào)用一次或多次。
[0012]在本發(fā)明的優(yōu)選實施方式中,所述的生成函數(shù)包括所述加密函數(shù)以及代數(shù)運算。
[0013]在本發(fā)明的優(yōu)選實施方式中,所述的偽隨機數(shù)發(fā)生器還包括:加密函數(shù)調(diào)用方式確定模塊,用于預先確定所述加密函數(shù)的調(diào)用方式。
[0014]在本發(fā)明的優(yōu)選實施方式中,所述的偽隨機數(shù)發(fā)生器還包括:加密函數(shù)調(diào)用方式調(diào)節(jié)模塊,用于根據(jù)輸出的偽隨機數(shù)動態(tài)調(diào)節(jié)所述加密函數(shù)的調(diào)用方式。
[0015]本發(fā)明的有益效果在于,提供了一種生成偽隨機數(shù)的方法及偽隨機數(shù)發(fā)生器,針對現(xiàn)有技術中原有的設計方案相對單一的問題,提供了一種新的設計方案,應用國密SM4算法與3DES算法結合確定生成函數(shù)進而輸出偽隨機數(shù),由于用到國密SM4算法以及3DES算法,因此增加了安全性,且在優(yōu)選實施方式中,根據(jù)平臺的限制,SM4算法可與3DES算法自由切換,調(diào)用一次或多次,選擇空間更大,由于用到的兩種加密方式在實際應用中較為普遍,應用平臺實現(xiàn)起來比較方便。
[0016]為讓本發(fā)明的上述和其他目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下。
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為現(xiàn)有技術中的3DES算法的原理示意圖;
[0019]圖2為現(xiàn)有技術中的3DES算法的單DES流程示意圖;
[0020]圖3為國密SM4算法的原理示意圖;
[0021]圖4為本發(fā)明實施例提供的一種生成偽隨機數(shù)的方法的實施方式一的流程圖;
[0022]圖5為本發(fā)明實施例提供的一種生成偽隨機數(shù)的方法的實施方式二的流程圖;
[0023]圖6為本發(fā)明實施例提供的一種生成偽隨機數(shù)的方法的實施方式三的流程圖;
[0024]圖7為本發(fā)明實施例提供的一種偽隨機數(shù)發(fā)生器的實施方式一的結構框圖;
[0025]圖8為本發(fā)明實施例提供的一種偽隨機數(shù)發(fā)生器的實施方式二的結構框圖;
[0026]圖9為本發(fā)明實施例提供的一種偽隨機數(shù)發(fā)生器的實施方式三的結構框圖;
[0027]圖10為本發(fā)明提供的SM4算法與3DES算法結合的偽隨機數(shù)發(fā)生器示例的結構示意圖。
【具體實施方式】
[0028]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0029]本發(fā)明針對現(xiàn)有技術中雖然有許多種方法生成偽隨機數(shù),但是每種生成偽隨機數(shù)的方法都有其局限性,設計方案相對單一,在實際應用中無法給應用平臺提供更多的選擇方案,且安全性較低的技術問題,提出了一種生成偽隨機數(shù)的方法以及偽隨機數(shù)發(fā)生器,應用國密SM4算法與3DES算法結合確定生成函數(shù)進而輸出偽隨機數(shù),為偽隨機數(shù)發(fā)生器提供了一種新的設計方案,由于用到國密SM4算法以及3DES算法,因此增加了安全性。
[0030]下面首先介紹偽隨機數(shù)發(fā)生器的基本原理。
[0031 ] 1、從一個初始種子值開始通過各種計算得到序列。
[0032]2、一般要求:必須擁有良好的統(tǒng)計屬性
[0033]3、廣泛應用于各個領域,如密碼學,軟件仿真等。
[0034]示例:ANSIC 中的 rand()
[0035]s(0) = 12345
[0036]s(i+l) = 1103515245*s(i)+12345mod, i = 0,1,...
[0037]圖3為國密SM4算法的原理示意圖,由圖3可知,國密SM4算法中,明文、密鑰、密文都是16字節(jié),非線性迭代輪函數(shù)包括32次循環(huán),每輪循環(huán)包括非線性變換S盒,以及由移位異或構成的線性變換。除了 256字節(jié)的S盒之外,還定義了另外兩組參數(shù)FK以及CK。密鑰擴展算法是先把16字節(jié)密鑰按照4字節(jié)一組,再利用類似于數(shù)據(jù)加密的操作在4組初始密鑰的基礎上生成32組4字節(jié)輪密鑰。
[0038]圖1為現(xiàn)有技術中的3DES算法的原理示意圖,圖2為現(xiàn)有技術中的3DES算法的單DES流程示意圖。由圖1、圖2可知,三次DES調(diào)用的結果,密鑰長度為112個bit。單DES的非線性迭代輪函數(shù)包括16次循環(huán)。單DES的每輪循環(huán)包括非線性變換S盒,以及由換位、移位、異或構成的線性變換。與SM4只用到一個S盒不同,單DES用到8個不同的S盒。單DES的密鑰擴展算法先把56位有效分為28位的兩組,再利用移位、選位、換位操作生成16組6字節(jié)輪密鑰。
[0039]3DES算法已經(jīng)應用于隨機數(shù)發(fā)生器,例如ANST X9.17。同樣是對稱分組密碼,SM4算法原理與3DES類似,也可以用于偽隨機數(shù)生成。由國密SM4算法和3DES算法的原理,本發(fā)明提出了一種生成偽隨機數(shù)的方法,將兩種算法結合生成偽隨機數(shù),如圖4所示,在實施方式一中,該方法具體包括:
[0040]S101:獲取預先設定的密鑰、初始向量、種子以及加密函數(shù),所述的加密函數(shù)調(diào)用SM4算法以及3DES算法。
[0041]S102:所述SM4算法與3DES算法結合確定生成函數(shù)。在具體的實施方式中,所述的加密函數(shù)同時包括SM4算法和3DES算法,兩種算法被調(diào)用一次或多次。所述的生成函數(shù)包括所述加密函數(shù)以及代數(shù)運算。
[0042]S103:根據(jù)所述的生成函數(shù)、密鑰、初始向量以及種子輸出偽隨機數(shù)。
[0043]上述方法利用兩種算法元素的長度關系,可以變換或改進生成函數(shù),SM4算法密鑰長度為16字節(jié)。3DES算法雖然實際用到的密鑰長度為112bit,但密鑰輸入值也可以是16字節(jié)(無效bit算法會自動過濾)。兩算法的輸入/輸出的塊處理長度恰好為2倍關系。因此對于一個16字節(jié)的明文,運用同一個16字節(jié)密鑰,兩種算法都可以得到16字節(jié)密文。
[0044]如上所述的一種生成偽隨機數(shù)的方法,其生成的偽隨機數(shù)可被廣泛應用于各個領域,將國密SM4算法與3DES算法相結合生成偽隨機數(shù)為應用平臺提供了更多的選擇。由于很多平臺(如智能卡等)都同時支持兩種算法,將兩種算法相結合生成隨機數(shù)是比較容易實現(xiàn)的。
[0045]本發(fā)明利用了對稱分組密碼本身的特性:SM4以及3DES都是對稱密碼,而對稱分組密碼的原理是通過發(fā)散和混淆函數(shù)對明文進行非線性變換從而得到?jīng)]有統(tǒng)計特性的密文。因此,利用這兩種算法生成隨機數(shù)可以以分組密碼的安全性確保偽隨機數(shù)序列的安全性。
[0046]本發(fā)明利用了兩種算法的不同加密函數(shù)特征:SM4與3DES兩種算法雖然基于相同的對稱分組密碼原理,但具體采用的加解密操作函數(shù)卻有很大區(qū)別,各有側(cè)重。同時利用兩種算法會更好的擾亂明文信息,從而提高偽隨機數(shù)質(zhì)量。
[0047]加密函數(shù)的調(diào)用方式有預定選擇和動態(tài)選擇兩種,下面首先介紹預定選擇。圖5為本發(fā)明實施例提供的一種生成偽隨機數(shù)的方法的實施方式二的流程圖,由圖5可知,該方法在實施方式二中具體包括:
[0048]S201:獲取預先設定的密鑰、初始向量、種子以及加密函數(shù),所述的加密函數(shù)調(diào)用SM4算法以及3DES算法;
[0049]S202:預先確定所述加密函數(shù)的調(diào)用方式;
[0050]S203:所述SM4算法與3DES算法結合確定生成函數(shù);
[0051]S204:根據(jù)所述的生成函數(shù)、密鑰、初始向量以及種子輸出偽隨機數(shù)。
[0052]在該實施方式二中,生成函數(shù)中的加密函數(shù)的調(diào)用方式是預先確定的。預定選擇指隨機數(shù)發(fā)生器投入使用之前即確定了生成函數(shù)中加密函數(shù)的調(diào)用方式,使用過程中不會發(fā)生變化。設計生成函數(shù)時可以根據(jù)其生成隨機數(shù)的性能測試結果(目前比較成熟的是NIST公布的一套測試組件),變換調(diào)用的具體函數(shù)(SM4算法或3DES算法)。如果平臺有特殊限制,也可以根據(jù)具體情況選擇加密函數(shù)。
[0053]下面介紹加密函數(shù)的動態(tài)選擇,圖6為本發(fā)明實施例提供的一種生成偽隨機數(shù)的方法的實施方式三的流程圖,由圖6可知,該方法在實施方式三中具體包括:
[0054]S301:獲取預先設定的密鑰、初始向量、種子以及加密函數(shù),所述的加密函數(shù)調(diào)用SM4算法以及3DES算法;
[0055]S302:所述SM4算法與3DE