次の方法で共有


TPM 2.0 デバイス上の PCR バンク

PC 上の TPM 2.0 デバイスで PCR バンクを切り替える手順については、OEM または UEFI ベンダーにお問い合わせください。 この記事では、TPM 2.0 デバイスで PCR バンクを切り替えたときの動作の背景について説明します。

プラットフォーム構成レジスタ (PCR) は、一意のプロパティを持つ TPM 内のメモリ位置です。 PCR に格納できる値のサイズは、関連するハッシュ アルゴリズムによって生成されるダイジェストのサイズによって決まります。 SHA-1 PCR では、SHA-1 ダイジェストのサイズである 20 バイトを格納できます。 同じハッシュ アルゴリズムに関連付けられている複数の PCR は、 PCR バンクと呼ばれます。

新しい値を PCR に格納するために、既存の値は次のように新しい値で拡張されます。 PCR[N] = HASHalg( PCR[N] || ArgumentOfExtend)

既存の値は、TPM 拡張操作の引数と連結されます。 結果の連結は、関連付けられたハッシュ アルゴリズムへの入力として使用され、入力のダイジェストが計算されます。 計算されたダイジェストは、PCR の新しい値になります。

TCG PC クライアント プラットフォーム TPM プロファイル仕様では、24 台のレジスタを持つ少なくとも 1 つの PCR バンクを含めることを定義しています。 最初の 16 個の PCR をリセットする唯一の方法は、TPM 自体をリセットすることです。 この制限は、これらの PCR の値を TPM 拡張操作によってのみ変更できるようにするために役立ちます。

一部の TPM PCR は、ログ イベントのチェックサムとして使用されます。 ログ イベントは、イベントが発生すると TPM で拡張されます。 後で監査員は、ログから予想される PCR 値を計算し、それらを TPM の PCR 値と比較することで、ログを検証できます。 最初の 16 台の TPM PCR は任意に変更できないため、その範囲内の予想される PCR 値と実際の TPM PCR 値の一致によって、変更されていないログが保証されます。

Windows で PCR はどのように使用されますか?

TPM ベースのキーの使用をデバイスの特定の状態にバインドするには、キーを予期される PCR 値のセットにシールできます。 たとえば、PCR 0 から 7 は、OS が読み込まれるときに、ブート プロセスの後に適切に定義された値を持ちます。 マシンのハードウェア、ファームウェア、またはブート ローダーが変更されると、PCR 値で変更を検出できます。 Windows では、この機能を使用して、ブート プロセス中に特定の暗号化キーを特定の時刻にのみ使用できるようにします。 たとえば、BitLocker キーはブートの特定の時点で使用できますが、その前または後には使用できません。

この PCR 値へのバインドには、PCR に使用されるハッシュ アルゴリズムも含まれていることに注意してください。 たとえば、SHA-256 PCR バンクを使用している場合は、同じシステム構成であっても、キーを SHA-1 PCR[12]の特定の値にバインドできます。 それ以外の場合、PCR 値は一致しません。

PCR バンクを切り替えるとどうなりますか?

PCR バンクが切り替わると、拡張操作中に PCR に格納されているハッシュ値を計算するために使用されるアルゴリズムが変更されます。 各ハッシュ アルゴリズムは、同じ入力に対して異なる暗号化署名を返します。

その結果、現在使用されている PCR バンクを切り替えると、以前の PCR 値にバインドされているすべてのキーが機能しなくなります。 たとえば、キーが PCR[12] の SHA-1 値にバインドされていて、後で PCR バンクを SHA-256 に変更した場合、バンクは一致せず、そのキーを使用できなくなります。 BitLocker キーは PCR バンクを使用してセキュリティで保護され、BitLocker が有効になっている間に PCR バンクが切り替わると、Windows でセキュリティ保護されます。

BitLocker が既にアクティブになっている場合に PCR を切り替えるにはどうすればよいですか?

PCR バンクを切り替える前に、BitLocker を中断または無効にするか、回復キーを準備しておく必要があります。 PC で PCR バンクを切り替える手順については、OEM または UEFI ベンダーにお問い合わせください。

使用されている PCR バンクを特定するにはどうすればよいですか?

複数の PCR バンクをアクティブにするように TPM を構成できます。 BIOS が測定を実行する場合、これらの測定を行う機能に応じて、すべてのアクティブな PCR バンクに対して行われます。 BIOS は、サポートされていない PCR バンクを非アクティブ化するか、セパレーターを拡張してサポートしていない PCR バンクを キャップ することを選択できます。 次のレジストリ値は、アクティブな PCR バンクを識別します。

  • レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMActivePCRBanks
  • 現在アクティブな PCR バンクを定義します。 この値は、リビジョン 1.27 の TCG アルゴリズム レジストリ テーブル 21 でビットが定義されているビットマップとして解釈する必要があります。

Windows では、どの PCR バンクがアクティブで、BIOS によってサポートされているかが確認されます。 また、Windows では、測定されたブート ログが、すべてのアクティブな PCR バンクの測定値をサポートしているかどうかを確認します。 Windows では、測定に SHA-256 バンクを使用することを好み、前提条件の 1 つが満たされていない場合は SHA1 PCR バンクにフォールバックします。

レジストリを調べることで、現在 Windows で使用されている PCR バンクを特定できます。

  • レジストリ キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\IntegrityServices
  • DWORD: TPMDigestAlgID
  • Windows が現在使用している PCR バンクのアルゴリズム ID。 この値は、リビジョン 1.27 の TCG アルゴリズム レジストリ テーブル 3 で定義されているアルゴリズム識別子を表します。

Windows では、ブート測定を続行するために 1 つの PCR バンクのみを使用します。 他のすべてのアクティブ PCR バンクは、Windows で使用されていないことを示す区切り記号で拡張され、Windows からの測定値は信頼できません。