(57)【要約】      （修正有）【課題】複数の機関が保持している秘密データを入力として演算を適用した結果を、暗号文の送受信を行うことなく、かつ、無関係な情報を他に一切知られることなく、秘匿に計算する。【解決手段】２以上のデータ処理装置１００で構成され、１のデータ処理装置１００は、秘密データと固定暗号文列を記憶する記憶部１３０と、データ処理装置の一部は秘密データと固定暗号文列より送信パラメータ列と第１結果を計算する送信パラメータ列計算部１１１と、他のデータ処理装置により生成された第２結果を取得し第１結果と第２結果から最終結果を算出する最終結果算出部１１２とを有する。別のデータ処理装置１００は固定暗号文列の一部を復号鍵で復号し固定暗号文復号結果を計算する固定暗号文復号部１１３と他のデータ処理装置により生成された送信パラメータ列を取得し、固定暗号文復号結果とともに演算を適用し第２結果を生成する部分結果算出部１１４とを有する。【選択図】図６
2016109891.tif 000002
【特許請求の範囲】
【請求項１】
２以上のデータ処理装置で構成される秘匿計算情報交換システムであって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
を有し、
前記データ処理装置は，処理Aか処理Bのどちらかを一方を担当し、
前記処理Aを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算手段と、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出手段と、
を有し、
前記処理Bを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出手段と、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする秘匿計算情報交換システム。
【請求項２】
前記送信パラメータ列計算手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記送信パラメータ列となる値の列と前記第１結果となる値を計算可能である、
ことを特徴とする請求項１に記載の秘匿計算情報交換システム。
【請求項３】
前記固定暗号文復号手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記復号鍵となる値と前記固定暗号文復号結果となる値を計算可能である、
ことを特徴とする請求項１または２に記載の秘匿計算情報交換システム。
【請求項４】
前記処理Aを担当する前記データ処理装置は、
乱数データを記憶する乱数データ記憶手段をさらに有し、
前記送信パラメータ列計算手段は、
自己の保有する前記秘密データと前記固定暗号文列と前記乱数データを入力として前記送信パラメータ列となる値の列と前記第１結果となる値を計算する、
ことを特徴とする請求項１乃至３のいずれか１項に記載の秘匿計算情報交換システム。
【請求項５】
前記固定暗号文列は、
前記処理Aを担当する前記データ処理装置が
前記送信パラメータ列計算手段で計算する前記秘密データとなる可能性のある値とともに入力することである望まれる値の列にすることのできる前記乱数データを計算することを不可能にする暗号文列であること、
を特徴とする請求項４に記載の秘匿計算情報交換システム。
【請求項６】
前記秘密データは、
複数のデータブロックで構成されるベクトルデータである、
ことを特徴とする請求項１乃至５のいずれか１項に記載の秘匿計算情報交換システム。
【請求項７】
前記最終結果算出手段は、
自己の保有する前記秘密データに対応する前記ベクトルデータと前記処理Bを担当するデータ処理装置の保有する秘密データに対応する前記ベクトルデータの内積計算の結果を入力として適用したときの関数の出力と前記最終結果が等しいこと、
を特徴とする請求項６に記載の秘匿計算情報交換システム。
【請求項８】
前記最終結果算出手段は、
前記送信パラメータ列を自己の保有する暗号鍵で暗号化した送信パラメータ暗号文列を作成し、
前記部分結果算出手段は、
前記固定暗号文復号結果を自己の保有する暗号鍵で暗号化して他のデータ処理装置へ送信し、
処理Aを担当するデータ処理装置と処理Bを担当するデータ処理装置ともに計算結果を得ること、
を特徴とする請求項1乃至７のいずれか１項に記載の秘匿計算情報交換システム。
【請求項９】
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
を有し、
前記データ処理装置は，処理Aか処理Bのどちらかを一方を担当し、
前記処理Aを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算手段と、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出手段と、
を有し、
前記処理Bを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出手段と、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とするデータ処理装置。
【請求項１０】
他のデータ処理装置と連携してデータを処理するデータ処理装置によって使用される秘匿計算情報交換方法であって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
を有し、
前記処理Aを担当する前記データ処理装置によって使用される前記秘匿計算情報交換方法は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算ステップと、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出ステップと、
を有し、
前記処理Bを担当する前記データ処理装置によって使用される前記秘匿情報交換方法は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出ステップと、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする秘匿計算情報交換方法。
【請求項１１】
他のコンピュータと連携してデータを処理するコンピュータによって実行される秘匿計算情報交換プログラムであって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
を有し、
前記処理Aを担当する前記コンピュータによって使用される前記秘匿計算情報交換プログラムは、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算ステップと、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出ステップと、
を有し、
前記処理Bを担当する前記コンピュータによって使用される前記秘匿情報交換プログラムは、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出ステップと、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする秘匿計算情報交換プログラム。
【請求項１２】
請求項１１に記載の情報交換プログラムが記録されていることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の機関でそれぞれがもつデータを入力として演算を適用した結果をデータの内容を秘匿したまま計算するための秘匿計算情報交換システム、データ処理装置、秘匿計算情報交換方法、秘匿計算情報交換プログラム、および、記録媒体に関する。
【背景技術】
【０００２】
複数の機関がもつデータを入力として演算を適用し得られる結果をデータの内容を秘匿したまま計算し、結果を利用する方法が示されている。各機関がもつデータを複数のデータブロックからなるデータベクトルとし、適用する演算を内積計算とした場合の秘匿ベクトル内積計算を用いた相関ルールを導出する方法が非特許文献１に示されている。
【０００３】
ここで、内積演算とは２つの同じ長さのベクトルを入力として、同じベクトル位置のベクトル要素２つを乗算し乗算結果を算出し、全てのベクトル位置の乗算結果の総和を求める演算とする。内積演算の入力ベクトルをX、Yとするとき内積演算結果をX・Yと表す。
【０００４】
以下、オンラインショップP1とオンラインショップP2が顧客の物品購入の相関関係を顧客とのプライバシー同意契約に違反することなく導出する例を図○の概略図を参照して説明する。
【０００５】
最初に、オンラインショップP1とP2は図2、図３に示すような「クレジットカード番号表」を用意し、同じクレジット番号の顧客の利用金額を同じ位置に記録する２つのベクトル、「ベクトルX」、「ベクトルY」を用意する。
【０００６】
上記のベクトルXとベクトルYを入力として内積演算を適用し結果がある閾値より大きい場合にはオンラインショップP１とオンラインショップP２の顧客の購買行動には正の相関関係があると判断することができ、顧客の嗜好性が似ていることから、共同で商品開発することで、より顧客のニーズにあう商品を開発できる可能性があることがわかる。
【０００７】
このとき、多くの人数の購買情報からなる「ベクトルX」、「ベクトルY」を作成した上で、「ベクトルX」、「ベクトルY」の内容を明らかにせず、内積演算の結果のみを計算できれば、顧客と企業間にあるプライバシー合意契約に抵触しない。以降では、ベクトルX、Yの長さはnであるとし、また、その長さをベクトル次数と呼ぶ。
【０００８】
上記の秘匿計算を実行する手法が非特許文献１にて開示されている。まず、オンラインショップ１では、ベクトルXの各要素にオンラインショップ１がランダムに定めたn個の乱数によりベクトルXを秘匿した形に変形したベクトルX’をオンラインショップ２へ渡す。オンラインショップ２では、ベクトルX‘と自身のもつベクトルYの内積を計算する。CTYなるn次のベクトルに同じ値がn/r個ずつ連続するn次元のベクトル<R1’,R1’,…,R1’, R2’,…,R2’, Rr’,…Rr’>を加算して作成したベクトルVをオンラインショップ１に送信する。オンラインショップ１は自己の乱数ベクトルRと受信したベクトルVの内積を計算し、Jとする。次に機関P１は自己の乱数ベクトルをn/r個ずつ加算し、r次元のベクトルQ＝<R1+R2+…+Rn/r, Rn/r+1+…+R2n/r,…,R(n-n/r+1)+…+Rn>を計算し、オンラインショップ２へ送信する。オンラインショップ２は先に計算した内積値から自己のもつr次のベクトルT=(R1’,R2’,…,Rr’)とオンラインショップ１より受信したr次ベクトルQとの内積の値を減算することで値Kを計算する。機関P１と機関P２は値JとKを交換することで内積結果X・Yを計算することができる。
【０００９】
上記の手法では複数の秘匿データの加算後の結果のみを知らせることで加算前の値を復元できない状態に保ち、各ベクトルの値の安全性を保証できるように見える。
【００１０】
しかしながら、この方法には問題がある。オンラインショップ１は、ベクトルYの非零要素数が少ない場合、ベクトルYの半分の係数を明らかにできてしまう。また、同じベクトルXをオンラインショップ１が繰り返し用いた場合、相手が変数を指定し、ベクトルXに関する情報を引き出すことができるという安全上の問題がある。また、n/r回のn次元のベクトルの送受信を必要としており、安全性を向上させようとすると大量のベクトル情報を送受信することとなる効率上の問題もある。
【００１１】
上記の問題を解決するため、非特許文献２では公開鍵暗号方式を用いた秘匿計算プロトコルが提案されている。この方法では１つの平文を複数の異なる暗号文に暗号可能な確率暗号で、かつ、暗号文に対し演算を実施することで平文に対する演算も実行できる準同型性をもつ確率公開鍵暗号方式を用いる。
【００１２】
ここで、公開鍵暗号方式とは暗号化するときに使う鍵と復号するときに使う鍵が異なるため、暗号化に利用する鍵を公開することで、誰でも暗号文を作成できるが、復号は復号するための鍵（秘密鍵）を知っている人以外には困難である非対称な暗号方式である。また、確率暗号とは、同一の平文を同一の鍵で暗号化すると必ず同一の暗号文を生成するRSA暗号方式のような確定暗号とは異なり、暗号化に毎回異なる乱数を利用可能なため、同じ平文であっても鍵の種類と同程度の数の暗号文に変換可能な暗号方式である。上記の性質を満たす公開鍵暗号方式の１つにElGamal暗号方式がある。確率公開鍵暗号方式を使った秘匿ベクトル内積方法では、暗号文に対して、演算を適用することで平文に演算を施せるという準同型性を利用し、かつ、確率的に暗号文を変化させることで、暗号文に対してどのような演算が適用されたのかを特定することを困難にしながら、平文に対して演算を施して、秘匿ベクトルの内積を計算する。
【００１３】
以下、先の例と同じように機関P１とP２は図２、図３に示すような各顧客の利用金額を把握しているオンラインショップP１とオンラインショップP２とする。各機関は各顧客の利用金額を秘密データとして保持すると仮定する。
【００１４】
最初に、機関P１とP２は図４、図５に示すような秘密ベクトルXとYを用意する。ここで、機関P１は各顧客の利用金額、機関P２は各顧客の利用金額をベクトルの要素としてもつこととする。以降では、顧客を１からnで番号付け、ベクトルの大きさをnとし、各ベクトルの要素をXi、Yiと表す（ここでiは１以上n以下の整数とする）。
【００１５】
次に、機関P１は自分の公開鍵K＝g S (mod P) （ここgは原子元、Pは素数、Sは秘密鍵とする。以降暗号の計算では（mod P）を省略する）を公開した上で、各顧客の利用金額Xiの暗号値（2X]Kri, gri）(ここで、riは乱数)からなる暗号文ベクトルを作成し、機関P２に送信する。
【００１６】
機関P１より暗号文ベクトルを受け取った機関P２は暗号文の１項目、２項目ともにパラメータYiを指数乗したのち、各暗号文の１項目の要素をすべて乗算し、２項目の要素同士をすべて乗算した１つの暗号文（2X1Y1+X2Y2+…+XnYn Kr1Y1+r2Y2+…+rnYn, gr1Y1+r2Y2+…+rnYn）を作成し、最後に乱数Rで撹乱した暗号文（2X1Y1+X2Y2+…+XnYn Kr1Y1+r2Y2+…+rnYn+R, gr1Y1+r2Y2+…+rnYn+R）に変換し、変換後の暗号文を機関P２へ送信する。
【００１７】
暗号文を受け取った機関P１は暗号文２項組を復号することにより値E=Σ1≦i≦n XiYi+Rを得る。値Eと値Rを機関P１、P２で交換することにより、互いに内積結果を計算することができる。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】Jaideep Vaidya and Chris Clifton, “Privacy preserving association rule mining in vertically partitioned data,” Proceeding of the 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD2002), pp.639-644, 2002.
【非特許文献２】Bart Goethals, Sven Laur, Helger Lipmann ad Taneli Mielikainen, “On privacy scalar product computation for privacy-preserving data mining,” Priceeding of the 7th Annual Information Security and Cryptology (ICISC2004), pp.104-120, 2004.
【発明の概要】
【発明が解決しようとする課題】
【００１９】
しかしながら、非特許文献２の方法にも問題がある。機関P１はベクトル情報ごとにデータを暗号化する必要があり、その暗愚かは指数乗の計算のような大きな計算コストを必要とするという問題である。また、機関P２もベクトル次数個の自己のもつ情報を指数乗の大きな計算コストを費やし機関P２の公開鍵で暗号化した後、機関p１より受信したベクトル次数個の暗号文と乗算しなければならず、大きな計算コストを必要とする。
【００２０】
さらに、非特許文献２の方法のような公開鍵暗号方式を用いる方法は相対的な機密性の保証しか持っていない。非特許文献２で提案されている方法に用いられる可能性が高いElGamal暗号方式はDiffie-Hellman問題と呼ばれる難しいと思われている問題が効率的に解けない限り安全だと証明されているが、Diffie-Hellman問題が本当に効率的に解くことができないかは、現在まで証明されていない。また、Diffie-Hellman問題よりも難しい問題である可能性の高い問題として離散対数問題が知られており、ElGamal暗号方式に依る暗号プロトコルは相対的にみても弱い機密性しか備えていない可能性がある。
【００２１】
本発明はこれらの問題を鑑みてなされたものであり、指数乗計算のような大きな計算コストを必要とせず、かつ、暗号文を通信しないことにより、一切の情報を相手に漏らすこと無く演算結果を計算することができる秘匿計算情報交換システム、データ処理装置、秘匿計算情報交換方法、秘匿計算情報交換プログラム、および、該秘匿計算情報交換プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２２】
上記の目的を達成するため、本発明の第１の観点にかかる秘匿計算情報交換システムは、
２以上のデータ処理装置で構成される秘匿計算情報交換システムであって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
を有し、
前記データ処理装置は，処理Aか処理Bのどちらかを一方を担当し、
前記処理Aを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算手段と、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出手段と、
を有し、
前記処理Bを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出手段と、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする。
【００２３】
前記送信パラメータ列計算手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記送信パラメータ列となる値の列と前記第１結果となる値を計算、
できてもよい。
【００２４】
前記固定暗号文復号手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記復号鍵となる値と前記固定暗号文復号結果となる値を計算可能で、
あってもよい。
【００２５】
前記処理Aを担当する前記データ処理装置は、
乱数データを記憶する乱数データ記憶手段をさらに有し、
前記送信パラメータ列計算手段は、
自己の保有する前記秘密データと前記固定暗号文列と前記乱数データを入力として前記送信パラメータ列となる値の列と前記第１結果となる値を計算する、
としてもよい。
【００２６】
前記固定暗号文列は、
前記処理Aを担当する前記データ処理装置が
前記送信パラメータ列計算手段で計算する前記秘密データとなる可能性のある値とともに入力することである望まれる値の列にすることのできる前記乱数データを計算することを不可能にする暗号文列である、
としてもよい。
【００２７】
前記秘密データは、
複数のデータブロックで構成されるベクトルデータである、
としてもよい。
【００２８】
前記最終結果算出手段は、
自己の保有する前記秘密データに対応する前記ベクトルデータと前記処理Bを担当するデータ処理装置の保有する秘密データに対応する前記ベクトルデータの内積計算の結果を入力として適用したときの関数の出力と前記最終結果が等しいこと、
としてもよい。
【００２９】
前記最終結果算出手段は、
前記送信パラメータ列を自己の保有する暗号鍵で暗号化した送信パラメータ暗号文列を作成し、
前記部分結果算出手段は、
前記固定暗号文復号結果を自己の保有する暗号鍵で暗号化して他のデータ処理装置へ送信し、
処理Aを担当するデータ処理装置と処理Bを担当するデータ処理装置ともに計算結果を得ること、
としてもよい。
【００３０】
上記目的を達成するため、本発明の第２の観点にかかるデータ処理装置は、
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
を有し、
前記データ処理装置は，処理Aか処理Bのどちらかを一方を担当し、
前記処理Aを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算手段と、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出手段と、
を有し、
前記処理Bを担当する前記データ処理装置は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出手段と、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする。
【００３１】
上記目的を達成するため、本発明の第３の観点にかかる秘匿計算情報交換方法は、
他のデータ処理装置と連携してデータを処理するデータ処理装置によって使用される秘匿計算情報交換方法であって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
を有し、
前記処理Aを担当する前記データ処理装置によって使用される前記秘匿計算情報交換方法は、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算ステップと、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出ステップと、
を有し、
前記処理Bを担当する前記データ処理装置によって使用される前記秘匿情報交換方法は、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出ステップと、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、
ことを特徴とする。
【００３２】
上記目的を達成するため、本発明の第４の観点にかかる秘匿計算情報交換プログラムは、
他のコンピュータと連携してデータを処理するコンピュータによって実行される秘匿計算情報交換プログラムであって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
を有し、
前記処理Aを担当する前記コンピュータによって使用される前記秘匿計算情報交換プログラムは、さらに、
自己の保有する前記秘密データと前記固定暗号文列を入力として値の列である送信パラメータ列と第１結果を計算する送信パラメータ列計算ステップと、
他のデータ処理装置が生成する第２結果を取得し、前記第１結果と前記第２結果を統合し最終結果を算出する最終結果算出ステップと、
を有し、
前記処理Bを担当する前記コンピュータによって使用される前記秘匿情報交換プログラムは、さらに、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
他のデータ処理装置の前記送信パラメータ列計算手段により生成された前記送信パラメータ列と前記固定暗号文復号結果を入力として第２結果を算出する部分結果算出ステップと、
を有し、
前記処理Aを担当する前記データ処理装置が記憶する前記固定暗号文列は、
前記処理Bを担当する前記データ処理装置が記憶する前記固定暗号文列と同一である、ことを特徴とする。
【００３３】
上記目的を達成するため、本発明の第５の観点にかかる記録媒体は、
上記秘匿計算情報交換プログラムが記録されていることを特徴とする。
【発明の効果】
【００３４】
本発明によれば、暗号文の送受信を一切行うことなく、かつ、無関係な情報を他に知られることなく、秘匿に計算を行うことができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態１にかかる秘匿計算情報交換システムの構成例を示すブロック図である。
【図２】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P1がもつ顧客ごとの利用金額を列状に並べた表である。
【図３】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P２がもつ顧客ごとの利用金額を列状に並べた表である。
【図４】図２に示した表を要約し作成された機関P１がもつ秘密ベクトルXである。
【図５】図３に示した表を要約し作成された機関P２がもつ秘密ベクトルYである。
【図６】図１に示す制御部によって実現される機能を示す機能ブロック図である。
【図７】本発明の実施の形態１にかかる「情報交換処理A」と「情報交換処理B」のパラメータと固定暗号文列が満たすべき条件を示す前提条件説明図である。
【図８】本発明の実施の形態１にかかる「情報交換処理A」と「情報交換処理B」の概要を説明するための処理概要図である。
【図９】本発明の実施の形態１にかかる「情報交換処理A」と「情報交換処理B」を説明するためのフローチャートである。
【図１０】図９に示す「情報交換処理A」で実行される「送信パラメータ列計算処理」と「情報交換処理B」で実行される「固定暗号文復号処理」を説明するためのフローチャートである。
【図１１】図９に示す「情報交換処理A」で実行される「最終結果算出処理」と「情報交換処理B」で実行される「部分結果算出処理」を説明するためのフローチャートである。
【図１２】本発明の実施の形態２にかかる秘匿計算情報交換システムの構成例を示すブロック図である。
【図１３】本発明の実施の形態２にかかる「情報交換処理A」と「情報交換処理B」を説明するためのフローチャートである。
【図１４】本発明の実施の形態２にかかる「送信パラメータ計算処理」と「固定暗号文復号処理」を説明するためのフローチャートである。
【図１５】本発明の実施の形態２にかかる「部分結果１算出処理」と「部分結果２算出処理」を説明するためのフローチャートである。
【図１６】本発明の実施の形態２にかかる「最終結果算出処理」を説明するためのフローチャートである。
【発明を実施するための形態】
【００３６】
（実施の形態１）
本実施の形態の秘匿計算情報交換システム１は、機関P１もしくは機関P２のもつ秘密データX、Yにおいて第三者機関の助けなしに、かつ、暗号文の送受信を一切行うことなくXとYを入力として関数を適用した結果を秘匿に計算するための情報交換システムである。以下、秘匿計算情報交換システム１について図面を参照しながら説明する。まず、図６を参照して秘匿計算情報交換システム１の構成について説明する。
【００３７】
秘匿計算情報交換システム１は、図６に示すように、機関P１と機関P２それぞれに設置された２台のデータ処理装置１００と、それらを接続する通信線２００とで構成される。２台のデータ処理装置１００は、通信線２００を通じて互いにデータを送受信することで連携して１つの処理を実行する。
【００３８】
データ処理装置１００は、例えば、PCサーバやメインフレームなどで構成され、顧客情報等の秘密データを格納している。データ処理装置１００は図１に示すように、制御部１１０、通信部１２０、記憶部１３０、操作部１４０、インタフェース部１５０から構成される。
【００３９】
制御部１１０は、CPU (Central Processing Unit) などで構成され、データ処理装置１００の各部を制御する。また、制御部１１０は操作部１４０から「情報交換処理A開始通知」を受信すると、後述の「情報交換処理A」を、「情報交換処理B開始通知」を受信すると、後述の「情報交換処理B」を実行する。「情報交換処理A」は２台のデータ処理装置どちらか一方で実行され、別のデータ処理装置で「情報交換処理B」が実行される。
【００４０】
通信部１２０はLANコネクタや送受信処理用のプロセッサなどから構成され、通信線２００を通じて外部の装置（例えばパーソナルコンピュータ）との通信を行う。
【００４１】
記憶部１３０は、ハードディスクやRAM (Random Access Memory) などの記憶装置から構成され、データ処理装置１００の動作に必要なデータ（例えば「秘密データ」や「固定暗号文列」）などを記憶する。
【００４２】
ここで「秘密データ」とは、「顧客情報」や「秘密ベクトル」などの非公開の情報のことをいう。また、「顧客情報」とは各機関を利用した顧客の情報であり、「秘密ベクトル」とは、複数の機関が共通してしっているIDによって顧客ごとの情報を並び替え、ある機関が持っている秘密ベクトルの各ベクトル位置の情報を提供顧客と別の機関が持っている秘密ベクトルの同じベクトル位置の情報を提供した顧客が同じであるようなベクトル位置ごとに格納されている情報に関して、双方の機関で共通した認識を得て整列された情報とする。
【００４３】
また「固定暗号文列」とは秘匿計算を行う上でそれぞれのデータ処理装置１００が相手に送信する情報を計算するために用いる数値の列であり、「情報交換処理A」、「情報交換処理B」を開始する以前に双方のデータ処理装置１００が共通の数値の列を「固定暗号文列」として記憶部１３０に格納している。「固定暗号文列」はいくつかの条件を満たすよう選択される（詳細は後述する）。
【００４４】
操作部１４０はデータ処理装置１００の外面上に構成されている各種ボタンなどによって構成される。ユーザにより所定のボタンが押されると、制御部１１０に対し「情報交換処理A開始通知」か「情報交換処理B開始通知」を送信する。情報交換処理A開始通知、及び、情報交換処理B開始通知は、秘匿計算情報交換処理を開始するためのトリガーとなるデータである。
【００４５】
インタフェース部１５０は、例えばUSB (Universal Serial Bus) コネクタやビデオ出力端子などから構成され、外部の装置（例えばPCやモニタなど）へ処理結果を送信する。
【００４６】
以上、秘匿計算情報交換システム１の構成について説明したが、次に、制御部１１０の備える機能について、図６の機能ブロック図、および、図８の処理概要図を参照しながら説明する。
【００４７】
制御部１１０は複数の機関で秘匿計算を実行するため「秘匿計算情報交換処理」を実行する。秘匿計算情報交換処理は操作部１４０からの「情報交換処理A開始通知」および「情報交換処理B開始通知」により開始される。以下に説明する各機能は秘匿計算情報交換処理を実現するための機能である。秘匿計算情報交換処理は情報交換処理Aと情報交換処理Bから成る。まず、始めに情報交換処理Aを実現する機能を説明し、次に情報交換処理Bを実現する機能を説明する。
【００４８】
送信パラメータ列計算部１１１は自己の秘匿データとあらかじめ知っている固定暗号文列より他の機関のデータ処理装置１００に送信する送信パラメータ列σと自己が後に最終結果を得るために用いる第１結果Jを計算する。
【００４９】
最終結果算出部１１２は他機関のデータ処理装置１００と連携して、自己の送信パラメータ列σと相手機関の計算した計算パラメータ列の内積演算の結果と、相手機関が固定暗号文列の一部を相手機関の復号鍵で復号することで得られる値とに演算を施すことにより得られる第二結果Iと自己の保有する第一結果Jを統合することで最終結果NEW_XYを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する。
【００５０】
固定暗号文復号部１１３はあらかじめ知っている固定暗号文列の一部であるGiを復号するために、残りの固定暗号文列と自己の保有する秘密ベクトルYを用いて復号鍵KBを用いて固定暗号文列の一部Giを復号し、固定暗号文復号値Hを生成する。また、計算パラメータ列を計算する。
【００５１】
部分結果算出部１１４は他機関のデータ処理装置１００と連携して、相手機関の送信パラメータ列と自己の計算した計算パラメータ列の内積演算の結果と固定暗号文復号値Hを統合し第二結果Iを生成する。
【００５２】
以上、制御部１１０の機能について説明したが、次に、データ処理装置１００で実行される「秘匿計算情報交換処理」について説明する。秘匿計算情報交換処理は「情報交換処理A」と「情報交換処理B」により構成されるため、始めに情報交換処理Aについて説明し、次に情報交換処理Bについて説明する。機関P１に設置されたデータ処理装置１００は「情報交換処理A」を実行し、機関P２に設置されたデータ処理装置１００は「情報交換処理B」を実行することで、秘匿データに関する情報を一切相手に知られることなく、かつ、暗号文の送受信を行うことなく秘匿計算を実行し、機関P１は望まれる関数を機関P１の秘密ベクトル、機関P２の秘密ベクトルに適用したときに得られるであろう同じ値を得る。
【００５３】
制御部１１０は操作部１４０から「情報交換処理A開始通知」を受信すると図９に示す「情報交換処理A」を開始する。この「情報交換処理A」は大きく２つのステップで構成される。以下、図８の処理概要図を参照しながら「情報交換処理A」の概要について説明する。なお、以下に説明する各ステップは２台のデータ処理装置１００の一方（図８では機関P１）で実行される。「情報交換処理B」の概要は、「情報交換処理A」の概要の説明に続き、説明する。
【００５４】
最初にステップS１００の送信パラメータ列計算処理について説明する。制御部１１０は自己の秘密データであり、「秘密ベクトルX」と予め公知である暗号文列（C1i, C2i, C3i, C4i, D1i, D2i, D3i D4i, F1i, F2i, F3i, F4i, C5i, C6i, C7i, C8i, D5, D6i, D7i, D8i, F5, F6i, F7i, F8i, Gi）(1≦i≦n)を入力とする。ここで、nはベクトルの長さであるベクトル次数である。制御部１１０は上記を入力として、送信パラメータ列σと第１結果Jを計算する。
【００５５】
ここで１つ疑問が生じる。暗号文列（C1i, C2i, C3i, C4i, D1i, D2i, D3i D4i, F1i, F2i, F3i, F4i, C5i, C6i, C7i, C8i, D5, D6i, D7i, D8i, F5, F6i, F7i, F8i, Gi）(1≦i≦n)と送信パラメータ列σと第１結果Jをどのように関連づけるかという疑問である。本実施の形態ではあたかも固定暗号文列を２つの機関が送受信したかのようにみなし、それらの暗号文列を得る暗号鍵等の秘密パラメータを計算することで、送信パラメータ列σと第１結果Jを計算する。その具体的方法は後に詳しく述べる。
【００５６】
次にステップS４００の最終結果算出処理について説明する。制御部１１０は計算した送信パラメータ列σを相手機関へ送信し、相手機関より送信パラメータ列σと相手機関が計算した計算パラメータ列を入力とする内積演算の結果と固定暗号文復号結果Hに演算を施した値である第２結果Iを取得し、自己の保有する第１結果Jと相手機関から取得した第２結果Iを統合することで最終結果New_XYを算出する。
【００５７】
以上の処理（ステップS１００とS４００）により、情報交換処理Aは完了する。次に情報交換処理Bについて説明する。
【００５８】
最初にステップS２００の固定暗号文復号処理について説明する。制御部１１０は公知の固定暗号文列の一部Gi を復号鍵KBi (１≦i≦n )で復号し、その復号値に演算を施した値Hを計算する。さらに、計算パラメータ列δを計算する。
【００５９】
ここでも１つ疑問が生じる。復号鍵KBiは以前に機関P２にて記憶されていないし、固定暗号文列の一部であるGiを暗号化した鍵に対応する復号鍵である保証もないので、固定暗号文列を復号鍵KBiにて復号することに意味はないのでないかという疑問である。しかしながら、本実施の形態では、完全な機密性を備える暗号プロトコルを基本とすることにより、現在の秘密ベクトルYに応じた固定暗号文列と同じ暗号文列を生じる復号鍵KBiを計算することができる。その具体的方法は後に詳しく述べる。
【００６０】
ステップS２００の処理が完了すると、次に、制御部１１０はステップS３００の部分結果算出処理を実行する。制御部１１０は相手機関P１により生成された送信パラメータ列σを取得する。送信パラメータ列σと自己が計算した計算パラメータ列δを入力として内積演算を適用して得られた値と固定暗号文復号値Hに演算を施すことで、第２結果Iを生成する。最後に、第２結果Iを相手機関P１に送信し処理を完了する。
【００６１】
以上、秘匿計算情報交換処理の概要について説明したが、次に、秘匿計算情報交換処理を構成する情報交換処理A、情報交換処理Bについて詳細に説明する。最初に、情報交換処理AのステップS１００の「送信パラメータ列計算処理」、次に情報交換処理BのステップS２００の「固定暗号文復号処理」、ステップS３００の「部分結果算出処理」を説明し、最後に情報交換処理AのステップS４００の「最終結果算出処理」について説明する。
【００６２】
ステップS１００は図１０の「送信パラメータ列計算処理」に対応している。以下、図１０のフローチャートおよび図８の処理概要図を参照して「送信パラメータ列計算処理」について説明する。なお、送信パラメータ列計算処理は送信パラメータ列計算部１１１で実行される。また、送信パラメータ列、固定暗号文列における前提条件について図７の前提条件説明図を参照して説明する。
【００６３】
送信パラメータ列計算部１１１は秘密ベクトルXを記憶部１３０から読み出す。また、秘密入力として記憶している乱数ベクトルΓも記憶部１３０より読み出す（ステップS１０１）。
【００６４】
送信パラメータ列計算部１１１は次に秘密ベクトルXと乱数ベクトルΓを入力として送信パラメータ列σと第１結果を計算する（ステップS１０２）。
【００６５】
計算するために基本となっている暗号プロトコルにより規定されている暗号文列（図７(a)）とパラメータ群（図７(d)）との関係を、暗号文を全て定数、秘密ベクトルX、乱数ベクトルΓの要素を全て定数としたときの連立一次方程式とみなし、連立一次方程式の解よりパラメータ群を計算する（図８(a)）、次にパラメータ群の計算値を基本となる暗号プロトコルに従って組合せ、送信パラメータ列σと第１結果Jを生成する（図８(c),）。
【００６６】
ここで基本となっている暗号プロトコルが完全な機密性を提供し、どのような秘密ベクトルXと乱数ベクトルΓの組合せに対しても、決められた暗号文列を生成するようなパラメータ群の設定を可能とするなら、暗号文を固定として公知とすることにより、暗号文列を相手機関と送受信したときに得られる計算結果と同じ計算結果を得るパラメータ群を逆算することができ、暗号文列を送受信することなく相手に情報を送信した効果を得ることができる。
【００６７】
また、逆算したパラメータ群を複数組み合わせることにより、送信パラメータ列σを生成することで、送信パラメータ列から相手機関が秘密ベクトルXの情報を連立一次方程式の関係より推測することは困難となる。さらに、乱数ベクトルΓの値の組合せにより、送信パラメータ列σの内容が変化するような基本暗号プロトコルを用いることにより、同じ秘密ベクトルXでも様々な送信パラメータ列を構成可能とする。この場合、相手機関P２は送信パラメータ列σより秘密ベクトルYの情報を推測することはさらに困難となる。
【００６８】
次に、情報交換処理Bを担当するデータ処理装置１００で実行されるステップS２００の処理について説明する。ステップS２００は図１０の「固定暗号文復号処理」に対応している。以下、図１０のフローチャートおよび図８の処理概略図を参照して「固定暗号文復号処理」について説明する。なお、固定暗号文復号処理は固定暗号文復号部１１３で実行される。また、固定暗号文列、計算パラメータ列に関わるパラメータ群に関する前提条件を図７の前提条件説明図を参照して説明する。
【００６９】
固定暗号文復号部１１３は秘密ベクトルYを記憶部１３０から読み出す（ステップS２０１）。
【００７０】
次に、固定暗号文復号部１１３は秘密ベクトルYと固定暗号文の一部を入力として残りの固定暗号文列を復号するための復号鍵KBiを計算する（ステップS２０２）。
【００７１】
秘密ベクトルYと固定暗号文列の一部を入力として復号鍵KBiを計算するために、基本となっている暗号プロトコルにより規定されているパラメータ群（図７(e)）との関係を、暗号文列を定数値のベクトル、秘密ベクトルYを定数値のベクトル、暗号鍵KBiを変数としたときの連立一次方程式とみなし、連立一次方程式の解より復号鍵KBi（例の場合は暗号鍵に対応する復号鍵は暗号鍵と同じである）と計算パラメータ列δ(図８ではρ／γ)を計算する（図８（b））。
【００７２】
ここでも基本となっている暗号プロトコルが完全な機密性を提供し、どのような秘密ベクトルYに対しても、決められた暗号文列を生成するような暗号鍵を設定可能とするなら、暗号文を固定として公知とすることにより、暗号文列を相手機関と送受信したときに得られる暗号文復号結果と同じ復号結果を得る暗号鍵に対応する復号鍵KBiを、暗号文列を送受信することなく逆算することができる。
【００７３】
上記のように完全な機密性を提供するためには、任意の暗号文を固定暗号文列に設定できない場合がある。よって、情報交換処理Aの送信パラメータ列計算部１１１が秘密ベクトルX、乱数ベクトルΓの任意の値の組合せにおいて、送信パラメータ列σを計算可能であり、かつ、情報交換処理Bの固定暗号文復号部１１３が秘密ベクトルYの任意の値の組合せにおいて復号鍵KBiを計算可能でなければならない。図８の処理概略図の基本プロトコルにおいて上記を可能とする固定暗号文列が満たさなければならない条件の例を図７(b)に示す。これらの条件を満たすよう固定暗号文列は作成されているものとする（図7）。
【００７４】
固定暗号文復号部１１３は計算した復号鍵KBiにより固定暗号文列の一部である暗号文Giを復号し、固定暗号文復号値Hを計算し（S２０３）、固定暗号文復号値Hと計算パラメータ列δを記憶部１３０に記録する（S２０４）。固定暗号文の復号が完了すると制御部１１０は図９のフローに戻り、ステップS３００の部分結果算出処理を開始する。部分結果算出処理は部分結果算出部１１４によって実行される。以下、図１1のフローチャートおよび図８の処理概要図を参照して「部分結果算出処理」について説明する。
【００７５】
部分結果算出部１１４は他機関のデータ処理装置１００により作成された送信パラメータ列を取得する（S３０１）。次に送信パラメータ列σと自己が計算した計算パラメータ列δを入力とする内積演算の結果を計算し、計算結果を内積値σ・δとする（S３０２）。
【００７６】
次に部分結果算出部１１４は内積値σ・δと固定暗号文復号値Hに演算を施し得られた結果を第２結果Iとし（S３０３）、第２結果Iを相手機関へ送信する（S３０４）。
【００７７】
第２結果の送信が完了すると、情報交換処理Bを担当しているデータ処理装置１００の制御部１１０は図９のフローに戻り、処理を終了する。次に情報交換処理Aを担当しているデータ処理装置１００の最終結果算出部１１２で実行されるステップS４００の処理について説明する。ステップS４００は図１１の「最終結果算出処理」に対応している。以下、図１１のフローチャートおよび図８の処理概要図を参照して「最終結果算出処理」について説明する。
【００７８】
最終結果算出部１１２は自己が計算した送信パラメータ列σを機関P２に送信し（S４０１）、相手機関より第２結果Iを取得する（S４０２）。
【００７９】
最後に、最終結果算出部１１２は自己が計算した第１結果Jと相手機関より取得した第２結果Iを統合し、最終結果New_XYを算出する（S４０３）。
【００８０】
以上の処理により最終結果の算出が完了すると、次に、制御部１１０は図9のフローに戻り、最終結果をインタフェース部１５０を通じて外部の装置へ出力する（ステッップS４００）。
【００８１】
ここで、情報交換処理A,Bそれぞれを担当するデータ処理装置１００が相手機関に送信する情報を利用して他機関が勝手に秘匿計算を行うことができるという危険が存在しないかという疑問が生じる。しかしながら、本実施の形態では、外部に送信する情報、固定暗号文列を制約することにより、上記の危険を排除する。双方の機関において、外部に送信した情報を利用して、秘匿計算を実行できないものとする仕組みを図７の前提条件説明図を参照しながら以下に説明する。
【００８２】
情報交換処理Aを担当するデータ処理装置１００が外部に送信する情報は送信パラメータ列のみである。秘匿計算を行うには送信パラメータσと第１結果Jがなければならないため、送信パラメータ列σしか知らない外部の機関で勝手に計算結果を得ることはできない。
【００８３】
一方、情報交換処理Bを担当するデータ処理装置１００が外部に送信する情報のみを利用して、情報交換処理Aを担当するデータ処理装置１００は秘匿計算の結果を算出していることから、情報交換処理Aを担当するデータ処理装置１００で別の秘密ベクトルXの値の組合せに対する計算結果を計算することができる危険がある。このような勝手な計算を行うには情報交換処理Aを担当する機関P１が送信パラメータ列を固定にして、計算したい秘密ベクトルXの値の組合せにおいて固定した送信パラメータ列を生成できるようなパラメータ群を逆算できればよい。しかしながら、このような逆算を防ぐことのできる固定暗号文列を作成することが可能である。
【００８４】
例えば、図８の処理概略図の例の場合、情報交換処理Aを担当する機関P1が送信パラメータ列を固定として、パラメータ群を逆算できるために固定暗号文列が満たすべき条件（図７(c)）と、情報交換処理Bを担当する機関P２が機密性を提供するために秘密ベクトルYに設計可能な任意の値の組合せに対して復号鍵KBiを設定可能にするために固定暗号文列が満たすべき条件（図７(b)）は矛盾している。よって、情報交換処理Bを担当する機関P２の情報を守るよう固定暗号文列を決定したなら、情報交換処理Aを担当する機関P１はその固定暗号文列と第２計算結果Iを使って、別の秘匿計算を勝手に行うことができない。
【００８５】
本実施の形態によれば、一切の暗号文の送受信を行うことなく、あたかも暗号文の送受信を行ったと同じ暗号文復号値を取得することが可能になる。また、最終結果を算出するのに適切な部分解を２つの機関で固定暗号文列を仲介情報として生成することができる。
【００８６】
また、送信パラメータ列を作成するときに秘密ベクトルXだけでなく乱数ベクトルΓを用いることにより、１つの秘密ベクトルに対して確率的に送信パラメータ列を変化させることができ、秘密ベクトルXを推測することを困難にする。
【００８７】
さらに、機関P１においては部分解である第１結果を明らかにしないことにより、他の秘匿計算に勝手に情報が利用されることを防ぐ。また、機関P２においても、固定暗号文列として利用できる暗号文列を条件付けて制約することにより部分解である第２結果を他の秘匿計算に勝手に情報が利用されることを防ぐことができる。
【００８８】
このように本実施の形態の方法は、従来手法における機密性における弱点と機密性向上により送受信にかかる通信量、計算量の増大という弱点の双方を克服した完全な機密性を提供する極めて少ない通信量で秘匿計算を実行する情報交換方法となっている。よって、本実施の形態の情報交換方法を使用すれば、高い機密性のもと高速な秘匿計算を実行することが可能となる。
【００８９】
(実施の形態２)
本実施の形態の秘匿計算情報交換システム１は図１２に示すように２台のデータ処理装置１００を備えるシステムである。また、２台のデータ処理装置１００の双方が計算結果を得る。以下、秘匿計算情報交換システム１について図面を参照しながら説明する。まず、図１２を参照して秘匿計算情報交換システム１の構成について説明する。
【００９０】
秘匿計算情報交換システム１は図１２に示すように、機関P１と機関P２それぞれに設置された２台のデータ処理装置１００と、それらを接続する通信線２００とで構成される。２台のデータ処理装置１００は、通信線２００を通じて互いにデータを送受信することで連携して１つの処理を実行する。データ処理装置１００の構成、および制御部１１０を除くブロックが備える機能は実施の形態１のデータ処理の構成、ブロックの備える機能と同一であるので説明を省略する。
【００９１】
また、秘匿計算情報交換方法は実施の形態１と同様に「情報交換処理A」と「情報交換処理B」により実行される。以下では、機関P１が「情報交換処理A」を機関P２が「情報交換処理B」を担当するものとする。
【００９２】
制御部１１０の備える機能について、図１２の機能ブロック図を参照しながら説明する。制御部１１０は複数の機関で秘匿計算を実行するため「秘匿計算情報交換処理」を実行する。秘匿計算情報交換処理は操作部１４０からの「情報交換処理A開始通知」および「情報交換処理B開始通知」により開始される。以下に説明する各機能は秘匿計算情報交換処理を実現するための機能である。秘匿計算情報交換処理は情報交換処理Aと情報交換処理Bから成る。まず、始めに情報交換処理Aを実現する機能を説明し、次に情報交換処理Bを実現する機能を説明する。
【００９３】
送信パラメータ列計算部１１１の備える機能は実施の形態１の送信パラメータ列計算部の備える機能と同一であるので説明を省略する。
【００９４】
部分結果１算出部１１２は他機関のデータ処理装置１００と連携して、自己の送信パラメータ列σを自己の暗号鍵Kaにて暗号化した送信パラメータ列暗号文列と相手機関の計算した計算パラメータ列の内積演算の結果の一部である暗号文I1と、内積演算結果の残りの部分と相手機関が固定暗号文列の一部を相手機関の復号鍵で復号することで得られる値とを相手機関の暗号鍵Kbに暗号化した暗号文の２項組(J1,J2)を受信し、I1を自己の暗号鍵Kaで復号して第１結果から減算することで得られる結果を部分結果１とし、相手機関より受信した暗号文J1を自己の暗号鍵Kaで復号した後、J2に加算し暗号文J3を求め相手機関に送信する。
【００９５】
最終結果算出部１１５は他機関のデータ処理装置１００と連携して、自己のもつ部分結果１と、相手機関より取得した部分結果２に演算を施すことにより最終結果NEW_XYを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する。
【００９６】
固定暗号文復号部１１３は実施の形態１の固定暗号文復号部の機能と同じ機能を備えるため、説明を省略する。
【００９７】
部分結果２算出部１１４は他機関のデータ処理装置１００と連携して、相手機関の送信パラメータ暗号文列と自己の計算した計算パラメータ列の内積演算の結果を２つに分割し、一方を暗号値I1とし、もう一方と固定暗号文復号値Hを同じ自己の暗号鍵Kbにより暗号化し暗号文２項組（J1,J2）を生成し、暗号文列I1, (J1,J2)を相手機関に送信し、相手機関が暗号文２項組(J1,J2)に演算を施して得られた暗号文J3を受信し、暗号文J3を自己の暗号鍵Kbにて復号し、部分結果２を生成する。
【００９８】
以上、制御部１１０の機能について説明したが、次に、データ処理装置１００で実行される「秘匿計算情報交換処理」について説明する。秘匿計算情報交換処理は「情報交換処理A」と「情報交換処理B」により構成されるため、始めに情報交換処理Aについて説明し、次に情報交換処理Bについて説明する。機関P１に設置されたデータ処理装置１００は「情報交換処理A」を実行し、機関P２に設置されたデータ処理装置１００は「情報交換処理B」を実行することで、秘匿データに関する情報を一切相手に知られることなく、かつ、暗号文の送受信を行うことなく秘匿計算を実行し、機関P１、機関P２ともに望まれる関数を機関P１の秘密ベクトル、機関P２の秘密ベクトルに適用したときに得られるであろう同じ値を得る。
【００９９】
制御部１１０は操作部１４０から「情報交換処理A開始通知」を受信すると図１３に示す「情報交換処理A」を開始する。この「情報交換処理A」は大きく２つのステップで構成される。以下、図１３のフローチャートを参照しながら「情報交換処理A」の概要について説明する。なお、以下に説明する各ステップは２台のデータ処理装置１００の一方で実行される。「情報交換処理B」の概要は、「情報交換処理A」の概要の説明に続き、説明する。
【０１００】
最初にステップS１００の送信パラメータ列計算処理について説明する。制御部１１０は自己の秘密データであり、「秘密ベクトルX」と予め公知である暗号文列（C1i, C2i, C3i, C4i, D1i, D2i, D3i D4i, F1i, F2i, F3i, F4i, C5i, C6i, C7i, C8i, D5, D6i, D7i, D8i, F5, F6i, F7i, F8i, Gi）(1≦i≦n)を入力とする。ここで、nはベクトルの長さであるベクトル次数である。制御部１１０は上記を入力として、送信パラメータ列σと第１結果Jを計算する（図１３、図１４）。
【０１０１】
次にステップS４００の部分結果１算出処理について説明する。制御部１１０は計算した送信パラメータ列σを自己の暗号鍵Kaで暗号化し、送信パラメータ列暗号文列を作成し、送信パラメータ列暗号文列と相手機関の計算した計算パラメータ列の内積演算の結果の一部である暗号文I1と、内積演算結果の残りの部分と相手機関が固定暗号文列の一部を相手機関の復号鍵で復号することで得られる値とを相手機関の暗号鍵Kbに暗号化した暗号文の２項組(J1,J2)を受信し、I1を自己の暗号鍵Kaで復号して第１結果から減算することで得られる結果を部分結果１とし、相手機関より受信した暗号文J1を自己の暗号鍵Kaで復号した後、J2に加算し暗号文J3を求め相手機関に送信する（図１５）。
【０１０２】
次にステップS５００の最終結果算出処理は他機関のデータ処理装置１００と連携して、自己のもつ部分結果１と、相手機関より取得した部分結果２に演算を施すことにより最終結果NEW_XYを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する（図１６）。
【０１０３】
以上の処理（ステップS１００とS４００、S５００）により、情報交換処理Aは完了する。次に情報交換処理Bについて説明する。
【０１０４】
最初にステップS２００の固定暗号文復号処理について説明する。制御部１１０は公知の固定暗号文列の一部Gi を復号鍵KBi (１≦i≦n )で復号し、その復号値に演算を施した値Hを計算する。さらに、計算パラメータ列δを計算する（図１４）。
【０１０５】
ステップS２００の処理が完了すると、次に、制御部１１０はステップS３００の部分結果２算出処理を実行する。部分結果２算出部１１４は他機関のデータ処理装置１００と連携して、相手機関の送信パラメータ暗号文列と自己の計算した計算パラメータ列の内積演算の結果を２つに分割し、一方を暗号値I1とし、もう一方と固定暗号文復号値Hを同じ自己の暗号鍵Kbにより暗号化し暗号文２項組（J1,J2）を生成し、暗号文列I1, (J1,J2)を相手機関に送信し、相手機関が暗号文２項組(J1,J2)に演算を施して得られた暗号文J3を受信し、暗号文J3を自己の暗号鍵Kbにて復号し、部分結果２を生成する。（図１５）
【０１０６】
以上の処理（ステップS２００とS３００、S５００）により、情報交換処理Bは完了する。以上、秘匿計算情報交換処理について説明した。
【０１０７】
本実施の形態によれば、各機関が１つずつの暗号鍵を使って作成した暗号文の送受信のみで、双方の機関が安全に計算結果を得ることができる。また、最終結果を算出するのに適切な部分解を２つの機関で固定暗号文列を仲介情報として生成することができる。
【０１０８】
実施の形態１および２では、複数のデータブロックで構成されるベクトルを対象に本方法を適用したが、本方法はデータブロック単体を対象に適用してもよい。この場合、データ処理装置１００は、データブロック同士の乗算結果を計算するが、最終的な内積結果を算出すると相手のデータブロックの値が判明してしまうので、最終結果以前の値を別の計算に利用するか内積結果に機関P２の秘密データを加算する。また、一方の機関のデータブロックを単位ブロック（例えば値１）に設定し、他の機関のデータブロックを秘密データブロックとするベクトルを対象に本方法を適用した場合、データ処理装置１００は秘匿加算計算を実行することができる。
【０１０９】
本システムの適用はオンラインショップでの相関関係判定の秘匿ベクトル計算に限られない。研究機関間、会社間、部署間等、さまざまな組織間の秘匿計算に適用可能である。また、個人間の秘匿計算にも適用可能である。
【０１１０】
データ処理装置１００は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記憶媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによってデータ処理装置１００を構成してもよい。また、インターネット等のネットワーク状のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OSとアプリケーションソフトの共同より実現してもよい。また、コンピュータにダウンロード等してもよい。
【０１１１】
上記のプログラムを記録する記録媒体としては、USBメモリ、CD、DVD、MO、SDカード、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気デープ等のコンピュータ読取り可能な記録媒体を使用することができる。また、HDD（ハードディスク）やSSD（ソリッドステートドライブ）等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
【符号の説明】
【０１１２】
１                             秘匿計算情報交換システム
１００                      データ処理装置
１１０                      制御部
１１１             送信パラメータ列計算部
１１２                      最終結果算出部
１１３                      固定暗号文復号部
１１４                      部分結果算出部
１２０                      通信部
１３０                      記憶部
１４０                      操作部
１５０                      インタフェース部
２００                      通信線
【図１】
2016109891.tif 000003
【図２】
2016109891.tif 000004
【図３】
2016109891.tif 000005
【図４】
2016109891.tif 000006
【図５】
2016109891.tif 000007
【図６】
2016109891.tif 000008
【図７】
2016109891.tif 000009
【図８】
2016109891.tif 000010
【図９】
2016109891.tif 000011
【図１０】
2016109891.tif 000012
【図１１】
2016109891.tif 000013
【図１２】
2016109891.tif 000014
【図１３】
2016109891.tif 000015
【図１４】
2016109891.tif 000016
【図１５】
2016109891.tif 000017
【図１６】
2016109891.tif 000018