本發(fā)明屬于信息安全領(lǐng)域,更具體地,涉及一種客戶端和服務(wù)端協(xié)作生成數(shù)字簽名的方法。
背景技術(shù):
目前,業(yè)務(wù)系統(tǒng)多采用基于數(shù)字證書的公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,簡稱PKI)系統(tǒng)來保障業(yè)務(wù)數(shù)據(jù)安全,數(shù)字證書是由證書授權(quán)(Certificate Authority,簡稱CA)或第三方CA簽發(fā)的,以數(shù)字證書為核心的公鑰密碼機(jī)制可以對網(wǎng)絡(luò)上傳輸?shù)男畔⑦M(jìn)行加密和解密、數(shù)字簽名和驗(yàn)證,以確保網(wǎng)絡(luò)上傳遞消息的機(jī)密性、完整性以及交易實(shí)體的真實(shí)性,以及簽名的不可否認(rèn)性,進(jìn)而保障網(wǎng)絡(luò)應(yīng)用的安全性。
在以數(shù)字證書為核心的PKI系統(tǒng)中,數(shù)字簽名由客戶端調(diào)用用戶數(shù)字證書對應(yīng)的私鑰來獨(dú)立計(jì)算完成。常用的數(shù)字簽名算法包括RSA簽名算法和基于橢圓曲線密碼的數(shù)字簽名算法,其中基于橢圓曲線密碼的數(shù)字簽名算法包括國際上使用最廣泛的橢圓曲線數(shù)字簽名算法(Elliptic Curve Digital Signature Algorithm,簡稱ECDSA)和中國國家密碼標(biāo)準(zhǔn)的SM2數(shù)字簽名算法。
然而,上述數(shù)字簽名算法存在以下幾個(gè)技術(shù)問題:
第一,數(shù)字證書對應(yīng)的用戶私鑰是由用戶生成,并由用戶保管,容易被黑客竊取,為了保障用戶私鑰的安全,目前通行的做法是使用專門的硬件安全設(shè)備(譬如智能卡、U盾、智能密鑰設(shè)備等)來存儲和保護(hù)用戶私鑰,但這就要求用戶必須購買并隨身攜帶該硬件安全設(shè)備才能完成數(shù)字簽名操作,從而既增加了用戶使用的成本,也增加了用戶使用的復(fù)雜度。
第二,由于用戶私鑰是存儲在客戶端,并在客戶端使用,因此用戶可以隨時(shí)生成數(shù)字簽名;如果用戶丟失數(shù)字證書,或因用戶離職需要作廢數(shù)字證書,服務(wù)端不能及時(shí)將用戶私鑰的客戶端部分作廢,并終止用戶的簽名操作。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種客戶端和服務(wù)端協(xié)作生成數(shù)字簽名的方法,其目的在于,解決現(xiàn)有方法中存在的用戶必須隨身攜帶硬件安全設(shè)備以完成數(shù)字簽名操作所造成的用戶使用復(fù)雜度高,以及客戶端密鑰不能被及時(shí)作廢所導(dǎo)致用戶的簽名操作不能被終止的技術(shù)問題。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種客戶端和服務(wù)端協(xié)作生成數(shù)字簽名方法,包括以下步驟:
(1)客戶端接收來自外部應(yīng)用的數(shù)字簽名請求,并根據(jù)該數(shù)字簽名請求發(fā)送簽名原文m和用戶個(gè)人識別信息ID給服務(wù)端,其中該用戶個(gè)人識別信息ID可包括用戶名,和/或客戶端使用公鑰密碼算法對其自身生成的第一私鑰d1進(jìn)行處理后得到的第一公鑰P1;
(2)服務(wù)端根據(jù)用戶個(gè)人識別信息ID檢測用戶私鑰是否已經(jīng)被撤銷,如果沒有被撤銷則進(jìn)入步驟(3),否則過程結(jié)束;
(3)服務(wù)端根據(jù)接收到的用戶個(gè)人識別信息ID在其自身中查找對應(yīng)的第二私鑰d2,利用該第二私鑰d2對簽名原文m進(jìn)行數(shù)字簽名,以生成第一簽名信息S1,并將第一簽名信息S1發(fā)送給客戶端;
(4)客戶端利用第一私鑰d1對簽名原文m和第一簽名信息S1的組合進(jìn)行數(shù)字簽名,以生成完整簽名信息S,并將完整簽名信息S返回給外部應(yīng)用。
優(yōu)選地,生成第一簽名信息S1的步驟如下:
(3-1)根據(jù)第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(d2,m)*G
或根據(jù)個(gè)人用戶識別信息ID、第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(ID,d2,m)*G
其中H表示哈希算法,G為數(shù)字簽名算法采用的橢圓曲線的基點(diǎn),*表示橢圓曲線的點(diǎn)乘運(yùn)算;
(3-2)將計(jì)算獲得的橢圓曲線點(diǎn)P2賦值給第一簽名信息S1。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是SM2橢圓曲線簽名算法,且步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并獲得橢圓曲線上的點(diǎn)k*G,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)步驟(4-1)獲得的橢圓曲線上的點(diǎn)k*G和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*G+S1,其中+表示橢圓曲線的點(diǎn)加運(yùn)算;
(4-3)根據(jù)步驟(4-2)中獲得的橢圓曲線點(diǎn)P1和用戶個(gè)人識別信息獲取簽名結(jié)果第一要素r=(e+x1)mod n,其中e=H(Z||m),Z表示用戶個(gè)人識別信息的摘要值;x1表示P1點(diǎn)的橫坐標(biāo),y1表示P1點(diǎn)的縱坐標(biāo);
(4-4)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-3)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=((1+d1)-1·(k-r·d1))mod n;
(4-5)將步驟(4-3)獲得的簽名結(jié)果第一要素r和步驟(4-4)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是SM2橢圓曲線簽名算法,且步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*S1,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)步驟(4-1)中獲得的橢圓曲線點(diǎn)P1和用戶個(gè)人識別信息獲取簽名結(jié)果第一要素r=(e+x1)mod n,其中e=H(Z||m),Z表示用戶個(gè)人識別信息的摘要值;x1表示P1點(diǎn)的橫坐標(biāo),y1表示P1點(diǎn)的縱坐標(biāo);
(4-3)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-2)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=((1+d1)-1·(k-r·d1))mod n;
(4-4)將步驟(4-2)獲得的簽名結(jié)果第一要素r和步驟(4-3)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是ECDSA橢圓曲線簽名算法,則步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并獲得橢圓曲線上的點(diǎn)k*G,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)步驟(4-1)獲得的橢圓曲線上的點(diǎn)k*G和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*G+S1,其中+表示橢圓曲線的點(diǎn)加運(yùn)算;
(4-3)根據(jù)步驟(4-2)中獲得的橢圓曲線點(diǎn)P1獲取簽名結(jié)果第一要素r=x1mod n,其中x1表示P1點(diǎn)的橫坐標(biāo);
(4-4)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-3)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=k-1·(e+r·d1)mod n;其中e等于H(m);
(4-5)將步驟(4-3)獲得的簽名結(jié)果第一要素r和步驟(4-4)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是ECDSA橢圓曲線簽名算法,則步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*S1,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)步驟(4-1)中獲得的橢圓曲線點(diǎn)P1獲取簽名結(jié)果第一要素r=x1mod n,其中x1表示P1點(diǎn)的橫坐標(biāo);
(4-3)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-2)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=k-1·(e+r·d1)mod n;其中e等于H(m);
(4-4)將步驟(4-2)獲得的簽名結(jié)果第一要素r和步驟(4-3)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
優(yōu)選地,生成第一簽名信息S1的步驟如下:
(3-1)根據(jù)第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(d2,m)*G
或根據(jù)個(gè)人用戶識別信息ID、第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(ID,d2,m)*G
(3-2)將計(jì)算獲得的橢圓曲線點(diǎn)P2的橫坐標(biāo)x2賦值給第一簽名信息S1。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是SM2橢圓曲線簽名算法,且步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)獲取橢圓曲線點(diǎn)P1=k*G,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)用戶個(gè)人識別信息、橢圓曲線上的點(diǎn)P1和第一簽名信息S1獲取簽名結(jié)果第一要素r=(e+x1+S1)mod n;
(4-3)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-2)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=((1+d1)-1·(k-r·d1))mod n;
(4-4)將步驟(4-2)獲得的簽名結(jié)果第一要素r和步驟(4-3)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
優(yōu)選地,步驟(4)中使用的數(shù)字簽名算法是ECDSA橢圓曲線簽名算法,且步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)獲取橢圓曲線點(diǎn)P1=k*G,其中n為使用的數(shù)字簽名算法中橢圓曲線的階;
(4-2)根據(jù)橢圓曲線上的點(diǎn)P1和第一簽名信息S1獲取簽名結(jié)果第一要素r=(x1+S1)mod n;
(4-3)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-2)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=k-1·(e+r·d1)mod n;其中e等于H(m);
(4-4)將步驟(4-2)獲得的簽名結(jié)果第一要素r和步驟(4-3)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
按照本發(fā)明的另一方面,提供了一種客戶端和服務(wù)端協(xié)作生成數(shù)字簽名方法,包括以下步驟:
(1)客戶端接收來自外部應(yīng)用的數(shù)字簽名請求,并根據(jù)該數(shù)字簽名請求發(fā)送簽名原文和用戶個(gè)人識別信息給服務(wù)端,其中該用戶個(gè)人識別信息可包括用戶名,和/或客戶端使用公鑰密碼算法對其自身生成的第一私鑰d1進(jìn)行處理后得到的第一公鑰P1;
(2)服務(wù)端根據(jù)用戶個(gè)人識別信息檢測用戶私鑰是否已經(jīng)被撤銷,如果沒有被撤銷則進(jìn)入步驟(3),否則過程結(jié)束;
(3)服務(wù)端根據(jù)接收到的用戶個(gè)人識別信息在其自身中查找對應(yīng)的第二私鑰d2,利用該第二私鑰d2對簽名原文進(jìn)行數(shù)字簽名,以生成第一簽名信息S1,并將第一簽名信息S1發(fā)送給客戶端;
(4)客戶端利用第一私鑰d1對簽名原文進(jìn)行數(shù)字簽名,以生成第二簽名信息S2,將第一簽名信息S1和第二簽名信息S2合成為完整簽名信息S,并將完整簽名信息S返回給外部應(yīng)用。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
1、本發(fā)明的方法由于采用了客戶端和服務(wù)端同時(shí)生成和保存部分的用戶私鑰,且客戶端和服務(wù)端中任意一方均不能單獨(dú)合成完整的用戶私鑰,從而保證了用戶私鑰的安全性,即使用戶私鑰的客戶端部分(即第一私鑰)被黑客竊取,該黑客也根本無法恢復(fù)出完整的用戶私鑰;
2、本發(fā)明的方法由于采用了客戶端和服務(wù)端同時(shí)參與簽名運(yùn)算流程,用戶私鑰的客戶端部分(即第一私鑰)和服務(wù)端部分(即第二私鑰)均只在滿足條件下參與簽名運(yùn)算,以生成部分簽名,且客戶端和服務(wù)端中任意一方均不能生成完整的簽名,從而保證了用戶簽名的安全性。
3、本發(fā)明中的用戶私鑰是以分散的方式被保存,客戶端不需要專門的硬件安全設(shè)備來保存用戶私鑰,從而能夠保證完整的用戶私鑰的安全性,同時(shí)本發(fā)明用戶的使用復(fù)雜度低。
4、本發(fā)明通過采用服務(wù)器參與簽名運(yùn)算,并在簽名之前檢測用戶私鑰有無被撤銷,如果被撤銷則終止簽名,從而保證了用戶私鑰使用的時(shí)效性。
附圖說明
圖1是根據(jù)本發(fā)明第一實(shí)施方式的客戶端和服務(wù)端協(xié)作生成數(shù)字簽名的方法的流程圖。
圖2是根據(jù)本發(fā)明第二實(shí)施方式的客戶端和服務(wù)端協(xié)作生成數(shù)字簽名的方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,本發(fā)明客戶端和服務(wù)端協(xié)作生成數(shù)字簽名方法包括以下步驟:
(1)客戶端接收來自外部應(yīng)用的數(shù)字簽名請求,并根據(jù)該數(shù)字簽名請求發(fā)送簽名原文和用戶個(gè)人識別信息給服務(wù)端;具體而言,該用戶個(gè)人識別信息可包括用戶名,和/或客戶端使用公鑰密碼算法對其自身生成的第一私鑰d1進(jìn)行處理后得到的第一公鑰P1,其中第一私鑰d1可以是客戶端隨機(jī)生成并保存,或者客戶端通過執(zhí)行密鑰派生函數(shù)生成;外部應(yīng)用可以是外部的app應(yīng)用、web應(yīng)用、各種進(jìn)程等;
(2)服務(wù)端根據(jù)用戶個(gè)人識別信息檢測用戶私鑰是否已經(jīng)被撤銷,如果沒有被撤銷則進(jìn)入步驟(3),否則過程結(jié)束;具體而言,服務(wù)端查看該個(gè)人識別信息中對應(yīng)的標(biāo)識信息,該標(biāo)識信息能夠標(biāo)識用戶私鑰是否已經(jīng)被撤銷;
(3)服務(wù)端根據(jù)接收到的用戶個(gè)人識別信息在其自身中查找對應(yīng)的第二私鑰d2,利用該第二私鑰d2對簽名原文進(jìn)行數(shù)字簽名,以生成第一簽名信息S1,并將第一簽名信息S1發(fā)送給客戶端;其中該第二私鑰d2是用戶首次在服務(wù)端注冊階段,由服務(wù)端隨機(jī)生成并保存,或者服務(wù)端通過執(zhí)行密鑰派生函數(shù)生成;
具體而言,根據(jù)本發(fā)明的一種實(shí)施方式,生成第一簽名信息S1的步驟如下:
首先,根據(jù)第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(d2,m)*G
或根據(jù)個(gè)人用戶識別信息ID、第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(ID,d2,m)*G
其中H表示哈希算法,G為數(shù)字簽名算法采用的橢圓曲線的基點(diǎn),*表示橢圓曲線的點(diǎn)乘運(yùn)算;
其次,將計(jì)算獲得的橢圓曲線點(diǎn)P2賦值給第一簽名信息S1。
根據(jù)本發(fā)明的另一種實(shí)施方式,生成第一簽名信息S1的步驟如下:
首先,根據(jù)第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(d2,m)*G
或根據(jù)個(gè)人用戶識別信息ID、第二私鑰d2和簽名原文m并使用以下公式獲得橢圓曲線點(diǎn)P2:
P2=H(ID,d2,m)*G
其次,將計(jì)算獲得的橢圓曲線點(diǎn)P2的橫坐標(biāo)x2賦值給第一簽名信息S1。
(4)客戶端利用第一私鑰d1對簽名原文和第一簽名信息S1的組合進(jìn)行數(shù)字簽名,以生成完整簽名信息S,并將完整簽名信息S返回給外部應(yīng)用。
作為本發(fā)明的進(jìn)一步改進(jìn),本發(fā)明的方法還可以包括在上述步驟(1)之后,步驟(2)之前的以下步驟:
(1’)服務(wù)端根據(jù)用戶個(gè)人識別信息對用戶進(jìn)行身份驗(yàn)證;身份驗(yàn)證包括要求用戶提供PIN碼信息、語音信息、指紋信息、人臉信息、虹膜信息中任意一種或幾種的組合,然后對該信息進(jìn)行驗(yàn)證。
作為本發(fā)明的進(jìn)一步改進(jìn),本發(fā)明的方法還可以包括在上述步驟(3)之后,步驟(4)之前的以下步驟:
(3’)客戶端根據(jù)用戶個(gè)人識別信息對用戶進(jìn)行身份驗(yàn)證,身份驗(yàn)證包括要求用戶提供PIN碼信息、語音信息、指紋信息、人臉信息、虹膜信息中任意一種或幾種的組合,然后對該信息進(jìn)行驗(yàn)證。
作為本發(fā)明的另一種實(shí)施方式,如圖2所示,上述步驟(4)也可被替換為:
(4’)客戶端利用第一私鑰d1對簽名原文進(jìn)行數(shù)字簽名,以生成第二簽名信息S2,將第一簽名信息S1和第二簽名信息S2合成為完整簽名信息S,并將完整簽名信息S返回給外部應(yīng)用。
在本發(fā)明一個(gè)實(shí)施方式中,若步驟(4)中使用的數(shù)字簽名算法是SM2橢圓曲線簽名算法,則上述步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],其中n為使用的數(shù)字簽名算法中橢圓曲線的階,并獲得橢圓曲線上的點(diǎn)k*G;
(4-2)根據(jù)步驟(4-1)獲得的橢圓曲線上的點(diǎn)k*G和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*G+S1,其中+表示橢圓曲線的點(diǎn)加運(yùn)算;
(4-3)根據(jù)步驟(4-2)中獲得的橢圓曲線點(diǎn)P1和用戶個(gè)人識別信息獲取簽名結(jié)果第一要素r=(e+x1)mod n,其中e=H(Z||m),H表示哈希運(yùn)算,Z表示用戶個(gè)人識別信息的摘要值;x1表示P1點(diǎn)的橫坐標(biāo),y1表示P1點(diǎn)的縱坐標(biāo);
(4-4)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-3)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=((1+d1)-1·(k-r·d1))mod n;
(4-5)將步驟(4-3)獲得的簽名結(jié)果第一要素r和步驟(4-4)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
作為本發(fā)明的進(jìn)一步改進(jìn),上述步驟(4-1)和步驟(4-2)也可被替換為下述步驟:
(4-1’)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*S1;
作為本發(fā)明的進(jìn)一步改進(jìn),上述步驟(4-1)、步驟(4-2)和步驟(4-3)也可被替換為下述步驟:
(4-1”)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)獲取橢圓曲線點(diǎn)P1=k*G;
(4-2”)根據(jù)用戶個(gè)人識別信息、橢圓曲線上的點(diǎn)P1和第一簽名信息S1獲取簽名結(jié)果第一要素r=(e+x1+S1)mod n;
在本發(fā)明一個(gè)實(shí)施方式中,若步驟(4)中使用的數(shù)字簽名算法是ECDSA橢圓曲線簽名算法,則上述步驟(4)具體包括以下子步驟:
(4-1)生成隨機(jī)數(shù)k∈[1,n-1],并獲得橢圓曲線上的點(diǎn)k*G;
(4-2)根據(jù)步驟(4-1)獲得的橢圓曲線上的點(diǎn)k*G和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*G+S1,其中+表示橢圓曲線的點(diǎn)加運(yùn)算;
(4-3)根據(jù)步驟(4-2)中獲得的橢圓曲線點(diǎn)P1獲取簽名結(jié)果第一要素r=x1mod n,其中x1表示P1點(diǎn)的橫坐標(biāo);
(4-4)根據(jù)第一私鑰d1、隨機(jī)數(shù)k、步驟(4-3)得到的簽名結(jié)果第一要素r獲取簽名結(jié)果第二要素s=k-1·(e+r·d1)mod n;其中e等于H(m);
(4-5)將步驟(4-3)獲得的簽名結(jié)果第一要素r和步驟(4-4)中獲得的簽名結(jié)果第二要素s合成,以得到完整簽名信息S。
作為本發(fā)明的進(jìn)一步改進(jìn),上述步驟(4-1)和步驟(4-2)也可被替換為下述步驟:
(4-1’)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)和第一簽名信息獲取橢圓曲線點(diǎn)P1=k*S1;
作為本發(fā)明的進(jìn)一步改進(jìn),上述步驟(4-1)、步驟(4-2)和步驟(4-3)也可被替換為下述步驟:
(4-1”)生成隨機(jī)數(shù)k∈[1,n-1],并根據(jù)該隨機(jī)數(shù)獲取橢圓曲線點(diǎn)P1=k*G;
(4-2”)根據(jù)橢圓曲線上的點(diǎn)P1和第一簽名信息S1獲取簽名結(jié)果第一要素r=(x1+S1)mod n。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。