(57)【要約】  本発明の検証情報付与装置（５１）は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段（５１１）を備え、ノンス設定手段（５１１）は、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う。
2018179293.tif 000002
【特許請求の範囲】
【請求項１】
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは前記第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、前記第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、前記ノンス領域に値を設定して実際に前記処理値を計算することにより前記ノンスを設定する設定処理を行うノンス設定手段を備え、
前記ノンス設定手段は、前記設定処理で前記ノンス領域に値を設定する度に、または前記設定処理により前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う
ことを特徴とする検証情報付与装置。
【請求項２】
前記ノンス設定手段は、前記データ処理を、他の処理領域と隔離された処理領域で行う
請求項１に記載の検証情報付与装置。
【請求項３】
前記ノンス設定手段は、前記データ処理を、前記秘密鍵を外部に持ち出せない耐タンパ領域で行う
請求項１または請求項２記載の検証情報付与装置。
【請求項４】
前記ノンス設定手段は、前記設定処理を行った結果として、前記データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックを出力する
請求項１から請求項３のうちのいずれかに記載の検証情報付与装置。
【請求項５】
前記ノンス設定手段は、前記設定処理で前記ノンス領域に値を設定する度に、前記第１のデータブロックの当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名または暗号化を行い、
前記ノンス設定手段は、前記設定処理で、前記署名が付与された前記第１のデータブロック、または前記暗号化の対象としたデータに代えて前記暗号化によって得られた暗号データを含む新たな第１のデータブロックから得られる前記処理値が前記規則を満たすか否かを判定し、
前記ノンス設定手段は、前記処理値が前記規則を満たした場合に当該処理値を得たデータブロックを出力する
請求項１から請求項４のうちのいずれかに記載の検証情報付与装置。
【請求項６】
前記第１のデータブロックは、任意のデータが格納される第１のデータ領域と、複数のデータブロックを繋げてなる所定のブロックチェーンに１つ以上前に追加されたデータブロックに基づく情報が設定されるヘッダ領域を有し、
前記ノンス設定手段は、前記設定処理で前記ノンス領域に値を設定する度に、前記第１のデータブロックの前記ノンス領域と前記ヘッダ領域とを含む所定のデータ領域に対して、自装置の秘密鍵を用いた暗号化を行う
請求項５記載の検証情報付与装置。
【請求項７】
前記ノンス設定手段は、前記設定処理を１以上の所定数回、かつ２回目以降はそれまでに得たデータを前記第１のデータブロックに引き継ぐとともに、設定先のノンス領域を変えながらもしくは追加しながら行い、
前記ノンス設定手段は、前記設定処理により、ノンス領域の１つに前記規則を満たす前記ノンスが設定される度に、前記第１のデータブロックの当該ノンスが設定されたノンス領域を少なくとも含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名もしくは暗号化を行い、
前記ノンス設定手段は、最後の署名付与後の前記第１のデータブロックまたは少なくとも最後の暗号化によって得た暗号データを含むデータブロックを出力する
請求項１から請求項４のうちのいずれかに記載の検証情報付与装置。
【請求項８】
前記ノンス設定手段は、１以上の所定数のノンス領域を有する前記第１のデータブロックに対して、設定先とする一のノンス領域を指定しながら前記設定処理を、１以上の所定数回繰り返し行い、
前記ノンス設定手段は、前記設定処理により、指定したノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの当該ノンスが設定された前記ノンス領域を含む所定のデータ領域である署名対象領域に対して、自装置の秘密鍵を用いた署名を行い、
前記ノンス設定手段は、各設定処理で、指定されたノンス領域に値を設定しながら、前記第１のデータブロックのうち少なくとも当該ノンス領域と直前に付与された署名が設定された領域とを含む所定のデータ領域である規則対象領域のデータから得られる前記処理値が前記規則を満たすか否かを判定し、
前記ノンス設定手段は、前記設定処理を前記所定数分行った結果として、前記所定数の署名が付与された前記第１のデータブロックを出力する
請求項１から請求項４のうちのいずれかに記載の検証情報付与装置。
【請求項９】
１回の設定処理にかかる平均所要時間もしくは前記規則が、外部ノードとの間の伝搬遅延時間に基づいて定められている
請求項８記載の検証情報付与装置。
【請求項１０】
前記ノンス設定手段は、任意のデータが格納される第１のデータ領域を含む第１のデータブロックに対して、ノンスの設定先とするノンス領域を逐次追加しながら、前記設定処理を１以上の所定数回繰り返し行い、
前記ノンス設定手段は、前記設定処理により、設定先とした前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの前記ノンス領域を含む所定のデータ領域である暗号化対象領域に対して、自装置の秘密鍵を用いた暗号化を行い、
前記ノンス設定手段は、１回目の設定処理で、設定先とされた前記ノンス領域と前記第１のデータ領域とを含む前記第１のデータブロックから得られる前記処理値が前記規則を満たすように、前記ノンス領域にノンスを設定し、
前記ノンス設定手段は、２回目以降の設定処理で、設定先とされた前記ノンス領域と直前の暗号化によって得られた暗号データが設定された暗号データ領域とを少なくとも有する新たな第１のデータブロックに対して、当該第１のデータブロックから得られる前記処理値が前記規則を満たすように、前記ノンス領域にノンスを設定し、
前記ノンス設定手段は、前記設定処理を前記所定数分行った結果として、最後の暗号化によって得られた暗号データを少なくとも含むデータブロックを出力する
請求項１から請求項４のうちのいずれかに記載の検証情報付与装置。
【請求項１１】
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは前記第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、前記第１のデータブロックの所定のノンス領域に前記ノンスを設定する設定処理であって、前記ノンス領域に値を設定して実際に前記処理値を計算することにより前記ノンスを設定する設定処理を行うノンス設定手段であって、前記設定処理で前記ノンス領域に値を設定する度に、または前記設定処理により前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う前記ノンス設定手段を備える検証情報付与装置から出力された、前記データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックを検証する検証装置であって、
前記第２のデータブロックの生成元の前記検証情報付与装置の公開鍵を用いて前記第２のデータブロックに含まれる前記処理データを検証する第１の検証処理と、前記規則に基づいて前記第２のデータブロックもしくは前記第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を備えた
ことを特徴とする検証装置。
【請求項１２】
前記設定処理で前記ノンス領域に値を設定する度に、前記第１のデータブロックの当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名または暗号化を行い、前記設定処理で、前記署名が付与された前記第１のデータブロック、または前記暗号化の対象としたデータに代えて前記暗号化によって得られた暗号データを含む新たな第１のデータブロックから得られる前記処理値が前記規則を満たすか否かを判定し、前記処理値が前記規則を満たした場合に当該処理値を得たデータブロックを出力する前記ノンス設定手段を備えた前記検証情報付与装置から出力された前記データブロックである第２のデータブロックを検証する検証装置であって、
前記検証手段は、前記第１の検証処理で、前記公開鍵を用いて、前記第２のデータブロックに含まれる前記署名並びに当該署名の付与対象とされたデータである対象データ、または前記暗号データを検証するとともに、前記第２の検証処理で、前記署名が付与された前記第１のデータブロックである当該第２のデータブロックまたは前記暗号データに代えて前記暗号データを復号して得られた元データを含む新たな第２のデータブロックに対して、前記第２のデータブロックから得られる前記処理値が規則を満たすか否かを検証する
請求項１１記載の検証装置。
【請求項１３】
１以上の所定数のノンス領域を有する前記第１のデータブロックに対して、設定先とする一のノンス領域を指定しながら前記設定処理を、１以上の所定数回繰り返し行い、前記設定処理により、指定したノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの当該ノンスが設定された前記ノンス領域を含む所定のデータ領域である署名対象領域に対して、自装置の秘密鍵を用いた署名を行い、各設定処理で、指定されたノンス領域に値を設定しながら、前記第１のデータブロックのうち少なくとも当該ノンス領域と直前に付与された署名が設定された領域とを含む所定のデータ領域である規則対象領域のデータから得られる前記処理値が前記規則を満たすか否かを判定し、前記設定処理を前記所定数分行った結果として、前記所定数の署名が付与された前記第１のデータブロックを出力する前記ノンス設定手段を備える前記検証情報付与装置から出力された前記データブロックである第２のデータブロックを検証する検証装置であって、
前記検証手段は、前記第２のデータブロックに含まれる前記署名の１つを、付与された順番と逆の順番で指定しながら、前記第１の検証処理と前記第２の検証処理とをこの順番で前記所定数回繰り返し行い、
前記検証手段は、各回の第１の検証処理で、前記公開鍵を用いて、前記第２のデータブロックに含まれる指定された署名並びに当該署名の付与対象とされた前記署名対象領域のデータである対象データを検証し、各回の第２の検証処理で、直前の前記第１の検証処理で検証された前記署名が設定された領域を含む前記規則対象領域のデータから得られる前記処理値が規則を満たすか否かを検証する
請求項１１記載の検証装置。
【請求項１４】
任意のデータが格納される第１のデータ領域を含む第１のデータブロックに対して、ノンスの設定先とするノンス領域を逐次追加しながら、前記設定処理を１以上の所定数回繰り返し行い、前記設定処理により、設定先とした前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの前記ノンス領域を含む所定のデータ領域である暗号化対象領域に対して、自装置の秘密鍵を用いた暗号化を行い、１回目の設定処理で、設定先とされた前記ノンス領域と前記第１のデータ領域とを含む前記第１のデータブロックから得られる前記処理値が前記規則を満たすように、前記ノンス領域にノンスを設定し、２回目以降の設定処理で、設定先とされた前記ノンス領域と直前の暗号化によって得られた暗号データが設定された暗号データ領域とを少なくとも有する新たな第１のデータブロックに対して、当該第１のデータブロックから得られる前記処理値が前記規則を満たすように、前記ノンス領域にノンスを設定し、前記設定処理を前記所定数分行った結果として、最後の暗号化によって得られた暗号データを少なくとも含むデータブロックを出力する前記ノンス設定手段を備える前記検証情報付与装置から出力された前記データブロックである第２のデータブロックを検証する検証装置であって、
前記検証手段は、前記第１の検証処理と前記第２の検証処理とをこの順番で前記所定数回繰り返し行い、
前記検証手段は、各回の第１の検証処理で、前記第２のデータブロックまたは前回の第１の検証処理で得られた新たな第２のデータブロックに含まれる暗号データを、前記公開鍵を用いて復号し、復号結果を検証するとともに、前記復号により得られた元データを少なくとも含む新たな第２のデータブロックを得て、
前記検証手段は、各回の第２の検証処理で、直前の第１の検証処理により得られた前記新たな第２のデータブロックから得られる前記処理値が規則を満たすか否かを検証する
請求項１１記載の検証装置。
【請求項１５】
検証情報付与装置と、検証装置とを備え、
前記検証情報付与装置は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは前記第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、前記第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、前記ノンス領域に値を設定して実際に前記処理値を計算することにより前記ノンスを設定する設定処理を行うノンス設定手段を含み、
前記ノンス設定手段は、前記設定処理で前記ノンス領域に値を設定する度に、または前記設定処理により前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行い、
前記検証装置は、前記検証情報付与装置から出力される前記データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックに対して、前記第２のデータブロックの生成元の前記検証情報付与装置の公開鍵を用いて前記第２のデータブロックに含まれる前記処理データを検証する第１の検証処理と、前記規則に基づいて前記第２のデータブロックもしくは前記第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を有する
ことを特徴とする情報管理システム。
【請求項１６】
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは前記第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、前記第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、前記ノンス領域に値を設定して実際に前記処理値を計算することにより前記ノンスを設定する設定処理を、１以上の所定数回行うとともに、
前記設定処理で前記ノンス領域に値を設定する度に、または前記設定処理により前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う
ことを特徴とする検証情報付与方法。
【請求項１７】
コンピュータに、
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは前記第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、前記第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、前記ノンス領域に値を設定して実際に前記処理値を計算することにより前記ノンスを設定する設定処理を実行させるとともに、
前記設定処理で前記ノンス領域に値を設定する度に、または前記設定処理により前記ノンス領域に前記規則を満たすノンスが設定される度に、前記第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を実行させる
ための検証情報付与プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの正当性を判定するための検証情報付与装置、検証装置、情報管理システム、検証情報付与方法および検証情報付与プログラムに関する。
【背景技術】
【０００２】
障害が起きた場合や悪意のある端末が存在する場合にも、サービスを継続して提供したいという要望がある。このような要望に対して、例えば、ブロックチェーン技術を活用することが考えられる。【０００３】
ブロックチェーンは、一般に、特定の集中管理サーバに依存せず、分散的に動作する。また、改ざんが困難な台帳をシステム内の端末で共有し、データやアプリケーション情報、その他の管理情報や認証情報などの検証に用いることができる。【０００４】
ブロックチェーンの改ざん困難性を実現する方法として、例えば、ＰｏＷ（Proof of Work）と呼ばれるコンセンサスアルゴリズムが用いられている。【０００５】
ＰｏＷでは、あるデータについて、そのデータを一方向性関数により処理したときに得られる値が予め決められた規則を満たすように、当該データ内に含まれるノンス領域に設定する値を探す処理（以降、単にノンスを探す処理と呼ぶ）が行われる。【０００６】
このとき、一方向性関数として、例えば、ハッシュ関数を用いることができる。また、そのときの規則を、「ハッシュ値が閾値（ターゲット値）以下であること」とすることができる。一般に、ノンスを探す処理は一方向性関数の性質から効率良く行うことができないため、当該処理を行う装置は、実際にはノンスに適当な値を設定して規則を満たすか否かを確認する作業を繰り返すこととなる。このような設定と確認の作業を多くのノードに並列して行わせ、最も早く規則を満たすノンスを見つけたノードが他のノードに情報を発信することにより、当該情報に基づいて全ノードに当該ノンスの値を含むデータの状態を確定させる（コンセンサスをとる）。【０００７】
ＰｏＷの特徴としては、仕事量（ハッシュ計算）に基づいてコンセンサスをとるため、一般に、総計算能力に依存した安全性となる点や、ノード数を増やしやすい点が挙げられる。また、ＢＦＴベースのアルゴリズムの特徴としては、投票形式でコンセンサスをとるため、一般に、総端末数に依存した安全性となる点や、ノード数を増やせない点が挙げられる。【０００８】
なお、ブロックチェーンは、だれでも参加可能なパブリック型と、決められた組織内のノードのみが参加できるプライベート型の２つに大別される。【０００９】
ブロックチェーンにおける改ざん耐性に関して、例えば、特許文献１には、公開鍵暗号方式とハッシュ関数を用いたデジタル署名によって取引情報の完全性を担保したオープン型ブロックチェーンの例が示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１６−２１８６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、主にプライベート型であってＰｏＷベースのブロックチェーンを想定する。以下、プライベート型ブロックチェーンの改ざん耐性を論じる前に、まず、一般的なブロックチェーンのデータ構造および改ざん耐性について説明する。【００１２】
図２８は、一般的なブロックチェーンのデータ構造の例を示す説明図である。図２８に示すように、ブロックチェーンは、ブロックと呼ばれる所定のデータ構造を備えたデータを繋げた構成をとる。また、各ブロックは、前のブロックのハッシュ値、ノンス、当該ブロックに格納するデータを含む。例えば、ブロックｎは、ブロックｎ−１のハッシュ値と、ノンスｎと、データｎとを含む。なお、データｎは、取引情報など、任意のデータでよい。【００１３】
ここで、ノンスは、当該ブロックチェーンの改ざん耐性に影響する検証情報であり、具体的には、ＰｏＷの過程で設定される検証情報としての役割を持つ。【００１４】
次に、そのようなブロックチェーンにおける一般的なブロック追加の流れを説明する。ブロックは、例えば、以下の（１）〜（５）のような動作が行われることにより、ブロックチェーンに追加される。【００１５】
（１）ブロックチェーンに情報を記録したい端末は、該情報を当該ブロックチェーンに参加している端末のいずれかまたはその全てに通知する。
（２）各端末は通知された情報の整合性をチェックし、問題がなければブロックを生成する。
（３）各端末は生成されたブロックについてＰｏＷを開始する。
（４）ＰｏＷを終了した端末は、当該ＰｏＷで発見されたノンスを設定したブロックを全ての端末に通知する。
（５）ノンスが設定されたブロックを通知された端末は、ハッシュ値や、ブロックに記憶されている情報の整合性をチェックし、問題なければ自身が管理しているブロックチェーンの末尾にブロックを追加する。【００１６】
なお、上記の（２）の動作において、通知された情報の整合性のチェック方法は、当該ブロックチェーンを利用するアプリケーションに依存する。また、ブロックを生成する際に、複数の情報を１つのブロックにまとめることが可能である。【００１７】
また、上記の（３）のＰｏＷ動作において、各端末は、さらに次の動作を行う。
（３−１）各端末は、まず生成したブロックにランダムなノンス（ノンスの候補）を設定する。
（３−２）次いで、各端末は、ブロックのハッシュ値が所定の規則を満たすか（例えば、あるターゲット値以下であるか）を確認する。
（３−３）規則を満たしていれば、処理を終了し、満たしていなければ、設定したノンスを変更し、（３−２）に戻る。【００１８】
なお、情報が通知された全ての端末が上記の（３）のＰｏＷ動作を同時に平行して行う。そして、ＰｏＷを最も早く終了した端末は、ブロックチェーンにブロックを追加する権利を得た端末とみなされる。【００１９】
図２９は、ブロックチェーンの改ざん耐性を説明するための説明図である。図２９に示すように、ある端末が過去のブロックに書き込まれた情報（図中の"block n"の"data n"）を改ざんしたとする。すると、当該ブロックのハッシュ値が変化するため、変化後のハッシュ値がターゲット値を超えた場合には、任意の検証タイミングで改ざんが検出される。したがって、改ざんを検出されないようにするためには、当該ブロックのノンス（図中の"nonce n"）を再設定し、ターゲット値以下にする必要がある。【００２０】
しかし、当該ブロックのハッシュ値が変化することにかわりないため、次ブロックに含まれる「前ブロックのハッシュ値」（図中の"block n+1"の"Hash(block n)"）と一致しなくなる。このため、当該ブロックだけでなく、以降の全てのブロックのノンスを再設定する必要がある。一般に、改ざんのためには、膨大の計算量（ブロックチェーンを管理するノードの総計算量の５０％以上）が必要になると言われている。【００２１】
プライベート型ブロックチェーンの場合、ブロックチェーンを管理するノードの総計算量は限られる。このため、プライベート型ブロックチェーンを利用するシステムの多くでは、各ノードに認証用の秘密鍵と他のノードの公開鍵とを持たせ、自身が登録したブロックに自ノードの秘密鍵を用いて署名等を行わせることで、他の端末が改ざんできないようにしている。【００２２】
しかし、このような秘密鍵を用いた対策を行っても、ウィルスに感染する等によってシステム内に悪意のノードが存在した場合には、改ざんされるおそれがある。図３０は、プライベート型ブロックチェーンの改ざんの一態様を示す説明図である。図３０に示すように、ブロックチェーンを管理している情報管理システム３００内のあるノード３０−１が、外部サーバ９０（例えば、クラウド上の高速な計算リソースを提供するサーバ）と繋がると、該外部サーバ９０にノンスが未設定のブロックを送信してＰｏＷを行わせることができる。そして、外部サーバ９０が発見したノンスを含むブロックを受信して、あたかも自ノードがノンスを発見したかのように他のノードに当該ブロックを通知する。【００２３】
なお、外部サーバ９０は１台に限らず、その先にいくつものサーバと接続可能である。したがって、外部サーバ９０の計算量が、情報管理システム３００内の総計算量の５０％を超えると、ブロックチェーンの改ざんが可能になる。【００２４】
なお、ブロックチェーンの規則の１つに、複数のノードが同時にＰｏＷを終えた場合など、複数のチェーンが存在する状況となった場合には、より長いチェーンを信頼する（Longgest rule）というものがある。これは、長いチェーンは多くの計算量が費やされているチェーンと言えることから、多くの管理ノードが承認したチェーンとみなせるからである。【００２５】
悪意のあるノードが存在した場合、不正な情報を記録したブロックをチェーンに追加しようとするが、正常なノードはそのようなブロックを拒絶する。図３１は、悪意のあるノードが不正なブロックを追加した場合のその後の挙動の一例を示す説明図である。図３１に示す例は、ノード３０−１が不正なブロックＢ１０１を追加しようとした例である。当該ブロックＢ１０１を、協働する悪意のあるノード３０−３に送れば、当該ブロックＢ１０１は、ノード３０−３が保持するブロックチェーンに追加されるが、正常なノードであるノード３０−２やノード３０−４に送れば、拒絶される。すると、システム内でブロックチェーンの分岐が発生し、外部のノードからは、２通りのブロックチェーンが存在するように見える。このとき、外部のノードは、より長いブロックチェーンを信頼する。【００２６】
しかし、悪意のあるノードが、上述したように外部の計算リソースを利用して正常なノード群によるブロック追加にかかる所要時間よりも短い時間で、以降のブロックを追加できてしまうと、当該ブロックチェーンは乗っ取られてしまう。【００２７】
このように、システム内の悪意あるノードと、外部サーバとが結託すると、悪意あるノードが不正なブロックを登録したり、既に登録済みの自ノードの署名付きブロックを改ざんできてしまう可能性がある。【００２８】
なお、上記の問題は、プライベート型に限らず、複数のノードがＰｏＷを行って情報を登録するようなシステムにおいて、悪意あるノードが自身のＰｏＷの計算量を上げるために外部の計算リソースを使用した場合にも、同様に発生する。【００２９】
本発明は、上記の問題に鑑み、複数のノードがＰｏＷを行って情報を共有するシステムにおける該共有情報の改ざん耐性を向上させることを目的とする。
【課題を解決するための手段】
【００３０】
本発明による検証情報付与装置は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段を備え、ノンス設定手段は、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行うことを特徴とする。【００３１】
また、本発明による検証装置は、検証情報付与装置から出力された、データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックを検証する検証装置であって、第２のデータブロックの生成元の検証情報付与装置の公開鍵を用いて第２のデータブロックに含まれる処理データを検証する第１の検証処理と、規則に基づいて第２のデータブロックもしくは第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を備えたことを特徴とする。【００３２】
また、本発明による情報管理システムは、検証情報付与装置と、検証装置とを備え、検証情報付与装置は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段を含み、ノンス設定手段は、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行い、検証装置は、検証情報付与装置から出力されるデータ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックに対して、第２のデータブロックの生成元の検証情報付与装置の公開鍵を用いて第２のデータブロックに含まれる処理データを検証する第１の検証処理と、規則に基づいて第２のデータブロックもしくは第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を有することを特徴とする。【００３３】
また、本発明による検証情報付与方法は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を、１以上の所定数回行うとともに、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行うことを特徴とする。【００３４】
また、本発明による検証情報付与プログラムは、コンピュータに、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を実行させるとともに、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を実行させることを特徴とする。
【発明の効果】
【００３５】
本発明によれば、複数のノードがＰｏＷを行って情報を共有するシステムにおける該共有情報の改ざん耐性を向上できる。
【図面の簡単な説明】
【００３６】
【図１】第１の実施形態の情報管理システムの例を示す構成図である。
【図２】第１の実施形態の管理ノードの構成例を示すブロック図である。
【図３】第１の実施形態のブロックのデータ構造の一例を示す説明図である。
【図４】管理ノード１０の検証情報付与動作の一例を示すフローチャートである。
【図５】第１の実施形態の署名対象領域Ａ４の例を示す説明図である。
【図６】第１の実施形態の規則対象領域Ａ５の例を示す説明図である。
【図７】管理ノード１０のブロック検証動作の一例を示すフローチャートである。
【図８】第１の実施形態の管理ノードの他の構成例を示すブロック図である。
【図９】第１の実施形態のブロックのデータ構造の他の例を示す説明図である。
【図１０】第１の実施形態の暗号化対象領域Ａ６および暗号データ領域Ａ６’の例を示す説明図である。
【図１１】第１の実施形態の規則対象領域Ａ５の他の例を示す説明図である。
【図１２】管理ノード１０の検証情報付与動作の他の例を示すフローチャートである。
【図１３】管理ノード１０のブロック検証動作の他の例を示すフローチャートである。
【図１４】第２の実施形態のブロックのデータ構造の例を示す説明図である。
【図１５】第２の実施形態の規則対象領域Ａ５−ｋの例を示す説明図である。
【図１６】第２の実施形態の署名対象領域Ａ４−ｋの例を示す説明図である。
【図１７】第２の実施形態の検証情報付与動作の一例を示すフローチャートである。
【図１８】第２の実施形態による検証情報付与動作にかかる所要時間と、外部サーバを利用した場合の所要時間との関係を示す説明図である。
【図１９】第２の実施形態のブロック検証動作の一例を示すフローチャートである。
【図２０】第３の実施形態の暗号化対象領域Ａ６の例を示す説明図である
【図２１】第３の実施形態の規則対象領域Ａ５の例を示す説明図である
【図２２】第３の実施形態の検証情報付与動作の例を示すフローチャートである。
【図２３】第３の実施形態のブロックのデータ構造の例を示す説明図である
【図２４】第３の実施形態のブロック検証動作の一例を示すフローチャートである。
【図２５】復号動作の繰り返しによるブロックの展開例を示す説明図である。
【図２６】本発明の実施形態にかかるコンピュータの構成例を示す概略ブロック図である。
【図２７】本発明の情報検証システムの概要を示すブロック図である。
【図２８】一般的なブロックチェーンのデータ構造の例を示す説明図である。
【図２９】ブロックチェーンの改ざん耐性を説明するための説明図である。
【図３０】プライベート型ブロックチェーンの改ざんの一態様を示す説明図である。
【図３１】プライベート型ブロックチェーンの改ざんの一態様を示す説明図である。
【発明を実施するための形態】
【００３７】
まず、本発明の技術コンセプトを簡単に説明する。本発明は、悪意あるノードによる外部リソースの使用を抑制するために、各ノードが、ＰｏＷにおいて、ノンスが設定されたブロックを生成しおえるまでに、当該ノードの秘密鍵を用いた所定のデータ処理（署名の付与や暗号化）を１回以上行うようにする。そして、ＰｏＷを得て生成されるブロックに、そのようなデータ処理の結果得られるデータ（署名や暗号データ）を含ませることにより、規則を満たすよう設定されたブロックのハッシュ値だけでなく、該データを用いて、ブロックの正当性を検証できるようにする。
【００３８】
例えば、各ノードは、あるデータに関して、当該データを一方向性関数によって処理した値である処理値（ハッシュ値）が規則を満たすように、当該データに含まれる所定のノンス領域に設定する値であるノンスを繰り返し変更して試行する度に、上記のデータ処理を行ってもよい。その場合、各ノードは、検証時に、当該データ処理後のデータに対して、規則を満たすか否かを判定すればよい。
【００３９】
例えば、データ処理が署名の付与または暗号化であれば、各ノードは、ノンスを設定する処理において、次のような処理を繰り返し行えばよい。
【００４０】
・ノンス領域にノンスの候補を設定する処理
・ノンスの候補を含むデータに対して署名または暗号化を行う処理
・署名または暗号化を行ったデータの処理値を計算する処理
・処理値が規則を満たしているか否かを判定する処理
【００４１】
また、例えば、各ノードは、ノンスを探索して設定する処理を１回以上繰り返し行う中で、直前に決定されたノンスを含むデータに対してデータ処理（署名や暗号化）を行ってもよい。その場合、各ノードは、各回の処理で、少なくとも直前に行ったデータ処理の結果得られたデータ（署名や暗号データ）を含むデータに対して上記のデータ処理を行いつつ、２回目以降の処理で、少なくとも直前に行ったデータ処理の結果得られたデータを含むデータに対して、規則を満たすか否かを判定すればよい。
【００４２】
例えば、データ処理が署名であれば、各ノードは、１つのブロックに対して１以上の所定数のノンスを設定する処理として次のような処理を繰り返し行えばよい。
【００４３】
・それ以前に行った署名を少なくとも含むデータが規則を満たすように、所定のノンス領域にノンスを設定する処理
（なお、最初のノンスを設定する処理は通常処理でよい）
・設定されたノンスを含むデータに対して署名を行う処理
【００４４】
例えば、各ノードは、設定対象とするノンス領域を順番に指定しながら、上記２つの処理を繰り返せばよい。
【００４５】
また、例えば、データ処理が暗号化であれば、各ノードは、１つのブロックに対して１以上の所定数のノンスを設定する処理として次のような処理を繰り返し行えばよい。
【００４６】
・直前に暗号化されたデータが規則を満たすようにノンスを設定する
（なお、最初のノンスを設定する処理は通常処理でよい）
・設定されたノンスを含むデータに対して暗号化を行う処理
【００４７】
例えば、各ノードは、設定対象とするノンス領域を順番に指定しながら、上記２つの処理を繰り返せばよい。
【００４８】
このように、ＰｏＷに署名や暗号化といった秘密鍵を用いたデータ処理を含ませることにより、外部サーバだけでＰｏＷを完結できないようにし、外部サーバを利用することの優位性を低減させる。例えば、ＰｏＷを完結するまでにかかる平均時間が、外部サーバを利用した場合と比べて、自ノードのみで行う場合の方が小さければ、外部サーバの利用を抑制する効果が得られる。
【００４９】
次に、本発明の実施形態を図面を参照して説明する。
【００５０】
実施形態１．
図１は、第１の実施形態の情報管理システムの例を示す構成図である。図１に示す情報管理システム１００は、複数の管理ノード１０を備える。本例では、検証情報付与装置と検証装置の両方の機能を備えたノードとして管理ノード１０を複数備えている。すなわち、管理ノード１０の各々は、本発明の検証情報付与装置および検証装置として動作する。
【００５１】
なお、情報管理システム１００は、検証情報付与装置と検証装置とを別々に備えていてもよい。
【００５２】
本実施形態において、管理ノード１０の各々は、システム内のネットワークであるシステムネットワーク２００を介して相互に接続されている。システムネットワーク２００は、外部のネットワークに接続されていてもよいが、ファイアウォールを介すなど、セキュリティ対策がなされていることが好ましい。
【００５３】
図２は、第１の実施形態の管理ノードの構成例を示すブロック図である。図１に示す管理ノード１０は、ブロックチェーン部１１と、耐タンパ領域１２とを備える。また、ブロックチェーン部１１は、ブロック共有部１０１と、コンセンサス部１０２と、検証部１０３とを含む。また、耐タンパ領域１２は、署名部１０４を含むとともに、自ノードの秘密鍵を保持する。なお、図示省略しているが、管理ノード１０は、自システムの他の管理ノードの公開鍵を保持しているものとする。なお、公開鍵の保持方法は特に問わない。
【００５４】
ブロックチェーン部１１は、当該管理ノード１０が属するシステム内で、ブロックチェーンを共有、管理するための処理を行う。
【００５５】
ブロック共有部１０１は、自ノードが生成したブロックを他の管理ノード１０に送信したり、他の管理ノード１０が生成したブロックを受信するなど、他の管理ノード１０との情報共有を行う。また、ブロック共有部１０１は、ブロックに登録する情報を受信すると、受信した情報（登録情報）と、前ブロックのハッシュ値（前ブロック管理情報）を設定したブロック（他の領域は未設定）を生成し、コンセンサス部１０２に通知する機能を有していてもよい。
【００５６】
コンセンサス部１０２は、ブロックチェーンにブロックを追加する際のＰｏＷを実行する。なお、コンセンサス部１０２におけるＰｏＷの詳細な動作については後述する。
【００５７】
検証部１０３は、他の管理ノード１０が生成したブロックを検証する。なお、検証部１０３における検証動作については後述する。
【００５８】
署名部１０４は、入力されたデータに対して自ノードの秘密鍵を用いて署名（電子署名）を付与する。このとき、秘密鍵は、耐タンパ領域１２内に格納されており、耐タンパ領域１２の外には持ち出せないようになっている。
【００５９】
耐タンパ領域１２を実現する方法としては、セキュリティチップ（Trusted Platform Module, TPM）が挙げられる。この他にも、ＩＣ（Integrated Circuit）カードやドングル（Dongle）と呼ばれる取り付け式の小型装置などのように、ノードの本体である情報処理装置からハードウェア的に切り離された領域のデバイスや、TrustZone、Intel SGX（Software Guard Extensions）、TEE（Trusted Execution Environment）などに代表されるプロセッサユニット上のセキュリティ領域などによっても実現可能である。このように、耐タンパ領域１２は、ハードウェア的に他の処理領域と隔離されたものであってもよいし、ソフトウェア的に他の処理領域と隔離されたものであってもよい。
【００６０】
署名部１０４は、このように他の処理領域と隔離された耐タンパ領域１２内に置かれ、耐タンパ領域１２内で、入力されたデータに対して署名の付与を行う。より具体的には、秘密鍵を用いて、入力データに応じた電子署名を生成して、出力する。
【００６１】
なお、図１では、図示省略しているが、管理ノード１０は、システムが管理するブロックチェーンの複製を記憶する記憶部を備えていてもよい。
【００６２】
本実施形態において、ブロック共有部１０１、コンセンサス部１０２、検証部１０３および署名部１０４は、コンピュータまたはそれに装着される装置が備えるＣＰＵ等、プログラムに従って動作する情報処理装置により実現される。
【００６３】
図３は、本実施形態のブロックのデータ構造の一例を示す説明図である。図３に示すように、本実施形態のブロックＢ１のデータ構造は、登録情報Ｄ１１などが設定（格納）されるデータ領域Ａ１と、ノンスが設定されるノンス領域Ａ２と、署名が設定される署名領域Ａ３とを有する。データ領域Ａ１に設定するデータは特に限定されない。例えば、図２に示すように、データ領域Ａ１には、登録情報と前ブロック管理情報とが設定されてもよい。本実施形態では、データ領域Ａ１を、ＰｏＷにより改ざんを防止したい任意のデータが設定される領域と定義する。
【００６４】
なお、図３では、四角形の枠が領域を表し、枠内の符号がその領域に設定されるデータを表している。なお、説明のため、枠横には該データの名称を付している。以下、枠内が空白の場合は、その領域にデータが未設定である（該領域における初期値が設定されている）ことを表し、空白以外の場合はその領域に設定されるデータの内容（値）を表すものとする。
【００６５】
次に、本実施形態の動作を説明する。まず、本発明の検証情報付与装置に相当する部分であるコンセンサス部１０２および署名部１０４による検証情報付与動作を説明する。図４は、管理ノード１０の検証情報付与動作の一例を示すフローチャートである。なお、本図では、フローチャートの各ステップに対応するブロックの状態も併せて示している。なお、黒塗り部分が、そのステップでの処理対象のデータ領域であることを表している。
【００６６】
図４に示す例では、まず、ブロック共有部１０１が、ブロックを生成する（ステップＳ１０１）。本例では、ブロック共有部１０１は、データ領域Ａ１に前ブロック管理情報Ｄ１１と登録情報Ｄ１２とを設定したブロックＢ１を生成すればよい。このとき、ブロック共有部１０１は、ノンス領域Ａ２および署名領域Ａ３については未設定とする。
【００６７】
次いで、コンセンサス部１０２が、ステップＳ１０１で生成したブロックのノンス領域Ａ２に、ノンスの候補を設定する（ステップＳ１０２）。
【００６８】
ステップＳ１０２の後、コンセンサス部１０２は、生成されたブロックの署名対象領域Ａ４に設定されたデータを指定して、署名部１０４に署名の生成を依頼する。署名部１０４は、コンセンサス部１０２からの依頼に基づき、指定されたデータに対する署名を生成する（ステップＳ１０３）。
【００６９】
なお、署名対象領域Ａ４は、署名の付与対象とされるデータ領域、すなわち署名により保護されるデータ領域を表す。
【００７０】
署名部１０４は、例えば、対象とされたデータを一方向性関数により処理してメッセージダイジェストを生成し、生成されたメッセージダイジェストに対して自ノードの秘密鍵を用いて暗号化を行い、得られた暗号文を署名としてもよい。なお、署名の生成方法は特に限定されず、対象とされたデータに対して秘密鍵を用いた変換処理が行われればよい。
【００７１】
ここで生成された署名は、署名領域Ａ３に設定される。本発明では、このようなコンセンサス部１０２が署名部１０４にブロックの署名対象領域Ａ４に設定されたデータを指定して署名を生成させ、生成された署名をブロックの署名領域Ａ３に設定する動作を、「署名の付与」と呼ぶ。
【００７２】
図５は、本実施形態のブロックＢ２の署名対象領域Ａ４の例を示す説明図である。図５に示すように、署名対象領域Ａ４は、少なくともノンス領域Ａ２を含む。なお、署名対象領域Ａ４は、ノンス領域Ａ２だけであってもよいし（図５（ａ）参照）、他の全ての領域（すなわち、ノンス領域Ａ２とデータ領域Ａ１）を含んでいてもよい（図５（ｂ）参照）。
【００７３】
署名の付与が終わると、コンセンサス部１０２が、規則対象領域Ａ５に設定されたデータを用いて、ハッシュ値Ｄ４を計算する（ステップＳ１０４）。また、ここで計算されるハッシュ値Ｄ４は、上記の処理値に相当する。なお、規則対象領域Ａ５は、処理値の算出に用いるデータ領域を表す。
【００７４】
図６は、規則対象領域Ａ５の例を示す説明図である。図６に示すように、規則対象領域Ａ５は、ブロック全体、すなわちデータ領域Ａ１とノンス領域Ａ２と署名領域Ａ３とを含む。
【００７５】
次いで、コンセンサス部１０２は、求めた処理値が所定の規則を満たすか否か（例えば、ターゲット閾値以下か否か）を確認する（ステップＳ１０５）。規則を満たす場合、ステップＳ１０６に進み、ノンスの設定処理を終了する。一方、コンセンサス部１０２は、規則を満たさない場合、ステップＳ１０２に戻り、ノンスの設定処理を繰り返す。すなわち、コンセンサス部１０２は、ノンス領域Ａ２に設定されたノンス（候補）を調整して、規則対象領域Ａ５から得られた処理値が規則を満たすまで、上述した動作を繰り返す。なお、コンセンサス部１０２は、この間に、他の管理ノード１０からノンスが設定されたブロックが通知された場合はノンスの設定処理を中止してもよい。
【００７６】
ステップＳ１０６で、コンセンサス部１０２は、処理値（ハッシュ値Ｄ４）が規則を満たしたときのブロックを、ノンス設定済みのブロックとして出力する。
【００７７】
なお、出力されたブロックは、ブロック共有部１０１によって管理ノード１０の各々に通知され、各々の管理ノード１０が保持するブロックチェーンに追加される（ブロック共有処理）。
【００７８】
次に、本発明の検証装置に相当する部分である検証部１０３によるブロック検証動作を説明する。図７は、管理ノード１０のブロック検証動作の一例を示すフローチャートである。なお、本図においても、フローチャートの各ステップに対応するブロックの状態を併せて示している。
【００７９】
図７に示す例では、まず、ブロック共有部１０１が、ノンス設定済みのブロックを受信する（ステップＳ２０１）。本例では、ブロック共有部１０１は、全てのデータ領域に正しい値が設定されたとされるブロックＢ１を受信する。
【００８０】
次いで、検証部１０３が、ステップＳ２０１で受信したブロックに対して、規則に基づく検証を行う（ステップＳ２０２）。検証部１０３は、当該ブロックの規則対象領域Ａ４に設定されたデータを対象に、該データに対して一方向性関数を適用して得られるハッシュ値Ｄ４（処理値）が所定の規則を満たすか否か（例えば、ターゲット閾値以下か否か）を判定すればよい。
【００８１】
本発明では、このようなノンス領域を含むデータ領域（上記の規則対象領域Ａ４）に関して、当該データ領域に設定されたデータを一方向性関数によって処理した値（処理値）が規則を満たしているか否かを判定する動作を、「規則に基づく検証」と呼ぶ。
【００８２】
なお、規則対象領域Ａ４には、データ領域Ａ１、ノンス領域Ａ２および署名領域Ａ３が含まれているため、当該規則を満たすことにより、検証情報付与側において署名Ｄ３が付与された後に規則の判定が行われたことが確認できる。すなわち、当該ブロックの署名Ｄ３が、ノンスの探索を完了した後ではなく、少なくとも当該ノンスが規則を満たすことが確認される前に付与されたものであることが確認できる。
【００８３】
検証部１０３は、規則に基づく検証の結果、処理値が規則を満たしていれば（ステップＳ２０３のＹｅｓ）、続いて署名に基づく検証を行うためステップＳ２０４に進む。一方、処理値が規則を満たしていなければ（ステップＳ２０３のＮｏ）、当該ブロックは正規のブロックではないとして処理を終了する（ＮＧ判定による終了）。
【００８４】
ステップＳ２０４で、検証部１０３は、署名対象領域Ａ４に対して、署名に基づく検証を行う。より具体的には、検証部１０３は、署名対象領域Ａ４に設定されたデータに対して、署名領域Ａ３に設定された署名Ｄ３と当該ブロックの生成者の公開鍵とを用いて検証を行う。
【００８５】
検証部１０３は、例えば、署名Ｄ３を、ブロックの生成者の公開鍵を用いて復元して得られたメッセージダイジェストと、署名対象領域Ａ４に設定されたデータに対して一方向性関数により処理した値とを比較し、一致した場合に当該データが正規の署名者によって署名された正規データであるとする（検証ＯＫ）。一方、一致しなかった場合には、当該データが正規の署名者によって署名された正規データではないとする（検証ＮＧ）。なお、署名の検証方法は特に限定されず、署名部１０４が行う署名の生成方法に対応しており、かつ生成者の秘密鍵と対となる公開鍵を用いた変換処理を伴うものであればよい。
【００８６】
本発明では、このようなブロックの署名対象領域Ａ４に設定されたデータに対して、同じブロックの署名領域Ａ３に設定された署名Ｄ３と当該ブロックの生成者の公開鍵とを用いて、変換処理を行い、該データの正当性を判定する動作を「署名に基づく検証」と呼ぶ。
【００８７】
署名対象領域Ａ４には、少なくともノンス領域Ａ２が含まれていることから、署名に基づく検証を行うことで、署名Ｄ３が、ノンスＤ２の設定後に付与されたものか否かを確認することができる。
【００８８】
次のステップＳ２０５で、検証部１０３は、署名に基づく検証の結果、対象とされたデータが正規データと判定されれば（ステップＳ２０５のＹｅｓ）、当該ブロックは正規のブロックであるとして処理を終了する（ＯＫ判定による終了）。一方、正規データでないと判定された場合（ステップＳ２０５のＮｏ）、当該ブロックは正規のブロックではないとして処理を終了する（ＮＧ判定による終了）。
【００８９】
このように、規則に基づく検証と署名に基づく検証とを併せて用いることにより、当該ブロックの署名Ｄ３が、ノンスの探索を完了した後でもノンスの探索を開始する前でもなく、ノンスの探索の度に付与されたものであり、正規の手順を沿って設定されたものであることを確認できる。
【００９０】
なお、上記の検証終了時の判定結果は、最終的な検証結果として当該検証動作の依頼元に出力されてもよい。なお、検証部１０３は、ＯＫ判定による終了の前に、さらに、前ブロック管理情報に基づく検証を行ってもよい。
【００９１】
なお、上記の例では、規則に基づく検証の後に署名に基づく検証を行ったが、これらの順序は特に問わない。例えば、署名に基づく検証の後に規則に基づく検証を行ってもよいし、これらを並列で行うことも可能である。
【００９２】
また、本実施形態では、検証情報付与動作において署名の付与に代えて暗号化を行ってもよい。
【００９３】
図８は、本実施形態の管理ノードの他の構成例を示すブロック図である。図８に示すように、管理ノード１０は、署名部１０４に代えて、暗号化部１０５を備えていてもよい。
【００９４】
なお、本例の暗号化部１０５は、他の処理領域と隔離された耐タンパ領域１２内に置かれ、耐タンパ領域１２内で、入力されたデータに対して暗号化を行う。暗号化の方法は特に限定されず、指定されたデータに対して秘密鍵を用いた変換処理が行われ、その結果として当該秘密鍵と対となる公開鍵によらなければ復号できないデータを生成できればよい。
【００９５】
本例のコンセンサス部１０２は、署名部１０４で行わせていた署名の付与動作に代えて、暗号化部１０５に暗号化対象領域Ａ６に対する暗号化を行わせればよい。ここで、暗号化対象領域Ａ６は、ブロック内の暗号化の対象とされる領域であって、上記の署名対象領域Ａ４と同様とされる。
【００９６】
また、本例の検証部１０３は、署名に基づく検証動作に代えて、暗号データ領域Ａ６’に対して、ブロックの生成者の公開鍵を用いた復号による検証を行えばよい。ここで、暗号データ領域Ａ６’は、暗号化部１０５によって暗号化された暗号データが設定される領域であり、上記の暗号化対象領域Ａ６に代えて暗号化後のブロック（暗号ブロック）に備えられるものである。
【００９７】
図９は、本例のブロックのデータ構造の一例を示す説明図である。図９に示すように、署名に代えて暗号化を用いる場合のブロックであるブロックＢ２は、署名を用いる場合のブロックＢ１と比べて、署名領域Ａ３が省略されている点が異なる。なお、図９に示すデータ構造は、ブロックの暗号化前のデータ構造である。以下では、暗号化前のブロックを平文ブロックといい、暗号化後のブロックを暗号ブロックという場合がある。
【００９８】
図１０は、本例のブロックにおける暗号化対象領域Ａ６および暗号データ領域Ａ６’の例を示す説明図である。なお、図１０（ａ）および図１０（ｂ）は、平文ブロックＢ２の一例を示し、図１０（ｃ）および図１０（ｄ）は、暗号ブロックＢ２’の一例を示している。なお、図１０（ａ）の平文ブロックの暗号化後が図１０（ｃ）の暗号ブロックに相当し、図１０（ｂ）の平文ブロックの暗号化後が図１０（ｄ）の暗号ブロックに相当する。
【００９９】
図１０（ａ）および図１０（ｂ）に示すように、平文ブロックにおいて暗号化対象領域Ａ６は、少なくともノンス領域Ａ２を含んでいればよい。
【０１００】
したがって、暗号ブロックにおける暗号データ領域Ａ６’には、少なくともノンス領域Ａ２に設定されたノンスを含むデータから生成された暗号データＤ６が設定される。そして、暗号データ領域Ａ６’は、暗号化前の平文ブロックＢ２において暗号データＤ６の元データ（平文）が設定されていたデータ領域の代わりとして設けられる。なお、本例において、ブロックチェーンに登録されたり、検証の対象とされるのは、暗号ブロックＢ２’である。
【０１０１】
なお、暗号化対象領域Ａ６に関して、暗号化処理で、生成される暗号データに当該暗号化処理を経たデータであることがわかるデータを付与しない場合、次のような問題が生じる場合がある。すなわち、ノンスだけを暗号すると復号処理で該暗号データを復号して得たノンスが暗号化処理を得たかを判断できない可能性がある。そのような場合には、暗号化の対象とするデータに、前ブロック管理情報など、復号データの正しさを復号処理以外で検証できる情報を含ませることが好ましい。例えば、暗号化対象領域Ａ６にデータ領域Ａ１を含ませてもよい。そのようにすれば、復号により得た前ブロック管理情報と、実際の前ブロックから求めたハッシュ値とが一致することで、暗号データＤ６が暗号化処理を得たデータであることを確認できる。
【０１０２】
また、図１１は、本例の暗号ブロックにおける規則対象領域Ａ５の例を示す説明図である。図１１に示すように、規則対象領域Ａ５は、基本的には署名部１０４を含む構成の場合と同様、ブロック全体である。ただし、ここでいうブロックは、暗号ブロックである。該暗号ブロックには、暗号データ領域Ａ６’と、暗号データＤ６を生成した際に暗号化の対象外とされたデータ領域（以下、暗号化対象外領域という）があれば当該データ領域とが含まれる。なお、図１１（ａ）は、暗号化対象外領域がない場合の例であり、図１１（ｂ）は、暗号化対象外領域がデータ領域Ａ１である場合の例である。
【０１０３】
また、図１２は、本例の管理ノード１０の検証情報付与動作の例を示すフローチャートである。図１２に示すように、本例の検証情報付与動作は、署名を用いた検証情報付与動作と基本的には同じである。ただし、「署名に基づく検証」に代えて「復号による検証」を行う。具体的には、本例では、図４におけるステップＳ１０３の署名の付与動作が、ステップＳ１２３の暗号動作に変更になっている点、およびステップＳ１２４で暗号ブロックＢ２’に対してハッシュ値を計算する点が異なる。
【０１０４】
図１２に示す例では、まず、ブロック共有部１０１が、ブロックを生成する（ステップＳ１２１）。本例では、ブロック共有部１０１は、データ領域Ａ１に前ブロック管理情報Ｄ１１と登録情報Ｄ１２とを設定した平文ブロックＢ２を生成すればよい。なお、ノンス領域Ａ２については未設定とする。
【０１０５】
次いで、コンセンサス部１０２が、ステップＳ１０１で生成したブロックのノンス領域Ａ２に、ノンスの候補を設定する（ステップＳ１２２）。
【０１０６】
ステップＳ１２２の後、コンセンサス部１０２は、生成されたブロックの暗号化対象領域Ａ６に設定されたデータを指定して、暗号化部１０５に暗号化を依頼する。暗号化部１０５は、コンセンサス部１０２からの依頼に基づき、指定されたデータに対して暗号化を行う（ステップＳ１２３）。
【０１０７】
暗号化部１０５によって生成された暗号データＤ６を受け取ると、コンセンサス部１０２は、暗号データＤ６と、平文ブロックＢ２において暗号化対象外領域に設定されたデータがあれば該データとを含む新たな暗号ブロックＢ２’を生成する。なお、図１１のステップＳ１２３に付されたブロックの設定例は、暗号化対象外領域がない場合の例である。この場合、暗号ブロックＢ２’は、暗号データＤ６のみが含まれる。なお、本例の暗号データＤ６は、データ領域Ａ１に格納されていた前ブロック管理情報Ｄ１１および登録情報Ｄ１２と、ノンス領域Ａ２に設定されたノンス（の候補）とを含むデータを元データとする暗号データである。
【０１０８】
暗号化が終わると、コンセンサス部１０２は、暗号ブロックＢ２’の規則対象領域Ａ５に設定されたデータを用いて、ハッシュ値Ｄ４を計算する（ステップＳ１２４）。
【０１０９】
以降の処理は、署名を用いた検証情報付与動作と同様である。すなわち、処理値が規則を満たすまでノンス候補の設定および暗号化を繰り返す。
【０１１０】
次に、本例のブロック検証動作を説明する。図１３は、本例の管理ノードによるブロック検証動作の一例を示すフローチャートである。図１３に示すように、本例のブロック検証動作は、署名を用いたブロック検証動作と基本的には同じである。ただし、「署名に基づく検証」に代えて「復号による検証」を行う。具体的には、本例では、図７におけるステップＳ２０４の署名に基づく検証動作が、ステップＳ２２４の復号による検証動作に変更になっている点、およびステップＳ２２２で暗号ブロックに対してハッシュ値を計算する点が異なる。
【０１１１】
図１３に示す例では、まず、ブロック共有部１０１が、検証対象とされるブロックを受信する（ステップＳ２２１）。本例では、ブロック共有部１０１は、全てのデータ領域に正しい値が設定されたとされる暗号ブロックＢ２’を受信する。
【０１１２】
次いで、検証部１０３が、ステップＳ２２１で受信したブロックに対して、規則に基づく検証を行う（ステップＳ２２２）。
【０１１３】
なお、規則対象領域Ａ４には、ノンス領域を暗号化対象領域として含む暗号化処理を経た暗号データ領域Ａ６’が含まれているため、当該規則を満たすことにより、暗号化後に規則の判定が行われたことを確認できる。すなわち、当該ブロックの暗号データＤ６が、ノンスの探索を完了した後ではなく、少なくとも当該ノンスが発見される前に付与されたものであることを確認できる。
【０１１４】
検証部１０３は、規則に基づく検証の結果、処理値が規則を満たしていれば（ステップＳ２２３のＹｅｓ）、続いて復号による検証を行うためステップＳ２２４に進む。一方、処理値が規則をが満たしていなければ（ステップＳ２２３のＮｏ）、当該ブロックは正規のブロックではないとして処理を終了する（ＮＧ判定による終了）。
【０１１５】
ステップＳ２２４で、検証部１０３は、暗号データ領域Ａ６’に対して、復号による検証を行う。より具体的には、検証部１０３は、暗号データ領域Ａ６’に設定された暗号データＤ６に対して、当該ブロックの生成者の公開鍵を用いて復号を行い、復号データを得る。
【０１１６】
検証部１０３は、例えば、得られた復号データが正しい復号データであると確認できた場合に、当該復号データは正規のデータであるとする（検証ＯＫ）。一方、正しい復号データであることが確認できない場合には、当該復号データは正規のデータでないとする（検証ＮＧ）。なお、復号方法および復号データの検証方法は特に限定されず、暗号化部１０５が行う暗号化方法に対応しており、かつ生成者の秘密鍵と対となる公開鍵を用いた変換処理を伴うものであればよい。なお、暗号化方法および復号方法は、復号データと暗号データだけで復号データの正しさが判定できる方法が好ましいが、必ずしもそうでなくてもよい。その場合、検証部１０３は、上述したような前ブロック管理情報などをさらに用いて復号データの正しさを判定すればよい。
【０１１７】
本発明では、このような暗号ブロックＢ２’の暗号データ領域Ａ６’に設定された暗号データＤ６に対して、当該暗号ブロックの生成者の公開鍵を用いて、変換処理を行い、該暗号データから得た復号データの正当性を判定する動作を「復号による検証」と呼ぶ。
【０１１８】
暗号データＤ６を得たときの暗号化対象領域Ａ６には、少なくともノンス領域Ａ２が含まれていることから、復号による検証を行うことで、暗号データＤ６が、ノンスＤ２の設定後に生成されたものか否かを確認することができる。
【０１１９】
次のステップＳ２２５で、検証部１０３は、復号による検証の結果、対象とされたデータが正規データと判定されれば（ステップＳ２２５のＹｅｓ）、当該ブロックは正規のブロックであるとして処理を終了する（ＯＫ判定による終了）。一方、正規データでないと判定された場合（ステップＳ２２５のＮｏ）、当該ブロックは正規のブロックではないとして処理を終了する（ＮＧ判定による終了）。
【０１２０】
このように、規則に基づく検証と復号による検証とを併せて用いることにより、当該ブロックの暗号データＤ６が、ノンスの探索を完了した後でもノンスの探索を開始する前でもなく、ノンスの探索の度に付与されたものであり、正規の手順を沿って設定されたものであることを確認できる。なお、本例の場合、規則に基づく検証の後に復号による検証を行う。
【０１２１】
なお、本実施形態において、署名対象領域Ａ４、規則対象領域Ａ５および暗号化領域Ａ６は、予め本ブロックＢ２を検証する検証装置（本例では、管理ノード１０の各々の検証部１０３）との間で共通に定められているものとする。
【０１２２】
以上のように、本実施形態では、ＰｏＷの処理において、ノンスの探索を行う度すなわちノンス領域Ａ２にノンスの候補を設定する度に、管理ノード１０の秘密鍵を用いたデータ処理を行わなければならないように、ブロックのデータ構造および検証動作を定めている。このため、秘密鍵を有さない外部ノードの計算リソースを、ノンス探索のために利用することができなくなる。したがって、ブロックおよび該ブロックが追加されるブロックチェーンの改ざん耐性を向上できる。
【０１２３】
実施形態２．
次に、本発明の第２の実施形態について説明する。第１の実施形態では、ノンスの候補を設定する度に、署名や暗号化といった秘密鍵を用いたデータ処理を行うことで、外部の計算リソースの利用を抑制した。しかし、第１の実施形態の方法は、規則を満たすノンスが見つかるまで、耐タンパ領域１２で絶えず署名や暗号化が行われることになりかねず、他の処理との間で耐タンパ領域１２の使用が競合する可能性がある。
【０１２４】
そこで、本実施形態では、ブロックに１つ以上の所定数のノンス領域を用意し、ノンス領域の各々に対して通常のＰｏＷ（規則を満たすノンスを探索する）を行う過程で、各ＰｏＷが終了する度に、署名や暗号化を行う。これにより、耐タンパ領域１２でのデータ処理回数を減らす。
【０１２５】
ただし、この方法では、悪意のある管理ノードが、各回のＰｏＷの際に外部の計算リソースを利用することができるようになる。したがって、本実施形態では、１回のＰｏＷが完了する平均所要時間が、外部のサーバとの間の往復伝搬遅延時間＋αに対して小さい値（もしくは同等程度）であるように、各種パラメータが設定される。例えば、システム管理者は、上記の条件が満たされるように、正規ノードのノンス設定にかかる平均所要時間を相対的に小さくできる規則を設定したり、管理ノードの数を調整したり、外部サーバとのネットワークの通信速度をネットワーク構成（有線にする等）やファイアオールなどにより調整するなどの制御を行ってもよい。
【０１２６】
本実施形態のシステム構成および管理ノード１０の構成は、第１の実施形態と同様であるため、以下では異なる部分を主に説明する。
【０１２７】
図１４は、本実施形態のブロックのデータ構造の例を示す説明図である。図１４に示すように、本実施形態で用いるブロックＢ３は、データ領域Ａ１に加えて、所定数（ｎ）のノンス領域Ａ２および署名領域Ａ３を含む。なお、ｎは１でもよい。以下、１番目のノンス領域をＡ１−１、それに対応する１番目の署名領域をＡ３−１というようにハイフン付きの符号で表す。同様に、ノンス領域Ａ１−１に設定されるノンスをノンスＤ２−１、署名領域Ａ２−１に設定される署名を署名Ｄ３−１というように、ハイフン付きの符号で表す。なお、他の領域についても同様とする。
【０１２８】
また、図１５および図１６は、本実施形態のブロックＢ３における各回の規則対象領域Ａ５−ｋおよび各回の署名対象領域Ａ４−ｋの例を示す説明図である。
【０１２９】
図１５（ａ）は、１回目のＰｏＷ（ノンスの探索および設定）における規則対象領域Ａ５−１の例を示す説明図である。図１５（ａ）に示すように、１回目のＰｏＷにおける規則対象領域Ａ５−１は、少なくとも対応する回のノンス領域Ａ２−１とデータ領域Ａ１とを含む。
【０１３０】
また、図１５（ｂ）は、２回目のＰｏＷにおける規則対象領域Ａ５−２の例を示す説明図である。図１５（ｂ）に示すように、規則対象領域Ａ５−２は、少なくとも対応する回のノンス領域Ａ２−２と、直前の署名が格納されている署名領域Ａ３−１とを含む。なお、２回目以降はこれと同様である。すなわち、処理規則領域Ａ５−ｋ（ただし、１＜ｋ≦ｎ）は、少なくとも当該回のノンスが設定されたノンス領域Ａ２−ｋと、直前の署名が格納されている署名領域Ａ３−（ｋ−１）とを含む。
【０１３１】
なお、各回共通の規則対象領域Ａ５として、毎回、その時点でのブロック全体を用いてもよい。
【０１３２】
また、図１６（ａ）および図１６（ｂ）は、ブロックＢ３における１回目のＰｏＷ後の署名対象領域Ａ４−１の例を示す説明図である。図１６（ａ）には、署名対象領域Ａ４−１が、ノンス領域Ａ２−１を含む例が示されている。また、図１６（ｂ）には、署名対象領域Ａ４−１が、ブロック全体（本例ではノンス領域Ａ２−１とデータ領域Ａ１とを含む）とする例が示されている。なお、他の回も同様であり、署名対象領域Ａ４−ｋは、少なくとも直前に設定されたノンスが設定されたノンス領域Ａ２−ｋを含んでいればよい。
【０１３３】
なお、各回共通の署名対象領域Ａ４として、毎回、その時点でのブロック全体を用いてもよい。
【０１３４】
図１７は、本実施形態の検証情報付与動作の一例を示すフローチャートである。なお、図１７に示すステップＳ３０３〜ステップＳ３０５の繰り返し処理が、通常のＰｏＷの動作に相当する。本図でも、フローチャートの各ステップに対応するブロックの状態を併せて示している。
【０１３５】
図１７に示す例では、まずステップＳ３０１で、ブロック共有部１０１が、データ領域Ａ１に前ブロック管理情報Ｄ１１と登録情報Ｄ１２とを設定したブロックＢ３を生成する。このとき、ブロック共有部１０１は、ノンス領域Ａ２−１〜ノンス領域Ａ２−ｎおよび署名領域Ａ３−１〜署名領域Ａ３−ｎについては全て未設定とする。
【０１３６】
次いで、コンセンサス部１０２が、１回目のＰｏＷを行う。コンセンサス部１０２は、ＰｏＷの処理回数を表すｋを１に初期化し（ステップＳ３０２）、ステップＳ３０３〜ステップＳ３０５の動作を繰り返す。
【０１３７】
まず、コンセンサス部１０２は、ステップＳ１０１で生成したブロックＢ３のノンス領域Ｄ−ｋにノンスの候補を設定する（ステップＳ３０３）。
【０１３８】
次いで、コンセンサス部１０２は、規則対象領域Ａ５−ｋに設定されたデータを用いて、ハッシュ値Ｄ４−ｋを計算する（ステップＳ３０４）。
【０１３９】
次いで、コンセンサス部１０２は、求めた処理値が所定の規則を満たすか否か（例えば、ターゲット閾値以下か否か）を確認する（ステップＳ３０５）。規則を満たす場合、現在の候補をノンスＤ２−ｋに確定して、ステップＳ３０６に進む。一方、コンセンサス部１０２は、規則を満たさない場合、ステップＳ３０３に戻り、当該ノンス領域Ａ２−ｋに対するノンスの設定処理を繰り返す。
【０１４０】
ステップＳ３０６では、コンセンサス部１０２は、当該回の署名対象領域Ａ４−ｋに対して署名の付与を行う。なお、署名の付与方法は、第１の実施形態と同様でよい。
【０１４１】
ここで生成された署名は、署名領域Ａ３−ｋに設定される。署名の付与が終わると、コンセンサス部１０２は、ｋを＋１する（ステップＳ３０７）。そして、ｋが基準回数ｎを超えるまで上記のステップＳ３０３〜ステップＳ３０７の動作を繰り返す（ステップＳ３０８）。
【０１４２】
コンセンサス部１０２は、基準回数ｎ分、上記のステップＳ３０３〜ステップＳ３０７の動作を行うと、ステップＳ３０９に進む。ステップＳ３０９で、コンセンサス部１０２は、最終的に得られたブロックＢ２を、ノンス設定済みのブロックとして出力する。
【０１４３】
図１８（ａ）および図１８（ｂ）は、本実施形態による検証情報付与動作にかかる所要時間と、外部サーバを利用した場合の所要時間との関係を示す説明図である。図１８（ａ）に、ｎ＝１のときの例であり、正規の管理ノード１０（図中の正規ノード）が行う検証情報付与動作にかかる所要時間の概略およびその内訳と、悪意ノードが外部サーバを利用して同様の動作を行った場合の所要時間の概略およびその内訳とを比較して示している。
【０１４４】
図１８（ａ）に示すように、本実施形態では、ノンスを探す処理を外部サーバのみで行うことができる。しかし、その後の署名をシステム内の管理ノード（悪意ノード）が行う必要がある。このため、悪意ノードは外部サーバがノンスを探索をしおえた後、そのブロックを送り返してもらう必要がある。外部サーバにノンスを探索させるためにブロックを送る動作と併せて、悪意ノードと外部サーバとの間には、１つのノンスを設定する度に、ブロックを送受信する動作が発生する。
【０１４５】
ここで、図１８（ａ）に示すように、正規ノードが１回のノンスの設定にかかる所要時間が、悪意ノードが外部サーバを利用した場合の所要時間（外部サーバとの間の往復の伝搬遅延時間を含む）に対して小さい値であれば、高確率で悪意ノード単体で処理した方が早くなるため、外部サーバを利用する効果が薄くなる。
【０１４６】
なお、図１８（ｂ）に示す例は、ｎ＝２以上のときの例である。なお、正規ノードにおけるノンス設定にかかる所要時間や外部ネットワークの伝搬遅延時間は、常に固定ではないため、ｎの数を増やして、ノンスの探索にかかる平均所要時間が、悪意ノードが外部サーバを利用した場合の平均所要時間よりも小さくなるように設計することも可能である。
【０１４７】
次に、本実施形態のブロック検証動作を説明する。図１９は、本実施形態の管理ノードによるブロック検証動作の一例を示すフローチャートである。なお、本図においても、フローチャートの各ステップに対応するブロックの状態を併せて示している。
【０１４８】
図１９に示す例では、まず、ブロック共有部１０１が、検証対象とされるブロックを受信する（ステップＳ４０１）。本例では、ブロック共有部１０１は、全てのデータ領域に正しい値が設定されたとされるブロックＢ３を受信する。
【０１４９】
次いで、検証部１０３が、検証情報付与側で行われた各回のＰｏＷおよびその後署名に対する検証処理を、ＰｏＷの順番とは逆の順番で行う。検証部１０３は、当該検証処理の処理対象を表すｋをｎに初期化し（ステップＳ４０２）、ステップＳ４０３〜ステップＳ４０８の動作を繰り返す。ただし、途中で検証ＮＧの結果が得られた場合には、その時点で処理を終了する。
【０１５０】
検証部１０３は、各回の検証処理として、まずブロックＢ３にある署名対象領域Ａ４−ｋに対して署名Ｄ３−ｋに基づく検証を行う（ステップＳ４０３）。なお、対象領域および用いる署名が各回で変わるだけで、各回における署名に基づく検証の方法は、第１の実施形態と同様でよい。
【０１５１】
署名対象領域Ａ４−ｋには、少なくともノンス領域Ａ２−ｋが含まれていることから、当該署名に基づく検証を行うことで、署名Ｄ３−ｋが、ノンスＤ２−ｋの設定後に付与されたものか否かを確認することができる。
【０１５２】
次のステップＳ４０４で、検証部１０３は、当該署名に基づく検証の結果、対象とされたデータが正規データと判定されれば（ステップＳ４０４のＹｅｓ）、当該回に対応する署名の付与対象とされたデータは、正規データであるとしてステップＳ４０５に進む。一方、正規データでないと判定された場合（ステップＳ４０４のＮｏ）、当該データは正規データではないとして処理を終了する（ＮＧ判定による終了）。
【０１５３】
ステップＳ４０５では、続いて、検証部１０３が、当該回に対応するノンスＤ２−ｋの正当性を確認するために、規則対象領域Ａ４−ｋに設定されたデータを対象に、規則に基づく検証を行う。
【０１５４】
規則対象領域Ａ４−ｋには、ｋ＞１であれば、検証情報付与側で直前に行われた署名付与の結果である署名Ｄ３−（ｋ−１）が含まれているため、当該規則を満たすことにより、検証情報付与側において当該回の１つ前の署名付与後に当該回の規則の判定が行われたことを確認できる。これにより、例えば、２回目以降の署名Ｄ３−ｋが、前回の署名Ｄ３−（ｋ−１）ひいてはそれが正しい場合には前回のノンスＤ２−（ｋ−１）が付与された後に付与されたものであることを確認できる。また、ｋ＝１であれば、データ領域Ａ１に値が設定された後に、規則の判定が行われたことを確認できる。
【０１５５】
検証部１０３は、規則に基づく検証の結果、処理値が規則を満たしていなければ（ステップＳ４０５のＮｏ）、対象とされたデータを非正規データとみなして、処理を終了する（ＮＧ判定による終了）。一方、検証部１０３は、処理値が規則を満たしていれば（ステップＳ４０５のＹｅｓ）、対象とされたデータを正規データとみなして、ｋを−１する。そして、ｋが０になるまで（すなわち繰り返し回数が基準回数ｎとなるまで）上記のステップＳ４０３〜ステップＳ４０７の動作を繰り返す（ステップＳ４０８）。
【０１５６】
そして、ステップＳ４０８の判定の結果、全ての回が終了すると、当該ブロックは正規ブロックであるとして処理を終了する（ＯＫ判定による終了）。
【０１５７】
なお、本実施形態においても、検証部１０３は、ＯＫ判定による終了の前に、さらに、前ブロック管理情報に基づく検証を行ってもよい。
【０１５８】
このように、検証部１０３は、ブロックＢ３に設定された署名Ｄ３−１〜署名Ｄ３−ｎを用いて、ＰｏＷの順番と逆の順番で検証付与側の動作を検証する。これにより、当該ブロックが正規の手順で生成されたものであるか否かが検証できる。
【０１５９】
以上のように、本実施形態によれば、耐タンパ領域での署名回数を減らすことができるので、耐タンパ領域の空き時間を確保しつつ、ブロックおよび該ブロックが追加されるブロックチェーンの改ざん耐性を向上できる。
【０１６０】
実施形態３．
次に、本発明の第３の実施形態を説明する。第２の実施形態では、繰り返し回数（ｎ）が増えるほど、ブロック内におけるノンスＤ２と署名Ｄ３のデータ量が増えるため、その分、ブロックの共有時やブロックチェーンの管理におけるオーバーヘッドが大きくなる。
【０１６１】
そこで、本実施形態では、第２の実施形態で署名を行っていた部分を暗号化に変更する。同様に、署名に基づく検証を行っていた部分を復号による検証に変更する。
【０１６２】
本実施形態のシステム構成および管理ノード１０の構成は、第１および第２の実施形態と同様であるため、以下では異なる部分を主に説明する。
【０１６３】
図２０（ａ）および図２０（ｂ）は、本実施形態のブロックのデータ構造の例を示す説明図である。なお、図２０に示す例は、本実施形態で用いるブロックＢ４のデータ要素を示している。図２０に示す例では、各回の暗号化対象領域Ａ６−１〜暗号化対象領域Ａ６−ｎを入れ子構造で表している。
【０１６４】
図２０（ａ）および図２０（ｂ）に示すように、本実施形態のブロックＢ４は、ｎ個の暗号化対象領域Ａ６−１〜暗号化対象領域Ａ６−ｎを多層的に含むとともに、各暗号化対象領域Ａ６−ｋは、少なくともノンス領域Ｄ２−ｋと、直前の暗号化領域Ａ６−（ｋ−１）によって暗号化されたデータが設定された暗号データ領域Ａ６’−（ｋ−１）があればそれを含むように構成される（図２０（ａ））。なお、暗号化対象領域Ａ６−ｋの各々がさらに、データ領域Ａ１を含んでもよい（図２０（ｂ）参照）。
【０１６５】
なお、暗号化対象領域Ａ６−ｋは、暗号の度に、対応するノンス領域Ａ２−ｋが１つ追加される構造となっている。すなわち、ノンス領域Ａ２は、各回の繰り返し処理の中でこれまでのノンス領域Ａ２とは別に新たに確保される。
【０１６６】
また、以下では、ｋ回の繰り返し処理の各々に対応づけて、それぞれ暗号化前のブロックＢ４を平文ブロックＢ４−ｋ、暗号化後のブロックＢ４を暗号ブロックＢ４−ｋという場合がある。なお、暗号ブロックＢ４−ｎが、最終的に作成されるブロックに相当する。
【０１６７】
図２１は、平文ブロックＢ４−ｋの例を示す説明図である。図２１（ａ）は、平文ブロックＢ４−１の例を示す説明図であり、図２１（ｂ）は平文ブロックＢ４−ｎの例を示す説明図である。図２１（ａ）に示すように、１回目のＰｏＷに入力される平文ブロックＢ４−１は、データ領域Ａ１と、ノンス領域Ａ２−１とを含む。また、平文ブロックＢ４−１における暗号化対象領域Ａ６−１は、データ領域Ａ１と、ノンス領域Ａ２−１とを含む。また、図２１（ｂ）に示すように、ｎ回目のＰｏＷに入力される平文ブロックＢ４−ｎは、少なくとも前回の暗号化により得られた暗号データが設定される暗号データ領域Ａ６’−（ｎ−１）と、新たに追加されるノンス領域Ａ２−ｎとを含む。なお、図２１（ｂ）に示す例では、平文ブロックＢ４−ｎがさらにデータ領域Ａ１を含んでいるが、これは、各回の暗号化対象にデータ領域Ａ１を含めなかった場合（図２０（ａ）の場合）の例である。
【０１６８】
次に、本実施形態の動作を説明する。図２２は、本実施形態の検証情報付与動作の例を示すフローチャートである。なお、図２２に示すステップＳ３２３〜ステップＳ３２５の繰り返し処理が、通常のＰｏＷの動作に相当する。本図でも、フローチャートの各ステップに対応するブロックの状態を併せて示している。
【０１６９】
図２２に示す例では、まずステップＳ３２１で、ブロック共有部１０１が、データ領域Ａ１に前ブロック管理情報Ｄ１１と登録情報Ｄ１２とを設定した平文ブロックＢ４−１を生成する。このとき、ブロック共有部１０１は、ノンス領域Ａ２−１については未設定とする。
【０１７０】
次いで、コンセンサス部１０２が、１回目のＰｏＷを行う。コンセンサス部１０２は、ＰｏＷの処理回数を表すｋを１に初期化し（ステップＳ３２２）、ステップＳ３２３〜ステップＳ３２５の動作を繰り返す。なお、ステップＳ３２３〜ステップＳ３２５の動作は、第２の実施形態のステップＳ３０３〜ステップＳ３０５と同様である。
【０１７１】
規則を満たすノンスＤ２−ｋが見つかると（ステップＳ３２５のＹｅｓ）、ステップＳ３１６で、コンセンサス部１０２は、平文ブロックＢ４−ｋの暗号化対象領域Ａ４−ｋに対して暗号化を行う。なお、暗号化の方法は、第１の実施形態と同様でよい。
【０１７２】
コンセンサス部１０２は、生成された暗号データＤ６−ｋを、暗号ブロックＢ４’−ｋの暗号データ領域Ａ６’−ｋに設定する。ここで、平文ブロックＢ４−ｋに暗号化対象外領域があれば、該領域のデータも暗号ブロックＢ４’−ｋに設定してもよい。なお、最後の暗号ブロックＢ４’−ｋのときに当該動作を行ってもよい。
【０１７３】
暗号ブロックへの暗号データの設定が終わると、コンセンサス部１０２は、ｋを＋１する（ステップＳ３２７）。そして、ｋが基準回数ｎを超えるまで上記のステップＳ３２３〜ステップＳ３２７の動作を繰り返す（ステップＳ３２８）。なお、本実施形態では、ステップＳ３２３に戻る際に、ノンスの設定対象とするブロックとして、ステップＳ３２６で得た暗号データＤ６−（ｋ−１）を含む暗号ブロックＢ４’−（ｋ−１）に、さらにノンス領域Ａ２−ｋを追加した平文ブロックＢ４−ｋをを渡す。このようにして、各回で得た結果を次回の設定処理に引き継ぐ。
【０１７４】
ここで、暗号データＤ６−（ｋ−１）となっているのは、ステップＳ３２７でｋが＋１されているためで、実際には直前の暗号化によって得た暗号データを指す。すなわち、コンセンサス部１０２は、次回のノンス設定処理から見て、前回の平文ブロックＢ４−（ｋ−１）から生成された暗号データＤ６−（ｋ−１）と、今回の設定先であるノンス領域Ａ２−ｋとを少なくとも含む平文ブロックＢ４−ｋを、次のノンスの設定対象ブロックとして入力すればよい。
【０１７５】
コンセンサス部１０２は、基準回数ｎ分、上記のステップＳ３２３〜ステップＳ３２７の動作を行うと、ステップＳ３２９に進む（ステップＳ３２８のＹｅｓ）。ステップＳ３２９で、コンセンサス部１０２は、この時点で得ている最終の暗号ブロックＢ４’−ｎを、ノンス設定済みのブロックとして出力する。
【０１７６】
図２３は、暗号ブロックの他の例を示す説明図である。例えば、コンセンサス部１０２は、ステップＳ３２４で、前回の暗号データＤ６−（ｋ−１）が格納された暗号データ領域Ａ６’−（ｋ−１）とノンス領域Ａ２−ｋのみを含む暗号化対象領域Ａ６−ｋに対して暗号化を行ってもよい。その場合、暗号化後に得る暗号ブロックＢ４’−ｋは、データ領域Ａ１と、暗号データ領域Ａ６’−ｋとを含んでいてもよい。なお、上述したように、データ領域Ａ１の暗号ブロックへの反映は、繰り返し処理が終了した後に１回のみ行ってもよい。その場合、２回目以降のノンス設定処理で、データ領域Ａ１は存在しないものとして扱われるが、少なくとも最終的に生成される暗号ブロックＢ４’−ｎにはデータ領域Ａ１を含ませる。
【０１７７】
なお、本実施形態では、最終的に生成される暗号ブロックＢ４’−ｎに含まれる暗号データＤ６−ｎが、ｎ個分のノンスの情報を含む検証情報として機能する。
【０１７８】
次に、本実施形態によるブロック検証動作について説明する。図２４は、本実施形態のブロック検証動作の一例を示すフローチャートである。なお、本図においても、フローチャートの各ステップに対応するブロックの状態を併せて示している。
【０１７９】
図２４に示す例では、まず、ブロック共有部１０１が、検証対象とされるブロックを受信する（ステップＳ４２１）。本例では、ブロック共有部１０１は、全てのデータ領域に正しい値が設定されたとされる暗号ブロックＢ４’−ｎを受信する。
【０１８０】
次いで、検証部１０３が、検証情報付与側で行われた各回のＰｏＷおよびその後暗号化に対する検証処理を、ＰｏＷの順番とは逆の順番で行う。検証部１０３は、当該検証処理の処理対象を表すｋをｎに初期化し（ステップＳ４２２）、ステップＳ４２３〜ステップＳ４２８の動作を繰り返す。ただし、途中で検証ＮＧの結果が得られた場合には、その時点で処理を終了する。
【０１８１】
検証部１０３は、各回の検証処理として、まず暗号ブロックＢ４’−ｎにおける暗号データ領域Ａ６’−ｋに格納されている暗号データＤ６−ｋに対して復号による検証を行う（ステップＳ４２３）。なお、対象とされる暗号データが各回で変わるだけで、各回における復号による検証の方法は、第１の実施形態と同様でよい。
【０１８２】
暗号データＤ６−ｋが生成されたときの暗号対象領域Ａ６−ｋには、ｋ＞１であれば、当該回に対応するノンス領域Ａ２−ｋと、一つ前の暗号データＤ６−（ｋ−１）とが含まれていることから、当該復号による検証を行うことで、当該回の暗号化が、１つ前の暗号化後かつ当該回のノンス設定後に行われたものか否かを確認することができる。
【０１８３】
次のステップＳ４２４で、検証部１０３は、当該復号による検証の結果、対象とされたデータが正規データと判定されれば（ステップＳ４２４のＹｅｓ）、当該回に対応する暗号データの元となったデータは、正規データであるとしてステップＳ４２５に進む。一方、正規データでないと判定された場合（ステップＳ４２４のＮｏ）、当該データは正規データではないとして処理を終了する（ＮＧ判定による終了）。
【０１８４】
ステップＳ４２５では、続いて、検証部１０３が、当該回に対応するノンスＤ２−ｋの正当性を確認するために、復号により得られた平文ブロックＢ４−ｋの規則対象領域Ａ４−ｋに設定されたデータを対象に、規則に基づく検証を行う。
【０１８５】
なお、規則対象領域Ａ４−ｋには、ｋ＞１であれば、当該ノンスによって正当性を担保したい、検証情報付与側で直前に行われた暗号化の結果である暗号データＤ６−（ｋ−１）が含まれているため、当該規則を満たすことにより、検証情報付与側において当該回の１つ前の暗号化後に当該回の規則の判定が行われたことを確認できる。これにより、例えば、２回目以降の暗号データＤ６−ｋが、前回の暗号データＤ６−（ｋ−１）ひいてはそれが正しい場合には前回のノンスＤ２−（ｋ−１）が付与された後に付与されたものであることを確認できる。また、ｋ＝１であれば、データ領域Ａ１に値が設定された後に、規則の判定が行われたことを確認できる。
【０１８６】
検証部１０３は、規則に基づく検証の結果、処理値が規則を満たしていなければ（ステップＳ４２５のＮｏ）、対象とされたデータを非正規データとみなして、処理を終了する（ＮＧ判定による終了）。一方、検証部１０３は、処理値が規則を満たしていれば（ステップＳ４２５のＹｅｓ）、対象とされたデータを正規データとみなして、ｋを−１する。そして、ｋが０になるまで（すなわち繰り返し回数が基準回数ｎとなるまで）上記のステップＳ４２３〜ステップＳ４２７の動作を繰り返す（ステップＳ４２８）。
【０１８７】
なお、本実施形態では、ステップＳ４２３に戻る際に、検証対象とするブロックとして、ステップＳ４２３における復号で得た平文ブロックＢ４−（ｋ−１）もしくは該ブロックに含まれる暗号データＤ６−（ｋ−２）を渡してもよい。このようにして、各回で得た結果を次回の検証処理に引き継ぐ。
【０１８８】
ここで、平文ブロックＢ４−（ｋ−１）や暗号データＤ６−（ｋ−２）となっているのは、ステップＳ４２７でｋが＋１されているためで、実際にはいずれも直前の復号によって得たデータを指す。すなわち、コンセンサス部１０２は、次回の検証処理から見て、前回の暗号ブロックＢ４’−（ｋ−１）から得られた復号データに含まれる、暗号データＤ６’−（ｋ−１）を少なくとも含む暗号ブロックＢ４’−ｋを、次の検証対象ブロックとして入力してもよい。
【０１８９】
コンセンサス部１０２は、基準回数ｎ分、上記のステップＳ４２３〜ステップＳ４２７の動作を行うと、ステップＳ４２９に進む（ステップＳ４２８のＹｅｓ）。ステップＳ４２９で、コンセンサス部１０２は、この時点で得ている最終の平文ブロックＢ４−１を、検証済みブロック（正規のブロック）として出力して処理を終了する（ＯＫ判定による終了）。
【０１９０】
なお、本実施形態においても、検証部１０３は、ＯＫ判定による終了の前に、さらに、前ブロック管理情報に基づく検証を行ってもよい。
【０１９１】
また、図２５は、本実施形態の検証処理の繰り返しで行われる階層構造の暗号データＤ６−ｎの復号の様子を示す説明図である。図２５に示すように、暗号データＤ６−ｎから開始して、各回の復号で得られる復号データに含まれる暗号データを次の復号対象にしてすることで、最終的にｎ回の復号を経て検証付与側で最初に生成された平文ブロックＢ４−１を得ることができる。なお、平文ブロックＢ−１に対する検証動作は通常のＰｏＷにおける検証動作と同じである。
【０１９２】
以上のように、本実施形態によれば、第２の実施形態の効果に加えて、繰り返し回数が増えても、ノンス領域の分だけしかデータ量が増えないだけでなく、暗号化によってデータのさらなる圧縮も期待できる。
【０１９３】
なお、上記の説明では、署名部１０４および暗号化部１０５は、耐タンパ領域１２に保持されるとして説明したが、署名部１０４および暗号化部１０５は、秘密鍵が外部に漏れないことを前提に、耐タンパ性を備えていない処理領域（他の処理領域と隔離されているか否かを問わない）において署名および暗号化を行ってもよい。なお、マルウェアなどに感染することを考慮して、署名部１０４および暗号化部１０５は、他の処理領域と隔離された処理領域に保持され、該処理領域において署名および暗号化を行うのがより好ましい。なお、該処理領域が耐タンパ性を備えているのがさらにこのましい。
【０１９４】
次に、本発明の実施形態にかかるコンピュータの構成例を示す。図２６は、本発明の実施形態にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４と、ディスプレイ装置１００５と、入力デバイス１００６とを備える。
【０１９５】
上述した管理ノードや後述する検証情報付与装置５１や検証装置５２は、例えば、コンピュータ１０００に実装されてもよい。その場合、各装置の動作は、プログラムの形式で補助記憶装置１００３に記憶されていてもよい。ＣＰＵ１００１は、プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのプログラムに従って上記の実施形態における所定の処理を実施する。
【０１９６】
補助記憶装置１００３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータは１０００がそのプログラムを主記憶装置１００２に展開し、上記の実施形態における所定の処理を実行してもよい。
【０１９７】
また、プログラムは、各実施形態における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで上記の実施形態における所定の処理を実現する差分プログラムであってもよい。
【０１９８】
インタフェース１００４は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置１００５は、ユーザに情報を提示する。また、入力デバイス１００６は、ユーザからの情報の入力を受け付ける。
【０１９９】
また、実施形態における処理内容によっては、コンピュータ１０００の一部の要素は省略可能である。例えば、装置がユーザに情報を提示しないのであれば、ディスプレイ装置１００５は省略可能である。
【０２００】
また、各装置の各構成要素の一部または全部は、汎用または専用の回路（Circuitry）、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０２０１】
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２０２】
次に、本発明の概要を説明する。図２７は、本発明の情報検証システムの概要を示すブロック図である。図２７に示す情報管理システム５００は、検証情報付与装置５１と、検証装置５２とを備える。
【０２０３】
検証情報付与装置５１は、ノンス設定手段５１１を含む。
【０２０４】
ノンス設定手段５１１（例えば、コンセンサス部１０２）は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うとともに、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う。
【０２０５】
検証装置５２は、検証手段５２１を含む。
【０２０６】
検証手段５２１（例えば、検証部１０３）は、検証情報付与装置５１から出力された、データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックを検証する。より具体的には、検証手段５２１は、第２のデータブロックの生成元の検証情報付与装置の公開鍵を用いて第２のデータブロックに含まれる処理データを検証する第１の検証処理と、規則に基づいて第２のデータブロックもしくは第２のデータブロックに基づくデータを検証する第２の検証処理とを行うことにより、第２のデータブロックを検証する。
【０２０７】
なお、上記の各実施形態は以下の付記のようにも記載できる。
【０２０８】
（付記１）
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段を備え、
ノンス設定手段は、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う
ことを特徴とする検証情報付与装置。
【０２０９】
（付記２）
ノンス設定手段は、データ処理を、他の処理領域と隔離された処理領域で行う
付記１に記載の検証情報付与装置。
【０２１０】
（付記３）
ノンス設定手段は、データ処理を、秘密鍵を外部に持ち出せない耐タンパ領域で行う
付記１または付記２記載の検証情報付与装置。
【０２１１】
（付記４）
ノンス設定手段は、設定処理を行った結果として、データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックを出力する
付記１から付記３のうちのいずれかに記載の検証情報付与装置。
【０２１２】
（付記５）
ノンス設定手段は、設定処理でノンス領域に値を設定する度に、第１のデータブロックの当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名または暗号化を行い、
ノンス設定手段は、設定処理で、署名が付与された第１のデータブロック、または暗号化の対象としたデータに代えて暗号化によって得られた暗号データを含む新たな第１のデータブロックから得られる処理値が規則を満たすか否かを判定し、
ノンス設定手段は、処理値が規則を満たした場合に当該処理値を得たデータブロックを出力する
付記１から付記４のうちのいずれかに記載の検証情報付与装置。
【０２１３】
（付記６）
第１のデータブロックは、任意のデータが格納される第１のデータ領域と、複数のデータブロックを繋げてなる所定のブロックチェーンに１つ以上前に追加されたデータブロックに基づく情報が設定されるヘッダ領域を有し、
ノンス設定手段は、設定処理でノンス領域に値を設定する度に、第１のデータブロックのノンス領域とヘッダ領域とを含む所定のデータ領域に対して、自装置の秘密鍵を用いた暗号化を行う
付記５記載の検証情報付与装置。
【０２１４】
（付記７）
ノンス設定手段は、設定処理を１以上の所定数回、かつ２回目以降はそれまでに得たデータを第１のデータブロックに引き継ぐとともに、設定先のノンス領域を変えながらもしくは追加しながら行い、
ノンス設定手段は、設定処理により、ノンス領域の１つに規則を満たすノンスが設定される度に、第１のデータブロックの当該ノンスが設定されたノンス領域を少なくとも含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名もしくは暗号化を行い、
ノンス設定手段は、最後の署名付与後の第１のデータブロックまたは少なくとも最後の暗号化によって得た暗号データを含むデータブロックを出力する
付記１から付記４のうちのいずれかに記載の検証情報付与装置。
【０２１５】
（付記８）
ノンス設定手段は、１以上の所定数のノンス領域を有する第１のデータブロックに対して、設定先とする一のノンス領域を指定しながら設定処理を、１以上の所定数回繰り返し行い、
ノンス設定手段は、設定処理により、指定したノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの当該ノンスが設定されたノンス領域を含む所定のデータ領域である署名対象領域に対して、自装置の秘密鍵を用いた署名を行い、
ノンス設定手段は、各設定処理で、指定されたノンス領域に値を設定しながら、第１のデータブロックのうち少なくとも当該ノンス領域と直前に付与された署名が設定された領域とを含む所定のデータ領域である規則対象領域のデータから得られる処理値が規則を満たすか否かを判定し、
ノンス設定手段は、設定処理を所定数分行った結果として、所定数の署名が付与された第１のデータブロックを出力する
付記１から付記４のうちのいずれかに記載の検証情報付与装置。
【０２１６】
（付記９）
１回の設定処理にかかる平均所要時間もしくは規則が、外部ノードとの間の伝搬遅延時間に基づいて定められている
付記８記載の検証情報付与装置。
【０２１７】
（付記１０）
ノンス設定手段は、任意のデータが格納される第１のデータ領域を含む第１のデータブロックに対して、ノンスの設定先とするノンス領域を逐次追加しながら、設定処理を１以上の所定数回繰り返し行い、
ノンス設定手段は、設定処理により、設定先としたノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックのノンス領域を含む所定のデータ領域である暗号化対象領域に対して、自装置の秘密鍵を用いた暗号化を行い、
ノンス設定手段は、１回目の設定処理で、設定先とされたノンス領域と第１のデータ領域とを含む第１のデータブロックから得られる処理値が規則を満たすように、ノンス領域にノンスを設定し、
ノンス設定手段は、２回目以降の設定処理で、設定先とされたノンス領域と直前の暗号化によって得られた暗号データが設定された暗号データ領域とを少なくとも有する新たな第１のデータブロックに対して、当該第１のデータブロックから得られる処理値が規則を満たすように、ノンス領域にノンスを設定し、
ノンス設定手段は、設定処理を所定数分行った結果として、最後の暗号化によって得られた暗号データを少なくとも含むデータブロックを出力する
付記１から付記４のうちのいずれかに記載の検証情報付与装置。
【０２１８】
（付記１１）
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段であって、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行うノンス設定手段を備える検証情報付与装置から出力された、データ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックを検証する検証装置であって、
第２のデータブロックの生成元の検証情報付与装置の公開鍵を用いて第２のデータブロックに含まれる処理データを検証する第１の検証処理と、規則に基づいて第２のデータブロックもしくは第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を備えた
ことを特徴とする検証装置。
【０２１９】
（付記１２）
設定処理でノンス領域に値を設定する度に、第１のデータブロックの当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた署名または暗号化を行い、設定処理で、署名が付与された第１のデータブロック、または暗号化の対象としたデータに代えて暗号化によって得られた暗号データを含む新たな第１のデータブロックから得られる処理値が規則を満たすか否かを判定し、処理値が規則を満たした場合に当該処理値を得たデータブロックを出力するノンス設定手段を備えた検証情報付与装置から出力されたデータブロックである第２のデータブロックを検証する検証装置であって、
検証手段は、第１の検証処理で、公開鍵を用いて、第２のデータブロックに含まれる署名並びに当該署名の付与対象とされたデータである対象データ、または暗号データを検証するとともに、第２の検証処理で、署名が付与された第１のデータブロックである当該第２のデータブロックまたは暗号データに代えて暗号データを復号して得られた元データを含む新たな第２のデータブロックに対して、第２のデータブロックから得られる処理値が規則を満たすか否かを検証する
付記１１記載の検証装置。
【０２２０】
（付記１３）
１以上の所定数のノンス領域を有する第１のデータブロックに対して、設定先とする一のノンス領域を指定しながら設定処理を、１以上の所定数回繰り返し行い、設定処理により、指定したノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの当該ノンスが設定されたノンス領域を含む所定のデータ領域である署名対象領域に対して、自装置の秘密鍵を用いた署名を行い、各設定処理で、指定されたノンス領域に値を設定しながら、第１のデータブロックのうち少なくとも当該ノンス領域と直前に付与された署名が設定された領域とを含む所定のデータ領域である規則対象領域のデータから得られる処理値が規則を満たすか否かを判定し、設定処理を所定数分行った結果として、所定数の署名が付与された第１のデータブロックを出力するノンス設定手段を備える検証情報付与装置から出力されたデータブロックである第２のデータブロックを検証する検証装置であって、
検証手段は、第２のデータブロックに含まれる署名の１つを、付与された順番と逆の順番で指定しながら、第１の検証処理と第２の検証処理とをこの順番で所定数回繰り返し行い、
検証手段は、各回の第１の検証処理で、公開鍵を用いて、第２のデータブロックに含まれる指定された署名並びに当該署名の付与対象とされた署名対象領域のデータである対象データを検証し、各回の第２の検証処理で、直前の第１の検証処理で検証された署名が設定された領域を含む規則対象領域のデータから得られる処理値が規則を満たすか否かを検証する
付記１１記載の検証装置。
【０２２１】
（付記１４）
任意のデータが格納される第１のデータ領域を含む第１のデータブロックに対して、ノンスの設定先とするノンス領域を逐次追加しながら、設定処理を１以上の所定数回繰り返し行い、設定処理により、設定先としたノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックのノンス領域を含む所定のデータ領域である暗号化対象領域に対して、自装置の秘密鍵を用いた暗号化を行い、１回目の設定処理で、設定先とされたノンス領域と第１のデータ領域とを含む第１のデータブロックから得られる処理値が規則を満たすように、ノンス領域にノンスを設定し、２回目以降の設定処理で、設定先とされたノンス領域と直前の暗号化によって得られた暗号データが設定された暗号データ領域とを少なくとも有する新たな第１のデータブロックに対して、当該第１のデータブロックから得られる処理値が規則を満たすように、ノンス領域にノンスを設定し、設定処理を所定数分行った結果として、最後の暗号化によって得られた暗号データを少なくとも含むデータブロックを出力するノンス設定手段を備える検証情報付与装置から出力されたデータブロックである第２のデータブロックを検証する検証装置であって、
検証手段は、第１の検証処理と第２の検証処理とをこの順番で所定数回繰り返し行い、
検証手段は、各回の第１の検証処理で、第２のデータブロックまたは前回の第１の検証処理で得られた新たな第２のデータブロックに含まれる暗号データを、公開鍵を用いて復号し、復号結果を検証するとともに、復号により得られた元データを少なくとも含む新たな第２のデータブロックを得て、
検証手段は、各回の第２の検証処理で、直前の第１の検証処理により得られた新たな第２のデータブロックから得られる処理値が規則を満たすか否かを検証する
付記１１記載の検証装置。
【０２２２】
（付記１５）
検証情報付与装置と、検証装置とを備え、
検証情報付与装置は、検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を行うノンス設定手段を含み、
ノンス設定手段は、設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行い、
検証装置は、検証情報付与装置から出力されるデータ処理の結果得られたデータである処理データを含む所定のデータ構造のデータブロックである第２のデータブロックに対して、第２のデータブロックの生成元の検証情報付与装置の公開鍵を用いて第２のデータブロックに含まれる処理データを検証する第１の検証処理と、規則に基づいて第２のデータブロックもしくは第２のデータブロックに基づくデータを検証する第２の検証処理とを行う検証手段を有する
ことを特徴とする情報管理システム。
【０２２３】
（付記１６）
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を、１以上の所定数回行うとともに、
設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を行う
ことを特徴とする検証情報付与方法。
【０２２４】
（付記１７）
コンピュータに、
検証情報であるノンスが設定されるノンス領域を有する所定のデータ構造の第１のデータブロックまたは第１のデータブロックに基づくデータに対して一方向性関数を適用したときに得られる値である処理値が所定の規則を満たすように、第１のデータブロックの所定のノンス領域にノンスを設定する設定処理であって、ノンス領域に値を設定して実際に処理値を計算することによりノンスを設定する設定処理を実行させるとともに、
設定処理でノンス領域に値を設定する度に、または設定処理によりノンス領域に規則を満たすノンスが設定される度に、第１のデータブロックの、当該ノンス領域を含む所定のデータ領域に対して、自装置の秘密鍵を用いた所定のデータ処理を実行させる
ための検証情報付与プログラム。
【０２２５】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０２２６】
本発明によれば、情報を分散して管理したい用途において、特に、プライベート型のブロックチェーンを用いる場合に好適に適用可能である。なお、プライベート型のブロックチェーン以外であっても、ＰｏＷを経て情報が複数のノードの共有台帳に記録されるようなシステムであれば適用可能である。
【符号の説明】
【０２２７】
１００  情報管理システム
２００  システムネットワーク
１０  管理ノード
１１  ブロックチェーン部
１２  耐タンパ領域
１０１  ブロック共有部
１０２  コンセンサス部
１０３  検証部
１０４  署名部
１０５  暗号化部
１０００  コンピュータ
１００１  ＣＰＵ
１００２  主記憶装置
１００３  補助記憶装置
１００４  インタフェース
１００５  ディスプレイ装置
１００６  入力デバイス
５００  情報管理システム
５１  検証情報付与装置
５１１  ノンス設定手段
５２  検証装置
５２１  検証手段
９０  外部サーバ
３０  ノード
３００  情報管理システム
【図１】
2018179293.tif 000003
【図２】
2018179293.tif 000004
【図３】
2018179293.tif 000005
【図４】
2018179293.tif 000006
【図５】
2018179293.tif 000007
【図６】
2018179293.tif 000008
【図７】
2018179293.tif 000009
【図８】
2018179293.tif 000010
【図９】
2018179293.tif 000011
【図１０】
2018179293.tif 000012
【図１１】
2018179293.tif 000013
【図１２】
2018179293.tif 000014
【図１３】
2018179293.tif 000015
【図１４】
2018179293.tif 000016
【図１５】
2018179293.tif 000017
【図１６】
2018179293.tif 000018
【図１７】
2018179293.tif 000019
【図１８】
2018179293.tif 000020
【図１９】
2018179293.tif 000021
【図２０】
2018179293.tif 000022
【図２１】
2018179293.tif 000023
【図２２】
2018179293.tif 000024
【図２３】
2018179293.tif 000025
【図２４】
2018179293.tif 000026
【図２５】
2018179293.tif 000027
【図２６】
2018179293.tif 000028
【図２７】
2018179293.tif 000029
【図２８】
2018179293.tif 000030
【図２９】
2018179293.tif 000031
【図３０】
2018179293.tif 000032
【図３１】
2018179293.tif 000033
【国際調査報告】
2018179293.tif 000034
2018179293.tif 000035
2018179293.tif 000036