
最好的計算機能產生的是偽隨機序列產生器,什麼意思呢?許多人試圖形式化的方式定義它,但我不贊成,隨機數序列是看起來是隨機的序列,序列的周期應足夠長,使得實際應用中相當長的有限序列都不是周期性的。就是說如果你需要十億個隨機數據,就不要選擇僅在一萬六千比特後就重複的序列產生器。這些相對短的非周期性的子序列應該儘可能和隨機序列沒有多少區別。
如果一序列產生器是偽隨機的,它應該有下面的性質:
(1)看起來是隨機的
這表明它顺利获得了我們所能找到的所有隨機性統計檢驗。
人們在計算機上已經做了許多努力來產生好的偽隨機序列,學術文獻中有很多討論偽隨機序列產生器和各種隨機性檢驗的,但所有這些產生器是周期的,都不可能例外。然而周期大於2256比特的隨機數序列,能夠大量得到應用。
這裏的關鍵問題還是那些奇妙的相關性和奇怪的結果。如果你以某種方式使用它們,則每個隨機數序列產生器都將產生這些相同的結果。這正是為什麼密碼分析者用它來對系統進行攻擊的原因。
密碼學意義上安全的偽隨機序列
密碼的應用比其他大多數應用對偽隨機序列的要求更嚴格。密碼學的隨機性並不僅僅意味着統計的隨機性,雖然它也是其中的一部分。密碼學意義上安全的偽隨機數,還必須具有下面的性質
(2)它是不可預測的
即使給出產生序列的算法或硬件和所有以前產生的比特流的全部知識,也不可能顺利获得計算來預測下個隨機比特應是什麼。
密碼學意義上安全的偽隨機序列應該是不可壓縮的…,…除非你知道密鑰。密鑰通常是用來設置產生器的初始狀態的種子。
像任何密碼算法一樣,密碼學意義上安全的偽隨機序列產生器也會受到攻擊,就好像加密算法有可能被破譯一樣,破譯密碼學意義上安全的偽隨機序列產生器也是可能的。密碼學講的都是關於如何使產生器抵抗攻擊。
