Encryption

FIPS 140-2 合規性測試

  • September 18, 2015

是否有任何工具可用於測試實施是否符合 FIPS 140-2 合規性?

請注意,“FIPS 140-2 合規性”具有誤導性,而且通常不相關。合規只意味著您的軟體使用 FIPS 140-2 認證的加密模組,獲得軟體認證的成本在 20-20 萬美元之間,需要 6-18 個月。僅僅因為您的系統通過了標準規定的自測和統計檢查並不意味著它是合規的:標準要求您必須獲得認證。

(對於它的價值,強制執行的測試通常包括一些測試向量和一些對 PRNG 的統計檢查,實際上編寫程式碼並不太難,但它們還不足以讓人滿意。為此,您需要證書。)

另請注意,FIPS 合規性並不能保證安全性,甚至意味著您的系統更安全。事實上,通過強制關閉更安全(但未經認證)的算法**很容易導致安全性降低。**此外,FIPS 合規性有多個級別,僅軟體只能通過 1 級認證。2 級要求您的軟體是防篡改硬體模組的一部分,並且相應地更昂貴。

商業環境中的典型解決方案只是許可一個已經過認證的加密模組,但你很幸運:OpenSSL 團隊已經獲得了某些版本的原始碼,當以某種方式編譯時,經過認證,因為它是開源的,您也可以免費使用它——以及它的認證。

請注意,我不是指整個 OpenSSL 庫,只是加密模組;這意味著它提供 AES 和 RSA 之類的東西,但沒有 TLS 或 X.509。這些只是建立在加密原語之上的協議,而 FIPS 140-2 僅適用於原語。只要您使用經過認證的模組來滿足您的所有加密和 PRNG 需求,您就可以使用任何您想要的 TLS 和其他東西;OpenSSL 是一個顯而易見的選擇,但您也可以自行選擇。除了一些相當具體的編譯時選項和過程之外,唯一的限制是模組必須是靜態連結的。

請注意 OpenSSL FIPS 模組的認證版本通常很舊;如果你使用相同版本的庫的其餘部分,你會遇到麻煩,因為上次我檢查它仍然包含像 Heartbleed 這樣的錯誤。(請注意,Heartbleed 是 OpenSSL 的 TLS 部分中的一個錯誤,因此 FIPS 與它完全無關。)幸運的是,通常可以使用舊版本的模組和新版本的 OpenSSL 副本。

**編輯:**哦,是的!請注意,FIPS 140-3應該很快就會發布(閱讀:應該在 2013 年 8 月發布),它將取代 140-2,需要新的認證,並且可能意味著您必須切換加密模組版本。

編輯 2:另外,請注意,由於所有自測,使用符合 FIPS 的加密通常會將性能發送到廁所。(例如,iPhone 上的 OpenSSL FIPS 模組比內置加密慢 100-1000 倍。)如果這鼓勵您使用更短的密鑰或加密更少的內容或使用簡單的預加密壓縮算法,那就不好了Thing(tm) 剛剛降低了您的安全性。

引用自:https://crypto.stackexchange.com/questions/29194