Cifrado de clave / ofuscación

0

Obtuve un programa GUI, que carga la lógica de un servidor web si la clave de licencia ingresada es válida.

La cadena de conexión real que he hexadeado y xor 'd con una clave secreta . (que desafortunadamente es estático) El propio servicio web autentica SASLandSCRAM-SHA-1

Para la limpieza:

Person A no quiere comprar una licencia. Así que trata de hacer ingeniería inversa:

  • Introduce una clave falsa aleatoria: no hay datos del servicio web.

Según tengo entendido, la única oportunidad de en realidad fuerza bruta el programa es descifrar la clave secreta. Mi pensamiento fue crear uno dinámicamente. Además de eso, ¿qué otros enfoques hay?

    
pregunta 0x45 06.12.2018 - 11:31
fuente

1 respuesta

0

Este no es un enfoque seguro.

Para usar la cadena de conexión, el cliente debe descifrarla. Para descifrarlo, debe tener posesión de la clave secreta, al menos temporalmente. Durante ese tiempo, un hacker puede depurar el programa y extraer la clave de la memoria. Por este motivo, una clave secreta global nunca debe abandonar su centro de datos.

Un enfoque más típico sería emitir un código de licencia que sea difícil de adivinar y simplemente almacenarlo en el servidor. La persona que llama deberá enviar el código junto con la solicitud para utilizar el servicio, y el servicio verificará si es válido. Si se encuentra que el código ha sido comprometido (por ejemplo, compartido), simplemente puede eliminarlo del servidor.

Un enfoque menos centralizado sería emitir un documento de licencia (por ejemplo, un archivo XML) y firmarlo digitalmente antes de proporcionárselo al cliente. De esa manera, el cliente u otros clientes podrían validar la licencia independientemente del servidor (y, por supuesto, el servidor todavía puede validarla).

    
respondido por el John Wu 06.12.2018 - 22:02
fuente