本發(fā)明涉及一種信息安全領(lǐng)域,特別涉及一種多變量公鑰的簽名系統(tǒng)和方法。
背景技術(shù):
:目前公鑰密碼的安全性主要依賴于大整數(shù)分解和離散對數(shù)求解等困難問題,如RSA、ECC等。然而,自提出在量子計算機上能夠?qū)崿F(xiàn)大整數(shù)分解和離散對數(shù)求解的方法后,這類傳統(tǒng)的公鑰密碼便受到巨大的威脅,影響到各個行業(yè)。因此,人們致力于尋找一種能夠抵御量子計算機攻擊的密碼系統(tǒng)以滿足信息安全的需求,并將這類系統(tǒng)稱為后量子密碼,而多變量公鑰密碼(MPKC)便是其中的一種。MPKC的簽名方案在后量子密碼中占有重要地位,原因在于MPKC簽名方案是現(xiàn)有一種能抵御量子攻擊的簽名方案,UOV和Rainbow就是很好的例子。然而現(xiàn)有的MPKC簽名方案也有它的局限:簽名速度不快,私鑰存儲量大。簽名速度不快的原因是在生成簽名的過程中,MPKC的簽名方案都需要進行大量的有限域上的矩陣乘法運算,而且還要進行有限域上的矩陣求逆;私鑰存儲量大的原因是MPKC的簽名方案都需要存儲所有涉及的變量的參數(shù)。那么在實際生產(chǎn)應(yīng)用中就會是一個問題。技術(shù)實現(xiàn)要素:本發(fā)明的第一目的在于克服現(xiàn)有技術(shù)的缺點與不足,提供一種多變量公鑰的簽名系統(tǒng),該簽名系統(tǒng)在保證簽名不可偽造安全的情況下,能夠加快多變量公鑰簽名的速度,同時降低私鑰的存儲量。本發(fā)明的第二目的在于提供一種上述簽名系統(tǒng)實現(xiàn)的多變量公鑰的簽名方法。本發(fā)明的第一目的通過下述技術(shù)方案實現(xiàn):一種多變量公鑰的簽名系統(tǒng),其特征在于,包括第一處理器、第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;所述第一處理器,用于接收待簽名的消息并且將接收到的待簽名的消息發(fā)送至第一線性仿射變換部件,用于生成隨機數(shù)并且將生成的隨機數(shù)發(fā)送至陷門部件;所述第一線性仿射變換部件,用于對接收到的待簽名的消息進行仿射變換計算,然后將仿射變換計算結(jié)果發(fā)送至陷門部件;所述陷門部件,用于根據(jù)私鑰參數(shù)生成多變量多項式方程組,用于將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解,并且將得到的解傳送給第二線性仿射變換部件;所述第二線性仿射變換部件,用于對陷門部件發(fā)送的解進行仿射變換計算得到簽名。優(yōu)選的,所述第一處理器包第一調(diào)度器、第一存儲器和隨機數(shù)生成器;所述第一調(diào)度器連接選擇開關(guān),用于識別第一處理器所接收到的開狀態(tài)信號和閉狀態(tài)信號,通過選擇開關(guān)控制第一處理器的工作狀態(tài);用于將存儲在第一處理器中的數(shù)據(jù)調(diào)度至第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;用于將簽名發(fā)送給其他用戶;第一存儲器,用于存儲第一處理器中的數(shù)據(jù);用于存儲簽名;隨機數(shù)生成器,用于隨機生成隨機數(shù)。優(yōu)選的,所述陷門部件包括矩陣輪轉(zhuǎn)器、矩陣運算器、多項式和矩陣轉(zhuǎn)換器以及多項式運算器;矩陣運算器,用于生成矩陣;用于對矩陣進行基本運算和轉(zhuǎn)換;多項式和矩陣轉(zhuǎn)換器,用于將矩陣轉(zhuǎn)換為多項式;用于將多項式轉(zhuǎn)換成矩陣;多項式運算器,用于求取多項式在有限域中的逆;用于對多項式進行基本運算;矩陣輪轉(zhuǎn)器,用于對矩陣進行輪轉(zhuǎn)。本發(fā)明的第二目的通過下述技術(shù)方案實現(xiàn):一種基于上述多變量公鑰的簽名系統(tǒng)實現(xiàn)的多變量公鑰簽名方法,步驟如下:S1、系統(tǒng)初始化:隨機生成私鑰參數(shù),并且存儲于第一處理器中;S2、第一處理器接收待簽名的消息,然后將待簽名的消息發(fā)送至第一線性仿射變換部件;S3、第一線性仿射變換部件對接收到的待簽名的消息進行仿射變換計算,然后將仿射變換結(jié)果發(fā)送至陷門部件;同時第一處理器中隨機生成一組隨機數(shù)發(fā)送至陷門部件;S4、陷門部件根據(jù)私鑰參數(shù)生成多變量多項式方程組,然后將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解,最后將得到的解傳送給第二線性仿射變換部件;S5、第二線性仿射變換部件接收到陷門部件發(fā)送的解后,對其進行仿射變換計算,最終得到簽名。更進一步的,所述步驟S1中系統(tǒng)初始化的具體步驟如下:S1-1、設(shè)定系統(tǒng)中所有部件都是建立在一個階為p的有限域上,其中p是一個奇素數(shù),記此有限域為GFp;S1-2、根據(jù)安全級別選擇系數(shù)v,r,s,其中v是隨機數(shù)的個數(shù),r是第一次生成簽名的長度,s是第二次生成簽名的長度,此外h=v+r,n=h+s,m=r+s,m是簽名的總長度;S1-3、隨機生成可逆的系數(shù)矩陣和將系數(shù)矩陣寫入第一線性仿射變換部件中;將系數(shù)矩陣寫入第二線性仿射變換部件中;S1-4、生成如下私鑰參數(shù):隨機生成一組維度為v×v的矩陣A1,隨機生成一組維度為v×r的矩陣B1,隨機生成r組維度為v×1的矩陣Ci,隨機生成一組維度為r×1的矩陣D1,隨機生成s組維度為h×h的矩陣Ar+j,隨機生成一組維度為h×s矩陣Br+1,隨機生成s組維度為h×1矩陣Cr+j,,隨機生成一組維度為s×1的矩陣Dr+1,隨機生成m個常數(shù)Ek,其中i=1,2,3,…,r,j=1,2,3,…,s,k=1,2,3,…,m。更進一步的,步驟S3中第一線性仿射變換部件在接收到的待簽名的消息后,根據(jù)系數(shù)矩陣針對待簽名的消息進行仿射變換,得到:L1-1(Y′)=[y‾1′,y‾2′,...,y‾m′];]]>其中Y′=[y′1,y′2,…,y′m]為待簽名的消息,表示待簽名的消息仿射變換后的結(jié)果;所述步驟S3中第一處理器隨機生成一組隨機數(shù)并且發(fā)送給陷門部件;步驟S4中陷門部件根據(jù)私鑰參數(shù)生成多變量多項式方程組,并且將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解的具體過程如下:S4-1-1、陷門部件調(diào)用參數(shù)B1,D1,r,使用矩陣運算器計算出中間值矩陣其中l(wèi)1,0至l1,r-1為中間值矩陣l1中的元素;S4-1-2、使用多項式和矩陣轉(zhuǎn)換器將矩陣l1轉(zhuǎn)換成多項式其中x為多項式f1中的變量,f1為有限域GFp的多項式;S4-1-3、使用多項式運算器計算多項式f1在有限域中的逆g1,其中其中xi在i為r時得到xr;S4-1-4、使用多項式和矩陣轉(zhuǎn)換器將g1轉(zhuǎn)換成矩陣w1=[ω1,ω2,…,ωr];其中ω1至ωr是矩陣w1中的元素;然后使用矩陣輪轉(zhuǎn)器對矩陣w1進行輪轉(zhuǎn)處理,得到矩陣wi=[ωr-i+2,…,ωr,ω1,ω2,…,ωr-i+1],i=2,3,…,r;S4-1-5、使用矩陣運算器生成矩陣然后計算det(W1),判斷det(W1)=0是否成立,若是,則第一處理器重新隨機生成一組隨機數(shù)V1,然后回到步驟S4-1-1,若否,則進入步驟S4-2-1;S4-2-1、陷門部件調(diào)用參數(shù)A1,Ci,Ei,r,v,使用矩陣運算器計算中間值矩陣K′1=[k′1,k′2,…,k′v]=A1V1,k′1至k′v為矩陣K′1中的元素;S4-2-2、使用矩陣輪轉(zhuǎn)器對矩陣K′1進行輪轉(zhuǎn)處理,得到矩陣K′i=[k′v-i+2,…,k′v,k′1,k′2,…,k′v-i+1],i=1,2,…,r;S4-2-3、通過矩陣運算器計算通過矩陣運算器計算Q1=[q1,q2,…,qr],其中i=1,2,…,r;為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;S4-3-1、使用矩陣運算器計算矩陣W1和矩陣Q1的乘積,得到其中h=v+r,至為矩陣W1和矩陣Q1的乘積后的矩陣中的元素;S4-3-2、根據(jù)隨機數(shù)V1和步驟S4-3-1獲取到的矩陣生成矩陣S4-4-1、陷門部件調(diào)用參數(shù)Br+1,Dr+1,s,使用矩陣運算器計算中間值矩陣其中l(wèi)2,0至l2,s-1為矩陣l2中的元素;S4-4-2、使用多項式和矩陣轉(zhuǎn)換器將矩陣l2轉(zhuǎn)換成多項式f2為有限域GFp的多項式;S4-4-3、使用多項式運算器計算多項式f2在有限域中的逆g2,其中其中xi在i為s時得到xs;S4-4-4、使用多項式和矩陣轉(zhuǎn)換器將g2轉(zhuǎn)換成矩陣其中至是矩陣u1中的元素;然后使用矩陣輪轉(zhuǎn)器對矩陣u1進行輪轉(zhuǎn)處理,得到矩陣i=2,3,…,s;S4-4-5、使用矩陣運算器生成矩陣然后計算det(U2),判斷det(U2)=0是否成立,若是,則第一處理器重新生成一組隨機數(shù)V1,然后回到步驟S4-1-1,若否,則進入步驟S4-5-1;S4-5-1、陷門部件調(diào)用私鑰參數(shù)Ai,Ci,Ei,s,m,使用矩陣運算器計算中間值i=r+1,r+2,…,m,m=r+s;S4-5-2、計算Q2=[q1,q2,…,qs],其中i=r+1,r+2,…,m;為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;S4-6-1、使用矩陣運算器計算矩陣U2和矩陣Q2的乘積,得到其中n=h+s,至為矩陣U2和矩陣Q2的乘積后的矩陣中的元素;S4-6-2、根據(jù)隨機數(shù)V2和步驟S4-6-1獲取到的矩陣生成矩陣矩陣V3即為陷門部件得到的解;所述步驟S5中第二線性仿射變換部件在接收到陷門部件發(fā)送的解V3后,根據(jù)系數(shù)矩陣針對陷門部件發(fā)送的解進行仿射變換,得到:L2-1(V3)=[x1′,x2′,...,xn′];]]>將作為簽名sig,將簽名sig發(fā)送至第一存儲器中存儲。更進一步的,將步驟S5中獲取到簽名及該簽名對應(yīng)的消息輸入至簽名驗證系統(tǒng),所述簽名驗證系統(tǒng)包括第二處理器和公鑰變換部件;所述第二處理器,用于接收公鑰、簽名及簽名對應(yīng)的消息簽名,用于將公鑰和簽名發(fā)送至公鑰變換部件;用于接收公鑰變換部件返回的運算結(jié)果,將運算結(jié)果和消息進行比較,若運算結(jié)果和消息相等,則簽名的驗證結(jié)果為通過驗證;其中公鑰由隨機生成的私鑰和隨機生成的私鑰輪轉(zhuǎn)得到的私鑰生成;所述公鑰變換部件,用于將接收到的簽名與公鑰進行運算,然后將運算結(jié)果返回給第二處理器。更進一步的,所述第二處理器包括第二調(diào)度器和第二存儲器;所述第二調(diào)度器連接選擇開關(guān),用于識別第二處理器所接收到的開狀態(tài)信號和閉狀態(tài)信號,通過選擇開關(guān)控制第二處理器的工作狀態(tài);用于將存儲在第一處理器中的數(shù)據(jù)調(diào)度至公鑰變換部件;用于將簽名驗證結(jié)果發(fā)送給其他用戶;第二存儲器,用于存儲簽名及簽名對應(yīng)的消息;用于存儲公鑰變換部件返回的運算結(jié)果。更進一步的,所述步驟S1還包括以下步驟:針對隨機生成的私鑰參數(shù)進行輪轉(zhuǎn),然后根據(jù)隨機生成的私鑰參數(shù)及其輪轉(zhuǎn)后獲取的私鑰參數(shù)生成公鑰參數(shù),并且將生成的公鑰參數(shù)進行公布;所述簽名驗證系統(tǒng)實現(xiàn)的簽名驗證方法具體如下:S6、第二處理器接收公鑰、簽名及簽名對應(yīng)消息,并且將公鑰和簽名發(fā)送至公鑰變換部件;S7、公鑰變換部件將接收到的簽名與公鑰進行運算,然后將運算結(jié)果返回給第二處理器;S8、第二處理器接收到公鑰變換部件發(fā)送的運算結(jié)果后,將運算結(jié)果和消息進行比較,若運算結(jié)果和消息相等,則簽名的驗證結(jié)果為通過驗證。更進一步的,所述步驟S1中生成公鑰的步驟具體如下:S1-5、初始化中心映射F=(F1,F2,…,Fm),其中Fi的維度為(n+1)×(n+1),i=1,2,3,…,m;其中Fi=Fi′000,1≤i≤rFi′,r+1≤i≤m;]]>其中Fi′=AiBiCi00Di00Ei;]]>當(dāng)1≤i≤r時,矩陣Ai獲取過程如下:首先根據(jù)步驟S1-4中得到維度為v×v的矩陣A1,計算A1的轉(zhuǎn)置得到矩陣其中a1至ar為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理后得到矩陣AiT=[av-i+2,...,av,a1,...,av-i+1],i=2,3,...,r;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Ai,i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Ai即為步驟S1-4中隨機生成的s組維度為h×h的矩陣Ar+j;當(dāng)1≤i≤r時,矩陣Bi獲取過程如下:首先根據(jù)步驟S1-4得到維度為v×r的矩陣B1:B1=[b1,b2,…,br];其中b1至br為矩陣B1中的元素;然后對矩陣B1進行輪轉(zhuǎn)處理后得到矩陣Bi:Bi=[br-i+2,…,br,b1,…,br-i+1],i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Bi獲取過程如下:首先根據(jù)步驟S1-4得到維度為h×s矩陣Br+1:Br+1=[b′1,b′2,…,b′s];其中b′1至b′s為矩陣Br+1中的元素;然后對矩陣Br+1進行輪轉(zhuǎn)處理得到矩陣Bi:Bi=[b′s-i+2,…,b′s,b′1,…,b′s-i+1],i=r+2,r+3,…,m;其中矩陣Ci即為步驟S1-4隨機生成的r組維度為v×1的矩陣Ci;當(dāng)1≤i≤r時,矩陣Di獲取過程如下:首先根據(jù)步驟S1-4得到維度為r×1的矩陣D1,計算D1的轉(zhuǎn)置得到矩陣其中d1至dr為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理后得到矩陣DiT=[dr-i+2,...,dr,d1,...,dr-i+1],i=2,3,...,r;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Di獲取過程如下:首先根據(jù)步驟S1-4得到維度為s×1的矩陣Dr+1,計算Dr+1的轉(zhuǎn)置得到矩陣其中d′1至d′s為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理得到DiT=[ds-i+2′,...,ds′,d1′,...,ds-i+1′];i=r+2,r+3,...,m;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=r+2,r+3,…,m;其中矩陣Ei即為步驟S1-4隨機生成m個常數(shù)Ek,k=1,2,3,…,m;S1-6、計算公鑰P=L1οFοL2,其中具體計算過程如下:首先計算公鑰的中間值P′:P′=[P′1,P′2,…,P′m];其中i=1,2,3,…,m;,Lc為隨機值;然后根據(jù)中間值P′計算出公鑰P為:P=L1×P′=[P1,P2,…,Pm];其中P1至Pm為公鑰P中各元素;所述步驟S7中公鑰變換部件對簽名與公鑰進行運算的具體過程如下:將簽名sig=[x′1,x′2,…,x′n]帶入公鑰P=[P1,P2,…,Pm]中,得到:z1=P1×sigT1;z2=P2×sigT1;...zm=Pm×sigT1;]]>得到Z=[z1,z2,…,zm]作為運算結(jié)果;所述步驟S8中,第二處理器將公鑰變換部件返回的運算結(jié)果Z=[z1,z2,…,zm]與消息Y=[y1,y2,…,ym]進行比較,若兩者相等,則簽名sig=[x′1,x′2,…,x′n]驗證通過。本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果:(1)本發(fā)明簽名系統(tǒng)由第一處理器、第一線性仿射變換部件、陷門部件和第二線性仿射變換部件組成,通過第一處理器生成隨機數(shù),以及通過第一處理器接收待簽名的消息并且發(fā)送至第一線性仿射變換部件,第一線性仿射變換部件對接收到的待簽名的消息進行仿射變換后發(fā)送給陷門部件,陷門部件根據(jù)私鑰參數(shù)生成多變量多項式方程組,并且將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解,第二線性仿射變換部件對陷門部件得到的解進行仿射變換變換后即得到簽名;本發(fā)明在保證簽名不可偽造的情況下,加快了多變量公鑰簽名的速度,同時降低私鑰的存儲量。(2)本發(fā)明簽名系統(tǒng)簽名過程中使用了輪轉(zhuǎn)方法,對私鑰的部分參數(shù)進行循環(huán)生成,而且保證了不破壞MPKC原本的安全性。陷門部件在獲取多變量多項式方程組時所采用的代表的是方程組變量的系數(shù),雖然系數(shù)的值受這三個值影響,但是最后帶入的是一個確定的值,而且系數(shù)矩陣的特征值不能為0;而對于方程來說是常量,因此陷門部件生成的多變量多項式的方程組必然有解。另外陷門部件在生成V2未確定的值時,私鑰參數(shù)Bi,Di,Ai進行輪轉(zhuǎn)生成,而私鑰參數(shù)Ci,Ei沒用輪轉(zhuǎn)生成,這樣保證了陷門部件中生成的多變量多項式的整個方程組不是輪轉(zhuǎn)的,因此不能通過得到某一項方程組的值而得到所有的方程組的值,因此保障了本發(fā)明簽名的安全性。(3)本發(fā)明使用的簽名方法加快了生成簽名的速度。在進行輪轉(zhuǎn)的地方和現(xiàn)有技術(shù)相比,輪轉(zhuǎn)的只需要做簡單的n-1次向量交換,而現(xiàn)有技術(shù)的做法都是要進行有限域上的矩陣乘法,相差速度顯而易見,特別地,根據(jù)式子在處理時,本發(fā)明是先求此種子向量,然后轉(zhuǎn)換為多項式求逆再輪轉(zhuǎn)生成Wj,而一般技術(shù)做法是先求出組合成再求逆,本發(fā)明根據(jù)輪轉(zhuǎn)的特性,一個輪轉(zhuǎn)的矩陣其逆也是輪轉(zhuǎn)的,然后通過轉(zhuǎn)換成求多項式f在擴域上的逆g而代替了矩陣求逆的過程,使得最后生成Wj總的時間復(fù)雜度是O(n(logn)2),而現(xiàn)有技術(shù)中時間復(fù)雜度是O(n3)。(4)本發(fā)明使用的方法降低了私鑰的存儲大小,本發(fā)明自需要存在隨機生成的私鑰參數(shù),對于發(fā)生輪轉(zhuǎn)的私鑰參數(shù)只需要使用矩陣輪轉(zhuǎn)器就能生成對應(yīng)的參數(shù),所以現(xiàn)有技術(shù)需要存儲私鑰參數(shù)A,B,C,D,E各m組以及系數(shù)矩陣本發(fā)明只需存儲m組私鑰參數(shù)C,E、兩組私鑰參數(shù)B,D,s+1組私鑰參數(shù)A以及系數(shù)矩陣大大降低了私鑰的存儲空間。(5)本發(fā)明中所使用的多變量公鑰通過私鑰以及輪轉(zhuǎn)生成的私鑰生成的,公鑰中雖然部分系數(shù)組成是輪轉(zhuǎn)的,但是中心映射F整體不是輪轉(zhuǎn)的,在經(jīng)過線性仿射后公鑰整體更加體現(xiàn)不出輪轉(zhuǎn)的性質(zhì),所以其安全性是有保障的。附圖說明圖1是本發(fā)明中多變量公鑰的簽名系統(tǒng)的結(jié)構(gòu)框圖。圖2是本發(fā)明中簽名驗證系統(tǒng)的結(jié)構(gòu)框圖。具體實施方式下面結(jié)合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。實施例本實施例公布了一種多變量公鑰的簽名系統(tǒng),如圖1所示,包括第一處理器、第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;所述第一處理器,用于接收待簽名的消息并且將接收到的待簽名的消息發(fā)送至第一線性仿射變換部件,用于生成隨機數(shù)并且將生成的隨機數(shù)發(fā)送至陷門部件;所述第一線性仿射變換部件,用于對接收到的待簽名的消息進行仿射變換計算,然后將仿射變換計算結(jié)果發(fā)送至陷門部件;所述陷門部件,用于根據(jù)私鑰參數(shù)生成多變量多項式方程組,用于將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解,并且將得到的解傳送給第二線性仿射變換部件;其中私鑰包括隨機生成的私鑰以及隨機生成的私鑰輪轉(zhuǎn)得到的私鑰;所述第二線性仿射變換部件,用于對陷門部件發(fā)送的解進行仿射變換計算得到簽名。如圖1中所示,本實施例的第一處理器包第一調(diào)度器、第一存儲器和隨機數(shù)生成器;第一調(diào)度器連接選擇開關(guān),用于識別第一處理器所接收到的開狀態(tài)信號和閉狀態(tài)信號,通過選擇開關(guān)控制第一處理器的工作狀態(tài);用于將存儲在第一處理器中的數(shù)據(jù)調(diào)度至第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;用于將簽名發(fā)送給其他用戶;第一存儲器,用于存儲第一處理器中的數(shù)據(jù);用于存儲簽名;隨機數(shù)生成器,用于隨機生成隨機數(shù)。如圖1中所示,本實施例的陷門部件包括矩陣輪轉(zhuǎn)器、矩陣運算器、多項式和矩陣轉(zhuǎn)換器以及多項式運算器;矩陣運算器,用于生成矩陣;用于對矩陣進行基本運算和轉(zhuǎn)換;多項式和矩陣轉(zhuǎn)換器,用于將矩陣轉(zhuǎn)換為多項式;用于將多項式轉(zhuǎn)換成矩陣;多項式運算器,用于求取多項式在有限域中的逆;用于對多項式進行基本運算;矩陣輪轉(zhuǎn)器,用于對矩陣進行輪轉(zhuǎn)。本實施例中還公布了一種上述多變量公鑰的簽名系統(tǒng)實現(xiàn)的多變量公鑰的簽名方法,步驟如下:S1、系統(tǒng)初始化:隨機生成私鑰參數(shù),并且將私鑰參數(shù)存儲在第一處理器中,然后針對隨機生成的私鑰參數(shù)進行輪轉(zhuǎn),根據(jù)隨機生成的私鑰參數(shù)及其輪轉(zhuǎn)后獲取的私鑰參數(shù)生成公鑰參數(shù)。其中初始化過程中隨機生成的私鑰參數(shù)存儲于第一處理器中,而生成的公鑰參數(shù)進行公布。本步驟中系統(tǒng)初始化隨機生成私鑰參數(shù)的具體步驟如下:S1-1、設(shè)定系統(tǒng)中所有部件都是建立在一個階為p的有限域上,其中p是一個奇素數(shù),記此有限域為GFp;S1-2、根據(jù)安全級別選擇系數(shù)v,r,s,其中v是隨機數(shù)的個數(shù),r是第一次生成簽名的長度,s是第二次生成簽名的長度,此外h=v+r,n=h+s,m=r+s,m是簽名的總長度;S1-3、隨機生成可逆的系數(shù)矩陣和將系數(shù)矩陣用于第一線性仿射變換部件中;將系數(shù)矩陣用于第二線性仿射變換部件中;S1-4、生成如下私鑰參數(shù):隨機生成一組維度為v×v的矩陣A1,隨機生成一組維度為v×r的矩陣B1,隨機生成r組維度為v×1的矩陣Ci,隨機生成一組維度為r×1的矩陣D1,隨機生成s組維度為h×h的矩陣Ar+j,隨機生成一組維度為h×s矩陣Br+1,隨機生成s組維度為h×1矩陣Cr+j,,隨機生成一組維度為s×1的矩陣Dr+1,隨機生成m個常數(shù)Ek,其中i=1,2,3,…,r,j=1,2,3,…,s,k=1,2,3,…,m;本步驟系統(tǒng)初始化中公鑰參數(shù)的生成過程具體如下;S1-5、初始化中心映射F=(F1,F2,…,Fm),其中映射中Fi的維度為(n+1)×(n+1),i=1,2,3,…,m;其中Fi=Fi′000,1≤i≤rFi′,r+1≤i≤m;]]>其中Fi′=AiBiCi00Di00Ei;]]>當(dāng)1≤i≤r時,矩陣Ai獲取過程如下:首先根據(jù)步驟S1-4中得到維度為v×v的矩陣A1,計算A1的轉(zhuǎn)置得到矩陣其中a1至ar為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理后得到矩陣AiT=[av-i+2,...,av,a1,...,av-i+1],i=2,3,...,r;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Ai,i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Ai即為步驟S1-4中隨機生成的s組維度為h×h的矩陣Ar+j;當(dāng)1≤i≤r時,矩陣Bi獲取過程如下:首先根據(jù)步驟S1-4得到維度為v×r的矩陣B1:B1=[b1,b2,…,br];其中b1至br為矩陣B1中的元素;然后對矩陣B1進行輪轉(zhuǎn)處理后得到矩陣Bi:Bi=[br-i+2,…,br,b1,…,br-i+1],i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Bi獲取過程如下:首先根據(jù)步驟S1-4得到維度為h×s矩陣Br+1:Br+1=[b′1,b′2,…,b′s];其中b′1至b′s為矩陣Br+1中的元素;然后對矩陣Br+1進行輪轉(zhuǎn)處理得到矩陣Bi:Bi=[b′s-i+2,…,b′s,b′1,…,b′s-i+1],i=r+2,r+3,…,m;其中矩陣Ci即為步驟S1-4隨機生成的r組維度為v×1的矩陣Ci;當(dāng)1≤i≤r時,矩陣Di獲取過程如下:首先根據(jù)步驟S1-4得到維度為r×1的矩陣D1,計算D1的轉(zhuǎn)置得到矩陣其中d1至dr為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理后得到矩陣DiT=[dr-i+2,...,dr,d1,...,dr-i+1],i=2,3,...,r;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=2,3,…,r;當(dāng)r+1≤i≤m時,矩陣Di獲取過程如下:首先根據(jù)步驟S1-4得到維度為s×1的矩陣Dr+1,計算Dr+1的轉(zhuǎn)置得到矩陣其中d′1至d′s為矩陣中的元素;然后對矩陣進行輪轉(zhuǎn)處理得到DiT=[ds-i+2′,...,ds′,d1′,...,ds-i+1′];i=r+2,r+3,...,m;]]>最后計算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=r+2,r+3,…,m;其中矩陣Ei即為步驟S1-4隨機生成m個常數(shù)Ek,k=1,2,3,…,m;S1-6、計算公鑰P=L1οFοL2,其中具體計算過程如下:首先計算公鑰的中間值P′:P′=[P′1,P′2,…,P′m];其中i=1,2,3,…,m;,Lc為隨機值;然后根據(jù)中間值P′計算出公鑰P為:P=L1×P′=[P1,P2,…,Pm];其中步驟S1-2生成的參數(shù)v,r,s,h,n、步驟S1-3生成的系數(shù)矩陣和以及步驟S1-4生成的各私鑰參數(shù)均存儲于第一處理器的第一存儲器中。而步驟S1-6中生成的公鑰P進行公布。在本實施例中第一處理器通過第一調(diào)度器將步驟S1-2生成的參數(shù)v,r,s,h,n,以及步驟S1-4生成的各私鑰參數(shù)調(diào)度至陷門部件中,將步驟S1-3生成的系數(shù)矩陣和分別對應(yīng)調(diào)度至第一線性仿射變換部件和第二線性仿射變換部件。S2、第一處理器接收待簽名的消息,然后將待簽名的消息發(fā)送至第一線性仿射變換部件。S3、第一線性仿射變換部件對接收到的待簽名的消息進行仿射變換計算,然后將仿射變換結(jié)果發(fā)送至陷門部件;同時第一處理器中隨機生成一組隨機數(shù)發(fā)送至陷門部件。在本步驟中第一線性仿射變換部件在接收到的待簽名的消息后,根據(jù)系數(shù)矩陣針對待簽名的消息進行仿射變換,得到:L1-1(Y′)=[y‾1′,y‾2′,...,y‾m′];]]>其中Y′=[y′1,y′2,…,y′m]為待簽名的消息,表示待簽名的消息仿射變換后的結(jié)果。S4、陷門部件根據(jù)私鑰參數(shù)生成多變量多項式方程組,然后將接收到的隨機數(shù)和仿射變換結(jié)果代入至多變量多項式方程組中進行求解,最后將得到的解傳送給第二線性仿射變換部件;具體過程如下:S4-1-1、陷門部件調(diào)用參數(shù)B1,D1,r,使用矩陣運算器計算出中間值矩陣其中l(wèi)1,0至l1,r-1為中間值矩陣l1中的元素;S4-1-2、使用多項式和矩陣轉(zhuǎn)換器將矩陣l1轉(zhuǎn)換成多項式其中x為多項式f1中的變量,f1為有限域GFp的多項式;S4-1-3、使用多項式運算器計算多項式f1在有限域中的逆g1,其中其中xi在i為r時得到xr;S4-1-4、使用多項式和矩陣轉(zhuǎn)換器將g1轉(zhuǎn)換成矩陣w1=[ω1,ω2,…,ωr];其中ω1至ωr是矩陣w1中的元素;然后使用矩陣輪轉(zhuǎn)器對矩陣w1進行輪轉(zhuǎn)處理,得到矩陣wi=[ωr-i+2,…,ωr,ω1,ω2,…,ωr-i+1],i=2,3,…,r;S4-1-5、使用矩陣運算器生成矩陣然后計算det(W1),判斷det(W1)=0是否成立,若是,則第一處理器重新隨機生成一組隨機數(shù)V1,然后回到步驟S4-1-1,若否,則進入步驟S4-2-1;S4-2-1、陷門部件調(diào)用參數(shù)A1,Ci,Ei,r,v,使用矩陣運算器計算中間值矩陣K′1=[k′1,k′2,…,k′v]=A1V1,k′1至k′v為矩陣K′1中的元素;S4-2-2、使用矩陣輪轉(zhuǎn)器對矩陣K′1進行輪轉(zhuǎn)處理,得到矩陣K′i=[k′v-i+2,…,k′v,k′1,k′2,…,k′v-i+1],i=1,2,…,r;S4-2-3、通過矩陣運算器計算通過矩陣運算器計算Q1=[q1,q2,…,qr],其中i=1,2,…,r;為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;S4-3-1、使用矩陣運算器計算矩陣W1和矩陣Q1的乘積,得到其中h=v+r,至為矩陣W1和矩陣Q1的乘積后的矩陣中的元素;S4-3-2、根據(jù)隨機數(shù)V1和步驟S4-3-1獲取到的矩陣生成矩陣S4-4-1、陷門部件調(diào)用參數(shù)Br+1,Dr+1,s,使用矩陣運算器計算中間值矩陣其中l(wèi)2,0至l2,s-1為矩陣l2中的元素;S4-4-2、使用多項式和矩陣轉(zhuǎn)換器將矩陣l2轉(zhuǎn)換成多項式f2為有限域GFp的多項式;S4-4-3、使用多項式運算器計算多項式f2在有限域中的逆g2,其中其中xi在i為s時得到xs;S4-4-4、使用多項式和矩陣轉(zhuǎn)換器將g2轉(zhuǎn)換成矩陣其中至是矩陣u1中的元素;然后使用矩陣輪轉(zhuǎn)器對矩陣u1進行輪轉(zhuǎn)處理,得到矩陣i=2,3,…,s;S4-4-5、使用矩陣運算器生成矩陣然后計算det(U2),判斷det(U2)=0是否成立,若是,則第一處理器重新生成一組隨機數(shù)V1,然后回到步驟S4-1-1,若否,則進入步驟S4-5-1;S4-5-1、陷門部件調(diào)用私鑰參數(shù)Ai,Ci,Ei,s,m,使用矩陣運算器計算中間值i=r+1,r+2,…,m,m=r+s;S4-5-2、計算Q2=[q1,q2,…,qs],其中i=r+1,r+2,…,m;為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;S4-6-1、使用矩陣運算器計算矩陣U2和矩陣Q2的乘積,得到其中n=h+s,至為矩陣U2和矩陣Q2的乘積后的矩陣中的元素;S4-6-2、根據(jù)隨機數(shù)V2和步驟S4-6-1獲取到的矩陣生成矩陣矩陣V3即為陷門部件得到的解。S5、第二線性仿射變換部件接收到陷門部件發(fā)送的解后,對其進行仿射變換計算,最終得到簽名。具體為:第二線性仿射變換部件在接收到陷門部件發(fā)送的解V3后,根據(jù)系數(shù)矩陣針對陷門部件發(fā)送的解進行仿射變換,得到:L2-1(V3)=[x1′,x2′,...,xn′];]]>將作為簽名sig,將簽名sig發(fā)送至第一存儲器中存儲。本實施例中上述步驟S5獲取到簽名及該簽名對應(yīng)的消息輸入至簽名驗證系統(tǒng),通過簽名驗證系統(tǒng)對簽進行驗證,如圖2所示,本實施例的簽名驗證系統(tǒng)包括第二處理器和公鑰變換部件。第二處理器,用于接收公鑰、簽名及簽名對應(yīng)的消息,用于將公鑰和簽名發(fā)送至公鑰變換部件;用于接收公鑰變換部件返回的運算結(jié)果,將運算結(jié)果和消息進行比較,若運算結(jié)果和消息相等,則簽名的驗證結(jié)果為通過驗證;其中公鑰由隨機生成的私鑰和隨機生成的私鑰輪轉(zhuǎn)得到的私鑰生成。公鑰變換部件,用于將接收到的簽名與公鑰進行運算,然后將運算結(jié)果返回給第二處理器。如圖2所示,本實施例中第二處理器包括第二調(diào)度器和第二存儲器;第二調(diào)度器連接選擇開關(guān),用于識別第二處理器所接收到的開狀態(tài)信號和閉狀態(tài)信號,通過選擇開關(guān)控制第二處理器的工作狀態(tài);用于將存儲在第一處理器中的數(shù)據(jù)調(diào)度至公鑰變換部件;用于將簽名驗證結(jié)果發(fā)送給其他用戶;第二存儲器,用于存儲簽名及簽名對應(yīng)的消息;用于存儲公鑰變換部件返回的運算結(jié)果。本實施例中通過上述簽名驗證系統(tǒng)實現(xiàn)簽名的驗證過程,具體如下:S6、第二處理器接收公鑰、消息及消息對應(yīng)的簽名,并且將公鑰和簽名發(fā)送至公鑰變換部件。S7、公鑰變換部件將接收到的簽名與公鑰進行運算,然后將運算結(jié)果返回給第二處理器;其中本步驟中簽名與公鑰進行運算的具體過程如下:將簽名sig=[x′1,x′2,…,x′n]帶入公鑰P=[P1,P2,…,Pm]中,得到:z1=P1×sigT1;z2=P2×sigT1;...zm=Pm×sigT1;]]>得到Z=[z1,z2,…,zm]作為運算結(jié)果。S8、第二處理器接收到公鑰變換部件發(fā)送的運算結(jié)果后,將運算結(jié)果和消息進行比較,若運算結(jié)果和消息相等,則簽名的驗證結(jié)果為通過驗證。具體如下:第二處理器將公鑰變換部件返回的運算結(jié)果Z=[z1,z2,…,zm]與消息Y=[y1,y2,…,ym]進行比較,若兩者相等,則輸出1,表示簽名sig=[x′1,x′2,…,x′n]驗證通過,若兩者不相等,則輸出0,表示簽名sig=[x′1,x′2,…,x′n]驗證不通過。本實施例中簽名驗證系統(tǒng)的第二處理器的第二調(diào)度器連接的選擇開關(guān)和簽名系統(tǒng)中的第一處理器的第一調(diào)度器所連接的選擇開關(guān)為同一個,通過該選擇開關(guān)控制第一處理器和第二處理器的工作狀態(tài),當(dāng)選擇開關(guān)開狀態(tài)時,簽名系統(tǒng)工作,此時通過步驟S2至S5生成消息對應(yīng)的簽名,當(dāng)選擇開關(guān)為閉狀態(tài)時,簽名驗證系統(tǒng)工作,此時通過步驟S6至S8對步驟S5中生成的消息的簽名進行驗證。以下為采用本實施例上述簽名系統(tǒng)的簽名方法和采用上述簽名驗證系統(tǒng)的的簽名驗證方法具體例子。在簽名方法上,初始化如下:在步驟S1-1中設(shè)定系統(tǒng)中所有部件都是建立在一個階為p=31的有限域上,這些元素分別為{0,1,…,30},其中p是一個奇素數(shù),記此有限域為GFp;其中域上定義的加法和乘法均為整數(shù)的加法和乘法之后mod31。在步驟S1-2中選取v=3,r=2,s=1,得出h=5,n=6,m=3;在步驟S1-3中隨機生成可逆的系數(shù)矩陣和分別為:L1-1=202416261178;]]>L2-1=2134241617151152642513251713218409182322315202730481614181019;]]>在步驟S1-4中生成如下私鑰參數(shù):A1=21022286287229,A3=5412244247628197332115300573111652330]]>B1=6683040,B3T=[19222610]]]>C1=1142,C2=92312,C3T=[1819141618]]]>D1=617,D3=[18]]]>E1=[3],E2=[13],E3=[1]在步驟S1-5中輪轉(zhuǎn)生成A2,B2;在步驟S1-6中計算公鑰P:P=L1οFοL2;可得:P1=205111619141502361527123631630125634212316020531718292522291111510299253820230;]]>P2=161530273271352019295527172417165101254310930142015662911111242316330258193142516;]]>P3=14358101918134286823141122026202326162020121242239451731002228728212688218;]]>在上述系統(tǒng)初始化后,對待簽名的消息為Y′=[21,25,19]生成簽名,具體如下:在步驟S2第一處理器接收待簽名的消息為Y′=[21,25,19],然后將待簽名的消息Y′=[21,25,19]發(fā)送至第一線性仿射變換部件。在步驟S3中第一線性仿射變換部件在接收到的待簽名的消息Y′=[21,25,19]后,根據(jù)系數(shù)矩陣針對待簽名的消息進行仿射變換,得到:然后將發(fā)送至陷門部件。同時第一處理器中隨機生成一組隨機數(shù)V1=[14,29,21]發(fā)送至陷門部件在步驟S4-1-1至步驟S4-1-5中計算生成多項式f1=3+10x,計算得到向量w1=[17,26],生成det(W1)≠0,繼續(xù)下一步。在步驟S4-2-1至S4-2-3中計算中間值K′1=[k′1,k′2,…,k′v]=A1V1=[5,7,26];輪轉(zhuǎn)生成K′i,最后計算Q1=[q1,q2]=[0,8]。在步驟S4-3-1至SS4-3-2中計算得出V2=[14,29,21,22,12];在步驟S4-4-1至S4-4-5中計算中生成多項式f2=7,計算得到向量u1=[9],生成U2=[9],det(U2)≠0,繼續(xù)下一步;在步驟S4-5-1至S4-5-2中計算Q2=[17];在步驟S4-6-1至S4-6-2中計算得出V3=[14,29,21,22,12,29];在步驟S5中將V3輸入到第二線性仿射部件中計算得出簽名在以下步驟S6和S7中實現(xiàn)對消息Y=[21,25,19]對應(yīng)的簽名sig=[9,22,12,5,4,16]進行驗證,具體如下:在步驟S6中第二處理器接收公鑰P=[P1,P2,P3]、消息Y=[21,25,19]及消息對應(yīng)的簽名sig=[9,22,12,5,4,16],并且將公鑰P發(fā)送至公鑰變換部件;在步驟S7中公鑰部件將簽名sig=[9,22,12,5,4,16]帶入公鑰P=[P1,P2,P3]中進行運算,得到z1=P1×sigT1=21;]]>z2=P2×sigT1=25;]]>z3=P3×sigT1=19;]]>得到Z=[21,25,19]作為運算結(jié)果,并且返回給第二處理器。在步驟S8中第二處理器接收到公鑰變換部件發(fā)送的運算結(jié)果Z=[21,25,19]后,將運算結(jié)果Y=[21,25,19]和消息Y=[21,25,19]進行比較,比較后發(fā)現(xiàn)兩則相同,則第二處理器輸出“1”,表示消息Y=[21,25,19]對應(yīng)的簽名sig=[9,22,12,5,4,16]驗證通過。上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁1 2 3