Prevenir solicitud de falsificación de ataque

2

No sé si usé el término correctamente, pero básicamente este es el escenario:

Estoy trabajando en una aplicación que en cada instalación de computadora debo hacer una solicitud a un servidor notificando al servidor que la aplicación está instalada correctamente. El sistema que uso actualmente tiene un valor de suma de comprobación que se calcula en el lado del cliente y en el lado del servidor validará una instalación. El problema es que alguien puede falsificar la solicitud de descompilación de la aplicación y calcular la suma de comprobación utilizando el mismo algoritmo que utilizo para calcularla.

Entonces, además de usar un cifrado RSA, ¿hay alguna manera de proteger mi aplicación de tal ataque?

    
pregunta opc0de 07.04.2013 - 09:03
fuente

3 respuestas

1

La técnica de "mantener la aplicación alejada del usuario" es básicamente oscura, y se debe agregar solo como una capa y no como una verdadera medida de seguridad.

Una forma de manejar esto sería agregar un componente adicional que requiera validación con el servidor, como un token de licencia, o un nombre, producido por algún tipo de proceso legítimo como un registro web, que es entonces parte del proceso de activación.

Esto todavía se puede jugar, pero es mucho más fácil de detectar en el lado del servidor cuando ambos componentes están en su lugar. Además, puede insertar una verificación de validación en el lado del servidor en función de una serie de variables capturadas durante la activación, por ejemplo: dirección IP de origen, sistema operativo, etc. Entonces, si vio 10,000 activaciones surgir de un país inesperado de repente , o algún otro patrón, podría deshabilitar futuras activaciones desde esa ubicación.

    
respondido por el Daniel Miessler 07.04.2013 - 19:26
fuente
3

Esta es otra variante del problema clásico de confiar en el cliente. Debe proporcionar a la máquina cliente suficiente información para generar la firma, momento en el cual, si el atacante tiene acceso a la máquina que pierde. RSA no te ayudará allí.

Para que funcione, debe asegurarse de que los operadores de las máquinas de destino no tengan acceso a la aplicación. es decir: no son administradores, la aplicación es instalada por otro usuario, como Sistema Local, y la clave compartida (o clave pública para RSA) no se queda en algún lugar donde puedan verla cuando la aplicación esté lista para su uso.

    
respondido por el bobince 07.04.2013 - 11:51
fuente
2

La única forma de asegurarse de que solo su código no modificado se ejecute en el lado del cliente es obtener la cooperación de hardware incorruptible resistente a las manipulaciones, por ejemplo. un TPM . En gran medida, ese es el modelo de seguridad de las consolas de juegos como PS3 (el hardware especial se integra en la CPU Cell Broadband ). Cuando Sony no se equivoca, esto funciona razonablemente bien (es decir, Sony sigue ganando mucho dinero; la piratería de software y las aplicaciones modificadas siguen teniendo un bajo impacto financiero).

No puede contar con la existencia de dicho hardware en PC o teléfonos inteligentes en la actualidad. Ninguna cantidad de RSA puede reemplazarlo.

    
respondido por el Tom Leek 07.04.2013 - 17:06
fuente

Lea otras preguntas en las etiquetas