14

我目前正在开发一个使用 WebSockets 的基于浏览器的多人游戏。我的首要任务是低延迟以及与各种平台和网络设置的兼容性。

但我正在做密码认证。我也有聊天功能,我认为我的球员的隐私很重要。所以我认为我可以通过切换到基于 TLS 的 websockets 来提高安全性和隐私性。我的问题是:

  1. Web 套接字连接的 TLS 加密将如何影响性能?请注意,我经常发送非常小但非常重要的消息。
  2. wss:// 会在 ws:// 工作的任何环境中工作,还是我需要一个后备机制?

或者我的用例在应用程序级别实施加密可能更明智?

4

2 回答 2

15

由于代理和其他中介不理解或主动阻止 WebSocket,WSS 将在比 WS 更广泛的网络环境中工作。

关于 TLS 引入的额外延迟,我希望它与您从 WAN 连接获得的延迟(大约 10-250 毫秒 RTT)相比微不足道。

关于带宽,由于 TLS 使用对称密码进行有效负载加密,我预计不会有任何开销。

TLS 显然会消耗 CPU 周期,但考虑到当今的 CPU 能力,这通常不是问题。

实施自己的加密没有意义..除非您关心端到端隐私..但是无论如何您将无法在服务器端做任何事情(除了分派给其他客户端)。

简而言之:选择 WSS。

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

于 2012-09-11T10:21:24.280 回答
1

几年前我进行了一项性能研究,结果表明 Internet 上的 SSL 仅比纯文本慢 3 倍。由于硬件速度的提高,我预计从那时起差距会缩小。

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

于 2012-09-11T07:40:01.960 回答