JP5403771B2 - ファームウェアに安全なアップデートを提供するシステム及び方法 - Google Patents

ファームウェアに安全なアップデートを提供するシステム及び方法 Download PDF

Info

Publication number
JP5403771B2
JP5403771B2 JP2012182646A JP2012182646A JP5403771B2 JP 5403771 B2 JP5403771 B2 JP 5403771B2 JP 2012182646 A JP2012182646 A JP 2012182646A JP 2012182646 A JP2012182646 A JP 2012182646A JP 5403771 B2 JP5403771 B2 JP 5403771B2
Authority
JP
Japan
Prior art keywords
rom
module
firmware
virtual rom
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012182646A
Other languages
English (en)
Other versions
JP2013012217A (ja
Inventor
エー. フリン レックス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Insyde Softwarecorporation
Original Assignee
Insyde Softwarecorporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Insyde Softwarecorporation filed Critical Insyde Softwarecorporation
Publication of JP2013012217A publication Critical patent/JP2013012217A/ja
Application granted granted Critical
Publication of JP5403771B2 publication Critical patent/JP5403771B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Description

本発明の例示的な実施形態は、一般的に、BIOSファームウェアを含む、PCにPOSTを実行するファームウェアに関し、より詳細には、ファームウェアの必要なメモリ容量を減らすことと、ファームウェアを安全に格納することと、安全な方法でファームウェアをアップデートすることとに関する。
関連出願
本発明は、2005年2月2日付けで提出された米国特許出願第60/649,486号である「ファームウェアの必要なメモリ容量を減らすと共に、ファームウェアに安全なアップデート及びストレージ領域を提供するシステム及び方法」という名称の米国特許暫定出願の特典及び優先権を主張する。
近年、大量のファームウェア・コードをPCのプリブートに利用可能にする需要が増加している。ファームウェアは、読み出し専用メモリ(ROM)モジュールに書き込まれたソフトウェアである。これらのモジュールは、ROM、PROM、EPROM、EEPROM及びフラッシュメモリを含むが、これらに限定されない。こうしたファームウェア需要が増加している理由の1つは、PCを起動してオペレーティングシステム(OS)をロードする準備をする際に、ファームウェア(BIOS又はフレームワーク)(「フレームワーク」という用語は、(米国カリフォルニア州サンタクララ市の)インテル社の「Platform Innovation Framework for EFI」を指して本明細書で用いられ、以下で説明する)が実行する必要のある演算の複雑さが増していることである。需要増加の別の理由は、オペレーティングシステムがロードを完了する前にプリブート環境で実行する、付加価値のある追加特徴を作成することに、産業界が相当な関心を抱いていることである。
あいにくファームウェアを使用する従来方法に関連した課題はかなりある。現実には産業界にPC用ハードウェアのコストを抑える強い動機があるために、ROM部品又はフラッシュ部品に利用可能なストレージを増加することにより、大量のファームウェア・コードをプリブートに利用可能にするという増加した需要を十分に満足していない。加えて、ファームウェア・コードの増加に対する需要によって、インターネット上のサーバーを含む他のソフトウェア環境と通信するための安全な手段と、オペレーティングシステムがロードした後で実行するコードとが更に必要になる。その上、プリブート中にコンテンツの安全を確保するための既存のソリューションがあるものの、これらの既存のソリューションは、ローカルディスクドライブで利用可能になる専用パーティションに依存しているか、或いはキーを格納して隠す能力を提供する個別のセキュリティ・チップに依存している。更に、安全な方法でフラッシュ部品に格納されたファームウェアをアップデートするタスクが、かなり注目されている。フラッシュ部品に格納されたファームウェアをアップデートする現在の方法は、アップデート完了が失敗するとコンピュータが操作不可能になるので、コンピュータのその後の操作性への危険をはらんでいる。更に、こうしたアップデートを許すことで、多くの場合フラッシュ・ファームウェアがコンピュータの内部への完全なアクセスを備えてしまうというセキュリティ上の危険を少し負うことになる。
発明の概要
本発明の例示的な実施形態は、量を増加したファームウェアをコンピュータのプリブートに利用可能にするためのメカニズムを提供する。プリブートに利用可能なファームウェアの量を増加するために、ファームウェアのどの複数のセグメントをROM部品に置く必要があるか、またファームウェアのどのセグメント1つを又はどの複数のセグメントを他の場所に置くことができるかに関して、ビルドプロセス中に設計決定を行う。ROMから遠隔に格納されたファームウェアのセグメントを「仮想ROMモジュール」と呼ぶ。仮想ROMモジュールの各々は、生成した独自の識別子を割り当てられ、また、MD5又はSHA−1といったアルゴリズムを用いて、各モジュール用に「メッセージダイジェスト」を構築する。メッセージダイジェストは、仮想モジュールが変わればメッセージダイジェストも変わるように、仮想モジュールを独自に表現する。ROMイメージのソフトウェア・ビルドでは、各仮想ROMモジュール用に作成された、メッセージダイジェストと独自の識別子とのペアを、仮想モジュール用の論理ポインタとして使用する。加えて、不揮発性ストレージ内のROMイメージ内に検索パス変数を置く。この検索パスは、仮想ROMモジュールを捜す1つ又は複数の場所に提供し、後でアップデートしてもよい。
製造工程中に、PCのROM部品又はフラッシュ部品に、(仮想モジュールを指す論理ポインタを含む)実際のROMイメージを置く。実際のROMイメージは、仮想ROMモジュールを実行しようとする際に、仮想ROMモジュールに関連した独自の識別子を検索すると共に、独自の識別子と一緒に検索パス変数を用いて、仮想ROMモジュールのコピーを見つける。それは、ネットワークからこのモジュールをダウンロードしてもよいのと同様に、ローカルディスクから、又はCD−ROMから、又は他のストレージ媒体から、このモジュールをロードしてもよい。それは、一旦このモジュールをロードしたら、このモジュールに同じメッセージダイジェストアルゴリズムを実行し、このモジュールの実行前にこのモジュールが変更されていなかったことを確認する。
更に、本発明の例示的な実施形態は、安全な方法でファームウェアをアップデートできる。実際のROM内で2つの追加属性を用いて、仮想ROMモジュールを参照する。これら2つの追加属性は、バージョン属性と、アップデートの妥当性を検証できる個別のモジュールへの参照とである。この個別のモジュールは、実際のROMに組み入れられてもよいし、組み入れられなくてもよく、別の仮想ROMモジュール用の独自の識別子であってもよい。このアップデートプロセスは、第1仮想ROMモジュールに関連したメッセージダイジェストと、第1仮想ROMモジュールに関連したバージョン属性とをアップデートする。更に、このアップデートプロセスは、(ローカルディスクに置かれていてもよい)対応するファイルの新しいコピーを作成する。このファイルは、ハッシュされる(この場合「ハッシュすること」は、ファイルにメッセージダイジェストアルゴリズムのうちの1つを実行することを意味する)と、上述のプロセスに対応する方法で、新しいメッセージダイジェストと「一致」するはずである。
アップデートモジュールのダウンロードに続いて、妥当性検証モジュールは、アップデートの実行を容認できることを確認する。ネットワークを介して移動するコンテンツの妥当性の検証は、SHA−1アルゴリズムを用いてそのコンテンツで作ったメッセージダイジェストを暗号化し解読するための公開・非公開キーペアといった、インターネットを通じて送信されるコンテンツの妥当性を検証するための様々なよく理解されているメカニズムのうちの1つによって行われる。異なる妥当性検証方法(原語:scheme)を各々使用しているかもしれない異なるファームウェア・ベンダーによって利用可能になるファームウェアを各々参照する、複数のアップデート妥当性検証モジュールを用いてもよい。これら異なるファームウェア・ベンダーが同じファームウェア・メカニズムを使用する状況にあっても、各ベンダーは、コンテンツを署名するためのそれら自身の公開・非公開キーペアを使用してもよい。
更に、本発明の例示的な実施形態は、個々のコンピュータに対して安全ストレージの作成及びそれへのアクセスを提供する。ストレージが安全になるためには、プリブート中に実行しない後続のコードによって、ROM部品又はフラッシュ部品の領域を読み出し専用或いは読み取り不可能にする必要がある。本発明は、ROM部品又はフラッシュ部品のある領域を、読み出し専用(「書き込み不能」と呼ぶ)にすることも、読み取り不可能(「読み取り不能」と呼ぶ)にすることもできる。非公開ストレージを暗号化可能にするためには「読み取り不能」が必要になる一方、ストレージ上の改ざんを検知するためには書き込み不能が必要になる。
安全ストレージ領域を作成しアクセスするプロセスは、モジュールを検索するための独自の識別子を含む、実際のROMに「仮想ROM」モジュール参照つまりポインタを格納する。更に、実際のROMは、マシン全体用の生成した独自の識別子を含んでいる。ある仮想ROMモジュールを検索する際には、そのモジュール識別子とそのマシン識別子との両方を使用する。一旦検索されたら、このモジュールの妥当性を、その仮想ROMモジュール参照に格納されたメッセージダイジェストを用いて検証する。必要ならば、この後で、実際のROMのどこか他の場所に格納された秘密キーを用いて、この仮想ROMモジュールを解読する。
プリブートコードによって、(本質的には安全ストレージの構成単位である)仮想ROMモジュールへのアップデートをメモリ内で行う。これらのアップデートが完了した時点で、この仮想ROMモジュールをそれが検索された場所へ書き込み直す。この書き込みは、上述のステップを逆にすることを含む。これは、必要ならば秘密キーを用いて最初にこのモジュールを暗号化し、この仮想ROMモジュール用の新しいメッセージダイジェストを生成して、モジュール識別子及びマシン識別子を用いてそのストレージ場所へ新しいモジュールを書き込み直すことによって行われる。更に、新しいメッセージダイジェスト値を反映するために、実際のROMにある仮想ROMモジュール参照をアップデートしなければならない。続いて、実際のROMにある仮想ROMモジュール参照と、PC用に使うマシン識別子とは、書き込み不能である。加えて、このストレージが暗号化されており、秘密キーが用いられている場合には、この秘密キーを含んだ実際のROMの領域は、読み取り不能になる。
本発明の1つの様態では、電子デバイスに格納されたファームウェアの必要なメモリ容量を減らす方法は、複数の仮想ROMモジュールを作成するためにファームウェア・イメージを分割するステップを含む。この電子デバイスに置かれたROMイメージの外部の少なくとも1つの場所に、これら複数の仮想ROMモジュールを格納する。この方法は、このROMイメージに置かれたファームウェアのビルド内のこれら複数の仮想ROMモジュールの各々のための参照を更に含む。各参照は、関連する仮想ROMモジュール用の、メッセージダイジェストと独自の識別子とを備える。更に、この方法は、これら複数の仮想ROMモジュールのうちの選択された1つを、この複数の仮想ROMモジュールのうちの選択された1つに関連した参照の中の独自の識別子を用いて、プリブートの最中に検索する。この方法は、この複数の仮想ROMモジュールのうちの選択された1つを、この複数の仮想ROMモジュールのうちの選択された1つに関連した参照の中のメッセージダイジェストを用いて、プリブートの最中に更に確認する。
本発明の別の様態では、電子デバイスに格納されたファームウェアの必要なメモリ容量を減らすためのシステムは、ビルドプロセス中に作成された複数の仮想ファームウェア・イメージ・モジュールを含んでいる。この電子デバイスに置かれたファームウェアROMイメージの外部の少なくとも1つの場所に、これら複数の仮想ROMモジュールを格納する。このシステムは、更にファームウェアROMイメージを含んでいる。このファームウェアROMイメージは、これら複数の仮想ROMモジュールの各々のための参照を含み、各参照は、関連する仮想ROMモジュール用の、メッセージダイジェストと独自の識別子とを含む。この独自の識別子を用いて、プリブートの最中にこの参照したイメージ・モジュールを検索し、また、このメッセージダイジェストを用いて、この検索されたイメージ・モジュールを実行する前にこのイメージ・モジュールの信頼性を確認する。
本発明の1つの様態では、電子デバイスに格納されたファームウェアの必要なメモリ容量を減らす方法は、この電子デバイスに置かれたROMイメージの外部の1つの場所に格納された、1つの仮想ROMモジュールを作成するためにファームウェア・イメージを分割するステップを含む。この方法は、このROMイメージに置かれたファームウェアのビルド内のこの仮想ROMモジュール用の参照を更に含む。この参照は、この仮想ROMモジュール用の、メッセージダイジェストと独自の識別子とを備える。加えて、この方法は、この仮想ROMモジュールを、この仮想ROMモジュールに関連した参照の中の独自の識別子を用いて、プリブートの最中に検索する。この仮想ROMモジュールの信頼性を、この仮想ROMモジュールに関連した参照の中のメッセージダイジェストを用いて、プリブートの最中に確認する。
本発明は、添付した特許請求の範囲における詳細な事項と共に指摘される。添付した図面に関連した以下の説明を参照することによって、本発明のさらなる利点と同様に上述した本発明の利点も一層よく理解されるはずである。
VROMモジュールと、生成されたメッセージダイジェスト及びGUIDとの対応を示す。 実際のROMイメージのビルドにおけるVROM論理ポインタの使用を示す。 ROM部品に実際のROMイメージを格納し、ディスク或いはインターネットに仮想ROMモジュールを格納してもよい、分配プロセスの図を示す。 ビルドプロセスのフローチャートである。 仮想ROM「ポインタ」を用いて、実際のROM部品に存在しない仮想ROMモジュールを検索する、検索プロセスの図を示す。 検索プロセスのフローチャートである。 ビルドプロセス中に各VROMモジュール用に生成される追加情報と、バージョン番号と、アップデート・バリデータへの参照とを示す。 ROMイメージに格納された、アップデート・バリデータ及び「変更した」VROMポインタを示す。 アップデート・バリデータ用の公開・非公開キーの生成を示す。 公開・非公開キーペアの非公開部分を用いて、モジュールアップデートに関係する「キー」の生成のフローチャートを示す。 アップデートしたVROMモジュールの検索及び妥当性検証を示す。 キーの妥当性を検証するためのフローチャートへの参照を含む、アップデートの検索のフローチャートを示す。 キーの妥当性検証のフローチャートを示す。 ファームウェア用の安全ストレージ領域を作成するために使用したコンポーネントの分類を示す。 「安全ストレージ領域」の暗号化及び第2ストレージ場所(この場合、ディスクドライブ)への保存を示す。 安全ストレージの第1及びその後の書き込みのフローチャートを示す。 安全ストレージの第1及びその後の読み出しのフローチャートを示す。
本発明の例示的な実施形態は、コンピュータのプリブートに利用可能なファームウェアの量を増加させると共に、ファームウェアに安全なアップデート・メカニズムを提供し、安全ストレージ領域を作成してアクセスするための手段を提供する。明瞭に説明するために、以下で本発明の各局面について別々に順番に説明する。本明細書に記載したような本発明の例示的な実施形態は、インテルのPlatform Innovation Framework for EFI(「フレームワーク」)にあるドキュメント化されたAPIに対する幾つかの参照を作る。非フレームワーク・ソリューションに基づいた実施形態への解釈は、当業者に明白になるはずである。更に、この説明はPCに焦点を当てているが、不揮発性メモリ部品に格納された予めプログラムされているファームウェア・イメージを含む、他の非PCの計算デバイスも、本発明の範囲内であると考えられる。
本発明について詳細に説明する前に、本発明で利用されるBIOS及びフレームワークのコンポーネントについて説明することは役に立つであろう。インテルのPlatform Innovation Framework for EFI(「フレームワーク」)は、BIOSの機能性及び能力の完全な再インプリメンテーションである。BIOSは、インテルX86コンピュータで16ビットのリアルモードで通常動作するが、フレームワークは、32ビット或いは64ビットのメモリ・モードで実行できて、特定のプラットフォーム・アーキテクチャーに制限されない。更に、BIOSは、アセンブリコードで通常ほぼ完全に記述されているが、フレームワークは、Cプログラミング言語でほぼ完全に記述されている。
フレームワークは、EFI(「拡張可能なファームウェアのインターフェース」)のインプリメンテーションを提供する。このEFIは、オペレーティングシステムをロードし実行するソフトウェアからシステムの電源を入れるファームウェアの詳細及びインプリメンテーションを完全に抽象化するインターフェース仕様である。フレームワークのようにEFIのインプリメンテーションをゼロから作成できるだけでなく、既存のBIOSからも作成できるように、完全に「不透明な」インターフェースとしてEFIを定義した。この文脈での「不透明な」とは、インターフェースの発信側又はクライアントが、基礎インプリメンテーションの内部を見ることができないことを意味する。発信側は、インターフェース自体を通じてのみアクセスできる。
EFIは、互いと対話する際にプリブート・コンポーネントを使用し、且つフレームワークによっても使用され、且つ本発明の種々の実施形態に関連する、標準セットのメカニズムを導入する。コンポーネント間の対話を各々不透明なC言語APIである「プロトコル」として定義する。プロトコルは、メモリに別々にロードでき実行できる個々のコンポーネントである「ドライバ」によってインプリメントされる。各プロトコルは、C言語ソースコード「名」と、実行時に他のプロトコルからそれを識別するために用いる、(「GUID」即ち「世界中で独自の識別子」としてインプリメントされる)それ自身の独自の識別子とを備える。ドライバは、メモリにロードされると、サポートするプロトコルのセットについてEFI環境に知らせる。このEFI環境は、インメモリデータベースにおいてこれらのプロトコルを追跡すると共に、他のプリブートコードにこれらのプロトコルを検索及びアクセスさせることによって、特定のドライバ内のプロトコルの基礎インプリメンテーションに関する知識なしで、これらのプロトコルを「エクスポート」したドライバ内のコードを見つけて実行する。
コンポーネント間のこの不透明形式の対話は、COM又はCORBAに精通している人々によく知られているはずである。特に、独自の識別子(GUID)は、コンポーネントへのインターフェースを「見つける」ためにCOMでも用いられる。COM及びCORBAのように、EFIは「拡張可能」となるように設計されている。新しいプロトコルを定義してもよいし、既存のプロトコルの新しいインプリメンテーションを作成してもよい。何れの場合も、これらの拡張は、一定の方法で基礎環境に適合する。
ドライバの概念は、統合した方法で多くの様々なタイプのハードウェアをソフトウェアによってサポートする必要のある今日のオペレーティングシステムに精通している人々によく知られている。これらのオペレーティングシステム・ドライバ環境では、様々なクラスのハードウェアデバイス用に共通のAPIを定義する。同じAPIをインプリメントする様々なドライバに、ハードウェアの変化を扱う責任があるものの、これらの共通APIは、基礎ハードウェアの相違の詳細を隠す。
EFIによって定義されるプリブート・コンポーネント間の対話のための標準セットのメカニズムに加えて、本発明の例示的な実施形態は、フレームワーク内でのみ定義した幾つかの拡張を利用する。フレームワークは、まさにROM部品内のストレージ用に特に定義したフラットファイルシステムである「ファームウェア・ボリューム」の概念を導入する。このファームウェア・ボリュームは、このファイルシステムを備えた対話用プロトコルのセットを定義する。フレームワークでは、ROMイメージに格納された全てのファイルをファームウェア・ボリュームに格納する。従って、フレームワークのためのビルド・プロシージャ中に、ファームウェア・ボリュームは生成される。
フレームワーク・ファームウェア・ボリューム仕様に定義された拡張プロトコルのうちの1つは、「GUIDされたセクション抽出プロトコル」である。このプロトコルは、ベンダーがファームウェア・ボリュームを、完全に不透明な表現の新しく定義された「セクション」(これらセクションはファイルの一部である)を含めて拡張できるような方法で定義される。この拡張を生じさせるためには、ファームウェア・ボリューム内のファイル用のセクション・ヘッダーにGUIDを含める。このGUIDは、「GUIDされたセクション抽出プロトコル」をインプリメントするドライバを見つけるために、ファームウェア・ボリューム・コードによって用いられる。ファームウェア・ボリュームからファイルを抽出してメモリに置く時に、このドライバは、プロトコルを通じて呼び出して、不透明な表現を変換する。可能な変換例には、不透明な表現の解読、或いは不透明な表現中のデジタル署名のチェックが含まれる。
本明細書に含まれる例の多くはフレームワーク環境に言及しているが、フレームワーク記述に対して当業者に明白な調節を行うことによって、より従来的なBIOSコンポーネントを用いて本発明を実施してもよいと理解されるはずである。
本発明の例示的な実施形態は、ROMに格納されないファームウェア・モジュールを安全に識別するために、ビルドプロセス中に、ROMイメージに埋め込まれていた、独自の識別子とメッセージダイジェストとの組み合わせを使用する。他の従来のソリューションは、隠された或いは安全であるディスク・パーティションに主として、プリブート中にアクセス可能なファームウェアを追加する安全な方法を提供する。しかし、これらの他のソリューションでは、ROMイメージのためのビルドの時にファームウェアが存在する必要はない。SHA−1或いは他の相当するメッセージダイジェストアルゴリズムを使用することによって、同じメッセージダイジェストを生成する異なったモジュールを作成することが非常に困難になる。メッセージダイジェストがROMイメージに埋め込まれているので、メッセージダイジェスト自体を変更すると、ROM部品をアップデートする必要が生じる。一旦メッセージダイジェストをROMイメージに埋め込んでおけば、当業者に知られており本発明の範囲外である、フラッシュ部品の領域を読み出し専用にするTPMハードウェア及びフラグといったROMイメージの改ざんを検知又は防止する様々な既存の方法がある。メッセージダイジェストがROMイメージに埋め込まれているので、このROMイメージが安全であって改ざん不可能な場合には、仮想ROMモジュールは全て、実際に安全であって内密に変更することができない。再帰的なソリューションも可能であり、仮想ROMモジュール自体が、他の場所に格納した更に他の仮想ROMモジュールを指す「仮想ROMポインタ」を含むことができる。本発明のセキュリティが、仮想ROMモジュール全てに対して遷移的(原語:transitive)であるので、その結果、全てのファームウェアがビルドプロセスの時に利用可能である限り、安全にプリブート環境に利用可能にすることができるファームウェアの量に殆ど制限がない。
各仮想ROMモジュール用の独自の識別子を用いて、更にこれら仮想ROMモジュールに場所の独立性を与える。各仮想ROMモジュールを複数の場所に、例えば、ディスクに、CD−ROMに、ローカル・エリア・ネットワークに、或いはインターネットに、格納してもよい。メッセージダイジェストアルゴリズムが、このモジュールを確認する安全な方法を提供するので、これら場所自体も、ストレージ場所のうちの1つからPCのメモリにこのモジュールを伝送するためのメカニズムも、安全でなくてよい。
コンピュータのプリブートに追加ファームウェアを提供する第1ステップは、実際のROMイメージに何を含めるべきか、また実際のROMイメージに何を含めるべきでないかについての設計決定である。実際のROMイメージに含まれない情報は、別々にアクセス可能な1つ又は複数の仮想ROMモジュール内にパッケージされる。性能上の理由で、その最も一般的なパスに沿ってPCをブートするために必要なソフトウェアは、実際のROM内に頻繁に残される。しかしながら、例えば、多数の可能なプリブート・アプリケーション及びユーティリィティと同様に、セットアップ・ユーザーインターフェイス、代替言語のサポート、まれなブートオプション、回復即ちリフラッシュ(原語:re-flashing)ファームウェアといった、通常用いられない他のソフトウェアを実際のROMの外部の仮想ROMモジュール内に置いてもよい。
仮想ROMモジュールは、ファイルの可変数を含むフラットファイルシステムを構成する単一のパッケージであるフレームワーク「ファームウェア・ボリューム」であってもよい。これらの含まれたファイルの各々は、フレームワーク内でサポートされるいかなるファイルでもありえる。フレームワーク・ファームウェア・ボリュームの利点は、埋め込まれたファイルへのアクセスをサポートするフレームワーク・ファームウェア(ドライバ)が存在することである。しかしながら、仮想ROMモジュールは、実行コードと同様にデータも含む、他の種類のファイルであってもよい。上述のように、設計決定によって、仮想ROMモジュールのための複数レベルの入れ子にすることをもたらしてもよい。言い換えれば、幾つかの仮想ROMモジュールは、他の仮想ROMモジュールを指す仮想ROMポインタを含んでもよい。
こうした仮想ROMモジュール各々に対して、SHA−1メッセージダイジェストと128ビットのGUID(世界中で独自の識別子)とを含む仮想ROMポインタを生成する。多くの有名なアルゴリズムのうちの何れかを用いて、メッセージダイジェストとGUIDとを生成してもよい。生成されたGUIDは、フレームワーク内で広く用いられるが、コンピュータ界のどこか他の場所にも用いられる。GUID及びSHA−1メッセージダイジェストは、複製(原語:replicable)される可能性が非常に低い値を生成する。図1は、VROMモジュールと、生成されたメッセージダイジェスト及びGUIDとの対応を示す。第1VROMモジュール2に対しては、GUID4とメッセージダイジェスト6とを含む第1VROM論理ポインタ20が、この第1VROMモジュールにそれぞれ関連し基づいて生成される。第2VROMモジュール12に対しては、GUID14とメッセージダイジェスト16とを含む別の独自のVROM論理ポインタ22が生成される。
仮想ROMモジュール用のGUID及びメッセージダイジェストの生成に続いて、実際のROMイメージを標準のROMコード及び仮想ROMポインタからビルドする。図2にビルドプロセスを示す。第1VROMモジュール2を指す第1VROM論理ポインタ20は、第1VROMモジュールに関連した、生成されたGUID4及びメッセージダイジェスト6を含む。第2VROMモジュール12を指す第2VROM論理ポインタ22は、第2VROMモジュールに関連した、生成されたGUID14及びメッセージダイジェスト16を含む。標準ROMコード24と共に、第1VROM論理ポインタ20と第2VROM論理ポインタ22とを用いて、ROMイメージ30をビルドする。このROMイメージ30に加えられた他のROMコード24は、直接アクセス可能な実際のROM部品に置くことに最適であると設計者が考えるROMコードである。
このROMイメージ30に仮想ROMポインタ20及び22を格納し且つ検索する詳細は、特定の実施形態に依存する。フレームワークに基づいた一実施形態では、(ROMイメージにある)別のファームウェア・ボリュームが、様々なタイプの「ファイル」を含む。これらのファイルの各々を複数のセクションで構築し、各セクションは、1つのファイルの、ある特定の属性を参照する。GUIDがファームウェア・ボリューム内のこうしたファイル各々を独自に識別するので、このGUIDは、仮想ROMモジュールを検索するために用いられるものと同じ識別子でありえて、また、仮想ROMモジュールは、フレームワーク・ボリュームの意味において、「ファイル」になる。「GUIDされたセクション抽出プロトコル」を用いて、別のこうしたセクションをインプリメントしてもよい。このセクションは、コンテンツ(ファイル用の識別子として既に含まれているGUID)を確認するためのSHA−1メッセージダイジェストと同様に、抽出を実行する必要があるドライバを識別するためのGUIDも含む。更に、仮にGUIDとSHA−1メッセージダイジェストとの両方を表現する場合、フレームワークの内部で、且つ既存のBIOSの一部として、他の表現を構築してもよい。
図3は、どのように実際のROMイメージをROM内に置くかを示すと共に、どのように仮想ROMモジュールを他の場所に分配するかを示す。第1VROMポインタ20と、第2VROMポインタ22と、他のROMコード24とを含むROMイメージ30を、フラッシュメモリといったROM部品40内に置く。第1VROMポインタで参照される実際の第1VROMモジュール2は、ROM部品40と同じ電子デバイスのハードドライブ42に置いてもよい。第2VROMポインタで参照される第2VROMモジュール12は、インターネット44或いは他のタイプのネットワーク経由でアクセス可能な任意の場所46に格納してもよい。当業者は、VROMモジュールのストレージ場所へのその他の分配が本発明の範囲内で可能なことを認識するはずである。分配イベントが全て同時に起こる必要はないことに注目するべきである。実際のROMイメージがPCを立ち上げるのに必要である一方、仮想ROMモジュールは、他の時点で他の方法に利用可能にするのみでもよい。更に、仮想ROMモジュールにつき分配メカニズムが1つしか存在してはならないという要求はない。こうした仮想ROMモジュール各々を種々様々な方法で分配してもよい。
分配メカニズムの一例は、コンピュータのハードドライブをアップグレードすることに適しているかもしれない。あるハードドライブから別のハードドライブにドライブコンテンツをコピーするためのファームウェアは、先ずファームウェアのビルドプロセス中に利用可能になる。しかしながら、それは実際のROMの一部になってはいないが、それを指す仮想ROMポインタを実際のROMイメージに格納する。数年後に行うかもしれないディスク・アップグレード時において、対応する仮想ROMモジュールは、アップグレードを実行するために使用しなければならないCD−ROMで利用可能になる。ファイルがビルドプロセスに以前から「含まれている」ので、これらファイルを信用してこのCD−ROMから実行できる。代わりに、ハードドライブをコピーするソフトウェアをインターネットからダウンロードしてもよいし、また、同じ方法で確認してもよい。別の分配メカニズムは、PC用のディスク・イメージをビルドするプロセス中で適切であるかもしれない。このディスク・イメージは、仮想ROMモジュールをコピー可能な、安全でないディスク・パーティションを含んでもよい。
図4は、ROMイメージのビルドプロセス中に仮想ROMモジュールを利用するための本発明の例示的な実施形態におけるステップのシーケンスのフローチャートである。ビルドプロセス50は、仮想ROMモジュールがあるか否かに関する決定から開始する(ステップ51)。仮想ROMモジュールがある場合、GUIDを生成してその仮想ROMモジュールに割り当てる(ステップ52)。その後、SHA−1メッセージダイジェストといったメッセージダイジェストをこの仮想ROMモジュール用に生成する(ステップ54)。それから、GUIDとメッセージダイジェストとのペアから仮想ROM論理ポインタを構築する(ステップ56)。仮想ROMモジュールがもうこれ以上ないという決定に到達する(ステップ51)まで、このプロセスを繰り返す。その後、仮想ROM論理ポインタと標準ROMコードとを含むROMイメージを組み立てて(ステップ58)、ビルドプロセスを終了する(ステップ60)。
一旦仮想ROMモジュールを分配したら、ROM部品40が置かれているPC又は他の電子デバイスのメモリ内でこれら仮想ROMモジュールを検索してもよい。図5は、検索プロセスの図を示す。PCメモリ70にROMイメージ30をロードする。ROMイメージ30内のVROM論理ポインタ20及び22は、ハードドライブ42とストレージ場所46とに格納された、第1及び第2VROMモジュール2及び12の存在と識別情報とを示す。その後、以下で説明するように、第1及び第2VROMモジュール2及び12を検索し、メモリ70にロードする。特定のVROMモジュールを検索する様々な理由があるかもしれない。これら理由には、特定の仮想ROMモジュールをロードする必要性に気づいているファームウェアの他の部分の実行が含まれるか、或いは、実際のROMにはない実行ファームウェア用にプロンプトするあるインターフェースとのユーザーの対話が含まれる。
ファームウェア・ボリュームのセクションとして仮想ROMポインタを格納する、フレームワークベースの実施形態では、このセクションによって参照された「ファイル」を「メモリへロードする」決定として、VROMモジュールを検索する決定をインプリメントする。この実施形態では、上述した「GUIDされたセクション抽出プロトコル」をサポートするフレームワーク・ドライバが、図6のフローチャートにおいて以下に説明する方法をインプリメントする。この説明では、仮想ROMモジュールの検索を試みるファームウェアを「検索ドライバ」と呼ぶが、非フレームワークの実施形態においてはファームウェアをドライバとしてインプリメントされないかもしれないと理解するべきである。
この検索ドライバは、ドライバ用の「見るべき場所」のための検索パスについて記述する、不揮発性ストレージに格納された変数にアクセスする。メモリ内で見つけ、ロードし、実行するための参照された実行可能プログラム(原語:referred-to executable)の手段を提供するオペレーティングシステムにおいて検索パスを使用する。こうした検索をサポートできる様々なインプリメンテーション・メカニズムがあるが、本発明によるこの検索パスの使用は類似している。フレームワークの実施形態では、いつでもユーザー又は他のソフトウェアによってアップデートされる可能性のあるEFI NVRAM変数としてROM部品に変数を格納する。
検索ドライバは、順に検索パス要素を通って繰り返す。この検索パスは、仮想ROMモジュールを探索する「好適な順序」を表現する。この検索パス内のこうした要素各々に関して、ドライバは、その要素を用いて仮想ROMモジュールの検索を試みる。各要素を「URIテンプレート」としてエンコードしてもよい。そこでは、ブラウザ及びインターネットにおいて一般に使用されている、普遍資源識別子(原語:Universal Resource Identifier)(或いは普遍資源ロケーター(原語:Universal Resource Locator))は、対応するファイルの場所を不完全に指定する。この不完全な指定は、単に仮想ROMモジュールに関係するGUIDが入る変数であってもよい。一旦入ったら、こうした「完全な」URIは、ローカルディスク・パーティションのディレクトリ内のファイルを参照してもよく、このファイルをハイパーテキスト伝送プロトコル(HTTP)又は他の有名なプロトコルを用いてインターネット上で検索できる。更に、フレームワークでは、URI(「file:」、「http:」、「ftp:」などを識別する部分)の各「方法(原語:scheme)」の検索メカニズム自体を、特定のプロトコルを理解する種々のフレームワーク・ドライバに渡してもよい。
任意の特定の要素を用いて検索を試みても、対応する仮想ROMモジュールが見つからないかもしれず、その場合には、検索パス内の次の要素を検索することを試みる。この検索の試みが成功する場合、その仮想ROMモジュールをメモリにロードする。この時点では、ビルドプロセス中に用いられたものと同じメッセージダイジェストアルゴリズムを実行することによって、仮想ROMモジュール用のメッセージダイジェストを確認する。仮想ROMモジュール用のメッセージダイジェストに一致がある場合は、この仮想ROMモジュールは使用可能である。しかしながら、メッセージダイジェストに一致がない場合は、検索パス内の次の要素に対して検索を進める。
メッセージダイジェストの確認に続いて、実際のROMに「より接近して」仮想ROMモジュールを格納してもよいか否かに関して決定してもよい。「より接近している」とは、仮想ROMモジュールをキャッシュに入れるためにわきに置かれたローカルディスクドライブ上の標準化された場所であるとして定義してもよい。こうした場所が、存在し、且つ、仮想ROMモジュールがちょうど検索された場所よりも早く検索パス内で指定される場合には、仮想ROMモジュールをアクセス前にメモリからこの場所に書き込むことができる。
図6は、仮想ROMモジュールを検索するための本発明の例示的な実施形態におけるステップのシーケンスのフローチャートである。検索プロセス80は、検索パスに更に要素があるか否かに関する決定から開始する(ステップ81)。検索パスに追加の要素がある場合(ステップ81)、検索パスから次の場所を選択する(ステップ82)。その後、仮想ROMモジュール用のGUIDを用いて、仮想ROMモジュールのメモリへの検索を試みる(ステップ84)。検索が成功した場合、仮想ROMモジュール用にSHA−1メッセージダイジェストを生成して(ステップ86)、格納された仮想ROMモジュールと比較する(ステップ88)。これらメッセージダイジェストが一致する場合(ステップ89)、(上述したように)「より接近して」この仮想ROMモジュールをキャッシュに入れることができるか否かに関して決定する(ステップ91)。この仮想ROMモジュールをより接近してキャッシュに入れることができる場合(ステップ91)、検索パス内でより接近してそれをキャッシュに入れる(ステップ92)。その後、この仮想ROMモジュールをアクセス可能なメモリにロードして(ステップ94)、検索プロセスを終了する(ステップ96)。
更に、本発明の例示的な実施形態を用いて、ファームウェアにアップデートを安全に行うためのメカニズムを提供してもよい。バージョン番号と、アップデート妥当性検証手続きのための独自の識別子という、2つの新しい属性の生成を含めるために、独自の識別子及びメッセージダイジェストを生成する上述のステップを変更する。例えば、フレームワークの実施形態では、フレームワーク・ボリューム「ファイル」は、オプションとなる与えられたテキスト文字列と、バージョン番号、即ち単調に(原語:monotonically)増加する数値とを備える、セクションを含んでもよい。更に、フレームワーク「GUIDされたセクション抽出プロトコル」は、セクション抽出をサポートするドライバのインスタンスを参照するGUIDを含む。言い換えれば、仮想ROMモジュールのコンテンツのダウンロード及び確認にも責任のある、個別のドライバを使用してもよい。このドライバは、入れ子になったセットのドライバを起動してもよい。
図7は、各仮想ROMモジュール用にパッケージする必要のある追加属性を示す。VROMモジュールを用いて、VROMポインタ110を生成する。このVROMポインタ110は、GUID112及びSHA−1メッセージダイジェスト114を含む。加えて、このVROMポインタ110は、バージョン番号116と、独自にアップデート妥当性検証手続きを識別するアップデート・バリデータ識別子118とを更に含む。図8は、どのように実際のROMイメージ140内に、実際のROMの他の部分130と同様に、「アップデート・バリデータ」コード120と共に、モジュール用の対応する仮想ROMポインタ110もパッケージするかを示す。「アップデート・バリデータ」モジュール120を実際のROM140に格納する必要がなく、このモジュールを追加の仮想ROMモジュールとして格納してもよいことに注目するべきである。更に、GUIDされたセクション抽出プロトコル・ドライバの変形として、フレームワーク内でアッデート妥当性検証コードをインプリメントしてもよい(しかしながら、少なくとも1セットのGUIDされたセクション抽出プロトコル・ドライバをフレームワーク・インプリメンテーションにおいて実際のROMに格納しなければならない)。
一実施形態では、PGPのようなソルーションを用いて妥当性を検証する。(PGP即ち「プリティ・グッド・プライバシー」は、最先端技術に熟知している人々に有名な、電子メールメッセージにデジタルで署名且つ/或いは暗号化するための1セットのアルゴリズムである)。図9でこのプロセスを示す。ファームウェアのビルドの時に、特定の「アップデート・バリデータ」モジュールに対して、キー生成プロセス150は、公開・非公開デジタルキーペアを生成する。このためのアルゴリズムは、RSAといった任意の標準非対称キーアルゴリズムであってもよい。キーの公開部分152をアップデート・バリデータモジュール160に格納して、非公開キー154をファームウェア・ベンダー自身の個別の場所170に格納する。アップデート妥当性検証用の追加した代替セキュリティ・メカニズムについて以下で説明する。
図10のフローチャートは、1つ又は複数の仮想ROMモジュールに対するアップデートを生成する際の非公開キーの使用を示す。本発明の例示的な実施形態を含むアップデートを生成するために、アップデートの準備ができた時に200、ベンダーは、その非公開キーを用いてアップデート「モジュールキー」を生成する。ベンダー・コードは、新しいモジュール(この新しいモジュールはバージョン番号を含んでもよい)上でSHA−1といったアルゴリズムを実行し(ステップ202)、その後、公開・非公開キーの非公開部分を用いて、生じたメッセージダイジェストを暗号化する(ステップ204)。成功すると、非公開キーによって署名された、暗号化されたアップデート・モジュールキーが生成される206。当業者は、代替インプリメンテーションにおいて同様の暗号化メカニズムを用いてもよいことが分かるはずである。
一旦アップデートを生成したら、それを検索して、その妥当性を検証し、その後、仮想ROMモジュールに「パッチを当て」てもよい。検索ステップでは、バージョン・チェックが必要となる。特定の仮想ROMモジュールの前バージョンを既にダウンロードして、「ローカルキャッシュ」において利用可能になっていてもよい。多くの有名なメカニズムのうちの1つを用いて、より新しいバージョンをいつ、どのようにチェックするべきかを決定する。このメカニズムをアップデート・バリデータのインプリメンテーションに残しておく。例えば、アップデート・バリデータは、周期的により新しいバージョンのチェックを実行してもよい。代わりに、特定の場所をアップデート用に「保留」してもよく、それを常にチェックする。これらのアップデートをオペレーティングシステムが実行するコードによって提供してもよい。より新しいバージョンが存在しない場合には、図6で上述したプロセスが行われる。新バージョンを検知した場合には、アップデートをチェックするためのメカニズムに関係なく、その妥当性を検証しなればならない。この妥当性検証プロセスは、元のVROMモジュール用の上述した妥当性検証プロセスとは根本的に異なる。なぜならば、アップデートした仮想ROMモジュールが、仮想ROMの最初のビルドの時点で利用「不」可能だったからである。
本発明の1つのインプリメンテーションでは、図11及び12に示すように、アップデートに関係する「モジュールキー」の妥当性が検証される。アップデート・バリデータに格納された公開・非公開キーの公開部分を用いて、「モジュールキー」を解読する。その後、このモジュール自身をハッシュし、同等性に関してこれら2つの結果を比較する。
図11は、このステップの1つの可能なインプリメンテーションの概観を提供する。このステップでは、PCメモリ200にロードしたROMイメージ210内の仮想ROMポインタ220が、アップデートした仮想ROMモジュール250を論理的に指し示す。このアップデートしたVROMモジュール250をインターネット255経由でアクセス可能なベンダー場所260に格納してもよい。このアップデートしたVROMモジュール260は、PCメモリ200へダウンロードされ、アップデート・バリデータ230によって公開キー235を用いてその妥当性が検証されて、その後、ローカルハードドライブ270に格納される。上述のように、仮想ROMポインタのこの「パッチ当て」には、このプロセス中に仮想ROMポインタ自体をアップデート可能なことが必要である。更に、セキュリティ上の理由で、このアップデートプロセスには、処理中の後ほどでの認可されていない者による仮想ROMポインタのアップデートを不可能にすることが必要である。その上、上述のように、元の仮想ROMビルド・プロシージャが安全であり、且つ、後になって認可なくROMへアップデートされることを防ぐためのメカニズムが存在する場合には、アップデートを実行するために、認可されたコードのみが実行されているので、このアップデート手続きは全く安全である。一旦妥当性検証プロセスが成功したら、アップデート・バリデータ230は、新しいモジュール・バージョン250と一致するように実際のROMイメージ210に格納した仮想ROMポインタ220をアップデートし、その後、アップデートしたモジュールを任意でローカルディスク270のキャッシュに入れる。このアップデートは、仮想ROMポインタ220に格納された、バージョン番号及びSHA−1メッセージダイジェストを変更することを含む。
図12のフローチャートでこのアップデートプロセスについて更に説明する。アップデート検索プロセス280は、未探索のアップデート場所が存在するか否かを決定することで開始する(ステップ281)。未探索のアップデートプロセスがある場合(ステップ281)、検索パスから次の場所を選択し(ステップ282)、アップデートモジュールGUIDを用いてより新しいモジュールのメモリへの検索を試みる(ステップ284)。新バージョンが存在する場合(ステップ285)、図10に関して上述したモジュールキー妥当性検証手続きを用いて、このモジュールの妥当性を検証する(ステップ288)。VROMモジュールの新バージョンが存在しない場合、標準の検索プロセスを行う(ステップ286)。より新しいモジュールが存在する場合には、妥当性検証を試みる(ステップ289)。妥当性検証が成功した場合には、上述のようにこの新しいモジュールを「より接近して」キャッシュに入れることができるか否かに関して更なる決定を行う(ステップ291)。この新しいモジュールをより接近してキャッシュに入れることができる場合、検索パス内でより接近してそれをキャッシュに入れる(ステップ292)。キャッシュに入れることに関係なく、バリデータプロセスは、アップデートしたモジュールを反映するためにVROMポインタをアップデートし(ステップ294)、それから、メモリ内のアップデートしたモジュールにアクセスし(ステップ296)、その時点で検索プロセスを終了する298。
アップデートモジュールに関連したモジュールキーの妥当性を検証するための本発明の例示的な実施形態におけるステップのシーケンスを図13で概説する。モジュールキー妥当性検証プロセス300は、新しいモジュールに基づくSHA−1メッセージダイジェストの生成から開始する(ステップ302)。本発明の範囲を逸脱せずに、本明細書に記載された暗号化及び解読プロセスのために、様々なインプリメンテーションに様々なメッセージダイジェストアルゴリズムを用いてもよいことが当業者に理解されるはずである。その後、公開・非公開キーの公開部分を用いて、モジュールキーを解読する(ステップ304)。これら2つのメッセージダイジェストが同等か否かを確かめるためにそれらを比較する(ステップ305)。この比較でこれらメッセージダイジェストが同等であることが明らかになった場合、妥当性検証は成功である306。この比較でこれらメッセージダイジェストが同等であることが明らかにならなかった場合、妥当性検証は失敗である308。
上述のように、アップデートプロセスの一部として代替妥当性検証技法も使用してもよい。仮に無認可の読み出しからROMの部分を隠すことができる場合、アップデート妥当性検証のために対称な非公開キーを使用できる。そうするための技法について以下に説明する。この技法に関して、共通の非公開キーは、ビルドプロセス中に生成され、ベンダーだけでなくROMによっても暗号形式で格納される。同じ対称キーを用いて、アップデート「キー」を暗号化し解読できる。代わりに、アップデートをダウンロードするための信頼されたサーバーで、TLS又はSSLを用いる通信用の安全なトンネルを作成できる。その後、アップデート自体で提供される任意のメッセージダイジェストに基づくのではなく、信頼された者と通信が生じているという事実に基づいて、妥当性が検証される。
更に、本発明の例示的な実施形態を用いて、ファームウェア用の安全ストレージ領域を作成してアクセスしてもよい。暗号化又は署名のためにROMイメージの内部に秘密キーを隠しておくことにより、ROMイメージに置かれていない安全ストレージを1つ作成する。上述の任意の仮想ROMモジュールを参照しアクセスすることとほぼ同じ方法で、この安全ストレージを参照しアクセスしてもよいが、このストレージ領域がローカルディスク以外の場所にある場合は、追加の独自のマシン識別子を必要とする。
フレームワーク環境では、ストレージの使用を望む全てのファームウェア・コード用の安全な暗号化されたストレージのために、単一のファームウェア・ボリュームを使用してもよい。ファームウェア・ボリュームを使用すると、ストレージが単一のユニットとして非ROM場所から読み込まれ、単一のユニットとして書き込み直される。更に、複数のファームウェア・ボリュームを用いる他のソリューションは、直ちに明白になるはずである。上述のような再帰的な方法で実際のROM或いは第1ファームウェア・ボリュームの何れかによって、これらの追加ファームウェア・ボリュームを参照してもよい。更に、こうしたファームウェア・ボリューム各々は、それが暗号化されているか、或いは単に書き込み不能になっているかを識別するフラグを持つことができる。
本発明の例示的な実施形態は、ビルドプロセス中にストレージを保留してもよい。仮想ROMのビルド・プロシージャ中に、必要な暗号化されたストレージとして特定のファイルにマークを付ける。これらのファイルの各々は、1つの特定のファームウェア・コードによって最終的に使用される、ある暗号化されたストレージ領域用のプレースホルダの役割をする。このビルド・プロシージャは、これらのプレースホルダ・ファイル全てを合わせてファームウェア・ボリュームにし、SHA−1アルゴリズムを用いてこのファームウェア・ボリューム用のメッセージダイジェストを生成して、ROM部品用の主要なファームウェア・ボリュームにこのファームウェア・ボリュームの参照(つまり仮想ROMポインタ)を格納する。この仮想ROMポインタは、以前のように、参照した(暗号化されたストレージ)ファームウェア・ボリューム用の独自の識別子と、ファームウェア・ボリュームを検索するためにアクセスされるドライバを示すGUIDとを含む。加えて、それは2つのフラグを含み、1つ目はランタイム中にそれを暗号化するべきであることを示すもので、2つ目はそれがまだ暗号化されていないことを示すものである。
実際のROM用のビルド・プロシージャは、更にマシン識別子及び暗号化キーという2つの追加の変数のためのスペースを保留する。プリブート時に読み取り不能としてマークが付けられたファームウェア・ボリュームに、暗号化キー用のスペースを置く一方で、プリブート時に書き込み不能としてマークが付けられたファームウェア・ボリュームに、マシン識別子用のスペースを置く(この読み取り及び書き込み不能については以下でより詳しく説明する)。続いて、プリブートコードによって、最初に、暗号化されたストレージを含むことになっているファームウェア・ボリュームを検索することを決定してもよい。このプリブートコードによって、仮想ROMポインタを見る際に、参照されているファイルが暗号化のためにマーク付けされているもののまだ暗号化されていないということを決定する。この状況では、プリブートコードによって、上述の同じメカニズムを用いてファイルの第1バージョンを検索する。まだストレージが使用されていないので、ビルドの時間中に構築されていた対応するファームウェア・ボリュームの共通インスタンスは、プリブートコードの実行インスタンス全てに利用可能になってもよい。ファームウェア・ボリュームを以前のようにメモリにロードし、他のファームウェア・ボリュームと同じ方法でプリブートコードがアクセスしやすくなる。しかしながら、仮想ROMポインタの場所をアップデートする必要があるので、このファームウェア・ボリュームへのアクセスを提供するドライバは、更に仮想ROMポインタの場所と同様に(永続(原語:persistent)ストレージ媒体にそれを書き込み直すべきであることを示すための)「ダーティ」フラグも追跡する。このファームウェア・ボリューム内のファイルに対するどのアップデートでも、このダーティフラグをセットさせる。
図14は、「安全ストレージ領域」(つまり「安全ストレージ領域」をまとめるファームウェア・ボリューム)が最初に読み込まれて、マシンID及び暗号化キーが生成された時に、メモリ320をどのように分類するかを示す。このメモリ領域320は、ROMイメージ330と安全ストレージ領域340とを含む。このROMイメージは、アップデート可能な領域332と、アップデートから保護された(書き込み防止の)領域334とを含む。このアップデートから保護された領域334は、安全ストレージVROMポインタ335と、独自のマシンID用ストレージ336とを含有する。この安全ストレージVROMポインタは、VROMモジュール用のGUIDと、メッセージダイジェスト337と、暗号化フラグ333とを含む。このROMイメージは、暗号化キー用ストレージ339を含む、読み出しから保護された(読み出し防止の)領域338を更に備える。
ある時点において(ファームウェア・ボリュームの書き込み全てに対していつもというわけではないが)、プリブートコードによって、変更したファームウェア・ボリュームをあるストレージ媒体へ書き込むために決定を行う。この書き込みの決定は、前段落に記載したダーティフラグによって定まる。このプリブートコードによって、マシン識別子と暗号化キーとが生成されていないことを検知する。それによって、このマシン識別子とこの暗号化キーとを生成して、実際のROM内のそれぞれのストレージ場所に保存する。これらの識別子を生成するためには、独自の値を生成するいかなる適切なメカニズムも使用できる。1つのソルーションは、両方のためのGUID1つを使用することである。
これら識別子の生成に続いて、本発明の例示的な実施形態は、次に、ファームウェア・ボリュームを暗号化するべきであるがまだそうなってはいないことを仮想ROMポインタにおいて検知する。それは、暗号化キーを用いてファームウェア・ボリュームを暗号化し、それらの結果に基づいてSHA−1メッセージダイジェストを生成する。本発明のためには、Blowfish、DES/3DES、IDEAなどを含む、いかなる適切な暗号化アルゴリズムを使用してもよい。
ファームウェア・ボリュームの暗号化と、それらの結果に基づいたメッセージダイジェストの生成とに続いて、次に、プリブートコードによって、暗号化されたファームウェア・ボリュームを書き込む場所を決定しなければならない。この暗号化されたファームウェア・ボリューム用の1つの場所は、図15に示すようなローカルディスクドライブ350のディレクトリである。しかしながら、この暗号化されたファームウェア・ボリューム340を、代わりにローカル・ネットワーク・サーバーに、又はウェブに、又は別のアクセス可能な場所に格納してもよい。マシン識別子336とファームウェア・ボリューム・ファイルを識別するGUID331との組み合わせを用いて、独自の場所にファイルを書き込む。この時点では、プリブートコードによって、ファームウェア・ボリューム340を暗号化したことを示すことと、新しく生成されたメッセージダイジェスト337を反映することとの両方のために、実際のROM内の仮想ROMポインタ335をアップデートする。
図16のフローチャートに、安全ストレージを書き込むプロセスを示す。安全ストレージを書き込むプロセス400は、永続媒体にファームウェア・ボリュームを書き込み直すべきであることを示す、ダーティフラグがセットされているか否かを決定すること(ステップ401)で開始する。ダーティフラグがセットされていない場合は、このプロセスを終了する420。ダーティフラグがセットされている場合は、VROMポインタ335に暗号化されたフラグ333がセットされているか否かに関して決定を行う(ステップ403)。暗号化されたフラグがセットされている場合は(ステップ403)、暗号化キーを用いて安全ストレージ領域を暗号化する(ステップ408)。暗号化されたフラグがセットされていない場合は(ステップ403)、マシンIDを生成して格納し(ステップ404)、そして、暗号化キーを生成して格納する(ステップ406)。その後、この暗号化キーを用いて安全ストレージを暗号化する(ステップ408)。
安全ストレージの暗号化(ステップ408)に続いて、メッセージダイジェストを生成して、この暗号化された安全ストレージに格納する(ステップ410)。その後、マシンID336とストレージGUID331とを用いて、第2ストレージにこの暗号化されたストレージを書き込む(ステップ412)。安全ストレージの書き込み(ステップ412)の後に、この新しいメッセージダイジェストと、この暗号化されたフラグとによって、VROMポインタをアップデートし(ステップ414)、そしてこの書き込みプロセスを終了する420。
本発明の例示的な実施形態は、図17のフローチャートに示すように、暗号化されたファームウェア・ボリュームを検索するプリブートコードをサポートする。安全ストレージの読み出しプロセス440は、VROMポインタに暗号化されたフラグがセットされているか否かをプリブートコードによって決定すること(ステップ441)から開始する。ファームウェア・ボリューム340が暗号化されていることを、プリブートコードによって仮想ROMポインタ335のフラグから検知する場合は(ステップ441)、このプリコードによって、マシン識別子336とGUID331との組み合わせを用いて、このファームウェア・ボリュームを検索し読み出す(ステップ444)。VROMポインタに暗号化されたフラグがセットされていない場合は、プリブートコードによって、このストレージGUIDを用いて、暗号化されていない安全ストレージの初期値を他の場所から読み出す(ステップ442)。一旦このファームウェア・ボリュームが読み出されると(ステップ442或いはステップ444)、メッセージダイジェストを生成して、この安全ストレージに格納する(ステップ446)。この生成されたメッセージダイジェストをVROMポインタ内のメッセージダイジェストと比較し、その妥当性を検証する(ステップ447)。一致しない組み合わせがある場合は、この安全ストレージの読み出しは失敗する(ステップ448)。この妥当性検証が成功する場合は、次に、プリブートコードによって、このファームウェア・ボリュームを解読し(ステップ450)、それをメモリ320において利用可能にする。そして、この読み出しプロセスを終了する460。前と同様に、このファームウェア・ボリューム340への変更が行われたか否かを決定するために、ダーティフラグを保持する。暗号化キーとマシン識別子とを再度作成する必要がない点を除き、2度目又はその後の繰り返しにおいても、最初の書き込みと同じ方法で、この変更したファームウェア・ボリュームをストレージへ書き込む。
プリブート処理中のある時点において、本発明の例示的な実施形態は、更なる改ざん又はアクセスを防ぐために、実際のROMの様々な部分をロックする。このための正確なメカニズムは、ハードウェアに依存する。本説明では、このロックが起きる特定の時点に注目する。この時点とは、ストレージへの書き込みによってこの変更したファームウェア・ボリュームを一気に消去することと同時であってもよく、或いはその後であってもよい。
EFI互換性を保ちながらストレージを読み取り不能にするある時点とは、オペレーティングシステムのロードを開始しかけていることをOSローダがEFI環境に通知する時点である「ブート終了時サービス(原語:Exit Boot Services)」中のことである。これは、インプリメントすることがかなり容易である一方(ブート終了時サービス中にドライバに通知できる)、この点での危険は、このOSローダ・コードの信頼レベルにある。このOSローダ・コードが、他の仮想ROMモジュールと同じ方法でファームウェアのビルドプロセスの一部として利用可能になった場合には、このソルーションは全く安全である。これに対して、このOSローダ・コードが、レガシー・ブート・プロトコルを用いるといった他の方法でアクセスされる場合には、実際のROMストレージを読み取り不能にする最適の時点は、ブートオプションを検討する直前である。フレームワーク用語では、これを「DXE」(ドライバ実行環境)フェーズと「BDS」(ブートデバイス選択)フェーズとの間の移行と呼ぶであろう。
更に、本発明の例示的な実施形態では、データをプリブート中に生成でき、安全な方法で他の環境に利用可能になる。ファームウェア・イメージのビルドプロセス中に、2つの別々の安全ストレージ・ファームウェア・ボリュームに2つのファイルを保留する。第1ファイルを公開・非公開キーの公開部分のために保留し、書き込み不能である安全ストレージ・ファームウェア・ボリューム内に保留する。第2ファイルを公開・非公開キーの非公開部分のために保留し、読み取り不能である安全ストレージ・ファームウェア・ボリューム内に保留する。
プリブート時に、特定のプラットフォーム用に独自の公開・非公開キーを生成し、それぞれの安全ストレージ・ファームウェア・ボリュームに格納する。このためのアルゴリズムは、RSAといった任意の標準非対称キーアルゴリズムであってもよい。続いて、プリブート・ファームウェアは、他の環境への配信用に作成されたコンテンツに署名し、この署名は、このコンテンツ上でメッセージダイジェストアルゴリズムを実行することと、公開・非公開キーの非公開部分を用いてこのコンテンツを暗号化することとによって行われる。このコンテンツと、生じた暗号化されたメッセージダイジェストとの両方を任意のストレージ場所に格納できる。別の環境がプリブート・コンテンツを受信する際、書き込み不能のストレージに公開・非公開キーの公開部分を格納するが、まだ読み出し可能である。この公開部分を用いて、このコンテンツに伴うメッセージダイジェストを解読し、その後、このコンテンツに再度適用した同じメッセージダイジェストアルゴリズムの出力とその解読結果を照合する。このプロセスでは、このコンテンツが改ざんされていないことを保証する。他の環境が公開・非公開キーの非公開部分にアクセスしにくいので、公開キーの公開部分を用いてコンテンツを解読し妥当性を検証することができることと同じ方法で、他のコンテンツを生成するか或いは署名することは実際に不可能である。
本発明の範囲を逸脱せずに幾つかの変更を行なってもよいので、上記説明に含まれているか或いは添付の図面に示された全ての事柄は、例示的なものとして解釈されるものであって文字通りの意味に解釈されないことが意図されている。当業者は、本発明の範囲を逸脱せずに、図に示したステップのシーケンス及びアーキテクチャーを変更してもよいことと、本明細書に含まれる実例が本発明の多数の可能な描写の珍しい例であることとを理解するはずである。

Claims (10)

  1. 計算デバイスのファームウェアを安全にアップデートするためのシステムであって、
    計算デバイスであって、
    ファームウェア実行の最中の、アップデートした仮想読み出し専用メモリ(ROM)モジュールの妥当性の検証に使用される解読プロセスを含むアップデート妥当性検証手続きと、
    前記アップデート妥当性検証手続きへの参照、及び複数の仮想ROMモジュール各々のための参照を含むROMファームウェア・イメージであって、前記複数の仮想ROMモジュールは前記ROMファームウェア・イメージのビルドプロセス中に作成され、各参照は、関連する仮想ROMモジュール用のバージョン識別子、メッセージダイジェスト、独自の識別子、及び前記アップデート妥当性検証手続きを識別するバリデータ識別子を含み、前記アップデート妥当性検証手続きは、プリブートの最中に前記アップデートされた仮想ROMモジュールの信頼性を確認するために用いられ、前記アップデート妥当性検証手続きは、前記複数の仮想ROMモジュールの1つへの前記ROMファームウェア・イメージに含まれる参照をアップデートして、前記アップデートされた仮想ROMモジュールの妥当性検証に続いて前記アップデートされた仮想ROMモジュールのメッセージダイジェスト及びバージョン識別子を含める、ROMファームウェア・イメージと、
    前記ROMファームウェア・イメージ及びアップデート妥当性検証手続きがロードされる前記計算デバイスのメモリとを含む計算デバイスと、
    前記複数の仮想ROMモジュールを格納する前記ROMファームウェア・イメージの外部の少なくとも1つのストレージ場所とを含む、計算デバイスのファームウェアを安全にアップデートするためのシステム。
  2. 前記アップデートした仮想ROMモジュールが拡張可能ファームウェアインターフェース(EFI)フレームワーク・ファームウェア・ボリュームである、請求項1に記載のシステム。
  3. 計算デバイスのファームウェアを安全にアップデートする方法であって、
    前記計算デバイスに置かれたROMイメージの外部の少なくとも1つの場所に格納される、複数の仮想ROMモジュールを作成するためにファームウェア・イメージを分割する段階と、
    ファームウェア実行の最中にアップデートした仮想ROMモジュールの妥当性を検証するためのアップデート妥当性検証手続きであって、独自の識別子によって識別されると共に解読プロセスを含むアップデート妥当性検証手続きを提供する段階と、
    前記ROMイメージに置かれたファームウェアのビルド内の前記複数の仮想ROMモジュール各々のための参照を含める段階であって、各参照が、関連する仮想ROMモジュール用の、バージョン識別子、メッセージダイジェスト及び独自の識別子を備え、各参照が、関連するアップデート妥当性検証手続きを識別するバリデータ識別子を備え、ファームウェアの実行が、
    バージョン識別子を含むアップデートした仮想ROMモジュールの妥当性を検証するために、参照内のバリデータ識別子により識別される前記アップデート妥当性検証手続きを使用し、
    前記複数の仮想ROMモジュールの1つへの前記ROMイメージに含まれる参照をアップデートして、前記アップデートされた仮想ROMモジュールの妥当性検証に続いて前記アップデートされた仮想ROMモジュールのメッセージダイジェスト及び前記アップデートされた仮想ROMモジュールのバージョン識別子を含める、計算デバイスのファームウェアを安全にアップデートする方法。
  4. 前記アップデートされた仮想ROMモジュールのベンダーが、
    前記アップデートされた仮想ROMモジュール用のメッセージダイジェストを生成し、
    前記アップデート妥当性検証手続きに含まれる前記解読プロセスに、暗号化されたメッセージダイジェストを解読することを命じる暗号化プロセスを用いて、前記アップデートした仮想ROMモジュールの前記メッセージダイジェストを暗号化する、請求項3に記載の方法。
  5. 前記アップデート妥当性検証手続きが、
    前記アップデート妥当性検証手続きに含まれる前記解読プロセスを用いて前記暗号化されたメッセージダイジェストを解読し、
    前記アップデートした仮想ROMモジュールの妥当性を検証するために、前記アップデートした仮想ROMモジュールに生成された新しいメッセージダイジェストと、前記暗号化されたメッセージダイジェストの前記解読を比較する、請求項4に記載の方法。
  6. 前記アップデート妥当性検証手続きが、前記アップデートした仮想ROMモジュールを新しいモジュールとして識別するために、前記アップデートした仮想ROMモジュールの前記バージョン識別子と、前記複数の仮想ROMモジュールのうちの1つの前記バージョン識別子を比較する、請求項4に記載の方法。
  7. 前記アップデート妥当性検証手続きを前記ROMイメージの一部として格納する、請求項4に記載の方法。
  8. 前記アップデート妥当性検証手続きを前記複数の仮想ROMモジュールのうちの1つとして格納する、請求項4に記載の方法。
  9. 前記アップデートした仮想ROMモジュールが拡張可能ファームウェアインターフェース(EFI)フレームワーク・ファームウェア・ボリュームである、請求項4に記載の方法。
  10. ファームウェアの実行が、
    前記計算デバイスと前記アップデートされた仮想ROMモジュールを保持する信頼されたサーバーとの間に安全なトンネルを生成するために、参照内の前記バリデータ識別子により識別される前記アップデート妥当性検証手続きを使用し、
    前記トンネルを用いて、前記アップデートした仮想ROMモジュールを前記計算デバイスへダウンロードする、請求項4に記載の方法。

JP2012182646A 2005-02-02 2012-08-21 ファームウェアに安全なアップデートを提供するシステム及び方法 Active JP5403771B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US64948605P 2005-02-02 2005-02-02
USUS60/649,486 2005-02-02

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006025172A Division JP5437550B2 (ja) 2005-02-02 2006-02-02 ファームウェアの必要なメモリ容量を減らすシステム及び方法

Publications (2)

Publication Number Publication Date
JP2013012217A JP2013012217A (ja) 2013-01-17
JP5403771B2 true JP5403771B2 (ja) 2014-01-29

Family

ID=36979188

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006025172A Active JP5437550B2 (ja) 2005-02-02 2006-02-02 ファームウェアの必要なメモリ容量を減らすシステム及び方法
JP2012182646A Active JP5403771B2 (ja) 2005-02-02 2012-08-21 ファームウェアに安全なアップデートを提供するシステム及び方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006025172A Active JP5437550B2 (ja) 2005-02-02 2006-02-02 ファームウェアの必要なメモリ容量を減らすシステム及び方法

Country Status (4)

Country Link
US (6) US7603562B2 (ja)
JP (2) JP5437550B2 (ja)
CN (1) CN100576173C (ja)
TW (2) TWI444826B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797457B2 (en) 2020-09-18 2023-10-24 Kabushiki Kaisha Toshiba Electronic apparatus and method for controlling data update processing on memory

Families Citing this family (199)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316361B2 (en) * 2003-01-09 2012-11-20 Hewlett-Packard Development Company, L.P. Method of enabling a user to update one or more low-level resources of a computer system in a user-friendly manner
US9489496B2 (en) * 2004-11-12 2016-11-08 Apple Inc. Secure software updates
US7603562B2 (en) 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US20070136609A1 (en) * 2005-12-13 2007-06-14 Rudelic John C Methods and apparatus for providing a secure channel associated with a flash device
US7818740B2 (en) * 2006-05-05 2010-10-19 Microsoft Corporation Techniques to perform gradual upgrades
RU2388045C2 (ru) * 2006-06-19 2010-04-27 Самсунг Электроникс Ко., Лтд. Система и способ обновления программы для переносного устройства с поддержкой ота
US7765373B1 (en) * 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7797696B1 (en) 2006-06-30 2010-09-14 American Megatrends, Inc. Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure
US9395968B1 (en) * 2006-06-30 2016-07-19 American Megatrends, Inc. Uniquely identifying and validating computer system firmware
US7590835B1 (en) 2006-06-30 2009-09-15 American Megatrends, Inc. Dynamically updating a computer system firmware image
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
GB0623933D0 (en) * 2006-11-29 2007-01-10 Ibm Apparatus and method for synchronizing controller firmware download
US9883943B2 (en) 2006-12-05 2018-02-06 Valtech Cardio, Ltd. Implantation of repair devices in the heart
US8291480B2 (en) * 2007-01-07 2012-10-16 Apple Inc. Trusting an unverified code image in a computing device
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8560823B1 (en) * 2007-04-24 2013-10-15 Marvell International Ltd. Trusted modular firmware update using digital certificate
US8448193B2 (en) * 2007-04-27 2013-05-21 Ricoh Company, Ltd. Image forming device, information processing method, and information processing program
US7987349B2 (en) * 2007-06-29 2011-07-26 Intel Corporation Encryption acceleration
US8516136B2 (en) * 2007-07-09 2013-08-20 Alcatel Lucent Web-based over-the-air provisioning and activation of mobile terminals
CA2637168C (en) 2007-07-11 2015-12-01 Jeb Stuart Thorley Method and system for version independent software release management
US7836309B2 (en) * 2007-07-20 2010-11-16 Microsoft Corporation Generic extensible pre-operating system cryptographic infrastructure
TWI344288B (en) * 2007-07-23 2011-06-21 Arcadyan Technology Corp Embedded system with web-based user interface, firmware structure thereof, and method for providing information thereof
US8230412B2 (en) * 2007-08-31 2012-07-24 Apple Inc. Compatible trust in a computing device
US8429643B2 (en) * 2007-09-05 2013-04-23 Microsoft Corporation Secure upgrade of firmware update in constrained memory
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US8068614B2 (en) * 2007-09-28 2011-11-29 Intel Corporation Methods and apparatus for batch bound authentication
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US7865468B2 (en) * 2008-02-29 2011-01-04 International Business Machines Corporation Prefetching remote files on local disk space
CN101247416A (zh) * 2008-03-25 2008-08-20 中兴通讯股份有限公司 基于ota的固件下载方法、预处理方法、完整性验证方法
US8631397B2 (en) * 2008-03-31 2014-01-14 Microsoft Corporation Virtualized application image patching
US8347348B2 (en) * 2008-03-31 2013-01-01 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for pre-boot policy modification
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US8364983B2 (en) 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8555048B2 (en) * 2008-05-17 2013-10-08 Hewlett-Packard Development Company, L.P. Computer system for booting a system image by associating incomplete identifiers to complete identifiers via querying storage locations according to priority level where the querying is self adjusting
US8321654B2 (en) * 2008-05-20 2012-11-27 Alcatel Lucent Methods for initial bootstrap during activation and initial configuration of user terminals in network
US8335931B2 (en) * 2008-06-20 2012-12-18 Imation Corp. Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments
WO2009156302A1 (en) * 2008-06-23 2009-12-30 Nxp B.V. Electronic device and method of software or firmware updating of an electronic device
US20090327750A1 (en) * 2008-06-29 2009-12-31 Tse-Hong Wu Security system for code dump protection and method thereof
US9069965B2 (en) 2008-08-26 2015-06-30 Dell Products L.P. System and method for secure information handling system flash memory access
US8479015B2 (en) * 2008-10-17 2013-07-02 Oracle International Corporation Virtual image management
US20100131694A1 (en) * 2008-11-26 2010-05-27 Kelly Scott G Secure Boot ROM Emulation
US8756667B2 (en) * 2008-12-22 2014-06-17 Lenovo (Singapore) Pte. Ltd. Management of hardware passwords
US8407700B2 (en) * 2009-03-03 2013-03-26 Symantec Corporation Methods and systems for merging virtualization sublayers
US8176307B2 (en) * 2009-04-13 2012-05-08 Broadcom Corporation Method and system for post-build modification of firmware binaries to support different hardware configurations
US20100278445A1 (en) * 2009-04-30 2010-11-04 Timothy Kindberg Generating data using a data encoding symbol
US9968452B2 (en) 2009-05-04 2018-05-15 Valtech Cardio, Ltd. Annuloplasty ring delivery cathethers
US8321656B2 (en) * 2009-06-13 2012-11-27 Phoenix Technologies Ltd. Timer use in extensible firmware interface compliant systems
US8356184B1 (en) 2009-06-25 2013-01-15 Western Digital Technologies, Inc. Data storage device comprising a secure processor for maintaining plaintext access to an LBA table
US8887144B1 (en) 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8102881B1 (en) 2009-09-08 2012-01-24 Amazon Technologies, Inc. Streamlined guest networking in a virtualized environment
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8640220B1 (en) 2009-09-09 2014-01-28 Amazon Technologies, Inc. Co-operative secure packet management
US8300641B1 (en) 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
WO2011075139A1 (en) 2009-12-18 2011-06-23 Hewlett-Packard Development Company, L.P. Methods and devices for updating firmware of a component using a firmware update application
JP5564956B2 (ja) * 2010-01-15 2014-08-06 富士通株式会社 情報処理装置及び情報処理装置のファームウェア更新方法
US8825920B2 (en) * 2010-01-20 2014-09-02 Spansion Llc Field upgradable firmware for electronic devices
WO2011116459A1 (en) 2010-03-25 2011-09-29 Enomaly Inc. System and method for secure cloud computing
KR20110108071A (ko) * 2010-03-26 2011-10-05 삼성전자주식회사 펌웨어 다운로드 시스템
US9465601B2 (en) 2010-04-20 2016-10-11 International Business Machines Corporation Pluggable activation engine extensions via virtual disks
US9721101B2 (en) * 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8700895B1 (en) * 2010-06-30 2014-04-15 Google Inc. System and method for operating a computing device in a secure mode
US9118666B2 (en) 2010-06-30 2015-08-25 Google Inc. Computing device integrity verification
US8522322B2 (en) * 2010-09-22 2013-08-27 Intel Corporation Platform firmware armoring technology
CN102591669B (zh) * 2011-01-06 2015-01-28 南京百敖软件有限公司 模块化计算机固件及其实现方法
CN103620567A (zh) * 2011-06-07 2014-03-05 Lsi公司 主机看到的设备固件更新效果的管理
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
US8943564B2 (en) * 2011-07-21 2015-01-27 International Business Machines Corporation Virtual computer and service
US8924737B2 (en) 2011-08-25 2014-12-30 Microsoft Corporation Digital signing authority dependent platform secret
WO2013032426A1 (en) * 2011-08-26 2013-03-07 Hewlett-Packard Development Company, L.P. Managing access to a network
CN103164351B (zh) * 2011-12-16 2016-04-27 宏碁股份有限公司 数据存取方法
US9037779B2 (en) * 2011-12-19 2015-05-19 Sandisk Technologies Inc. Systems and methods for performing variable flash wear leveling
US9305142B1 (en) 2011-12-19 2016-04-05 Western Digital Technologies, Inc. Buffer memory protection unit
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
EP2660721A1 (en) * 2012-05-03 2013-11-06 Gemalto SA Method of loading an application in a secure device
US8972973B2 (en) * 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
US9110761B2 (en) 2012-06-27 2015-08-18 Microsoft Technology Licensing, Llc Resource data structures for firmware updates
US9235404B2 (en) 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system
US8898654B2 (en) * 2012-08-29 2014-11-25 Microsoft Corporation Secure firmware updates
US9390278B2 (en) 2012-09-14 2016-07-12 Freescale Semiconductor, Inc. Systems and methods for code protection in non-volatile memory systems
US9519786B1 (en) * 2012-10-05 2016-12-13 Google Inc. Firmware integrity ensurance and update
US9128798B2 (en) * 2012-10-17 2015-09-08 Movimento Group Module updating device
US9344762B2 (en) * 2012-10-18 2016-05-17 Broadcom Corporation Integration of untrusted applications and frameworks with a secure operating system environment
GB2507497B (en) * 2012-10-30 2015-01-14 Barclays Bank Plc Device and method for secure memory access
GB2507596B (en) 2012-10-30 2014-09-17 Barclays Bank Plc Secure computing device and method
US9015694B2 (en) 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
EP2920751A1 (en) * 2012-11-19 2015-09-23 Barclays Bank PLC Secure computing device and method
CN103279700A (zh) * 2013-06-08 2013-09-04 北京时代奥视数码技术有限公司 液晶监视器的固件版本验证方法和液晶监视器
US9436439B2 (en) 2013-06-18 2016-09-06 Ciambella Ltd. Method and apparatus for code virtualization and remote process call generation
US9032423B2 (en) 2013-06-21 2015-05-12 Microsoft Technology Licensing, Llc Dependency based configuration package activation
US9830136B2 (en) 2013-07-12 2017-11-28 Ciambella Ltd. Method and apparatus for firmware virtualization
TWI493463B (zh) * 2013-10-30 2015-07-21 Insyde Software Corp Electronic device, universal extension firmware interface Basic input and output system firmware update method, recording media and computer program products
KR101861724B1 (ko) 2013-10-31 2018-05-29 인텔 코포레이션 사전 부팅 펌웨어 갱신을 위한 선택적인 전력 관리
DE112013007574T5 (de) * 2013-11-06 2016-08-18 Mitsubishi Electric Corporation Softwareaktualisierungsvorrichtung und Software-Aktualisierungsprogramm
US10049217B2 (en) 2013-11-13 2018-08-14 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9798880B2 (en) 2013-11-13 2017-10-24 Via Technologies, Inc. Fuse-enabled secure bios mechanism with override feature
US10055588B2 (en) 2013-11-13 2018-08-21 Via Technologies, Inc. Event-based apparatus and method for securing BIOS in a trusted computing system during execution
US10095868B2 (en) 2013-11-13 2018-10-09 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9779243B2 (en) 2013-11-13 2017-10-03 Via Technologies, Inc. Fuse-enabled secure BIOS mechanism in a trusted computing system
US9779242B2 (en) 2013-11-13 2017-10-03 Via Technologies, Inc. Programmable secure bios mechanism in a trusted computing system
US9767288B2 (en) 2013-11-13 2017-09-19 Via Technologies, Inc. JTAG-based secure BIOS mechanism in a trusted computing system
US9367689B2 (en) * 2013-11-13 2016-06-14 Via Technologies, Inc. Apparatus and method for securing BIOS in a trusted computing system
US9507942B2 (en) 2013-11-13 2016-11-29 Via Technologies, Inc. Secure BIOS mechanism in a trusted computing system
US9547767B2 (en) 2013-11-13 2017-01-17 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
FR3013863B1 (fr) * 2013-11-25 2017-02-24 Maxim Integrated Products Systemes et procedes de mise en oeuvre de microcontroleurs securises
EP3087471A4 (en) * 2013-12-27 2017-10-11 Intel Corporation Controlled customization of silicon initialization
US9842210B2 (en) * 2014-01-16 2017-12-12 Raytheon Company Universal extensible firmware interface module identification and analysis
JP2015170036A (ja) * 2014-03-05 2015-09-28 株式会社東芝 Icカード、icカードの制御方法、及び処理装置
WO2015172352A1 (en) 2014-05-15 2015-11-19 Seagate Technology Llc Storage device tampering detection
US10169052B2 (en) 2014-07-22 2019-01-01 Hewlett-Packard Development Company, L.P. Authorizing a bios policy change for storage
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
EP3007094B1 (en) * 2014-10-08 2021-05-05 Nintendo Co., Ltd. Boot program, information processing apparatus, information processing system, information processing method, semiconductor apparatus, and program
US9489542B2 (en) 2014-11-12 2016-11-08 Seagate Technology Llc Split-key arrangement in a multi-device storage enclosure
TW201619866A (zh) * 2014-11-20 2016-06-01 萬國商業機器公司 客製化資訊設備的方法
TWI507893B (zh) * 2014-12-09 2015-11-11 Inventec Corp 儲存擴充裝置自動識別系統及儲存擴充裝置自動識別配置方法
US10154023B1 (en) * 2014-12-18 2018-12-11 EMC IP Holding Company LLC Method and system for secure instantiation of an operation system within the cloud
US10101987B2 (en) * 2015-03-11 2018-10-16 Echelon Corporation Method and system of processing an image upgrade
CN104731674B (zh) * 2015-02-02 2020-09-01 北京忆恒创源科技有限公司 使用mlc nvm存储电子系统固件的方法与设备
US10146942B2 (en) * 2015-02-24 2018-12-04 Dell Products, Lp Method to protect BIOS NVRAM from malicious code injection by encrypting NVRAM variables and system therefor
US20160256269A1 (en) 2015-03-05 2016-09-08 Mitralign, Inc. Devices for treating paravalvular leakage and methods use thereof
US10013387B2 (en) 2015-06-11 2018-07-03 Cisco Technology, Inc. Method or apparatus for flexible firmware image management in microserver
US20160378686A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Memory encryption exclusion method and apparatus
US9965270B2 (en) * 2015-07-01 2018-05-08 Quanta Computer Inc. Updating computer firmware
US10467015B2 (en) * 2015-09-08 2019-11-05 Dell Products, Lp Method for out of band device configuration deployment and system therefor
WO2017048291A1 (en) * 2015-09-18 2017-03-23 Hewlett Packard Enterprise Development Lp Firmware update packages
KR20180087446A (ko) 2015-12-21 2018-08-01 시암벨라 리미티드 컨트롤러 기반 원격 솔루션들을 생성 및 관리하기 위한 방법 및 장치
US10828160B2 (en) 2015-12-30 2020-11-10 Edwards Lifesciences Corporation System and method for reducing tricuspid regurgitation
US20180081666A1 (en) * 2016-03-11 2018-03-22 Oleksii Surdu Reliable and Secure Firmware Update for Internet of Things (IoT) Devices
FR3050555B1 (fr) * 2016-04-21 2019-09-27 Thales Procede de traitement d'un fichier de mise a jour d'un equipement avionique d'un aeronef, produit programme d'ordinateur, dispositif electronique de traitement et systeme de traitement associes
US10097563B2 (en) 2016-05-04 2018-10-09 Gbs Laboratories, Llc Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
US10503931B2 (en) * 2016-05-09 2019-12-10 Arris Enterprises Llc Method and apparatus for dynamic executable verification
US11087249B2 (en) 2016-05-24 2021-08-10 Ciambella Ltd. Method and apparatus for triggering execution of a workflow over a network
US10309792B2 (en) 2016-06-14 2019-06-04 nuTonomy Inc. Route planning for an autonomous vehicle
US11092446B2 (en) 2016-06-14 2021-08-17 Motional Ad Llc Route planning for an autonomous vehicle
US10126136B2 (en) 2016-06-14 2018-11-13 nuTonomy Inc. Route planning for an autonomous vehicle
US10829116B2 (en) 2016-07-01 2020-11-10 nuTonomy Inc. Affecting functions of a vehicle based on function-related information about its environment
GB201611910D0 (en) 2016-07-08 2016-08-24 Valtech Cardio Ltd Adjustable annuloplasty device with alternating peaks and troughs
US10798780B2 (en) 2016-08-22 2020-10-06 Ciambella Ltd. Method and apparatus for creating and managing controller based remote solutions
JP6585019B2 (ja) * 2016-09-13 2019-10-02 株式会社東芝 ネットワーク監視装置、ネットワークシステムおよびプログラム
US10681513B2 (en) 2016-10-20 2020-06-09 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10331129B2 (en) 2016-10-20 2019-06-25 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10857994B2 (en) 2016-10-20 2020-12-08 Motional Ad Llc Identifying a stopping place for an autonomous vehicle
US10473470B2 (en) 2016-10-20 2019-11-12 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
CN106775716B (zh) * 2016-12-15 2020-04-17 中国科学院沈阳自动化研究所 一种基于度量机制的可信plc启动方法
US10331434B2 (en) * 2016-12-21 2019-06-25 Quanta Computer Inc. System and method for remotely updating firmware
TWI621017B (zh) * 2017-03-06 2018-04-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10409562B2 (en) 2017-03-14 2019-09-10 Ciambella Ltd. Method and apparatus for automatically generating and incorporating code in development environments
US10936299B2 (en) * 2017-04-28 2021-03-02 Dell Products, L.P. Automated intra-system persistent memory updates
CN107179928A (zh) * 2017-05-12 2017-09-19 深圳市四海众联网络科技有限公司 一种通信设备自动升级的方法
TWI667590B (zh) * 2017-06-01 2019-08-01 慧榮科技股份有限公司 資料儲存裝置以及韌體加密及更新方法
US10346157B2 (en) * 2017-07-31 2019-07-09 Qualcomm Incorporated Patch infrastructure for ROM firmware
US20190102321A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Techniques to provide access protection to shared virtual memory
TWI647610B (zh) * 2017-11-14 2019-01-11 慧榮科技股份有限公司 認證韌體資料之資料儲存裝置與資料儲存方法
US10949537B2 (en) * 2017-12-01 2021-03-16 Stmicroelectronics, Inc. Secure firmware provisioning and device binding mechanism
CN108572842A (zh) * 2017-12-30 2018-09-25 天津清源电动车辆有限责任公司 一种电动汽车远程监控系统的自更新方法
US11238181B2 (en) * 2018-02-14 2022-02-01 Roku, Inc. Production console authorization permissions
US10592271B1 (en) 2018-03-05 2020-03-17 Cavium, Llc Methods and systems for tracking a virtual memory of a virtual machine
CN108494866A (zh) * 2018-03-30 2018-09-04 北京小米移动软件有限公司 信息处理方法及服务器、终端设备
EP3803654A4 (en) * 2018-05-28 2022-02-23 Royal Bank of Canada SYSTEM AND PROCEDURES FOR SECURE ELECTRONIC TRANSACTION PLATFORM
CN108777803A (zh) * 2018-06-05 2018-11-09 四川师范大学 广电云平台视频流处理方法、装置、设备及介质
CN109214168B (zh) * 2018-08-27 2020-08-18 阿里巴巴集团控股有限公司 固件升级方法及装置
CN109446815B (zh) * 2018-09-30 2020-12-25 华为技术有限公司 基本输入输出系统固件的管理方法、装置和服务器
US10726133B1 (en) * 2019-02-04 2020-07-28 Dell Products L.P. Securely loading UEFI images at runtime
US10990411B2 (en) * 2019-03-25 2021-04-27 Dell Products L.P. System and method to install firmware volumes from NVMe boot partition
TWI756156B (zh) * 2019-04-07 2022-02-21 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
US11579893B2 (en) * 2019-04-18 2023-02-14 Dell Products L.P. Systems and methods for separate storage and use of system BIOS components
US10789062B1 (en) * 2019-04-18 2020-09-29 Dell Products, L.P. System and method for dynamic data deduplication for firmware updates
US11169818B2 (en) * 2019-04-25 2021-11-09 Dell Products L.P. Systems and methods for dynamically locating and accessing operating system (OS) file system data from a pre-boot environment
TWI693600B (zh) * 2019-05-08 2020-05-11 慧榮科技股份有限公司 具安全性擴充的資料儲存裝置以及非揮發式記憶體控制方法
CN110297726B (zh) * 2019-07-03 2023-08-25 上海兆芯集成电路股份有限公司 具有串行存在检测数据的计算机系统及内存模块控制方法
DE102019209887A1 (de) * 2019-07-04 2021-01-07 BSH Hausgeräte GmbH System und Verfahren zur Speicherung eines zu schützenden Datensatzes
CN110363011B (zh) * 2019-07-19 2024-05-07 腾讯科技(深圳)有限公司 用于验证基于uefi的bios的安全性的方法和设备
KR20210046418A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법
US10997297B1 (en) * 2019-12-06 2021-05-04 Western Digital Technologies, Inc. Validating firmware for data storage devices
CN113127018A (zh) * 2019-12-30 2021-07-16 聚众联合科技股份有限公司 固件更新的方法及其固件更新系统
US11061666B1 (en) * 2020-01-07 2021-07-13 International Business Machines Corporation Distributing computing tasks to individual computer systems
US12032948B2 (en) * 2020-01-24 2024-07-09 Insyde Software Corp. System and method for runtime capsule firmware update with low-latency software SMIs
US11392391B2 (en) * 2020-02-03 2022-07-19 Dell Products L.P. Selectively updating a bios image
WO2021162690A1 (en) * 2020-02-12 2021-08-19 Hewlett-Packard Development Company, L.P. Component access to rom-stored firmware code over firmware controller-exposed virtual rom link
US20210349708A1 (en) * 2020-05-05 2021-11-11 Caterpillar Inc. System and method involving multiple software targets packaged into one file
US11989551B2 (en) * 2021-03-18 2024-05-21 Quanta Computer Inc. Modular firmware composition
US20230315595A1 (en) * 2022-03-30 2023-10-05 Dell Products L.P. Enriched pre-extensible firmware interface initialization graphics

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5878256A (en) * 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US5835760A (en) * 1995-10-13 1998-11-10 Texas Instruments Incorporated Method and arrangement for providing BIOS to a host computer
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US20010056540A1 (en) * 1997-09-16 2001-12-27 Timothy Ober Secure memory area
US6052803A (en) * 1997-09-26 2000-04-18 3Com Corporation Key-based technique for assuring and maintaining integrity of firmware stored in both volatile and non-volatile memory
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6009520A (en) * 1997-12-10 1999-12-28 Phoenix Technologies, Ltd Method and apparatus standardizing use of non-volatile memory within a BIOS-ROM
US7689532B1 (en) * 2000-07-20 2010-03-30 Digimarc Corporation Using embedded data with file sharing
US6269446B1 (en) * 1998-06-26 2001-07-31 Canon Kabushiki Kaisha Authenticating images from digital cameras
JP2000227856A (ja) * 1999-02-08 2000-08-15 Fuji Xerox Co Ltd メモリ制御システム
US6571335B1 (en) * 1999-04-01 2003-05-27 Intel Corporation System and method for authentication of off-chip processor firmware code
US6618810B1 (en) * 1999-05-27 2003-09-09 Dell Usa, L.P. Bios based method to disable and re-enable computers
US7231513B1 (en) * 1999-12-17 2007-06-12 Intel Corporation Dynamically linked basic input/output system
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6976163B1 (en) * 2000-07-12 2005-12-13 International Business Machines Corporation Methods, systems and computer program products for rule based firmware updates utilizing certificate extensions and certificates for use therein
WO2002013435A1 (en) * 2000-08-04 2002-02-14 First Data Corporation Method and system for using electronic communications for an electronic contact
US6633976B1 (en) * 2000-08-10 2003-10-14 Phoenix Technologies Ltd. Method of storing BIOS modules and transferring them to memory for execution
US7000249B2 (en) * 2001-05-18 2006-02-14 02Micro Pre-boot authentication system
US7028184B2 (en) * 2001-01-17 2006-04-11 International Business Machines Corporation Technique for digitally notarizing a collection of data streams
US6718464B2 (en) * 2001-01-23 2004-04-06 International Business Machines Corporation Method and system for customizing a client computer system configuration for a current user using BIOS settings downloaded from a server
JP2002297410A (ja) * 2001-03-30 2002-10-11 Minolta Co Ltd データ通信プログラム、データ通信プログラムを記録したコンピュータ読み取り可能な記録媒体、データ通信装置およびデータ通信方法
US7213052B2 (en) * 2001-03-31 2007-05-01 Minolta Co., Ltd. Data communication apparatus capable of rewriting firmware
US20020147918A1 (en) * 2001-04-05 2002-10-10 Osthoff Harro R. System and method for securing information in memory
US6966837B1 (en) * 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
JP2002351668A (ja) * 2001-05-28 2002-12-06 Nec Corp コンピュータシステム、コンピュータの起動方法、及びコンピュータ起動プログラム
US7103641B2 (en) * 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
GB0116568D0 (en) * 2001-07-06 2001-08-29 Ncipher Corp Ltd Firmware validation
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US7181510B2 (en) * 2002-01-04 2007-02-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating a secure embedded I/O processor for a remote server management controller
US6725178B2 (en) * 2002-01-15 2004-04-20 International Business Machines Corporation Use of hidden partitions in a storage device for storing BIOS extension files
US7454603B2 (en) * 2002-02-11 2008-11-18 Intel Corporation Method and system for linking firmware modules in a pre-memory execution environment
US7321969B2 (en) * 2002-04-26 2008-01-22 Entrust Limited Secure instant messaging system using instant messaging group policy certificates
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US6920566B2 (en) * 2002-07-12 2005-07-19 Phoenix Technologies Ltd. Secure system firmware by disabling read access to firmware ROM
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7730325B2 (en) * 2002-09-13 2010-06-01 Bally Gaming, Inc. Verification system and method
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US7246266B2 (en) * 2002-11-21 2007-07-17 Chris Sneed Method and apparatus for firmware restoration in modems
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
US20040123093A1 (en) * 2002-12-20 2004-06-24 Rothman Michael A. Method and apparatus for loading BIOS and option ROM's from alternate locations
US8245055B2 (en) * 2002-12-31 2012-08-14 Intel Corporation Method for firmware control invocation from power management
US7240361B2 (en) * 2003-01-31 2007-07-03 Qwest Communications International Inc. Systems and methods for controlled transmittance in a telecommunication system
US7395420B2 (en) * 2003-02-12 2008-07-01 Intel Corporation Using protected/hidden region of a magnetic media under firmware control
US7337309B2 (en) * 2003-03-24 2008-02-26 Intel Corporation Secure online BIOS update schemes
TWI227443B (en) 2003-04-16 2005-02-01 Insyde Software Corp A resource compatible system for EFI (extensible firm interface) and BIOS (basic input/output system)
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
US7143279B2 (en) * 2003-05-29 2006-11-28 Intel Corporation Dynamic BIOS execution and concurrent update for a blade server
US20050021968A1 (en) * 2003-06-25 2005-01-27 Zimmer Vincent J. Method for performing a trusted firmware/bios update
US7380136B2 (en) * 2003-06-25 2008-05-27 Intel Corp. Methods and apparatus for secure collection and display of user interface information in a pre-boot environment
US7299503B2 (en) * 2003-06-26 2007-11-20 International Business Machines Corporation Apparatus and method for location specific authentication using powerline networking
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US7328340B2 (en) * 2003-06-27 2008-02-05 Intel Corporation Methods and apparatus to provide secure firmware storage and service access
EP2570918A1 (en) * 2003-07-07 2013-03-20 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
US20050091496A1 (en) * 2003-10-23 2005-04-28 Hyser Chris D. Method and system for distributed key management in a secure boot environment
US7017040B2 (en) * 2003-12-04 2006-03-21 Intel Corporation BIOS update file
TW200519744A (en) * 2003-12-05 2005-06-16 Tatung Co Ltd Method for firmware update
US7424603B2 (en) * 2003-12-18 2008-09-09 Intel Corporation Method and apparatus to store initialization and configuration information
US7207039B2 (en) * 2003-12-24 2007-04-17 Intel Corporation Secure booting and provisioning
US7457945B2 (en) * 2004-03-23 2008-11-25 Dell Products L.P. System and method for providing a secure firmware update to a device in a computer system
US7590867B2 (en) * 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
US7364087B2 (en) * 2004-06-24 2008-04-29 Intel Corporation Virtual firmware smart card
US7406591B2 (en) * 2004-06-29 2008-07-29 Intel Corporation Booting from a remote BIOS image
US20060005046A1 (en) * 2004-06-30 2006-01-05 Seagate Technology Llc Secure firmware update procedure for programmable security devices
US7406520B2 (en) * 2004-07-30 2008-07-29 Sap Aktiengesellschaft Identifying interfaces related to a service
US7730326B2 (en) * 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US7577832B2 (en) * 2004-12-14 2009-08-18 Hewlett-Packard Development Company, L.P. Apparatus and method for booting a system
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
US7770003B2 (en) * 2004-12-29 2010-08-03 Intel Corporation Updating firmware securely over a network
US7502946B2 (en) * 2005-01-20 2009-03-10 Panasonic Corporation Using hardware to secure areas of long term storage in CE devices
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US8898477B2 (en) * 2007-11-12 2014-11-25 Gemalto Inc. System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US9235404B2 (en) * 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797457B2 (en) 2020-09-18 2023-10-24 Kabushiki Kaisha Toshiba Electronic apparatus and method for controlling data update processing on memory

Also Published As

Publication number Publication date
US20060174055A1 (en) 2006-08-03
TWI363964B (en) 2012-05-11
CN100576173C (zh) 2009-12-30
US8468331B2 (en) 2013-06-18
JP2013012217A (ja) 2013-01-17
JP2006216048A (ja) 2006-08-17
TWI444826B (zh) 2014-07-11
US7774596B2 (en) 2010-08-10
US9235403B2 (en) 2016-01-12
US20120221866A1 (en) 2012-08-30
US20060174109A1 (en) 2006-08-03
JP5437550B2 (ja) 2014-03-12
US7603562B2 (en) 2009-10-13
CN1831774A (zh) 2006-09-13
US20090327738A1 (en) 2009-12-31
TW200638200A (en) 2006-11-01
US8181020B2 (en) 2012-05-15
US20140136856A1 (en) 2014-05-15
TW201224752A (en) 2012-06-16
US20060174240A1 (en) 2006-08-03
US8645717B2 (en) 2014-02-04

Similar Documents

Publication Publication Date Title
JP5403771B2 (ja) ファームウェアに安全なアップデートを提供するシステム及び方法
US10931451B2 (en) Securely recovering a computing device
US10417427B2 (en) Method for authenticating firmware volume and system therefor
US8254568B2 (en) Secure booting a computing device
JP4510373B2 (ja) 共有名を用いてコンポーネントにセキュリティを提供するシステムおよび方法
US7751584B2 (en) Method to provide transparent information in binary drivers via steganographic techniques
US20080165971A1 (en) Trusting an Unverified Code Image in a Computing Device
JP2010073193A (ja) モバイルインターネットデバイス(mid)でuefiファームウェア及びuefiアウェアなオペレーティングシステムのセキュアなブートのためのシステム及び方法
JP2007535053A (ja) リムーバブルメディアへのソフトウェアのインストール
JP2010073193A5 (ja)
US9690944B2 (en) System and method updating disk encryption software and performing pre-boot compatibility verification
US20020169976A1 (en) Enabling optional system features
JP7084160B2 (ja) 起動制御装置、起動制御システム、起動制御方法、及び、起動制御プログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131025

R150 Certificate of patent or registration of utility model

Ref document number: 5403771

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250