(57)【特許請求の範囲】
【請求項１】
１以上のピアと、前記１以上のピアのいずれかに接続可能な１以上の第１の端末と、１以上の検出装置とを備える改ざん検出システムであって、
前記第１の端末は、
前記ピアから、ブロックチェーンに含まれるブロックハッシュを取得する取得部と、
前記ブロックハッシュと前記第１の端末の取引内容に基づくデータとを含む第１の署名対象データ、及び、前記第１の署名対象データの電子署名を含む第１の取引記録を、前記ピアに送信する送信部とを備え、
前記ピアは、前記第１の取引記録に含まれる前記電子署名が有効であり、かつ、前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれている場合、前記第１の取引記録を含むブロックを前記ブロックチェーンに記憶する記憶制御部を備え、
前記検出装置は、
前記ピアから前記ブロックチェーンを受信する受信部と、
前記ブロックチェーンのブロックに含まれる第１の取引記録に含まれる前記電子署名が有効でない、または、前記ブロックに含まれる前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれていない場合、前記ブロックチェーンの改ざんを検出する検出部と、
を備える改ざん検出システム。
【請求項２】
前記第１の端末の取引内容に基づくデータは、前記第１の端末の取引内容、又は、前記第１の端末の取引内容のハッシュ値のいずれか一方である、
請求項１に記載の改ざん検出システム。
【請求項３】
前記第１の署名対象データは、前記ブロックハッシュに対応するブロックのブロック番号を更に含み、
前記記憶制御部は、前記第１の取引記録に含まれる前記電子署名が有効であり、かつ、前記第１の取引記録に含まれるブロック番号を使用して前記ブロックチェーンから特定されたブロックのブロックハッシュが、前記第１の取引記録に含まれるブロックハッシュと一致する場合、前記第１の取引記録を含むブロックを前記ブロックチェーンに記憶する、
請求項１に記載の改ざん検出システム。
【請求項４】
前記取得部は、前記ブロックチェーンに含まれるブロックハッシュのうち、前記ブロック番号に基づいて、より新しいブロックハッシュを取得する、
請求項３に記載の改ざん検出システム。
【請求項５】
前記取得部は、前記ブロックチェーンに含まれるブロックハッシュのうち、前記ブロックハッシュが生成された時刻に基づいて、より新しいブロックハッシュを取得する、
請求項１に記載の改ざん検出システム。
【請求項６】
前記取得部は、前記ブロックチェーンに含まれるブロックハッシュのうち、前記ブロックチェーンに既に記憶された第１の取引記録がより多くハッシュ計算に使用されているブロックハッシュを、より新しいブロックハッシュとして取得する、
請求項１に記載の改ざん検出システム。
【請求項７】
前記取得部は、前記ブロックチェーンに含まれるブロックハッシュを定期的に取得し、新たなブロックハッシュが取得された場合、前記新たなブロックハッシュを取得する前に取得されていたブロックハッシュを破棄する、
請求項１に記載の改ざん検出システム。
【請求項８】
前記改ざん検出システムは、１以上の第２の端末を更に備え、
前記第２の端末は、前記第２の端末の取引内容を含む第２の署名対象データ、及び、前記第２の署名対象データの電子署名を含む第２の取引記録を、前記ピアに送信し、
前記記憶制御部は、前記第１及び第２の取引記録の少なくとも一方を含むブロックを前記ブロックチェーンに記憶する、
請求項１に記載の改ざん検出システム。
【請求項９】
前記１以上の端末には、特定のユーザが定期的に前記第１の取引記録を送信する端末が含まれ、
前記検出部は、更に、前記特定のユーザから定期的に送信された前記第１の取引記録が、前記ブロックチェーンに含まれているか否かを判定し、前記特定のユーザから定期的に送信された前記第１の取引記録の一部又は全部が、前記ブロックチェーンに含まれていない場合、前記ブロックチェーンの改ざんを検出する、
請求項１に記載の改ざん検出システム。
【請求項１０】
１以上のピアと、前記１以上のピアのいずれかに接続可能な１以上の端末と、１以上の検出装置とを備える改ざん検出システムの改ざん検出方法であって、
第１の端末が、前記ピアから、ブロックチェーンに含まれるブロックハッシュを取得するステップと、
第１の端末が、前記ブロックハッシュと前記第１の端末の取引内容に基づくデータとを含む第１の署名対象データ、及び、前記第１の署名対象データの電子署名を含む第１の取引記録を、前記ピアに送信するステップと、
ピアが、前記第１の取引記録に含まれる前記電子署名が有効であり、かつ、前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれている場合、前記第１の取引記録を含むブロックを前記ブロックチェーンに記憶するステップと、
検出装置が、前記ピアから前記ブロックチェーンを受信するステップと、
検出装置が、前記ブロックチェーンのブロックに含まれる第１の取引記録に含まれる前記電子署名が有効でない、または、前記ブロックに含まれる前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれていない場合、前記ブロックチェーンの改ざんを検出するステップと、
を含む改ざん検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は改ざん検出システム及び改ざん検出方法に関する。
【背景技術】
【０００２】
ビットコイン（Ｂｉｔｃｏｉｎ）に代表される暗号通貨が実用化されている。暗号通貨の送金記録は、ブロックチェーンと呼ばれる電子台帳に保管される。ビットコインの場合、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋとよばれる方式の採用により、ブロックチェーンの改ざんは困難となっている。Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋはビットコインの安全性の基礎となっている。一方で、ブロックチェーンの応用として、送金に限らない一般の取引（Ｔｒａｎｓａｃｔｉｏｎ）を電子台帳に記録することが始まっている。またスマートコントラクトと呼ばれる電子契約技術もブロックチェーンとして実用化されている。ブロックチェーンの応用においては、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋを使わない一般的なコンセンサス・アルゴリズムにより、複数のピア間でのブロックチェーンの一貫性を維持する方式も実用化されている。このようなブロックチェーンは許可型（Ｐｅｒｍｉｓｓｉｏｎｅｄ）ブロックチェーンと呼ばれている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−２０７９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ブロックチェーンの改ざんを検出することが難しかった。特に、許可型ブロックチェーンでは、ピア管理者に結託された場合、ブロックチェーンの改ざんを検出することが難しかった。
【課題を解決するための手段】
【０００５】
実施形態の改ざん検出システムは、１以上のピアと、前記１以上のピアのいずれかに接続可能な１以上の第１の端末と、検出装置とを備える改ざん検出システムであって、前記第１の端末は、前記ピアから、ブロックチェーンに含まれるブロックハッシュを取得する取得部と、前記ブロックハッシュと前記第１の端末の取引内容に基づくデータとを含む第１の署名対象データ、及び、前記第１の署名対象データの電子署名を含む第１の取引記録を、前記ピアに送信する送信部とを備え、前記ピアは、前記第１の取引記録に含まれる前記電子署名が有効であり、かつ、前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれている場合、前記第１の取引記録を含むブロックを前記ブロックチェーンに記憶する記憶制御部を備え、前記検出装置は、前記ピアから前記ブロックチェーンを受信する受信部と、前記ブロックチェーンのブロックに含まれる第１の取引記録に含まれる前記電子署名が有効でない、または、前記ブロックに含まれる前記第１の取引記録に含まれる前記ブロックハッシュと同じブロックハッシュが前記ブロックチェーンに含まれていない場合、前記ブロックチェーンの改ざんを検出する検出部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は実施形態の改ざん検出システムの機能構成の例を示す図である。
【図２】図２は実施形態のブロックチェーンのデータ構造の例を示す図である。
【図３】図３は実施形態の端末の動作例を示すフローチャートである。
【図４】図４は実施形態のピアの動作例を示すフローチャートである。
【図５】図５は実施形態の検出部の動作例を示す図である。
【図６】図６は実施形態の変形例１のブロックハッシュの計算方法の例を示す図である。
【図７】図７は実施形態の変形例１のブロックチェーンのデータ構造の例を示す図である。
【図８】図８は実施形態の変形例１の検出部の動作例を示す図である。
【図９】図９は実施形態の端末、ピア及び検出装置のハードウェア構成の例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、改ざん検出システム及び改ざん検出方法の実施形態を詳細に説明する。
【０００８】
［機能構成の例］
図１は実施形態の改ざん検出システム１００の機能構成の例を示す図である。実施形態の改ざん検出システム１００は、端末１０、ピア２０及び検出装置３０を備える。端末１０、ピア２０及び検出装置３０は、インターネット等のネットワークを介して接続されている。
【０００９】
端末１０は、例えばユーザにより使用されるスマートデバイス及びパーソナルコンピュータ等である。ピア２０は、ブロックチェーンを記憶するコンピュータである。ブロックチェーンは、１以上の取引記録を含む電子台帳である。検出装置３０は、ピア２０に記憶されたブロックチェーンの改ざんを検出する装置である。
【００１０】
まず、実施形態のピア２０に記憶されるブロックチェーンのデータ構造の例について説明する。
【００１１】
図２は実施形態のブロックチェーンのデータ構造の例を示す図である。実施形態では、ブロックチェーンの構造が、鎖状である場合について説明する。なお、ブロックチェーンの構造は、鎖状に限られない。ブロックチェーンの構造が、鎖状でない場合の例は、実施形態の変形例１で後述する。
【００１２】
図２では、ｎは、ｎ番目のブロックに関するデータであることを示す。例えば、ブロック５０ｎは、ｎ番目のブロックを示し、ブロック５０ｎ−３は、ｎ−３番目のブロックを示す。また例えば、ブロックハッシュ５１ｎは、ｎ番目のブロック５０ｎのブロックハッシュを示し、ブロックハッシュ５１ｎ−１は、ｎ−１番目のブロック５０ｎ−１のブロックハッシュを示し、ブロックハッシュ５１ｎ−３は、ｎ−３番目のブロック５０ｎ−３のブロックハッシュを示し、ブロックハッシュ５１ｎ−４は、ｎ−４番目のブロック５０ｎ−４のブロックハッシュを示す。以下の説明では、ｎを区別しない場合、ｎを省略して説明する。
【００１３】
実施形態のブロックチェーンは、複数の取引記録５３がまとめられたブロック５０が時系列に追加されることにより作成される。それぞれのブロック５０には、時系列の昇順でブロック番号５２が付与される。ブロック番号５２は、ブロックチェーンに含まれるブロック５０の特定に使用される。
【００１４】
ブロック５０ｎは、ブロックハッシュ５１ｎ、前のブロック５０ｎ−１のブロックハッシュ５１ｎ−１、０以上の取引記録５３ｎ、及び、ブロック５０ｎのブロック番号５２ｎを含む。
【００１５】
ブロックハッシュ５１ｎは、前のブロック５０ｎ−１のブロックハッシュ５１ｎ−１、０以上の取引記録５３ｎ、及び、ブロック５０ｎのブロック番号５２ｎから計算されたハッシュ値である。ハッシュ値は、出力値（ハッシュ値）から入力値を計算する逆計算が困難で、ハッシュ衝突の確率が非常に低いハッシュ関数（例えば、ＳＨＡ−２５６等）によって計算された値である。ブロックハッシュ５１ｎは、ブロック５０ｎが生成されるときに、計算される。
【００１６】
ここで、取引記録５３ｎは、ブロック番号５２ｎ−３、ブロックハッシュ５１ｎ−３及び取引内容５４ｎを含む署名対象データと、当該署名対象データの電子署名５５ｎとを含む。すなわち、ｎ番目の取引記録５３ｎには、以前のブロック５０ｎ−ｋのブロックハッシュ５１ｎ−ｋ（図２の例では、ｋ＝３）が含まれている。
【００１７】
なお、取引記録５３ｎに含まれるブロック番号５２ｎ−３は、必須ではない。取引記録５３ｎにブロック番号５２ｎ−３が含まれていれば、ブロックチェーンに含まれる対象のブロックハッシュ５１ｎ−３を特定する処理をより高速にすることができる。
【００１８】
各ブロック５０に含まれるブロックハッシュ５１は再帰的に計算されているため、ブロックハッシュ５１の計算対象となる取引記録５３の集合は、当該取引記録５３を含むブロック５０以前のすべての取引記録５３であると考えられる。したがって、例えば、過去の取引記録５３を削除する改ざんが行われた場合、改ざんが行われた取引記録５３を含むブロック５０以降のブロックハッシュ５１がすべて変化する。
【００１９】
ここで、ブロックチェーンの改ざんの例について説明する。具体的な方法としては、例えば目的の取引記録５３を削除した後、その取引記録５３を計算対象として含んでいたブロックハッシュ５１をすべて再計算し、新しいブロックハッシュ５１を正当なものとしてブロックチェーンに上書きすればよい。なお、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式の場合には、全ブロックハッシュ５１の再計算に莫大な時間がかかるため、この再計算する方法は事実上不可能であった。しかしながら、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式の場合であっても、情報理論的安全性は満たしていない。そのため、例えばＰｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式を採用する暗号通貨では、悪意のユーザ（または悪意のユーザのグループ）が有する計算能力が、他の善意のユーザが有する計算能力を上回った場合、従来の技術では、今後、ブロックチェーンの改ざんの検出が困難になる可能性がある。
【００２０】
実施形態の改ざん検出システム１００は、ピア２０に記憶された時点では、正当なブロックチェーンが、後から改ざんされた場合の改ざんの検出をより容易にできるようにするシステムである。
【００２１】
なお、実施形態では、ブロックハッシュ５１は、すべての取引記録５３の集合から理論上再計算することができるが、処理の効率化の目的で、ブロック５０ごとに取引記録５３と合わせてピア２０に記憶される。
【００２２】
また、ブロックハッシュ５１の計算方式は任意でよい。実施形態のブロックハッシュ５１の計算方式は、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式よりも制約の少ない計算方式を想定しているが、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式でもよい。
【００２３】
図１に戻り、次に、端末１０の動作の詳細について説明する。なお、図１の改ざん検出システム１００の例では、端末１０が１つの場合を記載しているが、端末１０は複数あってもよい。すなわち、ピア２０と通信する端末１０の数は任意でよい。
【００２４】
端末１０は、受付部１１、取得部１２、生成部１３及び送信部１４を備える。図３のフローチャートも参照しながら、受付部１１、取得部１２、生成部１３及び送信部１４の動作の詳細について説明する。
【００２５】
＜端末の動作例＞
図３は実施形態の端末１０の動作例を示すフローチャートである。
【００２６】
はじめに、受付部１１は、ユーザから、取引内容５４ｎを示すデータの入力を受け付けると（ステップＳ１）、当該データを生成部１３に入力する。なお、取引内容５４ｎは任意でよい。取引内容５４ｎは、例えば暗号通貨の送金を示す。
【００２７】
次に、取得部１２は、ピア２０から、ブロックチェーンに含まれるブロックハッシュ５１ｎ−ｋと、当該ブロックハッシュ５１ｎ−ｋを含むブロック５０ｎ−ｋのブロック番号５２ｎ−ｋとを取得する（ステップＳ２）。なお、上述の図２の例ではｋ＝３である。ｋは、より小さいことが好ましいが、最新（ｋ＝１）である必要はない。
【００２８】
そのため、ブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋの取得タイミングは任意でよい。例えば、取得部１２は、ブロックチェーンに含まれるブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋを定期的（例えば、１分、１時間又は１日ごと等）に取得する。そして、取得部１２は、新たなブロックハッシュ５１ｎ−ｋ２及びブロック番号５２ｎ−ｋ２が取得された場合、当該ブロックハッシュ５１ｎ−ｋ２及びブロック番号５２ｎ−ｋ２を取得する前に取得されていたブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋを破棄する。
【００２９】
また例えば、取得部１２は、生成部１３が取引記録５３を生成するときに、生成部１３から取得要求を受け付けた場合に、ブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋを取得してもよい。
【００３０】
また例えば、取得部１２は、ピア２０によるブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋの送信契機で、ブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋをピア２０から受動的に取得してもよい。
【００３１】
また、取得対象のブロックハッシュ５１ｎ−ｋを選択する方法は任意でよい。例えば、取得部１２は、ブロックチェーンに含まれるブロックハッシュ５１のうち、ブロック番号５２に基づいて、より新しいブロックハッシュ５１ｎ−ｋを取得してもよい。実施形態では、ブロック番号がより大きいブロック５０ｎ−ｋのブロックハッシュ５１ｎ−ｋが取得対象となる。
【００３２】
また例えば、取得部１２は、ブロックチェーンに含まれるブロックハッシュ５１のうち、ブロックハッシュ５１が生成された時刻に基づいて、より新しいブロックハッシュ５１ｎ−ｋを取得してもよい。
【００３３】
また例えば、取得部１２は、ブロックチェーンに含まれるブロックハッシュ５１のうち、ブロックチェーンに既に記憶された取引記録５３がより多くハッシュ計算に使用されているブロックハッシュ５１を、より新しいブロックハッシュ５１ｎ−ｋとして取得してもよい。
【００３４】
取得部１２は、取得されたブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋを生成部１３に入力する。
【００３５】
次に、生成部１３は、受付部１１から取引内容５４ｎを示すデータを受け付け、取得部１２からブロックハッシュ５１ｎ−ｋ及びブロック番号５２ｎ−ｋを受け付ける。生成部１３は、端末１０の秘密鍵を使用して、ブロックハッシュ５１ｎ−ｋ、ブロック番号５２ｎ−ｋ及び取引内容５４ｎの電子署名５５ｎを生成する。そして、生成部１３は、ブロックハッシュ５１ｎ−ｋ、ブロック番号５２ｎ−ｋ、取引内容５４ｎ及び電子署名５５ｎを含む取引記録５３ｎ（第１の取引記録）を生成し（ステップＳ３）、当該取引記録５３ｎを送信部１４に入力する。
【００３６】
次に、送信部１４は、生成部１３から取引記録５３ｎを受け付けると、当該取引記録５３ｎをピア２０に送信する（ステップＳ４）。
【００３７】
図１に戻り、次に、ピア２０の動作の詳細について説明する。なお、図１の改ざん検出システム１００の例では、ピア２０が１つの場合を記載しているが、ピア２０は複数あってもよい。例えば、複数のピア管理者が、それぞれ１以上のピア２０を動作させてもよい。
【００３８】
ピア２０は、送信部２１、受信部２２、記憶制御部２３及び記憶部２４を備える。図４のフローチャートも参照しながら、送信部２１、受信部２２、記憶制御部２３及び記憶部２４の動作の詳細について説明する。
【００３９】
＜ピアの動作例＞
図４は実施形態のピア２０の動作例を示すフローチャートである。
【００４０】
はじめに、受信部２２は、端末１０（送信部１４）から、取引記録５３ｎを受信すると（ステップＳ１１）、当該取引記録５３ｎを記憶制御部２３に入力する。
【００４１】
記憶制御部２３は、受信部２２から取引記録５３ｎを受け付けると、当該取引記録５３ｎに含まれる電子署名５５ｎが有効であるか否かを判定する（ステップＳ１２）。電子署名５５ｎが有効でない場合（ステップＳ１２，Ｎｏ）、すなわち、取引記録５３ｎが既に改ざんされている場合、記憶制御部２３は、当該取引記録５３ｎを破棄する（ステップＳ１４）。
【００４２】
電子署名が有効である場合（ステップＳ１２，Ｙｅｓ）、記憶制御部２３は、取引記録５３ｎに含まれるブロック番号５２ｎ−ｋを使用して、ブロックチェーンに記憶されたブロックハッシュ５１ｎ−ｋを特定し、特定されたブロックハッシュ５１ｎ−ｋと、当該取引記録５３ｎに含まれるブロックハッシュ５１ｎ−ｋが一致するか否かを判定する（ステップＳ１３）。一致しない場合（ステップＳ１３，Ｎｏ）、記憶制御部２３は、当該取引記録５３ｎを破棄する（ステップＳ１４）。ステップＳ１２及びＳ１３の処理により、ステップＳ１１の処理により受信された取引記録５３ｎがピア２０に記憶される時点では、改ざんされていないことが保証される。
【００４３】
一致する場合（ステップＳ１３，Ｙｅｓ）、記憶制御部２３は、ブロック５０ｎを生成するか否かを判定する（ステップＳ１５）。ブロック５０ｎに含まれる取引記録５３ｎは、１つに限られず、複数でもよい。そのため、記憶制御部２３は、例えば所定の数の取引記録５３ｎが蓄積された場合、当該所定の数の取引記録５３ｎを含むブロック５０ｎを生成する。
【００４４】
ブロック５０ｎを生成しない場合（ステップＳ１５，Ｎｏ）、記憶制御部２３は、ステップＳ１１の処理により受信された取引記録５３ｎを、記憶制御部２３のバッファ等に蓄積する（ステップＳ１６）。
【００４５】
ブロック５０ｎを生成する場合（ステップＳ１５，Ｙｅｓ）、記憶制御部２３は、記憶制御部２３のバッファ等に蓄積されていた取引記録５３ｎと、ステップＳ１１の処理により受信された取引記録５３ｎとを含むブロック５０ｎを生成し、当該ブロック５０ｎを記憶部２４のブロックチェーンに記憶する（ステップＳ１７）。
【００４６】
次に、送信部２１が、ステップＳ１７の処理により生成されたブロック５０ｎのブロック番号５２ｎと、当該ブロック５０ｎに含まれるブロックハッシュ５１ｎとを端末１０に送信する（ステップＳ１８）。ステップＳ１８で送信されたブロックハッシュ５１ｎ及びブロック番号５２ｎは、ｎ＋１番目以降のブロックに含まれる取引記録５３で使用される。なお、ステップＳ１８の処理は省略されてもよい。例えば、端末１０の取得部１２が、ｎ＋１番目以降のブロックに含まれる取引記録５３を生成する際に、自律的にブロックハッシュ５１ｎ＋１−ｋ及びブロック番号５２ｎ＋１―ｋを取得する場合は、ステップＳ１８の処理は省略される。
【００４７】
図１に戻り、次に、検出装置３０の動作の詳細について説明する。なお、図１の改ざん検出システム１００の例では、検出装置３０が１つの場合を記載しているが、検出装置３０は複数あってもよい。
【００４８】
検出装置３０は、受信部３１及び検出部３２を備える。図１の例では、検出装置３０をピア２０の外部に設けることにより、ピア２０の管理者とは独立した監査人によって、ピア２０に記憶されているブロックチェーンの改ざんを検出可能にしている。
【００４９】
受信部３１は、ピア２０（送信部２１）からブロックチェーンを受信すると、当該ブロックチェーンを検出部３２に入力する。
【００５０】
検出部３２は、ブロックチェーンの各ブロック５０を判定することにより、当該ブロックチェーンの改ざんを検出する。
【００５１】
図５は実施形態の検出部３２の動作例を示す図である。なお、図５のｔｘは、取引記録５３（ｔｒａｎｓａｃｔｉｏｎ）を表す。
【００５２】
まず、検出部３２は、すべてのブロック５０に含まれるブロックハッシュ５１を再計算し、再計算することにより得られたハッシュ値が、ブロック５０に含まれるブロックハッシュ５１と一致するか否かを判定する（図５、１行目〜５行目）。検出部３２は、再計算することにより得られたハッシュ値が、ブロック５０に含まれるブロックハッシュ５１と一致しない場合、ブロックチェーンの改ざんを検出する。
【００５３】
次に、検出部３２は、ブロックチェーンのすべてのブロック５０に含まれる取引記録５３に含まれる電子署名５５が有効であるか否かを判定する（図５、８行目）。検出部３２は、ブロックチェーンのブロックに含まれる取引記録５３に含まれる電子署名５５が有効でない場合、ブロックチェーンの改ざんを検出する。
【００５４】
次に、検出部３２は、ブロック５０に含まれる取引記録５３に含まれるブロックハッシュ５１と同じブロックハッシュ５１がブロックチェーンに含まれていない場合、ブロックチェーンの改ざんを検出する。具体的には、検出部３２は、取引記録５３に含まれるブロック番号５２を使用してブロックチェーンから特定されたブロック５０のブロックハッシュ５１が、取引記録に含まれるブロックハッシュ５１と一致するか否かを判定する（図５、９行目〜１２行目）。検出部３２は、特定されたブロック５０のブロックハッシュ５１が、取引記録に含まれるブロックハッシュ５１と一致しない場合、ブロックチェーンの改ざんを検出する。
【００５５】
なお、図５に示す改ざんを検出する処理の順序は、一例であり、改ざんを検出する処理の順序は任意でよい。
【００５６】
＜実施形態の効果＞
以上説明したように、実施形態の改ざん検出システム１００は、１以上のピア２０のいずれかに接続可能な１以上の端末１０（第１の端末）と、検出装置３０とを備える。１以上の端末１０では、取得部１２が、ピア２０から、ブロックチェーンに含まれるブロックハッシュ５１を取得する。そして、送信部１４が、ブロックハッシュ５１と端末１０の取引内容５４に基づくデータ（実施形態では、取引内容５４そのもの）とを含む署名対象データ（第１の署名対象データ）、及び、署名対象データの電子署名５５を含む取引記録５３（第１の取引記録）を、ピア２０に送信する。また、検出装置３０では、受信部３１が、ピア２０からブロックチェーンを受信する。そして、検出部３２が、ブロックチェーンのブロック５０に含まれる取引記録５３に含まれる電子署名５５が有効でない、または、ブロック５０に含まれる取引記録５３に含まれるブロックハッシュ５１と同じブロックハッシュ５１がブロックチェーンに含まれていない場合、ブロックチェーンの改ざんを検出する。
【００５７】
これにより実施形態の改ざん検出システム１００によれば、ブロックチェーンの改ざんをより容易に検出することができる。特に、許可型ブロックチェーンのピア管理者に結託された場合であっても、ブロックチェーンの改ざんをより容易に検出することができる。
【００５８】
より具体的に説明すると、従来は、取引記録の追加、削除、及び、順序の入れ替え等の改ざんは、取引記録自体を改ざんするわけではないので、従来の取引記録自身の電子署名の検証では検出することができなかった。また、すべてのピアの管理者が結託して、取引記録の追加、削除、及び、順序の入れ替え等の改ざんを行った場合、ピア間でもブロックチェーンの内容が一致するので、ピア間の比較による改ざんの検出は困難だった。
【００５９】
ブロックハッシュ５１は、その計算対象となる取引記録５３の組成を、ほぼ１００％とみなせる確率で一意に確定する。つまり、取引記録５３の追加、削除、及び、順序の入れ替え等の改ざんが行われれば、実施形態の取引記録５３に含まれるブロックハッシュ５１が、ほぼ１００％とみなせる確率で、ブロックチェーンに含まれるブロックハッシュ５１と一致しない。
【００６０】
善意のユーザは改ざんに協力する理由がないので、善意のユーザの取引記録５３は、電子署名５５の有効性が確認されれば、改ざんされていないことが期待できる（これを改ざんするには、善意のユーザが改ざん後のデータに電子署名することが必要だから）。
【００６１】
したがって、その取引記録５３に含まれるブロックハッシュ５１は改ざんされていないことが期待でき、結果として、その計算対象となる取引記録５３は改ざんされていないことが期待できる（ハッシュ関数の逆演算が困難で、偶然に衝突が起きる確率はほぼ０％とみなせるから）。
【００６２】
よって、実施形態の検出部３２によって、改ざんが検出されなかったブロックチェーンは、善意のユーザの取引記録５３が多く含まれているほど、ピア管理者の信用とは無関係に、当該ブロックチェーンが改ざんされていないことが期待される。
【００６３】
逆に、ピア管理者がブロックチェーンを改ざんするためには、改ざん目的の取引記録５３から計算されるブロックハッシュ５１を含むすべての取引記録５３について、削除するか、または、そのユーザに改ざん後のブロックハッシュ５１を使って再度の電子署名を依頼するしかない（後者は改ざんへの協力依頼である）。善意のユーザの取引記録５３が多いほど、削除される取引記録５３が多数になり、この改ざんの影響は大規模になり、別の視点から改ざんが発覚する可能性が高い。
【００６４】
このように、実施形態によれば、ブロックチェーンを利用する善意のユーザが多いほど、ピア管理者の信用とは無関係に、ブロックチェーンが改ざんされていないことが検証可能になる。善意のユーザの典型例は、検証しようとしている監査人自身である。なお、善意のユーザが特定できない場合でも、利害の独立したユーザが多いほど、善意のユーザが相当数居ることを合理的に推定することができ、実施形態の効果が期待できる。
【００６５】
（実施形態の変形例１）
次に実施形態の変形例１について説明する。変形例１の説明では、上述の実施形態と同様の説明については省略し、上述の実施形態と異なる箇所について説明する。
【００６６】
変形例１では、ブロックチェーンの構造を一般化する。例えば、Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ方式でない場合、ブロックチェーンの構造は鎖状である必要はなく、またブロック番号５２も必要ない。ブロックチェーンに含まれる以前の取引記録５３からブロックハッシュを計算できることが本質であり、その計算方法、及び、計算に使用される取引記録５３の選択方法には自由度がある。
【００６７】
変形例１では、ハッシュ木（Ｍｅｒｋｌｅ  Ｔｒｅｅ）と呼ばれる木構造の計算によって、以前の取引記録５３からハッシュ値（ブロックハッシュ５１）を計算する場合について説明する。
【００６８】
図６は実施形態の変形例１のブロックハッシュ５１の計算方法の例を示す図である。図６の例は、ハッシュ値１０１ａ〜１０１ｆ、２０１ａ〜２０１ｃ及び３０１ａを含むハッシュ木を使用する場合を示す。例えば、記憶制御部２３は、新たなブロック５０を生成するときに、以前の取引記録５３に基づくブロックハッシュ５１として、ハッシュ値２０１ｃ及び３０１ａを使用して、ブロックハッシュ５１を計算する。得られたブロックハッシュ５１は、ハッシュ木に接続され、ハッシュ木が更新される。また、検出部３２は、ブロックチェーンを検証するときに、各ブロック５０の取引記録５３に含まれるハッシュ値（ブロックハッシュ５１）でハッシュ木を検索し、当該ハッシュ値がハッシュ木に含まれているか否かを判定する。
【００６９】
なお、ビットコインでは、ブロック内のハッシュ計算にハッシュ木が使われているが、ブロック間は鎖状構造となっている。この変形例１では、ブロックの接続にも、ハッシュ木が使われる。ブロックの接続関係がハッシュ木の構造を有することにより、例えば特定の取引記録５３（特定のブロックハッシュ５１）がブロックチェーンに含まれていることを検証するための時間をより短くすることができる。
【００７０】
また、図６の例では、取引記録５３は、取引内容５４、電子署名５５、取引記録番号５６、時刻５７、実行結果５８、ハッシュ値５９及びハッシュ値２０１ａを含む。電子署名５５の署名対象データは、ハッシュ値５９及びハッシュ値２０１ａである。
【００７１】
ハッシュ木に接続されるハッシュ値１０１ｂは、取引記録番号５６、時刻５７、実行結果５８、ハッシュ値５９及びハッシュ値２０１ａから計算される。
【００７２】
取引記録番号５６は、取引内容５４を特定する番号を示す。時刻５７は、取引内容５４の取引が行われた時刻を示す。実行結果５８は、スマートコントラクト等の処理の実行結果を示す。ハッシュ値５９は、取引内容５４から計算されたハッシュ値である。ハッシュ値１０１ｂ（ブロックハッシュ５１）の計算時に、取引内容５４のかわりに、取引内容５４に基づくハッシュ値５９が使用されることにより、取引内容５４自体が開示されることなく、ブロックチェーンの検証（改ざんの検出）が可能になる。
【００７３】
図７は実施形態の変形例１のブロックチェーンのデータ構造の例を示す図である。変形例１では、ブロックチェーンの構造は、木構造である（図６参照）。
【００７４】
図７では、ｘ，ｙは、ハッシュ木に含まれる特定のブロックに関するデータであることを示す。以下の説明では、ブロックを区別しない場合、ｘ，ｙを省略して説明する。
【００７５】
変形例１のブロックチェーンは、複数の取引記録５３がまとめられたブロック５０がハッシュ木に追加されることにより作成される。
【００７６】
ブロック５０ｙは、ブロックハッシュ５１ｙ、ハッシュ値２０１ｚ、ハッシュ値３０１ｗ、及び、１以上の取引記録５３ｙを含む。ハッシュ値２０１ｚ及び３０１ｗは、ハッシュ木に含まれるハッシュ値（過去の取引記録５３に基づいて計算されたブロックハッシュ５１）である。
【００７７】
ブロックハッシュ５１ｙは、ハッシュ値２０１ｚ、ハッシュ値３０１ｗ、及び、１以上の取引記録５３ｙから計算されたハッシュ値である。ブロックハッシュ５１ｙは、ブロック５０ｙが生成されるときに、計算される。
【００７８】
ここで、取引記録５３ｙは、ブロックハッシュ５１ｘ、電子署名５５ｙ、取引記録番号５６ｙ、時刻５７ｙ、実行結果５８ｙ及びハッシュ値５９ｙを含む。ハッシュ値５９ｙは、取引内容５４ｙから計算されるハッシュ値である。
【００７９】
ブロックハッシュ５１ｘは、木構造で記憶されているブロック５０のうち、いずれかのブロック５０ｘに含まれるブロックハッシュである。電子署名５５ｙの署名対象データは、ブロックハッシュ５１ｘ及びハッシュ値５９ｙである。
【００８０】
図８は実施形態の変形例１の検出部３２の動作例を示す図である。なお、図８のｔｘは、取引記録５３（ｔｒａｎｓａｃｔｉｏｎ）を表す。
【００８１】
まず、検出部３２は、ハッシュ木に記憶されているブロックハッシュ５１を再計算し、再計算することにより得られたハッシュ値が、ハッシュ木に記憶されているブロックハッシュ５１と一致するか否かを判定する（図８、１行目〜５行目）。検出部３２は、再計算することにより得られたハッシュ値が、ハッシュ木に記憶されているブロックハッシュ５１と一致しない場合、ブロックチェーンの改ざんを検出する。
【００８２】
次に、検出部３２は、木構造で接続されたブロック５０の取引記録５３に含まれる電子署名５５が有効であるか否かを判定する（図５、７行目）。検出部３２は、取引記録５３に含まれる電子署名５５が有効でない場合、ブロックチェーンの改ざんを検出する。
【００８３】
次に、検出部３２は、ブロック５０に含まれる取引記録５３に含まれるブロックハッシュ５１と同じブロックハッシュ５１がブロックチェーンに含まれていない場合、ブロックチェーンの改ざんを検出する（図５、８行目〜１０行目）。
【００８４】
以上説明したように、実施形態の変形例１によれば、ブロックチェーンの構造が、木構造である場合であっても、ブロックチェーンの改ざんをより容易に検出することができる。また、取引内容５４のかわりに、取引内容５４に基づくハッシュ値５９が使用されることにより、取引内容５４自体が開示されることなく、ブロックチェーンの検証が可能になる。
【００８５】
（実施形態の変形例２）
次に実施形態の変形例２について説明する。変形例２の説明では、上述の実施形態と同様の説明については省略し、上述の実施形態と異なる箇所について説明する。
【００８６】
変形例２では、実施形態の端末１０（第１の端末）と、ブロックハッシュ５１及びブロック番号５２を含まない取引記録を生成する端末（第２の端末）とが混在する場合の動作について説明する。具体的には、例えばブロックハッシュ５１及びブロック番号５２を含まない取引記録を生成する端末を、実施形態の端末１０（第１の端末）に順次、移行するシステム移行期などでの動作について説明する。
【００８７】
第１の端末は、上述の第１の取引記録（ブロックハッシュ５１ｎ−ｋ、ブロック番号５２ｎ−ｋ、取引内容５４ｎ及び電子署名５５ｎを含む取引記録５３ｎ）をピア２０に送信する。
【００８８】
第２の端末は、第２の端末の取引内容を含む署名対象データ（第２の署名対象データ）、及び、当該署名対象データの電子署名を含む取引記録（第２の取引記録）を、ピア２０に送信する。
【００８９】
ピア２０の記憶制御部２３は、第１及び第２の取引記録の少なくとも一方を含むブロックをブロックチェーンに記憶する。記憶制御部２３は、第１の取引記録については、上述のステップＳ１３の処理を実行し、第２の取引記録については、上述のステップＳ１３の処理を実行しない。
【００９０】
変形例２の構成でも、善意のユーザが一定以上の頻度で、第１の取引記録を登録する場合には、実施形態と同様の効果は保たれる。ここで、善意のユーザとは、取引記録に電子署名を付与するユーザであって、ピア管理者とは独立しており、ブロックチェーンの改ざんによって利益を得ない者である。
【００９１】
（実施形態の変形例３）
次に実施形態の変形例３について説明する。変形例３の説明では、上述の実施形態と同様の説明については省略し、上述の実施形態と異なる箇所について説明する。
【００９２】
変形例３では、善意のユーザとして、特定のユーザが、端末１０を介して、定期的にブロックチェーンに、取引記録５３を記憶する場合について説明する。ここで、特定のユーザとは、例えば第三者的な立場で広く信用のおける組織を想定する。当該特定のユーザにより使用される端末１０が、取引内容５４として「定期的な第三者によるアクセス」を記録する。取引自体の記録は目的ではなく、定期的に取引記録５３をブロックチェーンに記憶することに目的がある。取引記録５３にはブロックハッシュ５１が含まれており、特定のユーザは信用できるから、そのブロックハッシュ５１の計算対象となる取引記録５３は改ざんされていないことが検証できる。
【００９３】
また、検出部３２は、特定のユーザの取引記録５３が定期的に、ブロックチェーンに記憶されていない場合にも、改ざんを検出できる。例えば、悪意のあるユーザが、取引記録５３を削除する改ざんをし、ブロックチェーンに定期的に記憶されているはずの取引記録５３の一部又は全部が記憶されていない場合、当該ブロックチェーンの改ざんが発覚する。
【００９４】
なお、実施形態の端末１０を特定のユーザにのみ使用させることにより、改ざん検出システム１００を上述の変形例２の形態で運用してもよいが、この場合には、ブロックチェーンの改ざんの検出は、特定のユーザの信用に全面的に依存することになる。
【００９５】
最後に、実施形態の端末１０、ピア２０及び検出装置３０のハードウェア構成の例について説明する。
【００９６】
［ハードウェア構成の例］
図９は実施形態の端末１０、ピア２０及び検出装置３０のハードウェア構成の例を示す図である。端末１０、ピア２０及び検出装置３０は、制御装置４０１、主記憶装置４０２、補助記憶装置４０３、表示装置４０４、入力装置４０５及び通信装置４０６を備える。制御装置４０１、主記憶装置４０２、補助記憶装置４０３、表示装置４０４、入力装置４０５及び通信装置４０６は、バス４１０を介して接続されている。
【００９７】
制御装置４０１は、補助記憶装置４０３から主記憶装置４０２に読み出されたプログラムを実行する。主記憶装置４０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及び、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリである。補助記憶装置４０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びメモリカード等である。
【００９８】
表示装置４０４は情報を表示する。表示装置４０４は、例えば液晶ディスプレイ等である。入力装置４０５は、入力を受け付けるインタフェースである。入力装置４０５は、例えばキーボード及びマウス等である。表示装置４０４及び入力装置４０５は、表示機能と入力機能とを有するタッチパネル等でもよい。通信装置４０６は、他の装置と通信するためのインタフェースである。
【００９９】
実施形態の端末１０、ピア２０及び検出装置３０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ及びＤＶＤ等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
【０１００】
また実施形態の端末１０、ピア２０及び検出装置３０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また実施形態の端末１０、ピア２０及び検出装置３０で実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１０１】
また実施形態の端末１０、ピア２０及び検出装置３０のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１０２】
実施形態の端末１０、ピア２０及び検出装置３０で実行されるプログラムは、上述した図１の機能ブロックのうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置４０１が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置４０２上にロードされる。すなわち上記各機能ブロックは主記憶装置４０２上に生成される。
【０１０３】
なお上述した図１の各機能ブロックの一部又は全部をソフトウェアにより実現せずに、ＩＣ等のハードウェアにより実現してもよい。
【０１０４】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２以上を実現してもよい。
【０１０５】
また実施形態の端末１０、ピア２０及び検出装置３０の動作形態は任意でよい。実施形態の端末１０、ピア２０及び検出装置３０を、例えばネットワーク上のクラウドシステムを構成する装置として動作させてもよい。
【０１０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１０７】
例えば、当業者が容易に成し得る変形も、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。具体的には、例えば上述のハッシュ値の計算で使用されるデータ構造は、鎖状構造及び木構造に限られない。ハッシュ値の計算方法は、さまざまなトポロジーによる計算、それらの計算の組み合わせ、及び、計算結果の再帰的な利用など、さまざま変形が可能である。
【図１】
0006989694.tif 000002
【図２】
0006989694.tif 000003
【図３】
0006989694.tif 000004
【図４】
0006989694.tif 000005
【図５】
0006989694.tif 000006
【図６】
0006989694.tif 000007
【図７】
0006989694.tif 000008
【図８】
0006989694.tif 000009
【図９】
0006989694.tif 000010