我的组织有一个组策略,适用于服务器强制执行FIPS遵从性(Windows策略)。
在.NET中,HMACSHA1是与FIPS兼容的加密/哈希算法之一。我不明白为什么HMACSHA256或HMACSHA512也不在FIPS合规列表中。HMACSHA1是一个比HMACSHA512更强的散列吗?这怎么可能是?
.NET:http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html的FIPS遵从性列表
发布于 2016-04-21 18:45:23
"FIPS遵从性“不仅仅是算法。它是关于实现的。获得“遵守”徽章是一个漫长、复杂和昂贵的过程;其概念意义是,有一些强有力的理由相信实施是正确和安全的,并满足了一些安全属性。由于我们并不真正知道如何证明软件在所有一般性上都是正确的,所以大多数FIPS遵从性都是通过对开发过程的审核和分析来完成的。这是相当彻底的;例如,这包括确保在开发期间使用源代码版本控制,并将每一行代码正确地归因于正确标识的开发人员,并对开发人员执行一些背景检查。
在实践中,获得合规意味着要制作大量的文件(数千页),甚至更多的审计,这样的成本很容易达到50000美元或更多,而且需要花费数月时间。成本随着范围迅速增长。显然,在2007年(从你的链接中),微软经历了HMAC/SHA-1的全部考验,而不是HMAC/SHA-256或HMAC/SHA-512,这就是为什么前者是"FIPS验证“,而不是后者。
这可能与这样一个事实有关:在当时,.NET可以在本机代码中使用来自Win32层(CryptoAPI)的SHA-1实现,而SHA-256和SHA-512是“托管”代码;在托管实现(SHA256Managed)范围内为HMAC/SHA-256执行FIPS可能会抛出CLR运行时,包括JIT编译器,并且价格可能会飙升。SHA-256的原生实现是在.NET 3.5 (SHA256Cng)中添加的,但它只是在2007年底才发布,对于您链接到的列表中显示的遵从性来说太晚了。
发布于 2016-04-21 18:47:49
这里有两个不同的遵守概念:
显然(我没有已选中),在这个实现中,只有基于SHA-1的函数经历了正式的测试过程,所以实现只对这些函数进行验证。这是一个经过验证的HMAC-SHA-1的实现,这是一种经过批准的算法.基于SHA-2的算法是被批准的,但是这种算法的实现还没有被验证.
发布于 2022-10-11 16:45:15
此后,微软获得了HMACSHA256、HMACSHA384和HMACSHA512的FIPS兼容状态。
现在不推荐所有基于SHA1的散列。将项目更新到受支持的.NET版本,并在符合FIPS的软件中使用新批准的散列。
https://security.stackexchange.com/questions/121167
复制相似问题