(57)【要約】【課題】同じコンテンツからは同じ暗号化テキストを得ることができるデータ管理方法を提供する。【解決手段】データ管理方法は、Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持しており、元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、元データＭとその暗号化データＣとの対応を証明するにあたって、ハッシュ値ｈ（Ｍ）を計算するステップと暗号化データＣをｋで復号するステップと上記復号の結果と元データＭとを比較するステップを有する。【選択図】図１
2020048107.tif 000002
【特許請求の範囲】
【請求項１】
Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、
暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持しており、
元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、
元データＭとその暗号化データＣとの対応を証明するにあたって、
ハッシュ値ｈ（Ｍ）を計算するステップと、
暗号化データＣをｋで復号するステップと、
上記復号の結果と元データＭとを比較するステップ
を有するデータ管理方法。
【請求項２】
元データＭのハッシュ値ｋ＝ｈ（Ｍ）を特権識別子とし、
対応する暗号化データＣのハッシュ値ｐ＝ｈ（Ｃ）を公開識別子とし、
元データ達Ｍ∈Ｌｓｅｃｒｅｔを特定の管理者のピアが秘匿して保持する、
請求項１に記載のデータ管理方法。
【請求項３】
Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、
暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持する保持手段と、
元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、
元データＭとその暗号化データＣとの対応を証明するにあたって、
ハッシュ値ｈ（Ｍ）を計算する計算手段と、
暗号化データＣをｋで復号する復号手段と、
上記復号の結果と元データＭとを比較する比較手段
を有するデータ管理装置。
【請求項４】
コンピュータを、
Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、
暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持する保持手段と、
元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、
元データＭとその暗号化データＣとの対応を証明するにあたって、
ハッシュ値ｈ（Ｍ）を計算する計算手段と、
暗号化データＣをｋで復号する復号手段と、
上記復号の結果と元データＭとを比較する比較手段
として機能させるためのデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理方法、データ管理装置及びデータ管理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、特定の情報に対する秘匿性を担保することができる情報処理装置、情報処理方法およびプログラムを提供することを課題とし、情報処理装置は、ネットワーク内に構築されるブロックチェーンで連結されるブロックに、生成されたデータを共通鍵で暗号化して格納し、また、予め記憶している第１公開鍵とは異なる第２公開鍵を、ブロックチェーンで連結されたブロックから取得し、そして、第２公開鍵で共通鍵を暗号化し、暗号化した共通鍵をブロックチェーンで連結されるブロックに格納することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１９５６２７号公報
【非特許文献】
【０００４】
【非特許文献１】Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ｂｙ  Ｍｅｎｅｚｅｓ，  ｖａｎ  Ｏｏｒｓｃｈｏｔ  ａｎｄ  Ｖａｎｓｔｏｎｅ．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
仮想通貨、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムであるＧｉｔ等において、ブロックチェーンと呼ばれている分散型電子台帳技術が用いられている。その分散型電子台帳技術では、コンテンツの内容によらず鍵が決定されることから、その鍵を紛失した場合に、暗号化前のテキストと暗号化されたコンテンツの同一性を証明することができない。
本発明は、同じコンテンツからは同じ暗号化テキストを得ることができるデータ管理方法、データ管理装置及びデータ管理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持しており、元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、元データＭとその暗号化データＣとの対応を証明するにあたって、ハッシュ値ｈ（Ｍ）を計算するステップと、暗号化データＣをｋで復号するステップと、上記復号の結果と元データＭとを比較するステップを有するデータ管理方法である。
【０００７】
請求項２の発明は、元データＭのハッシュ値ｋ＝ｈ（Ｍ）を特権識別子とし、対応する暗号化データＣのハッシュ値ｐ＝ｈ（Ｃ）を公開識別子とし、元データ達Ｍ∈Ｌｓｅｃｒｅｔを特定の管理者のピアが秘匿して保持する、請求項１に記載のデータ管理方法である。
【０００８】
請求項３の発明は、Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持する保持手段と、元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、元データＭとその暗号化データＣとの対応を証明するにあたって、ハッシュ値ｈ（Ｍ）を計算する計算手段と、暗号化データＣをｋで復号する復号手段と、上記復号の結果と元データＭとを比較する比較手段を有するデータ管理装置である。
【０００９】
請求項４の発明は、コンピュータを、Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とするとき、暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持する保持手段と、元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持され、元データＭとその暗号化データＣとの対応を証明するにあたって、ハッシュ値ｈ（Ｍ）を計算する計算手段と、暗号化データＣをｋで復号する復号手段と、上記復号の結果と元データＭとを比較する比較手段として機能させるためのデータ管理プログラムである。
【発明の効果】
【００１０】
請求項１のデータ管理方法によれば、同じコンテンツからは同じ暗号化テキストを得ることができる。
【００１１】
請求項２のデータ管理方法によれば、元データを特定の管理者によって秘匿して保持することができる。
【００１２】
請求項３のデータ管理装置によれば、同じコンテンツからは同じ暗号化テキストを得ることができる。
【００１３】
請求項４のデータ管理プログラムによれば、同じコンテンツからは同じ暗号化テキストを得ることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】分散型電子台帳技術による管理方法例を示す説明図である。
【図４】本実施の形態による処理例を示すフローチャートである。
【図５】対象となるディレクトリとファイルの構造例を示す説明図である。
【図６】メタデータの一例を示す説明図である。
【図７】共有キーバリューストアのデータ構造例を示す説明図である。
【図８】秘匿キーバリューストアのデータ構造例を示す説明図である。
【図９】公開識別子・特権識別子ペアのデータ構造例を示す説明図である。
【図１０】対象となるディレクトリとファイルの構造例を示す説明図である。
【図１１】メタデータの一例を示す説明図である。
【図１２】共有キーバリューストアのデータ構造例を示す説明図である。
【図１３】秘匿キーバリューストアのデータ構造例を示す説明図である。
【図１４】公開識別子・特権識別子ペアのデータ構造例を示す説明図である。
【図１５】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係、ログイン等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。また、「Ａ、Ｂ、Ｃ」等のように事物を列挙した場合は、断りがない限り例示列挙であり、その１つのみを選んでいる場合（例えば、Ａのみ）を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスクドライブ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００１６】
本実施の形態であるデータ管理装置１００は、分散型電子台帳技術に適合する暗号化方式に関する機能を有しており、図１の例に示すように、記憶モジュール１１０、計算モジュール１２０、復号モジュール１３０、比較モジュール１４０を有している。分散型電子台帳技術が用いられているものとして、例えば、ブロックチェーン、バージョン管理装置であるＧｉｔがある。
データ管理装置１００において、Ａを記号の集合、Ａ＊をＡの記号から構成されるすべての文字列の集合、ＬをＡの部分集合、ｈ（Ｌ）をｈによるＬの像とする。
そして、データ管理装置１００は、暗号学的ハッシュ関数ｈ：Ａ＊→Ａに対して、ｈの部分写像ｈＬ：Ｌ→ｈ（Ｌ）の逆ｈＬ−１を複数のピアが保持するデータ管理装置である。
元データＭとその暗号化データＣがあり、ｈＬ−１において、暗号化データＣが保持されている（つまり、Ｃ∈Ｌ）。
データ管理装置１００は、元データＭとその暗号化データＣとの対応を証明する。つまり、データ管理装置１００では、分散型電子台帳技術において、コンテンツのハッシュ値によりコンテンツの特定を行う。
【００１７】
記憶モジュール１１０は、暗号化データＣが保持されている。
また、データ管理装置１００は、元データＭのハッシュ値ｋ＝ｈ（Ｍ）を特権識別子とし、対応する暗号化データＣのハッシュ値ｐ＝ｈ（Ｃ）を公開識別子とし、元データ達Ｍ∈Ｌｓｅｃｒｅｔを特定の管理者のピアが秘匿して保持するようにしてもよい。
計算モジュール１２０は、ハッシュ値ｈ（Ｍ）を計算する。
復号モジュール１３０は、暗号化データＣをｋで復号する。
比較モジュール１４０は、復号モジュール１３０による復号の結果と元データＭとを比較する。
【００１８】
図２は、本実施の形態を利用したシステム構成例を示す説明図である。
データ管理装置１００、ユーザー端末２００Ａ、ユーザー端末２００Ｂ、ユーザー端末２００Ｃ、バージョン管理装置２５０は、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、データ管理装置１００による機能は、クラウドサービスとして実現してもよい。
データ管理装置１００は、ユーザー端末２００又はバージョン管理装置２５０から、暗号化されたデータと、その暗号化されたデータの元データ（暗号化される前のデータ）を受信し、暗号化されたデータと元データは対応がとれているか否かの判断を行い、その結果を返信する。ここで「対応がとれている」とは、対象となっている暗号化されたデータは、元データから暗号化されたものであることをいう。
【００１９】
分散型電子台帳技術は、中央集権的エンティティを前提とすることなく改竄不能な分散型台帳を実現できることで注目を集めている。
分かりやすい実用例として、あるエンティティから他のエンティティへの送金（トランザクション）の履歴を台帳で記録するデータとすることで暗号貨幣を実装するビットコイン（登録商標）が有名である。
ブロックチェーンが改竄できないということは、ビットコインの場合のプルーフ・オブ・ワークの部分を捨象するならば、データ実体のバリューとそれを指し示すキーの結合から任意性を排除し、バリューからキーが自動的に決まることによっている。キーとバリューの結合の自由さが改竄の余地と等価と考えられるからである。
【００２０】
ブロックチェーンの一般化された定式化について説明する。
本実施の形態において、ブロックチェーンとは、暗号学的ハッシュ関数ｈを構造射とするアルファベットのこと、つまり、
【数１】
2020048107.tif 000003
のことであると定式化する。
このアルファベット上の文字列（語とも呼ばれる）は、そのハッシュ値たる文字（記号とも呼ばれる）に対応付けることができる。文字列をいつでも文字に簡約することができるので、例えば、チェーンと呼ばれる時系列データも表せる。
しかも、文字が文字列を指すキーとすると、このキーは値たる文字列から自動的に（一意に）決まるため、いわゆる改竄ができないデータ構造を実現できる。
パブリックなブロックチェーンというのは、このｈの部分写像
【数２】
2020048107.tif 000004
のことと看做せる。ここでは、ＬはＡ上の言語、つまりＡ＊の部分集合であり、ｈ（Ｌ）はｈによるＬの像である。このような定式化のもとでは、分散台帳は、ｈ−１Ｌを系に参加するピアが共有するデータ保持方法およびプロトコルと看做せる。
この定式化のもとでは、通常ブロックチェーンの語で参照されることは無いが、Ｇｉｔにおけるデータ（オブジェクト）もブロックチェーンと見做すことができる。
【００２１】
例えば、ビットコインのユースケースでは、トランザクションはエンティティ間の送金データであり、エンティティが実在の誰に相等するのかが不明確であるという想定があったが、台帳に記録するデータ自体を秘匿したい、例えば、機微性の高い内容を含む契約書などのドキュメントの場合、がある。
【００２２】
このときデータをランダムに生成された暗号鍵で暗号化すると鍵の管理が問題になる。
例えば、鍵紛失の場合がある。
元データはプライベートなリポジトリに安全に保存され、一方、パブリックなブロックチェーンには暗号化データＣが保存され、タイムスタンプによる時間存在性が担保されているケースを考える。
このケースで、ランダムに生成された暗号鍵ｋを紛失した場合、元データＭと暗号化データＣとから暗号鍵ｋを再現することは難しい。したがって、元データとブロックチェーン上のデータとの関連を証明することができなくなり、非改竄性や時間存在性を検証できなくなる。つまり、従来技術では、元データＭと暗号化データＣとが対応することを証明できない。
【００２３】
図３は、一般的な分散型電子台帳技術による管理方法例を示す説明図である。つまり、本実施の形態による技術を用いない場合（いわゆる従来技術）での処理例を示すものである。
コンテンツＡ：３００を鍵Ａによって暗号化して暗号化されたテキスト３５０を生成する。また、同じコンテンツＡ：３００を鍵Ｂによって暗号化して暗号化されたテキスト３６０を生成する。そして、暗号化されたテキスト３５０、暗号化されたテキスト３６０は、分散型電子台帳技術により管理される。
鍵を紛失した場合に、暗号化前のテキスト（この例では、コンテンツＡ：３００）と暗号化されたコンテンツ（暗号化されたテキスト３５０と暗号化されたテキスト３６０）の同一性を証明することができない。つまり、鍵Ａを紛失した場合には、コンテンツＡ：３００を暗号化されたものが暗号化されたテキスト３５０であることを証明することができないことになる。これは、コンテンツの内容によらず鍵が決定されるからである。鍵Ａと鍵Ｂは異なるので、同じコンテンツＡ：３００に対して暗号化を施しても、暗号化されたテキスト３５０と暗号化されたテキスト３６０は異なるものとなる。
【００２４】
本実施の形態であるデータ管理装置１００では、同じデータ（図３の例ではコンテンツＡ：３００）からは同じ暗号化データが得られる。したがって、暗号化前のテキストと暗号化されたコンテンツの同一性を証明することができる。
パブリックブロックチェーン等の分散型電子台帳技術において、データの秘匿性の要求がある。一方、クリアテキスト（暗号化対象のデータ）からサーファーテクスト（暗号化後のデータ）とその暗号鍵を決める収束暗号化技術は、その要求に応えることができる。
【００２５】
本実施の形態であるデータ管理装置１００では、以下の処理を行う。
収束暗号化によって
【数３】
2020048107.tif 000005
として、元データＭから暗号化鍵ｋ＝ｈ（Ｍ）と暗号化データＣ＝Ｅｋ（Ｍ）を定め、ペア（ｐ，ｋ）、ここでｐ＝ｈ（Ｃ）は暗号化データＣのハッシュ値、を安全に保管する。
非改竄性や時間存在性を証明する場合、ペア（ｐ，ｋ）の保持者（証明者）が検証者に対して、ｋを提示することで、検証者は
【数４】
2020048107.tif 000006
を確認することができる。
暗号化鍵ｋは常に元データＭより再現できるので、先に述べた鍵紛失時の元データと暗号化データの対応証明が損なわれることは無い。
【００２６】
図４は、本実施の形態による処理例を示すフローチャートである。
ステップＳ４０２では、計算モジュール１２０は、ハッシュ値ｈ（Ｍ）を計算する。
ステップＳ４０４では、復号モジュール１３０は、暗号化データＣをｋで復号処理を行う。
ステップＳ４０６では、比較モジュール１４０は、ステップＳ４０４での復号結果と元データＭの比較を行い、同じ場合はステップＳ４０８へ進み、異なる場合はステップＳ４１０へ進む。
ステップＳ４０８では、「元データＭと対象としている暗号化データＣは対応している」と判断する。
ステップＳ４１０では、「元データＭと対象としている暗号化データＣは対応していない」と判断する。
ステップＳ４１２では、比較結果をユーザー（又は、依頼したユーザー端末２００等）に提示する。
【００２７】
データ構造等を具体化して説明する。
Ｇｉｔのデータ構造に基本的にしたがっている。ただし、永続化データは収束暗号化されたケースを考える。もちろんのことながら、以下の記載でハッシュ値や暗号鍵に見えるものの具体的な値は、説明用の値（いわゆるフェイク）である。
Ｇｉｔにおいて、ｇｉｔ／ｏｂｊｅｃｔｓディレクトリに暗号化されたオブジェクトが保存される例を用いる。ひとつのファイルからなるリポジトリから始めて、そのファイルが更新され、また、もう一つのファイルが追加されたときに、暗号化された分散台帳ｈ−１Ｌの変動について説明する。
最初のコンテンツとして、図５の例を用いる。図５は、対象となるディレクトリとファイルの構造例を示す説明図である。
ディレクトリ（ｒｅｐｏ）５１０の下層に１つのファイル（ＲＥＡＤＭＥ）５２０がある。
【００２８】
ファイル（ＲＥＡＤＭＥ）５２０のハッシュ値が
３９ｄｄ２ｂｄｄ６０４ｃｃ５６１３ｆ２ｆ８１０２ａ８４ｆ０５１ａ（特権識別子）
であり、
そのハッシュ値でファイル（ＲＥＡＤＭＥ）５２０を暗号化したもののハッシュ値が
６ｆｂｄ８ａ８８ａ０７ｃｂ５ａ６３２ｃ８ｂｅ３２７１８８９ｆａｅ（公開識別子）
とする。
また、ディレクトリ（ｒｅｐｏ）５１０を表すメタデータ（Ｇｉｔにおいては、ツリーオブジェクト）は、
６ｆｂｄ８ａ８８ａ０７ｃｂ５ａ６３２ｃ８ｂｅ３２７１８８９ｆａｅ  ＲＥＡＤＭＥ
のハッシュ値が
９３３８４４４５５５ｅｆ０９９７４９９９７ｆ９９９８３ｂａ０ａ９（特権識別子）
で、そのハッシュ値でメタデータを暗号化したもののハッシュ値が
８５ｃ７ｃ７６４ａ９ａ０９３ｆ４８９ｃ２４ｃ０ｄｂｃ７９ａｂａ８（公開識別子）
とする。
【００２９】
そして、このスナップショットのコミットを表すメタデータ（Ｇｉｔにおいては、コミットオブジェクト）を、図６のメタデータ６００に例示する。つまり、メタデータ６００は、以下の通りである。
−−−−−  −−−−−  −−−−−
ｔｒｅｅ  ８５ｃ７ｃ７６４ａ９ａ０９３ｆ４８９ｃ２４ｃ０ｄｂｃ７９ａｂａ８
ａｕｔｈｏｒ  Ｓｃｏｔｔ  Ｃｈａｃｏｎ＜ｓｃｈａｃｏｎ＠ｇｍａｉＸ．ｃｏｍ＞１２４３０４０９７４  −０７００
ｃｏｍｍｉｔｔｅｒ  Ｓｃｏｔｔ  Ｃｈａｃｏｎ＜ｓｃｈａｃｏｎ＠ｇｍａｉＸ．ｃｏｍ＞１２４３０４０９７４  −０７００
ｆｉｒｓｔ ｃｏｍｍｉｔ
−−−−−  −−−−−  −−−−−
このメタデータ６００のハッシュ値が
ｄａ５３ｄ２０７ｆｂａ１ｄ９ｄ２ｅ６ｂ３９ｅ７７２３２ｂ１ｃ６ｄ（特権識別子）
で、そのハッシュ値でメタデータを暗号化したもののハッシュ値が
ｅ５ｄｆ２５０９ｃ５ｂ３０ｂ４ｃ５７８５ａ０ｅ８５ｃ２ｆｂａ３６（公開識別子）
とする。
【００３０】
このとき、共有されるキーバリューストアには、図７の例に示す共有キーバリューストア７００が記録される。図７は、共有キーバリューストア７００のデータ構造例を示す説明図である。共有キーバリューストア７００は、ｋｅｙ欄７１０、ｖａｌｕｅ欄７２０を有している。ｋｅｙ欄７１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄７２０は、ｖａｌｕｅを記憶している。
一方、秘匿されるキーバニューストアには、図８の例に示す秘匿キーバリューストア８００が記録される。図８は、秘匿キーバリューストア８００のデータ構造例を示す説明図である。秘匿キーバリューストア８００のデータ構造は、共有キーバリューストア７００と同等である。秘匿キーバリューストア８００は、ｋｅｙ欄８１０、ｖａｌｕｅ欄８２０を有している。ｋｅｙ欄８１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄８２０は、ｖａｌｕｅを記憶している。
また、公開識別子と特権識別子のペア（ｐ，ｋ）は、図９の例に示す公開識別子・特権識別子ペア９００が記録される。図９は、公開識別子・特権識別子ペア９００のデータ構造例を示す説明図である。公開識別子・特権識別子ペア９００は、ｐ欄９１０、ｋ欄９２０を有している。ｐ欄９１０は、ｐ（公開識別子）を記憶している。ｋ欄９２０は、ｋ（特権識別子）を記憶している。
ただし、このペア（公開識別子・特権識別子ペア９００）は「秘匿されるキーバリューストア」（秘匿キーバリューストア８００）からいつでも再生することができる。したがって、「秘匿されるキーバリューストア」（秘匿キーバリューストア８００）は持たず、「公開識別子と特権識別子のペア」（公開識別子・特権識別子ペア９００）のみを持つことも可能である。
【００３１】
次に、図５の例に示す構造から、図１０の例に示すように、ファイル（ＲＥＡＤＭＥ）５２０を修正し、新たにファイル（ｉｎｄｅｘ．ｊｓ）１０３０が追加されたものとする。図１０は、対象となるディレクトリとファイルの構造例を示す説明図である。ディレクトリ（ｒｅｐｏ）５１０の下層にファイル（ＲＥＡＤＭＥ）５２０の他に、ファイル（ｉｎｄｅｘ．ｊｓ）１０３０が追加された。
そして、更新されたメタデータ１１００（コミットオブジェクト）を図１１の例に示す。つまり、メタデータ１１００は、以下の通りである。
−−−−−  −−−−−  −−−−−
ｔｒｅｅ  ｆ０ｂｆ２ｄ６６６７２ｂ７０６４８９ｄ５９２ｆｂｅａ１ｆ２ｄ８３
ｐａｒｅｎｔ  ｅ５ｄｆ２５０９ｃ５ｂ３０ｂ４ｃ５７８５ａ０ｅ８５ｃ２ｆｂａ３６
ａｕｔｈｏｒ  Ｓｃｏｔｔ  Ｃｈａｃｏｎ＜ｓｃｈａｃｏｎ＠ｇｍａｉＸ．ｃｏｍ＞１５２１６９８６２６  −０７００
ｃｏｍｍｉｔｔｅｒ  Ｓｃｏｔｔ  Ｃｈａｃｏｎ＜ｓｃｈａｃｏｎ＠ｇｍａｉＸ．ｃｏｍ＞１５２１６９８６２６  −０７００
ｕｐｄａｔｅ  ＲＥＡＤＭＥ  ａｎｄ  ａｄｄ  ｉｎｄｅｘ．ｊｓ
−−−−−  −−−−−  −−−−−
直前のコミットオブジェクトの公開識別子がｐａｒｅｎｔとして含まれてチェーンとなっている。
【００３２】
共有されるキーバリューストアには、共有キーバリューストア１２００が追加される。図１２は、共有キーバリューストア１２００のデータ構造例を示す説明図である。共有キーバリューストア１２００は、ｋｅｙ欄１２１０、ｖａｌｕｅ欄１２２０を有している。ｋｅｙ欄１２１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄１２２０は、ｖａｌｕｅを記憶している。
そして、秘匿されるキーバリューストアには、秘匿キーバリューストア１３００が追加される。図１３は、秘匿キーバリューストア１３００のデータ構造例を示す説明図である。秘匿キーバリューストア１３００は、ｋｅｙ欄１３１０、ｖａｌｕｅ欄１３２０を有している。ｋｅｙ欄１３１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄１３２０は、ｖａｌｕｅを記憶している。
そして、公開識別子と特権識別子のペア（ｐ，ｋ）は、公開識別子・特権識別子ペア１４００が追加される。図１４は、公開識別子・特権識別子ペア１４００のデータ構造例を示す説明図である。
公開識別子・特権識別子ペア１４００は、ｐ欄１４１０、ｋ欄１４２０を有している。ｐ欄１４１０は、ｐ（公開識別子）を記憶している。ｋ欄１４２０は、ｋ（特権識別子）を記憶している。
【００３３】
以上のようにブロックチェーンを構成することによって、たとえコンテンツの暗号鍵を紛失しても、元のコンテンツより公開識別子と特権識別子は再構築が可能で、共有ブロックチェーンに含まれる暗号化コンテンツと元のコンテンツの対応関係を証明することができる。
【００３４】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図１５に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部（演算部）としてＣＰＵ１５０１を用い、記憶装置としてＲＡＭ１５０２、ＲＯＭ１５０３、ＨＤＤ１５０４を用いている。ＨＤＤ１５０４として、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュ・メモリであるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等を用いてもよい。計算モジュール１２０、復号モジュール１３０、比較モジュール１４０等のプログラムを実行するＣＰＵ１５０１と、そのプログラムやデータを記憶するＲＡＭ１５０２と、本コンピュータを起動するためのプログラム等が格納されているＲＯＭ１５０３と、記憶モジュール１１０等としての機能を有する補助記憶装置であるＨＤＤ１５０４と、キーボード、マウス、タッチスクリーン、マイク、カメラ（視線検知カメラ等を含む）等に対する利用者の操作（動作、音声、視線等を含む）に基づいてデータを受け付ける受付装置１５０６と、ＣＲＴ、液晶ディスプレイ、スピーカー等の出力装置１５０５と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース１５０７、そして、それらをつないでデータのやりとりをするためのバス１５０８により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【００３５】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図１５に示すハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１５に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）や再構成可能な集積回路（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに図１５に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器（携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む）、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００３６】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分若しくは全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００３７】
１００…データ管理装置
１１０…記憶モジュール
１２０…計算モジュール
１３０…復号モジュール
１４０…比較モジュール
２００…ユーザー端末
２５０…バージョン管理装置
２９０…通信回線
【図１】
2020048107.tif 000007
【図２】
2020048107.tif 000008
【図３】
2020048107.tif 000009
【図４】
2020048107.tif 000010
【図５】
2020048107.tif 000011
【図６】
2020048107.tif 000012
【図７】
2020048107.tif 000013
【図８】
2020048107.tif 000014
【図９】
2020048107.tif 000015
【図１０】
2020048107.tif 000016
【図１１】
2020048107.tif 000017
【図１２】
2020048107.tif 000018
【図１３】
2020048107.tif 000019
【図１４】
2020048107.tif 000020
【図１５】
2020048107.tif 000021