(57)【特許請求の範囲】
【請求項１】
実行中のプログラムの情報を保持するプログラム管理部と、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うデータ送受信部とを備えたクライアント装置において、
前記実行中のプログラムは、前記他プログラムが行う通信要求を許可または拒否する処理を行うサンドボックス内で動作し、
前記サンドボックスは、通信要求元の他プログラムが、自サンドボックス内で実行中のプログラムと同じ組織に属するプログラムであることを認証する相互認証手段を備え、
前記相互認証手段は、通信要求元の他プログラムが属する他のサンドボックスとの間でサンドボックスの正当性を認証した後、当該通信要求元の他プログラムが同一のサーバ装置からダウンロードされたプログラムまたは同じ組織によって電子署名されたプログラムであるかの認証を行う手段を備える、
ことを特徴とするクライアント装置。
【請求項２】
前記クライアント装置は、複数のクライアント装置がプログラムをマルチキャストでダウンロードするマルチキャスト網におけるクライアント装置である
請求項１記載のクライアント装置。
【請求項３】
実行中のプログラムの情報を保持し、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うクライアント装置が実行する通信方法において、
前記実行中のプログラムは、前記他プログラムが行う通信要求を許可または拒否する処理を行うサンドボックス内で動作し、
前記サンドボックスが、通信要求元の他プログラムが、自サンドボックス内で実行中のプログラムと同じ組織に属するプログラムであることを認証する相互認証ステップを実行し、
前記相互認証ステップは、通信要求元の他プログラムが属する他のサンドボックスとの間でサンドボックスの正当性を認証した後、当該通信要求元の他プログラムが同一のサーバ装置からダウンロードされたプログラムまたは同じ組織によって電子署名されたプログラムであるかの認証を行う、
ことを特徴とする通信方法。
【請求項４】
複数のクライアント装置がプログラムをマルチキャストでダウンロードするマルチキャスト網におけるクライアント装置の通信方法である
請求項３記載の通信方法。
【請求項５】
コンピュータ装置にインストールすることにより、そのコンピュータ装置に、実行中のプログラムの情報を保持するプログラム管理機能と、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うデータ送受信機能とを備えたクライアント装置の機能に相応する機能を実現させるコンピュータプログラムにおいて、
前記実行中のプログラムは、前記他プログラムが行う通信要求を許可または拒否する処理を行うサンドボックス内で動作するものであって、
前記サンドボックスに、通信要求元の他プログラムが、自サンドボックス内で実行中のプログラムと同じ組織に属するプログラムであることを認証する相互認証機能を実現させ、
前記相互認証手段に、通信要求元の他プログラムが属する他のサンドボックスとの間でサンドボックスの正当性を認証した後、当該通信要求元の他プログラムが同一のサーバ装置からダウンロードされたプログラムまたは同じ組織によって電子署名されたプログラムであるかの認証を行う機能を実現させる、
ことを特徴とするコンピュータプログラム。
【請求項６】
複数のクライアント装置がプログラムをマルチキャストでダウンロードするマルチキャスト網のクライアント装置の機能を実現させる
請求項５記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置に関し、クライアント装置が保持するプログラム間での通信に利用する。
【背景技術】
【０００２】
近年のインターネットの普及に伴い、ＷＷＷ(World Wide Web)のような分散システムが広く利用されている。それに伴い、単純にサーバ装置に保存された文書をダウンロードして表示するだけではなく、サーバ装置からプログラムをダウンロードしてクライアント装置で実行する形態も普及している。
【０００３】
これには、例えばＷｅｂブラウザ内でＪａｖａ（登録商標）プログラムを実行するＪａｖａ  Ａｐｐｌｅｔや、Ｗｅｂブラウザ内でスクリプトを実行するＪａｖａ  Ｓｃｒｉｐｔ、またＦｌａｓｈのようなプラグインがある。
【０００４】
これらのダウンロードしたプログラムは悪意を持たないことが保証できない。そのため、プログラムを実行する環境で、その動作を制限している。前述の例の場合は、プログラムからアクセスできるファイルを制限したり、通信できる相手を、プログラムをダウンロードしたサーバ装置に限定したりしている。
【０００５】
ここで、通信できる相手を、プログラムをダウンロードしたサーバ装置に限定することは、プログラムを実行する際の大きな制約となる。この制約を緩和する従来のシステムの一例が特許文献１に記載されている。この従来のシステムは、サーバ装置内にリダイレクタと呼ばれる部分を持ち、次のように動作する。
【０００６】
すなわち、クライアント装置が任意の対象に対して通信を行いたい場合は、一度、サーバ装置内で動作しているリダイレクタに接続し、リダイレクタがクライアント装置の代わりに通信を行う。つまり、通信はリダイレクタを仲介者として経由することで行われる。
【０００７】
【特許文献１】特許第３９６６４８７号
【特許文献２】特開２００５−１００４４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した技術における第一の問題点は、リダイレクタを経由することが、サーバ装置の負荷になり、また通信遅延の原因になるということである。その理由は、必ずサーバ装置上で動作しているリダイレクタを経由して通信する必要があるためである。
【０００９】
第二の問題点は、複数のクライアント装置に同じデータを配布するマルチキャスト通信が効率良く実現できないということである。その理由は、必ずサーバ装置を経由して通信を行うため、サーバ装置にデータ配布のための負荷が集中するためである。
【００１０】
本発明は、このような課題を解決するために行われたものであって、ダウンロードしたプログラム間で、セキュリティを保ちながら、サーバ装置を介さず直接通信することができ、また、ダウンロードしたプログラム間で、セキュリティを保ちながら、データを配布しあうことで、サーバ装置に負荷をかけずに、マルチキャスト通信を効率よく実現することができるクライアント装置および通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、実行中のプログラムの情報を保持するプログラム管理部と、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うデータ送受信部とを備えたクライアント装置において、通信要求元の他プログラムが、自装置が実行中のプログラムと同じ組織の管理下にあることを確認する相互認証手段を備えたことを特徴とする。
【００１３】
また、本発明を通信方法としての観点から観ると、本発明は、実行中のプログラムの情報を保持し、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うクライアント装置が実行する通信方法において、相互認証手段が、通信要求元の他プログラムが自装置が実行中のプログラムと同じ組織の管理下にあることを確認することを特徴とする。
【００１４】
また、本発明をコンピュータプログラムとしての観点から観ると、本発明は、コンピュータ装置にインストールすることにより、そのコンピュータ装置に、実行中のプログラムの情報を保持するプログラム管理機能と、他のクライアント装置内の他プログラムからの通信要求の捕捉を行うデータ送受信機能とを備えたクライアント装置の機能に相応する機能を実現させるコンピュータプログラムにおいて、通信要求元の他プログラムが、自装置が実行中のプログラムと同じ組織の管理下にあることを確認する相互認証機能を実現させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ダウンロードしたプログラム間で、セキュリティを保ちながら、サーバ装置を介さず直接通信することができ、また、ダウンロードしたプログラム間で、セキュリティを保ちながら、データを配布しあうことで、サーバ装置に負荷をかけずに、マルチキャスト通信を効率良く実現することができる。
【発明を実施するための最良の形態】
【００１７】
本発明の実施形態は、ネットワークからダウンロードした悪意のある可能性を含むプログラム間でも安全に直接通信を行うことができる。
【００１８】
本発明の一実施形態に係る通信システムは、クライアント装置にプログラムの実行開始および実行中のプログラム情報の保持を行うプログラム管理部と、サンドボックスの中で動作するプログラムと、サンドボックス内の通信管理部と、マルチキャスト管理部とを備え、サーバ装置にマルチキャスト網構造管理部を備える。
【００１９】
ここで、サンドボックスとは、プログラムが行う通信要求を許可または拒否する処理を行う手段である。
【００２０】
プログラムが他のクライアント装置と通信しようとする際に、通信管理部が、相手側クライアント装置も同じ組織の管理下にあるプログラムを実行しているかどうかを確認し、そうである場合のみ通信を許可する。このように動作することで、不正アクセスを排除した上で、クライアント装置間の直接通信を実現する。
【００２１】
また、サーバ装置のマルチキャスト網構造管理部が、各クライアント装置で構成されるマルチキャスト網の構造を把握し、クライアント装置に対し、マルチキャスト通信をどのクライアント装置に転送すればよいかを指定する。クライアント装置の通信管理部はマルチキャスト通信を受け取ると、指定された他のクライアント装置に通信を転送する。ここで、クライアント装置間の通信は、先ほどと同様に、同じ組織の管理下にあるプログラムを実行しているかどうかを確認し、そうである場合のみ通信を許可する。
【００２２】
以上のように動作することにより本発明の実施形態における目的を達成することができる。
【００２３】
なお、特許文献２には「プログラムは出所由来を表す公開鍵および秘密鍵を含み、プログラム間の相互認証が成功し、公開鍵が一致した場合にのみプログラム間の通信を許可する」という提案が開示されているが、この提案はＰＯＳ(Point of Sales)と携帯電話装置との間のような距離的に近い場所にあり、特定の機器間の通信を想定しており、その効果は「情報漏洩が行われない」というところにある。
【００２４】
これに対し、本発明は、インターネット等のネットワークを介して任意の機器に対して通信を行おうとする機器群が対象であり、その上で動作するプログラムに悪意があり、システムとは無関係の機器に対してセキュリティホールを突くような不正アクセスを行う可能性がある場合に、これを回避する効果がある。
【００２５】
すなわち、特許文献２の提案が「特定の機器間の通信において、情報漏洩が行われない」ことが効果であるのに対し、本発明では「ネットワークを介して任意の機器間で行われる通信において、セキュリティホールを突くような、不正アクセスがプログラムから行われることを回避する」ことが効果であり、この二者間には明らかな相違がある。
【００２６】
（発明の効果）
第一の効果は、ダウンロードした悪意があるかも知れないプログラム間で、セキュリティを保ちながら、サーバを介さず直接通信できるシステムを提供できることにある。
【００２７】
その理由は、通信相手のプログラムを確認し、通信相手が同じ組織の管理下にあるプログラムである場合に限ることで、不正アクセスができないようにするためである。
【００２８】
例えば、ボットやウィルスのように、他の機器の脆弱性を突いて乗っ取ろうとする不正アクセスを考えた場合に、通信可能な相手が同じ組織の管理下にあるプログラムのみであれば、乗っ取ろうとする試みができる対象が自分の管理下にあるプログラムだけに限定されるため、結果的に乗っ取りという行為が成立しないので、不正アクセスは回避される。
【００２９】
第二の効果は、ダウンロードした悪意があるかも知れないプログラム間で、セキュリティを保ちながら、マルチキャスト通信を提供できることにある。
【００３０】
その理由は、通信相手が同じ組織の管理下にあるプログラムであることを確認したプログラム間でマルチキャリア網を構築し、不正アクセスを行わないようにした上でマルチキャスト通信を行うためである。
【００３１】
以上のようにマルチキャスト通信を実現することができる。このように実現することで、プログラム自身はマルチキャスト網の構造やその管理を意識する必要はない、という利点がある。
【００３２】
（本発明の実施形態）
次に、本発明の実施形態について図面を参照して説明する。
【００３３】
図１を参照すると、本発明の実施形態は、マルチキャスト網の管理およびプログラムを配布するサーバ装置１０１と、クライアント装置１０６とから構成される。クライアント装置１０６は、さらに、プログラム管理部１０７、サンドボックス１１２、マルチキャスト管理部１０８から構成される。
【００３４】
サンドボックス１１２は、その内部で動作するプログラム１１７と、通信管理部１１３とから構成される。通信管理部１１３は、サンドボックス相互認証部１１４、データ暗号化・変換部１１５、データ送受信部１１６から構成される。マルチキャスト管理部１０８は、マルチキャスト網参加受付部１０９、マルチキャスト通信先管理部１１０、生死データ送出部１１１から構成される。
【００３５】
サーバ装置１０１は、マッチング処理部１０２、生死監視部１０３、マルチキャスト網構造管理部１０４、プログラム配布部１０５から構成される。
【００３６】
これらは次のように動作する。
【００３７】
対象となるプログラム１１７は、プログラム配布部１０５を用いてクライアント装置１０６に配布される。プログラム１１７はサンドボックス１１２内で実行することで、その動作を制限する。
【００３８】
まず、クライアント装置１０６間の直接通信について説明する。従来、プログラムがダウンロードしたサーバ装置１０１に対してしか通信を許可しなかったのは、悪意のあるプログラムが、ネットワークを介して他のＰＣ等に不正アクセスを行う可能性があるためである。
【００３９】
そこで、クライアント装置１０６が他のクライアント装置１０６に対して通信を行う際は、通信相手が同じ組織の管理下にあるプログラム（典型的には同じプログラム）１１７である場合に限ることで、不正アクセスができないようにする。
【００４０】
これを実現するため、サンドボックス１１２下で動作しているプログラム１１７が通信を行う際は、まずその要求を通信管理部１１３で捕捉する。そして、通信相手先のサンドボックス１１２に対し、同じ組織の管理下にあるプログラム１１７が動作中であるかどうか確認する。確認後、サンドボックス１１２間で通信路を確立し、要求された通信をその通信路を通じて行う。
【００４１】
次に、マルチキャストの実現について説明する。
【００４２】
サーバ装置１０１に負荷をかけずに多数のクライアント装置１０６に対して同じデータを送信するため、クライアント装置１０６同士でネットワークを構成する。ネットワークのトポロジとしては、例えば木構造が考えられる。クライアント装置１０６が、最初にマルチキャスト網に参加する際、以下のように動作する。
【００４３】
プログラム１１７は、マルチキャスト網を管理するサーバ装置１０１に接続し、参加を要求する。この際、サーバ装置１０１がプログラム１１７をダウンロードしたものと同じである場合は、認証不要で通信可能とできる。そうでない場合は、クライアント装置１０６間の直接通信の場合と同様に、サンドボックス１１２間で認証を行う。
【００４４】
サーバ装置１０１は、アプリケーションに依存する何らかのマッチング処理を行う。アプリケーションとしては、複数人が参加するテレビ会議やゲームなどが考えられる。サーバ装置１０１は、参加すべきマルチキャスト網のＩＤをプログラムに返す。
【００４５】
プログラム１１７は、このＩＤをマルチキャスト網参加受付部１０９に渡し、マルチキャスト網への参加を要求する。マルチキャスト網参加受付部１０９は、サーバ装置１０１のマルチキャスト網構造管理部１０４に依頼し、参加を要求する。マルチキャスト網構造管理部１０４は、現在のマルチキャスト網の構造から、新たにクライアント装置１０６を参加させるのに適切な場所を選ぶ。そして、網の変化に伴って、既に参加しているクライアント装置１０６に対し、マルチキャストデータの転送要求を送る。この様子を図２に示す。
【００４６】
図２の場合は、木構造の右下に新たにクライアント装置が参加している。そして、新たに参加したクライアント装置の上位のクライアント装置に対し、マルチキャストデータが到着した際は、新たに参加したクライアント装置に対してデータを転送するように依頼する。
【００４７】
プログラム１１７がデータをマルチキャストする際は、例えば図２のような木構造の場合は、木の根に当たるクライアント装置に対してマルチキャストデータを送る。データを受け取ったクライアント装置は、その下位にあるクライアント装置に対してデータを転送する。この際、クライアント装置間の直接通信の場合と同様に、サンドボックス１１２間での認証が行われる。
【００４８】
サーバ装置１０１は、クライアント装置１０６の生死を監視し、離脱するクライアント装置１０６があった場合は、マルチキャスト網の再構成を行う。
【００４９】
ここで「クライアント装置１０６の生死」とは、クライアント装置１０６がマルチキャスト網に参加している状態を「生」と表現し、クライアント装置１０６がマルチキャスト網から離脱している状態を「死」と表現したものである。
【００５０】
次に、図３から図９のフローチャートを参照して本実施形態の全体の動作について説明する。まず、図３でプログラム１１７のダウンロードと実行について説明する。まずステップ３０１で、プログラム管理部１０７が、サーバ装置１０１のプログラム配布部１０５よりプログラムをダウンロードする。ここで、プログラム管理部１０７は、このプログラム１１７がどのサーバ装置１０１からダウンロードしたかを記録しておく。そして、ステップ３０２でプログラム管理部１０７はプログラム１１７をサンドボックス１１２内で実行する。プログラム管理部１０７は、どのプログラムが実行中であるかを把握しておく。この情報は後で利用する。
【００５１】
次に、クライアント間の直接通信について説明する。まず、図４のステップ４０１でプログラム１１７が通信管理部１１３に対し、通信の開始を依頼する。次にステップ４０２で、その内容として、接続先について確認する。ステップ４０３で、その接続先が既に接続済みの通信相手かどうかを確認する。もし接続済みでなければ（ステップ４０３のＮｏ）、ステップ４０４に進み、サンドボックス１１２間の認証を行う。このステップについては図５で詳しく説明する。
【００５２】
そして、ステップ４０５で通信可能な相手かどうかを確認し、そうでなければ（ステップ４０５のＮｏ）、ステップ４０６に進み、プログラム１１７にエラーを返す。通信可能な相手であれば（ステップ４０５のＹｅｓ）、ステップ４０７に進み、相手側サンドボックス１１２との間に通信路を確立する。この通信路は、以降そのまま保持するものとする。そして、ステップ４０３で既に接続済みの通信相手であった場合（ステップ４０３のＹｅｓ）と共に、ステップ４０８に進む。ここでは、通信内容を暗号化したり、後述するマルチキャスト通信のために付加情報を加えるなどの変換を行う。そして、ステップ４０９において、確立済みの通信路を用いてその内容を送信する。
【００５３】
受信側はステップ４１０でサンドボックス１１２間の認証受付を行う。ステップ４１１で通信可能な相手かどうかを判断し、そうでなければ（ステップ４１１のＮｏ）、ステップ４１２に進み通信を拒否する。通信可能な相手であれば（ステップ４１１のＹｅｓ）、ステップ４１３で通信路を確立する。そして、ステップ４１４で確立済みの通信路でデータを受信する。既に通信路が確立済みであった場合は、このステップ４１４からスタートする。そして、ステップ４１５において、ステップ４０８で行った通信内容の暗号化および変換を復号する。そして、ステップ４１６で、その内容をプログラム１１７に転送する。
【００５４】
確立された通信路は、プログラム１１７の終了等で破棄される。この場合は、それを認識し、再度同じクライアント装置１０６に通信する場合でも、ステップ４０３からステップ４０４に進み、サンドボックス１１２間の認証および通信路の確立を行う。
【００５５】
次に、ステップ４０４の内容について、図５を用いて詳しく説明する。まずステップ５０１でサンドボックス１１２間の認証を開始する。次のステップ５０２では、サンドボックス１１２自身の正当性をお互い確認する。これはデータ受信側が、偽物のサンドボックス１１２から悪意のあるデータを受信しないようにし、また、送信側が偽物のサンドボックス１１２に対して情報を漏洩させないようにするためである。
【００５６】
お互いが正規のサンドボックス１１２であることを確認するためには、サンドボックス１１２内に、それを確認する鍵データを埋め込んでおき、チャレンジレスポンス法など方法を用いることで実現できる。
【００５７】
次に、ステップ５０３でお互いが実行中のプログラム１１７の情報を交換する。これには、ステップ３０２でプログラム管理部１０７に保存しておいた情報を利用する。そして、ステップ５０４でこの情報を用いて、現在お互いのサンドボックス１１２内で実行中のプログラム１１７が、同じ組織の管理下にあるプログラムであることを確認する。もし、そうであれば（ステップ５０４のＹｅｓ）、通信可能な相手と判断し、ステップ５０５に進む。そうでなければ（ステップ５０４のＮｏ）、ステップ５０６に進み、通信可能な相手ではないと判断する。
【００５８】
ここで、プログラム１１７が同じ組織の管理下にあることを確認するには、単純には同じサーバ装置１０１からダウンロードしたプログラムであることを確認すればよい。これには、プログラム管理部１０７がプログラム１１７をダウンロードしたサーバ装置１０１を記録しておき、ステップ５０４ではそのサーバ名が同じであるかどうかを確認すればよい。
【００５９】
あるいは、別の方法として、プログラム１１７に電子署名を添付する方法も考えられる。すなわち、同じ組織によって署名されたプログラムであることが確認できれば、その通信相手のプログラムが同じ組織の管理下にあることが保証できる。この場合には、プログラム管理部１０７が電子署名を確認し、署名した組織の名前を抽出する。そして、ステップ５０４ではその組織名を確認する。この場合に、プログラム１１７を配布するサーバ装置１０１は、マルチキャスト網を管理するサーバ装置１０１と別でもよい。
【００６０】
なお、不正アクセスを回避するためだけであれば、ステップ５０２「サンドボックス自身の正当性を確認」の処理は省略可能である。例えば、サンドボックスＸ内のプログラムＡが、別のサンドボックスＹ内のプログラムＢへの通信を要求したときに、サンドボックスＸは、サンドボックスＹに「プログラムＢがプログラムＡと同じ組織の管理下にあるものかどうか」を尋ねる。もし、同じであれば、サンドボックスＸは、プログラムＡの通信要求を許可し、パケットを送出する。
【００６１】
ここで、たとえサンドボックスＹが正当なものでないとしても、サンドボックスＸがプログラムＡからのパケット送出を許可して問題はない。これによる影響は、虚偽を行ったサンドボックスＹ内のプログラムＢがプログラムＡからの攻撃を受けるだけであるが、そのようなことは起こり得ない。
【００６２】
なぜならば、もし、サンドボックスＹがプログラムＢに対して攻撃したいのであれば、プログラムＡに攻撃させる必要はなく、サンドボックスＹ自身で攻撃可能だからである。
【００６３】
一方、ステップ５０３を省略すると、別の組織の管理下にあるプログラムに対して通信要求が可能となり、脆弱性を探してそのプログラムを乗っ取るなどの攻撃が可能となるため、ステップ５０３は省略不可である。
【００６４】
次に、マルチキャストの実現について説明する。まず図６でクライアントがマルチキャスト網に新規に参加する際の手順を説明する。まず、ステップ６０１で、プログラムがマルチキャスト網への参加をサーバ装置１０１のマッチング処理部１０２に対して行う。これは、アプリケーションレベルの要求であり、マッチング処理部１０２は一般にはアプリケーションを配布する組織が用意する。例えば、ビデオ会議アプリケーションで、会議への参加を要求したり、オンラインゲームアプリケーションで、パーティへの参加を要求したりなどが考えられる。認証については、アプリケーションレベルで行われる。
【００６５】
また、このステップ６０１ではクライアント装置１０６からサーバ装置１０１への通信が行われている。この通信は、プログラム１１７をダウンロードしたサーバ装置１０１と同じ（あるいは同じドメイン）のサーバ装置１０１に対してのものであるとデータ送受信部１１６が認識することで許可される。このため、接続先の確認と実行中のプログラム１１７の情報の確認を行う。
【００６６】
あるいは、クライアント装置１０６で実行しているサンドボックス１１２と同じ機能を持つものをサーバ装置１０１で実行してもよい。この場合には、サーバ装置１０１の各モジュールはサンドボックス１１２内で実行され、サーバ装置１０１とクライアント装置１０６との間の通信は、クライアント装置１０６間の通信と同様、サンドボックス１１２間の認証を行った後に行われる。
【００６７】
以上のクライアント装置１０６とサーバ装置１０１との間の通信に関しては、後のステップ６０４でも同様である。
【００６８】
次にステップ６０２で、マッチング処理部１０２から参加すべきマルチキャスト網を示すＩＤを受け取る。そして、ステップ６０３で、このＩＤを用い、マルチキャスト網参加受付部に対し、マルチキャスト網への参加を依頼する。
【００６９】
次にステップ６０４で、マルチキャスト網参加受付部１０９が、サーバ装置１０１のマルチキャスト網構造管理部１０４に対し、先に取得したＩＤを用い、マルチキャスト網への参加を要求する。ここで、参加要求受付後もこの接続を切断せずに保持しておき、サーバ装置１０１からの網情報変更通知や生死監視に用いる。
【００７０】
ここで、ステップ６０３から６０４では、ステップ６０１、６０２でサーバ装置１０１から受け取ったマルチキャスト網のＩＤを用い、再度ステップ６０３でサーバ装置１０１に要求を行っている。これを、ステップ６０３でプログラム１１７からマルチキャスト網参加受付部１０９に参加を要求するのではなく、サーバ装置１０１からクライアント装置１０６に対して接続を行うというやり方で実現することも可能である。ただしこの場合には、クライアント装置１０６は正しいサーバ装置１０１からの接続であることを何らかの方法で認証する必要がある。
【００７１】
次にステップ６０５で、サーバ装置１０１は参加要求を行ったクライアント装置１０６をマルチキャスト網に参加させるため、網の構造を変化させる。そして、その変化に応じて必要なクライアント装置１０６に必要な情報を伝える。例えば、図２のようにマルチキャスト網に木構造を用い、新たに参加するクライアント装置１０６を木構造の葉の部分に接続する場合は、新たに参加するクライアント装置１０６が接続されたクライアント装置１０６に対し「新たな通信先」としてそのクライアント装置１０６のＩＰアドレス等を伝える。
【００７２】
次に、ステップ６０６で、新規参加のクライアント装置１０６にも必要な網情報を通知する。これには、例えばマルチキャスト網が木構造の場合には、木の根に当たるクライアント装置１０６のＩＰアドレス等が含まれる。これは、データをマルチキャストで送る場合に、まず、木構造の根のクライアント装置１０６に対してデータを送る必要があるためである。
【００７３】
次に図７で、マルチキャスト網を用いてデータを送信する際の動作について説明する。まず、ステップ７０１でプログラム１１７がマルチキャスト通信を通信管理部１１３に要求する。次にステップ７０２でその要求がマルチキャスト通信要求であることを、データ送受信部１１６が認識する。
【００７４】
ステップ７０３では、マルチキャスト通信先管理部１１０を参照し、適切なクライアント装置１０６に通信を行う。ここで、適切なクライアント装置１０６とは、例えば図２のようにマルチキャスト網が木構造の場合には、根に当たるクライアント装置１０６になる。この情報は、図６のステップ６０６でクライアント装置１０６に対して渡されている。
【００７５】
そして、ステップ７０４では図４で説明したクライアント装置１０６間の直接通信と同様に通信を行う。ここで、ステップ４０８ではマルチキャスト通信に応じた通信内容の変換を行う。例えば、送信元がどこかという情報や、場合によってはデータのＩＤを追加する。
【００７６】
マルチキャスト通信の場合もサンドボックス１１２間の認証などは行う必要がある。これは、サーバ装置１０１が指定する通信先が正しいものであるかどうかは、必ずしも信用できないためである。
【００７７】
次に図８で、マルチキャスト通信を受信する際の動作について説明する。
【００７８】
ステップ８０１で、データ送受信部１１６がマルチキャスト通信を受信し、マルチキャスト通信であることを確認する。
【００７９】
次にステップ８０２でデータの中身を確認し、自分が送出したデータか、あるいはマルチキャスト網の実現によっては複数回同じデータを受け取る可能性があるので、既に受信したデータであるかどうかを確認する。これには、ステップ７０４で説明したような、データに追加された送信元情報や、データのＩＤを利用する。
【００８０】
もし、自分が送出したデータではなく、既に受け取ったデータではない場合は（ステップ８０２のＮｏ）、ステップ８０３に進む。そして、その内容をサンドボックス１１２内で実行中のプログラム１１７に転送する。
【００８１】
もし、自分が送出したデータあるいは既に受け取ったデータの場合は（ステップ８０２のＹｅｓ）、ステップ８０３を飛ばし、ステップ８０４に進む。
【００８２】
ステップ８０４では、マルチキャスト通信先管理部１１０を参照し、適切なクライアント装置１０６に通信内容を転送する。例えば図２のような木構造でマルチキャスト網が構成されている場合は、自クライアント装置１０６の下位に当たるクライアント装置１０６に相当する。この情報は、ステップ６０５で伝えられる。
【００８３】
そして、ステップ８０５で図４で説明したクライアント装置１０６間の直接通信と同様に通信を行う。この場合もステップ７０４と同様、サンドボックス１１２間の認証は必要となる。
【００８４】
次に、図９で生死監視について説明する。サーバ装置１０１の生死監視部１０３は、ステップ６０３で確立したクライアント装置１０６とサーバ装置１０１との間の接続を利用し、例えば一定の時間間隔を置いて、クライアント装置１０６の生死を確認している。
【００８５】
ステップ９０１で離脱したクライアント装置１０６を生死監視部１０３が認識する。すると、ステップ９０２でサーバ装置１０１はマルチキャスト網の変更を行い、影響のあるクライアント装置１０６に対してマルチキャスト網情報の変更を通知する。これは、例えば図２のような木構造でマルチキャスト網が構成されている場合には、離脱したクライアント装置１０６の上位のクライアント装置１０６に対し、離脱したクライアント装置１０６の下位のクライアント装置１０６に対してもマルチキャストデータを転送するように依頼する。
【００８６】
（第二の実施形態）
次に、本発明の第二の実施形態について図面を参照して説明する。
【００８７】
図１０は、第一の実施形態をコンピュータプログラムにより構成した場合に、そのコンピュータプログラムにより動作するコンピュータの構成図である。
【００８８】
当該コンピュータプログラムは、記録媒体１００２および１００５に保存され、コンピュータ１００３および１００６に読み込まれ、その動作を制御する。それにより、コンピュータ１００３は第一の実施形態のサーバ装置１０１と同じ動作を行い、コンピュータ１００６は第一の実施形態のクライアント装置１０６と同じ動作を行う。
【００８９】
本実施形態のコンピュータプログラムは記録媒体１００２および１００５に記録されることにより、コンピュータ１００３および１００６は、この記録媒体１００２および１００５を用いて本実施形態のコンピュータプログラムをインストールすることができる。
【００９０】
あるいは、記録媒体１００２および１００５を用いずに、本実施形態のコンピュータプログラムを保持するサーバ装置からネットワークを介してコンピュータ１００３および１００６に本実施形態のコンピュータプログラムをインストールすることもできる。
【００９１】
これにより、コンピュータ１００３および１００６を用いて、第一の実施形態のサーバ装置１０１およびクライアント装置１０６の機能に相応する機能を実現することができる。
【００９２】
なお、本実施形態のコンピュータプログラムは、コンピュータ１００３および１００６によって直接実行可能なものだけでなく、コンピュータ１００３および１００６のハードディスクなどにインストールすることによって実行可能となるものも含む。また、圧縮されたり、暗号化されたりしたものも含む。
【００９３】
（実施例）
次に、具体的な実施例を用いて本発明の実施形態の動作を説明する。まず、サンドボックス１１２として、言語処理系のランタイム１１０４を用いた場合を図１１に示す。これは、例えばＪａｖａＳｃｒｉｐｔやＪａｖａＡｐｐｌｅｔを用いた場合に相当する。
【００９４】
言語処理系ランタイム１１０４は、通信ライブラリ１１０６および補助ライブラリ１１０５を含む。これらのライブラリはプログラム１１０８からは保護されており、変更できないものとする。通信ライブラリ１１０６は通信管理部１１０７を含み、これが図１のデータ送受信部１１６に相当する。
【００９５】
プログラム管理部１１０２は、言語処理系ランタイム１１０４を経由してプログラム１１０８を起動する。
【００９６】
プログラム１１０８は、通信を行う際、通信ライブラリ１１０６を経由する必要がある。ここで、言語処理系ランタイム１１０４の通信ライブラリ１１０６を、通信管理部１１０７を含み、またプログラム１１０８からの通信要求を捕捉するように変更することで、実施形態で述べた動作を実現することができる。
【００９７】
また、プログラム１１０８、言語処理系ランタイム１１０４は、マルチキャスト管理部１１０３やプログラム管理部１１０２と通信する必要がある。これは、例えば言語処理系ランタイム１１０４と、マルチキャスト管理部１１０３とを別のプロセスで実現し、これらを共有メモリやソケットなどのプロセス間通信を用いて接続することで実現することができる。
【００９８】
プログラム１１０８がマルチキャスト管理部１１０３にマルチキャスト網参加を要求する際は（図６のステップ６０３）、言語処理系ランタイム１１０４内部にそのための補助ライブラリ１１０５を用意しておき、これを経由して行うことで実現できる。あるいは、マルチキャスト管理部１１０３自身を、言語処理系ランタイム１１０４内のライブラリとして実現してもよい。この場合には、補助ライブラリ１１０５は不要となる。
【００９９】
別の実施例として、サンドボックス１１２としてプロセスを用いた場合を図１２に示す。プロセスは、サンドボックス１１２としての隔離機能に制限があるため、例えばｃｈｒｏｏｔを用いてファイルシステムレベルでの隔離機能を向上するなどの手法と併用することも考えられる。
【０１００】
対象となるプログラム１２０７は、プログラム管理部１２０２によって実行が開始される。そして、ＯＳカーネル１２０４内部の通信関連システムコール１２０５を、通信管理部１２０６を含み、また、プログラム１２０７からの通信要求を捕捉するように変更することで、実施形態で述べた動作を実現することができる。
【０１０１】
ＯＳカーネル１２０４はプログラム管理部１２０２と連携し、対象とするプログラム１２０７が要求した通信であることを認識する。この連携には、例えば、プログラム管理部１２０２がプログラム１２０７を起動する際に、対象とするプログラム１２０７のＩＤをＯＳカーネル１２０４に登録する、などの方法が考えられる。
【０１０２】
通信管理部１２０６およびプログラム１２０７とマルチキャスト管理部１２０３との通信は、マルチキャスト管理部１２０３を別プロセスで実現することで、プロセス間通信を用いることにより実現できる。あるいは、マルチキャスト管理部１２０３をＯＳカーネル１２０４の中に取り込み、システムコールとして実現することもできる。
【０１０３】
また、別の実施例として、サンドボックス１１２として仮想マシン１３０４を用いた場合を図１３に示す。この場合には、プログラム１３０７は仮想マシン１３０４上で動作するため、ＯＳを含むものとなる。
【０１０４】
プログラム管理部１３０２は、ＯＳを含むプログラム１３０７を仮想マシン１３０４上に起動する。そして、仮想マシン１３０４内に構成された仮想通信ハードウェア１３０５を、通信管理部１３０６を含むように変更する。そして、ＯＳを含むプログラム１３０７からの通信要求をここで捕捉する。
【０１０５】
プログラム１３０７からマルチキャスト管理部１３０３との通信は、ホストＯＳへのネットワーク通信として実現できる。この通信は通信管理部１３０６によって捕捉されるが、マルチキャスト管理部１３０３との通信か、外部への通信要求かの判別は、ネットワークパケットの内容を見て、その宛先によって判断することができる。
【０１０６】
仮想通信ハードウェア１３０５とプログラム管理部１３０２およびマルチキャスト管理部１３０３との通信は、プロセス間通信として実現できる。
【産業上の利用可能性】
【０１０７】
本発明によれば、インターネット経由でダウンロードしたプログラム間で通信またはマルチキャストするプログラムに適用できる。ＷＷＷページに埋め込まれたプログラム間で通信またはマルチキャストする用途にも適用可能である。
【図面の簡単な説明】
【０１０８】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】マルチキャスト網へ参加する状況を説明する図である。
【図３】プログラムを配布する際の流れ図である。
【図４】プログラム同士で通信を行う際の流れ図である。
【図５】サンドボックス間で認証を行う際の流れ図である。
【図６】クライアントがマルチキャスト網に参加する際の流れ図である。
【図７】マルチキャスト通信で送信を行う際の流れ図である。
【図８】マルチキャスト通信で受信を行う際の流れ図である。
【図９】離脱したノードがある際の動作を示す流れ図である。
【図１０】第二の実施形態の構成を示すブロック図である。
【図１１】サンドボックスとして言語処理系のランタイムを用いた具体例のブロック図である。
【図１２】サンドボックスとしてプロセスを用いた具体例のブロック図である。
【図１３】サンドボックスとして仮想マシンを用いた具体例のブロック図である。
【符号の説明】
【０１０９】
１０１、１００１  サーバ装置
１０２  マッチング処理部
１０３  生死監視部
１０４  マルチキャスト網構造管理部
１０５  プログラム配布部
１０６、１００４、１１０１、１２０１、１３０１  クライアント装置
１０７  プログラム管理部
１０８、１１０３、１２０３、１３０３  マルチキャスト管理部
１０９  マルチキャスト網参加受付部
１１０  マルチキャスト通信先管理部
１１１  生死データ送出部
１１２  サンドボックス
１１３、１１０７、１２０６、１３０６  通信管理部
１１４  サンドボックス間相互認証部
１１５  データ暗号化・変換部
１１６  データ送受信部
１１７、１１０８、１２０７、１３０７  プログラム
１００２、１００５  記録媒体
１００３、１００６  コンピュータ
１１０２、１２０２、１３０２  プログラム管理部
１１０４  言語処理系ランタイム
１１０５  補助ライブラリ
１１０６  通信ライブラリ
１２０４  ＯＳカーネル
１２０５  通信関連システムコール
１３０４  仮想マシン
１３０５  仮想通信ハードウェア
【図１】
0005347263.tif 000002
【図２】
0005347263.tif 000003
【図３】
0005347263.tif 000004
【図４】
0005347263.tif 000005
【図５】
0005347263.tif 000006
【図６】
0005347263.tif 000007
【図７】
0005347263.tif 000008
【図８】
0005347263.tif 000009
【図９】
0005347263.tif 000010
【図１０】
0005347263.tif 000011
【図１１】
0005347263.tif 000012
【図１２】
0005347263.tif 000013
【図１３】
0005347263.tif 000014