TripleDESCryptoServiceProvider符合FIPS 140-2标准

Sim*_*ton 7 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;
        }
Run Code Online (Sandbox Code Playgroud)

我想知道这是否符合FIPS 140-2标准.我发现有很多页面概述了合规性的不同方面,但在我看来,微软通过平台而不是类(有意义)获得合规证书.取而代之的是,我无法找到任何肯定的证据,即上述密码符合FIPS 140-2标准.到目前为止,我找到了最有用的链接:

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

ind*_*div 6

FIPS 140-2认证适用于算法和模块.算法实现通过传递一系列测试用例得到认证.模块在满足所有FIPS要求时获得认证.其中一个要求是仅使用FIPS认证的算法(以及以FIPS认可的方式使用的非FIPS认证算法,如Diffie-Hellman密钥交换)提供加密服务.

Triple-DES是FIPS认证的算法,因此可以获得FIPS证书.这是一个难题.

下一部分是找出提供Triple-DES的模块,以及该模块是否通过FIPS认证.您已链接到Microsoft列出其所有FIPS批准的模块的页面.这就是你需要知道的全部内容.我认为从Windows Vista开始,一切都会通过bcrypt.dll.

当然,您可以直接访问源代码并自行搜索模块.例如,bcrypt.dll在Windows Vista中获取Microsoft的证书#1001 .您可以看到此模块已获得其Triple-DES实现的算法证书(证书#656),因此您可以使用此模块中的Triple-DES.

那么你怎么知道你正在使用FIPS认证的模块? 您在Windows中启用FIPS模式.如果未启用FIPS模式,则不会在FIPS认可的操作模式下使用FIPS认证的算法.在Windows上,如果在FIPS模式下尝试使用非FIPS算法,则会出现异常.

让我知道最后一点,找出一个算法是否被批准用于FIPS模式的好方法是打开FIPS模式并尝试它!

顺便说一句,这个Triple-DES证书页面列出了所有已批准的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
Run Code Online (Sandbox Code Playgroud)

以及以下键控选项.

KO 1 = Three-key Triple DES
KO 2 = Two-key Triple DES
Run Code Online (Sandbox Code Playgroud)