(57)【要約】【課題】ハードウェアを使用してコンピューティング・システムのオペレーティング・システム構成をセキュアにする。【解決手段】方法、システム、およびコンピュータ・プログラム製品は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、コンピューティング・システムを再起動させることをさらに含む。コンピューティング・システムを再起動させることに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを実証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、を含む。【選択図】図１
2020523685.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、
前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記認証することに応答して、前記オペレーティング・システム構成をブートすることと
を含む、方法。
【請求項２】
前記受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記公開鍵が対応すると判断すること
をさらに含む、請求項１に記載の方法。
【請求項３】
前記確認信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことをさらに含み、前記保護メモリは、前記コンピューティング・システムがブート前状態にある間だけ書込み可能である、請求項１に記載の方法。
【請求項４】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行コード整合性を有するソフトウェア・アプリケーションによってのみ書込み可能である、請求項３に記載の方法。
【請求項５】
前記認証することが、前記保護メモリから前記デジタル鍵を取得することと、前記取得したデジタル鍵を使用して、前記オペレーティング・システム構成のデジタル署名を検証することと、を含む、請求項３に記載の方法。
【請求項６】
前記オペレーティング・システム構成が、
オペレーティング・システム・カーネルと、
前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
を含む、請求項１に記載の方法。
【請求項７】
前記パラメータのセットが、前記オペレーティング・システム・カーネルの実行可能コードにコンパイルされる、請求項６に記載の方法。
【請求項８】
前記オペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によってデジタル的に署名され、
前記デジタル鍵が、前記公開鍵と秘密鍵のペアの公開鍵である、
請求項１に記載の方法。
【請求項９】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結され、メモリおよびプロセッサを有するコンピューティング・システムと、
プログラム命令を具体化する前記コンピューティング・システムのコンピュータ可読ストレージ媒体とを備え、前記プログラム命令が、システムに、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ること、
前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納すること、
前記コンピューティング・システムを再起動すること、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ること、
前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証すること、および
前記認証することに応答して、前記オペレーティング・システム構成をブートすること
を行わせるように前記プロセッサによって実行可能である、システム。
【請求項１０】
前記プログラム命令が、前記システムに、
前記受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記公開鍵が対応すると判断すること
を行わせるように前記プロセッサによってさらに実行可能である、請求項９に記載のシステム。
【請求項１１】
前記プログラム命令が、前記システムに、
前記確認信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことを行わせるように前記プロセッサによってさらに実行可能であり、前記コンピューティング・システムがブート前状態にある間だけ前記保護メモリが書込み可能である、請求項９に記載のシステム。
【請求項１２】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行コード整合性を有するソフトウェア・アプリケーションによってのみ書込み可能である、請求項１１に記載のシステム。
【請求項１３】
前記プログラム命令が、前記システムに、前記保護メモリから前記デジタル鍵を取得することと、前記取得したデジタル鍵を使用して、前記オペレーティング・システム構成のデジタル署名を検証することと、を行わせるように前記プロセッサによってさらに実行可能な、請求項１１に記載のシステム。
【請求項１４】
前記オペレーティング・システム構成が、
オペレーティング・システム・カーネルと、
前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
を含む、請求項９に記載のシステム。
【請求項１５】
前記パラメータのセットが、前記オペレーティング・システム・カーネルの実行可能コードにコンパイルされる、請求項１４に記載のシステム。
【請求項１６】
前記オペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によってデジタル的に署名され、
前記デジタル鍵が、前記公開鍵と秘密鍵のペアの公開鍵である、
請求項９に記載のシステム。
【請求項１７】
コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含み、前記コンピュータ可読ストレージ媒体が、一時的な信号それ自体ではなく、前記プログラム命令が、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、
前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記認証することに応答して、前記オペレーティング・システム構成をブートすることと
を含む方法を前記コンピューティング・システムに実行させるようにプロセッサによって実行可能な、コンピュータ・プログラム製品。
【請求項１８】
前記方法が、
前記受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記公開鍵が対応すると判断すること
をさらに含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記方法が、
前記確認信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことであって、前記コンピューティング・システムがブート前状態にある間だけ前記保護メモリが書込み可能である、前記移すこと
をさらに含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
前記オペレーティング・システム構成が、
オペレーティング・システム・カーネルと、
前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
を備える、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２１】
コンピューティング・デバイスにおいて第１のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第２のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第２のオペレーティング・システム構成が、
公開鍵と秘密鍵のペアの秘密鍵によって署名され、
前記第２のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされたオペレーティング・システム・カーネルを少なくとも含む、
受け取ることと、
前記リクエストを受け取ることに応答して、前記秘密鍵に対応する公開鍵を前記コンピューティング・デバイスの不揮発性メモリに格納することと、
前記コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することであって、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
前記コンピューティング・デバイスへのローカル・インターフェースから、前記受け取ったリクエストを確認する信号を受け取ること、
前記信号が前記リクエストを確認するとき、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された公開鍵を使用して前記第２のオペレーティング・システムを認証し、前記認証することに応答して前記第２のオペレーティング・システム構成をブートするように前記保護メモリにアクセスできるブートローダを実行すること
を行うように、信頼できるアプリケーションを実行することと
を含む、方法。
【請求項２２】
前記パラメータのセットが、前記第２のオペレーティング・システム構成の下でロード可能なソフトウェア・モジュールを決定する、請求項２１に記載の方法。
【請求項２３】
前記パラメータのセットが、前記アクセス制御ポリシの実施を決定する、請求項２１に記載の方法。
【請求項２４】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行可能コード整合性を有する前記信頼できるアプリケーションを含むアプリケーションのセットによる書込みだけが可能である、請求項２１に記載の方法。
【請求項２５】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結され、メモリおよびプロセッサを有するコンピューティング・システムと、
プログラム命令を具体化する前記１つまたは複数の計算ノードのコンピュータ可読ストレージ媒体とを備え、前記プログラム命令が、システムに、
コンピューティング・デバイスにおいて第１のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第２のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第２のオペレーティング・システム構成が、
公開鍵と秘密鍵のペアの秘密鍵によって署名され、
前記第２のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされたオペレーティング・システム・カーネルを少なくとも含む、
受け取ることと、
前記リクエストを受け取ることに応答して、前記秘密鍵に対応する公開鍵を前記コンピューティング・デバイスの不揮発性メモリに格納することと、
前記コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することであって、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
前記受け取ったリクエストを確認する信号を前記ユーザ・インターフェース端末から受け取ること、
前記信号が前記リクエストを確認するとき、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された公開鍵を使用して前記第２のオペレーティング・システムを認証し、前記認証することに応答して前記第２のオペレーティング・システム構成をブートするように前記保護メモリにアクセスできるブートローダを実行すること
を行うように、信頼できるアプリケーションを実行することと
を行わせるように前記プロセッサによって実行可能である、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関する。より詳細には、本開示は、ハードウェアを使用してコンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。
【背景技術】
【０００２】
コンピューティング・システムは、ファイル・システムのオブジェクトに対してユーザが行えるアクセスを制限することができるアクセス制御ポリシを有する。アクセス制御ポリシは、例えば、ユーザが修正できるファイルを制約することができ、またこれらは、所与のオペレーティング・システムのモジュールをユーザがロードするのを禁止することができる。アクセス制御ポリシは、コンピューティング・システムにおいて実行するオペレーティング・システムの構成によって実施されることが可能である。オペレーティング・システム構成は、カーネルを使用して、コンピューティング・システムをブートしてユーザ・アプリケーションを実行するのに適した状態にする前に、オペレーティング・システム・カーネルの所与の構成に対応するカーネル・パラメータを設定することによって決定されることが可能である。所与のオペレーティング・システム構成を使用してコンピューティング・システムがブートされると、構成によって実施されるアクセス制御ポリシは、事実上、コンピューティング・システムによって許可される場合、異なるオペレーティング・システム構成の下でコンピューティング・システムがブートされるまで残る可能性がある。
【０００３】
コンピューティング・システムの中には、様々なオペレーティング・システム構成のセットの中からユーザが選べるようにするものもある。これらのコンピューティング・システムに対する有効アカウントを有するユーザは、現在ブートされている構成とは異なるアクセス制御ポリシを有するオペレーティング・システム構成を選択してブートすることによって、コンピューティング・システムのアクセス制御ポリシ（またはアクセス制御ポリシの実施）を変更することができる。
【０００４】
アカウント資格証明書（例えばユーザ名およびパスワード）を使用してコンピューティング・システムにユーザがリモートにアクセスすることは一般的である。コンピューティング・システムにリモートにアクセスするユーザは通常、ローカル端末からコンピューティング・システムにアクセスするユーザと同じアクセス制御ポリシに従っている。コンピューティング・システムの権限を与えられたユーザは結果として、前述の処理を用いて、コンピューティング・システムのアクセス制御ポリシをリモートに変更することができる。しかし、この管理体制の１つのアーチファクトは、コンピューティング・システムへの、権限を与えられたユーザのアクセス資格証明書を入手することができる、権限のないユーザが、コンピューティング・システムのアクセス制御ポリシをリモートに変更すること、場合によっては、コンピューティング・システムに対する、権限のないユーザのアクセス権を引き上げることもできるというものである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述を考慮すると、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証するための技法が必要である。
【課題を解決するための手段】
【０００６】
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいて選ばれた構成がブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証する方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
【０００７】
本開示の実施形態によれば、方法は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、コンピューティング・システムを再起動することをさらに含む。コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、を含む。
【０００８】
本開示の様々な実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体と、を含む。プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。プログラム命令は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。コンピューティング・システムは、その後、再起動される。
【０００９】
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、プログラム命令は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ること、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証すること、および認証することに応答して、オペレーティング・システム構成をブートすること、をシステムに行わせるようにプロセッサによってさらに実行可能である。
【００１０】
様々な実施形態が、コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラム製品を対象とする。コンピュータ・プログラム製品は、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含み、コンピュータ可読ストレージ媒体は、一時的な信号ではなく、プログラム命令は、コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることを含む方法を行うことをコンピューティング・システムに行わせるようにプロセッサによって実行可能である。方法は、リクエストを受け取ることに応答して、オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することをさらに含む。方法は、その後、コンピューティング・システムを再起動することを含む。
【００１１】
コンピューティング・システムを再起動することに応答して、またコンピューティング・システムがブート前状態にある間、方法は、格納されたデジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、受け取ったリクエストを確認する信号を、コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、信号を受け取ることに応答して、デジタル鍵を使用してオペレーティング・システム構成を認証することと、認証することに応答して、オペレーティング・システム構成をブートすることと、をさらに含む。
【００１２】
本開示の代替実施形態によれば、方法は、コンピューティング・デバイスにおいて第１のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第２のオペレーティング・システム構成を実行するリクエストを受け取ることを含む。第２のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第２のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。方法は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをさらに含む。方法は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、コンピューティング・デバイスへのローカル・インターフェースから、受け取ったリクエストを確認する信号を受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第２のオペレーティング・システムを認証すること、および認証することに応答して第２のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをさらに含む。
【００１３】
本開示の代替実施形態によれば、システムは、ユーザ・インターフェース端末と、ユーザ・インターフェース端末に物理的に連結され、メモリ、プロセッサを有するコンピューティング・システムと、プログラム命令を具体化するコンピュータ可読ストレージ媒体を含む。プログラム命令は、コンピューティング・デバイスにおいて第１のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第２のオペレーティング・システム構成を実行するリクエストを受け取ることをシステムに行わせるようにプロセッサによって実行可能である。第２のオペレーティング・システム構成は、公開鍵と秘密鍵のペアの秘密鍵によって署名され、第２のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされた少なくともオペレーティング・システム・カーネルを含む。
【００１４】
プログラム命令は、リクエストを受け取ることに応答して、秘密鍵に対応する公開鍵をコンピューティング・デバイスの不揮発性メモリに格納することをシステムに行わせるようにプロセッサによってさらに実行可能である。プログラム命令は、不揮発性メモリに格納された公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、受け取ったリクエストを確認する信号をユーザ・インターフェース端末から受け取ること、信号がリクエストを確認するとき、公開鍵を保護メモリに移すこと、ならびに保護メモリに格納された公開鍵を使用して第２のオペレーティング・システムを認証すること、および認証することに応答して第２のオペレーティング・システム構成をブートすること、を行うように保護メモリにアクセスできるブートローダを実行すること、を行うように、コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することをシステムに行わせるようにプロセッサによってさらに実行可能である。
【００１５】
上記の概要は、本開示のそれぞれの示された実施形態またはあらゆる実装形態を説明することを意図するものではない。
【００１６】
本出願に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。これらは、本開示の実施形態を示し、説明と共に、本開示の原理を説明するのに役立つ。図面は、一定の実施形態の例証にすぎず、本開示を限定するものではない。
【図面の簡単な説明】
【００１７】
【図１】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。
【図２】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャートである。
【図３】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステムの例のブロック図である。
【図４】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャートである。
【図５】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用図である。
【図６】様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピュータ・システムのブロック図である。
【発明を実施するための形態】
【００１８】
本発明は、様々な修正および代替形態に対応可能であるが、これらの細目は、図面に例として示されており、詳細に説明されることになる。しかし、趣旨は、説明される特定の実施形態に本発明を限定するものではないということを理解されたい。反対に、趣旨は、本発明の思想および範囲に含まれる全ての修正、均等物、および代替を含めることである。
【００１９】
本開示の態様は、オペレーティング・システムのセキュア・ブートを用いるコンピューティング・システムに関し、より詳細には、態様は、ハードウェアを使用してブートする前に、コンピューティング・システムのオペレーティング・システム構成をセキュアにすることに関する。本開示は、このような適用に必ずしも限定されないが、本開示の様々な態様は、本背景を使用する様々な例の議論を通じて正しく認識されることが可能である。
【００２０】
本開示の実施形態は、様々なオペレーティング・システム構成のセットの中からコンピューティング・システムのユーザが選ぶことを可能にし、コンピューティング・システムにおいてブートされる前に、選ばれた構成が、修正、変更、またはそうでなければ改ざんされていないことを保証できる方法、システム、およびコンピュータ・プログラム製品を含む。本明細書で開示された実施形態は、セキュリティ、アクセスの柔軟性、およびコンピューティング・システムの管理における利点をもたらす。
【００２１】
本開示の実施形態は、ブート前環境において、特に、コンピューティング・システムに格納されたオペレーティング・システム構成のセットから選択されたオペレーティング・システム構成の真正性を保証するために、セキュア・ブート技法が、本明細書で説明される技法を使用して拡張されるか、そうでなければ拡大されることが可能であるという認識に基づく。統合拡張可能ファームウェア・インターフェース・セキュア・ブート（Unified Extensible Firmware Interface Secure Boot）（以下、「ＵＥＦＩセキュア・ブート」）などのセキュア・ブート技法は、オペレーティング・システムをブートする前に、保護されていないコンピュータ実行可能コード（以下、「コード」）の実行を防ぐことによって、ブート前環境におけるコンピューティング・システムのセキュリティを向上させる。１つの例において、セキュア・ブート技法は、コンピューティング・システムの製造中に、コンピューティング・システムの保護された不揮発性メモリ内の変数のセットに、非対称鍵のペア（例えば公開鍵と秘密鍵のペア）のセットのうちの公開鍵のセット（例えば１つまたは複数）を格納する。コンピューティング・システムにおいて実行することを承認される（または権限を与えられる）各アプリケーション（例えばコンピュータ・プログラム）は、格納された公開鍵のセットの中に対応する公開鍵を有する秘密鍵を使用して署名される。コンピューティング・システムがブート前状態にある間、アプリケーションを実行する前に、信頼できるアプリケーションは、格納された公開鍵のセット内の公開鍵のうちの１つに対応する秘密鍵でアプリケーションがデジタル的に署名されていることを検証することによって、実行されることになるアプリケーションの実行可能コードの整合性を検証する。このセキュア・ブート技法に関する１つの問題は、権限を与えられた署名者のセット（または秘密鍵のセット）が、コンピューティング・システムの製造より前に、または同時に決定されるというものである。新しいオペレーティング・システムをセキュアにできるが、コンピューティング・システムは、例えば、オペレーティング・システムをコンピューティング・システムにディプロイする前に、所定の権限を与えられた署名者のセットのうちの１つが、オペレーティング・システムにデジタル的に署名することを必要とし得る。
【００２２】
セキュア・ブート技法は、コンピューティング・システムにおいてブートされ得るアプリケーションを認証するための追加の公開鍵をエンド・ユーザが追加できるようにするための信頼できるアプリケーションのセットを提供することができる。ＵＥＦＩセキュア・ブートは、例えば、製造中に設定された公開鍵のセットにユーザが公開鍵を追加できるようにするための「ｍｏｋｕｔｉｌ」、「ｓｈｉｍ」、および「ｇｒｕｂ」アプリケーションを提供する。新しい公開鍵（例えば、コンピューティング・システムに追加されることになる新しいオペレーティング・システム・カーネル・イメージに対応する）が追加されることになるコンピューティング・システムにおいてブートされるオペレーティング・システムにログインしたユーザは、ｍｏｋｕｔｉｌを実行して新しい公開鍵を設定する。ｍｏｋｕｔｉｌアプリケーションは、コンピューティング・システムが次にブートされる時に、ｓｈｉｍによってのみアクセスされることが可能な不揮発性メモリに新しい公開鍵を書き込む。ｓｈｉｍアプリケーションは、例えばコンピューティング・システムの保護メモリに組み込まれた信頼できるアプリケーションであることが可能である。さらに、コンピューティング・システムは、ｓｈｉｍが、コンピューティング・システムが再起動された後に実行される最初のアプリケーションであることを保証するように構成されることが可能である。コンピューティング・システムが次に再起動されるとき、ｍｏｋｕｔｉｌによる更新に続いて、ＵＥＦＩセキュア・ブート・システムは、ｓｈｉｍアプリケーションを検証して実行する。ｓｈｉｍアプリケーションは次に、ｍｏｋｕｔｉｌによって書かれた不揮発性メモリの領域を読み込み、新しい公開鍵が格納されたかどうかを判断する。ｓｈｉｍは、新しい公開鍵を検出することに応答して、格納された公開鍵のセットまたはデータベースに新しい公開鍵がコミットされるべきかどうかを確認するように、ローカル・コンソールにおいてユーザに促すことができる。ｓｈｉｍは、ユーザが肯定確認を行わない場合、新しい公開鍵を消去（または削除）する。一方、ｓｈｉｍは、ユーザが肯定確認を行うと、ｓｈｉｍアプリケーションへのコールを介して、ｇｒｕｂによって排他的に使用される不揮発性メモリの別の領域（例えば受け入れられた公開鍵全てを格納するデータベース）に新しい公開鍵を移す。新しい公開鍵はその後、新しいカーネル・イメージを認証するのに利用可能である。
【００２３】
オペレーティング・システム・カーネルをセキュアにブートするために、ｓｈｉｍは、任意の新しい鍵をコンピューティング・システムにコミットした後、ｇｒｕｂを認証して実行する。ｇｒｕｂは、ｇｒｕｂの構成ファイルを使用して、どのカーネル・イメージをブートすべきかを判断する。ブートすべきオペレーティング・システム・カーネルを識別した後、ｇｒｕｂは、ｓｈｉｍアプリケーションをコールして、コンピューティング・システムの公開鍵データベースに格納された公開鍵のうちの１つに対応する秘密鍵によってカーネル・イメージが署名されていることを検証することによって、カーネル・イメージを認証してブートする。ブートされると、オペレーティング・システム・カーネルは、コンピューティング・システムにカーネル・モジュールがロードされることをリクエストされるときに、カーネル・モジュールを同様に認証することができる。
【００２４】
これらのセキュア・ブート技法は、ユーザが、オペレーティング・システムの正しく署名されたバージョンにアクセスでき、オペレーティング・システムに署名するために使用された秘密鍵に対応する公開鍵を維持する場合、コンピューティング・システムに新しいオペレーティング・システムをユーザがロードすることを可能にすることができる。しかし既知のセキュア・ブート技法は、コンピューティング・システムにおいてブートするために、コンピューティング・システムに格納されたオペレーティング・システム構成のセットからオペレーティング・システム構成をユーザが選択できるようにはしない。さらに、既知のセキュア・ブート技法は、修正も、そうでなければ改ざんも行われることなく、選択されたオペレーティング・システム構成がブートされることをコンピューティング・システムが保証できるようにしない。
【００２５】
本開示の実施形態は、非対称鍵のペアの秘密鍵によってデジタル署名され、システムに格納された１つ以上のオペレーティング・システム構成から成るセットから１つのオペレーティング・システム構成をブートするリクエストを受け取ることと、公開鍵の保護されたデータベースを更新するように構成された信頼できるアプリケーションに非対称鍵のペアの公開鍵を自動的に提供することと、コンピューティング・システムにユーザが物理的に存在することを利用して、オペレーティング・システム構成をロードするリクエストを検証することと、オペレーティング・システム構成を認証してブートすることと、によって、既知のセキュア・ブート技法を改善する方法、システム、およびコンピュータ・プログラム製品を提供する。
【００２６】
本明細書で使用されるように、信頼できるアプリケーションは、その実行可能コードが認証されているか、そうでなければ、実行可能コードを改変する権限のない者によって改変されないことが保証されているアプリケーションである。実行可能コードは、既知のデジタル署名および検証技法を使用して認証されることが可能である。実行可能コードは、例えば、非対称鍵のペアの秘密鍵を使用してコードを暗号化することによって署名されることが可能である。コードの整合性は、その後、非対称鍵のペアの公開鍵を使用して、署名されたコードの署名を検証することによって認証されることが可能である。例えば、署名されたコードへの署名後の変更により、署名されたコードの署名を検証できないとき、認証は失敗する。
【００２７】
本明細書で使用されるように、鍵データベースは、デジタル鍵（例えば非対称鍵のペアの公開鍵）のセットを格納するように構成された保護メモリの領域であることが可能である。保護メモリは、信頼できるアプリケーション、またはアプリケーションの選択されたグループに対してのみアクセス可能な（例えば読込み可能または書込み可能な）メモリであることが可能である。
【００２８】
本明細書で使用されるように、コンピューティング・システムのブート前状態は、コンピューティング・システムが再起動した後、かつコンピューティング・システムがオペレーティング・システムをブートする前の、コンピューティング・システムの状態であることが可能である。オペレーティング・システムのブート状態は、オペレーティング・システムがコンピューティング・システムにおいてブートされた後のコンピューティング・システムの状態である。
【００２９】
本明細書で使用されるように、オペレーティング・システム構成は、ブート可能なオペレーティング・システム・カーネル・イメージ（以下、「オペレーティング・システム・カーネル」または「カーネル」）、および１つまたは複数のカーネル・パラメータ値（例えばパラメータ値）の関連付けられたセットを有するデータ・オブジェクトであることが可能である。いくつかの実施形態において、カーネル・パラメータ値は、ハードコードされた（例えばオペレーティング・システム・カーネルの実行可能コードにコンパイルされた）固定コマンド・ライン・パラメータ値であっても良い。カーネル・パラメータ値をハードコードすることは、オペレーティング・システム・カーネルがコンパイルされるときに、１つまたは複数のコンパイラ・オプションを使用してコンパイラにパラメータ値を設定することを含むことができる。カーネル・パラメータ値をハードコードすることは、ハードコードされたカーネル・パラメータ値をブートローダまたは他のアプリケーションがオーバーライドするのを防ぐために、コンパイル・オプションを使用して、オペレーティング・システム・カーネルをコンパイルすることをさらに含むことができる。一定の実施形態において、カーネル・パラメータ値は、オペレーティング・システム・カーネルとは別のデータ・オブジェクトにおいて設定されることが可能である。
【００３０】
データ・オブジェクトは、本明細書で使用されるように、単一のカーネル・イメージであることが可能である。データ・オブジェクトは、オペレーティング・システム・カーネル、および追加のデータ・オブジェクトのセットを有するデータ構造であることも可能である。オペレーティング・システムに署名することは、データ・オブジェクトまたはデータ・オブジェクトの各構成要素あるいはその両方に署名することを含むことができる。
【００３１】
カーネル・パラメータがハードコードされるコンピューティング・システムにおいてオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルをブートローダに渡すことと、コンピューティング・システムにおいてオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。同様に、オペレーティング・システム・カーネルとは別のデータ・オブジェクトに１つまたは複数のカーネル・パラメータ値が格納されるオペレーティング・システム構成をブートすることは、オペレーティング・システム・カーネルと１つまたは複数のカーネル・パラメータ値の両方をブートローダに渡すことと、１つまたは複数のカーネル・パラメータ値を有するオペレーティング・システム・カーネルをロードして実行することをブートローダに行わせることと、を含むことができる。
【００３２】
所与のオペレーティング・システム・カーネルについて、オペレーティング・システム構成は、オペレーティング・システム構成の、アクセス制御ポリシの実施によって特徴付けられることが可能である。これは、構成のセキュリティ・レベルと呼ばれることが可能である。コンピューティング・システムは、例えば、アクセス制御ポリシを実施するための、特に、ＳＥＬｉｎｕｘ（Security Enhanced Linux）モジュールと共にインストールされたＬｉｎｕｘ（登録商標）カーネルのディストリビューションを有することができる。例を続けると、コンピューティング・システムは、低、中、および高という、オペレーティング・システム構成の３つのタイプ（例えばセキュリティ・レベル）をサポートするように構成されることも可能である。低構成を使用してブートされたＬｉｎｕｘカーネルは、ＳＥＬｉｎｕｘを無効にして、アクセス制御ポリシの実施を防ぐことができる一方で、中構成を使用してブートされたＬｉｎｕｘカーネルは、パーミッシブ・モードまたはデバッグ・モードの状態にあるＳＥＬｉｎｕｘが、アクセス制御ポリシを実施するのではなく監視することを可能にすることができる。さらに、高構成を使用してブートされたＬｉｎｕｘカーネルは、コンピューティング・システムがブートされる間、強制アクセス制御ポリシを、実施モードの状態にあるＳＥＬｉｎｕｘが実施することを可能にすることができる。この例のコンピューティング・システムは、したがって、３つの別個のオペレーティング・システム構成をサポートすることができ、各構成は、例えば、特定のアクセス・ポリシの実施レベル、すなわちセキュリティ・レベルを可能にするようにセットされたカーネル・パラメータ値でコンパイルされた、Ｌｉｎｕｘカーネル、および関連付けられたＳＥＬｉｎｕｘモジュールを有する。
【００３３】
ここから図を参照すると、図１は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート１００を示している。本明細書で説明されるように、フローチャート１００の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピュータ３０５（図３）またはコンピューティング・デバイス６００（図６）であることが可能である。一定の実施形態において、コンピューティング・システムは、１つまたは複数の計算ノードまたはコンピューティング・デバイスを含むことができる。フローチャート１００に図示された様々な動作は、コンピューティング・システムのソフトウェア、ファームウェア、およびハードウェア構成要素を使用して実行されることが可能である。コンピューティング・システム全体を含め、これらの構成要素は、本明細書において、まとめてコンピューティング・システムと呼ばれる。フローチャート１００に示される各動作は、コンピューティング・システムによって、または１つもしくは複数のイベント（例えばユーザ・アクションまたはリクエスト）に応答して、自動的に実行されることが可能である。
【００３４】
コンピューティング・システムは動作１０５を実行し、オペレーティング・システム構成をブートするリクエストを受け取ることができる。リクエストは、リモート・ユーザ・インターフェース端末（例えば、例えばデータ通信ネットワークを通じてコンピューティング・システムに連結されたユーザ・インターフェース端末）から受け取られることが可能である。リクエストは、ローカル・ユーザ・インターフェース端末（例えば、コンピューティング・システムに物理的に接続されたユーザ・インターフェース端末）から受け取られることも可能である。ローカル・ユーザ・インターフェース端末を使用して、リクエストを出す、またはコンピューティング・システムと相互作用するユーザは、コンピューティング・システムの物理的な存在下にいること、またはコンピューティング・システムを物理的に保有しているとユーザが仮定され得るほどコンピューティング・システムに極めて接近していること、を要求される。
【００３５】
本明細書で説明されるように、コンピューティング・システムは、動作１１０を実行し、リクエストされたオペレーティング・システム構成を認証するためのデジタル鍵を格納することができる。デジタル鍵は、リクエストされたオペレーティング・システム構成を署名するために個々の秘密鍵が使用された、非対称鍵のペアの公開鍵であることが可能である。実施形態において、デジタル鍵は、不揮発性メモリに格納されることが可能である。不揮発性メモリは、永続性ランダム・アクセス・メモリ（ＲＡＭ）、フラッシュ・メモリ、システム・ストレージを含むことができるがこれらに限定されない。いくつかの実施形態において、コンピューティング・システムは、再起動後に、デジタル鍵があるか不揮発性メモリを自動的にチェックするように構成されることが可能である。
【００３６】
コンピューティング・システムは動作１１５を実行し、コンピューティング・システムを再起動させることができる。いくつかの実施形態において、コンピューティング・システムは、動作１１０の実行に応答して自動的に再起動することができる。様々な実施形態において、コンピューティング・システムは、ユーザ・インターフェース端末から、再起動させるリクエストを受け取ることに応答して、再起動することができる。
【００３７】
コンピューティング・システムがブート前状態にある間、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するために、ローカル・ユーザ・インターフェース端末においてリクエストをユーザに送信することができる。コンピューティング・システムは次に動作１２０を実行し、リクエストされたオペレーティング・システム構成をブートするリクエストを確認する信号を、ローカル・ユーザ・インターフェース端末から受け取ることができる。動作１２０を実行することは、コンピューティング・システムにおいてブートされるオペレーティング・システム構成の変更（例えば、アクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルへの起こり得る変更）をリクエストしているユーザが、コンピューティング・システムに物理的にアクセスできることを保証することができる。この動作は、コンピューティング・システムのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベルを、権限のないユーザがリモートに変更するという可能性を制限することができる。
【００３８】
まだブート前状態にある間、コンピューティング・システムは動作１２５を実行し、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。コンピューティング・システムは次に動作１３０を実行し、リクエストされたオペレーティング・システム構成をブートすることができる。
【００３９】
いくつかの実施形態において、コンピューティング・システムは、再起動することに応答して、動作１１０の中で格納されたデジタル鍵が、コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に対応することを検証する（例えば実証する）か、判断することができる。この検証は、コンピューティング・システムに格納され、実行する権限を与えられたオペレーティング・システム構成が、デジタル鍵に対応する秘密鍵によって署名されたかどうかを判断することを含むことができる。検証動作は、既知のまたは承認された構成だけがブートするために考慮されるということを保証することによってブート前環境、およびブートされたシステムの整合性を保証するのに役立つ。
【００４０】
いくつかの実施形態において、コンピューティング・システムは、動作１２０の中で確認を受け取ることに応答して、デジタル鍵を保護メモリに移すことができる。ストレージ・システムは、例えば、特定の信頼できる（例えば、セキュアな、または認証された）アプリケーションによってのみ書込み可能な鍵データベースまたはリポジトリにデジタル鍵を移すことができる。これらの実施形態は、リクエストされたオペレーティング・システム構成の有効性および真正性を、信頼できるアプリケーションが検証できるようにするために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。これはまた、ローカル・ユーザ・インターフェース端末にユーザがアクセスできることを必要とせずに、再起動後に、リクエストされたオペレーティング・システム構成をコンピューティング・システムがブートできるようにする。
【００４１】
いくつかの実施形態において、保護メモリ（例えば鍵データベース）は、（例えば保護メモリに格納されたデジタル鍵を使用して）コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証されたソフトウェア・アプリケーションによる書込みだけが可能である。これらの実施形態は、新しく、場合によっては不正な鍵をコンピューティング・システムに追加できる当事者の数を制限することによって、リクエストされたオペレーティング・システム構成の真正性を強化するといった利点をもたらすことができる。
【００４２】
いくつかの実施形態において、リクエストされたオペレーティング・システム構成を認証することは、保護メモリからデジタル鍵を取得することと、取得した鍵を使用して、リクエストされたオペレーティング・システム構成の署名を検証することと、を含む。これらの実施形態は、構成がブートされる前に、オペレーティング・システム構成が修正されていないことを保証するために、セキュア・ブート技法の既存のアーキテクチャを活用するといった利点をもたらすことができる。
【００４３】
様々な実施形態によれば、動作１０５の中でリクエストされたオペレーティング・システム構成は、オペレーティング・システム・カーネル、およびオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル、すなわちセキュリティ・レベル（例えばアクセス制御ポリシ）を強化するためのカーネル・パラメータ値のセットを含むことができる。一定の実施形態において、本明細書で説明されるように、カーネル・パラメータ値のセットは、オペレーティング・システム・カーネルの実行可能コードにコンパイルされる。
【００４４】
図２は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットの例のフローチャート２００を示している。本明細書で説明されるように、フローチャート２００の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・システムによって実行されることが可能である。フローチャート２００に示された各動作は、コンピューティング・システムによって、または１つもしくは複数のイベント（例えばユーザ・アクションもしくはリクエスト）に応答して、自動的に実行されることが可能である。
【００４５】
コンピューティング・システムは、例えば、コンピューティング・システムにおいてブートできるオペレーティング・システム構成のセットを生成することによって動作２０５を実行することができる。オペレーティング・システム構成は、カーネル・パラメータ値のセットと共にオペレーティング・システム・カーネルを含むことができる。カーネル・パラメータ値は、関連付けられたオペレーティング・システム・カーネルのアクセス制御ポリシの実施レベル（すなわちセキュリティ・レベル）を構成することができる。各構成は、さらに、例えば、オペレーティング・システム構成の実行可能コードの整合性を保証するために、非対称の公開鍵と秘密鍵のペアの異なる秘密鍵で、デジタル的に署名されることが可能である。各秘密鍵に対応する公開鍵は、コンピューティング・システムに格納されることも可能である。
【００４６】
コンピューティング・システムは、動作２１０を実行して、選択されたオペレーティング・システム構成をブートするリクエスト（例えばブート・リクエスト）を受け取ることができる。本明細書で説明されるように、リクエストは、リモート・ユーザ・インターフェース端末またはローカル・ユーザ・インターフェース端末から受け取られることが可能である。
【００４７】
動作２１５において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成に署名するために使用された秘密鍵と関連付けられたデジタル鍵（例えば公開鍵）を格納することができる。本明細書で説明されるように、デジタル鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。いくつかの実施形態において、コンピューティング・システムは、コンピューティング・システムが次に再起動されるときに、リクエストされたオペレーティング・システム構成をブートすることをブートローダに行わせるために、ブートローダの構成（例えば構成ファイル）をさらに更新することができる。
【００４８】
動作２２０において、コンピューティング・システムは、再起動すること（例えばリブートすること）ができる。本明細書で説明されるように、コンピューティング・システムは次に、コンピューティング・システムがブート前状態にある間、以下の動作を実行することができる。
【００４９】
動作２２５において、本明細書で説明されるように、コンピューティング・システムは、デジタル鍵を検証して、コンピューティング・システムにおいてブートする権限を与えられている既知の（例えば格納済みの）オペレーティング・システム構成にデジタル鍵が対応するかどうかを判断することができる。コンピューティング・システムは、公開鍵が検証されると動作２３０に進むことができ、また一方で、コンピューティング・システムは、リクエストされたオペレーティング・システム構成を検証できないと判断することに応答して、動作２５０に進むことができる。
【００５０】
動作２３０において、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認することができる。動作２３０を実行することは、リクエストされたオペレーティング・システム構成をブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末において、リクエストしているユーザに促すことを含むことができる。コンピューティング・システムは次に、ローカル・ユーザ・インターフェース端末から確認信号またはメッセージを受け取ることができる。受け取った確認信号は、電圧、またはデジタル文字のセットを含む任意の電子信号を含むことができる。受け取った確認信号は、肯定確認または否定確認であることが可能である。受け取った確認信号が肯定確認であるとき、コンピューティング・システムは動作２３５に続くことができるが、受け取った確認信号が否定確認であるとき、コンピューティング・システムは動作２５０に進むことができる。さらに、本明細書で説明されるように、コンピューティング・システムは、肯定確認を受け取ることに応答して、（例えば動作２３５を実行する代わりに）デジタル鍵を保護メモリに移すことができる。
【００５１】
動作２３５において、本明細書で説明されるように、コンピューティング・システムは、コンピューティング・システムの保護メモリにデジタル鍵を移すことができる。いくつかの実施形態において、コンピューティング・システムは、動作２３０を実行する前に、動作２３５を実行することができる。
【００５２】
動作２４０において、本明細書で説明されるように、コンピューティング・システムは、保護メモリからデジタル鍵を取得するか読み込み、デジタル鍵を使用して、リクエストされたオペレーティング・システム構成を認証することができる。リクエストされたオペレーティング・システム構成を認証することは、リクエストされたオペレーティング・システム構成が秘密鍵を使用して署名された後、リクエストされたオペレーティング・システム構成が修正されなかったと判断することを含むことができる。リクエストされたオペレーティング・システム構成が正当なものとして認証された場合には、コンピューティング・システムは動作２４５に続くことができるが、リクエストされたオペレーティング・システム構成が正当なものとして認証されない場合には、コンピューティング・システムは動作２５０に続くことができる。
【００５３】
動作２４５において、本明細書で説明されるように、コンピューティング・システムは、リクエストされたオペレーティング・システム構成をブートすることができる。コンピューティング・システムは、動作２５５においてフローチャート２００の動作を終えることができる。
【００５４】
動作２５０において、コンピューティング・システムは、不揮発性メモリまたは保護メモリあるいはその両方からデジタル鍵を削除または消去することができる。コンピューティング・システムは次に、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することができる。いくつかの実施形態において、他の動作（例えば、動作２２５、動作２３０、および動作２４０）から動作２５０に達することに応答して、コンピューティング・システムは、秘密鍵を削除しなくともよい。これらの実施形態では、コンピューティング・システムは、リクエストされたオペレーティング・システム構成がブートされることが不可能であることを提示することによってブート処理を中止することができる。
【００５５】
図３は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのシステム３００の例のブロック図を示している。本明細書で説明されるように、システム３００は、本開示の動作を実行するように構成されたコンピューティング・システムであることが可能である。システム３００は、コンピューティング・デバイス３０５およびローカル・ユーザ・インターフェース３８０（例えばローカル・ユーザ・インターフェース端末）を含む。いくつかの実施形態において、システム３００は、リモート・ユーザ・インターフェース３７０（例えばリモート・ユーザ・インターフェース端末）およびデータ通信ネットワーク３７５を含むことができる。
【００５６】
コンピューティング・デバイス３０５は、プロセッサ３１０、メモリ３１５、ストレージ３２０、およびセキュリティ構成要素３２５を含むことができる。本明細書で説明されるように、コンピューティング・デバイス３０５は、選択されたオペレーティング・システム構成をセキュアにロードするように構成されたコンピューティング・デバイスであることが可能である。プロセッサ３１０は、メモリ３１５にロードされる、ユーザ・アプリケーション３３０および信頼できるアプリケーション３６０を含むアプリケーションを実行することができる。
【００５７】
ストレージ３２０は、ストレージ・デバイス６２８（図６）などのストレージ・デバイスであることが可能である。ストレージ３２０は、コンピューティング・デバイス３０５における実行のためのオペレーティング・システム構成を含むアプリケーションを格納することができる。ストレージ・デバイスは、例えば、ユーザ・アプリケーション３３０、ブートローダ３３５、オペレーティング・システム構成Ａ３４０、およびオペレーティング・システム構成Ｂ３４５を格納することができる。
【００５８】
ユーザ・アプリケーション３３０は、コンピューティング・デバイス３０５にログインしたユーザによって実行可能なソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ユーザ・アプリケーション３３０は、図４において論じられるユーザ・アプリケーションと実質的に同じであることが可能であり、同じ動作を実行することができる。ユーザ・アプリケーション３３０は、例えば、コンピューティング・デバイス３０５におけるオペレーティング・システム構成を変更するリクエストをユーザが送信できるようにするために実行されることが可能である。いくつかの実施形態において、本明細書で説明されるように、ユーザ・アプリケーション３３０は、ブートローダ３３５の構成を更新するために実行されることが可能である。
【００５９】
ブートローダ３３５は、オペレーティング・システム構成Ａ３４０およびオペレーティング・システム構成Ｂ３４５などの、オペレーティング・システム構成をブートするために、コンピューティング・デバイス３０５において実行する権限を与えられたソフトウェア・アプリケーションであることが可能である。いくつかの実施形態において、ブートローダ３３５は、ブートローダ３３５の実行可能コードの整合性を保証するために、公開鍵と秘密鍵のペアの秘密鍵によって署名されることが可能である。コンピューティング・デバイス３０５の再起動後、ブートローダ３３５は、ブートローダの構成に基づいて、事前に選択されたオペレーティング・システム構成を認証してブートするために、信頼できるアプリケーション（例えば信頼できるアプリケーション３６０）によって実行されることが可能である。
【００６０】
オペレーティング・システム構成Ａ３４０およびオペレーティング・システム構成Ｂ３４５は、コンピューティング・デバイス３０５に格納された２つの別個のブート可能なオペレーティング・システム構成であることが可能である。本明細書で説明されるように、各オペレーティング・システム構成は署名されることが可能であり、オペレーティング・システム・カーネル、および関連付けられたカーネル・パラメータ値のセットを含むことができる。いくつかの実施形態において、オペレーティング・システム構成Ａ３４０およびオペレーティング・システム構成Ｂ３４５は両方、同じオペレーティング・システム・カーネル、および異なるカーネル・パラメータ値のセットを有することができる。一定の実施形態において、オペレーティング・システム構成Ａ３４０およびオペレーティング・システム構成Ｂ３４５は、異なるオペレーティング・システム・カーネル、および類似のカーネル・パラメータ値を有することができる（例えば、カーネル・パラメータ値は、同じアクセス・ポリシの実施レベルを有するように各構成がブートされることを保証することができる）。
【００６１】
セキュリティ構成要素３２５は、コンピューティング・デバイス３０５においてブートするアプリケーションの実行可能コードの整合性または真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。いくつかの実施形態において、セキュリティ構成要素３２５は、ユーザ・アクセス可能な不揮発性メモリ３５０、保護された不揮発性メモリ３５５、信頼できるアプリケーション３６０、およびデータベース３６５を含むことができる。個別の構成要素として示されるが、セキュリティ構成要素３２５の全てまたは一部は、コンピューティング・デバイス３０５の１つまたは複数の他の構成要素に含まれることが可能である。
【００６２】
本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリ３５０は、コンピューティング・デバイス３０５のユーザによって実行可能なアプリケーションによって少なくとも書き込むためにアクセス可能な任意の不揮発性メモリであることが可能である。ユーザ・アクセス可能な不揮発性メモリ３５０は、例えば、バッテリ・バックアップ式のランダム・アクセス・メモリ、フラッシュ・メモリ、またはストレージ３２０の領域であることが可能である。一定の実施形態において、本明細書で説明されるように、ユーザ・アクセス可能な不揮発性メモリは、コンピューティング・デバイス３０５においてブートするために選択されたオペレーティング・システム構成に対応する公開鍵を一時的に格納するためのステージング領域としての役割を果たすことができる。
【００６３】
保護された不揮発性メモリ３５５は、アプリケーションの選択されたセット（例えば信頼できるアプリケーション３６０およびブートローダ３３５）のみからアクセス可能な不揮発性メモリの領域であることが可能である。いくつかの実施形態において、メモリ３５５は、信頼できるアプリケーション３６０によってのみ、またコンピューティング・デバイス３０５のブート前状態の間にのみ、書き込まれることが可能である。一定の実施形態において、保護された不揮発性メモリ３５５は、コンピューティング・デバイス３０５においてブートすることができるアプリケーションを認証するための検証された公開鍵のセット、すなわちデータベースを格納する。
【００６４】
信頼できるアプリケーション３６０は、コンピューティング・デバイス３０５によって認証された実行可能コードを有し、コンピューティング・デバイス３０５が再起動するときに自動的に実行するように構成されたアプリケーションであることが可能である。いくつかの実施形態において、信頼できるアプリケーション３６０は、ユーザ・アクセス可能な不揮発性メモリ３５０の所定の場所に格納された新しい公開鍵を自動的にチェックすること、および新しい公開鍵の有効性を検証すること、を行うように構成されることが可能である。信頼できるアプリケーション３６０は、本明細書において論じられる信頼できるアプリケーションの動作を実行するように構成されることも可能である。
【００６５】
データベース３６５は、コンピューティング・デバイス３０５においてブートすることができるアプリケーションを認証するための公開鍵のリポジトリであることが可能である。いくつかの実施形態において、データベース３６５は、保護された不揮発性メモリ３５５の一部であることが可能である。一定の実施形態において、データベース３６５に格納された１つまたは複数の公開鍵は、コンピューティング・デバイス３０５の製造中に書き込まれ、デジタル的に署名されることが可能である。
【００６６】
ローカル・ユーザ・インターフェース３８０は、コンピューティング・デバイス３０５に対する入出力動作をユーザが実行することを可能にするように構成されたユーザ・インターフェース端末であることが可能である。ローカル・ユーザ・インターフェース３８０は、コネクタ（例えば、データ・ケーブル、映像ケーブル、または他の入出力ケーブルもしくはバス）によってコンピューティング・デバイス３０５に物理的に接続されることが可能である。様々な実施形態によれば、ローカル・ユーザ・インターフェース３８０は、信頼できるアプリケーション３６０と、コンピューティング・デバイス３０５の物理的な保有状態にあるか、物理的な存在下にあるユーザとの間の相互作用を可能にすることができる。
【００６７】
図４は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットからユーザが選択したオペレーティング・システム構成をセキュアにブートするためのコンピュータ実行動作のセットのフローチャート４００を示している。本明細書で説明されるように、フローチャート４００の動作は、アプリケーションをセキュアにブートするように構成されたコンピューティング・デバイスによって実行されることが可能である。フローチャート４００に示された各動作は、コンピューティング・デバイスによって、または１つもしくは複数のイベント（例えばユーザ・アクションもしくはリクエスト）に応答して、自動的に実行されることが可能である。
【００６８】
動作４０５において、コンピューティング・デバイスは、第１のオペレーティング・システム構成（Ｏ／Ｓ構成Ａ）の下で実行しているユーザ・アプリケーションから、第２のオペレーティング・システム構成（Ｏ／Ｓ構成Ｂ）をブートするリクエストを受け取ることができる。リクエストは、ユーザがコンピューティング・デバイスにアクセスすること、およびユーザ・アプリケーションを実行することを可能にする任意の端末またはデバイスから受け取られることが可能である。いくつかの実施形態において、ユーザは、資格証明書のセット（例えば、権限を与えられたユーザ・アカウントと関連付けられたユーザ名およびパスワード）を使用して、コンピューティング・デバイスにアクセスし、ユーザ・アプリケーションを実行することができる。
【００６９】
本明細書で説明されるように、オペレーティング・システム構成Ｂは、カーネル・パラメータ値のセットを有するオペレーティング・システム・カーネルを含むことができる。オペレーティング・システム構成Ｂは、公開鍵と秘密鍵のペア（例えば非対称鍵のペア）の秘密鍵によって署名されることが可能である。いくつかの実施形態において、Ｏ／Ｓ構成Ｂは、Ｏ／Ｓ構成Ａに含まれるオペレーティング・システム・カーネルと同じオペレーティング・システム・カーネルを含むことができる。しかしＯ／Ｓ構成Ｂは、Ｏ／Ｓ構成Ａに含まれるカーネル・パラメータ値のセットとは異なるカーネル・パラメータ値のセットを有することができる。上述のオペレーティング・システム構成の例を思い出すと、Ｏ／Ｓ構成ＡとＯ／Ｓ構成Ｂの両方は、ＳＥＬｉｎｕｘモジュールを有するＬｉｎｕｘカーネルを含むことができる。しかし、Ｏ／Ｓ構成Ａが、高アクセス制御実施セキュリティ・レベルでＬｉｎｕｘカーネルをブートするためのカーネル・パラメータ値を含むことができる一方で、Ｏ／Ｓ構成Ｂは、中アクセス制御実施セキュリティ・レベルでＬｉｎｕｘカーネルをブートするためのカーネル・パラメータ値を含むことができる。
【００７０】
本明細書で説明されるように、動作４１０において、コンピューティング・デバイスは、Ｏ／Ｓ構成Ｂに署名するために使用された秘密鍵に対応する公開鍵を不揮発性メモリに格納することができる。いくつかの実施形態において、ユーザ・アプリケーションまたは別のアプリケーションが、コンピューティング・デバイスに動作４１０を実行させることができる。
【００７１】
動作４１５において、コンピューティング・デバイスは、再起動することができる。再起動後に、コンピューティング・デバイスは、動作４２０と一致してブート前状態にある間、動作４２５および動作４３０を実行することができる。
【００７２】
動作４２５において、コンピューティング・デバイスは、信頼できる（例えば、セキュアな、または修正されていないことが保証された）アプリケーションを実行して、Ｏ／Ｓ構成Ｂをブートするリクエストを確認する信号を受け取ることができる。いくつかの実施形態において、信頼できるアプリケーションは、ＵＥＦＩのｓｈｉｍプログラムに実質的に似ていることが可能である。コンピューティング・システムは、コンピューティング・システムが再起動した後、信頼できるアプリケーションを自動的にロード、認証、および実行するように構成されることが可能である。信頼できるアプリケーションは、不揮発性メモリの特定の領域（例えば動作４１０の中で書き込まれた不揮発性メモリの領域）を読み込み、コンピューティング・システムに新しい公開鍵が追加されたかどうかを判断するように構成されることが可能である。信頼できるアプリケーションは、新しい公開鍵を検出することに応答して、その公開鍵が既知のオペレーティング・システム構成（例えばコンピューティング・システムにおいてブートする権限を与えられたオペレーティング・システム構成）に対応することを検証するようにさらに構成されることが可能である。本明細書で説明されるように、公開鍵を検証することに応答して、信頼できるアプリケーションは、コンピューティング・デバイスの保護メモリに公開鍵をコピーすること、移送すること、または移すことができる。いくつかの実施形態において、保護メモリは、信頼できるアプリケーションによってのみ書込み可能である。さらに、保護メモリは、コンピューティング・デバイスがブート前状態にある間のみ、書き込まれることが可能である。
【００７３】
動作４３０において、コンピューティング・デバイスは、ブートローダを実行して、Ｏ／Ｓ構成Ｂを認証してブートすることができる。いくつかの実施形態において、信頼できるアプリケーションは、コンピューティング・システムに代わって、ブートローダをロードして、認証し、その後、実行することができる。認証されたブートローダは、ブートする前に、保護メモリから公開鍵を読み込み、公開鍵を使用して、Ｏ／Ｓ構成Ｂを認証することができる。ブートローダは、認証が成功するとＯ／Ｓ構成Ｂをブートすることができる一方で、ブートローダは、認証が成功しないと（例えば、署名された後にＯ／Ｓ構成Ｂが変更されたことをブートローダが検出すると）ブート処理を中止することができる。
【００７４】
フローチャート４００の動作は、動作４３５で終わることができる。
【００７５】
いくつかの実施形態において、Ｏ／Ｓ構成Ｂにおけるカーネル・パラメータ値のセットは、コンピューティング・システムにおいてＯ／Ｓ構成Ｂがブートされる間にロード可能なソフトウェア・モジュールを決定する。さらに、様々な実施形態において、パラメータ値のセットは、Ｏ／Ｓ構成Ｂの下でのアクセス制御権の実施（例えばアクセス制御ポリシの実施レベル）を決定することができる。本明細書で説明されるように、これらの実施形態は、コンピューティング・システムにユーザが物理的にアクセスできない限り、コンピューティング・システムの構成、およびアクセス制御ポリシが、コンピューティング・システムを使用するユーザによって変更される可能性がないこと、ならびにコンピューティング・システムを変更するために選択されたオペレーティング・システム構成の整合性が認証されることを保証するという利点をもたらす。
【００７６】
様々な実施形態によれば、本明細書で説明されるように、保護された不揮発性メモリは、コンピューティング・システムのハードウェア構成要素によって実行可能コードの整合性が認証される、信頼できるアプリケーションを含む、アプリケーションのセットによってのみ書込み可能である。これらの実施形態は、不正な公開鍵がコンピューティング・システムに追加される可能性がないことを保証するという利点をもたらす。これは、不正なオペレーティング・システム構成がコンピューティング・システムにおいてブートされる可能性があるという見込みを低減させる。
【００７７】
図５は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするための、ユーザと、コンピュータ実行動作のセットを実行するコンピューティング・システムとの間の相互作用の相互作用図５００を示している。本明細書で説明されるように、相互作用図５００は、ユーザ５０５と、オペレーティング・システム構成をセキュアにブートするように構成されたコンピューティング・システムの要素との間の相互作用を示す。相互作用図の構成要素は、ユーザ５０５、コンピューティング・システムの実行環境５１０、およびコンピューティング・システムのシステム状態５１５を含む。実行環境５１０は、ユーザ・アプリケーション５３０を実行するオペレーティング・システム構成Ａ５２５、信頼できるアプリケーション５５０、ブートローダ５６０、およびオペレーティング・システム構成Ｂ５７０であることが可能である。システム状態５１５は、図５の状況で使用されているように、コンピューティング・デバイスに格納された不揮発性データを読み込むか、修正する動作の対象を示す。ユーザ５０５は、ユーザ・インターフェース５２０（例えばローカルもしくはリモート・ユーザ・インターフェース端末）を通じて、またはローカル・ユーザ・インターフェース５４５を通じて（例えばコンピューティング・システムにユーザが物理的にアクセスできる間に）、実行環境５１０と相互作用することができる。
【００７８】
相互作用の第１のセットは、参照要素５３５によって示されるように、オペレーティング・システム構成Ａ（Ｏ／Ｓ構成Ａ）がコンピューティング・システムにおいてブートされている間に実行されることが可能である。
【００７９】
様々な実施形態によれば、ユーザ・アプリケーション５３０は、オペレーティング・システム構成Ｂ（Ｏ／Ｓ構成Ｂ）をロードするリクエスト５３１を受け取ることができる。リクエスト５３１は、ユーザ・インターフェース５２０を通じてユーザ５０５から受け取られることが可能である。ユーザ・アプリケーション５３０は次に、動作５３２のセットを実行して、Ｏ／Ｓ構成Ｂに署名するために使用された秘密鍵に関連付けられた公開鍵を格納することができる。公開鍵は、コンピューティング・システムの不揮発性メモリに格納されることが可能である。ユーザ・アプリケーション５３０は、動作５３３をさらに実行して、コンピューティング・システムの次の再起動後にＯ／Ｓ構成Ｂをブートするために、コンピューティング・システムのブートローダの構成を更新することができる。Ｏ／Ｓ構成Ａは次に、コンピューティング・システムを再起動させるリクエスト５３４を受け取ることができる。
【００８０】
参照要素５４０によって示されるように、コンピューティング・システムは次に、再起動することができる。
【００８１】
参照要素５６５によって示されるように、コンピューティング・システムがブート前状態にある間、以下の相互作用が実行される。
【００８２】
様々な実施形態によれば、信頼できるアプリケーション５５０は、動作５５１を実行して、不揮発性メモリから、格納された公開鍵を取得し、既知の（例えば有効な）署名されたオペレーティング・システム構成に、取得した公開鍵が対応することを検証する（例えば実証する）。信頼できるアプリケーション５５０は、動作５５２をさらに実行して、Ｏ／Ｓ構成Ｂをブートするリクエストを確認するように、ローカル・ユーザ・インターフェース端末５４５を通じて、ユーザ５０５に促すことができる。信頼できるアプリケーション５５０は次に、動作５５３を実行して、ユーザ５０５から確認を受け取ることができる。信頼できるアプリケーションは、動作５５４および動作５５５をさらに実行して、公開鍵を保護メモリに移し、ブートローダ５６０を認証して実行することができる。ブートローダ５６０は、動作５６１および動作５６２を実行して、保護メモリから公開鍵を取得し、Ｏ／Ｓ構成Ｂを認証してブートすることができる。いくつかの実施形態において、ブートローダ５６０は、動作５６１および動作５６２を実行し、認証（または検証）が成功すると、Ｏ／Ｓ構成Ｂ５７０をブートすることを、信頼できるアプリケーション５５０に行わせることができる。
【００８３】
コンピューティング・システムは次に、参照要素５７５によって示されるように、Ｏ／Ｓ構成Ｂの下でブート状態に入ることができる。
【００８４】
図６は、様々な実施形態による、ハードウェアおよびソフトウェアを使用して、オペレーティング・システム構成のセットから選択されたオペレーティング・システム構成をセキュアにブートするためのハードウェアおよびソフトウェア構成要素を有するコンピューティング・デバイス６００のブロック図を示している。
【００８５】
コンピューティング・デバイス６００の構成要素は、１つまたは複数のプロセッサ６０６、メモリ６１２、端末インターフェース６１８、ストレージ・インターフェース６２０、入力／出力（「Ｉ／Ｏ」）デバイス・インターフェース６２２、およびネットワーク・インターフェース６２４を含むことができ、これらの全てが、メモリ・バス６１０、Ｉ／Ｏバス６１６、バス・インターフェース・ユニット（「ＩＦ」）６０８、およびＩ／Ｏバス・インターフェース・ユニット６１４を介して、構成要素間通信のために直接的または間接的に通信可能に連結される。
【００８６】
コンピューティング・デバイス６００は、本明細書において総称的にプロセッサ６０６と呼ばれる、１つまたは複数の汎用プログラマブル中央処理装置（ＣＰＵ）６０６Ａおよび６０６Ｂを含むことができる。一実施形態において、コンピューティング・デバイス６００は、複数のプロセッサを収めることができるが、別の実施形態において、コンピューティング・デバイス６００は、一方で、単一のＣＰＵデバイスであることが可能である。各プロセッサ６０６は、メモリ６１２に格納された命令を実行する。
【００８７】
コンピューティング・デバイス６００は、プロセッサ６０６、メモリ６１２、ディスプレイ・システム６０４、およびＩ／Ｏバス・インターフェース・ユニット６１４の間の通信を行うためのバス・インターフェース・ユニット６０８を含むことができる。Ｉ／Ｏバス・インターフェース・ユニット６１４は、様々なＩ／Ｏユニットとの間でデータを移送するためにＩ／Ｏバス６１６と連結されることが可能である。Ｉ／Ｏバス・インターフェース・ユニット６１４は、Ｉ／Ｏバス６１６を通じて、Ｉ／Ｏプロセッサ（ＩＯＰ）またはＩ／Ｏアダプタ（ＩＯＡ）としても知られる複数のＩ／Ｏインターフェース・ユニット６１８、６２０、６２２、および６２４と通信することができる。ディスプレイ・システム６０４は、ディスプレイ・コントローラ、ディスプレイ・メモリ、または両方を含むことができる。ディスプレイ・コントローラは、映像、音声、または両方のタイプのデータをディスプレイ・デバイス６０２に提供することができる。ディスプレイ・メモリは、映像データをバッファするための専用メモリであることが可能である。ディスプレイ・システム６０４は、スタンドアロン・ディスプレイ画面、コンピュータ・モニタ、テレビ、タブレットもしくはハンドヘルド・デバイスのディスプレイ、または別の他の表示可能デバイスなどのディスプレイ・デバイス６０２と連結されることが可能である。一実施形態において、ディスプレイ・デバイス６０２は、音声を再生するための１つまたは複数のスピーカを含むことができる。一方、音声を再生するための１つまたは複数のスピーカは、Ｉ／Ｏインターフェース・ユニットと連結されることが可能である。代替実施形態において、ディスプレイ・システム６０４によって提供される１つまたは複数の機能は、プロセッサ６０６も含むオンボードの集積回路であることが可能である。さらに、バス・インターフェース・ユニット６０８によって提供される機能の１つまたは複数は、プロセッサ６０６も含むオンボードの集積回路であることが可能である。
【００８８】
Ｉ／Ｏインターフェース・ユニットは、様々なストレージ・デバイスおよびＩ／Ｏデバイスとの通信をサポートする。例えば、端末インターフェース・ユニット６１８は、ユーザ出力デバイス（映像表示デバイス、スピーカ、またはテレビ・セット、あるいはその組合せなど）ならびにユーザ入力デバイス（キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライト・ペン、または他のポインティング・デバイスなど）を含むことができる、１つまたは複数のユーザＩ／Ｏデバイスの接続をサポートする。ユーザは、入力データおよびコマンドをユーザＩ／Ｏデバイス６２６およびコンピューティング・デバイス６００に提供するために、ユーザ・インターフェースを使用してユーザ入力デバイスを操作することができ、ユーザ出力デバイスを介して出力データを受け取ることができる。例えば、ユーザ・インターフェースは、ディスプレイ・デバイス上に表示されること、スピーカを介して再生されること、またはプリンタを介して印刷されることなど、ユーザＩ／Ｏデバイス６２６を介して提示されることが可能である。
【００８９】
ストレージ・インターフェース６２０は、１つまたは複数のディスク・ドライブ、すなわちダイレクト・アクセス・ストレージ・デバイス６２８の接続をサポートする（これらは、一方で、ホスト・コンピュータに対して単一の大きいストレージ・デバイスのように見えるように構成されたディスク・ドライブ、またはフラッシュ・メモリなどのソリッドステート・ドライブのアレイを含む他のストレージ・デバイスである可能性もあるが、典型的には、回転式の磁気ディスク・ドライブ・ストレージ・デバイスである）。別の実施形態において、ストレージ・デバイス６２８は、任意のタイプの２次ストレージ・デバイスを介して実装されることが可能である。メモリ６１２、またはメモリ６１２の任意の部分の内容は、必要に応じて、ストレージ・デバイス６２８に格納されること、およびストレージ・デバイス６２８から取得されることが可能である。Ｉ／Ｏデバイス・インターフェース６２２は、他の様々なＩ／Ｏデバイスのいずれか、またはプリンタもしくはファックス・マシンなどの他のタイプのデバイスへのインターフェースを行う。ネットワーク・インターフェース６２４は、コンピューティング・デバイス６００から他のデジタル・デバイスおよびコンピュータ・システムへの１つまたは複数の通信経路を提供する。
【００９０】
セキュリティ構成要素６３１は、セキュリティ構成要素３２５（図３）に実質的に似ており、セキュリティ構成要素３２５の同じ機能を含むことができる。セキュリティ構成要素６３１は、コンピューティング・デバイス６００においてブートする実行可能コードの整合性またはアプリケーションの真正性を保証するためのハードウェアおよびソフトウェア構成要素を含むことができる。
【００９１】
図６に示されたコンピューティング・デバイス６００は、プロセッサ６０６、メモリ６１２、バス・インターフェース６０８、ディスプレイ・システム６０４、およびＩ／Ｏバス・インターフェース・ユニット６１４の間の直接の通信経路を提供する特定のバス構造を示すが、代替実施形態において、コンピューティング・デバイス６００は、階層式のポイント・ツー・ポイント・リンク、スター型もしくはウェブ型構成、複数階層式のバス、並列および冗長経路、または他の任意の妥当なタイプの構成など、様々な形式のいずれかで配置されることが可能な様々なバスまたは通信経路を含むことができる。さらに、Ｉ／Ｏバス・インターフェース・ユニット６１４およびＩ／Ｏバス６０８は単一の個々のユニットとして示されるが、コンピューティング・デバイス６００は、複数のＩ／Ｏバス・インターフェース・ユニット６１４または複数のＩ／Ｏバス６１６あるいはその両方を含むことができる。様々なＩ／Ｏデバイスに通じている様々な通信経路からＩ／Ｏバス６１６を分離する複数のＩ／Ｏインターフェース・ユニットが示されるが、他の実施形態において、Ｉ／Ｏデバイスのいくつかまたは全ては、１つまたは複数のシステムＩ／Ｏバスに直接的に接続される。
【００９２】
様々な実施形態において、コンピューティング・デバイス６００は、マルチ・ユーザ・メインフレーム・コンピュータ・システム、シングル・ユーザ・システム、または直接のユーザ・インターフェースがほとんどないか、全くないが、他のコンピュータ・システム（クライアント）からリクエストを受け取るサーバ・コンピュータもしくは類似のデバイスである。他の実施形態において、コンピューティング・デバイス６００は、デスクトップ・コンピュータ、携帯型コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット型コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、または他の任意の適切なタイプの電子デバイスとして実装されることが可能である。
【００９３】
一実施形態において、メモリ６１２は、データおよびプログラムを格納またはエンコードするためのランダム・アクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体（揮発性または不揮発性）を含むことができる。別の実施形態において、メモリ６１２は、コンピューティング・デバイス６００の仮想メモリ全体を表し、コンピューティング・デバイス６００に連結されるか、ネットワーク６３０を介して接続される、他のコンピュータ・システムの仮想メモリを含むこともできる。メモリ６１２は、単一のモノリシック・エンティティであることが可能であるが、他の実施形態において、メモリ６１２は、キャッシュおよび他のメモリ・デバイスの階層を含むことができる。例えば、メモリは、複数レベルのキャッシュに存在することができ、これらのキャッシュは、１つのキャッシュが命令を保持する一方で、別のキャッシュが、プロセッサによって使用される非命令データを保持するべく、機能によってさらに分割されることが可能である。メモリ６１２は、任意の様々な、いわゆる不均一メモリ・アクセス（Non-Uniform Memory Access、ＮＵＭＡ）コンピュータ・アーキテクチャにおいて知られているように、さらに分散されること、および様々なＣＰＵまたはＣＰＵのセットと関連付けられることが可能である。
【００９４】
メモリ６１２は、図１〜図５に示された構成要素およびデータの全てまたは一部を格納することができる。特に、ユーザ・アプリケーション、信頼できるアプリケーション、ブートローダ、およびオペレーティング・システム構成の１つまたは複数は、本明細書で説明される動作を行うために認証され、実行されるように、ストレージ・デバイス６２８またはセキュリティ構成要素６３１からメモリ６１２にロードされることが可能である。コンピュータ実行可能コードは、プロセッサ６０６によって実行されることが可能である。図１〜図５に示された構成要素およびデータのいくつかまたは全ては、様々なコンピュータ・システム上にあることが可能であり、リモートに、例えばネットワーク６３０を介して、アクセスされることが可能である。コンピューティング・デバイス６００は、コンピューティング・デバイス６００のプログラムが、複数の、より小さいストレージ・エンティティにアクセスする代わりに、大きい単一のストレージ・エンティティにアクセスしているだけのように振る舞うことを可能にする仮想アドレス・メカニズムを使用することができる。したがって、図１〜図５に示された構成要素およびデータは、メモリ６１２に含まれるように示されるが、これらの構成要素およびデータは、必ずしも、同じストレージ・デバイスに同時に全て完全に収められるわけではない。図１〜図５に示された構成要素およびデータは個別のエンティティとして示されるが、他の実施形態において、これらのうちのいくつか、これらのうちのいくつかの一部、またはこれらの全ては、まとめてパッケージ化されることが可能である。
【００９５】
一実施形態において、図１〜図５に示された構成要素およびデータは、プロセッサ６０６において実行する命令もしくは文、またはプロセッサ６０６を実行して下記でさらに説明されるような機能を行う命令もしくは文によって解釈される命令もしくは文を含むことができる。別の実施形態において、図１〜図５に示された構成要素は、プロセッサ・ベースのシステムの代わりに、または加えて、半導体デバイス、チップ、論理ゲート、回路、回路カード、または他の物理的なハードウェア・デバイス、あるいはその組合せを介してハードウェアの中に実装されることが可能である。一実施形態において、図１〜図５に示された構成要素は、命令または文に加えてデータを含むことができる。
【００９６】
図６は、コンピューティング・デバイス６００の代表的な構成要素を図示することを意図するものである。しかし個々の構成要素は、図６に表されたものより大きな複雑性を有する可能性がある。図６において、示された構成要素以外の、または加えた構成要素が存在することが可能であり、このような構成要素の数、タイプ、および構成は変化することが可能である。さらなる複雑性またはさらなる変形形態のいくつかの特定の例が本明細書で開示されるが、これらは、ほんの一例としてのものであり、必ずしも唯一のこのような変形形態ではない。図６に含まれるものとして説明される様々なプログラム構成要素は、様々な実施形態において、本明細書において「ソフトウェア」、「コンピュータ・プログラム」、または単に「プログラム」と呼ばれる可能性もある、様々なコンピュータ・アプリケーション、ルーチン、構成要素、プログラム、オブジェクト、モジュール、データ構造、等を使用することを含むいくつかの異なる方式で実装されることが可能である。
【００９７】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、本発明の態様をプロセッサに行わせるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（または複数の媒体）を含むことができる。
【００９８】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形のデバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体の多くの具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、記録された命令を有するパンチ・カード、または溝の中の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通じて伝送される電気信号などの一時的な信号それ自体であると解釈されるべきではない。
【００９９】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング／処理デバイスに、あるいは例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含めることができる。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、個々のコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【０１００】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上、または全面的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路機器は、本発明の態様を行うためにコンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【０１０１】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
【０１０２】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／作用を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて機械を生み出すことが可能である。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／作用の態様を実行する命令を含む製品を備えるべく、特定の手法で機能するようにコンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指示することができるコンピュータ可読ストレージ媒体に格納されることも可能である。
【０１０３】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／作用を実行するべく、コンピュータ実行処理を生み出すコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを行わせるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされることも可能である。
【０１０４】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートおよびブロック図の中の各ブロックは、指定された論理機能を実行するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに記述された機能は、図に記述された順序とは異なる順序で発生させることができる。例えば、連続して示される２つのブロックは、実際には、実質的に同時に実行されることが可能であり、または、それらのブロックは、時には、関連する機能に応じて、逆の順序で実行されることが可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能または作用を行うか、専用ハードウェアとコンピュータ命令の組合せを実行する、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
【０１０５】
本開示の様々な実施形態の説明は例証のために提示されたが、開示された実施形態に対して網羅的または限定的であることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正形態および変形形態が当業者に明らかになるであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術的な改善を説明するため、または本明細書で開示された実施形態を当業者が理解できるようにするために選ばれた。
【図１】
2020523685.tif 000003
【図２】
2020523685.tif 000004
【図３】
2020523685.tif 000005
【図４】
2020523685.tif 000006
【図５】
2020523685.tif 000007
【図６】
2020523685.tif 000008
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング・システムが、
前記コンピューティング・システムのブート状態において、オペレーティング・システム構成をロードするリクエストを受け取ることと、
前記リクエストを受け取ることに応答して、前記オペレーティング・システム構成を認証するためのデジタル鍵を自動的に格納することと、
前記コンピューティング・システムを再起動することと、
前記コンピューティング・システムを再起動することに応答して、前記コンピューティング・システムがブート前状態にある間に、
格納された前記デジタル鍵が、有効なオペレーティング・システム構成のためのものであることを検証することと、
前記受け取ったリクエストを確認する信号を、前記コンピューティング・システムに物理的に連結されたユーザ・インターフェースから受け取ることと、
前記信号を受け取ることに応答して、前記デジタル鍵を使用して前記オペレーティング・システム構成を認証することと、
前記認証することに応答して、前記オペレーティング・システム構成をブートすることと
を実行する、方法。
【請求項２】
前記信号を受け取ることの前に、前記コンピューティング・システムにおいてブートする権限を与えられているオペレーティング・システム構成に前記デジタル鍵が対応すると判断すること
をさらに含む、請求項１に記載の方法。
【請求項３】
前記信号を受け取ることに応答して、前記コンピューティング・システムの保護メモリに前記デジタル鍵を移すことをさらに含み、前記保護メモリは、前記コンピューティング・システムがブート前状態にある間だけ書込み可能である、請求項１または請求項２に記載の方法。
【請求項４】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行コード整合性を有するソフトウェア・アプリケーションによってのみ書込み可能である、請求項３に記載の方法。
【請求項５】
前記認証することが、前記保護メモリから前記デジタル鍵を取得することと、前記取得したデジタル鍵を使用して、前記オペレーティング・システム構成のデジタル署名を検証することと、を含む、請求項３または請求項４に記載の方法。
【請求項６】
前記オペレーティング・システム構成が、
オペレーティング・システム・カーネルと、
前記オペレーティング・システム・カーネルのアクセス制御ポリシを実施するためのパラメータのセットと
を含む、請求項１〜請求項５のいずれか一項に記載の方法。
【請求項７】
前記パラメータのセットが、前記オペレーティング・システム・カーネルの実行可能コードにコンパイルされる、請求項６に記載の方法。
【請求項８】
前記オペレーティング・システム構成が、公開鍵と秘密鍵のペアの秘密鍵によってデジタル的に署名され、
前記デジタル鍵が、前記公開鍵と秘密鍵のペアの公開鍵である、
請求項１〜請求項７のいずれか一項に記載の方法。
【請求項９】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
前記プログラム命令が、請求項１〜８のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
【請求項１０】
コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項１〜８のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
【請求項１１】
請求項１０に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。
【請求項１２】
コンピューティング・システムが、
前記コンピューティング・デバイスにおいて第１のオペレーティング・システム構成の下で実行するユーザ・アプリケーションから、オペレーティング・システム構成のセットのうちの第２のオペレーティング・システム構成を実行するリクエストを受け取ることであって、前記第２のオペレーティング・システム構成が、
公開鍵と秘密鍵のペアの秘密鍵によって署名され、
前記第２のオペレーティング・システム構成のアクセス制御ポリシと関連付けられたパラメータのセットでコンパイルされたオペレーティング・システム・カーネルを少なくとも含む、
受け取ることと、
前記リクエストを受け取ることに応答して、前記秘密鍵に対応する公開鍵を前記コンピューティング・デバイスの不揮発性メモリに格納することと、
前記コンピューティング・デバイスのブート前状態の間に、信頼できるアプリケーションを実行することによって、
格納された前記公開鍵が、有効なオペレーティング・システム構成のためのものであることを検証すること、
前記コンピューティング・デバイスへのローカル・インターフェースから、前記受け取ったリクエストを確認する信号を受け取ること、
前記信号が前記リクエストを確認するとき、前記公開鍵を保護メモリに移すこと、および
前記保護メモリに格納された公開鍵を使用して前記第２のオペレーティング・システムを認証し、前記認証することに応答して前記第２のオペレーティング・システム構成をブートするように前記保護メモリにアクセスできるブートローダを実行すること
を行うことと
を実行する、方法。
【請求項１３】
前記パラメータのセットが、前記第２のオペレーティング・システム構成の下でロード可能なソフトウェア・モジュールを決定する、請求項１２に記載の方法。
【請求項１４】
前記パラメータのセットが、前記アクセス制御ポリシの実施を決定する、請求項１２または請求項１３に記載の方法。
【請求項１５】
前記保護メモリが、前記コンピューティング・システムのハードウェア構成要素によって認証された実行可能コード整合性を有する前記信頼できるアプリケーションを含むアプリケーションのセットによる書込みだけが可能である、請求項１２〜請求項１４のいずれか一項に記載の方法。
【請求項１６】
ユーザ・インターフェース端末と、
前記ユーザ・インターフェース端末に物理的に連結されたコンピューティング・システムと、を備えたシステムであって、
前記コンピューティング・システムが、プログラム命令を記憶したコンピュータ可読ストレージ媒体を備え、
前記プログラム命令が、請求項１２〜１５のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させる、システム。
【請求項１７】
コンピューティング・システムをセキュアにブートするためのコンピュータ・プログラムであって、請求項１２〜１５のいずれか一項に記載の方法の各ステップを前記コンピューティング・システムに実行させるためのコンピュータ・プログラム。
【請求項１８】
請求項１７に記載のコンピュータ・プログラムを記憶したコンピュータ可読ストレージ媒体。

【国際調査報告】
2020523685.tif 000009
2020523685.tif 000010