websocket - 安全 Websocket 与不安全 Websocket 的成本

标签 websocket

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

但是我正在做密码验证。我还有聊天功能,我认为玩家的隐私很重要。因此,我认为通过切换到基于 TLS 的 Websocket 或许可以提高安全性和隐私性。我的问题是:

  1. Web 套接字连接的 TLS 加密将如何影响性能?请注意,我经常发送非常小但非常重要的消息。
  2. 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/

相关文章:

java - 如何构建一个 websocket HttpHandler

php - Autobahn-js 无法连接到 Ratchet Server (Wamp)

clojure - Clojure WebSocket客户端

php - 使用php将数据推送到websocket服务器

javascript - 在 WebSocket.send() 之后修改缓冲区是否安全?

node.js - NodeJS 中的客户端 websocket 证书

java - Jetty WebsocketClient 不连接 Android 上的 SSL

websocket - 如何将 Apollo 客户端与 AppSync 结合使用?

java - 如何将参数/属性传递给 JSR-356 WebSocket 客户端 (@ClientEndpoint)?

javascript - 如何在 Socket.io/express-sessions 中访问/保存授权事件的 session 数据?