¿Fallos en mi sistema de verificación de licencia propuesto?

1

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?

    
pregunta Sven 19.01.2016 - 09:36
fuente

2 respuestas

3

Su diseño es básicamente el mismo que la mayoría de los sistemas de licencias. Un paso adicional es ofuscar su aplicación, por lo que es más difícil de descompilar.

¿Qué tan seguro es esto? Sin duda dificultará un usuario típico. De hecho, incluso el sistema anterior con una clave incrustada detendrá a la mayoría de los usuarios. Si bien dice que es fácil extraer la clave, es desde el punto de vista de un programador experto, no un usuario típico.

No detendrá a un cracker experto. Si bien no pueden crear un archivo de licencia falso, lo que pueden hacer es modificar el binario de la aplicación y eliminar el código que verifica la licencia. La ofuscación hace esto más difícil, pero ninguna ofensiva es infalible.

Sin embargo, la verdadera preocupación es que solo se necesita un cracker experto para romper su aplicación, y luego pueden poner la versión agrietada en Bittorrent. Esto puede no ser el fin del mundo. Mucha gente todavía comprará la versión oficial. Tal vez solo sean honestos, o no sepan cómo encontrar software descifrado, y muchas personas están preocupadas por los virus que vienen con software descifrado.

En última instancia, si bien su cambio es una mejora de la seguridad, no creo que suponga una diferencia sustancial en cuanto a si su software se puede descifrar. Sin embargo, suena como una excelente mejora de usabilidad.

    
respondido por el paj28 19.01.2016 - 13:06
fuente
2

Dada la respuesta del comentario, diría que es una buena mejora de su arquitectura existente. Específicamente, puede activar alarmas si en su ejemplo aparecen las diferentes ID de máquinas para la misma clave en un período de tiempo cercano, digamos 1 semana o incluso 1 mes (la reinstalación de un hardware roto justo después de la primera instalación puede ocurrir, pero es poco probable). Sin embargo, en este caso, puede ponerse en contacto con el cliente y preguntar.

Como cliente, si me informaran que la licencia se verificará en línea cada pocos días, no intentaré engañar al sistema. Tal vez solo intente hacer que la virtualización funcione, pero puede contrarrestar esto si, por ejemplo, tiene las direcciones MAC. Incluso en un entorno virtual, los complementos de MAC deben ser de alguna manera únicos;)

Aún así, tal vez quieras considerar un sistema de dongle USB, para mí, incluso si es "anticuado", es el sistema más complicado para engañar.

    
respondido por el flohack 19.01.2016 - 11:51
fuente

Lea otras preguntas en las etiquetas