JP6083234B2 - 暗号処理装置 - Google Patents

暗号処理装置 Download PDF

Info

Publication number
JP6083234B2
JP6083234B2 JP2012286259A JP2012286259A JP6083234B2 JP 6083234 B2 JP6083234 B2 JP 6083234B2 JP 2012286259 A JP2012286259 A JP 2012286259A JP 2012286259 A JP2012286259 A JP 2012286259A JP 6083234 B2 JP6083234 B2 JP 6083234B2
Authority
JP
Japan
Prior art keywords
encryption
vector
matrix
secret
public key
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
JP2012286259A
Other languages
English (en)
Other versions
JP2014126866A (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 JP2012286259A priority Critical patent/JP6083234B2/ja
Priority to US14/104,409 priority patent/US9166785B2/en
Priority to EP13197685.4A priority patent/EP2750322B1/en
Publication of JP2014126866A publication Critical patent/JP2014126866A/ja
Application granted granted Critical
Publication of JP6083234B2 publication Critical patent/JP6083234B2/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明は、暗号処理装置および方法に関する。
現在、個人情報、機密情報の保護の重要性が増す中、それらの情報を利用したサービスの市場が拡大しつつある。そのようなサービスとしては、たとえば、スマートフォンから取得できる個人ユーザの位置情報を活用したサービスなどがある。そこで、個人情報・機密情報を保護したままデータの利活用ができる秘匿化技術が注目されている。秘匿化技術の中には、データ種別・サービス要件に応じて、暗号技術や統計技術を使った技術がある。
暗号技術を用いた秘匿化技術として、準同型暗号技術がある。準同型暗号技術は、暗号化と復号とで一対の異なる鍵を用いる公開鍵暗号方式の1つで、暗号化したままデータ操作が可能となる機能を備えた暗号である。
準同型暗号方式を用いれば、暗号文の加算や乗算により、暗号文を復号することなく、加算や乗算を行った演算結果の暗号文を得ることができる。この準同型暗号の性質は、電子投票・電子現金などの分野や近年ではクラウド・コンピューティング分野において利用されることが期待されている。加算または乗算に関する準同型暗号方式として、乗算のみ可能なRSA暗号方式や、加算のみが可能なAdditive ElGamal暗号が知られている。乗算準同型暗号では、平文(メッセージ)a、bの暗号文をE(a)、E(b)とすると、平文の積a・bの暗号文E(a・b)を、E(a)とE(b)から計算することができる。また、加算準同型暗号では、平文a、bの暗号文をE(a)、E(b)とすると、平文の和a+bの暗号文E(a+b)を、E(a)とE(b)から計算することができる。準同型暗号方式を用いれば、暗号文の加算や乗算により、暗号文を復号することなく、加算や乗算を行った演算結果の暗号文を得ることができる。この準同型暗号の性質は、電子投票・電子現金などの分野や近年ではクラウド・コンピューティング分野において利用されることが期待されている。
最近、加算と乗算の両方に関して準同型性を有する暗号として完全準同型暗号が知られている。加法と乗法が暗号化したままで計算できれば、排他的論理和、論理積、否定といった演算を暗号化したままで計算することができる。つまり、完全準同型暗号とは、すべての論理回路による演算に対して準同型性を有する暗号である。当初は、理論的な実現方法のみが示され、実用的な構成方法は明らかにされなかったが、鍵生成方法の具体的な構成方法の例や、暗号化できるデータの種類を拡張した暗号方式も提案されつつある。これらの鍵生成方法の具体的な構成方法の例では、公開鍵、秘密鍵などの鍵は、行列の形式である。
準同型暗号は2つの情報の類似性を検証するシステムにおいて使用することができる。
特開2011−145512号公報
C.Gentry、"Fully Homomorphic encryption using ideal lattices"、STOC2009、pp.169−178、2009 C.Gentry and S.Halevi、"Implementing Gentry’s Fully Homomorphic Encryption Scheme"、EUROCRYPT 2011、LNCS 6632、pp.129−148、 2011 安田、矢嶋、下山、小暮「複数企業が持つ購買履歴データのクラウド秘匿集計」SCIS 2012
準同型暗号を利用する暗号処理装置では、2つのベクトルA=(a、a、…)とB=(b、b、…)の秘匿距離を計算することがある。通常、ベクトルデータA=(a、a、…)を準同型暗号で暗号化する場合、各成分aを暗号化し、暗号ベクトルデータEnc(A)=(Enc(a)、Enc(a)、…)を生成する。また、ベクトルデータB=(b、b、…)についても、各成分bを暗号化し、暗号ベクトルデータEnc(B)=(Enc(b)、Enc(b)、…)の間の暗号化された秘匿距離、たとえば暗号化されたハミング距離、
Figure 0006083234
を計算する。秘匿距離、たとえばハミング距離を得るためには、暗号化された秘匿距離、たとえば暗号化されたハミング距離を計算すればよい。しかしながら、暗号化された秘匿距離を復号する際に、高い正確性と処理の高速性を兼ね備えた暗号化、復号の方法がなく、時として正しくない復号の結果をもたらす場合があるという問題がある。
また、準同型暗号において公開鍵、秘密鍵などの鍵が行列の形式である場合には、これらの行列の計算には、行列計算ができるほど大きいメモリ容量などを有する装置が必要であるという問題がある。また、そのような準同型暗号では、鍵が関わる計算には行列演算が含まれるので、計算時間を要するという問題がある。
1つの側面において、本発明は、2つのデータに関する秘匿距離を暗号化したまま計算する暗号処理において、準同型暗号を用いつつ、高い正確性と処理の高速性を兼ね備えた暗号化処理、復号処理を実現することを目的とする。
暗号処理装置の一例は、ベクトル生成処理部と、秘密鍵生成処理部と、公開鍵データ生成部と、秘密鍵データ生成部を含む。ベクトル生成処理部は、各要素が最大ビット長以下で、かつ第1要素以外が暗号化される平文が取り得る記号の種類の数である平文空間サイズの倍数の整数である、所定の次元のベクトルである鍵生成ベクトルを生成する。秘密鍵生成処理部は、前記鍵生成ベクトルvから秘密鍵行列Vを生成する。公開鍵データ生成部は、前記秘密鍵行列から公開鍵行列を生成し、前記公開鍵行列の判別式である第1の公開鍵行列要素と、整数である第2の公開鍵行列要素と、前記次元と、前記平文空間のサイズを含む公開鍵データを生成する。秘密鍵データ生成部は、前記公開鍵行列の判別式となる第1の公開鍵行列要素dと前記秘密鍵行列の逆行列V−1の積で得られる行列Wの要素であり、前記平文空間サイズsの倍数でない整数wを秘密鍵として含む秘密鍵データを生成する。
実施形態の暗号処理装置および方法では、2つのデータに関する秘匿距離を暗号化したまま計算する暗号処理において、準同型暗号を用いつつ、高い正確性と処理の高速性を兼ね備えた暗号化処理、復号処理を実現できるという効果を奏する。
鍵生成部の機能の例を示す機能ブロック図である。 本開示の鍵生成方法の処理の流れの例を示すフローチャートである。 鍵生成方法を用いる準同型暗号装置の機能ブロック図である。 図5の準同型暗号装置で実行される参照データの登録処理の流れの例を示すフローチャートである。 図5の準同型暗号装置で実行される比較データの参照データとの比較処理の流れの例を示すフローチャートである。 図1の鍵生成部または図5の暗号装置の構成を示す構成図である。
以下では、まず、暗号化したままハミング距離などの秘匿距離の計算が可能な準同型暗号処理方法について説明する。以下では完全準同型暗号として、イデアル格子ベースの完全準同型暗号を例に説明する。
<完全準同型暗号処理方法>
まず、準完全準同型暗号処理方式について説明する。準完全準同型暗号(Somewhat Homomorphic Encryption)は限定回だけ加算と乗算の両方が可能な暗号方法である。この暗号方式は完全準同型暗号に比べ暗号サイズと処理性能が大幅に少なくて済むため、より実用的な運用が期待されている。。以下で説明する準完全準同型暗号は、イデアル格子ベース準同型暗号とも呼ばれる。この名称は、イデアル格子を用いることで加法的準同型性と乗法的準同型性が導入されることに由来する。
準完全準同型暗号とは、すべてのロジック回路による演算に対して準同型性を満たす暗号である。
準同型性の例としては、加算に関する準同型性や、乗算に関する準同型性がある。加算に関する準同型性や、乗算に関する準同型性とは、例えば、引数m、mについて、写像(関数)Fが、(1)または(2)が成立することである。すなわち、
Figure 0006083234
が成立する。(1)の場合が加算に関して準同型、(2)の場合が乗算に関して準同型であるという。上の引数m、mを平文、写像Fとして暗号化関数Encを代入すれば、準同型暗号となる。平文m、mから暗号文Enc(m)、Enc(m)を得る演算を「暗号化」とも呼ぶ。
準完全準同型暗号方式では、鍵ペア(pk、sk)と、平文m、m、…、mの公開鍵pkを用いて暗号化する関数である暗号化関数をEnc、秘密鍵skを用いて復号する復号関数をDecとすると、
Figure 0006083234
を満たす写像Fの存在と、実行が保証される。準完全準同型暗号方式は公開鍵暗号方式である。ここで、Fは写像としたが、アルゴリズムであっても良い。さらに、写像Fは、加算および乗算の組み合わせによって表現可能であるとする。
上の[数3]は次のことを意味する。左辺のプロセスをプロセスAと呼び、右辺のプロセスをプロセスBと呼ぶ。簡単のために、平文mを考える。プロセスAの暗号化のステップでは、平文mを公開鍵pkを用いて暗号化し、暗号データc=Enc(m)を得る。そして、この暗号データcについて、公開鍵pkを用いて所定の写像(アルゴリズム)Fを作用させる処理が行われ、処理結果rを得る。続いて、復号のステップでは、秘密鍵skを用いて、処理結果rの復号処理が行われ、復号結果R=Dec(F(Enc(m))が生成される。
一方プロセスBでは、平文mについて、所定の写像(アルゴリズム)Fを作用させる処理が行われ、処理結果R’=F(m)を得る。
上式は、プロセスAの結果r=Dec(F(Enc(m))と、プロセスBの結果R’=F(m)が等しいことを意味する。
さらに、平文m、m、…、mに対して、準同型性は、
Figure 0006083234
を意味する。ここで右辺では、暗号化関数Encの引数は、F(m、m、…、m)の一つだけであることに注意する。
鍵生成の方法には次のようなものがある。
鍵生成を行う際、次元nと最大ビット長tの2つのパラメータが必要である。次元nと最大ビット長tに対し、各成分の絶対値がtビット以下の整数となるn次元の鍵生成ベクトルv=(v、v、…、vn−1)を生成する。このとき、秘密鍵を、行列
Figure 0006083234
とする。
また、上の行列Vのエルミート標準形である行列Bを公開鍵とする。エルミート標準形とは、整数行列に対して整数上の行基本変形を施して得られる下または上三角行列である。一般に、エルミート標準形が効率的に計算できることはよく知られており、公開鍵として行列Vのエルミート標準形である行列Bを用いることで、計算時間を短縮することができる。
暗号化について説明する。1ビットの平文bに対して公開鍵Bを用いて暗号化する場合、まず成分が0または1のn次元鍵生成ベクトルu=(u、u、…、un−1)を選び、e=(1、0、…、0)として、ベクトルa:
Figure 0006083234
を生成する。このようにして得られたベクトルaをフレッシュ暗号文と呼ぶことがある。
1ビットの平文bの暗号文cは、
Figure 0006083234
のように生成する。ここで、B−1は行列Bの逆行列とし、「q」は有理数qに最も近い整数値を与える関数とする。
1ビットの平文bの暗号文cの復号は、まず[数8]で定義されるn次元ベクトルa’、
Figure 0006083234
を計算する。次に、n次元ベクトルa’の第1成分a’を取り、整数a’を2で割った余りが暗号文cを復号した値になる。
また、別の復号方法として、次のような方法が知られている。暗号文aの第1成分をcとする。また、wを秘密鍵Vの逆行列V−1の要素であり、かつ、奇数のものとする。さらに、
Figure 0006083234
で、値域が[−d/2、d/2)なるものである。[数9]で、dは公開鍵Bの判別式とする。このとき、
Figure 0006083234
によって、暗号文cを定義する。この方法は、[数7]、[数8]を用いる方法に比べて処理の高速化が図れることが知られている。
上記の鍵生成と暗号化、復号の数値例を説明する。次元n=4、最大ビット長t=7に対して説明する。まず、絶対値が7ビット以下かつ平文空間サイズsの倍数の整数となる4次元の鍵生成ベクトルv=(112、99、−125、77)を選ぶ。このとき、行列Vは、
Figure 0006083234
を秘密鍵とする。次に、秘密鍵Vのエルミート標準形Bは、
Figure 0006083234
と計算され、この行列Bを公開鍵とする。
平文b=1を、公開鍵Bを用いて暗号化する場合を考える。まず、成分が0または1の4次元鍵生成ベクトルu=(1、0、1、1)を選ぶ。次にフレッシュ暗号文aを計算する。今の場合、
Figure 0006083234
である。すると、平文b=1の暗号文cは、
Figure 0006083234
となる。ただし、a×B−1=(−1343000133/1143821449、0、2、2)、「a×B−1」=(−1、 0、2、2)となる。結局、暗号文c=―199178684であることが分かる。
暗号文cを、秘密鍵Vを用いて復号する場合、まず[数8]で定義される4次元ベクトルa’を計算する。今の場合、4次元ベクトルa’=(3、0、2、2)となる。4次元ベクトルa’の第1成分を2で割った余りは3=2+1なので、暗号文c=1となり、無事に復号されていることが分かる。上の準同型暗号方式では、4次元ベクトルaと4次元ベクトルa’が一致する。
上では、平文bが1ビットの場合を説明したが、平文の定義域を拡張することができる。平文bが{0、1、…、s−1}から選択される、すなわち平文空間サイズがsであるときも、上と同様の方法で、暗号化、復号を行うことができる。
平文空間サイズs以下の平文bに対して公開鍵Bを用いて暗号化する場合、秘密鍵行列Vのエルミート標準形として定義される公開鍵行列Bを生成するが、その際、公開鍵行列Bは、
Figure 0006083234
という形を持つものとする。さらに、公開鍵行列Bの(1、1)成分をd、(2、1)成分をrとしたとき、次の[数16]で定義される行列W
Figure 0006083234
の(1、1)成分wがsの倍数ではないとする。すなわち、kを整数として、wは、
Figure 0006083234
であるようなwを秘密鍵データとして採用する。このとき、公開鍵データとしては、(d、r、n、s)の4つの要素を保持すればよい。また、秘密鍵wと秘密鍵の逆数w−1を暗号装置の内部に保持しておくことで、復号の度にこれらを求める必要がなくなる。また秘密鍵行列Vを保持する必要がないため、秘密鍵のサイズも小さくすることができる。
このような公開鍵、秘密鍵を用いて平文bを暗号化するには、まず成分が0または1のn次元鍵生成ベクトルu=(u、u、…、un−1)を選び、ベクトルa:
Figure 0006083234
を生成する。bは平文である。上と同様、e=(1、0、…、0)である。このベクトルaもフレッシュ暗号文と呼ぶことがある。平文bの暗号文cは、上の[数7]と同様、
Figure 0006083234
で与えられる。ここでベクトルc=(c、0、…、0)となることから、暗号文cは整数である。
平文bの暗号文cの復号は、まず以下のように定義されるn次元ベクトルa’、
Figure 0006083234
を計算する。次に、n次元ベクトルa’の第1成分a’を取り、整数a’を平文空間サイズsで割った余りが暗号文cを復号した値になる。この復号処理は、ベクトルcに対して行列V−1を乗算する処理、及び、その乗算によって得られたベクトルに対し、行列Vを乗算する処理を行う。つまり、ベクトルと行列の積の計算を2回行うこととなる。このときの乗算回数は、ベクトルの要素数Dに比例し2×D回となる。また、扱うデータが大きい場合、乗算1回は多倍長の乗算となる。
また、平文空間のサイズがsである平文bの暗号文cの復号方法として、次のような方法が知られている。
行列要素をwi、jとする行列Wを
Figure 0006083234
のように定義する。ただし、Wの各要素wijについて、最大公約数gcdが、
Figure 0006083234
を満たす要素wijを探しwとする。そして、ベクトルcの第1成分をcとして、
Figure 0006083234
とすると、b’は暗号文cを復号した値となる。
鍵生成の数値例を説明する。次元n=4、 最大ビット長t=7、平文空間サイズs=13に対して説明する。まず、4次元のベクトルを(v、v2、3、)とし、各成分v(i=1、2、3、4)の絶対値がt=7ビット以下かつ、第1成分v以外の成分v2、3、がs=13の倍数となる4次元の鍵生成ベクトルv=(93、−112、96、−116)を選ぶ。このとき、秘密鍵Vは、行列
Figure 0006083234
となる。次に、秘密鍵Vのエルミート標準形は、
Figure 0006083234
と計算され上記の行列Bを公開鍵とする。上記のBは特殊な形を持つので、行列Bの(1、1)成分をd=998261713、(2、1)成分をr=237533531とおく。
次に、[数26]で定められる行列W=d×V−1を計算する。
Figure 0006083234
となる。ここで、行列Wの(1、1)成分をw=4165509は平文空間サイズs=4の倍数ではないので、公開鍵データとしてpk=(d、r、n、s)、秘密鍵データとしてsk=wと出力する。
また、暗号データの加算と乗算を説明する。上記の数値例のように、暗号文は必ず第一成分以外が0となるn次元ベクトルc=(c、0、…)として表せる。この暗号文の第1成分の整数は、平文bと平文空間サイズsと暗号化で利用するn次元ベクトルu=(u、u、…、un−1)を用いて、
Figure 0006083234
として計算することも可能である。ただし、[x]は、
Figure 0006083234
であり、値域が[−d/2、d/2)なる整数であり、dは公開鍵を表す行列Bの(1、1)成分、rは公開鍵を表す行列Bの(2、1)成分である。
2つの暗号文c、cに対し、暗号加算は[c+c]、暗号乗算は[c×c]として定義される。
上のような準同型暗号の性質を、2つのベクトルデータの比較に適用するためには、例えば以下のようにすれば良い。
ベクトルデータA=(a、a、…、a)とベクトルデータB=(b、b、…、b)があるとする。ここでは、ベクトルデータAとベクトルデータBは、n次元ベクトル量として書けるものとする。
ベクトルデータA=(a、a、…、a)に対して、変換多項式、
Figure 0006083234
を計算する。そして、変換多項式a(x)を暗号化して暗号データEnc(a(x))を計算する。今の場合、
Figure 0006083234
とする。
ベクトルデータB=(b、b、…、b)に対して、変換多項式、
Figure 0006083234
を計算する。そして、変換多項式b(x)を暗号化して暗号データEnc(b(x))を計算する。Enc(b(x))は、[数30]のa(x)をb(x)と置き換えたものである。また、ベクトルデータB=(b、b、…、b)に対する変換多項式は、ベクトルデータA=(a、a、…、a)に対するものとは異なっている。
そして、ベクトルデータA=(a、a、…、a))とベクトルデータB=(b、b、…、b)を比較する代わりに、暗号データEnc(a(x)と暗号データEnc(b(x))を用いて乗算および/または加算をすることにより比較をする。比較の結果を復号することによって、ベクトルデータA=(a、a、…、a))とベクトルデータB=(b、b、…、b)の比較結果を得ることができる。
<準同型暗号を用いた秘匿距離計算>
次に、秘匿距離計算を行うために、事前に2つの整数C、Cを用意する。整数Cは次の[数32]で定義される。
Figure 0006083234
また、整数Cは次の[数33]で定義される。
Figure 0006083234
このとき、秘匿距離dは、
Figure 0006083234
である。[数34]で、C×Enc(a(x))、C×Enc(b(x))はそれぞれ、暗号文上のハミング重みHW(a)、HW(b)に対応する。上の秘匿距離dを復号すると、2つのベクトルデータA=(a、a、…、a)とベクトルデータB=(b、b、…、b)のハミング距離となる。
また、上では[数31]、[数33]を用いたが、b(x)、Cをそれぞれ、次式のようなb’(x)、C
Figure 0006083234
に置きかえ、秘匿距離dを、
Figure 0006083234
のように定義しても良い。上の[数31]の右辺第3項の符号が、[数27]のものとは異なっていることに注意しよう。[数31]は、
Figure 0006083234
と計算することも可能である。
以上のように、開示の方法は次のような特徴を有している。
(1)格子ベース準同型暗号を利用する、
(2)特徴量を表すベクトルを変換多項式によって多項式に変換する、
(3)変換多項式の暗号文とベクトルのハミング重みなどの重みの暗号文を用いる、
(4)秘匿距離計算として準同型暗号の準同型性を利用する、
(5)公開鍵データとして(公開鍵d、公開鍵行列の(2、1)要素r、次元n、平文空間サイズs)、秘密鍵データとして秘密鍵wを保持すればよい。
このように、ハミング距離などの秘匿距離の計算に、準同型暗号を用いることによって、暗号データサイズと計算時間の大幅な削減が可能となる。さらに、公開鍵、秘密鍵として、行列値ではなく、スカラー値を用いることができるので、上記の方法を実装するための装置の規模を小さくすることができると同時に、スカラー値の演算なので高速に処理することができる。
また、上記方法では、公開鍵として4つのスカラー量、秘密鍵として1つのスカラー量だけを扱うので計算の途中に余分な誤差が入り込むことがなく、正しく復号をすることができる。
上のイデアル格子ベース準同型暗号の暗号化、復号は、次のように説明することもできる。
まず、用語を簡単に定義する。
格子とはZを整数環として、Z中の離散的な加法的部分群である。Z中でb、…、bn−1が線形独立だとすると、これらを並べて作られる正方行列B=[b、…、bnー1]を基底と呼ぶ。格子Lは、vをZの要素として、
Figure 0006083234
と書くことができる。
格子Lがイデアル格子であるとは、格子Lと同型な環R=Z[x]/f(x)のイデアルIが存在することである。ここで、Z[x]は整数係数多項式環、f(x)は整数係数モニックなn次多項式である。
剰余環Rの1つの元、
Figure 0006083234
で生成される単項イデアルの元は、a、a・x、a・x、a・xn−1の線形結合で書ける。aの転置をaと書く。
f(x)=x+1として、環R=Z[x]/(x+1)の整数係数モニック多項式a(x)=a+ax+…+anー1n−1を考える。ベクトルa=(a、a、…、an−1)を環R=Z[x]/(x+1)と同一視するためには、次のようにする。aに対して巡回行列を定義する。
Figure 0006083234
これは上の[数5]と同一である。すると、2つの多項式a(x)、b(x)に対して、積をa(x)・b(x)=Rot(a)・bによって定義することができる。また、巡回行列Rot(a)は、基底行列となる。
すると、上の格子ベースの準同型暗号方法における鍵生成とは次のようなことである。つまり、環R=Z[x]/(x+1)のイデアルIと互いに素なイデアルJの基底行列Vの判別式dを公開鍵、d×V−1を秘密鍵wとする。たとえば、行列VはRをランダム、かつノルムの小さな行列として、n1/2I+Rとすることができる。
このとき、暗号化は、平文bの暗号文cは、rをRから選び、c=b+rs mod Bの第1成分とする。平文bのノルムが小さければ、b=[c×w] mod sで復号することができる。ここで、[c×w]はスカラー値同士の演算であることに注意する。このことによって、計算の高速化を図ることができる。
上記のような格子ベースの完全準同型暗号を用いてハミング距離などの秘匿距離を計算することによって、暗号ベクトルデータのサイズと秘匿距離計算の時間の両方を削減することができると同時に、算の高速化を図ることができる。
<鍵生成部の構成>
図1は上記のような準同型暗号における鍵生成を行う装置の例の機能を示す機能ブロック図である。図1に示されている装置は、入力パラメータ(たとえば、次元n、最大ビット長t、平文空間サイズs)から公開鍵データpk(たとえば、組(d、r、n、s))と秘密鍵データsk(たとえば、スカラー量w)を出力するものである。このような装置は、公開鍵方式を採用する暗号処理装置の鍵生成部を構成しても良い。
図1に示されているように、鍵生成部10は、パラメータ設定部102、ベクトルv生成処理部104、秘密鍵行列生成処理部106、公開鍵生成処理部108、公開鍵行列判定部110、秘密鍵データ抽出部112、秘密鍵判定部114を含む。ベクトルv生成処理部104は、単にベクトル生成処理部104としても参照されることがある。
また、公開鍵生成処理部108と公開鍵行列判定部110は組み合わされて、公開鍵データ生成部を構成する。秘密鍵データ抽出部112と秘密鍵判定部114は組み合わされて秘密鍵データ生成部を構成する。
パラメータ設定部102では、次元n、最大ビット長t、平文空間サイズsが設定される。これらのデータは、鍵生成のたびに外部から入力されても良いし、パラメータ設定部102で選択されても良い。
ベクトルv生成処理部104では、鍵生成ベクトルv=(v、v、…、vn−1)を生成する。鍵生成ベクトルv=(v、v、…、vn−1)は、各成分の絶対値がtビット以下でかつvを除く成分v、…、vn−1が平文空間サイズsの倍数の整数であるn次元のベクトルである。
秘密鍵行列生成処理部106では、ベクトルv生成処理部104で生成されたベクトルvの成分を用いて、秘密鍵行列Vを[数41]のように生成する。
Figure 0006083234
公開鍵行列生成部108では、行列Vのエルミート標準形である行列Bを公開鍵行列として生成する。
公開鍵行列判定部110では、公開鍵行列生成部108で生成された公開鍵行列Bが、(1、1)成分をd、(2、1)成分をrとして、
Figure 0006083234
という形を持つかどうかを判定する。もし、公開鍵行列Bが[数42]のような形を取らなければ、そのような行列は破棄され、鍵生成をやり直す。もし、公開鍵行列Bが[数42]のような形を取れば、そのような行列Bは破棄されずに残される。(1、1)成分d、(2、1)成分rは共にスカラー値である。公開鍵行列Bの(1、1)成分であるスカラー値dは公開鍵とも呼ばれる。
秘密鍵データ抽出部112では、公開鍵行列Bの(1、1)成分がd、(2、1)成分がrのとき、次の[数43]で定義される行列W
Figure 0006083234
の(1、1)成分であるスカラー値wを抽出する。公開鍵行列Bの(1、1)成分dは、行列Bの行列式でもある。
秘密鍵判定部114では、秘密鍵データ抽出部112で抽出されたスカラー値wがsの倍数であるかどうかを判定する。もし、スカラー値wがsの倍数であれば、そのようなwは破棄され、鍵生成をやり直す。もし、スカラー値wがsの倍数でなければ、そのような行列Bは破棄されずに残される。スカラー値wは秘密鍵とも呼ばれる。
結局、鍵生成部10は、公開鍵データとして(公開鍵d、公開鍵行列の(2、1)要素r、次元n、平文空間サイズs)、秘密鍵データとして秘密鍵wを出力する。
<鍵生成部の処理>
図2を参照して、図1の鍵生成部10で実行される処理の流れの例を説明する。
処理を開始すると、まず、S102でパラメータを設定する。ここでパラメータは、次元n、最大ビット長t、平文空間サイズsを含む。本ステップの処理は、鍵生成部10のパラメータ設定部102で行われ得る。
次のS104では、各要素が最大ビット長以下で、かつ第1要素以外が暗号化される平文が取り得る記号の種類の数である平文空間サイズの倍数の整数である、n次元ベクトルである鍵生成ベクトルv=(v、v、…、vn−1)を生成する。本ステップの処理は、鍵生成部10のベクトルv生成処理部104で行われ得る。
S106では、ベクトルv生成処理部104で生成されたベクトルvの成分を用いて、秘密鍵行列Vを[数41]のように生成する。本ステップの処理は、鍵生成部10の秘密鍵行列生成処理部106で行われ得る。
次のS108では、行列Vのエルミート標準形である行列Bを公開鍵行列として生成する。本ステップの処理は、鍵生成部10の公開鍵行列生成処理部108で行われ得る。
S110では、公開鍵行列生成部108で生成された公開鍵行列Bが、(1、1)成分をd、(2、1)成分をrとして、上記[数42]の形を持つかどうかを判定する。もし、判定の結果が“NO”、すなわち公開鍵行列Bが[数42]のような形を取らなければ、そのような行列は破棄され、S104に戻って鍵生成をやり直す。もし、判定の結果が“YES”、すなわち公開鍵行列Bが[数42]のような形を取れば、そのような行列Bは破棄されずに残される。そして、S112に進む。(1、1)成分d、(2、1)成分rは共にスカラー値である。公開鍵行列Bの(1、1)成分であるスカラー値dは公開鍵とも呼ばれる。本ステップの処理は、鍵生成部10の公開鍵行列判定部110で行われ得る。
S112では、公開鍵行列Bの(1、1)成分がd、(2、1)成分がrのとき、上記[数43]で定義される行列Wの(1、1)成分であるスカラー値wを抽出する。公開鍵行列Bの(1、1)成分dは、行列Bの行列式でもある。本ステップの処理は、鍵生成部10の秘密鍵データ抽出部112で行われ得る。
S114では、S112で抽出されたスカラー値wがsの倍数であるかどうかを判定する。もし、判定の結果が“NO”、すなわちスカラー値wがsの倍数でなければ、そのような行列Bは破棄されずに残される。そして、S116に進む。スカラー値wは秘密鍵とも呼ばれる。もし、判定の結果が“YES”、すなわちスカラー値wがsの倍数であれば、そのようなwは破棄され、S104に戻って鍵生成をやり直す。本ステップの処理は、鍵生成部10の秘密鍵判定部114で行われ得る。
S116では、公開鍵データとして(公開鍵d、公開鍵行列の(2、1)要素r、次元n、平文空間サイズs)、秘密鍵データとして秘密鍵wを出力する。
上記のような構成および処理方法を採用することによって、2つのデータに関する秘匿距離を暗号化したまま計算する暗号処理において、準同型暗号を用いつつ、高い正確性と処理の高速性を兼ね備えた暗号化処理、復号処理を実現できる装置および方法が提供される。
<実施例>
図3〜5を参照して、上記のイデアル格子ベース完全準同型暗号を用いた暗号処理装置の例について説明する。
以下で説明する暗号処理装置は、2つのデータを比較し、両データの間のハミング距離などの秘匿距離を計算する装置である。2つのデータのうち、一つを予め登録される参照データ、もう一つを参照データと類似しているかどうかが比較される比較データとしてもよい。このような場合、暗号処理装置は、認証装置または検索装置として機能する。
認証装置または検索装置では、ベクトルデータA=(a、…、a)とベクトルデータB=(b、…、b)を比較して、両ベクトルデータの間のハミング距離などの秘匿距離を計算する。ベクトルデータA=(a、…、a)を予め登録される参照データとすると、比較データB=(b、…、b)を参照データと比較して、両データ間の秘匿距離が所定の大きさより小さい場合は、2つのデータは同一であると判定する。
以下に説明する暗号処理装置では、2つのデータ間の秘匿距離を暗号化したまま計算する。
図3に示されているように、参照データの保存時には、参照データ処理装置内で、参照データはベクトル化され、得られたベクトルデータA=(a、…、a)を準同型暗号で秘匿した暗号データを作成する。そして、暗号データのみを準同型暗号演算装置のデータベースに保存する。
また、比較時には、比較データ処理装置内で比較データはベクトル化され、得られたベクトルデータB=(b、…、b)を準同型暗号で秘匿したデータのみを準同型暗号演算装置に送信する。
準同型暗号演算装置内では、2つの準同型暗号化されたベクトルの距離を暗号化したまま2つのデータの秘匿距離を計算し、秘匿距離の計算結果のみを比較データ処理装置に返す。最後に、比較データ処理装置は秘密鍵を用いて秘匿距離計算結果を復号して、2つのベクトルデータが類似しているか判定する。
<暗号処理装置の構成>
図3を参照して、暗号処理装置の構成について詳細に説明する。
暗号処理装置1は、参照データ処理装置20、準同型暗号演算装置30、比較データ処理装置40を含む。参照データ処理装置20と比較データ処理装置40には、図1に示されている鍵生成部10が含まれている。
参照データ処理装置20は、ベクトル化部202、多項式変換部204、Hamming(ハミング)重み計算部206、および暗号化部208を含む。これらを、第1のベクトル化部202、第1の多項式変換部204、第1のHamming重み計算部206、および第1の暗号化部208として参照することもある。また、第1のHamming重み計算部1106は単に重み計算部206として参照することもある。
準同型暗号演算装置30は、テキストデータをタグとして格納する暗号登録データ302を含む。図6Aには図示されていないが、クラウド120は、図6Bに示されているように、準同型暗号化された2つのデータの加算演算を行う暗号乗算部304、準同型暗号化されたデータのスカラー倍の計算を行う暗号スカラー部306、および準同型暗号化された2つのデータの加算演算を行う暗号加算部308を含む。
暗号乗算部304、暗号スカラー部306、および暗号加算部308は組み合わされて、秘匿距離計算部を構成する。
ベクトル化部204では、入力されたテキストデータをn次元ベクトルaとして表現する。例えば、ベクトルaは、a、…、aを0または1として、
Figure 0006083234
のように表される。
多項式変換部206では、ベクトル化部204で得られたベクトルaを多項式に変換する。例えば、変換多項式
Figure 0006083234
を計算する。このように(第1の)多項式変換部206は、第1のベクトルaから第1の変換多項式を用いて第1の多項式a(x)を得る。
Hamming重み計算部208では、ベクトルaのハミング重みHW(a)を計算する。今の場合、ハミング重みHW(a)は、
Figure 0006083234
である。このように(第1の)重み計算部208は、第1のベクトルaの秘匿距離に関する第1の重みHW(a)を計算する。今の場合、秘匿距離はハミング距離であり、第1の重みはハミング重みである。
準同型暗号化部210では、鍵生成部10で生成された公開鍵データを用いて、多項式変換部206で得られた多項式a(x)とHamming重み計算部208で得られたハミング重みHW(a)を暗号化し、Enc(a(x))とEnc(HW(a))、
Figure 0006083234
を得る。このように、(第1の)準同型暗号化部210は、第1の多項式a(x)、第1の重みHW(a)のそれぞれを、準同型暗号方式を用いて暗号化し、第1の暗号化多項式Enc(a(x))および第1の暗号化重みEnc(HW(a))を得る。
準同型暗号化部210で得られた暗号化データEnc(a(x))とEnc(HW(a))は、準同型暗号演算装置30に送られ登録データとして暗号登録データ302に格納される。
比較データ処理装置40は、ベクトル化部402、多項式変換部404、Hamming(ハミング)重み計算部406、暗号化部408を含む。これらはぞれぞれ、参照データ処理装置20のベクトル化部202、多項式変換部204、Hamming(ハミング)重み計算部206、および暗号化部208と同一または類似の構成を有する。また、比較データ処理装置40は、復号処理部410と公開鍵暗号方式の秘密鍵を格納する秘密鍵格納部412を含む。また、これらを第2のベクトル化部1602、第2の多項式変換部1604、第2のHamming重み計算部1606、および第2の暗号化部1608として参照することもある。第1のベクトル化部202、第1の多項式変換部204、第1のHamming重み計算部206、および第1の暗号化部208と、第2のベクトル化部402、第2の多項式変換部404、第2のHamming重み計算部406、および第2の暗号化部408を区別せずに参照することもある。また、第2のHamming重み計算部406は単に重み計算部406として参照することもある。
ベクトル化部402では、ユーザによって入力されたテキストデータをn次元ベクトルbとして表現する。例えば、ベクトルbは、b、…、bを0または1として、
Figure 0006083234
のように表される。このように第2のベクトル化部402は、ユーザによって入力された(第2の)テキストデータを、第1のベクトルbとして表現する。
多項式変換部404では、ベクトル化部402で得られたベクトルbを多項式に変換する。
Figure 0006083234
を計算する。検索時の変換多項式b(x)は、保存時の変換多項式a(x)とは異なっていることに注意する。このように(第2の)多項式変換部406は、第2のベクトルbから第2の変換多項式を用いて第2の多項式b(x)を得る。
Hamming重み計算部406では、ベクトルbのハミング重みHW(b)を計算する。今の場合、ハミング重みHW(b)は、
Figure 0006083234
である。このように(第2の)重み計算部1606は、第2のベクトルbの秘匿距離に関する第2の重みHW(b)を計算する。今の場合、秘匿距離はハミング距離であり、第2の重みはハミング重みである。
多項式変換部404で得られた多項式とHamming重み計算部406で得られたハミング重みHW(b)は、準同型暗号化部408で、鍵生成部10で生成された公開鍵データを用いて暗号化され、Enc(b(x))とEnc(HW(b))が得られる。このように、(第2の)準同型暗号化部408は、第2の多項式b(x)、第2の重みHW(b)のそれぞれを、準同型暗号方式を用いて暗号化し、第2の暗号化多項式Enc(b(x))および第2の暗号化重みEnc(HW(b))を得る。
準同型暗号化部408で得られた暗号化データEnc(b(x))とEnc(HW(b))は、準同型暗号演算装置30に送られる。Enc(b(x))とEnc(HW(b))はそれぞれ、上式[数46]および[数47]において、a(x)をb(x)と置き換えたものである。
準同型暗号演算装置30の暗号乗算部304では、暗号登録データ302に格納されているEnc(a(x))と準同型暗号化部408で得られたEnc(b(x))の積
Figure 0006083234
を計算する。
暗号スカラー部306では、事前に計算された2つの整数、
Figure 0006083234
と、Enc(a(x)))とEnc(b(x))との積、
Figure 0006083234
を計算する。また、暗号スカラー部306では、暗号乗算部304で得られたCの2倍、
Figure 0006083234
を計算する。
暗号加算部308では、k×Enc(HW(a))、k×Enc(HW(b))、2×Enc(a(x)))×Enc(b(x))の和を計算し、秘匿距離として[数55]で表されるハミング距離Dを算出する。
Figure 0006083234
このように、秘匿距離計算部では、第1の暗号化多項式Enc(a(x)))、第2の暗号化多項式Enc(b(x))、第1の暗号化重みEnc(HW(a))、および第2の暗号化重みEnc(HW(b))から、第1のベクトルaと第2のベクトルbの秘匿距離の暗号化に対応する暗号化秘匿距離(ハミング距離)Dを得る。そして、ハミング距離Dのみを非アックデータ処理装置40に送信する。
準同型暗号演算装置30と比較データ処理装置40の通信では、公開鍵暗号が用いられ、通信データの秘匿性を確保する。
この際の鍵は、n次元の鍵生成ベクトルv=(v、v、…、vn−1)であって、各成分の絶対値がtビット以下のランダムな整数でかつvを除く成分v、…、vn−1が平文空間サイズsの倍数の整数であるn次元のベクトルを用いて、[数56]のような行列Vを秘密鍵行列として生成する。
Figure 0006083234
また、秘密鍵行列Vのエルミート標準である行列Bとする。平文空間サイズs以下の平文bに対して公開鍵Bを用いて暗号化する場合、秘密鍵行列Vのエルミート標準形として定義される公開鍵行列Bを生成するが、その際、公開鍵行列Bは、
Figure 0006083234
という形を持つものとする。さらに、公開鍵行列Bの(1、1)成分をd、(2、1)成分をrとしたとき、次の[数55]で定義される行列W
Figure 0006083234
の(1、1)成分wがsの倍数ではないwを秘密鍵データとして採用する。
公開鍵データとしては、(d、r、n、s)の4つの要素を保持すればよい。
秘密鍵412には、秘密鍵wが格納される。
復号処理部410では、秘密鍵wを用いて、準同型暗号演算装置30から送られた準同型暗号化されたハミング距離Dを復号する。復号して得られるハミング距離D’は、
Figure 0006083234
と計算される。復号処理部406では、暗号化秘匿距離Dを復号して類似度として秘匿距離D’を算出する。そして、ハミング距離D’は類似度として出力される。
復号処理部410ではまた、復号されたハミング距離D’を予め用意された閾値Dthと比較しても良い。そして、D’<Dthの場合は、参照データと比較データは同一であると判定される。
上記では、ハミング距離として、[数55]のような表現を用いた。しかしながら、b(x)、Cの代わりに[数35]のようなb’(x)、C’を用い、ハミング距離として[数36]または[数37]の定義を用いても良い。
<暗号処理装置の処理>
図4および5を参照して、暗号処理装置1における処理の例を説明する。図4は、図3の暗号処理装置1で実行される参照データの登録処理の流れの例を示すフローチャートである。
まず処理が開始されると、参照データ処理装置20では、ステップS302で、参照データのデータ入力を受ける。そして、処理はS104に進む。
S304では、S302で入力された参照データをn次元ベクトルaとして表現する。この処理は参照データ処理装置20のベクトル化部202で行われ得る。
次のS306では、n次元ベクトルaを多項式に変換する。この処理は参照データ処理装置20の多項式変換部204で行われ得る。
S306の次のS308では、n次元ベクトルaに対するハミング重みHW(a)が計算される。この処理は参照データ処理装置20のHamming重み計算部206で行われ得る。
次のS310では、S306で得られた多項式a(x)とS108で得られたハミング重みHW(a)を暗号化し、Enc(a(x))とEnc(HW(a))を得る。これらのデータ、Enc(a(x))とEnc(HW(a))は準同型暗号演算装置30に送られる。本ステップの処理は参照データ処理装置20の暗号化部1108で行われ得る。
S312では、Enc(a(x))とEnc(HW(a))をデータベース、例えば、準同型暗号演算装置30の暗号登録データ302に格納する。
そして、参照データの登録処理を終了する。
図5は、図3の暗号処理装置1で実行される比較データの参照データとの比較処理の流れの例を示すフローチャートである。
処理が開始されると、比較データ処置装置40では、ステップS402で、比較データのデータ入力を受ける。そして、処理はS404に進む。
S404では、S402で入力された比較データをn次元ベクトルbとして表現する。この処理は比較データ処置装置40のベクトル化部402で行われ得る。
次のS406では、n次元ベクトルaを多項式に変換する。この処理は比較データ処置装置40の多項式変換部404で行われ得る。
S406の次のS408では、n次元ベクトルaに対するハミング重みHW(b)が計算される。この処理は比較データ処置装置40のHamming重み計算部406で行われ得る。
次のS410では、S406で得られた多項式b(x)とS408で得られたハミング重みHW(b)を暗号化し、Enc(b(x))とEnc(HW(b))を得る。そして、これらのデータ、Enc(b(x))とEnc(HW(b))をクラウド120に送る。本ステップの処理は比較データ処置装置40の暗号化部408で行われ得る。
S412では、暗号登録データ302に格納されているEnc(a(x))とS410で得られたEnc(b(x))の積Enc(b(x))×Enc(HW(b))を計算する。この処理は、準同型暗号演算装置30の暗号乗算部304で行われ得る。
S414では、[数53]の2つの整数、k、kと、Enc(a(x)))とEnc(b(x))との積、kEnc(a(x)))、kEnc(b(x))が計算される。また、S414では、S410で得られたEnc(b(x))×Enc(HW(b))の2倍、2Enc(b(x))×Enc(HW(b))を計算する。本ステップの処理は、準同型暗号演算装置30の暗号スカラー部306で行われ得る。
S416では、k×Enc(HW(a))、k×Enc(HW(b))、2×Enc(a(x)))×Enc(b(x))の和を計算し、秘匿距離として[数60]で表されるハミング距離Dを算出する。ハミング距離Dのみを比較データ処置装置40に送信する。本ステップの処理は、準同型暗号演算装置30の暗号加算部308で行われ得る。
次のS418では、秘密鍵wを用いて、準同型暗号演算装置30から送られた準同型暗号化されたハミング距離Dを復号する。秘密鍵wは、比較データ処置装置40の鍵生成部10によって生成され、比較データ処置装置40の暗号登録データ412に格納されていても良い。本ステップの処理は、比較データ処置装置40の復号処理部410で行われ得る。
S420では、S418の結果を秘匿距離として出力する。この処理は、不図示の表示装置によって行われ得る。
そして、照合処理を終了する。
上記では、ハミング距離として、[数55]のような表現を用いた。しかしながら、b(x)、Cの代わりに[数35]のようなb’(x)、C’を用い、ハミング距離として[数36]または[数37]の定義を用いるように上記の処理を変更することは容易である。
図6は、準同型暗号を利用した暗号処理装置の構成の例を示す構成図である。図6は、準同型暗号装置として使用可能なコンピュータの一例の構成図である。
このコンピュータ500は、MPU502、ROM504、RAM506、ハードディスク装置508、入力装置510、表示装置512、インタフェース装置514、及び記録媒体駆動装置516を備えている。なお、これらの構成要素はバスライン518を介して接続されており、MPU502の管理の下で各種のデータを相互に授受することができる。
MPU(Micro Processing Unit)502は、このコンピュータ500全体の動作を制御する演算処理装置であり、コンピュータ500の制御処理部として機能する。
ROM(Read Only Memory)504は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。MPU502は、この基本制御プログラムをコンピュータ500の起動時に読み出して実行することにより、このコンピュータ500の各構成要素の動作制御が可能になる。
RAM(Random Access Memory)506は、MPU502が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置508は、MPU502によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。MPU502は、ハードディスク装置508に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
入力装置510は、例えばマウス装置やキーボード装置であり、図6のシステムの利用者により操作されると、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報をMPU502に送付する。
表示装置512は例えば液晶ディスプレイであり、MPU502から送付される表示データに応じて各種のテキストや画像を表示する。
インタフェース装置514は、このコンピュータ500に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置516は、可搬型記録媒体518に記録されている各種の制御プログラムやデータの読み出しを行う装置である。MPU501は、可搬型記録媒体520に記録されている所定の制御プログラムを、記録媒体駆動装置516を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体218としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
このようなコンピュータ500を用いて暗号処理装置を構成するには、例えば、上述の各処理部における処理をMPU502に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置508若しくは可搬型記録媒体520に予め格納しておく。そして、MPU502に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、暗号処理装置が備えている機能がMPU502により提供される。
以上の実施例1を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
各要素が最大ビット長以下で、かつ第1要素以外が暗号化される平文が取り得る記号の種類の数である平文空間サイズの倍数の整数である、所定の次元のベクトルである鍵生成ベクトルを生成するベクトル生成処理部と、
前記鍵生成ベクトルから秘密鍵行列を生成する秘密鍵生成処理部と、
前記秘密鍵行列から公開鍵行列を生成し、前記公開鍵行列の判別式である第1の公開鍵行列要素と、整数である第2の公開鍵行列要素と、前記次元と、前記平文空間のサイズを含む公開鍵データを生成する公開鍵データ生成部と、
前記第1の公開鍵行列要素と前記秘密鍵行列の逆行列の積で得られる行列の要素である、前記平文空間サイズの倍数でない整数を、秘密鍵として含む秘密鍵データを生成する秘密鍵データ生成部と、
を含む暗号処理装置。
(付記2)
前記鍵生成ベクトルをv=(v、v、…、vn−1)と書くと、前記秘密鍵行列は、
Figure 0006083234
である付記1の暗号処理装置。
(付記3)
前記公開鍵行列は、前記秘密鍵行列のエルミート標準形である、付記1または2の暗号処理装置。
(付記4)
前記公開鍵行列が満たすべき前記所定の条件は、前記公開鍵行列が、dとrを整数として、
Figure 0006083234
の形をしていることである、付記1乃至3のいずれか一項の暗号処理装置。
(付記5)
さらに、
第1のベクトルから第1の変換多項式を用いて第1の多項式と、第2のベクトルから第2の変換多項式を用いて第2の多項式を得る多項式変換部と、
前記第1のベクトルの秘匿距離に関する第1の重みと、前記第2のベクトルの秘匿距離に関する第2の重みを得る重み計算部と、
前記第1の多項式、前記第2の多項式、前記第1の重み、および前記第2の重みのそれぞれを、前記公開鍵データを用いて暗号化し、第1の暗号化多項式、第2の暗号化多項式、第1の暗号化重み、および第2の暗号化重みを得る暗号化部と、
前記第1の暗号化多項式、前記第2の暗号化多項式、前記第1の暗号化重み、および前記第2の暗号化重みから、前記第1のベクトルと前記第2のベクトルの秘匿距離の暗号化に対応する暗号化秘匿距離を得る秘匿距離計算部と、
前記秘密鍵データを用いて前記暗号化秘匿距離を復号する復号部を含む付記1乃至4のいずれか一項の暗号処理装置。
(付記6)
前記重みはハミング重みであり、前記秘匿距離はハミング距離である、付記5の暗号処理装置。
(付記7)
各要素が最大ビット長以下で、かつ第1要素以外が暗号化される平文が取り得る記号の種類の数である平文空間サイズの倍数の整数である、所定の次元のベクトルである鍵生成ベクトルを生成することと、
前記鍵生成ベクトルから秘密鍵行列を生成することと、
前記秘密鍵行列から公開鍵行列を生成し、前記公開鍵行列の判別式である第1の公開鍵行列要素と、整数である第2の公開鍵行列要素と、前記次元と、前記平文空間のサイズを含む公開鍵データを生成することと、
前記第1の公開鍵行列要素と前記秘密鍵行列の逆行列の積で得られる行列の要素である、前記平文空間サイズの倍数でない整数を、秘密鍵として含む秘密鍵データを生成することと、
を含む暗号処理方法。
(付記8)
前記鍵生成ベクトルをv=(v、v、…、vn−1)と書くと、前記秘密鍵行列は、
Figure 0006083234
である付記7の暗号処理方法。
(付記9)
前記公開鍵行列は、前記秘密鍵行列のエルミート標準形である、付記7または8の暗号処理方法。
(付記10)
前記公開鍵行列が満たすべき前記所定の条件は、前記公開鍵行列が、dとrを整数として、
Figure 0006083234
の形をしていることである、付記6乃至9のいずれか一項の暗号処理方法。
(付記11)
さらに、
第1のベクトルから第1の変換多項式を用いて第1の多項式と、第2のベクトルから第2の変換多項式を用いて第2の多項式を得ることと、
前記第1のベクトルの秘匿距離に関する第1の重みと、前記第2のベクトルの秘匿距離に関する第2の重みを得ることと、
前記第1の多項式、前記第2の多項式、前記第1の重み、および前記第2の重みのそれぞれを、前記公開鍵データを用いて暗号化し、第1の暗号化多項式、第2の暗号化多項式、第1の暗号化重み、および第2の暗号化重みを得ることと、
前記第1の暗号化多項式、前記第2の暗号化多項式、前記第1の暗号化重み、および前記第2の暗号化重みから、前記第1のベクトルと前記第2のベクトルの秘匿距離の暗号化に対応する暗号化秘匿距離を得ることと、
前記秘密鍵データを用いて前記暗号化秘匿距離を復号することを含む付記1乃至4のいずれか一項の暗号処理方法。
(付記12)
前記重みはハミング重みであり、前記秘匿距離はハミング距離である、付記11の暗号処理方法。
10 鍵生成部
20 参照データ処理装置
30 準同型暗号演算装置
40 比較データ処理装置
102 パラメータ設定部
104 ベクトルv生成処理部
106 秘密鍵行列生成処理部
108 公開鍵行列生成処理部
110 公開鍵行列判定部
112 秘密鍵データ抽出部
114 秘密鍵判定部
202、402 ベクトル化部
204、404 多項式変換部
206、406 Hamming重み計算部
208、408 暗号化部
302 暗号登録データ
304 暗号乗算部
306 暗号スカラー部
308 暗号加算部
410 秘密鍵
412 復号処理部

Claims (5)

  1. 各要素が最大ビット長以下で、かつ第1要素以外が暗号化される平文が取り得る記号の種類の数である平文空間サイズの倍数の整数である、所定の次元のベクトルである鍵生成ベクトルを生成するベクトル生成処理部と、
    前記鍵生成ベクトルから秘密鍵行列を生成する秘密鍵生成処理部と、
    前記秘密鍵行列から公開鍵行列を生成し、前記公開鍵行列の判別式である第1の公開鍵行列要素と、整数である第2の公開鍵行列要素と、前記次元と、前記平文空間のサイズを含む公開鍵データを生成する公開鍵データ生成部と、
    前記第1の公開鍵行列要素と前記秘密鍵行列の逆行列の積で得られる行列の要素である、前記平文空間サイズの倍数でない整数を、秘密鍵として含む秘密鍵データを生成する秘密鍵データ生成部と、
    を含む暗号処理装置。
  2. 前記鍵生成ベクトルをv=(v、v、…、vn−1)と書くと、前記秘密鍵行列は、
    Figure 0006083234
    である請求項1の暗号処理装置。
  3. 前記公開鍵行列は、前記秘密鍵行列のエルミート標準形である、請求項1または2の暗号処理装置。
  4. 前記公開鍵行列が満たすべき前記所定の条件は、前記公開鍵行列が、dとrを整数として、
    Figure 0006083234
    の形をしていることである、請求項1乃至3のいずれか一項の暗号処理装置。
  5. さらに、
    第1のベクトルから第1の変換多項式を用いて第1の多項式と、第2のベクトルから第2の変換多項式を用いて第2の多項式を得る多項式変換部と、
    前記第1のベクトルの秘匿距離に関する第1の重みと、前記第2のベクトルの秘匿距離に関する第2の重みを得る重み計算部と、
    前記第1の多項式、前記第2の多項式、前記第1の重み、および前記第2の重みのそれぞれを、前記公開鍵データを用いて暗号化し、第1の暗号化多項式、第2の暗号化多項式、第1の暗号化重み、および第2の暗号化重みを得る暗号化部と、
    前記第1の暗号化多項式、前記第2の暗号化多項式、前記第1の暗号化重み、および前記第2の暗号化重みから、前記第1のベクトルと前記第2のベクトルの秘匿距離の暗号化に対応する暗号化秘匿距離を得る秘匿距離計算部と、
    前記秘密鍵データを用いて前記暗号化秘匿距離を復号する復号部
    を含み、
    前記重みはハミング重みであり、前記秘匿距離はハミング距離である、
    請求項1乃至4のいずれか一項の暗号処理装置。
JP2012286259A 2012-12-27 2012-12-27 暗号処理装置 Active JP6083234B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012286259A JP6083234B2 (ja) 2012-12-27 2012-12-27 暗号処理装置
US14/104,409 US9166785B2 (en) 2012-12-27 2013-12-12 Cryptography processing device and cryptography processing method
EP13197685.4A EP2750322B1 (en) 2012-12-27 2013-12-17 Cryptography processing device and cryptography processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012286259A JP6083234B2 (ja) 2012-12-27 2012-12-27 暗号処理装置

Publications (2)

Publication Number Publication Date
JP2014126866A JP2014126866A (ja) 2014-07-07
JP6083234B2 true JP6083234B2 (ja) 2017-02-22

Family

ID=49767001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012286259A Active JP6083234B2 (ja) 2012-12-27 2012-12-27 暗号処理装置

Country Status (3)

Country Link
US (1) US9166785B2 (ja)
EP (1) EP2750322B1 (ja)
JP (1) JP6083234B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015166216A1 (en) * 2014-05-02 2015-11-05 Barclays Bank Plc Transaction authentication
US9619658B2 (en) * 2014-01-07 2017-04-11 New York University Homomorphically encrypted one instruction computation systems and methods
JP6277734B2 (ja) * 2014-01-20 2018-02-14 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法
KR102251697B1 (ko) * 2014-04-23 2021-05-14 삼성전자주식회사 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체
US9438412B2 (en) * 2014-12-23 2016-09-06 Palo Alto Research Center Incorporated Computer-implemented system and method for multi-party data function computing using discriminative dimensionality-reducing mappings
US10469257B2 (en) * 2015-01-15 2019-11-05 Nippon Telegraph And Telephone Corporation Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program
US9875375B2 (en) 2015-05-29 2018-01-23 Panasonic Intellectual Property Corporation Of America Method for performing similar-information search while keeping content confidential by encryption
JP2016224400A (ja) 2015-05-29 2016-12-28 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 類似情報検索方法、端末装置及び類似情報検索システム
WO2017008043A1 (en) * 2015-07-08 2017-01-12 Brown University Homomorphic encryption
KR102460069B1 (ko) * 2015-09-30 2022-10-28 삼성전자주식회사 보안 인증 장치 및 보안 인증 방법
CN108140334B (zh) 2015-10-09 2021-03-23 三菱电机株式会社 隐匿检索系统、管理装置、隐匿检索方法和记录介质
CN105406968B (zh) * 2015-11-30 2018-08-17 北京迪曼森科技有限公司 一种用于组合公钥领域的无求和碰撞整数矩阵产生方法
EP3182640B1 (en) * 2015-12-14 2018-04-25 Panasonic Intellectual Property Corporation of America Search method, search device, search system, and program
US10116437B1 (en) * 2015-12-14 2018-10-30 Ingram Micro, Inc. Method for protecting data used in cloud computing with homomorphic encryption
CN106100831B (zh) * 2016-06-01 2019-07-09 兰雨晴 一种传送和处理数据的方法及系统
CN106452723B (zh) * 2016-12-13 2017-05-31 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法
CN107294697B (zh) * 2017-07-21 2019-08-13 西安电子科技大学 基于明文相似矩阵的对称全同态加密方法
JP6952337B2 (ja) * 2017-11-29 2021-10-20 国立研究開発法人情報通信研究機構 暗号化システム
JP6730740B2 (ja) * 2017-12-25 2020-07-29 株式会社アクセル 処理装置、処理方法、処理プログラム、及び暗号処理システム
JP6730741B2 (ja) * 2017-12-26 2020-07-29 株式会社アクセル 処理装置、処理方法、処理プログラム、及び暗号処理システム
WO2020036125A1 (ja) * 2018-08-13 2020-02-20 日本電信電話株式会社 秘密強写像計算システム、これらの方法、秘密計算装置及びプログラム
JP6980154B2 (ja) * 2019-05-27 2021-12-15 三菱電機株式会社 データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム
CN110784300B (zh) * 2019-11-08 2022-09-16 中国电子科技网络信息安全有限公司 一种基于乘法同态加密的密钥合成方法
CN110958107A (zh) * 2019-12-05 2020-04-03 全链通有限公司 基于区块链的电子投票方法、设备及存储介质
CN112073172B (zh) * 2020-09-02 2021-11-05 北京邮电大学 一种格上基于身份的双接收者全同态加密方法及系统
CN113055184B (zh) * 2021-03-22 2022-11-29 中国工商银行股份有限公司 数据加解密方法及装置
WO2022201277A1 (ja) * 2021-03-23 2022-09-29 日本電気株式会社 類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム
RU2763394C1 (ru) * 2021-03-30 2021-12-28 Автономная некоммерческая организация высшего образования «Университет Иннополис» Способ и устройство шифрования данных
KR102474897B1 (ko) * 2022-09-01 2022-12-06 (주)노르마 양자 내성 암호화 알고리즘에 기초한 봉인 키 교환을 통해 가상 사설 네트워크를 제공하는 가상 사설 네트워크 형성 방법 및 이를 수행하는 가상 사설 네트워크 운용 시스템
KR102474894B1 (ko) 2022-09-01 2022-12-06 (주)노르마 양자 내성 암호화 알고리즘에 기초한 서명과 인증을 수행함으로써 가상 사설 네트워크를 제공하는 가상 사설 네트워크 형성 방법 및 이를 수행하는 가상 사설 네트워크 운용 시스템
KR102474891B1 (ko) * 2022-09-01 2022-12-06 (주)노르마 양자 내성 암호화 알고리즘에 기초하여 생성한 키를 활용하여 가상 사설 네트워크를 제공하는 가상 사설 네트워크 형성 방법 및 이를 수행하는 가상 사설 네트워크 운용 시스템
KR102474899B1 (ko) 2022-09-01 2022-12-06 (주)노르마 양자 내성 암호화 알고리즘에 기초한 가상 사설 네트워크 형성 방법 및 이를 수행하는 가상 사설 네트워크 운용 시스템

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065210B1 (en) 1999-01-25 2006-06-20 Murata Kikai Kabushiki Kaisha Secret key generation method, encryption method, cryptographic communications method, common key generator, cryptographic communications system, and recording media
JP3590284B2 (ja) 1999-01-25 2004-11-17 村田機械株式会社 暗号通信方法,暗号通信システム,共通鍵生成装置及び記録媒体
US7184551B2 (en) * 2002-09-30 2007-02-27 Micron Technology, Inc. Public key cryptography using matrices
WO2006054208A1 (en) * 2004-11-16 2006-05-26 Koninklijke Philips Electronics N.V. Securely computing a similarity measure
US8249250B2 (en) * 2009-03-30 2012-08-21 Mitsubishi Electric Research Laboratories, Inc. Secure similarity verification between homomorphically encrypted signals
JP2011118387A (ja) 2009-12-07 2011-06-16 Mitsubishi Electric Research Laboratories Inc 信号に関数を適用した結果を求めるための方法およびシステム
US8311213B2 (en) 2009-12-07 2012-11-13 Mitsubishi Electric Research Laboratories, Inc. Method for determining functions applied to signals
US8416955B2 (en) 2009-12-07 2013-04-09 Mitsubishi Electric Research Laboratories, Inc. Method for determining functions applied to signals
JP5448863B2 (ja) * 2010-01-15 2014-03-19 日本電信電話株式会社 鍵生成装置、鍵生成方法、プログラム及び記録媒体
US8861716B2 (en) * 2010-03-30 2014-10-14 International Business Machines Corporation Efficient homomorphic encryption scheme for bilinear forms
US8565435B2 (en) * 2010-08-16 2013-10-22 International Business Machines Corporation Efficient implementation of fully homomorphic encryption
US8681973B2 (en) * 2010-09-15 2014-03-25 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for performing homomorphic encryption and decryption on individual operations
US8837715B2 (en) * 2011-02-17 2014-09-16 Gradiant, Centro Tecnolóxico de Telecomunicacións de Galica Method and apparatus for secure iterative processing and adaptive filtering
JP5496410B2 (ja) * 2011-02-22 2014-05-21 三菱電機株式会社 類似度算出システム及び類似度算出装置及びコンピュータプログラム及び類似度算出方法

Also Published As

Publication number Publication date
US9166785B2 (en) 2015-10-20
US20140185797A1 (en) 2014-07-03
JP2014126866A (ja) 2014-07-07
EP2750322B1 (en) 2017-06-28
EP2750322A1 (en) 2014-07-02

Similar Documents

Publication Publication Date Title
JP6083234B2 (ja) 暗号処理装置
US9100185B2 (en) Encryption processing apparatus and method
JP6934963B2 (ja) データを暗号化する方法およびシステム
JP6413598B2 (ja) 暗号処理方法、暗号処理装置、及び暗号処理プログラム
JP6244728B2 (ja) 情報処理方法及びプログラム
KR102251697B1 (ko) 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체
JP5966877B2 (ja) 復号方法、復号プログラム、復号装置、および鍵生成方法
JP2016012111A (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
JP6413743B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
KR102019159B1 (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
JP5814880B2 (ja) 暗号システム、暗号方法、暗号プログラム及び復号装置
JPWO2010123112A1 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
JP2015212756A (ja) 情報処理方法及びプログラム
CN102187617B (zh) 密码系统
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
US11909873B2 (en) Decryption device, cryptographic system, and decryption method
JP2018036418A (ja) 暗号システム、暗号方法及び暗号プログラム
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
US8924448B2 (en) Arithmetic device, method, and program product
JP4836208B2 (ja) 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
JP2013148822A (ja) 検索可能暗号システム、検索装置、計算装置、及びプログラム
JP2010002525A (ja) 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160727

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161115

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161129

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170109

R150 Certificate of patent or registration of utility model

Ref document number: 6083234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150