Windows 10 IoT Core でのトラステッド プラットフォーム モジュール (TPM)
TPM とは
トラステッド プラットフォーム モジュール (TPM) は、ランダムな数値の生成、暗号化キーの安全な生成、その使用の制限などの機能を含む暗号化コプロセッサです。 また、リモート構成証明やシールド ストレージなどの機能も含んでいます。 TPM の技術仕様は、Trusted Computing Group (TCG) によって一般公開され、推進されています。 最新バージョンの TPM 2.0 (2014 年 10 月リリース) では、仕様の大幅な再設計により、新しい機能が追加され、以前の TPM 1.2 の弱点が修正されています。
TPM を使用する理由
TPM を組み込むコンピューターでは、暗号化キーを作成し、TPM によってのみ暗号化を解除できるように暗号化できます。 このプロセスは、一般に "ラップ" または "バインド" と呼ばれ、キーの漏えいを防ぐのに役立ちます。 各 TPM には、ストレージ ルート キーと呼ばれる主要なラップ キーが格納されています。 TPM で作成されたキーの秘密部分が、他のコンポーネント、ソフトウェア、プロセス、またはユーザーに公開されることはありません。
TPM を組み込んだコンピューターでは、ラップされたキーだけでなく、特定のプラットフォーム測定値に関連付けられたキーも作成できます。 この種類のキーは、これらのプラットフォームの測定値がキーの作成時と同じ値を持つ場合にのみラップ解除できます。 このプロセスを、キーの TPM への "シール" と呼びます。 キーの暗号化解除は "シール解除" と呼ばれます。 TPM では、TPM の外部で生成されたデータをシールおよびシール解除することもできます。 このシールされたキーと BitLocker ドライブ暗号化などのソフトウェアを使用すると、特定のハードウェアまたはソフトウェアの条件が満たされるまでデータをロックできます。
TPM を使用すると、キー ペアの秘密部分はオペレーティング システムによって制御されるメモリとは別に保持されます。 キーは TPM にシールすることができ、キーをシール解除して公開する前に、システムの状態について一定の保証 (システムの "信頼性" を定義する保証) を行うことができます。 TPM は独自の内部ファームウェアとロジック回路を使用して命令を処理するため、オペレーティング システムに依存せず、オペレーティング システムまたはアプリケーション ソフトウェアに存在する可能性のある脆弱性にさらされることはありません。
TPM のアーキテクチャ
TPM 1.2 と TPM 2.0 の違い。
TPM の仕様は 2 度にわたって作成されました。 最初は、仕様委員会によって要求または特定された新しい機能を組み込みながら、1.1 b から 1.2 までが作成されました。 この機能増殖的な進化によって、最終的な TPM 1.2 仕様は非常に複雑になりました。 結局、SHA-1 (TPM 1.2 で最も強力な商用アルゴリズムだった) の暗号の脆弱性が明らかになり、変更が必要になりました。 TPM アーキテクチャはゼロから再設計され、TPM 2.0 では設計の統合と統一が大幅に進みました。
以前の TPM 1.2 と比較して、次のような変更点と機能強化があります。
- 追加の暗号化アルゴリズムのサポート
- アプリケーションに対する TPM の可用性の強化
- 強化された認可メカニズム
- 簡略化された TPM 管理
- プラットフォーム サービスのセキュリティを強化するための追加機能
Note
Windows IoT Core では、TPM 2.0 のみがサポートされており、古い TPM 1.2 はサポートされていません。
TBS とは
TPM ベース サービス (TBS) 機能は、TPM リソースを透過的に共有できるシステム サービスです。 リモート プロシージャ コール (RPC) を使用して、同じ物理マシン上の複数のアプリケーション間で TPM リソースを共有します。 呼び出し元のアプリケーションで指定された優先度を使用して、複数のアプリケーションにわたって TPM アクセスを集中管理します。
TPM には、プラットフォームに信頼を提供するために設計された暗号化機能があります。 TPM はハードウェアに実装されるため、リソースが限られています。 TCG では、アプリケーション ソフトウェアに対して信頼できる操作を提供するためにこれらのリソースを使用する TPM ソフトウェア スタック (TSS) が定義されます。 ただし、TPM リソースを使用している可能性があるオペレーティング システム ソフトウェアと並行して TSS 実装を実行するためのプロビジョニングは行われません。 TBS 機能では、TBS と通信する各ソフトウェア スタックがコンピューター上で実行されている可能性がある他のソフトウェア スタックに対して TPM リソース チェックを使用できるようにすることで、この問題を解決します。
Windows IoT Core で利用可能な TPM ソリューション
ソフトウェア TPM (sTPM)、ファームウェア TPM (fTPM)、ディスクリート TPM (dTPM) に関する紹介文...
ファームウェア TPM (fTPM)
ファームウェア TPM (fTPM) は、特別なプロセッサ/SoC サポートを必要とするため、Raspberry Pi 2 または 3 には現在実装されていません。 MinnowBoard MAX では、ファームウェア バージョンが 0.80 以上である必要があります。 DragonBoard410c では、fTPM 機能が既定で追加設定なしで有効になっています。
ディスクリート TPM (dTPM)
ディスクリート TPM (dTPM) は、あらゆる状況で最も信頼性の高いソリューションと見なされます。
Windows IoT Core でサポートされている dTPM チップと PCB モジュールの製造元は、いくつかあります。
メーカー Web ページ モジュールの種類 TPM チップ インフィニオン Infineon TPM 評価ボード Infineon SLB9670 TPM 2.0 Pi3g Pi3g.com マスプロダクト & エバルボード Infineon SLB9670 TPM 2.0
ソフトウェア TPM (sTPM)
ソフトウェア TPM (sTPM) は、TPM シミュレーターとも呼ばれます。 プラットフォームに依存せず、Windows IoT Core でサポートされています。
Note
sTPM は開発目的でのみ使用するものであり、実際のセキュリティ上の利点はありません。
サンプル
- Urchin ライブラリのサンプル このチュートリアルでは、Urchin ライブラリを使用して TPM 機能を実行するサンプル C++ アプリケーションを作成する方法について説明します。 Urchin は、TPM 2.0 リファレンス実装から派生した、仕様に準拠するライブラリです。 これにより、すべてのデータ構造のマーシャリング/マーシャリング解除、認可の適切な計算、パラメーターの暗号化と監査の実行の各機能がクライアントに提供されます。