当您要运行开源操作系统时,证明将无法可靠地工作。TPM 将能够证明到操作系统的加载程序,但在那之后,证明变得困难,因为开源软件很容易修改。
我建议使用证明身份密钥来创建远程证明签名 (TPM_Quote),然后使用云服务来托管应用程序的大部分内容。
客户端应用程序只是充当云服务器的“哑接口”,TPM_Quote 作为“登录”发送到服务器。这也可用于协商只有 TPM 和您的服务器才能用于加密/解密的“会话密钥”。
这意味着破解者可以复制您的应用程序,直到奶牛回家,这无关紧要,因为您的服务器不会接受来自被篡改系统的 TPM_Quote。
如果许可证被滥用,这也使得撤销许可证变得容易,例如,如果客户滥用个人许可证,将 RDP/VNC 访问权出借给客户场所以外的个人。
请注意,主机操作系统仍然需要未加密的应用程序,因此无论您使用哪种 TPM 功能,只要在本地完成验证,它仍然可以破解。即使您使用带有密封存储和隐藏式内存的证明,破解者仍然能够破解应用程序,因为密封存储和隐藏式内存只能包含数据,而不能包含可执行代码。(是的,您可以在例如帘式内存中拥有可执行代码,但是要使主机操作系统能够执行它,您需要将其移到帘式内存之外)。
这就是为什么你需要使用云服务,这样你就可以从一个黑客无法物理访问的中心位置强制客户端计算机的非篡改状态,然后在这个位置托管应用程序,所以即使黑客已经完成了访问客户端源代码,他们无法利用相关服务。