(57)【要約】      （修正有）【課題】誤りを含むときのデータマッチングに関し、秘密データのプライバシーを保持しながら、ファジーマッチングを実現する。【解決手段】データ要素をそれぞれのベクトルセットに変換し、各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化することによって、２つの暗号化データ要素セットを提供する。暗号化データ要素の対について、暗号化ベクトルセット間の比較測度が計算される。第１のセット内の各暗号化データ要素について、比較測度が第１の暗号化データ要素を含むデータ要素の対の少なくとも１つについての閾値を満たさないときに、第１の暗号化データ要素を解読不能にする難読化ベクトルが生成される。難読化ベクトルが秘密鍵を用いて解読され得、比較測度が第２のセット内のデータ要素の少なくとも１つについての閾値を満たす場合に、第１のセット内のデータ要素が解読され、マッチングを実行する。【選択図】図２
2016035554.tif 000002
【特許請求の範囲】
【請求項１】
データマッチングのための方法であって、
第１の暗号化データ要素セットを提供するステップであって、前記第１のセット内の前記暗号化データ要素の各々は、第１のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化することによって形成されており、前記第１のセット内の各データ要素は、アルファベットから取り出される文字列を含む、提供するステップと、
第２の暗号化データ要素セットを受信するステップであって、前記第２のセット内の前記暗号化データ要素の各々は、第２のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、前記公開鍵を用いて暗号化することによって形成されており，前記第２のセット内の各データ要素は、前記アルファベットから取り出される文字列を含む、受信するステップと、
各対が、前記第１のセットからの暗号化データ要素および前記第２のセットからの暗号化データ要素を含む複数の暗号化データ要素対の各々について、前記第２のセット内の前記暗号化データ要素の前記暗号化ベクトルと、前記第１のセット内の前記暗号化データ要素の前記暗号化ベクトルとの間の比較測度を計算するステップと、
前記第１のセット内の各暗号化データ要素について、前記比較測度が前記暗号化データ要素を含むデータ要素の前記対の少なくとも１つについての閾値を満たさないときに、前記第１の暗号化データ要素を解読不能にする難読化ベクトルを生成するステップと、
前記難読化ベクトルを出力するステップであって、それによって、前記難読化ベクトルが前記準同型暗号化方式の秘密鍵を用いて解読されるときに、前記比較測度が前記第２のセット内の前記データ要素の少なくとも１つについての前記閾値を満たす前記第１のセット内のデータ要素のみが解読可能である、出力するステップと
を含み、
前記比較測度を計算するステップ、および、前記難読化ベクトルを生成するステップのうちの少なくとも１つは、コンピュータプロセッサによって実施される、方法。
【請求項２】
前記準同型暗号化方式は、完全準同型暗号化方式である、請求項１に記載の方法。
【請求項３】
前記準同型暗号化方式は、加算、乗算、および、任意選択の右回転演算が暗号化データに対して実施されることを可能にする、請求項１に記載の方法。
【請求項４】
前記準同型暗号化方式は、Ｂｒａｋｅｒｓｋｉ−Ｇｅｎｔｒｙ−Ｖａｉｋｕｎｔａｎａｔｈａｎ（ＢＧＶ）暗号化方式に基づく、請求項１に記載の方法。
【請求項５】
前記第１のセット内の各データ要素は、前記第２のセット内の各データ要素と同じ数の文字を有する、請求項１に記載の方法。
【請求項６】
前記第１のセット内の各データ要素は少なくとも２文字を含む、請求項５に記載の方法。
【請求項７】
前記第１のセットおよび第２のセット内の各データ要素について、前記暗号化ベクトルセットは、同じ数の暗号化ベクトルから構成される、請求項１に記載の方法。
【請求項８】
前記暗号化ベクトルの数は、前記アルファベット内の前記文字の数に対応する、請求項７に記載の方法。
【請求項９】
データマッチングのためのシステムであって、
第１の暗号化データ要素セットを記憶するメモリであって、前記第１のセット内の前記暗号化データ要素の各々は、第１のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化することによって形成されており、前記第１のセット内の各データ要素は、アルファベットから取り出される文字列を含む、メモリと、
メモリに記憶されている命令であって、
第２の暗号化データ要素セットを受信し、前記第２のセット内の前記暗号化データ要素の各々は、第２のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、前記公開鍵を用いて暗号化することによって形成されており、前記第２のセット内の各データ要素は、前記アルファベットから取り出される文字列を含み、
前記第１のセットおよび第２のセットからの暗号化データ要素の各対について、前記第２のセット内の前記暗号化データ要素の前記暗号化ベクトルと、前記第１のセット内の前記暗号化データ要素の前記暗号化ベクトルとの間の比較測度を計算し、
前記第１のセット内の各暗号化データ要素について、前記比較測度が前記暗号化データ要素を含むデータ要素の前記対の少なくとも１つについての閾値を満たさないときに、前記第１の暗号化データ要素を解読不能にする難読化ベクトルを生成し、
前記難読化ベクトルを出力し、それによって、前記難読化ベクトルが前記準同型暗号化方式の秘密鍵を用いて解読されるときに、前記比較測度が前記閾値を満たす前記第１のセット内のデータ要素のみが解読可能である、命令と、
前記命令を実施するプロセッサと
を備える、システム。
【請求項１０】
データマッチングのための方法であって、
サーバコンピュータによって、第１の暗号化データ要素セットを生成するために第１のデータ要素セットを暗号化するステップであって、前記暗号化するステップは、前記第１のセットのデータ要素の各々をそれぞれのベクトルのセットに変換するサブステップと、前記ベクトルセット内の各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化するサブステップとを含み、前記第１のデータ要素セット内の各データ要素は、アルファベットから取り出される文字列を含む、暗号化するステップと、
クライアントコンピュータによって、第２の暗号化データ要素セットを生成するために第２のデータ要素セットを暗号化するステップを含み、前記暗号化するステップは、前記第２のセットのデータ要素の各々をそれぞれのベクトルのセットに変換するサブステップと、前記ベクトルセット内の各ベクトルを、前記公開鍵を用いて暗号化するサブステップとを含み、前記第２のデータ要素セット内の各データ要素は、前記アルファベットから取り出される文字列を含む、暗号化するステップと、
前記サーバコンピュータによって、
前記第２の暗号化データ要素セットを受信するステップと、
各対が、前記第１のセットからの暗号化データ要素および前記第２のセットからの暗号化データ要素を含む複数の暗号化データ要素対の各々について、前記第２のセット内の前記暗号化データ要素の前記暗号化ベクトルと、前記第１のセット内の前記暗号化データ要素の前記暗号化ベクトルとの間の比較測度を計算するステップと、
前記第１のセット内の各暗号化データ要素について、前記比較測度が前記暗号化データ要素を含むデータ要素の前記対の少なくとも１つについての閾値を満たさないときに、前記第１の暗号化データ要素を解読不能にする難読化ベクトルを生成するステップと、
前記難読化ベクトルを出力するステップと、
前記クライアントコンピュータによって、前記難読化ベクトルを、前記準同型暗号化方式の秘密鍵を用いて解読するステップであって、それによって、前記比較測度が前記第２のセット内の前記データ要素の少なくとも１つについての前記閾値を満たす前記第１のセット内のデータ要素のみが解読可能である、解読するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
例示的な実施形態は、マッチングされるべきデータが不完全である、たとえば、誤りを含むときのデータマッチングに関し、特に、完全準同型暗号化方式を用いた暗号化データのマッチングに関連して適用される。
【背景技術】
【０００２】
ファジープライベートマッチング（ＦＰＭ）は、クライアントが、自身のデータセットの要素にほぼ等しい要素を発見するためにサーバのデータベースにおいてクエリを行うことを望むときにプライバシーを保持するのに有用な方法である。交換プロトコルは、すべての通信および処理ステップの間に、クエリが秘密の（すなわち、サーバには分からない）ままであり、一致する要素とは別のサーバのデータベースの内容がクライアントに対して隠されたままであるようなものである。そのような技法は、指紋、ＤＮＡ、または虹彩パターンのような秘密の個人的な特性が、認証およびユーザアクセス制御（ＵＡＣ）を提供するのによく使用される、生体認証に適用される。ここで、正確な値は測定することが困難であることが多く、したがって、秘密データのプライバシーを保持しながら、ファジーマッチングが所望される。同様に、ナンバープレート番号のマッチングにおいては、ナンバープレートの画像から文字列を識別するのに光学式文字認識（ＯＣＲ）構成要素が使用され得るが、認識において誤りが生じることがある。秘密情報を可能な限りセキュアなままにしながら、ＯＣＲ認識された文字列を、データベースに記憶されているナンバープレート番号とファジーマッチングすることが所望され得る。
【０００３】
準同型暗号化方式が、指定の数学演算が暗号化データに対して実施されることを可能にする。結果もたらされる暗号文は、解読されると、従来の暗号化方式とは対照的に、元の平文に同じ演算を実施した結果に等しい値を提供する。暗号化方式Ε、値ａおよびｂならびに演算子ｏｐについて、準同型暗号化特性は以下のように表すことができる。
【数１】
2016035554.tif 000003
【０００４】
演算子は、乗算または加算のような、標準的な数学演算子とすることができる。いくつかの事例において、演算子は、等式の各辺において異なってもよく、たとえば、暗号化データの乗算が平文の加算に対応してもよい。
【０００５】
１つのみの算術演算が可能である（たとえば、加算のみまたは乗算のみ）場合、暗号化方式は部分的に準同型と考えられる。初期のプロトコルはすべて、部分準同型システムを利用する。たとえば、Ｍｉｃｈａｅｌ  Ｊ．  Ｆｒｅｅｄｍａｎ他「Ｅｆｆｉｃｉｅｎｔ  ｐｒｉｖａｔｅ  ｍａｔｃｈｉｎｇ  ａｎｄ  ｓｅｔ  ｉｎｔｅｒｓｅｃｔｉｏｎ」（ＥＵＲＯＣＲＹＰＴ  ２００４，  ｐｐ．  １  −  １９  （２００４））、以下「Ｆｒｅｅｄｍａｎ  ２００４」、Ｌｕｋａｓｚ  Ｃｈｍｉｅｌｅｗｓｋｉ他「Ｆｕｚｚｙ  ｐｒｉｖａｔｅ  ｍａｔｃｈｉｎｇ」（ＡＲＥＳ  ０８，  ｐｐ．  ３２７  −  ３３４  （２００８））、以下「Ｃｈｍｉｅｌｅｗｓｋｉ  ２００８」、およびＱｉｎｇｓｏｎｇ  Ｙｅ他「Ｅｆｆｉｃｉｅｎｔ  ｆｕｚｚｙ  ｍａｔｃｈｉｎｇ  ａｎｄ  ｉｎｔｅｒｓｅｃｔｉｏｎ  ｏｎ  ｐｒｉｖａｔｅ  ｄａｔａｓｅｔｓ」（ＩＣＩＳＣ  ２００９，  ｐｐ．  ２１１  −  ２２８  （２０１０））、以下Ｙｅ  ２０１０を参照されたい。これらの引用文献は、Ｐａｉｌｌｉｅｒ暗号システムのような、意味論的にセキュアな加法的準同型公開鍵暗号システムを利用している。Ｐａｓｃａｌ  Ｐａｉｌｌｉｅｒ「Ｐｕｂｌｉｃ−ｋｅｙ  ｃｒｙｐｔｏｓｙｓｔｅｍｓ  ｂａｓｅｄ  ｏｎ  ｃｏｍｐｏｓｉｔｅ  ｄｅｇｒｅｅ  ｒｅｓｉｄｕｏｓｉｔｙ  ｃｌａｓｓｅｓ」（ＥＵＲＯＣＲＹＰＴ９９，  ｐｐ．  ２２３  −  ２３８  （１９９９））を参照されたい。これらのシステムは、暗号文加算およびスカラ乗算のみを可能にし、暗号文の間の乗算は可能にしない。
【０００６】
加算および乗算の両方を計算する方法を提供する場合、暗号化方式は完全準同型（ＦＨＥ）であると言われる。他の準同型演算、たとえば、排他的もしくはＧｏｌｄｗａｓｓｅｒ  Ｍｉｃａｌｉ暗号化方式の場合、または、Ｂｒａｋｅｒｓｋｉ−Ｇｅｎｔｒｙ−Ｖａｉｋｕｎｔａｎａｔｈａｎ  （ＢＧＶ）暗号化方式のベクトル回転が可能である。Ｚｖｉｋａ  Ｂｒａｋｅｒｓｋｉ他「Ｆｕｌｌｙ  ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｂｏｏｔｓｔｒａｐｐｉｎｇ」（Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  Ｒｅｐｏｒｔ  ２０１１／２７７  （２０１１））を参照されたい。完全準同型暗号化は、サーバが暗号化データを受信して、秘密復号鍵にアクセスすることができないにもかかわらず、そのデータが暗号化されたままで、任意選択の複雑な動的に選択される計算を実施することを可能にする。
【０００７】
確認すべき最初の完全準同型暗号化方式は、イデアル格子に基づいていた。たとえば、Ｃｒａｉｇ  Ｇｅｎｔｒｙ「Ｆｕｌｌｙ  ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ｕｓｉｎｇ  ｉｄｅａｌ  ｌａｔｔｉｃｅｓ」（Ｐｒｏｃ．４１ｓｔ  Ａｎｎｕａｌ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｔｈｅｏｒｙ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ，  ＳＴＯＣ  ’０９，  ｐｐ．  １６９  −  １７８  （２００９））、以下「Ｇｅｎｔｒｙ  ２００９」を参照されたい。この方式のセキュリティは、最近ベクトル問題に基づく。ＢＧＶのような他のＦＨＥ暗号化方式が後に開発された。ＢＶＧの一実施態様が、Ｓｈａｉ  Ｈａｌｅｖｉ他「Ｄｅｓｉｇｎ  ａｎｄ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ａ  ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ｌｉｂｒａｒｙ」（ＭＩＴ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ａｎｄ  Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｌａｂｏｒａｔｏｒｙ  ｍａｎｕｓｃｒｉｐｔ  （２０１３））、以下Ｈａｌｅｖｉ  ２０１３に記載されている。
【０００８】
表１は、例示的な暗号化方式および可能になる演算を提供する。
【表１】
2016035554.tif 000004
【０００９】
ＢＧＶ暗号システムによって暗号化データに対して可能になる準同型演算のいくつかは、加算、乗算、右シフト、および右回転を含む。
【００１０】
Ｆｒｅｅｄｍａｎ  ２００４は、準同型プロトコルにおいてＦＰＭを可能にすることに対処しており、ＦＰＭ問題を解決するための、多項式符号化に基づく、２−ｏｕｔ−ｏｆ−３プロトコルを提案している（すなわち、ファジー度閾値が２に固定され、単語のサイズが３に固定される）。一方、Ｃｈｍｉｅｌｅｗｓｋｉ  ２００８は、Ｆｒｅｅｄｍａｎ  ２００４によって提案されている２−ｏｕｔ−ｏｆ−３プロトコルが、クライアントがサーバのセット内の単語を、たとえそれらの単語自体が存在しない場合であっても発見することが可能であるという点においてセキュアでないことを示している。Ｆｒｅｅｄｍａｎプロコトルのもう１つの問題は、通信複雑度において
【数２】
2016035554.tif 000005
係数を受けない効率的なＦＰＭプロトコルをどのように提供するかである。
【００１１】
Ｃｈｍｉｅｌｅｗｓｋｉ  ２００８は、ＦＰＭ問題を解決するための２つの他のプロトコル、すなわち、ＦＰＭ−ＣＨＭ１（多項式符号化ベースのプロトコル）およびＦＰＭ−ＣＨＭ２（線形秘密分散に基づく）を提案している。これらは、ｔ−ｏｕｔ−ｏｆ−Ｔに対する正解を提案している。しかしながら、Ｙｅ  ２０１０は、ＦＰＭ−ＣＨＭ２がセキュアでないことを示している。Ｙｅ  ２０１０は、ＦＰＭ−ＹＥと称される、多項式符号化、および、インターリーブされたリード−ソロモン符号に基づく共有−隠蔽ランダム誤り訂正閾値秘密分散法式に基づく、別の解決策を提案している。
【００１２】
これらすべてのＦＰＭプロトコルに共通しているのは、暗号化データに対する計算機能を提供するために部分準同型暗号化方式が使用されていることである。これらのすべてが、加法のみの方式（乗算は暗号化値とスカラとの間でのみ可能）であるＰａｉｌｌｉｅｒ暗号システムを参照する。加えて、通信および計算時間に関して依然としてセキュアと考えられるこれらのプロトコルの性能は、用途によっては許容できないものであり得る。
【００１３】
セキュアで、実際の適用に許容可能な性能を提供する暗号化方式が依然として必要とされている。
【発明の概要】
【課題を解決するための手段】
【００１４】
例示的な実施形態の一態様によれば、データマッチングのための方法は、第１の暗号化データ要素セットを提供するステップを含み、第１のセット内の暗号化データ要素の各々は、第１のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化することによって形成されている。第１のセット内の各データ要素は、アルファベットから取り出される文字列を含む。第２の暗号化データ要素セットが受信され、第２のセット内の暗号化データ要素の各々は、第２のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、上記公開鍵を用いて暗号化することによって形成されている。第２のセット内の各データ要素は、アルファベットから取り出される文字列を含む。複数の暗号化データ要素対の各々について、各対は、第１のセットからの暗号化データ要素および第２のセットからの暗号化データ要素を含み、方法は、第２のセット内の暗号化データ要素の暗号化ベクトルと、第１のセット内の暗号化データ要素の暗号化ベクトルとの間の比較測度を計算するステップを含む。第１のセット内の各暗号化データ要素について、比較測度が第１の暗号化データ要素を含むデータ要素の対の少なくとも１つについての閾値を満たさないときに、第１の暗号化データ要素を解読不能にする難読化ベクトルが生成される。方法は、難読化ベクトルを出力するステップをさらに含み、それによって、難読化ベクトルが準同型暗号化方式の秘密鍵を用いて解読されるときに、比較測度が第２のセット内のデータ要素の少なくとも１つについての閾値を満たす第１のセット内のデータ要素のみが解読可能である。比較測度を計算するステップ、および、難読化ベクトルを生成するステップのうちの少なくとも１つは、コンピュータプロセッサによって実施される。
【００１５】
別の態様によれば、データマッチングのためのシステムは、第１の暗号化データ要素セットを記憶するメモリを含み、第１のセット内の暗号化データ要素の各々は、第１のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化することによって形成されている。第１のセット内の各データ要素は、アルファベットから取り出される文字列を含む。第２の暗号化データ要素セットを受信するための命令がメモリに記憶されており、第２のセット内の暗号化データ要素の各々は、第２のセットのデータ要素のそれぞれを、ベクトルのセットに変換し、各ベクトルを、上記公開鍵を用いて暗号化することによって形成されている。第２のセット内の各データ要素は、アルファベットから取り出される文字列を含む。第１のセットおよび第２のセットからの暗号化データ要素の各対について、第２のセット内の暗号化データ要素の暗号化ベクトルと、第１のセット内の暗号化データ要素の暗号化ベクトルとの間の比較測度が計算される。第１のセット内の各暗号化データ要素について、命令が、比較測度が第１の暗号化データ要素を含むデータ要素の対の少なくとも１つについての閾値を満たさないときに、第１の暗号化データ要素を解読不能にする難読化ベクトルを生成する。難読化ベクトルが出力され、それによって、難読化ベクトルが準同型暗号化方式の公開鍵を用いて解読されるときに、比較測度が閾値を満たす第１のセット内のデータ要素のみが解読可能である。プロセッサが命令を実施する。
【００１６】
別の態様によれば、データマッチングのための方法は、サーバコンピュータによって、第１の暗号化データ要素セットを生成するために第１のデータ要素セットを暗号化するステップを含み、暗号化するステップは、第１のセットのデータ要素の各々をそれぞれのベクトルのセットに変換するサブステップと、ベクトルセット内の各ベクトルを、準同型暗号化方式の公開鍵を用いて暗号化するサブステップとを含み、第１のデータ要素セット内の各データ要素は、アルファベットから取り出される文字列を含む。方法は、クライアントコンピュータによって、第２の暗号化データ要素セットを生成するために第２のデータ要素セットを暗号化するステップを含み、暗号化するステップは、第２のセットのデータ要素の各々をそれぞれのベクトルのセットに変換するサブステップと、ベクトルセット内の各ベクトルを、上記公開鍵を用いて暗号化するサブステップとを含み、第２のデータ要素セット内の各データ要素は、アルファベットから取り出される文字列を含む。方法は、サーバコンピュータによって、第２の暗号化データ要素セットを受信するステップを含む。複数の暗号化データ要素対の各々について、各対は、第１のセットからの暗号化データ要素および第２のセットからの暗号化データ要素を含み、方法は、第２のセット内の暗号化データ要素の暗号化ベクトルと、第１のセット内の暗号化データ要素の暗号化ベクトルとの間の比較測度を計算するステップを含む。第１のセット内の各暗号化データ要素について、比較測度が第１の暗号化データ要素を含むデータ要素の対の少なくとも１つについての閾値を満たさないときに、第１の暗号化データ要素を解読不能にする難読化ベクトルが生成される。難読化ベクトルが、サーバによって出力される。クライアントコンピュータによって、難読化ベクトルが、準同型暗号化方式の秘密鍵を用いて解読され、それによって、比較測度が第２のセット内のデータ要素の少なくとも１つについての閾値を満たす第１のセット内のデータ要素のみが解読可能である。
【図面の簡単な説明】
【００１７】
【図１】図１は、例示的な実施形態の一態様による、ファジープライベートマッチングシステムが動作する環境の機能ブロック図である。
【図２】図２は、例示的な実施形態の一態様によるファジープライベートマッチングのための方法を示す流れ図である。
【図３】図３は、例示的な実施形態による、プロトタイプシステムの、ｍ、すなわち、クライアントのセットサイズに対する計算時間を示すグラフ図である。
【図４】図４は、プロトタイプシステムの、ｎ、すなわち、サーバのセットサイズに対する計算時間を示すグラフ図である。
【図５】図５は、プロトタイプシステムの、Ｔ、すなわち、単語サイズに対する計算時間を示すグラフ図である。
【図６】図６は、プロトタイプシステムの、ｍ、すなわち、クライアントのセットサイズに対する計算コストを示すグラフ図である。
【図７】図７は、プロトタイプシステムの、ｎ、すなわち、サーバのセットサイズに対する計算コストを示すグラフ図である。
【図８】図８は、プロトタイプシステムの、Ｔ、すなわち、単語サイズに対する計算コストを示すグラフ図である。
【発明を実施するための形態】
【００１８】
例示的な実施形態の諸態様は、データマッチングのためのシステムおよび方法に関する。システムおよび方法は、加算および乗算の両方の演算が暗号文に対して直接実施されることを可能にする完全準同型暗号化（ＦＨＥ）方式に基づく、ファジープライベートマッチング（ＦＰＭ）問題を解決するためのプロトコルを利用する。一実施形態において、システムおよび方法は、格子ベースの非対称暗号プリミティブ（すなわち、たとえばＧｅｎｔｒｙ  ２００９に記載されているような格子ベースの暗号）を中心として構築される。本明細書において使用されるプロトコルは、完全準同型暗号化を使用したコンパクトなファジープライベートマッチング（ＣＦＰＭ−ＦＨＥ）と称される。
【００１９】
例示的な完全準同型暗号化方式は、ＦＰＭプロトコルを作成するために加法的および乗法的に使用することができる。例示のＦＨＥ方式の加法および乗法の特性を組み合わせて使用することによって、コンパクトなデータ構造を作成することが可能になる。これらはプロトコルの通信部分の間に、通信コストを低減し、計算部分のより良好な複雑度を保証するために使用される。協働してＣＦＰＭ−ＦＨＥプロトコルのコンパクトなデータ構造、固有の特性を提供するためにＦＨＥ方式の加算、乗算、および任意選択の回転を使用する結果として、既存のソリューションと比較したときにより効率的なアルゴリズムがもたらされている。
【００２０】
ＣＦＰＭ−ＦＨＥプロトコルは、選択される敵対者モデル（すなわち、ｓｅｍｉ−ｈｏｎｅｓｔ環境において計算的に制限されている敵対者）に対してセキュアであることが証明されている。ＣＦＰＭ−ＦＨＥプロトコルはまた、処理時間およびデータ空間要件の両方に関する複雑性について、少なくとも二次の倍数をもって既存のアルゴリズムよりも良好に機能する。ＢＧＶ準同型暗号化方式に基づく、ＨＥＬｉｂ（Ｓｈａｉ  Ｈａｌｅｖｉ他「Ｈｅｌｉｂ」（ＧｉｔＨｕｂ  （２０１３）において公開されているＧＰＬソースコード）参照）において実施される、概念の適用の証明において得られる実験結果も記載されている。
【００２１】
例示的なＣＦＰＭ−ＦＨＥプロトコルは、私人または企業によって、「ファジーなクエリ（たとえば、外部センサから入来する不完全な入力）を用いて、または、「ファジーなデータ」（たとえば、不正確なまたは破損したデータ）に対してのデータアクセスに関して、プライバシーの侵害が生じる場合に実際に適用され得る。たとえば、指紋、ＤＮＡ、または虹彩パターンのような個人的な特性がクエリに使用される生体認証において、サービスを実施する、すなわち、センサからの「ファジーなデータ」をデータベースにマッチングするためにこの例示的なプロトコルを使用することができる。この特定の使用事例において、ＣＦＰＭ−ＦＨＥプロトコルは、セキュリティ、ＵＡＣ（指紋の特徴ベクトルのようなファジーなデータをデータベースに効率的にマッチングすることによって）、およびプライバシー（サービス提供者は何がデータベース内の一致する要素であったかを知ることができないため）を提供する。同様に、ビデオカメラによってキャプチャされたデータを用いて動作しているときの、不正確な文字検出のような光学式文字認識（ＯＣＲ）ソフトウェアから入来するファジーな入力をマッチングするために、システムを使用することができる。この事例において、駐車場ビル内のナンバープレートのような文字列が、ナンバープレートのような記憶されているシーケンスのセットとマッチングされる。一致が発見されると、これによって自動的に、出口バリアの開放または他の動作のような応答がトリガされ得る。この事例において、ＣＦＰＭ−ＦＨＥを使用することによって、セキュアアクセス機能を提供し、出入りするユーザのプライバシーを保持することができる。諒解されるように、ＣＦＰＭ−ＦＨＥプロトコルは、データベクトルの類似度を計算することが所望される他の領域（たとえば、単語集号表現に基づくテキストのクラスタリングまたはカテゴリー化）に使用することができる。
【００２２】
図１は、図２に示す方法を実施することができる例示的な環境を示す。クライアントコンピューティングデバイス１０が、データベース１６に記憶されている、記憶されているデータセットＹ１４と比較されることになる入力データセットＸ１２を受信（または内部で生成）する。データベース１６は、クライアントコンピューティングデバイス１０にとってアクセス可能でない。入力データベース１２は、１つまたは複数のデータ要素を含み得、データ要素は本明細書において単語と称される場合があり、各単語は文字列を含む。この文字列が、ＯＣＲ認識されたナンバープレート番号もしくは生体認証データ、またはその一部を形成し得る。データベース１６は、ナンバープレート／生体認証データのような、クライアントの（第２の）セット１２のうちの１つまたは複数に一致する可能性がある相対的に多数の第１のデータ要素を、データセットＹ１４内に記憶し得る。サーバコンピュータ１８は、データベース１６に記憶されているデータセットＹ１４にアクセスすることができ、ローカルエリアネットワーク、または、インターネットのような広域ネットワークのようなネットワーク２０を介して、クライアントコンピューティングデバイス１０と通信可能に接続される。
【００２３】
１つのクライアントデバイス１０が図示されているが、同じサーバ１８と通信する多くのクライアントコンピューティングデバイス１０があってもよい。一例として、駐車場ビルのセットが、ＯＣＲ認識されるナンバープレートの画像をキャプチャし、検出されたナンバープレート番号が、駐車場ビルの登録されたユーザのナンバープレート番号とマッチングするために、サーバ１８に（暗号化された形態で）送信される。
【００２４】
各コンピューティングデバイス１０、１８は、本方法のそれぞれの部分を実施するための適切な命令２６、２８を記憶するメモリ２２、２４と、命令を実行するためにメモリと通信するプロセッサデバイス３０、３２とを含む。入出力デバイス、３４、３６、３８、４０が、コンピュータが外部デバイスと通信することを可能にする。それぞれのコンピュータのハードウェア構成要素２２、２４、３０、３２、３４、３６、３８、４０が、それぞれのバス４２、４４によって通信可能に接続される。クライアントデバイス１０は、ＬＣＤ画面またはコンピュータモニタのような表示デバイス４６、キーボード、キーパッド、タッチスクリーンなどのようなユーザ入力デバイス４８を含むユーザインターフェースにリンクされ得る。
【００２５】
クライアントコンピュータ１０は、公開鍵５０を生成してサーバコンピュータ１６と共有し、サーバに提供されない秘密（シークレット）鍵５２を保持する。公開鍵５０および秘密鍵５２は、非対称鍵対を形成する。この鍵対の２つの部分は、数学的に連結される。公開鍵は、平文を暗号化して暗号文を形成するのに使用されるが、暗号文を解読することはできず、一方で、秘密鍵はクライアントデバイスによって、暗号文を解読するのに使用される。
【００２６】
例示的なクライアント命令２６は、ベクトル表現構成要素６０と、暗号化構成要素６２と、解読構成要素６４とを含む。簡潔には、入力（第２の）データセットＸ１２の各要素（単語）について、ベクトル表現構成要素６０は、（行）ベクトルのセットを含む行列表現を生成する。入力としてベクトルを必要としない暗号化方式において、この構成要素は省かれてもよい。暗号化構成要素６２は、入力（第２の）データセット１２の各要素について形成されたベクトルのセットを、公開鍵５０を用いて暗号化して、入力データセット１２の各要素の各ベクトルが別個に暗号化されている暗号化入力データセット６６を形成する。解読構成要素６４は、サーバがファジーマッチング動作を実施した後に、サーバコンピュータ１８から受信される暗号化データ（難読化ベクトル）６８を解読する。任意選択的に、出力構成要素６９が、暗号化ベクトル６６をサーバに出力し、解読構成要素６４によって生成される、解読された難読化ベクトル６８を比較して、クライアントの単語のいずれかとの一致があるか否かを判定する。
【００２７】
例示的なサーバ命令２８は、ベクトル表現構成要素７０と、暗号化構成要素７２と、マッチング構成要素７４と、難読化構成要素７６とを含む。簡潔には、記憶されているデータセットＹの各要素について、ベクトル表現構成要素７０は、クライアントベクトル表現構成要素６０（使用される場合）によって実施されるものと同じプロセスを使用して、ベクトル表現のセットとしての役割を果たす行列を生成する。暗号化構成要素７２は、記憶されているデータセットの各要素についてのベクトル表現を、クライアント暗号化構成要素６２によって実施されるものと同じプロセスを使用して、公開鍵５０を用いて暗号化して、暗号化データセット７８を形成する。マッチング構成要素７４は、入力データセット６６の暗号化要素（複数の場合もあり）とデータベースデータセット７８の暗号化要素との間でのファジーマッチング動作を、たとえば、暗号化要素の対の間の、距離のような比較測度を計算することによって、実施する。難読化構成要素７６は、クライアントデータセット１２の要素に対してｔ−ファジーである、データベースデータセット１４の要素のみがクライアントデバイスにおいて解読されて平文を形成することができるように、データベースデータセット１４の暗号化要素を難読化して暗号化データ６８を生成する。データベースデータセットの残りの要素は、解読されるとき、クライアントデバイスによって解読不能である乱数の形態で返される。クライアントデバイスは、平文要素、またはそれに基づく情報を、結果８０として出力する。
【００２８】
コンピュータ１０、１８は各々、デスクトップ、ラップトップ、パームトップ、タブレットコンピュータ、携帯情報端末（ＰＤＡ）、サーバコンピュータ、携帯電話、ポケットベル、それらの組合せ、または、例示的な方法を実行するための命令を実行することが可能な他のコンピューティングデバイスであってもよい。
【００２９】
メモリ２２、２４は各々、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、磁気ディスクもしくはテープ、光ディスク、フラッシュメモリ、またはホログラフィックメモリのような、任意のタイプの持続性コンピュータ可読媒体を表してもよい。一実施形態において、メモリ２２、２４は、ランダムアクセスメモリと読み出し専用メモリとの組合せを含む。ネットワークインターフェース３６、３８は、コンピュータが、コンピュータネットワーク２０を介して他のデバイスと通信することを可能にし、変調復調器（ＭＯＤＥＭ）、ルータ、ケーブル、および／またはＥｔｈｅｒｎｅｔ（登録商標）ポートを含んでもよい。
【００３０】
デジタルプロセッサ３０、３２は、シングルコアプロセッサ、デュアルコアプロセッサ（またはより一般的にマルチコアプロセッサによって）、デジタルプロセッサおよび協働する数値演算コプロセッサ、デジタルコントローラなどによってなどで様々に具現化されてもよい。各デジタルプロセッサ３０、３２は、それぞれのコンピュータ１０、１８の動作の制御に加えて、それぞれのメモリ２２、２４に記憶されている、図２に概説している方法を実施するための命令を実行する。
【００３１】
用語「ソフトウェア」は本明細書において使用される場合、コンピュータまたは他のデジタルシステムによって、当該コンピュータまたは他のデジタルシステムを、ソフトウェアの意図であるタスクを実行するように構成するように実行可能な命令の任意の集合またはセットを包含するように意図される。用語「ソフトウェア」は本明細書において使用される場合、ＲＡＭ、ハードディスク、光ディスクなどのような記憶媒体に記憶されるそのような命令を包含するように意図され、また、ＲＯＭなどに記憶されているソフトウェアであるいわゆる「ファームウェア」を包含するようにも意図される。そのようなソフトウェアは、様々な方法で編成されてもよく、ライブラリ、遠隔サーバなどに記憶されているインターネットベースのプログラム、ソースコード、解釈コード、オブジェクトコード、直接実行可能なコードなどとして編成されるソフトウェア構成要素を含んでもよい。ソフトウェアは、特定の機能を実行するために、システムレベルコードまたはサーバもしくは他の位置に存在する他のソフトウェアへのコールを起動することができることが企図される。
【００３２】
諒解されるように、図１は、コンピュータシステム１０、１８に組み込まれる構成要素の一部のみの高レベル機能ブロック図である。プログラム可能コンピュータの構成および動作は周知であるため、それらはこれ以上説明しない。
【００３３】
ファジープライベートマッチング（ＦＰＭ）は、各々がそれぞれサイズ（要素の数）ｍおよびｎの要素のセットＸおよびＹを保持するクライアントＣおよびサーバＳ（たとえば、図１においてデバイス１０および１８によって示すような）を含む２パーティプロトコルである。セット内の各要素は、Ｄ文字のアルファベットＡから取り出されるＴ個の文字から構成される固定サイズの単語であり、Ｄは、非ゼロ自然数
【数３】
2016035554.tif 000006
のセットからのものである。アルファベットＡが、有限の文字セットであり、濃度Ｄを有するとする。
Ａ＝｛１，．．．，Ｄ｝；｜Ａ｜＝Ｄ
【００３４】
Ｗが、サイズがＴ文字の、アルファベットＡに対して定義されるすべての単語（要素）のセットであるとする。
Ｗ＝｛ｌｉ：ｉ∈［１．．．Ｔ］，ｌｉ∈Ａ｝
【００３５】
このとき、クライアントの要素セットＸおよびサーバの要素セットＹは以下のように定義することができる。
Ｘ＝｛Ｘｉ：ｉ∈［１．．．ｍ］，Ｘｉ∈Ｗ｝
Ｙ＝｛Ｙｉ：ｉ∈［１．．．ｎ］，Ｙｉ∈Ｗ｝
【００３６】
すなわち、各要素セットＸおよびＹは、同じ単語セットＷから取り出される１つまたは複数の単語のセットを含む。クライアントは、２つのセットＸおよびＹの「共通集合」を秘密裏に発見することを望む。これは、各々がクライアントの単語のうちの少なくとも１つに一致するサーバのセット内で発見され得る単語から形成されるセットを構築することを伴う。そのような共通集合の成員であることは、単語間のｔ−ファジー性を計算することによって解決される。これによって、文字間に完全な一致がないときの単語間の一致が可能になる。クライアントの単語、
【数４】
2016035554.tif 000007
がサーバの単語、
【数５】
2016035554.tif 000008
に対してｔ−ファジーであることを意味する２つの単語の間のｔ−ファジー性
【数６】
2016035554.tif 000009
は、以下のように定義される。
【数７】
2016035554.tif 000010
【００３７】
すなわち、要素Ｘｗと要素Ｙｗとの間の共通集合（それぞれの位置を考慮に入れた一致する文字の数）が閾値ｔ以上である場合、Ｘ内の要素Ｘｗは、Ｙ内の要素Ｙｗとファジー一致する。閾値は、各単語内の文字数未満である値を有する、すなわち、ｔ＜Ｔである。
【００３８】
たとえば、単語ＣＡＢおよびＣＡＲは、単語の第１の位置内の文字が一致し、単語の第２の位置内の文字が一致し、そのため、２つの単語間の共通集合（ＣＡ）内に見られる文字数が２であるため、閾値ｔが２であるとき、ｔ−ファジー一致と考えられ得る。
【００３９】
このとき、所与の閾値ｔについてのセットＸおよびＹ間のＦＰＭ問題に対する解を求めることは、以下の単語セットを発見することが可能であるプロコトルを構築することとして定義される。
【数８】
2016035554.tif 000011
これはすなわち、所定の閾値ｔを所与として、Ｘ内の少なくとも１つの要素Ｘｉが要素Ｙｉとファジー一致する、少なくとも１つの要素Ｘｉがある、Ｙ内の要素のセットである。
【００４０】
これには、以下のプライバシー制約が課される。
１．サーバＳは、Ｘのいかなる要素を発見することも可能でない、かつ
【００４１】
２．クライアントＣは、
【数９】
2016035554.tif 000012
のいかなる要素を発見することも可能でない、すなわち、クライアントのセット内の要素とファジー一致しないセットサーバのセット内のいかなる要素も発見することができない。
【００４２】
一例として、上述したナンバープレートのマッチングの例において、クライアント１０は、すべての文字および数字（Ｏおよび／または０のような、これらの文字のいくつかは、認識を容易にするためにセットから省かれてもよい）のような、有限アルファベットＡから取り出される文字列から構成されるナンバープレート番号を有する。この文字列を固定長要素に変換するために、クライアントは、補充文字、たとえば、ナンバープレートに使用される通常の文字セットの一部でない文字を付加し得る。たとえば、固定長が８文字であるとき、文字列「ＣＡＢ  １２３」は、文字列００ＣＡＢ１２３に変換されてもよく、ここで、スペースは無視され、０はアルファベットＡの一部を形成する補充文字である。サーバ１８は、データベース内の記憶されているナンバープレートのセット１４を用いて同様のプロセスを実施し、それによって、すべての要素（ナンバープレート番号）が同じ数の文字を有する。
【００４３】
ＦＰＭ問題について考えられる敵対者モデルは、計算的に制限されている敵対者を有するｓｅｍｉ−ｈｏｎｅｓｔ環境であり、これは、以下のことを意味する。
【００４４】
１．このパーティは、定義されているプロトコルから逸脱しないが、元の設計によって意図されているよりも多くを発見しようと試みるために、後者によって提供される任意の追加の情報を使用することができる。
【００４５】
２．選択されるセキュリティパラメータ数ｋに対して、暗号化システムが攻撃者によって破壊可能であるというごくわずかな可能性がある。
【００４６】
例示的な暗号化構成要素６２、７２および方法は、準同型演算として加算および乗算の両方を可能にする完全準同型暗号化方式を使用する。ベクトルを用いて動作するとき、回転のような第３の準同型演算が可能になってもよい。
【００４７】
例示的なＦＰＭプロトコルにおいて、プライバシーを提供するためにＢＧＶ暗号化方式が使用されるが、本明細書に記載する準同型演算を可能にする他のＦＨＥ方式が暗号化に使用されてもよい。ＢＧＶは、以下の形態の多項式環に対して定義される。
【数１０】
2016035554.tif 000013
式中、各
【数１１】
2016035554.tif 000014
は整数であり、ｐは選択可能なパラメータであり、Φｐ（ｘ）は、ｐ番目の円周等分多項式である。環
【数１２】
2016035554.tif 000015
は平文空間の２元多項式に対応し、暗号文は、低減していくサイズの一連の係数に対して定義される。ＢＧＶ暗号化の例示的な実施態様に関するさらなる詳細については、Ｈａｌｅｖｉ  ２０１３を参照されたい。一実施態様において、Φｐ（ｘ）は、種々の演算を通じて情報を維持するのに十分大きいように選択され、これは、モジュロがこの上限で計算されるすべての数を維持するのに十分に大きいことを意味する。
【００４８】
ＢＧＶにおいて、基本要素は、ベクトルとして表される点のセットである（単一の整数はこの方式では表されないが、単一の整数を含むサイズ１のベクトルは可能である）。このとき、要素（単語）は、ベクトルとして、またはより一般的には、その暗号システムのために選択されるパラメータに応じて、ベクトルのセットとして表すことができる。任意の符号化方式に関して、各文字はこのとき、整数によって表される。
【００４９】
以下において、｛ａ｝Ｋは、暗号化ベクトル｛ａ０，．．．，ａｎ｝Ｋを表し、Ｋは、暗号化に使用される公開鍵５０である。したがって、公開鍵５０およびｓｋとして示されている秘密鍵５２はいずれも、ＢＧＶシステムまたはその変形形態におけるように、多項式環に対して定義され得る。たとえば、参照により本明細書に組み込まれる米国特許出願公開第２０１３／０２１６０４４号明細書を参照されたい。
【００５０】
本発明において有用である、ＢＧＶ暗号システムによって暗号化データに対して可能になる演算のいくつかを、表２に示す。
【表２】
2016035554.tif 000016
【００５１】
加算演算は、加算が暗号化の前に実施されるか、または後に実施されるかにかかわらず、２＋３の和が５になることを可能にする。
【００５２】
右シフトは、データ要素の右の文字をシフトし、たとえば、データ要素が２進数として表されるとき、その数の右のビットが廃棄される。数４は２進法では１００として表され、これを右シフトすると、２に対応する０１０が与えられる。
【００５３】
右回転は、右端の文字を左端の位置にシフトする。
【００５４】
アルゴリズム１は、ＣＦＰＭ−ＦＨＥプロトコルを簡潔に説明している。これは下記により詳細に説明されて、図２に示されており、図２において、クライアント側の動作が左に示されており、サーバ側の動作が右に示されている。
［表］
2016035554.tif 000017
【００５５】
図２は、この手順を示す。方法は、Ｓ１００において開始する。
【００５６】
設定
クライアント１０は、公開鍵５０およびシークレット鍵５２の対（Ｋ，ｓｋ）を有する。クライアントが、完全準同型暗号システムのパラメータを準備し、Ｋおよびパラメータをサーバに送信する（Ｓ１０２）。送信されるパラメータは、使用される暗号化のタイプに応じて決まり得る。たとえば、送信されるパラメータは、式１におけるパラメータｐを含んでもよい。Ｓ１０４において、サーバ１８がこの情報を受信する。公開鍵およびパラメータが、たとえば、先行するデータベース検索のためにすでにサーバに送信される場合、これらのステップは省かれてもよい。
【００５７】
Ｓ１０６において、クライアント１０は、１つまたは複数のデータ要素（単語）のセットＸの形態で表される入力データセット１２を受信する。データセットＸは、少なくとも１単語を含み、いくつかの実施形態では、最大１０単語、またはそれ以上のような、２つ以上の単語を含む。同様にＳ１０８において、サーバ１８が、記憶されているデータセットＹ（Ｘと比較されることになる１つまたは複数のデータ要素を含む）を取り出す。データセットＹは少なくとも１単語を含み、いくつかの実施形態では、少なくとも５単語、または少なくとも１０単語、または最大１００単語、または少なくとも１００単語、または最大１０００単語、またはそれ以上のような、２つ以上の単語を含む。いくつかの実施形態において、データセットＹ内の単語の数は、データセットＸ内の単語の数の少なくとも５倍、または少なくとも１０倍、または少なくとも１００倍である。
【００５８】
各単語のプライバシーを保持するために、単語のベクトル表現（すなわち、その文字列）は行列表現に変換され、行列表現は、アルファベットＡの各文字についてのベクトルを含み、ベクトルは行列の行（または列）であり得る。行列内の各ベクトルは、ベクトル要素のセットを含み、単語のベクトル表現における各文字について、１つのベクトル要素がある。したがって、たとえば、単語が６文字長であり、アルファベットに２４文字がある場合、６×２４行列が生成される。ベクトルは、単語ベクトルの各文字をアルファベットの各文字と比較する単語−行列表現関数を使用してベクトル表現構成要素６０、７０によって生成される（Ｓ１１０、Ｓ１１２）。これは、以下のように実施され得る。
【００５９】
Ｘ内の所与の単語Ｘｉ（およびそれぞれ、Ｙ内の各単語Ｙｊ）について、各単語Ｘｉが文字列を含む、すなわち、ベクトルとして処理されるＸｉ＝（ｘ１，ｘ２，・・・ｘＴ）である場合、Ｒｉとして示される単語Ｘｉの行列表現Ｒ（Ｘｉ）は以下のように定義される。
【数１３】
2016035554.tif 000018
ここで、ρはＸｉの各文字を変換する関数であり、
【数１４】
2016035554.tif 000019
式中、ａはアルファベットＡ内の位置ａにある文字を表し、ｂは、単語内の位置ｂにある文字を表す。行列の各行は、単語の文字毎に１つの、Ｔ個のベクトル要素を有し、各列はアルファベット内のＤの文字に対応するＤ個の要素を有する。行列は無論、行が列として表されるように配列され得る。
【００６０】
したがって、たとえば、ρ１，２は、アルファベットの第１の文字を、単語の第２の文字ｘ２と比較し、それらが同じである場合は１を出力し、そうでなければ０を出力する。したがって、行列内の列の各々は列内のただ１つの位置において１を有し、ここで、単語の文字はアルファベット内のその位置に一致し、すべての他の位置は０である。行ベクトルは各位置において０を有し得るが、行ベクトルの少なくともいくつかは、１つまたは複数の位置に１を含む。したがって、行ベクトルの各々は、各ベクトル要素が２つの２進値のうちの一方である２値ベクトルである。
【００６１】
Ｓ１１４において、クライアント暗号化構成要素６２が、提供されたパラメータを使用して、完全準同型暗号化方式の公開Ｋを用いて行列の各行ベクトルを暗号化して、暗号化行ベクトルのセットを形成する。このとき、単語Ｘｉの暗号化行列表現（およびＹｊについても同様に）は、以下の様な、｛Ｒｉ｝Ｋとして示される暗号化行ベクトルの１つのベクトルである。
【数１５】
2016035554.tif 000020
【００６２】
クライアントの行ベクトルセットはＲとして示され、ベクトルの要素はρとして示される。サーバの表現および要素はそれぞれ、Ｒ´およびρ´として示される。
【００６３】
ステップＳ１１０およびＳ１１４の一例として、アルファベット（ａ，ｂ，ｃ，ｄ）での単語「ｃａｂ」は、以下の行列によって表される。
【数１６】
2016035554.tif 000021
【００６４】
また、単語の暗号化は、以下の暗号化行ベクトルセットによって表される。
【数１７】
2016035554.tif 000022
【００６５】
したがって、クライアントのデータセットＸの各単語は、同じ暗号化パラメータを使用して、同じ完全準同型暗号化方式の公開鍵Ｋを使用してこのように暗号化される。Ｓ１１６において、クライアントは、各単語のベクトルの暗号化セットを、サーバに送信する。諒解されるように、本明細書に記載されているものに加えて、他の暗号化がデータの送信に使用されてもよいが、これは一般的に必要とされない。
【００６６】
サーバは、そのデータ要素セットを同じように暗号化する（Ｓ１１８）。サーバはまた、Ｋを使用して０．．．ＴのＴ＋１個のユニタリベクトルのような、ユニタリベクトルのセットも暗号化する（Ｓ１２０）。暗号化ユニタリベクトルのセットは、アルゴリズムにおいて後に使用される。これらの暗号化ユニタリベクトルは、｛（０，０，０，．．．）｝Ｋ、｛（１，１，１，．．．）｝Ｋなどの形態であり、すなわち、ベクトルの各位置に同じ数がある。しかしながら、０．．．Ｔのすべてのこれらの暗号化ベクトルが一般的に必要とされるわけではない。一実施形態において、０．．．（Ｔ−ｔ）およびＴのユニタリベクトルのみが本方法に使用される場合、（Ｔ−ｔ）＋２個のユニタリベクトルから成るセットのみが、実際に暗号化される必要がある。別の実施形態において、ｔ．．．Ｔのユニタリベクトルのみが本方法に使用される場合、（Ｔ−ｔ）＋１個のユニタリベクトルのみが、暗号化される必要がある。
【００６７】
クライアントの暗号化データ６６（暗号化行ベクトルセット）がサーバ１８によって受信され、一時的にメモリに記憶される（Ｓ１２２）。サーバには秘密鍵５２が提供されないため、サーバは暗号化行ベクトルセット（複数の場合もあり）を解読することが可能でない。
【００６８】
サーバのマッチング構成要素７４が、１つはサーバからの、１つはクライアントからの要素の対の間の比較測度、たとえば、サーバの要素の１つの暗号化ベクトルと、クライアントの要素の１つの暗号化ベクトルとの間の距離（または類似度）を計算する（Ｓ１２４）。一実施形態において、比較測度はハミング距離である。等しい長さの２つのベクトルの間のハミング距離は、対応するシンボルが異なる位置の数である。このステップにおいて、サーバは、ｎｍ個のハミング距離ベクトルΔＨ（Ｘｉ，Ｙｊ）を計算するが、暗号化形式で、すなわち、｛ΔＨ（Ｘｉ，Ｙｊ）｝Ｋとしてこれを行う。
【００６９】
最初にサーバは、類似する要素を識別する暗号化類似度ベクトル
【数１８】
2016035554.tif 000023
（逆ハミング距離に対応する）を計算する。
【数１９】
2016035554.tif 000024
すなわち、各ｉ∈［０．．ｍ］および各ｊ∈［０．．ｎ］について、比較されている２つの単語の対応する行ベクトル
【数２０】
2016035554.tif 000025
がともに乗算されて、Ｄ行すべてにわたる結果の和が計算される。２つのベクトルの乗算において、１つのベクトルの各要素が、他方において同じ位置にある要素と乗算される。ＸｉおよびＹｊにおいて、ｋ番目の文字が同じである場合、乗算の結果は位置ｋにおいて１を含むことになり、それ以外では、０になる。したがって、たとえば、ベクトル｛（０，１，０）｝Ｋおよび｛（０，１，０）｝Ｋが乗算されるとき、結果は｛（０，１，０）｝Ｋであり、ベクトル｛（０，０，１）｝Ｋおよび｛（０，１，０）｝Ｋが乗算されるとき、結果は｛（０，０，０）｝Ｋである。この暗号化方式は乗算演算が、この演算が暗号化されていないベクトルに対して実施されるときと同じ結果を生成することを可能にするため、この乗算は暗号化ベクトルに対して実施される。乗算されたベクトルのすべての和が、０および１を含む単一の暗号化ベクトルを与える。類似度ベクトル
【数２１】
2016035554.tif 000026
内の１の数が、２つの単語における同一の文字の数に対応する。
【００７０】
ハミング距離を得るために、この目的は、ベクトル
【数２２】
2016035554.tif 000027
のすべての要素を加算して、これを各要素における文字の数Ｔから減算することである。しかしながら、類似度測度数
【数２３】
2016035554.tif 000028
はベクトルの形態であるため、暗号化ベクトルを（暗号システムの回転演算子を使用して）回転させて、各回転されたベクトルを初期ベクトルと加算することによって、この加算は容易に実施することができる。このステップは式（３）に従って実施することができる。
【数２４】
2016035554.tif 000029
【００７１】
具体的には、各回転によってベクトルの最後の要素が第１の位置に再配置され、ベクトルのすべての他の要素が１位置だけ右にシフトする。これをＴ回行うことによって、その要素がすべて同じ、２つの単語における同一の文字の数であるベクトルが得られる。したがって、たとえば、暗号化ベクトル
【数２５】
2016035554.tif 000030
は１回目の回転において｛（０，０，１｝Ｋになり、２回目の回転において｛（１，０，０｝Ｋになる。これらを初期ベクトルに加算することによって、
【数２６】
2016035554.tif 000031
が得られる。最後の演算は、このベクトルをＴの暗号化表現｛Ｔ｝Ｋから減算することであり、これは、すべての要素が値Ｔ、すなわち各単語の長さを有する暗号化ユニタリベクトル（ステップＳ１１８において事前に計算されている）である。たとえば、Ｔ＝３であるとき、｛Ｔ｝Ｋ＝｛（３，３，３）｝Ｋである。ベクトルΔＨ（Ｘｉ，Ｙｊ）の各要素が一致しない文字の数に対応する暗号化ハミング距離ベクトル｛ΔＨ（Ｘｉ，Ｙｊ）｝Ｋは、このようにして得られる。たとえば、上記の例において、
【数２７】
2016035554.tif 000032
である、すなわち、一致しない文字は２つである。
【００７２】
別の実施形態において、異なるベクトルの要素の数に対応するハミング距離ではなく、下記に説明するような、逆ハミング距離（同様の要素の数）を使用することができる。
【００７３】
暗号化ハミング距離｛ΔＨ（Ｘｉ，Ｙｊ）｝Ｋの計算は、すべての可能性のある暗号化データ要素対（一方はサーバセットから、他方はクライアントセットからのもの）について実施される。
【００７４】
その後、Ｓ１２６においてＹセットを難読化するためにハミング距離ベクトルが使用される。特に、Ｓ１２４において計算された要素対間のハミング距離ベクトルを使用して、サーバの難読化構成要素７６が、以下の形態の、Ｙ内の各単語に１つの、ｎ個の難読化ベクトルから成るセットを計算する。
【数２８】
2016035554.tif 000033
すなわち、ｊの各値について、（ΔＨ（Ｘｉ，Ｙｊ）−ｗ）．ｒを計算し、式中、ΔＨ（Ｘｉ，Ｙｊ）は、上述したように計算されたハミング距離ベクトル（暗号化形態）であり、各ｗは０〜Ｔ−ｔの（暗号化）ユニタリベクトル（すなわち、（０，０，０．．．），（１，１，１，．．．））であり、Ｔは各単語内の文字の数であり、ｔは閾値であり、ｒはランダムベクトルである。ｒは、ランダムベクトル生成器によって生成することができ、したがって、アルゴリズムが実行される度毎に、および、ｎおよびｍならびにｗ毎に異なる。その後、この第１の項が暗号化ベクトル｛Ｙｊ｝Ｋに加算され、Ｙｊは従来の表現（ｙ１，．．．，ｙＴ）において使用される。
【００７５】
クライアントのデータ要素のうちの少なくとも１つＸｉがＹｊに対して
【数２９】
2016035554.tif 000034
である、すなわち、ｒと乗算されることになる０から構成されるベクトルを与える、Ｙ内のｎ番目の単語に対するそのハミング距離ベクトルが、ユニタリベクトルｗのうちの１つに対応する少なくとも１つの単語がＸ内にある場合かつその場合に限り、式４の第１の項は空値になり、これによって、ゼロベクトルが与えられる（下記の証明参照）。これが真である場合のみ、式４における積の結果は｛ｙｊ｝Ｋである。しかしながら、ｎ個の結果もたらされる難読化ベクトルを解読することは不可能であるため、サーバはこれらの間で区別しない。サーバは単純に、ｎ個の難読化ベクトル６８のすべてをクライアントに送信する（Ｓ１２８）。Ｓ１３０において、難読化ベクトルセットがクライアントにおいて受信される。
【００７６】
Ｓ１３２において、クライアントが、解読構成要素を用いてｎ個の難読化ベクトル６８を解読し、それらを入力データセットと比較する（Ｓ１３４）。ＡＴ内の任意の平文がＸからの任意の単語に対してｔ−ファジーである場合、解読構成要素はこの平文を出力セットに加える。式４に従って計算された難読化ベクトルが｛Ｙｊ｝Ｋに対応する場合、解読された難読化ベクトルは、平文のみに対応することになる。そうでない場合、Ｙｊが、長さがランダムなベクトルに加えられ、解読不能になる。
【００７７】
式３の出力を所与として、以下のように、クライアントが、自身が予期されているものを得ることが容易に示され得る。
【００７８】
すべてのｊ∈［１．．ｎ］について、２つの事例を区別することができる。
【数３０】
2016035554.tif 000035
すなわち、少なくとも１つのｉについて、クライアントの単語Ｘｉは、記憶されている単語Ｙｊとｔ−ファジーである。
【数３１】
2016035554.tif 000036
すなわち、すべてのｉについて、クライアントの単語Ｘｉは記憶されている単語Ｙｊとｔ−ファジーでない、すなわち、クライアントの単語のいずれとサーバのデータセットのｎ番目の単語との間にもファジー一致がない。
【００７９】
事例１）：
【数３２】
2016035554.tif 000037
【００８０】
その後、クライアントが難読化ベクトル｛Ｙｊ｝Ｋを受信し、これを解読し、クライアントの単語ベクトルの１つとｔ−ファジーであるため、この結果を出力に加える。
【００８１】
事例２）：
クライアントが難読化ベクトル
【数３３】
2016035554.tif 000038
を受信し、ｒｎｄは、ランダムベクトルｒを乗算することによって形成されるランダムベクトルである。この二重積は零ベクトルではないため、クライアントは大きいランダムベクトルであるように見えるものを解読し、ここからＹｊを解読することはできない。ランダムｒｎｄがＡＴにおいて正確なｔ−ｆｕｚｚｙ要素を生成する確率はごくわずかである。それゆえ、誤検出の可能性はごくわずかである。それゆえ、このベクトルは出力８０に加えられない。
【００８２】
クライアントは、解読された難読化ベクトルに対するハミング距離をクライアントデータセットの各単語と比較することによって、単純なチェックを行うことができる。たとえば、入力データセットが「ｃａｂ」に対応し、解読されたベクトルの１つが「ｃａｒ」である場合、ｔ＝１であるときにｔ−ファジー一致が見つかる。クライアントはサーバ側で使用されるものとは異なるｔの値を使用し得るが、例示的な実施形態においては、同じ値が使用される。
【００８３】
Ｓ１３６において、クライアントデバイスが、ファジーマッチングの結果またはそれに基づく情報を出力する。たとえば、クライアントデバイスは、ファジー一致したＸｉのセットを返してもよい。別の実施形態において、ナンバープレートの例におけるように、ファジー一致が見つかった場合、クライアントは単純に、一致が見つかったことを示すための正の値、そうでない場合の負の値を出力してもよい。他の実施形態において、この結果は、ナンバープレートの例の場合の、駐車場ビルへのアクセスを提供すること、ナンバープレートと関連付けられる人に請求を行うことなど、または、生体認証スキャンの場合のアクセスを提供することのような、プロセスを実施するのに使用される。
【００８４】
方法は、Ｓ１３８において終了する。
【００８５】
ここで、例示のために、アルゴリズムの例示的な実施態様を示す。
Ｔ＝３、Ｄ＝４、ｍ＝２およびｎ＝３の例
【００８６】
例として、アルゴリズムの使用の一例が与えられる。各単語内の文字の数Ｔ＝３とし、アルファベット内の文字の数Ｄ＝４（文字はａ、ｂ、ｃ、ｄである）、クライアントのセット内の単語の数ｍ＝２とし、サーバのセット内の単語の数ｎ＝３とする。Ｘ＝（´ｃａｂ´，´ａｂｃ´）およびＹ＝（´ｃａｄ´，´ｄｄｄ´，´ａｃｂ´）とする。ファジー度閾値ｔ＝２とする、すなわち、単語内で異なるのがわずか１文字であれば、一致が見つかり得る。このとき、出力は
【数３４】
2016035554.tif 000039
となるはずである。このアルゴリズムに従って、データは以下のように表される。
【数３５】
2016035554.tif 000040
【００８７】
その後、クライアントは、｛Ｘ１｝Ｋ、｛Ｘ２｝Ｋ、およびＫをサーバに送信する。サーバは、｛Ｙ１｝Ｋ、｛Ｙ２｝Ｋ、｛Ｙ３｝Ｋを計算する。その後、サーバは、すべてのベクトル間のハミング距離を計算する。一例として、｛Ｘ１｝Ｋおよび｛Ｙ１｝Ｋについて、
【数３６】
2016035554.tif 000041
【００８８】
その後、第１のフェーズにおいて、
【数３７】
2016035554.tif 000042
【００８９】
結果は以下のとおりである。
【数３８】
2016035554.tif 000043
【００９０】
したがって、ハミング距離が１であるため、Ｘ１、Ｙ１はファジー一致である。
【００９１】
第２のフェーズにおいて、式４がすべての結果について計算される。積の第２の部分Ｔ−ｔ＝１について、そのため、ｗは０および１のユニタリベクトルを使用する。
【００９２】
Ｙ１の例。サーバは以下を返す。
【数３９】
2016035554.tif 000044
【００９３】
Ｙ２およびＹ３について、ランダムベクトルは相殺されないことに留意されたい。サーバはベクトル｛（３，１，４）｝Ｋ、｛（ｒ１，ｒ２，ｒ３）｝Ｋ、｛（ｒ４，ｒ５，ｒ６）｝Ｋを送信し、ここで、ｒ１、ｒ２、ｒ３などは、結果もたらされるランダムベクトルの要素である。
【００９４】
クライアントはこれらの暗号化ベクトルを受信し、これらを解読する。解読されたベクトルは、平文がｔ−ファジーである場合、クライアントのセットの平文に対してチェックされる。第１のベクトルのみが出力（３，１，４）＝（´ｃａｄ´）内に保持される。諒解されるように、解読されたベクトルが長いランダムな文字列である場合、短いベクトルのみが一致である可能性があるため、クライアントは比較を実施する必要はない。
【００９５】
アルゴリズムの複雑度は、以下のように求めることができる。通信および計算複雑度について、主要な項のみが保持される。
【００９６】
１．設定：（ｎ＋ｍ）Ｄ回の暗号化、ｍＤ個の暗号化ベクトルの転送。
【００９７】
２．フェーズ１：ｎｍ（２Ｄ＋２Ｔ−３）回の演算。
【００９８】
３．フェーズ２：ｎ（ｍ（２ｔ−１）＋２）回の演算、ｎ個の暗号化ベクトルの転送。
【００９９】
４．検証：ｎ回の解読、その後ｎ＊ｍ回の演算。
【０１００】
ｎ＝ｍ（各セット内の要素の数）、および
【数４０】
2016035554.tif 000045
を考えると、表３に示す複雑度が得られる。ｌｐｋは、選択される暗号化方式による基本要素の暗号文サイズであり、ｔはファジー度閾値であり、Ｔは単語のサイズであり、Ｔ´εは準同型演算の組合せに必要とされる時間である。これらの複雑度が、なおセキュアと考えられる２つの既存のプロトコルのものと比較される。
【表３】
2016035554.tif 000046
【０１０１】
０の表記の非公式な定義が、比較を容易にするために使用されている。本発明のプロトコルが、より効率的である。
【０１０２】
複雑度を低減するために、いくつかの最適化が実施され得る。例として、
【０１０３】
１）ハミング距離計算フェーズの間、ｄが少なくとも１つの「１」を含む場合、サーバは、ｄのベクトルを乗算すれば十分である。その理由は、そうでない場合、積は空値になり、したがって、何の情報ももたらさないためである。Ｔ＜Ｄ（実際の事例ではほんの数例しかこの特性を検証することにならない）である場合、これによってＤ／Ｔ倍複雑度が低減する。そうでない場合、データを表すためにアルファベットがどのように使用されるかに応じて、ほんのいくつかの乗算が行われなくなる。
【０１０４】
【数４１】
2016035554.tif 000047
である場合、最適化は、ハミング距離の逆（２単語間の同様の文字の数に対応する）を使用することになる。このとき、式４において、
【数４２】
2016035554.tif 000048
の代わりに
【数４３】
2016035554.tif 000049
を使用することができる、すなわち、以下のようになる。
【数４４】
2016035554.tif 000050
したがって、複雑度が改善される。
【０１０５】
３）暗号化のためのパラメータを選択するときに、得られるフィールドが２Ｔ個を超えるパラメータを有する場合、サーバによって送信されるデータのサイズを低減することができる。事実、乗法マスクを使用して、２つ以上のＹを各ベクトルに記憶することができる。たとえば、操作されているベクトルのサイズが５Ｔである場合、データのうちの５をすべてのベクトルに記憶することができる。このとき、通信複雑度はサーバの部分で５だけ低減される。
【０１０６】
完全準同型暗号化は、暗号文のサイズおよび演算を計算するための時間のような、いくつかの制約を有することが知られている。これらのパラメータの両方を改善することができる方法が存在する（たとえば、Ｙｉｎ  Ｈｕ「Ｉｍｐｒｏｖｉｎｇ  ｔｈｅ  Ｅｆｆｉｃｉｅｎｃｙ  ｏｆ  Ｈｏｍｏｍｏｒｐｈｉｃ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｃｈｅｍｅｓ」（ＰｈＤ  ｔｈｅｓｉｓ，  Ｖｉｒｇｉｎｉａ  Ｔｅｃｈ，  ２０１３）参照）。実施態様の最適化は、制限された数の演算がサポートされている（たとえば、特定の深度の回路を評価する）準完全準同型暗号化（ＳＷＨＥ）暗号化方式（たとえば、Ｂｏｎｅｈ他「Ｐｒｉｖａｔｅ  Ｄａｔａｂａｓｅ  Ｑｕｅｒｉｅｓ  Ｕｓｉｎｇ  Ｓｏｍｅｗｈａｔ  Ｈｏｍｏｍｏｒｐｈｉｃ  Ｅｎｃｒｙｐｔｉｏｎ」（ＡＣＮＳ  ２０１３：  １０２−１１８  （２０１３）参照）、または、寸法低減のためのＬＳＨ関数を使用することによって達成され得る。
【０１０７】
図２に示す方法は、コンピュータ上で実行されてもよいコンピュータプログラム製品内に実装されてもよい。コンピュータプログラム製品は、ディスク、ハードドライブなどのような、制御プログラムが記録（記憶）されている持続性コンピュータ可読記録媒体を含んでもよい。一般的な形態の持続性コンピュータ可読媒体は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または任意の他の磁気記憶媒体、ＣＤ−ＲＯＭ、ＤＶＤ、または任意の他の光媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、または他のメモリチップもしくはカートリッジ、あるいはコンピュータが読み出し使用することができる任意の他の持続性媒体を含む。
【０１０８】
代替的に、本方法は、無線波および赤外線データ通信などの間に生成されるもののような、音響波または光波のような伝送媒体を使用してデータ信号として制御プログラムが具現化される伝送可能な搬送波のような、一時的媒体において実施されてもよい。
【０１０９】
例示的な方法は、１つまたは複数の汎用コンピュータ、専用コンピュータ（複数の場合もあり）、プログラムされているマイクロプロセッサもしくはマイクロコントローラおよび周辺集積回路要素、ＡＳＩＣもしくは他の集積回路、デジタル信号プロセッサ、個別素子回路のような配線電子装置もしくは論理回路、ＰＬＤ、ＰＬＡ、ＦＰＧＡのようなプログラム可能論理デバイス、グラフィックカードＣＰＵ（ＧＰＵ）、またはＰＡＬなどで実施されてもよい。一般に、図２に示す流れ図を実施することが可能である有限状態機械を実装することが可能な任意のデバイスを、本方法を実施するのに使用することができる。諒解されるように、本方法のステップはすべてコンピュータ実施されてもよいが、いくつかの実施形態において、これらステップの１つまたは複数は、少なくとも部分的に手動で実行されてもよい。
【０１１０】
例示的な実施形態の範囲を制限することを意図せず、以下の例は、本システムのプロトタイプ実施態様を示す。
【実施例】
【０１１１】
Ｌｉｎｕｘ（登録商標）環境におけるクライアントとサーバとの間でＣＦＰＭ−ＦＨＥプロトコルの１バージョンが実装された。クライアントおよびサーバの命令はＣ＋＋で書かれ、表４に示す同じ特性を有する２つの異なる機械上に展開されている。
【表４】
2016035554.tif 000051
【０１１２】
クライアントおよびサーバのセットはファイルに記憶され、通信はｒａｗ  ｓｏｃｋｅｔを使用して行われ、使用されているＦＨＥライブラリはＨＥＬｉｂである（Ｓｈａｉ  Ｈａｌｅｖｉ他「Ｈｅｌｉｂ」（ＧｉｔＨｕｂ  ｈｔｔｐｓ：／／ｇｉｔｈｕｂ．ｃｏｍ／ｓｈａｉｈ／ＨＥｌｉｂ上で公開されているＧＰＬソースコード（２０１３）））。この例におけるアルゴリズムに関して、またはＣ＋＋コア（マルチスレッド要素の使用）に関する最適化は行われなかった。Ｈｅｌｉｂ方式は、準同型評価の実行をより高速にするための最適化を行い、主にＳｍａｒｔ−Ｖｅｒｃａｕｔｅｒｅｎ暗号文パッキング技法（Ｓｍａｒｔ他「Ｆｕｌｌｙ  Ｈｏｍｏｍｏｒｐｈｉｃ  ＳＩＭＤ  Ｏｐｅｒａｔｉｏｎｓ」（Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：  Ｒｅｐｏｒｔ  ２０１１／１３３  （２０１１）））およびＧｅｎｔｒｙ−Ｈａｌｅｖｉ−Ｓｍａｒｔ最適化（Ｇｅｎｔｒｙ他「Ｈｏｍｏｍｏｒｐｈｉｃ  Ｅｖａｌｕａｔｉｏｎ  ｏｆ  ｔｈｅ  ＡＥＳ  Ｃｉｒｃｕｉｔ」（Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：  Ｒｅｐｏｒｔ  ２０１２／０９９  （２０１２）））の効果的な使用に焦点を当てたＢＧＶを採用している。Ｈｅｌｉｂアルゴリズムに使用されたパラメータは、ｐ＝２５７、Ｌ＝３２、ｃ＝３、ｄ＝１、ｒ＝１、Ｍ＝２３３７７であった。
【０１１３】
アルゴリズムの有効性および正確性をチェックすること以外の主な目標は、データ空間および計算に関して所与の複雑度を実験的に検証することであった。
【０１１４】
表５は、ＨＥＬｉｂを使用した暗号化データサイズに対するいくつかの測定基準、および、同じレベルのセキュリティを使用した、ＲＳＡ暗号システムとの比較（ＡＥＳ１２８ビット鍵、またはＲＳＡ２０４８ビット鍵と等価な１１２ビットのセキュリティが与えられている）を提供する。
【表５】
2016035554.tif 000052
【０１１５】
表６において、鍵生成時間から準同型演算の結果の解読までのＨＥＬｉｂの計算コストに関するいくつかの測定基準が示されている。
【表６】
2016035554.tif 000053
【０１１６】
実験結果
ＣＦＰＭ−ＦＨＥプロトコルによって生成されたデータサイズの変動（すなわち、ｍ、ｎおよびＴの値を変更するときのＧｂ単位の通信コスト）が図３〜図５に示されている。図３は、ｍ、すなわちクライアントのセットサイズに対する計算時間を示す。図４は、ｎ、すなわちサーバのセットサイズに対する計算時間を示す。図５は、Ｔ、すなわち単語サイズに対する計算時間を示す。
【０１１７】
ｍ、ｎおよびＴの値を変更するときの計算コスト（データサイズ）の変動が図６〜図８に示されている。図６は、ｍ、すなわちクライアントのセットサイズに対する計算コストを示す。図７は、ｎ、すなわちサーバのセットサイズに対する計算コストを示す。図８は、Ｔ、すなわち単語サイズに対する計算コストを示す。
【０１１８】
これらの観測は、プロトコル複雑度の理論的分析と一致する。
【０１１９】
このプロトタイプ例において、ファイルがデータを交換する手段として使用された。入力および出力動作は効率的ではないが、視覚的に例証的であるという利点を有する。別の実施態様（Ｈｅｌｉｂを使用する）において、バイトのダイレクトバッファがサーバに送信されており、これは計算および転送時間を劇的に改善する。同じことがこの実施態様によって行われ得ると仮定することができる。
【０１２０】
この特定の実施態様において、スレッドは使用されなかった。その主な理由は、本発明の計算複雑度の有効性をチェックするためであった。しかしながら、性能を向上させるために並列化が使用され得る。アルゴリズムはサーバベクトルに同じ計算を適用することによって動作するため、本発明の動作の大部分は並列化することができる。このタスクは、ｎ個のプロセッサの間で容易に分散することができ、したがって、サーバの計算時間がｎ分の１に低減される。
【０１２１】
複雑度を低減するために、いくつかの最適化も行われ得る。
【０１２２】
他の実験において、ハミング距離の計算の最適化が評価された。上記の例と同じクライアント−サーバアーキテクチャが使用された。たとえば、圧縮されたバッファを転送し、ファイルの使用を可能な限り低減することによって、計算時間および転送時間が１０ｓから１２０ｍｓへと１００倍改善された。これらの結果は、性能の改善を得ることが可能であることを示している。これらの最適化は、小さく見え得るが、動作の数を低減することによって、より小さいパラメータを暗号システムに使用すること、および、基本動作時間を改善することが可能になる。
【０１２３】
Ｈｅｌｉｂは依然として相対的に新しいライブラリであり、まだＢＧＶに記載されているすべての機能が実装されているわけではない。たとえば、モジュラ簡約化、すなわち、係数にわたる暗号文のノイズの低減は、利用可能でない。本実装例について、これは、生成される最大量のノイズを考慮に入れる必要があり、そのようなノイズとともに解読することが可能であるパラメータが使用されることを意味する。このライブラリの次の実装は、より小さいパラメータを用いて動作することが可能になるため、計算時間をさらに改善することになる。代替的には、専用のライブラリが利用されてもよい。
【図１】
2016035554.tif 000054
【図２】
2016035554.tif 000055
【図３】
2016035554.tif 000056
【図４】
2016035554.tif 000057
【図５】
2016035554.tif 000058
【図６】
2016035554.tif 000059
【図７】
2016035554.tif 000060
【図８】
2016035554.tif 000061