本明細書で言及する場合、用語「無線送受信ユニット(WTRU)」は、これらに限定されないが、ユーザ機器(UE)、移動局、固定または移動型の加入者ユニット、ページャ、携帯電話、携帯情報端末(PDA)、コンピュータ、または無線環境で動作可能な他の種類のユーザ装置を含む。また、用語「基地局」はこれらに限定されないが、ノードB、サイトコントローラ、アクセスポイント(AP)、または無線環境で動作可能な他の種類のインタフェース装置を含む。
検証データを生成する各種技術が本明細書に開示され、それらには、WTRUの妥当性検査に使用することができる検証データを生成する方法が含まれる。WTRUは、1つまたは複数のコンポーネントと、いくつかのセキュアなレジスタを備えたセキュアな環境とを有することができる。セキュアな環境は、セキュアな実行環境を提供するセキュアなハードウェアおよび/またはソフトウェア環境を含むことができる。例えば、セキュアな環境は、信頼されるプラットフォームモジュール(TPM)、スマートカード、ユニバーサル集積回路カード(UICC)またはそれらの組合せ等である。このセキュアな環境を使用して、例えば暗号機能等のセキュリティ機能、例えば演算レジスタ、メモリ、乱数生成器、タイマ、および/またはクロック等のセキュアなリソースを保護することができる。
一実施形態によると、検証データは、WTRUの複数のコンポーネント各々について、WTRUのそのコンポーネントの測定結果を表す値を取得することによって生成することができる。コンポーネントの測定値の記録を含む測定をWTRUに記憶することができる。各コンポーネントのコンポーネント測定値から検証データを生成し、その検証データを信頼されるプラットフォームモジュール内部のセキュアなレジスタの1つまたは複数に記憶することができる。検証データおよびMLは、ツリー構造に編成することができる。検証データを保持するセキュアレジスタは、ツリー構造の根を定義することができる。MLは、ツリー構造の内部ノードを定義し、MLに保持される測定値は、ツリー構造の葉を定義することができる。ツリー構造は、セキュアな環境のセキュアな拡張動作を使用して形成することができる。
別の実施形態によると、WTRUのコンポーネントの測定結果を表す値を得ることができる。その測定値から検証データを生成し、検証データを、WTRUのセキュアな環境内部のレジスタに記憶することができる。測定値は、ツリー構造の葉ノードに記憶することができる。セキュアな環境内で1回または複数回の拡張動作を行って、葉ノードに記憶された値を当該ツリー構造の根ノードまで拡張することができる。根ノードは、生成された検証データが記憶されているセキュアレジスタ内のデータを含むことができる。
別の実施形態によれば、WTRUによって生成されたツリー型の検証データの妥当性を検査する方法が記載される。ツリー型の検証データは、ツリー構造に編成された、検証データ要素、測定ログ(ML)およびコンポーネントの測定値を含むことができる。検証データ要素は、ツリー構造の根ノードを定義することができる。MLは、ツリー構造の内部ノードを定義することができる。コンポーネントの測定値は、ツリー構造の葉ノードを定義することができる。ツリー型の検証データは、編成されたツリー構造で受け取ることができる。受け取ったツリー型の検証データの根にある検証データ要素から、ツリー構造をトラバースすることができる。ツリー構造のトラバースの一部として、受け取ったツリー構造の分岐ノードおよび分岐ノードの子ノードにある値を、参照ツリーの同じノード位置にある値と比較することができる。そして、ノード値の比較に基づいて、WTRUまたはWTRUの個々のコンポーネントの妥当性を認めるどうかを判定することができる。
別の実施形態によれば、WTRUによって生成された測定ログ(ML)のノード値を証明する方法が記載される。MLの値は、根ノード、内部ノードおよび葉ノードからなるツリー構造のノードに記憶することができる。部分木認証機関(SCA)が、証明すべきノード値を示すアテステーションパッケージを受け取ることができる。そのノード値は、SCAで証明することができるノード値として認識されることができる。ノード値に関連付けられた妥当性検査情報を含む、ノード値に関連付けられたマニフェストを作成することができる。妥当性検査情報をWTRUのセキュアな環境にバインドするように構成された、ノード値の証明書を作成することができる。証明書は、マニフェストと共に発行されてWTRUのセキュアな環境に提供されることができ、WTRUは証明書を自身のMLに記憶する。
構造化された妥当性検査は、データおよび妥当性検査動作の諸面が構造化される妥当性検査の方法論である。構造化妥当性検査の別個であるが互いに関連した概念および方法が本明細書に記載される。例えば、ツリー型妥当性検査(TFV:Tree-Formed Validation)が本明細書に記載され、部分木の証明、拡張およびTFVの変形、並びに分割妥当性検査を使用する方法に焦点を当てる。分割妥当性検査では、妥当性検査作業を2つ以上のネットワークエンティティに分散し、それにより、ネットワークエンティティは、(接続された)機器に対して分散方式で機器の完全性検査を行うことができ、検査を行う各エンティティは必ずしも機器全体を妥当性検査する必要はなく、その一部分を妥当性検査することができる。
図1は、E−UTRAN(Evolved-Universal Terrestrial Radio Access Network)605を含むLTE(Long Term Evolution)の無線通信システム/アクセスネットワーク400を示す図である。E−UTRAN605は、WTRU610および数個のevolvedノードB(eNB)620を含む。WTRU610は、eNB620と通信状態にある。eNB620は、X2インタフェースを使用して相互とインタフェースをとる。各NB620は、S1インタフェースを通じて移動性管理エンティティ(MME)/サービングゲートウェイ(S−GW)630とインタフェースをとる。図1には1つのWTRU610および3つのeNB620を示すが、無線通信システムアクセスネットワーク600には無線および有線の機器の任意の組合せが含まれてよいことが明らかである。
図2は、WTRU610、eNB620、およびMME/S−GW630を含むLTE無線通信システム500の例示的ブロック図である。図2に示すように、WTRU610、eNB620、およびMME/S−GW630は、機器にセキュリティを提供する方法を行うように構成される。
典型的なWTRUに見られる構成要素に加えて、WTRU610は、オプションの結合されたメモリ722を備えるプロセッサ716、少なくとも1つのトランシーバ714、オプションのバッテリ720、およびアンテナ718を備える。プロセッサ716は、機器にセキュリティを提供する方法を行うように構成される。
トランシーバ714は、プロセッサ716およびアンテナ718と通信状態にあって、無線通信の送受信を容易にする。WTRU610でバッテリ720が使用される場合は、バッテリ720がトランシーバ714およびプロセッサ716に電力を供給する。
典型的なeNBに見られる構成要素に加えて、eNB620は、オプションの結合されたメモリ715を備えるプロセッサ717、トランシーバ719、およびアンテナ721を備える。プロセッサ717は、機器にセキュリティを提供する方法を行うように構成される。トランシーバ719は、プロセッサ717およびアンテナ721と通信状態にあって、無線通信の送受信を容易にする。eNB620は、オプションの結合されたメモリ734を有するプロセッサ733を備えた移動性管理エンティティ/サービングゲートウェイ(MME/S−GW)630に接続される。
一般に、機器の完全性を保証するには、ソフトウェア/ファームウェアまたはハードウェアの測定(例えば暗号ハッシュ値等)を行い、その結果を信頼される参照値と比較する。この信頼される参照値との測定結果(検証データと呼ばれる)の比較、またはそのような測定結果の関数若しくはグループ化は、機器内部で行われる場合も(自律妥当性検査)、外部で妥当性検査エンティティによって行われる場合(準自律または遠隔妥当性検査)もある。準自律または遠隔妥当性検査の場合は、測定結果を体系化されていないセットとしてペイロードで送信することができ、その際、暗号化、完全性保護、および暗号による証明を行うことができる。
完全性の検証に合格しなかったコンポーネントを見つけるために、測定結果のセットと参照値のセットとの比較を行って、完全性の測定に合格しなかったインデックスのセットを得ることができる。しかし、そのような体系化されていない測定結果のセットは、測定結果の数が非常に多い場合には管理が煩瑣になる可能性がある。
完全性の検査に合格しなかったモジュールの探索を最適化するために、検証データは、測定ログ、例えば記憶された測定ログ(SML)のハッシュツリーの形態で生成することができる。TCG(Trusted Computing Group)アーキテクチャおよび仕様で使用される用語「SML」を、本明細書に記載される測定ログの各種実施形態の説明で使用することができるが、SMLは測定ログの例示的実施形態の1つである。体系化の一例はツリー型妥当性検査(TFV)である。記憶された測定ログは平衡二分木に編成することができ、TPMコマンドを使用してツリーを生成するためのアルゴリズムを提供することができる。アルゴリズムは汎用的なものでよく、平衡二分木に合わせて拡張することができる。ツリー型検証で生成されるSMLの内容はTCG SMLに似るが、TCG SMLの処理および/または操作とは異なる形で、構築、形成、計算、使用、記憶、探索、更新、削除、通信による送信および/または受信、あるいはその他の方法で処理または操作することができる。
TFVは、例えば、後述するようなTrEで実装することができる。TFVは、多くの他の使用事例の類の革新をもたらし、TrEが目的とする、複雑な種類のネットワーク側のプラットフォームの妥当性検査を可能にする基準となる。TFVの技術的主旨は本明細書に記載される。TFVポインティングの概要が本明細書に記載される。また、TFVをTrEのコンテクストに置き、その応用例を本明細書に記載する。
TFVの要素の1つは検証データの階層構造であり、これは、遠隔のバリデータ(validator)によるプラットフォーム妥当性検査に種々の利点をもたらす。ツリー型の検証データを作成および管理するためのアルゴリズムが本明細書に記載される。さらに、TFVにおいて、プラットフォームの下部構造、すなわち検証データの部分木のアテステーションを使用してプラットフォームの妥当性を検査することができる。階層中の検証データの最上位レベルは根(の集合)と呼ばれ、特別の保護、例えばハードウェア保護がなされた検証データレジスタ等によりTFVの際に保護することができる。TFVは、小規模の効率的なアルゴリズムでツリー型検証データに作用することができる。TFVの実装全体は、TCB内部で実施するか、さらにはハードウェアで保護されたセキュアな実行環境で実施することができる。妥当性検査データの複雑な構造は、ツリー型検証データのツリー階層に関連付ける、かつ/またはツリー階層によって保護することができる。部分木は、構造と下部構造との関係により、検証データおよび妥当性検査データに固有のセマンティックを与えることができる。従って、部分木は、バリデータに対してプラットフォームの機能部分を識別することができる。
TFVの一実施形態では、変更を加えたTPMを使用することができる。既存技術であるトラステッドコンピューティングは、TFVの実現および/または標準化への潜在的な入口点となる。TFVは、二分木等のツリーから、下部構造を有するより一般的な構造へと容易に一般化できる。
以下に記載するのはTFVが提供することができる要素である。
セキュリティ:TFVでは、ツリー型妥当性検査データの根を保護することによりハードウェア保護が提供される。基準となる保護レベルは、TPMのPCRの保護レベルであり、これをTFVで維持できることが示される。プラットフォーム側のアルゴリズムを小規模にし、複雑度を低くすることで、小規模のTCBまたはオンチップでの実装が可能となる。
管理:TFVは、プラットフォームの下部構造を確実かつセキュアに取り出し、当該下部構造の集まりに基づいてプラットフォームを管理する方法および装置を含む。TFVの部分木で表されるモジュールは、柔軟に変更、更新、さらにはプラットフォーム間で移動することができ、任意のシナリオで必要とされるセキュリティプロパティを備える。
分散:TFVの階層は、妥当性検査をエンティティ間に階層的に分割することを可能にする。それにより、通信のシナリオと使用事例をより柔軟に設計することが可能になり、また効率にも利する。
効率:探索に効率的なデータ構造の1つである二分木をTFVで実装することができる。例えば、TFVでは、不合格コンポーネント(完全性の測定値が望ましくない)の探索が、TCGのようなプラットフォームアテステーションよりも効率的になることが示される。TFVに導入される自然な階層は、妥当性検査プロセスにおける負荷分散の選択肢を与える。
TFVの例示的特徴の1つは、TFVは、予め組み込まれた階層的な順序により、多数の低容量プラットフォームを「より中央の」エンティティで妥当性検査するために設計できる点である。従って、TFVは、ゲートウェイに接続する機器および/またはゲートウェイを介してネットワークに接続する機器に適する可能性がある。例示的な使用事例の1つとして、M2M通信のシナリオが挙げられる。TFVのこの特質により、TFVは、多くの既存の概念に直交する概念となり、信頼されるプラットフォームによる状態のアテステーションに、より多くのセマンティックを与えることができる。プラットフォームによるアテステーションの他の手法は全く逆の理念を示す。それらの手法は、複雑な妥当性検査データを生成できるプラットフォームには適するが、データの階層的、モジュール的な構造についてはあまり想定していない。TFVは、PBA、セマンティックアテステーション、仮想化および/またはHIM等の他の直交する手法と組み合わせることもできる。
説明で使用する用語と頭字語の一覧を以下に示す。
RIM:参照となる完全性の判断基準(Reference Integrity Metric(s))は、実際の測定データを比較することができる参照値を提供する。RIMは、妥当性検査のために、機器から提供される測定値に対応するものである。RIMは、所望の目標値を報告された測定値と比較する際の基準の役割を果たす。RIMは、例えばセキュアな検査機構で得られるコンポーネントコードの暗号ダイジェスト値として、一意にコンポーネントに関連付けられる点で完全性の証明を提供する。RIMは、測定値との直接の(決定論的な)比較を可能にする点で判断基準となる。
RIM証明書:RIM証明書は、TTPに署名された特定コンポーネントのRIMを含んでいる。
AuV:自律的妥当性検査
IDS:侵入検出システム
DoS:(Denial-of-Service)(攻撃)
PVM:プラットフォーム妥当性検査および管理。PVEによるプラットフォームの妥当性検査と、(e)HMSによるプラットフォームのOTA管理の組合せ。この組合せから導出することができる全ての可能な機能の組合せを備える。
DMS:デバイス管理システム。ホーム(e)NodeB管理システム(HMS)(TS32.583,[4])の一般化概念(3GPP LTE)。一般機器に適用され、PVM機能で強化される。
RIMマネジャ/マネジャRIMman:妥当性検査データベースV_DBを管理するエンティティ。管理を行う権限のある唯一のエンティティであり、暗号を用いてデジタル証明書に作用(検証、生成)する唯一のエンティティ。
SAV:準自律的妥当性検査)。PVMが基礎とする妥当性検査の変形。
TCG:トラステッドコンピューティンググループ
TSS:信頼されるソフトウェアスタック
TPM:信頼されるプラットフォームモジュール
TTP:信頼されるサードパーティ
TCB:トラステッドコンピューティングベース。実行時に信頼性を評定することができず、無条件で信頼しなければならないシステム部分。
CN:オペレータコアネットワーク
SHO:選択されたホームオペレータ
PKI:公開鍵インフラストラクチャ
PDP:ポリシー決定点
PEP:ポリシー実施点
D−H:ディフィー・ヘルマン(Diffie-Hellman)
TFV:ツリー型妥当性検査
検証データ(verification data):セキュアな起動プロセス時の内部検証の総合的な結果を一意に識別するデータ。主な例は、PCR値、すなわち多数の測定値のハッシュ値がチェーン化された形態のダイジェストである。
妥当性検査データ(validation data):検証データと区別して、妥当性検査データは、別のパーティ、すなわちバリデータに提出され、プラットフォーム状態の信頼性を評価するために使用される全てのデータである。
妥当性検査:例えばTCGに従って遠隔アテステーションとして実現されたバリデータへの妥当性検査データの提出と、バリデータによるデータの評価を厳密に妥当性検査と呼ぶ。妥当性検査データはしばしば、クオート(quote)された検証データレジスタ(例えばPCR)の値等の検証データからなる。妥当性検査は、暗号による検証データの検証以外に、ポリシーの評価およびバリデータによるアクションのトリガを含むことができる。
検証データレジスタ:不正アクセスおよび変更から検証データを保護するハードウェア記憶域。
信頼されるプラットフォームとの信頼関係の確立は、妥当性検査のプロセスに依拠する。妥当性検査により、外部エンティティは、提供されたプラットフォーム構成の証拠に基づいて、予想されるプラットフォームの振る舞いへの信頼を構築することができる。遠隔アテステーション等の妥当性検査機構では、信頼されるプラットフォームが、起動プロセス中に作成された検証データを公開する。それらのデータは、ロードまたは起動された全てのコンポーネントの例えばハッシュ値等の入れ子構造の測定値を保持しているプラットフォーム構成レジスタのハードウェア保護された値とすることができる。値は、セキュリティが保護された拡張動作で、線形の順序で作成することができる。検証データとそれに関連する測定ログの線形順序に基づくバリデータによるコンポーネントの細粒度の診断は、非効率的である場合がある。ツリー型検証データを作成する方法が提供され、この方法では、コンポーネントの測定値が葉に相当し、保護されたレジスタが根に相当する。この方法の仕組みを、限定された数のハードウェア保護されたレジスタと標準的な拡張動作を使用して説明する。このようにして、検証データのセキュリティを維持することができ、記憶測定ログは常にツリーとして編成することができる。ツリー型測定ログおよび検証データを使用してプラットフォームの妥当性を検査する基本の機構について説明する。
コンピューティングプラットフォームへの信頼を構築するプロセスは、独自の共通パターンに従うことができる。プラットフォームの起動時に、プラットフォーム上の保護されたエンティティによりコンポーネントを測定することができる。例えば、ロードおよび/または実行の前にコンポーネントを測定することができる。信頼のチェーンの生成は、トラステッドコンピューティングシステムの重要な概念である。このチェーンは、システムの立ち上げから、実行された命令およびプログラムを含む現在のシステム状態まで、切れ目なく続くことができる。各コンポーネントは、次のコンポーネントを実行する前に次のコンポーネントを測定し、報告することが必要となる場合がある。直後のコンポーネントを測定することにより、測定と実際の実行との間にコードが監視されずに実行されることを防ぐことができる。測定プロセスは、測定のためのRoT(root of trust)で保護することができ、例えばコードおよび構成データのダイジェスト値を計算することによって実施することができる。
検証データは、保護された動作で測定値から集計するか、かつ/または保護された記憶域に記憶することができる。検証データは、セキュアな起動の完了後等に、プラットフォームの状態を一意に識別することができる。これらのプロセスの実施形態は、TCG(トラステッドコンピューティンググループ)により認証し、セキュアブートを指定することができる。PCクライアントには認証ブートを使用することができる。モバイルプラットフォームのセキュアブートも使用することができる。この両者の違いは、セキュアブートはローカルの検証および施行エンジンを追加的に含むことであり、このエンジンは、コンポーネントの測定結果が信頼される参照値と等しい場合にコンポーネントを起動させる。
TCGは、コンポーネントコードおよび/またはデータのハッシュ値である測定値から、それぞれ高信頼プラットフォームモジュール(TPM)、モバイル高信頼モジュール(MTM)の拡張動作を介して検証データを計算することを提案する。データは、プラットフォーム構成レジスタ(PCR)に記憶することができる。例えば、バージョン1.1の仕様によれば最少で16個のPCRが存在することができ、またバージョン1.2では少なくとも24個のPCRをTPMが識別することができる。PCRは、許可されたコマンドからアクセスすることができる。拡張動作では、下記のように線形順序の入れ子構造のハッシュ値のチェーンを構築し、これはMerkle-Damgard変換に似る。
ここで、Viは検証データレジスタを表し(PCRの場合i=0;:::;23)、Hは耐衝突性のハッシュ関数(TPMの場合はSHA−1)であり、m=H(データ)は測定値である。このようにして、TPMの保護された機能と隠蔽された機能により、TCGの高信頼プラットフォームの検証データを操作から守ることができる。
検証データには、より表現力の高い測定値の記録および/または記憶された測定ログ(SML)にあるコンポーネント固有のデータが伴ってよい。外部エンティティに向けた妥当性検査時に、検証データおよび/またはSML等の他のデータにプラットフォームが署名し、バリデータに転送することができる。バリデータは、所望の粒度でプラットフォームの信頼性を評定できる場合があり、粒度は、妥当性検査時に伝達される全情報によって制限される可能性がある。妥当性検査の基準となる実施形態をTCGによりアテステーションプロトコルに定義することができる。TCGのTrusted Network Connectワーキンググループが構想しているように、例えば最初のネットワークまたはサービスへのアクセス時に、最終的に妥当性検査を使用して、信頼されるプラットフォームに修復ステップを行うことがTCGによって構想されている。
TCG仕様で予見される線形順序と異なり、ツリー(例えばMerkleハッシュツリー)として検証データおよびSMLを編成する方法が提供される。線形にチェーン化された検証データの効率面の問題を応用の観点から浮き彫りにする。検証データをツリーとして編成する場合の主要なセキュリティ上の問題は、TCG仕様の測定拡張動作が提供されていることから、データの生成をセキュアにすることである。ハードウェア保護されたレジスタの限定されたセットの中に検証データを生成する方法およびアルゴリズムも提供され、レジスタは、ハッシュツリーの根ノードを正確に表す。ツリー様の検証データおよびSMLをどのようにして効率的かつ効果的に妥当性検査に使用できるかも示される。ツリー型検証データの実装のオプションおよび実施された実験についても述べる。
検証データは、無条件のセキュリティでシステム状態についての情報を提供する。例えば、その情報はSMLとは別個にセキュアにすることができ、TCG標準によれば、SMLは、プラットフォームまたは妥当性検査を特に保護しない場合がある(署名されたアテステーションデータの一部でない場合がある)。署名されたPCR値、すなわち検証データ自体は、暗黙的な完全性の管理をSMLに提供することができる。そのために、全ての拡張動作をさかのぼることにより、SMLの測定結果から検証データを再計算することができる。
認証ブートでPCR値を使用して測定ログをセキュアにするためのTCG標準方式は、信頼されないマシン上で監査ログをセキュアにするためにSchneierおよびKelseyによって導入された技術に基づくことができる。実際にはこれは簡略化である可能性がある。何故ならば、ハッシュチェーンの最後の要素はPCRで保持されるのに対して、SMLは測定値を含み、ハッシュチェーンの中間項目は含まないためである。TPMを使用した完全性の測定は、完全性測定アーキテクチャ(IMA)で、TPMを使用して完全性を測定し、線形のSMLを生成するLinux(登録商標)カーネルモジュールとして実装することができる。
拡張動作を線形にチェーン化することで作成された検証データは、プラットフォームの遠隔診断および/またはコンポーネント単位の修復等の高度の管理には価値が限定される可能性がある。基本的に、SMLが操作された場所は、PCRに拡張される前の測定値の改ざんの場合でも、またはセキュアな起動後のSML自体の改ざんの場合でも、確実に箇所を特定できない可能性がある。さらに、何百または何千の測定コンポーネントを含む実世界のSMLの空間的複雑性により、妥当性検査に合格しないコンポーネント、すなわち、測定値が「正しい」参照値と異なるコンポーネントをSMLからふるい分けることが高費用になる場合がある。コードおよび/またはデータを検査するために、各種の暗号チェックサム機能を利用することができ、それらの機能は、「正しい」データのチェックサムの完全性が維持されることを必要とする場合がある。各種マシンにある有効なバージョンのソフトウェアの集中データベースを必要とすることは、重要な管理上の問題であり、効率的な解決を必要としている。例えばマシン間通信で必要とされるような将来のネットワーク化された機器の大規模な配備には、信頼される機器と、ネットワーク側のバランスが取れた効率的な信頼インフラストラクチャとが必要とされる可能性がある。セキュリティ要件は、ネットワークに緩く接続され、半自律的に動作する機器については高くなる可能性がある。当業界で検討されるシナリオは、接続する機器の遠隔からの完全性検査または妥当性検査については高レベルの要件を伴う可能性がある。本明細書に記載される方法および装置を使用して、妥当性検査に表現性を与え、効率的、かつ/またはセキュアにすることができる。
TCGインフラストラクチャワーキンググループの仕様は、この問題への取り組み、すなわち検証済みのコンポーネントと下位コンポーネントを階層的に区別することを含むことが可能である。プラットフォームの構造を表すToT(Tree of Trust)の概念および表記を説明する。ToTのノードは、TPMからアプリケーションに至るプラットフォームコンポーネントを、信頼およびセキュリティについてのステートメントを注釈として付加して表すことができる。ToTを使用して、プラットフォームに有するべき信頼を評定することができ、さらには何らかの制約に従ってプラットフォームを再編成することもできる。
信頼を単に線形チェーン化することの弱点が予想される別の技術領域は仮想化である。仮想マシンは、可能性としては多くの層で動的に作成および/または破壊される可能性があり、結果として信頼の依存関係がツリー状の動的な構造となる。当業界は、プラットフォームの信頼性を正確に評定するためには構造化された妥当性検査データが必要となる可能性があることを認識しているが、そのようなツリー型のデータ階層と検証データ(PCR値)との細粒度の関連付けがない可能性がある。
検証データおよびSMLは、二分木構造に編成することができる。この構造では、検証データレジスタが根になり、SMLデータ構造が内部ノードを含むことができ、葉はコンポーネントの測定値となる。全体の構造は、例えばMerkleハッシュツリーのクラスの代表等のツリー型になる。この方法をn分木および任意のツリーに一般化することができる。図3のクリスマスツリーを使用して、ツリー型検証の一般的な概念を説明する。
図3は、ツリー型のSMLおよび検証データの概略的な構造を示す。星は、検証データレジスタに記憶されたツリーの根を表す。コンポーネント(コードおよび/またはデータ)は、葉にある包みで示される。コンポーネントの測定結果のハッシュ値は、引き結び(slip knot)で示される。内部ノード(球)は、検証情報を上流方向に根まで伝達する。線は、妥当性検査のためのツリーのトラバースを示唆し、これについては下記でより詳細に説明する。
ハッシュツリーの根ノードに相当する検証データのセキュアな作成は、問題を呈する場合がある。通常の拡張動作では、コンポーネントに対するRoTM(Root of Trust for Measurement)で取得される測定値と、現在の検証データレジスタ値Viとが使用され、動作自体は、ハードウェア保護されたTPMで行われる。
従って、特に、保護せずにSMLに記憶されている測定結果は生成プロセスでは使用されない。これは、新しい葉を追加するとツリーのd−2個の内部ノードに影響する可能性のあるハッシュツリーでは可能でない場合がある。dはツリーの深さである。1つの葉の測定値を入力として使用し、TPMの拡張動作および他のTPM機能を用いて、限定された数のハードウェア保護レジスタ(PCR)の内部にツリー型検証データを生成することが課題となる。
ツリー型検証データを作成し保護するシステムに要求される最小限の要件から、以下で説明する方法および装置は、TCG標準に準拠したプラットフォームおよびセキュアハードウェアの要素に限定されないことが明らかになろう。
プログラムの検証は、ロードの前およびブート中に行うことができる。アテステーションも本明細書に記載されるように使用することができる。コード認証は、トラステッドコンピューティングの目標の1つである。実行されるコードは、プラットフォームの起動をセキュアにすることにより保護することができる。例えば、ハードウェア機構を使用して、標準的なPCハードウェアでセキュアなコプロセッサを用いてホストへの信頼を実現することができる。信頼されるプラットフォームを適用することができる。セキュアなブートストラップ処理にはセキュアハードウェアが関与することができる。例えば、セキュアなコプロセッサは、異常を検出するとブート処理を停止することができる。これは、ブートストラップROMがセキュアであることを前提とする。これを保証するために、ブートベクトルおよびブートコードが直接セキュアコプロセッサから供給されるか、またはブートROM自体がセキュアなハードウェアとなるように、システムのアドレス空間を構成することができる。
それでも、セキュアコプロセッサは、ソフトウェアの署名を既知の値に照らして検査することにより、システムソフトウェア(OSカーネル、システム関連のユーザレベルソフトウェア)を検証する。コードの耐改ざん性をこのプロセスで実装することができる。この問題への対処法の1つは、例えばXOM(eXecute Only Memory)プロセッサアーキテクチャ等のハードウェア、およびその上に構築されるXOMオペレーティングシステム等、プログラム実行のための信頼の基礎をハードウェアに置くものである。これは、プログラムのセキュアなロード、および/または外部エンティティへのアテステーションの問題を解決しない可能性がある。AEGISでは、PCでセキュアなブートを使用する。例えば、AEGISは、Terraと同様に署名されたハッシュを使用してブート処理時に各レイヤを識別する。Terraでは、ロードされたコンポーネントを証明書の完全なチェーンで立証する(attest)ことができ、結果として仮想マシンを立証する。
TCG仕様は、バイナリの実行可能ファイルを検証することによりプラットフォームの完全性を遠隔から検証する双方向の遠隔アテステーションを定義している。実行コードは、ロード時に測定することができる。測定結果はPCRに検証データとして記憶することができ、TPMは、TPM保護キーでそれらに署名することによりそのデータを立証することができる。ベリファイア(verifier)は、それらの判断基準を受け取ると、プラットフォームを信頼できると見なしてよいかどうかを判定する。構成を送信し、検証することができるため、ベリファイアがマシンの構成を知ることができる。さらに、バイナリのアテステーションは構成を開示し、プライバシー面のリスクを呈する。別の解決法では、「プロパティ」と「プロパティに基づくアテステーション」(PBA)が論じられる。PBAは、詳細な構成データを明らかにすることなく、検証されるプラットフォームのセキュリティプロパティをベリファイアに保証することを可能にする。信頼されるサードパーティ(TTP:trusted third party)を使用して、プラットフォーム構成をその構成で実現することができるプロパティ(特に望ましい/望ましくない機能)に対応付けた証明書を発行する。そして、TPMは、ゼロ知識の証明を使用して、完全な構成を開示することなく、ベリファイアにそれらのプロパティを立証することができる。
PBAは、TCGのプライバシー認証機関(CA)と同様に、しかしその役割を拡張して、プラットフォーム妥当性検査のインフラストラクチャ面の問題をTTPに移す。別の代替法がNexus OSによって提示される。Nexus OSは、最小限のトラステッドコンピューティングベース(TCB)を基礎として、ユーザ空間と特権プログラムとの間に強固な分離を確立する。Nexusは、セキュアなメモリ領域並びにその領域を保護する監視および施行マシンを有する。応用の1つは、デバイスドライバをユーザ空間に移動するものである。Nexusによるアテステーションは、監視対象のプログラムに記述ラベルを付加し、それによりPBAに似た表現力を可能にするが、システム内在型である。PBAの概念とNexusの手法はいずれも、さらに動的に管理すべき多数のコンポーネントからなる複雑なシステムの妥当性を検査する手段を持たない。両者の手法は本発明の手法に直交し、本発明の手法と組み合わせることも可能である。
階層的完全性管理(HIM)は、コンポーネント単位の完全性の測定と、ポリシーを利用したプラットフォームコンポーネント管理のための動的なフレームワークを提示する。コンポーネントおよび下位コンポーネントは、この目的に有用な最も一般的な構造である依存関係グラフを介してHIMで関連付けられる。しかし、HIMは、遠隔からのプラットフォーム妥当性検査を目的としておらず、PCR内の構造化されたプラットフォーム検証データを保護しない。そうではなく、HIMは、グローバルコンポーネント構成レジスタ(ソフトウェアレジスタ)テーブルに複数の測定結果を共に保持する。
大きなデータセットの完全性を保護するための、例えばMerkleによって導入されるハッシュツリー等のハッシュツリーの応用例の1つは、PKIにおける証明書管理である。これは、Merkleツリーや認証探索木等のツリー構造を使用して、長期間にわたるCAの記録責任を生じさせることができる。ハッシュツリーの使用は、一般的な長期間にわたるデジタルデータのセキュアな保管に合わせて拡張することができる。ハッシュツリーは、実行時のメモリ保護にも使用することができる。
システムは、記憶および/またはメモリ保護にハッシュツリーを使用することができ、システムは信頼されない記憶域とTCBに分割することができる。TCBで実行されるプログラムはハッシュツリーを使用して、信頼されない記憶域に記憶されたデータの完全性を維持することができる。信頼されない記憶域は、例えば、プログラムがTCBに収まらないデータを通常記憶およびロードする、容易にアクセス可能な大容量の記憶装置である。ツリー全体の根は、一定サイズの信頼されるオンチップレジスタに記憶することができるが、他のノードは、メインメモリまたはキャッシュに記憶される場合がある。ハッシュツリーの別の使用例には、無線センサネットワーク(WSN)で配布コードの認証をどのように支援することができるかが示されることを含むことができる。またWSNでは、複数のノードに関与するデータ集約の完全性をハッシュツリーを使用して保護することができる。
検証データを探索可能にする別の実施形態は認証済みのアペンド専用スキップリストを含むことができ、これは、「ショートカット」をたどることにより記憶されたデータ要素を高速に探索できるように設計された、ソートされ、互いにリンクされたリストである。
しかし、ツリーは、例えば妥当性検査に合格しない葉ノードのコンポーネントの部分集合を効率的に求める等、プラットフォームの状態の妥当性検査により適している可能性がある。耐改ざん性の検証データレジスタの限定されたセットを使用して、コンポーネントの測定値から、例えば二分木のMerkleツリー等のツリー構造を生成するシステム、方法および装置が本明細書に記載される。ツリー構造は、例えば標準的な拡張動作等のTPMの機能を使用して生成することができる。アルゴリズムは小さくして、TCB内部、特にオンチップで実行できるようにすることができる。方法のこの部分でハッシュツリーの根を生成する際のセキュリティを増すことができ、それによりツリーノードにより高いセキュリティを提供することができる。本明細書には、一般的なPCR値およびSMLに対して強化された診断能力で効率的な妥当性検査を行うためにツリー構造を活用するシステム、方法および装置も記載され、遠隔のプラットフォームの妥当性検査のセキュリティ機能を増大し、同時に、破綻箇所を探索する際のツリー状構造の効率から利益を得る。このようなツリー構造データの使用は、セキュアな診断、妥当性検査および/またはアテステーションに使用することができる。
本明細書に記載されるシステム、方法および装置は、限定された数の検証データレジスタを使用して、根となる1つの検証値をセキュアに生成することができる。例えばTPM動作、PCRおよび/またはSML等のTCGで規定されるトラステッドコンピューティングの具体的実施形態の各参照は、本明細書に記載されるシステム、方法および装置の実施で使用される例示的実施形態である場合がある。アルゴリズムおよび/または手順は、それらで使用される最小限の機能と共に、各セキュリティ技術に適用することができる。
ハードウェア保護されたレジスタ、
、例えばPCRの1つは、最終的なツリーの根を含むことができる。ツリーは二分木として、アルゴリズムをコンパクトに保ち、例えば不合格コンポーネントを細粒度で検出できるようにする。葉は測定値を保持し、内部ノードは、変更を加えたSMLに記憶することができる。SMLは、妥当性検査データのツリー構造を支援するように変更することができる。すなわち、測定値の線形リストではなく、そのデータ構造で標準的なツリー操作およびトラバースに対応することができる。プラットフォームの妥当性検査時に効率的に探索できるように、SMLは、新しい葉の追加をサポートし、エッジ間の関係を保持することができる。ツリーの深さdの葉に新しい測定結果を追加するには、その葉の縮小ハッシュツリーのd−1個のノードおよび/またはV∈vに記憶されたツリーの根を再計算することが必要になる可能性がある。Merkleツリーでは、2進の拡張動作(1)が非可換であるため、必然的にそれぞれ「左」のエッジと「右」のエッジへのエッジの色分けがある。葉はこの順序を継承し、葉は左から右へと追加される。葉nのd桁の2進表現、0≦n≦2d−1(<n>と表す)により、葉から根に至る一意の経路にある内部ノードおよびエッジの自然座標が得られる。すなわち、k番目の桁(MSBから数える。k=1,...,d)<n>k=1が、その経路上の深さk−1のノードがそれぞれ、<n>k=0または<n>k=1により、左エッジで接続されるか、右エッジで接続されるかを決定する。
アルゴリズムの実行中に作成される各部分木の根は、V∈vにセキュアに記憶することができる。同じ深さd’の部分木(測定値は深さ0の部分木)が2つ存在する場合は、それらを併合して深さd’+1の1つのツリーにすることができる。併合操作を使用する場合、部分木の根を保護している2つのVの1つを併合操作の後に解放することができる。新たに到着する測定値のための更新アルゴリズムは、レジスタV1,...,Vd-1が深さ1,...,d−1の「アクティブな」部分木の現在の状態を保持し、Vdが現在のグローバルな根の値を保持できるように作成することができる。
ここで言う「アクティブ」とは、その根が同じ深さの部分木との併合による完成を待っている部分木と説明することができる。作成の際は、実際の測定値、保護されたレジスタ、および/または通常の拡張動作を使用し、非保護のメモリ箇所が関与しないように注意する。深さdの完全な二分木の空ノードをニル(nil)で表す。ツリーの作成は、図4に示すアルゴリズム1で行うことができる。
アルゴリズム1に含まれる各種動作には以下がある。
M Vdに測定結果を追加する;Vd←m
SV 検証データレジスタをSMLに記憶する;Vk→SML
Sm 測定結果をSMLに記憶する;m→SML
V 検証データレジスタをコピーする;Vk←Vk+1
E1 測定結果でVdを拡張する;Vd←Vd◇Vk+1
E2 内部ノードレジスタを拡張する;Vk←Vk◇Vk+1
上記の記号は、動作とその実行時を入れ替え可能に表している。上記にない1つの動作m←RoTMは、Smに包含することができる。
n<2dの場合、ツリーは右のエッジで不完全である可能性があり、図6に示すアルゴリズム2に示すクリーンアップ手順を実施することができる。
アルゴリズム2(図6)の結果、V1が最終的に全ての部分木情報を含むように根が最終的に併合される。このクリーンアップ手順には、図4に示すアルゴリズム1の行17〜21のテストのためにツリーがまだ完全でない場合に到達することができる。ツリーを完成させる規則は、図5に示す構成が右エッジで成立することである。
内部ノードは、左エッジに沿った移動(forwarding)の結果(軽微な冗長性を伴う)であってもSMLに記述することができる。正式には、ツリーを完成させる上記規則は、本明細書に説明するように、x◇nil=xとなるように「◇」動作の概念を変えることと解釈することができる。
図4に示すアルゴリズム1で規定される順序で葉ノードおよび内部ノードをSMLに追加していくと、結果得られるツリーの自然な順番付けを得ることができる。深さ3の不完全なツリーの場合のこの順序を図7に示す。
図7で、生成されたSML内のマークした項目10および11は同一である。これは、11は、クリーンアップアルゴリズム2の移動動作で作成されたためである。SMLの順序を使用して、二分探索でSML中のツリーノードを扱うことができる。長さ2d+1−1のSML中の通し番号Kを与えられると、この探索は、最後の項目である根から進行する。残りの2d+1−2個の項目は等しく大きさ2d-1の部分に分割され、Kが左部分にあるか右部分にあるかが判定される。この手順は、Kが現在の部分の一番右の要素を指すまで繰り返される。行われる判定の連続で、根からSML中のインデックスKのノードに至る左と右のエッジのシーケンスが得られる。
図4のツリー形成アルゴリズム1は、b等、任意の一様のアリティ(arity)のツリーに合わせて容易に適合することができる(関数または演算のアリティとは、その関数がとる引数またはオペランドの数である)。そのためには、2値座標<n>を、b値座標<n>(b)と、図4に示すアルゴリズム1のそれぞれ行4および行12で評価されるそのd番目の桁とk番目の桁に置き換えなければならない。その場合、評価される式を以下のものに変更しなければならない。
アルゴリズム2(図6)もそれに応じて適合することができる。任意のツリーに合わせてさらに一般化するには、関連するノード座標の設定、すなわち、マッピングn→nodeの設定が必要となる可能性がある。アリティが2より高い各ノードでは、そのノードに接続する区間のハッシュ拡張は線形になるので、上記の不利点が該当し、検出粒度の低下が発生する可能性がある。
一般化の手順から、限定された数V1,...,Vrの検証データレジスタで、ツリーの葉にある有限数のコンポーネントをカバーできることが明らかである。最大容量は以下のように計算することができる。第1のレジスタV1の手順では、r−1個の他のレジスタを長さr−1のパイプラインとして使用して、深さrのツリーを構築することができる。V1が占有されると、第2のレジスタで深さr−1のツリーに対応し、以下同様にして最後のレジスタVrまで続き、最後のレジスタVrではパイプラインの長さが0、ツリーの深さが1となる。従って、レジスタのツリーに保持される葉の合計数は以下によって得ることができる。
v1.2仕様に準拠したTPMのPCR数であるr=24の場合は、r個のツリーの葉に33,554,430個のコンポーネント測定結果の場所が得られる。例えばTCGのPCクライアント仕様ではPCR0〜7が予備なので、最後の16個のPCRに制限した場合でも、仕様では131,070個の測定結果を数える。この容量は大きいが、標準は線形に拡張可能であるため、無制限ではない。従って、起動時または実行時に行われる測定数は事前には分からないため、最後のレジスタは、予備として、容量制限に達した時に線形に拡張することができる。図8にこの構成を示し、ツリーの検証データの最大容量の構成を示す。図8では、葉の測定値をmと示す。
本ツリー形成アルゴリズムの空間的複雑性は非常に低い。内部データは正確に3つのd∈{1,...r}、n∈{0,...2d−1}、およびk∈{1,...d}を必要とするため、そのデータサイズは最大で
ビットである。
また、実装によっては、1つのレジスタが現在の測定値を受け取って保持する必要がある場合があり、かつ/または、検証データレジスタに対する動作用の中間レジスタとして現在の測定値を受け取って保持する必要がある場合がある。SMLの大きさは緩やかに増大する。深さdの完全に埋められた二分木の場合は、葉の測定結果を含む2d+1−2個のノード値がSMLに記憶される(根ノードはViに保持される)。すなわち、ツリー型SMLは、測定値だけを含む線形に形成されたSMLの大きさの2倍未満である。
時間的複雑性を推定するために、深さdの完全なツリー、すなわち2d個の葉の測定値を考える。ツリーの構造から、各動作の発生回数を数えることができる。Smは、各葉ノードで、すなわち2d回発生する。E1およびMは、深さd−1の各内部ノードで発生し、すなわち2d-1回発生する。VおよびE2は、深さd−2から上の各内部ノードで発生し、すなわち2d-1−1回発生する。最後に、Svは、V1に残っている根を除くツリーの各内部ノードで発生する。すなわち、Svは2d−2回発生する。これらすべてから、フロー制御を無視すると、2d-1(E1+M)+(2d-1−1)(V+E2)+2dSm+(2d−2)Svの推定がアルゴリズムの実行時間として得られる。類似する動作{E1,E2}、{M,Sv,Sm}をまとめると、2d-1(E1+E2)−E2+2d-1(M+2Sv+2Sm)−2sV+(2d-1−1)Vとなる。
各種メモリ動作が等しく時間を要し、共通の定数
で制約されると想定し、ここで単純な読出し/記憶の実装、上記の省略した動作についてのSm、そして同様に拡張動作
に係数2が含まれるとすると、d>1の場合のツリー形成の時間的複雑性の大まかな推定は、
によって与えられる。拡張動作が支配的な要因である場合は、ツリー形成で必要とされる拡張動作は、認証ブートの線形チェーンより1回少ない可能性がある。
上記手順で生成されたツリー型検証データを妥当性検査するために、各ツリーノードで入手可能な情報を利用する妥当性検査方式を説明する。平均の計算費用を、不合格の測定結果の数およびその相対的な比率との関係で計算することができる。
通常の認証ブートで生成および記憶され、順次PCRに拡張された測定結果の線形チェーンを参照事例として取り上げると、ツリートラバースによる妥当性検査は大きく異なることが分かる。線形チェーンの場合、SMLの操作は基本的には箇所を特定することができず、一方、ツリー型SMLのトラバースでは操作が行われた部分木を特定することができる。同様の事柄が診断用の妥当性検査、すなわち、妥当性検査対象のプラットフォームの要求基準構成に一致しないコンポーネント(本明細書では不合格コンポーネントと呼ぶ)の探索にも当てはまる。線形にチェーン化されたSMLの場合、この探索には、各測定結果を参照値と比較すること、および/または、PCRに至るまでの拡張動作のチェーンを再計算してSMLの完全性を検証することが必要となる可能性がある。線形SMLの操作は箇所を特定することができないため、PCR値を再現できないことは、診断用の妥当性検査が可能でない可能性があり、不合格コンポーネントを適正コンポーネントから区別できない可能性があることを意味する。
ツリー型SMLの場合は、状況ははるかによい。SMLの操作が疑われる部分木が特定された場合でも、SMLツリー内のその補完を妥当性検査することができる。また、診断用の妥当性検査の場合は、不合格コンポーネントの集合を判定し、同時に根の検証データレジスタの内容を検証する際に大幅な高速化を期待することができる。
ツリー型SMLの妥当性検査を使用して、可能な場合は、妥当性検査に合格しない葉の部分集合を見つける、かつ/またはSMLの操作を検出することができる。ローカルに利用できる比較用の参照ツリーがバリデータにあることを想定することができる。妥当性検査は、ツリーの根、すなわち検証データ要素Vから開始し、SMLデータのツリーをトラバースしていく。それにより、測定結果が参照値と異なる、不合格コンポーネントと呼ばれるコンポーネントの葉の集合を得ることができる。ツリーのトラバースでは間引きを行う深さ優先探索を適用することができ、判定は全ての分岐ノードで行うことができる。ツリーは二分木とすることができる。分岐ノードとその2つの子のSMLツリー値を同じノード位置の参照ツリー値と比較し、一致する場合は結果をg(good)、かつ/または一致しない場合はb(bad)と表すことができる。この表記法では、図9に示すように以下のような状況が発生しうる。図9は、ツリー型SMLのノード構成の分類を示す。
図9の事例(a)では、この親ノードより下の部分木全体の妥当性検査が肯定の結果となり、トラバースはこのノードで終わることができる。図9の事例(b)では、バリデータが子ノード値に拡張動作を適用することにより、親ノードを再計算することができる。再計算された値が親ノードの値と一致しない場合は、根がbadとマークされた部分木の1つでSMLの操作が行われたことを意味する可能性がある。これは例外として処理することができる。
そうでない場合、妥当性検査は次のツリーレベルに進み、badな値が見つかる部分木、すなわち(b)では左、右、または両方の部分木をトラバースすることができる。事例(c)では、ツリー操作の例外を検出することができる。この検出は、拡張動作を再計算することなく行うことができる。最後の事例(d)は、二分木が不完全な場合、かつ/または右の枝がヌルの場合に発生する可能性がある。そして、値xが値yと等しい場合があり、その場合トラバースは左に進み、それ以外の場合はツリー操作の例外が発生する可能性がある。
ツリー型SMLを妥当性検査する利点の1つは、正しい根を持つ部分木を、不合格コンポーネントの以降の探索から除くことができることである。次いで、ツリー妥当性検査の性能を定量的に評定するための単純な確率論モデルについて説明する。例えば、SMLが深さdの完全木であるとする。バリデータは、既知の所望のプラットフォーム構成を表す参照用の完全木を有する。ハッシュ演算の再計算が妥当性検査の複雑性を推定する際の主要な費用要因となる可能性があり、対して比較は低費用である可能性がある。不合格の葉ノードの無作為の集合を仮定する。
診断妥当性検査と呼ばれる楽観的妥当性検査方式を使用することができ、これは、根から、不合格コンポーネント、すなわち、参照ツリーの葉に対してbadな測定値を持つコンポーネントまでの経路をトラバースする。この方式の特性の1つは、真正な測定値を持つ不合格コンポーネントを見つけることである。診断妥当性検査は次のように進行することができる。参照ツリーの対応するノードと異なる内部親ノード、すなわちbadな親ノードに到達する場合は、図9の状況の1つである、事例(b)か、または事例(c)の一番右の構成に遭遇する可能性がある。後者の場合は、明らかなSMLの完全性の破綻であるため、親ノードの再計算は行わなくてよい。この根構成を有する部分木は、不合格コンポーネントについて信頼できる情報をもたらさない可能性があるため、以降のトラバースから除くことができる。この場合、それ以降のステップは、バリデータのポリシーに依存することができる。事例(b)のノード構成は、1回の拡張動作0で根ハッシュから親ハッシュを再計算して、バリデータの参照木からは分からない可能性のある構成が真正であることを確かめる必要のある構成である。根が、調査対象のbadな親ノードのgoodな子である部分木は、以降のトラバースから除いてよい。この診断妥当性検査の手順では、構成/事例(a)および図9(c)の左から3つの構成を診断妥当性検査から暗黙的に除外する。それらの構成は、意味をなす場合には、SMLツリーのさらなる鑑定評価で検討することができる。
診断妥当性検査では、不合格(bad)の葉ノードから根までの経路の和集合にあるbadな内部ノードを訪れ、そのノードにハッシュ演算を行うことが必要となる可能性がある。その他の点では改ざんされていないツリーでは、それによりbadな親ノードを含む(c)の右の構成/事例を暗黙的に除外することができる。独立同分布(i.i.d.)のbadな葉の部分集合は、葉の含有比f∈[0,1]を構成する。badな葉の数は2dfである。badな内部ノードの予想数Einner(f)は下記で説明するように計算することができる。
本発明で対処される問題の1つは、無作為の独立同分布による葉の選択で生成される二分木の二色分け(badな内部ノードとgoodな内部ノード)と、その部分木を根までつなぐ経路の色分けの問題である。そのような葉と経路の無作為の選択は、長さdの独立同分布のビット列を無作為に選択することと等価である可能性がある。N=2dの葉の集合からk回選択した後の色分けされた葉の予想数
を計算する。反復的に、
かつ
であり、これを解くと
が得られる。
選択されたビット列の全ての部分列は統計的に独立しているので、同じ引数がレベルd−1,...0の内部ノードに適用される。従って、色分けされた内部ノードの予想数は、d−1の合計
により得られる。まだ求められていないのはある選択の予想数
に対応する選択の予想回数kであり、0≦f≦1は葉の目標含有比である。kについてこの式を解くと、
が得られ、N=2dが挿入されている。これより、fに依存関係にあるbadな内部ノードの予想数Einner(f)を計算することができる。
図10に、d=16の場合の2d−1個の内部ノードの含有比を示し、d=16の場合は上記説明に従ってハッシュ演算を行うことができる。これは、badなコンポーネントを確実に判定するために必要とされる可能性のあるハッシュ演算の回数に相当する。線形SMLの参照事例では、最終的なPCR値を再計算するために2d+1回のハッシュ演算が必要となる可能性がある。この事例を図10の上の縦軸で概略的に表す。
参照値との比較に関しては、状況が多少異なる場合がある。診断妥当性検査のためのツリーのトラバースは、参照ツリーの対応する内部ノードとの比較に合格しないbadな内部ノードに沿って下方に進行していくことができる。そのために、badな内部ノードの両子ノードを各事例で比較する場合があり、よって比較に関する複雑性が数Einner(f)の2倍になる可能性がある。線形のSMLでは、2d個の測定結果全てを参照値と比較する必要がある場合がある。
バリデータにおけるハッシュ演算の費用をhとし、2つのハッシュ値(SHA−1の場合は160ビット)の比較の費用をcとすると、線形の場合の総妥当性検査費用は、(2d+1)h+2dc=2d(h+c)+h>2d(h+c)になる。これは、ツリー型SMLの診断妥当性検査と同じ情報を線形SMLから得るための最小の手間である。一方、ツリー型SMLの場合(根を数に入れる)は、費用は(Einner(f)+1)(2c+h)となる。
の場合ツリー型妥当性検査はより効率的になり、λ=c/h<<1である。右側に0.99の限界を与える非常に大きな余裕λ<0.01をとった場合でも。そして、d=16の場合、ツリー型妥当性検査は、badな葉ノードの含有比fが85%と高い場合に、より効率的である可能性がある。
ツリー型SMLの診断妥当性検査は、線形SMLよりもハッシュ演算に関してより性能が高い可能性があり、badなコンポーネントの含有比が大きい場合でも線形SMLに勝る可能性がある。ツリー型SMLの診断妥当性検査は、不合格コンポーネントの含有比が小さい場合に非常に有利である可能性がある。ツリーの妥当性検査は、badな葉ノードが非一様に分布している場合、例えばクラスタ化を示す場合により効率的である可能性がある。
直接比較される線形のツリー妥当性検査と診断ツリーによる妥当性検査の両方を利用することが可能であるが、最終的なPCRの再計算が失敗する場合には線形妥当性検査は不可能である場合がある。これは、その場合は、個々の測定結果の比較で信頼できる情報が得られないためである。つまり、各測定結果は、ハッシュチェーンを破綻させた測定結果を隠すためにSML内で捏造される場合がある。ツリー型の利点の1つは、バリデータの計算量を減らしても妥当性検査データが得られる点である。
ツリー形成アルゴリズム自体に関しては、TCG標準に準拠する信頼されるブートプロセスと同レベルのセキュリティを達成するために、検証データレジスタに対する動作をハードウェアで保護されたTPM環境内部で実行することができる。上記で列挙したツリー形成アルゴリズムの大半の動作の一部は、標準に準拠したPCRで実行可能な非標準TPM機能であるが、実際には、通常の拡張動作E1は内部の標準機能であり、SvおよびSmはPCRの読出し動作で実現することができる。
TPMを拡張してPCRをツリー型検証データレジスタに変えるために必要になる可能性のある最小限の変更を説明し、一方、ツリー形成アルゴリズムはTPMの外側で実行することができる。その後、ツリー形成のためのTPM内部コマンドについて説明する。ツリー型検証データをソフトウェアベースで実装する別の実装を説明し、その場合、根のレジスタは、信頼されるアプリケーションで管理されるソフトレジスタとすることができ、そのレジスタの現在の状態は「本物の」レジスタ、例えばPCRにより保護される。最後に、TPMのソフトウェアエミュレーション環境「ethemba」に組み込まれたTPMエミュレータによるツリー形成の実験的実装について説明する。
最小限の手法を採用してツリーの形成を実装し、アルゴリズム1および2と共に使用するPCRを可能にすることができる標準的TPMへの変更を得る。この手法は、上記の基礎的な動作をTPMコマンドまたはそれに変更を加えたコマンドで実装するものである。内部ノードの現在の状態を表すレジスタに対する記録(bookkeeping)作業を含むアルゴリズムのコアは、認証ブートやセキュアブート等のシステムの完全性測定プロセスでツリー形成を行うソフトウェアのRoT(root of trust)として実現することができる。
動作SvおよびSmは問題を生じず、TPM_PCRReadコマンドで実現するか、それぞれツリー形成ソフトウェアに直接実現することができる。Eiは、ツリーの最下位レベルの全右エッジで発生する可能性があり、Vに拡張された測定結果の左側のシブリング(sibling)から得られるすでに測定された値を保持しているVを拡張することができる。従って、E1は、式(1)で定義される標準のTPM_Extend動作に含めることができる。E2は、ツリー内部の右エッジで発生し、TPM_PCRRead、次いでTPM_Extendでモデル化することができる。
動作MおよびVは、ツリー内部の最下位レベルの左エッジで発生する可能性がある。これらは、2つの理由から問題を呈する可能性がある。まず、PCRは直接書き込みされない場合があり、MまたはVにおける最初のステップとしてTPM_PCR_Resetを介してPCRをリセットする自然な手法が問題となる場合がある。これは、16より上の標準TPMのPCRだけしかリセットすることができず、それも正しいローカリティからしかリセットできないためである。従って、十分なPCRがリセット可能であることと、そのPCRが、ツリー形成ソフトウェアが信頼されるコードとして実行されるローカリティに対応することが必要となる。
第2に、リセット後も、PCRを変更できる動作であるTPM_Extendは値を直接レジスタにコピーするのではなく、160ビットの2進の0x00であるリセット後のPCRの既存値と、入力値とで(1)を正確に実行することができる。それにより、入力値と異なる結果が得られる。PCRに直接書き込む、またはPCR間で値を移動する新しいコマンドを露出することを回避する選択肢の1つは、PCRがリセット後の初期状態にあることを示すリセットフラグをPCRに備えるものである。そして、そのフラグが真である時にPCRに直接書き込みを行い、その後フラグを偽に設定するようにTPM_Extendを変更することができる。
MおよびVが常にツリーの左エッジで発生し、右側のシブリングが空(ニル:nil)の場合は関係する2つのシブリングに応じて決定論的に結果を生成することを認識すると、第3の選択肢は、Merkleハッシュツリーの定義からわずかに逸脱するものとなろう。その場合、SMLツリーの各基本三角形の正しい値設定は図11に示すようなものとなる。
すなわち、最初のステップでVまたはMをTPM_PCR_Reset、次いでTPM_Extendでモデル化して、0◇x=H(0||x)を得ることができる。次いで、右のシブリングをそのレジスタ内で通常通りに拡張し、その結果をSMLに書き込む。それに合わせた中間段階におけるニルのノード値の扱いとツリーの完成についても下記で説明する。多くの場合、SMLに記憶されるハッシュツリーは不完全、すなわち空の葉ノードおよび内部ノードを含んでいる可能性がある。連続した測定プロセスでは、値がニルと表されたノードは動作MおよびVで手続き的に処理することができ、これは右のニルのシブリングを無視してよいことを意味する。これは、ツリー形成の中間段階であるアルゴリズム1の行8および18と、最後の測定後にツリーが完成するアルゴリズム2の行29で発生する。
一般に、すなわち標準TPMの制約に背くと、ニルは、演算◇の両側単位元とすることができる。すなわち、x◇nil=nil◇x=x、かつnil◇nil=nil(式3)。
この規約は、上記の規則/事例(d)を証明する。これは通常の拡張動作の再解釈であり、アルゴリズムの構築において演算MおよびVを省くためにも使用することができる。すなわち、MおよびVを、レジスタVをニルにリセットし、その後それぞれ演算V←V◇m、V←V◇V’を行うことに置き換えることができる。
この規約を実装する場合、ニルは、PCRレジスタの追加的フラグ並びに◇の入力および出力として表すことができる。PCRの場合、ニルフラグは特定のリセットコマンドで設定することができる。PCRの拡張動作の入力としてニルが発生する場合は、TSSのロジックまたはTPMの変更でハッシュ演算(1)の実行を阻止し、直接PCRに書き込むことができる。
ツリー形成をTPM/ソフトウェアに分割する実装は、結果として得られる根の検証データレジスタ値のセキュリティレベルについて妥協する。ツリー型検証データは、ここで提案するアルゴリズムをTPM内部で実装することによって生成することができる。そのためには、下記のようにTPMの変更が有効である場合がある。変更されたTPMは、通常のTPM_Extendコマンドと同じ入力パラメータでコマンドTPM_Tree_Extendを公開することができる。TPMは、PCRのうち現在ツリーの根に指定され、占有され、ロックされているPCR、およびアルゴリズムにより中間Vとして使用することができるPCRを示すPCRのフラグを維持することができる。さらに、TPMは、上記の追加的データを維持する。最も単純な事例では、内部ロジックで、ツリー形成のために2つ以上のPCRを同時に使用することを防止することができる。TPM_Extendは目標PCR値の更新を出力することができ、一方、TPM_Tree_Extendは、検証レジスタのデータ値が上記の自然な順序を生成するように、更新後の検証レジスタのデータ値の変数1,....dを順次返すことができる。この戻り値は、アルゴリズム1および2のSML書き込み動作の出力とすることができる。d個の値が返されると、受け取り側はそのツリーが全て埋まり、対応する根がロックされていることを知ることができる。別の選択肢は、呼び出しのたびに全ての中間Vを返すTPM_Tree_Extendを含むことができる。
Merkleハッシュツリーを使用して、従来PCRで行われるのと同様にして、信頼されるプラットフォームのセキュアな起動プロセスの完全性を保護する方法が記載される。プラットフォーム妥当性検査においてツリー型検証データを使用すると効率性および柔軟性が増大することが実証されている。これは、特に、ネットワークを介した遠隔妥当性検査およびプラットフォーム管理で有効である可能性がある。ツリー形成アルゴリズムの小ささと複雑性を考えると、仕様がそれに応じて変更されれば、直接TPMの内部に動作を実装することができる。これは、将来のTPM生成に実現可能な手法である可能性がある。
一般化に関しては、ツリーは、暗号ダイジェストを使用した完全性保護を適用できるごく一般的な構造でないことは確かである。例えば、有向グラフの識別を提供するようにハッシュを拡張した研究者がある。他の研究者は、可変の一方向関数、例えばマルチセットハッシュを適用して、RDFグラフ等の複雑なデータ構造を一意に識別している。これらの方向に沿って、ツリー型検証データを例えば有向非周期グラフおよび依存グラフに一般化することを構想することができる。そのような一般化は、複雑なプラットフォーム管理および保護の作業には潜在的に興味深いが、いずれも複雑性を増大させ、妥当性検査の二分木の効率を損なうと考えられる。従って、そのような一般化のための適用事例はこの段階では検討しない。
しかし、上記で提案した、TPM完全性測定機能の唯一のコマンド拡張であるTPM_Tree_Extendは、柔軟性のある、TPM方式のツリー検証データ管理アーキテクチャの開始点とすることができる。例えば動的なプラットフォーム管理のために、そして最終的には、TPM_QuoteがPCR値について遠隔のバリデータに提供するのと同等のセキュリティ表明でツリー型SMLの内部ノードをクオートするために、部分木の根のセキュアな更新を可能にすることができる。そのようなさらなる拡張については下記で説明する。
測定結果を構造化すると、完全性検査に合格しなかったコンポーネントを特定する助けとなる。そのような構造化の一実施形態では、測定結果を線形チェーンに編成し、検証データをVi=f(Vi-1,mi),i=0,1,...,n-1として導出することができ、nは、線形チェーンの長さであり、miはi番目の測定結果であり、Viは、線形チェーン中のi番目の反復から導出された検証データを表す。コンポーネントのn個の測定ハッシュ値を処理することによって導出される最終的な値Vn-1を検証データとして使用することができる。各Vi:i=0,1,..,n−1に、信頼される参照値Riがあってよい。検証プロセス中に最後の値Vn-1がその参照値Rn-1と異なることが示される場合は、中間値Vkの少なくとも1つがその参照値Rkと一致しないことを意味する。そのような不一致の原因は、いずれかのコンポーネントの完全性の破綻、または単に正確に計算された(かつ/または完全性が損なわれていない)検証データVjと、破損または誤った参照データRjとの比較における不一致である可能性がある。測定ログをチェーン(V0〜Vn-1)とすると、検証データとその参照値との不一致の最初の発生は、図12に示すアルゴリズム1を使用することによって見つけることができる。n個の要素があり、インデックスは0〜n−1の範囲であり、インデックスの操作には整数の除算が行われる。
参照値{Ri:i=0,1,...n−1}は信頼することができ、危険に曝されることはない。この場合、不一致がある場合は、i番目のコンポーネントの完全性の破綻か、または、i番目のコンポーネント自体は完全性が損なわれていないが、その測定結果m自体が損なわれている可能性があることを意味する。いずれの場合も、実用化された検証システムでは、i番目のコンポーネントが信頼できず、ロードする前に修復できることを宣言することができる。アルゴリズム1では破綻の最初の発生を見つけるが、それ以降の破綻は見つけることができない。
完全性検査不合格のモジュールの探索を最適化するために、上記のツリー型検証手順で説明したように、検証データは、記憶測定ログ(SML)のハッシュツリーの形態で生成することができる。記憶測定ログは平衡二分木として編成され、TPMコマンドを使用してツリーを生成するアルゴリズムを提示する。このアルゴリズムは汎用的であり、n分平衡木(n>2)に拡張することができる。
上記のツリー型検証の概念を拡張して、ツリーが非平衡である場合のツリー型検証を検討する。さらに、拡張してソフトウェアコンポーネント間の相互依存関係を考慮することができる。用語「機器」は、ソフトウェア/ファームウェア/ハードウェアの完全性が検証されるエンティティの意で使用する。エンティティは、ホームゲートウェイ、M2Mゲートウェイ、アクセスポイント、H(e)NB、FiNB、中継ノード、モバイル機器、タブレット機器、または任意の他のゲートウェイまたは機器であることに留意されたい。
一般性を失うことなく、特定のソフトウェアコンポーネントは、他のコンポーネントと比べてより多くの攻撃に曝される可能性がある。例えば、機器内では、装飾機能を可能にするコンポーネントより、通信プロトコルスタックの方が頻繁にハッキングされる可能性がある。この論点は機能にも当てはまる。遠隔の妥当性検査および準自律的な妥当性検査では、完全性の測定結果は、ネットワーク内のプラットフォームの妥当性検査を行うエンティティに送られる。そのような妥当性検査エンティティは、不合格のコンポーネントまたは機能の履歴を観察し、保持することができる。
また、機器(および/またはそのソフトウェアコンポーネントおよび/または機能)が攻撃を受ける、かつ/または完全性が損なわれた場合、機器の利害関係者に対する影響または費用は、コンポーネント/機能に応じて異なりうることを一般的に想定することができる。
上記のような側面から、攻撃の頻度および/または費用若しくは影響の重大度を考慮し、検証データ構造と検証アルゴリズムの設計に反映することができるコンポーネント/機能の検証方式が必要となる。
ただし、まず攻撃の頻度(または発生の確率)が異なる場合を考える。ソフトウェアコンポーネントまたは機能の完全性が破綻する頻度に基づいてソフトウェアコンポーネントまたは機能に対する完全性破綻の確率分布関数(PDF)を推定し、検証データ構造の構築で使用することができる。確率分布は離散分布関数であり、n個のコンポーネント/機能を有する機器の場合、ベクトル(P0〜Pn-1)と表すことができる。そのような確率分布関数は、全ての観察結果の平均をとるか、最後の十分な数のサンプルに平均化が行われる窓平均で生成することができる。また、平均化は、非加重平均であっても、重み関数W[n]による加重平均であってもよい。重み関数の例には、これらに限定されないが、指数関数、ガウス関数等がある。重複のある、または重複のないスライド窓を使用して、時間領域で変動するPDFを得ることもできる。この(1つまたは複数の)確率分布ベクトルは、メッセージングまたは設定により機器に伝えることができる。一般性を失うことなく、PDFの時間的に静的な集合{P0,...,Pn-1}を仮定する。
機器において、ソフトウェアコンポーネントの分布(PDF)およびハッシュ完全性測定値を使用して、ハフマンアルゴリズム、算術符号化、または類似の最適符号化ツリー構築アルゴリズムを使用して、最適なハッシュツリーを構築することができる。図13に、ハフマン符号を使用したツリーの構築例を示す。そのようなツリーを構築する利点は、最も頻繁に攻撃されるコンポーネントの符号長が短くなり、探索時間の予想値が低減することである。従って、不合格のコンポーネントまたは機能を探索する際のオーバーヘッドが低減する。また、最も頻繁に攻撃を受けることが予想されるコンポーネントに最も早く探索が行われる。
ハフマンアルゴリズムまたは算術符号化アルゴリズムを機能させるために、確率を非ゼロにすることができる。従って、攻撃の確率がゼロのコンポーネントまたは機能は、ツリー構築の際に除くことができる。その結果ツリーのサイズが低減し、通信の過負荷および探索時間を低減することができる。または、全てのノードを含める場合は、攻撃の確率がゼロのコンポーネントまたは機能には、非常に小さい非ゼロのδの値を割り当てることができる。一般に、攻撃の確率分布は非一様なので、生成されるツリーは非平衡木になる。
ネットワーク内で、そのようなツリーを予め構築し、機器の製造時設定に基づいて、または認証許可され、完全性を検証することが可能なソフトウェア/ファームウェア更新の後に、資格のある機関で導出されたハッシュ値をツリーに入れ、参照のためにセキュアに記憶することができる。機器内では、機器がセキュアにブートされるたびに、ツリーが事前に構築されていない場合は最適な符号木アルゴリズム(ハフマン符号、算術符号等)を適用することにより、攻撃頻度のPDFを使用してそのツリーを再構築して記憶し、ノードおよび根には、評価されたハッシュ値(または拡張したPCR値)が入れられる。
ソフトウェアコンポーネントの測定結果を使用して、機器でツリーのノードおよびツリーの根に値を入れるアルゴリズムを開発することができる。そして、そのような検証ツリーを機器からネットワーク内のプラットフォーム検証/妥当性検査エンティティに送信し、参照ツリーと比較して機器の信頼状態を確立し、不合格ノードを一意に特定することができる。このアルゴリズムは本明細書に記載される。
通信の過負荷を低減するために、深さd,d−1,...,0に根およびノードを含む、特定の深さdの間引きしたツリーを送信することができる。深さdは閾値に基づいて評価することができる。別の間引き方法は、攻撃発生の累積確率が所定の閾値未満であるノードを除くものである。より適当である可能性のあるさらに別の方法は、ツリーに含まれているノードの累積分布値が指定の閾値を超えた場合に、ツリーから全ての残りのノードを間引くものである。図14に、深さd=2へのツリーの間引きを示す。
図15に、システム図および通信の交換を示す。図15では、符号1で、接続の履歴に基づいてコンポーネント/機能に対する攻撃の離散確率分布を生成する。符号2で、ハフマン符号化アルゴリズムを使用して符号木を生成する。符号3で攻撃の確率分布を機器に通信する。符号4で、ハフマン符号化アルゴリズムを使用してWTRUで符号化木を生成する。符号5で、セキュアなブート時にツリーに信頼値を入れる。符号6で、信頼ツリーがWTRUから通信される。符号7で、参照によりツリーを検証し、ツリー内の不合格ノードを探索する。符号8で補正アクションが行われる。
上記説明では、コンポーネントの非一様な攻撃確率モデルを検討することによって、結果として生じた非平衡木の使用を考察した。攻撃の確率に加えて、攻撃の費用または影響も考慮することができる。機器のi番目のコンポーネント(i=0,1,...,n−1)が{Pi,Ci}に関連付けられるとする。Piは発生の確率を表し、Ciは利害関係者への費用または影響を表す。すると、「攻撃/セキュリティ侵害による予想費用(影響)」に従ってコンポーネントを順序付けることができ、順序付けは、E(cost)i=Pi×Ciを比較することによって行われる。そして、正規化された分数の予想費用を
で求めることができる。
コンポーネントが(正規化された予想費用が高い順に)順序付けられると、この場合もハフマン符号化または算術符号化を使用してツリーを形成することができる。そのようにして形成された検証ツリーは、破綻が利害関係者にとって最も高い費用/影響を与えうるコンポーネントに最も高い重みを(探索用に)与えることができる。
ツリー構造は、それ単独ではソフトウェア構造の相互の依存関係を完全に捉えることはできない。例えば、種々のコンポーネントに使用される共有ライブラリがある場合がある。従って、そのような相互依存関係を示すために、最初の最適な符号木を構築した後に、ツリーのノード間およびノードと葉の間にリンクを追加する。そのようにしてツリーを拡張して機器のソフトウェアアーキテクチャまたはコンポーネント間の相互依存関係を捉える。ツリーの葉はソフトウェアコンポーネントに対応付け、ノードをライブラリおよびアーカイブに対応付けることができる。ソフトウェアモジュールと共有ライブラリ間の相互依存関係は、代理の子リンクで対応付けることができる。このようにしてツリーは一般化されたツリーになる。ノードに測定値を入れるアルゴリズムを、追加的に代理子リンクをトラバースするように変更することができる。図16にそのような代理子リンクを有するツリーを示す。モジュールAと示すソフトウェアコンポーネントまたは機能は、モジュールDで表す共有ライブラリに依存または利用し、同様に、モジュールBで示すソフトウェアコンポーネントまたは機能は、葉のコンポーネント/機能Cを利用する。
機器が、アルゴリズムの信頼される動作、並びに/または、導出されたハッシュ値をノードおよび/若しくは根に信頼される形で入れることを保証する例えばTrE等の信頼される実行環境を備える場合、アルゴリズムは、TrEによって提供される信頼される動作および命令を使用することができる。
信頼されるプラットフォームモジュール(TPM)およびその上位層の信頼されるソフトウェアスタック(TSS)を使用してそのようなTrEを構築する場合は、TPM並びにTSSに適切なコマンド拡張を検討することができる。
上記のように、任意の最適な符号構築アルゴリズムを使用してツリーを構築することができる。上記ではハフマンアルゴリズムを使用してツリーを構築する例を提示した。
以下の説明では、葉がソフトウェアコンポーネントまたは機能に相当する。説明を簡潔にするためにコンポーネントを参照するが、議論は機能にも該当する。耐衝突性のハッシュ関数Hを使用してコンポーネントの測定結果を計算することができる。対象ノードの子の判断基準を使用してノードの判断基準を計算するために関数Fを使用するとする。アルゴリズムPopulate_metricは、ノードを最適な符号木の根に設定して呼び出すことができる。ツリーの葉の判断基準を初期化して、対応するコンポーネントの測定結果にする。
図17に示すアルゴリズム2は、ツリーの順序付け後にトラバースを行い、内部ノードの判断基準を計算し、計算された判断基準値をノードに入れる。TPMに合わせてアルゴリズムを適合するために、関数FはPCR_Extendの動作とする。以下のアルゴリズムでは、Reg_Numberは、PCRレジスタ番号を示す添え字索引である。
図18に示すアルゴリズム3は、アルゴリズム2(図17)を変更して、PCRレジスタを用いて機能し、PCR_Extend動作を使用するようにしたものである。それぞれ図17および図18に示すように、アルゴリズム2および3はn分木で機能するように変更することができる。ただし、それに応じてハフマンアルゴリズムを変更してツリーを生成してもよい。最も低い2つの確率を左および右の子に追加する代わりに、n個の最も低い確率が追加される。従って、枝のラベリングはlog2(n)ビットを含む。例えば、4分木の場合は、4つの確率が追加され、4つの枝を00、01、10、11とラベリングする。図19に示すアルゴリズム4は、n分木用にアルゴリズム2を更新したものである。そして、図20に示すアルゴリズム5も同様に更新することができる。
上記のように代理子リンクを扱うように一般化されたツリーを構築するために、図18に示すアルゴリズム3を更新することができる。アルゴリズム5は、代理子リンクを考慮したアルゴリズム2の更新である。最初に、ハフマンアルゴリズムを使用して二分木を構築する。後に代理子リンクとして相互依存関係を追加する。左および右の子に付加されるラベル0および1は、この場合も葉の符号を見つけるために使用される。代理子リンクを使用してノードに判断基準を入れることができる。代理子リンク自体にはラベルは付加しなくてよい。
ノードに判断基準を入れると、検証ツリーをネットワーク内の妥当性検査エンティティに送信することができる。完全性ツリーと参照ツリーとの比較が行われる。これは、図21に示すアルゴリズム6に従って行うことができる。
図21に示すアルゴリズム6は、内部ノードの依存関係が存在するために代理子リンクを持たない(一般には非平衡の)ツリーに有効である可能性がある。
代理子リンクを持つツリーを処理する場合も同じアルゴリズムを適用することができる。その場合、アルゴリズムは、代理子リンクの関係には何も特別なことは行わずに実行される。そのようにして実行されても、アルゴリズムは、不合格コンポーネントからなる同じ間引きツリーを得る。しかし、代理子リンクは、破綻に追加的な可視性を与える。これは、このアルゴリズムに従って完全性検査に合格しないコンポーネントが特定された時、代理子リンクの関係が、その特定された不合格コンポーネントの影響を受ける可能性のある他のノード(不合格コンポーネントのすぐ上に位置するとは限らない)についての示唆を与えるためである。
上記アルゴリズムの別の変形例では、「双方向」方式で上記および同様の欠陥検出アルゴリズムを実装することができる。一実施形態では、例えば再度図14を参照すると、送信側は、特定の内部深さd≦Dまでのみのノードについて測定結果を送信することができ、ここでDは最も長い枝の深さである。ベリファイアは、それらの内部ノードを検証することができる。
破綻が検出された場合、ベリファイアは、その不合格の内部ノード以下の部分木に対応するさらなるデータを送信側が送信することを要求することができる。送信側は要求に応え、ベリファイアはより深いレベルの測定結果の完全性を調べることができる。この方法は、2回のみの対話ではなく、そのような対話をより多く含んでよい。
上記のような「双方向」プロトコルは、例えば通信の帯域幅やペイロードの制限の理由で、ツリーの全ノードについてのツリー型SMLを一度に全て送信することが難しい場合に使用すると理にかなう可能性がある。完全に形成された二分木が含むデータは、SMLの線形チェーン構造のデータの高々2倍である。送信する必要があるデータの追加量はツリー形成の深さと完全度に依存するが、事例によっては、完全に形成された二分木の場合でも、送信する必要のあるデータの追加量は多くなく、例えばもう数キロバイト分の測定値である。しかし、双方向型のプロトコルは、詳細な証明書や、RIM証明書、OMA DM情報等、より表現力の高いセマンティックな妥当性検査データでツリーに注釈を付け、ツリーのデータサイズが大きい場合に、検討することがより妥当である可能性がある。
二分木形態の妥当性検査データ構造は、妥当性検査システムの最適化基準の特定の選択の結果生じる可能性があり、最適化基準は、1)内部SMLに対する侵害を検証するための確実な手段、および、2)侵害されたコンポーネントの高速な探索である。しかし、二分木形態の妥当性検査データ構造は以下のような費用を招く。1)機器とベリファイアの両方でツリーを完全に構築するための計算費用の増大、および、2)内部SMLを記憶する必要性による記憶費用の増大(最高で線形SMLの量の2倍)。機器の各種コンポーネント間に相互依存関係が多くある場合は、ツリーは最適な構造とは限らない。
他の種のシステム最適化基準では、結果としてツリーとは異なる可能性のある妥当性検査構造が生じる場合がある。例えば、高速で細粒度の破綻検出能力を犠牲にして内部の記憶媒体を絶対的に最小限にすることに関心がある場合には、線形のSML構造が最良の選択肢である可能性がある。
別の可能な最適化基準には、隣接するコンポーネントが構造化されていない高い相互依存関係を有することが分かっている場合に、危険に曝されている既知の1つまたは少数のコンポーネントの近傍(小さな長方形や周囲の円等)の完全性を迅速に判定する際の容易さ/速度がある。そのような場合は、例えば相互につながった輪やメッシュのように見える非ツリー型の妥当性検査データ構造が生じる可能性がある。この話題をより一般的に扱うために、グラフ理論による検査を応用することができる。
ツリー型の保護された検証データレジスタによるセキュアな動作について以下に説明する。信頼されるプラットフォームモジュール(TPM)に機能性を概念的に追加して、ツリー型記憶測定ログ(SML)の完全性を保護するハッシュツリーの根に相当するプラットフォーム構成レジスタ(PCR)を扱う。これによりSMLの内部ノードの検証と更新が可能になり、さらには、通常のPCRと同じセキュリティレベルでノードの値を立証することも可能になる。重要な応用例として、SML部分木の証明がどのようにしてプラットフォームプロパティのアテステーションを可能にするかを示す。
より多くの信頼される機能を追加して、ツリー型検証データに作用することができる。根が検証データレジスタで保護されているツリー型SMLの内部ノードは、全体的なセキュリティレベルを維持しながら、制御された方式で、その完全性を検証し、新しい値で更新できることが示される。内部ツリーノードのためにTPM_Quoteコマンドの変形を導入し、これは、TPM_Quoteが通常のPCRの値に対して行うのと同程度に正確に、ノードの完全性を立証することができる。定義されたコマンドのセットと共に、TPMの完全性測定機能を、ツリー型PCRおよびSMLに動作する包括的なコマンドのセットで補うことができる。それらのコマンドを使用すると、線形にチェーン化された通常のTPM PCRおよびSMLに比べてはるかに高い柔軟性および表現力でツリー型検証データおよび/または妥当性検査データを使用することができる。
基本のシステムモデルおよび表記体系も説明する。また、上記のTPMコマンドの拡張も提供して定義し、また、それらの動作に関連するいくつかの構造上の拡張および基本の使用カテゴリも提供される。導入されるコマンドの主要な使用事例として、信頼される第3者によるツリー型SMLの部分木の根ノードを証明するためのプロトコルの実証と、ツリー型のプラットフォーム妥当性検査手法の簡単な評価と、今後の研究の見通しについても述べる。
後に必要となる可能性のあるプラットフォームの最小限の要素および能力について説明する。TCGの用語およびいくつかの概念を本明細書で使用し、記載するが、本明細書に記載される実施形態は、TPMやSML等のTCG標準に準拠したプラットフォームおよびセキュアハードウェア要素、並びに例えばPCクライアント仕様に準じて設計されたシステムに限定されない。
上記で定義した拡張動作のツリー形成の変形はTPMの内部で動作し、1つの測定値を入力として受け取るが、その他の点ではTPM外部のシステムに関しては能動的に作用しない。これは、本明細書に記載される更新機能には当てはまらない。更新機能は、TPMの内部で保護される特定数rの検証データレジスタV,
、およびTPM外部の低保護の記憶域に記憶されたハッシュツリーデータに作用する。
すなわち、記憶測定ログ(SML)に保持されたハッシュツリーは、更新動作に必要なTPM機能にアクセスする権限のある信頼されるソフトウェアスタック(TSS)で管理することができる。TSSは、許可され完全性が保護されたコマンドインタフェースを介してTPMを呼び出す。実際的な理由でTCGを一般的な語として使用するが、ここに提示する概念は、TCG、TPM、およびプラットフォームに制限されない。ハードウェア保護された検証データレジスタのセットと拡張動作を使用することができる。後者は、通常のTPM拡張動作、
で定義することができる。Vは、検証データレジスタを表し、Hは、耐衝突性のハッシュ関数(TPMの場合はSHA−1)であり、m=H(データ)は測定値である。以下では、混乱が生じないように、任意のレジスタVに関して引数として◇を広く使用する。
SMLは、上記のTPM_Tree_Extendコマンドで生成された、例えばMerkleハッシュツリー等の2項の一方向演算から得られた深さdの二分木を含むことができる。内部ノードおよび葉の自然座標は、長さ1,...dの2進列であり、列の長さ1が、ノードが存在するツリー中のレベルである。内部ノードまたは葉をnとし、nの座標の2値表現をn〜<n>=(n1,...,n1)∈{0,1}x1と表記する。<n>のk番目の桁を<n>=nk,k=1,...1とする。混乱が生じないように、ノードは、SMLにおける自身の値(例えば160ビットのハッシュ値)で識別することができ、その座標と区別する。その他の場合は、ノードの値と座標との対についてn=(n,<n>)となる。
nのトレースTは、nから根に至る経路にあるnを含む全ての内部ノードの順序付けリストになり、すなわちT(n)=(t1,.....t1)であり、tk〜(n1,....nk)である(式5)。
ノードの自然半順序をm≦nと表記し、これはn∈T(m)と等しい。半順序は、∀m∈M:∃n∈:m≦nの時かつその時に限りM≦Nを設定することにより、ノードの集合M、Nにも成立する。
nの縮小ツリーRは、そのトレースにある全てのシブリングのリストになる。これは容易に自然座標R(n)=(r1,....r1)、ただし
(式5)で表され、
は2項の否定を表す。
引数の順序を2値パラメータに依存させる変形例では、ハッシュチェーン演算
を固定長の入力ハッシュ値に使用する。c∈{0,1}について、以下を設定することができる。
<x||y>= {c=1の場合x◇y;
<x||y>= {c=1の場合y◇x;
このカイラル(chiral)のMerkle-Damgard演算は、ツリー内の左のシブリングと右のシブリングを区別し、それらの親ノードを正しい順序で計算できるようにする拡張動作の1バージョンである。実装上の問題を無視すると、(拡張された)TPMは<.|.|.>=を内部で行うことができる。
事例によっては、SMLに記憶されたハッシュツリーが不完全、すなわちニルで表される空の葉と内部ノードを含んでいる場合がある。Merkleハッシュツリーのニルノードを一貫性をもって扱うために、ニルが、演算◇の両側単位元である、すなわちx◇nil=nil◇x=x、かつnil◇nil=nil(式6)と仮定すると有用である。
これは通常のTPM拡張動作の再解釈であり、まずVをニルにリセットし、次いで何らかの値xについてV◇xを行うことにより、V∈vへの直接の書き込みをモデル化するためにも使用することができる。この規定を実装するために、ニルを検証データレジスタ並びに<.|.|.>の入力および出力のフラグとして表すことができる。Vに対して、ニルフラグは特定のリセットコマンドで設定することができる。Vの拡張動作の入力としてニルが発生した場合は、TSSのロジックまたはTPMの変更で、拡張およびPCRへの書き込みを直接阻止することができる。
ツリー型SMLに対してセキュアに動作するようにするための標準TPMの動作上の拡張について説明する。保護の目標は、PCR内で保護される従来の検証データレジスタ値と同じ保証レベルを、そのようなSMLの内部ノードおよび葉に実現することである。新しいノード値による根ノードの更新について初めに説明し、その後、ツリー型検証データに使用するための構造およびコマンドの拡張についてさらに説明する。
SMLツリーの内部ノードまたは葉のセキュアな更新の方式は以下の通りである。まず、そのノードの現在の値の真正性を検証することができる。これは、当該ノードに関連付けられた縮小ハッシュツリーに保持されているデータを使用して、レジスタV(説明を簡略にするためにこの項の残りの部分では固定する)で保護されるツリーの根を再計算することによって行われる。この検証は、TPM_Reduced_Tree_Verify_Loadと呼ばれる、TPM内部の保護された動作でなければならない。この動作ではまた、その次の更新動作TPM_Reduced_Tree_Updateで使用するために、検証データレジスタのセットに、検証済みの縮小ツリーデータをロードする。この機能は、更新するノードの新しい値を取得し、縮小ツリーデータを使用して根Vに至るまでの親ノードを更新する。両コマンドは、各種目的、例えば独立したノードの完全性検証に単独で使用することができる。適宜、両コマンドを組み合わせてノードおよび根を更新する1つのコマンドとしてもよい。
根が検証データレジスタV∈vで保護されている、深さdのSMLツリーのレベル1≦dにあるノードをnとする。最初のステップでは、nの新しい値でVを更新し、縮小ツリーR(n)がSML中で改ざんされていないことを検証する。
Vのセキュリティレベルを維持するために、この検証もTPMで保護された動作によって行うことができる。そのために、TSSは、引数((<n>,n,R(n))でTPM_Reduced_Tree_Verify_Loadを呼び出す。Vから1+1個の利用可能なレジスタを選択し、それらをB1、......B1、およびV*と呼ぶ。図22に示すアルゴリズム1は、どのようにSMLノードが検証され、その縮小ツリーが検証データレジスタのセットにロードされるかを示す。
このアルゴリズムで中心的に使用されるカイラルな拡張は、nのトレース上にある親要素の計算時に子ノードの順序が正しくなることを保証する。TSSは、計算されたトレースT(n)および検証ステータスを戻り値として得る。図22に示すアルゴリズム1では1+l個の追加的な検証データレジスタがある。
図22のアルゴリズム1の単純な変形は、縮小ツリーを順次処理することにより、縮小ツリーをTPM内部に記憶することなく、単一の検証データレジスタを使用して動作することができる。この補助コマンドTPM_Reduced_Tree_Verifyは、TSSまたは他のパーティによるSMLの簡易な検証に有用である可能性がある。これを図23に示すアルゴリズム2に示す。この変形例で必要とされるR(n)の順番付けは、TSS以下のソフトウェア層で実現される入力バッファ、例えばTPMデバイスドライバ、または対応するTPM内部ロジックを使用して行うことができる。
上記の元のツリー形成アルゴリズム(図4および図6)と同様に、アルゴリズム1および2(それぞれ図22および図23)は、非標準的な動作、詳細にはカイラルな拡張を使用する。カイラルな拡張の出力先は常に検証データレジスタなので、この動作は、カイラルな拡張の中間の引数に応じて、他方の引数を別の検証データレジスタ(図22のアルゴリズム1のように、すでに検証レジスタがあるのでない場合)にロードすることにより、レジスタスワップを行ってTPM内部動作◇より先に行うことによって実装することができる。これにより、全ての引数に同じ保護レベルを保証することができる。
それぞれ図22および図23のアルゴリズム1および2で行われる検証は、入力された縮小ツリーに対する入力ノード値の完全性を保証するので、効果が限定される。SMLツリーの完全性が侵害された場合は、より詳細な情報が望まれる。上記の下方へのツリートラバースを介した妥当性検査方式を行うことにより、少なくとも完全性の侵害が発生したツリーレベルを取得することができる。
アルゴリズム3(図24a)に示すコマンドTPM_Tree_Node_Verifyは、正しくない縮小ツリーおよび/またはトレースの要素が根からnに至る完全性チェーンを最初に断絶させたレベルを返す。このコマンドでは、チェーンを断絶したシブリングは判定することができない。上記の参照ツリーを利用できる場合は、さらなる診断が可能である場合がある。
TPM_Reduced_Tree_Verify_Loadは、新しい値n’で更新することが可能なノードnに行うことができる。アルゴリズム4(図24b)に示すコマンドTPM_Reduced_Tree_Updateは引数n’で呼び出され、求められた先行するTPM_Reduced_Tree_Verify_Loadの結果に作用することができる。TPM_Reduced_Tree_Verify_Loadは、更新するノード座標(n)およびレジスタVを固定する。このバインドをコマンドシーケンス内で実現するには各種方法を用いることができる。
初めに、TPMは、下記で説明するように、ツリー操作のための状態および追加的データを記憶し、管理することができる。さらに、コマンドのシーケンス、TPM_Reduced_Tree_Verify_LoadおよびTPM_Reduced_Tree_Updateを、例えばTPMで保護されるOIAP/OSAPの正式なコマンドセッションで実装されるようにローリングノンス(rolling nonce)で暗号的にバインドすることができる。最後に2つのコマンドを結合して1つの更新コマンドTPM_Tree_Node_Verified_Updateとし、引数は(<n>,n,n’R(n))である。このノード更新コマンドは、n’’の新しいトレースおよびVの新しい値を返し、TSSはそれらでSMLを更新する。
検証データレジスタをハッシュツリーの特定のノードまたは根に関連付け、それに関連するコマンドTPM_Tree_Extend(上記で定義)、TPM_Reduced_Tree_Verify_Load、TPM_Reduced_Tree_Updateを用いて、それらのレジスタVはステートフルネス(statefulness)を取得する。特定の重要度である状態は以下である。
Active Root(AR)。TPM_Tree_Extend動作で現在構築中のSMLツリーの根を表す。
Complete Root(CR)。いくつかのコンポーネントの測定、すなわちTPM_Tree_Extend動作の完了結果としてのツリーの根を表す。ARは、ツリーが完全である時、すなわち2d個の葉ノード測定結果を含む時、またはある段階でツリーを閉じることが求められる場合にTSSからトリガでCRに遷移することができる。CR状態にあるVは、TPM_Tree_Extendによるさらなる更新から保護することができるが、ポリシーおよび権限付与によっては、TPM_Reduced_Tree_Updateから、さらには通常のTPM_Extend動作からもアクセスされる場合がある。
Tree Build(TB)。TPM_Tree_Extend動作により、別のARレジスタにアクティブツリーを構築するために使用されるレジスタを表す。
Reduced Treeノード(RT)。TPM_Reduced_Tree_Verify_Loadの結果、すなわちレジスタBkの1つを表す。RT Vは、対応するTPM_Reduced_Tree_Update、または別の許可されたコマンドが発生するまで保護されることができる。
2つ以上のツリーを管理する場合は、例えば一意の識別子(UID)を使用してVの状態を個々のツリーに関連付ける必要がある。さらに、各レジスタまたはいくつかのレジスタについて、ノード座標を記憶する必要がある場合がある。これらのデータは、TPM内部の検証データ割り当てテーブル(VDAT)に保持され、ツリーデータ管理ユニット(TDMU)により管理することができる。
TPMで保護されたノード値検証は、アテステーションによるプラットフォーム妥当性検査の新たなコアセマンティックを可能にすることができる。詳細には、あるノード値を立証するTPM_Quoteの変形を定義することができる。そのようなコマンドであるTPM_Tree_Node_Quoteは、TPM_Quoteと同じ引数に加えてTPM_Reduced_Tree_Verifyの引数で呼び出すことができる。するとこのコマンドは図23に示すアルゴリズム2を実行するが、別のPCR V’にnのコピーを追加的に保持する。成功すると、V’にTPM_Quoteを実行する。そのようなクオートの受け取り側は、得られた署名がSMLツリーの内部ノードに対するものであることを認識することができる。可能性の1つは、TPM_Quoteコマンドの署名済みブロブ(blob)に含まれる固定列を変更するものであり、通常は「QUOT」であるのを、例えば「TREEQUOT」に変更する。
このコマンドによるノード値のアテステーションは、TPM_Quoteで検証データレジスタ(PCR)値をクオートする場合と同じセキュリティ表明をノードに提供する。ただし、このアテステーションは、その値がSMLツリーのいくつかの内部ノードに対応するという追加的なセマンティックを有することができ、すなわち、nが根である特定の部分木の状態を有効に立証する。このセマンティックをバリデータに明示的に伝えるために、AIK(Attestation Identity Key)で署名されたアテステーションパッケージに追加的なデータ、例えば文字列「Tree Node」を含めることができる。そのような属性の効果は、根のレジスタが、上述のようにTPM_Tree_Extendコマンドの結果得られる管理されたSMLの根のレジスタである場合、すなわちCR状態にある場合にTPM_Tree_Node_Quoteによって割り当てられた場合は、著しく強化することができる。この管理は、クオート生成の一部とすることができる。
アテステーションメッセージを妥当性検査するために、バリデータは、クオートされたノードn=(n,<n>)の値nを必要とする場合がある。バリデータにさらに情報を転送することは必要でない可能性があり、TPM_Tree_Node_Quoteの上記説明は最小限の暴露の原理に従う。このコマンドの変形では、SMLツリー内のノードの位置が妥当性検査に関係する場合は、ノード座標(n)に署名することもできる。バリデータに送られる拡張された妥当性検査データは、nの縮小ツリーおよび根の検証データレジスタを含むことができる。
代替実施形態として、バリデータに縮小ツリーの検証を課すことも可能である。この手法は、ウェブサーバから配信されるウェブページの完全性を立証し、通常のTPM_Quoteコマンドを使用してその完全性をサーバの状態のアテステーションにバインドするために、他の事例で使用される。これにより、下記のようにTPM_Tree_Node_Quoteの変形例が実現される。
このコマンドは、ノード値n、R(n)のノード値、および根Vの選択子を引数として受け取る。TPMは、VのCR状態を制御した後に、「REDTREEQUOT」の固定列属性でこの(連結された)データに署名する。ウェブページの完全性を立証するために使用されるこの手法には、追加的なデータのハッシュをTPM_Quoteコマンドのノンスの入力に挿入すること(通常はクオートの新しさを保証するために使用される)により、縮小ツリーをTPMからのクオートにバインドする回避策が使用されることに注目すべきである。
内部ノードをクオートする第1および第2の実現の変形例は、第1の変形例はプラットフォームに検証の負荷を課すのに対し、第2の変形例はバリデータに負荷を課す点で、互いに正反対の可能性を示す。従って、両変形は、実際的な効率の領域が異なる可能性がある。例えば、第1の変形例の場合は、M2M通信のように多数の分散した妥当性検査プラットフォームがあり、第2の変形例の場合は、分散した多数のバリデータ(上記のウェブクライアント等)がある。ただし、第2の変形例は、バリデータにVで表される完全な状態が公開されるため、原理上プラットフォームの情報暴露に関して欠点がある。これはプライバシーを害する可能性がある。
本発明で導入されるTPM完全性測定機能の各種拡張は、以下のカテゴリに分類することができる。TPM_Tree_Extendは、PCRで根が保護された特定のSMLツリーを構築する連続的な測定プロセスで使用される。TPM_Reduced_Tree_Verify_Load、TPM_Reduced_Tree_Verify、そして最後にTPM_Tree_Node_Verifyは、プラットフォームの内部診断のためのコマンドである。TPM_Reduced_Tree_Verify_LoadをTPM_Reduced_Tree_Updateの準備ステップとして使用することを別にすれば、これらのコマンドは、他の事象が発生する前にSML部分木で表されるプラットフォームの特定のプロパティを検証するために使用することもできる。
TPM_Reduced_Tree_UpdateおよびTPM_Tree_Node_Verified_Updateは、部分木の制御された更新に使用することができる。内部ノード更新動作の特定の使用例について以下のように説明する。
単一のシステムコンポーネントの更新。この場合は、新しい値で葉を更新する。
部分木で表されるシステムモジュールの更新。この場合は、新しい部分木の根で、元のツリーの内部ノードを更新する。
最後に、TPM_Tree_Node_Quoteは、ツリー型SMLを、遠隔パーティによるプラットフォームの妥当性検査に使用できるようにするコマンドである。このコマンドは、ツリー型データを使用する妥当性検査の新しい主要要素を示し、すなわち、システム状態の定義部分のみを表す部分木を立証する可能性を示す。具体的な使用例は下記で説明する。
コマンドの拡張は、ツリー型妥当性検査において単独で使用することができる。以下に、コマンドの拡張を組み合わせてモジュール方式で部分木を妥当性検査する方法を説明する。
ツリー型SMLおよび検証データレジスタを使用した妥当性検査は、遠隔アテステーションにセマンティックを追加する。SMLの部分木を立証できることにより、従来の遠隔アテステーションをはるかに上回る表現力が可能になる。ツリー型検証データは、プラットフォームアテステーションにセマンティック(例えば、PBAのようにプロパティと妥当性検査データの関連付け)を追加する他の提案を具現化する1つの方式である。トラステッドコンピューティングの問題の1つは、プラットフォームアテステーションへのセマンティックの関連付けである。TCG仕様は、ロードされる際に実行コードが測定される双方向の遠隔アテステーションを定義する。測定結果は検証データとしてPCRに記憶され、TPMは、TPMで保護されたAIK(Attestation Identity Key)でそのデータに署名することにより、データを立証する。完全な構成のダイジェストが送信されるため、ベリファイアはマシンの構成を知ることができる(システムの動的要因を考慮すれば常時)。従って、送信される妥当性検査用のデータは、多用途で効率的な遠隔プラットフォーム妥当性検査を可能にする表現力を欠く。セマンティックアテステーションの必要性は早期から認識されており、1回のアテステーションの範囲を複雑度が制限された仮想化サブシステムに制約して、複雑で動的な高レベルプログラムプロパティを立証できるようにすることが提案された。
プロパティおよびプロパティベースアテステーション(PBA)が本明細書に記載される。PBAは、部分木証明書機関(SCA)と呼ばれる信頼されるサードパーティ(TTP)を介して、検証の済んだプラットフォームのセキュリティプロパティをベリファイアに保証することを可能にする。SCAは、プラットフォームの構成を、その構成で実現することが可能なプロパティ(特に望ましい/望ましくない機能)に対応付けた証明書を発行する。PBAは、TCGのプライバシーCAと同様に、しかしプライバシーCAの役割を拡張して、プラットフォーム妥当性検査のインフラストラクチャ上の問題をSCAに移す。部分木の証明は、上記問題を克服する手段の1つである。これに関連する一実施形態は、更新証明書に基づいて別のプラットフォーム構成についてのデータを再シールするTPMコマンドで行われる、ハードウェアで支援される更新である。
検証データと異なり、妥当性検査データは、別のパーティ、すなわちバリデータに提出され、プラットフォームの状態の信頼性を評定するために使用される全データである。バリデータに妥当性検査データを提出するプロセスは、例えばTCGに準じて遠隔アテステーションとして実現され、バリデータによるデータの評価は正式に妥当性検査と呼ばれる。妥当性検査データは、クオートされた検証データレジスタ(例えばPCR)の値等の検証データを含むことができる。妥当性検査は、暗号による検証データの検証以外に、ポリシーの評価およびバリデータによるアクションのトリガを含むことができる。
SMLツリーに関連付けられたツリー型検証データおよび妥当性検査データは、プラットフォームアテステーションのセマンティックを強化するために上記の手法に加えて使用することができる構造化データを提供する。ツリー型検証データを使用する別の方法を提供して、PBAに関連する概念を実現する。
SCAが、SMLツリーのノードを、有意で信頼されるステートメントに置き換える仕組みを示す。ステートメントは、そのノードが根である測定対象コンポーネントの部分木についての部分木証明書である。このプロセスは、SCAによるプラットフォームの部分的な妥当性検査を実現し、結果として信頼される表明が得られ、それがプラットフォームの利用可能な妥当性検査データに取り込まれる。それを後に別のバリデータに対して使用して、プラットフォームをより完全に妥当性検査することができる。次に、変形例を実現するために実装することが可能な部分木証明の汎用的な基本プロトコルとその使用事例を述べる。変形例も記載する。
部分木の証明は、信頼されるプラットフォーム(これに限定されないが、簡略化されたシステムモデルではTPMとTSSの組合せ)がSCAからツリー型SMLの内部ノードの値についての証明書を得るプロセスである。そのために、プラットフォームは、署名済みのステートメントをSCAに提出して、そのノード値が、根の値が検証データレジスタで保護されたSMLツリーに含まれていることを知らせる。TPMは可能な実装の1つであり、任意の検証データレジスタを使用することができる。その証拠に基づき、SCAは、そのノード値についての追加的な属性を含む証明書をプラットフォームに発行し、証明書がSMLツリーに取り込まれる。このプロセスでは保護されたツリー操作を使用する。
プラットフォームは、信頼されるプライバシーCA(PCA)から発行された証明書Caと併せて、アクティブなAIKaを所有することができる。プラットフォームとSCA間の通信は、暗号化され、完全性が保護されて、マン・イン・ザ・ミドル攻撃を緩和する。証明対象の内部ノードが選択される。このプロトコルでは、破綻条件と否定応答は言及されない。部分木証明プロトコルは、図26に示すように少なくとも5段階で進行する。
段階1で、sに対するクオートを作成する。そのために、TSSは、引数(<s>,s,R(s),a)でTPM_Tree_Node_Quoteを呼び出し(図を簡潔にするために、図26には呼び出し可能な全ての引数は示さない)、P=Siga(s)を受け取る。
ツリーの根、すなわちレジスタVが証明対象として選択された場合は、代わりにTPM_QuoteをVに対して使用することになる。段階2で、TSSは、アテステーションパッケージQを作成する。パッケージは、SCAを検証するための情報、少なくともQ⊆{P,s,Ca,apub}を含む。aのパブリック部apubは、Caから明らかでない場合にQに含めることができる。また、sの値はSCAに既知である場合があり、その場合はQから省略してよい。
より多くの情報、例えばクオートの一部である場合にはノード座標<s>を含めることができる。QがSCAに送信される(SCAの公開暗号鍵で暗号化され、完全性が保護された状態で)。この段階は、TCGに規定される遠隔アテステーションと同様である。
段階3は、SCAの行為からなる。初めに、SCAは、Pの署名を検証することにより、かつ/または証明書チェーンをPCAのルート証明書までたどることにより、Qを検証することができる。sが、証明可能なノード値であると認識すると、SCAはsのマニフェストMsを作成する。このマニフェストは、根sがSMLにある部分木の存在に関連付けられたプラットフォーム状態についての追加的な情報を含むことができ、例えば、タイムスタンプ、プラットフォームの機能、部分木の葉ノードの測定結果で表されるロード対象のコンポーネントから組み合わせられたモジュールの識別、および/または他のプラットフォームプロパティ等を含むことができる。マニフェストは、部分木証明により追加される妥当性検査データであり、ノード値sのセマンティック意味をバリデータに提供する。SCAはsの証明書を作成することができる。この証明書Csは、MをAIK aにバインドすることにより、Mで表されるプロパティをプラットフォームにバインドする。これは、次の2つの方式で行うことができる。
最初の場合、SCAは、マニフェストおよびAIK書名済みのノード値に署名し、aとの間接的なバインドを確立する。そして、プラットフォームがノード値sを公開すると、Csとaのバインドを検証することができる。2番目の選択肢では、SCAに、aのパブリック部、Ca、連続番号、Caのフィンガープリント等、aを一意に識別する何らかのデータbind(a)に署名させることによって間接的にバインドが実現される。公開鍵インフラストラクチャのセマンティックではバインドにより、Csは、Caに関連付けられた属性証明書となる。最後に、SCAは、2番目の事例では少なくともMsおよびCs、並びにbind(a)を含むパッケージRを作成し、プラットフォームに返す。
段階4で、Rから導出されるあるデータでSMLの更新を作成する。SMLの更新は、部分木証明書と、ツリー中の証明されたノードの位置<s>とのバインド関連付けを生成することができる。
これにより、プラットフォームは、CsおよびMsによって立証されたプロパティがプラットフォームの構成に存在することをバリデータに表明することができる。表される部分木にCsをバインドするSML更新には各種方式が考えられ、それぞれ特定の使用事例に対して異なる形で適する。
新しいノードの集合U={u1,...,uk}(例えば値およびSMLツリー中の位置)が下記のプロパティで作成される。初めに、集合は、s以下の部分木が更新の対象となるように、U≦sを保持することができる。これを行うことができるのは、厳密にUより下の古いSMLツリーノードn≦U、すなわちn/∈Uは、更新により無効化され、更新後の根の検証データレジスタを基準としてはそれ以上検証できないためである。2番目に、Uは依存関係を持たない。すなわちu,u’∈U:u≦u’である。
無依存性は、Merkleハッシュツリーで実施される一方向(上方)への情報の流れで、Uによりツリーを更新する際の一貫性を保証するプロパティである。詳細には、この性質により、更新の結果が、Uの要素が処理される順序に依存しないようになる。
段階5は、SMLツリー更新そのものである。u∈Uに対して反復的にTPM_Tree_Node_Verified_Updateが引数(u,n,u,R(n))で呼び出される。nは、位置<u>にある古いSMLノード値である。この結果新しいトレースT(u)が返され、TSSはそのトレースでSMLを更新する。上記要領でツリーの更新を実行すると、SMLおよび根の検証データレジスタに一貫したセキュリティレベルが維持される。すなわち、動作◇はTPMの内部で実行される。Uが多くの要素を含んでいる場合は、段階5に関して説明したように更新を行うと効率的でない可能性がある。これは、そのような場合、TPM_Tree_Node_Verified_Updateは多くの重複する縮小ツリーを検証することになり、そのため(複雑な)ハッシュ計算に冗長性をもたらすためである。「効率的でセキュアなノードセットの更新(Efficient Secure Node Set Update)」と呼ばれるより効率的な更新アルゴリズムを下記で説明する。
上述のように、内部ノードの大きな集合Uを更新することは、TPM_Tree_Node_Verified_Updateを使用すると非効率的である場合がある。これは、Uの要素からなる縮小ツリーの重複によっては、検証のための冗長なハッシュ演算が多数行われる可能性があるためである。上記のTPM_Tree_Extendコマンドを使用して、大量更新の方式を適用して部分木証明プロトコルの段階5の単純なアルゴリズムを改良することができる。この方式は、更新の集合Uの部分集合の範囲は、古いSML値に依存しない部分木である、すなわち、それら部分木の根がUにあるノードに依存するという観察に基づく。従って、そのような集合の範囲となるツリーの根は、高費用の検証を行わずに事前に計算することができる。
いくつかの定義を提供する。U={u1,.....,uk}が、依存関係のない更新の集合であるとする。SMLツリー中のノードは、a)それがUの要素であるか、b)そのシブリングがUにあるか、またはc)そのシブリングがUに固有である場合に、Uに固有と呼ぶ。この再帰的な定義では、更新後の値がUに依存し、Uの補集合にあるSMLノードに依存しないノードを取り出す。部分集合V⊆Uの範囲となる根は、Vの全要素のトレースの一意の交差点となる。部分集合V⊆Uの範囲となる部分木は、Vの要素のトレースと、省略された範囲となる根より厳密に上にあるノードとの和集合になる。部分集合Vは、それが範囲とする部分木の全要素がUに固有である時かつその時に限りUに固有と呼ばれる。
これらの設定で、UによるSMLのより効率的な更新を次のように行う。
1)(互いに素の)Uに固有の部分集合V1,.....Vk⊆Uを特定する
2)Vi,i=1,...kに以下を繰り返す。
a.Viの要素の座標を以下により正規化する。
i)Viの範囲となる根の座標で与えられるプレフィクスを切り捨て、
ii)全ての座標が等しい長さ、すなわちViの範囲である部分木の深さになるまでゼロを後置する。
b)Viの要素を各自の正規化された座標に従ってアルファベット順に並べて、順序付けされたリスト
を生成する。
c)
にある全ての空白箇所(正規化後の座標中)をニル値で埋める。
d)空いている検証データレジスタV’を選択する。
e)対象V’を用いて
の要素にTPM_Tree_Extendを順次使用する。
f)UからViを除去する。
g)Uに(V’,<vi>)を挿入する(viはViの範囲となる根)。
3)Uの残りの要素に対してTPM_Tree_Node_Verified_Updateを使用して上記のように通常の更新手順を適用する。
部分木証明プロトコルの変形では、1回のプロトコルの実行時にAIKの部分木証明のためのPCAとSCAの役割を組み合わせることができる。この利点は、AIKの生成、有効化、および使用が1回のセッションに結合されるため、AIK証明書Caの明示的な生成および検証が必要でなくなる可能性があることである。このプロトコルの組合せは単純である。
受け取った部分木証明書をプラットフォーム状態にバインドすることは、ツリー型SMLの正しい構成、すなわち証明された部分木の根の位置に証明書をバインドすることを意味する。上記のように、これは、プラットフォーム構成全体のコンテクストにおける有意味の部分木証明書を利用する妥当性検査には必須である。CsをSMLツリーにバインドする具体的な目標の1つは完全性の保護である。これは、例えば後に別の証明書に置き換えられることを防ぐことができるためである。バインドは、部分木証明書を一意かつ検証可能に識別するデータでツリーの一部を更新することによって実現することができる。部分木証明書から幅広い範囲のデータ項目を生成し、SMLツリーの様々な位置に入れることができる。
一例では、SMLの更新が些少で、Uが空である可能性がある。この可能性があるのは、sを公開する上記第1の選択肢でaが作成される場合である。そして、sをSMLツリーに保持することができ、それ以下の部分木も保持されるかどうかは使用事例による。バインドによる関連付けは、Cで署名された実際のノード値sを介する。
別の例として、証明書で立証されたプラットフォームプロパティに関するデータを、例えば鑑定用の使用のために更新後のツリーで保護できる事例を考える。すなわち、3つのデータ項目、s、Ms、およびCsを更新の集合に入れることができる。ノード値sはすでに正しいデータ形式であるが、他の2つは初めに処理してm(Ms))およびm(C(s))とする。演算mは、プラットフォームのRTM(Root of Trust for Measurement)または他の適切な一方向演算によるハッシュ値の生成とすることができる。何らかのデータ項目が、適切なノード値形式の一意に識別する適切なデータをすでに含んでいる場合は、そのデータを直接抽出し、ノード更新値として使用することができる。具体例は、C(s)に含まれる証明書フィンガープリントである。そして3つの更新ノードを更新集合として構成して、例えば図27に示すようなSMLツリーの更新後のノードの構成を生成することができる。
更新された部分木の根はsが元にあった位置に挿入され、値k=(m(Cs)◇m(Ms))◇sを有する。この構成は、部分木証明書およびマニフェストに独立した完全性保護を提供し、古いノード値を独立して保持する。Csで表されるプラットフォームプロパティのアテステーションは、この構成でも、部分木の左内部ノード*だけをクオートすることにより、sについての情報を明かすことなく行うことができる。
証明書と部分木のバインドの変形は各種ある。プラットフォームは、例えばセキュアなクロックによる内部タイムスタンプ等、自身で生成したデータ(の完全性保護値)を含めたい場合もある。この部分の実装は使用事例に固有であってよい。
部分木証明書で表されるプロパティをバリデータに対して立証するために、プラットフォームは、TPM_Tree_Node_Quoteを使用して、少なくともマニフェストおよび証明書自体を含む対象妥当性検査データを保護する、更新後の部分木の中のノードまたはそれより上にあるノードをクオートすることができる。そして、プラットフォームは、必要に応じて妥当性検査データ、少なくとも表明されるプロパティの検証に必要な全てのデータ(この場合も少なくともMsおよびCsを含む)をバリデータに提出する。提出されたクオートですでに保護されている妥当性検査データは、基本的には、それ以上の完全性保護は必要としない。
バリデータは、プラットフォームによる妥当性検査データのバインドを検証することができる。このプロパティを証明すること、すなわち妥当性検査を行うプラットフォームが、SCAに対して部分木証明を行ったプラットフォームと同じであることを証明することは、容易でない可能性がある。これを実現する方式の1つは、証明時と同じAIKを部分木妥当性検査で使用するものである。その場合、プラットフォームはapubも提出し、必要な場合はCaも妥当性検査データの一部として提出することができる。Caが必要とされるかどうかは部分木証明書のセマンティックに依存する。すなわちSCAはすでにAIK証明書を調べている可能性があり、Csがその真実性を表明する可能性がある。対応する情報をマニフェストに入れることができる。同じAIKを再使用すると部分的にプライバシーを損ない、この問題を解決する他の方法も検討することができる。
部分木証明を使用するためのステップの1つは、プラットフォームが特定のSCAから証明書を取得することが可能な部分木を見つけることである。プラットフォーム、SCA、およびバリデータ間の対話の詳細には立ち入らずに、部分木発見方法の2つのカテゴリを以下で説明する。第1のカテゴリは、部分木発見の負担をプラットフォームに課すものであり、第2のカテゴリでは「ダム(dumb)」プラットフォームを想定し、SCAにより高い負荷を課す。
一例では、SCAがいくらかの部分木発見データをプラットフォームに送信する。最も単純な事例では、プラットフォームが直ちに証明できるノード値のリストを送信する。プラットフォームは、自身のSMLツリーからそれらの値を探索し、特定された各ノードに部分木証明を行うことができる。この基礎となる手順は、各種の改良、特に発見用データを拡充することと発見手順をプラットフォームとSCA間のネゴシエーションプロトコルに拡張することを提案する。例えば、発見用データは、証明可能な根に対する条件として根ノードの位置を含むことができる。これは、認証ブートプロセスで生成されたSMLの場合、後者の部分木の構築時にロードされるコンポーネントは、プラットフォーム起動の定義された段階でロードされることに相当する。
ノードの絶対的な配置に対するそのような条件は、構成が動的に変化しうる複雑なプラットフォームの場合は実際には困難である可能性がある。従って、より精緻な条件では、いくつかの、例えば証明可能な根ノードの対の相対位置を表してもよい。SCは、例えば「sは、rより後にある場合に証明可能である」(すなわちrは、順序付けされたSMLツリー中でsの左に位置することができる)ことを知らせる表現等の表現を表明することができる。これは、別の機能が特定の機能前に動作可能になった場合は、該特定の機能がプラットフォーム上で動作可能になることを目的として解釈することができる。
このモデルのより本質的に異なる変形は、発見データが部分木の根すなわち内部ノードから構成されるのではなく、葉、すなわち測定結果の値からなるものである。「ボトムアップ」式の発見手順では、信頼される値と認識していることをSCAが表明している受け取った葉の測定値に基づいて、プラットフォームが、どの内部ノードが証明可能であるかについての「知識に基づく推測」を行うことが必要とされる場合がある。1つの方法は、全ての葉が発見データ中にある部分木の範囲となる根の集合を見つけるものである。そして、プラットフォームは、部分木の根をクオートし、SML部分木と共にSCAに送ることができる。一般に、これはなお葉の順序に依存する可能性があるため、SCAはSML部分木を検証し、その根を証明できるかどうかを判定しなければならない場合がある。場合によっては、プラットフォームは、SCAが一部の葉の値を知っている部分木の証明書の取得を求める場合があり、すなわち、発見用データを基準とした時に、対応する部分木の葉の集合に空白箇所がある場合がある。プラットフォームが他の信頼されるデータ、例えばSCAが信頼するパーティから取得したRIM証明書を有する場合、プラットフォームは、それらのデータを部分木証明の段階2で提出して、SCAが部分木の根を証明するための判定を行うのを助けることができる。
機器が部分木のローカルな発見を行うことができない場合は、計算をSCAに移す実装を使用することができる。プラットフォームは、nより下の適切な部分木を探すためにSCAから証明書を取得することを目的として、内部ノードnを選択する。プラットフォームが証明可能な全てのノードを証明することを要求する場合は、ノードnは、完全なツリーの根(V)に等しい可能性がある。続く2つのステップは上記で段階1および2で説明したのと同様であり、すなわちVが選択された場合はプラットフォームがそれぞれTPM_Tree_Node_QuoteまたはTPM_Quoteを行う。アテステーションパッケージは、クオートされた根より下のSML部分木と共にラップされる。SCAはこの情報を受け取り、ツリートラバース技法を使用してツリーの完全性を検証し、同時に、証明可能な根の集合Sを持つ1つまたは複数の(互いに素の)部分木Siを見つけることができる。
SCAは次いで上記のようにプロトコルの段階3を繰り返すことにより、全てのsi∈Sに証明書を作成する。このプロトコルでは、更新ノードリストUに取り込まれた複数ノードを更新することができるので、見つかった全ての部分木の更新を1回のプロトコルの実行で行うことができる。変形例の1つは、プラットフォームが第1のステップでTPM_Tree_Node_QuoteまたはTPM_Quoteを送信せずに、選択されたノードnから開始するSMLをSCAに提供するものである。そして、SCAは、証明する潜在的な候補部分木を探し、特定された部分木の根ノードにTPM_Tree_Node_Quoteを提供するようにプラットフォームに要求する。これは、プラットフォームが事前に暗号操作を行わずにSMLを送信できるようにする点でトレードオフである。それでも、プラットフォームは、SCAによる証明の前に適切なクオートを提供して、送信するSMLの完全性保護を提供してよい。
上記では、TFVを実装するシステム、方法および装置を説明した。以下では、TFVの変形および/または拡張を説明する。
バリデータがプラットフォームから提出されたツリー型SMLをトラバースするための方法は、上記のようにレベル単位で下降していくことができる。以下で説明する変形手順では、バリデータが初めにSMLツリー中の部分木の根の既知のgoodな値を探して、妥当性検査済みのプラットフォームの既知のgoodな部分を特定し、その後不合格の葉コンポーネントを求めてSMLツリーをトラバースする。
プラットフォーム全体のSMLツリーの参照ツリーを保持することは難しい場合がある。そのようなツリーは大きく、プラットフォーム構成、例えばコンポーネントのロード順序に大きく依存する場合がある。ツリーのトラバースによる妥当性検査では、シーケンスに記述された診断妥当性検査が、妥当性検査されるプラットフォームの所望の基準構成に準拠しないコンポーネントを特定すると判断する際に、静的な測定結果シーケンスを想定する。実際、Merkle-Damgard変換は可換性でも結合性でもないので(マルチセットのハッシュ関数ではない)、ツリーの根の値は正確な測定結果シーケンスに依存する。これと同じことが線形に生成されたPCR値に当てはまるため、上記の性能の比較はなお理にかなう。ツリーの根が順序の影響を受けることの問題についてはさらに下記で取り上げる。下記に記載される方法は、ここで説明する方法と組み合わせることができる。
単純な解決法では、1つのプラットフォームの(機能面およびセキュリティ面で)互いに実質的に等価な構成についての参照ツリーを維持することを状況が必要とする可能性がある。従って、完全な参照ツリーよりも細粒度の妥当性検査用データセットが望ましい場合がある。
SMLツリーおよびそれに対応する参照ツリーの根の既知のgoodな値のデータベースを保持する代わりに、バリデータは、様々な深さの部分木の既知のgoodな部分木の根の値の拡張データベースを保持する。それらの値は対(r,d)として記憶され、rは部分木の根のノード値であり、hは部分木の深さである。深さdの範囲は、完全なSMLツリーの深さDから0であり、d=0は、対応する既知のgoodな参照値が実際に葉の測定結果であることを意味する。診断ツリートラバースにおいてあるレベルLに達すると、暗号の検証後に、バリデータは、幅優先探索により、受け取ったSMLツリーのそのレベルにあるノード値と、既知のgoodな値{(r,d)|d=D−L}とを比較する。一致する根を持つ部分木は「既知」とマークされ、その後の診断トラバースから除外され、診断トラバースはレベルL+1に進む。
既知の部分木の根のデータベースを保持することにより、バリデータにとっては、ツリーを根から下降していくのと反対の異なる妥当性検査方式が可能になる。バリデータは、効率的と思われる探索手順により、SMLツリー中の既知のgoodな部分木の根の値(の部分集合)を探す。そして、バリデータは、それらの部分木の根の完全性を検証することができる。このために、バリデータは、部分木の根ノードの縮小ツリー、および他箇所で説明するその値のための検証手順を使用することができる。値の完全性が検証された場合は、対応する部分木を「OK」とマークし、以降の診断妥当性検査から省略することができる。
既知の部分木をそのような既知として特定すると、異なるプラットフォーム構成、特に既知のコンポーネントと不合格コンポーネントの異なるロード順序の余地を残す。例えば、それぞれ8個の測定結果の葉を有する2つの部分木AおよびBがあり、それらの間に不合格コンポーネントを含む別の部分木を有するとする。バリデータがAおよびBを既知と識別するが、通常であればB、Aの順および直接の順序で受け入れ、または別の既知の部分木CがA、C、Bの順で真ん中にある場合、バリデータは、そのプラットフォーム構成を有効として受け入れるかどうかをポリシーに基づいて決定しなければならない。
上記変形の拡張例として、バリデータは、以前のプラットフォーム妥当性検査の結果に基づく対話型の学習により、参照ツリーデータベースに動的にデータを入れることができる。可能性の1つは、プラットフォームが初めて妥当性検査する時に診断妥当性検査を行い、本明細書に示すように、バリデータのコンポーネント(すなわち葉)、信頼される参照値およびポリシーに従って、goodなプラットフォーム構成に相当する葉の測定結果の部分列から既知のgoodな部分木を生成するものである。妥当性検査を行うプラットフォームが増えると、バリデータは、(構成に関連する)共通点やリスク等の基準に従って、既知のgoodな部分木とプラットフォーム構成の統計的に重み付けしたデータベースを構築することができる。例えば、頻繁に出現する部分木を最初に探すことができる。
上記の方法は、部分木証明の方法に関して説明した部分木発見方法に似る。これは、学習方式と共に、または別個に、SCAエンティティによって適用できる方法である。
バリデータがプラットフォームから提出されたツリー型SMLをトラバースする方法は、レベル単位で下降していくものである。そのために、ツリー全体を1回の通信ステップでバリデータに提出し、参照ツリーと比較して評価する。ここで、様々なレベルのツリーノードを1つずつ順次送信する代替実施形態を説明する。
SMLツリー全体をバリデータに提出することができる。これは一般には最適ではなく、特に不合格の葉の測定結果の比率が低い場合には最適でない可能性がある。その場合、SMLツリー全体の一部として多数の部分木が送信されることになるが、部分木の根が参照ツリーの対応するノードに関して正しいため、それら部分木に含まれるノードデータは妥当性検査に使用されない可能性がある。
TFVで送信データを最小にするための基本手法は、他の箇所で述べたように、ツリーのトラバースによる妥当性検査の現在のステップで実際に必要なデータだけをバリデータに送信するものである。バリデータはまずSMLツリーの根の検証データレジスタを受け取り、双方向型のツリートラバースによる妥当性検査のレベルL=0としてそのレジスタを評価する。レジスタの値が参照ツリーの根と一致する場合、妥当性検査は終了する。その他の場合は、バリデータは、根の2つの子ノードをプラットフォームに要求する。子ノードを受け取ると、バリデータは、本明細書に記載される図9の完全性の破綻条件c)を検出して終了するか、または子ノードから根を再計算する。子ノードを含むメッセージは、拡張動作の再計算によってその内容が親ノードに対して検証されるので、原則としては完全性についても新しさについても暗号による保護を必要としない。そして、根は、TPM_Quoteまたは同様の操作、例えばデジタル署名で保護して送信されるものと想定された。
バリデータは、L=1の2つの子を比較して、2つのうちどちらが参照ツリーに対して正しいかを判断することができる。2つの子は以降の探索から除かれる。そして、バリデータは、ツリーの深さ1にある全ての「bad」なノードの子を要求する(すなわち、ツリー深さ2にある2つまたは4つの子ノード)。それぞれの子についての検証および参照ツリーとの比較は前述のように進行する。この手順は反復により継続する。このようにして、不合格の葉測定結果を見つけるのに必要とされるbadな内部ノードが実際にバリデータに転送される。上記のように、これは、短いメッセージサイズで暗号化の過負荷なしに非常に効率的に行うことができる。ツリー型SMLの大きさに対するデータ量は、不合格の葉の割合に応じて決まる。これを本明細書に説明される図10に示す。
TFVの適合性のためのツリー型検証データと他の方法との各種組合せがある。1番目は、頻繁に変化する、動的なプラットフォームの(部分的な)状態のために妥当性検査データを提供するものであり、2番目は検証データのための拡張可能な空間を提供するものである。
PCRすなわち検証データレジスタは、わずか1つの(ハードウェアで)保護されたメモリ空間であり、よく知られるようにプラットフォームには検証データレジスタが不足する。本明細書に記載されるように、ハッシュツリーは基本的にこの制約を解消する。しかし、根が保護された検証データレジスタ、例えばPCRを用いてツリー型SMLのセキュアな生成プロセスを行うと、固定された深さのツリーとなり、葉の測定結果のための容量が制限される可能性がある。プラットフォームが、自身のツリー型SMLに収まる以上の測定対象コンポーネントを有する場合には問題が生じる可能性がある。
検証データが、メモリ領域等頻繁に変化する部分的なプラットフォーム状態の記録を保護している場合は、別の問題が生じる可能性がある。PCR値を更新するハードウェア保護された動作であるTPM_Extend動作は時間がかかる。そのため、PCRは、頻繁に変化するデータの保護には適さない。従って、PCRは、直接的な実行時メモリ保護には適さない場合がある。各種システムではこの目的のためにMerkleハッシュツリーを用いるが、その根は通例はハードウェア保護されたレジスタには記憶されない。これは、Merkleハッシュツリーの更新は非常に時間がかかり、プラットフォームの動的な変化に追随していくことができないためである。
(離散)時間tに依存する何らかのデータW(t)で表される動的に変化するプラットフォーム状態を保護する際に用いられる基本的な考え方は、関連する検証データレジスタRに対する「キャッシュしてから更新」の方式である。何らかの信頼されるソフトウェアAPP_RがRでこの状態シーケンスを保護する。APP_Rは、長さLの状態の区間W(kL+1),...,W((k+1L)を集め、それらをキャッシュしてからダイジェスト関数で測定し、PCRの拡張動作または例えばMerkle-Damgardを利用した同様のチェーン化動作を使用して、拡張してRに入れる。
APP_Rには、様々な高いセキュリティ要件が該当する。特に、APP_Rには変更および改ざんを防ぐ十分な保護が適用されなければならない(例えば仮想化やセキュリティカーネルとの統合等の方法が知られる)。さらに、APP_Rの動作は、外部のバリデータによる評定に公開される場合がある。そのための最低要件は、APP_Rの信頼性を例えばセキュアな起動時に検証し、ロード前にAPP_Rを測定することによって記録し、バリデータにより検証できるように、Rで保護される実際のシーケンスWにバインドすることである。
望ましい機能を提供する方法は以下の通りである。シーケンスW(t)を長さLの区間に切り分けることができる。
そして、部分シーケンスにダイジェスト関数を適用して区間の測定値Mk=m(W(L(k−1)+1)||...||W(Lk)を生成する。変形の1つとして、例えば下記のように、区間の測定時にセキュアな提供元から入手されるタイムスタンプを取り入れると有用である場合がある。
Mk=m(W(L(k−1)+1)||...||W(Lk)||TPM_Tick(now)
測定値の区間にタイムスタンプを付加すると、コンポーネントのロード順序に関する情報を失うことなく、(下位)構造の再順序付けが可能になる。さらに測定結果の「経時変化」も可能になり、バリデータは、所与の期間後に測定値の更新を要求することができる。区間の測定値は、例えば拡張動作R(k+1)=R(k)◇Mk+1で測定値を拡張して検証データレジスタに入れることによって保護され、その結果、通常の線形チェーンのSMLと同様のシーケンスが得られる。
→R(k)→R(k+1)
↑ ↑
Mk Mk+1
この場合、中間状態もSMLで保護される。すなわち、Wを保護するSMLは次のようになる。
SMLW⊆[Rinit,R(0),M1,W(1),...,W(L),R(L),...]
この管理アプリケーションAPP_Rの信頼される状態への望ましいバインドは次のように実現することができる。プラットフォームのセキュアブートまたは認証ブート機能により、ロード前にAPP_Rを測定し、測定値m(APP_R)を拡張して検証データレジスタQ(推移する信頼チェーン中の先行するPCR Pの値で初期化してもよい)に入れる。そして、実際の記録レジスタRのシーケンスを、P、および初期化値R_init、例えばセッションノンス若しくはタイムスタンプ、またはその両方で初期化する。その結果次の構造が得られる。
P → Q → R=R(0)
↑ ↑
m(APPR) Rinit
検証データレジスタの不足がある場合は、P、Q、およびRは1にしてよい。検証は、Wについて拡張されたSMLに対して進行し、SMLは
[(W(Lk+1),...,W(L(k+1))),Mk+1,R(k+1),R(k),...,/R(0),Rinit,Q,m(APPR),P]
およびP、Q、Rのクオートを含むことができる。存在する場合は、SMLは、タイムスタンプの値も含むことができる。
実際のハードウェア保護された検証データレジスタは、ツリー型SMLの根から切り離すことができ、SMLの根はその後、低保護のメモリ空間に記憶することができるが、検証データレジスタで保護される。このために、特殊なソフトウェアTFV_APPが根Wで保護されるハッシュツリーを管理し、根Wはなお通常のメモリ空間の深さd、葉V_1,...,V_(2∧d−1)の内部ツリーにあってよい。そして、例えば1つ前の項で説明した区間方法を使用して、W(t)の状態シーケンスがハードウェア保護された実際の検証レジスタRで保護される。そして仮想レジスタVをSMLツリーの根として使用することができ、TFV_APPで管理される。その仮想レジスタについて、TFV_APPは、仮想レジスタが根の検証データレジスタであるかのように、他箇所で説明したコマンドを外部アプリケーションに公開する。Rの構造は先と同様に
→RN+1(t−1)→ RN+1(t)
↑ ↑
W(t−1) W(t)
となり、結合されたWは、図29に示すようにツリーの根を表す。
Vi(t)の検証は、以下の検証データに拡張することができる。
Vi(t),R(Vi(t)),W(t),RN+1(t),RN+1(t−1),RN,RN-1,m(TFV_APP),Q({RN-1,RN,RN+l})。Qは、PCR、RN-1,RN,RN+lのクオートであり、以下に従って進行する。
i.縮小ツリーR(Vi(t))、および根W(t)に関してVi(t)を検査する
ii.(2)によりRN+1(t)=RN+1(t−l)◇W(t)を検査する
iii.追加的にRN+1(0)、W(0)が送信された場合は、RN+1(0)=RN◇W(0)を検査する
iv.RN=RN-1◇m(TFV_APP)を検査する
v.参照値と比較してm(TFV_APP)を検査する
vi.クオートQを検査する。
追加的に、上記のようにタイムスタンプを適用してもよい。TFV_APPのバインドは、
RN-1→ RN → RN+1(t=0)
↑ ↑
m(TFV_APP) W(0)
と同様に根RN+1に行われるものとし、W(0)は任意の初期化値である。
SMLツリーのセキュアな形成には、当然の容量の制限がある。この制限を解消する一方法は、上記の部分木証明を簡略化したプロファイルで適用するものである。ある固定の深さのSMLツリーが完全に埋められ、プラットフォームがツリーを(自己)証明し、得られた証明書を最初の測定として次の空のSMLツリーに挿入する。その結果、図28に示すような左が非平衡の多ツリー構造となる。
レジスタVは、ツリー型SMLであるSML_1の根を保護することができる。次のツリーにセキュアに続けるための独立した方式は以下の通りである。プラットフォームは、TPM_Quote(V,a_1)を呼び出して、AIK a_1を使用して署名されたステートメントQ_1を得る。TPM_Quoteは、指定された検証データレジスタVに対してTPのTrEの内部で(例えばTPMにより)実行することができる署名コマンドを表す。そのため、Q_1は、a1の署名およびPCA証明書が検証されると、値Vがかつて検証データレジスタVに保持されていたことをベリファイアに表明する。プラットフォームは、増強したSML_1、SML_1*:=SML_1||V||Q_1||Cert_PCA(a_1)すなわち、元のSML_1、その根の値、クオート、および対応するAIK証明書を後の検証のために保存する。プラットフォームはVをリセットする。上記のプロパティにより、SML1*は、SML1およびその根を保持しているレジスタVと意味的に等価となる。この時点で、レジスタVは、次のツリー構築のために解放されている。
後続のツリーを先行するツリーにバインドすることで、統轄しているRoT(root of trust)による内部検証の継続、すなわち保持されている葉の測定結果に対する継続的な完全性の保証を保証することができる。このための例示的方法の1つは、1つ前のツリーにバインドした最初の測定値で次のツリーSML_2を開始するものである(例えばプラットフォームのRTMを変更することによる)。これを行う各種例については下記で説明する。
例えば、最後の根の値Vを最初の測定結果として直接使用することができる。すると次のツリーは1つ前のツリーに適用された証明のセマンティックについての手がかりを一切含まないため、これは事象の順序を保存することができない。別の例によると、測定結果m(Q_1)をSML_2の最初の葉として使用することができる。別の例によると、m(V||(Q_1)||Cert_PCA(a_1))をSML_2の最初の葉として使用することができる。別の例によると、m(SML_1*)をSML2の最初の葉として使用することができる。
最後の3つの選択肢は意味的に等価であるが、検証および/または生成の複雑度の点で実際的な重要度が異なる。証明されたツリー型SMLの連続は、制限なしに反復的に継続することができる。証明による内部での連続に代えて、信頼される第3者に要請してSML_1ツリーを証明させてもよい。
ツリーの証明された連続は、要請されたTTPにより、追加的なセマンティックを加えて拡張することができる。詳細には、根を証明する要求と共にSML_1が提出され、検証された場合は、すなわち根の再計算により整合性が検査された場合は、SML_1のハッシュ値を、TTPから得られる証明書に直接埋め込むことができる。これは、後に、SML_1がTTPによる証明のために提出された時に改ざんされなかったという保証をバリデータに提供する。これにより、SML_1の根の値は原則として古くなる。バリデータは、SML_1のブロブに対するグローバルハッシュおよびそのハッシュに対するTTP証明書の署名を検証して、SML_1の完全性を検査する必要がある。これは有利であるのは、ツリートラバースによる妥当性検査のためにSMLに参照ツリーを使用することを望むバリデータにとって、内部ノードのハッシュ演算の再計算が必要でなく、参照ツリーノードとの直接の比較を使用できることを意味するためである。これにより、不合格コンポーネントの探索を迅速化することができる。さらなる変形として、TPMティックスタンプ(tick-stamp)またはTTPタイムスタンプを証明に追加してもよい。
より表現力のある妥当性検査データをツリー型SMLの検証データ中にバインドするいくつかの方法および選択肢を以下で説明する。
任意構造のSMLの表現性は、コンポーネントコードおよびデータの測定結果そのものに自ずと制限される。一般に、これは、妥当性検査を効率的に処理し、妥当性検査の結果に従ってプラットフォームを効果的に管理するのに十分な情報をバリデータに与えない。この理由から、TCGは、SMLの概念を拡大して、コンポーネント識別子、ロード時間、パラメータ、および関連する情報も記録するイベントログとし、TCG IWGは、認証ブートで収集される関連情報を取り込むための複雑で表現力のあるデータ構造である(実際にはツリー構造)IMLの概念を導入している。
しかし、そのような拡充され、構造化された妥当性検査データは、ツリー型SML等の適切な関連構造を検証データにバインドすることを欠く可能性がある。特にツリー型SMLの場合には、コンポーネントおよびプラットフォームプロパティに関するコンテクスト情報、または他の有用な妥当性検査データをどのようにして実際の検証データからなるハッシュツリーにセキュアにバインドするかという問題が生じる。
実際の測定プロセス、すなわちプラットフォームの起動段階では、妥当性検査データにメタデータを追加し、基本的には測定対象コンポーネントについて小さな部分木を確立することにより、メタデータをSMLツリーにバインドする。例示的な実現(ただし多数のコンポーネントとその測定結果の葉に関する)は上記に記載した。TFVの文脈における測定プロセスを以下のように拡張して、SMLツリーにメタデータを含めることができる。
1.測定およびSMLの構築を行うエージェント(RTMと同一、またはRTMと協働する)がコンポーネント測定マニフェストをロードする。マニフェストは、対象コンポーネントについて収集し、SMLツリーに含めるべきデータについての指示を含んでいる。
2.SMLツリー内で次の葉が右のシブリング(その2進座標の最下位桁がT)である場合、エージェントは、SMLツリーに1つのニルを書き込み、TPM_Tree_Extendを使用してその値を保護する。これにより、コンポーネントが新しい独立した部分木を開始することが保証される。
3.エージェントがコンポーネント自体を測定し、その測定値をSMLに書き込み、TPM_Tree_Extendを使用して値を拡張して根のPCRに入れる。
4.エージェントは、マニフェストおよび各項目に対して以下を繰り返す。必要なメタデータを収集する。そのメタデータを妥当性検査データシーケンスに付加する。メタデータの測定結果、例えば暗号ダイジェストを取得する。そのメタデータの測定結果をSMLツリーに挿入する。TPM_Tree_Extendを使用してメタデータの測定結果を拡張して根のPCRに入れる。
5.エージェントは、そのコンポーネントの測定結果シーケンスが2の2乗に達するまでニル値を付加することにより、コンポーネントの部分木を埋める。
この結果図30に示す形態のコンポーネントの部分木構造が得られ、m(.)は、適切な測定関数(各種形態のメタデータ間で異なってよい)を表す。
メタデータの測定結果は、別の場所、例えば内部ノードに挿入してもよい。メタデータの挿入は手順上測定プロセスから切り離してもよく、これは例えばプラットフォームの起動を早めるために有用である可能性がある。そして、メタデータは別のプロセスで収集し、SMLツリーに挿入されるまでセキュアに記憶しておくことができる(少なくとも何らかの形態の完全性保護を適用して)。測定エージェントは、コンポーネント測定マニフェストにある要素の数に応じてニル値で部分木を埋めることにより、部分木中に十分な空き空間を作成する。起動時にコンポーネントの測定結果そのままであるツリー型SMLが完成すると、メタデータを測定し、TPM_Tree_Node_Verified_Updateコマンドを使用して該当する場所に挿入することができる。
コンポーネント部分木に含めることができるいくつかの有用な種のメタデータとその潜在的な有用性を以下で説明する。
コンポーネント識別子。例えば、コンポーネントの製造者、名称、バージョン、ビルド、発売日等からなるコンポーネント識別子は、含めることができる最も基本的なメタデータである。基本的にはコンポーネントの測定値自体がすでにコンポーネントを一意に識別するが、独立した識別子は、少なくないセマンティックを追加する。コンポーネント識別子は、測定の結果とは別個に、プラットフォームが当該コンポーネントのロードを試みたことを表明する。従って、特にコンポーネントコードまたはデータが侵害された場合は、どのコンポーネントが完全性の検証に合格しなかったかについての独立した情報がコンポーネント識別子からバリデータに与えられる。この情報は、対象コンポーネントのための正しいTRVを見つけることを可能にするため非常に有用である。この情報は、上記方法のコンポーネントの順序の基準として有用である。TCG標準によるイベントログまたはIMLはすでにコンポーネント識別子を含んでいるが、通常は検証データによって保護されない。本発明では、コンポーネント識別子をSMLツリーの検証データにバインドし、それにより、提供される完全性保護からより高い保証レベルを得ることができる。コンポーネント識別子は、含めるためのある形式(例えば160ビット列)にあるか、または測定してその形式を得てもよい。
RIM証明書。TRVの適切な識別は、コンポーネントのSMLツリーにバインドする有用なメタデータとなりうる。TRVの識別は、例えば対応するRIM証明書のフィンガープリントとして実現することができる。TRVの識別は、例えば、適正な証明書に従って自身のデータベースまたはTTPを介して保持されているRIM(TRV)を見つけるため、または証明書のステータス情報を得るために(バリデータによって)使用することができる。その場合、RIM証明書自体はプラットフォームの妥当性検査データに組み込む必要はなく、バリデータに送信しなくてよい。プラットフォームの起動プロセスがセキュアである場合、例えばセキュアブートプロセスとして実現される場合は、対応するRIM証明書情報を含めることで追加的なセマンティックを得る。すなわち、RIM証明書情報は、その特定のRIM証明書で証明されたTRVがコンポーネントの測定値との比較で使用されたことを表明する。その場合、例えば鑑定用評価の要件によっては、コンポーネントの実際の測定値はツリー型SML内で古くなっている場合がある。
コンポーネントのコンテクスト。コンポーネントのコンテクストは、コンポーネントがロードされる実行時環境の記述を含むことができる。
タイムスタンプ。メタデータとして追加される保護されたタイムスタンプは、コンポーネントのロード時間をバリデータに提供することにより、測定結果にコンテクストを追加する。それにより、バリデータはコンポーネントのロード順序を検証することができる。ロードの順序は、コンポーネント間の依存関係を妥当性検査しなければならない場合に重要である場合がある。また、1つの測定結果の新しさを評定することも可能になり、データ構造が許す場合は、バリデータはコンポーネントの新たな測定結果を要求することができる。これは、測定結果の経時変化プロセスに基づいて行うことができる。測定結果の経時変化プロセスでは、測定結果が定義された寿命を有し、その寿命に達すると、バリデータはコンポーネントの新しい測定結果を要求することができる。さらに、測定結果に個々のタイムスタンプを適用すると構造化データの再順序付けが可能になり、バリデータは元のブートローダを導出することができる。
機器または動作環境の現在の状態に応じて異なる形で設定することができる、実行時/調達期間設定等のコンポーネント開始パラメータ。
コンポーネントのセキュリティポリシー。プラットフォームに施行エンティティが含まれている場合は、各コンポーネントに関連付けられ、そのエンティティによって施行されるセキュリティポリシーは、バリデータがプラットフォームの信頼性を評定するための重要なデータとなる。コンポーネントの測定結果およびメタデータを部分木に編成することにより、上記で部分木証明方法に関して説明したように、SCA等のTTPにそれらの妥当性検査を委託することができる。
コンポーネント起動時の地理位置情報は、測定結果の表現力に別の次元(場所)を加える。このメタデータフィールドは、頻繁に場所を変え、アプリケーションも場所に依存する可能性がある(例えば、資産/貨物追跡報告ソフトウェア)、移動する機器の場合に特に有用である可能性がある。コンポーネントが特定の時に測定されたことを報告する代わりに、このメタデータは測定が行われた場所も含むことができる。
TFVの実際的な実現のために、コンポーネント部分木は、ほぼ「静的な」性質のデータを含むことにより、下記の認識の問題を回避することができる。所望のメタデータが頻繁に変化するデータまたはプラットフォームに多少特有なデータを含む場合は、そのようなデータに対して、専用の根の検証データレジスタで保護される全く別個のSMLツリー、またはコンポーネントSMLツリーの指定された部分木を保持することが意味をなす可能性がある。そのような一時的なメタデータSMLツリー内での位置を、元のSMLツリーにバインドすることができる。バインドは、単に順序により、またはコンポーネント識別子若しくはコンポーネント測定葉の繰り返し、または一時的なメタデータSMLツリーの内容を元のSMLツリーの対応コンポーネント部分木に結び付ける他の手段による。
線形にチェーン化されたSMLとその結果得られるPCRと同様に、ツリー型SMLおよび根の検証データレジスタは、測定値の順番の小さな変化の影響を受けやすい。従って、ツリーの値は正確な測定結果の葉の順序に依存するため、既知のツリーおよび部分木の根を効率的に認識する際に問題が生じる。この問題に対処するいくつかの異なる可能性を説明する。それらは、測定結果の葉をプラットフォームおよびバリデータに既知の順序で編成して、それにより順番の影響を受けやすいことから発生する計算量を低減するための方策である。効率的なTFVのための技術基準に従って葉の測定結果を編成する方法および技術手順についても説明する。
Merkle-Damgard変換で得られるPCR値、すなわち非結合的で非可換の演算による一方向関数の結果を組み合わせて得られるPCR値は、入力の順序の影響を非常に受けやすい。この原理は、セキュリティの観点から望ましく、この変換の特徴であり、入力データ中のごく些少な変化を検出する能力を反映する。このプロパティは、ツリー型のSMLおよび線形にチェーン化されたSML、並びに根の検証データレジスタ(PCR)にも、それぞれ同様に当てはまる。Merkle-Damgard変換のこの情報保持性は、含まれる情報の解釈に関しては複雑性を伴う。
順序化の複雑性の問題は、提出されたツリー型SMLに従ってバリデータがプラットフォームの評定を試みる時に特にTFVで生じる。不合格コンポーネントを探索するための汎用的なツリートラバース手順を本明細書で述べる。この手順は、不合格の(すなわちバリデータに知られていない)葉の測定結果の割合が高い場合でも、線形SMLの評価と比較して効率的であることが示された。しかし、この妥当性検査モデルの障害も、変更または順序の破綻、すなわちバリデータが使用する参照ツリーを基準として未知の位置に出現する測定結果が原因で生じる可能性がある。2つの既知の測定葉を1回置換すると、2つの未知の測定葉が生成される。ある位置に測定葉を挿入する、または挿入しないと、続く全ての葉、すなわちその位置の右側にある葉位置が無効になる。この問題を十分に考慮しないと、TFVの効率性の利得が失われる可能性がある。
公正を期すれば、これは線形SMLと比較した時にはそれほど問題にはならない。何故ならば、線形SMLにも同じ順序の影響を受ける問題があり、ツリー型妥当性検査は、線形の場合より複雑かつ/または計算的に高費用ではないためである。線形SMLから得られるPCRの場合は、これと同じ問題が、入力された測定結果の全ての置換について参照PCR値を維持する必要性、すなわち空間的複雑性として発生する。一方、TFVは、順序化の問題によりその有利な特徴の一部を失う可能性がある。
Merkleハッシュツリーは、各種の研究および実証のシステムでメモリの実行時検証に使用することができる。この場合は順序化の問題は発生せず、メモリ保護ツリーの葉へのメモリアドレスの静的な割り当てにわずかに発生する。部分的であってもプラットフォームとバリデータの双方に既知のそのような順序を回復することは、下記方法の背後にある発想の1つである。
ここで検討している問題は、プラットフォーム(送信側)とバリデータ(ツリー型妥当性検査データの受信側)間の情報の非対称性に関するため、情報理論的な性質である。測定されたコンポーネントの順番は両者間で効率的に共有することが可能な情報であり、ここで効率的とは、特に、バリデータが参照妥当性検査データ(SMLツリー)の過度に大きいデータベースを維持する必要がなく、バリデータが高費用の事前計算を実行時に行う必要もないことを意味する。
情報の効率的な事前共有は、ここに記載される要件を満たす1つの方法である。そのために、TFVプロセスで両者が従う規約を通じて確立された符号化がプラットフォームとバリデータで用いられる。下記に記載する方法は、この一般的な方式の実現を含む。下記の方法は、適用性において、ツリー型の検証および妥当性検査データの場合に制限されない。線形SMLの従来の事例にも直接適用することができるが、その場合に得られる利益は制限される可能性がある。プラットフォーム妥当性検査のための従来の検証データのソートによる効率の利得は、後者のデータの本質的な構造化(検証データの適切な実現は順序に依存することを前提とする)により増大する。従って、(有向、非周期)グラフや注釈付きのスキップリスト(高速の探索のために最適化された構造でもある)等の他の構造に、順序付けの方法を適用することができる。
記載する順序付け方法の他に、バリデータが検証データを認識する問題に対する別の手法がある。すなわち、バリデータは、典型的なプラットフォーム構成を時間と共に学習することができる。これは、パーソナルコンピュータ等、頻繁に変化する構成とそれほど頻繁でない妥当性検査を有するプラットフォームには有効性が低い可能性がある。パーソナルコンピュータの場合は、構成が実質的にブート周期のたびに異なる場合があり、または週に1回の更新が一般的であり、在宅勤務の場合は企業VPNへの再接続が週に何日かしか行われない。PCR値を介して送信され、遠隔アテステーションとTNC等の追加的なプロトコルを介してネットワークに対して立証されるそのようなPCの構成は、その都度異なる場合がある。一方、移動機器、M2Mゲートウェイ、およびHeNBやマルチメディアSTB等の特殊な組み込み機器はより静的な構成を有し、同時にネットワークに接続し、したがってより頻繁に妥当性検査される。また、それらの更新は、既知の機器構成を常に把握することができるネットワークエンティティによって管理される。そのような機器の場合は、機器構成の学習方式がバリデータで適用されれば十分である場合がある。例えば、初回の妥当性検査時にバリデータの参照SMLツリーを既知のTRV(例えば一致する証明書を伴うRIM)から機器によって構築することができる。そのようなツリーは実際には、同じ構成の機器の参照として使用されない可能性がある。別のプラットフォームの初回の妥当性検査時にその根の値を特定することにより、学習された参照ツリーの部分木も見つけることができ、新しく学習された参照ツリーの妥当性検査と作成のために適宜使用することができる。
ツリー型SMLの望ましい順序付けを提供するには2つの基本的な選択肢がある。RTMによって測定が実施される前に既知の順序を適用(事前の順序付け)する(その場合は正しくないSMLが形成される)か、または、測定プロセスが左側を対象としないようにし、完成したSMLツリーに後からセキュアな方式で順序付けを適用する(事後の順序付け)かのいずれかである。
事前順序付けの変更の実現の1つは、所与のSMLの順序化に従うようなプログラムの実際のロードの順序である。これが特定のプラットフォームで実現可能である場合は、その他の点ではセキュアな起動と測定プロセスを元のままに保つことができる。別の選択肢は、測定結果のシーケンスをセキュアなキャッシュに記憶し、プラットフォームが起動されてから、保護されたSMLツリーに挿入するものである。ただし、この方法は、測定値をキャッシュにセキュアに転送し、全ての測定が行われるまでキャッシュ内で完全性を保護することを必要とする可能性がある。その後、データの変更を許すことなく、順序付けの動作を記憶データに作用させなければならない。従って、この選択肢は追加的な要件を有する可能性があり、その要件が適正に満たされないとセキュリティ上の脆弱性をもたらす可能性がある。
事後の順序付けは、システムがすでに稼動している時にバックグラウンドのタスクとして「怠惰な(lazy)実行」を可能にする点が興味深い。該当する時間的制約は、妥当性検査に使用される時にSMLを順序付けできることである。ツリー型SMLの葉をセキュアに入れ替える直接的な方式があるので、事後の順序付けは、別の根の検証データレジスタで保護された、第2の空のSMLツリーに作用することができる。元のSMLツリーからこの事後の順序付けされたSMLツリーを構築するために適用されるステップは、プラットフォーム上の何らかの信頼されるエージェントによって実行され、以下の通りである。事後順序付けを行うエージェントが所望のSMLシーケンスのコンポーネント識別子のシーケンスに繰り返されて、1.次の特定されたコンポーネントの葉の位置を特定する(そのためには実際に測定されたコンポーネントの識別子が必要となる。識別子は、測定プロセスのイベントログに記録するか、例えばダイジェスト形態等でコンポーネントの測定葉のシブリングとして直接付加することができる。)2.例えば他箇所で説明したTPM_Tree_Node_Verifyコマンドを使用して、根の検証データレジスタと比較して葉の測定結果を検証する。3.検証に合格すると、TPM_Tree_Extendを使用して、測定結果を順序付けされたツリーに挿入する。そして、4.例えば依存関係の理由で、プラットフォームの全てのコンポーネントに事前順序付けが実施可能でない場合もある。
広範囲にわたる事後順序付けは、計算費用を招くため望ましくない場合がある。そのため、事前順序付けと事後順序付けを組み合わせた形態が示唆的である。具体的には、プラットフォームのコンポーネントの部分集合を事前に順序付けし、別の恐らくはより小さいコンポーネント部分を測定後に事後順序付けする。その結果、測定で少なくとも2つのSMLツリーが生成され、例えば部分木証明でそれらを結合して完全な測定ツリーにすることができる。
事前順序付けおよび事後順序付けはプラットフォームで行われ、妥当性検査データを送信する前に実行される動作であるのに対し、第3の別の選択肢は、バリデータにいくらかの計算負荷を課して参照ツリーの正しい順序化を得るものである。そのために、プラットフォームは、コンポーネント識別子のシーケンスを送信して、ツリー型SMLまたはその部分木の測定結果の順序化を知らせることができる。あるいは、プラットフォームは、葉の測定値の単純なリストを送信し、既知である場合バリデータが各葉のコンポーネントを一意に特定できるようにしてもよい。そして、バリデータは、そのコンポーネント識別子のシーケンスを受け取ってから実際の妥当性検査を行うまでの時間経過を使用して、予想される順序で参照ツリーを構築することができる。この場合、少なくとも置換された葉の割合が過度に大きくない場合は、プラットフォームの完全な参照ツリーを構築する場合よりも必要とされるハッシュ演算が少ない可能性がある。この場合、プラットフォームのSMLツリーの多くの部分木がすでにバリデータのツリーに含まれており、再使用できる可能性がある。プラットフォームから順序付け情報を受け取ると、バリデータの作業は、既知の部分列に対応し、順序が補正されたツリー内で対応する既知の部分木を挿入できる箇所にある葉の部分列を特定することである。
この手順は、妥当性検査する完全なSMLツリーの大きな部分が規約により固定された順序になっており、より小さな部分木がバリデータに未知の順序である場合に有効である場合がある。この場合、プラットフォームは、妥当性検査対象の完全なSMLツリーと一緒に、またはその前に、部分木のシーケンスおよび完全なツリー内におけるその位置を提出し、バリデータは、参照値から未知のシーケンスの部分木を構築し、自身の参照ツリーの正しい位置に挿入することができる。
1つの実装ではコンポーネントの辞書式(lexicographic)順序付けを適用することができ、その場合は、ソート後のデータをコンポーネントの参照測定値、例えばRIM値(RTMによって行われた実際の測定結果ではない。実際の測定結果は、コンポーネントのセキュリティが損なわれた場合は異なる可能性がある)とすることができる。別のソート基準は、コンポーネントの一意の識別子またはそのダイジェスト値である。このデータも、上記方法に従ってツリー型SMLに含めることができる。辞書式順序付けの変形は、測定値および/または他のデータに符号化を割り当て、その結果得られるコードを辞書式ソート基準として使用するものである。
測定されたコンポーネントは、各自が不合格になる確率に従って順序付けすることができる。これを実用的にするために、バリデータは、例えば妥当性検査されるプラットフォームの大きな母集団から推定される不合格率から、既知のコンポーネントに対して不合格の確率クラスを定義することができる。そして、ある不合格率クラスのコンポーネントをプラットフォームに伝え、そのクラスの用意された部分木に含めることができる。その結果、ツリーのトラバースによる妥当性検査に最適化されたSMLツリーが得られる。これは、このSMLツリーは、トラバースの際に探索から除かれる可能性が高い部分木(不合格の確率が低いコンポーネント)を含んでいるためである。
プラットフォームのコンポーネントに階層的な編成がある場合は、それに応じて測定結果を順序付けすることができる。例えば、プラットフォームが下位モジュールからなる機能で構成される場合、機能のための部分木を用意することができ、それら個々のモジュールの測定結果を含むことができる。1つの機能に属する部分木の内部では、適用可能な他の順序付けを使用することができる。そして、機能の部分木を順序付けし、組み合わせてプラットフォームの完全なツリー型SMLとすることができる。
例えば、機能モジュール間の関係に従ったシステムコンポーネントの階層的な編成では、結果として得られる測定結果の順番に影響を与えうる依存関係がある場合がある。特に一般的な事例は、2つ以上の機能に属するモジュールである(共有ライブラリに似るか、または同様)。そのようなモジュールは、プラットフォームのセキュアな起動時に1回ロードし、測定することができる。機能に従って階層的に編成されたSMLツリー内でそのようなモジュールを正しく捉える1つの方法は以下の通りである。セキュアな起動を行うエージェントは、ロードされた全モジュールを常に把握し、例えばあるモジュール識別子が所定の測定結果のシーケンス内で再度出現した場合に、繰り返しを特定することができる。階層的に順序付けされたSMLツリーを構築する際、モジュールの繰り返しに遭遇すると、エージェントは、まずSMLツリーにおける最初の出現箇所を探し、次いでその最初の出現位置にある実際の測定値を検証し、次いでその値をツリー中の新たな位置に挿入する。
プラットフォームが、(参照値に照らして)完全性が正しく検証されているもののバリデータに未知のコンポーネントをロードする時には特殊な状況が発生する。順序なしにSMLツリーに挿入すると、不合格のコンポーネント、および後続コンポーネントの配置の障害が生じる可能性がある。バリデータとプラットフォームがどのコンポーネントがバリデータに既知であるかについての知識を共有する場合、プラットフォームは、未知の測定値をソートして別の部分木とすることができ、一方、既知の測定結果の部分木はバリデータに既知の順序で作成される。そしてこの2つのツリーをツリートラバースによる妥当性検査のために結合して、例えば、既知のSMLツリーが左部分木となり、未知のコンポーネントツリーが右のツリーとなるようにする。後者はバリデータの参照ツリー内で、ニル値を含む空のツリーとして作成される。それにより、既知の(左)部分木のために影響されずにツリーのトラバースによる妥当性検査を進行させることができる。
上記のシステム、方法および装置は、検証データおよび妥当性検査に、ツリー構造等の階層的な構造を生成し、使用する。以下に、そのようなツリー構造をネットワーク妥当性検査で使用する実施形態をさらに記載する。
ツリー型妥当性検査(TFV)は、複雑な種類のネットワーク側プラットフォーム妥当性検査を可能にするものである。TFVは構造化された妥当性検査の実現であり、これは、バリデータが構造化データを使用してプラットフォームの状態を評定することを意味する。データの構造は、ある程度プラットフォームの構造を反映し、妥当性検査を支援することができる。構造化された妥当性検査は、他箇所で述べたプラットフォーム妥当性検査および管理(PVM)で定義される抽象的なプラットフォーム妥当性検査および管理プロセスの実装である。効果的で効率的な遠隔PVMを可能にするプラットフォームは、モジュール式の階層アーキテクチャを示す。プラットフォームの妥当性検査が動作するためのデータのカテゴリが導入される。
PVMの説明では、プラットフォーム、バリデータおよびプラットフォーム管理機能を助ける他のエンティティの間で転送されるデータの基本的な概念を定義することができる。それらのデータ概念は、セキュリティに関連するプロパティおよびセマンティック内容に従って3つのカテゴリに分けることができる。
プラットフォームで作成され、全PVMプロセスで使用されるPVMのデータには4つのカテゴリがある。それらのカテゴリは、妥当性検査を行うプラットフォームに固有である。別の追加的なカテゴリは信頼される参照データであり、これを使用して妥当性検査データを既知のgoodな値と比較する。参照データは、プラットフォームの妥当性検査で使用するためにバリデータまたはプラットフォーム内部に存在することができ、セキュアな起動に使用されるか、または妥当性検査および/または管理データとしてバリデータに送ることができる。これを図25に示し、同図では概念間の相互関係を示している。
検証データは、プラットフォーム状態または部分的な状態を明確に定義された保証レベルで検証可能に識別するデータである。検証データは検証プロセスで、例えばプラットフォームのセキュアな起動時および/または実行時にプラットフォーム内部で生成される。検証データを保護する目的の1つは完全性であり、その生成、すなわち検証時、および少なくともプラットフォームの動作周期(例えばブート周期)にわたって維持することができる。保護の別の目的は新しさである。検証データの保証レベルを定義する(そして高める)1つの方式は、検証データの一部を、例えばハードウェア保護により特別な保護レベルで保護された検証データとして切り分けるものである。その場合、記憶空間を検証データレジスタと呼ぶ。
検証データは、保護のために例えば暗号による保護されたバインドを必要とする場合がある。バインドの強度と保護の強度が、検証データの保証レベルを定義する。検証データおよび検証のいくつかの実現例を以下に説明する。
SMLは、ロードされたコンポーネントの測定結果から認証ブートプロセスで生成される160ビットのSHA−1値のシーケンスを含むことができる。これらのハッシュ値は、ロードされたコンポーネントを一意に識別する。SML値の保証レベルは、測定を実施したRTMのセキュリティ、および例えば検証データレジスタ、例えばPCRによるSMLの完全性保護に応じて決まる。変形の1つは、TFVのツリー型SMLである。
TPMのPCRは、保護された検証データレジスタを規範的に表す。TSを内部で検証するための一般的な方法の1つは認証ブートであり、TSが初期化される時、例えば電源投入時に、TCBの能力を使用して、ロードまたは起動されたソフトウェアまたはハードウェアコンポーネントの信頼性を評定する。認証ブートは、TSの他の部分より前にRoTおよびTCBの特定の機能を開始することによって実現される。それらの部分は、RTM(RoT for Measurement)として機能する。これは、後で起動またはロードされるコンポーネントが測定されることを意味する。すなわち、例えばハードウェアコンポーネントの埋め込まれたコードおよびロードされるプログラムの(2進)表現に暗号ダイジェスト値を形成することにより、コンポーネントと起動後のそれらのステータスおよび構成が一意に識別される。特定の実施形態によれば、測定値は、セキュアな記憶域、例えばPCRに記憶することができ、それが検証データの保護された部分を形成する。
セキュアブートは、認証ブートの拡張である。これは、スタンドアロンおよびオフラインの機能要件を有する場合がある、セットトップボックスや携帯電話機等の機器に特に重要である。セキュアブートを備える機器の一般的な特性は、例えばネットワークにアクセスする前等、自身の信頼性についての表明を外部に伝えることができない時に信頼される状態のセットで動作できることである。セキュアブートでは、TSはローカルのベリファイア(検証エンティティ)と、ブートプロセスを監視するローカルエンフォーサ(enforcer)とを備え、エンフォーサは、ポリシー施行ポイント(PEP:Policy Enforcement Point)とポリシー決定ポイント(PDP:Policy Decision Point)の組合せを確立して、セキュアブートプロセスを制御する。ローカルのベリファイアは、新たにロードまたは起動されるコンポーネントの測定値を参照完全性測定(RIM)値と比較し、そのコンポーネントをロードまたは起動するか否かを決定する。RIM値は、TCBに常駐するか、または、TRによりTS内部で保護される、例えば記憶空間に置かれる。このようにして、システムがブートした結果、定義された信頼される状態になることが保証される。
認証ブートの拡張であるセキュアブートでは、プラットフォームは、ローカルベリファイア(検証エンティティ)と、PEPとPDPの組合せを確立してセキュアブートプロセスを制御する、ブートプロセスを監視するローカルエンフォーサとを備える。ローカルベリファイアは、新たにロードまたは起動されたコンポーネントの測定値をRIM値と比較し、コンポーネントをロードまたは起動するか否かを決定する。RIM値はTCBに常駐するか、TRによるTS内部で保護される、例えば保護された記憶空間に置かれる。このようにして、システムがブートした結果、定義された信頼される状態となることが保証される。セキュアブートで使用されるRIMのシーケンスは検証データからなる。測定シーケンスは、追加的に、保護された検証データとして検証データレジスタ中に拡張することができる。その場合、RIM証明書(より正確にはその暗号フィンガープリント)も検証データの保護された部分となり、証明書を発行したTTPおよび基礎となる証明書インフラストラクチャにより保護が与えられる。
WSNのために一部の研究者によりプラットフォーム検証の異質の変形が提案され、その変形は「ソフトウェアアテステーション」と呼ばれる。これは、遠隔のバリデータからプラットフォームに送信されるプローブコードを実行するものであり、プラットフォームは、プラットフォーム状態、例えばメモリの内容を調べる。ゼロ知識による証明の慣行では、検証データとしてバリデータに返される情報は調査の実行時間である場合がある。難読化により、測定可能な遅延後に攻撃者が戻り信号を生成できる可能性があることをある程度保証する。
検証データと異なり、妥当性検査データは、収集されて別のパーティ、すなわちバリデータに提出され、特に、含まれる検証データに照らして検査することによりプラットフォームの状態の信頼性を評定するために使用できるデータの検証データの上位集合である。例えばTCGによる遠隔アテステーションおよびバリデータによるその評価として実現される妥当性検査データをバリデータに提出するプロセスは適正に妥当性検査と呼ばれる。妥当性検査データは、クオートされた検証データレジスタ(例えばPCR)値等の検証データからなることができる。妥当性検査は、検証データの暗号による検証以外に、ポリシーの評価と、例えば妥当性検査データに関連付けることができる可能な追加的な管理データを使用したバリデータによるアクションのトリガとを含むことができる。
検証データと同様に妥当性検査データは完全または部分的なシステム状態を識別するが、加えてより多くの情報を提供してバリデータに対して妥当性検査を効率的にし、妥当性検査結果の粒度のレベルを判定する。妥当性検査データの例には以下がある。PBA等により生成される対象システムのプロパティ、またはコンポーネントの名前およびバージョン、コンポーネントのステータスおよびパラメータ、TCGで定義されたTSのプラットフォーム証明書、並びにシステムコンポーネントのベンダ証明書。TTPの名前。この場合は、例えば証明書チェーン情報等のさらなるデータを取り出すことができる。例えばTCG IWGで規定される入れ子構造のXMLデータ構造で捕捉されたコンポーネントと下位コンポーネント間の関係。妥当性検査対象のプラットフォームの識別。これは、妥当性検査識別と呼ばれ、例えばAIKの鍵対によって実現される。
妥当性検査の側面の1つは、妥当性検査データを対応する検証データにバインドすることである。このバインドは、推移的な信頼チェーン化の主旨において、検証データの保証レベルを妥当性検査データに引き継ぐ。従って、このバインドは、例えばデジタル署名で検証することができる。妥当性検査データの概念は、バインドの必要性のために制約される場合がある。妥当性検査データは、検証データを使用して、特にデータの完全性をバリデータにより検証することが可能なデータである。そのため、妥当性検査データは、下記で定義する一般の管理データに比べると恣意的でない。
遠隔アテステーションは、妥当性検査の最初の段階、すなわち、プラットフォームにより署名された妥当性検査データのバリデータへのセキュアな送信の実現である。そして、このバインドの一例は、AIKでPCR値に署名するTPM_Quote動作である。その署名を検証し、SMLからPCRを再計算し、SMLの測定値を妥当性検査データに示された既知のコンポーネントのRIMに関連付けることにより、バリデータは、示されたコンポーネントが、プラットフォームが例えば認証ブート時に測定したコンポーネントであることを確かめることができる。
管理データは、妥当性検査データを含み、妥当性検査データを補う。管理データは、妥当性検査データおよび結果に基づいてプラットフォームの管理専用の他のデータに表現力を追加する。管理データを妥当性検査データにバインドすることは理にかなっており、すなわち、管理データの要素は妥当性検査データの関連する要素に記号的にリンクし、その逆も同様である。管理データの信頼性は、特に管理データがTTPから得られる場合は、プラットフォームの妥当性検査とは別個に(例えばその供給元により)評定することができる。
管理データの典型例は以下である。妥当性検査の結果から管理アクションを推測するポリシー。コードの更新を取り出すことができる場所。事象報告データ。ユーザ通知データ。妥当性検査の結果を条件とする、妥当性検査を行うプラットフォームに提供されるサービス資格証明。
信頼される参照データは、妥当性検査データを既知のgoodな値と比較するために使用されるデータである。信頼される参照データを構成する値は、信頼される参照値(TRV)と呼ばれる。最もよく知られる例は、例えばTCGのMPWG仕様で規定されるRIMである。信頼される参照値は、a)測定結果がTRVに準拠するコンポーネントが起動されることを保証するために、セキュアな起動時にプラットフォーム自体により、または、b)妥当性検査データを既知のgoodな値と比較し、それにより妥当性検査時にプラットフォーム状態を評定するためにバリデータにより、純粋に使用することができる。
そのようなものとして、信頼される参照データは、そのデータについての何らかのセキュリティ表明を通じて信頼されるようになり、表明は、対象となるTRVを使用してバリデータまたはエージェントが検証することができる。そのような検証可能な表明は、例えばTTPから発行されるデジタル証明書で実現することができ、この具体例では、いわゆるRIM証明書を生じさせる。信頼される参照データの信頼の表明は、例えばコンポーネントまたはプラットフォームの外部評価(例えば共通基準EALによる)についての追加的な情報も含むことができる。
分割妥当性検査は、2つ(またはそれ以上)のネットワーク化されたエンティティに妥当性検査作業を分散できるようにする概念である。この発想は妥当性検査手順に的を絞り、特定のアーキテクチャに結び付けられない。しかし、一般的な概念を提示するためのアーキテクチャモデルが選択される。それは、主として、M2Mゲートウェイに接続されたM2M機器のM2Mゲートウェイとして機能するM2M機器のアーキテクチャであり、M2MゲートウェイはMNOのネットワークに接続される。この概念自体は、そのアーキテクチャに限定されず、何らかの階層的構造を示す異なるアーキテクチャに適用することができる(例えばHeNBおよび接続されたUE/WTRUや、マスタノードがクラスタ中にある機器のクラスタ等)。
部分木の証明手順および/または発見の選択肢等の本明細書に記載される一般的な方法は、ここで説明する分割妥当性検査を実装するための基本技術である。
クライアント−サーバモデルを仮定し、クライアントCがサービスSへのアクセスを要求し、サーバはCが信頼される状態にあればそのサービスをCに提供するとする。Cは、妥当性検査データv(例えば測定値)をSに伝達することができる。
このシナリオでは、Sは、受け取った妥当性検査データvからCの状態を導出するためのツールを有することができ、ツールは、Sがvを比較する参照値rにより実現される。参照値rは、vの既知のgoodな値を提供する参照判断基準に限定されない。参照値は、受け取ったデータvと機器の信頼性との対応付けを提供する。従って、rは、vとサービスのアクセスポリシーとの対応付けと見なすことができ、これは、rは、受け取ったVからSがCの信頼性についてのステートメントを導出できるようにする任意種の参照であってよいことを意味する。
シナリオによっては、Cは、ゲートウェイ機器G(例えばWTRUのゲートウェイとしてのM2Mゲートウェイ、HeNB)を介してSに接続することができる。Gが、接続されたCの妥当性検査の最初の部分を行うことができる場合、すなわちGが接続機器のrを備えている場合、妥当性検査作業の負荷はGとSに分散することができる。
この2つのネットワーク化エンティティ間の妥当性検査の分散を分割妥当性検査と呼ぶ。分割妥当性検査を機能させるには、Gが接続された個々のCの妥当性を検査し、SがGを信頼してその妥当性検査をセキュアな方式で行わせることができなければならない。さらに、妥当性検査データvが内部の(階層)構造を示す場合は、効率的な分割妥当性検査を行うのがより容易である可能性がある。
分割妥当性検査の実装の1つとして、各種エンティティがツリー型妥当性検査(TFV)データを使用できる場合がある。Gは、自身の構造化妥当性検査データを生成できる場合がある。Gは、部分木の削除と追加を含むツリーの更新を行える場合がある。Gは、測定エージェント(MA)を備える場合があり、MAはCの妥当性検査データをGの妥当性検査ツリーに統合することができる。それらの部分木は、直接Gにより、またはTTPにより証明することができる(従って、妥当性検査および署名できる)場合がある。
G内部のMAは、接続されたCから測定結果を集め、それを新しい部分木としてGのツリーに統合する。測定値の収集は、Gに対するCのローカルの検証時(例えばSAV、混合型妥当性検査、遠隔妥当性検査をCとG間のリンクに行うことによる)、または追加的なプロトコルステップとして認証後に行うことができる。そのステップは、Cの機器認証にバインドして、リプレイおよび偽造された妥当性検査データを防止することができる。しかし、この認証は、SにアクセスするためにCに使用される認証(例えばネットワークにアクセスするために使用されるMNO資格証明)を表す必要がない場合もある。何故ならば、この認証は、Gがその特定のCのためにSとの接続を確立する時に追加的なステップで行うことができるためである。これを図31に示す。
関連データを収集すると、GはTTPに接触し、TTPはGに部分木の証明書を発行する。そして、Gは、その証明書を自身の妥当性検査ツリーに組み込んで、新しい、更新された妥当性検査ツリーを得ることができる。この変形として、TTPをGの一部としてもよく、例えば、GのTrE内部で実行される、またはTrEにより完全性が保護されるアプリケーションとして実装することができる。これを図32に示す。
最後のステップで、Gは、接続された機器の部分木の一部または全てに取って替わる、証明書を含む更新後の妥当性検査ツリーをSに送信する。説明のために、Sを、妥当性検査エンティティVEとサービスエンティティSEの2つの下位ユニットに分解することができる。VEはGから受け取ったデータを(自律的に、またはTTPの支援により)妥当性検査することができるのに対し、SEは、Cに提供される実際のサービス(および場合によってはGに提供されるサービス)を担う。GがSにアクセスするための資格証明でCを認証することができない変形例では、SEも認証を行ってよく、例えば、Sが3G認証を行い、Gは機器のTrEを認証して、受け取った妥当性検査データの真正性および接続されたCの機器/TrE識別を検証する。これを図33に示す。妥当性検査に合格すると、Cにサービスを提供することができる。
分割妥当性検査では、接続機器の部分木の代わりとなる証明書をSが受け取ることができるため、Gは、接続されたCのプライバシーをSに対して保護することができる。SはGのTTPおよびMAを信頼することができ、MAの信頼は、Gから受け取る妥当性検査データから導出することができる。これは、妥当性検査データがMAの測定結果を含んでいるためである。
さらなる変形例では、分割妥当性検査を拡張して動的な更新に対応することができ、これには、G間でCの部分木をハンドオーバーすることを伴う、異なるG間を移動するCへの対応が含まれる。分割妥当性検査の別の変形例は、ゲートウェイGで1つのCを部分的に妥当性検査して、部分木の一部のみを証明書に置き換えるものである。
本明細書に記載される方法およびアルゴリズムは、分割妥当性検査の動作を効率的に実装することを可能にする。それら方法およびアルゴリズムは、機器がツリーまたは部分木を構築、報告、更新、およびクオートすることを可能にするTPMの拡張バージョンに基づいて、分割妥当性検査の使用を可能にする。さらに、アルゴリズムで、部分木証明により部分木ノードを証明書に効率的に置き換えられるようにする。
分割妥当性検査における問題の1つは、どのCをTTPで妥当性検査できる(およびGでその部分木を置き換える)か、およびCのどの部分をSで妥当性検査できるか、すなわち接続されたCの部分木を証明するためにGが使用できるTTPで利用可能な参照値を判定することである。一般に、この発見問題の解決は、TTPを利用する発見、ゲートウェイによる発見、および分担型の発見、の3つのクラスに分割することができる。
TTPを利用する手法は、証明すべき該当する部分木を見つけるための複雑な分析を行う計算力を持たないGに適する。この手法では、TTPは、Gから完全なツリーを受け取り、TTPが検証できる部分木の部分木証明書のセットの形で結果を返す。そして、TTPは、証明することができない残りのデータを破棄することができる。証明書は、ツリー中で該当する箇所についての標識と共にGに送り返される。GのMAは、証明書の取り込みを行う。すなわち、証明された部分木を受け取った証明書に置き換える。TTPは証明書と共に部分木の場所についての標識をメッセージで渡すので、Gは発見を再度行う必要はない。
変形例の手順では、Gは完全なツリーを送信するのではなく、ツリーの一部をTTPに送信して、TTPが接続機器から得た測定結果の部分集合から、証明できる可能性のある部分木を探索できるようにする。このような機構は、例えば、Gが何らかの機器特性(例えば機器クラス)に基づいてツリーを部分木に分解することを可能にする何らかの構造をツリー型妥当性検査データが示す場合に有用である可能性がある。機器クラスに応じて、異なるTTPが特定の機器の集合を妥当性検査できる可能性がある。
ゲートウェイによる発見では、Gは、どのCがTTPで証明できるかを判定するための判断基準を有し、TTPは必要なデータを受け取ることができる。この手法では、全ての転送されるデータが証明可能な部分木に属するため、GとTTPの間の通信量を最小にすることができる。ただし、Gは、Gが右部分木およびその部分木を証明できるTTPを発見することを可能にする適切な判断基準を予め備えることができる。さらに、この方法では、Gは自身の妥当性検査ツリーから適切な部分木を探すことができ、Gにより高い計算労力が課される。
分担発見モデルでは、TTPとGが協働して証明すべき機器および部分木を判断する。そのような発見ステッププロトコルの結果は、証明可能な部分木のリストとなる。この発見プロトコルは、機器クラス、能力、機器プロファイル、負荷や帯域幅等の動的なパラメータ等、追加的な(メタ)データの交換を含むことができる。GからTTPに不必要なデータが送信されないため、証明可能な部分木の集合を判定するために必要な初期通信にも関わらず、この手法でもデータ量が最小に抑えられる。通信負荷は、ゲートウェイによる発見より高い可能性があるが、TTPによる発見よりは低い可能性がある。Gは、ネゴシエーション段階の結果を記憶できる場合があり、その場合Gは後にゲートウェイにおける決定を行うことができる。分担発見モデルでは、Gは、証明可能な部分木の集合を事前に与えられ、それを分担発見段階で更新することができる。
一変形例では、GはいくつかのCを完全に妥当性検査し、Cの選択は、例えばGがフェムトセルである場合には、CSG(Closed Subscriber Group)に基づくことができる。そして、Sが残りのCを完全に妥当性検査する。Gで妥当性検査すべきCの集合は、静的または動的なデータに基づくことができ、Sで妥当性検査すべき機器の集合は残りのCであるか、または重複がある場合があり、一部の機器が2度妥当性検査される場合があることを意味する。
GおよびSは、アスペクトのセットに定義されたアスペクトを妥当性検査することができ、アスペクトのセットは、事前に規定されるか、動的に調整され、重複がある場合がある。そのようなアスペクトのセットは、機器プロファイルの完全性、ブートコード/OS/ドライバの完全性、キャピラリ(capillary)ネットワーク機能/コンポーネントの完全性、WAN接続機能/コンポーネントの完全性、高レベルアプリケーションの完全性、およびGで使用される信頼される参照値の完全性、を含むことができる。
妥当性検査は、負荷に基づいて動的に分割することができる。この動的な手法では、GおよびS、またはG、並びにTTPが各自の計算負荷と、接続されたCとGとの間のリンク、並びにGおよびSまたはGとTTPとの間のリンクの計算負荷を比較する。その負荷に基づいて、TTPまたはSは、Gで直接妥当性検査できる機器の集合を判定する。予め規定された集合が存在してもよく、その集合が動的に更新される。
知識に基づく分割では、知識のセットおよび妥当性検査ポリシーに基づいて、S(またはTTP)とGとの間で分割を決定することができる。知識のセットは、挙動(過去に観察された挙動、または将来の予測される挙動)、信頼性(過去の履歴、現在の値、または将来の予測)、コスト対利益の分析、妥当性検査の重要性等の数個の要素を含むことができ、それによりSおよびGは妥当性検査ポリシーを導出または更新することができる。
一例では、H(e)NBがUEの分割妥当性検査を使用することができる。HeNBの場合、アーキテクチャは、図34に示す下記手順により接続されたUEの一部または全てを妥当性検査できるH(e)NBを備えることができる。
図34に示すように、符号1で、WTRUが完全性の測定結果をH(e)NBに送信する。符号2で、H(e)NBが受け取ったデータを組み込み、一部(または全て)のWTRUを妥当性検査する。符号3で、SeGW/PVEが接続機器を含むH(e)NBツリーの妥当性検査を行う。PVEは、符号4で、まだ妥当性検査されていない機器を検査し、参照証明書を発行する。証明書はH(e)NBに送り返されて将来の通信に含められ、H(e)NBが将来接続を試みる際にWTRUを妥当性検査できるようにする。
別の変形は企業展開シナリオにおけるものであり、HeNBが各WTRUのコンポーネント、例えば社用ソフトウェアの部分集合を妥当性検査することができ、コンポーネントは、MNO(SeGWおよびPVE)に公開されない。PVEは、WTRUの基礎となるプラットフォームコンポーネントのネットワーク側の妥当性検査を行うことができる。
H(e)NBに接続するローグ(rogue)機器の場合、H(e)NBは、報告の目的でUEの完全性ツリーを含むことができる。企業ネットワーク上のPVEまたは妥当性検査を行うネットワークエンティティは、受け取ったデータを検証できる場合があり、その機器のアクセスを阻止する、またはコンポーネントまたはソフトウェアの入れ替えやアンチウィルスの更新の実施等の修復ステップを行うようにH(e)NBに指示することができる。これを図35に示す。
M2Mアーキテクチャは、H(e)NBと多少の類似点があるため、分割妥当性検査はM2Mシナリオに利益をもたらす可能性がある。典型的なM2Mの展開では、小型であるがより多くの機器が、ネットワークへのアクセスを提供する1つのゲートウェイに接続する可能性がある。さらにM2Mシナリオでは、幅広い種類の機器が1つのゲートウェイを介して接続される場合があり、ゲートウェイが全ての機器(または全ての機器種別)を妥当性検査できない場合がある。分割妥当性検査を行うと、ネットワークが労力の一部をM2Mゲートウェイに移すことが可能になる。
さらなる変形では、M2M GWが接続機器を、それらの種類、機器クラス、機器プロパティ、または接続プロファイル(プロトコル、接続ネットワーク、帯域幅)に基づいてグループに分類し、機器の妥当性検査ツリーについてのグループ証明書を提供することができる。これを図36に示す。
別の変形例はピアツーピアの手法であり、複数のM2Mゲートウェイ(GW)がクラスタ構造を示し、それにより、より好適なリンク(例えば、高い帯域幅、低待ち時間等)で通信することができる。各M2M GWは、ネットワークとの専用のバックホール(backhaul)リンクを有する。ただし、ローカルの通信(例えばWiFi、Bluetooth(登録商標)、ZigBee(登録商標)、MBUSを介する)は、バックホールリンク(例えば3G)を使用するよりも低コストである可能性がある。これは、ローカルネットワークにトラフィックを移すことで多少の利益が得られることを意味する。M2M GW間のローカルネットワークをローカルエリアエクスチェンジネットワーク(LAEN)と呼ぶ。LAEN上の全てのM2M GWは相互に認証することができ、それによりM2M GWは、LAEN上の他のM2M GWから送られてくるメッセージを信頼することができる。LAEN内の通信は、完全性および真正性を保護することができる。プライバシーを要求するシナリオでは、完全に暗号化されたLAENを確立して秘密性の保護を提供することができる。
M2M GWが部分木を証明することができない場合(例えば部分木を証明するTTPが見つからない場合や、機器がM2M GWに未知である場合)、M2M GWは、適切な証明書を取得するための要求メッセージと共に部分木をLAENにプッシュする(図37のステップ1)。別のM2M GWが部分木を証明することができる場合(独力で、または第1のM2M GWからは接触できない、若しくは知られていないTTPを介して)、そのM2M GWは、要求元のGWに証明書を返す(図37のステップ2)。そして、M2M GWは証明書を自身の妥当性検査ツリーに組み込むことができる。M2M GWは、それと同じ機器クラスの接続機器の妥当性を将来検査するために、証明書(または証明書を作成するために必要な参照値、若しくはTTPのアドレス)を記憶することもできる。
部分木の交換は、Merkleハッシュツリーの交換を可能にするツリーハッシュエクスチェンジ(THEX)形式を使用して行うことができる。この交換形式は、ハッシュツリーのシリアライズ表現からなる。この交換形式では、テキストまたはバイナリの複数のペイロードを可能にするダイレクトインターネットメッセージカプセル化(DIME)形式を使用する。Merkleハッシュツリーのシリアライズ形式は、2つの異なるペイロードからなる。第1のペイロードはハッシュツリーに関するXML符号化されたメタデータであり、第2のペイロードは、ツリー自体の2値のシリアライズである。
所与の部分木を妥当性検査することが可能なLAEN上のネットワークエンティティ、例えば他のM2M GWの特定では、分散ハッシュテーブル(DHT)構造を使用して、特定の機器種別または機器クラスを妥当性検査することができたLAEN上のノードのネットワークアドレスを記憶することができる。P2Pネットワークから知られるDHTの概念により、妥当性検査に関連するノードを高速に検出することができる。さらに、LAEN内の全てのノードにハッシュテーブルを記憶し、ノード間のLAENマルチキャストメッセージを介してテーブルを更新し、LAEN内の全てのノードがどこで特定の部分木を妥当性検査できるかが分かるようにすることが可能な場合もある。
上記で分割妥当性検査および部分木証明等の他の構造化された妥当性検査技術について開発された概念および方法論は、システムの妥当性検査だけでなく、他のセキュリティ関連機能にも使用することができる。
例えば、ネットワークエンティティNE、ゲートウェイG、および複数の機器Dからなるネットワークの分割認証モデルでは、ゲートウェイGが、NEがGを認証できるようにNEと対話する時に、Dについての認証情報を含めて、NEがGとDの集まりを同時に認証できることを構想することができる。変形例では、GがDを認証することができ、NEがGを認証するために必要な情報を伝達するために後に送信するメッセージに、認証ステップおよびその結果についての報告を含める。上記のように、Dを分割して、数個の異なる基準に従って、NEが認証できるDをGが認証することも可能である場合がある。
同様に、鍵の導出や鍵管理(例えば配布、更新、および使用停止を含む)等の他のセキュリティ機能、認証、およびアクセス制御も同様にして行うことができる。
部分木検証のために開発されたこれらの技術は、他のセキュリティ機能でも同様に使用することができる。
方法、アルゴリズムおよび装置は、セキュリティ/プライバシー/権利管理、ハイブリッドネットワーク、協調通信(cooperative communication)を含む任意の技術分野に適用することができ、ユーザ機器(UE)、WTRU、電話機、データカード、ラップトップ/ネットブック、ゲーム機、インフラストラクチャ機器、基地局/ノードB、フェムト基地局、アクセスポイント、BSC/RNC、ゲートウェイ、アプリケーションサーバ、システム、セッション層、プレゼンテーション層、アプリケーション層、DSP、ソフトウェア、ハードウェア、ASICで使用することができる。方法およびアルゴリズムは、アプリケーション、システム情報、プラットフォームセキュリティ、システム全体のセキュリティ、呼受付け、ホームeNode B(HeNB)、HNB、フェムトセル、ハードウェアまたはソフトウェアの実装、課金管理、加入者管理、ポリシー制御、サービス品質(Qos)、セキュリティ、信頼、暗号化、登録/AAA等にも適用可能である。
上記では特徴および要素について特定の組合せで説明したが、各特徴および要素は、他の特徴を用いずに単独で、または他の特徴若しくは要素との各種組合せで若しくは他の特徴若しくは要素を用いずに組み合わせて使用することができる。本明細書に提供される方法およびフローチャートは、汎用コンピュータまたはプロセッサによる実行のためにコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、またはファームウェアとして実施することができる。コンピュータ可読記憶媒体の例には、ROM、RAM、レジスタ、キャッシュメモリ、半導体メモリ装置、内蔵ハードウェアディスクやリムーバブルディスク等の磁気媒体、光磁気媒体、およびCD−ROMディスクやデジタル多用途ディスク(DVD)等の光学媒体が含まれる。
適切なプロセッサには、例えば、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連した1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途集積回路(ASIC)、特定用途向け標準製品(ASSP)、利用者書き換え可能ゲートアレイ(FPGA)回路、任意の他の種の集積回路(IC)、および/または状態機械が含まれる。
ソフトウェアと関連したプロセッサを使用して、WTRU、ユーザ機器(UE)、端末、基地局、移動管理エンティティ(MME)若しくはEPC(Evolved Packet Core)、または任意のホストコンピュータで使用するための無線周波トランシーバを実装することができる。WTRUは、ハードウェアおよび/またはソフトウェアとして実装されたモジュールと併せて使用することができ、それらには、ソフトウェア定義無線(SDR)、および他のコンポーネント、例えば、カメラ、ビデオカメラモジュール、テレビ電話、スピーカ電話、振動装置、スピーカ、マイクロフォン、テレビトランシーバ、ハンドフリーヘッドセット、キーボード、Bluetoothモジュール、周波数変調(FM)無線ユニット、近距離通信(NFC)モジュール、液晶ディスプレイ(LCD)表示装置、有機発光ダイオード(OLED)表示装置、デジタル音楽プレーヤ、メディアプレーヤ、ビデオゲームプレーヤモジュール、インターネットブラウザおよび/または任意の無線ローカルエリアネットワーク(WLAN)若しくは超広帯域(UWB)モジュール、が含まれる。
さらなる研究でこの方向性を追求し、ツリー型の検証および妥当性検査データ、いわゆるツリー型妥当性検査(TFV)によるプラットフォーム妥当性検査のための具体的なアーキテクチャを検討することができる。想到可能な選択肢の1つは、既知のコンポーネントの下部構造、例えば順にロードされる依存プログラムや一律の関連セキュリティポリシーを有するコンポーネントの部分木を使用するモジュール式の構築を可能にするような方式で、SCAおよび/またはバリデータにより参照ツリーのデータベースを効率的に編成するものである。部分木の発見、妥当性検査されるプラットフォームコンポーネント間の依存関係の表現、およびTFVの結果に基づくプラットフォームの管理(更新、修復)のためのアーキテクチャおよび方法は、現在研究が行われている課題である。
本明細書に記載されるシステム、方法および装置は、下記で説明し、図38、図39、および図40に示すような通信システムで実施することができる。
図38は、1つまたは複数の開示実施形態を実施することが可能な例示的通信システム100の図である。通信システム100は、音声、データ、映像、メッセージング、放送等のコンテンツを複数の無線ユーザに提供する多重接続システムとすることができる。通信システム100は、複数の無線ユーザが、無線帯域幅を含むシステム資源の共有を通じてそのようなコンテンツにアクセスすることを可能にすることができる。例えば、通信システム100は、符号分割多重接続(CDMA)、時分割多重接続(TDMA)、周波数分割多重接続(FDMA)、直交FDMA(OFDMA)、単一キャリアFDMA(SC−FDMA)等の1つまたは複数のチャネルアクセス方法を用いることができる。
図38に示すように、通信システム100は、WTRU102a、102b、102c、102d、無線アクセスネットワーク(RAN)104、コアネットワーク106、公衆交換電話網(PSTN)108、インターネット110、および他のネットワーク112を含むことができる。ただし、開示される実施形態では、任意数のWTRU、基地局、ネットワーク、および/またはネットワーク要素を企図することが理解されよう。各WTRU102a、102b、102c、102dは、無線環境で動作および/または通信するように構成された任意種の装置であってよい。例えば、WTRU102a、102b、102c、102dは、無線信号を送信および/または受信するように構成することができ、ユーザ機器(UE)、移動局、固定型または移動型の加入者ユニット、ページャ、携帯電話、携帯情報端末(PDA)、スマートフォン、ラップトップ機、ネットブック、パーソナルコンピュータ、無線センサ、消費者電子製品を含むことができる。
通信システム100は、基地局114aおよび基地局114bも含むことができる。各基地局114a、114bは、WTRU102a、102b、102c、102dの少なくとも1つとワイヤレスにインタフェースをとって、コアネットワーク106、インターネット110、および/またはネットワーク112等の1つまたは複数の通信ネットワークへのアクセスを容易にするように構成された任意種の装置であってよい。例えば、基地局114a、114bは、ベーストランシーバ局(BTS)、ノードB、eノードB、ホームノードB、ホームeノードB、サイトコントローラ、アクセスポイント(AP)、無線ルータ等である。図では基地局114a、114bは1つの要素として図示するが、基地局114a、114bは任意数の相互接続された基地局および/またはネットワーク要素を含んでよいことは理解されよう。
基地局114aは、RAN104の一部とすることができ、RAN104は、基地局コントローラ(BSC)、無線ネットワークコントローラ(RNC)、中継ノード等、他の基地局および/またはネットワーク要素(図示せず)も含むことができる。基地局114aおよび/または基地局114bは、セルと呼ぶ場合もある特定の地理領域(図示せず)内で無線信号を送信および/または受信するように構成することができる。セルはさらにセルセクタに分割することができる。例えば、基地局114aに関連付けられたセルを3つのセクタに分割することができる。そのため、一実施形態では、基地局114aは、セルの各セクタに1つの計3つのトランシーバを含むことができる。一実施形態では、基地局114aは、MIMO技術を用いることができ、セルの各セクタに複数のトランシーバを利用することができる。
基地局114a、114bは、エアインタフェース116を通じてWTRU102a、102b、102c、102dの1つまたは複数と通信することができる。エアインタフェース116は、任意の適切な無線通信リンク(例えば無線周波(RF)、マイクロ波、赤外線(IR)、紫外線(UV)、可視光等)。エアインタフェース116は、適切な無線アクセス技術(RAT)を使用して確立することができる。
より具体的には、通信システム100は、多重接続システムであってよく、CDMA、TDMA、FDMA、OFDMA、SC−FDMA等の1つまたは複数のチャネルアクセス方式を用いることができる。例えば、RAN104の基地局114aとWTRU102a、102b、102cは、UTRA(Universal Mobile Telecommunication System (UMTS) Terrestrial Radio Access)等の無線技術を実装することができ、その場合は広帯域CDMA(W−CDMA(登録商標))を使用してエアインタフェース116を確立することができる。W−CDMAは、HSPA(High-Speed Packet Access)および/またはHSPA+(Evolved HSPA)等の通信プロトコルを含むことができる。HSPAはHSDPA(High-Speed Downlink Packet Access)および/またはHSUPA(High-Speed Uplink Packet Access)を含むことができる。
一実施形態では、基地局114aおよびWTRU102a、102b、102cは、E−UTRA(Evolved UMTS Terrestrial Radio Access)等の無線技術を実装することができ、その場合、エアインタフェース116はLTEおよび/またはLTE−Advanced(LTE−A)を使用して確立することができる。
他の実施形態では、基地局114aおよびWTRU102a、102b、102cは、IEEE802.16(すなわちWiMAX(Worldwide Interoperability for Microwave Access))、CDMA2000、CDMA2000 1X、CDMA2000 EV−DO、IS−2000(Interim Standard 2000)、IS−95(Interim Standard 95)、IS−856(Interim Standard 856)、GSM(登録商標)(Global System for Mobile Communication)、EDGE(Enhanced Data rates for GSM Evolution)、GSMEDGE(GERAN)等の無線技術を実装することができる。
図38の基地局114bは、例えば無線ルータ、ホームノードB、ホームeノードB、またはアクセスポイントであり、職場、家庭、乗り物、学校構内等の局所的な領域内での無線接続を容易にする任意の適切なRATを利用することができる。一実施形態では、基地局114bおよびWTRU102c、102dは、IEEE802.11等の無線技術を実装して無線ローカルエリアネットワーク(WLAN)を確立することができる。一実施形態では、基地局114bおよびWTRU102c、102dは、IEEE802.15等の無線技術を実装して無線パーソナルエリアネットワーク(WPAN)を確立することができる。さらに一実施形態では、基地局114bおよびWTRU102c、102dは、セルラ方式のRAT(例えば、W−CDMA、CDMA2000、GSM、LTE、LTE−A等)を利用してピコセルまたはフェムトセルを確立することができる。図38に示すように、基地局114bは、インターネット110への直接の接続を有することができる。そのため、基地局114bは、コアネットワーク106を介してインターネット110にアクセスする必要がない場合もある。
RAN104はコアネットワーク106と通信状態にあることができ、コアネットワークは、WTRU102a、102b、102c、1702dの1つまたは複数に音声、データ、アプリケーションおよび/またはVoIP(voice over Internet Protocol)サービスを提供するように構成された任意種のネットワークであってよい。例えば、コアネットワーク106は、呼制御、課金サービス、モバイル位置を利用するサービス、料金前払いの通話、インターネット接続、ビデオ配布等を提供する、かつ/またはユーザ認証等の高レベルなセキュリティ機能を行うことができる。図38には示さないが、RAN104および/またはコアネットワーク106は、RAN104と同じRATまたは異なるRATを用いる他のRANと直接通信状態にあっても、または間接的な通信状態にあってもよいことが理解されよう。例えば、E−UTRA無線技術を利用する可能性のあるRAN104に接続されるのに加えて、コアネットワーク106は、GSM無線技術を用いる別のRAN(図示せず)とも通信状態にあることができる。
コアネットワーク106は、WTRU102a、102b、102c、112dがPSTN108、インターネット110および/または他のネットワーク112にアクセスするためのゲートウェイの役割を果たすこともできる。PSTN108は、従来の電話サービス(POTS)を提供する回路交換電話網を含むことができる。インターネット110は、TCP/IPインターネットプロトコル群のTCP、UDP、IP等の一般的な通信プロトコルを使用する相互接続されたコンピュータおよび装置からなる世界規模のシステムを含むことができる。ネットワーク112は、他のサービス提供者に所有および/または運営される有線または無線の通信ネットワークを含むことができる。例えば、ネットワーク112は、RAN104と同じRATまたは異なるRATを用いる可能性のある1つまたは複数のRANに接続された別のコアネットワークを含むことができる。
通信システム100内のWTRU102a、102b、102c、102dの一部または全ては、マルチモード機能を備えることができる。すなわち、WTRU102a、102b、112c、102dは、種々の無線リンクを通じて種々の無線ネットワークと通信するための複数のトランシーバを含むことができる。例えば、図38に示すWTRU102cは、セルラ方式の無線技術を用いる可能性のある基地局114a、およびIEEE802無線技術を用いる可能性のある基地局114bと通信するように構成することができる。
図39は、例示的なWTRU102のシステム図である。図39に示すように、WTRU102は、プロセッサ118、トランシーバ120、送受信要素122、スピーカ/マイクロフォン124、キーパッド126、ディスプレイ/タッチパッド128、非リムーバブルメモリ130、リムーバブルメモリ132、電源134、GPSチップセット136および他の周辺機能138を備えることができる。WTRU102は、実施形態との整合性を保ちながら、上述の要素のサブコンビネーションを含みうることが理解されよう。
プロセッサ118は、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連した1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、ASIC、FPGA回路、任意の他の種類の集積回路(IC)、状態機械等である。プロセッサ118は、信号の符号化、データ処理、電力制御、入出力処理、および/またはWTRU102が無線環境で動作することを可能にする他の機能を行うことができる。プロセッサ118はトランシーバ120に結合することができ、トランシーバ120は送受信要素122に結合することができる。図39ではプロセッサ118とトランシーバ120を別個の構成要素として示すが、プロセッサ118とトランシーバ120は電子パッケージやチップに共に一体化してよいことが理解されよう。
送受信要素122は、エアインタフェース116を通じて基地局(例えば基地局114a)との間で信号を送信または受信するように構成することができる。例えば、一実施形態では、送受信要素122は、RF信号を送信および/または受信するように構成されたアンテナとすることができる。一実施形態では、送受信要素122は、例えばIR、UV、または可視光信号を送信および/または受信するように構成されたエミッタ/検出器とすることができる。一実施形態では、送受信要素122は、RF信号と光信号の両方を送受信するように構成することができる。送受信要素122は、各種無線信号の任意の組合せを送信および/または受信するように構成してよいことが理解されよう。
また、図39では送受信要素122を1つの要素として示すが、WTRU102は任意数の送受信要素122を含んでよい。より具体的には、WTRU102はMIMO技術を用いることができる。そのため、一実施形態では、WTRU102は、エアインタフェース116を通じて無線信号を送受信するために2つ以上の送受信要素122(例えば複数のアンテナ)を含むことができる。
トランシーバ120は、送受信要素122から送信される信号を変調し、送受信要素122に受信された信号を復調するように構成することができる。上記のように、WTRU102はマルチモード機能を有することができる。そのため、トランシーバ120は、WTRU102が例えばUTRAやIEEE802.11等の複数のRATを介して通信することを可能にする複数のトランシーバを含むことができる。
WTRU102のプロセッサ118は、スピーカ/マイクロフォン124、キーパッド126および/またはディスプレイ/タッチパッド128(例えば液晶ディスプレイ(LCD)表示装置または有機発光ダイオード(OLED)表示装置)に結合し、それらからユーザ入力を受け取ることができる。プロセッサ118は、スピーカ/マイクロフォン124、キーパッド126および/またはディスプレイ/タッチパッド128にユーザデータを出力することもできる。また、プロセッサ118は、非リムーバブルメモリ130および/またはリムーバブルメモリ132等の任意種の適切なメモリの情報にアクセスし、データを記憶することができる。非リムーバブルメモリ130には、RAM、ROM、ハードディスク、または他の任意種のメモリ記憶装置が含まれる。リムーバブルメモリ132には、SIMカード、メモリスティック、セキュアデジタル(SD)メモリカード等が含まれる。他の実施形態では、プロセッサ118は、サーバや家庭コンピュータ(図示せず)等、物理的にWTRU102に位置しないメモリの情報にアクセスし、データを記憶することができる。
プロセッサ118は、電源134から電力を受け取り、その電力をWTRU102中の他の構成要素に分配および/または制御するように構成することができる。電源134は、WTRU102に電力を供給するのに適した任意の装置でよい。例えば、電源134は、1つまたは複数の乾電池(例えばニッケルカドミウム(NiCd)、ニッケル亜鉛(NiZn)、ニッケル水素(NiMH)、リチウムイオン(Li−ion)等)、太陽電池、燃料電池等を含むことができる。
プロセッサ118は、GPSチップセット136にも結合することができ、GPSチップセット136は、WTRU102の現在地に関する位置情報(例えば経度および緯度)を提供するように構成することができる。GPSチップセット136からの情報に加えて、またはその代わりに、WTRU102は、基地局(例えば基地局114a、114b)からエアインタフェース116を介して位置情報を受信し、かつ/または、2つ以上の近隣の基地局から信号が受信されるタイミングに基づいて自身の位置を判定することもできる。WTRU102は、実施形態との整合性を保ちながら、任意の適切な位置判定方法で位置情報を取得してよいことが理解されよう。
プロセッサ118はさらに、他の周辺機能138に結合することができ、それらには、追加的な機能、機能性、および/または有線若しくは無線接続を提供する1つまたは複数のソフトウェアおよび/またはハードウェアモジュールが含まれる。例えば、周辺機能138には、加速度計、電子コンパス、衛星トランシーバ、デジタルカメラ(写真または映像用)、USBポート、振動装置、テレビトランシーバ、ハンドフリーヘッドセット、Bluetoothモジュール、周波数変調(FM)無線ユニット、デジタル音楽プレーヤ、メディアプレーヤ、ビデオゲートウェイプレーヤモジュール、インターネットブラウザ等が含まれる。