(58)【調査した分野】(Int.Cl.,DB名)
読み出し専用のシステムイメージ内のシステムレベルサービスを更新するためのコンピュータ実装方法であって、該方法の少なくとも一部は、少なくとも1つのプロセッサを備えるモバイルコンピューティングデバイスによって実施され、該方法は、
リモートサーバから、該モバイルコンピューティングデバイス上に位置する読み出し専用のシステムイメージ内に格納された少なくとも1つのシステムレベルサービスに対する電子署名された更新を検索することであって、該システムレベルサービスは、該モバイルコンピューティングデバイスの初期化中、ロードされるように設定されている、ことと、
該モバイルコンピューティングデバイス上に位置する書き込み可能なパーティション内の定義済みの場所に該電子署名された更新をインストールすることと、
該モバイルコンピューティングデバイスの該初期化中、該読み出し専用のシステムイメージ内に格納された更新サービスを実行することと、
該更新サービスを介して、該読み出し専用のシステムイメージ内に格納された該システムレベルサービスの代わりに、該書き込み可能なパーティション内の該電子署名された更新を実行することと、を含む、方法。
前記電子署名された更新を実行する前に、前記電子署名された更新の電子署名を認証することによって、前記電子署名された更新がセキュアであると判定することを更に含む、請求項1に記載のコンピュータ実装方法。
前記システムレベルサービスに対する前記電子署名された更新をインストールすると、前記システムレベルサービスを終了し、前記電子署名された更新を実行することを更に含む、請求項1に記載のコンピュータ実装方法。
前記更新サービスを介して、少なくとも1つの追加のシステムレベルサービスに対する更新を識別することであって、該追加のシステムレベルサービスは、前記モバイルコンピューティングデバイスの初期化中、ロードされるように設定されている、ことと、
該追加のシステムレベルサービスに対する該更新の電子署名を認証できなかったので、前記更新サービスを介して、該追加のシステムレベルサービスに対する該更新がセキュアでないと判定することと、
前記更新サービスを介して、該追加のシステムレベルサービスに対する該更新の代わりに、該追加のシステムレベルサービスを実行することと、を更に含む、請求項1に記載のコンピュータ実装方法。
1つ又は2つ以上のコンピュータ実行可能命令を含む、非一時的コンピュータ可読媒体であって、該1つ又は2つ以上のコンピュータ実行可能命令がコンピューティングデバイスの少なくとも1つのプロセッサによって実行されると、該コンピューティングデバイスに、
リモートサーバから、モバイルコンピューティングデバイス上に位置する読み出し専用のシステムイメージ内に格納され、前記モバイルコンピューティングデバイスの初期化中、ロードされるように設定された、少なくとも1つのシステムレベルサービスに対する電子署名された更新を検索させ、
前記モバイルコンピューティングデバイス上に位置する書き込み可能なパーティション内の定義済みの場所に該電子署名された更新をインストールさせ、
前記モバイルコンピューティングデバイスの該初期化中、該読み出し専用のシステムイメージ内に格納された更新サービスを実行させ、
該更新サービスを介して、該読み出し専用のシステムイメージ内に格納された該システムレベルサービスの代わりに、該書き込み可能なパーティション内の該電子署名された更新を実行させる、非一時的コンピュータ可読媒体。
【発明を実施するための形態】
【0015】
本開示は、読み出し専用のシステムイメージ内のシステムレベルサービスを更新するためのシステム及び方法を概ね対象とする。以下でより詳細に説明するように、本明細書に記載されるシステム及び方法により、読み出し専用のシステムイメージ内に格納されたネイティブな(native)実行可能ファイルを更新するための効率的かつ適時なプロセスを提供することができる。具体的には、本明細書に記載されるシステム及び方法により、書き込み可能なパーティション内のネイティブな実行可能ファイルに対する更新を格納し、その後、読み出し専用のシステムイメージ内に格納された元来のネイティブな実行可能ファイルの代わりに、これらの更新を実行することによって、(OTAの更新などの)危険な更新プロセスを避け、読み出し専用のシステムイメージをルート化若しくは変更することなく、又はこの完全性を損なうことなく実施することができる安全かつ使用し易いプロセスを開発者に提供することができる。
【0016】
以下では、
図1及び
図2を参照して、読み出し専用のシステムイメージ内のシステムレベルサービスを更新するための例示的なシステムを詳細に記載する。対応するコンピュータ実装方法の詳細な説明もまた、
図3及び
図4に関連して提供されることとなる。更に、本明細書に記載される実施形態のうち1つ又は2つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が
図5及び
図6に関連してそれぞれ提供されることとなる。
【0017】
図1は、読み出し専用のシステムイメージ内のシステムレベルサービスを更新するための例示的なシステム100のブロック図である。この図に示されるように、例示的なシステム100は、1つ又は2つ以上のタスクを実施するための1つ又は2つ以上のモジュール102を備えてもよい。例えば、以下でより詳細に説明するように、例示的なシステム100は、モバイルコンピューティングデバイスの初期化中、モバイルコンピューティングデバイス上に位置する読み出し専用のシステムイメージ内に格納された更新サービスを実行する初期化モジュール104を備えてもよい。例示的なシステム100はまた、モバイルコンピューティングデバイス上に位置する書き込み可能なパーティションを識別するパーティションモジュール106を備えてもよい。更に、例示的なシステム100は、読み出し専用のシステムイメージ内に格納され、モバイルコンピューティングデバイスの初期化中、ロードされるように設定された、少なくとも1つのシステムレベルサービスに対する書き込み可能なパーティション内の電子署名された更新を識別する識別モジュール108を備えてもよい。例示的なシステム100は、電子署名された更新の電子署名を認証することによって、電子署名された更新がセキュアであると判定する認証モジュール110を更に備えてもよい。例示的なシステム100はまた、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスの代わりに、書き込み可能なパーティション内の電子署名された更新を実行する実行モジュール112を更に備えてもよい。
【0018】
いくつかの実施形態において、例示的なシステム100はまた、電子署名された更新をリモートサーバから検索し、書き込み可能なパーティション内の定義済みの場所に電子署名された更新を格納する検索モジュール114を備えてもよい。例示的なシステム100は、モバイルコンピューティングデバイスを初期化させない電子署名された更新の実行を無効にするフェールセーフモジュール116を更に備えてもよい。別々の要素として示されるが、
図1のモジュール102のうち1つ又は2つ以上は、単一のモジュール又はアプリケーションの一部を表してもよい。
【0019】
特定の実施形態において、
図1のモジュール102のうち1つ又は2つ以上は、コンピューティングデバイスによって実行される際、コンピューティングデバイスに1つ又は2つ以上のタスクを実施させる1つ又は2つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、以下でより詳細に記載されるように、モジュール102のうち1つ又は2つ以上は、
図2に示されるデバイス(例えば、モバイルコンピューティングデバイス202及び/又は更新サーバ206)、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャの一部などの1つ又は2つ以上のコンピューティングデバイス上に格納され、その上で作動するように設定された、ソフトウェアモジュールを表してもよい。
図1のモジュール102のうち1つ又は2つ以上はまた、1つ又は2つ以上のタスクを実施するように構成された1つ又は2つ以上の専用コンピュータのすべて又は一部を表してもよい。
【0020】
図1に示されるように、例示的なシステム100はまた、更新データベース120などの1つ又は2つ以上のデータベースを備えてもよい。ある例において、更新データベース120は、
図2のモバイルコンピューティングデバイス202などのモバイルコンピューティングデバイス上の読み出し専用のシステムイメージ内に格納されたシステムレベルサービスに対する更新を格納するように構成されてもよい。少なくとも1つの実施形態において、更新データベース120は、更新サーバ206上に格納されたデータベースを表してもよく、更新サーバ206は、ネットワーク204を介して、モバイルコンピューティングデバイス202を更新するように構成されてもよい。
【0021】
更新データベース120は、単一のデータベース若しくはコンピューティングデバイス、又は複数のデータベース若しくはコンピューティングデバイスの一部を表してもよい。例えば、更新データベース120は、
図2の更新サーバ206の一部、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の一部を表してもよい。あるいは、
図1の更新データベース120は、
図2のモバイルコンピューティングデバイス202及び/若しくは更新サーバ206、
図5のコンピューティングシステム510、並びに/又は
図6の例示的なネットワークアーキテクチャ600の一部などのコンピューティングデバイスがアクセスすることができる1つ又は2つ以上の物理的に別々のデバイスを表してもよい。
【0022】
図1の例示的なシステム100は、様々な方法で実装することができる。例えば、例示的なシステム100のすべて又は一部は、
図2における例示的なシステム200の一部を表してもよい。
図2に示されるように、システム200は、ネットワーク204を介して更新サーバ206と通信するモバイルコンピューティングデバイス202を備えてもよい。
【0023】
一実施形態において、モバイルコンピューティングデバイス202及び/又は更新サーバ206のうち少なくとも1つのプロセッサによって実行される際、
図1のモジュール102のうち1つ又は2つ以上により、モバイルコンピューティングデバイス202及び/又は更新サーバ206は、読み出し専用のシステムイメージ内のシステムレベルサービスを容易に更新することができる。例えば、以下でより詳細に記載されるように、初期化モジュール104は、モバイルコンピューティングデバイス202の初期化中、モバイルコンピューティングデバイス202に、モバイルコンピューティングデバイス202上に位置する読み出し専用のシステムイメージ内に格納された更新サービスを実行させてもよい。その後、パーティションモジュール106は、モバイルコンピューティングデバイス202に、モバイルコンピューティングデバイス202上に位置する書き込み可能なパーティションを識別させてもよい。その後、識別モジュール108は、モバイルコンピューティングデバイス202に、モバイルコンピューティングデバイス202上に位置する書き込み可能なパーティション内の電子署名された更新208を識別させてもよい。その後、認証モジュール110は、モバイルコンピューティングデバイス202に、電子署名された更新208の電子署名を認証することによって、電子署名された更新208がセキュアであると判定させてもよい。最後に、実行モジュール112は、モバイルコンピューティングデバイス202に、読み出し専用パーティション内に格納されたシステムレベルサービスの代わりに、書き込み可能なパーティション内の電子署名された更新208を実行させてもよい。
【0024】
一実施形態において、検索モジュール114は、モバイルコンピューティングデバイス202に、電子署名された更新208を更新サーバ206から検索させ、電子署名された更新208を書き込み可能なパーティション内の定義済みの場所に格納させてもよい。更に、フェールセーフモジュール116は、モバイルコンピューティングデバイス202に、モバイルコンピューティングデバイス202を初期化させない電子署名された更新の実行を無効にさせてもよい。
【0025】
モバイルコンピューティングデバイス202は、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを概ね表す。モバイルコンピューティングデバイス202の例として、ラップトップ、タブレット、携帯電話、携帯情報端末(Personal Digital Assistant)(PDA)、マルチメディアプレーヤ、組み込みシステム、これらのうち1つ若しくは2つ以上の組み合わせ、
図5の例示的なコンピューティングシステム510、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【0026】
更新サーバ206は、モバイルコンピューティングデバイスに対して、電子署名された更新208などのシステムレベルサービスに対する更新を格納及び提供できる任意のタイプ又は形態のコンピューティングデバイスを概ね表す。更新サーバ206の例として、様々なデータベースサービスを提供し、かつ/又は特定のソフトウェアアプリケーションを作動させるように構成されたアプリケーションサーバ及びデータベースサーバが挙げられるが、これらに限定されない。少なくとも1つの例において、更新サーバ206は、モバイルコンピューティングデバイス202からの電子署名された更新208の要求に応答して、電子署名された更新208をモバイルコンピューティングデバイス202に提供してもよい。別の例において、更新サーバ206は、モバイルコンピューティングデバイス202に対し、定期的に更新を実施するように構成されてもよい。
【0027】
ネットワーク204は、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを概ね表す。ネットワーク204の例として、イントラネット、広域ネットワーク(Wide Area Network)(WAN)、ローカルエリアネットワーク(Local Area Network)(LAN)、パーソナルエリアネットワーク(Personal Area Network)(PAN)、インターネット、電力線通信(PLC)、セルラーネットワーク(例えば、Global System for Mobile Communications(GSM(登録商標))ネットワーク)、
図6の例示的なネットワークアーキテクチャ600などが挙げられるが、これらに限定されない。ネットワーク204は、無線接続又は有線接続を使用して、通信又はデータ転送を容易にすることができる。一実施形態において、ネットワーク204は、モバイルコンピューティングデバイス202と更新サーバ206との間の通信を容易にすることができる。
【0028】
図3は、読み出し専用のシステムイメージ内のシステムレベルサービスを更新するための例示的なコンピュータ実装方法300のフロー図である。
図3に示される工程は、任意の好適なコンピュータが実行可能なコード及び/又はコンピューティングシステムによって実施される。いくつかの実施形態において、
図3に示す工程は、
図1のシステム100、
図2のシステム200、
図4のストレージデバイス400、
図5のコンピューティングシステム510、及び/又は
図6の例示的なネットワークアーキテクチャ600の一部のうち1つ又は2つ以上によって実施される。
【0029】
図3に示されるように、工程302では本明細書に記載されるシステムのうち1つ又は2つ以上は、モバイルコンピューティングデバイスの初期化中、モバイルコンピューティングデバイス上に位置する読み出し専用のシステムイメージ内に格納された更新サービスを実行してもよい。例えば、初期化モジュール104は、
図2のモバイルコンピューティングデバイス202の一部として、モバイルコンピューティングデバイス202の初期化中、モバイルコンピューティングデバイス202上に位置する読み出し専用のシステムイメージ内に格納された更新サービスを実行してもよい。
【0030】
本明細書で使用する際、用語「初期化」は、モバイルコンピューティングデバイス202を参照して使用するとき、モバイルコンピューティングデバイス202によって実施される任意のタイプ又は形態のブートプロセスを概ね指す。例えば、用語「初期化」は、モバイルコンピューティングデバイス202を起動及び/又はブートさせるために使用されるモバイルコンピューティングデバイス202上で実施される任意のプロセスの任意の部分を指し得る。用語「初期化」はまた、モバイルコンピューティングデバイス202にオペレーティングシステム内のアプリケーションを作動させる用意及び/又は準備をする任意のプロセス又はプロセスの一部を指し得る。
【0031】
いくつかの例において、用語「初期化」は、モバイルコンピューティングデバイス202をブートさせるために使用される一連の工程を指し得る。かかる工程の例として、任意の順に、「ブートローダ」をロードする工程、任意のタイプのPower−On−Self−Test(POST)を実施する工程、カーネル及び/若しくはオペレーティングシステムをロード及び実行する工程、ハードウェアデバイスを検出し、デバイスのドライバをロードする工程、低レベルのアプリケーションプログラミングインターフェース(Application Programming Interface)(API)及びシステムのライブラリをロードする工程、低レベルのシステムサービス(例えば、ANDROID(登録商標、以下同じ)デバイス上のZygoteサービス)をロード及び実行する工程、初期化プロセス及び/若しくはファイル(例えば、ANDROIDデバイス用の「init」プロセス及び「init.rc」ファイル)を実行する工程、カーネルデーモンを実行する工程、ファイルシステムをマウントする工程、システムサービス及び/若しくはコアアプリケーションをロードする工程、並びに/又はモバイルコンピューティングデバイス202の初期化、設定、ブート、及び/若しくは作動に必要な任意の他の好適な工程若しくは工程の組み合わせを実施する工程が挙げられるが、これらに限定されない。
【0032】
語句「更新サービス」は、本明細書で使用する際、モバイルコンピューティングデバイス202上に格納されたシステムレベルサービスを更新できる任意のタイプのプロセスを概ね指す。いくつかの例において、この更新サービスは、更新サーバ206及び/又はモバイルコンピューティングデバイス202などの1つ又は2つ以上のコンピューティングデバイス上で実行される1つ又は2つ以上のプロセス及び/又は工程を含んでもよい。この更新サービスはまた、モバイルコンピューティングデバイス202を更新するために使用される任意のタイプ又は組み合わせのファイル、ライブラリ、コード、システム、サービス、プロセスなどを含んでもよい。少なくとも1つの実施形態において、この更新サービスは、パーティションモジュール106、識別モジュール108、認証モジュール110、実行モジュール112、検索モジュール114、及び/若しくはフェールセーフモジュール116などのモジュール102のうち1つ又は2つ以上によって実施される1つ又は2つ以上の工程及び/又はプロセスを含んでもよい。
【0033】
本明細書で使用する際、語句「読み出し専用のシステムイメージ」は、書き込み可能ではないモバイルコンピューティングデバイス上に格納された任意のタイプのシステムイメージを概ね指す。語句「読み出し専用のシステムイメージ」は、
図4の読み出し専用のシステムイメージ404などの様々な構成における様々なシステムイメージを指し得る。いくつかの例において、語句「読み出し専用のシステムイメージ」は、モバイルコンピューティングデバイス202の読み出し専用のパーティション上に格納された任意のタイプ又は形態のシステムイメージ(例えば、ANDROID用の「/system」パーティション)を指し得る。これらの例において、読み出し専用のシステムイメージは、書き込み可能なパーティションに対してイメージを「ルート化」又は再マウントすることなく、概ね書き込み不能、変更不能、かつ/又は設定不能であってもよい。
【0034】
読み出し専用のシステムイメージは、モバイルコンピューティングデバイスをブート、作動、及び/又は、一般的に使用するのに必要なファイル、プロセス、コード、ライブラリ、サービス、カーネル、オペレーティングシステムなどを含有してもよい。読み出し専用のシステムイメージはまた、セキュリティソフトウェアのプロバイダなどの第三者の開発者によって提供される組み込まれたシステムレベルサービスを含有してもよい。いくつかの例において、読み出し専用のシステムイメージは、モバイルコンピューティングデバイス202の製造業者又はキャリアによって設定されたファクトリイメージ(factory image)を表してもよく、それ自体がその製造業者又はキャリアに特有の設定、ソフトウェア、サービス、ドライバなどを含有してもよい。いくつかの実施形態において、読み出し専用のシステムイメージは、OTAの更新を介して更新されてもよい。
【0035】
図4は、読み出し専用のパーティション402及び書き込み可能なパーティション414の両方を含有する例示的なストレージデバイス400を示す。ある例において、ストレージデバイス400は、モバイルコンピューティングデバイス202及び/又はコンピューティングシステム510などのモバイルデバイスのためのストレージデバイス(例えば、ANDROIDデバイス内の内部ストレージデバイス)を表し得る。この例において、デバイスの初期化中、読み出し専用のパーティション402内の読み出し専用のシステムイメージ404は、(以下で詳細に述べるようなローダサービス408及び/又はハブサービス410などの)システムレベルサービスを実行及び/又はロードする初期化ファイル406を含有してもよい。以下でより詳細に記載するように、いくつかの例において、ローダサービス408及び/又はハブサービス410は、列挙される「更新サービス」を表し得る。
【0036】
本明細書に記載されるシステムは、様々な方法で工程302を実施してもよい。ある例において、本明細書に記載されるシステムは、初期化プロセスによって更新サービスを初期化してもよい。例えば、初期化モジュール104は、初期化中、システムレベルサービスを実行及び/又はロードするように設定された初期化プロセス(例えば、ANDROID用の「init」プロセス)を表してもよく、このプロセスの一部として、更新サービスを実行することができる。具体的には、初期化モジュール104は、初期化ファイル(例えば、
図4の初期化ファイル406)を分析する初期化プロセスを表してもよく、初期化ファイル内に見出されるエントリ(例えば、ローダサービス408及び/又はハブサービス410のためのエントリ)を実行する。例えば、更新サービスは、初期化ファイル(例えば、ANDROID用のinit.rc)内のサービスエントリを表してもよい。この例において、初期化モジュール104は、サービスエントリによって指向されるプロセスを実行することによって更新サービスを実行することができる。
【0037】
いくつかの実施形態において、初期化モジュール104は、読み出し専用のシステムイメージ(例えば、
図4の読み出し専用のパーティション402内の読み出し専用のシステムイメージ404)から実行されてもよく、同じ読み出し専用のシステムイメージから更新サービスを実行してもよい。他の実施形態では、初期化モジュール104は、モバイルコンピューティングデバイス202の初期化中、更新サービスを実行するために好適な任意の他のプロセスを使用して更新サービスを実行してもよい。
【0038】
本明細書に記載されるシステムは、モバイルコンピューティングデバイス202の初期化中、任意の時間に更新サービスを実行してもよい。例えば、初期化モジュール104は、初期化プロセスの開始時に(例えば、カーネルが初期化された直後に)、初期化の最終工程の間(例えば、高レベルのアプリケーション及びサービスをロードする間)、又はモバイルコンピューティングデバイス202の初期化中の任意の他の時間に更新サービスを実行してもよい。いくつかの実施形態において、更新サービスは、任意の様々な設定における1つ又は2つ以上のファイル、実行可能ファイル、コンピュータ実行可能命令、バイナリ、及び/又はライブラリを含んでもよい。これらの実施形態において、更新サービスを実行することは、かかる設定内に見出される1つ又は2つ以上のコンピュータ実行可能命令を実行することを含んでもよい。
【0039】
図3に示されるように、工程304では、本明細書に記載されるシステムは、更新サービスを介して、モバイルコンピューティングデバイス上に位置する書き込み可能なパーティションを識別することができる。例えば、パーティションモジュール106は、
図2のモバイルコンピューティングデバイス202の一部として、モバイルコンピューティングデバイス202上に位置する書き込み可能なパーティション(例えば、
図4の書き込み可能なパーティション414)を識別することができる。
【0040】
本開示内では、語句「書き込み可能なパーティション」は、書き込み又は変更することができる、任意のタイプ又は形態のコンピュータ可読ストレージデバイス上に位置する任意のパーティションを概ね指す。いくつかの実施形態において、語句「書き込み可能なパーティション」は、ファイル及び/又はディレクトリに対して変更を行うことができるパーティションを指し得る。特定の例において、モバイルコンピューティングデバイス202上に位置する様々なアプリケーション及びサービスは、パーティションに対してファイルを保存し、パーティションにプログラム、ソフトウェア及び/又は更新をインストールし、パーティション上にユーザ設定及び構成を保存し、パーティション上にログ及び他のデータを格納し、かつ書き込み可能なパーティション上のデータを変更又は修正する任意の他の行為又はプロセスを実施することによって、書き込み可能なパーティションを変更することができる。いくつかの例において、語句「書き込み可能なパーティション」は、サービス、ファイル、ライブラリ、アプリケーションなどに対する更新を格納するパーティション(例えば、ANDROID用の「/data」パーティション)を指し得る。
【0041】
本明細書に記載されるシステム及び方法は、様々な方法で工程304を実施してもよい。ある例において、パーティションモジュール106は、書き込み可能なパーティションのためのモバイルコンピューティングデバイス202上の1つ又は2つ以上のストレージデバイスをサーチしてもよい。別の例において、パーティションモジュール106は、書き込み可能なパーティションのためのストレージデバイス上の定義済みの場所をサーチしてもよい。いくつかの実施形態において、パーティションモジュール106は、モバイルコンピューティングデバイス202の初期化プロセスによって発見されたパーティションを調査することによって、書き込み可能なパーティションを識別することができる。例えば、モバイルコンピューティングデバイス202の初期化中、ファイルシステムをマウントするように設定されたブートプロセスにより、複数のパーティションを発見することができる。この例において、パーティションモジュール106は、ブートプロセスによって発見されたパーティションデータにアクセスすることによって、工程304を実施することができる。
【0042】
図3に示されるように、工程306では、本明細書に記載されるシステムは、更新サービスを介して、読み出し専用のシステムイメージ内の少なくとも1つのシステムレベルサービスに対する書き込み可能なパーティション内の電子署名された更新を識別することができる。例えば、識別モジュール108は、
図2のモバイルコンピューティングデバイス202の一部として、モバイルコンピューティングデバイス202の読み出し専用のシステムイメージ内のシステムレベルサービスに対するモバイルコンピューティングデバイス202の書き込み可能なパーティション内の電子署名された更新208を識別することができる。
【0043】
語句「電子署名された更新」は、本明細書で使用する際、電子署名(例えば、電子署名418及び/又は電子署名422)を使用して署名された任意のタイプ又は形態の更新(例えば、
図4のローダの更新416及び/又はハブの更新420)を概ね指す。かかる更新の例として、システムレベルサービスの更新、システムレベルライブラリの更新、システムレベルファイル及び/若しくはバイナリの更新、システムレベルデーモンの更新、システムイメージの更新、初期化プロセスの更新、初期化ファイルの更新、並びに/又は任意の他の好適なタイプ又は形態の更新が挙げられるが、これらに限定されない。更に、用語「電子署名」は、本明細書で使用する際、デジタルオブジェクトの信頼性及び/又は完全性を実証するために使用される任意のタイプ又は形態のスキームを概ね指す。電子署名は、RSA、DSA、ECDSA、EIGamal署名スキーム、Schnorr署名、Pointcheval−Stern署名、Rabin署名、BLSなどのペアリング系スキーム、否認不可署名(undeniable signature)、アグリゲート署名などの様々な暗号化アルゴリズム及びスキーム、並びに/又は任意の他のタイプ若しくは形態の好適なアルゴリズム及び/若しくはスキームを使用して暗号化されてもよい。電子署名の例として、デジタルオブジェクトの完全性を認証する署名、デジタルオブジェクトの著者を認証する署名、デジタルオブジェクトの完全性及び著者の両方を認証する署名、並びに/又は任意の方法でデジタルオブジェクトの安全性を実証するために使用され得る任意の他のタイプ又は形態の署名が挙げられるが、これらに限定されない。
【0044】
いくつかの例において、電子署名された更新及び電子署名は、同じファイルに格納されてもよい。あるいは、電子署名及び電子署名された更新は、別々のファイルとして格納されてもよい。例えば、電子署名された更新、及び更新に対応する電子署名は、書き込み可能なパーティション内の別々の場所に別々のファイルとして格納されてもよい。
【0045】
語句「システムレベルサービス」は、本明細書で使用する際、モバイルコンピューティングデバイス202にネイティブな任意のタイプのサービスを概ね指す。システムレベルサービスの例として、任意のタイプ又は形態のネイティブなファイル、プロセス、バイナリ、コンピュータ実行可能命令、及び/若しくはこれらの任意の組み合わせが挙げられるが、これらに限定されない。「システムレベルサービス」はまた、読み出し専用のシステムイメージ内に格納されたネイティブなサービスを指し得る。ある例において、モジュール102のすべて又は一部は、モバイルコンピューティングデバイス202の読み出し専用のシステムイメージ上に格納されたシステムレベルサービスを表してもよい。
【0046】
語句「システムレベルサービス」はまた、モバイルコンピューティングデバイスの初期化中、ロードされるように設定された任意のタイプのネイティブなサービスを指し得る。かかるサービスとして、初期化中、実行されるように具体的に設計及び/又は設定されたプロセス、ファイル、ライブラリ、API、及び/又はコンピュータ実行可能命令が挙げられる。例えば、モジュール102のすべて又は一部は、モバイルコンピューティングデバイス202の初期化中、ロードされるように具体的に設定されてもよい。
【0047】
いくつかの例において、語句「システムレベルサービス」はまた、モバイルコンピューティングデバイス202が初期化するために実行されなければならないサービス若しくはプロセス、並びに/又は高レベルのアプリケーション及びサービスの実行の前に実行されなければならないサービス又はプロセスを指し得る。語句「システムレベルサービス」はまた、低レベルのシステム及びサービスにアクセスする必要があり、したがって、モバイルコンピューティングデバイス202の初期化中、ロードされるように設定されたサービスを指し得る。いくつかの実施形態において、語句「システムレベルサービス」は、モバイルコンピューティングデバイス202の初期化中、実行されるように設定されたデーモン(即ち、バックグラウンドプロセス)を指し得る。
【0048】
いくつかの例において、システムレベルサービスは、ANDROIDプラットフォーム(例えば、ANDROID 4.0)などのモバイルプラットフォームに特有の様々なネイティブなサービスを含んでもよい。ネイティブなANDROIDのシステムレベルサービスの例として、ブートローダ、LINUX系のカーネル、カーネルドライバ(例えば、オーディオドライバ、ディスプレイドライバ、usbドライバなど)、「init」プロセス、「init.rc」ファイル、Zygoteプロセス、Dalvik仮想マシン、ANDROIDランタイムコアライブラリ(runtime core library)、システムライブラリ(例えば、SQLite、SGL、SSL、libc、OpenGLなど)、及び/又はアプリケーションフレームワーク(例えば、ウィンドウマネージャ、アクティビティマネージャ、ビューシステム、XMPPサービス、パッケージマネージャなど)が挙げられるが、これらに限定されない。加えて、これらのANDROIDのシステムレベルサービスは、様々なANROIDの読み出し専用のシステムイメージ(例えば、ANDROID 4.3JSS15Q及びJSS15Rなどのネクサス(nexus)用の「razor」ファクトリイメージ)内に含まれてもよい。
【0049】
いくつかの例において、語句「システムレベルサービス」は、モバイルコンピューティングデバイス202の読み出し専用のシステムイメージに組み込まれ、モバイルコンピューティングデバイス202が初期化する際、ロードされるように設定されたネイティブなサービスのフレームワーク内のサービスを指し得る。例えば、セキュリティソフトウェアの開発者は、モバイルコンピューティングデバイス202が初期化する際、セキュリティのために実行するように設定された読み出し専用のシステムイメージに(
図4のローダサービス408及びハブサービス410などの)セキュリティサービス及びツールのフレームワークを組み込んでもよい。いくつかの実施形態において、読み出し専用のシステムイメージとして、様々な第三者の開発者によって提供される様々な他のフレームワーク、サービス、ファイルなどが挙げられる。
【0050】
本明細書におけるシステム及び方法は、様々な方法で工程306を実施してもよい。一実施形態において、本明細書に記載されるシステムは、(1)電子署名された更新をリモートサーバから検索し、(2)電子署名された更新を書き込み可能なパーティション内の定義済みの場所に格納してもよい。例えば、検索モジュール114は、
図4のローダサービス408に対する更新(例えば、ローダの更新416)を更新サーバ206から検索し、書き込み可能なパーティション414に格納してもよい。この例において、識別モジュール108は、書き込み可能なパーティション414内の定義済みの場所をサーチすることによって、ローダの更新416を識別してもよい。いくつかの例において、この定義済みの場所は、検索モジュール114がローダの更新416を格納する書き込み可能なパーティション414内のディレクトリ又はフォルダであってもよい。
【0051】
いくつかの実施形態において、本明細書に記載されるシステムは、(1)更新のための書き込み可能なパーティションを定期的にサーチし、かつ/又は(2)更新のためのリモートサーバを定期的に照会してもよい。例えば、識別モジュール108は、更新のための書き込み可能なパーティション内の定義済みの場所を定期的にサーチしてもよい。いくつかの実施形態において、識別モジュール108は、1日に1回、1週間に1回、1ヶ月に1回、1日に複数回などの様々な間隔で、又は任意の他の好適なスケジュール若しくは間隔で、定義済みの場所をサーチしてもよい。同様に、いくつかの実施形態において、検索モジュール114は、更新のための更新サーバ206を定期的に照会してもよい。例えば、検索モジュール114は、1日に1回、1週間に1回、1ヶ月に1回、1日に複数回などの様々な間隔で、又は任意の他の好適なスケジュール若しくは間隔で、更新サーバ206を照会してもよい。
【0052】
少なくとも1つの実施形態において、本明細書に記載されるシステムは、更新サービスを介して電子署名された更新の通知を、(1)システムレベルサービス及び/又は(2)追加のサービスから受信することによって、電子署名された更新を識別することができる。例えば、識別モジュール108は、(識別モジュール108などの)別のソフトウェアモジュールに更新を通知するように設定されたサービス又はプロセスなどのローダサービス408及び/又は追加のサービス(例えば、ハブサービス410)から通知を受信することによってローダの更新416を識別してもよい。いくつかの例において、システムレベルサービスは、追加のサービスの親プロセスであってもよい(例えば、ローダサービス408は、ハブサービス410の親プロセスを表してもよい)。他の例において、システムレベルサービスは、追加のサービスの子プロセスであってもよい。
【0053】
図3に示されるように、工程308では、本明細書に記載されるシステムは、更新サービスを介して、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスの代わりに、書き込み可能なパーティション内の電子署名された更新を実行してもよい。例えば、実行モジュール112は、
図2のモバイルコンピューティングデバイス202の一部として、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスの代わりに、電子署名された更新208を実行してもよい。
【0054】
本明細書に記載されるシステム及び方法は、様々な方法で工程308を実施してもよい。例えば、実行モジュール112は、識別モジュール108が電子署名された更新208を識別してから任意の時間後、電子署名された更新208を実行してもよい。一実施形態において、実行モジュール112は、識別モジュール108が電子署名された更新208を識別した後、電子署名された更新208を直ぐに実行してもよい。別の実施形態では、実行モジュール112は、モバイルコンピューティングデバイス202が次回初期化されるまで電子署名された更新208の実行を待機してもよい。
【0055】
いくつかの実施形態において、本明細書に記載されるシステムは、モバイルコンピューティングデバイスが初期化しないように電子署名された更新の実行を無効にしてもよい。例えば、本明細書に記載されるシステムは、工程308に記載されるように、電子署名された更新を実行した後、(1)モバイルコンピューティングデバイスが初期化に失敗したことを検出し、その後、(2)失敗した初期化についての情報を書き込み可能なパーティション内のログに格納してもよい。モバイルコンピューティングデバイスが再初期化する際、本明細書に記載されるシステムは、加えて、(3)ログに格納された情報に基づいて、システムレベルサービスに対する電子署名された更新が失敗した初期化を引き起こしたと判定し、(4)書き込み可能なパーティション内の電子署名された更新の代わりに、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスを実行してもよい。具体的に、フェールセーフモジュール116は、実行モジュール112が電子署名された更新208を実行した後、モバイルコンピューティングデバイス202が初期化に失敗したことを検出してもよい。その後、フェールセーフモジュール116は、失敗した初期化についての情報を、初期化ログ122内に格納してもよい。モバイル−コンピューティングデバイス202が再初期化する際、フェールセーフモジュール116は、初期化ログ122に格納された情報に基づいて、電子署名された更新208が失敗した初期化を引き起こしたと判定してもよい。その後、フェールセーフモジュール116は、電子署名された更新208の代わりに、システムレベルサービスを実行してもよい。
【0056】
様々な実施形態において、本明細書に記載されるシステムは、電子署名された更新を実行する前に、電子署名された更新の電子署名を認証することによって電子署名された更新がセキュアであると判定してもよい。例えば、認証モジュール110は、電子署名された更新208の電子署名を認証することによって、電子署名された更新208がセキュアであると判定してもよい。同様に、ローダサービス408は、電子署名422を認証することによって、ハブの更新420がセキュアであると判定してもよい。
【0057】
本明細書に記載されるシステムは、電子署名(したがって、署名に関連した更新)を様々な方法で認証してもよい。ある例において、本明細書に記載されるシステムは、電子署名された更新の発行者によって提供された公開暗号鍵を使用して、電子署名された更新に関連した電子署名の復号に成功することによって、電子署名された更新の信頼性を認証してもよい。例えば、認証モジュール110は、ローダの更新416の発行者によって提供された暗号の公開暗号鍵を使用して、ローダの更新416に対応する電子署名418の復号に成功することによって、
図4のローダの更新416の信頼性を認証してもよい。
【0058】
別の例において、本明細書に記載されるシステムは、電子署名された更新に関連する電子署名内に含まれる暗号学的ハッシュを認証することによって、電子署名された更新の完全性を認証してもよい。例えば、認証モジュール110は、(1)暗号学的チェックサム又はハブの更新420のハッシュを計算し、(2)ハブの更新420の発行者によって提供された公開暗号鍵を使用して、電子署名422を復号して、暗号学的ハッシュ424を得、その後、(3)暗号学的ハッシュ424が、計算されたハッシュに一致すると判定することによって、
図4のハブの更新420の完全性を認証してもよい。このように電子署名422を証明することにより、発行者の手を離れて以降、ハブの更新420が変更又は改ざんされていないことを認証することができる。
【0059】
本明細書に記載されるシステムのいくつかの実施形態において、更新サービスは、システムレベルサービスの親プロセスであってもよい。例えば、更新サービスは、セキュリティソフトウェアのプロバイダによって提供されたサービスのフレームワークの一部であってもよい。この例において、ローダサービス408は、次々にハブサービス410をロード及び監視できる列挙された更新サービスを表してもよい。いくつかの実施形態において、ハブサービス410は、列挙されたシステムレベルサービスを表してもよく、他の実施形態では、システムレベルサービスは、ハブサービス410の子プロセスを表してもよい。
【0060】
更新サービスがシステムレベルサービスの親プロセスである実施形態では、本明細書に記載されるシステムは、システムレベルサービスに対する電子署名された更新を識別する前に、(1)更新サービスを介して、更新サービスに対する書き込み可能なパーティション内の電子署名された更新を識別し、(2)更新サービスを介して、更新サービスに対する電子署名された更新を認証し、(3)更新サービスを介して、更新サービスに対する電子署名された更新を実行してもよい。例えば、ローダサービス408は、ローダの更新416を識別し、電子署名418を認証し、その後、ローダの更新416を実行してもよい。
【0061】
様々な実施形態において、本明細書に記載されるシステムは、システムレベルサービスに対する電子署名された更新を識別すると、システムレベルサービスを終了し、電子署名された更新を実行してもよい。例えば、ハブサービス410は、ハブの更新420を識別してもよく、ローダサービス408にハブの更新420を通知してもよい。それに応じて、ローダサービス408は、ハブサービス410を終了し、代わりにハブの更新420を実行してもよい。
【0062】
いくつかの例において、ハブサービス410は、ライブ更新サービスを含む複数の子プロセスの親プロセスであってもよい。この例において、ライブ更新サービスは、更新サーバ206から更新を検索し、書き込み可能なパーティション414内に格納するように設定されてもよい。ライブ更新サービスはまた、ハブサービス410の子プロセスに対する更新がダウンロードされる際、ハブサービス410に通知してもよい。この例において、その後、ハブサービス410は、子プロセスを終了し、その後、子プロセスに対する更新を実行してもよい。
【0063】
いくつかの実施形態において、本明細書に記載されるシステムは、システムレベルサービス終了後、直ちに電子署名された更新を実行するか又はモバイルコンピューティングデバイスの初期化の際、電子署名された更新を実行するかのいずれかであってもよい。例えば、ローダサービス408は、ハブサービス410が終了すると、直ちにハブの更新420を実行してもよい。あるいは、ローダサービス408は、ハブサービス410が終了すると、ハブの更新420を実行する前に、モバイルコンピューティングデバイス202が再初期化するまで待機してもよい。
【0064】
いくつかの例において、本明細書に記載されるシステムは、認証された更新を実行することによってのみシステムのセキュリティを保証してもよい例えば、本明細書に記載されるシステムは、(1)更新サービスを介して、モバイルコンピューティングデバイスの初期化中、ロードされるように設定された少なくとも1つの追加のシステムレベルサービスに対する更新を識別し、(2)追加のシステムレベルサービスに対する更新の電子署名を認証することができなかったので、更新サービスを介して、追加のシステムレベルサービスに対する更新がセキュアでないと判定し、その後、(3)更新サービスを介して、追加のシステムレベルサービスに対する更新の代わりに、追加のシステムレベルサービスを実行してもよい。具体的に、ハブサービス410は、子プロセスを含んでもよく、子プロセスに対する電子署名された更新を識別してもよい。その後、ハブサービス410は、子プロセスに対する更新の電子署名を認証するよう試みてもよく、様々な理由で、子プロセスの電子署名を認証できないことが分かり得る。例えば、ハブサービス410は、子プロセスに対する更新のチェックサム又は(暗号学的ハッシュ424と同様の)暗号化されたハッシュが不一致であることを見出し、この不一致に基づいて、更新の元の形態から改変されているため更新が非セキュアであると判定してもよい。その後、ハブサービス410は、子プロセスに対する更新の代わりに、子プロセスを実行してもよい。
【0065】
ある例において、先の節に記載された子プロセスはまた、電子署名されてもよく、子プロセスの電子署名を復号するために使用される公開鍵は、読み出し専用のシステムイメージ404内に含まれてもよい。この例において、ハブサービス410は、子プロセスを実行する前に、子プロセスの電子署名を認証するための公開鍵を使用することによって、子プロセスがセキュアであると判定してもよい。そうすることによって、ハブサービス410は、子プロセスが変更されていないため、子プロセスがセキュアであると認証してもよい。様々な実施形態において、読み出し専用のシステムイメージ404は、読み出し専用のシステムイメージ404及び/又は読み出し専用のシステムイメージ404内に格納されたシステムレベルサービスの信頼性及び完全性を認証するために使用される様々な公開鍵及び電子署名を含有してもよい。これらの公開鍵及び電子署名により、読み出し専用のシステムイメージ404が、イメージの安全性及び/又は完全性を損なうように変更された(例えば「ルート化された」)かどうかを検出することができる。
【0066】
いくつかの例において、初期化プロセス、ローダサービス408、及びハブサービス410は、モバイルコンピューティングデバイス202上のバックグラウンドプロセスとして作動するように設定されたデーモンを表してもよい。これらの例において、これらのプロセス及びサービスは、モバイルコンピューティングデバイス202が作動している任意の時間に本開示内に記載される工程を実施してもよい。例えば、モバイルコンピューティングデバイス202が初期化した後、ハブサービス410は、(すべてがハブサービス410の子プロセスであってもよい)セキュリティサービスのフレームワークを監視し続けてもよい。これらのセキュリティサービスのうち1つに対する更新が識別されると、ハブサービス410は、ハブサービス410自身を終了させ、その後、ローダサービス408によって再起動されてもよい。
【0067】
一実施形態において、ローダサービス408は、制限された回数、ハブサービス410を再起動するように設定されてもよく、定義済みの再起動の閾値数に至った後、ハブサービス410を再起動する前に、モバイルコンピューティングデバイス202が再初期化するまで待機してもよい。いくつかの実施形態において、ハブサービス410が更新を識別する際、ハブサービス410は、モバイルコンピューティングデバイス202が次回初期化されるまで再起動を待機してもよい。
【0068】
以下では、
図3に関連して上で概述したプロセスの詳細な例を提供することとする。この例において、モバイルコンピューティングデバイス202の初期化中、初期化プロセス(例えば、ANDROID用の「init」プロセス)は、初期化ファイル406を解析し、初期化ファイル406内に見出されるエントリを実行することによって、ローダサービス408を実行してもよい。ローダサービス408は、一度実行されると、その後、書き込み可能なパーティション414上の定義済みの場所内で自身に対する更新をサーチしてもよい。ローダサービス408がローダの更新416などの更新を識別した場合、ローダサービス408は、更新の電子署名を認証するよう試みてもよい。更新の認証が成功した場合、ローダサービス408は、この例において、ローダの更新416であるローダサービス408の最新バージョンを実行してもよい。ローダサービス408が更新を認証できない場合、ローダサービス408は、更新の実行をやめてもよい。
【0069】
自身の更新を確認した後、ローダサービス408(又は場合により更新されたバージョンのローダサービス408)は、その後、書き込み可能なパーティション414上の定義済みの場所をサーチすることによって、ハブサービス410に対する更新を確認してもよい。この例において、定義済みの場所をサーチすることによって、ハブの更新420を識別すると、ローダサービス408は、暗号学的ハッシュ424を認証することによって、ハブの更新420がセキュアであると判定してもよく、ハブサービス410の代わりにハブの更新420を実行してもよい。他の例では、暗号学的ハッシュ424を認証できない場合、ローダサービス408は、ハブの更新420の代わりに、ハブサービス410を実行してもよい。その後、ハブサービス410(又は場合により更新されたバージョンのハブサービス410)は、1つ又は2つ以上の子プロセスに対する更新のための書き込み可能なパーティション414を確認してもよい。更新がこれらの子プロセスのうち1つ又は2つ以上に対して見出される場合、ハブサービス410は、ネイティブなバージョンの代わりに、これらの子プロセスに対する更新を実行してもよい。
【0070】
図3の方法300に関連して上で説明されたように、モバイルデバイスの開発者が、読み出し専用のパーティション(例えば、ANDROIDデバイス用の「/system」パーティション)内で開発者が配信したネイティブなバイナリに対して更新を望む場合、開発者は一般的に、キャリア又は製造業者のOTAの更新でデバイスがフラッシュされるまで待機しなければならない。開発者は、これらの緩慢である場合が多いリリース、すなわち、危険なOTAの更新に対して代替的なソリューションを望む場合がある。1つのソリューションとして、読み出し専用のシステムイメージを再マウント又は「ルート化」することが挙げられるが、そうすることで、モバイルデバイスの完全性を損なう場合があり、場合によっては、デバイスがキャリアのネットワークに接続できない場合がある。
【0071】
本開示は、書き込み可能なパーティション(例えば、ANDROIDデバイス上の「/data」パーティション)から、ネイティブなバイナリ自身の代わりに、ネイティブなバイナリに対する更新を実行することによって、これらの問題を克服することができる。上の記載において詳述されるように、電子署名された更新をクラウドサーバから検索し、書き込み可能なパーティション上の定義済みの場所において電子署名された更新をインストールによってこれを遂行することができる。電子署名された更新を実行する前に、更新サービスは、更新の電子署名を認証することによって更新がセキュアであることを確認することができる。更新を実行した後、モバイルデバイスがブートに失敗した場合、問題のある更新を今後スキップすることができるように、失敗したブートについての情報が書き込み可能なパーティション内のログに保持されてもよい。これらの工程を実施することによって、本開示は、パーティション及び/又はモバイルデバイスを再フラッシュする必要なく、読み出し専用のパーティション上の低レベルのサービスを更新するためのセキュアなソリューションを提供することができる。いくつかの例において、このソリューションを、読み出し専用のパーティション内に格納されたすべてのシステムレベルサービス及びネイティブなバイナリに対する更新を提供することができる「マザー(mother)」プロセス(例えば、ANDROID用の「init」プロセス)を含むように拡張してもよい。これらのソリューションにより、開発者は、重大なサービスに対して適時に更新を行い、OTAの更新によるモバイルデバイスのフラッシュに内在する危険性を排除し、改善されたサポート及びよりロバストなサービスの提供によって売上を増加させる、といったことを次々と可能にすることができる。
【0072】
図5は、本明細書に記載及び/又は図示される実施形態のうち1つ又は2つ以上を実装することができる例示的なコンピューティングシステム510のブロック図である。例えば、コンピューティングシステム510のすべて又は一部は、単独で又は他の要素と組み合わせて、(
図3に示される工程のうち1つ若しくは2つ以上などの)本明細書に記載される工程のうち1つ若しくは2つ以上を行ってもよく、かつ/又はそれを実施するための手段であってもよい。コンピューティングシステム510のすべて又は一部はまた、本明細書に記載及び/若しくは図示される他の任意の工程、方法、若しくは処理を行ってもよく、かつ/又はそれを実施するための手段であってもよい。
【0073】
コンピューティングシステム510は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム510の例として、ワークステーション、ラップトップ、クライアント側端末、サーバ、配信型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム510は、少なくとも1つのプロセッサ514及びシステムメモリ516を備えてもよい。
【0074】
プロセッサ514は、データを処理するか又は命令を解釈し実行することができる任意のタイプ又は形態の処理ユニットを概ね表す。特定の実施形態において、プロセッサ514は、ソフトウェアアプリケーション又はモジュールから命令を受信することができる。これらの命令によって、プロセッサ514は、本明細書に記載及び/又は図示される例示的な実施形態のうち1つ又は2つ以上の機能を実施することができる。
【0075】
システムメモリ516は、データ及び/又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態の揮発性又は不揮発性ストレージデバイス又は媒体を概ね表す。システムメモリ516の例として、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられるが、これらに限定されない。必須ではないが、特定の実施形態において、コンピューティングシステム510は、(例えば、システムメモリ516などの)揮発性メモリユニット及び(例えば、以下で詳細に記載されるような一次ストレージデバイス532などの)不揮発性ストレージデバイスの両方を含んでもよい。ある例において、
図1のモジュール102のうち1つ又は2つ以上がシステムメモリ516にロードされてもよい。
【0076】
特定の実施形態において、例示的なコンピューティングシステム510はまた、プロセッサ514及びシステムメモリ516に加えて、1つ又は2つ以上の構成要素又は要素を含んでもよい。例えば、
図5に示されるように、コンピューティングシステム510は、それぞれが通信インフラストラクチャ512を介して相互接続されてもよいメモリコントローラ518、入力/出力(I/O)コントローラ520、及び通信インターフェース522を備えてもよい。通信インフラストラクチャ512は、コンピューティングデバイスの1つ又は2つ以上の構成要素間の通信を容易にすることができる任意のタイプ又は形態のインフラストラクチャを概ね表す。通信インフラストラクチャ512の例として、(Industry Standard Architecture(ISA)、Peripheral Component Interconnect(PCI)、PCI Express(PCIe)、又は同様のバスなどの)通信バス及びネットワークが挙げられるが、これらに限定されない。
【0077】
メモリコントローラ518は、メモリ若しくはデータを取り扱うか又はコンピューティングシステム510の1つ又は2つ以上の構成要素間の通信を制御することができる任意のタイプ又は形態のデバイスを概ね表す。例えば、特定の実施形態において、メモリコントローラ518は、通信インフラストラクチャ512を介して、プロセッサ514とシステムメモリ516とI/Oコントローラ520との間の通信を制御することができる。
【0078】
I/Oコントローラ520は、コンピューティングデバイスの入出力機能を調整及び/又は制御することができる任意のタイプ又は形態のモジュールを概ね表す。例えば、特定の実施形態において、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インターフェース522、ディスプレイアダプタ526、入力インターフェース530、及びストレージインターフェース534などのコンピューティングシステム510の1つ又は2つ以上の要素間におけるデータの転送を制御し、又はこれを容易にすることができる。
【0079】
通信インターフェース522は、例示的なコンピューティングシステム510と1つ又は2つ以上の追加のデバイスとの間の通信を容易にすることができる任意のタイプ又は形態の通信デバイス又はアダプタを幅広く表す。例えば、特定の実施形態において、通信インターフェース522は、コンピューティングシステム510と、追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にすることができる。通信インターフェース522の例として、(ネットワークインターフェースカードなどの)有線ネットワークインターフェース、(無線ネットワークインターフェースカードなどの)無線ネットワークインターフェース、モデム、及び他の任意の好適なインターフェースが挙げられるが、これらに限定されない。少なくとも1つの実施形態において、通信インターフェース522は、インターネットなどのネットワークへの直接的なリンクを介してリモートサーバへ直接接続してもよい。通信インターフェース522はまた、例えば、(Ethernetネットワークなどの)ローカルエリアネットワーク、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は他の任意の好適な接続によってかかる接続を間接的に提供してもよい。
【0080】
特定の実施形態において、通信インターフェース522はまた、外部バス又は通信チャネルを介してコンピューティングシステム510と1つ又は2つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例として、Small Computer System Interface(SCSI)用ホストアダプタ、Universal Serial Bus(USB)用ホストアダプタ、米国電気電子学会(Institute of Electrical and Electronics Engineers)(IEEE)1394用ホストアダプタ、Advanced Technology Attachment(ATA)、Parallel ATA(PATA)、Serial ATA(SATA)、及びExternal SATA(eSATA)用ホストアダプタ、Fibre Channel用インターフェースアダプタ、Ethernet用アダプタなどが挙げられるが、これらに限定されない。また、通信インターフェース522により、コンピューティングシステム510は配信型又はリモートコンピューティングに関わることができる。例えば、通信インターフェース522は、実行のためにリモートデバイスから命令を受信し、又はリモートデバイスに命令を送信することができる。
【0081】
図5に示されるように、コンピューティングシステム510はまた、ディスプレイアダプタ526を介して、通信インフラストラクチャ512に連結された少なくとも1つのディスプレイデバイス524を備えてもよい。ディスプレイデバイス524は、ディスプレイアダプタ526によって転送される情報を視覚的に表示することができる任意のタイプ又は形態のデバイスを概ね表す。同様に、ディスプレイアダプタ526は、ディスプレイデバイス524に表示するために、通信インフラストラクチャ512から(又は当該技術分野において既知であるようにフレームバッファから)グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形態のデバイスを概ね表す。
【0082】
図5に示されるように、例示的なコンピューティングシステム510はまた、入力インターフェース530を介して、通信インフラストラクチャ512に連結された少なくとも1つの入力デバイス528を備えてもよい。入力デバイス528は、コンピュータ又はヒトのいずれかが生成した入力を例示的なコンピューティングシステム510へ提供することができる任意のタイプ又は形態の入力デバイスを概ね表す。入力デバイス528の例として、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられるが、これらに限定されない。
【0083】
図5に示されるように、例示的なコンピューティングシステム510はまた、ストレージインターフェース534を介して通信インフラストラクチャ512に連結された一次ストレージデバイス532及びバックアップストレージデバイス533を備えてもよい。ストレージデバイス532及び533は、データ及び/又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態のストレージデバイス又は媒体を概ね表す。例えば、ストレージデバイス532及び533は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。ストレージインターフェース534は、ストレージデバイス532及び533とコンピューティングシステム510の他の構成要素との間でデータを転送するための任意のタイプ又は形態のインターフェース又はデバイスを概ね表す。ある例において、
図1の更新データベース120は、一次ストレージデバイス532に格納されてもよい。
【0084】
特定の実施形態において、ストレージデバイス532及び533は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を格納するように構成された取り外し可能なストレージユニットから読み取り、かつ/又はこれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例として、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられるが、これらに限定されない。ストレージデバイス532及び533はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム510内にロードされることを可能にするための他の同様の構造体又はデバイスを含んでもよい。例えば、ストレージデバイス532及び533は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、かつこれを書き込むように構成されてもよい。ストレージデバイス532及び533はまた、コンピューティングシステム510の一部であってもよく、又は他のインターフェースシステムを介してアクセスされる別々のデバイスであってもよい。
【0085】
多くの他のデバイス又はサブシステムをコンピューティングシステム510に接続することができる。反対に、
図5に示される構成要素及びデバイスのすべてが、本明細書に記載及び/又は図示される実施形態を実践するために存在する必要があるわけではない。上で言及されるデバイス及びサブシステムはまた、
図5に示されるものと異なる方法で相互接続されてもよい。コンピューティングシステム510はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェアの構成を採用してもよい。例えば、本明細書で開示される例示的な実施形態のうち1つ又は2つ以上は、コンピュータ可読記憶媒体上に、(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)コンピュータプログラムとしてコード化されてもよい。語句「コンピュータ可読記憶媒体」は、コンピュータ可読命令を格納又は具備することが可能な任意の形態のデバイス、キャリア、又は媒体を概ね指す。コンピュータ可読記憶媒体の例として、搬送波などの伝送型媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ及びフロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(CD)又はデジタルビデオディスク(DVD))、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)、及び他の配信システムなどの非一時的媒体が挙げられるが、これらに限定されない。
【0086】
コンピュータプログラムを含有するコンピュータ可読記憶媒体は、コンピューティングシステム510にロードされてもよい。次いで、コンピュータ可読記憶媒体上に格納されたコンピュータプログラムのすべて又は一部は、システムメモリ516並びに/又はストレージデバイス532及び533の様々な部分の中に格納されてもよい。プロセッサ514によって実行される際、コンピューティングシステム510にロードされたコンピュータプログラムは、プロセッサ514に、本明細書に記載及び/又は図示される例示的な実施形態のうち1つ又は2つ以上の機能を実施させてもよく、かつ/又はこれを実施するための手段であってもよい。更に又は代替的に、本明細書に記載及び/又は図示される例示的な実施形態のうち1つ又は2つ以上は、ファームウェア及び/又はハードウェアに実施されてもよい。例えば、コンピューティングシステム510は、本明細書に開示される例示的な実施形態のうち1つ又は2つ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成されてもよい。
【0087】
図6は、クライアントシステム610、620、及び630、並びにサーバ640及び645をネットワーク650に連結することができる例示的なネットワークアーキテクチャ600のブロック図である。上で詳述されるように、ネットワークアーキテクチャ600のすべて又は一部は、単独で又は他の要素と組み合わせて、(
図3に示される工程のうち1つ又は2つ以上などの)本明細書で開示される工程のうち1つ又は2つ以上を実施してもよく、かつ/又はそれらを実施するための手段であってもよい。ネットワークアーキテクチャ600のすべて又は一部はまた、本開示に記述される他の工程及び特徴を実施するために使用され、かつ/又はこれらを実施するための手段であってもよい。
【0088】
クライアントシステム610、620、及び630は、
図5の例示的なコンピューティングシステム510などの任意のタイプ又は形態のコンピューティングデバイス又はシステムを概ね表す。同様に、サーバ640及び645は、様々なデータベースサービスを提供し、かつ/又は特定のソフトウェアアプリケーションを作動させるように構成されたアプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを概ね表す。ネットワーク650は、例えばイントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概ね表す。ある例において、クライアントシステム610、620、及び/若しくは630、並びに/又はサーバ640及び/若しくは645は、
図1からのシステム100のすべて又は一部を含み得る。
【0089】
図6に示されるように、1つ又は2つ以上のストレージデバイス660(1)〜(N)は、サーバ640に直接取り付けられてもよい。同様に、1つ又は2つ以上のストレージデバイス670(1)〜(N)は、サーバ645に直接取り付けられてもよい。ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)は、データ及び/又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態のストレージデバイス又は媒体を概ね表す。特定の実施形態において、ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)は、Network File System(NFS)、Server Message Block(SMB)、又はCommon Internet File System(CIFS)などの様々なプロトコルを使用して、サーバ640及び645と通信するように構成されたNetwork−Attached Storage(NAS)デバイスを表してもよい。
【0090】
サーバ640及び645はまた、Storage Area Network(SAN)ファブリック680に接続されてもよい。SANファブリック680は、複数のストレージデバイス間の通信を容易にすることができる任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを概ね表す。SANファブリック680は、サーバ640及び645と、複数のストレージデバイス690(1)〜(N)及び/又はインテリジェントなストレージアレイ695との間の通信を容易にすることができる。SANファブリック680はまた、ストレージデバイス690(1)〜(N)及びストレージアレイ695が、クライアントシステム610、620、及び630にローカルで取り付けられたデバイスかのように、ネットワーク650並びにサーバ640及び645を介して、クライアントシステム610、620、及び630と、デバイス690(1)〜(N)及び/又はインテリジェントなアレイ695との間の通信を容易にすることができる。ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)と同様に、ストレージデバイス690(1)〜(N)及びインテリジェントなストレージアレイ695は、データ及び/又は他のコンピュータ可読命令を格納することができる任意のタイプ又は形態のストレージデバイス又は媒体を概ね表す。
【0091】
特定の実施形態において、
図5の例示的なコンピューティングシステム510を参照して、
図5の通信インターフェース522などの通信インターフェースは、それぞれのクライアントシステム610、620、及び630とネットワーク650との間を接続するように使用されてもよい。クライアントシステム610、620、及び630は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ640又は645上の情報にアクセスすることが可能であり得る。かかるソフトウェアにより、クライアントシステム610、620、及び630は、サーバ640、サーバ645、ストレージデバイス660(1)〜(N)、ストレージデバイス670(1)〜(N)、ストレージデバイス690(1)〜(N)、又はインテリジェントなストレージアレイ695によってホスティングされたデータにアクセスすることができる。
図6は、データを送受信するための(インターネットなどの)ネットワークの使用を示しているが、本明細書に記載及び/又は図示される実施形態は、インターネット、又は任意の特定のネットワークベースの環境に限定されない。
【0092】
少なくとも1つの実施形態において、本明細書に開示される例示的な実施形態のうち1つ又は2つ以上のすべて又は一部は、コンピュータプログラムとしてコード化され、サーバ640、サーバ645、ストレージデバイス660(1)〜(N)、ストレージデバイス670(1)〜(N)、ストレージデバイス690(1)〜(N)、インテリジェントなストレージアレイ695、又はこれらの任意の組み合わせ上にロードされ、これらによって実行されてもよい。本明細書に開示される例示的な実施形態のうち1つ又は2つ以上のすべて又は一部はまた、コンピュータプログラムとしてコード化され、サーバ640に格納され、サーバ645によって作動し、ネットワーク650上でクライアントシステム610、620、及び630に配信されてもよい。
【0093】
上で詳述されるように、コンピューティングシステム510及び/又はネットワークアーキテクチャ600の1つ又は2つ以上の構成要素は、単独でか、又は他の要素と組み合わせてかのどちらか一方で、読み出し専用のシステムイメージ内のシステムレベルサービスを更新するための例示的な方法の1つ又は2つ以上の工程を実施してもよく、かつ/又は実施するための手段であってもよい。
【0094】
上述の開示は、特定のブロック図、フローチャート、及び例を使用して様々な実施形態を説明しているが、本明細書に記載及び/又は図示されるそれぞれのブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、個別にかつ/又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア(又はこれらの任意の組み合わせの)構成を使用して実装されてもよい。更に、多くの他のアーキテクチャが同じ機能性を完遂するように実施可能であるので、他の構成要素内に含有される構成要素の任意の開示は、本質的に例示的であるものと見なされるべきである。
【0095】
いくつかの例において、
図1の例示的なシステム100のすべて又は一部は、クラウドコンピューティング環境又はネットワークベースの環境の一部を表わしてもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他のリモートインターフェースを介してアクセス可能であってもよい。本明細書に記載される様々な機能は、リモートデスクトップの環境又は任意の他のクラウドベースのコンピューティング環境を介して提供されてもよい。
【0096】
様々な実施形態において、
図1の例示的なシステム100のすべて又は一部により、クラウドベースのコンピューティング環境内でのマルチテナンシーを容易にすることができる。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能の1つ又は2つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成してもよい。例えば、本明細書に記載されるソフトウェアモジュールのうち1つ又は2つ以上は、2つ以上のクライアント(例えば、顧客)がサーバ上で作動しているアプリケーションを共有することができるようにサーバをプログラムすることができる。このようにプログラムされたサーバは、複数の顧客(すなわち、テナント)の間で、アプリケーション、オペレーティングシステム、処理システム、及び/又はストレージシステムを共有することができる。本明細書に記載されるモジュールのうち1つ又は2つ以上はまた、ある顧客が別の顧客のデータ及び/又は設定情報にアクセスすることができないように顧客ごとに、マルチテナントアプリケーションのデータ及び/又は設定情報を分割してもよい。
【0097】
様々な実施形態によると、
図1の例示的なシステム100のすべて又は一部は、仮想環境内で実施されてもよい。例えば、本明細書に記載されるモジュール及び/又はデータは、仮想マシン内に存在してもよく、かつ/又は仮想マシン内で実行されてもよい。本明細書で使用する際、語句「仮想マシン」は、仮想マシンマネージャ(例えば、ハイパーバイザ)によってコンピューティングのハードウェアから抽出される任意のオペレーティングシステム環境を概ね指す。加えて又は代替的に、本明細書に記載されるモジュール及び/又はデータは、仮想化層内に存在し、かつ/又は仮想化層内で実行してもよい。本明細書で使用する際、語句「仮想化層」は、オペレーティングシステム環境に重なり、かつ/又はオペレーティングシステム環境から抽出される任意のデータ層及び/又はアプリケーション層を概ね指す。仮想化層は、下層にある基本のオペレーティングシステムの一部であるかのように仮想化層を提示するソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションにより、基本ファイルシステム及び/又はレジストリ内の場所に当初向けられていた要求を仮想化層内の場所に宛先変更することができる。
【0098】
いくつかの例において、
図1の例示的なシステム100のすべて又は一部は、モバイルコンピューティング環境の一部を表わしてもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子書籍リーダ、携帯情報端末、ウェアラブルコンピューティングデバイス(例えば、頭部装着ディスプレイ、スマートウォッチなどを備えたコンピューティングデバイス)などを含む広範なモバイルコンピューティングデバイスによって実施されてもよい。いくつかの例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間における1つのみのフォアグラウンドアプリケーションの提示、リモート管理機構、タッチスクリーン機構、(例えば、Global Positioning System、ジャイロスコープ、加速度計などによって提供される)場所及び移動データ、システムレベルの構成に対する変更を制限し、かつ/又は第三者のソフトウェアの能力を制限して、他のアプリケーションの行動を検査する制限されたプラットフォーム、(例えば、認可されたアプリケーションストアからの入手のみに限定するように)アプリケーションのインストールを制限するための制御などを含む、1つ又は2つ以上の個別の機構を有してもよい。本明細書に記載される様々な機能は、モバイルコンピューティング環境に対して提供されてもよく、かつ/又はモバイルコンピューティング環境と情報をやりとりしてもよい。
【0099】
更に、
図1の例示的なシステム100のすべて又は一部は、情報管理のための1つ又は2つ以上のシステムの一部を表してもよく、これと情報をやりとりしてもよく、これによって生成されたデータを消費してもよく、かつ/又はこれによって消費されたデータを生成してもよい。本明細書で使用する際、語句「情報管理」は、データの保護、組織化、及び/又は格納を指し得る。情報管理のためのシステムの例として、ストレージシステム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データサーチシステム、仮想化システムなどが挙げられるが、これらに限定されない。
【0100】
いくつかの実施形態において、
図1の例示的なシステム100のすべて又は一部は、情報セキュリティのための1つ又は2つ以上のシステムの一部を表してもよく、これによって保護されるデータを生成してもよく、かつ/又はこれと通信してもよい。本明細書で使用する際、語句「情報セキュリティ」は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例として、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子発見システムなどが挙げられるが、これらに限定されない。
【0101】
いくつかの例によると、
図1の例示的なシステム100のすべて又は一部は、エンドポイントのセキュリティのための1つ又は2つ以上のシステムの一部を表してもよく、これと通信してもよく、かつ/又はこれから保護されてもよい。本明細書で使用する際、語句「エンドポイントのセキュリティ」は、権限がないかつ/若しくは違法な使用、アクセス、及び/又は制御からのエンドポイントシステムの保護を指し得る。エンドポイントの保護のためのシステムの例として、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられるが、これらに限定されない。
【0102】
本明細書で説明及び/又は図示されるプロセスパラメータ及び工程の順序は、単なる例として与えられ、所望に応じて変更してもよい。例えば、本明細書に図示及び/又は記載される工程は特定の順序で示されてもよく、又は検討されてもよいが、これらの工程は、必ずしも図示又は検討される順序で実施される必要はない。本明細書に記載及び/又は図示される様々な例示的な方法はまた、本明細書に記載若しくは図示される工程のうち1つ若しくは2つ以上を省略してもよく、又は開示される工程に加えて更なる工程を含んでもよい。
【0103】
十分に機能的なコンピューティングシステムという状況で、様々な実施形態が本明細書において記載及び/又は図示されてきたが、これらの例示的な実施形態のうち1つ又は2つ以上は、実際に配信をするために使用される特定のタイプのコンピュータ可読記憶媒体にかかわらず、様々な形態のプログラム製品として配信されてもよい。本明細書で開示される実施形態はまた、特定のタスクを実施するソフトウェアモジュールを使用して実施されてもよい。これらのソフトウェアモジュールとして、スクリプト、バッチ、又はコンピュータ可読記憶媒体上若しくはコンピューティングシステム内に格納することが可能な他の実行可能ファイルを挙げることができる。いくつかの実施形態において、これらのソフトウェアモジュールは、本明細書で開示される例示的な実施形態のうち1つ又は2つ以上を実施するようにコンピューティングシステムを設定することができる。
【0104】
更に、本明細書に記載されるモジュールのうち1つ又は2つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を1つの形態から別の形態へと変換することができる。例えば、本明細書で列挙されるモジュールのうち1つ又は2つ以上は、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスを識別し、次いで、読み出し専用のシステムイメージ内に格納されたシステムレベルサービスの代わりに、書き込み可能なパーティション内の電子署名された更新を実行することによって、システムレベルサービスの更新されたバージョンにシステムレベルサービスを変換してもよい。加えて又は代替的に、本明細書で列挙されるモジュールのうち1つ又は2つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイス上にデータを格納し、かつ/又はそうでなければコンピューティングデバイスと情報をやりとりすることによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理コンピューティングデバイスの任意の他の部分を1つの形態から別の形態へ変換することができる。
【0105】
前述の記述は、他の当業者が本明細書に開示される例示的な実施形態の様々な態様を最良に利用することができるように提供されてきた。この例示的な記述は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの変更例及び変形例が可能である。本明細書で開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範囲を判断する場合、添付の特許請求の範囲及びこれらの等価物を参照するべきである。
【0106】
別途記載のない限り、用語「に接続される」及び「に連結される」(並びにこれらの派生語)は、本明細書及び特許請求の範囲で使用される際、直接的接続と間接的接続(すなわち、他の要素又は構成要素を介した)との両方を許容するものとして解釈することができる。更に、用語「1つの(a)」又は「1つの(an)」は、本明細書及び特許請求の範囲で使用される際、「のうち少なくとも1つ」を意味するものとして解釈することができる。最後に、簡潔にするため、用語「含む」及び「有する」(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用される際、単語「備える」と互換性があり、同じ意味を有する。