Respuestas
- SRP : contraseña remota segura: se basa en Diffie-Hellman. La idea es que puede hacer una verificación mutua de la contraseña sin tener que transferir la contraseña o la información que pueda usarse para obtenerla. A pesar de que es seguro a través del cable, aún debe modificar y eliminar sus contraseñas, ya que su servidor nunca debe almacenarlas en texto sin formato .
- La ventaja de SRP es que una vez que se completa, también le brinda una clave de cifrado negociada mutuamente que un atacante no podría deducir dados los datos que ha transferido. Esto significa que puede utilizar un algoritmo de cifrado simétrico (como AES) una vez que el usuario se autentica.
- Suponiendo que está utilizando UDP con su propia implementación confiable / ordenada (orientada a la conexión), cifre toda la carga de reproducción UDP, incluido su 'número de secuencia de paquete'. Si su sistema está diseñado correctamente, rechazará automáticamente los mensajes reproducidos y un intruso no podrá cambiar el número de secuencia del paquete porque está encriptado (por lo tanto, es posible una reproducción, pero se ignorará automáticamente).
Pensamientos
¿Debería ser segura su autenticación? Absolutamente. No haga concesiones en términos de seguridad cuando se cuestione una contraseña. Por lo tanto, definitivamente debería considerar la primera viñeta en mi respuesta.
¿Deberían estar seguros sus datos? Solo si se trata de una compra / micro-transacción en el juego, y entonces, ¿por qué no usar algo probado y verdadero como HTTPS? Cifrar el tráfico de tu juego probablemente no sea una solución viable por las siguientes razones:
- Es una paranoia completa.
- Agregará una sobrecarga de tiempo de CPU en su servidor, a menos que pueda comprar módulos de cifrado de hardware (costosos).
- No importa cuánta seguridad proporcione para sus datos a través del cable: alguien podría secuestrar el proceso del cliente e interceptar mensajes el momento antes de que se cifren y se envíen. Esto no es solo una posibilidad, sino que es infinitamente más posible, ya que es mucho más fácil inyectar código en comparación con los paquetes de interceptación. Si está haciendo esto para la prevención de trampas, está perdiendo su tiempo por completo.
- En términos de seguridad de contraseña, lamentablemente no hay nada que pueda hacer razonablemente sobre un sistema secuestrado, el cliente se ha vuelto hostil. Los dongles de Blizzards WoW están diseñados para lidiar con esto, pero no estoy seguro de cuán seguro es eso (especialmente si lo dejas enchufado).
Por favor, si está encriptando para la prevención de trampas, abandónelo. Te vas a quedar corto: te di la información en caso de que no lo estés. Recuerde que puede cifrar selectivamente los paquetes por el primer byte en el paquete e indicar si el resto está cifrado: aunque, una vez más, me apegaría a HTTPS si necesita hacer cosas como transacciones con tarjeta de crédito: son extremadamente infrecuentes y HTTPS está diseñado por expertos, a diferencia de algo que usted o yo diseñamos.
Dicho todo esto, Blizzard encripta su tráfico de WoW. La razón principal por la que esto se rompió es porque alguien, que probablemente sea un completo aficionado, decidió que probaría con un algoritmo de encriptación local; esto funcionó muy bien . Incluso si utiliza algoritmos estándar de la industria, existe una buena posibilidad de que alguien realice una ingeniería inversa de su código y lo simule; una vez que el cliente ingresa su contraseña, no se sabe si un sistema no compatible está conectado.