我以下列方式使用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标准。到目前为止,我找到了最有用的链接:
微软FIPs文件:
http://technet.microsoft.com/en-us/library/cc750357.aspx
http://support.microsoft.com/kb/811833
Blog showing how to "dump" the sytems core libraries cryptographic modules and their compliance
简而言之,是否有人知道此类/加密方法所属的证书编号是什么?或者它是特定于平台的吗? (这就是我收集的内容。)
答案 0 :(得分:6)
FIPS 140-2认证适用于算法和模块。算法实现通过传递一系列测试用例得到认证。模块在满足所有FIPS要求时获得认证。其中一个要求是仅使用FIPS认证的算法(以及以FIPS认可的方式使用的非FIPS认证算法,如Diffie-Hellman密钥交换)提供加密服务。
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实现的算法证书(证书#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
答案 1 :(得分:3)
This有一系列符合FIPS标准的算法。
符合FIPS的算法:
哈希算法
HMACSHA1
MACTripleDES
SHA1CryptoServiceProvider
对称算法(使用相同的密钥 加密和解密)
DESCryptoServiceProvider
TripleDESCryptoServiceProvider
非对称算法(使用公共 加密密钥和私钥 解密)
DSACryptoServiceProvider
的RSACryptoServiceProvider
我也问过类似的question关于AES的问题。
答案 2 :(得分:1)
我个人会使用AES进行加密,因为它比TripleDES“更轻”且更安全,实际上我认为它是目前的事实算法。如果AES不符合标准,我会感到惊讶。