TripleDESCryptoServiceProvider符合FIPS 140-2标准

时间:2010-10-05 20:27:55

标签: c# encryption cryptography fips

我以下列方式使用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标准。到目前为止,我找到了最有用的链接:

简而言之,是否有人知道此类/加密方法所属的证书编号是什么?或者它是特定于平台的吗? (这就是我收集的内容。)

3 个答案:

答案 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不符合标准,我会感到惊讶。