Poiché stai per eseguire un sistema operativo open source, l'attestazione non funzionerà in modo affidabile. Il TPM sarà in grado di attestare fino al caricatore del sistema operativo, ma dopo questo, l'attestazione diventa difficile in quanto il software open source è facile da modificare.
Suggerirei di utilizzare la chiave di identità di attestazione, per creare una firma di attestazione remota (TPM_Quote) e quindi utilizzare un servizio cloud per ospitare la maggior parte delle applicazioni.
L'app client funge semplicemente da "interfaccia stupida" al server cloud e TPM_Quote viene inviato al server come "accesso". Questo può anche essere usato per negoziare una "chiave di sessione" che solo il TPM e il tuo server possono utilizzare per crittografare / decrittare.
Questo significa che un cracker può copiare la tua applicazione fino a quando le mucche tornano a casa, non importa, dato che il tuo server non accetterà un TPM_Quote da un sistema manomesso.
Ciò semplifica anche la revoca delle licenze in caso di uso improprio, ad esempio se un cliente abusa, ad esempio, di una licenza personale prestando l'accesso RDP / VNC al computer a persone esterne ai locali dei clienti.
Si noti che l'applicazione non crittografata deve ancora essere disponibile per il sistema operativo host, quindi indipendentemente dalle funzionalità del TPM che si utilizzano, sarà comunque crackabile fintanto che la verifica viene eseguita localmente. Anche se si utilizza l'attestazione con memoria sigillata e memoria a tendina, un cracker sarà ancora in grado di decifrare l'applicazione, poiché la memoria sigillata e la memoria a tendina possono contenere solo dati, non codice eseguibile. (sì, è possibile avere un codice eseguibile ad esempio per la memoria a tendina, ma affinché il sistema operativo host sia in grado di eseguirlo, è necessario spostarlo all'esterno della memoria a tendina).
Ecco perché è necessario utilizzare un servizio cloud, in modo da poter applicare lo stato non manomesso del computer client da una posizione centrale a cui un cracker non può accedere fisicamente e quindi ospitare l'applicazione su questa posizione, quindi anche se il cracker ha accesso completo al codice sorgente lato client, non possono usufruire del servizio in questione.