説明

秘密計算システム、秘密計算方法

【課題】条件式の演算を含む秘匿関数計算を効率よく処理する。
【解決手段】本発明の秘密計算システムは、通信手段で接続された計算装置Xと計算装置Yを有する。計算装置Xはランダム置換部と条件式演算部とを備え、計算装置Yは、計算逆変換部を備える。計算装置Xのランダム置換部は、秘匿関数計算により、秘匿した入力データをランダム置換して置換入力データを求める。条件式演算部は、置換入力データに対してあらかじめ定めた条件式を用いた演算を行い、置換条件結果データを求める。計算装置Yの計算逆変換部は、秘匿関数計算により、置換条件結果データに対してあらかじめ定めた計算を行うとともに、ランダム置換の逆変換を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、条件式の演算と、計算とを含んだ処理を行う秘密計算システム、秘密計算方法に関する。
【背景技術】
【0002】
入力データを秘匿したまま計算結果を求める方法として、例えば非特許文献1に記載された方法が知られている。当該方法は、論理回路の入出力ビットを乱数に置き換える操作により、置き換え後の演算の実行者は入出力の値を知ることなく演算結果に対応する乱数を得ることを可能とする。つまり、任意の論理回路演算について入力データを秘匿したまま計算結果を求めることができるため、高い汎用性を持つ。入力データを秘匿したまま計算結果を求める方法は総称して秘匿関数計算(Secure Function Evaluation)と呼ばれる場合がある。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Andrew Chi-Chih Yao, “How to Generate and Exchange Secrets (Extended Abstract)”, Proc. of FOCS 1986, pp.162-167.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、秘匿関数計算は通常の計算に比べ一般的に膨大な処理時間を必要とする。特に条件式の計算は処理時間が著しく増加する可能性がある。例として、売上商品データ(例えば、M種類の商品名があり、合計N個の商品が売れたときに、N個の売れた商品名を特定するデータ)を秘匿したまま一番売れた商品を求めることを考える。このとき、以下の処理手順が考えられる。
【0005】
[処理A]
1.N個の売上商品データg(n=1,…,N)を入力する。なお、gは、n番目の売上げた商品名のデータであって、販売しているM種類の商品名の中の1つを特定するデータである。
2.gを登録してc=1とし、n=2〜Nについて、1≦k<nの範囲でg=gが成り立つかを調べ、g=gが成り立つkに対してはcに1を加算し、1≦k<nの範囲ですべてのgについてg≠gならばgを登録し、c=1とする。
3.最大のcを求め、cのインデックスnを出力する(nは複数あってもよい)。インデックスnに対応する商品gが一番売れた商品である。
【0006】
上記処理Aの手続き2について、g=gとなるg(1≦k<n)があるかどうか効率良く判定する方法はいくつか知られている。単純にはk=1から昇順にg=gとなるかどうか判定すれば良いが、この場合、最悪でn−1回の判定が必要となる(方法a)。しかし、gを昇順に並べておけばおよそlogn回の判定で済む方法が知られている(方法b)。
【0007】
しかし方法bはおろか、方法aについても秘匿関数計算への置き換えは自明でないと考えられる。その理由は、方法aや方法bは条件式の真偽の結果に基づき次の計算が決定されるが、当該真偽結果から入力データを推定できる可能性があり(方法aではg=gが成り立てば真、成り立たなければ偽)、一方で真偽結果を秘匿すると次の計算を決定できない場合があるためである(方法aではg=gが成り立てばcに1を加算、成りたたなければc=1)。
【0008】
このような問題を回避するためには、単純には下記の処理Bのように処理を行えばよい。しかし、この方法の場合、常にn−1回の判定を行う必要があり、処理Aと比べて明らかに効率が悪い。
【0009】
[処理B]
1.N個の売上商品データg(n=1,…,N)を入力する。
2.n=2〜N、およびk=1〜N−1について、
【0010】
【数1】

【0011】
を計算する。
3.n=1〜Nについて、
【0012】
【数2】

【0013】
を計算する。
4.最大のcを求め、cのインデックスnを出力する(nは複数あっても良い)。nに対応する商品gを一番売れた商品とする。
【0014】
上記処理Bの計算量はO(N)となる。別の方法として、売上商品データgをM種類の販売商品データ(販売しているM種類の商品名の中の1つを特定するデータ)の集合H={h,…,h}の要素としたとき、以下のような処理手順も考えられる。
【0015】
[処理C]
1.N個の売上商品データg(n=1,…,N)および販売商品データh(m=1,…,M)を入力する。
2.m=1〜M、およびn=1〜Nについて、
【0016】
【数3】

【0017】
を計算する。
3.m=1〜Mについて、
【0018】
【数4】

【0019】
を計算する。
4.最大のcを求め、cのインデックスmを出力する(mは複数あっても良い)。mに対応する商品hを一番売れた商品とする。
【0020】
上記処理Cは計算量がO(MN)となり、M<Nであれば処理Bと比べ処理時間の短縮が期待できるが、処理Aと比べ効率が良いとは言えない。このように、条件式を含む演算の場合、秘匿関数計算への置き換えが自明でない処理や、置き換えは可能であっても著しく効率が悪い処理となってしまう。
【0021】
本発明は、このような状況に鑑みてなされたものであり、条件式の演算を含む秘匿関数計算を効率よく処理することを目的とする。
【課題を解決するための手段】
【0022】
本発明の秘密計算システムは、通信手段で接続された計算装置Xと計算装置Yを有する。計算装置Xはランダム置換部と条件式演算部とを備え、計算装置Yは、計算逆変換部を備える。計算装置Xのランダム置換部は、秘匿関数計算により、秘匿した入力データを、演算ロジックを秘匿したランダム置換によって置換し、置換入力データを求める。条件式演算部は、置換入力データに対してあらかじめ定めた条件式を用いた演算を行い、置換条件結果データを求める。計算装置Yの計算逆変換部は、秘匿関数計算により、置換条件結果データに対してあらかじめ定めた計算を行うとともに、ランダム置換の逆変換を行う。
【発明の効果】
【0023】
本発明の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置Xは置換条件結果データを知るが、ランダム置換の演算ロジックを秘匿しているので、置換条件結果データの逆像を知ることができない。つまり、計算装置Xが置換条件結果データを知っていることは、秘匿性を損ねない。
【図面の簡単な説明】
【0024】
【図1】本発明の秘密計算システムの構成例を示す図。
【図2】本発明の秘密計算方法の処理フローを示す図。
【発明を実施するための形態】
【0025】
以下、本発明の実施の形態について、詳細に説明する。
【実施例1】
【0026】
図1に本発明の秘密計算システムの構成例を示す。また、図2に本発明の秘密計算方法の処理フローを示す。秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0027】
計算装置X100のランダム置換部110は、秘匿関数計算により、秘匿した入力データを、演算ロジックを秘匿したランダム置換によって置換し、置換入力データを求める(S110)。なお、演算ロジックを秘匿しているので、計算装置X100は、ランダム置換の逆変換は行えない。条件式演算部120は、置換入力データに対してあらかじめ定めた条件式を用いた演算を行い、置換条件結果データを求め、計算装置Y200に送る(S120)。「あらかじめ定めた条件式」は、求めたい出力データに応じて定めればよく、特定の条件式に限定するものではない。
【0028】
計算装置Y200の計算逆変換部220は、秘匿関数計算により、置換条件結果データに対してあらかじめ定めた計算を行うとともに、ランダム置換の逆変換を行う(S220)。「あらかじめ定めた計算」は、求めたい出力データに応じて定めればよく、特定の計算に限定する必要はない。
【0029】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置Xは置換条件結果データを知るが、ランダム置換の演算ロジックを秘匿しているので、置換条件結果データの逆像を知ることができない。つまり、計算装置Xが置換条件結果データを知っていることは、秘匿性を損ねない。
【0030】
実施例1では、条件式演算部120が演算する「条件式」は「あらかじめ定めた条件式」としただけであり限定していない、計算逆変換部220が計算する「計算」も「あらかじめ定めた計算」としただけで限定していない。本発明の効果は特定の「条件式」や特定の「計算」に対してのみ得られるものではないので、本実施例ではこれらを限定していない。実施例2以下では、実施例1で示した秘密計算システムの具体例を示していく。
【実施例2】
【0031】
秘密計算システムの構成を示す図は図1、処理フローを示す図は図2である。本実施例の説明では、[[x]]はデータxが秘匿した状態を表わすものとし、K,M,Nを正の整数、kを1〜Kの整数、mを1〜Mの整数、nを1〜Nの整数、集合HをM個の要素を持つ集合、hを集合Hのm番目の要素、[[g]]を集合Hの要素の1つを秘匿したn番目の入力データ、πを集合Hの要素を集合Hの要素にランダムに置換する可逆な関数、π−1をπの逆関数とする。本実施例の秘密計算システムは、N個の入力データの中に含まれる集合Hの各要素の数を求める秘密計算システムである。
【0032】
本実施例の秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0033】
計算装置X100のランダム置換部110が、N個の秘匿した入力データ[[g]]に対して、秘匿関数計算により
’=π(g
の計算を行って、置換入力データh’を求める(S110)。
【0034】
計算装置X100の条件式演算部120は、m=1〜M,n=1〜Nのすべてについて、置換入力データh’に対する条件式
【0035】
【数5】

【0036】
の演算を行い、置換条件結果データdm,nを求め、計算装置Y200に送る(S120)。上記の式が、「あらかじめ定めた条件式」である。
【0037】
計算装置Y200の計算逆変換部220は、m=1〜Mについて、置換条件結果データdm,nに対して秘匿関数計算により、
【0038】
【数6】

【0039】
を行う(S220)。本実施例の秘密計算システムでは、上記の式が、「あらかじめ定めた計算」である。このような処理により、秘匿した入力データの中に含まれる集合Hの各要素の数を求めることができる。
【0040】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置X100は置換条件結果データdm,nを知るが、ランダム置換πの演算ロジックを秘匿しているので、置換条件結果データdm,nの逆像を知ることができない。つまり、計算装置X100が置換条件結果データdm,nを知っていることは、秘匿性を損ねない。
【0041】
[変形例]
実施例2では、N個の入力データの中に含まれる集合Hの各要素の数を求めた。本変形例では、実施例2の秘密計算装置Y200の処理に別の処理を付加することで、秘密計算システムを、N個の入力データの中に最も多く含まれる集合Hの要素を特定する秘密計算システムにする。具体的には、計算逆変換部220が、さらに、秘匿計算により、最大値となるcを求め、最大値となるcに対応するmを求める(S220)。本変形例の秘密計算システムでは、
【0042】
【数7】

【0043】
と、最大値となるcに対応するmを求めることが、「あらかじめ定めた計算」である。
【0044】
このような処理なので、本変形例は実施例2と同様の効果がある。なお、この処理は、N個の入力データgの中で最も多いデータhを求める処理なので、「発明が解決しようとする課題」で説明した一番売れた商品を求める処理にそのまま適用できる。
【実施例3】
【0045】
秘密計算システムの構成を示す図は図1、処理フローを示す図は図2である。本実施例の説明では、[[x]]はデータxが秘匿した状態を表わすものとし、K,M,N,u,v,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、nを0〜N−1の整数、M=2、N=2、集合Aを{0,…,M−1}を要素とする集合、集合Bを{0,…,N−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとする。本実施例の秘密計算システムは、K個の入力データの中に閾値tよりも多く含まれていた集合Aの要素と集合Bの要素の組合せに対して、組合せと含まれていた数を出力する秘密計算システムである。
【0046】
本実施例の秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、置換生成部210、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0047】
計算装置Y200の置換生成部210は、K個のu+vビットの乱数rを生成し、[[r]],…,[[r]]を計算装置X100に送信する(S210)。
【0048】
計算装置X100のランダム置換部110は、K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【0049】
【数8】

【0050】
の計算を行って、置換入力データh’を求める(S110)。二進数表記での同じ桁同士の排他的論理和とは、次のような計算である。例えば、X=9、Y=5としたとき、X、Yを二進数表記すると1001、0101となる。そして、同じ桁同士の排他的論理和の結果は、1100またはそれを十進数表記した12となる。また、計算装置X100は乱数rを知らないので、この処理によって、計算装置X100が置換入力データh’から2+bを推定できなくなっている。なお、本実施例では、乱数と二進数表記での同じ桁同士の排他的論理和を用いて2+bを推定できなくしたが、他の方法を用いてもよい。
【0051】
計算装置X100の条件式演算部120は、m=0〜M−1,n=0〜N−1、k=1〜Kのすべてについて、置換入力データh’に対する条件式
【0052】
【数9】

【0053】
の演算を行い、置換条件結果データdh,k(ただし、h=2m+n)を求め、計算装置Y200に送る(S120)。本実施例では、上記の式があらかじめ定めた条件式である。
【0054】
計算装置Y200の計算逆変換部220は、m=0〜M−1、n=0〜N−1のすべてについて、置換条件結果データdh,kに対して秘匿関数計算により、
【0055】
【数10】

【0056】
を行い、さらに
m=0〜M−1、n=0〜N−1のすべてについて、秘匿計算により、
m,n>tであるcm,nを求め、cm,n>tであるcm,nに対応する((m,n),cm,n)を求める(S220)。本実施例では、上記の式とcm,n>tであるcm,nを求め、cm,n>tであるcm,nに対応する((m,n),cm,n)を求めることが、あらかじめ定めた計算である。また、上記の式でS110が行ったランダム置換を元に戻しているので、計算結果は正しく得られる。
【0057】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置X100は置換条件結果データdh,kを知るが、ランダム置換の演算ロジック(乱数r)を秘匿しているので、置換条件結果データdh,kの逆像を知ることができない。つまり、計算装置X100が置換条件結果データdh,kを知っていることは、秘匿性を損ねない。
【0058】
例えば、集合A,Bは商品カテゴリ、(m,n)はA,Bをの購入商品とするときに、分析者は、購入商品データを知ることなくバスケット分析を行うことができる。
【実施例4】
【0059】
秘密計算システムの構成を示す図は図1、処理フローを示す図は図2である。本実施例の説明では、[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとする。本実施例の秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算システムである。つまり、Aを条件とし、条件ごとにBのデータをグループ分けする秘密計算システムである。例えば、入力データが[[(0,1),(2,1),(0,3),(0,1),(1,1),(1,4)]]であれば、出力データは[[(0,{1,3,1}),(1,{1,4}),(2,{1})]]となる。
【0060】
本実施例の秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、置換生成部210、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0061】
計算装置Y200の置換生成部210は、K個のuビットの乱数rを生成し、[[r]],…,[[r]]を計算装置X100に送信する(S210)。
【0062】
計算装置X100のランダム置換部110は、K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【0063】
【数11】

【0064】
の計算を行って、置換入力データh’を求める(S110)。なお、本実施例では、乱数と二進数表記での同じ桁同士の排他的論理和を用いてaを推定できなくしたが、他の方法を用いてもよい。
【0065】
計算装置X100の条件式演算部120は、m=0〜M−1,k=1〜Kのすべてについて、置換入力データh’に対する条件式
【0066】
【数12】

【0067】
ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、計算装置Y200に送る(S120)。本実施例では、上記の式があらかじめ定めた条件式である。なお、集合Bが0を要素に含まないのであれば、φの代わりに0を用いてもよい。
【0068】
計算装置Y200の計算逆変換部220は、m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【0069】
【数13】

【0070】
を行い、M個の集合Gを求める(S220)。本実施例では、上記の式が、あらかじめ定めた計算である。また、上記の式でS110が行ったランダム置換を元に戻しているので、計算結果は正しく得られる。
【0071】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置X100は置換条件結果データdm,kを知るが、ランダム置換の演算ロジック(乱数r)を秘匿しているので、置換条件結果データdm,kの逆像を知ることができない。つまり、計算装置X100が置換条件結果データdm,kを知っていることは、秘匿性を損ねない。
【実施例5】
【0072】
秘密計算システムの構成を示す図は図1、処理フローを示す図は図2である。本実施例の説明では、[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとする。本実施例の秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算システムである。
【0073】
本実施例の秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、置換生成部210、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0074】
計算装置Y200の置換生成部210は、K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を計算装置Xに送信する(S210)。なお、[[π]]の例として、πのブール関数の定数を秘匿したデータとする方法がある。
【0075】
計算装置X100のランダム置換部110は、K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【0076】
【数14】

【0077】
の計算を行って、置換入力データh’を求める(S110)。この処理によって、計算装置X100は、置換入力データh’は知っていても(a,b)は知らない状態が維持される。
【0078】
計算装置X100の条件式演算部120は、m=0〜M−1,k=1〜Kのすべてについて、置換入力データh’に対する条件式
【0079】
【数15】

【0080】
ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、計算装置Y200に送る(S120)。本実施例では、上記の式があらかじめ定めた条件式である。
【0081】
計算装置Y200の計算逆変換部220は、m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【0082】
【数16】

【0083】
を行い、M個の集合Gを求める(S220)。本実施例では、上記の式が、あらかじめ定めた計算である。また、上記の式でS110が行ったランダム置換を元に戻しているので、計算結果は正しく得られる。
【0084】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置X100は置換条件結果データdm,kを知るが、ランダム置換πの演算ロジックを秘匿しているので、置換条件結果データdm,kの逆像を知ることができない。つまり、計算装置X100が置換条件結果データdm,kを知っていることは、秘匿性を損ねない。
【実施例6】
【0085】
秘密計算システムの構成を示す図は図1、処理フローを示す図は図2である。本実施例の説明では、[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、集合Bは0を要素として含まない集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとする。本実施例の秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gそれぞれの秘匿した要素数[[g]]を求める秘密計算システムである。
【0086】
本実施例の秘密計算システムは、計算装置X100と計算装置Y200を有し、計算装置X100と計算装置Y200は、ネットワーク1000(通信手段)で接続されている。計算装置X100は、ランダム置換部110、条件式演算部120、入出力部X180、記録部X190を備える。計算装置Y200は、置換生成部210、計算逆変換部220、入出力部Y280、記録部Y290を備える。入出力部X180は、ネットワーク1000を介して計算装置Y200とデータ通信を行う。記録部X190は、計算装置X100の処理に必要なデータを記録する。入出力部Y280は、ネットワーク1000を介して計算装置X100とデータ通信を行う。記録部Y290は、計算装置Y200の処理に必要なデータを記録する。
【0087】
計算装置Y200の置換生成部210は、K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を計算装置X100に送信する(S210)。
【0088】
計算装置X100のランダム置換部110は、K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【0089】
【数17】

【0090】
の計算を行って、置換入力データh’を求める(S110)。この処理によって、計算装置X100は、置換入力データh’は知っていても(a,b)は知らない状態が維持される。
【0091】
計算装置X100の条件式演算部120は、m=0〜M−1,k=1〜Kのすべてについて、置換入力データh’に対する条件式
【0092】
【数18】

【0093】
の演算を行い、置換条件結果データdm,kを求め、計算装置Y200に送る(S120)。本実施例では、上記の式があらかじめ定めた条件式である。
【0094】
計算装置Y200の計算逆変換部220は、m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【0095】
【数19】

【0096】
を行い、M個の集合Gそれぞれの秘匿した要素数[[g]]を求める(S220)。本実施例では、上記の式が、あらかじめ定めた計算である。また、上記の式でS110が行ったランダム置換を元に戻しているので、計算結果は正しく得られる。
【0097】
このような構成と処理なので、本実施例の秘密計算システムによれば、条件式の演算を平文で処理できる。したがって、条件式の演算を含む秘匿関数計算を効率よく処理できる。また、計算装置X100は置換条件結果データdm,kを知るが、ランダム置換πの演算ロジックを秘匿しているので、置換条件結果データdm,kの逆像を知ることができない。つまり、計算装置X100が置換条件結果データdm,kを知っていることは、秘匿性を損ねない。
【0098】
[変形例]
実施例6では、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gそれぞれの要素数[[g]]を求めた。本変形例では、実施例6の秘密計算装置Y200の処理に別の処理を付加することで、秘密計算システムを、M個の集合Gの中の最大の要素数を求める秘密計算システムにする。具体的には、計算逆変換部220が、さらに、秘匿計算により、秘匿計算により、最大値となるgを求める(S220)。本変形例の秘密計算システムでは、
【0099】
【数20】

【0100】
と最大値となるgを求めることが、あらかじめ定めた計算である。
【0101】
このような処理なので、本変形例は実施例2と同様の効果がある。
【産業上の利用可能性】
【0102】
本発明は、入力データを秘匿したまま計算結果を求めるような分析技術に利用することができる。例えば、顧客情報を含んだ商品の販売データのように個々の情報は秘匿しておきながら、何らかの集計データ(一番売れた商品を求める、商品をカテゴリごとにグループ分けするなど)を求める場合に利用できる。
【符号の説明】
【0103】
100 計算装置X 110 ランダム置換部
120 条件式演算部 180 入出力部X
190 記録部X 200 計算装置Y
210 置換生成部 220 計算逆変換部
280 入出力部Y 290 記録部Y


【特許請求の範囲】
【請求項1】
通信手段で接続された計算装置Xと計算装置Yを有する秘密計算システムであって、
前記計算装置Xは、
秘匿関数計算により、秘匿した入力データを、演算ロジックを秘匿したランダム置換によって置換し、置換入力データを求めるランダム置換部と、
前記置換入力データに対してあらかじめ定めた条件式を用いた演算を行い、置換条件結果データを求める条件式演算部と
を備え、
前記計算装置Yは、
秘匿関数計算により、置換条件結果データに対してあらかじめ定めた計算を行うとともに、前記ランダム置換の逆変換を行う計算逆変換部
を備える
ことを特徴とする秘密計算システム。
【請求項2】
請求項1記載の秘密計算システムであって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,Nを正の整数、kを1〜Kの整数、mを1〜Mの整数、nを1〜Nの整数、集合HをM個の要素を持つ集合、hを集合Hのm番目の要素、[[g]]を集合Hの要素の1つを秘匿したn番目の入力データ、πを集合Hの要素を集合Hの要素にランダムに置換する可逆な関数、π−1をπの逆関数とするときに、
当該秘密計算システムは、N個の入力データの中に含まれる集合Hの各要素の数を求める秘密計算システムであって、
前記計算装置Xの前記ランダム置換部は、
N個の秘匿した入力データ[[g]]に対して、秘匿関数計算により
’=π(g
の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算部は、
m=1〜M,n=1〜Nのすべてについて、前記置換入力データh’に対する条件式
【数21】


の演算を行い、置換条件結果データdm,nを求め、
前記計算装置Yの前記計算逆変換部は、
m=1〜Mについて、置換条件結果データdm,nに対して秘匿関数計算により、
【数22】


を行う
ことを特徴とする秘密計算システム。
【請求項3】
請求項2記載の秘密計算システムを用いて、N個の入力データの中に最も多く含まれる集合Hの要素を特定する秘密計算システムであって、
前記計算装置Yの前記計算逆変換部は、
さらに、
秘匿計算により、最大値となるcを求め、前記の最大値となるcに対応するmを求める
ことを特徴とする秘密計算システム。
【請求項4】
請求項1記載の秘密計算システムであって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,N,u,v,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、nを0〜N−1の整数、M=2、N=2、集合Aを{0,…,M−1}を要素とする集合、集合Bを{0,…,N−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算システムは、K個の入力データの中に閾値tよりも多く含まれていた集合Aの要素と集合Bの要素の組合せに対して、組合せと含まれていた数を出力する秘密計算システムであって、
前記計算装置Yは、
さらに、K個のu+vビットの乱数rを生成し、[[r]],…,[[r]]を前記計算装置Xに送信する置換生成部も備えており、
前記計算装置Xの前記ランダム置換部は、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数23】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算部は、
m=0〜M−1,n=0〜N−1、k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数24】


の演算を行い、置換条件結果データdh,k(ただし、h=2m+n)を求め、
前記計算装置Yの前記計算逆変換部は、
m=0〜M−1、n=0〜N−1のすべてについて、置換条件結果データdh,kに対して秘匿関数計算により、
【数25】


を行い、さらに
m=0〜M−1、n=0〜N−1のすべてについて、秘匿計算により、
m,n>tであるcm,nを求め、前記のcm,n>tであるcm,nに対応する((m,n),cm,n)を求める
ことを特徴とする秘密計算システム。
【請求項5】
請求項1記載の秘密計算システムであって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算システムであって、
前記計算装置Yは、
さらに、K個のuビットの乱数rを生成し、[[r]],…,[[r]]を前記計算装置Xに送信する置換生成部も備えており、
前記計算装置Xの前記ランダム置換部は、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数26】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算部は、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数27】


ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換部は、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数28】


を行い、M個の集合Gを求める
ことを特徴とする秘密計算システム。
【請求項6】
請求項1記載の秘密計算システムであって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算システムであって、
前記計算装置Yは、
さらに、K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を前記計算装置Xに送信する置換生成部も備えており、
前記計算装置Xの前記ランダム置換部は、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数29】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算部は、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数30】


ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換部は、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数31】


を行い、M個の集合Gを求める
ことを特徴とする秘密計算システム。
【請求項7】
請求項1記載の秘密計算システムであって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、集合Bは0を要素として含まない集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算システムは、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gそれぞれの秘匿した要素数[[g]]を求める秘密計算システムであって、
前記計算装置Yは、
さらに、K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を前記計算装置Xに送信する置換生成部も備えており、
前記計算装置Xの前記ランダム置換部は、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数32】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算部は、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数33】


の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換部は、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数34】


を行い、M個の集合Gそれぞれの秘匿した要素数[[g]]を求める
ことを特徴とする秘密計算システム。
【請求項8】
請求項7記載の秘密計算システムを用いて、M個の集合Gの中の最大の要素数を求める秘密計算システムであって、
前記計算装置Yの前記計算逆変換部は、
さらに、
秘匿計算により、最大値となるgを求める
ことを特徴とする秘密計算システム。
【請求項9】
通信手段で接続された計算装置Xと計算装置Yを用いる秘密計算方法であって、
前記計算装置Xが、
秘匿関数計算により、秘匿した入力データを、演算ロジックを秘匿したランダム置換によって置換し、置換入力データを求めるランダム置換ステップと、
前記置換入力データに対してあらかじめ定めた条件式を用いた演算を行い、置換条件結果データを求める条件式演算ステップと
を実行し、
前記計算装置Yが、
秘匿関数計算により、置換条件結果データに対してあらかじめ定めた計算を行うとともに、前記ランダム置換の逆変換を行う計算逆変換ステップ
を行う
ことを特徴とする秘密計算方法。
【請求項10】
請求項9記載の秘密計算方法であって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,Nを正の整数、kを1〜Kの整数、mを1〜Mの整数、nを1〜Nの整数、集合HをM個の要素を持つ集合、hを集合Hのm番目の要素、[[g]]を集合Hの要素の1つを秘匿したn番目の入力データ、πを集合Hの要素を集合Hの要素にランダムに置換する可逆な関数、π−1をπの逆関数とするときに、
当該秘密計算方法は、N個の入力データの中に含まれる集合Hの各要素の数を求める秘密計算方法であって、
前記計算装置Xの前記ランダム置換ステップは、
N個の秘匿した入力データ[[g]]に対して、秘匿関数計算により
’=π(g
の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算ステップは、
m=1〜M,n=1〜Nのすべてについて、前記置換入力データh’に対する条件式
【数35】


の演算を行い、置換条件結果データdm,nを求め、
前記計算装置Yの前記計算逆変換ステップは、
m=1〜Mについて、置換条件結果データdm,nに対して秘匿関数計算により、
【数36】


を行う
ことを特徴とする秘密計算方法。
【請求項11】
請求項10記載の秘密計算方法を用いて、N個の入力データの中に最も多く含まれる集合Hの要素を特定する秘密計算方法であって、
前記計算装置Yの前記計算逆変換ステップは、
前記の処理を行った上で、さらに、
秘匿計算により、最大値となるcを求め、前記の最大値となるcに対応するmを求める
ことを特徴とする秘密計算方法。
【請求項12】
請求項9記載の秘密計算方法であって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,N,u,v,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、nを0〜N−1の整数、M=2、N=2、集合Aを{0,…,M−1}を要素とする集合、集合Bを{0,…,N−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算方法は、K個の入力データの中に閾値tよりも多く含まれていた集合Aの要素と集合Bの要素の組合せに対して、組合せと含まれていた数を出力する秘密計算方法であって、
まず、前記計算装置Yが、
K個のu+vビットの乱数rを生成し、[[r]],…,[[r]]を前記計算装置Xに送信する置換生成ステップ
を行い、その後、
前記計算装置Xの前記ランダム置換ステップが、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数37】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算ステップが、
m=0〜M−1,n=0〜N−1、k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数38】


の演算を行い、置換条件結果データdh,k(ただし、h=2m+n)を求め、
前記計算装置Yの前記計算逆変換ステップが、
m=0〜M−1、n=0〜N−1のすべてについて、置換条件結果データdh,kに対して秘匿関数計算により、
【数39】


を行い、さらに
m=0〜M−1、n=0〜N−1のすべてについて、秘匿計算により、
m,n>tであるcm,nを求め、前記のcm,n>tであるcm,nに対応する((m,n),cm,n)を求める
ことを特徴とする秘密計算方法。
【請求項13】
請求項9記載の秘密計算方法であって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算方法は、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算方法であって、
まず、前記計算装置Yが、
K個のuビットの乱数rを生成し、[[r]],…,[[r]]を前記計算装置Xに送信する置換生成ステップ、
を行い、その後、
前記計算装置Xの前記ランダム置換ステップが、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数40】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算ステップが、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数41】


ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換ステップが、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数42】


を行い、M個の集合Gを求める
ことを特徴とする秘密計算方法。
【請求項14】
請求項9記載の秘密計算方法であって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算方法は、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gを求める秘密計算方法であって、
まず、前記計算装置Yが、
K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を前記計算装置Xに送信する置換生成ステップ、
を行い、その後、
前記計算装置Xの前記ランダム置換ステップが、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数43】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算ステップが、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数44】


ただし、φは空であることを示す記号
の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換ステップが、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数45】


を行い、M個の集合Gを求める
ことを特徴とする秘密計算方法。
【請求項15】
請求項9記載の秘密計算方法であって、
[[x]]はデータxが秘匿した状態を表わすものとし、K,M,u,tを正の整数、kを1〜Kの整数、mを0〜M−1の整数、M=2、集合Aを{0,…,M−1}を要素とする集合、集合Bは0を要素として含まない集合、[[(a,b)]]を集合Aの要素の1つであるaと集合Bの要素の1つであるbとの組合せを秘匿したk番目の入力データとするときに、
当該秘密計算方法は、K個の入力データを集合Aの要素であるaによってグループ分けしたM個の集合Gそれぞれの秘匿した要素数[[g]]を求める秘密計算方法であって、
まず、前記計算装置Yが、
K個の集合Aの置換関数πを生成し、置換関数πの演算ロジックを秘匿したデータ[[π]],…,[[π]]を前記計算装置Xに送信する置換生成ステップ、
を行い、その後、
前記計算装置Xの前記ランダム置換ステップが、
K個の秘匿した入力データ[[(a,b)]]に対して、秘匿関数計算により
【数46】


の計算を行って、置換入力データh’を求め、
前記計算装置Xの前記条件式演算ステップが、
m=0〜M−1,k=1〜Kのすべてについて、前記置換入力データh’に対する条件式
【数47】


の演算を行い、置換条件結果データdm,kを求め、
前記計算装置Yの前記計算逆変換ステップが、
m=0〜M−1について、置換条件結果データdm,kに対して秘匿関数計算により、
【数48】


を行い、M個の集合Gそれぞれの秘匿した要素数[[g]]を求める
ことを特徴とする秘密計算方法。
【請求項16】
請求項15記載の秘密計算方法を用いて、M個の集合Gの中の最大の要素数を求める秘密計算方法であって、
前記計算装置Yの前記計算逆変換ステップは、
前記の処理を行った上で、さらに、
秘匿計算により、最大値となるgを求める
ことを特徴とする秘密計算方法。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2011−248066(P2011−248066A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−120704(P2010−120704)
【出願日】平成22年5月26日(2010.5.26)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】