專利名稱:公用密鑰密碼系統(tǒng)方法及設(shè)備的制作方法
本申請要求US臨時專利申請No.60/024133(1996年8月19日遞交)的優(yōu)先權(quán),所述臨時專利申請在此結(jié)合用作參考。
本發(fā)明是關(guān)于信息的編碼和譯碼,較具體說是關(guān)于由處理器系統(tǒng)對數(shù)字消息加密和解密的公用密鑰密碼系統(tǒng)。
在二當(dāng)事方之間例如在二計算機間進(jìn)行安全的數(shù)據(jù)交換需要加密。在當(dāng)今的應(yīng)用中有兩種通用的加密方法,專用密鑰加密和公用密鑰加密。在專用密鑰加密中,二當(dāng)事方私下地交換欲用于編碼和譯碼的密鑰。廣泛應(yīng)用的專用密鑰密碼系統(tǒng)的示例為DES,Data EncryptionStandard(數(shù)據(jù)加密標(biāo)準(zhǔn))。這樣的系統(tǒng)可以非??焖俸头浅0踩?,但它們具有二當(dāng)事方必須私下秘密交換他們的密鑰的缺陷。
公用密鑰密碼系統(tǒng)是一種各當(dāng)事方可公開他們的編碼過程而不致危及譯碼過程的安全性的密碼系統(tǒng)。此編碼過程通常被稱做陷井門(trap-door)功能。公用密鑰密碼系統(tǒng)盡管通常要較之專用密鑰密碼系統(tǒng)慢,仍被用于傳送小量的數(shù)據(jù)例如信用卡號,還用來傳送隨后用于專用密鑰編碼的專用密鑰。
到目前為止已建議并實現(xiàn)多種陷井門功能用于公用密鑰密碼系統(tǒng)。
一種已被用于生成公用密鑰密碼系統(tǒng)的陷井門功能涉及到在一集中取冪,即就是,取一集的一個元素并利用此集運算使此元素重復(fù)自乘。最經(jīng)常選擇的集是對大素數(shù)p和q的乘積集模Pq,雖然也描述過其他的集例如橢圓曲線,阿貝爾簇,和偶然非交換的矩陣集。但是,這種陷井門功能要求大素數(shù),在各自約100位,使得密鑰生成十分繁重,而用于編碼和譯碼的求冪過程計算強度很大,要求作許多成百位數(shù)并約N3次運算的乘算以對N位的消息進(jìn)行編碼或譯碼。
已被用來生成公用密鑰密碼系統(tǒng)的第二種陷井門功能是基于確定一組中哪些數(shù)為二次冪,通常為對大素數(shù)p和q的乘積集模Pq。正如同在第一種中那樣,密鑰生成很繁重而編碼和譯碼計算強度很大,需要約N3次操作來編碼或譯碼由N位組成的消息。
第三種陷井門功能涉及到一集中的離散對數(shù)問題,一般為乘積集或橢圓曲線模大素數(shù)p。仍然是密鑰生成很繁雜,因為素數(shù)p需要至少150位且p-1必須具有一大的素數(shù)因子,且這樣的系統(tǒng)使用取冪,所以仍需要約N3次操作來編碼和譯碼由N位組成的消息。
第四種已被用來生成公用密鑰密碼系統(tǒng)的陷井門功能是基于漸縮、或子集求和問題。這些功能利用一半集,正常為在相加中的正整數(shù)的半集。這一類型的許多公用密鑰密碼系統(tǒng)已被利用格還原技術(shù)所突破,所以它們不再被認(rèn)為是安全的系統(tǒng)。
第五種已被用來生成公用密鑰密碼系統(tǒng)的陷井門功能是基于差錯校正碼,特別是Goppa碼。這些密碼系統(tǒng)利用對一有限域上的線性代數(shù),通常此域具有二個元素。存在有對這些密碼系統(tǒng)的線性代數(shù)攻擊,所以用于安全的密碼系統(tǒng)的密鑰為一大的矩形矩陣,約400000位。這對大多數(shù)應(yīng)用均過大。
第六種已被用來生成公用密鑰密碼系統(tǒng)的陷井門功能是基于找出一很大維數(shù)N的格中極短的基底向量的困難。用于這樣的系統(tǒng)的密鑰具有約N2位的長度,這對許多應(yīng)用均太大。另外,這些格還原公用密鑰密碼系統(tǒng)很新,所以它們的安全性尚未得到完全的研究。
因此,大多數(shù)用戶將發(fā)現(xiàn)具有一種將相對短的易于生成的密鑰與相對高速的編碼和譯碼過程相結(jié)合的公用密鑰密碼系統(tǒng)是可取的。
本發(fā)明的目的之一是提供一其密鑰相對很短且易于生成而且其編碼和譯碼過程可快速地進(jìn)行的公用密鑰加密系統(tǒng)。其另一個目的是提供一公用密鑰密碼系統(tǒng),它具有相對低的存貯器需求和依賴于各種許可在均衡密級、密鑰長度、編碼和譯碼速度、存貯器需求、和帶寬方面具有顯著的靈活性的參數(shù)。
本發(fā)明使得能基本上隨機地從一很大組向量中選擇密鑰,其密鑰長度與其他公用密鑰密碼系統(tǒng)的密鑰長度不相上下,并描寫恰當(dāng)?shù)?例如對當(dāng)前環(huán)境為-280)密級的特征,和提供較之最廣泛應(yīng)用的公用密鑰密碼系統(tǒng)、即上面引用的取冪密碼系統(tǒng)快1至2個數(shù)量級的編碼和譯碼過程。
本發(fā)明的公用密鑰密碼系統(tǒng)一實施例的編碼技術(shù)采用一基于多項式代數(shù)及換算模2數(shù)p和q的混合系統(tǒng),而譯碼技術(shù)則采用其有效性取決于基本概率論的分離系統(tǒng)。其公用密鑰密碼系統(tǒng)的安全性來自于多項式混合系統(tǒng)與換算模p和q的獨立性的交互作用。安全性還依賴于這樣的在經(jīng)驗上觀察到的事實,即對于大多數(shù)格,如果存在有大量的僅適度地比最短的向量要長的向量,要找出最短的向量是極為困難的。
本發(fā)明的一實施例為一種用于編碼和譯碼數(shù)字消息m的方法形式,包括下列步驟選擇環(huán)R的理想數(shù)p和q;生成環(huán)R的元素f和g,生成作為f(mod q)的反量的元素Fq,和產(chǎn)生f(modp)的反量的元素Fp;產(chǎn)生一包括h的公用密鑰,其中h,使用g和Fq推導(dǎo)得的乘積對mod q同余,;產(chǎn)生一由其能推導(dǎo)得f和Fp的專用密鑰;利用公用密鑰和一隨機元素φ對消息進(jìn)行編碼來產(chǎn)生一編碼消息e;和利用專用密鑰譯碼此編碼消息來產(chǎn)生一譯碼消息。
由以下結(jié)合所列附圖的詳細(xì)說明對本發(fā)明的另外的特征和優(yōu)點將會更清楚地理解。
對附圖的簡要說明
圖1為能被用于實踐本發(fā)明實施方案的系統(tǒng)方框圖;圖2為當(dāng)結(jié)合其中所引用的輔助流程圖時,能用于實現(xiàn)本發(fā)明實施方案的公用密鑰密碼系統(tǒng)的流程圖;圖3為按照本發(fā)明一實施例的,用于生成公用和專用密鑰的例行程序的流程圖4為按照本發(fā)明一實施例的,用于使用一公用密鑰來編碼消息的流程圖;圖5為按照本發(fā)明一實施例的,用于使用一專用密鑰對編碼消息進(jìn)行譯碼的流程圖;圖6為按照本發(fā)明另一實施例的,用于生成公用和專用密鑰的例行程序的流程圖;圖7為按照本發(fā)明另一實施例的,用于使用公用密鑰來編碼消息的流程圖;和圖8為按照本發(fā)明另一實施例的,用于使用專用密鑰對編碼消息進(jìn)行譯碼的流程圖。
圖1為一可被用于實踐本發(fā)明的實施例的系統(tǒng)的方框圖?;谔幚砥鞯膬勺酉到y(tǒng)105和155被表示為通過一不安全的信道50通信,后者可以是例如象一電話或互聯(lián)網(wǎng)通信信道之類的任何有線或無線通信信道。子系統(tǒng)105包括有處理器110而子系統(tǒng)155包括處理器160。當(dāng)以將說明的方式編程時,處理器110和160以及它們的相關(guān)電路能用來實現(xiàn)本發(fā)明一實施例和實踐本發(fā)明的方法的一實施方案。處理器110和160各自可為任何適當(dāng)?shù)奶幚砥?,例如一電子?shù)字處理器或微處理器,將會理解,任何通用的或?qū)S玫奶幚砥鳎蚱渌茈娮拥?、光學(xué)地、或其它措施地執(zhí)行這里所述功能的機器或電路均可采用。處理器可以是例如Intel Pentium處理器。子系統(tǒng)105一般將包括存貯器123,時鐘和定時電路121,輸入/輸出功能118和監(jiān)視器125,它們?nèi)靠梢允浅R?guī)的類型。輸入可以包括被表示為103的鍵盤輸入。通信經(jīng)由可包括調(diào)制解調(diào)器或任何適用于作信號通信的裝置的發(fā)送接收器135進(jìn)行。
這一示范性實施例中的子系統(tǒng)155可具有類似于子系統(tǒng)105的結(jié)構(gòu)。處理器160具有相關(guān)的輸入/輸出電路164,存貯器168,時鐘和定時電路173,和監(jiān)視器176。輸入包括鍵盤155。子系統(tǒng)155與外部世界的通信通過發(fā)送接收器162,后者仍然可包括一調(diào)制解調(diào)器或任何適用于作信號通信的裝置。
這里的公用密鑰密碼系統(tǒng)的一實施例的編碼技術(shù)采用基于多項式代數(shù)和換算模2數(shù)P和q的混合系統(tǒng),而譯碼技術(shù)則采用其有效性取決于基本概率理論的分離系統(tǒng)?!矊斫猓硕囗検绞怯行蛳禂?shù)的通常的表達(dá)式(一具有N個有序系數(shù)、其中一些可以為零的N-1次多項式),和處理器將對系數(shù)進(jìn)行所指定的運算?!尺@里的公用密鑰密碼系統(tǒng)的安全性來自多項式混合系統(tǒng)與換算模P和g的獨立性的交互作用。安全性還依賴于經(jīng)驗上觀察到的事實,對于大多數(shù)格,如果存在有大量的僅僅稍長于最短向量的向量的話,將很難找到最短的向量。
這里的密碼系統(tǒng)適應(yīng)一概率密碼系統(tǒng)的總框架,如下列文獻(xiàn)中所描述的M.Blum等的“An Efficient Probabilistic Public-key EncryptionScheme Which Hides All Partial Information”(Advances in Cryptology:Proceedings of CRYPTO 84,Lecture Notes in Computer Science,Vol.196,Springer-Verlag,1985,pp.289-299)和S.Goldwasser等del“ProbabilisticEncryption”,J.Computer and Systems Science 28(1984),270-299。這就是說,加密包括一隨機元素,從而各消息具有許多種可能的加密。編碼和譯碼及密鑰生成相當(dāng)快和易于采用這里的技術(shù),其中,編碼或譯碼一長度N的消息塊需作O(N2)次運算,使其大大快于RSA所需的O(N3)次運算。密鑰長度為O(N),它能很好地匹敵其他“快速”公用密鑰系統(tǒng)所需的O(N2)密鑰長度,例如下列所述的這些系統(tǒng)R.J.McEliece“A Public-key Cryptosystem Based on Algebraic CodingTheory”,JPL Pasadena,DSN Progress Reports 42-44(1978),114-116;和O.Goldreich等“Public-key Cryptosystems From Lattice ReductionProblems”,MIT-Laboratory for computer Science preprint,November1996。
這里的密碼系統(tǒng)的一實施例取決于4個整數(shù)參數(shù)(N,K,P,q)和3組帶整系數(shù)的N-1次多項式的L9、Kφ、Lm。該實施例在環(huán)R=Z[X]/(XN-1)中工作,一元素F∈R將被置成為一多項式或向量,F(xiàn)=Σi=1NFiXN-i=[F1,F2,...,FN].]]>星號“*”指R中的乘算。此星號乘算被明確地給作為循環(huán)卷積積,F(xiàn)*G=H,其中Hk=Σi=1k-1FiGk-i+Σj=kNFiGN+k-i=ΣFiGj.i+j=k(modN)]]>當(dāng)進(jìn)行一乘算模(例如)q時,系數(shù)為換算的模q。進(jìn)一步可參看附錄1。
下面為公用密鑰密碼系統(tǒng)按照本發(fā)明一實施方案的示例。為易于說明采用非常小的數(shù),因而此例將不是密碼保密的。結(jié)合此例描述作為雙括號(〖〗)中的內(nèi)容的將在當(dāng)前情況下提供一實際密碼保密密碼系統(tǒng)的操作參數(shù)。對為達(dá)到特定密級的操作參數(shù)的進(jìn)一步討論在附錄1中進(jìn)行,它還描述這里的密碼系統(tǒng)的一實施例對各種不同類型攻擊的抗干擾程度。
在此一實施例中所使用的目標(biāo)是一N-1次的多項式。a1XN-1+a2XN-2+…+aN-1X+aN.
其中系數(shù)a1,…aN為整數(shù)。在這里的“星號”乘算中,XN由1代替,XN+1由X代替,和Xn-2由X2代替,等等?!惨欢囗検竭€由一N元組數(shù)來表示。在這樣的情況中星號積也稱之為卷積積。對于大值N,利用快速傅里葉變換方法計算卷積積較快,其以NlogN步的數(shù)量級替代N2步。〕例如,取N=5和二個示例多項式,此星號乘算給出(X4+2X2-3X+2)*(2X4+3X3+5X-1)=2X8+3X7+4X6+5X5-6X4+16X3-17X2+13X-2=2X3+3X2+4X+5X-6X4+16X3-17X2+13X-2=-6X4+18X3-14X2+17X+3〖一安全系統(tǒng)可采用例如N=167或N=263〗[此實施例采用帶整數(shù)系數(shù)模的多項式的環(huán),由所有XN-1的倍數(shù)組成的理想子環(huán)。較普遍地,可利用多項式模不同的理想子環(huán),而更較普遍地,可采用某些其他環(huán)R。關(guān)于環(huán)和理想數(shù)的進(jìn)一信息,可參考例如I.N.Herstein的Topics in Algebra。]本實施例的另一方面涉及簡化多項式模整數(shù)、例如理想數(shù)q的系數(shù)。這基本上是意味著將各系數(shù)除以q并以其余數(shù)來代替此系數(shù)。例如,如果q=128和如果某些系數(shù)為2377,則該系數(shù)將以73代替,因為2377除以128等于18,余數(shù)為73。但采用“中心余數(shù)”更方便。這就是說,如果此余數(shù)在0與q/2之間,即不作處理,但如果它在q/2與q之間,則由其減去q。因而,利用對q=128的中心余數(shù),2377將被一55所代替,因為-55=73-128。
為了指明這一余數(shù)處理正在進(jìn)行,隨同標(biāo)記“mod q”使用一個三等號符號(≡)。下面為一將兩個多項式的星號乘算與換算模5加以組合。答案用中心余數(shù),(X4+2X2-3X+3)*(2X4+3X3+5X-1)=-6X4+18X3-14X2+17X+3=-X4-2X3+X2+2X-2(mod 5),在按照這里一實施例生成一公用密鑰密碼系統(tǒng)(并帶有采用先前指出的為便于說明的小數(shù))中,第一步是選擇整數(shù)參數(shù)N、K、P和q。例如取,N=5,K=1,P=3,q=128。
〖一安全系統(tǒng)可利用例如N=167,K=6,P=3,q=216=65536〗最好P與q互為素數(shù),即就是它們沒有大于1的公因數(shù)。使理想數(shù)P和q成為互為素數(shù)的需要性的討論被表示在附錄1中。
某些多項式組可作如下選擇Lg={系數(shù)為數(shù)個-2、-1、0、1、和2的多項式}Lφ={具有2個-1、2個1和1個0作為系數(shù)的多項式}Lm={系數(shù)為數(shù)個-1、0和1的多項式}〖一安全系統(tǒng)可利用例如Lg={系數(shù)在-177與177之間的多項式}Lφ={系數(shù)為40個1、40個-1、其余為0的多項式}Lm={系數(shù)在-1與3之間的多項式}(注這些多項式具有次數(shù)N-1,所以對此例的安全參數(shù),此些多項式的次數(shù)為166。而且,被編碼的實際消息m的系數(shù)被p除時(此例中P=3)該實際消息m由余數(shù)組成。)〗集Lg被用來為密碼系統(tǒng)生成密鑰,集Lφ用于編碼消息,而集Lm是可能的消息集。例如,2X4-X3+X-2在集Lg中,和X4-X3-X2+1在集Lφ中。
為實現(xiàn)這一例的密鑰生成,密鑰生成器,稱之為Dan,從集Lg選擇兩個多項式f和g。在此簡化例中K=1,所存在有一個多項式g。假定該Dan選擇f=X4-X3+2X2-2X+1g=X4-X3+X2-2X+2〖一安全系統(tǒng)可例如使用K+1個多項式f,g1,…gk∈Lg,K=6?!竭@里的要求是f必須具有一反模q和一反模D。其意思就是必須有多項式Fq和Fp以使得Fq*f≡1(mod q)和Fp*f≡1(mod p)。
可利用公知的Euclidean算法來計算Fq和Fp。例如可參看附錄Ⅱ。(有些f可能沒有反量,在此情況下Dan將必須返回選擇另一f)。對于上例f,可得到
Fq=103X4+29X3+116X2+79X+58Fp=2X4+2X為檢查這是用于f的正確Fq,可作乘算Fq*5=(103X4+29X3+116X2+79X+58)*(X4-X3+2X2-2X+1)=256X4+256X-127≡1(mod 128)。
同樣,為檢查Fp是正確的,可作乘算Fp*f=(2X4+2X)*(X4-X3+2X2-2X+1)=6X3-6X2+6X-2≡1(mod3)。
現(xiàn)在密鑰生成器Dan準(zhǔn)備生成他的公用密鑰,這是下式給出的多項式h,h≡fq*g(modq)〖一安全系統(tǒng)可使用例如K個多項式h1,…,hk,如下h1=Fg*gi(mod q),i=1,2,…k,K=60〗繼續(xù)此例,Dan將計算Fq*g=(103X4+29X3+116X2+79X+58)*(X4-X3+X2-2X+2)=243X4-50X3+58X2+232X-98=-13X4-50X3+58X2-24X+30(mod128)。
這樣Dan的公用密鑰即是多項式h=-13X4-50X3+58X2-24X+30。
Dan的專用密鑰為多項式對(f,Fp)。原理上,多項式f自身可以起到專用密鑰的功用,因為Fp總能由f計算,但在實踐中,Dan多半要預(yù)先計算和存放Fp。
在此例的下一部分,說明以此公用密鑰進(jìn)行編碼。假定編碼器,稱之為Cathy,要使用他的公用密鑰h發(fā)送消息給Dan。她由可能的消息集Lm選擇一消息。例如,假定她想發(fā)送消息。
M=X4-X3+X2+1為對此消息編碼,她從集Lφ隨機地選擇一多項多φ。例如她選擇φ=-X4+X3-X2+1她使用這一隨機選擇的多項式φ、Dan的公用密鑰h(以及p和g,它們是該公用密鑰的部分)、和她的明文消息m以利用下式生成編碼消息e≡pφ*h+m(mod q)〖一安全系統(tǒng)可使用k個公用密鑰h1,…h(huán)k,對此安全例K=6。為對消息進(jìn)行編碼,Cathy可由集Lφ隨機選擇K個多項式φ1,…φK,然后通過計算e≡pφ1*h1+pφ2*h2+…+pφk*hk+m(mod q)生成被編程的消息?!揭惶娲桨甘亲宧等于pFq*g(mod q),然后可利用公式e≡φ*h+m(mod q)來對消息進(jìn)行編碼。對于本實施例,Cathy計算pφ*h+m=3(-x4+x3-x2+1)*(-13x4-50x3+58x2-24x+30)+(x4-x3+x2+1)=-374x4+50x3+196x2-357x+487=10x4+50x3-60x2+27x-25(mod128)所以Cathy的編碼消息為多項式e=10X4+50X3-60X2+27X-25她將此編碼消息發(fā)送給Dan。
在此例的下一部分,說明使用此專用密鑰進(jìn)行譯碼。為對消息e進(jìn)行譯碼,Dan首先使用他的專用密鑰f計算多項式a≡f*e(mod q)。
對所使用的示例,他計算f*e=(x4-x3+2x2-2x+1)*(10x4+50x3-60x2+27x-25)=-262x4+259x3-124x2-13x+142=-6x4+3x3+4x2-13x+14(mod128),故多項式a即為a=-6X4+3X3+4X2-13X+14。下面,Dan使用Fp,他的專用密鑰的另一半,來計算Fp*a(mod p),而結(jié)果就將是譯碼的消息。這樣,對本示例Dan計算Fp*a=(2x4+2x)*(-6x4+3x3+4x2-13x+14)=34x4-4x3-20x2+36x-38=x4-x3+x2+1(mod3),對于譯碼工作的進(jìn)一步說明可參看附錄Ⅰ。
在本發(fā)明的又一實施例中,該環(huán)為一矩陣環(huán)。例如可利用環(huán)R=(具有整數(shù)系數(shù)的M×M矩陣的環(huán))。
R的一元件如下所示
這里系數(shù)aij為整數(shù)。對于矩陣通常應(yīng)用加算和乘算,將可理解,處理器處理矩陣單元以任何通常方式存貯和處理的數(shù)。假定N=M2,則R中的矩陣具有N個系數(shù)。選擇互為素數(shù)的p和q。
在此情況下,為生成一專用密鑰,Dan從R選擇K+2個矩陣。這些矩陣可被稱為f,g,W1,W2,…Wk。
這些矩陣應(yīng)具有特性,即f、g、W1、…Wk均具有相當(dāng)小的系數(shù),而每一個Wi均滿足
Wi≡0(mod p)。
(換言之,每一Wi的每個系數(shù)是P的倍數(shù)。)為生成他的密鑰,Dan必須求得f和g模p和q的反量。這樣,他求得R中的矩陣Fp、Fq、Gp、Gq滿足fFp≡Ⅰ(mod p)fFq≡Ⅰ(mod q)gGq≡Ⅰ(mod p)gGq≡Ⅰ(mod q)其中Ⅰ為M×M全同矩陣。通常,這是很容易做的,而如果由于某種原因有一個反量不存在,Dan就要選擇一新的f或g。
Dan的公用密鑰是一系列由條件Hi≡FqWiGq(mod q)i=1,2,…k確定的K個矩陣(h1,h2,…h(huán)k)。(應(yīng)指出這些W1、零對模P同余。)他的專用密鑰是4個矩陣(f,g,Fp,Gp)。原則上,f和g可單獨被用作為專用密鑰,但實踐中更有效的是預(yù)先計算和存貯Fp、Gp。
下面說明這一矩陣實例的編碼。假定Cathy要編碼一消息m。消息m是一帶有系數(shù)模P的矩陣。為了編碼她的消息,她隨機選擇滿足某些條件的一些整數(shù)φ1,…φk,例如它們可被選擇為其總和φ1+…+φk等于一預(yù)定值d的非負(fù)數(shù)整數(shù)。(應(yīng)指出這些φi為普通整數(shù),它們不是矩陣。同樣地,它們可被看作為此同一矩陣的倍數(shù),故它們將用環(huán)R的每一元素進(jìn)行轉(zhuǎn)換。)選擇φi后,Cathy按下列規(guī)則生成其編碼消息ee≡φ1h1+φ2h2+…+φkhk+m(mod q)下面說明這一矩陣實例的譯碼。現(xiàn)在假定Dan接收到此編碼消息e并希望對之解密。他以計算滿足a≡feg(mod q)的矩陣a開始。照常,Dan在某些受限范圍內(nèi)選擇a的系數(shù),例如從一q/2至q/2(即0為中心的系數(shù)),或由0至q-1。
如果參數(shù)選擇適當(dāng),則矩陣a將準(zhǔn)確地等于總和a=φ1W1+φ2W2+…φxWx+fmg.
(這將總是正確模,但關(guān)鍵點在于如果q足夠大則它將是一確切的等式,而不僅僅模q。)Dan在下一步產(chǎn)生a模p,例如b≡a(mod p)。
由于這些Wi的所有系數(shù)均是可由p相除的,這就是說b≡fmg(mod p),最后Dan計算FpbGp(mod p)來恢復(fù)原始消息m。
所述M×M矩陣實施例具有優(yōu)越的運算時間。譯碼僅需用加算和進(jìn)行M2次運算。譯碼需要兩個矩陣乘算M×M矩陣,故需進(jìn)行M3次運算。消息長度約為M2,所以如果N指自然消息長度(即N=M2),則此矩陣實施例需要0(N)步來編碼和(N3/2)步來譯碼。為進(jìn)行比較,該多項式實施例需要0(N2)步來編碼和0(N2)步來譯碼,且RSA公用密鑰系統(tǒng)需要0(N3)步來編碼和0(N3)步來譯碼。
初步分析認(rèn)為,只有在此矩陣實施例上的自然格攻擊需要使用大小為N2+N(或更大)的格。這將是對用來攻擊多項式實施例的2N大小的格的顯著的安全改善。
為避免強力的(或會聚于中心的)攻擊,用于這些φi的取樣空間就必須相當(dāng)大,例如在2100與2200之間。但這不難達(dá)到。例如,如果這些φi被選擇為具有總和d的非負(fù)數(shù)的,則此取樣空間具有(d+K-1K-1)=(d+K-1)!d!(k-1)!]]>元素。所以如果取例如K=15和d=1024,則得到2103.8個元素的取樣空間。
公用密鑰大小為KM2Log2(q)位,而專用密鑰大小為2M2Log2(pq)位。這二者均是實用的大小。
圖2說明一公用密鑰密碼系統(tǒng)可采用的基本程序,并涉及由描述按照本發(fā)明一實施方案的特點的其他的引用流程圖所說明的例行程序???10表示公用密鑰和專用密鑰信息的生成,和此公用密鑰的“公布”。這里的一實施例的例行程序結(jié)合圖3的流程圖加以說明。在本例中,可以假定這一操作是在處理器系統(tǒng)105進(jìn)行的。公用密鑰信息可加以公布,亦即,使得它可為專用密鑰持有者希望由其接收被加密消息的任一公眾或任何期望的團(tuán)體所得到。一般,雖然并不一定,公用密鑰可在一中央公用密鑰庫設(shè)施或保持有公用密鑰持有者及其公用密鑰的目錄的網(wǎng)址上獲得。在本示例中,假定處理器系統(tǒng)155的用戶要發(fā)送一秘密消息給處理器系統(tǒng)105的用戶,且處理器系統(tǒng)155的用戶知道處理器系統(tǒng)150用戶的已公布的公用密鑰。
框240表示可由消息發(fā)送者(即此例中處理器系統(tǒng)155的用戶)用來利用期望的消息接收者的公用密鑰對明文消息進(jìn)行編碼的例行程序。按照本發(fā)明一實施例,此例行程序被結(jié)合圖4的流程圖加以說明。經(jīng)加密的消息被通過信道50進(jìn)行傳送(圖1)。
圖2的框260表示為對此加密消息進(jìn)行譯碼來復(fù)原明文消息的例行程序。在本示例中,這一功能由應(yīng)用專用密鑰信息的處理器系統(tǒng)105的用戶執(zhí)行。對本發(fā)明一實施例,此譯碼例行程序接合圖5的流程圖被加以說明。
現(xiàn)在參看圖3,表明由圖2的框210總地表示的為生成公用密鑰和專用密鑰的例行程序的流程圖。在本例中此例行程序可被用于對處理器系統(tǒng)105的處理器110進(jìn)行編程???05表示整數(shù)參數(shù)N、P和q的選擇。如以上最先說明的,N確定要生成的多項式f和gi的次數(shù),而p和q則分別為在產(chǎn)生星號乘積中所用的二個理想數(shù)???15表示要被使用的多項式gi的數(shù)量的K的選擇。在上述簡化例中K為1,并已指出一特定的示例的相對安全系統(tǒng)可采用K=6。接著,框325表示隨機多項式f、g1、g2、…gk的選擇。這些系數(shù)可利用例如一隨機數(shù)發(fā)生器來選擇,后者可以公知方式利用可得到的硬件或軟件來實現(xiàn)。本實施例中,每一處理器系統(tǒng)均設(shè)置有分別在圖1中框130和185指示的隨機數(shù)發(fā)生器。
框340表示對前面選擇的多項式f以上述方式應(yīng)用Euclidean算法來確定反量,F(xiàn)q和Fp,假如這些反量存在的話。如果Fp、Fq不存在,重新進(jìn)入框325,選擇一新的多項式f。循環(huán)330繼續(xù)直至選擇到可為之計算所規(guī)定的反量的多項式〔對一給定多項式存在有反量的概率是相當(dāng)高的,所以在條件符合之前一般均可期望一相當(dāng)小數(shù)量的通過循環(huán)330的經(jīng)歷?!扯筮M(jìn)入框350,此框表示按照h=Fq*g(mod q)的公用密鑰h的計算,如以上最先說明的?!矊τ贙>1,將有公用密鑰成分hi,i=1,2,…k?!橙缈?60中所表示的,專用密鑰被保持作為多項式f、Fp,而后可公布公用密鑰,如框370所表示的。
圖4是一總地由圖2中的框240表示的,用于編程一處理器例如處理器系統(tǒng)155(圖1)的處理器160來實現(xiàn)對明文消息m的編碼的例行程序的流程圖。欲加編碼的消息被輸入(框420)并選擇一隨機多項式φ(框430)。[如果k>1,則選擇K個隨機多項式φ1,φ2…φk]。此多項式可如上述地來自集Lφ,且可任何硬件或軟件手段例如隨機數(shù)發(fā)生器185選擇隨機系數(shù)。然后可計算編碼消息e(框450),e=pφ*h+m(mod q)如以上最先指出的,對于k>1,編碼消息將為e=pφ1*h1+pφ2h2+…+pφkhk+m(mod q)。此編碼消息可通過信道50被傳送到在本示例中為處理器系統(tǒng)105的用戶的密鑰持有者(框460)。
圖5為一總地由圖2中框260所表示的,按照本發(fā)明一實施例的用于對經(jīng)加密消息進(jìn)行譯碼的例行程序的流程圖。框530表示加密消息e的接收。提取包括先前定義的多項式f和Fp以及整數(shù)N、P和q的保存的專用密鑰信息(框550)。接著,框570表示計算a≡f*e(mod q)然后可計算這里被指明為m’的譯碼消息(框580)m’≡Fp*a(mod p)。
圖6、7和8為關(guān)于上述矩陣實施例的流程圖,圖6為由圖2方框210總地表示的,用于生成公用和專用密鑰的例行程序的流程圖。如上述,此例行程序在本例中可被用來對處理器系統(tǒng)105的處理器110進(jìn)行編程。方框605表示整數(shù)參數(shù)N、p和q的選擇,其中N是矩陣系數(shù)的數(shù)量,p和q為互為素數(shù)的整數(shù)???15表示K的選擇,它確定矩陣數(shù)。下面,框625表示隨機矩陣f、g、W1、W2、…Wk的選擇,其要求是W1、W2…Wk、0對模P同余。隨機數(shù)發(fā)生器130(圖1)可被用作此目的。
框640表示早先定義的矩陣Fp、Fq、Gp和Gq的確定。如果這些矩陣不存在,重新進(jìn)入框625,選擇新的矩陣f和g。循環(huán)630繼續(xù)直至選擇到可對其計算所定義的反量的矩陣。而后進(jìn)入框650,它表明公用密鑰的計算,一系列由條件h1≡FqW1Gq(mod q),Ⅰ=1,2,…,k.所確定的K個矩陣(h1,h2,…h(huán)k)。如框660所表明的,專用密鑰被保持作為矩陣(f,g,Fp,Gp)而后可公布公用密鑰,如框670所表示的。
圖7為由圖2的框240總地表示的,用于對一處理器例如處理器系統(tǒng)155的處理器160(圖1)進(jìn)行編程以實現(xiàn)利用此矩陣實施例的技術(shù)對明文消息m進(jìn)行編碼的例行程序的流程圖。輸入欲加編碼的消息(框720)和選擇隨機整數(shù)φ1、φ2…φk(框730)。可利用隨機數(shù)發(fā)生器185(圖1)選擇這些整數(shù)。而后可計算編碼消息e(框750)e≡φ1h1+φ2h2+…+φkhk+m(mod q).
可通過信道50將編碼消息傳送(框760)給本例中為處理器系統(tǒng)105的用戶的密碼持有者。
圖8為圖2中以框260總體表示的,用于按照本矩陣實施例對加密消息進(jìn)行譯碼的例行程序流程圖???30表示接收加密消息e。提取被保持的包括早先定義的m、F、g、Fp、Gp以及整數(shù)N、p和q的專用密碼信息(框850)。然后框870表示計算a≡feg(mod q)接著a被作模p換算到b(框880)b≡a(mod p)然后譯碼消息被計算(框890)為m’≡FpbGp(mod p)本發(fā)明已參照特定的優(yōu)選實施例作了說明,但對本技術(shù)領(lǐng)域熟練人員將可能有在發(fā)明精神實質(zhì)和范疇之內(nèi)的變型。例如,將會理解,此公用或?qū)S妹荑€可被存放在任何適合的媒體、例如一“智能卡”上,它可設(shè)置有能進(jìn)行編碼和/或譯碼從而使加密消息能被傳送到和/或自此智能卡的微處理器。
NTRU基于環(huán)的公用密鑰密碼系統(tǒng)Jeffrey Hoffstein,Jill Pipher,Joseph H.Silverman摘要我們介紹NTRU,一種新的公用密鑰密碼系統(tǒng)。NTRU的特點在于相當(dāng)短的、易于生成的密鑰,高速度,和低存貯器需求。NTRU編碼和譯碼采用由與基于基本概率論的聚合原理相組合的多項式代數(shù)提供的混合系統(tǒng)。此NTRU密碼系統(tǒng)的安全性來自多項式混合系統(tǒng)與換算模二互為素數(shù)整數(shù)p和q的交互作用。
目錄0、引言1、NTRU算法說明2、參數(shù)選擇3、安全性分析4、實現(xiàn)依據(jù)5、用于NTRU的適度安全性參數(shù)6、與其他的PKCS的比較附錄A.基本命題§0引言自從Diffie和Hellman[4]解釋了如何能利用單值函數(shù)來生成有效的和計算上低廉的公用密鑰密碼系統(tǒng)以來在生成這樣的系統(tǒng)方面已引起相當(dāng)大的關(guān)注。當(dāng)前,最廣泛應(yīng)用的公用密鑰系統(tǒng)是RSA,它由Rivest、Shamir和Adelman在1978年[10]建立,并以提取大量數(shù)的因子的困難為基礎(chǔ)。其他系統(tǒng)包括有,依靠于差錯校正碼的McEliece系統(tǒng)[9],和最近的Goldreich、Goldwasser、和Halevi系統(tǒng)[5],它以格換算問題的困難性為基礎(chǔ)。
本文介紹一種新的公用密鑰密碼系統(tǒng),我們稱它為NTRU系統(tǒng)。編碼過程采用一基于多項式代數(shù)和換算模二數(shù)P和q的混合系統(tǒng),而譯碼過程則采用其有效性取決于基本概率論的分離系統(tǒng)。此NTRU公用密鑰密碼系統(tǒng)的安全性來自多項式混合系統(tǒng)與換算模p和q的獨立性的交互作用。安全性還依賴于這樣的(經(jīng)驗觀察到的)事實,即對于大多數(shù)格,要求得極短的(與中等程度的短相比較)向量非常困難。
我們講明,在此文中的表述在兩個主要方向不同于一較早的廣泛流傳但未公布的未定稿本[7]。第一,我們已引入一可被用來產(chǎn)生具有更好的操作特性的系統(tǒng)的新參數(shù)K。第二,基于格的攻擊的分析已主要根據(jù)通過電子郵件從Don Coppersmith、Johan Hastad、和Adi Shamir親自接收到的和最新論文[3]中的大量解釋已被闡述和澄清。在此表示對他們的參與和他們的幫助表示感謝。
NTRU適應(yīng)[1]和[6]中所說明的概率密碼系統(tǒng)的總體框架。這就意味著加密包括有一隨機元素,所以各個消息具有許多可能的加密性。以NTRU進(jìn)行編碼和譯碼極為快速,而密鑰生成快速和容易。參看4和5節(jié)的詳細(xì)說明,而在此我們指出,為編碼和譯碼一長度N的消息塊,NTRU需要O(N2)次運算,使之大大快于RSA所需的O(N3)次運算。而且,NTRU密鑰長度為O(N),這可很好地匹敵于其他“快速”公用密鑰系統(tǒng)如[9,5]所需的O(N2)密鑰長度很好的匹敵。
§1 NTRU算法說明§1.1符號NTRU密碼系統(tǒng)取決于具有整數(shù)系數(shù)的N-1次多項式的4個整數(shù)參數(shù)(N、K、P、q)和3個集Lg、Lφ、Lm。我們以環(huán)R=Z[X]/(XN-1)工作。一元素F∈R被寫成為一多項式或一向量,F(xiàn)=Σi=1NFixN-i=[F1,F2,...,FN].]]>我們寫來指明R中的乘算。這一星號乘算明確地被給作為一循環(huán)卷積乘積FG=H,其中Hk=Σi=1k-1FiGk-i+Σj=kNFiGN+k-i=ΣFiGji+j=k(modN)]]>當(dāng)我們作一乘算模(例如)q時,我們是指換算系數(shù)模q。
評述原則上,乘積FG的計算需要N2乘算。但是,對于由NTRU所用的典型乘積,F(xiàn)或G之一具有小系數(shù),從而FG的計算非??臁A硪环矫?,如果N取得很大,則采用快速傅里葉變換能較快地以0(NLogN)運算來計算乘積FG?!?.2密鑰生成為生成NTRU密鑰,Dan隨機地選擇K+1多項色f,g1,…gk∈Lg。多項式f必須滿足附加的需要,即它具有反模q和模P。對于合適的參數(shù)選擇,這對大多數(shù)f的選擇將為真,而這些反量的實際計算利用Eucilidean算法的改型是很容易的。我們將以Fq和Fp標(biāo)志這些反量,即就是Fqf≡1(modq)和Fqf≡1(modp)(1)接著Dan計算這些量hi≡Fqgi(modq),1≤i≤K.(2)Dan的公用密鑰為多項式表(h1,h2,…h(huán)k)。
Dan的專用密鑰為單一的多項式f,雖然在實際上他還將要存貯Fp?!?.3編碼假定Cathy(編碼器)要發(fā)送消息到Dan(譯碼器)。她以從明文Lm集選擇一消息m開始。接著她隨機地選擇K個多項式φ1,…φk∈Lφ并利用Dan的公用密鑰(h1,…h(huán)k)來計算e≡Σi=1kpφi⊗hi+m(modq)]]>這就是Cathy傳送到Dan的編碼消息?!?.4譯碼假定Dan已從Cathy處接收到消息e并希望利用他的專用密鑰f對其譯碼。為有效地作到這一點,Dan應(yīng)予先計算節(jié)1.1中說明的多項式Fp。
為譯碼e,Dan首先計算a≡fe(mod q),在此,它在從-q/2至q/2的間隙內(nèi)選擇系數(shù)a。現(xiàn)在處理a作為具有整數(shù)系數(shù)的多項式,Dan通過計算Fpa(mod p),恢復(fù)此消息。
評述對于適宜的參數(shù)值,此譯碼過程復(fù)原原始消息具有極高的概率。但某些參數(shù)選擇可能造成偶然的譯碼的錯誤,故或許應(yīng)在各消息塊中包括幾個檢驗位。通常的譯碼錯誤原因?qū)⑹窍⒈徊磺‘?dāng)?shù)丶?。在此情況下,Dan將能通過在一稍微不同的間隔例如由-q/2+x至q/2+x(x為某一小的正或負(fù)值)中選擇a≡fe(modq)的系數(shù)來復(fù)原消息。如果無x值可行,則認(rèn)為具有間斷故障且消息不能容易地譯碼。對于選擇良好的參數(shù)值,這一情況發(fā)生如此稀少以致實際上可加以忽略?!?.5譯碼處理說明。Dan計算的多項式a滿足a≡f⊗e≡Σi=1kf⊗pφi⊗hi+f⊗m(modq)]]>≡Σi=1kf⊗pφi⊗Fq⊗gi+f⊗m(modq)]]>自(2),≡ΣI=1Kpφi⊗gi+f⊗m(modq)]]>自(1),考慮這一最后多項式ΣI=1kpφi⊗gi+f⊗m]]>對于適當(dāng)?shù)膮?shù)選擇,可以保證(幾乎總是)所有其系數(shù)均在-q/2與q/2之間,從而如果其系數(shù)為換算的模q它就不改變。這就意味著當(dāng)Dan將fe modq的系數(shù)換算成從-q/2至q/2的間隔,即準(zhǔn)確地復(fù)原此多項式a=Σi=1Kpφi⊗gi+f⊗m]]>在Z(X)/(XN-1)中換算a模p則給予多項式fm(modp),并通過Fp的乘算檢索消息m(modp)。§2參數(shù)選擇§2.1符號和范數(shù)估算。定義元素F∈R的寬為|F|∞=1≤i≤Nmax{Fi}-1≤i≤Nmin{Fi}]]>如符號提供的,這是一種R上的L∞范數(shù)。同樣,通過|F|2=(Σi=1N(Fi-F-)2)1/2,]]>其中F-=1NΣi=1NFi]]>來定義R上的中心L2范數(shù)。(等效地,|F|2/N1/2為F的系數(shù)的標(biāo)準(zhǔn)偏差。)命題。對于任何ε>0,均存在取決于ε,N和K的常數(shù)C1,C2>0,從而使對隨機選擇的多項式F1,…Fk,G1,…Gk∈R,概率大于1-ε,它們滿足c1=Σi=1K|Fi|2•|Gi|2≤|Σi=1KFi⊗Gi|∞≤c2Σi=1K|Fi|2•|Gi|2---(3)]]>自然,在如果比例C2/C對小ε為非常大時從實用觀點出發(fā),這一命題將是無用的。但是它證明即使對于中等大的N和K值及非常小的ε值,常數(shù)C1,C2也決不是過度的。已在大量情況下經(jīng)驗地證實這一點,并取得理論證明的概要。§2.2取樣空間。作為一典型的取樣空間示例,取Lg={g∈R:g具有-(r-1)/2與(r-1)/2(含)間的系數(shù)}Lφ={φ∈R:φ具有d個系數(shù)等于1,d個系數(shù)等于-1,其余為0}Lm={m∈R:m具有-(s-1)/2與(s-1)/2(含)間的系數(shù)}稍后將看到存在有各種r、d、s必須滿足的約束以便實現(xiàn)安全性。還注意到每一φ∈Lφ具有L2范數(shù)|φ|2=(2d)1/2,而平均元素g∈Lg和m∈Lm分別具有L2范數(shù)|g|2=(N(r2-1)/12)1/2和|m|2=(N(S2-1)/12)1/2。為簡化符號,對元素Lg、Lφ、Lm的平均L2范數(shù)分別寫為Lg、Lφ、Lm。
雖然不是嚴(yán)格必須,這里將作出附加的假設(shè)即Lm≈pLφ。這種假設(shè)將使得較易于分析可能的格攻擊,以及使得這樣的攻擊無效。作為一例假定d≈N/4,并取S≈(6P)1/2。所以包含在m中的自然模P信息就必須通過隨機地加和減P到m的系數(shù)來被“加厚”。§2.3譯碼準(zhǔn)則。如§1.5中所述,只要|∑pφigi+fm|<q,Dan就將能對編碼消息m譯碼。可以利用以上命題的不等式(3)(以K+1代替K和一適當(dāng)小的選擇ε)來估算Σi=1Kpφi⊗gi+f⊗m|∞≤c2Σi=1Kp|φi|2•|gi|2+|f|2•|m|2]]>≈c2Lg(KpLφ+Lm)≈c2pLgLφ(K+1)使用假設(shè)Lm≈pLφ。因而為了譯碼(帶有概率1-ε),Dan必須選擇參數(shù)滿足譯碼約束c2pLgLφ(K+1)<q(4)§3.安全分析§3.1會聚中央的攻擊。為簡單起見(并協(xié)助攻擊者)假定k=1,故編碼消息成為象(30)。Andrew Odlybko已指出存在一種能用來針對φ的會聚中央的攻擊,而我們觀察到一還加到專用密鑰f的類似的攻擊。大致上說,將f對半分,例如f=f1+f2,然后針對-f2e匹配f1e,尋求(f1,f2)從而使對應(yīng)系數(shù)具有近似相同的值。因此為獲得(例如)280的密級,必須從包含2160左右個元素的集選擇f、g和φ?!?.2多重傳送攻擊。仍然為簡單而假定K=1。觀察到,如果Cathy使用同一公用密鑰但不同的隨機φ來發(fā)送單一消息m數(shù)次,則攻擊者Betty將能復(fù)原此消息的很大部分。大致上說,假定Cathy發(fā)送ei≡φih+m(mod q),i=1,2…r,則Betty能計算(ei-e1)h-1(mod q),由此來復(fù)原φ1-φ1(modq),然而,這些φ的系數(shù)是如此小使她能準(zhǔn)確地恢復(fù)φi-φ1,并由此準(zhǔn)確復(fù)原許多φ1的系數(shù)。如果r恰恰是中等大小(例如4或5),Betty將復(fù)原足夠的φ1以能通過蠻力測驗所有的可能性,由此來復(fù)原m。這樣,如無對基本消息的某種進(jìn)一步的擾碼措施多次傳送是不明智的。應(yīng)指出即使Betty這樣來對一單個消息譯碼,這一信息也將無助于她譯碼任何進(jìn)一步的消息?!?.3基于格的攻擊我們以數(shù)句有關(guān)格換算的話開始。格換算的目的是要在一給定的格中找到一或數(shù)個“小”向量。理論上,通過徹底的搜尋可能找到M中的最小向量,但實際上如果M的尺寸很大這是不可能的。Lenstra-Lenstra-Lovasz[8]的LLL算法,具有由于Schnorr[11、12]等的各種改進(jìn),將發(fā)現(xiàn)多項式中M的小向量,但對于大(例如≥100)的尺寸的大多數(shù)格將不會找到最小向量,而最小LLL可確定向量與實際最小向量之間的間隔顯現(xiàn)為隨其尺寸作指數(shù)增長。為了從格攻擊出發(fā)說明NTRU安全性,考慮以下三種有關(guān)大尺寸格的假設(shè)(H1)對于大多數(shù)格M,M的最小非零向量的長度σ(M)滿足dim(M)2πeDisc(M)1/dim(M)≤σ(M)≤dim(M)πeDisc(M)1/dim(M)]]>因此,如果V∈M滿足|v|≥dim(M)πeDisc(M)1/dim(M),]]>則V就將隱匿在一團(tuán)接近同樣長度的按指數(shù)律的許多向量模混之中。
(H2)假定格M具有一小于(H1)所述的最短預(yù)期向量的向量,但M另外還是一“隨機”格。如果滿足|W|>k-dim(M)dim(M)πeDisc(M)1/dim(M),]]>則格換算多半不能發(fā)現(xiàn)W。(H3)假定在(H2)的情況。則由格換算方法計算的最小非零向量VLLL幾乎肯定滿足|VLLL|≥kdim(M)|W|評述在假設(shè)(H2)和(H3)中出現(xiàn)的格換算常數(shù)K必須由試驗和經(jīng)驗來確定。這類似于RSA PKCS的情況,在此,安全性依賴于估算因子分解積pq的當(dāng)前概率。它甚至更接近類似于[5]中所說明的PKCS,其安全性直接關(guān)聯(lián)到發(fā)現(xiàn)格的小的(幾乎作正交的)基線的困難。用大(≥100)尺寸的格的試驗表明可以取K=1.51/100。(例如可見[11]和[12]。)正如因數(shù)分解中的未來進(jìn)展那樣將需要使用RSAPKCS中的較大的素數(shù),這樣格換算中的未來進(jìn)展無疑將需要采用較小的K值和NTRU中的相應(yīng)地較大的參數(shù)。也要說明,對于尺寸大于700的格僅需要假設(shè)(H2)和(H3)。對這樣高尺寸的格,即使以Schnorr的塊換算改善的LLL算法也需要相當(dāng)長的時間。如果愿意對尺寸約300的格采用假設(shè)(H2)和(H3),就可以選擇具有更佳運行特性的NTRU參數(shù)?!?.3.1對密鑰f的小格攻擊。以多半會可能的最自然格開始,即取任何一個hi并搜索具有hif(mod q)也很小的性質(zhì)的小向量f。為此,寫成hi=[hi1…h(huán)iN]并考慮由以下矩陣的列所生成的格M
為了未來標(biāo)準(zhǔn)方便,將矩陣寫成
量λ由攻擊者為優(yōu)化攻擊而選擇。觀察到M滿足dim(M)=2N和Disc(M)=λNqN有二方面要考慮。首先是包含在M中作為短向量的實際密鑰f。應(yīng)注意M含有目標(biāo)向量Vtarg=[λfN,…,λf1,gi1,…,giN],并了解Vtarg將能復(fù)原f。但我們可計算Vtarg的長度為|vtarg|2=|λf|22+|gi|22=Lgλ2+1]]>假設(shè)(H1)表明如果|Vtarg|2滿足不等式|vtarg|2≥dim(M)πeDisc(M)1/dim(M)=2Nλqπe]]>則f對攻擊就是安全的。換句話說,必須有Lgλ+λ-1≥2Nqπe]]>由攻擊者的觀點看可任選的λ為λ=1(見Lemma A.1),因為她想最小化左手邊。所以只要q≤πeLg2N---(5)]]>即是安全的。第二個考慮是M中是否有一另外的小向量可使攻擊者能譯碼消息。這樣,任一小向量[f’,g’]∈M具有性質(zhì),即f’和hif’≡g’(modq)兩者均很小。但如果攻擊者計算e⊗f1≡Σj=1kpφi⊗hj⊗f1+m⊗f1(modq),]]>只有帶j=1的項將具有小系數(shù)模q。因此一使得一單個hi小的f’將不會作用為一譯碼密鑰。這提示我們同時注意所有的hj,它們將我引到下一格。§3.3.2對密鑰f的大格攻擊。不是僅采用一個hi,攻擊者可代之以使用hi的某一子集來形成一個格。再行進(jìn)行標(biāo)注,將假定攻擊者采用h1…h(huán)k,1≤k≤K,并以矩陣
的列形成格M。(我們利用前節(jié)的縮寫符號。)這一格滿足dim(M)=(k+1)N和Disc(M)=λNqkN.它含有目標(biāo)向量(采用明顯的簡寫)Vtarg=[λf1,g1,g2,…,gk](更精確地,f的座標(biāo)必須倒轉(zhuǎn)。)這一目標(biāo)向量具有長度|vtarg|2=|λf|22+|gl|22+...|gk|22=Lgλ2+k]]>假設(shè)(H2)認(rèn)為格換算將不可能發(fā)現(xiàn)Vtarg,只要其長度滿足|vtarg|2≥k-dim(M)dim(M)πeDisc(M)1/dim(M)]]>=k-(k+1)N(k+1)Nπe·λ1/(k+1)qk/(k+1).]]>所以對于攻擊是安全的,只要Lgλ2k/(k+1)+kλ-2/(k+1)≥k-(k+1)N(k+1)Nπeqk/(k+1)]]>如前,攻擊者將選擇λ來使左手邊最小。再次成為λ=1給出最小值(見Lemma A.1),所以在假設(shè)(H2)情況下實際密鑰將是安全的只要qk1(k+1)≤k(k+1)NLgπeN]]>§3.3.3對亂真密鑰f的大格攻擊。不是搜索真正的密鑰f,攻擊者可能試圖搜找到某另一起譯碼密鑰作用的密鑰F。為了有一亂真的密鑰,F(xiàn)自身和每一個乘積hjF(modq)必須很小。更精確地說,假定攻擊者發(fā)現(xiàn)F并計算Gj≡hjF(mod q)j=1,2,…,K.我們想知道一表達(dá)式φ1G1+φ2G2+…+φKGK+mF的寬度(L∞范數(shù))一般對某一卷解因數(shù)W至少為Wq。(在節(jié)4中將討論為了系統(tǒng)的安全W必須多大的問題。)為試著尋找一亂真密鑰F,攻擊者將取節(jié)3.3.2中描述的格M并利用格換算技術(shù)來找到一小向量VLLL。M中的最小非零向量為向量Vtarg=[λf,g1,…gk],故假設(shè)(H3)表明
|VLLL|2≥k(K+1)N|vtarg|2.寫VLLL=[λF,G1,G2…Gk],找到λ2|F|22+|G1|22+...+|Gk|22≥k(k+1)NLgλ2+K.]]>由格換算得到的向量VLLL將具有其大小或多或少被隨機分布的組分。特別是,所有的長度|λF|2,|G1|2,…|GK|2將近似相同,因而得到(近似地)|λF|2,|G1|2,…,|GK|2≥k(K+1)NLg.另一方面,可利用這和(3)來估算|φ1G1+φ2G2+…+φKGK+mF|∞≥c1(|φ1|2·|G1|2+…+|φK|2·|GK|2+|m|2·|F|2)=c1Lφ(|G1|2+…+|GK|2+|F|2)≥c1(K+1)LφLgk(K+1)N.所以此亂真密鑰利用卷解因數(shù)W將會失敗,只要選擇參數(shù)滿足Wq≤c1(K+1)LφLgk(K+1)N.(7)(這可與譯碼不等式(4)相比較。)§3.3.4對個別消息的大格攻擊。有另一類必須考慮的格攻擊。不尋找一對每一消息譯碼的密鑰,攻擊者可構(gòu)成一個格來搜索個別消息??紤]如下的類似于節(jié)3.3.2中所用的一個格。假定M為矩陣
的列所生成的格。此格滿足dim(M)=(K+1)N和Disc=λKNqN并含有(采用明顯的符號的)該向量[λφ1,λφ2,…λφk,e-m]. (8)它含有這一向量因為編碼消息e的構(gòu)成是按照規(guī)則pφ1h1+pφ2h2+…+pφKhK+m=e(mod q).顯然(8)不象為一短向量,因為e-m(mod q)的系數(shù)將不很小。但攻擊者知道e的值,所以她能尋找M中的一接近已知非格向量
的向量。與被尋找的格向量和已知非格向量的距離為此向量的長度vtarg=[λφ1,λφ2,…λφK,-m].這是一非齊次格問題的示例。非齊次問題趨向于有點難于齊次問題,但使在警告方面出現(xiàn)差錯,假定攻擊者能解決非齊次問題到與它能解決齊次問題嚴(yán)格相同的程度。所以必須看攻擊者能否找到一長度為|vtarg|2=LφKλ2+p2.]]>的向量。(應(yīng)記住,對每一m∈Lm和每一φ∈Lφ,|m|2=P|φ|2)按照假設(shè)(H2),只要|vtarg|≥k-dim(M)dim(M)πeDisc(M)1/dim(M),]]>攻擊就將失敗,或者換句話說,如果LφKλ2/(k+1)+p2λ-2K/(K+1)≥k-(K+1)N(K+1)Nπeq1/(K+1)]]>攻擊者將通過取λ=p(見Lemma A.1)來使左手邊最小,所以攻擊將失敗,只要q1/(K+1)≤k(K+1)NLφπeNp1/(K+1).---(9)]]>這可與它補充的(6)相比擬。§3.3.5格攻擊參數(shù)約束的概括。在本節(jié)的前面部分已經(jīng)說明了各種格攻擊和設(shè)想的對防止這些攻擊得呈的參數(shù)的約束。余下的問題是是否存在著滿足所有約束的參數(shù)的任何選擇。為了閱讀方便,在此列出了來自這一節(jié)的所有不等式,連同一齊的是如果真正密鑰f的所有者要能譯碼消息時所需要的基本不等式(4),
c2pLgLφ(K+1)<q. (4)q≤πeLg2N.---(5)]]>qk(k+1)≤k(k+1)LgπeNy1≤k≤K.--(6k)]]>Wq≤c1(K+1)LφLgk(K+1)N(7)q1/(K+1)≤k(K+1)NLφπeNp1/(K+1).---(9)]]>我們觀察到,對于任一固定的值C1,C2,P,Lφ>0和p,K,W>1,對這些不等式總存在著解N、K、Lg,q?,F(xiàn)在作一新的解釋來幫助求解。開始以不同方法組合這些不等式。首先組合(4)和(7)得到(在一些代數(shù)之后)(K+1)N≥log(c1-1c2pW)logk.---(10)]]>應(yīng)注意,在選擇C1,C2和K上(基本)沒有自由度,而W將在5與10之間根據(jù)所要求的安全性來選擇。在此剩下的是正常為相當(dāng)小的P的選擇。這里要點在于(10)給出在其上能作非常小的控制的(k+1)N的邊界。接著組合(4)和(5)來得到Lg>c2p(K+1)NπeLφ.---(11)]]>為在選擇q上具有某種靈活性,最好取Lg大于這一所述下邊界(例如)1.5~2倍。
例如,如果Lφ和Lg為如節(jié)2.2中所述,則Lφ=(2d)1/2和大多數(shù)g∈Lg滿足|g|2≈Lg=(N(r2-1)/12)1/2。所在利用(11)選擇Lg之后,可取r=[Lg(12/N)1/2],而后大部分g∈Lg將具有非常接近所希望Lg的L2范數(shù)。而且,由于代碼生成器Dan為唯一從Lg選擇元素的,并由于這些選擇僅需作出一次,所以以范數(shù)近似的L。將不難求出L。中所需的K+1個多項式;且即使帶有長度限制,Lg中這樣的多項式的數(shù)量遠(yuǎn)遠(yuǎn)大于一攻擊者能通過詳盡搜索進(jìn)行檢查的數(shù)量,因為在實際上rN趨向于至少為25000。§4實現(xiàn)依據(jù)§4.1安全性和卷解因數(shù)。回想卷解因數(shù)W控制攻擊者在其利用由格換算所產(chǎn)生的亂真密鑰時所能期望的多少個卷解。如果W太小例如W=1.5,則攻擊者將能復(fù)原許多(其至可能大多數(shù)的)系數(shù),因為它們的值傾向于圍繞平均值聚集。更確切地說,攻擊者將對于N個未知系數(shù)復(fù)原(例如)0.95N線性方程,然后強力搜索完成攻擊。
Coppersmith和Shamir[3]觀察到即使W稍許大于此,例如說W=2.5,則聚集使得攻擊者能得到對于N未知數(shù)的接近0.67N線性方程。然后它們觀察到如果則者構(gòu)成二獨立的亂真密鑰和應(yīng)用它們,她可得到足夠多的獨立方程來解決它們。它們進(jìn)一步指出,如果W=4,則使用數(shù)個短向量可能使得攻擊通過采用某種糾錯技術(shù)能獲得成功,但如果W大至10,則這類攻擊將不能成功。欲知細(xì)節(jié)可參看[3]。
根據(jù)這些考慮,我們將使用一卷解因數(shù)W=10來構(gòu)成取樣操作參數(shù)。§4.2取樣運行參數(shù)。在這一節(jié)研究兩個可用于NTRU PKCS的參數(shù)集,其在節(jié)3的假設(shè)下是安全的。這些參數(shù)集導(dǎo)致相當(dāng)大的消息擴(kuò)張,讀者可參照下面節(jié)4.3將消息擴(kuò)張換算到可管理的2-1的2級NTRU方案。
以三個由試驗證明強加于我們上的值和一被選擇來保證足夠的卷解來擊退一亂真的密鑰攻擊的第四值來開始c1=0.08,c2=0.24,W=10 k=1.51/100≈1.0040628823.值C1和C2已經(jīng)由所希望范圍內(nèi)的廣泛的數(shù)值試驗所決定;但我們也有對如何給它們一概率上的理由上的一相當(dāng)好的主意。卷解因數(shù)W=10已在上面節(jié)4.1中討論。最后,格換算常數(shù)K的選擇已在節(jié)3.3的評述中討論,雖然為預(yù)防格換算技術(shù)中未來的改進(jìn),安全性意識的用戶可利用其他參數(shù)中的微小變化代之以取K=1.31/100。
首先考慮選擇P=2。由節(jié)3.3.5的不等式(10)得知必須取(K+1)N≥1009.79,N=167和K=6.故將N=167及K=6(合宜但不一定需要的是使N與(N-1)/2都為素數(shù))。這一選擇將提供為選擇其余的系數(shù)的充分余地。)如節(jié)2.2中那樣取d=20的Lφ,所以#Lφ=167!/20!·20!·127!≈2165.85,這將提供針對集聚到中心的攻擊的足夠的安全性。而且,Lφ=(2d)1/2≈6.325,和將這些選擇替代進(jìn)(11)給出Lg>414.07。為提供某些余地,取r=167,使得所期望的Lg值等于622.98。最后,節(jié)3.3.5中的5個基本不等式表明q必須滿足213.6924<q≤max{214.2766,214.7278,214.6238,252.481},(自然,節(jié)3.3.5中的不等式(6k))實際上為6個不等式,每一個用于1≤k≤6。)這樣可取q=214-1=16383。(應(yīng)指出需要gcd(p,q)=1)。為扼要說明,采用節(jié)3.3的假設(shè),下列參數(shù)給出一安全的NTRU PKCSN=167,K=6,q=16383=214-1,p=2,r=167,d=20,s=3其中集Lφ、Lg、Lm被如節(jié)2.2中所述加以選擇。對于這些參數(shù),具有公用密鑰長度=Nklog2q=14028位專用密鑰長度=Nlog2pr=1400位消息擴(kuò)展=log q/1og p=14比1。利用類似分析,構(gòu)成一第二組帶有一較大P值的安全NTRU參數(shù)。這些參數(shù)看來很好地適應(yīng)當(dāng)前的微處理器,因為所有運算都對小于216的數(shù),而q是2的冪,故帶有余數(shù)的被q所除是一簡單的移位運算。取N=167,K=6,Q=216,P=3,R=354,D=40,S=7。這些參數(shù)給出#Lφ=167!/40!·40!·87!≈2239.3,和公用密鑰長度=Nklog2q=16032位專用密鑰長度=Nlog2pr=1678位消息擴(kuò)展=log q/1og p=10.1比1?!?.3二級NTRU和改進(jìn)的消息擴(kuò)展。用于第4.2中表明的取樣參數(shù)的NTRU PKCS具有較大的消息擴(kuò)展。為降低這一擴(kuò)展的一個方法是利用較大的P值,但這導(dǎo)致相當(dāng)大的(K+1)N值,這又增加兩個密鑰的大小和減少計算效率。
另一種降低消息擴(kuò)展的方法是利用各NTRU消息作為一種為編碼實際消息的一次裝填。在此NTRU的二級方案中,編碼器Cathy選擇一隨機多項式m∈Lm,而她的實際明文消息M被容許是任何多項式模q。為譯碼她的消息,她計算二個量c=Σi=1Kpφ2⊗h1+m(modq)]]>和E=mh1+M(mod q).編碼消息是(e,E)對。
此譯碼過程與前類似,但帶有一額外步驟。這樣譯碼器Dan跟隨節(jié)1.4中所述過程來計算多項式m。然后通過計算E-mh1(mod q).
來復(fù)原消息。觀察到,明文消息M具有長度Nlog2q位,而編碼消息(e,E)具有長度2Nlog2q位,故消息擴(kuò)張被降至2比1。
進(jìn)一步評述Cathy應(yīng)用同樣的多項式和模來編碼m和M。我們不認(rèn)為這會犧牲安全性,但為增加安全性她可以對不同的(公用)多項式H和模Q計算E≡mH+M(mod q)?!?.4理論運算說明。在這一節(jié)考慮NTRU PKCS的理論運算特性。存在有4個整數(shù)參數(shù)(N,K,P,q),3個如節(jié)2.2中說明的分別由整數(shù)r,d,s所確定的集Lg、Lφ、Lm,3個試驗確定的常數(shù)C1、C2、K,和一卷解常數(shù)W。為保證安全性,必須選擇這些參數(shù)來滿足節(jié)3.3.5中所列舉的不等式。下表概括以這些參數(shù)表明的NTRU PKCS運算特性明文塊Nlog2p位編碼文塊 Nlog2q位編碼速度 O(KN2)次運算譯碼速度 O(N2)次運算消息擴(kuò)展 logpq比1專用密鑰長度 Nlog2pr位公用密鑰長度 Knlog2q位·準(zhǔn)確說4KN2加算和帶余數(shù)的以q作的KN除算。
對如節(jié)4.4中所述的2級NTRU。以下項改變明文塊 Nlog2q位編碼文塊Nlog2q位消息擴(kuò)展2比1§4.5其他實現(xiàn)依據(jù)。粗略說明一些在實現(xiàn)NTRU時應(yīng)予考慮的附加因數(shù)。(1)gcd(q,p)=1很重要。雖然原理上NTRU工作將無需這種要求,但實踐中如gcd(q,p)>1將降低安全性。在極限范圍,如果p|q,則(試驗)編碼消息e滿足e≡m(modp)所以它完全不可靠。(2)希望大多數(shù)f具有反模p和模q,因為否則將難以生成密鑰。第一需要的要求是gcd(f(1),pq)=1,但如果對某些所選擇f這一點未達(dá)到,則代碼生成器可代之以使用例如f(X)+1或f(X)-1。假定gcd(f(1),pq)=1,如果取N為素數(shù)并要求對每一素數(shù)P除以p和q,(Z/NZ)*中P的階很大,例如N-1或(N-1)/2,實際上所有f將具有所需的反量。例如,如果(N-1)/2本身為素數(shù)(即N是一Sophie Germain素數(shù))這將肯定是真。這樣的素數(shù)的例子包括107和167?!?用于NTRU的適度安全參數(shù)現(xiàn)實上有許多情況其中高速和/或低存貯器要求是重要的且中等水平的安全是可接收的。在這種意義上,我們觀察到實際格換算方法[11、12]為極端地CPU緊張的,且實踐中需耗費很大的計算機時間來對尺寸200到300的格進(jìn)行格換算。自然,這里的“很大“是相對術(shù)語,但或許不值得進(jìn)行300維次的格換算去挪用值得的百分之幾,而利用當(dāng)前的方法在一短時間期間(例如數(shù)秒)內(nèi)進(jìn)行這樣的格換算將非常昂貴(即是不是完全不可能的)。因此是值得生成可被用在要允許大尺寸格攻擊的概率的情況下的一組NTRU的參數(shù)。
如果除去出自格攻擊的參數(shù)約束,這里僅余下譯碼約束c2pLgLφ(K+1)<q(4)和用于f,g和φ的搜索空間足夠大來防止強力(或者可能的聚合于中央的)攻擊的條件。為了簡化,將取K=1,將所有f,g,φ取為在集Lφ中,此集為帶有d系數(shù)等于1、d系數(shù)等于-1和其他N-2d系數(shù)等于0的多項式集。(更確切地說,因為必須f為可反的模p和q,將取f具有一額外的1系數(shù),但這將對隨的分析具有微小的影響,故將忽略它。)如通常采用C2=0.24,譯碼約束簡單地變成為q>2pd(4)其他約束是(d;d;N-2dN)=N!(d!)2(N-2d)!≥22a,]]>其中σ是所希望的密級。應(yīng)指出,對于中度安全性實現(xiàn),約240的密級一般足夠,所以將取σ≈40。
下表給出對NTRU的一中度安全性實現(xiàn)的一些可接受的運算參數(shù)。在評估安全性中,應(yīng)指出,可行的格攻擊采用一2N維的格。還應(yīng)指出,列舉的q值是所允許的最小值,但滿足gcd(p,q)=1的稍大的q是可接受的。特別是,取q=64可能作特別快的實現(xiàn)。
最后,觀察到密鑰的長度非常小公用密鑰Nlog2(q)位專用密鑰2Nlog2(p)位例如,(N,d,p,q)=(167,7,3,64)給出一帶有公用和專用密鑰長度分別為1002位和530位的系統(tǒng)。§6與其他PKCS的比較當(dāng)前文獻(xiàn)中存在有許多公用密鑰密碼系統(tǒng),包括根據(jù)提取因子的困難的Rivest、Shamir和Adelman(RSA[10])的系統(tǒng);基于糾錯碼的McEliece[9]的系統(tǒng),和基于在格中發(fā)現(xiàn)短的幾乎正交的基線(base)的困難的Goldreich、Goldwasser和Hatevi(GGH[5])的最近的系統(tǒng)。
此NTRU系統(tǒng)具有一些與McElieve系統(tǒng)共同的特點,其中,環(huán)R中的乘算可公式化成為矩陣的乘算(特殊類型的),和然后雙方系統(tǒng)中的編碼可被寫成為矩陣乘算E=AX+Y,這里A為公用密鑰。二系統(tǒng)間的微小差別是,對NTRU編碼,Y為消息和X是一隨機向量,而McEliece系統(tǒng)則反轉(zhuǎn)這些賦值。但真正的差異是允許譯碼的基礎(chǔ)陷井門。對于McEliece系統(tǒng),矩陣A關(guān)連到糾錯(Goppa)碼和譯碼工作,因為隨機分布很小足以被Goppa碼“糾正“。對于NTRU矩陣A為一循環(huán)距陣,且譯碼決定于連同一來自模q到模p的提升一齊的A的分解成具有特殊形式的一矩陣的乘積。
我們所能說的是,NTRU系統(tǒng)與RSA系統(tǒng)的共同點很少。同樣,雖然NTRU系統(tǒng)必需被建立來防止格還原攻擊,其基本譯碼方法與譯碼是根據(jù)對小格基線的了解的GGH系統(tǒng)則非常不同。在這方面,GGH實際上相似于McEliece系統(tǒng),因為在此二情況下譯碼均是依靠識別和消除一小隨機作用進(jìn)行的。與此相對照,NTRU通過可分性(即同余)依據(jù)消除大得多的隨機作用。
下表對RSA、McEliece、GGH和NTRU密碼系統(tǒng)的一些理論運算特征加以比較。各情況中數(shù)N表示一固有安全性消息長度參數(shù)。<
附錄A 基本命題(LemmA)以下結(jié)果可用于優(yōu)化格攻擊。Lemma A.1對于所有A,B,α,β≥0,α+β=1infx>0Axα+Bx-β=AβBαααββ,]]>其中,下確界發(fā)生在x=βB/αA時。證明設(shè)f(x)=Axα+Bx-β.Then f′(x)=αAxα-1-βBx-β-1=xβ+1(αAx-βB).。所以絕對最小值在x=βB/αA。(注f(x)→∞如x→0+和x→∞。)參考文獻(xiàn)1、M·布盧姆,S·戈德瓦塞爾,一種隱藏全部部分信息的有效的概率公用密鑰加密方案,密碼的改進(jìn)CRYPTO84的進(jìn)程,計算機科學(xué)中的講義筆記,196卷,斯普林格一韋拉格,1985年,289-299頁。(M.Blum,S.Goldwasser,An effcient probabilistic public-keyencryption scheme which hides all partial information,Advance inCryptology:Proceedings of CRYPTO 84,Lecture Notes in ComputerScience,vol.196,Springer-Verlag,1985,pp.289-299。)2、H·科亨,計算代數(shù)數(shù)論中的過程,數(shù)學(xué)中的分度文本,138卷,斯普林格一韋拉格,柏林,1993年。(H.Cohen,A course incomputational algebraic number theory,Graduate Texts in Math.,vol.138,Springer Verlag,Berlin,1993.)3、D·科伯史密斯,A·沙米爾,NTRU上的格攻擊,預(yù)印本,1997年4月5日;在歐洲密碼97介紹的。(D.Coppersmith,A.Shamir,Lattice attacks on NTRU,Preprint,April 5,1997;presented at Eurocrypt97.)4、W-迪菲,M·E·赫爾曼,密碼學(xué)中的新方向,有關(guān)信息理論的IEEE翻譯22(1976年),644-654頁。(W.Diffie,M.E.Hellman,New directions in cryptography,IEEE Trans.on Information Theory22(1976),644-654.)5、O·戈德賴希,S·戈德瓦塞爾,S·哈勒維,自格減少問題的公共密鑰密碼系統(tǒng),MIT一計算機科學(xué)預(yù)印本的實驗室,1996年11月。(O.Goldreich,S.Goldwasser,S.Halevi,Public-key cryptosystems fromlattice reduction problems,MIT-Laboratory for Computer Sciencepreprint,November 1996.)6、S·戈德瓦塞爾和A·米卡利,概率加密,J.計算機和系統(tǒng)科學(xué)28(1984年),270-299頁。(S.Goldwasser and A.Micali,Probabilisticencryption,J.Computer and Systems Science 28(1984),270-299.)7、J·霍夫施泰因,J·皮弗,J·H·西爾弗曼,NTRU一種新的高速公用密鑰密碼系統(tǒng),預(yù)印本,在密碼96的殘余議會會議上介紹的。(J.Hoffstein,J.Pipher,J.H.Silverman,NTRU:A new high speedpublic key cryptosystem,Preprint;presented at the rump session of Crypto96.)8、A·K·倫斯察,H·W·倫斯察,L·勒夫茲,因式分解帶有多項式系數(shù)的多項式,馬.安納倫261(1982年),515-534頁。(A.K.Lenstra,H.W.Lenstra,L.Lovsz,Factoring polynomials withpolynomial coefficients,Math.Annalen 261(1982),515-534.)9、R·J·麥克利斯,一種基于代數(shù)編碼理論的公用密鑰密碼系統(tǒng),JPL帕薩德納,DSN進(jìn)度報告42-44(1978年),114-116頁。(R.J.McEliece,A public-key cryptosystem based on algebraic codingtheory,JPL Pasadena,DSN Progress Reports 42-44(1978),114-116.)10、R·L·里韋斯特,A·沙米爾,L·阿德曼,一種用于獲得數(shù)字特征的方法和公用密鑰密碼系統(tǒng),ACM的通信2l(1978年),120-126。(R.L.Rivest,A.Shamir,L.Adleman,A method for obtaining digitalsignatures and public key cryptosystems,Communicationa of the ACM21(1978),120-126.)11、C·P·施諾爾,塊減少的格基和連續(xù)的最小數(shù),組合的,概率和計算3(1994年),507-522頁。(C.P.Schnorr,Block reduced latticebases and successiue minima,Combinatories,Probability and Computing3(1994),507-522.)12、C·P·施諾爾,H·H·赫爾納,通過改進(jìn)的格減少攻擊查爾·里韋斯特密碼系統(tǒng),歐洲密碼1995會刊,計算機科學(xué)中講義筆記921,斯普林格-韋拉格,1995年,1-12頁。(C.P.Schnorr,H.H.Hoemer,Attacking the Chor Rivest cryptosystem by improved lattice reduction,Proc.EUROCRYPT 1995,Lecture Notes in Computer Science 921,Springer-Verlag,1995,pp1-12.)13、D·斯廷森,密碼學(xué),理論和實踐,CRC出版社,博卡拉頓,1995年。(D.Stinson,Cryptography,Theory and Practice,CRC Press,Boca Raton,1995.)
權(quán)利要求
1.用于編碼和譯碼數(shù)字消息的方法,包括步驟選擇環(huán)R的理想數(shù)p和q;生成環(huán)R的元素f和g,并生成作為f(mod q)的反量的元素Fq,和生成作為f(mod p)的反量的元素Fp;產(chǎn)生包括有h的公用密鑰,其中h、使用g和Fq推導(dǎo)的積對mod q同余產(chǎn)生一能由其推導(dǎo)f和Fp的專用密鑰;通過使用公用密鑰和一隨機元素φ對消息m進(jìn)行編碼來產(chǎn)生編碼的消息e;和通過使用此專用密鑰對編碼消息e進(jìn)行譯碼以產(chǎn)生譯碼消息。
2.按權(quán)利要求1所述方法,其中所述環(huán)R為一環(huán)Z上的模。
3.按權(quán)利要求1所述方法,其中Z上R的尺寸為N,這里N是大于1的整數(shù)。
4.按權(quán)利要求3所述方法,其中環(huán)R是多項式模一特定多項式的環(huán)。
5.按權(quán)利要求1所述方法,其中所述生成元素的步驟還包括生成是g(mod q)的反量的元素Gq,和生成是g(mod p)的反量的元素Gp。
6.權(quán)利要求5所述方法,其中所述元素Gq被用于所述公用密鑰的推導(dǎo)中且所述元素Gp為所述專用密鑰的部分。
7.權(quán)利要求1所述方法,其中所述選擇步驟還包括選擇一正整數(shù)k,且其中所述元素g包括各自的gi,其中i=1,2,…k,且其中所述公用密鑰h包括各自的hi,其中i=1,2,…k。
8.權(quán)利要求7所述方法,其中所述隨機元素φ包括理想數(shù)p中的各自φi,i=1,2,…k,和所述編碼消息被產(chǎn)生作為e≡Σi=1xφi*hi+m(modq).]]>
9.權(quán)利要求1所述方法,其中所述公用和專用密鑰各自還包括有p和q。
10.權(quán)利要求1所述方法,其中所述理想數(shù)p和q由互為素數(shù)的整數(shù)生成。
11.權(quán)利要求10所述方法,其中編碼消息e、消息m與包括有φ和h的積的總和對mod q同余。
12.權(quán)利要求10所述方法,其中所述整數(shù)p和q是不相等的,且p和q兩者都大于1。
13.權(quán)利要求1所述方法,其中所述編碼消息,由一地點的用戶產(chǎn)生,由所述一地點傳送到另一地點,并被所述另一地點的用戶譯碼。
14.用于編碼和譯碼數(shù)字消息m的方法,包括步驟選擇整數(shù)p和q;生成多項式f和g;確定反量Fq和Fp,其中Fq*f≡1(mod q),F(xiàn)p*f≡1(mod p);產(chǎn)生包括有P、q、h的公用密鑰,其中h≡Fq*g(mod q);產(chǎn)生包括有f和Fp的專用密鑰;通過使用專用密鑰和一隨機元素φ對消息m編碼而產(chǎn)生編碼的消息e;和通過使用此專用密鑰對編碼消息e譯碼而產(chǎn)生譯碼消息。
15.權(quán)利要求14所述方法,其中所述編碼消息e被產(chǎn)生作為e≡pφ*h+m(mod q)
16.權(quán)利要求15所述方法,其中所述譯碼消息通過計算a≡f*e(mod q)且然后計算此譯碼消息m’作為m’≡Fp*a(mod p)來產(chǎn)生。
17.權(quán)利要求14所述方法,其中所述生成多項式f和g的步驟包括選擇一正整數(shù)k并生成多項式g作為g1、g2、…gk,且其中所述公用密鑰包括h1、h2…h(huán)k,其中hi=Fq*gi(mod q),i=1,2…k。
18.權(quán)利要求17所述方法,其中所述編碼消息e被生成作為e≡pφ1*h1+pφ2*h2+…+Pφk*hk+m(nod q)其中,φ1、φ2、…φk為k個多項式。
19.權(quán)利要求14所述方法,其中所述編碼消息由一地點的用戶產(chǎn)生,由所述一地點傳送到另一地點,并被所述另一地點的用戶譯碼。
20.權(quán)利要求14所述方法,其中選擇一首一多項式M(X)并通過首先進(jìn)行多項式的普通乘算和然后以M(X)除此結(jié)果并僅保存余數(shù)來完成多項式的乘算。
21.權(quán)利要求14所述方法,其中選擇非零整數(shù)N并通過換算指數(shù)模N來完成多項式乘算。
22.權(quán)利要求14所述方法,其中所述多項式f、g、m和φ必須具有有界系數(shù)。
23.權(quán)利要求要求22所述方法,其中所述整數(shù)q被選擇得小于由所述整數(shù)p,所述多項式f、g、m和φ的次數(shù),和對所述f、g、m和φ的系數(shù)的所述約束所決定的量。
24.權(quán)利要求22所述方法,其中所述整數(shù)q被選擇得大于一由所述整數(shù)p,所述多項式f、g、m和φ的次數(shù),和對所述多項式f、g、m和φ的系數(shù)的所述約束所決定的量。
25.用于編碼和譯碼數(shù)字消息的方法,包括步驟選擇互為素數(shù)的整數(shù)p和q;選擇一非零整數(shù)k;從一具有整數(shù)系數(shù)的矩陣環(huán)產(chǎn)生K+2個矩陣f、g、w1、w2、…wk,其中wi≡φ(mod p),i=1,2,…k;從所述矩陣環(huán)產(chǎn)生反矩陣Fp、Fq、Gp和Gq,其中fFp≡Ⅰ(mod p)fFq≡Ⅰ(mod q)gGp≡Ⅰ(mod p)gGq≡Ⅰ(mod q)這里,Ⅰ為一識別矩陣;產(chǎn)生一公用密鑰作為一系列k個矩陣(h1,h2,…h(huán)k),其中hi≡FqWiGq(mod q),i=1,2,…k;產(chǎn)生一專用密鑰作為矩陣(f、g、Fp,Gp);通過使用專用密鑰和隨機整數(shù)φ1、φ2、…、φk作為e=φ1h1+φ2h2+…+φkhk+m(mod q);和通過計算a≡feg(mod q)和b≡a(mod p)然后計算譯碼消息作為m’≡FpbGp(mod p)來產(chǎn)生譯碼消息m’。
26.權(quán)利要求25所述方法,其中所述編碼消息通過在一地點的用戶產(chǎn)生,從所述一地點傳送到另一地點,并通過在所述另一地點的用戶被譯碼。
27.權(quán)利要求25所述方法,其中所述矩陣W1、W2、…Wk、f、g和m必須具有有界系數(shù)且整數(shù)φ1、φ2、…φk被約束為有界的。
28.權(quán)利要求27所述方法,其中所述整數(shù)q被選擇得小于一由所述整數(shù)p,所述整數(shù)k,所述多項式W1、W2、…Wk、f、g和m的次數(shù),對所述多項式W1、W2…Wk、f、g和m的系數(shù)的所述約束,和對整數(shù)φ1、φ2…φk的所述約束所確定的量。
29.權(quán)利要求27所述方法,其中所述整數(shù)q被選擇得大于一由所述整數(shù)p,所述整數(shù)k,所述多項式W1、W2…Wk、f、g和m的次數(shù),對所述多項式W1、W2、…Wk、f、g和m的所述約束,和對整數(shù)φ1、φ2、…φk的所述約束所決定的量。
30.用于編碼和譯碼數(shù)字消息m的系統(tǒng),包括用于選擇理想數(shù)p和q的裝置;用于生成一環(huán)R的元素f和g、并生成作為f(mod q)的反量的元素Fq、并生成作為f(mod p)的反量的元素Fp的裝置;用于產(chǎn)生包括有h的公用密鑰的裝置,這里h、使用g和Fq推導(dǎo)的積對mod q同余;用于產(chǎn)生一可由其推導(dǎo)f和Fp的專用密鑰的裝置;用于通過使用此公用密鑰和一隨機元素φ對消息m進(jìn)行編碼來產(chǎn)生編碼消息的裝置;和用于通過使用專用密鑰對編碼消息進(jìn)行譯碼以產(chǎn)生譯碼消息的裝置。
31.權(quán)利要求30所述系統(tǒng),其中所述編碼消息通過在一地點的用戶被產(chǎn)生,從所述一地點傳送到另一點,并通過在所述另一地點的用戶被譯碼。
32.用于在一通信系統(tǒng)的用戶之間傳送信息的方法,包括步驟生成一環(huán)R、R中的理想數(shù)P和Q、一組用于環(huán)R模理想數(shù)Q的陪集表示式CQ,和一組用于環(huán)R模理想數(shù)P的陪集表示式Cp;生成環(huán)R中至少一公用密鑰元素h1,…h(huán)k作為R中至少二專用密鑰元素f1,…fn和此第一用戶的理想數(shù)Q的函數(shù);和從一第一用戶傳送給一第二用戶環(huán)R的說明,理想數(shù)Q,理想數(shù)P,和R中的元素h1…h(huán)k;生成R中一元素e作為理想數(shù)P和Q,公用密鑰元素h1,…h(huán)k,R中的專用消息元素m,和第二用戶的至少一專用隨機元素φ1,…φ1的函數(shù)和從第二用戶傳送元素e到第一用戶,以便使得第一用戶能通過計算估算e,f1,…fn的函數(shù)F的R中的結(jié)果A,計算該集陪集表示式CQ中的A的陪集表示式a,計算估算a,f1,…fn的函數(shù)G的結(jié)果B,計算該集陪集表示式Cp中的B的陪集表示式b,并計算估算b,f1,…fn的函數(shù)H的該集陪集表示式Cp中的結(jié)果C來確定消息元素m。
33.權(quán)利要求32所述方法,其中消息元素m滿足條件m為Cp的一元素。
34.權(quán)利要求32所述方法,其中第一用戶通過計算a、b、c、f1、…fn的一函數(shù)來確定消息元素m。
35.權(quán)利要求32所述方法,其中公用密鑰元素h1、…h(huán)k滿足條件在R中對于i在1與k之間元素f1、積hifk+1對模理想數(shù)Q同余。
36.權(quán)利要求32所述方法,其中專用密鑰元素f1、…fk+1滿足條件元素f1…fk是在理想數(shù)P中。
37.權(quán)利要求32所述方法,其中專用隨機元素φ1…φk是在理想數(shù)p中。
38.權(quán)利要求32所述方法,其中作為公用密鑰元素h1…h(huán)k、專用隨機元素φ1,…φk+1,和專用消息元素m的函數(shù)而生成的元素e被生成作為CQ的一元素,該e、φ1h1+φ2h2+…φkhk+φk+m對模理想數(shù)Q同余。
39.權(quán)利要求32所述方法,其中估算e,f1,…fn的函數(shù)F的結(jié)果A是乘積efk+1。
40.權(quán)利要求32所述方法,其中估算a,f1…fn的函數(shù)G的結(jié)果B是元素a。
41.權(quán)利要求32所述方法,其中估算a,f1,…fn的函數(shù)H的該集陪集表示式Cp中的結(jié)果C滿足條件Cfk+1、b對模理想數(shù)P同余。
42.權(quán)利要求32所述方法,其中結(jié)果C等于該集陪集表示式Cp中消息m的陪集表示式。
43.權(quán)利要求32所述方法,其中環(huán)R是由次數(shù)N的首一多項式M(X)生成的R的一變量X模理想數(shù)中的多項式的一環(huán),其中,R的理想數(shù)Q是由一整數(shù)q生成的理想數(shù),R的理想數(shù)P是由一整數(shù)P生成的理想數(shù),該集陪集表示式CQ是具有一固定集陪集表示式模q中的系數(shù)的R中的次數(shù)至多N-1的該集多項式,且其中該集陪集表示式Cp是具有一固定集陪集表示式模P中的系數(shù)的R中的次數(shù)至多N-1的該集多項式。
44.權(quán)利要求43所述方法,其中專用密鑰元素f1…fn,R中的專用消息元素m,和專用隨機元素φ1…φ1滿足條件包括有在它們系數(shù)上的邊界。
45.權(quán)利要求32所述方法,其中環(huán)R是非交換的。
46.權(quán)利要求32所述方法,其中元素h1,…h(huán)k被在CQ中生成是根據(jù)條件對于在1與k之間的每一個i,在R中元素fk+1hifk+2、f1對模理想數(shù)Q同余。
47.權(quán)利要求32所述方法,其中專用密鑰元素f1,…fk是在理想數(shù)P中。
48.權(quán)利要求32所述方法,其中專用附機元素φ1,…φ2k+1滿足條件元素φ1…φk是在理想數(shù)P中。
49.權(quán)利要求45所述方法,其中作為公用密鑰元素h1,…,hk,專用隨機元素φ1,…,φ2k+1,和專用消息元素m的函數(shù)生成的元素e被生成作為CQ的一元素,該e、φ1h1φK+1+φ2h2φK+2+…+φkhkφ2k+φ2k+1+m對模理想數(shù)Q同余。
50.權(quán)利要求32所述方法,其中環(huán)R是一具有整數(shù)系數(shù)的矩陣環(huán),R的理想數(shù)Q是所有可被一固定整數(shù)q除的矩陣所構(gòu)成的理想數(shù),R的理想數(shù)P是所有可被一固定整數(shù)P除的矩陣所構(gòu)成的理想數(shù),該集陪集表示式CQ是具有一固定集陪集表示式模q中的系數(shù)的R的該集元素,且該集陪集表示式Cp是具有一固定集陪集表示式模P中的系數(shù)的R的該集元素。
51.權(quán)利要求50所述方法,其中專用密鑰元素f1,…fn,專用消息元素m,和專用隨機元素φ1,…φ1滿足條件包括在它們系數(shù)上的邊界。
52.權(quán)利要求50所述方法,其中專用隨機元素φ1,…φn滿足條件φ1,…φ1是識別矩陣的常數(shù)倍數(shù)。
53.權(quán)利要求32所述方法,其中環(huán)R是一群G的群環(huán),R的理想數(shù)Q由整數(shù)q生成的理想數(shù),R的理想數(shù)P為由整數(shù)P生成的理想數(shù),該集陪集表示式CQ為具有一固定集陪集表示式模q中的系數(shù)的R的該集元素,和該集陪集表示式Cp是具有一固定集陪集表示式模P中的系數(shù)的R的該集元素。
54.權(quán)利要求53所述方法,其中專用密鑰元素f1,…fn,專用消息元素m,和專用隨機元數(shù)φ1,…φ1滿足條件包括在它們系數(shù)上的邊界。
55.權(quán)利要求32所述方法,其中環(huán)R是采用服從二面關(guān)系XN=1,Y2=1,和XY=YXN-1的二變量X和Y的多項式非交換環(huán),R的理想數(shù)Q是由整數(shù)q生成的理想數(shù),R的理想數(shù)P是由整數(shù)P生成的理想數(shù),該集陪集表示式CQ是采用具有從一集陪集表示式模q中選擇的系數(shù)的變量X的次數(shù)至多N-1的R中的該集多項式,且其中該集陪集表示式Cp是采用具有從一固定集陪集表示式模P選擇的變量X的次數(shù)至多N-1的R中的該集多項式。
56.權(quán)利要求55所述方法,其中專用密鑰元素f1…fn,專用消息元素m,和專用隨機元素φ1,…φ1滿足條件包括有它們中一些在滿足條件Yψ=ψY的R的所有元素ψ構(gòu)成的R的交換子環(huán)R0中的條件。
全文摘要
公用密鑰密碼系統(tǒng)編碼技術(shù)利用一基于多項式代數(shù)和換算模2數(shù)的混合系統(tǒng),同時譯碼技術(shù)則利用一其有效性取決于基本概率論的分離系統(tǒng)。用于編碼和譯碼數(shù)字消息的方法包括步驟:選擇環(huán)R的理想數(shù)p和q(305):生成環(huán)R的元素f和g(325),和生成作為f(mod q)的反量的元素F
文檔編號G09C1/00GK1232588SQ97198451
公開日1999年10月20日 申請日期1997年8月19日 優(yōu)先權(quán)日1996年8月19日
發(fā)明者杰弗里·霍夫施泰因, 吉爾·皮弗, 約瑟夫·H·西爾弗曼 申請人:Ntru密碼系統(tǒng)公司