【问题标题】:SSL verses Encrypted SocketSSL 与加密套接字
【发布时间】:2015-09-26 23:48:14
【问题描述】:

我正在构建一个开源客户端/服务器应用程序,但我不确定要使用什么、SSL(例如 OpenSSL)或通过普通套接字加密的数据包。

我想我有几个问题:

  • 在普通套接字上使用加密数据包是否存在任何安全隐患?

  • 是否有任何“建议”设置?我知道 OpenSSL 有大约 1/2 百万行代码并且存在很多安全问题。

  • (开放式)SSL 给我的任何功能是否会 a) 有益或 b) 有害。

希望这个问题的结构能够通过版主:)

【问题讨论】:

  • OpenSSL(通常是 SSL 和 TLS)进行身份验证和加密。如果没有身份验证,您就会受到中间人攻击,仅举一个明显的例子。
  • 啊,谢谢,我在这方面的经验有限。
  • ...我在这方面的经验有限..." - 只是bike shedding,但是...您可能应该避免自己架构和设计它。如果可能的话,切换到 IKEv2 或 IPSec VPN(以及 not PPTP VPN 或其他)。应用内 VPN 优于 TLS。如果您不知道有什么好处是,那么您可能应该避免自己构建和设计它:) TLS 是一个不错的选择。TLS 中有很多地雷,所以您不能“按原样”使用它。您需要强化它。

标签: c++ sockets encryption openssl


【解决方案1】:

在普通套接字上使用加密数据包是否存在任何安全隐患?

如果操作正确,则不会。顺便说一句,SSL/TLS 是通过普通套接字加密的数据包。

是否有任何“建议”设置?我知道 OpenSSL 有大约 1/2 百万行代码并且存在很多安全问题。

建议的设置是使用已知良好的代码和算法。在任何情况下,您都不应该自己发明,尤其是当您对该主题不太了解时。

(Open)SSL 给我的任何功能是否会 a) 有益或 b) 有害。

SSL/TLS 标准可能为您提供所需的一切。这些实现在过去有问题,将来可能会出现问题。您可能会看一下 LibreSSL,它是 OpenSSL 的一个分支,具有许多杂乱和不必要的功能,并且还删除了一些弱安全性。 NSS 看起来也像一个可靠的库,与 OpenSSL、GnuTLS、SChannel 和 SecureTransport 相比,过去几乎没有严重的问题。

但请注意,SSL/TLS 和其他加密并不简单,在将其用于严肃的代码之前,您应该让自己熟悉这些概念和陷阱。

【讨论】:

    【解决方案2】:

    除了@Steffen Ullrich(上图)之外,我还要补充一点,纯加密几乎从来都不是一个好的解决方案,您还需要:

    1. 数据完整性 - 没有它的加密容易受到位翻转攻击
    2. 身份验证 - 即使您拥有银河系中最好的加密技术,如果您与错误的人交谈,它也对您没有多大帮助。例如。如果您连接到伪装成您的银行的服务器 - 连接是否加密重要吗?你会把你的凭据交给这个冒名顶替者!
    3. 不可否认性 - 有时也很重要

    简而言之:如果您认为可以正确实现自己的(通过普通套接字)加密连接(并且您没有该领域的博士学位 :))我建议重新考虑此事。即使 OpenSSL 存在/存在一些安全问题 - 它仍然比编写自己的加密连接好几个数量级。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 2010-11-05
      • 2020-02-27
      • 2010-09-16
      • 2013-09-18
      相关资源
      最近更新 更多