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