本發(fā)明涉及電子簽名技術領域,尤其涉及一種簽名驗簽方法和裝置。
背景技術:
用戶在向銀行、政府機構等對安全要求較高的企業(yè)和部門提交數(shù)字文件時,為了防止數(shù)字文件被偽造和篡改,往往需要對數(shù)字文件進行電子簽名,從而保證文件的真實性、有效性和完整性。根據(jù)《聯(lián)合國國際貿(mào)易法委員會電子商務示范法》的規(guī)定,電子簽名是包含、附加在某一數(shù)據(jù)電文內(nèi),或邏輯上與某一數(shù)據(jù)電文相聯(lián)系的電子形式的數(shù)據(jù),它能被用來證實與此數(shù)據(jù)電文有關的簽名人的身份,并表明該簽名人認可該數(shù)據(jù)電文所載信息。電子簽名的一種最為普遍和成熟的實現(xiàn)方式是數(shù)字簽名技術。數(shù)字簽名技術是依靠密鑰加密技術來實現(xiàn)的。在密鑰加密技術里,每一個使用者都有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發(fā)布,但私鑰則需秘密保存。然而在實際使用的過程中,私鑰被竊取的情況時有發(fā)生。
u盾很好地解決了私鑰被竊取的問題。u盾內(nèi)置有微型智能芯片,采用1024位非對稱密鑰算法對信息進行加密、解密和數(shù)字簽名。u盾的密鑰存儲于內(nèi)部的智能芯片中,用戶無法從外部直接讀取,對密鑰文件的讀寫和修改都必須由u盾內(nèi)置的智能芯片上的cpu調(diào)用相應的程序文件執(zhí)行,因此從u盾接口的外面,沒有任何一條指令能對智能芯片內(nèi)密鑰文件的內(nèi)容進行讀取、修改、更新和刪除,這樣可以保證黑客無法利用非法程序修改密鑰。目前u盾作為身份認證和數(shù)字簽名工具已廣泛用于銀行和政府部門。u盾中的密鑰信息由證書授權中心(ca)統(tǒng)一進行發(fā)放和管理,其中ca用于提供用戶注冊、審核,密鑰產(chǎn)生、分發(fā),證書簽發(fā)、制證及發(fā)布等功能。
由于u盾是一個物理存在,其必然存在發(fā)放、使用以及保管方面的問題。另外,u盾在一個時間點只能物理存在于一個地方,這就無法實現(xiàn)處于異地的多個人同時對該u盾的使用。
技術實現(xiàn)要素:
鑒于上述技術問題,本公開內(nèi)容提出了一種能夠在沒有u盾的情況下實現(xiàn)電子簽名的簽名驗簽方法和裝置。
依據(jù)本發(fā)明的一個方面,提供了一種簽名驗簽方法,該簽名驗簽方法可以包括接收簽名請求,所述簽名請求包含文件的摘要信息和發(fā)送方標識;生成隨機數(shù);根據(jù)簽名生成算法基于所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識生成所述文件的簽名;以及將所述簽名存儲在區(qū)塊鏈中并將所述隨機數(shù)返回給發(fā)送所述簽名請求的發(fā)送方。
在一些實施方式中,該簽名驗簽方法還可以包括接收簽名驗證請求,所述簽名驗證請求包含預驗證的簽名;驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中;以及在所述預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。
在一些實施方式中,所述簽名生成算法可以包括對由所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識組成的字符串求哈希。
在一些實施方式中,所述預驗證的簽名可以是根據(jù)所述簽名生成算法生成的。
在一些實施方式中,所述將所述簽名存儲在區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名存儲智能合約,所述簽名存儲智能合約用于將所述簽名存儲在所述區(qū)塊鏈的數(shù)據(jù)庫中。
在一些實施方式中,所述驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名查詢智能合約,所述簽名查詢智能合約用于確定所述預驗證的簽名是否存在于所述區(qū)塊鏈中。
依據(jù)本發(fā)明的另一方面,提供了一種簽名驗簽裝置,該簽名驗簽裝置可以包括處理器和存儲器,其中所述存儲器上存儲有計算機程序指令,所述計算機程序指令在由所述處理器執(zhí)行時可以實現(xiàn)以下步驟:接收簽名請求,所述簽名請求包含文件的摘要信息和發(fā)送方標識;生成隨機數(shù);根據(jù)簽名生成算法基于所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識生成所述文件的簽名;以及將所述簽名存儲在區(qū)塊鏈中并將所述隨機數(shù)返回給發(fā)送所述簽名請求的發(fā)送方。
在一些實施方式中,所述計算機程序指令在由所述處理器執(zhí)行時還可以實現(xiàn)以下步驟:接收簽名驗證請求,所述簽名驗證請求包含預驗證的簽名;驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中;以及在所述預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。
在一些實施方式中,所述簽名生成算法可以包括對由所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識組成的字符串求哈希。
在一些實施方式中,所述預驗證的簽名可以是根據(jù)所述簽名生成算法生成的。
在一些實施方式中,所述將所述簽名存儲在區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名存儲智能合約,所述簽名存儲智能合約用于將所述簽名存儲在所述區(qū)塊鏈的數(shù)據(jù)庫中。
在一些實施方式中,所述驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名查詢智能合約,所述簽名查詢智能合約用于確定所述預驗證的簽名是否存在于所述區(qū)塊鏈中。
依據(jù)本發(fā)明的又一方面,提供了一種計算機可讀存儲介質(zhì),在該計算機可讀存儲介質(zhì)上存儲有計算機程序指令,其中所述計算機程序指令在由處理器執(zhí)行時實現(xiàn)上文所述的簽名驗簽方法,所述簽名驗簽方法可以包括接收簽名請求,所述簽名請求包含文件的摘要信息和發(fā)送方標識;生成隨機數(shù);根據(jù)簽名生成算法基于所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識生成所述文件的簽名;以及將所述簽名存儲在區(qū)塊鏈中并將所述隨機數(shù)返回給發(fā)送所述簽名請求的發(fā)送方。
與現(xiàn)有技術相比,本公開內(nèi)容的有益效果為:
首先,依據(jù)本公開內(nèi)容的技術方案是根據(jù)簽名生成算法基于隨機數(shù)、摘要信息和發(fā)送方標識生成文件的簽名,并且將所述簽名存儲在區(qū)塊鏈中。這其中并未涉及任何公鑰私鑰以及物理存在的u盾,也就是說,要進行電子簽名的一方無需秘密保存或存放任何需要進行電子簽名所需的信息,即可以在無公鑰私鑰以及u盾的情況下實現(xiàn)電子簽名,從而減少了u盾采購的經(jīng)濟投入。
其次,利用本公開內(nèi)容的技術方案,要進行電子簽名和/或驗證的一方只需要連接到區(qū)塊鏈即可進行電子簽名和/或驗證,從而可以使得處于不同地方的多個人能夠同時進行電子簽名和/或驗證。
再者,眾所周知區(qū)塊鏈具有成本低、防篡改和不可偽造等特點,因此利用本公開內(nèi)容的技術方案能夠?qū)崿F(xiàn)高安全性。
附圖說明
在所附權利要求書中具體闡述了本發(fā)明的新穎特征。通過參考對在其中利用到本發(fā)明原理的說明性實施方式加以闡述的以下詳細描述和附圖,將會對本發(fā)明的特征和優(yōu)點獲得更好的理解。附圖僅用于示出實施方式的目的,而并不應當認為是對本發(fā)明的限制。而且在整個附圖中,用相同的附圖標記表示相同的元素,在附圖中:
圖1示出了依據(jù)本發(fā)明示例性實施方式的簽名驗簽方法的流程圖;
圖2示出了依據(jù)本發(fā)明示例性實施方式的簽名驗簽裝置的示意圖;以及
圖3示出了依據(jù)本公開內(nèi)容一個示例所涉及的企業(yè)、工商登記機關和簽名驗簽裝置之間的交互示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開內(nèi)容的示例性實施方式。雖然附圖中顯示了本公開內(nèi)容的示例性實施方式,然而應當理解,可以以各種形式實現(xiàn)本公開內(nèi)容而不應被這里闡述的實施方式所限制。相反,提供這些實施方式是為了能夠更透徹地理解本公開內(nèi)容,并且能夠?qū)⒈竟_內(nèi)容的范圍完整地傳達給本領域技術人員。在以下詳細描述中沒有任何內(nèi)容旨在表明任何特定組件、特征或步驟對于本發(fā)明是必不可少的。本領域技術人員將會理解,各種特征或步驟可以彼此替代或結合。
數(shù)字簽名是電子簽名的一種實現(xiàn)方式。在數(shù)字簽名中廣泛使用哈希(hash)算法。hash算法還用于驗證信息來源和完整性,它可將任意長度的數(shù)據(jù)壓縮成固定長度的信息摘要。hash算法的原理是將數(shù)據(jù)按照固定長度分組,通過組合分組數(shù)據(jù)迭代調(diào)用壓縮函數(shù)最終得到固定長度的信息摘要。hash算法主要分為md系列和sha系列兩大類。md系列包括md4、md5、haval、ripemd等,其中md5是md4的改進版本,haval是md5的改進版本,而ripemd是md4的變形。王小云等人于2004年公布了md5破解的高效方法,破解時間可以縮少到幾十秒。sha系列包括sha-1、sha-256、sha-512等,該系列由美國國家標準與技術協(xié)會發(fā)布,已經(jīng)被許多政府和行業(yè)安全標準所采用。根據(jù)日前谷歌公司公布的數(shù)據(jù),針對sha-1的破解的突破性進展有單gpu破解需要110年的時間,而通過多核和集群技術破解時間將會大為縮短。因此很多安全部門建議將原有的sha-1算法升級到sha-256。sha-256也是比特幣中所選擇的hash算法。
圖1示出了依據(jù)本發(fā)明示例性實施方式的簽名驗簽方法的流程圖。如圖1所示,依據(jù)本發(fā)明示例性實施方式的簽名驗簽方法可以包括:
步驟s101:接收簽名請求,所述簽名請求包含文件的摘要信息和發(fā)送方標識;
步驟s102:生成隨機數(shù);
步驟s103:根據(jù)簽名生成算法基于所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識生成所述文件的簽名;以及
步驟s104:將所述簽名存儲在區(qū)塊鏈中并將所述隨機數(shù)返回給發(fā)送所述簽名請求的發(fā)送方。
由上述可知,依據(jù)本公開內(nèi)容的簽名驗簽方法在接收簽名請求和生成隨機數(shù)之后,根據(jù)簽名生成算法基于隨機數(shù)和簽名請求中所包含的文件的摘要信息和發(fā)送方標識生成該文件的簽名,然后將生成的簽名存儲在區(qū)塊鏈中并將隨機數(shù)返回給發(fā)送簽名請求的發(fā)送方,從而實現(xiàn)了發(fā)送方對文件的簽名。在此過程中并未涉及任何公鑰私鑰以及物理存在的u盾,也就是說,要進行電子簽名的一方無需秘密保存或存放任何需要進行電子簽名所需的信息,即可以在無公鑰私鑰以及u盾的情況下實現(xiàn)電子簽名,從而減少了u盾采購的經(jīng)濟投入。
另外,眾所周知區(qū)塊鏈是將數(shù)據(jù)以區(qū)塊的方式按時間順序相連形成的一種鏈式數(shù)據(jù)結構,并且是以密碼學方式保證數(shù)據(jù)的不可篡改和不可偽造的分布式賬本。區(qū)塊鏈通過智能合約技術實現(xiàn)數(shù)據(jù)存儲和查詢,從而實現(xiàn)復雜業(yè)務邏輯。區(qū)塊鏈用加密和共識算法建立了信任機制,讓抵賴、篡改和欺詐行為的成本巨大,保證了數(shù)據(jù)的不可篡改和不可偽造。因此利用本公開內(nèi)容的技術方案能夠?qū)崿F(xiàn)高安全性。
再如圖1所示,依據(jù)發(fā)明示例性實施方式的簽名驗簽方法還可以包括:
步驟s105:接收簽名驗證請求,所述簽名驗證請求包含預驗證的簽名;
步驟s106:驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中;以及
步驟s107:在所述預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。
由上述可知,依據(jù)本公開內(nèi)容的技術方案,在接收到驗證請求后,驗證該驗證請求中所包含的預驗證的簽名是否存在于區(qū)塊鏈中,在預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。也就是說,如果預驗證的簽名存在于區(qū)塊鏈中,則表明預驗證的簽名是真實的,否則表明預驗證的簽名不是真實的。
在企業(yè)進行工商登記以及日常事務辦理時,往往需要企業(yè)法定代表人簽名。而在網(wǎng)上辦理事務時,常常需要利用法定代表人的u盾來對要提交文件進行電子簽名。例如一個企業(yè)的財務人員需要網(wǎng)上報稅,而該企業(yè)的行政人員需要通過網(wǎng)絡進行工商登記,如果采用現(xiàn)有技術u盾的方式,該企業(yè)的這兩位員工就不可能同時進行操作,這是因為u盾是一個物理存在,其不可能同時存在于兩個地方。然而如果利用本公開內(nèi)容的簽名驗簽方法的技術方案,該企業(yè)的這兩位員工就可以同時連接到區(qū)塊鏈,即可以實現(xiàn)同時對各自需要提交的文件進行電子簽名。因此,利用本公開內(nèi)容的簽名驗簽方法,要進行電子簽名和/或驗證的一方只需要連接到區(qū)塊鏈即可進行電子簽名和/或驗證,從而可以使得處于不同地方的多個人能夠同時進行電子簽名和/或驗證。
本領域技術人員應當理解,本公開內(nèi)容中所記載的各個步驟可以按照不同的順序執(zhí)行,和/或并行執(zhí)行。此外,方法實施方式可以包括附加的步驟和/或省略執(zhí)行示出的步驟。本發(fā)明的范圍在此方面不受限制。
在一個示例性實施方式中,簽名生成算法可以包括對由所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識組成的字符串求哈希。在一個示例性實施方式中,預驗證的簽名是根據(jù)所述簽名生成算法生成的。應當理解,簽名生成算法可以采用本領域已知的任何算法,本發(fā)明在此方面并不進行限制。
在一個示例性實施方式中,將所述簽名存儲在區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名存儲智能合約,所述簽名存儲智能合約用于將所述簽名存儲在所述區(qū)塊鏈的數(shù)據(jù)庫中。對于簽名存儲智能合約,其具體實現(xiàn)為接收簽名,然后將該簽名作為鍵(key)并將當前時間戳作為值(value)來在區(qū)塊鏈的數(shù)據(jù)庫中存儲一條記錄,即以key-value對的形式來存儲。當然,簽名存儲智能合約還可以采用本領域技術人員已知的其他方式來實現(xiàn),本發(fā)明并不限于此。
在一個示例性實施方式中,驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名查詢智能合約,所述簽名查詢智能合約用于確定所述預驗證的簽名是否存在于所述區(qū)塊鏈中。對于簽名查詢智能合約,其具體實現(xiàn)為接收預驗證的簽名,繼而在區(qū)塊鏈的數(shù)據(jù)庫中查找是否存在key與所接收的預驗證的簽名相同的記錄,如果存在則返回真,即驗證成功,這表明該預驗證的簽名是真實的;否則返回假,即驗證失敗,這表明該預驗證的簽名不真實。在另一示例性實施例中,簽名查詢智能合約在區(qū)塊鏈的數(shù)據(jù)庫中查找到存在key與所接收的預驗證的簽名相同的記錄后,返回時間戳,即返回與該key相對應的value;否則返回nil(表示為空)。本領域技術人員應當意識到,簽名查詢智能合約可以采用本領域已知的其他方式來實現(xiàn),本發(fā)明并不限于此。
下面以示例一為例來描述依據(jù)本發(fā)明示例性實施方式的簽名驗簽方法的技術方案。在示例一中,用戶a欲向用戶b發(fā)送文件m,文件m=“區(qū)塊鏈聯(lián)盟”,當然文件m也可以是二進制文件等各種文件類型。hash算法使用的是sha-256,用戶a和用戶b都采用本公開內(nèi)容的簽名驗簽方法的技術方案來進行電子簽名和/或驗證。依據(jù)本簽名驗簽方法,首先接收到用戶a發(fā)送的簽名請求,該簽名請求包含文件m的摘要信息和用戶a的標識id,其中文件m的摘要信息為:h(m)=44ef79a8b9f550e2ed204041af87816d963dd142a231da4c3ac41d7ae9dd71ff,用戶a的標識id為“oxchains”。接著可以由rand()函數(shù)生成隨機數(shù),本示例中生成的隨機數(shù)為1286976。下面根據(jù)簽名生成算法基于h(m)、id和隨機數(shù)生成文件m的簽名sig,也就是說對h(m)、id和隨機數(shù)求哈希,即sig=h(h(m),id,1286976)=9ecbb85d7543898817612cd97910a1d6342d249098e64e1efe10201300e97a38。sig生成后調(diào)用部署在區(qū)塊鏈上的簽名存儲智能合約savesig(sig),該savesig(sig)以sig作為key,以當前時間戳timestamp作為value進行存儲,在本示例中,timestamp=1496283652。因此在區(qū)塊鏈的數(shù)據(jù)庫中儲存了這樣一條記錄:{9ecbb85d7543898817612cd97910a1d6342d249098e64e1efe10201300e97a38:1496283652}。在將sig存儲于區(qū)塊鏈上之后,將隨機數(shù)1286976返回給用戶a,此時表明用戶a已經(jīng)對文件m進行了電子簽名。此時用戶a可以將文件m、id以及隨機數(shù)1286976發(fā)送給用戶b,即將數(shù)據(jù)(“區(qū)塊鏈聯(lián)盟”,“oxchains”,1286976)發(fā)送給用戶b。用戶b根據(jù)簽名生成算法h(h(m),id,r)生成預驗證的簽名sig’,sig’=9ecbb85d7543898817612cd97910a1d6342d249098e64e1efe10201300e97a38,其中r表示隨機數(shù)。依據(jù)本簽名驗簽方法,接收到用戶b發(fā)送的包含sig’的簽名驗證請求后,驗證sig’是否存在于區(qū)塊鏈中,在本示例中通過調(diào)用簽名查詢智能合約querysig(sig’)來進行驗證。querysig(sig’)在區(qū)塊鏈的數(shù)據(jù)庫中查找是否存在key與sig’相同的記錄,在本示例中找到了這樣的key,并將與該key對應的時間戳數(shù)據(jù)1496283652返回給用戶b,即驗證成功,這表明sig’是真實的。
此外,對于隨機數(shù),可以采用真隨機數(shù)方式或者偽隨機數(shù)方式,這取決于實時并發(fā)量,本領域技術人員應當意識到,本發(fā)明在此方面并不進行限制。
圖2示出了依據(jù)本發(fā)明示例性實施例的簽名驗簽裝置的示意圖。如圖2所示,簽名驗簽裝置200包括處理器201和存儲器202,其中存儲器202上存儲有計算機程序指令2020,計算機程序指令2020在由處理器201執(zhí)行時可以實現(xiàn)以下步驟:
接收簽名請求,所述簽名請求包含文件的摘要信息和發(fā)送方標識;
生成隨機數(shù);
根據(jù)簽名生成算法基于所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識生成所述文件的簽名;以及
將所述簽名存儲在區(qū)塊鏈中并將所述隨機數(shù)返回給發(fā)送所述簽名請求的發(fā)送方。
由上述可知,依據(jù)本公開內(nèi)容的簽名驗簽裝置在接收簽名請求和生成隨機數(shù)之后,根據(jù)簽名生成算法基于隨機數(shù)和簽名請求中所包含的文件的摘要信息和發(fā)送方標識生成所述文件的簽名,然后將生成的簽名存儲在區(qū)塊鏈中并將隨機數(shù)返回給發(fā)送簽名請求的發(fā)送方,從而實現(xiàn)了發(fā)送方對文件的簽名。在此過程中并未涉及任何公鑰私鑰以及物理存在的u盾,也就是說,要進行電子簽名的一方無需秘密保存或存放任何需要進行電子簽名所需的信息,即可以在無公鑰私鑰以及u盾的情況下實現(xiàn)電子簽名,從而減少了u盾采購的經(jīng)濟投入。
另外,眾所周知區(qū)塊鏈是將數(shù)據(jù)以區(qū)塊的方式按時間順序相連形成的一種鏈式數(shù)據(jù)結構,并且是以密碼學方式保證數(shù)據(jù)的不可篡改和不可偽造的分布式賬本。區(qū)塊鏈通過智能合約技術實現(xiàn)數(shù)據(jù)存儲和查詢,從而實現(xiàn)復雜業(yè)務邏輯。區(qū)塊鏈用加密和共識算法建立了信任機制,讓抵賴、篡改和欺詐行為的成本巨大,保證了數(shù)據(jù)的不可篡改和不可偽造。因此利用本公開內(nèi)容的技術方案能夠?qū)崿F(xiàn)高安全性。
再如圖2所示,圖2中的計算機程序指令2020在由處理器201執(zhí)行時還可以實現(xiàn)以下步驟:
接收簽名驗證請求,所述簽名驗證請求包含預驗證的簽名;
驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中;以及
在所述預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。
由上述可知,本公開內(nèi)容的簽名驗簽裝置在接收到驗證請求后,驗證該驗證請求中所包含的預驗證的簽名是否存在于區(qū)塊鏈中,在預驗證的簽名存在于所述區(qū)塊鏈中的情況下,向發(fā)送所述簽名驗證請求的發(fā)送方返回驗證成功。也就是說如果預驗證的簽名存在于區(qū)塊鏈中,則表明預驗證的簽名是真實的,否則表明預驗證的簽名不是真實的。
在企業(yè)進行工商登記以及日常事務辦理時,往往需要企業(yè)法定代表人簽名。而在網(wǎng)上辦理事務時,常常需要利用法定代表人的u盾來對要提交文件進行電子簽名。例如一個企業(yè)的財務人員需要網(wǎng)上報稅,而該企業(yè)的行政人員需要通過網(wǎng)絡進行工商登記,如果采用現(xiàn)有技術u盾的方式,該企業(yè)的這兩位員工就不可能同時進行操作,這是因為u盾是一個物理存在,其不可能同時存在于兩個地方。然而如果利用本公開內(nèi)容的簽名驗簽裝置,該企業(yè)的這兩位員工可以同時連接到本簽名驗簽裝置,即連接到區(qū)塊鏈,從而可以實現(xiàn)同時對各自需要提交的文件進行電子簽名,并且還可以使得處于不同地方的多個人能夠同時進行電子簽名和/或驗證。
本領域技術人員應當理解,本公開內(nèi)容中所記載的各個步驟可以按照不同的順序執(zhí)行,和/或并行執(zhí)行。此外,還可以包括附加的步驟和/或省略執(zhí)行示出的步驟。本發(fā)明的范圍在此方面不受限制。
在一個示例性實施方式中,簽名生成算法可以包括對由所述隨機數(shù)、所述摘要信息和所述發(fā)送方標識組成的字符串求哈希。在一個示例性實施方式中,預驗證的簽名是根據(jù)所述簽名生成算法生成的。應當理解,簽名生成算法可以采用本領域已知的任何算法,本發(fā)明在此方面并不進行限制。
在一個示例性實施方式中,將所述簽名存儲在區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名存儲智能合約,所述簽名存儲智能合約用于將所述簽名存儲在所述區(qū)塊鏈的數(shù)據(jù)庫中。對于簽名存儲智能合約,其具體實現(xiàn)為接收簽名,然后將該簽名作為鍵(key)并將當前時間戳作為值(value)來在區(qū)塊鏈中存儲一條記錄,即以key-value對的形式來存儲。當然,簽名存儲智能合約還可以采用本領域技術人員已知的其他方式來實現(xiàn),本發(fā)明并不限于此。
在一個示例性實施方式中,驗證所述預驗證的簽名是否存在于所述區(qū)塊鏈中可以進一步包括調(diào)用部署在所述區(qū)塊鏈上的簽名查詢智能合約,所述簽名查詢智能合約用于確定所述預驗證的簽名是否存在于所述區(qū)塊鏈中。對于簽名查詢智能合約,其具體實現(xiàn)為接收預驗證的簽名,繼而在區(qū)塊鏈的數(shù)據(jù)庫中查找是否存在key與所接收的預驗證的簽名相同的記錄,如果存在則返回真,即驗證成功,這表明該預驗證的簽名是真實的;否則返回假,即驗證失敗,這表明該預驗證的簽名不真實。在另一示例性實施例中,簽名查詢智能合約在區(qū)塊鏈的數(shù)據(jù)庫中查找到存在key與所接收的預驗證的簽名相同的記錄后,返回時間戳,即返回與該key相對應的value;否則返回nil(表示為空)。本領域技術人員應當意識到,簽名查詢智能合約可以采用本領域已知的其他方式來實現(xiàn),本發(fā)明并不限于此。
下面以示例二為例來描述依據(jù)本發(fā)明示例性實施方式的簽名驗簽裝置200的技術方案。
示例二的業(yè)務場景為進行商事登記,即一個企業(yè)要向工商登記機關提交文件file.pdf,該企業(yè)的標識也即納稅人識別號cid為91230103xx1977th85。該企業(yè)通過sha-256算法(函數(shù)h())生成文件file.pdf的摘要信息digest:b8fc1e8d9e43f578aa4ad2ae22840932663bea9119e3b18d2234c810066ab5c4。繼而該企業(yè)向簽名驗證裝置200發(fā)送簽名請求,該簽名請求包含cid和digest,即:{cid:“91230103xx1977th85”;digest:b8fc1e8d9e43f578aa4ad2ae22840932663bea9119e3b18d2234c810066ab5c4}。簽名驗簽裝置200接收到企業(yè)發(fā)送的簽名請求后,調(diào)用隨機數(shù)生成算法rand(),產(chǎn)生隨機數(shù)r=2397985。然后根據(jù)簽名生成算法基于隨機數(shù)、摘要信息和cid生成文件file.pdf的簽名。在本例中調(diào)用sha-256算法(函數(shù)h()),即向函數(shù)h()輸入cid、digest和r拼接后的字符串參數(shù):91230103xx1977th85_b8fc1e8d9e43f578aa4ad2ae22840932663bea9119e3b18d2234c810066ab5c4_2397985,求解得到簽名sig=0aab2ecde1f5ab50399f058e49dd94c3eda0de92aa1023eb4a3878cdd079215e。簽名sig生成后,調(diào)用部署在區(qū)塊鏈上的簽名存儲智能合約savesig(sig),該savesig(sig)以sig作為key,以當前時間戳timestamp作為value來存儲,在本例中timestamp=1496485662,因此在區(qū)塊鏈的數(shù)據(jù)庫中存儲了這樣的一條記錄:{0aab2ecde1f5ab50399f058e49dd94c3eda0de92aa1023eb4a3878cdd079215e:1496485662}。在將簽名sig存儲在區(qū)塊鏈上之后,簽名驗簽裝置200將隨機數(shù)r(2397985)返回給該企業(yè)。該企業(yè)收到隨機數(shù)r(2397985)之后,將文件file.pdf,cid=91230103xx1977th85以及r=2397985上傳給工商登記機關。工商登記機關接收到file.pdf、cid和r之后,通過調(diào)用sha-256算法,即函數(shù)h(file.pdf)生成該文件file.pdf的摘要信息:b8fc1e8d9e43f578aa4ad2ae22840932663bea9119e3b18d2234c810066ab5c4。然后將cid、該摘要信息和r拼接成字符串:91230103xx1977th85_b8fc1e8d9e43f578aa4ad2ae22840932663bea9119e3b18d2234c810066ab5c4_2397985,再調(diào)用sha-256算法,即函數(shù)h()生成預驗證的簽名sig’=0aab2ecde1f5ab50399f058e49dd94c3eda0de92aa1023eb4a3878cdd079215e。繼而工商登記機關向簽名驗簽裝置200發(fā)送簽名驗證請求,該簽名驗證請求中包含預驗證的簽名sig’。簽名驗簽裝置200接收到簽名驗證請求后,調(diào)用部署在區(qū)塊鏈上的簽名查詢智能合約query(sig’)。query(sig’)如果返回timestamp,則表明預驗證的簽名存在于區(qū)塊鏈中;如果返回nil,則表明預驗證的簽名不在區(qū)塊鏈中。在本例中,返回了1496485662(timestamp),即驗證成功,這表明預驗證的簽名存在于區(qū)塊鏈中,該預驗證的簽名sig’是真實的。工商登記機關得到該sig’是真實的之后,可以將該企業(yè)提交的文件file.pdf存儲起來,并可以將處理結果返回給該企業(yè),例如返回提交成功等信息。
圖3示出了依據(jù)本公開內(nèi)容一個示例所涉及的企業(yè)、工商登記機關和簽名驗簽裝置200之間的交互示意圖。從圖3可以看出,企業(yè)首先生成其預提交文件file.pdf的摘要信息h(file.pdf),然后向簽名驗簽裝置200發(fā)送包含h(file.pdf)和cid(企業(yè)的標識)的簽名請求。簽名驗簽裝置200接收到簽名請求后,生成隨機數(shù)r,再生成簽名sig=h(h(file.pdf),cid,r),繼而進行存證sig,也即將sig存放在區(qū)塊鏈中,并且將隨機數(shù)r返回給企業(yè)。企業(yè)接收到隨機數(shù)之后,將文件file.pdf、cid和隨機數(shù)r發(fā)送給工商登記機關。工商登記機關要驗證該企業(yè)以及文件file.pdf的真實性,首先根據(jù)企業(yè)發(fā)送過來的信息,計算預驗證的簽名sig’=h(h(file.pdf),cid,r),繼而向簽名驗簽裝置200發(fā)送包含sig’的簽名驗證請求以驗證sig’是否存在于區(qū)塊鏈中。簽名驗簽裝置200對sig’進行查證,并將時間戳或者nil返回給工商登記機關以表明sig’是否存在于區(qū)塊鏈中。工商登記機關根據(jù)對sig’的驗證結果,可以將提交成功/失敗的信息返回給企業(yè)。從而企業(yè)實現(xiàn)了向工商登記機關進行商事登記事務的辦理。
應當理解,進行商事登記僅僅是本發(fā)明的一個應用場景,本發(fā)明可以應用于各種需要進行電子簽名的應用場景。
在本發(fā)明的一個方面,提供了一種計算機可讀存儲介質(zhì),在該計算機可讀存儲介質(zhì)上存儲有計算機程序指令,其中所述計算機程序指令在由處理器執(zhí)行時實現(xiàn)上文所述的簽名驗簽方法。對于簽名驗簽方法,在上文已經(jīng)進行了詳細描述,在此不再贅述。在一些實施方式中,計算機可讀存儲介質(zhì)是數(shù)字處理設備的有形組件。在另一些實施方式中,計算機可讀存儲介質(zhì)可選地是可從數(shù)字處理設備移除的。在一些實施方式中,舉非限制性示例而言,計算機可讀存儲介質(zhì)可以包括u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、閃速存儲器、可編程存儲器(prom)、可擦除可編程存儲器(eprom)、固態(tài)存儲器、磁碟、光盤、云計算系統(tǒng)或服務等。
在本文所提供的說明書中,說明了大量具體細節(jié)。然而,應當理解,本公開內(nèi)容的實施方式可以在沒有這些具體細節(jié)的情況下實踐。在一些實施方式中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
雖然本文已經(jīng)示出和描述了本發(fā)明的優(yōu)選實施方式,但對于本領域技術人員顯而易見的是,這樣的實施方式只是以示例的方式提供的。本領域技術人員現(xiàn)將會在不偏離本發(fā)明的情況下想到許多更改、改變和替代。應當理解,在實踐本發(fā)明的過程中可以采用對本文所描述的本發(fā)明實施方式的各種替代方案。以下權利要求旨在限定本發(fā)明的范圍,并因此覆蓋這些權利要求范圍內(nèi)的方法和結構及其等同項。