7

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

简而言之,有人知道此类/加密方法属于哪个证书编号吗?还是特定于平台?(这就是我正在收集的内容。)

4

3 回答 3

7

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

Triple-DES 是经过FIPS 认证的算法,因此可以获得 FIPS 证书。这是难题的一部分。

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

当然,您可以自己直接进入源代码和搜索模块。以 Microsoftbcrypt.dll在 Windows Vista 中的证书 #1001 为例。您可以看到该模块已经为其 Triple-DES 实现获得了算法证书(Cert.#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

以及以下键控选项。

KO 1 = Three-key Triple DES
KO 2 = Two-key Triple DES
于 2010-10-08T00:46:47.043 回答
3

有一个符合 FIPS 的算法列表。

FIPS 兼容算法:

哈希算法

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

对称算法(加密和解密使用相同的密钥)

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

非对称算法(使用公钥加密,私钥解密)

DSACryptoServiceProvider

RSACryptoServiceProvider

我也问过关于 AES的类似问题。

于 2010-10-05T20:37:05.563 回答
1

我个人会使用 AES 进行加密,因为它比 TripleDES“更轻”且更安全,事实上我认为它是目前事实上的算法。如果 AES 不符合标准,我会感到惊讶。

于 2010-10-05T21:59:21.293 回答