Encryption

增強型 RSA 和 AES 加密提供程序 (Windows XP) 中符合 FIPS 140-2 的算法

  • January 15, 2014

我們有一個支持 Windows XP SP3 的本機 C++ 應用程序。

最近,我們決定將我們的加密算法更改為符合 FIPS 140-2 的算法。我們計劃在增強型 RSA 和 AES 加密提供程序中使用以下算法:

  1. AES256 加密
  2. SHA1 用於散列
  3. RSA 用於具有最大密鑰大小的密鑰交換

此設置是否適用於 WinXP SP3?它將符合 FIPS 140-2 標準嗎?據我了解,這兩個問題的答案都是“是”,但我想確定一下。

我無法幫助您解決 Windows 問題,但是我可以在 FIPS 上插話:

它將符合 FIPS 140-2 標準嗎?

可能不是。問題是“用於散列的 SHA1”;SHA1 不再被批准為抗衝突雜湊函式。另一方面,HMAC-SHA1 仍被批准為消息驗證碼。

也就是說,如果您使用 SHA1(在 HMAC 內)執行完整性檢查,這不是問題。但是,如果您使用直接 SHA1 作為(例如)RSA 簽名的一部分,這將不起作用;您需要切換到其中一種 SHA-2 算法(或最終確定時的 SHA-3)。

可以擁有基於此算法套件的產品,該算法套件符合 FIPS 140-2。但是,使用 SHA-1 和 RSA 有一些特殊的注意事項。


該算法套件部分被認為已過時,並且未經 FIPS 140-2 批准。有關 NIST 過渡到 112 位加密的資訊,您可以閱讀FIPS 140-2 實施指南中的 G.14 。

算法套件是:

  1. AES256 加密
  2. SHA1 用於散列
  3. RSA 用於具有最大密鑰大小的密鑰交換

限制(根據 FIPS 140-2 和 NIST SP 800-131A)

  1. AES256 很好,如果它用於 ECB、CBC、CFB、OFB、CTR、CCM、GCM、XTS 或 KW(只要 NIST SP 800-38A/B/C/D/E/F 文件中的適當指導也遵循)。
  2. FIPS 140-2 中明確禁止的 SHA-1 用法是使用 SHA1 簽署數字簽名。允許驗證之前(2013 年或更早)簽署的簽名。Schneier 認為 SHA-1 幾乎在 9 年前就被破壞了,許多其他專家也是如此。
  3. RSA 密鑰交換需要滿足實施指南(見上文)D.8 或 D.9 中的某些要求。最重要的限制是模數長度必須至少為 2048 位。

現有的 FIPS 140-2 驗證模組支持 Windows XP,您可以使用這些模組添加算法,例如 SHA-256,以防您需要替換 SHA-1。

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