2012-09-11 63 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

相關問題