(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-01
(45)【発行日】2022-11-10
(54)【発明の名称】ハードウェアを使用してオペレーティング・システム構成をセキュアにすること
(51)【国際特許分類】
G06F 21/57 20130101AFI20221102BHJP
G06F 9/4401 20180101ALI20221102BHJP
【FI】
G06F21/57 350
G06F9/4401
(21)【出願番号】P 2019568055
(86)(22)【出願日】2018-06-12
(86)【国際出願番号】 IB2018054226
(87)【国際公開番号】W WO2018229640
(87)【国際公開日】2018-12-20
【審査請求日】2020-11-30
(32)【優先日】2017-06-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】カラハン、パトリック、ジョセフ
【審査官】小林 秀和
(56)【参考文献】
【文献】特表2015-537322(JP,A)
【文献】特開2015-118454(JP,A)
【文献】特開2016-021220(JP,A)
【文献】特開2015-102989(JP,A)
【文献】特開平10-336170(JP,A)
【文献】特開2011-138298(JP,A)
【文献】米国特許出願公開第2016/0012232(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 9/4401
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムが、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、
前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記認証することに応答して、前記オペレーティング・システム構成をブートすることと
を実行する、方法。
【請求項2】
前記信号を受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記デジタル鍵が対応すると判断すること
をさらに含む、請求項1に記載の方法。
【請求項3】
前記信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことをさらに含み、前記保護メモリは、前記コンピューティング・システムがブート前状態にある間だけ書込み可能である、請求項1または請求項2に記載の方法。
【請求項4】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行コード整合性を有するソフトウェア・アプリケーションによってのみ書込み可能である、請求項3に記載の方法。
【請求項5】
前記認証することが、前記保護メモリから前記デジタル鍵を取得することと、前記取得したデジタル鍵を使用して、前記オペレーティング・システム構成のデジタル署名を検証することと、を含む、請求項3または請求項4に記載の方法。
【請求項6】
前記オペレーティング・システム構成が、
オペレーティング・システム・カーネルと、
前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
を含む、請求項1~請求項5のいずれか一項に記載の方法。
【請求項7】
前記パラメータのセットが、前記オペレーティング・システム・カーネルの実行可能コードにコンパイルされる、請求項6に記載の方法。
【請求項8】
前記オペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によってデジタル的に署名され、
前記デジタル鍵が、前記公開鍵と秘密鍵のペアの公開鍵である、
請求項1~請求項7のいずれか一項に記載の方法。
【請求項9】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
前記プログラム命令が、請求項1~8のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
【請求項10】
コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項1~8のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
【請求項11】
請求項10に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。
【請求項12】
コンピューティング・システムが、
前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、
公開鍵と秘密鍵のペアの秘密鍵によって署名され、
前記第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされたオペレーティング・システム・カーネルを少なくとも含む、
受け取ることと、
前記リクエストを受け取ることに応答して、前記秘密鍵に対応する公開鍵を前記コンピューティング・システムの不揮発性メモリに格納することと、
前記コンピューティング・システムのブート前状態の間に、信頼できるアプリケーションを実行することによって、
格納された前記公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
前記コンピューティング・システムへのローカル・インターフェースから、前記受け取ったリクエストを確認する信号を受け取ること、
前記信号が前記リクエストを確認するとき、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように前記保護メモリにアクセスできるブートローダを実行すること
を行うことと
を実行する、方法。
【請求項13】
前記パラメータのセットが、前記第2のオペレーティング・システム構成の下でロード可能なソフトウェア・モジュールを決定する、請求項12に記載の方法。
【請求項14】
前記パラメータのセットが、前記アクセス制御ポリシの実施を決定する、請求項12または請求項13に記載の方法。
【請求項15】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行可能コード整合性を有する前記信頼できるアプリケーションを含むアプリケーションのセットによる書込みだけが可能である、請求項12~請求項14のいずれか一項に記載の方法。
【請求項16】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
前記プログラム命令が、請求項12~15のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
【請求項17】
コンピューティング・システムが、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成を
ロードするリクエストを受け取ることと、
前記オペレーティング・システム構成を認証するためのデジタル鍵を格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに連結されたユーザ・インターフェース端末から受け取ることと、
前記認証することおよび前記確認する信号を受け取ることに応答して、前記オペレーティング・システム構成をブートすることと
を実行する、方法。
【請求項18】
ユーザ・インターフェース端末に連結されると共にメモリおよびプロセッサを有するコンピューティング・システムであって、
前記メモリが、プログラム命令を含み、
前記プログラム命令が、前記プロセッサに実行されると、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成を
ロードするリクエストを受け取ることと、
前記オペレーティング・システム構成を認証するためのデジタル鍵を格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記受け取ったリクエストを確認する信号を、前記ユーザ・インターフェース端末から受け取ることと、
前記認証することおよび前記確認する信号を受け取ることに応答して、前記オペレーティング・システム構成をブートすることと
を前記コンピューティング・システムに実行させる、コンピューティング・システム。
【請求項19】
コンピューティング・システムが、
前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によって署名されている、受け取ることと、
前記コンピューティング・システムのブート前状態の間に、
前記コンピューティング・システムに連結されたユーザ・インターフェース端末から、前記受け取ったリクエストを確認する信号を受け取ること、
前記リクエストを確認する信号を受け取ることに応答して、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された前記公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように、前記保護メモリにアクセスできるブートローダを実行すること
を行うことと
を実行する、方法。
【請求項20】
ユーザ・インターフェース端末に連結されると共にメモリおよびプロセッサを有するコンピューティング・システムであって、
前記メモリが、プログラム命令を含み、
前記プログラム命令が、前記プロセッサに実行されると、
前記コンピューティング・システムにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第2のオペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によって署名されている、受け取ることと、
前記コンピューティング・システムのブート前状態の間に、
前記ユーザ・インターフェース端末から、前記受け取ったリクエストを確認する信号を受け取ること、
前記リクエストを確認する信号を受け取ることに応答して、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された前記公開鍵を使用して前記第2のオペレーティング・システム構成を認証し、前記認証することに応答して前記第2のオペレーティング・システム構成をブートするように、前記保護メモリにアクセスできるブートローダを実行すること
を行うことと
を前記コンピューティング・システムに実行させる、コンピューティング・システム。
【請求項21】
コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項12~15、請求項17および請求項19のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
【請求項22】
請求項21に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関する。より詳細には、本開示は、ハードウェアを使用してコンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。
【背景技術】
【0002】
コンピューティング・システムは、ファイル・システムのオブジェクトに対してユーザが行えるアクセスを制限することができるアクセス制御ポリシを有する。アクセス制御ポリシは、例えば、ユーザが修正できるファイルを制約することができ、またこれらは、所与のオペレーティング・システムのモジュールをユーザがロードするのを禁止することができる。アクセス制御ポリシは、コンピューティング・システムにおいて実行するオペレーティング・システムの構成によって実施されることが可能である。オペレーティング・システム構成は、カーネルを使用して、コンピューティング・システムをブートしてユーザ・アプリケーションを実行するのに適した状態にする前に、オペレーティング・システム・カーネルの所与の構成に対応するカーネル・パラメータを設定することによって決定されることが可能である。所与のオペレーティング・システム構成を使用してコンピューティング・システムがブートされると、構成によって実施されるアクセス制御ポリシは、事実上、コンピューティング・システムによって許可される場合、異なるオペレーティング・システム構成の下でコンピューティング・システムがブートされるまで残る可能性がある。
【0003】
コンピューティング・システムの中には、様々なオペレーティング・システム構成のセットの中からユーザが選べるようにするものもある。これらのコンピューティング・システムに対する有効アカウントを有するユーザは、現在ブートされている構成とは異なるアクセス制御ポリシを有するオペレーティング・システム構成を選択してブートすることによって、コンピューティング・システムのアクセス制御ポリシ(またはアクセス制御ポリシの実施)を変更することができる。
【0004】
アカウント資格証明書(例えばユーザ名およびパスワード)を使用してコンピューティング・システムにユーザがリモートにアクセスすることは一般的である。コンピューティング・システムにリモートにアクセスするユーザは通常、ローカル端末からコンピューティング・システムにアクセスするユーザと同じアクセス制御ポリシに従っている。コンピューティング・システムの権限を与えられたユーザは結果として、前述の処理を用いて、コンピューティング・システムのアクセス制御ポリシをリモートに変更することができる。しかし、この管理体制の1つのアーチファクトは、コンピューティング・システムへの、権限を与えられたユーザのアクセス資格証明書を入手することができる、権限のないユーザが、コンピューティング・システムのアクセス制御ポリシをリモートに変更すること、場合によっては、コンピューティング・システムに対する、権限のないユーザのアクセス権を引き上げることもできるというものである。
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述を考慮すると、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証するための技法が必要である。
【課題を解決するための手段】
【0006】
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証する方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
【0007】
本開示の実施形態によれば、方法は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、コンピューティング・システムを再起動することをさらに含む。コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、を含む。
【0008】
本開示の様々な実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体と、を含む。プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。プログラム命令は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。コンピューティング・システムは、その後、再起動される。
【0009】
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、プログラム命令は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ること、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証すること、および認証することに応答して、オペレーティング・システム構成をブートすること、をシステムに行わせるようにプロセッサによってさらに実行可能である。
【0010】
様々な実施形態が、コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラム製品を対象とする。コンピュータ・プログラム製品は、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含み、コンピュータ可読ストレージ媒体は、一時的な信号ではなく、プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む方法を行うことをコンピューティング・システムに行わせるようにプロセッサによって実行可能である。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、その後、コンピューティング・システムを再起動することを含む。
【0011】
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、をさらに含む。
【0012】
本開示の代替実施形態によれば、方法は、コンピューティング・デバイスにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることを含む。第2のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。方法は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをさらに含む。方法は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、コンピューティング・デバイスへのローカル・インターフェースから、受け取ったリクエストを確認する信号を受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第2のオペレーティング・システムを認証すること、および認証することに応答して第2のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをさらに含む。
【0013】
本開示の代替実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含む。プログラム命令は、コンピューティング・デバイスにおいて第1のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第2のオペレーティング・システム構成を実行するリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。第2のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第2のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。
【0014】
プログラム命令は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。プログラム命令は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号をユーザ・インターフェース端末から受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第2のオペレーティング・システムを認証すること、および認証することに応答して第2のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをシステムに行わせるようにプロセッサによってさらに実行可能である。
【0015】
上記の概要は、本開示のそれぞれの示された実施形態またはあらゆる実装形態を説明することを意図するものではない。
【0016】
本出願に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。これらは、本開示の実施形態を示し、説明と共に、本開示の原理を説明するのに役立つ。図面は、一定の実施形態の例証にすぎず、本開示を限定するものではない。
【図面の簡単な説明】
【0017】
【
図1】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。
【
図2】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャートである。
【
図3】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステムの例のブロック図である。
【
図4】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。
【
図5】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用図である。
【
図6】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピュータ・システムのブロック図である。
【発明を実施するための形態】
【0018】
本発明は、様々な修正および代替形態に対応可能であるが、これらの細目は、図面に例として示されており、詳細に説明されることになる。しかし、趣旨は、説明される特定の実施形態に本発明を限定するものではないということを理解されたい。反対に、趣旨は、本発明の思想および範囲に含まれる全ての修正、均等物、および代替を含めることである。
【0019】
本開示の態様は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関し、より詳細には、態様は、ハードウェアを使用してブートする前に、コンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。本開示は、このような適用に必ずしも限定されないが、本開示の様々な態様は、本背景を使用する様々な例の議論を通じて正しく認識されることが可能である。
【0020】
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいてブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証できる方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
【0021】
本開示の実施形態は、ブート前環境において、特に、コンピューティング・システムに格納されたオペレーティング・システム構成のセットから選択されたオペレーティング・システム構成の真正性を保証するために、セキュア・ブート技法が、本明細書で説明される技法を使用して拡張されるか、そうでなければ拡大されることが可能であるという認識に基づく。統合拡張可能ファームウェア・インターフェース・セキュア・ブート(Unified Extensible Firmware Interface Secure Boot)(以下、「UEFIセキュア・ブート」)などのセキュア・ブート技法は、オペレーティング・システムをブートする前に、保護されていないコンピュータ実行可能コード(以下、「コード」)の実行を防ぐことによって、ブート前環境におけるコンピューティング・システムのセキュリティを向上させる。1つの例において、セキュア・ブート技法は、コンピューティング・システムの製造中に、コンピューティング・システムの保護された不揮発性メモリ内の変数のセットに、非対称鍵のペア(例えば公開鍵と秘密鍵のペア)のセットのうちの公開鍵のセット(例えば1つまたは複数)を格納する。コンピューティング・システムにおいて実行することを承認される(または権限を与えられる)各アプリケーション(例えばコンピュータ・プログラム)は、格納された公開鍵のセットの中に対応する公開鍵を有する秘密鍵を使用して署名される。コンピューティング・システムがブート前状態にある間、アプリケーションを実行する前に、信頼できるアプリケーションは、格納された公開鍵のセット内の公開鍵のうちの1つに対応する秘密鍵でアプリケーションがデジタル的に署名されていることを検証することによって、実行されることになるアプリケーションの実行可能コードの整合性を検証する。このセキュア・ブート技法に関する1つの問題は、権限を与えられた署名者のセット(または秘密鍵のセット)が、コンピューティング・システムの製造より前に、または同時に決定されるというものである。新しいオペレーティング・システムをセキュアにできるが、コンピューティング・システムは、例えば、オペレーティング・システムをコンピューティング・システムにディプロイする前に、所定の権限を与えられた署名者のセットのうちの1つが、オペレーティング・システムにデジタル的に署名することを必要とし得る。
【0022】
セキュア・ブート技法は、コンピューティング・システムにおいてブートされ得るアプリケーションを認証するための追加の公開鍵をエンド・ユーザが追加できるようにするための信頼できるアプリケーションのセットを提供することができる。UEFIセキュア・ブートは、例えば、製造中に設定された公開鍵のセットにユーザが公開鍵を追加できるようにするための「mokutil」、「shim」、および「grub」アプリケーションを提供する。新しい公開鍵(例えば、コンピューティング・システムに追加されることになる新しいオペレーティング・システム・カーネル・イメージに対応する)が追加されることになるコンピューティング・システムにおいてブートされるオペレーティング・システムにログインしたユーザは、mokutilを実行して新しい公開鍵を設定する。mokutilアプリケーションは、コンピューティング・システムが次にブートされる時に、shimによってのみアクセスされることが可能な不揮発性メモリに新しい公開鍵を書き込む。shimアプリケーションは、例えばコンピューティング・システムの保護メモリに組み込まれた信頼できるアプリケーションであることが可能である。さらに、コンピューティング・システムは、shimが、コンピューティング・システムが再起動された後に実行される最初のアプリケーションであることを保証するように構成されることが可能である。コンピューティング・システムが次に再起動されるとき、mokutilによる更新に続いて、UEFIセキュア・ブート・システムは、shimアプリケーションを検証して実行する。shimアプリケーションは次に、mokutilによって書かれた不揮発性メモリの領域を読み込み、新しい公開鍵が格納されたかどうかを判断する。shimは、新しい公開鍵を検出することに応答して、格納された公開鍵のセットまたはデータベースに新しい公開鍵がコミットされるべきかどうかを確認するように、ローカル・コンソールにおいてユーザに促すことができる。shimは、ユーザが肯定確認を行わない場合、新しい公開鍵を消去(または削除)する。一方、shimは、ユーザが肯定確認を行うと、shimアプリケーションへのコールを介して、grubによって排他的に使用される不揮発性メモリの別の領域(例えば受け入れられた公開鍵全てを格納するデータベース)に新しい公開鍵を移す。新しい公開鍵はその後、新しいカーネル・イメージを認証するのに利用可能である。
【0023】
オペレーティング・システム・カーネルをセキュアにブートするために、shimは、任意の新しい鍵をコンピューティング・システムにコミットした後、grubを認証して実行する。grubは、grubの構成ファイルを使用して、どのカーネル・イメージをブートすべきかを判断する。ブートすべきオペレーティング・システム・カーネルを識別した後、grubは、shimアプリケーションをコールして、コンピューティング・システムの公開鍵データベースに格納された公開鍵のうちの1つに対応する秘密鍵によってカーネル・イメージが署名されていることを検証することによって、カーネル・イメージを認証してブートする。ブートされると、オペレーティング・システム・カーネルは、コンピューティング・システムにカーネル・モジュールがロードされることをリクエストされるときに、カーネル・モジュールを同様に認証することができる。
【0024】
これらのセキュア・ブート技法は、ユーザが、オペレーティング・システムの正しく署名されたバージョンにアクセスでき、オペレーティング・システムに署名するために使用された秘密鍵に対応する公開鍵を維持する場合、コンピューティング・システムに新しいオペレーティング・システムをユーザがロードすることを可能にすることができる。しかし既知のセキュア・ブート技法は、コンピューティング・システムにおいてブートするために、コンピューティング・システムに格納されたオペレーティング・システム構成のセットからオペレーティング・システム構成をユーザが選択できるようにはしない。さらに、既知のセキュア・ブート技法は、修正も、そうでなければ改ざんも行われることなく、選択されたオペレーティング・システム構成がブートされることをコンピューティング・システムが保証できるようにしない。
【0025】
本開示の実施形態は、非対称鍵のペアの秘密鍵によってデジタル署名され、システムに格納された1つ以上のオペレーティング・システム構成から成るセットから1つのオペレーティング・システム構成をブートするリクエストを受け取ることと、公開鍵の保護されたデータベースを更新するように構成された信頼できるアプリケーションに非対称鍵のペアの公開鍵を自動的に提供することと、コンピューティング・システムにユーザが物理的に存在することを利用して、オペレーティング・システム構成をロードするリクエストを検証することと、オペレーティング・システム構成を認証してブートすることと、によって、既知のセキュア・ブート技法を改善する方法、システム、およびコンピュータ・プログラム製品を提供する。
【0026】
本明細書で使用されるように、信頼できるアプリケーションは、その実行可能コードが認証されているか、そうでなければ、実行可能コードを改変する権限のない者によって改変されないことが保証されているアプリケーションである。実行可能コードは、既知のデジタル署名および検証技法を使用して認証されることが可能である。実行可能コードは、例えば、非対称鍵のペアの秘密鍵を使用してコードを暗号化することによって署名されることが可能である。コードの整合性は、その後、非対称鍵のペアの公開鍵を使用して、署名されたコードの署名を検証することによって認証されることが可能である。例えば、署名されたコードへの署名後の変更により、署名されたコードの署名を検証できないとき、認証は失敗する。
【0027】
本明細書で使用されるように、鍵データベースは、デジタル鍵(例えば非対称鍵のペアの公開鍵)のセットを格納するように構成された保護メモリの領域であることが可能である。保護メモリは、信頼できるアプリケーション、またはアプリケーションの選択されたグループに対してのみアクセス可能な(例えば読込み可能または書込み可能な)メモリであることが可能である。
【0028】
本明細書で使用されるように、コンピューティング・システムのブート前状態は、コンピューティング・システムが再起動した後、かつコンピューティング・システムがオペレーティング・システムをブートする前の、コンピューティング・システムの状態であることが可能である。オペレーティング・システムのブート状態は、オペレーティング・システムがコンピューティング・システムにおいてブートされた後のコンピューティング・システムの状態である。
【0029】
本明細書で使用されるように、オペレーティング・システム構成は、ブート可能なオペレーティング・システム・カーネル・イメージ(以下、「オペレーティング・システム・カーネル」または「カーネル」)、および1つまたは複数のカーネル・パラメータ値(例えばパラメータ値)の関連付けられたセットを有するデータ・オブジェクトであることが可能である。いくつかの実施形態において、カーネル・パラメータ値は、ハードコードされた(例えばオペレーティング・システム・カーネルの実行可能コードにコンパイルされた)固定コマンド・ライン・パラメータ値であっても良い。カーネル・パラメータ値をハードコードすることは、オペレーティング・システム・カーネルがコンパイルされるときに、1つまたは複数のコンパイラ・オプションを使用してコンパイラにパラメータ値を設定することを含むことができる。カーネル・パラメータ値をハードコードすることは、ハードコードされたカーネル・パラメータ値をブートローダまたは他のアプリケーションがオーバーライドするのを防ぐために、コンパイル・オプションを使用して、オペレーティング・システム・カーネルをコンパイルすることをさらに含むことができる。一定の実施形態において、カーネル・パラメータ値は、オペレーティング・システム・カーネルとは別のデータ・オブジェクトにおいて設定されることが可能である。
【0030】
データ・オブジェクトは、本明細書で使用されるように、単一のカーネル・イメージであることが可能である。データ・オブジェクトは、オペレーティング・システム・カーネル、および追加のデータ・オブジェクトのセットを有するデータ構造であることも可能である。オペレーティング・システムに署名することは、データ・オブジェクトまたはデータ・オブジェクトの各構成要素あるいはその両方に署名することを含むことができる。
【0031】
カーネル・パラメータがハードコードされるコンピューティング・システムにおいてオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルをブートローダに渡すことと、コンピューティング・システムにおいてオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。同様に、オペレーティング・システム・カーネルとは別のデータ・オブジェクトに1つまたは複数のカーネル・パラメータ値が格納されるオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルと1つまたは複数のカーネル・パラメータ値の両方をブートローダに渡すことと、1つまたは複数のカーネル・パラメータ値を有するオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。
【0032】
所与のオペレーティング・システム・カーネルについて、オペレーティング・システム構成は、オペレーティング・システム構成の、アクセス制御ポリシの実施によって特徴付けられることが可能である。これは、構成のセキュリティ・レベルと呼ばれることが可能である。コンピューティング・システムは、例えば、アクセス制御ポリシを実施するための、特に、SELinux(Security Enhanced Linux)モジュールと共にインストールされたLinux(登録商標)カーネルのディストリビューションを有することができる。例を続けると、コンピューティング・システムは、低、中、および高という、オペレーティング・システム構成の3つのタイプ(例えばセキュリティ・レベル)をサポートするように構成されることも可能である。低構成を使用してブートされたLinuxカーネルは、SELinuxを無効にして、アクセス制御ポリシの実施を防ぐことができる一方で、中構成を使用してブートされたLinuxカーネルは、パーミッシブ・モードまたはデバッグ・モードの状態にあるSELinuxが、アクセス制御ポリシを実施するのではなく監視することを可能にすることができる。さらに、高構成を使用してブートされたLinuxカーネルは、コンピューティング・システムがブートされる間、強制アクセス制御ポリシを、実施モードの状態にあるSELinuxが実施することを可能にすることができる。この例のコンピューティング・システムは、したがって、3つの別個のオペレーティング・システム構成をサポートすることができ、各構成は、例えば、特定のアクセス・ポリシの実施レベル、すなわちセキュリティ・レベルを可能にするようにセットされたカーネル・パラメータ値でコンパイルされた、Linuxカーネル、および関連付けられたSELinuxモジュールを有する。
【0033】
ここから図を参照すると、
図1は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート100を示している。本明細書で説明されるように、フローチャート100の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピュータ305(
図3)またはコンピューティング・デバイス600(
図6)であることが可能である。一定の実施形態において、コンピューティング・システムは、1つまたは複数の計算ノードまたはコンピューティング・デバイスを含むことができる。フローチャート100に図示された様々な動作は、コンピューティング・システムのソフトウェア、ファームウェア、およびハードウェア構成要素を使用して実行されることが可能である。コンピューティング・システム全体を含め、これらの構成要素は、本明細書において、まとめてコンピューティング・システムと呼ばれる。フローチャート100に示される各動作は、コンピューティング・システムによって、または1つもしくは複数のイベント(例えばユーザ・アクションまたはリクエスト)に応答して、自動的に実行されることが可能である。
【0034】
コンピューティング・システムは動作105を実行し、オペレーティング・システム構成をブートするリクエストを受け取ることができる。リクエストは、リモート・ユーザ・インターフェース端末(例えば、例えばデータ通信ネットワークを通じてコンピューティング・システムに連結されたユーザ・インターフェース端末)から受け取られることが可能である。リクエストは、ローカル・ユーザ・インターフェース端末(例えば、コンピューティング・システムに物理的に接続されたユーザ・インターフェース端末)から受け取られることも可能である。ローカル・ユーザ・インターフェース端末を使用して、リクエストを出す、またはコンピューティング・システムと相互作用するユーザは、コンピューティング・システムの物理的な存在下にいること、またはコンピューティング・システムを物理的に保有しているとユーザが仮定され得るほどコンピューティング・システムに極めて接近していること、を要求される。
【0035】
本明細書で説明されるように、コンピューティング・システムは、動作110を実行し、リクエストされたオペレーティング・システム構成を認証するためのデジタル鍵を格納することができる。デジタル鍵は、リクエストされたオペレーティング・システム構成を署名するために個々の秘密鍵が使用された、非対称鍵のペアの公開鍵であることが可能である。実施形態において、デジタル鍵は、不揮発性メモリに格納されることが可能である。不揮発性メモリは、永続性ランダム・アクセス・メモリ(RAM)、フラッシュ・メモリ、システム・ストレージを含むことができるがこれらに限定されない。いくつかの実施形態において、コンピューティング・システムは、再起動後に、デジタル鍵があるか不揮発性メモリを自動的にチェックするように構成されることが可能である。
【0036】
コンピューティング・システムは動作115を実行し、コンピューティング・システムを再起動させることができる。いくつかの実施形態において、コンピューティング・システムは、動作110の実行に応答して自動的に再起動することができる。様々な実施形態において、コンピューティング・システムは、ユーザ・インターフェース端末から、再起動させるリクエストを受け取ることに応答して、再起動することができる。
【0037】
コンピューティング・システムがブート前状態にある間、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するために、ローカル・ユーザ・インターフェース端末においてリクエストをユーザに送信することができる。コンピューティング・システムは次に動作120を実行し、リクエストされたオペレーティング・システム構成をブートするリクエストを確認する信号を、ローカル・ユーザ・インターフェース端末から受け取ることができる。動作120を実行することは、コンピューティング・システムにおいてブートされるオペレーティング・システム構成の変更(例えば、アクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルへの起こり得る変更)をリクエストしているユーザが、コンピューティング・システムに物理的にアクセスできることを保証することができる。この動作は、コンピューティング・システムのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルを、権限のないユーザがリモートに変更するという可能性を制限することができる。
【0038】
まだブート前状態にある間、コンピューティング・システムは動作125を実行し、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。コンピューティング・システムは次に動作130を実行し、リクエストされたオペレーティング・システム構成をブートすることができる。
【0039】
いくつかの実施形態において、コンピューティング・システムは、再起動することに応答して、動作110の中で格納されたデジタル鍵が、コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に対応することを検証する(例えば実証する)か、判断することができる。この検証は、コンピューティング・システムに格納され、実行する権限を与えられたオペレーティング・システム構成が、デジタル鍵に対応する秘密鍵によって署名されたかどうかを判断することを含むことができる。検証動作は、既知のまたは承認された構成だけがブートするために考慮されるということを保証することによってブート前環境、およびブートされたシステムの整合性を保証するのに役立つ。
【0040】
いくつかの実施形態において、コンピューティング・システムは、動作120の中で確認を受け取ることに応答して、デジタル鍵を保護メモリに移すことができる。ストレージ・システムは、例えば、特定の信頼できる(例えば、セキュアな、または認証された)アプリケーションによってのみ書込み可能な鍵データベースまたはリポジトリにデジタル鍵を移すことができる。これらの実施形態は、リクエストされたオペレーティング・システム構成の有効性および真正性を、信頼できるアプリケーションが検証できるようにするために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。これはまた、ローカル・ユーザ・インターフェース端末にユーザがアクセスできることを必要とせずに、再起動後に、リクエストされたオペレーティング・システム構成をコンピューティング・システムがブートできるようにする。
【0041】
いくつかの実施形態において、保護メモリ(例えば鍵データベース)は、(例えば保護メモリに格納されたデジタル鍵を使用して)コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証されたソフトウェア・アプリケーションによる書込みだけが可能である。これらの実施形態は、新しく、場合によっては不正な鍵をコンピューティング・システムに追加できる当事者の数を制限することによって、リクエストされたオペレーティング・システム構成の真正性を強化するといった利点をもたらすことができる。
【0042】
いくつかの実施形態において、リクエストされたオペレーティング・システム構成を認証することは、保護メモリからデジタル鍵を取得することと、取得した鍵を使用して、リクエストされたオペレーティング・システム構成の署名を検証することと、を含む。これらの実施形態は、構成がブートされる前に、オペレーティング・システム構成が修正されていないことを保証するために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。
【0043】
様々な実施形態によれば、動作105の中でリクエストされたオペレーティング・システム構成は、オペレーティング・システム・カーネル、およびオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベル(例えばアクセス制御ポリシ)を強化するためのカーネル・パラメータ値のセットを含むことができる。一定の実施形態において、本明細書で説明されるように、カーネル・パラメータ値のセットは、オペレーティング・システム・カーネルの実行可能コードにコンパイルされる。
【0044】
図2は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャート200を示している。本明細書で説明されるように、フローチャート200の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。フローチャート200に示された各動作は、コンピューティング・システムによって、または1つもしくは複数のイベント(例えばユーザ・アクションもしくはリクエスト)に応答して、自動的に実行されることが可能である。
【0045】
コンピューティング・システムは、例えば、コンピューティング・システムにおいてブートできるオペレーティング・システム構成のセットを生成することによって動作205を実行することができる。オペレーティング・システム構成は、カーネル・パラメータ値のセットと共にオペレーティング・システム・カーネルを含むことができる。カーネル・パラメータ値は、関連付けられたオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル(すなわちセキュリティ・レベル)を構成することができる。各構成は、さらに、例えば、オペレーティング・システム構成の実行可能コードの整合性を保証するために、非対称の公開鍵と秘密鍵のペアの異なる秘密鍵で、デジタル的に署名されることが可能である。各秘密鍵に対応する公開鍵は、コンピューティング・システムに格納されることも可能である。
【0046】
コンピューティング・システムは、動作210を実行して、選択されたオペレーティング・システム構成をブートするリクエスト(例えばブート・リクエスト)を受け取ることができる。本明細書で説明されるように、リクエストは、リモート・ユーザ・インターフェース端末またはローカル・ユーザ・インターフェース端末から受け取られることが可能である。
【0047】
動作215において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成に署名するために使用された秘密鍵と関連付けられたデジタル鍵(例えば公開鍵)を格納することができる。本明細書で説明されるように、デジタル鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピューティング・システムが次に再起動されるときに、リクエストされたオペレーティング・システム構成をブートすることをブートローダに行わせるために、ブートローダの構成(例えば構成ファイル)をさらに更新することができる。
【0048】
動作220において、コンピューティング・システムは、再起動すること(例えばリブートすること)ができる。本明細書で説明されるように、コンピューティング・システムは次に、コンピューティング・システムがブート前状態にある間、以下の動作を実行することができる。
【0049】
動作225において、本明細書で説明されるように、コンピューティング・システムは、デジタル鍵を検証して、コンピューティング・システムにおいてブートする権限を与えられている既知の(例えば格納済みの)オペレーティング・システム構成にデジタル鍵が対応するかどうかを判断することができる。コンピューティング・システムは、公開鍵が検証されると動作230に進むことができ、また一方で、コンピューティング・システムは、リクエストされたオペレーティング・システム構成を検証できないと判断することに応答して、動作250に進むことができる。
【0050】
動作230において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認することができる。動作230を実行することは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末において、リクエストしているユーザに促すことを含むことができる。コンピューティング・システムは次に、ローカル・ユーザ・インターフェース端末から確認信号またはメッセージを受け取ることができる。受け取った確認信号は、電圧、またはデジタル文字のセットを含む任意の電子信号を含むことができる。受け取った確認信号は、肯定確認または否定確認であることが可能である。受け取った確認信号が肯定確認であるとき、コンピューティング・システムは動作235に続くことができるが、受け取った確認信号が否定確認であるとき、コンピューティング・システムは動作250に進むことができる。さらに、本明細書で説明されるように、コンピューティング・システムは、肯定確認を受け取ることに応答して、(例えば動作235を実行する代わりに)デジタル鍵を保護メモリに移すことができる。
【0051】
動作235において、本明細書で説明されるように、コンピューティング・システムは、コンピューティング・システムの保護メモリにデジタル鍵を移すことができる。いくつかの実施形態において、コンピューティング・システムは、動作230を実行する前に、動作235を実行することができる。
【0052】
動作240において、本明細書で説明されるように、コンピューティング・システムは、保護メモリからデジタル鍵を取得するか読み込み、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。リクエストされたオペレーティング・システム構成を認証することは、リクエストされたオペレーティング・システム構成が秘密鍵を使用して署名された後、リクエストされたオペレーティング・システム構成が修正されなかったと判断することを含むことができる。リクエストされたオペレーティング・システム構成が正当なものとして認証された場合には、コンピューティング・システムは動作245に続くことができるが、リクエストされたオペレーティング・システム構成が正当なものとして認証されない場合には、コンピューティング・システムは動作250に続くことができる。
【0053】
動作245において、本明細書で説明されるように、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートすることができる。コンピューティング・システムは、動作255においてフローチャート200の動作を終えることができる。
【0054】
動作250において、コンピューティング・システムは、不揮発性メモリまたは保護メモリあるいはその両方からデジタル鍵を削除または消去することができる。コンピューティング・システムは次に、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することができる。いくつかの実施形態において、他の動作(例えば、動作225、動作230、および動作240)から動作250に達することに応答して、コンピューティング・システムは、秘密鍵を削除しなくともよい。これらの実施形態では、コンピューティング・システムは、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することによってブート処理を中止することができる。
【0055】
図3は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステム300の例のブロック図を示している。本明細書で説明されるように、システム300は、本開示の動作を実行するように構成されたコンピューティング・システムであることが可能である。システム300は、コンピューティング・デバイス305およびローカル・ユーザ・インターフェース380(例えばローカル・ユーザ・インターフェース端末)を含む。いくつかの実施形態において、システム300は、リモート・ユーザ・インターフェース370(例えばリモート・ユーザ・インターフェース端末)およびデータ通信ネットワーク375を含むことができる。
【0056】
コンピューティング・デバイス305は、プロセッサ310、メモリ315、ストレージ320、およびセキュリティ構成要素325を含むことができる。本明細書で説明されるように、コンピューティング・デバイス305は、選択されたオペレーティング・システム構成をセキュアにロードするように構成されたコンピューティング・デバイスであることが可能である。プロセッサ310は、メモリ315にロードされる、ユーザ・アプリケーション330および信頼できるアプリケーション360を含むアプリケーションを実行することができる。
【0057】
ストレージ320は、ストレージ・デバイス628(
図6)などのストレージ・デバイスであることが可能である。ストレージ320は、コンピューティング・デバイス305における実行のためのオペレーティング・システム構成を含むアプリケーションを格納することができる。ストレージ・デバイスは、例えば、ユーザ・アプリケーション330、ブートローダ335、オペレーティング・システム構成A340、およびオペレーティング・システム構成B345を格納することができる。
【0058】
ユーザ・アプリケーション330は、コンピューティング・デバイス305にログインしたユーザによって実行可能なソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ユーザ・アプリケーション330は、
図4において論じられるユーザ・アプリケーションと実質的に同じであることが可能であり、同じ動作を実行することができる。ユーザ・アプリケーション330は、例えば、コンピューティング・デバイス305におけるオペレーティング・システム構成を変更するリクエストをユーザが送信できるようにするために実行されることが可能である。いくつかの実施形態において、本明細書で説明されるように、ユーザ・アプリケーション330は、ブートローダ335の構成を更新するために実行されることが可能である。
【0059】
ブートローダ335は、オペレーティング・システム構成A340およびオペレーティング・システム構成B345などの、オペレーティング・システム構成をブートするために、コンピューティング・デバイス305において実行する権限を与えられたソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ブートローダ335は、ブートローダ335の実行可能コードの整合性を保証するために、公開鍵と秘密鍵のペアの秘密鍵によって署名されることが可能である。コンピューティング・デバイス305の再起動後、ブートローダ335は、ブートローダの構成に基づいて、事前に選択されたオペレーティング・システム構成を認証してブートするために、信頼できるアプリケーション(例えば信頼できるアプリケーション360)によって実行されることが可能である。
【0060】
オペレーティング・システム構成A340およびオペレーティング・システム構成B345は、コンピューティング・デバイス305に格納された2つの別個のブート可能なオペレーティング・システム構成であることが可能である。本明細書で説明されるように、各オペレーティング・システム構成は署名されることが可能であり、オペレーティング・システム・カーネル、および関連付けられたカーネル・パラメータ値のセットを含むことができる。いくつかの実施形態において、オペレーティング・システム構成A340およびオペレーティング・システム構成B345は両方、同じオペレーティング・システム・カーネル、および異なるカーネル・パラメータ値のセットを有することができる。一定の実施形態において、オペレーティング・システム構成A340およびオペレーティング・システム構成B345は、異なるオペレーティング・システム・カーネル、および類似のカーネル・パラメータ値を有することができる(例えば、カーネル・パラメータ値は、同じアクセス・ポリシの実施レベルを有するように各構成がブートされることを保証することができる)。
【0061】
セキュリティ構成要素325は、コンピューティング・デバイス305においてブートするアプリケーションの実行可能コードの整合性または真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。いくつかの実施形態において、セキュリティ構成要素325は、ユーザ・アクセス可能な不揮発性メモリ350、保護された不揮発性メモリ355、信頼できるアプリケーション360、およびデータベース365を含むことができる。個別の構成要素として示されるが、セキュリティ構成要素325の全てまたは一部は、コンピューティング・デバイス305の1つまたは複数の他の構成要素に含まれることが可能である。
【0062】
本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリ350は、コンピューティング・デバイス305のユーザによって実行可能なアプリケーションによって少なくとも書き込むためにアクセス可能な任意の不揮発性メモリであることが可能である。ユーザ・アクセス可能な不揮発性メモリ350は、例えば、バッテリ・バックアップ式のランダム・アクセス・メモリ、フラッシュ・メモリ、またはストレージ320の領域であることが可能である。一定の実施形態において、本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリは、コンピューティング・デバイス305においてブートするために選択されたオペレーティング・システム構成に対応する公開鍵を一時的に格納するためのステージング領域としての役割を果たすことができる。
【0063】
保護された不揮発性メモリ355は、アプリケーションの選択されたセット(例えば信頼できるアプリケーション360およびブートローダ335)のみからアクセス可能な不揮発性メモリの領域であることが可能である。いくつかの実施形態において、メモリ355は、信頼できるアプリケーション360によってのみ、またコンピューティング・デバイス305のブート前状態の間にのみ、書き込まれることが可能である。一定の実施形態において、保護された不揮発性メモリ355は、コンピューティング・デバイス305においてブートすることができるアプリケーションを認証するための検証された公開鍵のセット、すなわちデータベースを格納する。
【0064】
信頼できるアプリケーション360は、コンピューティング・デバイス305によって認証された実行可能コードを有し、コンピューティング・デバイス305が再起動するときに自動的に実行するように構成されたアプリケーションであることが可能である。いくつかの実施形態において、信頼できるアプリケーション360は、ユーザ・アクセス可能な不揮発性メモリ350の所定の場所に格納された新しい公開鍵を自動的にチェックすること、および新しい公開鍵の有効性を検証すること、を行うように構成されることが可能である。信頼できるアプリケーション360は、本明細書において論じられる信頼できるアプリケーションの動作を実行するように構成されることも可能である。
【0065】
データベース365は、コンピューティング・デバイス305においてブートすることができるアプリケーションを認証するための公開鍵のリポジトリであることが可能である。いくつかの実施形態において、データベース365は、保護された不揮発性メモリ355の一部であることが可能である。一定の実施形態において、データベース365に格納された1つまたは複数の公開鍵は、コンピューティング・デバイス305の製造中に書き込まれ、デジタル的に署名されることが可能である。
【0066】
ローカル・ユーザ・インターフェース380は、コンピューティング・デバイス305に対する入出力動作をユーザが実行することを可能にするように構成されたユーザ・インターフェース端末であることが可能である。ローカル・ユーザ・インターフェース380は、コネクタ(例えば、データ・ケーブル、映像ケーブル、または他の入出力ケーブルもしくはバス)によってコンピューティング・デバイス305に物理的に接続されることが可能である。様々な実施形態によれば、ローカル・ユーザ・インターフェース380は、信頼できるアプリケーション360と、コンピューティング・デバイス305の物理的な保有状態にあるか、物理的な存在下にあるユーザとの間の相互作用を可能にすることができる。
【0067】
図4は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート400を示している。本明細書で説明されるように、フローチャート400の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・デバイスによって実行されることが可能である。フローチャート400に示された各動作は、コンピューティング・デバイスによって、または1つもしくは複数のイベント(例えばユーザ・アクションもしくはリクエスト)に応答して、自動的に実行されることが可能である。
【0068】
動作405において、コンピューティング・デバイスは、第1のオペレーティング・システム構成(O/S構成A)の下で実行しているユーザ・アプリケーションから、第2のオペレーティング・システム構成(O/S構成B)をブートするリクエストを受け取ることができる。リクエストは、ユーザがコンピューティング・デバイスにアクセスすること、およびユーザ・アプリケーションを実行することを可能にする任意の端末またはデバイスから受け取られることが可能である。いくつかの実施形態において、ユーザは、資格証明書のセット(例えば、権限を与えられたユーザ・アカウントと関連付けられたユーザ名およびパスワード)を使用して、コンピューティング・デバイスにアクセスし、ユーザ・アプリケーションを実行することができる。
【0069】
本明細書で説明されるように、オペレーティング・システム構成Bは、カーネル・パラメータ値のセットを有するオペレーティング・システム・カーネルを含むことができる。オペレーティング・システム構成Bは、公開鍵と秘密鍵のペア(例えば非対称鍵のペア)の秘密鍵によって署名されることが可能である。いくつかの実施形態において、O/S構成Bは、O/S構成Aに含まれるオペレーティング・システム・カーネルと同じオペレーティング・システム・カーネルを含むことができる。しかしO/S構成Bは、O/S構成Aに含まれるカーネル・パラメータ値のセットとは異なるカーネル・パラメータ値のセットを有することができる。上述のオペレーティング・システム構成の例を思い出すと、O/S構成AとO/S構成Bの両方は、SELinuxモジュールを有するLinuxカーネルを含むことができる。しかし、O/S構成Aが、高アクセス制御実施セキュリティ・レベルでLinuxカーネルをブートするためのカーネル・パラメータ値を含むことができる一方で、O/S構成Bは、中アクセス制御実施セキュリティ・レベルでLinuxカーネルをブートするためのカーネル・パラメータ値を含むことができる。
【0070】
本明細書で説明されるように、動作410において、コンピューティング・デバイスは、O/S構成Bに署名するために使用された秘密鍵に対応する公開鍵を不揮発性メモリに格納することができる。いくつかの実施形態において、ユーザ・アプリケーションまたは別のアプリケーションが、コンピューティング・デバイスに動作410を実行させることができる。
【0071】
動作415において、コンピューティング・デバイスは、再起動することができる。再起動後に、コンピューティング・デバイスは、動作420と一致してブート前状態にある間、動作425および動作430を実行することができる。
【0072】
動作425において、コンピューティング・デバイスは、信頼できる(例えば、セキュアな、または修正されていないことが保証された)アプリケーションを実行して、O/S構成Bをブートするリクエストを確認する信号を受け取ることができる。いくつかの実施形態において、信頼できるアプリケーションは、UEFIのshimプログラムに実質的に似ていることが可能である。コンピューティング・システムは、コンピューティング・システムが再起動した後、信頼できるアプリケーションを自動的にロード、認証、および実行するように構成されることが可能である。信頼できるアプリケーションは、不揮発性メモリの特定の領域(例えば動作410の中で書き込まれた不揮発性メモリの領域)を読み込み、コンピューティング・システムに新しい公開鍵が追加されたかどうかを判断するように構成されることが可能である。信頼できるアプリケーションは、新しい公開鍵を検出することに応答して、その公開鍵が既知のオペレーティング・システム構成(例えばコンピューティング・システムにおいてブートする権限を与えられたオペレーティング・システム構成)に対応することを検証するようにさらに構成されることが可能である。本明細書で説明されるように、公開鍵を検証することに応答して、信頼できるアプリケーションは、コンピューティング・デバイスの保護メモリに公開鍵をコピーすること、移送すること、または移すことができる。いくつかの実施形態において、保護メモリは、信頼できるアプリケーションによってのみ書込み可能である。さらに、保護メモリは、コンピューティング・デバイスがブート前状態にある間のみ、書き込まれることが可能である。
【0073】
動作430において、コンピューティング・デバイスは、ブートローダを実行して、O/S構成Bを認証してブートすることができる。いくつかの実施形態において、信頼できるアプリケーションは、コンピューティング・システムに代わって、ブートローダをロードして、認証し、その後、実行することができる。認証されたブートローダは、ブートする前に、保護メモリから公開鍵を読み込み、公開鍵を使用して、O/S構成Bを認証することができる。ブートローダは、認証が成功するとO/S構成Bをブートすることができる一方で、ブートローダは、認証が成功しないと(例えば、署名された後にO/S構成Bが変更されたことをブートローダが検出すると)ブート処理を中止することができる。
【0074】
フローチャート400の動作は、動作435で終わることができる。
【0075】
いくつかの実施形態において、O/S構成Bにおけるカーネル・パラメータ値のセットは、コンピューティング・システムにおいてO/S構成Bがブートされる間にロード可能なソフトウェア・モジュールを決定する。さらに、様々な実施形態において、パラメータ値のセットは、O/S構成Bの下でのアクセス制御権の実施(例えばアクセス制御ポリシの実施レベル)を決定することができる。本明細書で説明されるように、これらの実施形態は、コンピューティング・システムにユーザが物理的にアクセスできない限り、コンピューティング・システムの構成、およびアクセス制御ポリシが、コンピューティング・システムを使用するユーザによって変更される可能性がないこと、ならびにコンピューティング・システムを変更するために選択されたオペレーティング・システム構成の整合性が認証されることを保証するという利点をもたらす。
【0076】
様々な実施形態によれば、本明細書で説明されるように、保護された不揮発性メモリは、コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証される、信頼できるアプリケーションを含む、アプリケーションのセットによってのみ書込み可能である。これらの実施形態は、不正な公開鍵がコンピューティング・システムに追加される可能性がないことを保証するという利点をもたらす。これは、不正なオペレーティング・システム構成がコンピューティング・システムにおいてブートされる可能性があるという見込みを低減させる。
【0077】
図5は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用
図500を示している。本明細書で説明されるように、相互作用
図500は、ユーザ505と、オペレーティング・システム構成をセキュアにブートするように構成されたコンピューティング・システムの要素との間の相互作用を示す。相互作用図の構成要素は、ユーザ505、コンピューティング・システムの実行環境510、およびコンピューティング・システムのシステム状態515を含む。実行環境510は、ユーザ・アプリケーション530を実行するオペレーティング・システム構成A525、信頼できるアプリケーション550、ブートローダ560、およびオペレーティング・システム構成B570であることが可能である。システム状態515は、
図5の状況で使用されているように、コンピューティング・デバイスに格納された不揮発性データを読み込むか、修正する動作の対象を示す。ユーザ505は、ユーザ・インターフェース520(例えばローカルもしくはリモート・ユーザ・インターフェース端末)を通じて、またはローカル・ユーザ・インターフェース545を通じて(例えばコンピューティング・システムにユーザが物理的にアクセスできる間に)、実行環境510と相互作用することができる。
【0078】
相互作用の第1のセットは、参照要素535によって示されるように、オペレーティング・システム構成A(O/S構成A)がコンピューティング・システムにおいてブートされている間に実行されることが可能である。
【0079】
様々な実施形態によれば、ユーザ・アプリケーション530は、オペレーティング・システム構成B(O/S構成B)をロードするリクエスト531を受け取ることができる。リクエスト531は、ユーザ・インターフェース520を通じてユーザ505から受け取られることが可能である。ユーザ・アプリケーション530は次に、動作532のセットを実行して、O/S構成Bに署名するために使用された秘密鍵に関連付けられた公開鍵を格納することができる。公開鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。ユーザ・アプリケーション530は、動作533をさらに実行して、コンピューティング・システムの次の再起動後にO/S構成Bをブートするために、コンピューティング・システムのブートローダの構成を更新することができる。O/S構成Aは次に、コンピューティング・システムを再起動させるリクエスト534を受け取ることができる。
【0080】
参照要素540によって示されるように、コンピューティング・システムは次に、再起動することができる。
【0081】
参照要素565によって示されるように、コンピューティング・システムがブート前状態にある間、以下の相互作用が実行される。
【0082】
様々な実施形態によれば、信頼できるアプリケーション550は、動作551を実行して、不揮発性メモリから、格納された公開鍵を取得し、既知の(例えば有効な)署名されたオペレーティング・システム構成に、取得した公開鍵が対応することを検証する(例えば実証する)。信頼できるアプリケーション550は、動作552をさらに実行して、O/S構成Bをブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末545を通じて、ユーザ505に促すことができる。信頼できるアプリケーション550は次に、動作553を実行して、ユーザ505から確認を受け取ることができる。信頼できるアプリケーションは、動作554および動作555をさらに実行して、公開鍵を保護メモリに移し、ブートローダ560を認証して実行することができる。ブートローダ560は、動作561および動作562を実行して、保護メモリから公開鍵を取得し、O/S構成Bを認証してブートすることができる。いくつかの実施形態において、ブートローダ560は、動作561および動作562を実行し、認証(または検証)が成功すると、O/S構成B570をブートすることを、信頼できるアプリケーション550に行わせることができる。
【0083】
コンピューティング・システムは次に、参照要素575によって示されるように、O/S構成Bの下でブート状態に入ることができる。
【0084】
図6は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピューティング・デバイス600のブロック図を示している。
【0085】
コンピューティング・デバイス600の構成要素は、1つまたは複数のプロセッサ606、メモリ612、端末インターフェース618、ストレージ・インターフェース620、入力/出力(「I/O」)デバイス・インターフェース622、およびネットワーク・インターフェース624を含むことができ、これらの全てが、メモリ・バス610、I/Oバス616、バス・インターフェース・ユニット(「IF」)608、およびI/Oバス・インターフェース・ユニット614を介して、構成要素間通信のために直接的または間接的に通信可能に連結される。
【0086】
コンピューティング・デバイス600は、本明細書において総称的にプロセッサ606と呼ばれる、1つまたは複数の汎用プログラマブル中央処理装置(CPU)606Aおよび606Bを含むことができる。一実施形態において、コンピューティング・デバイス600は、複数のプロセッサを収めることができるが、別の実施形態において、コンピューティング・デバイス600は、一方で、単一のCPUデバイスであることが可能である。各プロセッサ606は、メモリ612に格納された命令を実行する。
【0087】
コンピューティング・デバイス600は、プロセッサ606、メモリ612、ディスプレイ・システム604、およびI/Oバス・インターフェース・ユニット614の間の通信を行うためのバス・インターフェース・ユニット608を含むことができる。I/Oバス・インターフェース・ユニット614は、様々なI/Oユニットとの間でデータを移送するためにI/Oバス616と連結されることが可能である。I/Oバス・インターフェース・ユニット614は、I/Oバス616を通じて、I/Oプロセッサ(IOP)またはI/Oアダプタ(IOA)としても知られる複数のI/Oインターフェース・ユニット618、620、622、および624と通信することができる。ディスプレイ・システム604は、ディスプレイ・コントローラ、ディスプレイ・メモリ、または両方を含むことができる。ディスプレイ・コントローラは、映像、音声、または両方のタイプのデータをディスプレイ・デバイス602に提供することができる。ディスプレイ・メモリは、映像データをバッファするための専用メモリであることが可能である。ディスプレイ・システム604は、スタンドアロン・ディスプレイ画面、コンピュータ・モニタ、テレビ、タブレットもしくはハンドヘルド・デバイスのディスプレイ、または別の他の表示可能デバイスなどのディスプレイ・デバイス602と連結されることが可能である。一実施形態において、ディスプレイ・デバイス602は、音声を再生するための1つまたは複数のスピーカを含むことができる。一方、音声を再生するための1つまたは複数のスピーカは、I/Oインターフェース・ユニットと連結されることが可能である。代替実施形態において、ディスプレイ・システム604によって提供される1つまたは複数の機能は、プロセッサ606も含むオンボードの集積回路であることが可能である。さらに、バス・インターフェース・ユニット608によって提供される機能の1つまたは複数は、プロセッサ606も含むオンボードの集積回路であることが可能である。
【0088】
I/Oインターフェース・ユニットは、様々なストレージ・デバイスおよびI/Oデバイスとの通信をサポートする。例えば、端末インターフェース・ユニット618は、ユーザ出力デバイス(映像表示デバイス、スピーカ、またはテレビ・セット、あるいはその組合せなど)ならびにユーザ入力デバイス(キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライト・ペン、または他のポインティング・デバイスなど)を含むことができる、1つまたは複数のユーザI/Oデバイスの接続をサポートする。ユーザは、入力データおよびコマンドをユーザI/Oデバイス626およびコンピューティング・デバイス600に提供するために、ユーザ・インターフェースを使用してユーザ入力デバイスを操作することができ、ユーザ出力デバイスを介して出力データを受け取ることができる。例えば、ユーザ・インターフェースは、ディスプレイ・デバイス上に表示されること、スピーカを介して再生されること、またはプリンタを介して印刷されることなど、ユーザI/Oデバイス626を介して提示されることが可能である。
【0089】
ストレージ・インターフェース620は、1つまたは複数のディスク・ドライブ、すなわちダイレクト・アクセス・ストレージ・デバイス628の接続をサポートする(これらは、一方で、ホスト・コンピュータに対して単一の大きいストレージ・デバイスのように見えるように構成されたディスク・ドライブ、またはフラッシュ・メモリなどのソリッドステート・ドライブのアレイを含む他のストレージ・デバイスである可能性もあるが、典型的には、回転式の磁気ディスク・ドライブ・ストレージ・デバイスである)。別の実施形態において、ストレージ・デバイス628は、任意のタイプの2次ストレージ・デバイスを介して実装されることが可能である。メモリ612、またはメモリ612の任意の部分の内容は、必要に応じて、ストレージ・デバイス628に格納されること、およびストレージ・デバイス628から取得されることが可能である。I/Oデバイス・インターフェース622は、他の様々なI/Oデバイスのいずれか、またはプリンタもしくはファックス・マシンなどの他のタイプのデバイスへのインターフェースを行う。ネットワーク・インターフェース624は、コンピューティング・デバイス600から他のデジタル・デバイスおよびコンピュータ・システムへの1つまたは複数の通信経路を提供する。
【0090】
セキュリティ構成要素631は、セキュリティ構成要素325(
図3)に実質的に似ており、セキュリティ構成要素325の同じ機能を含むことができる。セキュリティ構成要素631は、コンピューティング・デバイス600においてブートする実行可能コードの整合性またはアプリケーションの真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。
【0091】
図6に示されたコンピューティング・デバイス600は、プロセッサ606、メモリ612、バス・インターフェース608、ディスプレイ・システム604、およびI/Oバス・インターフェース・ユニット614の間の直接の通信経路を提供する特定のバス構造を示すが、代替実施形態において、コンピューティング・デバイス600は、階層式のポイント・ツー・ポイント・リンク、スター型もしくはウェブ型構成、複数階層式のバス、並列および冗長経路、または他の任意の妥当なタイプの構成など、様々な形式のいずれかで配置されることが可能な様々なバスまたは通信経路を含むことができる。さらに、I/Oバス・インターフェース・ユニット614およびI/Oバス608は単一の個々のユニットとして示されるが、コンピューティング・デバイス600は、複数のI/Oバス・インターフェース・ユニット614または複数のI/Oバス616あるいはその両方を含むことができる。様々なI/Oデバイスに通じている様々な通信経路からI/Oバス616を分離する複数のI/Oインターフェース・ユニットが示されるが、他の実施形態において、I/Oデバイスのいくつかまたは全ては、1つまたは複数のシステムI/Oバスに直接的に接続される。
【0092】
様々な実施形態において、コンピューティング・デバイス600は、マルチ・ユーザ・メインフレーム・コンピュータ・システム、シングル・ユーザ・システム、または直接のユーザ・インターフェースがほとんどないか、全くないが、他のコンピュータ・システム(クライアント)からリクエストを受け取るサーバ・コンピュータもしくは類似のデバイスである。他の実施形態において、コンピューティング・デバイス600は、デスクトップ・コンピュータ、携帯型コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット型コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、または他の任意の適切なタイプの電子デバイスとして実装されることが可能である。
【0093】
一実施形態において、メモリ612は、データおよびプログラムを格納またはエンコードするためのランダム・アクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体(揮発性または不揮発性)を含むことができる。別の実施形態において、メモリ612は、コンピューティング・デバイス600の仮想メモリ全体を表し、コンピューティング・デバイス600に連結されるか、ネットワーク630を介して接続される、他のコンピュータ・システムの仮想メモリを含むこともできる。メモリ612は、単一のモノリシック・エンティティであることが可能であるが、他の実施形態において、メモリ612は、キャッシュおよび他のメモリ・デバイスの階層を含むことができる。例えば、メモリは、複数レベルのキャッシュに存在することができ、これらのキャッシュは、1つのキャッシュが命令を保持する一方で、別のキャッシュが、プロセッサによって使用される非命令データを保持するべく、機能によってさらに分割されることが可能である。メモリ612は、任意の様々な、いわゆる不均一メモリ・アクセス(Non-Uniform Memory Access、NUMA)コンピュータ・アーキテクチャにおいて知られているように、さらに分散されること、および様々なCPUまたはCPUのセットと関連付けられることが可能である。
【0094】
メモリ612は、
図1~
図5に示された構成要素およびデータの全てまたは一部を格納することができる。特に、ユーザ・アプリケーション、信頼できるアプリケーション、ブートローダ、およびオペレーティング・システム構成の1つまたは複数は、本明細書で説明される動作を行うために認証され、実行されるように、ストレージ・デバイス628またはセキュリティ構成要素631からメモリ612にロードされることが可能である。コンピュータ実行可能コードは、プロセッサ606によって実行されることが可能である。
図1~
図5に示された構成要素およびデータのいくつかまたは全ては、様々なコンピュータ・システム上にあることが可能であり、リモートに、例えばネットワーク630を介して、アクセスされることが可能である。コンピューティング・デバイス600は、コンピューティング・デバイス600のプログラムが、複数の、より小さいストレージ・エンティティにアクセスする代わりに、大きい単一のストレージ・エンティティにアクセスしているだけのように振る舞うことを可能にする仮想アドレス・メカニズムを使用することができる。したがって、
図1~
図5に示された構成要素およびデータは、メモリ612に含まれるように示されるが、これらの構成要素およびデータは、必ずしも、同じストレージ・デバイスに同時に全て完全に収められるわけではない。
図1~
図5に示された構成要素およびデータは個別のエンティティとして示されるが、他の実施形態において、これらのうちのいくつか、これらのうちのいくつかの一部、またはこれらの全ては、まとめてパッケージ化されることが可能である。
【0095】
一実施形態において、
図1~
図5に示された構成要素およびデータは、プロセッサ606において実行する命令もしくは文、またはプロセッサ606を実行して下記でさらに説明されるような機能を行う命令もしくは文によって解釈される命令もしくは文を含むことができる。別の実施形態において、
図1~
図5に示された構成要素は、プロセッサ・ベースのシステムの代わりに、または加えて、半導体デバイス、チップ、論理ゲート、回路、回路カード、または他の物理的なハードウェア・デバイス、あるいはその組合せを介してハードウェアの中に実装されることが可能である。一実施形態において、
図1~
図5に示された構成要素は、命令または文に加えてデータを含むことができる。
【0096】
図6は、コンピューティング・デバイス600の代表的な構成要素を図示することを意図するものである。しかし個々の構成要素は、
図6に表されたものより大きな複雑性を有する可能性がある。
図6において、示された構成要素以外の、または加えた構成要素が存在することが可能であり、このような構成要素の数、タイプ、および構成は変化することが可能である。さらなる複雑性またはさらなる変形形態のいくつかの特定の例が本明細書で開示されるが、これらは、ほんの一例としてのものであり、必ずしも唯一のこのような変形形態ではない。
図6に含まれるものとして説明される様々なプログラム構成要素は、様々な実施形態において、本明細書において「ソフトウェア」、「コンピュータ・プログラム」、または単に「プログラム」と呼ばれる可能性もある、様々なコンピュータ・アプリケーション、ルーチン、構成要素、プログラム、オブジェクト、モジュール、データ構造、等を使用することを含むいくつかの異なる方式で実装されることが可能である。
【0097】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、本発明の態様をプロセッサに行わせるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
【0098】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形のデバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体の多くの具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、記録された命令を有するパンチ・カード、または溝の中の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号それ自体であると解釈されるべきではない。
【0099】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング/処理デバイスに、あるいは例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含めることができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、個々のコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0100】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上、または全面的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む、任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を行うためにコンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【0101】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
【0102】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて機械を生み出すことが可能である。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用の態様を実行する命令を含む製品を備えるべく、特定の手法で機能するようにコンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指示することができるコンピュータ可読ストレージ媒体に格納されることも可能である。
【0103】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/作用を実行するべく、コンピュータ実行処理を生み出すコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを行わせるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされることも可能である。
【0104】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートおよびブロック図の中の各ブロックは、指定された論理機能を実行するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに記述された機能は、図に記述された順序とは異なる順序で発生させることができる。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されることが可能であり、または、それらのブロックは、時には、関連する機能に応じて、逆の順序で実行されることが可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能または作用を行うか、専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
【0105】
本開示の様々な実施形態の説明は例証のために提示されたが、開示された実施形態に対して網羅的または限定的であることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正形態および変形形態が当業者に明らかになるであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術的な改善を説明するため、または本明細書で開示された実施形態を当業者が理解できるようにするために選ばれた。