1.一種多變量公鑰的簽名系統(tǒng),其特征在于,包括第一處理器、第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;
所述第一處理器,用于接收待簽名的消息并且將接收到的待簽名的消息發(fā)送至第一線性仿射變換部件,用于生成隨機(jī)數(shù)并且將生成的隨機(jī)數(shù)發(fā)送至陷門部件;
所述第一線性仿射變換部件,用于對(duì)接收到的待簽名的消息進(jìn)行仿射變換計(jì)算,然后將仿射變換計(jì)算結(jié)果發(fā)送至陷門部件;
所述陷門部件,用于根據(jù)私鑰參數(shù)生成多變量多項(xiàng)式方程組,用于將接收到的隨機(jī)數(shù)和仿射變換結(jié)果代入至多變量多項(xiàng)式方程組中進(jìn)行求解,并且將得到的解傳送給第二線性仿射變換部件;
所述第二線性仿射變換部件,用于對(duì)陷門部件發(fā)送的解進(jìn)行仿射變換計(jì)算得到簽名。
2.根據(jù)權(quán)利要求1所述的多變量公鑰的簽名系統(tǒng),其特征在于,所述第一處理器包第一調(diào)度器、第一存儲(chǔ)器和隨機(jī)數(shù)生成器;
所述第一調(diào)度器連接選擇開關(guān),用于識(shí)別第一處理器所接收到的開狀態(tài)信號(hào)和閉狀態(tài)信號(hào),通過選擇開關(guān)控制第一處理器的工作狀態(tài);用于將存儲(chǔ)在第一處理器中的數(shù)據(jù)調(diào)度至第一線性仿射變換部件、陷門部件和第二線性仿射變換部件;用于將簽名發(fā)送給其他用戶;
第一存儲(chǔ)器,用于存儲(chǔ)第一處理器中的數(shù)據(jù);用于存儲(chǔ)簽名;
隨機(jī)數(shù)生成器,用于隨機(jī)生成隨機(jī)數(shù)。
3.根據(jù)權(quán)利要求1所述的多變量公鑰的簽名系統(tǒng),其特征在于,所述陷門部件包括矩陣輪轉(zhuǎn)器、矩陣運(yùn)算器、多項(xiàng)式和矩陣轉(zhuǎn)換器以及多項(xiàng)式運(yùn)算器;
矩陣運(yùn)算器,用于生成矩陣;用于對(duì)矩陣進(jìn)行基本運(yùn)算和轉(zhuǎn)換;
多項(xiàng)式和矩陣轉(zhuǎn)換器,用于將矩陣轉(zhuǎn)換為多項(xiàng)式;用于將多項(xiàng)式轉(zhuǎn)換成矩陣;
多項(xiàng)式運(yùn)算器,用于求取多項(xiàng)式在有限域中的逆;用于對(duì)多項(xiàng)式進(jìn)行基本運(yùn)算;
矩陣輪轉(zhuǎn)器,用于對(duì)矩陣進(jìn)行輪轉(zhuǎn)。
4.一種基于權(quán)利要求1所述的多變量公鑰的簽名系統(tǒng)實(shí)現(xiàn)的多變量公鑰的簽名方法,其特征在于,步驟如下:
S1、系統(tǒng)初始化:隨機(jī)生成私鑰參數(shù),并且存儲(chǔ)于第一處理器中;
S2、第一處理器接收待簽名的消息,然后將待簽名的消息發(fā)送至第一線性仿射變換部件;
S3、第一線性仿射變換部件對(duì)接收到的待簽名的消息進(jìn)行仿射變換計(jì)算,然后將仿射變換結(jié)果發(fā)送至陷門部件;同時(shí)第一處理器中隨機(jī)生成一組隨機(jī)數(shù)發(fā)送至陷門部件;
S4、陷門部件根據(jù)私鑰參數(shù)生成多變量多項(xiàng)式方程組,然后將接收到的隨機(jī)數(shù)和仿射變換結(jié)果代入至多變量多項(xiàng)式方程組中進(jìn)行求解,最后將得到的解傳送給第二線性仿射變換部件;
S5、第二線性仿射變換部件接收到陷門部件發(fā)送的解后,對(duì)其進(jìn)行仿射變換計(jì)算,最終得到簽名。
5.根據(jù)權(quán)利要求4所述的多變量公鑰的簽名方法,其特征在于,所述步驟S1中系統(tǒng)初始化的具體步驟如下:
S1-1、設(shè)定系統(tǒng)中所有部件都是建立在一個(gè)階為p的有限域上,其中p是一個(gè)奇素?cái)?shù),記此有限域?yàn)镚Fp;
S1-2、根據(jù)安全級(jí)別選擇系數(shù)v,r,s,其中v是隨機(jī)數(shù)的個(gè)數(shù),r是第一次生成簽名的長(zhǎng)度,s是第二次生成簽名的長(zhǎng)度,此外h=v+r,n=h+s,m=r+s,m是簽名的總長(zhǎng)度;
S1-3、隨機(jī)生成可逆的系數(shù)矩陣和將系數(shù)矩陣寫入第一線性仿射變換部件中;將系數(shù)矩陣寫入第二線性仿射變換部件中;
S1-4、生成如下私鑰參數(shù):隨機(jī)生成一組維度為v×v的矩陣A1,隨機(jī)生成一組維度為v×r的矩陣B1,隨機(jī)生成r組維度為v×1的矩陣Ci,隨機(jī)生成一組維度為r×1的矩陣D1,隨機(jī)生成s組維度為h×h的矩陣Ar+j,隨機(jī)生成一組維度為h×s矩陣Br+1,隨機(jī)生成s組維度為h×1矩陣Cr+j,,隨機(jī)生成一組維度為s×1的矩陣Dr+1,隨機(jī)生成m個(gè)常數(shù)Ek,其中i=1,2,3,…,r,j=1,2,3,…,s,k=1,2,3,…,m。
6.根據(jù)權(quán)利要求5所述的多變量公鑰的簽名方法,其特征在于,
步驟S3中第一線性仿射變換部件在接收到的待簽名的消息后,根據(jù)系數(shù)矩陣針對(duì)待簽名的消息進(jìn)行仿射變換,得到:
其中Y′=[y′1,y′y,…,y′m]為待簽名的消息,表示待簽名的消息仿射變換后的結(jié)果;
所述步驟S3中第一處理器隨機(jī)生成一組隨機(jī)數(shù)并且發(fā)送給陷門部件;
步驟S4中陷門部件根據(jù)私鑰參數(shù)生成多變量多項(xiàng)式方程組,并且將接收到的隨機(jī)數(shù)和仿射變換結(jié)果代入至多變量多項(xiàng)式方程組中進(jìn)行求解的具體過程如下:
S4-1-1、陷門部件調(diào)用參數(shù)B1,D1,r,使用矩陣運(yùn)算器計(jì)算出中間值矩陣其中l(wèi)1,0至l1,r-1為中間值矩陣l1中的元素;
S4-1-2、使用多項(xiàng)式和矩陣轉(zhuǎn)換器將矩陣l1轉(zhuǎn)換成多項(xiàng)式其中x為多項(xiàng)式f1中的變量,f1為有限域GFp的多項(xiàng)式;
S4-1-3、使用多項(xiàng)式運(yùn)算器計(jì)算多項(xiàng)式f1在有限域中的逆g1,其中其中xi在i為r時(shí)得到xr;
S4-1-4、使用多項(xiàng)式和矩陣轉(zhuǎn)換器將g1轉(zhuǎn)換成矩陣w1=[ω1,ω2,…,ωr];其中ω1至ωr是矩陣w1中的元素;然后使用矩陣輪轉(zhuǎn)器對(duì)矩陣w1進(jìn)行輪轉(zhuǎn)處理,得到矩陣wi=[ωr-i+2,…,ωr,ω1,ω2,…,ωr-i+1],i=2,3,…,r;
S4-1-5、使用矩陣運(yùn)算器生成矩陣然后計(jì)算det(W1),判斷det(W1)=0是否成立,若是,則第一處理器重新隨機(jī)生成一組隨機(jī)數(shù)V1,然后回到步驟S4-1-1,若否,則進(jìn)入步驟S4-2-1;
S4-2-1、陷門部件調(diào)用參數(shù)A1,Ci,Ei,r,v,使用矩陣運(yùn)算器計(jì)算中間值矩陣K′1=[k′1,k′2,…,k′v]=A1V1,k′1至k′v為矩陣K′1中的元素;
S4-2-2、使用矩陣輪轉(zhuǎn)器對(duì)矩陣K′1進(jìn)行輪轉(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、通過矩陣運(yùn)算器計(jì)算通過矩陣運(yùn)算器計(jì)算Q1=[q1,q2,…,qr],其中為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;
S4-3-1、使用矩陣運(yùn)算器計(jì)算矩陣W1和矩陣Q1的乘積,得到其中h=v+r,至為矩陣W1和矩陣Q1的乘積后的矩陣中的元素;
S4-3-2、根據(jù)隨機(jī)數(shù)V1和步驟S4-3-1獲取到的矩陣生成矩陣
S4-4-1、陷門部件調(diào)用參數(shù)Br+1,Dr+1,s,使用矩陣運(yùn)算器計(jì)算中間值矩陣其中l(wèi)2,0至l2,s-1為矩陣l2中的元素;
S4-4-2、使用多項(xiàng)式和矩陣轉(zhuǎn)換器將矩陣l2轉(zhuǎn)換成多項(xiàng)式f2為有限域GFp的多項(xiàng)式;
S4-4-3、使用多項(xiàng)式運(yùn)算器計(jì)算多項(xiàng)式f2在有限域中的逆g2,其中其中xi在i為s時(shí)得到xs;
S4-4-4、使用多項(xiàng)式和矩陣轉(zhuǎn)換器將g2轉(zhuǎn)換成矩陣其中至是矩陣u1中的元素;然后使用矩陣輪轉(zhuǎn)器對(duì)矩陣u1進(jìn)行輪轉(zhuǎn)處理,得到矩陣
S4-4-5、使用矩陣運(yùn)算器生成矩陣然后計(jì)算det(U2),判斷det(U2)=0是否成立,若是,則第一處理器重新生成一組隨機(jī)數(shù)V1,然后回到步驟S4-1-1,若否,則進(jìn)入步驟S4-5-1;
S4-5-1、陷門部件調(diào)用私鑰參數(shù)Ai,Ci,Ei,s,m,使用矩陣運(yùn)算器計(jì)算中間值
S4-5-2、計(jì)算Q2=[q1,q2,…,qs],其中為待簽名的消息Y′=[y′1,y′2,…,y′m]為仿射變換后的結(jié)果矩陣中的元素;
S4-6-1、使用矩陣運(yùn)算器計(jì)算矩陣U2和矩陣Q2的乘積,得到其中n=h+s,至為矩陣U2和矩陣Q2的乘積后的矩陣中的元素;
S4-6-2、根據(jù)隨機(jī)數(shù)V2和步驟S4-6-1獲取到的矩陣生成矩陣矩陣V3即為陷門部件得到的解;
所述步驟S5中第二線性仿射變換部件在接收到陷門部件發(fā)送的解V3后,根據(jù)系數(shù)矩陣針對(duì)陷門部件發(fā)送的解進(jìn)行仿射變換,得到:
將作為簽名sig,將簽名sig發(fā)送至第一存儲(chǔ)器中存儲(chǔ)。
7.根據(jù)權(quán)利要求5所述的多變量公鑰的簽名方法,其特征在于,將步驟S5中獲取到簽名及該簽名對(duì)應(yīng)的消息輸入至簽名驗(yàn)證系統(tǒng),所述簽名驗(yàn)證系統(tǒng)包括第二處理器和公鑰變換部件;
所述第二處理器,用于接收公鑰、簽名及簽名對(duì)應(yīng)的消息簽名,用于將公鑰和簽名發(fā)送至公鑰變換部件;用于接收公鑰變換部件返回的運(yùn)算結(jié)果,將運(yùn)算結(jié)果和消息進(jìn)行比較,若運(yùn)算結(jié)果和消息相等,則簽名的驗(yàn)證結(jié)果為通過驗(yàn)證;其中公鑰由隨機(jī)生成的私鑰和隨機(jī)生成的私鑰輪轉(zhuǎn)得到的私鑰生成;
所述公鑰變換部件,用于將接收到的簽名與公鑰進(jìn)行運(yùn)算,然后將運(yùn)算結(jié)果返回給第二處理器。
8.根據(jù)權(quán)利要求7所述的多變量公鑰的簽名方法,其特征在于,所述第二處理器包括第二調(diào)度器和第二存儲(chǔ)器;
所述第二調(diào)度器連接選擇開關(guān),用于識(shí)別第二處理器所接收到的開狀態(tài)信號(hào)和閉狀態(tài)信號(hào),通過選擇開關(guān)控制第二處理器的工作狀態(tài);用于將存儲(chǔ)在第一處理器中的數(shù)據(jù)調(diào)度至公鑰變換部件;用于將簽名驗(yàn)證結(jié)果發(fā)送給其他用戶;
第二存儲(chǔ)器,用于存儲(chǔ)簽名及簽名對(duì)應(yīng)的消息;用于存儲(chǔ)公鑰變換部件返回的運(yùn)算結(jié)果。
9.根據(jù)權(quán)利要求7所述的多變量公鑰的簽名方法,其特征在于,所述步驟S1還包括以下步驟:針對(duì)隨機(jī)生成的私鑰參數(shù)進(jìn)行輪轉(zhuǎn),然后根據(jù)隨機(jī)生成的私鑰參數(shù)及其輪轉(zhuǎn)后獲取的私鑰參數(shù)生成公鑰參數(shù),并且將生成的公鑰參數(shù)進(jìn)行公布;
所述簽名驗(yàn)證系統(tǒng)實(shí)現(xiàn)的簽名驗(yàn)證方法具體如下:
S6、第二處理器接收公鑰、簽名及簽名對(duì)應(yīng)消息,并且將公鑰和簽名發(fā)送至公鑰變換部件;
S7、公鑰變換部件將接收到的簽名與公鑰進(jìn)行運(yùn)算,然后將運(yùn)算結(jié)果返回給第二處理器;
S8、第二處理器接收到公鑰變換部件發(fā)送的運(yùn)算結(jié)果后,將運(yùn)算結(jié)果和消息進(jìn)行比較,若運(yùn)算結(jié)果和消息相等,則簽名的驗(yàn)證結(jié)果為通過驗(yàn)證。
10.根據(jù)權(quán)利要求9所述的多變量公鑰的簽名方法,其特征在于,
所述步驟S1中生成公鑰的步驟具體如下:
S1-5、初始化中心映射F=(F1,F2,…,Fm),其中Fi的維度為(n+1)×(n+1),i=1,2,3,…,m;其中
其中
當(dāng)1≤i≤r時(shí),矩陣Ai獲取過程如下:
首先根據(jù)步驟S1-4中得到維度為v×v的矩陣A1,計(jì)算A1的轉(zhuǎn)置得到矩陣其中a1至ar為矩陣中的元素;
然后對(duì)矩陣進(jìn)行輪轉(zhuǎn)處理后得到矩陣
最后計(jì)算矩陣的轉(zhuǎn)置獲取到矩陣Ai,i=2,3,…,r;
當(dāng)r+1≤i≤m時(shí),矩陣Ai即為步驟S1-4中隨機(jī)生成的s組維度為h×h的矩陣Ar+j;
當(dāng)1≤i≤r時(shí),矩陣Bi獲取過程如下:
首先根據(jù)步驟S1-4得到維度為v×r的矩陣B1:
B1=[b1,b2,…,br];其中b1至br為矩陣B1中的元素;
然后對(duì)矩陣B1進(jìn)行輪轉(zhuǎn)處理后得到矩陣Bi:
Bi=[br-i+2,…,br,b1,…,br-i+1],i=2,3,…,r;
當(dāng)r+1≤i≤m時(shí),矩陣Bi獲取過程如下:
首先根據(jù)步驟S1-4得到維度為h×s矩陣Br+1:
Br+1=[b′1,b′2,…,b′s];其中b′1至b′s為矩陣Br+1中的元素;
然后對(duì)矩陣Br+1進(jìn)行輪轉(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隨機(jī)生成的r組維度為v×1的矩陣Ci;
當(dāng)1≤i≤r時(shí),矩陣Di獲取過程如下:
首先根據(jù)步驟S1-4得到維度為r×1的矩陣D1,計(jì)算D1的轉(zhuǎn)置得到矩陣
其中d1至dr為矩陣中的元素;
然后對(duì)矩陣進(jìn)行輪轉(zhuǎn)處理后得到矩陣
最后計(jì)算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=2,3,…,r;
當(dāng)r+1≤i≤m時(shí),矩陣Di獲取過程如下:
首先根據(jù)步驟S1-4得到維度為s×1的矩陣Dr+1,計(jì)算Dr+1的轉(zhuǎn)置得到矩陣
其中d′1至d′s為矩陣中的元素;
然后對(duì)矩陣進(jìn)行輪轉(zhuǎn)處理得到
最后計(jì)算矩陣的轉(zhuǎn)置獲取到矩陣Di,i=r+2,r+3,…,m;
其中矩陣Ei即為步驟S1-4隨機(jī)生成m個(gè)常數(shù)Ek,k=1,2,3,…,m;
S1-6、計(jì)算公鑰其中具體計(jì)算過程如下:
首先計(jì)算公鑰的中間值P′:
P′=[P′1,P′2,…,P′m];
其中P′i=L′2T×Fi×L′2,i=1,2,3,…,m;,Lc為隨機(jī)值;
然后根據(jù)中間值P′計(jì)算出公鑰P為:
P=L1×P′=[P1,P2,…,Pm];
其中P1至Pm為公鑰P中各元素;
所述步驟S7中公鑰變換部件對(duì)簽名與公鑰進(jìn)行運(yùn)算的具體過程如下:
將簽名sig=[x′1,x′2,…,x′n]帶入公鑰P=[P1,P2,…,Pm]中,得到:
…
得到Z=[z1,z2,…,zm]作為運(yùn)算結(jié)果;
所述步驟S8中,第二處理器將公鑰變換部件返回的運(yùn)算結(jié)果Z=[z1,z2,…,zm]與消息Y=[y1,y2,…,ym]進(jìn)行比較,若兩者相等,則簽名sig=[x′1,x′2,…,x′n]驗(yàn)證通過。