2011-06-15 21 views
5

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.

+0

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. –

+0

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? –

+0

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. –

Respuesta

4

Nada los detendría. El objetivo de aplicar la criptografía a las licencias de software es crear evidencia más sólida para su uso en un tribunal.

No pierda demasiado tiempo en hacer que su sistema de licencias sea difícil de eludir (cuanto más complicado sea, más personas lo verán como un desafío), sino más bien asegúrese de que sus clientes no se sientan obstaculizados.

+0

Sí, esa es más o menos mi respuesta para mi cliente. Simplemente no estoy contento con mi solución actual porque no cumple con los requisitos establecidos del cliente. –

+0

Sí, tiene razón, creo que lo haré para que no puedan acceder fácilmente a todo o trasladar el archivo de licencia a otra máquina. Estoy de acuerdo con el comentario de Simons sobre el servidor de activación también. –

+0

La dificultad para evitar que las personas muevan licencias a otras máquinas es que a menudo también les impide mover la licencia a una nueva instalación. –

Cuestiones relacionadas