(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-25
(54)【発明の名称】汚染された接続エージェントの追跡
(51)【国際特許分類】
G06F 21/12 20130101AFI20220217BHJP
G06F 21/44 20130101ALI20220217BHJP
H04L 9/32 20060101ALI20220217BHJP
【FI】
G06F21/12
G06F21/44
H04L9/32 200B
H04L9/32 200F
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021538788
(86)(22)【出願日】2020-01-02
(85)【翻訳文提出日】2021-08-16
(86)【国際出願番号】 US2020012055
(87)【国際公開番号】W WO2020142609
(87)【国際公開日】2020-07-09
(32)【優先日】2019-01-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】397074301
【氏名又は名称】サイトリックス システムズ,インコーポレイテッド
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】シングルトン,レオ シー.4世
(57)【要約】
本明細書には、汚染された接続エージェントを追跡するための方法およびシステムが記載されている。サーバ停止中、クライアントデバイス503は、公開鍵暗号化または証明書ベースのシステムに基づき、接続エージェント502が汚染されていないことを検証する。接続エージェント502が汚染されていなければ、サーバ501は、接続エージェント502に関連付けられた公開鍵または証明書に署名する。サーバ501は、クライアントデバイス503に、リースと、サーバ501に関連付けられた公開鍵と、を提供する。接続エージェント502は、クライアントデバイス503によって生成されたデータに署名する。クライアントデバイス503は、サーバ501に関連付けられた公開鍵に基づくなどして、署名付き公開鍵の署名を検証する。クライアントデバイス503は、接続エージェント502に関連付けられた検証済みの公開鍵に基づくなどして、署名付きデータの署名を検証する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
1つまたはそれ以上のサーバに、コンピューティングデバイス上の接続エージェントと、前記接続エージェントに関連付けられた公開鍵と、を登録することと、
前記1つまたはそれ以上のサーバにより、かつ前記接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという判断に基づき、前記接続エージェントに関連付けられた前記公開鍵に署名することと、
前記接続エージェントにより、かつ前記1つまたはそれ以上のサーバから、前記接続エージェントに関連付けられた前記署名付き公開鍵を受信することと、
前記接続エージェントによって、前記接続エージェントに関連付けられた前記署名付き公開鍵を記憶することと、
前記接続エージェントによって、クライアントデバイスから受信したデータに署名することと、
前記接続エージェントによって、前記クライアントデバイスに、前記接続エージェントに関連付けられた前記署名付き公開鍵と、前記署名付きデータと、を送信することと、を含む方法。
【請求項2】
前記接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという前記判断は、前記接続エージェントに不正なソフトウェアアプリケーションがインストールされていないという判断を含む、請求項1に記載の方法。
【請求項3】
前記接続エージェントと、前記接続エージェントに関連付けられた前記公開鍵と、を登録する前、前記1つまたはそれ以上のサーバにより、かつ前記接続エージェントが汚染されているという判断に基づき、前記接続エージェントを再イメージ化することをさらに含む、請求項1に記載の方法。
【請求項4】
前記1つまたはそれ以上のサーバによって、前記1つまたはそれ以上のサーバと関連付けられた公開鍵および秘密鍵を生成することと、
前記1つまたはそれ以上のサーバと関連付けられた前記公開鍵および前記秘密鍵を、前記1つまたはそれ以上のサーバと関連付けられたデータベースに記憶することと、をさらに含む、請求項1に記載の方法。
【請求項5】
前記クライアントデバイスから受信した前記データに署名した後、前記接続エージェントに関連付けられた秘密鍵を前記接続エージェントから削除することをさらに含む、請求項1に記載の方法。
【請求項6】
前記接続エージェントに関連付けられた前記署名付き公開鍵を送信した後、前記接続エージェントに関連付けられた前記署名付き公開鍵と、前記接続エージェントに関連付けられた前記公開鍵と、を前記接続エージェントから削除することをさらに含む、請求項5に記載の方法。
【請求項7】
前記接続エージェントに関連付けられた前記署名付き公開鍵と、前記署名付きデータと、を送信した後、前記クライアントデバイスを、前記接続エージェントに関連付けられた仮想デスクトップまたは仮想アプリケーションのうちの1つ以上に接続することをさらに含む、請求項1に記載の方法。
【請求項8】
クライアントデバイスにより、かつ1つまたはそれ以上のサーバから、前記1つまたはそれ以上のサーバと関連付けられた公開鍵を受信することと、
前記クライアントデバイスにより、かつコンピューティングデバイス上の接続エージェントから、
前記接続エージェントと関連付けられ、かつ前記1つまたはそれ以上のサーバと関連付けられた秘密鍵によって署名された公開鍵と、
前記クライアントデバイスによって生成され、かつ前記接続エージェントに関連付けられた秘密鍵によって署名されたデータと、
を含む情報を受信することと、
前記接続エージェントに関連付けられた前記署名付き公開鍵の署名が、前記1つまたはそれ以上のサーバと関連付けられた前記公開鍵と対応するかどうかを、前記クライアントデバイスによって判断することと、を含む方法。
【請求項9】
前記1つまたはそれ以上のサーバと関連付けられた前記公開鍵を受信することは、前記1つまたはそれ以上のサーバによって前記クライアントデバイスに接続リースを発行することを含む、請求項8に記載の方法。
【請求項10】
前記接続エージェントに関連付けられた前記署名付き公開鍵の前記署名が、前記1つまたはそれ以上のサーバと関連付けられた前記公開鍵と対応しないという判断に基づき、前記クライアントデバイスによって前記接続リース内の第2の接続エージェントに接続することをさらに含む、請求項9に記載の方法。
【請求項11】
前記接続エージェントに関連付けられた前記署名付き公開鍵の前記署名が、前記1つまたはそれ以上のサーバと関連付けられた前記公開鍵と対応するという判断に基づき、前記署名付きデータの署名が、前記接続エージェントに関連付けられた前記署名付き公開鍵と対応するかどうかを前記クライアントデバイスによって判断することをさらに含む、請求項9に記載の方法。
【請求項12】
前記署名付きデータの前記署名が、前記接続エージェントに関連付けられた前記署名付き公開鍵と対応しないという判断に基づき、前記クライアントデバイスによって前記接続リース内の第2の接続エージェントに接続することをさらに含む、請求項11に記載の方法。
【請求項13】
前記署名付きデータの前記署名が、前記接続エージェントに関連付けられた前記署名付き公開鍵と対応するという判断に基づき、前記クライアントデバイスによって前記接続エージェントに接続することをさらに含む、請求項11に記載の方法。
【請求項14】
前記クライアントデバイスにより、かつ前記1つまたはそれ以上のサーバから、前記1つまたはそれ以上のサーバと関連付けられた第2の公開鍵を受信することと、
前記クライアントデバイスにより、かつ前記1つまたはそれ以上のサーバと関連付けられた前記第2の公開鍵に基づき、前記接続エージェントに関連付けられた前記署名付き公開鍵を検証することと、をさらに含む、請求項8に記載の方法。
【請求項15】
前記接続エージェントに関連付けられた前記署名付き公開鍵は、マシンIDまたは失効日のうちの1つ以上を備える、請求項8に記載の方法。
【請求項16】
コンピュータ可読命令を記憶する1つまたはそれ以上の非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令は、実行されると、コンピューティングデバイス上の接続エージェントをして、
1つまたはそれ以上のサーバに、前記接続エージェントと、前記接続エージェントに関連付けられた公開鍵と、を登録することと、
前記1つまたはそれ以上のサーバから、かつ前記接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという判断に基づき、前記接続エージェントと関連付けられ、かつ前記1つまたはそれ以上のサーバによって署名された前記公開鍵を受信することと、
前記接続エージェントに関連付けられた前記署名付き公開鍵を記憶することと、
クライアントデバイスから受信したデータに署名することと、
前記クライアントデバイスに、前記接続エージェントに関連付けられた前記署名付き公開鍵と、前記署名付きデータと、を送信することと、を行わせる、1つまたはそれ以上の非一時的コンピュータ可読媒体。
【請求項17】
前記コンピュータ可読命令は、実行されると、前記コンピューティングデバイス上の前記接続エージェントをして、
前記接続エージェントが前記クライアントデバイスから受信した前記データに署名した後、前記接続エージェントに関連付けられた秘密鍵を前記接続エージェントから削除することをさらに行わせる、請求項16に記載の1つまたはそれ以上の非一時的コンピュータ可読媒体。
【請求項18】
前記コンピュータ可読命令は、実行されると、前記コンピューティングデバイス上の前記接続エージェントをして、
前記接続エージェントが、前記クライアントデバイスに、前記接続エージェントに関連付けられた前記署名付き公開鍵を送信した後、前記接続エージェントに関連付けられた前記署名付き公開鍵と、前記接続エージェントに関連付けられた前記公開鍵と、を前記接続エージェントから削除することをさらに行わせる、請求項17に記載の1つまたはそれ以上の非一時的コンピュータ可読媒体。
【請求項19】
前記コンピュータ可読命令は、実行されると、前記コンピューティングデバイス上の前記接続エージェントをして、
前記クライアントデバイスから、かつ前記接続エージェントに関連付けられた前記署名付き公開鍵の署名が検証されるという判断に基づき、前記接続エージェントへの接続リクエストを受信することと、
前記クライアントデバイスに接続することと、をさらに行わせる、請求項16に記載の1つまたはそれ以上の非一時的コンピュータ可読媒体。
【請求項20】
前記接続エージェントに関連付けられた前記署名付き公開鍵の前記署名が検証されるという前記判断は、前記署名付きデータの署名が検証されるという判断を含む、請求項19に記載の1つまたはそれ以上の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載の発明の態様は、概して、デスクトップおよびアプリケーションの仮想化、サーバベースのコンピューティング環境、仮想マシン、クラウドコンピューティング、およびネットワーク接続に関するものである。
【背景技術】
【0002】
デスクトップおよびアプリケーションの仮想化技術により、例えば、デスクトップおよびアプリケーションが実際に稼動しているマシンから独立して、任意のオペレーティングシステムを搭載したあらゆるデバイスから当該デスクトップおよびアプリケーションにアクセスすることができる。事業体の個人は、デバイスやネットワークに関係なく、リモートで働いたり協調したりすることができる。ユーザは、各自のセッションの有効期間にわたって割り当てられた専用の仮想マシンを受け取ることができる。ユーザが仮想マシンに割り当てられる前、信頼できる仲介局は、マシンがクリーンであるか、あるいは以前にログインしたユーザなどによって汚染されているかを点検することができる。仲介局が停止すると、ユーザは、マシンがクリーンなのか、汚染されているのかを確認できなくなることがある。
【発明の概要】
【0003】
以下の内容は、本明細書に記載されている発明の様々な態様を簡略化してまとめたものである。この概要は、包括的な概略ではなく、必須または肝要な要素を特定したり、請求項の範囲を明確化したりすることを意図してはいない。以下の概要は、後述の詳細な説明に入る前の導入部として、いくつかの概念を簡略化して提示しているに過ぎない。
【0004】
本明細書に記載の発明の態様は、上記の先行技術の制限を克服し、かつ本明細書を読んで理解すれば明らかとなる他の制限を克服するために、1つまたはそれ以上のサーバに、コンピューティングデバイス上の接続エージェントと、接続エージェントに関連付けられた公開鍵と、を登録する方法に関するものである。
【0005】
1つまたはそれ以上のサーバは、接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという判断に基づき、接続エージェントに関連付けられた公開鍵に署名することができる。接続エージェントは、1つまたはそれ以上のサーバから、接続エージェントに関連付けられた署名付き公開鍵を受信することができる。接続エージェントは、接続エージェントに関連付けられた署名付き公開鍵を記憶することができる。接続エージェントは、クライアントデバイスから受信したデータに署名することができる。接続エージェントは、接続エージェントに関連付けられた署名付き公開鍵と、署名付きデータと、をクライアントデバイスに送信することができる。
【0006】
接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという判断は、接続エージェントに不正なソフトウェアアプリケーションがインストールされていないという判断を含み得る。1つまたはそれ以上のサーバは、接続エージェントと、接続エージェントに関連付けられた公開鍵と、を登録する前、接続エージェントが汚染されているという判断に基づき、接続エージェントを再イメージ化することができる。1つまたはそれ以上のサーバは、1つまたはそれ以上のサーバと関連付けられた公開鍵および秘密鍵を生成することができる。1つまたはそれ以上のサーバは、1つまたはそれ以上のサーバと関連付けられた公開鍵および秘密鍵を、1つまたはそれ以上のサーバと関連付けられたデータベースに記憶することができる。接続エージェントは、クライアントデバイスから受信したデータに署名した後、接続エージェントに関連付けられた秘密鍵を接続エージェントから削除することができる。接続エージェントは、接続エージェントに関連付けられた署名付き公開鍵を送信した後、接続エージェントに関連付けられた署名付き公開鍵と、接続エージェントに関連付けられた公開鍵と、を接続エージェントから削除することができる。接続エージェントに関連付けられた署名付き公開鍵と、署名付きデータと、を送信した後、クライアントデバイスを、接続エージェントに関連付けられた仮想デスクトップまたは仮想アプリケーションのうちの1つ以上に接続する。
【0007】
本開示の1つまたはそれ以上の態様は、クライアントデバイスにより、かつ1つまたはそれ以上のサーバから、1つまたはそれ以上のサーバと関連付けられた公開鍵を受信する方法も提供することができる。
【0008】
クライアントデバイスは、コンピューティングデバイス上の接続エージェントから、接続エージェントと関連付けられ、かつ1つまたはそれ以上のサーバと関連付けられた秘密鍵によって署名された公開鍵と、クライアントデバイスによって生成され、かつ接続エージェントに関連付けられた秘密鍵によって署名されたデータと、を含む情報を受信することができる。クライアントデバイスは、接続エージェントに関連付けられた署名付き公開鍵の署名が、1つまたはそれ以上のサーバと関連付けられた公開鍵と対応するかどうかを判断することができる。1つまたはそれ以上のサーバと関連付けられた公開鍵を受信することは、1つまたはそれ以上のサーバによってクライアントデバイスに接続リースを発行することを含む。クライアントデバイスは、接続エージェントに関連付けられた署名付き公開鍵の署名が、1つまたはそれ以上のサーバと関連付けられた公開鍵と対応しないという判断に基づき、接続リース内の第2の接続エージェントに接続することができる。クライアントデバイスは、接続エージェントに関連付けられた署名付き公開鍵の署名が、1つまたはそれ以上のサーバと関連付けられた公開鍵と対応するという判断に基づき、署名付きデータの署名が、接続エージェントに関連付けられた署名付き公開鍵と対応するかどうかを判断することができる。クライアントデバイスは、署名付きデータの署名が、接続エージェントに関連付けられた署名付き公開鍵と対応しないという判断に基づき、接続リース内の第2の接続エージェントに接続することができる。クライアントデバイスは、署名付きデータの署名が、接続エージェントに関連付けられた署名付き公開鍵と対応するという判断に基づき、接続エージェントに接続することができる。接続デバイスは、1つまたはそれ以上のサーバから、1つまたはそれ以上のサーバと関連付けられた第2の公開鍵を受信することができる。クライアントデバイスは、1つまたはそれ以上のサーバと関連付けられた第2の公開鍵に基づき、接続エージェントに関連付けられた署名付き公開鍵を検証することができる。接続エージェントに関連付けられた署名付き公開鍵は、マシンIDまたは失効日のうちの1つ以上を含み得る。
【0009】
本開示の1つまたはそれ以上の態様は、コンピュータ可読命令を記憶する1つまたはそれ以上の非一時的コンピュータ可読媒体も提供できる。コンピュータ可読命令は、実行されると、コンピューティングデバイス上の接続エージェントをして、接続エージェントと、接続エージェントに関連付けられた公開鍵と、を1つまたはそれ以上のサーバに登録することを行わせる。コンピュータ可読命令は、接続エージェントが以前にログインした1人またはそれ以上のユーザによって汚染されていないという判断に基づき、接続エージェントをして、接続エージェントと関連付けられ、かつ1つまたはそれ以上のサーバによって署名された公開鍵を1つまたはそれ以上のサーバから受信することを行わせることができる。コンピュータ可読命令は、接続エージェントをして、接続エージェントに関連付けられた署名付き公開鍵を記憶することを行わせることができる。コンピュータ可読命令は、接続エージェントをして、クライアントデバイスから受信したデータに署名することを行わせることができる。コンピュータ可読命令は、接続エージェントをして、接続エージェントに関連付けられた署名付き公開鍵と、署名付きデータと、をクライアントデバイスに送信することを行わせることができる。コンピュータ可読命令は、クライアントデバイスから受信したデータに接続エージェントが署名した後、接続エージェントをして、接続エージェントに関連付けられた秘密鍵を接続エージェントから削除することを行わせることができる。コンピュータ可読命令は、接続エージェントが、クライアントデバイスに、接続エージェントに関連付けられた署名付き公開鍵を送信した後、接続エージェントをして、接続エージェントに関連付けられた署名付き公開鍵と、接続エージェントに関連付けられた公開鍵と、を接続エージェントから削除することを行わせることができる。コンピュータ可読命令は、接続エージェントをして、クライアントデバイスから、かつ接続エージェントに関連付けられた署名付き公開鍵の署名が検証されるという判断に基づき、接続エージェントへの接続リクエストを受信することと、クライアントデバイスに接続することと、を行わせることができる。接続エージェントに関連付けられた署名付き公開鍵の署名が検証されるという判断は、署名付きデータの署名が検証されるという判断を含み得る。
【0010】
これらの態様および追加的な態様が、以下でさらに詳述する開示内容により理解されるであろう。
【0011】
本明細書に記載の態様およびそれらの利点は、添付の図面を考慮して以下の説明を参照することにより、より深い理解が得られ得る。これらの図面において、同様の参照番号は同様の特徴を示している。
【図面の簡単な説明】
【0012】
【
図1】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的なコンピュータシステムアーキテクチャを示す。
【
図2】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的なリモートアクセスシステムアーキテクチャを示す。
【
図3】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的な仮想化された(ハイパーバイザ)システムアーキテクチャを示す。
【
図4】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的なクラウドベースのシステムアーキテクチャを示す。
【
図5】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的な動作環境を示す。
【
図6A】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上の接続エージェントの動作例の例示的なフローチャートを示す。
【
図6B】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上の接続エージェントの動作例の例示的なフローチャートを示す。
【
図7A】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上のサーバの動作例の例示的なフローチャートを示す。
【
図7B】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上のサーバの動作例の例示的なフローチャートを示す。
【
図8A】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上のクライアントデバイスの動作例の例示的なフローチャートを示す。
【
図8B】本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る1つまたはそれ以上のクライアントデバイスの動作例の例示的なフローチャートを示す。
【発明を実施するための形態】
【0013】
様々な実施の形態に関する以降の記述においては、本明細書の一部を形成する上記の添付図面が参照されており、本明細書に記載された態様が実施され得る様々な実施の形態が例として示されている。本明細書に記載された範囲から逸脱しない限り、他の実施の形態を利用したり、構造上および機能上の変更を行ったりすることができるものと理解されたい。様々な態様で、他の実施の形態が可能であり、種々の異なる方法で実施または実行することができる。
【0014】
以下に詳述する主題の一般的な紹介として、本明細書に記載された発明の態様は、信頼できる仲介局がない場合などに、コンピューティングデバイス上の接続エージェントを追跡することに関するものである。接続エージェントは、秘密鍵および公開鍵を生成し、および/または公開鍵を送信もしくは受信し、および/またはクライアントデバイスによって生成されたデータに署名することができる。1つまたはそれ以上のサーバが、秘密鍵および公開鍵を生成することができ、接続エージェントがクリーンであるか汚染されているかを判断し、および/または公開鍵を送信もしくは受信し、および/または公開鍵に署名することができる。クライアントデバイスは、公開鍵を受信し、および/またはクライアントデバイスによって生成されたデータを送信もしくは受信し、および/または公開鍵を秘密鍵と照合することができる。このようにして、クライアントデバイスは、1つまたはそれ以上のサーバが停止した場合でも、接続エージェントがクリーンであるか汚染されているかを判断することができる。その結果、クライアントデバイスと関連付けられた個人は、例えば、信頼できる仲介局を使用することなく、接続エージェントを有利かつ安全に利用することができる。
【0015】
本明細書で使われている表現や用語は説明上のものであり、制限的なものとみなすべきでない。本明細書で使われている句および用語には、むしろ最も広義の解釈および意味が与えられるべきである。「含む」、「備える」、およびこれらの変形が使用されている場合には、以降に列挙された項目およびそれらの均等物、ならびに追加項目およびそれらの均等物を包含するものとする。「搭載」、「接続」、「連結」、「位置付け」、「係合」という用語、および同様の用語が使用されている場合には、直接的および間接的な搭載、接続、連結、位置付け、および係合を含むものとする。
【0016】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、およびネットワークは、特にスタンドアロン、被ネットワーク接続、リモートアクセス(リモートデスクトップとも称される)、被仮想化、および/またはクラウドベースの環境など、種々の異なるシステム環境で利用され得る。
【0017】
図1は、本明細書に記載された1つまたはそれ以上の例示的な態様を、スタンドアロンおよび/または被ネットワーク接続環境で実装する目的で使用され得るシステムアーキテクチャおよびデータ処理デバイスの一例を表している。様々なネットワークノード103、105、107、および109は、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続され得る。追加または代替として、プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、パーソナルネットワーク(PAN)など、他のネットワークが使用され得る。ネットワーク101は説明用であり、より少数または追加的なコンピュータネットワークに置き換えられ得る。ローカルエリアネットワーク133は、任意の既知のLANトポロジーのうちの1つ以上を有することができ、イーサネットなど、様々な異なるプロトコルのうちの1つ以上を使用することができる。デバイス103、105、107および109、ならびに他のデバイス(非図示)は、ツイストペアワイヤ、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介して、ネットワークのうちの1つ以上に接続され得る。
【0018】
本明細書で使用され、図面に描かれている「ネットワーク」という用語は、遠隔の記憶デバイスが1つまたはそれ以上の通信経路を介して連結されているシステムを表すだけでなく、記憶能力を有するかかるシステムに随時連結され得るスタンドアロンデバイスも表す。したがって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、すべての物理ネットワークにまたがって所在する単一の実体に帰属するデータで構成される「コンテンツネットワーク」も含む。
【0019】
構成要素としては、データサーバ103、ウェブサーバ105、クライアントコンピュータ107、109が挙げられ得る。データサーバ103は、本明細書に記載された1つまたはそれ以上の例示的な態様を実施するためのデータベースおよび制御ソフトウェアの全体的なアクセス、制御、および管理を提供する。データサーバ103はウェブサーバ105に接続され得、ユーザはウェブサーバ105を介して、リクエストされたデータと対話し、データを取得する。代替として、データサーバ103は、ウェブサーバそのものとなってインターネットに直接接続され得る。データサーバ103は、ローカルエリアネットワーク133、ワイドエリアネットワーク101(例えば、インターネット)、直接もしくは間接的な接続を介して、または他の何らかのネットワークを介して、ウェブサーバ105に接続され得る。ユーザは、リモートコンピュータ107、109を使用してデータサーバ103と対話することができ、例えば、ウェブブラウザを使用して、ウェブサーバ105がホストする1つまたはそれ以上の外部公開されたウェブサイトを介してデータサーバ103に接続することができる。クライアントコンピュータ107、109は、データサーバ103に記憶されているデータにアクセスするために、データサーバ103と連携して使用され得るか、他の目的で使用され得る。例えば、クライアントデバイス107から、ユーザは、当技術分野で既知のインターネットブラウザを使用して、またはコンピュータネットワーク(インターネットなど)を経由してウェブサーバ105および/もしくはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスすることができる。
【0020】
サーバおよびアプリケーションは、同じ物理マシン上で組み合わせられ、別々の仮想アドレスまたは論理アドレスを保持することができるか、別々の物理マシン上に所在することができる。
図1は、使用され得るネットワークアーキテクチャの一例を表しているに過ぎず、当業者であれば、使用される特定のネットワークアーキテクチャおよびデータ処理デバイスが多様であり得、本明細書にさらに記載のとおり、それらが提供する機能に対して二次的であることを理解するであろう。例えば、ウェブサーバ105およびデータサーバ103によって提供されるサービスは、単一サーバ上で組み合わせられ得る。
【0021】
各構成要素103、105、107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってもよい。データサーバ103は、例えば、データサーバ103の動作全体を制御するプロセッサ111を含み得る。データサーバ103は、ランダムアクセスメモリ(RAM)113、読み出し専用メモリ(ROM)115、ネットワークインターフェース117、入出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、およびメモリ121をさらに含み得る。入出力(I/O)119は、データまたはファイルの読み出し、書き込み、表示、および/または印刷を行うための様々なインターフェースユニットおよびドライブを含み得る。
【0022】
メモリ121は、データ処理デバイス103の動作全体を制御するためのオペレーティングシステムソフトウェア123と、本明細書に記載された態様を実施するようにデータサーバ103に指示するための制御ロジック125と、本明細書に記載された態様と組み合わせて使用してもしなくてもよい二次的な機能、サポート機能、および/または他の機能を提供する他のアプリケーションソフトウェア127と、をさらに記憶することができる。本明細書では、制御ロジック125がデータサーバソフトウェア125とも称され得る。データサーバソフトウェア125の機能とは、制御ロジック125へと符号化された規則に基づいて自動的に行われ、システムに入力を提供するユーザによって手動で行われる動作もしくは決定、および/またはユーザ入力(例えば、クエリやデータアップデートなど)に基づく自動処理の組み合わせのことであってもよい。
【0023】
メモリ121は、第1のデータベース129および第2のデータベース131を含む、本明細書に記載された1つまたはそれ以上の態様の実施に使用されるデータも記憶することができる。いくつかの実施の形態において、第1のデータベース129は、第2のデータベース131を(例えば、別々のテーブルやレポートなどとして)含み得る。つまり、情報は、システム設計に応じて、単一のデータベースに記憶すること、または異なる論理、仮想、もしくは物理データベースへと分けることができる。デバイス105、107、および109は、デバイス103に関して説明したのと同様のアーキテクチャまたは異なるアーキテクチャを有することができる。当業者であれば、例えば、処理負荷を複数のコンピュータに分配したり、地理的な箇所、ユーザのアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分離したりする目的で、本明細書に記載されているデータ処理デバイス103(またはデバイス105、107、もしくは109)の機能が複数のデータ処理デバイスに分散され得るということを理解するであろう。
【0024】
1つまたはそれ以上の態様は、本明細書に記載のとおり、1つまたはそれ以上のプログラムモジュールなど、1つまたはそれ以上のコンピュータまたは他のデバイスによって実行されるコンピュータ使用可能もしくは可読データおよび/またはコンピュータ実行可能命令で具現化され得る。一般に、プログラムモジュールとしては、コンピュータまたは他のデバイス内のプロセッサによって実行されたときに、特定のタスクを実施したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、構成要素、データ構造体などが挙げられる。モジュールは、実行のために後でコンパイルされるソースコードプログラミング言語で記述され得るか、ハイパーテキストマークアップ言語(HTML)または拡張マークアップ言語(XML)(これらに限定されない)などのスクリプト言語で記述され得る。コンピュータ実行可能命令は、不揮発性記憶デバイスなどのコンピュータ可読媒体に記憶され得る。ハードディスク、CD-ROM、光学式記憶デバイス、磁気記憶デバイス、および/またはそれらの任意の組み合わせなど、任意の適切なコンピュータ可読記憶媒体が利用され得る。加えて、本明細書に記載されているデータまたはイベントを表す様々な伝送(非記憶)媒体は、金属線、光ファイバ、および/または無線伝送媒体(例えば、空気および/または空間)などの信号伝導媒体を通過する電磁波という形態で、送信元と送信先との間で転送され得る。本明細書に記載されている様々態様は、方法、データ処理システム、またはコンピュータプログラム製品として具現化され得る。そのため、様々な機能の全体または一部は、ソフトウェア、ファームウェア、および/または、集積回路、フィールドプログラマブルゲートアレイ(FPGA)などのハードウェアもしくはハードウェア等価物で具現化され得る。本明細書に記載されている1つまたはそれ以上の態様をより効果的に実装する目的で、特定のデータ構造体が使用され得、かかるデータ構造体は、本明細書に記載されているコンピュータ実行可能命令およびコンピュータ使用可能データの範囲内で企図される。
【0025】
図2をさらに参照すると、本明細書に記載されている1つまたはそれ以上の態様が、リモートアクセス環境で実装され得る。
図2は、本明細書に記載された1つまたはそれ以上の例示的な態様に従って使用され得る例示的なコンピューティング環境200内のコンピューティングデバイス201を含むシステムアーキテクチャ例を示す。コンピューティングデバイス201は、単一サーバまたは複数サーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)内のサーバ206aとして使用され得、クライアントアクセスデバイスに仮想マシンを提供するように構成することができる。コンピューティングデバイス201は、デバイス201の動作全体を制御するためのプロセッサ203と、RAM205、ROM207、入出力(I/O)モジュール209、およびメモリ215など、デバイス201の関連構成要素を有することができる。
【0026】
I/Oモジュール209は、コンピューティングデバイス201のユーザが入力を提供する手段であり得るマウス、キーパッド、タッチスクリーン、スキャナ、光学式読取機、および/もしくはスタイラス(または他の入力デバイス(複数であってもよい。以下「複数可」と称する))を含み得ることに加え、音声出力を提供するための1つまたはそれ以上のスピーカと、テキスト、オーディオビジュアル、および/またはグラフィカル出力を提供するための1つまたはそれ以上の映像表示デバイスと、も含み得る。ソフトウェアは、本明細書に記載されているような様々な機能を実施するために、コンピューティングデバイス201を特殊目的のコンピューティングデバイスへと構成するための命令をプロセッサ203に提供する目的で、メモリ215および/または他のストレージ内に記憶され得る。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、および関連付けられたデータベース221など、コンピューティングデバイス201で使用されるソフトウェアを記憶することができる。
【0027】
コンピューティングデバイス201は、端末240(クライアントデバイスとも称される)など、1つまたはそれ以上のリモートコンピュータへの接続をサポートする被ネットワーク接続環境で動作することができる。端末240は、コンピューティングデバイス103もしくは201に関して上述した要素の多くまたはすべてを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。
【0028】
図2に描かれているネットワーク接続は、ローカルエリアネットワーク(LAN)225およびワイドエリアネットワーク(WAN)229を含むが、他のネットワークも含み得る。コンピューティングデバイス201は、LANネットワーク接続環境で使用される場合、ネットワークインターフェースまたはアダプタ223を介してLAN225に接続され得る。WANネットワーク接続環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)などのWAN229を経由した通信を確立するためのモデムまたは他のワイドエリアネットワークインターフェース227を含み得る。図示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用され得るということは理解されよう。コンピューティングデバイス201および/または端末240は、バッテリ、スピーカ、アンテナ(非図示)など、他の様々な構成要素を含むモバイル端末(例えば、携帯電話、スマートフォン、携帯型情報端末(PDA)、ノートパソコンなど)でもあり得る。
【0029】
また、本明細書に記載の態様は、数々の他の汎用または特殊目的のコンピューティングシステム環境または構成でも動作可能であってもよい。本明細書に記載の態様で使用するのに適することができる他のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラミング可能家電製品、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定されない。
【0030】
図2に示すとおり、1つまたはそれ以上のクライアントデバイス240は、1つまたはそれ以上のサーバ206a~206n(本明細書では概して「サーバ(複数可)206」と称される)と通信することができる。一実施の形態において、コンピューティング環境200は、サーバ(複数可)206とクライアントマシン(複数可)240との間に設置されたネットワーク機器を含み得る。ネットワーク機器は、クライアント/サーバ接続を管理することができ、場合によっては、複数のバックエンドサーバ206間でクライアント接続の負荷分散を行うことができる。
【0031】
クライアントマシン(複数可)240は、いくつかの実施の形態において、単一クライアントマシン240または単一群のクライアントマシン240と称され得るのに対し、サーバ(複数可)206は、単一サーバ206または単一群のサーバ206と称され得る。一実施の形態においては、単一クライアントマシン240が1つより多くのサーバ206と通信するのに対し、別の実施の形態においては、単一サーバ206が1つより多くのクライアントマシン240と通信する。さらに別の実施の形態においては、単一クライアントマシン240が単一サーバ206と通信する。
【0032】
いくつかの実施の形態においては、クライアントマシン240が、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン、リモートマシン、クライアントノード(複数可)、エンドポイント(複数可)、またはエンドポイントノード(複数可)という非網羅的な用語のうちのいずれか1つによって参照され得る。いくつかの実施の形態においては、サーバ206が、サーバ(複数可)、ローカルマシン、リモートマシン、サーバファーム(複数可)、またはホストコンピューティングデバイス(複数可)という非網羅的な用語のうちのいずれか1つによって参照され得る。
【0033】
一実施の形態において、クライアントマシン240は、仮想マシンであってもよい。仮想マシンは任意の仮想マシンであってもよいのに対し、いくつかの実施の形態においては、仮想マシンが、例えば、シトリックス・システムズ(Citrix Systems)、IBM、VMware、またはその他任意のハイパーバイザによって開発されたハイパーバイザなど、タイプ1またはタイプ2のハイパーバイザによって管理される任意の仮想マシンであってもよい。いくつかの態様においては、仮想マシンがハイパーバイザによって管理され得るのに対し、他の態様においては、仮想マシンが、サーバ206上で実行されるハイパーバイザ、またはクライアント240上で実行されるハイパーバイザによって管理され得る。
【0034】
いくつかの実施の形態は、サーバ206または遠隔地にある他のマシン上でリモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス240を含む。これらの実施の形態において、クライアントデバイス240は、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示するために、仮想マシンレシーバプログラムまたはアプリケーションを実行することができる。一例において、アプリケーションはデスクトップであるのに対し、他の例においては、アプリケーションが、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルおよび/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインターフェースを提供するグラフィカルシェルを含む。本明細書で使用されているアプリケーションとは、オペレーティングシステムのインスタンスが(および任意選択でデスクトップも)ロードされた後に実行されるプログラムのことである。
【0035】
いくつかの実施の形態において、サーバ206は、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモートディスプレイアプリケーションにデータを送信し、これによって、サーバ206上で実行されるアプリケーションによって生成された表示出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、フロリダ州フォートローダーデールにあるシトリックス・システムズ社(Citrix Systems, Inc.)が開発したインディペンデントコンピューティングアーキテクチャ(ICA)プロトコル、またはワシントン州レドモンドにあるマイクロソフト社(Microsoft Corporation)が製造したリモートデスクトッププロトコル(RDP)という非網羅的なプロトコルリスト内のいずれか1つであってもよい。
【0036】
リモートコンピューティング環境は、例えばクラウドコンピューティング環境において、論理的にグループ化されてサーバファーム206にまとめられるような1つより多くのサーバ206a~206nを含み得る。サーバファーム206は、論理的にグループ化されつつ地理的に分散したサーバ206、または論理的にグループ化されつつ互いに近接して所在するサーバ206を含み得る。いくつかの実施の形態において、サーバファーム206内で地理的に分散したサーバ206a~206nは、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信することができ、これらの実施の形態において、異なる地理的領域は、異なる大陸、異なる大陸領域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。いくつかの実施の形態において、サーバファーム206は単一の実体として管理され得るのに対し、他の実施の形態においては、サーバファーム206が複数のサーバファームを含むことができる。
【0037】
いくつかの実施の形態においては、サーバファームが、略同様のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIANなど)を実行するサーバ206を含み得る。他の実施の形態においては、サーバファーム206が、第1のタイプのオペレーティングシステムプラットフォームを実行する第1の群の1つまたはそれ以上のサーバと、第2のタイプのオペレーティングシステムプラットフォームを実行する第2の群の1つまたはそれ以上のサーバと、を含み得る。
【0038】
サーバ206は、必要に応じて任意のタイプのサーバ、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケットレイヤ(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバとして構成され得るか、マスターアプリケーションサーバ、アクティブディレクトリを実行するサーバ、もしくはファイアウォール機能、アプリケーション機能、または負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成され得る。また、他のサーバタイプも使用され得る。
【0039】
いくつかの実施の形態は、クライアントマシン240からリクエストを受信し、リクエストを第2のサーバ206b(非図示)に転送し、第2のサーバ206b(非図示)からの応答を使用してクライアントマシン240によって生成されたリクエストに応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240にとって利用可能なアプリケーション一覧と、アプリケーション一覧内で識別されたアプリケーションをホストするアプリケーションサーバ206と関連付けられたアドレス情報と、を取得することができる。第1のサーバ206aはその後、ウェブインターフェースを使用してクライアントのリクエストに対する応答を提示することができ、識別されたアプリケーションへのアクセスをクライアント240に提供するために、クライアント240と直接通信することができる。1つまたはそれ以上のクライアント240および/または1つまたはそれ以上のサーバ206は、ネットワーク230、例えばネットワーク101を経由してデータを伝送することができる。
【0040】
図3は、例示的なデスクトップ仮想化システムのハイレベルアーキテクチャを示している。図示のとおり、デスクトップ仮想化システムは、仮想デスクトップおよび/または仮想アプリケーションを1つまたはそれ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ301を含む、単一サーバもしくは複数サーバシステム、またはクラウドシステムであってもよい。本明細書において使用されているデスクトップとは、1つまたはそれ以上のアプリケーションがホストおよび/または実行され得るグラフィカル環境または空間のことである。デスクトップは、ローカルおよび/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインターフェースを提供するグラフィカルシェルを含む。アプリケーションは、オペレーティングシステムのインスタンスが(および任意選択でデスクトップも)ロードされた後に実行されるプログラムを含み得る。オペレーティングシステムの各インスタンスは、物理的なもの(例えば、デバイスごとに1つのOS)、または仮想的なもの(例えば、単一デバイス上で稼動する多数のOSインスタンス)であってもよい。各アプリケーションは、ローカルデバイス上で実行され得るか、遠隔地にある(例えば、遠隔所在の)デバイス上で実行され得る。
【0041】
コンピュータデバイス301は、仮想化環境、例えば、単一サーバ、複数サーバ、またはクラウドコンピューティング環境における仮想化サーバとして構成され得る。
図3に例示された仮想化サーバ301は、
図2に例示されたサーバ206の1つまたはそれ以上の実施の形態として展開することができ、および/またはこれらの実施の形態もしくは他の既知のコンピューティングデバイスによって実装することができる。仮想化サーバ301には、1つまたはそれ以上の物理ディスク304と、1つまたはそれ以上の物理デバイス306と、1つまたはそれ以上の物理プロセッサ308と、1つまたはそれ以上の物理メモリ316と、を含むことができるハードウェア層が含まれる。いくつかの実施の形態においては、ファームウェア312を、物理メモリ316内のメモリ要素内に記憶することができ、物理プロセッサ308のうちの1つ以上によって実行することができる。仮想化サーバ301は、物理メモリ316内のメモリ要素に記憶され得、かつ物理プロセッサ308のうちの1つ以上によって実行され得るオペレーティングシステム314をさらに含み得る。さらには、ハイパーバイザ302が、物理メモリ316内のメモリ要素に記憶され得、かつ物理プロセッサ308のうちの1つ以上によって実行することができる。
【0042】
物理プロセッサ308のうちの1つ以上で実行されるのは、1つまたはそれ以上の仮想マシン332A~C(概して332)であってもよい。各仮想マシン332は、仮想ディスク326A~Cと仮想プロセッサ328A~Cとを有することができる。いくつかの実施の形態において、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行することができる。制御プログラム320は、制御仮想マシン、Dom0、Domain 0、またはシステムの管理および/もしくは制御に使用される他の仮想マシンと称され得る。いくつかの実施の形態において、1つまたはそれ以上の仮想マシン332B~Cは、仮想プロセッサ328B~Cを使用して、ゲストオペレーティングシステム330A~Bを実行することができる。
【0043】
仮想化サーバ301は、仮想化サーバ301と通信する1台以上のハードウェアを有するハードウェア層310を含み得る。いくつかの実施の形態において、ハードウェア層310は、1つまたはそれ以上の物理ディスク304と、1つまたはそれ以上の物理デバイス306と、1つまたはそれ以上の物理プロセッサ308と、1つまたはそれ以上の物理メモリ316と、を含み得る。物理構成要素304、306、308、および316は、例えば、上記の構成要素のうちのいずれかを含み得る。物理デバイス306は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、記憶デバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなど)、または、仮想化サーバ301に接続されるか仮想化サーバ301と通信する任意のデバイスを含み得る。ハードウェア層310における物理メモリ316は、任意のタイプのメモリを含み得る。物理メモリ316は、データを記憶することができ、いくつかの実施の形態においては、1つまたはそれ以上のプログラム、または1組以上の実行可能命令を記憶することができる。
【0044】
図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶されている実施の形態を表している。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つまたはそれ以上のプロセッサ308によって実行することができる。
【0045】
仮想化サーバ301は、ハイパーバイザ302も含み得る。いくつかの実施の形態において、ハイパーバイザ302は、任意の数の仮想マシン332を作成および管理するために仮想化サーバ301上のプロセッサ308によって実行されるプログラムであってもよい。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと称され得る。いくつかの実施の形態において、ハイパーバイザ302は、実行可能命令と、コンピューティングマシン上で実行される仮想マシンを監視するハードウェアとの、任意の組み合わせとすることができる。ハイパーバイザ302は、仮想化サーバ301上で実行されるオペレーティングシステム314内でハイパーバイザが実行される、タイプ2のハイパーバイザであってもよい。その後、仮想マシンが、ハイパーバイザ302よりも上位のレベルで実行され得る。いくつかの実施の形態において、タイプ2のハイパーバイザは、タイプ2のハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行され得る。他の実施の形態においては、仮想化環境内にある1つまたはそれ以上の仮想化サーバ301が、代わりにタイプ1のハイパーバイザ(非図示)を含み得る。タイプ1のハイパーバイザは、ハードウェア層310内のハードウェアおよびリソースに直接アクセスすることにより、仮想化サーバ301上で実行され得る。すなわち、図示のとおり、タイプ2のハイパーバイザ302がホストオペレーティングシステム314を通じてシステムリソースにアクセスするのに対し、タイプ1のハイパーバイザは、ホストオペレーティングシステム314を通じないですべてのシステムリソースに直接アクセスすることができる。タイプ1のハイパーバイザは、仮想化サーバ301の1つまたはそれ以上の物理プロセッサ308上で直接実行され得、物理メモリ316に記憶されたプログラムデータを含み得る。
【0046】
ハイパーバイザ302は、いくつかの実施の形態において、オペレーティングシステム330または制御プログラム320がシステムリソースに直接アクセスするのをシミュレートする任意の方法で、仮想マシン332上で実行されるオペレーティングシステム330または制御プログラム320に仮想リソースを提供することができる。システムリソースとしては、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、および、仮想化サーバ301のハードウェア層310に含まれるその他任意の構成要素が挙げられるが、これらに限定されない。ハイパーバイザ302は、仮想ハードウェアのエミュレーション、物理ハードウェアのパーティショニング、物理ハードウェアの仮想化、および/またはコンピューティング環境へのアクセスを提供する仮想マシンの実行に使用され得る。さらに他の実施の形態においては、ハイパーバイザ302が、仮想化サーバ301上で実行される仮想マシン332のプロセッサスケジューリングおよびメモリパーティショニングを制御することができる。ハイパーバイザ302としては、カリフォルニア州パロアルトにあるVMWare社製のもの、オープンソースのXenProject.orgコミュニティが開発を統括するオープンソース製品であるXENPROJECTハイパーバイザ、マイクロソフト(Microsoft)が提供するHyperV、VirtualServer、仮想PCハイパーバイザなどが挙げられる。いくつかの実施の形態において、仮想化サーバ301は、ゲストオペレーティングシステムが実行され得る仮想マシンプラットフォームを作成するハイパーバイザ302を実行することができる。これらの実施の形態において、仮想化サーバ301は、ホストサーバと称され得る。かかる仮想化サーバの一例は、フロリダ州フォートローダーデールにあるシトリックス・システムズ社が提供しているXENSERVERである。
【0047】
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行される1つまたはそれ以上の仮想マシン332B~C(概して332)を作成することができる。いくつかの実施の形態において、ハイパーバイザ302は、仮想マシン332を作成するために、仮想マシンイメージをロードすることができる。他の実施の形態において、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行することができる。さらに他の実施の形態において、仮想マシン332は、ゲストオペレーティングシステム330を実行することができる。
【0048】
ハイパーバイザ302は、仮想マシン332を作成することに加え、少なくとも1つの仮想マシン332の実行を制御することができる。他の実施の形態において、ハイパーバイザ302は、仮想化サーバ301が提供する少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)を抽象化したものを、少なくとも1つの仮想マシン332に提示することができる。他の実施の形態において、ハイパーバイザ302は、仮想マシン332が仮想化サーバ301で利用可能な物理プロセッサ308にアクセスする方法を制御することができる。物理プロセッサ308へのアクセスを制御することは、仮想マシン332がプロセッサ308にアクセスすべきかどうか、および物理プロセッサの能力が仮想マシン332にどのように提示されるかを判断することを含み得る。
【0049】
図3に示すとおり、仮想化サーバ301は、1つまたはそれ以上の仮想マシン332をホストまたは実行することができる。仮想マシン332は、1組の実行可能命令であり、1組の実行可能命令は、プロセッサ308によって実行されると、仮想マシン332が物理コンピューティングデバイスとよく似たプログラムおよびプロセスを実行できるように物理コンピュータの動作を模倣することができる。
【0050】
図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施の形態を表しているが、他の実施の形態においては、仮想化サーバ301が任意の数の仮想マシン332をホストすることができる。ハイパーバイザ302は、いくつかの実施の形態において、仮想マシン332にとって利用可能な物理ハードウェア、メモリ、プロセッサ、および他のシステムリソースを表示する一意の仮想ビューを各仮想マシン332に提供することができる。いくつかの実施の形態において、一意の仮想ビューは、仮想マシンの許可、1つまたはそれ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行されるアプリケーション、仮想マシンによってアクセスされるネットワーク、またはその他任意の所望の基準のうちの1つ以上に基づき得る。例えば、ハイパーバイザ302は、1つまたはそれ以上の安全でない仮想マシン332と、1つまたはそれ以上の安全な仮想マシン332と、を作成することができる。安全でない仮想マシン332は、安全な仮想マシン332であればアクセスを許可され得るリソース、ハードウェア、メモリロケーションおよびプログラムにアクセスすることができない。他の実施の形態においては、ハイパーバイザ302が、仮想マシン332にとって利用可能な物理ハードウェア、メモリ、プロセッサ、および他のシステムリソースを表示する略同様の仮想ビューを各仮想マシン332に提供することができる。
【0051】
各仮想マシン332は、仮想ディスク326A~C(概して326)と、仮想プロセッサ328A~C(概して328)と、を含み得る。仮想ディスク326は、いくつかの実施の形態において、仮想化サーバ301の1つまたはそれ以上の物理ディスク304を示す被仮想化ビュー、または仮想化サーバ301の1つまたはそれ以上の物理ディスク304の一部分である。物理ディスク304を示す被仮想化ビューは、ハイパーバイザ302によって生成、提供、および管理することができる。いくつかの実施の形態においては、ハイパーバイザ302が、物理ディスク304を示す一意のビューを各仮想マシン332に提供する。そのため、これらの実施の形態においては、各仮想マシン332に含まれる特定の仮想ディスク326が、他の仮想ディスク326と比較したときに一意となり得る。
【0052】
仮想プロセッサ328は、仮想化サーバ301の1つまたはそれ以上の物理プロセッサ308を示す被仮想化ビューであってもよい。いくつかの実施の形態において、物理プロセッサ308を示す被仮想化ビューは、ハイパーバイザ302によって生成、提供、および管理することができる。いくつかの実施の形態において、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308の同じ特性を略すべて有する。他の実施の形態においては、仮想プロセッサ308が、仮想プロセッサ328の特性の少なくとも一部が、対応する物理プロセッサ308の特性と異なるように、物理プロセッサ308を示す被修正ビューを提供する。
【0053】
図4をさらに参照すると、本明細書に記載されているいくつかの態様が、クラウドベースの環境で実装され得る。
図4は、クラウドコンピューティング環境(またはクラウドシステム)400の一例を表している。
図4で確認されるとおり、クライアントコンピュータ411~414は、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403a~403b(本明細書では概して「ホストサーバ403」と称される)、ストレージリソース404a~404b(本明細書では概して「ストレージリソース404」と称される)、およびネットワーク要素405a~405b(本明細書では概して「ネットワークリソース405」と称される))にアクセスするために、クラウド管理サーバ410と通信することができる。
【0054】
管理サーバ410は、1つまたはそれ以上の物理サーバ上で実装され得る。管理サーバ410は、例えば、フロリダ州フォートローダーデールにあるシトリックス・システムズ社により、CLOUDPLATFORMまたはOPENSTACKを特に稼動することができる。管理サーバ410は、例えば、ホストコンピュータ403、データ記憶デバイス404、およびネットワーク接続デバイス405など、クラウドのハードウェアおよびソフトウェアリソースを含む様々なコンピューティングリソースを管理することができる。クラウドのハードウェアおよびソフトウェアリソースは、プライベートおよび/またはパブリックな構成要素を含み得る。例えば、クラウドは、1つまたはそれ以上の特定の顧客またはクライアントコンピュータ411~414によって、および/またはプライベートネットワークを経由して使用されるプライベートクラウドとして構成され得る。他の実施の形態においては、パブリッククラウド、またはパブリックとプライベートのハイブリッドクラウドが、オープンネットワークまたはハイブリッドネットワークを経由して他の顧客によって使用され得る。
【0055】
管理サーバ410は、クラウド事業者およびクラウド顧客がクラウドシステム400と対話することができるユーザインターフェースを提供するように構成され得る。例えば、管理サーバ410は、クラウド事業者がクラウドリソースの管理、仮想化層の設定、顧客アカウントの管理、および他のクラウド管理タスクの実施を可能にするために、1組のアプリケーションプログラミングインターフェース(API)および/またはユーザインターフェースを備えた1つまたはそれ以上のクラウド事業者コンソールアプリケーション(例えば、ウェブベースまたはスタンドアロンのアプリケーション)を提供することができる。管理サーバ410は、例えば、クラウド内で仮想マシンを作成、変更、または破壊するリクエストなどのクラウドコンピューティングリクエストをクライアントコンピュータ411~414を介してエンドユーザから受信するように構成されたユーザインターフェースを備えた1組のAPIおよび/または1つまたはそれ以上の顧客コンソールアプリケーションを含み得る。クライアントコンピュータ411~414は、インターネットまたは他の何らかの通信ネットワークを介して管理サーバ410に接続することができ、管理サーバ410によって管理されるコンピューティングリソースのうちの1つ以上へのアクセスをリクエストすることができる。クライアントのリクエストを受け、管理サーバ410は、クライアントのリクエストに基づき、クラウドシステムのハードウェア層内の物理リソースを選択してプロビジョニングするように構成されたリソースマネージャを含み得る。例えば、管理サーバ410および追加的なクラウドシステム構成要素は、ネットワーク(例えば、インターネット)を経由して、仮想マシンおよびそれらの動作環境(例えば、ハイパーバイザ、ストレージリソース、ネットワーク要素によって提供されるサービスなど)をクライアントコンピュータ411~414の顧客のためにプロビジョニング、作成、および管理するように構成され得、計算リソース、データ記憶サービス、ネットワーク接続能力、ならびにコンピュータプラットフォームおよびアプリケーションサポートを顧客に提供することができる。クラウドシステムは、セキュリティシステム、開発環境、ユーザインターフェースなど、種々の特定のサービスを提供するようにも構成され得る。
【0056】
特定のクライアント411~414は、例えば、同じエンドユーザに代わって仮想マシンを作成する異なるクライアントコンピュータ、または同じ会社や組織に属する異なるユーザなどに関連することができる。他の例においては、特定のクライアント411~414が、異なる会社や組織に属するユーザなどと無関係であってもよい。無関係のクライアントの場合には、ある任意のユーザの仮想マシンまたはストレージに関する情報が、他のユーザから隠され得る。
【0057】
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、可用性ゾーン401~402(またはゾーン)とは、一まとまりの物理コンピューティングリソースのことであってもよい。ゾーンは、コンピューティングリソースのクラウド全体の中で、他のゾーンから地理的に切り離され得る。例えば、ゾーン401は、カリフォルニア州に所在する第1のクラウドデータセンタであり得、ゾーン402は、フロリダ州に所在する第2のクラウドデータセンタであってもよい。管理サーバ410は、可用性ゾーンのうちの1つ、または別の箇所に所在することができる。各ゾーンは、管理サーバ410など、ゾーンの外にあるデバイスとゲートウェイを通じてインターフェースする内部ネットワークを含み得る。クラウドのエンドユーザ(例えば、クライアント411~414)は、ゾーン間の区別を認識する場合としない場合がある。例えば、エンドユーザは、指定された量のメモリ、処理能力、ネットワーク能力を有する仮想マシンの作成をリクエストすることができる。管理サーバ410は、ユーザのリクエストを受けて、仮想マシンがゾーン401からのリソースを使用して作成されたのか、ゾーン402からのリソースを使用して作成されたのかをユーザが知ることなく、仮想マシンを作成するためのリソースを割り当て得る。他の例においては、クラウドシステムが、特定のゾーンで、またはゾーン内の特定のリソース403~405上で仮想マシン(または他のクラウドリソース)が割り当てられるようにエンドユーザがリクエストできるようにすることができる。
【0058】
この例においては、各ゾーン401~402が、例えば、物理ホスティングリソース(または処理リソース)、物理ネットワークリソース、物理ストレージリソース、スイッチ、およびクラウドコンピューティングサービスを顧客に提供する目的で使用され得る追加的なハードウェアリソースなど、様々な物理ハードウェア構成要素(またはコンピューティングリソース)403~405の配置構成を含み得る。クラウドゾーン401~402における物理ホスティングリソースは、仮想マシンインスタンスを作成およびホストするように構成され得る上記の仮想化サーバ301など、1つまたはそれ以上のコンピュータサーバ403を含み得る。クラウドゾーン401または402における物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェアおよび/またはソフトウェアを備える1つまたはそれ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含み得る。クラウドゾーン401~402におけるストレージリソースは、記憶ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスクなど)と他の記憶デバイスとを含み得る。
【0059】
図4に示すクラウドコンピューティング環境例は、仮想マシンを作成および管理し、クラウド内の物理リソースを使用する顧客に他のサービスを提供するように構成された追加的なハードウェアおよび/またはソフトウェアリソースを有する(例えば、
図1~
図3に示すような)仮想化層も含み得る。仮想化層は、先に
図3に記載したとおり、ハイパーバイザを含み得ることに加え、ネットワークの仮想化、ストレージの仮想化などを提供するための他の構成要素も含み得る。仮想化層は、物理リソース層とは別の層であってもよいか、物理リソース層を有する同じハードウェアおよび/またはソフトウェアリソースの一部または全部を共有することができる。例えば、仮想化層は、物理コンピューティングリソースを有する仮想化サーバ403のそれぞれにインストールされたハイパーバイザを含み得る。例えば、WINDOWS(登録商標) AZURE(ワシントン州レドモンドにあるマイクロソフト社)、AMAZON EC2(ワシントン州シアトルにあるアマゾンドットコム社(Amazon.com Inc.))、IBM BLUE CLOUD(ニューヨーク州アーモンクにあるIBM社)など、既知のクラウドシステムが代替として使用され得る。
【0060】
汚染された接続エージェントの追跡
図5は、例示的な動作環境を示す。動作環境例は、1つまたはそれ以上のサーバ(複数可)501と、1つまたはそれ以上の接続エージェント(複数可)502と、1つまたはそれ以上のクライアントデバイス(複数可)503と、1つまたはそれ以上のデータベース(複数可)504と、通信リンク510と、を含み得る。サーバ(複数可)501および/または接続エージェント(複数可)502は、例えば、
図1のデータサーバ103またはウェブサーバ105、
図2のコンピューティングデバイス201もしくはサーバ206、
図3の仮想化サーバ301、仮想マシン332A~C、および/または
図4の仮想化サーバ403を備えていてもよい。クライアントデバイス(複数可)503は、例えば、
図1のクライアントコンピュータ107または109、
図2のクライアントマシン240、および/または
図4のクライアントコンピュータ411~414を備えていてもよい。データベース(複数可)504は、例えば、
図1のメモリ121またはデータベース129もしくは131、
図2のメモリ215またはデータベース221、
図3の物理ディスク304、物理メモリ316もしくは仮想ディスク326、および/または
図4のストレージリソース404を備えていてもよい。
【0061】
なお、データベース504は、SQL(構造化照会言語)データベースを備えていてもよい。SQLは、プログラミングにおいて使用され、かつリレーショナルデータベース管理システム(RDBMS)に保持されるデータを管理するために設計されたドメイン固有言語であってもよい。サーバ(複数可)501、接続エージェント(複数可)502、クライアントデバイス(複数可)503、および/またはデータベース(複数可)504は、1つまたはそれ以上の通信リンク510を介して接続され得る。通信リンク510は、例えば、ネットワーク101もしくは133、
図2のネットワーク225もしくは229またはコンピュータネットワーク230、および/または
図4のネットワークリソース405を備えていてもよいか、それらの一部であってもよい。
【0062】
サーバ501および接続エージェント502は、デスクトップおよびアプリケーションの仮想化に関連する様々なサービスをクライアントデバイス503に提供することができる。例えば、サーバ501、接続エージェント502、クライアントデバイス503、およびデータベース504は、仮想デスクトップおよびアプリケーションへのオンラインおよびオフラインのアクセスを可能にし、および/またはデスクトップおよびアプリケーションをクラウドから構築および配信するためのプラットフォームを提供し、および/または会社および組織がファイルを同期および共有することを可能にし、および/またはモバイルアプリケーションおよびデバイス管理を提供し、および/または仮想アプリケーションおよびデスクトップへのユニバーサルアクセスを可能にし、および/またはアプリケーションの移行および管理を提供し、および/またはクラウドベースの提携サービスを提供することができる。これらの機能は、デスクトップおよびアプリケーションの仮想化の実装の非限定的な例であってもよい。
【0063】
いくつかの実施の形態においては、サーバ501が、一律的な設定および特徴で構成され得る仮想マシン上でホストされる仮想アプリケーションまたは仮想デスクトップの群(例えば、仮想アプリケーションまたはデスクトッププール)を監視および/またはプロビジョニングすることができる。サーバ501は、例えば、
図3のハイパーバイザなどのハイパーバイザを備えていてもよい。ハイパーバイザは、仮想マシンを作成および/もしくは稼動することができるコンピュータソフトウェア、ファームウェア、ならびに/またはハードウェアであってもよい。いくつかの事例においては、クライアントデバイス503がサーバ501とのセッションを確立するときに、サーバ501、またはそのハイパーバイザは、適切な仮想デスクトッププールから、利用可能な仮想デスクトップにセッションを割り当て得る。サーバ501の停電中には、サーバ501がオンラインでない可能性がある。その場合には、サーバ501が、クライアントデバイス503用の接続エージェント502を検証できない可能性がある。接続エージェント502を検証する方法例については、以下でさらに詳述する。
【0064】
いくつかの実施の形態においては、サーバ501が、パッチ、アップデート、および/または他の構成情報を、共有デスクトップイメージを通じて仮想デスクトップまたはアプリケーションの複数のエンドポイントに配信することができるソフトウェアストリーミング技術を備えていてもよい。サーバ501は、ユーザアクセスの管理、ならびに/または接続の仲介および最適化を司るサーバ側構成要素を備えていてもよい配信コントローラを備えていてもよい。配信コントローラは、仮想アプリケーションおよびデスクトップ、ならびにサーバイメージを作成するマシン作成サービスも提供することができる。サーバ501は、ユーザ認証情報に基づき、クライアントデバイス503を、クライアントデバイス503の割り当て済みのアプリケーションまたはデスクトップに誘導することができる。サーバ501は、リモートのアプリケーション接続またはデスクトップ接続と仮想化との組み合わせを備えていてもよい。サーバ501は、クライアントOSを動作させる複数の仮想マシンを稼動することができる。サーバ501は、クラウドコンピューティングおよびネットワーク接続に関連するサービスも提供することができる。
【0065】
いくつかの実施の形態においては、接続エージェント502が、(例えば、仮想アプリケーションまたはデスクトッププールから)クライアントデバイス503用の仮想アプリケーションおよびデスクトップへの接続を可能にすることができる。接続エージェント502は、クライアントデバイス503用のアプリケーションまたは仮想デスクトップを稼動するマシンにインストールされ得る。接続エージェント502は、マシンがサーバ501に登録できるようにすることができる。接続エージェント502は、クライアントデバイス503への接続を管理することができる。接続エージェント502は、サーバ501またはクライアントデバイス503からのリクエストへの応答を司り得る。接続エージェント502がサーバ501に登録された後、接続エージェント502は、クライアントデバイス503からのリクエストへのサービスを提供し始め得る。接続エージェント502は、ソフトウェアにインストールされたオペレーティングシステムまたはアプリケーション環境であってもよい1つまたはそれ以上の仮想マシンを提供することができる。仮想マシンは、クライアントデバイス503専用のハードウェアを模倣することができる。クライアントデバイス503のユーザは、仮想マシン上で、専用ハードウェア上と同一または同様の体験を有することができる。接続エージェント502は、特殊用途のハードウェア、ソフトウェア、またはそれらの組み合わせを使用するなどして、物理コンピュータの機能を提供することができる仮想マシンにクライアントデバイス503が接続できるようにすることができる。
【0066】
いくつかの実施の形態において、クライアントデバイス503は、仮想マシン、接続エージェント502、および/またはサーバ501に安全に接続するために、サーバ501および接続エージェント502に情報をリクエストし、および/またはサーバ501および接続エージェント502からの情報を受信し、および/または検証することができる。クライアントデバイス503は、利用可能な接続エージェントまたは仮想マシンに関する情報をサーバ501にリクエストすることができる。アプリケーションクライアントデバイス503は、集中ホストされたアプリケーションをインストールする必要なくローカルデバイスに配信することができるアプリケーションおよび/またはデスクトップ仮想化ソフトウェアを備えていてもよい。ソフトウェアは、個々のアプリケーションを、デスクトップ全体ではなく、クライアントデバイス503に配信することができる。このソフトウェアを使用して、例えば、アップル(APPLE)コンピュータ、モバイルデバイス、および/またはGOOGLE CHROMEBOOKなど、WINDOWS(登録商標)アプリケーションを稼動できないのが典型的であったクライアントデバイス503でWINDOWS(登録商標)アプリケーションが使用され得る。逆に言えば、ソフトウェアにより、互換性のないアプリケーションがWINDOWS(登録商標)のデスクトップ上で稼動できるようになり得る。クライアントデバイス503は、オンプレミスデータセンター、またはパブリッククラウド、プライベートクラウド、もしくはハイブリッドクラウドから配信され得るクライアントエージェントを備えていてもよい。クライアントデバイス503のユーザは、クライアントエージェントを介して、仮想アプリケーションおよびデスクトップにアクセスすることができる。クライアントデバイス503は、サーバベースのコンピューティング環境とのリモート接続を確立するために最適化された可能性のあるシンクライアントまたは軽量コンピュータを備えていてもよい。
【0067】
クラウドコンピューティング環境においては、接続エージェント502がクリーンであること、つまり汚染されていないことをクライアントデバイス503のユーザが確信する必要があり得る。例えば、接続エージェント502は、以前にログインしたユーザにより、デバッガまたはキーストロークロガーといった悪意あるソフトウェアによって汚染されている可能性がある。仮想マシンにインストールされた悪意あるソフトウェアは、マシンがクリーンであると別のユーザが誤認し、侵害されたマシンにログオンしたときに、そのユーザの認証情報またはデータを侵害することができる。これらの場面において、サーバ501は、どのマシンがクリーンで、どのマシンが汚染されたかを追跡することができる。接続エージェント502が汚染されている場合、サーバ501は、接続エージェント502を再イメージ化することができる。先に説明したとおり、サーバ501は、仮想マシンおよびその動作環境をプロビジョニング、作成、および管理するように構成され得る、
図4の管理サーバ410を備えていてもよい。接続エージェント502が汚染されていない、つまり新たにイメージ化されている場合には、サーバ501は、クライアントデバイス503が接続エージェント502にアクセスすることを可能にすることができる。ただし、サーバ停止中は、信頼できる仲介局がないと、クライアントデバイス503が接続エージェント502のクリーンな状態または汚染された状態を検証できない可能性がある。
【0068】
本明細書に記載の例では、公開鍵暗号または非対称暗号を使用して、サーバ501などの信頼できる中央局がなくても、接続エージェント502がクリーンであるか汚染されているかを判断することができる。公開鍵暗号化システムにおいては、サーバ501または接続エージェント502など任意の実体が、実体と関連付けられた公開鍵および秘密鍵のペアを生成することができる。実体は、メッセージを(例えば、対応する公開鍵とペアになっている)秘密鍵と組み合わせて、メッセージに対するデジタル署名を作成することができる。暗号化されたメッセージは、対応する公開鍵で復号され得る。暗号化されたメッセージは、デジタル署名および対応する公開鍵と組み合わせられて、署名が有効であること(例えば、対応する秘密鍵の所有者によって署名がなされていること)を検証することができる。秘密鍵は、(例えば、実体内で)秘密性を保ち得、公開鍵は、セキュリティを損ねることなく公開配布され得る。メッセージまたは署名を変更すると、検証が失敗することができる。公開鍵署名システムにおいては、秘密鍵の所有者が(例えば、実体内で)秘密鍵の秘匿性を保っていれば、メッセージの真正性が署名によって証明され得る。例えば、サーバ501が、サーバ501と関連付けられた秘密鍵および公開鍵のペアを生成した場合、秘密鍵が接続エージェント502またはクライアントデバイス503に送信されない可能性がある。代わりに、秘密鍵は、データベース504に送信および/または記憶され得、安全に保護され得る。一方、サーバ501と関連付けられた公開鍵は、接続エージェント502および/またはクライアントデバイス503に送信され得る。接続エージェント502およびクライアントデバイス503は、同様に、それぞれの公開鍵を他の実体に配布することができるが、秘密鍵の安全性は保ち得る。汚染されたデスクトップおよび/またはアプリケーションを、鍵を使用して追跡する方法例について、
図6A~
図8Bでさらに詳述する。
【0069】
図6Aおよび
図6Bは、1つまたはそれ以上の接続エージェントの動作例を示す例示的なフローチャートを示す。
図6Aにおいては、ステップ601で、接続エージェント502が構成され得る。例えば、接続エージェント502が起動または開始され得る。接続エージェント502は、クライアントデバイス503用のアプリケーションまたは仮想デスクトップを稼動するマシンにインストールされ得る。接続エージェント502は、サーバ501からダウンロードされた接続エージェントインストーラによってインストールされ得る。
【0070】
ステップ602で、接続エージェント502は、接続エージェント502と関連付けられた秘密鍵および公開鍵のペアを生成することができる。接続エージェント502は、公開鍵および秘密鍵をメモリに記憶することができる。先に説明したとおり、メモリは、例えば、
図1のメモリ121またはデータベース129もしくは131、
図2のメモリ215またはデータベース221、
図3の物理ディスク304、物理メモリ316もしくは仮想ディスク326、および/または
図4のストレージリソース404に対応することができる。以下でさらに詳述するとおり、接続エージェント502は、例えば、サーバ501およびクライアントデバイス503に公開鍵を公開配布することができる。一方、秘密鍵は、接続エージェント502と関連付けられたメモリ内で安全性が確保され得る。接続エージェント502は、以下でさらに詳述するとおり、秘密鍵を使用してデータ(例えば、メッセージ)に署名もすることができる。
【0071】
ステップ603で、接続エージェント502は、登録リクエストをサーバ501に送信することができる。
図7Aおよび
図7Bを参照するなどして以下でさらに詳述するとおり、サーバ501は、接続エージェント502がクリーンであるか、または汚染されていないことを確認することができ、その後、接続エージェント502の登録を受容することができる。登録後、ステップ604で、接続エージェント502は、接続エージェント502の公開鍵をサーバ501に送信することができる。サーバ501は、接続エージェント502の公開鍵を受信し、例えば、接続エージェント502が汚染されていなければ、公開鍵に署名することができる。サーバ501は、サーバ501と関連付けられた秘密鍵を使用して、接続エージェント502の公開鍵に署名することができる。接続エージェント502が汚染されているかどうかを判断して公開鍵に署名する例について、
図7Aおよび
図7Bを参照して以下でさらに詳述する。
【0072】
ステップ605で、接続エージェント502は、サーバ501と関連付けられた秘密鍵を使用してサーバ501によって署名された公開鍵を受信することができる。ステップ606で、接続エージェント502は、署名付き公開鍵を、例えばメモリ内に記憶することができる。
【0073】
ステップ607で、接続エージェント502は、クライアントデバイス503によって生成されたデータを受信することができる。データは、クライアントデバイス503によって生成されたランダムデータ(例えば、ノンス(nonce))を備えていてもよい。例えば、ランダムな性質を有する長い数字を自動的に作成することができる疑似乱数生成器(PRNG)など、安全な乱数生成アルゴリズムによって乱数が生成され得る。また、クライアントデバイス503は、接続エージェント502に1つまたはそれ以上の認証情報をリクエストすることができ、クライアントデバイス503は、この認証情報を、接続エージェント502が汚染されていないかどうかを判断する目的で使用することができる。例えば、クライアントデバイス503は、接続エージェント502上の仮想マシンのマシンID(複数可)および/または失効日(複数可)をリクエストすることができる。クライアントデバイス503は、接続リース中にサーバ501から提供された情報に基づき、それらのマシンID(複数可)および/または失効日(複数可)を検証することができる。サーバ501がオフラインであっても、クライアントデバイス503は、接続エージェント502が汚染または破損していないかどうかを検証でき得る。
【0074】
ステップ608で、接続エージェント502は、クライアントデバイス503から受信したデータに署名することができる。例えば、接続エージェント502は、接続エージェント502の秘密鍵をメモリから取得することができ、および/または接続エージェントの秘密鍵を使用してデータに署名することができる。データに署名した後、接続エージェント502は、署名付きデータをメモリ内に記憶することができる。いくつかの実施の形態において、接続エージェント502は、接続エージェント502の秘密鍵および公開鍵、署名付き公開鍵、ならびに/または署名付きデータをメモリ内に記憶することができる。
【0075】
図6Bにおいて、ステップ615で、接続エージェント502は、接続エージェント502内のメモリから自らの秘密鍵を消去するなどして、その秘密鍵を削除することができる。秘密鍵を削除することにより、クライアントサーバアーキテクチャを侵害する目的で使用され得る秘密鍵が、潜在的な侵入者、ウイルス、および/またはハッカーによって再現されなくなり得る。例えば、ハッカーが接続エージェント502の秘密鍵を所有していると、ハッカーは秘密鍵を使用して、仮想マシンに悪意あるソフトウェアをセットアップし、および/またはユーザの認証情報を侵害したりすることができる。
【0076】
ステップ616で、接続エージェント502は、接続エージェント502の署名付き公開鍵をクライアントデバイス503に送信することができる。先に説明したとおり、サーバ501は、接続エージェント502の公開鍵に署名した可能性があり、署名付き公開鍵は、(例えば、ステップ606で)メモリに安全に記憶された可能性がある。接続エージェント502は、署名付き公開鍵をメモリから取得し、署名付き公開鍵をクライアントデバイス503に送信することができる。
【0077】
ステップ617で、接続エージェント502は、署名付きデータをクライアントデバイス503に送信することができる。先に説明したとおり、接続エージェント502は、(例えば、ステップ608で)クライアントデバイス503から受信したデータに署名し、署名付きデータをメモリに安全に記憶することができる。接続エージェント502は、署名付きデータをメモリから取得し、署名付きデータをクライアントデバイス503に送信することができる。
【0078】
ステップ618および619で、接続エージェント502は、接続エージェント502のメモリに記憶された公開鍵および署名付き公開鍵を削除することができる。メモリから鍵を削除することにより、接続エージェント502は、ハッカーおよび/または悪意あるソフトウェアが接続エージェント502の公開鍵または署名付き公開鍵への署名を再現することを防ぎ得る。接続エージェント502は、接続エージェント502と関連付けられた公開/秘密鍵ペアに関連する任意のセキュリティ情報を削除することにより、クラウドコンピューティングシステムの保護をさらに強化することができる。セキュリティ情報は、接続エージェント502上の仮想マシンのマシンID(複数可)および/または失効日(複数可)を備えていてもよい。セキュリティ情報の削除は、署名付き公開鍵と署名付きデータがクライアントデバイス503に送信された後に実施され得る。
【0079】
クライアントデバイス503は、サーバ501と関連付けられた公開鍵に基づいて署名付き公開鍵の署名を検証し、署名付きデータの署名を検証するなど、接続エージェント502の検証を完了することができる。接続エージェント502を検証する例について、
図8Aおよび
図8Bを参照してさらに詳述する。接続エージェント502が検証された後、クライアントデバイス503は、接続エージェント502への接続を試行することができる。ステップ620で、接続エージェント502は、クライアントデバイス503から接続リクエストを受信することができる。ステップ621で、接続エージェント502は、クライアントデバイス503に割り当てられた1つまたはそれ以上の仮想マシンを提供するために、クライアントデバイス503に接続することができる。ユーザは、クライアントデバイス503に、クライアントエージェントアプリケーションまたはソフトウェアをインストールすることができる。クライアントエージェントソフトウェアがインストールされたクライアントデバイス503は、サーバ501または接続エージェント502などの集中ホストから仮想デスクトップおよび/またはアプリケーションにアクセスでき得る。ユーザは、種々のコンピュータまたはモバイルプラットフォームから、リモートデスクトップおよび/またはアプリケーションにアクセスすることができる。
【0080】
図7Aおよび
図7Bは、1つまたはそれ以上のサーバの動作例を示す例示的なフローチャートを示す。
図7Aおよび
図7Bは、
図6Aおよび
図6B(例えば、ここで、1つまたはそれ以上の接続エージェントの動作例が記載されている)に示された方法および/またはプロセスを補完することができる。
【0081】
図7Aにおいては、ステップ701で、サーバ501が構成され得る。例えば、サーバ501が起動または開始され得る。ステップ702で、サーバ501は、サーバ501と関連付けられた秘密鍵および公開鍵のペアを生成することができる。ステップ703で、サーバ501は、公開鍵および/または秘密鍵をデータベース504に記憶することができ、このデータベースは、サーバ501の外部または内部のメモリであってもよい。
【0082】
1つまたはそれ以上のサーバは、データベース504を介して、公開鍵および秘密鍵のペアを共有することができる。例えば、1つまたはそれ以上のサーバは、データベース504に個別に接続され得る。データベース504は、1つまたはそれ以上のサーバに共通の公開/秘密鍵ペアを記憶することができる。代替として、1つまたはそれ以上のサーバは、個々のデータベース504を有することができる。データベース504のそれぞれは、1つまたはそれ以上のサーバのそれぞれと関連付けられた個々の公開/秘密鍵ペアを記憶することができる。公開/秘密鍵ペアのプールがあれば、検証ごとに鍵ペアがローテーションされ得る。例えば、サーバ501は、第1の公開/秘密鍵ペアを使用して、第1の接続エージェントが汚染されていないことを検証することができる。サーバ501は、第2の公開/秘密鍵ペアを使用して、第2の接続エージェントが汚染されていないことなどを検証することができる。各回の検証後、使用済みの公開/秘密鍵ペアは、セキュリティのために削除され得る。データベース504は、パスワード、ファイアウォール、証明書などを介して、侵入者、ウイルス、および/またはハッカーからの潜在的な攻撃から安全に保護され得る。
【0083】
ステップ704で、サーバ501は、接続エージェント502から、接続エージェント502を登録するリクエストを受信することができる。接続エージェント502は、
図6Aのステップ603などの、このリクエストを送信することができる。ステップ705で、サーバ501は、接続エージェント502から、接続エージェント502と関連付けられた公開鍵も受信することができる。サーバ501は、公開鍵をデータベース504に記憶することができる。
【0084】
ステップ706で、サーバ501は、接続エージェント502が汚染されていないかどうかを判断することができる。例えば、サーバ501は、接続エージェント502およびその動作環境(例えば、ハイパーバイザ、ストレージリソースなど)において仮想マシンをプロビジョニング、作成、および/または管理するように構成され得る。サーバ501は、接続エージェント502が汚染されていない状態であることを検証することができる。サーバ501は、接続エージェント502と関連付けられたディスクのリセットまたは再イメージ化を誘発することができる。最後のディスクの再イメージ化後に、接続エージェント502に接続しているユーザがいない場合、接続エージェント502は汚染されていない。最後のディスクの再イメージ化後に、ユーザが1人でも接続している場合、ステップ706が実施され得る。サーバ501は、サーバ501が接続エージェント502の再イメージ化ごとに公開鍵に1回署名できるというポリシーを施行することができる。サーバ501は、サーバ501が新たな署名を発行する前、接続エージェント502が再イメージ化されるようにすることができる。ステップ706は、(例えば、ステップ705で)サーバ501が接続エージェント502と関連付けられた公開鍵を受信する前または後に実施され得る。接続エージェント502が汚染されている(例えば、損傷している、破損している、スパイウェアの問題を抱えているなど)場合、サーバ501はステップ707へと進み得る。
【0085】
ステップ707で、サーバ501は、接続エージェント502を再イメージ化することができる。例えば、サーバ501は、接続エージェント502と関連付けられたデスクトップ、アプリケーション、および/または仮想マシンを削除および/または再インストールすることができる。サーバ501は、接続エージェント502において仮想マシンをプロビジョニング、作成、および/または管理する目的で、サーバ501においてリソースマネージャ(例えば、
図4に示す管理サーバ410のリソースマネージャ)を使用することができる。サーバ501は、接続エージェント502と関連付けられたディスクのブロックレベルリセットを実施することができる。サーバ501はまた、接続エージェント502が汚染されていることをクライアントデバイス503に通知することができる。サーバ501は、サーバ501に検証および/または登録された異なる接続エージェントまたは仮想マシンにクライアントデバイス503を再割り当てすることができる。代替として、サーバ501は、新たにイメージ化された接続エージェント502にクライアントデバイス503を割り当て得る。サーバ501は、接続エージェントを登録する別のリクエストを受信したかどうかを判断するために、例えばステップ704に戻り得る。
【0086】
ステップ706を参照して、接続エージェント502が汚染されていない場合(例えば、ステップ706:はい)、サーバ501は、
図7Bに示すステップ715へと進み得る。ステップ715で、サーバ501は、接続エージェント502と関連付けられた公開鍵に署名することができる。例えば、サーバ501は、データベース504などから、サーバ501の秘密鍵、および/または接続エージェント502と関連付けられた公開鍵を取得することができる。サーバ501は、サーバの秘密鍵を使用して、接続エージェントの公開鍵に署名することができる。
【0087】
サーバ501はまた、接続エージェント502と関連付けられた1つまたはそれ以上の仮想マシンのマシンID(複数可)および/または失効日(複数可)など、セキュリティメカニズムを署名付き公開鍵にさらに追加することができる。例えば、署名されるデータとしては、マシンID(複数可)および/または失効日(複数可)が挙げられ得る。悪意あるユーザが、例えば、ログオン前のネットワークトラフィックの傍受、または署名がメモリから完全に削除されないエラーにより、署名付きデータの署名にアクセスした場合でも、マシンID(複数可)および/または失効日(複数可)により、潜在的な損傷が最小限に抑えられ得る。また、署名は、マシンID(複数可)および/または失効日(複数可)と同じく、数時間後または数日後に自動的に失効して無価値となり得る。マシンID(複数可)および/または失効日(複数可)は、接続エージェント502のうちの1つにそれぞれ結び付けられ得る。マシンID(複数可)および/または失効日(複数可)は、クライアントデバイス503へのリースを介してクライアントデバイス503に送信され得る。リースの例について、以下でさらに詳述する。ステップ716で、サーバ501は、署名付き公開鍵を接続エージェント502に送信することができる。
【0088】
サーバ501は、クライアントデバイス503にとって利用可能な接続エージェントに関連付けられた情報に関するリースを保持することができる。例えば、クライアントデバイス503は、接続エージェントのリストを受信することができ、リストは、所定のリース期間(例えば、2週間)にわたって有効であってもよい。リース期間中にクライアントデバイスが接続し、サーバ501が接続エージェントを再イメージ化することができるため、リストには、汚染された接続エージェントと汚染されていない接続エージェントの両方が混在することができる。リースは、サーバ501に属する1つまたはそれ以上の公開鍵も格納することができる。サーバまたはデータベースの停止中、クライアントデバイス503は、サーバ501によって以前に提供された、接続エージェントの未失効リストを使用することができる。リストは、サーバ501が復旧するまで、クライアントデバイス503によって使用され得る。以下でさらに詳述する署名の有効性確認により、クライアントデバイス503は、リスト内の接続エージェントが汚染されているかいないかを判断することができる。
【0089】
ステップ717で、サーバ501は、利用可能なアプリケーション、デスクトップ、仮想マシン、および/または接続エージェントを示す情報を求めるリクエストをクライアントデバイス503から受信することができる。サーバ501は、利用可能な接続エージェントの検証を定期的に行い得、接続エージェントのリストを記憶することができる。ステップ718で、サーバ501は、利用可能なアプリケーション、デスクトップ、仮想マシン、および/または接続エージェントを示す情報をクライアントデバイス503に送信することができる。例えば、サーバ501は、この可用性情報に関するリースを発行することができ、リクエストに応じてクライアントデバイス503に情報を送信することができるか、周期的に情報を送信することができる。ステップ719で、サーバ501は、サーバ501に属する1つまたはそれ以上の公開鍵をクライアントデバイス503に送信することができる。サーバの公開鍵は、接続エージェント502と関連付けられ、かつサーバ501によって署名された公開鍵の署名を検証する目的で使用され得る。署名付き公開鍵は、接続エージェント502によってクライアントデバイス503に送信され得る。署名が検証されると、クライアントデバイス503は、接続エージェント502が汚染されておらず、および/または接続エージェントの公開鍵がサーバ501によって適切に署名されているものと判断することができる。接続エージェント502が汚染されていないことを検証するクライアントデバイス503の例について、
図8Aおよび
図8Bを参照して以下でさらに詳述する。
【0090】
ステップ717~719のうちの1つまたはそれ以上の間に、クライアントデバイス503は、接続エージェント502の可用性についてサーバ501に問い合わせ得る。クライアントデバイス503は、(例えば、ステップ719で)サーバ501と関連付けられた公開鍵とともに(または、それとは別に)、接続エージェントの可用性を示すデータを(例えば、ステップ718で)サーバ501から受信することができる。クライアントデバイス503がサーバの公開鍵を使用する追加例について、
図8Aおよび
図8Bを参照して説明する。ステップ717~719のうちの1つ以上が、(例えば、ステップ704で)サーバ501が接続エージェント502から登録リクエストを受信する前に実施され得る。追加または代替として、ステップ717~719のうちの1つ以上は、ステップ704~716から独立して実施され得る。
【0091】
図8Aおよび
図8Bは、1つまたはそれ以上のクライアントデバイスの動作例を示す例示的なフローチャートを示す。
図8Aおよび
図8Bは、
図6Aおよび
図6B(例えば、ここで、1つまたはそれ以上の接続エージェントの動作例が記載されている)ならびに
図7Aおよび
図7B(例えば、ここで、1つまたはそれ以上のサーバの動作例が記載されている)に示す方法および/またはプロセスを補完することができる。ステップ801では、クライアントデバイス503が構成され得る。クライアントデバイス503が起動または開始され得る。ステップ802で、クライアントデバイス503は、利用可能な接続エージェントの情報を求めるリクエストをサーバ501に送信することができる。先述のとおり、サーバ501は、
図7Bに示すステップ717でリクエストを受信することができる。サーバ501は、
図7Bに示すステップ718などで、リクエストされた情報をクライアントデバイス503に送信することができる。
【0092】
ステップ803で、クライアントデバイス503は、利用可能な接続エージェントを求める、リクエストされた情報を受信することができる。先述のとおり、サーバ501は、
図7Bのステップ717~719などの、利用可能な接続エージェントの情報に関するリースをクライアントデバイス503に発行することができる。この情報は、アプリケーション、デスクトップ、仮想マシン、および/または接続エージェントの可用性を示することができる。ステップ804で、クライアントデバイス503は、サーバ501と関連付けられた公開鍵をサーバ501から受信することができる。先述のとおり、この公開鍵は、
図7Bに示すステップ719などで、サーバ501によって送信され得る。サーバ501が複数の公開/秘密鍵ペアを使用する場合、サーバ501は、複数の公開鍵のそれぞれをクライアントデバイス503に送信することができる。サーバ501は、サーバ501の秘密鍵(複数可)をクライアントデバイス503に送信しない可能性がある。クライアントデバイス503は、接続エージェント502の検証にダウンタイムが発生しないようにするために、サーバ501から受信した複数の公開鍵を使用することができる。
【0093】
クライアントデバイス503は、接続エージェント502に送信するデータを生成することができる。先述のとおり、データは、クライアントデバイス503によって生成されたランダムデータ(例えば、ノンス)を備えていてもよい。データは、乱数または疑似乱数を備えていてもよい。ステップ805で、クライアントデバイス503は、クライアントデバイス503によって生成されたデータを接続エージェント502に送信することができる。接続エージェント502は、
図6Aのステップ607などでデータを受信することができる。先述のとおり、データは、
図6Aのステップ608などで接続エージェント502によって署名され得る。
【0094】
ステップ806で、クライアントデバイス503は、接続エージェント502によって署名されたデータを接続エージェント502から受信することができる。ステップ807で、クライアントデバイス503は、接続エージェント502と関連付けられ、かつサーバ501によって署名された公開鍵を接続エージェント502から受信することができる。先述のとおり、公開鍵は、
図7Bのステップ715でサーバ501によって署名されたものであってもよい。署名付き公開鍵は、
図6Aのステップ605および/または606などで、接続エージェント502によって受信および記憶され得る。ステップ801~807のうちの1つ以上を通じて、クライアントデバイス503は、(1)(例えば、ステップ804で)サーバ501と関連付けられた公開鍵、(2)(例えば、ステップ806で)接続エージェント502によって署名されたデータ、および/または(3)(例えば、ステップ807で)接続エージェント502と関連付けられ、かつサーバ501によって署名された公開鍵を受信することができる。(3)における署名付き情報は、接続エージェント502と関連付けられた仮想マシンのマシンID(複数可)および/または失効日(複数可)も示することができる。クライアントデバイス503は、マシンID(複数可)および/または失効日(複数可)を使用して、接続エージェント502がサーバ501によって最近検証されたことを検証することができる。クライアントデバイス503は、受信したデータのうちの1つ以上をメモリに記憶することができる。受信したデータは、
図8Bを参照して以下でさらに詳述するとおり、接続エージェント502が汚染されていないことを検証する目的で使用され得る。
【0095】
図8Bにおいて、ステップ811で、クライアントデバイス503は、(例えば、ステップ715で)接続エージェント502と関連付けられ、かつサーバ501によって署名された公開鍵のデジタル署名を、サーバ501と関連付けられた公開鍵に基づいて検証することができる。公開鍵暗号システムにおいては、デジタル署名が有効であることを検証するなどの目的で、その署名が、その署名を生成した秘密鍵に対応する公開鍵と照合され得る。一致すれば、署名は、秘密鍵の所有者によって作られたものであってもよい。
【0096】
クライアントデバイス503は、接続エージェント502と関連付けられ、かつサーバ501によって署名された公開鍵の署名を、サーバ501と関連付けられた公開鍵と相関させ得る。署名とサーバの公開鍵とが対応する場合、クライアントデバイス503は、接続エージェント502がサーバ501によって検証されたと判断することができる。先述のとおり、(例えば、上記のステップ706で)接続エージェント502が汚染されていないとサーバ501が判断した場合、サーバ501は、(例えば、上記のステップ715で)接続エージェント502と関連付けられた公開鍵に署名することができる。サーバ501は、(例えば、上記のステップ716で)署名付き公開鍵を接続エージェント502に送信することができる。接続エージェント502は、(例えば、上記のステップ606で)署名付き公開鍵を記憶することができる。また、接続エージェント502は、(例えば、上記のステップ616で)署名付き公開鍵をクライアントデバイス503に送信することができる。クライアントデバイス503は、(例えば、上記のステップ807で)署名付き公開鍵を接続エージェント502から受信することができる。
【0097】
図8Bに戻り、ステップ812で、署名付き公開鍵の署名が検証されなければ、クライアントデバイス503は、署名がサーバ501によってなされたものではないと判断することができる。クライアントデバイス503は、別の接続エージェントの識別を試行することができる。異なる接続エージェントを検索するために、クライアントデバイス503は、(例えば、ステップ803で)サーバ501から受信した利用可能な接続エージェントのリストを再利用することができる。代替として、クライアントデバイス503は、更新されたリストをサーバ501にリクエストすることができる。クライアントデバイス503は、ステップ805に戻り、例えば、ステップ805~812のうちの1つ以上を繰り返すことにより、別の接続エージェントの確認を試行することができる。
【0098】
図8Bに戻り、ステップ812で、署名付き公開鍵の署名が検証される場合(ステップ812:はい)、クライアントデバイス503はステップ813へと進み得る。ステップ813で、クライアントデバイス503は、接続エージェント502と関連付けられた検証済みの公開鍵に基づき、接続エージェント502によって署名されたデータの署名を検証することができる。ステップ811と同様に、クライアントデバイス503は、接続エージェント502によって署名されたデータの署名を、接続エージェント502と関連付けられた公開鍵と照合することができる。
【0099】
ステップ814で、接続エージェント502によって署名されたデータの署名が検証されなければ、クライアントデバイス503は、接続エージェント502が汚染されていると判断することができ(あるいは、別の理由で使用されるべきでないと判断することができ)、および/または別の接続エージェントの識別を試行することができる。例えば、署名は、接続エージェント502によってなされたものではない可能性がある。また、攻撃者が、接続エージェント502と関連付けられた以前の接続から署名を再生しようとしている可能性もある。クライアントデバイス503が別の接続エージェントを識別した後、クライアントデバイス503は、ステップ805に戻り、例えば、ステップ805~814のうちの1つ以上を繰り返すことにより、別の接続エージェントの確認を試行することができる。ステップ814で、接続エージェント502によって署名されたデータの署名が検証される場合、クライアントデバイスはステップ815へと進み得る。
【0100】
いくつかの実施の形態において、サーバ501は、
図7Bのステップ715で、接続エージェント502および/または仮想的な含まれたマシンのマシンID(複数可)および/または失効日(複数可)を署名付き公開鍵に含み得る。サーバ501は、(例えば、ステップ716で)マシンID(複数可)および/または失効日(複数可)を備える署名付き公開鍵を接続エージェント502に送信することができる。接続エージェント502は、署名付き公開鍵を(例えば、ステップ807での)クライアントデバイス503に(例えば、ステップ616で)送信することができる。クライアントデバイス503は、(例えば、ステップ718で)例えばリースを介して、サーバ501からマシンID(複数可)および/または失効日(複数可)を別途受信することができる。クライアントデバイス503は、サーバ501から受信した情報に基づき、マシンID(複数可)および/または失効日(複数可)を検証することができる。例えば、先述のとおり、署名付き情報(例えば、クライアントデバイス503に送信された署名付き公開鍵)は、接続エージェント502と関連付けられた仮想マシンのマシンID(複数可)および/または失効日(複数可)も示することができる。クライアントデバイス503は、マシンID(複数可)および/または失効日(複数可)を使用して、接続エージェント502がサーバ501によって最近検証されたことを検証することができる。
【0101】
クライアントデバイス503が接続エージェント502を検証した後、クライアントデバイス503は、例えば、仮想デスクトップまたは仮想アプリケーションにアクセスするために、接続エージェント502への接続を試行することができる。ステップ815で、クライアントデバイス503は、クライアントエージェントアプリケーションを介して接続エージェント502に接続リクエストを送信することができる。ステップ816で、クライアントデバイス503は、接続エージェント502と接続することができる。
【0102】
いくつかの実施の形態においては、サーバ501、接続エージェント502、および/またはクライアントデバイス503が、例えば公開鍵の代わりに、証明書を使用することができる。例えば、サーバ501および接続エージェント502は、それぞれの鍵ペアを生成することができる。サーバ501は、自己署名された証明書、またはサーバ501の公開鍵に基づいて別の認証局(CA)によって署名された証明書を生成することができる。接続エージェント502は、接続エージェント502と関連付けられた公開鍵と関連付けられた証明書を生成することができ、証明書署名リクエストをサーバ501に送信することができる。サーバ501は、接続エージェント502が汚染されていないと判断した後などに、接続エージェント502と関連付けられた証明書に署名することができる。サーバ501は、署名付き証明書を接続エージェント502に送信することができる。接続エージェント502は、署名付き証明書をクライアントデバイス503に送信することができる。クライアントデバイス503は、サーバ501によって署名された証明書を接続エージェント502から受信することができる。いくつかの実施の形態において、接続エージェント502は、接続エージェント502に属する証明書と、サーバ501に属する証明書と、場合によっては1つまたはそれ以上の追加CAと、を含む証明書チェーン全体を送信することができる。
【0103】
サーバ501は、サーバ501と関連付けられた証明書を生成することができ、証明書を、リースなどを介してクライアントデバイス503に送信することができる。サーバ501は、クライアントデバイス503に証明書を周期的に送信することができ、および/またはクライアントデバイス503からのリクエストに基づいて証明書を送信することができる。クライアントデバイス503は、サーバ501と関連付けられた証明書をサーバ501から受信することができる。いくつかの実施の形態において、サーバ501は、サーバ501に属する証明書に署名するのに使用された証明書チェーン内の別のCAの証明書を周期的に送信することができる。
【0104】
クライアントデバイス503は、ランダムデータを生成することができ、データを接続エージェント502に送信することができる。接続エージェント502は、接続エージェント502の秘密鍵を使用してデータに署名することができ、署名付きデータをクライアントデバイス503に返送することができる。クライアントデバイス503は、接続エージェント502によって署名されたデータを受信することができる。
【0105】
クライアントデバイス503は、接続エージェント502に属する証明書と関連付けられた証明書チェーンを検証することができる。この証明書チェーンは、サーバ501と関連付けられた証明書と、場合によってはCAに属する証明書と、を含み得る。証明書チェーンが検証される場合、クライアントデバイスは、接続エージェント502と関連付けられた検証済みの証明書に基づくなどして、接続エージェント502によって署名されたデータの署名も検証することができる。署名および証明書チェーンが検証される場合、クライアントデバイス503は、接続エージェント502と接続することができる。
【0106】
主題は、構造的な特徴および/または方法論的な行為に特有の言語で記載したものの、添付の請求項において定義される主題は、上記の特定の特徴または行為に必ずしも制限されるものではないことを理解すべきである。むしろ、上記の特定の特徴および行為は、以下の請求項の実装例として記載されている。
【0107】
関連出願の相互参照
本出願は、2019年1月2日に出願された米国非仮特許出願第16/238,202号に対する優先権を主張するものであり、参照により、同明細書の内容全体が本明細書に明示的に組み込まれる。
【国際調査報告】