(57)【要約】【課題】秘匿化パターンマッチングにおける処理負荷を軽減することを課題とする。【解決手段】暗号文処理装置は、第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、第１のテキストデータの各成分の２乗値ベクトルデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の２乗値多項式とを取得する。暗号文処理装置は、第２のテキストデータが第２の順で多項式化されて第１の公開鍵で暗号化された第２の多項式と、第２のテキストデータの各成分の２乗値ベクトルデータが第２の順で多項式化されて第１の公開鍵で暗号化された第２の２乗値多項式とを取得する。暗号文処理装置は、第１の多項式および第１の２乗値多項式と、第２の多項式および第２の２乗値多項式とを用いて、第２のテキストデータが第１のテキストデータに含まれるかを判定する。【選択図】図３
2015184594.tif 000002
【特許請求の範囲】
【請求項１】
第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、前記第１のテキストデータの各成分の２乗値ベクトルデータが前記第１の順で多項式化されて前記第１の公開鍵で暗号化された第１の２乗値多項式とを取得する第１の取得部と、
第２のテキストデータが第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の多項式と、前記第２のテキストデータの各成分の２乗値ベクトルデータが前記第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の２乗値多項式とを取得する第２の取得部と、
前記第１の多項式および前記第１の２乗値多項式と、前記第２の多項式および前記第２の２乗値多項式とを用いて、前記第２のテキストデータが前記第１のテキストデータに含まれるかを判定する判定部と
を有することを特徴とする暗号文処理装置。
【請求項２】
前記判定部は、前記第１のテキストデータの数値ベクトルの各要素が前記第１の順における計数として表される前記第１の多項式および前記第１の２乗値多項式と、前記第２のテキストデータの数値ベクトルの各要素が前記第２の順における計数として表される前記第２の多項式および前記第２の２乗値多項式とを用いて、ベクトル空間のノルム距離を算出することを特徴とする請求項１に記載の暗号文処理装置。
【請求項３】
前記第１の公開鍵で暗号化された判定結果を、前記第１の公開鍵に対応する第１の秘密鍵を有する端末装置に送信する送信部をさらに有することを特徴とする請求項１または２に記載の暗号文処理装置。
【請求項４】
コンピュータが、
第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、前記第１のテキストデータの各成分の２乗値ベクトルデータが前記第１の順で多項式化されて前記第１の公開鍵で暗号化された第１の２乗値多項式とを取得し、
第２のテキストデータが第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の多項式と、前記第２のテキストデータの各成分の２乗値ベクトルデータが前記第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の２乗値多項式とを取得し、
前記第１の多項式および前記第１の２乗値多項式と、前記第２の多項式および前記第２の２乗値多項式とを用いて、前記第２のテキストデータが前記第１のテキストデータに含まれるかを判定する
処理を含んだことを特徴とする暗号文処理方法。
【請求項５】
コンピュータに、
第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、前記第１のテキストデータの各成分の２乗値ベクトルデータが前記第１の順で多項式化されて前記第１の公開鍵で暗号化された第１の２乗値多項式とを取得し、
第２のテキストデータが第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の多項式と、前記第２のテキストデータの各成分の２乗値ベクトルデータが前記第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の２乗値多項式とを取得し、
前記第１の多項式および前記第１の２乗値多項式と、前記第２の多項式および前記第２の２乗値多項式とを用いて、前記第２のテキストデータが前記第１のテキストデータに含まれるかを判定する
処理を実行させることを特徴とする暗号文処理プログラム。
【請求項６】
第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、前記第１のテキストデータの各成分の２乗値ベクトルデータが前記第１の順で多項式化されて前記第１の公開鍵で暗号化された第１の２乗値多項式とを保持する暗号文処理装置に対して、第２のテキストデータが第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の多項式と、前記第２のテキストデータの各成分の２乗値ベクトルデータが前記第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の２乗値多項式とを含む送信する送信部と、
前記第２のテキストデータが前記第１のテキストデータに含まれるかを示す前記第１の公開鍵で暗号化された判定結果を前記暗号文処理装置から取得し、前記第１の公開鍵に対応する第１の秘密鍵で復号する復号部と、
前記復号部によって得られた復号結果から、前記第２のテキストデータが前記第１のテキストデータに含まれるかを判定する判定部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
現在、個人情報や機密情報を保護する規制が強化される一方で、それらの情報を利用したサービスの市場が拡大しつつある。また、個人情報や機密情報を保護したままデータの利活用ができる秘匿化技術が利用されている。秘匿化技術の中には、データ種別やサービス要件に応じて、暗号技術や統計技術を使った技術がある。
【０００３】
暗号技術を用いた秘匿化技術として準同型暗号技術が知られている。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の１つであり、暗号化したままデータを操作できる暗号技術である。例えば、平文ｍ１及びｍ２に対して、加算又は乗法に関する準同型暗号方式の暗号化関数をＥとすると、以下の式（１）又は（２）の性質が成り立つ。
（１）Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）
（２）Ｅ（ｍ１）＊Ｅ（ｍ２）＝Ｅ（ｍ１＊ｍ２）
（１）式が成り立つものを加算について準同型と呼び、（２）式が成り立つものを乗算について準同型と呼ぶ。
【０００４】
準同型暗号方式を用いれば、暗号文の加算や乗算により、暗号文を復号することなく、加算や乗算を行った演算結果の暗号文を得ることができる。この準同型暗号の性質は、電子投票や電子現金などの分野やクラウドコンピューティング分野において利用される。なお、準同型暗号方式としては、乗算に利用されるＲＳＡ（Rivest  Shamir  Adleman）暗号方式や加算に利用されるAdditive  ElGamal暗号方式が代表的である。
【０００５】
近年では、加算と乗算の両方に利用することができる準同型暗号方式が知られており、加算と乗算の両方に利用でき、かつ、処理性能と暗号データサイズの両面で実用的な準同型暗号方式も知られている。
【０００６】
ここで、一例として準同型暗号方式について説明する。まず、暗号鍵生成について、主に３つの鍵生成パラメータ（ｎ，ｑ，ｔ）を用意する。ｎは２冪の整数で格子次元と呼ばれ、ｑは素数、ｔは素数ｑよりも小さい整数とする。暗号鍵生成の手順としては、まず秘密鍵として各係数が非常に小さいｎ次元の多項式ｓｋをランダムに生成する。なお、各係数の小ささは、あるパラメータσで制限される。次に、各係数がｑより小さいｎ次元多項式ａ１と各係数が非常に小さいｎ次元多項式ｅをランダムに生成する。
【０００７】
そこで、ａ０＝−（ａ１＊ｓｋ＋ｔ＊ｅ）を計算し、組（ａ０，ａ１）を公開鍵ｐｋと定義する。但し、ａ０の多項式計算時において、ｎ次以上の多項式に対してｘｎ＝−１，ｘｎ＋１＝−ｘ，．．．と計算することで、絶えずｎ次より小さい多項式を計算する。さらに、多項式の係数については、素数ｑで割った余りを出力する。なお、このような演算を行う空間を、学術的にはＲｑ：＝Ｆｑ［ｘ］／（ｘｎ＋１）と表すことが多い。
【０００８】
次に、各係数がｔより小さいｎ次多項式で表される平文データｍと公開鍵ｐｋ＝（ａ０，ａ１）に対して、各係数が非常に小さい３つのｎ次元多項式ｕ，ｆ，ｇをランダムに生成し、平文データｍの暗号データＥ（ｍ，ｐｋ）＝（ｃ０，ｃ１）を次のように定義する。（ｃ０，ｃ１）については、ｃ０＝ａ０＊ｕ＋ｔ＊ｇ＋ｍ、ｃ１＝ａ１＊ｕ＋ｔ＊ｆと計算する。なお、これらの計算も空間Ｒｑ上での演算を行う。
【０００９】
そして、２つの暗号文Ｅ（ｍ１，ｐｋ）＝（ｃ０，ｃ１）と、Ｅ（ｍ２，ｐｋ）＝（ｄ０，ｄ１）に対して、暗号加算Ｅ（ｍ１，ｐｋ）＋Ｅ（ｍ２，ｐｋ）を（ｃ０＋ｄ０，ｃ１＋ｄ１）と計算し、暗号乗算Ｅ（ｍ１，ｐｋ）＊Ｅ（ｍ２，ｐｋ）を（ｃ０＋ｄ０，ｃ０＊ｄ１＋ｃ１＊ｄ０，ｃ１＊ｄ１）と計算する。このように暗号乗算を行うと、暗号文のデータサイズが２成分ベクトルから３成分ベクトルになることに注意する。
【００１０】
最後に、復号処理であるが、暗号文ｃ＝（ｃ０，ｃ１，ｃ２，．．．）に対して（ここでは複数の暗号乗算などの暗号操作により暗号文データの成分が増大したと仮定している）、秘密鍵ｓｋを用いてＤｅｃ（ｃ，ｓｋ）＝［ｃ０＋ｃ１＊ｓｋ＋ｃ２＊ｓｋ2＋・・・］ｑ  ｍｏｄ  ｔを計算することで、復号する。ここで、［ｚ］ｑの値は、整数ｚをｑで割った余りｗを計算し、ｗ＜ｑならば［ｚ］ｑ＝ｗを出力し、ｗ≧ｑの場合には［ｚ］ｑ＝ｗ−ｑを出力する。さらに、ａ  ｍｏｄ  ｔは整数ａをｔで割った余りを意味する。
【００１１】
以下、分かりやすくするために数値例を示しておく。
秘密鍵ｓｋ＝Mod（Mod（4，1033）＊ｘ3＋Mod（4，1033）＊ｘ2＋Mod（1，1033）*ｘ，ｘ4＋１）
公開鍵ｐｋ＝（ａ０，ａ１）
ａ０＝Mod（Mod（885，1033）＊ｘ3＋Mod（519，1033）＊ｘ2＋Mod（621，1033）＊ｘ＋Mod（327，1033），ｘ4＋１）
ａ１＝Mod（Mod（661，1033）＊ｘ3＋Mod（625，1033）＊ｘ2＋Mod（861，1033）＊ｘ＋Mod（311，1033），ｘ4＋１）
Ｅ（ｍ，ｐｋ）＝（ｃ０，ｃ１）
平文データｍ＝３＋２ｘ＋２ｘ2＋２ｘ3とする。
ｃ０＝Mod（Mod（822，1033）＊ｘ3＋Mod（1016，1033）＊ｘ2＋Mod（292，1033）＊ｘ＋Mod（243，1033），ｘ4＋１）
ｃ１＝Mod（Mod（840，1033）＊ｘ3＋Mod（275，1033）＊ｘ2＋Mod（628，1033）＊ｘ＋Mod（911，1033），ｘ4＋１）
【００１２】
なお、上記値において、鍵生成パラメータ（ｎ，ｑ，ｔ）については、（４，１０３３，２０）と設定した。さらに、Mod（ａ，ｑ）は整数ａを素数ｑで割った余りを意味し、Mod（ｆ（ｘ），ｘ４＋１）は多項式ｆ（ｘ）を多項式ｘ4＋１で割った余りの多項式を意味する。但し、ｘ４＝−１、ｘ５＝ｘ，．．．などを意味するものとする。
【００１３】
準同型暗号方式の応用例として、秘匿パターンマッチングがある。図６を用いて、秘匿パターンマッチングを説明する。図６は、パターンマッチングを説明する図である。まず、パターンマッチングとは、テキスト文字列の中にパターン文字列があるか判定する処理で、例えばテキスト文字列Ｔ＝“acbabbaccb”の中に、パターン文字列Ｐ＝“abbac”があるか判定する処理である。
【００１４】
このとき、図６にあるように、テキスト文字列Ｔに対して、パターン文字列を１文字ずつずらしながら、テキストとパターンが一致する個数を算出する。なお、図６では、スコアベクトルと呼ぶ。そこで、スコアベクトルと呼ばれる複数の距離を計算し、今回の例ではパターン文字列Ｐの長さが５なので、スコアベクトルの値が５の成分のところで、一致することがわかる。このように、暗号化なしのパターンマッチングでは、テキスト文字列Ｔとパターン文字列Ｐに対して、パターン文字列Ｐを１文字ずつずらしながらテキスト文字列との距離を計算していく。
【００１５】
準同型暗号を利用した秘匿パターンマッチングでは、テキスト文字列Ｔとパターン文字列Ｐを準同型暗号で暗号化した状態で、複数の距離を計算していく。ここでは、図６に示すように、テキスト文字列Ｔを持つ情報登録者、パターン文字列Ｐを持つ照合者、秘匿パターンマッチングにおける暗号距離計算を行うクラウドの３者における秘匿パターンマッチング計算モデルを考える。
【００１６】
まず、照合者は、準同型暗号の鍵生成を行い公開鍵と秘密鍵を生成し、公開鍵のみを公開する。ここでは、情報登録者とクラウドに公開する。そのあと、情報提供者は、照合者から送られた公開鍵を用いて、自身が持つテキスト文字列Ｔを準同型暗号で暗号化し、その暗号化テキストＥ（Ｔ）をクラウド内のデータベースに保存しておく。
【００１７】
照合者は、パターン文字列Ｐがあるか照合するために、パターン文字列Ｐを準同型暗号化し、暗号化パターンＥ（Ｐ）のみをクラウドに送信する。クラウドは、暗号化テキストＥ（Ｔ）と暗号化パターンＥ（Ｐ）に対して、ＴとＰに関する複数の距離を暗号化したまま計算し、その暗号化計算結果のみを照合者に送信する。照合者は、クラウドから送信された暗号化計算結果を自身が持つ秘密鍵を用いて復号し、復号結果からパターンＰがテキストＴに含まれるか判定することができる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２０００−１８１４８６号公報
【特許文献２】特開２００９−２７１５８４号公報
【非特許文献】
【００１９】
【非特許文献１】C.  Gentry,  “Fully  Homomorphic  encryption  using  ideal  lattices”,  STOC  2009，ACM，pp.169−178，  2009．
【非特許文献２】K.  Lauter，M．Naehrig  and  V．Vaikuntanathan，  “Can  Homomorphic  Encryption  be  Practical？”，In  ACM  workshop  on  Cloud  Computing  Security  Workshop−CCSW  2011，  ACM，  pp.113−124，2011．
【発明の概要】
【発明が解決しようとする課題】
【００２０】
上述したクラウドを用いた秘匿パターンマッチングでは、クラウド上では暗号化した状態ですべての処理が行えるので、情報登録者と照合者のデータを開示することがない。このため、安全性が強固ではないクラウドなどの環境であっても、パターンマッチング処理がアウトソーシングできる。
【００２１】
その一方で、暗号化したまま秘匿パターンマッチングを実行するので、単純に準同型暗号方式をパターンマッチングに適用するだけでは、データ量や計算負荷の点で実用的ではなく、処理に時間がかかる。
【００２２】
なお、ここで説明したクラウド秘匿パターンマッチングの具体的な応用例として、キーワードやＷｅｂなどの秘匿情報検索、犯罪捜査や血縁関係判定で利用される秘匿ＤＮＡ鑑定、肥満遺伝子や感染症検査で利用される秘匿遺伝子検査などがある。
【００２３】
１つの側面では、秘匿化パターンマッチングにおける処理負荷を軽減することができる暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００２４】
第１の案では、暗号文処理装置は、第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、前記第１のテキストデータの各成分の２乗値ベクトルデータが前記第１の順で多項式化されて前記第１の公開鍵で暗号化された第１の２乗値多項式とを取得する第１の取得部を有する。暗号文処理装置は、第２のテキストデータが第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の多項式と、前記第２のテキストデータの各成分の２乗値ベクトルデータが前記第２の順で多項式化されて前記第１の公開鍵で暗号化された第２の２乗値多項式とを取得する第２の取得部を有する。暗号文処理装置は、前記第１の多項式および前記第１の２乗値多項式と、前記第２の多項式および前記第２の２乗値多項式とを用いて、前記第２のテキストデータが前記第１のテキストデータに含まれるかを判定する判定部を有する。
【発明の効果】
【００２５】
１実施形態によれば、秘匿化パターンマッチングにおける処理負荷を軽減することができる。
【図面の簡単な説明】
【００２６】
【図１】図１は、暗号距離計算を解説する図である。
【図２】図２は、実施例２に係るシステムの全体構成例を示す図である。
【図３】図３は、実施例２に係る各装置の機能構成を示す機能ブロック図である。
【図４】図４は、実施例２に係るシステムが実行する処理のシーケンス図である。
【図５】図５は、ハードウェア構成例を示す図である。
【図６】図６は、パターンマッチングを説明する図である。
【発明を実施するための形態】
【００２７】
以下に、本願の開示する暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００２８】
まず、バイナリ化したテキストデータを用いて、秘匿パターンマッチング計算について説明する。準同型暗号を利用した秘匿パターンマッチング計算においては、データサイズや距離計算コストを削減するために、バイナリ化したテキストの各ビットを次数について昇順で係数に用いることで表される多項式を求め、多項式演算可能な同準型暗号方式で暗号化する。一方、バイナリ化したパターンの各ビットを次数について降順で係数に用いることで表される多項式を求め、同じ準同型暗号方式で暗号化する。
【００２９】
そして、準同型暗号で暗号化されたテキスト多項式及びパターン多項式に対して、多項式上の準同型性を利用して、各係数が、テキストとパターンとのハミング距離になるような暗号演算を実施する。その後、暗号演算結果を復号することで得られる多項式の各係数からハミング距離を特定し、ハミング距離が０となっているか否かを判定する。このようにすることで、秘匿パターンマッチング計算が行われる。
【００３０】
具体的には、バイナリ化した長さｋのテキスト（バイナリベクトルとも呼ぶ）Ｔ＝（ｔ0，ｔ1，...，ｔk-1）に対して、各ビットを昇順で係数として用いる多項式ｍt（Ｔ）＝Σiｔiｘiを生成し、これに対して上で述べた準同型暗号方式により、暗号化テキストＥｎｃ（ｍt（Ｔ），ｐｋ）を生成する。これによって、テキストＴは秘匿化される。
【００３１】
一方、バイナリ化した長さｌのパターンＰ＝（ｐ0，ｐ1，...，ｐl-1）に対して、各ビットを降順に係数として用いる多項式ｍp（Ｐ）＝−Σjｐjｘn-jを生成し、それを上で述べた準同型暗号方式により暗号化パターンＥｎｃ（ｍp（Ｐ），ｐｋ）を生成する。これによって、パターンＰは秘匿される。
【００３２】
次に、暗号化されたテキストＥｎｃ（ｍt（Ｔ），ｐｋ）とパターンＥｎｃ（ｍp（Ｐ），ｐｋ）に対して、暗号化距離計算を以下のように実行する。
Ｅｎｃ（ｍt（Ｔ），ｐｋ）＊Ｃl＋Ｅｎｃ（ｍp（Ｐ），ｐｋ）＊Ｃk−２Ｅｎｃ（ｍt（Ｔ），ｐｋ）＊Ｅｎｃ（ｍp（Ｐ），ｐｋ）  （３）
【００３３】
ここで、Ｃlは長さｌの降順の多項式を含む元であり、Ｃkは長さｋの昇順の多項式を含む元であり、以下のように表される。
Ｃl＝（−Σjｘn-j，０）  （４）
Ｃk＝（Σiｘi，０）      （５）
【００３４】
（３）式で得られた暗号化距離計算結果を復号した結果をｒ0＋ｒ1ｘ＋ｒ2ｘ2＋・・・＋ｒn-1ｘn-1（係数がパラメータｔ以下のｎ次多項式で表される）としたとき、０≦ｉ≦ｋ−ｌに対してｉ次の係数ｒiは、ｉ番目のビットを先頭とする部分テキストＴ(i)とパターンＰのハミング距離ｄ（Ｔ(i)，Ｐ）と一致する。従って、復号結果ｒ0＋ｒ1ｘ＋ｒ2ｘ2＋・・・＋ｒn-1ｘn-1からパターンＰがテキストＴのどの部分に含まれるかは、係数が０となる次数を特定すればよい。すなわち、テキストＴとパターンＰを準同型暗号で秘匿したまま計算することが可能となる。
【００３５】
ここで、本実施の形態に係る秘匿パターンマッチング計算の考え方を、図１を用いて示しておく。平文空間において、多項式の各係数がハミング距離ｄ（Ｔ(i)，Ｐ）になるようにするには、以下のような演算を行うことになる。
Σi（ＨＷ（Ｔ(i)）＋ＨＷ（Ｐ）−２＜Ｔ(i)，Ｐ＞）ｘi    （６）
なお、ＨＷ（Ａ）はＡのハミング重みを表し、＜Ａ，Ｂ＞はＡとＢとの内積計算を表す。
【００３６】
（６）式におけるΣiＨＷ（Ｔ(i)）ｘiは、図１（Ａ）に示すように、ｍt（Ｔ）＊（−Σjｘn-j）である。また、（６）式におけるΣiＨＷ（Ｐ）ｘiは、図１（Ｂ）に示すようにｍp（Ｐ）＊（Σiｘi）である。さらに、（６）式におけるΣi＜Ｔ(i)，Ｐ＞ｘiは、図１（Ｃ）に示すように、ｍt（Ｔ）＊ｍp（Ｐ）である。
【００３７】
そうすると、図１（Ａ）乃至（Ｃ）に示すように、各平文演算に対して、暗号文空間における対応する暗号演算が得られる。従って、結果として、図１（Ｄ）のように、（３）式に示すような暗号演算を実行することで、復号化すれば係数がハミング距離となるような演算がなされたことになる。
【００３８】
但し、平文多項式上の演算は、ｎ次以上の多項式に対してｘn＝−１，ｘn+1＝−ｘ，．．．と計算することで、絶えずｎ次以下の多項式を計算し、ｎ次以下の各多項式の係数については、パラメータｔで割った余りを出力するようにする。このような演算を行う空間を、Ｒt＝Ｆｑ［ｘ］／（ｘn＋１）と表すことが多い。
【００３９】
ここで、本実施の形態に係る演算の数値例を示しておく。バイナリ化された長さｋ＝８のテキストＴ＝（１，１，０，１，１，１，０，１）の中に、長さｌ＝３のパターンＰ＝（１，０，１）が含まれているか否かを、テキストＴとパターンＰを準同型暗号で秘匿したまま判定することを考える。実際には、テキストＴの２番目と６番目の部分ベクトルＴ(2)及びＴ(6)と一致することが分かる。
【００４０】
長さｋ＝８のベクトルを扱うために、準同型暗号方式のパラメータをｎ＝８，ｑ＝1073741857（３０ビット素数）、ｔ＝ｎ＝８と設定する。このとき、秘密鍵ｓｋと公開鍵ｐｋを以下のようにとる。
秘密鍵ｓｋ＝Mod（Mod（2，1073741857）＊ｘ6＋Mod（5，1073741857）＊ｘ5＋Mod（5，1073741857）＊ｘ4＋Mod（5，1073741857）＊ｘ3＋Mod（6，1073741857）＊ｘ2＋Mod（1，1073741857）＊ｘ,ｘ8＋１）
公開鍵ｐｋ＝（ａ０，ａ１）
ａ０＝Mod（Mod（943067072，1073741857）＊ｘ7＋Mod（208992892，1073741857）＊ｘ6＋Mod（757863697，1073741857）＊ｘ5＋Mod（463766550，1073741857）＊ｘ4＋Mod（868678190，1073741857）＊ｘ3＋Mod（79684227，1073741857）＊ｘ2＋Mod（794283856，1073741857）＊ｘ＋Mod（118588567，1073741857），ｘ8＋１）
ａ１＝Mod（Mod（476812016，1073741857）＊ｘ7＋Mod（135271255，1073741857）＊ｘ6＋Mod（610902088，1073741857）＊ｘ5＋Mod（561030593，1073741857）＊ｘ4＋Mod（693790135，1073741857）＊ｘ3＋Mod（656347688，1073741857）＊ｘ2＋Mod（903267448，1073741857）＊ｘ＋Mod（326511477，1073741857），ｘ8＋１）
【００４１】
次に、テキストＴの準同型暗号化について、まずテキスト多項式ｍt（Ｔ）＝１＋ｘ＋ｘ3＋ｘ4＋ｘ5＋ｘ7を生成し、このテキスト多項式ｍt（Ｔ）を公開鍵ｐｋで暗号化すると以下のようになる。
Ｅｎｃ（ｍt（Ｔ），ｐｋ）＝（ｃ０，ｃ１）
ｃ０＝Mod（Mod（571455796，1073741857）＊ｘ7＋Mod（134025403，1073741857）＊ｘ6＋Mod（5586025，1073741857）＊ｘ5＋Mod（982959780，1073741857）＊ｘ4＋Mod（172339206，1073741857）＊ｘ3＋Mod（484151018，1073741857）＊ｘ2＋Mod（843536573，1073741857）＊ｘ＋Mod（647203954，1073741857），ｘ8＋１）
ｘｃ１＝Mod（Mod（483026714，1073741857）＊ｘ7＋Mod（807015171，1073741857）＊ｘ6＋Mod（282283030，1073741857）＊ｘ5＋Mod（326992586，1073741857）＊ｘ4＋Mod（809754218，1073741857）＊ｘ3＋Mod（19049111，1073741857）＊ｘ2＋Mod（406264220，1073741857）＊ｘ＋Mod（18166841，1073741857），ｘ8＋１）
【００４２】
次に、パターンＰの準同型暗号化については、パターン多項式ｍp（Ｐ）＝−ｘn−ｘn-1−ｘn-2＝１−ｘ6−ｘ7（長さｌ＝３）を生成し、このパターン多項式ｍp（Ｐ）を公開鍵ｐｋで暗号化すると以下のように表される。
Ｅｎｃ（ｍp（ｐ），ｐｋ）＝（ｂ０，ｂ１）
ｂ０＝Mod（Mod（559859414，1073741857）＊ｘ7＋Mod（567905533，1073741857）＊ｘ6＋Mod（12416926，1073741857）＊ｘ5＋Mod（844327741，1073741857）＊ｘ4＋Mod（167539656，1073741857）＊ｘ3＋Mod（473962809，1073741857）＊ｘ2＋Mod（200462840，1073741857）＊ｘ＋Mod（281512325，1073741857），ｘ8＋１）
ｂ１＝Mod（Mod（866509748，1073741857）＊ｘ7＋Mod（110516036，1073741857）＊ｘ6＋Mod（103878204，1073741857）＊ｘ5＋Mod（419487345，1073741857）＊ｘ4＋Mod（208664258，1073741857）＊ｘ3＋Mod（230233533，1073741857）＊ｘ2＋Mod（428440586，1073741857）＊ｘ＋Mod（1069138858，1073741857），ｘ8＋１）
【００４３】
さらに、暗号化テキストＥｎｃ（ｍt（Ｔ），ｐｋ）と暗号化パターンＥｎｃ（ｍp（Ｐ），ｐｋ）に対して、Ｃl＝−ｘn−ｘn-1−ｘn-2＝１−ｘ6−ｘ7（長さｌ＝３）と、Ｃk＝１＋ｘ＋ｘ2＋ｘ3＋ｘ4＋ｘ5＋ｘ6＋ｘ7（長さｋ＝８）とを生成する。そして、（３）式により暗号化距離計算結果（ｄ０，ｄ１，ｄ２）を算出する。
ｄ０＝Mod（Mod（797968254，1073741857）＊ｘ7＋Mod（466213893，1073741857）＊ｘ6＋Mod（252129696，1073741857）＊ｘ5＋Mod（1009528361，1073741857）＊ｘ4＋Mod（535752679，1073741857）＊ｘ3＋Mod（91616621，1073741857）＊ｘ2＋Mod（627437050，1073741857）＊ｘ＋Mod（983411190，1073741857），ｘ8＋１)
ｄ１＝Mod（Mod（702170729，1073741857）＊ｘ7＋Mod（300526001，1073741857）＊ｘ6＋Mod（385829973，1073741857）＊ｘ5＋Mod（6675019，1073741857）＊ｘ4＋Mod（571006407，1073741857）＊ｘ3＋Mod（627553259，1073741857）＊ｘ2＋Mod（657519649，1073741857）＊ｘ＋Mod（465629239，1073741857），ｘ8＋１）
ｄ２＝Mod（Mod（249662899，1073741857）＊ｘ7＋Mod（819300197，1073741857）＊ｘ6＋Mod（802151858，1073741857）＊ｘ5＋Mod（1002057738，1073741857）＊ｘ4＋Mod（759197621，1073741857）＊ｘ3＋Mod（488279887，1073741857）＊ｘ2＋Mod（105297021，1073741857）＊ｘ＋Mod（517181369，1073741857），ｘ8＋１）
【００４４】
最後に、上記の暗号計算結果を秘密鍵ｓｋを用いて復号すると、その復号結果はベクトルｍ＝［２，０，２，２，２，０，２，７］となる。このうち判定に採用できるのは０番目からｋ−ｌ＝８−３＝５番目までの値である。多項式で表現すれば、２＋２ｘ2＋２ｘ3＋２ｘ4となり、係数が０の位置がｘの１次及び５次の項であることが分かる。
【００４５】
よって、パターンＰはテキストＴの２番目と６番目の部分ベクトルＴ(2)及びＴ(6)に一致していることがわかる。
【実施例２】
【００４６】
上述した実施例１は、バイナリ変換後のテキストパターンに対する暗号ハミング距離しか計算できない。このため、バイナリ化により元のテキストパターンのベクトルの長さが増大され、暗号処理コストが増大する。例えば、ＤＮＡ塩基で用いられる４つの文字列Ａ，Ｔ，Ｃ，Ｇの１文字をバイナリ変換すると、［00］，［01］，［10］，［11］などと表記するため、元のＡ，Ｔ，Ｃ，Ｇの１文字に比べて２倍の長さを用いることになる。
【００４７】
そこで、実施例２では、暗号処理コストが増大しないように、バイナリ化ではなくより一般の数値ベクトル化したテキストパターンに対しても、高速に暗号距離計算を行える例を説明する。ここでは、一例として、Ｌ2ノルム距離Σ（ｔi−ｐi）2を考える。
【００４８】
［全体構成］
図２は、実施例２に係るシステムの全体構成例を示す図である。図２に示すように、このシステムは、登録者端末１０、照合者端末２０、暗号文処理サーバ３０を有するクラウドコンピューティングを用いた暗号化システムである。なお、図２に示す装置の台数等は、例示であり、図示したものに限定されない。
【００４９】
登録者端末１０は、テキスト文字列を暗号文処理サーバ３０に登録する端末であり、例えばパーソナルコンピュータ、汎用サーバ、スマートフォンなどである。この登録者端末１０は、照合対象のパターン文字列を含むテキスト文字列を暗号文処理サーバ３０に登録する。
【００５０】
照合者端末２０は、パターン文字列のパターンマッチングを要求する例えばパーソナルコンピュータ、汎用サーバ、スマートフォンなどである。この照合者端末２０は、特定の文字列パターンが登録者端末１０によって登録されたテキスト文字列に含まれるかの照合処理を、暗号文処理サーバ３０に要求して照合結果を取得する。
【００５１】
暗号文処理サーバ３０は、パターンマッチングを実行する装置であり、例えばパーソナルコンピュータ、汎用サーバ、スマートフォンなどである。具体的には、暗号文処理サーバ３０は、照合者端末２０から要求されたパターン文字列と、登録者端末１０が登録したテキスト文字列とのパターンマッチングを実行して、その結果を照合者端末２０に応答する。
【００５２】
このようなシステムにおいて、暗号文処理サーバ３０は、第１のテキストデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の多項式と、第１のテキストデータの各成分の２乗値ベクトルデータが第１の順で多項式化されて第１の公開鍵で暗号化された第１の２乗値多項式とを取得する。暗号文処理サーバ３０は、第２のテキストデータが第２の順で多項式化されて第１の公開鍵で暗号化された第２の多項式と、第２のテキストデータの各成分の２乗値ベクトルデータが第２の順で多項式化されて第１の公開鍵で暗号化された第２の２乗値多項式とを取得する。その後、暗号文処理サーバ３０は、第１の多項式および第１の２乗値多項式と、第２の多項式および第２の２乗値多項式とを用いて、第２のテキストデータが前記第１のテキストデータに含まれるかを判定する。
【００５３】
すなわち、暗号文処理サーバ３０は、数値ベクトル化した２つのテキストデータを準同型暗号によって秘匿化された状態でマッチングする際に、各テキストデータの各ベクトル成分の２乗値ベクトル列を用いる。この結果、暗号文処理サーバ３０は、秘匿化パターンマッチングにおける処理負荷を軽減することができる。
【００５４】
［装置の構成］
次に、図２に示したシステムを構成する各装置の機能構成について説明する。図３は、実施例２に係る各装置の機能構成を示す機能ブロック図である。
【００５５】
（登録者端末の機能構成）
図３に示すように、登録者端末１０は、通信処理部１１、データ情報ＤＢ１２、鍵情報ＤＢ１３、２乗値算出部１４、多項式変換部１５、暗号化部１６、登録部１７を有する。なお、２乗値算出部１４、多項式変換部１５、暗号化部１６、登録部１７は、プロセッサが実行するプロセスや電子回路が有する回路の一例である。
【００５６】
通信処理部１１は、クラウドシステム１上の暗号文処理サーバ３０との通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信処理部１１は、暗号化データ等を暗号文処理サーバ３０に送信する。また、通信処理部１１は、暗号文処理サーバ３０との間でＷｅｂセッションなどを確立して、各種データの送受信を実行する。
【００５７】
データ情報ＤＢ１２は、マッチング対象のテキスト文字列を記憶するデータベースである。例えば、データ情報ＤＢ１２は、数値ベクトル化されたテキストＴ＝（ｔ0，ｔ1，・・・ｔk-1）を記憶する。なお、データ情報ＤＢ１２は、ハードディスクや半導体メモリ等の記憶装置に格納される。
【００５８】
鍵情報ＤＢ１３は、登録者端末１０を使用するユーザの公開鍵および秘密鍵や照合者の公開鍵などを記憶するデータベースである。例えば、鍵情報ＤＢ１３は、鍵パラメータ（ｎ，ｑ，ｔ）で生成された照合者の公開鍵ｐｋを格納する。また、ここで記憶される鍵情報は、照合者端末２０から事前に取得されて格納される。なお、鍵情報ＤＢ１３は、ハードディスクや半導体メモリ等の記憶装置に格納される。
【００５９】
２乗値算出部１４は、データ情報ＤＢ１２に記憶されるテキストデータの各成分の２乗値ベクトル列を算出する処理部である。例えば、２乗値算出部１４は、テキストＴ＝（ｔ0，ｔ1，・・・ｔk-1）の各成分の２乗値ベクトルＴ2＝（ｔ02，ｔ12，・・・，ｔk-12）を算出する。なお、２乗値算出部１４は、算出した結果をメモリ等に格納する。
【００６０】
多項式変換部１５は、データ情報ＤＢ１２に記憶されるテキストデータと、２乗値算出部１４によって算出された２乗値ベクトルとをそれぞれ多項式に変換する処理部である。具体的には、多項式変換部１５は、実施例１と同様の手法を用いて、多項式変換を実行する。例えば、多項式変換部１５は、テキストＴ＝（ｔ0，ｔ1，・・・，ｔk-1）に実施例１と同様の昇順多項式変換を施した多項式ｍ（Ｔ）を生成する。また、多項式変換部１５は、２乗値ベクトルＴ2＝（ｔ02，ｔ12，・・・，ｔk-12）に昇順多項式変換を施した多項式ｍ（Ｔ2）を生成する。なお、多項式変換部１５は、算出した結果をメモリ等に格納する。
【００６１】
暗号化部１６は、多項式変換部１５によって算出された各多項式変換に準同型暗号文を生成する処理部である。具体的には、暗号化部１６は、多項式ｍ（Ｔ）および多項式ｍ（Ｔ2）を、鍵情報ＤＢ１３に記憶される照合者の公開鍵ｐｋで暗号化する。例えば、暗号化部１６は、２つの暗号文（Enc（m（T），pk），Enc（m（T2），pk））を生成する。なお、暗号化部１６は、算出した結果をメモリ等に格納する。
【００６２】
登録部１７は、暗号化部１６が生成した暗号文を暗号文処理サーバ３０に登録する処理部である。例えば、登録部１７は、２つの暗号文（Enc（m（T），pk），Enc（m（T2），pk））を暗号文処理サーバ３０に送信する。つまり、登録部１７は、マッチング対象のデータを暗号文処理サーバ３０に登録する。
【００６３】
（照合者端末の機能構成）
図３に示すように、照合者端末２０は、通信処理部２１、データ情報ＤＢ２２、鍵情報ＤＢ２３、２乗値算出部２４、多項式変換部２５、暗号化部２６、要求部２７、復号部２８を有する。なお、２乗値算出部２４、多項式変換部２５、暗号化部２６、要求部２７、復号部２８は、プロセッサが実行するプロセスや電子回路が有する回路の一例である。
【００６４】
通信処理部２１は、クラウドシステム１上の暗号文処理サーバ３０との通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信処理部１１は、暗号化データや照合要求等を暗号文処理サーバ３０に送信する。また、通信処理部１１は、暗号文処理サーバ３０との間でＷｅｂセッションなどを確立して、各種データの送受信を実行する。
【００６５】
データ情報ＤＢ２２は、照合対象のテキスト文字列を記憶するデータベースである。例えば、データ情報ＤＢ２２は、数値ベクトル化されたテキストＰ＝（ｐ0，ｐ1，・・・，ｐk-1）を記憶する。なお、データ情報ＤＢ２２は、ハードディスクや半導体メモリ等の記憶装置に格納される。
【００６６】
鍵情報ＤＢ２３は、照合者端末２０を使用するユーザの公開鍵および秘密鍵などを記憶するデータベースである。例えば、鍵情報ＤＢ２３は、鍵パラメータ（ｎ，ｑ，ｔ）で生成された照合者の公開鍵ｐｋや秘密鍵ｓｋを格納する。なお、鍵情報ＤＢ２３は、ハードディスクや半導体メモリ等の記憶装置に格納される。
【００６７】
２乗値算出部２４は、データ情報ＤＢ２２に記憶されるテキストデータの各成分の２乗値ベクトル列を算出する処理部である。例えば、２乗値算出部２４は、テキストＰ＝（ｐ0，ｐ1，・・・ｐk-1）の各成分の２乗値ベクトルＰ2＝（ｐ02，ｐ12，・・・，ｐk-12）を算出する。なお、２乗値算出部２４は、算出した結果をメモリ等に格納する。
【００６８】
多項式変換部２５は、データ情報ＤＢ２２に記憶されるテキストデータと、２乗値算出部２４によって算出された２乗値ベクトルとをそれぞれ多項式に変換する処理部である。具体的には、多項式変換部２５は、実施例１と同様の手法を用いて、多項式変換を実行する。例えば、多項式変換部２５は、テキストＰ＝（ｐ0，ｐ1，・・・ｐk-1）に実施例１と同様の降順多項式変換を施した多項式ｍ’（Ｐ）を生成する。また、多項式変換部２５は、２乗値ベクトルＰ2＝（ｐ02，ｐ12，・・・，ｐk-12）に降順多項式変換を施した多項式ｍ´（Ｐ2）を生成する。なお、多項式変換部２５は、算出した結果をメモリ等に格納する。
【００６９】
暗号化部２６は、多項式変換部２５によって算出された各多項式変換に準同型暗号文を生成する処理部である。具体的には、暗号化部２６は、多項式ｍ‘（Ｐ）および多項式ｍ´（Ｐ2）を、鍵情報ＤＢ２３に記憶される照合者の公開鍵ｐｋで暗号化する。例えば、暗号化部１６は、２つの暗号文（Enc（m’（P），pk），Enc（m’（P2），pk））を生成する。なお、暗号化部１６は、算出した結果をメモリ等に格納する。
【００７０】
要求部２７は、パターンマッチングを要求する処理部である。具体的には、要求部２７は、照合対象の暗号部を暗号文処理サーバ３０に送信して、パターンマッチングを要求する。例えば、要求部２７は、２つの暗号文（Enc（m’（P），pk），Enc（m’（P2），pk））を暗号文処理サーバ３０に送信する。
【００７１】
復号部２８は、暗号文処理サーバ３０から照合結果を受信し、照合結果を復号してパターンマッチングの結果を得る処理部である。例えば、復号部２８は、暗号文処理サーバ３０から照合結果として「Enc（m（T2），pk）＊Cl＋Enc（m’（P2），pk）＊Ck’−2Enc（m（T），pk）＊Enc（m’（P），pk）」を取得する。なお、ClとCk’については後述する。
【００７２】
そして、復号部２８は、取得した「Enc（m（T2），pk）＊Cl＋Enc（m’（P2），pk）＊Ck’−2Enc（m（T），pk）＊Enc（m’（P），pk）」を、秘密鍵ｓｋで復号することで、復号結果として多項式ｍ＝Σmixiを得る。復号部２８は、各ｉ＝0，1，・・・，k-lに対し、多項式mの係数miがTとPのL2距離Σ（ti+j−pj）2となり、この値が0となるかどうか確認することで、パターンPがテキストTのどの部分と一致するか判定することができる。
【００７３】
具体的には、復号部２８は、１つでも０がある場合は、パターンPはテキストTの中に含まれると判定し、そうでない場合は、テキストTの中にパターンPは含まれないと判定する。
【００７４】
上記で判定することが可能な原理としては、準同型暗号が持つ多項式上の準同型性の特徴から説明できる。具体的には、上記の暗号距離計算は、暗号化なしの平文上では、環R＝Z［x］／（xn＋1）上の多項式演算m（T2）＊（−Σxn-j）＋m’（P2）＊Σxj−2m（T）＊m’（P）に対応し、この計算結果が秘密鍵ｓｋで復号で得られる多項式mに一致することが分かる。よって、上記の多項式演算から、各i＝0，1，・・・，k-lに対し、多項式mの係数miはL2距離Σ（ti+j−pj）2と一致することが分かる。
【００７５】
（暗号文処理サーバの機能構成）
図３に示すように、暗号文処理サーバ３０は、通信処理部３１、暗号文ＤＢ３２、演算結果ＤＢ３３、登録部３４、要求受信部３５、演算部３６、送信部３７を有する。なお、登録部３４、要求受信部３５、演算部３６、送信部３７は、プロセッサが実行するプロセスや電子回路が有する回路の一例である。
【００７６】
通信処理部３１は、登録者端末１０や照合者端末２０との通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信処理部３１は、暗号化データや各種要求等を受信する。また、通信処理部３１は、各端末との間でＷｅｂセッションなどを確立して、各種データの送受信を実行する。
【００７７】
暗号文ＤＢ３２は、各端末から受信した暗号文を記憶するデータベースである。例えば、暗号文ＤＢ３２は、登録者端末１０から受信した暗号文（Enc（m（T），pk），Enc（m（T2），pk））を記憶する。また、暗号文ＤＢ３２は、照合者端末２０から受信した２つの暗号文（Enc（m’（P），pk），Enc（m’（P2），pk））を記憶する。
【００７８】
演算結果ＤＢ３３は、パターンマッチング結果を記憶するデータベースである。例えば、演算結果ＤＢ３３は、パターンマッチング結果として、「Enc（m（T2），pk）＊Cl＋Enc（m’（P2），pk）＊Ck’−2Enc（m（T），pk）＊Enc（m’（P），pk）」を記憶する。なお、暗号文ＤＢ３２や演算結果ＤＢ３３は、ハードディスクや半導体メモリ等の記憶装置に格納される。
【００７９】
登録部３４は、登録者端末１０からマッチング対象のデータを受信して暗号文ＤＢ３２に登録する処理部である。上述したように、登録部３４は、登録者端末１０から受信した２つの暗号文（Enc（m（T），pk），Enc（m（T2），pk））を受信して、暗号文ＤＢ３２に登録する。
【００８０】
要求受信部３５は、照合者端末１０からパターンマッチングの要求を受信する処理部である。また、要求受信部３５は、パターンマッチングの要求とともに照合対象の２つの暗号文（Enc（m’（P），pk），Enc（m’（P2），pk））を受信して、暗号文ＤＢ３２に登録する。
【００８１】
演算部３６は、パターンマッチングを実行する処理部である。具体的には、演算部３６は、登録者端末１０から取得した２つの暗号文（Enc（m（T），pk），Enc（m（T2），pk））と、照合者端末２０から取得した２つの暗号文（Enc（m’（P），pk），Enc（m’（P2），pk））のパターンマッチングを実行する。そして、演算部３６は、演算結果を演算結果ＤＢ３３に登録する。
【００８２】
すなわち、演算部３６は、数値ベクトル化されたテキストＴとパターンＰの暗号化L2距離を計算する。例えば、演算部３６は、距離計算用の補助データCl＝（−Σxn-j，0）とCk’＝（Σxj，0）を計算し、暗号距離計算として「Enc（m（T2），pk）＊Cl＋Enc（m’（P2），pk）＊Ck’−2Enc（m（T），pk）＊Enc（m’（P），pk）」を計算する。
【００８３】
送信部３７は、パターンマッチングの演算結果を照合者端末２０に送信する処理部である。例えば、演算部３６は、演算結果である「Enc（m（T2），pk）＊Cl＋Enc（m’（P2），pk）＊Ck’−2Enc（m（T），pk）＊Enc（m’（P），pk）」を演算結果ＤＢ３３から読み出して照合者端末２０に送信する。
【００８４】
［処理の流れ］
図４は、実施例２に係るシステムが実行する処理のシーケンス図である。図４に示すように、照合者端末２０は、鍵パラメータ（ｎ，ｑ，ｔ）で生成された照合者の公開鍵ｐｋおよび秘密鍵ｓｋを生成し（Ｓ１０１）、生成した公開鍵ｐｋを登録者端末１０に配信する（Ｓ１０２とＳ１０３）。一方で、登録者端末１０も同様に、登録者の公開鍵および秘密鍵を生成して記憶する（Ｓ１０４）。また、登録者端末１０は、照合者端末２０から受信した公開鍵ｐｋを鍵情報ＤＢ１３に格納する（Ｓ１０５）。
【００８５】
そして、登録者端末１０は、データ情報ＤＢ１２から登録対象のデータ、すなわちマッチング対象のテキストデータＴを読み出して、各成分の２乗値ベクトル列を算出する（Ｓ１０６）。
【００８６】
続いて、登録者端末１０は、登録対象のテキストデータＴおよび２乗値ベクトルＴ2のそれぞれを多項式に変換する（Ｓ１０７）。
【００８７】
その後、登録者端末１０は、照合者端末１０の公開鍵ｐｋを用いて各多項式に対して準同期暗号化を実行して（Ｓ１０８）、生成した暗号化データを登録データとして暗号文処理サーバ３０に送信する（Ｓ１０９およびＳ１１０）。そして、暗号文処理サーバ３０は、登録者端末１０から受信した暗号化データを暗号文ＤＢ３２に格納する（Ｓ１１１）。
【００８８】
一方で、照合者端末２０は、照合対象のテキストデータＰの２乗値ベクトルＰ2を算出し（Ｓ１１２）、照合対象のテキストデータＰおよび２乗値ベクトルＰ2のそれぞれを多項式に変換する（Ｓ１１３）。
【００８９】
そして、照合者端末２０は、自身の公開鍵ｐｋを用いて各多項式に対して準同期暗号化を実行して（Ｓ１１４）、生成した照合対象の暗号化データを暗号文処理サーバ３０に送信して、パターンマッチングの実行を要求する（Ｓ１１５およびＳ１１６）。
【００９０】
その後、暗号文処理サーバ３０は、マッチング対象のテキストデータの２つの暗号文と、照合対象の２つの暗号文とに対して、照合処理すなわちパターンマッチングを実行し（Ｓ１１７）、照合結果を照合者端末２０に送信する（Ｓ１１８とＳ１１９）。
【００９１】
そして、照合者端末２０は、暗号文処理サーバ３０から受信した照合結果を自身の秘密鍵ｓｋで復号し、判定結果を得る（Ｓ１２０）。
【００９２】
［効果］
このように、実施例２に係るシステムでは、数値ベクトル化したテキストパターンに対し、準同型暗号を用いた秘匿L2ノルム計算を実行する、この際、システムでは、テキストパターンの数値ベクトルの暗号化の際に、各ベクトル成分の２乗値のベクトル列を作成し、その２乗値ベクトルを実施例１と同様の変換を施した多項式の暗号文を補助暗号データとして加える。そして、システムでは、暗号化Ｌ2ノルム距離計算の際、補助暗号データを用いた計算を実行する。この結果、システムは、秘匿化パターンマッチングにおける処理負荷を軽減することができる。
【実施例３】
【００９３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００９４】
（端末）
上記実施例では、マッチング対象のデータを生成する端末と照合対象のデータを生成する端末とが別々の例で説明したが、これに限定されるものではない。例えば、同一端末が両方のデータを生成して、クラウド上のサーバにパターンマッチングを実行させることもできる。
【００９５】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９７】
（ハードウェア）
図５は、ハードウェア構成例を示す図である。図２に示した各装置は同様のハードウェア構成を有するので、ここでは暗号文処理サーバ３０を例にして説明する。
【００９８】
図５に示すように、暗号文処理サーバ３０は、通信インタフェース３０ａ、ＨＤＤ（ハードディスクドライブ）３０ｂ、メモリ３０ｃ、プロセッサ３０ｄを有する。また、図５に示した各部は、バス等で相互に接続される。
【００９９】
通信インタフェース３０ａは、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードである。ＨＤＤ３０ｂは、図３等に示した機能を動作させるプログラムやＤＢを記憶する。
【０１００】
プロセッサ３０ｄは、図３等に示した各処理部と同様の処理を実行するプログラムをＨＤＤ３０ｂ等から読み出してメモリ３０ｃに展開することで、図３等で説明した各機能を実行するプロセスを動作させる。
【０１０１】
すなわち、このプロセスは、暗号文処理サーバ３０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ３０ｄは、登録部３４、要求受信部３５、演算部３６、送信部３７等と同様の機能を有するプログラムをＨＤＤ３０ｃ等から読み出す。そして、プロセッサ３０ｄは、登録部３４、要求受信部３５、演算部３６、送信部３７と同様の処理を実行するプロセスを実行する。
【０１０２】
このように暗号文処理サーバ３０は、プログラムを読み出して実行することでアルバム作成方法を実行する情報処理装置として動作する。また、暗号文処理サーバ３０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、暗号文処理サーバ３０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１０３】
１０  登録者端末
１１  通信処理部
１２  データ情報ＤＢ
１３  鍵情報ＤＢ
１４  ２乗値算出部
１５  多項式変換部
１６  暗号化部
１７  登録部
２０  照合者端末
２１  通信処理部
２２  データ情報ＤＢ
２３  鍵情報ＤＢ
２４  ２乗値算出部
２５  多項式変換部
２６  暗号化部
２７  要求部
２８  復号部
３０  暗号文処理サーバ
３１  通信処理部
３２  暗号文ＤＢ
３３  演算結果ＤＢ
３４  登録部
３５  要求受信部
３６  演算部
３７  送信部
【図１】
2015184594.tif 000003
【図２】
2015184594.tif 000004
【図３】
2015184594.tif 000005
【図４】
2015184594.tif 000006
【図５】
2015184594.tif 000007
【図６】
2015184594.tif 000008