JP6260442B2 - 情報処理方法及びプログラム - Google Patents

情報処理方法及びプログラム Download PDF

Info

Publication number
JP6260442B2
JP6260442B2 JP2014095093A JP2014095093A JP6260442B2 JP 6260442 B2 JP6260442 B2 JP 6260442B2 JP 2014095093 A JP2014095093 A JP 2014095093A JP 2014095093 A JP2014095093 A JP 2014095093A JP 6260442 B2 JP6260442 B2 JP 6260442B2
Authority
JP
Japan
Prior art keywords
polynomial
vector
numerical vector
numerical
transformation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014095093A
Other languages
English (en)
Other versions
JP2015212756A (ja
Inventor
雅哉 安田
雅哉 安田
武司 下山
武司 下山
淳 小暮
淳 小暮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014095093A priority Critical patent/JP6260442B2/ja
Priority to US14/697,573 priority patent/US9596083B2/en
Priority to EP15165670.9A priority patent/EP2940921B1/en
Publication of JP2015212756A publication Critical patent/JP2015212756A/ja
Application granted granted Critical
Publication of JP6260442B2 publication Critical patent/JP6260442B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データを秘匿化したままでパターンマッチングを行うための技術に関する。
現在、個人情報及び機密情報を保護する規制が強化される一方で、そのような情報を利用したサービスの市場が拡大しつつある。そこで、個人情報及び機密情報を保護したままデータの活用が可能な秘匿化技術が注目されている。秘匿化技術の中には、データ種別やサービス要件に応じて、暗号技術や統計技術を使った技術がある。
暗号技術を用いた秘匿化技術として準同型暗号技術が知られている。準同型暗号技術は、暗号化のための鍵と復号化のための鍵とが異なる公開鍵暗号方式の1つであって、暗号化したままデータ操作が可能となる機能を備えた暗号である。例えば、平文m1及びm2に対して、加算又は乗法に関する準同型暗号方式の暗号化関数をEとすると、以下の式(1)又は(2)の性質が成り立つ。
(1)E(m1)+E(m2)=E(m1+m2)
(2)E(m1)*E(m2)=E(m1*m2)
(1)式が成り立つものを加算について準同型と呼び、(2)式が成り立つものを乗算について準同型と呼ぶ。
準同型暗号方式を用いれば、暗号文を復号することなく、暗号文の加算や乗算により、加算や乗算を行った演算結果の暗号文を得ることができる。この準同型暗号の性質は、電子投票や電子現金などの分野、さらに近年ではクラウドコンピューティング分野において利用されることが期待されている。
このような準同型暗号方式として、RSA(Rivest Shamir Adleman)暗号方式(乗算のみ準同型)や、Additive ElGamal暗号方式(加算のみ準同型)が代表的である。また、2009年には加算と乗算の両方が可能な準同型暗号方式(式(1)及び(2)を満たす暗号方式)が提案された(非特許文献1に開示の技術)。しかし、このような準同型暗号方式は、処理性能や暗号データサイズの面で実用向きではないことが知られている。そこで、2011年に、加算と乗算の両方が可能で且つ処理性能と暗号データサイズの両面で実用的な準同型暗号方式が提案され、その応用例などが提示された(非特許文献2に開示の技術)。
ここで、2011年に提案された準同型暗号方式について説明する(詳細は、非特許文献2の3.2節を参照のこと)。まず、暗号鍵生成について、主に3つの鍵生成パラメータ(n,q,t)を用意する。nは2冪の整数で格子次元と呼ばれ、qは素数、tは素数qよりも小さい整数とする。暗号鍵生成の手順としては、まず秘密鍵として各係数が非常に小さいn次元の多項式skをランダムに生成する。なお、各係数の小ささは、あるパラメータσで制限される。次に、各係数がqより小さいn次元多項式a1と各係数が非常に小さいn次元多項式eをランダムに生成する。
そこで、a0=−(a1*sk+t*e)を計算し、組(a0,a1)を公開鍵pkと定義する。但し、a0の多項式計算時において、n次以上の多項式に対してxn=−1,xn+1=−x,...と計算することで、絶えずn次より小さい多項式を計算する。さらに、多項式の係数については、素数qで割った余りを出力する。このような演算を行う空間を、学術的にはRq:=Fq[x]/(xn+1)と表すことが多い。
次に、各係数がtより小さいn次多項式で表される平文データmと公開鍵pk=(a0,a1)に対して、各係数が非常に小さい3つのn次元多項式u,f,gをランダムに生成し、平文データmの暗号データE(m,pk)=(c0,c1)を次のように定義する。(c0,c1)については、c0=a0*u+t*g+m,c1=a1*u+t*fと計算する。なお、これらの計算も空間Rq上での演算を行う。
そして、2つの暗号文E(m1,pk)=(c0,c1)と、E(m2,pk)=(d0,d1)に対して、暗号加算E(m1,pk)+E(m2,pk)を(c0+d0,c1+d1)と計算し、暗号乗算E(m1,pk)*E(m2,pk)を(c0*d0,c0*d1+c1*d0,c1*d1)と計算する。このように暗号乗算を行うと、暗号文のデータサイズが2成分ベクトルから3成分ベクトルになることに注意する。
最後に、復号処理であるが、暗号文c=(c0,c1,c2,...)に対して(ここでは複数の暗号乗算などの暗号操作により暗号文データの成分が増大したと仮定している)、秘密鍵skを用いてD(c,sk)=[c0+c1*sk+c2*sk2+・・・]q mod tを計算することで、復号する。ここで、[z]qの値は、整数zをqで割った余りwを計算し、w<qならば[z]q=wを出力し、w≧qの場合には[z]q=w−qを出力する。さらに、a mod tは整数aをtで割った余りを意味する。
以下、分かりやすくするために数値例を示しておく。
秘密鍵sk=Mod(Mod(4,1033)*x3+Mod(4,1033)*x2+Mod(1,1033)*x,x4+1)
公開鍵pk=(a0,a1)
a0=Mod(Mod(885,1033)*x3+Mod(519,1033)*x2+Mod(621,1033)*x+Mod(327,1033),x4,x4+1)
a1=Mod(Mod(661,1033)*x3+Mod(625,1033)*x2+Mod(861,1033)*x+Mod(311,1033),x4+1)
E(m,pk)=(c0,c1)
平文データm=3+2x+2x2+2x3とする。
c0=Mod(Mod(822,1033)*x3+Mod(1016,1033)*x2+Mod(292,1033)*x+Mod(243,1033),x4+1)
c1=Mod(Mod(840,1033)*x3+Mod(275,1033)*x2+Mod(628,1033)*x+Mod(911,1033),x4+1)
なお、上記値において、鍵生成パラメータ(n,q,t)については、(4,1033,20)と設定した。さらに、Mod(a,q)は整数aを素数qで割った余りを意味し、Mod(f(x),x4+1)は多項式f(x)を多項式x4+1で割った余りの多項式を意味する。但し、x4=−1、x5=x,...などを意味するものとする
次に、パターンマッチングについて簡単に説明しておく。パターンマッチングとは、例えばテキスト文字列の中にパターン文字列が存在するか否かを判定する処理で、例えばテキスト文字列T=”acbabbaccb”の中に、パターン文字列P=”abbac”があるか否かを判定する処理を考える。このとき、図1に示すように、テキスト文字列Tに対して、パターン文字列Pを1文字ずつずらしながら、テキストとパターンが一致する文字の個数(距離とも呼ぶ)を算出する。図1では、個数を表す数値の並びをスコアベクトルと呼ぶ。今回の例ではパターン文字列Pの長さが5なので、スコアベクトルの値が5の成分のところで、テキスト文字列Tとパターン文字列Pとが一致することがわかる。
このように、暗号化なしのパターンマッチングでは、テキスト文字列Tとパターン文字列Pに対して、パターン文字列Pを1文字ずつずらしながらテキスト文字列との距離を計算していく。
一方、準同型暗号を利用した秘匿パターンマッチング(例えば非特許文献3)では、データサイズや距離計算コストを削減するために、バイナリ化したテキストの各ビットを次数について昇順で係数に用いることで表される多項式を求め、多項式演算可能な同準型暗号方式(例えばRing-LWEベース準同型暗号:非特許文献2を参照のこと)で暗号化する。一方、バイナリ化したパターンの各ビットを次数について降順で係数に用いることで表される多項式を求め、同じ準同型暗号方式で暗号化する。
そして、準同型暗号で暗号化されたテキスト多項式及びパターン多項式に対して、多項式上の準同型性を利用して、各係数が、テキストとパターンとのハミング距離になるような暗号演算を実施する。その後、暗号演算結果を復号することで得られる多項式の各係数からハミング距離を特定し、ハミング距離が0となっているか否かを判定する。このようにすることで、秘匿パターンマッチング計算が行われる。
具体的には、バイナリ化した長さkのテキスト(バイナリベクトルとも呼ぶ)T=(t0,t1,...,tk-1)から、各ビットを昇順で係数として用いる多項式mt(T)=Σiiiを生成し、これに対して上で述べた準同型暗号方式により、暗号化テキストEnc(mt(T),pk)を生成する。これによって、テキストTは秘匿化される。
一方、バイナリ化した長さlのパターンP=(p0,p1,...,pl-1)から、各ビットを降順に係数として用いる多項式mp(P)=−Σjjn-jを生成し、それを上で述べた準同型暗号方式により暗号化パターンEnc(mp(P),pk)を生成する。これによって、パターンPは秘匿される。
次に、暗号化されたテキストEnc(mt(T),pk)とパターンEnc(mp(P),pk)に対して、暗号化距離計算を以下のように実行する。
Enc(mt(T),pk)*Cl+Enc(mp(P),pk)*Ck−2Enc(mt(T),pk)*Enc(mp(P),pk) (3)
ここで、Clは長さlの降順の多項式を含む元であり、Ckは長さkの昇順の多項式を含む元であり、以下のように表される。
l=(−Σjn-j,0) (4)
k=(Σii,0) (5)
(3)式で得られた暗号化距離計算結果を復号した結果をr0+r1x+r22+・・・+rn-1n-1(係数がパラメータt以下のn次多項式で表される)としたとき、0≦i≦k−lに対してi次の係数riは、i番目のビットを先頭とする部分テキストT(i)とパターンPのハミング距離d(T(i),P)と一致する。従って、復号結果r0+r1x+r22+・・・+rn-1n-1からパターンPがテキストTのどの部分に含まれるかは、係数が0となる次数を特定すればよい。すなわち、テキストTとパターンPを準同型暗号で秘匿したまま計算することが可能となる。
ここで、このような秘匿パターンマッチング計算の考え方を図2を用いて示しておく。平文空間において、多項式の各係数がハミング距離d(T(i),P)になるようにするには、以下のような演算を行うことになる。
Σi(HW(T(i))+HW(P)−2<T(i),P>)xi (6)
なお、HW(A)はAのハミング重みを表し、<A,B>はAとBとの内積計算を表す。
(6)式におけるΣiHW(T(i))xiは、図2(A)に示すように、mt(T)*(−Σjn-j)である。また、(6)式におけるΣiHW(P)xiは、図2(B)に示すようにmp(P)*(Σii)である。さらに、(6)式におけるΣi<T(i),P>xiは、図2(C)に示すように、mt(T)*mp(P)である。
そうすると、図2(A)乃至(C)に示すように、各平文演算に対して、暗号文空間における対応する暗号演算が得られる。従って、結果として、図2(D)のように、(3)式に示すような暗号演算を実行することで、復号化すれば係数がハミング距離となるような演算がなされたことになる。
但し、平文多項式上の演算は、n次以上の多項式に対してxn=−1,xn+1=−x,...と計算することで、絶えずn次以下の多項式を計算し、n次以下の各多項式の係数については、パラメータtで割った余りを出力するようにする。このような演算を行う空間を、Rt=Fq[x]/(xn+1)と表すことが多い。
しかしながら、いずれの文字とも一致することを表す特殊文字(ワイルドカードと呼ぶ)についての取り扱いは考慮されておらず、ワイルドカードを含むような一般的なパターンによる秘匿パターンマッチングを効率的に行えない。
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. M. Yasuda, T, Shimoyama, J. Kogure, K. Yokoyama and T. Koshiba, "Secure Pattern Matching using Somewhat Homomorphic Encryption", CCSW'13, November 8, 2013, pp. 65-76
本発明の目的は、一側面によれば、秘匿化パターンマッチングの汎用性を高めるための技術を提供することである。
本発明の第1の態様に係るマッチング方法は、(A)第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、(B)第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、(C)第1の数値ベクトルを多項式変換した第1の多項式と、第2の数値ベクトルを多項式変換した第2の多項式と、第3の数値ベクトルを多項式変換した第3の多項式とを生成し、(D)第1の多項式と第2の多項式と第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、(E)第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第4の多項式と、第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第5の多項式と、第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された第4の多項式と第5の多項式と第6の多項式と、暗号化された第1の多項式と第2の多項式と第3の多項式とを用いて所定の演算を暗号化したまま実行し、(F)所定の演算の演算結果を復号化する処理を含む。
本発明の第2の態様に係る秘匿処理方法は、(A)第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、(B)第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、(C)第1の数値ベクトルを多項式変換した第1の多項式と、第2の数値ベクトルを多項式変換した第2の多項式と、第3の数値ベクトルを多項式変換した第3の多項式とを生成し、(D)第1の多項式と第2の多項式と第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化する処理を含む。
また、本発明の第3の態様に係る秘匿処理方法は、(A)第1のテキストを数値ベクトル化することで生成された第1の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第1の多項式と、第1の数値ベクトルの各成分を二乗した第2の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第2の多項式と、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第3の多項式とを受信し、(B)第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第4の多項式と、第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第5の多項式と、第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第6の多項式とを格納するデータ格納部に格納された第4の多項式と第5の多項式と第6の多項式と、第1の多項式と第2の多項式と第3の多項式とを用いて所定の演算を暗号化したまま実行し、(C)所定の演算の演算結果を返信する処理を含む。
一側面によれば、秘匿化パターンマッチングの汎用性を高めることができるようになる。
図1は、パターンマッチングを説明するための図である。 図2は、暗号距離計算を解説するための図である。 図3は、本実施の形態に係る考え方を表す図である。 図4は、本実施の形態に係るシステムの概要を示す図である。 図5は、提供者装置の機能ブロック図である。 図6は、照合者装置の機能ブロック図である。 図7は、情報処理装置の機能ブロック図である。 図8は、登録処理の処理フローを示す図である。 図9は、照合処理の処理フローを示す図である。 図10は、コンピュータの機能ブロック図である。
まず、本実施の形態に係る処理の概要を説明する。本実施の形態においても、図2(A)乃至(D)を用いて説明したのと同様に、平文空間において距離を定義して、復号した結果が当該平文空間において定義された距離に合致するように、暗号空間における演算を規定する。
テキストをT=(t0,t1,t2,...)というように数値ベクトル化し、同じくパターンについてもP=(p0,p1,p2,...pl-1)というように数値ベクトル化する。なお、ワイルドカードについては0を割り当て、その他の文字については所定のルール(例えばAに対して1、Bに対して2、Cに対して3など)に従って数値ベクトル化する。
この時、図3左側に模式的に示すように、テキストに対してパターンを1成分ずつずらしながら一致しているか否かを判断することを考える。例えばtiを先頭にした、テキストの一部と、パターンとの距離を、図3右側のような式で定義する。
この式は、j=0乃至l−1の範囲における任意のjについて、pj=ti+j、すなわち文字が一致する場合に、その値が0となる。同様に、pj=0、すなわちpjがワイルドカードである場合にも、その値は0となる。さらに、ti+j=0、すなわちti+jがワイルドカードである場合にも、その値は0となる。
このような距離を定義して距離が0となるiを見つければ、パターンの数値ベクトルPは、テキストの数値ベクトルTの成分tiから一致していることが分かる。
ここで、長さkのテキストの数値ベクトルT=(t0,t1,...,tk-1)から、各成分を昇順で係数として用いる多項式mt(T)=Σiiiを生成する。
同様に、長さlのパターンの数値ベクトルP=(p0,p1,...,pl-1)から、各成分を降順に係数として用いる多項式mp(P)=−Σjjn-jを生成する。
そして、図3右側に示す式の値が、i=0乃至k−1の範囲における任意のiについて、xiの係数となるように、多項式で表すと以下のようになる。
t(T)*mp(P3)+mt(T3)*mp(P)−2mt(T2)*mp(P2) (7)
(7)式は、非特許文献2に示すような多項式演算可能な準同型暗号方式を用いれば、以下のように表される。
E(mt(T))*E(mp(P3))+E(mt(T3))*E(mp(P))−2E(mt(T2))*E(mp(P2)) (8)
よって、E(mt(T))、E(mp(P3))、E(mt(T3))、E(mp(P))、E(mt(T2))及びE(mp(P2))を用意すれば、テキストもパターンも秘匿したまま距離演算を行うことができるようになる。この場合、平文空間で一致した場合には距離0となる。
次に、図4乃至図9を用いて、本実施の形態に係るシステムの概要を説明する。
図4に示すように、インターネットなどのネットワーク1には、マッチング対象のテキスト等を登録する処理を行う1又は複数の提供者装置5と、マッチング対象のテキスト等に対するパターンの照合処理を要求する1又は複数の照合者装置7と、例えばクラウドに含まれる情報処理装置3とが接続されている。
次に、図5に提供者装置5の機能ブロック図を示す。提供者装置5は、入力部50と、第1データ格納部51と、第1変換部52と、第2データ格納部53と、乗算部54と、第3データ格納部55と、第2変換部56と、第4データ格納部57と、暗号化部58と、公開鍵格納部59と、第5データ格納部60と、送信部61とを有する。
入力部50は、ユーザから又は接続されている他のコンピュータなどから、情報処理装置3に登録すべきマッチング対象のテキスト等のデータを取得し、第1データ格納部51に格納する。また、第1変換部52は、第1データ格納部51に格納されているデータを、数値ベクトル化する処理を実行し、第2データ格納部53に格納する。
乗算部54は、第2データ格納部53に格納されている数値ベクトルTの各成分の値を二乗することで得られる数値ベクトルT2と、三乗することで得られる数値ベクトルT3とを生成し、第3データ格納部55に格納する。
第2変換部56は、第2データ格納部53に格納されている数値ベクトルTを多項式に変換し、第3データ格納部55に格納されている数値ベクトルT2及びT3を多項式に変換し、当該多項式のデータを第4データ格納部57に格納する。
暗号化部58は、多項式演算可能な準同型暗号方式に従って、公開鍵格納部59に格納されている照合者の公開鍵を用いて第4データ格納部57に格納されている各多項式を暗号化し、暗号化されたデータを第5データ格納部60に格納する。送信部61は、第5データ格納部60に格納されているデータ及びテキストの長さkを、情報処理装置3へ送信する。
次に、図6に照合者装置7の機能ブロック図を示す。照合者装置7は、入力部70と、第1データ格納部71と、第1変換部72と、第2データ格納部73と、乗算部74と、第3データ格納部75と、第2変換部76と、第4データ格納部77と、暗号化部78と、公開鍵格納部79と、第5データ格納部80と、送信部81と、受信部82と、第6データ格納部83と、復号化部84と、秘密鍵格納部85と、第7データ格納部86と、判定部87と、第8データ格納部88と、出力部89とを有する。
入力部70は、ユーザから又は接続されている他のコンピュータなどから、マッチング対象のテキスト等のデータと照合すべきパターンのデータを取得し、第1データ格納部71に格納する。また、第2変換部72は、第1データ格納部71に格納されているデータを、数値ベクトル化する処理を実行し、第2データ格納部73に格納する。
乗算部74は、第2データ格納部73に格納されている数値ベクトルPの各成分の値を二乗することで得られる数値ベクトルP2と、三乗することで得られる数値ベクトルP3とを生成し、第3データ格納部75に格納する。
第2変換部76は、第2データ格納部73に格納されている数値ベクトルPを多項式に変換し、第3データ格納部75に格納されている数値ベクトルP2及びP3を多項式に変換し、当該多項式のデータを第4データ格納部77に格納する。
暗号化部78は、多項式演算可能な準同型暗号方式に従って、公開鍵格納部79に格納されている照合者の公開鍵を用いて第4データ格納部77に格納されている各多項式を暗号化し、暗号化されたデータを第5データ格納部80に格納する。送信部81は、第5データ格納部80に格納されているデータを、情報処理装置3へ送信する。
また、受信部82は、情報処理装置3から暗号演算結果を受信すると、第6データ格納部83に格納する。復号化部84は、秘密鍵格納部85に格納されている照合者の秘密鍵を用いて復号処理を行って、処理結果を第7データ格納部86に格納する。判定部87は、第2データ格納部73に格納されているデータ(パターンの長さl)と、第7データ格納部86に格納されたデータから、テキストなどにおいてパターンと一致する部分が存在するか否かなどを判定し、判定結果を第8データ格納部88に格納する。出力部89は、第8データ格納部88に格納されている判定結果を、出力装置(例えば他のコンピュータや印刷装置や表示装置など)へ出力する。
次に、図7に、情報処理装置3の機能ブロック図を示す。情報処理装置3は、登録部31と、データベース32と、受信部33と、暗号演算処理部35と、演算結果格納部36と、送信部37とを有する。
登録部31は、提供者装置5からマッチング対象テキスト等の暗号化データ及び長さkを受信すると、データベース32に格納する。受信部33は、照合者装置7から照合すべきパターンの暗号化データを受信すると、照合すべきパターンの暗号化データについては暗号演算処理部35に出力する。
暗号演算処理部35は、照合すべきパターンの暗号化データとデータベース32に格納されているマッチング対象テキスト等の暗号化データとを用いて、上記(8)式で表される暗号演算を実行し、演算結果を演算結果格納部36に格納する。そして、送信部37は、受信部33から得られる照合要求元に対して、演算結果格納部36に格納されている演算結果及びテキストの長さkを送信する。
次に、図8及び図9を用いて図4に示したシステムの処理内容について説明する。
まず、提供者装置5が、情報処理装置3に、マッチング対象テキストの暗号化データを登録する際の処理について図8を用いて説明する。
提供者装置5の入力部50は、例えば情報提供者又は他のコンピュータなどから、情報処理装置3に登録すべきテキスト(テキストは一例であって画像データ、音声データ、遺伝子記号列等の場合もある)を取得し、第1データ格納部51に格納する(図8:ステップS1)。そして、第1変換部52は、第1データ格納部51に格納されているテキストを数値ベクトル化することで数値ベクトルT=(t0,t1,...,tk-1)を第2データ格納部53に格納する(ステップS3)。テキストにもワイルドカードが含まれる場合がある。ワイルドカードについては原則的には「0」を割り当て、その他の文字については予め定められた数値を割り当てる。例えば、遺伝子の種類毎に特定の数値を予め割り当てておき、暗号化すべき遺伝子配列に含まれる遺伝子に応じて数値を選択して数値ベクトル化する。
また、乗算部54は、第2データ格納部53に格納されている数値ベクトルTの各成分を二乗することで数値ベクトルT2を算出し、三乗することで数値ベクトルT3を算出し、第3データ格納部55に格納する(ステップS5)。
さらに、第2変換部56は、第2データ格納部53に格納されている数値ベクトルTと、第3データ格納部55に格納されている数値ベクトルT2及びT3とに対して多項式変換を実行し、多項式変換によって生成された多項式mt(T)、mt(T2)及びmt(T3)を第4データ格納部57に格納する(ステップS7)。
具体的には、数値ベクトルTの各成分tiを昇順に各次元の係数として用いることで多項式mt(T)=Σiiiを生成する。
同様に、数値ベクトルT2の各成分t2 iを昇順に各次元の係数として用いることで多項式mt(T2)=Σi2 iiを生成する。
さらに、数値ベクトルT3の各成分t3 iを昇順に各次元の係数として用いることで多項式mt(T3)=Σi3 iiを生成する。
なお、第2変換部56は、数値ベクトルTのビット長kも、第4データ格納部57に格納する。
そして、暗号化部58は、第4データ格納部57に格納されている多項式mt(T)、mt(T2)及びmt(T3)を、多項式演算可能な準同型暗号方式に従って、公開鍵格納部59に格納されている照合者の公開鍵pkを用いて暗号化することで暗号化テキストE(mt(T))、E(mt(T2))及びE(mt(T3))を生成し、第5データ格納部60に格納する(ステップS9)。なお、暗号化部58は、数値ベクトルTのビット長kをも第5データ格納部60に格納する。E(Z)は、Zを多項式演算可能な準同型暗号方式に従って暗号化する処理を表す。
その後、送信部61は、第5データ格納部60に格納されている暗号化テキストE(mt(T))、E(mt(T2))及びE(mt(T3))と長さkとを、情報処理装置3へ送信する(ステップS11)。
情報処理装置3の登録部31は、暗号化テキストE(mt(T))、E(mt(T2))及びE(mt(T3))と長さkとを受信し、データベース32に登録する(ステップS13)。
以上のような処理を行うことで、暗号化した状態でテキスト等を、クラウドなどに設置された情報処理装置3へ登録することができるようになる。
次に、照合者が、特定のパターンについて照合処理を行わせる際の処理内容を図9を用いて説明する。
照合者装置7の入力部70は、例えば情報提供者又は他のコンピュータなどから、マッチング対象のテキスト等のデータと照合すべきパターンのデータを取得し、第1データ格納部71に格納する(図9:ステップS21)。
そして、第1変換部72は、第1データ格納部71に格納されているテキストを数値ベクトル化して、数値ベクトルデータP=(p0,p1,...,pl-1)を第2データ格納部73に格納する(ステップS23)。
また、乗算部74は、第2データ格納部73に格納されている数値ベクトルPの各成分を二乗することで数値ベクトルP2を算出し、三乗することで数値ベクトルP3を算出し、第3データ格納部75に格納する(ステップS25)。
さらに、第2変換部76は、第2データ格納部73に格納されている数値ベクトルPと、第3データ格納部75に格納されている数値ベクトルP2及びP3に対して多項式変換を実行し、多項式変換によって生成された多項式mp(P)、mp(P2)及びmp(P3)を第4データ格納部77に格納する(ステップS27)。
具体的には、数値ベクトルPの各成分piを降順に各次元の係数として用いることで多項式mp(P)=−Σjjn-jを生成する。
また、数値ベクトルP2の各成分p2 iを降順に各次元の係数として用いることで多項式mp(P2)=−Σj2 jn-jを生成する。
さらに、数値ベクトルP3の各成分p3 iを降順に各次元の係数として用いることで多項式mp(P3)=−Σj3 jn-jを生成する。
そして、暗号化部78は、第4データ格納部77に格納されている多項式mp(P)、mp(P2)及びmp(P3)を、多項式演算可能な準同型暗号方式に従って、公開鍵格納部79に格納されている照合者の公開鍵pkを用いて暗号化することで暗号化パターンE(mp(P))、E(mp(P2))及びE(mp(P3))を生成し、第5データ格納部80に格納する(ステップS29)。
その後、送信部81は、第5データ格納部80に格納されている暗号化パターンE(mp(P))、E(mp(P2))及びE(mp(P3))を、情報処理装置3へ送信する(ステップS31)。
情報処理装置3の受信部33は、暗号化パターンE(mp(P))、E(mp(P2))及びE(mp(P3))を受信し(ステップS33)、暗号化パターンE(mp(P))、E(mp(P2))及びE(mp(P3))を暗号演算処理部35に出力する。
そして、暗号演算処理部35は、(8)式に従って、データベース32に格納されている暗号化テキストE(mt(T))、E(mt(T2))及びE(mt(T3))と、暗号化パターンE(mp(P))、E(mp(P2))及びE(mp(P3))とを用いて、暗号化パターンマッチングの演算を実行し、演算結果d=(d0,d1,...)を演算結果格納部36に格納する(ステップS35)。なお、テキストの長さkについても、演算結果格納部36に格納する。
そして、送信部37は、演算結果格納部36に格納された演算結果d及びテキストの長さkを、受信部33へ暗号化パターン等を送信してきた照合者装置7へ送信する(ステップS37)。
照合者装置7の受信部82は、情報処理装置3から暗号化パターンマッチングの演算結果d及びテキストの長さkを受信し、第6データ格納部83に格納する(ステップS39)。そして、復号化部84は、秘密鍵格納部85に格納されている秘密鍵skを用いて、多項式演算可能な準同型暗号方式に従って、演算結果dを復号化することで、復号結果ベクトルm=[m0,m1,...,mn-1]を生成し、第7データ格納部86に格納する(ステップS41)。第7データ格納部86には、テキストの長さkの値も格納される。
判定部87は、第7データ格納部86に格納された復号結果ベクトルにおいて、0からk−l(長さlは第2データ格納部73から取得)までの成分値において0となる位置を特定することで、マッチング対象テキストにおいてパターンと一致する部分が存在するか否かを判定する(ステップS43)。
ベクトルm=[2,0,2,2,2,0,2,7]且つk−l=8−3=5であれば、左から順番に[2,0,2,2,2,0]において0となる位置「1」及び「5」が存在しているので、マッチング対象テキストにおいてパターンと一致する部分が存在することが分かる。判定部87は、判定結果を第8データ格納部88に格納する。出力部89は、照合者などの要求に応じて、出力装置(表示装置、印刷装置、他のコンピュータ)などに対して判定結果を出力する。
以上のような処理を実行することで、照合すべきパターンについても暗号化したままで、マッチング対象テキストと一致するか否かを判断するための暗号化パターンマッチングの演算結果を得ることができる。そして、照合者装置7において、照合者しか保持していない秘密鍵で復号すれば、簡単な処理にて、マッチング対象テキストとの一致の有無及びパターンが一致する位置を特定できるようになる。
さらに、ワイルドカードが、テキストやパターンに含まれていても同じ処理にて対処できるようになっている。すなわち、秘匿パターンマッチングの汎用性が高くなっている。
なお、上で述べた実施の形態における演算は基本形を示しただけであり、様々な変形が可能である。
上で述べた例では、多項式化において、テキストについては昇順、パターンについては降順というルールで、成分を各次数の係数として用いるようになっていたが、逆に、テキストについては降順、パターンについては昇順といったルールを採用しても良い。さらに、テキストについては正の係数、パターンについては負の係数を採用するルールであったが、テキストについて負の係数、パターンについては正の係数を採用するようにしても良い。
さらに、上で述べた例では、ワイルドカードについては「0」となるような数値ベクトル化を行っていたが、他の文字に対応する数値と重ならないようにすれば、どのような数値をワイルドカードに割り当てるようにしても良い。
すなわち、例えばワイルドカードにzという値を割り当てるようにした場合、図3右側の式は、以下のように書き換えられる。
Figure 0006260442
このような式を展開して、対応する多項式演算を規定すれば、暗号化パターンマッチングの演算が規定される。この場合でも、T、T2、T3、P、P2及びP3をベースにした演算ということは変わらない。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、各装置の機能ブロック図は一例であって、プログラムモジュール構成とは一致しない場合もある。また、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、複数ステップを並列実行するようにしても良い。
また、各装置については1台のコンピュータではなく、複数台のコンピュータにて実装される場合もある。また、照合者装置7と提供者装置5とが一体となっている場合もある。
なお、上で述べた情報処理装置3、提供者装置5及び照合者装置7は、コンピュータ装置であって、図10に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係るマッチング方法は、(A)第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、(B)第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、(C)第1の数値ベクトルを多項式変換した第1の多項式と、第2の数値ベクトルを多項式変換した第2の多項式と、第3の数値ベクトルを多項式変換した第3の多項式とを生成し、(D)第1の多項式と第2の多項式と第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、(E)第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第4の多項式と、第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第5の多項式と、第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された第4の多項式と第5の多項式と第6の多項式と、暗号化された第1の多項式と第2の多項式と第3の多項式とを用いて所定の演算を暗号化したまま実行し、(F)所定の演算の演算結果を復号化する処理を含む。
このような処理を行うことで、第1のテキストが第2のテキストの一部と一致するか否かを秘匿したまま判断することができるようになる。この際、数値ベクトルの二乗及び三乗をも用意するのは、ワイルドカードが含まれるような場合に対処するためであり、秘匿パターンマッチングの汎用性が高くなっている。
すなわち、上で述べた所定の演算が、平文において、(e1)第1のテキストが第2のテキストの一部と一致する場合、(e2)いずれの文字とも一致することを表す特殊文字を含む第1のテキストが第2のテキストの一部と一致する場合、及び(e3)第1のテキストが、特殊文字を含む、第2のテキストの一部と一致する場合に、距離が0となる演算であれば好ましい。
また、上で述べたマッチング方法は、(G)復号化された演算結果に含まれるベクトルにおいて、0となる成分を特定する処理をさらに含むようにしても良い。このようにすれば、第2のテキストにおいて第1のテキストがどの位置で一致するかをも判断できるようになる。
さらに、第4乃至第6の多項式を生成する際に行われる多項式変換が、第1乃至第3の多項式を生成する際に行われる多項式変換とは異なる多項式変換であることもある。
本実施の形態の第2の態様に係る秘匿処理方法は、(A)第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、(B)第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、(C)第1の数値ベクトルを多項式変換した第1の多項式と、第2の数値ベクトルを多項式変換した第2の多項式と、第3の数値ベクトルを多項式変換した第3の多項式とを生成し、(D)第1の多項式と第2の多項式と第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化する処理を含む。
テキストを登録する場合も、パターンで検索する場合も、このような処理を実行する。
また、本実施の形態の第3の態様に係る秘匿処理方法は、(A)第1のテキストを数値ベクトル化することで生成された第1の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第1の多項式と、第1の数値ベクトルの各成分を二乗した第2の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第2の多項式と、第1の数値ベクトルの各成分を三乗した第3の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第3の多項式とを受信し、(B)第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第4の多項式と、第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第5の多項式と、第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第6の多項式とを格納するデータ格納部に格納された第4の多項式と第5の多項式と第6の多項式と、第1の多項式と第2の多項式と第3の多項式とを用いて所定の演算を暗号化したまま実行し、(C)所定の演算の演算結果を返信する処理を含む。
例えば、クラウドなどに設けられるコンピュータにより実行される。
なお、上で述べたような処理をコンピュータ又はプロセッサに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、
第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
前記所定の演算の演算結果を復号化する
処理を含み、複数のコンピュータを含むシステムが実行するマッチング方法。
(付記2)
前記所定の演算が、
平文において、前記第1のテキストが前記第2のテキストの一部と一致する場合、いずれの文字とも一致することを表す特殊文字を含む前記第1のテキストが前記第2のテキストの一部と一致する場合、及び前記第1のテキストが、前記特殊文字を含む、前記第2のテキストの一部と一致する場合に、距離が0となる演算である
付記1記載のマッチング方法。
(付記3)
復号化された前記演算結果に含まれるベクトルにおいて、0となる成分を特定する処理
をさらに含む付記1又は2記載のマッチング方法。
(付記4)
前記第4乃至第6の多項式を生成する際に行われる多項式変換が、前記第1乃至第3の多項式を生成する際に行われる多項式変換とは異なる多項式変換である
付記1乃至3のいずれか1つ記載のマッチング方法。
(付記5)
第1のテキストを格納する第1のデータ格納部にアクセス可能な第1の情報処理装置と、
第2の情報処理装置と、
を有し、
前記第1の情報処理装置が、
第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、
暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式を、前記第2の情報処理装置に送信し、
前記第2の情報処理装置は、
前記第1の情報処理装置から、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式を受信し、
第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
前記所定の距離の演算結果を、前記第1の情報処理装置に送信し、
前記第1の情報処理装置が、
前記第2の情報処理装置から、前記所定の距離の演算結果を受信し、
前記所定の演算の演算結果を復号化する
システム。
(付記6)
第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化する
処理を、コンピュータに実行させるためのプログラム。
(付記7)
第1のテキストを数値ベクトル化することで生成された第1の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第1の多項式と、前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第2の多項式と、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第3の多項式とを受信し、
第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納するデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
前記所定の演算の演算結果を返信する
処理を、コンピュータに実行させるためのプログラム。
31 登録部
32 データベース
33 受信部
35 暗号演算処理部
36 演算結果格納部
37 送信部
50 入力部
51 第1データ格納部
52 第1変換部
53 第2データ格納部
54 乗算部
55 第3データ格納部
56 第2変換部
57 第4データ格納部
58 暗号化部
59 公開鍵格納部
60 第5データ格納部
61 送信部
70 入力部
71 第1データ格納部
72 第1変換部
73 第2データ格納部
74 乗算部
75 第3データ格納部
76 第2変換部
77 第4データ格納部
78 暗号化部
79 公開鍵格納部
80 第5データ格納部
81 送信部
82 受信部
83 第6データ格納部
84 復号化部
85 秘密鍵格納部
86 第7データ格納部
87 判定部
88 第8データ格納部
89 出力部

Claims (7)

  1. 第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
    前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
    前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
    前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、
    第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
    前記所定の演算の演算結果を復号化する
    処理を含み、複数のコンピュータを含むシステムが実行するマッチング方法。
  2. 前記所定の演算が、
    平文において、前記第1のテキストが前記第2のテキストの一部と一致する場合、いずれの文字とも一致することを表す特殊文字を含む前記第1のテキストが前記第2のテキストの一部と一致する場合、及び前記第1のテキストが、前記特殊文字を含む、前記第2のテキストの一部と一致する場合に、距離が0となる演算である
    請求項1記載のマッチング方法。
  3. 復号化された前記演算結果に含まれるベクトルにおいて、0となる成分を特定する処理
    をさらに含む請求項1又は2記載のマッチング方法。
  4. 前記第4乃至第6の多項式を生成する際に行われる多項式変換が、前記第1乃至第3の多項式を生成する際に行われる多項式変換とは異なる多項式変換である
    請求項1乃至3のいずれか1つ記載のマッチング方法。
  5. 第1のテキストを格納する第1のデータ格納部にアクセス可能な第1の情報処理装置と、
    第2の情報処理装置と、
    を有し、
    前記第1の情報処理装置が、
    第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
    前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
    前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
    前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化し、
    暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式を、前記第2の情報処理装置に送信し、
    前記第2の情報処理装置は、
    前記第1の情報処理装置から、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式を受信し、
    第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納する第2のデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、暗号化された前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
    前記所定の距離の演算結果を、前記第1の情報処理装置に送信し、
    前記第1の情報処理装置が、
    前記第2の情報処理装置から、前記所定の距離の演算結果を受信し、
    前記所定の演算の演算結果を復号化する
    システム。
  6. 第1のデータ格納部に格納された第1のテキストを数値ベクトル化することで第1の数値ベクトルを生成し、
    前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルと、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルとを生成し、
    前記第1の数値ベクトルを多項式変換した第1の多項式と、前記第2の数値ベクトルを多項式変換した第2の多項式と、前記第3の数値ベクトルを多項式変換した第3の多項式とを生成し、
    前記第1の多項式と前記第2の多項式と前記第3の多項式とを、多項式演算可能な準同型暗号方式によって暗号化する
    処理を、コンピュータに実行させるためのプログラム。
  7. 第1のテキストを数値ベクトル化することで生成された第1の数値ベクトルに対して多項式変換且つ準同型暗号方式による暗号化を行って得られる第1の多項式と、前記第1の数値ベクトルの各成分を二乗した第2の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第2の多項式と、前記第1の数値ベクトルの各成分を三乗した第3の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第3の多項式とを受信し、
    第2のテキストを数値ベクトル化することで生成された第4の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第4の多項式と、前記第4の数値ベクトルの各成分を二乗した第5の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第5の多項式と、前記第4の数値ベクトルの各成分を三乗した第6の数値ベクトルに対して多項式変換且つ前記準同型暗号方式による暗号化を行って得られる第6の多項式とを格納するデータ格納部に格納された前記第4の多項式と前記第5の多項式と前記第6の多項式と、前記第1の多項式と前記第2の多項式と前記第3の多項式とを用いて所定の演算を暗号化したまま実行し、
    前記所定の演算の演算結果を返信する
    処理を、コンピュータに実行させるためのプログラム。
JP2014095093A 2014-05-02 2014-05-02 情報処理方法及びプログラム Active JP6260442B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014095093A JP6260442B2 (ja) 2014-05-02 2014-05-02 情報処理方法及びプログラム
US14/697,573 US9596083B2 (en) 2014-05-02 2015-04-27 Information processing technique for pattern matching
EP15165670.9A EP2940921B1 (en) 2014-05-02 2015-04-29 Information processing technique for wildcard pattern matching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014095093A JP6260442B2 (ja) 2014-05-02 2014-05-02 情報処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2015212756A JP2015212756A (ja) 2015-11-26
JP6260442B2 true JP6260442B2 (ja) 2018-01-17

Family

ID=53191472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014095093A Active JP6260442B2 (ja) 2014-05-02 2014-05-02 情報処理方法及びプログラム

Country Status (3)

Country Link
US (1) US9596083B2 (ja)
EP (1) EP2940921B1 (ja)
JP (1) JP6260442B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6413598B2 (ja) * 2014-10-10 2018-10-31 富士通株式会社 暗号処理方法、暗号処理装置、及び暗号処理プログラム
JP6413743B2 (ja) 2014-12-16 2018-10-31 富士通株式会社 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2017096590A1 (en) * 2015-12-10 2017-06-15 Nokia Technologies Oy Schemes of homomorphic re-encryption
US11196539B2 (en) * 2017-06-22 2021-12-07 Microsoft Technology Licensing, Llc Multiplication operations on homomorphic encrypted data
US10728017B2 (en) 2017-11-03 2020-07-28 International Business Machines Corporation Performing vector comparison operations in fully homomorphic encryption
JP6977882B2 (ja) * 2018-05-25 2021-12-08 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム
WO2020087106A1 (en) * 2018-10-31 2020-05-07 Commonwealth Scientific And Industrial Research Organisation Monitoring a manufacturing process
US11178117B2 (en) * 2018-12-18 2021-11-16 International Business Machines Corporation Secure multiparty detection of sensitive data using private set intersection (PSI)
US10769502B1 (en) * 2019-04-08 2020-09-08 Dropbox, Inc. Semantic image retrieval
US10839060B1 (en) * 2019-08-27 2020-11-17 Capital One Services, Llc Techniques for multi-voice speech recognition commands
KR102393941B1 (ko) * 2020-04-08 2022-05-04 주식회사 크립토랩 근사 암호화된 암호문에 대한 인코딩 또는 디코딩
JP7527866B2 (ja) * 2020-07-01 2024-08-05 キヤノン株式会社 プログラム、情報処理装置及び制御方法
CN111783126B (zh) * 2020-07-21 2022-04-29 支付宝(杭州)信息技术有限公司 一种隐私数据识别方法、装置、设备和可读介质
US11444767B1 (en) * 2021-03-03 2022-09-13 Nxp B.V. Method for multiplying polynomials for a cryptographic operation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3417051B2 (ja) * 1994-05-20 2003-06-16 東洋インキ製造株式会社 光源に依存しない特徴パラメータ値を用いた色情報処理方法および装置
DE19623033C1 (de) * 1996-06-08 1997-10-16 Aeg Electrocom Gmbh Verfahren und Anordnung zur Mustererkennung auf statistischer Basis
JP2007114494A (ja) 2005-10-20 2007-05-10 Nippon Telegr & Teleph Corp <Ntt> 秘匿計算方法及び装置
JP2011505034A (ja) * 2007-11-27 2011-02-17 ソリナム ソルション カンパニー,リミテッド 使い捨て用仮想秘密情報認証システムおよび認証方法
JP4544334B2 (ja) * 2008-04-15 2010-09-15 ソニー株式会社 画像処理装置および画像処理方法
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
WO2012064587A2 (en) * 2010-11-11 2012-05-18 Google Inc. Vector transformation for indexing, similarity search and classification
JP6069852B2 (ja) 2011-08-29 2017-02-01 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
JP5667969B2 (ja) * 2011-12-22 2015-02-12 株式会社日立製作所 検索処理システムおよび部分一致検索方法
US9281941B2 (en) * 2012-02-17 2016-03-08 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
CN104335219B (zh) * 2012-03-30 2018-06-05 爱迪德技术有限公司 使用变量相关编码来保护可访问的系统
US9355377B2 (en) * 2013-06-25 2016-05-31 Sap Se Carbon dioxide emissions optimized secure cloud computing

Also Published As

Publication number Publication date
US20150318991A1 (en) 2015-11-05
EP2940921B1 (en) 2020-03-18
US9596083B2 (en) 2017-03-14
EP2940921A1 (en) 2015-11-04
JP2015212756A (ja) 2015-11-26

Similar Documents

Publication Publication Date Title
JP6260442B2 (ja) 情報処理方法及びプログラム
JP6244728B2 (ja) 情報処理方法及びプログラム
JP6349841B2 (ja) 暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置
JP6083234B2 (ja) 暗号処理装置
Liu et al. Efficient and privacy-preserving outsourced calculation of rational numbers
US9100185B2 (en) Encryption processing apparatus and method
JP6413743B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP6413598B2 (ja) 暗号処理方法、暗号処理装置、及び暗号処理プログラム
US9413729B2 (en) Symmetric encryption apparatus and storage medium, and symmetric decryption apparatus and storage medium
JP2016012111A (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
EP3163792B1 (en) Fully homomorphic message authentication method, device and system
JP5814880B2 (ja) 暗号システム、暗号方法、暗号プログラム及び復号装置
JPWO2010123112A1 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
JP2016114692A (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
EP3644544A1 (en) Method for comparing ciphertext using homomorphic encryption and apparatus for executing thereof
JP6738062B2 (ja) 暗号文照合システム、方法、および記録媒体
Ding et al. Cryptanalysis of a public key cryptosystem based on Diophantine equations via weighted LLL reduction
JP6738061B2 (ja) 暗号文照合システム、方法、および記録媒体
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
WO2013072947A1 (ja) 秘匿文字列検索システム
JP4836208B2 (ja) 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
JP2017038336A (ja) 復号方法
KR20160017226A (ko) co-ACD 문제 기반의 부가적 동형 암호화 및 복호화 방법과 이를 이용하는 장치
Palmer et al. Lattice-Based Cryptography for Internet-of-Things in Post-quantum Computing
Schneider et al. Basics of Efficient Secure Function Evaluation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171027

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171127

R150 Certificate of patent or registration of utility model

Ref document number: 6260442

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150