¿Cómo usar TPM para identificar una computadora con fines de licencia?

4

Se me ha encomendado el uso de TPM para agregar un sistema de licencias a un proyecto de software existente. La idea es usar TPM para identificar de manera única la computadora (que ejecuta GNU / Linux, probablemente CentOS / RHEL / Fedora) para que el archivo de licencia solo se pueda usar en esa computadora. Antes de conocer el TPM, íbamos a utilizar una composición de la dirección MAC, la identificación de la placa base y otros códigos de serie presentes para intentar identificar de forma única la computadora, pero la mayoría de ellos no estaban a prueba de manipulaciones.

He estado leyendo sobre TPM pero estoy un poco confundido acerca de las múltiples características que parece ofrecer. Por lo que sé, usar la Clave de aprobación o la Clave de identidad de certificación es la clave aquí (juego de palabras intencionado), pero aparte de eso, no estoy seguro de cómo debo proceder o incluso si Estoy realmente correcto en mi enfoque. Tal vez haya una forma más fácil de hacer lo que estoy buscando.

    
pregunta José Tomás Tocino 21.07.2016 - 19:47
fuente

1 respuesta

1

Como va a ejecutar un sistema operativo de código abierto, la certificación no funcionará de manera tan confiable. El TPM podrá certificar hasta el cargador del sistema operativo, pero después de eso, la certificación se vuelve difícil ya que el software de código abierto es fácil de modificar.

Le sugeriría usar la clave de identidad de certificación, para crear una firma de certificación remota (TPM_Quote) y luego usar un servicio en la nube para alojar la mayoría de las partes de su aplicación.

La aplicación cliente simplemente actúa como una "interfaz tonta" para el servidor en la nube, y el TPM_Quote se envía al servidor como un "inicio de sesión". También se puede usar para negociar una "clave de sesión" que solo el TPM y su servidor pueden usar para cifrar / descifrar.

Esto significa que un cracker puede copiar tu aplicación hasta que las vacas lleguen a casa, no importará, ya que tu servidor no aceptará una TPM_Quote de un sistema manipulado.

Esto también hace que sea fácil revocar las licencias si se usan incorrectamente, por ejemplo, si un cliente por ejemplo está abusando de una licencia personal al otorgar acceso RDP / VNC a la computadora a personas fuera de las instalaciones del cliente.

Tenga en cuenta que la aplicación sin cifrar aún debe estar disponible para el sistema operativo host, por lo que, independientemente de las características de TPM que use, seguirá siendo crackable siempre que la verificación se realice localmente. Incluso si utiliza la certificación con almacenamiento sellado y memoria con cortinas, un cracker aún podrá agrietar la aplicación, ya que el almacenamiento sellado y la memoria con cortinas solo pueden contener datos, no código ejecutable. (Sí, puede tener código ejecutable en, por ejemplo, memoria con cortinas, pero para que el SO host pueda ejecutarlo, debe moverlo fuera de la memoria con cortinas).

Es por eso que necesita usar un servicio en la nube, de modo que pueda imponer el estado no manipulado del equipo cliente desde una ubicación central a la que un cracker no puede acceder físicamente, y luego alojar la aplicación en esta ubicación, incluso si cracker tiene acceso completo al código fuente del lado del cliente, no pueden aprovechar el servicio en cuestión.

    
respondido por el sebastian nielsen 22.07.2016 - 02:49
fuente

Lea otras preguntas en las etiquetas