una seguras nueva masivo hackear generador ejemplos dificiles cómo crear contraseñas contraseña caracteres algorithm software-distribution product-key

algorithm - seguras - ¿Algoritmo seguro para crear claves de licencia?



generador de contraseñas masivo (2)

Me gustaría distribuir una aplicación, pero tengo una clave de licencia que pueden ingresar para desbloquear. ¿Qué es un buen algoritmo para crear una clave concisa que contenga información sobre qué versión han comprado, así como cosas adicionales como la duración de la licencia, etc.?

Me doy cuenta de que esta protección puede ser dañada, pero mantiene honestas a las personas honestas. Puedo o no implementar la activación en línea, pero me preocupa principalmente una buena manera de generar estas claves.

Todos hemos visto esta situación, ¿qué algoritmo funciona mejor? ¿Debo solicitar un nombre de usuario simple en texto sin formato y usarlo para crear una clave de producto única basada en su propia información?

¿Existe algún sistema que pueda usarse para que sea casi imposible generar una clave válida?

Tal vez una situación de cifrado de par de llaves públicas / privadas donde solo el fabricante tiene la clave privada y los datos pueden ser validados por una clave pública, pero la clave pública no puede ser secuestrada para crear claves válidas.

Como esta es una clave de producto, sería genial si fuera bastante corta, 64 caracteres o quizás 128 como máximo, pero cuanto más corto mejor, 32 o menos sería genial.


No hay acceso a Internet y teclas de disparo

Con respecto al tamaño de la clave de serie, existe una compensación entre las claves legibles cortas / humanas ( menos seguras ) y las claves largas o posiblemente los archivos de licencia ( más seguros ).

Si desea claves cortas y fáciles de leer que le permitan almacenar elementos como la fecha de caducidad y las funciones, puede usar SKGL junto con Software Protector, que son de código abierto ( https://help.cryptolens.io/faq/what-is-skgl ).

Sin embargo, el inconveniente es que lo más probable es que utilicen criptografía simétrica y / o almacenen el algoritmo de generación de claves dentro de la aplicación. Esto significa que el usuario final puede intentar encontrar la clave de cifrado y / o el algoritmo (consulte http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET ).

Acceso a Internet (o fuera de línea con archivos de activación)

Una mejor alternativa es utilizar un sistema basado en la nube que realiza un seguimiento de todas las claves de licencia y le permite modificarlas en cualquier momento.

Si tiene un sistema de licencias basado en la web, puede mantener las claves más cortas y no tener que almacenar información dentro de la clave real (que es el caso de la mayoría de los sistemas basados ​​fuera de línea).

Además, podrá admitir más modelos de licencias, por ejemplo, un modelo basado en suscripción.

Las soluciones son:

  • cree ese sistema usted mismo , lo que tomará mucho tiempo y lo distraerá de las funciones principales de la aplicación.

  • use un sistema de código abierto existente como punto de partida , aunque puede ser tentador, ya que es de código abierto y gratuito, llevará tiempo llevarlo a la nube, configurarlo según sus necesidades particulares y mantenerlo. Los sistemas de código abierto que he observado tienden a ser muy amplios en funcionalidad, lo que contribuye a la complejidad.

  • externalizar a terceros : la desventaja es que la mayoría de ellos no son gratuitos.

En mi opinión, todo el procedimiento debería ser subcontratado a un tercero que esté especializado en desarrollar ese componente en particular. Una vez que escala, puede que necesite cambiar la lógica de la licencia. En lugar de desarrollarlo usted mismo, es probable que el tercero ya admita ese escenario.

Existen varias soluciones ( asegúrese de buscar aquellas que estén basadas en la web ), Cryptolens es un ejemplo. Si está desarrollando una aplicación .NET, este es un ejemplo paso a paso: https://help.cryptolens.io/examples/key-verification .

Descargo de responsabilidad : soy el autor de SKGL / Software Protector, el artículo sobre sistemas de licencias y Cryptolens.


No dijiste en qué plataforma estás, pero aquí hay una en Microsoft .Net:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

Esta página documenta un esquema de licencia muy simple que puede usar con su aplicación .NET. Está pensado para ser bastante seguro, fácil de implementar y fácil de extender. La versión de muestra le permite proporcionar archivos de licencia con un nombre de cliente incrustado en ellos, pero puede extenderlo fácilmente para agregar otra información de identificación, enlaces de máquinas, fechas de caducidad, etc.

Este esquema hace uso de la biblioteca RSA de Microsoft y la firma XML. Básicamente, usted pone lo que quiere en un documento XML y firma ese documento. Luego, puede proporcionar ese archivo a su cliente y la aplicación puede leer la información de la licencia de ese archivo. Dado que el archivo está firmado digitalmente, el archivo de licencia NO puede ser manipulado a menos que usted libere su clave privada (lo que realmente no debería hacer).