我正在构建一个开源客户端/服务器应用程序,我不确定要使用什么,SSL(例如OpenSSL)或通过普通套接字加密的数据包。
我想我有几个问题:
使用加密数据包通过普通套接字是否存在安全隐患?
是否有任何建议'设置?我知道OpenSSL有大约50万行代码并且存在很多安全问题。
是否有任何(开放)SSL给我的功能a)有益或b)有害。
希望这个问题的结构能够通过主持人:)
答案 0 :(得分:3)
使用加密数据包通过普通套接字是否有任何安全隐患?
如果正确完成则不行。顺便说一句,SSL / TLS是通过普通套接字加密的数据包。
是否有“建议”的设置?我知道OpenSSL有大约50万行代码并且存在很多安全问题。
建议的设置是使用已知良好的代码和算法。在任何情况下你都不应该创造自己的,特别是如果你对这个主题知之甚少的话。
是否有任何(开放)SSL给我的功能a)有益或b)有害。
SSL / TLS标准可能为您提供所需的一切。这些实现在过去存在问题,将来可能会出现问题。你可能会看看LibreSSL,它是OpenSSL的一个分支,具有许多残缺和不必要的功能,并且还删除了一些弱安全性。与OpenSSL,GnuTLS,SChannel和SecureTransport相比,NSS看起来像一个固体库,过去几乎没有什么严重的问题。
但请注意,SSL / TLS以及其他加密并不简单,在将其用于严肃的代码之前,您应该对这些概念和陷阱感到满意。
答案 1 :(得分:1)
除了@Steffen Ullrich(上图)之外,我想补充一点,普通加密几乎不是一个好的解决方案,你还需要:
简而言之:如果您认为可以正确实现自己的(通过普通套接字)enrypted连接(并且您没有在该领域拥有博士学位:))我建议重新考虑此事。即使OpenSSL存在一些安全问题 - 它仍然比编写自己的加密连接好几个数量级。
我希望有所帮助。