(57)【特許請求の範囲】
【請求項１】
コンピューティングプラットフォームのベーシックインプットアウトプットシステム（ＢＩＯＳ）を検証する方法であって、
前記コンピューティングプラットフォームのプロセッサにプロセッサ初期化モジュールが含まれていて、前記プロセッサ初期化モジュールが初期化ファームウェア検証モジュールを含み、リセットに応じて前記プロセッサ初期化モジュールを実行する段階と、
前記初期化ファームウェア検証モジュールを用いて、前記コンピューティングプラットフォームのプロセッサパッケージ内のＲＯＭに格納されている初期化ファームウェアの検証を試みる段階と、
再プログラミング可能な不揮発性メモリに含まれている前記ＢＩＯＳの検証を、前記初期化ファームウェアを用いて試みる段階とを、
備え、
前記初期化ファームウェア検証モジュールは、前記ＲＯＭに格納される、方法。
【請求項２】
前記コンピューティングプラットフォームの制御を前記ＢＩＯＳに渡す段階と、
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定する段階と、
をさらに備える、請求項１に記載の方法。
【請求項３】
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、前記初期化ファームウェアが実行されないようにする段階、前記ＢＩＯＳが実行されないようにする段階、修復を開始する段階、モデル固有レジスタを用いて前記検証の失敗を報告する段階、前記プロセッサを停止させる段階、前記コンピューティングプラットフォームをシャットダウンする段階、および、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定する段階の少なくとも１つ、を更に備える、請求項１または２に記載の方法。
【請求項４】
前記初期化ファームウェアの検証が失敗したことに応じて、前記初期化ファームウェアを更新する段階をさらに備える、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、前記コンピューティングプラットフォームのマイクロプロセッササブシステムを用いたアウトオブバンド通信を利用して、ネットワークを介して前記ＢＩＯＳを更新する段階、をさらに備える、請求項１から４のいずれか一項に記載の方法。
【請求項６】
モデル固有レジスタに候補ＢＩＯＳファームウェアの更新が書き込まれることに応じて、前記初期化ファームウェア検証モジュールおよび前記初期化ファームウェアの実行をトリガする段階をさらに備える、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記初期化ファームウェアの検証が失敗したことに応じて、
初期化ファームウェアのバックアップコピーへロールオーバーする段階、および前記初期化ファームウェアの以前のイメージにロールバックする段階の少なくとも１つ、をさらに備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記ＢＩＯＳの複製であるバックアップＢＩＯＳを格納する、前記再プログラミング可能な不揮発性メモリとは別の不揮発性メモリをさらに備え、
前記別の不揮発性メモリは、前記ＢＩＯＳの検証が失敗することに応じてアクセスされる、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記初期化ファームウェア検証モジュールは前記プロセッサ内のＲＯＭ領域に格納され、前記初期化ファームウェアは前記プロセッサパッケージ内の不揮発性メモリのＲＯＭ領域に格納される、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
プロセッサパッケージと、
ベーシックインプットアウトプットシステムファームウェア（ＢＩＯＳファームウェア）が格納されている再プログラミング可能な不揮発性メモリと
を備えるコンピューティングプラットフォームであって、
前記プロセッサパッケージは、
初期化ファームウェア検証モジュールを含むプロセッサ初期化モジュールを含むプロセッサと、
初期化ファームウェアが格納されているＲＯＭと
を有し、
前記初期化ファームウェア検証モジュールは、前記ＲＯＭに格納され、
前記プロセッサは、
前記コンピューティングプラットフォームのリセットに応じて前記プロセッサ初期化モジュールを実行し、
前記初期化ファームウェア検証モジュールを用いて前記初期化ファームウェアの検証を試みて、
前記初期化ファームウェアを用いて前記ＢＩＯＳファームウェアの検証を試みる、
コンピューティングプラットフォーム。
【請求項１１】
前記プロセッサはさらに、前記コンピューティングプラットフォームの制御を前記ＢＩＯＳファームウェアに渡し、
前記初期化ファームウェアおよび前記ＢＩＯＳファームウェアのうち少なくとも一方の検証が失敗すると、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定する、請求項１０に記載のコンピューティングプラットフォーム。
【請求項１２】
前記プロセッサはさらに、
前記初期化ファームウェアおよび前記ＢＩＯＳファームウェアのうち少なくとも一方の検証が失敗すると、前記初期化ファームウェアが実行されないようにすること、前記ＢＩＯＳファームウェアが実行されないようにすること、修復を開始すること、モデル固有レジスタを用いて前記検証の失敗を報告すること、前記プロセッサを停止させること、前記コンピューティングプラットフォームをシャットダウンすること、および、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定することの少なくとも１つを実行する、請求項１０または１１に記載のコンピューティングプラットフォーム。
【請求項１３】
前記プロセッサはさらに、前記初期化ファームウェアの検証が失敗したことに応じて、前記初期化ファームウェアを更新する、請求項１０から１２のいずれか一項に記載のコンピューティングプラットフォーム。
【請求項１４】
アウトオブバンド通信を利用してネットワークを介して前記ＢＩＯＳファームウェアを更新するマイクロプロセッササブシステムをさらに備える、請求項１０から１３のいずれか一項に記載のコンピューティングプラットフォーム。
【請求項１５】
モデル固有レジスタをさらに備え、
前記プロセッサは、前記モデル固有レジスタに候補ＢＩＯＳファームウェアの更新が書き込まれることに応じて、前記初期化ファームウェア検証モジュールおよび前記初期化ファームウェアを実行する、請求項１０から１４のいずれか一項に記載のコンピューティングプラットフォーム。
【請求項１６】
前記プロセッサはさらに、
前記初期化ファームウェアの検証が失敗したことに応じて、
初期化ファームウェアのバックアップコピーへロールオーバーすることおよび前記初期化ファームウェアの以前のイメージにロールバックすることの少なくとも１つ、を実行する、請求項１０から１５のいずれか一項に記載のコンピューティングプラットフォーム。
【請求項１７】
前記ＢＩＯＳの複製であるバックアップＢＩＯＳを格納する、前記再プログラミング可能な不揮発性メモリとは別の不揮発性メモリをさらに備え、
前記別の不揮発性メモリは、前記ＢＩＯＳの検証が失敗することに応じてアクセスされる、請求項１０から１６のいずれか一項に記載のコンピューティングプラットフォーム。
【請求項１８】
プロセッサ初期化モジュールはコンピューティングプラットフォームのプロセッサに含まれるように構成されていて、前記プロセッサ初期化モジュールが初期化ファームウェア検証モジュールを含み、リセットに応じて前記プロセッサ初期化モジュールを実行する手順と、
前記初期化ファームウェア検証モジュールを用いて、前記コンピューティングプラットフォームのプロセッサパッケージ内のＲＯＭに格納されるように構成されている初期化ファームウェアの検証を試みる手順と、
再プログラミング可能な不揮発性メモリに含まれるように構成されているＢＩＯＳの検証を、前記初期化ファームウェアを用いて試みる手順と、
をコンピュータに実行させ、
前記初期化ファームウェア検証モジュールは、前記ＲＯＭに格納される、
プログラム。
【請求項１９】
前記コンピューティングプラットフォームの制御を前記ＢＩＯＳに渡す手順と、
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定する手順と、
を前記コンピュータにさらに実行させる、請求項１８に記載のプログラム。
【請求項２０】
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、前記初期化ファームウェアが実行されないようにする手順、前記ＢＩＯＳが実行されないようにする手順、修復を開始する手順、モデル固有レジスタを用いて前記検証の失敗を報告する手順、前記プロセッサを停止させる手順、前記コンピューティングプラットフォームをシャットダウンする手順、および、プラットフォーム機能が限定された検疫モードで動作するよう前記コンピューティングプラットフォームを設定する手順の少なくとも１つ、を前記コンピュータにさらに実行させる、請求項１８または１９に記載のプログラム。
【請求項２１】
前記初期化ファームウェアの検証が失敗したことに応じて、前記初期化ファームウェアを更新する手順を前記コンピュータにさらに実行させる、請求項１８から２０のいずれか一項に記載のプログラム。
【請求項２２】
前記初期化ファームウェアおよび前記ＢＩＯＳのうち少なくとも一方の検証が失敗した場合、前記コンピューティングプラットフォームのマイクロプロセッササブシステムを用いたアウトオブバンド通信を利用して、ネットワークを介して前記ＢＩＯＳを更新する手順、を前記コンピュータにさらに実行させる、請求項１８から２１のいずれか一項に記載のプログラム。
【請求項２３】
モデル固有レジスタに候補ＢＩＯＳファームウェアの更新が書き込まれることに応じて、前記初期化ファームウェア検証モジュールおよび前記初期化ファームウェアの実行をトリガする手順を前記コンピュータにさらに実行させる、請求項１８から２２のいずれか一項に記載のプログラム。
【請求項２４】
前記初期化ファームウェアの検証が失敗したことに応じて、
初期化ファームウェアのバックアップコピーへロールオーバーする手順および前記初期化ファームウェアの以前のイメージにロールバックする手順の少なくとも１つ、を前記コンピュータにさらに実行させる、請求項１８から２３のいずれか一項に記載のプログラム。
【請求項２５】
前記ＢＩＯＳの複製であるバックアップＢＩＯＳを格納する、前記再プログラミング可能な不揮発性メモリとは別の不揮発性メモリをさらに備え、
前記別の不揮発性メモリは、前記ＢＩＯＳの検証が失敗することに応じてアクセスされる、請求項１８から２４のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＢＩＯＳ保護に関する。特に、ＢＩＯＳフラッシュ攻撃に対する保護および通知に関する。
【背景技術】
【０００２】
コンピューティングデバイス、パーソナルコンピュータ、ワークステーションおよびサーバ（以下では、「コンピュータ」と呼ぶ）は通常、コンピュータハードウェア（例えば、プロセッサ、チップセット、メモリ等）とオペレーティングシステム（ＯＳ）との間のインターフェースとして、ベーシックインプットアウトプットシステム（ＢＩＯＳ）を備える。ＢＩＯＳは、コンピュータの低レベルハードウェアサービス、例えば、コンピュータマザーボードに対応付けられている基本的なキーボード、ビデオ、ディスクドライブ、入出力（Ｉ／Ｏ）ポートおよびチップセットドライバ（例えば、メモリコントローラ）の初期化およびイネーブル化を行うためのファームウェアコードおよび／またはソフトウェアコードを有する。
【０００３】
ベーシックインプットアウトプットシステム（ＢＩＯＳ）等のファームウェアによるコンピュータシステムの初期化および設定は、プレブートフェーズで実施される。プロセッサは、リセット後、ＢＩＯＳファームウェアを格納している不揮発性ストレージデバイスに対してマッピングされている所定のアドレスを参照する。プロセッサは順次、ＢＩＯＳ命令をフェッチする。これらのＢＩＯＳ命令によって、コンピュータは通常、電子ハードウェアを初期化し、周辺デバイスを初期化し、オペレーティングシステムをブートする。ＵＥＦＩ（ユニファイド・エクステンシブル・ファームウェア・インターフェース）は、セキュリティ（ＳＥＣ）フェーズ、プラットフォーム環境初期化（ＰＥＩ）フェーズ、ドライバ実行環境（ＤＸＥ）フェーズおよびブートデバイス選択（ＢＤＳ）フェーズ等、複数のフェーズを含む最新型のＢＩＯＳファームウェアアーキテクチャである。
【０００４】
プラットフォームファームウェアのセキュリティを侵害する方法は常に発展している。プラットフォームファームウェアのセキュリティを侵害することで、ツールはシステムを攻撃することができるようになる。セキュリティが侵害されたファームウェアは、ソフトウェア攻撃とは異なり、検出が困難で修復が難しい。セキュリティが侵害されたファームウェアは概して、大半のウイルス対策ツールおよびスパイウェア対策ツールを含むシステムのソフトウェアレイヤに対して不可視である。ファームウェアは不可視であるが存在し続けるので、悪意あるルートキットにとってファームウェアは理想的な対象となる。ルートキットは、実行中のソフトウェアに対して最高の特権を実現すると同時に可視性は最低限まで抑えられている、プラットフォーム中に含まれているコンパクトでドーマント方式の悪意あるフックである。ルートキットの主な機能は、攻撃を実行することか、または、感染したシステム上の他のウイルスおよびワームに対してＡＰＩを提供することである。
【０００５】
ＢＩＯＳは通常、プログラミングのやり直しが可能になるように、フラッシュメモリに格納されている。そして、プログラミングは、フォームファクタおよびエンドユーザの利便性を考慮して、ジャンパ変更を行うことなく実行されるとしてよい。このようにプログラミングのやり直しが可能であるので、権限を持たない人物および／またはマルウェアによる攻撃に対して脆弱になる。ＢＩＯＳにおける脆弱性も同様に悪用される可能性がある。システムＢＩＯＳへのアクセスによって、システムリブートの後も存在し続けるルートキットがインストールされ得る。ウイルス対策ソフトウェアは、このような「持続性」のルートキットを高い信頼性で検出することができないとしてよい。
【０００６】
場合によっては、ＢＩＯＳは真のＲＯＭに格納されて、プログラミングのやり直しができないようにすることもある。しかし、ＢＩＯＳ更新およびその他の正当な修正は必要である。これらの修正は、システムおよびＢＩＯＳを格納しているＲＯＭに対して物理的にアクセスすることによってのみ実現されるものである。
【図面の簡単な説明】
【０００７】
請求の対象となる主題の特徴および利点は、これらの主題に対応するものとして以下に記載する実施形態の詳細な説明から明らかになるであろう。以下に記載する説明は、添付図面を参照しつつ考慮されたい。添付図面は以下の通りである。
【図１】本開示のさまざまな実施形態に応じたシステム（コンピューティングプラットフォーム）を示す図である。
【図２】本開示の一実施形態に応じたフラッシュメモリに格納されている情報の格納構成の一例を示す図である。
【図３】本開示に応じた、ＢＩＯＳを検証する処理の一例を説明するフローチャートである。
【図４】本開示に応じたＢＩＯＳを検証する処理の一例を説明する別のフローチャートである。
【図５】本開示の一実施形態に応じた、リセットからＯＳブートまでのブート処理に対応する処理を説明する図である。  以下に記載する「発明を実施するための形態」は実施形態例を参照するが、当業者には多くの変更例、変形例および変化例が明らかである。
【発明を実施するための形態】
【０００８】
本開示は概して、ＢＩＯＳストレージ攻撃に対する保護および通知を行うシステム（および方法）を提供する。システム（コンピューティングプラットフォーム）の一例によると、プロセッサと、当該プロセッサに結合されているオフダイ不揮発性メモリとを有するプロセッサ部を備える。プロセッサは、プロセッサ初期化モジュールを含み、揮発性および不揮発性のメモリを含むとしてよい。プロセッサ初期化モジュールは初期化ファームウェア検証モジュールを含み、プロセッサ部は初期化ファームウェアを含む。初期化ファームウェアは、プロセッサの命令セットアーキテクチャ（ＩＳＡ）に書き込まれているとしてよく、オフダイ不揮発性メモリに格納されているとしてよい。
【０００９】
プロセッサ初期化モジュールは、プロセッサの内部初期化を実行するべく、リセットに応じて最初に実行されるように構成されている。リセットは、電源オンによって、および／または、モデル固有レジスタの状態によってトリガされるとしてよい。本明細書で用いる場合、「リセット」という用語は、フロー制御がプロセッサ初期化モジュールに戻る再スタートイベントである。リセットは、システムの電気コンポーネントが再スタートの前に電力供給を停止させる「電源オンリセット」を含む。メモリのコンテンツは、その後の修復のために保存されるとしてもよいし、保存されないとしてもよい。リセットはさらに、システムの電気コンポーネントへの電力供給が維持される「ＣＰＵ限定リセット」を含む。
【００１０】
初期化ファームウェア検証モジュールは、プロセッサ初期化モジュールの一部として、初期化ファームウェアを検証するように構成されている（つまり、検証または認証しようと試みる）。プロセッサ初期化モジュールおよび／または初期化ファームウェア検証モジュールは、プロセッサの揮発性および／または不揮発性のメモリに格納されているマイクロコード、回路および／または状態情報を含むとしてよい。初期化ファームウェアは、初期化ファームウェア検証モジュールの後に実行されるように構成されており、ＢＩＯＳを検証するように構成されている（つまり、検証するよう試みる）。初期化ファームウェアは、プロセッサのＩＳＡの形式に準拠しているか、または、内部形式に準拠しているとしてよい。初期化ファームウェアおよび／またはＢＩＯＳの検証が失敗すると、システムは１以上の応答を開始するように構成されている。応答は、これらに限定されないが、初期化ファームウェアおよび／またはＢＩＯＳが実行されないようにすること、（例えば、アウトオブバンド（ＯＯＢ）通信を利用して）修復を開始すること、検証が失敗したことをモデル固有レジスタ（ＭＳＲ）を用いて報告すること、停止すること、シャットダウンすること、および／または、ＢＩＯＳを実行させ、オペレーティングシステム（ＯＳ）をブートさせるべく、「検疫モード」で動作するようコンピューティングプラットフォームを設定すること、を含む。検疫モードでは、システムの一部の機能はＢＩＯＳおよびＯＳに対して利用不可能になるとしてよい。
【００１１】
プロセッサ初期化モジュール、初期化ファームウェア検証モジュールおよび初期化ファームウェアは、プロセッサパッケージの一部であり、通常はプロセッサ製造者以外は利用できないという利点がある。初期化ファームウェアの生成元および正当性はプロセッサ部によって保証されるとしてよく、初期化ファームウェアはパーティション化されたメモリを含む分離実行モードで実行され得る。ＵＥＦＩ  ＢＩＯＳとは異なり、内部プロセッサの初期化／リセットおよびファームウェアインターフェースは、一般的に利用可能にはならないとしてよい。検疫モードで動作させることによって、ＢＩＯＳ検証が失敗した際には、動作が全て停止するのではなく、動作が限定されることになる。この後、ＢＩＯＳ検証の失敗はユーザに通知されるとしてよい。例えば、ＢＩＯＳは、例えば、マザーボード上での物理的なジャンパ設定を利用することで、ローカルに更新されるとしてよい。別の例を挙げると、ＢＩＯＳは、ネットワークを介してリモートエージェントとのＯＯＢ通信を利用して、更新されるとしてよい。
【００１２】
＜システムアーキテクチャ＞
図１は、本開示のさまざまな実施形態に応じたシステムを示す図である。図１のシステム１００は、プロセッサ部１０２と、システムメモリ（ＲＡＭ）１０４（ＯＳ１５０を含む）と、プラットフォームコントローラハブ（ＰＣＨ）１０６と、トラステッドプラットフォームモジュール（ＴＰＭ）１０８と、１以上のディスクドライブ１１０と、マイクロプロセッササブシステム１１２と、ＥＥＰＲＯＭ１１４と、ネットワークポート１１６とを備えるとしてよい。システム１００は、ネットワーク１２０およびネットワークポート１１６を介してリモートエージェント１１８に結合されているとしてよい。ＴＰＭ１０８は、一の別箇のブロックとして図示されているが、一部の実施形態によると、マイクロプロセッササブシステム１１２に含まれるとしてもよい。
【００１３】
システム１００の概略を説明すると、プロセッサ部１０２は、初期化ファームウェア検証モジュール１２８を含むプロセッサ初期化モジュール１２６を実行するように構成されており、システムリセットに応じて、例えば、システムの電力オンおよび／またはモデル固有レジスタ（ＭＳＲ）の状態に応じて、初期化ファームウェア１３０を実行するとしてよい。プロセッサ初期化モジュール１２６および初期化ファームウェア検証モジュール１２８は、マイクロコードおよび／または回路で実現されるとしてよい。初期化ファームウェア検証モジュール１２８は、初期化ファームウェア１３０を検証するように構成されており、初期化ファームウェア１３０はＢＩＯＳを検証するように構成されている。初期化ファームウェア検証モジュール１２８は、ダイ上（つまり、プロセッサ１２２のダイ上）および／またはパッケージ上（つまり、プロセッサ部１０２内）に含まれているとしてよい。例えば、専用のステートマシンおよび／または埋め込み（従属）コントローラが、検証動作を支援および／または実施するとしてよい。このような専用のステートマシンおよび／または埋め込みコントローラは、プロセッサ部１０２に含まれるとしてよい。例えば、初期化ファームウェア１３０は、検証済みのブートを実施するべく、暗号署名されたＢＩＯＳに対して暗号化インテグリティチェックを実行するとしてよい。ＢＩＯＳ検証が失敗すると、プロセッサ部１０２は１以上の応答を開始するように構成されている。応答には、これらに限定されないが、ＢＩＯＳ（およびＯＳ）アクセスを制限すること、および／または、一部のシステム技術をディセーブルすること（つまり、検疫モードでブートすること）、（例えば、報告のために）モデル固有レジスタを更新すること、（例えば、アウトオブバンド（ＯＯＢ）機能を利用して）修復を開始すること、ＢＩＯＳの動作を中止させること、ＯＳのブートを中止させること、停止させること、シャットダウンすること、および／または、これらの組み合わせが含まれる。本明細書で説明するように、特定の応答を、製造時に選択するとしてよく、および／または、プロセッサ設定および／または初期化ファームウェアを更新することによって選択するとしてよい。
【００１４】
プロセッサ部１０２は、プロセッサ（ＣＰＵ）１２２およびオフダイ不揮発性メモリ１２４を有するとしてよい。例えば、オフダイ不揮発性メモリ１２４は、プロセッサ１２２およびオフダイ不揮発性メモリ１２４を含むプロセッサ部パッケージに含まれるとしてもよい。別の例を挙げると、不揮発性メモリ１２４は、プロセッサ１２２内に、例えば、同じダイに含まれるとしてよい。プロセッサ１２２は、不揮発性メモリ１２３、プロセッサ初期化モジュール１２６、初期化ファームウェア検証モジュール１２８、ｐＭＳＲ１３２および／またはｅＭＳＲ１３３を含むとしてよい。初期化ファームウェア検証モジュール１２８は、プロセッサ初期化モジュール１２６に含まれるとしてもよいし、または、別箇のモジュールとして構成してもよい。プロセッサ初期化モジュール１２６および／または初期化ファームウェア検証モジュール１２８は、揮発性および／または不揮発性メモリに格納されているマイクロコード、回路および／または状態情報を含むとしてよい。
【００１５】
オンダイ型および／またはオンパッケージ型の不揮発性メモリは、複数の不揮発性メモリ技術、例えば、これらに限定されないが、コンテンツが製造時に設定されるリードオンリー型（例えば、ＲＯＭ）、製造時に更新可能なもの（例えば、ヒューズ）、および／または、現場で更新可能なもの（例えば、ヒューズ、フラッシュ）を含むとしてよい。例えば、プロセッサ不揮発性メモリ１２３は、マイクロコードおよび／または他の持続性のプロセッサ状態情報を格納するように構成されているとしてよい。オフダイ不揮発性メモリ１２４は、初期化ファームウェア１３０を格納するように構成されている。初期化ファームウェア検証モジュール１２８および初期化ファームウェア１３０は通常、プロセッサ製造者によって生成されるとしてよく、製造プロセス時に格納されるとしてよい。プロセッサ部１０２は、初期化ファームウェア検証モジュール１２８および初期化ファームウェア１３０を含み、比較的セキュアであるとしてよく、概してマルウェアによる攻撃では到達できないとしてよい。初期化ファームウェア検証モジュール１２８（例えば、ヒューズおよび／または再プログラミング可能なステートマシンを含む）および初期化ファームウェア１３０は、例えば、暗号鍵を用いて、セキュアに更新されるとしてよい。
【００１６】
プロセッサ不揮発性メモリ１２３の少なくとも一部は、１以上のモデル固有レジスタ（ＭＳＲ）１３２、１３３を介してアクセス可能であるとしてよい。ＭＳＲは、プロセッサ設定にアクセスし、および／または、プロセッサ設定を制御するように構成されているとしてよい。ＭＳＲは、持続性ＭＳＲ（ｐＭＳＲ）１３２および／または一時性ＭＳＲ（ｅＭＳＲ）１３３を含むとしてよい。持続性ＭＳＲ１３２は、複数の電力サイクルにわたって持続するように構成されており、つまり、不揮発性と見なされるとしてよい。一時性ＭＳＲ１３３は、システム１００が電力供給を受けて実行中の間に限り持続するように構成されていて、つまり、揮発性と見なされるとしてよい。ｐＭＳＲ１３２およびｅＭＳＲ１３３の両方は、設定ポリシーを公表すると共にプロセッサ１２２の状態を第三者に報告する。例えば、ＭＳＲ１３２、１３３は、電力管理機能をオンオフ制御するために、エラーを報告するために、状態を報告するために、および／または、特定の機能（例えば、ハイパーバイザ）をオンオフ制御するために、用いられるとしてよい。一部の実施形態によると、ｅＭＳＲ１３３は、検証の失敗を報告するために用いられるとしてよい。例えば、ＢＩＯＳ検証が失敗すると、ＢＩＯＳ＿ＶＥＲＩＦＩＣＡＴＩＯＮ  ＭＳＲが設定されるとしてよい。ＢＩＯＳ＿ＶＥＲＩＦＩＣＡＴＩＯＮ  ＭＳＲを一時性ＭＳＲ１３３として設定することによって、ＢＩＯＳベンダは、コンピューティングプラットフォームの動作寿命の間はＢＩＯＳを更新することが出来るという利点がある。
【００１７】
一般的に、ＭＳＲ１３２、１３３は、読出ＭＳＲ命令（例えば、状態へのアクセス）または書込ＭＳＲ命令（例えば、ＭＳＲのコンテンツの変更）を用いて、第三者の関数によってアクセスされるとしてよい。ＭＳＲ１３２、１３３の一部は「不変」であるとしてよい。これは、不変のＭＳＲのコンテンツは、アウトオブバンド方式またはインバンド方式のプロセッサＩＳＡコード実行動作で第三者によって変更できないことを意味する。例えば、ＢＩＯＳ＿ＶＥＲＩＦＩＣＡＴＩＯＮ  ＭＳＲは不変ＭＳＲであるとしてよい。マルウェアは、不変ＭＳＲのコンテンツを変更できないので、不変ＭＳＲは、例えば、ＢＩＯＳの状態を報告するチャネルとして比較的セキュアであるとしてよい。一実施形態によると、ＭＳＲ１３２、１３３は、初期化ファームウェア検証モジュール１２８および初期化ファームウェア１３０および対応付けられている検証動作の実行をトリガするＰｌａｔｆｏｒｍ＿Ｕｐｄａｔｅ  ＭＳＲを含むとしてよい。例えば、Ｐｌａｔｆｏｒｍ＿Ｕｐｄａｔｅ  ＭＳＲは、候補ＢＩＯＳファームウェアの更新が書き込まれると、実行をトリガするとしてよい。
【００１８】
プロセッサ部１０２は、システム１００のリセットに応じて、初期化ファームウェア検証モジュール１２８を含むプロセッサ初期化モジュール１２６を実行するように構成されている。プロセッサ部１０２は、モデル固有レジスタ、例えば、Ｐｌａｔｆｏｒｍ＿Ｕｐｄａｔｅ  ＭＳＲに基づいて、プロセッサ初期化モジュール１２６および初期化ファームウェア検証モジュール１２８を実行するとしてよい。初期化ファームウェア検証モジュール１２８は、本明細書で説明しているように、初期化ファームウェア１３０を検証する。初期化ファームウェア１３０の検証が失敗すると、初期化ファームウェア検証モジュール１２８は、本明細書で説明するように、１以上の応答を開始するとしてよい。例えば、プロセッサ初期化モジュール１２６および初期化ファームウェア検証モジュール１２８は、揮発性および／または不揮発性のストレージに格納されているマイクロコード、回路および／または状態情報を含むとしてよい。初期化ファームウェア１３０の検証が成功すると、プロセッサ部１０２は初期化ファームウェア１３０を実行する。このように、初期化ファームウェアは、ＢＩＯＳを検証する前に、確認（検証）されるとしてよい。本明細書で説明する方法およびシステムは、プロセッサ初期化モジュール１２６および初期化ファームウェア検証モジュール１２８に根差したトラストチェーンを構築し、初期化ファームウェア１３０まで拡張した後、ＢＩＯＳ１３４へと拡張するように構成されている。
【００１９】
ＥＥＰＲＯＭ１１４は、ＢＩＯＳ１３４、ファームウェアインターフェーステーブル（ＦＩＴ）１３６およびマネジビリティエンジン（ＭＥ）ファームウェア１３８を格納する。ＥＥＰＲＯＭ１１４は、プログラミングし直すことが可能であり、ＢＩＯＳ１３４を更新することが可能になる。ＢＩＯＳ１３４は、例えば、マイクロプロセッササブシステム１１２およびマネジビリティエンジンファームウェア１３８を介してネットワーク１２０に結合されているので、リモートプログラミングが可能であるとしてよい。例えば、ＥＥＰＲＯＭ１１４は、ローカルまたはリモートに再プログラミング可能なフラッシュメモリであってよい。例えば、フラッシュメモリは、ＮＯＲ型フラッシュメモリであってよい。ＮＯＲ型フラッシュメモリは通常、ＮＡＮＤ型フラッシュメモリよりも小型で、バイト単位で書込可能、ブロック単位で消去可能であり（例えば、ＮＯＲ型の場合は１メガバイトから１６メガバイトであるのに対して、ＮＡＮＤ型の場合はギガバイト単位）、通常はｅｘｅｃｕｔｅ−ｉｎ−ｐｌａｃｅ型のコードについて利用される。ＥＥＰＲＯＭ１１４は、別の種類の再プログラミング可能で不揮発性のストレージであってもよく、これらに限定されないが、抵抗型および／または電荷型のメモリ（例えば、フェライトコアメモリ）、相変化メモリ（ＰＣＭ）、磁気型メモリ（ＭＲＡＭ）、カーボンナノチューブ型不揮発性メモリ技術等であってもよい。このような技術は、再プログラミング可能な場合には「不揮発性ＲＡＭ」または「ＮＶＲＡＭ」と呼ばれるとしてよく、ヒューズ／ヒューズアレイ等の一回のみ書込み可能なストレージを含むとしてよい。ＮＯＲ型フラッシュおよびフラッシュメモリについて本明細書で説明しているが、本開示に応じて他の不揮発性メモリ技術を利用するとしてもよい。利用する特定のメモリ技術は、システム要件に応じて決まるとしてよく、設計実行である。
【００２０】
図２は、フラッシュメモリ１１４に格納されている情報について格納構成２００の一例を示す図である。フラッシュは、ＢＩＯＳ初期化モジュール２０２、ＢＩＯＳ２０４および他のファームウェア２０６を備えるとしてよい。ＢＩＯＳ初期化モジュール２０２は、プロセッサリセットベクトル２０８、ＦＩＴポインタ２１０およびＦＩＴ構造２１２を有するとしてよい。ＦＩＴ構造２１２は、ＦＩＴ終端マーカー２１４、ＢＩＯＳ初期化モジュールポインタ２１６、検証証明書２１８および／またはＦＩＴヘッダ２２０を含むとしてよい。図２のＦＩＴ構造２１２は図１のＦＩＴ１３６に対応し、図２のＢＩＯＳ２０４は図１のＢＩＯＳ１３４に対応する。
【００２１】
ＦＩＴ１３６は、フラッシュメモリ１１４に格納されている、ＢＩＯＳ１３４を含むファームウェアに対してインターフェース（つまり、ポインタ）を提供する。ＦＩＴ１３６が空であるか、または、ヌル化されている場合、プロセッサブートストラップは、デフォルトプロセッサブートストラップまたはリセットベクトルアドレスに戻るとしてよい。ＦＩＴ１３６は、空でない場合、実行可能なコードおよび／またはデータを記述するように構成されているさまざまなレコードを含むとしてよい。このようなレコードは、ポインタおよびその他のメタデータ、例えば、デフォルトリセットベクトルアドレスに代えて、または、これに加えて、実行されるべきフラッシュメモリ内のコードブロック／データブロックへのポインタを含むとしてよい。ＦＩＴ１３６または同様のメカニズムは、プロセッサのデフォルトリセットベクトル２０８を用いて実現されるデフォルト動作に代えて、または、これに加えて、別の仕様および／または機能のロードを可能にするように構成されている。この構成は、システムのカスタマイズ化およびパッチングには有用であるとしてよい。初期化ファームウェア１３０は、ＦＩＴ構造２１２内のポインタ（例えば、ＢＩＯＳ初期化モジュールポインタ２１６）を用いてフラッシュ１１４におけるＢＩＯＳ１３４の位置を特定するとしてよい。一部の実施形態によると、初期化ファームウェア１３０は、フラッシュ１１４検索処理および／またはプラットフォームストラップ処理等の他の技術を利用して、ＢＩＯＳ１３４の位置を決定するとしてよい。
【００２２】
ＢＩＯＳ１３４は、ハードウェアを初期化および試験して、ＯＳ１５０をロードする。再プログラミング可能であることによって、ＢＩＯＳ１３４は、（ＥＥＰＲＯＭ１１４の代わりとなることなく）更新が可能になるが、悪意あるプログラムによる攻撃手段ともなり得る。ＢＩＯＳ１３４のセキュリティを侵害した悪意あるプログラムは通常、比較的高い特権レベルで実行されるので、従来のマルウェア対策プログラムでは検出するのが困難である。本開示に応じた初期化ファームウェア検証モジュール１２８および初期化ファームウェア１３０は、プロセッサ１２２がＢＩＯＳ１３４のコードをフェッチおよび／または実行する前に実行されるように構成されているので、セキュリティが侵害されたＢＩＯＳを実行前に検出するという利点がある。ＢＩＯＳ１３４のセキュリティが侵害されている場合（つまり、検証が失敗すると）、初期化ファームウェア１３０は、本明細書で説明するように、１以上の応答を開始するように構成されている。例えば、セキュリティが侵害されたシステムを検出することに応じて、別のＦＩＴエントリが、ＥＥＰＲＯＭ１１４内の格納構造２００における修復ＢＩＯＳブロックを指し示すように構成されるとしてよい。別の例によると、ＥＥＰＲＯＭ１１４は、セキュリティが侵害されたシステムを検出することに応じてアクセス（デコード）されるＥＥＰＲＯＭ１１４の別領域（または、別箇のＥＥＰＲＯＭ）にＢＩＯＳ１３４の複製を格納しているとしてよい。言い換えると、システム１００は、ＢＩＯＳ１３４の検証が失敗した場合に実行されるべき「バックアップ」ＢＩＯＳを含むとしてよい。バックアップＢＩＯＳは、ＥＥＰＲＯＭ１１４に格納されているとしてもよいし、および／または、別のＥＥＰＲＯＭに格納されているとしてよい。
【００２３】
図１を再度参照すると、マイクロプロセッササブシステム１１２は、埋め込みマイクロプロセッサ１４０、キャッシュメモリ１４２および不揮発性メモリ（ＲＯＭ）１４４を含むとしてよい。マイクロプロセッササブシステム１１２は、フラッシュメモリ１１４に格納されているマネジビリティエンジンファームウェア１３８を実行する。本実施形態では、マイクロプロセッササブシステム１１２は、プラットフォームコントローラハブ（ＰＣＨ）１０６を介してプロセッサ部１０２に結合されており、ネットワークポート１１６を介してネットワーク１２０およびリモートエージェント１１８に結合されている。マイクロプロセッササブシステム１１２は、アウトオブバンド通信を可能とする。アウトオブバンド通信は、マイクロプロセッササブシステム１１２とプロセッサ部１０２との間で、および／または、システム１００とリモートエージェント１１８との間で行われるとしてよい。例えば、ＢＩＯＳ１３４の検証が失敗すると、マイクロプロセッササブシステム１１２（およびマネジビリティエンジンファームウェア１３８）は、リモートエージェント１１８との間でＯＯＢ通信を行って、更新後の検証済みのＢＩＯＳをリモートエージェント１１８から取得するとしてよい。これは、フラッシュメモリ１１４に実際に現場で物理的にアクセスすることなく、攻撃されたフラッシュメモリに格納されているＢＩＯＳをリモートに更新および／または認証することが可能になるという利点がある。
【００２４】
このため、リセット（例えば、電源オンに対応するリセットおよび／またはモデル固有レジスタの状態に基づくリセット）に応じて、システム１００は、プロセッサ初期化モジュール１２６を実行して初期化シーケンス（つまり、プロセッサ１２２の初期化フェーズ）、および、プロセッサ部１０２に含まれている初期化ファームウェア１３０を検証する初期化ファームウェア検証モジュール１２８を実行する。システム１００はさらに、初期化ファームウェア１３０を実行してＢＩＯＳ１３４を検証する。初期化ファームウェア１３０および／またはＢＩＯＳ１３４の検証が失敗すると、システム１００はさらに、これらに限定されないが、システム（コンピューティングプラットフォーム）を設定して機能が限定された検疫モードでブートさせること、（例えば、ＯＯＢ機能を用いて）修復プロセスを開始すること、１以上のＭＳＲを利用して検証ステータスを報告すること、初期化ファームウェアおよび／またはＢＩＯＳが実行されないようにすること、シャットダウンすること、および／または、プロセッサを停止させること等の１以上の応答を開始する。ＢＩＯＳ１３４とは異なり、プロセッサ部１０２に含まれているプロセッサ初期化モジュール１２６、初期化ファームウェア検証モジュール１２８および初期化ファームウェア１３０は、比較的アクセスし難く（例えば、オンダイ型か、または、プロセッサパッケージ基板上にある）、公開されているインターフェースプロトコルを概して含んでいないという利点がある。プロセッサ初期化モジュール１２６、初期化ファームウェア検証モジュール１２８、初期化ファームウェア１３０およびプロセッサ部１０２のこのような構成によって、ＢＩＯＳ１３４が認証される理由となる「信頼のルート」が得られる。
【００２５】
＜方法の一例＞
図３は、本開示に応じたＢＩＯＳを検証（認証）するための処理の一例を示すフローチャート３００を示す図である。本実施形態で図示している処理は、システム１００に対応付けられている回路、ファームウェアモジュールおよび／またはソフトウェアモジュール（例えば、ＣＰＵ１２２を含むプロセッサ部１０２）によって実行されるとしてよい。処理フローは、処理３０５で開始されるとしてよい。処理３０５は、例えば、電源オンリセットまたはＣＰＵ限定リセット等のリセットを含む。処理３１０は、プロセッサ初期化モジュールを実行することを含む。処理３１０は、初期化ファームウェア検証モジュールを実行することを含み、電源オンに対応付けられている他のプロセッサ動作を含むとしてよい。初期化ファームウェアが認証されるか否か（つまり、検証が成功するか否か）は、処理３１５で判断されるとしてよい。
【００２６】
初期化ファームウェアが認証されれば、処理３３０において初期化ファームウェアが実行されるとしてよい。ＢＩＯＳが認証されるか否かは、処理３３５で判断するとしてよい。ＢＩＯＳが認証されると、処理３４０において完全システムブートがイネーブルされるとしてよい。例えば、この認証のための検証には、デフォルトリセットベクトル経路または別のＦＩＴ仕様の経路またはモジュールに沿った１以上のＢＩＯＳ要素が含まれるとしてよい。「完全システムブート」は、全てのシステム機能をＢＩＯＳおよびＯＳが利用可能であることを意味している。処理３４５は、制御をＢＩＯＳに移行することを含むとしてよい。例えば、初期化ファームウェア１３０は、システム１００の制御をＢＩＯＳ１３４に渡すとしてよい。処理３５０は、初期化システムハードウェアを含むシステムをブートすることと、ＯＳをロードすることとを含むとしてよい。
【００２７】
初期化ファームウェアが認証されない場合、および／または、ＢＩＯＳが認証されない場合（つまり、検証に失敗する場合）、１以上の応答が処理３５５で開始されるとしてよい。初期化ファームウェア検証モジュール１２８は、初期化ファームウェアの検証が失敗すると、１以上の応答を選択および開始するように構成されているとしてよい。初期化ファームウェア１３０は、ＢＩＯＳの検証が失敗すると、１以上の応答を選択および開始するように構成されているとしてよい。これらの応答は、処理３６０、３６５、３７０（および３７５）、３８０、３８５、３９０および３９５のうち１以上を含むとしてよい。処理３８０は停止することを含む。例えば、プロセッサ１２２は処理３８０において停止するとしてよい。処理３８５は、初期化ファームウェアおよび／またはＢＩＯＳの実行を停止させることを含む。システム（例えば、システム１００）は、処理３９５においてシャットダウンするとしてよい。
【００２８】
処理３６０は、システムを検疫モード（つまり、動作が制限または限定されたモード）でブートさせることを含む。検疫モードでは、一部のシステム機能および／または一部のシステムコンポーネントへのアクセスは、ディセーブルされるとしてよい。検疫モードは、初期化ファームウェアおよび／またはＢＩＯＳの検証が失敗した場合に、システム機能を限定できるように構成されている。例えば、ハイパーバイザ等の「相対的に高位の」システム機能をディセーブルするとしてよい。処理３６５は、モデル固有レジスタ（ＭＳＲ）を更新することを含む。モデル固有レジスタの更新は、初期化ファームウェアおよび／またはＢＩＯＳの検証の失敗を通知するように構成されているとしてよい。モデル固有レジスタは、不変レジスタであってよく、第三者による変更が禁止されており、比較的セキュアな報告方法が実現される。例えば、ＭＳＲが更新されると、失敗条件の詳細な内容を通知することなく、失敗を通知するとしてよい。このように報告を制限することで、攻撃者が失敗条件の詳細な内容を利用して検出機能のセキュリティを侵害しないようにする。
【００２９】
処理３７０において修復プロセスが開始されるとしてよい。処理３７０は、リセットを含む初回再試行を可能とするように構成されているクロスリセット状態を維持すること、初期化ファームウェアおよび／またはＢＩＯＳのバックアップコピーへロールオーバーすること、初期化ファームウェアおよび／またはＢＩＯＳの以前のイメージにロールバックすること、および／または、初期化ファームウェアおよび／またはＢＩＯＳを更新することを含むとしてよい。初期化ファームウェアのバックアップコピーが存在するか否かは、不揮発性メモリに関連する特性に応じて決まるとしてよい。処理３７０における再試行回数は制限があるとしてよい。例えば、再試行回数が所定値に到達すると修復プロセスを終了させるようトリガするカウンタが実現されているとしてよい。別の例によると、ロールオーバーまたはロールバックによって持続状態が修正され、この後に再試行すると修復プロセスの終了がトリガされるとしてもよい。初期化ファームウェアおよび／またはＢＩＯＳは、セキュア技術（つまり、暗号化技術）を用いて更新するとしてよい。
【００３０】
処理３７０は、アウトオブバンド（ＯＯＢ）通信を介して初期化ファームウェアおよび／またはＢＩＯＳを更新することを含むとしてよい。例えば、図１のマイクロプロセッササブシステム１１２は、ＯＯＢ通信を利用してリモートエージェント１１８との間でネットワーク１２０を介して通信を行い、更新後のセキュリティ侵害されていないＢＩＯＳを取得するとしてよい。例えば、更新後のＢＩＯＳは、検証が失敗したＢＩＯＳよりもｍｏｎｏｔｏｎｅ改定バージョンが上であるとしてよい（例えば、以前の、例えば、エラーを含むＢＩＯＳに戻るロールバック攻撃を回避するため）。マイクロプロセッササブシステム１１２はさらに、取得したＢＩＯＳでフラッシュメモリ１１４をプログラミングし直すとしてよい。この後、処理３７５においてリセットを開始するとしてよい。
【００３１】
処理３９０は、時間遅延を実現することを含むとしてよい。例えば、時間遅延は応答同士の間に挿入されるとしてよい。別の例を挙げると、処理３７０において時間遅延が再試行同士の間に挿入されるとしてよい。時間遅延は、攻撃の頻度、および、攻撃が成功または失敗と評価される頻度を低減するように構成されている。
【００３２】
処理３６０、３６５、３７０、３７５、３８０、３８５、３９０および３９５で説明した応答は、個別に実行されるとしてもよいし、または、組み合わせて実行するとしてもよい。特定の応答は、予め定められて、例えば、オフダイ不揮発性メモリ１２４に格納されているとしてよい。例えば、応答は、さまざまなタイミングで、さまざまな方法を利用して選択されるとしてもよい。例えば、これらに限定されないが、製造時に、最初の動作時に、ジャンパを利用して、特別な保護されているユーザによる最初のセットアップによって、および／または、初期化ファームウェア検証モジュールおよび／または初期化ファームウェアを更新することで、選択するとしてよい。
【００３３】
このため、フローチャート３００に図示されているように、プロセッサ初期化モジュールおよび初期化ファームウェア検証モジュールは、初期化ファームウェアおよびＢＩＯＳより前に実行されるように構成されており、初期化ファームウェアおよびＢＩＯＳを認証するとしてよい。初期化ファームウェアおよび／またはＢＩＯＳの検証が失敗すると、１以上の応答が開始されるとしてよい。応答の一部は、システム、例えば、システム１００を検疫モードで動作させ、初期化ファームウェアおよび／またはＢＩＯＳを更新させ、および／または、初期化ファームウェアおよび／またはＢＩＯＳの検証の失敗を通知させるように構成されているという利点がある。したがって、ＢＩＯＳ検証の失敗に対する応答は、システム１００を停止させることに限定されない。
【００３４】
図４は、本開示に応じたＢＩＯＳを検証するための処理の一例を示す別のフローチャート４００を示す図である。本実施形態で図示している処理は、システム１００に対応付けられている回路、ファームウェアモジュールおよび／またはソフトウェアモジュール（例えば、ＣＰＵ１２２を含むプロセッサ部１０２）によって実行されるとしてよい。図４において、ＢＩＯＳを認証するための処理は図１の初期化ＲＯＭ１２７に対応する初期化ＲＯＭ４０２に含まれており、ＢＩＯＳに関連付けられる処理はＢＩＯＳ１３４に対応するＵＥＦＩ（ＢＩＯＳ）ファームウェア４０４に含まれる。
【００３５】
プログラムフローは処理４０５で開始されるとしてよい。処理４０５は、システムリセットに応じて実施されるとしてよい。処理４０５は、初期化ファームウェア検証モジュールを含むプロセッサ初期化モジュールの実行、および、初期化ファームウェアの検証、および、初期化ファームウェアの実行を含むとしてよい。初期化ファームウェア検証モジュールが初期化ファームウェアの検証に成功すると、プロセッサは初期化ファームウェアの実行を開始するとしてよい。処理４０５は任意で、基本的なメモリ機能を初期化すること（例えば、システムメモリを構築すること）、および／または、インターコネクトファブリック等の他のシステム素子を初期化することを含むとしてよい。クイックパスインターフェースは、プロセッササブシステムと、プラットフォームコントローラハブおよび／またはマイクロプロセッササブシステムとを相互接続するインターコネクトファブリックの一例である。処理４１０は、署名済みのマニフェストを持つファームウェアインターフェーステーブル（ＦＩＴ）およびＯＥＭ  ＢＩＯＳブロックがフラッシュメモリに存在するか否かを判断することを含む。例えば、ＴＰＭ１０８を含むシステムでは、処理４１０は、マニフェストのハッシュと、ＴＰＭ１０８のＮＶデータレジスタに格納されているハッシュ値とを比較することで、署名済みのマニフェストのインテグリティを確認することを含むとしてよい。
【００３６】
フラッシュメモリに署名済みのマニフェストを持つファームウェアインターフェーステーブル（ＦＩＴ）が存在しない場合、または、ＯＥＭ  ＢＩＯＳブロックが存在しない場合、処理４１５が実行されるとしてよい。処理４１５は、不変モデル固有レジスタ（ＮＯＴ＿ＳＩＧＮＥＤ＿ＭＳＲ）を設定すること、および／または、プロセッササブシステムを停止させることを含む。フラッシュメモリに署名済みマニフェストを持つＦＩＴが存在する場合、および、ＯＥＭ  ＢＩＯＳブロックが存在する場合、処理４２０が実行されるとしてよい。処理４２０は、署名済みマニフェストおよび対応するＯＥＭ  ＵＥＦＩ  ＢＩＯＳファームウェアボリュームを読み出すことを含む。処理４２０はさらに、リモート証明機関（ＣＡ）との間で署名済みマニフェスト（デジタル署名）を検証することを含むとしてよい。例えば、署名済みのマニフェストの認証は、マイクロプロセッササブシステム１１２およびマネジビリティエンジンファームウェア１３８を利用してＯＯＢ方式で実行されるとしてよい。
【００３７】
デジタル署名が一致し、対応する公開鍵が無効化されておらず期限が切れておらず、および、ＩＮ＿ＵＰＤＡＴＥ＿ＭＳＲモデル固有レジスタが偽を示しているか否かは、処理４２５において判断されるとしてよい。上記の条件が否定される場合、ＦＩＴの次のエントリを処理４３０で読み出すとしてよい。ＦＩＴエントリが全て完了したか否かは、処理４３５で判断するとしてよい。ＦＩＴエントリが全て完了している場合（つまり、ＦＩＴには試験していないエントリが無い場合）、処理４１５を実行するとしてよい。デジタル署名が一致し、対応する公開鍵が無効化されておらず期限が切れておらず、ＩＮ＿ＵＰＤＡＴＥ＿ＭＳＲモデル固有レジスタが偽である場合、処理４４０において完全ブートがイネーブルされるとしてよい。完全ブートは、高位の技術および他のハードウェア機能をイネーブルすることを含むとしてよい。
【００３８】
処理４４５は、セキュリティ（ＳＥＣ）フェーズ、プラットフォーム環境初期化（ＰＥＩ）フェーズおよび／またはドライバ実行環境（ＤＸＥ）を含むＵＥＦＩ  ＢＩＯＳファームウェアへ制御を渡すことを含むとしてよい。ＵＥＦＩファームウェア更新が存在するか否かを処理４５０において判断するとしてよい。ＵＥＦＩファームウェア更新が存在する場合、処理４５５において、この更新はＵＥＦＩファームウェア確認処理を用いて検証されるとしてよい。処理４６０は、モデル固有レジスタＩＮ＿ＵＰＤＡＴＥ  ＭＳＲを設定して、フラッシュメモリにおいてＵＥＦＩファームウェアを更新して、モデル固有レジスタＩＮ＿ＵＰＤＡＴＥ  ＭＳＲをクリアすることを含む。この後、処理４６５においてリセットを開始するとしてよい。ＵＥＦＩファームウェア更新が存在しない場合、ＵＥＦＩ  ＢＩＯＳファームウェアは処理４７０においてブートを終了するとしてよい。
【００３９】
図５は、リセットからＯＳブートまでのブートプロセス５００に対応付けられている処理を示す図である。図５のブートプロセス５００は、本明細書で説明している、ＢＩＯＳファームウェアの検証が成功する場合に対応する。プロセス５００には、２つのフェーズ（フェーズ１およびフェーズ２）が存在し、複数のサブフェーズが存在するとしてよい。プロセス５００は、リセット（例えば、電源オンリセットまたはＣＰＵ限定リセット）５０２によって開始されるとしてよい。リセットに応じて、初期化ファームウェア検証モジュールを含むプロセッサ初期化モジュールを、サブフェーズ５０４において、本明細書で説明するように実行するとしてよい。初期化ファームウェア検証モジュールは、本明細書で説明しているように、ＦＩＴの位置を特定して、初期化ファームウェアを認証するように構成されているとしてよい。初期化ファームウェアはこの後、本明細書で説明しているように、サブフェーズ５０６において、ＯＥＭ  ＢＩＯＳを検証し、および／または、インターコネクトファブリック（例えば、ＱＰＩ）およびシステムメモリをイネーブルするとしてよい。サブフェーズ５０４およびサブフェーズ５０６はフェーズ１に含まれている。フェーズ１の処理は、プロセッサ初期化モジュールおよび初期化ファームウェアによって実行されるとしてよく、このため比較的セキュアであるとしてよい。ＵＥＦＩ  ＢＩＯＳファームウェアはこの後、サブフェーズ５０８において、プラットフォーム（例えば、システム１００）を初期化するとしてよい。これには、ＳＥＣ、ＰＥＩおよびＤＸＥが含まれる。ＳＥＣは、一時的なメモリストレージを構築する。これらに限定されないが、プロセッサＣＡＲ（Ｃａｃｈｅ  Ａｓ  ＲＡＭ）を利用してＰＥＩコアおよびＰＥＩモジュールを実行する。ＤＸＥが開始されると、初期化したメモリが利用可能になるはずである。ＤＸＥは、ＰＣＩ、ＵＩ、ＵＳＢ、Ｉ／Ｏ、レガシーＢＩＯＳ、ＳＭＢＩＯＳおよび／またはＡＣＰＩを含むとしてよい。このプロセスは、オペレーティングシステムのブートを開始することに対応する、ブートデバイス選択のサブフェーズ５１０で終了するとしてよい。サブフェーズ５０８およびサブフェーズ５１０はフェーズ２に含まれている。フェーズ１は、初期化ファームウェア検証およびＢＩＯＳ検証を含む。フェーズ２は、認証が済んだＵＥＦＩ  ＢＩＯＳファームウェアおよびブートデバイス選択の開始および実行を含む。
【００４０】
一般的に、本開示ではＢＩＯＳストレージ攻撃に対する保護および通知を実行するシステム（および方法）を提供する。システムの一例を挙げると、プロセッサ不揮発性メモリに格納されているプロセッサ制御および／またはデータ状態を含むプロセッサ初期化モジュールと、プロセッサに結合されており、プロセッサパッケージにおいて不揮発性メモリに格納されている初期化ファームウェアとを備える。初期化ファームウェア検証モジュールを含むプロセッサ初期化モジュールはリセットに応じて最初に実行され、初期化ファームウェア検証モジュールは初期化ファームウェアを検証するように構成されている。初期化ファームウェアは、初期化ファームウェア検証モジュールによる検証の後に実行され、ＢＩＯＳを検証するように構成されている。初期化ファームウェアおよび／またはＢＩＯＳの検証が失敗すると、システムは、初期化ファームウェアおよび／またはＢＩＯＳが実行されないようにすること、（例えば、アウトオブバンド（ＯＯＢ）通信を利用して）修復を開始すること、モデル固有レジスタ（ＭＳＲ）を利用して検証の失敗を報告すること、プロセッサを停止させること、シャットダウンすること、および／または、機能を限定した（「検疫」）モードでＢＩＯＳを実行させオペレーティングシステム（ＯＳ）をブートさせることのうち少なくとも一つを実行するように構成されている。検疫モードでは、ＢＩＯＳおよびＯＳがシステムの一部の機能を利用できないようになっているとしてよい。
【００４１】
「回路」という用語は、本明細書の任意の実施形態で用いる場合、例えば、ハードワイヤード回路、プログラム可能回路、ステートマシン回路、埋込コントローラ、および／または、プログラム可能回路が実行する命令を格納しているファームウェアを、単独または組み合わせて、含むとしてよい。
【００４２】
ＯＳ１５０は、任意の汎用オペレーティングシステムまたはカスタムオペレーティングシステムを含むとしてよい。例えば、ＯＳ１５０は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、ＨＰ−ＵＸ、Ｌｉｎｕｘ（登録商標）またはＵＮＩＸ（登録商標）および／または他の汎用オペレーティングシステムを利用して実現するとしてよい。
【００４３】
図３、図４および図５ではさまざまな実施形態に応じて方法を図示しているが、図示した処理のうち全てが任意の実施形態で必要ではないと理解されたい。本開示の他の実施形態では図３、図４および／または図５に図示している処理を、図面には具体的に示していないが本開示に十分に準拠した方法で組み合わせ得ることを本明細書では十分に考慮している。このため、一の図面で明確に図示していない特徴および／または処理に関する請求項は、本開示の範囲および内容に含まれるものとする。
【００４４】
本明細書で説明している実施形態は、例えば、ハードウェア、ソフトウェアおよび／またはファームウェアを用いて本明細書で説明した方法および／または処理を実行することで実現されるとしてよい。本明細書で説明している特定の実施形態は、機械が実行すると当該機械が本明細書で説明した方法および／または処理を実行するような機械実行可能命令を格納している有形の機械可読媒体として提供されるとしてよい。有形の機械可読媒体は、これらに限定されないが、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）および光磁気ディスク等の任意の種類のディスク、リードオンリーメモリ（ＲＯＭ）等の半導体デバイス、ダイナミックランダムアクセスメモリ（ＲＡＭ）およびスタティックＲＡＭ等のＲＡＭ、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気カードまたは光カード、または、電子命令を格納するのに適した任意の種類の有形媒体を含むとしてよい。機械は、任意の適切なプロセッシングプラットフォーム、デバイスまたはシステム、コンピューティングプラットフォーム、デバイスまたはシステムを含むとしてよく、ハードウェアおよび／またはソフトウェアの任意の適切な組み合わせを用いて実現されるとしてよい。命令は、任意の適切な種類のコードを含むとしてよく、任意の適切なプログラミング言語を用いて実現されるとしてよい。
【００４５】
このため、本開示の一実施形態によると、コンピューティングプラットフォームのベーシックインプットアウトプットシステム（ＢＩＯＳ）を検証する方法が提供される。当該方法は、コンピューティングプラットフォームのプロセッサにプロセッサ初期化モジュールが含まれていて、プロセッサ初期化モジュールが初期化ファームウェア検証モジュールを含み、リセットに応じてプロセッサ初期化モジュールを実行する段階と、初期化ファームウェア検証モジュールを用いてコンピューティングプラットフォームのプロセッサパッケージ内の不揮発性メモリに格納されている初期化ファームウェアの検証を試みる段階と、再プログラミング可能な不揮発性メモリに含まれているＢＩＯＳの検証を初期化ファームウェアを用いて試みる段階と、初期化ファームウェアおよびＢＩＯＳのうち少なくとも一方の検証が失敗した場合、少なくとも一の応答を開始する段階とを備える。
【００４６】
別の実施形態によると、本開示はコンピューティングプラットフォームを提供する。当該コンピューティングプラットフォームは、プロセッサ初期化モジュールを含むプロセッサと、初期化ファームウェアを格納しているオフダイ不揮発性メモリとを有するプロセッサパッケージを備える。プロセッサ初期化モジュールは、初期化ファームウェア検証モジュールを含む。当該コンピューティングプラットフォームはさらに、ベーシックインプットアウトプットシステム（ＢＩＯＳ）ファームウェアを格納している再プログラミング可能な不揮発性メモリを備える。当該プロセッサは、コンピューティングプラットフォームのリセットに応じてプロセッサ初期化モジュールを実行し、初期化ファームウェア検証モジュールを用いて初期化ファームウェアの検証を試みて、初期化ファームウェアを用いてＢＩＯＳファームウェアの検証を試みて、初期化ファームウェアおよびＢＩＯＳファームウェアの少なくとも一方の検証が失敗すると、少なくとも一の応答を開始する。
【００４７】
別の実施形態によると、本開示は、１以上のプロセッサで実行すると１以上のプロセッサが以下の手順を含む処理を実行するような命令を格納している有形のコンピュータ可読媒体を提供する。当該処理は、コンピューティングプラットフォームのプロセッサにプロセッサ初期化モジュールが含まれていて、プロセッサ初期化モジュールが初期化ファームウェア検証モジュールを含み、リセットに応じてプロセッサ初期化モジュールを実行する手順と、初期化ファームウェア検証モジュールを用いてコンピューティングプラットフォームのプロセッサパッケージ内の不揮発性メモリに格納されている初期化ファームウェアの検証を試みる手順と、再プログラミング可能な不揮発性メモリに含まれているＢＩＯＳの検証を初期化ファームウェアを用いて試みる手順と、初期化ファームウェアおよびＢＩＯＳのうち少なくとも一方の検証が失敗した場合、少なくとも一の応答を開始する手順とを有する。
【００４８】
本明細書で用いた用語および表現は、説明のために用いているのであって限定を目的としたものではなく、特定の用語および表現を利用したとしても、図示および説明した特徴の均等物（またはその一部）を除外する意図はなく、請求項の範囲内においてさまざまな変形例が可能であると認められたい。したがって、請求項はこのような均等例をすべて含むものとする。
【００４９】
さまざまな特徴、側面および実施形態を本明細書で説明してきた。特徴、側面および実施形態は、当業者であれば理解されるように、互いに組み合わせ可能であると同時に、変更および変形も可能である。本開示は、このため、このような組み合わせ例、変更例および変形例を含むものと見なされるべきである。
【図１】
0005767751.tif 000002
【図２】
0005767751.tif 000003
【図３】
0005767751.tif 000004
【図４】
0005767751.tif 000005
【図５】
0005767751.tif 000006