一提到密碼學,多數人先想到加密算法還有密鑰這兩個概念。因為算法不同,決定了安全強度不同,而密鑰更是安全的核心關鍵。但除此之外,還有一個因素對密碼學至關重要——隨機數。本系列文章對隨機數的分類和應用做介紹和探討,本文先對隨機數分類進行介紹。
隨機數分為偽隨機數和真隨機數。偽隨機數又分為弱偽隨機數和強偽隨機數。
弱偽隨機數
特點是通過純軟件算法,按照一定的規律生成一個隨機值。但從名稱即可看出,該類隨機數的特點是只具備一定的隨機性,并不能做到不可預測性,即并不是一個真正的隨機數。例如通過MCU的時間作為種子去生成一個隨機數,因為時間是不停變化的變量,所以生成的隨機數也不停變化。但時間的變化終究有規律可循。
強偽隨機數
顧名思義,該類隨機數具有更強的隨機數特性,能夠滿足隨機性和不可推測特性。例如通過獲取敲擊鍵盤的數據作為隨機數種子進而生成一組強偽隨機數,因為擊打鍵盤存在不確定性,所以生成的隨機數也更接近與真正的隨機數。
真隨機數
同時具備隨機性、不可推測和不可重復這3個基本特點。任何人無法通過軟件算法或其他方法得知下一個隨機數(或者隨機數下一位)是什么。真隨機數的生成是基于物理現象完成的,例如擲骰子、拋yingbi等等。對于嵌入式行業來講,真隨機數是需要借助硬件隨機數發生器來產生的。
隨機數發生器
可分為真隨機數發生器、偽隨機數發生器。向下又可細分為硬件真隨機數發生器、硬件偽隨機數發生器等。這其中只有硬件真隨機數發生器對于嵌入式系統應用才是真正安全有效的。
加密芯片屬于電子元器件,其運行過程中會產生高斯白噪聲,以其作為信息熵資源,產生真隨機數。LKT加密芯片符合國際 FIPS-140-2 隨機數測試標準。具有高效、資源占用少,生成隨機數可靠等優點。可供用戶放心使用。
隨機數在密碼學中的用途主要有:生成nonce、生成salt、生成初始化向量、生成密鑰(對稱密鑰或非對稱密鑰),詳細用法將在下期展開介紹。