(57)【要約】  本発明はインターネット、イントラネット、エキストラネットなどのネットワーク環境において実行されるクライアント-サーバ基盤のサービスシステムにおいて、サービス使用者側がサービス提供者のサービスを利用するのにおいて、サービス使用者側がサービス提供者にサービスの利用を要請すると、サービス提供者は使用者側のシステムに保護空間を設けて必要なソフトウェアを保護空間内で実行することによって、サービス提供者のシステムとサービス使用者側のシステムを安全に保護しながら、仮想マシンイメージの配布形態のソフトウェア配布方式を通じて、コンピュータに習熟していない使用者側も簡単かつ素早くサービスを利用することができるようにする。
2009537892.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でサービス提供者がサービス使用者側にサービスを提供する方法において、
サービス提供者がネットワークを介して、サービス使用者側からサービスの要請を受ける段階;
サービス提供者がネットワークを介して、サービス使用者側のシステムに保護空間を生成する段階;および、
前記保護空間の内部において、サービスの提供に必要なアプリケーションが実行される段階を含み、
前記保護空間は、サービス使用者側のシステムの保護空間の外部と独立していることを特徴とするネットワーク上におけるサービス提供方法。
【請求項２】
請求項１において、
前記保護空間は、仮想マシンイメージを伝送することによって生成されることを特徴とするネットワーク上におけるサービス提供方法。
【請求項３】
請求項２において、
前記仮想マシンイメージは、サービスの提供に必要な全部または一部のアプリケーションを含むことを特徴とするネットワーク上におけるサービス提供方法。
【請求項４】
請求項２において、
前記仮想マシンは、ＯＳを仮想化して生成され、これによりサービス使用者側のシステムはホストＯＳとゲストＯＳに分割され、
前記ゲストＯＳは、前記保護空間を構成することを特徴とするネットワーク上におけるサービス提供方法。
【請求項５】
請求項４において、
前記ホストＯＳ内の個体がアクセス可能であるか否かを検証する段階をさらに含み、可能な場合、前記個体はゲストＯＳから利用可能であることを特徴とするネットワーク上におけるサービス提供方法。
【請求項６】
請求項４において、
前記ホストＯＳの資源が安全であるか否かを検証する段階をさらに含み、
安全な場合、ゲストＯＳと資源を共有することを特徴とするネットワーク上におけるサービス提供方法。
【請求項７】
請求項１において、
前記サービス提供者は、前記保護空間で生成されたデータのみを受信することを特徴とするネットワーク上におけるサービス提供方法。
【請求項８】
請求項１または請求項７において、
前記サービス提供者が送受信するデータの無欠性を検証する段階をさらに含むことを特徴とするネットワーク上におけるサービス提供方法。
【請求項９】
請求項８において、
前記無欠性の検証は、提供者側と使用者側とのうちのいずれか一方でデータを暗号化して伝送し、他の一方においては受信したデータを復号化することによってなることを特徴とするネットワーク上におけるサービス提供方法。
【請求項１０】
請求項８において、
前記無欠性の検証は、提供者側と使用者側のいずれか一方でデータに解示値を付加して 伝送すると他の一方においては受信したデータに付加された解示値を確認することによってなることを特徴とするネットワーク上におけるサービス提供方法。
【請求項１１】
プログラムを配布するサービスを提供する方法において、
サービス提供者がネットワークを介してサービス使用者側からプログラムの配布の要請を受ける段階；
サービス提供者が仮想マシンのイメージをサービス提供者に伝送する段階;および前記サービス使用者側のシステムに前記仮想マシンのイメージをインストールする段階を含み、
前記仮想マシンのイメージにはサービス使用者側が要請した少なくとも一つのプログラムが予めインストールされていることを特徴とするプログラム配布方法。
【請求項１２】
請求項１１において、
前記仮想マシンは、ＯＳレベルの仮想化方式で生成されることを特徴とするプログラム配布方法。
【請求項１３】
請求項１１または請求項１２において、
前記使用者側の要請は、少なくとも一つのインストールされるプログラムの種類および各プログラムの所定の設定事項を予め決定することを含むことを特徴とするプログラム配布方法。
【請求項１４】
請求項１１ないし請求項１３のうちいずれか一項において、
前記使用者側に提供された仮想マシンのイメージは、提供者のシステムまたは外部記憶空間に記憶され、
これにより、使用者側は前記仮想マシンのイメージの再伝送を受けることができることを特徴とするプログラム配布方法。
【請求項１５】
クライアントとサーバから構成されるネットワークシステムのセキュリティシステムにおいて、
前記クライアントにインストールされてクライアントアプリケーションを保護する保護空間生成手段と、
クライアント側および/またはサーバ側に提供され、クライアントとサーバとの間で送受信するネットワークパケットが操作されなかったことを保障するための無欠性の検証手段と、
を含むことを特徴とするクライアント/サーバセキュリティシステム。
【請求項１６】
請求項１５において、
前記サーバに提供される無欠性の検証手段は、前記保護空間において実行されたクライアントアプリケーションで生成されたネットワークパケットのみを許容することを特徴とするクライアント/サーバセキュリティシステム。
【請求項１７】
請求項１５または請求項１６において、
前記保護空間生成手段は仮想マシンであることを特徴とするクライアント/サーバセキュリティシステム。
【請求項１８】
請求項１５または請求項１６において、
前記保護空間生成手段は、隔離されたＯＳの資源を生成する手段であることを特徴とするクライアント/サーバセキュリティシステム。
【請求項１９】
請求項１８において、
前記隔離されたＯＳの資源の生成手段は、保護空間内で実行されるプロセスがアクセスすることができない資源に対するアクセスを遮断し、保護空間外で実行されるプロセスが保護空間内で実行されるプロセスの資源にアクセスすることを遮断することを特徴とするクライアント/サーバセキュリティシステム。
【請求項２０】
請求項１９において、
前記資源に対するアクセスは、メモリー、ファイル、ディレクトリ、レジストリ、ハンドル、プロセス、及びネットワークのうちの全部または一部に対するアクセスであることを特徴とするクライアント/サーバセキュリティシステム。
【請求項２１】
請求項１５において、
前記無欠性の検証手段は、無欠性情報の生成手段、および無欠性情報の確認手段を備えることを特徴とするクライアント/サーバセキュリティシステム。
【請求項２２】
請求項２１において、
前記無欠性情報の生成手段は、パケットを暗号化し、前記無欠性情報の確認手段はパケットを復号化することを特徴とするクライアント/サーバセキュリティシステム。
【請求項２３】
請求項２１において、
前記無欠性情報の生成手段は、検証値を付加し、前記無欠性情報の確認手段は前記検証値を確認することを特徴とするクライアント/サーバセキュリティシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインターネット、イントラネットあるいはエキストラネット環境を含むネットワーク環境においてクライアント/サーバから構成されて、操作されるサービス提供システムを、外部のハッキング攻撃から保護することができる方法に関するものである。具体的にはクライアントシステムに既存のオペレーティングシステム（ＯＳ）環境に独立した保護空間を生成して、保護空間内においてのみクライアントのアプリケーションを実行する。サーバのアプリケーションは保護空間内において実行されたクライアントのアプリケーションが生成したネットワークパケットのみを信頼する。これにより、外部のハッカーの攻撃からサーバシステムおよび/またはクライアントシステムを保護することができる。
【背景技術】
【０００２】
一般的にネットワーク環境において実行されるサービス提供システムは、クライアントを構成するサービス使用者側(以下、使用者側)とサーバを構成するサービス提供者側(以下、提供者側)からなり、提供者はサーバにサーバのアプリケーションを設け、使用者側は提供者のサービスを利用するために提供者が配布するアプリケーションプログラムであるクライアントのアプリケーションを自らのシステムにインストールして、サーバのアプリケーションとクライアントのアプリケーション間の相互作用によってサービスの提供がなされる。ところが、多くの場合、使用者側は提供者を信頼することができず、逆に提供者もまた使用者側を信頼することができない。このような信頼の欠如は、ＩＴに基づいたサービス産業の発展を阻害し、時には犯罪の手段として利用されたりもする。
【０００３】
使用者側が提供者を信頼することができない理由は、提供者が配布するアプリケーションプログラムがスパイウェアやアドウェアのような悪性プログラムであることもあり、一部の構成ファイルがコンピュータウイルスに感染している可能性もあるためである。この場合、悪性であるプログラムやウイルスに感染したファイルをインストールすると、使用者側のシステムもまた悪性プログラムあるいはウイルスに感染する。
【０００４】
逆に、提供者が使用者側を信頼することができない理由は、使用者側のシステムは一般的にセキュリティの脆弱点を有しているためである。使用者側のシステムの脆弱点により、提供者のシステムが脆弱になり得、時には使用者側がリバースエンジニアリング技術を用いて提供者が配布したアプリケーションプログラムを分析して、重要なロジックをハッキングすることもできる。インターネットバンキングなどの金融取引きサービスはハッキングから内部ロジックを保護しなければならず、エキストラネットを通じて、協力業者に業務サービスを提供する企業の場合、協力業者システムのセキュリティ上の脆弱点により自社のサービスシステムが脆弱にならないように防御しなければならない。
【０００５】
このようなクライアントとサーバ間の相互の信頼性を構築するための多様な方法が提示された。従来のネットワーク環境を通じたサービスにおいて、システムに対するハッキングの攻撃を遮断するためのクライアント側の保護装置はアンチウイルス製品、パッチ管理システムなどがあり、サーバ或いはネットワーク側の保護装置はネットワーク・ファイアウォール、ウェブ・ファイアウォール、脆弱性スキャナー、ソースコード診断ツールなどがある。以下、各技術の内容と限界を考察する。
【０００６】
アンチウイルス製品は知られた悪性コードのシグネチャのリストを利用して各ファイルを診断した後、悪性コードの感染の有無を判断する。ところが、悪性コードが広く知られて広がり、申告センターに受付けられる前にはシグネチャのリストに悪性コードが存在しないため診断が不可能であるという限界がある。
【０００７】
パッチ管理システムはＯＳやアプリケーションに最新のセキュリティパッチを適用して、ＰＣを安全な状態に維持する。ところが、パッチが発表されていない脆弱点に対する防御は不可能である。
【０００８】
ネットワーク・ファイアウォールはOSI(Open Systems Interconnection)の７階層中第３階層であるネットワーク層や第４階層であるトランスポート層に存在する脆弱点に対する外部ハッカーの攻撃を遮断する。
【０００９】
図1はネットワーク・ファイアウォール(150)の機能を概念的に示したものであって、使用者側はネットワーク・ファイアウォールを利用してＩＰアドレスおよびポート番号を利用したアクセス制御規則(151)を設定し、非認可の攻撃者からのネットワークパケットを遮断する。
【００１０】
例えば、FTPサーバ認可者(100)がFTPサーバ(160)に接続しようとすれば、ネットワーク・ファイアウォール(150)は該当接続を許可し、FTPサーバ非認可者(110)がFTPサーバ(160)に接続しようとすると、ネットワーク・ファイアウォール(150)は該当接続を遮断する。ところがネットワーク・ファイアウォールを利用する場合、ＩＰアドレスおよびポートを基準として許可、遮断の可否を決定するため、攻撃者が認可者のマシンをハッキングした後、認可者のマシンを経由して攻撃したり、認可者が悪意を持って攻撃を試みたとしたら、これを防ぐ方法はない。
【００１１】
一方、ウェブサーバ(170)はすべての使用者側(120)にアクセスが許可されていることから、ネットワーク・ファイアウォール(150)はウェブサーバ(170)に向かうすべてのパケットを許可する。ところが、ウェブサーバ(170)とともに外部に公開されたサーバは、ウェブのアプリケーションに脆弱点があれば誰でも該当脆弱点を攻撃することができるため、ネットワーク・ファイアウォール(150)は脆弱点に対する外部ハッカーの攻撃を防ぐことができない。すなわち、ネットワーク・ファイアウォール(150)は許可するサービスと許可しないサービスを制御することはできるものの、許可されたサービスの脆弱点に対する攻撃は防ぐことができない。
【００１２】
このような問題を解決するために、アプリケーション・ファイアウォールが公開された。アプリケーション・ファイアウォールはOSIの7階層中第7階層であるアプリケーション層において動作するため、HTTP、FTP、SMTP等、各種プロトコルを認識することができ、該当アプリケーションに存在する脆弱点に対する攻撃を防御することができる。
【００１３】
図２はアプリケーション・ファイアウォールのうち、代表的なウェブのアプリケーション・ファイアウォール(220)に関するものである。ウェブのアプリケーション・ファイアウォール(220)はパケットをフィルタリングするシステム(222)を備え、受信されるパケットを予め定義されたパターン(221)と比較して悪性パケット(200)であれば遮断し、正常パケット(210)であればウェブサーバ(230)に伝送するパケットフィルタリング方式により動作する。
【００１４】
しかしながら、ウェブのアプリケーション・ファイアウォール(220)は、知られた攻撃技法を用いてパターン(221)を作成するため、攻撃者は既存の攻撃技法を若干変形することによってパターンフィルターシステム(222)を簡単に迂回することができ、知られていない攻撃技法は防御することができず、入力されるすべてのパケットを数十〜数千個の予め定義されたパターン(221)と比較する作業を遂行しなければならないことから、ウェブサーバの速度が大幅に遅くなる問題があった。また、正常パケット(210)が予め定義されたパターン(221)と偶然に一致すれば、悪性パケット(200)として誤認されて、正常な使用者側のウェブサーバの利用が遮断される副作用もある。
【００１５】
また、ウェブのアプリケーション・ファイアウォール(220)は一般的な攻撃パターンしか監視することができないため、特定のウェブサイトにのみ局限される脆弱点を防ぐことが難しい。例えば、ホームショッピング関連のウェブサイトにおいて物品の決済金額を10,000ウォンから1,000ウォンに修正することのような形態の攻撃は該当サイトにおいてのみ意味がある攻撃であるため、ウェブのアプリケーション・ファイアウォール(220)が効果的に防ぐことができない。
【００１６】
ウェブのアプリケーション・ファイアウォール(220)はアプリケーションの脆弱点はそのまますえ置いて、該当脆弱点に対する攻撃を遮断する方式である。これとは異なって、脆弱点スキャナーやソースコード点検ツールは脆弱点自体を除去する方式を使用する。
【００１７】
脆弱点スキャナーは、アプリケーションサーバの外部において脆弱点の存在有無の診断用パケットを伝送し、その応答を確認して脆弱点の存在有無を点検するツールであり、ソースコード点検ツールは、ソースコードを直接調べて脆弱点の存在有無を判断するツールである。
【００１８】
図３は脆弱点スキャナーおよびソースコード点検ツールを使用する過程である。アプリケーションプログラムの開発を開始(300)すると、一般的に設計およびコーディング段階(310)を経て、一定部分が完了した後、脆弱点スキャナーおよびソースコード点検ツールを実行して今まで作成したコードに脆弱点が存在するかを確認する脆弱点の点検段階(320)を進行させる。この時、脆弱点が発見されると、修正段階(330)を経てこの過程を脆弱点が発見されない時までこれを繰り返して開発を完了(340)する。
【００１９】
一般的に脆弱点スキャナーやソースコードの点検ツールは、セキュリティの脆弱点が存在することを知らせる役割のみを行い、セキュリティの脆弱点を除去することは開発者の役割である。したがって、開発者はセキュリティの脆弱点を除去するために脆弱点と関連して高級ハッカーと同等の水準の専門知識がなければならず、脆弱点の除去にも多くの費用と時間が必要である。また、アプリケーション・ファイアウォールと同様に物品の価格を10,000ウォンから1,000ウォンに修正することのような特定サイトに局限された脆弱点は、脆弱点スキャナーやソースコード点検ツールが発見することができない短所も存在する。
【００２０】
このような理由により、従来技術によるとネットワーク基盤クライアント/サーバシステムの信頼性向上のための根本的なセキュリティシステムを構築するのが難しかった。以下に詳述するが、本願は上述のような従来のセキュリティシステムの技術的限界を克服する新しい方式を記述する。
【００２１】
一方、クライアント/サーバのサービス提供システムは、一般的にサービスの提供に必要なクライアントのアプリケーションを提供者が使用者側に配布して、これを利用するように誘導する。ところがクライアントのアプリケーションの配布がサービスの提供に必須かつ不可欠であるにもかかわらずセキュリティのための対策が不備であるため、現在の不安定なクライアントのアプリケーションの配布方式はサービス提供システムの相互信頼性を阻害するまた一つの重要な要素となっている。
【００２２】
従来、提供者がサービスに必要なアプリケーションプログラムをサービス使用者側に配布する代表的な方式は、Active X コントロール方式、プログラム直接インストール方式、ストリーミング方式がある。以下各技術の内容と限界を考察する。
【００２３】
Active Xコントロール方式はウェブサーバにおいて数多く使用される。サービス提供者はサービスに必要なソフトウェアをActive Xコントロールの形態で制作し、ウェブページに記録しておく。使用者側が該当ウェブページを訪問すると、使用者側のウェブブラウザがActive XコントロールをPCにインストールするかどうかを使用者側に質問し、使用者側が同意すればActive Xコントロールがインストールされる。
【００２４】
Active Xコントロール方式はプログラムを手軽にインストールすることができるという長所があるが、インストールされるActive Xコントロールがアドウェア、スパイウェアのような悪性コードである場合がある。これによってウェブサーフィンをしていると、自分も知らないうちにＰＣが悪性コードに感染する問題があった。これを解決するために信頼性のある認証機関から認証書を受けたか否かを利用して、コントロールの安全性を判断することができる制度を国家的に導入することも行った。ところが、アドウェアの製作業者であるとしても、一定の費用だけ支払えば認証書を受けることができる制度的な盲点は常に存在し、ウェブブラウザにおいて電子署名の確認オプションが消えている場合、このような制度は無用の長物となる。また、正常なアクティブXコントロールにセキュリティの脆弱点が存在する場合、このような脆弱点を利用して使用者側のＰＣをハッキングすることも可能である。
【００２５】
プログラムの直接インストール方式は、Setup.exeのようなインストールプログラムを使用者側がダウンロードした後にこれを実行してソフトウェアをインストールする方式である。インストールプログラム方式は根本的にActive X方式と同一の問題点を有する。
【００２６】
Active Xコントロール方式やインストールプログラム方式は、いずれもクライアントシステムに直接ソフトウェアをインストールする形態であるため、バージョンの衝突問題、インストール過程の複雑さ、容量の問題等の問題が発生する。これを解決するために、ストリーミング形態のソフトウェア配布方式が導入された。
【００２７】
バージョンの衝突問題とは、例えばＡ、Ｂのソフトウェアが共に使用するab.dllという共有ライブラリがあるとき、ソフトウェアが使用するバージョンと互換されていないバージョンがインストールされていたり、他のソフトウェアが該当ファイルをアップデートした場合、正常に実行されない場合をいう。
【００２８】
ストリーミング方式は、クライアント/サーバの環境においてソフトウェアをクライアントのＯＳに直接インストールするのではなく、ソフトウェアがインストールされたストリーミングイメージに代替する形態である。プロセスがab.dllを要請すると、ストリーミング クライアントはストリーミングイメージにおいてab.dllを探した後、このファイルを戻すことによってＯＳにab.dllが存在しないものの存在するかのようにエミュレーションする。この場合、ファイルがＯＳに直接インストールされないため、バージョンの衝突問題やインストール過程の複雑さなどの問題を解決することができ、全体のプログラムをインストールするのではなく、現在必要なファイルやレジストリのみストリーミングサーバから持ってくればよいことから容量の問題も解決することができる。
【００２９】
ところが、ストリーミング方式はアプリケーションプログラムのレベルにおいてＯＳに存在しないファイル、レジストリ等をあたかも存在するもののようにエミュレーションするだけであって、ＯＳレベルの仮想化を提供しはしないため、アプリケーションプログラムの実行はＯＳにおいて直接なされ、システムプロセス、サービスプロセス、ＯＳカーネルもやはりストリーミングサーバにおいて実行されたプロセスと一般プロセスが共有する。したがって、ストリーミング方式を利用すれば、アプリケーションプログラムのインストールによるＯＳの変更は防げるが、アプリケーションプログラムの実行過程で発生する問題からサービス提供者とサービス使用者側のシステムをセキュリティ的な側面で効率的に保護することができない。
【００３０】
結局、クライアント/サーバ基盤のサービス提供システムにおいて提供者が使用者側に必要なアプリケーションを配布するための従来の方法は、互いに信頼性を構築することができない多様な問題点を有していた。以下に詳述するが、本願は上述したような従来のクライアントのアプリケーション配布方式の技術的限界を克服する新たな方式を提案する。
【００３１】
一方、最近仮想マシンに関する研究が活発に進められている。仮想マシンは１９６０年代に一台のメインフレームを何台かのマシンに仮想的に分けて使用するために導入された概念である。ところが、マイクロコンピュータやＰＣの価格が下落するのに伴い、一台のメインフレームを分けて使用することよりは何台かのＰＣを導入することが費用の側面において有利になり、その結果、１９８０年代に入って仮想マシンの技術はほとんど使われなくなった。ところが１９９０年代に入って、多数の小容量コンピュータを使用することが管理および維持補修費用をむしろ増加させ、コンピューティング資源の効率的使用にも問題があったため(一例としてＡサーバはＣＰＵ使用率が１０％であるのに比して、ＢサーバはＣＰＵ使用率が９９％である場合がある)、再度仮想化技術に関心を傾け始めた。ところが、大容量サーバの効率的な資源管理のための仮想化技術に関することが主となって、クライアントシステムのための仮想化技術については未だ研究が不備である。
【００３２】
予め言及するが、本発明はクライアントのアプリケーションのインストールおよび実行のためにクライアントシステムにおいて仮想マシンを動作させる。
【００３３】
仮想マシンを具現する方式は多様である。今までに知られた仮想化の具現方式を挙げてみると、コマンドセットのレベルの仮想化、準仮想化(Paravirtualization)、ライブラリーレベルの仮想化、アプリケーションレベルの仮想化、ＯＳレベルの仮想化などがある。
【００３４】
コマンドセットのレベルの仮想化方式は、中央処理装置、メモリー、チップセット、バスおよび各種周辺装置(ネットワークカード、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ)をソフトウェア的にエミュレーションして仮想マシンを生成するものである。コマンドセットのレベルの仮想化方式は、仮想マシンにおいて発生するすべてのコマンドをソフトウェア的に処理しなければならないため、処理速度の低下をはじめとして性能上の問題が多かった。
【００３５】
準仮想化方式は、コマンドセットのレベルの仮想化方式とは異なって、コマンドをエミュレーションするものではなくＯＳのソースコードやバイナリを修正して、一つのハードウェアにおいていくつかのＯＳが実行されるようにするものである。最近ではＯＳを修正しなくても一つのハードウェアに複数のＯＳを実行できるようにする形態のＣＰＵも開発された。準仮想化方式はコマンドセットがソフトウェア的に再解釈される訳ではないことから処理速度が速い。
【００３６】
コマンドセットのレベルの仮想化方式と準仮想化方式は、各仮想マシン別に完全に独立したＯＳをインストールすることができるのでＶＰＳ(Virtual Private Server)、サーバ統合等のサーバの仮想化に適合した方式であり、ソフトウェアの開発およびテスト等の分野にも活用されている。しかしながら、本願発明の追求するクライアントシステムの仮想化に利用するにはいくつかの問題がある。それぞれの仮想マシンにＯＳを新しくインストールしなければならない不便さがあり、仮想マシンの数だけＯＳライセンスを購入しなければならない。
【００３７】
ライブラリーレベルの仮想化方式は、ＯＳ内でライブラリーを仮想化する方式である。具体的にはＡＰＩ(Application Program Interface)を仮想化する方式である。例えば、WINEのようにWin32 APIをUNIX（登録商標）/Xシステムで具現して、ユニックスでウインドウズアプリケーションプログラムが実行されるようにしたり、反対にウインドウズにおいてPOSIX、OS2サブシステムを提供したりすること等がある。
【００３８】
アプリケーションレベルの仮想化方式は、Sunmicro Systems社によって開発されたJava （登録商標）Virtual Machineのように、アプリケーションをバイトコードの形態に作成して、一つのアプリケーションが多様な異機種のハードウェアおよびソフトウェアの環境で実行されるようにするものである。
【００３９】
最後に、ＯＳレベルの仮想化方式は、ＯＳの各構成要素(プロセス、ファイルシステム、ネットワーク資源、システムコールインターフェース、ネームスペース等)を仮想化する方式である。従来のＯＳレベルの仮想化方式は、主にＶＰＳ(Virtual Private Server)のようなサーバの仮想化を目的として開発された。
【００４０】
全仮想化、準仮想化方式を用いてＶＰＳを具現する場合、一台の仮想マシンが必要とするメモリー、ハードディスクの資源は実際のマシンと同一であることから、一台の物理的マシンに多数の仮想マシンを生成するのは大変であった。ところが、ＯＳレベルの仮想化を用いると、一つのＯＳですべての仮想サーバを駆動することができるため、個別の仮想マシンのＯＳの駆動に必要な資源が要求されず、全仮想化、準仮想化方式に比して小さいリソースで多数の仮想マシンを駆動することができた。あるいはソフトウェアの開発およびテスト等の目的で多数のＯＳの環境が必要な使用者側に独立したＯＳ空間を効率的に提供するための方法としても使用されてきた。
【００４１】
現在、仮想化技術は、サーバの統合、ソフトウェアの開発およびテスト、ホスティング分野において数多く使用されており、セキュリティ分野においては信頼されていないプログラムを仮想マシン内で実行して、ホストＯＳを保護したり悪性コードが隠されているかどうかをテストしたりする等、主に仮想マシン内において信頼されていないアプリケーションプログラムを実行する方式で研究が進められてきた。ところが、クライアント/サーバ基盤のサービス提供システムのための技法において、仮想マシンを利用したクライアントのアプリケーションとサーバのアプリケーションのセキュリティ技術に関する研究はまだ進められていない。また、以下に説明されるが、従来のいかなる仮想化方式もクライアント/サーバ基盤のサービス提供システムに適していない。本明細書では、従来の仮想化とは異なる新たな仮想化方式を提案する。
【００４２】
一方、過去にはパーソナルコンピュータを使用するためにはＯＳに対する知識、プログラムのインストールに関する知識、プログラムの設定に関する知識等、コンピュータに門外漢である一般人が自由にアクセスするには多少複雑な知識が必要であったし、パーソナルコンピュータは一部の専門家たちだけが自由自在に利用できる専有物であった。パーソナルコンピュータがテレビや冷蔵庫のような大衆的な生活家電製品になるためには、コンピュータの使用が現在より容易にならなければならない。テレビの場合、使用者側がリモコンを利用してチャンネルの変更さえすることができれば、所望のチャンネルを容易にかつ素早く視聴することができる。コンピューティングの環境もこのように容易に変わらなければならない。
【００４３】
コンピュータの環境を容易に普及させるために、GUIをはじめとした多様な技術が普及した。ところが、今日に至ってもプログラムのインストールと設定は一般人が簡単にアクセスしにくく、各種のウイルスや悪性プログラムは一般人のコンピュータの使用をさらに難しくしている。
【００４４】
【特許文献１】米国特許第６４９６８４７号明細書
【特許文献２】米国特許第７０９９９４８号明細書
【特許文献３】米国特許第７１１７４９５号明細書
【発明の開示】
【発明が解決しようとする課題】
【００４５】
本発明は前記のような従来の問題点を解決して、サービスの使用者側と提供者のいずれにも安全なコンピューティングの環境を提供するシステムおよび方法に関する。
【００４６】
本技術の基本構成は次のような段階に要約され得る。すなわち、第一に、使用者側が提供者にサービスの利用を要請する段階と、第二に、提供者が使用者側のシステムに独立した保護空間を自動的に生成する段階と、第三に、生成された保護空間内でのみ必要なアプリケーションプログラムを実行することにより、使用者側と提供者のいずれにも安全かつ便利なコンピューティングの環境を提供するものである。このような構成を根幹として、本発明は次のような多様な目的を追求している。
【００４７】
本発明の第１の目的は、サービス使用者側のシステムを安全に保護することである。具体的に提供者が配布したクライアントのアプリケーションは保護空間の内部でのみインストールされて実行されるため、配布されたクライアントのアプリケーションに悪性コードが存在するとしても保護空間外部のシステムや別の保護空間には感染しない。したがって使用者側は安心して提供者にサービスを要請することができ、使用者側のシステムは保護される。
【００４８】
本発明の第２の目的は、サービス提供者のシステムを安全に保護することである。具体的に使用者側のサービスの要請があると、提供者は使用者側のシステムに保護空間を強制的かつ自動的に生成し、その保護空間の内部でのみアプリケーションプログラムをインストールして実行すると共に、サーバに伝送されるパケットは、使用者側のシステム内の保護空間外部に存在する多様な脅威要素から隔離される。好ましくはサービス提供者が直接サービス使用者側のマシンに保護空間を生成するが、第三者がサービス提供者の指示により、使用者側のマシンの保護空間を生成させることもできるものの、本明細書はこのような技術的変形の例を全てサービス提供者が保護空間を生成したものと見なす。好ましくは、使用者側がクライアントのアプリケーションを操作することができないようにクライアントの個体を検証する。好ましくは、ネットワーク上におけるハッカーのインターセプト攻撃に備えて、パケットなどの送信データに対する無欠性の検証をさらに実施する。これにより提供者のシステムはハッキングから安全に保護される。
【００４９】
本発明の第３の目的は、提供者のシステムと使用者側のシステムを同時に、かつ安全に保護することである。従来のクライアントセキュリティ製品は、アンチウイルス(Anti-Virus)、アンチキーロガー(Anti-Key-logger)、PC・ファイアウォール(PC fire wall)等、クライアントシステムがハッキングされたり悪性コードに感染することを防止し、クライアントに記憶された重要な情報が流出するのを防止する。従来のサーバセキュリティ製品は、ネットワーク・ファイアウォール、アプリケーション・ファイアウォール、脆弱点スキャナーおよびソースコード点検ツール等サーバに伝送されるパケットをネットワークレベルにおいて遮断したり、サーバのアプリケーションに脆弱点が存在するかどうかを確認する方式である。
【００５０】
従来のセキュリティ製品は、クライアントのセキュリティ製品はクライアントシステムだけを保護し、サーバのセキュリティ製品はサーバシステムだけを保護するが、本発明は保護空間とクライアントの個体の検証と無欠性の検証の相互補完を通じて、クライアントシステムとサーバシステムを同時に保護することができ、知られていない形態の攻撃およびゼロデイ攻撃(Zero Day Attack)からもクライアントおよびサーバシステムを効率的に保護する。
【００５１】
本発明の第４の目的は、使用者側のシステムに保護空間を生成する方法および提供者がクライアントのアプリケーションを配布する方法において、仮想化技術を利用することである。サービスの利用に必要な少なくとも一つのアプリケーションプログラムを記憶するか、または事前インストール(pre-install)した仮想マシンイメージを配布すると、保護空間の生成とプログラムの配布を同時に安全かつ便利に達成することができる。事前インストール(pre-install)した仮想マシンイメージとは、アプリケーションがすでにインストールされていたり、インストールに必要なデータが含まれたりするイメージを意味する。
【００５２】
本発明の第５の目的は、仮想マシンのイメージを利用して、複数のアプリケーションプログラムを容易に、かつ素早く提供されるようにすることである。従来にはサービスの利用に必要なコンピューティングの環境を使用者側が直接構成しなければならなかった。使用するプログラムをインストールし、各種の設定を合わせるのに専門家的な知識が必要であった。ところが、コンピュータに関する知識がなくても誰でも手軽に自らが望むプログラムがインストールされた環境に簡単にアクセスすることができる環境が必要である。また、従来のわずらわしいプログラムの購入、インストール、設定などの過程をすべて省略し、何度かのクリック動作だけで自らが望むプログラムがすべてインストールされたコンピューティングの環境を提供することが要求される。
【００５３】
本発明はサービスの利用に必要なコンピューティングの環境を使用者側が構成するのではなく、サービス提供者が構成することができるようにし、使用者側は提供されたコンピューティングの環境をそのまま使用すれば良いため、パーソナルコンピュータやセキュリティに関する専門的な知識がなくても、テレビチャンネルを変更するように容易かつ安全に提供者のサービスを利用することができる。具体的に使用者側はソフトウェアを一つずつインストールするのではなく、サービスのためのすべてのソフトウェアおよび環境がそろった仮想マシンイメージをロードする方式で容易に、かつ素早くサービスを利用することができる。
【課題を解決するための手段】
【００５４】
本発明は前記のような目的を達成するために、サービスの使用者側と提供者が共に信頼することができるサービス提供システムを提供する。
【００５５】
本発明のある観点によると、使用者側システムには保護空間が設けられて、保護空間においてのみクライアントのアプリケーションが実行される。本明細書において、保護空間とはスパイウェアやアドウェアのような悪性コードおよびウイルスをはじめとする各種ハッカーの攻撃から遮断される空間という意味で使用される。すなわち、クライアントシステムに保護空間が生成されると、保護空間外部のハッカーの攻撃は保護空間の内部に浸透することができず、逆に保護空間の内部に浸透した攻撃は、保護空間の外部を攻撃することができない。あたかも別個のシステムであるかのような二つ以上のシステムが、一つの物理的システムに共存するようになるのである。このような保護空間を生成する技法は、仮想化技術を通じてすでにその可能性が知られている概念である。ところが、本発明においては使用者側が自らのシステムに仮想マシンをインストールしてサービスの提供を受ける準備をするのではなく、サービスの提供者が使用者側のシステムに仮想マシンを自動的に、かつ強制的にインストールするという点に特徴がある。実施形態によってはサービスの使用者側に保護空間を設けるための実行の可否の承諾を得てインストールしてもよい。
【００５６】
ところが、仮想マシン等を利用して保護空間を生成したことのみで全体のクライアント/サーバシステムが完全に保護される訳ではない。一旦、保護空間が設けられると、その内部で悪性のクライアントのアプリケーションが実行されても保護空間外部のクライアントシステムは影響を受けないため、クライアントシステムは保護されるといえる。以下詳細に説明するが、さらにクライアントの個体の検証を通じてクライアントのアプリケーションが保護され、無欠性の検証を通じて、サーバシステムまで保護され得る。そのような意味において本願で使用される保護空間は、クライアントシステム、クライアントのアプリケーションおよび/またはサーバシステムを保護するための空間と解釈されてもよい。
【００５７】
保護空間を生成する方法は、システムの資源を隔離させる方法により可能である。ハッキングツール、ワームおよびウイルスなどの悪性アプリケーション、クライアントのアプリケーションおよび一般的なアプリケーションは同一のＯＳの空間内で実行されるため、悪性のアプリケーションはクライアントのアプリケーションと一般のアプリケーションに対して攻撃を試みることができる。この時、クライアントのアプリケーションへの攻撃は、ＯＳの資源を隔離することによって遮断され得る。ＯＳの資源の隔離は、クライアントのアプリケーションをなすプロセス、レジストリ、ファイル、ネットワーク、メモリーなどのＯＳの資源に対して悪性のアプリケーションがアクセスすることを遮断することによって実現される。併せて、アンチリバースエンジニアリング(Anti-Reverse Engineering)およびデバッギング等の技法を利用して、アプリケーションの重要アルゴリズムや重要な値を把握し、データやプログラムの流れに対する操作を試みることを遮断する機能を含むこともできる。
【００５８】
ところで、本明細書においては、保護空間を生成する方法によって仮想化の技法を主に記述する。好ましくは、ＯＳレベルの仮想化方式を利用する。従来のＯＳレベルの仮想化方式は上述した通り、多数の使用者側に完全に独立したＯＳの空間を提供するサーバの仮想化を主な目的とした。ところが、本願において利用しようとするＯＳレベルの仮想化方式は、従来のＯＳレベルの仮想化とは異なり、ある使用者側が多数の仮想マシンを効率的に結合して使用するデスクトップの仮想化を主な目的とする。
【００５９】
ＯＳレベルの仮想化を適用する場合、クライアントシステムはホストＯＳとゲストＯＳに分離することができる。ホストＯＳとは、使用者側が物理的なシステムにインストールしたＯＳを意味し、ゲストＯＳとは仮想マシン内にインストールあるいは生成されたえＯＳを意味する。デスクトップの仮想化のためのＯＳレベルの仮想化を効率的に使用するためには、ホストＯＳにインストールしたアプリケーションをゲストＯＳで使用することができ、ホストＯＳとゲストＯＳに存在するデータが効率的に共有されなければならない。ただし、この場合ゲストＯＳを保護空間として信頼性を有するようにするためには、ホストＯＳの資源をゲストが使用しなければならない時に安全な資源であるのかを確認する装置が整えられなければならない。ゲストＯＳで動作するクライアントのアプリケーションが、ホストＯＳに存在するハッカーから攻撃される危険があるためである。また、ゲストＯＳで生成されたパケットが実際にホストＯＳでないゲストＯＳで生成されたものであるのか、またはネットワーク上で操作されたものでないのかを検証する装置を整えることが望ましい。
【００６０】
本発明の別のある観点によると、サービスの利用に必要な段階は以下の通りである。
【００６１】
最初に、使用者側(クライアント)が提供者(サーバ)にサービスの使用を要請する。
【００６２】
第二に、提供者は使用者側のシステムに保護空間を生成し、クライアントの保護空間に該当仮想マシンインスタンスを生成する。
【００６３】
第三に、使用者側は仮想マシン内にインストールされて実行されるクライアントのアプリケーションを介してサービスの提供を受ける。
【００６４】
ここで、使用者側は自らのシステムに仮想マシン等の保護空間が設けられるのかを認知する必要も、確認する必要もなく、単にクライアントのアプリケーションがインストールされた上で実行されることだけを確認すればよい。ところが、必要であれば仮想マシンがインストールされることを使用者側に認知させたり許諾を受けたりしても構わず、提供者システムを保護しなければならない要求があれば、使用者側には仮想マシンがインストールされるのに不便さを感じさせないようにしながら、時には仮想マシンがインストールされた事実を知らせる必要がない場合もあるはずである。
【００６５】
保護空間の生成のために、提供者はサービスの利用に必要なクライアントのアプリケーションが予めインストールされた仮想マシンイメージをクライアントに伝送することが望ましい。もちろん仮想マシンイメージのみを伝送して空いた保護空間を先に生成させ、選択的にクライアントのアプリケーションをインストールしたりインストールに必要なデータのみを含めて伝送することも可能である。
【００６６】
本願発明のある観点によると、保護空間を生成するための安全な仮想マシンシステムが必要である。ゲストＯＳで生成されたデータを信頼するために、安全なホストＯＳの資源を使用したのかを検証しようとしてクライアントの個体を検証しても良い。また、サーバに伝送されたデータがホストＯＳでないゲストＯＳで生成されたものであるか、あるいはネットワークで操作されはしなかったのかを確認する等、データを安全に送受信するための無欠性の検証を実施しても良い。
【００６７】
図４に示されている通り、サービス提供者のシステムはサーバ、サービスイメージ、及びサーバ側の無欠性の検証手段、のうちの全部または一部で構成され、サービス使用者側のシステムは仮想マシン、クライアントの個体検証手段、サービスイメージ、及びクライアント側の無欠性の検証手段、のうちの全部または一部で構成される。以下、各構成要素を具現する方法を具体的に説明する。本明細書で使用される技術用語は、本願発明の技術的範囲を限定したり制限したりする意図で使われたものではないことに注意しなければならない。
【００６８】
仮想マシンシステム
安全な仮想マシンシステムは、保護空間内にそれぞれの独立した仮想マシンインスタンスを生成することによって具現可能である。仮想マシンインスタンスは、ＯＳの分割技術を利用してホストＯＳに対して独立したゲストＯＳを生成し、該当ＯＳでシステムのブーティング（起動）過程を経て生成され、システムのシャットダウン過程を経て消滅する。
【００６９】
本明細書で使用する独立したという用語は、ホストＯＳの資源と各ゲストＯＳの資源が互いに衝突せずに、あたかも数台の物理的なマシンにそれぞれのＯＳがインストールされたのと同様に動作するようにする範囲における独立を意味する。したがって、システムの資源を効率的に利用するために、必要な場合、セキュリティ性を阻害しない範囲内でホストＯＳと各ゲストＯＳが資源を共有することができる。
【００７０】
従来の仮想化技術のうち、全仮想化(Full virtualization)方式はコンピュータを構成するすべてのハードウェア(中央処理装置、メモリー、コントローラーなど)をエミュレーションするハードウェア水準の仮想化方式であり、エミュレーションされたマシンには新たなＯＳをインストールしなければならない。これに対してＯＳの分割方式はＯＳ水準の仮想化方式であるため、新たなＯＳをインストールするのではなく、すでにインストールされているＯＳを仮想的ないくつかのＯＳに分割する方式である。
【００７１】
また、全仮想化方式によると、ホストＯＳにインストールしたプログラムをゲストＯＳで使用することができず、ゲストＯＳにインストールしたプログラムを他のゲストＯＳで使用することができない問題があるため、前記方式は技術的、管理的側面において本発明の目的を解決するのに適していない。
【００７２】
仮想マシンの実行環境
図６は本願の仮想化方式の好ましい実施例を構成図として示した図面である。独立したゲストＯＳの実行環境は、仮想カーネル、実行空間、仮想マシンデータから構成される。
【００７３】
仮想カーネルを具現する一実施例は、ホストＯＳのカーネル実行部の各構成要素を仮想化することである。カーネル実行部の構成要素には、ファイル、レジストリ、カーネルオブジェクト、プロセス、スレッド、仮想メモリー管理者、構成管理者、I/O管理者などがあり、ＯＳ別にこれらの構成要素は変わることがある。
【００７４】
一般的にアプリケーションプログラムのプロセスやデバイスドライバがファイル(File)、レジストリ(Registry)、オブジェクトの使用を必要とする場合、カーネル実行部に要請すると、カーネル実行部は該当内容を処理する。カーネル実行部の各構成要素は固有の識別子を有する。ファイルの場合、WDeviceWHarddiskVolume1WwindowsWsystem32Wnotepad.exeのようなファイル名が識別子になり、レジストリの場合、WRegistryWMachineWSoftwareのようなキー名が識別子となる。プロセスやスレッドの場合、プロセスID、スレッドIDと呼ばれる数字が識別子である。
【００７５】
カーネル実行部の各構成要素を仮想化しようとすると、これらの識別子に対する独立性を付与し、各仮想マシン別に記憶空間を割り当てれば良い。例えば、第一の仮想マシンインスタンスのファイルシステムのためにWVM1空間を割り当てて第二の仮想マシンインスタンスのファイルシステムのためにWVM2空間を割り当てる。アプリケーションプログラムのプロセスやデバイスドライバがファイルに対するアクセスを要請すると、VMカーネルのマネージャー（管理部）が該当仮想マシンのファイルシステム内のファイルであるものに変更し、これをカーネル実行部に伝達する。
【００７６】
例えばVM1内のプロセスがWDeviceWHarddiskVolume1WwindowsWsystem32Wnotepad.exeに対するアクセスを要請したのであれば、VMカーネル管理者はこれをWVM1WDeviceWHarddiskVolume1WwindowsWsystem32Wnotepad.exeに変更してカーネル実行部に伝達し、カーネル実行部はWVM1の記憶空間に該当ファイルを生成するようになる。つまり、要請されたファイル名はWDeviceWHarddiskVolume1WwindowsWsystem 32Wnotepad.exeであって同一であるが、ファイル自体は各仮想マシン別に異なるのである。レジストリやカーネルオブジェクトなど他の構成要素も同じ方法で仮想化する。
【００７７】
仮想カーネルを具現する別のある実施例は、一つのカーネル実行部の各構成要素を仮想的に何個かに分けるのではなく、カーネル実行部自体を各仮想マシン別に一つずつ生成することである。
【００７８】
一般的に、保護モードと仮想アドレスを支援するＣＰＵで動作するＯＳはユーザーモードとカーネルモードを提供するが、ユーザーモードの仮想アドレスの空間は各プロセス別に独立しているのに比して、カーネルモードの仮想アドレスの空間はすべてのプロセスにおいて共有され、グローバルである。例えば、ノートパッドのような使用者側プロセスはユーザーモードで動作するため、同じプログラムをいくつか実行することができ、各プロセスは固有の仮想メモリーの空間を有するため、同一の仮想メモリーアドレスに独立したデータを記憶することができるものの、カーネル実行部はカーネルモードで実行されることから同一の仮想メモリーアドレスにはただ一つのデータしか記憶することができず、いくつかを実行することはできない。
【００７９】
本願発明はこれを解決するために、カーネルマネージャーは物理的なメモリーとカーネル実行部との間にVMEngine Memory Managerを置く。VMEngine Memory Managerはカーネル実行部以外のカーネルモード要素の仮想メモリーの空間はグローバルに置いておき、カーネル実行部の仮想メモリーの空間は、ユーザーモードのように各仮想マシン別に独立して存在するようにすることによって同一のメモリーアドレスに互いに異なる値が記憶されるようにし、仮想マシン別に一つのカーネル実行部が生成されることを可能にする。もちろん、メモリー資源の効率的な利用のために、一部の仮想メモリーは共有することができる。
【００８０】
前記実施例のような技術を利用して、仮想マシン別に仮想カーネルを生成した後、システムのブーティングの過程を経て初めて完全なゲストＯＳ環境が準備される。ブーティングの過程は、ホストＯＳのブーティングの過程に伴う。一般的に各仮想マシンで使用されるハードウェアチェック、サブシステムロード、遅れた変更、システムプロセスの実行、サービスプロセスの実行、使用者側プロセスの実行、デバイスドライバロードの全体あるいは一部の過程が必要である。
【００８１】
遅れた変更というのは、ファイル等の資源が使用中であればこれを削除したり変更したりすることが不可能であるため、一般的にシステムの終了後、次回のブーティングの過程において資源の削除や変更を処理することを意味する。システムプロセスはＯＳの環境を提供するのに必要な核心プロセスであって、使用者側アカウントの管理、ログオン処理、セッション管理、サービス管理などを担当するプロセスである。例えばマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムではlsass.exe、winlogon.exe、smss.exeのようなプロセスである。サービスプロセスはバックグラウンドで実行されながら、他のアプリケーションプログラムが必要な機能を提供するプロセスであって、DCOM/RPCサービス、プリンタspoolerサービスなどがある。
【００８２】
システムプロセスやサービスプロセスは、仮想マシン内にすべてのプロセスを実行することもできるが、全体システムの資源を効率的に利用するためにホストＯＳや別の仮想マシンにすでに実行されているプロセスを共有することもできる。例えば、アカウント管理システムのプロセスの場合、仮想マシンごとに一つずつ実行すれば各仮想マシン別に独立したアカウントが存在するが、ホストＯＳのプロセスを共有する場合、ホストＯＳのＩＤ／パスワードアカウント情報を各ゲストのＯＳが共有するようになる。
【００８３】
システムプロセスやサービスプロセスを共有するためには、該当プロセス内に存在するすべてのグローバルのオブジェクトに対するアクセスを、共有するプロセスのオブジェクトでマッピングさせなければならない。例えば、プリンタspoolerサービスのプロセスにはプリンタ制御のための名前付きパイプ(named pipe)等が存在するが、ゲストＯＳ内のメモ帳プロセスが文書出力を要請すると基本的にゲストＯＳ内のspoolerサービスの名前付きパイプで接続を試みるのである。ところが、ゲストＯＳ内にはspoolerサービスが存在せず、ホストＯＳのものを共有するため、このような要請をホストＯＳのspoolerサービスでマッピングしなければならない。
【００８４】
デバイスドライバ等のカーネルアプリケーションプログラムも各ゲストＯＳにロードされ得る。カーネルアプリケーションプログラムの場合、カーネル実行部の場合のようにグローバルな仮想アドレス空間の問題が発生することがあり、これを解決するために必要な場合、VMカーネルマネージャー内のVMEngine Memory Managerは仮想アドレスの空間を局所化（ローカライズ）することができる。
【００８５】
使用者側プロセスの実行段階において、サービス提供者のアプリケーションプログラムや使用者側のアプリケーションプログラムがゲストＯＳ内で実行される。
【００８６】
システムのシャットダウン過程は、ホストＯＳのシャットダウン過程に伴う。使用者側プロセスの終了、サービスおよびシステムプロセスの終了、デバイスドライバのオンロード、各種資源の解除等が必要である。
【００８７】
本願の仮想化方式を利用する場合、仮想マシンイメージの容量を大幅に減らすことができる。従来の仮想化方式で仮想マシンイメージを具現する場合には、ＯＳのためのデータが必要であるため、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）の場合、ＯＳを生成するためには、現在600メガバイトないし4ギカバイト程度のデータが必要であり、Linuxの場合、数十メガバイトで数ギカバイト程度のデータが必要である。ところが、本願の仮想化方式によると、ＯＳの生成のためのデータが必要なくなる。これは、提供者が使用者側のシステムに強制的に保護空間を生成する技術を現実化する。
【００８８】
仮想マシンの構成要素
仮想マシンの構成要素は、設定マネージャー、デスクトップの環境、アプリケーションプログラムのテンプレート、使用者側データおよび臨時データを含み、これらの構成要素を組み合わせれば一つの仮想マシンが完成する。
【００８９】
設定マネージャーは仮想マシンの各種設定を管理する。設定項目は使用者側が入力したものとサービス提供者が提供したものがある。
【００９０】
デスクトップの環境は、壁紙、テーマ、ウインドウズスタイル、バックミュージック等から構成される。ある使用者側システムには同時にいくつかの仮想マシンおよびゲストＯＳが実行され得るために、デスクトップ環境はデスクトップの統合機能を提供しなければならない。デスクトップの統合は、それぞれのゲストＯＳ内に存在する開始メニュー、壁紙のアイコン等をホストＯＳのものに統合して示すものである。背景イメージ、バックミュージック、ウインドウズスタイル等は実行中であるゲストＯＳのもののうちの一つを選択しなければならない。
【００９１】
アプリケーションプログラムのテンプレートは、事前インストール(pre-installation)されたアプリケーションプログラムのイメージと標準プラットホームの提供者が管理する共有ライブラリーのイメージに構成される。アプリケーションプログラムのテンプレートには提供者のサービス利用に必要なアプリケーションプログラムがインストールされており、アプリケーションプログラムのテンプレートは使用者側が提供者にサービスの利用を要請する際に、サービスサーバから使用者側システムに伝送される。
【００９２】
従来にはアプリケーションプログラムを使用するためにインストール過程が必要であった。例えば、マイクロソフトオフィスをインストールする時、インストールＣＤでsetup.exeやautorun.exeのようなインストールファイルを実行して、オフィスのアプリケーションプログラムを使用者側のＰＣに直接インストールしなければならない。本願発明を利用すると、前記インストール過程を必要とせずにアプリケーションプログラムを使用することができる。例えば、アプリケーションプログラムのテンプレート生成用の仮想マシンにおいて従来の方法でオフィスアプリケーションプログラムをインストールすると、その結果はアプリケーションプログラムのイメージに記憶され、一般の仮想マシンではこれらのイメージをロードすると、インストール過程なしに直ちにオフィスアプリケーションプログラムを使用することができる。
【００９３】
一般的にアプリケーションプログラムが実行されるためには、別のアプリケーションプログラムや共有ライブラリーが必要である。例えば、マイクロソフト社のオフィス関連プログラムを使用するためにはインターネットエクスプローラ、ドットネットフレームワーク(.NET Framework)等が必要である。これらの共有ライブラリーを各アプリケーションプログラムのイメージに重複的にインストールする代わりに共有ライブラリーのイメージを生成し、これをアプリケーションプログラムに連結する方式を導入すると資源を効率的に利用することができる。
【００９４】
使用者側ごとに使用中である仮想マシンの環境は異なる。例えば、特定の共有ライブラリーのイメージがすでに存在するマシンもあって、そうではないマシンもあり、ホストＯＳがウインドウズＸＰの基盤であることもあるし、ウインドウズ２０００の基盤であることもあり得る。したがって、アプリケーションプログラムのテンプレート生成用仮想マシンで作ったテンプレートが多様な仮想マシンで十分に動作するためには標準プラットホームの提供者が標準的な仮想マシンの環境を提供し、アプリケーションプログラムテンプレートは標準プラットホームにおいて動作しなければならない。
【００９５】
使用者側データのイメージには使用者側が仮想マシンを介して提供者のサービスを使用する過程で、使用者側が生成したデータに各種文書ファイル、使用者側の指定ファイル、使用者側が直接インストールしたソフトウェアのファイルおよびレジストリ等が記憶される。
【００９６】
臨時データイメージには、仮想マシンの実行過程において生成されたデータとして臨時の使用が終わった後、削除されても問題ないデータが記憶される。デスクトップ環境、アプリケーションプログラムのテンプレート、使用者側のデータは別の仮想マシンでロードしたり共有したりすることができるものの、臨時データは特定の仮想マシンの実行過程で生成されたものであって共有されない。
【００９７】
図７に示された通り、アプリケーションプログラムのテンプレート、使用者側データ、臨時データは階層化されている。ファイルシステムを例に挙げると、ファイルシステムスタックにはホストＯＳのファイル、標準プラットホーム提供者内のファイル、アプリケーションプログラムのイメージ内のファイル、使用者側のデータファイル、臨時のデータファイルが積まれている。アプリケーションプログラムがc:WwindowsWsystem32Wnotepad.exeを要請すると、臨時データで該当ファイルを探し、存在しなければ使用者側データファイルで探し、存在しなければアプリケーションプログラムのデータファイルで探し、存在しなければホストＯＳのファイルで探す。レジストリ、カーネルオブジェクト等、他のカーネル構成要素も同じ方式で動作する。
【００９８】
アプリケーションプログラムのテンプレートイメージ、使用者側のデータイメージ、臨時のデータイメージには、ファイル、レジストリ、メモリー、その他のデータを記憶することができ、各イメージは一つあるいはいくつかのファイル形態で記憶されたり、物理的な記憶媒体のセクターに直接記憶されることもある。イメージの最初生成時に必要な大きさの記憶空間を予め割り当てることもでき、仮想マシンを使用しながら必要な大きさだけ動的に増加させることもできる。
【００９９】
仮想マシンイメージは、固定式ハードディスクドライブ、移動式ドライブ、ネットワークに連結されたファイル記憶サーバ等、多様な媒体に、全体あるいは一部のイメージが記憶されたりキャッシュされたりし得る。使用者側が移動式ディスクやネットワークに連結されたファイル記憶サーバをイメージの記憶場所として選択した場合、現在使用中であるシステムでない別のシステムで同一のサービスを利用する時、移動式記憶装置を連結したりファイル記憶サーバに接続したりして、使用者側のデータのイメージやアプリケーションプログラムのイメージをロードすることにより、使用者側が既存システムで利用中であった環境をそのまま再現して使用することができる。アプリケーションプログラムのイメージを利用して、アプリケーションプログラムのインストール環境を再現することができ、使用者側のデータイメージを利用して、既に作業中であった文書ファイルおよびその他のデータをそのまま利用することができる。互いに異なるシステムの間の差は、標準プラットホームの提供者が補正してくれる。
【０１００】
イメージキャッシュ機能を利用すると、全体イメージにおいて現在必要な部分のみサーバでクライアントに伝送し、伝送された部分を利用して仮想マシンを実行することができる。様々なサービス提供者が同一のアプリケーションプログラムのテンプレートを使用する場合、使用者側は他の提供者のサービス利用過程において伝送されたイメージキャッシュを利用することによって、ネットワーク伝送の効率性を高めることができる。使用者側がキャッシュされたイメージを固定式ハードディスクに記憶するのではなく、ＵＳＢドライブのような移動式記憶装置に記憶すると、他のシステムで同一のサービスを利用する際に移動式記憶装置にキャッシュされたイメージを利用して、素早くサービスを使用することができる。
【０１０１】
クライアントの個体の検証
クライアントの個体の検証は、安全なゲストＯＳの環境を提供するためのものであって、ゲストＯＳ内でロードされ得る実行ファイル、文書ファイル、客体、DLLなどの検証リストを管理するものである。従来の全仮想化技法によると、仮想マシンで生成されたゲストＯＳと既存のホストＯＳはいかなる一部の資源も共有しない完全に分離した二つのシステムであると見なされるものの、本願で利用するＯＳレベルの仮想化方式によると、ゲストＯＳがホストＯＳの資源を一部共有するため、共有されたホストＯＳの資源が安全であるかを検査するためにクライアントの個体の検証を要求するようになる。
【０１０２】
これはクライアントのアプリケーションがホストＯＳの資源を共有するということを知っている悪意の使用者側が、クライアントのアプリケーションが使用するホストＯＳの資源にアクセスしてデータを操作することにより、結果的にサーバに伝送されるパケットが操作されるようにするなどの行為を防止する。逆に、ホストＯＳには機密文書の資料や半導体の設計回路のようなセキュリティが要求されるデータが存在し得るため、ゲストＯＳがアクセスしようとするホストＯＳの個体が許容されないものであれば、クライアントの個体の検証を通じてアクセスを遮断することができる。
【０１０３】
仮想マシンの設定管理者において仮想マシンのセキュリティレベルを設定することができ、セキュリティオプションには、すべて許容、ホスト検証、全体検証がある。すべて許容の場合、ゲストＯＳにどのようなファイルであっても実行されたりロードしたりされ得る。ホスト検証の場合、ホストＯＳと共有されるファイル、レジストリなどの個体は、ゲストＯＳに使用される前に使用可能なものであるかを検証する。アクセスしようとするホストＯＳの個体が機密資料、使用者側の画面等、サービス提供者がアクセスする権限のない個体である場合、アクセスを遮断する。アクセスしようとするホストＯＳの個体が悪性コードであるか、または悪性コードに感染している場合、および信頼のリストに存在しないファイルである場合、仮想マシンの設定マネージャーのセキュリティポリシーに応じてアクセスを遮断することができる。この場合、サービスサーバは悪性コードに感染していない安全なファイルを仮想マシンに複写した後、複写されたファイルを利用して次の段階を進行させる。全体検証は、ホストと共有されるファイル、レジストリ等の個体だけでなく、ゲストＯＳに存在する個体も使用される前に検証を行うのである。
【０１０４】
検証の一実施例は、電子署名を利用するものである。ファイルの特定部分にファイル内容に対する電子署名値が添付されている場合、該当電子署名値を検証することによって信頼できるファイルであるか否かを確認することができる。ファイルの特定部分に記録するのではなく、検証リストにファイル名と電子署名を共に記録して管理することもある。
【０１０５】
検証の別のある実施例は、ハッシュ値を利用するものである。ファイルの特定部分にファイル内容に対する解示値が添付されている場合、該当解示値を同一のアルゴリズムで再計算して、一致するか否かを検証することによって信頼することができるファイルであるか否かを確認することができる。ファイルの特定部分に記録するのではなく、検証リストにファイル名と解示値を共に記録して管理することもできる。
【０１０６】
検証の別のある実施例は、ファイル名、生成日等の単純な情報を利用してチェックするものである。
【０１０７】
検証の結果、安全でないのであれば、アクセス制御規則によりアクセスを遮断するか、またはサーバで安全な資源をゲストＯＳにインストールした後、それを使用する。サーバで安全な資源をクライアントに伝送した後、ゲストＯＳでは伝送された資源を使用する。
【０１０８】
無欠性の検証
無欠性の検証は、使用者側および提供者に安全なサービス環境を提供するためのものであって、クライアント側の無欠性の検証とサーバ側の無欠性の検証が互いに連動してサーバとクライアント間の送受信データを検証する。無欠性の検証は、クライアントとサーバとの間にセキュリティトンネルを生成することによってクライアントとサーバに対する攻撃を遮断する。
【０１０９】
詳述したクライアントの個体検証のみを実施する場合、サーバに対する攻撃を防御する手段がなく、仮想マシンで実行されるサービス提供者のソフトウェアを安全に保護するためには、仮想マシン内では該当ソフトウェアだけが実行され、悪性コード等は実行されてはならない。したがって、検証リストにサービス提供者のソフトウェアの内容を記録しておいて、検証された個体のみ使用を許すべきであるが、この場合ソフトウェアがアップデートされるたびに検証リストもアップデートしなければならないため、管理するのに不便な部分がある。
【０１１０】
したがって、無欠性の検証を導入するとサーバに対する攻撃も防御し、サービス提供者のクライアントのアプリケーションプログラムも保護することができる。
【０１１１】
図5を参照して、無欠性の検証を導入した本発明の一実施例を説明する。一般的にクライアント/サーバシステムはクライアント側システム(500)とサーバ側システム(550)で構成され、クライアント側システムとサーバ側システムとの間はネットワーク(532)で連結されている。クライアント側システム(500)はクライアントアプリケーション(521)とそれを実行することができるＯＳから構成され、アプリケーションの実行空間は一般的なアプリケーション実行空間(510)と保護空間(520)に分けられる。一般的なアプリケーション実行空間(510)には一般アプリケーション(511)、ハッキングツール(512)、その他のソフトウェア(513)が実行され得、保護空間(520)の中ではクライアントアプリケーション(521)と無欠性の検証(522)を実行する。今までサーバ側システム(550)に対するハッキングは、ハッカー(533)がクライアントアプリケーション(511)を操作するか、またはハッキングツール(512)を実行して悪性パケット(531)を生成し、それを伝送してサーバ側システム(550)を攻撃する方式からなっていた。したがって、既存のサーバシステムのセキュリティ製品は、前述した通りサーバ端に位置して受信されるネットワークパケットを検査して、許容の可否を決定したりサーバアプリケーション(551)の脆弱点自体を除去する方式で動作した。
【０１１２】
一般的なアプリケーション実行空間(510)は、ハッカーが実行中であるアプリケーションを思いのままに操作することができ、領域内にどんなアプリケーションであっても実行することができるが、保護空間(520)は予め決められたクライアントアプリケーション(521)のみ実行され得るため、ハッキングツール、悪性コード、アドウェアは浸透することができず、ハッカーの攻撃からクライアントアプリケーション(521)を保護することができる。
【０１１３】
ところが、保護空間(520)内のクライアントアプリケーション(521)が生成したパケットのみサーバ側システムに伝送されることを許容し、それ以外のアプリケーションプログラム(511、512、513)が生成したネットワークパケットはすべて遮断して初めて、サーバ側システム(550)もある程度保護することができる。また、保護空間(521)内で生成された安全なネットワークパケット(530)であっても、該当パケットは多様なネットワーク伝送区間(532)を経た後、サーバ側システム(550)に伝送されるため、ハッカー(533)はこのようなネットワーク伝送区間(532)でパケットを変造したり悪性コードを挿入したりすることができる。したがって保護空間(520)内のクライアントアプリケーション(521)で生成されたパケットがネットワーク伝送区間(532)でハッカー(533)により変造されていないことを保障する無欠性の検証が必要である。
【０１１４】
無欠性の検証は、クライアント側の無欠性の検証(522)とサーバ側の無欠性の検証(540)から構成され、二つの部分が互いに作用して無欠性の有無を検証するようになる。
【０１１５】
無欠性の検証のある実施例は暗号化である。図８は無欠性の検証の望ましい実施例を示す。保護空間(520)内において実行されたクライアントアプリケーション(800)で生成されたネットワークパケットとサーバアプリケーション(850)で生成されたパケットが伝送される過程において、ハッカー(860)がパケットを操作してクライアントアプリケーション(800)およびサーバアプリケーション(850)を攻撃することを防ぐために、クライアントとサーバとの間の送受信データを暗号化する。クライアントアプリケーション(800)で生成されたネットワークパケットはクライアント側暗号化手段(810)により暗号化されて伝送され、伝送されたパケットはサーバ側の復号化手段(840)により復号化されてサーバアプリケーション(850)に伝送される。サーバアプリケーション(850)において生成されたネットワークパケットは、サーバ側の暗号化手段(830)により暗号化されて伝送され、伝送されたパケットはクライアント側の復号化手段(820)により復号化されて、クライアントアプリケーション(800)に伝送される。この場合、クライアントとサーバとの間のネットワーク区間においてハッカー(860)が伝送されるネットワークパケットを偽造、変造することが不可能である。
【０１１６】
無欠性の検証の別のある実施例は、図９に示されている通りハッシュを利用するものである。クライアントアプリケーション(900)が生成したネットワークパケットをサーバアプリケーション(930)に伝送する際に、クライアント側の無欠性情報追加モジュール(910)は伝送されるネットワークパケットを利用して、計算された無欠性の検証値をネットワークパケットに添付した後、これをサーバ側に伝送する。もしハッカー(940)が伝送過程においてパケットを偽造、変造(941)したのであれば、サーバ側の無欠性情報確認モジュール(921)でパケットを利用して計算した無欠性の検証値と、クライアント側の無欠性情報追加モジュール(910)で計算されて追加された無欠性の検証値が互いに異なるのであり、この場合、サーバ側の無欠性情報確認モジュール(921)は伝送されたネットワークパケットが偽造、変造されたものと判断して廃棄する。もし、値が同一であるならば、伝送されたパケットをサーバアプリケーション(930)に送る。
【０１１７】
サーバアプリケーション(930)においてクライアントアプリケーション(900)にパケットを伝送する際に、サーバ側の無欠性情報追加モジュール(920)は伝送されるネットワークパケットを利用して計算された無欠性の検証値をネットワークパケットに添付した後にクライアント側に伝送する。もし、ハッカー(940)が伝送過程においてパケットを偽造、変造(941)したのであれば、クライアント側の無欠性情報確認モジュール(911)でパケットを利用して計算した無欠性の検証値と、サーバ側の無欠性情報追加モジュール(920)で計算されて追加された無欠性の検証値が互いに異なるのであり、この場合、クライアント側の無欠性情報確認モジュール(911)は、伝送されたネットワークパケットが偽造、変造されたものと判断して廃棄する。もし値が同一であるならば、伝送されたパケットをクライアントアプリケーション(900)に送る。
【０１１８】
現在までのサーバアプリケーションの保安システムは、伝送されるすべてのパケットに悪意的な内容があるか否かをOSI 7階層において第7階層である(アプリケーション層)で確認しなければならないことから、かなりの計算が必要だったためにサーバシステムの性能低下をもたらしたが、本発明はこのような計算が必要ないためサーバシステムが性能低下せずにシステムを保護することができる。
【発明の効果】
【０１１９】
本願発明の目的のうちの一つであるサービス使用者側のシステム保護は、前記で記述された保護空間のインストールを通じて実現される。サービス提供者のソフトウェアが悪性コードであるとか悪性コードに感染している場合、または知られていない脆弱点攻撃用コードが隠されている場合にも、ホストＯＳが感染するのを防ぐことができる。さらに、クライアントの個体検証を実施して使用者側のシステムのさらなる保護が可能である。ゲストＯＳが、アクセスしようとするホストＯＳの個体を許容しないのであれば(例:機密文書資料)、クライアントの個体検証を通じて、アクセスを遮断することができる。
【０１２０】
本願発明の目的のうちの一つであるサービス提供者のシステム保護は、前記で記述された保護空間のインストールおよび無欠性の検証を通じて実現される。サービス提供者は使用者側システムに安全なゲストＯＳの環境を生成し、ゲストＯＳ内においてクライアントのアプリケーションを実行して、ホストＯＳに存在する悪性コード、ハッキングプログラムからクライアントアプリケーションを保護する。また、無欠性の検証を利用して安全なゲストＯＳ内で生成されたネットワークパケットのみを受け入れることによって、サーバは外部の攻撃から自らを保護することができる。さらに、クライアントの個体検証を実施して、悪意的な使用者側によるクライアントアプリケーションの操作を防止することにより、窮極的に提供者のシステムの更なる保護が可能である。
【０１２１】
本願発明の目的のうちの一つであるサービス提供者のシステムとサービス使用者側のシステムの同時保護は、前記で記述された保護空間のインストール、クライアントの個体検証および無欠性の検証を通じて実現される。これにより、本明細書が追求する最も理想的な保安システムが完成される。
【０１２２】
本願発明の目的のうちの一つであるソフトウェアの便利な配布および使用者側の容易かつ素早いソフトウェアの利用は、仮想マシンイメージの伝送を通じて実現される。個々人が各自必要なソフトウェアを直接インストールし、各種プログラムの設定を合わせる作業には熟練した知識を必要とする。本願発明は、サービス利用のためのソフトウェア環境をサービス使用者側が直接構成するのではなく、サービス提供者がサービスのために最適化された環境を構成し、サービス利用者は構成された内容をそのまま使用することができるようにする。したがって、コンピュータに習熟していない使用者側も、従来の複雑なソフトウェアのインストール過程なしにサービス提供者が伝送したアプリケーションテンプレートを利用して直ちにサービスを利用することができ、イメージキャッシュ機能と移動式ドライブやファイルサーバ記憶機能を利用して、素早く気軽にサービスを利用することができる。
【発明を実施するための最良の形態】
【０１２３】
本発明の最善の実施例によると、使用者側がサービスの利用を要請すると、提供者は使用者側のシステムに仮想マシンイメージを伝送し、伝送されたイメージは仮想マシンインスタンスを生成し、サービスイメージ内の事前にインストールされたクライアントアプリケーションが実行される。
【０１２４】
クライアントアプリケーションが仮想マシン内で実行されるため、これらのソフトウェアが悪性コードであるとか悪性コードに感染した場合でも使用者側のシステムは安全に保護され、使用者側が複雑なインストール過程なしに、容易で素早く、かつ手軽にサービスを使用することができる。
【０１２５】
特にインターネットを介した顧客サービスの環境を仮想化することが有用である。例えば、従来技術上のインターネットバンキング方式は、使用者側がインターネットバンキングを利用しようとすれば、公認認証書のアプリケーションおよび各種セキュリティプログラムをインストールしなければならないが、インストールされる各種セキュリティプログラムはハッキングから使用者側や提供者の情報を効果的に防御することができない。ところが、インターネットバンキングに必要な各種アプリケーションが予めインストールされた仮想マシンを利用する場合、使用者側は提供者のサービスを簡単かつ素早く利用することができ、ハッキングからシステムを安全に保護することができる。インターネットバンキングだけでなくインターネットショッピング、インターネット株式取引きなど大部分のインターネットを利用した顧客サービスに同じ方式で適用することができる。
【０１２６】
本発明のある実施例は、前記の最善の実施例にクライアントの個体の検証をさらに実施する。クライアントの個体の検証を実施することで安全なゲストＯＳの環境を生成することができ、ゲストＯＳ内のプロセスがホストＯＳの重要資源にアクセスするのを遮断することができ、その逆も可能である。また、ホストＯＳにインストールされた悪性コードやハッキングプログラムその他のハッカーの操作からクライアントアプリケーションを安全に保護することができる。
【０１２７】
本発明の別の実施例は、前記の実施例に無欠性の検証をさらに実施する。無欠性の検証を実施してサーバとクライアントに対するネットワーク上における攻撃を遮断することができ、最も安全なシステムを提供することができる。無欠性の検証を通じて、サーバはただ保護空間内部で生成された後、操作されていないデータのみが受信される。
【０１２８】
本発明のまた別の実施例によると、使用者側が要請した複数のプログラムが予めインストールされた仮想マシンイメージが提供者から使用者側のシステムに伝送される。従来にはソフトウェアの配布は、ソフトウェア製作会社や流通会社がオンライン、オフラインでソフトウェアを販売すると、購買者はインストールＣＤの郵便配達、電子ファイルのダウンロード等の形態でソフトウェアの伝達を受けた後、自らのＰＣに直接インストールして使用した。ソフトウェアの販売者が仮想マシンイメージの形態でソフトウェアを配布したり、必要なソフトウェア群を一つの仮想マシンに入れて標準仮想マシンの形態で配布したりする場合、コンピュータを充分に知らない使用者側もＰＣを一般家電製品のように簡単かつ素早く使用することができる。使用者側の要請は、少なくとも一つのインストールされるプログラムの種類および各プログラムの所定の設定事項を予め決定することを含む。使用者側が要請した少なくとも一つのプログラムおよび各設定事項は、提供者が予め仮想マシンのイメージにインストールしておき、使用者側の要請がある時にこれを使用者側のシステムに伝送する。
【０１２９】
使用者側の要請に伴う各使用者側のオーダーメード式の仮想マシンイメージは、サーバに別途に記憶しておくことができる。したがって、使用者側がシステムの破壊やＯＳの故障が発生したためにプログラムを再インストールしなければならない時に、記憶しておいた仮想マシンのイメージをサーバから再伝送を受けることによりシステムの復旧を迅速になすことが可能である。
【０１３０】
本発明のまた別の実施例によると、本システムを企業内のイントラネットや企業外のエキストラネットの環境を利用して、企業内の業務環境を仮想化することである。この場合、使用者側は企業の役職員、協力業者などの外部の業務上の人であってもよく、提供者は企業内のＩＴ担当者である。使用者側は従来の場合、業務に必要なソフトウェアを求めて個別にインストールした上で業務環境を構築しなければならなかったが、本システムを利用すると、提供者が生成しておいた業務用仮想マシンを介して、予めセッティングされた業務環境を容易に利用することができる。提供者は社内で配布するアプリケーションに対するバージョンの管理、維持補修等がしやすくなり、これによって企業のＩＴの管理費用が節減される。また、業務空間を仮想化する場合、生成された業務資料が仮想マシン内にしか存在しないため、機密資料の流出も防止することができる。また、出張、外勤時に必要に応じてインターネットカフェ、ホテルなどで共用ＰＣを利用する場合、仮想マシンイメージを利用して同一の業務環境を直ちに再現することができ、業務完了後、仮想マシンイメージをイメージサーバに記憶し、共用ＰＣにおいて削除すれば作業していたすべての内容が除去されるため、他の使用者側に企業資料が流出することも防止することができ、ＰＣにハッキングツールがインストールされている場合も仮想マシン内は安全であるため安心して業務を行うことができる。
【０１３１】
与えられた本発明の原理に対する説明に、数多くの変化および変形が考案されるものと理解される。よって、後記される特許請求の範囲は本発明の本質および範囲から外れない、そのようなすべての変化および変形を含むことを意図とする。
【産業上の利用可能性】
【０１３２】
本発明はインターネット環境において、サーバクライアントの形態で動作するホームショッピングやホームバンキングのような各種電子商取引、企業や官公署の文書やその他のデータのセキュリティ製品、各種ソフトウェアの配布等、多様な分野において適用され得る。
【図面の簡単な説明】
【０１３３】
【図１】従来のネットワーク・ファイアウォールの動作を概略的に示す図面である。
【図２】従来のウェブアプリケーション・ファイアウォールの動作を概略的に示す図面である。
【図３】従来の脆弱点スキャナーおよびソースコード点検ツールを使用して、アプリケーションを開発する過程を概略的に示す図面である。
【図４】本発明のサーバシステムとクライアントシステムの好ましい実施例を示す図面である。
【図５】本発明におけるシステムの無欠性の検証の好ましい実施例を示す図面である。
【図６】本願におけるＯＳレベルの仮想化方式の好ましい実施例を示す図面である。
【図７】本願の好ましい実施例に伴う階層化されたデータを示す図面である。
【図８】本発明の無欠性の検証を具現する好ましい実施例を示す図面である。
【図９】本発明の無欠性の検証を具現するまた別の好ましい実施例を示す図面である。
【図１】
2009537892.tif 000003
【図２】
2009537892.tif 000004
【図３】
2009537892.tif 000005
【図４】
2009537892.tif 000006
【図５】
2009537892.tif 000007
【図６】
2009537892.tif 000008
【図７】
2009537892.tif 000009
【図８】
2009537892.tif 000010
【図９】
2009537892.tif 000011
【手続補正書】
【提出日】平成20年3月12日(2008.3.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータネットワークに連結された少なくとも一つのサーバコンピュータによって実行され、少なくとも一つのクライアントに独立して保護されたコンピューティング環境を提供する方法において、
前記コンピューティング環境の生成のためのクライアントの要請を受信する段階、および、
前記要請に応答して、ネットワークを介して前記クライアントのシステムに保護空間を生成する段階を含み、
前記保護空間は前記保護空間の外部と独立していることを特徴とするコンピューティング環境の提供方法。
【請求項２】
請求項１において、
前記クライアントの要請はサーバにより提供されるサービスの要請を含み、
前記方法は、
サーバによって提供されるサービスのためのアプリケーションを前記保護空間にのみインストールする段階をさらに含むことを特徴とするコンピューティング環境の提供方法。
【請求項３】
請求項１または請求項２において、
前記保護空間は、サーバからクライアントに仮想マシンを生成するためのデータを伝送することによって生成される仮想マシンにより形成されることを特徴とするコンピューティング環境の提供方法。
【請求項４】
請求項３において、
前記仮想マシンを生成するためのデータは、前記クライアントにサービスを提供するのに必要なアプリケーションのうちの全部または一部を含むことを特徴とするコンピューティング環境の提供方法。
【請求項５】
請求項３において、
前記保護空間はＯＳを仮想化して生成され、
これにより前記クライアントのシステムはホストＯＳとゲストＯＳに分離され、前記ゲストＯＳが保護空間を形成することを特徴とするコンピューティング環境の提供方法。
【請求項６】
請求項５において、
前記ホストＯＳの個体がアクセス可能であるか否かを検証する段階をさらに含み、
可能な場合,前記ホストＯＳの個体は前記ゲストＯＳで利用可能なことを特徴とするコンピューティング環境の提供方法。
【請求項７】
請求項５において、
前記ホストＯＳの資源が安全なものであるか否かを検証し、
安全な場合、前記ホストＯＳの資源は前記ゲストＯＳと共有されることを特徴とするコンピューティング環境の提供方法。
【請求項８】
請求項１において、
前記サーバは前記保護空間で生成されたパケットのみを受信することを特徴とするコンピューティング環境の提供方法。
【請求項９】
請求項１または請求項８において、
前記サーバと前記クライアントの間で送受信されるデータの無欠性を検証する段階をさらに含むことを特徴とするコンピューティング環境の提供方法。
【請求項１０】
請求項９において、
前記データの無欠性を検証する段階は、前記サーバと前記クライアントとのうちの一方の側でデータを暗号化し、他方の側でデータを復号化することによってなることを特徴とするコンピューティング環境の提供方法。
【請求項１１】
請求項９において、
前記データの無欠性を検証する段階は、前記サーバと前記クライアントとのうちの一方の側でデータに解示値を付加し、他方の側で受信されたデータに付加された解示値を確認することによってなることを特徴とするコンピューティング環境の提供方法。
【請求項１２】
請求項１または請求項２において、
前記保護空間は、ＯＳの資源を隔離することによって生成されることを特徴とするコンピューティング環境の提供方法。
【請求項１３】
請求項１２において、
前記ＯＳの資源を隔離することは、保護空間の中で実行されるプロセスがアクセスすることができない資源に対するアクセスを遮断し、保護空間の外で実行されるプロセスが保護空間の中で実行されるプロセスの資源にアクセスすることを遮断することを特徴とするコンピューティング環境の提供方法。
【請求項１４】
請求項１３において、
前記資源に対するアクセスはメモリー、ファイル、ディレクトリ、レジストリ、ハンドル、プロセス、およびネットワークのうちの全部または一部に対するアクセスであることを特徴とするコンピューティング環境の提供方法。
【請求項１５】
コンピュータネットワークを介して複数のクライアントと通信可能であり、前記クライアントに独立して保護されたコンピューティング環境を提供するサーバにおいて、
前記クライアントのシステム内にコンピューティング環境を生成するためのクライアントの要請を受信する手段、および、
前記要請に応答して、前記コンピュータネットワークを介して前記クライアントに保護空間を生成するためのデータを伝送する手段を含み、
前記保護空間は前記保護空間の外部と独立していることを特徴とするコンピューティング環境の提供サーバ。
【請求項１６】
請求項１５において、
前記要請はサーバにより提供されるサービスのための要請を含み、
前記サーバは前記保護空間内部にのみ前記サービスのためのアプリケーションをインストールする手段をさらに含むことを特徴とするコンピューティング環境の提供サーバ。
【請求項１７】
請求項１５または請求項１６において、
前記保護空間はＯＳを仮想化することによって生成され、
これにより前記クライアントシステムは、ホストＯＳとゲストＯＳに分離され、前記ゲストＯＳは前記保護空間を形成することを特徴とするコンピューティング環境の提供サーバ。
【請求項１８】
搬送波によって具現されるコンピュータデータ信号において、
前記搬送波はコンピュータネットワークを介して、サーバからクライアントに向かい、
コンピューティング環境生成のためのクライアントの要請に応答する第１ソースコードセグメント、および、
前記クライアントに保護空間を生成する第２ソースコードセグメントを含み、前記保護空間は保護空間の外部と独立していることを特徴とするコンピュータデータ信号。
【請求項１９】
請求項１８において、
前記要請はサーバによって提供されるサービスに対する要請を含み、
前記データ信号は、前記保護空間でのみ前記サービスのためのアプリケーションをインストールするための第３ソース コードセグメントをさらに含むことを特徴とするコンピュータデータ信号。
【請求項２０】
請求項１８または請求項１９において、
前記第２ソースコードセグメントはクライアントのＯＳを仮想化するコードを含み、
これにより、前記クライアントのシステムはホストＯＳとゲストＯＳに分離され、前記ゲストＯＳが前記保護空間を形成することを特徴とするコンピュータ データ信号。
【国際調査報告】
2009537892.tif 000012
2009537892.tif 000013
2009537892.tif 000014