JP2016080766A - 暗号処理方法、暗号処理装置、及び暗号処理プログラム - Google Patents

暗号処理方法、暗号処理装置、及び暗号処理プログラム Download PDF

Info

Publication number
JP2016080766A
JP2016080766A JP2014209326A JP2014209326A JP2016080766A JP 2016080766 A JP2016080766 A JP 2016080766A JP 2014209326 A JP2014209326 A JP 2014209326A JP 2014209326 A JP2014209326 A JP 2014209326A JP 2016080766 A JP2016080766 A JP 2016080766A
Authority
JP
Japan
Prior art keywords
polynomial
encryption
vector
term
cryptographic
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.)
Granted
Application number
JP2014209326A
Other languages
English (en)
Other versions
JP6413598B2 (ja
Inventor
郁也 森川
Ikuya Morikawa
郁也 森川
雅哉 安田
Masaya Yasuda
雅哉 安田
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 JP2014209326A priority Critical patent/JP6413598B2/ja
Priority to US14/831,179 priority patent/US9871652B2/en
Priority to EP15182327.5A priority patent/EP3007382B1/en
Publication of JP2016080766A publication Critical patent/JP2016080766A/ja
Application granted granted Critical
Publication of JP6413598B2 publication Critical patent/JP6413598B2/ja
Expired - Fee Related 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】ベクトルの暗号乗算により生成された暗号情報の復号時におけるベクトル要素の漏洩を防止する。
【解決手段】コンピュータが、第1の暗号化多項式と第2の暗号化多項式とを乗算した結果を用いて、第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、第3の暗号化多項式を表す暗号情報を出力する。第1の暗号化多項式は、第1のベクトルに対応する第1の多項式を暗号化した多項式であり、第2の暗号化多項式は、第2のベクトルに対応する第2の多項式を暗号化した多項式である。第3の多項式は、第1のベクトルと第2のベクトルとの内積に基づく係数を有する第1の項を含み、第1の項以外の第2の項が有する係数はマスクされている。
【選択図】図2

Description

本発明は、暗号処理方法、暗号処理装置、及び暗号処理プログラムに関する。
近年、計算機やネットワークに関する技術の進展と普及に伴い、個人の属性や行動に関するデータ(個人データ)や企業等の組織の機密データの重要性が増している。個人データや機密データを演算又は分析して利用することで、これまでにない新たな知見を得たり、新たな機能を実現したりすることができる。
一方、個人データや機密データを利用することで、個人のプライバシーや組織の秘密が侵される危険性が指摘されている。そこで、個人データや機密データを保護したまま利用することを可能にする秘匿化技術が注目されている。
暗号技術を用いた秘匿化技術として、準同型暗号技術が知られている。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の1つであり、データを暗号化したままでデータ操作が可能となる機能を有する。準同型暗号技術によれば、2つ以上の暗号文を対象に加算や乗算等に対応する操作を行うことで、暗号文を復号することなく、元の平文同士に対して加算や乗算等を行った演算結果の暗号文を得ることができる。
準同型暗号技術の1つとして、加算及び乗算を何度でも行える完全準同型暗号方式が提唱されている(例えば、非特許文献1を参照)。完全準同型暗号によれば、排他的論理和、論理積、否定等の操作が実現できるため、暗号文を復号することなく、あらゆる論理回路による演算を実現可能である。しかし、暗号化、復号、及び秘匿演算の処理時間や暗号文のサイズが膨大であり、現在のところ性能的には実用的ではない。
そこで、性能的により実用的な準完全準同型暗号方式が提唱されている(例えば、非特許文献2及び非特許文献3を参照)。準完全準同型暗号によれば、乗算回数等が制限されるものの、より高速な処理が実現できる。
準同型暗号を利用した秘匿距離計算において、暗号ベクトルデータのサイズと秘匿距離計算の時間の両方を削減する暗号処理装置も知られている(例えば、特許文献1及び非特許文献4を参照)。この暗号処理装置は、第1のベクトルから第1の変換多項式を用いて第1の多項式を得るとともに、第2のベクトルから第2の変換多項式を用いて第2の多項式を得る。次に、暗号処理装置は、第1のベクトルの秘匿距離に関する第1の重みと、第2のベクトルの秘匿距離に関する第2の重みとを得る。
次に、暗号処理装置は、第1の多項式、第2の多項式、第1の重み、及び第2の重みのそれぞれを準同型暗号方式を用いて暗号化し、第1の暗号化多項式、第2の暗号化多項式、第1の暗号化重み、及び第2の暗号化重みを得る。そして、暗号処理装置は、第1の暗号化多項式、第2の暗号化多項式、第1の暗号化重み、及び第2の暗号化重みから、第1のベクトルと第2のベクトルの秘匿距離の暗号化に対応する暗号化秘匿距離を得る。
特開2014−126865号公報
C. Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", STOC 2009, pp. 169-178, 2009. C. Gentry and S. Halevi, "Implementing Gentry’s Fully Homomorphic Encryption Scheme", EUROCRYPT 2011, LNCS 6632, pp. 129-148, 2011. K. Lauter, M. Naehrig, V. Vaikuntanathan, "Can Homomorphic Encryption be Practical?", CCSW 2011, pp. 113-124, 2011. 安田,下山,横山,小暮,「準同型暗号を用いた複数企業間の顧客情報分析」,第12回情報科学技術フォーラム(FIT 2013),第4分冊 pp.15−22,2013.
特許文献1の暗号処理装置を用いた場合、復号者は、暗号化秘匿距離を復号することで、2つのベクトルの秘匿距離だけでなく、入力データである各ベクトルの要素に関する情報も知ることができる。これにより、復号者に対してベクトルの要素が漏洩してしまう可能性がある。
なお、かかる問題は、暗号化秘匿距離を復号する場合に限らず、2つの暗号化多項式を乗算した結果を表す暗号情報を復号する場合においても生ずるものである。
1つの側面において、本発明は、ベクトルの暗号乗算により生成された暗号情報の復号時におけるベクトル要素の漏洩を防止することを目的とする。
1つの案では、コンピュータが、第1の暗号化多項式と第2の暗号化多項式とを乗算した結果を用いて、第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、第3の暗号化多項式を表す暗号情報を出力する。
第1の暗号化多項式は、第1のベクトルに対応する第1の多項式を暗号化した多項式であり、第2の暗号化多項式は、第2のベクトルに対応する第2の多項式を暗号化した多項式である。第3の多項式は、第1のベクトルと第2のベクトルとの内積に基づく係数を有する第1の項を含み、第1の項以外の第2の項が有する係数はマスクされている。
実施形態によれば、ベクトルの暗号乗算により生成された暗号情報の復号時におけるベクトル要素の漏洩を防止することができる。
暗号処理装置の機能的構成図である。 暗号処理のフローチャートである。 生体認証システムの構成図である。 生体認証システムが行う処理を示す図である。 暗号処理の具体例を示すフローチャートである。 マスク処理のフローチャートである。 認証処理のフローチャートである。 次数をシフトする第1の暗号化処理のフローチャートである。 シフト操作に基づくマスク処理のフローチャートである。 シフト操作に基づく認証処理の第1の例を示すフローチャートである。 シフト操作に基づく認証処理の第2の例を示すフローチャートである。 次数をシフトする第2の暗号化処理のフローチャートである。 次数をシフトする暗号処理のフローチャートである。 情報処理装置の構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
非特許文献3の3.2節には、非特許文献2の準完全準同型暗号方式を拡張した準完全準同型暗号方式の構成法について記載されている。この構成法では、まず、暗号鍵生成において、主に3つの鍵生成パラメータ(n,q,t)が用いられる。nは2冪の整数であり、格子次元と呼ばれる。qは素数であり、tは素数qよりも小さい整数である。
暗号鍵生成の手順として、まず、秘密鍵として各係数が非常に小さいn−1次多項式skがランダムに生成される。各係数の大きさは、あるパラメータσにより制限される。次に、各係数がqより小さいn−1次多項式a1と、各係数が非常に小さいn−1次多項式eとがランダムに生成される。そして、次式の多項式a0が計算され、多項式の組(a0,a1)が公開鍵pkとして定義される。
a0=−(a1*sk+t*e) (1)
ただし、多項式a0の計算では、n次以上の多項式に対してxn=−1,xn+1=−x,...を適用することで、絶えずn次より小さい次数の多項式が計算される。さらに、多項式に含まれる各項の係数としては、その係数を素数qで除算したときの剰余が用いられる。このような多項式演算を行う空間は、学術的にはRq:=Fq[x]/(xn+1)と表されることが多い。
次に、各係数がtより小さいn−1次多項式で表される平文データmと公開鍵pkとに対して、各係数が非常に小さい3つのn−1次多項式u、f、及びgがランダムに生成され、平文データmの暗号データEnc(m,pk)が次式により定義される。
Enc(m,pk)=(c0,c1) (2)
c0=a0*u+t*g+m (3)
c1=a1*u+t*f (4)
多項式c0及び多項式c1の計算においても、空間Rq上の多項式演算が用いられる。このとき、暗号データEnc(m1,pk)=(c0,c1)と暗号データEnc(m2,pk)=(d0,d1)とに対する暗号加算は、次式により計算される。
Enc(m1,pk)+Enc(m2,pk)=(c0+d0,c1+d1) (5)
また、暗号データEnc(m1,pk)と暗号データEnc(m2,pk)とに対する暗号乗算は、次式により計算される。
Enc(m1,pk)*Enc(m2,pk)
=(c0*d0,c0*d1+c1*d0,c1*d1) (6)
式(6)の暗号乗算を行うと、暗号データが2次元ベクトルから3次元ベクトルに変化する。暗号乗算を複数回繰り返すと、乗算結果の暗号データの要素はさらに増加する。
次に、復号処理について説明する。複数回の暗号乗算等の操作により要素が増加した暗号データc=(c0,c1,c2,...)に対して、秘密鍵skを用いて次式の復号結果Dec(c,sk)を計算することで、暗号データcが復号される。
Dec(c,sk)
=[c0+c1*sk+c2*sk2+・・・]q mod t (7)
式(7)において、[f(x)]q mod tは、多項式f(x)の各係数ziを[zi]q mod tに置き換えた多項式を表す。整数zに対する[z]qの値は、zをqで除算したときの剰余wを用いて、次式により定義される。
[z]q=w (w<q/2の場合) (8)
[z]q=w−q (w≧q/2の場合) (9)
したがって、[z]qの値域は[−q/2,q/2)となる。また、a mod tは、整数aをtで除算したときの剰余を表す。
例えば、(n,q,t)=(4,1033,20)の場合、秘密鍵sk、公開鍵pk、及び暗号データEnc(m,pk)の簡単な例として、以下のような多項式が挙げられる。
sk=Mod(Mod(4,1033)*x3+Mod(4,1033)*x2
+Mod(1,1033)*x,x4+1) (10)
pk=(a0,a1) (11)
a0=Mod(Mod(885,1033)*x3
+Mod(519,1033)*x2+Mod(621,1033)*x
+Mod(327,1033),x4+1) (12)
a1=Mod(Mod(661,1033)*x3
+Mod(625,1033)*x2+Mod(861,1033)*x
+Mod(311,1033),x4+1) (13)
Enc(m,pk)=(c0,c1) (14)
m=3+2x+2x2+2x3 (15)
c0=Mod(Mod(822,1033)*x3
+Mod(1016,1033)*x2+Mod(292,1033)*x
+Mod(243,1033),x4+1) (16)
c1=Mod(Mod(840,1033)*x3
+Mod(275,1033)*x2+Mod(628,1033)*x
+Mod(911,1033),x4+1) (17)
式(10)〜式(17)において、Mod(a,q)は、整数aを素数qで除算したときの剰余を表し、Mod(f(x),x4+1)は、多項式f(x)を多項式x4+1で除算したときの剰余(多項式)を表す。例えば、f(x)=x4に対するMod(f(x),x4+1)は、f(x)=−1に対するMod(f(x),x4+1)と等しく、f(x)=x5に対するMod(f(x),x4+1)は、f(x)=−xに対するMod(f(x),x4+1)と等しい。
このような準完全準同型暗号方式は、完全準同型暗号方式に比べて性能的に優れているが、ベクトルデータ(複数のデータの列)を一度に処理する場合には、依然として処理時間や暗号データのサイズが多大であり、実用的に十分な性能を有していない。
この問題に対して、特許文献1の暗号処理装置によれば、ベクトルデータを多項式変換により1つの多項式で表現し、その多項式を準同型暗号により暗号化することで、処理時間や暗号データのサイズが大幅に改善される。
この暗号処理装置では、例えば、次のような2つのd次元ベクトルが入力データとして用いられる。
A=(a1,a2,a3,...,ad) (21)
B=(b1,b2,b3,...,bd) (22)
2つのベクトルを暗号化したままで2つのベクトルの間の距離を高速に計算するために、次のような昇順変換と降順変換の2種類の多項式変換が用いられる。
[昇順変換]
A=(a1,a2,a3,...,ad
⇒pm1(A)=a1+a2x+a32+・・・+add-1 (23)
[降順変換]
B=(b1,b2,b3,...,bd
⇒pm2(B)=b1d+b2d-1+・・・+bdx (24)
多項式pm1(A)及び多項式pm2(B)を準同型暗号Eにより暗号化すると、暗号化多項式E1(A)及び暗号化多項式E2(B)が生成される。
E1(A)=E(pm1(A)) (25)
E2(B)=E(pm2(B)) (26)
暗号化多項式E1(A)及び暗号化多項式E2(B)に対して準同型暗号の性質を用いれば、次式の暗号乗算処理により、ベクトルAとベクトルBの内積を高速に計算することができる。
E(D)=E1(A)*E2(B)
=E(pm1(A))*E(pm2(B)) (27)
秘密鍵を持つ復号者が暗号乗算処理の乗算結果E(D)を復号して得られる多項式Dは、pm1(A)*pm2(B)の乗算により得られる多項式と等価である。このため、多項式Dに含まれるxdの項の係数から、ベクトルAとベクトルBの内積a11+a22+・・・+addが得られる。
例えば、ベクトルA及びベクトルBが2値ベクトルである場合、ベクトルAの要素a1〜要素adのすべてが0又は1であり、ベクトルBの要素b1〜要素bdのすべてが0又は1である。この場合、式(27)の暗号乗算処理の性質を用いて、E1(A)及びE2(B)を準同型暗号化したままで、次式によりベクトルAとベクトルBのハミング距離を計算することができる。
E(DH)=E1(A)*E2(C)+E1(C)*E2(B)
−2*E1(A)*E2(B) (28)
式(28)において、ベクトルCは、すべての要素が1であるベクトルである。
C=(1,1,...,1) (29)
暗号化ハミング距離E(DH)を復号して得られる多項式DHは、次式の計算により得られる多項式と等価である。
pm1(A)*pm2(C)+pm1(C)*pm2(B)
−2*pm1(A)*pm2(B) (30)
このため、多項式DHに含まれるxdの項の係数から、ベクトルAとベクトルBのハミング距離HDが得られる。
HD=a1+a2+・・・+ad+b1+b2+・・・+bd
−2(a11+a22+・・・+add) (31)
準同型暗号としては、ideal latticesベースの準同型暗号、ring-Lauter-Naehrig-Vaikuntanathan(ring−LWE)ベースの準同型暗号等を用いることができる。
このような暗号演算処理によれば、2つのベクトルの内積又はハミング距離を求める秘匿計算を高速かつ小さなデータサイズで行うことができる。この暗号演算処理は、生体から取得したデータを比較する生体認証システム、多くのタグの中からある特徴を有するタグを検索するタグ検索システム等において利用される。
ところで、秘密鍵を持つ復号者がベクトルA及びベクトルBのすべての要素を知っていても構わない場合、復号者は、暗号演算処理を行う代わりに、ベクトルA及びベクトルBを直接用いて内積又はハミング距離を計算すればよい。しかし、復号者はベクトルAとベクトルBの内積又はハミング距離を知ってもよいが、ベクトルA及びベクトルBの要素そのものを知ることは好ましくない、というセキュリティ要件が課されることがしばしばある。
特許文献1の暗号処理装置を用いた場合、暗号演算処理の副産物として、暗号化前の入力データの情報が暗号演算結果に残っている。このため、暗号演算結果を復号すると、復号者は、内積又はハミング距離等の演算結果だけでなく、入力データ同士の関係に関するその他の情報も多く知ることができる。この場合、復号者は、これらの情報から本来は秘匿すべき入力データの一部又は全部を求めることが可能になり、セキュリティ要件が満たされない。
例えば、式(27)の乗算結果E(D)に対応する多項式Dは、xdの項の係数として、ベクトルAとベクトルBの内積a11+a22+・・・+addを含むとともに、xの他の次数の項の係数も含んでいる。例えば、x0の項(定数項)にはa1が含まれ、x1の項の係数にはa1dが含まれ、x2の項の係数にはa1d-1+a2d-2が含まれている。どの項にどの値が現れるかは、多項式演算を行う空間Rqの格子次元nに依存する。
これらの係数の値は、元のベクトルA及びベクトルBの各要素の値に由来しており、これらの係数からベクトルA及びベクトルBの要素の一部又は全部を決定的又は確率的に導き出すことができる。したがって、暗号演算結果を復号して演算結果を得る復号者には、本来知らせるべき演算結果だけでなく、秘匿したいベクトルA及びベクトルBの情報が漏洩してしまう。
特に、復号者がベクトルA又はベクトルBの一方を知っている場合や、復号者がベクトルA又はベクトルBの一方を意図的に決められる場合は、情報の漏洩が顕著である。また、ベクトルA及びベクトルBは公開鍵によって暗号化されるため、誰でも意図的に作成したベクトルの暗号データを用意することができる。このため、暗号がもたらす保護によって情報の漏洩を防止することは困難である。
図1は、実施形態の暗号処理装置の機能的構成例を示している。図1の暗号処理装置101は、記憶部111、生成部112、及び出力部113を含む。記憶部111は、第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式を表す暗号情報を記憶する。生成部112は、記憶部111が記憶する暗号情報を用いて暗号処理を行い、出力部113は、暗号処理の結果を出力する。
図2は、図1の暗号処理装置101が行う暗号処理の例を示すフローチャートである。生成部112は、第1の暗号化多項式と第2の暗号化多項式とを乗算した結果を用いて、第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成する(ステップ201)。
第1の暗号化多項式は、第1のベクトルに対応する第1の多項式を暗号化した多項式であり、第2の暗号化多項式は、第2のベクトルに対応する第2の多項式を暗号化した多項式である。第3の多項式は、第1のベクトルと第2のベクトルとの内積に基づく係数を有する第1の項を含み、第1の項以外の第2の項が有する係数はマスクされている。出力部113は、第3の暗号化多項式を表す暗号情報を出力する(ステップ202)。
このような暗号処理装置101によれば、ベクトルの暗号乗算により生成された暗号情報の復号時におけるベクトル要素の漏洩を防止することができる。
図3は、図1の暗号処理装置101を含む生体認証システムの構成例を示している。図3の認証システムは、暗号処理装置101、端末装置301−1、端末装置301−2、及び認証装置302を含み、登録モードの動作と認証モードの動作とを行う。暗号処理装置101と、端末装置301−1、端末装置301−2、及び認証装置302とは、通信ネットワークにより接続されている。
端末装置301−1及び端末装置301−2は、生体情報を暗号化して暗号処理装置101へ送信する装置であり、例えば、生体情報を表すベクトルと公開鍵とを知っているユーザの装置である。
暗号処理装置101は、暗号化されたベクトルを用いた暗号演算処理を行って暗号演算結果を認証装置302へ送信する装置であり、例えば、公開鍵を知っているサービス業者の装置である。認証装置302は、暗号演算結果を復号して認証を行う装置であり、例えば、秘密鍵を知っている復号者の装置である。
図4は、図3の生体認証システムが行う処理の例を示している。登録モードにおいて、端末装置301−1は、登録者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式(21)のようなベクトルAに変換し、暗号化処理401−1を行う。センサにより取得される生体情報としては、指紋、顔、静脈、虹彩等の画像情報又は声等の音声情報を用いることができる。
暗号化処理401−1において、端末装置301−1は、ベクトルAを式(23)のような多項式pm1(A)に変換し、多項式pm1(A)を準同型暗号により暗号化して暗号化多項式E1(A)を生成する。そして、端末装置301−1は、暗号化多項式E1(A)を表す暗号情報を暗号処理装置101へ送信し、暗号処理装置101は、端末装置301−1から受信した暗号情報を、登録暗号情報311として記憶部111に格納する。暗号化多項式を表す暗号情報としては、例えば、暗号化多項式の各項が有する係数を用いることができる。
認証モードにおいて、端末装置301−2は、認証対象者の生体情報をセンサにより取得し、生体情報から抽出した特徴情報を、式(22)のようなベクトルBに変換し、暗号化処理401−2を行う。暗号化処理401−2において、端末装置301−2は、ベクトルBを式(24)のような多項式pm2(B)に変換し、多項式pm2(B)を準同型暗号により暗号化して暗号化多項式E2(B)を生成する。そして、端末装置301−2は、暗号化多項式E2(B)を表す暗号情報を暗号処理装置101へ送信する。
暗号処理装置101は、登録暗号情報311が表す暗号化多項式E1(A)と、端末装置301−1から受信した暗号情報が表す暗号化多項式E2(B)とを用いて暗号演算処理402を行い、暗号演算処理402の結果に対してマスク処理403を行う。そして、暗号処理装置101は、マスク処理403により生成された暗号情報を認証装置302へ送信する。
認証装置302は、暗号処理装置101から受信した暗号情報を秘密鍵を用いて復号する復号処理404を行い、ベクトルAとベクトルBの演算結果を生成する。そして、認証装置302は、生成した演算結果に基づいて認証対象者の認証を行い、認証結果を出力する。
ベクトルAとベクトルBの演算結果は、ベクトルAとベクトルBの内積であってもよく、内積に基づく類似度(例えば、コサイン類似度)であってもよく、内積に基づく相違度(例えば、ハミング距離、ユークリッド距離等)であってもよい。
例えば、演算結果がベクトルAとベクトルBの内積に基づく類似度である場合、認証装置302は、類似度を閾値と比較して、認証の成否を判定することができる。この場合、類似度が閾値より大きれば、認証対象者の認証が成功したと判定され、類似度が閾値以下であれば、認証が失敗したと判定される。
演算結果がベクトルAとベクトルBの内積に基づく相違度である場合、認証装置302は、相違度を閾値と比較して、認証の成否を判定することができる。この場合、相違度が閾値より小さければ、認証対象者の認証が成功したと判定され、相違度が閾値以上であれば、認証が失敗したと判定される。
図5は、暗号処理装置101の生成部112が行う暗号処理の具体例を示すフローチャートである。まず、生成部112は、ベクトルAとベクトルBの演算結果に対応する暗号演算処理を行って、暗号演算結果E(L)を生成する(ステップ501)。
ベクトルAとベクトルBの演算結果は、ベクトルAとベクトルBの内積を含む。この演算結果は、ベクトルAとベクトルBの内積であってもよく、内積と他の値との加算結果であってもよく、ハミング距離HDであってもよい。暗号演算結果E(L)に対応する多項式Lは、式(27)のE(D)に対応する多項式Dであってもよく、式(28)のE(DH)に対応する多項式DHであってもよい。
次に、生成部112は、暗号演算結果E(L)に対してマスク処理を行って、多項式Lに含まれる、ベクトルAとベクトルBの演算結果を表す係数を有する項以外の1つ以上の項が有する係数を、乱数によりマスクする(ステップ502)。マスクされる係数が多いほど、復号結果からベクトルの要素が漏洩する可能性が低くなる。
図6は、図5のステップ502におけるマスク処理の例を示すフローチャートである。まず、生成部112は、ベクトルA及びベクトルBの次元dと準同型暗号の格子次元nを用いて、nと2dとを比較する(ステップ601)。
多項式pm1(A)はd−1次多項式であり、多項式pm2(B)はd次多項式であるため、多項式Lの次数は高々2d−1次である。さらに、nが2dより小さい場合、xn=−1を適用すると、多項式Lの次数は高々n−1次となる。
そこで、生成部112は、nが2dより小さい場合(ステップ601,YES)、乱数の個数を表す変数Nをnに設定し(ステップ602)、nが2d以上である場合(ステップ601,NO)、変数Nを2dに設定する(ステップ603)。
次に、多項式Lにおいて、ベクトルAとベクトルBの演算結果を表す係数を有するxM-1の項を示す変数Mを、d+1 mod nに設定し(ステップ604)、次式のようなN次元のランダムベクトルRを生成する(ステップ605)。
R=(r1,r2,r3,...,rN) (41)
式(41)のr1〜rM-1及びrM+1〜rNは乱数であり、rMは定数0である。
次に、生成部112は、式(23)と類似する昇順変換により、ランダムベクトルRを次式のようなマスク多項式pm(R)に変換する(ステップ606)。
pm(R)=r1+r2x+r32+・・・+rM-1M-2
+rM+1M+・・・+rNN-1 (42)
マスク多項式pm(R)は、xM-1の項の係数のみが0であるN−1次多項式である。例えば、nが2d以上である場合、N=2d、M=d+1となり、ベクトルAとベクトルBの演算結果は多項式Lのxdの項に現れるので、rd+1が0となる。一方、nが2dより小さい場合、N=d、M=d+1 mod nとなる。特にn=dの場合、N=d=n、M=1となり、ベクトルAとベクトルBの演算結果は、多項式Lのxdの項ではなく、x0の項(定数項)に現れるので、マスク多項式pm(R)の定数項r1が0となる。
生成部112は、マスク多項式pm(R)を準同型暗号により暗号化して、暗号化マスク多項式E(pm(R))を生成する。
次に、生成部112は、暗号化マスク多項式E(pm(R))を暗号演算結果E(L)に加算して、多項式LのxM-1の項以外の係数がマスクされた暗号化結果に対応する暗号化多項式E(L’)を生成する(ステップ607)。
E(L’)=E(L)+E(pm(R)) (43)
そして、出力部113は、暗号化多項式E(L’)を表す暗号情報を認証装置302へ送信する。
図5のステップ501の暗号演算処理は、暗号処理装置101以外の装置が行うことも可能である。この場合、例えば、別のサービス業者が運用する装置が暗号化多項式E1(A)と暗号化多項式E2(B)とを用いて暗号演算結果E(L)を生成し、暗号処理装置101に送信する。暗号処理装置101は、受信した暗号演算結果E(L)に対して、ステップ502のマスク処理を行う。
図7は、認証装置302が行う認証処理の例を示すフローチャートである。まず、認証装置302は、復号処理404を行って多項式L’を生成する(ステップ701)。次に、認証装置302は、図6のステップ604と同様の処理によりMの値を求め(ステップ702)、多項式L’のxM-1の項の係数から、ベクトルAとベクトルBの演算結果を求める(ステップ703)。
そして、認証装置302は、求めた演算結果を閾値と比較して認証の成否を判定し、認証対象者の認証結果を出力する(ステップ704)。
図6のマスク処理によれば、認証装置302が知りたい演算結果は、多項式L’のxM-1の項の係数としてそのまま存在するが、それ以外のxiの項(i≠M−1)の係数には乱数ri+1が加算されている。このため、知りたい演算結果以外のベクトルA及びベクトルBの情報が認証装置302に漏洩することはない。
ベクトルA及びベクトルBは、ユーザの生体情報に基づくベクトルであるため機微性が高い場合がある。また、ベクトルAを知る者は、暗号化多項式E1(A)を登録した登録者になりすまして暗号処理装置101にアクセスし、認証を成功させることもできる。このため、生体認証システムにおいては、ベクトルA及びベクトルBの情報を秘匿することが重要である。暗号演算結果E(L)に対してマスク処理を行うことで、ベクトルA及びベクトルBの情報を効果的に秘匿することができる。
ところで、1以上の整数kをシフト数として用いて、多項式Lのマスクしない項の次数M−1をkだけシフトすることも可能である。例えば、図4の暗号化処理401−1において、端末装置301−1が多項式pm1(A)の次数d−1をkだけシフトすることで、多項式Lにおいて演算結果が現れる項の次数M−1をkだけシフトすることができる。この場合、端末装置301−1、暗号処理装置101、及び認証装置302は、kの値を記憶しているものとする。
図8は、多項式pm1(A)の次数をシフトする暗号化処理の例を示すフローチャートである。まず、端末装置301−1は、ベクトルAを多項式pm1(A)に変換し(ステップ801)、多項式pm1(A)にxkを乗算することで、多項式pm1’(A)を生成する(ステップ802)。
pm1’(A)=pm1(A)*xk
=a1k+a2k+1+a3k+2+・・・+adk+d-1 (51)
多項式pm1(A)にxkを乗算する操作は、シフト操作(ローテート操作)とみなすことができる。
次に、端末装置301−1は、多項式pm1’(A)を準同型暗号により暗号化して暗号化多項式E(pm1’(A))を生成する(ステップ803)。そして、端末装置301−1は、暗号化多項式E(pm1’(A))を暗号化多項式E1(A)として用いて暗号情報を生成し、生成した暗号情報を暗号処理装置101へ送信する。
一方、端末装置301−2は、暗号化処理401−2において、多項式pm2(B)の次数をシフトすることなく、暗号化多項式E2(B)を生成する。
暗号処理装置101は、暗号化多項式E1(A)と暗号化多項式E2(B)とを用いて暗号演算処理402を行い、暗号演算結果E(L)を生成する。このとき、生成部112は、多項式LにおいてベクトルAとベクトルBの演算結果が現れる項の次数がkだけシフトするように、暗号演算処理402を行う。例えば、多項式Lが内積の多項式Dに対応する場合、生成部112は、式(27)により暗号演算結果E(D)を生成する。
一方、多項式Lがハミング距離の多項式DHに対応する場合、生成部112は、多項式pm1(C)にxkを乗算することで、多項式pm1’(C)を生成する。
pm1’(C)=pm1(C)*xk
=(1+x+x2+・・・+xd-1)*xk
=xk+xk+1+xk+2+・・・+xk+d-1 (52)
そして、生成部112は、暗号化多項式E(pm1’(C))を生成し、暗号化多項式E(pm1’(C))を暗号化多項式E1(C)として用いて、式(28)により暗号演算結果E(DH)を生成する。
図9は、シフト操作に基づくマスク処理の例を示すフローチャートである。暗号処理装置101は、図5のステップ502において、図9のマスク処理を行う。図9のステップ901〜ステップ903及びステップ905〜ステップ907の処理は、図6のステップ601〜ステップ603及びステップ605〜ステップ607の処理と同様である。
Nの値を設定すると、生成部112は、多項式LのxM-1の項を示す変数Mを、d+k+1 mod nに設定し(ステップ904)、ステップ905以降の処理を行う。
そして、出力部113は、暗号化多項式E(L’)を表す暗号情報を認証装置302へ送信する。多項式L’においても、ベクトルAとベクトルBの演算結果が現れる項の次数は、kだけシフトしている。
図10は、シフト操作に基づく認証処理の例を示すフローチャートである。図10のステップ1001、ステップ1003、及びステップ1004の処理は、図7のステップ701、ステップ703、及びステップ704の処理と同様である。
多項式L’を生成すると、認証装置302は、図9のステップ904と同様の処理によりMの値を求め(ステップ1002)、ステップ1003以降の処理を行う。
図11は、シフト操作に基づく別の認証処理の例を示すフローチャートである。図11のステップ1102〜ステップ1105の処理は、図7のステップ701〜ステップ704の処理と同様である。
認証装置302は、x-kを準同型暗号により暗号化してE(x-k)を生成し、暗号化多項式E(L’)にE(x-k)を乗算する(ステップ1101)。これにより、多項式L’においてベクトルAとベクトルBの演算結果が現れる項の次数が−kだけシフトし、端末装置301−1によるシフト操作の効果がキャンセルされる。その後、認証装置302は、ステップ1102以降の処理を行う。
以上のようなシフト操作によれば、kの値を記憶していない暗号処理装置は、正しいマスク処理を行うことがなく、kの値を記憶していない認証装置は、正しい認証処理を行うことがない。したがって、kの値を記憶していない暗号処理装置又は認証装置が介在した場合にはベクトルAとベクトルBの正しい演算結果が生成されないため、演算結果の秘匿性が向上する。
図8の暗号化処理において、多項式pm1(A)にxkを乗算する代わりに、ベクトルAを次式のようなd+k次元のベクトルA’に変換してから、多項式pm1(A’)を生成してもよい。
A’=(0,0,...,0,a1,a2,a3,...,ad) (53)
式(53)のベクトルA’の第1要素〜第k要素は0であり、第k+1要素〜第k+d要素はa1〜adである。この場合、多項式pm1(A’)は多項式pm1’(A)と等価になる。
また、端末装置301−1が多項式pm1(A)の次数d−1をkだけシフトする代わりに、端末装置301−2が多項式pm2(B)の次数dをkだけシフトしてもよい。これにより、多項式Lにおいて演算結果が現れる項の次数M−1をkだけシフトすることができる。
この場合、端末装置301−1は、多項式pm1(A)の次数をシフトすることなく、暗号化多項式E1(A)を生成する。
一方、端末装置301−2、暗号処理装置101、及び認証装置302は、kの値を記憶しており、端末装置301−2は、図8と同様の暗号化処理を行う。図8のステップ802において、端末装置301−2は、多項式pm2(B)にxkを乗算することで、多項式pm2’(B)を生成する。
pm2’(B)=pm2(B)*xk
=b1k+d+b2k+d-1+・・・+bdk+1 (54)
そして、端末装置301−2は、暗号化多項式E(pm2’(B))を暗号化多項式E2(B)として用いて暗号情報を生成し、生成した暗号情報を暗号処理装置101へ送信する。
多項式Lが内積の多項式Dに対応する場合、暗号処理装置101の生成部112は、式(27)により暗号演算結果E(D)を生成する。一方、多項式Lがハミング距離の多項式DHに対応する場合、生成部112は、多項式pm2(C)にxkを乗算することで、多項式pm2’(C)を生成する。
pm2’(C)=pm2(C)*xk
=(xd+xd-1+・・・+x)*xk
=xk+d+xk+d-1+・・・+xk+1 (55)
そして、生成部112は、暗号化多項式E(pm2’(C))を生成し、暗号化多項式E(pm2’(C))を暗号化多項式E2(C)として用いて、式(28)により暗号演算結果E(DH)を生成する。
暗号処理装置101が行うマスク処理は、図9と同様であり、認証装置302が行う認証処理は、図10と同様である。
多項式pm2(B)にxkを乗算する代わりに、ベクトルBを次式のようなd+k次元のベクトルB’に変換してから、多項式pm2(B’)を生成してもよい。
B’=(b1,b2,b3,...,bd,0,0,...,0) (56)
式(56)のベクトルB’の第1要素〜第d要素はb1〜bdであり、第d+1要素〜第d+k要素は0である。この場合、多項式pm2(B’)は多項式pm2’(B)と等価になる。
多項式pm1(A)又は多項式pm2(B)にxkを乗算する操作は、暗号化多項式E1(A)又は暗号化多項式E2(B)に対しても、暗号化されたままで実施できる。そこで、端末装置301−1又は端末装置301−2の代わりに、暗号処理装置101が暗号化多項式E1(A)又は暗号化多項式E2(B)に対してE(xk)を乗算してもよい。あるいは、暗号処理装置101は、暗号演算結果E(L)に対してE(xk)を乗算してもよい。
図9のステップ901〜ステップ906の処理は、暗号処理装置101以外の装置が行うことも可能である。例えば、別のサービス業者が運用する装置が暗号化マスク多項式E(pm(R))を生成して暗号処理装置101に送信すれば、暗号処理装置101は、kの値を記憶していなくても、ステップ907の処理を行うことができる。
図11のステップ1101の処理は、認証装置302以外の装置が行うことも可能である。例えば、別のサービス業者が運用する装置がE(x-k)を生成して認証装置302に送信すれば、認証装置302は、kの値を記憶していなくても、ステップ1102〜ステップ1105の処理を行うことができる。
多項式Lのマスクしない項の次数をシフトする操作を一度に行うのではなく、複数回に分けて行うことも可能である。例えば、k=k1+k2となるk1及びk2(k1及びk2は1以上の整数)を用いて、端末装置301−1が多項式pm1(A)の次数d−1をk1だけシフトし、暗号処理装置101が暗号演算結果E(L)の次数をk2だけシフトしてもよい。これにより、多項式Lにおいて演算結果が現れる項の次数M−1をkだけシフトすることができる。
この場合、端末装置301−1は、k1の値を記憶しており、暗号処理装置101及び認証装置302は、k1及びk2の値を記憶している。
図12は、多項式pm1(A)の次数をk1だけシフトする暗号化処理の例を示すフローチャートである。図12のステップ1201〜ステップ1203の処理は、kをk1に置き換えた点を除いて、図8のステップ801〜ステップ803の処理と同様である。
図13は、暗号演算結果E(L)の次数をk2だけシフトする暗号処理の例を示すフローチャートである。図13のステップ1301の暗号演算処理は、図5のステップ501の暗号演算処理と同様であり、ステップ1303のマスク処理は、図9のマスク処理と同様である。
暗号演算結果E(L)を生成すると、生成部112は、xk2を準同型暗号により暗号化してE(xk2)を生成し、暗号演算結果E(L)にE(xk2)を乗算する(ステップ1302)。これにより、暗号演算結果E(L)の次数がk2だけシフトされる。その後、生成部112は、ステップ1303のマスク処理を行う。認証装置302が行う認証処理は、図10又は図11と同様である。
なお、ステップ1302のシフト操作は、ステップ1303の後で行うことも可能である。この場合、生成部112は、kをk1に置き換えてステップ1303のマスク処理を行った後、生成した暗号化多項式E(L’)にE(xk2)を乗算する。
端末装置301−1が多項式pm1(A)の次数d−1をk1だけシフトする代わりに、端末装置301−2が多項式pm2(B)の次数dをk1だけシフトしてもよい。
このように、シフト操作をどの装置で実行するか、及びシフト操作を何回に分けて実行するかについては、様々な方法が考えられる。しかし、いずれの方法においても、シフト操作とマスク操作とを組み合わせることが可能である。
暗号化マスク多項式E(pm(R))は、公開鍵pkと、ベクトルA及びベクトルBの次元dと、シフト数kとに依存して生成され、ベクトルA及びベクトルBの要素には依存しない。このため、利用形態によっては、ベクトルA及びベクトルBの暗号化処理よりも前に、暗号化マスク多項式E(pm(R))を生成することが可能である。事前に暗号化マスク多項式E(pm(R))を生成しておけば、マスク処理の処理時間を短縮することができる。
図6のステップ605又は図9のステップ905において、ランダムベクトルRの第M要素rMとして0を用いる代わりに、乱数を用いてもよい。この場合、rMの値を認証装置302へ通知することで、認証装置302は、多項式L’のxM-1の項の係数からrMを減算して、ベクトルAとベクトルBの演算結果を求めることができる。一方、rMの値を通知されていなければ、認証装置302は、暗号化多項式E(L’)からベクトルAとベクトルBの演算結果を求めることが極めて困難になる。したがって、rMとして乱数を用いることで、演算結果の秘匿性がさらに向上する。
図1の暗号処理装置101及び図3の生体認証システムの構成は一例に過ぎず、暗号処理装置101の用途や条件に応じて一部の構成要素を省略又は変更してもよい。例えば、図3の生体認証システムにおいて、暗号処理装置101以外の装置が暗号演算処理を行う場合、登録暗号情報311を記憶する記憶部111を省略することができる。
図3の生体認証システムにおいて、暗号化処理401−1と暗号化処理401−2とを、同じ端末装置(端末装置301−1又は端末装置301−2)が行ってもよい。複数のユーザが暗号化処理401−1を行ってもよく、複数のユーザのための複数の端末装置301−1を設けてもよい。同様に、複数のユーザが暗号化処理401−2を行ってもよく、複数のユーザのための複数の端末装置301−2を設けてもよい。
さらに、図1の暗号処理装置101は、ベクトルAとベクトルBの内積を含む演算結果を利用する、生体認証システム以外のシステムにも適用できる。例えば、多くのタグの中からある特徴を有するタグを検索するタグ検索システムにおいて、暗号処理装置101が、2つのタグの特徴ベクトルを比較するための暗号処理を行ってもよい。
図2及び図5〜図13のフローチャートは一例に過ぎず、暗号処理装置101又は生体認証システムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、nと2dとの大小関係があらかじめ決められている場合、図6のステップ601〜ステップ603の処理と、図9のステップ901〜ステップ903の処理とを省略することができる。
また、図6及び図9のマスク処理において、多項式Lに含まれるxM-1の項以外のすべての係数をマスクする必要はない。例えば、多項式Lの一部の項の係数からベクトルA又はベクトルBの情報が漏洩する可能性が低い場合、ステップ605及びステップ905において、式(41)のr1〜rM-1及びrM+1〜rNのうち、その項に対応する係数を0にしてもよい。
式(1)〜式(17)、式(21)〜式(31)、式(41)〜式(43)、及び式(51)〜式(56)は一例に過ぎず、他の定式化を用いてもよい。例えば、式(23)の昇順変換を登録者のベクトルAに対して適用し、式(24)の降順変換を認証対象者のベクトルBに対して適用する代わりに、昇順変換をベクトルBに対して適用し、降順変換をベクトルAに対して適用してもよい。
図1及び図3の暗号処理装置101、端末装置301−1、端末装置301−2、及び認証装置302は、例えば、ハードウェア回路として実装することができる。この場合、暗号処理装置101の各構成要素を個別の回路として実装してもよく、複数の構成要素を1つの集積回路として実装してもよい。
暗号処理装置101、端末装置301−1、端末装置301−2、及び認証装置302は、図14に示すような情報処理装置(コンピュータ)を用いて実現することも可能である。
図14の情報処理装置は、Central Processing Unit(CPU)1401、メモリ1402、入力装置1403、出力装置1404、補助記憶装置1405、媒体駆動装置1406、及びネットワーク接続装置1407を含む。これらの構成要素はバス1408により互いに接続されている。
メモリ1402は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリである。メモリ1402は、暗号処理装置101、端末装置301−1、端末装置301−2、又は認証装置302が行う処理のためのプログラム及びデータを格納する。メモリ1402は、記憶部111として用いることができる。
情報処理装置が暗号処理装置101である場合、CPU1401は、例えば、メモリ1402を利用してプログラムを実行することにより、生成部112として動作し、暗号処理を行う。
情報処理装置が端末装置301−1、端末装置301−2、又は認証装置302である場合、CPU1401は、例えば、メモリ1402を利用してプログラムを実行することにより、端末装置301−1、端末装置301−2、又は認証装置302の処理を行う。
入力装置1403は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置1404は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。処理結果は、認証装置302による認証処理の判定結果であってもよい。
補助記憶装置1405は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1405は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置1405にプログラム及びデータを格納しておき、それらをメモリ1402にロードして使用することができる。補助記憶装置1405は、記憶部111として用いることができる。
媒体駆動装置1406は、可搬型記録媒体1409を駆動し、その記録内容にアクセスする。可搬型記録媒体1409は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1409は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体1409にプログラム及びデータを格納しておき、それらをメモリ1402にロードして使用することができる。
このように、プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1402、補助記憶装置1405、及び可搬型記録媒体1409のような、物理的な(非一時的な)記録媒体である。
ネットワーク接続装置1407は、Local Area Network(LAN)、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、ネットワーク接続装置1407を介して外部の装置からプログラム及びデータを受信し、それらをメモリ1402にロードして使用することができる。ネットワーク接続装置1407は、出力部113として用いることができる。
なお、情報処理装置が図14のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータからの指示や情報の入力を行わない場合は、入力装置1403を省略してもよく、ユーザ又はオペレータへの問い合わせや処理結果の出力を行わない場合は、出力装置1404を省略してもよい。情報処理装置が可搬型記録媒体1409にアクセスしない場合は、媒体駆動装置1406を省略してもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図1乃至図14を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータが、
第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、
前記第3の暗号化多項式を表す暗号情報を出力する、
ことを特徴とする暗号処理方法。
(付記2)
前記第3の多項式に含まれる複数の項のうち前記第2の項を含む1つ以上の項の係数が乱数によりマスクされることを特徴とする付記1記載の暗号処理方法。
(付記3)
前記第1の暗号化多項式と前記第2の暗号化多項式とは、格子次元nの準同型暗号により生成され、前記第1の項の次数は、前記第1のベクトルの次元dと0以上の整数kとを用いて、d+k+1をnで除算したときの剰余よりも1だけ小さい整数により表されることを特徴とする付記1又は2記載の暗号処理方法。
(付記4)
前記コンピュータは前記暗号情報を復号装置へ送信し、前記第3の多項式は前記第3の暗号化多項式の復号結果に対応し、前記整数kは1以上の整数であり、前記復号装置は、前記整数kを用いて、前記第3の多項式に含まれる前記第1の項が有する前記係数を求めることを特徴とする付記3記載の暗号処理方法。
(付記5)
前記内積に基づく前記係数は、前記第1のベクトルと前記第2のベクトルの相違度又は類似度を表すことを特徴とする付記1乃至4のいずれか1項に記載の暗号処理方法。
(付記6)
第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成する生成部と、
前記第3の暗号化多項式を表す暗号情報を出力する出力部と、
を備えることを特徴とする暗号処理装置。
(付記7)
前記第3の多項式に含まれる複数の項のうち前記第2の項を含む1つ以上の項の係数が乱数によりマスクされることを特徴とする付記6記載の暗号処理装置。
(付記8)
前記第1の暗号化多項式と前記第2の暗号化多項式とは、格子次元nの準同型暗号により生成され、前記第1の項の次数は、前記第1のベクトルの次元dと0以上の整数kとを用いて、d+k+1をnで除算したときの剰余よりも1だけ小さい整数により表されることを特徴とする付記6又は7記載の暗号処理装置。
(付記9)
前記出力部は前記暗号情報を復号装置へ送信し、前記第3の多項式は前記第3の暗号化多項式の復号結果に対応し、前記整数kは1以上の整数であり、前記復号装置は、前記整数kを用いて、前記第3の多項式に含まれる前記第1の項が有する前記係数を求めることを特徴とする付記8記載の暗号処理装置。
(付記10)
前記内積に基づく前記係数は、前記第1のベクトルと前記第2のベクトルの相違度又は類似度を表すことを特徴とする付記6乃至9のいずれか1項に記載の暗号処理装置。
(付記11)
第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、
前記第3の暗号化多項式を表す暗号情報を出力する、
処理をコンピュータに実行させる暗号処理プログラム。
(付記12)
前記第3の多項式に含まれる複数の項のうち前記第2の項を含む1つ以上の項の係数が乱数によりマスクされることを特徴とする付記11記載の暗号処理プログラム。
(付記13)
前記第1の暗号化多項式と前記第2の暗号化多項式とは、格子次元nの準同型暗号により生成され、前記第1の項の次数は、前記第1のベクトルの次元dと0以上の整数kとを用いて、d+k+1をnで除算したときの剰余よりも1だけ小さい整数により表されることを特徴とする付記11又は12記載の暗号処理プログラム。
(付記14)
前記コンピュータは前記暗号情報を復号装置へ送信し、前記第3の多項式は前記第3の暗号化多項式の復号結果に対応し、前記整数kは1以上の整数であり、前記復号装置は、前記整数kを用いて、前記第3の多項式に含まれる前記第1の項が有する前記係数を求めることを特徴とする付記13記載の暗号処理プログラム。
(付記15)
前記内積に基づく前記係数は、前記第1のベクトルと前記第2のベクトルの相違度又は類似度を表すことを特徴とする付記11乃至14のいずれか1項に記載の暗号処理プログラム。
101 暗号処理装置
111 記憶部
112 生成部
113 出力部
301−1、301−2 端末装置
302 認証装置
311 登録暗号情報
401−1、401−2 暗号化処理
402 暗号演算処理
403 マスク処理
404 復号処理
1401 CPU
1402 メモリ
1403 入力装置
1404 出力装置
1405 補助記憶装置
1406 媒体駆動装置
1407 ネットワーク接続装置
1408 バス
1409 可搬型記録媒体

Claims (6)

  1. コンピュータが、
    第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、
    前記第3の暗号化多項式を表す暗号情報を出力する、
    ことを特徴とする暗号処理方法。
  2. 前記第3の多項式に含まれる複数の項のうち前記第2の項を含む1つ以上の項の係数が乱数によりマスクされることを特徴とする請求項1記載の暗号処理方法。
  3. 前記第1の暗号化多項式と前記第2の暗号化多項式とは、格子次元nの準同型暗号により生成され、前記第1の項の次数は、前記第1のベクトルの次元dと0以上の整数kとを用いて、d+k+1をnで除算したときの剰余よりも1だけ小さい整数により表されることを特徴とする請求項1又は2記載の暗号処理方法。
  4. 前記コンピュータは前記暗号情報を復号装置へ送信し、前記第3の多項式は前記第3の暗号化多項式の復号結果に対応し、前記整数kは1以上の整数であり、前記復号装置は、前記整数kを用いて、前記第3の多項式に含まれる前記第1の項が有する前記係数を求めることを特徴とする請求項3記載の暗号処理方法。
  5. 第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成する生成部と、
    前記第3の暗号化多項式を表す暗号情報を出力する出力部と、
    を備えることを特徴とする暗号処理装置。
  6. 第1のベクトルに対応する第1の多項式を暗号化した第1の暗号化多項式と、第2のベクトルに対応する第2の多項式を暗号化した第2の暗号化多項式とを乗算した結果を用いて、前記第1のベクトルと前記第2のベクトルとの内積に基づく係数を有する第1の項を含み、前記第1の項以外の第2の項が有する係数がマスクされた第3の多項式の暗号化結果に対応する第3の暗号化多項式を生成し、
    前記第3の暗号化多項式を表す暗号情報を出力する、
    処理をコンピュータに実行させる暗号処理プログラム。
JP2014209326A 2014-10-10 2014-10-10 暗号処理方法、暗号処理装置、及び暗号処理プログラム Expired - Fee Related JP6413598B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014209326A JP6413598B2 (ja) 2014-10-10 2014-10-10 暗号処理方法、暗号処理装置、及び暗号処理プログラム
US14/831,179 US9871652B2 (en) 2014-10-10 2015-08-20 Cryptographic processing method and cryptographic processing device
EP15182327.5A EP3007382B1 (en) 2014-10-10 2015-08-25 Homomorphic cryptographic processing method and cryptographic processing device for pattern matching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014209326A JP6413598B2 (ja) 2014-10-10 2014-10-10 暗号処理方法、暗号処理装置、及び暗号処理プログラム

Publications (2)

Publication Number Publication Date
JP2016080766A true JP2016080766A (ja) 2016-05-16
JP6413598B2 JP6413598B2 (ja) 2018-10-31

Family

ID=54062620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014209326A Expired - Fee Related JP6413598B2 (ja) 2014-10-10 2014-10-10 暗号処理方法、暗号処理装置、及び暗号処理プログラム

Country Status (3)

Country Link
US (1) US9871652B2 (ja)
EP (1) EP3007382B1 (ja)
JP (1) JP6413598B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6452910B1 (ja) * 2018-01-17 2019-01-16 三菱電機株式会社 秘匿分析装置、秘匿分析システム、秘匿分析方法及び秘匿分析プログラム
WO2020105797A1 (ko) * 2018-11-22 2020-05-28 부산대학교 산학협력단 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
WO2021064981A1 (ja) * 2019-10-04 2021-04-08 日本電気株式会社 情報照合システム及び情報照合方法
CN115348017A (zh) * 2022-10-18 2022-11-15 阿里巴巴(中国)有限公司 密文处理方法以及装置

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201608601TA (en) * 2014-04-23 2016-11-29 Agency Science Tech & Res Method and system for generating / decrypting ciphertext, and method and system for searching ciphertexts in a database
JP6413598B2 (ja) * 2014-10-10 2018-10-31 富士通株式会社 暗号処理方法、暗号処理装置、及び暗号処理プログラム
US10153894B2 (en) * 2015-11-05 2018-12-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized encoding
US10075289B2 (en) 2015-11-05 2018-09-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized parameter selection
US10296709B2 (en) 2016-06-10 2019-05-21 Microsoft Technology Licensing, Llc Privacy-preserving genomic prediction
KR101945885B1 (ko) * 2017-07-07 2019-06-11 서울대학교산학협력단 동형 암호화된 데이터의 연산의 위변조를 판단하는 방법
DE102017117899A1 (de) * 2017-08-07 2019-02-07 Infineon Technologies Ag Durchführen einer kryptografischen Operation
EP3806071B1 (en) * 2018-05-25 2023-03-22 Nippon Telegraph And Telephone Corporation Secret collective approximation system, secret calculation device, secret collective approximation method, and program
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
US11250116B2 (en) * 2019-10-25 2022-02-15 Visa International Service Association Optimized private biometric matching
KR20210135075A (ko) 2020-05-04 2021-11-12 삼성전자주식회사 동형 암복호화 장치, 상기 장치를 포함하는 시스템, 및 동형 암복호화의 수행 방법
JP2022012403A (ja) * 2020-07-01 2022-01-17 キヤノン株式会社 プログラム、情報処理装置及び制御方法
US11924346B2 (en) * 2022-04-28 2024-03-05 Nxp B.V. Efficient and masked sampling of polynomials for lattice-based cryptography
CN115276947B (zh) * 2022-07-13 2023-08-22 北京绪方科技有限公司 隐私数据处理方法、装置、系统及存储介质
CN116455575B (zh) * 2023-06-16 2023-10-10 北京天润基业科技发展股份有限公司 一种密钥生成、加密、解密方法、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013213965A (ja) * 2012-04-03 2013-10-17 Nippon Telegr & Teleph Corp <Ntt> 暗号化装置、再暗号化鍵難読化装置、再暗号化装置、復号装置、および再暗号化システム
JP2014126865A (ja) * 2012-12-27 2014-07-07 Fujitsu Ltd 暗号処理装置および方法
JP2015139014A (ja) * 2014-01-20 2015-07-30 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU719462B2 (en) * 1997-02-14 2000-05-11 Citibank, N.A. Cyclotomic polynomial construction of discrete logarithm cryptosystems over finite fields
JP4575283B2 (ja) * 2005-11-15 2010-11-04 株式会社東芝 暗号装置、復号装置、プログラム及び方法
JP6244728B2 (ja) * 2013-08-07 2017-12-13 富士通株式会社 情報処理方法及びプログラム
JP6349841B2 (ja) * 2014-03-25 2018-07-04 富士通株式会社 暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置
JP6260442B2 (ja) * 2014-05-02 2018-01-17 富士通株式会社 情報処理方法及びプログラム
US9749128B2 (en) * 2014-05-15 2017-08-29 Xerox Corporation Compact fuzzy private matching using a fully-homomorphic encryption scheme
JP2016012111A (ja) * 2014-06-30 2016-01-21 富士通株式会社 暗号処理方法、暗号処理装置、および暗号処理プログラム
JP6413598B2 (ja) * 2014-10-10 2018-10-31 富士通株式会社 暗号処理方法、暗号処理装置、及び暗号処理プログラム
JP6421576B2 (ja) * 2014-12-12 2018-11-14 富士通株式会社 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP6459658B2 (ja) * 2015-03-10 2019-01-30 富士通株式会社 暗号処理装置、暗号処理方法、および暗号処理プログラム
EP3166251B1 (en) * 2015-11-09 2020-10-28 Certsign S.A. Fully homomorphic encryption from monoid algebras

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013213965A (ja) * 2012-04-03 2013-10-17 Nippon Telegr & Teleph Corp <Ntt> 暗号化装置、再暗号化鍵難読化装置、再暗号化装置、復号装置、および再暗号化システム
JP2014126865A (ja) * 2012-12-27 2014-07-07 Fujitsu Ltd 暗号処理装置および方法
JP2015139014A (ja) * 2014-01-20 2015-07-30 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
YASUDA, M. ET AL.: "Packed Homomorphic Encryption Based on Ideal Lattices and Its Application to Biometrics", SECURITY ENGINEERING AND INTELLIGENCE INFORMATICS, vol. 8128, JPN6018025066, September 2013 (2013-09-01), pages 55 - 74, ISSN: 0003830730 *
安田 雅哉ほか: "イデアル格子準同型暗号を用いた秘匿内積計算", 2013年 暗号と情報セキュリティシンポジウム (SCIS2013) 概要集, JPN6018025062, 25 January 2013 (2013-01-25), pages 1 - 3, ISSN: 0003830726 *
安田 雅哉ほか: "準同型暗号を用いた複数企業間の顧客情報分析", 第12回情報科学技術フォーラム (FIT2013) 講演論文集, vol. 第4分冊, JPN6018025063, 20 August 2013 (2013-08-20), pages 15 - 22, ISSN: 0003830727 *
小暮 淳ほか: "準同型暗号を用いた秘匿生体認証", 2014年 暗号と情報セキュリティシンポジウム (SCIS 2014) 概要集, JPN6018025064, 24 January 2014 (2014-01-24), pages 1 - 6, ISSN: 0003830728 *
酒見 由美: "準同型暗号を用いた秘匿生体認証に対する安全性について (その2)", 電子情報通信学会技術研究報告, vol. 2014, no. 115, JPN6018025065, 26 June 2014 (2014-06-26), pages 293 - 300, ISSN: 0003830729 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6452910B1 (ja) * 2018-01-17 2019-01-16 三菱電機株式会社 秘匿分析装置、秘匿分析システム、秘匿分析方法及び秘匿分析プログラム
WO2020105797A1 (ko) * 2018-11-22 2020-05-28 부산대학교 산학협력단 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
WO2021064981A1 (ja) * 2019-10-04 2021-04-08 日本電気株式会社 情報照合システム及び情報照合方法
JPWO2021064981A1 (ja) * 2019-10-04 2021-04-08
JP7294437B2 (ja) 2019-10-04 2023-06-20 日本電気株式会社 情報照合システム及び情報照合方法
CN115348017A (zh) * 2022-10-18 2022-11-15 阿里巴巴(中国)有限公司 密文处理方法以及装置

Also Published As

Publication number Publication date
JP6413598B2 (ja) 2018-10-31
EP3007382B1 (en) 2019-10-16
EP3007382A1 (en) 2016-04-13
US9871652B2 (en) 2018-01-16
US20160352510A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
JP6413598B2 (ja) 暗号処理方法、暗号処理装置、及び暗号処理プログラム
US11882218B2 (en) Matching system, method, apparatus, and program
JP6083234B2 (ja) 暗号処理装置
US9100185B2 (en) Encryption processing apparatus and method
JP6413743B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP6421576B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
Yasuda et al. Practical packing method in somewhat homomorphic encryption
JP5300983B2 (ja) データ処理装置
JP2016012111A (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
EP3068066B1 (en) Private computation on encrypted biometric data using homomorphic encryption
US10503915B2 (en) Encrypted text verification system, method and recording medium
JPWO2014185450A1 (ja) 照合システム、ノード、照合方法およびプログラム
JP6738061B2 (ja) 暗号文照合システム、方法、および記録媒体
US11757620B2 (en) Cipher system, encryption apparatus, decryption apparatus, cipher method, encryption method, decryption method and program
JP7098091B2 (ja) 秘匿情報処理システム、暗号化装置、暗号化方法及び暗号化プログラム
JPWO2017170780A1 (ja) 暗号文照合システム、ノード装置、暗号文照合方法、およびプログラム
KR20240080344A (ko) 동형 함수 암호화 방법 및 시스템
KR20230087983A (ko) Dghv 기반 완전 동형암호 시스템 및 이를 이용한 연산 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180823

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: 20180904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180917

R150 Certificate of patent or registration of utility model

Ref document number: 6413598

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees