(57)【特許請求の範囲】
【請求項１】
第１のベクトルおよび第２のベクトルに関数を適用した結果を求めるための方法であって、該関数は、正規化和型関数であり、前記第１のベクトルは、第１のプロセッサにおいて格納され、前記第２のベクトルは、第２のプロセッサにおいて格納され、該方法は、
セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて前記第１のベクトルおよび前記第２のベクトルの値の全ての取り得る対の経験的同時確率分布（ＪＥＰＤ）を求めるステップと、
前記関数の前記結果を、前記全ての取り得る対に関して、前記ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求めるステップと
を含み、該方法の前記２つのステップは、前記第１のプロセッサ、前記第２のプロセッサ、または第３のプロセッサのいずれかによって実行可能であり、
前記第３のプロセッサにより、前記第１のベクトルおよび前記第２のベクトルの受信に応じて難読化されたＪＥＰＤを求めるステップであって、前記第１のベクトルおよび前記第２のベクトルは、それぞれ第１の難読化規則および第２の難読化規則に基づいて可逆的に難読化される、求めるステップと、
前記第３のプロセッサにより、前記難読化されたＪＥＰＤを第１の加法シェアおよび第２の加法シェアに分割するステップと、
前記第１の加法シェアを前記第１のプロセッサに送信し、前記第２の加法シェアを前記第２のプロセッサに送信するステップであって、前記第１のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第１の加法シェアを逆にして前記関数の前記結果の第１の加法シェアを求め、前記第２のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第２の加法シェアを逆にして前記関数の前記結果の第２の加法シェアを求めるようにする、送信するステップと、
前記第３のプロセッサにより、前記第１のプロセッサから受信した前記第１の加法シェアおよび前記第２のプロセッサから受信した前記第２の加法シェアに基づいて、前記関数の前記結果を求めるステップと
をさらに含む、方法。
【請求項２】
第１のベクトルおよび第２のベクトルに関数を適用した結果を求めるための方法であって、該関数は、正規化和型関数であり、前記第１のベクトルは、第１のプロセッサにおいて格納され、前記第２のベクトルは、第２のプロセッサにおいて格納され、該方法は、
セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて前記第１のベクトルおよび前記第２のベクトルの値の全ての取り得る対の経験的同時確率分布（ＪＥＰＤ）を求めるステップと、
前記関数の前記結果を、前記全ての取り得る対に関して、前記ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求めるステップと
を含み、該方法の前記２つのステップは、前記第１のプロセッサ、前記第２のプロセッサ、または第３のプロセッサのいずれかによって実行可能であり、
前記第３のプロセッサにより、可逆的に難読化された形式で前記第１のベクトルおよび前記第２のベクトルを受信するステップと、
前記第３のプロセッサにより、前記第１のベクトルおよび前記第２のベクトルの要素の対応する対毎に、難読化されたＪＥＰＤを表す１組のインジケーター行列を求めるステップと、
前記第３のプロセッサにより、前記１組のインジケーター行列を第１の加法シェアおよび第２の加法シェアに分割するステップと、
前記第１の加法シェアを前記第１のプロセッサに送信し、前記第２の加法シェアを前記第２のプロセッサに送信するステップであって、前記第１のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第１の加法シェアを逆にして前記関数の前記結果の第１の加法シェアを求め、前記第２のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第２の加法シェアを逆にして前記関数の前記結果の第２の加法シェアを求めるようにする、送信するステップと、
前記第３のプロセッサにより、前記第１のプロセッサから受信した前記第１の加法シェアおよび前記第２のプロセッサから受信した前記第２の加法シェアに基づいて、前記関数の前記結果を求めるステップと
をさらに含む、方法。
【請求項３】
前記難読化されたＪＥＰＤに対応する１組のインジケーター行列を求めるステップであって、各該インジケーター行列が前記第１の加法シェアおよび前記第２の加法シェアに分割されるようにする、求めるステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記第１のベクトルおよび前記第２のベクトルは、要素をランダムに選択することによってサブサンプリングされる、請求項１または２に記載の方法。
【請求項５】
前記ＪＥＰＤは部分ＪＥＰＤである、請求項４に記載の方法。
【請求項６】
前記ＪＥＰＤを求めるステップにおいて、前記ＳＭＰＣは、計算機密性に基づくプロトコル、無条件機密性に基づくプロトコル、およびそれらの組み合わせからなるグループから選択されたプロトコルである、請求項１または２に記載の方法。
【請求項７】
前記ＳＭＰＣは、前記第１のベクトルおよび前記第２のベクトルのＪＥＰＤが、難読化に対して不変であることに基づいている、請求項１または２に記載の方法。
【請求項８】
前記第１のベクトルおよび前記第２のベクトルは、それぞれ第１のパッドベクトルおよび第２のパッドベクトルに基づいて、前記第１のベクトルおよび前記第２のベクトルからの要素を、それぞれ前記第１のパッドベクトルおよび前記第２のパッドベクトルの対応する要素と結合することによって可逆的に難読化され、前記第１のベクトルおよび前記第２のベクトルのそれぞれのアルファベットは、有限加法群として扱われる、請求項７に記載の方法。
【請求項９】
前記アルファベットは、バイナリである、請求項８に記載の方法。
【請求項１０】
第３のプロセッサを用いて第１のベクトルおよび第２のベクトルに関数を適用した結果をセキュアに求めるためのシステムであって、該関数は、正規化和型関数であり、前記第１のベクトルは、第１のプロセッサのみにおいて格納され、前記第２のベクトルは、第２のプロセッサのみにおいて格納され、該システムは、
前記第３のプロセッサにより、セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて前記第１のベクトルおよび前記第２のベクトルの値の全ての取り得る対の経験的同時確率分布（ＪＥＰＤ）を求める手段と、
前記第３のプロセッサにより、前記関数を、前記全ての取り得る対に関して、前記ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求める手段と
を備えるシステム。
【請求項１１】
前記第３のプロセッサにより、可逆的に難読化された形式で、前記第１のプロセッサから前記第１のベクトルを受信し、前記第２のプロセッサから前記第２のベクトルを受信する手段と、
前記第３のプロセッサにより、前記第１のベクトルおよび前記第２のベクトルの要素の対応する対毎に、難読化されたＪＥＰＤを表す１組のインジケーター行列を求める手段と、
前記第３のプロセッサにより、前記１組のインジケーター行列を第１の加法シェアおよび第２の加法シェアに分割する手段と、
前記第３のプロセッサにより、前記第１の加法シェアを前記第１のプロセッサに送信し、前記第２の加法シェアを前記第２のプロセッサに送信する手段であって、前記第１のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第１の加法シェアを逆にして前記関数の前記結果の第１の加法シェアを求め、前記第２のプロセッサが前記第１の難読化規則および前記第２の難読化規則に基づいて前記第２の加法シェアを逆にして前記関数の前記結果の第２の加法シェアを求めるようにする、送信する手段と、
前記第３のプロセッサにより、前記第１のプロセッサから受信した前記第１の加法シェアおよび前記第２のプロセッサから受信した前記第２の加法シェアに基づいて、前記関数の前記結果を求める手段と
をさらに備える、請求項１０に記載のシステム。
【請求項１２】
前記第１のベクトルおよび前記第２のベクトルの値の対応する対に関する前記関数の結果を格納するためのメモリをさらに備える、請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはセキュアなマルチパーティー計算に関し、より詳細には、正規化和型関数（normalized sum-type function）のセキュアなマルチパーティー計算に関する。
【背景技術】
【０００２】
セキュアなマルチパーティー計算
暗号法において、セキュアなマルチパーティー計算（ＳＭＰＣ）は、１９８２年にAndrew C. Yaoによって「億万長者問題（millionaire problem）」として最初に提案された問題である。アリスおよびボブは自身の富の正確な量を明らかにすることなく誰がより裕福であるかを突き止めることを望む２人の億万長者である。Yaoは、アリスおよびボブが制約条件を守りながら自身の好奇心を満たすことを可能にする解決策を提案した。
【０００３】
一般に、ＳＭＰＣは、複数のパーティーが、個々に保有する秘密情報に基づいて、その情報を他のパーティーのいずれにも明らかにすることなく共同である値を計算する計算システムを指す。
【０００４】
たとえば、第１のパーティー（アリス）および第２のパーティー（ボブ）は、秘密データを有する。たとえば、第１のパーティーは、ベクトルＸを有し、第２のパーティーは、ベクトルＹを有する。第１のパーティーおよび第２のパーティーは、多くの場合に第３のパーティー（チャールズ）からの支援を受けて、秘密データを互いに明らかにすることなく関数ｆ（Ｘ，Ｙ）を計算する必要がある。その目的のために、パーティーは、ある特定の条件を満たす関数計算プロトコルを有しなくてはならない。
【０００５】
たとえば、１つの条件は、第１のパーティーおよび第２のパーティーが関数の計算中のいかなる段階においても対応する秘密データを他のパーティーに開示しないというものである。別の条件は、プロトコルが各パーティーにおいて受ける計算オーバーヘッドが小さく、かつパーティーの任意の対間で有する送信オーバーヘッドが低いというものである。
【０００６】
不都合なことに、関数ｆを計算するための従来のＳＭＰＣ法は、一般的な形式において、各パーティーにおいて高い計算複雑度を有し、パーティーの任意の対間の送信オーバーヘッドも実現不可能なほど高くなる可能性がある。いくつかの状況では、従来の最新技術によるＳＭＰＣ法のいずれを用いても、関数ｆの計算が不可能である可能性さえある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、複雑な数学式を有する関数であっても、参加しているパーティーにおいて、低い計算および通信のオーバーヘッドで該関数を計算するＳＭＰＣ法を提供することが望ましい。
【課題を解決するための手段】
【０００８】
本発明の実施の形態は、全ての正規化和型関数が経験的同時確率分布（ＪＥＰＤ：joint empirical probability distribution）の観点から表現可能であるという認識に基づいている。したがって、セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて、たとえば、２つのベクトルに関数を適用した結果を計算するには、ＳＭＰＣを用いてその２つのベクトルのＪＥＰＤを計算すれば十分である。これによって、複数の用途において、計算複雑度および送信オーバーヘッドが大幅に減少する。ＪＥＰＤが分かると、関数の値を、ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求めることができる。
【０００９】
本発明の実施の形態の背後にある認識によって、解決されるべき問題の根源が明らかとなり、ＳＭＰＣの分野において、その問題が従来にはない方法で解決される。
【００１０】
複雑な関数の結果を求める従来の手法は、既知の暗号プリミティブを用いるか、またはＳＭＰＣプロトコルをその関数の詳細に適合させる。そのような手法の結果として生じる複雑性は、問題であるとは考えられておらず、セキュアな計算の当然な結果であると受け止められていた。
【００１１】
最新技術とは対照的に、本発明の実施の形態は、２つのベクトルの関数の結果をセキュアに求めることを、２つのベクトルのＪＥＤＰをセキュアに求めることに簡約する。
【００１２】
たとえば、１つの実施の形態では、関数は、２つのベクトルの値の全てのあり得る対および該関数の対応する結果を含む参照テーブルの形態において明示的に規定される。この実施の形態では、関数の式は、規定されない。この実施の形態は、ＳＭＰＣプロトコルを用いて値の全てのあり得る対のＪＥＰＤを求め、関数の結果を、参照テーブルからの関数の対応する結果を有するＪＥＰＤの値の積の正規化和として求める。
【００１３】
したがって、本発明の１つの実施の形態は、第１のベクトルおよび第２のベクトルに関数を適用した結果を求めるための方法であって、該関数は、正規化和型関数である、方法を開示する。前記第１のベクトルは、第１のプロセッサにおいて格納され、前記第２のベクトルは、第２のプロセッサにおいて格納される。該方法は、セキュアなマルチパーティー計算（ＭＰＣ）を用いて前記第１のベクトルおよび前記第２のベクトルの経験的同時確率分布（ＪＥＰＤ）を求め、前記関数の前記結果を、前記ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求め、該方法のステップは、少なくとも前記第１のプロセッサおよび前記第２のプロセッサによって実行される。
【００１４】
本発明の別の実施の形態は、第３のプロセッサを用いて第１のベクトルおよび第２のベクトルに関数を適用した結果を求めるためのシステムであって、該関数は、正規化和型関数であり、前記第１のベクトルは、第１のプロセッサにおいて格納され、前記第２のベクトルは、第２のプロセッサにおいて格納され、該システムは、セキュアなマルチパーティー計算（ＭＰＣ）を用いて前記第１のベクトルおよび前記第２のベクトルの経験的同時確率分布（ＪＥＰＤ）を求める手段と、前記関数の前記結果を、前記ＪＥＰＤの値と該関数の対応する値との積の正規化された総和として求める手段とを備え、前記方法の前記ステップは、少なくとも前記第１のプロセッサおよび前記第２のプロセッサによって実行される、システムを開示する。
【００１５】
さらに、別の実施の形態は、第３のプロセッサを用いて第１のベクトルおよび第２のベクトルに関数を適用した結果を求めるためのシステムであって、該関数は、正規化和型関数であり、前記第１のベクトルは、第１のプロセッサにおいて格納され、前記第２のベクトルは、第２のプロセッサにおいて格納され、該システムは、前記第１のベクトルおよび前記第２のベクトルの要素の対応する対毎に、難読化されたＪＥＰＤを表す１組のインジケーター行列を求める手段と、前記１組のインジケーター行列を第１の加法シェア（additive share）および第２の加法シェアに分割する手段と、前記第１の加法シェアを前記第１のプロセッサに送信し、前記第２の加法シェアを前記第２のプロセッサに送信する手段と、前記関数の前記結果の第１の加法シェアおよび前記関数の前記結果の第２の加法シェアに基づいて前記関数の前記結果を求める手段と、を備える、システムを開示する。
【発明の効果】
【００１６】
本発明の実施の形態は、全ての正規化和型関数が経験的同時確率分布（ＪＥＰＤ）の観点で表現可能であるという認識に基づいている。したがって、セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて２つのベクトルに適用された関数の結果を計算するには、ＳＭＰＣを用いて２つのベクトルのＪＥＰＤを計算すれば十分である。これによって、複数の用途において、計算複雑度および送信オーバーヘッドが大幅に減少する。
【００１７】
ＪＥＰＤが分かると、関数の値を、ＪＥＰＤの値と、該関数の対応する値との積の正規化された総和として求めることができる。
【００１８】
本発明によって、結果としてＳＭＰＣの分野において従来にはない解決策が生じる。複雑な関数の結果を求める従来の手法は、ＳＭＰＣプロトコルをその関数の詳細に合わせて調整するかまたは適合させる。これらの手法の結果として生じる複雑性は、問題であるとは考えられておらず、セキュアな計算の性質であると受け止められていた。
【００１９】
最新技術とは対照的に、本発明の実施の形態は、２つのベクトルに関数を適用した結果をセキュアに求めることを、２つのベクトルのＪＥＤＰをセキュアに求めることに簡約する。これによって、複数の用途において、計算複雑度および送信オーバーヘッドが大幅に減少する。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態による、関数を２つの信号に適用した結果を求めるための方法の流れ図である。
【図２】加法シェアおよび可逆的難読化を用いた関数の結果を求めるための方法の流れ図である。
【図３】本発明の実施の形態による、関数の結果を求める流れ図の例である。
【図４】本発明の実施の形態による、関数の結果を求める流れ図の例である。
【発明を実施するための形態】
【００２１】
定義
本発明の実施の形態を説明する際に、全体を通して（上記の説明も含む）以下の定義が適用可能である。
【００２２】
「コンピューター」は、入力を受け取り、該入力を所定の規則に従って処理し、処理結果を出力として生成することができる任意の装置を指す。コンピューターの例には、汎用コンピューター；スーパーコンピューター；メインフレーム；スーパーミニコンピューター；ミニコンピューター；ワークステーション；マイクロコンピューター；サーバー；双方向テレビ；コンピューターおよび双方向テレビのハイブリッド結合；ならびにコンピューターおよび／またはソフトウエアをエミュレートする特定用途向けハードウエアが含まれる。コンピューターは、単一のプロセッサまたは複数のプロセッサを有することができ、それらのプロセッサは、並列に、かつ／または非並列に動作することができる。また、コンピューターは、コンピューター間で情報を送信または受信するためのネットワークを介してともに接続される２つ以上のコンピューターも指す。そのようなコンピューターの例には、ネットワークによってリンクされるコンピューターを介して情報を処理するための分散コンピューターシステムが含まれる。
【００２３】
「メモリ」または「コンピューター可読媒体」は、コンピューターによってアクセス可能なデータを格納するための任意の記憶装置を指す。その例には、磁気ハードディスク；フロッピー（登録商標）ディスク；光ディスク；磁気テープ；メモリチップ；ならびに電子メールを送受信する際に、またはネットワークおよびコンピューターメモリ、たとえば、ランダムアクセスメモリ（ＲＡＭ）にアクセスする際に用いられるような、コンピューター可読電子データを搬送するために用いられる搬送波が含まれる。
【００２４】
「ソフトウエア」は、コンピューターを動作させるための命令を指す。ソフトウエアの例には、ソフトウエア；コードセグメント；命令；コンピュータープログラム；およびプログラムされたロジックが含まれる。
【００２５】
「モジュール」または「ユニット」は、タスクまたはタスクの一部を実行するコンピューター内の基本構成要素を指す。モジュールまたはユニットは、ソフトウエアまたはハードウエアのいずれかによって実装することができる。
【００２６】
「ネットワーク」は、通信設備によって接続された複数のコンピューターおよび関連デバイスを指す。ネットワークは、ケーブル等の永久接続、電話若しくは他の通信リンクを通じて行われる接続等の一時接続、および／または無線接続を伴う。ネットワークの例には、インターネット（Internet）等の相互接続ネットワーク（internet）；イントラネット：ローカルエリアネットワーク（ＬＡＮ）；広域ネットワーク（ＷＡＮ）；ならびに相互接続ネットワークおよびイントラネット等のネットワークの組み合わせが含まれる。
【００２７】
「ＳＭＰＣシステム」は、複数のプロセッサが、個々に保有する秘密情報、すなわち、データに基づいて、該情報を計算中に互いに明らかにすることなく、関数の結果を共同で求める計算システムの任意のプロセッサを指す。
【００２８】
「ＳＭＰＣ法」は、１つのプロセッサにおいて格納されたデータをいかなる他のプロセッサにも開示することなく、いくつかのプロセッサまたは全てのプロセッサが複数のプロセッサに格納されたデータに関数を適用した結果を求めるように、該複数のプロセッサがインタラクトすることを可能にする任意のプロトコルを指す。
【００２９】
「ＳＭＰＣ」は、ＳＭＰＣシステム、またはＳＭＰＣ法、またはその両方を指す。
【００３０】
図１は、関数ｆ１１０を第１の信号ｘおよび第２の信号ｙに適用した結果１９０を求めるための方法１００を示している。関数ｆは、正規化和型関数である。本発明の実施の形態は、関数を３つ以上の信号に適用した結果も求める。信号は、任意のデータ表現、たとえば、ベクトル、行列、テーブルを有することができる。たとえば、いくつかの実施の形態では、信号ｘおよびｙは、ベクトル、すなわち、第１のベクトル１１５および第２のベクトル１１６である。本方法は、複数のプロセッサを用いて実行され、各プロセッサは、当該技術分野において既知のメモリおよび入力／出力インターフェースを備えることができる。詳細には、第１のベクトルは、第１のプロセッサ１１７に格納され、第２のベクトルは、第２のプロセッサ１１８に格納され、関数の計算は、第１のプロセッサおよび第２のプロセッサによって実行され、オプションで第３のプロセッサ１１９の助けにより実行される。
【００３１】
正規化和型関数
様々な実施の形態において、第１のベクトルＸ１１５および第２のベクトルＹ１１６は、それぞれｎ個の要素を有する。第１のベクトルＸの個々の要素は、Ｘｉによって表され、指数ｉは、１からｎまで変化する。同様に、第２のベクトルＹの個々の要素は、Ｙｉによって表され、指数ｉは、１からｎまで変化する。関数ｆ（Ｘ，Ｙ）１１０は、以下の形式の「正規化和型関数」である。
【００３２】
【数１】
0005677252.tif 000002
【００３３】
本発明の実施の形態は、全ての正規化和型関数が経験的同時確率分布（ＪＥＰＤ）の観点から表現可能であるという認識に基づいている。さらに、関数のＪＥＰＤは、該関数の複雑度と無関係である。したがって、従来のシステムにおけるように、セキュアなマルチパーティー計算（ＳＭＰＣ）を用いて関数の結果を求める代わりに、本実施の形態は、セキュアなＭＰＣ１３０を用いて第１のベクトルおよび第２のベクトルのＪＥＰＤ１２５を求め（１２０）、次に、関数１１０の結果１９０を、ＪＥＰＤの値と、該関数の対応する値１５５との積の正規化された総和として求める（１４０）。
【００３４】
いくつかの実施の形態では、関数は、参照テーブル１５０の形態でメモリ内に明示的に格納される。テーブルは、第１のベクトルおよび第２のベクトルの値のあり得る対（ｘ，ｙ）、および関数ｆ（ｘ，ｙ）の対応する結果を格納する。
【００３５】
１つの実施の形態では、プロセッサ１７０によって参照テーブルがあらかじめ求められる（１６０）。代替的にまたは付加的に、参照テーブルは、第１のプロセッサ、第２のプロセッサ、および第３のプロセッサのうちのいずれかによって求め、格納することができる。
【００３６】
経験的同時確率分布（ＪＥＤＰ）
長さｎのベクトルＸおよびＹを所与とすると、２つのベクトルＸおよびＹの要素のＪＥＤＰ  Ｈ（ｘ，ｙ）は、下式（１）となる。
【００３７】
【数２】
0005677252.tif 000003
【００３８】
ここで、Ｎ（ｘ，ｙ）は、ベクトルＸおよびＹ内におけるシングルトン要素の対（ｘ，ｙ）の発生数である。Ｎ（ｘ，ｙ）は、２つのベクトルＸおよびＹの同時ヒストグラム（joint histogram）とも呼ばれる。
【００３９】
本発明のいくつかの実施の形態は、２つのベクトルＸおよびＹの部分ＪＥＰＤを用いる。これらの実施の形態は、各ベクトルからｍ＜ｎ個の要素をランダムに選択することによって、第１のベクトルおよび第２のベクトルをサブサンプリングし（１８０）、サブサンプリングされた第１のベクトルＸ’１８１およびサブサンプリングされた第２のベクトルＹ’１８２を生成する。第１のベクトルおよび第２のベクトルにおける同じ位置から要素ｍが選択される。
【００４０】
部分ＪＥＤＰ  Ｈ’（ｘ，ｙ）が、以下に従って求められる。
【００４１】
【数３】
0005677252.tif 000004
【００４２】
ここで、Ｌ（ｘ，ｙ）は、ランダムにサブサンプリングされたベクトルＸ’およびＹ’におけるシングルトン要素の対（ｘ，ｙ）の発生数である。Ｌ（ｘ，ｙ）は、ベクトルＸおよびＹの部分同時ヒストグラムとも呼ばれる。
【００４３】
正規化和型関数は、ＪＥＰＤの観点から、以下のように表すことができる。
【００４４】
【数４】
0005677252.tif 000005
【００４５】
右辺の項は、関数ｆ（Ｘ，Ｙ）を求めるには、全ての対（ｘ，ｙ）においてｆ（ｘ，ｙ）を評価し、次に、ＪＥＰＤに基づいて関数の値をスケーリングすれば十分であることを示している。したがって、関数ｆ（Ｘ，Ｙ）をセキュアに計算するには、第１のプロセッサ、第２のプロセッサ、および第３のプロセッサが、第１のプロセッサが第２のベクトルＹを発見せず、第２のプロセッサが第１のベクトルＸを発見せず、第３のプロセッサが双方のベクトルＸおよびＹを発見しないようなＪＥＰＤ  Ｈ（ｘ，ｙ）を求めれば十分である。
【００４６】
本発明の実施の形態の背後にある認識によって、解決されるべき問題の根源が明らかとなり、ＳＭＰＣの分野において、その問題が、従来にはない方法で解決される。
【００４７】
複雑な関数の結果を求める従来の手法は、ＳＭＰＣプロトコルをその関数の詳細に合わせて設計することである。従来、関数は、代数式として表され、そして、その代数式を評価するのに暗号プリミティブが用いられる。しかしながら、多くの用途において、関数を代数的に表現することが困難であるか、またはさらには不可能であり、それに応じて従来のＳＭＰＣが適用困難となるかまたは適用不可能となっている。
【００４８】
さらに、いくつかの用途では、関数は、値のテーブルとしてのみ規定され、それによって、関数の式は提供されない。これらの用途の場合、ラグランジュ補間等の方法を用いて関数の多項式を導出する。多項式が非常に高次である場合、関数を表すのに用いられる代数式は、通例、非常に複雑であり、このため、その式を評価するＳＭＰＣプロトコルは、さらに複雑となる。後述するように、本発明の原理を用いる実施の形態は、関数の式を求める必要性を回避する。
【００４９】
したがって、本発明の実施の形態は、従来のＳＭＰＣ法よりも優れた結果を達成する。特に、本発明の実施の形態は、関数を求めることを、２つのベクトルのＪＥＤＰを求めることから切り離し、これによって、複数の用途において、計算複雑度および送信オーバーヘッドが大幅に減少する。
【００５０】
たとえば、１つの実施の形態は、閉形式の式を有しない関数の結果を求める。この関数は、全てのあり得る対（ｘ，ｙ）および対応する値ｆ（ｘ，ｙ）を含む参照テーブルの形式で明示的に規定される。実施の形態は、プライバシーを保護する形でＪＥＰＤ  Ｈ（ｘ，ｙ）を求めるＳＭＰＣプロトコルを実行し、ＪＥＰＤを用いて関数ｆ（ｘ，ｙ）の結果を得る。
【００５１】
同様に、別の実施の形態では、関数ｆ（・，・）は、複雑な式、たとえば、下式を有する。
【００５２】
【数５】
0005677252.tif 000006
【００５３】
この場合、関数ｆの従来のプライバシーを保護するプロトコルは、各プロセッサにおいて、非常に高い計算複雑度を有し、プロセッサのいずれの対間でも送信オーバーヘッドは、実現不可能なほど高い。いくつかの実施の形態では、最新技術のプライバシーを保護するプロトコルを用いて、ｆを評価することが不可能である場合さえある。
【００５４】
実施の形態は、式（２）を用い、関数ｆのためのそのようなプロトコルを構築しない。その代わり、ＳＭＰＣを用いて、大幅に低い計算複雑度および低い送信オーバーヘッドでＪＥＰＤを求める。
【００５５】
ＪＥＰＤを求めるためのＳＭＰＣ
概して、本発明の実施の形態は、ＪＥＰＤを求めるように構成された任意のＳＭＰＣプロトコルを用いることができる。そのようなＳＭＰＣプロトコルには、限定ではないが、計算機密性または無条件機密性に基づくプロトコルが含まれる。
【００５６】
１つの実施の形態は、公開鍵暗号化、紛失通信、および準同型関数等の暗号プリミティブを用いてＪＥＰＤを求める。暗号プリミティブにより達成されるこの形態の機密性は、計算機密性であり、すなわち、機密性は、大きな数の因数分解等のある数学問題は解くのが困難であるという仮定に依拠する。
【００５７】
この実施の形態の１つの変形形態は、多項式秘密共有を用いてヒストグラムの加法シェア、すなわち、換言すればＪＥＰＤを求める。任意の一般関数の加法シェアを直接評価するために適用される多項式秘密共有は、送信オーバーヘッドおよび計算複雑度の観点から複雑である。しかしながら、本発明者らの認識によれば、ＪＥＰＤの加法シェアは、常に低い送信オーバーヘッドおよび低い計算複雑度で計算可能である。
【００５８】
別の実施の形態は、無条件機密性を用いてＪＥＰＤを求める。この実施の形態は、以下でより詳細に説明するように、２つのベクトルのＪＥＰＤは、難読化に対し不変であるという別の認識に基づく。
【００５９】
本明細書において定義されるとき、平易な意味を用いれば、難読化とは、通信において意図される意味を秘匿することであり、通信を混乱させ、意図的にあいまいにし、解釈をより困難にする。特に、暗号法の分野において既知のように、難読化は、機密性を保持するためにある暗号化方式でデータを符号化することを指す。
【００６０】
いくつかの実施の形態は、多項式秘密共有に基づく手法が、計算機密性と対照的に、無条件機密性を提供するということを検討する。無条件機密性は、証明されていない数学的仮定に基づかないので、計算機密性よりも強い機密性の概念であると考えられる。
【００６１】
ＪＥＰＤが難読化に対し不変であることに基づくＳＭＰＣ
図２は、加法シェアおよび２つのベクトルの可逆的難読化を用いた、ベクトル１１５および１１６への関数１１０の適用の結果１９０を求めるための方法を示している。この実施の形態は、半正直（semi-honest）設定を考察する。この設定において、各プロセッサは、規則、すなわち、本方法のステップに正確に従い、各プロセッサは、詮索的（curious）であり、すなわち、プロトコルのステップ中に取得した情報を用いて、他のプロセッサが利用可能なデータに関して、可能な限りの情報を推測する。半正直設定は「正直であるが詮索的」設定とも呼ばれる。
【００６２】
第１のプロセッサ１１７は、難読化の第１の規則２１１に基づいて、第１のベクトルを可逆的に難読化する（２２０）。たとえば、第１のプロセッサは、第１のベクトルＸを難読化して、第１の難読化されたベクトルＸ＊２２５を生成する。第１のプロセッサは、第１の難読化されたベクトルＸ＊を第３のプロセッサ１１９に送信する。
【００６３】
この実施の形態の１つの変形形態では、第１のプロセッサは、第１のベクトルＸの要素と同じシンボルアルファベットＡからｎ個のシンボルの第１のパッドベクトル（pad vector）Ｗを、ランダムに選択する。いくつかの実施の形態では、アルファベットＡは、バイナリである。他の実施の形態では、アルファベットは、｜Ａ｜で表される値の有限正数である。次に、シンボルアルファベットを下式に従って有限加法群として扱いながら、加法演算によりベクトルＸおよびＷから対応する要素を組み合わせることによって、第１の難読化されたベクトルＸ＊の各要素が生成される。
【００６４】
【数６】
0005677252.tif 000007
【００６５】
同様に、第２のプロセッサ１１８は、難読化の第２の規則２１２に基づいて第２のベクトルを可逆的に難読化し（２３０）、第２の難読化されたベクトルＹ＊を生成し、該第２の難読化されたベクトルＹ＊を第３のプロセッサに送信する。たとえば、第２のプロセッサは、ｎ個のシンボルの第２のパッドベクトルＺをランダムに選択する。通例、ベクトルＹおよびＺの要素は、｜Ｂ｜個の要素を有する同じアルファベット集合Ｂに属する。上述したように、いくつかの実施の形態では、｜Ｂ｜＝２である。第２のベクトルは、以下に従って難読化される。
【００６６】
【数７】
0005677252.tif 000008
【００６７】
第３のプロセッサは、第１のベクトルおよび第２のベクトルの受信に基づいて、かつ、該受信に応じて、難読化されたＪＥＰＤ２４５を求める（２４０）。ここで、第１のベクトルおよび第２のベクトルは、それぞれ第１の難読化規則および第２の難読化規則に基づいて、可逆的に難読化される。たとえば、１つの実施の形態では、第３のプロセッサは、２つの受信したベクトルＸ＊およびＹ＊からの（Ｘ＊ｉ，Ｙ＊ｉ）によって表される全ての対応する要素対について、｜Ａ｜個の行および｜Ｂ｜個の列を有するインジケーター行列Ｍｉを求める。１からｎまでの範囲をとる各指数ｉについて、インジケーター行列Ｍｉは、対（Ｘ＊ｉ，Ｙ＊ｉ）のためのインジケーター関数を表す。このため、行列内の（Ｘ＊ｉ，Ｙ＊ｉ）位置における要素は、１に設定される一方、全ての他の要素は、０に設定される。したがって、１組のインジケーター行列は、難読化されたＪＥＰＤを表す。
【００６８】
次に、第３のプロセッサは、難読化されたＪＥＰＤを第１の加法シェア２５１および第２の加法シェア２５２に分割し（２５０）、該第１の加法シェアおよび該第２の加法シェアをそれぞれ第１のプロセッサおよび第２のプロセッサに送信する。
【００６９】
たとえば、上述した実施の形態では、第３のプロセッサは、要素毎の有限体加算がＭｉとなるように十分大きな有限体にわたって値をとる２つの行列をランダムに選択することによって、各インジケーター行列Ｍｉを、加法シェアＭ｛Ａ，ｉ｝およびＭ｛Ｂ，ｉ｝に分割する。このため、Ｍｉ＝Ｍ｛Ａ，ｉ｝＋Ｍ｛Ｂ，ｉ｝ｍｏｄＦであり、ここで、Ｆは、アルファベット｜Ａ｜および｜Ｂ｜のサイズよりもサイズが大きい有限体である。したがって、第３のプロセッサは、１組のインジケーター行列Ｍ｛Ａ，１｝，Ｍ｛Ａ，２｝，．．．，Ｍ｛Ａ，ｎ｝を第１のプロセッサに送信し、１組のインジケーター行列Ｍ｛Ｂ，１｝，Ｍ｛Ｂ，２｝，．．．，Ｍ｛ｂ，ｎ｝を第２のプロセッサに送信する。
【００７０】
第１のプロセッサおよび第２のプロセッサは、第１の難読化規則および第２の難読化規則を用いて加法シェアの逆難読化２６０を適用する。その目的のために、１つの実施の形態では、第１のプロセッサおよび第２のプロセッサは、難読化の規則を交換する。たとえば、第１のプロセッサは、第１のパッドベクトルＷを第２のプロセッサに送信し、第２のプロセッサは、第２のパッドベクトルＺを第１のプロセッサに送信する。
【００７１】
この実施の形態の１つの変形形態では、第１のパッドベクトルおよび第２のパッドベクトルは、同一であり、すなわち、Ｗ＝Ｚである。しかしながら、パッドベクトルＷおよびＺが異なる場合、第１のプロセッサは、各インジケーター行列がベクトルＸおよびＹの要素の各対に対応するインジケーター関数行列の加法シェアとなるように、パッドベクトルＷおよびＺを用いてインジケーター行列Ｍ｛Ａ，１｝，Ｍ｛Ａ，２｝，．．．，Ｍ｛Ａ，ｎ｝の行および列を再配置する。
【００７２】
同様に、第２のプロセッサは、パッドベクトルＷおよびＺを用いてインジケーター行列Ｍ｛Ｂ，１｝，Ｍ｛Ｂ，２｝，．．．，Ｍ｛Ｂ，ｎ｝の行および列を再配置する。
【００７３】
次に、第１のプロセッサは、再配置された行列を加算して、ＪＥＰＤを表す行列の加法シェア２６１である行列ＮＡを生成する。第２のプロセッサは、再配置された行列を加算して、行列ＮＢ、すなわち、ＪＥＰＤの対応する加法シェア２６２を生成する。
【００７４】
第１のプロセッサおよび第２のプロセッサは、ＪＥＰＤの加法シェアを用いて、関数１１０の結果１９０の第１の加法シェアＦＡ２７０および第２の加法シェアＦＢ２７１を求める。１つの実施の形態では、関数の結果の加法シェアは、参照テーブル１５０を用いて、式（１）に従って求められる。たとえば、第１のプロセッサは、下式に従って、ｆ（Ｘ，Ｙ）の第１の加法シェアを求める。
【００７５】
【数８】
0005677252.tif 000009
【００７６】
また、第２のプロセッサは、下式に従って、ｆ（Ｘ，Ｙ）の第２の加法シェアを求める。
【００７７】
【数９】
0005677252.tif 000010
【００７８】
次に、それぞれ第１のプロセッサおよび第２のプロセッサから受信した関数の結果の第１の加法シェアおよび第２の加法シェアに基づいて、第３のプロセッサによって関数の結果が求められる。付加的にまたは代替的に、第１のプロセッサおよび第２のプロセッサは、加法シェアの総和が変化しないように、関数の結果の第１の加法シェアおよび第２の加法シェアに共通変更子を減算および加算することによって、関数の結果のそれぞれの加法シェアを変更することができる。
【００７９】
たとえば、第１のプロセッサおよび第２のプロセッサは、共通変更子Ｓ、たとえば、第１のプロセッサによってランダムに選択され、第２のプロセッサに送信された数を求める。第１のプロセッサは、第３のプロセッサにＦＡ＋Ｓを送信する。第２のプロセッサは、第３のプロセッサにＦＢ−Ｓを送信する。第３のプロセッサは、受信した加法シェアを加算し、ＦＡ＋Ｓ＋ＦＢ−Ｓ＝ＦＡ＋ＦＢ＝ｆ（Ｘ，Ｙ）を求める。
【００８０】
実施例
図３は、第１のベクトルおよび第２のベクトルの要素の１つの対３０５のＪＥＰＤを求める例を示している。例は、限定ではなく、明確化の目的でのみ提供される。たとえば、第１のベクトルの要素ｘｉは、１であり、第２のベクトルの対応する要素ｙｉは、２である。第１のベクトルのアルファベットのサイズは、２であり、すなわち、｜Ａ｜＝２、Ａ＝｛０，１｝である。第２のベクトルのアルファベットのサイズは、３であり、すなわち、｜Ｂ｜＝３、Ｂ＝｛０，１，２｝である。第１のベクトルは、第１のパッドベクトルＷおよびたとえば対応するｗｉ＝５を用いて難読化される。第２のベクトルは、第２のパッドベクトルＺおよびたとえば対応するｚｉ＝２を用いて難読化される。
【００８１】
このため、第１のベクトルの難読化された要素ｘｉ＊は、ｘｉ＊＝１＋５ｍｏｄ２＝０である。
【００８２】
同様に、第２のベクトルの難読化された要素ｙｉ＊は、ｙｉ＊＝２＋２ｍｏｄ３＝１である。
【００８３】
したがって、第３のベクトルは、可逆的に難読化された要素の対（０，１）３１０を受信し（３２０）、インジケーター行列３３５を求める（３３０）。図３に示すように、行列の（ｘｉ＊，ｙｉ＊）位置にある要素は、１に設定される一方、全ての他の要素は、０に設定される。インジケーター行列は、インジケーター行列の第１の加法シェアおよび第２の加法シェア、たとえば、加法的行列３４１および３４２に分割される（３４０）。分割は、任意に、たとえば、ランダムに実行される。唯一の要件は、２つ加法的行列の対応する要素の和によって、インジケーター行列が生成されることである。次に、２つの加法シェアが、それぞれ第１のプロセッサおよび第２のプロセッサに送信される（３５０および３５５）。
【００８４】
後述するように、第１のプロセッサおよび第２のプロセッサは、関数の結果の第１の加法シェアおよび第２の加法シェアを求める。第３のプロセッサは、それぞれ第１のプロセッサおよび第２のプロセッサから受信した（３６０）関数の結果の第１の加法シェアおよび第２の加法シェアに基づいて、関数の結果１９０を求める（３７０）。
【００８５】
図４は、第１のプロセッサおよび第２のプロセッサによって関数の結果の加法シェアを求める例を示している。第１のパッドベクトルおよび第２のパッドベクトルを交換した（４０５）後、第１のプロセッサおよび第２のプロセッサは、難読化の効果を逆にする（４１０および４５０）。たとえば、ｗｉｍｏｄ２＝５ｍｏｄ２＝１であるので、第１のパッドベクトルを用いた難読化の効果は、加法シェア行列の行を入れ替えることによって逆にされる。入れ替えの結果、行列４１５および４５５となる。
【００８６】
同様に、ｚｉｍｏｄ３＝２ｍｏｄ３＝２であるので、第２のパッドベクトルを用いた難読化の効果は、加法シェア行列の列を、難読化の方向と反対の方向に動かす、すなわち、左に２列、すなわち、−２列動かすことによって逆にされる。逆にした結果、逆にされた行列４２５および４６５となる。特に、行列４２５および４６５の和は、要素（１，２）以外全てゼロの要素を有する行列となる。この行列は、難読化前の第１のベクトルおよび第２のベクトルの要素３０５の元の値を反映している。
【００８７】
第１のベクトルおよび第２のベクトルの全ての対応する要素が処理されると、第１のプロセッサおよび第２のプロセッサの全ての逆にされた行列を結合したもの４３０および４７０が、ＪＥＰＤ加法シェア、すなわち、第１のＪＥＰＤ加法シェア２６１および第２のＪＥＰＤ加法シェア２６２となる。次に、関数の結果の第１の加法シェアおよび第２の加法シェアが、第１のプロセッサおよび第２のプロセッサによって、ＪＥＰＤの値と参照テーブル１５０から選択された関数の対応する値と積の正規化された総和４４０および４８０として求められる。
【００８８】
ランダムサブサンプリング
上述したように、本発明のいくつかの実施の形態は、２つのベクトルＸおよびＹの部分ＪＥＰＤを用いる。これらの実施の形態は、各ベクトルからｍ＜ｎ個の要素をランダムに選択することによって、第１のベクトルおよび第２のベクトルをサブサンプリングし（１８０）、サブサンプリングされた第１のベクトルＸ’１８１、およびサブサンプリングされた第２のベクトルＹ’１８２を生成する。要素ｍは、第１のベクトルおよび第２のベクトルの同じ位置から選択されるべきである。次に、部分ＪＥＰＤの観点から関数ｆ（Ｘ’，Ｙ’）が表現され、解かれる。
【００８９】
ＸおよびＹのランダムに選択されたサブサンプルから構築された部分ＪＥＰＤは、ＸおよびＹの全ての要素から構築されたＪＥＰＤに収束する。特に、サブサンプリングされたベクトルＸ’およびＹ’に基づく部分ＪＥＰＤと、全ての要素に基づくＪＥＰＤとの間の最大期待絶対誤差は、ｍ、すなわち、サブサンプル数の平方根に反比例する。したがって、関数ｆ（Ｘ’，Ｙ’）の結果は、関数ｆ（Ｘ，Ｙ）の結果の近似である。この近似は、ｍが十分に大きいがｎよりはるかに小さいときに、ｆ（Ｘ，Ｙ）に収束する。
【００９０】
ベクトルＸおよびＹをランダムにサンプリングすることによって関数の近似を評価する利点は、各プロセッサにおける計算複雑度の低減、および任意のセキュアなＭＰＣプロトコルによって要求される送信オーバーヘッドの低減である。計算複雑度および送信オーバーヘッドの双方が関数の引数の長さに直接比例する。このため、関数評価のためにランダムに選択されたサンプルのより小さな集合を用いることは、ベクトルＸおよびＹの全ての要素を用いるよりも効率的である。この実施の形態は、特に、データのサイズが大きく、非常に精度が高いが正確ではない計算しか必要でない用途に関する。
【００９１】
いくつかの実施の形態では、経験的同時確率分布のランダムサンプリングおよび評価を、第１の２つのプロセッサのみを用いて計算することもできる。
【図１】
0005677252.tif 000011
【図２】
0005677252.tif 000012
【図３】
0005677252.tif 000013
【図４】
0005677252.tif 000014