我目前正在开发一款使用 WebSockets 的基于浏览器的多人游戏。我的首要任务是低延迟以及与各种平台和网络设置的兼容性。
但是我正在做密码验证。我还有聊天功能,我认为玩家的隐私很重要。因此,我认为通过切换到基于 TLS 的 Websocket 或许可以提高安全性和隐私性。我的问题是:
- Web 套接字连接的 TLS 加密将如何影响性能?请注意,我经常发送非常小但非常重要的消息。
- wss://可以在 ws://工作的任何环境中工作吗?还是我需要后备机制?
或者对于我的用例来说,在应用程序级别实现加密可能更明智?
最佳答案
由于代理和其他中介机构不理解或主动阻止 WebSocket,WSS 将在比 WS 更广泛的网络环境中工作。
关于 TLS 引入的额外延迟,我认为与从 WAN 连接获得的延迟(大约 10-250 毫秒 RTT)相比,它是微不足道的。
关于带宽,由于 TLS 使用对称密码进行有效负载加密,因此我预计不会产生任何开销。
TLS 显然会消耗 CPU 周期,但考虑到当今的 CPU 能力,这通常不是问题。
实现自己的加密没有意义..除非您关心端到端隐私..但是无论如何您都无法在服务器端执行任何操作(除了分派(dispatch)给其他客户端)。
简而言之:选择 WSS。
我写了一篇关于 WebSocket 开销的博客文章(包括与 TLS 与非 TLS 的比较):http://tavendo.com/blog/post/dissecting-websocket-overhead/
关于websocket - 安全 Websocket 与不安全 Websocket 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364698/