国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于余數(shù)系統(tǒng)的SM2白盒數(shù)字簽名實(shí)現(xiàn)方法與流程

      文檔序號:11064701閱讀:711來源:國知局
      一種基于余數(shù)系統(tǒng)的SM2白盒數(shù)字簽名實(shí)現(xiàn)方法與制造工藝

      本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是涉及一種基于余數(shù)系統(tǒng)的SM2白盒數(shù)字簽名實(shí)現(xiàn)方法。



      背景技術(shù):

      現(xiàn)有軟件加密算法,密鑰均是直接出現(xiàn)在計(jì)算平臺的內(nèi)存之中,攻擊者可通過惡意軟件等實(shí)現(xiàn)密鑰的竊取,不能應(yīng)對已有的白盒攻擊手段;現(xiàn)有的硬件加密算法,能較好的保證密鑰計(jì)算的安全性,但相對使用成本較高,通用性較差,對于部分安全性要求相對較低的應(yīng)用場景無法使用;同時(shí)還有部分研究機(jī)構(gòu)提出了基于云加端部分密鑰和密鑰分散存儲策略的軟件加密算法,但云加端的策略無法抵抗本地私鑰的泄露,還存儲云端與終端的鑒權(quán)問題,密鑰分散存儲策略在進(jìn)行密鑰運(yùn)算時(shí)必須合成密鑰,內(nèi)存中同樣存在密鑰完整明文。



      技術(shù)實(shí)現(xiàn)要素:

      為解決上述問題,本發(fā)明提供了一種基于余數(shù)系統(tǒng)的SM2白盒數(shù)字簽名實(shí)現(xiàn)方法,所述方法適用的系統(tǒng)包括客戶端和服務(wù)器,所述系統(tǒng)的系統(tǒng)模數(shù)為n,輔助模數(shù)為mr所選取橢圓曲線的基點(diǎn)為G,簽名消息為M其特征在于,包括如下步驟:

      步驟一:客戶端選取公鑰d、私鑰P。選定一個(gè)余數(shù)系統(tǒng),素?cái)?shù)基為β=(p1,p2,...,pt),基β的動(dòng)態(tài)范圍滿足ω=p1p2p3…pt≥2768。

      步驟二:客戶端生成第一私鑰查找表、第二私鑰查找表。具體方法為:

      步驟2.1:隨機(jī)選取兩個(gè)非線性密鑰置換表,分別記為Sbox1、Sbox2,并通過服務(wù)器的公鑰將自己的客戶端ID和Sbox1發(fā)送給服務(wù)器進(jìn)行保存。

      步驟2.2:使用余數(shù)系統(tǒng)將公鑰P轉(zhuǎn)化為Pi,其中i=1,…,t,r,并生成第一私鑰查找表Table1,i(i=1,...,t,r),生成方法為:隨機(jī)遍歷產(chǎn)生兩個(gè)隨機(jī)數(shù)N1和N2,其中N2,N1∈[1,n-1],通過余數(shù)系統(tǒng)將其分別轉(zhuǎn)化為N1i和N2i,計(jì)算ui=sbox2(N1,i×sbox1-1(sbox1(N2,i))modpi),將遍歷產(chǎn)生的所有ui作為表Table1,i(i=1,...,t,r)的元素。

      步驟2.3:使用私鑰d和余數(shù)系統(tǒng)生成第二私鑰查找表Table2,i(i=1,...,t,r),生成方法為:隨機(jī)遍歷產(chǎn)生兩個(gè)隨機(jī)數(shù)L1和L2,其中L2,L1∈[1,n-1],通過余數(shù)系統(tǒng)將其分別轉(zhuǎn)化為L1i和L2i,同時(shí)將私鑰d轉(zhuǎn)換為di,計(jì)算si=di×(sbox2-1(L1i)-L2i×di)mod pi,將遍歷產(chǎn)生的所有si作為表Table2,i(i=1,...,t,r)的元素;

      步驟三:客戶端進(jìn)行簽名,具體方法為:

      步驟3.1:客戶端計(jì)算M’=M||ZA;其中,M為簽名消息,ZA為客戶端的身份標(biāo)識。

      步驟3.2:客戶端用雜湊函數(shù)計(jì)算消息摘要e=Hv(M’)。

      步驟3.3:客戶端產(chǎn)生第一隨機(jī)數(shù)k1∈[1,n-1];

      步驟3.4:客戶端計(jì)算橢圓曲線點(diǎn)Q1=[k1]*G,并將e和Q1發(fā)送給服務(wù)器;其中,

      步驟3.5:服務(wù)器產(chǎn)生第二隨機(jī)數(shù)k2∈[1,n-1];

      步驟3.6:服務(wù)器計(jì)算橢圓曲線點(diǎn)(x1,y1)=[k2]*Q1;

      步驟3.7:服務(wù)器計(jì)算第一部分簽名r=(x1+e)mod n,將第二隨機(jī)數(shù)k2基于基{β|pr}用余數(shù)系統(tǒng)表示為k2=(k2,1,...,k2,t|k2,r),通過Sbox1進(jìn)行混淆,然后將r和Sbox1(k2)=[sbox1(k2,1),sbox1(k2,2),...,sbox1(k2,t)|sbox1(k2,r)]發(fā)送給客戶端。

      步驟3.8:客戶端將第一隨機(jī)數(shù)K1和r基于基{β|pr}用余數(shù)系統(tǒng)表示為k1=(k1,1,k1,2,...,k1,t|k1,r)和r=(r1,r2,...,rt|rr);

      步驟3.9:客戶端使用第一私鑰查找表Table1,i(i=1,...,t,r)計(jì)算中間值ui=sbox2(k1,i×sbox1-1(sbox1(k2,i))modpi)。

      步驟4.0:客戶端使用第二私鑰查找表Table2,i(i=1,...,t,r)計(jì)算si=di×(sbox2-1(ui)-ri×dA,i)mod pi,其中私鑰dA隱藏在第二私鑰查找表Table2,i中。

      步驟4.1:客戶端利用中國剩余定理恢復(fù)出s。

      步驟4.3:客戶端計(jì)算s′=s mod n,s′即為第二部分簽名值。

      步驟五:輸出消息M和簽名。

      進(jìn)一步的,各個(gè)隨機(jī)數(shù)是利用隨機(jī)數(shù)發(fā)生器產(chǎn)生。

      本發(fā)明的有益效果為:

      (1)客戶端在進(jìn)行簽名運(yùn)算過程中,內(nèi)存等硬件設(shè)備中不會出現(xiàn)私鑰的完整明文,確保密碼算法運(yùn)行的白盒攻擊安全。

      (2)實(shí)現(xiàn)本方法僅需要207.5MB的內(nèi)層大小,存儲空間要求較小。

      (3)本實(shí)現(xiàn)方法和原SM2算法的簽名效率基本一致,實(shí)用性較高。

      (4)通過使用白盒軟件實(shí)現(xiàn)可降低商用密碼算法的使用成本,擴(kuò)大商用密碼算法的使用范圍。

      (5)使用白盒軟件算法在確保加解密安全的同時(shí),通用性較強(qiáng),對運(yùn)行平臺硬件沒有任何特殊需求。

      附圖說明

      圖1為客戶端進(jìn)行簽名的流程示意圖。

      具體實(shí)施方式

      本發(fā)明的設(shè)計(jì)構(gòu)思為:針對于不可信環(huán)境中密鑰運(yùn)行不安全,惡意攻擊者可通過白盒攻擊手段獲取系統(tǒng)密鑰的問題展開研究,通過使用余數(shù)系統(tǒng)實(shí)現(xiàn)大數(shù)的拆分,從而降低密鑰表的大??;通過使用置亂混淆確保中間結(jié)果對攻擊者不可見;通過使用云端的隨機(jī)因子確保終端密鑰運(yùn)算關(guān)系的未知性,實(shí)現(xiàn)了終端簽名運(yùn)算過程中的簽名私鑰安全,同時(shí)可使用標(biāo)準(zhǔn)的SM2驗(yàn)簽算法進(jìn)行驗(yàn)證。

      本發(fā)明基于國家商用密碼算法SM2數(shù)字簽名算法進(jìn)行構(gòu)建,SM2數(shù)字簽名算法請參加國家商用密碼管理局發(fā)布的管理標(biāo)準(zhǔn),同時(shí)本發(fā)明還使用了一個(gè)典型的數(shù)學(xué)工具——余數(shù)系統(tǒng),詳細(xì)介紹如下:

      余數(shù)系統(tǒng)的定義可以描述為:現(xiàn)假設(shè)存在一個(gè)余數(shù)系統(tǒng),它是由一組互為質(zhì)數(shù)的余數(shù)基β=(m1,m2,...,mk}來確定的,M=m1m2…mk為這組基的動(dòng)態(tài)范圍。對于任意整數(shù)x≤M,可以在β這組基下唯一表示為(x1,x2,...,xk),其中xi為x對mi的求模結(jié)果,記為對余數(shù)系統(tǒng)而言,只有當(dāng)整數(shù)x在動(dòng)態(tài)范圍之內(nèi)才存在唯一的表示。

      假設(shè)整數(shù)x、y在基β下分別表示為x=(x1,x2,...,xk)和y=(y1,y2,...,yk),則:

      其中“ο″為+、-、×運(yùn)算。

      對于x的余數(shù)系統(tǒng)表示(x1,x2,...,xk),由中國剩余定理:

      其中α<k,Mi=M/mi,為Mi在模mi下的逆。α可通過選擇一個(gè)合適的輔助模數(shù)mr來恢復(fù),其中mr≥k+1且gcd(M,mr)=1。設(shè)xr為x對mr的求模結(jié)果,即:

      則:

      因?yàn)棣粒糼<mr,所以對于任意整數(shù)x,可在擴(kuò)展基下表示為(x1,x2,...,xk|xr),稱為擴(kuò)展RNS表示。

      本發(fā)明所述方法適用的系統(tǒng)包括客戶端和服務(wù)器。客戶端也就是執(zhí)行數(shù)字簽名算法的用戶,其運(yùn)行環(huán)境是不可信的,服務(wù)器是協(xié)同簽名方,其屬于密鑰管理中心的一個(gè)部件,它主要為客戶端提供一個(gè)隨機(jī)因子。

      假定所述系統(tǒng)的系統(tǒng)模數(shù)為n,輔助模數(shù)為mr,所選取橢圓曲線的基點(diǎn)為G,簽名消息為M,ZA為客戶端的身份標(biāo)識,Hv為使用的摘要函數(shù)(可實(shí)用商用密碼標(biāo)準(zhǔn)SM3算法)。本方法共包含4個(gè)部分:(1)參數(shù)選取及密鑰生成;(2)私鑰表的生成;(3)簽名計(jì)算;(4)驗(yàn)簽計(jì)算。其中(1)和(4)均參考國家商用SM2數(shù)字簽名算法標(biāo)準(zhǔn)執(zhí)行。

      本發(fā)明的具體步驟描述如下:

      步驟一:客戶端選取公鑰d、私鑰P。選定一個(gè)余數(shù)系統(tǒng),素?cái)?shù)基為β=(p1,p2,...,pt),基β的動(dòng)態(tài)范圍滿足ω=p1p2p3…pt≥2768

      步驟二:客戶端生成第一私鑰查找表、第二私鑰查找表。具體方法為:

      步驟2.1:隨機(jī)選取兩個(gè)非線性密鑰置換表(與對稱密碼算法中使用的S盒是一致的),分別記為Sbox1、Sbox2,并通過服務(wù)器的公鑰將自己的客戶端ID和Sbox1發(fā)送給服務(wù)器進(jìn)行保存。

      步驟2.2:使用余數(shù)系統(tǒng)將公鑰P轉(zhuǎn)化為Pi,其中i=1,…,t,r,并生成第一私鑰查找表Table1,i(i=1,...,t,r),生成方法為:隨機(jī)遍歷產(chǎn)生兩個(gè)隨機(jī)數(shù)N1和N2,其中N2,N1∈[1,n-1],通過余數(shù)系統(tǒng)將其分別轉(zhuǎn)化為N1i和N2i,計(jì)算ui=sbox2(N1,i×sbox1-1(sbox1(N2,i))modpi),將遍歷產(chǎn)生的所有ui作為表Table1,i(i=1,...,t,r)的元素。

      步驟2.3:使用私鑰d和余數(shù)系統(tǒng)生成第二私鑰查找表Table2,i(i=1,...,t,r),生成方法為:隨機(jī)遍歷產(chǎn)生兩個(gè)隨機(jī)數(shù)L1和L2,其中L2,L1∈[1,n-1],通過余數(shù)系統(tǒng)將其分別轉(zhuǎn)化為L1i和L2i,同時(shí)將私鑰d轉(zhuǎn)換為di,計(jì)算si=di×(sbox2-1(L1i)-L2i×di)mod pi,將遍歷產(chǎn)生的所有si作為表Table2,i(i=1,...,t,r)的元素;

      步驟三:客戶端進(jìn)行簽名,具體方法為:

      步驟3.1:客戶端計(jì)算M’=M||ZA;其中,M為簽名消息,ZA為客戶端的身份標(biāo)識。

      步驟3.2:客戶端用雜湊函數(shù)計(jì)算消息摘要e=Hv(M’)。

      步驟3.3:客戶端用隨機(jī)數(shù)發(fā)生器產(chǎn)生第一隨機(jī)數(shù)k1∈[1,n-1];

      步驟3.4:客戶端計(jì)算橢圓曲線點(diǎn)Q1=[k1]*G,并將e和Q1發(fā)送給服務(wù)器;其中,

      步驟3.5:服務(wù)器用隨機(jī)數(shù)發(fā)生器產(chǎn)生第二隨機(jī)數(shù)k2∈[1,n-1];

      步驟3.6:服務(wù)器計(jì)算橢圓曲線點(diǎn)(x1,y1)=[k2]*Q1;

      步驟3.7:服務(wù)器計(jì)算第一部分簽名r=(x1+e)mod n,將第二隨機(jī)數(shù)k2基于基{β|pr}用余數(shù)系統(tǒng)表示為k2=(k2,1,...,k2,t|k2,r),通過Sbox1進(jìn)行混淆,然后將r和Sbox1(k2)=[sbox1(k2,1),sbox1(k2,2),...,sbox1(k2,t)|sbox1(k2,r)]發(fā)送給客戶端。

      步驟3.8:客戶端將第一隨機(jī)數(shù)k1和r基于基{β|pr}用余數(shù)系統(tǒng)表示為k1=(k1,1,k1,2,...,k1,t|k1,r)和r=(r1,r2,...,rt|rr);

      步驟3.9:客戶端使用第一私鑰查找表Table1,i(i=1,...,t,r)計(jì)算中間值ui=sbox2(k1,i×sbox1-1(sbox1(k2,i))modpi)。

      步驟4.0:客戶端使用第二私鑰查找表Table2,i(i=1,...,t,r)計(jì)算si=di×(sbox2-1(ui)-ri×dA,i)mod pi,其中私鑰dA隱藏在第二私鑰查找表Table2,i中。

      步驟4.1:客戶端利用中國剩余定理恢復(fù)出s。

      步驟4.3:客戶端計(jì)算s′=s mod n,s′即為第二部分簽名值。

      步驟五:輸出消息M和簽名。

      進(jìn)一步的,各個(gè)隨機(jī)數(shù)是利用隨機(jī)數(shù)發(fā)生器產(chǎn)生。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1