(57)【要約】  分散型ネットワークにより接続されたサーバ２００に対してクライアント１００が生成したデータを送信する際に、当該クライアント１００おいて生成したデータと、クライアント１００において発行した秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、データとハッシュ値とをデータセットとしてサーバ２００に送信することにより、秘密情報を知らない不正ユーザがクライアント１００のなりすましによってサーバ２００にデータとそのハッシュ値を書き込んだとしても、検証の際に、なりすましのデータと秘密情報との組み合わせから算出されるハッシュ値が、サーバ２００に書き込まれているハッシュ値と一致しなくなるようにして、なりすましによる不正なデータであると判別することができるようにする。
2019234850.tif 000002
【特許請求の範囲】
【請求項１】
分散型ネットワークにより接続されたサーバと、データを生成して上記サーバに送信するクライアントとを備え、
上記クライアントは、
上記データを生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により生成された上記データと上記秘密情報発行部により発行された上記秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により生成された上記データと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして上記サーバに送信するデータセット送信部とを備え、
上記サーバは、
上記クライアントから送信されてくる上記データセットを保存する記憶制御部を備えたことを特徴とするセキュリティシステム。
【請求項２】
上記ハッシュ演算部は、あるデータについて上記秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、上記あるデータ、上記秘密情報および上記別のデータについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出することを特徴とする請求項１に記載のセキュリティシステム。
【請求項３】
上記記憶制御部は、上記データセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項１に記載のセキュリティシステム。
【請求項４】
上記記憶制御部は、上記データセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項２に記載のセキュリティシステム。
【請求項５】
上記記憶制御部は、あるデータセットに対して上記ハッシュ値を算出する際に、別のデータセットについて算出済みのハッシュ値を更に組み合わせて、上記あるデータセットおよび上記別のデータセットについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項３に記載のセキュリティシステム。
【請求項６】
上記記憶制御部は、あるデータセットに対して上記ハッシュ値を算出する際に、別のデータセットについて算出済みのハッシュ値を更に組み合わせて、上記あるデータセットおよび上記別のデータセットについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項４に記載のセキュリティシステム。
【請求項７】
上記データ生成部は、１つのプロジェクトとして、異なる内容のデータの生成を繰り返し実行し、
上記ハッシュ演算部および上記データセット送信部は、上記データ生成部により上記データが生成される毎に処理を行って上記データセットを上記サーバに繰り返し送信し、
上記クライアントは、上記サーバに保存されたデータの正当性を検証する際に上記秘密情報を上記サーバに送信する秘密情報送信部を更に備えたことを特徴とする請求項１〜６の何れか１項に記載のセキュリティシステム。
【請求項８】
データを生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により生成された上記データと上記秘密情報発行部により発行された上記秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により生成された上記データと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして、分散型ネットワークにより接続されたサーバに送信するデータセット送信部とを備えたことを特徴とするデータ処理装置。
【請求項９】
上記ハッシュ演算部は、あるデータについて上記秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、上記あるデータ、上記秘密情報および上記別のデータについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出することを特徴とする請求項７に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティシステムおよびデータ処理装置に関し、特に、クライアントからサーバに提供されるデータについて、第三者によるなりすまし、改ざんといった不正行為を防止する技術に関するものである。
【背景技術】
【０００２】
近年、様々な分野において、ブロックチェーン技術の活用例が増えてきている。ブロックチェーンは、ブロックと呼ばれるデータの単位を一定時間ごとに生成し、チェーンのように連結していくことによりデータを保管するシステムである。あるブロックの内容は直前のブロックのハッシュ値に依存するため、いったんチェーンに追加されたブロックを改ざんすることは、それ以降のブロックを全て破棄しない限りできないとされている。【０００３】
このように、ブロックチェーンのネットワークにデータが書き込まれた後は、ブロックチェーンの特性により、データの改ざんを困難にすることが可能である。しかしながら、ブロックチェーン上のノードを構成するサーバにデータが書き込まれる前の段階において、次のような問題があった。第１に、クライアントからサーバにデータが書き込まれるまでの間に、データの改ざんが行われる可能性がある。第２に、クライアントのなりすましによってブロックチェーンにデータが書き込まれた場合、真のデータとの区別ができなくなる。【０００４】
なお、発生するデータごとにハッシュ値を計算し、ハッシュチェーンを作成することによってデータの改ざんを防止する技術が開示されている（例えば、特許文献１〜３参照）。また、所定の情報と秘密情報とを合わせてハッシュ計算をすることによって認証精度を改善する技術も知られている（例えば、特許文献４，５参照）。【０００５】
【特許文献１】特開２００６−３４３７号公報
【特許文献２】特開２０１５−１８００９７号公報
【特許文献３】特許第５７５３２７３号公報
【特許文献４】特開２０１２−３６４８号公報
【特許文献５】特開２０１５−２３１１７７号公報
【発明の開示】
【０００６】
しかしながら、特許文献４に記載の秘密情報は、クライアントからサーバに送信して保存され、認証処理時にサーバ装置の正当性を検証するために用いられる。そのため、特許文献４に記載の技術を用いても、クライアントのなりすましによってサーバに書き込まれた不正なデータを正当なデータと区別できるようにはならない。
【０００７】
これに対し、特許文献５に記載のシステムは、ユーザごとに異なる秘密情報を個人情報に追加することで、ユーザごとに一意のデータを作成し、そのハッシュの照合によってユーザを正しく識別するものである。しかしながら、秘密情報を含むハッシュ計算は、生体認証サービスシステムの登録局サーバが秘密情報を発行して行うようになされている。これは、登録局がユーザに対して匿名ＩＤを付与する場合において、ユーザがアプリケーション事業者に対して生体認証の利用申請をする際に、アプリケーション事業者に対して匿名ＩＤと実際のユーザＩＤとの紐付けの正当性を保証するためである。よって、この特許文献５に記載の技術を用いても、クライアントのなりすましによってサーバに書き込まれた不正なデータを正当なデータと区別できるようにはならない。
【０００８】
本発明は、このような問題を解決するために成されたものであり、クライアントのなりすましによってサーバに書き込まれた不正なデータを正当なデータと区別できるようにすることを目的とする。また、本発明はさらに、サーバに書き込まれる前の段階でクライアント内でデータの改ざんが行われることを防止できるようにすることを目的とする。
【０００９】
上記した課題を解決するために、本発明では、分散型ネットワークにより接続されたサーバに対してクライアントが生成したデータを送信する際に、クライアントおいて生成したデータと、クライアントにおいて発行した秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、データとハッシュ値とをデータセットとしてサーバに送信するようにしている。
【００１０】
本発明の他の態様では、クライアントにおいて、あるデータについて秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、あるデータと、秘密情報と、別のデータについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するようにしている。
【００１１】
上記のように構成した本発明によれば、秘密情報を知らない第三者がクライアントのなりすましによってサーバにデータとそのハッシュ値を書き込んだとしても、検証の際に、なりすましのデータと秘密情報との組み合わせから算出されるハッシュ値が、サーバに書き込まれているハッシュ値と一致しないため、なりすましによる不正なデータであると判別することができる。このように、本発明によれば、クライアントのなりすましによってサーバに書き込まれた不正なデータを正当なデータと区別することができる。
【００１２】
本発明の他の特徴によれば、クライアントにおいて生成される複数のデータについて、ハッシュ値によって結び付けられたハッシュチェーンが形成されることになる。このため、あるデータを改ざんしようとしても、ハッシュチェーンで繋がりのある他のデータも全て改ざんすることが必要となるため、改ざんが難しくなる。これにより、本発明によれば、サーバに書き込まれる前の段階でクライアント内でデータの改ざんが行われることを防止することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態によるセキュリティシステムの全体構成例を示す図である。
【図２】本実施形態によるクライアントの機能構成例を示すブロック図である。
【図３】ハッシュ演算部によるハッシュ計算の内容を模式的に示す図である。
【図４】本実施形態によるサーバの機能構成例を示すブロック図である。
【図５】記憶制御部によるハッシュ計算の内容を模式的に示す図である。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態によるセキュリティシステムの全体構成例を示す図である。図１に示すように、本実施形態によるセキュリティシステムは、データを生成してサーバに送信するクライアント１００と、分散型ネットワークにより接続された複数のサーバ２００Ａ〜２００Ｃ（以下、どれか１つを特定しない場合は単にサーバ２００と記すこともある）とを備えて構成されている。【００１５】
クライアント１００は、データ処理装置に相当するものであり、データを生成する機能を有する端末であれば何でもよい。例えば、パーソナルコンピュータ、スマートフォン、タブレット端末、車載端末、ゲーム端末、各種業界の専用処理端末などによりクライアント１００が構成される。なお、実際にはクライアント１００は複数存在するが、説明の簡便のため１つのみ図示している。【００１６】
クライアント１００とサーバ２００との間は、インターネットや携帯電話網等の通信ネットワークにより接続可能に構成されている。図１では、クライアント１００がサーバ２００Ａに接続された状態を示しているが、クライアント１００は分散型ネットワーク内にあるサーバ２００Ａ〜２００Ｃの何れかと任意に接続することが可能である。【００１７】
分散型ネットワークにより接続された複数のサーバ２００Ａ〜２００Ｃには、ブロックチェーン技術が導入されている。すなわち、後述するように、ブロックチェーン技術によって、データが複数のサーバ２００Ａ〜２００Ｃにおいて共有されている。なお、図示の簡略ため、図１では３つのサーバ２００Ａ〜２００Ｃを示しているが、２つであってもよいし、４つ以上であってもよい。【００１８】
本実施形態では、あるプロジェクトに参加するユーザがクライアント１００においてデータの生成を繰り返し実行し、生成したデータをサーバ２００に逐次送信するものとする。プロジェクトは任意である。一例として、薬剤や医療器具、治療方法等の安全性、有効性などを確認するための臨床試験（治験）が挙げられる。この場合、クライアント１００は、患者に関する各種の治験データを生成し、生成した治験データをサーバ２００に送信することを、治験が終了するまで日次で繰り返す。治験データとは、患者について測定された生体情報や、患者の症状などを含む問診に対する回答情報、各種テストの結果を示す情報などの少なくとも１つを含むデータである。【００１９】
最近では、疾患治療用の専用アプリケーション（以下、治療用アプリという）をインストールしたスマートフォンを疾患治療のために活用する試みが行われるようになってきている。例えば、ニコチン依存症や睡眠障害などの疾患を、患者の生活習慣の改善を通じて治療することを目的とした治療用アプリの開発が進められている。治療用アプリを医療機器として活用するためには、医療品医療機器等法の承認を得る必要がある。そして、その承認を得るためには、治療用アプリを用いた治療効果の有効性を検証する治験を行うことが必要となる。この場合、クライアント１００は、治療用アプリを実行することによって各種の治験データを生成し、生成した治験データをサーバ２００に送信することを、治験が終了するまで日次で繰り返す。【００２０】
なお、ここに挙げた治験は、あくまでもプロジェクトの一例であり、これに限定されるものではない。例えば、企業における新規事業の立ち上げや新製品開発などもプロジェクトの一例である。プロジェクトは、その開始から終了までの期間中に、クライアント１００において定期的または不定期にデータを繰り返し生成し、サーバ２００に送信するものであれば、何れも本実施形態のセキュリティシステムを適用することが可能である。【００２１】
図２は、本実施形態によるクライアント１００の機能構成例を示すブロック図である。図２に示すように、本実施形態のクライアント１００は、その機能構成として、秘密情報発行部１１、データ生成部１２、ハッシュ演算部１３、データセット送信部１４および秘密情報送信部１５を備えている。また、本実施形態のクライアント１００は、不揮発性の記憶媒体として、秘密情報記憶部１６およびデータ記憶部１７を備えている。【００２２】
上記各機能ブロック１１〜１５は、ハードウェア、ＤＳＰ（Digital Signal Processor）、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック１１〜１５は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。【００２３】
秘密情報発行部１１は、秘密情報を発行する。秘密情報は、例えば乱数発生器により発生される所定桁数の英数字の組み合わせから成る文字列とすることが可能である。あるいは、クライアント１００のユーザが任意に設定した文字列としてもよい。例えば、上述した治療用アプリの治験を行う場合、秘密情報発行部１１は、治療用アプリをクライアント１００にインストールして治験を開始する際に、治療用アプリの一機能として秘密情報を発行する。【００２４】
秘密情報発行部１１により発行された秘密情報は、秘密情報記憶部１６に記憶して保存される。秘密情報記憶部１６に記憶された秘密情報は、後述するように、クライアント１００において生成されたデータのハッシュ値を計算する際に使用される。これにより算出されたハッシュ値はサーバ２００に送信されるが、秘密情報は治験が終了するまでサーバ２００には送信されず、クライアント１００内において秘密に保持される。【００２５】
データ生成部１２は、サーバ２００に送信するためのデータを生成する。データ生成部１２は、１つのプロジェクトとして、異なる内容のデータの生成を繰り返し実行する。例えば、治療用アプリの治験に本実施形態を適用する場合、データ生成部１２は、異なる内容の治験データの生成を日次で繰り返し実行する。また、企業における事業プロジェクトの実行に本実施形態を適用する場合、データ生成部１２は、異なる内容の議事録データなどを日次や週時、または不定期に繰り返し生成する。【００２６】
データ生成部１２により生成されたデータは、データ記憶部１７に記憶されて保存される。なお、データ生成部１２は、生成したデータをデータ記憶部１７に記憶させる際に、当該データを暗号化し、暗号化済みのデータをデータ記憶部１７に記憶させるようにしてもよい。また、データ生成部１２により生成されたデータは、データセット送信部１４を介してサーバ２００に送信される。【００２７】
ハッシュ演算部１３は、データ生成部１２によりデータが生成される都度、生成されたデータと、秘密情報発行部１１により発行されて秘密情報記憶部１６に記憶された秘密情報との組み合わせに対してハッシュ計算をすることにより、ハッシュ値を算出する。ハッシュ演算部１３により算出されたハッシュ値は、対応するデータと関連付けてデータ記憶部１７に記憶され、プロジェクトが終了するまで保存される。また、ハッシュ演算部１３により算出されたハッシュ値は、データセット送信部１４を介してサーバ２００に送信される。【００２８】
ハッシュ演算部１３は、あるデータについて秘密情報との組み合わせからハッシュ値を算出する際に、ハッシュ値記憶部１７に記憶されているハッシュ値、すなわち、別のデータについて算出済みのハッシュ値を更に組み合わせてハッシュ値を算出する。すなわち、ハッシュ演算部１３は、上記あるデータ（データ生成部１２により今回生成されたデータ）と、秘密情報記憶部１６に記憶されている秘密情報と、別のデータについて算出済みでハッシュ値記憶部１７に記憶されているハッシュ値との組み合わせに対してハッシュ計算をすることにより、ハッシュ値を算出する。【００２９】
別のデータについて算出済みのハッシュ値は、過去に生成されたデータについて既に算出されたハッシュ値であれば何でもよい。一例として、直前に生成されたデータについて算出されたハッシュ値とすることが可能である。【００３０】
図３は、ハッシュ演算部１３によるハッシュ計算の内容を模式的に示す図である。なお、図３において、縦方向は時間軸であり、一番上がプロジェクトの開始時で、下に行くほど時間が経過していることを示している。図３に示す例において、秘密情報発行部１１により発行された秘密情報（秘密情報記憶部１６に記憶された秘密情報）は、“ａｂｃ”という文字列である。この秘密情報“ａｂｃ”は、プロジェクトの開始時に発行され、プロジェクトが終了するまで繰り返し使用される。【００３１】
データ生成部１２は、異なる内容のデータ“Ｄａｔａ１”，“Ｄａｔａ２”，“Ｄａｔａ３”，・・・を繰り返し生成する。まず、データ生成部１２により１つ目のデータ“Ｄａｔａ１”が生成されたとき、ハッシュ演算部１３は、当該１つ目のデータ“Ｄａｔａ１”と、秘密情報記憶部１６に記憶されている秘密情報“ａｂｃ”との組み合わせに対してハッシュ計算をすることにより、１つ目のハッシュ値“Ｈａｓｈ１”を算出する。ハッシュ演算部１３により算出された１つ目のハッシュ値“Ｈａｓｈ１”は、１つ目のデータ“Ｄａｔａ１”と関連付けてデータ記憶部１７に記憶される。【００３２】
次に、データ生成部１２により２つ目のデータ“Ｄａｔａ２”が生成されたとき、ハッシュ演算部１３は、当該２つ目のデータ“Ｄａｔａ２”と、秘密情報記憶部１６に記憶されている秘密情報“ａｂｃ”と、データ記憶部１７に記憶されている１つ目のハッシュ値“Ｈａｓｈ１”との組み合わせに対してハッシュ計算をすることにより、２つ目のハッシュ値“Ｈａｓｈ２”を算出する。ハッシュ演算部１３により算出された２つ目のハッシュ値“Ｈａｓｈ２”は、２つ目のデータ“Ｄａｔａ２”と関連付けてデータ記憶部１７に記憶される。【００３３】
次いで、データ生成部１２により３つ目のデータ“Ｄａｔａ３”が生成されたとき、ハッシュ演算部１３は、当該３つ目のデータ“Ｄａｔａ３”と、秘密情報記憶部１６に記憶されている秘密情報“ａｂｃ”と、データ記憶部１７に記憶されている２つ目のハッシュ値“Ｈａｓｈ２”との組み合わせに対してハッシュ計算をすることにより、３つ目のハッシュ値“Ｈａｓｈ３”を算出する。ハッシュ演算部１３により算出された３つ目のハッシュ値“Ｈａｓｈ３”は、３つ目のデータ“Ｄａｔａ３”と関連付けてデータ記憶部１７に記憶される。【００３４】
以下同様にして、データ生成部１２によりデータが生成される都度、ハッシュ値の算出が実行される。このように、本実施形態では、今回生成された最新のデータについて秘密情報との組み合わせからハッシュ値を算出する際に、直前に生成された別のデータについて算出済みのハッシュ値を更に組み合わせてハッシュ値を算出し、算出したハッシュ値を最新のデータに関連付けて記憶するようにしている。【００３５】
以上の処理により、クライアント１００において生成される複数のデータについて、ハッシュ値によって結び付けられたハッシュチェーンが形成されることになる。このため、あるデータを改ざんしようとしても、ハッシュチェーンで繋がりのある他のデータも全て改ざんすることが必要となるため、改ざんが難しくなる。これにより、クライアント１００で生成されたデータの改ざんを防止することが可能となる。【００３６】
データセット送信部１４は、データ生成部１２により生成されたデータと、ハッシュ演算部１３により算出されたハッシュ値とをデータセットとしてサーバ２００に送信する。ハッシュ演算部１３およびデータセット送信部１４は、データ生成部１２によりデータが生成される毎に処理を行って、データセットをサーバ２００に繰り返し送信する。例えば、データ生成部１２によりデータが日次で生成される場合は、ハッシュ演算部１３およびデータセット送信部１４の処理も日次で行い、データセットを日次でサーバ２００に繰り返し送信する。【００３７】
図３に示した例の場合、データセット送信部１４は、データ生成部１２により１つ目のデータ“Ｄａｔａ１”が生成され、それに対応してハッシュ演算部１３により１つ目のハッシュ値“Ｈａｓｈ１”が算出されたときに、この２つを組み合わせて１つ目のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝とし、これをサーバ２００に送信する。【００３８】
次に、データ生成部１２により２つ目のデータ“Ｄａｔａ２”が生成され、それに対応してハッシュ演算部により２つ目のハッシュ値“Ｈａｓｈ２”が算出されたときに、データセット送信部１４は、この２つを組み合わせて２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝とし、これをサーバ２００に送信する。【００３９】
さらに、データ生成部１２により３つ目のデータ“Ｄａｔａ３”が生成され、それに対応してハッシュ演算部により３つ目のハッシュ値“Ｈａｓｈ３”が算出されたときに、データセット送信部１４は、この２つを組み合わせて３つ目のデータセット｛Ｄａｔａ３，Ｈａｓｈ３｝とし、これをサーバ２００に送信する。４つ目以降も同様である。【００４０】
サーバ２００は、このようにしてクライアント１００から送信されたデータセットをブロック単位にまとめ、ブロックデータとして時系列に保存する。このブロックデータの保存は、いわゆるブロックチェーン技術で公知の方法により実行される。【００４１】
秘密情報送信部１５は、プロジェクトの終了時に秘密情報をサーバ２００に送信する。これは、プロジェクトの実行中にクライアント１００からサーバ２００に逐次送信されて保存されたデータの正当性を検証する際に、当該秘密情報を使用するためである。【００４２】
ここではデータの正当性を検証するタイミングをプロジェクトの終了時としているが、必ずしもこれに限定されない。例えば、プロジェクト実行中の途中段階でも、サーバ２００に保存されたデータの正当性を検証する必要がある場合は、そのタイミングで秘密情報をサーバ２００に送信してよい。なお、プロジェクトの途中段階で秘密情報をサーバ２００に送信した場合、クライアント１００において別の秘密情報を再発行し、それ以降は再発行された秘密情報を用いるようにしてもよい。【００４３】
図４は、本実施形態によるサーバ２００の機能構成例を示すブロック図である。なお、ここではサーバ２００Ａの機能構成を示しているが、他のサーバ２００Ｂ，２００Ｃも同様に構成されている。【００４４】
図４に示すように、本実施形態によるサーバ２００Ａは、その機能構成として、データセット取得部２１、コンセンサス処理部２２、記憶制御部２３、秘密情報取得部２４および検証部２５を備えている。また、サーバ２００Ａは、記憶媒体としてデータ記憶部２６を備えている。【００４５】
上記各機能ブロック２１〜２５は、ハードウェア、ＤＳＰ、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック２１〜２６は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。【００４６】
データセット取得部２１は、クライアント１００より送信されたデータセットを逐次取得する。コンセンサス処理部２２は、複数のサーバ２００Ａ〜２００Ｃの全体で、データセット取得部２１により取得されたデータセットを共有するための合意形成処理を行う。すなわち、サーバ２００Ａのコンセンサス処理部２２は、データセット取得部２１により取得されたデータセットを他のサーバ２００Ｂ，２００Ｃに送信し、所定の合意形成処理を行う。【００４７】
コンセンサス処理部２２が行う合意形成処理として、ブロックチェーン技術で公知のコンセンサスアルゴリズムを用いることが可能である。例えば、コンセンサス処理部２２は、ＰＢＦＴ（Practical Byzantine Fault Tolerance）のコンセンサスアルゴリズムを用いて合意形成処理を行うことにより、データセット取得部２１により取得されたデータセットの正当性を検証する。なお、使用するコンセンサスアルゴリズムはＰＢＦＴに限定されない。例えば、Proof of Work、Proof of Stake、Paxos、Raft、Sieveなどの他のコンセンサスアルゴリズムを用いてもよい。【００４８】
記憶制御部２３は、コンセンサス処理部２２により合意形成された場合にのみ、データセットをデータ記憶部２６に記憶させる。これにより、複数のサーバ２００Ａ〜２００Ａにおいて、合意形成されたデータセットが分散して保存される。【００４９】
また、記憶制御部２３は、データセット取得部２１がクライアント１００から逐次取得したデータセット（コンセンサス処理部２２により合意形成されたデータセット）をブロック単位にまとめ、ブロックデータとして時系列にデータ記憶部２６に記憶させる。ブロックデータにまとめる単位は、１つのデータセットで１つのブロックを構成してもよいし、複数のデータセットで１つのブロックを構成してもよい。【００５０】
このとき記憶制御部２３は、データセット取得部２１により今回取得されて合意形成されたデータセットと、別のデータセットについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、このハッシュ値と関連付けてデータセットをデータ記憶部２６に記憶させる。【００５１】
図５は、記憶制御部２３によるハッシュ計算の内容を模式的に示す図である。なお、図５において、縦方向は時間軸であり、一番上がプロジェクトの開始時で、下に行くほど時間が経過していることを示している。図５に示すように、データセット取得部２１は、クライアント１００から複数のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝，｛Ｄａｔａ２，Ｈａｓｈ２｝，｛Ｄａｔａ３，Ｈａｓｈ３｝，・・・を逐次取得する。【００５２】
まず、データセット取得部２１により１つ目のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝が取得され、それについてコンセンサス処理部２２により合意形成が行われたとき、記憶制御部２３は、当該データセット｛Ｄａｔａ１，Ｈａｓｈ１｝に対してハッシュ計算をすることにより、１つ目のハッシュ値“Ｈａｓｈ１１”を算出する。そして、記憶制御部２３は、当該１つ目のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝と１つ目のハッシュ値“Ｈａｓｈ１１”とを１つのブロックにまとめ、ブロックデータとしてデータ記憶部２６に記憶させる。【００５３】
次に、データセット取得部２１により２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝が取得され、それについてコンセンサス処理部２２により合意形成が行われたとき、記憶制御部２３は、当該２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝と、データ記憶部２６に記憶されている１つ目のハッシュ値“Ｈａｓｈ１１”との組み合わせに対してハッシュ計算をすることにより、２つ目のハッシュ値“Ｈａｓｈ１２”を算出する。そして、記憶制御部２３は、当該２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝と２つ目のハッシュ値“Ｈａｓｈ１２”とを１つのブロックにまとめ、ブロックデータとしてデータ記憶部２６に記憶させる。【００５４】
次いで、データセット取得部２１により３つ目のデータセット｛Ｄａｔａ３，Ｈａｓｈ３｝が取得され、それについてコンセンサス処理部２２により合意形成が行われたとき、記憶制御部２３は、当該３つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝と、データ記憶部２６に記憶されている２つ目のハッシュ値“Ｈａｓｈ１２”との組み合わせに対してハッシュ計算をすることにより、３つ目のハッシュ値“Ｈａｓｈ１３”を算出する。そして、記憶制御部２３は、当該３つ目のデータセット｛Ｄａｔａ３，Ｈａｓｈ３｝と３つ目のハッシュ値“Ｈａｓｈ１３”とを１つのブロックにまとめ、ブロックデータとしてデータ記憶部２６に記憶させる。【００５５】
以下同様にして、データセット取得部２１によりデータセットが取得されてコンセンサス処理部２２により合意形成が行われる都度、ハッシュ値の算出が実行される。このように、本実施形態では、クライアント１００から今回取得された最新のデータセットについてハッシュ値を算出する際に、直前にクライアント１００から取得された別のデータセットについて算出済みのハッシュ値を更に組み合わせてハッシュ値を算出し、算出したハッシュ値と関連付けて最新のデータセットをデータ記憶部２６に記憶させるようにしている。【００５６】
以上の処理により、複数のサーバ２００Ａ〜２００Ｃで分散保存される複数のデータセットについて、ハッシュ値によって結び付けられたハッシュチェーンが形成されることになる。このため、あるデータセットの中のデータを改ざんしようとしても、ハッシュチェーンで繋がりのある他のデータセットも全て改ざんすることが必要となるため、改ざんが難しくなる。これにより、サーバ２００に保存されたデータの改ざんを防止することが可能となる。【００５７】
上述したように、本実施形態では、クライアント１００においてもその内部でハッシュチェーンを形成し、サーバ２００においてもハッシュチェーンを形成しているので、２重のチェーンが形成されている。しかも、サーバ２００でのハッシュチェーンは、クライアント１００で算出されたハッシュ値を含めて算出したハッシュ値の連鎖により構成されている。これにより、データの改ざんをより強固に防止することが可能である。すなわち、サーバ２００上のデータを改ざんするためには、サーバ２００のデータ記憶部２６に記憶されたハッシュ値の改ざんおよびクライアント１００のデータ記憶部１７に記憶されたハッシュ値の改ざんを行う必要があるため、サーバ２００における通常の１種類のブロックチェーンを適用しただけの場合よりも改ざんが難しくなる。【００５８】
秘密情報取得部２４は、クライアント１００の秘密情報送信部１５により送信された秘密情報を取得する。検証部２５は、秘密情報取得部２４により取得された秘密情報を用いて、サーバ２００に保存されているデータの正当性を検証する。すなわち、検証部２５は、データ記憶部２６に記憶されているデータセットの中のデータと、秘密情報取得部２４により取得された秘密情報との組み合わせに対してハッシュ計算をすることによってハッシュ値を算出し、算出したハッシュ値がデータセットの中のハッシュ値と一致するか否かを確認することにより、データの正当性を検証する。【００５９】
例えば、図５に示した１つ目のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝に含まれるデータ“Ｄａｔａ１”の正当性を検証する場合、検証部２５は、当該“Ｄａｔａ１”と、秘密情報取得部２４により取得された秘密情報“ａｂｃ”との組み合わせに対してハッシュ計算をすることにより、ハッシュ値を算出する。そして、検証部２５は、この算出したハッシュ値が、１つ目のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝に含まれるハッシュ値“Ｈａｓｈ１”と一致するか否かを確認し、一致する場合に正当なデータ、一致しない場合は不正なデータ（クライアント１００のなりすましによって生成されたデータ）と判定する。【００６０】
また、図５に示した２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝に含まれるデータ“Ｄａｔａ２”の正当性を検証する場合、検証部２５は、当該“Ｄａｔａ２”と、秘密情報取得部２４により取得された秘密情報“ａｂｃ”と、１つ前のデータセット｛Ｄａｔａ１，Ｈａｓｈ１｝に含まれるハッシュ値“Ｈａｓｈ１”との組み合わせに対してハッシュ計算をすることにより、ハッシュ値を算出する。そして、検証部２５は、この算出したハッシュ値が、２つ目のデータセット｛Ｄａｔａ２，Ｈａｓｈ２｝に含まれるハッシュ値“Ｈａｓｈ２”と一致するか否かを確認し、一致する場合に正当なデータ、一致しない場合は不正なデータと判定する。３つ目以降のデータを検証する場合もこれと同様である。【００６１】
以上詳しく説明したように、本実施形態では、分散型ネットワークにより接続されたサーバ２００に対してクライアント１００が生成したデータを送信する際に、クライアント１００おいて生成したデータと、クライアント１００において発行した秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、データとハッシュ値とをデータセットとしてサーバ２００に送信するようにしている。【００６２】
このように構成した本実施形態によれば、秘密情報を知らない第三者がクライアント１００のなりすましによってサーバ２００にデータとそのハッシュ値を書き込んだとしても、検証の際に、なりすましのデータと秘密情報との組み合わせから算出されるハッシュ値が、サーバ２００に書き込まれているハッシュ値と一致しないため、なりすましによる不正なデータであると判別することができる。このように、本実施形態によれば、クライアント１００のなりすましによってサーバに書き込まれた不正なデータを正当なデータと区別することができる。【００６３】
また、本実施形態では、クライアント１００において、あるデータについて秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、あるデータと、秘密情報と、別のデータについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出する。そして、このようにして算出されたハッシュ値を対応のデータと関連付けて記憶させるようにしている。【００６４】
これにより、クライアント１００において生成される複数のデータについて、ハッシュ値によって結び付けられたハッシュチェーンがクライアント１００内で形成されることになる。このため、あるデータを改ざんしようとしても、ハッシュチェーンで繋がりのある他のデータも全て改ざんすることが必要となるため、改ざんが難しくなる。よって、本実施形態によれば、サーバ２００に書き込まれる前の段階でクライアント１００内でデータの改ざんが行われることを防止することができる。【００６５】
また、本実施形態では、クライアント１００から送信されたデータセット（データとハッシュ値との組み合わせ）をサーバ２００に書き込む際にも、当該データセットと、別のデータセットについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出する。そして、このようにして算出されたハッシュ値を対応のデータセットと関連付けて記憶させるようにしている。【００６６】
これにより、サーバ２００においても、ハッシュ値によって結び付けられたハッシュチェーンが一連のデータセットに紐付いて形成されることになる。このため、サーバ２００に書き込まれたデータセットについても改ざんを防止することができる。特に、本実施形態では、クライアント１００内でハッシュチェーンを形成しているハッシュ値をサーバ２００に送信し、そのクライアント１００内のハッシュ値を利用して算出したハッシュ値の連鎖によりサーバ２００上のハッシュチェーンを形成しているので、ハッシュチェーンが２重構造となり、データの改ざんをより困難なものとすることができる。【００６７】
なお、上記実施形態では、クライアント１００のなりすましを防止するための秘密情報と、クライアント１００内でのデータの改ざんを防止するためのハッシュチェーンとの両方を実装する例について説明したが、本発明はこれに限定されない。例えば、クライアント１００のなりすましを防止するための秘密情報のみを実装した構成としてもよい。この場合、ハッシュ演算部１３は、別のデータについて算出済みのハッシュ値は組み合わせず、データ生成部１２により生成されたデータと、秘密情報記憶部１６に記憶された秘密情報との組み合わせからハッシュ値を算出すればよい。【００６８】
また、上記実施形態では、サーバ２００に保存するデータセットについてもハッシュチェーンを形成する例について説明したが、これがなくても、クライアント１００のなりすましおよびクライアント１００内でのデータの改ざんの防止効果が期待できる。この場合、例えば、記憶制御部２３は、別のデータセットについて算出済みのハッシュ値は組み合わせず、データセット取得部２１により取得されたデータセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けてデータセットをデータ記憶部２６に記憶させるようにしてよい。あるいは、記憶制御部２３は、ハッシュ計算自体を行わず、データセット取得部２１により取得されたデータセットをデータ記憶部２６に記憶させるようにしてもよい。【００６９】
すなわち、クライアント１００に関しては、（１）生成したデータと秘密情報とを組み合わせてハッシュ化するパターン、（２）生成したデータと秘密情報と別のデータについて算出済みのハッシュ値とを組み合わせてハッシュ化するパターンの２通りを適用可能である。また、サーバ２００に関しては、（Ａ）クライアント１００から取得したデータセットをそのまま保存するパターン、（Ｂ）クライアント１００から取得したデータセットをハッシュ化して保存するパターン、（Ｃ）クライアント１００から取得したデータセットと別のデータセットについて算出済みのハッシュ値とを組み合わせてハッシュ化して保存するパターンの３通りを適用可能である。そして、クライアント１００側の２パターンとサーバ２００側の３パターンとを任意に組み合わせて適用することが可能である。このうち、（２）と（Ｃ）との組み合わせが最も強固なセキュリティとなる。【００７０】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７１】
１１  秘密情報発行部
１２  データ生成部
１３  ハッシュ演算部
１４  データセット送信部
１５  秘密情報送信部
１６  秘密情報記憶部
１７  データ記憶部
１００  クライアント（データ処理装置）
２００  サーバ
【図１】
2019234850.tif 000003
【図２】
2019234850.tif 000004
【図３】
2019234850.tif 000005
【図４】
2019234850.tif 000006
【図５】
2019234850.tif 000007
【手続補正書】
【提出日】平成30年11月2日(2018.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散型ネットワークにより接続されたサーバと、データを生成して上記サーバに送信するクライアントとを備え、
上記クライアントは、
異なる内容のデータを異なるタイミングで生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により生成された上記データと上記秘密情報発行部により発行された上記秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により生成された上記データと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして上記サーバに送信するデータセット送信部とを備え、
上記サーバは、
上記クライアントから送信されてくる上記データセットを保存する記憶制御部を備えたことを特徴とするセキュリティシステム。
【請求項２】
上記ハッシュ演算部は、あるデータについて上記秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、上記あるデータ、上記秘密情報および上記別のデータについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出することを特徴とする請求項１に記載のセキュリティシステム。
【請求項３】
上記記憶制御部は、上記データセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項１に記載のセキュリティシステム。
【請求項４】
上記記憶制御部は、上記データセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項２に記載のセキュリティシステム。
【請求項５】
上記記憶制御部は、あるデータセットに対して上記ハッシュ値を算出する際に、別のデータセットについて算出済みのハッシュ値を更に組み合わせて、上記あるデータセットおよび上記別のデータセットについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項３に記載のセキュリティシステム。
【請求項６】
上記記憶制御部は、あるデータセットに対して上記ハッシュ値を算出する際に、別のデータセットについて算出済みのハッシュ値を更に組み合わせて、上記あるデータセットおよび上記別のデータセットについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項４に記載のセキュリティシステム。
【請求項７】
上記データ生成部は、１つのプロジェクトとして、異なる内容のデータの生成を繰り返し実行し、
上記ハッシュ演算部および上記データセット送信部は、上記データ生成部により上記データが生成される毎に処理を行って上記データセットを上記サーバに繰り返し送信し、
上記クライアントは、上記サーバに保存されたデータの正当性を検証する際に上記秘密情報を上記サーバに送信する秘密情報送信部を更に備えたことを特徴とする請求項１〜６の何れか１項に記載のセキュリティシステム。
【請求項８】
異なる内容のデータを異なるタイミングで生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により生成された上記データと上記秘密情報発行部により発行された上記秘密情報との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により生成された上記データと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして、分散型ネットワークにより接続されたサーバに送信するデータセット送信部とを備えたことを特徴とするデータ処理装置。
【請求項９】
上記ハッシュ演算部は、あるデータについて上記秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、上記あるデータ、上記秘密情報および上記別のデータについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出することを特徴とする請求項８に記載のデータ処理装置。
【手続補正書】
【提出日】令和1年7月30日(2019.7.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散型ネットワークにより接続されたサーバと、データを生成して上記サーバに送信するクライアントとを備え、
上記クライアントは、
異なる内容のデータを異なるタイミングで生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により今回生成されたデータと、上記秘密情報発行部により発行された上記秘密情報と、上記データ生成部により過去に生成された別のデータについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により今回生成されたデータと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして上記サーバに送信するデータセット送信部とを備え、
上記サーバは、
上記クライアントから送信されてくる上記データセットを保存する記憶制御部を備えたことを特徴とするセキュリティシステム。
【請求項２】
上記記憶制御部は、上記データセットに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項１に記載のセキュリティシステム。
【請求項３】
上記記憶制御部は、あるデータセットに対して上記ハッシュ値を算出する際に、別のデータセットについて算出済みのハッシュ値を更に組み合わせて、上記あるデータセットおよび上記別のデータセットについて算出済みのハッシュ値の組み合わせに対してハッシュ計算をすることによりハッシュ値を算出し、当該算出したハッシュ値と関連付けて上記データセットを保存することを特徴とする請求項２に記載のセキュリティシステム。
【請求項４】
上記データ生成部は、１つのプロジェクトとして、異なる内容のデータの生成を繰り返し実行し、
上記ハッシュ演算部および上記データセット送信部は、上記データ生成部により上記データが生成される毎に処理を行って上記データセットを上記サーバに繰り返し送信し、
上記クライアントは、上記サーバに保存されたデータの正当性を検証する際に上記秘密情報を上記サーバに送信する秘密情報送信部を更に備えたことを特徴とする請求項１〜３の何れか１項に記載のセキュリティシステム。
【請求項５】
異なる内容のデータを異なるタイミングで生成するデータ生成部と、
秘密情報を発行する秘密情報発行部と、
上記データ生成部により今回生成されたデータと、上記秘密情報発行部により発行された上記秘密情報と、上記データ生成部により過去に生成された別のデータについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するハッシュ演算部と、
上記データ生成部により今回生成されたデータと上記ハッシュ演算部により算出された上記ハッシュ値とをデータセットとして、分散型ネットワークにより接続されたサーバに送信するデータセット送信部とを備えたことを特徴とするデータ処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、本発明では、クライアントにおいて、あるデータについて秘密情報との組み合わせからハッシュ値を算出する際に、別のデータについて算出済みのハッシュ値を更に組み合わせて、あるデータと、秘密情報と、別のデータについて算出済みのハッシュ値との組み合わせに対してハッシュ計算をすることによりハッシュ値を算出するようにしている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
また、本発明によれば、クライアントにおいて生成される複数のデータについて、ハッシュ値によって結び付けられたハッシュチェーンが形成されることになる。このため、あるデータを改ざんしようとしても、ハッシュチェーンで繋がりのある他のデータも全て改ざんすることが必要となるため、改ざんが難しくなる。これにより、本発明によれば、サーバに書き込まれる前の段階でクライアント内でデータの改ざんが行われることを防止することができる。
【国際調査報告】
2019234850.tif 000008
2019234850.tif 000009
2019234850.tif 000010
2019234850.tif 000011
2019234850.tif 000012
2019234850.tif 000013