我按以下方式使用 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 标准。我发现许多页面概述了合规性的不同方面,但在我看来,Microsoft 通过平台而不是类别(有道理)获得合规性证书。取而代之的是,我无法找到上述密码符合 FIPS 140-2 的任何肯定确认。到目前为止,我找到的最有用的链接:
Microsoft FIP 文档:
http://technet.microsoft.com/en-us/library/cc750357.aspx http://support.microsoft.com/kb/811833Blog showing how to "dump" the sytems core libraries cryptographic modules and their compliance
简而言之,有人知道此类/加密方法属于什么证书编号吗?或者它是特定于平台的? (这就是我收集的内容。)
最佳答案
FIPS 140-2 认证适用于算法和模块。算法实现通过一系列测试用例获得认证。模块在满足所有 FIPS 要求时获得认证。其中一项要求是仅使用 FIPS 认证算法(以及以 FIPS 批准的方式使用的非 FIPS 认证算法,如 Diffie-Hellman key 交换)提供加密服务。
三重 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/