(57)【要約】  【課題】  複数の組織がそれぞれの組織内で秘匿すべきデータを対象として、比較的少ない計算量で、内積を求める。  【解決手段】  第一の組織の装置は、組織内で秘匿すべき第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を第三の組織の装置へ出力し、第二の組織の装置は、組織内で秘匿すべき第二のデータ列に対して秘匿のための第二の変形を行い、変形された第二のデータ列を第三の組織の装置へ出力し、第三の組織の装置は、変形された第一のデータ列と変形された第二のデータ列との内積を計算して、この内積を少なくとも第二の組織の装置へ返送する。第一の組織の装置は、第二の組織の装置へ、自装置が行った第一の変形に関する情報を送信し、第二の組織の装置は、自装置が行った第二の変形に関する情報と、第一の組織の装置から受信した情報と、第三の組織の装置から受け取った内積とに基づいて、第一のデータ列と第二のデータ列との内積を求める。【選択図】  図１
2014206696.tif 000002
【特許請求の範囲】
【請求項１】
第一の組織内で秘匿すべき第一のデータ列を保存する保存手段を有する第一の組織の装置と、
第二の組織内で秘匿すべき第二のデータ列を保存する保存手段を有する第二の組織の装置と、
入力されたデータ列間の内積を計算する計算手段を有する第三の組織の装置と、
を備えるデータ秘匿型内積計算システムであって、
前記第一の組織の装置は、前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力する出力手段を備え、
前記第二の組織の装置は、前記第二のデータ列に対して秘匿のための第二の変形を行い、変形された第二のデータ列を前記第三の組織の装置へ出力する出力手段を備え、
前記第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算して、該内積を少なくとも前記第二の組織の装置へ返送する返送手段を備え、
前記第一の組織の装置は、前記第二の組織の装置へ、自装置が行った前記第一の変形に関する情報を送信する送信手段をさらに備え、
前記第二の組織の装置は、自装置が行った前記第二の変形に関する情報と前記第一の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求める計算手段をさらに備える
ことを特徴とするデータ秘匿型内積計算システム。
【請求項２】
前記第三の組織の装置は、計算した前記内積を前記第一の組織の装置へも返送するものであり、
前記第一の組織の装置は、自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求める計算手段をさらに備え、
前記第二の組織の装置は、前記第一の組織の装置へ、自装置が行った前記第二の変形に関する情報を送信する送信手段をさらに備えることを特徴とする請求項１に記載のデータ秘匿型内積計算システム。
【請求項３】
前記第一のデータ列の各データと、前記第二のデータ列の各データとが、同一の各データＩＤに対応付けられるものであることを特徴とする請求項１又は２に記載のデータ秘匿型内積計算システム。
【請求項４】
前記第一の組織の装置の送信手段は、前記第三の組織の装置が前記計算手段による計算に用いた前記変形された第一のデータ列及び前記変形された第二のデータ列を消去したことが確認された後に、前記情報を送信するものであることを特徴とする請求項１〜３のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項５】
前記第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算すると、前記内積を残して、前記変形された第一のデータ列及び前記変形された第二のデータ列を消去し、消去後に、前記内積を少なくとも前記第二の組織の装置へ返送するものであり、
前記第一の組織の装置の送信手段は、前記第三の組織の装置からの前記内積が受け取られた後に、前記情報を送信するものであることを特徴とする請求項１〜４のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項６】
前記第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算した後、前記変形された第一のデータ列及び前記変形された第二のデータ列を消去し、これらのデータ列が消去前に組織外へ漏洩した可能性の有無を判断し、判断結果を少なくとも前記第一の組織の装置へ通知する手段をさらに備え、
前記第一の組織の装置の送信手段は、前記第三の組織の装置から前記可能性が無とする判断結果が通知された後に、前記情報を送信するものであることを特徴とする請求項１〜５のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項７】
少なくとも、前記第一の組織の装置と前記第三の組織の装置との間の通信、及び、前記第二の組織の装置と前記第三の組織の装置との間の通信が、該通信を行う二者以外に傍受されないよう、且つ、第三者が通信相手になりすますことのできないよう、保護されていることを特徴とする請求項１〜６のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項８】
前記第三の組織の装置は、前記変形された第一又は第二のデータ列を構成する複数のデータのうち、所定数より多いデータの値が零である場合、前記内積の計算を行わず、前記内積の代わりに、計算拒否の通知を返送することを特徴とする請求項１〜７のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項９】
前記第三の組織の装置は、前記内積の計算に用いられた前記変形されたデータ列が、どの組織のどのデータＩＤセットに係るものであるかを保存しておき、所定期間内に、同一の組織の装置から同一のデータＩＤセットに係る前記変形されたデータ列を受け取った場合、前記内積の計算を行わず、前記内積の代わりに、計算拒否の通知を返送することを特徴とする請求項１〜８のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項１０】
前記第一の組織の装置が行う前記第一の変形は、第一の乱数を生成し、前記第一のデータ列を構成する各データに該第一の乱数を乗算するものであり、
前記第二の組織の装置が行う前記第二の変形は、第二の乱数を生成し、前記第二のデータ列を構成する各データに該第二の乱数を乗算するものであり、
前記第一の変形に関する情報は、前記第一の乱数であり、
前記第二の変形に関する情報は、前記第二の乱数であることを特徴とする請求項１〜９のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項１１】
前記第一の組織の装置が行う前記第一の変形は、第一の乱数列を生成し、前記第一のデータ列を構成する各データに該第一の乱数列を構成する各データを加算するものであり、
前記第二の組織の装置が行う前記第二の変形は、第二の乱数列を生成し、前記第二のデータ列を構成する各データに該第二の乱数列を構成する各データを加算するものであり、
前記第一の変形に関する情報は、前記第一の乱数列であり、
前記第二の変形に関する情報は、前記第二の乱数列であり、
前記第一の組織の装置は、前記第一のデータ列と前記第二の乱数列との内積を計算し、該計算結果を、前記第二の組織の装置の計算手段が前記第一の組織の装置から受信された情報として利用できるように、前記第二の組織の装置へ送信する手段をさらに備えることを特徴とする請求項１〜９のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項１２】
前記第一の組織の装置が行う前記第一の変形は、第一の乱数及び第一の乱数列を生成し、前記第一のデータ列を構成する各データに該第一の乱数を乗算した各結果に該第一の乱数列を構成する各データを加算するものであり、
前記第二の組織の装置が行う前記第二の変形は、第二の乱数及び第二の乱数列を生成し、前記第二のデータ列を構成する各データに該第二の乱数を乗算した各結果に該第二の乱数列を構成する各データを加算するものであり、
前記第一の変形に関する情報は、前記第一の乱数及び前記第一の乱数列であり、
前記第二の変形に関する情報は、前記第二の乱数及び前記第二の乱数列であり、
前記第一の組織の装置は、前記第一のデータ列と前記第二の乱数列との内積を計算し、該計算結果を、前記第二の組織の装置の計算手段が前記第一の組織の装置から受信された情報として利用できるように、前記第二の組織の装置へ送信する手段をさらに備えることを特徴とする請求項１〜９のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項１３】
前記第一の組織の装置及び前記第二の組織の装置が、それぞれ、前記第一のデータ列及び前記第二のデータ列につき、データ列を構成する各データの順番を、同一の規則に従って入れ替える手段を有し、順番が入れ替えられた前記第一のデータ列及び前記第二のデータ列に対して、それぞれ、前記第一の変形及び前記第二の変形を行うことを特徴とする請求項１〜１２のいずれか１項に記載のデータ秘匿型内積計算システム。
【請求項１４】
第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るための方法であって、
前記第一の組織の装置は、前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力し、
前記第二の組織の装置は、前記第二のデータ列に対して秘匿のための第二の変形を行い、変形された第二のデータ列を前記第三の組織の装置へ出力し、
前記第三の組織の装置は  前記変形された第一のデータ列と前記変形された第二のデータ列との内積を計算して、該内積を少なくとも前記第二の組織の装置へ返送し、
前記第一の組織の装置は、前記第二の組織の装置へ、自装置が行った前記第一の変形に関する情報を送信し、
前記第二の組織の装置は、自装置が行った前記第二の変形に関する情報と前記第一の組織の装置から受信した情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めることを特徴とするデータ秘匿型内積計算方法。
【請求項１５】
前記第三の組織の装置は、計算した前記内積を前記第一の組織の装置へも返送し、
前記第二の組織の装置は、前記第一の組織の装置へ、自装置が行った前記第二の変形に関する情報を送信し、
前記第一の組織の装置は、自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信した情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めることを特徴とする請求項１４に記載のデータ秘匿型内積計算方法。
【請求項１６】
第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るためのシステムにおける、第一の組織の装置として、コンピュータを動作させるプログラムであって、前記コンピュータに、
前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力させ、
前記第三の組織の装置から返送される、前記変形された第一のデータ列と前記第二の組織の装置から出力されたデータ列との内積を受け取らせ、
前記第二の組織の装置から、該第二の組織の装置が前記第三の組織の装置へ出力する前に秘匿のために前記第二のデータ列に対して行った第二の変形に関する情報を受信させ、
自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めさせることを特徴とするプログラム。
【請求項１７】
第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るためのシステムにおける、第三の組織の装置として、コンピュータを動作させるプログラムであって、前記コンピュータに、
前記第一の組織の装置から、前記第一のデータ列に対して秘匿のための第一の変形を行って得られたデータ列を受け取らせ、
前記第二の組織の装置から、前記第二のデータ列に対して秘匿のための第二の変形を行って得られたデータ列を受け取らせ、
前記第一の組織の装置から受け取ったデータ列と前記第二の組織の装置から受け取ったデータ列との内積を計算させ、
前記内積を、前記第一の組織の装置及び前記第二の組織の装置の少なくとも一方が、該内積と前記第一の変形に関する情報と前記第二の変形に関する情報とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めることができるよう、前記第一の組織の装置及び前記第二の組織の装置の少なくとも一方へ返送させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個人のプライバシに関わるデータ等、他組織から秘匿すべきデータを、複数の組織のそれぞれが有しているときに、データの秘匿性を守りながら、組織間でデータの内積を計算可能とする技術に関する。
【背景技術】
【０００２】
近年、個人情報や行動記録などの「ライフログ」を解析し、さまざまなビジネスシーンに活用する事例が増えている。例えば、ＰＯＳデータなどの購買履歴、電子マネーの利用履歴、交通網の乗車履歴、車のＧＰＳ情報、携帯電話やスマートフォンなどの通話履歴や利用履歴まで、あらゆる場面でデータを解析することが求められている。
【０００３】
「ライフログ」から得られる情報は有益なものが多く、行動パターンの推定やリコメンド、ターゲットマーケティング等、多くの応用が考えられる。一方で、プライバシ情報の取り扱いに関する懸念も大きい。
【０００４】
特に、上述したような「ライフログ」のデータは、同一の個人についての異なるデータを異なる組織が有していることが多い。複数の組織間に跨って「ライフログ」の解析をすることができれば、極めて有用な情報が得られる可能性が高いが、プライバシの保護に対する懸念もまた、極めて大きなものとなる。
【０００５】
プライバシ情報の利用及び保護の両面からの要望を実現するために、プライバシ保護データマイニング（ＰＰＤＭ）と呼ばれる技術が開発されており、複数の組織間でプライバシを保護しつつデータマイニングを行う手法が、種々提唱されている（非特許文献１参照）。
【０００６】
また、複数の組織間で行うデータマイニングの一つとして、複数の組織がそれぞれ有する情報同士の相関関係を求めるということがある。相関関係を求める処理は、データ列（ベクトル）間の内積を計算する処理に帰結する。プライバシ情報を秘匿しながら、すなわち、二者間で互いに自身の有するベクトルを秘匿したまま、内積を計算できるようにする「秘匿内積」の手法も、提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２７２９９５号公報
【非特許文献】
【０００８】
【非特許文献１】佐久間 淳、小林重信「プライバシ保護データマイニング」、人工知能学会誌  Ｖｏｌ．２４  Ｎｏ．２（２００９）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
複数の組織間でプライバシを保護しつつデータマイニングを行う既存の手法の一つは、いついかなる場合も情報を漏洩させず決められたプロトコルから逸脱しないエージェントを利用するというものである。このようなエージェントは、ＴＴＰ（Trusted Third Party：信頼できる第三者機関）と呼ばれる。ＴＴＰを想定した理想モデルでは、データ解析に必要な情報をＴＴＰに集約する。
【００１０】
ＴＴＰの存在を仮定したプロトコルは、理想モデルにおいては、データの安全性と解析結果の正確さの両面で優れている。しかし、現実世界では、そのような理想モデルを実現することは困難であり、しかも情報がＴＴＰに集約されていることから、ＴＴＰからの情報漏洩したときの被害が甚大となってしまう。
【００１１】
プライバシ保護データマイニングの既存の他の手法は、第三者機関を利用せずに、暗号学的アプローチをとるものである。具体的には、二つの巨大素数の積の因数分解は計算量的に困難である等の一定の暗号学上の仮定の下で、二つのエージェントが有する秘密入力を引数とする任意の多項式時間の計算を、エージェントを超えて行うことを可能にする手法が提案されており、この手法は、三つ以上のエージェントが有する秘密入力を扱うことができるセキュアなＭＰＣ（Multi-Party Computation）として拡張されている。ＭＰＣでは、原理的には、任意の分散データマイニングができるとされるが、計算量が極めて大きいため、データ量が大きい場合には、実運用に耐えられる時間で計算することは難しい。
【００１２】
また、セキュリティプロトコルと準同型公開鍵暗号等の暗号学的ツールを組み合わせる手法も提案されている。準同型公開鍵暗号とは、暗号化関数が準同型性を有し、暗号化されたままデータを加算することが可能な公開鍵暗号である。ＭＰＣアプローチでは、汎用的な関数の安全な計算を目標とするが、準同型公開鍵暗号を用いる手法は、特定の関数の安全な計算を効率的に行うことを目指している。しかし、この手法においても、公開鍵暗号による暗号化・復号化や、準同型公開鍵暗号を利用した計算等があるため、実用的な時間でデータマイニングを行うには、計算量が多過ぎることが懸念される。
【００１３】
そして、「秘匿内積」を求める既存の手法（特許文献１）は、秘匿すべき第１のｎ次元ベクトルＶａを有する第一の計算装置が、乱数Ｗiに基づくスカラー値と乱数Ｒjとに基づいてベクトルＶａを線形変換し、線形変換したｎ次元ベクトルにおける各要素に対して乱数Ｍiで除算した剰余をｐ回算出し、この剰余を各要素とするｎ次元変換ベクトルＸを、秘匿すべき第２のｎ次元ベクトルＶｂを有する第二の計算装置へ送り、第二の計算装置が、ベクトルＸとベクトルＶｂの内積Ｚを計算して第一の計算装置へ送り、第一の計算装置は、内積Ｚに対して逆変換を行うことにより、ベクトルＶａとベクトルＶｂの内積を得るというものである。この手法が適用できるベクトルＶａ及びベクトルＶｂは、各要素が整数であるものに限られる。
【００１４】
しかも、上記の手法においては、ｎ次元ベクトルＶａの内容によっては、第二の計算装置が、受信したｎ次元変換ベクトルＸの各要素の公約数をとる等して逆変換を行うための乱数の値を推測することにより、第一の計算装置内で秘匿されるべき元のＶａの各要素の値を計算できてしまう場合がある。そのような事態を防ぎ、実用上十分な安全性を確保するためには、各乱数Ｒ、Ｍ、Ｗの桁数を入力変数の桁数に対して十分に大きくしなければならず、剰余を算出する回数ｐも十分に大きくしなければならないが、そうすると、計算量が膨大になってしまう。
【００１５】
本発明は、上述した状況に鑑み、理想的に信頼できる第三者機関は存在しないという現実的な環境の下で、第三者機関を利用することにより、秘匿すべきデータを有する当事者同士だけで計算しようとするよりも、計算量を実用レベルまで小さくしつつ、複数の組織がそれぞれの組織内で秘匿すべきデータを対象として、内積を求めることを可能にすることを目的とする。
【課題を解決するための手段】
【００１６】
本発明の原理に従う一つの例に係るデータ秘匿型内積計算システムは、第一の組織内で秘匿すべき第一のデータ列を保存する保存手段を有する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する保存手段を有する第二の組織の装置と、入力されたデータ列間の内積を計算する計算手段を有する第三の組織の装置とを備える。
【００１７】
そして、第一の組織の装置は、前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力する出力手段を備え、第二の組織の装置は、前記第二のデータ列に対して秘匿のための第二の変形を行い、変形された第二のデータ列を前記第三の組織の装置へ出力する出力手段を備え、第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算して、該内積を少なくとも前記第二の組織の装置へ返送する返送手段を備える。
【００１８】
さらに、第一の組織の装置は、前記第二の組織の装置へ、自装置が行った前記第一の変形に関する情報を送信する送信手段を備え、第二の組織の装置は、自装置が行った前記第二の変形に関する情報と前記第一の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求める計算手段を備える。
【００１９】
なお、上述したデータ秘匿型内積計算システムにおいて、前記第三の組織の装置は、計算した前記内積を前記第一の組織の装置へも返送するものとし、前記第一の組織の装置は、自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求める計算手段をも備えるものとし、前記第二の組織の装置は、前記第一の組織の装置へ、自装置が行った前記第二の変形に関する情報を送信する送信手段をも備えるものとしてもよい。
【００２０】
上記の構成において、内積を計算する第三の組織の装置が、第一の組織の装置及び第二の組織の装置のそれぞれ受け取るのは、変形されたデータ列であり、この第三の組織の装置が扱う情報のみからは、秘匿されるべき元のデータ列を得ることはできない。したがって、第三の組織の装置において、情報漏洩が起きたとしても、第三者に対するデータの秘匿性を保つことが可能であり、現実的な第三者機関を、第三の組織の装置として利用することが可能になる。
【００２１】
また、第一の組織の装置は、第二の組織の装置が有するデータ列は勿論のこと、それが変形されたデータ列すら受け取ることはなく、第三の組織の装置が計算した内積と、第二の組織の装置がどのような変形を行ったかに関連する情報とを受け取るだけであるため、第三の組織の装置から情報が漏洩しない限り、第二の組織内で秘匿されるべき元のデータ列を得ることはできない。同様に、第二の組織の装置は、第一の組織内で秘匿されるべき元のデータ列を得ることはできない。したがって、第一及び第二の組織のそれぞれの中で秘匿すべきデータ列に対して行う変形を、比較的簡単なものとしても、相手の組織に対する秘匿性を含めてデータの秘匿性を保つことが可能であり、計算量を実用レベルに抑えることが可能になる。
【００２２】
上述したデータ秘匿型内積計算システムにおいて、前記第一のデータ列の各データと、前記第二のデータ列の各データとを、同一の各データＩＤに対応付けられるものとしてもよい。
【００２３】
これにより、第一の組織と第二の組織がそれぞれ独立に有するデータ列が、共通のＩＤ空間に係るものとなり、複数の組織がそれぞれ有する情報同士の相関関係を求めることが可能になる。例えば、航空会社（第一の組織）が、顧客の渡航情報を有しており、病院（第二の組織）が、患者の病症情報を有している場合に、各ＩＤによって個人が特定されないようにしながら、両組織で同一のＩＤが同一人の情報に対応付くようにしておけば、二つのデータ列の内積を求めることにより、特定の地域に渡航し、且つ、特定の病症にかかった人の数を求めるようなことが可能になる。
【００２４】
上述したデータ秘匿型内積計算システムにおいて、前記第一の組織の装置の送信手段（及び前記第二の組織の装置の送信手段）を、前記第三の組織の装置が前記計算手段による計算に用いた前記変形された第一のデータ列及び前記変形された第二のデータ列を消去したことが確認された後に、前記情報を送信するものとしてもよい。
【００２５】
これにより、第二の組織の装置が第一の変形に関する情報を得た後で、第三の組織の装置に保持されていた変形された第一のデータ列の情報が漏洩することにより、第二の組織において第一の組織内で秘匿されるべき第一のデータ列が計算可能になってしまうという事態を、生じさせないようにすることが可能になる。同様に、第一の組織において第二の組織内で秘匿されるべき第二のデータ列が可能になってしまうという事態を、生じさせないようにすることが可能になる。
【００２６】
上述したデータ秘匿型内積計算システムにおいて、前記第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算すると、前記内積を残して、前記変形された第一のデータ列及び前記変形された第二のデータ列を消去し、消去後に、前記内積を前記第二の組織の装置（及び前記第一の組織の装置）へ返送するものとし、前記第一の組織の装置の送信手段（及び前記第二の組織の装置の送信手段）は、前記第三の組織の装置からの前記内積が受け取られた後に、前記情報を送信するものとしてもよい。
【００２７】
これにより、第三の組織の装置が、変形されたデータ列を保持しているのは、第一の組織の装置及び第二の組織の装置のそれぞれから変形されたデータ列を受け取ってから、内積の計算を終了するまでの、短い時間に限られるから、第三の組織の装置からの情報漏洩のリスクを十分に低くすることが可能になる。
【００２８】
上述したデータ秘匿型内積計算システムにおいて、前記第三の組織の装置は、前記変形された第一のデータ列と前記変形された第二のデータ列との内積を前記計算手段により計算した後、前記変形された第一のデータ列及び前記変形された第二のデータ列を消去し、これらのデータ列が消去前に組織外へ漏洩した可能性の有無を判断し、判断結果を前記第一の組織の装置（及び前記第二の組織の装置）へ通知する手段をさらに備えるものとし、前記第一の組織の装置の送信手段（及び前記第二の組織の装置の送信手段）は、前記第三の組織の装置から前記可能性が無とする判断結果が通知された後に、前記情報を送信するものとしてもよい。
【００２９】
これにより、第一の組織の装置は、第三の組織の装置において情報漏洩が起きていないと判断されたことを確認した後に、第二の組織の装置へ第一の変形に関する情報を送信することが可能になり、第三の組織の装置において情報漏洩が起きた可能性があることが通知された場合には、第二の組織の装置への第一の変形に関する情報を送信しないことにより、第二の組織が第一のデータ列を計算できない状態を保つことが可能になる。同様に、第二の組織の装置は、第二の変形に関する情報を送信しないことにより、第一の組織が第二のデータ列を計算できない状態を保つことが可能になる。
【００３０】
上述したデータ秘匿型内積計算システムにおいて、少なくとも、前記第一の組織の装置と前記第三の組織の装置との間の通信、及び、前記第二の組織の装置と前記第三の組織の装置との間の通信が、該通信を行う二者以外に傍受されないよう、且つ、第三者が通信相手になりすますことのできないよう、保護されているようにするとよい。これに加えて、前記第一の組織の装置と前記第二の組織の装置との間の通信も、該通信を行う二者以外に傍受されないよう、且つ、第三者が通信相手になりすますことのできないよう、保護されているようにしてもよい。
【００３１】
これにより、通信に関わる安全性と計算に関わる安全性とを分離して、通信については、既存の暗号化技術等を応用して、安全性を確保し、計算については、本発明の原理に従って情報理論的安全性に基づく手法を用いることにより、比較的少ない計算量で安全性を確保することが可能になる。
【００３２】
上述したデータ秘匿型内積計算システムにおいて、前記第三の組織の装置は、前記変形された第一又は第二のデータ列を構成する複数のデータのうち、所定数より多いデータの値が零である場合、前記内積の計算を行わず、前記内積の代わりに、計算拒否の通知を返送するものとしてもよい。
【００３３】
例えば、第一のデータ列が｛ｘ1，ｘ2，…，ｘN｝であるところに、第二のデータ列として｛１，０，…，０｝、｛０，１，…，０｝、…｛０，０，…，１｝（ｋ番目の要素が１で、その他の要素が全て０であるデータ列）を入力して、内積を求めると、第一のデータ列のｋ番目の要素の値（ｘk）を知ることができてしまい、これをｋ＝１〜Ｎとして繰り返せば、｛ｘ1，ｘ2，…，ｘN｝を全て知ることもできてしまう。これは、Ｎ個の要素のうちの１つ以外が全て０の場合に限らず、Ｎの大きさにも依存する所定割合よりも多くの要素が全て０であれば、各要素の値を推測することができてしまう。よって、このようなデータ列が入力された場合に、第三の組織の装置が内積を計算しないようになっていると、安全性を増すことが可能になる。
【００３４】
上述したデータ秘匿型内積計算システムにおいて、前記第三の組織の装置は、前記内積の計算に用いられた前記変形されたデータ列が、どの組織のどのデータＩＤセットに係るものであるかを保存しておき、所定期間内に、同一の組織の装置から同一のデータＩＤセットに係る前記変形されたデータ列を受け取った場合、前記内積の計算を行わず、前記内積の代わりに、計算拒否の通知を返送するものとしてもよい。
【００３５】
例えば、第一のデータ列が｛ｘ1，ｘ2，…，ｘN｝であるところに、第二のデータ列として、まず｛１，２，…，１｝（ｋ番目の要素が２で、その他の要素が全て１であるデータ列）を入力し、次に｛１，１，…，１｝（全ての要素が１であるデータ列）を入力して、初めに得られた内積から次に得られた内積を減算すると、第一のデータ列のｋ番目の要素の値（ｘk）を知ることができてしまう。よって、今回内積計算をすべく入力された二つのデータ列が、過去一定期間の間に内積を計算した二つのデータ列と、同じ組織の同じデータＩＤに係るものである場合に、第三の組織の装置が内積を計算しないようになっていると、安全性を増すことが可能になる。
【００３６】
以下には、上述したデータ秘匿型内積計算システムにおいて行われる第一及び第二の変形に関し、具体的な例を示す。
【００３７】
第一の例においては、前記第一の組織の装置が行う前記第一の変形は、第一の乱数を生成し、前記第一のデータ列を構成する各データに該第一の乱数を乗算するものであり、前記第二の組織の装置が行う前記第二の変形は、第二の乱数を生成し、前記第二のデータ列を構成する各データに該第二の乱数を乗算するものであり、前記第一の変形に関する情報は、前記第一の乱数であり、前記第二の変形に関する情報は、前記第二の乱数である。
【００３８】
上記第一の例は、計算量が少ないが、乱数をそれぞれ一つしか用いないと、変形後のデータ列における各要素の値のばらつき等から、元のデータ列の何らかの情報を推測されてしまう可能性があるため、後述するシャッフルの例を組み合わせて構成するか、もしくは、下記第二又は第三の例を採用する方が好ましい。
【００３９】
第二の例においては、前記第一の組織の装置が行う前記第一の変形は、第一の乱数列を生成し、前記第一のデータ列を構成する各データに該第一の乱数列を構成する各データを加算するものであり、前記第二の組織の装置が行う前記第二の変形は、第二の乱数列を生成し、前記第二のデータ列を構成する各データに該第二の乱数列を構成する各データを加算するものであり、前記第一の変形に関する情報は、前記第一の乱数列であり、前記第二の変形に関する情報は、前記第二の乱数列である。
【００４０】
そして、前記第一の組織の装置は、前記第一のデータ列と前記第二の乱数列との内積を計算し、該計算結果を、前記第二の組織の装置の計算手段が前記第一の組織の装置から受信された情報として利用できるように、前記第二の組織の装置へ送信する手段をさらに備える。前記第二の組織の装置が、前記第二のデータ列と前記第一の乱数列との内積を計算し、該計算結果を、前記第一の組織の装置の計算手段が前記第二の組織の装置から受信された情報として利用できるように、前記第一の組織の装置へ送信する手段をさらに備えてもよい。
【００４１】
上記第二の例は、元のデータ列に対して、それと同じ情報量を持つ乱数を用いた暗号化を行うことに相当し、完全秘匿性を有する（Shanon Secure）ということができる。つまり、第三の組織の装置から情報が漏洩したとしても、情報理論的安全性が期待されるということである。
【００４２】
第三の例においては、前記第一の組織の装置が行う前記第一の変形は、第一の乱数及び第一の乱数列を生成し、前記第一のデータ列を構成する各データに該第一の乱数を乗算した各結果に該第一の乱数列を構成する各データを加算するものであり、前記第二の組織の装置が行う前記第二の変形は、第二の乱数及び第二の乱数列を生成し、前記第二のデータ列を構成する各データに該第二の乱数を乗算した各結果に該第二の乱数列を構成する各データを加算するものであり、前記第一の変形に関する情報は、前記第一の乱数及び前記第一の乱数列であり、前記第二の変形に関する情報は、前記第二の乱数及び前記第二の乱数列である。
【００４３】
そして、前記第一の組織の装置は、前記第一のデータ列と前記第二の乱数列との内積を計算し、該計算結果を、前記第二の組織の装置の計算手段が前記第一の組織の装置から受信された情報として利用できるように、前記第二の組織の装置へ送信する手段をさらに備える。前記第二の組織の装置が、前記第二のデータ列と前記第一の乱数列との内積を計算し、該計算結果を、前記第一の組織の装置の計算手段が前記第二の組織の装置から受信された情報として利用できるように、前記第一の組織の装置へ送信する手段をさらに備えてもよい。
【００４４】
上記第三の例は、元のデータ列に対して、それより多い情報量を持つ乱数を用いた暗号化を行うことに相当し、完全秘匿性を有する（Shanon Secure）ということができる。第一の組織、第二の組織及び第三の組織の間で交換される情報は限定的であるので、元の第一及び第二のデータ列を推測するには、情報が足りないということである。
【００４５】
上述したデータ秘匿型内積計算システムにおいて、前記第一の組織の装置及び前記第二の組織の装置が、それぞれ、前記第一のデータ列及び前記第二のデータ列につき、データ列を構成する各データの順番を、同一の規則に従って入れ替える手段を有し、順番が入れ替えられた前記第一のデータ列及び前記第二のデータ列に対して、それぞれ、前記第一の変形及び前記第二の変形を行うようにしてもよい。
【００４６】
この構成は、ベクトル内の要素の順番を二つのベクトルで同じように入れ替えても、当該二つのベクトルの内積は入れ替え前の内積と同じになることを利用しており、上記第一乃至第三の例のいずれとも組み合わせて使うことができる。例えば、データ列の中の要素の順番をその都度シャッフルし、どのようにシャッフルするかを第一及び第二の組織間だけで共有するようにしておけば、第三者は、変形後のデータ列における各要素の値のばらつき等を見ても、各要素がどのデータＩＤに対応するかが分からないため、プライバシ情報を効果的に保護することが可能になる。
【００４７】
上述したデータ秘匿型内積計算システムの発明は、システム全体の方法の発明としても、汎用のコンピュータシステムを本システムとして動作させるためのプログラム（又はそのプログラムを記録した記録媒体）の発明としても、本システムにおける第一の組織の装置、第二の組織の装置、第三の組織の装置のいずれの物の発明としても、汎用のコンピュータを本システムの各々の装置として動作させるためのプログラム（又はそのプログラムを記録した記録媒体）の発明としても、本システムの各々の装置において実行される方法の発明としても、勿論成立するものである。以下に、そのうちの幾つかを例示する。
【００４８】
本発明の原理に従う一つの例に係る方法は、第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るための方法である。
【００４９】
そして、前記第一の組織の装置は、前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力し、前記第二の組織の装置は、前記第二のデータ列に対して秘匿のための第二の変形を行い、変形された第二のデータ列を前記第三の組織の装置へ出力し、前記第三の組織の装置は  前記変形された第一のデータ列と前記変形された第二のデータ列との内積を計算して、該内積を少なくとも前記第二の組織の装置へ返送する。
【００５０】
さらに、前記第一の組織の装置は、前記第二の組織の装置へ、自装置が行った前記第一の変形に関する情報を送信し、前記第二の組織の装置は、自装置が行った前記第二の変形に関する情報と前記第一の組織の装置から受信した情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求める。
【００５１】
なお、上述したデータ秘匿型内積計算方法において、前記第三の組織の装置は、計算した前記内積を前記第一の組織の装置へも返送し、前記第二の組織の装置は、前記第一の組織の装置へ、自装置が行った前記第二の変形に関する情報を送信し、前記第一の組織の装置は、自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信した情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めるようにしてもよい。
【００５２】
本発明の原理に従う一つの例に係るプログラムは、第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るためのシステムにおける、第一の組織の装置として、コンピュータを動作させるプログラムである。
【００５３】
この第一の組織用のプログラムは、前記コンピュータに、前記第一のデータ列に対して秘匿のための第一の変形を行い、変形された第一のデータ列を前記第三の組織の装置へ出力させ、前記第三の組織の装置から返送される、前記変形された第一のデータ列と前記第二の組織の装置から出力されたデータ列との内積を受け取らせ、前記第二の組織の装置から、該第二の組織の装置が前記第三の組織の装置へ出力する前に秘匿のために前記第二のデータ列に対して行った第二の変形に関する情報を受信させ、自装置が行った前記第一の変形に関する情報と前記第二の組織の装置から受信された情報と前記第三の組織の装置から受け取った前記内積とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めさせる。
【００５４】
本発明の原理に従う別の例に係るプログラムは、第一の組織内で秘匿すべき第一のデータ列を保存する第一の組織の装置と、第二の組織内で秘匿すべき第二のデータ列を保存する第二の組織の装置とが、第三の組織の装置を利用して、データの秘匿性を保ちながら前記第一のデータ列と前記第二のデータ列との内積を得るためのシステムにおける、第三の組織の装置として、コンピュータを動作させるプログラムである。
【００５５】
この第三の組織用のプログラムは、前記コンピュータに、前記第一の組織の装置から、前記第一のデータ列に対して秘匿のための第一の変形を行って得られたデータ列を受け取らせ、前記第二の組織の装置から、前記第二のデータ列に対して秘匿のための第二の変形を行って得られたデータ列を受け取らせ、前記第一の組織の装置から受け取ったデータ列と前記第二の組織の装置から受け取ったデータ列との内積を計算させ、前記内積を、前記第一の組織の装置及び前記第二の組織の装置の少なくとも一方が、該内積と前記第一の変形に関する情報と前記第二の変形に関する情報とに基づいて、前記第一のデータ列と前記第二のデータ列との内積を求めることができるよう、前記第一の組織の装置及び前記第二の組織の装置の少なくとも一方へ返送させる。
【発明の効果】
【００５６】
本発明によれば、例えば、現実的な第三者機関を利用して、計算量を実用レベルに抑えつつ、複数の組織がそれぞれの組織内で秘匿すべきデータを対象として、内積を求めることが可能となる。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態に係るデータ秘匿型内積計算システムの構成例を示す図
【図２】本システムにおける計算手順の第１の例を説明する図
【図３】本システムにおける計算手順の第２の例を説明する図
【図４】本システムにおける計算手順の第２の例（図３の続き）を説明する図
【図５】本システムにおける計算手順の第３の例を説明する図
【図６】本システムにおける計算手順の第３の例（図５の続き）を説明する図
【図７】本システムにおける計算手順の第３の例（図６の続き）を説明する図
【図８】本システムにおける計算手順の第４の例を説明する図
【図９】本システムにおける計算手順の第４の例（図８の続き）を説明する図
【図１０】本システムにおける計算手順の第４の例（図９の続き）を説明する図
【発明を実施するための形態】
【００５８】
以下、本発明の実施の形態に係るデータ秘匿型内積計算システムについて、例示のために、図面を用いて説明する。
【００５９】
本システムは、 共通なＩＤ空間に関して二つの独立な組織が何らかの情報を有する場合に、両組織が持つ情報はプライバシに関わる情報を含む可能性があるため、互いが相手の情報を得ることがないようにしながら、二つの組織が有するデータの関連性や傾向等を解析することを可能にする。この解析は、二つの組織が有するデータの相関係数を求めることにより行われる。本システムの特徴は、現実的な前提条件に基づくクラウド（第三者機関）の存在を利用して、二つの組織がそれぞれの情報を誰にも開示することなく、それらの情報の相関係数を求めることを、実用に適する計算量で、可能にすることにある。
【００６０】
本システムで行われる解析は、組織Ａ、Ｂが、ＩＤ空間Ｕ＝｛１，２，…，Ｎ｝を共有し、組織Ａ、Ｂのそれぞれが、このＩＤ空間に対応するデータ列（ベクトル）ＳX＝｛Ｘ1，Ｘ2，…，ＸN｝（｛Ｘi｝iと表す）、ＳY＝｛Ｙ1，Ｙ2，…，ＹN｝（｛Ｙi｝iと表す）を有し、ＳXとＳYの内容を自組織以外のいずれの組織にも開示することなく、ＳXとＳYの相関係数ρを求めることに帰着する。ρは、以下の式（数１）で求められる。なお、ベクトルＳX、ＳYを構成する各要素Ｘi、Ｙiは、それぞれ任意の実数とすることができる。
【００６１】
【数１】
2014206696.tif 000003
【００６２】
本システムでは、組織Ａと組織Ｂが有するデータの内積を、データを秘匿しながらの計算するに当たって、組織Ａ及び組織Ｂとは異なる第三者の存在を利用する。但し、ＴＴＰを仮定する理想モデルとは異なり、本システムにおける第三者機関に求められる要件は、ビジネスシーンに応用可能な現実的なものである。このような要件で第三者が利用できるということは、近年のクラウドモデルの浸透に伴い、クラウド上でデータ解析を行うことが一般的になりつつある状況では、特に有用である。つまり、本システムによれば、プライバシを保護しつつ、クラウド上の計算リソースを用いて効率的にデータ解析を行うことも可能になる。
【００６３】
ここで、上述した相関係数ρを求める問題を簡略化すると、以下のようなＳx（数２）とＳy（数３）を定義し、ＳxとＳyを他者に開示することなく、その内積ｓ＝Σｘiｙiを求める問題になる。
【００６４】
【数２】
2014206696.tif 000004
【００６５】
【数３】
2014206696.tif 000005
【００６６】
図１に、本システムの構成の一例を示す。本システムは、組織Ａのコンピュータ１０、組織Ｂのコンピュータ２０、第三者機関のコンピュータ３０を備える。組織Ａのコンピュータ１０は、データ保持部１００に、組織Ｂ及び第三者機関を含む全ての他組織から秘匿すべきＳX＝｛Ｘi｝iを保存しており、組織Ｂのコンピュータ２０は、データ保持部２００に、組織Ａ及び第三者機関を含む全ての他組織から秘匿すべきＳY＝｛Ｙi｝iを保存している。
【００６７】
これらの秘匿すべきデータは、各組織から漏洩することのないよう、暗号化等の安全化処理が施されて保存される。安全性が確保されていれば、各組織のコンピュータ内ではなく、ネットワークを介したクラウド上（但し、本システムにおける第三者機関のコンピュータ３０とは異なるストレージサービス）に保存されても構わない。
【００６８】
組織Ａ、Ｂのコンピュータは、それぞれ独自の秘匿用パラメータ保持部を備えており、組織Ａのデータ変形処理部１１０は、自身の秘匿用パラメータ保持部１２０に保持されたパラメータを用いて、秘匿すべきデータＳX＝｛Ｘi｝iに変形を加え、組織Ｂのデータ変形処理部２１０は、自身の秘匿用パラメータ保持部２２０に保持されたパラメータを用いて、秘匿すべきデータＳY＝｛Ｙi｝iに変形を加える。このように秘匿用パラメータを用いて予め定められた変形処理を行うことにより、プライバシに関する情報は、隠蔽されることになる。
【００６９】
そして、組織Ａ、Ｂのコンピュータは、それぞれの通信部１３０、２３０から、第三者機関のコンピュータの通信部３２０へ、変形を加えたデータを送信する。変形処理後のデータからは、変形に用いられた秘匿用パラメータを知らない限り、元のデータを復元することはできない。
【００７０】
よって、第三者組織のコンピュータから変形処理後のデータが漏洩したとしても、組織Ａ、Ｂそれぞれの秘匿用パラメータの値が漏洩しない限り、元のデータＳX、ＳYがそのまま漏洩することはない。
【００７１】
但し、後述するように、組織Ａ、Ｂ間では、内積の計算のためにそれぞれの秘匿用パラメータの値を交換するため、第三者組織のコンピュータから変形処理後のデータが漏洩すると、本システム外の組織は元のデータＳX、ＳYを復元できないものの、組織Ａは組織ＢのデータＳYを復元できてしまい、組織Ｂは組織ＡのデータＳXを復元できてしまう。これを防ぐためには、組織Ａ、Ｂ間で秘匿用パラメータの値を交換する前に、第三者組織のコンピュータを、存在しないものは漏洩のしようがないという状態にしておく（すなわち、変形処理後のデータを完全に消去しておく）とよい。
【００７２】
また、例えば、悪意者が、組織Ａと第三者組織との間の通信を傍受して、変形処理後のデータを取得するとともに、組織Ａと組織Ｂとの間の通信を傍受して、組織Ａが用いた秘匿用パラメータの値を取得すれば、組織ＡのデータＳXが復元されてしまう。これを防ぐためには、組織Ａと第三者組織との間の通信路を、専用線にしたり暗号化したりして、傍受できないよう保護するとともに、組織Ａと組織Ｂとの間でも、秘匿用パラメータを暗号化して交換することが好ましい。
【００７３】
第三者機関のコンピュータ３０は、組織Ａのコンピュータ１０と組織Ｂのコンピュータ２０から、それぞれＮ個の任意の数字の列｛ｐi｝i及び｛ｑi｝i（ｉ∈Ｕ）を受け取り、内積演算部３１０が、Σｐiｑiを計算する。そして、計算結果を、通信部３２０を介して、組織Ａのコンピュータ１０と組織Ｂのコンピュータ２０のそれぞれへ返す。
【００７４】
本例では、組織Ａのコンピュータ１０と組織Ｂのコンピュータ２０が、同じ内部構成を有し、それぞれが、内積計算部１４０、２４０により、第三者機関のコンピュータ３０から返送された計算結果に基づいて、自身で内積ｓ＝Σｘiｙiを求められるようにしている。
【００７５】
代替例として、一方の組織（説明のため組織Ｂとする）は、ＳYを変形処理した後のデータ｛ｑi｝iを第三者機関へ渡すが、第三者機関の計算結果は、組織Ａにのみ返され、組織Ｂはその後、自身が変形処理に用いた秘匿用パラメータ等、元のデータを秘匿しながら内積を計算するのに必要な情報を組織Ａへ渡すが、内積ｓの計算は、組織Ａのみが行うようにしてもよい。
【００７６】
第三者機関のコンピュータ３０は、組織Ａ、Ｂから受信した｛ｐi｝i及び｛ｑi｝iを、内積演算部３１０内のワーキングメモリ３３０に記憶するが、蓄積ストレージ（図示せず）には記憶しないこととすると、情報漏洩のリスクを低減することができる。第三者機関のメモリ制御部３４０は、Σｐiｑiの計算が終了したら、計算結果のみを残して、ワーキングメモリ３３０内（蓄積ストレージを併用する場合には蓄積ストレージ内も）にある｛ｐi｝i及び｛ｑi｝iや計算過程のデータ等の情報を全て削除し、削除が完了した後に、計算結果を組織Ａのコンピュータ１０及び組織Ｂのコンピュータ２０へ送信する。
【００７７】
この計算結果を受信した組織Ａのコンピュータ１０は、送信制御部１５０による制御の下、計算結果の受信が確認された後に、秘匿用パラメータ保持部１２０に保持されている秘匿用パラメータの値を通信部１３０から通信部２３０へ送り、組織Ｂのコンピュータ２０が内積計算部２４０で内積ｓを計算できるようにする。同様に、組織Ｂのコンピュータ２０は、送信制御部２５０による制御の下、第三者機関からの計算結果の受信が確認された後に、秘匿用パラメータ保持部２２０に保持されている秘匿用パラメータの値を通信部２３０から通信部１３０へ送り、組織Ａのコンピュータ１０が内積計算部１４０で内積ｓを計算できるようにする。
【００７８】
別の例として、第三者機関のメモリ制御部３４０は、まず、計算結果を組織Ａのコンピュータ１０及び組織Ｂのコンピュータ２０へ送信し、その後に、計算のために扱った全ての情報を抹消し、抹消作業の完了を改めて組織Ａのコンピュータ１０及び組織Ｂのコンピュータ２０へ通知するものとしてもよい。
【００７９】
この場合は、組織Ａのコンピュータ１０は、送信制御部１５０による制御の下、第三者機関から抹消完了の通知を受けたことが確認された後に、秘匿用パラメータ保持部１２０に保持されている秘匿用パラメータの値を通信部１３０から通信部２３０へ送る。同様に、組織Ｂのコンピュータ２０は、送信制御部２５０による制御の下、第三者機関から抹消完了の通知を受けたことが確認された後に、秘匿用パラメータ保持部２２０に保持されている秘匿用パラメータの値を通信部２３０から通信部１３０へ送る。
【００８０】
つまり、組織Ａ、Ｂのコンピュータは、第三者機関から情報が漏洩するリスクが残っている（関連するデータが第三者機関のコンピュータで未だ消去されずに残っている）間は、自身の秘匿用パラメータの値を相手に送信しないようにすることにより、自身の秘匿すべきデータを相手に復元されてしまう可能性を低くすることができる。
【００８１】
さらに、第三者機関のコンピュータ３０において、情報を消去するまでの間に、何らかのインシデントにより情報が漏洩したことが発覚した場合には、その事実を検出して組織Ａのコンピュータ１０及び組織Ｂのコンピュータ２０へ通知することが好ましい。組織Ａ及び組織Ｂは、この通知を受けた場合には、自身の秘匿用パラメータの値を未だ相手に送信していなければ送信を止めたり、送信した値の破棄を相手に依頼したりすることにより、自身の秘匿すべきデータを相手に復元されてしまう可能性を低くすることができる。
【００８２】
あるいは、組織Ａ及び組織Ｂは、第三者機関のコンピュータ３０が情報を消去した後も、情報漏洩の有無を判断するまでにかかる時間に基づいて定められる所定期間の間、自身の秘匿用パラメータの値を相手に送らないものとし、所定期間の後、第三者機関から情報漏洩は無かったと判断される旨の通知を受けてから、自身の秘匿用パラメータの値を相手に送るようにしてもよい。
【００８３】
このように、組織Ａ、Ｂの各々の秘匿用パラメータの値も、自身で保持しているものはもとより、相手から受信したものについても、他者に漏洩することのないよう、保護すべきものである。よって、相手から受信した秘匿用パラメータの値は、内積計算部１４０、２４０内のワーキングメモリ（図示せず）のみに記憶し、内積ｓの計算が終了したら消去することが好ましい。
【００８４】
秘匿用パラメータ保持部１２０、２２０は、自身の秘匿用パラメータの値に、暗号化等の安全化処理を施して保持することが望ましい。また、一つの内積を求める毎に、秘匿用パラメータの値を変化させる（例えば、その都度、乱数を払い出す）こととし、秘匿用パラメータ保持部１２０、２２０が値を保持しているのは、ある一つの組織（以前の内積計算時と別の組織である可能性も同じ組織である可能性もある）との一つの内積を求めるために、秘匿すべきデータに変形を加える時から、その内積を求める処理が終了する時までとすると、より安全である。
【００８５】
組織Ａ、Ｂのそれぞれと第三者組織との間の通信の安全性に関しては、通常ビジネスで利用されている程度の安全性を持った通信の暗号化を行うことでよい。例えば、オンラインショッピングや電子決済、商取引、ネットバンキング等などで利用されているのと同程度の暗号化の仕組みがあればよい。
【００８６】
第三者機関のコンピュータ内に関連するデータが存在する間の情報漏洩のリスクを低くするには、第三者機関のコンピュータ３０が、組織Ａ専用の仮想空間を用意して、組織Ａのコンピュータ１０との間の通信に関連した処理のみに限定するとともに、組織Ｂ専用の仮想空間を用意して、組織Ｂのコンピュータ２０との間の通信に関連した処理のみに限定するようにすればよい。
【００８７】
また、全体の情報漏洩のリスクを低くするには、第三者機関のコンピュータ内に関連するデータが存在する期間を短くすることも有効であるため、ある二つの組織で一つの内積を求める際に、その二つの組織のコンピュータが両方とも同じタイミングで第三者機関のコンピュータにアクセスする（変形処理後のデータを送信する）ようにするとよい。
【００８８】
なお、組織Ａのコンピュータ１０と第三者機関のコンピュータ３０との間、組織Ｂのコンピュータ２０と第三者機関のコンピュータ３０との間、組織Ａのコンピュータ１０と組織Ｂのコンピュータ２０との間は、それぞれの間に別個の通信網（例えば、無線網と有線網等）があってもよいし、全てが一つの通信網（例えば、インターネット）に接続されるようになっていてもよい。
【００８９】
組織Ａ、Ｂのコンピュータ１０、２０は、例えば、コンピューティング機能を有する機器に本方式のためのプログラムをインストールすることにより、構成される。データ保持部１００、２００を暗号化されたデータとする場合の暗号／復号鍵や、秘匿用パラメータについては、その記憶やこれを用いた処理／逆処理を行う部分を、ハードウェア又はソフトウェア上のセキュリティを高めたモジュール内に設けるようにしてもよい。
【００９０】
第三者機関のコンピュータ３０は、例えば、汎用のサーバ又はサーバ群に本方式のためのプログラムをインストールすることにより、構成可能であり、クラウド上の計算サービスとして実現してもよい。
【００９１】
図１における各部の機能については、以下に示す具体例に沿ってさらに説明する。各部の機能は、ハードウェア又はソフトウェア、もしくはハードウェアとソフトウェアの組み合わせにより、実現することができる。
【００９２】
図２に示すように、本システムにおける計算手順の第１の例は、以下のように動作する。ここで、求めたい内積をｚ＝Σｘiｙiとする。
【００９３】
（１）組織Ａは、乱数α≠０を選び、｛α×ｘi｝iを第三者機関へ送信する。αは、秘匿用パラメータ保持部１２０に保持され、｛α×ｘi｝iは、データ変形処理部１１０により計算される。乱数αによって、元のｘiの情報は秘匿される。
【００９４】
（１’）組織Ｂは、乱数β≠０を選び、｛β×ｙi｝iを第三者機関へ送信する。βは、秘匿用パラメータ保持部２２０に保持され、｛β×ｙi｝iは、データ変形処理部２１０により計算される。乱数βによって、元のｙiの情報は秘匿される。
【００９５】
（２）第三者機関は、内積演算部３１０により、｛α×ｘi｝iと｛β×ｙi｝iとから、ｓ1＝Σ（α×ｘi）（β×ｙi）＝αβΣｘiｙi＝αβ×ｚを計算する。
【００９６】
（３）第三者機関は、ｓ1＝αβ×ｚの値を、組織Ａへ送信する。
【００９７】
（３’）第三者機関は、ｓ1＝αβ×ｚの値を、組織Ｂへ送信する。
【００９８】
（４）第三者機関が全ての情報を消去したことを確認した後、組織Ａと組織Ｂは、各々の秘匿用パラメータ保持部１２０、２２０に保持されているα、βの値を交換する。
【００９９】
（５）組織Ａの内積計算部１４０は、第三者機関から通信部１３０経由で受け取ったｓ1の値と、秘匿用パラメータ保持部１２０に保持されているαの値と、組織Ｂから通信部１３０経由で受け取ったβの値とから、ｓ1／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１００】
（５’）組織Ｂの内積計算部２４０は、第三者機関から通信部２３０経由で受け取ったｓ1の値と、秘匿用パラメータ保持部２２０に保持されているβの値と、組織Ａから通信部２３０経由で受け取ったαの値とから、ｓ1／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１０１】
上記の第１の例では、｛ｘi｝i、｛ｙi｝iの要素にゼロが含まれる場合に、十分な秘匿ができないことがあり得る。また、乱数をそれぞれ一つしか用いていないと、変換後であっても要素の値のばらつきから何らかの情報を推測されることが危惧される。
【０１０２】
そこで、第１の例において、要素の順番を入れ替えるステップを追加したのが、図３〜４に示す第２の例である。第２の例は、ベクトルｖ内の要素の順番を入れ替える置換をＳ（ｖ）としたときに、任意の置換Ｓについて、置換後のＳ（ＳX）、Ｓ（ＳY）の内積はＳX、ＳYの内積と同じになることを利用しており、以下のように動作する。
【０１０３】
（０）組織Ａは、Ｎ個の要素の順番を入れ替えるための置換（関数）Ｓを任意に生成し、組織Ｂへ送信する。
【０１０４】
（１）組織Ａは、乱数α≠０を選んで、秘匿用パラメータ保持部１２０に保持するとともに、置換Ｓに従って｛ｘi｝iの要素の順番を入れ替えたＳ（｛α×ｘi｝i）を、データ変形処理部１１０により計算し、第三者機関へ送信する。要素の順番が任意に入れ替えられるので、元のベクトル｛ｘi｝iが要素の順番に傾向を有する場合も、情報を隠蔽することができる。
【０１０５】
（１’）組織Ｂは、乱数β≠０を選んで、秘匿用パラメータ保持部２２０に保持するとともに、置換Ｓに従って｛ｙi｝iの要素の順番を入れ替えたＳ（｛β×ｙi｝i）を、データ変形処理部２１０により計算し、第三者機関へ送信する。要素の順番が任意に入れ替えられるので、元のベクトル｛ｙi｝iが要素の順番に傾向を有する場合も、情報を隠蔽することができる。
【０１０６】
（２）第三者機関は、内積演算部３１０により、Ｓ（｛α×ｘi｝i）とＳ（｛β×ｙi｝i）とから、ｓ2＝Σ（α×ｘi）（β×ｙi）＝αβΣｘiｙi＝αβ×ｚを計算する。
【０１０７】
（３）第三者機関は、ｓ2＝αβ×ｚの値を、組織Ａへ送信する。
【０１０８】
（３’）第三者機関は、ｓ2＝αβ×ｚの値を、組織Ｂへ送信する。
【０１０９】
（４）第三者機関が全ての情報を消去したことを確認した後、組織Ａと組織Ｂは、各々の秘匿用パラメータ保持部１２０、２２０に保持されているα、βの値を交換する。
【０１１０】
（５）組織Ａの内積計算部１４０は、第三者機関から通信部１３０経由で受け取ったｓ2の値と、秘匿用パラメータ保持部１２０に保持されているαの値と、組織Ｂから通信部１３０経由で受け取ったβの値とから、ｓ2／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１１１】
（５’）組織Ｂの内積計算部２４０は、第三者機関から通信部２３０経由で受け取ったｓ2の値と、秘匿用パラメータ保持部２２０に保持されているβの値と、組織Ａから通信部２３０経由で受け取ったαの値とから、ｓ2／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１１２】
なお、ベクトル内の要素の順番を入れ替える置換を適用して安全性を高める手法は、後述する第３の例及び第４の例にも、その他の例にも組み合わせることが可能である。
【０１１３】
図５〜７には、情報理論的により安全にした計算手順として、第３の例を示す。第３の例は、組織Ａ、Ｂ及び第三者機関の間で交換される情報を全ての情報と比較して限定的にすることで、｛ｘi｝iや｛ｙi｝iを推測するには情報が足りないようにするものであり、以下のように動作する。
【０１１４】
（１）組織Ａは、乱数α≠０と、乱数の列｛ａi｝iを選んで、秘匿用パラメータ保持部１２０に保持するとともに、｛α×ｘi＋ａi｝iを、データ変形処理部１１０により計算し、第三者機関へ送信する。この変形は、入力に対して、それ以上の情報量を持つ乱数を用いた暗号を行うことに相当し、第三者機関が扱うデータ（｛α×ｘi＋ａi｝i）が単独で漏洩したとしても、元のデータ｛ｘi｝iにつき、情報理論的安全性が保証される。
【０１１５】
（１’）組織Ｂは、乱数β≠０と、乱数の列｛ｂi｝iを選んで、秘匿用パラメータ保持部２２０に保持するとともに、｛β×ｙi＋ｂi｝iを、データ変形処理部２１０により計算し、第三者機関へ送信する。この変形は、入力に対して、それ以上の情報量を持つ乱数を用いた暗号を行うことに相当し、第三者機関が扱うデータ（｛β×ｙi＋ｂi｝i）が単独で漏洩したとしても、元のデータ｛ｙi｝iにつき、情報理論的安全性が保証される。
【０１１６】
（２）第三者機関は、内積演算部３１０により、｛α×ｘi＋ａi｝iと｛β×ｙi＋ｂi｝iとから、Ｚ＝Σ（α×ｘi＋ａi）（β×ｙi＋ｂi）＝αβΣｘiｙi＋αΣｂiｘi＋βΣａiｙi＋Σａiｂi＝αβ×ｚ＋α×ｓ3＋β×ｓ4＋ｓ5を計算する。
【０１１７】
（３）第三者機関は、Ｚの値を、組織Ａへ送信する。
【０１１８】
（３’）第三者機関は、Ｚの値を、組織Ｂへ送信する。
【０１１９】
（４）第三者機関が全ての情報を消去したことを確認した後、組織Ａと組織Ｂは、各々の秘匿用パラメータ保持部１２０、２２０に保持されている｛ａi｝iの各値、｛ｂi｝iの各値を交換する。
【０１２０】
（５）組織Ａの内積計算部１４０は、データ保持部１００に保存されている｛ｘi｝iと、秘匿用パラメータ保持部１２０に保持されている｛ａi｝iと、組織Ｂから通信部１３０経由で受け取った｛ｂi｝iとから、ｓ3＝Σｂiｘi及びｓ5＝Σａiｂiを計算する。
【０１２１】
（５’）組織Ｂの内積計算部２４０は、データ保持部２００に保存されている｛ｙi｝iと、秘匿用パラメータ保持部２２０に保持されている｛ｂi｝iと、組織Ａから通信部２３０経由で受け取った｛ａi｝iとから、ｓ4＝Σａiｙi及びｓ5＝Σａiｂiを計算する。
【０１２２】
（６）組織Ａは、計算したｓ3の値と、秘匿用パラメータ保持部１２０に保持されているαの値とを、組織Ｂへ送り、組織Ｂは、計算したｓ4の値と、秘匿用パラメータ保持部２２０に保持されているβの値とを、組織Ａへ送る。
【０１２３】
（７）組織Ａの内積計算部１４０は、先に計算したｓ3及びｓ5の値と、第三者機関から通信部１３０経由で受け取ったＺの値と、秘匿用パラメータ保持部１２０に保持されているαの値と、組織Ｂから通信部１３０経由で受け取ったｓ4及びβの値とから、（Ｚ−α×ｓ3−β×ｓ4−ｓ5）／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１２４】
（７’）組織Ｂの内積計算部２４０は、先に計算したｓ4及びｓ5の値と、第三者機関から通信部２３０経由で受け取ったＺの値と、秘匿用パラメータ保持部２２０に保持されているβの値と、組織Ａから通信部２３０経由で受け取ったｓ3及びαの値とから、（Ｚ−α×ｓ3−β×ｓ4−ｓ5）／αβを計算することにより、ｚ＝Σｘiｙiを求める。
【０１２５】
なお、第３の例を部分的に実施する第４の例として、図８〜１０に示すように、以下の計算手順がある。
【０１２６】
（１）組織Ａは、乱数の列｛ａi｝iを選んで、秘匿用パラメータ保持部１２０に保持するとともに、｛ｘi＋ａi｝iを、データ変形処理部１１０により計算し、第三者機関へ送信する。この変形は、入力に対して、それと同じ情報量を持つ乱数を用いた暗号を行うことに相当し、第三者機関が扱うデータ（｛ｘi＋ａi｝i）が単独で漏洩したとしても、元のデータ｛ｘi｝iにつき、情報理論的安全性が保証される。
【０１２７】
（１’）組織Ｂは、乱数の列｛ｂi｝iを選んで、秘匿用パラメータ保持部２２０に保持するとともに、｛ｙi＋ｂi｝iを、データ変形処理部２１０により計算し、第三者機関へ送信する。この変形は、入力に対して、それと同じ情報量を持つ乱数を用いた暗号を行うことに相当し、第三者機関が扱うデータ（｛ｙi＋ｂi｝i）が単独で漏洩したとしても、元のデータ｛ｙi｝iにつき、情報理論的安全性が保証される。
【０１２８】
（２）第三者機関は、内積演算部３１０により、｛ｘi＋ａi｝iと｛ｙi＋ｂi｝iとから、Ｚ＝Σ（ｘi＋ａi）（ｙi＋ｂi）＝Σｘiｙi＋Σｂiｘi＋Σａiｙi＋Σａiｂi＝ｚ＋ｓ3＋ｓ4＋ｓ5を計算する。
【０１２９】
（３）第三者機関は、Ｚの値を、組織Ａへ送信する。
【０１３０】
（３’）第三者機関は、Ｚの値を、組織Ｂへ送信する。
【０１３１】
（４）第三者機関が全ての情報を消去したことを確認した後、組織Ａと組織Ｂは、各々の秘匿用パラメータ保持部１２０、２２０に保持されている｛ａi｝iの各値、｛ｂi｝iの各値を交換する。
【０１３２】
（５）組織Ａの内積計算部１４０は、データ保持部１００に保存されている｛ｘi｝iと、秘匿用パラメータ保持部１２０に保持されている｛ａi｝iと、組織Ｂから通信部１３０経由で受け取った｛ｂi｝iとから、ｓ3＝Σｂiｘi及びｓ5＝Σａiｂiを計算する。
【０１３３】
（５’）組織Ｂの内積計算部２４０は、データ保持部２００に保存されている｛ｙi｝iと、秘匿用パラメータ保持部２２０に保持されている｛ｂi｝iと、組織Ａから通信部２３０経由で受け取った｛ａi｝iとから、ｓ4＝Σａiｙi及びｓ5＝Σａiｂiを計算する。
【０１３４】
（６）組織Ａは、計算したｓ3の値を、組織Ｂへ送り、組織Ｂは、計算したｓ4の値を、組織Ａへ送る。
【０１３５】
（７）組織Ａの内積計算部１４０は、先に計算したｓ3及びｓ5の値と、第三者機関から通信部１３０経由で受け取ったＺの値と、組織Ｂから通信部１３０経由で受け取ったｓ4の値とから、Ｚ−ｓ3−ｓ4−ｓ5を計算することにより、ｚ＝Σｘiｙiを求める。
【０１３６】
（７’）組織Ｂの内積計算部２４０は、先に計算したｓ4及びｓ5の値と、第三者機関から通信部２３０経由で受け取ったＺの値と、組織Ａから通信部２３０経由で受け取ったｓ3の値とから、Ｚ−ｓ3−ｓ4−ｓ5を計算することにより、ｚ＝Σｘiｙiを求める。
【０１３７】
上述した第３の例及び第４の例では、元のベクトルである｛ｘi｝i、｛ｙi｝iを構成する各値が０か１に限られるものであっても、乱数ベクトル｛ａi｝i、｛ｂi｝iを構成する各値を任意の０以外の実数とすることにより、元のベクトルの情報を秘匿することができる。
【０１３８】
但し、例えば、組織Ａのベクトル｛ｘi｝iに対して、組織Ｂが、一つの要素（例えば、ｋ番目の要素）だけを１とし、他の要素を全て０としたベクトル｛ｙi｝iを入力すると、求められるｚ＝Σｘiｙiはｘkの値と等しくなってしまい、ｋ＝１〜Ｎについて入力を変えて内積を計算すれば、悪意ある組織Ｂは、組織Ａのベクトル｛ｘi｝iを知ることができてしまう。
【０１３９】
このような攻撃を防ぐため、第三者機関のコンピュータは、一定数より少ない数の要素のみが値を持ちそれ以外の要素が０であるような入力が、ある組織から受信された場合、内積の計算を拒否する構成となっていることが望ましい。
【０１４０】
さらに、例えば、組織Ｂが、全ての要素が１であるベクトル｛ｙi｝iを入力とした内積の計算と、一つの要素（例えば、ｋ番目の要素）だけが２で他の要素は全て１のベクトル｛ｙi｝iを入力とした内積の計算とを行い、後者の結果から前者の結果を減算すれば、ｘkの値が求められるため、同様に、悪意ある組織Ｂは、組織Ａのベクトル｛ｘi｝iを知ることができてしまう。
【０１４１】
このような攻撃をも防ぐためには、相手の同じ入力に対して内積を複数回求めることを拒否するようにすればよい。例えば、第三者機関に内積演算を依頼する際、組織Ｂは、組織Ａの特定のＩＤ空間のデータ列との間の内積演算という指定をすることになるから、組織Ｂが、現在から所定期間過去へ遡った期間内に、同一の指定をして内積演算をしていれば、その依頼を拒否するように、第三者機関のコンピュータを構成しておくとよい。
【０１４２】
上記のいずれの例の計算手順においても、第三者機関での計算後、第三者機関のコンピュータから関連する情報が全て消去されたことを確認してから、次のステップに進むため、それ以降は、第三者機関が扱う情報に関する漏洩リスクは考えなくてよい。つまり、計算を行う第三者機関では、情報の永続化をしないため、ある計算に付随する情報漏洩リスクは、計算が終了するまでの短い時間に限られる。
【０１４３】
また、上記のいずれの例の計算手順も、プロトコルがシンプルで、計算コストは四則演算のみであるため、少ない計算量で、データ秘匿型内積計算が実現できる。
【０１４４】
以下には、本システムの応用例について説明する。統計学において、相関係数は−１から１の実数値をとる。例えば、二つの数値集合に関する相関係数が−１に近ければ負の相関関係、１に近ければ正の相関関係があると判断することができる。また、相関係数が０に近い場合には相関関係は弱いと判断することができる。よって、本システムは、二つの組織がもつ情報を開示することは難しいが、その相関関係を求めることで何らかの知見が得られる場合に応用することができる。
【０１４５】
なお、以下の例では、同一の個人が二つの組織のユーザであり、その二つの組織が同じユーザＩＤを共有しているものとする。例えば、米国のＳＳＮ（Social Security Number）のような個人識別番号や、携帯電話番号等を、ユーザＩＤとして利用することが可能である。ＩＤが、ユーザを識別するのみで、ユーザ個人を特定する情報に結び付かないものであれば、組織Ａ、Ｂから第三者機関へ送られたデータが流出して情報が推測されたとしても、それがどのユーザに対応するかは判別できないことになり、より安全である。上述した第２の例のように、組織Ａ、Ｂから第三者機関へ送るデータを、その都度異なる関数で、順番を入れ替えるようにし、その関数は、組織Ａ及びＢしか知らないものとすれば、さらに安全である。
【０１４６】
最初の応用例は、渡航履歴と病歴に関する。組織Ａが航空会社であり、特定の国への渡航履歴を有するとする。組織Ｂは医療業界のデータベースであり、特定の病気にかかった記録を有するとする。いずれもプライバシに関わる情報であり、それぞれの情報は開示できないが、本システムにより相関分析が可能である。本システムにより求められる相関係数により、渡航履歴と病歴の相関関係が強いことが認められる場合には、旅行者への注意喚起、予防接種の必要性の議論、あるいは渡航禁止等の判断が可能である。
【０１４７】
次の応用例は、適性検査と事故歴に関する。組織Ａは適性検査を行う会社であり、多数の企業から入社試験や社員研修等における適性検査の結果を蓄積しているものとする。組織Ｂは保険会社であり、顧客の事故歴をデータベースに有するものとする。いずれもプライバシ情報を扱っており、これらの情報の開示はできないが、本システムにより相関分析が可能である。本システムにより求められる相関係数により、適性検査の特定の項目（例えば、思慮深い、判断力がある、おっちょこちょい等）と事故歴に相関関係があることが認められれば、運転免許の交付に際して適性検査を行うこと、またその結果に応じて注意喚起や指導を行うことも有意である。また、保険会社は、自動車保険の契約に際して適性検査を実施し、その結果によって保険の掛け金を調整する等の工夫を行うこともできる。
【０１４８】
さらに次の応用例は、オンラインゲームの接続時間と成績に関する。教育に関連して、子供の成績とゲームに費やした時間の関係を気にする親は多い。組織Ａがオンラインゲームを提供するゲームメーカであるとし、子供がゲームに費やした時間に関する情報を有するとする。組織Ｂは学校もしくは学習塾とし、子供の成績に関する情報を有するとする。組織Ａ、Ｂが有する情報はそれぞれ開示することはできないが、本システムにより相関分析を行うことが可能である。本システムにより求められる相関係数により、高い相関があることが明らかになれば、親が子供にゲームをやめさせるときの根拠とすることができる。逆に相関関係が低いことが明らかになれば、ゲームメーカはオンラインゲームが子供の成績に影響しないことをアピールできる。
【０１４９】
最後の応用例として、雑誌の購買履歴とレストランの利用履歴に関するものを挙げておく。組織Ａが書籍の購買情報を有するサイトであるとし、あるカテゴリーに属する書籍や雑誌（例えば、フランスに関するもの）についての購入履歴が分かるものとする。組織Ｂはカード会社であるとし、レストラン（例えば、フランス料理を扱うレストラン）の利用履歴に関する情報を有する。両者が持つ情報は、プライバシに関わる情報であり開示はできないが、本システムにより相関分析を行うことが可能である。本システムにより求められる相関係数により、あるカテゴリーの雑誌を購入する人が、特定のカテゴリーのレストランを利用することと相関があると認められれば、広告やターゲットマーケティングなどを行うことが有効であることが分かる。
【０１５０】
以上、本発明の実施形態について例示的に説明したが、上述の実施形態を本発明の範囲内で当業者が種々に変形、応用して実施できることは勿論である。
【図１】
2014206696.tif 000006
【図２】
2014206696.tif 000007
【図３】
2014206696.tif 000008
【図４】
2014206696.tif 000009
【図５】
2014206696.tif 000010
【図６】
2014206696.tif 000011
【図７】
2014206696.tif 000012
【図８】
2014206696.tif 000013
【図９】
2014206696.tif 000014
【図１０】
2014206696.tif 000015