TPM の基礎
この記事では、トラステッド プラットフォーム モジュール (TPM 1.2 および TPM 2.0) コンポーネントの説明と、ディクショナリ攻撃の軽減に使用される方法について説明します。
TPM は、主に暗号化キーを含む基本的なセキュリティ関連の機能を提供するように設計されたマイクロチップです。 TPM はコンピューターのマザーボードにインストールされ、ハードウェア バスを使用してシステムの残りの部分と通信します。
TPM を組み込むデバイスでは、暗号化キーを作成して暗号化できるため、キーは TPM によってのみ暗号化解除できます。 このプロセスは、多くの場合、キーを "ラッピング" または "バインド" と呼ばれ、キーを開示から保護するのに役立ちます。 各 TPM には、 ストレージ ルート キーと呼ばれるプライマリ ラッピング キーがあり、TPM 自体に格納されます。 TPM で作成されたストレージ ルート キー ( 保証キー) のプライベート部分は、他のコンポーネント、ソフトウェア、プロセス、またはユーザーに公開されることはありません。
TPM によって作成される暗号化キーを移行できるかどうかを指定できます。 移行可能と指定した場合、キーのパブリック部分とプライベート部分を他のコンポーネント、ソフトウェア、プロセス、またはユーザーに公開できます。 暗号化キーを移行できないことを指定した場合、キーのプライベート部分が TPM の外部に公開されることはありません。
TPM を組み込むデバイスは、特定のプラットフォーム測定値にラップされ、関連付けられたキーを作成することもできます。 この種類のキーは、プラットフォームの測定値がキーの作成時と同じ値を持つ場合にのみラップ解除できます。 このプロセスは、 キーを TPM にシールすると呼ばれます。 キーの復号化は、 封印解除と呼ばれます。 また、TPM は、TPM の外部で生成されるシールデータとシール解除データを使用することもできます。 BitLocker ドライブ暗号化などの封印されたキーとソフトウェアを使用すると、特定のハードウェアまたはソフトウェアの条件が満たされるまでデータをロックできます。
TPM では、キー ペアのプライベート部分は、オペレーティング システムによって制御されるメモリとは別に保持されます。 キーを TPM にシールし、システムの状態に関する特定の保証 (システムの信頼性を定義する保証) は、キーを封印解除して使用するために解放する前に行うことができます。 TPM は、独自の内部ファームウェアとロジック回線を使用して命令を処理します。 そのため、オペレーティング システムに依存せず、オペレーティング システムまたはアプリケーション ソフトウェアに存在する可能性のある脆弱性にさらされることはありません。
- TPM のバージョンをサポートする Windows のバージョンについては、「 トラステッド プラットフォーム モジュール テクノロジの概要」を参照してください。
- グループ ポリシー設定を使用して一元的に制御できる TPM サービスの詳細については、「 TPM グループ ポリシー設定」を参照してください。
バージョンで使用できる機能は、トラステッド コンピューティング グループ (TCG) によって仕様で定義されています。 詳細については、トラステッド コンピューティング グループ Web サイトの トラステッド プラットフォーム モジュールページ を参照してください。
次のセクションでは、TPM をサポートするテクノロジの概要について説明します。
- 構成証明をサポートするメジャー ブート
- TPM ベースの仮想スマート カード
- TPM ベースの証明書ストレージ
- TPM コマンドレット
- 物理プレゼンス インターフェイス
- TPM 1.2 の状態と初期化
- 保証キー
- TPM キー構成証明
- ハンマリング防止
構成証明をサポートするメジャー ブート
測定ブート機能は、すべてのブート コンポーネントの信頼された (スプーフィングと改ざんに対する耐性) ログを持つマルウェア対策ソフトウェアを提供します。 マルウェア対策ソフトウェアは、ログを使用して、前に実行されたコンポーネントが信頼できるか、マルウェアに感染しているかを判断できます。 評価のために、測定ブート ログをリモート サーバーに送信することもできます。 リモート サーバーは、クライアント上のソフトウェアと対話するか、必要に応じて帯域外メカニズムを使用して修復アクションを開始できます。
TPM ベースの仮想スマート カード
Warning
Windows Hello for Business および FIDO2 セキュリティ キーは、Windows 用の最新の 2 要素認証方法です。 仮想スマート カードを使用しているお客様は、Windows Hello for Business または FIDO2 に移行することをお勧めします。 新しい Windows インストールの場合は、Windows Hello for Business または FIDO2 セキュリティ キーをお勧めします。
Virtual Smart Card は、従来のスマート カードの機能をエミュレートします。 仮想スマート カードでは、別の物理スマート カードとリーダーを使用するのではなく、TPM チップを使用します。 これにより、企業内のスマート カードの管理と展開のコストが大幅に削減されます。 エンド ユーザーは、デバイスで仮想スマート カードを常に使用できます。 ユーザーが複数のデバイスを使用する必要がある場合は、デバイスごとに仮想スマート カードをユーザーに発行する必要があります。 複数のユーザー間で共有されているコンピューターは、ユーザーごとに 1 つずつ、複数の仮想スマート カードをホストできます。
TPM ベースの証明書ストレージ
TPM は、証明書と RSA キーを保護します。 TPM キー ストレージ プロバイダー (KSP) は、秘密キーを強力に保護する方法として、TPM を簡単かつ便利に使用できます。 TPM KSP は、組織が証明書を登録するときにキーを生成します。 TPM は、外部ソースからインポートされた証明書も保護します。 TPM ベースの証明書は標準証明書です。 証明書は、キーの生成元となる TPM を残すことができません。 TPM は、 暗号化 API: 次世代 (CNG) を介した暗号化操作にも使用できます。
TPM コマンドレット
Windows PowerShell を使用して TPM を管理できます。 詳細については、「Windows PowerShell の TPM コマンドレット」を参照してください。
物理プレゼンス インターフェイス
TPM 1.2 の場合、TPM の TCG 仕様では、TPM をオンにしたり、オフにしたり、クリアしたりするために、物理的なプレゼンス (通常はキーを押す) が必要です。 これらのアクションは、通常、個々の OEM が提供しない限り、スクリプトやその他の自動化ツールでは自動化できません。
TPM 1.2 の状態と初期化
TPM 1.2 には、複数の状態が考えられます。 Windows は TPM を自動的に初期化します。これにより、TPM が有効、アクティブ化、所有状態になります。
保証キー
信頼されたアプリケーションでは、TPM に保証キー (RSA キー ペア) が含まれている場合にのみ TPM を使用できます。 キー ペアのプライベート ハーフは TPM 内に保持され、TPM の外部で表示またはアクセスすることは決してありません。
キー構成証明
TPM キーの構成証明を使用すると、証明機関は、秘密キーが TPM によって保護されていることと、TPM が証明機関が信頼する証明書であることを確認できます。 有効であることが証明された保証キーは、ユーザー ID をデバイスにバインドするために使用されます。 TPM で構成証明されたキーを持つユーザー証明書は、TPM によって提供されるキーの nonexportability、ハンマリング防止、分離によってバックアップされるより高いセキュリティ保証を提供します。
ハンマリング防止
TPM がコマンドを処理すると、保護された環境で処理されます。 たとえば、ディスクリート チップ上の専用マイクロ コントローラーや、メイン CPU 上の特別なハードウェア保護モードなどです。 TPM は、TPM の外部で公開されていない暗号化キーを作成するために使用されます。 正しい承認値が指定された後、TPM で使用されます。
TPM には、キーを使用するための承認値の決定を試みるブルート フォース攻撃、またはより複雑なディクショナリ攻撃を防ぐために設計されたハンマリング防止保護があります。 基本的な方法は、キーとロックを使用する試行を増やさないようにする前に、TPM が許可する承認エラーの数が限られているだけです。 個々のキーにエラー数を指定することは技術的には実用的ではありません。そのため、承認エラーが多すぎると、TPM にグローバル ロックアウトが発生します。
多くのエンティティで TPM を使用できるため、1 回の承認が成功した場合、TPM のハンマリング防止保護をリセットすることはできません。 これにより、攻撃者は既知の承認値を持つキーを作成し、それを使用して TPM の保護をリセットできなくなります。 TPM は、一定期間後の承認エラーを忘れて、TPM が不必要にロックアウト状態に入らないように設計されています。 TPM 所有者パスワードを使用して、TPM のロックアウト ロジックをリセットできます。
TPM 2.0 のハンマリング防止
TPM 2.0 には、ハンマリング防止動作が適切に定義されています。 これは TPM 1.2 とは対照的に、アンチハンマー保護は製造元によって実装され、ロジックは業界全体で広く変化しました。
TPM 2.0 を使用するシステムの場合、TPM は、32 の承認エラーの後にロックし、10 分ごとに 1 つの承認エラーを忘れるよう Windows によって構成されます。 これは、ユーザーが間違った承認値を持つキーを 32 回すぐに使用しようとすることを意味します。 32 回の試行ごとに、TPM は承認値が正しいかどうかを記録します。 これにより、32 回失敗した後に TPM がロック状態になります。
次の 10 分間、承認値を持つキーを使用しようとすると、成功または失敗は返されません。 代わりに、応答は TPM がロックされていることを示します。 10 分後、1 つの承認エラーが忘れられ、TPM によって記憶される承認エラーの数は 31 に減少します。 TPM はロックされた状態を残し、通常の操作に戻ります。 正しい承認値を使用すると、次の 10 分間に承認エラーが発生しない場合は、キーを正常に使用できます。 承認エラーなしで 320 分が経過した場合、TPM は承認エラーを記憶せず、32 回失敗した試行が再び発生する可能性があります。
Windows では、TPM 2.0 システムは、システムの電源が完全にオフになっている場合、またはシステムが休止状態になったときの承認エラーを忘れる必要はありません。 Windows では、システムが正常に実行されている場合、スリープ モードで実行されている場合、またはオフ以外の低電力状態で承認エラーが忘れられる必要があります。 TPM 2.0 の Windows システムがロックされている場合、システムが 10 分間オンのままになっている場合、TPM はロックアウト モードを解除します。
TPM 2.0 のハンマリング防止保護は、TPM にリセット ロックアウト コマンドを送信し、TPM 所有者パスワードを指定することで、すぐに完全にリセットできます。 既定では、Windows は TPM 2.0 を自動的にプロビジョニングし、システム管理者が使用する TPM 所有者パスワードを格納します。
一部の実装では、TPM 所有者の承認値は、ローカル システムではなく Active Directory に一元的に格納されます。 管理者は、 tpm.msc
を実行し、TPM ロックアウト時間のリセットを選択できます。 TPM 所有者パスワードがローカルに格納されている場合は、ロックアウト時間をリセットするために使用されます。 TPM 所有者パスワードがローカル システムで使用できない場合は、管理者がパスワードを指定する必要があります。 管理者が間違った TPM 所有者パスワードを使用して TPM ロックアウト状態をリセットしようとすると、TPM はロックアウト状態を 24 時間リセットする別の試行を許可しません。
TPM 2.0 では、承認値を関連付けずに一部のキーを作成できます。 これらのキーは、TPM がロックされている場合に使用できます。 たとえば、既定の TPM 専用構成の BitLocker では、TPM がロックされている場合でも、TPM のキーを使用して Windows を起動できます。
既定値の背後にある根拠
もともと、BitLocker では PIN に対して 4 文字から 20 文字を使用できます。 Windows Hello には、サインイン用の独自の PIN があり、4 から 127 文字にすることができます。 BitLocker と Windows Hello の両方で TPM を使用して、PIN ブルート フォース攻撃を防ぎます。
Windows 10 バージョン 1607 以前では、辞書攻撃防止パラメーターが使用されています。 ディクショナリ攻撃防止パラメーターを使用すると、セキュリティニーズと使いやすさのバランスを取ることができます。 たとえば、TPM + PIN 構成で BitLocker を使用する場合、PIN 推測の数は時間の経過と共に制限されます。 この例の TPM 2.0 は、すぐに 32 個の PIN 推測のみを許可し、2 時間ごとにさらに 1 つの推測のみを許可するように構成できます。 これは、年間最大約 4,415 個の推測を合計します。 PIN が 4 桁の場合、9999 個の PIN の組み合わせはすべて 2 年余りで試行される可能性があります。
Windows 10 バージョン 1703 以降では、BitLocker PIN の最小長が 6 文字に増やされ、Windows Hello を含む TPM 2.0 を使用する他の Windows 機能との整合が向上しました。 PIN の長さを長くするには、攻撃者にとってより多くの推測が必要です。 そのため、正当なユーザーが同様のレベルの保護を維持しながら、失敗した試行をより早く再試行できるように、各推測間のロックアウト期間が短縮されました。 ロックアウトのしきい値と回復時間のレガシ パラメーターを使用する必要がある場合は、GPO が有効になっていることを確認し、 TPM 2.0 の従来の辞書攻撃防止パラメーター設定を使用するようにシステムを構成します。
TPM ベースのスマート カード
仮想スマート カードである Windows TPM ベースのスマート カードは、システムへのサインインを許可するように構成できます。 物理スマート カードとは対照的に、サインイン プロセスでは、承認値を持つ TPM ベースのキーが使用されます。 次の一覧は、仮想スマート カードの利点を示しています。
- 物理スマート カードでは、物理スマート カード PIN に対してのみロックアウトを適用でき、正しい PIN が入力された後にロックアウトをリセットできます。 仮想スマート カードでは、認証が成功した後、TPM のハンマリング防止保護はリセットされません。 TPM がロックアウトに入る前の許可エラーの数には、多くの要因が含まれます。
- ハードウェアの製造元とソフトウェア開発者は、TPM のセキュリティ機能を使用して要件を満たすことができます。
- ロックアウトしきい値として 32 個のエラーを選択する目的は、ユーザーが TPM をロックしないようにすることです (新しいパスワードを入力する場合や、コンピューターを頻繁にロックしてロック解除する場合でも)。 ユーザーが TPM をロックする場合は、10 分間待機するか、ユーザー名やパスワードなどの他の資格情報を使用してサインインする必要があります。