SSL与加密套接字相对应

时间:2015-07-08 20:42:56

标签: c++ sockets encryption openssl

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

我想我有几个问题:

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

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

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

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

2 个答案:

答案 0 :(得分:3)

  

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

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

  

是否有“建议”的设置?我知道OpenSSL有大约50万行代码并且存在很多安全问题。

建议的设置是使用已知良好的代码和算法。在任何情况下你都不应该创造自己的,特别是如果你对这个主题知之甚少的话。

  

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

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

但请注意,SSL / TLS以及其他加密并不简单,在将其用于严肃的代码之前,您应该对这些概念和陷阱感到满意。

答案 1 :(得分:1)

除了@Steffen Ullrich(上图)之外,我想补充一点,普通加密几乎不是一个好的解决方案,你还需要:

  1. 数据完整性 - 没有它的加密容易受到比特翻转攻击
  2. 身份验证 - 即使你在银河系中拥有最好的加密技术,如果你和一个错误的家伙谈话也不会对你有多大帮助。例如。如果您连接到冒充您银行的服务器 - 连接是否加密是否重要?你会把你的凭证给这个冒名顶替者!
  3. 不可否认性 - 有时也很重要
  4. 简而言之:如果您认为可以正确实现自己的(通过普通套接字)enrypted连接(并且您没有在该领域拥有博士学位:))我建议重新考虑此事。即使OpenSSL存在一些安全问题 - 它仍然比编写自己的加密连接好几个数量级。

    我希望有所帮助。