Autenticar a un usuario a través de un socket UDP

1

así que digamos que tenía un socket básico, no te da ninguna información sobre el usuario que no sea la dirección IP, ¿cuáles serían mis opciones? Si quisiera autenticar a un usuario de la manera más óptima posible (como en performant ),

Pensé en tener una pequeña llave con la que guardo el paquete, que podría ser descascarada bastante rápido (creo), pero no sé cómo podría enviar esa clave inicial de forma segura. (Aunque quizás con un servidor SSL secundario, que tendré para las solicitudes HTTPS)

Editar: Más información, el usuario se autentica primero con el servidor HTTPS, por lo que una clave puede compartirse de forma segura (con SSL) entre el cliente y el servidor

¿Pensamientos?

    
pregunta Whiteclaws 03.06.2017 - 21:08
fuente

2 respuestas

2
  1. Proporcione a los clientes una clave aleatoria (de larga duración o temporal) en las sesiones https. Incluya la identificación de usuario en los datagramas (si aún no la tiene). Firme los datagramas con un algoritmo HMAC, verifique los datagramas HMAC en el servidor.

  2. Use DTLS.

respondido por el Miklos Niedermayer 03.06.2017 - 23:27
fuente
0

Si ya ha acordado un secreto compartido, no es demasiado difícil utilizarlo para el cifrado en lugar de firmar y obtener el beneficio adicional de confidencialidad. Una advertencia de usar UDP es que, en ausencia de una entrega confiable, no puede usar CBC o CFB en los datagramas (puede usar una perturbación por datagrama de un vector de inicialización básica para evitar la sobrecarga de enviar un nuevo IV para cada datagrama) .

Una pequeña tecla es una que se invierte fácilmente.

Hay un rfc que cubre ssl sobre udp (no lo he visto en detalle, sospecho que deberías tener cuidado con la velocidad del acelerador). Un enfoque común para lidiar con la pérdida de transmisión sobre udp es usar la corrección de errores en múltiples paquetes como RAID lo hace con los discos.

El uso de un canal ssl over tcp como un mecanismo de control parece un enfoque sensato (pero las comunicaciones bidireccionales no son una buena opción para http).

La pregunta más importante es si realmente necesitas usar udp.

    
respondido por el symcbean 03.06.2017 - 21:29
fuente

Lea otras preguntas en las etiquetas