在加密演算法中,經常需要生成隨機數字,如RSA的兩個大質數、DH演算法的次方項,接下來會講的安全協議也有很多隨機數字的需求
對於一般統計模擬來說,隨機數字只要看起來隨機就好,像是前幾天叫python所生成的隨機數字,其實都是預先決定的
每個數字該如何生成皆可預測,只是該生成方式利用數學原理可以繞過所有的統計檢定,讓他們看起來很像彼此獨立地被生成
但是對於加密等級的隨機數字,他們必須完全無法預測方能使用
考慮以下例子:Alice, Bob, Charlie, Dave使用一個可以產生隨機密鑰的機器
如果密鑰是由某種決定性的隨機產生規則所決定,那麼當中的三個人就可以聯合起來去得到第四個人的密鑰資訊,如此造成安全漏洞
由於電腦生成的隨機數字皆是決定性的,因此要找到真正 隨機的來源必須得跨出外界找尋:
舉例來說,可以借助現實世界中各項物理定律
在高中學過的物理有學過量子力學的知識,那種次原子等級之下隨機的事時時刻刻都在發生
如放射物質釋放射線的發生時間是隨機的 ,
也有一些利用熱學定律的熔岩燈隨機產生器
有關隨機數字產生的問題在安全設計上經常被忽略,若輕視這點,演算法將容易遭受攻擊