摘 要:傳統(tǒng)區(qū)塊鏈不可被竄改的特性限制了區(qū)塊鏈技術的發(fā)展,而對可修改區(qū)塊鏈的研究目前還處在初始階段,許多方案在系統(tǒng)效率和安全性上還存在諸多不足。針對這些問題,首先,提出了一種改進的區(qū)塊鏈數(shù)據(jù)結構使之適用于可修改功能;其次,使用同態(tài)加密技術設計了一種主私鑰合成算法,保障了用于鏈上數(shù)據(jù)修改的私鑰在合成過程中的安全;同時,設計了一種匹配機制減少了私鑰合成過程中的通信量;最后,設計了一種對修改請求的審計方法,保證了對修改請求審計的合理性和安全性。實驗結果表明,該方案不僅具有去中心化的特點,而且與其他方案相比在系統(tǒng)安全性和通信效率上均有所提高。
關鍵詞:區(qū)塊鏈;變色龍哈希;同態(tài)加密;可修改區(qū)塊鏈
中圖分類號:TP306 文獻標志碼:A 文章編號:1001-3695(2022)11-004-3232-06
doi: 10.19734/j.issn.1001-3695.2022.04.0166
One modifiable blockchain scheme based on additive homomorphic encryption algorithm
Xue Qingshui, Xue Zhen, Wang Chenyang, Shi Xuelei, Zhou Yuwei, Zhang Tianhao
(School of Computer Science amp; Information Engineering, Shanghai Institute of Technology, Shanghai 201418, China)
Abstract:The immutability of traditional blockchain limits the development of blockchain technology, research on modifiable blockchain is still in its infancy, many schemes still have many deficiencies in system efficiency and security. To deal with these problems, firstly, this paper proposed an improved blockchain data structure to make it suitable for modifiable functions. Secondly, it designed a master private key synthesis algorithm using homomorphic encryption technology to ensure the security of the private key used for data modification on the chain during the synthesis process. At the same time, it designed a ma-tching mechanism to reduce the communication amount in the private key synthesis process. Finally, it designed an auditing method for modification requests to ensure the rationality and security of auditing modification requests. The experimental results show that the proposed scheme not only has the characteristics of decentralization, but also improves the system secu-rity and communication efficiency compared with other schemes.
Key words:blockchain; chameleon hash; homomorphic encryption; modifiable blockchain
基金項目:國家自然科學基金資助項目(61672350,61170227);教育部基金資助項目(39120K178038,14YJA880033);國家社會科學基金資助項目(16BGL003)
作者簡介:薛慶水(1971-),男(通信作者),山東濟南人,教授,碩導,博士,主要研究方向為網(wǎng)絡安全、新型密碼體制的研究、區(qū)塊鏈技術(xue-qsh@sit.edu.cn);薛震(1995-),男,山東菏澤人,碩士研究生,主要研究方向為網(wǎng)絡安全、區(qū)塊鏈技術;王晨陽(1996-),女,安徽阜陽人,碩士研究生,主要研究方向為網(wǎng)絡安全、屬性加密;時雪磊(1997-),男,河南南陽人,碩士研究生,主要研究方向為網(wǎng)絡安全;周雨衛(wèi)(1996-),女,江蘇泰州人,碩士研究生,主要研究方向為零知識證明;張?zhí)礻唬?997-),男,河南濮陽人,碩士研究生,主要研究方向為人工智能安全.
0 引言
區(qū)塊鏈的誕生源自于中本聰發(fā)表的《比特幣:一種點對點式的電子現(xiàn)金系統(tǒng)》,文中提出了一種去中心化的電子貨幣交易理論[1]。比特幣在世界金融交易中使用得越來越多,影響范圍越來越廣,這引起了研究人員的廣泛關注。以太坊的出現(xiàn)使區(qū)塊鏈成為了一種分布式可編程的應用平臺,并且將智能合約引入其中,是從區(qū)塊鏈技術的誕生到現(xiàn)在歷經(jīng)的一次大的改進,其中智能合約是一種運行在區(qū)塊鏈上的程序。開發(fā)者通過智能合約制定一套規(guī)則,然后發(fā)布到線上,人與智能合約進行交互,由機器去完成業(yè)務的部分,這樣就規(guī)避了由人來執(zhí)行時可能造成的作弊行為,未來區(qū)塊鏈可以實現(xiàn)真正意義上的去中心化可信系統(tǒng)并覆蓋全行業(yè)。
雖然區(qū)塊鏈已有數(shù)十年的發(fā)展,但是相關技術尚不成熟,仍存在著諸多問題[2],其中鏈上數(shù)據(jù)無法修改就是問題之一。鏈上數(shù)據(jù)無法修改導致了現(xiàn)有區(qū)塊鏈的數(shù)據(jù)會隨著系統(tǒng)運行的時間而變得越來越多。而如果數(shù)據(jù)可以被修改,那么區(qū)塊鏈的不可竄改性將會被大大削弱。為了維持區(qū)塊鏈不可被竄改的特性,就要為鏈上數(shù)據(jù)修改操作加以限制,即需要保證修改數(shù)據(jù)的行為是正當且合理的。因此如何平衡這兩者之間的關系是當下亟待解決的問題。
構建一種可修改的區(qū)塊鏈涉及到對去中心化和不可竄改性的研究[3]。由于區(qū)塊鏈被創(chuàng)建的初衷是為了通過一定的機制在不可信的環(huán)境中構建一個可信系統(tǒng),即去中心化去信任的自治系統(tǒng),所以區(qū)塊鏈的其中一個特性就是去中心化;區(qū)塊鏈之所以被廣泛研究和應用還與其不可竄改的特性有密不可分的關系,不可竄改性即數(shù)據(jù)一旦被寫入?yún)^(qū)塊鏈就不能被更改,即便更改也應當保存相對應的更改記錄。上述兩點是區(qū)塊鏈系統(tǒng)的基本特性。但隨著對區(qū)塊鏈技術應用研究的深入,研究人員發(fā)現(xiàn),區(qū)塊鏈不可竄改的特性在實際應用中會對系統(tǒng)存儲能力造成嚴重的負擔。區(qū)塊鏈系統(tǒng)的數(shù)據(jù)量會隨著系統(tǒng)運行時間的延長而不斷增加;對區(qū)塊的刪除操作也只能簡單地從某個區(qū)塊處截斷,將早期生成的區(qū)塊丟棄而無法刪除指定的內(nèi)容。因此,如何使區(qū)塊鏈能夠?qū)崿F(xiàn)合理的修改功能成為了當下區(qū)塊鏈研究的熱點之一。
國際上最早的可修改區(qū)塊鏈方案是由Ateniese等人[4]提出的一種基于變色龍哈希技術的區(qū)塊鏈可修改方案,具體來說,該方案將區(qū)塊鏈中的傳統(tǒng)哈希函數(shù)替換為了變色龍哈希函數(shù),當有修改請求被提交時,系統(tǒng)可以通過計算預先設置的陷門進行碰撞計算,使被修改后的區(qū)塊鏈狀態(tài)保持不變;Derler等人[5]參考了Ateniese等人的研究,并在此基礎之上將可修改的層次從區(qū)塊級改進到了交易級,即修改者可以對單獨的交易數(shù)據(jù)進行修改操作;而Deuber等人[6]提出了一種修改策略,當一個修改請求被提出時,需要得到系統(tǒng)內(nèi)節(jié)點的認同才能進行修改操作,規(guī)范了修改的流程,提高了系統(tǒng)的安全性。
國內(nèi)學者也對可修改區(qū)塊鏈的研究提出了不同的看法。李佩麗等人[7]最早在國內(nèi)提出可修改區(qū)塊鏈方案,但該方案只提供了一個可修改方法,對去中心化和修改請求的審計等問題并沒有進行深入研究。任艷麗等人[8]根據(jù)Park 等人[9]構建的區(qū)塊鏈系統(tǒng) SpaceMint進行改進,提出了一種可修改的區(qū)塊鏈方案,在該方案中節(jié)點間競爭記賬權的方式是按照存儲空間的大小,即存儲空間越大,獲得記賬權的概率就越高。這一方案對參與者的存儲空間的大小有較高要求,容易造成存儲空間的惡性競爭。呂偉龍等人[10]參考了任艷麗等人的研究,提出了一些不足的地方,包括:a)方案的兼容性不強;b)每次修改都會保存一份記錄在鏈中,有明顯的空間消耗。其認為對可修改區(qū)塊鏈的研究要具有兼容性,而不應該建立在現(xiàn)有的某一種區(qū)塊鏈系統(tǒng)之上。同時區(qū)塊鏈是一個去中心化的系統(tǒng),加入變色龍哈希技術會使得區(qū)塊鏈系統(tǒng)中存在一個密鑰分發(fā)中心,這違背了區(qū)塊鏈去中心化的初衷。基于上述問題,文獻[10]提出了一種多中心且具有兼容性的可修改區(qū)塊鏈方案。
上述各方案對區(qū)塊鏈技術的發(fā)展起到了一定的推動作用,但是仍然存在一定的不足。本文通過研究認為,文獻[10]相較于文獻[8]在系統(tǒng)兼容性方面更強,但在對區(qū)塊的加密方面卻大相徑庭,文獻[10]雖然可以對每一筆交易進行加密,但是對于是修改整個區(qū)塊和修改單筆交易在密鑰粒度上沒有明顯作用,當需要修改的交易數(shù)量變多時,基于交易粒度的方案反而會需要進行大量計算,使得系統(tǒng)效率大大降低。綜合上述不足,本文提出了一種改進的區(qū)塊鏈可修改方案。本文方案的創(chuàng)新主要有:
a)在傳統(tǒng)區(qū)塊鏈的基礎上進行改進并設計了一種適用于可修改區(qū)塊鏈的區(qū)塊結構,在這種結構下系統(tǒng)不僅可以修改鏈上數(shù)據(jù),而且還可以對原數(shù)據(jù)和修改者進行追溯。
b)設計了一種主私鑰合成機制,利用同態(tài)加密算法的性質(zhì),子私鑰各節(jié)點以密文的形式相加合成主私鑰,保證了私鑰在合成過程中的安全性。
c)為減少通信開銷設計了一種節(jié)點匹配機制,在私鑰合成的過程中節(jié)點無須將私鑰廣播給其他節(jié)點,只需要將各自的子私鑰發(fā)送給與其匹配的節(jié)點。由于減少了不必要的通信,所以該機制既提高了通信效率又降低了子私鑰泄露的風險。
d)設計了一種對修改請求的審計方法,用于保證對修改請求審計的合理性和安全性;最后,對本文方案進行仿真模擬驗證了方案的有效性和可操作性,同時也測試和分析了不同方案的通信效率。
1 相關知識與工作介紹
可修改的區(qū)塊鏈方案需要使用變色龍哈希函數(shù)來代替?zhèn)鹘y(tǒng)哈希函數(shù),由于變色龍哈希函數(shù)在使用過程中需要配合私鑰來尋找可變參數(shù),而傳統(tǒng)形式的密鑰分發(fā)需要設置一個可信的中心化機構,這削弱了區(qū)塊鏈去中心化的屬性。文獻[10]為了將中心化的密鑰分發(fā)形式中心變?yōu)槎嘀行拿荑€分發(fā),所提出的多中心密鑰分發(fā)的原理是將原本單一的私鑰分別由若干個不同節(jié)點分別生成,最后各節(jié)點生成子私鑰通過算數(shù)相加求得的和為主私鑰,但是該方案對主私鑰的合成沒有給出很好的解決辦法。本文通過研究發(fā)現(xiàn),Paillier提出的同態(tài)加密算法可以有效地解決現(xiàn)有方案所存在的問題,并能在一定程度上保證可修改區(qū)塊鏈的系統(tǒng)安全性。
1.1 變色龍哈希函數(shù)在區(qū)塊鏈中的應用
變色龍哈希函數(shù)是Krawczy等人[11]在1998年首次提出的一種可以人為制造碰撞的陷門函數(shù),傳統(tǒng)的哈希函數(shù)可以將任意長度的字符串輸出為一個固定長度的哈希值,并且很難找到一個不同的字符串輸出與其相同的哈希值,這被叫做哈希函數(shù)的強抗碰撞。而變色龍哈希函數(shù)則可以人為地制造一個陷門,使得使用者很容易地找到一個能輸出相同哈希值的不同字符串。
Krawczyk等人提出的變色龍哈希算法中有五個子函數(shù):在初始化函數(shù)setup(λ) 中輸入安全性參數(shù)λ,可得到輸出公共參數(shù)p、q、g;密鑰生成函數(shù)keyGen(p,q,g)可以得到公鑰h和私鑰s;哈希計算函數(shù)hash(h,m,r)可以得到原文的哈希值H,其中m為原文,r為可變參數(shù),h為公鑰;可變參數(shù)鍛造函數(shù)forge(s,m,r,m′)輸入私鑰s、原文m、可變參數(shù)r和新的明文m可以得到可變參數(shù)r2,使得hash(h,m,r)=hash(n,m′,r2);哈希驗證函數(shù)verify(h,m,r,H)用于驗證由h、m、r生成的哈希值H的正確性。
在區(qū)塊鏈的實際應用中,系統(tǒng)將區(qū)塊鏈數(shù)據(jù)作為m代入到 hash(h,m,r) 中就可以得到當前區(qū)塊的哈希值,當區(qū)塊鏈中的數(shù)據(jù)發(fā)生改變時即m→m′,則hash(h,m,r)≠hash(h,m′,r),這時由變色龍哈希函數(shù)的特點,通過尋找一個新的隨機數(shù)r1,使hash(h,m,r)=hash(h,m′,r1),所以用變色龍哈希函數(shù)代替?zhèn)鹘y(tǒng)哈希函數(shù)之后,就可以實現(xiàn)在不改變哈希值的情況下修改區(qū)塊鏈中的數(shù)據(jù)。
1.2 加法同態(tài)加密算法
Paillier算法是法國密碼學家Paillier于1999年在歐洲密碼學會議上發(fā)表的一種滿足加法同態(tài)的非對稱加密算法,加法同態(tài)是指對密文進行處理相當于對明文執(zhí)行加法操作。Paillier加密算法主要分為三個部分:
a)密鑰生成函數(shù)keyGen(p,q)。隨機選取兩個大素數(shù)p、q,滿足式(1),生成公鑰pk和私鑰sk。
c)解密函數(shù)decryption(sk,c)。輸入同態(tài)加密算法的私鑰λ和密文c可以計算出明文m。
最終可以得到Paillier加法同態(tài)加密算法的性質(zhì):
綜上,由式(6)可知,通過Paillier加法同態(tài)加密算法可以由兩個密文的乘積得到這兩個明文之和的密文,根據(jù)這一性質(zhì)可以使可修改區(qū)塊鏈系統(tǒng)在主私鑰合成的過程中確保子私鑰不被泄露。
1.3 改進的區(qū)塊鏈結構
區(qū)塊鏈本質(zhì)上是一種分布式數(shù)據(jù)庫,參與區(qū)塊鏈維護的每個節(jié)點都存有一份完整的賬本。以比特幣系統(tǒng)為例,在它的區(qū)塊鏈結構中每個區(qū)塊都包含區(qū)塊頭和區(qū)塊體兩個部分,區(qū)塊頭中包含六個參數(shù),分別是區(qū)塊序號、父區(qū)塊的哈希值、版本號、時間戳、Merkle根和隨機數(shù);區(qū)塊體保存的是系統(tǒng)中各節(jié)點的交易數(shù)據(jù)。由于在每個區(qū)塊中都存有父區(qū)塊的哈希值,所以當父區(qū)塊的數(shù)據(jù)被修改后就無法與子區(qū)塊中的哈希值相對應,也就讓區(qū)塊鏈有了不可被竄改的特性。傳統(tǒng)區(qū)塊鏈結構如圖1所示。
為了讓區(qū)塊鏈實現(xiàn)修改的功能,本文在傳統(tǒng)區(qū)塊鏈的基礎上作出改進,將父區(qū)塊的哈希值更替為變色龍哈希值;增加可變參數(shù)和最后更新時間,其中可變參數(shù)為生成當前區(qū)塊哈希值的可變參數(shù),最后更新時間為當前區(qū)塊最后一次被修改的時間。在區(qū)塊體中增加修改者ID和被修改前的內(nèi)容兩個參數(shù),修改者ID為最后一次對區(qū)塊進行修改的用戶ID,修改前的數(shù)據(jù)為最后一次修改的原數(shù)據(jù)信息。數(shù)據(jù)可修改的區(qū)塊鏈結構如圖2所示。
2 基于加法同態(tài)的可修改區(qū)塊鏈
根據(jù)第1章所提到的有關技術,本章將主要介紹基于加法同態(tài)的可修改區(qū)塊鏈的詳細運行機制,以及可修改原理。
2.1 可修改區(qū)塊鏈的運行流程
本文在參考了傳統(tǒng)區(qū)塊鏈運行流程的基礎上提出了適用于可修改區(qū)塊鏈的系統(tǒng)運行流程,如圖3所示。
首先是系統(tǒng)初始化,根據(jù)所選定的應用場景確定系統(tǒng)節(jié)點、生成創(chuàng)世區(qū)塊。本文沒有明確是否要選出主節(jié)點來生成區(qū)塊,因為對于節(jié)點個數(shù)較少的系統(tǒng)來說,進一步劃分主節(jié)點和普通節(jié)點只會使系統(tǒng)更加復雜,導致系統(tǒng)效率大大降低。
在系統(tǒng)初始化完成后,在系統(tǒng)中正常運行的節(jié)點會產(chǎn)生交易數(shù)據(jù)將這些數(shù)據(jù)打包,生成區(qū)塊的過程中需要使用變色龍哈希函數(shù)計算當前區(qū)塊的哈希值,系統(tǒng)內(nèi)的節(jié)點通過密鑰生成函數(shù)生成變色龍哈希密鑰對。
系統(tǒng)中的節(jié)點通過共識算法選出記賬節(jié)點,現(xiàn)有的共識算法種類有很多,其中熟知的有PoW、PoS、DPoS等,因為記賬節(jié)點的選取并不影響可修改區(qū)塊鏈系統(tǒng)的正常運行,所以本文沒有使用特定的某一個共識算法。
在共識完成后被選出的記賬節(jié)點將新的區(qū)塊打包添加到本地區(qū)塊鏈并廣播全網(wǎng),其他節(jié)點收到廣播后將新生成的區(qū)塊下載到本地。
最后等待系統(tǒng)進入下一階段。
2.2 可修改的區(qū)塊鏈方案
本文方案以2.1節(jié)中介紹的運行流程為基礎,當網(wǎng)絡中有節(jié)點需要修改區(qū)塊鏈中的數(shù)據(jù)時,首先提出修改數(shù)據(jù)的請求,請求通過后進行密鑰組合,密鑰的組合由修改節(jié)點完成,在組合的過程中修改節(jié)點對其他節(jié)點的密鑰完全未知,可修改的區(qū)塊鏈方案如圖4所示。
1)提出修改請求
為保證系統(tǒng)運行的安全性以及在本文可修改區(qū)塊鏈方案中保留傳統(tǒng)區(qū)塊鏈不可竄改的特性,系統(tǒng)中的節(jié)點在修改區(qū)塊中的數(shù)據(jù)之前需要先提出申請application=〈id,r,o,n〉,其中:id為修改交易所在的區(qū)塊號;r為修改原因;o為待修改交易信息集合;n為修改后的新交易信息集合。與文獻[8]不同的是,在本文方案中,系統(tǒng)收到節(jié)點提出的修改請求后會在系統(tǒng)中選取數(shù)據(jù)相關方和無關方共同組成一個審計小組,由審計小組決定是否同意最終的修改請求。
2)對修改請求的審計
考慮到當系統(tǒng)規(guī)模較大時系統(tǒng)內(nèi)會出現(xiàn)大量修改請求,為審計這些請求,每個節(jié)點會加入大量審計組使得審計效率變低,因此本文設計了一種修改請求自動審計的機制來對修改請求進行自動審批,審計機制將在2.3節(jié)中詳細闡述,各節(jié)點制定關于本節(jié)點的審計規(guī)則,在節(jié)點收到與自身相關的數(shù)據(jù)修改請求后可以自動根據(jù)制定好的審計規(guī)則判斷請求是否合法,當參與審計節(jié)點的與數(shù)據(jù)有關的節(jié)點全部同意且數(shù)據(jù)無關方的節(jié)點超過一定閾值時修改申請通過,系統(tǒng)為申請的節(jié)點開放修改權限。
3)區(qū)塊數(shù)據(jù)的修改
可修改區(qū)塊鏈的關鍵技術就是變色龍哈希函數(shù),當修改者將原數(shù)據(jù)m修改為m′后,為使哈希值保持不變需要計算可變參數(shù)r2。文獻[10]通過改進變色龍哈希算法,將原本由密鑰生成中心產(chǎn)生的密鑰對交由系統(tǒng)中的節(jié)點共同生成,每個節(jié)點都會生成一個子私鑰si,所有子私鑰相加得到主私鑰S=s1+s2+s3+…+sn,但是主私鑰在合成過程中沒有考慮子私鑰在合成過程中的安全性,使得子私鑰在合成過程中存在泄露的風險。針對這一問題,本文提出了一種主私鑰合成算法,將在2.4節(jié)中詳細闡述。根據(jù)可變參數(shù)鍛造函數(shù)forge(s,m,r,m′),當參數(shù)s、m、r、m′已知時可以計算出新的可變參數(shù)r2,最后修改節(jié)點將修改后的區(qū)塊廣播全網(wǎng),網(wǎng)絡中的其他節(jié)點可隨時驗證數(shù)據(jù)的合法性,區(qū)塊數(shù)據(jù)的修改正式完成。
2.3 對修改請求的審計
當一個修改請求被提交時,所涉及到的節(jié)點包括提出修改請求的節(jié)點和與被修改數(shù)據(jù)有關的節(jié)點兩種。為了保證修改的合理性和安全性,本文添加了審核小組來對修改請求進行審核。
為了保證修改請求的合理性在審計小組中引入相關節(jié)點,相關節(jié)點為產(chǎn)生這條記錄原始數(shù)據(jù)的用戶,即數(shù)據(jù)的修改需要經(jīng)過產(chǎn)生此項記錄用戶的審核;同時為了保證系統(tǒng)的安全性、防止惡意節(jié)點的偽造攻擊,在審計小組中加入一定數(shù)量的與數(shù)據(jù)沒有關聯(lián)的第三方節(jié)點(即無關節(jié)點),無關節(jié)點的數(shù)量與相關節(jié)點數(shù)量相同,審計小組成員如圖5所示。
在審計過程中修改請求提出節(jié)點向區(qū)塊鏈系統(tǒng)提交數(shù)據(jù)修改請求,系統(tǒng)根據(jù)被修改記錄的信息確定相關方節(jié)點并隨機選取無關節(jié)點組成審計小組。審計分為兩個階段:a)相關節(jié)點審計階段,這個階段為保證數(shù)據(jù)修改的合理性,需要相關節(jié)點之間達成共識,為提高審計效率相關節(jié)點可以提前制定審計策略,如自動同意對指定參數(shù)的修改,該階段的通過需要得到所有相關節(jié)點的同意;b)無關節(jié)點審計階段,為提高系統(tǒng)的安全性防止偽造攻擊,無關節(jié)點需要審計此次數(shù)據(jù)修改的相關方節(jié)點是否與數(shù)據(jù)中的交易雙方對應,當超過半數(shù)的節(jié)點同意則允許此次數(shù)據(jù)修改請求。修改請求審計流程如圖6所示。
2.4 主私鑰合成機制
各節(jié)點在合成主私鑰的過程中需要先將本節(jié)點保存的子私鑰通過修改者節(jié)點提供的公鑰加密再發(fā)送給臨近節(jié)點,這樣保證了在主私鑰合成的過程中不會使子私鑰泄露。
具體步驟如下:
a)系統(tǒng)中參與區(qū)塊修改的數(shù)據(jù)相關方節(jié)點提供需要被修改的區(qū)塊的子私鑰si。
b)由請求方通過同態(tài)加密算法的密鑰生成函數(shù)keyGen(p,q)輸入兩個大素數(shù)p、q生成公鑰pk和私鑰sk,并將公鑰pk公開,即
c)各節(jié)點使用加密函數(shù)encryption(pk,m),將自己的私鑰si 作為明文m通過請求方提供的公鑰pk進行加密,即
d)為快速且安全地合成主私鑰,設計了一個匹配機制,具體方法將在2.5節(jié)中詳細闡述。
e)請求方收到過渡私鑰后合成主私鑰并通過私鑰λ解密,即
2.5 節(jié)點匹配算法
在主私鑰合成的過程中需要節(jié)點之間的交互,如果以廣播的方式傳遞密鑰則會在網(wǎng)絡中產(chǎn)生大量的數(shù)據(jù)包,容易造成廣播風暴,通過匹配的形式生成過渡私鑰再發(fā)送給數(shù)據(jù)修改者可以降低通信開銷。算法的具體形式以偽代碼的形式給出,如算法1所示。
算法1 節(jié)點匹配
輸入:參與匹配的區(qū)塊鏈系統(tǒng)節(jié)點。
輸出:匹配成功輸出true;匹配失敗輸出1。
initialization //系統(tǒng)初始化
NodePool={add1,add2,add3,…,addn} /* NodePool為參與匹配的節(jié)點池 */
while NodePool.match() /* 若與節(jié)點池中的節(jié)點匹配成功則繼續(xù)向下執(zhí)行,否則繼續(xù)匹配 */
Ci=Si.encryption() // 將子私鑰Si加密
Ci.send() // 將加密的子私鑰發(fā)送給匹配到的節(jié)點
end // 結束
在程序啟動前,首先參與主私鑰合成的節(jié)點執(zhí)行系統(tǒng)初始化,輸入?yún)⑴c匹配的區(qū)塊鏈系統(tǒng)節(jié)點的集合;構建匹配節(jié)點池NodePool={add1,add2,add3,…,addn},執(zhí)行match()方法對節(jié)點池中的節(jié)點逐個匹配,在得到響應后與被匹配節(jié)點建立匹配關系,最后將加密的子私鑰Si發(fā)送給被匹配的節(jié)點。
3 安全分析
3.1 可修改區(qū)塊鏈安全性分析
a)可信任性。本文沒有指定某種共識算法,由于本文方案的區(qū)塊鏈系統(tǒng)運行流程基本類似,通過使用現(xiàn)有的共識算法,如PoW、PoS、PBFT等可以使系統(tǒng)在不可信的環(huán)境中運行時使節(jié)點之間相互可信。
b)隱私性。該方案通過使用加法同態(tài)加密保護參與修改區(qū)塊鏈節(jié)點的數(shù)據(jù)隱私,各節(jié)點在合成主私鑰的過程中通過修改節(jié)點提供的公鑰加密子私鑰,根據(jù)同態(tài)加密的性質(zhì)可以保證子私鑰的數(shù)據(jù)隱私。
c)密文完整性。區(qū)塊鏈中的哈希值可以防止數(shù)據(jù)被非法竄改,而且還可以實現(xiàn)對數(shù)據(jù)完整性的驗證。
d)可追溯性。本文提出的可修改區(qū)塊鏈方案在區(qū)塊的數(shù)據(jù)結構中加入了最后修改時間、修改者ID和被修改的數(shù)據(jù),使得系統(tǒng)中的節(jié)點在修改過區(qū)塊數(shù)據(jù)后會留下修改痕跡,因此具有可追溯性。
3.2 可修改區(qū)塊鏈抗攻擊實驗與分析
假設1 攻擊者偽裝成數(shù)據(jù)修改者違規(guī)修改數(shù)據(jù)。
數(shù)據(jù)修改者在修改數(shù)據(jù)之前需要提交數(shù)據(jù)修改申請,申請通過審計小組審計后才可以進入數(shù)據(jù)修改階段。在數(shù)據(jù)修改階段,攻擊者也需要合成主私鑰才能對區(qū)塊數(shù)據(jù)進行修改,而合成主私鑰又需要得到所有子私鑰。所以數(shù)據(jù)被惡意修改的難度較大,可以認為攻擊者合成主私鑰是困難的,即該方案是安全的。
假設2 攻擊者得到了某一區(qū)塊的主私鑰。
如果攻擊者通過某種手段得到了某一區(qū)塊的主私鑰,那么在系統(tǒng)層面數(shù)據(jù)的安全性也是可以保證的,因為修改沒有經(jīng)過審計小組的同意是無法進入到修改階段的,即使修改了本地的區(qū)塊數(shù)據(jù)也無法同步至網(wǎng)絡中的其他節(jié)點,而被修改的本地數(shù)據(jù)最終將被認定為違規(guī)數(shù)據(jù),所以該方案是安全的。
根據(jù)上述假設進行模擬實驗,假設攻擊者偽裝成數(shù)據(jù)修改者對數(shù)據(jù)進行惡意修改。惡意節(jié)點在提出修改請求后會進入等待審計階段,惡意節(jié)點提出修改請求的過程如圖7所示。
收到修改請求后審計小組經(jīng)過審計對此次數(shù)據(jù)修改存在異議,最后修改申請被審計小組駁回,數(shù)據(jù)未被修改。審計過程如圖8所示。實驗結果表明,該方案在系統(tǒng)層面具有較高的安全性。
4 方案模擬與性能分析
4.1 區(qū)塊數(shù)據(jù)的生成與修改
本節(jié)進行仿真實驗,對該方案下的可修改區(qū)塊鏈進行模擬,實驗環(huán)境為AMD Ryzen 5 5600G,Windows 10 專業(yè)版,版本為19043.1288,編程語言為Python 3.8.10。
根據(jù)1.3節(jié)中的內(nèi)容構造區(qū)塊數(shù)據(jù)結構模擬區(qū)塊的生成,共生成了五個區(qū)塊。其中index為區(qū)塊序號,mark為區(qū)塊鏈版本標識,previousHash為父區(qū)塊哈希,time為時間戳, finTime為最后修改時間,hash為Merkle根,r為可變參數(shù),transactions為交易數(shù)據(jù),cid為修改者ID,lastD為修改前數(shù)據(jù)。實驗生成的區(qū)塊鏈如圖9所示。
數(shù)據(jù)修改需要修改節(jié)點向系統(tǒng)提出修改請求,區(qū)塊鏈系統(tǒng)在收到請求后會進行審核,當審核通過后區(qū)塊鏈系統(tǒng)將向提出申請的節(jié)點開放修改權限。在實驗中,本文模擬該區(qū)塊鏈中第二個區(qū)塊的數(shù)據(jù)需要進行修改。修改操作前的區(qū)塊數(shù)據(jù)如圖10所示。
數(shù)據(jù)修改完成后可以看到原區(qū)塊中transactionData的數(shù)據(jù)由{\"sender\":\"WnIQS3TF\",\"recipient\":\"F43TRHmL\",\"amount\":3242,\"cID\":1,\"lastD\":1}變?yōu)榱藍\"sender\":\"111\",\"recipient\":\"222\",\"amount\":100,\"cID:\"4\"lastD:\"{\"sender\":\"Lo4nZgHN\",\"recipient\": \"zVYBO7QI\", \"amount\": 8864, \"cID\": 1, \"lastD\": 1},在修改后的lastD字段中保留了修改前的原數(shù)據(jù),同時在finTime字段中更新了區(qū)塊數(shù)據(jù)被修改的具體時間,至此修改操作結束。修改后的數(shù)據(jù)如圖11所示。
4.2 主私鑰生成算法性能分析
在接下來的內(nèi)容中,本文對2.3節(jié)中提出的主私鑰合算法進行實驗模擬。在實驗中通過設置多個子進程來模擬多個節(jié)點在合成主私鑰的過程中所消耗的時間,在文獻[10]中主私鑰合成是通過廣播的方式完成的,對于節(jié)點個數(shù)少的系統(tǒng)可以使用,當系統(tǒng)節(jié)點個數(shù)增多時會極大地增加系統(tǒng)通信開銷。本文方案和文獻[10]的通信次數(shù)對比如圖12所示。
根據(jù)實驗結果,通過對比可以得出結論,與文獻[10]相比,隨著節(jié)點個數(shù)的增加,使用本文提出的主私鑰合成算法能有效降低通信開銷、減少通信次數(shù),提高系統(tǒng)運行效率。
4.3 不同方案的對比與分析
本文從是否去中心化、密鑰共享方式、共享密鑰加密算法、系統(tǒng)通信開銷、修改請求審計方式和方案安全性六個方面進行比較,對比結果如表1所示。
文獻[7]是對埃森哲公司申請的可編輯區(qū)塊鏈專利中所提到的方案進行改進,將其單個節(jié)點管理變色龍哈希函數(shù)陷門的方式變?yōu)閷⑾蓍T分享給多個用戶,并將是否允許修改的決策權交由所有節(jié)點投票決定,但該方案的密鑰最終還是由一個可信節(jié)點生成,沒有很好地解決中心化的問題;此外方案對修改請求的審計方式設計得簡單也使得系統(tǒng)安全性較低。
文獻[8]中的可修改的區(qū)塊鏈方案的基礎是SpaceMint[9]區(qū)塊結構。在該方案中,節(jié)點間競爭記賬權的方式是按照存儲空間的大小,即存儲空間越大獲得記賬權的概率就越高。該方案對參與者存儲空間大小的要求較高,容易造成存儲空間的惡性競爭;同時區(qū)塊數(shù)據(jù)是否能夠修改的評判標準是由排名前Q的礦工進行投票決定的,只有全票通過才允許修改數(shù)據(jù)。也就是說,在該方案下排名前Q的礦工都有一票否決權。由于該方案缺乏對礦工的制約機制,當存在不負責任的礦工時,可能出現(xiàn)合理的修改請求也會被否決,所以不利于區(qū)塊鏈系統(tǒng)的良性運行。
文獻[10]通過改進變色龍哈希函數(shù),將原本由單個節(jié)點生成的密鑰交由多個節(jié)點生成子私鑰,最后通過廣播的方式合成主私鑰,但在系統(tǒng)中存在大量修改請求時,這種合成方式會嚴重影響系統(tǒng)效率;在對修改請求的審計方面,該方案采用問責機制來保證數(shù)據(jù)的安全,并通過保證金機制來約束權限節(jié)點,雖然相較于單純使用投票進行表決的方案在安全性上有所提高,但與被修改數(shù)據(jù)有關的節(jié)點不能參與,所以無法保證審計的合理性。
綜上所述并聯(lián)系表1可知,本文方案相較于文獻[7,8]具有去中心化的特點,與文獻[10]相比,本文方案設計的主私鑰合成算法改變了密鑰共享方式,使得主私鑰在合成階段大幅降低了通信開銷。同時在數(shù)據(jù)修改的監(jiān)管方面,本文方案加入的審計小組細化了審計分工,與其他方案相比在審計流程上更加合理,在一定程度上保證了修改請求審計的合理性和安全性。
5 結束語
區(qū)塊鏈是當前的熱門技術,其通過自身去中心化和不可被竄改的特性使得區(qū)塊鏈技術的實施可以在不依賴第三方機構或設施的情況下形成一個自治系統(tǒng),雖然不可被竄改作為區(qū)塊鏈技術的特性之一,但是從另一個角度來說這個特性也成為了區(qū)塊鏈技術發(fā)展的瓶頸,而可修改區(qū)塊鏈方案提出為區(qū)塊鏈的發(fā)展提供了一種新思路。
本文通過對可修改區(qū)塊鏈的研究提出了一種可修改的區(qū)塊鏈方案,該方案中的區(qū)塊結構可以實現(xiàn)可修改區(qū)塊鏈系統(tǒng)對數(shù)據(jù)修改者和被修改數(shù)據(jù)的追溯,從一定程度上保證了可修改區(qū)塊鏈的數(shù)據(jù)安全性。最后通過方案對比和實驗分析驗證了方案的有效性。下一步的工作是進一步完善可修改區(qū)塊鏈的運行機制,對節(jié)點的匹配機制進行進一步優(yōu)化,使用不同共識算法測試系統(tǒng)的運行效率。
參考文獻:
[1]蔡曉晴,鄧堯,張亮,等. 區(qū)塊鏈原理及其核心技術 [J]. 計算機學報,2021,44(1): 84-131. (Cai Xiaoqing,Deng Yao,Zhang Liang,et al. The principle of blockchain and its core technology [J]. Chinese Journal of Computers, 2021,44(1): 84-131.)
[2]袁勇,王飛躍. 區(qū)塊鏈技術發(fā)展現(xiàn)狀與展望 [J]. 自動化學報,2016,42(4): 481-494. (Yuan Yong,Wang Feiyue. The current situ-ation and prospect of blockchain technology development [J]. Acta Automatica Sinica,2016,42(4): 481-494.)
[3]袁勇,王飛躍. 可編輯區(qū)塊鏈: 模型、技術與方法 [J]. 自動化學報,2020,46(5): 831-846. (Yuan Yong,Wang Feiyue. Editable blockchain: models,technologies and methods [J]. Acta Automatica Sinica,2020,46(5): 831-846.)
[4]Ateniese G,Magri B,Venturi D,et al. Redactable blockchain-or-rewriting history in Bitcoin and friends [C]// Proc of IEEE European Symposium on Security and Privacy. Piscataway,NJ: IEEE Press,2017: 111-126.
[5]Derler D,Samelin K,Slamanig D,et al. Fine-grained and controlled rewriting in blockchains: chameleon-hashing gone attribute-based [EB/OL]. (2019).https://eprint.iacr.org/2019/406.
[6]Deuber D,Magri B,Thyagarajan S A K. Redactable blockchain in the permissionless setting [C]// Proc of IEEE Symposium on Security and Privacy. Piscataway,NJ: IEEE Press,2019: 645-659.
[7]李佩麗,徐海霞,馬添軍,等. 可更改區(qū)塊鏈技術研究 [J]. 密碼學報,2018,5(5): 501-509. (Li Peili,Xu Haixia,Ma Tianjun,et al. Research on modifiable blockchain technology [J]. Journal of Cryptologic Research,2018,5(5): 501-509.)
[8]任艷麗,徐丹婷,張新鵬,等. 可修改的區(qū)塊鏈方案 [J]. 軟件學報,2020,31(12): 3909-3922. (Ren Yanli,Xu Danting,Zhang Xinpeng,et al. Modifiable blockchain scheme [J]. Journal of Software,2020,31(12): 3909-3922.)
[9]Park S,Kwon A,F(xiàn)uchsbauer G. SpaceMint: a cryptocurrency based on proofs of space [C]// Proc of the 22nd International Conference on Financial Cryptography and Data Security. Berlin: Springer,2018: 480-499.
[10]呂偉龍,魏松杰,于銘慧,等. 面向可信聯(lián)盟的區(qū)塊鏈賬本可驗證修改方法研究 [J]. 計算機學報,2021,44(10): 2016-2032. (Lyu Weilong,Wei Songjie,Yu Minghui,et al. Research on verifiable modification method of blockchain ledger for trusted alliance [J]. Chinese Journal of Computers,2021,44(10): 2016-2032.)
[11]Krawczyk H,Rabin T. Chameleon hashing and signatures [EB/OL]. (1998). https://eprint.iacr.org/1998/010.
[12]林文兵,張敏情,郭帥,等. 基于Paillier的可分離密文域可逆信息隱藏 [J]. 計算機應用研究,2021,38 (10): 3161-3165. (Lin Wenbing,Zhang Minqing,Guo Shuai,et al. Reversible information hiding in separable ciphertext domain based on Paillier [J]. Application Research of Computers,2021,38(10): 3161-3165.)
[13]鄧小鴻,王智強,李娟,等. 主流區(qū)塊鏈共識算法對比研究 [J]. 計算機應用研究,2022,39(1): 1-8. (Deng Xiaohong,Wang Zhiqiang,Li Juan,et al. Comparative research on mainstream blockchain consensus algorithms [J]. Application Research of Compu-ters,2022,39(1): 1-8.)
[14]Cheng Lichen,Liu Jiqiang,Su Chunhua,et al. Polynomial-based mo-difiable blockchain structure for removing fraud transactions [J]. Future Generation Computer Systems,2019,99: 154-163.
[15]Han Daojun,Chen Jinyu,Zhang Lei,et al. A deletable and modifiable blockchain scheme based on record verification trees and the multisignature mechanism [J]. Computer Modeling in Engineering amp; Sciences,2021,128(1): 223-245.
[16]Shamir A. How to share a secret [J]. Communications of the ACM,1979,22(11):612-613 .
[17]Lee N Y,Yang J,Onik M,et al. Modifiable public blockchains using truncated hashing and sidechains [J]. IEEE Access,2019,7: 173571-173582.
[18]任艷麗,徐丹婷,張新鵬,等. 基于門限環(huán)簽名的可刪除區(qū)塊鏈 [J]. 通信學報,2019,40(4): 71-82. (Ren Yanli,Xu Danting,Zhang Xinpeng,et al. Deletable blockchain based on threshold ring signature [J]. Journal on Communications,2019,40(4): 71-82.)
[19]李浪,余孝忠,楊婭瓊,等. 同態(tài)加密研究進展綜述 [J]. 計算機應用研究,2015,32(11): 3209-3214. (Li Lang,Yu Xiaozhong,Yang Yaqiong,et al. A review of research progress in homomorphic encryption [J]. Application Research of Computers,2015,32(11): 3209-3214.)
[20]梅宇,孫霓剛,李雪佳. 適用于字符串加密的全同態(tài)加密方案 [J]. 計算機測量與控制,2016,24(4): 195-198. (Mei Yu,Sun Nigang,Li Xuejia. Fully homomorphic encryption scheme for string encryption [J]. Computer Measurement and Control,2016,24(4): 195-198.)