(57)【要約】ＵＥＦＩ準拠装置内のファームウェアが、ＵＥＦＩ仕様ドライバ署名および認証された変数構成要素を実行し、一方で同時に、承認されたキーのライブラリならびに認可および禁止されたプログラムのリストを保持するシステムセキュリティデータベースを不正な変更から保護することを可能にするメカニズムが述べられる。【選択図】なし
2014513348.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムモジュールから署名されたシステムセキュリティデータベース修正要求を受信し、前記要求はＵＥＦＩ準拠計算装置内のシステムセキュリティデータベースの変更の実行を求め、前記要求はファームウェア要求受信モジュールにより処理され、前記要求受信モジュールは、前記計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作しているときに実行可能であるステップと、
前記要求受信モジュールを用いて、前記ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）への前記ＣＰＵの移行をトリガするステップと、
システムセキュリティデータベースの変更実行のための前記処理された要求の正当性を、前記ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア照合モジュールで照合するステップと、
前記システムセキュリティデータベースの変更実行のための前記処理された要求内に含まれた署名を検証し、前記検証は前記ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア検証モジュールを用いて起こるステップと、
ファームウェアアップデートモジュールを用いて要求された前記システムセキュリティデータベースの前記変更を実行し、前記変更は前記署名の検証が成功した後に起こり、前記ファームウェアアップデートモジュールは前記ＣＰＵがＳＭＭであるときのみ実行可能であるステップと、を含む、
統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のシステムセキュリティデータベース要求の処理方法。
【請求項２】
前記ファームウェア検証モジュールが、前記システムセキュリティデータベース内に格納されたキーを用いてシステムセキュリティデータベースの変更を実行するための前記要求内の前記署名を検証する、請求項１に記載の方法。
【請求項３】
前記ファームウェア照合モジュールの前記使用のため、前記ファームウェア要求受信モジュールで、システムセキュリティデータベースの変更実行のための前記要求に関連するメモリ位置情報を保存し、前記メモリ位置情報はＳＭＭへの前記移行をトリガする前に保存されるステップをさらに含む、
請求項１に記載の方法。
【請求項４】
前記照合が、メモリ内の前記保存された位置を予め記述された要求受信モジュールロードアドレスに対しチェックする前記ファームウェア照合モジュールによって実行される、請求項３に記載の方法。
【請求項５】
前記ファームウェア要求受信モジュール、前記ファームウェア照合モジュール、前記ファームウェア検証モジュール、前記ファームウェアアップデートモジュールおよび前記システムセキュリティデータベースがフラッシュＲＯＭ内に格納されている、請求項１に記載の方法。
【請求項６】
ＵＥＦＩ準拠装置において、実行可能なアップデートプログラム、ファームウェア格納部の置換イメージ、および前記置換イメージの署名されたハッシュを含む、ダウンロードされたアップデートパッケージを受信するステップと、
前記ＵＥＦＩ準拠計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作している間、前記アップデートプログラムで、前記ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）への前記ＣＰＵの移行をトリガするステップと、
前記署名および置換イメージを、前記ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアで検証するステップと、
前記ファームウェア格納部を前記置換イメージでアップデートし、前記アップデートは前記ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアを用いて起こるステップと、を含む、
統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のフラッシュ読み出し専用メモリ（ＲＯＭ）のファームウェア格納領域のアップデート方法。
【請求項７】
前記ＵＥＦＩ準拠装置が、前記検証後および前記ファームウェア格納部の前記アップデート前にリブートまたはシャットダウンする、請求項６に記載の方法。
【請求項８】
前記アップデートプログラムで、前記アップデートパッケージに関連するメモリ位置情報を保存し、前記メモリ位置情報はＳＭＭへの前記移行のトリガの前に保存されるステップをさらに含む、
請求項６に記載の方法。
【請求項９】
統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のシステムセキュリティデータベース要求の処理についてのコンピュータ実行可能な命令を保持する、非一過性コンピュータ可読媒体であって、前記命令が、実行時に、少なくとも１つの計算装置に、
オペレーティングシステムモジュールから署名されたシステムセキュリティデータベース修正要求を受信させ、前記要求は前記ＵＥＦＩ準拠計算装置内のシステムセキュリティデータベースの変更の実行を求め、前記要求はファームウェア要求受信モジュールにより処理され、前記要求受信モジュールに関するコードは、前記計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作しているときにアクセス可能であり、
前記要求受信モジュールを用いて、前記ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）への前記ＣＰＵの移行をトリガさせ、
システムセキュリティデータベースの変更実行のための前記処理された要求の正当性を、前記ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア照合モジュールで照合させ、
前記システムセキュリティデータベースの変更実行のための前記処理された要求内に含まれた署名を検証させ、前記検証は前記ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア検証モジュールを用いて起こり、
ファームウェアアップデートモジュールを用いて要求された前記システムセキュリティデータベースの前記変更を実行させ、前記変更は前記署名の検証が成功した後に起こり、前記ファームウェアアップデートモジュールは前記ＣＰＵがＳＭＭであるときのみ実行可能である、
媒体。
【請求項１０】
前記ファームウェア検証モジュールが、前記システムセキュリティデータベース内に格納されたキーを用いてシステムセキュリティデータベースの変更を実行するための前記要求内の前記署名を検証する、請求項９に記載の媒体。
【請求項１１】
前記命令が、実行時に、前記計算装置にさらに、前記ファームウェア照合モジュールの使用のため、前記ファームウェア要求受信モジュールで、システムセキュリティデータベースの変更実行のための前記要求に関連するメモリ位置情報を保存させ、前記メモリ位置情報はＳＭＭへの前記移行をトリガする前に保存される、
請求項９に記載の媒体。
【請求項１２】
前記照合が、メモリ内の前記保存された位置を予め記述された要求受信モジュールロードアドレスに対しチェックする前記ファームウェア照合モジュールによって実行される、請求項１１に記載の媒体。
【請求項１３】
統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のフラッシュ読み出し専用メモリ（ＲＯＭ）のファームウェア格納部領域のアップデートについてのコンピュータ実行可能な命令を保持する非一過性コンピュータ可読な媒体であって、前記命令が、実行時に、少なくとも１つの計算装置に、
前記ＵＥＦＩ準拠装置において、実行可能なアップデートプログラム、ファームウェア格納部の置換イメージ、および置換イメージの署名されたハッシュを含むダウンロードされたアップデートパッケージを受信させ、
前記アップデートプログラムで、前記ＵＥＦＩ準拠計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作している間、前記ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へのＣＰＵの移行をトリガさせ、
前記署名および置換イメージを、前記ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアで検証させ、
前記ファームウェア格納部を前記置換イメージでアップデートさせ、前記アップデートは前記ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアを用いて起こる、
媒体。
【請求項１４】
前記ＵＥＦＩ準拠装置が、前記検証後および前記ファームウェア格納部の前記アップデート前にリブートまたはシャットダウンする、請求項１３に記載の媒体。
【請求項１５】
前記命令が、実行時に、前記計算装置にさらに、前記アップデートプログラムで、前記アップデートパッケージに関連するメモリ位置情報を保存させ、前記メモリ位置情報はＳＭＭへの前記移行をトリガする前に保存される、請求項１３に記載の媒体。
【請求項１６】
オペレーティングシステムモジュールからの署名されたシステムセキュリティデータベース修正要求を受信および処理するファームウェア要求受信モジュールであって、前記要求はＵＥＦＩ準拠計算装置内のシステムセキュリティデータベースの変更の実行を求め、要求受信モジュールは、前記計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作しているときに実行可能であり、前記処理の後に、前記ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）への前記ＣＰＵの移行をトリガするファームウェア要求受信モジュールと、
システムセキュリティデータベースの変更実行のための前記処理された要求の正当性を照合し、前記ＣＰＵがＳＭＭであるときのみ実行するファームウェア照合モジュールと、
システムセキュリティデータベースの変更実行のための前記処理された要求内に含まれた署名を検証し、前記ＣＰＵがＳＭＭであるときのみ実行するファームウェア検証モジュールと、
前記署名の検証が成功した後に、前記システムセキュリティデータベースの前記要求された変更を実行し、前記ＣＰＵがＳＭＭであるときのみ実行するファームウェアアップデートモジュールと、
を実行するよう構成された中央処理装置を備える、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置。
【請求項１７】
前記ファームウェア検証モジュールが、前記システムセキュリティデータベース内に格納されたキーを用いてシステムセキュリティデータベースの変更を実行するための前記要求内の前記署名を検証する、請求項１６に記載の装置。
【請求項１８】
ＵＥＦＩ準拠計算装置内のフラッシュ読み出し専用メモリ（ＲＯＭ）のファームウェア格納領域をアップデートするための実行可能アップデートプログラムを含み、前記ファームウェア格納部の少なくとも一部分の置換イメージ、および前記置換イメージの署名されたハッシュをさらに含み、前記アップデートプログラムがノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へのＣＰＵの移行をトリガする、ダウンロードされたアップデートパッケージと、
前記ＣＰＵがＳＭＭであるときのみ前記署名および前記置換イメージの検証を実行する、前記署名および前記置換イメージを検証するＳＭＭ常駐ファームウェアと、
前記ＣＰＵがＳＭＭであるときのみ前記ファームウェア格納部をアップデートする、前記ファームウェア格納部を前記置換イメージでアップデートするＳＭＭ常駐ファームウェアと、
を実行するよう構成された中央処理装置（ＣＰＵ）を備える、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容が本願中に引用をもって援用された、“Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｒｅｑｕｅｓｔｓ  ｔｏ  Ａｌｔｅｒ  ａ  Ｓｙｓｔｅｍ  Ｓｅｃｕｒｉｔｙ  Ｄａｔａｂａｓｅ  ｉｎ  ａ  Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ（ＵＥＦＩ）−Ｃｏｍｐｌｉａｎｔ  Ｄｅｖｉｃｅ”と題する２０１１年４月８日出願の米国仮特許出願番号第６１／４７３２３４号に関連し、これに基づいて優先権を主張する。
【背景技術】
【０００２】
統合拡張ファームウェアインタフェース（ＵＥＦＩ）は、非営利産業団体により作成された仕様であり、パーソナルコンピュータ（ＰＣ）のような（しかしこれに限定されることはない）計算装置の、オペレーティングシステムと内蔵されたファームウェアの間のプログラミングインタフェースを記載したものである。ＵＥＦＩ仕様は、計算装置が電圧を印加された状態から十分な運転状態に組織的に移行させることの可能なツールのセットを記載している。計算装置は装置に内蔵されたファームウェアにより初期化され、このファームウェアは、オペレーティングシステムのブートを容易にするさまざまなソフトウェアサービスを提供すると共に、オペレーティングシステムのブート後にも引き続き利用可能な、これらのサービスのより小さいサブセットを提供する、さまざまなソフトウェアサービスを提供する。ＵＥＦＩ仕様は所望の結果を示すが、内部の実装方法については意図的に細かく規定していない。ＵＥＦＩファームウェア仕様は、業界が以前使用し一般的にレガシーＢＩＯＳとして知られる初期のＯＳ／ファームウェアインタフェースに代わるものである。
【０００３】
ＵＥＦＩ仕様は、公開／プライベートキー暗号技術を用いて、他者からのソフトウェアに事前に「署名」することを可能にする、ドライバ署名チェックと呼ばれる機能を提供する。この署名は、このソフトウェアの作動を可能にする前に、計算装置のファームウェアにより検証される。署名チェックは、オプションの構成要素（プラグインボード）を構成するのに追加されるソフトウェア、および初期ブートステップ（ＯＳブートローダ）のためにオペレーティングシステムにより供給されるソフトウェアのみを対象に行われる。署名チェックは、承認されたキーのライブラリを用いて遂行される。不正なソフトウェア構成要素は、署名チェックを侵害するおそれがあるので、計算装置は、そのような不正なソフトウェア構成要素に、承認されたキーのライブラリを修正させないよう配慮しなければならない。
【０００４】
計算装置内で実行されるとき、ＵＥＦＩファームウェアに関する機械コードおよびファームウェアが使用する全ての持続的データは、読み出し専用メモリ（ＲＯＭ）内にある。多くの場合、ＲＯＭはフラッシュＲＯＭとして知られる電気的に消去可能なシリコンデバイスである。フラッシュＲＯＭは、電気コマンドにより消去可能であり、その後個々の構成要素を書き込むことが可能であり、データを無期限に保持するという特性を有する。計算装置に電力が供給されると、システムはリセットと呼ばれるプロセスを実行し、プロセスは状態を公知の状況にクリアし、ファームウェアの実行を開始する。ファームウェアは、フラッシュＲＯＭから読み出される。様々なサービスのうちで、ファームウェアは、計算装置に関するオペレーティングシステムをメモリ内にロードするブートプロセスが実行可能になるまでの計算装置の動作を担当する。ロード後は、オペレーティングシステムが計算装置の通常の動作を担当する。計算装置のアンチウイルスプログラムが、機能開始前にオペレーティングシステムがロードされることを必要とすること点に注目すべきである。
【０００５】
フラッシュＲＯＭの内容を、いくつかの機能部分または領域に論理的に分割してもよい。そのような領域の１つがファームウェア格納部であり、ファームウェア格納部は、起動ファームウェアおよびセキュリティファームウェアモジュールのロード可能なイメージを有し、ファームウェア格納部をアップデートする許可を与えられたエンティティを除くあらゆるエンティティによる変更から保護されなければならない。認証された変数領域または認証された変数格納部と呼ばれる第２の領域は、ＵＥＦＩ仕様で定義された認証された変数を保持し、ＵＥＦＩで定義されたセキュリティ情報（セキュリティデータベース）を保持するために使用される。ＵＥＦＩ仕様で定義された情報に加え、認証された変数格納部を、コンピュータの最終的な使用に関連するユーザが定義したデータを格納するのに使用することが可能である。それがセキュリティデータおよび場合によっては機密性の高いユーザデータを含むので、ＵＥＦＩ仕様は、認証された変数領域／格納部を、セキュリティデータベース内の識別キーデータの存在によって認証されたものを除くあらゆるエンティティによる変更から保護しなければならないとしている。第３の領域であるＵＥＦＩ変数格納部は、ユーザプログラムによって自由にアップデートすることの可能な、より低いセキュリティ情報を有する。種々のプラットフォーム上で、それぞれ独自のアップデート制限があるいくつかの他の領域が存在し、本明細書に記載する方法を、同様にこれらの領域の不正な変更の防止に応用可能である。
【０００６】
計算装置は中央処理装置（ＣＰＵ）として知られる１つまたは複数の構成要素を有し、中央処理装置は動作時には、フラッシュＲＯＭからの読み出しに加えて、フラッシュＲＯＭを消去および／または書き込みする入出力コマンドを実行することも可能である。ＣＰＵは、ノーマル動作モード、およびシステム管理モード（ＳＭＭ）と呼ばれる第２の動作モードを有する。ＣＰＵは、ノーマル動作モードでは、ＳＭＭ専用のいくつかのメモリ領域を除くコンピュータの全ての構成要素にアクセス可能である。対照的に、ＳＭＭで動作中のとき、ＣＰＵは専用メモリを含む計算装置の全ての構成要素にアクセスすることが可能である。ＣＰＵがＳＭＭで動作中であることを示すことが可能な電気信号を、計算装置の回路内で生成することが可能である。ＣＰＵ装置を、ファームウェアにより引き起こされるものを含む、システム管理割り込み（ＳＭＩ）イベントと呼ばれる多数のトリガによって、ノーマル動作モードからＳＭＭに移行させてもよい。ここで実際に使用できるトリガは、システム設計により互いにいくぶん異なるが、プラットフォームが適切にトリガされた場合は常に、メインメモリ内の実行が直ちに中止され、ＳＭＭメモリ内の特定の位置で実行が開始する。いくつかの計算装置はまた、システムがＳＭＭであるかどうか検出可能で、システムがＳＭＭでないときフラッシュＲＯＭの消去および書き込み動作を不可にすることが可能なハードウェア回路を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
残念なことに、現在、ＰＣのような計算装置の適切な動作を損傷または失わせる明らかな意図を持つ、不正なサードパーティが作成した様々なソフトウェアが存在する。「コンピュータウィルス」または「マルウェア」と呼ばれるこれらの不正なソフトウェア構成要素が、予防的（例えばアンチウィルス）ソフトウェアがロードされる前に計算装置の制御を握るためにブートプロセスを攻撃することが、ますます多くなってきている。ブート攻撃ソフトウェアの一例は、ルートキットまたは「トロイブートウィルス」として知られている。
【０００８】
ルートキットまたはトロイブートウィルスによるファームウェアへのアクセスを可能にすることによって計算装置のセキュリティを損なうことなく、ファームウェアおよびフラッシュＲＯＭ（または他のＲＯＭ）内に含まれる関連したデータを定期的にアップデートする必要がある。フラッシュＲＯＭがブロックライトイネーブルとして知られる固有の保護装置を有してもよいが、これらは、システム動作中アップデートが必要で、一方でアップデートが正式な認証機関によってのみ行われるように制限するフラッシュ常駐データ項目の保護には適切でない。固有のフラッシュＲＯＭ保護は、一般に、設定されたときサブ領域への書き込みを防ぐビットのアレイで構成される。この種の完全な書き込み防止方法では、しかし、正式な認証機関による選択的アップデートが不可能である。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、ＵＥＦＩ準拠装置内のファームウェアがＵＥＦＩ仕様ドライバ署名チェックおよび認証された変数構成要素を実行するのを可能にすると同時にフラッシュＲＯＭの領域の不正な変更を防止するメカニズムを提供する。本明細書に記載されたプロセスにより、（１）セキュリティデータベースを格納したフラッシュＲＯＭの認証された変数領域、（２）ファームウェアモジュールのロード可能なイメージを格納したフラッシュＲＯＭファームウェア格納部の該当部分、および（３）許可をチェックしフラッシュＲＯＭのセキュリティデータベースおよびファームウェア格納領域のアップデートを実行するファームウェアモジュールのＳＭＭメモリ内の実行可能なイメージを含む、セキュリティ上重要な多数の構成要素が、計算装置を悪意あるソフトウェアによる攻撃に対して脆弱にするおそれのある不正な変更から保護される。認証された変数領域内に格納されたセキュリティデータベースは、承認されたキーのライブラリならびに許可および禁止されたプログラムのリストを含む種々の情報を保持し、一方でファームウェアモジュールのロード可能なイメージを格納したファームウェア格納部の前記部分は、起動ファームウェアおよびセキュリティファームウェアモジュールの両方を有する。より具体的にいうと、本発明の実施形態は、ＣＰＵがＳＭＭであるときのみアクセスおよび実行が可能なファームウェアモジュールを使用する。結果として、本発明のファームウェアモジュールはＯＳまたはユーザプログラムによる調査および変更から隠され、ＵＥＦＩ署名チェックのセキュリティ処理および他の方法を、観察または修正が困難な方法で実行することができる。
【００１０】
一実施形態では、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のシステムセキュリティデータベース要求の処理方法は、オペレーティングシステムモジュールから署名されたシステムセキュリティデータベース変更要求を受信するステップを含む。署名された要求は、ＵＥＦＩ準拠計算装置内のシステムセキュリティデータベースの変更の実行を求める。要求は、計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作しているときにアクセス可能なコードで構成されたファームウェア要求受信モジュールにより処理される。本方法は、要求受信モジュールを用いて、ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へＣＰＵを移行させ、システムセキュリティデータベースの変更実行のための処理された要求の正当性を、ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア照合モジュールで照合する。本方法はまた、システムセキュリティデータベースの変更実行のための処理された要求内に含まれた署名を検証する。検証は、ＣＰＵがＳＭＭであるときのみ実行可能なファームウェア検証モジュールを用いて起こる。本方法は、要求内の署名の検証に成功した後に、ファームウェアアップデートモジュールを用いて要求されたシステムセキュリティデータベースの変更を実行する。ファームウェアアップデートモジュールはＣＰＵがＳＭＭであるときのみ実行可能である。
【００１１】
別の一実施形態では、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置内のフラッシュ読み出し専用メモリ（ＲＯＭ）のファームウェア格納領域のアップデート方法は、ＵＥＦＩ準拠装置において、実行可能なアップデートプログラム、ファームウェア格納部の置換イメージ、および置換イメージの署名されたハッシュを含む、ダウンロードされたアップデートパッケージを受信するステップを含む。本方法はまた、ＵＥＦＩ準拠計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作している間、アップデートプログラムで、ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へのＣＰＵの移行をトリガするステップも含む。本方法はさらに、署名および置換イメージを、ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアで検証し、ファームウェア格納部を置換イメージでアップデートする。アップデートは、ＣＰＵがＳＭＭであるときのみ実行可能なＳＭＭ常駐ファームウェアを用いて起こる。
【００１２】
一実施態様においては、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置は、ファームウェア要求受信モジュールを実行するよう構成された中央処理ユニット（ＣＰＵ）を有する。要求受信モジュールは、オペレーティングシステムモジュールからの署名されたシステムセキュリティデータベース修正要求を受信および処理する。要求は、ＵＥＦＩ準拠計算装置内のシステムセキュリティデータベースの変更の実行を求める。要求受信モジュールは、計算装置内の中央処理装置（ＣＰＵ）がノーマルＣＰＵモードで動作しているときに実行可能であり、受信された要求の処理の後に、ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へのＣＰＵの移行をトリガする。ＣＰＵはまた、システムセキュリティデータベースの変更実行のための処理された要求の正当性を照合するファームウェア照合モジュールを実行する。ファームウェア照合モジュールは、ＣＰＵがＳＭＭであるときのみ実行する。ＣＰＵは、さらにファームウェア検証モジュールを実行する。ファームウェア検証モジュールは、システムセキュリティデータベースの変更実行のための処理された要求内に含まれた署名を検証する。ファームウェア検証モジュールも、ＣＰＵがＳＭＭであるときのみ実行する。ＣＰＵはまた、ファームウェアアップデートモジュールも実行する。ファームウェアアップデートモジュールは、署名の検証に成功した後に、システムセキュリティデータベースの要求された変更を実行する。ファームウェアアップデートモジュールは、ＣＰＵがＳＭＭであるときのみ実行する。
【００１３】
別の一実施形態では、統合拡張ファームウェアインタフェース（ＵＥＦＩ）準拠計算装置は、ＵＥＦＩ準拠計算装置内のフラッシュ読み出し専用メモリ（ＲＯＭ）のファームウェア格納領域をアップデートするための実行可能アップデートプログラムを含む、ダウンロードされたアップデートパッケージを実行するよう構成されたＣＰＵを有する。アップデートパッケージはさらに、ファームウェア格納部の少なくとも一部分の置換イメージ、および置換イメージの署名されたハッシュを含む。アップデートプログラムは、ノーマルＣＰＵモードからシステム管理モード（ＳＭＭ）へのＣＰＵの移行をトリガする。装置内のＣＰＵはまた、署名および置換イメージを検証するＳＭＭ常駐ファームウェアも実行する。署名および置換イメージを検証するＳＭＭ常駐ファームウェアは、ＣＰＵがＳＭＭモードであるときのみ実行する。また装置内のＣＰＵは、ファームウェア格納部を置換イメージでアップデートするＳＭＭ常駐ファームウェアを実行する。ファームウェア格納部を置換イメージでアップデートするＳＭＭ常駐ファームウェアは、ＣＰＵがＳＭＭモードであるときのみ実行する。
【００１４】
本明細書に組み入れられ本明細書の一部を構成する添付の図は、本発明の１つまたは複数の実施形態を示し、発明を実施するための形態とともに本発明の説明を補助する。
【図面の簡単な説明】
【００１５】
【図１】ＵＥＦＩ準拠装置内のファームウェアモジュールを使用するために本発明の一実施形態により実行されるステップの例示的なシーケンスを示す。
【図２】フラッシュＲＯＭのファームウェア格納部をアップデートする目的でＵＥＦＩ準拠装置内のファームウェアモジュールを使用するために本発明の一実施形態により実行されるステップの例示的なシーケンスを示す。
【図３】本発明の実施形態を実践するのに適した例示的な環境を示す。
【発明を実施するための形態】
【００１６】
本発明の複数の実施形態は、ＵＥＦＩ準拠計算装置が、システムセキュリティデータベース内に保持された承認されたキーのライブラリおよびその他の情報を改ざんするマルウェアの能力を大きく制限するようにＵＥＦＩ仕様で記述された、ソフトウェアアップデートのドライバ署名チェックを実行するメカニズムを提供する。システムセキュリティデータベースおよび本明細書で述べる技術に関連した情報を保持する認証された変数へのアクセスを制限することにより、ＵＥＦＩで想定されたセキュリティ処理を、ＳＭＭで行われるように限定することで実装可能である。ＳＭＭメモリは、ＯＳまたは他のプログラムによる調査から隠されているので、不正なサードパーティがセキュリティ処理を観察しその後変更する能力が大幅に抑えられる。
【００１７】
ＵＥＦＩ仕様の主要なセキュリティ機能のうちの１つは、署名チェックを必要とするいくつかのタイプのソフトウェアアップデートの実行を許可または禁止された、許可されたプログラムおよび禁止されたプログラムのリスト、ならびにこれらのリストに追加可能なエージェントの識別情報が、ＵＥＦＩ準拠計算装置により保持されることである。しかし、リストを変更しエージェントを許可するコンピュータ命令が（ＣＰＵがノーマル動作モードにあるときアクセス可能な）ノーマルメモリ内に存在する場合、命令は正当なセキュリティソフトウェアからではなく同一のメモリスペース内で動作する悪意のあるソフトウェアからである可能性があるので、命令の信頼性を判断する能力は大きく損なわれる。本発明の実施形態は、製造業者により承認およびチェックされたソフトウェアのみがＳＭＭメモリ内に常駐でき、全ての指定されたセキュリティアップデートがＣＰＵがＳＭＭであるときのみ処理されることを確実にすることで、この問題に対処する。
【００１８】
本発明の複数の実施形態は、本明細書に記載された安全なファームウェアアップデートプロセスのみによって加えられた出荷後の変更を経たファクトリーイメージで指定およびロードされていない、あらゆるソフトウェアの実行前に、ＳＭＭメモリへのアクセスを遮断およびロックする。このアクセスおよび変更制限は、計算装置がＵＥＦＩ仕様で想定された署名チェックを実行する能力を大幅に強化する。アップデート要求の安全な処理に焦点を当てたファームウェアモジュールの使用を通して、要求が確実に有効なエンティティからのみ生じるようにアップデートを管理してもよい。
【００１９】
図１は、ＵＥＦＩ準拠装置内のファームウェアモジュールを使用するために本発明の実施形態が実行する例示的なステップシーケンスを示す。シーケンスは、署名チェックの実行に使用される承認されたキーのライブラリを含むシステムセキュリティデータベースを保持する変数などの認証された変数の変更を必要としうる、ソフトウェアアップデートについての署名された要求をファームウェア要求受信モジュールが受信したときに開始する（ステップ１０２）。要求を、ＵＥＦＩランタイムインタフェースを介して受信してもよい。ファームウェア要求受信モジュールはＣＰＵがノーマルモードで動作中のときに動作可能およびアクセス可能であることに注目すべきである。要求を受信すると、ファームウェア要求受信モジュールは要求フォーマットをチェックし、ＳＭＭベースのコードの使用のため特定のメモリ位置情報を保存し、要求の処理のためシステムプラットフォームに適した特定の方法でＣＰＵをＳＭＭに移行させる（ステップ１０４）。例えば、いくつかのシステムでは、ＳＭＩ割り込みの呼び出しにより移行がトリガされてもよい。ＣＰＵがＳＭＭで作動すると、ＣＰＵがＳＭＭで動作中のときのみ動作するファームウェア照合モジュールが、要求を受信し、ＳＭＭ要求のメモリ内の位置を予め記述された要求受信モジュールロードアドレスに対しチェックすること、およびメモリ内のパッケージモジュールのイメージを調査してイメージが変更されていないことを確認することによって、それが実際にファームウェア要求受信モジュールからのものであるか否かを照合する（ステップ１０６）。要求が正しいことが立証されなければ、要求は拒否される（ステップ１０８）。無効な要求が、警告の表示またはログ、およびアップデートを要求しているソフトウェアへのＵＥＦＩが定義したエラーコードの返送をトリガしてもよいことが理解されるだろう。要求が要求受信モジュールからくるものと立証されれば、ＳＭＭでのみ動作可能なファームウェア検証モジュールは、データベースアップデート要求内に含まれる署名情報を調査し、システムセキュリティデータベース内の少なくとも１つのキーを用いて署名チェックを実行する（ステップ１１０）。他の実施形態では、システムがセキュリティがより高いかまたはより低い状況で動作可能であり、署名チェックについての実際のポリシーまたは規則はシステムの状態によって異なってもよいことに注目すべきである。これら状況の違いにかかわらず、本発明の実施形態に関しては、保護されたシステムセキュリティデータベース内に記録された状態情報に従って、署名チェックに現在適用可能なポリシーがＳＭＭ常駐モジュールによって適用される。
【００２０】
計算装置は、認証された変数アップデート検証プロセスの一部として、公開／プライベートキー暗号化を使用してもよい。アップデート要求は、内容および内容の少なくとも複数の部分の署名されたハッシュを有してもよく、前記ハッシュは要求するエンティティが保持するプライベートキーにより署名または暗号化されている。検証プロセスの一部として、検証モジュールは、同一のハッシングアルゴリズムを用いて署名されたアップデート内容の前記部分のハッシュを再生成し、署名されたハッシュをシステムセキュリティデータベースからの対応する許可された公開キーで復号し、元のハッシュを新しいハッシュと比較してもよい。許可されたキーがシステムセキュリティデータベース内に存在しない、および／またはハッシュが同一でない場合、要求は無効であり（ステップ１１２）、アップデートは拒否される。要求が有効と判断されれば、ＣＰＵがＳＭＭのときのみ動作するファームウェアアップデートモジュールは、要求を処理し、フラッシュＲＯＭをアップデートする（ステップ１１４）。
【００２１】
一実施形態では、ＣＰＵがノーマルモードのとき動作するノンセキュアファームウェア要求受信モジュールを、署名アップデート制限で保護されていないフラッシュ領域のアップデート要求の受信に使用してもよい。ノンセキュアファームウェア要求受信モジュールは、複数の要求をパッケージにして処理のためＳＭＭを始動してもよい。ＳＭＭ始動後に、要求された修正をフラッシュＲＯＭのノンセキュアな領域上で実行する、ＳＭＭで作動するファームウェアモジュールにより、これらの要求を受信し処理してもよい。フラッシュのＳＭＭベースの保護が装置全体または複数の装置を対象としており、従って全てのフラッシュの変更はＳＭＭを経由しなければならないので、この処理が実行される。
【００２２】
一実施形態では、計算装置は、ＳＭＭ外部で起こるフラッシュ消去および書き込み動作をディセーブルすることにより、フラッシュの保護に使用される回路を制御する、ファームウェアモジュールを有してもよい。計算装置への電力供給後にファームウェアが実行を開始するとき、フラッシュ保護回路は動作していない。従って、あらゆる信頼されないファームウェアの導入前に、プラットフォーム固有の動作を実行してブート動作の適切なポイントでフラッシュ保護回路を有効にするファームウェアモジュールが提供される。設定されると、フラッシュ保護回路はリセットによる場合を除き可逆性がない。システムはリセット時点でフラッシュＲＯＭから得られた信頼できるコードに戻るので、このアルゴリズムは、システム動作のいかなるポイントにおいても、フラッシュファームウェア格納部が信頼されないコードによって変更されないようにする。
【００２３】
図２は、本明細書に記載の機構を使用してフラッシュＲＯＭのファームウェア格納領域の全てまたは一部分をアップデートするプロセスを実行する、例示的な一連のステップを示す。プロセスは概ね図１の記載と同様であり、多数の共用のファームウェア構成要素の再使用、およびファームウェアリソースの効率的使用を可能にするが、いくつかの違いがある。このシーケンスは、ファームウェアアップデートパッケージがＵＥＦＩ準拠装置にダウンロードされ実行されるときに開始する（ステップ２０２）。アップデートパッケージは、インストールされたオペレーティングシステム内で機能するよう設計された実行可能プログラムである、アップデート始動プログラムを含むいくつかの部分を有する。ダウンロードされたアップデートパッケージは、アップデート始動プログラムに加えて、ファームウェア格納部の全てまたは選択された部分の置換イメージ、ならびに対象のシステムのシステム識別子を含むがそれらに限定されない、アップデートプログラムへの命令を有するデータブロックを有する。アップデートパッケージは、置換イメージの署名されたハッシュも有する。新しいイメージおよびデータブロックの署名されたハッシュは、認証された変数領域へのアップデートの署名について前述したのと同様に、ＵＥＦＩ仕様によって定義された暗号化方法によって作成される。アップデートパッケージの全ての部分に関するバイトは、ＯＥＭサイトにおいて署名され、ファームウェアによってチェックされる。ダウンロードされたアップデートパッケージは、ダウンロードのどの部分も生成後に変更されていないとファームウェアにより判定可能な方法で署名される。
【００２４】
一実施形態では、ダウンロードされたパッケージが、上述の構成要素に加えて、フラッシュイメージの消去および書込の実際のプロセスを実行する追加のファームウェアモジュールを有してもよい。追加のファームウェアモジュールも、存在するならば前述のプロセスにより同様に署名され検証される。
【００２５】
さらに詳細には、アップデート始動プログラムはアップデートパッケージの他の部分をメモリ内にロードし、その完全性をチェックする。ダウンロード完全性チェックが成功すれば、アップデート始動プログラムは、ＳＭＭで行われる以降の動作で使用するメモリ位置情報を作成し、アップデート対象の装置プラットフォームに適した方法を用いてＳＭＭに移行する要求を送る（ステップ２０４）。特定のオペレーティングシステムで作動し、アップデート対象のプラットフォームで正しく機能するよう本発明の範囲内で特化された、それぞれ異なる多数の類似のアップデート始動プログラムがあってもよいことが理解されるだろう。要求の結果として、ＣＰＵはプラットフォームに適した方法でＳＭＭへ移行する（ステップ２０４）。一実施形態では、ＣＰＵがＳＭＭに切り替わると、ＳＭＭのときのみ動作するファームウェア照合モジュールは、アップデート要求を受信し、要求しているアップデート始動プログラムの識別情報を照合してもよい（ステップ２０６）。例えば、ＳＭＭ要求のメモリ内の位置を予め記述されたアップデート始動プログラムロードアドレスに対しチェックすること、およびメモリ内のアップデートパッケージのイメージを検査してイメージが変更されていないのを確認することによって、要求を照合してもよい。要求が正しいことが立証されなければ（ステップ２０７）、要求およびアップデートは拒否され（ステップ２０８およびステップ２１２）、この場合ＣＰＵはエラーコードでノーマルメモリモードに戻る。他方で、要求が正しいことが立証されれば（ステップ２０７）、ＳＭＭでのみ動作するファームウェア検証モジュールは、署名されたハッシュを用いて置換ファームウェアイメージを照合することによりアップデート要求を検証するよう試みる。ファームウェアアップデートイメージ署名の検証のため有効にされる、工場でインストールされたフラッシュＲＯＭイメージに常駐する１つまたは場合によっては複数の公開キーがあってもよい。これらのキーは保護された領域のうちの１つに常駐するが、システムの特定の必要条件によって、認証された変数領域内に常駐してもしなくてもよい。アップデート要求を受信するＳＭＭ常駐ファームウェア検証モジュールは、まず、アップデートプログラムから送信されたアップデートが、ファームウェアアップデートを実行するよう許可されたプライベートキーによって署名されたか否かを照合するのに必要とされる暗号チェックを実行する。暗号チェックをパスした場合のみ、アップデートはファームウェア格納領域の消去および書込を行うファームウェアに引き渡され、そうでない場合には、アップデートは拒否される（ステップ２１２）。他方で、検証成功に続き、ＣＰＵがＳＭＭのときのみ実行可能なファームウェアアップデートモジュールは、ファームウェア格納部をアップデートする（ステップ２１４）。ファームウェア格納部のアップデートに続き、ＵＥＦＩ装置は、アップデート動作のため成功コードでノーマルメモリに戻る前にリブートする。いくつかの実施形態では、さらなるセキュリティのために、さらなるセキュリティ予防措置をとってもよい。例えば、一実施形態では、ＵＥＦＩ装置を検証後ファームウェアアップデートが実行される前にリブートしてもよい。アップデートプロセスに戻ると、アップデートが実行される前にアップデートパッケージを再度検証してもよい。そのような実施形態では、ＵＥＦＩ装置はアップデート後ノーマルメモリに戻る前に２回目のリブートをすることになる。
【００２６】
フラッシュＲＯＭの実際の消去および書込は何秒かを必要とする可能性があり、またシステムは、ＳＭＭである間は他のユーザプログラムに応答しない。大規模なアップデートが必要とされるときにユーザの操作感を向上させるよう、一実施形態では、部分的完了を示すフラグとともにメインメモリ内の呼び出し元（変数アップデートパッケージャかアップデートプログラムのどちらか）に戻るメカニズムによって、アップデートの実際の処理をより小さい部分に分けてもよい。この動作時の分割は、場合によっては数回起こる。この部分的完了フラグの受信後、呼び出し元は短時間動作を中止して他のユーザプログラムが一時的に実行するのを可能にし、それから継続フラグでＳＭＭに再度入る。アップデートプログラムの場合、メインメモリに戻る時に、ユーザスクリーン上の視覚的進行表示をアップデートしてもよい。ＳＭＭに再度入ると、ＳＭＭファームウェアは、進行中のアップデートのメモリイメージが中止の間に変更されていないことを確認するため必要とされる何らかのステップをとる。この任意のステップは、明確化のため、図１および図２から省く。
【００２７】
図３は、本発明の実施形態を実践するのに適した例示的な環境を示す。ＵＥＦＩ準拠計算装置３００は、ノーマルモードおよびＳＭＭで動作可能なＣＰＵ３０２を有する。計算装置３００は、ＰＣ、ラップトップコンピュータ、タブレット計算装置、サーバ、スマートフォンまたはその他の種類の、プロセッサを搭載し、ＵＥＦＩ仕様の必要条件を満たすことが可能な計算装置であってもよい。計算装置３００は、ランダムアクセスメモリ（ＲＡＭ）のようなメモリ３０４を有してもよい。計算装置３００内、または計算装置３００に接続されたハードドライブまたは同等の大容量記憶装置上に格納されたオペレーティングシステム３１２を、前記計算装置により実行されるブートプロセスの一部としてメモリ３０４内にロードしてもよい。
【００２８】
計算装置３００は、フラッシュＲＯＭ３２０を有してもよい。幾つかの場合には、システム設計が複数のフラッシュＲＯＭ装置を採用してもよい。複数フラッシュＲＯＭ装置が採用される場合、前述のように全てのフラッシュＲＯＭ装置が同一のプロシージャを用いてアクセスされ、同一のセキュリティプロセスの対象であってもよい。フラッシュＲＯＭ３２０は、前述のように、計算装置の動作の異なるポイントで動作可能なファームウェアモジュールを有してもよい。例えば、フラッシュＲＯＭ３２０は、ＣＰＵ３０２が（ＳＭＭ動作でない）ノーマル動作３４０のとき動作可能なファームウェア要求受信モジュール３２１を有してもよい。フラッシュＲＯＭ３２０は、ＣＰＵがＳＭＭ３５０で動作中のときのみ動作可能なファームウェア照合モジュール３２２、ファームウェア検証モジュール３２３およびファームウェアアップデートモジュール３２４を保持してもよい。本明細書の記載では、ファームウェア照合モジュール３２２、ファームウェア検証モジュール３２３およびファームウェアアップデートモジュール３２４を別個のモジュールとして記載するが、本発明の範囲から逸脱することなく、これらのモジュールの機能を組み合わせてより少ないまたはより多い数のモジュールとしてもよいことを理解すべきである。
【００２９】
フラッシュＲＯＭ３２０を、いくつかの機能領域に論理的に分割してもよい。よって、フラッシュＲＯＭ３２０は、システムセキュリティデータベース３３１を保持する認証された変数領域３３０を有してもよい。システムセキュリティデータベース３３１は、ＵＥＦＩ仕様に記載された署名チェックに使用される許可されたキーを保持し、ＣＰＵがＳＭＭ３５０で動作しているときのみアクセス可能である。同様に、フラッシュＲＯＭ３２０はまた、起動およびセキュリティファームウェアモジュール３３３のロード可能なイメージを保持するファームウェア格納部３３２を有してもよい。フラッシュＲＯＭ３２０はまた、ＵＥＦＩ変数格納領域３３４を有してもよい。フラッシュＲＯＭ３２０を、本発明の範囲から逸脱することなく、異なる方法で、本明細書で述べられた領域と異なる他の領域を有するか、または本明細書で述べられた領域を包含するよう論理的に分割してもよいことを理解すべきである。
【００３０】
本発明の実施形態を、１つまたは複数の物理的媒体上またはその中で実現される１つまたは複数の非一過性コンピュータ可読プログラムの全体または部分として提供してもよい。例えば、媒体は、フロッピー（登録商標）ディスク、ハードディスク、コンパクトディスク、デジタル多用途ディスク、フラッシュメモリ、ＰＲＯＭ、ＭＲＡＭ、ＲＡＭ、ＲＯＭ、または磁気テープであってもよい。一般に、コンピュータ可読なプログラムを、いかなるプログラミング言語で実装してもよい。使用可能な言語のいくつかの例は、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、Ｃ＃、Ｐｙｔｈｏｎ、ＡｃｔｉｏｎＳｃｒｉｐｔ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、またはＪａｖａ（登録商標）を含む。ソフトウェアプログラムを、オブジェクトコードとして１つまたは複数の媒体上またはその中に格納してもよい。ハードウェア加速を使用してもよく、コードの全てまたは一部をＦＰＧＡ、特定用途向けプロセッサ（ＡＳＩＰ）、または特定用途集積回路（ＡＳＩＣ）上で実行してもよい。コードは、仮想マシンのような仮想環境で実行してもよい。コードを実行する複数の仮想マシンが、シングルプロセッサ上に常駐してもよい。
【００３１】
本発明の範囲から逸脱することなくいくつかの変更をしてもよいので、前述の記載に含まれ、または添付の図に示された全ての事項は一例と解釈し、文字通りの趣旨とは解釈されないことが意図される。当業者は、ステップの順序および図に示された構造を本発明の範囲から逸脱することなく変更してもよく、本明細書に含まれる例示は本発明の多数の可能な表現の１つの例であることを理解するだろう。特に幾つかの実施形態では、図２で記載されたステップを、図１のステップに変更を加える必要なく変更するか、または同等のプロセスに置き換えてもよいことを述べておく。さらに本明細書は、説明を容易にするため特定のソフトウェアモジュールに帰する種々の機能を述べるが、モジュールを、本発明の範囲から逸脱することなく違う名で呼んでもよく、あるいは同一の機能を提供するように、特に述べられていない方法で組み合わせまたは分割してもよいことが理解されるだろう。
【００３２】
本発明の実施形態の複数の例について前述ように説明してきたが、これらは本発明を網羅するものではなく、また開示された正確な形態に本発明を限定することを意図しない。前述の教示の観点から、または本発明の実践により、改良および変形を加えることは可能である。例えば、一連の動作を記載したが、動作の順序を本発明の原理に一致した他の実施形態において変更してもよい。さらに、複数の互いに独立した動作を並行して実行してもよい。
【図１】
2014513348.tif 000003
【図２】
2014513348.tif 000004
【図３】
2014513348.tif 000005
【国際調査報告】
2014513348.tif 000006
2014513348.tif 000007