2012-09-11 40 views
12

我目前正在开发其使用的WebSockets基于浏览器的多人游戏。我的最高优先级是低延迟和兼容广泛的平台和网络设置。成本安全的WebSocket与不安全的WebSocket

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

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

或者对我的应用程序级别的应用程序实现加密更明智吗?

回答

11

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

关于TLS引入的额外延迟,我认为它与无论如何从WAN连接获得的延迟(大约是10-250ms RTT)相比都是微不足道的。

关于带宽,因为TLS使用对称加密的有效载荷加密我期望的开销。

TLS明显消耗CPU周期,但鉴于今天的CPU供电,它往往不是一个问题。

实现自己的加密没有任何意义..除非你关心端到端的隐私......但是你不能在服务器端做任何事情(除了调度到其他客户端)。

总之:去WSS。

我已经写了一篇博客文章的WebSocket开销(包括与TLS相比与非TLS):关于带宽或延迟方面慢http://tavendo.com/blog/post/dissecting-websocket-overhead/

1

我在几年前即表明SSL做了性能研究在互联网上比明文更慢的只有3次。由于硬件速度的提高,我预计此后的差距会缩小。

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

+3

3倍?带宽对我来说并不重要,但延迟是。初始SSL握手是您测量的一部分?这段时间对我来说无关紧要,因为它只在登录时完成一次。 – Philipp

+0

@Pilippi以字节/秒为单位的吞吐量。握手包括在内,并在转移过程中随机重复。 – EJP

相关问题