IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7209518通信装置、通信方法、および通信プログラム
<>
  • 特許-通信装置、通信方法、および通信プログラム 図1
  • 特許-通信装置、通信方法、および通信プログラム 図2
  • 特許-通信装置、通信方法、および通信プログラム 図3
  • 特許-通信装置、通信方法、および通信プログラム 図4
  • 特許-通信装置、通信方法、および通信プログラム 図5
  • 特許-通信装置、通信方法、および通信プログラム 図6
  • 特許-通信装置、通信方法、および通信プログラム 図7
  • 特許-通信装置、通信方法、および通信プログラム 図8
  • 特許-通信装置、通信方法、および通信プログラム 図9
  • 特許-通信装置、通信方法、および通信プログラム 図10
  • 特許-通信装置、通信方法、および通信プログラム 図11
  • 特許-通信装置、通信方法、および通信プログラム 図12
  • 特許-通信装置、通信方法、および通信プログラム 図13
  • 特許-通信装置、通信方法、および通信プログラム 図14
  • 特許-通信装置、通信方法、および通信プログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-12
(45)【発行日】2023-01-20
(54)【発明の名称】通信装置、通信方法、および通信プログラム
(51)【国際特許分類】
   H04L 9/08 20060101AFI20230113BHJP
   H04L 9/32 20060101ALI20230113BHJP
   G09C 1/00 20060101ALI20230113BHJP
【FI】
H04L9/08 F
H04L9/32 200B
G09C1/00 640D
【請求項の数】 8
(21)【出願番号】P 2018226341
(22)【出願日】2018-12-03
(65)【公開番号】P2020092287
(43)【公開日】2020-06-11
【審査請求日】2021-08-10
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100133570
【弁理士】
【氏名又は名称】▲徳▼永 民雄
(72)【発明者】
【氏名】鈴木 大
【審査官】金沢 史明
(56)【参考文献】
【文献】米国特許出願公開第2018/0101560(US,A1)
【文献】中国特許出願公開第108108487(CN,A)
【文献】特開2018-109878(JP,A)
【文献】特開2018-117287(JP,A)
【文献】中国特許出願公開第107171829(CN,A)
【文献】米国特許出願公開第2012/0131350(US,A1)
【文献】国際公開第2018/043599(WO,A1)
【文献】国際公開第2018/088475(WO,A1)
【文献】特開2002-014613(JP,A)
【文献】中国特許出願公開第107360001(CN,A)
【文献】FROMKNECHT, Conner et al.,A Decentralized Public Key Infrastructure with Identity Retention,Cryptology ePrint Archive,International Association for Cryptologic Research (IACR),2014年11月11日,Report 2014/803, Ver. 20141111:124302,pp. 1-16,[2022年5月20日検索],インターネット,<URL:https://eprint.iacr.org/2014/803/20141111:124302>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G06F 21/00-21/88
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
通信システムを構成する複数のノードの中の1つにおいて使用される通信プログラムであって、
ユーザから前記ユーザのアカウント情報および前記ユーザの公開鍵を受信し、
前記アカウント情報の内容が正しいと判定されたときに、前記アカウント情報の内容が正しいことを表す登録可能メッセージおよび前記ユーザの公開鍵を前記複数のノードに送信し、
前記アカウント情報の内容が正しくないと判定されたときに、前記アカウント情報の内容が正しくないことを表す登録不可メッセージを前記複数のノードに送信し、
他のノードから受信する登録可能メッセージの数および登録不可メッセージの数の和が第1の所定数以上であり、且つ、前記登録可能メッセージの数が第2の所定数を超えたことを検出すると、前記通信システムへの参加が許可されたユーザの公開鍵を保存する公開鍵リストに前記ユーザの公開鍵を登録する
処理をプロセッサに実行させる通信プログラム。
【請求項2】
通信システムを構成する複数のノードの中の1つに設けられる通信装置であって、
ユーザから前記ユーザのアカウント情報および前記ユーザの公開鍵を受信し、
前記アカウント情報の内容が正しいと判定されたときに、前記アカウント情報の内容が正しいことを表す登録可能メッセージおよび前記ユーザの公開鍵を前記複数のノードに送信し、
前記アカウント情報の内容が正しくないと判定されたときに、前記アカウント情報の内容が正しくないことを表す登録不可メッセージを前記複数のノードに送信し、
他のノードから受信する登録可能メッセージの数および登録不可メッセージの数の和が第1の所定数以上であり、且つ、前記登録可能メッセージの数が第2の所定数を超えたことを検出すると、前記通信システムへの参加が許可されたユーザの公開鍵を保存する公開鍵リストに前記ユーザの公開鍵を登録する
プロセッサを備える通信装置。
【請求項3】
複数のノードを含む通信システムにおいて使用される通信方法であって、
前記複数のノードの中の2以上の認証ノードそれぞれにおいて、
ユーザから前記ユーザのアカウント情報および前記ユーザの公開鍵を受信し、
前記アカウント情報の内容が正しいと判定されたときに、前記アカウント情報の内容が正しいことを表す登録可能メッセージおよび前記ユーザの公開鍵を前記複数のノードに送信し、
前記アカウント情報の内容が正しくないと判定されたときに、前記アカウント情報の内容が正しくないことを表す登録不可メッセージを前記複数のノードに送信し、
各ノードは、
他のノードから受信する登録可能メッセージの数および登録不可メッセージの数の和が第1の所定数以上であり、且つ、前記登録可能メッセージの数が第2の所定数を超えたことを検出すると、前記通信システムへの参加が許可されたユーザの公開鍵を保存する公開鍵リストに前記ユーザの公開鍵を登録する
ことを特徴とする通信方法。
【請求項4】
各認証ノードは、
前記アカウント情報の内容が正しいと判定されたときに、前記ユーザの公開鍵に対して自分の秘密鍵で電子署名を生成し、
前記アカウント情報の内容が正しいことを表すメッセージ、前記ユーザの公開鍵、および前記電子署名を前記複数のノードに送信する
ことを特徴とする請求項3に記載の通信方法。
【請求項5】
各認証ノードは、
前記アカウント情報の内容が正しいと判定されたときに、前記アカウント情報および前記ユーザの公開鍵に対して自分の秘密鍵で電子署名を生成し、
前記アカウント情報の内容が正しいことを表すメッセージ、前記アカウント情報、前記ユーザの公開鍵、および前記電子署名を前記複数のノードに送信する
ことを特徴とする請求項3に記載の通信方法。
【請求項6】
前記認証ノード以外の各ノードは、
前記電子署名の送信元ノードの公開鍵で前記電子署名を検証し、
前記ユーザの公開鍵が改ざんされていないことを確認した後に、前記ユーザの公開鍵を前記公開鍵リストに登録する
ことを特徴とする請求項4または5に記載の通信方法。
【請求項7】
各ノードは、
前記ユーザの秘密鍵を使用して作成された電子署名を前記ユーザから受信したとき、前記公開鍵リストに登録されている前記ユーザの公開鍵を用いて前記電子署名を検証し、
前記電子署名に問題がなければ前記ユーザを認証する
ことを特徴とする請求項3~6のいずれか1つに記載の通信方法。
【請求項8】
複数のノードを含む通信システムにおいて使用される通信方法であって、
各ノードにおいて、
ユーザから前記ユーザのアカウント情報および前記ユーザの公開鍵を受信し、
前記アカウント情報の内容が正しいと判定されたときに、前記アカウント情報の内容が正しいことを表す登録可能メッセージを他のすべてのノードに送信し、
前記アカウント情報の内容が正しくないと判定されたときに、前記アカウント情報の内容が正しくないことを表す登録不可メッセージを他のすべてのノードに送信し、
他のノードから受信する登録可能メッセージの数および登録不可メッセージの数の和が第1の所定数以上であり、且つ、前記登録可能メッセージの数が第2の所定数を超えたことを検出すると、前記通信システムへの参加が許可されたユーザの公開鍵を保存する公開鍵リストに前記ユーザの公開鍵を登録する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信方法、および通信プログラムに係わる。
【背景技術】
【0002】
近年、仮想通貨を実現するための基盤としてブロックチェーン技術が注目されている。また、ブロックチェーン技術は、仮想通貨以外の分野への適用が検討されている。たとえば、企業間または組織間で情報を共有するためにブロックチェーンを利用するケースが注目されている。
【0003】
ブロックチェーン技術を利用するサービスの1つとして、限定されたユーザが参加するデータ流通市場が知られている。データ流通市場の参加者は、自分が保有するデータを市場に提供することができる。また、参加者は、市場に提供されているデータを取得または購入することができる。なお、限定されたユーザが参加するシステムにブロックチェーン技術を適用する形態は、コンソーシアム型ブロックチェーンと呼ばれることがある。
【0004】
コンソーシアム型ブロックチェーンシステムにおいては、認証局として動作する参加ノードがユーザを認証する。このとき、認証局は、例えば、電子証明書を用いてユーザを認証する。
【0005】
例えば、システムへの参加を希望する新規ユーザは、認証局にアカウント情報を送信する。アカウント情報は、ユーザが所属する企業の名称、連絡先情報(住所、電話番号、Eメールアドレス等)を含む。そうすると、認証局は、アカウント情報の内容が正しいか否かを確認する。このとき、認証局は、例えば、下記の確認作業を行う。
(1)第3者のデータベースを参照し、その企業が実際に存在するか否かを確認する。
(2)その企業の代表番号に電話をかけて、アカウント情報の申請内容を確認する。
(3)その企業に郵便を送り、返送してもらう。
そして、アカウント情報の内容が正しければ、認証局は、電子証明書を発行する。
【0006】
なお、分散ファイル共有システムにおいて、ブロックチェーンアプリがユーザ/グループ認証、コンテンツの一意性の保証などを実行する方法が提案されている(例えば、特許文献1)。また、簡易かつ迅速に電子認証を行う技術が提案されている(例えば、特許文献2)。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2018-081464号公報
【文献】WO2018/088475
【発明の概要】
【発明が解決しようとする課題】
【0008】
インターネットの世界では、認証局を運営する事業者は、一度でも信用を失うと、それ以降は事業の継続が困難になる。よって、このような認証局は、可能な限り厳密にユーザの検証を行う。これに対して、限られたユーザが参加するコンソーシアム型のシステムでは、認証局が不正を行いやすいことがある。例えば、悪意のある参加ノードが認証局として電子証明書を発行するおそれがある。
【0009】
複数の参加ノードの中の1つまたは少数の参加ノードが認証局として動作する場合、その参加ノードの負荷が重くなる。たとえば、上述のようなアカウント情報を確認する作業は、認証局として動作する参加ノードの管理者にとって大きな負担である。
【0010】
本発明の1つの側面に係わる目的は、システムに参加する複数のノードでユーザを認証する方法または構成を提供することである。
【課題を解決するための手段】
【0011】
本発明の1つの態様の通信方法は、複数のノードを含む通信システムにおいて使用される。前記複数のノードの中の2以上の認証ノードそれぞれにおいて、ユーザから前記ユーザのアカウント情報および前記ユーザの公開鍵を受信し、前記アカウント情報が正しいと判定されたときに、前記アカウント情報が正しいことを表すメッセージおよび前記ユーザの公開鍵を前記複数のノードに送信する。各ノードは、他のノードから受信するメッセージに基づいて所定数以上の認証ノードにおいて前記アカウント情報が正しいと判定されたことを検出すると、前記通信システムへの参加が許可されたユーザの公開鍵を保存する公開鍵リストに前記ユーザの公開鍵を登録する。
【発明の効果】
【0012】
上述の態様によれば、システムに参加する複数のノードでユーザを認証するので、不正なユーザ認証が抑制される。
【図面の簡単な説明】
【0013】
図1】本発明の実施形態に係わる通信システムの一例を示す図である。
図2】ユーザ登録手順の一例を示す図(その1)である。
図3】ユーザ登録手順の一例を示す図(その2)である。
図4】ユーザ登録手順の一例を示す図(その3)である。
図5】ユーザ認証手順の一例を示す図である。
図6】ユーザ登録およびユーザ認証のシーケンスの一例を示す図である。
図7】1つの認証局により管理されるユーザ登録およびユーザ認証のシーケンスの一例を示す図である。
図8】ユーザ登録からトランザクションの実行までのシーケンスの一例を示す図である。
図9】ユーザ認証が失敗するケースのシーケンスの一例を示す図である。
図10】ユーザ登録処理の一例を示すフローチャートである。
図11】ユーザ認証処理の一例を示すフローチャートである。
図12】各ノードに実装されるコンピュータのハードウェア構成の一例を示す図である。
図13】他の実施形態に係わるユーザ登録手順の一例を示す図(その1)である。
図14】他の実施形態に係わるユーザ登録手順の一例を示す図(その2)である。
図15】認証ノードとして動作しないピアにおけるユーザ登録処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
図1は、本発明の実施形態に係わる通信システムの一例を示す。この実施例では、通信システム100は、複数のノードを含む。各ノードには、それぞれ通信装置が設けられている。また、通信システム100は、たとえば、データ流通サービスを提供する。この場合、各ノードには、データ流通サービスに参加するユーザの通信装置が設けられる。
【0015】
各通信装置は、他の任意の通信装置と通信することができる。したがって、以下の記載では、各ノードに設けられる通信装置を「ピア(Peer)」と呼ぶことがある。なお、図1に示す例では、通信システム100は、ピアA、ピアB、ピアCを含む。ピアAは、ユーザAにより使用される通信装置であり、ピアBは、ユーザBにより使用される通信装置であり、ピアCは、ユーザCにより使用される通信装置である。
【0016】
各ピアA~Cは、暗号通信を行うために、秘密鍵および公開鍵のペアを生成する。ここで、暗号通信においては、例えば、秘密鍵で暗号化されたデータは、対応する公開鍵で復号される。或いは、公開鍵で暗号化されたデータは、対応する秘密鍵で復号される。したがって、各ピアA~Cは、予め他のユーザの公開鍵を取得しているものとする。なお、各ピアA~Cは、自分の秘密鍵を保持している。
【0017】
各ピアA~Cは、図1に示すように、公開鍵リストを備える。公開鍵リストには、通信システム100への参加が許可されたユーザの公開鍵が登録される。よって、ピアAの公開鍵リストには、ユーザBの公開鍵PBbおよびユーザCの公開鍵PBcが登録されている。ピアBの公開鍵リストには、ユーザAの公開鍵PBaおよびユーザCの公開鍵PBcが登録されている。ピアCの公開鍵リストには、ユーザAの公開鍵PBaおよびユーザBの公開鍵PBbが登録されている。なお、図1に示す例では、各ピアの公開鍵リストには自分の公開鍵も登録されている。
【0018】
通信システム100は、例えば、ブロックチェーンによりサポートされるデータ流通サービスを提供する。この場合、各ユーザまたは各ピアが要求するトランザクションは、通信システム100内で合意が形成された後に実行される。
【0019】
ユーザXは、通信システム100が提供するサービスへの参加を要求する。通信システム100は、ユーザXの登録手続を実行する。
【0020】
図2図4は、ユーザ登録手順の一例を示す。この実施例では、ユーザXが通信システム100への参加を要求する。なお、「ユーザX」は、ユーザXにより使用される通信装置を表す。
【0021】
ユーザXは、通信システム100に参加している各ピアと暗号通信を行うために、秘密鍵および公開鍵のペアを生成する。そして、ユーザXは、生成した秘密鍵および公開鍵のペアを保持する。
【0022】
続いて、ユーザXは、図2に示すように、通信システム100に既に参加している各ピアに登録申請情報を送信する。即ち、ユーザXから各ピアA~Cに登録申請情報が送信される。登録申請情報は、ユーザXのアカウント情報およびユーザXの公開鍵を含む。このアカウント情報は、例えば、ユーザXが所属する企業の名称、ユーザXの連絡先情報(住所、電話番号、Eメールアドレス等)を含む。
【0023】
各ピアA~Cは、新規ユーザ(すなわち、ユーザX)から登録申請情報を受信すると、認証局(または、認証ノード)として動作する。具体的には、各ピアA~Cは、受信した登録申請情報に含まれるアカウント情報が正しいか否かを確認する。すなわち、各ピアA~Cは、アカウント情報に基づいて、ユーザXが正規のユーザであるか否かを判定する。以下の記載では、この確認作業を「実在確認」と呼ぶことがある。
【0024】
実在確認は、例えば、各ピアA~Cのユーザ(または、管理者)により実施される。この場合、実在確認は、例えば、下記の作業のうちの1つ以上を含む。
(1)第3者のデータベースを参照し、アカウント情報に記載されている企業が実際に存在するか否かを確認する。
(2)アカウント情報に記載されている企業の代表番号に電話をかけ、アカウント情報の記載内容を確認する。
(3)アカウント情報に記載されている企業に郵便を送り、返送してもらう。
【0025】
各ピアA~Cは、図3に示すように、実在確認の結果(以下、検証結果)を他のすべてのピアに通知する。すなわち、各ピアA~Cは、アカウント情報が正しいか否かを表すメッセージを他のすべてのピアに送信する。例えば、ピアAによる検証結果はピアB、Cに送信され、ピアBによる検証結果はピアA、Cに送信され、ピアCによる検証結果はピアA、Bに送信される。検証結果は、ユーザXのアカウント情報が正しいか否かを表す。
【0026】
また、各ピアA~Cは、自分が行った実在確認においてユーザXのアカウント情報が正しいことが確認されたときには、検証結果と共に、ユーザXの公開鍵を他のピアに送信する。このとき、各ピアA~Cは、ユーザXの公開鍵に電子署名を添付する。例えば、ピアAは、ピアAの秘密鍵を用いて電子署名を作成する。具体的には、ピアAは、例えば、ユーザXの公開鍵のハッシュ値を計算し、ピアAの秘密鍵でこのハッシュ値を暗号化することにより電子署名を作成する。そして、ピアAは、この電子署名が添付されたユーザXの公開鍵をピアB、Cに送信する。同様に、ピアBは、ピアBの秘密鍵を用いて作成した電子署名をユーザXの公開鍵に添付してピアA、Cに送信する。ピアCは、ピアCの秘密鍵を用いて作成した電子署名をユーザXの公開鍵に添付してピアA、Bに送信する。
【0027】
なお、各ピアA~Cは、自分が行った実在確認においてユーザXのアカウント情報が正しくないことが確認されたときには、ユーザXの公開鍵の送信を行わない。この場合、アカウント情報が正しくないことを表す検証結果のみが送信される。
【0028】
各ピアA~Cは、自分自身による検証結果および他のピアから受信する検証結果に基づいて、ユーザXを通信システム100に参加させるか否かについて合意形成を行う。例えば、ピアAは、ピアA自身による検証結果、ピアBから受信した検証結果、およびピアCから受信した検証結果に基づいて、ユーザXを通信システム100に参加させるか否かを判定する。
【0029】
合意形成は、通信システム100において事前に決められている合意ポリシに従う。合意ポリシの例を下記に記載する。
(1)所定数以上のピアによりアカウント情報が正しいと判定されたときに、そのアカウント情報が正しいと判定する。
(2)合意形成に係わるピアの総数に対して所定の割合以上のピアによりアカウント情報が正しいと判定されたときに、そのアカウント情報が正しいと判定する(例えば、多数決による判定)。
(3)合意形成に係わる全ピアによりアカウント情報が正しいと判定されたときに、そのアカウント情報が正しいと判定する。
【0030】
なお、合意ポリシ1、2において、ピアの数は、自分自身を含むものとする。また、合意ポリシ2において、「合意形成に係わるピアの総数」は既知なので、所定の割合は、アカウント情報が正しいを判定したピアの数に一意に対応する。よって、合意ポリシ2は、実質的には、合意ポリシ1の一例である。また、合意ポリシ3において、合意形成に係わる全ピアの数を合意ポリシ1の「所定数」と考えると、合意ポリシ3も、実質的には、合意ポリシ1の一例である。
【0031】
以下の記載では、各ピアA~CにおいてユーザXのアカウント情報が正しいと判定されたものとする。また、各ピアA~Cにおいて合意ポリシ1が使用される。ここで、合意ポリシ1において、所定数は「2」であるものとする。
【0032】
ピアAは、図4に示すように、ユーザXが通信システム100に参加することについて合意が形成されたか否かを判定する。この実施例では、すべてのピアA~CにおいてユーザXのアカウント情報が正しいと判定されている。すなわち、3個のピアによりユーザXのアカウント情報が正しいと判定されている。したがって、ピアAは、合意ポリシ1に従い、ユーザXが通信システム100に参加することを許可する。そして、ピアAは、自分の公開鍵リストにユーザXの公開鍵PKxを登録する。同様に、ピアB、Cも、それぞれ自分の公開鍵リストにユーザXの公開鍵PKxを登録する。
【0033】
なお、ユーザ登録の信頼性を高めるためには、各ピアA~Cは、ユーザXの公開鍵が改ざんされていないことを検証してもよい。例えば、図3に示すように、ピアAは、ピアBの電子署名が添付されたユーザXの公開鍵PKxをピアBから受信している。ここで、この電子署名は、公開鍵PKxのハッシュ値をピアBの秘密鍵で暗号化することで生成されている。よって、ピアAは、ピアBの電子署名をピアBの公開鍵で復号することで、ピアBから受信した公開鍵PBxが改ざんされていないことを確認できる。同様に、ピアAは、ピアCの電子署名をピアCの公開鍵で復号することにより、ピアCから受信した公開鍵PBxが改ざんされていないことを確認できる。そして、ピアAは、ユーザXから受信した公開鍵PBx、ピアBから受信した公開鍵PBx、ピアCから受信した公開鍵PBxがすべて一致したときに、自分の公開鍵リストに公開鍵PKxを登録する。ピアB、Cも同様の手順で自分の公開鍵リストに公開鍵PKxを登録する。
【0034】
このように、本発明の実施形態に係わる通信方法においては、複数のピアの合意に基づいて新規ユーザの登録が許可される。したがって、新規ユーザ登録に係わる不正が抑制される。
【0035】
図5は、ユーザ認証手順の一例を示す。なお、この実施例では、図2図4に示すユーザ登録手順は完了しているものとする。すなわち、各ピアA~Cの公開鍵リストには、ユーザXの公開鍵PBxが登録されている。
【0036】
ユーザXは、通信システム100を使用する通信を行うときは、通信システム100の各ピア(すなわち、ピアA~C)にユーザXを認証してもらう必要がある。したがって、ユーザXは、ユーザXのID情報およびユーザXの電子署名を各ピアA~Cに送信する。なお、電子署名は、例えば、擬似乱数および暗号化擬似乱数を含む。この場合、擬似乱数は、ユーザXにより生成される。また、この擬似乱数のハッシュ値をユーザXの秘密鍵で暗号化することで、暗号化擬似乱数が生成される。
【0037】
各ピアA~Cは、ユーザXから受信する電子署名を検証する。例えば、ピアAは、電子署名と共に受信するID情報に基づいて、その電子署名の送信元がユーザXであると判定する。続いて、ピアAは、自分の公開鍵リストからユーザXの公開鍵PBxを取得する。そして、ピアAは、電子署名に含まれる暗号化擬似乱数をユーザXの公開鍵PBxで復号することにより、ユーザXを認証する。具体的には、電子署名に含まれる擬似乱数のハッシュ値と、電子署名に含まれる暗号化擬似乱数をユーザXの公開鍵PBxで復号した結果とが一致すれば、ユーザXが正規の参加者であると判定される。ピアB、Cも、同様の手順でユーザXを認証する。
【0038】
図6は、ユーザ登録およびユーザ認証のシーケンスの一例を示す。なお、通信システム100は、図1に示すように、ピアA~Cを備えるものとする。
【0039】
S1において、ユーザXは、ピアA~Cに登録申請情報を送信する。登録申請情報は、上述したように、ユーザXのアカウント情報およびユーザXの公開鍵を含む。
【0040】
S2において、各ピアA~Cは、ユーザXの実在確認を行う。すなわち、各ピアA~Cは、ユーザXから受信したアカウント情報が正しいか否かを確認する。
【0041】
S3において、各ピアA~Cは、実在確認の結果を表すメッセージを他のピアに送信する。このとき、各ピアA~Cは、メッセージと共に、ユーザXの公開鍵に自分の電子署名を添付して他のピアに送信してもよい。
【0042】
S4において、各ピアA~Cは、事前に決められている合意ポリシに従って、ユーザXのアカウント情報が正しいか否かを判定する。そして、通信システム100にユーザXが参加することについて合意が形成されると、各ピアA~Cは、自分の公開鍵リストにユーザXの公開鍵PBxを登録する。これにより、通信システム100(すなわち、各ピアA~C)へのユーザ登録が完了する。
【0043】
S11において、ユーザXは、ユーザXの秘密鍵を使用して電子署名を作成する。そして、ユーザXは、作成した電子署名をピアA~Cに送信する。
【0044】
S12において、各ピアA~Cは、ユーザXから受信する電子署名を検証することにより、ユーザXのID確認を実行する。このとき、各ピアA~Cは、ユーザ登録において取得したユーザXの公開鍵PBxを用いて電子署名を検証する。これにより、各ピアA~Cによるユーザ認証が完了する。
【0045】
図7は、1つの認証局により管理されるユーザ登録およびユーザ認証のシーケンスの一例を示す。このケースでは、ユーザXは、認証局CAに登録申請情報を送信する。この登録申請情報は、ユーザXのアカウント情報を含むが、ユーザXの公開鍵を含まなくてもよい。そして、認証局CAは、ユーザXの実在確認を行った後、ユーザ証明書を発行してユーザXに送信する。このように、1つの認証局によりユーザ登録が管理されるシステムでは、認証局CAが不正にユーザ登録を行うことが可能である。なお、本発明の実施形態においては、図6に示すように、複数のピアの合意に基づいてユーザ登録が行われるので、不正なユーザ登録は困難である。
【0046】
図7において、ユーザ認証時には、ユーザXは、認証局CAにより発行されたユーザ証明書をピアA~Cに送信する。そうすると、各ピアA~Cは、そのユーザ証明書の検証を認証局CAに依頼する。このように、1つの認証局によりユーザ登録が管理されるシステムでは、認証局CAの負荷が大きい。
【0047】
図8は、ユーザ登録から処理の実行までのシーケンスの一例を示す。なお、ユーザ登録手続は、図6および図8において実質的に同じなので、説明を省略する。
【0048】
S11において、ユーザXは、電子署名およびトランザクション(Tx)をピアA~Cに送信する。トランザクションは、実行すべき通信処理の内容を表す。
【0049】
S12において、各ピアA~Cは、ユーザXから受信する電子署名を検証する。この実施例では、ユーザXは、S1~S4において、正規のユーザとして各ピアA~Cに登録されている。すなわち、各ピアA~Cにおいて、ユーザXの認証が成功する。そうすると、各ピアA~Cは、S13において、ユーザXから受信したトランザクションを実行する。この後、トランザクションの実行結果についての合意が形成されると、S14において、トランザクションの実行結果が確定する。
【0050】
図9は、ユーザ認証が失敗するケースのシーケンスの一例を示す。この実施例では、ピアAが不正な認証ノードとして動作するものとする。また、ユーザXは、ピアAと連携して通信システム100への参加を試みるものとする。
【0051】
S1において、ユーザXは、ピアA~Cに登録申請情報を送信する。ただし、このアカウント情報は、正しくない情報を含んでいるものとする。
【0052】
S2~S3において、各ピアA~Cは、ユーザXの実在確認を行う。ここで、アカウント情報は正しくない情報を含んでいるので、ピアB、Cにおいて、実在確認は失敗する。したがって、ピアB、Cは、アカウント情報が正しくないことを表すメッセージをそれぞれ他のピアに送信する。一方、ピアAは、アカウント情報が正しくないにもかかわらず、アカウント情報が正しいことを表すメッセージをピアB、Cに送信する。
【0053】
S4において、各ピアA~Cは、合意ポリシに従って、ユーザXを登録するか否かを判定する。ここで、アカウント情報が正しいことを表す検証結果は1つだけである。したがって、ピアB、Cは、ユーザXを登録しない。一方、ピアAは、検証結果が合意ポリシを満足しないにもかかわらず、ユーザXを不正に登録するものとする。
【0054】
S11において、ユーザXは、電子署名およびトランザクション(Tx)をピアA~Cに送信する。S12において、各ピアA~Cは、ユーザXから受信する電子署名を検証する。ピアAにおいては、ユーザXが登録されている。したがって、S13において、ピアAは、ユーザXから受信したトランザクションを実行する。これに対して、ピアB、Cにおいては、ユーザXは登録されていない。したがって、ピアB、Cは、ユーザXから受信したトランザクションを実行しない。
【0055】
このように、ユーザXのトランザクションは、ピアAにより実行されるが、他のピアによっては実行されない。そうすると、トランザクションの実行結果についての合意が形成されず、トランザクションの実行結果は確定しない。したがって、不正なユーザによるトランザクションの実行が回避される。
【0056】
図10は、各ピアにおいて実行されるユーザ登録処理の一例を示すフローチャートである。このフローチャートの処理は、図2図4に示す例では、ピアA~Cによりそれぞれ実行される。以下の記載では、各ノードに設けられる通信装置がユーザ登録処理を実行するものとする。
【0057】
S21において、通信装置は、新規ユーザからの登録申請を待ち受ける。そして、登録申請を受信すると、S22~S23において、新規ユーザのアカウント情報が正しいか否かの検証が行われる。なお、S22~S23の処理は、例えば、人手により行われる。この場合、この検証結果は、通信装置に与えられる。
【0058】
アカウント情報が正しいときは、S24において、通信装置は、登録許可を表すメッセージを他のノードに送信する。このとき、通信装置は、このメッセージと共に、新規ユーザの公開鍵に電子署名を添付して他の通信装置に送信してもよい。一方、アカウント情報が正しくないときは、S25において、通信装置は、登録不可を表すメッセージを他のノードに送信する。なお、S24~S25において送信されるメッセージは、図3に示す検証結果に相当する。この後、通信装置は、S26において、他の通信装置から送信されるメッセージを待ち受ける。
【0059】
通信装置は、所定数以上のメッセージを受信すると、S27において、新規ユーザを登録するか否かを判定する。所定数は、新規ユーザを登録するか否かを判定するために十分な数を表す。また、新規ユーザを登録するか否かは、予め決められた合意ポリシに従う。そして、新規ユーザを登録する場合には、通信装置は、S28において、自分の公開鍵リストに新規ユーザの公開鍵を登録する。
【0060】
図11は、各ピアにおいて実行されるユーザ認証処理の一例を示すフローチャートである。以下の記載では、ユーザXが各通信装置に電子署名およびトランザクションを送信するものとする。
【0061】
S31において、通信装置は、ユーザXから電子署名およびトランザクションを受信する。S32において、通信装置は、電子署名の送信元(すなわち、ユーザX)の公開鍵が自分の公開鍵リストに登録されているか判定する。
【0062】
ユーザXの公開鍵が公開鍵リストに登録されているときは、通信装置は、S33~S34において、受信した電子署名をユーザXの公開鍵で検証する。そして、電子署名の検証が成功したときは、通信装置は、S35において、ユーザXから受信したトランザクションを実行する。なお、ユーザXの公開鍵が公開鍵リストに登録されていないとき、又は、電子署名の検証が失敗したときは、通信装置は、ユーザXから受信したトランザクションを実行しない。
【0063】
図12は、各ノードに実装されるコンピュータのハードウェア構成の一例を示す。このコンピュータ300は、プロセッサ301、メモリ302、記憶装置303、I/Oデバイス304、記録媒体デバイス305、通信インタフェース306を備える。なお、各ピアは、図12に示すコンピュータにより実現され得る。
【0064】
プロセッサ301は、記憶装置303に格納されている通信プログラムを実行することにより、ユーザ登録およびユーザ認証を実現することができる。なお、ユーザ登録においては、プロセッサ301は、図10に示すフローチャートの処理を記述した通信プログラムを実行する。ユーザ認証においては、プロセッサ301は、図11に示すフローチャートの処理を記述した通信プログラムを実行する。
【0065】
メモリ302は、例えば半導体メモリであり、プロセッサ301の作業領域として使用される。記憶装置303は、コンピュータ300内に実装されていてもよいし、コンピュータ300に接続されていてもよい。公開鍵リストは、メモリ302または記憶領域303に保存される。I/Oデバイス304は、ユーザまたはネットワーク管理者の指示を受け付ける。また、I/Oデバイス304は、プロセッサ301による処理結果を出力してもよい。記録媒体デバイス305は、可搬型記録媒体307に記録されている信号を読み取る。なお、上述の通信プログラムは、可搬型記録媒体307に記録されていてもよい。通信インタフェース306は、ネットワークとの間のインタフェースを提供する。
【0066】
なお、説明の簡素化のため図示していないが、ユーザXが通信システム100への参加が認められた場合には、ユーザA~CおよびユーザXの公開鍵がユーザXのノード(ピア)の公開鍵リストに登録される。また、ユーザXは、ピアA~Cを利用するユーザが通信を行う際の認証局の一つとして機能してもよい。
【0067】
<他の実施形態>
図13図14は、本発明の他の実施形態に係わるユーザ登録手順の一例を示す。この実施例では、通信システム200は、ピアA~Eを備える。そして、図2図4に示す例と同様に、ユーザXが通信システム200への参加を要求する。
【0068】
図2図4に示す例では、通信システム100に参加するすべてのピアが認証ノードとして動作する。これに対して、図13図14に示す実施形態では、通信システム200に参加するピアの一部が認証ノードとして動作する。ここでは、ピアA~Eのうち、ピアA~Cが認証ノードとして動作する。
【0069】
ユーザXは、図13に示すように、認証ノードとして動作するピアA~Cに登録申請情報を送信する。すなわち、ユーザXから各ピアA~Cに登録申請情報が送信される。
【0070】
各ピアA~Cは、新規ユーザ(すなわち、ユーザX)から登録申請情報を受信すると、認証ノードとして動作する。すなわち、各ピアA~Cは、実在確認を実行する。具体的には、各ピアA~Cは、受信した登録申請情報に含まれるアカウント情報が正しいか否かを確認する。そして、この実施例では、ピアA、Bにおいて、それぞれユーザXのアカウント情報が正しいと判定され、ピアCにおいて、ユーザXのアカウント情報が正しくないと判定されるものとする。
【0071】
各ピアA~Cは、ユーザXのアカウント情報の検証結果を表すメッセージを全ノードに送信する。検証結果は、上述したように、ユーザXのアカウント情報が正しいか否かを表す。なお、以下の記載においては、アカウント情報が正しいときに送信される検証結果を「登録OKメッセージ」と呼び、アカウント情報が正しくないときに送信される検証結果を「登録NGメッセージ」と呼ぶことがある。
【0072】
ピアAは、登録OKメッセージをピアB、C、D、Eに送信する。ピアBは、登録OKメッセージをピアA、C、D、Eに送信する。ピアCは、登録NGメッセージをピアA、B、D、Eに送信する。なお、図14において、実線矢印は、登録OKメッセージの伝送を表す。破線矢印は、登録NGメッセージの伝送を表す。
【0073】
また、各ピアA~Cは、自ノードにおいてユーザXのアカウント情報が正しいと判定されたときは、登録OKメッセージと共に、ユーザXの登録申請情報(即ち、ユーザXのアカウント情報およびユーザXの公開鍵)を全ノードに送信する。図14に示す例では、ピアA、Bは、登録OKメッセージと共に、ユーザXの登録申請情報を全ノードに送信している。
【0074】
このとき、登録申請情報には、電子署名が添付される。例えば、ピアAは、登録申請情報に対してハッシュ値を計算し、このハッシュ値をピアAの秘密鍵で暗号化することで電子署名を作成する。そして、ピアAは、登録申請情報に電子署名を添付して全ノードに送信する。同様に、ピアBは、登録申請情報にピアBの秘密鍵を使用して作成した電子署名を添付して全ノードに送信する。
【0075】
各ピアA~Eは、図2図4に示す実施例と同様に、事前に決定されている合意ポリシに従って、通信システム200にユーザXが参加することを許可するか否かを判定する。この実施例では、「2以上のピアにおいてユーザXのアカウント情報が正しいと判定されたときは、通信システム200にユーザXが参加することを許可する」という合意ポリシが使用されるものとする。
【0076】
ピアAにおいては、ユーザXのアカウント情報が正しいと判定されている。また、ピアAは、ピアBから登録OKメッセージを受信している。すなわち、2つのピアにおいてユーザXのアカウント情報が正しいと判定されている。よって、ピアAは、通信システム200にユーザXが参加することを許可し、自分の公開鍵リストにユーザXの公開鍵を登録する。
【0077】
ピアBにおいては、ユーザXのアカウント情報が正しいと判定されている。また、ピアBは、ピアAから登録OKメッセージを受信している。すなわち、2つのピアにおいてユーザXのアカウント情報が正しいと判定されている。よって、ピアBも、通信システム200にユーザXが参加することを許可し、自分の公開鍵リストにユーザXの公開鍵を登録する。
【0078】
ピアCにおいては、ユーザXのアカウント情報が正しくないと判定されている。ところが、ピアCは、ピアAおよびピアBから登録OKメッセージを受信している。すなわち、2つのピアにおいてユーザXのアカウント情報が正しいと判定されている。よって、ピアCも、通信システム200にユーザXが参加することを許可し、自分の公開鍵リストにユーザXの公開鍵を登録する。
【0079】
ピアD、Eは、ピアAおよびピアBから登録OKメッセージを受信している。よって、ピアD、Eは、通信システム200にユーザXが参加することを許可する。この場合、ピアD、Eは、ピアAまたはピアBから受信した登録申請情報を確認する。
【0080】
例えば、ピアDは、ピアAから受信した登録申請情報を確認するものとする。ここで、ピアAから受信した登録申請情報には、ピアAの電子署名が添付されている。ピアAの電子署名は、登録申請情報のハッシュ値をピアAの秘密鍵で暗号化することで作成されている。したがって、ピアDは、受信した登録申請情報のハッシュ値を計算する。また、ピアDは、受信した電子署名をピアAの公開鍵を復号する。そして、登録申請情報のハッシュ値と電子署名の復号結果とが一致すれば、ピアDは、ピアAから受信した登録申請情報が改ざんされていないと判定する。
【0081】
ピアD、Eは、ユーザXの登録申請情報が改ざんされないことを確認すると、その登録申請情報に含まれているユーザXの公開鍵を、自分の公開鍵リストに登録する。これにより、ピアD、Eの公開鍵リストにそれぞれユーザXの公開鍵が登録される。
【0082】
なお、図13図14に示す例では、ピアCは、ユーザXのアカウント情報は正しくないと判定している。したがって、ピアCは、合意ポリシに従わず、通信システム200にユーザXが参加することを許可しない可能性がある。この場合、ピアCは、ユーザXの認証要求を拒否することになる。ところが、複数の参加者の合意に基づいて各トランザクションの実行および確定が行われるシステム(例えば、ブロックチェーンネットワーク)においては、ピアCがユーザXの認証を拒否しても、他の多くのピアがユーザXを認証すれば、ユーザXのトランザクションは実行され得る。
【0083】
図15は、認証ノードとして動作しないピアにおけるユーザ登録処理の一例を示すフローチャートである。このフローチャートの処理は、図13図14に示す例では、ピアD、Eにより実行される。
【0084】
S26~S27の処理は、認証ノードとして動作するピアおよび認証ノードとして動作しないピアにおいて実質的に同じである。すなわち、認証ノードとして動作しない通信装置も、新規ユーザを登録するか否かを判定する。なお、認証ノードとして動作する通信装置は、新規ユーザのアカウント情報が正しいと判定したときは、登録OKメッセージと共に、新規ユーザの登録申請情報を送信する。この登録申請情報には、電子署名が添付されている。
【0085】
新規ユーザを登録すると判定したときは、通信装置は、S41~S42において、受信した登録申請情報が改ざんされていないかを確認する。そして、受信した登録申請情報が改ざんされてなければ、通信装置は、S28において、自分の公開鍵リストに新規ユーザの公開鍵を登録する。
【0086】
ユーザ認証は、図5または図11に示す手順と実質的に同じである。すなわち、ユーザXは、通信システム200を使用するときは、ピアA~Eに電子署名を送信する。各ピアA~Eは、自分の公開鍵リストに登録されているユーザXの公開鍵でその電子署名を検証する。そして、電子署名の検証が成功すれば(即ち、ユーザXの公開鍵が公開鍵リストに登録されていれば)、ユーザXのトランザクションが実行される。
【符号の説明】
【0087】
100、200 通信システム
301 プロセッサ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15