(57)【要約】【課題】各端末間のコネクションにより構築されたフルメッシュ網において、自端末によって、他の端末間同士のコネクションが正常に確立され、データ通信が行われているかどうかを確実に確認できるようにする。【解決手段】ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、アプリケーション１２と、共通鍵暗号方式暗号化・復号化モジュール１９と、ＳＳＳ分散符号化モジュール１３と、ＳＳＳ復号化モジュール１６と、データベースモジュール１１と、メッセージ生成モジュール３４と、メッセージ処理モジュール３７と、メッセージ送受信モジュール３８と、制御モジュール１０とを備えるコミュニケーション端末により課題を解決する。【選択図】  図２
2006211118.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、
アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、
共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、
（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、
アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、
アプリケーションから直接渡されるアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、
２つのアプリケーションデータを比較し、一致するかどうかを判断するデータ比較モジュールと、
他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたアプリケーションデータを含むメッセージを生成する手段、を有するメッセージ生成モジュールと、
他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたアプリケーションデータ、を取り出す手段を有するメッセージ処理モジュールと、
メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、
データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータ、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う手段と、
ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、
メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、
ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、
データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、
メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたアプリケーションデータ、を受信する手段と、
共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵を利用して、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末。
【請求項２】
請求項１記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、
前記データベースモジュールにそのアプリケーションデータを保存しておくとともに、前記ＳＳＳ分散符号化モジュールで（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、
ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、そのメッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、そのメッセージの発信元端末と自端末を除く全端末に対して転送するとともに、アプリケーションデータのシェアは自端末の前記データベースモジュールに保存するステップ２と、
ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し０に設定されているので転送を終了し、各端末が全てメッセージの転送を終了すると、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元しアプリケーションに渡すとともに、そのアプリケーションデータを、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化データを、発信元端末に送り返すステップ３と、
ステップ１における発信元端末は他の全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化データをステップ３により受信し、受け取った各暗号化データを、それぞれ対応する共通鍵で復号化して得られるアプリケーションデータと、データベースモジュールに保存しているアプリケーションデータとを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法。
【請求項３】
アプリケーションデータの送信ステップをコミュニティに参加する全ての端末が実施する、請求項２に記載のフルメッシュ網において各端末が他の全端末間のコネクション接続を確実に接続する方法。
【請求項４】
ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、
アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、
共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、
（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、
アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、
アプリケーションデータのハッシュ値と、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、
アプリケーションデータをハッシュ値に変換するハッシュモジュールと、
２つのハッシュ値を比較し、一致するかどうかを判断するデータ比較モジュールと、
他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたハッシュ値を含むメッセージを生成する手段、とを有するメッセージ生成モジュールと、
他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたハッシュ値、を取り出す手段を有するメッセージ処理モジュールと、
メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、
データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータのハッシュ値、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェアの、保存・取得要求を行う手段と、
ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、
メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、
ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、
データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、
メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたハッシュ値、を受信する手段と、
ハッシュモジュールに対して、ＳＳＳ復号化モジュールを利用して復元したアプリケーションデータをハッシュ値に変換するように要求する手段と、
共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵により、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末。
【請求項５】
請求項４記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、
前記ハッシュモジュールを利用してアプリケーションデータのハッシュ値を前記データベースモジュールに保存しておくとともに、前記分散符号化モジュールで、（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、
ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、メッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、前記メッセージの発信元端末と自端末を除く全端末に対して送信するとともに、得られたシェアは自端末の前記データベースモジュールに保存するステップ２と、
ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し、０に設定されているので、転送を終了するとともに、全端末のメッセージの転送終了後、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元し、アプリケーションに渡すとともに、そのアプリケーションデータをハッシュモジュールによりハッシュ値に変換し、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化ハッシュ値を、発信元端末に送り返すステップ３と、
ステップ１における発信元端末を除く全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化ハッシュ値を、発信元端末はステップ３により受信し、受け取った各暗号化ハッシュ値をそれぞれ対応する共通鍵で復号化し、得られるハッシュ値とデータベースモジュールに保存しているハッシュ値とを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法。
【請求項６】
アプリケーションデータの送信ステップをコミュニティに参加する全ての端末が実施する、請求項５に記載のフルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法。
【請求項７】
ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、
アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、
共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、
（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、
アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、
アプリケーションから直接渡されるアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、
２つのアプリケーションデータを比較し、一致するかどうかを判断するデータ比較モジュールと、
他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたアプリケーションデータを含むメッセージを生成する手段、を有するメッセージ生成モジュールと、
他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたアプリケーションデータ、を取り出す手段を有するメッセージ処理モジュールと、
メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、
データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータ、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う手段と、
ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、
メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、
ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、
データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、
メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたアプリケーションデータ、を受信する手段と、
共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵を利用して、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末としてコンピュータを機能させるためのコンピュータプログラム。
【請求項８】
請求項１記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、
前記データベースモジュールにそのアプリケーションデータを保存しておくとともに、前記ＳＳＳ分散符号化モジュールで（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、
ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、そのメッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、そのメッセージの発信元端末と自端末を除く全端末に対して転送するとともに、アプリケーションデータのシェアは自端末の前記データベースモジュールに保存するステップ２と、
ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し０に設定されているので転送を終了し、各端末が全てメッセージの転送を終了すると、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元しアプリケーションに渡すとともに、そのアプリケーションデータを、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化データを、発信元端末に送り返すステップ３と、
ステップ１における発信元端末は他の全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化データをステップ３により受信し、受け取った各暗号化データを、それぞれ対応する共通鍵で復号化して得られるアプリケーションデータと、データベースモジュールに保存しているアプリケーションデータとを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項９】
ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、
アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、
共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、
（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、
アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、
アプリケーションデータのハッシュ値と、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、
アプリケーションデータをハッシュ値に変換するハッシュモジュールと、
２つのハッシュ値を比較し、一致するかどうかを判断するデータ比較モジュールと、
他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたハッシュ値を含むメッセージを生成する手段、とを有するメッセージ生成モジュールと、
他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたハッシュ値、を取り出す手段を有するメッセージ処理モジュールと、
メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、
データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータのハッシュ値、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェアの、保存・取得要求を行う手段と、
ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、
メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、
ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、
データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、
メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたハッシュ値、を受信する手段と、
ハッシュモジュールに対して、ＳＳＳ復号化モジュールを利用して復元したアプリケーションデータをハッシュ値に変換するように要求する手段と、
共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵により、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末としてコンピュータを機能させるためのコンピュータプログラム。
【請求項１０】
請求項４記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、
前記ハッシュモジュールを利用してアプリケーションデータのハッシュ値を前記データベースモジュールに保存しておくとともに、前記分散符号化モジュールで、（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、
ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、メッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、前記メッセージの発信元端末と自端末を除く全端末に対して送信するとともに、得られたシェアは自端末の前記データベースモジュールに保存するステップ２と、
ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し、０に設定されているので、転送を終了するとともに、全端末のメッセージの転送終了後、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元し、アプリケーションに渡すとともに、そのアプリケーションデータをハッシュモジュールによりハッシュ値に変換し、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化ハッシュ値を、発信元端末に送り返すステップ３と、
ステップ１における発信元端末を除く全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化ハッシュ値を、発信元端末はステップ３により受信し、受け取った各暗号化ハッシュ値をそれぞれ対応する共通鍵で復号化し、得られるハッシュ値とデータベースモジュールに保存しているハッシュ値とを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フルメッシュ型モデルの多地点通信において、他の参加者同士のコネクションが正常に確立されていて、データ通信が正常に行われているかどうかを各端末が確実に確認する方法に関する。
【背景技術】
【０００２】
従来、ＩＰネットワーク上において複数の端末が参加する多人数チャットのようなシステムでは、ある複数の端末により一時的にコミュニティを構築し、その中で各端末はアプリケーションデータをやり取りする。このとき、各端末間はデータを送受信するセッションをセットアップするために関係（コネクションと呼ぶ）を持たなければならず、そのコネクションの構築モデルは複数存在する。一般的に普及しているモデルは、コミュニティの端末以外のコンポーネントとして、コネクションを管理するサーバを利用し、各端末はそのサーバとだけコネクションを構築するモデル（中央型モデルと呼ぶ）である。
【０００３】
しかし、中央型モデルでは一つのサーバでコネクションを管理するために、そのサーバに障害が発生した場合、そのサーバを利用して構築された全コミュニティ内の全コネクションが切断されるため、通信断が発生してしまう。つまり、中央型モデルは一般的に単一箇所障害（single point of failure）に弱いシステムであり、可用性が低いといえる。
【０００４】
ここで可用性とはアベイラビリティのことであり、一般的にシステムの壊れにくさ、障害の発生しにくさ、障害発生時の修復速度などによって計られる。アベイラビリティの高いシステムと言えば、めったに障害が発生せずいつでも安心して使えるシステムを指し、逆にアベイラビリティの低いシステムとは障害が頻発し、しかもなかなか復旧しないシステムのことを意味している。
【０００５】
また、中央型モデルでは、コネクションはサーバで一括管理しているため、多くの場合、アプリケーションデータは一度、サーバに送られ、ミキシングなどのデータ加工が行われた後に、他の端末に送信される。このようなデータ送受信方法は、比較的データ量の大きさが小さい場合や厳密なリアルタイム性を必要としないアプリケーションには適するが、反対にテレビ会議や音声通話などの、送受信するデータ量が大きく、厳密なリアルタイム性を必要とするアプリケーションには不適切である。
【０００６】
一方、コネクションのモデルとしては各端末間のコネクションを直接フルメッシュに構築するフルメッシュ型のモデルが存在する。このモデルは中央型モデルと異なり、コミュニティに参加する端末を除いて、コネクションを一括管理するサーバなどは必要なく、各端末自身が代わりに複数のコネクションを管理する。また、コネクションの管理が各端末に分散することにより、中央型モデルに比べ、可用性が高い。これにより、ある端末に障害が起きたとしてもその影響は最小限に抑えられ、コミュニティ全体の通信が切断されることはない。さらに、このモデルでは多くの場合、アプリケーションのデータはサーバを介さず、直接端末へ送信されるため、厳密なリアルタイム性を必要とするアプリケーションに適している。
【０００７】
しかし、コネクションが集中的に管理されないために各端末は自端末と他の端末間のコネクションが構築されていることを直接確認できても、一方で他の端末間同士のコネクションが実際、確立されているかどうかを知る手段はない。中央型モデルではサーバが一括してコネクションを管理しているため、サーバにとってはどの端末が実際にコネクションを確立しているかを直接知ることができる。
【０００８】
関連文献としては、以下に示すように、コネクション構築モデルについての非特許文献１、秘密分散法（Secret Sharing Schemes）についての非特許文献２および３が開示されている。
【非特許文献１】J.Lennnox, H.Schulzrinne,“A Protocol for Reliable Decentralized Conferencing,”ACM International Workshop on Network and Operating Systems Support for Digital Audio and Video (NOSSDAV), Monterrey, California, June 2003.
【非特許文献２】A.Shamir,“How to share a secret,”Communications of the ACM, page612-613, 1979.
【非特許文献３】岡本龍明，山本博資，“現代暗号シリーズ／情報科学の数学，”産業図書出版，page209-219 July 1997.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上のように、フルメッシュ型モデルでは一元的なコネクション制御機関が存在しないために、自端末と各端末間のコネクションが接続されているかどうかを直接確認することができても、他の参加者間同士のコネクションが正常に確立され、アプリケーションデータをやり取りしているかどうかを知る手段がない。
【００１０】
本発明は、フルメッシュ型モデルの多地点通信において、他の参加者同士のコネクションが正常に確立されていて、データ通信が正常に行われているかどうかを各端末が確実に確認する方法を提案することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、請求項１の本発明は、ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、アプリケーションから直接渡されるアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、２つのアプリケーションデータを比較し、一致するかどうかを判断するデータ比較モジュールと、他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたアプリケーションデータを含むメッセージを生成する手段、を有するメッセージ生成モジュールと、他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたアプリケーションデータ、を取り出す手段を有するメッセージ処理モジュールと、メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータ、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う手段と、ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、メッセージ処理モジュールから、他の端末から受信さ��たメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたアプリケーションデータ、を受信する手段と、共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵を利用して、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末をもって解決手段とする。
【００１２】
請求項２の本発明は、請求項１記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、前記データベースモジュールにそのアプリケーションデータを保存しておくとともに、前記ＳＳＳ分散符号化モジュールで（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、そのメッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、そのメッセージの発信元端末と自端末を除く全端末に対して転送するとともに、アプリケーションデータのシェアは自端末の前記データベースモジュールに保存するステップ２と、ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し０に設定されているので転送を終了し、各端末が全てメッセージの転送を終了すると、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元しアプリケーションに渡すとともに、そのアプリケーションデータを、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化データを、発信元端末に送り返すステップ３と、ステップ１における発信元端末は他の全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化データをステップ３により受信し、受け取った各暗号化データを、それぞれ対応する共通鍵で復号化して得られるアプリケーションデータと、データベースモジュールに保存しているアプリケーションデータとを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をもって解決手段とする。
【００１３】
請求項３の本発明は、アプリケーションデータの送信ステップをコミュニティに参加する全ての端末が実施する、請求項２に記載のフルメッシュ網において各端末が他の全端末間のコネクション接続を確実に接続する方法をもって解決手段とする。
【００１４】
請求項４の本発明は、ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、アプリケーションデータのハッシュ値と、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、アプリケーションデータをハッシュ値に変換するハッシュモジュールと、２つのハッシュ値を比較し、一致するかどうかを判断するデータ比較モジュールと、他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたハッシュ値を含むメッセージを生成する手段、とを有するメッセージ生成モジュールと、他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたハッシュ値、を取り出す手段を有するメッセージ処理モジュールと、メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータのハッシュ値、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェアの、保存・取得要求を行う手段と、ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、メッセージ処理モジュールから、他の端末から受信され��メッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたハッシュ値、を受信する手段と、ハッシュモジュールに対して、ＳＳＳ復号化モジュールを利用して復元したアプリケーションデータをハッシュ値に変換するように要求する手段と、共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵により、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末をもって解決手段とする。
【００１５】
請求項５の本発明は、請求項４記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、前記ハッシュモジュールを利用してアプリケーションデータのハッシュ値を前記データベースモジュールに保存しておくとともに、前記分散符号化モジュールで、（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、メッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、前記メッセージの発信元端末と自端末を除く全端末に対して送信するとともに、得られたシェアは自端末の前記データベースモジュールに保存するステップ２と、ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し、０に設定されているので、転送を終了するとともに、全端末のメッセージの転送終了後、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元し、アプリケーションに渡すとともに、そのアプリケーションデータをハッシュモジュールによりハッシュ値に変換し、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化ハッシュ値を、発信元端末に送り返すステップ３と、ステップ１における発信元端末を除く全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化ハッシュ値を、発信元端末はステップ３により受信し、受け取った各暗号化ハッシュ値をそれぞれ対応する共通鍵で復号化し、得られるハッシュ値とデータベースモジュールに保存しているハッシュ値とを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をもって解決手段とする。
【００１６】
請求項６の本発明は、アプリケーションデータの送信ステップをコミュニティに参加する全ての端末が実施する、請求項５に記載のフルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をもって解決手段とする。
【００１７】
請求項７の本発明は、ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗号方式暗号化・復号化モジュールと、（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、アプリケーションから直接渡されるアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、２つのアプリケーションデータを比較し、一致するかどうかを判断するデータ比較モジュールと、他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたアプリケーションデータを含むメッセージを生成する手段、を有するメッセージ生成モジュールと、他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたアプリケーションデータ、を取り出す手段を有するメッセージ処理モジュールと、メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータ、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う手段と、ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出さ��たアプリケーションデータのシェア、転送回数、暗号化されたアプリケーションデータ、を受信する手段と、共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵を利用して、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末としてコンピュータを機能させるためのコンピュータプログラムをもって解決手段とする。
【００１８】
請求項８の本発明は、請求項１記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、前記データベースモジュールにそのアプリケーションデータを保存しておくとともに、前記ＳＳＳ分散符号化モジュールで（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、そのメッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、そのメッセージの発信元端末と自端末を除く全端末に対して転送するとともに、アプリケーションデータのシェアは自端末の前記データベースモジュールに保存するステップ２と、ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し０に設定されているので転送を終了し、各端末が全てメッセージの転送を終了すると、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元しアプリケーションに渡すとともに、そのアプリケーションデータを、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化データを、発信元端末に送り返すステップ３と、ステップ１における発信元端末は他の全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化データをステップ３により受信し、受け取った各暗号化データを、それぞれ対応する共通鍵で復号化して得られるアプリケーションデータと、データベースモジュールに保存しているアプリケーションデータとを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をコンピュータに実行させるためのコンピュータプログラムをもって解決手段とする。  請求項９の本発明は、ネットワークに接続されている複数の外部端末とフルメッシュにコネクションを確立することで、一時的なコミュニティを形成し、コネクション確立の際は認証制御を行い、コネクション確立後は各端末間で一意の共通鍵を共有する端末であって、アプリケーションデータを生成し、また外部端末から受信したアプリケーションデータを処理するアプリケーションと、共通鍵を利用し、任意のデータを暗号化・復号化する共通鍵暗���方式暗号化・復号化モジュールと、（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成するＳＳＳ（Secret Sharing Schemes）分散符号化モジュールと、アプリケーションデータが分散符号化された複数のシェアから元のアプリケーションデータを復元するＳＳＳ復号化モジュールと、アプリケーションデータのハッシュ値と、他の端末から受信するアプリケーションデータのシェアと、他の端末と一意に共有している共通鍵と、コミュニティに参加している端末の宛先情報を含む端末リスト、とを管理するデータベースモジュールと、アプリケーションデータをハッシュ値に変換するハッシュモジュールと、２つのハッシュ値を比較し、一致するかどうかを判断するデータ比較モジュールと、他のモジュールから渡されるアプリケーションデータのシェアに、指定された宛先情報と、転送回数を付与してメッセージを生成する手段と、共通鍵により暗号化されたハッシュ値を含むメッセージを生成する手段、とを有するメッセージ生成モジュールと、他の端末から受信するメッセージに含まれる、アプリケーションデータのシェア、転送回数、共通鍵により暗号化されたハッシュ値、を取り出す手段を有するメッセージ処理モジュールと、メッセージ生成モジュールから渡されるメッセージの宛先情報を基に、当該宛先へメッセージを送信する手段と、他の端末からメッセージを受信する手段と、受信したメッセージを前記メッセージ処理モジュールに渡す手段、とを有するメッセージ送受信モジュールとを備え、データベースモジュールに対して、コミュニティに参加している参加者リスト、アプリケーションデータのハッシュ値、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェアの、保存・取得要求を行う手段と、ＳＳＳ分散符号化モジュールに対して、アプリケーションから受信するアプリケーションデータを、要求した閾値でＳＳＳにより分散符号化を行うように依頼する手段と、メッセージ生成モジュールに対して、ＳＳＳ分散符号化モジュールから受信するアプリケーションデータのシェアに、指定する宛先情報、転送回数を設定してメッセージを生成するように依頼する手段と、ＳＳＳ復号化モジュールに対して、取得したアプリケーションデータのシェアから元のアプリケーションデータを復元するように依頼する手段と、データ比較モジュールに対して、データベースモジュールに保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータのシェアからＳＳＳ復号化モジュールを利用して復元されたアプリケーションデータ、との比較を要求する手段と、メッセージ処理モジュールから、他の端末から受信されたメッセージから取り出されたアプリケーションデータのシェア、転送回数、暗号化されたハッシュ値、を受信する手段と、ハッシュモジュールに対して、ＳＳＳ復号化モジュールを利用して復元したアプリケーションデータをハッシュ値に変換するように要求する手段と、共通鍵暗号方式暗号化・復号化モジュールに対して、任意のデータを共通鍵により、暗号化、または復号化するように依頼する手段、とを備える制御モジュールを備えることを特徴とするコミュニケーション端末としてコンピュータを機能させるためのコンピュータプログラムをもって解決手段とする。
【００１９】
請求項１０の本発明は、請求項４記載のコミュニケーション端末である端末はアプリケーションデータを、自端末を除くコミュニティに参加する全端末に送信する際に、前記ハッシュモジュールを利用してアプリケーションデータのハッシュ値を前記データベースモジュールに保存しておくとともに、前記分散符号化モジュールで、（（コミュニティに参加する全端末数−１）、（コミュニティに参加する全端末数−１））の閾値で分散符号化して得られる、（コミュニティに参加する全端末数−１）個のアプリケーションデータのシェアを、自端末を除くコミュニティに参加する全端末のそれぞれに対し、１シェアづつメッセージに含めて送信するため、シェアと、該シェアを送信される端末の宛先情報と、１に設定された転送回数、とを含むメッセージを、自端末を除くコミュニティに参加する全端末のそれぞれについて生成し送信するステップ１と、ステップ１で送信されたメッセージを他の各端末が受信し、それら各端末は前記メッセージ処理モジュールを利用して、シェアと転送回数を取り出し、それらを制御モジュールに渡し、制御モジュールは転送回数を参照し、１に設定されている場合は、メッセージに含まれていたアプリケーションデータのシェアと０に設定した転送回数とを含むメッセージを生成し、前記メッセージの発信元端末と自端末を除く全端末に対して送信するとともに、得られたシェアは自端末の前記データベースモジュールに保存するステップ２と、ステップ２で転送されたメッセージを受けた各端末の前記制御モジュールは、ステップ２と同様に転送回数を参照し、０に設定されているので、転送を終了するとともに、全端末のメッセージの転送終了後、メッセージの発信元端末を除く各端末が得た、（コミュニティに参加する全端末数−１）個のシェアを、前記ＳＳＳ復号化モジュールを利用して元のアプリケーションデータを復元し、アプリケーションに渡すとともに、そのアプリケーションデータをハッシュモジュールによりハッシュ値に変換し、発信元端末と共有している共通鍵を利用して前記共通鍵暗号方式暗号化・復号化モジュールで暗号化した暗号化ハッシュ値を、発信元端末に送り返すステップ３と、ステップ１における発信元端末を除く全端末から、発信元端末と各端末間で一意に共有している共通鍵を利用して暗号化された暗号化ハッシュ値を、発信元端末はステップ３により受信し、受け取った各暗号化ハッシュ値をそれぞれ対応する共通鍵で復号化し、得られるハッシュ値とデータベースモジュールに保存しているハッシュ値とを比較し、一致するかどうかを確認するステップ４と、を備えることを特徴とする、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法をコンピュータに実行させるためのコンピュータプログラムをもって解決手段とする。
【発明の効果】
【００２０】
以上、本発明によれば、ステップ１からステップ４を通し、発信元端末はアプリケーションデータを他の端末へ直接送信するのでなく、他の端末経由で送信するため、他の端末同士のコネクションが正常でないと、他の端末はステップ３において、発信元端末が生成したアプリケーションデータの部分情報であるシェアをすべて手に入れることができず、結局、発信元端末が生成したアプリケーションデータと同じものを復元することもできず、ステップ４のアプリケーションデータの比較ができない。よって、各端末がステップ１からステップ４を通して、他の端末にアプリケーションデータを送信することで、最終的に発信元端末は、他の端末同士のコネクション、データ通信が正常であるかどうかを確実に確認することができる。
【００２１】
また、本発明によれば、ステップ４において発信元端末に送り返されるデータを含むメッセージが、発信元端末とその他の端末間で一意に共有している共通鍵を利用して暗号化されていることで、コミュニティに参加している端末からのメッセージであることを一意に認証することができる。
【００２２】
また、本発明によれば、ステップ１において、アプリケーションデータを直接、他の端末に送信するのではなく、一度、部分情報（シェア）に分解し、さらに他の端末を経由して、発信元端末を除く全端末にデータを送信するため、コミュニティに参加する端末以外の不正な端末によって、そのシェアが盗聴されたとしても、それがアプリケーションの部分情報であるため、元のアプリケーションデータを取得することができず、よって、コミュニティ内のデータ通信に対しセキュリティレベルを向上させることが可能である。
【００２３】
また、本発明によれば、ステップ３で他の端末がアプリケーションデータを送り返すときに、アプリケーションデータを含んだメッセージをそのまま共通鍵を利用して、暗号化するのではなく、アプリケーションデータのハッシュ値を求めてから、そのハッシュ値を含んだメッセージを共通鍵で暗号化するため、発信元端末に送り返すためのデータ量を小さくすることができ、データ通信に必要となる帯域を抑制することができる。
【００２４】
また、本発明によれば、ステップ１において、アプリケーションデータをハッシュ値としてデータベースに保存しておくため、各端末のデータ保存に必要な容量を抑えることができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を、図面を参照して説明する。
【００２６】
図１は、本発明の実施の形態に係る端末間の関係を表したネットワークの構成を示す図である。
【００２７】
端末１、端末２、端末３はネットワーク１０００に接続しており、それらの間で通信可能であるとする。図１の状態では、各端末間ではコネクションが確立されていないとする。ネットワーク１０００は任意の情報をやり取りするためのインフラであり、例えば、インターネットやプライベートネットワークを表す。
【００２８】
［第１の実施の形態］
図２は、図１で示された端末１、端末２、端末３のそれぞれが有する共通の機能モジュールの構成を示した図である。
【００２９】
ここで、コミュニティとは複数の端末間でフルメッシュにコネクションを確立することで形成されるものとし、最低２つの端末間で構築される１対１のコネクションが必要となる。
【００３０】
制御モジュール１０は、データベースモジュール１１、秘密分散法（Secret Sharing Schemes、以下ＳＳＳという）分散符号化モジュール１３、メッセージ生成モジュール１４、データ比較モジュール１５、ＳＳＳ復号化モジュール１６、メッセージ処理モジュール１７、共通鍵暗号方式暗号化・復号化モジュール１９とのインタフェースを有する。
【００３１】
制御モジュール１０はデータベースモジュール１１に対し、コミュニティに参加している参加者リスト、アプリケーションデータ、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う。
【００３２】
制御モジュール１０はＳＳＳ分散符号化モジュール１３に対し、ＳＳＳ分散符号化モジュール１３がアプリケーション１２から受信するアプリケーションデータを、指定した閾値でＳＳＳにより分散符号化を行うように依頼する。
【００３３】
制御モジュール１０はメッセージ生成モジュール１４に対し、ＳＳＳ分散符号化モジュール１３または制御モジュール１０から受信するアプリケーションのシェア、指定した転送回数、要求する宛先情報を含んだメッセージを生成するように依頼する。
【００３４】
また、制御モジュール１０はメッセージ生成モジュール１４に対し、共通鍵により暗号化されたアプリケーションデータ、指定した宛先情報を含んだメッセージを生成するように依頼する。
【００３５】
また、制御モジュール１０はデータ比較モジュール１５に対し、アプリケーション１２が以前に生成しデータベースモジュール１１に保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータとを比較するように依頼する。
【００３６】
また、制御モジュール１０はＳＳＳ復号化モジュール１６に対し、取得したアプリケーションデータの複数のシェアから元のアプリケーションデータを復元するように依頼する。
【００３７】
また、制御モジュール１０はメッセージ処理モジュール１７から、他の端末から受信されたメッセージから取り出されたシェア、転送回数、共通鍵により暗号化されたアプリケーションデータ、を受信する。
【００３８】
また、制御モジュール１０は共通鍵暗号方式暗号化・復号化モジュール１９に対し、任意のデータを共通鍵を利用して、暗号化、または復号化するように依頼する。
【００３９】
データベースモジュール１１は制御モジュール１０、アプリケーション１２、とのインタフェースを有する。データベースモジュール１１は、各端末間で共有する共通鍵、参加者のリスト（主に宛先情報が含まれる）、各端末から受信するアプリケーションデータが分散符号化されたシェア、アプリケーションデータそのものを管理する。
【００４０】
アプリケーション１２は例えば、音声データを入出力する音声アプリケーションなど、アプリケーションデータを入出力する任意のアプリケーションである。ただし、これらのアプリケーションデータはどの端末が生成したものかを識別するための識別情報（ＩＤ）を含む。
【００４１】
アプリケーション１２はデータベースモジュール１１、ＳＳＳ分散符号化モジュール１３、とのインタフェースを有する。
【００４２】
アプリケーション１２はデータベースモジュール１１に対し、毎回出力するアプリケーションデータを保存してもらう。
【００４３】
アプリケーション１２は、ＳＳＳ分散符号化モジュール１３に対して毎回出力するアプリケーションデータを、制御モジュール１０によってＳＳＳ分散符号化モジュール１３にあらかじめ設定された閾値で、ＳＳＳ分散符号化モジュール１３により分散符号化してもらう。
【００４４】
ＳＳＳ分散符号化モジュール１３は、制御モジュール１０、アプリケーション１２、メッセージ生成モジュール１４、とのインタフェースを有する。ＳＳＳ分散符号化モジュール１３は、（ｋ、ｎ）の閾値（１≦ｋ≦ｎ）でアプリケーションデータを分散符号化し、アプリケーションデータの部分情報であるシェアをｎ個生成する。
【００４５】
ＳＳＳ分散符号化モジュール１３は、制御モジュール１０から指定された（（コミュニティの全端末数−１）、（コミュニティの全端末数−１））の閾値で、アプリケーション１２から受信するデータを分散符号化し、得られた（コミュニティの全端末数−１））個のシェアをメッセージ生成モジュール１４に渡すように依頼される。
【００４６】
メッセージ生成モジュール１４は、制御モジュール１０、ＳＳＳ分散符号化モジュール１３、メッセージ送受信モジュール１８、とのインタフェースを有する。
【００４７】
メッセージ生成モジュール１４は制御モジュール１０から、自端末を除くコミュニティに参加する全端末の宛先情報を受信し、ＳＳＳ分散符号化モジュール１３から受信する（コミュニティの全端末数−１）個のシェアにそれぞれ、他の端末の宛先情報と指定された転送回数を付与してメッセージを生成するように依頼される。これにより、（コミュニティの全端末数−１）個のメッセージを生成することになる。
【００４８】
また、メッセージ生成モジュール１４は、ＳＳＳ分散符号化モジュール１３からシェアを受信する場合、メッセージ生成時には転送回数を１に設定する。一方、制御モジュール１０からシェアが直接渡された場合は、転送回数を０に設定して、要求された宛先情報を付与してメッセージを生成する。
【００４９】
また、メッセージ生成モジュール１４は制御モジュール１０から、共通鍵で暗号化されたアプリケーションデータを、指定された宛先情報を付与してメッセージを生成するように依頼される。
【００５０】
データ比較モジュール１５は、制御モジュール１０、とのインタフェースを有する。
【００５１】
データ比較モジュール１５は制御モジュール１０から、アプリケーション１２が以前に生成しデータベースモジュール１１に保存しているアプリケーションデータと、他の端末から受信するアプリケーションデータとを比較するように依頼される。
【００５２】
ＳＳＳ復号化モジュール１６は、制御モジュール１０、アプリケーション１２、とのインタフェースを有する。
【００５３】
ＳＳＳ復号化モジュール１６は制御モジュール１０から、ＳＳＳを利用し、複数のシェアから一つのアプリケーションデータを復元するように依頼される。
【００５４】
また、ＳＳＳ復号化モジュール１６はアプリケーション１２に対し、復元したアプリケーションデータを渡す。
【００５５】
メッセージ処理モジュール１７は、制御モジュール１０、メッセージ送受信モジュール１８、とのインタフェースを有する。
【００５６】
メッセージ処理モジュール１７は制御モジュール１０に対し、メッセージ送受信モジュール１８が他の端末から受信したメッセージからアプリケーションデータのシェア、転送回数を取り出し、渡す。
【００５７】
メッセージ送受信モジュール１８は、メッセージ生成モジュール１４、メッセージ処理モジュール１７、とのインタフェースを有するだけでなく、外部の端末と直接ネットワークで結ばれている。
【００５８】
メッセージ送受信モジュール１８は、メッセージ生成モジュール１４から渡されたメッセージをそのメッセージの宛先情報を参考にして、他の端末に送信する。
【００５９】
また、メッセージ送受信モジュール１８は、受信したメッセージをメッセージ処理モジュール１７に渡す。
【００６０】
共通鍵暗号方式暗号化・復号化モジュール１９は、制御モジュール１０、とのインタフェースを有する。
【００６１】
共通鍵暗号方式暗号化・復号化モジュール１９は制御モジュール１０から、共通鍵を渡されるとともに、その鍵を利用した暗号化、または復号化を要求される。
【００６２】
なお、これらの機能を有する端末は、コンピュータプログラムで動作するコンピュータで実現することもできる。そのコンピュータプログラム、つまりコンピュータをこの端末として機能させるコンピュータプログラムは、例えば、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に格納したり、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【００６３】
端末２０、２１は図１に示される端末１から端末３の２つを示している。
【００６４】
図３は、既に端末１と端末２の間でコネクション５０が、端末２と端末３の間でコネクション５１が、端末３と端末１の間でコネクション５２が構築されている状態を示す図である。
【００６５】
図３では端末１、端末２、端末３の間でフルメッシュにコネクションが構築されているだけでなく、それぞれコネクション確立時に認証を行い、既に端末１と端末２の間で共通鍵（１−１−２）が、端末２と端末３の間で共通鍵（１−２−３）が、端末３と端末１の間で共通鍵（１−３−１）がそれぞれの端末間で共有されているものとする。第１の実施の形態では端末１が端末２と端末３の間で正常にコネクションが確立されているかどうかを確認する例について示す。以下で説明する第１の実施の形態のプロセスは端末２、端末３もアプリケーションデータをやり取りしている最中に実施される。
【００６６】
コネクション構築後、端末間のデータ通信に先立ち端末１では以下のような設定を内部で行う。ここでは端末１を例に説明を行う。
【００６７】
端末１において、制御モジュール１０がデータベースモジュール１１に、参加者リストを要求する。そして、その参加者リストから参加者数とその参加者の宛先を取得する。
【００６８】
全参加者数は３なので、自身を除いた端末２と端末３に対して、アプリケーションデータを送信するために、（２、２）の閾値でアプリケーションデータを秘密分散法により分散符号化するように、ＳＳＳ分散符号化モジュール１３に設定を行う。これにより、ＳＳＳ分散符号化モジュール１３はアプリケーションから受信するアプリケーションデータを毎回、（２、２）の閾値で分散符号化し、２個のシェアをメッセージ生成モジュール１４に対して渡す制御内容に設定される。
【００６９】
次に、制御モジュール１０はメッセージ送受信モジュール１８がアプリケーションデータのシェアを含むメッセージを正しい宛先へ送信するために、既にデータベースモジュール１１から取得している宛先情報を利用し、各シェアを端末２または端末３の宛先情報を含んだメッセージを生成するようにメッセージ生成モジュール１４に依頼する。また、このとき、転送回数を１に設定するようにメッセージ生成モジュール１４に依頼する。
【００７０】
メッセージ生成モジュール１４は制御モジュール１０からの依頼を受け、毎回ＳＳＳ分散符号化モジュール１３から受信する２つのシェアのうち、一方のシェアと端末２の宛先情報を含んだメッセージを生成するとともに、もう一方のシェアと端末３の宛先情報を含んだメッセージを生成する。つまり、第１の実施の形態ではアプリケーションデータ１つに対して、毎回２つのメッセージを生成することになる。
【００７１】
以上、各端末間でアプリケーションデータをやり取りするための前準備を説明してきたが、実際のデータのやり取りについては、図４以降で説明する。
【００７２】
図４は、端末１のあるアプリケーションデータＡＤ１を（２、２）の閾値で分散符号化して得られた２つのシェア（１−１−２）、シェア（１−１−３）をそれぞれ、端末２と端末３に対して、端末１が送信する様子を示した図である（メッセージ１００、１０１）。
【００７３】
端末１において、アプリケーション１２によって生成されたアプリケーションデータＡＤ１はＳＳＳ分散符号化モジュール１３を通して、２つのシェア（１−１−２）、シェア（１−１−３）に分散符号化される。そして、メッセージ生成モジュール１４によって、端末２の宛先情報、シェア（１−１−２）を含むメッセージ１００と、端末３の宛先情報、シェア（１−１−３）を含むメッセージ１０１が生成される。メッセージ生成モジュール１４は各メッセージ生成時にアプリケーションデータのシェアの転送回数を１に設定する。
【００７４】
２つのメッセージ１００、１０１はメッセージ送受信モジュール１８に渡され、メッセージ送受信モジュール１８が各メッセージの宛先情報を見て、メッセージ１００は端末２へ、メッセージ１０１は端末３に送信する。
【００７５】
また、端末１のアプリケーションデータＡＤ１はそのまま、データベースモジュール１１に保存される。
【００７６】
一方、端末２のメッセージ送受信モジュール１８は端末１からメッセージ１００を受信し、それをメッセージ処理モジュール１７に渡す。メッセージ処理モジュール１７はメッセージ１００からシェア（１−１−２）と転送回数を取り出し、制御モジュール１０にそれを渡す。
【００７７】
端末２の制御モジュール１０はシェア（１−１−２）をデータベースモジュール１１に保存する。また、転送回数を参照し、シェア（１−１−２）を転送するかどうかを決定する。ここでは１に設定されていたので、再度転送しなければならない。制御モジュール１０は自端末とメッセージ１００の発信元端末を除く全端末（つまり、端末３）に対して、シェア（１−１−２）を転送するために、メッセージ生成モジュール１４に対してそれを渡す。また、転送回数を０にするように要求する。
【００７８】
メッセージ生成モジュール１４は転送回数を０に設定し、シェア（１−１−２）、端末３の宛先情報を含むメッセージ１０２を生成する。生成されたメッセージ１０２はメッセージ送受信モジュール１８に渡され、端末３に対して送信される（図５のメッセージ１０２）。
【００７９】
同様に端末３も同様にメッセージ１０１を処理し、転送回数が０に設定され、シェア（１−１−３）を含んだメッセージ１０３を端末２に対して送信する。
【００８０】
図５は、端末２、端末３が端末１からそれぞれメッセージ１００、１０１を受信した後にそれぞれのメッセージに含まれるシェア（１−１−２）、（１−１−３）を含んだ、メッセージ１０２、１０３を端末３、端末２に対し送信する様子を示した図である。
【００８１】
端末２のメッセージ送受信モジュール１８はメッセージ１０３を受信し、メッセージ１００と同様にメッセージ処理モジュール１７がメッセージから、転送回数とシェア（１−１−３）を取り出し、これらを制御モジュール１０に渡す。制御モジュール１０は転送回数が０に設定されているのを見て、シェアの転送を行わないと判断する。そして、取得したシェア（１−１−３）とデータベースモジュール１１に保存されていたシェア（１−１−２）を利用して、もとのアプリケーションデータＡＤ１を復元するために、制御モジュール１０はＳＳＳ復号化モジュール１６に対し、復号化を行うように依頼する。
【００８２】
ＳＳＳ復号化モジュール１６は２つのシェア（１−１−２）、（１−１−３）を利用して元のアプリケーションデータＡＤ１を復元した後、アプリケーション１２にそのアプリケーションデータＡＤ１を渡す。また、端末１が端末２と端末３の間のコネクションが確立され、データ通信が正常に行われているかどうかを確認するために、端末１に必要となるデータを生成するために、そのアプリケーションデータＡＤ１は制御モジュール１０にも返される。
【００８３】
端末２の制御モジュール１０はアプリケーションデータＡＤ１に含まれるＩＤを参照して、端末１のアプリケーションデータであると判断する。そして、端末１が端末２と端末３の間のデータ通信が正常に行われていることを確認できるようにするために、アプリケーションデータＡＤ１を、端末１と共有している共通鍵（１−１−２）を利用して、共通鍵暗号方式暗号化・復号化モジュール１９を利用して暗号化する。そして、得られた暗号化データ（１−２）を端末１に対して、送信するために、メッセージ生成モジュール１４、メッセージ送受信モジュール１８を利用して送信する（図６のメッセージ１０４）。
【００８４】
同様に端末３は端末２と同じ処理を行い、復元されたアプリケーションデータＡＤ１を共通鍵（１−３−１）を利用して暗号化し、得られた暗号化データ（１−３）を端末１に対して送信する（図６のメッセージ１０５）。
【００８５】
図６は、端末２と端末３がそれぞれ暗号化データ（１−２）、（１−３）を含んだメッセージ１０４、１０５を端末１に送信する様子を示した図である。
【００８６】
端末１は端末２からメッセージ１０４を受信すると、メッセージ送受信モジュール１８およびメッセージ処理モジュール１７を介して、暗号化データ（１−２）を得る。
【００８７】
端末１の制御モジュール１０は暗号化データ（１−２）を、共通鍵（１−１−２）を利用し共通鍵暗号方式暗号化・復号化モジュールを介して、復号化を行い、アプリケーションデータＡＤ１’を得る。
【００８８】
アプリケーションデータＡＤ１’とデータベースモジュール１１に保存しているアプリケーションデータＡＤ１とが等しいかどうかを、データ比較モジュール１５を利用して比較する。比較結果が正常（ＡＤ１＝ＡＤ１’）であれば、端末３から端末２への方向のデータ通信が正常であることが確認できる。
【００８９】
同様に、端末１は端末３からメッセージ１０５を受信し、同様の方法でアプリケーションデータＡＤ１との比較を行う。比較結果が正常であれば、端末２から端末３への方向のデータ通信が正常であることを確認できる。
【００９０】
また、同様に端末２、端末３は端末１と同様の処理を行う。他の端末経由でアプリケーションデータを送信することで、端末２にとっては端末１と端末３間、端末３にとっては端末１と端末２間、においてコネクションが確立され、データ通信が正常に行われているかどうかを確実に確認することができる。
【００９１】
以上、発信元端末はアプリケーションデータを他の端末に直接送るのではなく、他の端末経由で送信するため、他の端末同士のコネクションが正常でなく、データ通信が正常でないと、他の端末は発信元端末が生成したアプリケーションデータの部分情報であるシェアをすべて手に入れることができず、結局、発信元端末が生成したアプリケーションデータと同じものを復元することもできない。そして、発信元端末に送り返される暗号化データを復号化したアプリケーションデータと、発信元端末が保存しているアプリケーションデータとが比較できない。よって、各端末が第１の実施の形態のように他の端末にアプリケーションデータを送信することで、最終的に発信元端末は、他の端末同士のコネクション、データ通信が正常であるかどうかを確実に確認することができる。
【００９２】
また、アプリケーションデータをそのまま発信元端末に送り返すのではなく、発信元端末とその他の端末間で一意に共有している共通鍵を利用して暗号化して送り返すことで、コミュニティに参加している端末からのメッセージであることを一意に認証することができる。
【００９３】
また、アプリケーションデータを直接、他の端末に送信するのではなく、一度、部分情報（シェア）に分解して、他の端末を経由して、発信元端末を除く全端末にデータを送信するため、コミュニティに参加する端末以外の不正な端末によって、そのシェアが盗聴されたとしても、アプリケーションの部分情報であるため、元のアプリケーションデータを取得することができず、コミュニティ内のデータ通信に対しセキュリティレベルを向上させることが可能である。
【００９４】
なお、このように、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法を、コンピュータにより動作する端末に実行させるコンピュータプログラムは、上記した記録媒体に格納したり、通信網を介して伝送させることができる。［第２の実施の形態］
図７は、図１で示された端末１、端末２、端末３、それぞれが有する共通の機能モジュールの構成を示した図である。
【００９５】
制御モジュール３０は、データベースモジュール３１、ＳＳＳ分散符号化モジュール３３、メッセージ生成モジュール３４、データ比較モジュール３５、ＳＳＳ復号化モジュール３６、メッセージ処理モジュール３７、共通鍵暗号方式暗号化・復号化モジュール３９、ハッシュモジュール４２とのインタフェースを有する。
【００９６】
制御モジュール３０はデータベースモジュール３１に対し、コミュニティに参加している参加者リスト、アプリケーションデータのハッシュ値、各参加者間で共有している共通鍵、アプリケーションデータが分散符号化されたシェア、の保存・取得要求を行う。
【００９７】
制御モジュール３０はＳＳＳ分散符号化モジュール３３に対し、ＳＳＳ分散符号化モジュール３３がアプリケーション３２から受信するアプリケーションデータを、指定した閾値でＳＳＳにより分散符号化を行うように依頼する。
【００９８】
制御モジュール３０はメッセージ生成モジュール３４に対し、ＳＳＳ分散符号化モジュールから受信するアプリケーションのシェアを要求する宛先に対して送信するようにメッセージ生成時に設定するように依頼する。
【００９９】
また、制御モジュール３０はメッセージ生成モジュール３４に対し、ＳＳＳ分散符号化モジュールまたは制御モジュール３０から受信するアプリケーションのシェア、指定した転送回数、要求する宛先情報を含んだメッセージを生成するように依頼する。
【０１００】
また、制御モジュール３０はメッセージ生成モジュール３４に対し、共通鍵により暗号化されたアプリケーションデータのハッシュ値、指定した宛先情報を含んだメッセージを生成するように依頼する。
【０１０１】
また、制御モジュール３０はデータ比較モジュール３５に対し、アプリケーション３２が以前にハッシュモジュール４２を利用して生成しデータベースモジュール３１に保存しているハッシュ値と、他の端末から受信するハッシュ値とを比較するように依頼する。
【０１０２】
また、制御モジュール３０はＳＳＳ復号化モジュール３６に対し、取得したアプリケーションデータの複数のシェアから元のアプリケーションデータを復元するように依頼する。
【０１０３】
また、制御モジュール３０はメッセージ処理モジュール３７から、他の端末から受信されたメッセージから取り出されたシェア、転送回数、共通鍵により暗号化されたハッシュ値、を受信する。
【０１０４】
また、制御モジュール３０は共通鍵暗号方式暗号化・復号化モジュール３９に対し、共通鍵により任意のデータを、暗号化、または復号化するように依頼する。
【０１０５】
また、制御モジュール３０はハッシュモジュール４２に対し、アプリケーションデータをハッシュ値に変換するように依頼する。
【０１０６】
データベースモジュール３１は制御モジュール３０、ハッシュモジュール４２、とのインタフェースを有する。データベースモジュール３１は、各端末間で共有する共通鍵、参加者のリスト（主に宛先情報が含まれる）、各端末から受信するアプリケーションデータが分散符号化されたシェア、アプリケーションデータのハッシュ値を管理する。
【０１０７】
アプリケーション３２は例えば、音声データを入出力する音声アプリケーションなど、データを入出力する任意のアプリケーションである。ただし、これらのアプリケーションデータはどの端末が生成したものかを識別するためのＩＤを含む。
【０１０８】
アプリケーション３２はＳＳＳ分散符号化モジュール３３、ハッシュモジュール４２、とのインタフェースを有する。
【０１０９】
アプリケーション３２はＳＳＳ分散符号化モジュール３３に対し、毎回出力するアプリケーションデータを制御モジュール３０によって、ＳＳＳ分散符号化モジュール３３にあらかじめ設定された閾値で、分散符号化してもらう。
【０１１０】
アプリケーション３２はハッシュモジュール４２に対し、毎回出力するアプリケーションデータをハッシュ値に変換し、データベースモジュール３１に保存してもらう。
【０１１１】
ＳＳＳ分散符号化モジュール３３は、制御モジュール３０、アプリケーション３２、メッセージ生成モジュール３４、とのインタフェースを有する。
【０１１２】
ＳＳＳ分散符号化モジュール３３は、制御モジュール３０から指定された（（コミュニティの全端末数−１）、（コミュニティの全端末数−１））の閾値で、アプリケーション３２から受信するデータを分散符号化し、得られた（コミュニティの全端末数−１）個のシェアをメッセージ生成モジュール３４に対し渡すように依頼される。
【０１１３】
メッセージ生成モジュール３４は、制御モジュール３０、ＳＳＳ分散符号化モジュール３３、メッセージ送受信モジュール３８、とのインタフェースを有する。
【０１１４】
メッセージ生成モジュール３４は制御モジュール３０から、自端末を除くコミュニティに参加する全端末の宛先情報を受信し、ＳＳＳ分散符号化モジュール３３から受信する（コミュニティの全端末数−１）個のシェアにそれぞれ、他の端末の宛先情報と指定された転送回数を付与してメッセージを生成するように依頼される。これにより、（コミュニティの全端末数−１）個のメッセージを生成することになる。
【０１１５】
また、メッセージ生成モジュール３４は、ＳＳＳ分散符号化モジュール３３からシェアを受信する場合、メッセージ生成時には転送回数を１に設定する。一方、制御モジュール３０から直接シェアが渡された場合は、転送回数を０に設定して、要求された宛先情報を付与してメッセージを生成する。
【０１１６】
また、メッセージ生成モジュール３４は制御モジュール３０から、共通鍵で暗号化されたアプリケーションデータのハッシュ値を、指定された宛先情報を付与してメッセージを生成するように依頼される。
【０１１７】
データ比較モジュール３５は、制御モジュール３０、とのインタフェースを有する。
【０１１８】
データ比較モジュール３５は制御モジュール３０から、アプリケーション３２がハッシュモジュール４２を利用して生成しデータベースモジュール３１に保存しているハッシュ値と、他の端末から受信するハッシュ値とを比較するように依頼される。
【０１１９】
ＳＳＳ復号化モジュール３６は、制御モジュール３０、アプリケーション３２、とのインタフェースを有する。
【０１２０】
ＳＳＳ復号化モジュール３６は制御モジュール３０から、ＳＳＳを利用し、複数のシェアから一つのアプリケーションデータを復元するように依頼される。
【０１２１】
また、ＳＳＳ復号化モジュール３６はアプリケーション３２に対し、復元したアプリケーションデータを渡す。
【０１２２】
メッセージ処理モジュール３７は、制御モジュール３０、メッセージ送受信モジュール３８、とのインタフェースを有する。
【０１２３】
メッセージ処理モジュール３７は制御モジュール３０に対し、メッセージ送受信モジュール３８が他の端末から受信したメッセージからアプリケーションデータのシェア、転送回数、共通鍵により暗号化されたハッシュ値、を取り出し渡す。
【０１２４】
メッセージ送受信モジュール３８は、メッセージ生成モジュール３４、メッセージ処理モジュール３７、とのインタフェースを有するだけでなく、外部の端末と直接ネットワークで結ばれている。
【０１２５】
メッセージ送受信モジュール３８はメッセージ生成モジュール３４から渡されたメッセージをそのメッセージの宛先情報を参考にして、他の端末に送信する。
【０１２６】
また、メッセージ送受信モジュール３８は、受信したメッセージをメッセージ処理モジュール３７に渡す。
【０１２７】
共通鍵暗号方式暗号化・復号化モジュール３９は、制御モジュール３０、とのインタフェースを有する。
【０１２８】
共通鍵暗号方式暗号化・復号化モジュール３９は制御モジュール３０から、共通鍵を渡されるとともに、その鍵を利用した暗号化、または復号化を要求される。
【０１２９】
ハッシュモジュール４２は、制御モジュール３０、データベースモジュール３１、アプリケーション３２、とのインタフェースを持つ。
【０１３０】
ハッシュモジュール４２は制御モジュール３０から、アプリケーションデータをハッシュ値に変換するように依頼される。
【０１３１】
また、ハッシュモジュール４２は、アプリケーション３２から受信するアプリケーションデータをハッシュ値に変換し、データベースモジュール３１に保存する。
【０１３２】
なお、これらの機能を有する端末はコンピュータで実現することもでき、そのコンピュータをこの端末として機能させるコンピュータプログラムは、例えば、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に格納したり、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【０１３３】
端末４０、４１は図１に示される端末１から端末３の２つを示している。
【０１３４】
図８は、既に端末１と端末２の間でコネクション６０が、端末２と端末３の間でコネクション６１が、端末３と端末１の間でコネクション６２が構築されている状態を示す図である。
【０１３５】
図８では端末１、端末２、端末３の間でフルメッシュにコネクションが構築されているだけでなく、それぞれコネクション確立時に認証を行い、既に端末１と端末２の間で共通鍵（２−１−２）が、端末２と端末３の間で共通鍵（２−２−３）が、端末３と端末１の間で共通鍵（２−３−１）がそれぞれの端末間で共有されているものとする。第２の実施の形態では端末１が端末２と端末３の間で正常にコネクションが確立されているかどうかを確認する例について示す。以下で説明する第２の実施の形態のプロセスは端末２、端末３もアプリケーションデータをやり取りしている最中に実施される。
【０１３６】
コネクション構築後、端末間のデータ通信に先立ち端末１では以下のような設定を内部で行う。ここでは端末１を例に説明を行う。
【０１３７】
端末１において、制御モジュール３０がデータベースモジュール３１に、参加者リストを要求する。そして、その参加者リストから参加者数とその参加者の宛先を取得する。
【０１３８】
全参加者数は３なので、自身を除いた端末２と端末３に対して、アプリケーションデータを送信するために、（２、２）の閾値でアプリケーションデータを秘密分散法により分散符号化するように、ＳＳＳ分散符号化モジュール３３に設定を行う。これにより、ＳＳＳ分散符号化モジュール３３はアプリケーション３２から受信するアプリケーションデータを毎回、（２、２）の閾値で分散符号化し、２個のシェアをメッセージ生成モジュール３４に対して渡す制御内容に設定される。
【０１３９】
次に、制御モジュール３０はメッセージ送受信モジュール３８がアプリケーションデータのシェアを含むメッセージを正しい宛先へ送信するために、既にデータベースモジュール３１から取得している宛先情報を利用し、各シェアと端末２または端末３の宛先情報を含んだメッセージを生成するようにメッセージ生成モジュール３４に依頼する。また、このとき、転送回数を１に設定するようにメッセージ生成モジュール３４に依頼する。
【０１４０】
メッセージ生成モジュール３４は制御モジュール３０からの依頼を受け、毎回ＳＳＳ分散符号化モジュール３３から受信する２つのシェアのうち、一方のシェアと端末２の宛先情報を含んだメッセージを生成するとともに、もう一方のシェアと端末３の宛先情報を含んだメッセージを生成する。つまり、第２の実施の形態ではアプリケーションデータ１つに対して、毎回２つのメッセージを生成することになる。
【０１４１】
以上、各端末間でアプリケーションデータをやり取りするための前準備を説明してきたが、実際のデータのやり取りについては、図９以降で説明する。
【０１４２】
図９は端末１のあるアプリケーションデータＡＤ１を（２、２）の閾値で分散符号化して得られた２つのシェア（２−１−２）、シェア（２−１−３）をそれぞれ、端末２と端末３に対して、端末１が送信する様子を示した図である（メッセージ２００、２０１）。
【０１４３】
端末１において、アプリケーション３２によって生成されたアプリケーションデータＡＤ１はＳＳＳ分散符号化モジュール３３を通して、２つのシェア（２−１−２）、シェア（２−１−３）に分散符号化される。そして、メッセージ生成モジュール３４によって、端末２の宛先情報、シェア（２−１−２）を含むメッセージ２００と、端末３の宛先情報、シェア（２−１−３）を含むメッセージ２０１が生成される。メッセージ生成モジュール３４は各メッセージ生成時にアプリケーションデータのシェアの転送回数を１に設定する。
【０１４４】
２つのメッセージ２００、２０１はメッセージ送受信モジュール３８に渡され、メッセージ送受信モジュール３８が各メッセージの宛先情報を見て、メッセージ２００は端末２へ、メッセージ２０１は端末３に送信する。
【０１４５】
また、端末１のアプリケーションデータＡＤ１はハッシュモジュール４２を介して、ハッシュ値ＨＤ１として変換され、データベースモジュール３１に保存される。
【０１４６】
一方、端末２のメッセージ送受信モジュール３８は端末１からメッセージ２００を受信し、それをメッセージ処理モジュール３７に渡す。メッセージ処理モジュール３７はメッセージ２００からシェア（２−１−２）と転送回数を取り出し、制御モジュール３０にそれを渡す。
【０１４７】
端末２の制御モジュール３０はシェア（２−１−２）をデータベースモジュール３１に保存する。また、転送回数を参照し、シェア（２−１−２）を転送するかどうかを決定する。ここでは１に設定されていたので、再度転送しなければならない。制御モジュール３０は自端末とメッセージ２００の発信元端末を除く全端末（つまり、端末３）に対して、シェア（２−１−２）を転送するために、メッセージ生成モジュール３４に対してそれを渡す。また、転送回数を０にするように要求する。
【０１４８】
メッセージ生成モジュール３４は転送回数を０に設定し、シェア（２−１−２）、端末３の宛先情報を含むメッセージ２０２を生成する。生成されたメッセージ２０２はメッセージ送受信モジュール３８に渡され、端末３に対して送信される（図１０のメッセージ２０２）。
【０１４９】
同様に端末３も同様にメッセージ２０１を処理し、転送回数が０に設定され、シェア（２−１−３）を含んだメッセージ２０３を端末２に対して送信する。
【０１５０】
図１０は、端末２、端末３が端末１からそれぞれメッセージ２００、２０１を受信した後にそれぞれのメッセージに含まれるシェア（２−１−２）、（２−１−３）を含んだ、メッセージ２０２、２０３を端末３、端末２に対し送信する様子を示した図である。
【０１５１】
端末２のメッセージ送受信モジュール３８はメッセージ２０３を受信し、メッセージ２００と同様にメッセージ処理モジュール３７がメッセージから、転送回数とシェア（２−１−３）を取り出し、これらを制御モジュール３０に渡す。制御モジュール３０は転送回数が０に設定されているのを見て、シェアの転送を行わないと判断する。そして、取得したシェア（２−１−３）とデータベースモジュール３１に保存されていたシェア（２−１−２）を利用して、もとのアプリケーションデータＡＤ１を復元するために、制御モジュール３０はＳＳＳ復号化モジュール３６に対し、復号化を行うように依頼する。
【０１５２】
ＳＳＳ復号化モジュール３６は２つのシェア（２−１−２）、（２−１−３）を利用して元のアプリケーションデータＡＤ１を復元した後、アプリケーション３２にそのアプリケーションデータＡＤ１を渡す。また、端末１が端末２と端末３の間のコネクションが確立され、データ通信が正常に行われているかどうかを確認するために、端末１に必要となるデータを生成するために、そのアプリケーションデータＡＤ１は制御モジュール３０にも返される。
【０１５３】
端末２の制御モジュール３０はアプリケーションデータＡＤ１に含まれるＩＤを参照して、端末１のアプリケーションデータであると判断する。そして、端末１が端末２と端末３の間のデータ通信が正常に行われていることを確認できるようにするために、ハッシュモジュール４２を利用して、アプリケーションデータＡＤ１のハッシュ値を求めた後、そのハッシュ値を、端末１と共有している共通鍵（２−１−２）を利用して、共通鍵暗号方式暗号化・復号化モジュール３９が暗号化する。そして、得られた暗号化ハッシュ値（２−２）を端末１に対して、送信するために、メッセージ生成モジュール３４、メッセージ送受信モジュール３８を利用して送信する（図１１のメッセージ２０４）。
【０１５４】
同様に端末３は端末２と同じ処理を行い、復元されたアプリケーションデータＡＤ１のハッシュ値を共通鍵（２−３−１）により暗号化し、得られた暗号化ハッシュ値（２−３）を端末１に対して送信する（図１１のメッセージ２０５）。
【０１５５】
図１１は、端末２と端末３がそれぞれ暗号化ハッシュ値（２−２）、（２−３）を含んだメッセージ２０４、２０５を端末１に送信する様子を示した図である。
【０１５６】
端末１は端末２からメッセージ２０４を受信すると、メッセージ送受信モジュール３８およびメッセージ処理モジュール３７を介して、暗号化ハッシュ値（２−２）を得る。
【０１５７】
端末１の制御モジュール３０は暗号化ハッシュ値（２−２）を、共通鍵（２−１−２）を利用し共通鍵暗号方式暗号化・復号化モジュール３９を介して、復号化を行い、ハッシュ値ＨＤ１’を得る。
【０１５８】
ハッシュ値ＨＤ１’とデータベースモジュール３１に保存しているハッシュ値ＨＤ１とが等しいかどうかを、データ比較モジュール３５を利用して比較する。比較結果が正常（ＨＤ１＝ＨＤ１’）であれば、端末３から端末２への方向のデータ通信が正常であることが確認できる。
【０１５９】
同様に、端末１は端末３からメッセージ２０５を受信し、同様の方法でデータ１との比較を行う。比較結果が正常であれば、端末２から端末３への方向のデータ通信が正常であることを確認できる。
【０１６０】
また、同様に端末２、端末３は端末１と同様の処理を行う。他の端末経由でアプリケーションデータを送信することで、端末２にとっては端末１と端末３間、端末３にとっては端末１と端末２間、においてコネクションが確立され、データ通信が正常に行われているかどうかを確実に確認することができる。
【０１６１】
以上、発信元端末はアプリケーションデータを直接送るのではなく、他の端末経由で送信するため、他の端末同士のコネクションが正常でなく、データ通信が正常でないと、他の端末は発信元端末が生成したアプリケーションデータと同じものを復元することもできない。そして、発信元端末に送り返される暗号化データを復号化して得られたアプリケーションデータのハッシュ値と、発信元端末が保存しているアプリケーションデータのハッシュ値とを比較できない。よって、各端末が第２の実施の形態のように他の端末にアプリケーションデータのハッシュ値を送信することで、最終的に発信元端末は、他の端末同士のコネクション、データ通信が正常であるかどうかを確実に確認することができる。
【０１６２】
また、アプリケーションデータをそのまま発信元端末に送り返すのではなく、発信元端末とその他の端末間で一意に共有している共通鍵を利用して暗号化して送り返すことで、コミュニティに参加している端末からのメッセージであることを一意に認証することができる。
【０１６３】
また、アプリケーションデータを直接、他の端末に送信するのではなく、一度、部分情報（シェア）に分解して、他の端末を経由して、発信元端末を除く全端末にデータを送信するために、コミュニティに参加する端末以外の不正な端末によって、そのシェアが盗聴されたとしても、アプリケーションの部分情報であるため、元のアプリケーションデータを取得することができず、コミュニティ内のデータ通信に対しセキュリティレベルを向上させることが可能である。
【０１６４】
また、他の端末がアプリケーションデータを送り返すときに、アプリケーションデータを含んだメッセージをそのまま共通鍵を利用して、暗号化するのではなく、アプリケーションデータのハッシュ値を求めてから、そのハッシュ値を含んだメッセージを共通鍵で暗号化するため、発信元端末に送り返すためのデータ量を小さくすることができ、データ通信に必要となる帯域を抑制することができる。
【０１６５】
また、発信元端末はアプリケーションデータをハッシュ値としてデータベースモジュールに保存しておくため、各端末のデータ保存に必要な容量を抑えることができる。
【０１６６】
また、このように、フルメッシュ網において各端末が他の全端末間のコネクション接続を確実に確認する方法を、コンピュータにより動作する端末に実行させるコンピュータプログラムは、上記した記録媒体に格納したり、通信網を介して伝送させることができる。
【図面の簡単な説明】
【０１６７】
【図１】本発明の実施の形態に係るネットワークの構成を示す図である。
【図２】図１に示された端末１から端末３における内部のモジュール構成の例を示す図であり、第１の実施の形態に係る図である。
【図３】端末１、端末２、端末３の間で１対１にコネクション確立されている状態を示す図であり、第１の実施の形態に係る図である。
【図４】図３において、端末１が端末２、端末３に対してメッセージを送信する様子を示す図である。
【図５】図３において、端末２と端末３がそれぞれお互いにメッセージを送信する様子を示す図である。
【図６】図３において、端末２と端末３が端末１に対してメッセージを送信する様子を示す図である。
【図７】図１に示された端末１から端末３における内部のモジュール構成の例を示す図であり、第２の実施の形態に係る図である。
【図８】端末１、端末２、端末３の間で１対１にコネクション確立されている状態を示す図であり、第２の実施の形態に係る図である。
【図９】図８において、端末１が端末２、端末３に対してメッセージを送信する様子を示す図である。
【図１０】図８において、端末２と端末３がそれぞれお互いにメッセージを送信する様子を示す図である。
【図１１】図８において、端末２と端末３が端末１に対してメッセージを送信する様子を示す図である。
【符号の説明】
【０１６８】
１、２、３、２０、２１、４０、４１・・・端末（コミュニケーション端末）
１０、３０・・・制御モジュール
１１、３１・・・データベースモジュール
１２、３２・・・アプリケーション
１３、３３・・・ＳＳＳ分散符号化モジュール
１４、３４・・・メッセージ生成モジュール
１５、３５・・・データ比較モジュール
１６、３６・・・ＳＳＳ復号化モジュール
１７、３７・・・メッセージ処理モジュール
１８、３８・・・メッセージ送受信モジュール
１９、３９・・・共通鍵暗号方式暗号化・復号化モジュール
４２・・・ハッシュモジュール
５０、５１、５２、６０、６１、６２・・・コネクション
１００、１０１、１０２、１０３、１０４、１０５、２００、２０１、２０２、２０３、２０４、２０５・・・メッセージ
１０００・・・ネットワーク
【図１】
2006211118.tif 000003
【図２】
2006211118.tif 000004
【図３】
2006211118.tif 000005
【図４】
2006211118.tif 000006
【図５】
2006211118.tif 000007
【図６】
2006211118.tif 000008
【図７】
2006211118.tif 000009
【図８】
2006211118.tif 000010
【図９】
2006211118.tif 000011
【図１０】
2006211118.tif 000012
【図１１】
2006211118.tif 000013