(57)【要約】ハードウェア・リソースに対するファームウェア更新を集合的に、定められた一貫性のある仕方で処理する、安全なファームウェア更新について記載する。ファームウェア更新システムは、少なくとも一部のファームウェア更新をブート前環境（例えば、オペレーティング・システムがロードされる前）において管理するように構成することができる。このようにすることによって、ファームウェア更新システムは、複数の更新にわたって制御を遂行し、攻撃者に露出されるエントリー・ポイントを減少させることができる。１つの手法では、ハードウェア・リソースに対して更新状態を定め、ファームウェア更新システムによって管理する。ブート前環境では、被管理ハードアウェア・リソースに対する更新状態を、ファームウェア更新を有効にするように設定する。次いで、ファームウェア更新システムは、被管理ハードウェア・リソースに入手可能なファームウェア更新を検出し適用することができる。安全なブート前環境の外部において被管理リソースに対するファームウェア更新が無効にされるように、オペレーティング・システムをロードする前に、更新状態を無効に設定することができる。【選択図】図１
2015531500.tif 000002
【特許請求の範囲】
【請求項１】
計算デバイスであって、
更新可能なファームウェアを有する１つ以上のハードウェア・リソースと、
安全更新モジュールを格納するメモリーと、
を含み、前記安全更新モジュールが、
前記計算デバイスの起動のために安全なブート前環境を確立し、
前記安全なブート前環境内において前記１つ以上のハードウェア・リソースのために、ファームウェア・システムを介したファームウェア更新を有効にし、
前記安全なブート前環境の外部における前記１つ以上のハードウェア・リソースに対するファームウェア更新を無効にする、
ように構成される、計算デバイス。
【請求項２】
請求項１記載の計算デバイスにおいて、前記安全更新モジュールが、更に、
前記ファームウェア・システムを通じて入手可能な前記更新の更新パッケージを得て、
前記ハードウェア・リソースによる前記更新の適用を行わせるために、前記パッケージを前記１つ以上のハードウェア・リソースに配布することによって、
前記１つ以上のハードウェア・リソースに入手可能な更新を検出し、
前記安全なブート前環境において検出された更新のインストールを開始する、
ように構成される、計算デバイス。
【請求項３】
請求項１記載の計算デバイスにおいて、前記安全更新モジュールが、更に、前記１つ以上のハードウェア・リソースを記述するエントリーが事前設定されたデーター構造を参照することによって、前記安全なブート前環境におけるファームウェア更新の処理に指定された前記１つ以上のハードウェア・リソースを列挙するように構成される、計算デバイス。
【請求項４】
請求項１記載の計算デバイスにおいて、前記安全更新モジュールが、更に、前記１つ以上のハードウェア・リソースに対する前記ファームウェア更新を無効にした後に、前記計算デバイスにオペレーティング・システムをブートするために、制御をブート・ローダーに渡すように構成される、計算デバイス。
【請求項５】
請求項１記載の計算デバイスにおいて、前記１つ以上のハードウェア・リソースの内少なくとも一部が、前記計算デバイスのチップ上プロセッサーの一体コンポーネントとして設けられる、計算デバイス。
【請求項６】
請求項１記載の計算デバイスにおいて、前記１つ以上のハードウェア・リソースが、対応するインターフェースを介して前記計算デバイスに接続可能なアクセサリー・デバイスを含む、計算デバイス。
【請求項７】
請求項１記載の計算デバイスにおいて、前記計算デバイスの起動時にファームウェア更新を有効にするように、前記１つ以上のハードウェア・リソースに関連する１つ以上の更新状態がデフォルトで設定される、計算デバイス。
【請求項８】
請求項１記載の計算デバイスにおいて、前記ファームウェア更新を無効にすることが、前記計算デバイスにオペレーティング・システムをブートする前に、前記１つ以上のハードウェア・リソースにディスエーブル・コマンドを送ることを含み、前記ディスエーブル・コマンドが、前記安全なブート前環境の外部において前記ファームウェア更新を無効にするように、前記１つ以上のハードウェア・リソースに関連する１つ以上の更新状態を設定するように構成される、計算デバイス。
【請求項９】
計算デバイスによって実施される方法であって、
前記計算デバイスの起動時に開始されたブート・プログラムによって安全なブート前環境が確立されたか否か判定するステップと、
前記安全なブート前環境が確立されたとき、前記安全なブート前環境において、前記計算デバイスの１つ以上のハードウェアに対してファームウェア更新を実行するステップと、
前記安全なブート前環境の外部における前記１つ以上のハードウェア・リソースに対するファームウェア更新を、前記１つ以上のハードウェア・リソースに無効にさせるために、少なくとも１つの通知を送るステップと、
を含む、方法。
【請求項１０】
請求項９記載の方法において、
前記少なくとも１つの通知が、ゲートキーパー・デバイスとして機能する前記ハードウェア・リソースの１つに送られ、前記ゲートキーパー・デバイスを無効状態に設定するディスエーブル・コマンドを含み、
前記ゲートキーパー・デバイスが、前記ハードウェア・リソースの少なくとも一部に対してファームウェア更新を集合的に管理するように構成され、
前記無効状態にあるとき、前記ゲートキーパー・デバイスが、当該ゲートキーパー・デバイスによって管理されるハードウェア・リソースに、ファームウェア更新を配布しないように構成される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア・リソースに対する安全なファームウェア更新に関するものである。
【背景技術】
【０００２】
[0001]  計算プラットフォームの異なるハードウェア・リソース（例えば、モジュール、コンポーネント、およびデバイス）は、ファームウェアを有することがあり、このファームウェアの更新が随時公開されている。従前では、独立ハードウェア販売業者（ＩＨＶ）および相手先ブランド名製造業者（ＯＥＭ）が、彼ら自身のハードウェア・リソースのためにファームウェア更新を処理する責任を負っていた。したがって、異なる販売業者および製造業者が、更新されたファームウェアを展開および適用するために、異なる、独立した、および／または企業固有のメカニズムおよびシステムを制定することがあり、通常、これらはブート後環境（例えば、オペレーティング・システムが計算プラットフォームによってロードされた後）において動作する。これら多数のサード・パーティ・メカニズムは、対応するエントリー・ポイントを提供することによって、ハードウェア・リソースに不適切なおよび／または悪意のあるファームウェアを注入するために利用される虞があり、セキュリティ上の脅威を生む可能性がある。したがって、ブート後環境において有効にされる従前のファームウェア更新は、計算プラットフォームの制御を乗っ取るためおよび／または計算プラットフォームに対する危害を加えるために潜在的に使用されるかもしれないセキュリティ上の脅威を引き起こす。
【発明の概要】
【課題を解決するための手段】
【０００３】
[0002]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
【０００４】
[0003]  安全なファームウェア更新について記載する。１つ以上の実施形態では、ハードウェア・リソースのためにファームウェア更新を、定められた一貫性のある仕方で集合的に処理するために、ファームウェア更新システムを実装する。ファームウェア更新システムは、少なくとも一部のファームウェア更新をブート前環境（例えば、オペレーティング・システムがロードされる前）において処理するように構成することができる。このようにすることによって、ファームウェア更新システムは、複数の更新にわたって制御を遂行し、攻撃者に露出されるエントリー・ポイントを減少させることができる。１つの手法では、ハードウェア・リソースに対して更新状態が定められ、ファームウェア更新システムによって管理される。ブート前環境では、被管理ハードウェア・リソースに対する更新状態は、ファームウェア更新を有効にするように設定される。次いで、ファームウェア更新システムは、被管理ハードウェア・リソースに入手可能なファームウェア更新を検出し適用することができる。更新の適用に続いて、ファームウェア更新を無効にするように更新状態が設定され、オペレーティング・システムがロードされる。ロードされたオペレーティング・システムのランタイム環境において、被管理ハードウェア・リソースに対して ファームウェア更新が無効にされる。
【図面の簡単な説明】
【０００５】
【図１】図１は、安全なファームウェア更新の１つ以上の実施形態を採用することができる動作環境例を示す。
【図２】図２は、１つ以上の実施形態によるデバイスのリソース例を示す図である。
【図３】図３は、１つ以上の実施形態による手順例の詳細を記述する流れ図である。
【図４】図４は、１つ以上の実施形態による他の手順例の詳細を記述する流れ図である。
【図５】図５は、１つ以上の実施形態による更に他の手順例の詳細を記述する流れ図である。
【図６】図６は、種々の実施形態を実現することができるシステムのブロック図である。
【発明を実施するための形態】
【０００６】
全体像
[0010]  従前では、独立ハードウェア販売業者（ＩＨＶ）および相手先ブランド名製造業者（ＯＥＭ）が、彼ら自身のハードウェア・リソースのためにファームウェア更新を処理する責任を負っていたが、制御されないエントリー・ポイントを露出する可能性があり、攻撃者は悪意のあるファームウェアを注入するためにこれらのエントリー・ポイントを悪用する虞がある。
【０００７】
[0011]  安全なファームウェア更新について記載する。１つ以上の実施形態では、ハードウェア・リソースのためにファームウェア更新を、定められた一貫性のある仕方で集合的に処理するために、ファームウェア更新システムを実装する。ファームウェア更新システムは、少なくとも一部のファームウェア更新をブート前環境（例えば、オペレーティング・システムがロードされる前）において処理するように構成することができる。このようにすることによって、ファームウェア更新システムは、複数の更新にわたって制御を遂行し、攻撃者に露出されるエントリー・ポイントを減少させることができる。１つの手法では、ハードウェア・リソースに対して更新状態が定められ、ファームウェア更新システムによって管理される。ブート前環境では、被管理ハードウェア・リソースに対する更新状態は、ファームウェア更新を有効にするように設定される。次いで、ファームウェア更新システムは、被管理ハードウェア・リソースに入手可能なファームウェア更新を検出し適用することができる。更新の適用に続いて、ファームウェア更新を無効にするように更新状態が設定され、オペレーティング・システムがロードされる。ロードされたオペレーティング・システムのランタイム環境において、被管理ハードウェア・リソースに対してファームウェア更新が無効にされる。
【０００８】
[0012]  以下に続く論述では、「動作環境」と題する章が設けられ、１つ以上の実施形態を採用することができる１つの環境について説明する。これに続いて、「安全なファームウェア更新の例」と題する章では、１つ以上の実施形態による技法例および詳細について説明する。最後に、「システム例」と題する章では、１つ以上の実施形態を実現するために利用することができる計算システムおよびデバイスの例について説明する。
動作環境
[0013]  図１は、１つ以上の実施形態による動作環境を示し、全体的に１００とする。環境１００は、計算デバイス１０２を含み、計算デバイス１０２は、処理システム１０４、１つ以上のコンピューター読み取り可能媒体１０６、オペレーティング・システム１０８、および１つ以上のアプリケーション１１０を有する。アプリケーション１１０は、コンピューター読み取り可能媒体上に存在し、プロセッサー（１つまたは複数）によって実行可能である。処理システム１０４は、アプリケーション１１０からコンピューター・プログラム命令を引き出して実行し、広範囲の機能性を計算デバイス１０２に提供するように、種々の方法で構成することができる。広範囲の機能性には、ゲーミング、オフィス生産性、電子メール、メディア管理、印刷、ネットワーキング、ウェブ閲覧等が含まれるが、これらに限定されるのではない。アプリケーション１１０に関する種々のデーターおよびプログラム・ファイルも含むことができ、その例には、ゲーム・ファイル、オフィス文書、マルチメディア・ファイル、電子メール、データー・ファイル、ウェブ・ページ、ユーザー・プロファイル、および／または好みデーター等が含まれる。
【０００９】
[0014]  計算デバイス１０２は、限定ではなく一例として、ゲーミング・システム、デスクトップ・コンピューター、携帯用コンピューター、タブレットまたはスレート・コンピューター、パーソナル・ディジタル・アシスタント（ＰＤＡ）のようなハンドヘルド・コンピューター、セル・フォン、セット・トップ・ボックス等というような、任意の適した計算システムおよび／またはデバイスとして具体化することができる。例えば、図１に示すように、計算デバイス１０２は、テレビジョン・クライアント・デバイス１１２、コンピューター１１４、および／または メディア・コンテンツを表示するためにディスプレイ・デバイス１１８に接続されるゲーミング・システム１１６として実現することができる。あるいは、計算デバイスは、任意のタイプの携帯用コンピューター、移動体電話機、携帯用デバイス１２０、タブレットまたはスレート・デバイス１２２であってもよく、および／または一体化されたディスプレイを含むこともできる。これらの計算デバイスはいずれも、１つ以上のプロセッサーおよびメモリー・デバイスというような種々のコンポーネント、ならびに異なるコンポーネントの任意の組み合わせによって実現することができる。計算デバイス１０２を含む種々のシステムおよび／またはデバイスを表すことができる計算システムの一例を図６に示し、以下で説明する。
【００１０】
[0015]  コンピューター読み取り可能媒体は、一例としてそして限定ではなく、計算デバイスと通例関連付けられるあらゆる形態の揮発性および不揮発性メモリーおよび／または記憶媒体を含むことができる。このような媒体は、ＲＯＭ、ＲＡＭ、フラッシュ・メモリー、ハード・ディスク、リムーバブル媒体等を含むことができる。コンピューター読み取り可能媒体は、「コンピューター読み取り可能記憶媒体」および「通信媒体」の双方を含むことができ、これらの例は、図６の計算システム例の論述において見出すことができる。
【００１１】
[0016]  また、計算デバイス１０２は、種々の異なるハードウェア・リソース１２４も含み、これらのハードウェア・リソース１２４は、通例計算デバイスと関連付けられる異なるコンポーネントおよびデバイスを表す。ハードウェア・リソース１２４は、一体コンポーネント、リムーバブル・コンポーネント、ならびに有線および／またはワイヤレス接続を通じて計算デバイス１０２に接続可能な外部周辺デバイスを含むことができる。ハードウェア・リソース１２４の少なくとも一部は、関連するファームウェア１２６を有し、以上で説明した技法および以下で説明する技法にしたがって、これらのファームウェア１２６を更新することができる。ハードウェア・リソース１２４のいくつかの例について、以下で図２に関して論ずる。
【００１２】
[0017]  また、図１の計算デバイス１０２は、ファームウェア・システム１２８および安全更新モジュール１３０も含み、これらはコンピューター読み取り可能媒体上に存在し、プロセッサー（１つまたは複数）によって実行可能である。ファームウェア・システム１２８は、以上で説明したようにそして以下で説明するように、複数のハードウェア・リソース１２４に対するファームウェア更新を集合的に管理するために、ファームウェア・インターフェースを実装し、種々の技法を実行する機能性を表す。ファームウェア・システム１２８は、図１に図示した単体コンポーネントとして実装することもできる。また、ファームウェア・システム１２８は、オペレーティング・システム１０８の一体コンポーネントとして実装することもできる。
【００１３】
[0018]  安全更新モジュール１３０は、以上で説明したそして以下で説明する安全なファームウェア更新のための技法を実現する機能性を表す。具体的には、安全更新モジュールは、計算デバイスから選択されたハードアウェア・リソースに対する更新を管理することができる。広義に言えば、これは、ブート前環境において被管理ハードアウェア・リソースに対する更新を有効にし、ファームウェア・システム１２８を呼び出してこれと相互作用して、ブート前環境において、入手可能なファームウェア更新の適用を行わせ、その後ＯＳのブーティング(booting)前に被管理ハードウェア・リソースに対するファームウェア更新を無効にすることを含む(involve)。このように、被管理ハードウェア・リソースに対するファームウェア更新は、安全更新モジュール１３０によって制御される安全なブート前環境の外部では無効にされる。安全更新モジュール１３０は、図１に示したような単体コンポーネントとして実装することもできる。安全更新モジュール１３０および／またはファームウェア・システム１２８に関係して本明細書において説明する機能性には、計算デバイス１０２のブート・プログラムによって、および／またはオペレーティング・システム１０８によって実現されるとよいものもある。
【００１４】
[0019]  ファームウェア・システム１２８によるファームウェア更新の管理は、リソースの発見、ならびにファームウェア更新システムを通じてファームウェア更新を得るために登録された、言い換えると、指定された特定のリソースに対するファームウェア更新の検出、分析、取得、配布(distribution)、インストール、および追跡を含むことができるが、これらに限定されるのではない。一般的に言うと、システムによるファームウェア処理(handling)のために指定されたリソースを特定し、これらのリソースに対して入手可能な更新を検出する。更に、ファームウェア・システム１２８は、適した形態で更新を取得し、インストールを開始するためにこれらの更新をしかるべきリソースに展開／配布するように動作することができる。また、ファームウェア・システム１２８は、成功または失敗を識別し、インストールされたファームウェアについてのバージョン情報を記録し、ファームウェアのロールバック(rollback)を有効にする等のために、更新の追跡を実行することもできる。
【００１５】
[0020]  このように、ファームウェア更新は、ブート前環境において、安全更新モジュール１３０がファームウェア・システム１２８と共に安全に実行することができる。ファームウェア更新の処理は、ファームウェア・システム１２８に委託され(offload)、ファームウェア・システム１２８は、異なるハードウェア・リソースおよび／または対応するＩＨＶおよびＯＥＭの代わりに、ファームウェア更新を集合的に管理するように構成される。安全更新モジュール１３０は、次に、ブート前環境の外部でファームウェア更新を無効にするように動作する。これらおよびその他の態様については、後続の図に関して更に詳しく説明する。
【００１６】
[0021]  ファームウェア・システムによる管理に指定することができる種々の異なるハードウェア・リソース１２４について考える。一例としてそして限定ではなく、図２は、計算デバイス例１０２に関係するいくつかの代表的ハードウェア・リソース１２４を、全体的に２００で示す。図２に示す計算デバイス１０２は、システム・ファームウェア２０２を含む。システム・ファームウェア２０２は、デバイスの特定の処理システム、アーキテクチャー、および／またはプラットフォームと関連付けることができ、この例では、種々の方法で構成することができえる中央処理ユニット（ＣＰＵ）１２４（１）として図示されている。例えば、ＣＰＵは、多数の異なる一体ハードウェア・コンポーネントを１つのチップとして含むように構成されたチップ上システム（ＳｏＣ）プロセッサーとして実現することもできる。ＡＲＭベースおよびｘ８６アーキテクチャーを含む他のタイプのＣＰＵアーキテクチャーも考えられる。更新可能である対応するデバイス・ファームウェア２０４を有することができる、図２に示す種々の他のハードウェア・リソースの例には、異なる通信無線機１２４（２）（例えば、ＷｉＦｉ、移動体ブロードバンド、Bluetooth（登録商標）、近場通信（ＮＦＣ）等）、マイクロプロセッサー１２４（３）、センサー１２４（４）（例えば、カメラ、ジャイロスコープ、加速度計、ＧＰＳ、圧力センサー、近接センサー等）、コントローラー１２４（４）（例えば、タッチ・コントローラー、オーディオ／ビデオ・コントローラー、メモリー・コントローラー、ＵＳＢコントローラー等）、および計算デバイスのその他１２４（５）の一体ハードウェア・リソースが含まれる。
【００１７】
[0022]  また、本明細書において説明する安全なファームウェア更新のための技法は、対応するインターフェース２０８を介して計算デバイス１０２に接続可能なアクセサリー・デバイス２０６にも適用することができる。有線および／またはワイヤレス・インターフェースを介して接続することができる種々の異なるアクセサリーが考えられる。アクセサリー・デバイス２０６は、対応するポート、ベイ、または計算デバイス１０２の他の一体接続部を介して受け入れられ接続されるように構成された、外部周辺デバイスおよび／またはリムーバブルで交換可能なデバイスを含む。異なるアクセサリー・デバイス２０６を、異なる時点に計算デバイス１０２に接続することもできる。少なくとも一部のアクセサリー・デバイス２０６は、電源が入ったまま交換可能な（例えば、プラグ・アンド・プレイ）デバイスである。一例としてそして限定ではなく、アクセサリー・デバイス２０６は、入力デバイス２０６（１）（例えば、キーボード、マウス、スタイラス等）、出力デバイス２０６（２）（例えば、スピーカー、ハンドセット、プリンター等、およびディスプレイ・デバイス２０６（３）、更にはゲーム・コントローラー、電源アダプター、音楽アクセサリー・デバイス等のような種々の他の２０６（４）デバイスを含むことができる。アクセサリー・デバイス２０６は、図２に示すようなデバイス上に維持される関連ファームウェア２０４を有することもできる。関連ファームウェア２０４は、ファームウェア・システムを通じて更新することができる。
【００１８】
[0023]  各リソースは、適宜、それ自体の関連デバイス・ファームウェア２０４を有することができる。デバイス・ファームウェア２０４に対する更新をリソースと照合し、一体デバイスおよびアクセサリー・デバイス双方に個々に適用することができる。加えてまたは代わりに、あるリソースのデバイス・ファームウェア２０４を、システム・ファームウェア２０２に対する更新の一部として、組み合わせて更新することもできる。例えば、複数のマイクロプロセッサー、コントローラー、および他のコンポーネントを、ＳｏＣプロセッサーまたは他のＣＰＵの一部として一体化することもでき、一緒に更新することができる。一般に、本明細書において説明する安全なファームウェア更新は、ブート前環境において、一体化コンポーネントおよびアクセサリー・デバイスの双方を含むことができる、指定されたハードウェア・リソースから選択されたグループに選択的に適用することができる。本システムによる管理のために指定されたハードウェア・リソースは、種々の判断基準にしたがって、計算デバイスの中核コンポーネントとして選択されてもよい。例えば、中核ハードウェア・リソースは、計算デバイスの製造業者によって開発されたリソース、または計算デバイスの製造業者と密接に関連があるリソース、パートナーＯＥＭ／ＩＨＶと関連があるリソース、中核処理／メモリー／ディスプレイ・コンポーネントのようなデバイスの動作およびユーザー体験に肝要であると考えられるリソース、および／またはデバイス設計および／またはデフォルト構成の一部として設けられるリソースを含むとよい。ＳｏＣ設計の一体コンポーネントは、本システムによる集合的管理に指定することができる中核ハードウェア・リソースの一例である。また、多数の他のプロセッサー、コントローラー、および／または他の個々のコンポーネントも、本システムによるファームウェアの管理のために指定することができる。
【００１９】
[0024]  場合によっては、一部の選択されていないハードウェア・リソースに対するファームウェア更新をファームウェア・システム１２８の外部で管理すること、および／または従前の技法を使用してブート後環境において管理することもできる。１つ以上の実施形態では、しかしながら、安全更新モジュール１３０は、いずれのファームウェア更新でも、ブート前環境の外部で行われるのを制限または防止するように構成することもできる。この手法では、安全更新モジュール１３０は、安全な仕方でファームウェア・システム１２８を通じて計算デバイスの各ハードウェア・リソース１２４に対するファームウェア更新を制御するように実装される。
【００２０】
[0025]  以上、動作環境例について説明したので、これより、１つ以上の実施形態による安全なファームウェア更新に関する詳細な例について検討する。
安全なファームウェア更新の例
[0026]  以下の章では、安全なファームウェア更新のための実施態様の詳細および技法例について論ずる。この論述は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組み合わせと関連付けて実施することができる手順例（１つまたは複数）を含む。少なくとも一部の実施形態では、これらの手順は、ファームウェア・システム１２８および安全更新モジュール１３０を含むまたそうでなければ利用する図１の計算デバイス例１０２のような、適切に構成された計算デバイスによって実施することができる。
【００２１】
[0027]  図３は、安全なファームウェア更新がブート前環境において実行される手順例３００を示す。計算デバイスの起動に応答して、安全なブート前環境を確立する（ブロック３０２）。具体的には、計算デバイスに電力が投入されたときまたは再起動されたとき、通常、このデバイスに内蔵された一体ブート・プログラムが実行して、システムを初期化し、自己検査を実行し、システムのハードウェア・リソース１２４を識別する。更に、ブート・プログラムは、ハードウェア・リソースを使用に併せて構成し、デバイスのオペレーティング・システムをロードするための動作も実行することができる。
【００２２】
[0028]  ブート・プログラムは、本明細書において説明するようなファームウェア・システム１２８および／または安全更新モジュール１３０を含む、またはこれらを利用することができる。ファームウェア・システム１２８および／または安全更新モジュール１３０は、ハードウェア・リソースを初期化し、リソースに適したドライバをロードし、更にそれ以外ではシステムを設定するためのブート・シーケンスに定められた動作を実行するように構成されたファームウェア・インターフェースを設ける。本明細書において説明した技法は、種々の異なるタイプのファームウェア・システムと併せて実現することができる。適したファームウェア・システムの例には、統一拡張可能ファームウェア・インターフェース（ＵＥＦＩ）、高度構成および電力インターフェース（ＡＣＰＩ）、基本入力出力システム（ＢＩＯＳ）インターフェース、および／またはカスタム・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を含むがこれらに限定されるのではない。
【００２３】
[0029]  また、安全更新モジュール１３０は、デバイスに対して安全ブート・モードを実施するように構成することもできる。安全ブート・モードは、信頼できないコード、認識できないコード、および／または悪意のコードが実行するのを防止する安全なブート前環境を提供する。具体的には、安全更新モジュール１３０は、どの種類のプログラムおよびブート・サービスがブート前環境において実行することができ、制限されるか定めるセキュリティ・ポリシーを実施(implement)および執行する(enforce)することができる。安全ブート・モードにおいて実行することを許可されたあらゆるコードが信頼できることを保証するために、コードを検証するための種々の技法を採用することができる。例えば、コードに付随するディジタル・シグネチャーを、既知の信頼されたエンティティに付随するディジタル鍵と突き合わせてチェックすることによって、信頼判定を行うことができる。コードに対応するディジタル・シグネチャーが有効であると判定されたと仮定すると、このコードは信頼できると指示することができ、実行することが許可される。一方、署名されていないコード、または有効なディジタル署名を有さないコードは、信頼できないと指示することができ、この信頼できないコードの実行を防止することができる。加えて、安全更新モジュール１３０は、計算デバイス上にロードするブート・プログラムおよび／または対応するオペレーティング・システムが信頼できることを保証することができる。
【００２４】
[0030]  計算デバイスから選択したハードウェア・リソースに対するファームウェア更新をブート前環境において有効にする（ブロック３０４）。ここで、ハードウェア・リソースは、ファームウェア更新を選択的に有効および無効にできるように、異なる更新状態間で切り替えるように構成されるとよい。これは種々の方法で行うことができる。例えば、ハードウェア・リソース１２４に関連するファームウェア１２６が、ファームウェア更新を制御するために定められたデーター・フィールドを、更新有効状態と更新無効状態との間で、対応するイベント、入力、および／またはトリガーに応答して切り替える(toggle)ように構成することもできる。１つの手法では、ハードウェア・リソース１２４に関連するブール・フィールドまたは他の適した更新状態データー・オブジェクト／パラメータが、計算デバイスが電力投入されたときまたはリセットされたときに更新を有効にするように、デフォルトで設定されてもよい。加えてまたは代わりに、安全更新モジュール１３０は、ハードウェア・リソース１２４にファームウェア更新を有効にさせるブート・シーケンスの一部として、コマンドを送るように構成されてもよい。イネーブル・コマンドに応答して、ハードウェア・リソース１２４に関連するファームウェアまたはその他のコードが、しかるべきデーター・フィールドを設定することができ、またそれ以外でファームウェア更新を有効にするためのアクションを実行することができる。
【００２５】
[0031]  選択されたハードウェア・リソースに入手可能なファームウェア更新のインストールを安全なブート前環境において開始する（ブロック３０６）。具体的には、安全なファームウェア更新は、ブート前環境において、指定ハードウェア・リソースから選択されたグループに対して適用される。先に注記したように、このグループは一体コンポーネントおよびアクセサリー・デバイスの双方を含むことができる。更新は、指定ハードウェア・リソースに対して安全なブート前環境において、デフォルトで、しかるべきコマンドに応答して、またはそれ以外で有効にすることができる。
【００２６】
[0032]  前述のように、ファームウェア・システム１２８は、ファームウェア更新を管理するように構成される。ファームウェア更新は、リソースの発見、ならびにファームウェア更新システムを通じてファームウェア更新を得るために登録された、言い換えると、指定された特定のリソースに対するファームウェア更新の検出、分析、取得、配布(distribution)、インストール、および追跡を含むことができる。更新は、ＵＥＦＩ、ＡＣＰＩ、および／またはＢＩＯＳファームウェア・インターフェースに関連する技法を含む種々の異なる技法を使用して、発見し、入手し、適用することができる。ファームウェア更新を実施するための企業固有のＡＰＩやコード、およびカスタムのＡＰＩやコードも、シナリオによっては採用できる場合もある。
【００２７】
[0033]  ファームウェア更新のコンテキストでは、安全なブート前環境において適用される更新はいずれも、確立されたセキュリティ・ポリシーに従う。つまり、ファームウェア・システムによって扱われ適用される更新パッケージは、このシステムによってディジタル的に署名され、信頼できると識別される。更新プロセスの一部として、本システムは、バージョンが正しいこと、ファームウェアがプラットフォームのリソースに正しく照合されたこと、およびファームウェアが安全である／信頼できることを検証するために、入手可能な更新および／またはインストールされるファームウェアのバージョンを調べることができる。更に、システムは、あらゆる問題にフラグを立てるまたは問題を報告し、正しいファームウェアを突き止めしかるべき状況において適用し直すことによって、あらゆる欠陥を自動的に補正しようとするように構成することもできる。
【００２８】
[0034]  加えて、切断されたアクセサリー・デバイスのような、利用可能でないかもしれないデバイスに対する更新を計画する(stage)ために、遅延ファームウェア更新機構を実装することもできる。この場合、システムは入手可能な更新を得て、デバイスが利用可能になるまで、再ブート毎に対応するリソースをチェックし続けることができる。次いで、しかるべきリソースに更新を適用する。１つの手法では、一部のハードウェア・リソース（例えば、指定されたＣＰＵまたはマイクロコントローラー）が、ファームウェア更新を、遅延を含む他のリソースに受け渡すように構成することができる。この手法では、「マスター」リソースが、ファームウェア・システムの指示で他のコンポーネントに対する更新を計画し、次いで更新を適用するために他のコンポーネントとの相互作用を処理することができる。これは、起動時にコンポーネントの利用可能性をチェックし、更新をしかるべく配布することを含むことができる。
【００２９】
[0035]  任意の入手可能な更新の適用に続いて、選択されたリソースに対するファームウェア更新を、安全なブート前環境の外部では無効にする（ブロック３０８）。このように、ファームウェア・システム１２８は、更新が安全なブート前環境内において実行されこの被制御環境の外部では防止されるように、被管理デバイスに対するファームウェア更新を制御することができる。被管理デバイスに対するファームウェア更新を無効にするためには、安全更新モジュールはしかるべきコマンドをハードウェア・リソース１２４に伝達し、ハードウェア・リソースにファームウェア更新をディセーブルさせることができる。また、安全なブート前環境をシステムによって確立できないときには、更新を無効にしてファームウェア更新プロセスを迂回するために、ディスエーブル・コマンドまたはその他の相当の技法を採用してもよい。他の選択肢には、タイマーを、ファームウェアを更新するための制限時間期間を設定するデバイスと関連付けることがある。次いで、タイマーにしたがって更新を無効にすればよい。これについては、以下で更に詳しく説明する。既に説明したイネーブル・コマンドまたは起動時イネーブル挙動と同様、ハードウェア・リソース１２４に関連するファームウェアまたは他のコードが、しかるべきデーター・フィールドを設定してもよく、またそうでなければ、ファームウェア更新を無効にするディスエーブル・コマンドに応答して対応するアクションを実行するのでもよい。
【００３０】
[0036]  次いで、ブート・プログラムは制御およびハンドオフ処理をブート・ローダーに渡し、被管理デバイスに対するファームウェア更新を無効にして、オペレーティング・システムをロードすることができる。したがって、ファームウェア更新はこのＯＳのランタイム環境では無効にされる。デバイス・レベルにおいてファームウェア更新が無効にされるので、実行時に露出される潜在的なエントリー・ポイントは、悪意のファームウェアをインストールするために使用することはできない。安全なファームウェア更新のこれらおよびその他の態様に関する更なる詳細について、以下の手順例に関して論ずる。
【００３１】
[0037]  図４は、１つ以上の実施形態による安全なファームウェア更新のロジック例を表す手順４００を示す。計算デバイスのブート・プログラムを起動する（ブロック４０２）。例えば、計算デバイスに電源を投入するときまたは計算デバイスをリセットするときに、計算デバイスの起動／初期化を処理するデフォルトのブート・コードを実行するのでもよい。既に述べたように、ブート・プログラムは、計算デバイスおよび関連するハードウェア・リソース１２４を初期化するブート・シーケンスを実施する。また、ブート・プログラムは、安全なファームウェア更新を実施するように構成された安全更新モジュール１３０を呼び出す、またそうでなければこれと相互作用することによって、ハードウェア・リソース１２４に関連するファームウェア１２６に対する更新を制御することもできる。
【００３２】
[0038]  ブート・プログラムによって安全な環境が確立されたか否かに関して判定を行う（ブロック４０４）。例えば、安全更新モジュール１３０が安全ブート・モードを実施すればよい。安全ブート・モードは、信頼できないコードが制限されるおよび／または実行するのを防止される安全なブート前環境を提供するために、デバイスにとって排他的または任意のブート・モードとして採用することができる。デバイスの中には、安全なブート・モードがアクティブであるか否か制御するために、ユーザー選択可能な選択肢を設定できる場合もある。他のユーザー選択可能な選択肢では、安全なファームウェア更新がアクティブであるか否か制御することもできる。入手可能なファームウェア更新を適用する先駆として、安全更新モジュール１３０は１つ以上のチェックを実行して、安全ブート・モードおよび安全な更新がアクティブであるか否か判定を行うことができる。安全ブート・モードがアクティブである場合、安全更新モジュール１３０は、安全なブート前環境を確立するのに成功したか否かについても判定を行う。
【００３３】
[0039]  ファームウェア更新プロセスは、以上で述べた判定の結果に基づいて、選択的に実行することができる。一般に、被管理リソースに対する安全なファームウェア更新は、安全なブート前環境が確立されたときに適用される。しかしながら、安全ブート・モードが非アクティブ化されたためまたは他の何らかの理由のために安全なブート前環境を確立することができない場合、ファームウェア更新プロセスを迂回してもよい。
【００３４】
[0040]  ブロック４０４によって安全な環境が存在すると仮定して、ファームウェア・システムによってファームウェア更新の管理に指定されたハードウェア・リソースを確認する（ブロック４０６）。次いで、ブロック４０４によって確認された非管理ハードウェア・リソースに入手可能な更新があるか否かに関して判定を行う（ブロック４０８）。更新が入手可能である場合、この入手可能な更新を適用する（ブロック４１０）。ブロック４１０は、ファームウェア更新を実施するために採用することができる種々の技法および動作を表す。
【００３５】
[0041]  一例として、ファームウェア・システム１２８および／またはオペレーティング・システム１０８は、定められたフォーマットとなっているデーター構造を参照するように構成してもよい。このデーター構造は、計算デバイス１０２に関連するハードウェア・リソース１２４および対応するファームウェア１２６のプロパティを識別し記述する。このデーター構造は、システム・ファームウェア、デバイス・ファームウェア、およびシステムを更新するためのアクセサリー・デバイス・ファームウェアを識別するメカニズムを設ける。少なくとも一部の実施形態では、中核システム・ファームウェアは、指定されたフォーマットのデーター構造を割り当てて事前設定する(populate)ことを責務とする。加えてまたは代わりに、ブート・プログラムが、計算デバイスに関連するハードウェア・リソースを列挙するために、データー構造を作成し入力するように動作してもよい。これは、計算プラットフォームのブート・シーケンスの間に行うことができる。ファームウェア・リソースに対する現在のデーターを反映するために、ブート・シーケンス毎にデーター構造の異なるインスタンスをインスタンス化することもできる。データー構造は、ＵＥＦＩまたは他の適したインターフェース（例えば、ＡＣＰＩ、ＢＩＯＳ、カスタムＡＰＩ等）を通じて露出することができる。ファームウェア・システム１２８および／または安全更新モジュール１３０は、次に、データー構造に収容されたリソースに関するデーター・エントリーを利用して、リソースを発見し、ファームウェア更新を構成し、更新を展開し、更にそれ以外ではデーター構造内に列挙されたデバイスに対するファームウェア更新を設定し処理することができる。
【００３６】
[0042]  単なる１つの代表例として、データー構造を統一拡張可能ファームウェア・インターフェース（ＵＥＦＩ）システムの表として構成してもよい。ＵＥＦＩは、ブート前環境においてオペレーティング・システムとプラットフォームのファームウェアとの間のインターフェースのパラメータを定める規格である。ＵＥＦＩは、関数、メソッド、表等を通じてプラットフォームのＯＳに対する態様を記述するための標準的な慣例(convention)を規定する。具体的には、ＵＥＦＩは、ブーティングの間においてシステム・ブート・コードとＯＳのブート・ローダーとの間において、データー交換および相互作用のためのインフラストラクチャ、慣例、および技法を規定する。少なくとも一部の実施形態では、ＵＥＦＩ毎に定められるインフラストラクチャを利用して、安全なファームウェア更新の実施のために適したデーター構造を作成することができる。とは言え、相当する仕方でファームウェア・システムに対してハードウェア・リソースを列挙するためには、種々の他の種類の技法、システム、表、データーベース、および／またはデーター構造も採用してもよいことは認められてしかるべきである。
【００３７】
[0043]  適したデーター構造におけるエントリーは、更新可能なファームウェアを有するハードウェア・リソースを識別および記述する。これは、リソースのタイプおよび分類データー、どのようにリソースと相互作用しリソースを更新するかに関する命令／詳細、更新を登録する、ダウンロードする、またはそれ以外の方法で入手するために使用することができるリンク、位置、および／またはアドレス等を含むことができる。更に、エントリーについてのメタデーターが、記述されるリソースに対応するステータス／バージョン情報を記録することもできる。安全更新モジュール１３０が更新を設定し実行することを可能にするのに十分な情報を取り込むために、エントリーに対して種々の異なるフィールドを定めることができる。少なくとも一部の実施形態では、これらの異なるフィールドは既に説明したような更新状態フィールドを含み、対応するリソースに対するファームウェア更新を有効または無効にするために、本明細書において説明する技法にしたがって選択的に設定することができる。データー構造におけるエントリーに関連する更新状態フィールドは、列挙されたハードウェア・リソースに関連するファームウェア内に収容された、対応する更新状態フィールドを反映する。したがって、特定のリソースに対して更新状態フィールドの値を設定すると、その特定のリソースに対するファームウェア内にある値に変化を生じさせることができる。
【００３８】
[0044]  再度注記するが、以上で説明した表および／またはＵＥＦＩの実施態様は、ファームウェア更新システムによる使用に適したデーター構造の代表例として提示したのである。実際には、ハードウェア・リソースに関するデーターを露出するための種々の異なるフォーマットおよび技法を採用することができる。例えば、以上の例に相当する表または他のデーター構造を、ＯＳとシステム・ブート・コードとの間における他の種類のインターフェースに合わせて構成することもできる。システム・ブート・コードは、ＡＣＰＩ、カスタムＡＰＩ、およびＢＩＯＳインターフェースを含むが、これらに限定されるのではない。
【００３９】
[0045]  採用されるファームウェア更新プロセスは、実装されるファームウェア・システム１２８の個々のタイプに応じて、様々に変わってもよい。しかしながら、一般に、安全更新モジュール１３０が、露出されたデーター構造から識別されたリソースに、更新が入手可能か否かチェックすることができる。例えば、データー構造に収容されたファームウェア・バージョン情報を、公開された更新と比較して、リソースのために現在インストールされているファームウェアが最新であるか否か判定することができる。次いで、安全更新モジュールは、特定のファームウェア・システムによって既定された仕方で、最新のファームウェアに対して入手可能な更新を突き止め、入手することができる。また、安全更新モジュール１３０は、更新に関連するディジタル署名および／または他の証明書を検査して、既に説明したような信頼判定を行うこともできる。信頼できる更新は、安全なブート前環境内において適用することができる。これは、対応するハードウェア・リソースによる消費のために、信頼できる更新パッケージを配布して、更新を適用することを伴うのでもよい。更新パッケージは、本プラットフォームによって実装されるＵＥＦＩまたは他のファームウェア・システムにしたがって構成および配布されてもよい。他の手法では、安全更新モジュール１３０が、少なくともいくつかのハードウェア・リソースの代わりに更新を適用するように構成されてもよい。一方、安全更新モジュール１３０が、信頼できない更新を破棄する、削除する、無視する、隔離する、またそうでなければシステムによって実行および適用されるのを防止することによって、信頼できない更新を拒絶するように構成されてもよい。
【００４０】
[0046]  一旦安全更新モジュールによって指示されるように入手可能な更新が処理されたなら、被管理リソースにファームウェア更新を無効にさせるために、通知を被管理リソースに送る（ブロック４１２）。これは、事実上、安全なブート前環境外部における被管理デバイスに対するファームウェア更新を無効にする。この通知は、ハードウェア・リソースによる処理のためにディスエーブル・コマンドを含んでもよい。具体的には、ハードウェア・リソース124のファームウェアが、指示されるとおりにファームウェア更新を有効または無効にするために、ファームウェア・システム１２８からのコマンドを処理するように構成されてもよい。全域的通知メッセージを多数のリソースに送ることもできる。加えてまたは代わりに、デバイス特定メッセージを少なくとも一部のリソースに送ることもできる。
【００４１】
[0047]  更に、リソースの中には、ファームウェア更新を制御し、定められた時間期間外で更新が行われるのを防止するために、タイマーを使用するとよいものもある。例えば、デバイスに電源が入るときにタイマーを設定してもよく、電源投入後の定められた時間期間には更新を有効にする。タイマーが終了したとき、更新は自動的に無効にされる。この手法では、タイマーの長さは、ＯＳがロードする前に更新が無効にされるように、ブート・シーケンスに予測される時間未満に設定するとよい。
【００４２】
[0048]  次いで、被管理リソースに対するファームウェア更新を無効にして、オペレーティング・システムをロードすることができる（ブロック４１４）。ここでは、説明したようにファームウェア更新が無効にされた後に、処理をブート・ローダーに引き渡すことができる。次いで、ブート・ローダーはＯＳのブーティングを処理する。ＯＳの実行時環境において、被管理ハードウェア・リソースのファームウェアを更新する試みは拒絶される。何故なら、これらのリソースは、デバイス・レベルの更新を無効にするように設定されているからである。
【００４３】
[0049]  ブロック４０８で更新が入手可能でないとき、手順４００はブロック４１２において無効通知に進むことができ、ブロック４１０によって表される更新を適用する動作を実行することなく、オペレーティング・システムは直接ブロック４１４においてロードする。同様に、ブロック４０４で安全な環境が存在しない場合、手順４００は、ブロック４１２でディスエーブル・コマンドによって更新を無効にし、次いでブロック４１４においてオペレーティング・システムをロードすることができる。この場合、システムは、安全な環境が得られないときには、ファームウェア更新を全て迂回するのでもよい。
【００４４】
[0050]  場合によっては、安全な環境が得られないときには、ブート・プログラムがエラー・メッセージを生成してもよい。エラーを処理する選択肢に関してユーザーからの入力を要求するために、プロンプト(prompt)を提示してもよい。例えば、ロードを中断するか、通常通りに開始するか、１組の減少した機能を提供する安全モードで開始するか等を示すように、ユーザーに促すのでもよい。あるいは、安全な環境が存在しないときに自動的にブート・シーケンスを中断するようにシステムを構成することもできる。
【００４５】
[0051]  図５は、１つ以上の実施形態にしたがって安全なファームウェア更新を実施するために選択的に更新状態を設定する手順５００を示す。安全なブート前環境においてファームウェア更新を有効にするために、計算デバイスに関連する１つ以上の被管理ハードウェア・リソースについての更新状態を設定する（ブロック５０２）。更新状態は、既に説明した仕方で、異なるリソース毎に個々に設定することもできる。これらの状態は、リソースに関連する指定フィールドまたは他の適したデーター・オブジェクト／パラメータを使用して設定することができる。更新状態は、通知／コマンドに応答して、またはそれ以外で、システムに電力投入するときにデフォルトで設定してもよい。
【００４６】
[0052]  他の手法では、ＳｏＣデバイスまたは他の指定コンポーネント（例えば、指定中央処理ユニット（ＣＰＵ）、マイクロプロセッサー、またはコントローラー・デバイス）の中核システム・ファームウェアをゲートキーパーとして構成し、これを各被管理ハードウェア・リソースに接続してもよい。この手法では、ゲートキーパー・デバイスに対応するシステム・ファームウェア２０２によって、被管理ハードウェア・リソースに対するファームウェア更新を集合的に更新し処理することができる。システム・ファームウェア２０２は、ファームウェア更新が有効にされたときに他のリソースに対する更新を配布することを責務とするのでもよい。したがって、多数の異なるハードウェア・リソースに対する更新は、ＳｏＣデバイスまたは他の指定ゲートキーパーに対する更新状態を管理することによって、制御することができる。指定ゲートキーパー・デバイスに対する更新状態が、更新を無効にするように設定された場合、システム・ファームウェアは他のデバイス／リソースに更新を配布しないように構成される。このように、選択されたデバイスの１群に対するファームウェア更新は、指定ゲートキーパー・デバイスに関連する状態を管理することによって、有効または無効にすることができる。
【００４７】
[0053]  １つ以上の被管理ハードウェア・リソースに入手可能な更新を検出し（ブロック５０４）、検出された入手可能な更新を適用する（ブロック５０６）。更新の処理およびインストールは、既に説明した仕方で異なるファームウェア・システム１２８および技法を使用して行うことができる。一般に、これは、システムによってファームウェア管理に指定されたハードウェア・リソースの一群を列挙することを伴う。列挙されたリソースに対して安全な更新が有効にされている限り、ファームウェア・システム１２８は、安全更新モジュール１３０と共に、列挙されたリソースに入手可能な更新を発見し展開することができる。例えば、本システムは更新パッケージを得て、個々のリソースによる更新の適用のために、更新パッケージを配布することができる。指定ゲートキーパー・デバイスを採用するとき、ファームウェア・システムにしたがってフォーマットされた更新パッケージを、ゲートキーパー・デバイスのファームウェアを介して集合的に発見し展開することができる。実施形態には、安全更新モジュール１３０が、指定ハードウェア・リソースのために集合的に安全なファームウェア更新を処理するためのゲートキーパー・デバイスのコンポーネントとして構成されるものもある。
【００４８】
[0054]  ブート後環境においてファームウェア更新を無効にするために、更新状態を変更するための更新の適用に続いて、ディスエーブル・コマンドを１つ以上の被管理ハードウェア・リソースに伝達する（ブロック５０８）。これは、制御がブート・ローダーに渡されてＯＳをロードする直前に行われるとよい。この場合も、異なるハードウェア・リソースの各々に関連する更新フィールドを設定することによって、リソースに対する更新を個々に無効にすることができる。しかしながら、指定ゲートキーパー・デバイスを採用するとき、ゲートキーパー・デバイスによって集合的に管理されるリソースに対する更新は、ゲートキーパー・デバイス自体の状態を設定することによって、一緒に無効にすることができ、これによって多数のリソースに対する更新を無効にする。状態を無効に設定することによって、ゲートキーパー・デバイスがいかなるファームウェア更新も他のリソースに配布することを防止する。
【００４９】
[0055]  以上、安全なファームウェア更新に関する詳細および技法の例について検討したので、１つ以上の実施形態によるシステム例の論述を検討する。
システム例
[0056]  図６は、計算デバイス例６０２を含むシステム例６００を示す。計算デバイス６０２は、本明細書において説明した種々の技法を実現することができる１つ以上の計算システムおよび／またはデバイスを表す。計算デバイス６０２は、例えば、サービス・プロバイダーのサーバー、クライアントに関連するデバイス（例えば、クライアント・デバイス）、チップ上システム、および／または任意の他の適した計算デバイスまたは計算システムであってもよい。
【００５０】
[0057]  図示する計算デバイス例６０２は、処理システム６０４、１つ以上のコンピューター読み取り可能媒体６０６、および１つ以上のＩ／Ｏインターフェース６０８を含み、これらは互いに通信可能に結合されている。図示しないが、計算デバイス６０２は更に、種々のコンポーネントを互いに結合するシステム・バスまたは他のデーターおよびコマンド転送システムも含むことができる。システム・バスは、メモリー・バスまたはメモリー・コントローラー、周辺バス、ユニバーサル・シリアル・バス、および／または種々のバス・アーキテクチャーの内任意のものを利用するプロセッサーまたはローカル・バスというような、異なるバス構造の内任意の１つまたはその組み合わせを含むことができる。制御およびデーター線というような、種々の他の例も考えられる。
【００５１】
[0058]  処理システム６０４は、ハードウェアを使用して１つ以上の動作を実行する機能性を表す。したがって、処理システム６０４は、プロセッサー、機能ブロック等として構成することができるハードウェア・エレメント６１０を含むように示されている。これは、１つ以上の半導体を使用して形成される特定用途集積回路または他の論理デバイスのような、ハードウェアでの実施態様を含むことができる。ハードウェア・エレメント６１０は、これらが形成される材料や、処理メカニズムに採用される材料によって限定されることはない。例えば、プロセッサーは、半導体（１つまたは複数）および／またはトランジスター（例えば、電子集積回路（ＩＣ））で構成されるのでよい。このようなコンテキストでは、プロセッサー実行可能命令は、電子的に実行可能な命令であればよい。
【００５２】
[0059]  コンピューター読み取り可能媒体６０６は、メモリー／ストレージ６１２を含むように示されている。メモリー／ストレージ６１２は、１つ以上のコンピューター読み取り可能媒体に関連するメモリー／記憶容量を表す。メモリー／ストレージ６１２は、揮発性媒体（ランダム・アクセス・メモリー（ＲＡＭ）のような媒体）および／または不揮発性媒体（リード・オンリー・メモリー（ＲＯＭ）、フラッシュ・メモリー、光ディスク、磁気ディスク等のような媒体）を含むことができる。メモリー／ストレージ６１２は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハード・ドライブ等）、およびリムーバブル媒体（例えば、フラッシュ・メモリー、リムーバブル・ハード・ドライブ、光ディスク等）を含むことができる。コンピューター読み取り可能媒体６０６は、以下で更に説明するように、種々の他の方法で構成することもできる。
【００５３】
[0060]  入力／出力インターフェース（１つまたは複数）６０８は、種々の入力／出力デバイスを使用して、ユーザーにコマンドおよび情報を計算デバイス６０２に入力させ、更に情報をユーザーおよび／または他のコンポーネントまたはデバイスに提示させる機能性を表す。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、音声動作用のマイクロフォン、スキャナー、タッチ機能性（例えば、物理的なタッチを検出するように構成された容量性センサーまたは他のセンサー）、カメラ（例えば、ジェスチャーのようなタッチを伴わない動きを検出するために赤外線周波数のような可視波長または非可視波長を採用することができる）等が含まれる。出力デバイスの例には、ディスプレイ・デバイス（例えば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワーク・カード、触覚応答デバイス等が含まれる。このように、計算デバイス６０２は、以下で更に説明するように、ユーザー対話処理をサポートするために、種々の方法で構成することができる。
【００５４】
[0061]  本明細書では、ソフトウェア、ハードウェア・エレメント、またはプログラム・モジュールという一般的なコンテキストで、種々の技法について説明した。一般に、このようなモジュールは、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象データー型を実装する。「モジュール」、「機能性」、および「コンポーネント」という用語は、本明細書において使用する場合、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを総合的に表す。本明細書において説明した技法の特徴は、プラットフォーム独立ということであり、種々のプロセッサーを有する種々の商用計算プラットフォーム上でこれらの技法を実現できることを意味する。
【００５５】
[0062]  説明したモジュールおよび技法の実施態様は、何らかの形態のコンピューター読み取り可能媒体上に格納すること、またはそれを通じて送信することもできる。コンピューター読み取り可能媒体は、計算デバイス６０２によってアクセスすることができる種々の媒体を含むことができる。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、「コンピューター読み取り可能記憶媒体」および「通信媒体」を含むことができる。
【００５６】
[0063]  「コンピューター読み取り可能記憶媒体」は、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的格納を可能にする媒体および／またはデバイスを指すことができる。つまり、コンピューター読み取り可能記憶媒体は、信号支持媒体や一時的媒体は含まない。コンピューター読み取り可能記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体、および／または記憶デバイスというようなハードウェアを含み、これらはコンピューター読み取り可能命令、データー構造、プログラム・モジュール、論理エレメント／回路、または他のデーターというような情報の格納に適した方法または技術で実現される。コンピューター読み取り可能媒体の例には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望の情報を格納するのに適しておりコンピューターによってアクセスすることができるその他の記憶デバイス、有形媒体、または製造品目(article of manufacture)を含むことができるが、これらに限定されるのではない。
【００５７】
[0064]  「通信媒体」は、ネットワークを通じてというようにして、命令を計算デバイス６０２のハードウェアに送信するように構成された信号支持媒体を指すことができる。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波データー信号というような変調データー信号、または他の移送メカニズム内に具体化することができる。また、通信媒体はあらゆる情報配信媒体も含む。「変調データー信号」という用語は、その信号内に情報をエンコードするような仕方でその特性の１つ以上が設定または変化させられた信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。
【００５８】
[0065]  既に説明したように、ハードウェア・エレメント６１０およびコンピューター読み取り可能媒体６０６は、ハードウェア形態で実現された命令、モジュール、プログラマブル・デバイス・ロジック、および／または固定デバイス・ロジックを表し、本明細書において説明した技法の少なくとも一部の態様を実現するために、いくつかの実施形態において採用することができる。ハードウェア・エレメントは、集積回路またはチップ上システム、特定用途集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート、アレイ（ＦＰＧＡ）、複合プログラマブル論理デバイス（ＣＰＬＤ）、およびシリコンまたは他のハードウェア・デバイスにおける他の実施態様のコンポーネントを含むことができる。このコンテキストでは、ハードウェア・エレメントは、実行のために命令を格納するために利用されるハードウェア・エレメントおよびハードウェア・デバイス、例えば、既に説明したコンピューター読み取り可能記憶媒体によって具体化される命令、モジュール、および／またはロジックによって定められるプログラム・タスクを実行する処理デバイスとして動作することができる。
【００５９】
[0066]  また、以上の組み合わせも、本明細書において説明した種々の技法およびモジュールを実現するために採用することもできる。したがって、オペレーティング・システム１０８、アプリケーション１１０、ファームウェア・システム１２８、安全更新モジュール１３０、およびその他のプログラム・モジュールを含むソフトウェア、ハードウェア、またはプログラム・モジュールは、何らかの形態のコンピューター読み取り可能記憶媒体上に具体化された、および／または１つ以上のハードウェア・エレメント６１０によって具体化された１つ以上の命令および／またはロジックとして実現することもできる。計算デバイス６０２は、ソフトウェアおよび／またはハードウェア・モジュールに対応する特定の命令および／または機能を実装するように構成することができる。したがって、ソフトウェアのように計算デバイス６０２によって実行可能であるモジュールのようなモジュールの実施態様は、少なくとも部分的にハードウェアで、例えば、コンピューター読み取り可能記憶媒体および／または処理システムのハードウェア・エレメント６１０の使用によって達成することができる。命令および／または機能は、本明細書において説明した技法、モジュール、および例を実現するために、１つ以上の製品（例えば、１つ以上の計算デバイス６０２および／または処理システム６０４）によって実行可能／動作可能であるとよい。
【００６０】
[0067]  更に図６に示すように、システム例６００は、パーソナル・コンピューター（ＰＣ）、テレビジョン・デバイス、および／または移動体デバイス上でアプリケーションを実行するときに、シームレスなユーザー体験のためにユビキタス環境(ubiquitous environment)を可能にする。サービスおよびアプリケーションは、１つのデバイスから次のデバイスに移るときに、アプリケーションを利用しながら、ビデオ・ゲームをプレーしながら、ビデオを視聴しながら等、共通のユーザー体験に対して３つの環境全てにおいて実質的に同様に実行する。
【００６１】
[0068]  システム例６００では、多数のデバイスが中央計算デバイスを介して相互接続されている。中央計算デバイスは、これら多数のデバイスに対してローカルであってもよく、またはこれら多数のデバイスから離れて配置されてもよい。一実施形態では、中央計算デバイスは、ネットワーク、インターネット、または他のデーター通信リンクを通じて多数のデバイスに接続された１つ以上のサーバー・コンピューターによって実現された分散型クラウド環境であってもよい。
【００６２】
[0069]  一実施形態では、この相互接続アーキテクチャーが、機能性を多数のデバイスに跨がって配信し、共通のシームレス環境を多数のデバイスのユーザーに提供することを可能にする。多数のデバイスの各々は、異なる物理的要件および能力を有しても良く、中央計算デバイスは、プラットフォームを使用して、デバイスに合わせて用意され(tailor)しかも全てのデバイスに共通でもある体験の当該デバイスへの配信を可能にする。一実施形態では、ターゲット・デバイスのクラスが作られ、この包括的なクラスのデバイスに合わせて体験が用意される。デバイスのクラスは、物理的特徴、使用の種類、またはその他の共通するデバイス特性によって定めることができる。
【００６３】
[0070]  種々の実施態様において、計算デバイス６０２は、コンピューター６１４、移動体６１６、およびテレビジョン６１８の使用のためというように、種々の異なる構成を想定することができる。これらの構成の各々は、一般に異なる構造および能力を有するかもしれないデバイスを含み、つまり、計算デバイス６０２は異なるデバイス・クラスの内の１つ以上にしたがって構成することができる。例えば、計算デバイス６０２は、パーソナル・コンピューター、デスクトップ・コンピューター、多重画面コンピューター、ラップトップ・コンピューター、ネットブック等を含むデバイスのコンピューター６１４クラスとして実現することもできる。
【００６４】
[0071]  また、計算デバイス６０２は、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミング・デバイス、タブレット・コンピューター、多重画面コンピューター等のような移動体デバイスを含むデバイスの移動体６１６クラスとして実現することもできる。また、計算デバイス６０２は、日常の視聴環境において通常もっと大きな画面を有するデバイスまたはそれに接続されているデバイスを含むデバイスのテレビジョン６１８クラスとして実現することもできる。これらのデバイスは、テレビジョン、セット・トップ・ボックス、ゲーミング・コンソール等を含む。
【００６５】
[0072]   本明細書において説明した技法は、計算デバイス６０２のこれら種々の構成によってサポートすることができ、本明細書において説明した技法の具体的な例に限定されるのではない。これは、計算デバイス６０２上における安全更新モジュール１３０の包含によって例示される。安全更新モジュール１３０および他のモジュール／アプリケーションによって表される機能性は、全てまたは部分的に、以下で説明するような、プラットフォーム６２２を介して「クラウド」６２０を通じてというようにして、分散型システムの使用によって実現することもできる。
【００６６】
[0073]  クラウド６２０は、リソース６２４のためのプラットフォーム６２２を含む、および／またはプラットフォーム６２２を表す。プラットフォーム６２２は、クラウド６２０のハードウェア（例えば、サーバー）およびソフトウェア・リソースの基礎的機能性を抽象化する。リソース６２４は、計算デバイス６０２から離れているサーバー上においてコンピューター処理が実行されている間に利用することができるアプリケーションおよび／またはデーターを含むことができる。また、リソース６２４は、インターネットを通じておよび／またはセルラまたはＷｉ−Ｆｉネットワークのような加入者ネットワークを通じて提供されるサービスも含むことができる。
【００６７】
[0074]  プラットフォーム６２２は、計算デバイス６０２を他の計算デバイスと接続するためのリソースおよび機能を抽象化することができる。また、プラットフォーム６２２は、プラットフォーム６２２を介して実装されるリソース６２４に対する要求に対応するスケール・レベルを与えるために、リソースのスケーリングを抽象化する役割を果たすこともできる。したがって、相互接続デバイス環境では、本明細書において説明した機能性の実施は、システム６００全体に分散させてもよい。例えば、機能性は、部分的に計算デバイス６０２上に実施し、更にクラウド６２０の機能性を抽象化するプラットフォーム６２２を介して実施してもよい。
結論
[0075]  以上、構造的特徴および／または方法論的動作に特定的な文言で主題について説明したが、添付した特許請求の範囲において定められた主題は、必ずしも以上で説明した特定的な特徴や動作(act)に限定されるのではないことは理解されてしかるべきである。逆に、以上で説明した特定的な特徴および動作は、特許請求の範囲を実施する形態例として開示したまでである。
【図３】
2015531500.tif 000003
【図４】
2015531500.tif 000004
【図５】
2015531500.tif 000005
【図６】
2015531500.tif 000006
【図１】
2015531500.tif 000007
【図２】
2015531500.tif 000008
【国際調査報告】
2015531500.tif 000009
2015531500.tif 000010