「Trusted Platform Module」の版間の差分
(ページの作成:「Category:セキュリティ Category:他のハードウェア en:Trusted Platform Module Trusted Platform Module (TPM) はセキュアな暗号プロセッサ...」) |
Kusanaginoturugi (トーク | 投稿記録) (→PCR レジスタへのアクセス: ユニファイドカーネルイメージに変更) |
||
(4人の利用者による、間の26版が非表示) | |||
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 |
+ | 実際には TPMはセキュアブート、キーストレージ、乱数生成など様々なセキュリティアプリケーションで使うことができます。 |
− | + | TPM が使えるのは TPM ハードウェアに対応しているデバイスだけです。あなたのハードウェアが TPM をサポートしているのに認識されない場合、BIOS の設定で TPM を有効にする必要があります。 |
|
− | == |
+ | == バージョン == |
− | TPM ドライバーは新しいカーネルならネイティブで含まれていますが、ロードする必要があります: |
||
+ | TPM 仕様には 2.0 と 1.2 という 2 つの非常に異なるものがあり、これらも異なるソフトウェアスタックを使用します。この記事では TPM 2.0 についてのみ説明します。古い TPM 1.2 については、[[Trusted Platform Module/1.2|/1.2]] を参照してください。 |
||
− | # modprobe tpm |
||
+ | 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 には [[UEFI]] ブートが必要です。BIOS またはレガシーブートシステムは TPM 1.2 のみを使用できます。 |
||
− | # modprobe tpm_atmel tpm_bios tpm_infineon tpm_nsc tpm_tis tpm_crb |
||
+ | 一部の TPM チップは、ファームウェアアップグレードを通じて 2.0 と 1.2 の間で切り替えることができます (限られた回数のみ実行可能) |
||
− | == 使用方法 == |
||
+ | == 使い方 == |
||
− | TPM は {{ic|tcsd}} によって管理します。Trusted Computing リソースを管理するユーザー空間のデーモンで、(TSS の仕様によれば) TPM デバイスドライバーの唯一の表玄関です。{{ic|tcsd}} は AUR パッケージの {{AUR|trousers}} に含まれています。IBM によって開発・リリースされており、{{ic|/etc/tcsd.conf}} で設定することが可能です。 |
||
+ | 日常のアプリケーションで TPM 2.0 サービスを設定および利用する方法を学習するための多くの有益なリソースが、[https://tpm2-software.github.io/tpm2-software コミュニティ] から入手できます。 |
||
− | tcsd を起動して出力を監視するには、次を実行: |
||
+ | === サポートの確認 === |
||
− | # tcsd -f |
||
+ | 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 インストールで有効になります。 |
||
− | もしくは {{ic|tcsd.service}} を起動・有効化してください。 |
||
+ | 特定のソフトウェアを使用せずに TPM 2.0 がセットアップされているかどうかを確認する 2 つの方法: |
||
− | {{ic|tcsd}} を実行したら、{{AUR|tpm-tools}} もインストールすると良いでしょう。TPM を管理するためのコマンドラインツールが多数入っています。 |
||
+ | * ログを確認します。たとえば、root として {{ic|1=journalctl -k --grep=tpm}} を実行します。 |
||
− | 他の便利なツール: |
||
+ | * {{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 による保存データの暗号化 === |
||
− | * {{App|tpmmanager|tpm-tools の Qt フロントエンド。|http://sourceforge.net/projects/tpmmanager|{{AUR|tpmmanager}}}} |
||
− | * {{App|openssl_tpm_engine|TSS API と対話する OpenSSL エンジン。|http://sourceforge.net/projects/trousers|{{AUR|openssl_tpm_engine}}{{Broken package link|{{aur-mirror|openssl_tpm_engine}}}}}} |
||
− | * {{App|tpm_keyring2|TPM ベースの eCryptfs 鍵を管理するキーマネージャ。|http://sourceforge.net/projects/trousers|{{AUR|tpm_keyring2}}{{Broken package link|{{aur-mirror|tpm_keyring2}}}}}} |
||
− | * {{App|opencryptoki|Linux の PKCS#11 実装。IBM の暗号ハードウェアを使用するためのドライバーやライブラリ、テスト用のソフトウェアトークンが含まれています。|http://sourceforge.net/projects/opencryptoki|{{AUR|opencryptoki}}}} |
||
+ | TPM を使用して LUKS ボリュームのロックを解除するには、2 つの方法があります。[[Clevis]] または [[Trusted Platform Module#systemd-cryptenroll|systemd-cryptenroll]] を使用できます。 |
||
− | === 基本 === |
||
+ | どちらの方法を使用しても、TPM に保存されているキーを使用して、起動時に自動的に、または後で手動で、暗号化されたボリュームのロックを解除できます。この目的で TPM を使用すると、ファームウェアが変更されていない、[[セキュアブート]] が無効になっていないなど、特定の条件が満たされない限り、ドライブのロックが解除されなくなります ([[Trusted Platform Module#PCR レジスタへのアクセス|PCR レジスタへのアクセス]] を参照) |
||
− | まずは基本的なバージョン情報を確認してください: |
||
+ | {{Warning|この方法をルートボリュームで使用すると、先に述べた一定の条件が満たされている限り、暗号化パスワードを入力することなく、コンピュータの起動時に ''自動的にロックが解除される'' ことを意味します。 |
||
− | $ tpm_version |
||
+ | * つまり、暗号化されたディスクだけが盗まれてもデータへのアクセスは保護されますが、PC全体が盗まれた場合保護されません。 |
||
+ | * なぜなら、たとえコンピュータの電源が長い間オフになっていたとしても(メモリが完全にクリアされていることを保証するために)、攻撃者は単に電源を入れ、TPMが自動的にキーをロードするのを待つことができるからです。これは、価値の高いターゲットにとっては懸念事項になります。 |
||
+ | }} |
||
+ | ==== systemd-cryptenroll ==== |
||
− | そしてセルフテストを実行: |
||
+ | [[systemd-cryptenroll#Trusted Platform Module]] を参照してください。 |
||
− | $ tpm_selftest -l info |
||
− | TPM Test Results: 00000000 ... |
||
− | tpm_selftest succeeded |
||
− | === SSH |
+ | === SSH === |
+ | TPM でシールされた SSH キーには、次の 2 つのオプションがあります: |
||
− | TPM を使って鍵を保護する方法は複数存在しますが、以下では {{aur|simple-tpm-pk11-git}} を使用する簡単な方法を説明します。 |
||
+ | * {{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] |
||
− | $ mkdir ~/.simple-tpm-pk11 |
||
− | $ stpm-keygen -o ~/.simple-tpm-pk11/my.key |
||
+ | * {{App|tpm2-pkcs11|Trusted Platform Module 2.0 ハードウェア用の PKCS#11 インターフェイス。|https://github.com/tpm2-software/tpm2-pkcs11|{{Pkg|tpm2-pkcs11}}}} |
||
− | 鍵を設定: |
||
+ | :参照 [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 === |
||
− | {{hc|~/.simple-tpm-pk11/config| |
||
− | key my.key |
||
− | }} |
||
+ | [[GnuPG]] はバージョン 2.3 以降、互換性のあるキーの TPM への移動をサポートしています。手順については、[https://gnupg.org/blog/20210315-using-tpm-with-gnupg-2.3.html GnuPG 2.3 での TPM の使用] を参照してください。 |
||
− | SSH を設定して適切な PKCS11 プロバイダを使用する: |
||
+ | === TPM 2.0 のその他の使用例 === |
||
− | {{hc|~/.ssh/config| |
||
+ | |||
− | Host * |
||
+ | * [https://threat.tevora.com/secure-boot-tpm-2/ セキュアブート + TPM 2 の設定] (2018-06, Debian) |
||
− | PKCS11Provider /usr/lib/libsimple-tpm-pk11.so |
||
+ | * [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 が起動されたことを証明するために使用できます。 |
||
+ | |||
+ | [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 システムコンポーネントを割り当てます。 |
||
+ | |||
+ | レジスタは次のとおりです: |
||
+ | : |
||
+ | |||
+ | {| class="wikitable" |
||
+ | |- |
||
+ | ! 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 デバイス間で異なる場合があります。 |
||
+ | |||
+ | Windows では、BitLocker は独自の目的で PCR8-11 (レガシー) または PCR11-14 (UEFI) を使用します。 |
||
+ | 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 |
||
+ | |||
+ | または、{{Pkg|tpm2-tools}} の {{man|1|tpm2_pcrread}} を使用します: |
||
+ | |||
+ | # tpm2_pcrread |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | === TPM2 LUKS2 のロック解除でパスワードを要求される === |
||
− | これで PKCS11 プロバイダで鍵を生成することができます: |
||
+ | TPM2 ハードウェアモジュールに登録された鍵で luks2 デバイスのロックを自動的に解除する [[Trusted Platform Module# LUKS による保存データの暗号化|上記の指示]] に従ったにもかかわらず、initramfs のブートステージでパスワードを入力するプロンプトが表示される場合。特定の TPM2 モジュールを扱うカーネルモジュール ({{ic|1= systemd-cryptenroll --tpm2-device=list}} でその名前を取得できます) を [[カーネルモジュール#モジュールの早期ロード|早期ロード]] する必要があるかもしれません。 |
||
− | $ ssh-keygen -D /usr/lib/libsimple-tpm-pk11.so |
||
+ | == 参照 == |
||
− | {{Note|上記の方法では複数の鍵を生成・使用することはできません。}} |
||
+ | * [[Gentoo:Trusted Platform Module]] |
||
− | ==参照== |
||
+ | * TPM-JS テストツール:: [https://github.com/google/tpm-js source] - [https://google.github.io/tpm-js/ live web version]. |
||
− | * [https://ja.wikipedia.org/wiki/Trusted_Platform_Module TPM on Wikipedia] |
||
− | * [http://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 レジスタへのアクセス を参照)
systemd-cryptenroll
systemd-cryptenroll#Trusted Platform Module を参照してください。
SSH
TPM でシールされた SSH キーには、次の 2 つのオプションがあります:
- ssh-tpm-agent — TPM でサポートされたキーを使用する ssh-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 のその他の使用例
- セキュアブート + TPM 2 の設定 (2018-06, Debian)
- Using the TPM - It's Not Rocket Science (Anymore) - Johannes Holland & Peter Huewe (2020-11、Youtube): tpm2-tss-engine を使用した OpenSSL の例
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 を設定およびリセットできます。 |
- ユースケースは OS によって定義されており、さまざまな Linux ディストリビューションと Windows デバイス間で異なる場合があります。
Windows では、BitLocker は独自の目的で PCR8-11 (レガシー) または PCR11-14 (UEFI) を使用します。 tianocore のドキュメント [6]
tpm2-totp は、オブザーバーと専用の信頼できるデバイスを使用してこのチェックを容易にします。
現在の PCR 値は、systemd-analyze(1) で一覧表示できます:
$ systemd-analyze pcrs
または、tpm2-tools の tpm2_pcrread(1) を使用します:
# tpm2_pcrread
トラブルシューティング
TPM2 LUKS2 のロック解除でパスワードを要求される
TPM2 ハードウェアモジュールに登録された鍵で luks2 デバイスのロックを自動的に解除する 上記の指示 に従ったにもかかわらず、initramfs のブートステージでパスワードを入力するプロンプトが表示される場合。特定の TPM2 モジュールを扱うカーネルモジュール (systemd-cryptenroll --tpm2-device=list
でその名前を取得できます) を 早期ロード する必要があるかもしれません。
参照
- Gentoo:Trusted Platform Module
- TPM-JS テストツール:: source - live web version.