【问题标题】:Can I treat CryptoStream as a replacement for SslStream?我可以将 CryptoStream 视为 SslStream 的替代品吗?
【发布时间】:2012-07-04 08:29:27
【问题描述】:

我需要在 SilverLight 应用程序之间发送数据。我有要求说应该使用 SSL/TLS 等安全协议传输数据。由于性能原因,使用 TCP 套接字发送数据。不幸的是 SilverLight 不支持SslStream。如果我想通过 SSL/TLS 传输数据,我需要购买第三方库,例如SecureBlackbox。在处理传输层时,我不想依赖第三方库。

但是,SilverLight 有 CryptoStream 类。我正在考虑使用 WCF over SSL(SilverLight 支持)交换对称加密的密钥,然后使用 CryptoStream 使用 AES 加密数据。

这个解决方案安全吗?在安全性方面可以与使用 SSL/TLS 相比吗?我遗漏了一些明显的安全漏洞吗?

【问题讨论】:

  • SSL 不仅提供加密,还提供了许多其他功能,例如数据包完整性检查、经过身份验证的加密、安全密钥生成、适当的加密模式等、压缩等等。
  • @EugeneMayevski'EldoSCorp 我完全控制了交换信息的双方。密钥是使用 SSL 交换的,我知道双方都可以使用 AES。我想在不知道密钥的情况下,任何人都无法解密数据。我同意有人可以中断传输,但这只是噪音,因为他必须知道用它加密数据的密钥。您是否发现消息安全方面存在任何缺陷(我的意思是未经授权的人将其数据作为传输的一部分发送或从我的传输中读取数据)?
  • 应该选择可靠的AES加密方式,密钥和IV都需要协商。但是,如果您可以使用 WCF over SSL 进行连接,是否有理由不使用 WCF 进行进一步通信?
  • @EugeneMayevski'EldoSCorp 我将发送实时视频数据,WCF 开销太大。

标签: c# .net silverlight security ssl


【解决方案1】:

我猜 AES 方法的主要问题是密钥管理和密钥验证。我确定您知道 SSL 使用“握手”,它使用 CA 链(证书颁发机构)来验证 SSL 证书的有效性。这一切都发生在为 SSL 会话生成 AES 密钥之前。因此,如果不使用 SSL,您将错过这一重要步骤。

这意味着您有责任验证密钥是否安全并以安全的方式进行交换。

【讨论】:

  • 如果使用 SSL/TLS 连接来交换会话密钥,那么应该没有验证问题。
  • 密钥以安全方式交换 - 我将通过 https 使用 Web 服务调用。
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2020-09-26
  • 2018-04-23
相关资源
最近更新 更多