(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5909264
(24)【登録日】2016年4月1日
(45)【発行日】2016年4月26日
(54)【発明の名称】セキュア・リカバリ装置及び方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20160412BHJP
G06F 9/445 20060101ALI20160412BHJP
【FI】
G06F21/57 350
G06F9/06 610K
【請求項の数】21
【外国語出願】
【全頁数】15
(21)【出願番号】特願2014-173491(P2014-173491)
(22)【出願日】2014年8月28日
(62)【分割の表示】特願2014-526040(P2014-526040)の分割
【原出願日】2012年7月26日
(65)【公開番号】特開2015-8005(P2015-8005A)
(43)【公開日】2015年1月15日
【審査請求日】2014年9月12日
(31)【優先権主張番号】13/211,271
(32)【優先日】2011年8月16日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル インコーポレイテッド
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】タボネ,ライアン
(72)【発明者】
【氏名】スパングラー,ランドール,アール.
【審査官】
木村 励
(56)【参考文献】
【文献】
特表2005−523537(JP,A)
【文献】
特開2007−188383(JP,A)
【文献】
国際公開第2008/075646(WO,A1)
【文献】
特開2010−26650(JP,A)
【文献】
米国特許出願公開第2003/0028800(US,A1)
【文献】
米国特許第6625754(US,B1)
【文献】
米国特許出願公開第2011/0087920(US,A1)
【文献】
米国特許出願公開第2005/0081090(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00 − 21/88
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
プロセッサと、
少なくとも1つのセキュア・ブート・イメージを保存するためのセキュアな読み取り専用の場所と、
コンピューティング・デバイスのブート・サイクルを開始するための開始及びリカバリ命令を含んだメモリと
を含み、
前記開始及びリカバリ命令が、前記プロセッサによって実行されたときに、
ブート・イメージのロードを開始することであって、前記ブート・イメージが複数のブート・コードのレベルを含むことと、
前記ブート・サイクル中に、前記複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することと、
それぞれのブート・コードのレベルが使用不能であると判断したことに応じて、前記ブート・サイクルを停止し、前記セキュアな読み取り専用の場所から対応するセキュアなブート・コードのレベルをロードし、前記それぞれのブート・コードのレベルを前記セキュアなブート・コードのレベルで置き換え、最後に把握された、使用可能と判断されたブート・コードのレベルで前記ブート・サイクルを再開することと
を実現させる、コンピューティング・デバイス。
【請求項2】
前記命令が、前記プロセッサによって実行されたときに、
前記ブート・サイクルを停止する前に、それぞれの冗長なブート・コードのレベルをロードし、前記冗長なブート・コードのレベルが使用不能であると判断することであって、前記対応するセキュアなブート・コードのレベルは、前記冗長なブート・コードのレベルが使用不能であると判断することに応じてロードされること
をさらに実現させる、請求項1記載のコンピューティング・デバイス。
【請求項3】
前記複数のブート・コードのレベルのそれぞれがブート・コードのコア・トラステッド部分から上に検証される、請求項1記載のコンピューティング・デバイス。
【請求項4】
前記複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することは、暗号鍵を使用して前記複数のブート・コードのレベルのそれぞれをチェックすることを含む、請求項1記載のコンピューティング・デバイス。
【請求項5】
前記命令が、前記プロセッサによって実行されたときに、前記セキュアなブート・コードのレベルを検証することをさらに実現させる、請求項1記載のコンピューティング・デバイス。
【請求項6】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含む、請求項1記載のコンピューティング・デバイス。
【請求項7】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連する記憶デバイスの隠しパーティションを含み、前記隠しパーティションが前記コンピューティング・デバイスのオペレーティング・システムから隠されている、請求項1記載のコンピューティング・デバイス。
【請求項8】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するソリッドステート・ドライブのホスト保護エリアを含む、請求項1記載のコンピューティング・デバイス。
【請求項9】
前記セキュアなブート・コードのレベルが、ユーザが開始したキーストロークに応答してロードされる、請求項1記載のコンピューティング・デバイス。
【請求項10】
前記命令が、前記プロセッサによって実行されたときに、
ネットワーク・アクセシビリティを含むデフォルト状態にオペレーティング・システムを復元することと、
前記コンピューティング・デバイスの前記オペレーティング・システムをリモート・ネットワーク・ソースから最新バージョンに更新する
ことをさらに実現させる、請求項1記載のコンピューティング・デバイス。
【請求項11】
コンピューティング・デバイス上のオペレーティング・システムをロードするためにブート・サイクルを開始することと、
前記ブート・サイクル中に、第1のブート・コードのレベルを検証することと、
前記ブート・サイクル中に、前記コンピューティング・デバイスによって、第2のブート・コードのレベルが使用不能であると判断することと、
前記第2のブート・コードのレベルが使用不能であると判断されたことに応じて、前記ブート・サイクルを停止し、セキュアな読み取り専用の場所からセキュアなブート・コードのレベルを取得することと、
前記ブート・サイクルを修復するために、前記第2のブート・コードのレベルを前記セキュアなブート・コードのレベルで置き換えることと、
検証された前記第1のブート・コードのレベルの最後で前記ブート・サイクルを再開すること
を含む、コンピュータで実行される方法。
【請求項12】
使用不能な前記第2のブート・コードのレベルを前記セキュアなブート・コードのレベルで置き換える前に、使用不能な前記第2のブート・コードのレベルに対応する冗長なブート・コードのレベルも使用不能であると判断することをさらに含む、請求項11記載のコンピュータで実行される方法。
【請求項13】
修復された前記ブート・サイクルを用いて前記コンピューティング・デバイスに関連するメモリ媒体からデフォルト・オペレーティング・システムをロードすることをさらに含む、請求項11記載のコンピュータで実行される方法。
【請求項14】
それぞれのブート・コードのレベルをブート・コードのコア・トラステッド部分から上に検証することをさらに含む、請求項11記載のコンピュータで実行される方法。
【請求項15】
暗号鍵を使用してそれぞれのブート・コードのレベルの検証を実行することをさらに含む、請求項11記載のコンピュータで実行される方法。
【請求項16】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含む、請求項11記載のコンピュータで実行される方法。
【請求項17】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連する記憶デバイスの隠しパーティションを含み、前記隠しパーティションが前記コンピューティング・デバイスのオペレーティング・システムから隠されている、請求項11記載のコンピュータで実行される方法。
【請求項18】
前記セキュアな読み取り専用の場所が、前記コンピューティング・デバイスに関連するソリッドステート・ドライブのホスト保護エリアを含む、請求項11記載のコンピュータで実行される方法。
【請求項19】
前記セキュアなブート・コードのレベルが、ユーザが開始したキーストロークに応答して置き換えられる、請求項11記載のコンピュータで実行される方法。
【請求項20】
機械で実行可能な命令が保存されている非一時的な機械可読媒体であって、前記命令が、機械またはコンピュータによって実行されたときに、
コンピューティング・デバイスのメモリ媒体からブート・サイクルの実行を開始することであって、前記ブート・サイクルが複数のブート・コードのレベルを含むことと、
前記ブート・サイクル中に、前記複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することと、
それぞれのブート・コードのレベルが使用不能であると判断したことに応じて、前記ブート・サイクルを停止し、前記コンピューティング・デバイスのセキュアな読み取り専用の場所から対応するセキュアなブート・コードのレベルをロードし、前記複数のブート・コードのレベルのそれぞれを前記セキュアなブート・コードのレベルで置き換え、最後に把握された、使用可能と判断された前記ブート・コードのレベルで前記ブート・サイクルを再開することと
を含む方法を前記機械またはコンピュータに実現させる、機械可読媒体。
【請求項21】
請求項11〜19のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
主題技術は、一般に、コンピュータ・リカバリ・システム及び方法、すなわち、オペレーティング・システムまたはファームウェアを回復することに関する。
【背景技術】
【0002】
一部のコンピュータ(たとえば、ノートブック)は、リカバリ・モードをサポートしており、このモードは、コンピュータの書き換え可能なオペレーティング・システムあるいはファームウェアまたはその両方が破損した状態または破壊された状態になったときにそのコンピュータを良好な状態に復元することができる。一般に、ユーザは、コンピュータの立ち上げ(boot-up)時にキーストロークを介してリカバリ・モードを開始する。場合によっては、そのファームウェアあるいはオペレーティング・システムまたはその両方に問題があると判断した場合に、ノートブックが独自にリカバリ・モードを開始することができる。上記の解決策は主流の手法であったが、それにもかかわらず、ユーザは別個のリカバリ・デバイスを必要としている。ユーザは、リカバリ・デバイス(SDカードまたはUSBスティック)を持っていない場合、第2のコンピュータ上でインストーラをダウンロードし実行することにより、リカバリ・デバイスを作成しなければならない。リカバリ・デバイスを挿入した後、システムはリカバリ・デバイスからブートし、それ自体を修復しようと試みる。古いリカバリ・デバイスを持っている場合、ユーザは、まず手動でそれを更新しなければならない。
【発明の概要】
【課題を解決するための手段】
【0003】
主題技術は、セキュアな場所からブート・イメージ(boot image)をロードするための装置、システム、及び方法を提供する。
一態様の装置は、
プロセッサと、少なくとも1つのセキュア・ブート・イメージを保存するためのセキュアな読み取り専用の場所と、コンピューティング・デバイスのブート・サイクルを開始するための開始及びリカバリ命令を含んだメモリとを含むコンピューティング・デバイスである。開始及びリカバリ命令が、プロセッサによって実行されたときに、ブート・イメージのロードを開始することであって、ブート・イメージが複数のブート・コードのレベルを含むことと、ブート・サイクル中に、複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することと、それぞれのブート・コードのレベルが使用不能であると判断したことに応じて、ブート・サイクルを停止し、セキュアな読み取り専用の場所から対応するセキュアなブート・コードのレベルをロードし、それぞれのブート・コードのレベルをセキュアなブート・コードのレベルで置き換え、最後に把握された、使用可能と判断されたブート・コードのレベルでブート・サイクルを再開することをコンピューティング・デバイスに実現させる。その他の諸態様は、対応するシステム、装置、及びコンピュータ・プログラム・プロダクトを含む。
【0004】
前述の装置及びその他の諸態様は、以下の特徴のうちの1つまたは複数を含むことができる。たとえば、
命令が、プロセッサによって実行されたときに、ブート・サイクルを停止する前に、それぞれの冗長なブート・コードのレベルをロードし、冗長なブート・コードのレベルが使用不能であると判断することであって、対応するセキュアなブート・コードのレベルは、冗長なブート・コードのレベルが使用不能であると判断することに応じてロードされることをさらに実現することができる。
【0005】
前述の装置及びその他の諸態様は、以下の特徴のうちの1つまたは複数を含むことができる。たとえば、
複数のブート・コードのレベルのそれぞれがブート・コードのコア・トラステッド部分(core trusted piece)から上に検証されることができる。複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することは、暗号鍵を使用して複数のブート・コードのレベルのそれぞれをチェックすることを含むことができる。命令が、プロセッサによって実行されたときに、セキュアなブート・コードのレベルを検証することをさらに実現することができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含むことができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連する記憶デバイスの隠しパーティションを含み、隠しパーティションがコンピューティング・デバイスのオペレーティング・システムから隠されていることができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連するソリッドステート・ドライブのホスト保護エリアを含むことができる。セキュアなブート・コードのレベルが、ユーザが開始したキーストロークに応答してロードされることができる。命令が、プロセッサによって実行されたときに、ネットワーク・アクセシビリティを含むデフォルト状態にオペレーティング・システムを復元することと、コンピューティング・デバイスのオペレーティング・システムをリモート・ネットワーク・ソースから最新バージョンに更新することをさらに実現することができる。
【0006】
他の態様のコンピュータで実行される方法は、コンピューティング・デバイス上のオペレーティング・システムをロードするためにブート・サイクルを開始することと、ブート・サイクル中に、第1のブート・コードのレベルを検証することと、ブート・サイクル中に、コンピューティング・デバイスによって、第2のブート・コードのレベルが使用不能であると判断することと、第2のブート・コードのレベルが使用不能であると判断されたことに応じて、ブート・サイクルを停止し、セキュアな読み取り専用の場所からセキュアなブート・コードのレベルを取得することと、ブート・サイクルを修復するために、第2のブート・コードのレベルをセキュアなブート・コードのレベルで置き換えることと、検証された第1のブート・コードのレベルの最後でブート・サイクルを再開することとを含む。その他の諸態様は、コンピュータで実行される方法の実現のための対応するシステム、装置、及びコンピュータ・プログラム・プロダクトを含む。
【0007】
前述の方法及びその他の諸態様は、以下の特徴のうちの1つまたは複数を含むことができる。
この方法は、使用不能な第2のブート・コードのレベルをセキュアなブート・コードのレベルで置き換える前に、使用不能な第2のブート・コードのレベルに対応する冗長なブート・コードのレベルも使用不能であると判断することをさらに含むことができる。この方法は、修復されたブート・サイクルを用いてコンピューティング・デバイスに関連するメモリ媒体からデフォルト・オペレーティング・システムをロードすることをさらに含むことができる。
【0008】
この方法は、それぞれのブート・コードのレベルをブート・コードのコア・トラステッド部分から上に検証することをさらに含むことができる。この方法は、暗号鍵を使用してそれぞれのブート・コードのレベルの検証を実行することをさらに含むことができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連するシステム制御ボード上に位置する集積回路チップを含むことができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連する記憶デバイスの隠しパーティションを含み、隠しパーティションがコンピューティング・デバイスのオペレーティング・システムから隠されていることができる。セキュアな読み取り専用の場所が、コンピューティング・デバイスに関連するソリッドステート・ドライブのホスト保護エリアを含むことができる。セキュアなブート・コードのレベルが、ユーザが開始したキーストロークに応答して置き換えられることができる。
【0009】
他の態様の機械可読媒体は、機械で実行可能な命令が保存されている非一時的な機械可読媒体であって、命令が、機械またはコンピュータによって実行されたときに、コンピューティング・デバイスのメモリ媒体からブート・サイクルの実行を開始することであって、ブート・サイクルが複数のブート・コードのレベルを含むことと、ブート・サイクル中に、複数のブート・コードのレベルのそれぞれが使用可能であるか使用不能であるかを判断することと、それぞれのブート・コードのレベルが使用不能であると判断したことに応じて、ブート・サイクルを停止し、コンピューティング・デバイスのセキュアな読み取り専用の場所から対応するセキュアなブート・コードのレベルをロードし、複数のブート・コードのレベルのそれぞれをセキュアなブート・コードのレベルで置き換え、最後に把握された、使用可能と判断されたブート・コードのレベルでブート・サイクルを再開することとを含む方法を機械またはコンピュータに実現させる。その他の諸態様は、コンピュータで実行される方法の実現のための対応するシステム、装置、及びコンピュータ・プログラム・プロダクトを含む。
【0010】
主題技術の様々な構成が例示として示され記載されている以下の詳細な説明から主題技術のその他の構成が当業者にとって容易に明らかになることは言うまでもない。認識されるように、主題技術はその他の種々の構成が可能であり、そのいくつかの詳細は、いずれも主題技術の範囲を逸脱せずに、様々なその他の点で変更可能である。したがって、図面及び詳細な説明は、限定的なものとしてではなく、本質的に例示的なものと見なすべきである。
【0011】
添付図面に関連して詳細な説明を行う。
【図面の簡単な説明】
【0012】
【
図1】主題技術の一態様により、ファームウェア及びセキュアなメモリ場所を含む、ブート・イメージをロードするための装置及びシステムの典型的な図である。
【
図2】主題技術の一態様により、ネットワークによってオペレーティング・システムを復元するための装置及びシステムの典型的な図である。
【
図3】主題技術の一態様により、セキュアな場所からブート・イメージをロードするための典型的なプロセスを示すフローチャートである。
【
図4】主題技術の一態様により、プロセッサ及びその他の内部コンポーネントを含み、セキュアな場所からブート・イメージをロードするための典型的なサーバ・システムを示す図である。
【発明を実施するための形態】
【0013】
現代のコンピュータは、様々なバックアップ及びリカバリ・メカニズムを含んでいる可能性がある。データ破損(たとえば、悪意のあるソフトウェアまたはハードウェア障害の結果として発生する)により、ブート可能なハード・ドライブまたはその他の記憶メカニズム上のファームウェアのイメージまたはオペレーティング・システムを置換または修復することが望ましい場合がある。しかし、リカバリ・イメージを使用してそのイメージを復元することは、難しいプロセスではない場合でも複雑なプロセスである可能性があり、リカバリ・イメージ自体もデータ破損の影響を受けている可能性がある。したがって、破損したイメージを回復することは、必然的に、相当な費用でコンピュータ技術者による介入を必要とする可能性がある。主題技術は、他のすべてのものが故障したときにユーザが頼ることができるセキュアなデータ・バンクを提供し、ユーザまたはコンピュータ技術者による介入の必要性を軽減する。
【0014】
図1は、主題技術の一態様により、ファームウェア及びセキュアなメモリ場所を含む、ブート・イメージをロードするための装置及びシステムの典型的な図である。一態様によれば、コンピュータ・システム100は、プロセッサ102及び1つまたは複数のファームウェア103を含むシステム・ボード101(たとえば、マザーボード)と、ハード・ドライブ104とを含むことができる。システム100は、ファームウェア、カーネル・パーティション、あるいはオペレーティング・システムのルート・ファイル・システム、またはこれらの組み合わせに及ぶ1つまたは複数のブート・イメージ105を使用して動作を始動するように構成することができ、それぞれのブート・イメージは複数のブート・コードのレベルを含む。たとえば、ブート・イメージ105はハード・ドライブ104上に保存することができる。その他の諸態様では、ブート・イメージ105に対応し、それに対して冗長で、ブート・イメージ105が故障した場合にそのコピーを提供する、1つまたは複数の冗長ブート・イメージ106を(たとえば、ハード・ドライブ104の隠しパーティションまたはその他の書き換え可能なメモリ上に)含めることができる。
【0015】
システム100は、システム・ボード101に関連するかまたはその上に位置するセキュアなメモリ場所107も含むことができる。たとえば、セキュアなメモリ場所107は、システム制御ボード101上に位置するかまたはそれと統合された集積回路チップとして実現することができる。このセキュアなデータ・バンクは、コンピュータ使用可能デバイス(computer-enabled device)のブート・パスの全部または一部分を復元するためのトラステッド・ブート・コードを含む、1つまたは複数のセキュア・イメージ108を保存するセキュアな読み取り専用メモリ・ハードウェアとして実現することができる。一態様では、セキュア・イメージ108は、ブート・イメージ105のコピーを提供することができる。これは、既知の良好なイメージの読み取り専用コピーであり、カーネルあるいはハード・ディスクまたはその両方から分離されているので、その中のブート・コードはトラステッドであると見なすことができる。いくつかの態様では、ブート障害の際に、ハードウェア・スイッチによってまたはブート・サイクル中の一連のキーストロークによって、セキュア・イメージ108を使用するリカバリをトリガすることができる。その他の態様では、以下に記載するように、ブート障害の際にシステム100によってセキュアなメモリ場所107に自動的にアクセスすることができる。
【0016】
ファームウェア103は、プロセッサによって実行されたときに、ブート・イメージの検証をロードして実行することをプロセッサに実行させるように動作可能である、開始及びリカバリ命令109を含むことができる。検証によってブート・イメージ105あるいはその1つまたは複数の部分が使用不能である(たとえば、破損している)と判断された場合、命令109はセキュアな場所107にアクセスし、セキュア・イメージ108を使用してオペレーティング・システムをロードすることができる。代わって、ブート・イメージ105を検証できないかまたはそれが使用不能であると判断した際に、命令109は、冗長ブート・イメージ106の第2の検証をロードして実行しようと試みることができる。第2の検証によって冗長ブート・イメージ106も使用不能であると判断された場合、ソフトウェアはセキュア・ブート・イメージ108をロードして実行することができる。
【0017】
システム100がブートされるときに、暗号鍵を使用して、ブート・イメージまたはブート・イメージの一部分を検証することができる。これに関して、システム100は、ブート・コードのコア・トラステッド部分から上にそれぞれのレベルでチェックサムを実行することができ、コード異常あるいはブート障害またはその両方が決定された場合、そのイメージの冗長コピーあるいはその1つまたは複数の部分をロードして、ブート・パスを回復することができる。冗長イメージ106(及びセキュア・イメージ108)は、イメージ全体のコピーあるいは1つまたは複数のブート・コードのレベルを含むことができ、暗号鍵で検証することもできる。前述のように、冗長コピーが使用不能であると判断された場合、システム100はセキュアなメモリ場所107からそのブート・コードのレベルを回復することができる。
【0018】
ブート・イメージ105、冗長ブート・イメージ106、及びセキュア・ブート・イメージ108は、単一のブート・レベルに関するブート・コードを含む場合もあれば、複数のレベルにパーティション化されたコードを含む場合もある。ブート・コードはレベルごとに復元することができるので、使用不能なイメージまたはその一部分が決定されると、プロセスは、ブート・サイクルを停止し、冗長コピー106あるいはセキュア・コピー108またはその両方にアクセスして、コードのその部分を修復し、次に、最後に把握された検証可能なレベルでブート・サイクルを再開するように動作可能である。たとえば、ファームウェア・レベルで(ECから読み取り専用ないし書き換え可能に)障害が発生している場合、プロセスは次のファームウェア・レベルで再始動することができる。しかし、カーネルが故障した場合、ファームウェア・レベルの終わりでブート検証プロセスを再始動することができる。リカバリ・プロセス中に、たとえば、ハード・ドライブのリカバリ・パーティション上に保存された冗長ブート・コードも使用不能であることが判明した場合、システムは(自動的にまたはユーザ開始のキーストロークまたはスイッチを受けて)セキュア・イメージ108の関連部分をセキュアな場所107からハード・ドライブ104などへコピーし、使用不能な冗長ブート・コードを置換することができる。冗長ブート・コードは、暗号鍵を使用して、セキュア・イメージが正しくコピーされたことあるいはいかなるハードウェア・エラーも存在しないことまたはその両方を検証することにより、さらにチェックすることができる。
【0019】
前述のように、セキュアな場所107は、取り外し不能なチップ、たとえば、eMMC、EEPROM、NANDフラッシュなどを含むことができる。代わって、セキュア・リカバリ・イメージは、オペレーティング・システムから隠された、ソリッドステート・ドライブのホストで保護されたエリア内に保存することができる。たとえば、セキュア・リカバリ・イメージ108は、そのドライブのeMMCの書き込み禁止パーティション上に保存することができる。他の態様では、セキュア・リカバリ・イメージ108は、セキュア・デジタル(SD)またはマイクロSDカード上に保存することができる。システム100のコンピュータ実現例は、デバイス内に、たとえば、電池室内に、隠しスロットを含むことができる。リカバリ・イメージは、それをコンピュータから取り外し、別個のコンピュータ上でそれをプログラミングすることにより(またはデバイス自体の通常のSDカード・スロットにそれを挿入することにより)更新することができる。一例では、SDまたはマイクロSDリカバリ・イメージはデバイスのメイン・メモリ媒体から分離して保持することができ、システム100はオペレーティング・システムに対するメモリ媒体の書き込み禁止スイッチのアドバタイズメントを無視するように構成されている。
【0020】
一態様によれば、侵入を防止するためにSDデバイスに追加の回路を提供することができる。この回路は、使用可能状態または使用不可状態のいずれかにラッチすることができる。ある状態が選択されると、システムがリセットされるまで、それがアクティブのままになる可能性がある(たとえば、変更することができない)。その回路が使用可能である場合、システム100がそれからブートできるように、SDカードを電気的に接続することができる。その回路が使用不可である場合、SDカードは電気的に切断することができ、システムはそれからブートするかまたはそれに書き込むことができず、誤動作しているオペレーティング・システムまたはリモート・アタッカによって変更されないようにそれを保護する。一態様では、回路状態は読み取り専用ブート・スタブ・ファームウェア(たとえば、ファームウェア103内)を介して選択することができる。システム100は、リカバリ・モードが選択されたと判断した場合、その回路を使用可能にすることができる。一方で、システムは、ファームウェアが書き換え可能でなければならないと判断した場合、その回路を使用不可にすることができる。一例では、システム100に関連するハードウェア上でリカバリ・ボタンがアクティブにされた場合、その回路状態を選択することができる。
【0021】
また、前述の追加の回路は、チップがリカバリ・モードでのみ動作可能になるように、集積回路あるいは完全なチップ保護の実装あるいはその両方に含めることもできる。これに関して、追加の回路は、チップがリカバリ・モードでは書き込み可能であるが、その他のモードでは読み取り専用になるように、チップの書き込み禁止状態を制御することができる。この目的のために、チップは、通常のブート中の偶発的なまたは悪意のある変更から保護することができるが、依然としてリカバリ・モードではリカバリ・イメージの更新を可能にすることができる。
【0022】
図2は、主題技術の一態様により、ネットワークによってオペレーティング・システムを復元するための装置及びシステムの典型的な図である。いくつかの態様では、前述のリカバリ・メカニズムは、オペレーティング・システムを既知の良好な状態にするのに十分な情報をインストールすることができるだけであり、コア・イメージの残りはその他のソースから取得することができる。たとえば、コンピュータ使用可能デバイス200は、オペレーティング・システムをデフォルト・バージョンに復元するために(たとえば、
図1に関連して述べた通り)、ファームウェア201、メモリ媒体202(たとえば、ハード・ドライブ)、あるいはセキュア・メモリ203、またはこれらの組み合わせの上に1つまたは複数のブート・イメージを含むことができる。一態様では、この1つまたは複数のブート・イメージは、デフォルト・オペレーティング・システムのネットワーク・リカバリ・イメージを含み、ネットワーク・アクセシビリティを有する限られた特徴セットを含むことができる。インストール後、デフォルト・オペレーティング・システムは、自動的にまたはユーザ・アクションを受けて、オペレーティング・システムを最新バージョンに更新するためにネットワーク204によって更新を取得するための所定の定義シーケンスを開始することができる。オペレーティング・システムに対する更新は、1つまたは複数のリモート・サーバ205によって提供することができる。このように、リカバリ・プロセスは、まず、搭載されているリカバリ・プロセスを使用して、短い時間(たとえば、高速ブート・パスの場合は30秒)内にコンピュータを使用可能な場所に復元し、次に1つまたは複数のバックグラウンド・プロセスでオペレーティング・システムを更新し、次にユーザがコンピュータをリブートするときに使用するために最新のオペレーティング・システムを提供することができる。
【0023】
いくつかの態様では、さらにオペレーティング・システム及びファームウェアの更新がリリースされると、セキュア・イメージ108を自動的に更新することができる。このように、システムが回復する必要がある場合、オペレーティング・システムあるいはファームウェアまたはその両方は、そのデバイスが工場から出荷されたときに使用可能であった状態の代わりに、更新された状態に回復することができる。これは、元の工場出荷ソフトウェアがそのリリースの時点でセキュリティ上の脆弱性を持っていた可能性があるので、重要なことである可能性がある。他の一態様では、システム100は、セキュア・イメージより古いオペレーティング・システムのインストールを防止するように構成することができる。これに関して、オペレーティング・システムをインストールしようと試みると、そのオペレーティング・システムが少なくともそのイメージと同じ程度に古いものであることを検証するために、ブート・イメージ105、冗長イメージ106、またはセキュア・イメージ107と照らし合わせてチェックを実行することができる。また、リカバリ・イメージは、それが含むオペレーティング・システム及びファームウェアをインストールできるようにオペレーティング・システム保護を使用不可にできる場合もあれば、ネットワークを介して現行のオペレーティング・システム及びファームウェアをフェッチできるように前述のネットワーク・リカバリ・イメージを含む場合もある。
【0024】
図3は、主題技術の一態様により、セキュアな場所からブート・イメージをロードするための典型的なプロセスを示すフローチャートである。ステップ301で、システム100は、それぞれのサイクルがメモリ媒体から1つのブート・コードのレベルをロードする、ブート・サイクルのシーケンスを開始する。ステップ302で、システム100は、1つのブート・サイクルに関するブート・コードをロードして実行しようと試み、ステップ303で、そのブート・コードが使用可能であるかどうかを判断する。一態様では、そのコードがデバイスをブートするために使用可能であるかどうかを判断するために、そのコードの検証を実行することができる。他の態様では、その判断は、ブート・サイクルが完全に実行されなかったこと、故障していたかまたはエラーを発生したこと、破損していたことなどの検証から得られる可能性がある。
【0025】
ブート・コードが使用可能である場合、それは実行される。そうではない場合、任意選択のステップ304で、検証によりブート・イメージが使用不能であると判断されたときに、システム100はブート・コードの冗長コピーをロードしようと試みる。前述のように、このコピーはハード・ドライブ104またはその他のメモリ媒体上の隠しパーティションからロードすることができる。いくつかの態様では、冗長コピーを含む、ブート・コードの1つまたは複数のサイクルは、ファームウェア、たとえば、読み取り/書き込みファームウェアからロードすることができる。システム100がブート・コードの冗長コピーをロードしようと試みる場合、ステップ305で、システム100は、冗長コピーも使用不能であるかどうかについて判断を行う。冗長ブート・コードが使用可能である場合、それは実行され、プロセスは終了する。そうではない場合、ステップ306で、元のブート・イメージと冗長ブート・イメージの両方が使用不能であると判断されたときに、システム100はセキュアな場所からブート・コードのセキュア・コピーをロードしようと試みる。いくつかの態様では、セキュア・イメージをロードするために使用されるセキュアな場所はメモリ媒体に関連付けられていない。この目的のために、冗長コピーがハード・ドライブまたはメモリ・スティックなどの1つのメモリ媒体上に保存されている場合、そのセキュアな場所は、たとえば、集積回路内に読み取り専用ファームウェアとして実現することができる。
【0026】
図4は、主題技術の一態様により、プロセッサ及びその他の内部コンポーネントを含み、セキュアな場所からブート・イメージをロードするための模範的なサーバ・システムを示す図である。いくつかの態様では、コンピュータ化されたデバイス400(たとえば、コンピュータ・システム100など)は、プロセッサ401、システム・バス402、読み取り専用メモリ403、システム・メモリ404、ネットワーク・インターフェース405、入出力インターフェース406などのいくつかの内部コンポーネントを含む。一態様では、プロセッサ401は、入出力インターフェース406を介して記憶媒体407(たとえば、ハード・ドライブ、データベース、またはデータ・クラウド)と連絡している可能性もある。いくつかの態様では、デバイス400のこれらの要素のすべてを単一のデバイスに統合することができる。その他の態様では、これらの要素を別個のコンポーネントとして構成することができる。
【0027】
プロセッサ401は、本明細書に記載された動作及び機能を実行するためのコードまたは命令を実行し、要求フロー及びアドレス・マッピングを管理し、計算を実行してコマンドを生成するように構成することができる。プロセッサ401は、サーバ400内のコンポーネントの動作をモニターし制御するように構成される。このプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラム可能論理デバイス(PLD)、コントローラ、状態機械、ゲーテッド・ロジック、個別ハードウェア部品、または上記のものの組み合わせにすることができる。複数命令からなる1つまたは複数のシーケンスは、プロセッサ401内のROM上にファームウェアとして保存することができる。同様に、複数命令からなる1つまたは複数のシーケンスは、システム・メモリ405、ROM403に保存されそこから読み出されるか、記憶媒体407から(たとえば、入出力インターフェース406を介して)受信されるソフトウェアにすることができる。ROM403、システム・メモリ405、及び記憶媒体407は、そこで命令/コードがプロセッサ401によって実行可能である、機械またはコンピュータで読み取り可能な媒体の例を表している。機械またはコンピュータで読み取り可能な媒体は一般に、システム・メモリ404またはプロセッサ401内のバッファに使用されるダイナミック・メモリなどの揮発性媒体と、電子媒体、光媒体、及び磁気媒体などの不揮発性媒体の両方を含み、プロセッサ401に命令を提供するために使用される任意の媒体またはメディアを指すことができる。
【0028】
いくつかの態様では、プロセッサ401は、1つまたは複数の外部装置と(たとえば、入出力インターフェース406を介して)連絡するように構成される。プロセッサ401は、システム・メモリ404あるいは記憶媒体407またはその両方に保存されたデータを読み取り、1つまたは複数の外部装置からの要求に応答して1つまたは複数の外部装置に読み取ったデータを転送するようにさらに構成される。読み取ったデータは、1つまたは複数の外部装置上に描画すべき1つまたは複数のウェブ・ページあるいはその他のソフトウェア・プレゼンテーションまたはその両方を含むことができる。1つまたは複数の外部装置は、パーソナル・コンピュータ、サーバ、ワークステーション、ラップトップ・コンピュータ、PDA、スマートフォンなどのコンピューティング・システムを含むことができる。
【0029】
いくつかの態様では、システム・メモリ404は、デバイス400を管理するために使用されるデータ及び情報を一時的に保存するために使用される揮発性メモリを表している。主題技術の一態様によれば、システム・メモリ404は、ダブル・データレート(DDR)RAMなどのランダム・アクセス・メモリ(RAM)である。システム・メモリ504を実現するために、その他のタイプのRAMも使用することができる。メモリ404は、単一のRAMモジュールまたは複数のRAMモジュールを使用して実現することができる。システム・メモリ404はデバイス400の一部として描写されているが、当業者であれば、システム・メモリ404が主題技術の範囲を逸脱せずにデバイス400から分離できることを認識するであろう。代わって、システム・メモリ404は、磁気ディスク、フラッシュ・メモリ、周辺SSDなどの不揮発性メモリにすることができる。
【0030】
入出力インターフェース406は、1つまたは複数の外部装置に結合し、1つまたは複数の外部装置からデータを受信し、1つまたは複数の外部装置にデータを送信するように構成することができる。入出力インターフェース406は、たとえば、バス402を介して、入出力インターフェース406をプロセッサ401に動作可能に結合するための電気接続及び物理接続の両方を含むことができる。入出力インターフェース406は、バス402に取り付けられた内部コンポーネント(たとえば、プロセッサ401)と1つまたは複数の外部装置(たとえば、ハード・ドライブ)との間でデータ、アドレス、及び制御信号を伝達するように構成される。入出力インターフェース406は、シリアルアタッチドSCSI(SAS)、ファイバ・チャネル・インターフェース、PCIエクスプレス(PCIe)、SATA、USBなどの標準的なインターフェースを実現するように構成することができる。入出力インターフェース406は、1つのインターフェースのみを実現するように構成することができる。代わって、入出力インターフェース406は、ユーザによって選択されるかまたは組み立て時にプログラミングされた構成パラメータを使用して個別に選択可能な複数のインターフェースを実現するように構成することもできる。入出力インターフェース406は、1つまたは複数の外部装置とバス402あるいはそれに動作可能に取り付けられた内部デバイスまたはその両方との間の伝送をバッファリングするための1つまたは複数のバッファを含むことができる。
【0031】
当業者であれば、本明細書に記載されている様々な例示的なブロック、モジュール、エレメント、コンポーネント、方法、及びアルゴリズムは電子ハードウェア、コンピュータ・ソフトウェア、またはその両方の組み合わせとして実現できることを認識するであろう。ハードウェアとソフトウェアのこの互換性を例証するために、様々な例示的なブロック、モジュール、エレメント、コンポーネント、方法、及びアルゴリズムは、その機能性に関して上記で一般的に記載されている。このような機能性がハードウェアとして実現されるかまたはソフトウェアとして実現されるかは、システム全体に課せられた特定の適用及び設計上の制約によって決まる。当業者であれば、それぞれの特定の適用例のために様々な方法で上記の機能性を実現することができる。様々なコンポーネント及びブロックは、いずれも主題技術の範囲を逸脱せずに、異なる配置にする(たとえば、異なる順序で配置するかまたは異なる方法でパーティション化する)ことができる。
【0032】
開示されているプロセスにおける諸ステップの特定の順序または階層は模範的な手法の例示であることは言うまでもない。設計上の好みに基づいて、プロセスにおける諸ステップの特定の順序または階層を再編成できることは言うまでもない。諸ステップのうちのいくつかは同時に実行することができる。付随する方法請求項は、サンプル順序で様々なステップの諸要素を提示しており、提示されている特定の順序または階層に限定されるものではない。
【0033】
上記の説明は、当業者が本明細書に記載された様々な態様を実践できるように提供されたものである。上記の説明は主題技術の様々な例を提供しており、主題技術はこれらの例に限定されない。これらの態様に対する様々な変更は当業者にとって容易に明らかになり、本明細書に定義された包括的原理はその他の態様に適用することができる。したがって、特許請求の範囲は本明細書に示されている諸態様に限定するためのものではなく、請求項の表現と一致した全範囲が授与されるべきであり、その請求項においては単数形の要素に対する言及は、特にそのように指定されない限り、「唯一のもの(one and only one)」を意味するものではなく、むしろ「1つまたは複数(one or more)」を意味するものである。特に他の指定がない限り、「いくつかの(some)」という用語は1つまたは複数を指している。男性形の代名詞(たとえば、彼の(his))は女性形及び中性形(たとえば、彼女の(her)及びそれの(its))を含み、逆もまた同様である。見出し及び小見出しがある場合、便宜上使用されているだけであり、主題技術を限定するものではない。
【0034】
「ように構成される(configured to)」、「ように動作可能である(operable to)」、及び「ようにプログラミングされる(programmed to)」という述語は、主題に関する有形または無形の特定の変更を意味するものではなく、むしろ、交換可能に使用されるものである。たとえば、ある動作またはコンポーネントをモニターし制御するように構成されたプロセッサは、そのプロセッサがその動作をモニターし制御するようにプログラミングされていることまたはそのプロセッサがその動作をモニターし制御するように動作可能であることも意味することができる。同様に、コードを実行するように構成されたプロセッサは、コードを実行するようにプログラミングされたかまたはコードを実行するように動作可能であるプロセッサとして解釈することもできる。
【0035】
「態様(aspect)」などの語句は、このような態様が主題技術にとって不可欠であることまたはこのような態様が主題技術のすべての構成に適用されることを意味するものではない。一態様に関連する開示内容はすべての構成に適用される場合もあれば、1つまたは複数の構成に適用される場合もある。一態様は1つまたは複数の例を提供することができる。一態様などの語句は1つまたは複数の態様を指す可能性があり、逆もまた同様である。「実施形態(embodiment)」などの語句は、このような実施形態が主題技術にとって不可欠であることまたはこのような実施形態が主題技術のすべての構成に適用されることを意味するものではない。一実施形態に関連する開示内容はすべての実施形態に適用される場合もあれば、1つまたは複数の実施形態に適用される場合もある。一実施形態は1つまたは複数の例を提供することができる。「一実施形態」などの語句は1つまたは複数の実施形態を指す可能性があり、逆もまた同様である。「構成(configuration)」などの語句は、このような構成が主題技術にとって不可欠であることまたはこのような構成が主題技術のすべての構成に適用されることを意味するものではない。一構成に関連する開示内容はすべての構成に適用される場合もあれば、1つまたは複数の構成に適用される場合もある。一構成は1つまたは複数の例を提供することができる。「一構成」などの語句は1つまたは複数の構成を指す可能性があり、逆もまた同様である。
【0036】
「模範的(exemplary)」という単語は、「一例または例示として機能すること」を意味するために本明細書で使用されている。「模範的」として本明細書に記載されている任意の態様または設計は必ずしも他の態様または設計より好ましいかまたは有利であると解釈すべきではない。
【0037】
本発明全体を通して記載されている様々な態様の諸要素と構造上及び機能上同等であって、当業者にとって既知であるかまたは後で既知のものになるものはいずれも、参照により明白に本明細書に組み込まれ、特許請求の範囲によって包含されるものである。その上、本明細書に開示されているものはいずれも、このような開示が特許請求の範囲に明示的に列挙されているかどうかにかかわらず、世間一般に提供されたものではない。いかなる請求要素も、その要素が「ための手段」という表現を使用して明白に列挙されていないかまたは方法の請求項の場合にその要素が「ためのステップ」という表現を使用して列挙されていない限り、米国特許法第112節第6項の規定に基づいて解釈されるべきではない。さらに、「含む(comprise)」という用語は請求項内で移行語として使用されるときに解釈されるので、「含む(include)」、「有する(have)」などの用語は、説明または特許請求の範囲において使用される範囲で、「含む(comprise)」と同様に包括的なものである。