本發(fā)明屬于區(qū)塊鏈技術(shù)領(lǐng)域,尤其涉及一種在區(qū)塊鏈上簽名、驗(yàn)證的方法及裝置。
背景技術(shù):
在區(qū)塊鏈上交易驗(yàn)證以及區(qū)塊生成需要進(jìn)行大量的簽名驗(yàn)簽運(yùn)算,因此需要減少簽名的數(shù)據(jù)量以提升吞吐量。
采用現(xiàn)有的國(guó)密SM2算法簽名,簽名后需要傳送的數(shù)據(jù)包括:待簽名消息、簽名結(jié)果和公鑰。使得在簽名數(shù)據(jù)傳輸中增加了64字節(jié)的公鑰數(shù)據(jù)。另外由于公鑰是需要參與簽名的驗(yàn)證,所以也無(wú)法采用現(xiàn)在區(qū)塊鏈上普遍采用的外部賬戶地址(address)的機(jī)制進(jìn)行數(shù)字簽名的驗(yàn)證。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種在區(qū)塊鏈上簽名、驗(yàn)證的方法及裝置,能夠減少簽名的數(shù)據(jù)量以提升吞吐量。
第一方面,提供了一種基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法,包括:基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)所述y1的奇偶性;基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含判斷標(biāo)識(shí)v。
第二方面,提供了一種基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法,包括:接收待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名,其中,待驗(yàn)證消息的數(shù)字簽名包含判斷標(biāo)識(shí)v′;基于待驗(yàn)證消息和判斷標(biāo)識(shí)v′獲得用于生成待驗(yàn)證消息的數(shù)字簽名的橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′),其中,判斷標(biāo)識(shí)v′用于判斷y1′的奇偶性;根據(jù)點(diǎn)R′的坐標(biāo)(x1′,y1′)計(jì)算待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo),基于計(jì)算得到的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)與預(yù)存公鑰信息,對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。
第三方面,提供了一種基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置,包括:處理單元和第一簽名單元。該處理單元被配置為基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)所述y1的奇偶性。該第一簽名單元被配置為基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含判斷標(biāo)識(shí)v。
第四方面,提供了一種基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置,包括:接收單元、計(jì)算單元和驗(yàn)證單元。該接收單元被配置為接收待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名,其中,待驗(yàn)證消息的數(shù)字簽名包含判斷標(biāo)識(shí)v′;該計(jì)算單元被配置為基于待驗(yàn)證消息和判斷標(biāo)識(shí)v′獲得用于生成待驗(yàn)證消息的數(shù)字簽名的橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′),其中,判斷標(biāo)識(shí)v′用于判斷y1′的奇偶性;該驗(yàn)證單元被配置為根據(jù)點(diǎn)R′的坐標(biāo)(x1′,y1′)計(jì)算待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo),基于計(jì)算得到的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)與預(yù)存公鑰信息,對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。
根據(jù)本發(fā)明實(shí)施例提供的基于SM2橢圓曲線算法的在區(qū)塊鏈上簽名、驗(yàn)證的方法及裝置,通過(guò)在簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v,使得在驗(yàn)證過(guò)程中,在接收待驗(yàn)證消息和包含判斷標(biāo)識(shí)v′待驗(yàn)證消息的數(shù)字簽名后可以計(jì)算恢復(fù)出數(shù)字簽名發(fā)送方的公鑰,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一種實(shí)施例的在區(qū)塊鏈網(wǎng)絡(luò)的示意性網(wǎng)絡(luò)結(jié)構(gòu)圖;
圖2是本發(fā)明一種實(shí)施例的在區(qū)塊鏈上簽名、驗(yàn)證的方法的應(yīng)用場(chǎng)景示意圖;
圖3是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法的示意性流程圖;
圖4是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法的示意性流程圖;
圖5是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名、驗(yàn)證的方法的示意性流程圖;
圖6是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置的示意性框圖;
圖7是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的示意性框圖;
圖8是本發(fā)明另一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的示意性框圖;
圖9是本發(fā)明一種實(shí)施例的實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的計(jì)算設(shè)備實(shí)現(xiàn)的示意性框圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面將詳細(xì)描述本發(fā)明的各個(gè)方面的特征和示例性實(shí)施例。在下面的詳細(xì)描述中,提出了許多具體細(xì)節(jié),以便提供對(duì)本發(fā)明的全面理解。但是,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)很明顯的是,本發(fā)明可以在不需要這些具體細(xì)節(jié)中的一些細(xì)節(jié)的情況下實(shí)施。下面對(duì)實(shí)施例的描述僅僅是為了通過(guò)示出本發(fā)明的示例來(lái)提供對(duì)本發(fā)明的更好的理解。本發(fā)明決不限于下面所提出的任何具體配置和算法,而是在不脫離本發(fā)明的精神的前提下覆蓋了元素、部件和算法的任何修改、替換和改進(jìn)。在附圖和下面的描述中,沒(méi)有示出公知的結(jié)構(gòu)和技術(shù),以便避免對(duì)本發(fā)明造成不必要的模糊。
需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)。
圖1是本發(fā)明一種實(shí)施例的在區(qū)塊鏈網(wǎng)絡(luò)的示意性網(wǎng)絡(luò)結(jié)構(gòu)圖。如圖1所示,該場(chǎng)景的區(qū)塊鏈網(wǎng)絡(luò)系統(tǒng)可以包括由多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)組成的對(duì)等計(jì)算機(jī)網(wǎng)絡(luò)(P2P)。該區(qū)塊鏈網(wǎng)絡(luò)系統(tǒng)可以是一種在對(duì)等者(Peer)之間分配任務(wù)和工作負(fù)載的分布式應(yīng)用架構(gòu),是對(duì)等計(jì)算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式?!癙eer”在英語(yǔ)里有“對(duì)等者、伙伴、對(duì)端”的意義。該系統(tǒng)也可以定義為:網(wǎng)絡(luò)的參與者共享他們所擁有的一部分硬件資源(處理能力、存儲(chǔ)能力、網(wǎng)絡(luò)連接能力、打印機(jī)等),這些共享資源通過(guò)網(wǎng)絡(luò)提供服務(wù)和內(nèi)容,能被其它對(duì)等節(jié)點(diǎn)(Peer)直接訪問(wèn)而無(wú)需經(jīng)過(guò)中間實(shí)體。在此網(wǎng)絡(luò)中的參與者既是資源、服務(wù)和內(nèi)容的提供者(Server),又是資源、服務(wù)和內(nèi)容的獲取者(Client)。
在P2P網(wǎng)絡(luò)環(huán)境中,彼此連接的多臺(tái)計(jì)算機(jī)之間都處于對(duì)等的地位,各臺(tái)計(jì)算機(jī)有相同的功能,無(wú)主從之分,一臺(tái)計(jì)算機(jī)既可作為服務(wù)器,設(shè)定共享資源供網(wǎng)絡(luò)中其他計(jì)算機(jī)所使用,又可以作為工作站,整個(gè)網(wǎng)絡(luò)一般來(lái)說(shuō)不依賴專用的集中服務(wù)器,也沒(méi)有專用的工作站。網(wǎng)絡(luò)中的每一臺(tái)計(jì)算機(jī)既能充當(dāng)網(wǎng)絡(luò)服務(wù)的請(qǐng)求者,又對(duì)其它計(jì)算機(jī)的請(qǐng)求做出響應(yīng),提供資源、服務(wù)和內(nèi)容。通常這些資源和服務(wù)包括:信息的共享和交換、計(jì)算資源(如CPU計(jì)算能力共享)、存儲(chǔ)共享(如緩存和磁盤空間的使用)、網(wǎng)絡(luò)共享、打印機(jī)共享等;在一個(gè)示例中,在是上述網(wǎng)絡(luò)節(jié)點(diǎn)生成交易信息并發(fā)送給其他網(wǎng)絡(luò)節(jié)點(diǎn)時(shí)需要進(jìn)行數(shù)字簽名,數(shù)字簽名的主要目標(biāo)是用來(lái)確認(rèn)信息的發(fā)送者認(rèn)可了自己的行為。類似傳統(tǒng)的簽名一樣,一旦某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)用戶簽署了某份文件,則表示其認(rèn)可所簽署文件的真實(shí)性,并能證明為自己所簽署。數(shù)字簽名也一樣,用來(lái)證明某網(wǎng)絡(luò)節(jié)點(diǎn)用戶簽署了某份文件。采用現(xiàn)有的國(guó)密SM2算法簽名結(jié)果需要傳送的數(shù)據(jù)包括:待簽名信息、簽名結(jié)果和公鑰。使得在簽名數(shù)據(jù)傳輸中增加了64字節(jié)的公鑰數(shù)據(jù)。另外由于公鑰是需要參與簽名的驗(yàn)證,所以也無(wú)法采用現(xiàn)在區(qū)塊鏈上普遍采用的外部賬戶地址(address)的機(jī)制進(jìn)行數(shù)字簽名的驗(yàn)證。
圖2是本發(fā)明一種實(shí)施例的在區(qū)塊鏈上簽名、驗(yàn)證的方法的應(yīng)用場(chǎng)景示意圖。如圖2所示,包括在區(qū)塊鏈網(wǎng)絡(luò)中的信息發(fā)送者也就是數(shù)字簽名發(fā)送發(fā)和信息接收者也就是數(shù)字簽名的接收方。數(shù)字簽名的發(fā)送發(fā)對(duì)待簽名消息進(jìn)行簽名,并將待簽名消息、數(shù)字簽名和自身的公鑰發(fā)送給信息接收者,導(dǎo)致增加了數(shù)據(jù)量以降低了吞吐量。
為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提出一種基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法和驗(yàn)證方法。下面結(jié)合附圖3對(duì)該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法進(jìn)行詳細(xì)說(shuō)明。
圖3是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法的示意性流程圖。如圖3所示,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法S300,包括:S310,基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)所述y1的奇偶性;S320,基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含判斷標(biāo)識(shí)v。該方法可用于數(shù)字簽名發(fā)送方節(jié)點(diǎn)通過(guò)簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v使得在在發(fā)送數(shù)字簽名時(shí)給數(shù)字簽名接收方進(jìn)行驗(yàn)證時(shí),只需發(fā)送包含數(shù)字簽名、待簽名消息和一個(gè)字節(jié)的判斷標(biāo)識(shí)V,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
圖4是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法的示意性流程圖。該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法S400,包括:S410,接收待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名,其中,待驗(yàn)證消息的數(shù)字簽名包含判斷標(biāo)識(shí)v′;S420,基于待驗(yàn)證消息和判斷標(biāo)識(shí)v′獲得用于生成待驗(yàn)證消息的數(shù)字簽名的橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′),其中,判斷標(biāo)識(shí)v′用于判斷y1′的奇偶性;S430,根據(jù)點(diǎn)R′的坐標(biāo)(x1′,y1′)計(jì)算待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo),基于計(jì)算得到的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)與預(yù)存公鑰信息,對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。該方法可用于數(shù)字簽名接收方節(jié)點(diǎn),該方法通過(guò)簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v使得在驗(yàn)證過(guò)程中,在接收待驗(yàn)證消息和包含判斷標(biāo)識(shí)v′待驗(yàn)證消息的數(shù)字簽名后可以計(jì)算恢復(fù)出數(shù)字簽名發(fā)送方的公鑰,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
在一些實(shí)施例中,由于數(shù)字簽名接收者節(jié)點(diǎn)也能作為其他數(shù)字簽名接收方節(jié)點(diǎn)的數(shù)字簽名發(fā)送方節(jié)點(diǎn),所以該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法還可以包括:基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)所述y1的奇偶性;基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含判斷標(biāo)識(shí)v。
在一些實(shí)施例中,在恢復(fù)出公鑰點(diǎn)P后可以通過(guò)多種方式對(duì)數(shù)字簽名進(jìn)行驗(yàn)證,在一些示例中,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法還可以包括接收待驗(yàn)證消息的發(fā)送方的公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址,其中,預(yù)存公鑰信息包括接收的公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址。在一些示例中,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法還可以包括:基于公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址對(duì)計(jì)算獲得的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)進(jìn)行校驗(yàn),以對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。
在一些示例中,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法可以包括基于判斷標(biāo)識(shí)v′確定橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′)中的y1′。
根據(jù)一些實(shí)施例,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法可以包括基于計(jì)算生成的待簽名消息的數(shù)字簽名和待簽名消息,計(jì)算自身公鑰P點(diǎn)的坐標(biāo)的存儲(chǔ)地址并保存在區(qū)塊鏈上。在一些示例中,也可以基于接收的待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名計(jì)算待簽驗(yàn)證消息的發(fā)送方的公鑰P點(diǎn)的坐標(biāo)的存儲(chǔ)地址并保存在區(qū)塊鏈上。例如,P點(diǎn)的坐標(biāo)可以通過(guò)Hash等方式變化成字節(jié)更少的外部賬戶地址(address)保存在區(qū)塊鏈上,從而能夠減少區(qū)塊鏈上保存的數(shù)據(jù)量。
下面結(jié)合圖5對(duì)區(qū)塊鏈網(wǎng)絡(luò)中的兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行簽名和驗(yàn)證的過(guò)程進(jìn)行詳細(xì)描述,圖5是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名、驗(yàn)證的方法的示意性流程圖。如圖5所示,在信息發(fā)送者節(jié)點(diǎn)中執(zhí)行S310和S320已進(jìn)行待簽名消息的簽名,并將簽名后的信息發(fā)送給信息接收者節(jié)點(diǎn),例如,信息發(fā)送者節(jié)點(diǎn)為了獲取消息M的數(shù)字簽名(r,s,v)可執(zhí)行如下步驟:
●A1:計(jì)算e=Hv(M1);其中,M1待簽名消息,Hv()為消息摘要長(zhǎng)度為v比特的密碼雜湊函數(shù),e:密碼雜湊函數(shù)作用于消息M的輸出值。這一步是對(duì)待簽名消息進(jìn)行摘要運(yùn)算得到e,
●A2:隨機(jī)產(chǎn)生k∈[1,n-1];其中,k為1到n-1之間的大整數(shù)。
●A3:計(jì)算R(x1,y1)=kG;其中,G:橢圓曲線的一個(gè)基點(diǎn),其階為素?cái)?shù)。
●A4:計(jì)算v:如果y1奇數(shù),v為1;如果y1為偶數(shù),v為0;
●A5:計(jì)算r=(e+x1)modn,若r=0或r+k=n則返回A3;其中,modn為模n運(yùn)算。例如,23mod7=2
●A6:計(jì)算s=((1+dA)-1(k--rdA))mod n,若s=0則返回A3;其中,dA:用戶A的私鑰。
●A7:消息M的簽名為(r,s,v)。
信息接收者節(jié)點(diǎn)在接收到信息發(fā)送者發(fā)送來(lái)的數(shù)據(jù)包之后,對(duì)數(shù)據(jù)包中的數(shù)字簽名進(jìn)行驗(yàn)證,具體執(zhí)行S410、S420和S430描述的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的方法。例如,信息接收者節(jié)點(diǎn)接收到的數(shù)字簽名(r′,s′,v),待驗(yàn)證消息M′和信息發(fā)送者節(jié)點(diǎn)的公鑰在區(qū)塊鏈上的地址Address。信息接收者節(jié)點(diǎn)為了對(duì)數(shù)字簽名(r′,s′,v)進(jìn)行驗(yàn)證可執(zhí)行如下步驟:
●B1:檢驗(yàn)r′∈[1,n-1],否則不通過(guò);其中,r′為1到n-1之間的大整數(shù)。
●B2:檢驗(yàn)s′∈[1,n-1],否則不通過(guò);其中,s′為1到n-1之間的大整數(shù)。
●B3:計(jì)算e′=Hv(M1′);對(duì)待簽消息進(jìn)行摘要運(yùn)算得到e′。
●B4:計(jì)算Xr=(r-e)mod n;恢復(fù)R點(diǎn)的x坐標(biāo)
●B5:通過(guò)Xr和v計(jì)算出Yr,并恢復(fù)出R點(diǎn)(Xr,Yr);
●B6:計(jì)算s=(r′+s′)-1mod n;
●B7:計(jì)算t=s′(r′+s′)-1mod n
●B8:計(jì)算公鑰P(x,y)=sR-tG;恢復(fù)出公鑰P點(diǎn)。
●B9:計(jì)算address′=H(x||y),檢驗(yàn)address′=Address,相等通過(guò),不相等不通過(guò)。其中,x||y:x與y的拼接,其中x、y可以是比特串或字節(jié)串。H(x||y)對(duì)x與y的拼接做哈希運(yùn)算。
通過(guò)簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v使得在驗(yàn)證過(guò)程中,在接收待驗(yàn)證消息和包含判斷標(biāo)識(shí)v′待驗(yàn)證消息的數(shù)字簽名后可以計(jì)算恢復(fù)出數(shù)字簽名發(fā)送方的公鑰,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
上文中結(jié)合圖3至圖5,詳細(xì)描述了根據(jù)本發(fā)明實(shí)施例的在區(qū)塊鏈上簽名、驗(yàn)證的方法,下面將結(jié)合圖6至圖9,詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的在區(qū)塊鏈上簽名、驗(yàn)證的裝置。
圖6是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置的示意性框圖。該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置900,包括:處理單元610和第一簽名單元620。該處理單元610被配置為基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)所述y1的奇偶性。該第一簽名單元620被配置為基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含判斷標(biāo)識(shí)v。根據(jù)本發(fā)明實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置900可對(duì)應(yīng)于根據(jù)本發(fā)明實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的方法S300中的執(zhí)行主體,并且基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行簽名的裝置900中的各個(gè)單元的上述和其它操作和/或功能分別為了實(shí)現(xiàn)圖3中的各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。該裝置900可用于數(shù)字簽名發(fā)送方節(jié)點(diǎn)通過(guò)簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v使得在在發(fā)送數(shù)字簽名時(shí)給數(shù)字簽名接收方進(jìn)行驗(yàn)證時(shí),只需發(fā)送包含數(shù)字簽名、待簽名消息和一個(gè)字節(jié)的判斷標(biāo)識(shí)V,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
圖7是本發(fā)明一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的示意性框圖。如圖7所示,該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置700,包括:接收單元710、計(jì)算單元720和驗(yàn)證單元730。該接收單元710被配置為接收待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名,其中,待驗(yàn)證消息的數(shù)字簽名包含判斷標(biāo)識(shí)v′;該計(jì)算單元720被配置為基于待驗(yàn)證消息和判斷標(biāo)識(shí)v′獲得用于生成待驗(yàn)證消息的數(shù)字簽名的橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′),其中,判斷標(biāo)識(shí)v′用于判斷y1′的奇偶性;該驗(yàn)證單元730被配置為根據(jù)點(diǎn)R′的坐標(biāo)(x1′,y1′)計(jì)算待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo),基于計(jì)算得到的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)與預(yù)存公鑰信息,對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。該裝置700通過(guò)簽名過(guò)程中設(shè)置一個(gè)能夠判斷橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)中y1奇偶性的判斷標(biāo)識(shí)v使得在驗(yàn)證過(guò)程中,在接收待驗(yàn)證消息和包含判斷標(biāo)識(shí)v′待驗(yàn)證消息的數(shù)字簽名后可以計(jì)算恢復(fù)出數(shù)字簽名發(fā)送方的公鑰,從而實(shí)現(xiàn)交易發(fā)送的簽名數(shù)據(jù)中只增加一個(gè)1字節(jié)代替了公鑰的64字節(jié)的傳輸,減少了簽名數(shù)據(jù)量以提高吞吐量。
圖8是本發(fā)明另一種實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的示意性框圖。如圖8所示,由于數(shù)字簽名接收者節(jié)點(diǎn)也能作為其他數(shù)字簽名接收方節(jié)點(diǎn)的數(shù)字簽名發(fā)送方節(jié)點(diǎn),所以該基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置除了包括接收單元810、計(jì)算單元820和驗(yàn)證單元830,還可以包括:第二簽名單元840,被配置為:基于待簽名消息和隨機(jī)生成的大整數(shù)k,獲得橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)和判斷標(biāo)識(shí)v,其中,判斷標(biāo)識(shí)v用于標(biāo)識(shí)y1的奇偶性;基于獲得的橢圓曲線點(diǎn)R的坐標(biāo)(x1,y1)、待簽名消息發(fā)送方的私鑰和判斷標(biāo)識(shí)v,計(jì)算待簽名消息的數(shù)字簽名,數(shù)字簽名包含所述判斷標(biāo)識(shí)v。
根據(jù)一些實(shí)施例,接收單元810還被配置為:接收待驗(yàn)證消息的發(fā)送方的公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址,其中,預(yù)存公鑰信息包括接收的公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址。在一些示例中,該計(jì)算單元820還可以被配置為:基于公鑰P點(diǎn)的坐標(biāo)或公鑰P點(diǎn)的坐標(biāo)在區(qū)塊鏈上的地址對(duì)計(jì)算獲得的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)進(jìn)行校驗(yàn),以對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。
根據(jù)一些實(shí)施例,該驗(yàn)證單元830還可以被配置為:基于判斷標(biāo)識(shí)v′確定所述橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′)中的y1。
根據(jù)一些實(shí)施例,該裝置800還可以包括存儲(chǔ)單元,被配置為:基于計(jì)算生成的待簽名消息的數(shù)字簽名和待簽名消息,計(jì)算自身公鑰P點(diǎn)的坐標(biāo)的存儲(chǔ)地址并保存在區(qū)塊鏈上。在一些示例中,該存儲(chǔ)單元還可以被配置為:基于接收的待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名計(jì)算待簽驗(yàn)證消息的發(fā)送方的公鑰P點(diǎn)的坐標(biāo)的存儲(chǔ)地址并保存在區(qū)塊鏈上。
圖9是本發(fā)明一種實(shí)施例的實(shí)施例的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證的裝置的計(jì)算設(shè)備實(shí)現(xiàn)的示意性框圖。如圖9所示結(jié)合上述的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證方法和基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證裝置的至少一部分可以由計(jì)算設(shè)備900包括輸入設(shè)備901、輸入端口902、處理器903、存儲(chǔ)器904、輸出端口905、以及輸出設(shè)備906。其中,輸入端口902、處理器903、存儲(chǔ)器904、以及輸出端口905通過(guò)總線910相互連接,輸入設(shè)備901和輸出設(shè)備906分別通過(guò)輸入端口902和輸出端口905與總線910連接,進(jìn)而與計(jì)算設(shè)備900的其他組件連接。需要說(shuō)明的是,這里的輸出接口和輸入接口也可以用I/O接口表示。具體地,輸入設(shè)備901接收來(lái)自外部的輸入信息,并通過(guò)輸入端口902將輸入信息傳送到處理器903;處理器903基于存儲(chǔ)器904中存儲(chǔ)的計(jì)算機(jī)可執(zhí)行指令對(duì)輸入信息進(jìn)行處理以生成輸出信息,將輸出信息臨時(shí)或者永久地存儲(chǔ)在存儲(chǔ)器904中,然后通過(guò)輸出端口905將輸出信息傳送到輸出設(shè)備906;輸出設(shè)備906將輸出信息輸出到計(jì)算設(shè)備900的外部。
上述存儲(chǔ)器904包括用于數(shù)據(jù)或指令的大容量存儲(chǔ)器。舉例來(lái)說(shuō)而非限制,存儲(chǔ)器904可包括HDD、軟盤驅(qū)動(dòng)器、閃存、光盤、磁光盤、磁帶或通用串行總線(USB)驅(qū)動(dòng)器或者兩個(gè)或更多個(gè)以上這些的組合。在合適的情況下,存儲(chǔ)器904可包括可移除或不可移除(或固定)的介質(zhì)。在合適的情況下,存儲(chǔ)器904可在計(jì)算設(shè)備900的內(nèi)部或外部。在特定實(shí)施例中,存儲(chǔ)器904是非易失性固態(tài)存儲(chǔ)器。在特定實(shí)施例中,存儲(chǔ)器904包括只讀存儲(chǔ)器(ROM)。在合適的情況下,該ROM可以是掩模編程的ROM、可編程ROM(PROM)、可擦除PROM(EPROM)、電可擦除PROM(EEPROM)、電可改寫ROM(EAROM)或閃存或者兩個(gè)或更多個(gè)以上這些的組合。
總線910包括硬件、軟件或兩者,將計(jì)算設(shè)備900的部件彼此耦接在一起。舉例來(lái)說(shuō)而非限制,總線910可包括加速圖形端口(AGP)或其他圖形總線、增強(qiáng)工業(yè)標(biāo)準(zhǔn)架構(gòu)(EISA)總線、前端總線(FSB)、超傳輸(HT)互連、工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線、無(wú)限帶寬互連、低引腳數(shù)(LPC)總線、存儲(chǔ)器總線、微信道架構(gòu)(MCA)總線、外圍組件互連(PCI)總線、PCI-Express(PCI-X)總線、串行高級(jí)技術(shù)附件(SATA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)局部(VLB)總線或其他合適的總線或者兩個(gè)或更多個(gè)以上這些的組合。在合適的情況下,總線910可包括一個(gè)或多個(gè)總線910。盡管本發(fā)明實(shí)施例描述和示出了特定的總線,但本發(fā)明考慮任何合適的總線或互連。
當(dāng)通過(guò)圖9所示的計(jì)算設(shè)備900實(shí)現(xiàn)結(jié)合圖7描述的基于SM2橢圓曲線算法在區(qū)塊鏈上進(jìn)行驗(yàn)證裝置時(shí),輸入設(shè)備901接收待驗(yàn)證消息和待驗(yàn)證消息的數(shù)字簽名,在特定實(shí)施例中,與輸出設(shè)備相連的I/O接口可以包括硬件、軟件或兩者,提供用于在計(jì)算設(shè)備900與一個(gè)或多個(gè)I/O設(shè)備之間的通信的一個(gè)或多個(gè)接口。在合適的情況下,計(jì)算設(shè)備900可包括一個(gè)或多個(gè)這些I/O設(shè)備。一個(gè)或多個(gè)這些I/O設(shè)備可允許人和計(jì)算機(jī)系統(tǒng)900之間的通信。舉例來(lái)說(shuō)而非限制,I/O設(shè)備可包括鍵盤、小鍵盤、麥克風(fēng)、監(jiān)視器、鼠標(biāo)、打印機(jī)、掃描儀、揚(yáng)聲器、靜態(tài)照相機(jī)、觸針、手寫板、觸摸屏、軌跡球、視頻攝像機(jī)、另一合適的I/O設(shè)備或者兩個(gè)或更多個(gè)以上這些的組合。I/O設(shè)備可包括一個(gè)或多個(gè)傳感器。本發(fā)明實(shí)施例考慮用于它們的任何合適的I/O設(shè)備和任何合適的I/O接口。在合適的情況下,I/O接口可包括一個(gè)或多個(gè)裝置或能夠允許處理器903驅(qū)動(dòng)一個(gè)或多個(gè)這些I/O設(shè)備的軟件驅(qū)動(dòng)器。在合適的情況下,I/O接口可包括一個(gè)或多個(gè)I/O接口。盡管本發(fā)明實(shí)施例描述和示出了特定的I/O接口,但本發(fā)明實(shí)施例考慮任何合適的I/O接口。該處理器903基于存儲(chǔ)器904中存儲(chǔ)的計(jì)算機(jī)可執(zhí)行指令,基于待驗(yàn)證消息和判斷標(biāo)識(shí)v′獲得用于生成待驗(yàn)證消息的數(shù)字簽名的橢圓曲線點(diǎn)R′的坐標(biāo)(x1′,y1′),其中,判斷標(biāo)識(shí)v′用于判斷y1′的奇偶性;根據(jù)點(diǎn)R′的坐標(biāo)(x1′,y1′)計(jì)算待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo),基于計(jì)算得到的待驗(yàn)證消息的發(fā)送方的公鑰P′點(diǎn)的坐標(biāo)與預(yù)存公鑰信息,對(duì)待驗(yàn)證消息的數(shù)字簽名進(jìn)行驗(yàn)證。隨后在需要時(shí)經(jīng)由輸出端口905和輸出設(shè)備906將上述驗(yàn)證結(jié)果輸出。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施例方案的目的。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。