(57)【特許請求の範囲】
【請求項１】
アプリケーション・ストリーミング・システム内にマルウェアスキャンニングを組み込むための、コンピュータによって実施される方法であって、
ストリーミングされる、アプリケーションの複数のブロックを、アプリケーション・ストリーミング・サーバから受信するステップであって、各前記ブロックが、前記アプリケーションの単位としてのコードを含み、かつ、前記アプリケーションのうち該ブロックが表す部分の指標を含むメタデータを有しているステップと、
各前記複数のブロックについて、前記アプリケーションにマルウェアが無いと判明したことを示す指標が該ブロックに含まれるかどうかを判定し、前記指標が該ブロックに含まれると判定されると前記コードの実行を許可するステップと、
を含む方法。
【請求項２】
前記判定するステップは、
前記指標が前記ブロックに含まれないと判定されると、
前記コードの実行を停止するステップと、
前記コードをスキャンニングしてマルウェアが含まれていないか判定するステップと、
前記コードにはマルウェアは含まれないと、前記スキャンニングが判断したことに応答して、前記コードの実行を許可するステップと、
を更に含む請求項１に記載の方法。
【請求項３】
前記アプリケーションの全てのブロックを受信するステップを更に含み、前記アプリケーションの全てのブロックが受信されるまで前記コードのスキャンは発生しない請求項２に記載の方法。
【請求項４】
前記判定するステップは、
前記指標が前記ブロックに含まれないと判定されると、
前記アプリケーションはマルウェアが無いことの確認がなされていない旨を示すアラートをユーザに表示するステップと、
マルウェアに関して前記ブロックのスキャンを実行しないで前記コードを実行するかどうかを指定するユーザ入力を受信するステップと、
前記ユーザ入力に少なくとも部分的に応答して、マルウェアに関して前記ブロックのスキャンを実行しないで前記コードを実行するステップと、
を更に含む請求項１に記載の方法。
【請求項５】
セキュリティホワイトリストに前記サーバが掲載されているかどうかを判定することにより前記サーバを認証するステップと、
前記判定に少なくとも部分的に応答して前記コードの実行を許可するステップと、
を更に含む、請求項１に記載の方法。
【請求項６】
受信された前記複数のブロックの少なくとも１つは、前記サーバによってシグニチャを使用してデジタル的に符号化されており、前記ブロックを前記サーバから受信するステップが前記シグニチャを検証するステップを更に含む請求項１に記載の方法。
【請求項７】
受信された前記複数のブロックの少なくとも１つが前記サーバによって暗号化されており、前記ブロックを前記サーバから受信するステップが前記ブロックを解読するステップを更に含む請求項１に記載の方法。
【請求項８】
アプリケーション・ストリーミング・システム内にマルウェアスキャンニングを組み込むためのコンピュータプログラムであって、
ストリーミングされる、アプリケーションの複数のブロックを、アプリケーション・ストリーミング・サーバから受信するステップをコンピュータに実行させるクライアント・アプリケーション・ストリーミング・モジュールであって、各前記ブロックが、前記アプリケーションの単位としてのコードを含み、かつ、前記アプリケーションのうち該ブロックが表す部分の指標を含むメタデータを有しているモジュールと、
各前記複数のブロックについて、前記アプリケーションにマルウェアが無いと判明したことを示す指標を該ブロックが含むかどうかを判定し、前記指標が該ブロックに含まれると判定されると前記コードの実行を許可するステップをコンピュータに実行させるクライアントスキャン検証モジュールと、
を含むコンピュータプログラム。
【請求項９】
クライアント・スキャンニング・モジュールを更に含み、
前記クライアント・スキャンニング・モジュールは、前記指標が前記ブロックに含まれないと判定されると、
前記コードの実行を停止するステップと、
前記コードにマルウェアが含まれるかどうかを判定するために前記コードをスキャンニングするステップと、
前記スキャンニングが前記コードにマルウェアが含まれないと判定したことに応答して、前記コードの実行を許可するステップと、
をコンピュータに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１０】
クライアント・スキャンニング・モジュールを更に含み、
前記クライアント・スキャンニング・モジュールは、前記指標が前記ブロックに含まれないと判定されると、
前記アプリケーションはマルウェアが無いことの確認がなされていない旨を示すアラートをユーザに表示するステップと、
マルウェアに関して前記ブロックのスキャンを実行しないで前記コードを実行するかどうかを指定するユーザ入力を受信するステップと、
前記ユーザ入力に少なくとも部分的に応答して、マルウェアに関して前記ブロックのスキャンを実行しないで前記コードを実行するステップと、
をコンピュータに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１１】
セキュリティホワイトリストに前記サーバが掲載されているかどうかを判定することにより前記サーバを認証するステップをコンピュータに実行させるクライアント認証モジュールを更に含み、
前記クライアントスキャン検証モジュールが、前記判定に少なくとも部分的に応答して、前記コードの実行を許可するステップをコンピュータに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１２】
受信された前記複数のブロックの少なくとも１つは、前記サーバによってシグニチャを使用してデジタル的に符号化されており、前記ブロックを前記サーバから受信するときに前記シグニチャを検証するステップをコンピュータに実行させるクライアント認証モジュールを更に含む請求項８に記載のコンピュータプログラム。
【請求項１３】
受信された前記複数のブロックの少なくとも１つが前記サーバによって暗号化されており、前記ブロックを前記サーバから受信するときに前記ブロックを解読するステップをコンピュータに実行させるクライアント認証モジュールを更に含む請求項８に記載のコンピュータプログラム。
【請求項１４】
アプリケーション・ストリーミング・システム内にマルウェアスキャンニングを組み込むためのコンピュータであって、
実行可能なコンピュータ・プログラム・モジュールを格納する、コンピュータで読み出し可能な記憶媒体を有し、
前記コンピュータ・プログラム・モジュールが、
前から存在するアプリケーションを一組のブロックにセグメント化するアプリケーション・パッケージング・モジュールと、
セグメント化された複数の前記ブロックのリクエストをクライアントから受信するブロック・サーバ・モジュールであって、各前記ブロックが前記アプリケーションの単位としてのコードを含むブロック・サーバ・モジュールと、
前記アプリケーションにマルウェアが無いと判明しているかどうかを判定するスキャン保証モジュールと、
を備え、
前記ブロック・サーバ・モジュールが、リクエストされた前記複数のブロックを識別し、
前記アプリケーションにマルウェアが無いと判明していることを確認したのに応答して、前記スキャン保証モジュールが、識別された前記複数のブロックの各々に対するメタデータとして、前記アプリケーションがスキャン済みであることを示す指標および前記アプリケーションのうち該ブロックが表す部分の指標を含み、
前記ブロック・サーバ・モジュールが、これらの指標を含む前記ブロックを前記クライアントに提供する、コンピュータ。
【請求項１５】
アプリケーションにマルウェアがないかどうかを判定するためのアプリケーション・スキャンニング・モジュールを更に含む請求項１４に記載のコンピュータ。
【請求項１６】
前記ブロック・サーバ・モジュールによって前記クライアントに提供される前記複数のブロックの少なくとも１つを暗号化するサーバ認証モジュールを更に含む請求項１４に記載のコンピュータ。
【請求項１７】
前記ブロック・サーバ・モジュールによって前記クライアントに提供される前記複数のブロックの少なくとも１つを、デジタルシグニチャを使用してデジタル的に符号化するサーバ認証モジュールを更に含む請求項１４に記載のコンピュータ。
【請求項１８】
前記ブロック・サーバ・モジュールが、複数のアプリケーションを格納するアプリケーションリポジトリから前記複数のブロックを取得し、各アプリケーションは、アプリケーションストリーミングを介して配布するために一組のブロックとして前記アプリケーションリポジトリにパッケージ化されている、請求項１４に記載のコンピュータ。
【請求項１９】
前記アプリケーションリポジトリに格納される各アプリケーションは、マルウェアがないことを確認してから前記アプリケーションリポジトリに格納される、請求項１８に記載のコンピュータ。
【請求項２０】
前記アプリケーションのうち該ブロックが表す部分の前記指標が、ブロック番号、および前記アプリケーションのうち該ブロックが表すバイト範囲の指標、の少なくとも一方を含んでいる、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概ねコンピュータセキュリティに関し、詳細には、ストリーミングされるアプリケーションのセキュリティチェックを効率的に実装することに関する。
【背景技術】
【０００２】
アプリケーションストリーミングは、アプリケーションを実行するのに便利な方法として登場しており、従来のアプリケーション実行方法によって提供されることのない利点を持つ。具体的には、アプリケーションを実行するクライアントシステム上にローカルにインストール又は格納されていないアプリケーションの実行を可能にし、必要に応じて、アプリケーションコード及びデータをクライアントに一度に１ブロックずつ提供する。アプリケーションストリーミングは複数の利点を提供する。例えば、この方法を使用しない場合にアプリケーション全体を格納するのにクライアントマシン上で必要とされるディスクスペースを節約することや、ライセンス制御の集中化及びアプリケーションのパッチ及び更新の簡略化を可能にすることや、全てのコードをまとめて最初にダウンロードしなくてもアプリケーションの実行開始を可能にすること等が挙げられる。
【０００３】
しかしながら、アプリケーションストリーミングは、現在、既存のシステムとすんなりと統合されるとは限らない。特に、マルウェア・スキャンニング・ソフトウェア等のセキュリティシステムを使用した場合、現行では、アプリケーションストリーミングの利点を打ち消してしまう恐れがある。具体的には、従来のマルウェアスキャンニング技術では、アプリケーションの残りの部分から個別に採取されるアプリケーションの単一ブロックに基づいてマルウェアの存在を検出できない場合がある。このため、従来のマルウェア・スキャンニング・ソフトウェアの場合は、アプリケーション全体がダウンロードされるまで、ストリーミングされるアプリケーションの実行を停止し、アプリケーションをまとめてスキャンし、これでやっとアプリケーションの実行を許可する。これのため、クライアントマシン上に一部分しか実存しないアプリケーションを実行できるというアプリケーションストリーミングの有利な能力が排除される。
【発明の概要】
【課題を解決するための手段】
【０００４】
前述した問題点に対しては、アプリケーションストリーミングの有益なパフォーマンス特性をそのまま維持しながら、ストリーミング対象の全ての部分にマルウェアがないことを保証する信頼性に基づくメカニズムを組み込む方法、コンピュータ、及びコンピュータプログラム製品によって対処する。
【０００５】
本方法の一実施形態では、アプリケーションのストリーミング対象ブロックを受信し、ブロックはアプリケーションの単位としてのコードを含む。本方法は、アプリケーションにマルウェアが無いと判明したことを示す指標がブロックに含まれるかどうかを判定し、アプリケーションにマルウェアが無いと判明したことを示す指標が、ブロックに含まれていることに少なくとも部分的に応答してコードの実行を許可する。
【０００６】
アプリケーション・ストリーミング・システム内にマルウェアスキャンニングを組み込むよう適合されるコンピュータは、実行可能なコンピュータ・プログラム・モジュールを格納する、コンピュータで読み出し可能な記憶媒体を有する。コンピュータ・プログラム・モジュールは、クライアントからのブロックのリクエストを受信するブロック・サーバ・モジュールを備え、ブロックはアプリケーションの単位としてのコードを含む。コンピュータ・プログラム・モジュールは、アプリケーションにマルウェアが無いと判明しているかどうかを判定するスキャン保証モジュールを更に備える。ブロック・サーバ・モジュールは、要求されたブロックを取得する。アプリケーションにマルウェアが無いと判明していることを確認したのに応答して、スキャン保証モジュールは、アプリケーションがスキャン済みであることを示す指標を、取得されたブロックに挿入する。ブロック・サーバ・モジュールは、挿入された指標を含むブロックをクライアントに提供する。
【０００７】
コンピュータプログラム製品の実施形態は、アプリケーション・ストリーミング・システム内にマルウェアスキャンニングを組み込むための実行可能なコンピュータ・プログラム・モジュールを格納する、コンピュータで読み出し可能な記憶媒体を有し、このコンピュータ・プログラム・モジュールは、アプリケーションのストリーミング対象ブロックをサーバから受信するクライアント・アプリケーション・ストリーミング・モジュールを備え、ブロックはアプリケーションの単位としてのコードを含む。コンピュータ・プログラム・モジュールは、アプリケーションにマルウェアが無いと判明したことを示す指標をブロックが含むかどうかを判定し、アプリケーションにマルウェアが無いと判明したことを示す指標をブロックが含んでいることに少なくとも部分的に応答して、コードの実行を許可するクライアントスキャン検証モジュールを更に備える。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係るコンピューティング環境の上位レベルのブロック図である。
【図２】一実施形態に係るクライアント又はサーバとして使用する代表的なコンピュータを示す上位レベルのブロック図である。
【図３】一実施形態に係るサーバ内のモジュールの詳細図を示す上位レベルのブロック図である。
【図４】一実施形態に係るクライアント内のモジュールの詳細を示す上位レベルのブロック図である。
【図５】一実施形態に係る、サーバ・セキュリティ・モジュールと連携するサーバ・アプリケーション・モジュールによって実行されるステップを示すフローチャートである。
【図６】一実施形態に係る、クライアント・セキュリティ・モジュールと連携するクライアント・アプリケーション・モジュールによって実行されるステップを示すフローチャートである。
【０００９】
図は、例示のみを目的として本発明の実施形態を示すものである。当業者ならば、本明細書に説明する発明の原理から逸脱しない限り本明細書に示す構造及び方法に関する代替実施形態を採用できることが、以下の説明から容易に認識できよう。
【発明を実施するための形態】
【００１０】
図１は一実施形態に係るコンピューティング環境１００の上位レベルのブロック図である。図１はネットワーク１３０によって接続されたサーバ１１０及びクライアント１２０を示す。説明を簡単且つ明確にするために、図１には１つのクライアント１２０と１つのサーバ１１０しか示していない。コンピューティング環境１００の実施形態では、数千又は数百万のクライアント１２０及びサーバ１１０がネットワーク１３０に接続され得る。
【００１１】
クライアント１２０では、従来のパラダイムに従って又はアプリケーション・ストリーミング・システムを使用して様々なソフトウェアアプリケーションを実行することができる。尚、従来のパラダイムでは、アプリケーションは実行される前にローカルにインストールされ、アプリケーション・ストリーミング・システムでは、アプリケーションはサーバ１１０にリモートに格納され、個々のピース（「ブロック」）ごとにダウンロードされ、クライアント１２０上でローカルに実行される。
【００１２】
アプリケーションストリーミングをサポートするために、サーバ１１０はアプリケーションコードとデータ（以降、まとめて「アプリケーション」と称する）を格納し、それらにアクセスできるようにする。サーバ１１０は、要求元のクライアントに、ストリーミングされるアプリケーションを提供するためのサーバ・アプリケーション・ストリーム・モジュール１１１と、サーバ・アプリケーション・ストリーミング・モジュール１１１によって提供されるアプリケーションストリーミングにセキュリティを組み込むためのサーバ・セキュリティ・モジュール１１２と、を含む。次にクライアント１２０は、クライアント・アプリケーション・ストリーミング・モジュール１２１を含む。このモジュールは、アプリケーションストリーミングを介して所望のアプリケーションのブロックを要求し、そのブロックを受信し、ブロックからコードを実行することでアプリケーションを実行する。クライアント１２０は更に、クライアント・セキュリティ・モジュール１２２を含む。このモジュールは、クライアント・アプリケーション・ストリーミング・モジュール１２１によって提供されるアプリケーションストリーミングにセキュリティ機能を組み込む。このようなクライアント及びサーバのアプリケーション・ストリーミング・モジュール１１１及び１２１（一緒にして「アプリケーション・ストリーミング・モジュール」と称する）は、互いに通信することにより、現在必要とされているアプリケーション機能を実行するのに必要なアプリケーションブロックをクライアント１２０に提供する。更に、クライアント及びサーバのセキュリティモジュール１１２及び１２２は、対応するそれぞれのアプリケーション・ストリーミング・モジュール１１１及び１２１と対話することにより、アプリケーションの実行前にアプリケーションの全体をダウンロードすることなくアプリケーションストリーミングにセキュリティを提供することができる。これにより、最低限の遅延でアプリケーションを実行できる。
【００１３】
サーバ１１０は、ネットワーク１３０を介してクライアント１２０と通信する。一実施形態では、ネットワーク１３０はインターネットである。ネットワーク１３０はまた、必ずしもインターネットの一部とは限らない専用通信リンク又はプライベート通信リンクを利用することもできる。一実施形態では、ネットワーク１３０は、Ｅｔｈｅｒｎｅｔ、８０２．１１等の標準通信技術及び／又はプロトコルを使用する。同様に、ネットワーク１３０で使用されるネットワーキングプロトコルには、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）等が含まれ得る。ネットワーク１３０で交換されるデータは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）等の技術及び／又はフォーマットを使用して、並びにアプリケーションブロックの転送用に特別に設計されたカスタム・データ・ストリーミング・フォーマットを使用して表現される。更に、全てのリンク又は一部のリンクは、セキュア・ソケット・レイヤ（ＳＳＬ）、セキュアＨＴＴＰ、及び／又は仮想プライベートネットワーク（ＶＰＮ）等の従来の暗号化技術を使用して暗号化することができる。別の実施形態では、上記の技術の代わりに、又は上記の技術に追加して、カスタム及び／又は専用のデータ通信技術を使用することができる。
【００１４】
図２は、一実施形態に係るクライアント１２０又はサーバ１１０として使用する代表的なコンピュータ２００を示す上位レベルのブロック図である。バス２０４に接続されたプロセッサ２０２が示されている。メモリ２０６、ストレージデバイス２０８、キーボード２１０、グラフィックスアダプタ２１２、ポインティングデバイス２１４、及びネットワークアダプタ２１６もバス２０４に接続されている。ディスプレイ２１８は、グラフィックスアダプタ２１２に接続されている。
【００１５】
プロセッサ２０２は、ＩＮＴＥＬ  ｘ８６対応ＣＰＵ等の任意の汎用プロセッサとすることができる。メモリ２０６は、例えば、ファームウェア、読み出し専用メモリ（ＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、及び／又はＲＡＭとすることができる。メモリ２０６は、プロセッサ２０２で使用される命令及びデータを保持する。ポインティングデバイス２１４は、マウス、トラックボール、又は他のタイプのポインティングデバイスとすることができる。ポインティングデバイス２１４は、コンピュータ２００にデータを入力するためにキーボード２１０と一緒に使用される。グラフィックスアダプタ２１２は、ディスプレイ２１８にイメージ及び他の情報を表示する。ネットワークアダプタ２１６は、コンピュータ２００をネットワーク１３０に結合する。ストレージデバイス２０８は、一実施形態ではハード・ディスク・ドライブであるが、データを格納可能な他のデバイスとしてもよく、例えば、書き込み可能なコンパクトディスク（ＣＤ）若しくはＤＶＤ、半導体素子を使用したメモリデバイス、又はコンピュータで読み出し可能な他の記憶媒体等が挙げられる。ストレージデバイス２０８は、オペレーティングシステムやアプリケーション等のファイルを格納する。
【００１６】
図１のエンティティによって利用されるコンピュータ２００のタイプは、実施形態とエンティティによって利用される処理パワーとに大きく左右される場合がある。例えば、携帯情報端末（ＰＤＡ）であるクライアント１２０の場合は、通常、処理パワーに限界があり、ディスプレイ２１８も小さい。また、ポインティングデバイス２１４が付いていないこともある。対照的に、サーバ１１０は、連携して動作する複数のブレードサーバを備えることができる。
【００１７】
当技術分野で公知であるように、コンピュータ２００はコンピュータ・プログラム・モジュールを実行するよう適合される。本明細書で使用される用語「モジュール」は、特定の機能を提供するためのコンピュータ・プログラム・ロジック及び／又はデータを示す。モジュールは、ハードウェア、ファームウェア、及び／又はソフトウェアに実装することができる。一実施形態では、モジュールはストレージデバイス２０８に格納され、メモリ２０６にロードされ、プロセッサ２０２によって実行される。
【００１８】
更に、本説明では「アプリケーション」という用語を使用して、コンピュータ２００によって実行されるプログラムを参照する。プログラムには、プログラムが実行するコード及びデータが含まれる。アプリケーションは、通常、ストレージデバイス２０８に常駐し、実行時にメモリ２０６にロードされる１つ又は複数のファイルによって構成される。メモリ２０６にロードされたファイルのうちの少なくとも１つは、「実行可能なイメージ」として参照され、従来の方法で実行されるときにプロセスとして実行される。但し、アプリケーションストリーミングを介して実行される場合、アプリケーションはセグメント化され、異なる方法で実行される。その詳細を以下に説明する。
【００１９】
図３は、一実施形態に係る、サーバ１１０内のモジュール（サーバ・アプリケーション・ストリーミング・モジュール１１１及びサーバ・セキュリティ・モジュール１１２）の詳細を示す上位レベルのブロック図である。サーバ・アプリケーション・ストリーミング・モジュール１１１のサブモジュールは連携し合って、クライアント１２０にアプリケーションをストリーミングすることがでる。このサブモジュールとしては、アプリケーションリポジトリ３０１、アプリケーション・パッケージング・モジュール３０２、及びブロック・サーバ・モジュール３０３がある。
【００２０】
アプリケーション・パッケージング・モジュール３０２は、アプリケーションを「ブロック」と称する一連のセグメントに分割する。一実施形態では、各ブロックはアプリケーションの特定の論理ユニットを表す。ブロックは、プログラム自体の部分を含むことに加えて、アプリケーション・ストリーミング・システムにとって有用なブロックに関するメタデータ（ブロック番号、ブロックのサイズ（バイト）、ブロックが相当するアプリケーションにおけるバイト範囲等）を含んでもよい。アプリケーション・パッケージング・モジュール３０２は、クライアント１２０が、必要なブロックを取得できるように、アプリケーション・ストリーミング・システムによって求められる編成情報を更に作成する。例えば、一実施形態では、アプリケーション・パッケージング・モジュール３０２は、ブロック番号と、ブロック番号が示すアプリケーションバイト範囲を相互に関連付けるデータ構造体（例えば、リスト）を作成する。これにより、クライアントは、所与のメモリアドレスに格納された命令を実行するために、どのブロック番号が必要であるかを特定することができる。このブロックへの分割は、論理的な方法でも物理的な方法でも行うことが可能である。即ち、アプリケーションは、個別に格納される離散的なブロックに物理的に分割することも、ブロックを一緒に格納し、アドレスをブロック番号と関連付ける前述データ構造体によって論理的に分離することも可能である。
【００２１】
アプリケーションリポジトリ３０１は、アプリケーション・パッケージング・モジュール３０２によって作成されるような、セグメント化されたアプリケーションと、対応する編成情報とを格納する。アプリケーションリポジトリ３０１は、様々な実施形態において様々な方法で実装することが可能である。例えば、一実施形態では、アプリケーションリポジトリ３０１は、リレーショナル・データベース管理システム内のテーブルセットである。
【００２２】
ブロック・サーバ・モジュール３０３は、ストリーミングされるアプリケーション又はその特定のブロックに対するリクエストに応答して、クライアント１２０に該当するブロックを提供する。そのための方法は、アプリケーション・パッケージング・モジュール３０２がアプリケーションをパッケージ化した方法によって決まる。例えば、アプリケーション・パッケージング・モジュール３０２によってアプリケーションが物理的にセグメント化されない実施形態では、ブロック・サーバ・モジュール３０３は、要求されたブロック番号に対応するファイルの特定のバイト範囲を送信し、ブロック番号等の要求されたメタデータを動的に挿入することにより、要求されたブロックを提供する。或いは、ブロックが、対応するメタデータを伴って別々に格納される実施形態では、ブロック・サーバ・モジュールは、離散的なデータブロックのコピーを送信するだけである。
【００２３】
サーバ・アプリケーション・ストリーミング・モジュール１１１と、これが含むモジュールは、多種多様な方法で実装することができ、前述の特定の実装に限定されるものでないことを理解されたい。むしろ、多くの代替実装が当業者には公知であろう。その例として、モジュールの様々な番号又はモジュール同士の関係や、アプリケーションストリーミングのためにアプリケーションをパッケージ化するための様々なデータフォーマット等が挙げられる。
【００２４】
サーバ・セキュリティ・モジュール１１２のサブモジュールは、アプリケーション・スキャンニング・モジュール３１０とスキャン保証モジュール３１１とを含み、この２つはサーバ・アプリケーション・ストリーミング・モジュール１１１のモジュールと連携して動作することにより、ストリーミングされるアプリケーションにマルウェアが含まれていないことをクライアント１２０に対して保証する。一実施形態では、サーバ・セキュリティ・モジュール１１２は、クライアント１２０に対するサーバ１１０の認証の一部として使用されるサーバ認証モジュール３１２を更に含む。アプリケーション・スキャンニング・モジュール３１０は、アプリケーションをスキャンして、アプリケーションにマルウェアが無いことを保証する。一実施形態では、アプリケーションは、アプリケーション・スキャンニング・モジュール３１０によってスキャンされる前に、サーバ１１０のファイルシステム内に従来の方法でインストール及び格納される。他の実施形態では、アプリケーションのパッケージ化された形式と区別されたアプリケーションリポジトリ３０１の部分内にアプリケーションを格納することもできる。一実施形態では、ストリーミングされるアプリケーションとして配布する目的でアプリケーションがパッケージ化される前に、アプリケーション上でスキャンが実行される。アプリケーション・スキャンニング・モジュール３１０については、Ｓｙｍａｎｔｅｃ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＮＯＲＴＯＮ  ＡＮＴＩＶＩＲＵＳ等の従来のマルウェア検出ソフトウェアを使用して実装することができる。
【００２５】
スキャン保証モジュール３１１は、ブロック・サーバ・モジュール３０３と対話することにより、クライアントに提供されるブロックがスキャン済みであることを示す。具体的には、ブロックが対応するアプリケーションについてマルウェアスキャンが実行済みであるかどうかを、クライアント１２０に送信される各ブロックに追加する。一実施形態では、事前にスキャンされているアプリケーションだけがストリーミングされるアプリケーションとして配布するためにパッケージ化され、従って、このような実施形態では、スキャン保証モジュール３１１によって追加される指標は常にポジティブであり、ブロックがスキャン済みであることを示している。スキャンが終了していなくてもアプリケーションをパッケージ化してストリーミングできるようにする別の実施形態では、スキャン保証モジュール３１１は、データ構造体（アプリケーションと、アプリケーションがスキャン済みでマルウェアが無いことが確認されているかどうかの判定とを相互に関連付ける）へアクセスする。このようなデータ構造体の場合は、例えば、アプリケーション・スキャンニング・モジュール３１０によって維持することが可能である。
【００２６】
サーバ認証モジュール３１２は、暗号手法を適用して、スキャン保証モジュール３１１によって提供されるブロック内の指標が信頼できることをクライアント１２０に約束する。例えば、一実施形態では、サーバ認証モジュール３１２は、サーバ１１０とクライアント１２０との間の通信を暗号化し、指標が悪質な媒介によって伝送時に変更されないことを保証する。従って、サーバ１１０はブロックを暗号化してからクライアントに伝送し、クライアント１２０はブロックを解読してからその試験を行う。別の実施形態では、サーバ認証モジュール３１２は、ブロックが変更されていないことをクライアント１２０が検証できるように、ブロックをデジタル処理で符号化する。
【００２７】
図４は、一実施形態に係るクライアント１２０内のモジュールの詳細を示す上位レベルのブロック図である。クライアント・アプリケーション・ストリーミング・モジュール１２１は、アプリケーション・ストリーミング・システムのクライアント側のコンポーネントであり、サーバ・アプリケーション・ストリーミング・モジュール１１１と通信する。クライアント・アプリケーション・ストリーミング・モジュール１２１は、アプリケーション実行モジュール４０１とブロック要求モジュール４０２とを含む。アプリケーション実行モジュール４０１は、サーバ１１０からブロックを受信して実行する。一実施形態では、アプリケーション実行モジュール４０１は、受信したブロックを、命令実行時にアプリケーション実行モジュール４０１が利用できる一時ストレージ領域（メモリバッファ等）内にローカルに格納する。アプリケーションストリーミングを開始するには、例えば、クライアント・アプリケーション・ストリーミング・モジュール１２１に、実行が所望されているストリーミングされるアプリケーションの識別子を提供する。例えば、ユーザは、ストリーミングされるアプリケーションを表すデスクトップアイコンをダブルクリックする場合もある。そのようなアイコンの場合は、クライアント・アプリケーション・ストリーミング・モジュール１２１を実装するプロセスの実行を指定し、それによって、ストリーミングされるアプリケーションの識別子が引数としてプロセスに渡される。
【００２８】
ブロック要求モジュール４０２は、ストリーミングされるアプリケーションを実行するのに必要なブロックについてサーバ１１０にリクエストを送信する。一実施形態では、ブロック要求モジュール４０２は、命令アドレスをブロックに関連付けるデータ構造体（一実施形態においてアプリケーション・パッケージング・モジュール３０２によって作成されたもの等）にアクセスする。したがって、実行すべき命令が、クライアント・アプリケーション・ストリーミング・モジュール１２１によってまだダウンロードされていないブロックに対応する場合、ブロック要求モジュールはそのブロックに対するリクエストをサーバ１１０に送信する。これに対して、実行すべき命令が、ダウンロード済みのブロックに対応する場合、クライアント１２０上で（例えば、アプリケーション実行モジュール４０１のメモリバッファ内において）命令がローカルにすでに使用できる状態になっているので、そのようなリクエストは必要ない。
【００２９】
クライアント・セキュリティ・モジュール１２２は、ストリーミングされるアプリケーションに悪質なコードが含まれていないかどうか判定する。クライアント・スキャンニング・モジュール４０３は、クライアントシステムをスキャンしてマルウェアが存在しないか確認する。一実施形態では、クライアント・スキャンニング・モジュール４０３は、既存のアンチマルウェアソフトウェア（ＮＯＲＴＯＮ  ＡＮＴＩＶＩＲＵＳ等）によって実装され、着信データを自動的に検出及びスキャンする自動保護機能を備える。
【００３０】
クライアントスキャン検証モジュール４０４は、クライアント・スキャンニング・モジュール４０３とインターフェイス接続し、クライアント１２０で受信されたストリーミングアプリケーションのブロックを調べて、ストリーミングされるアプリケーションがスキャン済みかどうか且つマルウェアが検出されていないかどうかを判定する。クライアントスキャン検証モジュール４０４は、スキャン保証モジュール３１１が指標を配置するようになっている、ブロック内の場所で指標を探す。例えば、指標はブロックの第１バイトに配置可能であり、ゼロ以外の値は関連するアプリケーションがすでにスキャンされていることを示し、ゼロ値は関連するアプリケーションがまだスキャンされていないことを示す。そのような指標が検出された場合、クライアントスキャン検証モジュール４０４はクライアント・スキャンニング・モジュール４０３にブロックを渡す必要はなく、むしろ、格納及び実行のためにブロックをアプリケーション実行モジュール４０１に直ぐに渡すことができる。しかしながら、指標が見つからなかった場合、クライアントスキャン検証モジュール４０４はブロックをクライアント・スキャンニング・モジュール４０３に渡し、これにより、アプリケーションの全ブロックのダウンロードが終了しアプリケーションファイル全体のスキャンが終了するまで、ストリーミングされるアプリケーションの実行は停止される。
【００３１】
クライアント認証モジュール４０５は、ストリーミングされるアプリケーションを提供するサーバ１１０が確かに信頼できるソースであることを保証する。クライアント認証モジュール４０５が、サーバ１１０は信頼できるソースであることを確認していない場合、ブロックにマルウェアが含まれていないと判明したことを示す指標は無視され、そのような指標はブロックに含まれていないと見なされる。したがって、一実施形態では、ブロックはクライアント・スキャンニング・モジュール４０３に渡される。結果として、全てのアプリケーションブロックがダウンロードされ、アプリケーション全体がスキャンされてから、アプリケーションの実行が可能となる。
【００３２】
一実施形態では、クライアント認証モジュール４０５は、アプリケーションストリーミングの実行を特に許可されたサーバのホワイトリストを維持し、ホワイトリスト上のサーバは十分に認証されているとみなす。より詳細には、ホワイトリストには、インターネットプロトコル（ＩＰ）アドレス等、一意のサーバ識別子の一覧が含まれる。このリストへの入力は、ユーザが行うことも、クライアント認証モジュール４０５を具現化するソフトウェアの作成者が行うことも、両者が一緒に行うこともできる。次に、特定のサーバ１１０がクライアント１２０にアプリケーションをストリーミングしている場合、クライアント認証モジュール４０５は、サーバ１１０のＩＰアドレスがホワイトリスト内にあるかどうかを確認し、存在する場合はサーバを認証し、存在しない場合はサーバを認証しない。このようなホワイトリストに基づく認証方法は一例に過ぎず、他の認証方法についても同様に当業者には可能である。
【００３３】
更に、クライアント認証モジュール４０５は、サーバ１１０による送信とクライアント１２０による受信との間のポイントでブロックにマルウェアが決して挿入されないようにする。この処理については、サーバ認証モジュール３１２については前述したように、従来の暗号技術を使用するクライアント１２０のクライアント認証モジュール４０５とサーバ１１０上のサーバ認証モジュール３１２との連携によって実現することが可能である。
【００３４】
図５は、一実施形態に係る、サーバ・セキュリティ・モジュール１１２と連携するサーバ・アプリケーション・ストリーミング・モジュール１１１によって実行されるステップを示すフローチャートである。一実施形態では、アプリケーション・スキャンニング・モジュール３１０はまず、アプリケーションをスキャン（５１０）して、アプリケーションにマルウェアが含まれていないことを保証する。次いで、アプリケーション・パッケージング・モジュール３０２は、前述したように、アプリケーションをパッケージ化（５２０）して、それをブロックにセグメント化し、他に必要な関連情報を作成する。パッケージ化されたアプリケーションはアプリケーションリポジトリ３０１内に格納され、ここで、アプリケーションはクライアントへのストリーミングが可能になる。次に、ブロック・サーバ・モジュール３０３は、クライアント１２０から、ブロックに関するリクエストを受信する（５３０）。ブロック・サーバ・モジュール３０３は、要求されたブロックをスキャン保証モジュール３１１に提供する。スキャン保証モジュール３１１では、ブロックに対応するアプリケーションがマルウェアについてスキャン済みでありマルウェアがないことを確認済みであるかどうかを示す指標を、ブロックの所与の場所に追加することにより、ブロックを強化する。最後に、スキャン保証モジュールは、強化されたブロックをクライアント１２０に提供する（５４０）。
【００３５】
図６は、一実施形態に係る、クライアント・セキュリティ・モジュール１２２と連携するクライアント・アプリケーション・モジュール１２１によって実行されるステップを示すフローチャートである。まず、クライアント１２０のブロック要求モジュール４０２は、ブロックを要求する（６１０）。ブロックリクエストは、状況に応じて、単一ブロックに対するものであっても、複数のブロックに対するものであってもよい。例えば、ストリーミングされるアプリケーションを最初に実行する場合、ブロック要求モジュール４０２は、アプリケーションの初期の又はコアの機能に必要なコード全体を１つのトランザクションで取得するために複数のブロックを要求することができる。その後、ブロックがまだ取得されていないコードへのアクセス時に、ブロック要求モジュール４０２によって個々のブロックを要求することができる。次いで、クライアント１２０は、サーバ１１０から要求された１つ又は複数のブロックを受信する。クライアントスキャン検証モジュール４０４はブロックを調べて、アプリケーションがマルウェアについて事前にスキャンされているかどうかを示す指標６３０が存在するかどうかを確認する。
【００３６】
そのような指標がブロックに含まれている場合、クライアントスキャン検証モジュール４０４は、クライアント・スキャンニング・モジュール４０３がブロックに対して動作するのを妨げる。その代わり、アプリケーション実行モジュール４０１はブロック内の関連するコードを直ちに実行する（６４０）ことができる。しかし、ブロックに指標が含まれていない場合、クライアントスキャン検証モジュール４０４は、クライアント・スキャンニング・モジュール４０３にブロックを渡す。結果として、クライアント・スキャンニング・モジュール４０３により、ブロック要求モジュール４０２は、アプリケーション内の残りのブロック全てを要求する（６５０）ことができる。次に、全てのブロックの受信が終了すると、クライアント・スキャンニング・モジュール４０３は、ブロックを集合させて単一ユニットとすることができ、これによりアプリケーション全体がまとめてスキャンされる（６６０）。一実施形態では、ブロックがスキャン済みであることを示す指標がブロックに含まれている場合でも、クライアント認証モジュール４０５において、指標を提供するサーバ１１０が信頼できるものであると判定できなかった場合に応えて、クライアントスキャン検証モジュール４０４は、クライアント・スキャンニング・モジュール４０３にブロックを渡す。別の実施形態では、ブロックに指標が含まれていない場合、又は信頼できるサーバ１１０であることをクライアント認証モジュール４０５が確認できなかった場合、クライアント・セキュリティ・モジュール１２２はアラートを発行して、関連するアプリケーションはマルウェアが無いことの確認がなされていない旨を通知し、スキャンを実行することなしにアプリケーションを実行するかどうかについて、ユーザに入力を促し、ユーザ入力によって指定されるアクション（スキャンを実行する、又はスキャンなしにコードを実行する）を取る。別の実施形態では、このような場合に取られるアクションは、クライアント・セキュリティ・モジュール１２２を具現化するセキュリティソフトウェアの基本設定等、ポリシーによって指定される。
【００３７】
図５及び図６のステップは、例示を目的としたものであることを理解されたい。他の実施形態では、当該ステップを異なる順序で実行したり、又はちょうど１回だけでなく複数回実行したり、又はステップを追加したり、減らしたり、若しくは代替ステップを使用することも可能である。
【００３８】
したがって、前述発明により、アプリケーションストリーミングの有益なパフォーマンス特性を維持しながら、アプリケーション・ストリーミング・システムにセキュリティを組み込むことができる。
【００３９】
上記説明は、特定の実施形態の動作を示すために記載されており、本発明の範囲を制限するためのものではない。本発明の範囲は、以下の特許請求の範囲によってのみ制限される。上記考察から、本発明の精神及び範囲によってさらに網羅される多くの変形形態が当業者には明らかであろう。
【図１】
0005460698.tif 000002
【図２】
0005460698.tif 000003
【図３】
0005460698.tif 000004
【図４】
0005460698.tif 000005
【図５】
0005460698.tif 000006
【図６】
0005460698.tif 000007