2010-08-06 10 views
6

esta es mi primera pregunta así que por favor sea amable ...esquema de licencia, parodia de seguridad y revocar capacidades

estoy trabajando en un software que me gustaría para proteger el uso de algún tipo de sistema de licencias. Un esquema básico sería generar alguna clave "única" para un usuario. El usuario envía esta clave y un código de registro cuando desea registrar el software y recibe un código de activación.

Cuando la aplicación se ejecuta, valida el código de activación comparando la clave "única" y un bloque de datos recibidos al descifrar el código de activación.

Esto es justo y bastante simple de implementar, se puede elegir diferentes algoritmos criptográficos, etc. Sin embargo, este sistema carece de dos propiedades:

  1. Si el usuario logra la firma de hardware parodia etc., para producir el mismo "único "clave en otra computadora podría usar los mismos datos de licencia.
  2. Si el usuario decide desinstalar la aplicación y quiere moverla a otra computadora, no hay nada que le impida volver a utilizar los datos de la licencia anterior en la computadora anterior y obtener nuevos datos de licencia para la nueva instalación.

¿Tiene alguna sugerencia sobre cómo resolver estos problemas?

Una idea que tuve fue agregar algunos datos aleatorios a la clave "única", estos datos aleatorios se almacenarían de una manera oscura, si el usuario desinstala la aplicación estos datos aleatorios serían eliminados, y algún tipo de hash con los datos aleatorios anteriores y los datos de licencia que se podrían enviar para verificar que realmente ha desinstalado la aplicación y me aseguró que no podrá volver a utilizar los datos de la licencia anterior ya que los datos aleatorios han cambiado.

Cambio y fuera, por ahora ...

EDIT: Actualmente tengo un esquema que funciona, debería mencionar que el producto más común se instala en un entorno integrado en hardware-cambios son muy raros y si hay una falla de hardware, lo más seguro es que la máquina está rota. Pero podría modificar el esquema de clave de hardware para tener en cuenta y permitir algunos cambios.

También debido a esto, el software probablemente no se ejecutará dentro de una máquina virtual, pero es un buen punto y no he pensado en eso.

La aplicación no llama regularmente, si hay una conexión de red disponible, el usuario tiene la opción de realizar un registro más automático; de lo contrario, obtiene una clave de registro, la ingresa en el software y obtiene una ID de instalación que me es proporcionado, el código de registro + ID de instalación genera una clave de activación que el usuario obtiene de mí y luego desbloquea el software.

Lo que busco son soluciones buenas/factibles para los 2 puntos. Duplicación de hardware, revocación de claves de licencia, es decir, para asegurarse de que el usuario no puede usar el mismo código de activación + código de activación.

Gracias por todos sus comentarios

No es necesario

+1

Si la aplicación simplemente "compara" las teclas, un cracker simplemente puede insertar una instrucción JMP para eludir la comparación, o devolver "VERIFICADO". Todo lo que tienen que hacer es romper la aplicación y comparar la ejecución dada una buena clave vs. una mala. Esto es muy difícil de proteger ya que el código DEBE ejecutarse para hacer su trabajo, y usted puede verlo mientras lo hace. –

+0

Esto es cierto, sin embargo, la clave de activación puede tener alguna clave criptográfica integrada que se usa silenciosamente para descifrar los archivos de datos necesarios para que la aplicación funcione correctamente, si el cracker logra cambiar un jz a jnz o viceversa, aún así requeriría obtener el código correcto para que el software funcione correctamente. ¡Buen comentario por cierto! –

+0

Hm. ¿Eso significaría que los archivos de datos son únicos por cliente? –

Respuesta

3

En primer lugar, se debe dejar en claro lo que está tratando de proteger. Aparentemente, desea asegurarse de que por cada compra de su aplicación, solo habrá una computadora en la que la aplicación esté instalada y ejecutable.

usted propone utilizar una firma de hardware como parte de la clave única de cada usuario. ¿Qué sucede si mi hardware falla (por ejemplo, se rompe mi disco duro)? Ciertamente, no voy a comprar su aplicación si no puedo seguir usándola después de un problema de hardware, por lo que, como mínimo, debe estar preparado para manejar las solicitudes de cambio clave. Será mejor que responda rápido, porque si su aplicación es importante quiero minimizar el tiempo de inactividad. Y no te invito a comprobar que mi hardware ha fallado, por lo que tendrás que creer en mi palabra. Eso significa que cualquier usuario puede obtener licencias gratuitas de vez en cuando pretextando una falla de hardware.

¿Qué pasa con las máquinas virtuales? Probablemente sea posible detectar todas las configuraciones de máquinas virtuales existentes actualmente, a riesgo de algunos falsos positivos de vez en cuando. Si prohíbe las máquinas virtuales, ¿cómo justifica esto para los usuarios? Si permite máquinas virtuales, ¿cómo evita que el usuario haga copias múltiples de toda la máquina virtual? (Esto puede suceder incluso con máquinas físicas, con hibernación).

es la aplicación va a llamar de nuevo a usted cada vez que se inicia? Supongo que sí, de su esquema de desinstalación. Eso es un costo de banda ancha y de disponibilidad, y también pospondrá a algunos usuarios, no todos están en línea, especialmente en entornos sensibles. Pero entonces no necesita un esquema tan complejo: su servidor puede realizar un seguimiento de cuántas copias de la aplicación se están ejecutando, aunque tiene que manejar el caso cuando la aplicación no finaliza limpiamente por cualquier motivo (caída de la aplicación, Bloqueo del sistema operativo, falla de energía, pérdida de conectividad ...).

No discute esto en su pregunta, pero debe proteger el ejecutable de la aplicación, para que alguien no pueda eludir el control de la licencia con un depurador.

+0

He agregado algo de información adicional a la pregunta. No cubrí el depurador/decompilador por alguna razón ... Tengo algunas cosas que proteger contra ese tipo de ataque. No muy fuerte pero de todos modos. –

1

Deje el código de registro sea también el código de activación.

de generar el código de registro único en el punto de venta, o empacados con el producto. El cliente se registra/activa/desactiva con usted (o su servidor) en un solo paso utilizando ese único código. El hardware del cliente no tiene que generar ninguna clave.

Volver a registrar/reactivar aún requiere el contacto con usted, por lo que conoce los intentos de reinstalación.

+0

bien, entonces ¿qué pasa si estos clientes entregan el código de registro a otra persona? Como todo el software debe poder registrarse sin conexión, no puedo verificar la validez del código de registro únicamente. Es por eso que el proceso de registro es ahora un procedimiento de dos pasos, donde el usuario ingresa el código de registro y luego obtiene un ID de instalación que recibo (a través de tcp/ip, teléfono, etc.) desde esos dos pices de información que genero la clave de activación que ahora está vinculada a ese dispositivo. –

+0

@Daniel: dado que requiere activación, no hay razón para un paso de registro por separado, ni para el registro fuera de línea. Eso solo complica todo. Mantenlo simple. Proporcione un código único para registrarse y activar con todos al mismo tiempo. Si el cliente le da el código a otra persona después de registrarse/activar, el nuevo usuario no puede registrarse/activar con el mismo código porque ya sabe que pertenece al primer cliente. Por ejemplo, el código A1B2C3 se envía con el producto, el usuario o el programa envía el código a usted para que se registre/active (junto con el nombre/dirección/MAC/cualquier otra cosa que desee capturar). –

1

Coloque su software en el hardware del aparato y poner un candado en el hardware. Envíe el electrodoméstico al cliente.

Si crees que el cliente va a cortar con una sierra el dispositivo para obtener tu código, considera encriptar el medio de almacenamiento ... Luego tienen que cortar la caja Y encontrar las llaves. Un chip TPM o un token USB seguro pueden ayudar con este último.

0

Creo que la única solución a su problema es un hardware criptográfico dongle. Por lo general, sería un dongle de desafío y respuesta a prueba de manipulaciones basado en USB, que puede transferirse fácilmente entre computadoras.

Estos dispositivos cuestan menos de $ 1 para grandes cantidades, y no más de $ 10 para cantidades muy pequeñas. Los buenos son muy difíciles de falsificar, muy fáciles de incorporar a su aplicación y, por lo general, se suministran con un cifrador EXE gratuito que también contiene una funcionalidad anti-depuración y anti-ingeniería inversa.

1

Como autor de shareware y miembro veterano de ASP, creo que va en la dirección equivocada con su solución. La única forma de hacerlo viable es con un dispositivo de hardware como ya se sugirió. Esta o las constantes activaciones en línea es la única manera si quiere estar seguro y su producto es tan bueno y sin competidores que sus clientes lo seguirán usando.

Pero lo que (ISV pequeños organizados) aprendimos de la práctica es que no debes hacer lo que estás tratando de hacer. No lo vincules al hardware. Venda una licencia por persona, no una licencia por computadora. Al final, hará más ventas debido a la licencia relajada.

Haga lo suficiente para que las personas honestas se mantengan honestas. Así que limite la versión del camino (decidí terminar la aplicación después de una hora para mí) y deje la versión final libre de todo. Ofrezca una descarga por separado para los clientes pagos y eso es todo. Sea una buena compañía y no una ganancia codiciosa que maximiza la compañía de restricciones legales.

Usé algunos de los mejores programas de protección de ventanas primero, pero todos ellos tuvieron serios problemas con mi código. Y dicen que se rajan tarde o temprano. Así que renuncié a todos ellos.

P.S .: Utilizo un esquema de huellas dactilares de hardware en Windows donde no restrinjo el programa sino solo para evitar que las personas obtengan nuevas claves de prueba cada 30 días. Junto con una pantalla molesta parece funcionar. La huella dactilar es una xor del nombre de usuario, el tiempo de instalación de Windows, la marca de tiempo modificada de los archivos del sistema y la identificación serial del disco duro.

Cuestiones relacionadas