安全WebSocket与不安全WebSocket的成本比较

14

我目前正在开发一款基于浏览器的多人在线游戏,使用WebSockets进行通信。我的最高优先级是低延迟和与各种平台和网络设置的兼容性。

但我正在进行密码验证。我还有一个聊天功能,并且我认为我的玩家的隐私很重要。因此,我考虑通过切换到TLS上的WebSockets来提高安全性和隐私性。我的问题如下:

  1. TLS加密WebSockets连接会影响性能吗?请注意,我经常发送非常小但非常重要的消息。
  2. wss://在任何ws://有效的环境中都可以工作,还是我需要备用机制?

或者,对于我的用例来说,实现应用程序级别的加密可能更明智吗?

2个回答

17

由于代理和其他中间人无法理解或主动阻止WebSocket,因此WSS将在比WS更广泛的网络环境下运行。

关于TLS引入的额外延迟,我认为与来自WAN连接的延迟相比,它将是微不足道的(大约是10-250毫秒的RTT)。

关于带宽,由于TLS对有效负载加密使用对称密码,因此我不期望有任何开销。

TLS显然会消耗CPU周期,但考虑到今天的CPU功率,通常不是问题。

实现自己的加密没有意义...除非您关心端到端的隐私性..但那样您将无法在服务器端执行任何操作(除了转发到其他客户端)。

简而言之:使用WSS。

我写了一篇关于WebSocket开销的博客文章(包括与TLS vs非TLS的比较):http://tavendo.com/blog/post/dissecting-websocket-overhead/


1

我几年前进行了一项性能研究,结果显示互联网上的SSL仅比明文慢3倍。由于硬件速度的提高,我预计这个差距已经缩小了。

当SSL已经存在时,我肯定不会建议您实现自己的加密。您没有理由相信它比SSL更快,并且几乎肯定会引入在SSL中不存在的安全漏洞。


3
相对带宽而言是慢了三倍还是相对延迟而言?带宽对我来说不是很重要,但延迟很重要。最初的SSL握手部分是否包含在你的测量中?那个时间对我来说并不重要,因为它只在登录时完成一次。 - Philipp
@Philipp 每秒传输的字节数。握手过程已经包含在内,并且在传输过程中以随机间隔重复进行。 - user207421
我的经验也告诉我,WSS 比 WS 慢 3 倍,这适用于 ping 和常规消息。 - duckduckgo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接