.net 如何知道System.Security.Cryptography(. Netdll)中的类是否符合FIPS 140-2

ny6fqffe  于 2023-04-13  发布在  .NET
关注(0)|答案(1)|浏览(148)

我们如何知道/说我们在微软密码库的System.Security.Cryptography中使用的任何类,是否符合FIPS?
如果我们在注册表设置中启用以下标志,这是否足以测试在.Net中开发的Web应用程序是否符合FIPS。Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy
以及从何处获取System.Security.Cryptography.dll中类的FIPS证书列表
我希望微软的人能回答这个问题。

e5nqia27

e5nqia271#

我们再试一次
正如GEC在评论中发布的那样,this article解释了现代. NET的情况。
NET核心:
将加密基元调用传递到基础操作系统提供的标准模块。
不强制在.NET Core应用程序中使用FIPS Approved算法或密钥大小。
(As OP的评论指出,Windows的加密算法是FIPS批准的。)
然而,正如在另一条评论的链接中所指出的,该文档并不完全准确,因为.NET仍然有一些带有Managed后缀的遗留加密类,例如AesManagedSHA256Managed。这些类不会传递到底层OS模块,但提供了未经FIPS批准的加密算法的. NET特定实现。
这些Managed类都已被弃用,不应使用。实际上,文档中警告:
如果启用了符合联邦信息处理标准(FIPS)的算法的Windows安全策略设置,则使用此算法将引发CryptographicException。
在现代的.NET中,这样做-根据Microsoft -将导致使用底层FIPS批准的操作系统/硬件加密模块,而不是未经批准的.NET版本。
请进一步注意,在.NETFramework中(如果可以避免,当然不应该使用),Create方法仅在“FIPS Mode”中使用底层OS资源。文档没有确切解释“FIPS模式”是什么,但人们可能会明智地猜测它们指的是强制FIPS遵从性的Windows注册表设置。
所以总结一下-

  • 在.NET Core/5+中,至少在Windows上运行时,未过时的crytpo类使用操作系统提供的符合FIPS的算法。对于其他操作系统,它将取决于(例如-我不知道,但如果Android或iOS设备没有FIPS批准的加密模块,我不会感到惊讶)
  • 对于.NET Framework,即使您使用未过时的加密类,您仍然需要确保您的操作系统强制执行FIPS投诉。这部分让我感到惊讶,但当OP在评论中说他们正在使用Framework 4.8时,我仔细检查并发现了这个警告。

相关问题