(57)【特許請求の範囲】
【請求項１】
第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択する方法であって、前記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密解読鍵および公開暗号鍵を含み、また、前記暗号化されたベクトルは、前記公開鍵で暗号化されて、前記第１プロセッサに格納され、また、前記第１プロセッサは、暗号化された領域においてのみ動作するものであり、
前記方法は、
前記暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするステップと、
スケーリングされ順列化されたベクトルを生成するために、前記暗号化されたベクトルの前記要素の順序を順列化するステップと、
前記暗号化された領域の情報を前記第２プロセッサへ提供するステップであって、基礎となる、暗号化されていない領域の情報は、前記スケーリングされ順列化されたベクトルの中の要素の順序を示すものである、ステップと、
前記スケーリングされ順列化されたベクトルの中の前記暗号化された要素の暗号化されたインデックスを得るステップと、
前記暗号化されたインデックスに基づいて、前記暗号化された要素を選択するステップと、を含み、
本方法の前記各ステップは前記第１プロセッサによって行われる、方法。
【請求項２】
前記暗号化されたベクトル内の前記暗号化された要素の順序は、前記秘密鍵で前記第２プロセッサにより解読された、前記暗号化されたベクトルの複数の要素の値の順序で決定される、請求項１の方法。
【請求項３】
前記暗号化されたインデックスは、前記暗号化されていない領域において、前記スケーリングされ順列化されたベクトルの中の要素の順序により前記第２プロセッサによって決定され、前記公開鍵で暗号化される、請求項１の方法。
【請求項４】
前記提供するステップは、
前記スケーリングされ順列化されたベクトルを第１加算的ベクトルと第２加算的ベクトルとに分割するステップと、
前記第１加算的ベクトルの要素対の差のベクトルを決定するステップと、
前記暗号化されたインデックスを決定するために、前記要素対の差のベクトルおよび前記第２加算的ベクトルを前記第２プロセッサへ与えるステップと、
をさらに含む、請求項１の方法。
【請求項５】
前記提供するステップは、
前記暗号化されたインデックスを決定するために、前記スケーリングされ順列化されたベクトルを前記第２プロセッサへ与えるステップ、
をさらに含む、請求項１の方法。
【請求項６】
前記選択するステップは、
前記インデックスの第１摂動項および第２摂動関数によって修正変更された、前記暗号化されたベクトルを前記第２プロセッサに提供するステップであって、前記暗号化されたインデックスでの前記第２摂動関数の値が零に等しいものである、ステップと、
前記暗号化されたインデックスに対応する、前記暗号化されたベクトルの要素を前記第２プロセッサから得るステップと、
前記暗号化されたベクトルの前記暗号化された要素を得るために、前記暗号化された領域において前記第１摂動項を減算するステップと、
をさらに含む、請求項１の方法。
【請求項７】
前記暗号化されたインデックスは、順序規則に基づいて決定される、請求項１の方法。
【請求項８】
前記順序規則は、前記暗号化された要素が、前記暗号化されたベクトル内の最小要素であるように最小の要素を選択するもの、あるいは前記暗号化されたベクトル内の最大要素であるように、最大の要素を選択するものである、請求項７の方法。
【請求項９】
前記スケーリングするステップは、
順序を維持する行列を構成するステップと、
前記暗号化されたベクトルに前記順序を維持する行列を乗算するステップと、
をさらに含む、請求項１の方法。
【請求項１０】
整数ｇ＞０を選択するステップと、
次式により順序を維持する行列Ｇ∈ＺＮｘＮを決定するステップであって、
【数１】
0005762232.tif 000011
ここで、Ｚは整数のセット（組）であり、Ｎは前記暗号化されたベクトル内の要素の数であり、また、要素ｇｉは整数である、ステップと、
をさらに含む、請求項９の方法。
【請求項１１】
システムの第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択するためのシステムであって、前記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密解読鍵および公開暗号鍵を含み、また、前記暗号化されたベクトルは、前記公開鍵で暗号化されて、前記第１プロセッサに格納され、また、前記第１プロセッサは暗号化された領域においてのみ動作するものであり、
前記システムは、
前記暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするための手段と、
スケーリングされ順列化されたベクトルを生成するために、前記暗号化されたベクトルの前記要素の順序を順列化する手段と、
前記暗号化された領域の情報を前記第２プロセッサへ提供するための手段であって、暗号化されていない領域の情報は、前記スケーリングされ順列化されたベクトルの中の要素の順序を示すものである、手段と、
前記スケーリングされ順列化されたベクトルの中の前記暗号化された要素の暗号化されたインデックスを得る手段と、
前記暗号化されたインデックスに基づいて、前記暗号化された要素を選択する手段と、を含み、
本システムの前記各手段は前記第１プロセッサによって行われる、システム。
【請求項１２】
前記スケーリングされ順列化されたベクトルを第１加算的ベクトルと第２加算的ベクトルとに分割する手段と、
前記第１加算的ベクトルの要素対の差のベクトルを決定する手段と、
前記暗号化されたインデックスを決定するために、前記要素対の差のベクトルおよび前記第２加算的ベクトルを前記第２プロセッサへ与える手段と、
をさらに含む、請求項１１のシステム。
【請求項１３】
前記暗号化されたインデックスを決定するために、前記スケーリングされ順列化されたベクトルを前記第２プロセッサへ与える手段、
をさらに含む、請求項１１のシステム。
【請求項１４】
前記インデックスの第１摂動項および第２摂動関数によって修正変更された、前記暗号化されたベクトルを前記第２プロセッサに提供する手段であって、前記暗号化されたインデックスでの前記第２摂動関数の値が零に等しいものである、手段と、
前記暗号化されたインデックスに対応する、前記暗号化されたベクトルの要素を前記第２プロセッサから得る手段と、
前記暗号化されたベクトルの前記暗号化された要素を得るために、前記暗号化された領域において前記第１摂動項を減算する手段と、
をさらに含む、請求項１１のシステム。
【請求項１５】
第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択するための方法であって、前記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密暗号鍵および公開解読鍵を含み、また、前記暗号化されたベクトルは、前記公開鍵で暗号化されて、第１プロセッサに格納され、また、前記第１プロセッサは暗号化された領域においてのみ動作するものであり、
前記方法は、
前記暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするステップと、
スケーリングされ順列化されたベクトルを生成するために、前記暗号化されたベクトルの前記要素の順序を順列化するステップと、
前記スケーリングされ順列化されたベクトルを第１加算的ベクトルと第２加算的ベクトルとに分割するステップと、
前記第１加算的ベクトルの要素対の差のベクトルを決定するステップと、
暗号化されたインデックスを決定するために、前記要素対の差のベクトルおよび前記第２加算的ベクトルを前記第２プロセッサへ与えるステップと、
前記スケーリングされ順列化されたベクトルの中の暗号化された要素の暗号化されたインデックスを得るステップと、
前記インデックスの第１摂動項および第２摂動関数によって修正変更された、前記暗号化されたベクトルを前記第２プロセッサに提供するステップであって、前記暗号化されたインデックスでの前記第２摂動関数の値が零に等しいものである、ステップと、
前記暗号化されたインデックスに対応する、前記暗号化されたベクトルの要素を前記第２プロセッサから得るステップと、
前記暗号化されたベクトルの前記暗号化された要素を得るために、前記暗号化された領域において前記第１摂動項を減算するステップと、を含み、
本方法の前記各ステップは前記第１プロセッサによって行われる、方法。
【請求項１６】
前記暗号化された要素は前記暗号化されたベクトル内の最小要素である、請求項１５の方法。
【請求項１７】
順序を維持する行列を構成するステップと、
前記暗号化されたベクトルに前記順序を維持する行列を乗算するステップと、
をさらに含む、請求項１５の方法。
【請求項１８】
次式により前記順序を維持する行列Ｇ∈ＺＮｘＮを決定するステップであって、
【数２】
0005762232.tif 000012
ここで、ｇは正の整数であり、Ｚは整数のセット（組）であり、Ｎは前記暗号化されたベクトル内の要素の数であり、また、要素ｇｉは整数である、ステップ、
をさらに含む、請求項１７の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、概して、安全なマルチパーティ（多数協同）計算方法およびシステムに関し、特に、暗号化されたベクトルにおける暗号化された要素を、該暗号化されたベクトルにおける該暗号化された要素の順序により、決定するための方法に関するものである。
【背景技術】
【０００２】
多数アプリケーションに対して、エレメント（要素）の有限長のシーケンス（配列）の最小または最大を、プライバシを保護するように、決定する問題は重要である。たとえば、要素は、機密（ｓｅｎｓｉｔｉｖｅ）のバイオメトリック（生物測定的）、医療的、科学的、技術的、金融的、或いは商業的なデータである。
【０００３】
その問題は以下のように定義される。第１プロセッサは暗号化された要素のシーケンスを格納する。その第１プロセッサは、たとえばそのシーケンスの最小要素の暗号化を決定する第２プロセッサと相互に作用する。その問題の要件は、最小要素の値およびインデックスがいかなるプロセッサによっても発見されないということである。
【０００４】
特にこの問題は多くの安全なマルチパーティ計算方法において生じる。たとえば、第１プロセッサは、２進法の指紋特徴ベクトルのデータベースを有し、また、第２プロセッサは単一の暗号化された指紋特徴ベクトルを有する。そして、安全なマルチパーティ計算方法を使用して、第１プロセッサは、第２プロセッサの単一の特徴ベクトルとデータベースにおける各特徴ベクトルとの間の暗号化されたハミング距離を決定する。このようにして、第１プロセッサは、暗号化されたハミング距離のベクトルを得る。次に、最初の特徴ベクトルに最も類似するデータベース内の指紋特徴ベクトルを見つけるように、最小のハミング距離の暗号化が決定される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、暗号化されたベクトル内の暗号化された或る（１つの）要素を、該暗号化されたベクトル内の該暗号化された複数の要素の順序により、選択する必要がある。
【０００６】
この発明は、暗号化されたベクトル内の暗号化された或る（１つの）要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択するためのシステムおよび方法を提供することを目的とする。暗号化されたベクトル内の暗号化された要素の順序は、秘密鍵で解読された、暗号化されたベクトルの複数の要素の値の順序で決定される。たとえば、いくつかのこの発明の実施の形態では、プライバシを保護するように、暗号化されたベクトルから最小要素を選択する。同様に、いくつかの実施の形態では、暗号化されたベクトル内で、最大の要素あるいは所定の順序を有する要素を選択した。
【０００７】
この発明の実施の形態では、第１プロセッサと第２プロセッサとの間の安全なマルチパーティ（多数共同）通信を使用して、暗号化された要素を選択する。第２プロセッサは強秘匿な（ｓｅｍａｎｔｉｃａｌｌｙ  ｓｅｃｕｒｅ）加法的準同形写像暗号システム（ａｄｄｉｔｉｖｅｌｙ  ｈｏｍｏｍｏｒｐｈｉｃ  ｃｒｙｐｔｏｓｙｓｔｅｍ）用の１対の鍵を有し、該１対の鍵は秘密鍵と公開鍵とを含む。第２プロセッサは主に、暗号化されていない領域において動作する。反対に、第１プロセッサは公開鍵だけを格納し、暗号化された領域においてのみ動作する。暗号化されたベクトルは、公開鍵で暗号化され、第１プロセッサに格納される。
【０００８】
この発明の実施の形態は２つの認識に基づく。第一に、第１プロセッサは順序を維持するマッピングを要素のシーケンスに適用して、その結果を第２プロセッサへ送信することができ、該第２プロセッサは、要素を知らずに、要素の順序に基づいて要素のインデックスを決定することができる。第二に、順序を維持するマッピングは、暗号化されたドメイン（領域）において適用することができ、それによって、要素のシーケンス全体を第１プロセッサおよび第２プロセッサの両方から秘密にしておく。
【０００９】
したがって、この発明の実施の形態では、暗号化されたベクトル内の要素の順序が維持されるように、暗号化されたドメイン（領域）における暗号化されたベクトルの値をスケーリング（拡大、縮小）する。順序の順列（ｐｅｒｍｕｔａｔｉｏｎ）と組み合わせて、順序を維持しながらスケーリングすることにより、スケーリングされ順列化されたベクトル（ｓｃａｌｅｄ  ｐｅｒｍｕｔｅｄ  ｖｅｃｔｏｒ）を生成する。而して、スケーリングされ順列化されたベクトルに関する情報を、秘密鍵を格納する２番目のプロセッサに与えることができ、一方、暗号化されていない領域の情報はスケーリングされ順列化されたベクトル内の要素の順序を表示する。暗号化されたベクトルの実際の値および実際の順序はスケーリングと順列化（ｐｅｒｍｕｔａｔｉｏｎ）によって隠されるので、そのような伝送（送信）（ｔｒａｎｓｍｉｓｓｉｏｎ）が可能である。
【課題を解決するための手段】
【００１０】
したがって、この発明の実施の形態１は、第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択する方法を開示するものであり、ここで、上記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密解読鍵および公開暗号鍵を含み、また、上記暗号化されたベクトルは、上記公開鍵で暗号化されて、上記第１プロセッサに格納され、また、上記第１プロセッサは、該第１プロセッサが暗号化された領域においてのみ動作するように、上記公開鍵だけを格納するものであり、
上記方法は、
暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするステップと、
スケーリングされ順列化されたベクトルを生成するために、上記暗号化されたベクトルの上記要素の順序を順列化する（ｐｅｒｍｕｔｉｎｇ）ステップと、
上記暗号化された領域の情報を上記第２プロセッサへ提供するステップであって、暗号化されていない領域の情報は、上記スケーリングされ順列化されたベクトルの中の要素の順序を示すものである、ステップと、
上記スケーリングされ順列化されたベクトルの中の暗号化された要素の暗号化されたインデックスを得るステップと、
上記暗号化されたインデックスに基づいて、上記暗号化された要素を選択するステップと、を含み、
本方法の上記各ステップは上記第１プロセッサによって行われる。
【００１１】
他の実施の形態は、システムの第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択するためのシステムを開示するものであり、ここで、上記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密解読鍵および公開暗号鍵を含み、また、上記暗号化されたベクトルは、上記公開鍵で暗号化されて、上記第１プロセッサに格納され、また、上記第１プロセッサは暗号化された領域においてのみ動作するものであり、
上記システムは、
上記暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするための手段と、
スケーリングされ順列化されたベクトルを生成するために、上記暗号化されたベクトルの上記要素の順序を順列化する手段と、
上記暗号化された領域の情報を上記第２プロセッサへ提供するための手段であって、暗号化されていない領域の情報は、上記スケーリングされ順列化されたベクトルの中の要素の順序を示すものである、手段と、
上記スケーリングされ順列化されたベクトルの中の上記暗号化された要素の暗号化されたインデックスを得る手段と、
上記暗号化されたインデックスに基づいて、上記暗号化された要素を選択する手段と、を含み、
本システムの上記各手段は上記第１プロセッサによって行われる。
【００１２】
さらに他の実施の形態は、システムの第１プロセッサと第２プロセッサとの間の安全なマルチパーティ通信を使用して、暗号化されたベクトル内の暗号化された要素を、該暗号化されたベクトル内の該暗号化された要素の順序により、選択するための方法を開示するものであり、ここで、上記第２プロセッサは強秘匿な加法的準同形写像暗号システムのための１対の鍵を格納し、該１対の鍵は秘密暗号鍵および公開解読鍵を含み、また、上記暗号化されたベクトルは、上記公開鍵で暗号化されて、上記第１プロセッサに格納され、また、上記第１プロセッサは暗号化された領域においてのみ動作するものであり、
上記方法は、
上記暗号化されたベクトルの要素の値を、該暗号化されたベクトル内の該要素の順序が維持されるように、スケーリングするステップと、
スケーリングされ順列化されたベクトルを生成するために、上記暗号化されたベクトルの上記要素の順序を順列化するステップと、
上記スケーリングされ順列化されたベクトルを第１加算的ベクトル（ｆｉｒｓｔ  ａｄｄｉｔｉｖｅ  ｖｅｃｔｏｒ）と第２加算的ベクトル（ｓｅｃｏｎｄ  ａｄｄｉｔｉｖｅ  ｖｅｃｔｏｒ）とに分割するステップと、
上記第１加算的ベクトルの要素対の差（  ｐａｉｒｗｉｓｅ  ｄｉｆｆｅｒｅｎｃｅｓ  ｏｆ  ｅｌｅｍｅｎｔｓ）のベクトルを決定するステップと、
暗号化されたインデックスを決定するために、上記要素対の差のベクトルおよび上記第２加算的ベクトルを上記第２プロセッサへ与えるステップと、
上記スケーリングされ順列化されたベクトルの中の上記暗号化された要素の暗号化されたインデックスを得るステップと、
上記インデックスの第１摂動項（ｆｉｒｓｔ  ｐｅｒｔｕｒｂａｔｉｏｎ  ｔｅｒｍ）および第２摂動関数（ｓｅｃｏｎｄ  ｐｅｒｔｕｒｂａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）によって修正変更された、上記暗号化されたベクトルを上記第２プロセッサに提供するステップであって、上記暗号化されたインデックスでの上記第２摂動関数の値が零に等しいものである、ステップと、
上記暗号化されたインデックスに対応する、上記暗号化されたベクトルの要素を上記第２プロセッサから得るステップと、
上記暗号化されたベクトルの上記暗号化された要素を得るために、上記暗号化された領域において上記第１摂動項を減算するステップと、を含み、
本方法の上記各ステップは上記第１プロセッサによって行われる。
【００１３】
定義
この発明の実施の形態について記述する際に、次の定義がそれらの実施の形態（上記を含み）を通して適用可能である。
【００１４】
「コンピュータ」とは、構造化された入力を受け付け、所定の規則により該構造化された入力を処理し、また、その処理の結果を出力として生成することができる、あらゆる装置を指すものである。そのようなコンピュータの例としては、コンピュータ、汎用コンピュータ、スーパーコンピュータ、メインフレーム、スーパーミニコンピュータ、ミニコンピュータ、ワークステーション、マイクロコンピュータ、サーバー、対話型テレビジョン、コンピュータと対話型テレビジョンとのハイブリッド結合（組合せ）、およびコンピュータおよび（または）ソフトウェアをエミュレートするアプリケーションに特有のハードウェア、を含む。コンピュータは、単一のロセッサ、あるいは並列におよび（または）並列ではなく動作することができる多数のプロセッサを有することができる。コンピュータはまた、コンピュータ間で情報を送信または受信するために、ネットワークを介して共に接続された２つ以上のコンピュータをも指す。そのようなコンピュータの一例は、ネットワークによってリンク（結合）された複数のコンピュータを介して情報を処理するための分散形計算機システム、を含む。
【００１５】
「中央演算処理装置（ＣＰＵ）」あるいは「プロセッサ」は、コンピュータ、あるいはソフトウェア命令を読み取って実行するコンピュータのコンポーネント（構成要素）を指す。
【００１６】
「メモリ」あるいは「コンピュータ可読媒体」は、コンピュータによってアクセス可能なデータを格納するための、あらゆる記憶装置を指す。それらの例としては、磁気ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭまたはＤＶＤのような光ディスク、磁気テープ、メモリチップ、および電子メールを送受信する際あるいはネットワークにアクセスする際に使用されるような、コンピュータが読み取り可能な電子化データを搬送するのに使用される搬送波とたとえばランダムアクセスメモリ（ＲＡＭ）等のコンピュータメモリー、を含む。
【００１７】
「ソフトウェア」とは、コンピュータを作動させるための所定の（予め定められた）規則を指す。そのようなソフトウェアの例としては、ソフトウェア、コードセグメント、命令、コンピュータプログラム、およびプログラムされたロジック（論理）、を含む。インテリジェントシステムのソフトウェアは自己学習ができてもよい。
【００１８】
「モジュール」あるいは「ユニット」とは、タスクあるいはタスクの一部を行うコンピュータ内の基本的なコンポーネント（構成要素）を指す。それはソフトウェアやハードウェアのいずれかによって実行することができる。
【発明の効果】
【００１９】
この発明の実施の形態は、順序を維持したままのスケーリングを使用することにより、ベクトルの要素対（ペア）の比較を回避する。マッピングは、暗号化されていない領域における関心要素のインデックスの決定を可能にする。
【図面の簡単な説明】
【００２０】
【図１】この発明の実施の形態１による、暗号化されたベクトル内の暗号化されたエレメント（要素）を選択するための方法のブロック図である。
【図２】この発明の実施の形態１による、順序を維持するスケーリング（拡大、縮小）の概略図である。
【図３】この発明の実施の形態１による、複数の要素の順序を表す情報を安全に決めるための方法のブロック図である。
【図４】この発明の実施の形態１の擬似コードの説明図である。
【発明を実施するための形態】
【００２１】
実施の形態１．
図１は、第１プロセッサ１０１と第２プロセッサ１０２との間の安全なマルチパーティ通信を使用して、暗号化されたベクトル１０５内の暗号化された要素１８０を、該暗号化されたベクトル１０５内の該暗号化された要素１８０の順序（ｏｒｄｅｒ）により、選択するための方法１００を示している。
【００２２】
暗号化されたベクトル内の暗号化された要素の順序は、秘密鍵で解読された、暗号化されたベクトルの複数の要素の値の順序で決定される。暗号化された要素は、順序ルール（規則）１５１によって選択される。順序規則の例としては、最小要素を選択すること、最大の要素を選択すること、暗号化されたベクトル内の２番目の最小要素を選択すること、あるいは中央の要素を選択すること、を含む。様々な実施の形態では、第２プロセッサあるいは両方のプロセッサが順序規則を知っている。
【００２３】
第２プロセッサは、強秘匿な加法的準同形写像暗号システムのための１対の鍵を有する。その１対の鍵は、秘密解読鍵１４１および公開暗号鍵１６１を含む。第２プロセッサは主に、暗号化されていない領域において動作する。反対に、第１プロセッサは暗号化された領域においてのみ動作する。暗号化されたベクトル１０５は、公開鍵で暗号化され、第１プロセッサに格納される。
【００２４】
たとえば、それらの鍵の対（ペア）（κｅ、κｄ）は、強秘匿な加法的準同形写像公開鍵暗号システムのための暗号化／解読の鍵の対である。暗号化関数はξ（・）であり、また、解読関数はξ−１（・）である。加法的準同形写像特性は、要素ｍ１，ｍ２のベクトルに対して、ξ（ｍ１）ξ（ｍ２）＝ξ（ｍ１＋ｍ２）およびξ（ｍ１）ｍ２＝ξ（ｍ１ｍ２）を保証する。さらに、要素ｚ∈ＺＮのベクトルに対して、暗号化されたベクトル１０５はξ（ｚ）＝（ξ（ｚ１）、ξ（ｚ２）、・・・、ξ（ｚＮ））である。
【００２５】
したがって、第１プロセッサは公開暗号鍵κｅおよび暗号化されたベクトルξ（ｚ）を有し、第２プロセッサは鍵の対（ペア）（κｅ、κｄ）を有する。本方法１００を行った後に、第１プロセッサはξ（ｍｉｎ１≦ｉ≦Ｎｚｉ）を得る。第２プロセッサは何も得ない。
【００２６】
この発明の実施の形態１では、暗号化されたドメイン（領域）の暗号化されたベクトル内の要素の値をスケーリング１１０して、スケーリングされたベクトル１１５を生成する。そのスケーリングの後、暗号化されたベクトル内の要素の順序は維持されている。たとえば、暗号化されたベクトル内の最小要素のインデックスは、スケーリングされたベクトル内の最小要素のインデックスに等しい。そのスケーリングは、以下により詳細に記述されるように、順序を維持する行列２１０を使用して行われる。
【００２７】
次に、スケーリングされたベクトル内の要素の順序は、スケーリングされ順列化されたベクトル１２５を生成するために、順列化１２０され、また、暗号化された領域の情報１３５は第２プロセッサに提供１３０される。ここで、暗号化されていない領域の情報は、スケーリングされ順列化されたベクトルの中の要素の順序を示す。この発明の実施の形態１では、その情報はスケーリングされ順列化されたベクトル自体である。
【００２８】
他の実施の形態では、スケーリングされ順列化されたベクトルを第１加算的ベクトルと第２加算的ベクトルへ分割する。また、情報は、第１加算的ベクトルと第２加算的ベクトルの要素対（ペア）の差のベクトルである。
【００２９】
第２プロセッサは、秘密鍵を使用して情報を解読１４０して、順序規則１５１により、暗号化されていない領域の情報１４２から要素のインデックス１５１を決定１５０する。次に、第２プロセッサは公開鍵でそのインデックスを暗号化１６０して、暗号化されたインデックスを第１プロセッサへ提供１６５する。
【００３０】
第１プロセッサは、暗号化されたインデック１６５に基づいて、暗号化された要素１８０を選択１７０する。様々な実施の形態では、要素の暗号化されたインデックスに基づく暗号化された要素の選択は、以下に述べるように、第１プロセスと第２プロセッサとの間のオブリビアス（ｏｂｌｉｖｉｏｕｓ：紛失）通信に基づいている。
【００３１】
順序を維持するスケーリング
順序を維持するスケーリングの目的は、ベクトルの要素の順序を維持しながら、暗号化されたベクトルの値を修正変更することである。この発明の実施の形態１は、順序を維持するマッピングが、暗号化されたドメイン（領域）において適用することができ、それによって、要素のシーケンス全体を第１プロセッサおよび第２プロセッサの両方から秘密にしておく、という認識に基づく。
【００３２】
図２は、順序を維持するスケーリングの概略図を示す。たとえば、ベクトル２２０は５つの要素２２１〜２２５を有する。要素２２２および２２３は等しい値を有する。順序を維持する行列２１０でベクトル２２０を乗算することにより、異なる値であるが要素の順序が同じである、５つの要素２３１〜２３５を有するスケーリングされたベクトル２３０を生成する。たとえば、インデックス１を有する要素２２４がベクトル２２０内の最小要素である場合、同一のインデックス１を有する要素２３４はスケーリングされたベクトル２３０内の最小要素である。
【００３３】
そのスケーリングは、ベクトル２２０内の同一の値、たとえば要素２２２−２２３、を有する要素がスケーリングされたベクトル２３０において同一の値を有することを保証しない。しかしながら、要素２３２−２３３の異なる値は、スケーリングされたベクトル２３０内の要素の順序を乱さない。
【００３４】
したがって、この発明の実施の形態１では、第１プロセッサは、そのセット｛１，２，・・・，Ｎ｝上で順列πを生成して、ここで、Ｎは暗号化されたベクトルの大きさであり、順列化（ｐｅｒｍｕｔｅｄ）されたベクトルξ（ν）＝π（ξ（ｚ））を得る。そして、第１プロセッサは整数ｇ＞０を選択して、次式によって順序を維持する行列Ｇ∈ＺＮｘＮ２１０を生成する。
【００３５】
【数１】
0005762232.tif 000002
【００３６】
この発明の実施の形態１では、スケーリングは、暗号化されたベクトルに順序を維持する行列を乗算することにより達成される。たとえば、スケーリングされ順列化されたベクトルは、ω＝Ｇνである。順序を維持する行列において、要素ｇｉは整数である。
【００３７】
如何なる１≦ｉ、ｊ≦Ｎに対して、ωｉ−ωｊ＝ｇ（νｉ−νｊ）であり、それは、ｇ＞０に対して、Ｇは順序を維持する行列であること、すなわち、ωｉ≦ωｊである時かつそのときに限り、νｉ≦νｊであることを意味する。加法的準同形写像暗号化の特性を使用して、第１プロセッサはξ（ω）＝ξ（Ｇν）を決定する。
【００３８】
順序を表示する情報
スケーリングされ順列化されたベクトルに関する情報は、秘密鍵を格納する第２プロセッサに与えられ、たとえば、送信される。一方、基礎となる、暗号化されていない領域の情報は、スケーリングされ順列化されたベクトルの中の要素の順序を表わしており、また、気付かずに（ｏｂｌｉｖｉｏｕｓｌｙ）、順序を維持する行列の構成による暗号化されたベクトル内の要素の順序に関するものである。暗号化されたベクトルの実際の値および実際の順序はスケーリングと順列化（ｐｅｒｍｕｔｉｎｇ）によって隠されるので、そのような伝送（送信）が可能である。
【００３９】
図３に示される実施の形態では、スケーリングされ順列化されたベクトルが第１加算的ベクトルと第２加算的ベクトルとへ分割され、また、情報は、第１加算的ベクトルおよび第２加算的ベクトル自体の要素対の差のベクトルによって形成される。
【００４０】
具体的には、第１プロセッサは、乱数の第１加算的ベクトル３１５  ａ∈ＺＮを生成３１０する。準同形写像特性を使用して、第１プロセッサは、第２加算的ベクトル３２５ξ（ω−ａ）を決定３２０する。
【００４１】
次に、第１プロセッサは、対（ペア）の差ａΔのベクトル３３５を構成する。ベクトル３３５の要素は第１加算的ベクトルａの要素対の差である。
したがって、以下となる。
【００４２】
【数２】
0005762232.tif 000003
【００４３】
対差のベクトル３３５および第２加算的ベクトル３２５は、スケーリングされ順列化されたベクトルの中の要素の順序を表示する情報１３５を形成する。情報１３５は第２プロセッサに提供１３０される。
【００４４】
この発明の実施の形態の１つの変形例では、対差のベクトルの値がノイズベクトル３４５で修正変更３４０される。たとえば、第１プロセッサは、間隔［−ｇ，ｇ］に亘ってランダムノイズηを生成し、−ｇ≦ηｉｊ≦ｇおよびΣ１≦ｉ≦ｊ≦Ｎ  ηｉｊ＝ηのように、ノイズベクトル
【数３】
0005762232.tif 000004
を決定する。対差のベクトルは、ａΔ−ηによってノイズベクトルで修正変更され、そして第２プロセッサへ伝送（送信）される。
【００４５】
第２プロセッサは、暗号化された領域において第２付加的（加算的）シェア（ｓｅｃｏｎｄ  ａｄｄｉｔｉｖｅ  ｓｈａｒｅ）を得ており、また、要素毎の解読によってｂ＝ω−ａを得る。第１プロセッサは第１加算的ベクトルαを有し、また、第２プロセッサは第２加算的ベクトルｂを有し、それらはスケーリングされ順列化されたベクトルωの加算的（加法的）なシェアである。したがって、αｉ＋ｂｉ≦αｊ＋ｂｊのとき、かつそのときに限り、またαｉ−αｊ≦ｂｉ−ｂｊのとき、かつそのときに限り、ωｉ≦ωｊである。
【００４６】
次に、式により、第２プロセッサは、第２加算的（加法的）シェアの対差のベクトルを決定する。
【００４７】
【数４】
0005762232.tif 000005
【００４８】
両方の対差ａΔおよびｂΔのベクトルは
【数５】
0005762232.tif 000006
要素を含む。
【００４９】
第２プロセッサは、ａΔ−ηおよび−ｂΔの対応する要素を比較する。ノイズベクトルηの任意の要素ηｉｊに対して、第２プロセッサは、１≦ｉ＜ｊ≦Ｎに対してαｉ−αｊ−ηｉｊ≦ｂｊ−ｂｉであるか否かを決定する。この決定は、行列Ｇ行列の構成によって、ｇ（νｉ−νｊ）−ηｉｊ≦０であるか否かを決定することと等価である。
【００５０】
−ｇ≦ηｉｊ≦ｇであるため、第２プロセッサは、
【数６】
0005762232.tif 000007
のとき、かつそのときに限り、
【数７】
0005762232.tif 000008
であると決定する。ここで、オペレータ
【数８】
0005762232.tif 000009
は、場合に応じて、「より大きい」、または「より小さい」を意味する。而して、νｉ≠νｊのとき、順序が維持される。νｉ＝νｊならば、第１プロセッサによって選択されたノイズベクトルηｉｊの要素の値に依存して、αｉ−αｊ−ηｉｊはｂｊ−ｂｉより大きくなったり、あるいは、小さくなったりする。しかしながら、このような摂動（変動：ｐｅｒｔｕｒｂａｔｉｏｎ）により、第２プロセッサが、スケーリングされ順列化されたベクトルの要素を知らずに、インデックス１５１、たとえば、α＝ａｒｇ  ｍｉｎ１≦ｉ≦Ｎνｉ、を決定することをさらに可能にする。暗号化されたインデックス１６５は第１プロセッサに与えられる。
【００５１】
要素の暗号化されたインデックスに基づいて選択すること
様々な実施の形態では、暗号化された要素の選択を該要素の暗号化されたインデックスに基づいて行うことが、第１プロセッサと第２プロセッサとの間のオブリビアス（紛失）通信を使用する。たとえば、１つの実施の形態では、第１プロセッサは、１≦ｉ≦Ｎに対して、数γおよびβｉをランダム（無作為）に選択して、ξ（βｉ（ｉ−α）＋νｉ＋γ）を決定するために、準同形写像特性を使用する。ここで、γは第１摂動項であり、また、βｉ（ｉ−α）は、その値が暗号化されたインデックスで零と等しいインデックスの第２摂動関数である。第１プロセッサは、その結果として生じる、Ｎ個の暗号化されたエントリー（項目）を有するベクトルを第２プロセッサへ与える。
【００５２】
第２プロセッサは、修正変更された要素να＋γを得るためインデックスｉ＝αに対応するエントリーを解読する。第２プロセッサは、修正変更された要素を再暗号化して、第１プロセッサに提供する。
【００５３】
第１プロセッサは、次式を介して第１摂動項γにより導入されたノイズを削除して暗号化された要素１８０を生成するために、加法的準同形写像特性を使用する。
【００５４】
【数９】
0005762232.tif 000010
【００５５】
図４は、この実施の形態の、自明である擬似コードを示す。
従来の方法は、安全なミリオネア（ｍｉｌｌｉｏｎａｉｒｅ）プロトコルの変形例を使用して、プライバシを保護したままベクトルの要素を決定する。たとえば、それらの方法は、ベクトルの最小要素を決定するために、安全なミリオネアプロトコルを繰り返し適用することを行う。しかしながら、それらの方法は、両方のプロセッサでの通信オーバヘッドがＮ２に比例するので、計算（演算）上非能率的である。
【００５６】
この発明の実施の形態は、順序を維持したままのスケーリングを使用することにより、ベクトルの要素対（ペア）の比較を回避する。マッピングは、暗号化されていない領域における関心要素のインデックスの決定を可能にする。
【００５７】
この発明は好ましい実施の形態の例として記述されたが、この発明の趣旨および範囲内で、様々な他の改変および変更が行われてもよいことが理解されるべきである。したがって、この発明の真実の趣旨および範囲内に入るような、すべての変更例および変形例をカバーすることが、添付の特許請求の範囲の目的である。
【図１】
0005762232.tif 000013
【図２】
0005762232.tif 000014
【図３】
0005762232.tif 000015
【図４】
0005762232.tif 000016