He estado tratando de encontrar una forma de evitar que las personas manipulen un archivo de licencia que se envía con mi software. He estado mirando a RSA y usando la firma para verificar los datos.Use RSA para firmar un archivo de licencia
Ahora, desde mi entendimiento, básicamente tengo algunos datos (el archivo de licencia) y utilizo el método SignData del RSACryptoServiceProvider para crear una firma para los datos con una clave pública y privada creada mediante ExportParameters (verdadero).
Luego daría el archivo de licencia y la clave pública con el software para poder verificar los datos (licencia) en el cliente usando VerifyData, pero lo que impide que el usuario cree su propio par de claves público/privado y vuelva a crear el datos y simplemente sobrescribir la clave pública y los datos?
He estado leyendo y haciendo algunas búsquedas en Google, pero todavía estoy atascado con esto, soy bastante nuevo en el cifrado y la firma también, pero tengo que resolverlo.
Soy consciente de que es prácticamente imposible asegurar una licencia como un archivo como si quisieran simplemente descompilar el código y eliminar los controles, así que solo quiero dificultarles abusar del software, No quiero que ellos solo puedan inventar su propia licencia o mover una licencia a otra máquina.
¿Podría alguien señalarme en la dirección correcta u ofrecer algún consejo?
Gracias.
He investigado esto por mí mismo, para licenciar Java. El cliente en mi caso no estaba dispuesto a configurar un servidor de activación para que mi software pudiera verificar la licencia en su contra, así que tuve que tomar el enfoque de cifrado/descifrado. Lo que hice fue codificar los detalles del cliente en la licencia y las fechas de vencimiento y límites de volumen, etc. para desalentar la copia de la licencia a otras ubicaciones. Aún así, si el cliente entendió Java, podrían haber reemplazado las clases que se ocupan de la activación del producto, pero no puedo evitarlo fácilmente, solo hágalo más difícil. –
También he analizado este enfoque, encriptando un archivo de licencia y descifrándolo en el cliente. ¿Dónde almacenaste la llave? ¿Lo incrustó dentro del software o lo tiene en un archivo? –
Encuentro los servidores de activación ofensivos. Para poder ejecutar una determinada pieza de software, tengo que ejecutar (y gastar recursos) continuamente un servicio de red no auditado que tengo prohibido escanear en busca de vulnerabilidades que puedan ser relevantes para la seguridad de la red de mi compañía. –