(57)【特許請求の範囲】
【請求項１】
プロセッサと、
１つのブート・イメージならびに当該ブート・イメージに対応し、当該ブート・イメージに対して冗長な１つまたは複数のブート・イメージを含む１つまたは複数のブート・メモリと、
少なくとも１つのセキュア・ブート・イメージを含むセキュアな読み取り専用の場所と、
コンピューティング・デバイスのブート・サイクルを開始するための開始及びリカバリ・ソフトウェアを含んだメモリとを含み、
前記開始及びリカバリ・ソフトウェアは、前記プロセッサによって実行されたときに、
ブート・イメージの検証をロードして実行することであって、前記ブート・イメージは、ブート・コードの複数のレベルを含むことと、
ブート・コードのレベルが前記検証によって使用不能であると判断された場合に、前記ブート・サイクルを停止し、ブート・コードの冗長レベルの第２の検証をロードして実行することと、
ブート・コードの前記冗長レベルが前記第２の検証によって使用不能であると判断された場合に、ブート・コードの前記使用不能なレベルを、ブート・コードのセキュア・レベルで置き換えるために前記セキュアな読み取り専用の場所からブート・コードの前記セキュア・レベルをロードし、最後に把握された検証可能なレベルで前記ブート・サイクルを再開すること
を前記プロセッサに実現させる、コンピューティング・デバイス。
【請求項２】
それぞれの前記レベルがブート・コードのコア・トラステッド部分から上に検証される、請求項１記載のコンピューティング・デバイス。
【請求項３】
前記ブート・イメージの検証を実行することは、暗号鍵を使用してブート・コードのレベルをチェックすることを含む、請求項１記載のコンピューティング・デバイス。
【請求項４】
前記リカバリ・ソフトウェアは、実行されたときに、
ロードされたブート・コードの前記セキュア・レベルの検証を実行すること
を前記プロセッサにさらに実行させる、請求項１記載のコンピューティング・デバイス。
【請求項５】
ロードされたセキュア・ブート・イメージの検証を実行することは、暗号鍵を使用してブート・コードの複数のレベルをチェックすることを含む、請求項４記載のコンピューティング・デバイス。
【請求項６】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含む、請求項１記載のコンピューティング・デバイス。
【請求項７】
前記メモリが、前記コンピューティング・デバイスに関連するメモリ媒体上の分離された隠しパーティションを含む、請求項１記載のコンピューティング・デバイス。
【請求項８】
前記セキュア・ブート・イメージが、ユーザが開始したキーストロークに応答してロードされる、請求項１記載のコンピューティング・デバイス。
【請求項９】
前記リカバリ・ソフトウェアは、実行されたときに、
ネットワーク・アクセシビリティを含むデフォルト状態にオペレーティング・システムを復元することと、
前記オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための所定の定義シーケンスを開始すること
を前記プロセッサにさらに実行させる、請求項１記載のコンピューティング・デバイス。
【請求項１０】
前記リカバリ・ソフトウェアは、実行されたときに、
前記コンピューティング・デバイスのオペレーティング・システムが少なくともブート・コードの前記セキュア・レベルと同程度に古いことを検証すること
を前記プロセッサにさらに実行させる、請求項１記載のコンピューティング・デバイス。
【請求項１１】
機械で実行可能な命令が保存されている非一時的な機械可読媒体であって、前記命令が、機械またはコンピュータによって実行されたときに、
ブート・サイクルのシーケンスを開始し、それぞれのサイクルがメモリ媒体からブート・コードのレベルをロードすることと、
前記ブート・サイクルのシーケンスの間に、コードの第１の検証可能なレベルの検証及び実行をすることと、
前記ブート・サイクルのシーケンスの間に、コードの第２の検証可能なレベルの検証及び実行をすることであって、前記第２の検証可能なレベルは前記第１の検証可能なレベルの後に実行されることと、
ブート・コードの第３のレベルが使用不能であると判断することと、
ブート・コードの前記第３のレベルが使用不能であると判断したときに前記ブート・サイクルのシーケンスを停止することと、
セキュアな読み取り専用の場所からブート・コードの前記第３のレベルのセキュア・コピーをロードすることであって、前記セキュアな読み取り専用の場所が前記メモリ媒体に関連付けられていないことと、
前記セキュア・コピーを使用してブート・コードの前記第３のレベルを修復することと、
前記第２の検証可能なレベルで前記ブート・サイクルを再開することを含む、ブート・イメージをロードする方法を前記機械またはコンピュータに実行させる、機械可読媒体。
【請求項１２】
前記方法が、
前記セキュア・コピーをロードする前に、ブート・コードの前記第３のレベルの冗長コピーが使用不能であると判断すること
をさらに含む、請求項１１記載の非一時的な機械可読媒体。
【請求項１３】
前記方法が、
ロードされた、ブート・コードの前記第３のレベルの前記セキュア・コピーの検証を実行すること
をさらに含む、請求項１１記載の非一時的な機械可読媒体。
【請求項１４】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含む、請求項１１記載の非一時的な機械可読媒体。
【請求項１５】
前記セキュア・コピーまでの前記複数ブート・サイクルのシーケンスが、前記コンピューティング・デバイスのオペレーティング・システムをインストールするためのブート・コードを含み、前記方法が、
ネットワーク・アクセシビリティを含むデフォルト状態に前記オペレーティング・システムを復元することと、
前記オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための所定の定義シーケンスを開始すること
をさらに含む、請求項１１記載の非一時的な機械可読媒体。
【請求項１６】
ブート・イメージを回復する、コンピュータで実行される方法であって、
ブート・プログラムを開始してコンピュータデバイスのオペレーティング・システムをロードすることであって、前記ブート・プログラムがメモリ媒体に保存されていることと、
前記ブート・プログラムのブート・コードの第１のセクションを検証することと、
前記ブート・プログラム内のブート・コードの第２のセクションが使用不能であると判断することと、
前記第２のセクションが使用不能であると判断したときに、前記ブート・プログラムを停止し、セキュアな読み取り専用集積回路からのブート・コードのセキュア・コピーにアクセスすることと、
使用不能なブート・コードの前記第２のセクションをブート・コードの前記セキュア・コピーで置き換えて前記メモリ媒体上の前記ブート・プログラムを修復することと、
ブート・コードの検証された前記第１のセクションの最後で前記ブート・プログラムを再開することと、
修復された前記ブート・プログラムを使用して前記メモリ媒体からデフォルト・オペレーティング・システムをロードすること
を含む、コンピュータで実行される方法。
【請求項１７】
前記デフォルト・オペレーティング・システムが、前記オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための動作の所定の定義シーケンスを開始するための機能性を含む、請求項１６記載のコンピュータで実行される方法。
【請求項１８】
使用不能なブート・コードの前記第２のセクションをブート・コードの前記セキュア・コピーで置き換える前に使用不能なブート・コードの前記第２のセクションに対応するブート・コードの冗長セクションも使用不能であると判断することと、
ブート・コードの前記冗長セクションをブート・コードの前記セキュア・コピーで置き換えること
をさらに含む、請求項１６記載のコンピュータで実行される方法。
【請求項１９】
ブート・イメージを回復するためのコンピュータで実行される方法であって、
複数の連続したコードのレベルを有するブート・イメージを使用してコンピューティング・デバイスのブート・サイクルを開始することと、
前記複数の連続したコードのレベルのうち１つが使用不能であると判断することと、
前記判断に応じて前記コンピューティング・デバイスの前記ブート・サイクルを停止することと、
セキュアな読み取り専用集積回路からの前記ブート・イメージのセキュア・コピーにアクセスすることと、
前記セキュア・コピーを使用して前記ブート・イメージを修復することと、
前記ブート・イメージの修復後に、前記使用不能なコードのレベルの前のコードのレベルの最後で、前記コンピューティング・デバイスの前記ブート・サイクルを再開することと、
修復された前記ブート・イメージを使用してオペレーティング・システムをロードすること
を含む、コンピュータで実行される方法。
【請求項２０】
前記オペレーティング・システムが、前記オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための動作の所定の定義シーケンスを開始するための機能性を含むデフォルト・オペレーティング・システムである、請求項１９記載のコンピュータで実行される方法。
【請求項２１】
前記ブート・イメージを修復する前に前記ブート・イメージの冗長コピーも使用不能であると判断することと、
前記冗長コピーを前記セキュア・ブート・イメージを使用して修復すること
をさらに含む、請求項１９記載のコンピュータで実行される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
主題技術は、一般に、コンピュータ・リカバリ・システム及び方法、すなわち、オペレーティング・システムまたはファームウェアを回復することに関する。
【背景技術】
【０００２】
一部のコンピュータ（たとえば、ノートブック）は、リカバリ・モードをサポートしており、このモードは、コンピュータの書き換え可能なオペレーティング・システムあるいはファームウェアまたはその両方が破損した状態または破壊された状態になったときにそのコンピュータを良好な状態に復元することができる。一般に、ユーザは、コンピュータの立ち上げ（boot-up）時にキーストロークを介してリカバリ・モードを開始する。場合によっては、そのファームウェアあるいはオペレーティング・システムまたはその両方に問題があると判断した場合に、ノートブックが独自にリカバリ・モードを開始することができる。上記の解決策は主流の手法であったが、それにもかかわらず、ユーザは別個のリカバリ・デバイスを必要としている。ユーザは、リカバリ・デバイス（ＳＤカードまたはＵＳＢスティック）を持っていない場合、第２のコンピュータ上でインストーラをダウンロードし実行することにより、リカバリ・デバイスを作成しなければならない。リカバリ・デバイスを挿入した後、システムはリカバリ・デバイスからブートし、それ自体を修復しようと試みる。古いリカバリ・デバイスを持っている場合、ユーザは、まず手動でそれを更新しなければならない。
【発明の概要】
【課題を解決するための手段】
【０００３】
主題技術は、セキュアな場所からブート・イメージ（boot image）をロードするための装置、システム、及び方法を提供する。
一態様の装置は、プロセッサと、１つのブート・イメージならびにそのブート・イメージに対応し、それに対して冗長な１つまたは複数のブート・イメージを含む１つまたは複数のブート・メモリ（boot memory）と、少なくとも１つのセキュア・ブート・イメージを含むセキュアな読み取り専用の場所（secure read-only location）と、コンピューティング・デバイスのブート・サイクルを開始するための開始及びリカバリ・ソフトウェア（initiation and recovery software）を含むメモリとを含む。この開始及びリカバリ・ソフトウェアは、プロセッサによって実行されたときに、ブート・イメージの検証をロードして実行することであって、ブート・イメージは、ブート・コードの複数のレベルを含むことと、ブート・コードのレベルが検証によって使用不能であると判断された場合に、ブート・サイクルを停止し、ブート・コードの冗長レベルの第２の検証をロードして実行することと、ブート・コードの冗長レベルが第２の検証によって使用不能であると判断された場合に、ブート・コードの使用不能なレベルを、ブート・コードのセキュア・レベルで置き換えるためにセキュアな読み取り専用の場所からブート・コードのセキュア・レベルをロードし、最後に把握された検証可能なレベルでブート・サイクルを再開することをプロセッサに実行させる。その他の諸態様は、対応するシステム、装置、及びコンピュータ・プログラム・プロダクトを含む。
【０００４】
前述の装置及びその他の諸態様は、以下の特徴のうちの１つまたは複数を含むことができる。たとえば、ブート・イメージの検証を実行することは、それぞれのレベルがブート・コードのコア・トラステッド部分（core trusted piece）から上に検証される複数のブート・コード・レベルでブート・コードの検証を実行することをプロセッサに実行させることを含むことができる。この方法は、ブート障害の検出時またはユーザによる指示を受けて（たとえば、機械またはコンピュータの立ち上げ時に専用のボタンまたはキーストロークを介して）自動的に開始することができる。
【０００５】
前述の装置及びその他の諸態様は、以下の特徴のうちの１つまたは複数を含むことができる。たとえば、ブート・イメージの検証を実行することは、暗号鍵を使用してブート・コードのレベルをチェックすることを含むことができる。リカバリ・ソフトウェアは、実行されたときに、ロードされたブート・コードのセキュア・レベルの検証を実行することをプロセッサにさらに実行させることができる。ロードされたセキュア・ブート・イメージの検証を実行することは、暗号鍵を使用してブート・コードの複数のレベルをチェックすることを含むことができる。セキュアな読み取り専用の場所は、コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含むことができる。メモリは、コンピューティング・デバイスに関連するメモリ媒体上の分離された隠しパーティションを含むことができる。セキュア・ブート・イメージは、ユーザが開始したキーストロークに応答してロードすることができる。リカバリ・ソフトウェアは、実行されたときに、ネットワーク・アクセシビリティを含むデフォルト状態にオペレーティング・システムを復元することと、オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための所定の定義シーケンスを開始することをプロセッサにさらに実行させることができる。リカバリ・ソフトウェアは、実行されたときに、コンピューティング・デバイスのオペレーティング・システムが少なくともブート・コードのセキュア・レベルと同程度に古いことを検証すること
をプロセッサにさらに実行させることができる。
【０００６】
他の態様の機械可読媒体は命令を含み、その命令は、機械またはコンピューティング・デバイスによって実行されたときに、それぞれのサイクルがメモリ媒体からブート・コードのレベルをロードする、ブート・サイクルのシーケンスを開始することと、ブート・サイクルのシーケンスの間に、コードの第１の検証可能なレベルの検証及び実行をすることと、ブート・サイクルのシーケンスの間に、コードの第２の検証可能なレベルの検証及び実行をすることであって、第２の検証可能なレベルは第１の検証可能なレベルの後に実行されることと、ブート・コードの第３のレベルが使用不能であると判断することと、ブート・コードの第３のレベルが使用不能であると判断したときにブート・サイクルのシーケンスを停止することと、セキュアな読み取り専用の場所からそのブート・コードの第３のレベルのセキュア・コピーをロードすることであって、そのセキュアな読み取り専用の場所がメモリ媒体に関連付けられていないことと、セキュア・コピーを使用してブート・コードの第３のレベルを修復することと、第２の検証可能なレベルでブート・サイクルを再開することを含む、ブート・イメージをロードする方法を機械またはコンピューティング・デバイスに実行させる。その他の諸態様は、コンピュータで実行される方法の実現のための対応するシステム、装置、及びコンピュータ・プログラム・プロダクトを含む。
【０００７】
前述の方法及びその他の諸態様は、以下の特徴のうちの１つまたは複数を含むことができる。この方法は、セキュア・コピーをロードする前に、そのブート・コードの第３のレベルの冗長コピーが使用不能であると判断することをさらに含むことができる。この方法は、ロードされた、ブート・コードの第３のレベルのセキュア・コピーの検証を実行することをさらに含むことができる。セキュアな読み取り専用の場所は、コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含むことができる。セキュア・コピーまでのブート・サイクルのシーケンスは、コンピューティング・デバイスのオペレーティング・システムをインストールするためのブート・コードを含むことができ、この方法は、ネットワーク・アクセシビリティを含むデフォルト状態にオペレーティング・システムを復元することと、オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための所定の定義シーケンスを開始することをさらに含む。
【０００８】
他の一態様のコンピュータで実行される方法は、ブート・プログラムを開始してコンピュータデバイスのオペレーティング・システムをロードすることであって、ブート・プログラムがメモリ媒体に保存されていることと、ブート・プログラムのブート・コードの第１のセクションを検証することと、ブート・プログラム内のブート・コードの第２のセクションが使用不能であると判断することと、第２のセクションが使用不能であると判断したときに、ブート・プログラムを停止し、セキュアな読み取り専用集積回路からのブート・コードのセキュア・コピーにアクセスすることと、使用不能なブート・コードの第２のセクションをブート・コードのセキュア・コピーで置き換えてメモリ媒体上のブート・プログラムを修復することと、ブート・コードの検証された第１のセクションの最後でブート・プログラムを再開することと、修復されたブート・プログラムを使用してメモリ媒体からデフォルト・オペレーティング・システムをロードすることを含む。これに関して、デフォルト・オペレーティング・システムは、オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための動作の所定の定義シーケンスを開始するための機能性を含むことができる。このコンピュータで実行される方法は、使用不能なブート・コードの第２のセクションをブート・コードのセキュア・コピーで置き換える前に使用不能なブート・コードの第２のセクションに対応するブート・コードの冗長セクションも使用不能であると判断することと、ブート・コードの冗長セクションをブート・コードのセキュア・コピーで置き換えることをさらに含むことができる。
【０００９】
さらに他の一態様のコンピュータで実行される方法は、複数の連続したコードのレベルを有するブート・イメージを使用してコンピューティング・デバイスのブート・サイクルを開始することと、複数の連続したコードのレベルのうち１つが使用不能であると判断することと、判断に応じてコンピューティング・デバイスのブート・サイクルを停止することと、セキュアな読み取り専用集積回路からのブート・イメージのセキュア・コピーにアクセスすることと、セキュア・コピーを使用してブート・イメージを修復することと、ブート・イメージの修復後に、使用不能なコードのレベルの前のコードのレベルの最後で、コンピューティング・デバイスのブート・サイクルを再開することと、修復されたブート・イメージを使用してオペレーティング・システムをロードすることを含む。このオペレーティング・システムは、オペレーティング・システムを最新バージョンに更新するためにネットワーク・ソースから更新を取得するための動作の所定の定義シーケンスを開始するための機能性を含むデフォルト・オペレーティング・システムにすることができる。さらにまたは代替例として、このコンピュータで実行される方法は、ブート・イメージを修復する前にブート・イメージの冗長コピーも使用不能であると判断することと、冗長コピーをセキュア・ブート・イメージを使用して修復することを含むことができる。
【００１０】
主題技術の様々な構成が例示として示され記載されている以下の詳細な説明から主題技術のその他の構成が当業者にとって容易に明らかになることは言うまでもない。認識されるように、主題技術はその他の種々の構成が可能であり、そのいくつかの詳細は、いずれも主題技術の範囲を逸脱せずに、様々なその他の点で変更可能である。したがって、図面及び詳細な説明は、限定的なものとしてではなく、本質的に例示的なものと見なすべきである。
【００１１】
添付図面に関連して詳細な説明を行う。
【図面の簡単な説明】
【００１２】
【図１】主題技術の一態様により、ファームウェア及びセキュアなメモリ場所を含む、ブート・イメージをロードするための装置及びシステムの典型的な図である。
【図２】主題技術の一態様により、ネットワークによってオペレーティング・システムを復元するための装置及びシステムの典型的な図である。
【図３】主題技術の一態様により、セキュアな場所からブート・イメージをロードするための典型的なプロセスを示すフローチャートである。
【図４】主題技術の一態様により、プロセッサ及びその他の内部コンポーネントを含み、セキュアな場所からブート・イメージをロードするための典型的なサーバ・システムを示す図である。
【発明を実施するための形態】
【００１３】
現代のコンピュータは、様々なバックアップ及びリカバリ・メカニズムを含んでいる可能性がある。データ破損（たとえば、悪意のあるソフトウェアまたはハードウェア障害の結果として発生する）により、ブート可能なハード・ドライブまたはその他の記憶メカニズム上のファームウェアのイメージまたはオペレーティング・システムを置換または修復することが望ましい場合がある。しかし、リカバリ・イメージを使用してそのイメージを復元することは、難しいプロセスではない場合でも複雑なプロセスである可能性があり、リカバリ・イメージ自体もデータ破損の影響を受けている可能性がある。したがって、破損したイメージを回復することは、必然的に、相当な費用でコンピュータ技術者による介入を必要とする可能性がある。主題技術は、他のすべてのものが故障したときにユーザが頼ることができるセキュアなデータ・バンクを提供し、ユーザまたはコンピュータ技術者による介入の必要性を軽減する。
【００１４】
図１は、主題技術の一態様により、ファームウェア及びセキュアなメモリ場所を含む、ブート・イメージをロードするための装置及びシステムの典型的な図である。一態様によれば、コンピュータ・システム１００は、プロセッサ１０２及び１つまたは複数のファームウェア１０３を含むシステム・ボード１０１（たとえば、マザーボード）と、ハード・ドライブ１０４とを含むことができる。システム１００は、ファームウェア、カーネル・パーティション、あるいはオペレーティング・システムのルート・ファイル・システム、またはこれらの組み合わせに及ぶ１つまたは複数のブート・イメージ１０５を使用して動作を始動するように構成することができ、それぞれのブート・イメージは複数のブート・コードのレベルを含む。たとえば、ブート・イメージ１０５はハード・ドライブ１０４上に保存することができる。その他の諸態様では、ブート・イメージ１０５に対応し、それに対して冗長で、ブート・イメージ１０５が故障した場合にそのコピーを提供する、１つまたは複数の冗長ブート・イメージ１０６を（たとえば、ハード・ドライブ１０４の隠しパーティションまたはその他の書き換え可能なメモリ上に）含めることができる。
【００１５】
システム１００は、システム・ボード１０１に関連するかまたはその上に位置するセキュアなメモリ場所１０７も含むことができる。たとえば、セキュアなメモリ場所１０７は、システム制御ボード１０１上に位置するかまたはそれと統合された集積回路チップとして実現することができる。このセキュアなデータ・バンクは、コンピュータ使用可能デバイス（computer-enabled device）のブート・パスの全部または一部分を復元するためのトラステッド・ブート・コードを含む、１つまたは複数のセキュア・イメージ１０８を保存するセキュアな読み取り専用メモリ・ハードウェアとして実現することができる。一態様では、セキュア・イメージ１０８は、ブート・イメージ１０５のコピーを提供することができる。これは、既知の良好なイメージの読み取り専用コピーであり、カーネルあるいはハード・ディスクまたはその両方から分離されているので、その中のブート・コードはトラステッドであると見なすことができる。いくつかの態様では、ブート障害の際に、ハードウェア・スイッチによってまたはブート・サイクル中の一連のキーストロークによって、セキュア・イメージ１０８を使用するリカバリをトリガすることができる。その他の態様では、以下に記載するように、ブート障害の際にシステム１００によってセキュアなメモリ場所１０７に自動的にアクセスすることができる。
【００１６】
ファームウェア１０３は、プロセッサによって実行されたときに、ブート・イメージの検証をロードして実行することをプロセッサに実行させるように動作可能である、開始及びリカバリ命令１０９を含むことができる。検証によってブート・イメージ１０５あるいはその１つまたは複数の部分が使用不能である（たとえば、破損している）と判断された場合、命令１０９はセキュアな場所１０７にアクセスし、セキュア・イメージ１０８を使用してオペレーティング・システムをロードすることができる。代わって、ブート・イメージ１０５を検証できないかまたはそれが使用不能であると判断した際に、命令１０９は、冗長ブート・イメージ１０６の第２の検証をロードして実行しようと試みることができる。第２の検証によって冗長ブート・イメージ１０６も使用不能であると判断された場合、ソフトウェアはセキュア・ブート・イメージ１０８をロードして実行することができる。
【００１７】
システム１００がブートされるときに、暗号鍵を使用して、ブート・イメージまたはブート・イメージの一部分を検証することができる。これに関して、システム１００は、ブート・コードのコア・トラステッド部分から上にそれぞれのレベルでチェックサムを実行することができ、コード異常あるいはブート障害またはその両方が決定された場合、そのイメージの冗長コピーあるいはその１つまたは複数の部分をロードして、ブート・パスを回復することができる。冗長イメージ１０６（及びセキュア・イメージ１０８）は、イメージ全体のコピーあるいは１つまたは複数のブート・コードのレベルを含むことができ、暗号鍵で検証することもできる。前述のように、冗長コピーが使用不能であると判断された場合、システム１００はセキュアなメモリ場所１０７からそのブート・コードのレベルを回復することができる。
【００１８】
ブート・イメージ１０５、冗長ブート・イメージ１０６、及びセキュア・ブート・イメージ１０８は、単一のブート・レベルに関するブート・コードを含む場合もあれば、複数のレベルにパーティション化されたコードを含む場合もある。ブート・コードはレベルごとに復元することができるので、使用不能なイメージまたはその一部分が決定されると、プロセスは、ブート・サイクルを停止し、冗長コピー１０６あるいはセキュア・コピー１０８またはその両方にアクセスして、コードのその部分を修復し、次に、最後に把握された検証可能なレベルでブート・サイクルを再開するように動作可能である。たとえば、ファームウェア・レベルで（ＥＣから読み取り専用ないし書き換え可能に）障害が発生している場合、プロセスは次のファームウェア・レベルで再始動することができる。しかし、カーネルが故障した場合、ファームウェア・レベルの終わりでブート検証プロセスを再始動することができる。リカバリ・プロセス中に、たとえば、ハード・ドライブのリカバリ・パーティション上に保存された冗長ブート・コードも使用不能であることが判明した場合、システムは（自動的にまたはユーザ開始のキーストロークまたはスイッチを受けて）セキュア・イメージ１０８の関連部分をセキュアな場所１０７からハード・ドライブ１０４などへコピーし、使用不能な冗長ブート・コードを置換することができる。冗長ブート・コードは、暗号鍵を使用して、セキュア・イメージが正しくコピーされたことあるいはいかなるハードウェア・エラーも存在しないことまたはその両方を検証することにより、さらにチェックすることができる。
【００１９】
前述のように、セキュアな場所１０７は、取り外し不能なチップ、たとえば、ｅＭＭＣ、ＥＥＰＲＯＭ、ＮＡＮＤフラッシュなどを含むことができる。代わって、セキュア・リカバリ・イメージは、オペレーティング・システムから隠された、ソリッドステート・ドライブのホストで保護されたエリア内に保存することができる。たとえば、セキュア・リカバリ・イメージ１０８は、そのドライブのｅＭＭＣの書き込み禁止パーティション上に保存することができる。他の態様では、セキュア・リカバリ・イメージ１０８は、セキュア・デジタル（ＳＤ）またはマイクロＳＤカード上に保存することができる。システム１００のコンピュータ実現例は、デバイス内に、たとえば、電池室内に、隠しスロットを含むことができる。リカバリ・イメージは、それをコンピュータから取り外し、別個のコンピュータ上でそれをプログラミングすることにより（またはデバイス自体の通常のＳＤカード・スロットにそれを挿入することにより）更新することができる。一例では、ＳＤまたはマイクロＳＤリカバリ・イメージはデバイスのメイン・メモリ媒体から分離して保持することができ、システム１００はオペレーティング・システムに対するメモリ媒体の書き込み禁止スイッチのアドバタイズメントを無視するように構成されている。
【００２０】
一態様によれば、侵入を防止するためにＳＤデバイスに追加の回路を提供することができる。この回路は、使用可能状態または使用不可状態のいずれかにラッチすることができる。ある状態が選択されると、システムがリセットされるまで、それがアクティブのままになる可能性がある（たとえば、変更することができない）。その回路が使用可能である場合、システム１００がそれからブートできるように、ＳＤカードを電気的に接続することができる。その回路が使用不可である場合、ＳＤカードは電気的に切断することができ、システムはそれからブートするかまたはそれに書き込むことができず、誤動作しているオペレーティング・システムまたはリモート・アタッカによって変更されないようにそれを保護する。一態様では、回路状態は読み取り専用ブート・スタブ・ファームウェア（たとえば、ファームウェア１０３内）を介して選択することができる。システム１００は、リカバリ・モードが選択されたと判断した場合、その回路を使用可能にすることができる。一方で、システムは、ファームウェアが書き換え可能でなければならないと判断した場合、その回路を使用不可にすることができる。一例では、システム１００に関連するハードウェア上でリカバリ・ボタンがアクティブにされた場合、その回路状態を選択することができる。
【００２１】
また、前述の追加の回路は、チップがリカバリ・モードでのみ動作可能になるように、集積回路あるいは完全なチップ保護の実装あるいはその両方に含めることもできる。これに関して、追加の回路は、チップがリカバリ・モードでは書き込み可能であるが、その他のモードでは読み取り専用になるように、チップの書き込み禁止状態を制御することができる。この目的のために、チップは、通常のブート中の偶発的なまたは悪意のある変更から保護することができるが、依然としてリカバリ・モードではリカバリ・イメージの更新を可能にすることができる。
【００２２】
図２は、主題技術の一態様により、ネットワークによってオペレーティング・システムを復元するための装置及びシステムの典型的な図である。いくつかの態様では、前述のリカバリ・メカニズムは、オペレーティング・システムを既知の良好な状態にするのに十分な情報をインストールすることができるだけであり、コア・イメージの残りはその他のソースから取得することができる。たとえば、コンピュータ使用可能デバイス２００は、オペレーティング・システムをデフォルト・バージョンに復元するために（たとえば、図１に関連して述べた通り）、ファームウェア２０１、メモリ媒体２０２（たとえば、ハード・ドライブ）、あるいはセキュア・メモリ２０３、またはこれらの組み合わせの上に１つまたは複数のブート・イメージを含むことができる。一態様では、この１つまたは複数のブート・イメージは、デフォルト・オペレーティング・システムのネットワーク・リカバリ・イメージを含み、ネットワーク・アクセシビリティを有する限られた特徴セットを含むことができる。インストール後、デフォルト・オペレーティング・システムは、自動的にまたはユーザ・アクションを受けて、オペレーティング・システムを最新バージョンに更新するためにネットワーク２０４によって更新を取得するための所定の定義シーケンスを開始することができる。オペレーティング・システムに対する更新は、１つまたは複数のリモート・サーバ２０５によって提供することができる。このように、リカバリ・プロセスは、まず、搭載されているリカバリ・プロセスを使用して、短い時間（たとえば、高速ブート・パスの場合は３０秒）内にコンピュータを使用可能な場所に復元し、次に１つまたは複数のバックグラウンド・プロセスでオペレーティング・システムを更新し、次にユーザがコンピュータをリブートするときに使用するために最新のオペレーティング・システムを提供することができる。
【００２３】
いくつかの態様では、さらにオペレーティング・システム及びファームウェアの更新がリリースされると、セキュア・イメージ１０８を自動的に更新することができる。このように、システムが回復する必要がある場合、オペレーティング・システムあるいはファームウェアまたはその両方は、そのデバイスが工場から出荷されたときに使用可能であった状態の代わりに、更新された状態に回復することができる。これは、元の工場出荷ソフトウェアがそのリリースの時点でセキュリティ上の脆弱性を持っていた可能性があるので、重要なことである可能性がある。他の一態様では、システム１００は、セキュア・イメージより古いオペレーティング・システムのインストールを防止するように構成することができる。これに関して、オペレーティング・システムをインストールしようと試みると、そのオペレーティング・システムが少なくともそのイメージと同じ程度に古いものであることを検証するために、ブート・イメージ１０５、冗長イメージ１０６、またはセキュア・イメージ１０７と照らし合わせてチェックを実行することができる。また、リカバリ・イメージは、それが含むオペレーティング・システム及びファームウェアをインストールできるようにオペレーティング・システム保護を使用不可にできる場合もあれば、ネットワークを介して現行のオペレーティング・システム及びファームウェアをフェッチできるように前述のネットワーク・リカバリ・イメージを含む場合もある。
【００２４】
図３は、主題技術の一態様により、セキュアな場所からブート・イメージをロードするための典型的なプロセスを示すフローチャートである。ステップ３０１で、システム１００は、それぞれのサイクルがメモリ媒体から１つのブート・コードのレベルをロードする、ブート・サイクルのシーケンスを開始する。ステップ３０２で、システム１００は、１つのブート・サイクルに関するブート・コードをロードして実行しようと試み、ステップ３０３で、そのブート・コードが使用可能であるかどうかを判断する。一態様では、そのコードがデバイスをブートするために使用可能であるかどうかを判断するために、そのコードの検証を実行することができる。他の態様では、その判断は、ブート・サイクルが完全に実行されなかったこと、故障していたかまたはエラーを発生したこと、破損していたことなどの検証から得られる可能性がある。
【００２５】
ブート・コードが使用可能である場合、それは実行される。そうではない場合、任意選択のステップ３０４で、検証によりブート・イメージが使用不能であると判断されたときに、システム１００はブート・コードの冗長コピーをロードしようと試みる。前述のように、このコピーはハード・ドライブ１０４またはその他のメモリ媒体上の隠しパーティションからロードすることができる。いくつかの態様では、冗長コピーを含む、ブート・コードの１つまたは複数のサイクルは、ファームウェア、たとえば、読み取り／書き込みファームウェアからロードすることができる。システム１００がブート・コードの冗長コピーをロードしようと試みる場合、ステップ３０５で、システム１００は、冗長コピーも使用不能であるかどうかについて判断を行う。冗長ブート・コードが使用可能である場合、それは実行され、プロセスは終了する。そうではない場合、ステップ３０６で、元のブート・イメージと冗長ブート・イメージの両方が使用不能であると判断されたときに、システム１００はセキュアな場所からブート・コードのセキュア・コピーをロードしようと試みる。いくつかの態様では、セキュア・イメージをロードするために使用されるセキュアな場所はメモリ媒体に関連付けられていない。この目的のために、冗長コピーがハード・ドライブまたはメモリ・スティックなどの１つのメモリ媒体上に保存されている場合、そのセキュアな場所は、たとえば、集積回路内に読み取り専用ファームウェアとして実現することができる。
【００２６】
図４は、主題技術の一態様により、プロセッサ及びその他の内部コンポーネントを含み、セキュアな場所からブート・イメージをロードするための模範的なサーバ・システムを示す図である。いくつかの態様では、コンピュータ化されたデバイス４００（たとえば、コンピュータ・システム１００など）は、プロセッサ４０１、システム・バス４０２、読み取り専用メモリ４０３、システム・メモリ４０４、ネットワーク・インターフェース４０５、入出力インターフェース４０６などのいくつかの内部コンポーネントを含む。一態様では、プロセッサ４０１は、入出力インターフェース４０６を介して記憶媒体４０７（たとえば、ハード・ドライブ、データベース、またはデータ・クラウド）と連絡している可能性もある。いくつかの態様では、デバイス４００のこれらの要素のすべてを単一のデバイスに統合することができる。その他の態様では、これらの要素を別個のコンポーネントとして構成することができる。
【００２７】
プロセッサ４０１は、本明細書に記載された動作及び機能を実行するためのコードまたは命令を実行し、要求フロー及びアドレス・マッピングを管理し、計算を実行してコマンドを生成するように構成することができる。プロセッサ４０１は、サーバ４００内のコンポーネントの動作をモニターし制御するように構成される。このプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラム可能論理デバイス（ＰＬＤ）、コントローラ、状態機械、ゲーテッド・ロジック、個別ハードウェア部品、または上記のものの組み合わせにすることができる。複数命令からなる１つまたは複数のシーケンスは、プロセッサ４０１内のＲＯＭ上にファームウェアとして保存することができる。同様に、複数命令からなる１つまたは複数のシーケンスは、システム・メモリ４０５、ＲＯＭ４０３に保存されそこから読み出されるか、記憶媒体４０７から（たとえば、入出力インターフェース４０６を介して）受信されるソフトウェアにすることができる。ＲＯＭ４０３、システム・メモリ４０５、及び記憶媒体４０７は、そこで命令／コードがプロセッサ４０１によって実行可能である、機械またはコンピュータで読み取り可能な媒体の例を表している。機械またはコンピュータで読み取り可能な媒体は一般に、システム・メモリ４０４またはプロセッサ４０１内のバッファに使用されるダイナミック・メモリなどの揮発性媒体と、電子媒体、光媒体、及び磁気媒体などの不揮発性媒体の両方を含み、プロセッサ４０１に命令を提供するために使用される任意の媒体またはメディアを指すことができる。
【００２８】
いくつかの態様では、プロセッサ４０１は、１つまたは複数の外部装置と（たとえば、入出力インターフェース４０６を介して）連絡するように構成される。プロセッサ４０１は、システム・メモリ４０４あるいは記憶媒体４０７またはその両方に保存されたデータを読み取り、１つまたは複数の外部装置からの要求に応答して１つまたは複数の外部装置に読み取ったデータを転送するようにさらに構成される。読み取ったデータは、１つまたは複数の外部装置上に描画すべき１つまたは複数のウェブ・ページあるいはその他のソフトウェア・プレゼンテーションまたはその両方を含むことができる。１つまたは複数の外部装置は、パーソナル・コンピュータ、サーバ、ワークステーション、ラップトップ・コンピュータ、ＰＤＡ、スマートフォンなどのコンピューティング・システムを含むことができる。
【００２９】
いくつかの態様では、システム・メモリ４０４は、デバイス４００を管理するために使用されるデータ及び情報を一時的に保存するために使用される揮発性メモリを表している。主題技術の一態様によれば、システム・メモリ４０４は、ダブル・データレート（ＤＤＲ）ＲＡＭなどのランダム・アクセス・メモリ（ＲＡＭ）である。システム・メモリ５０４を実現するために、その他のタイプのＲＡＭも使用することができる。メモリ４０４は、単一のＲＡＭモジュールまたは複数のＲＡＭモジュールを使用して実現することができる。システム・メモリ４０４はデバイス４００の一部として描写されているが、当業者であれば、システム・メモリ４０４が主題技術の範囲を逸脱せずにデバイス４００から分離できることを認識するであろう。代わって、システム・メモリ４０４は、磁気ディスク、フラッシュ・メモリ、周辺ＳＳＤなどの不揮発性メモリにすることができる。
【００３０】
入出力インターフェース４０６は、１つまたは複数の外部装置に結合し、１つまたは複数の外部装置からデータを受信し、１つまたは複数の外部装置にデータを送信するように構成することができる。入出力インターフェース４０６は、たとえば、バス４０２を介して、入出力インターフェース４０６をプロセッサ４０１に動作可能に結合するための電気接続及び物理接続の両方を含むことができる。入出力インターフェース４０６は、バス４０２に取り付けられた内部コンポーネント（たとえば、プロセッサ４０１）と１つまたは複数の外部装置（たとえば、ハード・ドライブ）との間でデータ、アドレス、及び制御信号を伝達するように構成される。入出力インターフェース４０６は、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、ファイバ・チャネル・インターフェース、ＰＣＩエクスプレス（ＰＣＩｅ）、ＳＡＴＡ、ＵＳＢなどの標準的なインターフェースを実現するように構成することができる。入出力インターフェース４０６は、１つのインターフェースのみを実現するように構成することができる。代わって、入出力インターフェース４０６は、ユーザによって選択されるかまたは組み立て時にプログラミングされた構成パラメータを使用して個別に選択可能な複数のインターフェースを実現するように構成することもできる。入出力インターフェース４０６は、１つまたは複数の外部装置とバス４０２あるいはそれに動作可能に取り付けられた内部デバイスまたはその両方との間の伝送をバッファリングするための１つまたは複数のバッファを含むことができる。
【００３１】
当業者であれば、本明細書に記載されている様々な例示的なブロック、モジュール、エレメント、コンポーネント、方法、及びアルゴリズムは電子ハードウェア、コンピュータ・ソフトウェア、またはその両方の組み合わせとして実現できることを認識するであろう。ハードウェアとソフトウェアのこの互換性を例証するために、様々な例示的なブロック、モジュール、エレメント、コンポーネント、方法、及びアルゴリズムは、その機能性に関して上記で一般的に記載されている。このような機能性がハードウェアとして実現されるかまたはソフトウェアとして実現されるかは、システム全体に課せられた特定の適用及び設計上の制約によって決まる。当業者であれば、それぞれの特定の適用例のために様々な方法で上記の機能性を実現することができる。様々なコンポーネント及びブロックは、いずれも主題技術の範囲を逸脱せずに、異なる配置にする（たとえば、異なる順序で配置するかまたは異なる方法でパーティション化する）ことができる。
【００３２】
開示されているプロセスにおける諸ステップの特定の順序または階層は模範的な手法の例示であることは言うまでもない。設計上の好みに基づいて、プロセスにおける諸ステップの特定の順序または階層を再編成できることは言うまでもない。諸ステップのうちのいくつかは同時に実行することができる。付随する方法請求項は、サンプル順序で様々なステップの諸要素を提示しており、提示されている特定の順序または階層に限定されるものではない。
【００３３】
上記の説明は、当業者が本明細書に記載された様々な態様を実践できるように提供されたものである。上記の説明は主題技術の様々な例を提供しており、主題技術はこれらの例に限定されない。これらの態様に対する様々な変更は当業者にとって容易に明らかになり、本明細書に定義された包括的原理はその他の態様に適用することができる。したがって、特許請求の範囲は本明細書に示されている諸態様に限定するためのものではなく、請求項の表現と一致した全範囲が授与されるべきであり、その請求項においては単数形の要素に対する言及は、特にそのように指定されない限り、「唯一のもの（one and only one）」を意味するものではなく、むしろ「１つまたは複数（one or more）」を意味するものである。特に他の指定がない限り、「いくつかの（some）」という用語は１つまたは複数を指している。男性形の代名詞（たとえば、彼の（his））は女性形及び中性形（たとえば、彼女の（her）及びそれの（its））を含み、逆もまた同様である。見出し及び小見出しがある場合、便宜上使用されているだけであり、主題技術を限定するものではない。
【００３４】
「ように構成される（configured to）」、「ように動作可能である（operable to）」、及び「ようにプログラミングされる（programmed to）」という述語は、主題に関する有形または無形の特定の変更を意味するものではなく、むしろ、交換可能に使用されるものである。たとえば、ある動作またはコンポーネントをモニターし制御するように構成されたプロセッサは、そのプロセッサがその動作をモニターし制御するようにプログラミングされていることまたはそのプロセッサがその動作をモニターし制御するように動作可能であることも意味することができる。同様に、コードを実行するように構成されたプロセッサは、コードを実行するようにプログラミングされたかまたはコードを実行するように動作可能であるプロセッサとして解釈することもできる。
【００３５】
「態様（aspect）」などの語句は、このような態様が主題技術にとって不可欠であることまたはこのような態様が主題技術のすべての構成に適用されることを意味するものではない。一態様に関連する開示内容はすべての構成に適用される場合もあれば、１つまたは複数の構成に適用される場合もある。一態様は１つまたは複数の例を提供することができる。一態様などの語句は１つまたは複数の態様を指す可能性があり、逆もまた同様である。「実施形態（embodiment）」などの語句は、このような実施形態が主題技術にとって不可欠であることまたはこのような実施形態が主題技術のすべての構成に適用されることを意味するものではない。一実施形態に関連する開示内容はすべての実施形態に適用される場合もあれば、１つまたは複数の実施形態に適用される場合もある。一実施形態は１つまたは複数の例を提供することができる。「一実施形態」などの語句は１つまたは複数の実施形態を指す可能性があり、逆もまた同様である。「構成（configuration）」などの語句は、このような構成が主題技術にとって不可欠であることまたはこのような構成が主題技術のすべての構成に適用されることを意味するものではない。一構成に関連する開示内容はすべての構成に適用される場合もあれば、１つまたは複数の構成に適用される場合もある。一構成は１つまたは複数の例を提供することができる。「一構成」などの語句は１つまたは複数の構成を指す可能性があり、逆もまた同様である。
【００３６】
「模範的（exemplary）」という単語は、「一例または例示として機能すること」を意味するために本明細書で使用されている。「模範的」として本明細書に記載されている任意の態様または設計は必ずしも他の態様または設計より好ましいかまたは有利であると解釈すべきではない。
【００３７】
本発明全体を通して記載されている様々な態様の諸要素と構造上及び機能上同等であって、当業者にとって既知であるかまたは後で既知のものになるものはいずれも、参照により明白に本明細書に組み込まれ、特許請求の範囲によって包含されるものである。その上、本明細書に開示されているものはいずれも、このような開示が特許請求の範囲に明示的に列挙されているかどうかにかかわらず、世間一般に提供されたものではない。いかなる請求要素も、その要素が「ための手段」という表現を使用して明白に列挙されていないかまたは方法の請求項の場合にその要素が「ためのステップ」という表現を使用して列挙されていない限り、米国特許法第１１２節第６項の規定に基づいて解釈されるべきではない。さらに、「含む（comprise）」という用語は請求項内で移行語として使用されるときに解釈されるので、「含む（include）」、「有する（have）」などの用語は、説明または特許請求の範囲において使用される範囲で、「含む（comprise）」と同様に包括的なものである。
【図１】
0005607863.tif 000002
【図２】
0005607863.tif 000003
【図３】
0005607863.tif 000004
【図４】
0005607863.tif 000005