Verificación del cliente con el servidor

1

Actualmente estoy diseñando un programa Java básico que utiliza sockets para comunicarse desde un servidor a varios clientes. Sin embargo, quiero que los clientes no se modifiquen para evitar que los usuarios intenten utilizar el software, no como se diseñó. Estoy considerando usar una suma de comprobación MD5 y enviarla al servidor para compararla con lo que debería ser la suma de comprobación , , pero un cliente modificado podría simplemente enviar una suma de comprobación incorrecta para hacer que el servidor crea que el cliente no ha sido tocado.

En pocas palabras, ¿cómo voy a verificar un cliente de tal manera que un cliente modificado no pueda fingir que no se modifique?

    
pregunta DonkeyCore 09.07.2015 - 23:20
fuente

2 respuestas

1

Resolviéndolo en los comentarios con @JulianKnight, decidimos que la invalidación y la actualización serían la mejor manera de lograr esto.

Para ser más específicos; el servidor invalida al cliente con frecuencia (pero no lo suficiente como para causar estrés en la máquina host), y el cliente debe actualizarse cada vez que se invalida para obtener un nuevo hash md5sum que sea válido con el servidor. El uso de este método hace que, si alguien modifica el cliente, debe actualizar constantemente su código a nuevos clientes, haciendo que las modificaciones sean demasiado molestas para seguir haciéndolo.

    
respondido por el DonkeyCore 10.07.2015 - 02:16
fuente
2

SI lo que pides es posible, ENTONCES no habría software ni piratería de video. Podría tener algún software de reproducción que simplemente reproduzca la película pero se niegue a volcar los datos en un archivo y que el software de reproducción "pruebe" su estado no modificado en el servidor, lo que permite la descarga.

Esto nos dice que lo que buscas debe ser difícil y que valdría una gran cantidad de dinero si alguna vez se inventara. También hay buenas razones teóricas por las que es realmente imposible, lo que explicaría por qué nadie encontró una manera de validar el software de forma confiable de forma confiable. La conclusión es que no puede garantizar la integridad de cualquier cosa que se ejecute en la propia máquina del atacante.

Ahora, si tiene un alto nivel de control en el hardware de destino, entonces las cosas se vuelven posibles. Este es el modelo de seguridad de las consolas de juegos existentes: el firmware y todos los juegos están bajo el control estricto de los editores; ningún software nuevo ingresa a la consola si no ha sido firmado digitalmente por un editor autorizado. Los simples usuarios no pueden simplemente programar su consola. Esto todavía es difícil de hacer correctamente: el firmware de la consola, como cualquier software, tiene errores y, por lo tanto, todo este blindaje basado en firmas puede solucionarse ocasionalmente, pero al menos puede funcionar en teoría.

Pero para una PC, olvídalo.

    
respondido por el Thomas Pornin 09.07.2015 - 23:46
fuente

Lea otras preguntas en las etiquetas