本発明の実施の形態を、図面を参照して説明する。
図1は本発明の実施の形態に係る端末間の関係を表したネットワークの構成を示す説明図である。
端末1、端末2、端末3、端末4、公開鍵サーバ5はネットワーク100に接続しており、それらの間で通信可能であるとする。図1の状態では、各端末間ではコネクションが確立されていないとする。また、公開鍵サーバ5は複数の端末の公開鍵を一括管理しており、端末からの要求に応じて、公開鍵を提供するリポジトリであるとする。
公開鍵サーバ5は少なくとも端末1、端末2、端末3、端末4の公開鍵を管理しているとする。ネットワーク100は任意の情報をやり取りするためのインフラであり、例えば、インターネットやプライベートネットワークを表す。
図2は、図1で示された端末1、端末2、端末3、端末4、のそれぞれが持つ共通の機能モジュールの構成を示した図である。
ここで、コミュニティとは複数の端末間でフルメッシュにコネクションを確立することで形成されるフルメッシュ網であるとし、最低2つの端末間で構築される1対のコネクションが必要となる。
また、コミュニティにおいて発生する、端末の新規参加・加入や離脱といったイベントにおいて、コミュニティに属していない端末の招待を希望し、実際にその端末に対して招待を行う任意の端末、またはコミュニティに属していない端末が、あるコミュニティに新規に参加・加入するために、初めてアクセスを行ったコミュニティに属する任意の相手の端末を応対端末と呼ぶ。
また、コミュニティに属しておらず、新規に招待される、または参加・加入する端末は新規端末と呼ぶ。さらに、応対端末が属するコミュニティにおいて、応対端末を除くコミュニティに属する端末をメンバ端末と呼ぶ。コミュニティにおいて、応対端末は1つだけであり、残りの端末がメンバ端末となる。
制御モジュール110は、メッセージ生成モジュール126、メッセージ解析モジュール128、公開鍵暗号方式暗号化モジュール121、許可情報生成モジュール112、VSS分散符号化モジュール116、共通鍵生成モジュール118、コネクション確立情報比較モジュール115、コネクション確立情報生成モジュール114、意思入力モジュール111、データベース125、公開鍵暗号方式復号化モジュール122、VSS復号化モジュール117、シェア検証モジュール129とのインタフェースを持つ。
メッセージ生成モジュール126に対しては、コネクション確立要求メッセージ、コネクション確立確認メッセージ、コミュニティ参加・加入伺いメッセージ、コミュニティ招待メッセージ、コミュニティ参加・加入承諾メッセージ、賛否の一次意思決定メッセージ、賛否の最終意思決定メッセージ、宛先情報シェア取得要求メッセージ、応答メッセージ、公開鍵取得要求メッセージ、投票用情報提供メッセージ、一次結果通知メッセージ、最終結果通知メッセージを生成するように依頼する。
コネクション確立要求メッセージは、自端末が任意のコミュニティに属しておらず、さらに相手端末も任意のコミュニティに属していないときにコネクションの確立を要求するときと、応対端末からコミュニティ招待メッセージを受信した新規端末が各メンバ端末に対してコネクションの確立を要求するときと、応対端末へ参加・加入を示すメッセージを送信した新規端末が全メンバ端末に対してコネクションの確立を要求するときに生成する。
コネクション確立確認メッセージは、コネクション確立要求メッセージの応答メッセージを受信したときと、コミュニティ参加・加入承諾メッセージを受信したときの応答として生成する。
コミュニティ参加・加入伺いメッセージは、新規端末をコミュニティに招待または参加・加入させる前に、応対端末が全メンバ端末に新規端末のコミュニティへの参加・加入に対する賛否を伺うときに生成する。
コミュニティ参加・加入承諾メッセージは、新規端末が応対端末から受信したコミュニティ招待メッセージの応答メッセージであり、コミュニティへの参加・加入を承諾し、全メンバ端末とコネクション確立した後に生成する。
宛先情報シェア取得要求メッセージは、各メンバ端末が宛先情報を復元するために必要となる宛先情報シェアを他の全メンバ端末から取得するために生成する。
賛否の一次意思決定メッセージは、コミュニティ参加・加入伺いメッセージを応対端末から受信したメンバ端末が、新規端末のコミュニティへの参加・加入の可否を決定した後、応答メッセージとして生成する。
投票用情報提供メッセージは、全端末数が3以上の場合にメンバ端末が一次意思決定後に他の全メンバ端末に投票用情報となる許可情報シェア(許可情報を前記VSS分散符号化モジュール116により分散符号化して得られるシェア)を提供するために生成する。
一次結果通知メッセージは、応対端末が全メンバ端末から賛否の一次意思決定メッセージを受信後、新規端末のコミュニティへの参加・加入に対する賛否の一次意思決定において、全メンバ端末が賛成の場合は投票準備が終了し投票が可能であることを、そうでない場合は投票が不可能であることを応対端末が全メンバ端末に通知するために生成する。
賛否の最終意思決定メッセージは、賛否の一次意思決定メッセージを送信したメンバ端末が、応対端末から一次結果通知メッセージを受信し応答メッセージを返した後、一次結果通知メッセージの内容が投票可能であることを示していた場合に、最終的に新規端末のコミュニティへの参加・加入の可否を決定した後、応対端末に意思を伝えるために生成する。
最終結果通知メッセージは、応対端末が全メンバ端末から賛否の最終意思決定メッセージを受信後、新規端末のコミュニティへの参加・加入に対する賛否の最終意思決定において、全メンバ端末が賛成であったか、そうでなかったかを応対端末が全メンバ端末に通知するために生成する。
コミュニティ招待メッセージは、応対端末が新規端末に参加・加入を依頼するときに生成する。
応答メッセージは、端末においてはコネクション確立要求メッセージを受信したとき、または賛否の最終意思決定メッセージを受信したときに、または宛先情報シェア取得要求メッセージを受信したときに、または投票用情報提供メッセージを受信したときに、または一次結果通知メッセージを受信したときに、または最終結果通知メッセージを受信したときに、公開鍵サーバ5にとっては公開鍵取得要求メッセージを受信したときに、応答として生成する。
公開鍵取得要求メッセージは、公開鍵を外部の公開鍵サーバ5に問い合わせるときに生成する。
制御モジュール110はメッセージの作成を依頼する際、メッセージをセキュアに送信するために、コネクション確立要求メッセージ、コミュニティ招待メッセージの場合は、公開鍵、セッションキー(共通鍵)を渡し、送信するメッセージに電子署名と暗号化を施すよう依頼する。その他のメッセージ(公開鍵取得要求メッセージを除く)の場合は、セッションキーを渡し暗号化してメッセージを送信するように依頼する。
また、コミュニティ参加・加入伺いメッセージの場合、全端末数が2の場合は新規端末の宛先情報を、3以上の場合は端末の宛先情報をVSSにより分散符号化した宛先情報シェアと、宛先情報シェアに不正がないかどうかを検証するための宛先情報シェア検証用情報を添付する。
宛先情報シェア取得要求メッセージの場合、新規端末の宛先情報シェアを添付する。
賛否の一次意思決定メッセージの場合、賛成の意思を示す場合は、全端末数が2の場合は許可情報をSSSにより閾値(3、3)で分散符号化して得られた許可情報シェアを、全端末数が3以上の場合はVSSにより閾値((全端末数)、(全端末数))で分散符号化して得られた許可情報シェアと、許可情報シェアが不正なく正しく生成されているかどうかを確認するための許可情報シェア検証用情報を添付する。
投票用情報提供メッセージの場合、許可情報をVSSにより閾値((全端末数)、(全端末数))で分散符号化し得られた許可情報シェアと、許可情報シェア検証用情報を添付する。
賛否の最終意思決定メッセージの場合、メンバ端末が賛成の意思を示す場合は、許可チケット(全端末数が2の場合は、自端末が生成した許可情報シェアと自端末の宛先情報とを、全端末数が3以上の場合は、他の全メンバ端末から取得した(全端末数−2)個の許可情報シェアと自端末の宛先情報とを新規端末の公開鍵で暗号化したもの)を賛成票として添付する。
コミュニティ招待メッセージの場合、新規端末が全メンバ端末とコネクションを確立するために必要となる(全端末数−1)×(全端末数−1)個の許可チケットを添付する。
コネクション確立要求メッセージの場合、新規端末が各メンバ端末に送信する場合には、全端末が2の場合は2個の許可情報シェアを、3以上の場合は(全端末数−1)×(全端末数−1)個の許可情報シェアを添付する。自端末と相手端末が両方ともコミュニティに参加・加入していない場合には何も添付しない。
コミュニティ参加・加入承諾メッセージの場合、新規端末は全メンバ端末とコネクションを確立したときに取得するコネクション確立情報シェアを(全端末数−1)個添付する。
最終結果通知メッセージの場合、応対端末は1個のコネクション確立情報シェアを添付する。
メッセージ解析モジュール128に対しては、制御モジュール110は受信するメッセージのうち、電子署名と暗号化が施されているコネクション確立要求メッセージ、またはコミュニティ招待メッセージを解読するのに必要な公開鍵がデータベース125にない場合に、公開鍵取得要求が伝えられる。そして、公開鍵取得後、制御モジュール110はメッセージ解析モジュール128に取得した公開鍵を渡す。
公開鍵暗号方式暗号化モジュール121に対しては、公開鍵を提供し、許可情報シェアを許可情報シェアの配布元端末の宛先情報を含めて暗号化するように依頼する。
許可情報生成モジュール112に対しては、許可情報の生成を依頼する。
VSS分散符号化モジュール116に対しては、VSSによって各種情報(端末の宛先情報、許可情報、コネクション確立情報)の分散符号化を依頼する。
共通鍵生成モジュール118に対しては、メッセージのなりすましや改竄、盗聴を防ぐためにメッセージに電子署名や暗号化を施すときに必要となるセッションキー(共通鍵)の生成を依頼する。
コネクション確立情報比較モジュール115に対しては、コネクション確立情報の比較を依頼する。依頼は、コミュニティ参加・加入承諾メッセージを受信したときに発生し、このメッセージに含まれるコネクション確立情報シェアをコネクション確立情報比較モジュール115に提供する。
コネクション確立情報生成モジュール114に対しては、コネクション確立情報の生成を依頼する。依頼は、応対端末が全メンバ端末から賛否の最終意思決定メッセージを受信後、全メンバ端末が新規端末のコミュニティへの参加・加入に対し賛成であったならば、最終結果通知メッセージを各メンバ端末に送信する前に発生する。
意思入力モジュール111に対しては、各種意思決定(コネクションを確立してもよいかどうかの決定、コミュニティへの新規端末の参加・加入に対する賛否の一次決定、コミュニティへの新規端末の参加・加入に対する賛否の最終決定、コミュニティへの参加・加入の決定)を依頼する。
データベース125に対しては、各種情報の問い合わせと保存依頼を行う。
公開鍵暗号方式復号かモジュール122に対しては、自端末の公開鍵で暗号化された許可情報シェア(許可チケット)を復号化するように依頼する。依頼は、コミュニティ招待メッセージを新規端末が受信したときに発生する。
VSS復号化モジュール117に対しては、全端末が3以上のときに分散符号化された宛先情報シェアを復号化するように依頼する。
シェア検証モジュール129に対しては、受信したメッセージに添付されている許可情報シェア、または宛先情報シェアに不正がないかどうかのチェックを依頼する。
意思入力モジュール111は制御モジュール110とインタフェースを持つ。制御モジュール110から、コネクションを確立してもよいかどうか、またはコミュニティに新規端末を加えても良いかどうか、またはコミュニティに参加・加入するかどうか、の問い合わせがあるので、それに対する(YESかNOの)回答を制御モジュール110に返す。
許可情報生成モジュール112は制御モジュール110と、データベース125とインタフェースを持つ。
制御モジュール110から許可情報の生成を依頼されると、許可情報生成モジュール112は許可情報を生成し、データベース125に保存後、生成した許可情報を制御モジュール110に返す。この許可情報は複数の端末間でフルメッシュにコネクションを確立することで形成されるコミュニティに新規に端末を招待または参加・加入させるときに必要であり、その新規端末の宛先情報、許可情報の生成時の時刻情報、さらに任意のランダムなキーワードで構成される。
許可情報比較モジュール113は制御モジュール110、VSS復号化モジュール117、データベース125とインタフェースを持つ。
制御モジュール110に対しては、許可情報の比較を依頼される。依頼は、各メンバ端末が新規端末からコネクション確立要求メッセージを受信したときに発生する。このとき、全端末数が2の場合、2個の許可情報シェアが制御モジュール110から提供され、これら許可情報シェアと自端末のデータベース125で保存している許可情報シェアとを併せて、VSS復号化モジュール117に許可情報を復号化するように依頼し、復号化された許可情報とデータベース125に保存している許可情報とを比較し、相違がないか調べ、相違がない場合は、許可情報に含まれる時刻情報と比較時の時刻情報の差分が一定の値以下であるかどうか調べ、一定値以下であれば、さらに許可情報に含まれる端末の宛先情報とコネクション確立要求メッセージを送信した端末の宛先情報が合っているかどうか比較する。
なお、一定値は予め設定された任意の値であり、図示しない許可情報有効期間設定手段により入力され、設定される。
また、全端末数3が以上の場合、メッセージに添付されていた(全端末数−1)×(全端末数−1)個のうち自端末が配布した(全端末数−1)個の許可情報シェアが制御モジュール110から提供され、これら許可情報シェアと自端末のデータベース125で保存している許可情報シェアとを併せて、VSS復号化モジュール117に許可情報を復号化するように依頼し、復号化された許可情報とデータベース125に保存している許可情報とを比較し、相違がないか調べ、相違がない場合は、許可情報に含まれる時刻情報と比較時の時刻情報の差分が一定の値以下であるかどうか調べ、一定値以下であれば、さらに許可情報に含まれる端末の宛先情報とコネクション確立要求メッセージを送信した端末の宛先情報が合っているかどうか比較する。
以上の比較を終了すると、制御モジュール110に対して正常応答を返す。
コネクション確立情報生成モジュール114は制御モジュール110とインタフェースを持つ。
制御モジュール110に対しては、コネクション確立情報の生成依頼を受け、新規端末の宛先情報、コネクション確立情報の生成時の時刻情報、さらに任意のランダムなキーワードで構成し、生成する。そして、制御モジュール110にその情報を返す。
コネクション確立情報比較モジュール115は制御モジュール110、データベース125、VSS復号化モジュール117とインタフェースを持つ。
制御モジュール110に対しては、コネクション確立情報を比較するように依頼される。依頼は、コミュニティ参加・加入承諾メッセージを受信したときに発生する。
コネクション確立情報比較モジュール115は、コミュニティ参加・加入承諾メッセージに含まれる(全端末数−1)個のコネクション確立情報シェアを制御モジュール110から提供されると、そのコネクション確立情報シェアとデータベース125に保存しているコネクション確立情報シェアからVSS復号化モジュール117を介してコネクション確立情報を復元する。
復元したコネクション確立情報はデータベース125に保存しているコネクション確立情報と比較する。このとき、それらの情報に相違がないかどうか比較し、相違がなければ、コネクション確立情報に含まれる時刻情報と現在の時刻情報の差分がある一定値以下であるかどうか確認する。
なお、一定値は予め設定された任意の値であり、図示しないコネクション確立情報有効期間設定手段により入力され、設定される。
以上の比較を終了すると、制御モジュール110に対して正常応答を返す。
VSS分散符号化モジュール116は制御モジュール110、データベース125とインタフェースを持つ。
制御モジュール110に対しては、各種情報が提供され、VSSまたはSSSによる分散符号化を依頼される。
端末の宛先情報の場合、VSSにより、閾値((全端末数−1)、(全端末数−1))で分散符号化し、(全端末数−1)個の宛先情報シェアを生成する。さらに、宛先情報シェアを検証するための宛先情報シェア検証用情報を生成する。
許可情報の場合、全端末数が2の場合はSSSにより、閾値(3、3)で分散符号化し、3個の許可情報シェアを生成し、2個をデータベース125に保存後、残り一つを制御モジュール110に返す。
また、全端末数が3以上の場合は、VSSにより閾値((全端末数)、(全端末数))で分散符号化し(全端末数)個の許可情報シェアを生成する。また、許可情報シェアを検証するための許可情報シェア検証用情報を生成する。そして、(全端末数)個の許可情報シェアのうち、1個をデータベース125に保存後、残りの許可情報シェアと許可情報シェア検証用情報を制御モジュール110に返す。
コネクション確立情報の場合、SSSによる閾値((全端末数)、(全端末数))で分散符号化し、(全端末数)個のコネクション確立情報シェアを生成する。そして、得られたコネクション確立情報シェアのうち、一つをデータベース125に保存し、残りを制御モジュール110に返す。
VSS復号化モジュール117は制御モジュール110、コネクション確立情報比較モジュール115、許可情報比較モジュール113とインタフェースを持つ。
VSS復号化モジュール117はVSSまたはSSSの閾値法を用いて、複数のシェアから元の情報を復元する。
制御モジュール110に対しては、宛先情報シェアから宛先情報の復元を依頼される。
コネクション確立情報比較モジュール115に対しては、コネクション確立情報シェアからコネクション確立情報の復元を依頼される。
許可情報比較モジュール113に対しては、許可情報シェアから許可情報の復元を依頼される。
共通鍵生成モジュール118は制御モジュール110、データベース125とインタフェースを持つ。
制御モジュール110に対しては、セッションキーの生成を依頼される。共通鍵生成モジュール118は共通鍵暗号方式のセッションキーを生成し、それをデータベース125に保存した後、制御モジュール110に返す。
共通鍵暗号方式暗号化モジュール119はメッセージ生成モジュール126とインタフェースを持つ。
メッセージ生成モジュール126に対しては、セッションキーによる暗号化を依頼されるので、共通鍵暗号方式暗号化モジュール119は、共通鍵暗号化方式により暗号化を行う。
共通鍵暗号方式復号化モジュール120はメッセージ解析モジュール128、データベース125とインタフェースを持つ。
メッセージ解析モジュール128に対しては、受信したメッセージの復号化を依頼される。依頼を受けると、メッセージの発信元端末と共有しているセッションキーをデータベース125に問い合わせ、取得した後にそのセッションキーを利用して復号化を行う。
公開鍵暗号方式暗号化モジュール121は制御モジュール110、メッセージ生成モジュール126とインタフェースを持つ。
制御モジュール110に対しては、コミュニティ招待メッセージ、または賛否の最終意思決定メッセージを送信するときに添付する情報である許可情報シェアを自端末の宛先情報を含めて、新規端末の公開鍵で暗号化するように依頼される。
メッセージ生成モジュール126に対しては、コネクション確立情報メッセージ、コミュニティ招待メッセージ、の作成の際に実施される電子署名と暗号化において、秘密鍵によるダイジェストの暗号化、公開鍵によるセッションキーの暗号化を依頼される。
公開鍵暗号方式復号化モジュール122は制御モジュール110、メッセージ解析モジュール128、データベース125とインタフェースを持つ。
メッセージ解析モジュール128に対しては、コネクション確立要求メッセージ、コミュニティ招待メッセージを受信したときに、電子署名と暗号化が行われたメッセージの解読のために復号化を依頼される。
制御モジュール110に対しては、許可情報シェア(暗号化されている許可情報シェア)を復号化する目的で復号化を依頼される。
digest生成モジュール123はメッセージ生成モジュール126、メッセージ解析モジュール128とインタフェースを持つ。
送信するメッセージの改竄を防止する目的と、受信したメッセージが改竄されていないかどうか確認する目的の2つの目的でdigest生成モジュール123はハッシュ関数(メッセージダイジェスト関数)を利用して、ダイジェストを生成する。
メッセージ不正判断モジュール124はメッセージ解析モジュール128とインタフェースを持つ。
端末が電子署名と暗号化が施されたメッセージ(コネクション確立要求メッセージ、コミュニティ招待メッセージ)を受信し、そのメッセージの解読が終了したときに、メッセージ不正判断モジュール124はメッセージ解析モジュール128からメッセージの不正がないかどうか確認するように依頼される。このとき、メッセージ解析モジュール128からは復号化されたダイジェストと生成したダイジェストの2つが渡されるので、これらの2つのダイジェストに相違がないかどうかを確認し相違がなければ正常応答をメッセージ解析モジュール128に返す。
データベース125は制御モジュール110、共通鍵暗号方式復号化モジュール120、公開鍵暗号方式復号化モジュール122、許可情報比較モジュール113、コネクション確立情報比較モジュール115、許可情報生成モジュール112、VSS分散符号化モジュール116、共通鍵作成モジュール118とインタフェースを持つ。
データベース125は自端末の秘密鍵、公開鍵、セッションキー、許可情報、許可情報シェア、許可情報シェア検証用情報、端末の宛先情報、宛先情報シェア、宛先情報シェア検証用情報、コネクション確立情報、コネクション確立情報シェア、コミュニティに参加・加入している端末リスト、を管理する。
データベース125は各モジュールから要求される情報を提供したり、逆に保存したりする。
メッセージ生成モジュール126は制御モジュール110、digest生成モジュール123、公開鍵方式暗号化モジュール121、共通鍵暗号方式暗号化モジュール119、メッセージ処理モジュール127とインタフェースを持つ。
制御モジュール110に対しては、コネクション確立要求メッセージ、コネクション確立確認メッセージ、コミュニティ参加・加入伺いメッセージ、コミュニティ招待メッセージ、コミュニティ参加・加入承諾メッセージ、賛否の一次意思決定メッセージ、賛否の最終意思決定メッセージ、宛先情報シェア取得要求メッセージ、応答メッセージ、公開鍵取得要求メッセージ、投票用情報提供メッセージ、一次結果通知メッセージ、最終結果通知メッセージを作成するように依頼される。
メッセージ処理モジュール127はメッセージ生成モジュール126、メッセージ解析モジュール128、外部の端末2〜4、公開鍵サーバ5とインタフェースを持つ。
メッセージ生成モジュール126に対しては、作成されたメッセージをネットワーク100に接続される端末2〜4や公開鍵サーバ5に対して送信するように依頼される。
メッセージ解析モジュール128に対しては、端末2〜4や公開鍵サーバ5からの受信したメッセージに解析処理を行うように依頼される。
メッセージ解析モジュール128は制御モジュール110、digest生成モジュール123、メッセージ処理モジュール127、メッセージ不正判断モジュール124、共通鍵暗号方式復号化モジュール120、公開鍵暗号方式復号化モジュール122とインタフェースを持つ。
メッセージ処理モジュール127から、コネクション確立要求メッセージ、コネクション確立確認メッセージ、コミュニティ参加・加入伺いメッセージ、コミュニティ招待メッセージ、コミュニティ参加・加入承諾メッセージ、賛否の一次意思決定メッセージ、賛否の最終意思決定メッセージ、宛先情報シェア取得要求メッセージ、応答メッセージ、公開鍵取得要求メッセージ、投票用情報提供メッセージ、一次結果通知メッセージ、最終結果通知メッセージの各種メッセージが渡される。
コネクション確立要求メッセージ、コミュニティ招待メッセージが渡される場合、これらのメッセージは電子署名と暗号化が施されているので、公開鍵暗号方式復号化モジュール122、共通鍵暗号方式復号化モジュール120、digest生成モジュール123、メッセージ不正判断モジュール124を用いて、メッセージを解読し、なりすましや改竄をチェックしてから、不正がない場合に制御モジュール110に復号化されたメッセージの内容と添付されている情報を渡す。このとき、メッセージの解読に必要な公開鍵を内部のデータベース125に持っていなければ、制御モジュール110を通して公開鍵を取得する。
その他のメッセージに関しては、セッションキーにより暗号化されているので、共通鍵暗号方式復号化モジュール120を利用して、メッセージの発信元端末と共有しているセッションキーを利用して復号化を行い、復号化されたメッセージの内容と添付されている情報を制御モジュール110に渡す。
シェア検証モジュール129は制御モジュール110とインタフェースを持ち、VSSを利用して分散符号化された各シェア(宛先情報シェア、許可情報シェア)を、他端末から取得しているシェア検証用情報(具体的には宛先情報シェア検証用情報、許可情報シェア検証用情報)を利用して不正がないかどうかを調べる。
端末7は図1の端末1、端末2、端末3、端末4のうちの任意の端末を示す。
図3は図1のコネクションが全く構築されていない初期状態から最小規模のコミュニティが形成されるときの端末1と端末2でやり取りされるメッセージを示す説明図である。図3では端末1があらかじめ端末2へメッセージを送信するための宛先情報を知っているものとする。
端末1は端末2とセキュアにコネクションを確立するために端末2の公開鍵が必要となる。端末1は公開鍵サーバ5に対して、公開鍵取得要求メッセージ300を送信する。公開鍵サーバ5は公開鍵取得要求メッセージ300を受信すると、メッセージの内容を判断し、端末2の公開鍵を添付した応答メッセージ301を返答する。
次に、端末1はコネクション確立要求メッセージ302を端末2に対して送信する。端末2は端末1からコネクション確立要求メッセージ302を受信する。しかし、端末1が送信したメッセージ302は電子署名と暗号化が行われているために最初にメッセージ解読処理を行う。ここで端末1の公開鍵が必要となるが、内部のデータベースに端末1の公開鍵を持っていなければ、公開鍵サーバ5に端末1の公開鍵を公開鍵取得要求メッセージ303により問い合わせる。公開鍵サーバ5は端末1の公開鍵を添付した応答メッセージ304を返答する。
端末2は端末1の公開鍵を取得すると、それを利用してコネクション確立要求メッセージ302を解読し、端末1がコネクションを確立した意思があることを知る。端末2はコネクションを確立するかどうかを図2の意思入力モジュールにより決定し、その意思が反映された応答メッセージ305が端末1に対し返答される。ここでは、端末1のコネクション確立要求を端末2が受け入れたとする。
端末1は応答メッセージ305からコネクション確立が可能であることを知る。そして、コネクション確立確認メッセージ306を端末2に返答し、コネクションを確立する。
図4は図3において端末1が端末2の公開鍵を取得し、コネクション確立要求メッセージ302を端末2に送信し、コネクションを確立するまでの端末1におけるモジュール処理を示すシーケンス図である。
図3において、端末1が端末2とコネクションを確立したいとする。また、端末1は端末2の宛先情報をあらかじめ知っているものとする。端末1の制御モジュールは意思入力モジュールから端末2とコネクションを確立したいことを通知される。
端末1の制御モジュールは端末2にコネクション確立要求メッセージを送信するが、セキュアにコネクションを確立するためにメッセージの電子署名と暗号化を行う。制御モジュールはデータベースに端末2の公開鍵の問い合わせを行い(シーケンス1000、1001)、端末2の公開鍵を持っていなければ、公開鍵サーバ5に対して端末2の公開鍵を問い合わせる(シーケンス1002〜1007)。公開鍵を取得すると、データベースに格納する(シーケンス1008、1009)。
制御モジュールは端末2とコネクション確立後にメッセージのやり取りに利用するセッションキーを生成するよう共通鍵生成モジュールに依頼する(シーケンス1010)。そして、生成されたセッションキーはコネクション確立後、メッセージの暗号化に利用するためにデータベースに格納しておく(シーケンス1011、シーケンス1012)。そして、共通鍵生成モジュールは生成したセッションキーを制御モジュールに返答する(シーケンス1013)。
制御モジュールはメッセージ生成モジュールに対し、電子署名と暗号化を施したコネクション確立要求メッセージを生成するように依頼する(シーケンス1014)。このとき、制御モジュールは端末2と共有するセッションキー、端末1の公開鍵をメッセージ生成モジュールに提供する。
メッセージ生成モジュールはコネクション確立要求の内容が記述したメッセージを生成し、そのメッセージのダイジェストを生成するためにdigest生成モジュールに対し依頼する(シーケンス1015、1016)。
ダイジェストを得ると、制御モジュールはそれを端末1の秘密鍵を利用し、公開鍵暗号方式暗号化モジュールを介して、公開鍵暗号方式で暗号化する(シーケンス1017、1018)。
そして、コネクション確立要求の内容と暗号化されたダイジェストの両方を含んだものをセッションキーにより、共通鍵暗号方式で暗号化する(シーケンス1019、1020)。これを情報Aとする。セッションキーは端末2の公開鍵により公開鍵暗号方式で暗号化する(シーケンス1021、1022)。これを情報Bとする。そして、情報Aと情報Bを併せてコネクション確立要求メッセージとして、メッセージ処理モジュールを通じて(シーケンス1023)、端末2に送信する(シーケンス1024)。
以下、メッセージに電子署名と暗号化を行うプロセス(シーケンス1015〜1022)をメッセージ電子署名・暗号化プロセスと呼ぶ。
端末1は端末2からの応答を待つ。そして、応答メッセージ305を端末1のメッセージ処理モジュールが受信すると(シーケンス1025)、そのメッセージは(シーケンス1017、1018で生成した)端末2と共有しているセッションキーで暗号化されているので、メッセージ解析モジュールを通じて(シーケンス1026)、メッセージ解読処理を行う(シーケンス1027〜1030)。
以下、セッションキーによるメッセージの復号化プロセス(シーケンス1027〜1030)をメッセージ復号化プロセスと呼ぶ。
メッセージ解析モジュールはメッセージを解読後、復号化されたメッセージを制御モジュールに渡す。
制御モジュールは復号化されたメッセージの内容からコネクション確立が可能であることを知る。そして、制御モジュールはコネクション確立確認メッセージを送信するが、端末2には既にセッションキーがわたっているため、セッションキーによる共通鍵暗号方式でメッセージを暗号化し送信する(シーケンス1032〜1036)。
以下、セッションキーによるメッセージの暗号化プロセス(シーケンス1033、1034)をメッセージ暗号化プロセスと呼ぶ。
図4において、シーケンス1004、1005はそれぞれ図3のメッセージ300、301に、シーケンス1025は図3のメッセージ305に、シーケンス1036は図3のメッセージ306に相当する。
図5は図4のシーケンス1025において端末1から送信されたコネクション確立要求メッセージ305を端末2が受信したときのモジュール処理を示すシーケンス図である。
端末2のメッセージ処理モジュールはメッセージ302を受信すると、電子署名と暗号化が行われているので、メッセージの解読を行う。
はじめにメッセージ302に含まれている情報Aと情報Bのうち、情報Bからセッションキーを取得するために、端末2の秘密鍵を利用して公開鍵暗号方式により復号化を行い、セッションキーを取得する(シーケンス1101〜1105)。
次に得られたセッションキーを用い、情報Aを共通鍵暗号方式により復号化する(シーケンス1106、1107)。得られた情報はコネクション確立要求の内容と端末1の秘密鍵で暗号化されたダイジェストを含む。暗号化されたダイジェストからダイジェストを取得するために端末1の公開鍵を利用して復号化する(シーケンス1108〜1111)。このとき、端末1の公開鍵を端末2のデータベースが持っていない場合は、メッセージ解析モジュールは一度、制御モジュールに端末1の公開鍵を取得するように依頼する(シーケンス1112)。
制御モジュールは公開鍵サーバ5に対し、端末1の公開鍵を要求する(シーケンス1113〜1118)。取得後、制御モジュールは端末1の公開鍵をデータベースに保存する(シーケンス1119、1120)。そして、制御モジュールはメッセージ解析モジュールに取得した端末1の公開鍵を渡す(シーケンス1121)。
メッセージ解析モジュールはその公開鍵を用いて暗号化されたダイジェストの復号を行う(シーケンス1122、1123)。これをダイジェストCとする。
ダイジェスト復号化後、メッセージ解析モジュールはコネクション確立要求の内容が改竄されていないかどうか確認するために、得られたコネクション確立要求の内容からダイジェストを生成する(シーケンス1124、1125)。これをダイジェストDとする。そして、ダイジェストCとDを比較し、不正がないかチェックするようにメッセージ不正判断モジュールに依頼する(シーケンス1126)。
メッセージ不正判断モジュールはダイジェストCとDの相違を調べ、相違がなければ正常応答を返す(シーケンス1127)。
メッセージ解析モジュールは正常応答を受けると、制御モジュールに対して、コネクション確立要求の内容とセッションキーを渡す(シーケンス1128)。
以下、電子署名と暗号化されたメッセージの解読処理(シーケンス1102〜1127)をメッセージ解読プロセスと呼ぶ。
制御モジュールはコネクション確立要求の内容より、端末1がコネクションを端末2と構築したいことを知る。制御モジュールは意思入力モジュールに対し、コネクション確立に対する意思決定の判断を依頼する(シーケンス1129)。ここで端末2はコネクション確立の意思があるとする。意思入力モジュールは制御モジュールに対し、コネクション確立の意思があることを伝える(シーケンス1130)。
制御モジュールはコネクション確立後のセキュアなメッセージのやり取りのために、データベースに対し、セッションキーを保存する(シーケンス1131、1132)。
応答メッセージを返すために、制御モジュールはコネクション確立の承諾の内容を示したメッセージを作成するようにメッセージ生成モジュールに依頼する(シーケンス1133)。このとき、制御モジュールはセッションキーをメッセージ生成モジュールに提供する。
メッセージ生成モジュールはコネクション確立の承諾の内容を示すメッセージを生成し、さらにメッセージ暗号化プロセスを行い、メッセージ処理モジュールを通じて応答メッセージ305を送信する(シーケンス1134〜1137)。
応答メッセージ305を送信後、端末2のメッセージ処理モジュールは端末1からコネクション確立確認メッセージを受信すると(シーケンス1138)、メッセージは端末1と共有しているセッションキーで暗号化されているので、メッセージ復号化プロセスを行い、メッセージ解析モジュールは復号化されたメッセージを制御モジュールに渡す(シーケンス1139〜1144)。
制御モジュールは復号化されたメッセージの内容からコネクション確立したことを知る。
上記の過程により、端末1と端末2の間でコネクションが確立する。
図5において、シーケンス1100は図3のメッセージ302に、シーケンス1137は図3のメッセージ305に、シーケンス1138は図3のメッセージ306に相当する。
[第1の実施の形態]
図6は既に端末1と端末2の間でコネクション10が確立しており、端末1と端末2で全端末数が2の最小規模のコミュニティ200が形成されている状態から、コミュニティ200側から新規端末として、端末3をコミュニティ200へ招待するために必要となる、端末間でやり取りされるメッセージを示す説明図である。
図6では端末3をコミュニティ200に招待を希望する端末は端末1であるとする(つまり、端末1が応対端末、端末3が新規端末であり、メンバ端末は端末2である)。端末1は初めに端末3とセキュアにコネクションを確立するために必要となる公開鍵を内部のデータベースに持っているかどうか問い合わせ、持っていなければ外部の公開鍵サーバ5に取得要求を行う(メッセージ400、401)。そして、端末2に対して、招待希望の内容を示すコミュニティ参加・加入伺いメッセージ402を送信する。このとき、メッセージには端末3の宛先情報を含める。
端末2はコミュニティ参加・加入伺いメッセージ402を受信すると、メッセージ内容から端末1が端末3のコミュニティへの招待を希望していることを知る。
端末2は端末3とセキュアにコネクションを張るために必要となる公開鍵を持っているかどうか内部のデータベースに問い合わせし、持っていなければ、公開鍵サーバ5に対して取得要求を行う(メッセージ403、メッセージ404)。そして、公開鍵取得後、端末2は端末3をコミュニティ200へ参加・加入させるかどうかの意思の一次決定を行う。ここで端末2は賛成であるとする。
端末2は許可情報(1−2)を生成し、それを閾値(3、3)で分散符号化し、許可情報シェア(1−2−1)、許可情報シェア(1−2−2)、許可情報シェア(1−2−3)を生成する。
そして、許可情報(1−2)と3つの許可情報シェアのうち、2つの許可情報シェア(ここでは許可情報シェア(1−2−2)、許可情報シェア(1−2−3)とする)は端末2自身が端末3のコネクション確立要求を受けたときに、端末3がコミュニティ200への参加・加入に対しコミュニティに参加・加入している全端末の賛成を得ているかどうかを確認する目的と、自端末の投票用情報として使用する目的で内部のデータベースに保存しておく。
端末2は端末1に対して、コミュニティ参加・加入伺いメッセージ402の応答メッセージとして、投票用情報として許可情報シェア(1−2−1)を添付した、賛否の一次意思決定メッセージ405を送信する。端末3がコミュニティへ参加・加入するためには、賛否の最終意思決定の際に全端末からの許可情報シェアを取得する必要がある。
端末1は賛否の一次意思決定メッセージ405を受信し、メッセージ内容から端末3のコミュニティ200への参加・加入に対して端末2が賛成であることを確認し、許可情報シェア(1−2−1)を内部のデータベースに保存しておく。
端末1は全メンバ端末(端末2)から賛否の一次意思決定メッセージを受信したので、全メンバ端末に一次結果通知メッセージを送信する。このとき、全メンバ端末が賛成を示した場合、投票が可能であることを、そうでない場合、投票が不可能であることを伝える。
端末1は投票が可能であることを示す内容の一次結果通知メッセージ406を端末2に送信する。
端末2は端末1から一次結果通知メッセージ406を受信し、全メンバ端末が賛否の一次意思決定メッセージにおいて端末3のコミュニティ200への参加・加入に賛成をし、投票が可能であることを知る。そして、応答メッセージ407を端末1に送信する。
次に、端末2は端末3のコミュニティ200への参加・加入に対する賛否の最終的な判断を行う。ここで端末2は最終的に端末3のコミュニティ200への参加・加入に賛成であるとする。端末2は自端末の宛先情報と許可情報シェア(1−2−3)を併せて、端末3の公開鍵で暗号化した許可チケット(1−2)を生成する。
端末2は最終的に端末3のコミュニティ200への参加・加入に賛成であることを示す内容に許可チケット(1−2)を添付し、賛否の最終意思決定メッセージ408を送信する。メッセージ408送信後、端末2は端末1から応答メッセージ409を受信する。
一方、端末1は賛否の最終意思決定メッセージ408により、端末3のコミュニティ200への参加・加入に対して端末2が最終的に賛成であることを確認し、許可チケット(1−2)を内部のデータベースに保存する。そして、端末2に応答メッセージ409を送信する。
端末1は全メンバ端末から賛否の最終意思決定メッセージを受信し、全メンバ端末が賛成であることを知る。
端末1はコネクション確立情報(1−1)を生成し、データベースに保存する。そして、コネクション確立情報(1−1)をVSSにより閾値(2、2)で分散符号化し、生成したコネクション確立情報シェア(1−1−1)、コネクション確立情報シェア(1−1−2)のうち一方(ここではコネクション確立情報シェア(1−1−1)とする)をデータベースに保存する。
端末1は全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(1−1−2)を添付した最終結果通知メッセージ410を端末2に送信する。そして、端末2から応答メッセージ411を受信する。
端末2は最終結果通知メッセージ410を受信し、全メンバ端末は最終的に端末3のコミュニティ200への参加・加入に対して賛成であったことを知る。また、コネクション確立情報シェア(1−1−2)を取得する。そして、端末1に応答メッセージ411を送信する。
一方、端末1は応答メッセージ411を受信後、端末1は賛否の一次意思決定メッセージ405より取得した許可情報シェア(1−2−1)に自端末の宛先情報を含めて端末3の公開鍵で暗号化を行い(許可チケット(1−3)とする)、許可チケット(1−2)と許可チケット(1−3)を添付したコミュニティ招待メッセージ412を端末3に対し送信する。このとき、メッセージには電子署名と暗号化を施す。
端末3はコミュニティ招待メッセージ412を受信し、メッセージを解読する。ここで、端末1の公開鍵が必要となるが、データベースに持っていなければ、外部の公開鍵サーバ5に取得要求を行う(メッセージ413、414)。復号されたメッセージ内容から端末1が端末3のコミュニティへの招待を希望していることを知る。また、このとき許可チケット(1−2)、許可チケット(1−3)を取得する。
端末3はコミュニティ200にどのような端末が参加・加入しているかを調べるために、許可チケット(1−2)、許可チケット(1−3)を秘密鍵により復号化し、得られた許可情報シェア(1−2−1)、許可情報シェア(1−2−3)、端末1と端末2の宛先情報から、端末1と端末2がコミュニティ200に参加・加入していることを知る。
端末3はコミュニティ200の招待に賛成であるとする。端末3は端末2に対して、セキュアにコネクションを確立するために端末2の公開鍵を内部のデータベースに問い合わせ、持っていなければ外部の公開鍵サーバ5に取得要求を行う(メッセージ415、応答メッセージ416)。
端末3は許可情報シェア(1−2−1)、許可情報シェア(1−2−3)を含めた、コネクション確立要求メッセージ417を端末2に対して送信する。
端末2は端末3からコネクション確立要求メッセージ417を受信すると、添付されている許可情報シェア(1−2−1)、許可情報シェア(1−2−3)を用いて、端末3がコミュニティ200への参加・加入に対し他の全端末から賛成を得ているかどうかをチェックする。
まず、端末2の内部がデータベースで持っている、許可情報シェア(1−2−2)と取得した許可情報シェア(1−2−1)、許可情報シェア(1−2−3)を利用し、VSSにより復号化を行い、許可情報(1−2−A)を生成する。そして、端末2が内部のデータベースで持つ許可情報(1−2)と許可情報(1−2−A)とを比較し、相違がないかどうか確認する。相違があった場合は、端末3のアクセスを不正(つまり、コミュニティの他の全ての端末から賛成を得ていない)とみなし、コネクションは確立しない。相違がなければ、比較時の時刻情報と許可情報に含まれる時刻情報の差分を計算し、その値が一定の時間以上であれば、不正と判断し、コネクションは確立しない。不正がなければ、さらに許可情報に記述されている宛先情報が端末3の宛先情報と一致するか比較し、相違があればコネクションは確立しない。
以上のようなチェックを行い、端末3に不正がなく、コミュニティ200への参加・加入に対し他の全端末から賛成を得ていることを確認すると、端末2は内部のデータベースに持つ、コネクション確立情報シェア(1−1−2)を添付した応答メッセージ418を端末3に送信する。
応答メッセージ418を送信後、端末2は端末3からコネクション確立確認メッセージ419を受信する。
一方、端末3は応答メッセージ418を受信すると、コネクション確立情報シェア(1−1−2)を内部のデータベースに保存した後、コネクション確立確認メッセージ419を端末2に送信する。
端末3は端末2とコネクションを確立後、コミュニティ招待メッセージ412の応答メッセージとして、コネクション確立情報シェア(1−1−2)を添付したコミュニティ参加・加入承諾メッセージ420を送信する。
端末1は端末3からコミュニティ参加・加入承諾メッセージ420を受信し、コネクション確立情報シェア(1−1−2)を取得する。そして、端末3がコミュニティの他の全ての端末とコネクションを確立しているかどうか確認するために、コネクション確立情報シェア(1−1−2)と内部のデータベースに持つコネクション確立情報シェア(1−1−1)からコネクション確立情報を復号化し、コネクション確立情報(1−1−A)を生成する。
得られたコネクション確立情報(1−1−A)と内部のデータベースに持つコネクション確立情報(1−1)を比較し、相違がないかどうかチェックする。
相違がある場合は、端末3がコミュニティ200に参加・加入している他の全ての端末とはコネクションが確立していないと判断し、コネクションは確立しない。相違がない場合は、コネクション確立情報に含まれる時刻情報と比較時の時刻情報の差分が一定時間以内であるかどうかチェックする。一定時間以上であれば、コネクションは確立しない。
以上のチェックが終わると、最終的に端末1はコネクション確立確認メッセージ421を端末3に送信し、端末3とコネクションを確立する。
以上のように、メッセージ400〜421を端末1、端末2、端末3、公開鍵サーバ5の間でやり取りすることで、端末3を新規にコミュニティ200に招待する。
図7から図20は図6において端末間でやり取りされるメッセージを各端末が内部のモジュールを利用して処理するプロセスを詳細に示したシーケンス図である。
図7は端末1が端末3の招待に対する賛否を問う内容を示すメッセージ(コミュニティ参加・加入伺いメッセージ)を端末2に対して送信するまでのモジュール処理を示すシーケンス図である。
端末1の制御モジュールは端末3の宛先情報、端末2と共有しているセッションキー、端末3の公開鍵、を取得するためにデータベースに問い合わせる(シーケンス1200、1201)。このとき、端末2の公開鍵がデータベースになければ、外部の公開鍵サーバ5に対して問い合わせ(シーケンス1202〜1207)、データベースに保存しておく(シーケンス1208、1209)。
制御モジュールはメッセージ生成モジュールにコミュニティ参加・加入伺いメッセージを生成し、端末2へ送信するように依頼する(シーケンス1210)。このとき、同時に端末3の宛先情報、セッションキーを渡す。
メッセージ生成モジュールは端末3のコミュニティ200への招待に対する賛否を問う内容に端末3の宛先情報を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、コミュニティ参加・加入伺いメッセージ402を端末2に送信する(シーケンス1211〜1214)。
図7において、シーケンス1204、1205、1214はそれぞれ図6のメッセージ400、401、402に相当する。
図8は図7で端末1が送信したコミュニティ参加・加入伺いメッセージ402を端末2が受信したときの端末2内でのモジュール処理を示すシーケンス図である。
端末2のメッセージ処理モジュールはメッセージ402を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス1300〜1305)。そして、復号化されたメッセージを制御モジュールに渡す(シーケンス1306)。
制御モジュールはメッセージから端末1が端末3をコミュニティ200へ招待することを希望しているのを知る。
制御モジュールは端末3の公開鍵を持っているかどうかチェックを行い(シーケンス1307、1308)、持っていなければ公開鍵サーバ5に対し取得要求を行う(シーケンス1309〜1314)。そして取得後、端末3の宛先情報とともにデータベースに保存する(シーケンス1315、1316)。
そして、制御モジュールは意思入力モジュールに対しコミュニティ200への端末3の参加・加入に対する賛否を伺う(シーケンス1317)。ここで、賛成の意思があるとする。意思入力モジュールは賛成の意思があることを制御モジュールに伝える(シーケンス1318)。この時点での意思決定は一次的なものである。
制御モジュールは許可情報生成モジュールに対し、許可情報を生成するように依頼する(シーケンス1319)。
許可情報生成モジュールは許可情報(1−2)を生成し、データベースに保存後(シーケンス1320、1321)、制御モジュールに許可情報(1−2)を返す(シーケンス1322)。
制御モジュールは投票用情報を生成するために、許可情報(1−2)を分散符号化するようにVSS分散符号化モジュールに依頼する(シーケンス1323)。
VSS分散符号化モジュールは全端末数が2なので、閾値(3、3)で許可情報(1−2)を分散符号化し、許可情報シェア(1−2−1)と、許可情報シェア(1−2−2)、許可情報シェア(1−2−3)と生成する。そして、許可情報シェアのうち、2つ(ここでは許可情報シェア(1−2−2)、許可情報シェア(1−2−3)とする)をデータベースに保存し(シーケンス1324、1325)、許可情報シェア(1−2−1)を制御モジュールに返す(シーケンス1326)。
制御モジュールは端末1と共有しているセッションキーをデータベースに問い合わせ(シーケンス1327、1328)、許可情報シェア(1−2−1)を添付した賛否の一次意思決定メッセージを端末1に送信するようにメッセージ生成モジュールに依頼する(シーケンス1329)。このとき、同時にセッションキー、許可情報シェア(1−2−1)をメッセージ生成モジュールに渡す。
メッセージ生成モジュールは賛成の意思内容に許可情報シェア(1−2−1)を添付したメッセージを生成し、メッセージ暗号化プロセスを行って、メッセージ処理モジュールを介して端末1に対し送信する(シーケンス1330〜1333)。
図8において、シーケンス1300、1311、1312、1333はそれぞれ図6のメッセージ402、403、404、405に相当する。
図9は図8において、端末2から送信された賛否の一次意思決定メッセージ405を端末1が受信したときのモジュール間の処理を示すシーケンス図である。
端末1のメッセージ処理モジュールはメッセージ405を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス1400〜1405)。そして、復号化されたメッセージ内容と添付されている許可情報シェア(1−2−1)とを制御モジュールに渡す(シーケンス1406)。
制御モジュールは復号化されたメッセージ内容から端末2が賛成の意思があることを知る。そして、取得した投票用情報である許可情報シェア(1−2−1)をデータベースに保存する(シーケンス1407、1408)。
端末1は全メンバ端末(端末2)から賛否の一次意思決定メッセージを受信したので、全メンバ端末に一次結果通知メッセージを送信する。このとき、全メンバ端末が賛成を示した場合、投票が可能であることを、そうでない場合、投票が不可能であることを伝える。
端末1の制御モジュールはメッセージ生成モジュールに対し、投票が可能であることを示す内容の一次結果通知メッセージを全メンバ端末に送信するように依頼する(シーケンス1409)。
メッセージ生成モジュールは投票が可能であることを示す内容のメッセージを生成し、メッセージ暗号化プロセスを行って、メッセージ処理モジュールを介して端末2に一次結果通知メッセージ406を送信する(シーケンス1410〜1413)。
一次結果通知メッセージ406送信後、端末1の制御モジュールは端末2から応答メッセージ407を送信する(シーケンス1414〜1420)。
図9において、シーケンス1400、1413、1414はそれぞれ図6のメッセージ405、406、407に相当する。
図10において、端末2が一次結果通知メッセージ406を受信したときの端末2内のモジュール処理を示すシーケンス図である。
端末2のメッセージ処理モジュールはメッセージ406を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス1500〜1505)。そして、復号化されたメッセージを制御モジュールに渡す(シーケンス1506)。
制御モジュールはメッセージから端末1が全メンバ端末から受信した賛否の一次意思決定メッセージにおいて、全メンバ端末(端末2)からの賛成を得て、投票準備が完了し、投票が可能であることを知る。
制御モジュールはメッセージ生成モジュールを介して、一次結果通知メッセージ406の応答メッセージ407を端末1に送信する(シーケンス1507〜1511)。
図10において、シーケンス1500、1511はそれぞれ図6のメッセージ406、407に相当する。
図11は図10で端末1に応答メッセージ407を送信した後、端末2内のモジュール処理を示すシーケンス図である。
端末2の制御モジュールは意思入力モジュールに対し、端末3のコミュニティ200への参加・加入に対する最終的な賛否の意思決定を問い合わせる(シーケンス1600)。ここで端末2は最終的に端末3のコミュニティ200への参加・加入に賛成であるとする。意思入力モジュールは賛成であることを示す意思を制御モジュールに伝える(シーケンス1601)。
制御モジュールに賛成の意思が伝えられると、端末1と共有しているセッションキー、端末3の公開鍵、許可情報シェア(1−2−3)をデータベースに問い合わせる(シーケンス1602、1603)。そして、許可情報シェア(1−2−3)と自端末の宛先情報を併せて、端末3の公開鍵で暗号化するように依頼する(シーケンス1604、1605)。これにより、許可チケット(1−2)が生成される。
制御モジュールは許可チケット(1−2)、端末1と共有しているセッションキー、をメッセージ生成モジュールに提供し、賛否の最終意思決定メッセージを端末1に対して送信するように依頼する(シーケンス1606)。
メッセージ生成モジュールは最終的な賛成の意思内容に許可チケット(1−2)を添付したメッセージを生成し、メッセージ暗号化プロセスを行い、メッセージ処理モジュールを通じて賛否の最終意思決定メッセージ408を送信する(シーケンス1607〜1610)。
端末2は端末1に対して、賛否の最終意思決定メッセージ408を送信後、端末1から応答メッセージ409を受信する(シーケンス1611〜1617)。
図11において、シーケンス1610、1611はそれぞれ図6のメッセージ408、409に相当する。
図12は図11で端末2が賛否の最終意思決定メッセージ408を送信し、そのメッセージを端末1が受信したときの端末1内のモジュール処理を示すシーケンス図である。
端末1のメッセージ処理モジュールはメッセージ408を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス1700〜1705)。そして、復号化されたメッセージ内容と添付されている許可チケット(1−2)を制御モジュールに引き渡す(シーケンス1706)。
制御モジュールは復号化されたメッセージ内容から端末2が最終的に賛成の意思を示したことを知る。そして、制御モジュールは許可チケット(1−2)をデータベースに保存しておく(シーケンス1707、1708)。
制御モジュールは端末2に対して、応答メッセージ409を返す(シーケンス1709〜1713)。
制御モジュールは全メンバ端末から賛否の最終意思決定メッセージを受信し、全メンバ端末が賛成であることを知る。
制御モジュールは全メンバ端末が賛成であったことを知らせるために、最終結果通知メッセージを送信しなければならない。
まず、制御モジュールはコネクション確立情報生成モジュールに対して、コネクション確立情報を生成するように依頼する(シーケンス1714)。
コネクション確立情報生成モジュールはコネクション確立情報(1−1)を生成し、データベースに保存後、制御モジュールに返す(シーケンス1715〜1717)。
制御モジュールは生成されたコネクション確立情報(1−1)をVSS分散符号化モジュールに対して閾値(2、2)で分散符号化するように依頼する(シーケンス1718)。
VSS分散符号化モジュールは閾値(2、2)でコネクション確立情報(1−1)を分散符号化し、生成したコネクション確立情報シェア(1−1−1)、コネクション確立情報シェア(1−1−2)のうち一方(ここではコネクション確立情報シェア(1−1−1)とする)をデータベースに保存後、残りのコネクション確立情報シェアを制御モジュールに返す(シーケンス1719〜1721)。
制御モジュールは全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(1−1−2)を添付した最終結果通知メッセージを送信するようにメッセージ生成モジュールに依頼する(シーケンス1722)。このとき、端末2とのセッションキー、コネクション確立情報シェア(1−1−2)をメッセージ生成モジュールに渡す。
メッセージ生成モジュールは全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(1−1−2)を添付したメッセージを生成し、メッセージ暗号化プロセスを行い、メッセージ処理モジュールを通じて最終結果通知メッセージ410を送信する(シーケンス1723〜1726)。
最終結果通知メッセージ410送信後、端末2から応答メッセージ411を受信する(シーケンス1727〜1728)。
図12において、シーケンス1700、1713、1726、1727はそれぞれ図6のメッセージ408、409、410、411に相当する。
図13は端末1が端末3に対し、コミュニティ招待メッセージ412を送信するまでの端末1内のモジュール処理を示すシーケンス図である。
端末1の制御モジュールは端末3に対し、コミュニティ招待メッセージを送信するために、まず、全メンバ端末から取得した許可チケットに加え、自端末で許可チケットを生成しなければならない。
制御モジュールは端末2から賛否の一次意思決定メッセージ405受信時に配布された、許可情報シェア(1−2−1)と、端末3の公開鍵とをデータベースに問い合わせる(シーケンス1800、1801)。そして、許可情報シェア(1−2−1)と自端末の宛先情報を併せた情報を、端末3の公開鍵で暗号化する(シーケンス1802、1803)。これにより、許可チケット(1−3)が生成される。
制御モジュールは端末3と共有するためのセッションキーの作成を共通鍵生成モジュールに依頼する(シーケンス1804)。共通鍵生成モジュールはセッションキーを生成しデータベースに保存後(シーケンス1805、1806)、制御モジュールにそのセッションキーを渡す(シーケンス1807)。
制御モジュールは電子署名と暗号化されたコミュニティ招待メッセージを作成するようにメッセージ生成モジュールに依頼する(シーケンス1808)。このとき、許可チケット(1−2)、許可チケット(1−3)、端末3の公開鍵、端末3とのセッションキーをメッセージ生成モジュールに引き渡す。
メッセージ生成モジュールは、コミュニティ200への招待の内容に許可チケット(1−2)と許可チケット(1−3)を添付したメッセージを生成し、メッセージ電子署名・暗号化プロセスを行って、メッセージ処理モジュールを通じて、端末3にコミュニティ招待メッセージ412を送信する(シーケンス1809〜1818)。
図13において、シーケンス1818は図6のメッセージ412に相当する。
図14は端末3が端末1からコミュニティ招待メッセージ412を受信したときの端末3内のモジュール処理を示すシーケンス図である。
端末3のメッセージ処理モジュールは端末1からメッセージ412を受信すると、電子署名と暗号化が行われたメッセージを解読するために、メッセージ解析モジュールを介して、メッセージ解読プロセスを行う(シーケンス1900〜1927)。そして、復号化されたメッセージ内容と添付されている、許可チケット(1−2)、許可チケット(1−3)、端末1と共有するセッションキー、を制御モジュールに渡す(シーケンス1928)。
制御モジュールは復号化されたメッセージ内容から、端末1が端末3のコミュニティ200への招待を希望していることを知る。ここで、端末3はコミュニティ200へ参加・加入をするかどうかの判断を決定するにあたり、コミュニティ200に参加・加入している端末がどのような端末であるかを知ることが必要となる。しかし、この時点では、コミュニティ200に参加・加入している全端末のリストを知ることができない。
よって、制御モジュールはコミュニティ200に参加・加入している全端末を知るために、許可チケット(1−2)、許可チケット(1−3)を端末3の秘密鍵により復号化する(シーケンス1929〜1932)。
得られた許可情報シェア(1−2−1)、許可情報シェア(1−2−3)、端末1と端末2の宛先情報から、端末3の制御モジュールはコミュニティ200に参加・加入している全端末(端末1と端末2)を把握する。
図14において、シーケンス1900、1915、1916はそれぞれ図6のメッセージ412、413、414に相当する。
図15は図14において、端末3が端末1から受信したコミュニティ招待メッセージ412を処理した後、端末2に対してコネクション確立要求メッセージを送信するときの端末3内のモジュール処理を示すシーケンス図である。
端末3の制御モジュールは端末2とセキュアにコネクションを確立するために必要な公開鍵をデータベースに問い合わせ(シーケンス2000、2001)、持っていなければ、外部の公開鍵サーバ5に対し取得要求を行う(シーケンス2002〜2009)。そして、公開鍵を取得後、制御モジュールは意思入力モジュールに対し、コミュニティ200への参加・加入に対する意思決定を伺う(シーケンス2010)。ここで意思入力モジュールは端末3のコミュニティ200への参加・加入に対し賛成の意思があるものとする。意思入力モジュールはコミュニティ200への参加・加入の意思を制御モジュールに伝える(シーケンス2011)。
制御モジュールは得られた全許可情報シェア(許可情報シェア(1−2−1)、許可情報シェア(1−2−3))、端末1の宛先情報、端末2の宛先情報、端末1と共有するセッションキー、および端末2の公開鍵をデータベースに保存する(シーケンス2012、2013)。
制御モジュールはコネクション確立要求メッセージを端末2に対して送信するために、端末2と共有するためのセッションキーの生成を、共通鍵生成モジュールに依頼する(シーケンス2014)。
共通鍵生成モジュールは生成したセッションキーをデータベースに保存し(シーケンス2015、2016)、そのセッションキーを制御モジュールに渡す(シーケンス2017)。
制御モジュールは端末2にコネクション確立要求メッセージを送信するようにメッセージ生成モジュールに対して依頼する(シーケンス2018)。このとき、端末2とのセッションキー、全許可情報シェア、端末2の公開鍵をメッセージ生成モジュールに渡す。
メッセージ生成モジュールはコネクション確立要求の内容に全許可情報シェアを添付したメッセージを生成し、メッセージ電子署名・暗号化プロセスを行って、メッセージ処理モジュールを通じて、端末2にコネクション確立要求メッセージ413を送信する(シーケンス2019〜2028)。
図15において、シーケンス2004、2005、2028はそれぞれ図6のメッセージ415、416、417に相当する。
図16は図15において、端末3が送信したコネクション確立要求メッセージ417を端末2が受信したときの端末2内のモジュール処理を示すシーケンス図である。
端末2のメッセージ処理モジュールはメッセージ417を受信すると、電子署名と暗号化が行われたメッセージを解読するために、メッセージ解析モジュールを介して、メッセージ解読プロセスを行う(シーケンス2100〜2115)。そして、復号化されたメッセージ内容と添付されている全許可情報シェア、端末3と共有するセッションキーを渡す(シーケンス2116)。
制御モジュールは復号化されたメッセージ内容から端末3が端末2とのコネクションの確立を要求していることを知る。コミュニティ200への参加・加入にはコミュニティに参加・加入している全端末の賛成が必要であるため、全端末の賛成による参加・加入の権利を端末3が得ているかどうか、端末3から取得した全許可情報シェアを用いてチェックする。
制御モジュールは全許可情報シェア(許可情報シェア(1−2−1)、許可情報シェア(1−2−3))を許可情報比較モジュールに渡し、端末2が持っている許可情報シェア(1−2−2)と許可情報(1−2)を利用して、端末3がコミュニティ200へ参加・加入する権利をコミュニティ200の他の全端末から得ているかどうかチェックするように依頼する(シーケンス2117)。このとき、同時に端末3の宛先情報を渡す。
許可情報比較モジュールはデータベースに対し、許可情報シェア(1−2−2)と許可情報(1−2)を問い合わせる(シーケンス2118、2119)。そして、VSS復号化モジュールに対し、許可情報シェア(1−2−1)、許可情報シェア(1−2−2)、許可情報シェア(1−2−3)から許可情報を復号化するように依頼する(シーケンス2120)。
VSS復号化モジュールは3個の許可情報シェアから復号化を行い生成した、許可情報(1−2−A)を許可情報比較モジュールに渡す(シーケンス2121)。
許可情報比較モジュールは許可情報(1−2)と許可情報(1−2−A)の比較を行い、相違がないかどうかチェックする。相違があれば、不正とみなしコネクションは確立しない。相違がない場合、比較時の時刻情報と許可情報(1−2)に含まれる時刻情報の差分を計算し、一定時間以上、時間が経過していないことを確認する。経過していなければ正常であると判断し、さらに端末3の宛先情報の比較を行い、許可情報(1−2)に含まれる端末3の宛先情報と相違がないかどうか比較する。
以上の比較が正常に終了すると正常応答を制御モジュールに返す(シーケンス2122)。
以上のチェックを行い、全許可情報シェアに全く不正がなければ、端末3がコミュニティ200への参加・加入に対する全端末の賛成を得ていると判断する。そして、コネクション確立要求を承諾し、端末3とのセッションキーをデータベースに保存する(シーケンス2123、2124)。また、コネクション確立情報シェア(1−1−2)をデータベースに問い合わせる(シーケンス2125、2126)。
制御モジュールはコネクション確立情報シェア(1−1−2)を添付した応答メッセージを端末3に送信するようにメッセージ生成モジュールに依頼する(シーケンス2127)。このとき、メッセージ生成モジュールに端末3と共有するセッションキー、コネクション確立情報シェア(1−1−2)を渡す。
メッセージ生成モジュールはコネクション確立要求に対する承諾の内容にコネクション確立情報シェア(1−1−2)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末3に応答メッセージ418を送信する(シーケンス2128〜2131)。
応答メッセージ418送信後、端末2はコネクション確立確認メッセージ419を端末3から受信する。そして、メッセージ内容から端末2と端末3の間でコネクションが正常に確立したことを知る(シーケンス2132〜2138)。
図16において、シーケンス2100、2131、2132はそれぞれ図6のメッセージ417、418、419に相当する。
図17は端末2からの応答メッセージ418を端末3が受信したときの端末3内のモジュール処理を示すシーケンス図である。
端末3のメッセージ処理モジュールはメッセージ418を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス2200〜2205)。そして、復号化したメッセージ内容とコネクション確立情報シェア(1−1−2)を制御モジュールに渡す(シーケンス2206)。
制御モジュールは復号化されたメッセージ内容から端末2とのコネクションが確立可能であることを判断する。取得したコネクション確立情報シェア(1−1−2)をデータベースに保存後(シーケンス2207、2208)、コネクション確立確認メッセージ419を端末2に対して送信する(シーケンス2209〜2213)。
図17において、シーケンス2200は図6のメッセージ418に、シーケンス2213は図6のメッセージ419に相当する。
図18はコネクション確立確認メッセージ419を送信後に、端末3が端末1に対してコミュニティ参加・加入承諾メッセージ420を送信するときの端末3内のモジュール処理を示すシーケンス図である。
端末3の制御モジュールはデータベースに対して端末1と共有するセッションキーとコネクション確立情報シェア(1−1−2)を問い合わせる(シーケンス2300、2301)。そして、セッションキーとコネクション確立情報シェア(1−1−2)をメッセージ生成モジュールに渡し、コミュニティ参加・加入承諾メッセージを送信するように依頼する(シーケンス2302)。
メッセージ生成モジュールはコミュニティ参加・加入承諾の内容を記述したメッセージにコネクション確立情報シェア(1−1−2)を添付し、それをセッションキーで暗号化した後(シーケンス2303、2304)、メッセージ処理モジュールを通じて(シーケンス2305)、端末1にコミュニティ参加・加入承諾メッセージ420を送信する(シーケンス2306)。
図18において、シーケンス2306は図6のメッセージ420に相当する。
図19はコミュニティ参加・加入承諾メッセージ420を端末1が受信したときの端末1内のモジュール処理を示すシーケンス図である。
端末1のメッセージ処理モジュールはメッセージ420を受信すると、端末3と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス2400〜2405)。そして、復号化されたメッセージ内容と添付されているコネクション確立情報シェア(1−1−2)を制御モジュールに渡す(シーケンス2406)。
制御モジュールは復号化されたメッセージ内容から端末3がコミュニティ200への参加・加入を承諾したことを知る。端末3とコネクションを確立するためには端末1以外のコミュニティ200に参加・加入している全メンバ端末(端末2)とのコネクションが確立していなければ成らないため、端末3から取得したコネクション確立情報シェア(1−1−2)を用いて端末3のコネクション確立状況をチェックする。
制御モジュールはコネクション確立情報比較モジュールに対し、コネクション確立情報シェア(1−1−2)を提供し、端末3が端末2とコネクションを確立しているかどうかをチェックするように依頼する(シーケンス2407)。
コネクション確立情報比較モジュールはデータベースにコネクション確立情報シェア(1−1−1)、コネクション確立情報(1−1)を問い合わせる(シーケンス2408、2409)。そして、VSS復号化モジュールに対し、コネクション確立情報シェア(1−1−1)とコネクション確立情報シェア(1−1−2)を提供し、復号化するように依頼する(シーケンス2410)。
VSS復号化モジュールはコネクション確立情報シェア(1−1−1)とコネクション確立情報シェア(1−1−2)から、コネクション確立情報(1−1−A)を復元し、コネクション確立情報比較モジュールに返す(シーケンス2411)。
コネクション確立情報比較モジュールはコネクション確立情報(1−1)とコネクション確立情報(1−1−A)との比較を行い、相違がないかどうか確認を行う。相違があれば、端末3のアクセスは不正と判断する。相違がなければ、比較時の時刻情報とコネクション確立情報に含まれる時刻情報の差分を計算し、それが一定時間以上経過していないかどうか調べる。
以上の処理が正常に終了するなら、コネクション確立情報比較モジュールは端末2とのコネクションが確立できていることを制御モジュールに知らせる(シーケンス2412)。
コネクション確立情報シェアを利用したコネクションのチェックが正常に終了すると、端末1の制御モジュールはコネクション確立を承諾する。そして、制御モジュールはコネクション確立確認メッセージを送信するように、メッセージ生成モジュールに依頼する(シーケンス2413)。このとき、端末3と共有するセッションキーをメッセージ生成モジュールに渡す。
メッセージ生成モジュールはコネクション確立確認の内容をメッセージとして生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末4にコネクション確立情報メッセージ421を送信する(シーケンス2414〜2417)。
図19において、シーケンス2400は図6のメッセージ420に、シーケンス2417は図6のメッセージ421に相当する。
図20はコネクション確立確認メッセージ421を端末3が受信したときの端末3内のモジュール処理を示すシーケンス図である。
端末3のメッセージ処理モジュールはメッセージ421を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを解読するために、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス2500〜2505)。そして、復号化されたメッセージ内容を制御モジュールに引き渡す(シーケンス2506)。
制御モジュールは復号化されたメッセージから端末1とのコネクションが正常に確立したことを知る。
以上、新規端末(端末3)のコミュニティへの参加・加入に対して、メンバ端末(端末2)は投票用情報である許可情報シェアを入るすることで投票の準備を行い、メンバ端末は自端末が生成した1個の許可情報シェアを賛成票として応対端末(端末1)に提出することで投票を行い、メンバ端末が賛成票を提出するかどうかによって、コミュニティへのアクセス権を集中的に管理する存在がいなくても、フルメッシュ網において新規端末に対するアクセスコントロールを実現することができる。
また、各メンバ端末が他のメンバ端末に依存せず、それぞれ独立に任意のランダムなキーワードを含む許可情報を生成することで、他のメンバ端末が許可情報を推測して不正に生成し、それから許可情報シェアを生成することで、例えば、あたかも全端末が新規端末のコミュニティへの参加・加入に対して賛成したかのようにふるまうことを困難にし、各メンバ端末が新規端末からコネクション確立要求を受けたときに、その新規端末が自端末を除く他の全端末からコミュニティへの参加・加入から賛成を得ているかどうかを、
コミュニティに参加・加入している全端末数が2の場合は、自端末の許可情報からSSSにより生成した3つの許可情報シェア(応対端末に提供した許可情報シェアと自端末が応対端末に提出した許可情報シェアと自端末のデータベース内の許可情報シェア)を利用して復元した許可情報と自端末のデータベース内の許可情報とを比較する処理を他の端末に不正に操作されずに各メンバ端末は独立に正しくチェックすることができる。
また、コミュニティに参加・加入している全端末数が2の場合は、応対端末を除きコミュニティにはメンバ端末が1だけなので、許可情報をVSSによりシェアとシェアの検証用情報を作る必要がなく、SSSによる分散符号化だけを行えばよく、許可情報シェア検証用情報とシェア検証モジュールを利用した計算を省くことができる。
また、コミュニティに参加・加入している全端末数を2とすると、許可情報を閾値(3、3)で分散符号化し、得られた3個の許可情報シェアのうちの一つは必ず自端末で保存し、さらに許可情報も自端末で保存し、他端末に一切漏らさないため、他の端末が許可情報を推測するのを防止することができる。
また、コミュニティに参加・加入している全端末数をnとすると、基本的には許可情報を閾値(n、n)で分散符号化し、応対端末と全メンバ端末が賛成を示さなければ(つまり、満場一致)、新規端末は各メンバ端末とコネクションを確立することができないが、分散符号化するときの閾値を変化させることで必要な賛成票を自由に変更することができ、例えば、閾値をkとすると、端末数nのうちk個の賛成票(許可情報シェア)があつまれば、新規端末はコミュニティに属する端末とコネクションを確立することができるようになるので、投票に必要な賛成票の数を自由に設定することが可能となる。
また、新規端末に提供する許可情報シェアをそのまま提供するのではなく、宛先情報を含めて新規端末の公開鍵で暗号化した許可チケットとして提供することで、新規端末以外の端末に盗聴されることを防止し、さらに許可チケットを利用してコミュニティに参加・加入している全端末の宛先情報を新規端末に知らせることができる。
また、投票用情報である許可情報シェアを各メンバ端末が独立に直接、新規端末に提供するのではなく、一度応対端末で収集することで、新規端末が各メンバ端末に対してコネクションの確立要求を行うときに必要となる許可情報シェアを、統一的に扱うことが可能となる。これにより、各メンバ端末が許可情報シェアを新規端末に直接提供するために新規端末へアクセスすることにより発生の可能性のある同時アクセスを防止することができる。
また、許可情報に時刻情報を設定しておくことで、新規端末が各メンバ端末とコネクションを確立するまでの有効期限を設定することができ、セキュリティレベルを向上させ、さらに許可情報比較モジュールにおいて、基準となる有効時間を自由に設定することで、任意のセキュリティレベルを設定することが可能となる。
また、メンバ端末が新規端末とコネクションを確立したかどうかを応対端末がチェックするために、応対端末はコネクション確立情報と閾値(2、2)によって分散符号化した2個のコネクション確立情報シェアとを利用し、メンバ端末が賛成票である許可情報シェアを提出後、応対端末はメンバ端末に1個のコネクション確立情報シェアを配布し、メンバ端末は新規端末とコネクションを確立するときに、あらかじめ応対端末から取得していたコネクション確立情報シェアを新規端末に渡し、その後、新規端末が応対端末とコネクションを確立するときにメンバ端末から取得した1個のコネクション確立情報シェアを応対端末に渡し、応対端末はその1個のコネクション確立情報シェアと、内部の前記データベースで管理するコネクション確立情報シェアとVSS復号化モジュールを利用して、コネクション確立情報を復元し、復元したコネクション情報と応対端末の内部の前記データベースで管理するコネクション確立情報を比較することで、応対端末は新規端末がメンバ端末とコネクションを確立しているかどうかを確認することができ、応対端末とコネクションを確立するときは必ず全メンバ端末とコネクションを確立しなければならないという状況を作り出すことが可能となる。
また、コネクション確立情報に時刻情報を設定しておくことで、新規端末が応対端末とコネクションを確立するまでの有効期限を設定することができ、これによりセキュリティレベルを向上させ、さらにコネクション確立情報比較モジュールにおいて、基準となる有効時間を自由に設定することで、任意のセキュリティレベルを設定することが可能となる。
また、各端末同士がやり取りするメッセージには電子署名と暗号化、または電子署名による認証後はお互いが共有しているセッションキーによる暗号化を必ず行うことで、各端末が交換する様々な情報(許可情報シェア、宛先情報、コネクション確立情報、コネクション確立情報シェア)が第三者に盗聴されることを防止することができる。
また、本発明によれば、宛先情報は端末を特定することが可能な任意の種類の情報を適用することができ、例えば、IPアドレスやSIPアドレスを適用することができる。
[第2の実施の形態]
図21は既に端末1と端末2の間でコネクション10が、端末2と端末3の間でコネクション11が、端末3と端末1の間でコネクション12が確立しており、全端末数が3のコミュニティ201が形成されている状態から、コミュニティ201側から新規端末として、端末4をコミュニティ201へ招待するために必要となる、端末間でやり取りされるメッセージを示す説明図である。
図21では端末4をコミュニティ201へ招待を希望する端末は端末3であるとする(つまり、端末3は応対端末、端末4が新規端末であり、メンバ端末は端末1と端末2である)。端末3は端末4の公開鍵を内部のデータベースに問い合わせ、持っていなければ、外部の公開鍵サーバ5に問い合わせ、取得する(メッセージ500、501)。公開鍵は端末4とセキュアにコネクションを確立するために後で必要となる。
端末3は端末1と端末2に対して、招待希望の内容を示すコミュニティ参加・加入伺いメッセージ502、503を送信する。このとき、メッセージには端末4の宛先情報をそのまま添付するのではなく、VSSを利用し閾値(2、2)で分散符号化を行い、宛先情報シェア(2−3−1)、宛先情報シェア(2−3−2)、宛先情報シェア検証用情報(2−3)を生成し、メッセージ502には、宛先情報シェア(2−3−1)と宛先情報シェア検証用情報(2−3)を、メッセージ503には宛先情報シェア(2−3−2)と宛先情報シェア検証用情報(2−3)を添付する。
端末1はコミュニティ参加・加入伺いメッセージ502を受信すると、メッセージ内容から端末3がコミュニティ201への端末4の招待を希望していることを知る。また、同時に端末4の宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)を取得する。しかし、メッセージに添付されているのは宛先情報シェアなので、この時点では端末4の実際の宛先情報はわからない。
端末3が招待を希望する端末(端末4)の実際の宛先情報を知るためには、宛先情報シェア(2−3−2)が必要なので、端末1は端末2に対して宛先情報シェア取得要求メッセージ504を送信する。このとき、端末2が端末4の実際の宛先情報を把握するために必要となる、宛先情報シェア(2−3−1)を添付してメッセージを送信する。
端末2は宛先情報シェア取得要求メッセージ504を受信し、宛先情報シェア(2−3−1)を取得した後、宛先情報シェア(2−3−2)を添付した応答メッセージ505を端末1に返す。ここで、第2の実施の形態では端末1側から宛先情報シェア取得要求メッセージを送信するが、場合によっては端末2側から送信する場合もある。
端末1と端末2は宛先情報シェア(2−3−1)、宛先情報シェア(2−3−2)を取得すると、宛先情報シェア検証用情報(2−3)を用いて各宛先情報シェアをVSSにより不正がないかどうかチェックを行い、チェックが正常に終了すると、2個の宛先情報シェアから端末4の宛先情報を復元する。
端末2は端末4とセキュアにコネクションを構築するための端末4の公開鍵を持っているかどうかを内部のデータベースに問い合わせ、持っていなければ公開鍵サーバ5に対して取得要求を行う(公開鍵取得要求メッセージ506、応答メッセージ507)。そして、公開鍵取得後、端末2は端末4をコミュニティ201へ参加・加入させるかどうかの意思の一次決定を行う。ここで端末2は招待に賛成であるとする。
端末2は許可情報(2−2)を生成し、それをVSSにより閾値(3、3)で分散符号化し、許可情報シェア(2−2−1)、許可情報シェア(2−2−2)、許可情報シェア(2−2−3)と、許可情報シェア検証用情報(2−2)を生成する。
そして、許可情報(2−2)と3個の許可情報シェアのうち、1個の許可情報シェア(ここでは許可情報シェア(2−2−2)とする)は、端末2が端末4のコネクション確立要求を受けたときに、端末4がコミュニティ201への参加・加入に対しコミュニティに参加・加入している全端末の賛成を得ているかどうかを確認するのに必要となるため、内部のデータベースに保存しておく。
端末2は端末1に対し、賛否の最終意思決定の際に必要となる投票用情報として許可情報シェア(2−2−1)と許可情報シェア検証用情報(2−2)を添付した、投票用情報提供メッセージ508を送信する。そして、端末1から応答メッセージ509を受信する。
同様に、端末2は端末3から受信したコミュニティ参加・加入伺いメッセージ503の応答メッセージとして賛否の一次意思決定メッセージ510を投票用情報である許可情報シェア(2−2−3)と許可情報シェア検証用情報(2−2)を添付して送信する。
端末4がコミュニティへ参加・加入するためには、賛否の最終意思決定の際に全端末からの許可情報シェアが必要となる。
同様に、端末1は端末4とセキュアにコネクションを張るために必要となる端末4の公開鍵を持っているかどうか内部のデータベースに問い合わせし、持っていなければ、公開鍵サーバ5に対して取得要求を行う(公開鍵取得要求メッセージ511、応答メッセージ512)。そして、公開鍵取得後、端末1は端末4をコミュニティ201へ参加・加入させるかどうかの意思の一次決定を行う。ここで端末1は招待に賛成であるとする。
端末1は許可情報(2−1)を生成し、それをVSSにより閾値(3、3)で分散符号化し、許可情報シェア(2−2−1)、許可情報シェア(2−1−2)、許可情報シェア(2−1−3)と、許可情報シェア検証用情報(2−1)を生成する。
そして、許可情報(2−1)と3個の許可情報シェアのうち、1つの許可情報シェア(ここでは許可情報シェア(2−1−1)とする)は、端末1が端末4のコネクション確立要求を受けたときに、端末4がコミュニティ201への参加・加入に対しコミュニティに参加・加入している全端末の賛成を得ているかどうかを確認するのに必要となるために、内部のデータベースに保存しておく。
端末1は端末2に対し、賛否の最終意思決定の際に必要となる投票用情報として許可情報シェア(2−1−2)と許可情報シェア検証用情報(2−1)を添付した、投票用情報提供メッセージ513を送信する。そして、端末2から応答メッセージ514を受信する。
同様に、端末1は端末3から受信したコミュニティ参加・加入伺いメッセージ502の応答メッセージとして賛否の一次意思決定メッセージ515を投票用情報である許可情報シェア(2−1−3)と許可情報シェア検証用情報(2−1)を添付して送信する。
次に、端末1は端末2からの投票用情報提供メッセージ508を受信し、投票用情報である、許可情報シェア(2−2−1)と許可情報シェア検証用情報(2−2)を取得する。
取得した許可情報シェア(2−2−1)は賛否の最終意思決定の際の賛成票として必要であり、また、許可情報シェア検証用情報(2−2)はシェアの不正をチェックするために必要であるため、データベースに保存しておく。
同様に、端末2は端末1からの投票養生法提供メッセージ513を受信し、投票用情報である、許可情報シェア(2−1−2)、許可情報シェア検証用情報(2−1)を取得する。
取得した許可情報シェア(2−1−2)は賛否の最終意思決定の際の賛成票として必要であり、また、許可情報シェア検証用情報(2−1)はシェアの不正をチェックするために必要であるため、データベースに保存しておく。
端末3は端末1と端末2へ送信したコミュニティ参加・加入伺いメッセージ502、503の応答メッセージとして、それぞれ賛否の一次意思決定メッセージ515、510を受信する。
そして、それぞれメッセージから全メンバ端末が賛成であることを知る。また、許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)、許可情報シェア(2−2−3)、許可情報シェア検証用情報(2−2)を取得する。
取得した許可情報シェア(2−1−3)、許可情報シェア(2−2−3)は端末1と端末2からの賛否の最終意思決定メッセージを賛成票として受信した場合に、自端末も賛成であることを示すための情報として必要であり、また、許可情報シェア検証用情報(2−1)、許可情報シェア検証用情報(2−2)はシェアの不正をチェックするために必要であるため、これらはデータベースに保存しておく。
端末3は全メンバ端末(端末1と端末2)から賛否の一次意思決定メッセージを受信したので、全メンバ端末に一次結果通知メッセージを送信する。このとき、全メンバ端末が賛成を示した場合、投票が可能であることを、そうでない場合、投票が不可能であることを伝える。
端末3は投票が可能であることを示す内容の一次結果通知メッセージ516を端末1に送信する。同様に、端末2に一次結果通知メッセージ518を送信する。メッセージ516、518を送信後、それぞれ端末1と端末2から応答メッセージ517、519を受信する。
一方、端末1は端末3から一次結果通知メッセージ516を受信し、全メンバ端末が賛否の一次意思決定メッセージにおいて端末4のコミュニティ201への参加・加入に賛成をし、投票が可能であることを知る。そして、応答メッセージ517を端末3に送信する。
同様に、端末2は端末3から一次結果通知メッセージ518を受信し、全メンバ端末が賛否の一次意思決定メッセージにおいて端末4のコミュニティ201への参加・加入に賛成をし、投票が可能であることを知る。そして、応答メッセージ519を端末3に送信する。
次に、端末1は賛否に対する最終的な判断を行う。ここで端末1は最終的に端末4のコミュニティ201への参加・加入に賛成であるとする。
端末1は、端末2から取得した許可情報シェア(2−2−1)を許可情報シェア検証用情報(2−2)を利用して、不正がないかどうかをチェックし、その後、自端末の宛先情報を含めて、許可情報シェア(2−2−1)を端末4の公開鍵で暗号化する。これを許可チケット(2−1)とする。
端末1は最終的に端末4のコミュニティ201への参加・加入に賛成であることを示す内容に許可チケット(2−1)を添付し、賛否の最終意思決定メッセージ520として送信する。そして、端末3から応答メッセージ521を受信する。
同様に、端末2は賛否に対する最終的な決断を行う。ここで端末2は最終的に端末4のコミュニティ201への参加・加入に賛成であるとする。
端末2は、端末1から取得した許可情報シェア(2−1−2)を許可情報シェア検証用情報(2−1)を利用して、不正がないかどうかをチェックし、その後、自端末の宛先情報を含めて、許可情報シェア(2−1−2)を端末4の公開鍵で暗号化する。これを許可チケット(2−2)とする。
端末2は最終的に端末4のコミュニティ201への参加・加入に賛成であることを示す内容に許可チケット(2−2)を添付し、賛否の最終意思決定メッセージ522として送信する。そして、端末3から応答メッセージ523を受信する。
一方、端末3は端末1から賛否の最終意思決定メッセージ520を受信し、許可チケット(2−1)を、また端末2から賛否の最終意思決定メッセージ522を受信し、許可チケット(2−2)を取得し、これらを内部のデータベースに保存する。
端末3はメッセージ内容から全メンバ端末(端末1と端末2)が最終的に端末4のコミュニティ201への参加・加入に対し賛成の意思を示したことを知る。そして、端末1には応答メッセージ521を、端末2には応答メッセージ523を送信する。
端末3はコネクション確立情報(2−3)を生成し、データベースに保存する。そして、そのコネクション確立情報(2−3)をVSSにより閾値(3、3)で分散符号化し、生成したコネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)、コネクション確立情報シェア(2−3−3)のうちの一つ(ここではコネクション確立情報シェア(2−3−3)とする)をデータベースに保存する。
端末3は全メンバ端末が端末4のコミュニティ201への参加・加入に対し、賛成であることを知らせる内容にコネクション確立情報シェア(2−3−1)を添付した最終結果通知メッセージ524を端末1に送信する。
同様に、端末3は全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(2−3−2)を添付した最終結果通知メッセージ526を端末2に送信する。
一方、端末1は最終結果通知メッセージ524を受信し、全メンバ端末は最終的に端末4のコミュニティ201への参加・加入に対して賛成であったことを知る。また、コネクション確立情報シェア(2−3−1)を取得する。そして、端末3に応答メッセージ525を送信する。
同様に、端末2は最終結果通知メッセージ526を受信し、全メンバ端末は最終的に端末4のコミュニティ201への参加・加入に対して賛成であったことを知る。また、コネクション確立情報シェア(2−3−2)を取得する。そして、端末3に応答メッセージ527を送信する。
一方、端末3は端末1、端末2からそれぞれ応答メッセージ525、527を受信する。そして、端末3は自身の賛成票を生成するために、まず、許可情報シェア(2−1−3)、許可情報シェア(2−2−3)に不正がないかどうかを、それぞれ許可情報シェア検証用情報(2−1)、許可情報シェア検証用情報(2−2)を利用してチェックを行い、自端末の宛先情報を含めて端末4の公開鍵で暗号化し、許可チケット(2−3)を生成する。
そして、全許可チケット(許可チケット(2−1)、許可チケット(2−2)、許可チケット(2−3))を添付したコミュニティ招待メッセージ528を端末4に対し送信する。このとき、メッセージには電子署名と暗号化を施す。
端末4はコミュニティ招待メッセージ528を受信し、メッセージを解読する。ここで、端末3の公開鍵が必要となるが、データベースに持っていなければ、外部の公開鍵サーバ5に取得要求を行う(メッセージ529、530)。復号化されたメッセージ内容から端末3が端末4のコミュニティへの招待を希望していることを知る。また、全許可チケットを取得する。
端末4はコミュニティ201にどのような端末が参加・加入しているか調べるために、端末4の公開鍵で暗号化された全許可チケットを秘密鍵により復号化する。そして、復号化により、許可情報シェア(2−1−3)、許可情報シェア(2−2−3)、許可情報シェア(2−2−1)、許可情報シェア(2−1−2)と、端末1と端末2と端末3の宛先情報が得られ、コミュニティ201に参加・加入している端末が端末1、端末2、端末3であることを知る。
端末4はコミュニティ201の招待に賛成であるとする。端末4は端末1と端末2に対して、セキュアにコネクションを確立するために端末1と端末2の公開鍵を内部のデータベースに問い合わせ、持っていなければ外部の公開鍵サーバ5に取得要求を行う(公開鍵取得要求メッセージ531、応答メッセージ532)。
端末4は取得した全許可情報シェア(許可情報シェア(2−1−3)、許可情報シェア(2−2−3)、許可情報シェア(2−2−1)、許可情報シェア(2−1−2))を含めたコネクション確立要求メッセージ533を端末1に対して送信する。
端末1は端末4からコネクション確立要求メッセージ533を受信すると、添付されている全許可情報シェアを用いて、端末4がコミュニティ201の他の全ての端末から参加・加入に対する許可を得ているかどうかをチェックする。
まず、端末1の内部のデータベースで持っている、許可情報シェア(2−1−1)と、取得した許可情報シェア(2−1−2)、許可情報シェア(2−1−3)を利用し、VSSにより復号化を行い、許可情報(2−1−A)を得る。
そして、内部のデータベースで持つ端末1が生成した許可情報(2−1)と許可情報(2−1−A)を比較し、相違がないかどうか確認する。相違があった場合は、端末4のアクセスを不正(つまり、コミュニティの他の全ての端末から賛成を得ていない)とみなし、コネクションは確立しない。相違がなければ、比較時の時刻情報と許可情報に含まれる時刻情報の差分を計算し、その値が一定の時間以上であれば、不正と判断し、コネクションは確立しない。不正がなければ、さらに許可情報に記述されている宛先情報が端末4のものと同じであるか判断し、相違があればコネクションは確立しない。
上記のチェックが正常に終了すると、次に、残りの許可情報シェア(2−2−3)、許可情報シェア(2−2−1)に不正がないかどうかを許可情報シェア検証用情報(2−2)を利用して、検証を行い、不正がないかチェックを行う。
以上のようなチェックを行い、正常に終了すれば、端末1は内部のデータベースに持つ、コネクション確立情報シェア(2−3−1)を添付した応答メッセージ534を端末4に送信する。応答メッセージ534送信後、端末1は端末4からコネクション確立確認メッセージ535を受信する。
端末4は応答メッセージ534を受信すると、コネクション確立情報シェア(2−3−1)を内部のデータベースに保存した後、コネクション確立確認メッセージ535を端末1に送信する。
端末4は端末1とコネクションを確立後、さらに端末2とコネクションを確立するために全許可情報シェアを含めた、コネクション確立要求メッセージ536を端末2に対して送信する。
端末4と端末2の間でコネクションを確立するまでの処理は端末1の場合(メッセージ533〜535)と同様であり、端末2は端末4からコネクション確立要求メッセージ536を受信すると、添付されている全許可情報シェアのうち、許可情報シェア(2−2−1)、許可情報シェア(2−2−3)と、内部のデータベースに保存している許可情報シェア(2−2−2)を用いて、VSSにより許可情報を復元し(許可情報(2−2−A))、許可情報(2−2−A)と内部のデータベースに保存している許可情報(2−2)とを比較する。
そして、残りの許可情報シェア(2−1−3)、許可情報シェア(2−1−2)に不正がないかどうかを許可情報シェア検証用情報(2−1)を利用して、検証を行う。
以上のようなチェックを行い、正常に終了すれば、端末2はコネクション確立情報シェア(2−3−2)を添付した応答メッセージ537を端末4に送信する。応答メッセージ537の送信後、端末2は端末4からコネクション確立確認メッセージ538を受信する。
端末4は応答メッセージ537を受信すると、コネクション確立情報シェア(2−3−2)を内部のデータベースに保存した後、コネクション確立確認メッセージ538を端末2に送信する。
端末4は端末1および端末2とコネクションを確立すると、端末3に対してコネクション確立情報シェア(2−3−1)とコネクション確立情報シェア(2−3−2)を添付したコミュニティ参加・加入承諾メッセージ539を送信する。
端末3は端末4からコミュニティ参加・加入承諾メッセージ539を受信し、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を取得する。そして、端末4がコミュニティの他の全端末とコネクションを確立しているかどうか確認するために、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)と内部のデータベースに持つコネクション確立情報シェア(2−3−3)からコネクション確立情報をVSSにより復号化する。得られたコネクション確立情報(2−3−A)と内部のデータベースに持つコネクション確立情報(2−3)を比較し、相違がないかどうかチェックする。
相違がある場合は、端末4が全メンバ端末とのコネクションが確立していないと判断し、端末3は端末4とコネクションは確立しない。相違がない場合は、コネクション確立情報に含まれる時刻情報と比較時の時刻情報の差分が一定時間以内であるかどうかチェックする。一定時間以上であれば、コネクションは確立しない。
以上の処理により、端末4と全メンバ端末とのコネクションの確立を確認する。そして、端末3はコネクション確立確認メッセージ540を端末4に送信し、端末4とコネクションを確立する。
以上のように、メッセージ500〜540を端末1、端末2、端末3、端末4、公開鍵サーバ5の間でやり取りすることで、端末4を新規にコミュニティ201に招待する。また、コミュニティの全端末数が3以上の場合は、同様のメッセージのやり取りを行うことで、新規端末をコミュニティに招待する。
図22から図46は図21において端末間でやり取りされるメッセージを各端末が内部のモジュールを利用して処理するプロセスを詳細に示したシーケンス図である。
図22は端末3が端末4の招待に対する賛否問う内容を示すメッセージ(コミュニティ参加・加入伺いメッセージ)を端末1と端末2に対して送信するまでの端末3内のモジュール処理を示すシーケンス図である。
端末3の制御モジュールは端末4の宛先情報、端末1、端末2と共有しているセッションキー、端末4の公開鍵、をデータベースに問い合わせる(シーケンス2600、2601)。端末4の公開鍵がデータベースになければ、外部の公開鍵サーバ5に対して端末4の公開鍵を問い合わせ(シーケンス2602〜2607)、データベースに保存しておく(シーケンス2608、シーケンス2609)。
制御モジュールは端末4の宛先情報をデータベースに問い合わせ(シーケンス2610、2611)、閾値(2、2)で分散符号化を行い、宛先情報シェア(2−3−1)と、宛先情報シェア(2−3−2)と、さらに宛先情報シェア検証用情報(2−3)を取得する(シーケンス2612、2613)。
制御モジュールはまず端末1に対して、コミュニティ参加・加入伺いメッセージを送信するために、端末4の招待に対する賛否を問う内容に宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)を添付したメッセージを生成し、端末1へ送信するように制御モジュールはメッセージ生成モジュールに依頼する(シーケンス2614)。このとき、同時に端末1のセッションキー、宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)を渡す。
メッセージ生成モジュールは端末4の招待に対する賛否を問う内容に宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、端末1にコミュニティ参加・加入伺いメッセージ502を送信する(シーケンス2615〜2618)。
同様に、制御モジュールはメッセージ生成モジュールを通じて、端末4の招待に対する賛否を問う内容に宛先情報シェア(2−3−2)、宛先情報シェア検証用情報(2−3)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、端末2へコミュニティ参加・加入伺いメッセージ503を送信する(シーケンス2619〜2623)。
図22において、シーケンス2604、2605、2618、2623はそれぞれ図21のメッセージ500、501、502、503に相当する。
図23は図22で端末3が送信したコミュニティ参加・加入伺いメッセージ502を端末1が受信したときの端末1内のモジュールを処理を示すシーケンス図である。
端末1のメッセージ処理モジュールはメッセージ502を受信すると、端末3と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス2700〜2705)。そして、復号化されたメッセージの内容、添付されている宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)を制御モジュールに渡す(シーケンス2706)。
制御モジュールは復号化されたメッセージから端末3が端末4のコミュニティ201への招待を希望していることを知る。しかし、この時点ではまだ実際の端末4の宛先情報を得ていない。端末4の実際の宛先情報を得るためには残りの宛先情報シェアが必要であるため、応対端末(端末3)以外の全メンバ端末(端末2)から宛先情報シェアを取得しなければならない。
制御モジュールは宛先情報シェア(2−3−1)、宛先情報シェア検証用情報(2−3)をデータベースに保存後(シーケンス2707、2708)、端末2と共有しているセッションキーをデータベースに問い合わせる(シーケンス2709、2710)。そして、宛先情報シェア(2−3−1)を添付した宛先情報シェア取得要求メッセージを送信するようにメッセージ生成モジュールに依頼する(シーケンス2711)。このとき、宛先情報シェア(2−3−1)、セッションキーをメッセージ生成モジュールに渡す。
メッセージ生成モジュールは宛先情報シェア取得要求の内容に宛先情報シェア(2−3−1)を添付したメッセージを、メッセージ暗号化プロセスを行ってから、メッセージ処理モジュールを通じて、宛先情報シェア取得要求メッセージ504として端末2に送信する(シーケンス2712〜2715)。
図23において、シーケンス2700、2715はそれぞれ図21のメッセージ502、504に相当する。この実施例では、端末1が先に端末2に対して宛先情報シェア取得要求メッセージを送信するとする。このメッセージの送信と受信のタイミングは早いものが勝ちであり、場合によっては、端末2が送信する宛先情報シェア取得要求メッセージが端末1に先に到着する。
図24は端末3が送信したコミュニティ参加・加入伺いメッセージ503を端末2が受信し、図23と同様の処理を内部で行ってから、端末1から宛先情報シェア取得要求メッセージ504を受信したときの端末2内のモジュール処理を示すシーケンス図である。
端末2のメッセージ処理モジュールは端末1から宛先情報シェア取得要求メッセージ504を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス2800〜2805)。そして、復号化されたメッセージの内容と添付されている宛先情報シェア(2−3−1)を制御モジュールに渡す(シーケンス2806)。
制御モジュールは復号化されたメッセージ内容から端末1が宛先情報シェアを要求していることを知る。制御モジュールは端末1から取得した宛先情報シェア(2−3−1)をデータベースに保存し(シーケンス2807、2808)、データベースに端末3から取得した宛先情報シェア(2−3−2)、端末1と共有しているセッションキーを問い合わせる(シーケンス2809、2810)。
制御モジュールは宛先情報シェア取得要求メッセージ504の応答を返すために、メッセージ生成モジュールに応答メッセージの生成を依頼する(シーケンス2811)。このとき、宛先情報シェア(2−3−2)、端末1と共有しているセッションキーを渡す。
メッセージ生成モジュールは応答メッセージの内容に宛先情報シェア(2−3−2)を添付したメッセージを生成し、メッセージ暗号化プロセスを行ってから、メッセージ処理モジュールを通じて、端末1に宛先情報シェア取得要求メッセージの応答メッセージ505として送信する(シーケンス2812〜2815)。
応答メッセージ505の送信後、制御モジュールは宛先情報シェア(2−3−1)と宛先情報シェア(2−3−2)を利用して、次のように端末4の実際の宛先情報を復元する。
まず、各宛先情報シェアに不正がないかどうかを端末3から取得した宛先情報シェア検証用情報(2−3)を利用してチェックを行う。
制御モジュールはデータベースに対して、宛先情報シェア(2−3−1)と宛先情報シェア検証用情報(2−3)を問い合わせ(シーケンス2816、2817)、シェア検証モジュールに検証を依頼する(シーケンス2818)。
シェア検証モジュールは宛先情報シェア(2−3−1)の検証を行い、不正がなければ正常応答を返す(シーケンス2819)。
同様に、制御モジュールは宛先情報シェア(2−3−2)と宛先情報シェア検証用情報(2−3)を利用して、シェア検証モジュールに宛先情報シェアの検証を依頼する(シーケンス2820〜2823)。
宛先情報シェアの不正チェックが終わると、制御モジュールは宛先情報シェア(2−3−1)と宛先情報シェア(2−3−2)から宛先情報を復号化する(シーケンス2824、2825)。これにより、制御モジュールは実際の端末4の宛先情報を取得する。また、端末4とセキュアにコネクションを確立するための公開鍵をデータベースに問い合わせ(シーケンス2826、2827)、持っていなければ外部の公開鍵サーバ5に対して取得要求を行う(シーケンス2828〜2833)。取得した端末4の公開鍵と宛先情報はデータベースに保存する(シーケンス2834、2835)。
制御モジュールは意思入力モジュールに対しコミュニティ201への端末4の参加・加入に対する賛否の判断を求める(シーケンス2836)。ここで意思入力モジュールにより、賛成の意思があるとする。意思入力モジュールは賛成の意思があることを制御モジュールに伝える(シーケンス2837)。この時点での意思決定は一次意思決定であるとする。
図24において、シーケンス2800、2815、2830、2831はそれぞれ図21のメッセージ504、505、506、507に相当する。
図25は端末2が送信した応答メッセージ505を端末1が受信したときの端末1内のモジュール処理を示すシーケンス図である。
端末1のメッセージ処理モジュールは端末2から応答メッセージ505を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス2900〜2905)。そして、復号化されたメッセージの内容と添付されている宛先情報シェア(2−3−2)を制御モジュールに渡す(シーケンス2906)。
制御モジュールは復号化されたメッセージ内容から自端末が送信した宛先情報シェア取得要求メッセージ504に対する応答メッセージであることを知る。制御モジュールはデータベースに対して端末3から取得した宛先情報シェア(2−3−1)と宛先情報シェア検証用情報(2−3)を問い合わせ(シーケンス2907、2908)、次のように端末4の実際の宛先情報を復元する。
まず、各宛先情報シェアに不正がないかどうかを端末3から取得した宛先情報シェア検証用情報(2−3)を利用してチェックを行う。
制御モジュールは宛先情報シェア(2−3−1)と宛先情報シェア検証用情報(2−3)をシェア検証モジュールに渡し、検証を依頼する(シーケンス2909)。
シェア検証モジュールは宛先情報シェア(2−3−1)の検証を行い、不正がなければ正常応答を返す(シーケンス2910)。
同様に、制御モジュールは宛先情報シェア(2−3−2)と宛先情報シェア検証用情報(2−3)を利用して、シェア検証モジュールに宛先情報シェアの検証を依頼する(シーケンス2911、2912)。
宛先情報シェアの不正チェックが終わると、制御モジュールは宛先情報シェア(2−3−1)と宛先情報シェア(2−3−2)から宛先情報を復号化する(シーケンス2913、2914)。これにより、制御モジュールは実際の端末4の宛先情報を取得する。また、端末4とセキュアにコネクションを確立するための公開鍵をデータベースに問い合わせ(シーケンス2915、2916)、持っていなければ外部の公開鍵サーバ5に対して取得要求を行う(シーケンス2917〜2922)。取得した端末4の公開鍵と宛先情報はデータベースに保存する(シーケンス2923、2924)。
制御モジュールは意思入力モジュールに対しコミュニティ201への端末4の参加・加入に対する賛否の判断を求める(シーケンス2925)。ここで意思入力モジュールにより、賛成の意思があるとする。意思入力モジュールは賛成の意思があることを制御モジュールに伝える(シーケンス2926)。この時点での意思決定は一次意思決定であるとする。
図25において、シーケンス2900、2919、2920はそれぞれ図21のメッセージ505、511、512に相当する。
図26は図25において、端末1が一次の意思決定を行った後の端末1内のモジュール処理を示すシーケンス図である。
制御モジュールは図25において、意思入力モジュールより端末4のコミュニティ201への参加・加入に対する賛成の一次意思決定を伝えられると(シーケンス2926)、投票用情報である許可情報シェアをそれぞれ端末2と端末2に対して配布するために、許可情報を作成するように制御モジュールは許可情報生成モジュールに依頼する(シーケンス3000)。
許可情報生成モジュールは許可情報(2−1)を生成し、データベースに保存後(シーケンス3001、3002)、制御モジュールにそれを渡す(シーケンス3003)。
制御モジュールは許可情報(2−1)を閾値(3、3)で分散符号化するようにVSS分散符号化モジュールに依頼する(シーケンス3004)。
VSS分散符号化モジュールは許可情報(2−1)を閾値(3、3)で分散符号化し、許可情報シェア(2−1−1)、許可情報シェア(2−1−2)、許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)を生成し、端末4からコネクション確立要求を受けた時に必要となる許可情報シェアを一つデータベースに保存する(ここでは許可情報シェア(2−1−1)とする)(シーケンス3005、3006)。そして、VSS分散符号化モジュールは許可情報シェア(2−1−2)、許可情報シェア(2−1−3)を制御モジュールに返す(シーケンス3007)。
制御モジュールは端末2と端末3のセッションキーをデータベースに問い合わせる(シーケンス3008、3009)。そして、制御モジュールは、許可情報シェア(2−1−2)と許可情報シェア検証用情報(2−1)を添付したメッセージを端末2に対して、送信するようにメッセージ生成モジュールに依頼する(シーケンス3010)。このとき、許可情報シェア(2−1−2)、端末2と共有するセッションキー、許可情報シェア検証用情報(2−1)をメッセージ生成モジュールに渡す。
メッセージ生成モジュールは投票用情報提供の内容に許可情報シェア(2−1−2)、許可情報シェア検証用情報(2−1)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末2に投票用情報提供メッセージ513として送信する(シーケンス3010〜3014)。
同様に端末1の制御モジュールは、許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)を添付したメッセージを端末3に対し、送信するようにメッセージ生成モジュールに依頼する(シーケンス3015)。
メッセージ生成モジュールは一次賛成の意思内容に許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末3に賛否の一次意思決定メッセージ515として送信する(シーケンス3016〜3019)。
図26において、シーケンス3014、3019はそれぞれ図21のメッセージ513、515に相当する。
図27は、図24において、端末2が一次の意思決定を行った後の端末2内のモジュール処理を示すシーケンス図である。
図27における処理(シーケンス3100〜3119)は図26の端末1内の処理(シーケンス3000〜3019)とまったく同じであり、許可情報(2−2)を生成し、さらにその許可情報(2−2)を利用して、VSSにより閾値(3、3)で許可情報シェア(2−2−1)、許可情報シェア(2−2−2)、許可情報シェア(2−2−3)、許可情報シェア検証用情報(2−2)を生成し、許可情報シェア(2−2−2)は端末2のデータベースで保存し、許可情報シェア(2−2−1)と許可情報シェア検証用情報(2−2)はシーケンス3114により、端末1に投票用情報提供メッセージ508として送信し、許可情報シェア(2−2−3)と許可情報シェア検証用情報(2−2)はシーケンス3119により、端末3に賛否の一次意思決定メッセージ510として送信する。
図27において、シーケンス3114、3119はそれぞれ図21のメッセージ508、510に相当する。
図28は端末1が端末2から投票用情報提供メッセージ513の応答メッセージとしてメッセージ514を受信し、端末2から投票用情報提供メッセージ508を受信し、その応答メッセージ509を送信し、端末3から一次結果通知メッセージ516を受信し、その応答メッセージ517を送信するまでの端末1内のモジュール処理を示すシーケンス図である。図28において、メッセージ514、508、509と順番に処理するが、順番は場合によって異なる。
端末1の制御モジュールは端末2から投票用情報提供メッセージ513の応答メッセージ514を受信する(シーケンス3200〜3206)。
端末1のメッセージ処理モジュールは端末2からメッセージ508を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するため、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス3207〜3212)。そして、復号化されたメッセージの内容、添付されている許可情報シェア(2−2−1)、許可情報シェア検証用情報(2−2)を制御モジュールに渡す(シーケンス3213)。
制御モジュールは復号されたメッセージ内容から投票用情報が添付されていることを知る。そして、制御モジュールは許可情報シェア(2−2−1)と許可情報シェアを検証用情報(2−2)をデータベースに保存する(シーケンス3214、3215)。
次に、制御モジュールは端末2に応答メッセージを返すために、端末2と共有するセッションキーをデータベースに問い合わせた後(シーケンス3216、3217)、応答メッセージを端末2に対し送信するようにメッセージ生成モジュールに依頼する(シーケンス3218)。このとき、端末2と共有するセッションキーを渡す。
メッセージ生成モジュールは応答内容を生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて応答メッセージ509を端末2に送信する(シーケンス3219〜3222)。
応答メッセージ509送信後、端末1の制御モジュールは端末3から一次結果通知メッセージ516を受信する(シーケンス3223〜3229)。そして、制御モジュールはメッセージから、端末3が全メンバ端末(端末1と端末2)から受信した賛否の一次意思決定メッセージ515、510において、全メンバ端末からの賛成を得て、投票準備が完了し、投票が可能であることを知る。
制御モジュールはメッセージ生成モジュールを介して、一次結果通知メッセージ516の応答メッセージ517を端末3に送信する(シーケンス3230〜3234)。
応答メッセージ517を端末3に送信した後、制御モジュールに端末4のコミュニティ201への参加・加入に対する賛否の最終的な決定を行うために、意思入力モジュールに問い合わせる(シーケンス3235)。ここで端末1は最終的に端末4のコミュニティ201への参加・加入に賛成であるとする。意思入力モジュールは賛成であることを示す意思を制御モジュールに伝える(シーケンス3236)。
図28において、シーケンス3200、3207、3222、3223、3234はそれぞれ図21のメッセージ514、508、509、516、517に相当する。
図29は端末2が端末1から投票用情報提供メッセージ508の応答メッセージとして509を受信し、端末1から投票用情報提供メッセージ513を受信し、その応答メッセージ514を送信し、端末3から一次結果通知メッセージ518を受信し、その応答メッセージ519を送信するまでの端末2内のモジュール処理を示すシーケンス図である。図29において、メッセージ509、513、514と順番に処理するが、順番は場合によって異なる。
図29における処理(シーケンス3300〜3336)は図28の処理(シーケンス3200〜3236)とまったく同じであり、端末1から投票用情報提供メッセージ513により許可情報シェア(2−1−2)と許可情報シェア検証用情報(2−1)を取得し、端末3から一次結果通知メッセージ518において、端末3が全メンバ端末(端末1と端末2)から受信した賛否の一次意思決定メッセージ515、510において、全メンバ端末からの賛成を得て、投票準備が完了し、投票が可能であることを知る。
応答メッセージ519を端末3に送信した後、端末2の制御モジュールは端末4のコミュニティ201への参加・加入に対する賛否の最終的な決定を行うために、意思入力モジュールに問い合わせる(シーケンス3335)。ここで端末2は最終的に端末4のコミュニティ201への参加・加入に賛成であるとする。意思入力モジュールは賛成であることを示す意思を制御モジュールに伝える(シーケンス3336)。
図29において、シーケンス3300、3307、3322、3323、3334はそれぞれ図21のメッセージ509、513、514、518、519に相当する。
図30は、賛否の一次意思決定メッセージ515を端末1から受信したときと、賛否の一次意思決定メッセージ510を端末2から受信したときの端末3内のモジュール処理を示すシーケンス図である。図30では端末1からのメッセージが最初に端末3に到着しているが、場合によっては端末2からのメッセージが最初に到着することもある。
端末3のメッセージ処理モジュールはメッセージ515を受信すると、端末1と共有するセッションキーで暗号化されたメッセージの復号化のために、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス3400〜3405)。そして、復号化されたメッセージ内容、添付されている許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)を制御モジュールに渡す(シーケンス3406)。
制御モジュールは端末1が一次賛成の意思があることを知る。制御モジュールは取得した許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)をデータベースに保存する(シーケンス3407、3408)。
端末3のメッセージ処理モジュールはメッセージ510を受信すると、端末2と共有するセッションキーで暗号化されたメッセージの復号化のために、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス3409〜3414)。そして、復号化されたメッセージ内容、添付されている許可情報シェア(2−2−3)、許可情報シェア検証用情報(2−2)を制御モジュールに渡す(シーケンス3415)。
制御モジュールは端末2が一次賛成の意思があることを知る。制御モジュールは取得した許可情報シェア(2−2−3)、許可情報シェア検証用情報(2−2)をデータベースに保存する(シーケンス3416、3417)。
図30において、シーケンス3400は図21のメッセージ515に、シーケンス3409は図21のメッセージ510に相当する。
図31は図30において、端末3が全メンバ端末(端末1と端末2)からそれぞれ賛否の一次意思決定メッセージ(メッセージ515、510)を受信し、その結果を全メンバ端末に通知するときの端末3内のモジュール処理を示すシーケンス図である。
端末3は全メンバ端末(端末1と端末2)から賛否の一次意思決定メッセージを受信したので、全メンバ端末に一次結果通知メッセージを送信する。このとき、全メンバ端末が賛成を示した場合、投票が可能であることを、そうでない場合、投票が不可能であることを伝える。
端末3の制御モジュールはメッセージ生成モジュールに対し、投票が可能であることを示す内容の一次結果通知メッセージを端末1に送信するように依頼する(シーケンス3500)。
メッセージ生成モジュールは投票が可能であることを示す内容のメッセージを生成し、メッセージ暗号化プロセスを行って、メッセージ処理モジュールを介して端末1に一次結果通知メッセージ516を送信する(シーケンス3501〜3504)。
同様に、端末2に対しても一次結果通知メッセージ518を送信する(シーケンス3505〜3509)。
一次結果通知メッセージ516、518を送信後、端末3の制御モジュールは端末1と端末2からそれぞれ応答メッセージ517、519を受信する(メッセージ3510〜3523)。
図31において、シーケンス3504、3509、3510、3517はそれぞれ図21のメッセージ516、518、517、519に相当する。
図32は図28で端末1が端末4のコミュニティ201への参加・加入に対する最終的な意思決定を行った後の端末1のモジュール処理を示すシーケンス図である。
端末1の制御モジュールは意思入力モジュールから最終的な賛否の意思決定を伝えられたので(シーケンス3236)、端末3と共有しているセッションキー、端末4の公開鍵、許可情報シェア(2−2−1)、許可情報シェア検証用情報(2−2)をデータベースに問い合わせる(シーケンス3600、3601)。そして、許可情報シェア(2−2−1)に不正がないかどうかシェア検証モジュールに許可情報シェア(2−2−1)と許可情報シェア検証用情報(2−2)を渡してチェックを依頼する(シーケンス3602、3603)。
許可情報シェア(2−2−1)に不正がなければ、許可情報シェア(2−2−1)と端末4の公開鍵を公開鍵暗号方式暗号化モジュールに渡し、暗号化を依頼する(シーケンス3604、3605)。このとき、端末1の宛先情報を併せて暗号化を行う。生成された情報を許可チケット(2−1)とする。
制御モジュールは許可チケット(2−1)、端末3と共有しているセッションキー、をメッセージ生成モジュールに提供し、賛否の最終意思決定メッセージを端末3に対して送信するように依頼する(シーケンス3606)。
メッセージ生成モジュールは最終的に賛成の意思を示す内容に許可チケット(2−1)を添付してメッセージを生成し、メッセージ暗号化プロセスを行い、メッセージ処理モジュールを通じて賛否の最終意思決定メッセージ520を送信する(シーケンス3607〜3610)。
賛否の最終意思決定メッセージ520を送信後、端末1は端末3から応答メッセージ521を受信する(シーケンス3611〜3617)。
また、応答メッセージ521を受信後、端末3から最終結果通知メッセージ524を受信する(シーケンス3618〜3624)。
制御モジュールは最終結果通知メッセージ524の内容から最終的に全メンバ端末が端末4のコミュニティへの参加・加入に賛成であったことを知る。そして、コネクション確立情報シェア(2−3−1)を取得する。
制御モジュールは取得したコネクション確立情報シェア(2−3−1)をデータベースに保存後(シーケンス3625、3626)、応答メッセージ525を送信する(シーケンス3627〜3631)。
図32において、シーケンス3610、3611、3618、3631はそれぞれ図21のメッセージ520、521、524、525に相当する。
図33は、図29で端末2が端末4のコミュニティ201への参加・加入に対する最終的な意思決定を行った後の端末2内のモジュール処理を示すシーケンス図である。
図33の処理(シーケンス3700〜3731)は図32の処理とまったく同じである(シーケンス3600〜3631)。
端末2は許可情報シェア(2−1−2)の不正チェックを行った後、端末4の公開鍵で許可情報シェア(2−1−2)を端末2の宛先情報と併せて暗号化を行い、許可チケット(2−2)を生成する(シーケンス3700〜3705)。
そして、許可チケット(2−2)を添付した賛否の最終意思決定メッセージ522を端末3に対して送信する(シーケンス3706〜3710)。賛否の最終意思決定メッセージ522送信後、応答メッセージ523を受信する(シーケンス3711〜3717)。
応答メッセージ523の受信後、端末3から最終結果通知メッセージ526を受信し(シーケンス3718〜3724)、コネクション確立情報シェア(2−3−2)をデータベースに保存後(シーケンス3725、3726)、応答メッセージ527を送信する(シーケンス3727〜3731)。
図33において、シーケンス3710、3711、3718、3731はそれぞれ図21のメッセージ522、523、526、527に相当する。
図34は、端末3が端末1から賛否の最終意思決定メッセージ520を受信したときと、端末2から賛否の最終意思決定メッセージ522を受信したときのモジュール処理を示すシーケンス図である。第2の実施の形態では図32に示すようにメッセージ520が先に端末3に到着する例を示しているが、場合によってはメッセージ522が先に到着する場合もある。
端末3のメッセージ処理モジュールは端末1からメッセージ520を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス3800〜3805)。そして、得られたメッセージ内容と添付されている許可チケット(2−1)を制御モジュールに引き渡す(シーケンス3806)。
制御モジュールは復号化されたメッセージ内容から端末1が最終的に賛成の意思を示したことを知る。そして、制御モジュールは許可チケット(2−1)をデータベースに保存しておく(シーケンス3807、3808)。
制御モジュールは端末1に対して、応答メッセージ521を返す(シーケンス3809〜3813)。
同様に端末3のメッセージ処理モジュールは端末2からメッセージ522を受信すると、端末2と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス3814〜3819)。そして、得られたメッセージ内容と添付されている許可チケット(2−2)を制御モジュールに引き渡す(シーケンス3820)。
制御モジュールは復号化されたメッセージ内容から端末2が最終的に賛成の意思を示したことを知る。そして、制御モジュールは許可チケット(2−2)をデータベースに保存しておく(シーケンス3821、3822)。
そして、制御モジュールは端末2に対して、応答メッセージ523を返す(シーケンス3823〜3827)。
図34において、シーケンス3800、3813、3814、3827はそれぞれ図21のメッセージ520、521、522、523に相当する。
図35は、端末3が全メンバ端末(端末1と端末2)から最終意思決定メッセージ(メッセージ520、522)を受信し、全メンバ端末に応答メッセージ(メッセージ521、523)を送信した後の端末3内のモジュール処理を示すシーケンス図である。
制御モジュールは全メンバ端末から賛否の脚週意思決定メッセージを受信し、全メンバ端末が賛成であることを知る。
制御モジュールは全メンバ端末が賛成であったことを知らせるために、最終結果通知メッセージを送信しなければならない。
まず、制御モジュールはコネクション確立情報生成モジュールに対して、コネクション確立情報を生成するように依頼する(シーケンス3900)。
コネクション確立情報生成モジュールはコネクション確立情報(2−3)を生成し、データベースに保存後、制御モジュールに返す(シーケンス3901〜3903)。
制御モジュールは生成されたコネクション確立情報(2−3)をVSS分散符号化モジュールに対して閾値(3、3)で分散符号化するように依頼する(シーケンス3904)。
VSS分散符号化モジュールは式値(3,3)でコネクション確立情報(2−3)を分散符号化し、生成したコネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)、コネクション確立情報シェア(2−3−)のうち一つ(ここではコネクション確立情報シェア(2−3−3)とする)をデータベースに保存後、残りのコネクション確立情報シェアを制御モジュールに返す(シーケンス3905〜3907)。
制御モジュールは全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(2−3−1)を添付した最終結果通知メッセージを端末1に送信するようにメッセージ生成モジュールに依頼する(シーケンス3908)。このとき、端末1とのセッションキー、コネクション確立情報シェア(2−3−1)をメッセージ生成モジュールに渡す。
メッセージ生成モジュールは全メンバ端末が賛成であることを知らせる内容にコネクション確立情報シェア(2−3−1)を添付したメッセージを生成し、メッセージ暗号化プロセスを行い、メッセージ処理モジュールを通じて最終結果通知メッセージ524を端末1に送信する(シーケンス3909〜3912)。
同様に、制御モジュールはメッセージ生成モジュールを通じて、コネクション確立情報シェア(2−3−2)を添付した最終結果通知メッセージ526を端末2に送信する(シーケンス3913〜3917)。
最終結果通知メッセージ524、526を送信後、端末3は端末1と端末2からそれぞれ応答メッセージ525、527を受信する(シーケンス3918〜3931)。
図35において、シーケンス3912、3917、3918、3925はそれぞれ図21のメッセージ524、526、525、527に相当する。
図36は、図35において、最終結果通知メッセージを全メンバ端末(端末1と端末2)に送信後、端末3が端末4に対してコミュニティ招待メッセージ528を送信するまでのモジュール処理を示すシーケンス図である。
制御モジュールは端末4に対し、コミュニティ招待メッセージを送信するために、端末1と端末2からそれぞれ賛否の最終意思決定メッセージ受信時に取得した、許可チケット(2−1)、許可チケット(2−2)と、端末1と端末2からそれぞれ賛否の一次意思決定メッセージ受信時に取得した、許可情報シェア(2−1−3)、許可情報シェア検証用情報(2−1)、許可情報シェア(2−2−3)、許可情報シェア検証用情報(2−2)と、さらに端末4の公開鍵、をデータベースに問い合わせる(シーケンス4000、4001)。
そして、図32、33と同様に許可チケットを生成する前に許可情報シェア(2−1−3)、許可情報シェア(2−2−3)の不正チェックをそれぞれ、許可情報シェア検証用情報(2−1)、許可情報シェア検証用情報(2−2)を利用して行う(シーケンス4002〜4005)。
不正チェックが終わると、制御モジュールは許可情報シェア(2−1−3)と許可情報シェア(2−2−3)に自端末の宛先情報を併せた情報を、端末4の公開鍵で暗号化する(シーケンス4006、4007)。これを許可チケット(2−3)とする。
制御モジュールは端末4と共有するセッションキーの作成を共通鍵生成モジュールに依頼する(シーケンス4008)。共通鍵生成モジュールはセッションキーを生成し、データベースに保存後(シーケンス4009、4010)、制御モジュールにそのセッションキーを渡す(シーケンス4011)。
制御モジュールは電子署名と暗号化されたコミュニティ招待メッセージを作成するようにメッセージ生成モジュールに依頼する(シーケンス4012)。このとき、許可チケット(2−1)、許可チケット(2−2)、許可チケット(2−3)、端末4の公開鍵、端末4とのセッションキーをメッセージ生成モジュールに引き渡す。
メッセージ生成モジュールは、コミュニティ201への招待の内容に許可チケット(2−1)、許可チケット(2−2)、許可チケット(2−3)、を添付したメッセージを生成し、メッセージ電子署名・暗号化プロセスを行って、メッセージ処理モジュールを通じて、端末4はコミュニティ招待メッセージ528を送信する(シーケンス4013〜4022)。
図36において、シーケンス4022は図21のメッセージ528に相当する。
図37は、端末4が端末3からコミュニティ招待メッセージ528を受信したときの端末4内のモジュール処理を示すシーケンス図である。
端末4のメッセージ処理モジュールは端末3からメッセージ528を受信すると、電子署名と暗号化が行われたメッセージを解読するために、メッセージ解析モジュールを介して、メッセージ解読プロセスを行う(シーケンス4100〜4127)。そして、復号化されたメッセージ内容と添付されている、許可チケット(2−1)、許可チケット(2−2)、許可チケット(2−3)、端末3と共有するセッションキー、を引き渡す(シーケンス4128)。
端末4の制御モジュールは復号化されたメッセージ内容から、端末3が端末4のコミュニティ201への招待を希望しているを知る。ここで、端末4がコミュニティへ参加・加入するかどうかを決定するときに、どのような端末がコミュニティ201に参加・加入しているかを知ることが必要となる。しかし、この時点では、コミュニティ201に参加・加入している全端末のリストを知ることができない。
よって、制御モジュールは、コミュニティ201に参加・加入している全端末を知るために、許可チケット(2−1)、許可チケット(2−2)、許可チケット(2−3)を端末4の秘密鍵を利用して復号化する(シーケンス4129〜4140)。
端末4の制御モジュールは許可チケットに含まれていた許可情報シェア(許可情報シェア(2−1−2)、許可情報シェア(2−1−3)、許可情報シェア(2−2−1)、許可情報シェア(2−2−3))と端末の宛先情報(端末1、端末2、端末3の宛先情報)を取得し、コミュニティ201に参加・加入している全端末が端末1、端末2、端末3であることを知る。
図37において、シーケンス4100、4115、4115、4116はそれぞれ図21のメッセージ528、529、530に相当する。
図38は、図37において、端末4が端末3から受信したコミュニティ201への招待のメッセージを処理した後、端末1に対してコネクション確立要求メッセージを送信するときのモジュール処理を示すシーケンス図である。
図37において、端末4の制御モジュールをコミュニティ201に参加・加入している端末が端末1、端末2、および端末3であることを知る。
端末4の制御モジュールは端末1と端末2とセキュアにコネクションを確立するために必要な公開鍵をデータベースに問い合わせ(シーケンス4200、4201)、持っていなければ、外部の公開鍵サーバ5に対し取得要求を行う(シーケンス4202〜4207)。そして、公開鍵を取得後、制御モジュールは意思入力モジュールに対し、コミュニティ201への参加・加入に対する意思決定を伺う(シーケンス4208)。ここで意思入力モジュールは端末4のコミュニティ201への参加・加入に対し賛成の意思があるものとする。意思入力モジュールはコミュニティ201への参加・加入の意思を制御モジュールに伝える(シーケンス4209)。
制御モジュールは得られた全許可情報シェア(許可情報シェア(2−1−2)、許可情報シェア(2−1−3)、許可情報シェア(2−2−1)、許可情報シェア(2−2−3))、端末(端末1と端末2と端末3)の宛先情報、端末3と共有するセッションキー、および端末1と端末2の公開鍵をデータベースに保存する(シーケンス4210、4211)。
制御モジュールはコネクション確立要求メッセージを端末1に対して送信するために、端末1と共有するためのセッションキーの生成を、共通鍵生成モジュールに依頼する(シーケンス4212)。
共通鍵生成モジュールは生成したセッションキーをデータベースに保存し(シーケンス4213、4214)、そのセッションキーを制御モジュールに渡す(シーケンス4215)。
制御モジュールは端末1にコネクション確立要求メッセージを送信するようにメッセージ生成モジュールに対して依頼する(シーケンス4216)。このとき、端末1とのセッションキー、全許可情報シェア、端末1の公開鍵をメッセージ生成モジュールに渡す。
メッセージ生成モジュールはコネクション確立要求の内容に全許可情報シェアを添付したメッセージを生成し、メッセージ電子署名・暗号化プロセスを行って、メッセージ処理モジュールを通じて、端末1にコネクション確立要求メッセージ525を送信する。
図38において、シーケンス4204、4205、4226はそれぞれ図21のメッセージ531、532、533に相当する。
図39は、図38において、端末4が送信したコネクション確立要求メッセージ533を端末1が受信したときの端末1内のモジュール処理を示すシーケンス図である。
端末1のメッセージ処理モジュールはメッセージ533を受信すると、電子署名と暗号化が行われたメッセージを解読するために、メッセージ解析モジュールを介して、メッセージ解読プロセスを行う(シーケンス4300〜4315)。そして、復号化されたメッセージ内容と添付されている、全許可情報シェア、端末4と共有するセッションキーを渡す(シーケンス4316)。
制御モジュールは復号化されたメッセージ内容から端末4が端末1とのコネクションの確立を要求していることを知る。コミュニティ201への参加・加入には全端末の賛成が必要であるため、全端末の賛成による参加・加入の権利を端末4が得ているかどうかを、端末4から取得した全許可情報シェアを用いてチェックする。
制御モジュールは全許可情報シェアのうち、許可情報シェア(2−1−2)、許可情報シェア(2−1−3)を許可情報比較モジュールに渡し、端末1が持っている許可情報シェア(2−1−1)と許可情報(2−1)を利用して、端末4がコミュニティ201へ参加・加入する権利をコミュニティ201の他の全端末から得ているかどうかチェックするように依頼する(シーケンス4317)。このとき、同時に端末4の宛先情報を渡す。
許可情報比較モジュールはデータベースに対し、許可情報シェア(2−1−1)と許可情報(2−1)を問い合わせる(シーケンス4318、4319)。そして、VSS復号化モジュールに対し、許可情報シェア(2−1−1)、許可情報シェア(2−1−2)、許可情報シェア(2−1−3)から許可情報を復号化するように依頼する(シーケンス4320)。
VSS復号化モジュールは3個の許可情報シェアから復号化を行い生成した、許可情報(2−1−A)を生成し、許可情報比較モジュールに渡す(シーケンス4321)。
許可情報比較モジュールは許可情報(2−1)と許可情報(2−1−A)の比較を行い、相違がないかどうか判断する。相違があれば、不正とみなしコネクションは確立しない。相違がない場合、比較時の時刻情報と許可情報(2−1)に含まれる時刻情報の差分を計算し、一定時間以上、時間が経過していないことを確認する。経過していなければ正常であると判断し、さらに端末4の宛先情報の比較を行い、許可情報(2−1)に含まれる端末4の宛先情報と相違がないかどうか比較する。
以上の比較が正常に終了すると正常応答を制御モジュールに返す(シーケンス4322)。
次に残りの許可情報シェア(許可情報シェア(2−2−1)、許可情報シェア(2−2−3))に不正がないかどうかをシェア検証モジュールを利用して確認する。
制御モジュールはデータベースに対し、端末2から取得した許可情報シェア検証用情報(2−2)を問い合わせる(シーケンス4323、4324)。そして、制御モジュールは許可情報シェア(2−2−1)と許可情報シェア検証用情報(2−2)をシェア検証モジュールに提供し、不正を検証するようにシェア検証モジュールに依頼し、シェア検証モジュールは不正がなければ、正常応答を制御モジュールに返す(シーケンス4325、4326)。
同様に、許可情報シェア(2−2−3)の不正を検証する(シーケンス4327、4328)。
以上のチェックを行い、全許可情報シェアに全く不正がなければ、端末4がコミュニティ201への参加・加入に対する全端末の賛成を得ていると判断する。そして、コネクション確立要求を承諾し、端末4とのセッションキーをデータベースに保存する(シーケンス4329、4330)。また、コネクション確立情報シェア(2−3−1)をデータベースに問い合わせる(シーケンス4331、4332)。
制御モジュールはコネクション確立情報シェア(2−3−1)を添付した応答メッセージを端末4に送信するようにメッセージ生成モジュールに依頼する(シーケンス4333)。このとき、メッセージ生成モジュールに端末4と共有するセッションキーとコネクション確立情報シェア(2−3−1)を渡す。
メッセージ生成モジュールはコネクション確立要求に対する承諾の内容にコネクション確立情報シェア(2−3−1)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末4に応答メッセージ534を送信する(シーケンス4334〜4337)。
応答メッセージ534を端末4に送信後、端末1のメッセージ処理モジュールは端末4からコネクション確立確認メッセージ535を受信する。
メッセージ処理モジュールはメッセージ535を受信すると、端末4と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールをかいして、メッセージ復号化プロセスを行う(シーケンス4338〜4343)。そして、復号化されたメッセージ内容を制御モジュールに渡す(シーケンス4344)。
制御モジュールは復号されたメッセージから端末1と端末4の間でコネクションが正常に確立したことを知る。
図39において、シーケンス4300、4337、4338はそれぞれ図21のメッセージ533、534、535に相当する。
図40は、応答メッセージ534を端末4が受信したときの端末4内のモジュール処理を示すシーケンス図である。
端末4のメッセージ処理モジュールはメッセージ534を受信すると、端末1と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス4400〜4405)。そして、復号化されたメッセージ内容とコネクション確立情報シェア(2−3−1)を制御モジュールに渡す(シーケンス4406)。
制御モジュールは復号化されたメッセージ内容から端末1とのコネクションが確立可能であることを判断する。制御モジュールは取得したコネクション確立情報シェア(2−3−1)をデータベースに保存後(シーケンス4407、4408)、コネクション確立確認メッセージを端末1に対して送信する(シーケンス4409〜4413)。
図40において、シーケンス4400、4413はそれぞれ図21のメッセージ534、535に相当する。
図41は、図39において、端末4が端末1とコネクションを確立した後、端末2に対してコネクション確立要求メッセージを送信するときの端末4内のモジュール処理を示すシーケンス図である。なお、第2の実施の形態では端末1と先にコネクションを確立するが、場合によっては先に端末2とコネクションを確立する。
図41の処理(シーケンス4500〜4514)は図38のシーケンス4212〜4226と全く同じであり、端末4の制御モジュールは端末2と共有するセッションキーを生成して、全許可情報シェアを添付したコネクション確立要求メッセージ536を端末2に対し送信する。
図41において、シーケンス4514は図21のメッセージ536に相当する。
図42は、図41において、端末4が送信したコネクション確立要求メッセージ536を端末2が受信したときのモジュール処理を示すシーケンス図である。
図42の処理(シーケンス4600〜4644)は図39の処理(シーケンス4300〜4344)と全く同じであり、端末4から取得した全許可情報シェア(許可情報シェア(2−1−2)、許可情報シェア(2−1−3)、許可情報シェア(2−2−1)、許可情報シェア(2−2−3))を利用して、端末4がコミュニティへの参加・加入に対して全端末から賛成を得ていることを確認してから、端末2は応答メッセージ537にコネクション確立情報シェア(2−3−2)を添付し端末4に送信する。そして、端末2はコネクション確立確認メッセージ538を受信し、端末2と端末4の間でコネクションが正常に確立したことを確認する。
図42において、シーケンス4600、4637、4638はそれぞれ図21のメッセージ536、537、538に相当する。
図43は、応答メッセージ537を端末4が受信したときの端末4内のモジュール処理を示すシーケンス図である。
図43の処理(シーケンス4700〜4713)は図40の処理(シーケンス4400〜4413)と同様であり、端末4は端末2からコネクション確立情報シェア(2−3−2)を取得し、コネクション確立確認メッセージ538を端末2に送信する。
図43において、シーケンス4700、4713はそれぞれ図21のメッセージ537、538に相当する。
図44は、端末4が端末2に対しコネクション確立確認メッセージ538を送信後、端末3に対してコミュニティ参加・加入承諾メッセージ539を送信するときの端末4内のモジュール処理を示すシーケンス図である。
端末4の制御モジュールはデータベースに対して、端末3と共有するセッションキー、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を問い合わせる(シーケンス4800、4801)。そして、端末3と共有するセッションキー、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)をメッセージ生成モジュールに渡し、コミュニティ参加・加入承諾メッセージを送信するように依頼する(シーケンス4802)。
メッセージ生成モジュールはコミュニティ参加・加入承諾の内容にコネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を添付したメッセージを生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末3にコミュニティ参加・加入承諾メッセージ539を送信する(シーケンス4803〜4806)。
図44において、シーケンス4506は図21のメッセージ539に相当する。
図45は、コミュニティ参加・加入承諾メッセージ539を端末3が受信したときの端末3内のモジュール処理を示すシーケンス図である。
端末3のメッセージ処理モジュールはメッセージ539を受信すると、端末4と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介してメッセージ復号化プロセスを行う(シーケンス4900〜4905)。そして、復号化されたメッセージ内容と添付されているコネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を制御モジュールに渡す(シーケンス4906)。
制御モジュールは復号化されたメッセージ内容から端末4がコミュニティ201への参加・加入を承諾したことを知る。端末4とコネクションを確立するためには端末3以外のコミュニティ201に参加・加入している全メンバ端末(端末1と端末2)とのコネクションが確立していなければならないため、端末4から取得したコネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を用いて端末4のコネクション確立状況をチェックする。
制御モジュールはコネクション確立情報比較モジュールに対し、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)を提供し、端末4が端末1、端末2とコネクションを確立しているかどうかをチェックするように依頼する(シーケンス4907)。
コネクション確立情報比較モジュールはデータベースにコネクション確立情報シェア(2−3−3)、コネクション確立情報(2−3)を問い合わせる(シーケンス4908、4909)。そして、VSS復号化モジュールに対し、コネクション確立情報シェア(2−3−1)、コネクション確立情報シェア(2−3−2)、コネクション確立情報シェア(2−3−3)を提供し、復号化するように依頼する(シーケンス4910)。
VSS復号化モジュールは3個のコネクション確立情報シェアから、コネクション確立情報(2−3−A)を復元し、コネクション確立情報比較モジュールに返す(シーケンス4911)。
コネクション確立情報比較モジュールはコネクション確立情報(2−3−A)とコネクション確立情報(2−3)との比較を行い、相違がないかどうか確認を行う。相違があれば、端末4のアクセスは不正と判断する。相違がなければ、比較時の時刻情報とコネクション確立情報に含まれる時刻情報の差分を計算し、それが一定時間以上経過していないかどうか調べる。
以上の処理が正常に終了するなら、コネクション確立情報比較モジュールは制御モジュールに正常応答を返す(シーケンス4912)。
コネクション確立情報シェアを利用したコネクションのチェックが正常に終了すると、端末3の制御モジュールはコネクション確立を承諾する。そして、制御モジュールはコネクション確立確認メッセージを送信するように、メッセージ生成モジュールに依頼する(シーケンス4913)。このとき、端末4を共有するセッションキーをメッセージ生成モジュールに渡す。
メッセージ生成モジュールはコネクション確立確認の内容をメッセージとして生成し、メッセージ暗号化プロセスを行った後、メッセージ処理モジュールを通じて、端末4にコネクション確立確認メッセージ540を送信する(シーケンス4914〜4917)。
図45において、シーケンス4900は図21のメッセージ539に、シーケンス4917は図21のメッセージ540に相当する。
図46は、コネクション確立確認メッセージ540を端末4が受信したときの端末4内のモジュール処理を示す。
端末4のメッセージ処理モジュールはメッセージ540を受信すると、端末3と共有しているセッションキーで暗号化されたメッセージを復号化するために、メッセージ解析モジュールを介して、メッセージ復号化プロセスを行う(シーケンス5000〜5005)。そして、復号化されたメッセージ内容を制御モジュールに渡す(シーケンス5006)。
制御モジュールは復号化されたメッセージ内容から端末3とのコネクションが正常に確立したことを知る。
図46において、シーケンス5000は図21のメッセージ540に相当する。
以上より、新規端末(端末4)のコミュニティへの参加・加入に対して、各メンバ端末(端末1、端末2)は投票用情報である許可情報シェアを投票用情報提供メッセージ、または賛否の一次意思決定メッセージにより、配布することで投票の準備を行い、各メンバ端末が(コミュニティに参加・加入している全端末数−2)個の許可情報シェアを賛成票として、賛否の最終意思決定メッセージにより、応対端末(端末3)に提出することで投票を行い、全メンバ端末が賛成票を提出するかどうかによって、コミュニティへのアクセス権を集中的に管理する存在がいなくても、フルメッシュ網において新規端末のコミュニティへの参加・加入に対する全端末の意思(賛成か反対か)を各端末が確実に確認することができる。
また、各メンバ端末が他のメンバ端末に依存せず、それぞれ独立に任意のランダムなキーワードを含む許可情報を生成することで、他のメンバ端末が許可情報を推測して不正に生成し、それから許可情報シェアを生成することで、例えば、他の端末が賛成票を提出していないにもかかわらず、あたかも全端末が新規端末のコミュニティへの参加・加入に対して賛成したかのようにふるまうことを困難にし、各メンバ端末が新規端末からコネクション確立要求メッセージを受信したときに、その新規端末が自端末を除く他の全端末からコミュニティへの参加・加入から賛成を得ているかどうかを、自端末の許可情報から生成し、各メンバ端末に配布した(コミュニティに属する全端末数)個の許可情報シェアと自端末のデータベース内の許可情報シェアからVSSにより復元した許可情報と、自端末のデータベース内の許可情報とを比較する処理を、他の端末に不正に操作されずに各メンバ端末は独立に正しくチェックすることができる。
また、各メンバ端末は新規端末からコネクション確立要求メッセージを受信したときに、自端末が配布した許可情報シェアを利用した許可情報の比較処理だけを行うのではなく、新規端末が所持している他のメンバ端末が配布した(コミュニティに参加・加入している全端末数−1)×(コミュニティに参加・加入している全端末数−2)個の許可情報シェアに不正がないかどうかを、許可情報シェアの配布時にあらかじめ他のメンバ端末から取得しておいた許可情報シェア検証用情報とシェア検証モジュールとを用いることで検証を行う。
これにより、他の各メンバ端末が応対端末に賛成票として許可情報シェアを提出する過程(賛否の最終意思決定メッセージ)や、応対端末が各メンバ端末から回収した許可情報シェアと自端末の許可情報シェアを新規端末に提供する過程(コミュニティ招待メッセージ)において、例えば、すべての許可情報シェアを提出せずに一部の許可情報シェアだけしか提出しないといった不正を検出することができ、自端末で行った許可情報の比較処理において、新規端末がコミュニティへの参加・加入に対し賛成を得ていると判断されるときには、新規端末が自端末以外の他のメンバ端末と必ずコネクションを確立することができる状況を作り出すことができ、さらに、自端末で行った許可情報の比較処理において、新規端末がコミュニティへの参加・加入に対し賛成を得ていないと判断されるときには、新規端末が自端末以外の他のメンバ端末と必ずコネクションを確立することができない状況を作り出すことができる。これにより、賛成を受けていると判断したにもかかわらず新規端末は自端末以外とコネクションを確立することができない。または賛成を受けていないと判断したにもかかわらず新規端末は自端末以外とコネクションを確立することができるといった状況を防止することができる。
また、第2の実施の形態では、各メンバ端末は許可情報を閾値(3、3)で分散符号化し、得られた3個の許可情報シェアのうちの一つは必ず自端末で保存し、さらに許可情報も自端末で保存し、他端末に一切漏らさないため、他の端末が許可情報を推測するのを防止することができる。
また、第2の実施の形態では、各メンバ端末は許可情報を閾値(3、3)で分散符号化し、応対端末と全メンバ端末が賛成を示さなければ(つまり、配布したすべての許可情報シェアが集まらないといけない)、新規端末は各メンバ端末とコネクションを確立することができないが、分散符号化するときの閾値を変化させることで必要な賛成票を自由に変更することができ、例えば、閾値k(k≦3)をとすると、3つの端末からk個の賛成票(許可情報シェア)が集まれば、新規端末はコミュニティに属する端末とコネクションを確立することができるようになるので、投票に必要な賛成票の数を自由に設定することが可能となる。
また、新規端末に提供する許可情報シェアをそのまま提供するのではなく、宛先情報も含めて新規端末の公開鍵で暗号化した許可チケットとして提供することで、新規端末以外の端末に盗聴されることを防止し、さらに許可チケットを利用してコミュニティに参加・加入している全端末の宛先情報を新規端末に知らせることができる。
また、投票用情報である許可情報シェアを各メンバ端末が独立に直接、新規端末に提供するのではなく、賛否の最終意思決定メッセージにより、一度、応対端末で収集することで、新規端末が各メンバ端末に対してコネクションの確立要求を行うときに必要となる許可情報シェアを、統一的に扱うことが可能となる。これにより、各メンバ端末が許可情報シェアを新規端末に直接提供するために新規端末へアクセスすることにより発生の可能性のある同時アクセスを防止することができる。
また、許可情報に時刻情報を設定しておくことで、新規端末が各メンバ端末とコネクションを確立するまでの有効期限を設定することができ、セキュリティレベルを向上させ、さらに許可情報比較モジュールにおいて、基準となる有効時間を自由に設定することで、任意のセキュリティレベルを設定することが可能となる。
また、メンバ端末が新規端末とコネクションを確立したかどうかを応対端末がチェックするために、第2の実施の形態では応対端末はコネクション確立情報と閾値(3、3)によって分散符号化した3個のコネクション確立情報シェアとを利用し、各メンバ端末が賛成票である許可情報シェアを提出後、応対端末は全メンバ端末に2個のコネクション確立情報シェアをそれぞれ一つずつ配布し、各メンバ端末は新規端末とコネクションを確立するときに、あらかじめ応対端末から取得していたコネクション確立情報シェアを新規端末に渡し、その後、新規端末が応対端末とコネクションを確立するときに各メンバ端末から取得した2個のコネクション確立情報シェアを応対端末に渡し、応対端末はその2個のコネクション確立情報シェアと、内部の前記データベースで管理するコネクション確立情報シェアとVSS復号化モジュールを利用して、コネクション確立情報を復元し、復元したコネクション情報と応対端末の内部の前記データベースで管理するコネクション確立情報を比較することで、応対端末は新規端末が全メンバ端末とコネクションを確立しているかどうかを確認することができ、応対端末とコネクションを確立するときは必ず全端末とコネクションを確立しなければならないという状況を作り出すことが可能となる。
また、コネクション確立情報に時刻情報を設定しておくことで、新規端末が応対端末とコネクションを確立するまでの有効期限を設定することができ、これによりセキュリティレベルを向上させ、さらにコネクション確立情報比較モジュールにおいて、基準となる有効時間を自由に設定することで、任意のセキュリティレベルを設定することが可能となる。
また、第2の実施の形態の場合、応対端末がメンバ端末に対し、コミュニティに招待、または参加・加入を希望する新規端末の宛先情報をそのまま提供するのではなく、代わりに閾値(2、2)でVSSにより分散符号化し、得られた宛先情報シェアと、宛先情報シェアの不正を検出するための宛先情報シェア検証用情報をメンバ端末に提供することで、各メンバ端末はそれぞれ取得した宛先情報シェアの不正を宛先情報シェア検証用情報とシェア検証モジュールとを利用して検証することができ、さらに応対端末を除くコミュニティに属する全メンバ端末が協力しないと元の新規端末の宛先情報を復元できないため、応対端末が各メンバ端末ごとに別々の宛先情報を提示するといった不正を防止することができる。
また、各メンバ端末は賛成票を提出する前に、自端末以外の全メンバ端末から取得した許可情報シェアを許可情報シェア検証用情報とシェア検証モジュールを利用して不正のチェックを行うため、不正のない正しい賛成票を応対端末に提出することができると同時に、提出時における不正検出も可能となる。
また、第2の実施の形態ではコミュニティに属する全端末数が3であるが(端末1、端末2、端末3)、4以上の場合でも同様の効果が得られる。
また、端末同士がやり取りするメッセージには電子署名と暗号化、または電子署名による認証後はセッションキーによる暗号化を必ず行うことで、各端末が交換する様々な情報(許可情報シェア、許可情報シェア検証用情報、宛先情報、宛先情報シェア、宛先情報シェア検証用情報、コネクション確立情報、コネクション確立情報シェア)が第三者に盗聴されることを防止することができる。
また、宛先情報は任意の種類の情報を適用することができ、例えば、IPアドレスやSIPアドレスを適用することができる。
また、以上説明した本発明の実施の形態によれば、新規エンティティがフルメッシュ網によるコミュニティに参加・加入する場合に、既にコミュニティに加入している複数のエンティティによる賛否の票によるアクセスコントロールを実現でき、許可決定プロセス中において存在する不正なエンティティを検出することができ、許可決定プロセスが不正に操作されることを防止でき、新規エンティティがコミュニティに既に参加・加入している各エンティティに対してコネクションを確立する場合に、許可決定プロセスを不正なく安全に行うことができ、コミュニティに参加・加入している他のエンティティが新規エンティティのコミュニティへの参加・加入に賛否(許可)したことを確実に確認することができるコミュニケーションシステム、コミュニケーション方法およびそのプログラムを提供することができる。
なお、以上説明した本発明の実施の形態において示した構成は、ネットワークに接続されている複数の端末もしくは公開鍵サーバとの通信を行い、複数の端末に対してはコネクションを確立することでコミュニティを形成し、かつ、公開鍵サーバに対しては公開鍵取得要求により公開鍵を取得するためのコミュニケーションシステムであって、2つ以上の端末間のフルメッシュのコネクションで形成されるフルメッシュ網により形成されたコミュニティと、コミュニティに属していない新規端末をコミュニティに招待することの要求がされているか、または、コミュニティに属していない新規端末がコミュニティへ属することの要求を受けたコミュニティに属する端末のいずれかにより構成される応対端末と、応対端末以外のコミュニティに属する端末により構成されるメンバ端末と、コミュニティへ新規端末を参加・加入させる場合に、この参加・加入の可否を決定するための投票用情報の作成の基礎となる情報であって、新規端末がメンバ端末のそれぞれにコネクションの確立を要求する場合に、その新規端末がコミュニティのメンバ端末および応対端末から参加・加入に対する賛成を得ているかどうかを確認するための情報である許可情報を生成するための許可情報生成モジュールと、新規端末がメンバ端末とコネクションを確立したかどうかを応対端末が確認するために必要なコネクション確立情報を生成するコネクション確立情報生成モジュールと、メンバ端末がそれぞれ独立に生成した許可情報を検証可秘密分散の(k、n)閾値法(k≦n)によって分散符号化し、投票用情報であるn個の許可情報シェアと1個の許可情報シェア検証用情報を生成し、同様にコネクション確立情報を秘密分散法の(k、n)閾値法(k≦n)によって分散符号化し、n個のコネクション確立情報シェアを生成し、同様にコミュニティに参加・加入している全端末数が3以上のときに新規端末の宛先情報を検証可秘密分散の(k、n)閾値法(k≦n)によって分散符号化し、n個の宛先情報シェアと1個の宛先情報シェア検証用情報を生成するためのVSS分散符号化モジュールと、秘密分散法または検証可秘密分散の(k、n)閾値法によって、n個の分散符号化されたシェアからk個以上のシェアを利用することで元の情報を復元するためのVSS復号化モジュールと、許可情報シェア検証用情報と宛先情報シェア検証用情報を利用し、VSSにより許可情報シェアとコネクション確立情報シェアと宛先情報シェアに不正がないかどうかを確認するシェア検証モジュールと、共通鍵暗号化方式によるセッションキーを生成する共通鍵生成モジュールと、を有し、許可情報生成モジュールで生成する許可情報と、VSS分散符号化モジュールと許可情報とを利用して生成する許可情報シェアと、許可情報シェア検証用情報と、コネクション確立情報生成モジュールで生成するコネクション確立情報と、VSS分散符号化モジュールとコネクション確立情報とを利用して生成するコネクション確立情報シェアと、共通鍵生成モジュールで生成するセッションキーと、公開鍵サーバに問い合わせることで取得する自端末以外の他の端末の公開鍵と、自端末の秘密鍵および公開鍵と、他の端末の宛先情報と、VSS分散符号化モジュールと宛先情報とを利用して生成する宛先情報シェアと、宛先情報シェア検証用情報と、コミュニティに参加・加入している全ての端末を網羅した端末リストと、を管理するデータベースと、新規端末がメンバ端末の各々にコネクションの確立を要求する場合に、メンバ端末において新規端末がコミュニティに属する他の端末から賛成を得ているかどうかを、新規端末から取得した許可情報シェアと、自端末のデータベースで管理する許可情報シェアと、VSS復号化モジュールと、を利用して復元した許可情報と、自端末のデータベースで管理する許可情報と、を比較し確認するための許可情報比較モジュールと、応対端末が新規端末からアクセスを受けた場合に、全てのメンバ端末とコネクションを確立しているかどうかを、新規端末から取得したコネクション確立情報シェアと、自端末のデータベースで管理するコネクション確立情報シェアと、VSS復号化モジュールと、を利用して復元したコネクション確立情報と、自端末のデータベースで管理するコネクション確立情報と、を比較し確認するためのコネクション確立情報比較モジュールと、暗号化の依頼を受けた情報を公開鍵暗号化方式により暗号化するための公開鍵暗号化方式暗号化モジュールと、暗号化の依頼を受けた情報を共通鍵暗号化方式により暗号化するための共通鍵暗号化方式暗号化モジュールと、複数の情報の変換結果が同一になることが困難なハッシュ関数の一種であるメッセージダイジェスト関数を利用して任意情報のダイジェストを生成するためのdigest生成モジュールと、復号化の依頼を受けた情報を公開鍵暗号化方式により復号化するための公開鍵暗号化方式復号化モジュールと、復号化の依頼を受けた情報を共通鍵暗号化方式により復号化するための共通鍵暗号化方式復号化モジュールと、コネクションを確立するかどうかの決定と、コミュニティへの新規端末の参加・加入に対する賛否の一次決定と、コミュニティへの新規端末の参加・加入に対する賛否の最終決定と、コミュニティに参加・加入するかどうかの決定と、のそれぞれの決定をするための意思入力モジュールと、要求された内容のメッセージを生成し、メッセージの生成の要求時に渡された情報をメッセージに添付する場合において、メッセージに電子署名と暗号化を施す場合は、公開鍵暗号方式暗号化モジュールと共通鍵暗号方式モジュールとdigest生成モジュールとをもって添付を実行し、一方、暗号化のみを施す場合は、共通鍵暗号方式モジュールをもって添付を実行するためのメッセージ生成モジュールと、許可情報の生成を許可情報生成モジュールに依頼し、コネクション確立情報の生成をコネクション確立情報生成モジュールに依頼し、許可情報シェアと、許可情報シェア検証用情報と、またはコネクション確立情報シェアと、または宛先情報シェアと、宛先情報シェア検証用情報と、を生成することをVSS分散符号化モジュールに依頼し、許可情報シェアの公開鍵による暗号化を公開鍵暗号方式暗号化モジュールに依頼し、暗号化された許可情報シェアの復号化を公開鍵暗号方式復号化モジュールに依頼し、意思入力モジュールに決定を下すように依頼し、宛先情報シェアから宛先情報を復元するようにVSS復号化モジュールに依頼し、許可情報の比較を許可情報比較モジュールに依頼し、コネクション確立情報の比較をコネクション確立情報比較モジュールに依頼し、セッションキーの生成を共通鍵生成モジュールに依頼し、シェア検証モジュールに、許可情報シェアか、または宛先情報シェアの不正チェックを依頼し、データベースに各種情報の問い合わせと保存を行ってメッセージ生成モジュールにメッセージの生成を依頼するための制御モジュールと、全ての端末について、受信されたメッセージの送受信中に不正行為が行われていないかどうかを確認するために、メッセージに含まれるダイジェストと該メッセージの内容とからdigest生成モジュールでもって生成されたダイジェストに相違がないかどうかを比較するためのメッセージ不正判断モジュールと、全ての端末について、受信されたメッセージに電子署名と暗号化が施されている場合は、公開鍵暗号化方式復号化モジュールと、共通鍵暗号方式復号化モジュールと、をもってメッセージを解読し、さらに、メッセージの解読に必要となる発信元端末の公開鍵をデータベースに持っていない場合において、制御モジュールを通じて公開鍵サーバに対し公開鍵を取得するように要求し、解読処理後にメッセージに不正行為が行われていないかどうかを確認するために、得られたメッセージの内容とダイジェストからメッセージの内容をもってdigest生成モジュールによりダイジェストを生成し、2つのダイジェストをメッセージ不正判断モジュールに渡し、不正行為の有無の確認を依頼し、不正行為がなければ制御モジュールにメッセージ内容を渡し、一方、メッセージに暗号化だけが施されている場合は、共通鍵暗号化方式復号化モジュールによってメッセージを復号し、この復号後のメッセージの内容を制御モジュールへ渡すためのメッセージ解析モジュールと、メッセージ生成モジュールによって生成されたメッセージを、外部の端末または公開鍵サーバに対して送信し、外部の端末または公開鍵サーバから受信したメッセージをメッセージ解析モジュールに渡すためのメッセージ処理モジュールと、を備える。
また、許可情報生成モジュールは、許可情報を、生成時の時刻情報と、新規端末の宛先情報と、任意のランダムなキーワードと、により構成し生成する。
また、コネクション確立情報生成モジュールは、コネクション確立情報を、生成時の時刻情報と、新規端末の宛先情報と、任意のランダムなキーワードと、により構成し生成する。
また、全端末数が2つの場合において、応対端末が、メンバ端末に新規端末のコミュニティへの参加・加入に対する賛否を伺い、メンバ端末は賛成の場合に独立に生成した許可情報を元にVSS分散符号化モジュールにより投票用情報である許可情報シェアを閾値(3、3)により3個生成し、そのうちの一つを応対端末に配布する第一段階と、第一段階でメンバ端末が賛成であった場合に、メンバ端末は自端末が持つ1つの許可情報シェアを賛成票として応対端末に提出し、新規端末をコミュニティに参加・加入させるかどうかを決定する第二段階と、第二段階においてメンバ端末が賛成であった場合に、応対端末がメンバ端末から賛成票として回収した1個と、応対端末が持つ1個と、を併せた2個の許可情報シェアを新規端末にコミュニティへの参加・加入するためのチケットとして提供し、新規端末がメンバ端末とコネクションを確立する際に、応対端末から取得した全ての許可情報シェアを、コネクションの確立要求を行うメッセージに添付する第三段階と、を有し、あるいは、全端末数が3つ以上の場合において、応対端末が全てのメンバ端末に新規端末のコミュニティへの参加・加入に対する賛否を伺い、各々のメンバ端末は独立に生成した許可情報を元にVSS分散符号化モジュールにより閾値((全端末数)、(全端末数))で(全端末数)個の許可情報シェアと、1個の許可情報シェア検証用情報と、を生成し、(全端末数)個のうちの(全端末数−1)個の許可情報シェアをそれぞれ他の全てのメンバ端末と応対端末に1つずつ配布し、同時に許可情報シェア検証用情報を配布した後を第一段階とし、第一段階で全てのメンバ端末が賛成であった場合に、各々のメンバ端末は他の全てのメンバ端末から取得した(全端末数−2)個の許可情報シェアを賛成票として応対端末に提出することで、新規端末をコミュニティに参加・加入させるかどうかを決定することを第二段階とし、第二段階において全てのメンバ端末が賛成であった場合に、応対端末が全てのメンバ端末から賛成票として回収した(全端末数−2)×(全端末数−1)個と応対端末が持つ(全端末数−1)個とを併せた、(全端末数−1)×(全端末数−1)個の許可情報シェアを新規端末にコミュニティへの参加・加入するためのチケットとして提供し、新規端末が各々のメンバ端末とコネクションを確立する際に、応対端末から取得した全ての許可情報シェアをコネクションの確立要求を行うメッセージに添付する第三段階とする。
また、第一段階は、各々のメンバ端末が許可情報シェアを配布する場合において、全端末数が2つのときは、メンバ端末は自端末が生成した3個の許可情報シェアのうちの一つを応対端末に配布し、また一つは自端末の賛成票とし、残りの一つの許可情報シェアは他端末に一切漏らすことなく管理し、全端末数が3つ以上のときは、各々のメンバ端末は自端末が生成した(全端末数)個の許可情報シェアのうち、(全端末数−1)個は他の端末に配布し、残りの一つの許可情報シェアと許可情報はそれぞれが他端末に一切漏らすことなく管理する。
また、メンバ端末が応対端末に許可情報シェアを提出する場合において、または応対端末が各々のメンバ端末から取得した許可情報シェアを新規端末に提供する場合において、自端末の宛先情報を含めて新規端末の公開鍵を利用して公開鍵暗号方式暗号化モジュールにより暗号化して提出する。
また、第二段階において、全てのメンバ端末が応対端末に賛成票を提出した場合に、応対端末はコネクション確立情報生成モジュールによりコネクション確立情報を生成し、コネクション確立情報をVSS分散符号化モジュールにより、閾値((全端末数)、(全端末数))で分散符号化して得られた(全端末数)個のコネクション情報シェアのうちの(全端末数−1)を全てのメンバ端末にそれぞれ一つずつに提供し、残りの一つのコネクション確立情報シェアと、その元の情報であるコネクション確立情報をデータベースでもって外部に漏洩なく管理する。
また、メンバ端末が新規端末から許可情報シェアが添付されたコネクション確立要求を示すメッセージを受信した場合において、メンバ端末は新規端末が自端末以外のコミュニティに属する全端末から参加・加入に対する賛成を受けているかどうかを確認するために、許可情報比較モジュールは制御モジュールから許可情報の比較の依頼を受け、全端末数が2つの場合は、コネクション確立要求メッセージに添付されている2個の許可情報シェアと、自端末のデータベースで管理している1つの許可情報シェアを利用して、VSS復号化モジュールにより許可情報を復元し、自端末のデータベースに保存している許可情報と相違がないか比較を行い、相違がない場合は、許可情報に含まれる時刻情報と比較時の時刻情報との差分が予め設定された所定値以上であるか否かを調べ、所定値以下ならば、さらに宛先情報が新規端末と相違がないか否かを調べ、相違がなければ、制御モジュールに正常応答を返し、全端末数が3つ以上の場合は、コネクション確立要求メッセージに添付されている(全端末数−1)×(全端末数−1)個の許可情報シェアのうち、自端末が配布した(全端末数−1)個の許可情報シェアと、自端末のデータベースで管理している1つの許可情報シェアを利用して、VSS復号化モジュールにより許可情報を復元し、自端末のデータベースに保存している許可情報と相違があるか否かの比較を行い、相違がない場合は、許可情報に含まれる時刻情報と比較時の時刻情報との差分が所定値以上であるか否かを調べ、所定値以下ならば、さらに宛先情報が新規端末と相違があるか否かを調べ、相違がなければ、残りの(全端末数−2)×(全端末数−1)個の許可情報シェアに不正があるか否かを、シェア検証モジュールと他のメンバ端末から許可情報シェア配布時に取得した許可情報シェア検証用情報を利用して確認を行い、不正がなければ制御モジュールに正常応答を返す。
また、許可情報の有効期間を示す所定値を任意に設定するための許可情報有効期間設定手段を備える。
また、新規端末が各々のメンバ端末にコネクション確立要求を示すメッセージを送信し、正常にコネクションが確立される際に、各々のメンバ端末は、自端末がデータベースに保存しているコネクション確立情報シェアを提供し、新規端末は全てのメンバ端末から取得した(全端末数−1)個のコネクション確立情報シェアを含めて、応対端末に提供し、応対端末は新規端末が全てのメンバ端末とコネクションを確立しているか否かを確認するために、コネクション確立情報比較モジュールは制御モジュールからコネクション確立情報の比較の依頼を受け、新規端末から取得した(全端末数−1)個のコネクション確立情報シェアと、自端末のデータベースで管理している1個のコネクション確立情報シェアと、VSS復号化モジュールと、を利用して復元したコネクション確立情報と、自端末のデータベースで管理しているコネクション確立情報とを比較して相違があるか否かの確認を行い、相違がない場合は、コネクション確立情報に含まれる時刻情報と比較時の時刻情報との差分が所定値以上であるか否かを調べ、所定値以下ならば制御モジュールに正常応答を返す。
また、コネクション確立情報の有効期間を示す所定値を任意に設定するためのコネクション確立情報有効期間設定手段を備える。
また、応対端末が各々のメンバ端末に新規端末のコミュニティへの参加・加入に対して賛否を問う場合において、招待または参加・加入を希望する新規端末を、宛先情報としてメンバ端末に知らせ、全端末数が3つ以上の場合は、新規端末の宛先情報をVSS分散符号化モジュールにより分散符号化して得られる宛先情報シェアと宛先情報シェア検証用情報とを知らせ、各々のメンバ端末同士は元の宛先情報を得るために応対端末から取得した宛先情報シェアをお互いに交換し、応対端末から取得した宛先情報シェア検証用情報とシェア検証用モジュールでもって、全ての宛先情報シェアの不正を検証した後にVSS復号化モジュールにより元の宛先情報を復元する。
また、メンバ端末は賛成票として許可情報シェアを提出する場合において、それぞれの許可情報シェアを許可情報シェア検証用情報によって不正があるか否かをシェア検証モジュールによってチェックを行う。
また、第一段階において、応対端末が全てのメンバ端末から通知された新規端末のコミュニティへの参加・加入に対する賛否の伺いに対し、投票のために第二段階に進むことが可能であるか否かの集計結果を通知し、第二段階において、投票結果を通知する。