¿Cómo autenticar un programa cliente específico? [duplicar]

1

Tengo una aplicación de servidor que proporciona funciones a un programa cliente. El cliente también está programado por mí. Ahora quiero autenticar el programa cliente (no cualquier usuario) antes de usar mi servicio. Quiero lograr que mi servicio solo pueda ser utilizado ejecutando mi software cliente. El problema es que el servidor y el cliente no están necesariamente conectados a Internet. Por lo tanto, no se puede utilizar ninguna autenticación a través de una tercera entidad.

En mi opinión, se debe compilar algún secreto en el ejecutable del programa cliente y se debe realizar algo como un procedimiento de respuesta-desafío.

¿Qué piensas acerca de este pensamiento o tienes alguna otra idea?

Ya he pensado en un certificado de cliente, pero el certificado en sí también debe compilarse en el ejecutable.

Gracias de antemano.

    
pregunta Iniesta8 17.10.2018 - 18:30
fuente

1 respuesta

4

No puede asegurarse de que el programa que habla con el servidor es su . Cualquier cosa del lado del cliente puede verse comprometida, y cualquier comunicación proveniente del cliente puede ser alterada.

La industria de los juegos multijugador se enfrenta a una batalla de décadas contra el tipo de problema que mencionaste, e incluso con millones en fondos, programadores expertos y mucho dinero en juego, no pueden evitar que las personas utilicen el software de cliente personalizado para interferir con sus sistemas.

  

algún secreto debe ser compilado en el ejecutable

Y el atacante puede extraer este secreto, aplicar ingeniería inversa al protocolo de desafío-respuesta y escribir su propio cliente.

  

pensado en un certificado de cliente

No funcionará. Los atacantes pueden extraer el certificado y usarlo mal, como el secreto.

Puede ofuscar el código, agregar certificados, agregar datos secretos, sumas de comprobación y cualquier medida del lado del cliente, no impedirán que un atacante dedicado escriba a su propio cliente si tiene suficientes incentivos.

    
respondido por el ThoriumBR 17.10.2018 - 19:18
fuente

Lea otras preguntas en las etiquetas