2011-02-08 20 views
13

Estoy trabajando en un pequeño producto de plataforma cruzada para Windows y Mac escrito en C++/Obj-C. Me han pedido que implemente un módulo de licencia para el mismo. Esta tarea es parte de un proyecto muy ambicioso para introducir licencias para todos nuestros productos. Al final, tendremos un esquema de licencia completo en el que podremos vender licencias a nuestros clientes que respalden renovaciones anuales, niveles de licencia, etc. Mi problema es que no sé lo primero sobre la implementación de inspectores de licencia. ¿Puede alguien señalarme algunos cómo hacer para lo mismo? ¿Hay algún módulo de licencia de código abierto que pueda estudiar?Implementación de la biblioteca de comprobación de licencias

Respuesta

16

Uso un sistema de Verificación de clave parcial (PKV), y lo he implementado en C# con un generador de PHP. Google presentará varios éxitos, explicaciones e implementaciones; pero Brandon Staggs escribió una buena visión general (aunque en Delphi!), aquí:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV funciona mediante la codificación de cierta información (tipo de licencia, el producto número de serie, fecha, etc) en la clave junto con un hash del nombre de usuario y hash de la información codificada. Gran parte de la clave en realidad consiste en múltiples hashes de char. La idea es que solo revises un subconjunto de estos hashes. El subconjunto exacto que se emite se puede cambiar con el tiempo para cierta seguridad y para proteger contra ciertos tipos de ingeniería inversa.

También encriptaría la clave para ayudar a ofuscar lo que significa cada carácter en la licencia. De lo contrario, alguien con varias claves puede determinar ciertas posiciones de char significan ciertas cosas ("oh, los caracteres 3-4 son el número de serie"). ¡Esto podría ser una grieta en tu armadura!

Cualquier sistema de licencia que desarrolle va a ser imperfecto. Será crackable, y si sus productos son populares, serán descifrados. Sin embargo, hay un fuerte argumento de que existe un sistema de licencia para mantener honestas a las personas honestas, y producir suficientes obstáculos para las personas un poco deshonestas, pero no tantos obstáculos que se convierta en un inconveniente (por ejemplo, estoy generalmente en contra del bloqueo de hardware) Quienes piratean tu sistema probablemente no lo pagarán de todos modos.

+2

+1 para el último párrafo, nunca será perfecto, pero si ya es bastante difícil, todo estará bien. –

+0

Me encanta tu explicación y especialmente el último párrafo. ¡Lo resume todo! –

Cuestiones relacionadas