(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-17
(45)【発行日】2024-09-26
(54)【発明の名称】制御方法、サーバ、および、プログラム
(51)【国際特許分類】
H04L 67/1074 20220101AFI20240918BHJP
G06F 21/64 20130101ALI20240918BHJP
【FI】
H04L67/1074
G06F21/64
(21)【出願番号】P 2021542753
(86)(22)【出願日】2020-08-17
(86)【国際出願番号】 JP2020030941
(87)【国際公開番号】W WO2021039453
(87)【国際公開日】2021-03-04
【審査請求日】2023-06-01
(32)【優先日】2019-08-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】田口 雅裕
(72)【発明者】
【氏名】海上 勇二
(72)【発明者】
【氏名】渕上 哲司
(72)【発明者】
【氏名】廣瀬 雄揮
【審査官】木村 雅也
(56)【参考文献】
【文献】米国特許出願公開第2019/0259274(US,A1)
【文献】米国特許出願公開第2018/0349621(US,A1)
【文献】米国特許出願公開第2015/0334181(US,A1)
【文献】国際公開第2018/162687(WO,A1)
【文献】国際公開第2018/163031(WO,A1)
【文献】国際公開第2019/137563(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/1074
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバが実行する制御方法であって、
P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、
受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、
前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する
制御方法。
【請求項2】
受信する前記トランザクションデータは、前記第一ピアが有する前記ピア情報が更新されたときに、更新後の前記ピア情報を含めて生成されたトランザクションデータである
請求項1に記載の制御方法。
【請求項3】
さらに、前記ピア情報の読出要求を受けた場合には、前記分散台帳に格納されている前記トランザクションデータから前記ピア情報を読み出し、読み出した前記ピア情報を前記読出要求の要求元に送信する
請求項1又は2に記載の制御方法。
【請求項4】
読み出した前記ピア情報を送信する際には、
前記分散台帳を参照して読み出したピア情報のうち、当該ピア情報に含まれるパラメータが、接続に適したピアであることを示す所定の範囲に含まれる1以上のピア情報を送信する
請求項3に記載の制御方法。
【請求項5】
読み出した前記ピア情報を送信する際には、
前記分散台帳を参照して読み出したピア情報に基づいて、接続に適したピアを決定し、決定した前記ピアのピア情報を送信する
請求項3又は4に記載の制御方法。
【請求項6】
前記トランザクションデータを前記分散台帳に格納する際には、
前記トランザクションデータを前記複数のサーバで共有し、所定のコンセンサスアルゴリズムを実行することで前記トランザクションデータの正当性が合意された場合に、前記トランザクションデータを前記分散台帳に格納する
請求項1~5のいずれか1項に記載の制御方法。
【請求項7】
前記ピア情報は、前記第一ピアの識別情報、前記第一ピアのIP(Internet Protocol)アドレス、前記第一ピアが前記他のピアとの通信に用いるポート番号、前記第一ピアが現在接続しているピアの識別情報、前記第一ピアの前記P2Pシステムへの参加継続時間、前記第一ピアが現在接続しているピアとの接続継続時間、前記第一ピアの公開鍵、および、前記第一ピアの最大許容接続数の少なくとも1つを含む
請求項1~6のいずれか1項に記載の制御方法。
【請求項8】
前記P2P管理システムは、代理サーバを介して前記P2Pシステムに接続されており、
前記第一ピアは、前記ピア情報と前記署名とを前記代理サーバに送信し、
前記代理サーバは、前記第一ピアが送信した前記ピア情報と前記署名とを含めたトランザクションデータである代理トランザクションデータを生成して前記一のサーバに送信し、
前記トランザクションデータを受信する際には、
前記代理サーバが送信した前記代理トランザクションデータを、前記トランザクションデータとして受信する
請求項1~7のいずれか1項に記載の制御方法。
【請求項9】
前記P2P管理システムは、前記P2Pシステムに接続されている
請求項1~7のいずれか1項に記載の制御方法。
【請求項10】
分散台帳を保有している複数のサーバを備えるP2P管理システムと、P2Pシステムとの間に介在する代理サーバの制御方法であって、
前記P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを受信し、
受信した前記ピア情報と前記署名とを含めたトランザクションデータを生成して、前記P2P管理システムを構成する複数のサーバに送信する
制御方法。
【請求項11】
分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバであって、
台帳制御部と、前記分散台帳を記憶している記憶部とを備え、
前記台帳制御部は、
P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、
受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、
前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する
サーバ。
【請求項12】
請求項1~10のいずれか1項に記載の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御方法、サーバ、および、プログラムに関する。
【背景技術】
【0002】
ピアツーピア(P2P)ネットワークに参加するピアは、サーバまたは他のピアから取得したピア情報をもとに、ピア接続を行う(非特許文献1)。
【先行技術文献】
【非特許文献】
【0003】
【文献】Bitcoin Developer Guide、[令和2年7月1日検索]、インターネットURL:https://btcinformation.org/en/developer-guide#block-prototypes
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来、ピア情報の改ざん耐性または信頼性に関する問題がある。
【0005】
そこで、本発明は、ピア情報を適切に管理するための制御方法などを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様に係る制御方法は、分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバが実行する制御方法であって、P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する制御方法である。
【0007】
なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0008】
本発明の制御方法によれば、ピア情報を適切に管理することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態1におけるシステムの全体の構成を示す模式図である。
【
図2】
図2は、実施の形態1におけるピアの機能構成を示すブロック図である。
【
図3】
図3は、実施の形態1における代理サーバの機能構成を示すブロック図である。
【
図4】
図4は、実施の形態1における台帳サーバの機能構成を示すブロック図である。
【
図5】
図5は、実施の形態1におけるトランザクションデータの一例を示す説明図である。
【
図6】
図6は、実施の形態1における自装置のピア情報の書き込みのためにピアが実行する処理を示すフロー図である。
【
図7】
図7は、実施の形態1におけるピアが他装置のピア情報を取得してP2Pシステムに参加するときに実行する処理を示すフロー図である。
【
図8】
図8は、実施の形態1におけるピア情報の書き込みおよび取得のために代理サーバが実行する処理を示すフロー図である。
【
図9】
図9は、実施の形態1におけるピア情報の書き込みおよび読み出しのために台帳サーバが実行する処理を示すフロー図である。
【
図10】
図10は、実施の形態1におけるピア情報の登録および更新のときにシステムが実行する処理を示すシーケンス図である。
【
図11】
図11は、実施の形態1における新たにピアに接続するときにシステムが実行する処理を示すシーケンス図である。
【
図12】
図12は、実施の形態2におけるシステムの全体の構成を示す模式図である。
【
図13】
図13は、実施の形態2におけるピアの機能を示すブロック図である。
【
図14】
図14は、実施の形態3におけるシステムの全体の構成を示す模式図である。
【
図15】
図15は、実施の形態3におけるピアの機能を示すブロック図である。
【
図16】
図16は、ブロックチェーンのデータ構造を示す説明図である。
【
図17】
図17は、トランザクションデータのデータ構造を示す説明図である。
【発明を実施するための形態】
【0010】
(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した、ピアツーピア(P2P)ネットワークに関する技術について、以下の問題が生じることを見出した。
【0011】
P2Pネットワークにおいて、そのネットワークに参加している他のピアの情報を取得する手法としては、そのP2Pネットワークに参加する全てのピアの情報を管理するサーバに各ピアが問い合わせる方法(ハイブリット型)、または、接続したピア同士で情報を交換する方法(ピュア型)などがある。P2Pネットワークに参加するピアは、いずれの方法においても、サーバまたは他のピアから取得したピア情報をもとに、ピア接続を行う(非特許文献1)。
【0012】
しかしながら、ハイブリッド型のP2Pネットワークでは、集中管理しているピア管理サーバの情報が故意または過失によって不適当に書き換えられてしまうことがある。その場合、P2Pネットワークに参加するピアをDoS攻撃に誘導することが可能になったり、P2Pネットワーク自体が停止したりするという問題がある。
【0013】
他方、ピュア型のP2Pネットワークでは、新規にP2Pネットワークに参加しようとする新規のピアが、最初のピア接続先を何らかの方法で知る必要がある。このとき、新規のピアが悪意のあるピアに接続してしまうと、前述と同様のDoS攻撃への誘導、または、悪意のあるP2Pネットワークへの参加をさせられてしまうなどの問題がある。
【0014】
このように、従来、ピア情報の改ざん耐性または信頼性に関する問題がある。
【0015】
そこで、本発明は、P2Pシステムで用いられるピア情報をサーバが適切に管理するための制御方法などを提供することを目的とする。
【0016】
このような問題を解決するために、本発明の一態様に係る制御方法は、分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバが実行する制御方法であって、P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する制御方法である。
【0017】
上記態様によれば、サーバは、ピア情報を含むトランザクションデータに分散台帳に格納して管理する。分散台帳に格納されたピア情報は、改ざんが実質的に困難であるという特性に基づいて、改ざんされないように管理される。よって、サーバは、ピア情報を適切に管理することができる。
【0018】
例えば、受信する前記トランザクションデータは、前記第一ピアが有する前記ピア情報が更新されたときに、更新後の前記ピア情報を含めて生成されたトランザクションデータであってもよい。
【0019】
上記態様によれば、サーバは、更新された後のピア情報を含むトランザクションデータを受信して分散台帳に格納して管理する。そのため、分散台帳に格納されているトランザクションデータが最新のピア情報を含む状態に維持される。よって、サーバは、最新のピア情報を適切に管理することができる。
【0020】
例えば、さらに、前記ピア情報の取得要求を受けた場合には、前記分散台帳に格納されている前記トランザクションデータから前記ピア情報を読み出し、読み出した前記ピア情報を前記取得要求の要求元に送信してもよい。
【0021】
上記態様によれば、サーバは、適切な状態で格納されているピア情報を、ピア情報の取得要求に対して送信する。このように、サーバは、ピア情報を適切に提供することを通じて、ピア情報を適切に管理することができる。
【0022】
例えば、読み出した前記ピア情報を送信する際には、前記分散台帳を参照して読み出したピア情報のうち、当該ピア情報に含まれるパラメータが、接続に適したピアであることを示す所定の範囲に含まれる1以上のピア情報を送信してもよい。
【0023】
上記態様によれば、接続に適したピアを示すピア情報をサーバが送信するので、ピア情報を受信したピアは、サーバから送信されたピア情報に示されるピアに接続することによって、接続に適したピアを選択して接続することができる。よって、サーバは、接続に適したピアのピア情報を提供することを通じて、ピア情報を適切に管理することができる。
【0024】
例えば、読み出した前記ピア情報を送信する際には、前記分散台帳を参照して読み出したピア情報に基づいて、接続に適したピアを決定し、決定した前記ピアのピア情報を送信してもよい。
【0025】
上記態様によれば、接続に適したピアとしてサーバが決定したピアを示すピア情報をサーバが送信するので、ピア情報を受信したピアは、サーバから送信されたピア情報に示されるピアに接続することによって、接続に適したピアに接続することができる。よって、サーバは、接続に適したピアのピア情報を決定して提供することを通じて、ピア情報を適切に管理し、P2Pネットワークを制御することができる。
【0026】
例えば、前記トランザクションデータを前記分散台帳に格納する際には、前記トランザクションデータを前記複数のサーバで共有し、所定のコンセンサスアルゴリズムを実行することで前記トランザクションデータの正当性が合意された場合に、前記トランザクションデータを前記分散台帳に格納してもよい。
【0027】
上記態様によれば、サーバは、複数のサーバの間で分散台帳に格納するトランザクションデータの正当性が合意されたことを確認してから、当該トランザクションデータを分散台帳に格納する。よって、サーバは、複数のサーバの分散台帳によって、より適切に、ピア情報を管理することができる。
【0028】
例えば、前記ピア情報は、前記第一ピアの識別情報、前記第一ピアのIP(Internet Protocol)アドレス、前記第一ピアが前記他のピアとの通信に用いるポート番号、前記第一ピアが現在接続しているピアの識別情報、前記第一ピアの前記P2Pシステムへの参加継続時間、前記第一ピアが現在接続しているピアとの接続継続時間、前記第一ピアの公開鍵、および、前記第一ピアの最大許容接続数の少なくとも1つを含んでもよい。
【0029】
上記態様によれば、サーバは、ピア情報として、ピア識別情報、IPアドレス、ポート番号、接続先識別情報、参加継続時間、接続継続時間、公開鍵、または、最大許容接続数を用いて、より詳細に、ピア情報を適切に管理し、P2Pネットワークを制御することができる。
【0030】
例えば、前記P2P管理システムは、代理サーバを介して前記P2Pシステムに接続されており、前記第一ピアは、前記ピア情報と前記署名とを前記代理サーバに送信し、前記代理サーバは、前記第一ピアが送信した前記ピア情報と前記署名とを含めたトランザクションデータである代理トランザクションデータを生成して前記一のサーバに送信し、前記トランザクションデータを受信する際には、前記代理サーバが送信した前記代理トランザクションデータを、前記トランザクションデータとして受信してもよい。
【0031】
上記態様によれば、サーバは、ピアから代理サーバを介して送信される、ピア情報を含むトランザクションデータを分散台帳によって管理する。このとき、ピアは、ピア情報と署名とを代理サーバに送信するだけでよいので、トランザクションデータの生成処理といった分散台帳に関連する処理を実装および実行する必要がない。そのため、ピアにおける処理負荷の低減、消費電力の低減の効果がある。このように、サーバは、分散台帳に関する処理をピアに実装することなく、ピア情報を適切に管理することができる。
【0032】
例えば、前記P2P管理システムは、前記P2Pシステムに接続されていてもよい。
【0033】
上記態様によれば、サーバは、ピアから送信される、ピア情報を含むトランザクションデータを分散台帳によって管理する。よって、ピアとサーバとの間に他の装置が介在する必要がないので、サーバは、P2Pシステムを単一障害点を除いた構成(言い換えれば、単一障害点がない構成)で管理することができる効果がある。よって、サーバは、比較的高い可用性を持つ構成によって、ピア情報を適切に管理することができる。
【0034】
また、本発明の一態様に係る制御方法は、分散台帳を保有している複数のサーバを備えるP2P管理システムと、P2Pシステムとの間に介在する代理サーバの制御方法であって、前記P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを受信し、受信した前記ピア情報と前記署名とを含めたトランザクションデータを生成して、前記P2P管理システムを構成する複数のサーバに送信する。
【0035】
上記態様によれば、代理サーバは、ピアから送信される、ピア情報を含むトランザクションデータを生成してサーバの分散台帳に格納させる。このとき、ピアは、ピア情報と署名とを代理サーバに送信するだけでよいので、トランザクションデータの生成処理といった分散台帳に関連する処理を実装および実行する必要がない。そのため、ピアにおける処理負荷の低減、消費電力の低減の効果がある。このように、代理サーバは、分散台帳に関する処理をピアに実装することなく、ピア情報をサーバによって適切に管理することができる。
【0036】
また、本発明の一態様に係るサーバは、分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバであって、台帳制御部と、前記分散台帳を記憶している記憶部とを備え、前記台帳制御部は、P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する。
【0037】
上記態様によれば、サーバは、上記制御方法と同様の効果を奏する。
【0038】
また、本発明の一態様に係るプログラムは、上記制御方法をコンピュータに実行させるためのプログラムである。
【0039】
上記態様によれば、プログラムは、上記制御方法と同様の効果を奏する。
【0040】
なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
【0041】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0042】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【0043】
(実施の形態1)
本実施の形態において、ピア情報を適切に管理するP2P管理システムおよびその制御方法について説明する。
【0044】
ここでは、P2Pピアが保有するP2P接続のための情報を分散台帳に記録し、その後、分散台帳を参照することでピア同士の接続を実施するピアの例を図面を参照しながら説明する。
【0045】
(1.1 システムの全体構成)
図1は、本実施の形態におけるシステム1の全体構成を示す図である。
【0046】
図1に示されるように、システム1は、ピア100A、100Bおよび100Cと、代理サーバ200と、台帳サーバ300A、300Bおよび300Cとを備え、これらの装置がネットワークNを介して接続されている。
【0047】
ピア100A、100Bおよびピア100Cは、P2Pシステム10を構成しているコンピュータである。なお、P2Pシステム10を構成するピアの数は、3に限られず、1以上いくつであってもよい。
【0048】
台帳サーバ300A、300Bおよび300Cは、P2P管理システム30を構成しているサーバ装置(単にサーバともいう)である。なお、P2P管理システム30を構成するピアの数は、3に限られず、1以上いくつであってもよい。
【0049】
ピア100Aは、P2Pシステム10を構成するP2Pピアの1つである。ピア100Aは、P2Pシステム10を構成する他のピア100Bおよび100CとネットワークNを介して通信可能に接続されている。ピア100Aは、ピア間で通信によって情報を送受信することで、P2Pシステム10が提供する所定の機能の一部を発揮する。所定の機能は、例えば、複数のピアによって大量の電子ファイルを分散して保持し、要求者に提供する機能、または、複数のピアによって大規模な計算処理を分散して実行して結果を要求者に提供する機能などがあるが、これらに限られない。
【0050】
ピア100Aは、P2Pシステム10を構成するピア同士の接続に用いるピア情報(後述)を保持しており、代理サーバ200を介してピア情報をP2P管理システム30に登録する。また、ピア100Aは、P2P管理システム30に登録されているピア情報を代理サーバ200を介して取得し、取得したピア情報を利用して未接続であるピアと接続をする。
【0051】
ピア100Bおよび100Cは、それぞれ、ピア100Aと同じ機能を有するピアであり、ピア100Aとは独立に動作する。そして、ピア100A、100Bおよび100Cが動作することによって、P2Pシステム10が所定の機能を発揮する。
【0052】
代理サーバ200は、ピア100A等の代理としてP2P管理システム30が保有している分散台帳にピア情報を登録し、また、上記分散台帳からピア情報を読み出すサーバである。
【0053】
台帳サーバ300Aは、P2P管理システム30を構成するP2Pピアの1つである。台帳サーバ300Aは、P2Pシステム10におけるピアのピア情報を分散台帳によって管理しているサーバである。台帳サーバ300Aは、P2P管理システム30を構成する他の台帳サーバ300Bおよび300CとネットワークNを介して通信可能に接続されている。
【0054】
台帳サーバ300Aは、代理サーバ200を介してピア100A等と接続されており、ピア100A等から受信するピア情報を含むトランザクションデータを分散台帳に格納し、また、分散台帳に格納されているトランザクションデータからピア情報を読み出して代理サーバ200を介してピア100A等に提供する。
【0055】
台帳サーバ300Bおよび300Cは、それぞれ、台帳サーバ300Aと同じ機能を有する台帳サーバであり、台帳サーバ300Aとは独立に動作する。そして、台帳サーバ300A、300Bおよび300Cが動作することによって、P2P管理システム30が、P2Pシステム10を管理するための機能を発揮する。
【0056】
以降において、ピア100A等と、代理サーバ200と、台帳サーバ300A等とについて詳しく説明する。
【0057】
(1.2 ピア100Aの構成)
図2は、本実施の形態におけるピア100Aの機能構成を示すブロック図である。なお、ピア100Bおよび100Cも、ピア100Aと同様の構成を有する。
【0058】
図2に示されるように、ピア100Aは、書込要求部101と、取得要求部102と、決定部103と、通信部104と、実行部105とを備える。ピア100Aが備える各機能部は、ピア100Aが備えるプロセッサ(例えば、CPU(Central Processing Unit))が、メモリを用いて所定のプログラムを実行することで実現され得る。
【0059】
書込要求部101は、自装置つまりピア100Aのピア情報を分散台帳に書き込む要求を行う機能部である。書込要求部101は、自装置つまりピア100Aと、P2Pシステム10に含まれる他のピアとのP2P接続のための情報であるピア情報を作成する。また、書込要求部101は、作成したピア情報の書込要求データを生成し、署名を付与したうえで代理サーバ200に送信することによって、分散台帳への書き込みを要求する。ピア情報の具体例はあとで詳しく説明する。
【0060】
取得要求部102は、分散台帳からピア情報を取得する要求を行う機能部である。取得要求部102は、代理サーバ200に対して、分散台帳に記録されているピア情報の取得のための取得要求データ(単に取得要求ともいう)を生成して送信する。そして、取得要求部102は、上記取得要求データに応じて台帳サーバ300A等が送信したピア情報を代理サーバ200を介して取得する。また、取得要求部102は、このように取得したピア情報における改ざんを検知するための検知処理を行う。改ざんの検知は、書き込まれたピア情報に付与された署名を用いてなされる。
【0061】
決定部103は、自装置がP2P接続をするピアを決定する機能部である。ピアの決定は、取得要求部102が取得したピア情報を用いてなされてよい。
【0062】
通信部104は、ネットワークNに接続される通信インタフェース装置である。通信部104は、ネットワークNを介して、代理サーバ200、ならびに、他のピア100Bおよび100Cとの通信を行う。
【0063】
実行部105は、所定のプログラムを実行することで、P2Pシステム10が提供する所定の機能の一部を発揮する機能部である。
【0064】
(1.3 代理サーバ200の構成)
図3は、本実施の形態における代理サーバ200の機能構成を示すブロック図である。
【0065】
図3に示されるように、代理サーバ200は、要求代理部201と、台帳処理部202と、通信部203とを備える。代理サーバ200が備える各機能部は、代理サーバ200が備えるプロセッサ(例えば、CPU)が、メモリを用いて所定のプログラムを実行することで実現され得る。
【0066】
要求代理部201は、ピア100A等の代理として、台帳サーバ300A等の分散台帳へのデータの書き込み又は読み出しを行う機能部である。具体的には、要求代理部201は、ピア100A等からの要求を受信したときには、受信した要求に基づいて台帳処理部202を制御する。例えば、要求代理部201は、ピア情報の書込要求データを受信した場合には、台帳処理部202にトランザクションデータの生成を指示する。また、ピア情報の取得要求データを受信した場合には、台帳処理部202に、分散台帳を参照することでピア情報を読み出す指示をする。
【0067】
台帳処理部202は、台帳サーバ300A等が有する分散台帳へのデータの書き込み又は読み出しをする機能部である。台帳処理部202は、具体的には、要求代理部201の制御の下で、ピア100Aから受信した書込要求データを含むトランザクションデータを生成して台帳サーバ300Aなどに送信する。また、台帳処理部202は、要求代理部201の制御の下で、ピア100Aから受信した取得要求データに基づいて分散台帳からピア情報を読み出す読出要求データを生成して台帳サーバ300Aなどに送信する。読出要求データに対する応答を台帳サーバ300A等から受信したときには、その応答をピア100Aに送信する。
【0068】
なお、台帳処理部202は、トランザクションデータを台帳サーバ300A等に送信するときには、コンセンサスアルゴリズムの実行またはマイニングなどの処理の一部を担ってもよい。
【0069】
通信部203は、ネットワークNに接続される通信インタフェース装置である。通信部203は、ネットワークNを介して、ピア100A等、および、台帳サーバ300A等との通信を行う。
【0070】
(1.4 台帳サーバ300Aの構成)
図4は、本実施の形態における台帳サーバ300Aの機能構成を示すブロック図である。なお、台帳サーバ300Bおよび300Cも、台帳サーバ300Aと同様の構成を有する。
【0071】
図4に示されるように、台帳サーバ300Aは、台帳制御部301と、通信部302と、記憶部303とを備える。台帳サーバ300Aが備える各機能部は、台帳サーバ300Aが備えるプロセッサ(例えば、CPU)が、メモリを用いて所定のプログラムを実行することで実現され得る。
【0072】
台帳制御部301は、分散台帳305を制御する機能部である。具体的には、台帳制御部301は、記憶部303に格納されている分散台帳305へのトランザクションデータの書き込み、または、分散台帳305に格納されているトランザクションデータの読出しを行う。
【0073】
台帳制御部301は、具体的には、P2Pシステム10を構成する複数のピアのうちの第一ピア(例えばピア100A)と他のピア(例えばピア100B)との接続に用いられるピア情報と、上記ピア情報に対して第一ピアにより付与された署名とを含むトランザクションデータを受信する。台帳制御部301は、受信したトランザクションデータに含まれている署名を用いて、受信したトランザクションデータの検証をする。台帳制御部301は、上記検証が成功した場合に、上記トランザクションデータを分散台帳305に格納する。トランザクションデータは、代理サーバ200が送信したものである。
【0074】
なお、台帳制御部301が受信するトランザクションデータは、第一ピアが有するピア情報が更新されたときに、更新後のピア情報を含めて生成されたトランザクションデータであってもよい。
【0075】
また、台帳制御部301は、ピア情報の読出要求データ(単に読出要求ともいう)を受けた場合には、分散台帳305に格納されているトランザクションデータからピア情報を読み出し、読み出したピア情報を上記読出要求データの要求元に送信する。台帳制御部301は、読み出したピア情報を送信する際には、分散台帳305を参照して読み出したピア情報のうち、当該ピア情報に含まれるパラメータが、接続に適したピアであることを示す所定の範囲に含まれる1以上のピア情報を送信してもよい。また、台帳制御部301は、読み出した前記ピア情報を送信する際には、分散台帳305を参照して読み出したピア情報に基づいて、接続に適したピアを決定し、決定したピアのピア情報を送信してもよい。
【0076】
分散台帳305の形式はどのようなものであってもよく、例えばブロックチェーンであり、この場合を例として説明するが、他の方式の分散台帳(例えば、IOTA又はハッシュグラフ等)を採用することも可能である。
【0077】
なお、分散台帳は、新しいトランザクションデータの格納の際にコンセンサスアルゴリズム(例えば、PBFT(Practical Byzantine Fault Tolerance)、PoW(Proof of Work)又はPoS(Proof of Stake))を実行することでトランザクションデータの正当性を合意するものであってもよいし、実行しないものであってもよい。コンセンサスアルゴリズムを実行しない分散台帳技術の一例としてHyperledger fabricがある。
【0078】
通信部302は、ネットワークNに接続される通信インタフェース装置である。通信部302は、ネットワークNを介して、代理サーバ200、ならびに、他の台帳サーバ300Bおよび300Cとの通信を行う。
【0079】
記憶部303は、分散台帳305を記憶している記憶装置である。記憶部303には、台帳制御部301によってトランザクションデータが書き込まれ、また、台帳制御部301によってトランザクションデータが読み出される。
【0080】
図5は、本実施の形態におけるトランザクションデータ50の一例を示す説明図である。
【0081】
図5に示されるように、トランザクションデータ50は、ピア情報51と、署名52とを含む。
【0082】
ピア情報51は、P2Pシステム10に含まれる一のピア(例えばピア100A)と、他のピア(例えば100Bまたは100C)とのP2P接続に関する情報である。
【0083】
ピア情報51は、例えば、ピアの識別情報、ピアのIP(Internet Protocol)アドレス、ピアが他のピアとの通信に用いるポート番号、ピアが現在接続しているピアの識別情報、ピアのP2Pシステム10への参加継続時間、ピアが現在接続しているピアとの接続継続時間、ピアの公開鍵、および、ピアの最大許容接続数の少なくとも1つを含む。
【0084】
署名52は、ピア情報51を生成したピアが、ピア情報51に対して付与した電子署名である。
【0085】
本実施の形態では、トランザクションデータ50は、代理サーバ200によって生成される。代理サーバ200は、一のピアから受信した、当該一のピアのピア情報と署名とを含めたトランザクションデータ50を生成して、台帳サーバ300Aなどに送信することで、台帳サーバ300Aに格納させる。格納されたトランザクションデータ50は、分散台帳305に記録された情報の改ざんが困難であるという特性に基づいて、改ざんされないように格納され管理される。
【0086】
以上のように構成されたピア100A等、代理サーバ200、および、台帳サーバ300A等が実行する処理を以下で説明する。
【0087】
図6は、本実施の形態における自装置のピア情報の書き込みのためにピア100Aが実行する処理を示すフロー図である。
図6に示される処理は、例えば、ピア100AがP2Pシステム10に参加するときに開始される。
【0088】
ステップS101において、書込要求部101は、自装置であるピア100Aのピア情報を取得する。
【0089】
ステップS102において、書込要求部101は、ステップS101で取得したピア情報に対して、自装置の秘密鍵を用いて署名を生成して付与する。
【0090】
ステップS103において、書込要求部101は、ステップS101で取得したピア情報に、ステップS102で生成した署名を付与した書込要求データを生成して、代理サーバ200に送信する。送信された書込要求データに含まれるピア情報と署名とは、代理サーバ200によってトランザクションデータに含められ、台帳サーバ300A等により改ざんされないように管理される。
【0091】
ステップS104において、書込要求部101は、自装置のピア情報を前回取得してから、現時点までに、自装置のピア情報が更新されたか否かを判定する。自装置のピア情報が更新されたと判定した場合(ステップS104でYes)には、ステップS105に進み、そうでない場合(ステップS104でNo)には、ステップS104に進む。つまり、書込要求部101は、ピア情報が更新されるまでステップS104で待機状態をとる。なお、ピア情報が更新されるのは、例えば、ピア100AのIPアドレス、または、ピア100Aが他のピアとの通信に用いるポート番号が更新されたときである。
【0092】
ステップS105において、書込要求部101は、自装置であるピア100Aのピア情報を取得する。
【0093】
ステップS106において、書込要求部101は、ステップS105で取得したピア情報に対して署名を生成する。
【0094】
ステップS107において、書込要求部101は、ステップS105で取得したピア情報に、ステップS106で生成した署名を付与した書込要求データを生成して、代理サーバ200に送信する。送信された書込要求データに含まれるピア情報と署名とは、ステップS103における場合と同様に、代理サーバ200によってトランザクションデータに含められ、台帳サーバ300A等により改ざんされないように管理される。ステップS107の処理を終えたら、ステップS104に進む。
【0095】
図6に示される一連の処理によって、ピア100Aは、P2Pシステム10に参加するときに自装置のピア情報を台帳サーバ300Aなどに格納するとともに、自装置のピア情報が更新されるたびに、更新された自装置のピア情報を台帳サーバ300Aなどに格納する。
【0096】
図7は、本実施の形態におけるピアが他装置のピア情報を取得してP2Pシステムに参加するときに実行する処理を示すフロー図である。一例として、ピア100BがP2Pシステム10に参加する際に、他装置であるピア100Aのピア情報を取得し、ピア100Aに接続することでP2Pシステム10に参加する処理を例として説明する。
【0097】
ステップS121において、取得要求部102は、取得要求データを生成して代理サーバ200に送信する。ここで取得要求データは、P2Pシステム10に参加しているピアのうち、ピア100Bが接続することができる1以上のピアのピア情報を取得する要求である。
【0098】
ステップS122において、取得要求部102は、他装置のピア情報を取得する。取得するピア情報は、ステップS121で送信した取得要求データが代理サーバ200を介して台帳サーバ300Aに受信され、その取得要求データを受信した台帳サーバ300Aが分散台帳305から読み出して送信した1以上のピアのピア情報である。上記1以上のピアにピア100Aが含まれているとする。
【0099】
ステップS123において、決定部103は、ステップS122で取得要求部102が取得した1以上のピアのピア情報に基づいて、ピア100Bが接続するピア(接続先ピアともいう)を決定する。ここでは、接続先ピアとしてピア100Aが決定されたとする。
【0100】
例えば、決定部103は、1以上のピアのピア情報に基づいて、当該1以上のピアのうち、自装置との物理的な距離が所定より近いピア、または、自装置との物理的な距離が所定範囲外であるピアを接続先のピアとして決定してもよい。また、例えば、決定部103は、1以上のピアのピア情報に基づいて、当該1以上のピアのうち、接続しているピアの数が所定より多いピア、または、接続しているピアの数が所定範囲内であるピアを接続先のピアとして決定してもよい。また、例えば、決定部103は、1以上のピアのピア情報に基づいて、当該1以上のピアのうち、P2Pシステム10への参加継続時間が所定より長いピア、または、P2Pシステム10への参加継続時間が所定範囲内であるピアを接続先のピアとして決定してもよい。
【0101】
ステップS124において、決定部103は、ステップS123で決定した接続先ピアに接続する接続処理を実行することで、接続先ピアと接続する。
【0102】
ステップS125において、実行部105は、所定のプログラムを実行することで、P2Pシステム10が提供する所定の機能の一部を発揮する。
【0103】
図7に示される一連の処理により、ピア100Bがピア100Aに接続し、P2Pシステム10に参加することができる。
【0104】
図8は、本実施の形態におけるピア情報の書き込みおよび取得のために代理サーバ200が実行する処理を示すフロー図である。
【0105】
ステップS201において、要求代理部201は、ピア100Aから要求データを受信したか否かを判定する。ピア100Aから要求データを受信したと判定した場合(ステップS201でYes)には、ステップS202へ進み、そうでない場合(ステップS201でNo)には、ステップS201を再び実行する。つまり、要求代理部201は、要求データを受信するまでステップS201で待機状態をとる。
【0106】
ステップS202において、要求代理部201は、ステップS201で受信した要求データの種別が、書込要求データであるか、または、取得要求データであるかを判定する。要求データの種別が書込要求データであると判定した場合(ステップS202で「書込」)には、ステップS203に進み、要求データの種別が取得要求データであると判定した場合(ステップS202で「取得」)には、ステップS211に進む。
【0107】
ステップS203において、台帳処理部202は、ステップS201で受信した書込要求データに含まれるピア情報および署名を含むトランザクションデータを生成する。
【0108】
ステップS204において、台帳処理部202は、ステップS203で生成したトランザクションデータを台帳サーバ300A等に送信する。ステップS204の処理を終えたらステップS201へ進む。
【0109】
ステップS211において、台帳処理部202は、ピア情報を分散台帳から読み出すための読出要求データを生成する。
【0110】
ステップS212において、台帳処理部202は、ステップS211で生成した読出要求データを台帳サーバ300A等に送信する。ステップS212の処理を終えたらステップS201へ進む。
【0111】
図8に示される一連の処理により、代理サーバ200は、ピア100Aから受信した書込要求データまたは取得要求データに応じて、それぞれ、ピア情報の書き込みまたはピア情報の取得を、ピア100Aに代理して実行する。
【0112】
図9は、本実施の形態におけるピア情報の書き込みおよび読み出しのために台帳サーバ300Aが実行する処理を示すフロー図である。
【0113】
ステップS301において、台帳制御部301は、代理サーバ200から、トランザクションデータを受信したか、または、読出要求データを受信したかを判定する。トランザクションデータを受信したと判定した場合(ステップS301で「トランザクションデータ」)には、ステップS302に進み、読出要求データを受信した場合(ステップS301で「読出要求データ」)には、ステップS311に進む。なお、台帳制御部301は、トランザクションデータまたは読出要求データを受信するまで、ステップS301で待機状態をとる。
【0114】
ステップS302において、台帳制御部301は、ステップS301で受信したトランザクションデータを検証する。
【0115】
ステップS303において、台帳制御部301は、ステップS302における検証が成功したか否かを判定する。検証が成功したと判定した場合(ステップS303でYes)には、ステップS304に進み、そうでない場合(ステップS303でNo)には、ステップS301に進む。
【0116】
ステップS304において、台帳制御部301は、ステップS301で受信したトランザクションデータを、記憶部303に格納されている分散台帳に格納する。分散台帳に格納する際に、コンセンサスアルゴリズムを実行することでトランザクションデータの正当性の合意をすることもある。ステップS304の処理を終えたらステップS301へ進む。
【0117】
ステップS311において、台帳制御部301は、記憶部303に格納されている分散台帳を参照し、分散台帳に格納されているトランザクションデータからピア情報を読み出す。
【0118】
ステップS312において、台帳制御部301は、ステップS312で読み出したピア情報を、代理サーバ200に送信する。ピア情報を送信する際には、分散台帳を参照して読み出したピア情報のうち、接続に適したピアであることを示す所定の条件を満たすピア情報のみを送信してもよい。具体的には、台帳制御部301は、読み出したピア情報に示される1以上のピアのうち、要求元であるピア100Aとの物理的な距離が所定より近いピア、または、ピア100Aとの物理的な距離が所定範囲外であるピアを示すピア情報のみを提供してもよい。また、例えば、台帳制御部301は、上記1以上のピアのうち、接続しているピアの数が所定より多いピア、または、接続しているピアの数が所定範囲内であるピアを示す情報のみを提供してもよい。また、例えば、台帳制御部301は、上記1以上のピアのうち、P2Pシステム10への参加継続時間が所定より長いピア、または、P2Pシステム10への参加継続時間が所定範囲内であるピアを示すピア情報のみを提供してもよい。
【0119】
ステップS312の処理を終えたらステップS301へ進む。
【0120】
図9に示される一連の処理により、台帳サーバ300Aは、ピア情報を適切に分散台帳に格納して管理し、読出要求に応じて読み出すことができる。
【0121】
次に、システム1としての動作を説明する。具体的には、ピア情報の登録および更新のときにシステムが実行する処理と、新たにピアに接続するときにシステムが実行する処理とを説明する。
【0122】
(1.5 ピア情報の登録および更新のシーケンス)
図10は、本実施の形態におけるピア情報の登録および更新のときにシステム1が実行する処理を示すシーケンス図である。具体的には、
図10には、ピア情報の登録および更新のときにシステム1、つまり、ピア100A、代理サーバ200および台帳サーバ300A等が実行する処理が示されている。なお、既に説明したフロー図における処理と同じ処理には、既に説明したフロー図における符号と同じ符号を付し、詳細な説明を省略することがある。
【0123】
ピア100Aは、自装置つまりピア100Aのピア情報に署名を付与した書込要求データを生成して代理サーバ200に送信する(ステップS101~S103)。
【0124】
代理サーバ200は、ピア100Aから書込要求データを受信すると、受信した書込要求データに含まれているピア情報と署名とを含むトランザクションを生成して台帳サーバ300A等に送信する(ステップS203、S204)。トランザクションデータを送信する宛先は、台帳サーバ300A等のうちのどの台帳サーバでもよく、ここでは台帳サーバ300Aに送信した場合を例として説明する。
【0125】
台帳サーバ300Aは、上記トランザクションデータを受信し、受信したトランザクションを分散台帳305に格納する。台帳サーバ300Aは、分散台帳305に格納する際に、他の台帳サーバとの間でコンセンサスアルゴリズムを実行する。これにより、署名が付与されたピア情報が含まれたブロックが分散台帳305に格納される。その後、分散台帳305に格納されたピア情報は、改ざんが実質的に困難であり、安全に参照され得る状態で管理される。
【0126】
ピア100Aは、自装置つまりピア100Aのピア情報が更新されたか否かを判定し、更新された場合に、上記と同様の書込要求データを生成して代理サーバ200に送信する(ステップS104~S107)。
【0127】
代理サーバ200は、上記と同様に、受信した書込要求データに含まれているピア情報と署名とを含むトランザクションを生成して台帳サーバ300A等に送信する(ステップS203、S204)。
【0128】
台帳サーバ300Aは、上記と同様に、受信したトランザクションを分散台帳305に格納する。
【0129】
その後、ピア100Aは、ピア情報が更新されたと判定するたびに、ステップS104以降の処理が繰り返し実行される。
【0130】
(1.6 ピア接続のシーケンス)
図11は、本実施の形態における新たにピアに接続するときにシステム1が実行する処理を示すシーケンス図である。具体的には、
図11には、ピア100Aおよびピア100B、代理サーバ200および台帳サーバ300A等が実行する処理が示されている。
【0131】
ピア100Bは、代理サーバ200にピア情報の取得要求データを送信する(ステップS121)。
【0132】
代理サーバ200は、上記取得要求データを受信し、台帳サーバ300A等にピア情報の読出要求データを送信する。読出要求データの宛先は、台帳サーバ300A等のうちのどの台帳サーバでもよく、ここでは台帳サーバ300Aに送信した場合を例として説明する。
【0133】
台帳サーバ300Aは、上記読出要求データを受信し、分散台帳305に格納されているトランザクションデータを参照し、トランザクションデータに含まれているピア情報を読み出し、読み出したピア情報を代理サーバ200に送信する(ステップS312、S313)。代理サーバ200は、ピア情報を取得したら、取得したピア情報をピア100Bに送信する。
【0134】
ピア100Bは、代理サーバ200が送信したピア情報を受信し、受信したピア情報に示されるピアに基づいて、接続するピアを決定する。ここでは、ピア100Bが接続先をピア100Aと決定した場合を例として説明する。そして、ピア100Bは、接続先であるピア100AとP2P接続を実行する(ステップS122~S124)。
【0135】
その後、ピア100Bは、所定のプログラムを実行し、ピア100AとともにP2Pシステム10が提供する機能を発揮する(ステップS125)。
【0136】
なお、上記説明では、接続先のピアを決定する処理をピア100Bが実行するとしたが、当該処理は、台帳サーバ300Aが行ってもよい。その場合、台帳サーバ300Aは、スマートコントラクトによって当該処理を実行してもよい。このようにすれば、台帳サーバ300Aが分散台帳305からピア情報を読み出し、読み出した上記ピア情報に基づいて接続先のピアを決定する処理が、他の人または装置に関与されることなく安全に実行される利点がある。
【0137】
また、当該処理は、代理サーバ200が行ってもよい。このようにすれば、当該処理をピア100Bが実行する必要がないので、ピア100Bの処理負荷を軽減し、消費電力を低減できる利点がある。
【0138】
(1.7 実施の形態1の効果)
本実施の形態において、ピア100A等は、分散台帳305に保存されたピア情報をもとにP2P接続先のピアを決定することができる。ピア情報は、分散台帳305に保存されているので改ざんが困難である。そのため、本実施の形態のシステム1によれば、ピア情報の不正操作による攻撃を防ぐことにより、P2P接続に必要なピア情報を安全に管理し、提供することができる。
【0139】
(実施の形態2)
本実施の形態において、ピア情報を適切に管理するシステムに関して、実施の形態1におけるシステム1とは異なる形態について説明する。本実施の形態のシステム1Aは、実施の形態1におけるシステム1と同様にP2PシステムとP2P管理システムとを備えるが、代理サーバを備えない点で異なる。
【0140】
つまり、本実施の形態のシステム1Aにおいて、P2P管理システムは、P2Pシステムに直接に(言い換えれば、代理サーバを介さずに)、接続されている。
【0141】
(2.1 システムの全体構成)
図12は、本実施の形態におけるシステム1Aの全体の構成を示す模式図である。
【0142】
図12に示されるように、システム1Aは、P2Pシステム10Aと、P2P管理システム30とを備える。P2Pシステム10Aは、ピア100E、100Fおよび100Gを備える。なお、P2Pシステム10Aを構成するピアの数は、3に限られず、1以上いくつであってもよい。
【0143】
ピア100Eは、実施の形態1のピア100Aと同様に、P2Pシステム10Aを構成するP2Pピアの1つである。ピア100Eは、さらに、P2P管理システム30が保有している分散台帳にピア情報を登録し、また、上記分散台帳からピア情報を読み出す機能を有する。つまり、ピア100Eは、代理サーバを介することなく直接に、分散台帳にピア情報を書き込み、または、分散台帳からピア情報を読み出す機能を有する。
【0144】
P2P管理システム30は、実施の形態1におけるP2P管理システム30と同様である。
【0145】
(2.2 ピア100Eの構成)
図13は、本実施の形態におけるピア100Eの機能を示すブロック図である。なお、ピア100Fおよび100Gも、ピア100Eと同様の構成を有する。
【0146】
図13に示されるように、ピア100Eは、書込要求部101Aと、取得要求部102Aと、決定部103と、通信部104と、実行部105とを備える。ピア100Eが備える各機能部は、ピア100Eが備えるプロセッサ(例えば、CPU)が、メモリを用いて所定のプログラムを実行することで実現され得る。
【0147】
書込要求部101Aは、自装置つまりピア100Eのピア情報を分散台帳305に書き込む要求を行う機能部である。書込要求部101Aは、自装置つまりピア100Eと、P2Pシステム10Aに含まれる他のピアとのP2P接続のための情報であるピア情報を作成する。書込要求部101Aは、作成したピア情報に署名を付与することでトランザクションデータを生成して台帳サーバ300A等に送信する。送信したトランザクションデータは、台帳サーバ300A等の分散台帳305に格納される。
【0148】
取得要求部102Aは、分散台帳305からピア情報を取得する要求を行う機能部である。取得要求部102Aは、台帳サーバ300Aに対して、分散台帳305に記録されているピア情報の取得のための取得要求データを生成して送信する。そして、取得要求部102Aは、上記取得要求データに応じて台帳サーバ300Aが送信したピア情報を取得する。
【0149】
決定部103と、通信部104と、実行部105とについては実施の形態1におけるものと同じである。
【0150】
(2.3 実施の形態2の効果)
この構成により、ピア100E等は、代理サーバを介さずに直接に、分散台帳にピア情報を書き込み、または、分散台帳からピア情報を読み出すことができる。ピア100E等と台帳サーバとの間に他の装置が介在する必要がないので、台帳サーバは、P2Pシステムを単一障害点を除いた構成(言い換えれば、単一障害点がない構成)で管理することができる効果がある。よって、サーバは、比較的高い可用性を持つ構成によって、ピア情報を適切に管理することができる。
【0151】
(実施の形態3)
本実施の形態において、ピア情報を適切に管理するシステムに関して、実施の形態1または2におけるシステム1または1Aとは異なる形態について説明する。本実施の形態のシステム1Bは、実施の形態2のシステム1AにおけるP2PシステムとP2P管理システムとを備える。そして、上記P2Pシステムは、別のP2PシステムとしてのP2P管理システムで用いられるピア情報を管理するP2P管理システムとしての機能をも有する。
【0152】
(3.1 システムの全体構成)
図14は、本実施の形態におけるシステム1Bの全体の構成を示す模式図である。
【0153】
図14に示されるように、システム1Bは、システム40Aおよび40Bを備える。システム40Aは、P2PシステムAであり、また、P2PシステムD(つまりシステム40B)で用いられるピア情報を管理するP2P管理システムBでもある。システム40Bは、P2PシステムDであり、また、P2PシステムA(つまりシステム40A)で用いられるピア情報を管理するP2P管理システムCでもある。
【0154】
つまり、システム40Aとシステム40Bとは、それぞれ、P2Pシステムであると同時に、相互のP2P管理情報を管理するP2P管理システムでもある。
【0155】
システム40Aは、ピア400A、400Bおよび400Cを備える。なお、システム40Aを構成するピアの数は、3に限られず、1以上いくつであってもよい。システム40Bは、ピア400E、400Fおよび400Gを備える。なお、システム40Bを構成するピアの数は、3に限られず、1以上いくつであってもよい。
【0156】
ピア400Aは、実施の形態2のピア100Eと同様に、P2Pシステムであるシステム40Aを構成するP2Pピアの1つである。ピア400Aは、さらに、システム40Bが保有している分散台帳にピア情報を登録し、また、上記分散台帳からピア情報を読み出す機能を有する。
【0157】
ピア400Bおよび400Cは、それぞれ、ピア400Aと同じ機能を有するピアであり、ピア400Aとは独立に動作する。
【0158】
ピア400Eは、実施の形態2のピア100Eと同様に、P2Pシステムであるシステム40Bを構成するP2Pピアの1つである。ピア400Eは、さらに、システム40Aが保有している分散台帳にピア情報を登録し、また、上記分散台帳からピア情報を読み出す機能を有する。
【0159】
ピア400Fおよび400Gは、それぞれ、ピア400Eと同じ機能を有するピアであり、ピア400Eとは独立に動作する。
【0160】
(3.2 ピア400Aの構成)
図15は、本実施の形態におけるピア400Aの機能を示すブロック図である。なお、ピア400Bおよび400C、ならびに、ピア400E、400Fおよび400Gも、ピア400Aと同様の構成を有する。
【0161】
図15に示されるように、ピア400Aは、書込要求部101Aと、取得要求部102Aと、決定部103と、通信部104と、実行部105と、台帳制御部107と、記憶部108とを備える。ピア400Aが備える各機能部は、ピア400Aが備えるプロセッサ(例えば、CPU)が、メモリを用いて所定のプログラムを実行することで実現され得る。
【0162】
書込要求部101Aと、取得要求部102Aと、決定部103と、通信部104と、実行部105とは、実施の形態2におけるピア100Eにおけるものと同じである。
【0163】
また、台帳制御部107と記憶部108とは、それぞれ、実施の形態1における台帳サーバ300Aが備える台帳制御部301と記憶部303と同じである。記憶部108は、実施の形態1における分散台帳305と同様の分散台帳109を記憶している。
【0164】
ピア400Aは、上記の機能部を有することで、P2PシステムAを構成するピアの1つとして機能するとともに、P2P管理システムBを構成するピアの1つとして機能する。ピア400Bおよび400Cについても同様である。
【0165】
さらに、ピア400E、400Fおよび400Gは、ピア400Aと同様の構成を有することで、P2PシステムDを構成するピアの1つとして機能するとともに、P2P管理システムCを構成するピアの1つとして機能する。
【0166】
これにより、システム40Aとシステム40Bとは、それぞれ、P2Pシステムとして機能するとともに、相互のP2P管理情報を管理するP2P管理システムとして機能する。
【0167】
(3.3 実施の形態3の効果)
この構成により、ピア400A等を備えるシステム40Aと、ピア400E等を備えるシステム40Bとで、相互にピア情報を適切に管理し、ピア情報の信頼性を扶助しながら、別個のP2Pシステムとして機能することができる。
【0168】
(補足)
上記各実施の形態におけるブロックチェーンについて補足的に説明する。
【0169】
図16は、ブロックチェーンのデータ構造を示す説明図である。
【0170】
ブロックチェーンは、その記録単位であるブロックがチェーン(鎖)状に接続されたものである。それぞれのブロックは、複数のトランザクションデータと、直前のブロックのハッシュ値とを有している。具体的には、ブロックB2には、その前のブロックB1のハッシュ値が含まれている。そして、ブロックB2に含まれる複数のトランザクションデータと、ブロックB1のハッシュ値とから演算されたハッシュ値が、ブロックB2のハッシュ値として、ブロックB3に含められる。このように、前のブロックの内容をハッシュ値として含めながら、ブロックをチェーン状に接続することで、記録されたトランザクションデータの改ざんを有効に防止する。
【0171】
仮に過去のトランザクションデータが変更されると、ブロックのハッシュ値が変更前と異なる値になり、改ざんしたブロックを正しいものとみせかけるには、それ以降のブロックすべてを作り直さなければならず、この作業は現実的には非常に困難である。この性質を使用して、ブロックチェーンに改ざん困難性が担保されている。
【0172】
図17は、トランザクションデータのデータ構造を示す説明図である。
【0173】
図17に示されるトランザクションデータは、トランザクション本体P1と、電子署名P2とを含む。トランザクション本体P1は、当該トランザクションデータに含まれるデータ本体である。電子署名P2は、トランザクション本体P1のハッシュ値に対して、当該トランザクションデータの作成者の署名鍵で署名する、より具体的には、作成者の秘密鍵で暗号化することで生成されたものである。
【0174】
トランザクションデータは、電子署名P2を有するので、改ざんが実質的に不可能である。これにより、トランザクション本体の改ざんが防止される。
【0175】
(その他変形例)
なお、本発明を上記各実施の形態に基づいて説明してきたが、本発明は、上記各実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【0176】
(1)上記実施の形態1では、ピア100A等と代理サーバ200とは、それぞれ別の装置として説明したが、ピア100A等と代理サーバ200とを同一の装置としてもよい。上記のように同一の装置とする構成の一例が、実施の形態2の構成である。
【0177】
(2)上記実施の形態1では、ピア100A等と台帳サーバ300A等とを分けて表記したが、ピア100A自体が台帳サーバ300Aであってもよい。また、台帳サーバ300Aが用いている分散台帳とは別の分散台帳を用いてもよい。また、システムが相互に互いのピア情報を保存しあってもよい。システムが相互に互いのピア情報を保存しあう構成の一例が、実施の形態3の構成である。
【0178】
(3)上記実施の形態1では、代理サーバ200は、単一の代理サーバ200として表記したが、複数台の装置で構成されてもよい。
【0179】
(4)上記実施の形態1では、台帳サーバのピア情報読込処理は、記憶装置からの単純な読込処理としたが、スマートコントラクトなどを用いて任意の読込処理が実行されてもよい。例えば、ピア100Aが備える決定部103は、台帳サーバ300Aに備えられてもよく、その場合のP2Pピアの接続先ピアの決定は、取得したピア情報をそのまま用いてもよい。この場合、決定部103も分散台帳に保存されるので、よりセキュアなP2Pピア情報参照が可能になる利点がある。
【0180】
(5)ピア接続時の他のピア情報の取得範囲は、P2Pシステムに参加する全てのピア情報としてもよいし、任意の範囲としてもよい。任意の範囲での取得においては、P2Pシステムに接続している時間が長いものから順に取得する、といった条件を設けてもよい。また、再接続時など、既知のピア情報の最新状態の取得といった場合には、ピア情報を取得したいピアを指定してもよい。
【0181】
(6)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0182】
(7)上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0183】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されてもよい。
【0184】
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0185】
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0186】
(8)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0187】
(9)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0188】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0189】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0190】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0191】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0192】
(10)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【0193】
(11)接続先ピアが通信不能の場合、通信不能である旨を分散台帳に書き込んでもよい。その際、所定の数以上のピアが通信不能と判断した場合のみ、分散台帳に書き込んでもよい。
【0194】
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態のサーバなどを実現するソフトウェアは、次のようなプログラムである。
【0195】
すなわち、このプログラムは、コンピュータに、分散台帳を保有している複数のサーバを備えるP2P管理システムにおいて、当該複数のサーバのうちの一のサーバが実行する制御方法であって、P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを含むトランザクションデータを受信し、受信した前記トランザクションデータに含まれている前記署名を用いて、受信した前記トランザクションデータの検証をし、前記検証が成功した場合に、前記トランザクションデータを前記分散台帳に格納する制御方法を実行させるプログラムである。
【0196】
また、このプログラムは、コンピュータに、分散台帳を保有している複数のサーバを備えるP2P管理システムと、P2Pシステムとの間に介在する代理サーバの制御方法であって、前記P2Pシステムを構成する複数のピアのうちの第一ピアと他のピアとの接続に用いられるピア情報と、前記ピア情報に対して前記第一ピアにより付与された署名とを受信し、受信した前記ピア情報と前記署名とを含めたトランザクションデータを生成して、前記P2P管理システムを構成する複数のサーバに送信する制御方法を実行させるプログラムである。
【0197】
以上、一つまたは複数の態様に係る制御方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【産業上の利用可能性】
【0198】
本発明にかかるP2Pシステムのピア情報(P2P接続情報)を管理・共有するシステムは、P2Pシステムのピア情報を安全に管理・共有する機構を有し、あらゆるP2Pシステムのピア管理システムとして有用である。
【符号の説明】
【0199】
1、1A、1B、40A、40B システム
10、10A P2Pシステム
30 P2P管理システム
50 トランザクションデータ
51 ピア情報
52 署名
100A、100B、100C、100E、100F、100G、400A、400B、400C、400E、400F、400G ピア
101、101A 書込要求部
102、102A 取得要求部
103 決定部
104、203、302 通信部
105 実行部
108、303 記憶部
109、305 分散台帳
200 代理サーバ
201 要求代理部
202 台帳処理部
300A、300B、300C 台帳サーバ
301、107 台帳制御部
B1、B2、B3 ブロック
N ネットワーク
P1 トランザクション本体
P2 電子署名