(57)【要約】【課題】ブロックの採択にかかる合意形成に複数のノードによる署名を必要とするブロックチェーン・ネットワークにおいて、合意が形成されたブロックにかかる署名の取り扱いの煩雑さを低減する。【解決手段】セットアップの完了後、第１のノード１１０が、生成したブロックを含む第１のメッセージをＮ個のノードに送信する（Ｓ３０１）。各ノードは、合意形成のルールに基づいて当該ブロックの有効性を評価する（Ｓ３０２）。有効の場合、当該ノードは、秘密鍵シェアｆ（ｘｉ）による合意形成対象のブロックのハッシュ値ｈに対する署名ｓｉを有する第２のメッセージを各ノードに送信する（Ｓ３０３−１）。ｊ番目のノードにおいてｋ個の署名が集まった後、当該ノードは、これらの署名を合成して、公開鍵ＰＫに対応する署名を生成する（Ｓ３０４）。合意形成対象のブロックは、署名ＳＫ・ｈが付加されて各ノードのブロックチェーンに追加される（Ｓ３０６）。【選択図】図３
2019184995.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための鍵生成方法であって、ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）が、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信するステップと、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出するステップと、
（３）式で表されるＰＫｉを算出するステップと
を含むことを特徴とする方法。
【数１】
2019184995.tif 000012
【数２】
2019184995.tif 000013
【数３】
2019184995.tif 000014
【請求項２】
ｊ番目のノードから、ＰＫｊを受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
ｊ番目のノードについて、ＰＫｊを算出するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
ｋ個のノードに関する座標（ｘｊ，ＰＫｊ）からｆ（０）・ｇ１を算出するステップをさらに含むことを特徴とする請求項２又は３に記載の方法。
【請求項５】
ｆ（０）・ｇ１の算出は、ラグランジェ補間を用いて行うことを特徴とする請求項４に記載の方法。
【請求項６】
ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）に、Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための鍵生成方法を実行させるためのプログラムであって、前記鍵生成方法は、前記ｉ番目のノードが、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信するステップと、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出するステップと、
（３）式で表されるＰＫｉを算出するステップと
を含むことを特徴とするプログラム。
【数４】
2019184995.tif 000015
【数５】
2019184995.tif 000016
【数６】
2019184995.tif 000017
【請求項７】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークを構成するｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）であって、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定し、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信し、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出し、
（３）式で表されるＰＫｉを算出することを特徴とするノード。
【数７】
2019184995.tif 000018
【数８】
2019184995.tif 000019
【数９】
2019184995.tif 000020
【請求項８】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための前記採択の確定方法であって、ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）が、
ブロックを前記Ｎ個のノードに送信するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、前記ブロックのハッシュ値ｈに未知の（ｋ−１）次多項式ｆ（ｘ）のｘ＝ｘｊにおける値であるｆ（ｘｊ）を乗じた署名ｓｊを受信するステップと、
ｋ個のノードに関する座標（ｘｊ，ｓｊ）からｆ（０）・ｈを算出するステップと、
算出されたｆ（０）・ｈを公開鍵に対応する署名として前記ブロックに付加するステップと、
前記署名が付加された前記ブロックをブロックチェーンに追加して前記ブロックの前記採択を確定させるステップと
を含むことを特徴とする方法。
ここで、Ｇ１をｇ１を生成元とする巡回群、Ｇ２をｇ２を生成元とする巡回群、ＧＴをｇＴを生成元とする巡回群であり、Ｇ１×Ｇ２からＧＴへの双線形写像ｅが定義可能であり、かつ、合意形成対象のブロックの前記ハッシュ値ｈを与えるハッシュ関数を任意のデータから巡回群Ｇ２への写像として定義可能とする。加えて、ｉ番目のノードは、１からＮの各ｊにおけるｘｊの値にアクセス可能であり、ｊ番目のノードは、ｆ（ｘｊ）の値にアクセス可能とする。
【請求項９】
ｆ（０）・ｈの算出は、ラグランジェ補間を用いて行うことを特徴とする請求項８に記載の方法。
【請求項１０】
ｋ個以上の署名を有するか否かの判定を行い、判定結果が肯定的である場合に、前記ｆ（０）・ｈの算出を実行することを特徴とする請求項８又は９に記載の方法。
【請求項１１】
ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）に、Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための前記採択の確定方法を実行させるためのプログラムであって、前記確定方法は、前記ｉ番目のノードが、
ブロックを前記Ｎ個のノードに送信するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、前記ブロックのハッシュ値ｈに未知の（ｋ−１）次多項式ｆ（ｘ）のｘ＝ｘｊにおける値であるｆ（ｘｊ）を乗じた署名ｓｊを受信するステップと、
ｋ個のノードに関する座標（ｘｊ，ｓｊ）からｆ（０）・ｈを算出するステップと、
算出されたｆ（０）・ｈを公開鍵に対応する署名として前記ブロックに付加するステップと、
前記署名が付加された前記ブロックをブロックチェーンに追加して前記ブロックの前記採択を確定させるステップと
を含むことを特徴とするプログラム。
ここで、Ｇ１をｇ１を生成元とする巡回群、Ｇ２をｇ２を生成元とする巡回群、ＧＴをｇＴを生成元とする巡回群であり、Ｇ１×Ｇ２からＧＴへの双線形写像ｅが定義可能であり、かつ、合意形成対象のブロックの前記ハッシュ値ｈを与えるハッシュ関数を任意のデータから巡回群Ｇ２への写像として定義可能とする。加えて、ｉ番目のノードは、１からＮの各ｊにおけるｘｊの値にアクセス可能であり、ｊ番目のノードは、ｆ（ｘｊ）の値にアクセス可能とする。
【請求項１２】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークを構成するｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）であって、
ブロックを前記Ｎ個のノードに送信し、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、前記ブロックのハッシュ値ｈに未知の（ｋ−１）次多項式ｆ（ｘ）のｘ＝ｘｊにおける値であるｆ（ｘｊ）を乗じた署名ｓｊを受信し、
ｋ個のノードに関する座標（ｘｊ，ｓｊ）からｆ（０）・ｈを算出して、算出されたｆ（０）・ｈを公開鍵に対応する署名として前記ブロックに付加し、
前記署名が付加された前記ブロックをブロックチェーンに追加して前記ブロックの前記採択を確定させることを特徴とするノード。
ここで、Ｇ１をｇ１を生成元とする巡回群、Ｇ２をｇ２を生成元とする巡回群、ＧＴをｇＴを生成元とする巡回群であり、Ｇ１×Ｇ２からＧＴへの双線形写像ｅが定義可能であり、かつ、合意形成対象のブロックの前記ハッシュ値ｈを与えるハッシュ関数を任意のデータから巡回群Ｇ２への写像として定義可能とする。加えて、ｉ番目のノードは、１からＮの各ｊにおけるｘｊの値にアクセス可能であり、ｊ番目のノードは、ｆ（ｘｊ）の値にアクセス可能とする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーン・ネットワーク及びそのための確定方法に関し、より詳細には、ブロックの採択にかかる合意形成に複数のノードによる署名を必要とするブロックチェーン・ネットワーク及びそのための当該採択の確定方法に関する。
【背景技術】
【０００２】
ブロックチェーンが中央集権的な第三者機関による従来の信用付与のメカニズムを代替可能な技術として注目されている。「ブロック」と呼ばれるデータの単位が当該ブロックについての合意形成に参加する複数のノードに与えられ、その有効性（ｖａｌｉｄｉｔｙ）がそれぞれのノードにおいて評価（ｅｖａｌｕａｔｅ）される。所定の条件が満たされることにより、各ノードは、複数の可能性のあるブロックの中から、当該ブロックについてその採択の合意（ｃｏｎｓｅｎｓｕｓ）が形成されたと判定して、当該ブロックを受け入れる。より具体的には、当該ブロックが、各ノードが有するブロックチェーンに追加される。合意形成の対象となるブロックは、いずれかのノードによって、各ノードに対して与えられる。
【０００３】
ここで、どのような手順で合意を形成するか、何を合意形成のための所定の条件とするかという合意アルゴリズムがブロックチェーン・ネットワークの信頼性と性能を左右する。合意アルゴリズム次第で、たとえば通信状況・電力供給等の物理的な理由により正常に動作しない障害（「良性障害（ｂｅｎｉｇｎ  ｆａｉｌｕｒｅ）」とも呼ばれる。）の許容可能な数が異なり、また、合意アルゴリズムに定められた所定のルールに従わないような任意のあらゆる障害（「ビザンチン障害（Ｂｙｚａｎｔｉｎｅ  ｆａｉｌｕｒｅ）」とも呼ばれる。）の許容可能な数が異なる。あるノードが所定のルールに従わないような場面としては、物理的な理由のほか、当該ノードに対する不正アクセスがあった場合、当該ノードの管理者自身に不正の意図があった場合等が挙げられる。
【０００４】
合意アルゴリズムの一例として、合意形成に参加するＮ個（Ｎは２以上の整数）のノードのうちｋ個（ｋは２≦ｋ≦Ｎを満たす整数）のノードによる署名を必要とするものが挙げられる。Ｎ＝５、ｋ＝３の例を考えれば、これは合意形成に参加するノードの過半数による署名が必要となることを意味する。そして、合意形成がなされ、合意形成対象のブロックについてその採択が確定したことを示すためには、根拠としてｋ個以上の署名を付すことが必要となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ｋ個のノードによる署名が当該合意アルゴリズムにおける所定の条件を満たすことのできるノードの組み合わせはＮ及びｋの値によっては数多く考えられ、このことは、合意が形成されたブロックについて、署名の取り扱いを複雑にしている側面がある。たとえば、あるブロックの署名を事後的に検証（ｖｅｒｉｆｙ）するためには、当該ブロックに付された複数の署名が所定の条件を満たしているか否かを個別に確認しなければならないからである。
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、ブロックの採択にかかる合意形成に複数のノードによる署名を必要とするブロックチェーン・ネットワーク及びそのための当該採択の確定方法において、合意が形成されたブロックにかかる署名の取り扱いの煩雑さを低減することにある。
【課題を解決するための手段】
【０００７】
このような目的を達成するために、本発明の第１の態様は、Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための鍵生成方法であって、ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）が、（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定するステップと、ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信するステップと、（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出するステップと、（３）式で表されるＰＫｉを算出するステップとを含むことを特徴とする。
【０００８】
【数１】
2019184995.tif 000003
【０００９】
【数２】
2019184995.tif 000004
【００１０】
【数３】
2019184995.tif 000005
【００１１】
また、本発明の第２の態様は、第１の態様において、ｊ番目のノードから、ＰＫｊを受信するステップをさらに含むことを特徴とする。
【００１２】
また、本発明の第３の態様は、第１の態様において、ｊ番目のノードについて、ＰＫｊを算出するステップをさらに含むことを特徴とする。
【００１３】
また、本発明の第４の態様は、第２又は第３の態様において、ｋ個のノードに関する座標（ｘｊ，ＰＫｊ）からｆ（０）・ｇ１を算出するステップをさらに含むことを特徴とする。
【００１４】
また、本発明の第５の態様は、第４の態様において、ｆ（０）・ｇ１の算出は、ラグランジェ補間を用いて行うことを特徴とする。
【００１５】
また、本発明の第６の態様は、第４又は第５の態様において、算出された前記ｆ（０）・ｇ１を公開鍵ＰＫとして送信するステップをさらに含むことを特徴とする。
【００１６】
また、本発明の第７の態様は、第６の態様において、前記送信は、前記公開鍵ＰＫの前記ブロックチェーン・ネットワークの外への送信を含むことを特徴とする。
【００１７】
また、本発明の第８の態様は、Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための前記採択の確定方法であって、ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）が、ブロックを前記Ｎ個のノードに送信するステップと、ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、前記ブロックのハッシュ値ｈに未知の（ｋ−１）次多項式ｆ（ｘ）のｘ＝ｘｊにおける値であるｆ（ｘｊ）を乗じた署名ｓｊを受信するステップと、ｋ個のノードに関する座標（ｘｊ，ｓｊ）からｆ（０）・ｈを算出するステップと、算出されたｆ（０）・ｈを公開鍵に対応する署名として前記ブロックに付加するステップと、前記署名が付加された前記ブロックをブロックチェーンに追加して前記ブロックの前記採択を確定させるステップとを含むことを特徴とする。ここで、Ｇ１をｇ１を生成元とする巡回群、Ｇ２をｇ２を生成元とする巡回群、ＧＴをｇＴを生成元とする巡回群であり、Ｇ１×Ｇ２からＧＴへの双線形写像ｅが定義可能であり、かつ、合意形成対象のブロックの前記ハッシュ値ｈを与えるハッシュ関数を任意のデータから巡回群Ｇ２への写像として定義可能とする。加えて、ｉ番目のノードは、１からＮの各ｊにおけるｘｊの値にアクセス可能であり、ｊ番目のノードは、ｆ（ｘｊ）の値にアクセス可能とする。
【００１８】
また、本発明の第９の態様は、第８の態様において、ｆ（０）・ｈの算出は、ラグランジェ補間を用いて行うことを特徴とする。
【００１９】
また、本発明の第１０の態様は、第８又は第９の態様において、ｋ個以上の署名を有するか否かの判定を行い、判定結果が肯定的である場合に、前記ｆ（０）・ｈの算出を実行することを特徴とする。
【発明の効果】
【００２０】
本発明の一態様によれば、Ｎ個の一組の秘密鍵シェアのうち所定の数ｋ個の秘密鍵シェアによる署名を用いて未知の秘密鍵による署名を生成することにより、単一の署名によって、ブロックの採択にかかる合意がなされたことを示すことが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態におけるブロックチェーン・ネットワークを示す図である。
【図２】本発明の第１の実施形態における鍵生成方法の流れ図である。
【図３】本発明の第２の実施形態におけるブロックの採択についての確定方法の流れ図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【００２３】
（第１の実施形態）  
図１に、本発明の第１の実施形態にかかるブロックチェーン・ネットワークを示す。ネットワーク１００は、例示としてＮが５であり、第１のノード１１０、第２のノード１２０、第３のノード１３０、第４のノード１４０及び第５のノード１５０を有する。各ノードは、第１のノード１１０について図示するように、通信インターフェースなどの通信部１１１と、プロセッサ、ＣＰＵ等の処理部１１２と、メモリ、ハードディスク等の記憶装置又は記憶媒体を含む記憶部１１３とを備えるコンピュータであり、所定のプログラムを実行することによって、以下で説明する各処理を実現することができ、当該ノード１１０は、１又は複数の装置ないしサーバを含むことがあり、また当該プログラムは、１又は複数のプログラムを含むことがあり、また、コンピュータ読み取り可能な記憶媒体に記録して非一過性のプログラムプロダクトとすることができる。その他のノードについても、そのハードウェアの構成は同様である。以下では第１のノード１１０を中心に説明するが、他のノードにおいても、同様の処理を行い得る。また、合意形成に参加しないノードがネットワーク１００に含まれることもある。
【００２４】
所定のプログラムには、合意アルゴリズムにかかるルール及びセットアップにかかるルールが定められており、記憶部１１３又は第１のノード１１０からネットワークを介してアクセス可能な記憶装置又は記憶媒体に記憶しておくことができる。
【００２５】
合意形成に参加するＮ個のノードが、互いに通信可能な状態から、ブロックの採択にかかる合意形成を実行可能な状態に遷移するために実行させるべきプロセスを「セットアップ」と呼ぶ。セットアップは、ネットワーク１００の外部又は内部においてセットアップの要求を受けて開始され、図１では、外部から当該要求が送信される例を示している。当該要求には、合意形成に必要となる署名の数ｋを含むことができ、また予めセットアップにかかるルールの中で定めておいてもよい。また、当該要求には、合意形成に参加するＮ個のノードの指定を含むことができ、またこの指定は予めセットアップにかかるルールの中で定めておいてもよい。
【００２６】
いずれかの形でＮ及びｋの値が定まり、セットアップ・プロセスの実行が進むと、各ノードは、合意形成に参加するノード全体に割り当てられた１個の公開鍵、合意形成に参加する各ノードに割り当てられたＮ個の公開鍵シェア、そして当該ノードに割り当てられた１個の秘密鍵シェアを保持することとなる。また、各ノードは、Ｎ及びｋの値又はｋ／Ｎの値も保持することとなる。Ｎの値は、公開鍵シェアの数から求めることもできる。
【００２７】
秘密鍵と公開鍵は、当該秘密鍵により署名した平文を当該公開鍵により検証できるという関係にあり、秘密鍵シェアとそれに対応する公開鍵シェアについても同様である。ここで、「秘密鍵シェア」とは、Ｎ個の一組の秘密鍵シェアのうち所定の数ｋ個の秘密鍵シェアによる署名を用いて秘密鍵による署名を生成可能であるように、生成された一組の秘密鍵シェアのうちのいずれかを指す。したがって、当該秘密鍵を知ることなく、ｋ個の秘密鍵シェアに基づいて公開鍵に対応する署名を生成し、合意形成の対象であるブロックに当該署名を付加することができる。付加された署名は、公開鍵によってその検証可能である。
【００２８】
図１の例についてさらに説明すると、ネットワーク１００全体に割り当てられる１個の公開鍵をＰＫ（Ｐｕｂｌｉｃ  Ｋｅｙの略）、当該公開鍵に対応する秘密鍵をＳＫ（Ｓｅｃｒｅｔ  Ｋｅｙの略）、第１のノード１１０、第２のノード１２０、第３のノード１３０、第４のノード１４０、第５のノード１５０のそれぞれに割り当てられる公開鍵シェア及び秘密鍵シェアをそれぞれＰＫ１及びＳＫ１、ＰＫ２及びＳＫ２、ＰＫ３及びＳＫ３、ＰＫ４及びＳＫ４、ＰＫ５及びＳＫ５と表記する。セットアップ後には、たとえば第１のノードは、ＰＫ、ＰＫ１乃至ＰＫ５及びＳＫ１をその記憶部１１３又は当該ノードと通信可能な記憶装置又は記憶媒体に記憶していることになる。記憶されたこれらのデータは、後の合意形成又はその確定プロセスにおいて当該ノードからアクセス可能となる。
【００２９】
ここで、公開鍵ＰＫは、最終的に付加される署名の検証に必要となるところ、セットアップの段階では生成しない場合もある。署名の検証を行うノード又は装置が検証時に公開鍵ＰＫを有していればよく、初期設定の時点で必ずしもネットワーク１００の各ノードが有していることは必要ではないからである。
【００３０】
図２に、本実施形態にかかるこれらの鍵生成方法の流れを示す。ここでは一例として、（ｋ−１）次多項式ｆ（ｘ）を考え、ｆ（ｘｉ）の値（ｉはｉ番目のノードを表す１からＮの整数であり、ｘｉは任意の整数）を各ノードに対する秘密鍵シェアＳＫｉとするものとする。
【００３１】
まず、ｉ番目のノードは、ａｉｍ（ｍは０からｋ−１の整数）を係数とする（ｋ−１）次多項式ｆｉ（ｘ）を決定する（Ｓ２０１）。各ノードは、セットアップルールに従って、ａｉｍを選択ないし生成して記憶することによってｆｉ（ｘ）を計算することができる。
【００３２】
【数４】
2019184995.tif 000006
【００３３】
次に、ｉ番目のノードは、巡回群Ｇ１の生成元ｇ１を用いて、０からｋ−１の各ｍにおけるａｉｍ・ｇ１の値又はそれを含むメッセージを他のノードに送信する（Ｓ２０２）。また、ｉ番目のノードは、ｊ番目のノード（ｊは１からＮの整数）に対して、ｆｉ（ｘｊ）の値又はそれを含むメッセージを送信する。ここで、ｆｉ（ｘｊ）の送信は、ｍ及びａｉｍ・ｇ１より前に送信してもよく、またこれと同時に送信してもよい。
【００３４】
生成元ｇ１は、各ノードに記憶されて既知であるか、いずれかのノードから合意形成に参加するＮ個のノードに与えられることによって、Ｎ個のノードそれぞれがアクセス可能であり、用いることができるものとする。同様に、ｉ番目のノードに秘密鍵シェアｆ（ｘｉ）を与える整数ｘｉの値についても、Ｎ個のノードそれぞれがアクセス可能であり、用いることができるものとする。たとえば、これらの値は、各ノードの記憶部又は各ノードからアクセス可能な記憶装置又は記憶媒体に記憶しておけばよい。
【００３５】
そして、ｊ番目のノードにおいて、１からＮのｉについてｆｉ（ｘｊ）を加算して、ｆ（ｘｊ）、すなわち秘密鍵シェアＳＫｊを算出する（Ｓ２０４）。多項式ｆ（ｘ）を次式のように定義すれば、
【００３６】
【数５】
2019184995.tif 000007
【００３７】
これは、いずれのノードに対しても知らされていないものの、次式のようにｆ（ｘｊ）を考えることによって、ｆ（ｘ）自体を各ノードが知ることなく、ｆ（ｘｊ）の値を各ノードにおいて算出可能である。
【００３８】
【数６】
2019184995.tif 000008
【００３９】
また、各ノードは、ｍ及びａｉｍ・ｇ１を自ノードにおいては算出可能であるとともに他ノードのものについては既に受信していることから、次式に従って、公開鍵シェアＰＫｊとしてＳＫｊ・ｇ１を算出することができる（Ｓ２０５）。
【００４０】
【数７】
2019184995.tif 000009
【００４１】
この式による公開鍵シェアＰＫｉの算出は、ｍ及びａｉｍ・ｇ１並びにｘｉがすべてのｉについて既知であることから、ｆ（ｘ）を知ることなくすべてのノードについて可能である。
【００４２】
このようにして得られた公開鍵シェアと秘密鍵シェアのペアは、合意形成対象のブロックのハッシュ値ｈを与えるハッシュ関数を任意のデータからｇ２を生成元とする巡回群Ｇ２への写像とし、ｈにＳＫｊを乗じたＳＫｊ・ｈを署名ｓｊとして、Ｇ１×Ｇ２からｇＴを生成元とする巡回群ＧＴへの写像ｅであって、次式を満たす双線形写像を定義することによって、暗号方式として成り立つことが分かる。ここで、ａ及びｂは任意の整数である。
【００４３】
【数８】
2019184995.tif 000010
【００４４】
すなわち、ｉ番目のノードにおいて、合意形成対象のブロックのハッシュ値ｈ及び署名ｓｊをｊ番目のノードより受け取ったとき、上述のアルゴリズムによって既知の公開鍵シェアＰＫｊを用いて、
【００４５】
【数９】
2019184995.tif 000011
【００４６】
となるため、既知の生成元ｇ１を用いて、ｊ番目のノードより受け取った署名ｓｊの検証を行うことができる。ハッシュ値は、セットアップルールの中にハッシュ関数を定めておくことで、各ノードにおいて、合意形成対象のブロックから算出してもよい。
【００４７】
上述の説明では、（ｋ−１）次多項式関数ｆ（ｘ）の値を秘密鍵シェアとして定め、当該秘密鍵シェアに巡回群の生成元を乗じた値を公開鍵シェアとする署名方式を前提としているところ、Ｎ個の一組の秘密鍵シェアのうち所定の数ｋ個の秘密鍵シェアによる署名を用いて秘密鍵による署名を生成可能であれば、異なる署名方式を採用することもできる。また、この際には、ネットワーク１００のいずれかのノード又はその外部のノードが生成した一組の秘密鍵シェアを各ノードに与えるのではなく、各秘密鍵シェアが各ノードにおいて分散して生成可能であることが望ましい。
【００４８】
また、上述の説明では、ｊ番目のノードにおける公開鍵シェアＰＫｊ及び秘密鍵シェアＳＫｊを例に説明したが、ｉ番目のノードを中心にそこで行われる処理を記述する場合には、当然ではあるが、添え字が適宜変更されることを付言する。
【００４９】
（第２の実施形態）  
図３に、本発明の第２の実施形態にかかるブロックの採択についての確定方法の流れを示す。セットアップが完了した状態から、第１のノード１１０が、ブロックを生成して当該ブロックを含む第１のメッセージを合意形成に参加するＮ個のノードに送信する（Ｓ３０１）。送信ノードも自ら当該ブロックを受信することができる。ここで、ノード間では、メッセージが直接的又は間接的に送受信可能であり、ネットワーク１００を構成する他のノードに合意形成に関連するデータを伝え、また、他のノードからデータを受け取ることができる。
【００５０】
第１のメッセージを受信した各ノードは、それぞれが有するプログラムに定められた合意形成のルールに基づいて、当該ブロックの有効性を評価する（Ｓ３０２）。有効性の評価の詳細は、送信者が正当な送信ノードであるか、ブロックのデータ形式が用途に応じた所定の形式その他の所定の条件を満たしているか、分岐が生じていないかなど、さまざまなルールを含むことができ、ノードによって異なるルールが存在してもよい。また、有効性の評価を行う上で、他のノードとのメッセージの送受信を必要としてもよい。
【００５１】
有効と評価された場合、当該ノードは、当該ノードがアクセス可能な秘密鍵シェアｆ（ｘｉ）による合意形成対象のブロックのハッシュ値ｈに対する署名ｓｉを有する第２のメッセージを各ノードに送信する（Ｓ３０３−１）。署名は、当該ノードに与えられた秘密鍵シェアをハッシュ値に乗じることによって行うことができる。送信先には、自ノードを含めてもよい。無効と評価された場合には、当該ブロックは却下される（Ｓ３０３−２）。
【００５２】
ｊ番目のノードにおいてｋ個の署名が集まった後、当該ノードは、これらの署名を合成して、公開鍵ＰＫに対応する署名を生成する（Ｓ３０４）。具体的には、各ノードは、定期的又は断続的に、ｋ／Ｎの条件が充足されたか否かを判定し、充足された場合には、受け取ったｋ個又はｋ個以上の秘密鍵シェアによる署名から、ｆ（０）・ｈを公開鍵ＰＫに対応する秘密鍵ＳＫによる署名ＳＫ・ｈとして算出することができる。ここでは、（ｋ−１）次多項式ｆ（ｘ）は、ｋ個以上の点（ｘｉ，ｆ（ｘｉ））が既知であれば一意に定めることができ、ｆ（０）の値を未知の秘密鍵ＳＫの値と考えられることを用いている。ｋ個の署名からｋ個の点（ｘｉ，ｆ（ｘｉ）・ｈ）が既知であれば、関数ｆ（ｘ）・ｈが定まることになる。ｆ（０）・ｈの算出は、たとえば、ラグランジュ補間を用いて行うこと
ができる。
【００５３】
なお、公開鍵ＰＫは、ｋ個以上の点（ｘｊ，ＰＫｊ）＝（ｘｊ，ｆ（ｘｊ）・ｇ１）から、たとえば、ラグランジュ補間によって算出可能であり、これはセットアップの段階で行っておいて必要に応じて配布しておいてもよいし、署名の検証を行うネットワーク１００の内部又は外部のノード又は装置が検証時又は検証前にｋ個の公開鍵シェアＰＫｊに基づいて生成してもよい。
【００５４】
そして、必要であれば、生成された単一の署名ＳＫ・ｈが他のノードにブロードキャスト乃至送信される（Ｓ３０５）。既にｋ個以上のノードによる有効性の評価が済んでいることから、合成に成功した時点でブロックを当該ノードが有するブロックチェーンに追加可能としてもよいが、一例として、合成に成功したノードは他のノードに当該合成後の署名を送信し、そして、所定の数以上の合成後の署名を受け取ったことに応じて、各ノードはブロックを追加可能としてもよい。
【００５５】
最後に、合意形成対象のブロックは、署名ＳＫ・ｈが付加されて各ノードのブロックチェーンに追加される（Ｓ３０６）。これにより、当該ブロックのネットワーク１００における採択が確定する。
【００５６】
上述の説明では、各ノードに１つの秘密鍵シェアが与えられる場合を考えているが、１つのノードに与えるシェア数を複数とすることも考えられる。また、上述の説明では、有効性の評価対象となるブロックの詳細について触れていないが、１又は複数のトランザクションを含むものとすることができ、あるいは、任意の１又は複数のデータを含むとすることもできる。そして、必ずしもチェーンを形成しない１又は複数のデータに対する複数のノードを有するコンピュータ・ネットワークによる有効性の評価につき、本発明の精神を適用することも可能である。
【００５７】
なお、「××のみに基づいて」、「××のみに応じて」、「××のみの場合」というように「のみ」との記載がなければ、本明細書においては、付加的な情報も考慮し得ることが想定されていることに留意されたい。
【００５８】
また、念のため、なんらかの方法、プログラム、端末、装置、サーバ又はシステム（以下「方法等」）において、本明細書で記述された動作と異なる動作を行う側面があるとしても、本発明の各態様は、本明細書で記述された動作のいずれかと同一の動作を対象とするものであり、本明細書で記述された動作と異なる動作が存在することは、当該方法等を本発明の各態様の範囲外とするものではないことを付言する。
【符号の説明】
【００５９】
１００  ネットワーク
１１０  第１のノード
１１１  通信部
１１２  処理部
１１３  記憶部
１２０  第２のノード
１３０  第３のノード
１４０  第４のノード
１５０  第５のノード
【図１】
2019184995.tif 000021
【図２】
2019184995.tif 000022
【図３】
2019184995.tif 000023
【手続補正書】
【提出日】平成30年11月7日(2018.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための鍵生成方法であって、ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）が、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信するステップと、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出するステップと、
（３）式で表されるＰＫｉを算出するステップと
を含むことを特徴とする方法。
【数１】
2019184995.tif 000024
【数２】
2019184995.tif 000025
【数３】
2019184995.tif 000026
【請求項２】
ｊ番目のノードから、ＰＫｊを受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
ｊ番目のノードについて、ＰＫｊを算出するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
ｋ個のノードに関する座標（ｘｊ，ＰＫｊ）からｆ（０）・ｇ１を算出するステップをさらに含むことを特徴とする請求項２又は３に記載の方法。
【請求項５】
ｆ（０）・ｇ１の算出は、ラグランジェ補間を用いて行うことを特徴とする請求項４に記載の方法。
【請求項６】
ｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）に、Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークのための鍵生成方法を実行させるためのプログラムであって、前記鍵生成方法は、前記ｉ番目のノードが、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定するステップと、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信するステップと、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出するステップと、
（３）式で表されるＰＫｉを算出するステップと
を含むことを特徴とするプログラム。
【数４】
2019184995.tif 000027
【数５】
2019184995.tif 000028
【数６】
2019184995.tif 000029
【請求項７】
Ｎ個のノード（Ｎは２以上の整数）がブロックの採択にかかる合意形成に参加し、ｋ個のノード（ｋは２≦ｋ≦Ｎを満たす整数）による署名を必要とするブロックチェーン・ネットワークを構成するｉ番目のノード（ｉは１≦ｉ≦Ｎを満たす整数）であって、
（１）式で表される（ｋ−１）次多項式ｆｉ（ｘ）を決定し、
ｊ番目のノード（ｊは１≦ｊ≦Ｎを満たす整数）から、ｆｊ（ｘｉ）（ｘｉはｉ番目のノードに与えられた整数）並びに０からｋ−１の各ｍにおけるａｊｍ・ｇ１の値（ｇ１は巡回群Ｇ１の生成元）を受信し、
（２）式で表されるＳＫｉを（ｋ−１）次多項式ｆ（ｘ）を未知のまま算出し、
（３）式で表されるＰＫｉを算出することを特徴とするノード。
【数７】
2019184995.tif 000030
【数８】
2019184995.tif 000031
【数９】
2019184995.tif 000032