(57)【特許請求の範囲】
【請求項１】
ハードウェアのトラステッドプラットフォームモジュール（ＴＰＭ）コンポーネントを必要としないで、コンピューターデバイスにおいて信頼された実行環境（ＴｒＥＥ）を可能にする方法であって：
コンピューターデバイスのファームウェアコンポーネントからｆＴＰＭモジュールを取得するステップであり、前記ｆＴＰＭは、前記コンピューターデバイスにおける一つまたはそれ以上のプロセッサに不可欠なセキュリティ拡張機能に対するソフトウェア基盤のインターフェイスを提供するステップと；
前記コンピューターデバイスの前記ファームウェアコンポーネントからソフトウェア基盤のモニターモジュールを取得するステップと；
前記コンピューターデバイス上にＯＳをブートする以前に、前記コンピューターデバイスの保護されたメモリーの中のセキュアワールド環境の中に前記ｆＴＰＭモジュールと前記モニターモジュールをインスタンス化するステップと；
一つまたはそれ以上の前記プロセッサは、ＡＲＭ（アドバンストＲＩＳＣマシン）基盤アーキテクチャを使用し、ＡＲＭ基盤プロセッサに不可欠な前記セキュリティ拡張機能は、トラストゾーンタイプのセキュリティ拡張、および、ｆＴＰＭのインスタンス化に続いてｆＴＰＭによって使用されるセキュリティプリミティブを含み；
前記モニターモジュールに対するセキュアモニターコールを介して、通常ワールド環境におけるコーラーが前記一つまたはそれ以上のプロセッサのセキュリティ機能にアクセスできるようにすることによって、前記コンピューターデバイス上でＴｒＥＥを可能にするステップであり、前記モニターモジュールは、次に、前記セキュアモニターコールに関するインストラクションを前記セキュアワールドにおける前記ｆＴＰＭに対してパスするステップと、を含む、
ことを特徴とする方法。
【請求項２】
前記ｆＴＰＭは、前記コンピューターデバイス上で実行されている一つまたはそれ以上の仮想マシンによってアクセス可能である、
請求項１に記載の方法。
【請求項３】
前記コンピューターデバイスにおける一つまたはそれ以上のプロセッサはＡＲＭプロセッサであり、かつ、前記ＡＲＭプロセッサに不可欠な前記セキュリティ拡張機能はトラストゾーン及びセキュリティプリミティブを含んでいる、
請求項１に記載の方法。
【請求項４】
ＯＳブートの以前に、前記コーラーは、一つまたはそれ以上のプリブートアプリケーションに対して前記ＴｒＥＥを明らかにするためのプリブートアプリケーションモジュールを含んでおり、それによって前記アプリケーションが前記ＴｒＥＥを使用してタスクを実行できるようにしている、
請求項１に記載の方法。
【請求項５】
ＯＳブートに続いて、前記コーラーは、前記ＯＳ上で実行されている一つまたはそれ以上のアプリケーションに対して前記ＴｒＥＥを明らかにするためのＴＰＭドライバーモジュールを含んでおり、それによって前記アプリケーションが前記ＴｒＥＥを使用してタスクを実行できるようにしている、
請求項１に記載の方法。
【請求項６】
前記コンピューターデバイスの前記ファームウェアコンポーネントは、前記ｆＴＰＭモジュールを含むソフトウェアを用いて前記ファームウェアを更新することによって、前記ｆＴＰＭモジュールを受取る、
請求項１に記載の方法。
【請求項７】
ハードウェアのトラステッドプラットフォームモジュール（ＴＰＭ）コンポーネントを必要としないで、コンピューターデバイス上に信頼されたコンピューター環境を実施するためのシステムであって：
ｆＴＰＭモジュールが保管されているコンピューターデバイスの不揮発性メモリーコンポーネントであり、前記ｆＴＰＭは、前記コンピューターデバイスにおける一つまたはそれ以上のプロセッサに不可欠なセキュリティ拡張機能に対するソフトウェア基盤のインターフェイスを提供するコンポーネントと；
前記不揮発性メモリーコンポーネントは、さらに、ソフトウェア基盤のモニターモジュールを含んでおり、
前記不揮発性メモリーコンポーネントから前記ｆＴＰＭモジュールと前記モニターモジュールを読み出し、前記コンピューターデバイスの保護されたメモリーの中のセキュアワールド環境の中に前記ｆＴＰＭモジュールと前記モニターモジュールをインスタンス化するためのデバイスと；を含み、
一つまたはそれ以上の前記プロセッサは、ＡＲＭ（アドバンストＲＩＳＣマシン）基盤アーキテクチャを使用し、ＡＲＭ基盤プロセッサに不可欠な前記セキュリティ拡張機能は、トラストゾーンタイプのセキュリティ拡張、および、ｆＴＰＭのインスタンス化に続いてｆＴＰＭによって使用されるセキュリティプリミティブを含み；かつ、
前記モニターモジュールに対するセキュアモニターコールを介して、通常ワールド環境におけるコーラーが前記一つまたはそれ以上のプロセッサのセキュリティ機能にアクセスできるようにすることによって、前記コンピューターデバイス上で信頼されたコンピューター環境を可能にし、前記モニターモジュールは、次に、前記セキュアモニターコールに関するインストラクションを前記セキュアワールドにおける前記ｆＴＰＭに対してパスする、
ことを特徴とするシステム。
【請求項８】
ＯＳブートの以前に、前記コーラーは、一つまたはそれ以上のプリブートアプリケーションに対して前記信頼されたコンピューター環境を表すためのプリブートアプリケーションモジュールを含んでおり、それによって前記アプリケーションが前記信頼されたコンピューター環境を使用してタスクを実行できるようにしている、
請求項７に記載のシステム。
【請求項９】
ＯＳブートに続いて、前記コーラーは、前記ＯＳ上で実行されている一つまたはそれ以上のアプリケーションに対して前記信頼されたコンピューター環境を表すためのＴＰＭドライバーモジュールを含んでおり、それによって前記アプリケーションが前記信頼されたコンピューター環境を使用してタスクを実行できるようにしている、
請求項７に記載のシステム。
【請求項１０】
ハードウェアのトラステッドプラットフォームモジュール（ＴＰＭ）コンポーネントを必要としないで、コンピューターデバイスを用いて信頼されたコンピューター環境を実施するための方法をコンピューターで実行可能なインストラクションが保管されたコンピューターで読取り可能な記憶媒体であって、前記インストラクションは：
前記コンピューターデバイスにおける一つまたはそれ以上のプロセッサに不可欠なセキュリティ拡張機能に対するソフトウェア基盤のインターフェイスを提供するためのｆＴＰＭモジュールと；
ソフトウェア基盤のモニターモジュールと；を有し、
前記方法は、
前記コンピューターデバイスの不揮発性メモリーコンポーネントの中に前記ｆＴＰＭモジュールと前記モニターモジュールをロードするステップと；
不揮発性メモリーから前記ｆＴＰＭモジュールと前記モニターモジュールを取得するステップと；
前記コンピューターデバイスの保護されたメモリーの中のセキュアワールド環境の中に前記ｆＴＰＭモジュールと前記モニターモジュールをインスタンス化するステップと；
前記モニターモジュールに対するセキュアモニターコールを介して、通常ワールド環境におけるコーラーが前記一つまたはそれ以上のプロセッサのセキュリティ機能にアクセスできるようにすることによって、前記コンピューターデバイス上で信頼されたコンピューター環境を可能にするステップであり、前記モニターモジュールは、次に、前記セキュアモニターコールに関するインストラクションを前記セキュアワールドにおける前記ｆＴＰＭに対してパスするステップと、を含む、
ことを特徴とするコンピューターで読取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＲＭ（登録商標）アーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブ（ｐｒｉｍｉｔｉｖｅ）といったハードウェアを使用するための種々の技術を提供する「ファームウェア基盤ＴＰＭ」または「ｆＴＰＭ」に関し、既存のＡＲＭ基盤プロセッサアーキテクチャー又は類似のハードウェアを使用しているデバイスの中で実施される「ファームウェア基盤ＴＰＭ」におけるトラステッドプラットフォームモジュール（ＴＰＭ）のための分離のセキュア（ｓｅｃｕｒｅ）な実行を提供する。
【背景技術】
【０００２】
当業者によく知られているように、従来のトラステッドプラットフォームモジュール（ＴＰＭ）は、セキュアな暗号プログラムを提供するハードウェアデバイス又は「チップ（”ｃｈｉｐ”）」である。より特定的には、典型的なＴＰＭチップは、一般的に、ハードウェアの擬似乱数発生器に加えて、暗号鍵のセキュアな生成とそれらの使用の制限のためのファシリティ（ｆａｃｉｌｉｔｙ）を提供する。ＴＰＭチップは、また、「外部のサーバー（“ｒｅｍｏｔｅ  ａｔｔｅｓｔａｔｉｏｎ”）」及びシールドストレージ（ｓｅａｌｅｄ  ｓｔｏｒａｇｅ）といった能力も含んでいる。外部のサーバーは、所定のハードウェア及びソフトウェア構成の事実上偽造不可能なハッシュキーサマリー（ｈａｓｈ  ｋｅｙ  ｓｕｍｍａｒｙ）を生成するように意図されている。サマリーの範囲は、ハードウェア及びソフトウェア構成の計測において包含されたコンポーネントによって決定される。これにより、第三者は、ソフトウェア及びハードウェア構成があるポリシー設定に従っていることを検証できる。「バインディング（“ｂｉｎｄｉｎｇ”）」は、ＴＰＭ保障キーを使用してデータを暗号化する。ＴＰＭ保障キーは、生成の最中にＴＰＭチップの中に焼き込まれた特有のＲＳＡキーであるか、そこから派生した別の信頼できるキーである。「シーリング（“ｓｅａｌｉｎｇ”）」は、バインディングと同様にデータを暗号化するが、加えて、データが復号又は「開封（“ｕｎｓｅａｌｅｄ”）」されるために居なければならない状態を指定する。
【０００３】
ＴＰＭチップは、また、ハードウェアデバイスを認証するためにも使用される。それぞれのＴＰＭチップは、生産される際に焼き込まれた特有で秘密のＲＳＡキーを有しているので、プラットフォーム認証を実行することができる。例えば、システム検索アクセスが期待され又は認定されたシステムであることを検証するために使用することができる。明らかに、対応するセキュリティソフトウェアに関する専用のＴＰＭチップを使用することによって、セキュリティをシステムのハードウェアレベルまで追い落とすことは、ソフトウェアだけのソリューションよりもより大きな保護を提供する。しかしながら、ＴＰＭチップが使用される場合でさえ、キーは、ＴＰＭチップによってアプリケーションに対して一旦明らかにされると、いまだに傷つきやすい。従来のコールドブートアッタク（ｃｏｌｄ  ｂｏｏｔ  ａｔｔａｃｋ）の場合において説明されるようにである。
【０００４】
コンピューターシステムに対するＴＰＭを実施するための多くの従来のソリューションは、そうしたコンピューターシステムのマザーボード又はシステムボードの中に専用のハードウェアＴＰＭチップを取り込んでいる。不運なことに、こうしたソリューションは、いくつかのチャレンジに直面している。例えば、ＴＰＭチップを典型的なマザーボードデザインの中に取込むことは、システムごとにおよそ１ドルから２ドルのオーダーにおいて部品（ＢＯＭ）コストの増加を結果として生じる。しかしながら、世界中で生産されている膨大な数のコンピューターデバイスを考えると、こうしたデバイスあたりの比較的小さなコストでさえ、合せれば巨大なものになり得る。しばしば従来のＴＰＭチップに関する別のチャレンジは、専用のＴＰＭは一般的にエネルギー効率に対して最適化されていないことであり、低電力システム（例えば、ポータブルコンピューターデバイス、ＰＤＡ、タブレット、ノートブック、携帯電、等）のための電力予算にインパクトを与え得ることである。さらに、部品の制限のせいで、専用のＴＰＭチップは、しばしば、比較的に遅い（従って、低コスト）プロセッサを用いて実施され、所定の使用シナリオに対して否定的なインパクトを与え、または、潜在的にシナリオを妨げてしまう。
【０００５】
結果として、ＴＰＭは一般的にオプションのシステムコンポーネントであると考えられているために、システムの中に専用のＴＰＭを含めることに対する追加の金銭及び電力コストにより、しばしば、製造プロセスの最中にそうしたデバイスを除外することになってしまう。従って、ＴＰＭはユビキタス（ｕｂｉｑｕｉｔｏｕｓ）ではなく、そのことが、ソフトウェア又はオペレーティングシステム開発者にとって、幅広いＴＰＭ利用のシナリオに実質的なリソースを投資することを難しくしている。幅広いＴＰＭ利用シナリオに影響している別の問題は、多くの従来の専用ＴＰＭは、いくつかのフォームファクター（例えば、電話、ＰＤＡ、タブレット、等）とコンパチブル（ｃｏｍｐａｔｉｂｌｅ）でないことである。実際に、携帯電話及びタブレット型コンピューターといった多くの従来のデバイスは、一般的に専用ＴＰＭを使用していない。そして、いくつかの場合においては、電話又はタブレットといったデバイスを動作させるシステムオンチップ（ＳｏＣ）を用いた専用ＴＰＭの使用をサポートするための好適な相互接続（例えば、ＬＰＣバス）を有さないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
信頼（ｔｒｕｓｔ）は、人間又は物の整合性に依存している。デバイスのユーザーに対して、デバイスにおける信頼は、デバイス上で実行できるポリシー設定に従うコードだけを保証することによって確立される。強力な保護の整合性を提供し、悪意ある感染及び変更に対して防御するために、ハードウェアとソフトウェアの組合せが使用される。マイクロソフト（登録商標）のウィンドウズ（登録商標）といったオペレーティングシステム（ＯＳ）は、種々のシステムに対してこうしたプラットフォームの整合性を提供するためにハードウェアコンポーネントとして以前に使用されていたトラステッドプラットフォームモジュール（ＴＰＭ）を有している。不運なことに、ＴＰＭのボード採用は、数多くの理由のために抵抗にあってきた。例えば、マザーボードに専用ＴＰＭコンポーネントを追加する部品コストの増加、デバイスにＴＰＭを接続又は追加するための好適なインターフェイスを備えるような所定のデバイスを再設計するための時間とコスト、等を含むものである。
【課題を解決するための手段】
【０００７】
本概要は、以降の詳細な説明でより詳しく記述される本発明の概念について、簡素化された形式において代表的な概念の選択を紹介するものである。本概要は、特許請求された技術的事項の主要な特徴または本質的な特徴を特定することを意図するものではなく、また、特許請求された技術的事項の範囲を限定するために使用されることを意図するものでもない。さらに、ここにおいて、従来技術の不利な点が記載され説明されるが、特許請求された技術的事項は、この発明開示のあらゆる場所において記載されたこうした従来技術のいかなる又は全ての不利な点を解決する実施例に限定されない。
【０００８】
一般的に、「ファームウェア基盤ＴＰＭ（”Ｆｉｒｍｗａｒｅ−ＢａｓｅｄＴＰＭ“）」または「ｆＴＰＭ」は、ここにおいて説明されるように、ＡＲＭ（登録商標）システムオンチップ（ＳｏＣ）プラットフォーム又は類似のプラットフォームといったハードウェアの中のものを含むＴＰＭに関するコストを取り扱う。仮想的にゼロコスト（ｚｅｒｏ−ｃｏｓｔ）の「ファームウェアＴＰＭ（”ｆｉｒｍｗａｒｅ  ＴＰＭ“）」を実施することにより、システムの部品コストを削減し、デバイスの全体の電力消費を低減し、そして、ＡＲＭ基盤デバイスの幅広い範囲にわたり幅広い種類のＴＰＭ使用シナリオを可能にしている。従来技術と比較して、ｆＴＰＭは、ｆＴＰＭによって信頼されたコンピューター環境が可能となるコンピューターデバイスにおいて使用されるべきハードウェアのＴＰＭモジュールを要求することなく、ＡＰＭプロセッサといったプロセッサに不可欠なセキュリティ拡張機能に対するソフトウェアインターフェイスを提供する。
【０００９】
別の言葉で言えば、従来技術と比較して、ｆＴＰＭは、ハードウェアＴＰＭを使用することなく、ハードウェアＴＰＭによって提供されるコンピューターデバイスにおけるものと類似の信頼された実行環境を可能にする。さらに、ｆＴＰＭを具現しているソフトウェアは、アップロードされ、フラッシュされ、または、そうでなければ、多くの既存のコンピューターデバイスのファームウェア又は保護された不揮発性メモリーに保管されるか、書き込まれる。こうしたデバイスがＴＰＭ機能を使用できるように「アップグレード（“ｕｐｇｒａｄｅ”）」するためであり、ここでも、そうしたデバイスに対するいかなるハードウェアの変更も必要としない。
【００１０】
より特定的には、あらゆるＴＰＭの実施は、幅広い種類の潜在的なセキュリティ違反を妨げるために、システムにおいて実行されている他の全てのソフトウェアからコード及びデータの整合性と機密性を保護することを保証している。専用のセキュリティプロセッサを用いて（半導体の追加コストにおいて）、または、ハードウェアアーキテクチャーによって提供される向上された実行特権レベルを使用して、分離が実施され得る。ここにおいて説明されるファームウェア基盤ＴＰＭは、システムファームウェアもしくはファームウェアがアクセス可能なメモリー又はストレージからｆＴＰＭを読み出して、簡素な「モニター（“ｍｏｎｉｔｏｒ”）」を伴うデバイスの保護されたメモリーの中にｆＴＰＭを置くことによって、プリＯＳブート（ｐｒｅ−ＯＳ  ｂｏｏｔ）環境において最初にインスタンス化される。
【００１１】
ここにおいて使用される用語「保護されたメモリー（“ｐｒｏｔｅｃｔｅｄ  ｍｅｍｏｒｙ”）」、「保護されたストレージ（“ｐｒｏｔｅｃｔｅｄ  ｓｔｏｒａｇｅ”）」、および、類似の用語は、通常ワールド（Ｎｏｒｍａｌ  Ｗｏｒｌｄ）といった信頼できないコンポーネントによって読み出されたり、または、変更されることができないストレージとして特別に定義されたものである。通常オペレーションは、保護されたストレージの中に含まれるデータ及び機能性の両方を読み出すことも、書き込むこともできない。例えば、ＯＳは通常ワールドにおいて動作し、保護されたストレージを読み出し又は書き込むことはできない。しかし、ｆＴＰＭを含む「セキュアワールド（“Ｓｅｃｕｒｅ  Ｗｏｒｌｄ”）」は、それができる。こうした保護されたメモリーをセットアップする一つのやり方は、ハードウェア（例えば、メモリー又はｅＭＭＣストレージコントローラー）に対して、セキュアワールドだけによる使用のために、ストレージ（例えば、トラストゾーンの保護されたメモリー、または、リプレイの保護されたメモリーブロック）の領域を分割することである。ＯＳは「セキュアワールド」ではなく「通常ワールド」において実行されているので、ＯＳは、所定の保護されたメカニズム（例えば、ここにおいて詳細に説明されるように、ｆＴＰＭに対してリプレイされるセキュアモニターコール（ＳＭＣ）インストラクション）を使用していなければ、セキュアであるとマークされたいかなるメモリーにもアクセスすることができない。
【００１２】
ここにおいて説明される「モニター」は、「通常ワールド」からのコミュニケーションをｆＴＰＭによって受取ることができるようにするインターフェイスとして特別に定義されていることに留意すべきである。ｆＴＰＭは、「セキュアワールド」が「通常ワールド」から分離されていることを保持する一方で、「セキュアワールド」において動作している。ＡＲＭ基盤アーキテクチャー及びトラストゾーン拡張といった、「セキュアワールド」と「通常ワールド」の動作モードのアーキテクチャーは、当業者にとってよく知られており、ここにおいて詳細には説明されないことにも留意すべきである。トラストゾーン拡張は、複数のプラットフォームにわたり共通のセキュリティインフラストラクチャーを提供するという点で役に立つものである。しかしながら、ここにおいて説明されるｆＴＰＭは、あらゆるＴＰＭ基盤セキュリティアーキテクチャーを用いて動作可能であることが理解されるべきである。こうした代替的なセキュリティアーキテクチャー（つまり、代替的な信頼された実行環境）の実施例は、これらに限定されるわけではないが、ＴＩ  ＯＭＡＰ基盤アーキテクチャー、Ｍ−シールド基盤アーキテクチャー、ｘ８６システムマネジメントモード（ＳＭＭ）等がある。
【００１３】
インスタンス化されると、ファームウェア基盤ＴＰＭは、次に、既存のＡＲＭ基盤アーキテクチャーとトラストゾーン拡張を使用して、コードとデータの整合性及び機密性を保証するために分離の実行、および、ファームウェア基盤の「仮想専用セキュリティプロセッサ」を介した「通常ワールド」よるアクセスからの分離を保証する。別の言葉で言えば、ここにおいて説明されるｆＴＰＭは、システムファームウェア（または、他のソース）から読み出されて保護されたメモリーの中に置かれる。そして、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用して、既存のＡＲＭ基盤アーキテクチャーにおいて実施され得る「ファームウェア基盤ＴＰＭ」の中にセキュアな実行の分離を提供する。このように、こうしたアーキテクチャーに基づくデバイスは、既存のデバイスに対するハードウェア変更を必要としない。
【００１４】
結果として、ファームウェア基盤ＴＰＭの一つの利点は、ＴＰＭチップ又は他のハードウェアを実際に要求することなしに、ＴＰＭによって必要とされる実行分離を実施するために既存のＡＲＭトラストゾーン拡張を使用することである。対照的に、種々の従来のシステムは、個別のＴＰＭ又はＳｏＣに追加された専用セキュリティプロセッサのいずれかを使用してきた。不運なことに、こうしたアプローチの両方は、システムに対する追加のコストを生じてしまう。トラストゾーンは、しかしながら、ハイエンドＡＲＭのＳｏＣロードマップのボードセットにわたりほぼユビキタスな特徴を示す。しかし、多くは未使用のままである。それが活用される場合、セキュアな支払、モバイルバンキング、ＤＲＭ、等のためのニッチで、仮想的なソリューションにおいて、トラストゾーンが主に使用されてきている。従って、既存のデバイスのファームウェアにおいてＴＰＭを実施するためにファームウェア基盤ＴＰＭによってトラストゾーンを使用することは、そうしたデバイスに対してハードウェアの変更を要求することがなく、既存のデバイスに対して重大な価値を加えるものである。このようにして、複数のＳｏＣプラットフォームにわたるＴＰＭユビキティ（ｕｂｉｑｕｉｔｙ）が、ここにおいて説明されるファームウェア基盤ＴＰＭによって可能となる。
【００１５】
上記の概要の視点において、ここにおいて説明されるファームウェア基盤ＴＰＭが、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブといったハードウェアを使用するための種々の技術を提供することは明らかである。既存のＡＲＭ基盤アーキテクチャー、および、そうしたアーキテクチャーに基づくデバイスにおいて実施され得る「ファームウェア基盤ＴＰＭ」の中にセキュアな実行分離を提供するためのものである。上記の利益に加えて、ファームウェア基盤ＴＰＭの他の利点は、添付の図面に関連して、これ以降に続く詳細な説明から明らかになる。
【図面の簡単な説明】
【００１６】
特許請求された技術的事項の所定の特徴、態様、および、利点は、以降の説明、添付の特許請求の範囲、および、添付の図面に関して、より良く理解されるであろう。
【図１】図１は、ここにおいて説明されるように、「ファームウェア基盤ＴＰＭ」を一般のコンピューターデバイスの保護されたメモリーの中にインスタンス化するための一般的なアーキテクチャーおよびオペレーションフローチャートである。
【図２】図２は、ここにおいて説明されるように、「ファームウェア基盤ＴＰＭ」をプリＯＳブート環境において使用するための一般的なアーキテクチャーおよびオペレーションフローチャートである。
【図３】図３は、ここにおいて説明されるように、「ファームウェア基盤ＴＰＭ」をシステムブートに続くＯＳ環境において使用するための一般的なアーキテクチャーおよびオペレーションフローチャートである。
【図４】図４は、ここにおいて説明されるように、「ファームウェア基盤ＴＰＭ」の典型的な同期オペレーションの実施例を説明するフローチャートである。
【図５】図５は、ここにおいて説明されるように、「ファームウェア基盤ＴＰＭ」の典型的な非同期オペレーションの実施例を説明するフローチャートである。
【図６】図６は、ここにおいて説明されるように、ファームウェア基盤ＴＰＭの種々の実施例の実行において使用するために簡素化された計算及びＩ／Ｏ能力を有する汎用の簡素化されたコンピューターデバイスを示す一般的なシステムダイヤグラムである。
【発明を実施するための形態】
【００１７】
特許請求される技術的事項の実施例に係る以降の説明において、添付の図面が参照される。図面は技術的事項の一部を形成するものであり、図を利用して、特許請求される技術的事項が実施され得る所定の実施例を示している。特許請求された技術的事項の範囲を逸脱することなく、他の実施例が利用され、構成変更がなされ得ることが理解されるべきである。
【００１８】
１．０  イントロダクション
一般的に、従来のハードウェアＴＰＭを伴うものとして、「ファームウェア基盤ＴＯＭ」または「ｆＴＰＭ」は、ここにおいて説明されるように、幅広い種類の潜在的なセキュリティ違反を妨げるために、システムにおいて実行されている他の全てのソフトウェアからコード及びデータの整合性と機密性を保護することを保証している。同様に、幅広い種類のセキュリティアプリケーション（例えば、暗号化アプリケーション、セキュアな乱数生成、ディスク／ファイル暗号化、パスワード認証、等）を可能にしている。専用のセキュリティプロセッサを用いて（半導体の追加コストにおいて）、または、ハードウェアアーキテクチャーによって提供される向上された実行特権レベルを使用して、分離が実施され得る。有利なことに、ここにおいて説明されるファームウェア基盤ＴＰＭは、ハードウェアＴＰＭと同じセキュアコードの実行を可能にするために従来のハードウェアＴＰＭに係る物理的ハードウェアを必要としない。
【００１９】
別の言葉で言えば、従来技術とは対照的に、ｆＴＰＭはＡＲＭプロセッサといったプロセッサに不可欠なセキュリティ拡張機能に対してソフトウェアベースのインターフェイスを提供する。ハードウェアＴＰＭを使用することなく、コンピューターデバイスにおいて、ハードウェアＴＰＭによって提供されるものに匹敵する信頼された実行環境（信頼されたコンピューター環境としても参照されるもの）を可能にするためである。さらに、ｆＴＰＭを具現しているソフトウェアは、アップロードされ、フラッシュされ、または、そうでなければ、多くの既存のコンピューターデバイスのファームウェア又は保護された不揮発性メモリーに保管されるか、書き込まれる。こうしたデバイスがＴＰＭ機能を使用できるように「アップグレード」するためであり、ここでも、そうしたデバイスに対するいかなるハードウェアの変更も必要としない。
【００２０】
ここにおいて使用される用語「保護されたメモリー（“ｐｒｏｔｅｃｔｅｄ  ｍｅｍｏｒｙ”）」、「保護されたストレージ（“ｐｒｏｔｅｃｔｅｄ  ｓｔｏｒａｇｅ”）」、および、類似の用語は、通常ワールド（Ｎｏｒｍａｌ  Ｗｏｒｌｄ）といった信頼できないコンポーネントによって読み出されたり、または、変更されることができないストレージとして特別に定義されたものである。通常オペレーションは、保護されたストレージの中に含まれるデータ及び機能性の両方を読み出すことも、書き込むこともできない。例えば、ＯＳは通常ワールドにおいて動作し、保護されたストレージを読み出し又は書き込むことはできない。しかし、ｆＴＰＭを含む「セキュアワールド（“Ｓｅｃｕｒｅ  Ｗｏｒｌｄ”）」は、それができる。こうした保護されたメモリーをセットアップする一つのやり方は、ハードウェア（例えば、メモリー又はｅＭＭＣストレージコントローラー）に対して、セキュアワールドだけによる使用のために、ストレージ（例えば、トラストゾーンの保護されたメモリー、または、リプレイの保護されたメモリーブロック）の領域を分割することである。ＯＳは「セキュアワールド」ではなく「通常ワールド」において実行されているので、ＯＳは、所定の保護されたメカニズム（例えば、ここにおいて詳細に説明されるように、ｆＴＰＭに対してリプレイされるセキュアモニターコール（ＳＭＣ）インストラクション）を使用していなければ、セキュアであるとマークされたいかなるメモリーにもアクセスすることができない。
【００２１】
例えば、種々の実施例において、ｆＴＰＭを具現しているソフトウェアは、典型的なＢＩＯＳ又はファームウェア更新に単純に含まれ、リブ−トに際してそうしたデバイスにＴＰＭ機能を直ちに提供することができる。コンピューターデバイスに対してシステムファームウェア及び/又はＢＩＯＳを更新するための種々の工程及び技術は、当業者についてよく知られたものであり、ここにおいて詳しくは説明されないことに留意すべきである。結果として、説明目的のために、以降の解説は、ｆＴＰＭを具現しているソフトウェアは、ＴＰＭ機能を可能にするためにｆＴＰＭが使用される際に、コンピューターデバイスのファームウェアに対して既に提供されているものである。
【００２２】
特に、ｆＴＰＭは、システムファームウェア、または、メモリー又はストレージにアクセス可能なファームウェアからｆＴＰＭを読み出し、ｆＴＰＭをデバイスの保護されたメモリーの中に置くことによって、プリオペレーティングシステム（ＯＳ）ブート環境において最初にスンスタンス化される。種々の実施例において、プリＯＳブート環境（または、ファームウェア）は、コードが細工されていないことを保証するためにコードを保護されたメモリーの中に置くことを許可する前に、自動的にｆＴＰＭコードの整合性を検証する（例えば、ｆＴＰＭコードの「署名（“ｓｉｇｎａｔｕｒｅ”）」を確認することによる）ことに留意べきである。ｆＴＰＭは、ＯＳブートに続いて保護されたメモリーの中にロードされ、または、インスタンス化され得る一方で、ｆＴＰＭをプリＯＳブート環境の中にインスタンス化することによってシステムセキュリティ全体を保証することはより簡単であることにも留意すべきである。さらに、ｆＴＰＭは、非保護メモリーの中にロードされ、または、インスタンス化され得る一方で、一般的にそうした場合には保証がない。システムブートの前、最中、または、後で保護されたメモリの中にデータを書き込むための種々のプロセス（例えば、ここにおいて説明された実施例におけるｆＴＰＭ）は、当業者によく知られており、ここにおいては説明されない。
【００２３】
インスタンス化されると、ファームウェア基盤ＴＰＭは、次に、既存のＡＲＭ基盤アーキテクチャーとトラストゾーン拡張を使用して、コードとデータの整合性及び機密性を保証するために分離の実行、および、ファームウェア基盤の「仮想専用セキュリティプロセッサ」を介した「通常ワールド」よるアクセスからの分離を保証する。別の言葉で言えば、ここにおいて説明されるｆＴＰＭは、システムファームウェア（または、他のソース）から読み出されて保護されたメモリーの中に置かれる。そして、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用して、既存のＡＲＭ基盤アーキテクチャーにおいて実施され得る「ファームウェア基盤ＴＰＭ」の中にセキュアな実行の分離を提供する。このように、このデバイスは、こうしたアーキテクチャーに基づいている。トラストゾーン拡張は、複数のプラットフォームにわたり共通のセキュリティインフラストラクチャーを提供する点で役に立つものであることに留意すべきである。説明目的のために、一般的にｆＴＰＭは、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用している実施のコンテクストにおいて説明されることにも留意すべきである。しかしながら、ここにおいて説明されるｆＴＰＭは、幅広い種類のＴＰＭ基盤セキュリティアーキテクチャーと伴に動作可能であることが理解されるべきである。
【００２４】
有利なことに、このセキュア拡張分離は、既存のデバイスに対するハードウェアの変更を要求することなく、かつ、物理的ハードウェアを要求することなしに、このセキュアな実行分離がｆＴＰＭによって提供される。結果として、ｆＴＰＭは、ＴＰＭチップ又は他のハードウェアを実際に要求することなく、デバイスの幅広い種類の中で実施することが、より容易であり、そして、より安価である。加えて、ｆＴＰＭは、完全にすべてのＴＰＭ規格とコンパチブルである。そうであるので、通常はハードウェアＴＰＭを要求するであろうあらゆる実施において、ｆＴＰＭを使用することができる。さらに、ｆＴＰＭを利用しているソフトウェア又はハードウェアの視点から、ｆＴＰＭはハードウェア基盤ＴＰＭと区別することができない。
【００２５】
さらに、スンスタンス化の最中にｆＴＰＭが単純に保護されたメモリーの中に書き込まれるので、保護されたメモリーの離れた領域に対してｆＴＰＭの複数のコピーまたはバージョン（ｖｅｒｓｉｏｎ）が書き込まれ得ることに留意することが重要である。それによって、それぞれの離れたプロセッサ、コプロセッサ、マルチプロセッサ又はマルチＣＰＵシステムにおけるＣＰＵ、および、異質（ｈｅｔｅｒｏｇｅｎｅｏｕｓ）又は非対称なプロセッサアーキテクチャーに対して、分離されたＴＰＭ機能が可能となる。ＳｏＣ及び他の新システムは、同一コアの従来の集合とは異なる能力を伴う追加のコアを加えていること、および、ｆＴＰＭは、こうしたデバイス及びハードウェアとともに動作可能であることに留意すべきである。同様に、一つのシステムの中で実行されている仮想環境（例えば、仮想マシン）の場合に、この能力により、それぞれの仮想環境に対して分離され、隔離されたＴＰＭ能力を提供することができる。当業者によれば理解されるように、仮想マシン（ＶＭ）とは、物理的機械のようにプログラムを実行するマシン（つまり、コンピューター）のソフトウェア実装である。仮想マシンは、一般的に、その用途及びあらゆる実際の機械への対応の程度に基づいて２つの主要なカテゴリーに分離される。特に、システム仮想マシンは、完全なオペレーティングシステム（ＯＳ）の実行をサポートする完全なシステムプラットフォームを提供し、一方、プロセス仮想マシンは、一つのプログラムを実行するように設計されており、一つのプロセスをサポートすることを意味している。
【００２６】
説明目的のために、以降の解説は、一般的に、シングルプロセッサシステムの中のｆＴＰＭの一つのインスタンスに焦点をあてていることに留意すべきである。しかしながら、上述の解説の視点において、ｆＴＰＭの複数のインスタンスは、マルチプロセッサ又はマルチコアシステム、他の、異質又は非対称なプロセッサアーキテクチャーの中で、および、仮想マシン（ＶＭ）といった一つまたはそれ以上の仮想環境を実行しているシステムの中において、実施されてもよいことが明らかであろう。以降の解説は、トラストゾーン「セキュアワールド」と「通常ワールド」オペレーティングモードに言及することにも留意すべきである。これらのオペレーティングモードは、当業者によく知られているものであり、ここにおいて詳細には説明されない。
【００２７】
１．１  システム概要
上述のように、「ファームウェア基盤ＴＰＭ」及び「ｆＴＰＭ」は、ファームウェア基盤ＴＰＭの中にセキュアな実行分離を提供するために、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用するための種々の技術を提供する。技術は、既存のＡＲＭ基盤アーキテクチャー（または、類似の技術）の中で実施することができ、デバイスは、既存のデバイスに対するハードウェア変更を要求することなく、そうしたアーキテクチャーに基づいている。以降の解説における用語「デバイス（“ｄｅｖｉｃｅ”）」は、一般的に、汎用のコンピューターデバイスを参照していることに留意すべきである。これらに限定されるわけではないが、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドコンピューターデバイス、ラップトップ又はモバイルコンピューター、携帯電話及びＰＤＡといったコミュニケーションデバイス、マルチプロセッサシステム、マイクロプロセッサ基盤システム、セットトップボックス、プログラム可能なコンシューマー家電、ネットワークＰＣ、ミニコンピューター、音響又はビデオメディアプレーヤー、等を含んでいる。こうしたデバイスの中で、ｆＴＰＭは、ＴＰＭ機能を伴うデバイスを提供するようにインスタンス化されている。
【００２８】
上記にまとめられたプロセスは、図１の一般的なシステムダイヤグラムによって説明される。特に、図１のシステムダイヤグラムは、ここにおいて説明されるように、デバイスの中で種々のｆＴＰＭの種々の実施例を実行するためのプログラムモジュール間の相互関係を示している。さらに、図１のシステムダイヤグラムは、ｆＴＰＭの種々の実施例のハイレベルなビュー（ｖｉｅｗ）を示しているが、この図は、この明細書の全てにわたり説明されるようなｆＴＰＭのあらゆる可能な実施例について網羅的で完全な説明を提供することを意図するものではない。
【００２９】
一般的に、図１で説明されるように、ファームウェア基盤ＴＰＭによって可能になるプロセスは、ｆＴＰＭが可能になるデバイス上のシステムファームウェア１１０、または、ファームウェアがアクセス可能なメモリー又はストレージからｆＴＰＭデータ／コード（つまり、ｆＴＰＭの実施可能なソフトウェア実装）を読み出すためのｆＴＰＭインスタンス化モジュール１００を使用することによって開始する。ｆＴＰＭインスタンス化１００は、次に、システムメモリー１４０の保護されたメモリー領域の中にｆＴＰＭをロード、または、配置して、デバイスの中でｆＴＰＭのインスタンス化を可能にする。種々の実施例において、ｆＴＰＭインスタンス化モジュール１００は、また、コードを保護されたメモリーの中に配置することを許可する以前に、ｆＴＰＭコードの整合性を自動的に検証する（例えば、ｆＴＰＭコードの「署名」を確認することによる）ことにも留意すべきである。コードが細工されていないことを保証するためである。ｆＴＰＭインスタンス化モジュール１１０は、また、ｆＴＰＭとのコミュニケーションを許可するために、保護されたシステムメモリー１４０の中に「モニター（“Ｍｏｎｉｔｏｒ”）」（つまり、モニターモジュール１３０）をインスタンス化する。ここにおいて説明される「モニター」は、インターフェイスとして特別に定義されていることに留意すべきである。インターフェイスは、「セキュアワールド」を「通常ワールド」から分離したまま、「通常ワールド」からのコミュニケーションが、「セキュアワールド」において動作しているｆＴＰＭによって受取られることを可能にする。
【００３０】
一般的に、モニターモジュール１３０は、「通常ワールド」においてコーラー（Ｃａｌｌｅｒ）（つまり、コーラーモジュール１５０）によって発行されたコマンド及びレスポンスを処理して、スイッチされる「ワールド」の状態を保持して回復する。より特定的には、モニター（つまり、モニターモジュール１３０）は、コーラーモジュール１５０からのコマンドまたはリクエスト（つまり、リクエストされた「オペレーション」）を傍受する。モニターモジュール１３０は、次に、こうしたコマンドまたはリクエストをｆＴＰＭモジュール１２０にパスし、ｆＴＰＭモジュールは、続いて、セキュアワールド環境においてオペレーションを実行する。ｆＴＰＭモジュール１２０は、次に、実行されたオペレーションからのレスポンスを共有メモリーに対して書き込み、モニターモジュール１３０に返す。モニターモジュールは、システムを通常ワールド環境におけるコーラー（つまり、コーラーモジュール１５０）に戻るよう回復する。最後に、コーラーモジュール１５０（または、他のアプリケーション）は、共有メモリーからｆＴＰＭのレスポンスを取得する。
【００３１】
別の言葉で言えば、一般的に、コーラーモジュール１５０は、「通常ワールド」の中に存在しており、「セキュアワールド」におけるモニターモジュール１３０を介してｆＴＰＭモジュール１２０とコミュニケーションする。コンピューターデバイスのＯＳ（または、プリＯＳブート環境）上で実行されている種々のアプリケーションによってコーラーモジュール１５０を介してリクエストされたタスクまたはオペレーションに対応して、ＴＰＭ基盤のタスク又は一般のコンピューターデバイスのためのオペレーションを実行するためである。
【００３２】
２．０  ファームウェア基盤ＴＰＭのオペレーション詳細
上述のプログラムモジュールは、ファームウェア基盤ＴＰＭの種々の実施例を実行するために使用される。上記にまとめたように、ファームウェア基盤ＴＰＭは、「ファームウェア基盤ＴＰＭ」の中にセキュアな実行分離を提供するために、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用するための種々の技術を提供する。技術は、既存のＡＲＭ基盤アーキテクチャーの中で実施することができ、デバイスは、既存のデバイスに対するハードウェア変更を要求することなく、そうしたアーキテクチャーに基づいている。
【００３３】
以降のセクションでは、ファームウェア基盤ＴＰＭの種々の実施例に係るオペレーション、および、図１に関してセクション１において説明されたプログラムモジュールの実施のための典型的な方法についての詳細な解説が提供される。特に、以降のセクションは、ファームウェア基盤ＴＰＭの種々の実施に係る実施例とオペレーションの詳細を提供する。ｆＴＰＭシステムのアーキテクチャー概要、ｆＴＰＭを用いたシステムの初期化、動作コンテクストに依存した「コーラー」、同期オペレーション、非同期オペレーション、および、一般のコンピューターデバイスの中でのＡＲＭトラストゾーンが可能なｆＴＰＭの実施、を含むものである。
【００３４】
２．１  ｆＴＰＭのアーキテクチャー概要
上述のように、ここにおいて説明されるファームウェア基盤プロセスは、「ファームウェア基盤ＴＰＭ」、ここにおいては「ｆＴＰＭ」としても参照されるもの、の中にＴＰＭによって要求されるセキュアな実行分離を提供するために、ＡＲＭアーキテクチャーのトラストゾーン拡張及びセキュリティプリミティブを使用するための種々の技術を提供する。技術は、既存のＡＲＭ基盤アーキテクチャーの中で実施することができ、従って、デバイスは、そうしたアーキテクチャーに基づいている。
【００３５】
より特定的には、ｆＴＰＭは、あらゆるＡＲＭ基盤のＳｏＣプラットフォーム上で利用可能なＡＲＭアーキテクチャートラストゾーン拡張を活用することにより、既存のハードウェアの中でファームウェアＴＰＭを提供する。当業者によく知られているように、トラストゾーンは、システムにおける他のコンポーネントから強固に分離されたセキュア実行環境（「セキュアワールド」と呼ばれる）を提供する。他のコンポーネントは、通常の実行環境（「通常ワールド」と呼ばれる）において実行されている、ウィンドウズオペレーティングシステム（ＯＳ）及びＵＥＦＩプリロード環境といったものである。ＵＥＦＩ（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）は、オペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインターフェイスを規定するよく知られた規格であることに留意すべきである。それぞれのトラストゾーンが可能なｆＴＰＭインスタンスは、最小限の信頼されたコンピューター基盤（Ｔｒｕｓｔｅｄ  Ｃｏｐｕｔｉｎｇ  ＢＡＳＥ：ＴＢＣ）を含んでいる。ｆＴＰＭインスタンスは、ハードウェア分離メカニズムを提供し、所定のｆＴＰＭインスタンスをファームウェアから保護されたシステムメモリーへとブートストラップ（ｂｏｏｔｓｔｒａｐ）するセキュアブートローダーを提供する（上記、図１の解説を参照）。それによって、従来のハードウェア基盤ＴＰＭに類似の保護された環境を提供するが、追加のコスト、または、従来のハードウェア基盤ＴＰＭによって要求される追加のハードウェアに係る複雑性も生じない。
【００３６】
２．２  ｆＴＰＭを用いたシステム初期化
一般的には、図１に関して上記に説明したように、システム初期化の最中に、プラットフォームのｆＴＰＭ実施は、システムファームウェア（例えば、ＢＩＯＳ又は他のシステムファームウェア）からデバイスの保護されたメモリーの中へインストールされる。プロセッサが通常ワールドの動作モードへとスイッチする以前であり、トラストゾーンセキュアワールドの中への簡素なモニターを伴うものである。図１に関して上記に説明したように、簡素なモニター（つめい、モニターモジュール１３０）は、以下の２つのタスクを実行する。
（１）通常ワールドにおいてコーラーによって発行されたコマンド／レスポンスを処理すること。
大部分のシナリオでは、以降でさらに詳しく解説されるように、コーラーは、ブートファームウェア又はオペレーティングシステムドライバーのうちいずれかであることに留意すべきである。
（２）スイッチされるワールドの状態を保持して、回復すること。
【００３７】
一般的に、通常ワールドにおいて動作しているコーラーとセキュアワールドにおいて動作しているｆＴＰＭインスタンスとの間のコミュニケーションインターフェイスは、同期又は非同期の共有メモリーベースのインターフェイスである。コーラーは、モニターに入るためにセキュアモニターコール（ＳＭＣ）インストラクションを使用し、同期又は非同期なＩ／Ｏの両方が、種々の実施例においてサポートされている。ＳＭＣインストラクションは、ＡＲＭトラストゾーン技術に関するよく知られたインストラクションタイプであること、および、そうであるから、ここにおいてＳＭＣインストラクションは詳しく説明されないことに留意すべきである。
【００３８】
２．３  動作コンテクストに依存した「コーラー」
図２と図３に示すように、ファームウェア基盤ＴＰＭは、現在の動作コンテクストがプリＯＳブート環境又はＯＳ環境のどちらであるかに依存して、異なる「コーラー」を使用する。以降の説明は、上述のように、既にｆＴＰＭがデバイスの保護されたメモリーの中にロードされ、インスタンス化されているものと仮定していることに留意すべきである。
【００３９】
例えば、図２に示されるように、ＵＥＦＩプリＯＳブート環境の中の、テストされた実施例において、コーラー２００は、ＵＥＦＩ  ｆＴＰＭドライバーである。しかしながら、ＵＥＦＩ  ｆＴＰＭドライバーの使用はｆＴＰＭが要求するものではなく、ＵＥＦＩ  ｆＴＰＭドライバーの使用は、セキュアワールドにおいてｆＴＰＭモジュール１２０とのプリＯＳコミュニケーションを初期化するための単なる一つの方法であることが、理解されなければならない。このように、ＵＥＦＩ  ｆＴＰＭドライバーの使用を仮定すると、コーラー２００のＵＥＦＩ  ｆＴＰＭドライバーは、信頼された実行環境（ＴｒＥＥ）ＵＥＦＩプロトコルを、ウィンドウズブートマネージャー及び他のウィンドウズＯＳローダーといったプリブートアプリケーションに対して明らかにする。ＴｒＥＥ  ＵＥＦＩプロトコルは、当業者によく知られた技術であり、ここにおいて詳細は説明されないことに留意すべきである。ここにおいて説明されたｆＴＰＭは、ウィンドウズタイプのオペレーティングシステムに限定されるものではないこと、および、他のオペレーティングシステム（例えば、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ｉＯＳ、ＯＳ  Ｘ、クローム、アンドロイド、等）もここにおいて説明されたｆＴＰＭを用いて動作可能であることにも留意すべきである。
【００４０】
一般的に、図２に示されるように、プリブート環境においては、コーラーモジュール２００（例えば、ＵＥＦＩ）が、保護されたシステムメモリーの中にロードされたｆＴＰＭモジュール１２０とコミュニケーションするために使用され、デバイスに対して種々のＴＰＭ基盤の能力を提供する。コーラーモジュール２００（「通常ワールド」の保護されていない環境の中に存在しているもの）とｆＴＰＭモジュール１２０（「セキュアワールド」の保護された環境の中に存在しているもの）との間のコミュニケーションは、セキュアモニターコール（ＳＭＣ）インストラクション２５０を使用して実行される。ｆＴＰＭモジュール１２０とコーラーモジュール２００との間のコミュニケーションを傍受してパスするためにモニターモジュール１３０を使用する。上述のように、ｆＴＰＭモジュール１２０の初期化の最中に、モニターモジュール１３０は、システムファームウェアもしくはメモリー又はストレージにアクセス可能な他のファームウェアからシステムの保護されたメモリーの中にインストールされる。
【００４１】
より特定的には、種々の実施例において、プリＯＳブート環境の中では、ＵＥＦＩ基盤の実施を使用する場合、コーラーモジュール２００は、一つまたはそれ以上のプリブートアプリケーション２１０とｆＴＰＭドライバーモジュール２３０とのコミュニケーションにおけるインターフェイスモジュール２２０を含んでいる。図２に示された典型的な実施例において、インターフェイスモジュール２２０は、プリブートアプリケーションとｆＴＰＭドライバーモジュール２３０との間のコミュニケーションを可能にするための従来のＴｒＥＥ  ＥＦＩインターフェイスを使用して実施される。さらに、図２に示された典型的な実施例において、ｆＴＰＭドライバーモジュール２３０は、ＥＦＩインターフェイスを使用して実施される。ＥＦＩインターフェイスは、さらに、上述のように、ＳＭＣインストラクション２５０を介して、コーラーモジュール２００とモニターモジュール１３０との間の同期又は非同期コミュニケーションを可能にするトラストゾーンコミュニケーションモジュール２４０を含んでいる。加えて、プリＯＳブート環境におけるｆＴＰＭアクティブは、情報を共有メモリーに書き込むことにより、情報をＯＳ環境に対して転送することができる。メモリーは、そして、システムブートに続くＯＳ環境においてアクセスされる。
【００４２】
対照的に、図３に示すように、ＯＳ環境の中において、コーラーモジュール３００は、新たに定義された「信頼された実行環境（”Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ”）」（ＴｒＥＥ）インターフェイスモジュール３２０を含んでおり、種々の実施例において、アドバンストコンフィグレーション  アンド  パワーインターフェイス（ＡＣＰＩ）を使用して任意的に実施される。ウィンドウズ基盤ＯＳを仮定すると、ＴｒＥＥインターフェイスモジュール３２０は、全てのカーネルサービスに対してｆＴＰＭへのアクセスを提供する。カーネルサービスは、アプリケーションがハードウェアＴＰＭのＴＰＭ機能性にアクセスできるように設計されたウィンドウズＯＳのよく知られた”ＴＰＭ．ｓｙｓ”デバイスドライバー３１０を含んでいる。コーラーモジュール３００とモニターモジュール１３０との間のコミュニケーションは、ＳＭＣインストラクション２５０を介してトラストゾーンコミュニケーションモジュール３３０によって可能となる。
【００４３】
２．４  同期オペレーション
図４に示されるように、典型的な同期オペレーションシナリオにおいては、以下に示すシーケンスで以降のステップが実行される。
（１）コーラーが、共有メモリーにコマンドを書き込む（４００）
（２）コーラーが、モニターに入るためにＳＭＣインストラクションを実行する（４１０）
（３）モニターが、セキュアワールドにおけるｆＴＰＭインスタンスに対してコマンドをパスする（４１５）
（４）ｆＴＰＭが、セキュアワールドにおいてオペレーションを実行する（４２０）。プロセッサが２つまたはそれ以上のコア又はサブプロセッサを有している場合には、これらの一つまたはそれ以上のコア又はサブプロセッサが、特別にＴＰＭオペレーションに対して専用とされ、一方で、他のコアは、他のオペレーション又はタスクのために残してあることに留意すべきである。
（５）ｆＴＰＭが、レスポンスを共有メモリーに書き込み、モニターに返す（４２５）
（６）モニターが、システムを通常ワールドにおけるコーラーに回復する（４３０）
（７）コーラー（または、他のアプリケーション）が、共有メモリーからｆＴＰＭレスポンスを取得する（４３５）
【００４４】
図５に示されるように、典型的な非同期オペレーションシナリオにおいては、以下に示すシーケンスで以降のステップが実行される。
（１）コーラーが、共有メモリーにコマンドを書き込む（５００）
（２）コーラーが、モニターに入るためにＳＭＣインストラクションを実行する（５１０）
（３）モニターが、セキュアワールドにおけるｆＴＰＭインスタンスに対してコマンドをパスする（５２０）
（４）ｆＴＰＭはセキュアワールドにおいてオペレーションの実行を開始するが、完了する前にモニターに戻り、モニターはコーラーに戻る。このことは、長く実行されている暗号化オペレーションにおいてコーラーのＣＰＵ時間不足を避けるために必要である（５３０）。
（５）オペレーションが完了したかをチェック（５４０）し、完了していない場合、コーラーはステップ２から４をループして、セキュアワールドの中でリクエストされたコマンドが完了するまで、実行のためのｆＴＰＭのＣＰＵサイクルを提供する。プロセッサが２つまたはそれ以上のコア又はサブプロセッサを有している場合には、これらの一つまたはそれ以上のコア又はサブプロセッサが、特別にＴＰＭオペレーションに対して専用とされ、一方で、他のコアは、他のオペレーション又はタスクのために残してあることに留意すべきである。
（６）ｆＴＰＭが、レスポンスを共有メモリーに書き込み、モニターに返す（５５０）
（７）モニターが、システムを通常ワールドにおけるコーラーに回復する（５６０）
（８）コーラー（または、他のアプリケーション）が、共有メモリーからｆＴＰＭレスポンスを取得する（５７０）
【００４５】
２．６  ＡＲＭトラストゾーンが可能なｆＴＰＭの実施
ＡＲＭトラストゾーンが可能なｆＴＰＭの実施は、プロセッサの中のハードウェアプリミティブを使用する。これらに限定されるわけではないが、以下のものを含んでいる。
（１）暗号化アルゴリズム（例えば、ＡＥＳ，ＲＳＡ、ＳＨＡ−ｘ、等）のためのハードウェアクセラレーション（ｈａｒｄｗａｒｅ  ａｃｃｅｌｅｒａｔｉｏｎ）
（２）ハードウェア基盤の乱数発生（Ｒａｎｄｏｍ  ｎｕｍｂｅｒ  ｇｅｎｅｒａｔｉｏｎ：ＲＮＧ）
（３）シークレット（ｓｅｃｒｅｔ）を保管するために不揮発性ストレージ、望ましくは分離されたもの、にアクセスすること
【００４６】
有利なことに、多くの従来のＡＲＭＳｏＣ及び類似のプロセッサは、既にこれらの特徴をハードウェアプリミティブとして含んでいる。従って、ここにおいて説明されるファームウェア基盤ＴＰＭは、従来のＡＲＭＳｏＣ、又は他のセキュリティ可能なプロセッサが、ＯＳが初期化された後で、デバイスに対して仮想的に追加の部品コストなしに、完全に機能するＴＰＭにアクセスするように、ｆＴＰＭを伴って構成できるようにする。これにより、ＡＲＭＳｏＣプラットフォームといったハードウェアが、種々のタスクを実行することができる。これらに限定されるわけではないが、以下のものを含んでいる。
（１）ビットロッカー（Ｂｉｔｌｏｃｋｅｒ）、仮想スマートカード、メジャーブート（Ｍｅａｓｕｒｅｄ  Ｂｏｏｔ）等、といったウィンドウズの特徴をネイティブにサポートすること
（２）ＡＲＭ基盤のデバイスにおいて、個別のＴＰＭソリューションに対するより良い電力効率をもたらすこと
（３）ハードウェアＴＰＭの統合がもはや必要でないため、全体的なシステムの部品コスト及びデバイスデザインの複雑性を削減すること
（４）従来の個別ＴＰＭを使用しているデバイスに比べて改善された効率が与えられた電力消費に敏感なデバイスにおいて、幅広い種類の新たなＴＰＭ使用シナリオを可能にすること
【００４７】
３．０  典型的なオペレーション環境
ここにおいて説明されるｆＴＰＭは、多数のタイプの汎用又は特殊用途のコンピューターシステム又はコンピューター構成の中で動作する。図６は、ここにおいて説明されるように、ｆＴＰＭの種々の実施例及びエレメントが実施される汎用コンピューターシステムの簡素化された実施例を示している。図６において、破線又は一点鎖線で表示されたあらゆるボックスは簡素化されたコンピューターデバイスの代替的な実施例を表していること、および、以降に説明されるように、これらの代替的なあらゆる実施例又は全ての実施例は、本明細書の全てを通じて説明される他の代替的な実施例との組み合わせにおいて使用され得ることに留意すべきである。
【００４８】
例えば、図６は、簡素化されたコンピューターデバイス６００を表す一般的なシステムダイヤグラムを示している。こうしたコンピューターデバイスは、少なくともいくつかの最小限のコンピューター能力を有するデバイスにおいて典型的に見つけられる。これらに限定されるわけではないが、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドコンピューターデバイス、ラップトップ又はモバイルコンピューター、携帯電話及びＰＤＡといったコミュニケーションデバイス、マルチプロセッサシステム、マイクロプロセッサ基盤システム、セットトップボックス、プログラム可能なコンシューマー家電、ネットワークＰＣ、ミニコンピューター、音響又はビデオメディアプレーヤー、等を含んでいる。
【００４９】
デバイスがｆＴＰＭを実施できるようにするために、デバイスは、十分なコンピューター能力とシステムメモリー６２０を有するべきである。システムファームウェア６２５（または、他のファームウェアがアクセス可能なメモリー又はストレージであって、そこからｆＴＰＭが保護されたシステムメモリー６３０の中にインスタンス化されるもの）と供に基本的なコンピューターオペレーションをできるようにするためである。特に、図６に示されるように、コンピューター能力は、一般的には、一つまたはそれ以上の処理ユニット６１０によって表され、一つまたはそれ以上のＧＰＵ６１５も含んでよく、どちらか又は両方がシステムメモリー６２０とコミュニケーションしている。本汎用コンピューターデバイス６００の処理ユニット６１０は、ＤＳＰ，ＶＬＩＷ、又は、他のマイクロプロセッサといった特化したマイクロプロセッサであってよく、または、マルチコアＣＰＵにおいて特化したＧＰＵ基盤のコアを含む一つまたはそれ以上の処理コアを有している従来のＣＰＵであり得る、ことに留意すべきである。
【００５０】
加えて、図６の簡素化されたコンピューターデバイスは、また、例えば、コミュニケーションインターフェイス６３０といった、他のコンポーネントも含んでよい。図６の簡素化されたコンピューターデバイスは、また、一つまたはそれ以上のコンピューター入力デバイス６４０も含んでよい（例えば、ポインティングデバイス、キーボード、音声入力デバイス、ビデオ入力デバイス、触覚入力デバイス、有線又は無線のデータ伝送を受取るためのデバイス、等である）。図６の簡素化されたコンピューターデバイスは、また、例えば、一つまたはそれ以上の従来のコンピューター出力デバイス６５０といった、他の任意的なコンポーネントを含んでもよい（例えば、ディスプレイデバイス６５５、音声出力デバイス、ビデオ出力デバイス、有線又は無線のデータ伝送を送信するためのデバイス、等である）。典型的なコミュニケーションインターフェイス６３０、入力デバイス６４０、出力デバイス６５０、および、汎用コンピューターのためのストレージデバイス６６０は、当業者によく知られたものであり、ここにおいて詳細には説明されないことに留意すべきである。
【００５１】
図６の簡素化されたコンピューターデバイスは、また、種々のコンピューターで読取り可能な媒体を含んでよい。コンピューターで読取り可能な媒体は、ストレージデバイス６６０を介してコンピューターデバイス６００によってアクセス可能なあらゆる利用可能な媒体であってよい。取り外し可能６７０及び/又は取り外し不能６８０いずれかの揮発性及び不揮発性媒体の両方を含んでいる。コンピューターで読取り可能又はコンピューターで実行可能なインストラクション、データ構造、アプリケーション、プログラムモジュール、または、他のデータといった情報を保管するためである。コンピューターストレージ媒体は、これらに限定されるわけではないが、コンピューター又は機械で読取り可能な媒体を含んでいる。ＤＶＤ、ＣＤ、フロッピー（登録商標）ディスク、テープドライブ、ハードドライブ、光ドライブ、半導体メモリーデバイス，ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリー技術、磁気カット、磁気テープ、磁気ディスクストレージ、又は他の磁気ストレージデバイス、または、所望の情報を保管するために使用され、一つまたはそれ以上のコンピューターデバイスによってアクセス可能なあらゆる他のデバイス、といったものである。
【００５２】
コンピューターで読取り可能又はコンピューターで実行可能なインストラクション、アプリケーション、プログラムモジュール、等といった情報のストレージは、また、変調されたデータ信号又はキャリア波をエンコードするための種々の前述のあらゆるコミュニケーション媒体を使用することによっても達成され得る。または、他の伝送メカニズム又はコミュニケーションプロトコルを使用してもよく、あらゆる有線又は無線の情報伝達メカニズムを含んでいる。用語「変調されたデータ信号（”ｍｏｄｕｌａｔｅｄ  ｄａｔａ  ｓｉｇｎａｌ”）」または「キャリア波（”ｃａｒｒｉｅｒ  ｗａｖｅ”）」は、一般的に、一つまたはそれ以上の特性を有する信号、または、信号の中の情報を復号するようなやり方で変更された信号を表すものである。例えば、コミュニケーション媒体は、有線ネットワーク又は一つまたはそれ以上の変調されたデータ信号を搬送している直接的な有線接続といった有線媒体を含んでいる。そして、媒体は、音声、ＲＦ，赤外線、レーザー、および、一つまたはそれ以上の変調されたデータ信号又はキャリア波を送信及び/又は受信するための他の無線媒体をも含んでいる。上記のあらゆる組み合わせもコミュニケーション媒体の範囲に含まれるものである。
【００５３】
さらに、アプリケーション、ソフトウェア、プログラム、及び/又は、ここにおいて説明されたｆＴＰＭの種々の実施例のいくつか又は全て、もしくは一部を実施するコンピュータープログラム製品は、コンピューター又は機械で読取り可能な媒体又はストレージデバイスのあらゆる所望の組合せ、および、コンピューターで実行可能なインストラクション又は他のデータ構造の形式でのコミュニケーション媒体に、保管され、受信され、送信され、または、読み出されてよい。
【００５４】
最後に、ここにおいて説明されたｆＴＰＭは、さらに、コンピューターで実行可能なインストラクションの一般的なコンテクストにおいて記述されてもよい。コンピューターデバイスによって実行される、プログラムモジュールといったものである。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含んでおり、所定のタスクを実行し又は所定の抽象データ型を実施する。ここにおいて説明された実施例は、また、一つまたはそれ以上のリモートの処理デバイスによってタスクが実行される分散コンピューティング環境においても実行される。または、一つまたはそれ以上のコミュニケーションネットワークを通じてリンクされている一つまたはそれ以上のデバイスに係るクラウドの中でも実行される。分散コンピューティング環境において、プログラムモジュールは、媒体ストレージデバイスを含むローカル及びリモート両方のコンピューターストレージ媒体の中に配置されてよい。さらに、上述のインストラクションは、部分的に又は全体として、ハードウェア論理回路として実施されてよい。回路は、プロセッサを含んでも含まなくてもよい。
【００５５】
ファームウェア基盤ＴＰＭの前出の記載は、説明及び解説目的のために表されたものである。徹底的なものではなく、また、請求される技術的事項を開示されたまさにその形式に限定することを意味するものではない。上記の教示の範囲内において多くの変形及びバリエーションが可能である。さらに、あらゆる又は全ての上述された代替的な実施例は、ファームウェア基盤ＴＰＭに係る追加のハイブリッドな実施例を形成するのに望ましいあらゆる組み合わせにおいて使用されてよい。本発明の範囲は、この詳細な説明によって限定されるものではなく、むしろ添付の特許請求の範囲によって限定されることが意図されている。
【図１】
0006053786.tif 000002
【図２】
0006053786.tif 000003
【図３】
0006053786.tif 000004
【図４】
0006053786.tif 000005
【図５】
0006053786.tif 000006
【図６】
0006053786.tif 000007