gpt4 book ai didi

c# - 如何检查 Asp.NET 应用程序是否支持 FIPS

转载 作者:太空狗 更新时间:2023-10-29 23:37:52 24 4
gpt4 key购买 nike

我正在使用 .net 3.5 并尝试使我的应用程序符合 FIPS。我没有使用任何非 FIPS 算法,但在生产服务器上运行它时仍然出现此错误。

This implementation is not the part of the Windows platform FIPS validated cryptographic algorithms.

这是我检查过的算法列表,我确定我没有使用过它们。

  • HMACMD5
  • HMACRIPEMD160
  • HMACSHA256
  • HMACSHA384
  • HMACSHA512
  • MD5CryptoServiceProvider
  • RC2CryptoServiceProvider
  • RijndaelManaged
  • RIPEMD160托管
  • SHA1 管理

我怎样才能准确找到问题所在或任何其他想法?

最佳答案

当您说“FIPS 兼容”时,我假设您希望通过更改 Local Security Policy settings 在 Windows 和 .Net 加密库模式下强制执行 FIPS 140 兼容。 .

如您所见,使用此机制的 FIPS 140 合规性(通常是最新版本标准的第 1 级,FIPS 140-2)面临的挑战是它会阻止非 FIPS 140 合规算法的实例化,即使它们不用于与安全相关的目的。

大概您已经使用像 ildasm 这样的工具检查了您的代码是否有任何对不兼容算法的引用。或 Reflector .否则,请调试您的代码并查看抛出的 InvalidOperationException 的堆栈跟踪以了解问题所在。

实现此目的的一种简单方法是使用通用类并避免直接调用构造函数。例如,如果您想使用 Advanced Encryption Standard (AES) ,而不是:

// Use the faster .Net implementation of AES. Not FIPS 140 compliant.
using (AesManaged aesManaged = new AesManaged())
{
// Do something
}

使用:

// Let .Net workout which implementation of AES to use. Will use
// a FIPS compliant implementation if FIPS is turned on.
using (Aes aes = Aes.Create())
{
// Do something
}

在您的代码之外,检查您使用的第三方库。您可以使用与上述类似的工具来检查其代码中的任何引用。如果您已经彻底检查了您的代码,这很可能就是问题所在。请注意,反汇编第三方代码可能会违反版权或许可协议(protocol)。

同时检查您的 SSL 配置。例如,用于SSL 的数字证书不能使用MD5。您还必须使用 TLS 1.0 或更高版本。

但是,强制执行 Windows FIPS 140 合规性非常困难。大多数客户,包括美国政府,并不要求仅使用符合 FIPS 的算法(或技术上,这些算法的实现)。例如,他们非常乐意让您使用 MD5创建字符串的哈希键。

相反,客户希望您的产品使用加密技术保护的任何内容都受到批准算法的 FIPS 140 合规实现的保护。换句话说:

  1. 确定您的产品应保护的每一件事
  2. 使用符合 FIPS 140 标准的库保护它们
  3. 使用工具(例如静态分析)、代码审查和/或第三方审核来证明执行情况。

另请注意,打开 FIPS 140 模式不一定会使 Windows 或您的产品更安全。安全性比选择一种加密算法而不是另一种(或者,具体地说,一种算法的特定实现而不是另一种实现)要复杂得多。 Microsoft no longer recommends this be turned on by default .

关于c# - 如何检查 Asp.NET 应用程序是否支持 FIPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32836532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com