DRM: asegúrese de que el cliente use un SDK legalmente

2

Somos una startup de TI que proporciona a algunos clientes un Kit de desarrollo de software, que puede ser utilizado por el cliente dentro de un entorno específico, de acuerdo con algunos términos y acuerdos legales. Especialmente, el cliente podría llamar a los servicios y métodos públicos de SDK desde su propio código fuente.

Por ejemplo, los acuerdos pueden requerir que el cliente utilice el SDK solo en UN entorno (en una aplicación, por ejemplo).

A continuación, nos gustaría monitorear el SDK para asegurarnos de que el cliente respeta esta restricción, y si usa el SDK en un entorno para el que no compró el SDK, queremos poder bloquear el acceso al SDK, por lo que no pudo usarlo.

Sé que varias compañías implementan tales características para los marcos y el SDK que proporcionan, pero no pude encontrar nada en la web sobre cómo configurar un mecanismo de este tipo ...
Nos gustaría usar alguna solución estándar, incluso si es de pago, en lugar de construir algo desde cero ...

¡Muchas gracias a cualquiera que nos ilumine!

Aclaración / actualización Nuestro SDK no proporciona servicios web, solo proporciona métodos locales a los que el cliente puede llamar después de instalar el SDK.
En realidad, solo hay un método basado en la solicitud de http en el SDK. Es el punto de entrada del SDK, un método llamado setUp() que toma esencialmente dos parámetros: el nombre de usuario y contraseña del cliente. Por lo tanto, lo más importante es que el cliente tenga que llamar a este método, que verifica sus credenciales a través de la solicitud de http a nuestro servidor. Si la autenticación es exitosa, entonces el cliente puede usar los métodos locales del SDK, de lo contrario no puede.

Editar Acabo de descubrir el concepto de clave de API , al principio pensé que sería una solución potencial para este problema, pero parece que que no se adapta al contexto del problema que estoy tratando de resolver, gracias a @Matthew.
Ahora me pregunto si un cumplimiento de licencias sería una solución adecuada. En realidad estoy pensando en la forma en que el equipo Aspose gestiona las licencias que otorgan a sus clientes. Siguiendo este enlace, parece que administran el DRM de forma bastante estricta ...
Y una última cosa, ¿cuál es la diferencia entre una licencia y una clave de producto ? Conocer las ventajas y desventajas de cada una de estas soluciones podría ayudarme mucho a elegir el sistema de seguridad adecuado para mi API.

    
pregunta programmersn 06.04.2017 - 22:22
fuente

2 respuestas

6

Es esencialmente un problema legal: desea controlar lo que se está ejecutando en el dispositivo de un cliente, lo que significa que necesitará la cooperación del cliente.

Para una empresa que proporciona una API basada en la web (por ejemplo, su SDK realiza algún tipo de interfaz con su servicio basado en la web, posiblemente implementando algún cifrado o un método de transporte especial), esto se debe a la supervisión del servicio, en busca de patrones inusuales. . Puede facturar por solicitud (no importa de dónde provienen las solicitudes, pero si de repente comienzan a usar más, usted obtiene más dinero). Puede buscar cambios en los elementos clave que se envían (si de repente obtiene datos que reflejan los hosts de Windows y Linux, puede estar bastante seguro de que el cliente está utilizando dos copias en sistemas diferentes, y bloquear una).

En su caso, sin embargo, según la pregunta actual, no tiene interacción con las solicitudes individuales (interactúa una vez, cuando se inicializa el marco, pero luego se permite su uso a través de algún método). Es como si su SDK es un archivo de imagen que se le ha pedido al cliente que use solo en un lugar. Si el cliente lo copia, no lo sabes. Si lo ejecutan en una máquina diferente, no lo sabes. Si ejecutan varias aplicaciones en una sola máquina, todas las utilizan, no lo sabe.

Entonces, ¿cuáles son tus opciones?

  1. llave de hardware. Hecho correctamente, restringen el uso del software a una máquina específica. Esto generalmente requiere mover partes de su software al dongle, de lo contrario se vuelve trivial eliminar cualquier código de verificación de su software. Esto tampoco impide que múltiples aplicaciones en el mismo sistema utilicen el software; si se puede usar legítimamente desde una, es posible copiar los datos que se envían a la mochila desde otra.
  2. Cambie su modelo para que esté basado en web / red. Ahora puede ver lo que está pasando, pero puede limitar los usos de su software. Dependiendo de lo que haga, es posible que no sea adecuado para la latencia que esto introduciría, o puede haber limitaciones en cuanto a dónde se pueden enviar los datos de su cliente (por ejemplo, los datos de la UE a los servidores de EE. UU. Pueden ser problemáticos, a veces).
  3. Cambie su modelo de precios. Permita que los clientes utilicen el software todo lo que quieran, pero cargue más por adelantado. Haga que el software sea gratuito y cargue en una base de soporte. Cargue menos, para alentar a las personas a comprar copias múltiples si lo usan en varios lugares. Estos son todos los modelos que usan varias compañías, con diversos grados de éxito.
  4. Sea realmente selectivo con los clientes. Si no confía en que sus clientes cumplan con los términos de su licencia, la única forma realmente segura de evitar el abuso es permitir que solo las personas de confianza tengan acceso. Requiera auditorías de "software en ejecución" de terceros en las redes de los clientes, buscando el uso abusivo de su código. Nunca he visto a una compañía tener éxito a gran escala con este modelo, pero puede aplicarse a algunas áreas especializadas, como los sistemas de control sensible.

Algunas compañías grandes han usado algunos de estos: Microsoft, por ejemplo, usa autenticación en línea basada en la web. Después de una revisión inicial, las aplicaciones de Windows / Office hacen ping en casa cada cierto tiempo para ver si han sido desautorizadas. Red Hat cobra por el software (pero puede obtener la mayoría de forma gratuita), pero cobran más por el soporte y verifican los detalles de las licencias con las solicitudes de soporte. Hay algunos paquetes de software especializado (especialmente en campos académicos) donde solo se puede acceder a ellos después de asistir a la capacitación sobre cómo usarlos, lo cual es esencialmente una forma de ser selectivo con los clientes; la teoría es que reduce el "trivial" Preguntas de nuevos usuarios. NXP (una gran compañía de semiconductores) ofrece dongles para algunas de sus herramientas de desarrollo, sobre la base de que no todos los usuarios tienen conectividad de red.

Dependiendo de cómo funcione su código de inicialización, incluso es posible que un cliente realmente inescrupuloso pueda simplemente mirar el valor de retorno de sus servidores y proporcionarlo ellos mismos. Este sería el caso si el método devolviera una respuesta verdadera / falsa cuando provisto de una combinación de nombre de usuario / contraseña, pero también si devolvió algún valor fijo o predecible (hash de la hora actual, o una cadena predeterminada).

    
respondido por el Matthew 10.04.2017 - 15:19
fuente
0

La respuesta de @Matthew arriba es muy buena, pero omite una sugerencia que ha funcionado durante siglos: contratos.

Escriba su contrato de venta para restringir el uso de la manera que mejor se adapte a sus intereses comerciales, y en el contrato establezca que se reserva el derecho de usar mensajes web para supervisar el cumplimiento del contrato y proporcionar cargos adicionales o la rescisión del contrato para su uso fuera de los términos de la licencia. Considere incluir el idioma reservándose el derecho de deshabilitar de forma remota su SDK en caso de incumplimiento. Su abogado debe poder redactar un conjunto aceptable de términos.

Si bien probablemente no estará obligado a especificar todos los datos que posiblemente recopilará en el contrato, querrá incluir datos de identificación cifrados, como el ID de usuario, MAC, dirección IP, nombre de la computadora, CPU serial. número, número de ID de instalación, número de contrato / licencia, nombre de la aplicación, versión del proyecto / archivo, fecha / hora, número de líneas procesadas, etc. Estas son todas las cosas que se pueden mostrar en la corte para ayudar a verificar su reclamo de que su software se está utilizando más allá de los términos acordados por sus clientes.

Depende de usted supervisar los cambios en los patrones de uso que pueden indicar una infracción del contrato. Sin embargo, en lugar de llamar al abogado corporativo, le recomiendo que primero contrate a su personal de ventas para que se comunique con sus clientes y les ofrezca términos de licencia con mayor capacidad. En general, es más rentable extender a sus clientes un argumento de venta cuidadosamente redactado que amenazarlos con demandas judiciales.

    
respondido por el John Deters 13.04.2017 - 22:02
fuente

Lea otras preguntas en las etiquetas