en mi empresa, la mayoría del software está protegido por un par de sistemas de licencias anticuados diferentes. Por ejemplo, después de la configuración, el usuario debe iniciar otro programa que le indique su ID de máquina calculada. Necesita enviarnos esta identificación, que está incrustada en un archivo, cifrada y enviada con otra configuración, que solo copia el archivo en la carpeta correspondiente. Esto no solo genera una gran cantidad de carga de trabajo y un obstáculo para el usuario, la clave de descifrado debe integrarse en nuestro software y puede extraerse fácilmente, lo que permite al usuario eludir esta medida de "seguridad".
Después de desarrollar mi primera aplicación para esta empresa, me gustaría desarrollar un prototipo para un sistema de licencias más avanzado con mi propio servicio. Estoy buscando ejecutar mi plan general, estoy seguro de que he pasado por alto algunas cosas y me gustaría que se las mencionara antes de llevarlo a la gerencia ...
Plan:
- El cliente recibe automáticamente una clave de licencia después del registro
- El cliente ingresa esta clave de licencia en mi aplicación
- La aplicación envía esta clave con información de la máquina y envía una solicitud
GET_LICENSE
a nuestro servidor - El servidor comprueba si la clave de licencia está en nuestro sistema y devuelve un mensaje pgp cifrado al cliente
- El cliente utiliza su clave pública incorporada para verificar el archivo de licencia y la fecha de firma (que debería ser segura, (siempre que se haya firmado por nuestro lado) ( enlace ))
- Si no hay conexión a Internet, inicie la aplicación si el archivo de licencia está disponible y la fecha de firma no es anterior a n días
- Actualice el archivo de licencia cada vez que se realice una conexión a Internet
Ahora me doy cuenta de que no existe una seguridad completa, pero esto debería brindarnos mucha más seguridad y beneficiar a nuestros clientes honestos con una experiencia más cómoda que antes. Solo se requerirá una conexión a Internet el primer inicio y luego cada dos días, pero nuestra aplicación ya necesita una conexión para la mayoría de las tareas. Ahorramos las horas de trabajo para la creación de la licencia manual y la comunicación con el cliente, al tiempo que le permitimos que se registre y utilice nuestra aplicación sin importar el horario de oficina ni la disponibilidad. No se pudo extraer información de credenciales de nuestra aplicación.
Contras?