【问题标题】:TripleDESCryptoServiceProvider FIPS 140-2 ComplianceTripleDESCryptoServiceProvider FIPS 140-2 合规性
【发布时间】:2010-10-05 20:27:55
【问题描述】:

我正在以下列方式使用 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 140-2 批准的密码和 FIPS 140-2 认证的实施之间存在差异。 Triple-DES CBC 已获批准,但您的实施是否获得认证取决于 Microsoft 所做的测试,以及您是否根据为这些测试指定的标准进行部署。
  • 不是试图把它变成一个论坛,但是 T-DES 是由它自己批准的,还是被批准为一套密码的一部分,并且受制于平台细节?

标签: c# encryption cryptography fips


【解决方案1】:

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实现的算法证书(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

【讨论】:

  • 这就是我一直在寻找的深度和清晰度。谢谢!
【解决方案2】:

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

符合 FIPS 的算法:

哈希算法

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

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

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

非对称算法(使用公共 加密密钥和私钥 用于解密)

DSACryptoServiceProvider

RSACryptoServiceProvider

我还向question 询问过关于 AES 的类似问题。

【讨论】:

  • 我见过同样的事情,也许我正在寻找一个过于精致的答案。我想知道是否有一个特定的 NIST 证书可以指向我们的客户来封装该算法,或者它所在的特定 Microsoft 加密库。
  • 此外,从 .NET 3.5 开始,包括以下内容并符合 FIPS:SHA256CryptoServiceProvider、SHA384SHA256CryptoServiceProvider 和 SHA512SHA256CryptoServiceProvider
【解决方案3】:

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

【讨论】:

  • 我知道 AES 符合 FIPS 197,它是 FIPS 140 的超集,但我们已经部署了 Triple DES,因此短期内不会对其进行更改。我只需要知道 TripleDESCryptoServiceProvider 类是否有特定的 NIST 证书。
  • TripleDESCryptoServiceProvider 是 FIPS 140-1,因为它是 CryptoApi 的一部分。
猜你喜欢
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多