本發(fā)明涉及數(shù)據(jù)安全技術(shù),尤其是涉及一種基于區(qū)塊鏈的無密鑰簽名基礎(chǔ)設(shè)施構(gòu)建方法。
背景技術(shù):
近年來,以系統(tǒng)破壞、信息竊取以及電子欺詐為主的內(nèi)部攻擊,由于其隱蔽性強(qiáng)、破壞性大的特性,對個(gè)人和企業(yè)乃至國家安全造成了嚴(yán)重威脅。傳統(tǒng)的解決方案,例如持續(xù)監(jiān)控、數(shù)據(jù)加密等措施,部署和維護(hù)費(fèi)用高昂,且隨著移動(dòng)設(shè)備以及可插拔存儲設(shè)施的增多,依靠傳統(tǒng)的安全方案解決內(nèi)部攻擊的難度與日俱增。
為解決上述問題,最根本有效的方式是確保數(shù)字資產(chǎn)不合法使用的記錄不可更改。ksi(keylesssignatureinfrastructure,無密鑰簽名基礎(chǔ)設(shè)施)正是這樣一種基礎(chǔ)設(shè)施,它可以檢測數(shù)字資產(chǎn)的更改狀態(tài)并將這些信息提交進(jìn)一步的審計(jì)和調(diào)查:不僅針對數(shù)字資產(chǎn)狀態(tài)提供實(shí)時(shí)的認(rèn)證,防止數(shù)據(jù)的丟失,也為合法用戶進(jìn)行惡意活動(dòng)的檢測提供存證。
與傳統(tǒng)的簽名方法不同(例如pki使用的是非對稱加密方式),ksi只采用了哈希加密的方式,因此系統(tǒng)并不受密鑰泄露等問題的影響,從而保證數(shù)字簽名的長期有效性。相較之下,即使傳統(tǒng)的pki簽名增加了安全時(shí)間戳這一保障措施,仍然無法解決密鑰泄露問題。當(dāng)然,“無密鑰”并不意味著在簽名產(chǎn)生過程中不使用任何的密鑰:在ksi中,簽名者的身份認(rèn)證與完整性證據(jù)保護(hù)是相互獨(dú)立的兩個(gè)過程,對于身份認(rèn)證,密鑰仍然不可或缺,即簽名者身份認(rèn)證是基于非對稱加密完成;而數(shù)據(jù)的完整性保護(hù)則使用的是無密鑰簽名。
無密鑰簽名基礎(chǔ)設(shè)施的工作流程可概括為三個(gè)步驟:哈希、聚合和發(fā)布
1)哈希:客戶端將文件進(jìn)行哈希,產(chǎn)生的哈希值在后續(xù)的過程中代表該文件本身;
2)聚合:每個(gè)周期內(nèi)形成的哈希樹代表該階段簽名的所有文件。當(dāng)前系統(tǒng)中每個(gè)周期默認(rèn)為1秒;
3)發(fā)布:每個(gè)周期內(nèi)形成的哈希樹的根發(fā)布到分布式的calendarhash數(shù)據(jù)庫中,ksi的用戶均可保存一個(gè)副本;hashcalendar中的哈希值進(jìn)一步形成哈希樹,其根哈希值(calendarroothash,crh),則被發(fā)布到報(bào)紙、微博等媒體中,作為信任錨點(diǎn)。當(dāng)前,crh的發(fā)布周期為一個(gè)月。
ksi采用哈希樹聚合技術(shù),系統(tǒng)中提交的任何一個(gè)數(shù)據(jù)都可以“追根溯源”。如圖1所示,用戶發(fā)送一個(gè)文件的哈希值,假定為x1,接收到的所有的請求均被聚合為一個(gè)哈希樹,返回給用戶的簽名中則包含了從葉子節(jié)點(diǎn)到根節(jié)點(diǎn)的完整路徑。為了證明x3的完整性,需要利用x4、x12和x58重新生成根哈希值,以證明x3參與了根節(jié)點(diǎn)的生成。
對于每一個(gè)用戶提交的數(shù)字資產(chǎn)的哈希值,都存在唯一與之對應(yīng)的“哈希鏈”:包含了由數(shù)字資產(chǎn)哈希值節(jié)點(diǎn)構(gòu)建出calendarhash數(shù)據(jù)庫中的根節(jié)點(diǎn)所需的一系列哈希值及其計(jì)算路徑。ksi返回給用戶的簽名包含了哈希鏈、簽名時(shí)間的加密證明、數(shù)字資產(chǎn)哈希值提交者身份。無論何時(shí)何地,通過訪問calendarhash數(shù)據(jù)庫,利用簽名就可以驗(yàn)證數(shù)據(jù)的完整性。
ksi基礎(chǔ)設(shè)施主要包含四個(gè)部分:核心層(corelayer),聚合層(aggregator),驗(yàn)證服務(wù)器(verfier)以及網(wǎng)關(guān)(gateway)。各部分的功能如下:
1)核心層:選擇出每秒形成的哈希樹的根,管理calendarhash數(shù)據(jù)庫;
2)聚合層:聚合哈希值和分發(fā)簽名;
3)驗(yàn)證服務(wù)器:提供了訪問calendarhash數(shù)據(jù)庫狀態(tài)的公共接口。
4)網(wǎng)關(guān):網(wǎng)關(guān)是ksi基礎(chǔ)設(shè)施中面向客戶端的組件,負(fù)責(zé)收集和處理客戶端發(fā)送的請求,并將聚合后的請求發(fā)送到上層集群。
然而,當(dāng)前ksi存在的三個(gè)方面的缺陷:
(1)ksi中核心層選擇出每秒形成的哈希樹的根,并將其發(fā)布在calendarhash數(shù)據(jù)庫中,該數(shù)據(jù)庫中的數(shù)據(jù)將作為客戶端驗(yàn)證簽名的權(quán)威賬本,但目前缺乏中心化calendarhash數(shù)據(jù)庫的可信機(jī)制。
(2)crh的發(fā)布缺乏高效性,發(fā)布周期為每個(gè)月一次,crh只能確保其發(fā)布時(shí)間戳之前的數(shù)據(jù)的有效性,不能滿足細(xì)粒度的完整性證明需求。
(3)ksi中crh的發(fā)布渠道為報(bào)紙、論壇以及微博平臺,其中對于紙質(zhì)的媒體需要進(jìn)行人工識別和處理;而發(fā)布在論壇以及微博等平臺的數(shù)據(jù)則很容易稱為攻擊者的攻擊對象。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提出一種基于區(qū)塊鏈的ksi核心層及發(fā)布層構(gòu)建方法,在不改變當(dāng)前無密鑰簽名基礎(chǔ)設(shè)施架構(gòu)的情形下,利用區(qū)塊鏈完成ksi核心層節(jié)點(diǎn)的身份認(rèn)證,保障了calendarhash賬本的公開透明性,并解決了當(dāng)前crh發(fā)布周期過長,發(fā)布媒體缺乏可信性、不易于識別和處理的問題。
為了實(shí)現(xiàn)本發(fā)明的目的,特提出如下技術(shù)方案:
一種基于區(qū)塊鏈的無密鑰簽名基礎(chǔ)設(shè)施構(gòu)建方法,所述構(gòu)建方法包括步驟:
1)客戶端提交數(shù)據(jù)或者文件的哈希值至網(wǎng)關(guān)層;
2)網(wǎng)關(guān)層收集和處理客戶端的提交的哈希值,并聚合成merkletree;
3)網(wǎng)關(guān)層將形成的merkletree的根哈希值發(fā)送至聚合層;
4)聚合層服務(wù)器處理網(wǎng)關(guān)層發(fā)送的根哈希值,并將其添加到merkletree;
5)聚合層服務(wù)器將形成的根哈希值發(fā)送至核心層;
6)核心層服務(wù)器通過身份認(rèn)證后接入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,接收聚合層提交的哈希值并聚合成merkletree;
7)核心層將每秒時(shí)間內(nèi)形成的merkletree的根哈希值,即calendarhash,通過op_return<calendarhash>格式嵌入交易腳本op_rerurn中,并將交易發(fā)布在區(qū)塊鏈網(wǎng)絡(luò)中;
8)礦工收集區(qū)塊鏈網(wǎng)絡(luò)中的交易信息,構(gòu)建merkletree,將crh寫入到區(qū)塊頭中;
9)客戶端將接收到各層服務(wù)器逐層返回的簽名,該簽名中包含了由用戶提交的數(shù)字資產(chǎn)哈希值節(jié)點(diǎn)構(gòu)建出crh所需的一系列哈希值及其計(jì)算路徑,用戶通過訪問已經(jīng)下載到本地的區(qū)塊數(shù)據(jù),利用簽名驗(yàn)證數(shù)據(jù)的完整性。
在所述步驟7,核心層節(jié)點(diǎn)通過身份認(rèn)證,將匯聚層形成的根哈希值嵌入在op_return交易腳本中,并在區(qū)塊鏈網(wǎng)絡(luò)中通過廣播進(jìn)行交易發(fā)布,并最終打包進(jìn)入?yún)^(qū)塊,形成了ksicalendarhash賬本。
在所述步驟8,礦工提取交易中op_return中的內(nèi)容calendarhash,用于merkletree的構(gòu)建,最終形成的根哈希值crh。
在所述步驟8,礦工通過共識機(jī)制競爭或分配區(qū)塊的記賬權(quán),并調(diào)節(jié)區(qū)塊的生產(chǎn)時(shí)間,即crh的發(fā)布周期,形成基于區(qū)塊鏈的ksi發(fā)布層架構(gòu)。
本發(fā)明的技術(shù)效果:
1、核心層節(jié)點(diǎn)通過身份認(rèn)證,將匯聚層形成的根哈希值嵌入在op_return交易腳本中,并在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播,并最終打包進(jìn)入?yún)^(qū)塊,形成了一種公開、透明、可信的ksicalendarhash賬本,相較于傳統(tǒng)的無密鑰簽名基礎(chǔ)設(shè)施,基于區(qū)塊鏈的calendarhash賬本解決了核心層節(jié)點(diǎn)身份的可信性,以及賬本的公開透明性;
2、通過共識機(jī)制,發(fā)布節(jié)點(diǎn)(礦工)競爭或分配區(qū)塊的記賬權(quán),同時(shí)通過共識機(jī)制調(diào)節(jié)區(qū)塊的生產(chǎn)時(shí)間,也即crh的發(fā)布周期,解決了傳統(tǒng)ksi中crh發(fā)布周期過長的問題;
3、crh只記錄在區(qū)塊頭中,用戶下載輕量級區(qū)塊數(shù)據(jù)(即只下載區(qū)塊頭),即可實(shí)現(xiàn)crh的備份,解決了傳統(tǒng)ksi中發(fā)布媒體缺乏可信性、不易于識別和處理的問題。
4、相較于單一基于區(qū)塊鏈的數(shù)據(jù)完整性證明系統(tǒng),將ksi和區(qū)塊鏈結(jié)合使得系統(tǒng)吞吐量及擴(kuò)展性更強(qiáng),更適用于大規(guī)模工業(yè)應(yīng)用,且算力、存儲及網(wǎng)絡(luò)負(fù)載需求極小。
附圖說明
圖1哈希樹聚合過程示例;
圖2是基于區(qū)塊鏈的無密鑰簽名基礎(chǔ)設(shè)施中哈希值聚合及發(fā)布過程;
圖3是基于區(qū)塊鏈的無密鑰簽名基礎(chǔ)設(shè)施的工作流程。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖和具體實(shí)施例,對本發(fā)明進(jìn)一步詳細(xì)說明。
n區(qū)塊鏈
區(qū)塊鏈?zhǔn)且环N去中心化的記錄技術(shù),參與系統(tǒng)中的任意多個(gè)節(jié)點(diǎn),把一段時(shí)間系統(tǒng)內(nèi)全部信息交流的數(shù)據(jù),通過密碼學(xué)的方法記錄到一個(gè)區(qū)塊,同時(shí)生成該區(qū)塊的指紋用于鏈接下個(gè)區(qū)塊和校驗(yàn)。系統(tǒng)所有參與節(jié)點(diǎn)來共同認(rèn)定記錄和校驗(yàn),共同認(rèn)定記錄是否為真,同時(shí)每個(gè)節(jié)點(diǎn)都能復(fù)制獲得一份完整記錄的拷貝。與傳統(tǒng)的記賬技術(shù)相比,其特點(diǎn)如下:
1)系統(tǒng)節(jié)點(diǎn)共同維護(hù)的鏈不斷增長,只可能添加記錄,而發(fā)生過的記錄都不可篡改;
2)去中心化,或者說多中心化,無需集中的控制而能達(dá)成共識;
3)通過密碼學(xué)的機(jī)制來確保交易無法抵賴和破壞,并保護(hù)用戶信息和記錄的隱私性;
在眾多區(qū)塊鏈商業(yè)應(yīng)用中,比特幣區(qū)塊鏈平臺其憑借廣泛的基礎(chǔ)設(shè)施和強(qiáng)大的網(wǎng)絡(luò)效應(yīng),被認(rèn)為終將成為區(qū)塊鏈領(lǐng)域標(biāo)準(zhǔn)的底層。
在比特幣中,構(gòu)成區(qū)塊鏈的區(qū)塊是一種聚合了交易信息的容器數(shù)據(jù)結(jié)構(gòu)。它由一個(gè)包含元數(shù)據(jù)的區(qū)塊頭和緊跟其后的構(gòu)成區(qū)塊主體的一長串交易組成。區(qū)塊頭是80字節(jié),而平均每個(gè)交易至少是250字節(jié),而且平均每個(gè)區(qū)塊至少包含超過500個(gè)交易。因此,一個(gè)包含所有交易的完整區(qū)塊比區(qū)塊頭的1000倍還要大。
其中,區(qū)塊頭由三組區(qū)塊元數(shù)據(jù)組成。首先是一組引用父區(qū)塊哈希值的數(shù)據(jù),這組元數(shù)據(jù)用于將該區(qū)塊與區(qū)塊鏈中前一區(qū)塊相連接。第二組元數(shù)據(jù),即難度、時(shí)間戳和nonce,與挖礦競爭相關(guān),第三組元數(shù)據(jù)是merkle樹根(一種用來有效地總結(jié)區(qū)塊中所有交易的數(shù)據(jù)結(jié)構(gòu))。
nmerkle樹
merkle樹是一種哈希二叉樹,它是一種用作快速歸納和校驗(yàn)大規(guī)模數(shù)據(jù)完整性的數(shù)據(jù)結(jié)構(gòu)。這種二叉樹包含加密哈希值。術(shù)語“樹”在計(jì)算機(jī)學(xué)科中常被用來描述一種具有分支的數(shù)據(jù)結(jié)構(gòu),但是樹常常被倒置顯示,“根”在圖的上部同時(shí)“葉子”在圖的下部。
在比特幣網(wǎng)絡(luò)中,merkle樹被用來歸納一個(gè)區(qū)塊中的所有交易,同時(shí)生成整個(gè)交易集合的數(shù)字指紋,且提供了一種校驗(yàn)區(qū)塊是否存在某交易的高效途徑。生成一棵完整的merkle樹需要遞歸地對哈希節(jié)點(diǎn)對進(jìn)行哈希,并將新生成的哈希節(jié)點(diǎn)插入到merkle樹中,直到只剩一個(gè)哈希節(jié)點(diǎn),該節(jié)點(diǎn)就是merkle樹的根。在比特幣的merkle樹中兩次使用到了sha256算法,因此其加密哈希算法也被稱為double-sha256。
n交易
比特幣交易是比特幣系統(tǒng)中最重要的部分。一筆比特幣交易是一個(gè)含有輸入值和輸出值的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)植入了將一筆資金從初始點(diǎn)(輸入值)轉(zhuǎn)移至目標(biāo)地址(輸出值)的代碼信息。比特幣交易的基本單位是utxo(未經(jīng)使用的一個(gè)交易輸出)。被交易消耗的utxo被稱為交易輸入,由交易創(chuàng)建的utxo被稱為交易輸出。通過這種方式,一定量的比特幣價(jià)值在不同所有者之間轉(zhuǎn)移,并在交易鏈中消耗和創(chuàng)建utxo。一筆比特幣交易通過使用所有者的簽名來解鎖utxo,并通過使用新的所有者的比特幣地址來鎖定并創(chuàng)建utxo.當(dāng)一筆比特幣交易被驗(yàn)證時(shí),每一個(gè)輸入值中的解鎖腳本被與其對應(yīng)的鎖定腳本同時(shí)(互不干擾地)執(zhí)行,從而查看這筆交易是否滿足使用條件。
在當(dāng)前的幾種標(biāo)準(zhǔn)交易腳本中,op_return腳本允許開發(fā)者在交易輸出上增加40字節(jié)的非交易數(shù)據(jù)。然后,與偽交易型的utxo不同,op_return創(chuàng)造了一種明確的可復(fù)查的非交易型輸出,此類數(shù)據(jù)無需存儲于utxo集。op_return輸出被記錄在區(qū)塊鏈上,它們會消耗磁盤空間,也會導(dǎo)致區(qū)塊鏈規(guī)模的增加,但它們不存儲在utxo集中,因此也不會使得utxo內(nèi)存膨脹,更不會以消耗代價(jià)高昂的內(nèi)存為代價(jià)使全節(jié)點(diǎn)都不堪重負(fù)。
op_return腳本的樣式:
op_return<data>
“data”部分被限制為40字節(jié),且多以哈希方式呈現(xiàn),如32字節(jié)的sha256算法輸出。許多應(yīng)用都在其前面加上前綴以輔助認(rèn)定。例如,電子公正服務(wù)的證明材料采用8個(gè)字節(jié)的前綴“docproof”,在十六進(jìn)制算法中,相應(yīng)的ascii碼為44f4350524f4f46。
本發(fā)明考慮引入?yún)^(qū)塊鏈技術(shù),設(shè)計(jì)一種基于區(qū)塊鏈技術(shù)的無密鑰簽名基礎(chǔ)設(shè)施,以解決傳統(tǒng)無密鑰簽名基礎(chǔ)設(shè)施存在的問題。
圖2展示了客戶端提交的數(shù)據(jù)或文件哈希值經(jīng)過層層聚合,最終形成calendarhash發(fā)布在區(qū)塊鏈網(wǎng)絡(luò)中并形成crh的過程;圖3是基于區(qū)塊鏈的無密鑰簽名基礎(chǔ)設(shè)施的工作流程。由圖2及圖3所示,本發(fā)明基于區(qū)塊鏈的無密鑰基礎(chǔ)設(shè)施的工作流程分為以下幾步:
第一步,客戶端提交數(shù)據(jù)或者文件的哈希值至網(wǎng)關(guān)層;
第二步,網(wǎng)關(guān)層收集和處理客戶端的提交的哈希值,并聚合成merkletree;
第三步,網(wǎng)關(guān)層將形成的merkletree的根哈希值發(fā)送至聚合層;
第四步,聚合層服務(wù)器處理網(wǎng)關(guān)層發(fā)送的根哈希值,并將其添加到merkletree;
第五步,聚合層服務(wù)器將形成的根哈希值發(fā)送至核心層;
第六步,核心層服務(wù)器通過身份認(rèn)證后接入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,接收聚合層提交的哈希值并聚合成merkletree;
第七步,核心層將每秒時(shí)間內(nèi)形成的merkletree的根哈希值,即calendarhash,嵌入交易腳本op_rerurn中,格式如下:
op_return<calendarhash>
并將交易發(fā)布在區(qū)塊鏈網(wǎng)絡(luò)中;
第八步,礦工(競爭記賬權(quán)的發(fā)布層節(jié)點(diǎn))收集區(qū)塊鏈網(wǎng)絡(luò)中的交易信息,構(gòu)建merkletree,與比特幣中merkletree的構(gòu)造方法不同,在本發(fā)明中,礦工只需提取交易中op_return中的內(nèi)容(calendarhash),用于merkletree的構(gòu)建,最終形成的根哈希值即為crh,所以crh將被寫入到區(qū)塊頭中;通過共識機(jī)制,礦工競爭或分配區(qū)塊的記賬權(quán),并通過共識機(jī)制可以調(diào)節(jié)區(qū)塊的生產(chǎn)時(shí)間,也即crh的發(fā)布周期;
第九步,客戶端將接收到各層服務(wù)器逐層返回的簽名,該簽名中包含了由用戶提交的數(shù)字資產(chǎn)哈希值節(jié)點(diǎn)構(gòu)建出crh所需的一系列哈希值及其計(jì)算路徑。
由于crh只記錄在區(qū)塊頭中,用戶下載輕量級區(qū)塊數(shù)據(jù)(即只下載區(qū)塊頭),即可實(shí)現(xiàn)crh的備份。用戶無論在何時(shí)何地,均可以通過訪問已經(jīng)下載到本地的區(qū)塊數(shù)據(jù),利用簽名驗(yàn)證數(shù)據(jù)的完整性,無須依賴密鑰和任何中心化的權(quán)威機(jī)構(gòu)。
以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步的詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。