我以下列方式使用 System.Security.Cryptography 的 TripleDESCryptoServiceProvider:
TripleDESCryptoServiceProvider CreateCipher()
{
TripleDESCryptoServiceProvider cipher = new TripleDESCryptoServiceProvider();
cipher.KeySize = 192;
cipher.BlockSize = 64;
cipher.Padding = PaddingMode.ISO10126;
cipher.Mode = CipherMode.CBC;
return cipher;
}
我想知道这是否符合 FIPS 140-2。我找到了许多概述合规性不同方面的页面,但在我看来,微软是通过平台而不是类(有意义)获得他们的合规性证书。取而代之的是,我无法找到任何关于上述密码符合 FIPS 140-2 的肯定确认。到目前为止,我发现的最有用的链接:
http://technet.microsoft.com/en-us/library/cc750357.aspx
http://support.microsoft.com/kb/811833
简而言之,有人知道该类/加密方法将属于哪个证书号吗?还是特定于平台? (这就是我正在收集的。)
最佳答案
FIPS 140-2 认证适用于算法和模块。算法实现通过一系列测试用例获得认证。模块在满足所有 FIPS 要求时获得认证。其中一项要求是仅使用 FIPS 认证的算法(以及以 FIPS 批准的方式使用的非 FIPS 认证算法,如 Diffie-Hellman key 交换)提供加密服务。
Triple-DES 是一个 FIPS-certified algorithm ,因此可以获得 FIPS 证书。那是难题的一部分。
下一部分是找出提供 Triple-DES 的模块,以及该模块是否经过 FIPS 认证。您已经 linked 到 Microsoft 列出其所有 FIPS 批准模块的页面。这就是你需要知道的一切。我认为从 Windows Vista 开始,一切最终都会通过 bcrypt.dll
。
当然,您可以直接进入source并自己搜索模块。例如,Windows Vista 中 Microsoft bcrypt.dll
的证书 #1001。您可以看到该模块已获得其 Triple-DES 实现的算法证书(Cert.#656),因此您可以从该模块使用 Triple-DES。
那么您如何知道您正在使用 FIPS 认证的模块呢? You enable FIPS mode in Windows 。如果不启用 FIPS 模式,则不会在 FIPS 批准的操作模式中使用 FIPS 认证的算法。在 Windows 上,如果您在 FIPS 模式下尝试使用非 FIPS 算法,则会出现异常。
最后一点,确定算法是否被批准在 FIPS 模式下使用的一个好方法是打开 FIPS 模式并尝试它!
顺便说一下,this Triple-DES certificate page 列出了所有批准的 Triple-DES 操作模式:
ECB = TDEA Electronic Codebook
TCBC = TDEA Cipher Block Chaining
TCBC-I = TDEA Cipher Block Chaining - Interleaved
TCFB = TDEA Cipher Feedback
TCFB-P = TDEA Cipher Feedback - Pipelined
TOFB = TDEA Output Feedback
TOFB-I = TDEA Output Feedback - Interleaved
以及以下键控选项。
KO 1 = Three-key Triple DES
KO 2 = Two-key Triple DES
关于c# - TripleDESCryptoServiceProvider FIPS 140-2 合规性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3867449/