IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 廣逹電腦股▲ふん▼有限公司の特許一覧

特許7382446プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム
<>
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図1
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図2
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図3
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図4
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図5A
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図5B
  • 特許-プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-08
(45)【発行日】2023-11-16
(54)【発明の名称】プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231109BHJP
   G06F 8/65 20180101ALI20231109BHJP
   G06F 9/4401 20180101ALI20231109BHJP
【FI】
G06F21/57 350
G06F8/65
G06F21/57 320
G06F9/4401
【請求項の数】 9
(21)【出願番号】P 2022085651
(22)【出願日】2022-05-26
(65)【公開番号】P2023066353
(43)【公開日】2023-05-15
【審査請求日】2022-05-26
(31)【優先権主張番号】17/513,548
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508018934
【氏名又は名称】廣達電腦股▲ふん▼有限公司
【氏名又は名称原語表記】Quanta Computer Inc.
【住所又は居所原語表記】No.188,Wenhua 2nd Rd.,Guishan Dist.,Taoyuan City 333,Taiwan
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】温 子恒
(72)【発明者】
【氏名】董 彦屏
(72)【発明者】
【氏名】林 威宏
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2017-173893(JP,A)
【文献】国際公開第2010/140623(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 8/65
G06F 9/4401
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムにおいて、正確なファームウェアイメージの実行を確保するファームウェアイメージ検査システムであって、前記ファームウェアイメージ検査システムは、
第一プロジェクト名を有するファームウェアイメージを保存するフラッシュメモリと、
プラットフォームファームウェア回復(PFR)ルーティンを実行するプログラム可能論理回路であって、第二プロジェクト名を保存するアクティブ領域を有する不揮発性メモリを有し、前記ファームウェアイメージの前記第一プロジェクト名と、前記不揮発性メモリに保存された前記第二プロジェクト名と、を比較し、前記第一プロジェクト名と前記第二プロジェクト名とが一致しない場合に、前記フラッシュメモリの前記ファームウェアイメージにアクセスするのを防止するプログラム可能論理回路と、
を備えることを特徴とするシステム。
【請求項2】
ベースボードマネジメントコントローラー(BMC)をさらに備え、前記ファームウェアイメージは、BMCファームウェアイメージであることを特徴とする請求項1に記載のシステム。
【請求項3】
前記ファームウェアイメージは、基本入出力システム(BIOS)ファームウェアイメージであることを特徴とする請求項1に記載のシステム。
【請求項4】
前記プログラム可能論理回路は、ファームウェアアップデートの第三プロジェクト名と、保存された前記第二プロジェクト名と、を比較し、前記ファームウェアアップデートの前記第三プロジェクト名と、保存された前記第二プロジェクト名とが一致しない場合に、前記ファームウェアアップデートのローディングを防止することを特徴とする請求項1に記載のシステム。
【請求項5】
コンピュータシステムにおいて、正確なファームウェアイメージを確保するファームウェアイメージ検査方法であって、前記ファームウェアイメージ検査方法は、
プラットフォームファームウェア回復(PFR)ルーティンを実行するプログラム可能論理回路のメモリが、第二プロジェクト名を保存する工程と、
前記プログラム可能論理回路が、保存された前記第二プロジェクト名と、ファームウェアイメージの第一プロジェクト名と、を比較する工程と、
前記プログラム可能論理回路が、保存された前記第二プロジェクト名と、前記ファームウェアイメージの前記第一プロジェクト名とが一致しない場合に、前記ファームウェアイメージにアクセスするのを防止する工程と、
を有することを特徴とする方法。
【請求項6】
前記ファームウェアイメージは、ベースボードマネジメントコントローラー(BMC)によって実行可能なBMCファームウェアイメージであることを特徴とする請求項5に記載の方法。
【請求項7】
前記ファームウェアイメージは、基本入出力システム(BIOS)ファームウェアイメージであることを特徴とする請求項5に記載の方法。
【請求項8】
前記プログラム可能論理回路が、ファームウェアアップデートイメージの第三プロジェクト名と、保存された前記第二プロジェクト名と、を比較する工程と、
前記第三プロジェクト名と、前記第二プロジェクト名とが一致しない場合に、前記ファームウェアアップデートイメージのローディングを防止する工程と、
をさらに有することを特徴とする請求項5に記載の方法。
【請求項9】
コンピュータシステムであって、
基本入出力システム(BIOS)を実行するプロセッサと、
ベースボードマネジメントコントローラー(BMC)と、
前記プロセッサに結合された第一フラッシュメモリデバイスであって、BIOSファームウェアイメージと、前記BIOSファームウェアイメージの第一BIOSプロジェクト名と、を保存する第一フラッシュメモリデバイスと、
前記BMCに結合された第二フラッシュメモリデバイスであって、BMCファームウェアイメージと、前記BMCファームウェアイメージの第一BMCプロジェクト名と、を保存する第二フラッシュメモリデバイスと、
前記第一及び第二フラッシュメモリデバイスに結合されたプログラム可能論理回路であって、第二プロジェクト名を保存する不揮発性メモリを有し、プラットフォームファームウェア回復ルーティン(PFR)を実行して、前記BMCを起動する前に、又は、前記プロセッサが前記BIOSファームウェアイメージを実行する前に、前記BIOSファームウェアイメージに関連する前記第一BIOSプロジェクト名、及び、前記BMCファームウェアイメージに関連する前記第一BMCプロジェクト名と、前記不揮発性メモリに保存された前記第二プロジェクト名と、を比較するプログラム可能論理回路と、
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムの起動(boot-up)中の適切なファームウェアイメージの確保に関し、特に、ファームウェアプラットフォーム回復(FPR)の実行中に、正確なファームウェアがハードウェアプラットフォーム上でアクセスされることを確保するシステムに関する。
【背景技術】
【0002】
コンピュータシステム(例えば、デスクトップコンピュータ、ブレードサーバ、ラック搭載サーバ等)は、各種アプリケーションにおいて大量に用いられている。コンピュータシステムは、一般的な計算操作を実行する。典型的なコンピュータシステム(例えば、サーバ)は、一般的に、ハードウェア素子(例えば、プロセッサ、メモリデバイス、ネットワークインターフェースカード、電源及び他の特殊なハードウェア)を有する。
【0003】
サーバは、高需要アプリケーション(例えば、ネットワークベースシステム又はデータセンター等)に大量に用いられている。クラウド計算アプリケーションの出現は、データセンターの需要を増加させている。データセンターは、大量のサーバを有しており、サーバは、データを保存するとともに、遠隔接続されたコンピュータデバイスのユーザーによりアクセスされるアプリケーションを実行する。一般的なデータセンターは、物理的なシャーシ構造を有しており、それに付随する電源及び通信接続を有する。各ラック(rack)は、複数のコンピューティングサーバ及びストレージサーバを固定することができる。個々のサーバは、複数の同一のハードウェア素子(例えば、プロセッサ、ストレージカード、ネットワークインターフェースコントローラー等)を有する。
【0004】
コンピュータシステム(例えば、サーバ)は、基本入出力システム(BIOS)イメージを有しており、BIOSイメージは、通常、シリアルペリフェラルインターフェース(SPI)EEPROMフラッシュメモリデバイスに保存され、プロセッサによって、コンピュータシステムの起動中に実行される。BIOSは、コンピュータシステムの起動前に、ハードウェア素子からの基本的な入出力をテストするために用いられる。BIOSファームウェア(BIOSイメージ)は、通常、マザーボード上のフラッシュメモリデバイスに保存されている。
【0005】
また、サーバは、ベースボードマネジメントコントローラー(BMC)を用いて、バックグラウンド処理(例えば、電力や冷却等)を管理する。BMCは、BMCによって実行されるファームウェアに従って、コンピュータシステムの操作に関するデータを様々なログに収集する。例えば、異なるハードウェア素子に関するデータは、システムイベントログ(SEL)に保存され、SELは、さらに、BMCファームウェアイメージと共にフラッシュメモリデバイスに書き込まれる。このように、組み込みシステムファームウェア(BMCファームウェア)は、障害の発生時にベンダーがシステム状態を分析するのに有用なシステム実行ログも保存している。このように、コンピュータシステムは、プロセッサ及びBMCの基本操作のファームウェアイメージを保存するために、信頼性のある不揮発性メモリデバイス(例えば、フラッシュメモリデバイス)に依存している。
【0006】
サーバは、通常、ネットワークに接続されているので、悪意のあるユーザーは、サーバの正確な操作を阻止するために、様々な方法で攻撃を試みる。例えば、永続的なサービス拒否(DOS)攻撃は、サーバのファームウェアを変更して、サーバの操作を阻止する。この種の攻撃は、データセンターの数日から数週間の停止時間(downtime)を生じさせるとともに、数百万のユーザーに影響する可能性がある。これらの永続的なDOS攻撃を実施する一つの方法は、攻撃者が、重要なシステム(例えば、サーバのBIOS又はBMC)のファームウェアイメージを、エラーのあるファームウェアイメージに置き換えることである。
【0007】
永続的なDOS攻撃に対する一つの解決策は、プラットフォームファームウェア回復(PFR)であり、これは、インテルIntel(登録商標)が提供するルーティンであり、フィールドプログラマブルゲートアレイ(FPGA)で実行される。PFRは、コンピュータシステムのシステムバス上の悪意のあるトラフィックを監視し、フィルタリングする。また、PFRは、任意のファームウェアコードが実行される前に、プラットフォームファームウェアイメージのインテグリティ(integrity)を検証する。PFRは、エラーのあるファームウェアを、保護された既知のリカバリーイメージに自動的に復元する。よって、PFRは、エラーのあるファームウェアの挿入を防止し、これにより、永続的なDOS攻撃を防止する。
【0008】
ハードウェアプラットフォームの初期起動(power-on)を実行する場合、PFRは、T-1モードと呼ばれるプレブート(pre-boot)環境に移行する。T-1モードにおいて、PFRは、署名(signature)により、重要なファームウェア(例えば、BMC及びBIOSファームウェアイメージ)に対して認証(authentication)を実行する。BMC及びBIOSファームウェアイメージは、共に、ルートキー(root key)及びコード署名キー(CSK)により認証された署名を有する。ルートキーは、別のキーを署名するのに用いられる認証用の主要な一定値として設計されたキーであり、全てのキーチェーン(key chain)のルートを形成する。ルートキーは、CSKにアクセスするために用いられるので、この構成は、二層の安全性を提供する。このようなキーは、AWS等の中立的なサードパーティ(neutral third party)が有償で生成することができる。しかし、一つの問題は、OEM(original equipment manufacturers)が、通常、各ハードウェアプラットフォーム専用のキーに対して追加料金を払うよりも、同じルートキー及びCSKを、異なるハードウェアプラットフォームの複数のバージョンのハードウェアに使用することが多いことである。通常、異なるハードウェアプラットフォームの各々には、プラットフォームのOEMによって、識別のための異なるプロジェクト名(project name)が与えられる。よって、特定のハードウェアプラットフォームの不正なファームウェアが、認証のために適切な署名を有することがある。同じルートキー及びCSKによって署名された異なるハードウェアプラットフォームが、プラットフォーム上で不正なファームウェアイメージを用いる場合、PFRは、依然として認証の実行に成功するとともに、不正なファームウェアイメージのアクセスを許可する。しかし、不正なファームウェアイメージをローディングすると、ハードウェアプラットフォームが正常に起動できなくなることがある。また、不正なプロジェクトファームウェアイメージを用いて既存のファームウェアイメージをアップデートする場合にも、同様の結果が発生する可能性がある。
【0009】
よって、認証プロセスの間に、PFRが、正確なファームウェアを適切に識別できるようにするルーティンが必要である。また、プラットフォームのハードウェアプロビジョニング(hardware provisioning)処理の間に、ハードウェアプラットフォームのプロジェクト名をPFRに提供する便利な方法が必要である。プロジェクト名を用いて、ファームウェアアップデートがハードウェアプラットフォームと正確にマッチングされることを確保することも必要である。
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明は、プラットフォームファームウェア回復実行からの起動失敗を回避する方法及びシステムを提供する。
【課題を解決するための手段】
【0011】
実施形態という用語及び同様の用語は、本開示及び以下の請求項の発明の全てに広く言及することを意図している。これらの用語を含む記述は、本明細書に記載される発明を限定するものではないし、以下の請求項の意義や範囲を限定するものでもないことを理解されたい。本明細書でカバーされる本発明の実施形態は、この概要ではなく、以下の請求項により定義される。この概要は、本開示の各種態様の高レベルの概説であり、且つ、以下の詳細な説明の段落でさらに記述されるいくつかの概念を導入する。この概要は、請求される発明の重要な必須の特徴を特定することを意図していない。この概要は、請求される発明の範囲を決定するために単独で用いられることを意図していない。発明は、本開示の明細書全体、任意の又は全ての図面及び各請求項の適切な部分を参照することにより理解されるべきである。
【0012】
開示される例は、コンピュータシステムにおける正確なファームウェアイメージの実行を確保するシステムである。システムは、プラットフォームファームウェア回復ルーティンを実行するプログラム可能論理回路を有する。プログラム可能論理回路は、プロジェクト名を保存するアクティブ領域を有する不揮発性メモリを有する。フラッシュメモリは、プロジェクト名を含むファームウェアイメージを保存する。プログラム可能論理回路は、ファームウェアイメージのプロジェクト名と、不揮発性メモリに保存されたプロジェクト名と、を比較するように構成されている。プロジェクト名が一致しない場合、プログラム可能論理回路は、フラッシュメモリ上のファームウェアイメージにアクセスするのを防止する。
【0013】
例示的システムのさらなる実施形態は、システムが、ベースボードマネジメントコントローラー(BMC)を有し、且つ、ファームウェアイメージが、BMCファームウェアイメージである一実施形態である。別の実施形態は、プログラム可能論理回路が、フィールドプログラマブルゲートアレイ(FPGA)である。別の実施形態は、ファームウェアイメージが、基本入出力システム(BIOS)ファームウェアイメージである。別の実施形態は、プログラム可能論理回路が、ファームウェアイメージの署名を、保存された公開キー(public key)で認証する。別の実施形態は、ファームウェアイメージのプロジェクト名が、フラッシュメモリに保存されたプラットフォームファームウェアマニフェスト(PFM)データ構造のフィールド(field)に保存される。別の実施形態は、コンピュータシステムが最初にプロビジョニングされる(initially provisioned)場合に、プロジェクト名が不揮発性メモリに保存される。別の実施形態は、プログラム可能論理回路が、ファームウェアアップデートイメージのプロジェクト名と、保存されたプロジェクト名と、を比較し、プロジェクト名が一致しない場合に、ファームウェアアップデートイメージのローディングを防止する。
【0014】
開示される別の例は、コンピュータシステムにおいて正確なファームウェアイメージを確保する方法である。プロジェクト名は、プラットフォームファームウェア回復ルーティンを実行するプログラム可能論理回路のメモリに保存される。保存されたプロジェクト名は、ファームウェアイメージのプロジェクト名と比較される。保存されたプロジェクト名がファームウェアイメージのプロジェクト名と一致しない場合に、ファームウェアイメージへのアクセスが防止される。
【0015】
例示的な方法のさらなる実施形態は、ファームウェアイメージが、ベースボードマネジメントコントローラー(BMC)によって実行可能なBMCファームウェアイメージである一実施形態である。別の実施形態は、プログラム可能論理回路が、フィールドプログラマブルゲートアレイ(FPGA)である。別の実施形態は、ファームウェアイメージが、基本入出力システム(BIOS)ファームウェアイメージである。別の実施形態は、方法が、プログラム可能論理回路により、保存された公開キーで、ファームウェアイメージの署名を認証する工程をさらに有する。別の実施形態は、ファームウェアイメージのプロジェクト名が、プラットフォームファームウェアマニフェストデータ構造のフィールドに保存される。別の実施形態は、方法が、コンピュータシステムのプロビジョニング処理の間にプロジェクト名を保存する工程をさらに有する。別の実施形態は、方法が、プログラム可能論理回路により、ファームウェアアップデートのプロジェクト名と、保存されたプロジェクト名と、を比較する工程をさらに有する。方法は、プロジェクト名が一致しない場合に、ファームウェアアップデートのローディングを防止する。
【0016】
開示される別の例は、基本入出力システム(BIOS)を実行するプロセッサと、ベースボードマネジメントコントローラー(BMC)と、を有するコンピュータシステムである。第一フラッシュメモリデバイスは、プロセッサに結合されており、BIOSファームウェアイメージと、BIOSファームウェアイメージのプロジェクト名と、を保存する。第二フラッシュメモリデバイスは、BMCに結合されており、BMCファームウェアイメージと、BMCファームウェアイメージのプロジェクト名と、を保存する。プログラム可能論理回路は、第一及び第二フラッシュメモリデバイスに結合されている。プログラム可能論理回路は、プロジェクト名を保存する不揮発性メモリを有する。プログラム可能論理回路は、プラットフォームファームウェア回復ルーティンを実行して、BMCを起動する前に、又は、プロセッサがBIOSファームウェアイメージを実行する前に、BIOSファームウェアイメージのプロジェクト名及びBMCファームウェアイメージのプロジェクト名と、保存されたプロジェクト名と、を比較する。
【0017】
上記の概要は、本開示の各実施形態又は全ての態様を表すことを意図するものではない。むしろ、上述した概要は、本明細書に記載されるいくつかの新規な態様及び特徴の例を単に提供するに過ぎない。上記の特徴及び利点と他の特徴及び利点とは、添付の図面及び特許請求の範囲に関連して考慮される場合、本発明を実施するための代表的な実施形態及びモードの以下の詳細の説明から容易に明らかになるであろう。本開示の追加の態様は、以下に簡単な説明が提供される図面参照してなされる様々な実施形態の詳細な説明に照らして、当業者には明らかであろう。
【発明の効果】
【0018】
本発明により、ファームウェアプラットフォーム回復(FPR)の実行時に、正確なファームウェアがハードウェアプラットフォーム上でアクセスされることを確保することができる。
【0019】
本開示は、添付の図面を参照して、例示的な実施形態の以下の説明からより良く理解されるであろう。これらの図面は、単に、例示的な実施形態を示すものであり、よって、各種実施形態又は請求項の範囲を限定するものと見なされるべきではない。
【図面の簡単な説明】
【0020】
図1】本発明のある形態による、修正されたPFRルーティンを組み込んで、正確なファームウェアイメージを確保するコンピュータシステムのブロック図である。
図2】本発明のある形態による、異なるプロジェクト名を有するが、認証のキーが同じである、図1のコンピュータシステムを有する異なるプラットフォームを示す図である。
図3】本発明のある形態による、プロジェクト名を保存するのに用いられ、PFRにアクセス可能なプラットフォームファームウェアマニフェスト(PFM)データ構造を示す表である。
図4】本発明のある形態による、BIOSにより実行され、ハードウェアをセットアップするとともに、プロジェクト名をPFRに提供するプロビジョンルーティンのフローチャートである。
図5A】正確なBIOSファームウェアイメージのローディングを確保するBIOSイメージの例示的な認証ルーティンのフローチャートである。
図5B】正確なBMCファームウェアイメージのローディングを確保するBMCファームウェアイメージの例示的な認証ルーティンのフローチャートである。
図6】本発明のある形態による、アップデートされたファームウェアイメージを認証する例示的なルーティンのフローチャートである。
【発明を実施するための形態】
【0021】
添付の図面を参照して本発明を説明する。図面において、類似又は同様の要素を示すために同様の符号が用いられている。図面は、縮尺通りに示されておらず、これらは、本発明を単に例示するために提供されている。本発明のいくつかの態様を、例示的なアプリケーションを参照して以下に説明する。本発明の完全な理解を提供するために、多くの特定の詳細、関係及び方法が示されていることを理解されたい。しかし、当業者であれば、1つ以上の特定の詳細無しに又は他の方法を用いて本発明を実施することができることを容易に認識するであろう。他の例では、本発明が曖昧になるのを防ぐために、周知の構造又は動作を詳細に示していない。いくつかの動作が異なる順序で、及び/又は、他の動作や事象と同時に発生し得るので、本発明は、示された動作や事象の順序によって限定されない。さらに、本発明による方法を実施するために、示された全ての動作や事象が必要とされているわけではない。
【0022】
本発明は、多くの異なる形式で具体化される。図面に示され、且つ、ここで詳細に記述され、本発明を解釈する代表的な実施形態は、本発明の原理の例示又は説明としてみなされ、且つ、説明される実施形態の開示される広い態様を限定することを目的としていない。その程度を達成するため、例えば、要約、発明内容及び実施形態で開示されているが、請求項に明確に記載されていない要素及び限定は、単独で又は集合的に、暗示、推論又は他の方法で請求項に組み込まれるべきではない。本発明を詳細に説明する目的のため、特に断りのない限り、単数形は複数形を含み、その逆も同様である。また、「有する」という用語は「制限なしに有する」ことを意味する。さらに、近似の用語、例えば、「約(about)」、「ほとんど(almost)」、「実質的に(substantially)」、「おおよそ(approximately)」、「概ね(generally)」等の近似の用語は、ここでは、「…で(at)」、「…近くで(near)」、「…に近接して(nearly at)」、「…の3~5%内で」、「製造誤差の許容範囲内で」、又は、これらの任意の論理的組み合わせの意味を含むことができる。また、方向を示す語句、例えば、「頂部」、「底部」、「左側」、「右側」、「上方」、「下方」は、図面に示されているのと同等の方向、オブジェクト(複数可)又は要素(複数可)に対して一般的に使用される位置等から文脈的に理解できる方向、又は、本明細書に記載される方向に関するものであることを意図している。
【0023】
本発明は、特定のハードウェアプラットフォームのプロジェクト名を組み込んで、ファームウェアイメージとハードウェアプラットフォームとの互換性をチェックする修正されたプラットフォームファームウェア回復(PFR)ルーティンに関する。例示的なPFRルーティンは、プロジェクト名の確認を実行して、PFRがT-1段階である場合に、正確なファームウェアイメージを検証(validate)するとともに、ファームウェアをアップデートする前に、アップデートファームウェアイメージ検証を実行する。例示的なルーティンは、PFRプラットフォームが、不正なファームウェアイメージを許可して起動失敗を生じるのを防止することができ、よって、PFRにより実行されるセキュリティ機能が有効のまま維持され、適切なファームウェアが提供されることを確保する。
【0024】
図1は、ハードウェアプラットフォームの素子(例えば、コンピュータシステム100)のブロック図であり、PFRからのルーティンを実行し、コンピュータシステム100から、正確なファームウェアイメージのローディングを確保する。例示的なルーティンは、認証されたファームウェアイメージが、ハードウェアプラットフォームの正確なファームウェアイメージであることを確保する。この例において、コンピュータシステム100はサーバであるが、任意の適切なコンピュータデバイスは、ここで開示される概念を組み込むことができる。コンピュータシステム100は、二個の中央処理ユニット(CPU)110,112を有する。二個のCPUだけが示されているが、追加のCPUがコンピュータシステム100によりサポートされてもよい。専用の機能は、専用のプロセッサ(例えば、マザーボード上に搭載されたGPU、又は、コンピュータシステム100の拡張カード(expansion card))により実行されてもよい。
【0025】
プラットフォームコントローラーハブ(PCH)114は、CPU110,112と、他のハードウェア素子(例えば、シリアルアドバンスドテクノロジーアタッチメント(SATA)デバイス、オープンコンピュートプロジェクト(OCP)デバイス及びUSBデバイス)との間の通信を容易にする。SATAデバイスは、ハードディスクドライブ(HDD)を有してもよい。或いは、他のメモリストレージデバイス(例えば、半導体ドライブ(SSD))が用いられてもよい。他のハードウェア素子(例えば、PCIeデバイス)は、拡張スロット(図示省略)を介して、CPU110,112により直接アクセスされてもよい。追加のPCIeデバイスは、ネットワークインターフェースカード(NIC)、レイド(redundant array of inexpensive disks、RAID)カード、及び、プロセッサカード(例えば、グラフィックスプロセシングユニット(GPU)カード)を有してもよい。ダイレクトメディアインターフェース(DMI)バス116は、CPU110,112とPCH114との間の通信を可能にする。
【0026】
ベースボードマネジメントコントローラー(BMC)120は、コンピュータシステム100の操作(例えば、電源管理及び温度管理)を管理する。この例において、ローピンカウント/エンハンスド(low pin count/enhanced)シリアルペリフェラルインターフェース(LPC/eSPI)バス122は、PCH114とBMC120との間の通信を可能にする。別のシステムマネジメント(SM)バス124は、CPU110,112、BMC120、及び、フィールドプログラマブルゲートアレイ(FPGA)130間で管理コマンドを交換できるようにする。フラッシュメモリデバイス132は、基本入出力システム(BIOS)ファームウェアイメージを保存する。別のフラッシュメモリデバイス134は、BMCファームウェアイメージを保存する。この例において、PCH114は、マルチプレクサ(multiplexer)138に結合されたシリアルペリフェラルインターフェース(SPI)136を介して、フラッシュメモリ132にアクセスしてもよい。同様に、BMC120は、マルチプレクサ142を介して、別のSPI140からフラッシュメモリ134にアクセスしてもよい。
【0027】
フラッシュメモリデバイス132内のブロックは、コンピュータシステム100の起動ルーティン(start-up routine)を容易にする。PCH114は、コンピュータシステム100を起動するために、フラッシュメモリデバイス132に保存されたBIOSイメージのローディングを容易にする。この例において、フラッシュメモリデバイス134は、BMC120の操作のためのBMCファームウェアイメージを保存する。BMC120は、BMCファームウェアイメージを実行し、BMCファームウェアイメージは、コンピュータシステム100内のハードウェア素子の監視及び制御を可能にする。
【0028】
FPGA130は、PCH114及びBMC120が、SPI136,140を介して個別のフラッシュメモリ132,134にアクセスできるように、マルチプレクサ138,142を制御することができるピンを有する。この例において、FPGA130のハードウェアは、PFRルーティン150を実行するようにプログラミングされている。FPGA130は、PFRルーティンをサポートするデータ(例えば、コンピュータシステム100に関連するプロジェクト名)を保存するための内部の不揮発性ランダムアクセスメモリ(NVRAM)152を有する。この例において、フラッシュメモリ132,134の両方は、それぞれのフラッシュメモリ132,134に保存されたファームウェアイメージに関連するプロジェクト名を有するプラットフォームファームウェアマニフェスト(PFM)構造154を保存する。プロビジョニング処理の間に、FPGA130のハードウェアは、BIOSから、ルートキーハッシュ(root key hash)156が提供される。ルートキーハッシュ156は、NVRAM152に保存される。CSKは、ルートキーによって署名され、PFRルーティンの実行中に、ファームウェア及びフラッシュメモリを認証する。
【0029】
また、FPGA130は、電源ユニット(PSU)160、デジタル電圧レキュレーター(VR)162及びホットスワップバックプレーン(HSBP)164に結合されている。PFRルーティンからのファームウェアイメージの認証後に、FPGA130は、BMC120によるこれらの素子へのアクセスを可能にする。その後、FPGA130は、コンピュータシステム100の操作中に、BMC120との間のコマンドをフィルタリングする。
【0030】
この例において、FPGA130は、PFR150のファームウェアセキュリティ機能を有効にするためのルートオブトラスト(Root of Trust、RoT)として機能する。RoTは、PFRがセキュリティ機能(例えば、未認証のコード又は設計のローディング又は実行を防止すること、ソフトウェアによって試みられる破壊的な操作を防止すること、又は、既知のバグ(buds)や脆弱性(vulnerabilities)を有する古いコード又は設計の実行を防止すること等)を実行するのをアシストする機能を有する。PFR150は、コンピュータシステム100の安全な操作を提供するために、BMC120が認証を取り消すことを可能にする。
【0031】
この例において、FPGA130は、保存されたファームウェアイメージを認証し、エラーのあるファームウェアイメージがシステム100にダウンロードされることを防止するという目的のために、PFR150を実行する。この例において、FPGA130は、PFR150を実行するように特別にプログラミングされたIntel Max 10 FPGAである。しかし、任意のプログラム可能コントローラー又は他のFPGAが、セキュリティ機能を実行するために用いられてもよい。
【0032】
この例において、パブリック(公開)及びプライベート(秘密)ルートキーと、CSKとは、サードパーティーベンダー(例えば、AWS)により生成される。或いは、キーは、ハードウェアセキュリティモジュール(HSM)又はOpenSSLを用いて生成されてもよい。キーのうち一つは、ルートキーとして設計され、別のキーは、コード署名キー(CSK)として設計される。これらのキーは、非対称キーであり、それらが、パブリック及びプライベートキーの潜在的なペア(underlying pair)で形成されることを意味する。CSKキーは、例えばファームウェアイメージ等のオブジェクトに対して署名を生成し、ファームウェアイメージは、ハードウェアプラットフォームの製造者により分配され、ルートキーによって署名された対応するCSKキーで検証することができる。
【0033】
図2は、OEMによって製造されるハードウェアプラットフォームのシリーズを示す図である。この例において、OEMは、各ハードウェアプラットフォームに対して異なるプロジェクト名を指定している。よって、コンピュータシステム100は、12個の拡張カードを有し、指定されたプロジェクト名が「緑色」である、第一ハードウェアプラットフォームである。第二ハードウェアプラットフォーム210は、10個の拡張カードを有し、指定されたプロジェクト名が「青色」である。第三ハードウェアプラットフォーム220は、12個の拡張カードを有し、指定されたプロジェクト名が「茶色」である。第四ハードウェアプラットフォーム230は、20個の拡張カードを有し、指定されたプロジェクト名が「黄色」である。図2の各ハードウェアプラットフォームは、同じルートキー及びCSKを有しており、既知のPFRを実行する個別のFPGAにより認証を実行する。しかし、異なるプラットフォーム100,210,220,230の全てのファームウェアイメージが同じ署名を有するので、不正なファームウェアイメージが認証及びロードされる可能性がある。例えば、ハードウェアプラットフォーム210のファームウェアイメージが、ハードウェアプラットフォーム230に誤ってロードされる可能性がある。このようなファームウェアイメージは、適切な署名を有するが、ハードウェアプラットフォーム230と互換性がないので、起動時にハードウェアプラットフォーム230をクラッシュさせる可能性がある。
【0034】
コンピュータシステム100において、ルートキー及びCSKの公開キーは、秘密(private)キーを排他的に所有するOEMによって署名を生成するために使用される。署名は、フラッシュメモリ134に保存されたBMCファームウェアイメージと、フラッシュメモリ132に保存されたBIOSファームウェアイメージと、任意の他のファームウェアイメージと、に対して生成される。上述したように、FPGA130は、ルートキーハッシュ156を保存する。ルートキーハッシュ156は、CSKを署名して、任意のファームウェアイメージの署名を認証するために用いられる。この例において、PFR150は、ハードウェアプラットフォームのプロビジョニングルーティンからプロビジョニングデータを受信する。プロビジョニングデータは、プロジェクト名を有する。
【0035】
プロビジョニングの後に、BMC及びBIOSファームウェア構築プロセスが実行される。このプロセスの間、プラットフォームファームウェアマニフェスト(PFM)データ構造154が生成され、フラッシュメモリ132,134に保存される。データ値が、ファームウェアイメージを保存するフラッシュメモリ内のPFMデータ構造154に保存される。例えば、フラッシュメモリ132に保存されるPFMデータ構造154は、フラッシュメモリ132に保存されるBIOSイメージに関連するプロジェクト名データを有する。同様に、フラッシュメモリ134に保存されるPFMデータ構造154は、フラッシュメモリ134に保存されるBMCファームウェアイメージに関連するプロジェクト名データを有する。この例において、対応するファームウェアイメージが正確である場合、PFMデータ構造154は、ハードウェアプラットフォーム(コンピュータシステム100)に固有のプロジェクト名(例えば、「緑色」)を含むはずである。
【0036】
NVRAM152に保存されたプロジェクト名は、保存されたファームウェアイメージに関連するPFMデータ構造154に保存されたプロジェクト名が、ハードウェアプラットフォームに対して正確であるか否かを、PFR150が確認するために用いられる。図3は、例示的なルーティンにより用いられる図1のPFMデータ構造154を示す表300である。PFMデータ構造154の表300は、タグフィールド310と、セキュリティバージョンナンバーフィールド312と、最もよく知られた構成(best known configuration、BKC)バージョンフィールド314と、PFM補正フィールド(PFM revision)316と、保留(reserved)フィールド318と、OEM特別データ(OEM specific data)フィールド320と、長さフィールド322と、PFM本体(PFM body)フィールド324と、パッド(padding)フィールド326と、を有する。BMC及びBIOSファームウェア構築プロセス中に、PFMデータ構造154のフィールドの値がデータ構造154に書き込まれる。この例において、OEM特別データフィールド320は、ハードウェアプラットフォームのOEMによって指定されたプロジェクト名を有する。よって、プロジェクト名「緑色」が、コンピュータシステム100のデータフィールド320に書き込まれて、コンピュータシステム100に関連するファームウェアイメージに使用される。
【0037】
プロビジョニング処理後に、PFR150は、ハードウェアプラットフォーム(例えば、コンピュータシステム100)の起動中に、FPGA130によって実行される。PFR150がT-1段階になると、PFR150は、図1のフラッシュメモリ132,134にアクセスして、ルートキー及びCSKペアの公開キーから生成された署名を認証することにより、各フラッシュメモリ132,134のアクティブ(active)領域及びリカバリー(recovery)領域の認証を実行する。認証が成功した場合に、全てのファームウェアイメージがフラッシュメモリ132,134からロードされる。この例において、PFR150は、ファームウェアイメージのローディングを許可する前に、ファームウェアイメージに関連するプロジェクト名を検証する。このプロジェクト名は、フラッシュメモリのアクティブ領域内のPFMデータ構造154のOEM特別データフィールドに保存されている。PFMデータ構造154からのファームウェアイメージのプロジェクト名が、NVRAM152に保存されたプロジェクト名と一致する場合には、ファームウェアイメージが正確であるので、PFR150は、コンピュータシステム100の認証ルーティンを継続する。ファームウェアイメージのプロジェクト名が、NVRAM152に保存されたプロジェクト名と一致しない場合には、PFR150は、不正なファームウェアイメージを保存する個別のフラッシュメモリへのアクセスを阻止するとともに、オペレーティングシステムがブートするのを防止する。
【0038】
同様に、ファームウェアイメージをアップデートする場合、BMC120又はBIOSは、それぞれのファームウェアイメージをアップデートするための要求を送信する。FPGA130は、要求を受信すると、アップデートされたファームウェアイメージを認証する。PFR150は、フラッシュメモリと、アップデートされたファームウェアイメージと、を認証する。また、PFR150は、アップデートされたファームウェアイメージに関連するプロジェクト名と、NVRAM152に保存されたプロジェクト名と、を検証する。プロジェクト名が正確である場合、PFR150は、アップデートフローを続行し、アップデートされたファームウェアイメージがフラッシュメモリ内でアクセスされるのを許可する。プロジェクト名が正確でない場合、PFR150は、このアップデートを拒否する。このようにして、例示的なルーティンは、正確なファームウェアイメージがロードされて、コンピュータシステム100を正確に操作するよう確保する。
【0039】
図4は、図1のPFMデータ構造154にプロジェクト名を書き込むプロビジョニング処理のフロー図である。BIOSは、プレブート実行環境(pre-boot execution environment、PXE)ルーティンにより、プロビジョニング処理を初期化する(410)。PXEにより、外部のサーバとの通信が確立される(412)。ハードウェアプラットフォーム上の素子をプロビジョニングするためのテンプレートがロードされる(414)。ルートキーハッシュ156と、アクティブ、リカバリー及びステージング領域(staging region)のSPIオフセット(offset)と、プロジェクト名とが、BIOSによって受信される(416)。BIOSは、SPIオフセットを用いて、アクティブ、リカバリー及びステージング領域のフラッシュメモリ内の位置を決定する。BIOSは、ルートキーハッシュ156と、アクティブ、リカバリー及びステージング領域のSPIオフセットと、プロジェクト名とを、FPGA130に送信する(418)。そして、PFR150は、ルートキーハッシュ156と、アクティブ、リカバリー及びステージング領域のSPIオフセットと、プロジェクト名とを保存する(420)。この例において、ルートキーハッシュ156は、FPGA130内でプログラミングされ、ルートキーハッシュ156と、アクティブ、リカバリー及びステージング領域のSPIオフセットと、プロジェクト名とが、NVRAM152に保存される。
【0040】
図5Aは、ハードウェアプラットフォームに関連するプロジェクト名を用いて、BIOSファームウェアイメージを認証するPFRルーティンを示す図である。図1のPFR150は、先ず、BMC120及びBIOSがリセットされないように保持する(510)。PFR150は、NVRAM152に保存されたプロジェクト名に対する指標(pointer)を読み取って、保存されたプロジェクト名を読み取るとともに、フラッシュメモリ132内のPFMデータ構造154に保存されたプロジェクト名を読み取る(512)。そして、PFR150は、保存されたプロジェクト名と、フラッシュメモリ132内のPFMデータ構造154に保存されたBIOSファームウェアイメージのプロジェクト名と、を比較する。PFR150は、BIOSファームウェアイメージのプロジェクト名が、保存されたプロジェクト名と一致するか否かを判断することにより、プロジェクト名が正確であるか否かを判断する(514)。BIOSファームウェアイメージのプロジェクト名が正確でない場合、PFR150は、起動を停止する(516)。プロジェクト名が正確である場合、PFR150は、BIOSファームウェアイメージの署名を読み取る(518)。PFR150は、ルートキーハッシュ156を用いて、BIOSファームウェアイメージの署名が認証済みか否か判断する(520)。署名が認証済みでない場合(520)、PFR150は、フラッシュメモリ132へのアクセスを防止するとともに、起動を防止する(516)。署名がルートキーハッシュから認証される場合、PFR150は、BIOSをリリースするとともに、BIOSをリセットして、起動プロセスを開始させる(522)。
【0041】
図5Bは、ハードウェアプラットフォームに関連するプロジェクト名を用いて、BMCファームウェアイメージを認証するPFRルーティンを示す図である。図1のPFR150は、先ず、BMC120及びBIOSがリセットされないように保持する(550)。PFR150は、NVRAM152に保存されたプロジェクト名に対する指標を読み取って、保存されたプロジェクト名を読み取るとともに、フラッシュメモリ134内のPFMデータ構造154に保存されたプロジェクト名を読み取る(522)。そして、PFR150は、保存されたプロジェクト名と、フラッシュメモリ134のPFMデータ構造154に保存されたBMCファームウェアイメージのプロジェクト名と、を比較する。PFR150は、BMCファームウェアイメージのプロジェクト名が、保存されたプロジェクト名と一致するか否かを判断することにより、プロジェクト名が正確であるか否かを判断する(554)。BMCファームウェアイメージのプロジェクト名が正確でない場合、PFR150は、BMC120の起動を停止する(556)。プロジェクト名が正しい場合、PFR150は、BMCファームウェアイメージの署名を読み取る(558)。PFR150は、ルートキーハッシュ156を用いて、BMCファームウェアイメージの署名が認証済みであるか否かを判断する(560)。署名が認証済みでない場合(560)、PFRは、フラッシュメモリ134へのアクセスを防止すると共に、起動を防止する(556)。署名が、ルートキーハッシュから認証済みである場合、PFR150は、BIOSをリリースするとともに、BMC120をリリースして、起動プロセスを開始させる(562)。
【0042】
図6は、図1のPFR150を実行して、プロジェクト名にアクセスして、適切なシステム操作を確保することにより、ファームウェアイメージをアップデートするルーティンを示す図である。PFR150は、外部のアップデートされたファームウェアイメージのために図1のフラッシュメモリ132又は134の何れかにアクセスするための、BMC120又はBIOSによる要求を受信する(610)。PFR150は、ルートキーハッシュ156を用いて、受信したアップデートファームウェアイメージの署名を認証する(612)。PFR150は、アップデートファームウェアイメージの署名が認証済みか否かを判断する(614)。アップデートファームウェアイメージが認証済みでない場合(614)、PFR150は、拒絶ファームウェアの信号を返送するとともに、ファームウェアイメージアップデートのローディングを防止する(616)。認証が成功した場合、PFR150は、プロジェクト名の指標を読み取って、NVRAM152からプロジェクト名を読み取る(618)。PFR150は、NVRAM152から、保存されたプロジェクト名を読み取るとともに、それを、受信したファームウェアイメージのプロジェクト名と比較して、ファームウェアイメージのプロジェクト名が正確であるか否かを判断する(620)。プロジェクト名が正確である場合、PFR150は、アップデートフローを続行する(622)。プロジェクト名が正確でない場合、PFR150は、拒絶ファームウェアの信号を返送するとともに、ファームウェアイメージアップデートのローディングを防止する(616)。
【0043】
図4図6の上述したルーティンは、BIOSに、図2のFPGA130にプロジェクト名を供給させるとともに、ファームウェアイメージ又はアップデートされたファームウェアイメージをチェックさせて、適切なファームウェアが、コンピュータシステムのためにアクセスされることを確保するための例示的な機械可読命令を示す。この例において、機械可読命令は、(a)プロセッサ、(b)コントローラー、及び/又は、(c)一つ以上の他の適切な処理装置によって実行されるアルゴリズムを有する。アルゴリズムは、有形媒体(例えば、フラッシュメモリ、CD-ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタルビデオ(versatile)ディスク(DVD)、又は、他のメモリデバイス等)に記憶されたソフトウェアで具体化される。しかし、当業者であれば、アルゴリズム全体及び/又はそれらの一部は、プロセッサ以外の装置によって実行され、及び/又は、ファームウェア又は専用のハードウェアにおいて既知の方法で具体化される(例えば、特定用途向け集積回路(ASIC)、プログラム可能論理回路(PLD)、フィールドプログラム可能論理回路(FPLD)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理装置等により実施される)ことを容易に理解するであろう。例えば、ルーティンの任意の又は全ての要素は、ソフトウェア、ハードウェア及び/又はファームウェアにより実行される。また、フローチャートにより示される機械可読命令の一部又は全ては、手動で実施され得る。さらに、例示的なルーティンがここで開示されるが、当業者であれば、例示的な機械可読命令を実行する多くの他の方法が代わりに用いられてもよいことを容易に理解することができる。
【0044】
開示された実施形態は、一つ以上の実施形態に関して図示及び説明されているが、当業者であれば、本明細書及び図面を読み、理解した後に、同等の変更及び修正を思いつくであろう。さらに、本発明の特定の特徴は、いくつかの実施形態のうち何れかのみに関して開示されているが、このような特徴は、任意の又は特定の応用に対して所望され有利である場合に、別の実施形態の一つ以上の別の特徴と組み合わされてもよい。
【0045】
本発明の各種実施形態が上述されているが、これらは、例として表現されており、これに限定されないことを理解されたい。開示された実施形態に対する様々な変更を、本発明の範囲と趣旨を逸脱しない状況下で行うことができる。よって、本発明の広さや範囲は、上述した何れかの実施形態によって限定されるべきではない。むしろ、本発明の範囲は、以下の請求項及びそれらの均等物に従って定義されるべきである。
【符号の説明】
【0046】
100…コンピュータシステム
110、112…中央処理ユニット(CPU)
114…プラットフォームコントローラーハブ(PCH)
116…ダイレクトメディアインターフェース(DMI)バス
120…ベースボードマネジメントコントローラー(BMC)
122…ローピンカウント/エンハンスド(low pin count/enhanced)シリアルペリフェラルインターフェース(LPC/eSPI)
124…システムマネジメント(SM)バス
130…フィールドプログラマブルゲートアレイ(FPGA)
132、134…フラッシュメモリデバイス
136、140…シリアルペリフェラルインターフェース(SPI)
138、142…マルチプレクサ
150…プラットフォームファームウェア回復(PFR)
152…不揮発性ランダムアクセスメモリ(NVRAM)
154…プラットフォームファームウェアマニフェスト(PFM)データ構造
156…ルートキーハッシュ
160…電源ユニット(PSU)
162…デジタル電圧レキュレーター(VR)
164…ホットスワップバックプレーン(HSBP)
210…第二ハードウェアプラットフォーム
220…第三ハードウェアプラットフォーム
230…第四ハードウェアプラットフォーム
300…表
310…タグ(tag)フィールド
312…セキュリティバージョンナンバーフィールド
314…最もよく知られた構成(best known configuration、BKC)バージョンフィールド
316…PFM補正フィールド
318…保留フィールド
320…OEM特別データフィールド
322…長さフィールド
324…PFM本体フィールド
326…パッド(padding)フィールド
410、412、414、416、418、420、510、512、514、516、518、520、522、550、512、514、516、518、520、522、550、552、554、556、558、560、562、610、612、614、618、620、622…工程
図1
図2
図3
図4
図5A
図5B
図6