(57)【要約】      （修正有）【課題】複数の機関が保持している秘密データを入力として演算を適用した結果を、暗号文の送受信を行うことなく、かつ、無関係な情報を他に知られることなく、秘匿に計算する秘匿計算情報交換システムを提供する。【解決手段】秘匿計算情報交換システム１は２以上の機関にそれぞれ設置されたデータ処理装置１００で構成される。データ処理装置１００は秘密データと固定暗号文列を記憶する記憶部１３０と、固定暗号文列の一部を復号鍵で復号し固定暗号文復号結果を計算する固定暗号文復号部１１１と固定暗号文復号結果に演算を適用し最終結果を生成する最終結果算出部１１２とを有する。ここで秘密データとは各機関を利用した顧客の情報である顧客情報や、顧客情報を並び替え、双方の機関で共通の認識を得て整列された秘密ベクトルなどの非公開情報である。【選択図】図６
2017129644.tif 000002
【特許請求の範囲】
【請求項１】
２以上のデータ処理装置で構成される秘匿計算情報交換システムであって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする秘匿計算情報交換システム。
【請求項２】
前記データ処理装置は、
他のデータ処理装置が生成する固定暗号文復号結果を取得し、自己のもつ固定暗号文復号結果と統合し最終結果を算出する最終結果算出手段と、
を有する、
ことを特徴とする請求項１に記載の秘匿計算情報交換システム。
【請求項３】
前記データ処理装置は、さらに、
前記秘密データとは独立に決定される秘密パラメータと前記固定暗号文復号結果を入力として部分結果を算出し、前記部分結果を他のデータ処理装置に送信する部分結果算出手段と、
を有することを特徴とする請求項１または２に記載の秘匿計算情報交換システム。
【請求項４】
前記固定暗号文復号手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記復号鍵となる値と前記固定暗号文復号結果となる値を計算可能である、
ことを特徴とする請求項乃至３のいずれか１項に記載の秘匿計算情報交換システム。
【請求項５】
前記秘密データは、
複数のデータブロックで構成されるベクトルデータである、
ことを特徴とする請求項１乃至４のいずれか１項に記載の秘匿計算情報交換システム。
【請求項６】
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とするデータ処理装置。
【請求項７】
他のデータ処理装置と連携してデータを処理するデータ処理装置によって使用される秘匿計算情報交換方法であって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする秘匿計算情報交換方法。
【請求項８】
他のコンピュータと連携してデータを処理するコンピュータによって実行される秘匿計算情報交換プログラムであって、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする秘匿計算情報交換プログラム。
【請求項９】
請求項８に記載の情報交換プログラムが記録されていることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の機関でそれぞれがもつデータを入力として演算を適用した結果をデータの内容を秘匿したまま計算するための秘匿計算情報交換システム、データ処理装置、秘匿計算情報交換方法、秘匿計算情報交換プログラム、および、記録媒体に関する。
【背景技術】
【０００２】
複数の機関がもつデータを入力として演算を適用し得られる結果をデータの内容を秘匿したまま計算し、結果を利用する方法が示されている。各機関がもつデータを複数のデータブロックからなるデータベクトルとし、適用する演算を内積計算とした場合の秘匿ベクトル内積計算を用いた相関ルールを導出する方法が非特許文献１に示されている。
【０００３】
ここで、内積演算とは２つの同じ長さのベクトルを入力として、同じベクトル位置のベクトル要素２つを乗算し乗算結果を算出し、全てのベクトル位置の乗算結果の総和を求める演算とする。内積演算の入力ベクトルをX、Yとするとき内積演算結果をX・Yと表す。
【０００４】
以下、オンラインショップP1とオンラインショップP2が顧客の物品購入の相関関係を顧客とのプライバシー同意契約に違反することなく導出する例を図１の概略図を参照して説明する。
【０００５】
最初に、オンラインショップP1とP2は図２、図３に示すような「クレジットカード番号表」を用意し、同じクレジット番号の顧客の利用金額を同じ位置に記録する２つのベクトル、「ベクトル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の暗号値（2XiKri, 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暗号方式に依る暗号プロトコルは相対的にみても弱い機密性しか備えていない可能性がある。
【００２１】
本発明はこれらの問題を鑑みてなされたものであり、指数乗計算のような大きな計算コストを必要とせず、かつ、暗号文を通信しないことにより、情報を相手に漏らすこと無く演算結果を計算することができる秘匿計算情報交換システム、データ処理装置、秘匿計算情報交換方法、秘匿計算情報交換プログラム、および、該秘匿計算情報交換プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２２】
上記の目的を達成するため、本発明の第１の観点にかかる秘匿計算情報交換システムは、
２以上のデータ処理装置で構成される秘匿計算情報交換システムであって、
前記データ処理装置はそれぞれ、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする。
【００２３】
前記データ処理装置は、
他のデータ処理装置が生成する固定暗号文復号結果を取得し、自己のもつ固定暗号文復号結果と統合し最終結果を算出する最終結果算出手段と、
を有してもよい。
【００２４】
前記データ処理装置は、さらに、
前記秘密データとは独立に決定される秘密パラメータと前記固定暗号文復号結果を入力として部分結果を算出し、前記部分結果を他のデータ処理装置に送信する部分結果算出手段と、
を有してもよい。
【００２５】
前記固定暗号文復号手段は、
前記秘密データ記憶手段により記憶される可能性のある全ての秘密データに対して、
前記固定暗号文列と前記秘密データを入力として前記復号鍵となる値と前記固定暗号文復号結果となる値を計算可能である、
ことを特徴としてもよい。
【００２６】
前記秘密データは、
複数のデータブロックで構成されるベクトルデータである、
ことを特徴としてもよい。
【００２７】
上記目的を達成するため、本発明の第２の観点にかかるデータ処理装置は、
他のデータ処理装置と連携してデータを処理するデータ処理装置であって、
秘密データを記憶する秘密データ記憶手段と、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶手段と、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号手段と、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする。
【００２８】
上記目的を達成するため、本発明の第３の観点にかかる秘匿計算情報交換方法は、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする。
【００２９】
上記目的を達成するため、本発明の第４の観点にかかる秘匿計算情報交換プログラムは、
秘密データを記憶する秘密データ記憶ステップと、
暗号文の列とみなせる固定暗号文列を記憶する固定暗号文列記憶ステップと、
自己の保有する前記秘密データと前記固定暗号文列より固定暗号文列を復号鍵で復号し固定暗号文復号結果を生成する固定暗号文復号ステップと、
を有し、
前記複数のデータ処理装置が記憶する前記固定暗号文列は同一である、
ことを特徴とする。
【００３０】
上記目的を達成するため、本発明の第５の観点にかかる記録媒体は、
上記秘匿計算情報交換プログラムが記録されていることを特徴とする。
【発明の効果】
【００３１】
本発明によれば、暗号文の送受信を一切行うことなく、かつ、無関係な情報を他に知られることなく、秘匿に計算を行うことができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態１にかかる秘匿計算情報交換システムの構成例を示すブロック図である。
【図２】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P1がもつ顧客ごとの利用金額を列状に並べた表である。
【図３】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P２がもつ顧客ごとの利用金額を列状に並べた表である。
【図４】図２に示した表を要約し作成された機関P１がもつ秘密ベクトルXである。
【図５】図３に示した表を要約し作成された機関P２がもつ秘密ベクトルYである。
【図６】図１に示す制御部によって実現される機能を示す機能ブロック図である。
【図７】本発明の実施の形態１にかかる「情報交換処理」の概要を説明するための処理概要図である。
【図８】本発明の実施の形態１にかかる「情報交換処理」を説明するためのフローチャートである。
【図９】図８に示す「情報交換処理」で実行される「固定暗号文復号処理」を説明するためのフローチャートである。
【図１０】図８に示す「情報交換処理」で実行される「最終結果算出処理」を説明するためのフローチャートである。
【図１１】本発明の実施の形態２にかかる秘匿計算情報交換システムの構成例を示すブロック図である。
【図１２】本発明の実施の形態２にかかる「情報交換処理」の概要を説明するための処理概要図である。
【図１３】本発明の実施の形態２にかかる「情報交換処理」を説明するためのフローチャートである。
【図１４】本発明の実施の形態２にかかる「固定暗号文復号処理」を説明するためのフローチャートである。
【図１５】本発明の実施の形態２にかかる「最終結果算出処理」を説明するためのフローチャートである。
【発明を実施するための形態】
【００３３】
（実施の形態１）
本実施の形態の秘匿計算情報交換システム１は、機関P１もしくは機関P２のもつ秘密データX、Yにおいて第三者機関の助けなしに、かつ、暗号文の送受信を一切行うことなくXとYを入力として関数を適用した結果を秘匿に計算するための情報交換システムである。以下、秘匿計算情報交換システム１について図面を参照しながら説明する。まず、図６を参照して秘匿計算情報交換システム１の構成について説明する。
【００３４】
秘匿計算情報交換システム１は、図６に示すように、機関P１と機関P２それぞれに設置された２台のデータ処理装置１００で構成される。
【００３５】
データ処理装置１００は、例えば、PCサーバやメインフレームなどで構成され、顧客情報等の秘密データを格納している。データ処理装置１００は図１に示すように、制御部１１０、記憶部１３０、操作部１４０、インタフェース部１５０から構成される。
【００３６】
制御部１１０は、CPU (Central Processing Unit) などで構成され、データ処理装置１００の各部を制御する。また、制御部１１０は操作部１４０から「情報交換処理開始通知」を受信すると、後述の「情報交換処理」を実行する。「情報交換処理」は２台のデータ処理装置どちらかそれぞれで実行される。
【００３７】
記憶部１３０は、ハードディスクやRAM (Random Access Memory) などの記憶装置から構成され、データ処理装置１００の動作に必要なデータ（例えば「秘密データ」や「固定暗号文列」）などを記憶する。
【００３８】
ここで「秘密データ」とは、「顧客情報」や「秘密ベクトル」などの非公開の情報のことをいう。また、「顧客情報」とは各機関を利用した顧客の情報であり、「秘密ベクトル」とは、複数の機関が共通してしっているIDによって顧客ごとの情報を並び替え、ある機関が持っている秘密ベクトルの各ベクトル位置の情報を提供顧客と別の機関が持っている秘密ベクトルの同じベクトル位置の情報を提供した顧客が同じであるようなベクトル位置ごとに格納されている情報に関して、双方の機関で共通した認識を得て整列された情報とする。
【００３９】
また「固定暗号文列」とは秘匿計算を行う上でそれぞれのデータ処理装置１００が相手に送信する情報を計算するために用いる数値の列であり、「情報交換処理」を開始する以前に双方のデータ処理装置１００が共通の数値の列を「固定暗号文列」として記憶部１３０に格納している。「固定暗号文列」はいくつかの条件を満たすよう選択される（詳細は後述する）。
【００４０】
操作部１４０はデータ処理装置１００の外面上に構成されている各種ボタンなどによって構成される。ユーザにより所定のボタンが押されると、制御部１１０に対し「情報交換処理開始通知」を送信する。情報交換処理開始通知は、秘匿計算情報交換処理を開始するためのトリガーとなるデータである。
【００４１】
インタフェース部１５０は、例えばUSB (Universal Serial Bus) コネクタやビデオ出力端子などから構成され、外部の装置（例えばPCやモニタなど）へ処理結果を送信する。
【００４２】
以上、秘匿計算情報交換システム１の構成について説明したが、次に、制御部１１０の備える機能について、図６の機能ブロック図、および、図７の処理概要図を参照しながら説明する。
【００４３】
制御部１１０は複数の機関で秘匿計算を実行するため「秘匿計算情報交換処理」を実行する。秘匿計算情報交換処理は操作部１４０からの「情報交換処理開始通知」により開始される。以下に説明する各機能は秘匿計算情報交換処理を実現するための機能である。まず、情報交換処理を実現する機能を機関P１での処理を例に説明する。
【００４４】
固定暗号文復号部１１１はあらかじめ知っている固定暗号文列の一部であるEΨを復号するために、残りの固定暗号文列と自己の保有する秘密ベクトルxを用いて復号鍵ベクトルKΦを用いて固定暗号文列の一部EΨを復号し、固定暗号文復号値FΦを生成する。また、計算パラメータ列γを計算する。
【００４５】
最終結果算出部１１２は、自己のパラメータ列γと固定暗号文復号値FΦと復号鍵ベクトルKΦに演算を施すことにより最終結果Φを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する。
【００４６】
以上、制御部１１０の機能について説明したが、次に、データ処理装置１００で実行される「秘匿計算情報交換処理」について説明する。秘匿計算情報交換処理は「情報交換処理」により構成される。機関P１に設置されたデータ処理装置１００、機関P２に設置されたデータ処理装置１００それぞれが「情報交換処理」を実行することで、秘匿データに関する情報を一切相手に知られることなく、かつ、暗号文の送受信を行うことなく秘匿計算を実行し、機関P１は望まれる関数を機関P１の秘密ベクトル、機関P２の秘密ベクトルに適用したときに得られるであろう同じ値を得る。
【００４７】
制御部１１０は操作部１４０から「情報交換処理開始通知」を受信すると図８に示す「情報交換処理」を開始する。この「情報交換処理」は大きく２つのステップで構成される。以下、図７の処理概要図を参照しながら「情報交換処理」の概要について説明する。なお、以下に説明する各ステップは２台のデータ処理装置１００の双方で（説明では機関P１を考える）で実行される。
【００４８】
最初にステップS１００の固定暗号文復号処理について説明する。制御部１１０は自己の秘密データであり、「秘密ベクトルx」と予め公知である暗号文列（CΦi, DΦi, EΦi, CΨi, DΨi, EΨi）(1≦i≦n)を入力とする。ここで、nはベクトルの長さであるベクトル次数である（例ではn=2）。制御部１１０は上記を入力として、パラメータ列γi  (1≦i≦n)と復号鍵ベクトルKΦi(1≦i≦n)を計算する。そして，暗号文列EΨiを復号鍵ベクトルKΦiで復号することにより，固定暗号文復号値ベクトルFΦを得る．
【００４９】
ここで１つ疑問が生じる。暗号文列（CΦi, DΦi, EΦi, CΨi, DΨi, EΨi,）(1≦i≦n)とパラメータ列γiと復号鍵ベクトルKΦiをどのように関連づけるかという疑問である。本実施の形態ではあたかも固定暗号文列を２つの機関が送受信したかのようにみなし、それらの暗号文列を得る暗号鍵等の秘密パラメータを計算する。その具体的方法は後に詳しく述べる。
【００５０】
また，復号鍵ベクトルKΦiは以前に機関P１にて記憶されていないし、固定暗号文列の一部であるEΨiを暗号化した鍵に対応する復号鍵である保証もないので、固定暗号文列を復号鍵KΦiにて復号することに意味はないのでないかという疑問である。しかしながら、本実施の形態では、完全な機密性を備える暗号プロトコルを基本とすることにより、現在の秘密ベクトルxに応じた固定暗号文列と同じ暗号文列を生じる復号鍵KΦiを計算することができる。その具体的方法は後に詳しく述べる。
【００５１】
次にステップS２００の最終結果算出処理について説明する。制御部１１０は計算したパラメータ列γiを固定暗号文復号値ベクトルFΦに演算を施した値である最終結果Φを算出する。
【００５２】
以上の処理（ステップS１００とS２００）により、情報交換処理は完了する。
【００５３】
以上、秘匿計算情報交換処理の概要について説明したが、次に、秘匿計算情報交換処理を構成する情報交換処理について詳細に説明する。最初に、情報交換処理のステップS１００の「固定暗号文復号処理」、最後に情報交換処理のステップS２００の「最終結果算出処理」について説明する。
【００５４】
ステップS１００は図８の「送信パラメータ列計算処理」に対応している。以下、図９のフローチャートおよび図７の処理概要図を参照して「固定暗号文復号処理」について説明する。なお、固定暗号文復号処理は固定暗号文復号処理部１１１で実行される。
【００５５】
固定暗号文復号部１１１は秘密ベクトルxを記憶部１３０から読み出す（ステップS１０１）。
【００５６】
次に、固定暗号文復号部１１１は秘密ベクトルxと固定暗号文の一部を入力として残りの固定暗号文列を復号するための復号鍵KΦiを計算する（ステップS１０２）。
【００５７】
秘密ベクトルxと固定暗号文列の一部を入力として復号鍵KΦiを計算するために、基本となっている暗号プロトコルにより規定されているパラメータ群（図７(e)）との関係を、暗号文列を定数値のベクトル、秘密ベクトルxを定数値のベクトル、暗号鍵KΦiおよびパラメータベクトルγiを変数としたときの連立一次方程式とみなし、連立一次方程式の解より復号鍵KΦi（例の場合は暗号鍵に対応する復号鍵は暗号鍵と同じである）と計算パラメータ列γiを計算する。
【００５８】
ここでも基本となっている暗号プロトコルが完全な機密性を提供し、どのような秘密ベクトルYに対しても、決められた暗号文列を生成するような暗号鍵を設定可能とするなら、暗号文を固定として公知とすることにより、暗号文列を相手機関と送受信したときに得られる暗号文復号結果と同じ復号結果を得る暗号鍵に対応する復号鍵KΦiを、暗号文列を送受信することなく逆算することができる。
【００５９】
固定暗号文復号部１１１は計算した復号鍵KΦiにより固定暗号文列の一部である暗号文EΨiを復号し、固定暗号文復号値FΦを計算し（S１０３）、固定暗号文復号値FΦと計算パラメータ列γiを記憶部１３０に記録する（S１０４）。固定暗号文の復号が完了すると制御部１１０は図９のフローに戻り、ステップS２００の最終結果算出処理を開始する。最終結果算出処理は最終結果算出部１１２によって実行される。以下、図１1のフローチャートおよび図７の処理概要図を参照して「最終結果算出処理」について説明する。
【００６０】
最終結果算出部１１２は自己が計算したパラメータ列γiと復号鍵ベクトルKΦi,，固定暗号値復号結果ベクトルFΦに演算を施し最終結果Φを計算する（S２０１）。
【００６１】
以上の処理により最終結果の算出が完了すると、次に、制御部１１０は図８のフローに戻り、最終結果をインタフェース部１５０を通じて外部の装置へ出力する（ステッップS２００）。
【００６２】
本実施の形態によれば、一切の暗号文の送受信を行うことなく、あたかも暗号文の送受信を行ったと同じ暗号文復号値を取得することが可能になる。また、最終結果を算出するのに適切な部分解を２つの機関で固定暗号文列を仲介情報として生成することができる。
【００６３】
このように本実施の形態の方法は、従来手法における機密性における弱点と機密性向上により送受信にかかる通信量、計算量の増大という弱点の双方を克服した完全な機密性を提供する極めて少ない通信量で秘匿計算を実行する情報交換方法となっている。よって、本実施の形態の情報交換方法を使用すれば、高い機密性のもと高速な秘匿計算を実行することが可能となる。
【００６４】
(実施の形態２)
本実施の形態の秘匿計算情報交換システム１は図１２に示すように２台のデータ処理装置１００を備えるシステムである。また、２台のデータ処理装置１００の双方が計算結果を得る。以下、秘匿計算情報交換システム１について図面を参照しながら説明する。まず、図１２を参照して秘匿計算情報交換システム１の構成について説明する。
【００６５】
秘匿計算情報交換システム１は図１２に示すように、機関P１と機関P２それぞれに設置された２台のデータ処理装置１００と、それらを接続する通信線２００とで構成される。２台のデータ処理装置１００は、通信線２００を通じて互いにデータを送受信することで連携して１つの処理を実行する。データ処理装置１００の構成、および制御部１１０を除くブロックが備える機能は実施の形態１のデータ処理の構成、ブロックの備える機能と同一であるので説明を省略する。
【００６６】
また、秘匿計算情報交換方法は実施の形態１と同様に「情報交換処理」により実行される。
【００６７】
制御部１１０の備える機能について、図１２の機能ブロック図を参照しながら説明する。制御部１１０は複数の機関で秘匿計算を実行するため「秘匿計算情報交換処理」を実行する。秘匿計算情報交換処理は操作部１４０からの「情報交換処理開始通知」により開始される。以下に説明する各機能は秘匿計算情報交換処理を実現するための機能である。秘匿計算情報交換処理は情報交換処理から成る。以下に機関P１の情報交換処理を実現する機能を説明する。
【００６８】
固定暗号値復号部１１１は他機関のデータ処理装置１００と連携して、自己の秘密ベクトルXと自己の秘密パラメータΦを利用して自己の暗号鍵ベクトルKAiを実施の形態１と同様の方法にて計算する。さらに秘密パラメータΦを導入することによって、暗号文EAを作成し相手機関に送信する。
【００６９】
最終結果算出部１１２は他機関のデータ処理装置１００と連携して、自己のもつ部分結果FAと、相手機関より取得した部分結果FBに演算を施すことにより最終結果NEW_XYを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する。
【００７０】
以上、制御部１１０の機能について説明したが、次に、データ処理装置１００で実行される「秘匿計算情報交換処理」について説明する。秘匿計算情報交換処理は「情報交換処理」により構成される。機関P１、機関P２に設置されたデータ処理装置１００が協調して「情報交換処理」を実行し、秘匿データに関する情報を一切相手に知られることなく、かつ、暗号文の送受信を行うことなく秘匿計算を実行し、機関P１、機関P２ともに望まれる関数を機関P１の秘密ベクトル、機関P２の秘密ベクトルに適用したときに得られるであろう同じ値を得る。
【００７１】
制御部１１０は操作部１４０から「情報交換処理開始通知」を受信すると図１３に示す「情報交換処」を開始する。この「情報交換処理A」は大きく２つのステップで構成される。以下、図１３のフローチャートを参照しながら「情報交換処理」の概要について説明する。なお、以下に説明する各ステップは２台のデータ処理装置１００の一方で実行される。
【００７２】
最初にステップS１００の送信パラメータ列計算処理について説明する。制御部１１０は自己の秘密データであり、「秘密ベクトルX」と予め公知である暗号文列（CAi, DAi, CBi DBi）(1≦i≦n)を入力とする。ここで、nはベクトルの長さであるベクトル次数である。制御部１１０は上記を入力として、暗号文列EAiを計算し、相手機関に送信する。また、固定暗号文値復号ベクトルを計算し、記憶部１３０に記憶する（図１４）。
【００７３】
次にステップS５００の最終結果算出処理は他機関のデータ処理装置１００と連携して、自己のもつ固定暗号値復号結果FAを相手機関に送信し、相手機関より固定暗号値復号結果FBを得ることにより計算した部分結果GAと、相手機関より取得した部分結果GBに演算を施すことにより最終結果NEW_XYを算出し、インタフェース部１５０を通じて外部の装置へ最終結果を送信する（図１５）。
【００７４】
以上の処理（ステップS１００とS２００）により、情報交換処理は完了する。
【００７５】
ここで、情報交換処理を担当するデータ処理装置１００が相手機関に送信する情報を利用して他機関が勝手に秘匿計算を行うことができるという危険が存在しないかという疑問が生じる。しかしながら、本実施の形態では、外部に送信する情報、固定暗号文列を制約することにより、上記の危険を排除する。双方の機関において、外部に送信した情報を利用して、秘匿計算を実行できないものとする仕組みを以下に説明する。
【００７６】
例えば、図７の処理概略図の例の場合、暗号文列を作成するときに秘密ベクトルXだけでなく秘密ベクトルとは独立に決定された秘密パラメータを用いることにより、１つの秘密ベクトルに対して確率的に暗号文列を変化させることができ、秘密ベクトルXを推測することを困難にする。さらに、各機関においては段階的に暗号値を送信することにより、他の秘匿計算に勝手に情報が利用されることを防ぐ。また、機関P２においても、固定暗号文列として利用できる暗号文列を条件付けて制約することにより部分解である第２結果を他の秘匿計算に勝手に情報が利用されないようにする。
【００７７】
本実施の形態によれば、各機関が１つずつの暗号鍵を使って作成した暗号文の送受信のみで、双方の機関が安全に計算結果を得ることができる。また、最終結果を算出するのに適切な部分解を２つの機関で固定暗号文列を仲介情報として生成することができる。
【００７８】
実施の形態１および２では、複数のデータブロックで構成されるベクトルを対象に本方法を適用したが、本方法はデータブロック単体を対象に適用してもよい。この場合、データ処理装置１００は、データブロック同士の乗算結果を計算するが、最終的な内積結果を算出すると相手のデータブロックの値が判明してしまうので、最終結果以前の値を別の計算に利用するか内積結果に機関P２の秘密データを加算する。また、一方の機関のデータブロックを単位ブロック（例えば値１）に設定し、他の機関のデータブロックを秘密データブロックとするベクトルを対象に本方法を適用した場合、データ処理装置１００は秘匿加算計算を実行することができる。
【００７９】
本システムの適用はオンラインショップでの相関関係判定の秘匿ベクトル計算に限られない。研究機関間、会社間、部署間等、さまざまな組織間の秘匿計算に適用可能である。また、個人間の秘匿計算にも適用可能である。
【００８０】
データ処理装置１００は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記憶媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによってデータ処理装置１００を構成してもよい。また、インターネット等のネットワーク状のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OSとアプリケーションソフトの共同より実現してもよい。また、コンピュータにダウンロード等してもよい。
【００８１】
上記のプログラムを記録する記録媒体としては、USBメモリ、CD、DVD、MO、SDカード、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気デープ等のコンピュータ読取り可能な記録媒体を使用することができる。また、HDD（ハードディスク）やSSD（ソリッドステートドライブ）等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
【符号の説明】
【００８２】
１                             秘匿計算情報交換システム
１００                      データ処理装置
１１０                      制御部
１１１             送信パラメータ列計算部
１１２                      最終結果算出部
１１３                      固定暗号文復号部
１１４                      部分結果算出部
１２０                      通信部
１３０                      記憶部
１４０                      操作部
１５０                      インタフェース部
２００                      通信線
【図１】
2017129644.tif 000003
【図２】
2017129644.tif 000004
【図３】
2017129644.tif 000005
【図４】
2017129644.tif 000006
【図５】
2017129644.tif 000007
【図６】
2017129644.tif 000008
【図７】
2017129644.tif 000009
【図８】
2017129644.tif 000010
【図９】
2017129644.tif 000011
【図１０】
2017129644.tif 000012
【図１１】
2017129644.tif 000013
【図１２】
2017129644.tif 000014
【図１３】
2017129644.tif 000015
【図１４】
2017129644.tif 000016
【図１５】
2017129644.tif 000017