隨機數在加密技術中的應用

隨機數的應用范圍還是比較廣泛的,比如在從統計總體中抽取有代隨機數代表性的樣本的時候,或者在將實驗動物分配到不同的試驗組的過程中,或者在進行蒙特卡羅模擬法計算的時候,我們都需要用到隨機數。那么我們今天就來探討一下隨機數在加密技術中的應用。

隨機數在加密技術中的應用

隨機數在加密技術中的應用

一、密鑰的產生

1、序列密碼的產生

序列加密算法是加密技術中的一種常見技術,在序列加密算法中,利用欲加密明文的位序列Pl,P2,…,Pi與密鑰發(fā)生器輸出的一組隨機位序列Kl,K2,…,Ki經過異或運算得到密文Ci= Pi+Ki,解密時利用密文序列與該隨機位序列進行異或運算得到明文Pi= Ci+Ki。由于Kl,K2,…,Ki是隨機序列,所以相同的明文位序列可以有不同的密文,該方法不存在數據擴展和錯誤傳播,實時性好,加密解密容易實現。

該加密算法的安全性很大程度取決于隨機數序列是否夠亂,周期是否夠長。在序列密碼的產生中,通常利用LFSR或線性同余發(fā)生器、非線性隨機數發(fā)生器來產生序列密碼。由于序列加密算法的原理要求隨機數序列還必須是確定的,因為只有這樣解密時才容易使得密鑰重現,所以密碼序列Ki還有一個密鑰K。密鑰序列發(fā)生器包括內部狀態(tài)、下一狀態(tài)函數、輸出函數三部分。密鑰序列發(fā)生器內部原理為,輸出函數處理內部狀態(tài)、下一狀態(tài)函數、輸出函數三部分。密鑰序列發(fā)生器內部原理為,輸出函數處理內部狀態(tài)產生出密鑰序列Ki,下一狀態(tài)函數處理內部狀態(tài)產生新的內部狀態(tài)。密鑰序列發(fā)生器的輸出是該密鑰的函數,如果具有相同的序列密碼密鑰K和內部狀態(tài)則會產生出相同的密碼序列。

2、主機密碼系統中密鑰的產生

主機密碼系統中通常采用主密鑰、二級密鑰和初級密鑰三種不同等級密鑰。主密鑰是一個加密系統中的最高級別的密鑰,用于對主機系統中的二級密鑰和初級密鑰提供保護,因此對主密鑰產生的要求非常高,要求具有很高的隨機,獨立性、不可預測性,一般的偽隨機數發(fā)生器產生的隨機數已不能滿足它的需要,我們通常利用真隨機數發(fā)生器,如利用物理熱噪聲或提取事件過程隨機性,來產生主密鑰,更能夠符合理論上的隨機性,更能滿足系統對主密鑰的要求。

二級密鑰用于加密保護初級密鑰,生存周期一般較長,要接受主密鑰的保護。由于主密鑰已經具有很高的安全性,所以二級密鑰的產生常借助于已有的主密鑰和一個強的密碼算法。通常利用真隨機數發(fā)生器產生主密鑰RNl,RN2,再由主機產生隨機數RN3,利用RNl,RN2,RN3和某強的加密算法E對序數i進行多層加密產生出二級密鑰KNi,KNi= E(RN3,E(RNl,E(RN2,E(RNl,i)))))因為RNl,RN2,RN3是主密鑰均有很高的隨機性,并且有對序數進行了四次強的算法加密,所以要想利用i推出KNi非常困難。

初級密鑰是用于加解密具體數據的密鑰,生存周期一般較短,初級通信密鑰和會話密鑰通常采用一次一密的方式。必須接受更高級別的密鑰保護。通常直接把隨機數看作經過高級密鑰加密的初級密鑰。

二、密鑰分配

1、公開密鑰分配系統

在網絡環(huán)境中,為了對文件保密,需要某些密碼對文件加密,通常這種密碼由可信任的第三方來分配,但是第三方并不絕對可信,所以在傳輸一些高密級的數據時接收雙方需要在沒有第三方的協助下進行加密傳輸,可以通過公開密鑰分配算法來實現。如果I欲與J通信,選取一個具有交換性單向函數F,屬于F值域的元素g被雙方接受。I任選一秘密的Xi,利用單向函數F求出FXi(g),將其送給J,J選取一秘密的Xj,利用F求出Fxj(g)送給I。這樣雙方就能夠獲得一組共同的密鑰或秘密,并且在使用中雙方都無法對其共享密鑰事先進行控制,這樣就能達到很好的保密傳輸效果。

該算法中為了達到不被第三者破解,取決于單向函數F的單向性和X是否隨機,通常會選取一些經過證明具有很好的單向性的函數,對于雙方在選定X時,利用偽隨機數發(fā)生器產生一偽隨機數串作為每次交換的密鑰,就能夠達到保證算法安全性的要求,有效的防止對密鑰進行的窮舉式攻擊和降低根據密文推測是否同發(fā)送同一明文的可能性。

2、簽名和鑒別

在網絡環(huán)境上實現數字通信可以通過在傳送信息上加上發(fā)送方自己的數字簽名來防止可能存在的相互欺騙或抵賴。美國國家標準技術研究所公布的一種數字簽名算法,DSA加密算法其思想為,某個發(fā)送用戶A選擇一私密的X,并利用某算法和X產生出一個公密Y,根據公開密鑰分量(p,q,g),X,報文m的散列碼H(m)和一額外整數K,利用簽名算法求出簽名信息r和s,將其與報文一起發(fā)送給接收方,對方根據Y,q,g,H(m),計算出一量v,將其與r進行比較,如果相符則表示簽名有效,肯定是A所發(fā)送,具有不可抵賴性。

該算法中r值不依賴于報文m,接收者根據收到的報文、簽名、公開密鑰、公開密鑰分量就能恢復出r,必然能實現有效的數字簽名。該算法的安全性取決于計算離散對數的難度和X取值的隨機性。為了加強安全性,給每一個報文一個唯一的密數K,利用偽隨機數發(fā)生器產生X和K即可滿足安全性的需要。

小知識之隨機數:

隨機數一般分為偽隨機數和真隨機數。利用數學算法產生的隨機數屬于偽隨機數。利用物理方法選取自然隨機性產生的隨機數可以看作真隨機數。