(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024165244
(43)【公開日】2024-11-28
(54)【発明の名称】プライバシー保護型評判システム、評判スコア計算装置、評判スコア計算方法及びプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20241121BHJP
G06F 21/62 20130101ALI20241121BHJP
G06Q 50/10 20120101ALI20241121BHJP
【FI】
G09C1/00 650Z
G06F21/62 345
G06Q50/10
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023081270
(22)【出願日】2023-05-17
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】パラカーン キッティポップ
(72)【発明者】
【氏名】ブラカモンテ バネッサ
(72)【発明者】
【氏名】磯原 隆将
【テーマコード(参考)】
5L049
5L050
【Fターム(参考)】
5L049CC11
5L050CC11
(57)【要約】
【課題】悪意のあるユーザによるクエリ攻撃1(類似のユーザ集合へのクエリ)及びクエリ攻撃2(悪意のある問合せ者と一人を除く全員のユーザとの共謀)に対抗し得るプライバシー保護型評判システム、評判スコア計算装置、評判スコア計算方法及びプログラムを提供すること。
【解決手段】
問合せ者が評判システムのユーザの集合Sから評価値を求めて評判スコアを集計する際に、集合Sのランダムな部分集合S´からだけ評判スコアが集計されるようにする。このランダムな部分集合S´のメンバーは誰にも知られない。
【選択図】
図1
【特許請求の範囲】
【請求項1】
集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判システムであって、
前記評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信し、かつ、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行う、複数台の計算サーバを備え、
前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定し、
前記評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する、評判システム。
【請求項2】
前記秘密分散技術がABY3秘密分散フレームワークである、請求項1に記載の評判システム。
【請求項3】
前記集計関数として平均関数を用いる、請求項1又は請求項2に記載の評判システム。
【請求項4】
集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判システムにおける評判スコア計算装置であって、
前記評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信し、かつ、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行う、複数台の計算サーバからなり、
前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定し、
前記評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する、評判スコア計算装置。
【請求項5】
前記秘密分散技術がABY3秘密分散フレームワークである、請求項4に記載の評判スコア計算装置。
【請求項6】
前記集計関数として平均関数を用いる、請求項4又は請求項5に記載の評判スコア計算装置。
【請求項7】
集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判スコア計算方法であって、
前記評判スコア計算方法を実行する複数台の計算サーバが、前記計算サーバを備える評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信するステップと、
前記複数台の計算サーバが、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行うステップと、を含み、
前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定するステップをさらに含み、
前記計算サーバを備える評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する、評判スコア計算方法。
【請求項8】
前記秘密分散技術がABY3秘密分散フレームワークである、請求項7に記載の評判スコア計算方法。
【請求項9】
前記集計関数として平均関数を用いる、請求項7又は請求項8に記載の評判スコア計算方法。
【請求項10】
前記各ユーザが操作する端末及び前記複数台の計算サーバを請求項1又は請求項2に記載の評判システムとして機能させるためのプログラム。
【請求項11】
前記各ユーザが操作する端末及び前記複数台の計算サーバを請求項3に記載の評判システムとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、悪意のあるクエリに対するプライバシーを保護する評判システムと安全なマルチパーティ計算プロトコルの分野に関する。
【背景技術】
【0002】
始めに、本明細書で用いるいくつかの用語の定義を示す。
「評価値(rating)」とは、評価を行う者(評価者)が、評価対象となる者(被評価者)の信頼度や行動の良し悪しを表すために使用する値である。評価値が高いほど信頼度が高い又は行動が良いことを意味する。一般に、評価者は、被評価者と対話等のインタラクション(interaction)を持った経験を有し、当該経験に基づいて被評価者に対して評価値を付ける。
【0003】
「集計関数(aggregated function)」とは、複数の評価値を一つの値にまとめるために使用される関数の総称である。具体例として、総和(summation)や平均関数(average function)がある。
「評判スコア(reputation score)」とは、複数の評価者が付した評価値を、集計関数を用いて集計(aggregate)した結果である。
【0004】
「評判システム(reputation system)」とは、当該システムの当事者(ユーザ)に被評価者に対する評価を促し、評価者としてのユーザが付した評価値を受信し、また、ユーザからの問合せに応じて被評価者に対する評価値を提供する機能を備えるシステムである。ここで、「評判システム」における被評価者自身も、当該評判システムの当事者(ユーザ)となれるように設定することが可能である。このように設定した場合、例えば、「評価値」は、「評判システム」のユーザが他のユーザの信頼度や行動の良し悪しを表すために使用する値と再定義することができる。
【0005】
本発明はこのように設定された「評判システム」を前提としているため、以下では、「評判システム」という用語は、被評価者自身も当該システムのユーザとなれるように設定されたシステムを表すものとする。
また、本明細書では、被評価者(評価対象となる者)となる他のユーザを「対象ユーザ」ともいい、対象ユーザとインタラクションした経験のあるユーザの集合を「集合S」で表す。
【0006】
「問合せ者(querier)」とは、評判システムに対して評価値を問い合わせるユーザである。
「クエリ(query)」とは、問合せ者が評判システムに対し特定の評価者が被評価者に付した評価値を問い合わせる質問である。
【0007】
以上の設定及び用語の定義に鑑みると、本発明の背景技術においては、「対象ユーザ」の「評判スコア」を知りたいと思う「問合せ者」が、「評判システム」に「クエリ」を発して「集合S」に属する複数のユーザが付した「評価値」を問い合わせ、そして、「集計関数」を用いて、求めた複数の「評価値」を「評判スコア」に集約する。
【0008】
ところで、被評価者も当事者(ユーザ)となれるように設定された評判システムにおける評価値は、互恵的・報復回避的な理由から戦略的に提供される可能性があり、そのため評価された当事者(対象ユーザ)の信頼度や行動の良し悪しを正しく反映していない可能性が示唆されている(非特許文献1)。
【0009】
すなわち、このような評判システムにおける当事者(ユーザ)は、他の当事者(ユーザ)と結託してお互いに実際よりもよい評価値を付け合うことにより有利になろうとする行動(互恵的戦略)を採る場合があることが知られている。
また、ある被評価者に対して低い評価値を付したことが当該被評価者に知られると当該被評価者から自身が報復的に低い評価を付される恐れがあると考え、このような報復を避けようとして低い評価を付けることを躊躇う行動(報復回避的戦略)を採る場合があることが知られている。
【0010】
このように、個々のユーザの評価値が他のユーザに漏洩する(プライバシーが保護されていない)と評価値の質が低下する可能性があることが知られている。このため、評価を行うユーザのプライバシーをサポートし、評価値が他のユーザに漏洩しないようにすることで評価値の質を担保しようとするプライバシー保護型評判システムに関する先行研究が存在する(非特許文献1及び非特許文献2)。
【0011】
非特許文献1のプライバシー保護型評判システムでは、集計関数として和を用い、構成要素として、Shamir秘密分散と離散ログコミットメント法に基づくPederson検証可能秘密分散方式を用いている。集合S内の各ユーザは、Shamir秘密分散に従って、二つのランダムな多項式を用いて、自分の評価値をコミットメントとともにシェアする。その後、ユーザはシェアに対して計算を行い、その結果を得るためにシェアを結合する。
【0012】
非特許文献2のプライバシー保護型評判システムでは、集計関数として和を用い、構成要素として加法的秘密分散方式を使用している。集合S内の各ユーザは、自身の評価値を自身が信頼する他の最大k人のユーザにシェアする。そして、ユーザはシェアに対して計算を行い、その結果を得るためにシェアを結合する。
【0013】
また、非特許文献3では、プライバシーを保護する機械学習の一般的なフレームワークを設計・実装し、それを用いて線形回帰、ロジスティック回帰及びニューラルネットワークモデルのトレーニングのための新しいソリューションを得ている。非特許文献3の著者らは、データ所有者が自分のデータを3台のサーバで秘密裏にシェアし、3PC(Three-Party Computation=三者間計算)を用いて連帯データのモデルの訓練と評価を行う、3サーバモデルにおけるプロトコルを提案しており、それは、算術演算(Arithmetic)、2進演算(Binary)及びYaoの3PCを効率的に行き来するためのフレームワーク(これを「ABY3秘密分散フレームワーク」と称している。)を含んでいる。なお、「Yao」は、1982年に初めてのMPC(Multi-Party Computation=マルチパーティ計算)プロトコルを発表したAndrew Yao氏のファミリーネームである。
【先行技術文献】
【非特許文献】
【0014】
【非特許文献1】Elan Pavlov, Jeffrey S. Rosenschein & Zvi Topol, “Supporting Privacy in Decentralized Additive Reputation Systems”, International Conference on Trust Management, 2004, pp. 108-119
【0015】
【非特許文献2】Omar Hasan, Lionel Brunie & Elisa Bertino, “Preserving Privacy of Feedback Providers in Decentralized Reputation Systems”, Computers & Security, 2012, vol. 31, no. 7, pp. 816-826
【0016】
【非特許文献3】Payman Mohassel & Peter Rindal, “ABY3: A Mixed Protocol Framework for Machine Learning”, Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, 2018, pp. 35-52
【発明の概要】
【発明が解決しようとする課題】
【0017】
プライバシー保護型評判システムに対する攻撃としては、次に示す二種類の攻撃が考えられる。
攻撃1:「類似のユーザ集合へのクエリ」
この攻撃では、問合せ者は、類似の集合SとTから評価値を求めるクエリを発する。その際、ユーザUuが、集合Tには存在し集合Sには存在しないこと唯一の違いとなるようにクエリを設定する。そして、集合Sから求めた評価値と集合Tから求めた評価値のそれぞれについて合計値や平均値を計算すれば、その結果の差からユーザUuが入力した評価値が漏洩することになる。
【0018】
攻撃2:「悪意のある問合せ者と一人を除く全員のユーザとの共謀」
この攻撃では、問合せ者は、ユーザUvを除く集合S内のすべてのユーザと共謀しながら集合Sからの評価値を求める。そして、すべての悪意のあるユーザ(すなわち、ユーザUvを除く集合S内のすべてのユーザ)は、評価値としてゼロを入力する。その結果、集計された値からユーザUvが入力した評価値が漏洩することになる。
【0019】
本発明者らは、セキュアなマルチパーティ計算に基づく分散型設定において、関連する先行研究である非特許文献1及び非特許文献2のプライバシー保護型評判システムが、それぞれ攻撃1及び攻撃2に対抗し得るか否かを検討した。
【0020】
非特許文献1のプライバシー保護型評判システムは、攻撃2への対策として、信頼された集合Sの選択方法を提案している。集合Sを選択するために、問合せ者は集合Sの最初のメンバーを選択し、新しく選択されたメンバーに次のメンバーを選択させる。この場合、誠実なユーザは、ある確率で他の誠実なユーザを選ぶことが期待される。
【0021】
しかしながら、非特許文献1の方法では、システム内の誠実なユーザの分布についての仮定を必要とする。また、この方法では、攻撃1には対抗できない。
【0022】
非特許文献2の著者らは、攻撃1に対処するための対策を提案しており、その対策は次のようなものである。
対策1:計算結果にランダムなノイズを加える(この対策には、信頼できる乱数生成器が必要である。)。
対策2:ユーザの信頼できるサブセットを形成する。ユーザは、プライバシーを守るという観点から、互いに信頼できる信頼できるサブセットに参加する。ユーザは、信頼できるサブセット内の他のユーザが評価した場合にのみ、その評価値を提出する。
対策3:確率的参加を利用する。各クエリについて、ユーザはある確率でフィードバックを提供することをランダムに決定することができる。その結果、二つの類似したクエリが出現する確率は低くなる。
【0023】
非特許文献2の著者らが提案した攻撃1に対する対策には、次のような欠点がある。
対策1では、計算結果にランダムなノイズを付加するが、追加されたノイズは、結果の精度を低下させる可能性がある。また、著者らの提案では、信頼できる乱数生成器の存在が仮定されており、安全性が当該仮定に依存している。
対策2では、信頼できるユーザの部分集合を形成するが、ユーザが互いに知らないという状況において、信頼できるユーザの部分集合を形成することは容易ではない。また、グループの集計結果もやはり漏洩してしまう。
【0024】
対策3では、確率的な参加を利用するが、ある確率で、依然として攻撃が可能である。さらに、参加したユーザのリストは敵に知られており、後のクエリとの比較に使用することができる。
このように、非特許文献2の著者らが提案した攻撃1に対する対策にはいずれも欠点がある。さらに、非特許文献2の著者らが提案した対策では攻撃2には対抗できない。
【0025】
また、非特許文献3は、プライバシー保護型機械学習のための汎用の秘密分散フレームワークを提案するものであるが、評判システムを対象とした研究ではないため、評判システムにおける攻撃1及び攻撃2への対策については何ら教示も示唆もしていない。
【0026】
以上のように、関連する先行研究である非特許文献1及び非特許文献2のプライバシー保護型評判システムは、いずれも欠点を有する。加えて、本発明者らが知る限り、攻撃1及び攻撃2の両方に対して具体的な対策を提供する先行研究は存在しない。
本発明は、不正なクエリ攻撃1及び攻撃2に対抗し得るプライバシー保護型評判システム、評判スコア計算装置、評判スコア計算方法及びプログラムを提供することを目的とする。
【0027】
非特許文献1の方法とは対照的に、本発明は、誠実なユーザの分布に関する仮定を必要とせず、攻撃1及び2の両方に対処することができる。
また、非特許文献2の著者らが提案した対策1とは対照的に、本発明の結果は、信頼できる乱数生成器に依存せず実データから直接得られるので、より良い安全性の仮定を有する。また、非特許文献2の著者らが提案した対策2とは対照的に、本発明では、信頼できるユーザの部分集合を形成する必要がない。また、非特許文献2の著者らが提案した対策3とは対照的に、本発明は、参加したユーザのリストを漏洩させない。
さらに、本発明は、攻撃2にも対抗することができる。
【課題を解決するための手段】
【0028】
本発明は、悪意のあるユーザが攻撃1及び攻撃2を行うことが困難な、プライバシー保護型評判システム、評判スコア計算装置、評判スコア計算方法及びプログラムである。本発明の本質的なアイデアは、問合せ者がユーザの集合Sから評価値を求め評判スコアを集計する際に、集合Sのランダムな部分集合S´からだけ評判スコアが集計されるようにすることであり、このランダムな部分集合S´のメンバーは誰にも知られないので、悪意のあるユーザが攻撃1及び攻撃2を行うことは困難である。
【0029】
(1)本発明に係る評判システムは、集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判システムであって、前記評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信し、かつ、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行う、複数台の計算サーバを備え、前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定し、前記評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する。
【0030】
(2)前記評判システムにおいて、前記秘密分散技術は、ABY3秘密分散フレームワークであってよい。
(3)前記評判システムにおいて、前記集計関数として平均関数を用いてよい。
【0031】
(4)本発明に係る評判スコア計算装置は、集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判スコア計算装置であって、前記評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信し、かつ、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行う、複数台の計算サーバからなり、前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定し、前記評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する。
【0032】
(5)前記評判スコア計算装置において、前記秘密分散技術は、ABY3秘密分散フレームワークであってよい。
(6)前記評判スコア計算装置において、前記集計関数として平均関数を用いてよい。
【0033】
(7)本発明に係る評判スコア計算方法は、集計関数を用いて複数の評価値を集計することにより評判スコアを算出する評判スコア計算方法であって、前記評判スコア計算方法を実行する複数台の計算サーバが、前記計算サーバを備える評判システムの複数のユーザが操作する端末から、各ユーザが特定のユーザに対して付した評価値を秘密分散技術を用いて分散化した第1の値と、各ユーザがランダムに選んだ値を前記秘密分散技術を用いて分散化した第2の値とを、ネットワークを介してそれぞれ受信するステップと、前記複数台の計算サーバが、受信した前記第1の値と前記第2の値とに基づいてマルチパーティ計算をそれぞれ行うステップと、を含み、前記各ユーザがランダムに選んだ値に基づいて前記複数のユーザの集合の部分集合を設定するステップをさらに含み、前記計算サーバを備える評判システムのいずれのユーザに対しても、前記各ユーザがランダムに選んだ値及び前記部分集合に属するメンバーが知られないようにすることにより、前記評価値を漏洩させようとする攻撃に対抗する。
【0034】
(8)前記評判スコア計算方法において、前記秘密分散技術は、ABY3秘密分散フレームワークであってよい。
(9)前記評判スコア計算方法において、前記集計関数として平均関数を用いてよい。
【0035】
(10)本発明に係るプログラムは、各ユーザが操作する端末及び複数台の計算サーバを先述の評判システムとして機能させるためのプログラムであってよい。
【発明の効果】
【0036】
本発明は、評判システム、評判スコア計算装置、評判スコア計算方法及びプログラムの機能を提供するものである。本発明は、安全性が既に証明されているABY3秘密分散フレームワーク上に構築されているため、ユーザのプライバシーを保護する。また、ランダムな部分集合S´のメンバーは誰にも知られないので、悪意のあるユーザが攻撃1及び攻撃2を行うことは困難である。
【図面の簡単な説明】
【0037】
【
図1】実施形態のプライバシー保護型評判システムを示す概念図である。
【
図2】実施形態のプライバシー保護型評判システムにおける乱数のビット列の生成手順を示すアルゴリズム1及びその具体例を示す図である。
【
図3】実施形態のプライバシー保護型評判システムにおける平均関数の計算手順を示すアルゴリズム2及びその具体例を示す図である。
【
図4】実施形態のプライバシー保護型評判システムにおける除算の結果を報告する手順を示すアルゴリズム3及びその具体例を示す図である。
【
図5】実施形態のプライバシー保護型評判システムにおけるアルゴリズム3の具体例の続きを示す図である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態の一例について説明する。
本実施形態のプライバシー保護型評判システムは、集計関数として平均関数を採用しており、システム内の複数のユーザが対象ユーザに付した評価値の平均値が評判スコアとなる。
【0039】
図1は、本実施形態のプライバシー保護型評判システムを示す概念図である。
問合せ者U
qが対象ユーザU
tとユーザの集合S={U
a,U
b,U
c,U
d,...}を特定すると(
図1の左側)、特定された集合S内の各ユーザU
a,U
b,U
c,U
d,...は、各ユーザの端末から、対象ユーザU
tに対する各々の評価値を秘密の断片(シェア)として、ネットワーク40を介して3台の計算サーバ(第1サーバ10、第2サーバ20及び第3サーバ30)に秘密裡に送信する。ここで、「秘密裡に送信する」とは、例えば、第1サーバ10に送信するシェア値が第2サーバ20及び第3サーバ30には知られないように送信するという意味である。第2サーバ20及び第3サーバ30にそれぞれ送信するシェア値についても同様である。
そして、各サーバはセキュアな計算を行い、その結果としての評判スコアを問合せ者に送信する(
図1の右側)。
【0040】
本実施形態の評判システムは、ビルディングブロックとして、非特許文献3が開示する「ABY3秘密分散フレームワーク」を用いており、これは、後述する三つのアルゴリズムから構成されている。これら三つのアルゴリズムは、各サーバ及び各ユーザの端末にそれぞれインストールされたプログラムが協働することにより実現される。
【0041】
なお、「ビルディングブロック」とは、ロジックや機能をまとめてブロック化したものである。また、「秘密分散」とは、データ暗号化等にも用いられる情報秘匿のための技術であり、データを、それ自体は意味を持たないいくつかの乱数の断片(シェア)に分散化し、すべて又は特定の数のシェアが集まらないと元のデータが復元できないことを利用して秘匿する技術である。さらに、「ABY」は、Arithmetic-Binary-Yaoの略であり、上付き添え字の「3」は、3PC(three-party computation=三者間計算)を表している。データを分散化してマルチパーティ計算を行うことにより、一つのパーティにシェアが集まることがない(したがって、いずれのパーティも元のデータを復元できない)ことが担保される。
【0042】
ABY3秘密分散フレームワークでは、秘密の値xについてのx=x(1)+x(2)+x(3)となるシェア値x(1)、x(2)及びx(3)のタプル(x(1),x(2),x(3))を、(x(1),x(2))、(x(2),x(3))及び(x(3),x(1))の三つの断片に分割し、これを3台の計算サーバに各々一つずつ秘密裡に送信することによりセキュアに分散する。これにより、各サーバは秘密の値xを知ることができない。
ここで、「タプル」とは、複数の対象の順序づけられた組であり、以下では、対象数が三のタプルを「三つ組」といい、三つ組を分割した断片である対象数が二のタプルを「二つ組」という。
【0043】
なお、以下の説明及び図面中では、便宜上、シェア値の三つ組(x(1),x(2),x(3))を[[x]]と表記する。その際、xがバイナリ値の場合は、Binaryを表す「B」の上付き字を添えて、バイナリシェア[[x]]B(又は単に[[x]]B)と表記し、xが非バイナリ値の場合は、Arithmeticを表す「A」の上付き字を添えて、算術シェア[[x]]A(又は単に[[x]]A)と表記する。
【0044】
以下、
図2~5を参照しつつ、ABY
3秘密分散フレームワークを応用した三つのアルゴリズム(アルゴリズム1~3)の詳細を説明する。
【0045】
<アルゴリズム1:乱数のビット列の生成>
アルゴリズム1では、集合Sからランダムな部分集合S´を生成するために、等価的に長さnの乱数のビット列bを生成する。ここで、nは集合Sのサイズ(大きさ)である。集合S内の各ユーザUiは、長さnの乱数のビット列biのバイナリシェアを各サーバに送信するだけなので、この乱数のビット列b(及びランダムな部分集合S´)は、システム内のどのユーザにも知られることはない。最終的な乱数のビット列bは、送信されたすべての乱数のビット列のビットごとのXOR(排他的論理和)である。
【0046】
図2は、本実施形態の評判システムにおける乱数のビット列の生成手順を示すアルゴリズム1及びその具体例を示す図である。同図に示すとおり、アルゴリズム1における入力はビット列bの長さ(=集合Sの大きさ)nであり、出力はバイナリシェアとしての乱数のビット列[[b
1]]
B,…,[[b
n]]
Bである。
アルゴリズム1では、集合S内の各ユーザU
iが、乱数のビット列b
1,i,…,b
n,iをランダムに生成し(ステップ2)、次いでバイナリシェア[[b
1,i]]
B,…,[[b
n,i]]
Bを生成し(ステップ3)、生成したバイナリシェア[[b
1,i]]
B,…,[[b
n,i]]
Bを各サーバへ送信する(ステップ4)。
【0047】
ここで、ステップ3におけるバイナリシェア[[b
1,i]]
B,…,[[b
n,i]]
Bの生成は、[[b
1,1]]
Bを例にとると、b
1,1
(1)とb
1,1
(2)の値をランダムに選んだ後、b
1,1とb
1,1
(1)とb
1,1
(2)のXOR(排他的論理和)によりb
1,1
(3)をセットすることにより行う。なお、
図2の具体例のステップ3における丸囲み付き+記号は、XORの演算子を表す(以下同様。)。
【0048】
また、ステップ4におけるバイナリシェア[[b1,i]]Bの各ユーザUiから各サーバへの送信は、ABY3秘密分散フレームワークに従って行われるので、第1サーバ10は(b1,i
(1),b1,i
(2))の二つ組を、第2サーバ20は(b1,i
(2),b1,i
(3))の二つ組を、第3サーバ30は(b1,i
(3),b1,i
(1))の二つ組をそれぞれ受信することになる。
【0049】
3台のサーバは、受信したすべての乱数のビット列のビットごとのXOR(排他的論理和)を計算する(ステップ7)。計算の結果得られたバイナリシェアとしての乱数のビット列[[b1]]B,…,[[bn]]Bは、次のアルゴリズム2に対して出力される。
【0050】
なお、
図2の具体例のところにステップ7の計算例として示した式は、煩雑さを避けるために先述のバイナリシェア形式で記載しているが、実際には第1サーバ10、第2サーバ20及び第3サーバ30が3PC(それぞれが受信した二つ組を用いる三者間計算)を行っていることに注意されたい。例えば、第1サーバ10が実際に行う計算は、
b
1
(1)=b
1,1
(1)XORb
1,2
(1)XORb
1,3
(1)XORb
1,4
(1)
b
1
(2)=b
1,1
(2)XORb
1,2
(2)XORb
1,3
(2)XORb
1,4
(2)
b
2
(1)=b
2,1
(1)XORb
2,2
(1)XORb
2,3
(1)XORb
2,4
(1)
b
2
(2)=b
2,1
(2)XORb
2,2
(2)XORb
2,3
(2)XORb
2,4
(2)
b
3
(1)=b
3,1
(1)XORb
3,2
(1)XORb
3,3
(1)XORb
3,4
(1)
b
3
(2)=b
3,1
(2)XORb
3,2
(2)XORb
3,3
(2)XORb
3,4
(2)
b
4
(1)=b
4,1
(1)XORb
4,2
(1)XORb
4,3
(1)XORb
4,4
(1)
b
4
(2)=b
4,1
(2)XORb
4,2
(2)XORb
4,3
(2)XORb
4,4
(2)
である。第2サーバ20及び第3サーバ30についても同様である。
【0051】
<アルゴリズム2:平均関数の計算>
アルゴリズム2では、集合Sに属する各ユーザからの評価値r(r1,…,rn)とアルゴリズム1からの乱数のビット列bの間のドット積を求める。各ユーザUiは、ABY3秘密分散フレームワークに従い、自身の評価値riを算術シェアとして各サーバに送信する。各サーバは、ABY3秘密分散フレームワークを利用して、rの算術シェアとbのバイナリシェアのドット積をプライベートに(非公開で)計算する。結果として得られる評判スコア(平均値)の分子xと分母yは別々に計算される。
【0052】
図3は、本実施形態の評判システムにおける平均関数の計算手順を示すアルゴリズム2及びその具体例を示す図である。同図に示すとおり、アルゴリズム2における入力は、アルゴリズム1からのバイナリシェアとしての乱数のビット列[[b
1]]
B,…,[[b
n]]
Bと、集合S内の各ユーザからの評価値r
1,…,r
nであり、出力は、算術シェアとしての平均値の分子[[x]]
Aと分母[[y]]
Aである。
【0053】
アルゴリズム2では、集合S内の各ユーザUiが、riから算術シェア[[ri]]Aを生成する(ステップ2)。このとき、Uiは、まずri
(1)とri
(2)の値をランダムに選び、次に、ri
(3)=ri-ri
(1)+ri
(2)を2の補数表現で計算することにより、ri
(3)の値をセットする。Uiは、生成した[[ri]]Aを各サーバに送信する(ステップ3)。
【0054】
ここで、ステップ3における算術シェアの各ユーザUiから各サーバへの送信は、ABY3秘密分散フレームワークに従って行われるので、第1サーバ10は(r1
(1),r1
(2))の二つ組を、第2サーバ20は(r1
(2),r1
(3))の二つ組を、第3サーバ30は(r1
(3),r1
(1))の二つ組をそれぞれ受信することになる。
【0055】
3台のサーバは、数列rの算術シェアとビット列bのバイナリシェアのドット積を計算する(ステップ5)。ここで、「ドット積」(「点乗積」又は「内積」ともいう。)とは、二つの同じ長さの数列から一つの数値を求める演算であり、求められる一つの数値は、二つの数列の同じ位置にある要素同士の積の総和である。計算結果は、部分集合S´の各メンバーが付した評価値の総和を表し、評判スコア(平均値)の分子xの算術シェア[[x]]Aとなる。
また、3台のサーバは、数列(1,1,…,1)と数列bのバイナリシェアのドット積を計算する(ステップ6)。計算結果は、部分集合S´のメンバー数を表し、評判スコア(平均値)の分母yの算術シェア[[y]]Aとなる。
【0056】
ステップ5及びステップ6におけるドット積の計算の結果、
図2~5に示す具体例では、集合S内の4人のユーザU
1、U
2、U
3及びU
4のそれぞれの評価値のうち、ユーザU
2の評価値r
2のみが集計から除外されている。いいかえれば、部分集合S´のメンバーは、ユーザU
2を除くユーザU
1、U
3及びU
4となっている。しかしながら、ドット積の計算に用いる乱数のビット列bがシステム内のどのユーザにも知られないようになっていることで、システム内の任意のユーザがランダムな部分集合S´のメンバーを知ることが防がれていることに注意されたい。
【0057】
なお、
図3の具体例のところにステップ5及びステップ6の計算例として示した式は、煩雑さを避けるために先述のバイナリシェア形式及び算術シェア形式で記載しているが、実際には第1サーバ10、第2サーバ20及び第3サーバ30が3PC(それぞれが受信した二つ組を用いる三者間計算)を行っていることに注意されたい。
【0058】
<アルゴリズム3:除算の結果の報告>
アルゴリズム3では、評判スコア(平均値)を求めるために、部分集合S´の各メンバーが付した評価値の総和を表す[[x]]Aを被除数とし、部分集合S´のメンバー数を表す[[y]]Aを除数として除算を行う。ただし、ABY3秘密分散フレームワークは二つの算術シェアの間の除算を直接サポートしていないため、ここでは別の方法を用いる。
まず、アルゴリズム1における乱数のビット列bの生成と同様の方法で、範囲[0,1)の乱数mを生成する。そして、サーバはmxとmyを計算し、その結果を問合せ者に送信する。このアルゴリズム3の出力は、平均値として計算された評判スコアである。
【0059】
図4及び
図5は、本実施形態の評判システムにおける除算の結果の報告手順を示すアルゴリズム3及びその具体例を示す図である。同図に示すとおり、アルゴリズム3における入力は、アルゴリズム2からの算術シェアとしての平均値の分子[[x]]
Aと分母[[y]]
Aであり、出力は、プレーンテキスト形式の平均値x/yである。
アルゴリズム3では、集合S内の各ユーザU
iが、乱数のビット列m
1,i,…,m
d,iをランダムに生成し(ステップ2)、次いで、バイナリシェア[[m
1,i]]
B,…,[[m
d,i]]
Bを生成し(ステップ3)、生成したバイナリシェア[[m
1,i]]
B,…,[[m
d,i]]
Bを各サーバへ送信する(ステップ4)。
【0060】
ここで、ステップ2においてユーザUiが生成する乱数のビット列m1,i,…,md,iは、範囲[0,1)の乱数miを二進表記したときの小数部となる。例えば、m1,i=0、m2,i=1、m3,i=1、m4,i=0であれば、mi=0.01102=0.375である(下付き添字の「2」は二進表記であることを示す。)。
【0061】
また、ステップ3におけるバイナリシェア[[m1,i]]B,…,[[md,i]]Bの生成は、[[m1,1]]Bを例にとると、m1,1
(1)とm1,1
(2)の値をランダムに選んだ後、m1,1とm1,1
(1)とm1,1
(2)のXOR(排他的論理和)によりm1,1
(3)をセットすることにより行う。
【0062】
また、ステップ4におけるバイナリシェア[[m1,i]]Bの各ユーザUiから各サーバへの送信は、ABY3秘密分散フレームワークに従って行われるので、第1サーバ10は(m1,i
(1),m1,i
(2))の二つ組を、第2サーバ20は(m1,i
(2),m1,i
(3))の二つ組を、第3サーバ30は(m1,i
(3),m1,i
(1))の二つ組をそれぞれ受信することになる。
【0063】
3台のサーバは、受信したすべてのバイナリシェア[[m1,i]]B,…,[[md,i]]BのビットごとのXOR(排他的論理和)を計算することにより[[m1]]B,…,[[md]]Bを得る(ステップ7)。
次いで、3台のサーバは、[[0.m1…md]]BをB→A変換する(ステップ9)。例えば、[[0.0110]]Bの場合、B→A変換すると[[0.375]]Aが得られる。
【0064】
次いで、3台のサーバは、[[mx]]A=[[m]]A×[[x]]Aと、[[my]]A=[[m]]A×[[y]]Aを計算し(ステップ10及びステップ11)、[[mx]]Aと[[my]]Aを問合せ者Uqへ送信する(ステップ12)。これにより、問合せ者Uqは、第1サーバ10からmx(1)とmy(1)を受信し、第2サーバ20からmx(2)とmy(2)を受信し、第3サーバ30からmx(3)とmy(3)を受信することになる。
【0065】
問合せ者Uqは、ステップ12で受信したmx(1)、mx(2)及びmx(3)並びにmy(1)、my(2)及びmy(3)からmxとmyを再構成する。具体的には、mx=mx(1)+mx(2)+mx(3)とmy=my(1)+my(2)+my(3)を計算する(ステップ13)。
次いで、問合せ者Uqは、mx/myを計算することにより、最終的に、対象ユーザUtの評判スコア(平均値)x/yを得る(ステップ14)。
【0066】
なお、
図5の具体例のところにステップ7、ステップ9、ステップ10及びステップ11の計算例として示した式は、煩雑さを避けるために先述のバイナリシェア形式及び算術シェア形式で記載しているが、実際には第1サーバ10、第2サーバ20及び第3サーバ30が3PC(それぞれが受信した二つ組を用いる三者間計算)を行っていることに注意されたい。
【0067】
以上説明したとおり、本実施形態では、問合せ者がユーザの集合Sから評価値を求める際に、集合Sのランダムな部分集合S´からだけ評判スコアが集計されるようにしており、このランダムな部分集合S´のメンバーがシステム内の任意のユーザに知られることを防いでいるので、悪意のあるユーザが攻撃1及び攻撃2を行うことは困難である。
また、本実施形態では、秘密分散技術を用い、3台のサーバ(第1サーバ10、第2サーバ20及び第3サーバ30)によるマルチパーティ計算を行っており、いずれのサーバも断片化(シェア)前の元のデータを知り得ないので、サーバを経由して元のデータを漏洩させることが格段に難しくなっている。
【0068】
以上、本発明の実施形態の一例について説明したが、本発明は、上述した実施形態に限るものではない。また、上述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0069】
例えば、上述した実施形態では、秘密分散技術としてABY3秘密分散フレームワークを用いているが、秘密分散技術はこれに限られるものではない。部分集合S´のメンバーがシステム内の任意のユーザに知られることを効率的に防ぎ得るものである限り、他の秘密分散技術を用いてもよい。
また、上述した実施形態では、集計関数として平均関数を用いているが、集計関数はこれに限られるものではない。例えば、総和(summation)等、平均関数以外の集計関数を用いることもできる。
【0070】
なお、本発明により、例えば、評判システムにおけるユーザのプライバシーを保護し、悪意のあるユーザが当該評判システムに対する攻撃1及び攻撃2を行うことが困難となることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【符号の説明】
【0071】
1 評判システム
Uq 問合せ者としてのユーザ及びその端末
Ut 被評価者としてのユーザ(対象ユーザ)及びその端末
Ua,Ub,Uc,Ud 評価者としてのユーザ及びその端末
10 第1サーバ
20 第2サーバ
30 第3サーバ
40 ネットワーク