(57)【要約】【課題】入力データを明かすことなくグループごとの分位数の計算を行う。【解決手段】秘密計算システム１はM台の集約関数装置２1,…,２Mを含む。集約関数装置２mは、グループを表すキーkを秘匿化した秘匿キーと対応する値vを秘匿化した秘匿値[v]とを含む秘匿情報を入力とする。集約関数装置２mは秘匿情報を値vの昇順に安定ソートし、さらにキーkの昇順に安定ソートする。集約関数装置２mは秘匿情報にグループ毎の値vの昇順の順番を示す索引[c]を付加し、グループ毎の値vの降順の順番を示す索引[d]を付加する。集約関数装置２mは索引[c]と索引[d]とに基づいて値vそれぞれがグループ毎の分位数であるか否かを示す分位数判定値[f]を求める。【選択図】図１
2014081475.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１台の集約関数装置を含み、a,b,Nを正の整数として、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートが可能な秘匿化方式Sによりグループを表すキーk=(k1,…,kN)を秘匿化した秘匿キー[k]=([k1],…,[kN])と、前記秘匿化方式Sにより前記キーkに対応する値v=(v1,…,vN)を秘匿化した秘匿値[v]=([v1],…,[vN])とを含む秘匿情報を用いて、前記グループ毎のa/(a+b)分位数を求める秘密計算システムであって、
前記集約関数装置は、
前記秘匿情報を、前記秘匿化方式Sにより前記秘匿値[v]を用いて前記値vの昇順に安定ソートをし、さらに前記秘匿化方式Sにより前記秘匿キー[k]を用いて前記キーkの昇順に安定ソートをし、整列済み秘匿情報を生成する整列部と、
前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの昇順の順番を示す索引[c]=([c1],…,[cN])を付加する第１階段計算部と、
前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの降順の順番を示す索引[d]=([d1],…,[dN])を付加する第２階段計算部と、
前記索引[c]と前記索引[d]とに基づいて、前記値v1,…,vNそれぞれが前記グループ毎のa/(a+b)分位数であるか否かを示す分位数判定値[f]=([f1],…,[fN])を求める分位数判定部と、
を備えることを特徴とする秘密計算システム。
【請求項２】
請求項１に記載の秘密計算システムであって、
前記分位数判定部は、
i=1,…,Nについて、a*(di+1+1)とb*ci+1の大小関係とb*ciとa*(di+1)の大小関係とに基づいて、前記値viがグループ毎のa/(a+b)分位数であるか否かを判定し、前記分位数判定値[f]=([f1],…,[fN])を求める
ことを特徴とする秘密計算システム。
【請求項３】
請求項２に記載の秘密計算システムであって、
前記分位数判定部は、
i=1,…,Nについて、次式を満たすか否かを判定し、次式を満たすiについて、前記分位数判定値[fi]をa/(a+b)分位数であるものとして設定する
【数１５】
2014081475.tif 000019
ことを特徴とする秘密計算システム。
【請求項４】
請求項２に記載の秘密計算システムであって、
前記分位数判定部は、
i=1,…,Nについて、次式を満たすか否かを判定し、次式を満たすiについて、前記分位数判定値[fi]をa/(a+b)分位数であるものとして設定する
【数１６】
2014081475.tif 000020
ことを特徴とする秘密計算システム。
【請求項５】
a,b,Nを正の整数として、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートが可能な秘匿化方式Sによりグループを表すキーk=(k1,…,kN)を秘匿化した秘匿キー[k]=([k1],…,[kN])と、前記秘匿化方式Sにより前記キーkに対応する値v=(v1,…,vN)を秘匿化した秘匿値[v]=([v1],…,[vN])とを含む秘匿情報を用いて、前記グループ毎のa/(a+b)分位数を求める集約関数装置であって、
前記秘匿情報を、前記秘匿化方式Sにより前記秘匿値[v]を用いて前記値vの昇順に安定ソートをし、さらに前記秘匿化方式Sにより前記秘匿キー[k]を用いて前記キーkの昇順に安定ソートをし、整列済み秘匿情報を生成する整列部と、
前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの昇順の順番を示す索引[c]=([c1],…,[cN])を付加する第１階段計算部と、
前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの降順の順番を示す索引[d]=([d1],…,[dN])を付加する第２階段計算部と、
前記索引[c]と前記索引[d]とに基づいて、前記値v1,…,vNそれぞれが前記グループ毎のa/(a+b)分位数であるか否かを示す分位数判定値[f]=([f1],…,[fN])を求める分位数判定部と、
を備えることを特徴とする集約関数装置。
【請求項６】
a,b,Nを正の整数として、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートが可能な秘匿化方式Sによりグループを表すキーk=(k1,…,kN)を秘匿化した秘匿キー[k]=([k1],…,[kN])と、前記秘匿化方式Sにより前記キーkに対応する値v=(v1,…,vN)を秘匿化した秘匿値[v]=([v1],…,[vN])とを含む秘匿情報を用いて、前記グループ毎のa/(a+b)分位数を求める秘密計算方法であって、
集約関数装置が、前記秘匿情報を、前記秘匿化方式Sにより前記秘匿値[v]を用いて前記値vの昇順に安定ソートをし、さらに前記秘匿化方式Sにより前記秘匿キー[k]を用いて前記キーkの昇順に安定ソートをし、整列済み秘匿情報を生成する整列ステップと、
前記集約関数装置が、前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの昇順の順番を示す索引[c]=([c1],…,[cN])を付加する第１階段計算ステップと、
前記集約関数装置が、前記秘匿キー[k]を用いて、前記整列済み秘匿情報に前記グループ毎の前記値vの降順の順番を示す索引[d]=([d1],…,[dN])を付加する第２階段計算ステップと、
前記集約関数装置が、前記索引[c]と前記索引[d]とに基づいて、前記値v1,…,vNそれぞれが前記グループ毎のa/(a+b)分位数であるか否かを示す分位数判定値[f]=([f1],…,[fN])を求める分位数判定ステップと、
を含むことを特徴とする秘密計算方法。
【請求項７】
請求項５に記載の集約関数装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号応用技術に関するものであり、特に入力データを明かすことなくグループ毎の分位数の計算を行う秘密計算技術に関する。
【背景技術】
【０００２】
近年、個人に関する様々な情報を容易に取得できる環境が整い、データ分析技術の進歩と相まって、個人に関する情報の活用への期待が高まっている。その一方で、個人情報保護やプライバシの観点から個人に関する情報は極めて慎重な取扱いが必要とされ、データの保護と活用をどう両立させるかが問題となっている。この問題の解決のため、データを秘匿したまま明かすことなく計算する様々な方法が提案されている。
【０００３】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、秘密計算と呼ばれる方法がある（例えば、非特許文献１参照）。非特許文献１に記載された方法では、３台の秘密計算装置に数値の断片を分散させるという暗号化を行い、数値を復元すること無く、加減算、定数和、乗算、定数倍、論理演算（否定、論理積、論理和、排他的論理和）、データ形式変換（整数、二進数）の結果を３台の秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。
【０００４】
秘密計算上でグループごとの統計値の計算を実現した方法として、例えば非特許文献２に記載された方法がある。非特許文献２の方法では、まず入力のグループを表す属性値でソートを行ってグループ分けをし、続いて各レコードを一つ前に参照したレコードと同一のグループであるかどうかを確認しながらグループごとの統計値を計算することにより、秘密計算上でのグループごとの統計値の計算を実現している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能３パーティ秘匿関数計算の再考”, CSS 2010.
【非特許文献２】五十嵐大, 千田浩司, 濱田浩気, 高橋克巳, “軽量検証可能３パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理”, SCIS 2011.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の秘密計算技術では計算可能な統計値が二項演算の反復で書けることが必要であり、中央値や四分位数を含む分位数の計算には適用することができないという課題があった。
【０００７】
この発明の目的は、入力データを明かすことなくグループごとの分位数の計算を行うことができる秘密計算技術を提供することである。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、この発明の秘密計算システムは、少なくとも１台の集約関数装置を含み、a,b,Nを正の整数として、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートが可能な秘匿化方式Sによりグループを表すキーk=(k1,…,kN)を秘匿化した秘匿キー[k]=([k1],…,[kN])と、秘匿化方式Sによりキーkに対応する値v=(v1,…,vN)を秘匿化した秘匿値[v]=([v1],…,[vN])とを含む秘匿情報を用いて、グループ毎のa/(a+b)分位数を求める。
【０００９】
集約関数装置は、整列部と第１階段計算部と第２階段計算部と分位数判定部とを備える。整列部は、秘匿情報を、秘匿化方式Sにより秘匿値[v]を用いて値vの昇順に安定ソートをし、さらに秘匿化方式Sにより秘匿キー[k]を用いてキーkの昇順に安定ソートをし、整列済み秘匿情報を生成する。第１階段計算部は、秘匿キー[k]を用いて、整列済み秘匿情報にグループ毎の値vの昇順の順番を示す索引[c]=([c1],…,[cN])を付加する。第２階段計算部は、秘匿キー[k]を用いて、整列済み秘匿情報にグループ毎の値vの降順の順番を示す索引[d]=([d1],…,[dN])を付加する。分位数判定部は、索引[c]と索引[d]とに基づいて、値v1,…,vNそれぞれがグループ毎のa/(a+b)分位数であるか否かを示す分位数判定値[f]=([f1],…,[fN])を求める。
【発明の効果】
【００１０】
この発明の秘密計算技術によれば、入力データを明かすことなくグループごとの分位数の計算を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】秘密計算システムの機能構成を例示する図である。
【図２】集約関数装置の機能構成を例示する図である。
【図３】秘密計算方法の処理フローを例示する図である。
【発明を実施するための形態】
【００１２】
実施形態の説明に先立ち、この明細書における表記方法および用語の定義について説明する。
【００１３】
＜表記方法＞
この発明で扱う値はすべて有限環ZN上の値とする。ベクトルaの第i要素をaiで参照する。a∈ZNを暗号化や秘密分散などの手段で秘匿化した値をaの秘匿文と呼び、[a]と表記する。また、aを秘匿文[a]の平文と呼ぶ。ベクトルvの各要素を秘匿化したベクトルを[v]と表記する。
【００１４】
【数１】
2014081475.tif 000003
【００１５】
は、天井関数であり、・以上の最小の整数を意味している。
【００１６】
【数２】
2014081475.tif 000004
【００１７】
は床関数であり、・以下の最大の整数を意味する。
【００１８】
【数３】
2014081475.tif 000005
【００１９】
は値aと値bの論理積を表す。
【００２０】
【数４】
2014081475.tif 000006
【００２１】
は値aと値bの論理和を表す。
【００２２】
【数５】
2014081475.tif 000007
【００２３】
は値aの否定を表す。
【００２４】
＜秘匿化方式＞
この発明では公知の秘匿化方式を用いる。秘匿化方式には、例えば暗号化や秘密分散などの手法が含まれる。この発明で用いる秘匿化方式は、秘密計算上で加算、減算、乗算、等号判定、比較、安定ソートの各演算が可能である必要があるが、これらの演算が可能であればどのような秘匿化方式であってもよい。
【００２５】
この発明において秘密計算上の加算とは、２つの値x,y∈ZNの秘匿文[x],[y]を入力とし、x+yの秘匿文[x+y]を計算する演算である。秘密計算上の減算とは、２つの値x,y∈ZNの秘匿文[x],[y]を入力とし、x-yの秘匿文[x-y]を計算する演算である。秘密計算上の乗算とは、２つの値x,y∈ZNの秘匿文[x],[y]を入力とし、x*yの秘匿文[x*y]を計算する演算である。秘密計算上の等号判定とは、２つの値x,y∈ZNの秘匿文[x],[y]を入力とし、x＝yの場合には1の秘匿文[1]を、x≠yの場合には0の秘匿文[0]を計算する演算である。秘密計算上の比較とは、２つの値x,y∈ZNの秘匿文[x],[y]を入力とし、x＜yの場合には1の秘匿文[1]を、その他の場合には0の秘匿文[0]を計算する演算である。秘密計算上の安定ソートとは、ソート対象とするベクトルvの秘匿文[v]とソートを行う際に基準とするキーのベクトルkの秘匿文[k]を入力とし、キーの値の順に従って整列し、整列の前後で各要素の対応が誰にもわからないように計算される演算である。ただし、整列に際して安定が保たれる、すなわち指定した列の値が同じ場合には元の順序が保たれるものとする。
【００２６】
この発明で適用可能な秘匿化方式について、具体的に例示する。例えば、秘匿化と復号と加算と減算と乗算は上述の非特許文献２に記載された方法を用いることができる。等号判定と比較は、例えば「Takashi Nishide, Kazuo Ohta, “Multiparty computation for interval, equality, and comparison without bit-decomposition protocol”, PKC, pp. 343-360, 2007.（参考文献１）」に記載された方法を用いることができる。安定ソートは、例えば「濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “秘匿関数計算上の線形時間ソート”, SCIS 2011.（参考文献２）」に記載された方法を用いることができる。したがって、非特許文献２と参考文献１と参考文献２に記載された方法を組み合わせることで、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートが可能な秘匿化方式を実現することができる。
【００２７】
この発明では秘密計算を実行する装置の台数は制限されないが、適用する秘匿化方式によって最低限必要な装置の台数が決定される。例えば、「Craig Gentry, “Fully homomorphic encryption using ideal lattices”, STOC 2009, pp. 169-178.（参考文献３）」などに記載されている完全準同型暗号を用いれば、１台の装置上で復号することなく加算と乗算を行うことが可能である。加算と乗算ができるとき、復号することなく等号判定と比較を行う方法が、「Ivan Damgard, Matthias Fitzi, Eike Kiltz, Jesper Buus Nielsen, Tomas Toft, “Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation”, TCC 2006, pp. 285-304.（参考文献４）」などに記載されている。比較ができるとき、復号することなくソートを行う方法が、「Kenneth E. Batcher, “Sorting Networks and Their Applications”, AFIPS Spring Joint Computing Conference 1968, pp. 307-314.（参考文献５）」などに記載されている。また、ソートが可能であれば安定ソートとすることが可能であることは一般的に知られている（例えば、「Wikipedia, “Sorting algorithm”, [online], [平成24年10月3日検索], インターネット<URL:http://en.wikipedia.org/wiki/Sorting_algorithm#Stability>（参考文献６）」参照）。したがって、１台の装置上で加算と減算と乗算と等号判定と比較と安定ソートの秘密計算を実現するためには、参考文献３と参考文献４と参考文献５の方法を組み合わせればよい。
【００２８】
また、２台の装置で復号することなく任意の関数を計算する方法が「Andrew Chi-Chih Yao, “How to Generate and Exchange Secrets (Extended Abstract)”, FOCS 1986, pp. 162-167.（参考文献７）」などに記載されており、その入力を秘密分散による分散値とすることで、２台の装置上で復号することなく加算と乗算を行うことが可能である。したがって、２台の装置上で加算と減算と乗算と等号判定と比較と安定ソートの秘密計算を実現するためには、参考文献７と参考文献４と参考文献５の方法を組み合わせればよい。
【００２９】
また、３台以上の装置上で復号することなく加算と乗算を行う方法は「Ronald Cramer, Ivan Damgard, Ueli M. Maurer, “General Secure Multi-party Computation from any Linear Secret-Sharing Scheme”, EUROCRYPT 2000, pp.316-334.（参考文献８）」などに記載されている線形秘密分散を用いれば可能である。したがって、３台以上の装置上で加算と減算と乗算と等号判定と比較と安定ソートの秘密計算を実現するためには、参考文献８と参考文献４と参考文献５の方法を組み合わせればよい。
【００３０】
なお、この発明では秘密計算上の論理積(∧)と論理和(∨)と否定(¬)の各論理演算も利用するが、これらの論理演算は一般的に加算と減算と乗算を組み合わせることで実現できる。例えば、値aと値bの論理積は、a∧b:=a*bにより実現できる。値aと値bの論理和は、a∨b:=a+b-a*bにより実現できる。値aの否定は、¬a:=1-aにより実現できる。また、この発明では秘密計算上の等号否定(≠)も利用するが、この演算は一般的に等号判定と否定を組み合わせることで実現できる。例えば、値aと値bの等号否定は、a≠b:=¬(a=b)により実現できる。
【００３１】
＜中央値、分位数＞
中央値とは、ある集合の真ん中の点の値である。集合の大きさnが奇数の場合には、中央値は(n+1)/2番目の要素の値である。nが偶数の場合には、n/2番目とn/2+1番目の中間に真ん中の点があるため複数の定義が存在するが、この発明ではnの偶奇に関わらず、
【００３２】
【数６】
2014081475.tif 000008
【００３３】
番目を小さい方の中央値と呼び、
【００３４】
【数７】
2014081475.tif 000009
【００３５】
番目を大きい方の中央値と呼び、単に中央値と書いた場合には小さい方の中央値を表していることとする。
【００３６】
ある集合をp:1-p(0＜p≦1)に内分する点の値をp分位数と呼ぶ。中央値と同様に分位数にも複数の定義が存在するが、この発明では、
【００３７】
【数８】
2014081475.tif 000010
【００３８】
番目の点の値をp分位数と呼ぶこととする。
【００３９】
＜発明のポイント＞
上述の通り、従来の秘密計算技術では、二項演算の反復で書ける統計値に関してのみグループごとの統計値を秘匿したまま計算することができた。一方で中央値や四分位数などの分位数計算を二項演算の反復で記述することは自明ではなく、従来技術では分位数計算を秘密計算で求めることはできなかった。
【００４０】
この発明では、最初にグループ内で昇順、降順に番号付けを行い、この番号をそれぞれb倍、a倍した値の大小関係が逆転する箇所がグループ内で上からa:bに内分する箇所になるという性質を用いる。大小関係が逆転する箇所は各レコードとその前後の大小関係を見れば検出可能であるため、効率よく任意の分位数を見つけ出すことができる。
【００４１】
［実施形態］
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００４２】
＜構成＞
図１を参照して、この実施形態の秘密計算システム１の構成例を説明する。秘密計算システム１は、少なくとも１台の集約関数装置２を含む。集約関数装置２の台数は、適用する秘匿化方式によって異なり、１台であっても複数台であってもよい。集約関数装置２の台数と適用可能な秘匿化方式についての詳細は上述の説明を参照されたい。以降の説明ではM台の集約関数装置２1，…，２Mを含む構成を例として説明している。M台の集約関数装置２1，…，２Mはネットワーク９に接続される。ネットワーク９は、接続される各装置が相互に通信可能なように構成されていればよく、例えばインターネットやＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などで構成することができる。なお、各装置は必ずしもネットワークを介してオンラインで通信可能である必要はない。例えば、集約関数装置２1，…，２Mへ入力する情報を磁気テープやＵＳＢメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体からオフラインで入力するように構成してもよい。
【００４３】
図２を参照して、秘密計算システム１に含まれる集約関数装置２の構成例を説明する。集約関数装置２は、制御部１０１、メモリ１０２、入力部１１、整列部１２、第１階段計算部１３、第２階段計算部１４、分位数判定部１５、出力部１６を備える。集約関数装置２は、さらに秘匿情報記憶部１９を備えてもよい。集約関数装置２は、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）等を有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。集約関数装置２は制御部１０１の制御のもとで各処理を実行する。集約関数装置２に入力されたデータや各処理で得られたデータはメモリ１０２に格納され、メモリ１０２に格納されたデータは必要に応じて読み出されて他の処理に利用される。秘匿情報記憶部１９は、例えば、ＲＡＭ（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリなどの半導体メモリ素子により構成される補助記憶装置、リレーショナルデータベースやキーバリューストアなどのミドルウェア、などにより構成することができる。
【００４４】
＜処理＞
図３を参照して、この実施形態の秘密計算システム１の動作例について手続きの順に従って詳細に説明する。
【００４５】
集約関数装置２m（1≦m≦M）の備える入力部１１へ秘匿キー[k]=([k1],…,[kN])と秘匿値[v]=([v1],…,[vN])とを含む秘匿情報が入力される（ステップＳ１１）。秘匿キー[k]は、グループを表すキーk=(k1,…,kN)を所定の秘匿化方式Sにより秘匿化したベクトルである。秘匿値[v]は、キーk=(k1,…,kN)に対応する値v=(v1,…,vN)を所定の秘匿化方式Sにより秘匿化したベクトルである。所定の秘匿化方式Sは、秘密計算上の加算と減算と乗算と等号判定と比較と安定ソートの各演算が可能な秘匿化方式である。秘匿化方式Sについての詳細は上述の説明を参照されたい。
【００４６】
入力部１１へ入力された秘匿情報は整列部１２へ入力される。もしくは、集約関数装置２mが秘匿情報記憶部１９を備えるように構成し、入力部１１に入力された秘匿情報を秘匿情報記憶部１９へ記憶するようにしても構わない。この場合には、任意の契機により整列部１２が秘匿情報記憶部１９から秘匿情報を読み込むように構成すればよい。
【００４７】
整列部１２は、秘匿情報を、秘匿化方式Sにより秘匿値[v]を用いて値vの昇順に安定ソートする。続いて、秘匿化方式Sにより秘匿キー[k]を用いてキーkの昇順に安定ソートする（ステップＳ１２）。これにより秘匿情報は、キーkの値（すなわち、グループ）は同じレコードが連続し、値vは同じグループの中で昇順に整列した状態になる。このように整列された秘匿情報を、以降の説明では整列済み秘匿情報と呼ぶ。
【００４８】
整列済み秘匿情報は第１階段計算部１３に入力される。第１階段計算部１３は、秘匿キー[k]を用いて、整列済み秘匿情報にグループ毎の値vの昇順の順番を示すベクトルである索引[c]=([c1],…,[cN])を付加する（ステップＳ１３）。整列済み秘匿情報のi番目のレコードが同じグループ内のj番目のレコードのとき、ci=j-1で表すことができる。索引[c]の付加はどのような方法で行なってもよいが、以下に示す「階段＋の計算」アルゴリズムを用いれば、計算量を少なくすることができ効率的に処理を行うことができる。
【００４９】
【表１】
2014081475.tif 000011
【００５０】
整列済み秘匿情報は第２階段計算部１４に入力される。第２階段計算部１４は、秘匿キー[k]を用いて、整列済み秘匿情報にグループ毎の値vの降順の順番を示すベクトルである索引[d]=([d1],…,[dN])を付加する（ステップＳ１４）。整列済み秘匿情報のi番目のレコードが同じグループ内のj番目のレコードのとき、di=j-1で表すことができる。索引[d]の付加はどのような方法で行なってもよいが、以下に示す「階段−の計算」アルゴリズムを用いれば、計算量を少なくすることができ効率的に処理を行うことができる。
【００５１】
【表２】
2014081475.tif 000012
【００５２】
この実施形態では、第１階段計算部１３と第２階段計算部１４が順に処理を行うものとして説明したが、第１階段計算部１３の処理と第２階段計算部１４の処理はいずれを先に行なってもよい。すなわち第２階段計算部１４により索引[d]を付加した後に第１階段計算部１３により索引[c]を付加してもよい。また、第１階段計算部１３の処理と第２階段計算部１４の処理を同時に並列に行なっても構わない。
【００５３】
索引[c]と索引[d]が付加された整列済み秘匿情報は分位数判定部１５へ入力される。分位数判定部１５は、索引[c]と索引[d]とに基づいて分位数判定値[f]=([f1],…,[fN])を求める（ステップＳ１５）。分位数判定値[f]=([f1],…,[fN])は、値v1,…,vNそれぞれが属するグループ毎のa/(a+b)分位数であるか否かを示す真偽値のベクトルf=(f1,…,fN)を秘匿化方式Sにより秘匿化したベクトルである。分位数の判定には、整列済み秘匿情報のi番目のレコードが同じグループ内のj番目のレコードであるとき、b*cjとa*djの大小関係が逆転するjがそのグループを上からa:bに内分する位置を表す、という性質を利用する。すなわち、p:1-pに内分する点であるp分位数を求める場合には、(1-p)*cjとp*djの大小関係が逆転するjを求め、jに対応するiについてfi=1とする。その他の場合にはfn=0(n≠i)とする。
【００５４】
より一般化してa/(a+b)分位数を求める場合を具体的に説明する。上述の通り、a/(a+b)分位数の定義は複数存在する。例えば、次式で表されるi番目の要素の値をa/(a+b)分位数とする定義がある。ただし、ngはグループの要素数である。この定義を以下の説明では第一の定義とする。
【００５５】
【数９】
2014081475.tif 000013
【００５６】
第一の定義でa/(a+b)分位数を求める場合には、次式を満たすiを求めればよい。fi=1とし、fn=0(n≠i)とする。
【００５７】
【数１０】
2014081475.tif 000014
【００５８】
また、次式で表されるi番目の要素の値をa/(a+b)分位数とする定義がある。ただし、ngはグループの要素数である。この定義を以下の説明では第二の定義とする。
【００５９】
【数１１】
2014081475.tif 000015
【００６０】
第二の定義でa/(a+b)分位数を求める場合には、次式を満たすiを求めればよい。fi=1とし、fn=0(n≠i)とする。
【００６１】
【数１２】
2014081475.tif 000016
【００６２】
小さい方の中央値を求める場合には、第一の定義でa/(a+b)分位数を求めた式においてa=1,b=1とすればよい。もしくは、次式を満たすiを求めてもよい。後者であれば比較の処理を等号判定に置き換えることができるため、より効率良く計算することができる。
【００６３】
【数１３】
2014081475.tif 000017
【００６４】
大きい方の中央値を求める場合には、第二の定義でa/(a+b)分位数を求めた式においてa=1,b=1とすればよい。もしくは、次式を満たすiを求めてもよい。後者であれば比較の処理を等号判定に置き換えることができるため、より効率良く計算することができる。
【００６５】
【数１４】
2014081475.tif 000018
【００６６】
分位数判定部１５が生成する分位数判定値[f]=([f1],…,[fN])は、出力部１６を介して出力される（ステップＳ１６）。
【００６７】
＜効果＞
上記のように、この発明の秘密計算技術は、入力を復号すること無く加算と減算と乗算と等号判定と比較と安定ソートの各演算を行うことができる秘匿化方式Sを用いており、これらの演算を組み合わせることで秘密計算上の分位数計算を実現する。
【００６８】
したがってこの発明の秘密計算技術によれば、入力された秘匿文を復号することなくグループ毎の分位数計算を行うことができる。
【００６９】
［プログラム、記録媒体］
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施例において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００７０】
また、上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００７１】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００７２】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００７３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００７４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００７５】
１  秘密計算システム
２  集約関数装置
９  ネットワーク
１１  入力部
１２  整列部
１３  第１階段計算部
１４  第２階段計算部
１５  分位数判定部
１６  出力部
１９  秘匿情報記憶部
１０１  制御部
１０２  メモリ
【図１】
2014081475.tif 000021
【図２】
2014081475.tif 000022
【図３】
2014081475.tif 000023