我目前正在开发一款使用WebSockets的基于浏览器的多人游戏。我的最高优先级是低延迟,兼容各种平台和网络设置。
但我正在进行密码验证。我也有聊天功能,我认为我的玩家的隐私很重要。所以我认为我可以通过TLS切换到websockets来提高安全性和隐私性。我的问题是:
或者我的用例在应用程序级别实现加密可能更明智吗?
答案 0 :(得分:13)
由于代理和其他中介不了解或主动阻止WebSocket,WSS将在比WS更广泛的网络环境中工作。
关于TLS引入的额外延迟,我认为与无论如何从WAN连接获得的延迟(大约10-250ms RTT)相比,它是微不足道的。
关于带宽,由于TLS使用对称密码进行有效负载加密,我预计不会有开销。
TLS显然会消耗CPU周期,但考虑到今天的CPU功率,通常不会出现问题。
实现自己的加密没有意义..除非你关心端到端的隐私..但是你无论如何都无法在服务器端做任何事情(除了调度到其他客户端)。 / p>
简而言之:选择WSS。
我写了一篇关于WebSocket开销的博文(包括与TLS和非TLS的比较):http://tavendo.com/blog/post/dissecting-websocket-overhead/
答案 1 :(得分:1)
几年前我做了一项性能研究,结果表明,互联网上的SSL只比明文慢3倍。由于硬件速度的提高,我预计此后差距会缩小。
我肯定不建议您在SSL已存在时实施自己的加密。您没有理由相信它会比SSL更快,您几乎肯定会引入SSL中不存在的安全漏洞。