「Trusted Platform Module」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎ドライバー: == Using TPM 1.2 ==の下に移動)
(→‎PCR レジスタへのアクセス: ユニファイドカーネルイメージに変更)
 
(2人の利用者による、間の20版が非表示)
1行目: 1行目:
 
[[Category:セキュリティ]]
 
[[Category:セキュリティ]]
[[Category:他のハードウェア]]
+
[[Category:ハードウェア]]
 
[[en:Trusted Platform Module]]
 
[[en:Trusted Platform Module]]
  +
[[pl:Trusted Platform Module]]
Trusted Platform Module (TPM) はセキュアな暗号プロセッサの国際規格です。暗号鍵をデバイスに統合することによりハードウェアを保護する専用のマイクロプロセッサとして設計されています。
 
  +
{{Related articles start}}
  +
{{Related|Rng-tools}}
  +
{{Related|自己暗号化ドライブ}}
  +
{{Related|スマートカード}}
  +
{{Related|Trusted Platform Module/1.2}}
  +
{{Related articles end}}
  +
Trusted Platform Module (TPM) は安全な暗号プロセッサの国際規格です。これは暗号鍵をデバイスに統合することによりハードウェアを保護する専用のマイクロプロセッサです。
   
実際に TPM を Secure Boot や Key Storage など様々なセキュリティアプリケーションで使うことができます。
+
実際に TPMはセキュアブート、キーストレージ、乱数生成など様々なセキュリティアプリケーションで使うことができます。
   
当然ながら TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェア TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。
+
TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェア TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。
   
 
== バージョン ==
 
== バージョン ==
   
  +
TPM 仕様には 2.0 と 1.2 という 2 つの非常に異なるものがあり、これらも異なるソフトウェアスタックを使用します。この記事では TPM 2.0 についてのみ説明します。古い TPM 1.2 については、[[Trusted Platform Module/1.2|/1.2]] を参照してください。
{{Note|TPM 2.0 のサポートは不完全です (カーネルとユーザー空間の両方)。現時点では TPM2 を動作させる方法は見つかっていません。}}
 
   
  +
TPM 2.0 では、{{ic|/dev/tpm0}} による直接アクセスが可能である。(一度に1クライアント)、{{ic|/dev/tpmrm0}} 経由のカーネル管理アクセス、{{Pkg|tpm2-abrmd}} リソースマネージャーデーモンによる管理アクセスが可能です。[https://groups.google.com/g/linux.debian.bugs.dist/c/OWBHw40g6Vk/m/rnwwkVapDAAJ systemd プロジェクトメンバーによると]、{{Pkg|tpm2-abrmd}} の使用はもはや推奨されていません。ユーザ空間ツールには Intel の {{Pkg|tpm2-tools}} と IBM の {{AUR|ibm-tss}} の2つの選択肢があります。
TPM 2.0 が搭載されたシステムで {{ic|tcsd}} を実行すると以下のようになります:
 
   
  +
TPM 2.0 には [[UEFI]] ブートが必要です。BIOS またはレガシーブートシステムは TPM 1.2 のみを使用できます。
# cat /sys/class/tpm/tpm0/device/description
 
TPM 2.0 Device
 
   
  +
一部の TPM チップは、ファームウェアアップグレードを通じて 2.0 と 1.2 の間で切り替えることができます (限られた回数のみ実行可能)
# tcsd -f
 
TCSD TDDL ioctl: (25) Inappropriate ioctl for device
 
TCSD TDDL Falling back to Read/Write device support.
 
TCSD TCS ERROR: TCS GetCapability failed with result = 0x1e
 
   
  +
== 使い方 ==
この記事では主に TPM 1.2 を扱っています。
 
   
  +
日常のアプリケーションで TPM 2.0 サービスを設定および利用する方法を学習するための多くの有益なリソースが、[https://tpm2-software.github.io/tpm2-software コミュニティ] から入手できます。
== Using TPM 1.2 ==
 
=== ドライバー ===
 
   
  +
=== サポートの確認 ===
TPM ドライバーは新しいカーネルならネイティブで含まれていますが、ロードする必要があります:
 
   
  +
TPM 2.0 チップは、2016 年 7 月 28 日以降、Windows 10 を実行することが認定されたコンピューターの要件となっています。[https://www.computerworld.com/article/3101427/microsoft-mandates-windows-10-hardware-change-for-pc-security.html] Linux はバージョン 3.20 以降 TPM 2.0 をサポートしています [https://www.phoronix.com/scan.php?page=news_item&px=Linux-3.20-TPM-2.0-Security] 他の手順は、デフォルトの Arch インストールで有効になります。
# modprobe tpm
 
   
  +
特定のソフトウェアを使用せずに TPM 2.0 がセットアップされているかどうかを確認する 2 つの方法:
さらに、使用しているチップセットにあわせて、以下のモジュールのどれかをロードしてください:
 
   
  +
* ログを確認します。たとえば、root として {{ic|1=journalctl -k --grep=tpm}} を実行します。
# modprobe tpm_{atmel,bios,infineon,nsc,tis,crb}
 
  +
* {{ic|/sys/class/tpm/tpm0/device/description}} [https://github.com/tpm2-software/tpm2-tools/issues/604#issuecomment-342784674] または {{ic|/sys/class/tpm/tpm0/tpm_version_major}} の値を読み取ります。
   
  +
=== LUKS による保存データの暗号化 ===
== 使用方法 ==
 
   
  +
TPM を使用して LUKS ボリュームのロックを解除するには、2 つの方法があります。[[Clevis]] または [[Trusted Platform Module#systemd-cryptenroll|systemd-cryptenroll]] を使用できます。
TPM は {{ic|tcsd}} によって管理します。Trusted Computing リソースを管理するユーザー空間のデーモンで、(TSS の仕様によれば) TPM デバイスドライバーの唯一の表玄関です。{{ic|tcsd}} は AUR パッケージの {{AUR|trousers}} に含まれています。IBM によって開発・リリースされており、{{ic|/etc/tcsd.conf}} で設定することが可能です。
 
   
  +
どちらの方法を使用しても、TPM に保存されているキーを使用して、起動時に自動的に、または後で手動で、暗号化されたボリュームのロックを解除できます。この目的で TPM を使用すると、ファームウェアが変更されていない、[[セキュアブート]] が無効になっていないなど、特定の条件が満たされない限り、ドライブのロックが解除されなくなります ([[Trusted Platform Module#PCR レジスタへのアクセス|PCR レジスタへのアクセス]] を参照)
tcsd を起動して出力を監視するには、次を実行:
 
   
  +
{{Warning|この方法をルートボリュームで使用すると、先に述べた一定の条件が満たされている限り、暗号化パスワードを入力することなく、コンピュータの起動時に ''自動的にロックが解除される'' ことを意味します。
# tcsd -f
 
  +
* つまり、暗号化されたディスクだけが盗まれてもデータへのアクセスは保護されますが、PC全体が盗まれた場合保護されません。
  +
* なぜなら、たとえコンピュータの電源が長い間オフになっていたとしても(メモリが完全にクリアされていることを保証するために)、攻撃者は単に電源を入れ、TPMが自動的にキーをロードするのを待つことができるからです。これは、価値の高いターゲットにとっては懸念事項になります。
  +
}}
   
  +
==== systemd-cryptenroll ====
もしくは {{ic|tcsd.service}} を起動・有効化してください。
 
   
  +
[[systemd-cryptenroll#Trusted Platform Module]] を参照してください。
{{ic|tcsd}} を実行したら、{{AUR|tpm-tools}} もインストールすると良いでしょう。TPM を管理するためのコマンドラインツールが多数入っています。
 
   
  +
=== SSH ===
他の便利なツール:
 
   
  +
TPM でシールされた SSH キーには、次の 2 つのオプションがあります:
* {{App|tpmmanager|tpm-tools の Qt フロントエンド。|https://sourceforge.net/projects/tpmmanager|{{AUR|tpmmanager}}}}
 
* {{App|openssl_tpm_engine|TSS API と対話する OpenSSL エンジン。|https://sourceforge.net/projects/trousers|{{AUR|openssl_tpm_engine}}{{Broken package link|{{aur-mirror|openssl_tpm_engine}}}}}}
 
* {{App|tpm_keyring2|TPM ベースの eCryptfs 鍵を管理するキーマネージャ。|https://sourceforge.net/projects/trousers|{{AUR|tpm_keyring2}}{{Broken package link|{{aur-mirror|tpm_keyring2}}}}}}
 
* {{App|opencryptoki|Linux の PKCS#11 実装。IBM の暗号ハードウェアを使用するためのドライバーやライブラリ、テスト用のソフトウェアトークンが含まれています。|https://sourceforge.net/projects/opencryptoki|{{AUR|opencryptoki}}}}
 
   
  +
* {{App|ssh-tpm-agent|TPM でサポートされたキーを使用する ssh-agent 互換エージェント。|https://github.com/Foxboron/ssh-tpm-agent|{{AUR|ssh-tpm-agent-git}}}}
=== 基本 ===
 
   
  +
:参照 [https://linderud.dev/blog/store-ssh-keys-inside-the-tpm-ssh-tpm-agent/ SSH キーを TPM 内に保存します: ssh-tpm-agent]
まずは基本的なバージョン情報を確認してください:
 
   
  +
* {{App|tpm2-pkcs11|Trusted Platform Module 2.0 ハードウェア用の PKCS#11 インターフェイス。|https://github.com/tpm2-software/tpm2-pkcs11|{{Pkg|tpm2-pkcs11}}}}
$ tpm_version
 
  +
:参照 [https://github.com/tpm2-software/tpm2-pkcs11/blob/master/docs/SSH.md SSH 設定] それと [https://incenp.org/notes/2020/tpm-based-ssh-key.html SSH 認証に TPM を使用する] (2020-01)
   
  +
=== GnuPG ===
そしてセルフテストを実行:
 
   
  +
[[GnuPG]] はバージョン 2.3 以降、互換性のあるキーの TPM への移動をサポートしています。手順については、[https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html GnuPG 2.3 での TPM の使用] を参照してください。
$ tpm_selftest -l info
 
TPM Test Results: 00000000 ...
 
tpm_selftest succeeded
 
   
=== SSH セキュア化 ===
+
=== TPM 2.0 のその他使用例 ===
   
  +
* [https://threat.tevora.com/secure-boot-tpm-2/ セキュアブート + TPM 2 の設定] (2018-06, Debian)
TPM を使って鍵を保護する方法は複数存在しますが、以下では {{aur|simple-tpm-pk11-git}} を使用する簡単な方法を説明します。
 
  +
* [https://www.youtube.com/watch?v=XwaSyHJIos8 Using the TPM - It's Not Rocket Science (Anymore)] - Johannes Holland & Peter Huewe (2020-11、Youtube): {{Pkg|tpm2-tss-engine}} を使用した OpenSSL の例
   
  +
== PCR レジスタへのアクセス ==
まず、新しいディレクトリを作成して鍵を生成してください:
 
   
  +
Platform Configuration Registers (PCR) には、いつでも読み取ることができるハッシュが含まれていますが、以前のハッシュ値に依存する拡張操作を介してのみ書き込むことができるため、一種のブロックチェーンが形成されます。これらは、ブート間のプラットフォームのハードウェアおよびソフトウェアの整合性チェックに使用することを目的としています (たとえば、[[Wikipedia:ja:悪意あるメイド攻撃|悪意のある Maid 攻撃]] に対する保護) これらは、暗号化キーのロックを解除し、正しい OS が起動されたことを証明するために使用できます。
$ mkdir ~/.simple-tpm-pk11
 
$ stpm-keygen -o ~/.simple-tpm-pk11/my.key
 
   
  +
[https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/ TCG PC クライアント固有プラットフォームファームウェアプロファイル仕様] では、使用中のレジスタが定義されており、[https://uapi-group.org/specifications/specs/linux_tpm_pcr_registry/ Linux TPM PCR レジストリ] は、これらを使用して Linux システムコンポーネントを割り当てます。
鍵を設定:
 
   
  +
レジスタは次のとおりです:
{{hc|~/.simple-tpm-pk11/config|
 
  +
:
key my.key
 
}}
 
   
  +
{| class="wikitable"
SSH を設定して適切な PKCS11 プロバイダを使用する:
 
  +
|-
  +
! scope="col"| PCR
  +
! scope="col"| 使用
  +
! scope="col"| ノート
  +
|-
  +
|PCR0
  +
|コアシステムファームウェアの実行可能コード (別名ファームウェア)
  +
|UEFIをアップグレードすると変更される可能性があります
  +
|-
  +
|PCR1
  +
|コアシステムファームウェア データ (別名 UEFI 設定)
  +
|
  +
|-
  +
|PCR2
  +
|拡張またはプラグイン可能な実行可能コード
  +
|
  +
|-
  +
|PCR3
  +
|拡張またはプラグイン可能なファームウェアデータ
  +
|ブートデバイス選択 UEFI ブートフェーズ中に設定
  +
|-
  +
|PCR4
  +
|ブートマネージャーコードとブート試行
  +
|ブートマネージャーとファームウェアがブートしようとしたデバイスを測定します。
  +
|-
  +
|PCR5
  +
|ブートマネージャーの設定とデータ
  +
|ブートローダーの設定を測定できます。GPT パーティションテーブルが含まれます
  +
|-
  +
|PCR6
  +
|S4 および S5 の電源状態イベントから再開
  +
|
  +
|-
  +
|PCR7
  +
|セキュアブート状態
  +
|PK/KEK/db の完全な内容と、各ブートアプリケーションの検証に使用される特定の証明書が含まれます。 [https://superuser.com/questions/1640985/how-to-enable-bitlocker-when-booting-windows-10-from-a-non-microsoft-boot-manage]
  +
|-
  +
|PCR8<sup>1</sup>
  +
|カーネルコマンドラインのハッシュ
  +
|[https://lists.gnu.org/archive/html/grub-devel/2017-07/msg00003.html grub] それと [https://github.com/systemd/systemd/pull/2587 systemd-boot] によってサポートされています
  +
|-
  +
|PCR9<sup>1</sup>
  +
|initrd および EFI ロードオプションのハッシュ
  +
|Linux は、initrd および EFI ロードオプション、つまりカーネルコマンドラインオプションを測定します。
  +
|-
  +
|PCR10<sup>1</sup>
  +
|将来の使用のために予約されています
  +
|
  +
|-
  +
|PCR11<sup>1</sup>
  +
|[[ユニファイドカーネルイメージ]]のハッシュ
  +
|{{man|7|systemd-stub}} を参照してください。
  +
|-
  +
|PCR12<sup>1</sup>
  +
|オーバーライドされたカーネルコマンドライン、資格情報
  +
|{{man|7|systemd-stub}} を参照してください。
  +
|-
  +
|PCR13<sup>1</sup>
  +
|システム拡張機能
  +
|{{man|7|systemd-stub}} を参照してください。
  +
|-
  +
|PCR14<sup>1</sup>
  +
|shim の MokList、MokListX、および MokSBState。
  +
|[https://github.com/rhboot/shim/blob/main/README.tpm]
  +
|-
  +
|PCR15<sup>1</sup>
  +
|
  +
|未使用
  +
|-
  +
|PCR16<sup>1</sup>
  +
|デバッグ
  +
|いつでも使用およびリセットできます。公式ファームウェアのリリースには含まれていない可能性があります。
  +
|-
  +
|PCR23
  +
|アプリケーションのサポート
  +
|OS はこの PCR を設定およびリセットできます。
  +
|}
   
  +
# ユースケースは OS によって定義されており、さまざまな Linux ディストリビューションと Windows デバイス間で異なる場合があります。
{{hc|~/.ssh/config|
 
  +
Host *
 
  +
Windows では、BitLocker は独自の目的で PCR8-11 (レガシー) または PCR11-14 (UEFI) を使用します。
PKCS11Provider /usr/lib/libsimple-tpm-pk11.so
 
  +
tianocore のドキュメント [https://github.com/tianocore-docs/edk2-TrustedBootChain/blob/main/4_Other_Trusted_Boot_Chains.md]
}}
 
  +
  +
{{Pkg|tpm2-totp}} は、オブザーバーと専用の信頼できるデバイスを使用してこのチェックを容易にします。
  +
  +
現在の PCR 値は、{{man|1|systemd-analyze}} で一覧表示できます:
   
  +
$ systemd-analyze pcrs
これで PKCS11 プロバイダで鍵を生成することができます:
 
   
  +
または、{{Pkg|tpm2-tools}} の {{man|1|tpm2_pcrread}} を使用します:
$ ssh-keygen -D /usr/lib/libsimple-tpm-pk11.so
 
   
  +
# tpm2_pcrread
{{Note|上記の方法では複数の鍵を生成・使用することはできません。}}
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
  +
=== TPM2 LUKS2 のロック解除でパスワードを要求される ===
=== tcsd.service が起動しない ===
 
   
  +
TPM2 ハードウェアモジュールに登録された鍵で luks2 デバイスのロックを自動的に解除する [[Trusted Platform Module# LUKS による保存データの暗号化|上記の指示]] に従ったにもかかわらず、initramfs のブートステージでパスワードを入力するプロンプトが表示される場合。特定の TPM2 モジュールを扱うカーネルモジュール ({{ic|1= systemd-cryptenroll --tpm2-device=list}} でその名前を取得できます) を [[カーネルモジュール#モジュールの早期ロード|早期ロード]] する必要があるかもしれません。
パーミッションの問題が原因で {{ic|tcsd.service}} サービスが起動できないのかもしれません [https://bugs.launchpad.net/ubuntu/+source/trousers/+bug/963587/comments/3]。以下のコマンドで解決できる可能性があります:
 
   
  +
== 参照 ==
# chown tss:tss /dev/tpm*
 
# chown -R tss:tss /var/lib/tpm
 
   
  +
* [[Gentoo:Trusted Platform Module]]
==参照==
 
  +
* TPM-JS テストツール:: [https://github.com/google/tpm-js source] - [https://google.github.io/tpm-js/ live web version].
* [[wikipedia:ja:Trusted_Platform_Module|TPM on Wikipedia]]
 
* [https://lwn.net/Articles/674751/ Protecting systems with the TPM]
 
* [https://www.thinkwiki.org/wiki/Embedded_Security_Subsystem Embedded Security Subsystem on Thinkwiki]
 
* [http://www.cs.unh.edu/~it666/reading_list/Hardware/tpm_fundamentals.pdf TPM Fundamentals (PDF)]
 

2024年4月24日 (水) 20:26時点における最新版

関連記事

Trusted Platform Module (TPM) は安全な暗号プロセッサの国際規格です。これは暗号鍵をデバイスに統合することによりハードウェアを保護する専用のマイクロプロセッサです。

実際には TPMはセキュアブート、キーストレージ、乱数生成など様々なセキュリティアプリケーションで使うことができます。

TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェアが TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。

バージョン

TPM 仕様には 2.0 と 1.2 という 2 つの非常に異なるものがあり、これらも異なるソフトウェアスタックを使用します。この記事では TPM 2.0 についてのみ説明します。古い TPM 1.2 については、/1.2 を参照してください。

TPM 2.0 では、/dev/tpm0 による直接アクセスが可能である。(一度に1クライアント)、/dev/tpmrm0 経由のカーネル管理アクセス、tpm2-abrmd リソースマネージャーデーモンによる管理アクセスが可能です。systemd プロジェクトメンバーによるとtpm2-abrmd の使用はもはや推奨されていません。ユーザ空間ツールには Intel の tpm2-tools と IBM の ibm-tssAUR の2つの選択肢があります。

TPM 2.0 には UEFI ブートが必要です。BIOS またはレガシーブートシステムは TPM 1.2 のみを使用できます。

一部の TPM チップは、ファームウェアアップグレードを通じて 2.0 と 1.2 の間で切り替えることができます (限られた回数のみ実行可能)

使い方

日常のアプリケーションで TPM 2.0 サービスを設定および利用する方法を学習するための多くの有益なリソースが、コミュニティ から入手できます。

サポートの確認

TPM 2.0 チップは、2016 年 7 月 28 日以降、Windows 10 を実行することが認定されたコンピューターの要件となっています。[1] Linux はバージョン 3.20 以降 TPM 2.0 をサポートしています [2] 他の手順は、デフォルトの Arch インストールで有効になります。

特定のソフトウェアを使用せずに TPM 2.0 がセットアップされているかどうかを確認する 2 つの方法:

  • ログを確認します。たとえば、root として journalctl -k --grep=tpm を実行します。
  • /sys/class/tpm/tpm0/device/description [3] または /sys/class/tpm/tpm0/tpm_version_major の値を読み取ります。

LUKS による保存データの暗号化

TPM を使用して LUKS ボリュームのロックを解除するには、2 つの方法があります。Clevis または systemd-cryptenroll を使用できます。

どちらの方法を使用しても、TPM に保存されているキーを使用して、起動時に自動的に、または後で手動で、暗号化されたボリュームのロックを解除できます。この目的で TPM を使用すると、ファームウェアが変更されていない、セキュアブート が無効になっていないなど、特定の条件が満たされない限り、ドライブのロックが解除されなくなります (PCR レジスタへのアクセス を参照)

警告: この方法をルートボリュームで使用すると、先に述べた一定の条件が満たされている限り、暗号化パスワードを入力することなく、コンピュータの起動時に 自動的にロックが解除される ことを意味します。
  • つまり、暗号化されたディスクだけが盗まれてもデータへのアクセスは保護されますが、PC全体が盗まれた場合保護されません。
  • なぜなら、たとえコンピュータの電源が長い間オフになっていたとしても(メモリが完全にクリアされていることを保証するために)、攻撃者は単に電源を入れ、TPMが自動的にキーをロードするのを待つことができるからです。これは、価値の高いターゲットにとっては懸念事項になります。

systemd-cryptenroll

systemd-cryptenroll#Trusted Platform Module を参照してください。

SSH

TPM でシールされた SSH キーには、次の 2 つのオプションがあります:

  • ssh-tpm-agent — TPM でサポートされたキーを使用する ssh-agent 互換エージェント。
https://github.com/Foxboron/ssh-tpm-agent || ssh-tpm-agent-gitAUR
参照 SSH キーを TPM 内に保存します: ssh-tpm-agent
  • tpm2-pkcs11 — Trusted Platform Module 2.0 ハードウェア用の PKCS#11 インターフェイス。
https://github.com/tpm2-software/tpm2-pkcs11 || tpm2-pkcs11
参照 SSH 設定 それと SSH 認証に TPM を使用する (2020-01)

GnuPG

GnuPG はバージョン 2.3 以降、互換性のあるキーの TPM への移動をサポートしています。手順については、GnuPG 2.3 での TPM の使用 を参照してください。

TPM 2.0 のその他の使用例

PCR レジスタへのアクセス

Platform Configuration Registers (PCR) には、いつでも読み取ることができるハッシュが含まれていますが、以前のハッシュ値に依存する拡張操作を介してのみ書き込むことができるため、一種のブロックチェーンが形成されます。これらは、ブート間のプラットフォームのハードウェアおよびソフトウェアの整合性チェックに使用することを目的としています (たとえば、悪意のある Maid 攻撃 に対する保護) これらは、暗号化キーのロックを解除し、正しい OS が起動されたことを証明するために使用できます。

TCG PC クライアント固有プラットフォームファームウェアプロファイル仕様 では、使用中のレジスタが定義されており、Linux TPM PCR レジストリ は、これらを使用して Linux システムコンポーネントを割り当てます。

レジスタは次のとおりです:

PCR 使用 ノート
PCR0 コアシステムファームウェアの実行可能コード (別名ファームウェア) UEFIをアップグレードすると変更される可能性があります
PCR1 コアシステムファームウェア データ (別名 UEFI 設定)
PCR2 拡張またはプラグイン可能な実行可能コード
PCR3 拡張またはプラグイン可能なファームウェアデータ ブートデバイス選択 UEFI ブートフェーズ中に設定
PCR4 ブートマネージャーコードとブート試行 ブートマネージャーとファームウェアがブートしようとしたデバイスを測定します。
PCR5 ブートマネージャーの設定とデータ ブートローダーの設定を測定できます。GPT パーティションテーブルが含まれます
PCR6 S4 および S5 の電源状態イベントから再開
PCR7 セキュアブート状態 PK/KEK/db の完全な内容と、各ブートアプリケーションの検証に使用される特定の証明書が含まれます。 [4]
PCR81 カーネルコマンドラインのハッシュ grub それと systemd-boot によってサポートされています
PCR91 initrd および EFI ロードオプションのハッシュ Linux は、initrd および EFI ロードオプション、つまりカーネルコマンドラインオプションを測定します。
PCR101 将来の使用のために予約されています
PCR111 ユニファイドカーネルイメージのハッシュ systemd-stub(7) を参照してください。
PCR121 オーバーライドされたカーネルコマンドライン、資格情報 systemd-stub(7) を参照してください。
PCR131 システム拡張機能 systemd-stub(7) を参照してください。
PCR141 shim の MokList、MokListX、および MokSBState。 [5]
PCR151 未使用
PCR161 デバッグ いつでも使用およびリセットできます。公式ファームウェアのリリースには含まれていない可能性があります。
PCR23 アプリケーションのサポート OS はこの PCR を設定およびリセットできます。
  1. ユースケースは OS によって定義されており、さまざまな Linux ディストリビューションと Windows デバイス間で異なる場合があります。

Windows では、BitLocker は独自の目的で PCR8-11 (レガシー) または PCR11-14 (UEFI) を使用します。 tianocore のドキュメント [6]

tpm2-totp は、オブザーバーと専用の信頼できるデバイスを使用してこのチェックを容易にします。

現在の PCR 値は、systemd-analyze(1) で一覧表示できます:

$ systemd-analyze pcrs

または、tpm2-toolstpm2_pcrread(1) を使用します:

# tpm2_pcrread

トラブルシューティング

TPM2 LUKS2 のロック解除でパスワードを要求される

TPM2 ハードウェアモジュールに登録された鍵で luks2 デバイスのロックを自動的に解除する 上記の指示 に従ったにもかかわらず、initramfs のブートステージでパスワードを入力するプロンプトが表示される場合。特定の TPM2 モジュールを扱うカーネルモジュール (systemd-cryptenroll --tpm2-device=list でその名前を取得できます) を 早期ロード する必要があるかもしれません。

参照