摘 要: 隨著信息技術(shù)的發(fā)展,智能IC卡在認(rèn)證、銀行、交通等領(lǐng)域得到廣泛應(yīng)用,系統(tǒng)的真隨機(jī)數(shù)的產(chǎn)生及其改進(jìn)成為人們的研究重點(diǎn)之一。簡(jiǎn)單論述了真?zhèn)坞S機(jī)數(shù)的產(chǎn)生方法,并對(duì)其隨機(jī)性進(jìn)行了偽隨機(jī)方法的改進(jìn)。測(cè)試結(jié)果表明,經(jīng)過算法處理后的隨機(jī)性得到了較大的提高,完全通過國(guó)家商用密碼管理局的隨機(jī)性檢測(cè)規(guī)范的測(cè)試。
關(guān)鍵詞: 智能卡;隨機(jī)數(shù);隨機(jī)性測(cè)試;算法
0 引言
隨機(jī)數(shù)在智能卡芯片操作系統(tǒng)(Chip Operation System,COS)中主要用于卡片和讀卡器之間的認(rèn)證、數(shù)據(jù)加密及其安全傳輸。隨機(jī)數(shù)是以現(xiàn)代密碼學(xué)為基礎(chǔ)的信息安全系統(tǒng)的基石。整個(gè)系統(tǒng)的安全性完全依賴于隨機(jī)數(shù)序列的生成效率和質(zhì)量。因此,高質(zhì)量的隨機(jī)數(shù)對(duì)COS的安全舉足輕重,如果隨機(jī)數(shù)的隨機(jī)性不夠安全,整個(gè)系統(tǒng)極有可能被攻擊者攻破,造成無(wú)法挽回的損失。
1 偽隨機(jī)數(shù)和真隨機(jī)數(shù)
信息安全系統(tǒng)中的隨機(jī)數(shù)序列要求具有足夠的長(zhǎng)度和周期,以及盡可能高的熵值,即具有高度的隨機(jī)性和不可預(yù)測(cè)性。
隨機(jī)數(shù)序列的產(chǎn)生方法有兩種:偽隨機(jī)數(shù)和真隨機(jī)數(shù)。
1.1偽隨機(jī)數(shù)
目前應(yīng)用的隨機(jī)數(shù)通常是通過某些數(shù)學(xué)公式計(jì)算而產(chǎn)生的偽隨機(jī)數(shù),即由偽隨機(jī)數(shù)發(fā)生器(Pseudo Random Number Generator,PRNG)產(chǎn)生的,它是由一個(gè)初始狀態(tài)開始,通過一個(gè)確定的算法來生成隨機(jī)數(shù)。一旦給定算法和種子,輸出序列就確定了,有一定的周期性。
偽隨機(jī)序列一般都有比較好的隨機(jī)統(tǒng)計(jì)特性,其用數(shù)學(xué)算法生成,在一些統(tǒng)計(jì)特性方面接近真隨機(jī)序列,但卻是周期的和可預(yù)測(cè)的。
偽隨機(jī)數(shù)容易獲得且方便使用,一般用于仿真、測(cè)試等場(chǎng)合。
1.2 真隨機(jī)數(shù)
真隨機(jī)數(shù)是不可預(yù)測(cè)的,因而不可能重復(fù)產(chǎn)生兩個(gè)相同的真隨機(jī)數(shù)數(shù)列。真隨機(jī)數(shù)只能用某些隨機(jī)物理過程來產(chǎn)生。例如放射性衰變、電子熱噪聲、宇宙射線的觸發(fā)時(shí)間等。
真隨機(jī)數(shù)序列是由真隨機(jī)數(shù)發(fā)生器(True Random Number Generator,TRNG)產(chǎn)生,是依托自然界物理現(xiàn)象的隨機(jī)特性。對(duì)一個(gè)TRNG來說,不存在初始序列或種子,沒有任何一種算法可以預(yù)先決定下一個(gè)輸出是什么,消除了偽隨機(jī)性的周期問題,而且是獨(dú)立和不相關(guān)的。
真隨機(jī)序列雖然有難以預(yù)測(cè)、不能重復(fù)的特性,但隨機(jī)統(tǒng)計(jì)卻不理想。真隨機(jī)序列用物理方法生成,通過選取真實(shí)世界的自然隨機(jī)性,所生成的隨機(jī)數(shù)稱為真隨機(jī)數(shù)。
真隨機(jī)數(shù)取自物理世界的真實(shí)隨機(jī)源,難以破解,主要應(yīng)用在數(shù)據(jù)加密、密鑰管理、身份鑒定等對(duì)安全性要求較高的領(lǐng)域。
2 基于振蕩采樣產(chǎn)生隨機(jī)數(shù)
在智能卡中隨機(jī)數(shù)通常用于產(chǎn)生密鑰以及與讀卡器之間的認(rèn)證。由于高安全的原因,隨機(jī)數(shù)應(yīng)當(dāng)是真隨機(jī)數(shù)而不是偽隨機(jī)數(shù)?,F(xiàn)在所有的智能卡控制芯片都有產(chǎn)生真隨機(jī)數(shù)的硬件隨機(jī)數(shù)產(chǎn)生器。所產(chǎn)生的隨機(jī)數(shù)的隨機(jī)性必須不能受到外部物理環(huán)境的影響,比如溫度、電壓。
本文真隨機(jī)數(shù)的產(chǎn)生基于振蕩采樣的設(shè)計(jì)方法?;谡袷幉蓸拥腡RNG從時(shí)鐘抖動(dòng)中獲得隨機(jī)性。圖1所示是基于振蕩器的真隨機(jī)數(shù)發(fā)生器。
帶有抖動(dòng)的慢振蕩器通過D觸發(fā)器采樣一個(gè)周期固定的快振蕩器,輸出隨機(jī)序列Y。由于慢振蕩器的抖動(dòng)是不確定的[1],并且其抖動(dòng)范圍遠(yuǎn)遠(yuǎn)大于快振蕩器周期,因此輸出0和1的概率基本相等,從而輸出的序列Y隨機(jī)。
振蕩器的相位抖動(dòng)使得采樣值具有不確定性,理想情況每一次采樣都能產(chǎn)生一個(gè)隨機(jī)位。但產(chǎn)生的隨機(jī)數(shù)不具有較好的統(tǒng)計(jì)屬性,所以通常會(huì)用偽隨機(jī)的方法來對(duì)采樣輸出進(jìn)行處理,改善其隨機(jī)性。
3 隨機(jī)數(shù)隨機(jī)性的算法改進(jìn)及測(cè)試
3.1 真隨機(jī)數(shù)的偽隨機(jī)處理
雖然真隨機(jī)數(shù)發(fā)生器在密碼、密鑰的應(yīng)用中起著重要作用,但是目前大多數(shù)真隨機(jī)數(shù)發(fā)生器還是基于一種理想狀況來分析其輸出的隨機(jī)序列的性能。由于各種物理環(huán)境變化的影響,基于硬件實(shí)現(xiàn)的隨機(jī)序列源通常具有一定的相關(guān)性。
實(shí)際中產(chǎn)生的隨機(jī)數(shù)存在分布性較差、穩(wěn)定性不佳等缺點(diǎn),所以在實(shí)際應(yīng)用中,通常還需要對(duì)其發(fā)生器的輸出序列進(jìn)行進(jìn)一步的處理和運(yùn)算來改進(jìn),才能使輸出的序列通過各種隨機(jī)性的測(cè)試。
幾乎每個(gè)智能卡操作系統(tǒng)都包括有用于鑒別的加密算法。使用它作為真隨機(jī)數(shù)的偽隨機(jī)改進(jìn)是一個(gè)必然的選擇。實(shí)現(xiàn)一個(gè)盡可能把明文攪亂的加密算法,如果不了解密鑰就無(wú)法從密文得出明文。稱之為“雪崩準(zhǔn)則”的原理:平均而言,輸人改變1位則輸出的各位中將有一半要改變[2]。這個(gè)特性能很好地為隨機(jī)數(shù)發(fā)生器所應(yīng)用,發(fā)生器的準(zhǔn)確構(gòu)造隨其實(shí)現(xiàn)而各不相同。圖2和圖3是兩種真隨機(jī)數(shù)的改進(jìn)方法示意圖。
基本改進(jìn)過程:將產(chǎn)生的真隨機(jī)數(shù)填充環(huán)形緩沖器,再將環(huán)形緩沖器部件之值用DES加密,用一個(gè)對(duì)卡是唯一的密鑰,產(chǎn)生密文長(zhǎng)度為8 B的隨機(jī)數(shù),也可以采用其他加密算法進(jìn)行加密。加密后的數(shù)據(jù)與緩沖器里下一個(gè)真隨機(jī)數(shù)的XOR值提供了EEPROM環(huán)形緩沖器的新輸入。循環(huán)結(jié)束后產(chǎn)生的隨機(jī)數(shù)即為改進(jìn)的真隨機(jī)數(shù)。
對(duì)產(chǎn)生的真隨機(jī)數(shù)通過加密算法進(jìn)行進(jìn)一步改進(jìn)處理。主要步驟為:
?。?)先通過硬件隨機(jī)數(shù)發(fā)生器,產(chǎn)生8/16 B的隨機(jī)數(shù),將產(chǎn)生的真隨機(jī)數(shù)作為明文,再重新產(chǎn)生一次真隨機(jī)數(shù)作為密鑰,經(jīng)過3DES加密得到密文;
?。?)將經(jīng)3DES加密后的密文,作為SM1國(guó)密算法的基礎(chǔ)密鑰EK;
?。?)重復(fù)步驟(1),將得到的密文作為SM1國(guó)密算法的系統(tǒng)密鑰SK;
?。?)重復(fù)步驟(1),將得到的密文作為SM1國(guó)密算法的輔助密鑰AK;
?。?)重復(fù)步驟(1),將得到的密文作為新的明文;
?。?)利用步驟(2)~步驟(5)產(chǎn)生的密鑰和明文,通過SM1國(guó)密算法進(jìn)行加密,得到的隨機(jī)數(shù)稱為改進(jìn)隨機(jī)數(shù)。
3.2 改進(jìn)隨機(jī)數(shù)的測(cè)試
實(shí)現(xiàn)了隨機(jī)數(shù)發(fā)生器之后,對(duì)它所產(chǎn)生的隨機(jī)數(shù)必須嚴(yán)格地測(cè)試,基本情況是在所產(chǎn)生的隨機(jī)數(shù)中,1和0的數(shù)量應(yīng)接近于相等。采用標(biāo)準(zhǔn)統(tǒng)計(jì)方法從數(shù)學(xué)上測(cè)試隨機(jī)數(shù)。對(duì)大量8位隨機(jī)數(shù)進(jìn)行測(cè)試,應(yīng)當(dāng)有10 000~100 000的數(shù)字產(chǎn)生,分析以達(dá)到合理的可信結(jié)果。測(cè)試方法是使用計(jì)算機(jī)測(cè)試程序。
本實(shí)驗(yàn)使用的測(cè)試工具是由美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)推出的SP 800-22[3]隨機(jī)性測(cè)試工具,并根據(jù)國(guó)家商用密碼管理局的隨機(jī)性檢測(cè)規(guī)范的要求[4],對(duì)測(cè)試工具補(bǔ)充了所增測(cè)試項(xiàng)。
測(cè)試設(shè)定的顯著性水平為α=0.01,樣本數(shù)量為1 000,樣本長(zhǎng)度選取106 bit。測(cè)試結(jié)果如表1所示。
根據(jù)國(guó)密局隨機(jī)性檢測(cè)規(guī)范,當(dāng)樣本數(shù)量為1 000個(gè),每個(gè)樣本容量為106 bit時(shí),如果通過的樣本個(gè)數(shù)不小于981,則隨機(jī)數(shù)發(fā)生器通過此項(xiàng)檢測(cè);否則,未通過此項(xiàng)檢測(cè)。從表1可知,改進(jìn)的真隨機(jī)數(shù)產(chǎn)生器通過了國(guó)家商用密碼管理局的隨機(jī)性檢測(cè)規(guī)范的所有隨機(jī)性測(cè)試項(xiàng)。
4 結(jié)論
本文描述了一個(gè)基于振蕩器的真隨機(jī)數(shù)的實(shí)現(xiàn)方法,并對(duì)產(chǎn)生的隨機(jī)數(shù)進(jìn)行了偽隨機(jī)改進(jìn)。測(cè)試結(jié)果顯示,改進(jìn)后的真隨機(jī)數(shù)的輸出是隨機(jī)的,滿足了國(guó)家商用密碼管理局對(duì)智能卡COS產(chǎn)品的隨機(jī)性要求。
參考文獻(xiàn)
[1] 霍嘉.隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)與研究[D].西安:西安科技大學(xué),2010:28-30.
[2] RANKL W, EFFING W. Smart card handbook(4th edition)[M]. New York: JohnWiley&Sons, 2010:159-166.
[3] NIST. FIPS PUBS 800-22. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications[Z]. 2010.
[4] 國(guó)家密碼管理局商用密碼檢測(cè)中心.隨機(jī)性檢測(cè)規(guī)范[Z]. 2014.