8

我刚刚阅读了这篇文章RSA keys under 1024 bits are blocked,在我的 .NET 软件中我大量使用了 384bit 密钥。我的程序是否仍然能够使用 RSACryptoServiceProvider 从 MachineKeyStore 生成/存储/读取密钥?还是我会被迫发送补丁?

4

3 回答 3

4

我收到了 Microsft (Kurt L Hudson) 的回复,这个更新应该只会影响链的构建,所以看起来 RSACryptoServiceProvider 将在 2012 年 8 月之后继续使用小密钥。

于 2012-07-14T09:13:28.910 回答
0

如果最小化签名大小是至关重要的,那么 RSA 是一个糟糕的选择。DSA 和ECDSA都产生更短的签名,其强度比 RSA 大得多。但是,DSA 或 ECDSA 都不会接近 RSA 384 的签名验证速度。

但是,如果您必须继续使用您拥有的密钥,那么您将不得不更改您的代码以避免使用 Microsoft 加密 API。例如,如果您使用 C#,则可以使用 Bouncycastle C# 库。最后,您可以就此向微软投诉。我怀疑它会有什么好处,但你总是可以尝试。

于 2012-07-13T21:43:24.000 回答
0

这是对评论中提出的问题的建议答案。

您可能会找到一种使用对称方法对客户端进行身份验证的方法。我假设您现在使用的是典型的 RSA 签名方案,其中消息哈希由客户端私钥签名,然后可以通过公钥进行验证。

您也许可以执行持久密钥的交换,然后使用该密钥而不是非对称密钥来加密消息摘要。您仍然可以保证发送消息的人知道密钥,尽管您无法验证消息是由客户端还是服务器发送的(因为两者都知道密钥)。如果客户端在身份验证期间挑战服务器,这将有助于防止中间人攻击(尽管客户端需要在本地嵌入服务器的公钥)

于 2012-07-12T20:24:55.963 回答