(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-25
(45)【発行日】2024-01-09
(54)【発明の名称】秘密計算サーバ、証跡管理方法及びプログラム
(51)【国際特許分類】
G06F 21/64 20130101AFI20231226BHJP
G09C 1/00 20060101ALI20231226BHJP
【FI】
G06F21/64
G09C1/00 650Z
(21)【出願番号】P 2021534483
(86)(22)【出願日】2019-07-24
(86)【国際出願番号】 JP2019029029
(87)【国際公開番号】W WO2021014611
(87)【国際公開日】2021-01-28
【審査請求日】2022-01-21
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
(72)【発明者】
【氏名】大原 一真
(72)【発明者】
【氏名】荒木 俊則
(72)【発明者】
【氏名】天田 拓磨
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2009-048283(JP,A)
【文献】国際公開第2018/190285(WO,A1)
【文献】国際公開第2017/065209(WO,A1)
【文献】特開2011-244321(JP,A)
【文献】特開2013-179569(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部と、
所定の証跡保存システムに、前記秘匿データから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる証跡登録部と、を備える
秘密計算サーバ。
【請求項2】
前記所定の証跡保存システムは、ブロックチェーンを用いて、前記第1、第2の証跡データを記録する請求項1の秘密計算サーバ。
【請求項3】
前記所定の証跡保存システムは、前記第1の証跡データとして、
前記秘匿データから計算した前記データxのハッシュ値を保持し、
前記第2の証跡データとして、
前記秘匿データから計算した前記データxと前記計算結果Rとを連結した値のハッシュ値を保持する請求項1又は2の秘密計算サーバ。
【請求項4】
前記所定の証跡保存システムは、前記第1の証跡データとして、
前記秘匿データから計算した前記データxとタイムスタンプ値とを用いて作成した値のハッシュ値を保持し、
前記第2の証跡データとして、
前記秘匿データから計算した前記データxと前記計算結果Rとタイムスタンプ値とを用いて作成した値のハッシュ値を保持する
請求項1又は2の秘密計算サーバ。
【請求項5】
前記計算処理部は、他の秘密計算サーバと共同して、秘密計算を行うマルチパーティ計算を実行可能であり、
前記証跡登録部は、前記証跡保存システムに対し、前記計算処理部にて計算されたシェアの形態で、前記第1の証跡データと、前記第2の証跡データとを復元するためのデータを送信する
請求項1から4いずれか一の秘密計算サーバ。
【請求項6】
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部と、
所定の証跡保存システムに、前記秘匿データから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる証跡登録部と、を備える秘密計算サーバから受信したデータに基づいて、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、をそれぞれ作成する証跡データ作成部と、
前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する証跡データ管理部と、
を備えた証跡保存システム。
【請求項7】
前記証跡データ管理部が、ブロックチェーンにて構成されている請求項6の証跡保存システム。
【請求項8】
前記証跡データ作成部は、
前記第1の証跡データとして、前記データxのハッシュ値を計算し、
前記第2の証跡データとして、前記データxと前記計算結果Rとを連結した値のハッシュ値を計算する請求項6又は7の証跡保存システム。
【請求項9】
前記証跡データ作成部は、
前記第1の証跡データとして、前記データxとタイムスタンプ値とを用いて作成した値のハッシュ値を計算し、
前記第2の証跡データとして、前記データxと前記計算結果Rとタイムスタンプ値とを用いて作成した値のハッシュ値を計算する、
請求項6又は7の証跡保存システム。
【請求項10】
前記秘密計算サーバは、他の秘密計算サーバと共同して、秘密計算を行うマルチパーティ計算を実行可能であり、
前記証跡データ作成部は、前記秘密計算サーバからそれぞれ、前記マルチパーティ計算で計算されたシェアの形態で、前記第1の証跡データと、前記第2の証跡データとを復元するためのデータを受信し、前記第1の証跡データと、前記第2の証跡データとを復元する
請求項6から9いずれか一の証跡保存システム。
【請求項11】
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備えた秘密計算サーバが、
前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するための前記秘匿データを、所定の証跡保存システムに送信し、
前記所定の証跡保存システムに、前記第1の証跡データと、前記第2の証跡データと、を保持させる
秘密計算の証跡管理方法。
【請求項12】
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備える秘密計算サーバから
前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するための前記秘匿データを受信し、
前記受信したデータに基づいて、前記第1の証跡データと、前記第2の証跡データと、をそれぞれ作成し、
前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する、
秘密計算の証跡管理方法。
【請求項13】
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備えた秘密計算サーバに、
前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するための前記秘匿データを、所定の証跡保存システムに送信する処理を実行させ、
前記所定の証跡保存システムに、前記第1の証跡データと、前記第2の証跡データと、を保持させるプログラム。
【請求項14】
証跡保存システムの制御部として機能するコンピュータに、
クライアントから受け取ったデータxの秘匿データを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備える秘密計算サーバから、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するための前記秘匿データを受信する処理と、
前記受信したデータに基づいて、前記第1の証跡データと、前記第2の証跡データと、をそれぞれ作成する処理と、
前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算サーバ、証跡管理方法及びプログラムに関する。
【背景技術】
【0002】
情報銀行やデータ取引市場などデータ活用ビジネスが活発になっている。この種のデータ活用ビジネスにおいて、データの提供先企業のデータ利用に対するコントロールする仕組みとして、ブロックチェーン(以下、「BC」とも記す。)技術が挙げられる。
【0003】
また、データそのものに個人情報が含まれることから、プライバシーの保護も要請される。こうしたデータそのものを秘匿しつつ処理を行って出力を得る技術として、マルチパーティ計算(以下、「MPC」とも記す。)技術が知られている。特許文献1に、個人情報を秘匿したままデータ処理を行うことができるという秘密計算システムが開示されている。
【0004】
特許文献2に、ブロックチェーンに登録された証跡を以て、サーバなどの第1の端末装置からクライアントなどの第2の端末装置に対して提供されるデータの信頼性を担保することができるという電子証明システムが開示されている。具体的には、特許文献1の第1の端末装置は、第1の端末装置に関する情報とデータとを証跡としてブロックチェーンに登録する証跡登録手段を備える。また、この第1の端末装置は、第2の端末装置に対して証跡を送信する証跡提供手段と、を備える。そして、第2の端末装置は、証跡提供手段から提供された証跡がブロックチェーンに登録されている場合に、データが信頼できるものであるという判定を行う。
【0005】
非特許文献1には、上記MPCとBCとを組み合わせることで、データを非公開に保ちながら、さまざまな関係者が共同でデータの計算等をなしうるようにした分散型計算プラットフォームが開示されている。
【0006】
非特許文献2には、上記MPCとBCとを組み合わせることで、MPCにおいてパーティ間の公平性(Fairness)を確保するための構成が開示されている。
【先行技術文献】
【特許文献】
【0007】
【文献】国際公開第2015/114947号
【文献】特開2018-182487号公報
【0008】
【文献】Guy Zyskindら、“Enigma: Decentralized Computation Platform with Guaranteed Privacy”、[online]、[令和1年6月4日検索]、インターネット〈URL:https://arxiv.org/pdf/1506.03471.pdf〉
【文献】Arka Rai Choudhuriら、“Fairness in an Unfair World: Fair Multiparty Computation from public Bulletin Boards”、[online]、[令和1年6月4日検索]、インターネット〈URL:https://eprint.iacr.org/2017/1091.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【0009】
以下の分析は、本発明によって与えられたものである。特許文献1のような構成を用いることで、データを秘匿しつつ、秘密計算システムにて計算し、データ利用側である利用者端末に計算結果だけを渡すことができる。しかしながら、特許文献1のようなデータに含まれる個人情報を秘匿したまま復元することなく様々なデータ処理を行う構成では、データ提供側である登録者端末において、何らかの意図をもって、不適切なデータが登録される可能性がある。例えば、秘密計算にて計算される統計結果が自身に有利な内容となるように、データの修正が行われた場合、秘密計算の性質上、これをリアルタイムに検出することは困難であり、事後的に正当性(correctness)を検証する仕組みが必要となる。
【0010】
特許文献2の方法では、第1の端末装置に関する情報とデータの組である証跡データをブロックチェーンに登録する方法を用いている。しかしながら、秘密計算システムが取り扱う情報は、秘匿の対象となるべきものであり、特許文献2の方法を採ることはできない。
【0011】
本発明は、秘密計算の対象となるデータの正当性(correctness)の検証の容易化に貢献できる秘密計算サーバ、証跡管理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
第1の視点によれば、クライアントから受け取ったデータxを用いて秘密計算を行い、計算結果Rを計算する計算処理部と、所定の証跡保存システムに、前記データxから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる証跡登録部と、を備える秘密計算サーバが提供される。
【0013】
第2の視点によれば、クライアントから受け取ったデータxを用いて秘密計算を行い、計算結果Rを計算する計算処理部と、所定の証跡保存システムに、前記データxから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる証跡登録部と、を備える秘密計算サーバから受信したデータに基づいて、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、をそれぞれ作成する証跡データ作成部と、前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する証跡データ管理部と、を備えた証跡保存システムが提供される。
【0014】
第3の視点によれば、クライアントから受け取ったデータxを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備えた秘密計算サーバが、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するためのデータを、所定の証跡保存システムに送信し、前記所定の証跡保存システムに、前記第1の証跡データと、前記第2の証跡データと、を保持させる秘密計算の証跡管理方法が提供される。本方法は、前記所定の証跡保存システムに、前記第1、第2の証跡データを保持させる秘密計算サーバという、特定の機械に結びつけられている。
【0015】
第4の視点によれば、クライアントから受け取ったデータxを用いて秘密計算を行い、計算結果Rを計算する計算処理部を備える秘密計算サーバから、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を計算するためのデータを受信し、前記受信したデータに基づいて、前記第1の証跡データと、前記第2の証跡データと、をそれぞれ作成し、前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する秘密計算の証跡管理方法が提供される。本方法は、前記第1、第2の証跡データをそれぞれ作成し、所定の監査ノードに提供する証跡保存システムという、特定の機械に結びつけられている。
【0016】
第5の視点によれば、上記した秘密計算サーバ又は証跡保存システムの機能を実現するためのプログラムが提供される。プログラムは、コンピュータ装置に入力装置又は外部から通信インターフェースを介して入力され、記憶装置に記憶されて、プロセッサを所定のステップないし処理に従って駆動させる。また、このプログラムは、必要に応じ中間状態を含めその処理結果を段階毎に表示装置を介して表示することができ、あるいは通信インターフェースを介して、外部と交信することができる。そのためのコンピュータ装置は、一例として、典型的には互いにバスによって接続可能なプロセッサ、記憶装置、入力装置、通信インターフェース、及び必要に応じ表示装置を備える。
【発明の効果】
【0017】
本発明によれば、秘密計算の対象となるデータの正当性(correctness)の検証の容易化に貢献できる。
【図面の簡単な説明】
【0018】
【
図2】本発明の一実施形態の動作(シェア配布)を説明するための図である。
【
図3】本発明の一実施形態の動作(計算結果の送信)を説明するための図である。
【
図4】本発明の一実施形態の動作(シェアの送信)を説明するための図である。
【
図5】本発明の一実施形態の動作(監査)を説明するための図である。
【
図6】本発明の第1の実施形態の構成を示す図である。
【
図7】本発明の第1の実施形態の詳細構成を表した機能ブロック図である。
【
図8】本発明の第1の実施形態の動作を表したシーケンス図である。
【
図9】本発明の第1の実施形態の動作を表したシーケンス図である。
【
図10】本発明の第2の実施形態の構成を示す図である。
【
図11】本発明の第2の実施形態の動作を表したシーケンス図である。
【
図12】本発明の第2の実施形態の動作を表したシーケンス図である。
【
図13】本発明の秘密計算サーバ又は証跡保存システムを構成するコンピュータの構成を示す図である。
【発明を実施するための形態】
【0019】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。プログラムはコンピュータ装置を介して実行され、コンピュータ装置は、例えば、プロセッサ、記憶装置、入力装置、通信インターフェース、及び必要に応じ表示装置を備える。また、このコンピュータ装置は、通信インターフェースを介して装置内又は外部の機器(コンピュータを含む)と、有線、無線を問わず、通信可能に構成される。また、図中の各ブロックの入出力の接続点には、ポート乃至インターフェースがあるが図示省略する。また、以下の説明において、「A及び/又はB」は、A及びBの少なくともいずれかという意味で用いる。
【0020】
本発明は、その一実施形態において、
図1に示すように、複数台の秘密計算サーバ10と、証跡保存システム20と、含む構成にて実現することができる。より具体的には、秘密計算サーバ10は、計算処理部11と、証跡登録部12と、を備える。計算処理部11は、クライアントから受け取ったデータxを用いて秘密計算を行い、計算結果Rを計算する。例えば、秘密計算方式として、秘密分散法を用いる場合、秘密計算サーバ10は、クライアント30から受け取ったデータxのシェアに基づいて、他の秘密計算サーバ10と共同して、秘密計算を行い、計算結果Rのシェアを計算する。そして、証跡登録部12は、所定の証跡保存システム20に、前記データxから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる。例えば、秘密計算方式として、秘密分散法を用いる場合、証跡登録部12は、前記データxのハッシュ値のシェアと、前記データxと計算結果Rとを連結した値のシェアと、をそれぞれ証跡保存システム20に送信する。これにより、秘密計算サーバ10は、前記所定の証跡保存システムに、前記データxから計算した前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、を保持させる。
【0021】
一方、証跡保存システム20は、証跡データ作成部21と、証跡データ管理部22と、を備える。証跡データ作成部21は、前記した秘密計算サーバ10から受信したデータに基づいて、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、をそれぞれ作成する。例えば、秘密計算サーバ10が、前記データxのハッシュ値のシェアの組と、前記データxと計算結果Rと連結した値のハッシュ値のシェアの組と、を送信する。この場合、証跡データ作成部21は、これらの受信データに基づいて、前記データxの同一性を証明するための第1の証跡データと、前記データxと計算結果Rの関係性を証明する第2の証跡データと、をそれぞれ作成する。そして、証跡データ管理部22は、前記第1、第2の証跡データをそれぞれ書き換え不可能に管理し、所定の監査ノードに提供する。
【0022】
例えば、秘密計算ベースの三者秘密計算の場合、上記第1、第2の証跡データの作成は以下の通りとなる。
図2に示すように、クライアント30が、データxのシェアx
1、x
2、x
3を作成し、秘密計算サーバ10に計算を依頼する。前記依頼を受けた秘密計算サーバ10は、
図3に示すように、クライアント30に計算結果R
1、R
2、R
3を送信する。クライアント30は、計算結果R
1、R
2、R
3から計算結果Rを復元する。このようにして、クライアント30はデータxを秘匿したまま計算結果Rを得ることができる。
【0023】
本実施形態の秘密計算サーバ10は、上記動作に加えて、上記データxのハッシュ値を計算する。さらに、秘密計算サーバ10は、
図4に示すように、前記データxのハッシュ値のシェア(例えば、a
1、a
2、a
3とする)と、データxと計算結果Rを連結した値のハッシュ値h(x||R)のシェアb
1、b
2、b
3を計算し、証跡保存システム20に送信する。証跡保存システム20は、上記データxのハッシュ値h(x)のシェアa
1、a
2、a
3からデータxのハッシュ値h(x)を復元する。証跡保存システム20は、さらに、ハッシュ値h(x||R)のシェアb
1、b
2、b
3からデータxのハッシュ値h(x||R)を復元する。なお、h(x)は、xを所定のハッシュ関数に入力して得られた値を表し、||は、データの連結を表すものとする。
【0024】
その後、所定の監査ノードよりデータxとRに関し、監査要求を受けた場合、証跡保存システム20は、
図5に示すように、監査ノードに、ハッシュ値h(x)と、ハッシュ値h(x||R)とを送信する。監査ノードは、クライアント30に対して、ハッシュ値h(x)と、ハッシュ値h(x||R)との送信を要求し、両者が一致するか否かによりクライアント30によるデータ差し替えの有無を判断することができる。例えば、ハッシュ値h(x)が一致しない場合、クライアント30によるハッシュ値h(x)の差し替えを検出できる。同様に、ハッシュ値h(x||R)が一致しない場合、クライアント30による計算結果Rの差し替えを検出できる。
【0025】
以上のように、本実施形態によれば、秘密計算の対象となるデータの正当性(correctness)を検出する仕組みが構築され、プライバシーを保護しつつ所望の計算結果を得る秘密計算システムの信頼性を向上させることが可能となる。なお、上記した例では、秘密計算ベースの三者秘密計算に本発明を適用したが、第1、第2の証跡データの作成の方法は採用する秘密計算方式に応じて変更することができる。例えば、n者秘密計算の場合、n台の秘密計算サーバは、a1,...,anのn個のシェアを送信し、証跡保存システムが、これらのシェアから第1、第2の証跡データを作成することになる。同様に、秘密計算方式として準同型暗号を用いる場合、データxとその計算結果Rに対し、Enc(h(x))、Enc(h(x||R))を、第1、第2の証跡データとすることができる。なお、Enc(x)は準同型暗号方式による暗号文を示す。
【0026】
[第1の実施形態]
続いて、複数のクライアントからデータを受け取って秘密計算を行う形態に本発明を適用した第1の実施形態について図面を参照して詳細に説明する。
図6は、本発明の第1の実施形態の構成を示す図である。
図6を参照すると、3台のMPCサーバ100によって構成されたMPCサーバ群と、証跡保存システム200と、クライアント300a、クライアント300bとが接続された構成が示されている。
【0027】
以下の説明では、クライアント300aは、秘密対象のデータxを管理する情報銀行A(クライアントA)の機器であるものとする。また、クライアント300bは、秘密対象のデータyを管理する情報銀行B(クライアントB)の機器であるものとする。3台のMPCサーバ100は、クライアント300a、300bからそれぞれデータxのシェアと、データyのシェアを受け取り、協働して計算結果Rを計算する。3台のMPCサーバ100は、計算結果Rのシェアをクライアント300a又はクライアント300bに返す動作を行う。このとき、クライアント300a又はクライアント300bは、計算結果Rのシェアから計算結果Rを復元し、利用することができる。以下の実施形態では、証跡保存システム200を利用して、クライアント300a又はクライアント300bによるデータの差し替え等の検出を行う。
【0028】
図7は、本発明の第1の実施形態の詳細構成を表した機能ブロック図である。
図7を参照すると、クライアント300a、300bは、それぞれシェア生成部301と、復元部302と、通信インターフェース(通信IF)303とを備えている。
【0029】
シェア生成部301は、データ保有者から預かったデータ(データx又はデータy)から、秘密分散したシェア(機密データ)を生成し、通信IF303を介してMPCサーバ100に送信する。この秘密分散の方法としては、入力された平文をn個に分割した分散値をn個の計算主体(MPCサーバ100)に分散しておき、任意のk個の分散値が揃えば平文を復元できる(k,n)しきい値法を用いることができる。もちろん、上記した特許文献及び非特許文献記載の各種の方法を用いることもできる。
【0030】
復元部302は、通信IF303を介して、MPCサーバ100から受け取った計算結果Rのシェアから計算結果Rを復元する。
【0031】
MPCサーバ100は、それぞれ証跡登録部101と、計算処理部102と、通信IF103とを備えている。計算処理部102は、通信IF103を介して、クライアント300a、300bから受け取ったシェア(機密データ)を用いて、計算結果Rのシェアを求め、クライアント300a又はクライアント300bに返す。
【0032】
証跡登録部101は、証跡保存システム200に対し、上記データxのハッシュ値のシェア(ha1、ha2、ha3)と、上記データyのハッシュ値のシェア(hb1、hb2、hb3)と、ハッシュ値h(x||R)、h(y||R)のシェアを送信する。ここで、ハッシュ値h(x||R)、h(y||R)のシェアをそれぞれ(hc1、hc2、hc3)、(hd1、hd2、hd3)とする。
【0033】
証跡保存システム200は、証跡データ管理部201と、証跡データ作成部202と、通信IF203とを備え、ブロックチェーン204にデータを記録可能となっている。
【0034】
証跡データ作成部202は、通信IF203を介して、MPCサーバ100から受け取ったシェアから証跡データを作成する。具体的には、証跡データ作成部202は、データxのハッシュ値のシェアから、データxのハッシュ値h(x)を計算し、データxの証跡データとする。ここで、h(x)は、ハッシュ関数にデータxを入力して得られた値であり、h(x)からxを演算することは困難であるという性質を満たしているものとする。h(x)は、そのシェアha1、ha2、ha3の演算、例えば、ha1+ha2+ha3から計算できるものとする。
【0035】
同様に、証跡データ作成部202は、データyのハッシュ値のシェアhb1、hb2、hb3から、データyのハッシュ値h(y)を計算し、データyの証跡データとする。さらに、証跡データ作成部202は、ハッシュ値h(x||R)のシェア(hc1、hc2、hc3)からハッシュ値h(x||R)を計算する。同様に、証跡データ作成部202は、ハッシュ値h(y||R)のシェア(hd1、hd2、hd3)からハッシュ値h(y||R)を計算する。なお、以下の説明においても、記号a||bは、データaとデータbの連結を示す。
【0036】
証跡データ管理部201は、ブロックチェーン204に、前記ハッシュ値h(x)、h(y)、h(x||R)、h(y||R)を記録する。
【0037】
ブロックチェーン204は、データを格納したブロックを、鎖(チェーン)のように連結していくことによりデータを保管する分散型台帳である。本実施形態では、このブロックに、上述のh(x)、h(y)、h(x||R)、h(y||R)を記録し、任意のh(x)、h(y)、h(x||R)、h(y||R)のセットを取り出し可能になっているものとする。
【0038】
続いて、本実施形態の動作について図面を参照して詳細に説明する。
図8は、本発明の第1の実施形態の動作を表したシーケンス図である。以下の説明では、事前にデータ保持者Aがクライアント300aに対してデータxとともに、署名sig(x)を送信し、データ保持者Aとクライアント300a間において改ざん等が行われていないことの確認がなされているものとする。同様に、データyについても、データ保持者Bがクライアント300bに対してデータyとともに、署名sig(y)を送信し、データ保持者Bとクライアント300b間において改ざん等が行われていないことの確認がなされているものとする。
【0039】
図8を参照すると、クライアント300aは、データxからシェアx
1、x
2、x
3を生成し、MPCサーバ100に送信し、データyと組み合わせた秘密計算を依頼する(ステップS001)。このデータxとデータyとを用いた秘密計算の例としては、異なる店舗を訪れた同一の人物の購買データを突合して、何らかの統計情報を計算する例などが挙げられる。
【0040】
クライアント300bは、データyからシェアy1、y2、y3を生成し、MPCサーバ100に送信する(ステップS002)。
【0041】
MPCサーバ100のうちの1台は、シェアx1、シェアy1より計算結果R1を計算する。ほかの2台も同様に、シェアx2、シェアy2、シェアx3、シェアy3より計算結果R2、R3を計算する(ステップS003)。さらに、3台のMPCサーバ100は、計算結果R1、R2、R3をクライアントAに送信する(ステップS004)。
【0042】
クライアントAは、計算結果R1、R2、R3から計算結果Rを復元し、データ保持者500aに提供する(ステップS005)。ここまでの処理は、MPCサーバを用いた秘密計算と同様である。
【0043】
次に、MPCサーバ100は、データxのハッシュ値h(x)のシェア(ha1、ha2、ha3とする)と、データyのハッシュ値h(y)のシェア(hb1、hb2、hb3とする)とを計算する。さらに、MPCサーバ100は、ハッシュ値h(x||R)、h(y||R)のシェア(hc1、hc2、hc3)、(hd1、hd2、hd3)を計算し、証跡保存システム200に送信する(ステップS006)。
【0044】
証跡保存システム200は、シェアha1、ha2、ha3及びシェアhb1、hb2、hb3からハッシュ値h(x)、h(y)を計算する。さらに、証跡保存システム200は、ハッシュ値h(x||R)のシェア(hc1、hc2、hc3)からハッシュ値h(x||R)を計算する。さらに、証跡保存システム200は、ハッシュ値h(y||R)のシェア(hd1、hd2、hd3)からハッシュ値h(y||R)を計算する(ステップS007)。最後に、証跡保存システム200は、ブロックチェーン204にハッシュ値h(x)、h(y)、h(x||R)、h(y||R)を記録する(ステップS008)。
【0045】
続いて、上記証跡保存システム200に登録したデータを用いた監査プロセスについて説明する。以下の説明では、データ保持者500a、500b又は第三者が監査人(監査ノード)に対し、計算結果Rの正当性(correctness)についての監査要求を行ったものとして説明する。
図9は、本発明の第1の実施形態の動作(監査プロセス)を表したシーケンス図である。
【0046】
図9を参照すると、まず、監査ノードは、証跡保存システム200に対して証跡データの送信を要求する(ステップS101)。ここで、要求する証跡データを特定する方法としては、計算結果Rを示して証跡データを特定する方法が考えられる。
【0047】
前記証跡データの送信要求を受けた証跡保存システム200は、ブロックチェーン204からハッシュ値h(x)、h(y)、h(x||R)、h(y||R)を取り出して、監査ノードに送信する(ステップS102)。
【0048】
次に、監査ノードは、データ保持者500aに対し、データxのハッシュ値h(x)及びデータxに計算結果Rを連結した値x||Rのハッシュ値h(x||R)の送信を要求する(ステップS103)。
【0049】
前記要求を受けたデータ保持者500aは、データxのハッシュ値h(x)及びハッシュ値h(x||R)を計算し、監査ノードに送信する(ステップS104)。ここで、データ保持者500aが作成したh(x)、h(x||R)を、それぞれh0(x)、h0(x||R)と記す。また、h(x)は、前述のとおり、h(x)からxを演算することは困難であるという性質を満たしているので、監査ノードにxが洩れることはない。
【0050】
次に、監査ノードは、データ保持者500bに対し、データyのハッシュ値h(y)及びデータyに計算結果Rを連結した値y||Rのハッシュ値h(y||R)の送信を要求する(ステップS105)。
【0051】
前記要求を受けたデータ保持者500bは、データyのハッシュ値h(y)及びハッシュ値h(y||R)を計算し、監査ノードに送信する(ステップS106)。ここで、データ保持者500bが作成したh(y)、h(y||R)を、それぞれh0(y)、h0(y||R)と記す。また、h(y)は、前述のとおり、h(y)からyを演算することは困難であるという性質を満たしているので、監査ノードにyが洩れることはない。
【0052】
最後に、監査ノードは、以下の値(1)~(4)が一致するか否かにより、計算結果Rの正当性(correctness)を確認する(ステップS107)。
【0053】
(1)h(x)=h0(x)
(2)h(y)=h0(y)
(3)h(x||R)=h0(x||R)
(4)h(y||R)=h0(y||R)
【0054】
上記(1)h(x)=h0(x)が成立しない場合、データxがクライアント300aにおいて差し替えられたことになる。その理由は、h(x)は、証跡保存システム200が、MPCサーバ100から受け取ったシェア(例えば、ha1、ha2、ha3)から計算され、ブロックチェーン204に記録されており、同一性が保証されているからである。また、このとき、(3)h(x||R)=h0(x||R)も成立しないことになる。
【0055】
上記(2)h(y)=h0(y)が成立しない場合、データyがクライアント300bにおいて差し替えられたことになる。その理由は、h(y)は、証跡保存システム200が、MPCサーバ100から受け取ったシェア(例えば、hb1、hb2、hb3)から計算され、ブロックチェーン204に記録されており、同一性が保証されているからである。また、このとき、(4)h(y||R)=h0(y||R)も成立しないことになる。
【0056】
さらに、(1)h(x)=h0(x)が成立するが、(3)h(x||R)=h0(x||R)が成立しない場合、クライアント300aが計算結果Rを差し替えたことを検出できる。
【0057】
同様に、(2)h(y)=h0(y)が成立するが、(4)h(y||R)=h0(y||R)が成立しない場合、クライアント300bが計算結果Rを差し替えたことを検出できる。
【0058】
以上のとおり、本実施形態によれば、秘密計算の対象となるデータが複数の保持者から提供されている場合においても、その正当性(correctness)をそれぞれ確認することが可能となる。なお、
図9のステップS101~S102、ステップS103~S104、ステップS105~S106の順序は、必ずしも
図9のとおりでなくてもよく、適宜入れ替えることができる。
【0059】
[第2の実施形態]
続いて、第1の実施形態との比較において、証跡データの存在と改ざんがなされていないことを証明できるようにした第2の実施形態について図面を参照して詳細に説明する。
図10は、本発明の第2の実施形態の構成を示す図である。
図6、
図7に示した第1の実施形態との差異は、タイムスタンプサーバ(TSサーバ)400が追加され、証跡データの作成に、タイムスタンプを用いるようにした点である。その他の構成は第1の実施形態と同様であるので、以下、その相違点を中心に説明する。
【0060】
タイムスタンプサーバ(TSサーバ)400は、RFC 3161に代表される方式で、クライアントからの要求に応じてハッシュ値にタイムスタンプを付与するサーバである。
【0061】
第2の実施形態の証跡保存システム200aの証跡データ作成部202aは、通信IF203を介して、MPCサーバ100から受け取ったシェアから証跡データを作成する際に、TSサーバ400から受け取ったタイムスタンプTを用いて証跡データを作成する。具体的には、証跡データ作成部202aは、TSサーバ400からハッシュ値h(x)に対するタイムスタンプTを入手し、さらに、第2のハッシュ関数h’(x)を用いて、ハッシュ値h’(h(x)||T)を計算し、データxの証跡データとする。
【0062】
同様に、証跡データ作成部202aは、ハッシュ値h(y)に対するタイムスタンプTを入手し、さらに、第2のハッシュ関数h’(y)を用いて、ハッシュ値h’(h(y)||T)を計算し、データyの証跡データとする。
【0063】
さらに、証跡データ作成部202aは、データxと計算結果Rの対応関係を示す証跡データとして、上記ハッシュ値h’(h(x)||T)に計算結果Rを連結した値を、第3のハッシュ関数h’’(x)に入力して、ハッシュ値h’’(h’(h(x)||T)||R)を計算する。同様に、証跡データ作成部202aは、データyと計算結果Rの対応関係を示す証跡データとして、上記ハッシュ値h’(h(y)||T)に計算結果Rを連結した値を、第3のハッシュ関数h’’(x)に入力して、ハッシュ値h’’(h’(h(y)||T)||R)を計算する。
【0064】
証跡データ管理部201aは、ハッシュ値h’(h(x)||T)、h’(h(y)||T)、h’’(h’(h(x)||T)||R)、h’’(h’(h(y)||T)||R)をブロックチェーン204に記録する。
【0065】
続いて、本実施形態の動作について図面を参照して詳細に説明する。
図11は、本発明の第2の実施形態の動作を表したシーケンス図である。ステップS201~S206までの動作は第1の実施形態で説明した
図8のステップS001~S006と同様であるので、説明を省略する。
【0066】
証跡保存システム200aは、シェアha1、ha2、ha3、シェアhb1、hb2、hb3及びシェアR1、R2、R3からハッシュ値h(x)、ハッシュ値h(y)、計算結果Rを復元した後、TSサーバ400からタイムスタンプTを取得する(ステップS207)。
【0067】
次に、証跡保存システム200aは、ハッシュ値h’(h(x)||T)、h’(h(y)||T)、h’’(h’(h(x)||T)||R)、h’’(h’(h(y)||T)||R)を計算する(ステップS208)。
【0068】
最後に、証跡保存システム200aは、ブロックチェーン204に、ハッシュ値h’(h(x)||T)、h’(h(y)||T)、h’’(h’(h(x)||T)||R)、h’’(h’(h(y)||T)||R)を記録する(ステップS209)。
【0069】
続いて、上記証跡保存システム200aに登録したデータを用いた監査プロセスについて説明する。以下の説明では、データ保持者500a、500b又は第三者が監査人(監査ノード)に対し、計算結果Rの正当性(correctness)についての監査要求を行ったものとして説明する。
図12は、本発明の第2の実施形態の動作(監査プロセス)を表したシーケンス図である。
【0070】
図12を参照すると、まず、監査ノードは、証跡保存システム200aに対して証跡データの送信を要求する(ステップS301)。ここで、要求する証跡データを特定する方法としては、計算結果Rを示して証跡データを特定する方法が考えられる。
【0071】
前記証跡データの送信要求を受けた証跡保存システム200aは、ブロックチェーン204からタイムスタンプTと、ハッシュ値h’(h(x)||T)、h’(h(y)||T)、h’’(h’(h(x)||T)||R)、h’’(h’(h(y)||T)||R)を取り出して、監査ノードに送信する(ステップS302)。
【0072】
次に、監査ノードは、データ保持者500aに対し、タイムスタンプTを送り、ハッシュ値h’(h(x)||T)と、h’’(h’(h(x)||T)||R)の送信を要求する(ステップS303)。
【0073】
前記要求を受けたデータ保持者500aは、タイムスタンプTとハッシュ関数h(x)、h’(x)、h’’(x)を用いて、ハッシュ値h0’(h0(x)||T)と、h0’’(h0’(h0(x)||T)||R)を計算し、監査ノードに送信する(ステップS304)。以下、データ保持者500a及びデータ保持者500bが計算するハッシュ値h(x)に添え字0を付し、h0(x)と記す。また、h0’(h0(x)||T)は、データxのハッシュ値h0(x)にTを連結した値のh0’(x)によるハッシュ値である。また、h0’’(h0’(h0(x)||T)||R)は、前記h0’(h0(x)||T)に計算結果Rを連結した値のh0’’(x)によるハッシュ値である。
【0074】
次に、監査ノードは、データ保持者500bに対し、タイムスタンプTを送り、ハッシュ値h’(h(y)||T)と、h’’(h’(h(y)||T)||R)の送信を要求する(ステップS305)。
【0075】
前記要求を受けたデータ保持者500bは、タイムスタンプTとハッシュ関数h(x)、h’(x)、h’’(x)を用いて、ハッシュ値h0’(h0(y)||T)と、h0’’(h0’(h0(y)||T)||R)を計算し、監査ノードに送信する(ステップS306)。
【0076】
最後に、監査ノードは、以下の値(1)~(4)が一致するか否かにより、計算結果Rの正当性(correctness)を確認する(ステップS307)。
【0077】
(1)h’(h(x)||T)=h0’(h0(x)||T)
(2)h’(h(y)||T)=h0’(h0(y)||T)
(3)h’’(h’(h(x)||T)||R)=h0’’(h0’(h0(x)||T)||R)
(4)h’’(h’(h(y)||T)||R)=h0’’(h0’(h0(y)||T)||R)
【0078】
上記(1)h’(h(x)||T)=h0’(h0(x)||T)が成立しない場合、データxがクライアント300aにおいて差し替えられたことになる。その理由は、各ハッシュ値は、証跡保存システム200aがMPCサーバ100から受け取ったシェア(例えば、a1、a2、a3)から計算され、ブロックチェーン204に記録されており、同一性が保証されているからである。また、このとき、(3)h’’(h’(h(x)||T)||R)=h0’’(h0’(h0(x)||T)||R)も成立しないことになる。
【0079】
上記(2)h’(h(y)||T)=h0’(h0(y)||T)が成立しない場合、データyがクライアント300bにおいて差し替えられたことになる。その理由は、各ハッシュ値は、証跡保存システム200aがMPCサーバ100から受け取ったシェア(例えば、b1、b2、b3)から計算され、ブロックチェーン204に記録されており、同一性が保証されているからである。また、このとき、(4)h’’(h’(h(y)||T)||R)=h0’’(h0’(h0(y)||T)||R)も成立しないことになる。
【0080】
さらに、(1)h’(h(x)||T)=h0’(h0(x)||T)が成立するが、(3)h’’(h’(h(x)||T)||R)=h0’’(h0’(h0(x)||T)||R)が成立しない場合、クライアント300aが計算結果Rを差し替えたことを検出できる。
【0081】
同様に、(2)h’(h(y)||T)=h0’(h0(y)||T)が成立するが、(4)h’’(h’(h(y)||T)||R)=h0’’(h0’(h0(y)||T)||R)が成立しない場合、クライアント300bが計算結果Rを差し替えたことを検出できる。
【0082】
以上のとおり、本実施形態によれば、第1の実施形態と同様の効果に加えて、ある時刻Tでの計算と異なる時刻T’での計算とで、同一のデータが使用されているか否かを秘匿することが可能となる。その理由は、時刻Tをハッシュ値に含めることで、異なる時刻で同一のデータを用いたとしても異なるハッシュ値が生成される構成を採用したことにある。
【0083】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【0084】
例えば、上記した実施形態では、ハッシュ関数を用いて証跡データを作成するものとして説明したが、xから計算でき、かつ、その証跡データからxを演算することが難しいというその他の一方向性関数を用いることも可能である。また、ハッシュ関数h(x)、h’(x)、h’’(x)は同一のハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。
【0085】
例えば、上記した実施形態では、データ保持者500aがデータxを提供し、データ保持者500bがデータyを提供する例を挙げて説明したが、本発明の適用分野はこれに限られない。例えば、第三のデータ保持者が情報銀行に学習モデルM等を登録し、MPCサーバ100に学習モデルMを用いてデータの秘密計算を依頼するケースにおいても問題なく適用できる。この場合においても、データ保持者のすべてが正しいデータを提供したかどうかと学習モデルMが提供されているか否かを検証することが可能となる。
【0086】
また、上記した実施形態では、証跡保存システム200、200aにて、データx、データyのハッシュ値及び計算結果Rを復元し、証跡データを生成するものとして説明したが、データx、データyのハッシュ値及び計算結果Rを復元し、証跡データを作成する中間ノードを設ける構成も採用可能である。
【0087】
また、上記した実施形態では、証跡データの記録先としてブロックチェーン204を用いるものとして説明したが、データを書き換え不可能に記録できるその他の記録装置を用いることもできる。
【0088】
また、上記した実施形態では、3台のMPCサーバでマルチパーティ計算を行う構成に本発明を適用した例を用いたが、本発明を適用可能な秘密計算方式は、これに限られない。例えば、本発明は、n台のMPCサーバでマルチパーティ計算を行う構成にも適用できる。この場合、n台の秘密計算サーバは、a1,...,anのn個のシェアを送信し、証跡保存システムが、これらのシェアから第1、第2の証跡データを作成することになる。同様に、秘密計算方式として準同型暗号を用いる場合、データx、yとその計算結果Rに対し、暗号文Enc(h(x))、Enc(h(y))、Enc(h(x||R))、Enc(h(y||R))を、第1、第2の証跡データとすることができる。
【0089】
また、上記した実施形態で示した第1、第2の証跡データの計算方法は、あくまでその一例を示したものであり、その作成方法としては種々の方法を採ることができる。例えば、h(x)、h(x||R)の代わりに、任意のストリングSを連結したh(x||S)、h(x||R||S)を用いることも可能である。同様に、h(x)、h(x||R)の代わりに、任意の置換関数p(x)を用いてh(p(x))、h(p(x||R))を用いることも可能である。同様に、暗号文Enc(h(x))、Enc(h(y))、Enc(h(x||R))、Enc(h(y||R))について、これらの置換データを、第1、第2の証跡データとすることができる。
【0090】
また、上記した第1、第2の実施形態に示した手順は、MPCサーバ100又は証跡保存システム200、200aとして機能するコンピュータ(
図13の9000)に、これらの装置としての機能を実現させるプログラムにより実現可能である。このようなコンピュータは、
図13のCPU(Central Processing Unit)9010、通信インターフェース9020、メモリ9030、補助記憶装置9040を備える構成に例示される。すなわち、
図13のCPU9010にて、シェア送信プログラムや証跡データ作成プログラムを実行し、その補助記憶装置9040等に保持された各計算パラメーターの更新処理を実施させればよい。
【0091】
即ち、上記した第1、第2の実施形態に示したMPCサーバ100又は証跡保存システム200、200aの各部(処理手段、機能)は、これらの装置に搭載されたプロセッサに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することができる。
【0092】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による秘密計算サーバ参照)
[第2の形態]
上記した証跡保存システムは、ブロックチェーンを用いて、前記第1、第2の証跡データを記録する構成を採ることができる。
[第3の形態]
上記した証跡保存システムは、前記第1の証跡データとして、前記データxのハッシュ値を保持し、
前記第2の証跡データとして、前記データxと前記計算結果Rとを連結した値のハッシュ値を保持する構成を採ることができる。
[第4の形態]
上記した証跡保存システムは、前記第1の証跡データとして、前記データxとタイムスタンプ値とを用いて作成した値のハッシュ値を保持し、
前記第2の証跡データとして、前記データxと前記計算結果Rとタイムスタンプ値とを用いて作成した値のハッシュ値を保持する構成を採ることができる。
[第5の形態]
上記した秘密計算サーバの計算処理部は、他の秘密計算サーバと共同して、秘密計算を行うマルチパーティ計算を実行可能であり、
上記した秘密計算サーバの証跡登録部は、前記証跡保存システムに対し、前記計算処理部にて計算されたシェアの形態で、前記第1の証跡データと、前記第2の証跡データとを復元するためのデータを送信する形態を採ることができる。
[第6の形態]
(上記第2の視点による証跡保存システム参照)
[第7の形態]
上記した証跡保存システムの証跡データ管理部は、ブロックチェーンにて構成されていることが好ましい。
[第8の形態]
上記した証跡保存システムの証跡データ作成部は、
前記第1の証跡データとして、前記データxのハッシュ値を計算し、
前記第2の証跡データとして、前記データxと前記計算結果Rとを連結した値のハッシュ値を計算する構成を採ることができる。
[第9の形態]
上記した証跡保存システムの前記証跡データ作成部は、
前記第1の証跡データとして、前記データxとタイムスタンプ値とを用いて作成した値のハッシュ値を計算し、
前記第2の証跡データとして、前記データxと前記計算結果Rとタイムスタンプ値とを用いて作成した値のハッシュ値を計算する構成を採ることができる。
[第10の形態]
上記した秘密計算サーバは、他の秘密計算サーバと共同して、秘密計算を行うマルチパーティ計算を実行可能であり、
上記した証跡保存システムの証跡データ作成部は、前記秘密計算サーバからそれぞれ、前記マルチパーティ計算で計算されたシェアの形態で、前記第1の証跡データと、前記第2の証跡データとを復元するためのデータを受信し、前記第1の証跡データと、前記第2の証跡データとを復元する構成を採ることができる。
[第11の形態]
(上記第3、4の視点による秘密計算の証跡管理方法参照)
[第12の形態]
(上記第5の視点によるプログラム参照)
なお、上記第11~第12の形態は、第1、第6の形態と同様に、第2~第5、第7~第10の形態に展開することが可能である。
【0093】
なお、上記の特許文献および非特許文献の各開示は、本書に引用をもって繰り込み記載されているものとし、必要に応じて本発明の基礎ないし一部として用いることが出来るものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【0094】
10 秘密計算サーバ
11、102 計算処理部
12、101 証跡登録部
20、200、200a 証跡保存システム
21、202、202a 証跡データ作成部
22、201、201a 証跡データ管理部
30、300a、300b クライアント
100 MPCサーバ
400 TSサーバ
500a、500b データ保持者
301 シェア生成部
302 復元部
103、203、303 通信インターフェース(通信IF)
204 ブロックチェーン
9000 コンピュータ
9010 CPU
9020 通信インターフェース
9030 メモリ
9040 補助記憶装置