(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023182383
(43)【公開日】2023-12-26
(54)【発明の名称】データ保持証明システム及びデータ保持証明方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20231219BHJP
【FI】
H04L9/32 200A
H04L9/32 200E
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022095954
(22)【出願日】2022-06-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】佐藤 尚宜
(72)【発明者】
【氏名】吉野 雅之
(57)【要約】 (修正有)
【課題】データ保持証明時の計算量が小さいデータ保持証明プロトコルを実現するデータ保持証明システム及びデータ保持証明方法を提供する。
【解決手段】データ所有者A端末は、預託対象データが分割されて生成された複数のブロックそれぞれの整数nによる剰余に基づく証跡を保持し、当該複数のブロックの数と同じ個数の変数を有する多項式をランダムに生成して、データ受託者B端末に送信する。データ受託者B端末は、検証対象データを、預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、分割した検証対象データのブロックそれぞれを、多項式の変数に代入した代入値を計算し、データ所有者A端末に送信する。データ所有者A端末は、当該代入値と、多項式に証跡を代入した値と、が整数nを法として合同であるかに基づいて、検証対象データと預託対象データとが一致するかを判定する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
データ保持証明システムであって、
第1端末と第2端末とを含み、
前記第1端末は、
預託対象データが分割されて生成された複数のブロックそれぞれの整数nによる剰余に基づく、前記預託対象データに対する証跡を保持し、
前記複数のブロックの数と同じ個数の変数を有する多項式をランダムに生成して、前記第2端末に送信し、
前記第2端末は、
検証対象データを保持し、
前記検証対象データを、前記預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、
前記分割した検証対象データのブロックそれぞれを、前記多項式の変数に代入した代入値を計算し、前記第1端末に送信し、
前記第1端末は、
前記代入値と、前記多項式に前記証跡を代入した値と、が前記整数nを法として合同であるかに基づいて、前記検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明システム。
【請求項2】
請求項1に記載のデータ保持証明システムであって、
前記預託対象データMは、t個のブロックM1||M2||・・・|Mtに分割され、
前記第1端末は、
前記証跡として、A(M)={αi|αi=Mi mod n} (i=1,2,..,t)を生成し、
前記多項式として、t変数整数係数多項式F(x1,x2,・・・,xt)をランダムに生成し、
前記第2端末は、
前記検証対象データM’を、t個のブロックM’1||M’2||…||M’tに分割し、
前記代入値として、F(M’)=F(M’1,M’2,・・・,M’t)を計算し、
前記第1端末は、
F(M’)≡F(α1,α2,・・・,αt) mod nが成立するかに基づいて、前記検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明システム。
【請求項3】
請求項1に記載のデータ保持証明システムであって、
前記第1端末は、前記多項式として、1次多項式をランダムに生成する、データ保持証明システム。
【請求項4】
請求項1に記載のデータ保持証明システムであって、
前記整数nは、所定の範囲からランダムに選択された値であり、
前記複数のブロックのブロックサイズそれぞれは、予め定められた同じ値、又は乱数若しくは擬似乱数に基づいて定められた値である、データ保持証明システム。
【請求項5】
請求項1に記載のデータ保持証明システムであって、
前記検証対象データを保持する第3端末を含み、
前記第2端末は、計算を実行する領域として、通常領域と、前記通常領域とは隔離された保護領域と、を有し、
前記第1端末は、
第1の鍵と第2の鍵とを保持し、
前記第1の鍵と前記第2の鍵とを暗号化した暗号文を前記第2端末の前記保護領域に送信し、
前記検証対象データは、前記第1の鍵で暗号化されており、
前記第2端末が保持する前記検証対象データは、前記第3端末から送信されたものであり、
前記第2端末は、
前記保護領域において、前記暗号文を復号することで前記第1の鍵及び前記第2の鍵を取得し、
前記保護領域において、前記検証対象データを前記第1の鍵を用いて復号し、
前記保護領域において、前記復号した検証対象データを前記第2の鍵で暗号化し、
前記保護領域において、前記復号した検証対象データを、前記預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、
前記復号した検証対象データが分割されたブロックそれぞれを、前記多項式の変数に代入した代入値を計算し、前記第1端末に送信し、
前記第1端末は、
前記代入値と、前記多項式に前記証跡を代入した値と、が前記整数nを法として合同であるかに基づいて、前記復号した検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明システム。
【請求項6】
データ保持証明システムによるデータ保持証明方法であって、
前記データ保持証明システムは、第1端末と第2端末とを含み、
前記第1端末は、預託対象データが分割されて生成された複数のブロックそれぞれの整数nによる剰余に基づく、前記預託対象データに対する証跡を保持し、
前記第2端末は、検証対象データを保持し、
前記データ保持証明方法は、
前記第2端末が、前記複数のブロックの数と同じ個数の変数を有する多項式をランダムに生成して、前記第2端末に送信し、
前記第2端末が、前記検証対象データを、前記預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、
前記第2端末が、前記分割した検証対象データのブロックそれぞれを、前記多項式の変数に代入した代入値を計算し、前記第1端末に送信し、
前記第1端末が、前記代入値と、前記多項式に前記証跡を代入した値と、が前記整数nを法として合同であるかに基づいて、前記検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明方法。
【請求項7】
請求項6に記載のデータ保持証明方法であって、
前記預託対象データMは、t個のブロックM1||M2||・・・|Mtに分割され、
前記データ保持証明方法は、
前記第1端末が、前記証跡として、A(M)={αi|αi=Mi mod n} (i=1,2,..,t)を生成し、
前記第1端末が、前記多項式として、t変数整数係数多項式F(x1,x2,・・・,xt)をランダムに生成し、
前記第2端末が、前記検証対象データM’を、t個のブロックM’1||M’2||…||M’tに分割し、
前記第2端末が、前記代入値として、F(M’)=F(M’1,M’2,・・・,M’t)を計算し、
前記第1端末が、F(M’)≡F(α1,α2,・・・,αt) mod nが成立するかに基づいて、前記検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明方法。
【請求項8】
請求項6に記載のデータ保持証明方法であって、
前記第1端末が、前記多項式として、1次多項式をランダムに生成する、データ保持証明方法。
【請求項9】
請求項6に記載のデータ保持証明方法であって、
前記整数nは、所定の範囲からランダムに選択された値であり、
前記複数のブロックのブロックサイズそれぞれは、予め定められた同じ値、又は乱数若しくは擬似乱数に基づいて定められた値である、データ保持証明方法。
【請求項10】
請求項6に記載のデータ保持証明方法であって、
前記データ保持証明システムは、前記検証対象データを保持する第3端末を含み、
前記第2端末は、計算を実行する領域として、通常領域と、前記通常領域とは隔離された保護領域と、を有し、
前記第1端末は、第1の鍵と第2の鍵とを保持し、
前記検証対象データは、前記第1の鍵で暗号化されており、
前記第2端末が保持する前記検証対象データは、前記第3端末から送信されたものであり、
前記データ保持証明方法は、
前記第1端末が、前記第1の鍵と前記第2の鍵とを暗号化した暗号文を前記第2端末の前記保護領域に送信し、
前記第2端末が、前記保護領域において、前記暗号文を復号することで前記第1の鍵及び前記第2の鍵を取得し、
前記第2端末が、前記保護領域において、前記検証対象データを前記第1の鍵を用いて復号し、
前記第2端末が、前記保護領域において、前記復号した検証対象データを前記第2の鍵で暗号化し、
前記第2端末が、前記保護領域において、前記復号した検証対象データを、前記預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、
前記復号した検証対象データが分割されたブロックそれぞれを、前記多項式の変数に代入した代入値を計算し、前記第1端末に送信し、
前記第1端末が、前記代入値と、前記多項式に前記証跡を代入した値と、が前記整数nを法として合同であるかに基づいて、前記復号した検証対象データと前記預託対象データとが一致するかを判定する、データ保持証明方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ保持証明システム及びデータ保持証明方法に関する。
【背景技術】
【0002】
近年、種々のデータから未知の、かつ有用な知識を引き出すデータ分析が注目を集めている。企業は自社保有のデータはもとより、他社を含む社外のデータも収集し、マーケティングや業務効率化に活用するなど、情報の種々の分析がますます重要な活動として認識されるようになっている。
【0003】
情報利活用やそのための情報流通への期待が高まる中、扱われる情報には機微情報及び個人情報などの、漏洩や改ざんなどセキュリティ攻撃にさらされてはならない情報が多々含まれる。
【0004】
データ所有者がクラウドやデータ分析者などの第三者にデータを預託又は付与する場合、データ送信の際に、データが正しく受信されたか、及びデータの受信後にデータ漏洩や改ざんされることなく正しく保管されているか、などの第三者によるデータ管理への懸念がある。このような懸念は、データ所有者がデータの提供を躊躇する一因となっている。データ所有者の安心の観点から、第三者に預託したデータの管理が正しく行われているか否かを確認できる方法が望まれる。
【0005】
データの受信が正しく行われたかを確認する手段としては受信直後にデータのハッシュ値を返送する単純な方法などの方法があるが、データが保管されてから時間が経過した後、再度データの完全性(消去や改ざんがないか)を確認したい場合にはこのような単純な方法では保管していたハッシュ値の再送することにより第三者側が虚偽の報告を行うことが簡単にできてしまう。
【0006】
これを防ぐ技術として、国際公開第2014/068734号(特許文献1)がある。この公報には、「ユーザ端末がサーバ装置に預けた検証対象データをサーバ装置が保持しているか否かの検証を少ない通信量又は計算量で行い得るデータ保持検証システム及び方法を提案する。ユーザ端末がサーバ装置に預けた検証対象データをサーバ装置が保持しているか否かを検証するデータ保持検証システム及び方法において、ユーザ端末からサーバ装置に所定の検証用情報を送信し、サーバ装置において、保持している検証対象データと、検証用情報とを用いて当該検証対象データに固有かつ当該検証対象データよりも小さいデータサイズのサーバ側証拠データを算出し、算出したサーバ側証拠データをユーザ端末に送信し、ユーザ端末側において、検証用情報に基づくユーザ端末側証拠データと、サーバ装置から送信されたサーバ側証拠データとを比較し、比較結果に基づいて、サーバ装置が検証対象データを保持しているか否かを判定するようにした」と記載されている(要約参照)。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に記載の技術では、RSA暗号技術の一部を使うことなどにより証明プロトコルの際の計算量が多いため、データ量やデータ所有者数が多くなった場合、データ保管している第三者の計算量が膨大になる。
【0009】
そこで、本発明の一態様は、データ保持証明時の計算量が小さいデータ保持証明プロトコルを実現する。
【課題を解決するための手段】
【0010】
上記した課題を解決するために本発明の一態様は以下の構成を採用する。データ保持証明システムは、第1端末と第2端末とを含み、前記第1端末は、預託対象データが分割されて生成された複数のブロックそれぞれの整数nによる剰余に基づく、前記預託対象データに対する証跡を保持し、前記複数のブロックの数と同じ個数の変数を有する多項式をランダムに生成して、前記第2端末に送信し、前記第2端末は、検証対象データを保持し、前記検証対象データを、前記預託対象データの分割と同じアルゴリズムで複数のブロックに分割し、前記分割した検証対象データのブロックそれぞれを、前記多項式の変数に代入した代入値を計算し、前記第1端末に送信し、前記第1端末は、前記代入値と、前記多項式に前記証跡を代入した値と、が前記整数nを法として合同であるかに基づいて、前記検証対象データと前記預託対象データとが一致するかを判定する。
【発明の効果】
【0011】
本発明の一態様によれば、データ保持証明時の計算量が小さいデータ保持証明プロトコルを実現することができる。
【0012】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】実施例1におけるデータ保持証明システムの構成例を示すブロック図である。
【
図2】実施例1におけるデータ所有者A端末の構成例を示すブロック図である。
【
図3】実施例1におけるデータ受託者B端末の構成例を示すブロック図である。
【
図4】実施例1におけるデータ所有者A端末が保持するデータをデータ受託者B端末に預託する処理の一例を示すシーケンス図である。
【
図5】実施例1におけるパラメータの生成処理の一例を示すフローチャートである。
【
図6】実施例1における証跡データの計算処理の一例を示すフローチャートである。
【
図7】実施例1におけるデータ保持証明処理の一例を示すシーケンス図である。
【
図8】実施例1におけるチャレンジ生成処理、レスポンス計算処理、及びレスポンスのチェック処理の例を示すフローチャートである。
【
図9】実施例2におけるデータ保持証明システムの構成例を示すブロック図である。
【
図10】実施例2におけるデータ受託者C端末の構成例を示すブロック図である。
【
図11】実施例2における複数データ受託者間におけるデータ移設の処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【実施例0015】
<システム構成>
図1は、データ保持証明システムの構成例を示すブロック図である。データ保持証明システムは、例えば、インターネット等のネットワーク1000で接続されたデータ所有者A端末100及びデータ受託者B端末200を含む。
【0016】
データ所有者A端末100が保有するデータをデータ受託者B端末200が保管する。データ所有者A端末100は、ネットワーク1000を通じて、データ受託者B端末200がデータ所有者A端末100のデータを正しく保管しているか否かを確認する。
【0017】
<データ所有者A端末100の構成例>
図2は、データ所有者A端末100の構成例を示すブロック図である。データ所有者A端末100は、例えば、入力装置101、出力装置102、通信装置103、CPU(Central Processing Unit)110、補助記憶装置120、及びメモリ150を有する計算機によって構成される。
【0018】
CPU110は、プロセッサを含み、メモリ150に格納されたプログラムを実行する。メモリ150は、不揮発性の記憶素子であるROM(Read Only Memory)及び揮発性の記憶素子であるRAM(Random Access Memory)を含む。ROMは、不変のプログラム(例えば、BIOS(Basic Input/Output System))などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU110が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【0019】
補助記憶装置120は、例えば、磁気記憶装置(HDD(Hard Disk Drive))、フラッシュメモリ(SSD(Solid State Drive))等の大容量かつ不揮発性の記憶装置であり、CPU110が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置120から読み出されて、メモリ150にロードされて、CPU110によって実行される。
【0020】
入力装置101は、キーボードやマウスなどの、オペレータからの入力を受ける装置である。出力装置102は、ディスプレイ装置やプリンタなどの、プログラムの実行結果をオペレータが視認可能な形式で出力する装置である。
【0021】
通信装置103は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信装置103は、例えば、USB(Universal Serial Bus)等のシリアルインターフェースを含んでもよい。
【0022】
CPU110が実行するプログラムの一部またはすべては、非一時的記憶媒体であるリムーバブルメディア(CD-ROM、フラッシュメモリなど)又は、非一時的記憶装置を備える外部計算機からネットワークを介してデータ所有者A端末100に提供され、非一時的記憶媒体である不揮発性の補助記憶装置120に格納されてもよい。このため、データ所有者A端末100は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。これは、データ受託者B端末200及び実施例2で後述するデータ受託者C端末300についても同様である。
【0023】
データ所有者A端末100は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。これは、データ受託者B端末200及び実施例2で後述するデータ受託者C端末300についても同様である。
【0024】
CPU110は、例えば、パラメータ生成部111と、証跡計算部112と、を含む。パラメータ生成部111は、データ保持証明システムでデータ所有者A端末100が計算に用いるパラメータ141を生成する。
【0025】
証跡計算部112は、預託対象のデータ131をデータ所有者A端末100がデータ131をデータ受託者B端末200に送信する前に、データ131と生成されたパラメータ141とに基づいて、証跡データ132を計算する。証跡データ132は、データ受託者B端末200が正しいデータ(データ所有者A端末100がデータ受託者B端末200に対して送信した元のデータに対して改変(改ざんや消去など)などが実行されていないデータ)を保有していることを証明するためのデータである。
【0026】
例えば、CPU110は、メモリ150にロードされたパラメータ生成プログラムに従って動作することで、パラメータ生成部111として機能し、メモリ150にロードされた証跡計算プログラムに従って動作することで、証跡計算部112として機能する。データ受託者B端末200のCPU210、及び実施例2で後述するデータ受託者C端末300のCPU310それぞれに含まれる後述する機能部についても、プログラムと機能部の関係は同様である。
【0027】
なお、CPU110、データ受託者B端末200のCPU210、及び実施例2で後述するデータ受託者C端末300のCPU310に含まれる機能部による機能の一部又は全部が、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等のハードウェアによって実現されてもよい。
【0028】
また、CPU110は、補助記憶装置120に格納されているデータの少なくとも一部を出力装置102に表示したり、補助記憶装置120に格納されているデータを読み込み、通信装置103を介して、データ受託者B端末200へ送信したりする。これは、データ受託者B端末200のCPU210、及び実施例2で後述するデータ受託者C端末300のCPU310についても同様である。
【0029】
補助記憶装置120は、それぞれデータを記録するための領域であるデータ記録部130及びパラメータ記録部140を含む。データ記録部130は、データ受託者B端末200に送信されるデータ131、及び証跡計算部112が計算した証跡データ132を保持する。パラメータ記録部140は、パラメータ生成部111が生成したパラメータ141を保持する。
【0030】
なお、補助記憶装置120、データ受託者B端末200の補助記憶装置220、及び実施例2で後述するデータ受託者C端末300の補助記憶装置320に格納されている一部又は全部の情報は、それぞれ、メモリ150、データ受託者B端末200のメモリ250、及び実施例2で後述するデータ受託者C端末300のメモリ350に格納されていてもよいし、当該端末に接続されている外部のデータベースに格納されていてもよい。
【0031】
なお、本実施形態において、データ保持証明システムが使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【0032】
<データ受託者B端末200の構成例>
図3は、データ受託者B端末200の構成例を示すブロック図である。データ受託者B端末200は、例えば、入力装置201、出力装置202、通信装置203、CPU210、補助記憶装置220、及びメモリ250を有する計算機によって構成される。
【0033】
入力装置201、出力装置202、通信装置203、CPU210、補助記憶装置220、及びメモリ250それぞれのハードウェアとしての説明は、入力装置101、出力装置102、通信装置103、CPU110、補助記憶装置120、及びメモリ150のハードウェアとしての説明と同様であるため省略する。
【0034】
CPU210は、例えば、レスポンス計算部211を含む。レスポンス計算部211は、データ所有者A端末100から受信したデータ231及びチャレンジを用いてレスポンスを計算する。
【0035】
補助記憶装置220は、データを格納する領域であるデータ記録部230を含む。データ記録部230は、データ所有者A端末100から受信した検証対象のデータ231を保持する。
【0036】
<データの預託>
図4は、データ所有者A端末100が保持するデータ131をデータ受託者B端末200に預託する処理の一例を示すシーケンス図である。
図4の処理が開始する前に、データ所有者A端末100のデータ記録部130には、データ131が格納されている。
【0037】
ステップS401において、データ所有者A端末100のパラメータ生成部111は、データ131に対する証跡データ132を計算するために必要なパラメータ141を生成し、パラメータ記録部140に記録する。ステップS401の詳細は、
図5を用いて後述する。
【0038】
ステップS402において、データ所有者A端末100の証跡計算部112は、データ131とパラメータ141に基づいて証跡データ132を計算する。ステップS402の詳細は、
図6を用いて後述する。
【0039】
ステップS403において、証跡計算部112は、データ131をデータ受託者B端末200に送付する。ステップS404において、データ受託者B端末200のレスポンス計算部211は、データ131を受信した後、データ131をデータ記録部230にデータ231として記録する。
【0040】
ステップS405において、データ所有者A端末100の証跡計算部112は、証跡データ132をデータ記録部130に記録する。さらに、証跡計算部112は、データ131をデータ記録部130に保管したままとしてもよいし、データ131をデータ記録部130から消去してもよい。ステップS405の処理は、ステップS402以降かつステップS403の処理の前に実行されてもよい。
【0041】
図5は、ステップS401におけるパラメータ141の生成処理の一例を示すフローチャートである。ステップS501において、データ所有者A端末100のパラメータ生成部111は、自然数nをランダムに生成する。具体的には、例えば、パラメータ生成部111は、予め定められた範囲、例えば2^127(「^」はべき乗を示す)より大きくかつ2^128より小さいなどの範囲、に含まれる自然数nをランダムに選択する。なお、ステップS401において、パラメータ生成部111は、予め定められた範囲に含まれる自然数に代えて、予め定められた範囲に含まれる整数、素数、又は奇数等をランダムに生成してもよい。
【0042】
ステップS502において、パラメータ生成部111は、データ131をブロック分割するための各ブロックのサイズを決定する。パラメータ生成部111は、全てのブロックのサイズを予め定められた同じ長さ、例えば512MBなどに決定してもよいし、少なくとも一部のブロックのサイズが異なるように決定してもよい。
【0043】
パラメータ生成部111は、例えば、乱数を用いて各ブロックサイズを決定することで、少なくとも一部のブロックのサイズが異なるようにブロックサイズを決定することができる。また、パラメータ生成部111は、擬似乱数生成器を用いて、各ブロックサイズを決定してもよい。なお、パラメータ生成部111は、乱数を用いて各ブロックサイズを決定した場合は当該乱数を、擬似乱数生成器を用いて各ブロックサイズを決定した場合は擬似乱数生成器に対して入力されたシードをパラメータ141としてパラメータ記録部140に記録する。
【0044】
なお、各ブロックのサイズは、自然数nよりも十分大きく、かつデータ131のデータ長よりも十分小さいことが望ましい。
【0045】
なお、パラメータ生成部111は、ブロック分割のアルゴリズム(ブロック分割の位置及び/又は各ブロックのサイズ)、及び各ブロックのサイズの情報を、ステップS403において、データ131とともにデータ受託者B端末200に送信し、データ受託者B端末200のレスポンス計算部211は当該情報をデータ231とともにデータ記録部230に記録する。
【0046】
図6は、ステップS402における証跡データ132の計算処理の一例を示すフローチャートである。ステップS601において、証跡計算部112は、ステップS502において決定されたブロック分割手順及びブロックサイズに基づいて、例えば、データ131に対するブロック分割を以下の(式1)を用いて実行する。
【0047】
M=M1||M2||・・・|Mt・・・(式1)
【0048】
ここでMはデータ131であり、Mi(i=1,2,..,t)はデータ131の分割後の各ブロックであり、||は各ブロックの結合を示す。なお、tは、この例におけるブロック総数である。
【0049】
ステップS602において、証跡計算部112は、各ブロックMiに対し、ステップS501で生成された自然数nを用いて、Miをnで割った時の剰余αiを計算し、以下の(式2)が示すt個のブロックそれぞれに対応するαiの全体からなる集合A(M)を、証跡データ132としてデータ記録部130に保管する。
【0050】
A(M)={αi|αi=Mi mod n}・・・(式2)
【0051】
<データの保持証明>
図7は、データ保持証明処理の一例を示すシーケンス図である。データ保持証明処理では、データ所有者A端末100がデータ131をデータ受託者B端末200に預託した後、データ受託者B端末200がデータ231を改変(改ざんや消去など)することなく、預託したときのまま保管しているかが確認される。
【0052】
ステップS701において、データ所有者A端末100の証跡計算部112は、データ131をデータ受託者B端末200が改変なく保管していることを確かめるために必要なチャレンジを生成する。ステップS701の詳細は、
図8を用いて後述する。
【0053】
ステップS702において、証跡計算部112は、チャレンジを含む保持証明リクエストをデータ受託者B端末200に送信する。ステップS703において、データ受託者B端末200のレスポンス計算部211は、チャレンジを含む保持証明リクエストを受信する。
【0054】
ステップS704において、レスポンス計算部211は、保管しているデータ231とチャレンジとを用いてレスポンスを計算する。ステップS704の詳細は、
図8を用いて後述する。ステップS705において、レスポンス計算部211は、ステップS704で計算したレスポンスをデータ所有者A端末100に送信する。
【0055】
ステップS706において、データ所有者A端末100の証跡計算部112はレスポンスを受信する。ステップS707において、証跡計算部112は、証跡データ132と、受信したレスポンスと、を用いて預託したデータ131が改変されずにデータ受託者B端末200に保管されているか否かを判定して、判定結果(データ131が改変されていると判定した場合にはOK、改変されていないと判定した場合にはNG)を例えば出力装置102に出力して、データ保持証明を終了する。ステップS707の詳細は、
図8を用いて後述する。
【0056】
図8は、ステップS701におけるチャレンジ生成処理、ステップS704におけるレスポンス計算処理、及びステップS707におけるレスポンスのチェック処理の例を示すシーケンス図である。
【0057】
ステップS801において、データ所有者A端末100の証跡計算部112は、ランダムにt変数整数係数多項式F(x1,x2,・・・,xt)を生成する。なお、証跡計算部112は、F(x1,x2,・・・,xt)の係数を、予め定められた範囲の中でランダムに選択してもよい。なお、F(x1,x2,・・・,xt)は任意の次数をとることができるが、例えば、1次多項式のように次数の低い多項式であれば計算量を低減することができる。また、1次多項式のように次数の低い多項式であっても、データ保持証明の十分な精度を確保することができる。
【0058】
また、証跡計算部112は、F(x1,x2,・・・,xt)の係数の決定方法自体を選択してもよい。F(x1,x2,・・・,xt)に含まれる各項の次数や係数を、擬似ランダム関数を用いて決定し、擬似ランダム関数への入力としてのシードを決定する方法は、F(x1,x2,・・・,xt)の係数の決定方法の一例である。
【0059】
具体的には、例えば、証跡計算部112は、t変数1次多項式に対する係数を、ハッシュ関数を連続的に適用する方法として決定し、t変数1次多項式を生成したことを示す情報と、ハッシュ関数の最初の入力をチャレンジとしてデータ受託者B端末200に送付するなどしてもよい。
【0060】
より具体的には、例えば、証跡計算部112は、ハッシュ関数の入力Sをランダムに生成し、ハッシュチェーンh_1=h(S),h_i=h(h_(i-1))とし、多項式Fを、下記の(式3)によって決定すればよい。但し、下記の(式3)における「*」は乗算を表す。
【0061】
F=h_1*x1+h_2*x2+・・・+h_t*xt・・・(式3)
【0062】
ステップS802において、証跡計算部112は、多項式を生成した手順を示す情報及びS、又は生成した多項式自体をチャレンジとしてデータ受託者B端末200に送信する。ステップS803において、データ受託者B端末200のレスポンス計算部211は、チャレンジを受信する。
【0063】
ステップS804において、レスポンス計算部211は、ステップS403で受信したブロック分割のアルゴリズムに従って(即ちデータ231を分割する位置及び各ブロックのブロック数はステップS403におけるブロック分割と同じである)、データ231をブロック分割する。以下、データ231をM’とするとき、下記の(式4)に示すブロック分割が行われたものとする。
【0064】
M’=M’1||M’2||…||M’t・・・(式4)
【0065】
ステップS805において、レスポンス計算部211は、M’の各ブロックをビット系列とみなし、さらにビット系列を整数の2進展開とみなして整数値とし、下記の(式5)に示すように当該整数値をチャレンジが示す多項式Fに代入して多項式の整数値を計算する。
【0066】
F(M’)=F(M’1,M’2,・・・,M’t)・・・(式5)
【0067】
ステップS806において、レスポンス計算部211は、F(M’)をレスポンスとしてデータ所有者A端末100に送信する。ステップS807において、データ所有者A端末100の証跡計算部112は、レスポンスF(M’)を受信する。
【0068】
ステップS808において、証跡計算部112は、証跡データ132(A(M))を用いて、剰余計算によりデータの改変の有無を判定する。具体的には、例えば、証跡計算部112は、nと証跡データA(M)とを用いて、下記の(式6)を計算する。
【0069】
F(α1,α2,・・・,αt) mod n・・・(式6)
【0070】
証跡計算部112は、下記の(式7)に従って、F(α1,α2,・・・,αt)が、レスポンスF(M’)と、nを法とした剰余として等しくなるか否かを判定する。
【0071】
F(M’)≡F(α1,α2,・・・,αt) mod n・・・(式7)
【0072】
証跡計算部112は、(式7)の合同式が成立すると判定した場合には、データの改変がないと判定して「OK」を出力装置102に出力し、(式7)の合同式が成立しないと判定した場合には、データの改変があると判定して「NG」を出力装置102に出力する。なお、(式7)におけるmod nはnで割った余り、つまり剰余を表す。
【0073】
以上、本実施例のデータ保持証明システムにおいては、加算、乗算、及び剰余計算等の計算量の少ない処理のみによってデータが改変されているか否かを判定することができる。具体的には、データ所有者A端末100が証跡を計算する際の自然数nを、データ131を分割するブロックサイズに比べて小さい値として選択することで元のデータ131に対して証跡のサイズを小さくできる。またデータ所有者A端末100が、データ保持証明処理の際に生成する多項式として低次数かつ、係数の小さいものを生成すれば、多項式の値を計算する際の計算量を小さく抑えることが可能である。つまり、データ保持証明処理における計算を効率よく実行でき、大容量データや多数のデータ所有者からの要求にも効率的に対応可能である。また、データ所有者A端末100は、多項式を毎回ランダムに選択することで、チャレンジレスポンスによってデータ受託者B端末200の虚偽報告を防ぐことができる。
【0074】
また、データ所有者A端末100はデータ131をブロック分割することにより、データ所有者によるデータの一部のアップデートの際における通信量を抑えることができる。
【0075】
次にデータ保持証明システムのユースケースを説明する。
【0076】
<クラウドストレージ>
クラウドの利用は着実に増加しており、クラウドは社会経済活動を支える重要な基盤インフラとなっている。データ所有者の所有する画像や動画などのデータが増加し、自身のIT(Information technology)環境で保管するのはコストがかかるようになってきており、クラウドストレージサービスを利用するケースが多くなってきている。
【0077】
その際、データ所有者がデータ受託者(クラウド)に過去に預けたデータが正しく、改変されることなく保管されているか否かを定期的、又は不定期に(例えば、データ所有者の希望に応じて)、データ所有者が確認できるようになっていれば、データ所有者の安心感が高まる。そこで、本実施例で説明した方法を適用すれば、当該確認作業を行うことができる。
【0078】
データ所有者はクラウドにデータを預ける際、本実施例の手順でパラメータと対象データに対する証跡を生成した後、証跡を保管し、対象データをクラウドに送付する。この際、証跡のデータサイズは元のデータをブロック分割した際のブロックサイズより大幅に小さくなるようにすれば、データ所有者の端末が保管する証跡データは小さくなり、クラウドを利用して端末の保管データ量の削減を実現することができる。
【0079】
<情報銀行及び情報信託銀行>
情報利活用の観点から、個人情報を収集し、データとして事業者に活用してもらうサービスが考えられている。個人情報が収集される際には、漏洩対策などのセキュリティが求められる。具体的には、例えば、暗号化保管や、利活用事業者への提供の際の高度な匿名化などの処理が求められる。
【0080】
一方、データ提供した個人(データ所有者)の観点では、預託したデータが改変されずに正しく保管されているかなど、データの管理に対する懸念も生じ、このような懸念はデータ提供の障壁の一因となっている。そこで、本実施例の手順を適用することにより、このような懸念を払しょくすることができる。
【0081】
一般的な銀行では、通帳への記帳により預けた資産の状況を確認することが実社会で行われているが、デジタルデータを情報銀行等に預ける場合にはデジタルデータが改変されているかをデータ所有者自身が判断しにくいため、本実施例のデータ保持証明による処理のように、虚偽報告を高い確率で見抜くプロトコルが必要である。
【0082】
データ所有者である個人は、自身に関する情報を情報銀行等に預託する際、本実施例の手順でパラメータと対象データに対する証跡を生成した後、証跡を保管し、対象データを情報銀行に送信すればよい。
データ所有者A端末100と、2つのデータ受託者端末がネットワーク1000を通じて通信を行い、データ所有者A端末100が持つデータを1つ目のデータ受託者端末に預託した後、預託したデータの一部又は全部を他のデータ受託者端末に移設する。つまり、本実施例のデータ保持証明システムは、複数のデータ受託者間におけるデータ移設を実現する。
本実施例では、データ所有者A端末100が1つ目のデータ受託者端末にデータを預託する際、データの内容を秘匿するために暗号化を施す。1つ目のデータ受託者端末に預託した暗号化データを他のデータ受託者端末に移設する際、高い安全性を確保するため、暗復号化のための鍵を、別の鍵に変更することを想定する。
入力装置301、出力装置302、通信装置303、CPU310、補助記憶装置320、及びメモリ350それぞれのハードウェアとしての説明は、入力装置101、出力装置102、通信装置103、CPU110、補助記憶装置120、及びメモリ150のハードウェアとしての説明と同様であるため省略する。
但し、CPU310は、内部の処理がデータ受託者C端末300の外部から盗み見ることができない、つまりCPU310上において他の処理を実行する領域と隔離され、秘密計算が実行可能な保護領域3100を有する。TEE(Trusted Execution Environment)などは、保護領域3100の一例である。保護領域3100と、データ所有者A端末100と、の間で暗号化通信が可能であるとする。
保護領域3100は、レスポンス計算部311及び暗復号化部312を含む。レスポンス計算部311は、データ受託者B端末200から移設されたデータ331と、チャレンジと、を用いてレスポンスを計算する。暗復号化部312は、鍵の復号、データの暗号化及び復号を実行する。
補助記憶装置320は、データを格納する領域であるデータ記録部330を含む。データ記録部330は、データ受託者B端末200から受信したデータ331を保持する。
ステップS1002において、証跡計算部112は、データ131を共通鍵暗号方式などで鍵Kを用いて暗号化し、暗号化されたデータ131をデータ受託者B端末200に送信する。なお、鍵Kは予め補助記憶装置120に格納されていてもよいし、ステップS1002の処理が開始するまでに証跡計算部112によって生成されてもよい。ステップS1003において、データ受託者B端末200のレスポンス計算部211は、受信した暗号化されたデータ131を、データ231として保管する。
ステップS1004において、データ受託者B端末200のレスポンス計算部211は、例えば、データ所有者A端末100の依頼に応じて、保管しているデータ231をデータ受託者C端末300に送信する。なお、預託されているデータ231がブロックごとに暗号化されている場合には、レスポンス計算部211は、暗号化されているデータ231のうち、依頼された一部のブロックの暗号化データのみをデータ受託者C端末300に送信してもよい。
ステップS1005において、データ受託者C端末300のレスポンス計算部311は、受信した暗号化データをデータ331として保管する。ステップS1006において、データ所有者A端末100の証跡計算部112は、ステップS801と同様の方法で生成した、平文のデータ131に対するチャレンジを生成し、もとの暗号化の際に用いた鍵Kと、新しい鍵K’と、を暗号化した暗号文と、生成したチャレンジと、をデータ受託者C端末300の保護領域3100に送信する。
なお、鍵K’は予め補助記憶装置120に格納されていてもよいし、ステップS1006の処理が開始するまでに証跡計算部112によって生成されてもよい。また、鍵K及びK’を暗号化するための暗号鍵及び暗号化アルゴリズムは、例えば、データ所有者A端末100とデータ受託者C端末300との間で予め共有されている。
ステップS1007において、データ受託者C端末300の暗復号化部312は、保護領域3100の内部で鍵K及び鍵K’を復号し、ステップS1005で受信したデータ331を、鍵Kを用いて保護領域3100の内部で復号する。さらに、ステップS1007において、レスポンス計算部311は、復号したデータと、ステップS1006で送信されたチャレンジと、に基づいて、ステップS804及びステップS805と同様の方法で、レスポンスを保護領域3100の内部で計算する。さらに、ステップS1007において、暗復号化部312は、保護領域3100の内部で、復号したデータを鍵K’で暗号化し、データ331として保管する。
ステップS1009において、データ所有者A端末100の証跡計算部112は、ステップS808と同様の方法でレスポンスをチェックし、データが改変されていないか否かを判定する。また、ステップS1009において、証跡計算部112は、(式7)の合同式が成立すると判定した場合には、データの改変がないと判定して「OK」を出力装置102に出力し、(式7)の合同式が成立しないと判定した場合には、データの改変があると判定して「NG」を出力装置102に出力する。
従って、データ所有者A端末100は、データが改変されていないと判断した場合、データ受託者B端末200に保管されていた暗号化データが改変されずに保管されていたこと、及びデータ受託者B端末200からデータ受託者端末C300にデータが正しく移設されたことを確認することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。