本發(fā)明屬于信息安全技術(shù)領(lǐng)域,涉及多變量公鑰及消息的簽名認證,特別涉及一種抵抗密鑰恢復(fù)攻擊的多變量簽名方法。
背景技術(shù):數(shù)字簽名是一種用于鑒別數(shù)字信息的方法,是公鑰密碼體制的主要應(yīng)用之一,又稱為公鑰數(shù)字簽名。在公鑰密碼體制中,數(shù)字簽名技術(shù)的原理主要是將消息用發(fā)送方的私鑰簽名(加密),與原文一起傳送給接收者。接收者用發(fā)送者的公鑰對簽名進行解密,將解得的值與原文進行對比:相同,則接收方就認為該簽名為合法而接收;否則認為是非法簽名而拒絕。因此,數(shù)字簽名常由兩種算法成對兒構(gòu)成,一個用于簽名,一個用于驗證,通信雙方能夠在公開網(wǎng)絡(luò)環(huán)境中進行數(shù)字信息(消息)的簽名和驗證。數(shù)字簽名的安全性需要保證確定消息來源正確,其它人無法偽造。目前應(yīng)用于消息的數(shù)字簽名,其安全理論大多是基于數(shù)論中的大整數(shù)分解的困難性。然而,美國科學(xué)家PeterShor于1995年提出了一種量子分解算法,它通過利用量子計算的并行性,可以在多項式時間內(nèi)快速分解出大數(shù)的質(zhì)因子和離散對數(shù)問題,也就是說,量子計算機的產(chǎn)生,對現(xiàn)有基于傳統(tǒng)密碼體制的數(shù)字簽名的安全性構(gòu)成了嚴(yán)重的威脅。多變量公鑰體制是有限域上根據(jù)多變量非線性方程組的求解問題而設(shè)計的密碼系統(tǒng),其安全性基于求解一組多變量多項式方程是一NP-C困難問題,目前被認作是量子時代的一種安全的密碼體制備選方案,04年提出的簽名方案Flash入選了歐洲密碼計劃NRSSIE,成為密碼研究中很有潛力的技術(shù)之一。作為一種新的研究方向,相對于傳統(tǒng)的簽名體制,多變量體制比基于數(shù)論的體制具有更高的效率、安全性,且更易于硬件實現(xiàn)的優(yōu)點,但是,現(xiàn)有的多變量簽名方案中還存在以下問題:標(biāo)準(zhǔn)簽名模型的驗證條件僅依賴公鑰,驗證單一,也就是說在密鑰恢復(fù)攻擊下,即使偽造者不知道真正的合法私鑰,也有可能通過公鑰P的精巧結(jié)構(gòu)反解該公鑰對應(yīng)的等價密鑰而獲取一個可以通過公鑰驗證的“合法”簽名,究其本質(zhì)原因主要是因為簽名驗證不涉及內(nèi)部私鑰信息的驗證。而目前,在以多變量公鑰體制為基礎(chǔ)的簽名方案中,還沒有產(chǎn)生能抵抗密鑰恢復(fù)攻擊的安全的多變量簽名方案。因此,在設(shè)計新的多變量簽名方案時有必要將上述這些問題考慮在內(nèi)并盡量避免。
技術(shù)實現(xiàn)要素:為了克服上述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種更為安全的、可以抵抗密鑰恢復(fù)攻擊的多變量簽名方法;該方法是在有限域上基于多個變量的多項式方程組建立而來的一種對簽名和認證方法,該方法可有效抵抗密鑰恢復(fù)攻擊,為量子計算機時代的信息安全和信任體系的建立提供基礎(chǔ)技術(shù)支撐,是量子時代一種安全的數(shù)字簽名備選方案,特別適用于存儲空間和運算時間受限的場合,如智能卡、無線傳感網(wǎng)絡(luò)和動態(tài)RFID標(biāo)簽。為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:通過增加簽名附加值,以建立新的簽名驗證條件,該驗證條件隱含著對內(nèi)部信息x和y的驗證,從而可有效抵抗由等價密鑰的存在而產(chǎn)生的密鑰恢復(fù)攻擊。具體地,一種抵抗密鑰恢復(fù)攻擊的多變量簽名方法,包括以下步驟:步驟1,選擇系統(tǒng)參數(shù)取一個有限域正整數(shù)n和m,的n次擴域記為的m次擴域記為取到上的一組多變量二次多項式方程q1(x1,…,xn),…,qm(x1,…,xn),記為Q,則Q就表示多變量公鑰密碼體制的中心映射,其中輸入變量為n個,輸出變量為m個,用Q-1表示多項式Q的逆多項式,Q-1為合法用戶所有,另取和上可逆仿射變換S和T為秘密鑰,其逆多項式分別記為S-1和T-1,再隨機選取上的一組n個n元二次多變量多項式方程組(g1(x1,…,xn),…,gn(x1,…,xn)),該多項式向量記為G,即G(x1,…,xn)=(g1(x1,…,xn),…,gn(x1,…,xn)),以及兩個單向不可逆的多項式方程組H和用戶的秘密鑰由S、T、G三部分構(gòu)成,H和為可信第三方秘密選取,但僅用于公鑰的產(chǎn)生,其中G的逆多項式表示為G-1,對應(yīng)的公鑰由五個多項式構(gòu)成,分別為:P=TоQоS,HоG-1оS,HоS,其中運算符о表示運算的合成,即從右向左依次進行代入計算;步驟2,簽名的產(chǎn)生已知消息M的編碼為向量(u1,…,um),記做u,簽名按以下步驟生成簽名:(2.1)產(chǎn)生前向簽名(2.1a)由秘密鑰T-1,將消息M的編碼u=(u1,…,um)代入到T-1中,得到(y1,…,ym),記為y;(2.1b)將所得結(jié)果y代入到中心映射Q的逆變換Q-1中,得到(x1,…,xn),記為x;(2.1c)將所得結(jié)果x代入到秘密鑰S的逆S-1中,得到(v1,…,vn),記為v,則v即為消息M的編碼u的前向簽名;(2.2)產(chǎn)生后向簽名(2.2a)將所得結(jié)果x代入到秘密鑰G中,得到G(x1,…,xn)=(g1(x1,…,xn),…,gn(x1,…,xn))=(g1,…,gn),記為g;(2.2b)將所得結(jié)果g代入到秘密鑰S的逆S-1中,得到S-1(g)=S-1оG(x)=(vg1,…,vgn),記為vg,則vg即為消息M的編碼u的后向簽名;(2.3)前向簽名和后向簽名的級聯(lián)v||vg即為消息M的編碼u的簽名;步驟3,簽名的驗證(3.1)利用公鑰P進行驗證(3.1a)將前向簽名v=(v1,…,vn)代入公鑰P中,得到P(v1,…,vn)=(p1(v1,…,vn),…,pm(v1,…,vn)),其結(jié)果記為u′=(u′1,…,u′n);(3.1b)判斷u′是否和原消息M的編碼u相等;(3.2)利用公鑰HоS和HоG-1оS進行驗證(3.2a)將前向簽名v=(v1,…,vn)代入到公鑰HоS中,得到HоS(v)=HоS(v1,…,vn)=H(S(v1,…,vn)),其結(jié)果記為h=(h1,…,hn);(3.2b)將后向簽名vg=(vg1,…,vgn)代入到公鑰HоG-1оS中,得到其結(jié)果記為h′=(h′1,…,h′n);(3.2c)判斷h和h′是否相等;(3.3)利用公鑰和進行驗證(3.3a)對消息M的編碼u,將u代入公鑰得到其結(jié)果記為(3.3b)對后向簽名vg,將vg代入公鑰得到其結(jié)果記為(3.3c)判斷和是否相等;若(3.1b)、(3.2c)和(3.3c)均成立時,則v||vg即為消息M的編碼u的合法簽名,否則為無效簽名,拒絕。所述步驟1中,S、T、G均為可逆仿射變換。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:1)本發(fā)明是基于多變量公鑰密碼體制的簽名模型,因此可抵抗常規(guī)的量子攻擊;2)本發(fā)明是基于有限域上的多變量多項式方程組的公鑰密碼體制,其運算為加和低次的乘運算,不存在指數(shù)和求逆運算,因此比傳統(tǒng)的基于數(shù)論的體制更為高效和安全;3)本發(fā)明所產(chǎn)生的簽名由兩部分構(gòu)成:前向簽名v和后向簽名vg,前向簽名v的產(chǎn)生必須擁有合法秘密鑰S、T,后向簽名vg的獲得必須擁有合法秘密鑰S、G、T才能完成,因此,相對于已有的多變量簽名方案的僅有前向簽名v,本發(fā)明則增加了攻擊者的難度;4)本發(fā)明所產(chǎn)生的簽名v||vg是由相互關(guān)聯(lián)的兩部分v和vg組成,且v和vg需要滿足有關(guān)秘密鑰S、G、T的兩個潛在的關(guān)聯(lián)驗證:S(v)=x=G-1оS(vg)和T-1(u)=y(tǒng)=QоG-1оS(vg),這兩個驗證式的成立當(dāng)且僅當(dāng)擁有正確的私鑰S、g和T,僅有公鑰而沒有合法私鑰S、g和T無法求得后向簽名,因此,較現(xiàn)有簽名模型的驗證僅是u滿足公鑰P,本發(fā)明具有后向簽名的關(guān)聯(lián)驗證,可有效抵抗密鑰恢復(fù)攻擊,更為安全。附圖說明圖1是本發(fā)明簽名產(chǎn)生原理示意圖。圖2是本發(fā)明簽名驗證原理示意圖。具體實施方式下面結(jié)合附圖和實施例詳細說明本發(fā)明的實施方式。一、本發(fā)明所應(yīng)用的數(shù)學(xué)理論(1)有限域有限域是一個包含兩個運算加和乘的有限個元素的集合,且滿足對加法和乘法均具有結(jié)合律、交換律、非零元有逆元和乘法對加法的分配率等性質(zhì)。域中元素的個數(shù)稱為該域的階數(shù),q階有限域,常記為或簡記為有限域上的運算為模運算。(2)變換是一個有限域,稱之為一個變換,是指存在變化規(guī)則使得(x1,…,xn)經(jīng)過該變化規(guī)則變成為(y1,…,yn),該變化規(guī)則記為f,稱之為變換。(3)多變量問題多變量問題也簡稱為多變量二次-困難問題。由于多變量公鑰密碼體制的安全性是基于有限域上求解一組多變量非線性多項式方程:p1(x1,…,xn)=p2(x1,…,xn)=…=pm(x1,…,xn)=0,求解該問題為一NP-C問題,其中pi的系數(shù)和變量均取自有限域通常方程pi取為二次,基于多變量問題構(gòu)造的方案,前安全性基礎(chǔ)來自于從公鑰二次方程的直接破解的困難性,即已知公鑰求解方程組為一個非多項式時間完全(NP-C)困難問題。二、實施方式步驟1,選擇系統(tǒng)參數(shù)取一個有限域正整數(shù)n和m,的n次擴域記為的m次擴域記為取到上的一組多變量二次多項式方程q1(x1,…,xn),…,qm(x1,…,xn),記為Q,則Q就表示多變量公鑰密碼體制的中心映射,其中輸入變量為n個,輸出變量為m個,用Q-1表示多項式Q的逆多項式,Q-1為合法用戶所有。另取和上可逆仿射變換S和T為秘密鑰,其逆多項式分別記為S-1和T-1。再隨機選取上的一組n個n元二次多變量多項式方程組(g1(x1,…,xn),…,gn(x1,…,xn)),該多項式向量記為G,即G(x1,…,xn)=(g1(x1,…,xn),…,gn(x1,…,xn)),以及兩個單向不可逆的多項式方程組H和用戶的秘密鑰由S、T、G三部分構(gòu)成,H和為可信第三方秘密選取,但僅用于公鑰的產(chǎn)生,其中G的逆多項式表示為G-1。對應(yīng)的公鑰由五個多項式構(gòu)成,分別為:P=TоQоS,HоG-1оS,HоS,其中運算符о表示運算的合成,即從右向左依次進行代入計算。步驟2,簽名的產(chǎn)生已知消息M的編碼為向量(u1,…,um),記做u,參照圖1,簽名則按以下步驟生成簽名:(2.1)產(chǎn)生前向簽名。(2.1a)由秘密鑰T-1,將消息M的編碼u=(u1,…,um)代入到T-1中,得到(y1,…,ym),記為y;(2.1b)將上述(2.1a)中所得結(jié)果y代入到中心映射Q的逆變換Q-1中,得到(x1,…,xn),記為x;(2.1c)將(2.1b)中所得結(jié)果x代入到秘密鑰S的逆S-1中,得到(v1,…,vn),記為v,則v即為消息M的編碼u的前向簽名。(2.2)產(chǎn)生后向簽名。(2.2a)將上述(2.1b)中所得結(jié)果x代入到秘密鑰G中,得到G(x1,…,xn)=(g1(x1,…,xn),…,gn(x1,…,xn))=(g1,…,gn),記為g;(2.2b)將上述(2.2a)中所得結(jié)果g代入到秘密鑰S的逆S-1中,得到S-1(g)=S-1оG(x)=(vg1,…,vgn),記為vg則vg即為消息M的編碼u的后向簽名;(2.3)前向簽名和后向簽名的級聯(lián)v||vg即為消息M的編碼u的簽名。參照圖2,本發(fā)明中的簽名驗證的具體實現(xiàn)如下:步驟3,簽名的驗證(3.1)利用公鑰P進行驗證。(3.1a)將前向簽名v=(v1,…,vn)代入公鑰P中,得到P(v1,…,vn)=(p1(v1,…,vn),…,pm(v1,…,vn)),其結(jié)果記為u′=(u′1,…,u′n);(3.1b)判斷u′是否和原消息M的編碼u相等。(3.2)利用公鑰HоS和HоG-1оS進行驗證。(3.2a)將前向簽名v=(v1,…,vn)代入到公鑰HоS中,得到HоS(v)=HоS(v1,…,vn)=H(S(v1,…,vn)),其結(jié)果記為h=(h1,…,hn);(3.2b)將后向簽名vg=(vg1,…,vgn)代入到公鑰HоG-1оS中,得到其結(jié)果記為h′=(h′1,…,h′n)(3.2c)判斷h和h′是否相等。(3.3)利用公鑰和進行驗證。(3.3a)對消息M的編碼u,將u代入公鑰得到其結(jié)果記為(3.3b)對后向簽名vg,將vg代入公鑰得到其結(jié)果記為(3.3c)判斷和是否相等。若(3.1b)、(3.2c)和(3.3c)均成立時,則v||vg即為消息M的編碼u的合法簽名,否則為無效簽名,拒絕。本發(fā)明所提出的基于有限域上的簽名方案是正確的,可以抵抗密鑰恢復(fù)攻擊。簽名的正確性設(shè)接收方收到簽名v||vg,若該簽名是按上述步驟逐步產(chǎn)生,并且在傳輸過程中沒有發(fā)生改變,則由于(1)因為前向簽名v是由消息M的編碼(u1,…,um)依次經(jīng)過秘密鑰T-1、中心映射Q-1、秘密鑰S-1產(chǎn)生,即有v=(v1,…,vn)=S-1оQ-1оT-1(u1,…,um),則顯然,將所得前向簽名v代入到公鑰P中,有P(v)=P(S-1оQ-1оT-1(u1,…,um))=PоS-1оQ-1оT-1(u)=TоQоSоS-1оQ-1оT-1(u)=u成立,即驗證式(3.1b)成立。(2)由后向簽名vg=S-1оG(x1,…,xn)、前向簽名v=S-1(x1,…,xn),則顯然有S(v)=(x1,…,xn)=G-1оS(vg),進而得到HоS(v)和HоG-1оS(vg)相等,即驗證式(3.2c)成立。(3)由后向簽名vg=S-1оG(x1,…,xn)和消息M的編碼u,則有QоG-1оS(vg)=y(tǒng)=T-1(u),進而有HоG-1оS(vg)=HоS(v)成立,即驗證式(3.3c)成立。簽名的抗偽造性本發(fā)明所提出的基于多變量多項式的簽名方案對已知公鑰偽造簽名攻擊是不可偽造的。下面,從密碼理論上證明本發(fā)明的數(shù)字簽名方案可抵抗簽名偽造攻擊,特別是,針對多變量體制的密鑰恢復(fù)攻擊。證明:眾所周知,多變量體制有一個“等價密鑰”的特性,即同一個公鑰對應(yīng)于多個私鑰,也稱為“密鑰冗余”,體現(xiàn)為:兩個不同私鑰(T,Q,S)和(T′,Q,S′),卻有TоQоS=P=T′оQоS′。因此,密鑰恢復(fù)攻擊是指攻擊者在攻擊多變量方案時,即使得不到正確的私鑰(T,Q,S),但是只要能得到一個等價的私鑰(T′,Q,S′),也能攻擊成功。而本發(fā)明所提出的模型可有效抵抗該攻擊。證明如下:攻擊者想成功偽造一個簽名,則必須有能通過(3.1b)、(3.2c)和(3.3c)成立的前向簽名v和后向簽名vg。然而即使偽造者可通過密鑰恢復(fù)攻擊獲得一個等價密鑰(T′,Q,S′),求出一個前向簽名,記為和后向簽名,記為也無法通過(3.1c)和(3.2c)的驗證。這是因為,公鑰HоG-1оS和HоS限制了該簽名的產(chǎn)生用到的私鑰必須為S而不能是等價的私鑰,如公鑰和則限制了該簽名的產(chǎn)生用到的私鑰必須為T而不能是等價的私鑰,如因此,在沒有正確私鑰S和T的情況下,偽造者即使能通過等價密鑰恢復(fù)攻擊產(chǎn)生一個簽名,但因為該簽名并不是由正確私鑰S和T產(chǎn)生,所以該簽名無法通過(3.2c)和(3.3c)的驗證成為有效簽名。如果攻擊者隨機猜測一個前向簽名和后向簽名則因為和均是取自q階有限域的n元向量,所以成功的概率僅為(q為有限域的階數(shù))。綜上,本發(fā)明可有效抵抗針對于多變量簽名體制的等價密鑰恢復(fù)攻擊。三、實施例選取HFE(HiddenFieldEquations)多變量體制的中心映射為例,簽名方案如下:(1)HFE方案。設(shè)是一q階有限域,是的n次擴域,是擴域到向量空間的同構(gòu)映射,為π(a0+a1x+…+an-1xn-1)=(a0,…,an-1)。中心映射:其中次數(shù)是二次項系數(shù),是一次項系數(shù),是常數(shù)項,這些系數(shù)為隨機選取,次數(shù)需小于某個參數(shù)d。是一個可逆變換,可以通過域上的Berlekamp算法的一個變體來求,該步的復(fù)雜度為O(nd2logd+d3),因此參數(shù)d不能太大。中心映射Q(x1,…,xn)是到的映射,為:其中,qi(x1,…,xn),i=1,…,m是n個變量的二次多項式方程。令S,T是上的兩個隨機可逆仿射變換,則定義P(x1,…,xn)=(p1(x1,…,xn),…,pn(x1,…,xn))=TоQоS(x1,…,xn)。這里每一個多項式均為二次。該體制作為簽名算法,過程如下。Alice要給Bob發(fā)送一個經(jīng)她自己簽了名的消息(v1,…,vn),首先用自己的私鑰SAlice,TAlice對消息M的編碼(u1,…,um)進行簽名:(I)計算(II)計算(III)計算然后將消息(u1,…,um)和簽名(v1,…,vn)經(jīng)通信網(wǎng)絡(luò)一起發(fā)送給Bob。Bob經(jīng)公共信道收到Alice的消息(u1,…,um)和簽名(v1,…,vn),欲判斷該簽名是否真的來自于Alice,于是Bob找到公開的Alice的公鑰PAlice進行驗證。Bob對簽名(v1,…,vn),利用PAlice,計算PAlice(v1,…,vn),記結(jié)果為(u′1,…,u′m),然后判斷該值(u′1,…,u′m)是否和原消息(u1,…,um)相等,若相等則接受其簽名(v1,…,vn),否則拒絕。多變量體制用作簽名方案時,和傳統(tǒng)多變量簽名模型一樣,僅需要通過公鑰驗證,對用戶是否擁有合法秘密鑰不做驗證,原始的HFE體制已經(jīng)被破解:99年,Kipins和Shamir利用再線性化方法提出了一種有效的密鑰恢復(fù)攻擊。(2)下面,取Q為HFE體制的中心映射。Alice為給出一個安全的簽名,選擇一個可逆的二次的多變量多項式GAlice作為私鑰和兩個隨機的單向不可逆多項式H和作為輔助函數(shù)。當(dāng)Alice要給Bob發(fā)送一個經(jīng)她自己簽了名的消息(u1,…,um)時,(I)利用私鑰TAlice,計算(II)計算(III)利用私鑰SAlice,計算(IV)利用私鑰GAlice,計算GAlice=G(x1,…,xn)=(g1(x1,…,xn),…,gn(x1,…,xn))=(g1,…,gn);(V)利用私鑰SAlice,計算(vg1,…,vgn)=S-1(g)=S-1оG(x);(VI)將(v1,…,vn)和(vg1,…,vgn)級聯(lián),得到v1,…,vn||vg1,…,vgn即為消息(u1,…,um)的簽名。Bob經(jīng)公共信道收到Alice發(fā)來的消息(u1,…,um)和簽名v1,…,vn||vg1,…,vgn。Bob欲判斷該簽名是否真的來自于Alice。Bob找到公開的Alice的公鑰PAlice,HоSAlice,HоG-1оSAlice,然后對簽名v1,…,vn||vg1,…,vgn進行驗證:(I)Bob用Alice的公鑰PAlice,將前向簽名v=(v1,…,vn)代入到PAlice中,得到的結(jié)果記為(u′1,…,u′m),判斷該值(u′1,…,u′m)是否和原消息(u1,…,um)相等,若相等,則進行第(II)步判斷,否則拒絕。(II)Bob將前向簽名(v1,…,vn)代入Alice的公鑰HоSAlice,得到(h1,…,hn)=HоSAlice(v1,…,vn),然后將后向簽名(vg1,…,vgn)代入Alice的公鑰HоG-1оSAlice中,記結(jié)果為(h′1,…,h′n)=HоG-1оSAlice(vg1,…,vgn),斷該值(h′1,…,h′n)是否和(h1,…,hn)相等,若相等,則Bob接受該消息的簽名,否則拒絕該簽名。(III)Bob將后向簽名(vg1,…,vgn)代入到得到得到結(jié)果記為將消息(u1,…,um)代入到公鑰得到結(jié)果記為然后判斷是和是否相等,若相等,則Bob接受該消息的簽名,否則簽名無效,拒絕。顯然,將新模型應(yīng)用于該HFE,對于同一個消息(u1,…,um),簽名由原來的(v1,…,vn)變成了v1,…,vn||vg1,…,vgn,驗證時除了原有的用公鑰P驗證P(v1,…,vn)是否等于(u1,…,un),還需額外驗證和私鑰相關(guān)的HоG-1оSAlice(v1,…,vn)是否和相等,和是否相等。三式都通過驗證才能得到v1,…,vn||vg1,…,vgn是一個正確簽名,該方案可有效抵抗密鑰恢復(fù)攻擊,較原有方案有效的提高其安全性。