(57)【要約】【課題】セキュア計算プロトコルの実行時間をより短縮することを可能にする。【解決手段】複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する第１計算プロトコル生成部と、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する第２計算プロトコル生成部と、を備える、情報処理装置を提供する。【選択図】図６
2015194959.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する第１計算プロトコル生成部と、
前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する第２計算プロトコル生成部と、
を備える、情報処理装置。
【請求項２】
前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での通信を伴う処理の少なくともいずれかの後に、前記秘匿性確保プロトコルを配置する、
請求項１に記載の情報処理装置。
【請求項３】
前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での通信を伴う第１の処理の後に、前記演算処理装置間での通信を伴う第２の処理が行われる場合に、前記第１の処理と前記第２の処理との間に前記秘匿性確保プロトコルを配置する、
請求項１に記載の情報処理装置。
【請求項４】
複数の前記演算処理装置は、複数の前記入力値のそれぞれが分配された値である分散値をそれぞれ有し、当該分散値を用いて前記セキュア計算プロトコルを実行する、
請求項１に記載の情報処理装置。
【請求項５】
前記秘匿性確保プロトコルは、前記分散値を異なる分散値に変換する、再分配プロトコルである、
請求項４に記載の情報処理装置。
【請求項６】
前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での前記分散値の通信を伴う処理の少なくともいずれかの後に、前記再分配プロトコルを配置する、
請求項５に記載の情報処理装置。
【請求項７】
前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での前記分散値の通信を伴う第１の処理の後に、前記演算処理装置間での前記分散値の通信を伴う第２の処理が行われる場合に、前記第１の処理と前記第２の処理との間に前記秘匿性確保プロトコルを配置する、
請求項５に記載の情報処理装置。
【請求項８】
前記第１計算プロトコル生成部は、
前記セキュア計算プロトコルにおいて計算される計算式を所定の演算処理に分解する計算式分解部と、
分解された前記計算式に対して、前記所定の演算処理に対応する演算プロトコルであって前記秘匿性確保プロトコルを含まないプロトコルを割り当てる演算プロトコル割当部と、
を含む、
請求項１に記載の情報処理装置。
【請求項９】
前記計算式分解部は、前記計算式を、演算の基本単位である基本演算処理に分解し、
前記演算プロトコル割当部は、分解された前記計算式に対して、前記基本演算処理に対応する基本演算プロトコルを割り当てる、
請求項８に記載の情報処理装置。
【請求項１０】
前記基本演算処理は、整数環上の加算又は乗算である、
請求項９に記載の情報処理装置。
【請求項１１】
前記演算処理装置と前記情報処理装置とは、一体的に構成される、
請求項１に記載の情報処理装置。
【請求項１２】
前記入力値は、互いに異なるシステムにおいて管理される医療情報であり、
前記セキュア計算プロトコルでは、当該医療情報の統計値が計算される、
請求項１に記載の情報処理装置。
【請求項１３】
前記入力値は、互いに異なるシステムにおいて管理されるユーザの商品の購入履歴情報であり、
前記セキュア計算プロトコルでは、当該購入履歴情報に基づいて所定の前記ユーザの嗜好が解析される、
請求項１に記載の情報処理装置。
【請求項１４】
前記入力値は、オークションにおいて複数の入札者から入力される入札価格情報であり、
前記セキュア計算プロトコルでは、当該入札価格情報に基づいて対象商品の落札価格及び落札者の少なくともいずれかが決定される、
請求項１に記載の情報処理装置。
【請求項１５】
プロセッサが、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成することと、
プロセッサが、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成することと、
を含む、情報処理方法。
【請求項１６】
コンピュータのプロセッサに、
複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する機能と、
前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する機能と、
を実現させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ユーザのパーソナルデータを利活用することにより、ユーザに対してより利便性の高いサービスを提供する技術が提案されている。しかしながら、このようなサービスでは、ユーザのパーソナルデータを集積して解析を行う際に、秘匿されるべき情報であるユーザのプライバシー情報が漏えいすることが懸念される。そこで、ユーザのプライバシー情報の漏えいの防止と、パーソナルデータの利活用とを両立する手法として、セキュア計算プロトコル（セキュア計算手順）又は秘密計算プロトコル等と呼ばれる手法が注目されている。
【０００３】
セキュア計算プロトコルでは、複数の入力値に基づいて、複数のエンティティ（計算パーティ）が協働して、お互いに入力値を開示することなく計算を行い、所定の計算式に対応する出力値を得ることができる。従って、ユーザのパーソナルデータを入力値として扱い、セキュア計算プロトコルを実行することにより、各計算パーティには入力値であるユーザのパーソナルデータは開示されないまま、出力値として、当該パーソナルデータから導出され得る各種の情報を得ることができる。
【０００４】
セキュア計算プロトコルを実行するためのツールとして、例えば、非特許文献１には、計算パーティ数を３に限定し、３２ビット演算に限定することにより、より高速にセキュア計算プロトコルを実行することが可能な技術が開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｈｉｇｈ−ｐｅｒｆｏｒｍａｎｃｅ  ｓｅｃｕｒｅ  ｍｕｌｔｉ−ｐａｒｔｙ  ｃｏｍｐｕｔａｔｉｏｎ  ｆｏｒ  ｄａｔａ  ｍｉｎｉｎｇ  ａｐｐｌｉｃａｔｉｏｎｓ，  Ｄａｎ  Ｂｏｇｄａｎｏｖ，  Ｍａｒｇｕｓ  Ｎｉｉｔｓｏｏ，  Ｔｏｍａｓ  Ｔｏｆｔ，  Ｊａｎ  Ｗｉｌｌｅｍｓｏｎ，  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｊｏｕｒｎａｌ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｃｕｒｉｔｙ，  Ｎｏｖｅｍｂｅｒ  ２０１２，  ｖｏｌｕｍｅ  １１，  Ｉｓｓｕｅ  ６，  ｐｐ  ４０３−４１８．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、非特許文献１に記載の技術では、セキュア計算プロトコルにおいて計算される計算式が、基本的な演算処理に対応するプロトコル（以下、基本演算プロトコルとも呼称する。）である、加算プロトコルと乗算プロトコルとを組み合わせることによって表現される。従って、セキュア計算プロトコルにおける演算時間は、当該計算式を構成し得る基本演算プロトコル（加算プロトコル及び乗算プロトコル）の数に、各基本演算プロトコルの演算時間を乗じたものとなるため、計算式の内容によっては、セキュア計算プロトコルの実行時間が膨大なものになる可能性がある。
【０００７】
そこで、本開示では、セキュア計算プロトコルの実行時間をより短縮することが可能な、新規かつ改良された情報処理装置、情報処理方法及びプログラムを提案する。
【課題を解決するための手段】
【０００８】
本開示によれば、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する第１計算プロトコル生成部と、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する第２計算プロトコル生成部と、を備える、情報処理装置が提供される。
【０００９】
また、本開示によれば、プロセッサが、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成することと、プロセッサが、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成することと、を含む、情報処理方法が提供される。
【００１０】
また、本開示によれば、コンピュータのプロセッサに、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する機能と、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する機能と、を実現させる、プログラムが提供される。
【００１１】
本開示によれば、セキュア計算プロトコルにおいて、入力値の秘匿性を保つための秘匿性確保プロトコルを含まない第１の計算プロトコルが生成される、また、当該第１の計算プロトコルに対して、入力値の秘匿性が確保される位置に秘匿性確保プロトコルが再度配置されることにより第２の計算プロトコルが生成される。従って、第２の計算プロトコルは、冗長な秘匿性確保プロトコルが除去され、適切な位置に秘匿性確保プロトコルが配置されたセキュア計算プロトコルであり得る。よって、入力値の秘匿性は保たれたまま、セキュア計算プロトコルの実行時間を短縮することが可能となる。
【発明の効果】
【００１２】
以上説明したように本開示によれば、セキュア計算プロトコルの実行時間をより短縮することが可能となる。なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１３】
【図１】セキュア計算プロトコルの概要について説明するための説明図である。
【図２】本実施形態に係るセキュア計算プロトコルの処理手順を説明するための説明図である。
【図３】本実施形態に係るセキュア計算プロトコルの処理手順を示すフロー図である。
【図４】本実施形態に係るセキュア計算プロトコルが実行されるセキュア計算システムの一構成例を示す図である。
【図５】本実施形態に係るセキュア計算プロトコルが実行されるセキュア計算システムの他の構成例を示す図である。
【図６】本実施形態に係る情報処理装置の機能構成を示す機能ブロック図である。
【図７】本実施形態に係る情報処理方法の処理手順の一例を示すフロー図である。
【図８】図７に示すステップＳ２０１における処理において作成される計算グラフの一例を示す図である。
【図９】本実施形態に係るセキュア計算プロトコルを用いた、医療情報に基づくデータマイニングについて説明するための説明図である。
【図１０】本実施形態に係るセキュア計算プロトコルを用いた、医療情報に対する統計解析処理について説明するための説明図である。
【図１１】本実施形態に係るセキュア計算プロトコルを用いた、リコメンドサービスにおける分析処理について説明するための説明図である。
【図１２】本実施形態に係るセキュア計算プロトコルを用いた、リコメンドサービスにおける分析処理について説明するための説明図である。
【図１３】本実施形態に係るセキュア計算プロトコルを用いた、オークションにおける落札者及び／又は落札価格の決定処理について説明するための説明図である。
【図１４】本実施形態に係る情報処理装置のハードウェア構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１５】
なお、説明は以下の順序で行うものとする。
１．セキュア計算プロトコルについて
１−１．セキュア計算プロトコルの概要
１−２．セキュア計算プロトコルの処理手順
１−３．システム構成
２．一般的なセキュア計算プロトコルについての検討
２−１．一般的なセキュア計算プロトコルの詳細
２−２．一般的なセキュア計算プロトコルについての検討
３．情報処理装置の構成
４．情報処理方法の処理手順
４−１．情報処理方法の概要
４−２．情報処理方法の詳細
５．適用例
５−１．医療情報の二次利用
５−１−１．医療情報に基づくデータマイニング
５−１−２．医療情報に対する統計解析処理
５−２．推薦（リコメンド）サービス
５−３．オークション
６．ハードウェア構成
７．プロトコル
８．補足
【００１６】
（１．セキュア計算プロトコルについて）
（１−１．セキュア計算プロトコルの概要）
まず、図１を参照して、本開示の一実施形態に係るセキュア計算プロトコルの概要について説明する。図１は、セキュア計算プロトコルの概要について説明するための説明図である。
【００１７】
セキュア計算プロトコルでは、複数のエンティティ（計算パーティ）が協働して、お互いに入力値を開示することなく計算を行い、最終的に所定の計算式に対応する出力値が得られる。セキュア計算プロトコルは、マルチパーティ計算（ＭＰＣ：ｍｕｌｔｉｐａｒｔｙ  ｃｏｍｐｕｔａｔｉｏｎ）とも呼ばれる。セキュア計算プロトコルを用いることにより、例えば、二者間で資産額を比較する際に、お互いの資産額を開示することなく、より多く資産を有する方を決定する等の、互いの情報を秘匿しつつ、当該情報を利用した計算を行うことが可能となる。
【００１８】
例えば、図１に示す例では、計算を実行する４つの計算パーティ３０ａ〜３０ｄが、互いに異なる４つの入力値ｘ１〜ｘ４をそれぞれ有している（図中（ａ））。入力値ｘ１〜ｘ４は互いに秘匿されている。以下では、セキュア計算プロトコルに対する入力値のことを、他の入力値と区別するために、便宜的に秘密入力値とも呼称する。なお、図１では、模式的に計算パーティ３０ａ〜３０ｄをヒトとして表しているが、実際には、計算パーティ３０ａ〜３０ｄは、各種の演算が可能な演算処理装置によって実現され得る。
【００１９】
この状態で、計算パーティ３０ａ〜３０ｄが協働してセキュア計算プロトコルを実行する（図中（ｂ））。セキュア計算プロトコルでは、各計算パーティ３０ａ〜３０ｄ間において計算に用いられる情報の通信が実行され得るが、各計算パーティ３０ａ〜３０ｄは自身が有している入力値ｘ１〜ｘ４以外は知り得ないように、計算が行われる。セキュア計算プロトコルが実行された結果、各入力値ｘ１〜ｘ４が各計算パーティ３０ａ〜３０ｄに対して互いに秘匿されたままの状態で、最終的な出力値である関数ｆ（ｘ１，ｘ２，ｘ３，ｘ４）が得られる（図中（ｃ））。
【００２０】
（１−２．セキュア計算プロトコルの処理手順）
図２及び図３を参照して、本実施形態に係るセキュア計算プロトコルにおける各処理について、より詳しく説明する。図２は、本実施形態に係るセキュア計算プロトコルの処理手順を説明するための説明図である。図３は、本実施形態に係るセキュア計算プロトコルの処理手順を示すフロー図である。
【００２１】
本実施形態に係るセキュア計算プロトコルには、秘密分散法と呼ばれる計算手法が好適に適用され得る。図２及び図３に示す例では、２つの計算パーティ３０ａ、３０ｂによって、２つの入力値（ｘ，ｙ）から出力値として関数ｆ（ｘ，ｙ）を得る場合における、秘密分散法が用いられたセキュア計算プロトコルにおける処理手順が図示されている。なお、本実施形態に係るセキュア計算プロトコルにおける計算パーティ数や入力値の数はこれらの例に限定されず、より多くの計算パーティによって、異なる数の入力値に基づく計算が行われてもよい。
【００２２】
まず、セキュア計算プロトコルが実行される前段の処理として、各計算パーティ３０ａ、３０ｂに、入力値ｘ、ｙがそれぞれ入力される。入力値ｘ、ｙは、セキュア計算プロトコルの処理全体を通して、計算パーティ３０ａ、３０ｂにおいて互いに秘匿に保たれる。
【００２３】
各計算パーティ３０ａ、３０ｂに、入力値ｘ、ｙが入力されると、セキュア計算プロトコルでは、まず、入力値ｘ、ｙが各計算パーティ３０ａ、３０ｂに分配される（ステップＳ１０１）。計算パーティ３０ａ、３０ｂに分配された値のことを分散値と呼称する。例えば、図２に示すように、入力値ｘから分散値ｘ１、ｘ２が生成され、分散値ｘ１、ｘ２が各計算パーティ３０ａ、３０ｂに分配される。同様に、入力値ｙから分散値ｙ１、ｙ２が生成され、分散値ｙ１、ｙ２が各計算パーティ３０ａ、３０ｂに分配される。なお、以下では、入力値を分配して分散値を生成するプロトコルのことを、入力値分配プロトコルとも呼称する。入力値分配プロトコル及び後述する出力値復号プロトコルについては、下記（２．一般的なセキュア計算プロトコルについての検討）で、上記非特許文献１に記載の手法を例に挙げて、改めて詳しく説明する。なお、本実施形態では、入力値分配プロトコル実行後に後述する再分配プロトコルが実行されてもよい。入力値分配プロトコル実行後に再分配プロトコルを行うことで、分散値の一様分布性を更に保証することができる。
【００２４】
次に、分散値ｘ１、ｘ２、ｙ１、ｙ２に対してセキュア計算が行われる（ステップＳ１０３）。ここで、分散値に対するセキュア計算とは、分散値を入力値として、所定の計算式に対応する計算プロトコル（以下、計算式プロトコルとも呼称する。）が実行されることを意味する。当該所定の計算式とは、セキュア計算プロトコルにおいて最終的に得たい出力値を示す、入力値ｘ、ｙを入力値とする関数ｆ（ｘ，ｙ）のことである。以下、単に「計算式」と記載した場合には、特に記載のない限り、関数ｆ（ｘ，ｙ）に対応する、セキュア計算プロトコルにおいて計算される計算式のことを示していてもよい。計算式プロトコルが実行された結果、計算パーティ３０ａにおいてｆａ（ｘ，ｙ）が算出され、計算パーティ３０ｂにおいてｆｂ（ｘ，ｙ）が算出される。ここで、ｆａ（ｘ，ｙ）及びｆｂ（ｘ，ｙ）は、ｆ（ｘ，ｙ）の分散値に対応している。
【００２５】
最後に、ｆａ（ｘ，ｙ）及びｆｂ（ｘ，ｙ）から出力値ｆ（ｘ，ｙ）が計算される（ステップＳ１０５）。ステップＳ１０５では、分散値であるｆａ（ｘ，ｙ）及びｆｂ（ｘ，ｙ）からｆ（ｘ，ｙ）を復号する処理が行われることにより、最終的な出力値であるｆ（ｘ，ｙ）が算出されることとなる。ステップＳ１０５に示す処理は、計算パーティ３０ａ、３０ｂのいずれか又は両者において行われてもよいし、計算パーティ３０ａ、３０ｂからｆａ（ｘ，ｙ）及びｆｂ（ｘ，ｙ）を取得した他のパーティにおいて行われてもよい。なお、以下では、分散値を複合して出力値を得るプロトコルのことを、出力値復号プロトコルとも呼称する。
【００２６】
以上、図２及び図３を参照して、本実施形態に係るセキュア計算プロトコルの処理手順の一例について説明した。以上説明したように、本実施形態に係るセキュア計算プロトコルは、入力値を分配する入力値分配プロトコル、計算式に対応する計算式プロトコル及び出力値を復号する出力値分配プロトコルが、組み合わされて構成され得る。入力値分配プロトコルにおいて秘密入力値が複数の計算パーティ３０ａ、３０ｂに分散されることにより、各計算パーティ３０ａ、３０ｂにおいては、当該分散値を入力値として計算式プロトコルが実行される。従って、各計算パーティ３０ａ、３０ｂでは、秘密入力値が互いに開示されることなく計算が実行される。よって、本実施形態においては、秘密入力値の秘匿性が確保された状態で、当該秘密入力値を入力値とした所望の計算を行うことが可能となる。
【００２７】
（１−３．システム構成）
次に、図４及び図５を参照して、本実施形態に係るセキュア計算プロトコルが実行されるセキュア計算システムの構成について説明する。図４は、本実施形態に係るセキュア計算プロトコルが実行されるセキュア計算システムの一構成例を示す図である。また、図５は、本実施形態に係るセキュア計算プロトコルが実行されるセキュア計算システムの他の構成例を示す図である。
【００２８】
本実施形態に係るセキュア計算システムでは、秘密入力値を保有するパーティ（入力者）と、秘密入力値に基づいてセキュア計算プロトコルを実行するパーティ（計算パーティ）が存在する。図４では、入力者と計算パーティとが異なる場合におけるセキュア計算システムの一構成例を示している。図４を参照すると、セキュア計算システム１は、２つの入力者Ｄ１、Ｄ２と、３つの計算パーティＰ１、Ｐ２、Ｐ３によって構成され得る。
【００２９】
入力者Ｄ１、Ｄ２は、それぞれ秘密入力値を互いに秘匿された状態で保有している。入力者Ｄ１、Ｄ２は、秘密入力値を分散化し、計算パーティＰ１、Ｐ２、Ｐ３に分配する。このように、セキュア計算システム１においては、上述した図２及び図３に示すステップＳ１０１における処理は、計算パーティＰ１、Ｐ２、Ｐ３ではなく、入力者Ｄ１、Ｄ２によって実行され得る。
【００３０】
計算パーティＰ１、Ｐ２、Ｐ３は、分散値を入力値として計算式プロトコルに基づく計算を行い、出力値に関する分散値を保持する状態に至る（図２及び図３に示すステップＳ１０３における処理に対応）。そして、最終的に、計算パーティＰ１、Ｐ２、Ｐ３が有する出力値の分散値を集めることにより出力値が復号される（図２及び図３に示すステップＳ１０５における処理に対応）。
【００３１】
一方、図５では、入力者が計算パーティを兼ねる場合におけるセキュア計算システムの一構成例を示している。図５を参照すると、セキュア計算システム２は、３つの計算パーティＰ１、Ｐ２、Ｐ３によって構成され得る。ただし、そのうちの２つの計算パーティＰ１、Ｐ２は、入力者を兼ねており、秘密入力値を互いに秘匿された状態で保有している。なお、図５に示す例では、３つの計算パーティＰ１、Ｐ２、Ｐ３のうちの２つの計算パーティＰ１、Ｐ２が入力者を兼ねる場合について図示しているが、本実施形態はかかる例に限定されず、計算パーティＰ１、Ｐ２、Ｐ３の一部又は全てが入力者の役割を果たすことができる。
【００３２】
入力者である計算パーティＰ１、Ｐ２は、秘密入力値を分散化し、他の計算パーティＰ１、Ｐ２、Ｐ３に分配する。つまり、セキュア計算システム２においては、上述した図２及び図３に示すステップＳ１０１における処理は、入力者を兼ねる計算パーティＰ１、Ｐ２によって実行され得る。
【００３３】
その後の処理は図４に示すセキュア計算システム１と同様である。計算パーティＰ１、Ｐ２、Ｐ３は、分散値を入力値として計算式プロトコルに基づく演算を行い、出力値に関する分散値を得る（図２及び図３に示すステップＳ１０３における処理に対応）。そして、最終的に、計算パーティＰ１、Ｐ２、Ｐ３が有する出力値の分散値を集めることにより出力値が復号される（図２及び図３に示すステップＳ１０５における処理に対応）。なお、セキュア計算システム１、２の双方において、出力値の復号を行うパーティ（出力値取得者）は限定されず、出力値の復号は、計算パーティＰ１、Ｐ２、Ｐ３のいずれかによって行われてもよいし、あるいは、図４には図示しない他のパーティ（他の情報処理端末）において行われてもよい。
【００３４】
以上、図４及び図５を参照して、本実施形態に係るセキュア計算システムの構成について説明した。このように、本実施形態では、入力者、計算パーティ及び出力値取得者は、同一のパーティであってもよいし、互いに異なるパーティであってもよい。セキュア計算システムの構成は、セキュア計算プロトコルが適用され得る状況に応じて適宜設定されてよい。なお、図４及び図５に示すセキュア計算システムの構成はあくまで一例であり、セキュア計算システムを構成する入力者、計算パーティ及び出力値取得者の数は、任意に設定されてよい。
【００３５】
（２．一般的なセキュア計算プロトコルについて）
ここで、本発明者らが、一般的なセキュア計算プロトコルについて検討した結果について説明する。ここでは、一例として、上述した非特許文献１に記載の方法を例に挙げて、一般的なセキュア計算プロトコルについて説明を行う。
【００３６】
（２−１．一般的なセキュア計算プロトコルの詳細）
非特許文献１に記載の方法においても、図２及び図３に示す処理と略同様な処理が実行され得る。非特許文献１に記載の方法では、まず、入力者が有する秘密入力値が複数の計算パーティに分配される（図２及び図３に示すステップＳ１０１に対応）。例えば、非特許文献１に記載の方法によれば、入力者が、入力値ｕについて、ｕ＝ｕ１＋ｕ２＋ｕ３（ｍｏｄ  Ｚ２＾ｎ、以下の演算でも同様）となるように分散値ｕ１、ｕ２、ｕ３を生成し，計算パーティに分配する。以下では、秘密入力値ｕが計算パーティに分配されている状態のことを、＜ｕ＞＝（ｕ１，ｕ２，ｕ３）と表す。当該処理は、上述した入力値分配プロトコルに対応する処理であり、例えば入力値ｕに対する入力値分配プロトコルのことを、以下では、「＜ｕ＞←Ｓｈａｒｅ（ｕ）」とも表す。なお、入力値分配プロトコルにおいて行われる具体的な処理については下記（７．プロトコル）に示す。また、下記（７．プロトコル）に示す入力値分配プロトコル内に記載されている「ランダム値ｒ←Ｚｎ」は、整数環Ｚｎからランダムに要素を１つ取得し、変数ｒに代入することを意味している。
【００３７】
次に、計算パーティにおいて、分散値を入力値として、セキュア計算プロトコルにおいて計算される計算式に対応する計算式プロトコルが実行される（図２及び図３に示すステップＳ１０３に対応）。ここで、非特許文献１に記載の方法では、計算式プロトコルが、基本的な演算処理（演算の基本単位、以下、基本演算処理とも呼称する。）に対応するプロトコルである基本演算プロトコルを組み合わせることで表現される。基本演算プロトコルでは、分散値を入力値として、整数環上での加算又は乗算が行われる。整数環上の加乗算に対応する基本演算プロトコルを用意することにより、それらを組み合わせて、任意の算術演算及び論理演算を表現することが可能となる。
【００３８】
例えば、３つの秘密入力値ｕ、ｖ、ｓについて、「（ｕ＋ｖ）×ｓ」を計算することを考える。この場合、計算式「（ｕ＋ｖ）×ｓ」に対応する計算式プロトコルは、入力値ｕ、ｖを整数環上で加算する加算プロトコルと、その出力結果である「ｕ＋ｖ」に他の入力値ｓを整数環上で乗算する乗算プロトコルと、を組み合わせることによって表現され得る。
【００３９】
加算プロトコル及び乗算プロトコルでは、分散値である＜ｕ＞、＜ｖ＞、＜ｓ＞を入力値として計算が行われる。まず、加算プロトコルによって、入力値＜ｕ＞、＜ｖ＞から出力値として＜ｕ＋ｖ＞が得られる。そして、＜ｕ＋ｖ＞と＜ｓ＞を入力値として乗算プロトコルが実行されることにより、出力値として＜（ｕ＋ｖ）×ｓ＞が得られる。
【００４０】
なお、例えば入力値ｕ、ｖに対応する分散値＜ｕ＞、＜ｖ＞から、ｕ＋ｖ＝ｗであるｗの分散値＜ｗ＞が得られる加算プロトコルのことを、以下では、「＜ｗ＞←Ａｄｄ（＜ｕ＞，＜ｖ＞）」とも表す。また、例えば入力値ｕ、ｖに対応する分散値＜ｕ＞，＜ｖ＞から、ｕ×ｖ＝ｗ’であるｗ’の分散値＜ｗ’＞が得られる乗算プロトコルのことを、以下では、「＜ｗ’＞←Ｍｕｌｔ（＜ｕ＞，＜ｖ＞）」とも表す。加算プロトコル及び乗算プロトコルにおいて行われる具体的な処理については下記（７．プロトコル）に示す。なお、下記（７．プロトコル）に示す乗算プロトコル内に記載されている「＜ｕ’＞←Ｒｅｓｈａｒｅ（＜ｕ＞）」は、再分配プロトコルと呼ばれるプロトコルを表している。再分配プロトコルでは、例えば入力値ｕの分散値＜ｕ＞について、その値を保ちながら別の分散値＜ｗ＞（ｗ＝ｕ）に変換する処理が行われる。つまり、再分配プロトコルでは、文字通り入力値の計算パーティへの再分配が行われる。再分配プロトコルにおいて行われる具体的な処理についても下記（７．プロトコル）に併せて示している。
【００４１】
＜（ｕ＋ｖ）×ｓ＞が得られたら、次に、出力データ取得者によって出力値が復号化される（図２及び図３に示すステップＳ１０５に対応）。＜（ｕ＋ｖ）×ｓ＞が復号化されることにより、出力値である「（ｕ＋ｖ）×ｓ」が得られる。当該処理は、上述した出力値復号プロトコルに対応する処理であり、例えば入力値ｗに対する出力値復号プロトコルのことを、以下では、「ｗ←Ｄｅｃｏｄｅ（ｗ）」とも表す。なお、出力値復号プロトコルにおいて行われる具体的な処理については下記（７．プロトコル）に示す。
【００４２】
（２−２．一般的なセキュア計算プロトコルについての検討）
ここで、セキュア計算プロトコルの実行時間には、各計算パーティでのローカルな演算時間に加えて、計算パーティ間における通信における待機時間やデータ伝送時間が含まれる。特に、通信の待機時間がセキュア計算プロトコルのトータルの実行時間に与える影響は少なくないことが知られている。従って、セキュア計算プロトコルの実行時間をより短縮するためには、計算パーティ間での通信量をより削減することが求められる。
【００４３】
一方、下記（７．プロトコル）に示すように、非特許文献１に記載の方法における乗算プロトコルでは、計算パーティ間における通信が行われる。具体的には、下記（７．プロトコル）に示す乗算プロトコルに含まれる一連の処理の中で、再分配プロトコルが行われるステップ１、２、９と、分散値の送受信が行われるステップ３〜５に示す処理において、パーティ間の通信が行われる。従って、一般的なセキュア計算プロトコルにおいては、乗算プロトコルを多数含む計算が行われる場合には、計算パーティ間での通信量が増加し、セキュア計算プロトコルの実行時間が増加する可能性がある。
【００４４】
ここで、乗算プロトコルが２回連続する計算式プロトコル（例えば、計算式「（ａ×ｂ）×ｃ」に対応する計算式プロトコル）を考える。この場合、当該計算式プロトコルが実行されると、１回目の乗算プロトコルにおけるステップ９の処理（例えば＜ａ×ｂ＞に対する再分配プロトコル）が実行された直後に、２回目の乗算プロトコルにおけるステップ１又はステップ２の処理（例えば、＜ａ×ｂ＞に対する再分配プロトコルと＜ｃ＞に対する再分配プロトコル）が実行されることとなる。すなわち、同一の処理（例えば、＜ａ×ｂ＞に対する再分配プロトコル）が２回連続で実行され得る。このように、一般的なセキュア計算プロトコルでは、その具体的な処理手順が必ずしも最適化されているとはいえず、セキュア計算プロトコルの実行時間を長大化させている可能性があった。
【００４５】
本発明者らは、以上の一般的なセキュア計算プロトコルに対する検討結果に基づいて、セキュア計算プロトコルの実行時間をより短縮するための技術について鋭意検討した結果、以下に示す本開示の好適な一実施形態に想到した。以下では、本発明者らが想到した、本開示の好適な一実施形態について詳細に説明する。なお、以下に説明する実施形態では、非特許文献１に記載の技術と比較するために、非特許文献１に記載の技術と同様の条件（例えば、計算パーティ数が３であり、下記（７．プロトコル）に示す各プロトコルが用いられ得る）に対応したセキュア計算プロトコルを例に挙げて説明を行う。しかし、本実施形態はかかる例に限定されず、計算パーティ数が異なる場合等、他の条件に対応するセキュア計算プロトコルに対しても同様に適用可能である。
【００４６】
（３．情報処理装置の構成）
上述したように、一般的なセキュア計算プロトコルにおいては、同一の分散値に対して再分配プロトコルが連続して実行される場合が生じ得る。ここで、再分配プロトコルは、入力値の秘匿性を確保し、セキュア計算プロトコルの安全性を保証するために行われるプロトコル（いわば、入力値秘匿性確保プロトコル）である。例えば、下記（７．プロトコル）に示す一般的なセキュア計算プロトコルにおける乗算プロトコルであれば、ステップ１、２の処理は、分散化された入力値をランダムにするために行われ、ステップ９の処理は、出力値の分散値を入力値の分散値とは独立に、計算パーティ間で一様に分布させるために行われる。従って、再分配プロトコルが行われる理由を考慮すれば、同一の分散値に対して連続して実行されている（すなわち、機能が重複する）再分配プロトコルの回数を削減したとしても、入力値の秘匿性は十分に確保され、セキュア計算プロトコルの安全性は維持されると考えられる。
【００４７】
そこで、本実施形態では、セキュア計算プロトコルの構成をより最適化することにより、そのトータルの実行時間を短縮することを図る。具体的には、セキュア計算プロトコルから、上述したような機能が重複するプロトコルを削減することによって、より効率的なセキュア計算プロトコルを導出する（生成する）。以下では、本実施形態において得られるより効率的なセキュア計算プロトコルのことを、一般的なセキュア計算プロトコルと区別するために、便宜的に、改良セキュア計算プロトコルとも呼称する。
【００４８】
より具体的には、本実施形態では、セキュア計算プロトコルにおける計算式を入力として、当該計算式に対応する計算式プロトコルから機能が重複する再分配プロトコルが取り除かれ、再分配プロトコルが適切に再度配置された、計算式プロトコル（以下、一般的な計算式プロトコルと区別するため、便宜的に、改良計算式プロトコルと呼称する。）が生成される。以下では、このような、改良計算式プロトコルを生成する機能を有する情報処理装置の構成について詳しく説明する。
【００４９】
なお、上記の改良セキュア計算プロトコルは、入力値分配プロトコルと、改良計算式プロトコルと、出力値復号プロトコルと、が組み合わされたものに対応している。一方、一般的なセキュア計算プロトコルは、入力値分配プロトコルと、計算式プロトコルと、出力値復号プロトコルと、が組み合わされて構成され得る。このように、本実施形態に係る改良セキュア計算プロトコルは、セキュア計算プロトコルにおける計算式プロトコルが改良計算式プロトコルに置き換えられたものであってよい。従って、改良セキュア計算プロトコルを生成するとは、改良計算式プロトコルを生成することを意味していてよく、本実施形態に係る情報処理装置は、改良セキュア計算プロトコル又は改良計算式プロトコルを生成する機能を有しているとも言える。
【００５０】
図６を参照して、本実施形態に係る情報処理装置の機能構成について説明する。図６は、本実施形態に係る情報処理装置の機能構成を示す機能ブロック図である。
【００５１】
なお、改良セキュア計算プロトコル又は改良計算式プロトコルは、改良セキュア計算プロトコルを実行する計算パーティのいずれかにおいて生成されてもよいし、他の情報処理装置において生成され、各計算パーティに入力されてもよい。図６では、一例として、計算パーティとは異なる他の情報処理装置において改良計算式プロトコルが生成される場合について説明する。また、図６では、説明のため、計算パーティに対応する機能構成（後述する演算処理装置２０）も併せて図示している。
【００５２】
図６を参照すると、本実施形態に係る情報処理装置１０は、第１計算プロトコル生成部１０４と、第２計算プロトコル生成部１０５と、を備える。なお、情報処理装置１０が備える各機能は、情報処理装置１０に搭載されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｏｃｅｓｓｏｒ）等の各種のプロセッサが所定のプログラムに従って動作することによって実現され得る。
【００５３】
第１計算プロトコル生成部１０４は、セキュア計算プロトコルに基づいて、再分配プロトコルを含まない第１の計算プロトコルを生成する。具体的には、第１計算プロトコル生成部１０４は、セキュア計算プロトコルにおける計算式に対応する計算式プロトコルから、再分配プロトコルを取り除く機能を有する。すなわち、第１の計算プロトコルとは、計算式プロトコルから再分配プロトコルが取り除かれたプロトコルのことを意味していてよい。
【００５４】
第１計算プロトコル生成部１０４の機能についてより詳しく説明する。第１計算プロトコル生成部１０４は、その機能として、計算式分解部１０１と、演算プロトコル割当部１０３と、を有する。
【００５５】
計算式分解部１０１は、セキュア計算プロトコルにおける計算式を所定の演算処理に分解する。例えば、計算式分解部１０１は、計算式を、上述した基本演算プロトコル（加算プロトコル及び乗算プロトコル）に対応する演算処理に分解することができる。計算式分解部１０１は、分解された計算式についての情報を、演算プロトコル割当部１０３に提供する。
【００５６】
演算プロトコル割当部１０３は、分解された計算式に対して、所定の演算処理を表すプロトコルを割り当てる。ここで、演算プロトコル割当部１０３が割り当てるプロトコルとしては、所定の演算処理を表すプロトコルであって、再分配プロトコルが含まれないプロトコルが選択される。例えば、上記（２．一般的なセキュア計算プロトコルについて）で説明した非特許文献１に記載の技術では、基本演算プロトコルである加算プロトコル及び乗算プロトコルのうち、乗算プロトコルに再分配処理が含まれている（下記（７．プロトコル）を参照。）。本実施形態では、当該乗算プロトコルの代わりに、再分配プロトコルが含まれない乗算プロトコル（以下、分散値乗算プロトコルとも呼称する。）が用いられる。なお、分散値乗算プロトコルは、例えば入力値ｕ、ｖに対応する分散値＜ｕ＞、＜ｖ＞から、ｕ×ｖ＝ｗであるｗの分散値＜ｗ＞が得られる乗算プロトコルのことである。以下では、分散値乗算プロトコルのことを「＜ｗ＞←Ｍｕｌｔ２（＜ｕ＞，＜ｖ＞）」とも表す。分散値乗算プロトコルにおいて行われる具体的な処理については下記（７．プロトコル）に示す。
【００５７】
例えば、計算式分解部１０１によって、計算式が、基本演算プロトコルに対応する基本演算処理である加算及び乗算に分解されているとする。演算プロトコル割当部１０３は、分解された計算式に対して、加算に対応する部分には加算プロトコルを割り当て、乗算に対応する部分には分散値乗算プロトコルを割り当てる。これにより、演算プロトコル割当部１０３によって生成されるプロトコル（すなわち第１の計算プロトコル）は、計算式プロトコルから再分配プロトコルが取り除かれたプロトコル（すなわち、再分配プロトコルを含まない計算式プロトコル）となる。演算プロトコル割当部１０３は、生成した第１の計算プロトコルについての情報を、第２計算プロトコル生成部１０５に提供する。
【００５８】
第２計算プロトコル生成部１０５は、生成された第１の計算プロトコルに対して、入力値の秘匿性が確保され得る適切な位置に再分配プロトコルを再度配置することにより、第２の計算プロトコルを生成する。上述したように、再分配プロトコルは、入力値の秘匿性を確保し、セキュア計算プロトコルの安全性を保証するために行われるプロトコルである。従って、入力値の秘匿性を考慮すると、再分配プロトコルが配置されるべき適切な位置は、計算パーティ間での通信を伴う処理が実行された後であり得る。従って、第２計算プロトコル生成部１０５は、計算パーティ間での通信を伴う処理の少なくともいずれかの後に再分配プロトコルを配置することにより、重複する再分配プロトコルが取り除かれた第２の計算プロトコル（すなわち、改良計算式プロトコル）を生成することができる。なお、具体的には、計算パーティ間で分散値の送受信が行われた場合には、セキュア計算プロトコルの入力値である分散値と、出力値である分散値とが独立ではなくなり、セキュア計算プロトコルの安全性が低下する可能性がある。従って、第２計算プロトコル生成部１０５は、計算パーティ間での分散値の通信を伴う処理の少なくともいずれかの後に再分配プロトコルを配置してもよい。
【００５９】
ここで、計算パーティ間で分散値の通信が行われた場合であっても、各計算パーティが当該分散値に対する計算結果である分散値をローカルで保持し続けている段階では、セキュリティ上問題はないと考えられる。しかし、その後に、その分散値を更に他の計算パーティに送信するときに、セキュリティ上の問題が生じ得る。従って、本実施形態では、第２計算プロトコル生成部１０５は、計算パーティ間での通信を伴う第１の処理の後に、計算パーティ間での通信を伴う第２の処理が再度行われる場合に、当該第１の処理と当該第２の処理との間に再分配プロトコルを配置してもよい。
【００６０】
第２計算プロトコル生成部１０５は、生成した改良計算式プロトコルを演算処理装置２０（すなわち、計算パーティＰ１、Ｐ２、Ｐ３）に送信し、演算処理装置２０では、改良計算式プロトコルに基づく改良セキュア計算プロトコルが実行される。
【００６１】
以上、情報処理装置１０の機能構成について説明した。なお、上述した計算式分解部１０１、演算プロトコル割当部１０３及び第２計算プロトコル生成部１０５によって実行される処理は、下記（４．情報処理方法の処理手順）で説明する、図７に示す各処理に対応している。従って、計算式分解部１０１、演算プロトコル割当部１０３及び第２計算プロトコル生成部１０５によって実行される処理については、下記（４．情報処理方法の処理手順）で改めて詳しく説明する。
【００６２】
以上説明したように、本実施形態によれば、計算式プロトコルから機能が重複している再分配プロトコルを取り除くために、乗算プロトコルから再分配プロトコルが分離された分散値乗算プロトコルが用いられる。計算式を分解し、その乗算に対応する部分に分散値乗算プロトコルを当てはめることにより、再分配プロトコルを含まない計算式プロトコルである第１の計算プロトコルが生成される。その後に、入力値の秘匿性を確保するために適切な位置に再分配プロトコルを配置することにより、機能が重複している再分配プロトコルが取り除かれるとともに、入力値の秘匿性も確保された、第２の計算プロトコルが生成され得る。
【００６３】
ここで、以上では、情報処理装置１０が、計算式（すなわち計算式プロトコル）を入力として、当該計算式プロトコルから重複する再分配プロトコルが取り除かれた改良計算式プロトコルを生成する場合について説明したが、本実施形態はかかる例に限定されない。本実施形態では、情報処理装置１０は、セキュア計算プロトコル全体を入力として、当該セキュア計算プロトコルから重複する再分配プロトコルが取り除かれた改良セキュア計算プロトコルを生成してもよい。上述したように、改良セキュア計算プロトコルは、セキュア計算プロトコルにおいて計算式プロトコルが改良計算式プロトコルに置き換えられたものに対応しているため（すなわち、入力値分配プロトコル及び出力値復号プロトコルは変更されないため）、入力としてセキュア計算プロトコルが与えられた場合であっても、当該セキュア計算プロトコルに含まれる計算式プロトコルに対して以上説明した各処理が実行されることにより、改良セキュア計算プロトコルが生成され得る。上記の説明において、第１の計算プロトコルとは、「計算式プロトコルから再分配プロトコルが取り除かれたもの」のことを意味していてもよいし、「セキュア計算プロトコル内の計算式プロトコルから再分配プロトコルが取り除かれたもの」のことを意味していてもよい。同様に、第２の計算プロトコルとは、「改良計算式プロトコル」のことを意味していてもよいし、「改良セキュア計算プロトコル」のことを意味していてもよい。
【００６４】
また、上記では、計算式分解部１０１は、計算式を基本演算処理に分解し、演算プロトコル割当部１０３は、分解された計算式に対して基本演算プロトコルを割り当てる場合について説明したが、本実施形態はかかる例に限定されない。例えば、計算式分解部１０１は、複数の基本演算処理が組み合わされて構成される所定の演算処理に計算式を分解してもよい。つまり、本実施形態では、計算式分解部１０１が計算式を分解する際の基準は、最小単位の演算である基本演算処理であってもよいし、基本演算処理が適宜組み合わされて構成される任意の演算処理であってもよい。また、計算式分解部１０１が、複数の基本演算処理が組み合わされて構成される所定の演算処理に計算式を分解した場合には、演算プロトコル割当部１０３は、分解された計算式に対して、計算式分解部１０１が計算式を分解する際に基準として用いた演算処理に対応する、複数の基本演算プロトコルが組み合わされて構成される演算プロトコルを割り当ててもよい。この場合、演算プロトコル割当部１０３が割り当てる演算プロトコルは、計算式分解部１０１が計算式を分解する際に基準として用いた所定の演算処理に対応するプロトコルから、再分配プロトコルが取り除かれたものであってよい。
【００６５】
次に、演算処理装置２０に機能構成について説明する。図６を参照すると、本実施形態に係る演算処理装置２０は、入力値分配部２０１と、分散値セキュア計算部２０３と、出力値計算部２０５と、を備える。なお、演算処理装置２０が備える各機能は、演算処理装置２０に搭載されるＣＰＵやＤＳＰ等の各種のプロセッサが所定のプログラムに従って動作することによって実現され得る。
【００６６】
ここで、演算処理装置２０は、図４及び図５に示す計算パーティＰ１、Ｐ２、Ｐ３に対応するものである。実際にはセキュア計算プロトコルを実行するための複数の演算処理装置２０が存在し得るが、各演算処理装置２０が有する機能は同様であってよいため、簡単のため、図６では代表的に１つの演算処理装置２０を図示している。また、図６に示す例では、演算処理装置２０として、入力者及び出力値取得者としての機能を併せ持つ計算パーティの機能構成を図示している。
【００６７】
入力値分配部２０１は、入力された秘密入力値に基づいて分散値を生成し、計算パーティを構成する各演算処理装置２０に分配する。入力値分配部２０１が行う処理は、上記図２及び図３に示すステップＳ１０１における処理に対応している。入力値分配部２０１は、入力値分配プロトコルを実行することにより、入力された秘密入力値の分散値を各演算処理装置２０に分配することができる。なお、図４に示すセキュア計算システム１のように、入力者Ｄ１、Ｄ２と、計算パーティＰ１、Ｐ２、Ｐ３とが別々に構成される場合には、計算パーティＰ１、Ｐ２、Ｐ３（すなわち、演算処理装置２０）は入力値分配部２０１の機能を有していなくてもよく、入力者Ｄ１、Ｄ２に対応するパーティ（例えば他の情報処理端末）において入力値分配部２０１の機能が実行され、分散値が当該入力者Ｄ１、Ｄ２に対応するパーティから演算処理装置２０に送信され得る。
【００６８】
分散値セキュア計算部２０３は、情報処理装置１０によって生成された改良計算式プロトコルに基づいて、分配された分散値に対してセキュア計算を実行する。具体的には、分散値セキュア計算部２０３は、秘密入力値の分散値を入力として、情報処理装置１０によって生成された改良計算式プロトコルを実行する。なお、分散値セキュア計算部２０３が行う処理は、上記図２及び図３に示すステップＳ１０３における処理に対応している。
【００６９】
出力値計算部２０５は、分散値セキュア計算部２０３によるセキュア計算の結果（これは、出力値の分散値である）から出力値を計算する。出力値計算部２０５は、分散値セキュア計算部２０３によるセキュア計算の結果に対して出力値復号プロトコルを実行することにより、出力値を算出することができる。なお、出力値計算部２０５が行う処理は、上記図２及び図３に示すステップＳ１０５における処理に対応している。また、出力値取得者と、計算パーティＰ１、Ｐ２、Ｐ３とが別々に構成される場合には、計算パーティＰ１、Ｐ２、Ｐ３（すなわち、演算処理装置２０）は出力値計算部２０５の機能を有していなくてもよく、出力値取得者に対応するパーティ（例えば他の情報処理端末）に、分散値セキュア計算部２０３によるセキュア計算の結果が送信され、当該出力値取得者に対応するパーティにおいて出力値計算部２０５の機能が実行され得る。
【００７０】
以上、図６を参照して、本実施形態に係る情報処理装置１０及び演算処理装置２０の機能構成について説明した。以上説明したように、本実施形態によれば、情報処理装置１０によって、機能が重複する再分配プロトコルが取り除かれた改良計算式プロトコル又は改良セキュア計算プロトコルが生成される。そして、複数の演算処理装置２０において、当該改良計算式プロトコル又は改良セキュア計算プロトコルを用いたセキュア計算プロトコルが実行される。ここで、再分配プロトコルは、演算処理装置２０間の通信を伴うプロトコルであるため、通信が行われない他のプロトコルに比べて実行時間が長くなる傾向がある。本実施形態では、機能が重複する再分配プロトコルが取り除かれた、すなわち、再分配プロトコルが適切に配置された計算式プロトコルを用いてセキュア計算プロトコルが実行されることにより、セキュア計算プロトコル全体の実行時間をより短縮することができる。
【００７１】
なお、上記の説明における再分配プロトコルは、入力値の秘匿性を保つために行われる秘匿性確保プロトコルの一例であり得る。セキュア計算プロトコルでは、演算処理装置２０間で分散値の送受信が行われた場合に、入力値の秘匿性を保つために、再分配プロトコルに例示されるような秘匿性確保プロトコルが実行され得る。本実施形態では、例えばセキュア計算プロトコルの中に、秘匿性確保プロトコルが重複して実行される部分があり、その機能が重複している場合（すなわち、１回秘匿性確保プロトコルが実行されるだけでも入力値の秘匿性が確保され得る場合）であれば、以上説明した方法と同様の方法によって、冗長な秘匿性確保プロトコルが取り除かれた改良セキュア計算プロトコルが生成され得る。
【００７２】
また、図６に示す例では、改良セキュア計算プロトコルを生成する装置（すなわち、情報処理装置１０）と、当該改良セキュア計算プロトコルを実行する装置（すなわち、演算処理装置２０）とが別々の装置として構成される場合について図示しているが、本実施形態はかかる例に限定されない。演算処理装置２０（すなわち、計算パーティ）自身が改良セキュア計算プロトコルを生成してもよい。その場合、演算処理装置２０が、図６に示す情報処理装置１０が備える各機能を更に備えることとなる。また、情報処理装置１０が備える各機能（計算式分解部１０１、演算プロトコル割当部１０３及び第２計算プロトコル生成部１０５）は、１台の装置において実行されなくてもよく、複数の装置の協働によって実行されてもよい。更に、情報処理装置１０は、ネットワーク上（いわゆるクラウド上）に設置されるサーバ又はサーバ群であってもよく、情報処理装置１０が備える各機能が当該ネットワーク上のサーバ又はサーバ群によって実行されてもよい。
【００７３】
なお、上述のような本実施形態に係る情報処理装置１０又は演算処理装置２０の各機能を実現するためのコンピュータプログラムを作製し、パーソナルコンピュータ等に実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリなどである。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信してもよい。
【００７４】
（４．情報処理方法の処理手順）
（４−１．情報処理方法の概要）
次に、図７を参照して、本実施形態に係る情報処理方法の処理手順について説明する。図７は、本実施形態に係る情報処理方法の処理手順の一例を示すフロー図である。
【００７５】
図７を参照すると、本実施形態に係る情報処理方法では、まず、セキュア計算プロトコルの計算式が、所定の演算処理に分解される（ステップＳ２０１）。例えば、ステップＳ２０１では、セキュア計算プロトコルの計算式が基本演算処理に分解される。なお、ステップＳ２０１に示す処理は、上述した図６に示す計算式分解部１０１によって実行される処理に対応している。
【００７６】
次に、分解された計算式に対して、所定の演算処理を表すプロトコルが割り当てられる（ステップＳ２０３）。ステップＳ２０３において割り当てられるプロトコルとしては、再分配プロトコルが含まれないプロトコルが選択される。例えば、ステップＳ２０１において、計算式が基本演算処理である加算と乗算とに分解されている場合であれば、ステップＳ２０３では、分解された計算式に対して、加算に対応する部分には加算プロトコルが割り当てられ、乗算に対応する部分には分散値乗算プロトコルが割り当てられる。なお、ステップＳ２０３に示す処理は、上述した図６に示す演算プロトコル割当部１０３によって実行される処理に対応しており、ステップＳ２０３においては、上述した第１の計算プロトコルが生成されることとなる。
【００７７】
次に、ステップＳ２０３で生成された第１の計算プロトコルに対して、入力値の秘匿性が確保され得る適切な位置に再分配プロトコルが再度配置されることにより、第２の計算プロトコルが生成される（ステップＳ２０５）。なお、ステップＳ２０５に示す処理は、上述した図６に示す第２計算プロトコル生成部１０５によって実行される処理に対応しており、第２の計算プロトコルは改良セキュア計算プロトコル又は改良計算式プロトコルに対応している。ステップＳ２０５で生成された第２の計算プロトコルに基づいて、計算パーティ間において計算が実行される。
【００７８】
（４−２．情報処理方法の詳細）
以上説明した情報処理方法における各処理の詳細について順に説明する。なお、以下の説明では、計算式が基本演算処理である加算と乗算とに分解される場合を例に挙げて説明する。また、具体例として、計算式が下記数式（１）で示される場合について説明する。
【００７９】
【数１】
2015194959.tif 000003
【００８０】
ここで、ｘ１、ｘ２、ｘ３、ｘ４、ｘ５は秘密入力値であり、ｙは出力値である。すなわち、本具体例に係るセキュア計算プロトコルは、３つの計算パーティＰ１、Ｐ２、Ｐ３が、秘密入力値ｘ１、ｘ２、ｘ３、ｘ４、ｘ５に基づいて、上記数式（１）で表される出力値ｙを、秘密入力値ｘ１、ｘ２、ｘ３、ｘ４、ｘ５が互いに秘匿された状態で算出するプロトコルである。
【００８１】
（ステップＳ２０１：計算式の分解）
ステップＳ２０１に示す処理では、計算式が、加算又は乗算の２項演算からなる計算手続き（以下、計算過程とも呼称する。）に分解される。そして、分解された計算式を利用して、計算式が、加算又は乗算が順に計算されていく過程を表す計算グラフに変換される。この際、計算式に対応する演算は全て環上の演算であるため、減算は加算に変換される。
【００８２】
（Ｓ２０１−１）
まず、計算式について、２つの入力変数（入力値に対応する変数）に対する２項演算を、中間変数で置き換える処理が行われる。置き換えられた中間変数に対しても、更に、入力変数と中間変数又は中間変数と中間変数に対する２項演算を、他の中間変数で置き換える処理が繰り返し行われる。当該処理が、（出力変数）＝（入力変数又は中間変数）の関係になるまで繰り返される。
【００８３】
例えば上記数式（１）であれば、ｘ１ｘ２に中間変数であるｖ１が割り当てられる（ｖ１＝ｘ１ｘ２）。同様に、数式（１）に含まれる変数同士の２項演算が、中間変数によって置き換えられる。
【００８４】
（Ｓ２０１−２）
ステップＳ２０１−１に示す処理が終了したら、中間変数及び出力変数を左辺とし、変数同士の２項演算を右辺とする数式を列挙する処理が行われる。式を列挙する順序は、２項演算を中間変数に置換した順序である。例えば、上記数式（１）に対してステップＳ２０１−１、Ｓ２０１−２に示す処理が行われた結果は、下記数式（２）のようになる。
【００８５】
【数２】
2015194959.tif 000004
【００８６】
ここで、ｖ１、ｖ２、ｖ３、ｖ４は中間変数である。上記数式（２）は、上記数式（１）を複数の数式からなる計算過程に分解したものに対応している。
【００８７】
（Ｓ２０１−３）
計算式が計算過程に分解されると、当該計算過程が計算グラフで表現される。計算グラフは、入力変数、出力変数及び中間変数に対応する頂点を有しており、計算過程を表す数式の右辺の変数に対応する頂点から、当該数式の左辺の変数に対応する頂点に向かって（すなわち、始点を右辺の変数、終点を左辺の変数として）有向枝が結ばれる。また、中間変数に対応する頂点には、２項演算子が割り当てられる。
【００８８】
図８に計算グラフの一例を示す。図８は、図７に示すステップＳ２０１における処理において作成される計算グラフの一例を示す図である。図８では、上記数式（２）に示す計算過程に対応する計算グラフが図示されている。
【００８９】
例えば、図８に示すように、上記数式（２）の１番目の数式である「ｖ１＝ｘ１ｘ２」は、計算グラフでは、ｘ１を示す頂点からｖ１を示す頂点に有向枝が伸ばされ、ｘ２を示す頂点からｖ１を示す頂点に有向枝が伸ばされるように表現される。また、中間変数ｖ１を示す頂点には、乗算を表す記号が割り当てられる。
【００９０】
（ステップＳ２０３：演算プロトコルの割り当て）
ステップＳ２０３に示す処理では、計算式に対して基本演算プロトコルが割り当てられ、計算式が第１の計算プロトコルに変換される。具体的には、ステップＳ２０１で求められた計算過程の加算及び乗算に対して、基本演算プロトコルである加算プロトコル及び分散値乗算プロトコルが、それぞれ割り当てられる。
【００９１】
例えば、上記数式（２）の１番目の数式である「ｖ１＝ｘ１ｘ２」は、乗算であるため、当該数式には、分散値乗算プロトコル＜ｖ１＞←Ｍｕｌｔ２（＜ｘ１＞，＜ｘ２＞）が割り当てられる。最終的に、上記数式（２）は、下記数式（３）に変換される。下記数式（３）は、上記数式（２）を計算プロトコルとして表したものであり、上述した第１の計算プロトコルに対応するものである。
【００９２】
【数３】
2015194959.tif 000005
【００９３】
なお、上記数式（３）における５行目の数式（＜ｙ＞←＜ｖ４＞）は、中間変数ｖ４の分散値から、最終的な出力値であるｙの分散値を生成する処理に対応している。
【００９４】
（ステップＳ２０５：改良計算式プロトコルの生成（再分配プロトコルの再配置））
ステップＳ２０５に示す処理では、ステップＳ２０３で生成された第１の計算プロトコルに対して、再分配プロトコルが適切な位置に再配置されることにより、改良計算式プロトコル（第２の計算プロトコル）が生成される。再分配プロトコルが配置される位置は具体的には、以下で説明する手順に基づいて、計算グラフを用いて決定される。
【００９５】
（Ｓ２０５−１）
まず、計算グラフにおける全ての中間変数に対応する頂点の中から、割り当てられた演算子が乗算である頂点が抽出される。抽出された頂点の集合をＶとする。図８に示す例であれば、該当する中間変数の集合は、Ｖ＝｛ｖ１，ｖ２，ｖ３｝である。
【００９６】
（Ｓ２０５−２）
次に、全ての頂点ｖ∈Ｖについて、以下のステップＳ２０５−２−１、Ｓ２０５−２−２の処理が実行される。
【００９７】
（Ｓ２０５−２−１）
頂点ｖ＝ｖｉを始点として、有向枝で辿れる全頂点（中間変数）を抽出する。そして、抽出された頂点の中から、他の中間変数にそれ以上辿ることができない、始点となり得ない頂点を抽出し、その集合をＶｉとする。このとき、出力変数に対応する頂点に向かう有向枝は対象としない。図８に示す例であれば、ｖ＝ｖ１のとき、ｖ１を始点として有向枝で辿れる頂点はｖ３，ｖ４である。その中で始点にならない頂点はｖ４なので、Ｖ１＝｛ｖ４｝となる。ステップＳ２０５−２−１では、乗算を表す頂点に対して、当該乗算の後段でなされる演算の順序を表す経路（パス）の終点が抽出されることとなる。
【００９８】
（Ｓ２０５−２−２）
次に、始点ｖ＝ｖｉに対応する、抽出された全ての頂点ｖｊ∈Ｖｉについて、以下の手続きを行う。すなわち、始点と各頂点の間のパスに存在する、全ての頂点の集合をＶｉｊとする。図８に示す例であれば、始点ｖ＝ｖ１から頂点ｖ４に向かうパスを考えると、Ｖ１４＝｛ｖ１，ｖ３，ｖ４｝となる。そして、Ｖｉｊ内の全ての頂点ｗ＝ｖｋについて、始点から終点に向けて、下記で説明する終了条件に達するまで、順番に以下の処理を行う。すなわち、頂点ｗを始点としたときの有向枝の終点の頂点が、乗算が割り当てられた中間変数に対応する頂点である場合又は出力変数に対応する頂点である場合、この頂点ｗを抽出し、ＶＤという頂点集合に入れ、当該処理を終了する。終点の演算子が加算の場合は、この終点を始点ｗとして同じ手続きを繰り返し行う。図８に示す例であれば、Ｖ１４＝｛ｖ１，ｖ３，ｖ４｝のとき、まず初めにｗ＝ｖ１として、ｖ１を始点とする有向枝の終点が判断される。ｖ１を始点とする有向枝の終点はｖ３であり、ｖ３は乗算であるため、ＶＤの中にｖ１が入れられ、この集合Ｖ１４内での探索が終了される。ステップＳ２０５−２−２では、ステップＳ２０５−２−１で抽出された終点までのパスにおいて、後段に乗算又は出力値に対応する頂点が存在する頂点ｖが抽出されることとなる。このように、ステップＳ２０５−２−１、Ｓ２０５−２−２に示す処理を行うことにより、計算グラフの中で、乗算の後に乗算又は出力値の出力が行われる部分が抽出される。
【００９９】
ステップＳ２０５−２−１、Ｓ２０５−２−２の処理を全ての頂点ｖ∈Ｖについて実行すると、図８に示す例であれば、ｖ＝ｖ１の場合はｖ１、ｖ＝ｖ２の場合はｖ４、ｖ＝ｖ３の場合はｖ４が抽出されることとなる。従って、ＶＤ＝｛ｖ１，ｖ４｝となる。
【０１００】
（Ｓ２０５−３）
次に、ステップＳ２０５−２で抽出された、集合ＶＤに含まれる頂点の演算に対応する基本演算プロトコルの直後に、再分配プロトコルが配置される。図８に示す例であれば、ＶＤ＝｛ｖ１，ｖ４｝であるため、上記数式（３）の１番目、４番目のプロトコルの後に、再分配プロトコルが配置される。最終的に得られる再分配プロトコルが配置された後の改良計算式プロトコルは、下記数式（４）のようなプロトコルとなる。
【０１０１】
【数４】
2015194959.tif 000006
【０１０２】
以上、本実施形態に係る情報処理方法の処理手順について説明した。ここで、以上説明した本実施形態に係る情報処理方法によって得られる改良セキュア計算プロトコルと、一般的な方法において用いられているセキュア計算プロトコルとの比較を行う。
【０１０３】
例えば、上記数式（１）の計算式を、上記非特許文献１に記載の方法での計算式プロトコルで表現すると、下記数式（５）のようになる。
【０１０４】
【数５】
2015194959.tif 000007
【０１０５】
ここで、セキュア計算プロトコルでは、実行したい計算に対応する計算式が、基本演算処理を表す基本演算プロトコル（例えば、加算プロトコル、乗算プロトコル及び分散値乗算プロトコル）を組み合わせることで実現できる。一方、セキュア計算プロトコルにおいてその安全性を保証するためには、計算式に対応する計算式プロトコルの入力値である分散値と、当該計算式プロトコルの出力値である分散値とが互いに独立であり、かつ、その出力値が計算パーティ間で一様に分布する必要がある。従って、非特許文献１に記載されているような一般的な方法では、基本演算プロトコルとして用いられている加算プロトコル及び乗算プロトコルが、このような条件を満たすように設計されていた。具体的には乗算プロトコル内に、分散値を各計算パーティに再分配することによってその独立性を確保する再分配プロトコルが含まれる。しかしながら、一般的な方法では、計算式を基本演算プロトコルによって構成する際に、乗算プロトコルが複数含まれる場合には、パーティ間での通信を伴うプロトコルである再分配プロトコルが多数実行されることとなり、通信量が増加してしまう可能性があった。
【０１０６】
一方、一般的な方法では、単純に加算プロトコル及び乗算プロトコルを組み合わせることによって計算式に対応する計算式プロトコルが構成されるため、同一の機能を果たす再分配プロトコルが重複して実行される場合がある等、当該計算式プロトコルが必ずしも最適化されていなかった。従って、計算式プロトコルにおいて再分配プロトコルを適切な位置に再配置することにより、セキュア計算プロトコルをより効率的なものにでき、通信量を削減できる可能性がある。
【０１０７】
そこで、本実施形態では、基本演算プロトコルとして、乗算プロトコルから再分配プロトコルが分離されたプロトコルである、分散値乗算プロトコルを導入する。そして、加算プロトコルと分散値乗算プロトコルとで、計算式に対応する計算式プロトコルを作成した後、適切な位置、すなわち、分散値の独立性が保たれるような位置に再分配プロトコルを再配置することにより、より効率化されたセキュア計算プロトコル（改良セキュア計算プロトコル）を作成する。
【０１０８】
ここで、再分配プロトコルを配置する位置について考察すると、出力値が入力値と独立にならなくなるのは、計算パーティ間で分散値の送受信が行われる分散値乗算プロトコルが行われた後である。ただし、分散値乗算プロトコルを行った後であっても、各計算パーティがその計算結果である分散値をローカルで保持し続けている段階では、当該分散値が入力値に依存していてもセキュリティ上問題はない。しかし、その後に、その分散値を更に他の計算パーティに送信するときに、セキュリティ上問題が生じ得る。計算パーティ間で分散値の送受信が行われるのは、分散値乗算プロトコルが行われる場合と、最終的な出力値に対する分散値が生成される場合である。従って、本実施形態では、分散値乗算プロトコルが実行され、かつ、その後にその結果を他の計算パーティに送信する演算がある場合に、当該他の計算パーティに送信する前に再分配プロトコルが実行されるように、再分配プロトコルの配置位置を決定する。具体的には、上記（４−２．情報処理方法の詳細）で説明したアルゴリズムにより、このような再配分プロトコルを実行する必要がある位置（すなわち、再配分プロトコルの適切な配置位置）が特定され得る。
【０１０９】
上述したように、本実施形態によって得られる改良計算式プロトコルは、上記数式（４）のようになる。一方、一般的な方法によって実行され得る計算式プロトコルは、上記数式（５）のようになる。両者を比較すると、上記数式（５）では、再分配プロトコルが６回実行されることとなる。一方、上記数式（４）では、再分配プロトコルが２回しか実行されない。このように、本実施形態によれば、通信を伴うプロトコルである再分配プロトコルの回数を削減することができるため、セキュア計算プロトコルの実行時間を短縮することができる。また、分散値の独立性を保つために必要な箇所にはセキュア計算プロトコルが適切に配置されるため、実行時間を低減しつつも、秘密入力値の秘匿性は確保され得る。
【０１１０】
（５．適用例）
本実施形態に係るセキュア計算プロトコルは、例えば別々のシステムにおいて管理されている複数の情報に対して、当該情報を相手のシステムには秘匿した状態で、所定の処理を行いたい場合に、好適に適用され得る。例えば、近い将来、ユーザのパーソナルデータの流動性が増し、当該パーソナルデータの利活用が活発になる状況では、ユーザのプライバシー情報の保護が重要になることが想定される。このような場合に、セキュア計算プロトコルを用いることにより、複数のシステムに点在するユーザのパーソナルデータを一箇所に集めることなく、統計解析や知識抽出（いわゆるデータマイニング）を行うことが可能となる。その結果、情報漏えいリスクを分散化できるとともに、必要以上にプライバシー情報が抽出されることを防止できる利点がある。ここでは、本実施形態に係るセキュア計算プロトコルのいくつかの適用例について説明する。
【０１１１】
（５−１．医療情報の二次利用）
本実施形態に係るセキュア計算プロトコルは、医療情報に対して各種の解析処理を行う際に好適に適用され得る。ここで、医療情報とは、例えば患者の病歴や年齢、身体の様子を表す基礎データ等、一般的にカルテに記載され得るような情報であってよい。このような医療情報は、患者の個人情報であり、プライバシー情報の保護の観点から、当該医療情報を管理している病院等のシステム以外に持ち出されることは好ましくない。一方で、多数の医療情報を統合し、例えば統計的な処理を行うことにより、治療に有益なデータを得ることができる可能性もある。本実施形態によれば、医療情報を、当該医療情報を管理しているシステム以外に漏えいさせることなく、当該医療情報に対する解析処理を行うことができる。
【０１１２】
（５−１−１．医療情報に基づくデータマイニング）
まず、図９を参照して、本実施形態に係るセキュア計算プロトコルを用いた、医療情報に基づくデータマイニングについて説明する。図９は、本実施形態に係るセキュア計算プロトコルを用いた、医療情報に基づくデータマイニングについて説明するための説明図である。データマイニングでは、複数のシステムに点在する情報を網羅的に解析することにより、新たな情報が取り出される。
【０１１３】
図９を参照すると、本適用例では、ライフログサービス３３０が管理しているユーザのライフログと、病院３４０が管理している患者の医療情報と、を解析の対象としている。ライフログサービス３３０は、ユーザの生活に係るあらゆる情報（ライフログ）を管理し得る。当該ライフログは、例えばユーザ自身によって能動的に記録されてもよいし、例えばユーザが身に付けて使用するウェアラブル端末や、スマートフォン等の携帯端末に備えられる各種のセンサによって自動的に記録されてもよい。図９に示す例では、ライフログサービス３３０には、ライフログとして、ユーザの睡眠時間や運動時間等についての情報が記録されている。
【０１１４】
一方、病院３４０には、病院３４０を受診した患者の医療情報が管理されている。図９に示す例では、病院３４０には、医療情報として、患者の血圧、年齢及び病歴等についての情報が記録されている。ライフログサービス３３０と病院３４０とは、互いに連携しており、ユーザのＩＤと患者のＩＤとに基づいて個人を特定することまでは可能であるが、両者がそれぞれ有するライフログと医療情報とは、プライバシー情報の保護の観点から互いに開示されないことが好ましい。このような場合に、ライフログ及び医療情報を互いに秘匿にしたまま解析を行う手法として、セキュア計算プロトコルが好適に適用され得る。
【０１１５】
本適用例では、ライフログサービス３３０及び病院３４０は、セキュア計算プロトコルにおける入力者と計算パーティとを兼ねており、ライフログサービス３３０及び病院３４０から分散値として互いに提供されたライフログ及び医療情報に基づいて、セキュア計算プロトコルを実行する。これにより、ライフログ及び医療情報は互いに秘匿されたまま、ライフログ及び医療情報を用いた各種の解析処理が実行され得る。
【０１１６】
医療情報管理・解析サービス３２０は、ライフログサービス３３０及び病院３４０によるセキュア計算プロトコルの実行を管理する。また、医療情報管理・解析サービス３２０は、セキュア計算プロトコルにおける出力値取得者であってもよく、後述する情報処理装置端末３１０（一ユーザを模式的に表す）に対してセキュア計算プロトコルの実行結果を提供することができる。例えば、医療情報管理・解析サービス３２０は、セキュア計算プロトコルを生成し、生成したセキュア計算プロトコルをライフログサービス３３０及び病院３４０に配布するとともにセキュア計算プロトコルを実行させる。医療情報管理・解析サービス３２０においてセキュア計算プロトコルが生成される際に、本実施形態に係る手法が好適に適用され得る。本実施形態に係る手法を適用することにより、ライフログサービス３３０及び病院３４０におけるセキュア計算プロトコルの実行時間をより短くすることができ、より短時間でライフログ及び医療情報に基づく各種の解析を行うことが可能となる。
【０１１７】
情報処理装置端末３１０は、ライフログ及び医療情報に基づいて所定の解析結果を得たいと考えているユーザを表している。当該ユーザは、医療情報管理・解析サービス３２０にアクセスすることにより、例えば血圧と睡眠時間との相関や、病歴と運動時間との相関等、ライフログ及び医療情報に基づく各種の解析結果を得ることができる。
【０１１８】
なお、本適用例は上述した構成例に限定されず、ライフログサービス３３０及び病院３４０に加えて、医療情報管理・解析サービス３２０も計算パーティとして参加し、三者でセキュア計算プロトコルが実行されてもよい。また、医療情報管理・解析サービス３２０は存在しなくてもよく、情報処理装置端末３１０（すなわちユーザ）が、ライフログサービス３３０及び病院３４０のいずれかに直接アクセスすることにより、セキュア計算プロトコルの実行結果を取得してもよい。その場合、ライフログサービス３３０及び病院３４０のいずれかが出力値取得者を兼ねることとなる。
【０１１９】
（５−１−２．医療情報に対する統計解析処理）
次に、図１０を参照して、本実施形態に係るセキュア計算プロトコルを用いた、医療情報に対する統計解析処理について説明する。図１０は、本実施形態に係るセキュア計算プロトコルを用いた、医療情報に対する統計解析処理について説明するための説明図である。
【０１２０】
図１０を参照すると、本適用例では、互いに異なる病院３５０、３６０、３７０が管理している患者の医療情報を解析の対象としている。図１０に示す例では、病院３５０、３６０、３７０には、医療情報として、患者の年齢及び病歴等についての情報が記録されている。患者の医療情報は、プライバシー性の高い情報であり、厳重に管理されるべき情報であるが、その反面、例えば医療情報に対して各種の統計的な解析を行うことにより、例えば所定の病気に罹患しやすい年齢や性別等の傾向といった、有益な情報を得ることができる可能性がある。本適用例では、セキュア計算プロトコルを用いることにより、病院３５０、３６０、３７０が管理している患者の医療情報が開示されることなく、これらの医療情報に対する解析処理を行うことが可能となる。
【０１２１】
本適用例では、病院３５０、３６０、３７０は、セキュア計算プロトコルにおける入力者と計算パーティとを兼ねており、病院３５０、３６０、３７０から分散値として互いに提供された医療情報に基づいて、セキュア計算プロトコルを実行する。これにより、病院３５０、３６０、３７０がそれぞれ管理する医療情報は互いに秘匿されたまま、医療情報を用いた各種の解析処理が実行され得る。
【０１２２】
医療情報管理・解析サービス３２０は、病院３５０、３６０、３７０によるセキュア計算プロトコルの実行を管理する。また、医療情報管理・解析サービス３２０は、セキュア計算プロトコルにおける出力値取得者であってもよく、情報処理装置端末３１０（一ユーザを模式的に表す）に対してセキュア計算プロトコルの実行結果を提供することができる。例えば、医療情報管理・解析サービス３２０は、セキュア計算プロトコルを生成し、生成したセキュア計算プロトコルを病院３５０、３６０、３７０に配布するとともにセキュア計算プロトコルを実行させる。医療情報管理・解析サービス３２０においてセキュア計算プロトコルが生成される際に、本実施形態に係る手法が好適に適用され得る。本実施形態に係る手法を適用することにより、病院３５０、３６０、３７０におけるセキュア計算プロトコルの実行時間をより短くすることができ、より短時間で医療情報に基づく各種の解析を行うことが可能となる。
【０１２３】
情報処理装置端末３１０は、医療情報に基づいて所定の解析結果を得たいと考えているユーザを表している。当該ユーザは、医療情報管理・解析サービス３２０にアクセスすることにより、例えばある病気に罹患している患者の平均年齢や、性別等の、医療情報に基づく各種の統計情報を得ることができる。
【０１２４】
なお、本適用例は上述した構成例に限定されず、病院３５０、３６０、３７０に加えて、医療情報管理・解析サービス３２０も計算パーティとして参加し、四者でセキュア計算プロトコルが実行されてもよい。また、医療情報管理・解析サービス３２０は存在しなくてもよく、情報処理装置端末３１０（すなわちユーザ）が、病院３５０、３６０、３７０のいずれかに直接アクセスすることにより、セキュア計算プロトコルの実行結果を取得してもよい。その場合、病院３５０、３６０、３７０のいずれかが出力値取得者を兼ねることとなる。
【０１２５】
以上、セキュア計算プロトコルが、医療情報に対する各種の解析処理を行う際に適用される場合について説明した。なお、図９及び図１０に示すライフログ及び医療情報は一例であって、本実施形態に係るセキュア計算プロトコルを用いた解析には、一般的にライフログ及び医療情報として管理され得るあらゆる情報が入力値として用いられてよい。
【０１２６】
（５−２．推薦（リコメンド）サービス）
本実施形態に係るセキュア計算プロトコルは、ユーザの好み（嗜好）を分析し、その分析結果に基づいてユーザごとに適すると思われる情報を提供するサービスであるリコメンドサービスにおいて、ユーザの好みを分析する際に好適に適用され得る。図１１及び図１２を参照して、本実施形態に係るセキュア計算プロトコルを用いた、リコメンドサービスにおける分析処理について説明する。図１１及び図１２は、本実施形態に係るセキュア計算プロトコルを用いた、リコメンドサービスにおける分析処理について説明するための説明図である。
【０１２７】
図１１を参照すると、本適用例では、ある会社Ｘ社４３０が管理している各ユーザの購入履歴情報と、別の会社Ｙ社４４０が管理している各ユーザの購入履歴情報と、を解析の対象としている。例えば、Ｘ社４３０が管理している購入履歴情報とＹ社４４０が管理している購入履歴情報とは、それぞれ、各ユーザが互いに異なるサービスを介して購入した商品についての情報であるとする。この場合、プライバシー情報の保護の観点から、Ｘ社４３０及びＹ社４４０が、互いが保有する購入履歴情報をそれぞれに提供し、ある特定のユーザ４１０の好みを分析するために用いることは好ましくない。しかし、Ｘ社４３０及びＹ社４４０が保有する購入履歴情報を両方用いることにより、ユーザ４１０の好みをより的確に解析することができる可能性がある。このようなより精度の高い解析が行われることにより、ユーザ４１０がより興味を持つような商品がユーザ４１０に対して推薦されることとなり、商品を推薦する側であるＸ社４３０及びＹ社４４０にとっても、商品を購入する側であるユーザ４１０にとってもメリットがある。
【０１２８】
本適用例では、Ｘ社４３０及びＹ社４４０は、セキュア計算プロトコルにおける入力者と計算パーティとを兼ねており、Ｘ社４３０及びＹ社４４０から分散値として互いに提供された購入履歴情報に基づいて、セキュア計算プロトコルを実行する。これにより、Ｘ社４３０及びＹ社４４０がそれぞれ管理する購入履歴情報は互いに秘匿されたまま、購入履歴情報を用いた各種の解析処理（例えば、あるユーザ４１０の好みの解析処理）が実行され得る。
【０１２９】
購入履歴情報管理・解析サービス４２０は、Ｘ社４３０及びＹ社４４０によるセキュア計算プロトコルの実行を管理する。また、購入履歴情報管理・解析サービス４２０は、セキュア計算プロトコルにおける出力値取得者であってもよく、セキュア計算プロトコルの実行結果であるユーザ４１０の好みについての情報に基づいて、当該ユーザ４１０に対して商品の広告、推薦、通知等に関する情報を提供することができる。例えば、購入履歴情報管理・解析サービス４２０は、セキュア計算プロトコルを生成し、生成したセキュア計算プロトコルをＸ社４３０及びＹ社４４０に配布するとともにセキュア計算プロトコルを実行させる。購入履歴情報管理・解析サービス４２０においてセキュア計算プロトコルが生成される際に、本実施形態に係る手法が好適に適用され得る。本実施形態に係る手法を適用することにより、Ｘ社４３０及びＹ社４４０におけるセキュア計算プロトコルの実行時間をより短くすることができ、より短時間で購入履歴情報に基づく各種の解析を行うことが可能となる。
【０１３０】
なお、本適用例は上述した構成例に限定されず、Ｘ社４３０及びＹ社４４０に加えて、購入履歴情報管理・解析サービス４２０も計算パーティとして参加し、三者でセキュア計算プロトコルが実行されてもよい。また、購入履歴情報管理・解析サービス４２０は存在しなくてもよく、Ｘ社４３０及びＹ社４４０のいずれかから直接ユーザ４１０に対して、セキュア計算プロトコルの実行結果に基づく商品の広告、推薦、通知等に関する情報が提供されてもよい。その場合、Ｘ社４３０及びＹ社４４０のいずれかが出力値取得者を兼ねることとなる。
【０１３１】
図１２では、本適用例において実行され得るセキュア計算プロトコルの具体的な処理の一例について図示している。図１２に示す表では、各行はユーザを表しており、各列は商品の種類を表している。表中に丸が付いている部分は、当該ユーザが当該商品を購入したことを表している。つまり、図１２に示す表は、各ユーザの購入履歴を表すものである。ここで、例えば、商品１〜４についての購入履歴情報はＸ社４３０管理しているものであり、商品５〜７についての購入履歴情報は、Ｙ社４４０が管理しているものである。
【０１３２】
例えば、ユーザＡを、商品が推薦される対象者であるとする。本適用例では、各ユーザの商品の購入履歴をベクトル（以下、商品購入ベクトルとも呼称する。）として表現し、商品が推薦される対象であるユーザ（ユーザＡ）と、他のユーザ（ユーザＢ〜ユーザＧ）との間での商品購入ベクトルの相関量（例えば、Ｊａｃｃａｒｄ係数）を算出する。そして、当該相関量を重みとして他のユーザ（ユーザＢ〜ユーザＧ）の商品購入ベクトルを足し合わせることにより、商品が推薦される対象であるユーザ（ユーザＡ）に対して推薦される商品が推定される。
【０１３３】
具体的には、図１２に示す表の各行について、丸を「１」、空欄を「０」として表現することにより、各ユーザの商品購入ベクトルを取得する。例えばユーザＡの商品購入ベクトルは（０，０，１，０，０，１，０）であり、ユーザＤの商品購入ベクトルは（１，０，１，０，０，１，０）である。
【０１３４】
次に、ユーザＡの商品購入ベクトルと、他の全てのユーザＢ〜ユーザＧの商品購入ベクトルとの間で相関量を計算する。ここでは、相関量の一例として、Ｊａｃｃａｒｄ係数を計算する場合について説明する。しかし、本適用例はかかる例に限定されず、商品購入ベクトル間の相関量としては、相関を表す他の各種の値が計算されてもよい。
【０１３５】
本適用例の場合、Ｊａｃｃａｒｄ係数は、（ユーザがともに購入した商品の種類数（すなわち、２人のユーザの購入商品の「ＡＮＤ」））／（ユーザがそれぞれ購入した商品の総種類数（すなわち、２人のユーザの購入商品の「ＯＲ」））と定義できるため、例えばユーザＡとユーザＤのＪａｃｃａｒｄ係数は、２／３となる。同様にして、ユーザＡと、他の全てのユーザＢ〜ユーザＧとの間でＪａｃｃａｒｄ係数を計算する。
【０１３６】
次に、算出されたＪａｃｃａｒｄ係数を重みとして、ユーザＢ〜ユーザＧの商品購入ベクトルを足し合わせる。図１２に示す例であれば、（１×（０，０，１，０，０，１，０）＋２／３×（１，０，１，０，０，１，０）＋・・・＋０×（０，１，０，１，１，０，０））が計算されることとなる。当該計算の結果得られたベクトルの要素の中で、最も値が大きい要素に対応する商品が、ユーザＡに対して推薦される商品として選択され得る。図１２に示す例では、ユーザＡに推薦される商品として、商品１が選択される。
【０１３７】
以上、セキュア計算プロトコルが、リコメンドサービスにおける分析処理に適用される場合について説明した。
【０１３８】
（５−３．オークション）
本実施形態に係るセキュア計算プロトコルは、買い手（入札者）の提示価格（入札価格）が相互に開示されない、いわゆる封印入札方式のオークションにおける落札者及び／又は落札価格の決定処理に対して好適に適用され得る。図１３を参照して、本実施形態に係るセキュア計算プロトコルを用いた、オークションにおける落札者及び／又は落札価格の決定処理について説明する。図１３は、本実施形態に係るセキュア計算プロトコルを用いた、オークションにおける落札者及び／又は落札価格の決定処理について説明するための説明図である。
【０１３９】
図１３を参照すると、本適用例では、入札者（オークション参加者）５１０による入札価格についての情報（入札価格情報）をセキュア計算プロトコルにおける処理の対象としている。例えば、落札対象の商品に対して複数のオークション参加者５１０が互いに利害関係がある場合には、オークションを適正に実行するためにも、オークション参加者５１０には互いの入札価格は開示されないことが好ましい。本適用例では、セキュア計算プロトコルを用いることにより、オークション参加者５１０の入札価格情報が互いに開示されることなく、これらの入札価格情報に対する処理を行うことが可能となる。具体的には、オークション参加者５１０の入札価格情報を入力値（秘密入力値）として、セキュア計算プロトコルが実行される。
【０１４０】
図１３に示す例では、オークション参加者５１０はセキュア計算プロトコルにおける入力者の役割を果たし、複数のオークション参加者５１０から入札価格情報が秘密入力値として仲介者５２０に集積される。本適用例では、入札価格情報がオークション参加者５１０から仲介者５２０に送信される際に、当該入札価格情報は既に分散化され分散値となっている。仲介者５２０は、オークション参加者５１０と計算パーティ５３０ａ、５３０ｂ、５３０ｃとを仲介する役割を果たし、オークション参加者５１０から送信された入札価格情報の分散値を計算パーティ５３０ａ、５３０ｂ、５３０ｃのそれぞれに入力する。なお、入札価格情報の分散値がオークション参加者５１０から仲介者５２０に送信される際には、例えば当該入札価格情報の分散値には適宜暗号化処理が施されており、仲介者５２０によって分散値から入札価格情報が復号できない状態になっている。ここで、仲介者５２０は、セキュア計算プロトコルの実行を管理する役割を有してもよく、例えばセキュア計算プロトコルを生成したり、生成したセキュア計算プロトコルを計算パーティ５３０ａ、５３０ｂ、５３０ｃに配布するとともにセキュア計算プロトコルを実行させたりしてもよい。
【０１４１】
仲介者５２０から秘密入力値である入札価格情報の分散値が入力されると、計算パーティ５３０ａ、５３０ｂ、５３０ｃにおいて、当該入札価格情報の分散値に基づいてセキュア計算プロトコルが実行され、例えば落札者や落札価格等の、オークションの結果が出力されることとなる。当該セキュア計算プロトコルに対して、本実施形態に係る手法を適用することにより、より短時間でオークションの結果を得るための処理を行うことが可能となる。なお、図１３では、一例として、３つの計算パーティ５３０ａ、５３０ｂ、５３０ｃによってセキュア計算プロトコルが実行される場合について図示しているが、異なる数の計算パーティによってセキュア計算プロトコルが実行されてもよい。
【０１４２】
以上、本実施形態に係るセキュア計算プロトコルが好適に適用され得るいくつかの適用例について説明した。以上説明したような別々のシステムにおいて管理されている複数の情報を統合して所定の処理を行う場合に、本実施形態に係るセキュア計算プロトコルを適用することにより、これらの情報を互いのシステムには秘匿した状態で、より短時間で当該所定の処理を実行することが可能となる。従って、より利便性の高いサービスをユーザに提供することができる。
【０１４３】
（６．ハードウェア構成）
次に、図１４を参照して、本実施形態に係る情報処理装置のハードウェア構成について説明する。図１４は、本実施形態に係る情報処理装置のハードウェア構成の一例を示す機能ブロック図である。なお、図１４に示す情報処理装置９００は、例えば、図４及び図５に示す入力者Ｄ１、Ｄ２及び計算パーティＰ１、Ｐ２、Ｐ３を構成し得る演算処理装置や、図６に示す情報処理装置１０及び演算処理装置２０を実現し得る。
【０１４４】
情報処理装置９００は、ＣＰＵ９０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０３及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０５を備える。また、情報処理装置９００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、通信装置９２１、ドライブ９２３及び接続ポート９２５を備えてもよい。情報処理装置９００は、ＣＰＵ９０１に代えて、又はこれとともに、ＤＳＰ若しくはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）と呼ばれるような処理回路を有してもよい。
【０１４５】
ＣＰＵ９０１は、演算処理装置及び制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９又はリムーバブル記録媒体９２９に記録された各種のプログラムに従って、情報処理装置９００内の動作全般又はその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行時のパラメータ等を一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３及びＲＡＭ９０５は、ＣＰＵバス等の内部バスにより構成されるホストバス９０７により相互に接続されている。更に、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９１１に接続されている。本実施形態では、例えばＣＰＵ９０１が所定のプログラムに従って動作することにより、上述した情報処理装置１０及び演算処理装置２０の各機能が実現され得る。
【０１４６】
ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９１１に接続されている。
【０１４７】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ及びレバー等、ユーザによって操作される装置によって構成される。また、入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール装置（いわゆる、リモコン）であってもよいし、情報処理装置９００の操作に対応した携帯電話やＰＤＡ等の外部接続機器９３１であってもよい。更に、入力装置９１５は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路などから構成されている。情報処理装置９００のユーザは、この入力装置９１５を操作することにより、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりすることができる。本実施形態では、ユーザによって、入力装置９１５を介して、例えば、計算式についての情報や秘密入力値についての情報、セキュア計算プロトコルに係る各種のパラメータ等が入力されてよい。
【０１４８】
出力装置９１７は、取得した情報をユーザに対して視覚的又は聴覚的に通知することが可能な装置で構成される。このような装置として、ＣＲＴディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ＥＬディスプレイ装置及びランプ等の表示装置や、スピーカ及びヘッドホン等の音声出力装置や、プリンタ装置等がある。出力装置９１７は、例えば、情報処理装置９００が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置９００が行った各種処理により得られた結果を、テキスト、イメージ、表、グラフ等、様々な形式で視覚的に表示する。本実施形態では、当該表示装置に、例えばセキュア計算プロトコルの実行結果が表示されてよい。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して聴覚的に出力する。
【０１４９】
ストレージ装置９１９は、情報処理装置９００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置９１９は、例えば、ＨＤＤ等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス又は光磁気記憶デバイス等により構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ及び外部から取得した各種のデータ等を格納する。本実施形態では、例えばセキュア計算プロトコルに係る各種の情報（例えば、計算式についての情報、秘密入力値（分散値）についての情報、セキュア計算プロトコルの計算過程で得られる情報及び／又はセキュア計算プロトコルの実行結果についての情報等）が、ストレージ装置９１９に格納されてよい。
【０１５０】
通信装置９２１は、例えば、通信網（ネットワーク）９２７に接続するための通信デバイス等で構成された通信インターフェースである。通信装置９２１は、例えば、有線若しくは無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード等である。また、通信装置９２１は、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ又は各種通信用のモデム等であってもよい。この通信装置９２１は、例えば、インターネットや他の通信機器との間で、例えばＴＣＰ／ＩＰ等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置９２１に接続されるネットワーク９２７は、有線又は無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信又は衛星通信等であってもよい。本実施形態では、例えば、図４及び図５に示す入力者Ｄ１、Ｄ２と計算パーティＰ１、Ｐ２、Ｐ３との間での通信や計算パーティＰ１、Ｐ２、Ｐ３間での通信、図６に示す情報処理装置１０と演算処理装置２０との間の通信が、通信装置９２１によってネットワーク９２７を介して実行されてよい。
【０１５１】
ドライブ９２３は、記録媒体用リーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９２３は、装着されている磁気ディスク、光ディスク、光磁気ディスク又は半導体メモリ等のリムーバブル記録媒体９２９に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２３は、装着されている磁気ディスク、光ディスク、光磁気ディスク又は半導体メモリ等のリムーバブル記録媒体９２９に情報を書き込むことも可能である。リムーバブル記録媒体９２９は、例えば、ＤＶＤメディア、ＨＤ−ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア等である。また、リムーバブル記録媒体９２９は、コンパクトフラッシュ（登録商標）（ＣｏｍｐａｃｔＦｌａｓｈ：ＣＦ）、フラッシュメモリ又はＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等であってもよい。また、リムーバブル記録媒体９２９は、例えば、非接触型ＩＣチップを搭載したＩＣカード（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  ｃａｒｄ）又は電子機器等であってもよい。本実施形態では、例えば上述したようなセキュア計算プロトコルに係る各種の情報が、ドライブ９２３によってリムーバブル記録媒体９２９から読み出されたり、リムーバブル記録媒体９２９に書き込まれたりしてもよい。
【０１５２】
接続ポート９２５は、機器を情報処理装置９００に直接接続するためのポートである。接続ポート９２５の一例として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート及びＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ポート等がある。接続ポート９２５の別の例として、ＲＳ−２３２Ｃポート、光オーディオ端子及びＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ポート等がある。この接続ポート９２５に外部接続機器９３１を接続することで、情報処理装置９００は、外部接続機器９３１から直接各種のデータを取得したり、外部接続機器９３１に各種のデータを提供したりする。本実施形態では、例えば上述したようなセキュア計算プロトコルに係る各種の情報が、接続ポート９２５を介して外部接続機器９３１から取得されたり、外部接続機器９３１に出力されたりしてもよい。
【０１５３】
以上、本実施形態に係る情報処理装置９００の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
【０１５４】
なお、上述のような本実施形態に係る情報処理装置９００の各機能を実現するためのコンピュータプログラムを作製し、ＰＣ等に実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ等である。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信されてもよい。
【０１５５】
（７．プロトコル）
上述した入力値分配プロトコル、加算プロトコル、乗算プロトコル、再分配プロトコル、出力値復号プロトコル及び分散値乗算プロトコルにおける具体的な処理について以下に示す。ただし、以下に示す各プロトコルは、上述した非特許文献１に対応するものであり、他のセキュア計算プロトコルにおいては、当該他のセキュア計算プロトコルの様式に応じたプロトコルが適用され得る。
【０１５６】
（入力値分配プロトコル）
＜ｕ＞←Ｓｈａｒｅ（ｕ）
Ｄａｔａ：入力値ｕ（∈Ｚ２＾ｎ）
Ｒｅｓｕｌｔ：ｕ＝ｕ１＋ｕ２＋ｕ３となる分散値＜ｕ＞＝（ｕ１，ｕ２，ｕ３）
（ｕ１，ｕ２，ｕ３は、Ｐ１，Ｐ２，Ｐ３がそれぞれ有する分散値）
１．入力者はランダム値ｕ１←Ｚｎ，ｕ２←Ｚｎを生成
２．入力者はｕ１←ｕ−ｕ１−ｕ２を計算
３．ｕｉ（ｉ＝１，２，３）を入力者からＰｉに送信
【０１５７】
（加算プロトコル）
＜ｗ＞←Ａｄｄ（＜ｕ＞，＜ｖ＞）
Ｄａｔａ：Ｐ１，Ｐ２，Ｐ３が有する分散値＜ｕ＞，＜ｖ＞
Ｒｅｓｕｌｔ：ｗ＝ｕ＋ｖとなる分散値＜ｗ＞
１．Ｐ１はｗ１←ｕ１＋ｖ１を計算
２．Ｐ２はｗ２←ｕ２＋ｖ２を計算
３．Ｐ３はｗ３←ｕ３＋ｖ３を計算
４．＜ｗ＞を返す
【０１５８】
（乗算プロトコル）
＜ｗ’＞←Ｍｕｌｔ（＜ｕ＞，＜ｖ＞）
Ｄａｔａ：Ｐ１，Ｐ２，Ｐ３が有する分散値＜ｕ＞，＜ｖ＞
Ｒｅｓｕｌｔ：ｗ’＝ｕｖとなる分散値＜ｗ’＞
１．＜ｕ’＞←Ｒｅｓｈａｒｅ（＜ｕ＞）
２．＜ｖ’＞←Ｒｅｓｈａｒｅ（＜ｖ＞）
３．Ｐ１はＰ２にｕ１’とｖ１’を送信
４．Ｐ２はＰ３にｕ２’とｖ２’を送信
５．Ｐ３はＰ１にｕ３’とｖ３’を送信
６．Ｐ１はｗ１←ｕ１’ｖ１’＋ｕ１’ｖ３’＋ｕ３’ｖ１’を計算
７．Ｐ２はｗ２←ｕ２’ｖ２’＋ｕ２’ｖ１’＋ｕ１’ｖ２’を計算
８．Ｐ３はｗ３←ｕ３’ｖ３’＋ｕ３’ｖ２’＋ｕ２’ｖ３’を計算
９．＜ｗ’＞←Ｒｅｓｈａｒｅ（＜ｗ＞）を返す
【０１５９】
（再分配プロトコル）
＜ｗ＞←Ｒｅｓｈａｒｅ（＜ｕ＞）
Ｄａｔａ：Ｐ１，Ｐ２，Ｐ３が有する分散値＜ｕ＞
Ｒｅｓｕｌｔ：ｗ＝ｕとなる分散値＜ｗ＞
１．Ｐ１はランダム値ｒ１２←Ｚｎを生成
２．Ｐ２はランダム値ｒ２３←Ｚｎを生成
３．Ｐ３はランダム値ｒ３１←Ｚｎを生成
４．全ての値＊ｉｊをＰｉからＰｊに送信
５．Ｐ１はｗ１←ｕ１＋ｒ１２−ｒ３１を計算
６．Ｐ２はｗ２←ｕ２＋ｒ２３−ｒ１２を計算
７．Ｐ３はｗ３←ｕ３＋ｒ３１−ｒ２３を計算
８．＜ｗ＞を返す
【０１６０】
（出力値復号プロトコル）
ｗ←Ｄｅｃｏｄｅ（＜ｗ＞）
Ｄａｔａ：Ｐ１，Ｐ２，Ｐ３が有する分散値＜ｗ＞＝（ｗ１，ｗ２，ｗ３）
Ｒｅｓｕｌｔ：ｗ＝ｗ１＋ｗ２＋ｗ３
１．ｗｉ（ｉ＝１，２，３）をＰｉから出力値取得者に送信
２．出力値取得者はｗ＝ｗ１＋ｗ２＋ｗ３を計算
【０１６１】
（分散値乗算プロトコル）
＜ｗ＞←Ｍｕｌｔ２（＜ｕ＞，＜ｖ＞）
Ｄａｔａ：Ｐ１，Ｐ２，Ｐ３が有する分散値＜ｕ＞，＜ｖ＞
Ｒｅｓｕｌｔ：ｗ＝ｕｖとなる分散値＜ｗ＞
１．Ｐ１はＰ２にｕ１とｖ１を送信
２．Ｐ２はＰ３にｕ２とｖ２を送信
３．Ｐ３はＰ１にｕ３とｖ３を送信
４．Ｐ１はｗ１←ｕ１ｖ１＋ｕ１ｖ３＋ｕ３ｖ１を計算
５．Ｐ２はｗ２←ｕ２ｖ２＋ｕ２ｖ１＋ｕ１ｖ２を計算
６．Ｐ３はｗ３←ｕ３ｖ３＋ｕ３ｖ２＋ｕ２ｖ３を計算
【０１６２】
（８．補足）
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１６３】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１６４】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する第１計算プロトコル生成部と、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する第２計算プロトコル生成部と、を備える、情報処理装置。
（２）前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での通信を伴う処理の少なくともいずれかの後に、前記秘匿性確保プロトコルを配置する、前記（１）に記載の情報処理装置。
（３）前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での通信を伴う第１の処理の後に、前記演算処理装置間での通信を伴う第２の処理が行われる場合に、前記第１の処理と前記第２の処理との間に前記秘匿性確保プロトコルを配置する、前記（１）又は（２）に記載の情報処理装置。
（４）複数の前記演算処理装置は、複数の前記入力値のそれぞれが分配された値である分散値をそれぞれ有し、当該分散値を用いて前記セキュア計算プロトコルを実行する、前記（１）〜（３）のいずれか１項に記載の情報処理装置。
（５）前記秘匿性確保プロトコルは、前記入力値の値を保持しつつ前記分散値を異なる分散値に変換する、再分配プロトコルである、前記（４）に記載の情報処理装置。
（６）前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での前記分散値の通信を伴う処理の少なくともいずれかの後に、前記再分配プロトコルを配置する、前記（５）に記載の情報処理装置。
（７）前記第２計算プロトコル生成部は、前記第１の計算プロトコルにおける前記演算処理装置間での前記分散値の通信を伴う第１の処理の後に、前記演算処理装置間での前記分散値の通信を伴う第２の処理が行われる場合に、前記第１の処理と前記第２の処理との間に前記秘匿性確保プロトコルを配置する、前記（５）又は（６）に記載の情報処理装置。
（８）前記第１計算プロトコル生成部は、前記セキュア計算プロトコルにおいて計算される計算式を所定の演算処理に分解する計算式分解部と、分解された前記計算式に対して、前記所定の演算処理に対応する演算プロトコルであって前記秘匿性確保プロトコルを含まないプロトコルを割り当てる演算プロトコル割当部と、を含む、前記（１）〜（７）のいずれか１項に記載の情報処理装置。
（９）前記計算式分解部は、前記計算式を、最小単位の演算処理である基本演算処理に分解し、前記演算プロトコル割当部は、分解された前記計算式に対して、前記基本演算処理に対応する基本演算プロトコルを割り当てる、前記（８）に記載の情報処理装置。
（１０）前記基本演算処理は、整数環上の加算又は乗算である、前記（９）に記載の情報処理装置。
（１１）前記演算処理装置と前記情報処理装置とは、一体的に構成される、前記（１）〜（１０）のいずれか１項に記載の情報処理装置。
（１２）前記入力値は、互いに異なるシステムにおいて管理される医療情報であり、前記セキュア計算プロトコルでは、当該医療情報の統計値が計算される、前記（１）〜（１１）のいずれか１項に記載の情報処理装置。
（１３）前記入力値は、互いに異なるシステムにおいて管理されるユーザの商品の購入履歴情報であり、前記セキュア計算プロトコルでは、当該購入履歴情報に基づいて所定の前記ユーザの嗜好が解析される、前記（１）〜（１１）のいずれか１項に記載の情報処理装置。
（１４）前記入力値は、オークションにおいて複数の入札者から入力される入札価格情報であり、前記セキュア計算プロトコルでは、当該入札価格情報に基づいて対象商品の落札価格及び落札者の少なくともいずれかが決定される、前記（１）〜（１１）のいずれか１項に記載の情報処理装置。
（１５）プロセッサが、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成することと、プロセッサが、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成することと、を含む、情報処理方法。
（１６）コンピュータのプロセッサに、複数の入力値に基づいて複数の演算処理装置によって出力値が算出されるセキュア計算プロトコルに基づいて、前記入力値の秘匿性を保つために実行される秘匿性確保プロトコルを含まない第１の計算プロトコルを生成する機能と、前記第１の計算プロトコルにおける前記秘匿性が確保される位置に前記秘匿性確保プロトコルを配置することにより第２の計算プロトコルを生成する機能と、を実現させる、プログラム。
【符号の説明】
【０１６５】
１、２    セキュア計算システム
１０    情報処理装置
２０    演算処理装置
３０ａ〜３０ｄ    計算パーティ
１０１    計算式分解部
１０３    演算プロトコル割当部
１０４    第１計算プロトコル生成部
１０５    第２計算プロトコル生成部
２０１    入力値分配部
２０３    分散値セキュア計算部
２０５    出力値計算部
【図１】
2015194959.tif 000008
【図２】
2015194959.tif 000009
【図３】
2015194959.tif 000010
【図４】
2015194959.tif 000011
【図５】
2015194959.tif 000012
【図６】
2015194959.tif 000013
【図７】
2015194959.tif 000014
【図８】
2015194959.tif 000015
【図９】
2015194959.tif 000016
【図１０】
2015194959.tif 000017
【図１１】
2015194959.tif 000018
【図１２】
2015194959.tif 000019
【図１３】
2015194959.tif 000020
【図１４】
2015194959.tif 000021