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.