TPM2「オブジェクトコンテキスト」とは何ですか?

TPM2「オブジェクトコンテキスト」とは何ですか?

マニュアルページtpm2_load次の例があります。

オブジェクトを読み込むには、まず基本オブジェクトの下にオブジェクトを作成する必要があります。したがって、最初のステップはメインオブジェクトを作成することです。

tpm2_createprimary -c primary.ctx

ステップ2は、基本オブジェクトの下にオブジェクトを作成することです。

tpm2_create -C primary.ctx -u key.pub -r key.priv

tpm2_createprimaryで作成して使用するPrimary.ctxファイルは正確に何ですかtpm2_create?マニュアルページtpm2_createprimaryこれを「オブジェクトコンテキスト」と呼びます。

-c, --key-context=FILE:

生成されたメインオブジェクトのオブジェクトコンテキストを格納するためのファイルパスです。

以下を使用してファイルの内容に関する情報を取得できますtpm2_print -t TPMS_CONTEXT primary.ctx

version: 1
hierarchy: owner
handle: 0x80000000 (2147483648)
sequence: 128
contextBlob:
        size: 1506

しかし、私はまだ私が見ているものを理解していません。この「オブジェクトコンテキスト」ファイルとは何ですか?なぜ必要なのですか?

ベストアンサー1

私は現在これについても研究中であり、これまで私が理解したところによると、「コンテキスト」は本質的にオブジェクトの暗号化された形式であるか、またはTPM(およびTPMのみ)がそのオブジェクトを再派生するために使用できる情報です。 TPMの保護されたハードウェアスペース。

これらの機能が必要な理由は、TPMで動作するRAM/メモリの量が非常に少ないため、特定のオブジェクトに関連するTPMで実行したい操作を実行するには、そのオブジェクトを呼び出す必要があるためです。タスクを実行したいときにTPMを再ロードします。たとえば、TPMが次の機能のみをサポートするのは珍しいことではありません。サム特定の時点で実際にロードされたオブジェクトのおおよその数。

暗号化されていないキー全体をTPMの外部のファイルに保存すると、TPMの目的の一部が無効になります。なぜなら、これらの鍵を使用する暗号化タスクは、タスクの認証ポリシーを実施するTPMの能力を超えてTPMの外部で実行できるからです。たとえば、正しいパスワードを使用してのみ実行できます。したがって、これらのオブジェクトコンテキストファイル自体には、TPMだけを復号化できる暗号化されたデータが含まれているようです。

さらに、このように保存されたコンテキストは、TPM実行中の単一の電源装置の寿命中にのみ使用できるように見えます。つまり、電源リセット後は使用できなくなります。これは、TPMの揮発性RAM内の「非永続エンティティ」に適用されるためです。不揮発性RAMに保存されているオブジェクトのみが電源リセット時に安定して使用できます。tpm2_evictcontrolこれには、リセットの間に保存/消去できる「シリアル化された永続的なハンドル」を生成するためのツールと、それらの間で使用される揮発性RAMが含まれますが、100%確信できません。

私の言葉が正しいか、まだ100%確信できません。ここでより明確な結論を下すことができれば、この答えを更新します。


いくつかの参考資料:

パート1~のTPM 2.0ライブラリの仕様定義するコンテキスト次のように:

4.17 コンテキスト

同じタイプの他のオブジェクトと区別するため、またはデータオブジェクトのあるバージョンを別のバージョンと区別するために、データオブジェクトに関する限られた情報を提供するデータの集合。

これ「TPM 2.0実用ガイド」この本(無料ダウンロード、CC BY-NCライセンス)には、次の内容が含まれています。

18章294ページ

TPMの内部メモリは限られているため、オブジェクト、セッション、およびシーケンスをメモリの内外に動的に置き換える必要があります。たとえば、Microsoftエミュレータで実装されたTPM 2.0のリファレンス実装では、3つのオブジェクトスロットのスペースしか許可されていません。オブジェクトスロットは、オブジェクトまたはシーケンス用の内部TPMメモリです。 3つのセッションスロットもあります。

ページ 295:

TPM2_ContextSave一時エンティティのコンテキストを保存し、そのエンティティのコンテキストを返します。返されたコンテキストは暗号化され、整合性が保護されます。これを行う方法は、コンテキストが保存されたまったく同じTPMにのみロードされるようにすることです。保存されたコンテキストは他のTPMにロードできません。

8章100ページに戻ります。

非持続的なエンティティは、電源サイクル全体にわたって持続しません。 (正確に言うと、仕様で言及されているように、TPMリセット(再起動)では持続しません。TPM再起動(休止状態から再開)またはTPM再開(スリープモードで再開)を介して持続します。)エンティティは保存できますあります(参照)。リソースTPM2_ContextSave)、TPM暗号化メカニズムは、電源を入れ直した後に保存されたコンテキストがロードされるのを防ぎ、ボラティリティを適用します。

おすすめ記事