TPMを使用して、既存のソフトウェアプロジェクトにライセンスシステムを追加することを委託されました。 TPMを使用してコンピューター(GNU/Linux、おそらくCentOS/RHEL/Fedoraを実行している)を一意に識別し、そのコンピューターでのみライセンスファイルを使用できるようにするという考え方です。 TPMについて知る前に、MACアドレス、マザーボードID、および存在するその他のシリアルコードの組み合わせを使用してコンピューターを一意に識別しようとしましたが、それらのほとんどは改ざん防止されていませんでした。
TPMについて読んでいましたが、TPMが提供しているように見える複数の機能について少し混乱しています。私の知る限りでは、承認キーまたは証明IDキーのいずれかを使用することはkeyここ(しゃれた意図)ですが、それ以外はどのようにすればよいのか、または私のアプローチでは実際に正しいです。たぶん、私が探していることを行う簡単な方法があるでしょう。
オープンソースOSを実行しようとしているため、認証は確実に機能しません。 TPMはOSのローダーまで認証できますが、その後オープンソースソフトウェアは簡単に変更できるため、認証は困難になります。
アテステーションIDキーを使用してリモートのアテステーション署名(TPM_Quote)を作成し、クラウドサービスを使用してアプリケーションのほとんどの部分をホストすることをお勧めします。
クライアントアプリはクラウドサーバーへの「ダムインターフェース」として機能し、TPM_Quoteは「ログイン」としてサーバーに送信されます。これは、TPMとサーバーのみが暗号化/復号化に使用できる「セッションキー」のネゴシエーションにも使用できます。
これは、サーバーが改ざんされたシステムからのTPM_Quoteを受け入れないため、クラッカーが牛が帰宅するまでアプリケーションをコピーできることを意味します。
これにより、たとえば顧客がRDP/VNCによるコンピューターへのアクセスを顧客の敷地外の個人に貸し出すなどして、個人用ライセンスを悪用した場合など、ライセンスが悪用された場合にも簡単に失効させることができます。
暗号化されていないアプリケーションは引き続きホストOSで使用できる必要があるため、使用するTPM機能に関係なく、検証がローカルで行われている限り、クラック可能です。封印されたストレージとカーテン付きメモリで認証を使用しても、封印されたストレージとカーテン付きメモリにはデータのみが含まれ、実行可能なコードは含まれないため、クラッカーはアプリケーションをクラックできます。 (はい、たとえばカーテンメモリに実行可能コードを含めることができますが、ホストOSがそれを実行できるようにするには、カーテンメモリの外にコードを移動する必要があります)。
クラウドサービスを使用する必要があるのはこのためです。クラッカーが物理的にアクセスできない中央の場所からクライアントコンピューターの改ざんされていない状態を強制し、クラッカーが完全な場合でも、この場所でアプリケーションをホストできます。クライアント側のソースコードにアクセスする場合、問題のサービスを利用できません。