(57)【特許請求の範囲】
【請求項１】
対象を指定した状態更新要求を受け付ける受付部と、
前記状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する実行部と
を備え、
前記状態更新処理は、第１の情報と第２の情報とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含み、
前記第１の情報は、対象の第１のオブジェクト群であり、
第１のオブジェクト群は、一つ以上の第１のオブジェクトであり、
第１のオブジェクトは、対象の状態を表すデータであり、
前記第２の情報は、対象の第２のオブジェクト群であり、
第２のオブジェクト群は、一つ以上の第２のオブジェクトであり、
前記トランザクション処理は、
前記指定された対象に対応した第１のオブジェクトを作成、更新又は消去する第１の処理と、
当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含む第２のオブジェクトを、前記指定された対象に対応した第２のオブジェクト群に追加する第２の処理と
を含み、
前記状態更新要求は、
前記第１の処理に使用される一つ以上の引数である第１の引数群と、
前記第１の引数群のサマリである引数群サマリと、
前記引数群サマリに対する電子署名と
を含み、
前記実行部は、
前記電子署名を用いて、前記引数群サマリの改ざんの有無を検知する第１の改ざん検知処理と、
前記第１の改ざん検知処理において改ざんが無いことが検知された場合に、前記引数群サマリを用いて、前記第１の引数群の改ざんの有無を検知する第２の改ざん検知処理と
を行う、
データ管理システム。
【請求項２】
前記第１の情報及び前記第２の情報は、それぞれデータベースに含まれる情報であり、
前記トランザクション処理は、前記データベースのトランザクション処理である、
請求項１に記載のデータ管理システム。
【請求項３】
データ管理システムが、対象を指定した状態更新要求を受け付け、
前記状態更新要求は、
第１の処理に使用される一つ以上の引数である第１の引数群と、
前記第１の引数群のサマリである引数群サマリと、
前記引数群サマリに対する電子署名と
を含み、
前記第１の処理は、前記指定された対象に対応した第１のオブジェクトを作成、更新又は消去する処理であり、
前記データ管理システムが、前記電子署名を用いて、前記引数群サマリの改ざんの有無を検知する第１の改ざん検知処理を行い、
前記データ管理システムが、前記第１の改ざん検知処理において改ざんが無いことが検知された場合に、前記引数群サマリを用いて、前記第１の引数群の改ざんの有無を検知する第２の改ざん検知処理を行い、
前記データ管理システムが、前記状態更新要求で指定されている対象の状態を更新する状態更新処理を実行し、
前記状態更新処理は、第１の情報と第２の情報とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含み、
前記第１の情報は、対象の第１のオブジェクト群であり、
第１のオブジェクト群は、一つ以上の第１のオブジェクトであり、
第１のオブジェクトは、対象の状態を表すデータであり、
前記第２の情報は、対象の第２のオブジェクト群であり、
第２のオブジェクト群は、一つ以上の第２のオブジェクトであり、
前記トランザクション処理は、
前記第１の処理と、
当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含む第２のオブジェクトを、前記指定された対象に対応した第２のオブジェクト群に追加する第２の処理と
を含む、
データ管理方法。
【請求項４】
対象を指定した状態更新要求を受け付け、
前記状態更新要求は、
第１の処理に使用される一つ以上の引数である第１の引数群と、
前記第１の引数群のサマリである引数群サマリと、
前記引数群サマリに対する電子署名と
を含み、
前記第１の処理は、前記指定された対象に対応した第１のオブジェクトを作成、更新又は消去する処理であり、
前記電子署名を用いて、前記引数群サマリの改ざんの有無を検知する第１の改ざん検知処理を行い、
前記第１の改ざん検知処理において改ざんが無いことが検知された場合に、前記引数群サマリを用いて、前記第１の引数群の改ざんの有無を検知する第２の改ざん検知処理を行い、
前記状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する、
ことをコンピュータに実行させ、
前記状態更新処理は、第１の情報と第２の情報とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含み、
前記第１の情報は、対象の第１のオブジェクト群であり、
第１のオブジェクト群は、一つ以上の第１のオブジェクトであり、
第１のオブジェクトは、対象の状態を表すデータであり、
前記第２の情報は、対象の第２のオブジェクト群であり、
第２のオブジェクト群は、一つ以上の第２のオブジェクトであり、
前記トランザクション処理は、
前記第１の処理と、
当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含む第２のオブジェクトを、前記指定された対象に対応した第２のオブジェクト群に追加する第２の処理と
を含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データ管理技術に関する。
【背景技術】
【０００２】
データ管理システムに改ざん検知性が必要とされる場合、データ管理システムに分散型台帳技術を適用することが考えられる。分散型台帳技術が適用されたデータ管理システムの一例として、ブロックチェーンが知られている（例えば非特許文献１）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】https://bitcoin.org/bitcoin.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データを安全に管理したいという要望がある。一般的に、図１Ａに例示するように、データは、ＤＢ（データベース）に格納される。【０００５】
しかし、ＤＢは、データの改ざんを検知する機構を有していないため、悪意をもった攻撃等がある場合、必ずしもデータを安全に管理することができない。【０００６】
そこで、図１Ｂに例示するように、データを安全に管理するべく、データの管理にブロックチェーンを用いる方法が考えられる。【０００７】
しかし、ブロックチェーンは、改ざん検知機構の特性上、データを更新及び消去することができないため、削除要件があるプライバシーデータ等を管理することが難しい。また、ブロックチェーンは、検索性が低いため、アプリケーションを効率的に記述することができない場合がある。【０００８】
そこで、図１Ｃに例示するように、データをＤＢ５１に登録し、ＤＢ５１の操作ログ（処理内容の一例）をブロックチェーン５２に登録することで、データの更新又は消去、検索性の向上、及び、改ざん検知性の担保（改ざん検知すること）の全てを実現することが考えられる。【０００９】
しかし、ＤＢ５１とブロックチェーン５２は別々のデータ管理システムである。このため、ＤＢ５１とブロックチェーン５２の一貫性を維持することができない。具体的には、例えば、ＤＢ５１が更新を行いその操作ログをブロックチェーン５２に登録する前にブロックチェーン５２に障害が発生すると、ＤＢ５１が更新を行ったがその操作ログがブロックチェーン５２に存在しないことがある。また、ＤＢ５１が改ざんされる可能性があるが、ＤＢ５１とブロックチェーン５２の一貫性は必ずしも維持されないため、ＤＢ５１が改ざんされたのか、或いは、ＤＢ５１の操作ログがブロックチェーン５２に登録されなかったのかを区別することが困難である。【００１０】
以上のような問題は、分散型台帳技術以外の技術により改ざん検知性が担保される場合についても起こり得る。
【課題を解決するための手段】
【００１１】
データ管理システムが、対象を指定した状態更新要求を受け付け、当該状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する。状態更新処理は、第１の情報と第２の情報とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含む。第１の情報は、対象毎の第１のオブジェクト群である。第１のオブジェクト群は、一つ以上の第１のオブジェクトである。第１のオブジェクトは、対象の状態を表すデータである。第２の情報は、対象毎の第２のオブジェクト群である。第２のオブジェクト群は、一つ以上の第２のオブジェクトである。トランザクション処理は、指定された対象に対応した第１のオブジェクトを作成、更新又は消去する第１の処理と、当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含む第２のオブジェクトを、指定された対象に対応した第２のオブジェクト群に追加する第２の処理とを含む。
【発明の効果】
【００１２】
データの更新又は消去、検索性の向上、及び、改ざん検知性の担保を実現することに加え、第１の情報と第２の情報の一貫性の維持を実現することができる。
【図面の簡単な説明】
【００１３】
【図１Ａ】課題の一例を示す。
【図１Ｂ】課題の一例を示す。
【図１Ｃ】課題の一例を示す。
【図２】実施形態の概要を示す。
【図３】実施形態に係るシステム全体の構成例を示す。
【図４】クライアントシステム及びノードシステムの構成の一例を示す。
【図５】Mutable Record Set及びTamper-evident Record Setの構成例を示す。
【図６】状態更新処理の概要を模式的に示す。
【図７】実施形態で行われる処理の一例の流れを示す。
【発明を実施するための形態】
【００１４】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースを含む。一つ以上のインターフェースは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１５】
また、以下の説明では、「記憶装置」は、一つ以上のメモリを含む。記憶装置に関して少なくとも一つのメモリは、揮発性メモリでよい。記憶装置は、主に、プロセッサによる処理の際に使用される。記憶装置は、メモリの他に、一つ以上の不揮発性の記憶デバイス（例えば、ＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive））を含んでもよい。
【００１６】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサを含む。少なくとも一つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。一つ以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１７】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置（例えばメモリ）及び／又はインターフェース装置（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、プロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００１８】
また、以下の説明では、「ｙｙｙ部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路（例えばＦＰＧＡ又はＡＳＩＣ）によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び／又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００１９】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
【００２０】
また、以下の説明では、「record」とは、アプリケーションプログラムのようなプログラムから見た１つの論理的な電子データの塊であり、具体的には、対象の状態を表すデータであるオブジェクトの一例である。recordとしてのデータは、例えば、キーバリューペア又はタプルがある。
【００２１】
また、以下の説明では、下記の用語定義が採用される。
・「対象」は、任意の有体物又は無体物である。例えば、「対象」として、口座を採用し、対象の状態として、残高を採用することができる。
・「状態更新要求」は、状態更新処理の要求である。
・「状態更新処理」は、対象の状態を更新する処理である。
・「Mutable Record Set」は、第１の情報の一例である。
・「mutable record」は、Mutable Record Setにおけるrecordであり、第１のオブジェクトの一例である。
・「Tamper-evident Record Set」は、第２の情報の一例である。
・「tamper-evident record」は、Tamper-evident Record Setにおけるrecordであり、第２のオブジェクトの一例である。
【００２２】
以下、本発明の一実施形態を説明する。
【００２３】
図２は、実施形態の概要を示す。
【００２４】
データ管理システム１０が、クライアントプログラム１３４から、対象を指定した状態更新要求を受け付け、当該状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する。状態更新処理は、Mutable Record Set２０１とTamper-evident Record Set２０２とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含む。
【００２５】
本実施形態では、データ管理システム１０が、ＤＢであり、上述のトランザクション処理は、ＤＢのトランザクション処理である。なお、Mutable Record Set２０１とTamper-evident Record Set２０２とが格納されるデータ管理システムとして、ＤＢ以外のシステム、例えば、ファイルシステムが採用されてもよい。このように、Mutable Record Set２０１とTamper-evident Record Set２０２が一つのデータ管理システム１０に格納されトランザクション処理はそのデータ管理システム１０により行われるが、Mutable Record Set２０１とTamper-evident Record Set２０２の一貫性を維持した改ざんがされる可能性を低減するために、例えば、下記のうちの少なくとも一つが採用されてもよい。
・Mutable Record Set２０１の管理者（例えば、企業や部署といった組織）とTamper-evident Record Set２０２の管理者は異なっている。
・Mutable Record Set２０１とTamper-evident Record Set２０２は地理的に異なる場所に存在する。
【００２６】
Mutable Record Set２０１は、対象毎のmutable record群である。mutable record群は、一つ以上のmutable recordである。mutable recordは、対象の状態を表すデータである。
【００２７】
Tamper-evident Record Set２０２は、対象毎のtamper-evident record群である。tamper-evident record群は、一つ以上のtamper-evident recordである。各対象について、tamper-evident record群は、台帳に相当してよい。各対象について、tamper-evident record群は、tamper-evident recordの時系列でよい。tamper-evident recordの改ざん検知は、任意の方法に従う検知（例えば、構造を利用した検知、又は、決定性を利用した検知）でよい。本実施形態では、構造を利用した検知が採用される。具体的には、例えば、本実施形態では、Tamper-evident Record Set２０２は、ＤＡＧ（Directed Acyclic Graph）をなすrecord群である。
【００２８】
トランザクション処理は、指定された対象に対応したmutable recordを作成、更新又は消去する第１の処理と、当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含むtamper-evident recordを、上記指定された対象に対応したtamper-evident record群に追加する第２の処理とを含む。
【００２９】
以下、本実施形態を詳細に説明する。
【００３０】
図３は、本実施形態に係るシステム全体の構成の一例を示す。
【００３１】
一つ又は複数のクライアントシステム１３Ａ、１３Ｂ、…と、サーバシステム１５が、通信ネットワーク１９を介して通信可能に接続される。サーバシステム１５が、一つ又は複数のノードシステム１３００Ａ、１３００Ｂ、…から構成される。
【００３２】
クライアントシステム１３は、クライアントプログラム１３４を実行する。クライアントプログラム１３４の他にユーザプログラム１２４を実行するクライアントシステム１３があってもよいし（例えばクライアントシステム１３Ａ）、ユーザプログラム１２４を実行するユーザシステム１２に通信ネットワーク１４を介して接続されたクライアントシステム１３（例えばクライアントシステム１３Ｂ）があってもよい。ユーザシステム１２は、ユーザの計算機（例えば、パーソナルコンピュータ）でよい。ユーザプログラム１２４は、Ｗｅｂブラウザでもよいしアプリケーションプログラムでもよい。通信ネットワーク１４は通信ネットワーク１９と一体でもよい。
【００３３】
データ管理システム１０は、ノードシステム１３００で実行されるサーバプログラム１５４を備える。データ管理システム１０は、クライアントシステム１３Ａ、１３Ｂ、…で実行されるクライアントプログラム１３４を含んでもよい。
【００３４】
図４は、クライアントシステム１３及びノードシステム１３００の構成の一例を示す。
【００３５】
クライアントシステム１３は、一つ又は複数のクライアント計算機１３０を含む。クライアントシステム１３が含むクライアント計算機１３０は一つでもよいため、一つのクライアント計算機１３０が一つのクライアントシステム１３でもよい。
【００３６】
クライアント計算機１３０は、インターフェース装置１３１、記憶装置１３２及びそれらに接続されたプロセッサ１３３を有する。
【００３７】
インターフェース装置１３１は、通信ネットワーク１９に接続される。
【００３８】
記憶装置１３２は、クライアントプログラム１３４及びクライアント管理データ１３５を記憶する。クライアント管理データ１３５は、クライアント計算機１３０において管理されるデータである。例えば、クライアント管理データ１３５は、秘密鍵３６１を含む。秘密鍵３６１は、ユーザの秘密鍵である。クライアント計算機１３０が複数のユーザに共有される場合（例えば、クライアント計算機１３０に複数のユーザシステム１２が通信ネットワーク１４を介して接続されている場合）、ユーザ毎に秘密鍵３６１が記憶される。なお、ユーザは、個人であっても組織（例えば、企業や金融機関）であってもよい。
【００３９】
プロセッサ１３３は、クライアントプログラム１３４を実行する。クライアントプログラム１３４がプロセッサ１３３に実行されることで、状態更新要求を発行する発行部４１１が実現される。
【００４０】
ノードシステム１３００は、一つ又は複数のサーバ計算機１５０を含む。サーバシステム１５が含むノードシステム１３００は一つでもよく、ノードシステム１３００が含むサーバ計算機１５０は一つでもよいため、一つのサーバ計算機１５０がサーバシステム１５でもよい。従って、データ管理システム１０が、一つのサーバ計算機１５０における一つのサーバプログラム１５４を含んだシステムでもよいし、更に、一つのクライアント計算機１３０における一つのクライアントプログラム１３４を含んだシステムでもよい。
【００４１】
サーバ計算機１５０は、インターフェース装置１５１、記憶装置１５２及びそれらに接続されたプロセッサ１５３を有する。
【００４２】
インターフェース装置１５１は、通信ネットワーク１９に接続される。
【００４３】
記憶装置１５２は、サーバプログラム１５４及びサーバ管理データ１５５を記憶する。サーバ管理データ１５５は、サーバ計算機１５０において管理されるデータである。例えば、サーバ管理データ１５５は、公開鍵４６１と、Mutable Record Set２０１とTamper-evident Record Set２０２とを含む。Mutable Record Set２０１とTamper-evident Record Set２０２は、データ管理システム１０に格納されるデータであり、一つ以上のサーバ計算機１５０に分散して存在してもよい。
【００４４】
プロセッサ１５３は、サーバプログラム１５４を実行する。サーバプログラム１５４がプロセッサ１５３に実行されることで、状態更新要求を受け付ける受付部４２１と、状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する実行部４２２とが実現される。サーバプログラム１５４が、例えば、ＤＢＭＳ（DataBase Management System）として機能してよい。
【００４５】
図５は、Mutable Record Set２０１及びTamper-evident Record Set２０２の構成例を示す。図５は、説明を簡単にするために、Mutable Record Set２０１及びTamper-evident Record Set２０２の各々のうち、一つの対象（key“abc”）に該当する部分を示しているが、上述したように、mutable recordもtamper-evident recordも対象毎に存在する。
【００４６】
mutable recordは、F-outputを持つ。F-outputは、Functionが実行されることにより格納されたデータであり、対象の最新状態を表す。
【００４７】
tamper-evident recordは、key５０１、age５０２、C-input５０３、C-output５０４、Function５０５Ｆ、Contract５０５Ｃ、C-arg５０６、nonce５０７、Sig５０８、Prev-HV５０９及びHV５１０といった情報を持つ。
【００４８】
key５０１は、対象のＩＤである。age５０２は、対象の状態の世代を表す。対象の状態が更新される都度に、インクリメントされたage５０２を持つtamper-evident recordが追加される。
【００４９】
C-input５０３は、対象を含む一つ以上の対象の各々の直前状態を表す。C-output５０４は、Functionの実行により行われた処理の内容を表す。例えば、対象が口座Ａであり、状態更新処理が、口座Ａ（対象の一例）から口座Ｂ（或る別の対象の一例）へのX円の振込である場合、当該状態更新処理により追加されたtamper-evident recordにおけるC-input５０３及びC-output５０４は、それぞれ下記でよい。
・C-input５０３は、口座Ａと口座Ｂの各々の直前の残高を表す（C-input７０３が、対象間（tamper-evident record群間）のrecord連鎖を実現できる）。
・C-output５０４は、口座Ａから口座ＢへのX円の振込みという処理内容を表す。
【００５０】
Function５０５Ｆは、Functionの参照である（Functionそれ自体でもよい）。Functionは、Mutable Record Set２０１を操作する処理ロジック（例えば関数）である。
【００５１】
Contract５０５Ｃは、Contractの参照である（Contractそれ自体でもよい）。Contractは、Tamper-evident Record Set２０２を操作する処理ロジックである。
【００５２】
Function及びContractは、データ管理システム１０のアプリケーションの処理ロジックの一部でよい。Function及びContractは、ユーザシステム１２、クライアントシステム１３及びサーバシステム１５の少なくとも一つにデプロイされていてよい。Function及びContractの各々に対し電子署名が付与されていてよい。当該電子署名は、ユーザの秘密鍵３６１を用いた電子署名でよい。
【００５３】
本実施形態では、Mutable Record Set２０１を操作する処理ロジックとTamper-evident Record Set２０２を操作する処理ロジックとが別々の処理ロジックであるが、それらの処理ロジックが一つの処理ロジックとして定義されてもよい。
【００５４】
C-arg５０６は、Contractに使用される引数群（一つ以上の引数）である。
【００５５】
nonce５０７は、対象の最新状態（C-output５０４）に対応したnonceである。具体的には、nonce５０７は、当該最新状態が得られた状態更新処理の状態更新要求に関連付けられているnonceである。
【００５６】
Sig５０８は、状態更新要求を発行したユーザの秘密鍵３６１を用いた電子署名である。Sig５０８は、本実施形態では、Function５０５Ｆ、Contract５０５Ｃ及びC-arg５０６を含んだ情報セットに対する電子署名である。当該情報セットは、nonce５０７のような他の情報を含んでもよい。
【００５７】
Prev-HV５０９は、対象の直前世代のtamper-evident record（つまり親tamper-evident record）のHV５１０と同じ値である。つまり、Prev-HV５０９と、親tamper-evident record内のHV５１０とのリンクが、対象に対応したtamper-evident record群でのrecord連鎖を実現する。
【００５８】
HV５１０は、対象のTamper-evident recordのサマリ、例えばHV５１０以外の情報の少なくとも一部の情報（本実施形態では全ての情報５０１〜５０９）のハッシュ値（暗号学的に衝突が困難なハッシュ値）である。
【００５９】
以上の通り、Tamper-evident Record Set２０２において、異なるtamper-evident record群のC-input５０３間でrecord連鎖が実現され、また、同一のtamper-evident record群におけるtamper-evident record間（Prev-HV５０９とHV５１０間）でrecord連鎖が実現される。このようにして、Tamper-evident Record Set２０２は、ＤＡＧ構造をなす。Tamper-evident Record Set２０２において、ノードは、tamper-evident recordであり、エッジは、一つ以上の状態更新処理におけるtamper-evident record間の関係を表す。
【００６０】
図６は、状態更新処理を模式的に示す。
【００６１】
説明を簡単にするために、一つの対象（key“abc”）を例に取る。以下の説明において、C-outputiは、Age“i”のC-outputである（iは、０〜Ｎの整数）。同様に、Age“i”に対応した要素“AAA”を、「AAAi」と表現する。
【００６２】
Contract及びFunctionがそれぞれ事前にサーバシステム１５（又はサーバシステム１５の外部のシステム）にデプロイされている。Contract及びFunctionのそれぞれに対して電子署名が付与されている。このため、Contract及びFunctionのいずれについても、改ざんの検知が可能である。状態更新要求には、デプロイ済のContractの参照とFunctionの参照とが指定される。
【００６３】
C-outputi＝Contracti(C-inputi, C-argi)と表現することができる。すなわち、C-outputiは、C-inputi,とC-argiとを用いてContractiが実行された結果としての状態である。i=0の場合、C-outputiは、エンプティ状態であるため、C-output0の改ざん検知は可能である。C-arg1は、Sig1を用いて改ざん検知でき、Cotarct1の改ざん検知もできるため、C-output1の改ざんの検知も可能である（Cotarct1の参照の改ざんは、Sig1を用いて検知でき、Cotarct1それ自体の改ざんは、Cotarct1それ自体に対する電子署名を用いて検知できる）。同様に、C-outputiのi=2〜Nまで、改ざんの検知は可能である。
【００６４】
同様に、F-outoputi＝Functioni(F-outoputi-1, F-argi, C-argi）と表現することができる。C-argiは、HV_F-argi（F-argiのハッシュ値）を含み、C-argiを用いてF-argiの改ざんの検知が行われる。
【００６５】
アプリケーションによっては、C-outputi＝Contracti(C-argi)と表現されてよいし、F-outoputi＝Functioni(F-argi,
C-argi）と表現されてよい。例えば、C-outputiは、対象の最新状態のサマリでもよい。
【００６６】
C-argiとF-argiのように引数が分かれている理由は、次の通りである。C-argiは、tamper-evident recordに格納され、C-argiに、消去要件があるデータ（例えば、プライバシーデータ）が含まれると、消去要件があるデータがtamper-evident recordに格納され、結果として、消去要件があるデータを消去することが困難となるためである。
【００６７】
そこで、引数がC-argiとF-argiに分離され、HV_F-argi（F-argiのハッシュ値）がC-argiに含まれることにより、F-argiの改ざんが検知される。HV_F-argiは、F-argiのサマリの一例である。
【００６８】
i=3を例に取り、図６を参照して、状態更新処理を説明する。なお、図６において、tamper-evident recordiのPrev-HViと、tamper-evident recordi-1のHVi-1は同じである。
【００６９】
発行部４１１（クライアントプログラム１３４）が、対象を指定した状態更新要求3を発行し、受付部４２１（サーバプログラム１５４）が、状態更新要求3を受け付ける。状態更新要求3は、Contract3の参照、C-arg3、Function3の参照、F-arg3、及びSig3を含む。
【００７０】
Sig3は、Contract3の参照、C-arg3及びFunction3の参照に対する電子署名であるため、Sig3を用いて、Contract3の参照、C-arg3及びFunction3の参照の改ざんの検知が可能である。F-arg3に対しては、上述したように電子署名は無い。
【００７１】
実行部４２２（サーバプログラム１５４）が、状態更新要求3で指定されている対象の状態を更新する状態更新処理を実行する。状態更新処理は、第１の改ざん検知処理、第２の改ざん検知処理、及び、ＤＢのトランザクション処理を含む。
【００７２】
第１の改ざん検知処理は、Sig3を用いて、Contract3の参照、C-arg3及びFunction3の参照の改ざんを検知する処理である。C-arg3がHV_F-arg3を含むため、第１の改ざん検知処理は、HV_F-arg3の改ざんを検知することを含む。第１の改ざん検知処理において、改ざんが検知されない場合、第２の改ざん検知処理が行われる。
【００７３】
第２の改ざん検知処理は、C-arg3内のHV_F-arg3を用いてF-arg3の改ざんを検知する処理である。第２の改ざん検知処理は、F-arg３のハッシュ値を算出し、算出されたハッシュ値と、HV_F-argiとを比較することを含む。算出されたハッシュ値とHV_F-arg3が異なっている場合、F-argiの改ざんがあると検知される。
【００７４】
ＤＢのトランザクション処理は、Mutable Record Set２０１及びTamper-evident Record Set２０２をＡＣＩＤトランザクショナルに更新する処理、具体的には、下記を含む。
・Function3の実行、すなわち、F-arg3を用いて、状態更新要求3で指定された対象に対応したmutable recordをcreate、read、update又はdeleteすること。
・Contract3の実行、すなわち、C-arg3を用いて新たなtamper-evident recordをcreateし、当該新たなtamper-evident recordをTamper-evident Record Set２０２に追加すること（Contract3の実行では、Tamper-evident Record Set２０２のcreateに代えて又は加えて、tamper-evident recordのreadが行われてもよい）。追加されたtamper-evident recordは、Contract3の参照、C-arg3、Function3の参照、Sig3、Prev-HV3（HV2と同じハッシュ値）、及び、HV3（Contract3の参照、C-arg3、Function3の参照、Sig3、Prev-HV3を含んだ情報セットのハッシュ値）を含む。
【００７５】
図７は、実施形態で行われる処理の一例の流れを示す。
【００７６】
発行部４１１（クライアントプログラム１３４）が、Contractiの参照、C-argi、Functioniの参照、F-argi、及び、Sigiを含んだ状態更新要求iを作成する（Ｓ７０１）。Sigiは、Contractiの参照、C-argi、及び、Functioniの参照に対する電子署名であり、ユーザの秘密鍵３６１を用いて作成される。
【００７７】
発行部４１１が、Ｓ７０１で作成された状態更新要求iを送信する（Ｓ７０２）。
【００７８】
受付部４２１（サーバプログラム１５４）が、状態更新要求iを受信する（Ｓ７１１）。実行部４２２（サーバプログラム１５４）が、第１の改ざん検知処理を行う（Ｓ７１２）。第１の改ざん検知処理は、状態更新要求i内のSigiを用いて、状態更新要求i内のContractiの参照、C-argi、及び、Functioniの参照の改ざんを検知する処理である。当該処理では、ユーザの公開鍵４６１が用いられてよい。Ｓ７１２において改ざんが検知された場合（Ｓ７１２：Ｙｅｓ）、例えば、実行部４２２が、状態更新要求iに対する応答としてエラーを返し、処理を終了する。
【００７９】
Ｓ７１２において改ざんが検知されない場合（Ｓ７１２：Ｎｏ）、実行部４２２が、第２の改ざん検知処理を行う（Ｓ７１３）。第２の改ざん検知処理は、F-argiのハッシュ値を算出し、算出されたハッシュ値と、C-argi内のHV_F-argiとを比較することで、F-argiの改ざんを検知する処理である。F-argiの改ざんが検知された場合（Ｓ７１３：Ｙｅｓ）、例えば、実行部４２２が、トランザクションをアボートする（Ｓ７１８）。
【００８０】
Ｓ７１３においてF-argiの改ざんが検知されない場合（Ｓ７１３：Ｎｏ）、実行部４２２が、ＤＢのトランザクション処理を開始する（Ｓ７１４）。例えば、実行部４２２が、Beginを実行する。
【００８１】
実行部４２２が、Functioniを実行する（Ｓ７１５）。Functioniの実行において、実行部４２２が、F-argiを用いてmutable recordのcreate、read、update又はdeleteを行う。
【００８２】
実行部４２２が、Contractiを実行する（Ｓ７１６）。Contractiの実行において、実行部４２２が、C-argiを用いて新たなtamper-evident recordをcreateし当該新たなtamper-evident recordをTamper-evident Record Set２０２に追加する（createに代えてreadが行われてもよい）。
【００８３】
実行部４２２が、トランザクション処理を終了する（Ｓ７１７）。例えば、実行部４２２が、Commitを実行する。
【００８４】
図７の説明において、下記のうちの少なくとも一つが採用されてよい。
・第１の改ざん検知処理及び第２の改ざん検知処理のうちの少なくとも一つが、トランザクション処理の開始から終了までの間に行われてよい。
・Contractiの実行が、Functioniの実行よりも先に行われてよい。
・トランザクション処理の開始と終了の表現として、BeginとCommit以外の表現が採用されてよい。
・状態更新要求i及びtamper-evident recordiにおいて、HV_F-argiが、C-argiの外にあり、Sigiに加えて、HV_F-argiに対する電子署名が存在してよい。
【００８５】
以上のように、本実施形態によれば、Mutable Record Set２０１とTamper-evident Record Set２０２とがＡＣＩＤトランザクショナルに更新される。そのため、データの更新又は消去、検索性の向上、及び、改ざん検知性の担保を実現することに加え、Mutable Record Set２０１とTamper-evident Record Set２０２との一貫性の維持を実現することができる。
【００８６】
また、本実施形態によれば、消去されたmutable recordが表す状態（例えば、消去要件があるプライバシーデータ）は、Mutable Record Set２０１及びTamper-evident Record Set２０２のいずれからも復元困難である。なぜなら、Mutable Record Set２０１には、消去されたmutable recordは存在せず、Tamper-evident Record Set２０２にはF-argのハッシュ値であるHV_F-argがあるが、HV_F-argからはF-argを特定することは困難なためである。
【００８７】
また、本実施形態によれば、状態更新要求i内にF-argiに対する電子署名は無いが、C-argiにHV_F-argiが含まれ、C-argiに対するSigiがあるため、F-argiの改ざんを検知することができる。
【００８８】
以上、一実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【００８９】
１０：データ管理システム
【要約】
データ管理システムが、対象を指定した状態更新要求を受け付け、当該状態更新要求で指定されている対象の状態を更新する状態更新処理を実行する。状態更新処理は、第１の情報と第２の情報とをＡＣＩＤ（Atomicity, Consistency, Isolation, Durability）トランザクショナルに更新する処理であるトランザクション処理を含む。第１の情報は、対象毎の第１のオブジェクト群（一つ以上の第１のオブジェクト）である。第１のオブジェクトは、対象の状態を表すデータである。第２の情報は、対象毎の第２のオブジェクト群（一つ以上の第２のオブジェクト）である。トランザクション処理は、指定された対象に対応した第１のオブジェクトを作成、更新又は消去する第１の処理と、当該第１の処理の内容と第１のオブジェクトのサマリとの少なくとも一つを含む第２のオブジェクトを、指定された対象に対応した第２のオブジェクト群に追加する第２の処理とを含む。【図１Ａ】
0006895149.tif 000002
【図１Ｂ】
0006895149.tif 000003
【図１Ｃ】
0006895149.tif 000004
【図２】
0006895149.tif 000005
【図３】
0006895149.tif 000006
【図４】
0006895149.tif 000007
【図５】
0006895149.tif 000008
【図６】
0006895149.tif 000009
【図７】
0006895149.tif 000010