software - java licencia
¿Cómo crear una licencia para mi software Java? (3)
Estoy teniendo un gran problema. Eso es "Cómo crear una licencia para mi software".
OK, creo que esta es mi clave de licencia - 12345YW
cuando el usuario ingresa esta clave de licencia, el software debe permitirle usar el software. Está bien, una vez que el usuario ingrese la clave de licencia, mi software debe recordar que ha ingresado la clave válida, ¿no? (Porque a partir de la próxima vez, no tiene que solicitar el diálogo de licencia) Mi pregunta es: ¿Cómo puedo hacer que mi software para recordar que el usuario había ingresado la licencia? En las aplicaciones basadas en Windows, lo que la mayoría de ellos hace es ingresar una entrada al registro de Windows. ¿Puedo hacer lo mismo? (Entonces, ¿qué pasa con Ubuntu y Mac?)
Pensé en escribir un archivo .txt para que mi software pueda leerlo y encontrar si se ingresó o no la licencia. Sin embargo, ese es el sistema más seguro que puedo pensar.
Entonces, si ingreso la clave de licencia anterior, ¿cómo puedo hacer que mi software lo recuerde? Estoy muy contento si me puedes dar un ejemplo de código también (es decir: no sé cómo editar el registro, en el caso de registro de Windows, etc.). Por favor, ayúdame...
Parece que estás intentando crear licencias en tu software. ¿Ha considerado usar una biblioteca para esto en lugar de hacerlo a mano? Tal vez eche un vistazo a True License , debería hacer lo que necesita.
Me sorprende que una posibilidad haya sido pasada por alto. La forma más fácil de proteger los datos de un cliente no confiable es nunca dejar que el cliente lo tenga. Varias arquitecturas de aplicaciones permiten esto: una aplicación web, un cliente de escritorio RPC a un servidor remoto o un cliente ligero de alto rendimiento que se conecta a un escritorio virtualizado en un servidor remoto. Las aplicaciones web ya son populares debido a sus ventajas en el área de instalación, respaldo de datos y mantenimiento.
Por lo tanto, en lugar de intentar obtener un doctorado Comp Sci Ph.D honorífico mediante la creación de software que refuerza la política de seguridad de una compañía en un cliente malvado ...
(extremadamente improbable)
... simplemente pone la propiedad intelectual en un servidor de confianza y el cliente solo tiene la interfaz de usuario (y lógica no confidencial). Esta estrategia tiene sus propios errores. Sin embargo, su historial es mucho mejor que la protección contra copia del cliente.
Nota: Una ventaja es que obtiene un flujo constante de ingresos para "administrar" el software para sus clientes.
El software de licencias aún no es un problema resuelto, o al menos, lo hace de forma segura, sin molestar a los usuarios, y sin invertir en una infraestructura importante no está resuelto.
La ubicación / mecanismo por el que almacena el estado de la licencia es irrelevante en su mayoría; el registro no es más seguro que un archivo de texto; demora unos segundos en obtener acceso al contenido y "esconde" la entrada en algún remoto remanso del registro. No haces mucho para ayudar.
Presumiblemente, su software tiene algún tipo de persistencia (¿sistema de archivos de la base de datos?); puede usar ese mismo mecanismo de persistencia para almacenar el estado de registro.
Por supuesto, cualquier cosa que su software pueda leer / escribir puede ser accedida por personas que intentan obtener acceso no autorizado a su software. Entonces, puedes encriptar el registro; entonces tiene el problema de administrar la clave para ese mecanismo de cifrado; afaik, no hay soluciones robustas para esto ahora mismo.
Por lo tanto, es posible que tenga un "servidor de licencias" en Internet; su software podría leer un identificador único para su máquina (dirección MAC, por ejemplo), enviarlo a su servidor de licencias y hacer que el servidor devuelva el estado de la licencia. De nuevo, esto es bastante trivial de eludir, y ahora está requiriendo que sus usuarios estén en línea para usar su software.
Si su software es remotamente atractivo para los usuarios, los hackers romperán la protección de la clave de licencia en días y publicarán instrucciones detalladas en Internet. Apple hace todo lo posible para proteger el software en el Iphone / Ipad y, sin embargo, las aplicaciones jailbreak lo desbloquean.
En mi opinión, a menos que su software valga ingresos de decenas de millones de dólares, debe hacer la vida lo más fácil posible para sus usuarios, y no preocuparse demasiado por el aspecto de seguridad; use algo de la plataforma (como recomienda @bunting). , o conformarse con un archivo de texto.
Específicamente, yo:
- verificar la presencia de un archivo de licencia válido al inicio de la aplicación
- si el archivo de licencia no está presente, solicite al usuario que ingrese una clave de licencia
- compare esa clave con su clave de licencia
- escriba un archivo "válido" en el sistema de archivos, en el directorio de su aplicación; como alternativa, modifique un archivo de configuración existente.
Esto es trivialmente fácil de romper; entonces podrías dar un paso más.
En primer lugar, las aplicaciones Java son fáciles de descompilar, y un atacante podría leer fácilmente su constante de "licencia". Deberías usar un ofuscador para hacer esto difícil (aunque no imposible).
En segundo lugar, podría encriptar los datos de su licencia local; esto también lo haría más difícil para el hacker totalmente casual. Podría incluir algunos datos locales en el esquema de cifrado para que un hacker no pueda simplemente redistribuir su aplicación con una clave de licencia en funcionamiento (por ejemplo, al multiplicar la clave de licencia por la dirección MAC de la máquina).
En ambos casos, está "cableando" la licencia en la aplicación; hay tableros de anuncios donde los piratas informáticos publican claves de licencia para las aplicaciones, y usted no podría responder de otra manera que no sea al emitir una nueva versión de la aplicación con una nueva clave.