(57)【要約】      （修正有）【課題】ファームウェア設定入力ファイルの認証を許可するシステムを提供する。【解決手段】コンピュータシステムは、ファームウェア設定入力ファイルと、ファームウェア設定入力ファイルに関連するコードと、を受信する。ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されており、ファームウェアプロバイダにより作成される。コンピュータシステムは、ファームウェア設定入力ファイルに基づいて、第１値を生成し、コードを暗号化キーによって復号して、コードから第２値を得る。続いて、第１値と第２値とを比較して、第１値及び第２値が１つ以上の条件を満たすか否かに基づいて、ファームウェア設定入力ファイルを認証する。条件が満たされる場合、ファームウェア設定入力ファイルに基づいて、コンピュータシステム内のファームウェアが更新される。【選択図】図２
2020025243.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム内の認証済みのファームウェア設定を更新するコンピュータ実行方法であって、
ファームウェア設定入力ファイルと、前記ファームウェア設定入力ファイルに関連するコードと、を受信する工程であって、前記ファームウェア設定入力ファイルは、前記コンピュータシステム内のファームウェア設定を更新するように構成されている、工程と、
前記ファームウェア設定入力ファイルに基づいて、第１値を生成する工程と、
前記コードを暗号化キーで復号して、第２値を得る工程と、
前記第１値と前記第２値とを比較して、前記第１値が前記第２値と一致するか否かに基づいて、前記ファームウェア設定入力ファイルを認証する工程と、
前記第１値及び前記第２値が一致する場合に、前記ファームウェア設定入力ファイルに基づいて、前記コンピュータシステム内の前記ファームウェア設定を更新する工程と、を含む、
方法。
【請求項２】
前記第１値及び前記第２値は、ハッシュ関数に基づいて生成されたハッシュ値、又は、チェックサムアルゴリズムに基づいて生成されたチェックサム値である、請求項１の方法。
【請求項３】
前記コードは、前記ファームウェア設定入力ファイルに付加される証明書である、請求項１の方法。
【請求項４】
コンピュータシステムであって、
コンピュータ実行可能命令を記憶するメモリと、
前記メモリと通信する処理ユニットであって、前記コンピュータ実行可能命令を実行して、前記コンピュータシステムに動作を実行させる処理ユニットと、を備え、
前記動作は、
ファームウェア設定入力ファイルと、前記ファームウェア設定入力ファイルに関連するコードと、を受信する工程であって、前記ファームウェア設定入力ファイルは、前記コンピュータシステム内のファームウェア設定を更新するように構成されている、工程と、
前記ファームウェア設定入力ファイルに基づいて、第１値を生成する工程と、
前記コードを暗号化キーで復号して、前記コードから第２値を得る工程と、
前記第１値と前記第２値とを比較して、前記第１値が前記第２値と一致するか否かに基づいて、前記ファームウェア設定入力ファイルを認証する工程と、
前記第１値及び前記第２値が一致する場合に、前記ファームウェア設定入力ファイルに基づいて、前記コンピュータシステム内の前記ファームウェア設定を更新する工程と、を含む、
コンピュータシステム。
【請求項５】
前記第１値及び前記第２値は、ハッシュ関数に基づいて生成されたハッシュ値、又は、チェックサムアルゴリズムに基づいて生成されたチェックサム値である、請求項４のコンピュータシステム。
【請求項６】
前記コードは、前記ファームウェア設定入力ファイルに付加される証明書である、請求項４のコンピュータシステム。
【請求項７】
前記動作は、
前記コンピュータシステムの前記メモリから前記暗号化キーを取り出す工程を含む、請求項４のコンピュータシステム。
【請求項８】
認証済みのファームウェア設定入力ファイルを生成するコンピュータ実行方法であって、
ファームウェア設定入力ファイルに関連するコードを生成する工程であって、前記ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されている、工程と、
前記コードを暗号化キーで暗号化して、暗号化コードを生成する工程と、
前記暗号化コードを前記ファームウェア設定入力ファイルに付加して、前記認証済みのファームウェア設定入力ファイルを生成する工程と、を含む、
方法。
【請求項９】
認証された更新ファイルをコンピュータシステムに送信して、前記コンピュータシステム内のファームウェア設定を更新する工程と、
復号化キーを前記コンピュータシステムに提供する工程と、を含む、
請求項８の方法。
【請求項１０】
前記復号化キーは、非対称暗号キーペアの公開鍵であり、ハッシュ値を暗号化するのに用いられる前記暗号化キーは、前記非対称暗号キーペアの秘密鍵である、請求項９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム内のファームウェア設定の更新に関し、特に、ファームウェア設定更新の認証に関する。
【背景技術】
【０００２】
ファームウェアは、コンピュータシステムの様々なコンポーネントに用いられる。ファームウェアの例には、ＢＩＯＳ（Basic Input/Output System）ファームウェア、ＢＭＣ（Baseboard Management Controller）ファームウェア、ＰＣＩｅ（peripheral component interconnect express）ファームウェア等が含まれる。
【０００３】
ファームウェア設定の更新を可能にする方法及びユーティリティが存在する。ファームウェア設定を更新する一般的な方法の１つは、ファームウェアのベンダ又はソースにより提供される設定ユーティリティを用いることである。このユーティリティは、ファームウェアを提供するエンティティ（例えば、ファームウェアプロバイダ）により提供されるファームウェア設定入力ファイルを用いる。このファイルは、変更する必要のある設定及びその設定に関する値を記録することができる。構成ユーティリティは、入力ファイルを受信し、ファームウェアを記憶するメモリと通信する。構成ユーティリティは、入力ファイルの変更に伴って、メモリ内のファームウェアの所望の設定を変更する。その後、ファームウェアは、新たな設定に従って動作する。
【０００４】
ファームウェアを或る程度変更すると、ハードウェアを損傷させたり、セキュリティ上の問題を引き起こす可能性がある。さらに、ファームウェアプロバイダは、ファームウェア設定入力ファイルを生成することができるが、ファームウェア設定を正確に変更するのに必要な知識を有していない悪質なソース又はユーザも存在し得る。例えば、悪質なソースは、コンピュータシステムのセキュリティレベルを損なう及び／又は低下させる状態にＢＩＯＳ設定を構成するファームウェア設定入力ファイルを生成することができる。その結果、ファームウェアは、悪意のある変更や不正な変更によって破損する可能性がある。
【０００５】
したがって、ファームウェア設定入力ファイルからの設定をメモリに書き込む前にファームウェア設定入力ファイルを認証することによって、ファームウェアに対する悪意のある変更や不正な変更を抑制するデバイス及び方法が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、ファームウェア設定入力ファイルを認証する方法及びデバイスを提供することを目的とする。
【課題を解決するための手段】
【０００７】
コードと、ファイルに関連する値とを用いて、ファームウェア設定入力ファイルを認証する方法及びデバイスが開示される。コード及び値は、設定をファイルからメモリに書き込む前に、ファイルの認証を可能にする。コードは、元のファームウェア設定入力ファイルのハッシュ値から暗号化キーを用いて暗号化することができるので、ファームウェア設定入力ファイルのファームウェアプロバイダ又は認証済のオリジネータ（originator）のみが有効なコードを生成することができる。
【０００８】
コードは、ファームウェア設定入力ファイルから決定された固有の値とすることができる。ファイル及びコードを受信すると、コードを復号して、固有の値（例えば、固有のハッシュ値）を得ることができる。ファイルから別の値を生成することができ、この２つの値が１つ以上の条件を満たすか否かを判別することによって、ファームウェア設定入力ファイルの信頼性を検証することができる。１つ以上の条件は、２つの値（例えば、２つのハッシュ値）の一致等を含むことができる。
【０００９】
第１実施形態による、コンピュータシステム内の認証済みのファームウェア設定を更新するコンピュータ実行方法は、ファームウェア設定入力ファイルと、ファームウェア設定入力ファイルに関連するコードと、を受信する工程を含む。ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されている。この方法は、ファームウェア設定入力ファイルに基づいて、第１値を生成する工程をさらに含む。この値は、ファイル内の設定及び対応する値に基づいて、ファームウェア設定入力ファイルに固有の値とすることができる。この方法は、コードを暗号化キーで復号して、コードから第２値を得る工程をさらに含む。この方法は、第１値と第２値とを比較して、第１値が第２値と一致するか否かに基づいて、ファームウェア設定入力ファイルを認証する工程をさらに含む。この方法は、第１値及び第２値が一致する場合に、ファームウェア設定入力ファイルに基づいて、コンピュータシステム内のファームウェアを更新する工程をさらに含む。
【００１０】
いくつかの実施形態において、第１値及び第２値は、ハッシュ関数に基づいて生成されたハッシュ値、又は、チェックサムアルゴリズムに基づいて生成されたチェックサム値であってもよい。いくつかの実施形態において、コードは、ファームウェア設定入力ファイルに付加される証明書であってもよい。いくつかの実施形態において、この方法は、コンピュータシステムのメモリから暗号化キーを取り出す工程を含む。いくつかの実施形態において、メモリは、ファームウェアを記憶するメモリと同じメモリであってもよく、第１値を生成するのに用いられるアルゴリズムを記憶することができる。いくつかの実施形態において、暗号化キーは、非対称暗号キーペアの公開鍵であってもよい。
【００１１】
第２実施形態によるコンピュータシステムは、コンピュータ実行可能命令を記憶するメモリと、メモリと通信する処理ユニットと、を備える。コンピュータ実行可能命令を実行する処理ユニットは、コンピュータシステムに動作を実行させる。動作は、ファームウェア設定入力ファイルと、ファームウェア設定入力ファイルに関連するコードと、を受信する工程を含む。ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されている。動作は、ファームウェア設定入力ファイルに基づいて、第１値を生成する工程をさらに含む。この値は、ファイル内の設定及び対応する値に基づいて、ファームウェア設定入力ファイルに固有の値とすることができる。動作は、コードを暗号化キーで復号して、コードから第２値を得る工程をさらに含む。動作は、第１値と第２値とを比較して、第１値が第２値と一致するか否かに基づいて、ファームウェア設定入力ファイルを認証する工程をさらに含む。動作は、第１値及び第２値が一致する場合に、ファームウェア設定入力ファイルに基づいて、コンピュータシステム内のファームウェアを更新する工程をさらに含む。
【００１２】
いくつかの実施形態において、第１値及び第２値は、ハッシュ関数に基づいて生成されたハッシュ値、又は、チェックサムアルゴリズムに基づいて生成されたチェックサム値であってもよい。いくつかの実施形態において、コードは、ファームウェア設定入力ファイルに付加される証明書であってもよい。いくつかの実施形態において、他の動作は、コンピュータシステムのメモリから暗号化キーを取り出す。いくつかの実施形態において、メモリは、ファームウェアと、第１値を生成するのに用いられるアルゴリズムと、を記憶する。いくつかの実施形態において、暗号化キーは、非対称暗号キーペアの公開鍵であってもよい。
【００１３】
第３実施形態による認証済みのファームウェア設定入力ファイルを生成するコンピュータ実行方法は、ファームウェア設定入力ファイルに関連するコードを生成する工程を含む。ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されてもよい。この方法は、コードを暗号化キーで暗号化して、暗号化コードを生成する工程をさらに含む。この方法は、暗号化コードをファームウェア設定入力ファイルに付加して、認証済みのファームウェア設定入力ファイルを生成する工程をさらに含む。
【００１４】
いくつかの実施形態において、暗号化キーは、非対称暗号キーペアの秘密鍵であってもよい。いくつかの実施形態において、この方法は、認証された更新ファイルをコンピュータシステムに送信して、コンピュータシステム内のファームウェア設定を更新し、復号化キーをコンピュータシステムに提供する工程を含んでもよい。いくつかの実施形態において、復号化キーは、非対称暗号キーペアの公開鍵であり、ハッシュ値を暗号化するのに用いられる暗号化キーは、非対称暗号キーペアの秘密鍵であってもよい。
【００１５】
第４実施形態によるコンピュータシステムは、コンピュータ実行可能命令を記憶するメモリと、メモリと通信する処理ユニットと、を備える。コンピュータ実行可能命令を実行する処理ユニットは、コンピュータシステムに動作を実行させる。動作は、ファームウェア設定入力ファイルに関連するコードを生成する工程を含む。ファームウェア設定入力ファイルは、コンピュータシステム内のファームウェア設定を更新するように構成されてもよい。動作は、コードを暗号化キーで暗号化して、暗号化コードを生成する工程をさらに含む。動作は、暗号化コードをファームウェア設定入力ファイルに付加して、認証済みの更新ファイルを生成する工程をさらに含む。
【００１６】
いくつかの実施形態において、暗号化キーは、非対称暗号キーペアの秘密鍵であってもよい。いくつかの実施形態において、動作は、認証された更新ファイルをコンピュータシステムに送信して、コンピュータシステム内のファームウェア設定を更新し、復号化キーをコンピュータシステムに提供する工程を含んでもよい。いくつかの実施形態において、復号化キーは、非対称暗号キーペアの公開鍵であり、ハッシュ値を暗号化するのに用いられる暗号化キーは、非対称暗号キーペアの秘密鍵であってもよい。
【発明の効果】
【００１７】
本発明のデバイス及び方法によれば、ファームウェアに対する悪意のある変更や不正な変更を抑制することができる。
【００１８】
本発明の利点及び図面は、添付図面を参照して、以下の例示的な実施形態の説明からより良く理解できるであろう。これらの図面は、本発明の例示的な実施形態のみを示しており、本発明を限定するものではないことを理解されたい。本発明の原理は、図面の記載、及び、付加された特徴と詳細の解釈によって説明される。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態による、ファームウェア設定を更新するシステムを示す図である。
【図２】本発明の一実施形態による、ファームウェアを更新する方法のフローチャートである。
【図３】本発明の各種実施形態を実行するのに用いることができるコンピュータシステムを示す図である。
【図４】本発明の各種実施形態を実行することに用いることができるコンピュータシステムを示す別の図である。
【発明を実施するための形態】
【００２０】
様々な実施形態は、添付の図面を参照して説明され、類似又は同等の要素を示すために図面全体に亘って同様の参照番号が使用されている。これらの図は一定の縮尺で記載されたものではなく、単に本発明を説明するためのものである。十分な理解を提供するために、多くの特定の詳細、関係及び方法が示されていることを理解されたい。しかしながら、当業者であれば、様々な実施形態が１つ以上の特定の詳細なしに、又は、別の方法で実施され得ることを容易に認識するであろう。他の例では、様々な実施形態の特定の態様を不明瞭にすることを避けるために、周知の構造又は動作を詳細に示していない。様々な実施形態では、いくつかの動作が異なる順序及び／又は他の動作若しくはイベントと同時に発生する可能性があるので、動作又はイベントの順序は図示されたものに限定されない。
【００２１】
開示されている要素及び限定（例えば、要約、概要、詳細な説明に記載されているが、特許請求の範囲に明示的に記載されていないもの等）は、含意、推論又は他の方法によって、単独又は集合的に特許請求の範囲に組み込まれるべきではない。本発明の詳細な説明のために、特に断りのない限り、単数は複数を含み、その逆も同様である。「含む」という用語は、「限定なしに含む」ことを意味する。さらに、「約」、「ほぼ」、「実質的に」、「およそ」等の用語は、本明細書において、例えば「〜に」、「〜に近い」、「大体」、「〜の３〜５％の範囲内」、「許容される製造公差内」、又は、これらの任意の論理的組み合わせを意味するものとして用いることができる。
【００２２】
本発明に関し、用語「コンピューティングデバイス」、「コンピューティングシステム」及び「コンピュータシステム」という用語は、ハードウェア、ソフトウェア、及び／又は、ファームウェアコンポ―ネントを有する任意の電気的に駆動する機器又はバッテリ駆動の機器を指す。ソフトウェア及び／又はファームウェアコンポーネントは、デバイス上の機能を操作するように構成することができる。本発明に関し、「動作環境」という用語は、ソフトウェアがコンピュータシステム上で動作可能に機能する任意のオペレーティングシステム又は環境を指すことができる。
【００２３】
本発明の方法及びデバイスは、コンピュータシステム内のファームウェア設定を更新するのに用いることができるファームウェア設定入力ファイルを認証するプロセスを提供する。ファームウェア設定入力ファイルを認証することにより、コンピュータシステム内のファームウェア設定に対する悪意のある変更又は不正な変更を抑制又は禁止することができる。認証は、ファームウェア設定入力ファイルの受信者が、ファームウェア設定入力ファイルが信頼できるソースから得たものであることを判断するのを可能にする。よって、認証は、ファームウェア設定を更新することに対する懸念を軽減する。
【００２４】
認証は、ファームウェア設定入力ファイルを処理して、ファームウェア設定入力ファイルを他のファイルと区別することを可能にする固有の値を生成する工程を含む。例えば、固有の値は、ハッシュ関数に基づいてファームウェア設定入力ファイルを処理した結果であるハッシュ値とすることができる。或いは、固有の値は、例えば、チェックサムアルゴリズムに基づいてファームウェア設定入力ファイルを処理した結果であるチェックサム値とすることができる。他の数値及び処理を用いて、ファームウェア設定入力ファイルに関連する固有の値又は他のタイプの固有の識別情報を生成することができる。
【００２５】
認証は、ファームウェア設定入力ファイルから生成された値を暗号化する工程をさらに含む。暗号化は、権限のない者が、生成した値を決定するのを抑制する。様々なタイプの暗号化を用いることができる。１つ以上の実施形態では、認証が二者（すなわち、ファームウェア設定入力ファイルを生成する暗号化パーティ、及び、ファームウェア設定入力ファイルを用いてコンピュータシステムのファームウェア設定を更新する復号化パーティ）に関与するので、暗号化は非対称暗号キーペアの暗号化スキームに基づいている。暗号化エンティティは、値を暗号化するための秘密鍵を有することができ、復号化エンティティは、値を復号化するための公開鍵を有することができる。復号化エンティティは、暗号化された値と共にファームウェア設定入力ファイルを受信することができる。復号化パーティは、暗号化パーティによって用いられたのと同じ方法（例えば、ハッシュ関数、チェックサムアルゴリズム等）に基づいて値を生成することができる。復号化パーティは、暗号化された値を復号化する。２つの値が条件を満たす場合（例えば、一致する場合）、ファームウェア設定入力ファイルが認証され、復号化パーティは、ファームウェア設定入力ファイルを用いてコンピュータシステムのファームウェア設定を更新することができる。２つの値が条件を満たさない場合、エラーが発生して、さらなる調査（悪意のある者が、コンピュータシステムのファームウェア設定の変更を試みる、又は、ファームウェア設定の更新を妨げる他の問題が発生している等）を行うことができる。
【００２６】
本発明のプロセスは、認証済みのファームウェア設定入力ファイルを提供することによって、コンピュータシステム内のファームウェア設定を更新する改良された方法を提供する。よって、このプロセスは、悪意のある、不正な、又は、不適切に生成されたファームウェア設定入力ファイルがファームウェア設定の更新に用いられることを抑制する。その結果、コンピュータシステムのパフォーマンスは、不正なファームウェア設定入力ファイルに基づいて影響を受けたり損なわれたりすることがなく、コンピュータシステムのセキュリティは、悪意のある者がファームウェア設定の更新によってセキュリティ設定を変更しようとしても、低下しない。
【００２７】
図１は、本発明の一実施形態による、認証済みのファームウェア設定入力ファイルに基づいてファームウェアを更新するシステム１００を示す図である。システム１００は、ファームウェアプロバイダ１０２と、コンピュータシステム１０４と、を備える。ファームウェアプロバイダ１０２は、ファームウェア設定入力ファイルのオリジネータである。ファームウェア設定入力ファイルは、コンピュータシステム１０４でファームウェア設定を更新するように構成されている。以下で説明するように、コンピュータシステムの１つ以上のプロセス（例えば構成ユーティリティ１０６）は、ファームウェア設定入力ファイルを処理して、ファームウェア設定を更新することができる。
【００２８】
１つ以上の実施形態において、ファームウェアプロバイダ１０２は、ファームウェア設定入力ファイルに基づいて更新されるファームウェアのクリエータとすることができる。或いは、１つ以上の実施形態において、ファームウェアプロバイダ１０２は、ファームウェア設定入力ファイルに基づいてファームウェア設定を更新する権限を有することができるが、そうでなければ、ファームウェアのクリエータではない。例えば、ファームウェアプロバイダ１０２は、コンピュータシステム１０４上のファームウェア設定を変更する権限を有するコンピュータシステム１０４の管理者であってもよい。
【００２９】
ファームウェアプロバイダ１０２は、コンピュータシステム１０４と分離されているが、両方向の矢印で示すように、コンピュータシステム１０４と通信できるように、コンピュータ内に具現化することができる。ファームウェアプロバイダ１０２は、コンピュータシステム１０４に対してローカルであってもよいし、リモートであってもよい。ファームウェアプロバイダ１０２とコンピュータシステム１０４との間の通信は、例えば、広域ネットワーク（ＷＡＮ）（例えば、インターネット）、ローカルエリアネットワーク（ＬＡＮ）等の直接接続又はリモート接続を介したものであってもよい。
【００３０】
コンピュータシステム１０４は、任意のタイプのコンピュータシステム（例えば、サーバコンピュータシステム、パーソナルコンピュータシステム、モバイルコンピューティングデバイス等）とすることができる。或いは、コンピュータシステム１０４は、自身のファームウェアを有するコンピュータシステム内のサブコンポーネント（例えば、サーバコンピュータシステム内のＢＭＣ等）であってもよい。
【００３１】
コンピュータシステム１０４は、構成ユーティリティ１０６と、ファームウェアストレージデバイス１０８と、を備える。ファームウェアストレージデバイス１０８は、現在のファームウェア設定を記憶し、ファームウェア設定入力ファイルに基づいて更新を要求するコンピュータシステム１０４の一部である。１つ以上の実施形態において、ユーティリティ１０６は、コンピュータシステム１０４の動作環境において動作するプロセスであってもよい。或いは、１つ以上の実施形態において、ユーティリティ１０６は、コンピュータシステム１０４の動作環境とは独立して動作するプロセスであってもよい。例えば、ユーティリティ１０６は、ファームウェアストレージデバイス１０８を読み書きするために待機電力で動作するプロセッサを備えることができるので、コンピュータシステム１０４の電源がオフである場合であっても動作することができる。
【００３２】
ユーティリティ１０６は、ローカル（例えば、コンピュータシステム１０４のユーザによって）又はリモート（例えば、コンピュータシステム１０４から離れたコンピュータシステム（例えば、ファームウェアプロバイダ１０２）のユーザによって制御される。１つ以上の実施形態において、ユーティリティ１０６は、ファームウェアストレージデバイス１０８へのデータの書き込み、ファームウェアストレージデバイス１０８上のデータの削除及び書き込み、又は、ファームウェアストレージデバイス１０８上のデータの読み出し、書き込み、削除を行うことができる。さらに、ユーティリティ１０６は、ファームウェア設定入力ファイル内の命令に基づいて、ファームウェアストレージデバイス１０８にデータを書き込むように構成されている。
【００３３】
１つ以上の実施形態において、システム１００は、署名ツール１１０をさらに備えることができる。署名ツール１１０は、ファームウェアプロバイダ１０２により操作することができ、或いは、第三者（例えば、第三者の署名サービス等）により操作することができる。以下でさらに説明するように、署名ツール１１０は、認証された更新ファイルのコードを生成するのに用いられる。署名ツール１１０は、ファームウェア設定入力ファイルの所有権を証明するデジタルコードを発行する任意の認証機関とすることができる。
【００３４】
図１に示す構成によれば、コンピュータシステム１０４内のファームウェアは、認証済みのファームウェア設定入力ファイルに基づいて更新される。認証は、コンピュータシステム１０４内のセキュリティレベルにダメージを与える、及び／又は、低下させる可能性があるコンピュータシステム１０４内のファームウェア設定に対する悪意ある、及び／又は、偶発的な変更を抑制又は禁止することができる。
【００３５】
図２は、本発明の態様による、コンピュータシステム内のファームウェアを更新するコンピュータ実行プロセス２００のフローチャートである。プロセス２００は、１つ以上のコンピュータシステム（例えば、図１のコンピュータシステム１０４、及び、ファームウェアプロバイダ１０２を具現化するコンピュータシステム）で実行される１つ以上のプロセスによって実行される。１つ以上の実施形態において、１つ以上のコンピュータシステム上で実行される構成ユーティリティ（例えば、構成ユーティリティ１０６）は、プロセス２００を実行することができる。図２の説明に関して符号が付された全てのシステムコンポーネントは、図１において符号が付されたコンポーネントを指す。
【００３６】
プロセス２００の前に、コンピュータシステム（例えば、コンピュータシステム１０４）のファームウェア設定を更新するのに用いられるファームウェア設定入力ファイルが生成される。具体的には、ファームウェア設定入力ファイルは、ファームウェア内のどの設定を変更すべきか、及び、その設定に対応する値を記述する入力である。ファームウェア設定入力ファイルは、ファームウェアプロバイダ１０２によって生成される。
【００３７】
プロセス２００は工程２０２から始まり、１つ以上のアルゴリズムは、ファームウェア設定入力ファイルを処理して、ファームウェア設定入力ファイルに関連する固有の値を生成する。固有の値は、ファームウェア設定入力ファイルを、他のファームウェア設定入力ファイルと区別することを可能にする。また、固有の値は、ファームウェア設定入力ファイルが既に変更されているか否かを判別するのを許可する。具体的には、ファームウェア設定入力ファイルが変更された場合、１つ以上のアルゴリズムによるファームウェア設定入力ファイルの処理は、変更を示すか、少なくとも取り込んだ異なる固有の値を生成する。
【００３８】
値がファームウェア設定入力ファイルを区別するのを可能にし、ファームウェア設定入力ファイル内の設定、値又はこれら両方の変更を識別するのに十分な粒度を提供する限り、値の設定フォーマットは存在しない。例えば、値は、数字、文字又はこれら両方の文字列であってもよいし、多次元マトリクスであってもよい。
【００３９】
１つ以上のアルゴリズムは、ファームウェア設定入力ファイルを固有の値として特徴付けることができる任意のタイプのアルゴリズムとすることができる。例えば、１つ以上の実施形態において、１つ以上のアルゴリズムは、１つ以上のハッシュ関数とすることができる。ハッシュ関数は、ファームウェア設定入力ファイル内の特定の設定及び値に基づいて、ファームウェア設定入力ファイルに固有のハッシュ値を生成する。１つ以上の他の実施形態において、１つ以上のアルゴリズムは、１つ以上のチェックサムアルゴリズムとすることができる。チェックサムアルゴリズムは、ファームウェア設定入力ファイル内の特定の設定及び値に基づいて、ファームウェア設定入力ファイルに固有のチェックサム値を生成する。
【００４０】
例えば、工程２０２は、ファームウェアプロバイダ１０２又は署名ツール１１０によって実行することができる。例えば、１つ以上の実施形態において、ファームウェアプロバイダ１０２は、ファームウェア設定入力ファイルを生成し、ファームウェア設定入力ファイルを署名ツール１１０に送信して、固有の値を生成することができる。
【００４１】
工程２０４において、固有の値が暗号化される。任意の暗号化スキームを用いて、固有の値を暗号化することができる。一実施形態において、非対称暗号キーペア暗号化スキームを用いて、固有の値を暗号化することができる。具体的には、非対称暗号キーペアの秘密鍵を用いて、固有の値を暗号化することができる。秘密鍵は、ファームウェア設定入力ファイルの信頼性を確保するために秘密にしておく必要がある。１つ以上の実施形態において、暗号化された固有の値を例えばコードとして記憶することができる。一つ以上の特定の実施形態において、コードは、例えば証明書であってもよい。
【００４２】
工程２０２と同様に、工程２０４は、ファームウェアプロバイダ１０２又は署名ツール１１０によって実行することができる。さらに、工程２０４は、工程２０２を実行するエンティティとは異なるエンティティによって実行することができる。例えば、ファームウェアプロバイダ１０２が工程２０２を実行し、署名ツール１１０が工程２０４を実行することができる。
【００４３】
工程２０６において、コードがファームウェア設定入力ファイルに付加される。１つ以上の実施形態において、ファームウェア設定入力ファイルの最後に特殊文字を付加することによって、どこにコードを付加するのかをユーティリティ１０６が認識することができる。代わりに又は加えて、ファイルヘッダーフォーマットを使用して、認証された更新ファイルのどの部分がファームウェア設定入力ファイルであって、どの部分がコードであるかを記述することができる。コード及びファームウェア設定入力ファイルの組み合わせは、以下に説明するように、コードを用いてファームウェア設定入力ファイルを認証することができるので、認証された更新ファイルをもたらす。工程２０６は、工程２０２及び工程２０４と同様に、ファームウェアプロバイダ１０２又は署名ツール１１０によって実行することができる。
【００４４】
工程２０８において、認証された更新ファイルは、ファームウェア設定の更新を必要とするコンピュータシステムに送信される。例えば、ファームウェアプロバイダ１０２は、認証された更新ファイルをコンピュータシステム１０４に送信することができる。１つ以上の特定の実施形態において、認証された更新ファイルは、コンピュータシステム（例えば、コンピュータシステム１０４のユーティリティ１０６）上で動作する構成ツールにより受信される。
【００４５】
工程２１０において、認証された更新ファイル内のファームウェア設定入力ファイルに基づいて、第２値が生成される。認証された更新ファイルを受信したコンピュータシステムは、第２ハッシュ値を生成するアルゴリズムを含む。１つ以上の実施形態において、これらのアルゴリズムは、固有の値を生成する工程２０２と同じアルゴリズムとすることができる。しかしながら、例えば、ファームウェアプロバイダ１０２が固有の値を生成する代わりに、コンピュータシステム１０４が固有の値を生成してもよい。或いは、以下でさらに説明するように、１つ以上のアルゴリズムは、１つ以上の条件を満たす値を生成するための異なるアルゴリズムであってもよい。コンピュータシステム１０４は、１つ以上のアルゴリズムをメモリに記憶することができる。１つ以上の実施形態において、コンピュータシステム１０４は、１つ以上のアルゴリズム（例えば、１つ以上のハッシュ関数又は１つ以上のチェックサムアルゴリズム）を、ファームウェアを記憶するのと同じメモリに記憶することができる。例えば、ファームウェアストレージデバイス１０８は、１つ以上のハッシュ関数を記憶することができる。
【００４６】
工程２１２において、ファームウェア設定入力ファイルに付加されたコードが復号化されて、第３値が得られる。第３値は、第１値と同じ値である必要がある。よって、本質的に、工程２１２は、コードから第１値を回復することができる。しかし、エラーが発生する場合、悪意のある第三者が介入する場合、又は、他のタイプの問題が発生した場合、以下で説明するように、第３値が第１値と同じではない可能性がある。
【００４７】
コードは、工程２０４で用いられたスキームと同じ暗号化スキームを用いて復号化される。１つ以上の実施形態において、復号化キーは、コンピュータシステムのメモリに記憶することができる。例えば、ファームウェアストレージデバイス１０８は、復号化キーを記憶することができる。しかし、復号化キーは、コンピュータシステム内のどこにでも記憶することができる。第１値を暗号化するために非対称暗号キーペア暗号化スキームが工程２０４で用いられる場合、第３値を生成するために非対称暗号キーペア公開鍵を用いることができる。公開鍵は、ファームウェアストレージデバイス１０８内に記憶することができる。
【００４８】
工程２１４において、１つ以上のアルゴリズムを用いてファームウェア設定入力ファイルを処理して得られた第２値と、コードを復号化することにより得られた第３値とが、１つ以上の条件を満たすか否かが判別される。条件を満たすことは、ファームウェア設定の更新ファイルが認証され、ファームウェアの更新が進行することを示す。
【００４９】
１つ以上の実施形態において、１つ以上の条件は、第２値が第３値と一致することを含む。第２値が第３値と一致することは、認証された更新ファイルがファームウェアプロバイダ１０２からのものであることを証明する。よって、上記の値は第１値、第２値及び第３値と呼ばれるが、ファームウェア設定入力ファイルが上記スキームにしたがって認証される場合、第１値、第２値及び第３値は同じ値である。したがって、第１値、第２値及び第３値という用語は、説明目的であって、限定することを意図していない。
【００５０】
１つ以上の他の実施形態において、１つ以上の条件は、第２値と第３値が一致していなくても、第２値及び第３値の組み合わせが所定の条件を満たすことを含む。例えば、第２値及び第３値は、所定値に合計することができる。或いは、第２値及び第３値は、共にキーやパスワードを形成することができる。キーやパスワードは、構成ユーティリティ内の条件を満たすために必要な場合がある。
【００５１】
１つ以上の他の実施形態において、人体の署名情報を第１値に加えることができる。人体の署名情報は、第３値の復号化及び生成の前に検証することができる。
【００５２】
工程２１６において、１つ以上の条件が満たされる場合、コンピュータシステムは、ファームウェア設定入力ファイル内の設定に基づいて、ファームウェアを更新する。１つ以上の実施形態において、構成ユーティリティは、ファームウェア設定入力ファイルに基づいて、ファームウェアを変更する。１つ以上の条件が満たされない場合、コンピュータシステムは、ファームウェア設定入力ファイルに基づくファームウェアの更新を行わない。例えば、後者のような状況は、コンピュータシステムによって受信される前に、悪意のある者若しくは他のエンティティが事前にファームウェア設定入力ファイルを変更した場合、又は、悪意のある者若しくは他のエンティティが既にファームウェア設定入力ファイルを生成している場合に発生する。１つ以上の実施形態において、ファームウェアを更新しないことに加えて、１つ以上の他の条件が発生する場合がある。例えば、ファームウェアを更新しないという事象をコンピュータシステムに記録して、疑わしい行動についてユーザ（例えば、管理者）に警告することができる。代わりに又は加えて、設定された期間内に条件を満たさない状況が何度も発生する場合、ファームウェア設定の更新に関連する悪意ある行為を抑制するために、設定された期間又は無期限で、ユーザによりキャンセルされるまで、ファームウェア設定の更新に関するその後のファームウェア設定変更要求を拒否する。
【００５３】
図２のプロセス２００が上述され、特定の工程で発生するが、１つ以上の工程を削除してもよいし、１つ以上の工程の順序を変更してもよい。例えば、プロセス２００は、認証された更新ファイルの生成、及び、ファームウェア設定の更新の両方に関連する。１つ以上の実施形態において、プロセスは、ファームウェア設定入力ファイルの認証のみに関連して発生する場合がある。例えば、プロセス２００は、コンピュータシステムで認証された更新ファイルを受信した後に、工程２０８から開始することができる。或いは、プロセスは、ファームウェア設定入力ファイルの生成のみに関連して発生することができる。例えば、プロセス２００は、工程２０２から開始されるが、工程２０８及び認証された更新ファイルの送信で終了することができる。よって、本発明の態様は、図２に関連して記載された各工程を必要とすることに限定されるべきではない。
【００５４】
図２のフローチャートは、コンピュータシステム、又は、コンピュータシステムのサブコンポーネントによって実行される例示的な機械実行可能命令を表している。この例において、機械実行可能命令は、（ａ）プロセッサ、（ｂ）コントローラ、及び／又は、（ｃ）１つ以上の適切な処理デバイスによって実行されるアルゴリズムを有する。アルゴリズムは、例えば、フラッシュメモリ、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、ハードドライブ、デジタルビデオ（versatile）ディスク（ＤＶＤ）、又は、他のメモリデバイス等の有形の媒体に記憶されたソフトウェアで実施することができる。しかし、当業者であれば、アルゴリズム全体及び／又はその一部は、プロセッサ以外のデバイスによって実行され、及び／又は、従来の方法でファームウェア若しくは専用のハードウェア（例えば、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルロジックデバイス（ＦＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリートロジック等）によって実施されてもよい。例えば、インタフェースの何れか又は全てのコンポーネントは、ソフトウェア、ハードウェア、及び／又は、ファームウェアによって実装することができる。さらに、例示的なアルゴリズムが図２のフローチャートに示されているが、当業者であれば、例示的な機械実行可能命令を実行する他の多くの方法も代わりに使用できることを容易に理解するであろう。
【００５５】
図３は、システムのコンポーネントがバス３０２を用いて互いに電気的に通信する例示的なコンピュータシステム３００を示す図である。システム３００は、処理ユニット（ＣＰＵ又はプロセッサ）３３０と、各種システムコンポーネントをプロセッサ３３０に接続するシステムバス３０２と、を備え、システムコンポーネントは、システムメモリ３０４（例えば、読み出し専用メモリ（ＲＯＭ）３０６及びランダムアクセスメモリ（ＲＡＭ）３０８）を含む。システム３００は、プロセッサ３３０に直接接続されるか、近接して接続されるか、プロセッサ３３０の一部として組み込まれる高速メモリのキャッシュを含むことができる。システム３００は、システムメモリ３０４及び／又はストレージデバイス３１２からのデータを、プロセッサ３３０により素早くアクセスするために、キャッシュ３２８にコピーする。このようにして、キャッシュ３２８は、データを待つ間のプロセッサ３３０に対してパフォーマンスブーストを提供することができる。これら及び他のモジュールは、各種動作を実行するようにプロセッサ３３０を制御又は制御するように構成することができる。他のシステムメモリ３０４も同様に使用することができる。メモリ３０４は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ３３０は、任意の汎用目的プロセッサと、ハードウェアモジュール又はソフトウェアモジュール（例えば、ストレージデバイス３１２に記憶された第１モジュール３１４、第２モジュール３１６及び第３モジュール３１８）と、を含むことができる。ハードウェアモジュール又はソフトウェアモジュールは、プロセッサ３３０と、ソフトウェア命令が実際のプロセッサ設計に組み込まれる特殊用途プロセッサを制御するように構成されている。プロセッサ３３０は、実質上、自己完結型コンピューティングシステムであってもよく、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ等を含んでもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
【００５６】
１つ以上の実施形態において、ユーザとシステム３００との対話を可能にするために、入力デバイス３２０が入力機構として設けられてもよい。入力デバイス３２０は、例えば、音声用のマイクロフォン、ジェスチャ又はグラフィック入力用のタッチスクリーン、キーボード、マウス、動き入力等を含むことができる。場合によっては、マルチモーダルシステムは、ユーザがシステム３００と通信するために複数のタイプの入力を提供可能にする。この例において、出力デバイス３２２も提供される。通信インタフェース３２４は、ユーザ入力とシステム出力とを統治及び管理することができる。
【００５７】
ストレージデバイス３１２は、コンピュータによってアクセス可能なデータを記憶するための不揮発性メモリであってもよい。ストレージデバイス３１２は、例えば、磁気カセット、フラッシュメモリカード、固体メモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）３０８、読み出し専用メモリ（ＲＯＭ）３０６及びこれらのハイブリッドであってもよい。
【００５８】
コントローラ３１０は、システム３００上の専用のマイクロコントローラ又はプロセッサ（例えば、ＢＭＣ（基板管理コントローラ））とすることができる。場合によっては、コントローラ３１０は、インテリジェントプラットフォーム管理インタフェイス（ＩＰＭＩ）の一部であってもよい。さらに、場合によっては、コントローラ３１０は、システム３００のマザーボード又はメイン回路基板に埋め込むことができる。コントローラ３１０は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインタフェースを管理することができる。また、コントローラ３１０は、以下にさらに説明するように、例えばコントローラ又は周辺デバイス等のような各種システムデバイス及びコンポーネント（内部及び／又は外部）と通信することができる。
【００５９】
コントローラ３１０は、自動ハードウェア回復工程のための命令又はコマンドを生成するために、通知、警告、及び／又は、イベントに対する特定の応答を生成し、リモートデバイス又はコンポーネントと通信（例えば、電子メールメッセージ、ネットワークメッセージ等）することができる。管理者は、以下で説明するように、コントローラ３１０と遠隔通信して、特定のハードウェア障害回復工程又は動作を開始又は実行することができる。
【００６０】
また、コントローラ３１０は、コントローラ３１０によって受信されたイベント、警告及び通知を管理及び維持するためのシステムイベントログコントローラ及び／又はストレージを含むことができる。例えば、コントローラ３１０又はシステムイベントログコントローラは、１つ以上のデバイス及びコンポーネントからの警告や通知を受信し、その警告や通知をシステムイベントログストレージコンポーネントに維持することができる。
【００６１】
フラッシュメモリ３３２は、ストレージ及び／又はデータ転送に用いられるシステム３００によって用いられる電子不揮発性コンピュータストレージ媒体又はチップであってもよい。フラッシュメモリ３３２は、電気的に消去及び／又は再プログラムすることができる。フラッシュメモリ３３２は、例えば、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）、ＲＯＭ、ＮＶＲＡＭ、又は、相補型ＭＯＳ（ＣＭＯＳ）を含むことができる。フラッシュメモリ３３２は、システム３００が起動する場合に、システム３００により実行されるファームウェア３３４、及び、ファームウェア３３４に指定された構成のセットを記憶する。フラッシュメモリ３３２は、ファームウェア３３４によって用いられる構成ユーティリティを記憶することもできる。
【００６２】
ファームウェア３３４は、ＢＩＯＳ（Basic Input/Output System）又は等価物（例えば、ＥＦＩ（Extensible Firmware Interface）若しくはＵＥＦＩ（Unified Extensible Firmware Interface）等）を含むことができる。ファームウェア３３４は、システム３００が起動される度に、シーケンスプログラムとしてロードされ、実行され得る。ファームウェア３３４は、構成のセットに基づいて、システム３００に存在するハードウェアを認識、初期化及びテストすることができる。ファームウェア３３４は、システム３００上でセルフテスト（例えば、ＰＯＳＴ（Power-on-Self-Test））を実行することができる。このセルフテストは、様々なハードウェアコンポーネント（例えば、ハードディスクドライブ、光学読み取りデバイス、冷却デバイス、メモリモジュール、拡張カード等）の機能をテストする。ファームウェア３３４は、オペレーティングシステム（ＯＳ）を記憶するために、メモリ３０４、ＲＯＭ３０６、ＲＡＭ３０８、及び／又は、ストレージデバイス３１２内の領域をアドレス及び割り当てることができる。ファームウェア３３４は、ブートローダ及び／又はＯＳをロードし、システム３００の制御をＯＳに与えることができる。
【００６３】
システム３００のファームウェア３３４は、ファームウェア３３４がシステム３００内の様々なハードウェアコンポーネントをどのように制御するかを定義するファームウェア構成を含むことができる。ファームウェア構成は、システム内の様々なハードウェアコンポーネントの起動順序を決定することができる。ファームウェア３３４は、ファームウェアのデフォルト構成のパラメータとは異なる様々な異なるパラメータの設定を許可するインタフェース（例えば、ＵＥＦＩ）を提供することができる。例えば、ユーザ（例えば、管理者）は、ファームウェア３３４を用いて、クロック速度及びバス速度を指定することができる。ファームウェア３３４は、どの周辺機器がシステム３００に接続されているかを定義し、監視状態（例えば、ファン速度及びＣＰＵ温度制限）を設定し、システム３００のパフォーマンス全体及び電力使用量に影響する様々な他のパラメータを提供することができる。ファームウェア３３４は、フラッシュメモリ３３２に記憶されているように示されているが、当業者であれば、ファームウェア３３４が他のメモリコンポーネント（例えば、メモリ３０４又はＲＯＭ３０６）に記憶可能であることを理解するであろう。
【００６４】
システム３００は、１つ以上のセンサ３２６を含むことができる。１つ以上のセンサ３２６には、例えば、１つ以上の温度センサ、サーマルセンサ、酸素センサ、化学センサ、ノイズセンサ、ヒートセンサ、電流センサ、電圧検出器、気流センサ、流量センサ、赤外線温度計、熱流センサ、温度計、高温計等が含まれる。１つ以上のセンサ３２６は、例えば、バス３０２を介して、プロセッサ、キャッシュ３２８、フラッシュメモリ３３２、通信インタフェース３２４、メモリ３０４、ＲＯＭ３０６、ＲＡＭ３０８、コントローラ３１０及びストレージデバイス３１２と通信することができる。１つ以上のセンサ３２６は、１つ以上の異なる手段（例えば、集積回路（Ｉ２Ｃ）、汎用出力（ＧＰＯ）等）を介して、システム内の他のコンポーネントと通信することもできる。システム３００上の異なるタイプのセンサ（例えば、センサ３２６）は、パラメータ（例えば、冷却ファン速度、電力状態、オペレーティングシステム（ＯＳ）状態、ハードウェア状態等）をコントローラ３１０に報告することもできる。
【００６５】
図４は、本開示の記載された方法又は動作を実行するチップセットアーキテクチャを有する他の例示的なコンピュータシステム４００を示す図である。コンピュータシステム４００は、開示された技術を実施するために使用可能なコンピュータハードウェア、ソフトウェア及びファームウェアを含むことができる。システム４００は、プロセッサ４１０を有し、プロセッサ４１０は、識別された計算を実行するように構成されたソフトウェア、ファームウェア及びハードウェアを実行す可能な様々な物理的及び／又は論理的に異なるリソースを表す。プロセッサ４１０は、プロセッサ４１０から／への入出力を制御可能なチップセット４０２と通信することができる。この例において、チップセット４０２は、情報を出力デバイス４１４（例えば、ディスプレイ等）に出力し、情報を、ストレージデバイス４１６（磁気媒体、固体媒体を含む）に読み書きすることができる。チップセット４０２は、ＲＡＭ４１８からデータを読み出し、ＲＡＭ４１８にデータを書き込むこともできる。チップセット４０２とのインタフェースのために、様々なユーザインタフェースデバイス４０６とインタフェースするためのブリッジ４０４が設けられてもよい。このようなユーザインタフェースデバイス４０６は、キーボード、マイクロフォン、タッチ検出及び処理回路、ポインティングデバイス（マウス等）を含むことができる。一般に、システム４００への入力は、機械及び／又は人間が生成した様々なソースから生じ得る。
【００６６】
チップセット４０２は、異なる物理インタフェースを有する１つ以上の通信インタフェース４０８とインタフェースすることもできる。このような通信インタフェースは、有線及び無線ローカルエリアネットワーク、ブロードバンドワイヤレスネットワーク、並びに、パーソナルエリアネットワークのインタフェースを含むことができる。さらに、機器は、ユーザインタフェースデバイス４０６を介して、ユーザからの入力を受信し、適切な機能を実行することができる。
【００６７】
さらに、チップセット４０２は、電源投入の際に、コンピュータシステム４００によって実行されるファームウェア４１２と通信することができる。ファームウェア４１２は、ファームウェア構成のセットに基づいて、コンピュータシステム４００に存在するハードウェアを認識、初期化及びテストすることができる。ファームウェア４１２は、システム４００上でセルフテスト（例えば、ＰＯＳＴ）を実行することができる。セルフテストは、様々なハードウェアコンポーネント４０２〜４１０，４１４〜４１８の機能をテストすることができる。ファームウェア４１２は、ＯＳを記憶するために、メモリの領域をアドレス指定及び割り当てることができる。ファームウェア４１２は、ブートローダ及び／又はＯＳをロードし、システム４００の制御をＯＳに与えることができる。場合によっては、ファームウェア４１２は、ハードウェアコンポーネント４０２〜４１０，４１４〜４１８と通信することができる。ここで、ファームウェア４１２は、チップセット４０２及び／又は１つ以上の他のコンポーネントを介して、ハードウェアコンポーネント４０２〜４１０，４１４〜４１８と通信することができる。場合によっては、ファームウェア４１２は、ハードウェアコンポーネント４０２〜４１０，４１４〜４１８と直接通信することができる。
【００６８】
例示的システム３００，４００は、２つ以上のプロセッサ（例えば、３３０，４１０）を有することができ、又は、より高い処理能力を提供するために、ネットワーク化されたコンピューティングデバイスのグループ若しくはクラスタの一部となり得ることが理解できるであろう。
【００６９】
説明を明瞭にするために、いくつかの実施形態において、本開示は、機能ブロック（例えば、デバイス、デバイスのコンポーネント、又は、ソフトウェア若しくはハードウェア及びソフトウェアの組み合わせで実施される方法における工程やルーティン等）を含むものとして提示され得る。
【００７０】
いくつかの実施形態において、コンピュータ可読ストレージデバイス、媒体及びメモリは、例えばビットストリーム等を含むケーブルや無線信号を含むことができる。しかし、言及される場合、非一時的なコンピュータ可読ストレージ媒体は、エネルギー、キャリア信号、電磁波及び信号そのもの等の媒体を明示的に排除する。
【００７１】
上記の例における方法は、コンピュータ可読媒体から記憶されるか当該媒体から他の方法で利用可能なコンピュータ実行可能命令を用いて実施することができる。このような命令は、例えば、特定の機能又は機能グループを実行する汎用コンピュータ、専用コンピュータ、特殊用途処理デバイスを生じさせるか構成することの可能な命令及びデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例えば、バイナリ及び中間フォーマット命令（例えば、アセンブリ言語、ファームウェア又はソースコード等）であってもよい。
【００７２】
これらの開示における方法を実施するデバイスは、ハードウェア、ファームウェア、及び／又は、ソフトウェアを含むことができ、様々なフォームファクタの何れかを利用することができる。このようなフォームファクタの典型的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ、ラックマウント型デバイス、スタンドアロンデバイス等を含む。本明細書に記載された機能は、周辺機器又はアドインカードにも組み込むことができる。さらなる例として、このような機能は、異なるチップ間の回路基板上で実行されてもよいし、単一のデバイスで実行される異なるプロセスで実行されてもよい。
【００７３】
様々な実施形態は、いくつかのアプリケーションを動作させるのに用いられる１つ以上のサーバコンピュータ、ユーザコンピュータ又はコンピューティングデバイスを含む様々な動作環境で実施することができる。ユーザ又はクライアントデバイスは、任意の数の汎用パーソナルコンピュータ（例えば、標準のオペレーティングシステムを実行するデスクトップ又はラップトップコンピュータ）、及び、モバイルソフトウェアを実行しいくつかのネットワーク及びメッセージプロトコルをサポートすることができるセルラ、ワイヤレス及びハンドヘルドデバイスを含むことができる。このようなシステムは、任意の様々な市販のオペレーティングシステムと、他の既知のアプリケーション（例えば、開発及びデータベース管理）とを実行するいくつかのワークステーションを含むことができる。これらのデバイスは、他の電子デバイス（例えば、ダミー端末、シンクライアント、ゲームシステム、及び、ネットワークを介して通信可能な他のデバイス）を含むことができる。
【００７４】
本発明のいくつかの実施態様又はその一部がハードウェアで実施される範囲において、本開示は、例えば、ロジック機能をデータ信号に実行するロジックゲートを有する離散ロジック回路、適切な組み合わせのロジックゲートを有する特定用途向け集積回路（ＡＳＩＣ）、プログラム可能なハードウェア（例えば、プログラマブルゲートアレイ（ＰＧＡ））、及び／若しくは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の何れか又は組み合わせの技術を用いて実施することができる。
【００７５】
殆どの実施形態は、様々な商用プロトコル（例えば、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、ＡｐｐｌｅＴａｌｋ（登録商標））を用いて、当業者によく知られている少なくとも１つのネットワークを用いた通信をサポートする。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及び、これらの任意の組み合わせを含む。
【００７６】
これらの開示における方法を実施するデバイスは、ハードウェア、ファームウェア、及び／又は、ソフトウェアを含むことができ、様々なフォームファクタを利用することができる。このようなフォームファクタの典型的な例には、サーバコンピュータ、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、ＰＤＡ、ラックマウント型装置、スタンドアロン装置等が含まれる。本明細書で説明する機能は、周辺機器又はアドインカードに組み込むことができる。さらなる例として、このような機能は、異なるチップ間の回路基板で実行することができ、又は、単一のデバイスで実行される異なるプロセス間で実行することができる。
【００７７】
以上、本発明の様々な実施形態について説明したが、これらは例示に過ぎず、限定するものではないことを理解されたい。本発明の趣旨を逸脱することなく、開示された実施形態に対する変更を行うことができる。よって、本発明の幅及び範囲は、上述した何れの実施形態によって限定されない。むしろ、本発明の範囲は、以下の特許請求の範囲及びその均等物に基づいて定義されるべきである。
【００７８】
本発明は、１つ以上の実施形態に関して図示及び説明されているが、当業者であれば、本明細書及び図面を読んで理解すれば、同等の変更及び修正を行い得るであろう。さらに、本発明の特定の特徴が、いくつかの実施形態のうち１つのみに開示されているかもしれないが、このような特徴は、所定の又は特定の用途に望ましく及び有利であるように、他の実施形態の１つ以上の特徴と組み合わせることができる。
【００７９】
本明細書で使用される用語は、特定の実施形態を説明する目的のみのものであって、限定することを意図するものではない。本明細書で使用されているように、「１つ」という単数形は、文脈上特に明示的に示されていない限り、複数形も含むことが意図されている。また、「含む」、「有する」又はこれらの変形は、詳細な説明及び／又は特許請求の範囲で使用される限りにおいて、「備える」と同様の態様で包含する。
【００８０】
特に定義されない限り、本明細書で使用される全ての用語（技術用語及び科学用語を含む）は、当業者によって一般的に理解されるのと同じ意味を有する。さらに、常用辞典において定義された用語は、関連技術の文脈における意味と一致する意味を有すると解釈されるべきであり、本明細書で明示的に定義されない限り、理想化又は過度に形式的な意味を有すると解釈されるべきではない。
【符号の説明】
【００８１】
１００，３００…システム
１０２…ファームウェアプロバイダ
１０４，４００…コンピュータシステム
１０６…構成ユーティリティ
１０８…ファームウェアストレージデバイス
１１０…署名ツール
２００…プロセス
２０２，２０４，２０６，２０８，２１０，２１２，２１４，２１６…工程
３０２…システムバス
３０４…メモリ
３０６…読み出し専用メモリ（ＲＯＭ）
３０８，４１８…ランダムアクセスメモリ（ＲＡＭ）
３１０…コントローラ
３１２，４１６…ストレージデバイス
３１４…第１モジュール
３１６…第２モジュール
３１８…第３モジュール
３２０…入力デバイス
３２２，４１４…出力デバイス
３２４，４０８…通信インタフェース
３２６…センサ
３２８…キャッシュ
３３０，４１０…プロセッサ
３３２…フラッシュメモリ
３３４，４１２…ファームウェア
３３６…ディスプレイ
４０２…チップセット
４０４…ブリッジ
４０６…ユーザインタフェースデバイス
【図１】
2020025243.tif 000003
【図２】
2020025243.tif 000004
【図３】
2020025243.tif 000005
【図４】
2020025243.tif 000006