¿Cómo demuestran los usuarios autenticados con SSL la autenticidad a través de los paquetes UDP?

3

Elegí SSL para registrarme en el cliente del juego. El cliente se comunica con el servidor de juegos que almacena una contraseña con sal / hash.

Si uso SSL para autenticar a los usuarios al iniciar sesión pero el juego hace toda su comunicación con los paquetes UDP, ¿cómo sabe el servidor que los paquetes UDP que recibe son del usuario autenticado?

Tenga en cuenta que lo que más me interesa es garantizar que el usuario esté autenticado. No me importa la privacidad de los paquetes UDP.

    
pregunta BahKoo 15.02.2014 - 21:10
fuente

2 respuestas

5

El método seguro es utilizar DTLS : eso es SSL / TLS aplicado a UDP.

El método menos seguro es inventar su propio protocolo. En este caso, ya que solo te preocupa la autenticación, todo irá de esa forma:

  • El cliente y el servidor hacen algunos SSL normales y ejecutan un protocolo de autenticación dentro de ese SSL.
  • El cliente y el servidor intercambian una clave simétrica K dentro de ese túnel (por ejemplo, el cliente genera K al azar y lo envía al servidor).
  • Cada paquete UDP enviado por el cliente se autentica con un MAC (por ejemplo, HMAC) con la tecla K . El servidor utiliza K para verificar que el paquete realmente proviene del cliente y no se ha modificado en tránsito.
  • Cada paquete debe incluir un número de secuencia, y el servidor debe mantener un cierto conocimiento de los últimos paquetes recibidos (con una ventana para paquetes fuera de orden), para que el servidor pueda notar cuando los paquetes se caen, se duplican, se reordenan. , o repetido.

La gestión de paquetes adecuada para evitar ataques de repetición es una cuestión de sutileza; dejar ese trabajo a una biblioteca DTLS ya implementada es lo más inteligente que debe hacer.

    
respondido por el Thomas Pornin 16.02.2014 - 06:11
fuente
-1

No creo que tengas algo claro. Para autenticar SSL, ¿quién es el titular del certificado, el cliente o el servidor? Parece que el cliente que posee el certificado es razonable. En tal caso, el servidor debe tener clave pública de este certificado. Por lo tanto, una forma fácil de acercarse a la autenticación es cifrar el número de secuencia del paquete UDP y algunas cadenas aleatorias con clave privada. Por lo tanto, si el servidor puede descifrar la firma en el UDP, se asegura de que el paquete provenga del cliente.

    
respondido por el Nathan Zhang 15.02.2014 - 23:34
fuente

Lea otras preguntas en las etiquetas