麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種生成數字簽名的方法及裝置制造方法

文檔序號:8004750閱讀:480來源:國知局
一種生成數字簽名的方法及裝置制造方法
【專利摘要】本發明公開了一種生成數字簽名的方法及裝置。其方法包括:裝置生成滿足有效性判定條件的數字簽名參數r;利用私鑰dA、隨機數k、r和橢圓曲線參數n,按照如下公式生成數字簽名參數s:s=((1+dA)-1·(r+k)-r)modn,其中,k的取值范圍為(1,n-1);判斷生成的s是否為0,如果為0,重新生成滿足有效性判定條件的r,并利用dA、重新生成的取值范圍為(1,n-1)的k、重新生成的r、和n,重新生成s,直至s不為0;將r和不為0的s的數據類型轉換為字節串,得到數字簽名(r,s)。本發明實施例提供的技術方案,通過使用簡化的計算公式獲取數字簽名參數s,可以減少大整數運算的次數,從而提高了基于SM2數字簽名生成算法生成數字簽名的運算效率。
【專利說明】一種生成數字簽名的方法及裝置
【技術領域】
[0001]本發明涉及信息【技術領域】,尤其涉及一種生成數字簽名的方法及裝置。
【背景技術】
[0002]SM2數字簽名算法作為SM2密碼算法的一個組成部分,其在用戶身份認證和信息完整性校驗功能領域得到很好的應用。在SM2數字簽名算法應用過程中,算法運算效率一直是算法應用者們所關注的重點。SM2數字簽名算法由SM2數字簽名生成算法和SM2數字簽名驗證算法構成。
[0003]設待簽名的消息為M,為了獲取消息M的數字簽名(r,s),當用戶A需要使用數字簽名時,可通過如下SM2數字簽名生成算法實現:
[0004]Al:置蔚=2 ||M。
[0005]其中,Il表示級聯運算,Za為通過密碼雜湊函數求得的上述生成數字簽名的用戶A的雜湊值。
[0006]A2:計算,并將e的數據類型由比特串轉換為整數。
[0007]其中,HvO為消息摘要長度為V比特的密碼雜湊函數,如SM3密碼雜湊算法。
[0008]A3:用隨機數發生器產生隨機數k e [I, Π-1]。
[0009]其中,η為橢圓曲線參數。
[0010]Α4:計算橢圓曲線點(Xl,yi) = [k]G,結果X1為域元素,將X1的數據類型轉換為整數。
[0011]其中,G為橢圓曲線的基點,[k]G表示k與G點乘。
[0012]使用的橢圓曲線方程,其類型可選擇素數域方程y2=x3+ax+b或二元擴域方程y2+xy=x3+ax2+b0
[0013]A5:計算 ^(e+xjmodn 公式一
[0014]即使用(e+x)對η求模。
[0015]若r=0 或 r+k=n 則返回 A3。
[0016]A6:計算 s=((l+dA)-1.(k-r.dA))modn 公式二
[0017]若s=0則返回A3。
[0018]其中,dA為上述用戶A的私鑰。
[0019]A7:將r、s的數據類型由整數轉換為字節串,消息M的數字簽名為(r,s)。
[0020]用戶A可以是系統或設備,執行上述SM2數字簽名生成算法的可以是設置于用戶A內部的子系統、硬件模塊、在用戶A內可執行的軟件模塊等等,也可以是與用戶A有通信連接、被用戶A調用的系統或設備。
[0021]用戶A具有長度為entlenA比特的可辨別標識IDa,記ENTLa是由整數entlenA轉換而成的兩個字節。在上述SM2數字 簽名生成算法中,將G的坐標Xe、y(;和Pa的坐標xA、yA的數據類型轉換為比特串,則上述Za=H256 (ENTLa Il IDa Il a Il b Il xG II yG II xA II yA)。其中,Pa為用戶A的公鑰,H256 Q為消息摘要長度為256比特的密碼雜湊函數,如SM3密碼雜湊算法。[0022]另外,在具體工程實現過程中,本領域技術人員通常會對公式二采用公式三和公式四兩種變形,將公式二中(l+dAr求負整數指數冪運算轉換為(l+dA)-1Hiodn求模逆運算,便于工程實現。
[0023]S= (((l+dA) _1modn).((k~r.dA)modn))modn 公式三
[0024]s= (((l+dA)_1modn).((k-(r.dA)modn)modn))modn 公式四
[0025]SM2數字簽名生成算法是基于ECC算法理論實現的,實現過程中大整數乘法、大整數模乘運算等大整數運算是影響算法運算效率最為主要的因素,現有的SM2數字簽名生成算法雖然能夠滿足一定的運算效率的需求,但如果希望進一步提高運算效率,現有技術中還沒有相應的解決方案。

【發明內容】

[0026]本發明的目的是提供一種生成數字簽名的方法及裝置,以進一步提高基于SM2數字簽名生成算法生成數字簽名的運算效率。
[0027]本發明的目的是通過以下技術方案實現的:
[0028]一種生成數字簽名的方法,包括:
[0029]裝置生成滿足有效性判定條件的數字簽名參數r ;
[0030]所述裝置利用私鑰dA、取值范圍為(l,n_l)的隨機數k、所述數字簽名參數r和橢圓曲線參數n,基于如下公式生成數字簽名參數s:
[0031]S= ((l+dA).(r+k)-r)modn ;
[0032]所述裝置判斷生成的數字簽名參數s是否為0,如果為0,重新生成滿足有效性判定條件的數字簽名參數r,并利用所述私鑰dA、重新生成的取值范圍為(l,n-l)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數S,直至所述數字簽名參數s不為O ;
[0033]所述裝置將最終得到的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,S)。
[0034]本發明實施例提供的方法,獲取數字簽名參數s時可以減少大整數運算的次數,從而提高基于SM2數字簽名生成算法生成數字簽名的運算效率。
[0035]較佳地,所述裝置基于8=((1+(4)4.(r+k)-r)modn,生成數字簽名參數s,包括:
[0036]所述裝置將數字簽名參數r與隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算;
[0037]所述裝置將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0038]所述裝置將求模運算與求模逆運算的運算結果進行大整數乘法運算;
[0039]所述裝置將該大整數乘法運算結果減去數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0040]通過上述處理過程生成數字簽名參數s,可減少I次大整數乘法或I次大整數模乘運算。
[0041]在上述任意實施例基礎上,較佳地,生成數字簽名參數s之前,該方法還可以包括:
[0042]所述裝置獲取r的有效性判定條件運算結果r+k,以便利用私鑰dA、r的有效性判定條件運算結果r+k、所述數字簽名參數r、和橢圓曲線參數η生成數字簽名參數S。
[0043]生成數字簽名參數s時,可以直接使用r的有效性判定條件運算結果(r+k),進一步提聞運算效率。
[0044]在上述任意實施例基礎上,較佳地,生成數字簽名參數s之前,該方法還可以包括:
[0045]所述裝置獲取r的有效性判定條件運算結果(r+k)modn,以便利用私鑰dA、r的有效性判定條件運算結果(r+k)modn、所述數字簽名參數r、和橢圓曲線參數η生成數字簽名參數S。
[0046]由于避免了(r.dA)modn的運算,因此,可以減少I次大整數模乘運算。
[0047]一種生成數字簽名的裝置,包括:
[0048]參數輸入接口單元,用于獲取雜湊值Za和待簽名的消息M ;
[0049]級聯運算單元,用于將所述參數輸入接口單元獲取的雜湊值Za和待簽名的消息M進行級聯運算,生試斤
[0050]密碼雜湊算法運算單元,用于將所述級聯運算單元生成的及進行密碼雜湊運算,生成消息摘要信息e ;
[0051]隨機數發生器,用于生成取值范圍為(l,n_l)的隨機數k;
[0052]ECC算法運算單元,用于根據所述隨機數發生器生成的隨機數k進行橢圓曲線算法點乘運算(Xl,yi)=kG,得到橢圓曲線點橫坐標X1,其中G為橢圓曲線參數;
[0053]數據類型轉換單元,用于將所述密碼雜湊算法運算單元生成的消息摘要信息e的數據類型轉換為整數類型,還用于將所述ECC算法運算單元生成的橢圓曲線點橫坐標X1的數據類型轉換為整數類型;
[0054]大整數運算單元,用于利用所述數據類型轉換單元進行數據類型轉換的消息摘要信息e和橢圓曲線點橫坐標X1,生成數字簽名參數r ;
[0055]有效性判定單元,用于對所述大整數運算單元生成的數字簽名參數r進行有效性判定;
[0056]如果所述數字簽名參數r不滿足有效性判定條件,所述隨機數發生器重新生成取值范圍為(1,n-Ι)的隨機數k;所述ECC算法運算單元根據所述隨機數發生器重新生成的隨機數k重新得到橢圓曲線點橫坐標X1 ;所述數據類型轉換單元對重新得到的橢圓曲線點橫坐標X1進行數據類型轉換;所述大整數運算單元根據所述消息摘要信息e和重新生成的橢圓曲線點橫坐標X1,重新生成數字簽名參數r,并利用重新生成的數字簽名參數r和重新生成的隨機數k,所述有效性判定單元對重新生成的數字簽名參數r進行有效性判定;
[0057]所述大整數運算單元還用于,利用私鑰dA、所述隨機數發生器生成的所述隨機數k、所述數字簽名參數r、和橢圓曲線參數n,基于如下公式生成數字簽名參數s:S= ((l+dA).(r+k) _r) modn ;
[0058]所述有效性判定單元還用于,判斷所述大整數運算單元生成的數字簽名參數s是否為O ;
[0059]如果為0,所述隨機數發生器重新生成取值范圍為(1,n-Ι)的隨機數k,所述大整數運算單元重新生成數字簽名參數r,并在所述重新生成的數字簽名參數r滿足有效性判定條件時,利用所述私鑰4、重新生成的取值范圍為(1,n-Ι)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數s ;
[0060]所述數據類型轉換單元還用于,將所述大整數運算單元最終生成的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,s);
[0061]參數輸出接口單元,用于輸出數字簽名(r,S)。
[0062]本發明實施例提供的裝置,獲取數字簽名參數s時可以減少大整數運算的次數,從而提高基于SM2數字簽名生成算法生成數字簽名的運算效率。
[0063]較佳地,生成數字簽名參數s時,所述大整數運算單元具體用于:
[0064]將所述數字簽名參數r與所述隨機數發生器生成的所述隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算;
[0065]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0066]將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算;
[0067]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0068]通過上述處理過程生成數字簽名參數s,可減少I次大整數乘法或I次大整數模乘運算。
[0069]在上述任意裝置實施例基礎上,較佳地,如果所述有效性判定單元使用數字簽名參數r的有效性判定條件運算.結果r+k對數字簽名參數r的有效性進行判定,所述大整數運算單元在生成所述數字簽名參數r后,還用于利用生成的數字簽名參數r和所述隨機數發生器生成的所述隨機數k,生成數字簽名參數r的有效性判定條件運算結果r+k;
[0070]生成數字簽名參數s時,所述大整數運算單元用于:
[0071]使用所述r的有效性判定條件運算結果r+k對橢圓曲線參數η進行求模運算;
[0072]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0073]將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算;
[0074]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0075]生成數字簽名參數s時,可以直接使用r的有效性判定條件運算結果(r+k),進一步提聞運算效率。
[0076]在上述任意裝置側實施例基礎上,較佳地,如果所述有效性判定單元使用數字簽名參數r的有效性判定條件運算結果(r+k)modn對數字簽名參數r的有效性進行判定,所述大整數運算單元在生成所述數字簽名參數 后,還用于利用生成的數字簽名參數r、所述隨機數發生器生成的所述隨機數k和橢圓曲線參數n,生成數字簽名參數r的有效性判定條件運算結果(r+k) modn ;
[0077]生成數字簽名參數s時,所述大整數運算單元用于:
[0078]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0079]將所述r的有效性判定條件運算結果(r+k) modn與所述求模逆運算結果進行大整數乘法運算;
[0080]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0081]由于避免了(r.dA)modn的運算,因此,可以減少I次大整數模乘運算。[0082]在上述任意實施例基礎上,大整數運算單元所使用的私鑰,既可以由該裝置生成,也可以從外部獲取。下面舉例說明:
[0083]方式一:
[0084]所述裝置還包括:
[0085]密鑰生成單元,用于生成所述私鑰dA ;
[0086]密鑰存儲單元,用于保存所述密鑰生成單元生成的所述私鑰dA ;所述大整數運算單元從所述密鑰存儲單元中獲取所述私鑰dA以生成數字簽名參數S。
[0087]方式二:
[0088]所述參數輸入接口單元還用于獲取所述私鑰dA ;所述大整數運算單元從所述參數輸入接口單元獲取所述私鑰dA以生成數字簽名參數S。
[0089]方式三:
[0090]所述裝置還包括密鑰存儲單元;所述參數輸入接口單元還用于獲取所述私鑰dA ;所述密鑰存儲單元用于保存所述參數輸入接口單元獲取的所述私鑰dA ;所述大整數運算單元從所述密鑰存儲單元獲取所述私鑰dA以生成數字簽名參數S。
【專利附圖】

【附圖說明】
[0091]圖1為本發明實施例提供的第一種方法流程圖;
[0092]圖2為本發明實施例提供的第二種方法流程圖;
[0093]圖3為本發明實施例提供的第三種方法流程圖;
[0094]圖4為本發明實施例提供的裝置結構示意圖。
【具體實施方式】
[0095]本發明實施例提供了一種生成數字簽名的技術方案,裝置在生成滿足有效性判定條件的數字簽名參數r后,利用私鑰dA、取值范圍為(1,n-Ι)的隨機數k、數字簽名參數r和橢圓曲線參數η,基于如下公式生成數字簽名參數s:s=((l+dA).(r+k)-r)modn,判斷生成的數字簽名參數s是否為0,如果為0,重新生成滿足有效性判定條件的數字簽名參數r,并利用所述私鑰dA、重新生成的取值范圍為(l,n-l)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數S,直至所述數字簽名參數s不為0,將最終得到的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串后,得到數字簽名(r,S)。獲取數字簽名參數s時可以減少大整數運算的次數,從而提高了基于SM2數字簽名生成算法生成數字簽名的運算效率。
[0096]下面將結合附圖,對本發明實施例提供的技術方案進行詳細描述。
[0097]本發明實施例提供的一種生成數字簽名的方法如圖1所示,具體包括如下操作:
[0098]步驟100、裝置生成滿足有效性判定條件的數字簽名參數r。
[0099]其中,滿足有效性判定條件是指,得到的數字簽名參數r不為0,并且r+k不為η。η為橢圓曲線參數,k為取值范圍是(I, n-Ι)的隨機數。
[0100]可以但不僅限于采用SM2數字簽名生成算法中計算r的方式生成滿足有效性判定條件的數字簽名參數r。
[0101]步驟110、該裝置利用私鑰4、上述隨機數k、上述數字簽名參數r和上述橢圓曲線參數η,基于如下公式生成數字簽名參數s:
[0102]s=((l+dA).(r+k) _r) modn 公式五
[0103]其中,公式五是上述公式二的簡化形式,基于公式五生成數字簽名參數S,不用進行r.dA運算,可以減少一次大整數運算。
[0104]S= ((l+dA).(k- r.dA))modn
[0105]公式化簡的原理如下:=((1+4)-1.(k-r.dA+r-r))modn
[0106]= ((l+dA).((r+k) - r (l+dA))) modn
[0107]= ((l+dA).(r+k) -r)modn
[0108]其中,私鑰dA是數字簽名使用者(例如上述用戶A)的私鑰。該數字簽名使用者可以是系統或設備,具體的,數字簽名使用者可以是用戶設備(UE),也可以是參與身份認證的網絡節點,如基站、移動性管理實體(MME )等等。
[0109]步驟120、該裝置判斷生成的數字簽名參數s是否為0,如果不為0,執行步驟130,如果為0,重新生成滿足有效性判定條件的數字簽名參數r,并利用上述私鑰dA、重新生成的取值范圍為(1,n-Ι)的隨機數k、重新生成的數字簽名參數r、和上述橢圓曲線參數n,重新生成數字簽名參數S,直至生成的數字簽名參數s不為O。
[0110]步驟130、該裝置將最終得到的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,S)。
[0111]執行上述操作生成數字簽名的數字簽名生成者可以是設置于數字簽名使用者內部的子系統、硬件模塊、在數字簽名使用者內可執行的軟件模塊等等,也可以是與數字簽名使用者有通信連接、被數字簽名使用者調用的系統或設備。
[0112]對于數字簽名使用者的私鑰,如果數字簽名生成者是設置于數字簽名使用者內部的子系統、硬件模塊、在數字簽名使用者內可執行的軟件模塊等等,則數字簽名生成者可以生成該密鑰并保存。對于數字簽名使用者的私鑰,數字簽名生成者也可以從數字簽名使用者處獲取并保存,還可以從數字簽名使用者處獲取并應用,但不保存。
[0113]在實際應用過程中,基于公式五,具體可以通過不同的實現方式得到數字簽名參數S,從而減少一次大整數乘法運算或者大整數模乘運算。
[0114]一種優選的實現方式中,該裝置利用私鑰dA、隨機數k、上述數字簽名參數r、和橢圓曲線參數n,按照如下公式生成數字簽名參數s:
[0115]S= (((l+dA) _1modn).((r+k)modn) -r)modn 公式六
[0116]該公式六是8=((1+( )-1.(r+k)-r)modn 的變形。
[0117]也就是說,上述裝置將數字簽名參數r與隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算;將私鑰dA加I后對橢圓曲線參數η進行求模逆運算,將求模運算與求模逆運算的運算結果進行大整數乘法運算,將該大整數乘法運算結果減去數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0118]公式化簡的原理如下:
[0119]S= ((l+dA).(r+k) _r)modn
[0120]=((( (l+dA) _1modn).((r+k) modn)) modn-rmodn) modn
[0121]=(( (l+dA) _1modn).( (r+k) modn) -r) modn
[0122]在該優選的實現方式中,在計算數字簽名參數s時,利用該公式六實現。[0123]應當指出的是,生成數字簽名參數s的具體實現方式不僅限于該優選實施例。在本發明實施例提出了簡化的公式五后,基于公式五的具體實現公式是本領域技術人員不需要付出創造性勞動即可得到的,也在本發明的保護范圍之內。
[0124]在上述任一實施例的基礎上,為了進一步提高生成數字簽名的運算效率,還可以在生成數字簽名參數s之前,獲取r的有效性判定條件運算結果r+k。該裝置可以直接利用r的有效性判定條件運算結果r+k,私鑰dA、上述數字簽名參數r和橢圓曲線參數n,生成數字簽名參數S。
[0125]在上述任一實施例的基礎上,為了進一步提高生成數字簽名的運算效率,還可以在生成數字簽名參數s之前,獲取r的有效性判定條件運算結果(r+k)modn。該裝置可以直接利用r的有效性判定條件運算結果(r+k)modn,私鑰dA、上述數字簽名參數r和橢圓曲線參數n,生成數字簽名參數S。該優選的實現方式中,根據有效性判定條件運算結果(r+k)modn判斷r的有效性與根據有效性判定條件運算結果r+k判斷r的有效性等效,其等效原理是:在SM2數字簽名生成算法中,數字簽名參數r和隨機數k的取值范圍均在(I,n-Ι)之間,因此r+k的取值范圍在(2, 2n-2)之間,故(r+k)modn=0與r+k=n等效。相應的,在生成滿足判定性條件的數字簽名參數r的過程中,可以判斷是否(r+k)Hiodn=O代替判斷是否r+k=nο
[0126]假設待簽名的消息為M,下面以公式六為例,結合圖2對獲取M的數字簽名(r,s)的一種實現方式進行詳細說明。該實現方式具體包括如下操作:
[0127]步驟200、將數字簽名使用者的雜湊值與消息M進行級聯運算,即:置=
[0128]步驟210、獲取消息摘要信息e,即:計算e =>,并將e的數據類型由比特串轉換為整數。
[0129]步驟220、用隨機數發生器產生隨機數k e [I, n-Ι]。
[0130]步驟230、計算橢圓曲線點(Xl,yi) = [k]G,結果X1為域元素,將X1的數據類型轉換為整數。
[0131]步驟240、生成數字簽名參數r,即:計算rKe+xjmodn 公式一
[0132]步驟250、對r進行有效性判定:假設t=r+k,判斷r和t的取值,如果r=0或t=n,則r不滿足有效性判定條件,返回步驟220,如果r古O且t古n,則r滿足有效性判定條件,執行步驟260。
[0133]步驟260、利用數字簽名使用者的私鑰dA、r的有效性判定條件運算結果r+k、數字簽名參數r、和橢圓曲線參數n,按照如下公式生成數字簽名參數s:
[0134]S= (((l+dA) _1modn).(tmodn) -r)modn 公式七
[0135]應當指出的是,公式七即上述的公式六。區別僅在于,公式七表示的含義是:生成數字簽名s時,不需要重復計算r+k,而是利用r的有效性判定條件運算結果r+k。
[0136]步驟270、判斷s的取值是否為0,若s=0,返回步驟220,否則,執行步驟280。
[0137]步驟280、將得到的數字簽名參數r、s的數據類型由整數轉換為字節串,得到消息M的數字簽名為(r,s)。
[0138]圖2所示的實施例中,利用公式七生成數字簽名參數S,可減少I次大整數乘法或I次大整數模乘運算,且在使用公式七生成數字簽名參數s時,可以直接使用r的有效性判定條件運算結果(r+k),進一步提高運算效率。[0139]假設待簽名的消息為M,下面以公式六為例,結合圖3對獲取M的數字簽名(r,s)的一種實現方式進行詳細說明。該實現方式具體包括如下操作:
[0140]步驟300、將數字簽名使用者的雜湊值與消息M進行級聯運算,即:置# = ZJM。
[0141]步驟310、獲取消息摘要信息e,即:計算e=//,.(Λ?),并將e的數據類型由比特串轉換為整數。
[0142]步驟320、用隨機數發生器產生隨機數k e [I, n-Ι]。
[0143]步驟330、計算橢圓曲線點(Xl,yi) = [k]G,結果X1為域元素,將X1的數據類型轉換為整數。
[0144]步驟340、生成數字簽名參數r,即:計算rKe+xjmodn 公式一
[0145]步驟350、對r進行有效性判定:假設t= (r+k) modn,判斷r和t的取值,如果r=0或t=0,則r不滿足有效性判定條件,返回步驟320,如果r古O且t古0,則r滿足有效性判定條件,執行步驟360。
[0146]步驟360、利用數字簽名使用者的私鑰dA、r的有效性判定條件運算結果(r+k)modn、數字簽名參數r、和橢圓曲線參數n,按照如下公式生成數字簽名參數s:
[0147]S= (((l+dA) _1modn).t_r)modn 公式八
[0148]應當指出的是,公式八即上述的公式六。區別僅在于,公式八表示的含義是:生成數字簽名s時,不需要重復計算(r+k)modn,而是利用r的有效性判定條件運算結果(r+k)modn ο
[0149]步驟370、判斷s的取值是否為0,若s=0,返回步驟320,否則,執行步驟380。
[0150]步驟380、將得到的數字簽名參數r、s的數據類型由整數轉換為字節串,得到消息M的數字簽名為(r, s)。
[0151]圖3所示的實施例中,利用公式八生成數字簽名參數S,可減少I次大整數乘法或I次大整數模乘運算,且在使用公式八生成數字簽名參數s時,可以直接使用r的有效性判定條件運算結果(r+k)modn,進一步提高運算效率。
[0152]另外,需說明,利用本發明方案對生成數字簽名的方法進行改進時,相對于公式三將節省一次大整數乘法運算,相對于公式四將節省一次大整數模乘運算。
[0153]基于與方法相同的發明構思,本發明實施例還提供一種生成數字簽名的裝置,其結構如圖4所示,具體包括:
[0154]參數輸入接口單元401,用于獲取雜湊值Za和待簽名的消息M。
[0155]參數輸入接口單元401將獲取的雜湊值Za和待簽名的消息M輸出給級聯運算單元 402。
[0156]級聯運算單元402,用于將所述參數輸入接口單元401獲取的雜湊值Za和待簽名的消息M進行級聯運算,生成A 3
[0157]級聯運算單元402將生成的及輸出給密碼雜湊算法運算單元403。
[0158]密碼雜湊算法運算單元403,用于將所述級聯運算單元402生成的#進行密碼雜湊運算,生成消息摘要信息e。
[0159]密碼雜湊算法運算單元403將生成的消息摘要信息輸出給數據類型轉換單元406。[0160]隨機數發生器404,用于生成取值范圍為(l,n_l)的隨機數k。
[0161]隨機數發生器404將生成的隨機數發送給ECC算法運算單元405。
[0162]ECC算法運算單元405,用于根據所述隨機數發生器404生成的隨機數k進行橢圓曲線算法點乘運算(Xl,Y1) =kG,得到橢圓曲線點橫坐標X1,其中G為橢圓曲線參數。
[0163]ECC算法運算單元405將得到的橢圓曲線點橫坐標X1輸出給數據類型轉換單元406。
[0164]數據類型轉換單元406,用于將所述密碼雜湊算法運算單元403生成的消息摘要信息e的數據類型轉換為整數類型,還用于將所述ECC算法運算單元405生成的橢圓曲線點橫坐標X1的數據類型轉換為整數類型。
[0165]數據類型轉換單元406將轉換類型后的消息摘要信息e和橢圓曲線點橫坐標X1輸出給大整數運算單元407。
[0166]大整數運算單元407,用于利用所述數據類型轉換單元406進行數據類型轉換的消息摘要信息e和橢圓曲線點橫坐標X1,生成數字簽名參數r。
[0167]大整數運算單元407將生成的數字簽名參數r輸出給有效性判定單元408。
[0168]有效性判定單元408,用于對所述大整數運算單元407生成的數字簽名參數r進行有效性判定。
[0169]如果所述數字簽名參數r不滿足有效性判定條件,所述隨機數發生器404重新生成取值范圍為(l,n-l)的隨機數 k ;所述ECC算法運算單元405根據所述隨機數發生器404重新生成的隨機數k重新得到橢圓曲線點橫坐標X1 ;所述數據類型轉換單元406對重新得到的橢圓曲線點橫坐標X1進行數據類型轉換;所述大整數運算單元407根據所述消息摘要信息e和重新生成的橢圓曲線點橫坐標X1,重新生成數字簽名參數r,并利用重新生成的數字簽名參數r和重新生成的隨機數k,所述有效性判定單元408對重新生成的數字簽名參數r進行有效性判定。
[0170]其中,如果所述數字簽名參數! 不滿足有效性判定條件,既可以由有效性判定單元408觸發隨機數發生器404重新生成隨機數,也可以通過另外設置的控制單元觸發隨機數發生器404重新生成隨機數。
[0171]所述大整數運算單元407還用于,利用私鑰dA、所述隨機數發生器404生成的所述隨機數k、所述數字簽名參數r、和橢圓曲線參數n,基于如下公式生成數字簽名參數s:S= ((l+dA).(r+k) _r) modn ;
[0172]所述有效性判定單元408還用于,判斷所述大整數運算單元407生成的數字簽名參數s是否為O ;
[0173]如果為0,所述隨機數發生器404重新生成取值范圍為(1,n-Ι)的隨機數k,所述大整數運算單元407重新生成數字簽名參數r,并在所述重新生成的數字簽名參數r滿足有效性判定條件時,利用所述私鑰dA、重新生成的取值范圍為(1,n-Ι)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數s ;
[0174]所述數據類型轉換單元406還用于,將所述大整數運算單元407最終生成的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,s);
[0175]參數輸出接口單元409,用于輸出數字簽名(r,S)。
[0176]較佳地,生成數字簽名參數s時,所述大整數運算單元407具體用于:[0177]將所述數字簽名參數r與所述隨機數發生器404生成的所述隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算;
[0178]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0179]將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算;
[0180]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0181]在基于圖4所示的實施例基礎上,較佳地,如果所述有效性判定單元408使用數字簽名參數r的有效性判定條件運算結果r+k對數字簽名參數r的有效性進行判定,所述大整數運算單元407在生成所述數字簽名參數r后,還用于利用生成的數字簽名參數r和所述隨機數發生器404生成的所述隨機數k,生成數字簽名參數r的有效性判定條件運算結果r+k;
[0182]生成數字簽名參數s時,所述大整數運算單元407用于:
[0183]使用所述r的有效性判定條件運算結果r+k對橢圓曲線參數η進行求模運算;
[0184]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0185]將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算;
[0186]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0187]在基于圖4所示的實施例基礎上,較佳地,如果所述有效性判定單元408使用數字簽名參數r的有效性判定條件運算結果(r+k)modn對數字簽名參數r的有效性進行判定,所述大整數運算單元407在生成所述數字簽名參數r后,還用于利用生成的數字簽名參數r、所述隨機數發生器404生成的所述隨機數k和橢圓曲線參數n,生成數字簽名參數r的有效性判定條件運算結果(r+k) modn ;
[0188]生成數字簽名參數s時,所述大整數運算單元407用于:
[0189]將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;
[0190]將所述r的有效性判定條件運算結果(r+k) modn與所述求模逆運算結果進行大整數乘法運算;
[0191]將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
[0192]在基于圖4所示的任意實施例基礎上,大整數運算單元407所使用的私鑰dA可以由本裝置生成,也可以從外部獲取。下面舉例說明:
[0193]方式一:
[0194]本發明實施例提供的裝置還包括密鑰生成單元和密鑰存儲單元。密鑰生成單元用于生成所述私鑰dA ;密鑰存儲單元用于保存所述密鑰生成單元生成的所述私鑰dA。
[0195]相應的,所述大整數運算單元407從所述密鑰存儲單元中獲取所述私鑰dA以生成數字簽名參數S。
[0196]方式二:
[0197]參數輸入接口單元401還用于獲取所述私鑰dA。
[0198]相應的,所述大整數運算單元407從所述參數輸入接口單元401獲取所述私鑰dA以生成數字簽名參數S。[0199]方式三:
[0200]本發明實施例提供的裝置還包括密鑰存儲單元。
[0201]所述參數輸入接口單元401還用于獲取所述私鑰dA ;所述密鑰存儲單元用于保存所述參數輸入接口單元401獲取的所述私鑰dA。
[0202]相應的,所述大整數運算單元407從所述密鑰存儲單元獲取所述私鑰dA以生成數字簽名參數S。
[0203]本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0204]本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0205]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0206]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0207]盡管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明范圍的所有變更和修改。
[0208]顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
【權利要求】
1.一種生成數字簽名的方法,其特征在于,包括: 裝置生成滿足有效性判定條件的數字簽名參數r ; 所述裝置利用私鑰dA、取值范圍為(l,n-l)的隨機數k、所述數字簽名參數r、和橢圓曲線參數n,基于如下公式生成數字簽名參數s:
S= ((l+dA).(r+k) -r)modn ; 所述裝置判斷生成的數字簽名參數s是否為O,如果為O,重新生成滿足有效性判定條件的數字簽名參數r,并利用所述私鑰七、重新生成的取值范圍為(l,n-l)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數S,直至所述數字簽名參數s不為O ; 所述裝置將最終得到的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,S)。
2.根據權利要求1所述的方法,其特征在于,所述裝置基于^(α+ΑΓ1.(r+k)-r)modn,生成數字簽名參數s,包括: 所述裝置將數字簽名參數r與隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算; 所述裝置將私鑰dA加I后對橢圓曲線參數η進行求模逆運算; 所述裝置將求模運算與求模逆運算的運算結果進行大整數乘法運算; 所述裝置將該大整數乘法運算結果減去數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
3.根據權利要求1或2所述的方法,其特征在于,生成數字簽名參數s之前,該方法還包括: 所述裝置獲取r的有效性判定條件運算結果r+k,以便利用私鑰dA、r的有效性判定條件運算結果r+k、所述數字簽名參數r、和橢圓曲線參數η生成數字簽名參數S。
4.根據權利要求1或2所述的方法,其特征在于,生成數字簽名參數s之前,該方法還包括: 所述裝置獲取r的有效性判定條件運算結果(r+k)modn,以便利用私鑰dA、r的有效性判定條件運算結果(r+k)modn、所述數字簽名參數r、和橢圓曲線參數η生成數字簽名參數S。
5.一種生成數字簽名的裝置,包括: 參數輸入接口單元,用于獲取雜湊值Za和待簽名的消息M ; 級聯運算單元,用于將所述參數輸入接口單元獲取的雜湊值Za和待簽名的消息M進行級聯運算,生成? 密碼雜湊算法運算單元,用于將所述級聯運算單元生成的及進行密碼雜湊運算,生成消息摘要信息e ; 隨機數發生器,用于生成取值范圍為(1,n-Ι)的隨機數k ; ECC算法運算單元,用于根據所述隨機數發生器生成的隨機數k進行橢圓曲線算法點乘運算(X1, yi)=kG,得到橢圓曲線點橫坐標X1,其中G為橢圓曲線參數; 數據類型轉換單元,用于將所述密碼雜湊算法運算單元生成的消息摘要信息e的數據類型轉換為整數類型,還用于將所述ECC算法運算單元生成的橢圓曲線點橫坐標X1的數據類型轉換為整數類型; 大整數運算單元,用于利用所述數據類型轉換單元進行數據類型轉換的消息摘要信息e和橢圓曲線點橫坐標X1,生成數字簽名參數r ; 有效性判定單元,用于對所述大整數運算單元生成的數字簽名參數r進行有效性判定; 如果所述數字簽名參數r不滿足有效性判定條件,所述隨機數發生器重新生成取值范圍為(1,n-Ι)的隨機數k;所述ECC算法運算單元根據所述隨機數發生器重新生成的隨機數k重新得到橢圓曲線點橫坐標X1 ;所述數據類型轉換單元對重新得到的橢圓曲線點橫坐標X1進行數據類型轉換;所述大整數運算單元根據所述消息摘要信息e和重新生成的橢圓曲線點橫坐標X1,重新生成數字簽名參數r,并利用重新生成的數字簽名參數r和重新生成的隨機數k,所述有效性判定單元對重新生成的數字簽名參數r進行有效性判定; 其特征在于,所述大整數運算單元還用于,利用私鑰dA、所述隨機數發生器生成的所述隨機數k、所述數字簽名參數r、和橢圓曲線參數n,基于如下公式生成數字簽名參數s:S= ((l+dA).(r+k) _r ) modn ; 所述有效性判定單元還用于,判斷所述大整數運算單元生成的數字簽名參數s是否為O; 如果為0,所述隨機數發生器重新生成取值范圍為(1,n-ι)的隨機數k,所述大整數運算單元重新生成數字簽名參數r,并在所述重新生成的數字簽名參數r滿足有效性判定條件時,利用所述私鑰dA、重新生成的取值范圍為(1,n-Ι)的隨機數k、所述重新生成的數字簽名參數r、和所述橢圓曲線參數n,重新生成數字簽名參數s ; 所述數據類型轉換單元還用于,將所述大整數運算單元最終生成的數字簽名參數r和不為O的數字簽名參數s的數據類型轉換為字節串,得到數字簽名(r,s); 參數輸出接口單元,用于輸出數字簽名(r,S)。
6.根據權利要求5所述的裝置,其特征在于,生成數字簽名參數s時,所述大整數運算單元具體用于: 將所述數字簽名參數r與所述隨機數發生器生成的所述隨機數k進行大整數加法運算后,使用大整數加法運算結果對橢圓曲線參數η進行求模運算; 將私鑰dA加I后對橢圓曲線參數η進行求模逆運算; 將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算; 將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
7.根據權利要求5所述的裝置,其特征在于,如果所述有效性判定單元使用數字簽名參數r的有效性判定條件運算結果r+k對數字簽名參數r的有效性進行判定,所述大整數運算單元在生成所述數字簽名參數r后,還用于利用生成的數字簽名參數r和所述隨機數發生器生成的所述隨機數k,生成數字簽名參數r的有效性判定條件運算結果r+k; 生成數字簽名參數s時,所述大整數運算單元用于: 使用所述r的有效性判定條件運算結果r+k對橢圓曲線參數η進行求模運算; 將私鑰dA加I后對橢圓曲線參數η進行求模逆運算;將所述求模運算結果與所述求模逆運算結果進行大整數乘法運算; 將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
8.根據權利要求5所述的裝置,其特征在于,如果所述有效性判定單元使用數字簽名參數r的有效性判定條件運算結果(r+k)modn對數字簽名參數r的有效性進行判定,所述大整數運算單元在生成所述數字簽名參數! 后,還用于利用生成的數字簽名參數r、所述隨機數發生器生成的所述隨機數k和橢圓曲線參數n,生成數字簽名參數r的有效性判定條件運算結果(r+k) modn ; 生成數字簽名參數s時,所述大整數運算單元用于: 將私鑰dA加I后對橢圓曲線參數η進行求模逆運算; 將所述r的有效性判定條件運算結果(r+k) modn與所述求模逆運算結果進行大整數乘法運算; 將所述大整數乘法運算結果減去所述數字簽名參數r后對橢圓曲線參數η進行求模運算,得到數字簽名參數S。
9.根據權利要求5?8任一項所述的裝置,其特征在于,還包括: 密鑰生成單元,用于生成所述私鑰dA ; 密鑰存儲單元,用于保存所述密鑰生成單元生成的所述私鑰dA;所述大整數運算單元從所述密鑰存儲單元中獲取所述私鑰dA以生成數字簽名參數S。
10.根據權利要求5?8任一項所述的裝置,其特征在于: 所述參數輸入接口單元還用于獲取所述私鑰dA ;所述大整數運算單元從所述參數輸入接口單元獲取所述私鑰dA以生成數字簽名參數s ;或者, 還包括密鑰存儲單元;所述參數輸入接口單元還用于獲取所述私鑰dA ;所述密鑰存儲單元用于保存所述參數輸入接口單元獲取的所述私鑰dA ;所述大整數運算單元從所述密鑰存儲單元獲取所述私鑰dA以生成數字簽名參數S。
【文檔編號】H04L9/32GK103427997SQ201310363349
【公開日】2013年12月4日 申請日期:2013年8月16日 優先權日:2013年8月16日
【發明者】李志勇, 萬紅濤, 顏湘 申請人:西安西電捷通無線網絡通信股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 筠连县| 怀宁县| 怀仁县| 成安县| 库尔勒市| 藁城市| 苗栗市| 裕民县| 和田县| 泸西县| 大关县| 兴山县| 灌南县| 嘉义县| 巨野县| 同江市| 巩留县| 邵阳县| 尚志市| 祁连县| 建水县| 溧水县| 凯里市| 安徽省| 广宗县| 全州县| 五原县| 旺苍县| 闵行区| 道孚县| 五大连池市| 西贡区| 洞口县| 棋牌| 舞阳县| 定州市| 平阴县| 榆中县| 霞浦县| 洛扎县| 昌黎县|