我们如何知道/说我们在微软密码库的System.Security.Cryptography中使用的任何类,是否符合FIPS?
如果我们在注册表设置中启用以下标志,这是否足以测试在.Net中开发的Web应用程序是否符合FIPS。Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy
以及从何处获取System.Security.Cryptography.dll中类的FIPS证书列表
我希望微软的人能回答这个问题。
1条答案
按热度按时间e5nqia271#
我们再试一次
正如GEC在评论中发布的那样,this article解释了现代. NET的情况。
NET核心:
将加密基元调用传递到基础操作系统提供的标准模块。
不强制在.NET Core应用程序中使用FIPS Approved算法或密钥大小。
(As OP的评论指出,Windows的加密算法是FIPS批准的。)
然而,正如在另一条评论的链接中所指出的,该文档并不完全准确,因为.NET仍然有一些带有
Managed
后缀的遗留加密类,例如AesManaged和SHA256Managed。这些类不会传递到底层OS模块,但提供了未经FIPS批准的加密算法的. NET特定实现。这些
Managed
类都已被弃用,不应使用。实际上,文档中警告:如果启用了符合联邦信息处理标准(FIPS)的算法的Windows安全策略设置,则使用此算法将引发CryptographicException。
在现代的.NET中,这样做-根据Microsoft -将导致使用底层FIPS批准的操作系统/硬件加密模块,而不是未经批准的.NET版本。
请进一步注意,在.NETFramework中(如果可以避免,当然不应该使用),
Create
方法仅在“FIPS Mode”中使用底层OS资源。文档没有确切解释“FIPS模式”是什么,但人们可能会明智地猜测它们指的是强制FIPS遵从性的Windows注册表设置。所以总结一下-