TPM キーの管理と使用

前述のように、証明書関連のコンテンツには、ソフトウェアだけでなくハードウェアにも多くの用途があります。今回はTPM関連の内容についてお話します。

1.TPMの紹介

1.1 背景

TCG のハードウェア ベースのセキュリティ アーキテクチャは、1990 年代後半に増加する高度なマルウェア攻撃アプリケーションに対応して開発されました。当時も今も、PC クライアントに対するネットワーク攻撃に対抗する最も一般的な方法は、ウイルス対策ソフトウェアを使用することです。

**純粋なソフトウェア防御の根本的な欠陥は、ソフトウェア自体が効果的に検証できないことです。**マルウェアが PC 上のウイルス対策ソフトウェアと同じ実行権を取得すると、プログラムを閉じてその存在を隠すことができます。ウイルス対策ソフトウェアが検出しにくい方法でファームウェアとブートローダーを標的にすることで、マルウェアはより巧妙になります。

ソフトウェア構成を安全に検証できるようにするために、トラステッド コンピューティング プラットフォームには、システム メモリの外部でソフトウェアの状態を記録および検証するための場所が必要です。コンピューター セキュリティの世界では、メイン メモリ ソフトウェアを検証するためのハードウェア セキュリティ監視の概念が何十年も前から存在しています。ただし、TCG が 1 ドル未満のハードウェア モジュールを設計したことは重要です。これにより、広く利用できるようになります。このように、TPM は、プラットフォーム ソフトウェアによって発行されたコマンドにのみ応答するパッシブ チップとして設計されており、プラットフォーム ソフトウェアがそれ自体と一般的な暗号化モジュールを認証するのに役立ちます。

20232614132645.png
1.2 機能

TSS (主にオペレーティング システムとアプリケーション ソフトウェアが TPM を使用するためのインターフェイスを提供する、トラステッド コンピューティング プラットフォーム上の TPM をサポートするソフトウェア) を介して、トラステッド コンピューティング プラットフォーム上のアプリケーションに TPM によって提供されるコア機能は次のとおりです。 、ストレージとレポート、リモート認証、データ保護、キー管理。

  • 従来のシステムでは、鍵や認証情報などのセキュリティ情報はディスクにしか保存できず、非常に安全ではありませんでした。TPM セキュリティ チップを搭載したシステムでは、いくつかのキー キーが TPM チップ内に格納されています. 現時点では、攻撃者は TPM を突破することによってのみシステムの保護を突破できます. はるかにコストがかかり、突破するのが困難です.ハードディスクよりもチップ。TPM はシステムの信頼性の最低レベルとなり、システム全体が信頼されるための基盤を提供します。

  • TPM の主な目的は、データの暗号化と復号化 (シール/アンシール) です. これらの TPM 暗号化されたデータは、この TPM チップによってのみ復号化できるため、データを保護するためにこの TPM チップでデータバインディングの目的を達成します. このデータは、暗号化された TPM チップなしでは解読できません。

1.3 開発

Trusted Computing Group (TCG) は 2003 年 3 月に設立されました。TCG は 2003 年に TPM 仕様のバージョン 1.2 をリリースし、TPM 仕様バージョン 2.0 のリビジョン 1.07 が 2014 年にリリースされました。パブリック レビューに公開され、以前にリリースされた主要な TPM 仕様の更新されたライブラリ仕様を提供し、TPM の歴史の飛躍を実現しました。 . TPM 仕様リビジョン 1.38 は TPM2.0 バージョンに属し、2016 年 9 月にリリースされました。

トラステッド コンピューティングの発展に伴い、トラステッド プラットフォーム モジュールは必ずしもハードウェア チップの形であるとは限りません。特に、リソースが比較的限られているモバイルおよび組み込み環境では、ARM TrustZone に基づくなど、トラステッド実行環境 (TEE) に関する研究が比較的ホットです。 、スマートカードなどにより、信頼できるコンピューティング環境を実現できます。もう 1 つのホットスポットは Physical Unclonable Function (PUF) であり、トラステッド コンピューティングに物理的なセキュリティ機能を提供し、キー セキュリティ ストレージ、認証、ルート オブ トラストなどの機能を実現し、モノのインターネット、ウェアラブル デバイス、 BYOD には優れた利点があります。

2.鍵管理

2.1 鍵の生成と使用

生成

20230214-134036.png

  1. キー ジェネレーターはキー (対称または非対称) を生成するために使用され、乱数ジェネレーターによって生成された乱数は、キー ジェネレーターがキーを生成するためのキー入力パラメーターとして使用されます。

  2. TPM2_Create と TPM2_CreatePrimary は、テンプレートからすべての種類のキーを作成できます。

微信picture_20230214142450.jpg

使用

スクリーンショット-2023-02-15-133126.png

2.2 キータイプ

移行可能なキー: ある TPM で生成されたキーを別の TPM に転送して使用できます

移行不可能なキー: 1 つの TPM で生成されたキーは、その TPM でのみ使用できます

キー名 効果 タイプ 移行プロパティ 生成タイミング 例証する
承認キー (EK) 1. TPM の ID は、通常、承認証明書と一緒に使用されます 2. ID 証明キー (AIK) を生成します 3. TPM 所有者の認証済みデータを復号化します 4. データの暗号化と署名は不要です 非対称鍵 移行不可能なキー TPM生産時 それだけ
プラットフォーム ID 認証キー (AIK) 1. EK の代わりにプラットフォーム証明を提供します。 2. これは、TPM によって生成されたデータ (PCR 値など) に署名するために特別に使用されます。AIK によって署名されたすべてのエンティティは、それらが TPM 3 によって処理されたことを示します。対応する AIK 証明書があります。 非対称鍵 移行不可能なキー EK は PCA (プライベート CA) によって生成されます。 各ユーザーは複数の AIK を持つことができます
ストレージ ルート キー (SRK) データとその他の鍵を暗号化する 非対称鍵 移行不可能なキー tpm オーナーのビルド時に生成されます 1. これは特別なストレージ キーです 2. ストレージ ルート オブ トラスト (RTS) とも呼ばれるすべてのユーザー データを管理します 3. TPM は 1 つだけです
収納キー 1. データやその他の鍵を暗号化する 2. 署名には使用できない 非対称鍵 移行不可能なキー、移行可能なキー 他のキーを格納するためのキー
署名鍵 アプリケーションのデータと情報に署名する 非対称鍵 移行不可能なキー、移行可能なキー 1. 移行可能な署名キーは、非 TPM によって生成されたデータにのみ署名できます 2. 移行不可能な署名キーは、TPM 内で生成されたデータに署名できます
バインドキー TPM の外部の任意のデータを暗号化して保護するために使用され、通常は少量の暗号化されたデータ (対称キーなど) を使用します。 非対称鍵 移行可能なキー TPM 公開キーで暗号化されたデータは、TPM を使用してのみ復号化できます。つまり、情報は特定の TPM にバインドされます。
封印された鍵 作成されると、TPM は構成値とファイル ハッシュのスナップショットを記録します。封印されたキーは、現在のシステム値がスナップショット値と一致する場合にのみ、封印を解除または解放できます。 非対称鍵 現在の状態と一致する場合にのみ、復号化された値を返します
派生キー 1. TPM の外部で生成される 2. 署名または暗号化に使用される 3. 使用される場合にのみ TPM に読み込まれる 4. プラットフォーム間でデータを転送する必要がある場合に使用される 非対称鍵 移行可能なキー
認証キー TPM を含む伝送セッションの保護 (TPM 間の伝送や、通常の PC と TPM を搭載した信頼できるプラットフォームとの間のリモート通信など) 対称キー

2.3 安全な保管

スクリーンショット-2023-02-15-133701.png

  1. EK と SRK のみが TPM 内に永続的に保存されます

  2. TPM スペースは限られており、一部のキーは暗号化された形式で外部に保存されます

  3. 外部キーを使用する場合、KCM (Key Cache Management Mechanism) はキーを TPM の保護領域に読み込みます。TPM は上位層のキーで復号化する必要があります。したがって、ツリー構造の深さは深すぎてはなりません。

  4. チェーン キー構造にはストレージ キーがあり、ユーザー パスワードに関連付けられています。ユーザーがパスワードを入力すると、そのサブストレージ キーを読み込むことができますが、ユーザーの他のすべてのキーは非ストレージ キーであり、サブストレージ キーの下に格納されます。

  5. サブストレージ キーは、ユーザーの起動時にユーザー パスワードを介して読み込まれますが、サブ ストレージ キーがチップに読み込まれると、他のキーを読み込むためにパスワードは必要なくなります。

3. 申請

3.1 データシーリング

シーリング: M を情報、K を対称キー、Vpcr を TPM の PCR Gpcr 値のセットとします。TPM の公開鍵と秘密鍵のペアは、Kpub と Kpri です。封印作業は、

  • M を K で暗号化して K{M} を得る

  • Vpcr と K を Kpub で暗号化して Kpub{Vpcr,K} を得る

M を取得する場合は、まず K を取得する必要があり、TPM は Kpri を使用して Kpub{Vpcr,K} を復号化する必要があります。この時点で、TPM は Gpcr の値が Vpcr と等しいかどうかをチェックします。等しい場合、TPM は K を提供します。それ以外の場合、K は提供されません。

たとえば、ユーザーは自分のコンピューターに自分のログを保持し、他のプログラムやコンピューターに読み取られることを望んでいません。この時点で封印キーを使用して封印操作を実行すると、コンピューター上の変更されていないログ ソフトウェアによってのみログを開くことができることが保証されます。

したがって、ログが別のコンピュータに送信された場合でも、ユーザーのログ ソフトウェアがウイルスによって改ざんされた場合でも、ログを復号化するためのキーを取得できません。

3.2BitLocker の復号化プロセス

これは、BitLocker の透過的な操作モードです。このモードでは、TPM ハードウェアを利用して透過的なユーザー エクスペリエンスを提供します。いわゆる透過性とは、システム ディスクが暗号化され、スタートアップ コンポーネントの変更が検出されない場合、ユーザーがコンピュータを意識することなく通常どおり使用でき、TPM ハードウェアによって提供されるキーを介して Windows に通常どおりログインできることを意味します。 .

セキュリティを強化するために、ユーザー認証モードと併用できます。

ユーザー認証モード: このモードでは、ユーザーは起動前環境での認証のために起動 PIN またはパスワードを提供する必要があります。

20232714132757.png

FVEK: VMK によって暗号化されてディスクに保存される、暗号化されたディレクトリのキーを表します。

VMK: FVEK を暗号化するためのキーで、SRK によって暗号化されてディスクに格納されます。

図に示されている起動シーケンスは、次のように説明されています。

  1. BIOS が TPM を起動して初期化します。また、ファームウェア、ブート パーティション、およびブートローダーの機密コンテンツを測定し、結果を PCR グループに入れます。

  2. PCR 値が期待値と一致する場合、TPM はストレージ ルート キー (SRK) を使用してボリューム マスター キー (VMK) を復号​​化します。

  3. 暗号化された FVEK をボリュームから読み取り、復号化された VMK を使用して復号化します。

  4. ディスク セクタにアクセスする場合、復号化には FVEK が使用されます。

  5. 復号化されたデータをアプリケーションとプロセスに提供します

しかし、ハッカーが起動環境を変更したり、ハードディスクを別のマシンに置いたりすると、データを取得できなくなります。

材料

  1. https://opensecuritytraining.info/IntroToTrustedComputing_files/Day2-2-data-storage.pdf

  2. GitHub - leeehui/a-practical-guide-to-tpm2-book-cn: 「tpm2 の実用的なガイド」のメモを読む

  3. tools_jianming21 のブログを使用した tpm2-tools-CSDN blog_tpm2_rsadecrypt -c key.ctx -o msg.ptext msg.enc

  4. Bitlocker_LLLibra146 のブログの使用と原則 - CSDN blog_bitlocker の原則

  5. トラステッド プラットフォーム モジュール (TPM) の過去と現在_U.2 SSD ブログ - CSDN ブログ

  6. TPMの概要_fgupupupのブログ - CSDNブログ_TPMの機能とは

やっと

私の記事が気に入ったら、私の公式アカウント (プログラマー Malatang) をフォローしてください。

私の個人的なブログ: https://shidawuhen.github.io/

以前の記事のレビュー:

  1. デザインパターン

  2. 募集

  3. 考え

  4. 保管所

  5. アルゴリズムシリーズ

  6. 読書メモ

  7. 小さなツール

  8. 建築

  9. 通信網

  10. 行く言語

おすすめ

転載: blog.csdn.net/shida219/article/details/129130591
おすすめ