JPWO2005109379A1 - 暗号システム、暗号装置、復号装置、プログラムおよび集積回路 - Google Patents

暗号システム、暗号装置、復号装置、プログラムおよび集積回路 Download PDF

Info

Publication number
JPWO2005109379A1
JPWO2005109379A1 JP2006512975A JP2006512975A JPWO2005109379A1 JP WO2005109379 A1 JPWO2005109379 A1 JP WO2005109379A1 JP 2006512975 A JP2006512975 A JP 2006512975A JP 2006512975 A JP2006512975 A JP 2006512975A JP WO2005109379 A1 JPWO2005109379 A1 JP WO2005109379A1
Authority
JP
Japan
Prior art keywords
polynomial
encryption
decryption
ring
ntru
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006512975A
Other languages
English (en)
Other versions
JP4786531B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2006512975A priority Critical patent/JP4786531B2/ja
Publication of JPWO2005109379A1 publication Critical patent/JPWO2005109379A1/ja
Application granted granted Critical
Publication of JP4786531B2 publication Critical patent/JP4786531B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

従来より高速処理可能な暗号通信システムは、暗号装置と復号装置とを備えており、p=3かつq=2^k(k:2以上の整数)となるパラメータを、暗号装置と復号装置との間で共有している(S161)。復号装置は、このパラメータを用いて公開鍵および秘密鍵を作成する(S162〜S165)。暗号装置は、復号装置の公開鍵を用いて平文の暗号化を行なう(S166〜S170)。復号装置は、復号装置の秘密鍵を用いて暗号文を復号化する(S171〜S173)。

Description

本発明は、情報セキュリティ技術としての暗号技術に関し、特に、復号エラーが発生しない暗号に関するものである。
従来、送信装置と受信装置との間で秘匿通信を実現する方法として、公開鍵暗号を用いた暗号化通信が提案されている。従来の暗号化通信について簡単に説明すると、送信装置が、通信内容を受信装置の公開鍵を用いて暗号化して送信し、受信装置は、暗号化された通信内容を受信し、それを自身の秘密鍵を用いて復号して元の通信内容を得る方法である(例えば、非特許文献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のイデアルとしている。
特表2000−516733号公報 岡本龍明、山本博資、「現代暗号」、シリーズ/情報科学の数学、産業図書、1997. Jeffery Hoffstein,Jill Pipher,and Joseph H.Silverman,"NTRU:A ring based public key cryptosystem",Lecture Notes in Computer Science,1423,pp.267−288,Springer−Verlag,1998. Joseph H.Silverman,"NTRU Cryptosystems Technical Report #011,Version 2,Wraps,Gaps,and Lattice Constants",[online]、2001年3月15日、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/NTRUTech011_v2.pdf> Joseph H.Silverman,W.Whyte,"NTRU Cryptosystems Technical Report #018,Version 1,Estimating Decryption Failure Probabilities for NTRUEncrypt",[online]、2003年、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/NTRUTech018.pdf> NTRU Cryptosystems,Inc.,"The NTRU Public Key Cryptosystem−A Tutorial",[online]、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/ntrututorials.pdf> Nick Howgrave−Graham,Joseph H.Silverman,and William Whyte,"NTRU Cryptosystems Technical Report #004,Version 2,A Meet−In−The−Middle Attack on an NTRU Private Key",[online]、2003年、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/NTRUTech018.pdf>"The NTRU Public Key Cryptosystem−A Tutorial",[online]、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/NTRUTech004v2.pdf> Jeffery Hoffstein,Joseph H.Silverman,and William Whyte,"NTRU Cryptosystems Technical Report #012,Version 2,Estimated Breaking Times for NTRU Lattices",[online]、2003年、[2003年12月15日検索]、インターネット<URL:http://www.ntru.com/cryptolab/pdf/NTRUTech012v2.pdf>
しかしながら、上述した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のイデアルとしている。
特表2000−516733号公報 岡本龍明、山本博資、「現代暗号」、シリーズ/情報科学の数学、産業図書、1997. Jeffery Hoffstein, Jill Pipher, and Joseph H. Silverman, "NTRU: A ring based public key cryptosystem", Lecture Notes in Computer Science, 1423, pp.267−288, Springer−Verlag, 1998. Joseph H. Silverman, "NTRU Cryptosystems Technical Report #011, Version 2, Wraps, Gaps, and Lattice Constants", [online]、2001年3月15日、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/NTRUTech011_v2.pdf> Joseph H. Silverman, W. Whyte, "NTRU Cryptosystems Technical Report #018, Version 1, Estimating Decryption Failure Probabilities for NTRUEncrypt", [online]、2003年、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/NTRUTech018.pdf> NTRU Cryptosystems, Inc., "The NTRU Public Key Cryptosystem − A Tutorial", [online]、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/ntrututorials.pdf> Nick Howgrave−Graham, Joseph H. Silverman, and William Whyte, "NTRU Cryptosystems Technical Report #004, Version 2, A Meet−In−The−Middle Attack on an NTRU Private Key", [online]、2003年、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/NTRUTech018.pdf>"The NTRU Public Key Cryptosystem − A Tutorial", [online]、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/NTRUTech004v2.pdf> Jeffery Hoffstein, Joseph H. Silverman, and William Whyte, "NTRU Cryptosystems Technical Report #012, Version 2, Estimated Breaking Times for NTRU Lattices ", [online]、2003年、[2003年12月15日検索]、インターネット<URL: http://www.ntru.com/cryptolab/pdf/NTRUTech012v2.pdf>
しかしながら、上述した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 通信路

Claims (32)

  1. 所定の暗号方式に従い平文を暗号化して暗号文を生成する暗号装置と、前記所定の暗号方式に従い前記復号文を復号化して復号文を生成する復号装置とを備える暗号システムであって、
    前記復号装置は、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと(ここでa(modb)は、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の乗算を表す)
    ことを特徴とする暗号システム。
  2. 前記イデアルpはp=3*Rである
    ことを特徴とする請求項1記載の暗号システム。
  3. 前記環Rは多項式環である
    ことを特徴とする請求項1記載の暗号システム。
  4. 前記復号化部は、さらに前記復号文を生成する過程で出現する前記環Rの元に対し、復号エラー発生確率が低くなるような処理を施す
    ことを特徴とする請求項1記載の暗号システム。
  5. 前記復号エラー発生確率が低くなるような処理は、NTRU暗号方式におけるcenter1アルゴリズムまたはcenter2アルゴリズムである
    ことを特徴とする請求項4記載の暗号システム。
  6. 前記鍵生成部は、
    前記元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は、復号エラー発生有無を判定するエラー条件情報に基づいている
    ことを特徴とする、請求項1に記載の暗号システム。
  7. 前記エラー条件情報は、復号エラーが発生しないための条件を表す条件式である
    ことを特徴とする、請求項6に記載の暗号システム。
  8. 前記条件式は、Min(dg,d)+df<(qg−1)/p(ただし、Min(a,b)はaとbの小さい方の数を表す)である
    ことを特徴とする、請求項7に記載の暗号システム(ただし、Min(a,b)はaとbの小さい方の数を表す)。
  9. 前記非負整数dfは、前記元fのN次元配列の要素の値が1となる要素の数を規定するのに代えて、前記環Rの元FのN次元配列の要素の値が1となる要素の数を規定し、
    前記イデアルpは、前記環Rの元pgに対しp=pg*Rであり、
    前記秘密鍵は前記環Rの元(1+pg*F)である
    ことを特徴とする、請求項1に記載の暗号システム。
  10. 前記所定の暗号方式は、NTRU暗号方式である
    ことを特徴とする請求項1に記載の暗号システム。
  11. 所定の暗号方式に従い平文を暗号化して暗号文を生成する暗号装置であって、
    公開鍵及び加算、減算、乗算が定義されたN次元配列の集合である環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化部を備え、
    前記所定の暗号方式は、
    前記環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とする、暗号装置。
  12. 前記イデアルpはp=3*Rである
    ことを特徴とする請求項11記載の暗号装置。
  13. 前記環Rは多項式環である
    ことを特徴とする請求項11記載の暗号装置。
  14. 前記元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は、復号エラー発生有無を判定するエラー条件情報に基づいている
    ことを特徴とする請求項11記載の暗号装置。
  15. 前記エラー条件情報は、復号エラーが発生しないための条件を表す条件式である
    ことを特徴とする請求項14記載の暗号装置。
  16. 前記条件式は、Min(dg,d)+df<(qg−1)/p(ただし、Min(a,b)はaとbの小さい方の数を表す)である
    ことを特徴とする請求項15記載の暗号装置。
  17. 前記所定の暗号方式は、NTRU暗号方式である
    ことを特徴とする請求項11記載の暗号装置。
  18. 所定の暗号方式に従い暗号文を復号化して復号文を生成する復号装置であって、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成部と、
    前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化部とを備え、
    前記所定の暗号方式は、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とする復号装置。
  19. 前記イデアルpはp=3*Rである
    ことを特徴とする請求項18記載の復号装置。
  20. 前記環Rは多項式環である
    ことを特徴とする請求項18記載の復号装置。
  21. 前記復号化部は、さらに前記復号文を生成する過程で出現する前記環Rの元に対し、前記復号文が前記平文と等しくなる確率が高くなるような処理を施す
    ことを特徴とする請求項18記載の復号装置。
  22. 前記前記復号文が前記平文と等しくなる確率が高くなるような処理は、NTRU暗号方式におけるcenter1アルゴリズムまたはcenter2アルゴリズムである
    ことを特徴とする請求項21記載の復号装置。
  23. 前記元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は、復号エラー発生有無を判定するエラー条件情報に基づいている
    ことを特徴とする請求項18に記載の復号装置。
  24. 前記エラー条件情報は、復号エラーが発生しないための条件を表す条件式である
    ことを特徴とする請求項23記載の復号装置。
  25. 前記条件式は、Min(dg,d)+df<(qg−1)/p(ただし、Min(a,b)はaとbの小さい方の数を表す)である
    ことを特徴とする、請求項24記載の復号装置。
  26. 前記非負整数dfは、前記元fのN次元配列の要素の値が1となる要素の数を規定するのに代えて、前記環Rの元FのN次元配列の要素の値が1となる要素の数を規定し、
    前記イデアルpは、前記環Rの元pgに対しp=pg*Rであり、
    前記秘密鍵は前記環Rの元(1+pg*F)である
    ことを特徴とする、請求項18に記載の復号装置。
  27. 前記所定の暗号方式は、NTRU暗号方式である
    ことを特徴とする請求項18記載の復号装置。
  28. 平文を暗号化して暗号文を生成し、かつ前記復号文を復号化して復号文を生成する暗号方法であって、
    公開鍵及び加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成ステップと、
    前記公開鍵及び前記環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化ステップと、
    前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化ステップとを含むことを特徴とする暗号方法。
  29. コンピュータを、所定の暗号方式に従い平文を暗号化して暗号文を生成する暗号装置として機能させるためのプログラムであって、
    公開鍵及び加算、減算、乗算が定義されたN次元配列の集合である環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化部としてコンピュータを機能させ、
    前記所定の暗号方式は、
    前記環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とするプログラム。
  30. コンピュータを、所定の暗号方式に従い暗号文を復号化して復号文を生成する復号装置として機能させるためのプログラムであって、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成部と、
    前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化部としてコンピュータを機能させ、
    前記所定の暗号方式は、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とするプログラム。
  31. 所定の暗号方式に従い平文を暗号化して暗号文を生成する集積回路であって、
    公開鍵及び加算、減算、乗算が定義されたN次元配列の集合である環Rからランダムに選択した元rを使用して前記平文を暗号化して前記暗号文を生成する暗号化部を備え、
    前記所定の暗号方式は、
    前記環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とする集積回路。
  32. 所定の暗号方式に従い暗号文を復号化して復号文を生成する集積回路であって、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、f(mod p)の逆数である元Fpとを生成し、前記元gおよび前記元Fqの積と法をqとして合同である元hを公開鍵として生成し、前記元fおよび前記元Fpを得ることのできる情報を秘密鍵として生成する鍵生成部と、
    前記秘密鍵を使用して前記暗号文を復号化して前記復号文を生成する復号化部とを備え、
    前記所定の暗号方式は、
    加算、減算、乗算が定義されたN次元配列の集合である環Rと、前記環Rのイデアルp、qに対し、前記環Rの元f、gと、f(mod q)の逆数である元Fqと、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である
    ことを特徴とする集積回路。
JP2006512975A 2004-05-12 2005-04-28 暗号システム、暗号装置、復号装置、プログラムおよび集積回路 Active JP4786531B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006512975A JP4786531B2 (ja) 2004-05-12 2005-04-28 暗号システム、暗号装置、復号装置、プログラムおよび集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2004142022 2004-05-12
JP2004142022 2004-05-12
JP2006512975A JP4786531B2 (ja) 2004-05-12 2005-04-28 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
PCT/JP2005/008144 WO2005109379A1 (ja) 2004-05-12 2005-04-28 暗号システム、暗号装置、復号装置、プログラムおよび集積回路

Publications (2)

Publication Number Publication Date
JPWO2005109379A1 true JPWO2005109379A1 (ja) 2008-03-21
JP4786531B2 JP4786531B2 (ja) 2011-10-05

Family

ID=35320424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006512975A Active JP4786531B2 (ja) 2004-05-12 2005-04-28 暗号システム、暗号装置、復号装置、プログラムおよび集積回路

Country Status (6)

Country Link
US (1) US7773746B2 (ja)
EP (1) EP1746561A1 (ja)
JP (1) JP4786531B2 (ja)
KR (1) KR20070011293A (ja)
CN (1) CN100535962C (ja)
WO (1) WO2005109379A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954548B (zh) * 2005-04-18 2010-07-21 松下电器产业株式会社 签名生成装置及签名验证装置
KR100742093B1 (ko) * 2007-05-10 2007-07-24 인하대학교 산학협력단 엔티알유 암호화 및 복호화를 위한 다항식 컨볼루션 연산방법
CN101321058B (zh) * 2007-06-07 2010-12-15 管海明 一种用于编码和译码数字消息的方法和系统
US8964971B2 (en) 2007-07-17 2015-02-24 Certicom Corp. Method of providing text representation of a cryptographic value
JP2009278223A (ja) * 2008-05-13 2009-11-26 Panasonic Corp 電子証明システム及び秘匿通信システム
US8045708B2 (en) * 2008-05-21 2011-10-25 Apple Inc. Discrete key generation method and apparatus
CN105337737B (zh) * 2014-07-03 2018-11-20 华为技术有限公司 公钥加密通信方法和装置
US9942031B2 (en) 2014-09-03 2018-04-10 Research Foundation Of The City University Of New York System and method for private-key fully homomorphic encryption and private search between rings
US11164484B2 (en) * 2017-01-20 2021-11-02 Nippon Telegraph And Telephone Corporation Secure computation system, secure computation device, secure computation method, and program
CN107592203A (zh) * 2017-09-25 2018-01-16 深圳技术大学筹备办公室 一种基于格的聚合签名方法及其系统
CN109450634B (zh) * 2018-10-18 2020-03-31 南京大学 Rsa公钥分解和解密方法及系统
KR102160294B1 (ko) * 2019-02-15 2020-09-28 주식회사 크립토랩 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
WO2020166879A1 (en) 2019-02-15 2020-08-20 Crypto Lab Inc. Apparatus for performing threshold design on secret key and method thereof
CN110175067B (zh) * 2019-03-05 2023-06-13 广东电网有限责任公司信息中心 一种移动应用立体防御方法和系统
CN113391576A (zh) * 2020-03-13 2021-09-14 苏州拉普斯自动化有限公司 一种基于物联网的信息物理系统及方法
CN111767532A (zh) * 2020-06-12 2020-10-13 上海橙群微电子有限公司 编程器鉴权方法和鉴权系统
US11522674B1 (en) * 2021-09-09 2022-12-06 Aires Investment Holdings Private Limited Encryption, decryption, and key generation apparatus and method involving diophantine equation and artificial intelligence
KR102595938B1 (ko) * 2021-12-02 2023-10-30 조선대학교산학협력단 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템을 위한 다항식 역원 생성 장치 및 방법
KR102600166B1 (ko) * 2021-12-02 2023-11-08 조선대학교산학협력단 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템에서 사용되는 다항식의 역원을 생성하기 위한 역원 생성 장치 및 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2263588C (en) * 1996-08-19 2005-01-18 Ntru Cryptosystems, Inc. Public key cryptosystem method and apparatus
GB0013398D0 (en) 2000-06-01 2000-07-26 Tao Group Ltd A method of protecting a cryptosystem from a multiple transmission attack
GB0013399D0 (en) 2000-06-01 2000-07-26 Tao Group Ltd Decryption of cipher polynomials
EP1569378A4 (en) * 2002-12-03 2006-08-02 Matsushita Electric Ind Co Ltd TOGETHER FOR USING KEYS, PRODUCING EQUIPMENT FOR SHARED KEYS, AND RESTORING KEYS TO SHARED KEYS
JP4567364B2 (ja) 2003-04-24 2010-10-20 パナソニック株式会社 パラメータ生成装置、暗号化システム、復号化システム、暗号装置、暗号化方法、復号化方法、およびプログラム
KR101024768B1 (ko) 2003-04-24 2011-03-24 파나소닉 주식회사 파라미터 생성 장치, 암호 시스템, 복호 시스템, 암호장치, 복호 장치, 암호화 방법, 복호화 방법, 및 그프로그램

Also Published As

Publication number Publication date
EP1746561A1 (en) 2007-01-24
CN100535962C (zh) 2009-09-02
KR20070011293A (ko) 2007-01-24
US20070274518A1 (en) 2007-11-29
JP4786531B2 (ja) 2011-10-05
CN1922643A (zh) 2007-02-28
WO2005109379A1 (ja) 2005-11-17
US7773746B2 (en) 2010-08-10

Similar Documents

Publication Publication Date Title
JP4786531B2 (ja) 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
KR101027199B1 (ko) 키공유 시스템, 공유키 생성장치 및 공유키 복원장치
JP5257357B2 (ja) 鍵生成装置、暗号化装置及び復号装置
JP4620669B2 (ja) 署名生成装置、署名検証装置、それらの方法、および集積回路
JP4611305B2 (ja) 情報伝達システム、暗号装置及び復号装置
Wang et al. Proxy re-encryption schemes with key privacy from LWE
US7929688B2 (en) Parameter generation apparatus, encryption system, decryption system, encryption apparatus, decryption apparatus, encryption method, decryption method, and program thereof
US20100046745A1 (en) Encrypting apparatus, decrypting apparatus, cryptocommunication system, and methods and computer program products therefor
US11288985B2 (en) Encryption device, decryption device, encryption method, decryption method, encryption program product, and decryption program product
US20100046741A1 (en) Apparatus, method, and computer program product for decrypting, and apparatus, method, and computer program product for encrypting
CN105339995A (zh) 解密装置、解密能力提供装置、其方法、以及程序
US20210226791A1 (en) Encryption system, encryption apparatus, decryption apparatus, encryption method, decryption method, and program
US7321658B2 (en) Padding application method ensuring security of cryptosystem and encryptor/decryptor
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP4567364B2 (ja) パラメータ生成装置、暗号化システム、復号化システム、暗号装置、暗号化方法、復号化方法、およびプログラム
JP4485175B2 (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
WO2017203743A1 (ja) 暗号化装置、復号装置及び暗号システム
JP7486688B2 (ja) 暗号文変換システム、暗号文変換方法、及び暗号文変換プログラム
JP5912281B2 (ja) 復号結果検証装置、方法、システム及びプログラム
KR101932032B1 (ko) 선형 길이의 암호문을 가지는 다항식 함수 암호화 방법
Orsini et al. Bootstrapping BGV ciphertexts with a wider choice of p and q
JP2010068293A (ja) 秘密情報を用いて演算する装置、方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110526

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110713

R150 Certificate of patent or registration of utility model

Ref document number: 4786531

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3