Hay un juego más antiguo que solo utiliza UDP para comunicarse, y quería agregar autenticación de contraseña al juego para facilitar cosas como puntos de experiencia y clasificaciones. Para este fin, decidí ir con una implementación de SRP-6a comunicada a través de UDP utilizando una extensión del protocolo de juego existente, y terminé usando cocagne / csrp en el lado del cliente del juego, canalizado a través del servidor del juego, y mozilla / node-srp en el lado del servidor de autenticación, ligeramente modificado para producir la respuesta de seguimiento HAMK
compatible con csrp.
Hasta ahora ha funcionado razonablemente bien, sin embargo, no soy un fanático de cómo se almacena el verificador en reposo, ya que parece que en el proceso de cálculo de x
las entradas solo se incluyen una vez antes de convertirse en el verificador v
, consulte aquí . He sugerido que cambiemos esta función de biblioteca para adaptarla a nuestras necesidades (ya que es razonablemente pequeña y ya está en el árbol) y usamos algo como PBKDF2. Sin embargo, estoy recibiendo una respuesta (comprensible) de otro desarrollador acerca de tocar el código de esta naturaleza, buenas intenciones y todo eso.
En cambio, se sugirió que tal vez la propia contraseña del usuario se someta al hash PBKDF2 antes de pasarla como contraseña para la creación del verificador y las funciones de desafío del usuario. De esa manera, no tenemos que modificar ningún código en la propia biblioteca csrp. ¿Es este un enfoque válido? ¿O hay otra trampa para osos esperando para atraparnos si hacemos esto?
Para lo que vale, el documento de protocolo completo es here , así como si estoy haciendo cualquier otro tipo de error, sería bueno saberlo.