本發(fā)明屬于電子安全領(lǐng)域,特別是系統(tǒng)和相關(guān)的操作方法,涉及一種數(shù)字化記錄的簽名數(shù)據(jù)生成方法和驗(yàn)證方法,能夠驗(yàn)證電子文檔的原始性、真實(shí)性。
背景技術(shù):
:目前,隨著互聯(lián)網(wǎng)以及電子商務(wù)的快速發(fā)展,電子化信息已成為一種重要的信息源,其迅速的發(fā)展給電子化信息服務(wù)提出了嚴(yán)峻的挑戰(zhàn),如何保證電子化信息的安全也成為了一個(gè)重要的課題。目前針對(duì)電子化信息安全的技術(shù)主要是通過(guò)完整碼進(jìn)行保護(hù),然而目前核心服務(wù)在生成完整碼的時(shí)候,需要使用一個(gè)平衡的哈希樹結(jié)構(gòu),在新的日歷值生成后一段時(shí)間,也即其右側(cè)的日歷值達(dá)到一定數(shù)量后,才能進(jìn)行日歷樹的聚合,生成完整碼,因此只能在一個(gè)較長(zhǎng)的時(shí)間周期內(nèi)發(fā)布完整碼數(shù)據(jù),無(wú)法實(shí)現(xiàn)實(shí)時(shí)對(duì)其進(jìn)行發(fā)布。針對(duì)此問題本發(fā)明設(shè)計(jì)了一種新的電子數(shù)據(jù)簽名驗(yàn)證服務(wù)的驗(yàn)證方法,它可以在同一個(gè)簽名周期內(nèi),實(shí)現(xiàn)產(chǎn)生完整碼數(shù)據(jù)并通過(guò)多渠道進(jìn)行發(fā)布。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的在于提供一種新的一種數(shù)字記錄的簽名數(shù)據(jù)生成方法和驗(yàn)證方法。本發(fā)明的技術(shù)方案為:一種數(shù)字記錄的簽名數(shù)據(jù)生成方法,其步驟為:1)將待簽名數(shù)字記錄作為一根值與上一簽名周期生成的完整碼進(jìn)行兩兩聚合,產(chǎn)生一哈希值,將該哈希值作為當(dāng)前簽名周期的日歷樹的葉節(jié)點(diǎn);2)將當(dāng)前簽名周期的日歷樹的所有葉節(jié)點(diǎn)進(jìn)行指定層級(jí)的兩兩聚合,生成一根值,將該根植作為當(dāng)前簽名周期的完整碼;3)將產(chǎn)生該完整碼的路徑上的所有節(jié)點(diǎn)及其對(duì)應(yīng)的聚合順序組合在一起,作為該待簽名數(shù)字記錄的簽名數(shù)據(jù)。進(jìn)一步的,步驟2)中,如果在聚合時(shí),日歷樹的葉節(jié)點(diǎn)數(shù)不能滿足指定層級(jí)聚合要求的節(jié)點(diǎn)數(shù),則使用占位節(jié)點(diǎn)對(duì)缺失的節(jié)點(diǎn)進(jìn)行填充。進(jìn)一步的,所述占位節(jié)點(diǎn)為常量、有規(guī)則的變量或能夠與隨機(jī)產(chǎn)生的哈希值區(qū)分開的變量。進(jìn)一步的,如果日歷樹的其中一層的節(jié)點(diǎn)樹為偶數(shù),則不需要填充占位節(jié)點(diǎn),如果該層的節(jié)點(diǎn)樹為奇數(shù),則需要在該層的最右側(cè)填充一占位節(jié)點(diǎn)。進(jìn)一步的,所述待簽名數(shù)字記錄為數(shù)字形式的文件或記錄,或者是數(shù)字文件的特征值或散列值,或者是記錄的特征值或散列值,或者是數(shù)字形式或記錄的特征值的哈希聚合值,或者是數(shù)字形式或記錄的散列值的哈希聚合值。進(jìn)一步的,根據(jù)簽名數(shù)據(jù)的聚合路徑確定每一聚合層級(jí)對(duì)應(yīng)的聚合順序值,然后按照聚合層級(jí)從高到低的順序?qū)酆享樞蛑颠M(jìn)行排列,得到一個(gè)二進(jìn)制的數(shù)值,記為N;根據(jù)該二進(jìn)制N計(jì)算得到該簽名數(shù)據(jù)的簽名時(shí)間;根據(jù)簽名時(shí)間確定該簽名數(shù)據(jù)對(duì)應(yīng)的完整碼發(fā)布周期,在設(shè)定發(fā)布渠道上進(jìn)行發(fā)布。進(jìn)一步的,節(jié)點(diǎn)從右側(cè)與另一節(jié)點(diǎn)進(jìn)行聚合,則聚合順序值為0;節(jié)點(diǎn)從左側(cè)與另一節(jié)點(diǎn)進(jìn)行聚合,則聚合順序值為1。進(jìn)一步的,將發(fā)布的各完整碼按照發(fā)布時(shí)間的順序連接在一起,形成一線性鏈?zhǔn)浇Y(jié)構(gòu),即信任錨鏈;其中,信任錨鏈上的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一完整碼。一種數(shù)字記錄的簽名數(shù)據(jù)驗(yàn)證方法,其步驟為:1)計(jì)算數(shù)字記錄的哈希值,記為A;該數(shù)字記錄的簽名數(shù)據(jù)的簽名周期為第N周期;2)將第N-1簽名周期的完整碼與該哈希值A(chǔ)進(jìn)行聚合操作,獲得哈希值B;3)從該數(shù)字記錄的簽名數(shù)據(jù)中讀取第N簽名周期對(duì)應(yīng)的日歷值,如果該日歷值與該哈希值B一致,則進(jìn)行步驟4);否則驗(yàn)證未通過(guò);4)將該數(shù)字記錄作為根植,根據(jù)該數(shù)字記錄的簽名數(shù)據(jù)中的節(jié)點(diǎn)及其對(duì)應(yīng)的聚合順序重新生成該數(shù)字記錄的完整碼D;5)從該數(shù)字記錄的簽名數(shù)據(jù)中讀取完整碼,與該完整碼D進(jìn)行比較,根據(jù)比較結(jié)果確定驗(yàn)證是否通過(guò)。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:本發(fā)明可以即時(shí)產(chǎn)生完整碼數(shù)據(jù),滿足對(duì)完整碼數(shù)據(jù)發(fā)布的高頻率的要求,并且允許從多渠道實(shí)時(shí)發(fā)布完整碼數(shù)據(jù)。這樣,采用實(shí)時(shí)發(fā)布完整碼數(shù)據(jù)的驗(yàn)證方法,不僅可以同時(shí)滿足脫離依賴PKI技術(shù)對(duì)根值的保護(hù),同時(shí)也可以不再需要對(duì)電子數(shù)據(jù)簽名進(jìn)行擴(kuò)展,特別是在大數(shù)據(jù)的環(huán)境下,這是非常有意義的。附圖說(shuō)明圖1為本發(fā)明的簽名數(shù)據(jù)生成方法示意圖;圖2為本發(fā)明信任錨鏈?zhǔn)疽鈭D;圖3為本發(fā)明簽名數(shù)據(jù)驗(yàn)證方法流程圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明的實(shí)現(xiàn)方法進(jìn)行進(jìn)一步詳細(xì)描述:一.簽名過(guò)程如圖1所示1.根值可以為任何數(shù)字形式的文件或記錄、或者是數(shù)字形式的文件和記錄的某種特征值或散列值、或者是數(shù)字形式或記錄的特征值或散列值的哈希聚合值,圖中底層的左斜紋的節(jié)點(diǎn)表示根值。2.根值(圖1中底層左斜紋節(jié)點(diǎn))與前一個(gè)簽名周期生成的完整碼(圖1中底層右斜紋節(jié)點(diǎn))進(jìn)行兩兩聚合,產(chǎn)生一個(gè)哈希值,將該哈希值作為該簽名周期的日歷樹的葉節(jié)點(diǎn)(圖1中交叉紋節(jié)點(diǎn)),該葉節(jié)點(diǎn)對(duì)應(yīng)的值稱為日歷值。這樣,當(dāng)前簽名周期的聚合也會(huì)鎖定前一個(gè)簽名周期的完整碼。3.每一個(gè)簽名周期,日歷樹的所有葉節(jié)點(diǎn)都進(jìn)行指定層級(jí)(比如,32層)的兩兩聚合,生成一個(gè)根值,作為當(dāng)前簽名周期的完整碼(頂層黑色實(shí)心節(jié)點(diǎn))。4.如果在聚合時(shí),日歷樹葉節(jié)點(diǎn)數(shù)如果不能滿足指定層級(jí)聚合要求的節(jié)點(diǎn)數(shù),那么,日歷樹處于不平衡狀態(tài),在進(jìn)行兩兩聚合時(shí),缺失的節(jié)點(diǎn)可以使用占位節(jié)點(diǎn)(虛線圓圈)進(jìn)行填充。占位節(jié)點(diǎn)可以是常量,有規(guī)則的變量或任何可以與隨機(jī)產(chǎn)生的哈希值區(qū)分開的變量。占位節(jié)點(diǎn)不需要填充滿所有日歷樹節(jié)點(diǎn),只需要填充完成指定層級(jí)聚合所必要的占位節(jié)點(diǎn)即可,占位節(jié)點(diǎn)右側(cè)缺失的節(jié)點(diǎn)可以忽略(因?yàn)橛覀?cè)的節(jié)點(diǎn)是未來(lái)要生成的節(jié)點(diǎn),如果在當(dāng)前時(shí)間聚合時(shí),他們的缺失不影響聚合計(jì)算,就可以忽略)。圖1中,哈希樹的最底層,亦即第一層,有5個(gè)節(jié)點(diǎn),表示這是第5個(gè)簽名周期的聚合過(guò)程。在進(jìn)行第一次聚合時(shí),第一層的第5個(gè)節(jié)點(diǎn)需要與右側(cè)的節(jié)點(diǎn)進(jìn)行聚合操作,但是此時(shí),此節(jié)點(diǎn)還沒有生成,那么就需要使用一個(gè)占位節(jié)點(diǎn)與第5個(gè)節(jié)點(diǎn)進(jìn)行聚合操作。完成第一層的聚合操作后,生成了3個(gè)節(jié)點(diǎn),成為哈希樹的第二層。按照與第一層聚合相同的操作,第2層的第一和第二個(gè)節(jié)點(diǎn)進(jìn)行聚合操作,第三個(gè)節(jié)點(diǎn)需要與一個(gè)占位符節(jié)點(diǎn)進(jìn)行聚合操作。第2層產(chǎn)生的兩個(gè)節(jié)點(diǎn),成為哈希樹的第3層。這兩個(gè)節(jié)點(diǎn)聚合完成后,產(chǎn)生一個(gè)節(jié)點(diǎn),成為哈希樹的第4層。在第4層進(jìn)行聚合操作時(shí),因?yàn)橹挥幸粋€(gè)節(jié)點(diǎn),所以需要在其右側(cè)補(bǔ)充一個(gè)占位節(jié)點(diǎn),完成聚合操作。同理,從第5層直至第32層,每一層都是一個(gè)節(jié)點(diǎn),在進(jìn)行聚合操作前,都需要填充一個(gè)占位節(jié)點(diǎn)后,在進(jìn)行聚合操作。由上面的聚合過(guò)程可以看出,不需要填滿完成32層聚合全部的節(jié)點(diǎn),僅僅需要填充占位節(jié)點(diǎn),滿足完成每一層聚合所需最小的節(jié)點(diǎn)數(shù)。也就是說(shuō),如果層的節(jié)點(diǎn)樹為偶數(shù),那么不需要填充占位節(jié)點(diǎn),如果層的節(jié)點(diǎn)樹為奇數(shù),則需要在層的最右側(cè)填充一個(gè)占位節(jié)點(diǎn)。5.因此,在每一個(gè)簽名周期,都會(huì)生成一個(gè)完整碼,對(duì)當(dāng)前簽名周期的日歷值進(jìn)行保護(hù),不再需要PKI技術(shù)等其他安全技術(shù)對(duì)日歷值進(jìn)行保護(hù),從而擺脫了在完整碼生成前,對(duì)PKI簽名技術(shù)的依賴。6.最終,把從左斜紋節(jié)點(diǎn)到產(chǎn)生完整碼的路徑上的所有節(jié)點(diǎn)和及其對(duì)應(yīng)的聚合順序(從左或從右結(jié)合)組合在一起,作為該電子文件的簽名數(shù)據(jù)。二.簽名時(shí)間我們可以通過(guò)日歷哈希樹節(jié)點(diǎn)的聚合路徑,計(jì)算某一個(gè)日歷節(jié)點(diǎn)對(duì)應(yīng)的時(shí)間周期。以交叉紋的節(jié)點(diǎn)為例。日歷哈希樹的節(jié)點(diǎn)的聚合路徑如下所示:聚合順序聚合層級(jí)0C10C21C3……0C300C310C321.C1表示第1層的聚合。聚合順序0,表示交叉紋的節(jié)點(diǎn)從右側(cè)與另一個(gè)節(jié)點(diǎn)進(jìn)行聚合,完成聚合操作。2.C2表示第2層的聚合。聚合順序0,表示節(jié)點(diǎn)從右側(cè)與另一個(gè)節(jié)點(diǎn)進(jìn)行聚合,完成聚合操作。3.C3表示第3層的聚合。聚合順序1,表示節(jié)點(diǎn)從左側(cè)與另一個(gè)節(jié)點(diǎn)進(jìn)行聚合,完成聚合操作4.同理,完成第4層到第32層的聚合路徑。5.把聚合層級(jí)C1,C2,…,C31,C32分別對(duì)應(yīng)的聚合順序的值,按照聚合層級(jí)從高到低的順序進(jìn)行排列,形成一個(gè)二進(jìn)制的數(shù)值,記為N,如下所示:那么,將上述的二進(jìn)制的值轉(zhuǎn)換為十進(jìn)制表示為:N=0x20+0x21+1x22+…+0x229+0x230+1x231=4,于是可以得出時(shí)間N,如果把該日歷值對(duì)應(yīng)的時(shí)間周期記為T,那么,T=N+1=5(因?yàn)镹計(jì)算出的是前一秒的時(shí)間,+1得到當(dāng)前時(shí)間);如果時(shí)間為1秒,那么,交叉紋節(jié)點(diǎn)就為第5秒對(duì)應(yīng)的日歷值。三.完整碼發(fā)布完整碼可以通過(guò)各種渠道進(jìn)行發(fā)布,比如,1.實(shí)時(shí)發(fā)布到微博、微信、朋友圈、短信、電子郵件等任何無(wú)法悄然召回的通信方式2.門戶,社交等網(wǎng)站3.平面媒體,如報(bào)紙如果完整碼產(chǎn)生的周期比較短,如1秒,那么發(fā)布在紙質(zhì)媒體上時(shí),可以選擇一段時(shí)間進(jìn)行發(fā)布,如每周,每月等。完整碼公開發(fā)布后,發(fā)布的完整碼可以看做是一個(gè)信任錨,信任錨的所有節(jié)點(diǎn)按照時(shí)間的順序連接在一起,形成一個(gè)向前的線性鏈?zhǔn)浇Y(jié)構(gòu),稱為信任錨鏈,如圖2。信任錨鏈上的每一個(gè)節(jié)點(diǎn),都對(duì)應(yīng)一個(gè)完整碼,它也鎖定了其對(duì)應(yīng)簽名周期的所有簽名數(shù)據(jù),同時(shí),信任錨鏈上的每一個(gè)節(jié)點(diǎn)也都鎖定了信任錨連上之前所有的節(jié)點(diǎn),因?yàn)樾湃五^鏈上的每一個(gè)節(jié)點(diǎn)的完整碼,都參與了下一個(gè)完整碼的聚合過(guò)程。信任錨鏈可以對(duì)任何已經(jīng)簽名的數(shù)據(jù)進(jìn)行驗(yàn)證,而其鏈?zhǔn)浇Y(jié)構(gòu)的特性,保證了任何人難以對(duì)其進(jìn)行篡改。四.驗(yàn)證過(guò)程如圖3所示為本發(fā)明驗(yàn)證方法流程圖,簡(jiǎn)要步驟如下:簽名數(shù)據(jù)的驗(yàn)證過(guò)程,主要描述了數(shù)據(jù)的驗(yàn)證處理流程。驗(yàn)證過(guò)程不需要PKI的簽名,也不需要獲取發(fā)布文件,擴(kuò)展等操作,可以離線,獨(dú)立驗(yàn)證。下面以電子文件的驗(yàn)證過(guò)程為例來(lái)進(jìn)行說(shuō)明。該過(guò)程包含以下步驟:1.讀取電子文件的內(nèi)容,計(jì)算該電子文件的哈希值,記為A。2.從電子文件對(duì)應(yīng)的簽名數(shù)據(jù)中讀取上一個(gè)簽名周期的完整碼,與步驟1中獲得的哈希值A(chǔ)進(jìn)行聚合操作,獲得哈希值B。3.從電子文件對(duì)應(yīng)的簽名數(shù)據(jù)中讀取該待驗(yàn)證數(shù)據(jù)對(duì)應(yīng)的簽名周期所對(duì)應(yīng)的日歷值(即電子文件簽名時(shí)的哈希值),然后與步驟2中的哈希值B進(jìn)行比較,如果一致,則進(jìn)行步驟4,否則,說(shuō)明與電子文件的內(nèi)容發(fā)生了改變。4.從電子文件對(duì)應(yīng)的簽名數(shù)據(jù)中,讀取在簽名過(guò)程中,與該數(shù)字記錄進(jìn)行第1次聚合操作的節(jié)點(diǎn)N1和聚合順序值O1,然后使用步驟3中產(chǎn)生的哈希值B與節(jié)點(diǎn)N1所對(duì)應(yīng)的哈希值按照聚合順序O1進(jìn)行聚合操作,產(chǎn)生哈希值C。5.依次類推,最終經(jīng)過(guò)32次聚合操作計(jì)算出哈希值D。6.從電子文件對(duì)應(yīng)的簽名數(shù)據(jù)中讀取完整碼的哈希值,與步驟5中計(jì)算得到的哈希值D進(jìn)行比較,判斷是否相同,從而判斷數(shù)字記錄是否與簽名有矛盾。7.根據(jù)上述二、簽名時(shí)間一節(jié)所述,找到簽名的具體時(shí)間單元,按此時(shí)間單元查找上述三、發(fā)布渠道獲得的完整碼鏈,找到對(duì)應(yīng)該時(shí)間單元的具體完整碼。將該完整碼與步驟3驗(yàn)證過(guò)一致的完整碼進(jìn)行比對(duì),從而判斷數(shù)據(jù)記錄和簽名是否都完整有效。當(dāng)前第1頁(yè)1 2 3