用振蕩器采樣隨機數發(fā)生器保證網絡SoC設計加密算法的安全性
混合函數
即使采用了所有上述技術,仍然存在這樣一些擔憂,即由于存在多種非隨機數據源(如前面提及的多個振蕩器源組合),系統固有的隨機性可能受到影響。采用功能強大的混合函數可以確保隨機源的隨機性,這些函數將兩個或更多采樣位進行組合,然后產生一個輸出位,該輸出位是先前各輸入位的復雜非線性函數。當然,這樣獲得的輸出隨機位數不可能多于輸入位數。對這個函數期望的功能是任何輸入位的改變都會引起大約一半輸出位的改變,這些混合函數也可作為更復雜的糾偏方法去除位流偏差,如同前面討論的那樣。
一般情況下,混合函數功能越強,它所占用的芯片面積也越大,前面提到的級聯XOR便是很簡單的一例。DES加密/解密算法則是更為復雜的例子,因為它需要120個輸入位,產生64個輸出位,每一個輸出位都依賴一個涉及所有輸入位的復雜非線性函數,其它加密/解密算法的工作方式也類似。混排函數也可用作強大的混合函數,它們使用任意長度的輸入位,并產生一定長度的信息摘要。同樣,設計工程師需要進行權衡,要在額外開銷與所生成的位流無法達到期望隨機度之間做選擇。
統計評估
美國商業(yè)部創(chuàng)建了多種用來評估加密應用中隨機數發(fā)生器隨機程度的標準,美國國家標準技術研究所(NIST)出版的“800-22特刊”推薦了一種全面的隨機數發(fā)生器統計測試方法,并嚴格規(guī)定了滿足各種程度隨機性的衡量標準。測試工程師可在驗證過程中使用這種測試方法或其它類似測試,檢驗設計是否具有非隨機特征,從而判斷是否達到了某種程度的隨機性。NIST統計測試套件中規(guī)定了16種不同類型的測試,以便能發(fā)現被測隨機數發(fā)生器的缺陷。
NIST FIPS 140-2是美國商業(yè)部頒發(fā)的另一份文件,它定義了設計者在安全應用中采用加密設備時必須遵守的一系列要求。其中一個最重要的要求是任何使用隨機數發(fā)生器的實時加密模塊必須提供加電能力并可對RNG功能進行持續(xù)的實時測試,確保它在工作過程中不出現故障,如果在規(guī)定的統計測試中出現任何失敗,RNG模塊都必須進入一種錯誤狀態(tài)。對于SoC設計來說,這意味著如果最終產品希望獲得美國政府安全標準許可的話,那么進行測試的測試器模塊必須集成在設備本身之中并滿足規(guī)定的要求。
某些產生非確定性噪聲源的技術也許并不適用,這取決于是使用標準單元設計還是使用客戶定制布局設計。的確可以保證一項設計達到期望的隨機度,但這種保證的代價是增加芯片尺寸以便實現冗余結構或更為復雜的后處理功能。即便是精心規(guī)劃的設計,最后階段也必須通過統計測試套件的驗證,只有這樣才能說設計達到了期望的隨機度。
評論