5

SslStream 应该与它的对等 SSL 堆栈协商密码类型、密钥长度、哈希算法等。在我的代码中使用它时,我发现协商始终默认为 RC4 和 MD5。我想使用 3DES 或 AES 来增加一些安全性。

环顾网络,我发现只有几个关于这个问题的参考,没有解决方案;一位发帖人声称这实际上是有道理的,因为两个堆栈之间的最小公分母是安全的,同时具有更快/使用更少 CPU 资源的额外好处。虽然这在技术上可能是正确的,但我在复杂性和成本之间的特殊权衡在于其他地方(我更喜欢使用带有长密钥的 AES)。

如果有人可以提供帮助,我将不胜感激。

4

5 回答 5

3

SSLStream 使用操作系统提供的 Schannel。这些套件按 Microsoft Schannel Provider 选择的默认顺序列出:

视窗:

RSA 与 AES_128 CBC SHA
RSA 与 AES_256 CBC SHA
RSA 与 RC4_128 SHA

...

视窗XP:

RSA 带 RC4 128 MD5
RSA 带 RC4 128 SHA

带有 3DES CBC SHA 的 RSA

……

您还可以通过使用 Microsoft 管理控制台 (Windows Vista) 中的组策略对象管理单元配置SSL 密码套件顺序组策略设置来修改密码套件列表

但问题是 Windows XP没有在 SSLStream 可用的密码列表中包含 AES。但是,可以在 Windows XP 中更改注册表设置: HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy 1 以获取3DES密码。

于 2008-10-15T09:56:04.707 回答
1

您可以通过进行一些简单的注册表更改来选择哪些协议可供选择。例如,我们删除了选择 RC4 的功能。您只需要在连接的一端(例如服务器)进行更改,因为客户端和服务器会协商找到共同支持的算法

http://msdn.microsoft.com/en-us/library/ms925716.aspx

最好的祝愿詹姆斯

于 2009-11-18T09:44:46.100 回答
0

它应该使用两个列表中最安全的算法集。我很难相信它不是,因为 SslStream 正在包装 SChannel SSPI,如果它被破坏了,那么 Internet Explorer、IIS 和 Windows 上的所有其他东西也会被破坏。

可能是您的 SChannel.dll/Secur32.dll 版本过时。您安装了哪些操作系统和 Internet Explorer 版本?

可以在 SCHANNEL 中禁用协议。你能检查一下这还没有完成吗?

于 2008-09-18T14:10:46.997 回答
0

我正在使用带有所有更新的 XP SP3 和 IE7。注册表似乎配置了一切启用。

于 2008-09-18T15:17:03.373 回答
0

在 Java 中,您可以根据自己的需要和偏好订购各种算法/密码。.NET中可能有类似的API ...

于 2008-09-20T11:03:45.030 回答