本発明は、情報セキュリティ技術としての暗号技術に関し、特に、復号エラーが発生しない暗号に関するものである。
従来、送信装置と受信装置との間で秘匿通信を実現する方法として、公開鍵暗号を用いた暗号化通信が提案されている。従来の暗号化通信について簡単に説明すると、送信装置が、通信内容を受信装置の公開鍵を用いて暗号化して送信し、受信装置は、暗号化された通信内容を受信し、それを自身の秘密鍵を用いて復号して元の通信内容を得る方法である(例えば、非特許文献1参照)。ここで、公開鍵の値から秘密鍵の値を計算するのは困難である。この方法を用いる一般的な暗号通信システムでは、送信装置及び受信装置は、ともに複数存在する。まず、送信装置は、通信先受信装置の公開鍵を取得する。この公開鍵は、通信先受信装置が有する秘密鍵と対になるものであり当該システムにおいて公開されている。そして、送信装置は、通信すべきデータ内容を上記のように取得した公開鍵で暗号化して送信する。一方、受信装置は、上記のように暗号化された通信内容データを受信する。そして、受信装置は、暗号化された通信内容データを、自身の有する秘密鍵で復号して元の通信内容データを得る。
1996年、高速処理が可能な公開鍵暗号として、NTRU(エヌティーアールユー・クリプトシステムズ・インコーポレーテッドの商標)暗号が提案された(例えば、非特許文献2参照)。このNTRU暗号は、ある法の下でべき乗剰余演算を行うRSA(Rivest Shamir Adleman)暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号に比べ、高速に演算可能な多項式演算により暗号化と復号化とを行う。このため、従来の公開鍵暗号よりも高速に処理することが可能で、ソフトウェア処理でも実用的な時間で暗号化及び復号化の処理が可能ある。
従って、公開鍵暗号にNTRU暗号を用いた暗号通信システムでは、従来の公開鍵暗号を用いた暗号通信システムよりも、送信装置及び受信装置の処理が高速に行えるという利点がある。
このNTRU暗号方式については、非特許文献2に詳しく述べられているので、ここでは詳細な説明を省略するが、以下に簡単に説明する。
<NTRU暗号方式>
(1)NTRU暗号のパラメータ
NTRU暗号は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。以下に、これらのパラメータの意味を説明する。
(i)パラメータN
NTRU暗号は、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。NTRU暗号で扱う多項式の次元は、上記パラメータNにより決まる。
NTRU暗号で扱う多項式は、上記パラメータNに対し、(N−1)次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。ここで、「X^a」はXのa乗を意味することとする。また、暗号化時あるいは復号化時に用いられる公開鍵h、秘密鍵f、平文m、乱数r、暗号文cはいずれも、(N−1)次以下の多項式として表現される。
そして、多項式演算は、上記パラメータNに対し、「X^N=1」という関係式を用いて、演算結果が常に(N−1)次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を「×」、整数と多項式の積(あるいは整数と整数の積)を「・」とすると、「X^5=1」という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2×1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常に(N−1)次元以下の多項式になるように計算される。
(ii)パラメータp、q
NTRU暗号では、2以上の整数であるパラメータp、qが用いられる。NTRU暗号で出現する多項式の係数は、p、qを法とした剰余を取る。非特許文献2に記載の通り、このパラメータp、qは互いに素となる必要がある。
(iii)パラメータdf、dg、d
NTRU暗号で扱う秘密鍵の一部である多項式f、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式g、及び平文を暗号化するときに用いる乱数である多項式rの選び方は、それぞれパラメータdf、dg、及びdにより決まる。
まず、多項式fは、df個の係数が1であり、かつ(df−1)個の係数が−1であり、かつ他の係数は0となるように選ばれる。すなわち、多項式fは(N−1)次以下の多項式であり、0次(定数項)から(N−1)次までのN個の係数を有する。このN個の係数のうち、df個の係数が1であり、かつ(df−1)個の係数が−1であり、かつ(N−2df+1)個の係数が0となるように多項式fが選ばれる。
そして、多項式gは、dg個の係数が1であり、かつdg個の係数が−1であり、かつ他の係数が0となるように選ばれる。また、乱数である多項式rは、d個の係数が1であり、かつd個の係数が−1であり、かつ他の係数が0となるように選ばれる。
非特許文献2には、NTRU暗号のパラメータの例として、(N,p,q,df,dg,d)=(107,3,64,15,12,5)、(N,p,q,df,dg,d)=(167,3,128,61,20,18)、(N,p,q,df,dg,d)=(503,3,256,216,72,55)の3つの例が挙げられている。
(2)NTRU暗号の鍵生成
NTRU暗号では、上述したように、パラメータdfおよびdgを用いてランダムに多項式fおよび多項式gがそれぞれ生成される。そして非特許文献2に記載の通り、Fq×f=1(mod q)なる関係を有する多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hが生成される。ここで、a(mod b)はaをbで除したときの剰余を示す。
また、NTRU暗号では、秘密鍵を(f,Fp)、公開鍵をhとする。
ここで、「x=y(mod q)」は、多項式yの第i次の係数を剰余が0からq−1の範囲に収まるようにするために、法qで割ったときの剰余を多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、yの各係数を、0から(q−1)の範囲に収まるようにmod q演算(qで除したときの剰余を求める演算、法qでの剰余演算)を施した多項式を、多項式xとする演算である。
(3)NTRU暗号の暗号化
NTRU暗号の暗号化では、平文である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式である乱数rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、0次(定数項)から(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数が0となるように、ランダムに多項式(乱数)rを選ぶ。
そして、この乱数rと公開鍵hとを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(p・r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
(4)NTRU暗号の復号化
NTRU暗号の復号化では、暗号文である多項式cを復号化し、復号文である多項式m’を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
ここで、(mod q*)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。すなわち、係数が〈q/2〉からq−1までの間の値である場合は、係数からqを減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m’=Fp×b(mod p*)
により、復号文m’を計算する。
なお、この(mod p*)という演算は、上述した通り、多項式(Fp×b)の第i次の係数を、〈−p/2〉+1から〈p/2〉の範囲に収まるように法pで割ったときの剰余を、多項式m’の第i次の係数とする演算である。
なお、このNTRU暗号に関して、上述のパラメータは全てp=3となるパラメータであるが、このパラメータの他にp=2となるパラメータも開示されている(例えば、非特許文献3参照)。なお、非特許文献2に記載の通り、p=3の場合は、平文mは係数が0、1もしくは−1の3値である多項式であるが、p=2の場合は、平文mは係数が0もしくは1の2値である多項式である。そして、秘密鍵である多項式f、多項式g、乱数rは、p=2かp=3かに関わらず係数が0、1もしくは−1の3値である多項式である。
また、このNTRU暗号に関して、鍵生成処理において、
h=p・Fq×g(mod q)
を満たすように、公開鍵hを生成し、暗号化処理を
c=r×h+m(mod q)
により行う方法も開示されている(例えば、非特許文献5参照)。
しかしながら、上述したNTRU暗号は、公開鍵を用いて平文を暗号化して暗号文を生成し、正規の秘密鍵を用いて暗号文を復号して復号文を生成しても、復号文が元の平文と異なる場合が発生する(例えば、非特許文献2参照)。このことを復号エラー(decryption failure)が発生するという。非特許文献2に記載のNTRU暗号は、上述したパラメータの取り方により復号エラーの発生確率が変わるが、当該文献に開示されているパラメータではいずれも、10^(−5)程度の確率で復号エラーが発生することが知られている(例えば、非特許文献3参照)。
これに対し、近年、パラメータを後述するパラメータに限定し、復号化時に復号エラー発生確率を低減させる計算を追加することにより、復号エラー確率を2^(−100)以下にする新しいNTRU暗号方式であるNTRUEncryptと呼ばれる方式が提案されている(例えば、非特許文献4参照)。
このNTRUEncrypt方式については、非特許文献4に詳しく述べられているので、ここでは詳細な説明を省略するが、以下に簡単に説明する。
<NTRUEncrypt方式>
(1)NTRUEncryptのパラメータ
NTRUEncryptでは、非負整数のパラメータ、N、p、q、df、dg、dを持つ。非特許文献4には、NTRUEncryptのパラメータとして(N,p,q,df,dg,d)=(251,2,239,72,72,72)というパラメータのみが開示されている。NTRUEncryptでは、これらのパラメータのうち、パラメータdf、dg、dの意味がNTRU暗号と異なる。
以下に、上述のNTRU暗号との差異点を中心に、これらのパラメータの意味を説明する。
(i)パラメータN
NTRUEncryptは、NTRU暗号と同様、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。NTRU暗号と同様、NTRUEncryptで扱う多項式は、上記パラメータNに対し、(N−1)次以下の整数係数多項式であり、多項式演算は、X^N=1という関係式を用いて、演算結果が常に(N−1)次以下の多項式になるように演算される。
(ii)パラメータp、q
NTRUEncryptでは、上述の通りp=2、かつq=239となるパラメータp、qを用いる。このパラメータp、qは互いに素となっている。
(iii)パラメータdf、dg、d
NTRUEncryptで扱う秘密鍵の一部である多項式f、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式g、及び平文を暗号化するときに用いる乱数である多項式rの選び方は、それぞれパラメータdf、dg、dにより決まる。
まず、df個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式fが選ばれる。
そして、dg個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式が選ばれる。また、乱数rとして、同様に、d個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式が選ばれる。
すなわち、NTRU暗号では、多項式f、g、rとして、係数が0、1もしくは−1である多項式を選んでいたのに対し、NTRUEncryptでは、多項式f、g、rとして、係数が0もしくは1である多項式を選ぶ点がNTRU暗号と異なる。
(2)NTRUEncryptの鍵生成
NTRUEncryptでは、上述したように、パラメータdf、dgを用いてランダムに多項式f、gを生成する。そして非特許文献4に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=p・Fq×g(mod q)
により、多項式hを生成する。また、NTRUEncryptでは、秘密鍵を(f,Fp)、公開鍵を多項式hとする。
(3)NTRUEncryptの暗号化
NTRUEncryptでは、まず、上述したような乱数rをランダムに生成する。すなわち、パラメータdを用いてd個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式をランダムに選び、乱数rとする。
そして、この乱数rと公開鍵hを用いて、係数が0もしくは1である(N−1)次以下の平文mに対し、
c=r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
なお、NTRU暗号の説明で述べた通り、鍵生成処理において、
h=Fq×g(mod q)
を満たすように、公開鍵hを生成し、暗号化処理を、
c=p・r×h+m(mod q)
により行っても、暗号文cの値は同一となるため、本質的な違いはない。
(4)NTRUEncryptの復号化
復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q**)
により多項式aを計算する。
ここで、(mod q**)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を適切な幅qの区間に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。具体的な演算方法は、非特許文献4に、center1もしくはcenter2と呼ばれるアルゴリズムで規定されている。
以下に、center2のアルゴリズムを示す。
(center2アルゴリズム)
Step1:A=f×c(mod q)とし、I1=(A(1)−p×d×dg)/(df^(−1)mod q)
mod qを計算する。ここで、A(1)は多項式Aの変数xに1を代入したときの値を示す。
Step2:I1が〈(N−q)/2〉+1から〈(N+q)/2〉の範囲に入るようI1にqの倍数を足して調整したときの値をI2とする(当然、I2=I1 mod qを満たす)。
Step3:J=df×I2+p×d×dgを計算する。
Step4:Aの各係数が〈J/N−q/2〉+1から〈J/N+q/2〉の範囲に入るように、各係数にqの倍数を足して調整した後の多項式をa(=f×c(mod q**))とする。
この演算は、復号エラー発生確率を減少させるために行う処理である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m’=Fp×b(mod p)
により、復号文m’を生成する。
なお、このNTRUEncryptに関して、df個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式Fを選び、f=1+p・Fという式により多項式fを構成する方式も開示されている(例えば、非特許文献4参照)。この方式は、非特許文献4に記載の通り、多項式fがf=1+p・Fという形であるために、Fp×f=1(mod p)となる多項式FpはFp=1(mod p)となるので、復号化処理で行う多項式Fpとの多項式乗算が不要となり、
m’=a(mod p)
により、復号文m’を生成できる。
このNTRUEncryptは、復号化時に復号エラー発生確率を減少させる処理を行うことにより、NTRU暗号よりも復号エラーが発生しにくくした方式ではあるが、その復号エラー発生確率は2^(−100)以下ということしか示されておらず、復号エラー発生確率が0、すなわち、復号エラーを全く発生させない方法については知られていない。
なお、NTRU暗号及びNTRUEncrypt共に多項式を用いて演算を表現しているが、特許文献1ではこれを一般の環Rの元として表現している。具体的には、上記の多項式を環Rの元とし、p、qを環Rのイデアルとしている。
しかしながら、上述したNTRUEncrypt方式では、qが2以外の素数であるため、暗号化処理及び復号化処理で行う多項式係数の法qでの剰余演算がNTRU暗号方式に比べて容易にできない。このため、NTRU暗号方式と比べて暗号化処理及び復号化処理の処理速度が遅くなる、という課題がある。
また、上述したNTRUEncrypt方式では、復号エラー発生確率は0ではないため、送信装置と受信装置の間で暗号化通信を行う暗号通信システムに適用した場合、送信装置が送信したデータ内容が、受信装置で正しく得られない場合がある、という課題がある。
本発明は、前記従来の課題を解決するもので、NTRUEncrypt方式より高速なNTRU暗号方式を新たに構成し、新たに構成したNTRU暗号方式を暗号システムに適用することで、さらに高速な暗号システムを提供することを第1の目的とする。
また、復号エラーが原理的に発生しないNTRU暗号方式を新たに構成し、新たに構成したNTRU暗号方式を暗号システムに適用することで、送信装置が送信したデータ内容が、常に受信装置で正しく得られるような暗号システムを提供することを第2の目的とする。
上記目的を達成するために、本発明に係る暗号システムは、所定の暗号方式に従い平文を暗号化して暗号文を生成する暗号装置と、前記所定の暗号方式に従い前記復号文を復号化して復号文を生成する復号装置とを備える暗号システムであって、前記復号装置は、加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと(ここでa(mod b)は、aをbで割った余りを示す。)、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成部と、前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化部とを備え、前記暗号装置は、前記公開鍵及び前記環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化部を備え、前記元f、前記元g、前記元r、前記平文であるN次元配列のすべての要素は0もしくは1であり、前記イデアルpと前記イデアルqとは互いに素であり、前記イデアルqはq=(2^k)*Rである(ただし、2^kは1に2をk回掛けた結果であり、*は環Rの乗算を表す)ことを特徴とする。
qを上述のように、定義している。このため、qが整数の場合には、qは2のべき乗となり、法qでの剰余演算(mod q演算)をビットマスク演算により行なうことができる。よって、暗号システムは、高速に処理を行なうことができる。
また、前記鍵生成部は、前記元fは、N次元配列の値が1となる要素の数を規定する非負整数dfに基づき生成され、前記元gは、N次元配列の値が1となる要素の数を規定する非負整数dgに基づき生成され、前記元rは、N次元配列の値が1となる要素の数を規定する非負整数dに基づき選択され、前記イデアルpは、前記環Rの元pgに対しp=pg*Rであり、前記イデアルqは、前記環の元qgに対しq=qg*Rであり、前記次元N、前記元pg、前記元qg、前記非負整数df、前記非負整数dg、前記非負整数dは、復号エラー発生有無を判定するエラー条件情報に基づいていてもよい。さらに、前記エラー条件情報は、復号エラーが発生しないための条件を表す条件式であってもよい。具体的には、前記条件式は、Min(dg,d)+df<(qg−1)/p(ただし、Min(a,b)はaとbの小さい方の数を表す)である。
上述の条件式を満たすようにパラメータを設定すると、実施の形態において後述するように、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まることになり、復号エラーは発生が発生しない。
なお、本発明は、このような特徴的な手段を備える暗号システムとして実現することができるだけでなく、暗号システムに含まれる特徴的な手段をステップとする暗号方法として実現したり、暗号システムを構成する暗号装置および復号装置に含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc−Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
本発明によると、従来最速のNTRUEncrypt方式よりも高速処理可能なNTRU暗号方式を新たに構成し、また、このNTRU暗号方式を暗号通信に適用することで、従来よりも高速処理可能な暗号システムを構成することできる。
また、復号エラーが原理的に発生しないNTRU暗号方式を構成し、また、このNTRU暗号方式を暗号システムに適用することで、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号システムを構成することできる。
さらに、復号エラーが原理的に発生せず、かつ高速処理可能なNTRU暗号方式を構成し、また、このNTRU暗号方式を暗号システムに適用することで、暗号装置が送信したデータ内容が、常に復号装置で正しく得られ、従来よりも高速処理可能な暗号システムを構成することできるようになった。
以上により、従来達成できなかった暗号システム、暗号装置及び復号装置を提供することができ、その実用的価値は大きい。
図1は、本発明の実施の形態1に係る暗号通信システムの構成を示すブロック図である。
図2は、実施の形態1に係る暗号装置の構成を示すブロック図である。
図3は、実施の形態1に係る暗号装置の動作を示すフローチャートである。
図4は、実施の形態1に係る復号装置の構成を示すブロック図である。
図5は、実施の形態1に係る復号装置の動作を示すフローチャートである。
図6は、実施の形態1に係る暗号通信システム全体の動作を示すフローチャートである。
図7は、本発明の実施の形態2に係る暗号通信システムの構成を示すブロック図である。
図8は、実施の形態2に係る暗号装置の構成を示すブロック図である。
図9は、実施の形態2に係る復号装置の構成を示すブロック図である。
図10は、実施の形態2に係る暗号通信システム全体の動作を示すフローチャートである。
図11は、実施の形態3に係る暗号通信システムの構成を示すブロック図である。
図12は、実施の形態3に係る暗号装置の構成を示すブロック図である。
図13は、実施の形態3に係る復号装置の構成を示すブロック図である。
図14は、実施の形態3に係る暗号通信システム全体の動作を示すフローチャートである。
符号の説明
1,1b,1c 暗号通信システム
10,10b,10c 暗号装置
11,11b,11c,21,21b,21c パラメータ記憶部
12 公開鍵記憶部
13,13b,13c 暗号化部
20,20b,20c 復号装置
22,22b,22c 鍵生成部
23 秘密鍵記憶部
24,24b,24c 復号化部
30 通信路
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本実施の形態1に係る暗号通信システム、暗号装置及び復号装置では、従来において最速であるNTRUEncrypt方式よりも高速処理可能なNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、従来よりも高速処理可能なNTRU暗号方式を「第1の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に高速NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に第1の変形NTRU暗号方式について説明する。
<第1の変形NTRU暗号方式>
第1の変形NTRU暗号方式は、従来のNTRUEncryptよりも高速処理可能となるように改変したものである。
第1の変形NTRU暗号方式は、パラメータとしてp=3、q=2^k(k:2以上の整数)となるパラメータを用いつつ、多項式f、g、乱数である多項式r及び平文である多項式mとして、係数が0もしくは1の2値である多項式を選ぶ点が従来のNTRUEncryptと異なる。なお、パラメータpは、パラメータqと互いに素になるような値であればよく、3以外の値であってもよい。
以下、この第1の変形NTRU暗号方式について説明を行う。
(1)第1の変形NTRU暗号方式のパラメータ
第1の変形NTRU暗号方式は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。
これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、p=3かつq=2^k(k:2以上の整数)となるパラメータを生成し、p=3としているにも拘わらず、多項式f、g、rとして係数が0もしくは1の2値である多項式を用いる点が、従来のNTRUEncryptと異なる。
(2)第1の変形NTRU暗号方式の鍵生成
第1の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。具体的には、df個の係数が1であり、それ以外の係数が0である多項式fを生成し、dg個の係数が1であり、それ以外の係数が0である多項式gを生成する。そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。秘密鍵を(f,Fp)、公開鍵をhとする。
ここで、x=y(mod q)は、多項式yの第i次の係数を、剰余が0からq−1の範囲に収まるように法qで割ったときの剰余を、多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、yの各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式xとする演算である。
(3)第1の変形NTRU暗号方式の暗号化
第1の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような乱数である多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに乱数rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(p・r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
第1の変形NTRU暗号方式は、p=3としているにも拘わらず、係数が0もしくは1の2値である多項式を用いる点が、従来のNTRUEncryptと異なる。
(4)第1の変形NTRU暗号方式の復号化
第1の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m’を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
ここで、(mod q*)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。すなわち、係数が〈q/2〉からq−1である場合は、係数からqを減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m’=Fp×b(mod p*)
により、復号文m’を計算する。
なお、この(mod p*)という演算は、上述した通り、多項式(Fp×b)の第i次の係数を、〈−p/2〉+1から〈p/2〉の範囲に収まるように法pで割ったときの剰余を、多項式m’の第i次の係数とする演算である。
<従来技術と第1の変形NTRU暗号方式との差異点>
以下、第1の変形NTRU暗号方式が、従来のNTRUEncrypt方式よりも高速処理が可能であることを説明し、従来のNTRU暗号及びNTRUEncrypt方式との差異について説明する。
(NTRUEncryptとの比較)
NTRUEncryptでは、上述した通り、秘密鍵である多項式f、多項式g、乱数である多項式r、平文である多項式mとして、係数が0もしくは1である2値の多項式を用いるが、パラメータとしては、p=2かつq=239となるパラメータしか開示されていない。
今、NTRUEncryptの鍵生成、暗号化及び復号化における主な演算には、例えば、
c=r×h+m(mod q)
というように、多項式の係数のmod q演算を行う演算が含まれる。
この際、NTRUEncryptではq=239なのに対し、第1の変形NTRU暗号方式では、q=2^k(k:2以上の整数)であるために、第1の変形NTRU暗号方式では、mod q演算を、ビットマスク演算で高速に処理することができる。
例えば、第1の変形NTRU暗号方式のパラメータqがq=256(=2^8)の場合には、係数のmod q演算は、ビットマスク演算にて下位8ビットのみをとる演算で実現できる。
NTRUEncryptでは、p=2であるが、第1の変形NTRU暗号方式はp=3であり、mod pの計算については、NTRUEncryptの方が高速に行える。しかし、mod pの計算は復号化時のみに行うことと、NTRUEncryptには復号エラー発生確率低減のための計算が必要であるが、第1の変形NTRU暗号方式では不要であるため、mod pの計算量増加と相殺する。
したがって、暗号化及び復号化を含めた全体としては、第1の変形NTRU暗号方式は、NTRUEncryptより高速である。
(従来技術との差異)
従来のNTRU暗号では、p=3となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mに、係数が0、1もしくは−1である3値の多項式を用いている(p=2の場合は、これらの多項式のうち、平文m以外に係数が0、1もしくは−1である3値の多項式を用いる。また、p≠2、3の場合は、多項式f、g、rに0、1もしくは−1である3値の多項式を用い、mに〈−p/2〉+1から〈p/2〉の範囲の整数を係数にもつp値の多項式を用いる)。
一方、従来のNTRUEncryptでは、p=2となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mに、係数が0もしくは1である2値の多項式を用いている。
そのため、NTRU暗号では、p=3となるパラメータに対しては、多項式f、g、乱数である多項式r、平文である多項式mとして、3値の多項式を用いることが通常であり、上述した第1の変形NTRU暗号方式のように、p=3の場合に、これらの多項式として2値の多項式を用いた場合に、暗号の安全性にどのような影響が生じるかは開示されていなかった。
しかしながら、今、p=3となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mとして係数が0もしくは1となる2値の多項式を用いても、従来のNTRU暗号及びNTRUEncryptと同様、パラメータを適切に選択すれば、安全性に問題は起こらない。以下にそのことを説明する。
NTRU暗号及びNTRUEncryptに対する攻撃方法としては、非特許文献2に記載の通り、多項式f、g、rに対する総当り攻撃と、LLLアルゴリズムを用いた攻撃(lattice based attack)が知られている。
今、総当り攻撃に対する安全性は、非特許文献2や非特許文献6に記載の通り、多項式f、g、rのとり得る値の総数に依存する。そのため、p=3となるパラメータに対して、これらの多項式として3値の多項式を用いる代わりに、2値の多項式を用いたとしても、これらの多項式のとり得る値の総数が十分大きくなるように、パラメータdf、dg、dを選択すれば安全性に問題は発生しない。
また、LLL攻撃に対する安全性は、多項式f、gの0でない係数の数に依存することが、非特許文献7に記載されている。そのため、0でない係数の数が十分大きくなるように、df、dgを選択すれば、安全性に問題は発生しない。
<変形NTRU暗号方式のパラメータの生成方法>
ここでは、上述した第1の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第1の変形NTRU暗号方式のパラメータは、p=3、かつq=2^k(k:2以上の整数)となるパラメータを生成すればよい。
そのため、ここでは、まずp=3とし、係数のmod q演算が、ビットマスク演算にて下位8ビットのみをとる演算で実現可能となるよう、q=256とする。
そして、df=dg=dとして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、N、df、dg、dの値を生成する。
なお、これはパラメータの生成方法の一例であり、p=3、かつq=2^k(k:2以上の整数)となるパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,3,256,72,72,72)というパラメータを用いた場合の説明を行う。
以上、第1の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1の概要>
図1は、本発明の実施の形態1における暗号通信システム1の全体構成を示す図である。最初に、同図を用いて暗号通信システム1の概要を説明する。
この暗号通信システム1は、平文mの暗号化通信を行うシステムであり、暗号装置10と、復号装置20とから構成されており、暗号装置10と復号装置20とは通信路30を介して相互に接続されている。
そして、この暗号通信システム1は、暗号装置10と復号装置20との間で、第1の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,72,72,72)を共有している。
この暗号通信システム1において、暗号装置10は、外部から入力された平文mを、上述した、第1の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20に送信する。
そして、復号装置20は、通信路30を介して暗号装置10から受信した暗号文cを復号して復号文m’を生成して出力する。
以上が、暗号通信システム1の概要であるが、以下、暗号通信システム1の構成を述べた後、その動作について説明する。
<暗号通信システム1の構成>
暗号通信システム1は、図1に示すように、暗号装置10と、復号装置20とから構成され、暗号装置10と復号装置20とは通信路30を介して相互に接続されている。
以下、これらの構成要素について詳細に説明を行う。
<暗号装置10の構成>
暗号装置10は、図2に示すように、パラメータ記憶部11と、公開鍵記憶部12と、暗号化部13とから構成される。
(1)パラメータ記憶部11
パラメータ記憶部11は、例えばRAM(Random Access Memory)やEEPROM(Electrically Erasable Programmable Read Only Memory)のようなメモリで構成されており、後述する暗号化部13からアクセス可能なものである。
パラメータ記憶部11は、p=3かつq=2^k(k:2以上の整数)となるパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,72,72,72)を予め記憶しているものとする。
(2)公開鍵記憶部12
公開鍵記憶部12は、例えばマイクロコンピュータ及びRAMのようなメモリで構成されており、後述する暗号化部13からアクセス可能なものである。
公開鍵記憶部12は、予め通信路30を介して復号装置20の公開鍵hを取得して記憶している。
(3)暗号化部13
暗号化部13は、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11及び公開鍵記憶部12にアクセス可能である。
暗号化部13は、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る。
そして、暗号化部13は、外部からパラメータNに対し、(N−1)次以下の多項式で表される、係数が0もしくは1である平文mを受け取る。
そして、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ。これは、例えば、0からN−1までの範囲の重複しないd個の乱数値Ri(1≦i≦d)を選び、第Ri次(1≦i≦d)の係数を1とし、他の係数は0とすることで実現できる。
そして、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する。
そして、暗号化部13は、生成した暗号文cを通信路30を介して復号装置20へ送信する。
<暗号装置10の動作>
ここでは、上述した暗号装置10の動作について説明する。
暗号装置10は、p=3かつq=2^k(k:2以上の整数)となるパラメータを予め記憶しており、復号装置20の公開鍵hを公開鍵記憶部12に予め記憶している。そして、外部から、パラメータNに対し(N−1)次以下の多項式で表される平文mが入力されると、以下に示す処理を行い、上述した第1の変形NTRU暗号方式を用いて平文mを暗号化して暗号文cを生成し、通信路30を介して復号装置20に送信する。
以下、図3に示すフローチャートを用いて説明する。
最初に、暗号化部13は、外部から平文mが入力されると、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS101)。
次に、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS102)。
次に、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS103)。
次に、暗号化部13は、生成した暗号文cを、通信路30を介して復号装置20へ送信して処理を終了する(ステップS104)。
<復号装置20の構成>
復号装置20は、図4に示すように、パラメータ記憶部21と、鍵生成部22と、秘密鍵記憶部23と、復号化部24とから構成される。
(1)パラメータ記憶部21
パラメータ記憶部21は、例えばEEPROMのようなメモリで構成されており、後述する鍵生成部22及び復号化部24からアクセス可能なものである。
パラメータ記憶部21は、暗号装置10のパラメータ記憶部11と同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,72,72,72)を予め記憶しているものとする。
(2)鍵生成部22
鍵生成部22は、例えばマイクロコンピュータによって構成されており、第1の変形NTRU暗号方式の秘密鍵(f,Fp)及び公開鍵hを生成する。
鍵生成部22は、パラメータ記憶部21からパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ。これは、例えば、0から(N−1)までの範囲の重複しないdf個の乱数値Ri(1≦i≦df)を選び、第Ri次(1≦i≦df)の係数を1とし、他の係数は0とすることで実現できる。
そして、鍵生成部22は、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ。
そして、鍵生成部22は、上述した第1の変形NTRU暗号方式の鍵生成処理を行い、多項式Fp及びhを生成する。
そして、鍵生成部22は、多項式hを公開鍵として公開し、予め暗号装置10が取得できるようにし、多項式fとFpの対(f,Fp)を秘密鍵記憶部23に記憶する。
(3)秘密鍵記憶部23
秘密鍵記憶部23は、例えばRAMのようなメモリで構成されており、鍵生成部22及び後述する復号化部24からアクセス可能なものである。
秘密鍵記憶部23は、予め鍵生成部22が生成した多項式fとFpの対(f,Fp)を記憶している。
(4)復号化部24
復号化部24は、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21及び秘密鍵記憶部23にアクセス可能である。
復号化部24は、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、多項式fとFpの対(f,Fp)を読み取る。
そして、復号化部24は、通信路30を介して暗号装置10からパラメータNに対し、(N−1)次以下の多項式で表される、暗号文cを受け取る。
そして、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する。
そして、復号化部24は、生成した復号文m’を外部へ出力する。
<復号装置20の動作>
ここでは、上述した復号装置20の動作について説明する。
復号装置20は、暗号装置10と同一のパラメータを予め記憶しており、復号装置20の秘密鍵である多項式f及びFpの対(f,Fp)と公開鍵である多項式hを生成し、公開鍵hを公開して予め暗号装置10が取得できるようにし、秘密鍵(f,Fp)を秘密鍵記憶部23に記憶している。そして、復号装置20は、通信路30を介して暗号装置10から、パラメータNに対し(N−1)次以下の多項式で表される暗号文cを受信すると、以下に示す処理を行い、上述した高速NTRU暗号方式を用いて復号文m’を生成し、外部へ出力する。
以下、図5に示すフローチャートを用いて説明する。
最初に、復号化部24は、通信路30を介して暗号装置10から暗号文多項式cを受信すると、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS131)。
次に、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する(ステップS132)。
次に、復号化部24は、生成した復号文m’を外部へ出力して処理を終了する(ステップS133)。
<暗号通信システム1の動作>
以上、暗号通信システム1の構成について説明したが、ここでは、暗号通信システム1の全体の動作について、図6に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11及びパラメータ記憶部21は、p=3かつq=2^kとなるパラメータを予め記憶している(ステップS161)。
次に、鍵生成部22は、パラメータ記憶部21からパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ(ステップS162)。
次に、鍵生成部22は、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS163)。
次に、鍵生成部22は、上述した第1の変形NTRU暗号方式の鍵生成処理を行い、多項式hを生成する(ステップS164)。
次に、鍵生成部22は、多項式hを公開鍵として公開し、暗号装置10が取得できるようにし、多項式f及びFpの対(f,Fp)を秘密鍵として秘密鍵記憶部23に記憶する(ステップS165)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20の公開鍵hを取得して記憶する(ステップS166)。
次に、暗号化部13は、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS167)。
次に、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次元以下の多項式rをランダムに選ぶ(ステップS168)。
次に、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS169)。
次に、暗号化部13は、生成した暗号文cを通信路30を介して復号装置20へ送信する(ステップS170)。
次に、復号化部24は、通信路30を介して暗号装置10から暗号文cを受信すると、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS171)。
次に、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する(ステップS172)。
次に、復号化部24は、生成した復号文m’を外部へ出力して処理を終了する(ステップS173)。
<暗号通信システム1の動作検証>
まず、暗号装置10及び復号装置20は、ステップS161において、p=3かつq=2^k(k:2以上の整数)となるパラメータを記憶している。
そして、復号装置20が、予め、このパラメータを用いて、ステップS162及びステップS163において、係数が0もしくは1の2値である、多項式f及びgを生成し、ステップS164において、これらの多項式を基に公開鍵である多項式hを生成している。
そして、暗号装置10では、ステップS168にて、係数が0もしくは1の2値である多項式rを生成し、ステップS169にて、p=3かつq=2^k(k:2以上の整数)となるパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値である平文mを暗号化して暗号文cを生成している。
そして、復号装置20では、ステップS172において、秘密鍵である多項式f及びFpと記憶しているp=3かつq=2^k(k:2以上の整数)となるパラメータを用いて、復号文m’を生成している。
かかる構成によれば、p=3かつq=2^kとなるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mとして、2値の多項式を用いているので、第1の変形NTRU暗号方式を用いて暗号化通信を行うことができる。
なお、上述の第1の変形NTRU暗号方式の説明で述べた通り、NTRUEncrypt方式よりも高速処理可能となる。
これにより、従来のNTRUEncrypt方式よりも高速処理可能な第1の変形NTRU暗号方式を新たに構成することができ、また、この第1の変形NTRU暗号方式を暗号通信に適用し、従来よりも高速処理可能な暗号通信システムを提供することができる。
<変形例>
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)暗号通信システム1では、第1の変形NTRU暗号方式のパラメータとして、p=3かつq=2^k(k:2以上の整数)という条件を満たすパラメータを用いているが、さらに、後述する条件式EFC1を満たすパラメータを用いてもよい。
これにより、後述する通り復号エラーが原理的に発生しなくなるため、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを実現することができる。
なお、このとき、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要であるため、以下のように復号化を行ってもよい。
まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q)
により多項式aが計算される。
そして、この多項式aに対し、NTRUEncryptと同様にして、復号エラー発生確率を低減させる処理が行なわれ、復号文m’が生成される。
(2)暗号通信システム1では、第1の変形NTRU暗号方式の秘密鍵の一部である多項式fとして、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式を選んでいるが、NTRUEncrypt方式と同様、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式Fを用いて、f=1+p・Fにより多項式fを選んでもよい。
これにより、NTRUEncrypt方式と同様、NTRU暗号の復号化処理で行う、多項式Fpとの多項式乗算が不要となる。また、この場合、秘密鍵の一部である多項式Fpとの多項式乗算が不要であるため、秘密鍵は(f,Fp)ではなく、多項式fとしてもよい。
(実施の形態2)
本実施の形態に係る暗号通信システム、暗号装置及び復号装置では、NTRUEncrypt方式を改良して、復号エラーが原理的に発生しないNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、復号エラーが原理的に発生しないNTRU暗号方式を、「第2の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に、第2の変形NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に、第2の変形NTRU暗号方式について説明する。
<第2の変形NTRU暗号方式>
変形NTRU暗号2は、従来のNTRUEncrypt方式を復号エラーが原理的に発生しないように改変したものである。
変形NTRU暗号2は、後述する条件式EFC1を満たすようにパラメータを生成する点が従来のNTRUEncryptと異なる。
以下、この変形NTRU暗号2について説明を行う。
(1)第2の変形NTRU暗号方式のパラメータ
変形NTRU暗号2は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、以下の条件式EFC1を満たすようにパラメータp、q、df、dg、dを選ぶ点が従来のNTRUEncrypt方式と異なる。
EFC1:p・Min(dg,d)+df<q
この条件式EFC1を満たすパラメータを用いれば、後述する通り、復号エラーが原理的に発生しないようにすることができる。
(2)第2の変形NTRU暗号方式の鍵生成
第2の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、秘密鍵を(f,Fp)、公開鍵をhとする。
(3)第2の変形NTRU暗号方式の暗号化
第2の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに多項式rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
(4)第2の変形NTRU暗号方式の復号化
第2の変形NTRU暗号方式では、後述する通り、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要である。
そのため、以下のように復号化を行う。
第2の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m’を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m’=Fp×b(mod p*)
により、復号文m’を計算する。
以上のように、第2の変形NTRU暗号方式では、従来のNTRUEncrypt方式と異なり、非特許文献4に記載のcenter1もしくはcenter2と呼ばれるアルゴリズムのような復号エラー発生確率を減少させる処理は行わない。
<復号エラーが原理的に発生しない理由>
以下、第2の変形NTRU暗号方式は復号エラーが原理的に発生しないことを説明する。
まず、復号エラーが発生しないための条件について述べた後、上述した条件式EFC1を満たすパラメータを用いる第2の変形NTRU暗号方式は、復号エラーが原理的に発生しないことを説明する。
(復号エラーが発生しないための条件)
第2の変形NTRU暗号方式は、従来のNTRUEncrypt方式を復号エラーが原理的に発生しないように改変したものである。
今、NTRUEncryptにおいて復号エラーが発生しないための条件は開示されていない。しかしながら、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーは発生しない。
以下に、その理由を説明する。
(i)NTRU暗号方式の場合
NTRUEncryptにおいて復号エラーが発生しないための条件を説明するため、まず非特許文献2に記載のNTRU暗号において復号エラーが発生しないための条件について述べる。
NTRU暗号に関しては、非特許文献2に、復号処理時において計算される多項式(p・r×g+f×m)の係数すべてが、−q/2からq/2の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーが発生しないことが記載されている。これは以下の理由による。
今、非特許文献2に記載のNTRU暗号の復号処理では、まず暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=c×f(mod q*)
により多項式aを演算する。ここで(mod q*)は、多項式c×fの第i次の係数を、剰余が〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である。すなわち、多項式cと多項式fの乗算結果の多項式を求め、その各係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるようにmod q演算を施した多項式を、多項式aとする演算である。
このとき、この多項式aの値は、非特許文献2に記載の通り、平文mと暗号文cの関係式及び秘密鍵の一部である多項式fと公開鍵hの関係式から、
a=c×f(mod q*)
=(p・r×h+m)×f(mod q*)
=p・r×g+f×m(mod q*)
となる。すなわち、多項式aは、多項式p・r×g+f×mの各係数を−q/2からq/2の範囲に収まるようにmod q演算を施した多項式となっている。
ここで、NTRU暗号では、乱数r、多項式f、g及び平文mは、係数が0、1もしくは−1となる多項式である。そのため、p・r×g+f×mは、その係数が負の値となる可能性がある多項式である。
今、この負の係数値を取り得る多項式p・r×g+f×mの全ての係数が−q/2からq/2の範囲に収まっていれば、多項式p・r×g+f×m(mod q*)の値は、多項式p・r×g+f×mの値と等しくなるため、多項式aの値は、
a=p・r×g+f×m(mod q*)
=p・r×g+f×m
となる。すると、非特許文献2に記載の通り、その後の復号処理において正しく平文mを復元することができるので、復号エラーは発生しない。
(ii)NTRUEncrypt方式の場合
一方、NTRUEncryptでは、復号エラーが発生しないための条件は開示されていないが、上述した通り、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーは発生しない。これは、以下の理由による。
今、復号アルゴリズムDでは、非特許文献4に記載の通り、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=c×f(mod q)
により多項式aを演算する。この演算は、多項式cと多項式fの乗算結果の多項式を求め、その各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式aとする演算である。
このとき、この多項式aの値は、非特許文献4に記載の通り、平文mと暗号文cの関係式及び秘密鍵の一部である多項式fと公開鍵hの関係式から、
a=c×f(mod q)
=p・r×g+f×m(mod q)
となる。すなわち、多項式aは、多項式p・r×g+f×mの各係数を0から(q−1)の範囲に収まるようにmod q演算を施した多項式となっている。
ここで、NTRUEncryptでは、乱数である多項式r、多項式f、g及び平文である多項式mは、係数が0もしくは1となる多項式である。そのため、p・r×g+f×mは、その係数が0もしくは正の値となる多項式である。
今、この多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、多項式p・r×g+f×m(mod q)の値は、多項式p・r×g+f×mの値と等しくなるため、多項式aの値は、
a=p・r×g+f×m(mod q)
=p・r×g+f×m
となる。すると、非特許文献2に記載のNTRU暗号と同様に、その後の復号処理において正しく平文mを復元することができるので、復号エラーは発生しない。
(条件式EFC1を満たすパラメータを用いれば復号エラーが発生しなくなる理由)
第2の変形NTRU暗号方式は、条件式EFC1を満たすようにパラメータを設定するよう、従来のNTRUEncrypt方式を改変し、復号エラーが原理的に発生しないようにしたものである。
以下、条件式EFC1を満たすようにパラメータを設定すれば、多項式p・r×g+f×mの全ての係数が、0から(q−1)の範囲に収まり、復号エラーは発生しなくなることを説明する。
まず、多項式p・r×gを考える。
ここで、多項式r×gのk次の係数は、多項式aのk次の係数をa(k)で表すと、
(r×g)(k)
=r(0)・g(k)+r(1)・g(k−1)+...
+r(N−1)・g(k−(N−1)(mod N))
である(多項式と多項式の乗算方法については、例えば、非特許文献2参照)。
上述した通り、乱数rは、d個の係数が1であり、かつ他の係数は0となる多項式であり、多項式gは、dg個の係数が1であり、かつ他の係数は0となる多項式である。
すると、多項式r×gの係数(r×g)(k)の値は、
r×g(k)
=r(0)・g(k)+r(1)・g(k−1)+...
+r(N−1)・g(k−(N−1)(mod N))
=1・g(i1)+1・g(i2)+...+1・g(id)
+0・g(j1)+0・g(j2)+...+0・g(j(N−d))
=1・g(i1)+1・g(i2)+...+1・g(id)
というように、d個の1・g(in)という項(1≦n≦d)で表される。
今、d≦dgの場合、g(in)が全て1である場合が考えられ(1≦n≦d≦dg)、このとき(r×g)(k)は最大値を取り、その値は高々dである。
なお、d>dgの場合、g(in)が全て1である場合はあり得ないため、g(in)のうちdg個が1であり、(d−dg)個が0である場合に(r×g)(k)は最大値を取り、その値は高々dgである。
以上により、多項式r×gの係数の最大値はMin(dg,d)である。
従って、多項式p・r×gの係数の最大値は、多項式r×gの係数の最大値にpを乗じたものとなるので、p・Min(dg,d)となる。
次に、多項式f×mを考える。
ここで、多項式f×mの第k次の係数を考えると、多項式fはdf個の係数が1であり、かつ他の係数は0となる多項式であるので、上述の議論と同様に、
f×m(k)
=f(0)・m(k)+f(1)・m(k−1)+...
+f(N−1)・m(k−(N−1)(mod N))
=1・m(i1)+1・m(i2)+...+1・m(idf)
というように、df個の1・m(in)という項(1≦n≦df)で表される。
今、平文である多項式mは係数が0もしくは1であるので、m(in)が全て1である場合が考えられ(1≦n≦df)、このとき(f×m)(k)は最大値を取り、その値は高々dfである。
以上により、多項式f×mの係数の最大値はdfである。
以上をまとめると、多項式p・r×g+f×mの係数の最大値は高々、
p・Min(dg,d)+df
である。
そして、係数の最大値がq−1以下であれば、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていることになるので、復号エラーは発生しない。
すなわち、復号エラーが原理的に発生しないためには、
p・Min(dg,d)+df<q
となるようにすればよく、下記条件式EFC1が導かれる。
EFC1:p・Min(dg,d)+df<q
<第2の変形NTRU暗号方式のパラメータ生成方法>
ここでは、上述した第2の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第2の変形NTRU暗号方式のパラメータは、上述した条件式EFC1を満たすパラメータを生成すればよい。
そのため、ここでは、まずp=2とし、pと互いに素となるよう、q=239とする。
そして、df=dg=dとして、上述した条件式EFC1を満たすように、df、dg、dの値を生成する。そして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、Nの値を生成する。
なお、これはパラメータの生成方法の一例であり、条件式EFC1を満たすようにパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,2,239,63,63,63)というパラメータを用いた場合の説明を行う。
以上、第2の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1bの概要>
図7は、本発明の実施の形態2における暗号通信システム1bの全体構成を示す図である。最初に、同図を用いて暗号通信システム1bの概要を説明する。
この暗号通信システム1bは、平文mの暗号化通信を行うシステムであり、暗号装置10bと、復号装置20bとから構成されており、暗号装置10bと復号装置20bとは通信路30を介して相互に接続されている。
そして、この暗号通信システム1bは、暗号装置10bと復号装置20bとの間で、第2の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,2,239,63,63,63)を共有している。
この暗号通信システム1bにおいて、暗号装置10bは、外部から入力された平文mを、上述した、第2の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20bに送信する。
そして、復号装置20bは、通信路30を介して暗号装置10bから受信した暗号文cを復号して復号文m’を生成して出力する。
以上が、暗号通信システム1bの概要であるが、以下、暗号通信システム1との差異点を中心に、その構成及び動作について説明する。
<暗号通信システム1bの構成>
暗号通信システム1bは、図7に示すように、暗号装置10bと、復号装置20bとから構成され、暗号装置10bと復号装置20bとは通信路30を介して相互に接続されている。
以下、これらの構成要素について暗号通信システム1との差異点を中心に説明する。
<暗号装置10bの構成>
暗号装置10bは、図8に示すように、パラメータ記憶部11bと、公開鍵記憶部12と、暗号化部13bとから構成される。
以下、これらの構成要素について、暗号装置10との差異点を中心に説明する。
(1)パラメータ記憶部11b
パラメータ記憶部11bは、例えばRAMやEEPROMのようなメモリで構成されており、後述する暗号化部13bからアクセス可能なものである。
パラメータ記憶部11bは、上述した条件式EFC1を満たすようなパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を予め記憶しているものとする。
(2)暗号化部13b
暗号化部13bは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11b及び公開鍵記憶部12にアクセス可能である。
暗号化部13bは、第1の変形NTRU暗号方式の暗号化処理を行う代わりに、第2の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する点が、暗号化部13と異なる。
<復号装置20bの構成>
復号装置20bは、図9に示すように、パラメータ記憶部21bと、鍵生成部22bと、秘密鍵記憶部23と、復号化部24bとから構成される。
以下、これらの構成要素について、復号装置20との差異点を中心に説明する。
(1)パラメータ記憶部21b
パラメータ記憶部21bは、例えばRAMやEEPROMのようなメモリで構成されており、後述する鍵生成部22b及び復号化部24bからアクセス可能なものである。
パラメータ記憶部21bは、暗号装置10bのパラメータ記憶部11bと同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を予め記憶しているものとする。
(2)鍵生成部22b
鍵生成部22bは、例えばマイクロコンピュータによって構成されており、エラーフリーNTRU暗号の秘密鍵f及び公開鍵hを生成する。
鍵生成部22bは、第1の変形NTRU暗号方式の鍵生成処理を行う代わりに、第2の変形NTRU暗号方式の鍵生成処理を行う点が、鍵生成部22と異なる。
(3)復号化部24b
復号化部24bは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21b及び秘密鍵記憶部23にアクセス可能である。
復号化部24bは、第1の変形NTRU暗号方式の復号化処理を行う代わりに、第2の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する点が、復号化部24と異なる。
<暗号通信システム1bの動作>
以上、暗号通信システム1bの構成について説明したが、ここでは、暗号通信システム1bの全体の動作について、図10に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11b及びパラメータ記憶部21bは、条件式EFC1を満たすパラメータを予め記憶している(ステップS261)。
次に、鍵生成部22bは、パラメータ記憶部21bからパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ(ステップS262)。
次に、鍵生成部22bは、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS263)。
次に、鍵生成部22bは、上述した第2の変形NTRU暗号方式の鍵生成処理を行い、多項式Fp及びhを生成する(ステップS264)。
次に、鍵生成部22bは、多項式hを公開鍵として公開し、暗号装置10bが取得できるようにし、多項式fとFpの対(f,Fp)を秘密鍵として秘密鍵記憶部23に記憶する(ステップS265)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20bの公開鍵hを取得して記憶する(ステップS266)。
次に、暗号化部13bは、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11bからパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS267)。
次に、暗号化部13bは、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS268)。
次に、暗号化部13bは、平文mに対し、乱数r、公開鍵h、パラメータN、パラメータqを用いて、第2の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS269)。
次に、暗号化部13bは、生成した暗号文cを通信路30を介して復号装置20bへ送信する(ステップS270)。
次に、復号化部24bは、通信路30を介して暗号装置10bから暗号文cを受信すると、パラメータ記憶部21bから、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS271)。
次に、復号化部24bは、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第2の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する(ステップS272)。
次に、復号化部24bは、生成した復号文m’を外部へ出力して処理を終了する(ステップS273)。
<暗号通信システム1bの動作検証>
まず、暗号装置10b及び復号装置20bは、ステップS261において、条件式EFC1を満たすようなパラメータを記憶している。
そして、復号装置20bが、予め、このパラメータを用いて、ステップS262及びステップS263において、係数が0もしくは1の2値である、多項式f及びgを生成し、ステップS264において、これらの多項式を基に公開鍵である多項式hを生成している。
そして、暗号装置10bでは、ステップS267にて、係数が0もしくは1の2値である多項式rを生成し、ステップS268にて、条件式EFC1を満たすようなパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値の多項式である平文mを暗号化して暗号文cを生成している。
そして、復号装置20bでは、ステップS271において、秘密鍵である多項式f及びFpと記憶している条件式EFC1を満たすようなパラメータを用いて、復号文m’を生成している。
かかる構成によれば、条件式EFC1を満たすパラメータを、暗号装置10bと復号装置20bとの間で共有し、このパラメータを用いて暗号化通信を行っているため、上述の条件式EFC1の説明で述べた通り、復号エラーは原理的に起こらず、復号文m’は必ず平文mと同一となる。
これにより、復号エラーが原理的に発生しない第2の変形NTRU暗号方式を構成することができ、また、第2の変形NTRU暗号方式を暗号通信システムに適用し、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを提供することができる。
<変形例>
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)暗号通信システム1bでは、第2の変形NTRU暗号方式のパラメータとしてp=2となるパラメータを用いているが、条件式EFC1を満たせば他のパラメータでもよく、たとえば、p=3となるパラメータを用いてもよい。また、上述の実施の形態では、条件式EFC1を満たすパラメータとしてパラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を用いて説明を行なったが、NTRUEncrypt方式で採用されているパラメータ(N,p,q,df,dg,d)=(251,2,239,72,72,72)であっても、条件式EFC1を満たすため、このパラメータを用いてもよい。
(2)暗号通信システム1bでは、第2の変形NTRU暗号方式の秘密鍵の一部である多項式fとして、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式を選んでいるが、NTRUEncrypt方式と同様、df個の係数が1で、かつその他の係数は0である、(N−1)次元以下の多項式Fを用いて、f=1+p・Fにより秘密鍵fを選び、後述する条件式EFC2を満たすようなパラメータを生成するようにしてもよい。この場合は、秘密鍵を(f,Fp)ではなく、多項式fとしてもよい。
これにより、NTRUEncrypt方式と同様、NTRU暗号の復号化処理で行う、多項式Fpとの多項式乗算が不要となる。なお、後述する通り条件式EFC2を満たすようなパラメータが生成されるので、復号エラーが原理的に発生せず、実施の形態2と同様に、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを実現することができる。
(実施の形態3)
本実施の形態3に係る暗号通信システム、暗号装置及び復号装置では、NTRUEncrypt方式を改良して、復号エラーが原理的に発生せず、かつ高速処理可能なNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、復号エラーが原理的に発生しないNTRU暗号方式を、「第3の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に、第3の変形NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に、第3の変形NTRU暗号方式について説明する。
<第3の変形NTRU暗号方式>
第3の変形NTRU暗号方式は、従来のNTRUEncrypt方式を復号エラーが原理的に発生せず、かつ高速処理可能なように改変したものである。
第3の変形NTRU暗号方式は、パラメータとしてp=3、q=2^k(k:2以上の整数)となるパラメータを用いつつ、多項式f、g、乱数である多項式r及び平文である多項式mとして、係数が0もしくは1の2値である多項式を選ぶ点、及び後述する条件式EFC2を満たすようにパラメータを生成する点が従来のNTRUEncryptと異なる。
以下、この第3の変形NTRU暗号方式について説明を行う。
(1)第3の変形NTRU暗号方式のパラメータ
第3の変形NTRU暗号方式は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、p=3かつq=2^k(k:2以上の整数)となるパラメータを生成し、p=3としているにも拘わらず、多項式f、g、乱数である多項式rとして係数が0もしくは1の2値である多項式を用いる点、及び以下の条件式EFC2を満たすようにパラメータp、q、df、dg、dを選ぶ点が従来のNTRUEncrypt方式と異なる。
EFC2:Min(dg,d)+df<(q−1)/p
このように、p=3というパラメータを用いるにも拘わらず、多項式f、g、乱数である多項式rとして係数が0もしくは1の2値である多項式を用いることで、従来のNTRUEncryptよりも高速処理可能となるようにできる。
また、この条件式EFC2を満たすパラメータを用いれば、後述する通り、復号エラーが原理的に発生しないようにすることができる。
(2)第3の変形NTRU暗号方式の鍵生成
第3の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。ここで、多項式fは、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式Fを用いて、f=1+p・Fにより多項式fを選ぶ。
そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、秘密鍵を多項式f、公開鍵をhとする。
(3)第3の変形NTRU暗号方式の暗号化
第3の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに多項式rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
(4)第3の変形NTRU暗号方式の復号化
第3の変形NTRU暗号方式では、後述する通り、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要である。
そのため、以下のように復号化を行う。
第3の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m’を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、非特許文献4に記載の通り、秘密鍵である多項式fがf=1+p・Fという形であるために、Fp×f=1(mod p)となる多項式FpはFp=1(mod p)となるので、復号化処理で行う、多項式Fpとの多項式乗算が不要となるので、
m’=a(mod p*)
により、復号文m’を生成する。
以上のように、第3の変形NTRU暗号方式では、従来のNTRUEncrypt方式と異なり、非特許文献4に記載のcenter1もしくはcenter2と呼ばれるアルゴリズムのような復号エラー発生確率を減少させる処理は行わない。
<復号エラーが原理的に発生しない理由>
以下、上述した条件式EFC2を満たすパラメータを用いる第3の変形NTRU暗号方式は、復号エラーが原理的に発生しないことを説明する。
(条件式EFC2を満たすパラメータを用いれば復号エラーが発生しなくなる理由)
第3の変形NTRU暗号方式は、条件式EFC2を満たすようにパラメータを設定するよう、従来のNTRUEncrypt方式を改変し、復号エラーが原理的に発生しないようにしたものである。
以下、条件式EFC2を満たすようにパラメータを設定すれば、多項式p・r×g+f×mの全ての係数が、0から(q−1)の範囲に収まり、復号エラーは発生しなくなることを説明する。
まず、多項式p・r×gを考えると、上述した通り、多項式p・r×gの係数の最大値は、p・Min(dg,d)となる。
次に、多項式f×mを考える。
今、秘密鍵である多項式fはf=1+p・Fなので、
f×m
=(1+p・F)×m
=m+p・F×m
である。
ここで、多項式F×mの第k次の係数を考えると、多項式Fはdf個の係数が1であり、かつ他の係数は0となる多項式であるので、上述の議論と同様に、
F×m(k)
=F(0)・m(k)+F(1)・m(k−1)+...
+F(N−1)・m(k−(N−1)(mod N))
=1・m(i1)+1・m(i2)+...+1・m(idf)
というように、df個の1・m(in)という項(1≦n≦df)で表される。
今、平文である多項式mは係数が0もしくは1であるので、m(in)が全て1である場合が考えられ(1≦n≦df)、このとき(F×m)(k)は最大値を取り、その値は高々dfである。
以上により、多項式F×mの係数の最大値はdfである。
従って、平文である多項式mの係数の最大値は1であり、p・F×mの係数の最大値は、p・dfとなるので、多項式f×m(=m+p・F×m)の係数の最大値は、1+p・dfとなる。
以上をまとめると、多項式p・r×g+f×mの係数の最大値は高々、
p・Min(dg,d)+1+p・df
である。
そして、係数の最大値がq−1以下であれば、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていることになるので、復号エラーは発生しない。
すなわち、復号エラーが原理的に発生しないためには、
p・Min(dg,d)+1+p・df<q
となるようにすればよく、この式を変形すると、下記条件式EFC2が導かれる。
EFC2:Min(dg,d)+df<(q−1)/p
<第3の変形NTRU暗号方式のパラメータ生成方法>
ここでは、上述した第3の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第3の変形NTRU暗号方式のパラメータは、p=3かつq=2^k(k:2以上の整数)とし、上述した条件式EFC2を満たすパラメータを生成すればよい。
そのため、ここでは、まずp=3とし、pと互いに素となりかつ係数のmod q演算が、ビットマスク演算にて下位8ビットのみをとる演算で実現可能となるよう、q=256とする。
そして、df=dg=dとして、上述した条件式EFC2を満たすように、df、dg、dの値を生成する。そして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、Nの値を生成する。
なお、これはパラメータの生成方法の一例であり、条件式EFC2を満たすようにパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,3,256,42,42,42)というパラメータを用いた場合の説明を行う。
以上、第3の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1cの概要>
図11は、本発明の実施の形態3における暗号通信システム1cの全体構成を示す図である。最初に、同図を用いて暗号通信システム1cの概要を説明する。
この暗号通信システム1cは、平文mの暗号化通信を行うシステムであり、暗号装置10cと、復号装置20cとから構成されており、暗号装置10cと復号装置20cとは通信路30を介して相互に接続されている。
そして、この暗号通信システム1cは、暗号装置10cと復号装置20cとの間で、第3の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,42,42,42)を共有している。
この暗号通信システム1cにおいて、暗号装置10cは、外部から入力された平文mを、上述した、第3の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20cに送信する。
そして、復号装置20cは、通信路30を介して暗号装置10cから受信した暗号文cを復号して復号文m’を生成して出力する。
以上が、暗号通信システム1cの概要であるが、以下、暗号通信システム1との差異点を中心に、その構成及び動作について説明する。
<暗号通信システム1cの構成>
暗号通信システム1cは、図11に示すように、暗号装置10cと、復号装置20cとから構成され、暗号装置10cと復号装置20cとは通信路30を介して相互に接続されている。
以下、これらの構成要素について暗号通信システム1との差異点を中心に説明する。
<暗号装置10cの構成>
暗号装置10cは、図12に示すように、パラメータ記憶部11cと、公開鍵記憶部12と、暗号化部13cとから構成される。
以下、これらの構成要素について、暗号装置10との差異点を中心に説明する。
(1)パラメータ記憶部11c
パラメータ記憶部11cは、例えばRAMやEEPROMのようなメモリで構成されており、後述する暗号化部13cからアクセス可能なものである。
パラメータ記憶部11cは、上述したように、p=3かつq=2^k(k:2以上の整数)とし、条件式EFC2を満たすようなパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,42,42,42)を予め記憶しているものとする。
(2)暗号化部13c
暗号化部13cは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11c及び公開鍵記憶部12にアクセス可能である。
暗号化部13cは、第1の変形NTRU暗号方式の暗号化処理を行う代わりに、第3の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する点が、暗号化部13と異なる。
<復号装置20cの構成>
復号装置20cは、図13に示すように、パラメータ記憶部21cと、鍵生成部22cと、秘密鍵記憶部23と、復号化部24cとから構成される。
以下、これらの構成要素について、復号装置20との差異点を中心に説明する。
(1)パラメータ記憶部21c
パラメータ記憶部21cは、例えばRAMやEEPROMのようなメモリで構成されており、後述する鍵生成部22c及び復号化部24cからアクセス可能なものである。
パラメータ記憶部21cは、暗号化部10cのパラメータ記憶部11cと同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,42,42,42)を予め記憶しているものとする。
(2)鍵生成部22c
鍵生成部22cは、例えばマイクロコンピュータによって構成されており、第3の変形NTRU暗号方式の秘密鍵である多項式f及び公開鍵である多項式hを生成する。
鍵生成部22cは、第1の変形NTRU暗号方式の鍵生成処理を行う代わりに、第3の変形NTRU暗号方式の鍵生成処理を行う点が、鍵生成部22と異なる。
(3)復号化部24c
復号化部24cは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21c及び秘密鍵記憶部23にアクセス可能である。
復号化部24cは、第1の変形NTRU暗号方式の復号化処理を行う代わりに、第3の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する点が、復号化部24と異なる。
<暗号通信システム1cの動作>
以上、暗号通信システム1cの構成について説明したが、ここでは、暗号通信システム1cの全体の動作について、図14に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11c及びパラメータ記憶部21cは、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすパラメータを予め記憶している(ステップS361)。
次に、鍵生成部22cは、パラメータ記憶部21cからパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式Fを選び、f=1+p・Fにより秘密鍵fを生成する(ステップS362)。
次に、鍵生成部22cは、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS363)。
次に、鍵生成部22cは、上述した第3の変形NTRU暗号方式の鍵生成処理を行い、公開鍵である多項式hを生成する(ステップS364)。
次に、鍵生成部22cは、多項式hを公開鍵として公開し、暗号装置10cが取得できるようにし、多項式fを秘密鍵として秘密鍵記憶部23に記憶する(ステップS365)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20cの公開鍵hを取得して記憶する(ステップS366)。
次に、暗号化部13cは、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11cからパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS367)。
次に、暗号化部13cは、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS368)。
次に、暗号化部13cは、平文mに対し、乱数r、公開鍵h、パラメータN、パラメータqを用いて、第3の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS369)。
次に、暗号化部13cは、生成した暗号文cを通信路30を介して復号装置20cへ送信する(ステップS370)。
次に、復号化部24cは、通信路30を介して暗号装置10cから暗号文cを受信すると、パラメータ記憶部21cから、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵fを読み取る(ステップS371)。
次に、復号化部24cは、暗号文cに対し、秘密鍵f、パラメータN、パラメータp、パラメータqを用いて、第3の変形NTRU暗号方式の復号化処理を行い、復号文m’を生成する(ステップS372)。
次に、復号化部24cは、生成した復号文m’を外部へ出力して処理を終了する(ステップS373)。
<暗号通信システム1cの動作検証>
まず、暗号装置10c及び復号装置20cは、ステップS361において、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすようなパラメータを記憶している。
そして、復号装置20cが、予め、このパラメータを用いて、ステップS362及びステップS363において、係数が0もしくは1の2値である、秘密鍵f及び多項式gを生成し、ステップS364において、これらの多項式を基に公開鍵hを生成している。
そして、暗号装置10cでは、ステップS368にて、係数が0もしくは1の2値である多項式rを生成し、ステップS369にて、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすようなパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値である平文mを暗号化して暗号文cを生成している。
そして、復号装置20cでは、ステップS372において、秘密鍵fと記憶しているp=3かつq=2^k(k:2以上の整数)であり条件式EFC2を満たすようなパラメータを用いて、復号文m’を生成している。
かかる構成によれば、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすパラメータを、暗号装置10cと復号装置20cとの間で共有し、このパラメータを用いて暗号化通信を行っているため、上述した通り、従来のNTRUEncryptよりも高速処理可能となるようにできる。また、上述の条件式EFC2の説明で述べた通り、復号エラーは原理的に起こらず、復号文m’は必ず平文mと同一となる。
これにより、復号エラーが原理的に発生せず、かつ高速処理可能な第3の変形NTRU暗号方式を構成することができ、また、第3の変形NTRU暗号方式を暗号通信システムに適用し、暗号装置が送信したデータ内容が、常に復号装置で正しく得られ、従来よりも高速処理可能な暗号通信システムを提供することができる。
(その他の変形例)
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。上述した変形例に加え、以下のような場合も本発明に含まれる。
(1)暗号通信システム1、1b、1cにおいては、パラメータ生成方法の一例、及びこのパラメータ生成方法により生成したパラメータの具体例を示しているが、これは、パラメータ生成方法の説明で述べた通り、他の生成方法でもよく、また、条件を満たせば他のパラメータでもよく、これに限定されない。
(2)暗号通信システム1では、暗号装置10と復号装置20との間で、同一のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,42,42,42)を共有しているが、暗号装置10で、このパラメータのうち、暗号化処理に必要なもののみを保持するようにしてもよいし、復号装置20で、鍵生成処理及び復号化処理に必要なもののみを保持するようにしてもよい。
(3)暗号通信システム1では、復号装置20が鍵生成処理を行っていたが、さらに専用通信路を介して暗号装置10及び復号装置20と通信可能な鍵生成装置を備え、復号装置20が鍵生成処理を行うのに代えて、鍵生成装置が鍵生成処理を行い、暗号装置10が、鍵生成装置から専用通信路を介して、公開鍵hを取得して公開鍵記憶部12に予め記憶しておき、復号装置20が、鍵生成装置から専用通信路を介して、秘密鍵の一部または秘密鍵そのものである多項式fを取得して秘密鍵記憶部23に予め記憶しておいてもよい。なお、専用通信路に代えて通信路30を用いてもよい。
(4)実施の形態1から3では、多項式を用いて演算を表現しているが、特許文献1のようにこれを一般の環Rの元として表現してもよい。具体的には、多項式を環Rの元とし、p、qを環Rのイデアルとしてもよい。さらに実施の形態1から3のp、qをイデアルp=pg・R、q=qg・Rとしてもよい。具体的には、実施の形態1から3において、p=3、q=2^kである場合に、p=3・R、q=(2^k)・Rであってもよい。このとき、2は環Rにおける2であり、環Rにおける加法群の零元0に乗法群の単位元1を2回足したものである。同様に3は零元0に単位元1を3回足したものである。さらに、2^kは乗法群の単位元1に2をk回掛けたものである。
また、dg、dを元g、rをN次元配列で表現したときの要素が1である個数、dfをfまたはFをN次元配列で表現したときの要素が1である個数とし、復号エラーが発生しない条件式をpg×Min(dg,d)+1+pg×df<qgとしてもよい。
(5)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、半導体メモリ、ハードディスクドライブ、CD−ROM、DVD−ROM、DVD−RAM等に記録したものとしてもよい。
(6)上記実施の形態及び変形例をそれぞれ組み合わせるとしてもよい。
(7)また、ブロック図(図2や図4など)の各機能ブロックは典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。
なお、LSIは集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。別技術としてバイオ技術等が可能性としてありえる。
本発明にかかる暗号通信システム、暗号装置及び復号装置は、従来よりも高速処理可能であるという効果、あるいは、復号エラーを原理的に発生させないようにできるという効果を有し、鍵配送やコンテンツ配信等の暗号通信システム等として有用である。
本発明は、情報セキュリティ技術としての暗号技術に関し、特に、復号エラーが発生しない暗号に関するものである。
従来、送信装置と受信装置との間で秘匿通信を実現する方法として、公開鍵暗号を用いた暗号化通信が提案されている。従来の暗号化通信について簡単に説明すると、送信装置が、通信内容を受信装置の公開鍵を用いて暗号化して送信し、受信装置は、暗号化された通信内容を受信し、それを自身の秘密鍵を用いて復号して元の通信内容を得る方法である(例えば、非特許文献1参照)。ここで、公開鍵の値から秘密鍵の値を計算するのは困難である。この方法を用いる一般的な暗号通信システムでは、送信装置及び受信装置は、ともに複数存在する。まず、送信装置は、通信先受信装置の公開鍵を取得する。この公開鍵は、通信先受信装置が有する秘密鍵と対になるものであり当該システムにおいて公開されている。そして、送信装置は、通信すべきデータ内容を上記のように取得した公開鍵で暗号化して送信する。一方、受信装置は、上記のように暗号化された通信内容データを受信する。そして、受信装置は、暗号化された通信内容データを、自身の有する秘密鍵で復号して元の通信内容データを得る。
1996年、高速処理が可能な公開鍵暗号として、NTRU(エヌティーアールユー・クリプトシステムズ・インコーポレーテッドの商標)暗号が提案された(例えば、非特許文献2参照)。このNTRU暗号は、ある法の下でべき乗剰余演算を行うRSA(Rivest Shamir Adleman)暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号に比べ、高速に演算可能な多項式演算により暗号化と復号化とを行う。このため、従来の公開鍵暗号よりも高速に処理することが可能で、ソフトウェア処理でも実用的な時間で暗号化及び復号化の処理が可能ある。
従って、公開鍵暗号にNTRU暗号を用いた暗号通信システムでは、従来の公開鍵暗号を用いた暗号通信システムよりも、送信装置及び受信装置の処理が高速に行えるという利点がある。
このNTRU暗号方式については、非特許文献2に詳しく述べられているので、ここでは詳細な説明を省略するが、以下に簡単に説明する。
<NTRU暗号方式>
(1)NTRU暗号のパラメータ
NTRU暗号は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。以下に、これらのパラメータの意味を説明する。
(i)パラメータN
NTRU暗号は、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。NTRU暗号で扱う多項式の次元は、上記パラメータNにより決まる。
NTRU暗号で扱う多項式は、上記パラメータNに対し、(N−1)次以下の整数係数多項式であり、例えばN=5のとき、X^4+X^3+1等の多項式である。ここで、「X^a」はXのa乗を意味することとする。また、暗号化時あるいは復号化時に用いられる公開鍵h、秘密鍵f、平文m、乱数r、暗号文cはいずれも、(N−1)次以下の多項式として表現される。
そして、多項式演算は、上記パラメータNに対し、「X^N=1」という関係式を用いて、演算結果が常に(N−1)次以下の多項式になるように演算される。例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を「×」、整数と多項式の積(あるいは整数と整数の積)を「・」とすると、「X^5=1」という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2×1+2・1+2・X^3+X
=2・X^3+X^2+X+2
というように、常に(N−1)次元以下の多項式になるように計算される。
(ii)パラメータp、q
NTRU暗号では、2以上の整数であるパラメータp、qが用いられる。NTRU暗号で出現する多項式の係数は、p、qを法とした剰余を取る。非特許文献2に記載の通り、このパラメータp、qは互いに素となる必要がある。
(iii)パラメータdf、dg、d
NTRU暗号で扱う秘密鍵の一部である多項式f、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式g、及び平文を暗号化するときに用いる乱数である多項式rの選び方は、それぞれパラメータdf、dg、及びdにより決まる。
まず、多項式fは、df個の係数が1であり、かつ(df−1)個の係数が−1であり、かつ他の係数は0となるように選ばれる。すなわち、多項式fは(N−1)次以下の多項式であり、0次(定数項)から(N−1)次までのN個の係数を有する。このN個の係数のうち、df個の係数が1であり、かつ(df−1)個の係数が−1であり、かつ(N−2df+1)個の係数が0となるように多項式fが選ばれる。
そして、多項式gは、dg個の係数が1であり、かつdg個の係数が−1であり、かつ他の係数が0となるように選ばれる。また、乱数である多項式rは、d個の係数が1であり、かつd個の係数が−1であり、かつ他の係数が0となるように選ばれる。
非特許文献2には、NTRU暗号のパラメータの例として、(N,p,q,df,dg,d)=(107,3,64,15,12,5)、(N,p,q,df,dg,d)=(167,3,128,61,20,18)、(N,p,q,df,dg,d)=(503,3,256,216,72,55)の3つの例が挙げられている。
(2)NTRU暗号の鍵生成
NTRU暗号では、上述したように、パラメータdfおよびdgを用いてランダムに多項式fおよび多項式gがそれぞれ生成される。そして非特許文献2に記載の通り、Fq×f=1(mod q)なる関係を有する多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hが生成される。ここで、a(mod b)はaをbで除したときの剰余を示す。
また、NTRU暗号では、秘密鍵を(f,Fp)、公開鍵をhとする。
ここで、「x=y(mod q)」は、多項式yの第i次の係数を剰余が0からq−1の範囲に収まるようにするために、法qで割ったときの剰余を多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、yの各係数を、0から(q−1)の範囲に収まるようにmod q演算(qで除したときの剰余を求める演算、法qでの剰余演算)を施した多項式を、多項式xとする演算である。
(3)NTRU暗号の暗号化
NTRU暗号の暗号化では、平文である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式である乱数rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、0次(定数項)から(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数が0となるように、ランダムに多項式(乱数)rを選ぶ。
そして、この乱数rと公開鍵hとを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(p・r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
(4)NTRU暗号の復号化
NTRU暗号の復号化では、暗号文である多項式cを復号化し、復号文である多項式m'を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
ここで、(mod q*)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。すなわち、係数が〈q/2〉からq−1までの間の値である場合は、係数からqを減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m'=Fp×b(mod p*)
により、復号文m'を計算する。
なお、この(mod p*)という演算は、上述した通り、多項式(Fp×b)の第i次の係数を、〈−p/2〉+1から〈p/2〉の範囲に収まるように法pで割ったときの剰余を、多項式m'の第i次の係数とする演算である。
なお、このNTRU暗号に関して、上述のパラメータは全てp=3となるパラメータであるが、このパラメータの他にp=2となるパラメータも開示されている(例えば、非特許文献3参照)。なお、非特許文献2に記載の通り、p=3の場合は、平文mは係数が0、1もしくは−1の3値である多項式であるが、p=2の場合は、平文mは係数が0もしくは1の2値である多項式である。そして、秘密鍵である多項式f、多項式g、乱数rは、p=2かp=3かに関わらず係数が0、1もしくは−1の3値である多項式である。
また、このNTRU暗号に関して、鍵生成処理において、
h=p・Fq×g(mod q)
を満たすように、公開鍵hを生成し、暗号化処理を
c=r×h+m(mod q)
により行う方法も開示されている(例えば、非特許文献5参照)。
しかしながら、上述したNTRU暗号は、公開鍵を用いて平文を暗号化して暗号文を生成し、正規の秘密鍵を用いて暗号文を復号して復号文を生成しても、復号文が元の平文と異なる場合が発生する(例えば、非特許文献2参照)。このことを復号エラー(decryption failure)が発生するという。非特許文献2に記載のNTRU暗号は、上述したパラメータの取り方により復号エラーの発生確率が変わるが、当該文献に開示されているパラメータではいずれも、10^(−5)程度の確率で復号エラーが発生することが知られている(例えば、非特許文献3参照)。
これに対し、近年、パラメータを後述するパラメータに限定し、復号化時に復号エラー発生確率を低減させる計算を追加することにより、復号エラー確率を2^(−100)以下にする新しいNTRU暗号方式であるNTRUEncryptと呼ばれる方式が提案されている(例えば、非特許文献4参照)。
このNTRUEncrypt方式については、非特許文献4に詳しく述べられているので、ここでは詳細な説明を省略するが、以下に簡単に説明する。
<NTRUEncrypt方式>
(1)NTRUEncryptのパラメータ
NTRUEncryptでは、非負整数のパラメータ、N、p、q、df、dg、dを持つ。非特許文献4には、NTRUEncryptのパラメータとして(N,p,q,df,dg,d)=(251,2,239,72,72,72)というパラメータのみが開示されている。NTRUEncryptでは、これらのパラメータのうち、パラメータdf、dg、dの意味がNTRU暗号と異なる。
以下に、上述のNTRU暗号との差異点を中心に、これらのパラメータの意味を説明する。
(i)パラメータN
NTRUEncryptは、NTRU暗号と同様、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。NTRU暗号と同様、NTRUEncryptで扱う多項式は、上記パラメータNに対し、(N−1)次以下の整数係数多項式であり、多項式演算は、X^N=1という関係式を用いて、演算結果が常に(N−1)次以下の多項式になるように演算される。
(ii)パラメータp、q
NTRUEncryptでは、上述の通りp=2、かつq=239となるパラメータp、qを用いる。このパラメータp、qは互いに素となっている。
(iii)パラメータdf、dg、d
NTRUEncryptで扱う秘密鍵の一部である多項式f、公開鍵である多項式hを生成するときに多項式fと共に用いる多項式g、及び平文を暗号化するときに用いる乱数である多項式rの選び方は、それぞれパラメータdf、dg、dにより決まる。
まず、df個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式fが選ばれる。
そして、dg個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式が選ばれる。また、乱数rとして、同様に、d個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式が選ばれる。
すなわち、NTRU暗号では、多項式f、g、rとして、係数が0、1もしくは−1である多項式を選んでいたのに対し、NTRUEncryptでは、多項式f、g、rとして、係数が0もしくは1である多項式を選ぶ点がNTRU暗号と異なる。
(2)NTRUEncryptの鍵生成
NTRUEncryptでは、上述したように、パラメータdf、dgを用いてランダムに多項式f、gを生成する。そして非特許文献4に記載の通り、Fq×f=1(mod
q)となる多項式Fqを用いて、
h=p・Fq×g(mod q)
により、多項式hを生成する。また、NTRUEncryptでは、秘密鍵を(f,Fp)、公開鍵を多項式hとする。
(3)NTRUEncryptの暗号化
NTRUEncryptでは、まず、上述したような乱数rをランダムに生成する。すなわち、パラメータdを用いてd個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式をランダムに選び、乱数rとする。
そして、この乱数rと公開鍵hを用いて、係数が0もしくは1である(N−1)次以下の平文mに対し、
c=r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
なお、NTRU暗号の説明で述べた通り、鍵生成処理において、
h=Fq×g(mod q)
を満たすように、公開鍵hを生成し、暗号化処理を、
c=p・r×h+m(mod q)
により行っても、暗号文cの値は同一となるため、本質的な違いはない。
(4)NTRUEncryptの復号化
復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q**)
により多項式aを計算する。
ここで、(mod q**)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を適切な幅qの区間に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。具体的な演算方法は、非特許文献4に、center1もしくはcenter2と呼ばれるアルゴリズムで規定されている。
以下に、center2のアルゴリズムを示す。
(center2アルゴリズム)
Step1:A=f×c(mod q)とし、I1=(A(1)−p×d×dg)/(df^(−1) mod q) mod qを計算する。ここで、A(1)は多項式Aの変数xに1を代入したときの値を示す。
Step2:I1が〈(N―q)/2〉+1から〈(N+q)/2〉の範囲に入るようI1にqの倍数を足して調整したときの値をI2とする(当然、I2=I1 mod qを満たす)。
Step3:J=df×I2+p×d×dgを計算する。
Step4:Aの各係数が〈J/N―q/2〉+1から〈J/N+q/2〉の範囲に入るように、各係数にqの倍数を足して調整した後の多項式をa(=f×c(mod q**))とする。
この演算は、復号エラー発生確率を減少させるために行う処理である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m'=Fp×b(mod p)
により、復号文m'を生成する。
なお、このNTRUEncryptに関して、df個の係数が1であり、かつ他の係数は0となるような(N−1)次以下の多項式Fを選び、f=1+p・Fという式により多項式fを構成する方式も開示されている(例えば、非特許文献4参照)。この方式は、非特許文献4に記載の通り、多項式fがf=1+p・Fという形であるために、Fp×f=1(mod p)となる多項式FpはFp=1(mod p)となるので、復号化処理で行う多項式Fpとの多項式乗算が不要となり、
m'=a(mod p)
により、復号文m'を生成できる。
このNTRUEncryptは、復号化時に復号エラー発生確率を減少させる処理を行うことにより、NTRU暗号よりも復号エラーが発生しにくくした方式ではあるが、その復号エラー発生確率は2^(−100)以下ということしか示されておらず、復号エラー発生確率が0、すなわち、復号エラーを全く発生させない方法については知られていない。
なお、NTRU暗号及びNTRUEncrypt共に多項式を用いて演算を表現しているが、特許文献1ではこれを一般の環Rの元として表現している。具体的には、上記の多項式を環Rの元とし、p、qを環Rのイデアルとしている。
しかしながら、上述したNTRUEncrypt方式では、qが2以外の素数であるため、暗号化処理及び復号化処理で行う多項式係数の法qでの剰余演算がNTRU暗号方式に比べて容易にできない。このため、NTRU暗号方式と比べて暗号化処理及び復号化処理の処理速度が遅くなる、という課題がある。
また、上述したNTRUEncrypt方式では、復号エラー発生確率は0ではないため、送信装置と受信装置の間で暗号化通信を行う暗号通信システムに適用した場合、送信装置が送信したデータ内容が、受信装置で正しく得られない場合がある、という課題がある。
本発明は、前記従来の課題を解決するもので、NTRUEncrypt方式より高速なNTRU暗号方式を新たに構成し、新たに構成したNTRU暗号方式を暗号システムに適用することで、さらに高速な暗号システムを提供することを第1の目的とする。
また、復号エラーが原理的に発生しないNTRU暗号方式を新たに構成し、新たに構成したNTRU暗号方式を暗号システムに適用することで、送信装置が送信したデータ内容が、常に受信装置で正しく得られるような暗号システムを提供することを第2の目的とする。
上記目的を達成するために、本発明に係る暗号システムは、所定の暗号方式に従い平文を暗号化して暗号文を生成する暗号装置と、前記所定の暗号方式に従い前記復号文を復号化して復号文を生成する復号装置とを備える暗号システムであって、前記復号装置は、加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと(ここでa(mod b)は、aをbで割った余りを示す。)、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成部と、前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化部とを備え、前記暗号装置は、前記公開鍵及び前記環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化部を備え、前記元f、前記元g、前記元r、前記平文であるN次元配列のすべての要素は0もしくは1であり、前記イデアルpと前記イデアルqとは互いに素であり、前記イデアルqはq=(2^k)*Rである(ただし、2^kは1に2をk回掛けた結果であり、*は環Rの乗算を表す)ことを特徴とする。
qを上述のように、定義している。このため、qが整数の場合には、qは2のべき乗となり、法qでの剰余演算(mod q演算)をビットマスク演算により行なうことができる。よって、暗号システムは、高速に処理を行なうことができる。
また、前記鍵生成部は、前記元fは、N次元配列の値が1となる要素の数を規定する非負整数dfに基づき生成され、前記元gは、N次元配列の値が1となる要素の数を規定する非負整数dgに基づき生成され、前記元rは、N次元配列の値が1となる要素の数を規定する非負整数dに基づき選択され、前記イデアルpは、前記環Rの元pgに対しp=pg*Rであり、前記イデアルqは、前記環の元qgに対しq=qg*Rであり、前記次元N、前記元pg、前記元qg、前記非負整数df、前記非負整数dg、前記非負整数dは、復号エラー発生有無を判定するエラー条件情報に基づいていてもよい。さらに、前記エラー条件情報は、復号エラーが発生しないための条件を表す条件式であってもよい。具体的には、前記条件式は、Min(dg,d)+df<(qg−1)/p(ただし、Min(a,b)はaとbの小さい方の数を表す)である。
上述の条件式を満たすようにパラメータを設定すると、実施の形態において後述するように、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まることになり、復号エラーは発生が発生しない。
なお、本発明は、このような特徴的な手段を備える暗号システムとして実現することができるだけでなく、暗号システムに含まれる特徴的な手段をステップとする暗号方法として実現したり、暗号システムを構成する暗号装置および復号装置に含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
本発明によると、従来最速のNTRUEncrypt方式よりも高速処理可能なNTRU暗号方式を新たに構成し、また、このNTRU暗号方式を暗号通信に適用することで、従来よりも高速処理可能な暗号システムを構成することできる。
また、復号エラーが原理的に発生しないNTRU暗号方式を構成し、また、このNTRU暗号方式を暗号システムに適用することで、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号システムを構成することできる。
さらに、復号エラーが原理的に発生せず、かつ高速処理可能なNTRU暗号方式を構成し、また、このNTRU暗号方式を暗号システムに適用することで、暗号装置が送信したデータ内容が、常に復号装置で正しく得られ、従来よりも高速処理可能な暗号システムを構成することできるようになった。
以上により、従来達成できなかった暗号システム、暗号装置及び復号装置を提供することができ、その実用的価値は大きい。
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本実施の形態1に係る暗号通信システム、暗号装置及び復号装置では、従来において最速であるNTRUEncrypt方式よりも高速処理可能なNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、従来よりも高速処理可能なNTRU暗号方式を「第1の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に高速NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に第1の変形NTRU暗号方式について説明する。
<第1の変形NTRU暗号方式>
第1の変形NTRU暗号方式は、従来のNTRUEncryptよりも高速処理可能となるように改変したものである。
第1の変形NTRU暗号方式は、パラメータとしてp=3、q=2^k(k:2以上の整数)となるパラメータを用いつつ、多項式f、g、乱数である多項式r及び平文である多項式mとして、係数が0もしくは1の2値である多項式を選ぶ点が従来のNTRUEncryptと異なる。なお、パラメータpは、パラメータqと互いに素になるような値であればよく、3以外の値であってもよい。
以下、この第1の変形NTRU暗号方式について説明を行う。
(1)第1の変形NTRU暗号方式のパラメータ
第1の変形NTRU暗号方式は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。
これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、p=3かつq=2^k(k:2以上の整数)となるパラメータを生成し、p=3としているにも拘わらず、多項式f、g、rとして係数が0もしくは1の2値である多項式を用いる点が、従来のNTRUEncryptと異なる。
(2)第1の変形NTRU暗号方式の鍵生成
第1の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。具体的には、df個の係数が1であり、それ以外の係数が0である多項式fを生成し、dg個の係数が1であり、それ以外の係数が0である多項式gを生成する。そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。秘密鍵を(f,Fp)、公開鍵をhとする。
ここで、x=y(mod q)は、多項式yの第i次の係数を、剰余が0からq−1の範囲に収まるように法qで割ったときの剰余を、多項式xの第i次の係数とする演算である(0≦i≦N−1)。すなわち、yの各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式xとする演算である。
(3)第1の変形NTRU暗号方式の暗号化
第1の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような乱数である多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに乱数rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
この演算は、上述した通り、多項式(p・r×h+m)の各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式cとする演算である。
第1の変形NTRU暗号方式は、p=3としているにも拘わらず、係数が0もしくは1の2値である多項式を用いる点が、従来のNTRUEncryptと異なる。
(4)第1の変形NTRU暗号方式の復号化
第1の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m'を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
ここで、(mod q*)は、上述の(mod q)演算と異なり、多項式(f×c)の第i次の係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である(0≦i≦N−1)。すなわち、係数が〈q/2〉からq−1である場合は、係数からqを減算して、上記範囲に収まるよう調整する。ここで、〈x〉は、x以下の数の中で最も大きい数を示す。例えば、〈−1/2〉=−1である。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m'=Fp×b(mod p*)
により、復号文m'を計算する。
なお、この(mod p*)という演算は、上述した通り、多項式(Fp×b)の第i次の係数を、〈−p/2〉+1から〈p/2〉の範囲に収まるように法pで割ったときの剰余を、多項式m'の第i次の係数とする演算である。
<従来技術と第1の変形NTRU暗号方式との差異点>
以下、第1の変形NTRU暗号方式が、従来のNTRUEncrypt方式よりも高速処理が可能であることを説明し、従来のNTRU暗号及びNTRUEncrypt方式との差異について説明する。
(NTRUEncryptとの比較)
NTRUEncryptでは、上述した通り、秘密鍵である多項式f、多項式g、乱数である多項式r、平文である多項式mとして、係数が0もしくは1である2値の多項式を用いるが、パラメータとしては、p=2かつq=239となるパラメータしか開示されていない。
今、NTRUEncryptの鍵生成、暗号化及び復号化における主な演算には、例えば、
c=r×h+m(mod q)
というように、多項式の係数のmod q演算を行う演算が含まれる。
この際、NTRUEncryptではq=239なのに対し、第1の変形NTRU暗号方式では、q=2^k(k:2以上の整数)であるために、第1の変形NTRU暗号方式では、mod q演算を、ビットマスク演算で高速に処理することができる。
例えば、第1の変形NTRU暗号方式のパラメータqがq=256(=2^8)の場合には、係数のmod q演算は、ビットマスク演算にて下位8ビットのみをとる演算で実現できる。
NTRUEncryptでは、p=2であるが、第1の変形NTRU暗号方式はp=3であり、mod pの計算については、NTRUEncryptの方が高速に行える。しかし、mod pの計算は復号化時のみに行うことと、NTRUEncryptには復号エラー発生確率低減のための計算が必要であるが、第1の変形NTRU暗号方式では不要であるため、mod pの計算量増加と相殺する。
したがって、暗号化及び復号化を含めた全体としては、第1の変形NTRU暗号方式は、NTRUEncryptより高速である。
(従来技術との差異)
従来のNTRU暗号では、p=3となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mに、係数が0、1もしくは−1である3値の多項式を用いている(p=2の場合は、これらの多項式のうち、平文m以外に係数が0、1もしくは−1である3値の多項式を用いる。また、p≠2、3の場合は、多項式f、g、rに0、1もしくは−1である3値の多項式を用い、mに〈−p/2〉+1から〈p/2〉の範囲の整数を係数にもつp値の多項式を用いる)。
一方、従来のNTRUEncryptでは、p=2となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mに、係数が0もしくは1である2値の多項式を用いている。
そのため、NTRU暗号では、p=3となるパラメータに対しては、多項式f、g、乱数である多項式r、平文である多項式mとして、3値の多項式を用いることが通常であり、上述した第1の変形NTRU暗号方式のように、p=3の場合に、これらの多項式として2値の多項式を用いた場合に、暗号の安全性にどのような影響が生じるかは開示されていなかった。
しかしながら、今、p=3となるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mとして係数が0もしくは1となる2値の多項式を用いても、従来のNTRU暗号及びNTRUEncryptと同様、パラメータを適切に選択すれば、安全性に問題は起こらない。以下にそのことを説明する。
NTRU暗号及びNTRUEncryptに対する攻撃方法としては、非特許文献2に記載の通り、多項式f、g、rに対する総当り攻撃と、LLLアルゴリズムを用いた攻撃(lattice based attack)が知られている。
今、総当り攻撃に対する安全性は、非特許文献2や非特許文献6に記載の通り、多項式f、g、rのとり得る値の総数に依存する。そのため、p=3となるパラメータに対して、これらの多項式として3値の多項式を用いる代わりに、2値の多項式を用いたとしても、これらの多項式のとり得る値の総数が十分大きくなるように、パラメータdf、dg、dを選択すれば安全性に問題は発生しない。
また、LLL攻撃に対する安全性は、多項式f、gの0でない係数の数に依存することが、非特許文献7に記載されている。そのため、0でない係数の数が十分大きくなるように、df、dgを選択すれば、安全性に問題は発生しない。
<変形NTRU暗号方式のパラメータの生成方法>
ここでは、上述した第1の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第1の変形NTRU暗号方式のパラメータは、p=3、かつq=2^k(k:2以上の整数)となるパラメータを生成すればよい。
そのため、ここでは、まずp=3とし、係数のmod q演算が、ビットマスク演算にて下位8ビットのみをとる演算で実現可能となるよう、q=256とする。
そして、df=dg=dとして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、N、df、dg、dの値を生成する。
なお、これはパラメータの生成方法の一例であり、p=3、かつq=2^k(k:2以上の整数)となるパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,3,256,72,72,72)というパラメータを用いた場合の説明を行う。
以上、第1の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1の概要>
図1は、本発明の実施の形態1における暗号通信システム1の全体構成を示す図である。最初に、同図を用いて暗号通信システム1の概要を説明する。
この暗号通信システム1は、平文mの暗号化通信を行うシステムであり、暗号装置10と、復号装置20とから構成されており、暗号装置10と復号装置20とは通信路30を介して相互に接続されている。
そして、この暗号通信システム1は、暗号装置10と復号装置20との間で、第1の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,72,72,72)を共有している。
この暗号通信システム1において、暗号装置10は、外部から入力された平文mを、上述した、第1の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20に送信する。
そして、復号装置20は、通信路30を介して暗号装置10から受信した暗号文cを復号して復号文m'を生成して出力する。
以上が、暗号通信システム1の概要であるが、以下、暗号通信システム1の構成を述べた後、その動作について説明する。
<暗号通信システム1の構成>
暗号通信システム1は、図1に示すように、暗号装置10と、復号装置20とから構成され、暗号装置10と復号装置20とは通信路30を介して相互に接続されている。
以下、これらの構成要素について詳細に説明を行う。
<暗号装置10の構成>
暗号装置10は、図2に示すように、パラメータ記憶部11と、公開鍵記憶部12と、暗号化部13とから構成される。
(1)パラメータ記憶部11
パラメータ記憶部11は、例えばRAM(Random Access Memory)やEEPROM(Electrically Erasable Programmable Read Only Memory)のようなメモリで構成されており、後述する暗号化部13からアクセス可能なものである。
パラメータ記憶部11は、p=3かつq=2^k(k:2以上の整数)となるパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,72,72,72)を予め記憶しているものとする。
(2)公開鍵記憶部12
公開鍵記憶部12は、例えばマイクロコンピュータ及びRAMのようなメモリで構成されており、後述する暗号化部13からアクセス可能なものである。
公開鍵記憶部12は、予め通信路30を介して復号装置20の公開鍵hを取得して記憶している。
(3)暗号化部13
暗号化部13は、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11及び公開鍵記憶部12にアクセス可能である。
暗号化部13は、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る。
そして、暗号化部13は、外部からパラメータNに対し、(N−1)次以下の多項式で表される、係数が0もしくは1である平文mを受け取る。
そして、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ。これは、例えば、0からN−1までの範囲の重複しないd個の乱数値Ri(1≦i≦d)を選び、第Ri次(1≦i≦d)の係数を1とし、他の係数は0とすることで実現できる。
そして、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する。
そして、暗号化部13は、生成した暗号文cを通信路30を介して復号装置20へ送信する。
<暗号装置10の動作>
ここでは、上述した暗号装置10の動作について説明する。
暗号装置10は、p=3かつq=2^k(k:2以上の整数)となるパラメータを予め記憶しており、復号装置20の公開鍵hを公開鍵記憶部12に予め記憶している。そして、外部から、パラメータNに対し(N−1)次以下の多項式で表される平文mが入力されると、以下に示す処理を行い、上述した第1の変形NTRU暗号方式を用いて平文mを暗号化して暗号文cを生成し、通信路30を介して復号装置20に送信する。
以下、図3に示すフローチャートを用いて説明する。
最初に、暗号化部13は、外部から平文mが入力されると、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS101)。
次に、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS102)。
次に、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS103)。
次に、暗号化部13は、生成した暗号文cを、通信路30を介して復号装置20へ送信して処理を終了する(ステップS104)。
<復号装置20の構成>
復号装置20は、図4に示すように、パラメータ記憶部21と、鍵生成部22と、秘密鍵記憶部23と、復号化部24とから構成される。
(1)パラメータ記憶部21
パラメータ記憶部21は、例えばEEPROMのようなメモリで構成されており、後述する鍵生成部22及び復号化部24からアクセス可能なものである。
パラメータ記憶部21は、暗号装置10のパラメータ記憶部11と同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,72,72,72)を予め記憶しているものとする。
(2)鍵生成部22
鍵生成部22は、例えばマイクロコンピュータによって構成されており、第1の変形NTRU暗号方式の秘密鍵(f,Fp)及び公開鍵hを生成する。
鍵生成部22は、パラメータ記憶部21からパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ。これは、例えば、0から(N−1)までの範囲の重複しないdf個の乱数値Ri(1≦i≦df)を選び、第Ri次(1≦i≦df)の係数を1とし、他の係数は0とすることで実現できる。
そして、鍵生成部22は、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ。
そして、鍵生成部22は、上述した第1の変形NTRU暗号方式の鍵生成処理を行い、多項式Fp及びhを生成する。
そして、鍵生成部22は、多項式hを公開鍵として公開し、予め暗号装置10が取得できるようにし、多項式fとFpの対(f,Fp)を秘密鍵記憶部23に記憶する。
(3)秘密鍵記憶部23
秘密鍵記憶部23は、例えばRAMのようなメモリで構成されており、鍵生成部22及び後述する復号化部24からアクセス可能なものである。
秘密鍵記憶部23は、予め鍵生成部22が生成した多項式fとFpの対(f,Fp)を記憶している。
(4)復号化部24
復号化部24は、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21及び秘密鍵記憶部23にアクセス可能である。
復号化部24は、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、多項式fとFpの対(f,Fp)を読み取る。
そして、復号化部24は、通信路30を介して暗号装置10からパラメータNに対し、(N−1)次以下の多項式で表される、暗号文cを受け取る。
そして、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する。
そして、復号化部24は、生成した復号文m'を外部へ出力する。
<復号装置20の動作>
ここでは、上述した復号装置20の動作について説明する。
復号装置20は、暗号装置10と同一のパラメータを予め記憶しており、復号装置20の秘密鍵である多項式f及びFpの対(f,Fp)と公開鍵である多項式hを生成し、公開鍵hを公開して予め暗号装置10が取得できるようにし、秘密鍵(f,Fp)を秘密鍵記憶部23に記憶している。そして、復号装置20は、通信路30を介して暗号装置10から、パラメータNに対し(N−1)次以下の多項式で表される暗号文cを受信すると、以下に示す処理を行い、上述した高速NTRU暗号方式を用いて復号文m'を生成し、外部へ出力する。
以下、図5に示すフローチャートを用いて説明する。
最初に、復号化部24は、通信路30を介して暗号装置10から暗号文多項式cを受信すると、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS131)。
次に、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する(ステップS132)。
次に、復号化部24は、生成した復号文m'を外部へ出力して処理を終了する(ステップS133)。
<暗号通信システム1の動作>
以上、暗号通信システム1の構成について説明したが、ここでは、暗号通信システム1の全体の動作について、図6に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11及びパラメータ記憶部21は、p=3かつq=2^kとなるパラメータを予め記憶している(ステップS161)。
次に、鍵生成部22は、パラメータ記憶部21からパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ(ステップS162)。
次に、鍵生成部22は、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS163)。
次に、鍵生成部22は、上述した第1の変形NTRU暗号方式の鍵生成処理を行い、多項式hを生成する(ステップS164)。
次に、鍵生成部22は、多項式hを公開鍵として公開し、暗号装置10が取得できるようにし、多項式f及びFpの対(f,Fp)を秘密鍵として秘密鍵記憶部23に記憶する(ステップS165)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20の公開鍵hを取得して記憶する(ステップS166)。
次に、暗号化部13は、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11からパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS167)。
次に、暗号化部13は、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次元以下の多項式rをランダムに選ぶ(ステップS168)。
次に、暗号化部13は、平文mに対し、乱数である多項式r、公開鍵h、パラメータN、パラメータqを用いて、第1の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS169)。
次に、暗号化部13は、生成した暗号文cを通信路30を介して復号装置20へ送信する(ステップS170)。
次に、復号化部24は、通信路30を介して暗号装置10から暗号文cを受信すると、パラメータ記憶部21から、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS171)。
次に、復号化部24は、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第1の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する(ステップS172)。
次に、復号化部24は、生成した復号文m'を外部へ出力して処理を終了する(ステップS173)。
<暗号通信システム1の動作検証>
まず、暗号装置10及び復号装置20は、ステップS161において、p=3かつq=2^k(k:2以上の整数)となるパラメータを記憶している。
そして、復号装置20が、予め、このパラメータを用いて、ステップS162及びステップS163において、係数が0もしくは1の2値である、多項式f及びgを生成し、ステップS164において、これらの多項式を基に公開鍵である多項式hを生成している。
そして、暗号装置10では、ステップS168にて、係数が0もしくは1の2値である多項式rを生成し、ステップS169にて、p=3かつq=2^k(k:2以上の整数)となるパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値である平文mを暗号化して暗号文cを生成している。
そして、復号装置20では、ステップS172において、秘密鍵である多項式f及びFpと記憶しているp=3かつq=2^k(k:2以上の整数)となるパラメータを用いて、復号文m'を生成している。
かかる構成によれば、p=3かつq=2^kとなるパラメータに対して、多項式f、g、乱数である多項式r、平文である多項式mとして、2値の多項式を用いているので、第1の変形NTRU暗号方式を用いて暗号化通信を行うことができる。
なお、上述の第1の変形NTRU暗号方式の説明で述べた通り、NTRUEncrypt方式よりも高速処理可能となる。
これにより、従来のNTRUEncrypt方式よりも高速処理可能な第1の変形NTRU暗号方式を新たに構成することができ、また、この第1の変形NTRU暗号方式を暗号通信に適用し、従来よりも高速処理可能な暗号通信システムを提供することができる。
<変形例>
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)暗号通信システム1では、第1の変形NTRU暗号方式のパラメータとして、p=3かつq=2^k(k:2以上の整数)という条件を満たすパラメータを用いているが、さらに、後述する条件式EFC1を満たすパラメータを用いてもよい。
これにより、後述する通り復号エラーが原理的に発生しなくなるため、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを実現することができる。
なお、このとき、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要であるため、以下のように復号化を行ってもよい。
まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q)
により多項式aが計算される。
そして、この多項式aに対し、NTRUEncryptと同様にして、復号エラー発生確率を低減させる処理が行なわれ、復号文m'が生成される。
(2)暗号通信システム1では、第1の変形NTRU暗号方式の秘密鍵の一部である多項式fとして、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式を選んでいるが、NTRUEncrypt方式と同様、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式Fを用いて、f=1+p・Fにより多項式fを選んでもよい。
これにより、NTRUEncrypt方式と同様、NTRU暗号の復号化処理で行う、多項式Fpとの多項式乗算が不要となる。また、この場合、秘密鍵の一部である多項式Fpとの多項式乗算が不要であるため、秘密鍵は(f,Fp)ではなく、多項式fとしてもよい。
(実施の形態2)
本実施の形態2に係る暗号通信システム、暗号装置及び復号装置では、NTRUEncrypt方式を改良して、復号エラーが原理的に発生しないNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、復号エラーが原理的に発生しないNTRU暗号方式を、「第2の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に、第2の変形NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に、第2の変形NTRU暗号方式について説明する。
<第2の変形NTRU暗号方式>
変形NTRU暗号2は、従来のNTRUEncrypt方式を復号エラーが原理的に発生しないように改変したものである。
変形NTRU暗号2は、後述する条件式EFC1を満たすようにパラメータを生成する点が従来のNTRUEncryptと異なる。
以下、この変形NTRU暗号2について説明を行う。
(1)第2の変形NTRU暗号方式のパラメータ
変形NTRU暗号2は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、以下の条件式EFC1を満たすようにパラメータp、q、df、dg、dを選ぶ点が従来のNTRUEncrypt方式と異なる。
EFC1:p・Min(dg,d)+df<q
この条件式EFC1を満たすパラメータを用いれば、後述する通り、復号エラーが原理的に発生しないようにすることができる。
(2)第2の変形NTRU暗号方式の鍵生成
第2の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、秘密鍵を(f,Fp)、公開鍵をhとする。
(3)第2の変形NTRU暗号方式の暗号化
第2の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに多項式rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
(4)第2の変形NTRU暗号方式の復号化
第2の変形NTRU暗号方式では、後述する通り、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要である。
そのため、以下のように復号化を行う。
第2の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m'を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、多項式bに対し、秘密鍵の一部である多項式Fpを用いて、
m'=Fp×b(mod p*)
により、復号文m'を計算する。
以上のように、第2の変形NTRU暗号方式では、従来のNTRUEncrypt方式と異なり、非特許文献4に記載のcenter1もしくはcenter2と呼ばれるアルゴリズムのような復号エラー発生確率を減少させる処理は行わない。
<復号エラーが原理的に発生しない理由>
以下、第2の変形NTRU暗号方式は復号エラーが原理的に発生しないことを説明する。
まず、復号エラーが発生しないための条件について述べた後、上述した条件式EFC1を満たすパラメータを用いる第2の変形NTRU暗号方式は、復号エラーが原理的に発生しないことを説明する。
(復号エラーが発生しないための条件)
第2の変形NTRU暗号方式は、従来のNTRUEncrypt方式を復号エラーが原理的に発生しないように改変したものである。
今、NTRUEncryptにおいて復号エラーが発生しないための条件は開示されていない。しかしながら、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーは発生しない。
以下に、その理由を説明する。
(i)NTRU暗号方式の場合
NTRUEncryptにおいて復号エラーが発生しないための条件を説明するため、まず非特許文献2に記載のNTRU暗号において復号エラーが発生しないための条件について述べる。
NTRU暗号に関しては、非特許文献2に、復号処理時において計算される多項式(p・r×g+f×m)の係数すべてが、−q/2からq/2の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーが発生しないことが記載されている。これは以下の理由による。
今、非特許文献2に記載のNTRU暗号の復号処理では、まず暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=c×f(mod q*)
により多項式aを演算する。ここで(mod q*)は、多項式c×fの第i次の係数を、剰余が〈−q/2〉+1から〈q/2〉の範囲に収まるように法qで割ったときの剰余を、多項式aの第i次の係数とする演算である。すなわち、多項式cと多項式fの乗算結果の多項式を求め、その各係数を、〈−q/2〉+1から〈q/2〉の範囲に収まるようにmod q演算を施した多項式を、多項式aとする演算である。
このとき、この多項式aの値は、非特許文献2に記載の通り、平文mと暗号文cの関係式及び秘密鍵の一部である多項式fと公開鍵hの関係式から、
a=c×f(mod q*)
=(p・r×h+m)×f(mod q*)
=p・r×g+f×m(mod q*)
となる。すなわち、多項式aは、多項式p・r×g+f×mの各係数を−q/2からq/2の範囲に収まるようにmod q演算を施した多項式となっている。
ここで、NTRU暗号では、乱数r、多項式f、g及び平文mは、係数が0、1もしくは−1となる多項式である。そのため、p・r×g+f×mは、その係数が負の値となる可能性がある多項式である。
今、この負の係数値を取り得る多項式p・r×g+f×mの全ての係数が−q/2からq/2の範囲に収まっていれば、多項式p・r×g+f×m(mod q*)の値は、多項式p・r×g+f×mの値と等しくなるため、多項式aの値は、
a=p・r×g+f×m(mod q*)
=p・r×g+f×m
となる。すると、非特許文献2に記載の通り、その後の復号処理において正しく平文mを復元することができるので、復号エラーは発生しない。
(ii)NTRUEncrypt方式の場合
一方、NTRUEncryptでは、復号エラーが発生しないための条件は開示されていないが、上述した通り、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、正しく復号処理を行うことができ、復号エラーは発生しない。これは、以下の理由による。
今、復号アルゴリズムDでは、非特許文献4に記載の通り、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=c×f(mod q)
により多項式aを演算する。この演算は、多項式cと多項式fの乗算結果の多項式を求め、その各係数を、0から(q−1)の範囲に収まるようにmod q演算を施した多項式を、多項式aとする演算である。
このとき、この多項式aの値は、非特許文献4に記載の通り、平文mと暗号文cの関係式及び秘密鍵の一部である多項式fと公開鍵hの関係式から、
a=c×f(mod q)
=p・r×g+f×m(mod q)
となる。すなわち、多項式aは、多項式p・r×g+f×mの各係数を0から(q−1)の範囲に収まるようにmod q演算を施した多項式となっている。
ここで、NTRUEncryptでは、乱数である多項式r、多項式f、g及び平文である多項式mは、係数が0もしくは1となる多項式である。そのため、p・r×g+f×mは、その係数が0もしくは正の値となる多項式である。
今、この多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていれば、多項式p・r×g+f×m(mod q)の値は、多項式p・r×g+f×mの値と等しくなるため、多項式aの値は、
a=p・r×g+f×m(mod q)
=p・r×g+f×m
となる。すると、非特許文献2に記載のNTRU暗号と同様に、その後の復号処理において正しく平文mを復元することができるので、復号エラーは発生しない。
(条件式EFC1を満たすパラメータを用いれば復号エラーが発生しなくなる理由)
第2の変形NTRU暗号方式は、条件式EFC1を満たすようにパラメータを設定するよう、従来のNTRUEncrypt方式を改変し、復号エラーが原理的に発生しないようにしたものである。
以下、条件式EFC1を満たすようにパラメータを設定すれば、多項式p・r×g+f×mの全ての係数が、0から(q−1)の範囲に収まり、復号エラーは発生しなくなることを説明する。
まず、多項式p・r×gを考える。
ここで、多項式r×gのk次の係数は、多項式aのk次の係数をa(k)で表すと、
(r×g)(k)
=r(0)・g(k)+r(1)・g(k−1)+...
+r(N−1)・g(k−(N−1)(mod N))
である(多項式と多項式の乗算方法については、例えば、非特許文献2参照)。
上述した通り、乱数rは、d個の係数が1であり、かつ他の係数は0となる多項式であり、多項式gは、dg個の係数が1であり、かつ他の係数は0となる多項式である。
すると、多項式r×gの係数(r×g)(k)の値は、
r×g(k)
=r(0)・g(k)+r(1)・g(k−1)+...
+r(N−1)・g(k−(N−1)(mod N))
=1・g(i1)+1・g(i2)+...+1・g(id)
+0・g(j1)+0・g(j2)+...+0・g(j(N−d))
=1・g(i1)+1・g(i2)+...+1・g(id)
というように、d個の1・g(in)という項(1≦n≦d)で表される。
今、d≦dgの場合、g(in)が全て1である場合が考えられ(1≦n≦d≦dg)、このとき(r×g)(k)は最大値を取り、その値は高々dである。
なお、d>dgの場合、g(in)が全て1である場合はあり得ないため、g(in)のうちdg個が1であり、(d−dg)個が0である場合に(r×g)(k)は最大値を取り、その値は高々dgである。
以上により、多項式r×gの係数の最大値はMin(dg,d)である。
従って、多項式p・r×gの係数の最大値は、多項式r×gの係数の最大値にpを乗じたものとなるので、p・Min(dg,d)となる。
次に、多項式f×mを考える。
ここで、多項式f×mの第k次の係数を考えると、多項式fはdf個の係数が1であり、かつ他の係数は0となる多項式であるので、上述の議論と同様に、
f×m(k)
=f(0)・m(k)+f(1)・m(k−1)+...
+f(N−1)・m(k−(N−1)(mod N))
=1・m(i1)+1・m(i2)+...+1・m(idf)
というように、df個の1・m(in)という項(1≦n≦df)で表される。
今、平文である多項式mは係数が0もしくは1であるので、m(in)が全て1である場合が考えられ(1≦n≦df)、このとき(f×m)(k)は最大値を取り、その値は高々dfである。
以上により、多項式f×mの係数の最大値はdfである。
以上をまとめると、多項式p・r×g+f×mの係数の最大値は高々、
p・Min(dg,d)+df
である。
そして、係数の最大値がq−1以下であれば、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていることになるので、復号エラーは発生しない。
すなわち、復号エラーが原理的に発生しないためには、
p・Min(dg,d)+df<q
となるようにすればよく、下記条件式EFC1が導かれる。
EFC1:p・Min(dg,d)+df<q
<第2の変形NTRU暗号方式のパラメータ生成方法>
ここでは、上述した第2の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第2の変形NTRU暗号方式のパラメータは、上述した条件式EFC1を満たすパラメータを生成すればよい。
そのため、ここでは、まずp=2とし、pと互いに素となるよう、q=239とする。
そして、df=dg=dとして、上述した条件式EFC1を満たすように、df、dg、dの値を生成する。そして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、Nの値を生成する。
なお、これはパラメータの生成方法の一例であり、条件式EFC1を満たすようにパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,2,239,63,63,63)というパラメータを用いた場合の説明を行う。
以上、第2の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1bの概要>
図7は、本発明の実施の形態2における暗号通信システム1bの全体構成を示す図である。最初に、同図を用いて暗号通信システム1bの概要を説明する。
この暗号通信システム1bは、平文mの暗号化通信を行うシステムであり、暗号装置10bと、復号装置20bとから構成されており、暗号装置10bと復号装置20bとは通信路30を介して相互に接続されている。
そして、この暗号通信システム1bは、暗号装置10bと復号装置20bとの間で、第2の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,2,239,63,63,63)を共有している。
この暗号通信システム1bにおいて、暗号装置10bは、外部から入力された平文mを、上述した、第2の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20bに送信する。
そして、復号装置20bは、通信路30を介して暗号装置10bから受信した暗号文cを復号して復号文m'を生成して出力する。
以上が、暗号通信システム1bの概要であるが、以下、暗号通信システム1との差異点を中心に、その構成及び動作について説明する。
<暗号通信システム1bの構成>
暗号通信システム1bは、図7に示すように、暗号装置10bと、復号装置20bとから構成され、暗号装置10bと復号装置20bとは通信路30を介して相互に接続されている。
以下、これらの構成要素について暗号通信システム1との差異点を中心に説明する。
<暗号装置10bの構成>
暗号装置10bは、図8に示すように、パラメータ記憶部11bと、公開鍵記憶部12と、暗号化部13bとから構成される。
以下、これらの構成要素について、暗号装置10との差異点を中心に説明する。
(1)パラメータ記憶部11b
パラメータ記憶部11bは、例えばRAMやEEPROMのようなメモリで構成されており、後述する暗号化部13bからアクセス可能なものである。
パラメータ記憶部11bは、上述した条件式EFC1を満たすようなパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を予め記憶しているものとする。
(2)暗号化部13b
暗号化部13bは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11b及び公開鍵記憶部12にアクセス可能である。
暗号化部13bは、第1の変形NTRU暗号方式の暗号化処理を行う代わりに、第2の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する点が、暗号化部13と異なる。
<復号装置20bの構成>
復号装置20bは、図9に示すように、パラメータ記憶部21bと、鍵生成部22bと、秘密鍵記憶部23と、復号化部24bとから構成される。
以下、これらの構成要素について、復号装置20との差異点を中心に説明する。
(1)パラメータ記憶部21b
パラメータ記憶部21bは、例えばRAMやEEPROMのようなメモリで構成されており、後述する鍵生成部22b及び復号化部24bからアクセス可能なものである。
パラメータ記憶部21bは、暗号装置10bのパラメータ記憶部11bと同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を予め記憶しているものとする。
(2)鍵生成部22b
鍵生成部22bは、例えばマイクロコンピュータによって構成されており、エラーフリーNTRU暗号の秘密鍵f及び公開鍵hを生成する。
鍵生成部22bは、第1の変形NTRU暗号方式の鍵生成処理を行う代わりに、第2の変形NTRU暗号方式の鍵生成処理を行う点が、鍵生成部22と異なる。
(3)復号化部24b
復号化部24bは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21b及び秘密鍵記憶部23にアクセス可能である。
復号化部24bは、第1の変形NTRU暗号方式の復号化処理を行う代わりに、第2の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する点が、復号化部24と異なる。
<暗号通信システム1bの動作>
以上、暗号通信システム1bの構成について説明したが、ここでは、暗号通信システム1bの全体の動作について、図10に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11b及びパラメータ記憶部21bは、条件式EFC1を満たすパラメータを予め記憶している(ステップS261)。
次に、鍵生成部22bは、パラメータ記憶部21bからパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式fを選ぶ(ステップS262)。
次に、鍵生成部22bは、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS263)。
次に、鍵生成部22bは、上述した第2の変形NTRU暗号方式の鍵生成処理を行い、多項式Fp及びhを生成する(ステップS264)。
次に、鍵生成部22bは、多項式hを公開鍵として公開し、暗号装置10bが取得できるようにし、多項式fとFpの対(f,Fp)を秘密鍵として秘密鍵記憶部23に記憶する(ステップS265)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20bの公開鍵hを取得して記憶する(ステップS266)。
次に、暗号化部13bは、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11bからパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS267)。
次に、暗号化部13bは、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS268)。
次に、暗号化部13bは、平文mに対し、乱数r、公開鍵h、パラメータN、パラメータqを用いて、第2の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS269)。
次に、暗号化部13bは、生成した暗号文cを通信路30を介して復号装置20bへ送信する(ステップS270)。
次に、復号化部24bは、通信路30を介して暗号装置10bから暗号文cを受信すると、パラメータ記憶部21bから、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵(f,Fp)を読み取る(ステップS271)。
次に、復号化部24bは、暗号文cに対し、秘密鍵である多項式f及びFp、パラメータN、パラメータp、パラメータqを用いて、第2の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する(ステップS272)。
次に、復号化部24bは、生成した復号文m'を外部へ出力して処理を終了する(ステップS273)。
<暗号通信システム1bの動作検証>
まず、暗号装置10b及び復号装置20bは、ステップS261において、条件式EFC1を満たすようなパラメータを記憶している。
そして、復号装置20bが、予め、このパラメータを用いて、ステップS262及びステップS263において、係数が0もしくは1の2値である、多項式f及びgを生成し、ステップS264において、これらの多項式を基に公開鍵である多項式hを生成している。
そして、暗号装置10bでは、ステップS267にて、係数が0もしくは1の2値である多項式rを生成し、ステップS268にて、条件式EFC1を満たすようなパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値の多項式である平文mを暗号化して暗号文cを生成している。
そして、復号装置20bでは、ステップS271において、秘密鍵である多項式f及びFpと記憶している条件式EFC1を満たすようなパラメータを用いて、復号文m'を生成している。
かかる構成によれば、条件式EFC1を満たすパラメータを、暗号装置10bと復号装置20bとの間で共有し、このパラメータを用いて暗号化通信を行っているため、上述の条件式EFC1の説明で述べた通り、復号エラーは原理的に起こらず、復号文m'は必ず平文mと同一となる。
これにより、復号エラーが原理的に発生しない第2の変形NTRU暗号方式を構成することができ、また、第2の変形NTRU暗号方式を暗号通信システムに適用し、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを提供することができる。
<変形例>
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)暗号通信システム1bでは、第2の変形NTRU暗号方式のパラメータとしてp=2となるパラメータを用いているが、条件式EFC1を満たせば他のパラメータでもよく、たとえば、p=3となるパラメータを用いてもよい。また、上述の実施の形態では、条件式EFC1を満たすパラメータとしてパラメータ(N,p,q,df,dg,d)=(251,2,239,63,63,63)を用いて説明を行なったが、NTRUEncrypt方式で採用されているパラメータ(N,p,q,df,dg,d)=(251,2,239,72,72,72)であっても、条件式EFC1を満たすため、このパラメータを用いてもよい。
(2)暗号通信システム1bでは、第2の変形NTRU暗号方式の秘密鍵の一部である多項式fとして、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式を選んでいるが、NTRUEncrypt方式と同様、df個の係数が1で、かつその他の係数は0である、(N−1)次元以下の多項式Fを用いて、f=1+p・Fにより秘密鍵fを選び、後述する条件式EFC2を満たすようなパラメータを生成するようにしてもよい。この場合は、秘密鍵を(f,Fp)ではなく、多項式fとしてもよい。
これにより、NTRUEncrypt方式と同様、NTRU暗号の復号化処理で行う、多項式Fpとの多項式乗算が不要となる。なお、後述する通り条件式EFC2を満たすようなパラメータが生成されるので、復号エラーが原理的に発生せず、実施の形態2と同様に、暗号装置が送信したデータ内容が、常に復号装置で正しく得られるような暗号通信システムを実現することができる。
(実施の形態3)
本実施の形態3に係る暗号通信システム、暗号装置及び復号装置では、NTRUEncrypt方式を改良して、復号エラーが原理的に発生せず、かつ高速処理可能なNTRU暗号方式を新たに構成し、この新たに構成したNTRU暗号方式を用いて暗号化通信を行う(以降、この新たに構成した、復号エラーが原理的に発生しないNTRU暗号方式を、「第3の変形NTRU暗号方式」と呼ぶ)。
そのため、最初に、第3の変形NTRU暗号方式について説明を行う。
以下、従来のNTRUEncrypt方式との差異点を中心に、第3の変形NTRU暗号方式について説明する。
<第3の変形NTRU暗号方式>
第3の変形NTRU暗号方式は、従来のNTRUEncrypt方式を復号エラーが原理的に発生せず、かつ高速処理可能なように改変したものである。
第3の変形NTRU暗号方式は、パラメータとしてp=3、q=2^k(k:2以上の整数)となるパラメータを用いつつ、多項式f、g、乱数である多項式r及び平文である多項式mとして、係数が0もしくは1の2値である多項式を選ぶ点、及び後述する条件式EFC2を満たすようにパラメータを生成する点が従来のNTRUEncryptと異なる。
以下、この第3の変形NTRU暗号方式について説明を行う。
(1)第3の変形NTRU暗号方式のパラメータ
第3の変形NTRU暗号方式は、非負整数のパラメータ、N、p、q、df、dg、dを持つ。これらのパラメータの意味は、従来のNTRUEncrypt方式と同じであるが、p=3かつq=2^k(k:2以上の整数)となるパラメータを生成し、p=3としているにも拘わらず、多項式f、g、乱数である多項式rとして係数が0もしくは1の2値である多項式を用いる点、及び以下の条件式EFC2を満たすようにパラメータp、q、df、dg、dを選ぶ点が従来のNTRUEncrypt方式と異なる。
EFC2:Min(dg,d)+df<(q−1)/p
このように、p=3というパラメータを用いるにも拘わらず、多項式f、g、乱数である多項式rとして係数が0もしくは1の2値である多項式を用いることで、従来のNTRUEncryptよりも高速処理可能となるようにできる。
また、この条件式EFC2を満たすパラメータを用いれば、後述する通り、復号エラーが原理的に発生しないようにすることができる。
(2)第3の変形NTRU暗号方式の鍵生成
第3の変形NTRU暗号方式では、上述したように、パラメータdf、dgを用いてランダムに多項式f、多項式gを生成する。ここで、多項式fは、df個の係数が1で、かつその他の係数は0である、(N−1)次以下の多項式Fを用いて、f=1+p・Fにより多項式fを選ぶ。
そして非特許文献2に記載の通り、Fq×f=1(mod q)となる多項式Fqを用いて、
h=Fq×g(mod q)
により、多項式hを生成する。ここで、秘密鍵を多項式f、公開鍵をhとする。
(3)第3の変形NTRU暗号方式の暗号化
第3の変形NTRU暗号方式の暗号化では、平文である係数が0もしくは1の2値である多項式mを暗号化し、暗号文である多項式cを計算する。まず、上述したような多項式rをランダムに生成する。すなわち、乱数rは(N−1)次以下の多項式であり、第0次(定数項)から第(N−1)次までN個の係数があるが、このN個の係数のうち、d個の係数が1であり、かつd個の係数が−1であり、かつ(N−2d)個の係数は0となるように、ランダムに多項式rを選ぶ。
そして、この乱数rと公開鍵hを用いて、係数が0、1もしくは−1である(N−1)次以下の平文mに対し、
c=p・r×h+m(mod q)
により、暗号文cを生成する。
(4)第3の変形NTRU暗号方式の復号化
第3の変形NTRU暗号方式では、後述する通り、復号エラーが原理的に発生しないため、NTRUEncryptと異なり、復号エラー発生確率を減少させる処理が不要である。
そのため、以下のように復号化を行う。
第3の変形NTRU暗号方式の復号化では、暗号文である多項式cを復号化し、復号文である多項式m'を計算する。復号化時には、まず、暗号文cに対し、秘密鍵の一部である多項式fを用いて、
a=f×c(mod q*)
により多項式aを計算する。
次に、多項式aに対し、パラメータpを用いて、
b=a(mod p)
により、多項式bを生成する。
そして、非特許文献4に記載の通り、秘密鍵である多項式fがf=1+p・Fという形であるために、Fp×f=1(mod p)となる多項式FpはFp=1(mod p)となるので、復号化処理で行う、多項式Fpとの多項式乗算が不要となるので、
m'=a(mod p*)
により、復号文m'を生成する。
以上のように、第3の変形NTRU暗号方式では、従来のNTRUEncrypt方式と異なり、非特許文献4に記載のcenter1もしくはcenter2と呼ばれるアルゴリズムのような復号エラー発生確率を減少させる処理は行わない。
<復号エラーが原理的に発生しない理由>
以下、上述した条件式EFC2を満たすパラメータを用いる第3の変形NTRU暗号方式は、復号エラーが原理的に発生しないことを説明する。
(条件式EFC2を満たすパラメータを用いれば復号エラーが発生しなくなる理由)
第3の変形NTRU暗号方式は、条件式EFC2を満たすようにパラメータを設定するよう、従来のNTRUEncrypt方式を改変し、復号エラーが原理的に発生しないようにしたものである。
以下、条件式EFC2を満たすようにパラメータを設定すれば、多項式p・r×g+f×mの全ての係数が、0から(q−1)の範囲に収まり、復号エラーは発生しなくなることを説明する。
まず、多項式p・r×gを考えると、上述した通り、多項式p・r×gの係数の最大値は、p・Min(dg,d)となる。
次に、多項式f×mを考える。
今、秘密鍵である多項式fはf=1+p・Fなので、
f×m
=(1+p・F)×m
=m+p・F×m
である。
ここで、多項式F×mの第k次の係数を考えると、多項式Fはdf個の係数が1であり、かつ他の係数は0となる多項式であるので、上述の議論と同様に、
F×m(k)
=F(0)・m(k)+F(1)・m(k−1)+...
+F(N−1)・m(k−(N−1)(mod N))
=1・m(i1)+1・m(i2)+...+1・m(idf)
というように、df個の1・m(in)という項(1≦n≦df)で表される。
今、平文である多項式mは係数が0もしくは1であるので、m(in)が全て1である場合が考えられ(1≦n≦df)、このとき(F×m)(k)は最大値を取り、その値は高々dfである。
以上により、多項式F×mの係数の最大値はdfである。
従って、平文である多項式mの係数の最大値は1であり、p・F×mの係数の最大値は、p・dfとなるので、多項式f×m(=m+p・F×m)の係数の最大値は、1+p・dfとなる。
以上をまとめると、多項式p・r×g+f×mの係数の最大値は高々、
p・Min(dg,d)+1+p・df
である。
そして、係数の最大値がq−1以下であれば、多項式p・r×g+f×mの全ての係数が0から(q−1)の範囲に収まっていることになるので、復号エラーは発生しない。
すなわち、復号エラーが原理的に発生しないためには、
p・Min(dg,d)+1+p・df<q
となるようにすればよく、この式を変形すると、下記条件式EFC2が導かれる。
EFC2:Min(dg,d)+df<(q−1)/p
<第3の変形NTRU暗号方式のパラメータ生成方法>
ここでは、上述した第3の変形NTRU暗号方式のパラメータの生成方法の一例を挙げる。
上述した通り、第3の変形NTRU暗号方式のパラメータは、p=3かつq=2^k(k:2以上の整数)とし、上述した条件式EFC2を満たすパラメータを生成すればよい。
そのため、ここでは、まずp=3とし、pと互いに素となりかつ係数のmod q演算が、ビットマスク演算にて下位8ビットのみをとる演算で実現可能となるよう、q=256とする。
そして、df=dg=dとして、上述した条件式EFC2を満たすように、df、dg、dの値を生成する。そして、上述した総当り攻撃およびLLL攻撃に対する安全性が規定の値以上となるように、Nの値を生成する。
なお、これはパラメータの生成方法の一例であり、条件式EFC2を満たすようにパラメータを生成すれば、他の生成方法でもよい。
以降では、この生成方法により生成された、(N,p,q,df,dg,d)=(251,3,256,42,42,42)というパラメータを用いた場合の説明を行う。
以上、第3の変形NTRU暗号方式について説明を行ったが、以降、本実施の形態に係る暗号通信システム、暗号装置及び復号装置について説明を行う。
<暗号通信システム1cの概要>
図11は、本発明の実施の形態3における暗号通信システム1cの全体構成を示す図である。最初に、同図を用いて暗号通信システム1cの概要を説明する。
この暗号通信システム1cは、平文mの暗号化通信を行うシステムであり、暗号装置10cと、復号装置20cとから構成されており、暗号装置10cと復号装置20cとは通信路30を介して相互に接続されている。
そして、この暗号通信システム1cは、暗号装置10cと復号装置20cとの間で、第3の変形NTRU暗号方式のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,42,42,42)を共有している。
この暗号通信システム1cにおいて、暗号装置10cは、外部から入力された平文mを、上述した、第3の変形NTRU暗号方式を用いて暗号化して暗号文cを生成し、通信路30を介して復号装置20cに送信する。
そして、復号装置20cは、通信路30を介して暗号装置10cから受信した暗号文cを復号して復号文m'を生成して出力する。
以上が、暗号通信システム1cの概要であるが、以下、暗号通信システム1との差異点を中心に、その構成及び動作について説明する。
<暗号通信システム1cの構成>
暗号通信システム1cは、図11に示すように、暗号装置10cと、復号装置20cとから構成され、暗号装置10cと復号装置20cとは通信路30を介して相互に接続されている。
以下、これらの構成要素について暗号通信システム1との差異点を中心に説明する。
<暗号装置10cの構成>
暗号装置10cは、図12に示すように、パラメータ記憶部11cと、公開鍵記憶部12と、暗号化部13cとから構成される。
以下、これらの構成要素について、暗号装置10との差異点を中心に説明する。
(1)パラメータ記憶部11c
パラメータ記憶部11cは、例えばRAMやEEPROMのようなメモリで構成されており、後述する暗号化部13cからアクセス可能なものである。
パラメータ記憶部11cは、上述したように、p=3かつq=2^k(k:2以上の整数)とし、条件式EFC2を満たすようなパラメータを予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,42,42,42)を予め記憶しているものとする。
(2)暗号化部13c
暗号化部13cは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部11c及び公開鍵記憶部12にアクセス可能である。
暗号化部13cは、第1の変形NTRU暗号方式の暗号化処理を行う代わりに、第3の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する点が、暗号化部13と異なる。
<復号装置20cの構成>
復号装置20cは、図13に示すように、パラメータ記憶部21cと、鍵生成部22cと、秘密鍵記憶部23と、復号化部24cとから構成される。
以下、これらの構成要素について、復号装置20との差異点を中心に説明する。
(1)パラメータ記憶部21c
パラメータ記憶部21cは、例えばRAMやEEPROMのようなメモリで構成されており、後述する鍵生成部22c及び復号化部24cからアクセス可能なものである。
パラメータ記憶部21cは、暗号化部10cのパラメータ記憶部11cと同一のパラメータ(N,p,q,df,dg,d)を予め記憶している。ここでは、上述の通り、パラメータ(N,p,q,df,dg,d)=(251,3,256,42,42,42)を予め記憶しているものとする。
(2)鍵生成部22c
鍵生成部22cは、例えばマイクロコンピュータによって構成されており、第3の変形NTRU暗号方式の秘密鍵である多項式f及び公開鍵である多項式hを生成する。
鍵生成部22cは、第1の変形NTRU暗号方式の鍵生成処理を行う代わりに、第3の変形NTRU暗号方式の鍵生成処理を行う点が、鍵生成部22と異なる。
(3)復号化部24c
復号化部24cは、例えばマイクロコンピュータによって構成されており、パラメータ記憶部21c及び秘密鍵記憶部23にアクセス可能である。
復号化部24cは、第1の変形NTRU暗号方式の復号化処理を行う代わりに、第3の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する点が、復号化部24と異なる。
<暗号通信システム1cの動作>
以上、暗号通信システム1cの構成について説明したが、ここでは、暗号通信システム1cの全体の動作について、図14に示すフローチャートを用いて説明する。
最初に、パラメータ記憶部11c及びパラメータ記憶部21cは、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすパラメータを予め記憶している(ステップS361)。
次に、鍵生成部22cは、パラメータ記憶部21cからパラメータN、パラメータq、パラメータdf、パラメータdgを読み取り、パラメータN、パラメータdfを用いて、df個の係数が1であり、かつその他の係数が0となるように、(N−1)次以下の多項式で表される多項式Fを選び、f=1+p・Fにより秘密鍵fを生成する(ステップS362)。
次に、鍵生成部22cは、パラメータN、パラメータdgを用いて、dg個の係数が1であり、かつその他の係数は0となるように、(N−1)次以下の多項式で表される多項式gを選ぶ(ステップS363)。
次に、鍵生成部22cは、上述した第3の変形NTRU暗号方式の鍵生成処理を行い、公開鍵である多項式hを生成する(ステップS364)。
次に、鍵生成部22cは、多項式hを公開鍵として公開し、暗号装置10cが取得できるようにし、多項式fを秘密鍵として秘密鍵記憶部23に記憶する(ステップS365)。
次に、公開鍵記憶部12は、通信路30を介して復号装置20cの公開鍵hを取得して記憶する(ステップS366)。
次に、暗号化部13cは、外部から係数が0もしくは1である平文mが入力されると、パラメータ記憶部11cからパラメータN、パラメータq、パラメータdを読み取り、公開鍵記憶部12から、公開鍵hを読み取る(ステップS367)。
次に、暗号化部13cは、パラメータN、パラメータdを用いて、d個の係数が1であり、かつ他の係数が0となるように、(N−1)次以下の多項式rをランダムに選ぶ(ステップS368)。
次に、暗号化部13cは、平文mに対し、乱数r、公開鍵h、パラメータN、パラメータqを用いて、第3の変形NTRU暗号方式の暗号化処理を行い、暗号文cを生成する(ステップS369)。
次に、暗号化部13cは、生成した暗号文cを通信路30を介して復号装置20cへ送信する(ステップS370)。
次に、復号化部24cは、通信路30を介して暗号装置10cから暗号文cを受信すると、パラメータ記憶部21cから、パラメータN、パラメータp、パラメータqを読み取り、秘密鍵記憶部23から、秘密鍵fを読み取る(ステップS371)。
次に、復号化部24cは、暗号文cに対し、秘密鍵f、パラメータN、パラメータp、パラメータqを用いて、第3の変形NTRU暗号方式の復号化処理を行い、復号文m'を生成する(ステップS372)。
次に、復号化部24cは、生成した復号文m'を外部へ出力して処理を終了する(ステップS373)。
<暗号通信システム1cの動作検証>
まず、暗号装置10c及び復号装置20cは、ステップS361において、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすようなパラメータを記憶している。
そして、復号装置20cが、予め、このパラメータを用いて、ステップS362及びステップS363において、係数が0もしくは1の2値である、秘密鍵f及び多項式gを生成し、ステップS364において、これらの多項式を基に公開鍵hを生成している。
そして、暗号装置10cでは、ステップS368にて、係数が0もしくは1の2値である多項式rを生成し、ステップS369にて、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすようなパラメータと公開鍵hと乱数rを用いて、係数が0もしくは1の2値である平文mを暗号化して暗号文cを生成している。
そして、復号装置20cでは、ステップS372において、秘密鍵fと記憶しているp=3かつq=2^k(k:2以上の整数)であり条件式EFC2を満たすようなパラメータを用いて、復号文m'を生成している。
かかる構成によれば、p=3かつq=2^k(k:2以上の整数)であり、条件式EFC2を満たすパラメータを、暗号装置10cと復号装置20cとの間で共有し、このパラメータを用いて暗号化通信を行っているため、上述した通り、従来のNTRUEncryptよりも高速処理可能となるようにできる。また、上述の条件式EFC2の説明で述べた通り、復号エラーは原理的に起こらず、復号文m'は必ず平文mと同一となる。
これにより、復号エラーが原理的に発生せず、かつ高速処理可能な第3の変形NTRU暗号方式を構成することができ、また、第3の変形NTRU暗号方式を暗号通信システムに適用し、暗号装置が送信したデータ内容が、常に復号装置で正しく得られ、従来よりも高速処理可能な暗号通信システムを提供することができる。
(その他の変形例)
なお、上記に説明した実施の形態は、本発明の実施の形態の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。上述した変形例に加え、以下のような場合も本発明に含まれる。
(1)暗号通信システム1、1b、1cにおいては、パラメータ生成方法の一例、及びこのパラメータ生成方法により生成したパラメータの具体例を示しているが、これは、パラメータ生成方法の説明で述べた通り、他の生成方法でもよく、また、条件を満たせば他のパラメータでもよく、これに限定されない。
(2)暗号通信システム1では、暗号装置10と復号装置20との間で、同一のパラメータとして、(N,p,q,df,dg,d)=(251,3,256,42,42,42)を共有しているが、暗号装置10で、このパラメータのうち、暗号化処理に必要なもののみを保持するようにしてもよいし、復号装置20で、鍵生成処理及び復号化処理に必要なもののみを保持するようにしてもよい。
(3)暗号通信システム1では、復号装置20が鍵生成処理を行っていたが、さらに専用通信路を介して暗号装置10及び復号装置20と通信可能な鍵生成装置を備え、復号装置20が鍵生成処理を行うのに代えて、鍵生成装置が鍵生成処理を行い、暗号装置10が、鍵生成装置から専用通信路を介して、公開鍵hを取得して公開鍵記憶部12に予め記憶しておき、復号装置20が、鍵生成装置から専用通信路を介して、秘密鍵の一部または秘密鍵そのものである多項式fを取得して秘密鍵記憶部23に予め記憶しておいてもよい。なお、専用通信路に代えて通信路30を用いてもよい。
(4)実施の形態1から3では、多項式を用いて演算を表現しているが、特許文献1のようにこれを一般の環Rの元として表現してもよい。具体的には、多項式を環Rの元とし、p、qを環Rのイデアルとしてもよい。さらに実施の形態1から3のp、qをイデアルp=pg・R、q=qg・Rとしてもよい。具体的には、実施の形態1から3において、p=3、q=2^kである場合に、p=3・R、q=(2^k)・Rであってもよい。このとき、2は環Rにおける2であり、環Rにおける加法群の零元0に乗法群の単位元1を2回足したものである。同様に3は零元0に単位元1を3回足したものである。さらに、2^kは乗法群の単位元1に2をk回掛けたものである。
また、dg、dを元g、rをN次元配列で表現したときの要素が1である個数、dfをfまたはFをN次元配列で表現したときの要素が1である個数とし、復号エラーが発生しない条件式をpg×Min(dg,d)+1+pg×df<qgとしてもよい。
(5)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、半導体メモリ、ハードディスクドライブ、CD−ROM、DVD−ROM、DVD−RAM等に記録したものとしてもよい。
(6)上記実施の形態及び変形例をそれぞれ組み合わせるとしてもよい。
(7)また、ブロック図(図2や図4など)の各機能ブロックは典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。
なお、LSIは集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。別技術としてバイオ技術等が可能性としてありえる。
本発明にかかる暗号通信システム、暗号装置及び復号装置は、従来よりも高速処理可能であるという効果、あるいは、復号エラーを原理的に発生させないようにできるという効果を有し、鍵配送やコンテンツ配信等の暗号通信システム等として有用である。
図1は、本発明の実施の形態1に係る暗号通信システムの構成を示すブロック図である。
図2は、実施の形態1に係る暗号装置の構成を示すブロック図である。
図3は、実施の形態1に係る暗号装置の動作を示すフローチャートである。
図4は、実施の形態1に係る復号装置の構成を示すブロック図である。
図5は、実施の形態1に係る復号装置の動作を示すフローチャートである。
図6は、実施の形態1に係る暗号通信システム全体の動作を示すフローチャートである。
図7は、本発明の実施の形態2に係る暗号通信システムの構成を示すブロック図である。
図8は、実施の形態2に係る暗号装置の構成を示すブロック図である。
図9は、実施の形態2に係る復号装置の構成を示すブロック図である。
図10は、実施の形態2に係る暗号通信システム全体の動作を示すフローチャートである。
図11は、実施の形態3に係る暗号通信システムの構成を示すブロック図である。
図12は、実施の形態3に係る暗号装置の構成を示すブロック図である。
図13は、実施の形態3に係る復号装置の構成を示すブロック図である。
図14は、実施の形態3に係る暗号通信システム全体の動作を示すフローチャートである。
符号の説明
1,1b,1c 暗号通信システム
10,10b,10c 暗号装置
11,11b,11c,21,21b,21c パラメータ記憶部
12 公開鍵記憶部
13,13b,13c 暗号化部
20,20b,20c 復号装置
22,22b,22c 鍵生成部
23 秘密鍵記憶部
24,24b,24c 復号化部
30 通信路