2012-09-11 16 views
12

Actualmente estoy desarrollando un juego de varios jugadores basado en navegador que usa WebSockets. Mis principales prioridades son la baja latencia y la compatibilidad con una amplia gama de plataformas y configuraciones de red.Costo de websocket seguro vs. websocket no seguro

Pero estoy haciendo la autenticación de contraseña. También tengo una función de chat y considero que la privacidad de mis jugadores es importante. Así que pensé que tal vez podría mejorar la seguridad y la privacidad al cambiar a websockets sobre TLS. Mis preguntas son:

  1. ¿cómo afectará el rendimiento el cifrado TLS de la conexión del socket web? Tenga en cuenta que con frecuencia estoy enviando mensajes muy pequeños pero muy importantes.
  2. wss: // trabajar en cualquier entorno donde ws: // funciona o voy a necesitar un mecanismo de respaldo?

¿O sería más inteligente para mi caso de uso implementar el cifrado en el nivel de la aplicación?

Respuesta

11

WSS funcionará en entornos de red significativamente más amplios que WS debido a que los proxies y otros intermediarios no comprenden o bloquean activamente WebSocket.

En cuanto a la latencia adicional introducida por TLS, espero que sea insignificante en comparación con la latencia que obtienes de las conexiones WAN de todos modos (que es aproximadamente 10-250ms RTT).

En cuanto al ancho de banda, dado que TLS usa cifrados simétricos para el cifrado de la carga útil, no esperaría que hubiera sobrecarga.

TLS obviamente consume ciclos de CPU, pero dado el poder de la CPU actual, a menudo no es un problema.

La implementación del cifrado propio no tiene sentido ... a menos que se preocupe por la privacidad de extremo a extremo ... pero de todos modos no podrá hacer nada en el servidor (además de enviarlo a otros clientes).

En resumen: vaya con WSS.

he escrito un post sobre WebSocket cabeza (incl comparación con TLS vs no-TLS.): http://tavendo.com/blog/post/dissecting-websocket-overhead/

1

Hice un estudio de rendimiento hace unos años que mostraba que SSL a través de Internet era solo 3 veces más lento que el texto sin formato. Esperaría que la brecha se haya reducido desde entonces debido a las mejoras en la velocidad del hardware.

Sin duda no le recomiendo que implemente su propio cifrado cuando SSL ya exista. No tiene motivos para creer que será más rápido que SSL y casi con seguridad presentará fallas de seguridad que no están presentes en SSL.

+3

3 veces más lenta respecto de ancho de banda o latencia respecto? El ancho de banda no es tan importante para mí, pero la latencia sí lo es. ¿El handshake SSL inicial fue parte de su medición? Ese tiempo no me importaría porque solo se hace una vez al iniciar sesión. – Philipp

+0

@Philipp Rendimiento en bytes/segundo. El apretón de manos se incluyó y se repitió a intervalos aleatorios durante las transferencias. – EJP