Pregunta

Mi empresa está buscando para iniciar la distribución de algunos de los software que hemos desarrollado y le gustaría ser capaz de dejar que la gente pruebe el software antes de comprar.También nos gustaría asegurarse de que no puede ser copiado y distribuido a los clientes de nuestros clientes.

Uno de los modelos que hemos visto es atar una licencia a una dirección MAC de modo que el software sólo funciona en una máquina.

Lo que me pregunto es, ¿cuál es una buena manera de generar una clave de licencia con información diferente incrustado en él, tales como la fecha de caducidad de licencia, la dirección MAC, y diferentes restricciones de software?

¿Fue útil?

Solución

Yo sugeriría que usted tome las piezas de información que desea en la clave, y el hash md5, y luego tomar la primera caracteres X (donde X es una longitud de clave que creo que es manejable).

Criptográficamente, es lejos de ser perfecto, pero este es el tipo de área donde usted quiere poner en la mínima cantidad de esfuerzo que va a parar a un casual el atacante nada más, rápidamente se convierte en un agujero negro.

Oh, yo también, se desea proporcionar la fecha de caducidad (y cualquier otra información que usted podría querer leer fuera de ti mismo) en formato de texto (o un poco confuso), como parte de la clave, así que si van por este camino - El md5 es sólo para impedir que el usuario final desde el cambio de él fecha de vencimiento para extender la licencia.

Lo más fácil sería un archivo de clave como este...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]

Otros consejos

Yo he usado tanto FLEXlm de Macrovision (anteriormente Trotamundos) y la más reciente FECHA de Reprise Software (como yo lo entiendo, escrito por FlexLM original de los autores).Ambos pueden llave de la dirección MAC o física de un dispositivo de seguridad, puede ser bloqueado en nodo (atado a una máquina) o "flotante" (autorizado de la máquina en la red puede obtener una licencia repartido por un servidor de licencias central, hasta un número máximo de forma simultánea desprotegida de copias determinado por cuánto han pagado).Hay una variedad de maneras flexibles para configurarlo, incluyendo las fechas de vencimiento, individual sub-licencia, características, etc.La integración en una aplicación no es muy difícil.Estos son los dos que yo he utilizado, estoy seguro de que hay otros que hacen el trabajo igual de bien.

Estos programas son fácilmente agrietado, lo que significa que no se conocen exploits que permiten a las personas eludir la seguridad de la aplicación que los utiliza, ya sea por el corte de sus propias licencias para suplantar el servidor de licencias, o por el mero hecho de parchar tu binario para eludir la verificación de licencia (esencialmente, la sustitución de la subrutina llamada de su biblioteca con el código que dice "volver 'true'".Es más complicado que eso, pero eso es lo que sobre todo se reduce a.Verás agrietado versiones de su producto, publicado en varios sitios Warez.Puede ser muy frustrante y desalentador, sobre todo porque a menudo están interesados en las grietas para la agrietamiento bien, y no tienen ningún uso para su producto o conocimiento de qué hacer con él.(Esto es obvio si se tiene suficientemente programa especializado.)

Debido a esto, algunas personas dicen que usted debe escribir su propia cuenta, tal vez incluso cambiar el esquema de cifrado con frecuencia.Pero no estoy de acuerdo.Es cierto que el rodar de su propia significa que los exploits conocidos en contra de FLEXlm o RLM no funciona de inmediato para su aplicación.Sin embargo, a menos que usted es un total experto en este tipo de seguridad (que claramente no son o no hacer la pregunta), es muy probable que en su inexperiencia usted va a terminar de escribir un mucho menos seguro y más crackable esquema de los líderes del mercado (débiles, ya que puede ser).

La otra razón para no rodar sus propios es simplemente que es un sin fin de gato y ratón de juego.Es mejor para sus clientes y sus ventas a poner el mínimo esfuerzo en la licencia de seguridad y dedicar ese tiempo a la depuración o la adición de características.Usted necesita venir a los apretones con el régimen de concesión de licencias como meramente "mantener a las personas honestas y sinceras", pero no impide que determina el agrietamiento.Aceptar que las galletas no haya pagado por el software de todos modos.

No todo el mundo puede tomar este tipo de actitud zen.Algunas personas no pueden dormir por la noche sabiendo que alguien en algún lugar está recibiendo algo a cambio de nada.Pero tratar de aprender a lidiar con ella.No se puede detener a los piratas, pero usted puede equilibrar su tiempo/esfuerzo/gasto tratando de detener a todos los piratería frente a hacer mejor su producto para los usuarios.Recuerde que, a veces, la mayoría de los piratas aplicaciones también son los más populares y rentables.Buena suerte y dormir bien.

Hemos utilizado el siguiente algoritmo en mi empresa por años sin un solo incidente.

  1. Decidir los campos que desee en el código.Bit-pack tanto como sea posible.Por ejemplo, las fechas podrían ser "el número de días desde el 2007," y, a continuación, usted puede conseguir lejos con 16-bits.
  2. Añadir un extra de "checksum" de campo.(Vamos a ver por qué en un segundo). El valor de este campo es un campo de suma de comprobación de los paquetes de bytes de los otros campos.Utilizamos "primeros 32 bits de MD5."
  3. Cifrar todo el uso de .Para la clave, usar algo que identifica al cliente (por ejemplo,nombre de la empresa + dirección de correo electrónico personal), de esa manera si alguien quiere publicar una clave en la interweb tienen que incluir su propia información de contacto en texto sin formato.
  4. Convertir de hexadecimal a una cadena de caracteres en forma sensata.Usted puede hacer directamente dígitos hexadecimales, pero algunas personas prefieren elegir un conjunto diferente de 16 caracteres para que sea menos evidente.También incluyen guiones o algo con regularidad para que sea más fácil de leer a través del teléfono.

Para descifrar, convertir de hexadecimal a la cadena y descifrar con el TÉ.Pero entonces hay este paso extra:Calcular su propia suma de comprobación de los campos (haciendo caso omiso de la suma de comprobación de campo) y comparar a la suma de comprobación. Este es el paso que asegura que nadie se ha manipulado la clave.

La razón es que el TÉ mezclas de los bits completamente, por lo que incluso si un bit se cambia, todos los demás bits son igualmente propensos a cambiar durante el TÉ de descifrado, por lo tanto la suma de comprobación no va a pasar.

Es este hackeable?Por supuesto!Casi todo lo que es, pero esto es lo suficientemente firme y fácil de implementar.

Si atar a la información de contacto no es suficiente, a continuación, incluir un campo "ID de Nodo" y bloquear a la dirección MAC o somesuch como usted sugiere.

No utilizar direcciones MAC.En algún hardware que hemos probado - en particular, algunos de IBM Thinkpads - la dirección MAC se puede cambiar en un reinicio.No nos moleste en investigar por qué este fue, pero hemos aprendido bastante durante la primera etapa de nuestra investigación, no para depender de ella.

Descargo de responsabilidad obligatorio y plug:la empresa que co-fundó produce la OffByZero Cobalto solución de licencia.Así que no es sorprendente escuchar que recomiendo la externalización de sus licencias y centrarse en sus competencias básicas.

En serio, este material es muy difícil de conseguir, y las consecuencias de equivocarse podría ser bastante malo.Si usted está bajo volumen alto precio de un par de copias piratas podrían seriamente dent sus ingresos, y si eres de alto volumen y baja el precio, entonces no hay incentivo para warez d00dz para que el crack de su software para la diversión y la reputación.

Una cosa a tener en cuenta es que no hay tal cosa como la verdad a prueba de grietas de concesión de licencias;una vez que alguien tiene tu byte-code en su hardware, que han regalado la capacidad de controlar totalmente lo que hacen con ella.

Lo que un buen sistema de concesión de licencias que hace es subir el listón lo suficientemente alto que la compra de su software es una mejor opción - especialmente con el aumento de infectados con malware de software pirateado.Le recomendamos que se tome una serie de medidas encaminadas a asegurar su aplicación:

  • conseguir un buen terceros sistema de concesión de licencias
  • la pimienta de su código con alcance-reglas contenidas (por ejemplo,no hay una variable global como fIsLicensed, no comprobar el estado de una característica de cerca el código que implementa la función)
  • emplear grave la ocultación en el caso de .NET o Java de código

La empresa en la que trabajé para utilizar un usb dongle.Esto fue útil porque:

  • Nuestro software también fue instalado en la memoria USB
  • El programa se ejecuta sólo si se encuentra la (única) de la llave de hardware (estándar de cualquier llave USB tiene que, por lo que no tiene para comprar algo especial, cualquier palo va a hacer)
  • no fue restringido a un equipo, pero podría ser instalado en otro sistema, si se desea

Sé que la mayoría de la gente no le gusta dongles, pero en este caso fue muy útil, en realidad, fue utilizado para un propósito especial reproductor de medios que también nos entregan, las llaves USB, por tanto, podría ser utilizado como un demo en cualquier pc, pero también, y sin modificaciones, de ser utilizado en la aplicación real (es decir, los jugadores reales), una vez que el cliente estaba satisfecho

Lo hacemos simple:almacenar todos los datos de la licencia de un XML (fácil de leer y gestionar), crear un hash de todo el XML y, a continuación, cripta con una utilidad (también propia y simple).

Esto también es lejos de ser perfecto, pero se puede mantener por algún tiempo.

Casi todos los comerciales, el sistema de licencias se ha resquebrajado, hemos utilizado muchos en los últimos años todo el tiempo y obtener agrietado, la regla general es la de escribir su propio, cambiar cada versión, una vez que su feliz intentar entrar a ti mismo.

Nada es realmente seguro, en última instancia, mirar a los grandes jugadores de Microsoft, etc, a los que van con el modelo de la gente honesta se va a pagar y otros se copia, no poner demasiado esfuerzo en ello.

Si la aplicación es que vale la pena pagar el dinero de la gente.

Yo he utilizado un número de productos diferentes que hacen a la generación de la licencia y he creado mi propia solución, pero se trata de lo que va a dar la mayor flexibilidad ahora y abajo de la carretera.

Los temas que usted debe centrarse en la generación de sus propias claves de licencia se...

HEXAGONAL de formateo, la criptografía de curva elíptica, y cualquiera de los algoritmos de cifrado como AES/Rijndael, DES, Blowfish, etc.Estos son ideales para la creación de claves de licencia.

Por supuesto que no es suficiente tener una clave también es necesario asociarlo a un producto y programa de la aplicación para bloquear basado en un sistema de claves que usted ha creado.

He metido con la creación de mi propia solución, pero al final cuando llegó a ganar dinero con el software tenía la cueva y obtener una solución comercial que me ahorrará tiempo en la generación de claves y la gestión de mi línea de productos...

Mi favorito hasta ahora ha sido de Licencia de la Bóveda de SpearmanTech pero también he tratado de FlexNet (costoso), XHEO (demasiado requiere conocimientos de programación), y SeriousBit Ellipter.

Elegí la Licencia de la Bóveda del producto en el final porque me gustaría hacerlo para mucho más barato que los demás, y simplemente tenía más que se me ofrece como hacemos la mayoría de nuestro trabajo .NET 3.5.

Es difícil dar una buena respuesta sin saber nada acerca de su producto y de los clientes.Para el software de la empresa se venden a la gente técnica se puede utilizar un bastante complejo sistema de concesión de licencias y que vamos a averiguar.Para el consumidor el software vendido a la que apenas conocimientos de informática, se necesita un sistema mucho más simple.

En general, he adoptado la práctica de hacer un sistema muy sencillo, que mantiene el pueblo honesto honesto.Cualquier persona que realmente quiere robar su software va a encontrar una manera alrededor de cualquier sistema DRM.

En el pasado he utilizado Armadillo (ahora el Software Pasaporte) para proyectos de C++.Actualmente estoy usando XHEO para los proyectos de C#.

Si su producto requiere el uso de la internet, entonces usted puede generar un identificador único para la máquina y el uso que comprobar con una licencia de servicio web.

Si no, creo que va con un producto comercial es el camino a seguir.Sí, se puede ser hackeado, pero para la persona que está absolutamente decidido a lanzarla, es poco probable que alguna vez lo hubiera pagado.

Hemos utilizado: http://www.aspack.com/asprotect.aspx

También utilizamos una llamada a una función en su producto sdk que nos da un identificador único para una máquina.

Buena empresa, aunque claramente no hablantes nativos de inglés desde su primer producto fue llamado "AsPack".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top