Usando el protocolo DTLS para juegos multijugador

8

Estoy considerando usar el protocolo DTLS para mi juego multijugador en línea. Para aquellos que no saben, es esencialmente un puerto de datagramas TLS a UDP.

Según este documento , la sobrecarga principal del protocolo está en la fase de protocolo de enlace, que tomó 950 ms en sus pruebas. Sin embargo, este estudio (enlace roto; ver copia en archive.org ) indica que durante el transporte cifrado real, a menudo hay menos de 1 milisegundo de retraso.

Esto suena como un regalo del cielo para los juegos en tiempo real. Es un canal encriptado altamente seguro y de baja latencia que opera sobre UDP. Proporciona confiabilidad y protección para la fase de apretón de manos, luego se sale del camino. Sin embargo, nunca antes había escuchado que se usara en un juego, a pesar de que la especificación RFC se escribió en 2006 y está implementada en OpenSSL.

¿Por qué no todos los juegos lo usan?

Kai
fuente
1
No sé, suena genial ... ¿Tal vez no es compatible con muchos idiomas populares? ¿Hay bibliotecas buenas y que funcionen para ello? Yo no lo uso simplemente porque no he oído hablar de él y dudo que Node.js soportes ...
jcora
gamedev.stackexchange.com/faq#dontask "Por qué no todos los juegos lo usan" no llega al problema en el fondo: si es útil o no para sus propósitos.
Tetrad
1
@Tetrad El problema en el fondo es que suena genial pero no se usa ampliamente. Ese es el último misterio para determinar si es útil para mis propósitos.
Kai
1
@Tetrad, estoy de acuerdo. Sin embargo, conocer la historia de las bibliotecas que elijo es importante para mí. Ciertamente, si ES popular, eso hace que el desarrollo sea mucho más fácil.
Kai
1
Por curiosidad, ¿cómo sabes que los juegos no lo usan?
Trevor Powell

Respuestas:

4

¿Por qué no todos los juegos lo usan? En primer lugar, dudo que la mayoría de la gente haya oído hablar de este protocolo. La seguridad de la red no es bien conocida entre los desarrolladores de juegos y, de todos modos, esta es una variante bastante oscura. En segundo lugar, no todos los juegos usan UDP. En tercer lugar, el rendimiento es una preocupación. Un quinto de retraso de milisegundos en cada paquete de 200 bytes obviamente significa que solo puede manejar 5000 paquetes por segundo, incluso si su sistema no hace absolutamente nada más (lo cual es poco probable). Y está la comparación del rendimiento de escritura: el cifrado puede ser más costoso que el descifrado.

Kylotan
fuente
2

¿Cuáles serían los beneficios?

No confundas la ofuscación como un método de seguridad en los juegos multijugador. Ser capaz de interceptar / inyectar tráfico no suele ser una preocupación, ya que un cliente no debería poder modificar el estado del juego más allá de los parámetros normales (también conocido como trampa) de todos modos. Si está encriptando el tráfico como un medio para evitar esto, entonces probablemente esté escribiendo mal su código de red y necesite mover más del lado del servidor de simulación.

Entonces, en respuesta a su pregunta, la seguridad de este tipo generalmente no importa en los juegos.

Lo siento si tal vez lo entendí mal. Tal vez podrías describir por qué crees que los juegos deberían usar esto. Entonces puede encontrar una respuesta a su pregunta (si no es así)

ProPuke
fuente
55
Un cifrado como este beneficia a los jugadores de la misma manera que TLS en un sitio web: significa que nadie más que el operador del juego, en quien confías, está enviando solicitudes por ti o husmeando en lo que estás haciendo. Por ejemplo, nadie está interceptando sus paquetes y haciéndole intercambiar artículos. Nadie está falsificando registros de chat a su nombre.
1
Es importante destacar que se puede usar para transacciones seguras, como comprar un artículo en la tienda. Aparte de eso, evita la detección de paquetes y los ataques de intermediarios. No es un reemplazo para el terminal tonto, pero parece una forma fácil y barata de eliminar por completo un vector de ataque.
Kai
2
Ambos puntos válidos. Disculpas por perder eso: S Sin embargo, la pregunta decía "todos los juegos", y se centró en los juegos en tiempo real de baja latencia, donde, como los 2 casos anteriores, parecen limitarse a mmorpgs. Entonces, en respuesta a "todos los juegos", aún diría que en la mayoría de los casos no es necesario. (No creo que los 2 anteriores sean de utilidad en un juego de crysis, por ejemplo)
ProPuke
1
Para cosas como comprar artículos o enviar chat, solo tiene una API HTTPS regular. No hay ninguna razón para que todo el juego tenga que correr sobre un protocolo UDP optimizado centrado en la acción, a menos que tenga algunas preocupaciones locas sobre el ancho de banda (que DTLS va a arruinar de todos modos; necesita rellenar los paquetes para evitar el tamaño del mensaje) ataques basados).
Sean Middleditch