(57)【特許請求の範囲】
【請求項１】
所有者の要求で作成される複数のセキュア仮想マシンをホストするためのプロセッサであって、
プロセッサの秘密鍵を格納するメモリと、
ゾーンマネージャのインスタンスと関連付けられる第１の公開／秘密鍵のペアを生成するための第１の生成器と、
前記プロセッサの秘密鍵によって前記第１の公開／秘密鍵のペアを証明するための第１の認証エージェントと、
前記所有者から仮想マシンインスタンス化コマンドをセキュアに受信する受信機と、
前記インスタンス化コマンドに応えて作成された、前記複数の仮想マシンのうちの１つの仮想マシンのインスタンスと関連付けられる第２の公開／秘密鍵のペアを生成するための第２の生成器と、
前記第１の公開／秘密鍵のペアによって前記第２の公開／秘密鍵のペアを証明するための第２の認証エージェントと
を含み、
前記ゾーンマネージャは、前記第１の公開／秘密鍵のペアを、前記ゾーンマネージャと仮想マシンの前記インスタンスのユーザの間の第１のセキュアチャネルを確立するために使用するように構成され、
仮想マシンの前記インスタンスは、前記第２の公開／秘密鍵のペアを、仮想マシンの前記インスタンスと仮想マシンの前記インスタンスの前記ユーザの間のセキュアチャネルを確立するために使用するように構成された、ことを特徴とするプロセッサ。
【請求項２】
初期ブートプログラムを格納するための、プライベートブートエリア（４１０）をさらに含む、請求項１に記載のプロセッサ。
【請求項３】
前記ゾーンマネージャを含むイメージファイルを受信して正当性を確認するための手段をさらに含む、請求項１または２に記載のプロセッサ。
【請求項４】
前記複数のセキュア仮想マシンによって使用されるメモリをさらに含み、前記メモリへのアクセスが、前記複数のセキュア仮想マシンのセキュア仮想マシン毎に異なる、異なる暗号鍵によってセキュリティ保護される、請求項１から３のいずれかに記載のプロセッサ。
【請求項５】
前記複数のセキュア仮想マシンのデジタルアクセス許可情報を格納するメモリをさらに含む、請求項１から４のいずれかに記載のプロセッサ。
【請求項６】
所有者の要求でユーザに対するセキュア仮想マシンをプロセッサ内でセットアップするための方法であって、
ゾーンマネージャのイメージを使用して前記プロセッサをブートすることと、
前記プロセッサでゾーンマネージャのセッションと関連する第１の公開／秘密鍵のペアを入手することと、
前記第１の公開／秘密鍵のペアの公開鍵を前記プロセッサで前記プロセッサと関連する秘密鍵を使用して証明することと、
前記ゾーンマネージャでセキュア仮想マシンインスタンス化コマンドを前記所有者から受信することとを含み、前記方法はさらに、
前記ゾーンマネージャと前記ユーザとの間で第１のセキュア通信チャネルを作成することと、
セキュア仮想マシンと関連する第２の公開／秘密鍵のペアを入手することと、
前記第１の公開／秘密鍵のペアの秘密鍵を使用して前記第２の公開／秘密鍵のペアの公開鍵を証明することと、
前記セキュア仮想マシンと前記ユーザとの間に第２のセキュア通信チャネルを作成することと
を含むことを特徴とする、方法。
【請求項７】
プライベートブートエリアに格納されたプログラムからプロセッサをブートすることをさらに含む、請求項６に記載の方法。
【請求項８】
前記ゾーンマネージャのイメージを前記プロセッサにダウンロードすることと、前記プロセッサで、前記ゾーンマネージャのイメージの前記ブートすることのための前提条件として、前記ゾーンマネージャのイメージに関するバリデーション値を検証することとをさらに含む、請求項６に記載の方法。
【請求項９】
前記プロセッサの共有メモリに格納された特定のコンテンツにアクセスするための暗号鍵を、前記セキュア仮想マシンと関連付けることをさらに含む、請求項６に記載の方法。
【請求項１０】
前記セキュア仮想マシンのインスタンス化コマンドが前記ユーザに関する証明書を含む、請求項６に記載の方法。
【請求項１１】
前記第１のセキュア通信チャネル又は前記第２のセキュア通信チャネルのセキュリティ面が、前記ユーザに関する前記証明書に依存する、請求項１０に記載の方法。
【請求項１２】
前記ユーザに関する前記証明書を前記ゾーンマネージャに提供することをさらに含む、請求項１０または１１に記載の方法。
【請求項１３】
前記第１のセキュア通信チャネル又は前記第２のセキュア通信チャネルが、公開鍵暗号化技術を用いてセキュリティ保護される、請求項１０または１１に記載の方法。
【請求項１４】
前記セキュア仮想マシンのアクセス許可で機能マトリックスを更新することをさらに含む、請求項６から１３のいずれかに記載の方法。
【請求項１５】
前記セキュア仮想マシンにブートプログラムを提供することによって、前記セキュア仮想マシンを準備することと、
前記セキュア仮想マシンを起動することと
をさらに含む、請求項６から１４のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドコンピューティングまたはネットワークベースのコンピューティングの分野に関し、より具体的にはセキュア仮想マシンの分野に関する。
【背景技術】
【０００２】
仮想コンピューティングは、クラウドコンピューティングの重要な要素である。インターネットのどこかに位置している仮想コンピュータを借りて、自身のアプリケーションを実行することができる。これは、チープサイクル（ｃｈｅａｐ  ｃｙｃｌｅｓ）にアクセスするための適切な方法であるが、アプリケーションは他の誰かのコンピュータ上で実行されるので、自身のデータおよびアプリケーションのプライバシーを保証することができないという、特有の恐れもある。今日の汎用プロセッサは、クラウドまたはネットワークベースのコンピュータの所有者（すなわち、インフラストラクチャのプロバイダ）が、ネットワークに接続されたコンピュータをスヌーピングすることから守るためのメカニズムを提供していない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
セキュアな仮想コンピューティングがないことは、クラウドコンピューティングの発達を阻む重大な障害である。アプリケーションをネットワークでホストする利点は、既存のプロセッサの本質的にセキュアでない性質のためにアプリケーションおよび／またはアプリケーションデータが公になるという恐れと比較検討されなければならない。
【０００４】
例えば、プライベートアカウント情報を有するウェブサーバのデータベースをクラウド／ネットワークベースのコンピュータ上で実行することは、クラウド／ネットワークベースのコンピュータに物理的にアクセスする敵対者が、例えばＪｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）接続を使用することによって、メモリバンクにアクセスすること、およびプロセッサ内部のレジスタにアクセスすることができることを意味する。あるいは、攻撃者は、ホストオペレーションシステム、または以下「ゾーンマネージャ」とも呼ぶ仮想マシンマネージャを変更することによって、物理マシンのオペレーションに進入しようとする恐れがある。
【０００５】
さらに、ゾーンマネージャの中のソフトウェア侵入者は、マシンのメモリスペースにある他のユーザの他のアプリケーションおよびアプリケーションデータへのアクセスを可能にする恐れがある。特定のタイプの攻撃は、ルートキットを使用するが、これはオペレーティングシステム下で展開され、特別に対象とされたツールなしではオペレーティングシステムに検知できないソフトウェアからなる。
【０００６】
仮想コンピュータをユーザにセキュアにレンタルできるようにするには、セキュリティアーキテクチャにおいていくつかの要素が必要である。プロセッサは、セキュアな処理環境を提供する必要があり、検証可能なソフトウェアスタックを用いてセキュアなブート手順を確立する必要があり、プロセッサ内にセキュアな仮想ゾーンを確立するためにコンピュータの所有者（すなわちインフラストラクチャプロバイダ）を介してセキュアなエンドポイントを提供する必要があり、ユーザからアプリケーションをセキュアにロードできる必要がある。同時に所有者は、コンピュータ上で実行されるアプリケーションからいかなる重要なプライベートデータも知ることができてはならない。
【課題を解決するための手段】
【０００７】
本発明によるセキュアプロセッサの一般的な実施形態は、プロセッサの秘密鍵を格納するメモリと、ゾーンマネージャのインスタンスと関連付けられる第１の公開／秘密鍵のペアを生成するための第１の生成器と、プロセッサの秘密鍵によって第１の公開／秘密鍵のペアを証明するための第１の認証エージェント（ｃｅｒｔｉｆｉｃａｔｉｏｎ  ａｇｅｎｔ）と、仮想マシンインスタンス化コマンドをセキュアに受信するための受信機と、仮想マシンのインスタンスと関連付けられ、インスタンス化コマンドに反応して作成される第２の公開／秘密鍵のペアを生成するための第２の生成器と、第１の公開／秘密鍵のペアによって第２の公開／秘密鍵のペアを証明するための第２の認証エージェントとを含む。
【０００８】
１つの実施形態では、本発明のプロセッサは、初期ブートプログラムを格納するためのプライベートブートエリア（４１０）をさらに含む。
【０００９】
１つの実施形態では、本発明のプロセッサは、ゾーンマネージャを含むイメージファイルを受信して、その正当性を確認する（ｖａｌｉｄａｔｉｎｇ）ための手段をさらに含む。
【００１０】
本発明のプロセッサの１つの実施形態では、仮想マシンインスタンス化コマンドをセキュアに受信するというセキュリティ態様は、ＰＫＩを介して取得される証明書に依存する。
【００１１】
１つの実施形態では、本発明のプロセッサは、上記複数のセキュア仮想マシンによって使用されるメモリをさらに含み、メモリへのアクセスは、複数のセキュア仮想マシンの様々なマシンに対する様々な暗号鍵によってセキュリティ保護される。
【００１２】
１つの実施形態では、本発明のプロセッサは、複数のセキュア仮想マシンのデジタルアクセス許可情報を格納するメモリをさらに含む。
【００１３】
本発明によるセキュア仮想マシンをセットアップするための方法の一般的な実施形態は、ゾーンマネージャのイメージを使用してプロセッサをブートすることと、ゾーンマネージャのセッションと関連する第１の公開／秘密鍵のペアをプロセッサで入手することと、プロセッサと関連する秘密鍵を使用してプロセッサで第１の公開／秘密鍵のペアの公開鍵を証明することと、ゾーンマネージャでセキュア仮想マシンインスタンス化コマンドを受信することと、ゾーンマネージャとユーザとの間でセキュア通信チャネルを作成することと、セキュア仮想マシンと関連する第２の公開／秘密鍵のペアを入手することと、第１の公開／秘密鍵のペアの秘密鍵を使用して第２の公開／秘密鍵のペアの公開鍵を証明することとを含む。
【００１４】
１つの実施形態では、本発明の方法は、プライベートブートエリアに格納されたプログラムからプロセッサをブートすることをさらに含む。
【００１５】
１つの実施形態では、本発明の方法は、上記ゾーンマネージャのイメージを上記プロセッサにダウンロードすること、および上記ゾーンマネージャのイメージの上記ブートすることのための前提条件として、上記プロセッサにおいて上記ゾーンマネージャのイメージに関するバリデーション値を検証することをさらに含む。
【００１６】
本発明の方法の１つの実施形態では、上記セキュア通信チャネルのセキュリティ態様は、ＰＫＩを介して取得される証明書に依存する。
【００１７】
１つの実施形態では、本発明の方法は、プロセッサの共有メモリに格納された特定のコンテンツにアクセスするための暗号鍵を上記セキュア仮想マシンと関連付けることをさらに含む。
【００１８】
本発明の方法の１つの実施形態では、セキュア仮想マシンのインスタンス化コマンドは、上記ユーザに関する証明書を含む。特定の実施形態では、上記セキュア通信チャネルのセキュリティ態様は、上記ユーザに関する上記証明書に依存する。
【００１９】
別の特定の実施形態では、この方法はさらに、上記ユーザに関する上記証明書を上記ゾーンマネージャに提供することを含む。
【００２０】
本発明の方法の１つの実施形態では、セキュア通信チャネルは、公開鍵の暗号化技術によってセキュリティ保護される。
【００２１】
１つの実施形態では、本発明の方法はさらに、上記仮想マシンのアクセス許可で機能マトリックスを更新することを含む。
【００２２】
１つの実施形態では、本発明の方法はさらに、セキュア仮想マシンにブートプログラムを提供することによってセキュア仮想マシンを準備することと、セキュア仮想マシンを起動させることとを含む。
【００２３】
本発明の一実施形態は、サービスプロバイダ、サービスユーザ、ゾーンマネージャ、仮想マシンのインスタンス化の間で適切な信頼関係を賢明に確立してこれらを組み合わせることによって、セキュア仮想マシン環境を取得することができるという見識に基づいている。本発明の一実施形態はさらに、こうした信頼関係を確立する際にサービスユーザ、サービスプロバイダ、およびハードウェア製造業者がそれぞれ役割を有するという見識に基づいている。以下、サービスユーザを「ユーザ」と呼ぶ場合があり、サービスプロバイダを「所有者」と呼ぶ場合があり、ハードウェア製造業者を「製造業者」と呼ぶ場合がある。
【００２４】
本明細書に記載する信頼関係は、とりわけ公開鍵暗号化技術（ＰＫＣ）によって確立でき、それによって暗号を使用してセキュリティ保護されたデータトンネルが作成され、様々な行為者の公開鍵が適切な認証局によって認証されることを、デジタル認証およびセキュア通信の当業者は、容易に理解するであろう。信頼関係の確立についてさらに、公開鍵暗号化技術に関して説明するが、いかなるＰＫＣの特定の実施の詳細に本発明を限定するものではない。
【００２５】
特定の実施形態では、サービスプロバイダとハードウェアプラットフォーム上にインスタンス化されたゾーンマネージャとの間で第１の信頼関係が確立される。ハードウェアプラットフォームは、秘密鍵を保持し、その対の公開鍵は、ハードウェア製造業者によって認証される。ゾーンマネージャは、秘密鍵を保持し、その対の公開鍵は、同じくハードウェアプラットフォームによって認証される。ユーザとサービスプロバイダとの間に第２の信頼関係が確立され、その信用証明書は、いかなる信頼される手段によっても確立され、通常の方法でいかなる信頼される機関によっても認証される。ユーザとゾーンマネージャとの間に、第３の信頼関係が確立される。ユーザとサービスプロバイダから受信されるリクエストに応じてゾーンマネージャによってインスタンス化された仮想マシンとの間に、第４の信頼関係が確立される。この仮想マシンのインスタンスは秘密鍵を保持し、その対の公開鍵はゾーンマネージャによって認証される。ハードウェアプラットフォーム、ゾーンマネージャ、および仮想マシンのインスタンス化の信頼性（ａｕｔｈｅｎｔｉｃｉｔｙ）は、すべてハードウェア製造業者からの表明に戻すことができ、これらはそれぞれの証明書チェーンを通じて信頼されると仮定される。
【００２６】
本発明の一実施形態は、ハードウェア保護リングの概念は、セキュアなハードウェアプラットフォーム内部の周辺装置における各仮想マシンの機能を表す２次元マトリックスを提供することによって、複数の仮想マシンのインスタンス化をホストするハードウェアに有利に拡張できるという見識に基づいている。このように仮想化は、バイナリ実行のいかなる変換も取り入れることなく行うことができる。これは、ランタイム環境内部の実行コード全体にわたるチェックサムを検証する必要性を考えると重要な利点である。
【００２７】
次に本発明の諸実施形態に従った装置および／または方法の一部の実施形態について、単に一例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００２８】
【図１】本発明による方法の概略図である。
【図２】本発明による方法に関連するそれぞれの行為者間の様々な信頼関係を示す図である。
【図３ａ】本発明による方法の一実施形態における典型的なメッセージフローを示す図である。
【図３ｂ】本発明による方法の一実施形態における典型的なメッセージフローを示す図である。
【図４】本発明によるセキュアなプロセッサの一実施形態を概略的に示す図である。
【図５】仮想マシンの例示的機能マトリックスの一例を示す図である。
【発明を実施するための形態】
【００２９】
プロセッサの現在のリングまたはゾーンをＡＳＩＣ内部の周辺装置に反映させるためにＡＳＩＣ内部バスへ拡張して、セキュリティ保護されていないコンピューティングリングもしくはゾーンとセキュリティ保護されたコンピューティングリングもしくはゾーンとの間でプロセッサのタイムスライシングを組み合わせることによって、高パフォーマンスのセキュアコンピューティングが達成可能である。
【００３０】
「ＡＳＩＣ」という用語は、本明細書では、一定の実施形態でＡＳＩＣ技術によって実装することができるセキュアプロセッサを指すように使用されるが、上記の技術への限定を意味するものではない。
【００３１】
プロセッサがそのセキュアリングまたはゾーンにあるとき、セキュリティ周辺装置はアクティブである。プロセッサがそのセキュリティ保護されていないリングまたはゾーンにある場合、セキュリティ周辺装置は応答しない。ゾーン間の切り換え時に、プロセッサはゾーン間で渡されるパラメータを検証する。このような組合せは、Ｔｒｕｓｔｚｏｎｅを備えたＡＲＭの１１７６プロセッサで利用できる。本発明は、とりわけ、ＡＲＭ１１７６／Ｔｒｕｓｔｚｏｎｅアーキテクチャの要素と同様の要素を備えるが、仮想化を行うために適合されたさらなる特徴を有するＡＳＩＣとして具体化することができる。
【００３２】
本発明の一実施形態によれば、仮想高信頼コンピューティング基盤（ｖｉｒｔｕａｌ  Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｂａｓｅ、ｖＴＣＢ）が提供され、所有者および製造業者がスヌーピングする、ハイジャックする、またはｖＴＣＢ上の演算を変えることを防ぐ方法でｖＴＣＢを借りることを可能にするインフラストラクチャと併せて、プロセッサに埋め込まれる。有利には、保護リング、ＡＣＬ用の機能に基づくラティス、セキュアで高性能なコンピューティング、および仮想化技術を提供する。
【００３３】
３つの役割、すなわち所有者２２０、ユーザ２１０、および製造業者２３０が、システムの動作に関連していると仮定する。所有者は、ｖＴＣＢを所有して仮想コンピューティングサービスを提供し、ユーザは、ｖＴＣＢ上でセキュアに実行する必要があるアプリケ−ションを提供し、製造業者は、ｖＴＣＢを埋め込むセキュアＡＳＩＣを作製する。
【００３４】
図２は、このように定義された３つの役割の間の様々な信頼関係を示す。
【００３５】
さらに、２つの追加エンティティ、すなわちセキュアゾーンマネージャ２４０およびセキュア仮想マシン２５０を認める。セキュアゾーンマネージャ２４０およびセキュア仮想マシン２５０は共に、ｖＴＣＢの一部である。ここではセキュアゾーンマネージャ２４０は、セキュア仮想マシンの保守を担当し、製造業者２３０によってインストールされる、セキュアＡＳＩＣ内部で実行される信頼されるソフトウェアコンポーネントである。セキュア仮想マシン２５０は、本質的にプロセッサの「一部（ｓｌｉｃｅ）」である。
【００３６】
上記のエンティティに関連するいくつかの信頼要件について、次により詳細に記載する。本発明の諸実施形態は、記載する信頼要件の一部または全部に対処することができる。
【００３７】
第１の信頼要件は、スヌーピングされることが不可能なセキュア仮想マシン２５０を確立するために適切なセキュリティ特性を有するプロセッサを製造業者２３０が供給するということをユーザ２１０が信頼する必要があることである。ユーザ２１０は単に、プロセッサの証明書上の署名をチェックすることによって、この効果への表明が実際に製造業者２３０から発信されたことを検証することができる。ｖＴＣＢのセキュリティ機能（セキュアゾーンマネージャおよびセキュア仮想マシン）に対するユーザの信頼は、製造業者に対するこの信頼から得られる。
【００３８】
第２の信頼要件は所有者２２０が、製造業者２３０は正確な使用レポートを生成するように構成されたｖＴＣＢを供給すると信頼する必要があるということである。所有者２２０は単に、プロセッサの証明書上の署名をチェックすることによって、この効果への表明が実際に製造業者２３０から発信されたことを検証することができる。ｖＴＣＢのセキュリティ機能（セキュアゾーンマネージャおよびセキュア仮想マシン）に対する所有者の信頼は、ゾーンマネージャの秘密鍵を使用することに基づいており、これが本物であることの証明はまた、製造業者にさかのぼる一連の証明書によって保証される。ゆえに、ｖＴＣＢに対する所有者の信頼は、製造業者に対するこの信頼から得られる。
【００３９】
第３の信頼要件は、セキュアゾーンマネージャ２４０が適切な所有者２２０と通信し、デバイスの実際の所有者の要求に基づいてのみ動作すると信頼する必要があることである。
【００４０】
第４の信頼要件は、ユーザ２１０が所有者２２０と通信すると信頼する必要があること、逆もまた同様であることである。この信頼関係は、アカウンティング、課金、および追跡の目的で所有者２２０に必要とされるものであり、ユーザ２１０については、正当な所有者と通信することをわかっていることが重要である。この信頼要件は、一般にはＰＫＩを介した証明書によって対応される。
【００４１】
第５の信頼要件は、セキュアゾーンマネージャ２４０が、所有者２２０によって指示される適切なユーザ２１０と通信することを信頼する必要があることである。この要件は、仮想マシンのインスタンス化コマンドの引数としてユーザの証明書をセキュアゾーンマネージャに提供することによって対応することができる。
【００４２】
第６の信頼要件は、セキュア仮想マシン２５０が、それ自体のセキュアなブート手順について、信頼できるセキュアゾーンマネージャ２４０によって作成されることを信頼する必要があることである。これは、新しく作成されたセキュアゾーンに適切なブートソフトウェアおよび鍵材料をロードしたデバイスの製造業者２３０に対する暗黙の信頼である。
【００４３】
第７の信頼要件は、ユーザ２１０およびそのセキュア仮想マシン２５０が、相互に互いを信頼する必要があること、セキュア仮想マシン２５０が適切なユーザ２１０と通信することを理解する必要があること、ユーザ２１０が真のセキュア仮想マシン２５０と通信することを表明する必要があることである。この要件は、第１の信頼要件と似ており、ユーザ部分については第１の信頼要件から得られ、セキュア仮想マシン部分については第５の信頼要件から得られる。
【００４４】
便宜上図３ａと図３ｂに分けているが、本発明による方法の一実施形態におけるメッセージフローを概略的に示す。図４は、本発明によるセキュアなプロセッサの一実施形態の要素を概略的に示す図である。
【００４５】
セキュアゾーンマネージャ４２０は、セキュアＡＳＩＣのプライマリブートシステムによってロードされる。このブートシステムは、製造業者が提供するプライマリブートシステム４１０と、ＡＳＩＣ秘密鍵４１８とからなる。プライマリブートは、第２ブートをロードすることができ、第２ブートを介してセキュアゾーンマネージャのイメージ４０２がロード可能である、またはプライマリブートはセキュアゾーンマネージャ４０２を直接ロードすることができ、どちらのシナリオとも、図３（ａおよびｂ）の抽象メッセージ３０１および３０２によって例示される。様々な所有者が様々な特別仕様のセキュアゾーンマネージャを使用することを望む可能性があるが、イメージは、製造業者によって生成されることが好ましい。これにより、信頼性の負担は製造業者にかかる。
【００４６】
セキュアゾーンマネージャ４２０が起動するとき、セキュアゾーンマネージャ４２０は、図３（ａおよびｂ）ではメッセージフロー３０３として、図４ではインタフェース４４０として概略的に示す、所有者へのセキュア通信チャネルを確立する。この相互に認証されたチャネル４４０は、所有者（図示せず）とセキュアゾーンマネージャ４２０との間の信頼関係を表す。このチャネル４４０の主な使用法は、セキュア仮想マシン４３０の管理用のセキュア通信パスを確立することである。さらに、セキュアゾーンマネージャ４２０は、所有者（図示せず）に使用レポートを送信することができる。
【００４７】
ユーザ／所有者３０４と所有者／セキュアゾーンマネージャ３０３／４４０の両方のチャネルが確立されると、通信チャネルはユーザによって使用されて、セキュアゾーンマネージャ４２０を介して新しいセキュア仮想マシン４３０の確立を要求する３０５。ユーザが所有者に呼びかけると、所有者はセキュア仮想マシン要求をｖＴＣＢ４００の１つに発送する３０６。ユーザは、セキュアゾーンマネージャの証明書４０４を信頼してセキュアゾーンマネージャ自体を認証することによって、適切なｖＴＣＢと通信することを確認することができる。さらに、ユーザは、セキュアゾーンマネージャ４２０によって署名された、新しく作成されたセキュア仮想マシン４３０の証明書を受信する３０８ことができる。
【００４８】
ユーザのためにセキュア仮想マシン４３０が作成された後、ユーザのアプリケーションをセキュアにブートする必要がある。セキュアゾーンマネージャ４２０は、したがって、ユーザがそのアプリケーションを用いてそのセキュア仮想マシン４３０をセキュアにブートできるようにするインフラストラクチャを提供する。所有者は、この手順の一部ではなく、したがって干渉する方法がないことに留意されたい。ユーザ−ゾーンマネージャチャネル４５０のエンドツーエンドのセキュアリングは、いかなる潜在的な中間者攻撃も効果的に防ぐ。
【００４９】
新しいセキュア仮想マシン４３０は、次にユーザの選択したプログラムをロードし３１１、セキュアな方法でアプリケーションをブートする。新しいセキュア仮想マシン４３０が秘密鍵４３２を受信するとき、ユーザと直接にセキュア通信チャネル４７０をセットアップすることができる３１２。
【００５０】
本発明によるセキュアで、仮想化できる処理環境の一実施形態は、単一マシンのセキュアプロセッサＡＲＭ１１７６＋Ｔｒｕｓｔｚｏｎｅに基づいている。この実施形態は、複数のこのようなセキュア処理マシンを支援する。この実施形態は、図４に概略的に示している。
【００５１】
第１に、Ｔｒｕｓｔｚｏｎｅアーキテクチャで複数のセキュア仮想マシンを支援するために、単一のセキュアアドレス変更子ビットの代わりに、ｎビット幅のバスが設けられる。各セキュア仮想マシンは、以下、セキュアアドレス変更子バス（Ｓｅｃｕｒｅ  Ａｄｄｒｅｓｓ  Ｍｏｄｉｆｉｅｒ  Ｂｕｓ、ＳＡＭＢ）と呼ばれる、このアドレス変更子のバス上で特定のバイナリ表現に入力される。セキュアＡＳＩＣ内部の周辺装置は、それらのデバイスへのアクセスを有効または無効にするとき、ＳＡＭＢの状態を考慮に入れる。
【００５２】
セキュアＡＳＩＣ内部の周辺装置上のセキュア仮想マシンの機能を表す２次元マトリックスは、ＡＳＩＣ内部のバス上のＳＡＭＢと関連付けられる。４つの周辺機器および４つの仮想マシンを扱う、このようなマトリックスの例示的表現を図５に示す。セキュアＡＳＩＣの各周辺装置は列で表され、セキュア仮想マシンのそれぞれに行が与えられる。特定のセキュア仮想マシンの周辺装置への読み取りおよび／または書き込みアクセスを可能にするために、マトリックス中の関連ビットが設定される。
【００５３】
２つの特定の行は、セキュリティ保護されていないマシンとスーパーセキュア仮想マシンという、機能マトリックスに定義することができる。これらのゾーンは共に、それぞれセキュア周辺アクセスのないマシンとセキュア周辺アクセスのあるマシンという、標準的なＴｒｕｓｔｚｏｎｅアーキテクチャにおけるその等価状態と全く同一である。セキュリティ保護されていないマシンは、一般に、セキュアゾーンのアドレス変更子バスにそのバイナリ表現で表わされ、行ゼロに位置している。１つの好ましい実施形態では、スーパーセキュア仮想マシンは、ＳＡＭＢで変更子０１＊１を使用する。一般に、ただ１つのスーパーセキュア仮想マシンのみが、セキュア機能マトリックスへの書込アクセス権を有するべきである。
【００５４】
セキュリティ保護されていない処理マシンは、いかなる特定のセキュリティも必要としていない、またいかなる特定のセキュリティも確保することがないタスクを実行するためのものである。
【００５５】
スーパーセキュア仮想マシンは、他のセキュア仮想マシンを管理するためのものである。スーパーセキュア仮想マシンによって、新しい行が初期設定されることが可能であり、新しく形成された通常のセキュアゾーンに新しいアプリケーションがインストールされることが可能である。またスーパーセキュア仮想マシンは、通常のセキュア仮想マシンを停止し、削除することもできる。
【００５６】
様々なセキュリティ保護されたセキュア仮想マシンとセキュリティ保護されていないキュア仮想マシンとの間で情報が漏れないことを保証するために、各セキュア仮想マシンは、個々のメモリ暗号鍵と関連付けることができる。メモリコントローラは、メモリコントローラデバイス内に、またはメモリコントローラ独自の鍵で保護された通常のメモリ内に、このメモリの鍵を格納する。ＳＡＭＢ上のセキュア変更子に基づいて、メモリコントローラは、メイン外部メモリに送信される、またはメイン外部メモリから取り出されるデータを暗号化することができる鍵を選択する。
【００５７】
セキュアゾーンマネージャは、実行されるゲストオペレーティングシステムのバイナリ変換に依存しない、準仮想化の仮想マシンマネージャである。これは、ユーザが確実に、実行中のイメージ全体にわたってＭＤ５チェックサムを計算して、イメージが変更されていないことを確認できるようにする。さらに、セキュアゾーンマネージャは、プロセッサおよびマシンのリソースを仮想化するためのすべてのメカニズムを、プロセッサで実行中のすべてのゲストオペレーティングシステムに提供する。
【００５８】
図２に示すように、呼フローのエンティティは、所有者（機器の持ち主）、セキュアゾーンマネージャ、セキュア仮想マシン、およびユーザ（すなわち借り手）である。また、製造業者の役割を認識する必要がある。
【００５９】
所有者、製造業者、およびユーザは、秘密鍵と公開鍵を有し、公開鍵は、署名された証明書の一部である。それぞれの秘密鍵は、
【数１】
0005497171.tif 000002
および
【数２】
0005497171.tif 000003
に指定される。それぞれの公開鍵は、Ｋｏｗｎ、Ｋｍｆｒ、およびＫｕｓｅｒに指定される。
【００６０】
公開鍵をそれぞれ所有者、製造業者、およびユーザと関連付ける証明書は、指定されるそれぞれの各機関Ａ（．）によって署名され、公開鍵基盤（ＰＫＩ）の一部であることが可能であり、
【数３】
0005497171.tif 000004
【数４】
0005497171.tif 000005
および
【数５】
0005497171.tif 000006
となる。ユーザの証明書は、ユーザのアドレスを含み、ゾーンマネージャおよび／またはセキュア仮想マシンのインスタンス化を可能にして信頼できるアドレスを使用してユーザと交信することが好ましい。
【００６１】
ＡＳＩＣが、例えばヒューズアレイの中、またはＡＳＩＣ上の不揮発性ＲＡＭの中で符号化されたＡＳＩＣ独自の秘密鍵４１８、
【数６】
0005497171.tif 000007
を備えていると仮定し、公開鍵Ｋａｓｉｃが、これと結合される。
【００６２】
製造業者によって署名された証明書が、ＡＳＩＣの秘密鍵４１８と関連付けられる。ＡＳＩＣは、最初のブートプログラム用のプライベートブートエリア４１０を有すると仮定する。このブートプログラムのセキュアハッシュが、ＡＳＩＣの証明書に埋め込まれる：
【数７】
0005497171.tif 000008
製造業者は、さらなる方法で信頼できるブートプログラムのセキュアハッシュを利用することができる。
【００６３】
埋め込まれたブートプログラムをブートすると、ＡＳＩＣは、典型的には所有者から、ＡＳＩＣ−所有者チャネル４６０を介してゾーンマネージャのイメージ４０２を受信するように構成される。このゾーンマネージャのイメージ４０２は、製造業者によって全体または一部を所有者の仕様に作成されることが可能である。ＡＳＩＣは、ＭＤ５のようなハッシングアルゴリズムによって、ゾーンマネージャのイメージについてセキュアハッシュＨを計算し４１２、これを製造業者によって提供され、認証されるハッシュ
【数８】
0005497171.tif 000009
と比較するように構成される。ゾーンマネージャのイメージ４２０は、確認が成功する場合のみブートされる。
【００６４】
第２のイメージ４０２は、所有者の証明書
【数９】
0005497171.tif 000010
を含む。
【００６５】
起動されるとき、ゾーンマネージャ４２０は、ゾーンマネージャの開始と、プロセッサがリセットされ、リブートされる時間との間の時間として定義されたセッションのために、公開／秘密鍵のペア
【数１０】
0005497171.tif 000011
を作成し４１４、ゾーンマネージャの終了を示す。公開鍵は、ＡＳＩＣ鍵４１８を用いて認証され４１６、証明書４０４
【数１１】
0005497171.tif 000012
は、所有者に入手できるようにされる。同じく秘密鍵４２６は、ゾーンマネージャ４２０が作成するインスタンス４３０に対して証明書４２４に署名できるようにする。
【００６６】
ユーザは、セキュア仮想マシン４３０を所有者から要求することによってこれを取得することができる。このためユーザは、例えばＰＫＩを介して取得された証明書を信頼して、まず所有者とユーザ（図示せず）との間にセキュアな相互認証チャネルを確立する。確立されるとユーザは、「セキュア仮想マシンを生成」メッセージを所有者に送信する。所有者は、適切な（例えば軽負荷の）セキュアプロセッサのゾーンマネージャ４２０を選択し、要求をゾーンマネージャ４２０に転送する。
【００６７】
所有者の「セキュア仮想マシンを生成」メッセージは、ユーザの証明書Ｃ（ユーザ、．．．）を添付されることが可能である。この証明書は、まずセキュアゾーンマネージャ４２０とユーザとの間にセキュア通信チャネル４５０を確立するために使用され、後にこの証明書は、新しく作成されるセキュア仮想マシン４３０によって使用されてユーザへのセキュアチャネル４７０を確立する。ゾーンマネージャとユーザとの間のセキュアチャネル４５０は、ユーザがゾーンマネージャを信用することができるとユーザに断言するために使用される。
【００６８】
「セキュア仮想マシンを生成」メッセージを受信すると、ゾーンマネージャ４２０はまず、新しいゾーンの公開／秘密鍵のペア
【数１２】
0005497171.tif 000013
を作成し４２２、公開鍵を証明する４２４。次いでゾーンマネージャは、それまでに確立された通信チャネル４５０を通じて、証明書
【数１３】
0005497171.tif 000014
をユーザに送信する。
【００６９】
最後に、ゾーンマネージャ４２０は、新しいセキュア仮想マシン４３０を準備する。ゾーンマネージャ４２０は、前述のセキュリティ機能マトリックスに項目を割り当て、メモリコントローラに適切なセッションキーを与え、新しいセキュア仮想マシン４３０にブートプログラムをロードする。ユーザの証明書
【数１４】
0005497171.tif 000015
は、パラメータとしてセキュア仮想マシンのブートローダに渡される。このブートローダは、ゾーンマネージャ４２０によってあらかじめインストールされている（したがって信頼されている）。
【００７０】
仮想マシン４３０は、ゾーンマネージャ４２０を介して実行の準備をされ、最終的にゾーンマネージャ４２０は、新しいセキュア仮想マシン４３０を起動させる。
【００７１】
新しいセキュア仮想マシン４３０が起動するとき、新しいセキュア仮想マシン４３０はゾーンマネージャ４２０だけが潜在的に動作を中断させることができるセキュア環境で動作する。製造業者は信頼できると仮定するので、ゾーンマネージャ４２０はそうすることができる。新しいセキュア仮想マシン４３０の最初のロードは、ユーザのネットワークアドレスを与えられたセキュアブートローダであることに留意されたい。
【００７２】
セキュア仮想マシン４３０が最初に行うことは、新しいゾーンとユーザとの間にセキュア通信チャネル４７０を確立することである。新しいゾーンは、証明書に記録されたネットワークアドレスを含む、
【数１５】
0005497171.tif 000016
を使用してセッションを確立し、一方ユーザは、
【数１６】
0005497171.tif 000017
を使用してセッションを確立する。
【数１７】
0005497171.tif 000018
が、「ｃｒｅａｔｅ  ｓｅｃｕｒｅ  ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ」メッセージ中に所有者によってユーザに返された。
【００７３】
ユーザと新しく作成されたセキュア仮想マシン４３０との間にセキュア通信チャネル４７０が確立されると、ユーザはアプリケーションを新しいセキュア仮想マシン４３０にアップロードし、そのアプリケーションを起動する。ブートローダは、ユーザの証明書
【数１８】
0005497171.tif 000019
を新しくロードされたアプリケーションに渡して、アプリケーションが現在ユーザのアプリケーションを実行しているセキュア仮想マシンとユーザとの間にセキュア通信チャネルを再確立できるようにする。セキュア仮想マシン４３０は、ここで動作モードを起動する。
【００７４】
本発明の一実施形態では、稼働中のゾーンマネージャ４２０はおよび所有者は、セキュア仮想マシン４３０の使用レポート３１３を定期的に交換する。こうしたレポートは、例えばユーザのハードウェア使用に関する請求記録を準備するために、所有者によって使用されることが可能である。さらに、ユーザは、セキュア通信チャネル（４５０、４７０）を介してゾーンマネージャ４２０に管理要求３１４を送信することができる。こうした要求は、セキュア仮想マシン４３０に費やされるサイクル数を増減する、またはセキュア仮想マシン４３０を完全に停止して再開する動作に関するものであることが可能である。このような１つの要求３１６は、セキュア仮想マシン４３０全体を停止することに関し、終了されるセキュア仮想マシン４３０に関するすべての状態情報をクリーンアップする場合がある。この結果を達成するための効果的な方法は、ゾーンのセキュアメモリスライスに使用されるセッションキーをクリアすることである。
【００７５】
本発明の一実施形態では、セキュア仮想マシン４３０は、そのセキュア仮想マシンのデータのプライバシーを保証するためにその特定のセキュア仮想マシン４３０に割り当てられたメモリ暗号化鍵を使用して、メモリコントローラ４８０を介して共有メモリ４９０にアクセスする。
【００７６】
説明および図面は、本発明の原理を示すにすぎない。したがって、本明細書には明示的に記載または表示されていないが、本発明の原理を具体化し、本発明の趣旨および範囲の内に含まれる様々な仕組みを当業者は考案することができるであろうと理解される。さらに、本明細書に列挙するすべての例は、原則として、発明者により当技術分野の促進をもたらす本発明の原理および概念を理解する際に読者の助けとなるように、明らかに教育上の目的のためにすぎないものとし、このような具体的に列挙した例および条件に限定しないものであると解釈されたい。さらに、本発明の原理、態様、および実施形態、ならびにその特定の例を列挙する本明細書中のあらゆる記載は、その均等物を包むものとする。
【００７７】
「プロセッサ」と呼ぶいかなる機能ブロックも含む、図に示した様々な要素の機能は、専用のハードウェア、ならびに適切なソフトウェアと関連してソフトウェアを実行することができるハードウェアを使用することによって提供されることが可能である。プロセッサによって提供されるとき、機能は、単一の専用プロセッサによって、単一の共有プロセッサによって、またはその一部を共有することができる複数の個々のプロセッサによって、提供されることが可能である。さらに、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行することができるハードウェアを排他的に指すと解釈されるべきではなく、暗黙的に、デジタル信号プロセッサ（ＤＳＰ）のハードウェア、ネットワークプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ソフトウェアを格納するリードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および不揮発記憶装置を含む場合があるが、それらには限定されない。また、従来型および／またはカスタム型の他のハードウェアを含む場合もある。同様に、図に示したいかなるスイッチも、概念上にすぎない。これらの機能は、プログラム論理の動作によって、専用論理によって、プログラム制御と専用論理の相互作用によって、または手動でも実行されることが可能であり、特定の技術は、状況からより具体的に理解されるように実行者によって選択可能である。
【図１】
0005497171.tif 000020
【図２】
0005497171.tif 000021
【図３ａ】
0005497171.tif 000022
【図３ｂ】
0005497171.tif 000023
【図４】
0005497171.tif 000024
【図５】
0005497171.tif 000025