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

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

▶ 京セラ株式会社の特許一覧

特開2025-149668ノード、方法、プログラム及び分散台帳システム
<>
  • 特開-ノード、方法、プログラム及び分散台帳システム 図1
  • 特開-ノード、方法、プログラム及び分散台帳システム 図2
  • 特開-ノード、方法、プログラム及び分散台帳システム 図3
  • 特開-ノード、方法、プログラム及び分散台帳システム 図4
  • 特開-ノード、方法、プログラム及び分散台帳システム 図5
  • 特開-ノード、方法、プログラム及び分散台帳システム 図6
  • 特開-ノード、方法、プログラム及び分散台帳システム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025149668
(43)【公開日】2025-10-08
(54)【発明の名称】ノード、方法、プログラム及び分散台帳システム
(51)【国際特許分類】
   H04L 9/08 20060101AFI20251001BHJP
   H04L 9/32 20060101ALI20251001BHJP
【FI】
H04L9/08 A
H04L9/32 200Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2024050444
(22)【出願日】2024-03-26
(71)【出願人】
【識別番号】000006633
【氏名又は名称】京セラ株式会社
(74)【代理人】
【識別番号】110001106
【氏名又は名称】弁理士法人キュリーズ
(72)【発明者】
【氏名】山下 裕之
(72)【発明者】
【氏名】藤澤 將
(72)【発明者】
【氏名】小山 亮
(72)【発明者】
【氏名】須藤 大貴
(72)【発明者】
【氏名】▲高▼橋 良浩
(57)【要約】
【課題】セキュリティを確保しつつ、より利便性を高めたノードを提供する。
【解決手段】分散台帳システムのノードは、自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について秘密共有を行う制御部と、秘密共有を行った自ノード秘密鍵及び他ノード秘密鍵から生成された全体公開鍵を含む、分散台帳システムで発行されたブロックの少なくとも一部について保存する記憶部と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
分散台帳システムのノードであって、
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う制御部と、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含む、前記分散台帳システムで発行されたブロックの少なくとも一部について保存する記憶部と、を備えるノード。
【請求項2】
前記全体公開鍵は、前記ブロックのブロックヘッダ部又はトランザクションデータ部に含まれる、請求項1に記載のノード。
【請求項3】
自己の公開鍵である自ノード公開鍵について、前記他の複数のノードの一つに対して合意形成のための署名を要求する通信部を更に備え、
前記記憶部は、前記合意形成がなされた前記公開鍵を公開証明書として利用するために保存する、請求項1に記載のノード。
【請求項4】
前記分散台帳システムのシードノードからの前記秘密共有の要求を受信する通信部を更に備える、請求項1に記載のノード。
【請求項5】
前記ブロックの少なくとも一部は、ブロックヘッダ部であり、
前記他の複数のノードの一つに最新の前記ブロックヘッダ部と署名部を要求して、最新の前記ブロックヘッダ部を受信する通信部を更に備え、
前記記憶部は、前記全体公開鍵に基づいて前記署名部を検証し、前記分散台帳システムの正当なノードであると判定した場合に、最新の前記ブロックヘッダ部を保存する、請求項1に記載のノード。
【請求項6】
分散台帳システムの複数のノードのそれぞれに対応する複数の秘密鍵について秘密共有された後に抽出された前記複数の秘密鍵に基づいて生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含む、発行されたブロックを保存する記憶部を備える、ノード。
【請求項7】
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行い、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する、方法。
【請求項8】
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う工程と、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する工程と、をコンピュータに実行させるプログラム。
【請求項9】
複数のノードを備え、
前記複数のノードのそれぞれは、
自己の秘密鍵としての自ノード秘密鍵について前記複数のノードにおいて秘密共有を行い、
前記秘密共有を行った前記複数のノードのすべての前記自ノード秘密鍵から全体公開鍵を生成し、
前記全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックを発行する、分散台帳システム。
【請求項10】
前記複数のノードのうちの一つのノードは、自己の公開鍵である自ノード公開鍵について、前記複数のノードの他の一つのノードに対して合意形成のための署名を要求し、
前記一つのノードは、前記合意形成がなされた前記自ノード公開鍵を公開証明書として保存する、請求項9に記載の分散台帳システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ノード、方法、プログラム及び分散台帳システムに関する。
【背景技術】
【0002】
近年、様々な分野で、分散台帳技術の一種としてのブロックチェーンが活用されている。ブロックチェーンでは、ブロックと呼ばれるデータの単位を生成し、各ブロックのハッシュ値を次のブロックが含むように構成することにより、ブロックを鎖のようにつなげた分散台帳としている。このような分散台帳は、原則として各ノードがそれぞれ保管・管理するため、データの改ざんが難しいと共に、取引の透明性がある台帳となっている。
【0003】
特許文献1は、各ノードの保有データ量を少なくすることができ、取引履歴の肥大化によるノードの容量逼迫の問題を解消または軽減することができる取引記録システムについて開示している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2018-67108号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
分散台帳システムは、分散台帳システムに参加しているノードの一部がシステムダウンしている場合でも他のノードによりシステムを継続することができ、可用性が高いという面での利便性がある。しかしながら、例えばノードの公開証明書の認証機関として、第三者の認証機関を利用している場合等には、第三者の認証機関のサーバダウンや認証機関の公開鍵が改ざん等により、分散台帳システムの処理が継続できなくなり、利便性が損なわれる恐れがあった。
【0006】
また、分散台帳システムを構成するノードのうち、ハードウェアリソースが十分でないノードにおいては、例えばすべての台帳を保持せずに、最新のブロックヘッダのみ保持するライトクライアントノード等とすることができる。しかしながら、最新のブロックヘッダの検証においてデータに不整合があった場合等には、データの検証のために、ライトクライアントノードに対して処理能力超える処理負荷が要求される恐れがあり、処理時間の遅延やタイムアウト等により、分散台帳システムの利便性が損なわれる恐れがあった。
【0007】
本開示では上述の事情に鑑みてなされたものであり、セキュリティを確保しつつ、より利便性を高めたノード、方法、プログラム及び分散台帳システムについて開示するものである。
【課題を解決するための手段】
【0008】
本開示のノードは、分散台帳システムのノードであって、自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う制御部と、前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含む、前記分散台帳システムで発行されたブロックの少なくとも一部について保存する記憶部と、を備えるノードである。
【0009】
本開示のノードは、分散台帳システムの複数のノードのそれぞれに対応する複数の秘密鍵について秘密共有された後に抽出された前記複数の秘密鍵に基づいて生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含む、発行されたブロックを保存する記憶部を備えるノードである。
【0010】
本開示の方法は、自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行い、前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する方法である。
【0011】
本開示のプログラムは、自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う工程と、前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する工程と、をコンピュータに実行させるプログラムである。
【0012】
本開示の方法は、自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行い、前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する方法である。
【0013】
本開示の分散台帳システムは、複数のノードを備え、前記複数のノードのそれぞれは、自己の秘密鍵としての自ノード秘密鍵について前記複数のノードにおいて秘密共有を行い、前記秘密共有を行った前記複数のノードのすべての前記自ノード秘密鍵から全体公開鍵を生成し、前記全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックを発行する分散台帳システムである。
【発明の効果】
【0014】
本開示のノード、方法、プログラム及び分散台帳システムによれば、セキュリティを確保しつつ、より利便性を高めることができる。
【図面の簡単な説明】
【0015】
図1】本開示の一実施形態に係る分散台帳システムの構成例について説明するための図である。
図2】ノードのハードウェア構成の一例について示す図である。
図3】各ノードの秘密鍵に対応する全体公開鍵に関する分散台帳のブロックの発行処理について示すシーケンス図である。
図4】ノードが追加された際の、各ノードの秘密鍵に対応する全体公開鍵に関する分散台帳のブロックの発行処理について示すシーケンス図である。
図5】公開証明書を発行する証明書発行処理について示す図である。
図6】分散台帳に登録されたブロックを用いてブロックヘッダ部の検証を行う処理について示す図である。
図7】ライトクライアントにおける、従来のなりすまし対策処理について示すシーケンス図である。
【発明を実施するための形態】
【0016】
本開示の形態に係るノード、方法、プログラム及び分散台帳システムについて図面を参照して説明する。説明において同様の要素には同一の符号を付して、重複する説明を適宜省略する。
【0017】
図1は、本開示の一実施形態に係る分散台帳システム1の構成例について説明するための図である。図1に示されるように、分散台帳システム1は、ノード2A~2E及び通信ネットワーク3を有している。ノード2A~2Eは、それぞれいわゆる情報処理装置として構成され、本実施形態において、各ノード2A~2Eについて共通の事柄、又は各ノード2A~2Eのいずれかを特定しない事柄について言及する場合には、ノード2A~2Eを区別せずに単にノード2として参照する場合がある。
【0018】
図2は、ノード2のハードウェア構成の一例について示す図である。この図に示されるように、ノード2は、制御部21、通信部22及び記憶部23を有し、主に半導体回路素子を用いた電子回路で構成された、いわゆる情報処理装置とすることができる。例えば、制御部21は、主にCPU(Central Processing Unit)やRAM(Random Access Memory)等の揮発性記憶部等から構成される。通信部22は、通信ネットワーク3に接続して通信を行なう。記憶部23は、主にフラッシュメモリやハードディスク等の不揮発性記憶部を有し、データやプログラムを保存する。なお、制御部21、通信部22及び記憶部23は、それぞれCPU、揮発性記憶部や不揮発性記憶部を有する構成であってもよい。なお、制御部21により実行される通信を含む情報処理は、図2に示されるハードウェアが、記憶部23に保存されたプログラムやデータと連関して動作することにより実現されるものとすることができる。分散台帳システム1の各ノード2の記憶部23には、分散台帳システム1を構成させるためのプログラムが保存されている。また、以下で用いる「秘密共有」の語は、通信部22による通信ネットワーク3を介した他のノード2と通信を伴う処理を含んでいてもよい。また、以下において「署名」と記載されている処理は、電子署名を意味する。
【0019】
図1に戻り、通信ネットワーク3は、所謂インターネット等の公衆通信ネットワークや構内通信ネットワーク等を用いた通信ネットワークとすることができる。各ノード2A~2Eは、例えばピアツーピア通信(P2P:Peer to Peer)で参照されるような、一対一での秘匿性のある通信を行うことを可能としている。ここで、図1においては、ノード2の数はノード2A~2Eの5つとしているが、ノード2の数は複数であればいくつであっても構わない。
【0020】
ここで分散台帳システム1は、例えばブロックチェーンとすることができる。分散台帳システム1では、参加する複数のノード2で一元的な分散台帳を構築及び管理する。データをブロックと呼ばれる小さな単位で保存し、前のブロックとハッシュ値で結びつけて連鎖させ、複数のノード2で各ブロックを保存することにより、データの改ざんを困難とし、安全性及び信頼性を確保している。また、各ブロックにはトランザクション(取引)情報等の情報を含むことができ、トランザクション情報を追加するには、分散台帳システム1において合意形成がなされることを必要とする。合意形成には、分散台帳システム1に参加する全ノード2による署名、51%のノード2による署名、2/3以上のノード2による署名等のルールが適用される。ここで全ノードは、後述するフルノード及び/又はバリデータノード等の全ノードとしてもよい。
【0021】
また、図1のノード2は、すべて同一の役割のノード2であってもよいし、異なる役割のノード2を含んでいてもよい。異なる役割とは、例えばシードノード、フルノード、バリデータノード、ライトクライアント及びクライアント等のノードとすることができる。ここで、シードノードは、分散台帳の所属するノードとその役割を管理するノードである。また、フルノードは、分散台帳すべてを保持し、個々のブロックの検証を行うノードである。またバリデータノードは、分散台帳すべてを保持し、生成、検証、および、署名を行うノードである。ライトクライアントは、分散台帳の一部を保持し、分散台帳の参照、および、状態の確認を行うノードである。クライアントは、分散台帳上にデータを保管するアカウントの操作を行うノードである。
【0022】
分散台帳の各ブロックはブロックヘッダ部、トランザクションデータ部、署名部から構成されるものとしてもよい。ここで、ブロックヘッダ部は、直前のブロックのアキュームレータ、トランザクションデータ部のアキュームレータ、分散台帳チェーン識別子、分散台帳番号、タイムスタンプ、及び分散台帳に対応付けられた公開鍵を含むものとすることができる。
【0023】
図3は、各ノード2A~2Eの秘密鍵に対応する全体公開鍵に関する分散台帳のブロックの発行処理S100について示すシーケンス図である。この図に示されるように、発行処理S100では、まずノード2Aにおいて自身のノードの秘密鍵である自ノード秘密鍵を生成し(ステップS11)、ノード2Aは、他のノード2B~2Eに秘密共有を要請し、他のノード2B~2Eのそれぞれと秘密共有を行う(ステップS12)。ここで秘密共有は、秘密情報を複数の参加者に分散させ、それらの一部または全体を結合することで元の秘密を再構築できる仕組みである。秘密共有には、例えば既知のFeldman方式やPedersen方式等を利用することができる。本実施形態において、ノード2が秘密共有を行う場合、ノード2は自ノード秘密鍵を複数の参加者に分散させる。当該分散された自ノード秘密鍵を取得した他のノード2は、取得した情報を記憶部に記憶するものとする。ここでノード2による自ノード秘密鍵の「分散」とは、ノード2が自ノード秘密鍵を分割し、自身を含む複数の参加者に当該分割された自ノード秘密鍵を送信することを意味する。
【0024】
また、ノード2Aから秘密共有の要請を受けたノード2B~2Eは、それぞれ自身のノードの秘密鍵である自ノード秘密鍵を生成し(ステップS13)、各ノード2B~2Eは、他のノード2に秘密共有を要請し、要請先のノード2のそれぞれと秘密共有を行う(ステップS14)。ここで、ステップS11~S14までの各ノード2A~2Eの秘密鍵生成の処理及び秘密共有の処理をまとめて秘密共有処理S10と呼ぶこととする。
【0025】
ここで、秘密共有は、Feldman方式を用いる場合、各ノード2は、例えば以下の式(1)を独立に選択することができる。
【数1】
ここで、gは、例えばed25519など離散対数問題に対して十分な強度が確保された生成元とし、mod pとして巡回群をなす十分大きな素数を選択する。ziはi番目の秘密鍵に該当し、多項式の係数[aij]から以下の式(2)を共有する。
【数2】
ここで、i番目の公開鍵は、式(3)のようになる。
【数3】
各ノードは、式(4)の計算を行い計算した値を共有する。
【数4】
【0026】
ステップS21において、各ノード2A~2Eにおいて秘密共有されたデータから全体秘密鍵を抽出し、この全体秘密鍵から全体公開鍵である全体公開鍵を生成する。全体秘密鍵の抽出は、いずれのノード2が行ってもよく、例えばノード2A~2Eのうち任意に選択された一のノードが全体秘密鍵の抽出を行ってもよい。
【0027】
秘密鍵は、例えば以下の式で抽出できる。
【数5】
また、公開鍵は、例えば以下の式で生成できる。
【数6】
この時点で全てのノード2A~2Eが、全体公開鍵を保持していてもよい。ステップS22において、任意に選択された一のノード(ここではノード2E)が、全体公開鍵をブロックヘッダ部及び/又はトランザクションデータ部に含むブロックを提案する。
【0028】
ステップS23において、通常のブロック発行と同様に、提案されたノード2Eの署名を検証し、自ノード秘密鍵により署名を行う。ここで、各ノード2A~2Eは、それぞれ自ノード秘密鍵により、ブロックヘッダ部及び/又はトランザクションデータ部に自ノードの公開鍵が含まれていることを検証することとしてもよい。署名を行った後、ステップS24において、未だ署名を行っていない他のノードに署名を要請する。合意形成がなされたと判断された場合(ステップS25)、ステップS26において、分散台帳に登録するためのブロックを発行する。合意形成の条件は、上述の通り、例えば51%のノード2による署名等とすることができる。発行されたブロックは各ノード2A~2Eの記憶部23に分散台帳を構成するブロックとして保存されることとしてもよい(ステップS27)。
【0029】
なお、図3のシーケンス図において、ノード2Aは、シードノードとすることができる。またノード2B~2Eはバリデータノードとすることができる。また、ノード2A~2Eが、バリデータノード又はフルノードのいずれかであることとしてもよいし、それぞれその他の役割のノードであってもよい。
【0030】
上述の各ノード2A~2Eの秘密鍵に対応する全体公開鍵に関する分散台帳のブロックの発行処理S100において、各ノード2A~2Eのうちの一つのノード2の処理では、例えばノード2Aの制御部21は、自己の秘密鍵である自ノード秘密鍵について他の複数のノード2と秘密共有を行うと共に、他の複数のノード2のそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について秘密共有を行うことができる。また、記憶部23は、秘密共有を行った自ノード2秘密鍵及び他ノード2秘密鍵から生成された全体公開鍵を含む、分散台帳システム1で発行されたブロックの少なくとも一部について保存することができる。
【0031】
これにより、合意形成と同様の署名がされたデータについて、全体公開鍵を用いることにより、分散台帳システム1により合意形成されたものであることを確認(検証)することができ、分散台帳システム1の利便性を高めることができる。また、各ノード2は、自ノード公開鍵について、分散台帳システム1の合意形成を行うための署名を得た場合には、分散台帳システム1により認証された公開証明書として利用することができる。これにより、分散台帳システム1は、第三者による認証機関を利用せずに、分散台帳システム1により認証可能な公開証明書を発行することができ、分散台帳システム1の利便性を高めることができる。したがって、発行処理S100により得られるブロックを利用することにより、分散台帳システム1のセキュリティを維持しつつ、分散台帳システム1及び分散台帳システム1に含まれるノード2の利便性を高めることができる。
【0032】
例えば、ノード2Aをシードノードとし、ノード2B~2Eの通信部22は、分散台帳システム1のシードノード2Aからの秘密共有の要求を受信することとしてもよい。これにより、シードノード2Aの秘密共有の要求をきっかけとして、各ノード2は、分散型システムのプログラムを実行し、各ノード2は自己の公開鍵を含むブロックについて分散台帳に登録させることができる。
【0033】
また、ノード2の記憶部23は、秘密共有を行った秘密鍵である自ノード秘密鍵に基づく全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックを分散台帳のブロックとして保存するものとすることができる。これにより、各ノード2又はノード以外の情報処理装置においても、ブロックヘッダ部又はトランザクションデータ部に含まれる全体公開鍵により、集積された署名が分散台帳システム1における合意形成を示すものであるかを検証することができる。したがって、分散台帳システム1のセキュリティを維持しつつ、分散台帳システム1及び分散台帳システム1に含まれるノード2の利便性を高めることができる。
【0034】
また、上述のように、分散台帳システム1は、複数のノード2を備えることができる。また、複数のノード2のそれぞれは、自己の秘密鍵としての自ノード秘密鍵を生成し、生成されたそれぞれの自ノード秘密鍵を複数のノード2において秘密共有を行い、秘密共有を行った複数のノード2のすべての秘密鍵から全体公開鍵を生成することとしてもよい。また、全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックに対して、複数のノード2それぞれの自ノード秘密鍵による署名を行い、ブロックを分散台帳における一つのブロックとして保存するものとすることができる。これにより、集積された署名が分散台帳システム1における合意形成を示すものであるかについて、全体公開鍵を用いることにより、検証することができる。したがって、分散台帳システム1のセキュリティを維持しつつ、分散台帳システム1及び分散台帳システム1に含まれるノード2の利便性を高めることができる。
【0035】
図4は、各ノード2A~2Eに更にノード2Xが追加された際の、各ノードの秘密鍵に対応する全体公開鍵に関する分散台帳のブロックの発行処理S110について示すシーケンス図である。このシーケンス図に示されるように、ノード2Xが分散台帳システム1に追加された場合であっても、各ノード2A~2E及び2Xについて、図3のシーケンス図と同様の処理が行われる。図3のシーケンス図と同様であるため、重複する説明を省略する。
【0036】
ここで、分散台帳システム1等において使用される公開証明書においては、公的機関など、分散台帳システム1外の第三者による信頼源を用いた公開証明書が利用されることがある。このため、分散台帳システム1が参加ノードのみによる堅牢な閉じたシステムとして成立しているにも関わらず、第三者による信頼源に頼ることにより、第三者である認証局のサーバがダウンした場合や、公開鍵の改ざんが発生した場合等には、分散台帳システム1の一部又は全体が機能不全となる恐れがある。上述の秘密共有した秘密鍵を利用したブロックが登録された分散台帳を使用することにより、第三者による信頼源を用いることなく公開証明書を発行することができる。以下に、秘密共有した秘密鍵を利用したブロックが登録された分散台帳を使用したシーケンスについて説明する。
【0037】
図5は、公開証明書を発行する証明書発行処理S200について示す図である。この図に示されるように、ノード2Aは、ステップS201において、自ノード秘密鍵とペアになる公開鍵を記憶部23等から読み出して、制御部21のメモリ等に保存する。引き続き、ステップS202において、自ノードの公開鍵が含まれているブロックを生成し、図3又は4で生成した自ノード秘密鍵により署名を行い、ステップS203において未署名のノード2Bに署名を要請する。このステップS202及びS203をノード2B~2Eで繰り返し、合意形成と判断された場合には(ステップS204)、署名済の公開鍵について署名済ブロックとして発行する(ステップS205)。なお、自ノード公開鍵に署名を要請したノード2Aは、発行されたブロックの内容を公開証明書として利用することができる。ここで各ノードの署名を集積して公開証明書に記録することで、全体公開鍵を用いて公開証明書が真であることを検証することができる。集積された署名は以下の式(7)で表される。
【数7】
また、検証式は以下の式(8)で表される。
【数8】
ステップS207において、ノード2Aの記憶部23は、公開証明書を保存する。ここで、合意形成の条件は、上述の通り、例えば51%のノード2による署名等とすることができる。上述の証明書発行処理S200により、秘密共有した秘密鍵に基づいた全体公開鍵により検証することができる公開証明書を作成できるため、第三者による信頼源を用いることなく、分散台帳システム1内で認証可能な公開証明書を発行することができる。
【0038】
このようにノード2Aの通信部22は、自己の公開鍵である自ノード公開鍵について、他の複数のノード2の一つに対して合意形成のための署名を要求することができる。また、記憶部23は、合意形成がなされた公開鍵を公開証明書として利用するために保存することができる。これにより、各ノード2は、分散台帳システム1により合意形成され、全体公開鍵により(分散台帳システム1により合意形成されたことが)認証可能な公開証明書を作成することができる。
【0039】
ところで、分散台帳システム1を構成するライトクライアントノード等においては、ハードウェアリソースが限られたノードである場合がある。このため、すべての分散台帳を保存せずに、他のノードに保存された分散台帳と部分的に同期することでアカウント状態の検証、トランザクションの検証、及びイベントの監視等が行えるものとしている場合がある。この場合にライトクライアントノードは、例えば、直前のブロックのハッシュ、タイムスタンプ、及びブロック本体のハッシュ等を含んだ情報が集約されたブロックヘッダ部を構成して保存する。このブロックヘッダ部を使用して、フルノードやバリデータから入手したブロックヘッダ部に関して検証や監視を行うことができる。
【0040】
このように、ライトクライアントは分散台帳の部分的なブロックしか保存していないことから、分散台帳をすべて保持しているフルノード、もしくは、バリデータノードになりすましが発生した場合、確認のためのシーケンスが必要となる。
【0041】
図7は、従来のライトクライアントにおける、フルノード又はバリデータノードになりすましがあった場合のなりすまし対策処理S900について示すシーケンス図である。このシーケンス図に示されるように、例えば、クライアント4が、分散台帳システム1にアカウントの状態、ブロックの状態やイベント情報を取得する場合に、ステップS901において、ライトクライアントであるノード2Aにブロック要請を送信する。ブロック要請を受信したノード2Aが、例えばなりすましノードである偽ノード5にブロックヘッダ部や検証データを要求した場合に(ステップS902)、偽ノード5は正当でないブロックヘッダ部や検証データを送信する(ステップS903)。ここで、ノード2Aは、予め保存されたブロックヘッダ部等と受信したブロックヘッダ部等とを比較して検証を行うため、検証NGとなる(ステップS904)。
【0042】
この場合には、ノード2Aは、他のフルノード又はバリデータノードであるノード2B~2Eに対して、順次ブロックヘッダ部や検証データを要求し(ステップS905)、ブロックヘッダ部や検証データを受信する(ステップS906)。そして、例えばブロックヘッダ部や検証データが、分散台帳システム1に参加するフルノードやバリデータノードの例えば51%の評価があることを確認する等により(ステップS907)、最新のブロックヘッダ部を正当なブロックヘッダ部として保存することができる(ステップS908)。ここで、評価は、51%でなくても、例えば他のすべてのフルノードやバリデータノードの評価や2/3以上のフルノードやバリデータノードの評価とすることができる。その後、ノード2Aは、ステップS909において、アカウントの状態、ブロックの状態やイベント情報についてブロック応答として、クライアント4に通知する。
【0043】
このように、他のフルノード又はバリデータノードであるノード2B~2Eから、順次ブロックヘッダ部や検証データを受信して評価するような処理は、リソースが限られているライトクライアントであるノード2Aの処理としては、負荷が多き過ぎる恐れがある。このため、処理に多くの時間がかかることによる、クライアント4のタイムアウト発生等により、処理が行えなくなる等の恐れがあった。上述の秘密共有した秘密鍵を利用したブロックが登録された分散台帳を使用することにより、過半数のノード2B~2Eから、ブロックヘッダ部や検証データを受信するような処理を行うことなく、ライトクライアントのようなリソースに制限のあるノード2Aであっても、負荷を軽減して効率的に検証を行うことができる。以下に、秘密共有した秘密鍵を利用したブロックが登録された分散台帳を使用したシーケンスについて説明する。
【0044】
図6は、図3で生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部を有する、分散台帳に登録されたブロックを用いてブロックヘッダ部の検証を行う処理S400について示す図である。この図に示されるように、例えば、クライアント4が、分散台帳システム1にアカウントの状態、ブロックの状態やイベント情報を取得する場合に、ステップS401において、ライトクライアントであるノード2Aにブロック要請を行う。ブロック要請を受信したノード2Aが、例えばなりすましノードである偽ノード5に最新のブロックヘッダ部を要求した場合に(ステップS402)、偽ノード5は正当でない最新のブロックヘッダ部や署名部を送信する(ステップS403)。ここで、ノード2Aは、自ノードの公開鍵と受信した最新のブロックヘッダ部及び署名部のグループ署名を検証することで、最新のブロックヘッダ部が正当なものであるかどうかの検証を行い、ここではなりすまされたノード5から受信したブロックヘッダ部であるため、検証NGとなる(ステップS404)。
【0045】
この場合には、ノード2Aは、他のフルノード又はバリデータノードである、例えばノード2Eに対して、最新のブロックヘッダ部を要求し(ステップS405)、最新のブロックヘッダ部及び署名部を受信する(ステップS406)。ここで、ノード2Aは、全体公開鍵と受信した最新のブロックヘッダ部及び署名部のグループ署名を検証することで、最新のブロックヘッダ部が、分散台帳システム1により合意形成された正当なものであるかどうかの検証を行い、検証OKの場合に(ステップS407)、最新のブロックヘッダ部を保存する(ステップS408)。ノード2Aは、ステップS409において、最新のブロックから得られるアカウントの状態、ブロックの状態やイベント情報についてブロック応答として、クライアント4に通知する。
【0046】
したがって、秘密共有した秘密鍵から生成した全体公開鍵が保存されたブロックが登録された分散台帳を使用することにより、フルノード又はバリデータノードに繰り返しアクセスすることによる51%等の評価を必要とせず、一回で正当なブロックヘッダ部又はブロックであるかどうかを検証することができる。
【0047】
また、通信部22は、他の複数のノードの一つに最新のブロックヘッダ部と署名部を要求して、最新の前記ブロックヘッダ部を受信することができる。また、記憶部23は、全体公開鍵に基づいて署名部を検証し、分散台帳システム1の正当なノードであると判定した場合に、最新の前記ブロックヘッダ部を保存することとしてもよい。これにより、ノード2Aは、例えライトクライアント等の一部の情報しか保持しないノード2であっても、ブロックが、自身が参加する分散台帳システム1で合意形成された最新のブロックヘッダ部を保存することができる。
【0048】
また、例えばフルノードやバリデータノードであるノード2Eにおいては、他のノード2Aの秘密鍵を秘密共有し、ノード2Eの記憶部23は、秘密鍵に基づいて生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックを分散台帳のブロックとして保存することができる。これにより、ノード2Eは、ライトクライアント等の一部の情報しか保持しないノード2Aに対して、ブロックやブロックヘッダ部が、分散台帳システム1で合意形成されたものかどうかを判定させることができる。
【0049】
また、分散台帳システム1を構成する複数のノード2A~2Eの少なくとも一つのノード2Aは、秘密鍵について秘密共有を行い、秘密共有を行った秘密鍵に基づいて生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックのうち、少なくともブロックヘッダ部を保存することができる。これにより、秘密鍵を発行したノード2Aは、例えライトクライアント等の一部の情報しか保持しないノード2Aであっても、分散台帳システム1に参加している正当なノード2Aであることを示すことができると共に、ブロック又はブロックヘッダ部が、自己が参加する分散台帳システム1により合意形成されたものであるかどうかを検証することができる。
【0050】
上述の実施形態における動作フロー及び動作例は、必ずしもフロー図又はシーケンス図に記載された順序に沿って時系列に実行されなくてよい。例えば、動作におけるステップは、フロー図又はシーケンス図として記載した順序と異なる順序で実行されても、並列的に実行されてもよい。また、動作におけるステップの一部が削除されてもよく、さらなるステップが処理に追加されてもよい。また、上述の実施形態における動作フロー及び動作例は、別個独立に実施してもよいし、2以上の動作フロー及び動作例を組み合わせて実施してもよい。例えば、1つの動作フローの一部のステップを他の動作フローに追加してもよいし、1つの動作フローの一部のステップを他の動作フローの一部のステップと置換してもよい。
【0051】
上述の実施形態に係る動作をコンピュータに実行させるプログラムが提供されてもよい。プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、コンピュータにプログラムをインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD-ROMやDVD-ROM等の記録媒体であってもよい。
【0052】
本開示で使用する「に基づいて」、「に応じて」という記載は、別段に明記されていない限り、「のみに基づいて」、「のみに応じて」を意味しない。「に基づいて」という記載は、「のみに基づいて」及び「に少なくとも部分的に基づいて」の両方を意味する。同様に、「に応じて」という記載は、「のみに応じて」及び「に少なくとも部分的に応じて」の両方を意味する。また、「含む(include)」、「備える(comprise)」、及びそれらの変形の用語は、列挙する項目のみを含むことを意味せず、列挙する項目のみを含んでもよいし、列挙する項目に加えてさらなる項目を含んでもよいことを意味する。また、本開示において使用されている用語「又は(or)」は、排他的論理和ではないことが意図される。本開示において、例えば、英語でのa,an,及びtheのように、翻訳により冠詞が追加された場合、これらの冠詞は、文脈から明らかにそうではないことが示されていなければ、複数のものを含むものとする。
【0053】
以上、図面を参照して実施形態について詳しく説明したが、具体的な構成は上述のものに限られることはなく、要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0054】
上述の実施形態に関する特徴について付記する。
【0055】
(付記1)
分散台帳システムのノードであって、
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う制御部と、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含む、前記分散台帳システムで発行されたブロックの少なくとも一部について保存する記憶部と、を備えるノード。
【0056】
(付記2)
前記全体公開鍵は、前記ブロックのブロックヘッダ部又はトランザクションデータ部に含まれる、付記1に記載のノード。
【0057】
(付記3)
自己の公開鍵である自ノード公開鍵について、前記他の複数のノードの一つに対して合意形成のための署名を要求する通信部を更に備え、
前記記憶部は、前記合意形成がなされた前記公開鍵を公開証明書として利用するために保存する、付記1又は2に記載のノード。
【0058】
(付記4)
前記分散台帳システムのシードノードからの前記秘密共有の要求を受信する通信部を更に備える、付記1乃至3のいずれか一項に記載のノード。
【0059】
(付記5)
前記ブロックの少なくとも一部は、ブロックヘッダ部であり、
前記他の複数のノードの一つに最新の前記ブロックヘッダ部と署名部を要求して、最新の前記ブロックヘッダ部を受信する通信部を更に備え、
前記記憶部は、前記全体公開鍵に基づいて前記署名部を検証し、前記分散台帳システムの正当なノードであると判定した場合に、最新の前記ブロックヘッダ部を保存する、付記1乃至4のいずれか一項に記載のノード。
【0060】
(付記6)
分散台帳システムの複数のノードのそれぞれに対応する複数の秘密鍵について秘密共有された後に抽出された前記複数の秘密鍵に基づいて生成された全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含む、発行されたブロックを保存する記憶部を備える、ノード。
【0061】
(付記7)
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行い、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する、方法。
【0062】
(付記8)
自己の秘密鍵である自ノード秘密鍵について他の複数のノードと秘密共有を行うと共に、前記他の複数のノードのそれぞれに対応する複数の秘密鍵である他ノード秘密鍵について前記秘密共有を行う工程と、
前記秘密共有を行った前記自ノード秘密鍵及び前記他ノード秘密鍵から生成された全体公開鍵を含み、分散台帳システムで発行されたブロックの少なくとも一部について保存する工程と、をコンピュータに実行させるプログラム。
【0063】
(付記9)
複数のノードを備え、
前記複数のノードのそれぞれは、
自己の秘密鍵としての自ノード秘密鍵について前記複数のノードにおいて秘密共有を行い、
前記秘密共有を行った前記複数のノードのすべての前記自ノード秘密鍵から全体公開鍵を生成し、
前記全体公開鍵をブロックヘッダ部又はトランザクションデータ部に含むブロックを発行する、分散台帳システム。
【0064】
(付記10)
前記複数のノードのうちの一つのノードは、自己の公開鍵である自ノード公開鍵について、前記複数のノードの他の一つのノードに対して合意形成のための署名を要求し、
前記一つのノードは、前記合意形成がなされた前記自ノード公開鍵を公開証明書として保存する、付記9に記載の分散台帳システム。
【符号の説明】
【0065】
1 分散台帳システム
2,2A~2E,2X ノード
21 制御部
22 通信部
23 記憶部
3 通信ネットワーク
4 クライアント
5 偽ノード
図1
図2
図3
図4
図5
図6
図7