趙明宇
(黑龍江省科學院智能制造研究所,哈爾濱 150090)
區(qū)塊鏈技術(shù)可通過匿名化及加密保護用戶的身份與交易內(nèi)容提供更高水平的隱私保護。例如,在聯(lián)盟鏈中,只有特定的參與方被允許訪問及驗證交易記錄,而私有鏈則更加嚴格地限制訪問權(quán)限。區(qū)塊鏈技術(shù)還可利用零知識證明、環(huán)簽名等密碼學技術(shù)來實現(xiàn)更高級別的隱私保護,但其在隱私保護方面還存在一些問題。由于區(qū)塊鏈的去中心化特性,數(shù)據(jù)的完全刪除比較困難,可能導致個人隱私長期存儲及泄露風險。公鏈上的交易信息雖然能夠通過假名來保護用戶身份,但仍可能通過關(guān)聯(lián)分析等手段被攻擊者破解。由于隱私保護需要消耗大量的計算資源,因此在性能及效率方面存在一定的問題。
需進一步探索區(qū)塊鏈技術(shù)在安全通信領(lǐng)域中的應(yīng)用,針對不同的場景及需求設(shè)計更加靈活、強大的隱私保護機制,結(jié)合其他技術(shù)如多方計算、同態(tài)加密等來提升隱私保護能力。制定相應(yīng)的法律及規(guī)范,保護用戶隱私權(quán)益,防止濫用及侵犯隱私。
該方案設(shè)計了一個基于區(qū)塊鏈及IPFS的聯(lián)盟鏈系統(tǒng),為業(yè)務(wù)參與者提供安全、可靠的通信,保證消息記錄的完整性驗證。該系統(tǒng)由多個節(jié)點組成,這些節(jié)點部署在業(yè)務(wù)機構(gòu)A和B中,形成一個聯(lián)盟鏈網(wǎng)絡(luò),確保參與的業(yè)務(wù)機構(gòu)之間的通信安全可靠,記錄并驗證所有通信消息的完整性。為了減輕聯(lián)盟鏈網(wǎng)絡(luò)的存儲壓力,采用IPFS分布式存儲技術(shù)來緩解通信壓力[1]。IPFS技術(shù)可存儲業(yè)務(wù)通信過程中產(chǎn)生的大量數(shù)據(jù),只通過聯(lián)盟鏈網(wǎng)絡(luò)傳輸這些數(shù)據(jù)的唯一索引。這種機制可大大降低聯(lián)盟鏈網(wǎng)絡(luò)的存儲壓力,保證所有數(shù)據(jù)的安全性及完整性。在這個系統(tǒng)中,業(yè)務(wù)機構(gòu)A和B及它們對應(yīng)的用戶A1和B1是主要的參與者。用戶端包含多個IPFS節(jié)點,這些節(jié)點可為用戶提供更加安全、可靠的通信服務(wù)。模型如圖1所示。
圖1 基于智能合約的鏈上安全通信系統(tǒng)模型Fig.1 Intelligent contract-based secure on-chain communication system model
該方案結(jié)合了聯(lián)盟鏈與IPFS技術(shù)的優(yōu)勢,為業(yè)務(wù)參與者提供了一種安全、可靠的通信方式。通過控制聯(lián)盟鏈存儲方式大大減輕了存儲壓力,這種安全通信方案可保證用戶隱私不被泄露,高效地驗證通信消息的完整性。
基于智能合約的鏈上安全通信方法由消息預處理算法、消息路由算法、通信管控算法及消息接收算法組成。
1.1.1 消息預處理算法
在信息加密中使用了兩種加密算法,即AES加密與ECC加密[2],在兩種算法的基礎(chǔ)上又融合了數(shù)字簽名[3],保證數(shù)據(jù)傳輸過程中的安全性,預防偽造等惡意行為。發(fā)送方選擇合適的加密算法即密鑰對消息進行加密,使用私鑰簽署消息和密文,加密后的信息及數(shù)字簽名打包發(fā)給收件方。接收方使用公鑰驗證數(shù)字簽名,使用私鑰解密密文,并再次驗證數(shù)字簽名來確認消息未被篡改。
ECC密鑰生成算法:選擇一條橢圓曲線Ep(a,b),選擇曲線上的一點G作為基點,則可生成發(fā)送方和接收方的公鑰PK及私鑰SK,即(PK1、SK1)和(PK2、SK2)。
ECC加密:輸入明文M和接收方的公鑰PK2,通過ECC加密算法生成密文C,即C=EncryptECC(PK2,M)。
ECC解密:輸入密文C和接收方的私鑰SK2,通過ECC解密算法獲取原始明文M,即M=DecryptECC(SK2,C)。
簽名生成:輸入明文數(shù)據(jù)M和發(fā)送方的私鑰SK1,通過數(shù)字簽名算法生成簽名S,即S=Sign(SK1,M)。
簽名驗證:輸入明文數(shù)據(jù)M、發(fā)送方的公鑰PK1和簽名S,通過驗簽算法驗證簽名的有效性,即True/False=Verify(PK1,S)。
AES密鑰生成:輸入安全參數(shù)λ,通過AES密鑰生成算法生成對稱密鑰K,即K=KeyGenAES(λ)。
AES加密:輸入明文M和對稱密鑰K,通過AES加密算法生成密文C,即C=EncryptAES(K,M)。
AES解密:輸入密文C和對稱密鑰K,通過AES解密算法獲取原始明文M,即M=DecryptAES(K,C)。
通過以上加解密算法的組合使用,發(fā)送方可在本地對要發(fā)送的消息進行加密存儲,使用數(shù)字簽名算法對消息進行簽名,從而確保數(shù)據(jù)的安全性及完整性,增加信息傳遞的安全性,為數(shù)據(jù)通信提供更高的安全保障。
1.1.2 消息路由算法
設(shè)計了一種高效合理的消息發(fā)送機制,以公鏈中的節(jié)點作為傳遞媒介,使用CP-ABE方法作為消息路由算法[4]。在發(fā)送過程中對消息進行加密,使用KeyGen CPABE(MK,Atrrx)為公鏈上的用戶分發(fā)私鑰SKx,實現(xiàn)對鏈上消息的精確控制及訪問,確保只有聯(lián)盟內(nèi)的機構(gòu)能夠讀取并處理鏈上消息,有效保護數(shù)據(jù)的安全性及隱私性。
消息發(fā)送算法:
輸入:對輸入的消息進行預處理(D,S,Ie,EKi),消息預處理后對其加密PKa
輸出:完成狀態(tài)T
獲取用戶所屬群組列表Li,Li ← getUserGroup(EKi)
構(gòu)造訪問策略p,p ← constructPolicy(Li)
將策略嵌入密文中,C1 ← EncryptCPABE(PKa, p, Ie|壹)
將存證存儲到區(qū)塊鏈中,T ← storeInChain(D, S, C1)
返回完成狀態(tài)T
消息中轉(zhuǎn)算法:
輸入:密文C,屬性加密公鑰PKa,屬性加密私鑰SKa
輸出:完成狀態(tài)
判斷群組是否能解密密文,如果能解密,則執(zhí)行下一步,否則返回解密失敗
獲取消息索引密文和用戶列表,(Ie|EKi)← DecryptCPABE(PKa, SKa, C)
等待用戶上線
返回完成狀態(tài)
1.1.3 通信管控算法
輸入:發(fā)送方公鑰PK0,接收方公鑰列表PKi,持續(xù)次數(shù)n,持續(xù)時間t
輸出:授權(quán)值A(chǔ),狀態(tài)信息M
生成授權(quán)值算法(GenAuth):
根據(jù)參與方公鑰PK0、接收方公鑰列表PKi和一個隨機數(shù)r,計算哈希值x,x ← Hash(PK0|PKi|r)
拼接當前時間戳,生成授權(quán)值A(chǔ),A ←(x|current_time)
返回授權(quán)值A(chǔ)
通信管理算法(LinkManage):
驗證授權(quán)值算法(verifyAuth):
對授權(quán)值進行驗證,若驗證通過返回ok,否則返回驗證失敗標志。
如果驗證通過(flg is ok):
將持續(xù)次數(shù)n減1,表示使用了一次通信次數(shù)。
如果n為0(通信次數(shù)已達上限)或者當前時間超過了持續(xù)時間t,返回false。
如果驗證不通過:
返回false。
1.1.4 消息接收算法
對公鏈中用戶接收消息Ie及EKi進行解密的算法描述[5]:
輸入:接收信息SK,接收信息索引Ie,接收方用戶列表EKi
輸出:消息明文M,消息附件A
數(shù)據(jù)接收算法(DataReceive):
利用接收方用戶私鑰SK和接收信息的用戶李彪EKi進行解密,獲取對稱密鑰K,K ← DecryptECC(SK, EK)
接收方使用對稱密鑰K索引Ie進行解密,獲取消息索引I,I ← DecryptAES(K, Ie)
通過接收方用戶自己的IPFS節(jié)點向網(wǎng)絡(luò)中的其他節(jié)點查詢資源所在的節(jié)點信息,獲取消息密文C,C ← getFromIPFS(I)
利用對稱密鑰K對消息密文C進行解密,獲取消息明文M和消息附件A,M|A ← DecryptAES(K, C)
返回消息明文M和消息附件A
以上是對機構(gòu)托管到用戶的消息索引密文Ie及EKi進行解密的算法描述。用戶通過私鑰解密出對稱密鑰K,使用K解密消息索引密文Ie獲取消息索引I,查詢IPFS上的消息密文C,再使用K解密C獲取消息明文M和消息附件A。
為了實現(xiàn)鏈上隱私通信,防止數(shù)據(jù)關(guān)聯(lián)分析及泄露業(yè)務(wù)聯(lián)盟參與方的隱私行為,采用新型密碼學技術(shù),利用區(qū)塊鏈的不可篡改性,實現(xiàn)鏈上通信消息的不可更改特性,并具備消息的隱私性?;赩RF零只是證明算法[6],保證了消息的安全性及可靠性,令消息傳遞者之間的關(guān)聯(lián)不被暴露,對發(fā)出方與接收方的隱私進行了最大限度的保護。這種設(shè)計保障了鏈上通信的隱私性及安全性,確保了參與方的隱私行為不被泄露,可驗證數(shù)據(jù)的完整性及真實性。這種隱私保護的鏈上通信方法可應(yīng)用于各種場景,確保信息傳輸?shù)陌踩约半[私性。
系統(tǒng)架構(gòu)如圖2所示:
圖2 鏈上電子公文系統(tǒng)流程Fig.2 Process of on-chain electronic document system
具體實現(xiàn)方案如下:
在現(xiàn)有的星鏈上通過區(qū)塊鏈的不可更改性進行消息加密傳輸,實現(xiàn)對公文索引的不可篡改存證。將公文內(nèi)容進行加密,利用IPFS節(jié)點將公文密文保存在鏈下存儲中,保證公文內(nèi)容的安全性[7]。將信息通過星鏈傳遞,保證數(shù)據(jù)的完整性及可溯源性。在進行公文傳輸時,接收方利用秘鑰對接收文件進行解密獲取信息,使用IPFS技術(shù)來降低網(wǎng)絡(luò)擁堵,減輕中心節(jié)點服務(wù)器的壓力,達到實時傳遞的效果。垃圾信息與無用文件可使用刪除功能進行刪除。系統(tǒng)還可提供公文操作記錄的可驗證性,以便審計及溯源。
由于采用了鏈下存儲與鏈上存證的方式,解決了區(qū)塊鏈信息存儲的難題,保證了系統(tǒng)的可擴展性及靈活性。
本系統(tǒng)采用四層架構(gòu),包括前端層、后端層、合約層及持久層。系統(tǒng)架構(gòu)如圖3所示:
圖3 鏈上電子公文系統(tǒng)架構(gòu)Fig.3 Architecture of on-chain electronic document system
前端層接收用戶輸入,根據(jù)用戶請求將操作傳遞給后端層,提供用戶界面及交互。合約層是智能合約的部署及執(zhí)行區(qū)域,能拓展系統(tǒng)功能,負責存儲用戶之間的通信數(shù)據(jù),確保數(shù)據(jù)的可靠性及安全性。持久層利用區(qū)塊鏈技術(shù)特性確保消息的安全性,其中區(qū)塊鏈網(wǎng)絡(luò)保存公文操作記錄,所有的信息都存儲在各個節(jié)點中,確保文件的安全存儲及高效傳輸。
通過以上架構(gòu),系統(tǒng)實現(xiàn)了良好的模塊分離及功能劃分,前端層提供用戶界面及交互,后端層處理用戶請求并調(diào)用相應(yīng)功能,智能合約層實現(xiàn)鏈上操作的拓展,持久層保證數(shù)據(jù)的安全存儲及高效傳輸。整個系統(tǒng)能夠滿足電子公文安全隱私傳輸?shù)男枨蟆?/p>
根據(jù)圖4的測試結(jié)果顯示,本鏈上安全通信方案的消息預處理算法在用戶100、200、300及數(shù)據(jù)0~100kb數(shù)據(jù)上進行測試。
圖4 消息預處理算法處理性能Fig.4 Performance of message preprocessing algorithm
算法在處理數(shù)據(jù)時,執(zhí)行時間隨著輸入數(shù)據(jù)塊的大小而線性增長,即時間復雜度為O(n)。在接收方用戶數(shù)量為100的情況下,處理1 MB數(shù)據(jù)的計算耗時約為20 ms,顯示出該算法的處理速度較快。每當測試數(shù)量增加100,算法額外需要約10 ms的執(zhí)行時間。這是因為需要根據(jù)測試的公鑰來加密對稱密鑰,這一過程需要額外的時間,且這個時間與測試數(shù)量呈正相關(guān)。
本方案的算法執(zhí)行時間隨數(shù)據(jù)塊大小與接收方用戶數(shù)量的增長而線性增加,每MB數(shù)據(jù)的處理耗時約為20 ms,相比于參考方案的60 ms,本方案的性能表現(xiàn)更優(yōu)。
根據(jù)圖5,消息路由算法的執(zhí)行性能如下所示:
圖5 消息路由算法執(zhí)行性能Fig.5 Message routing algorithm execution performance
消息路由算法的執(zhí)行時間與輸入數(shù)據(jù)的大小有著密切關(guān)系。這個算法的執(zhí)行時間隨著輸入數(shù)據(jù)的增長而近似線性增長,表明算法的時間復雜度可能是O(n)。具體來說,消息發(fā)送算法在構(gòu)造屬性策略并將其嵌入到密文中這一過程需要較長時間,可能是因為它需要額外的計算及加密步驟。因此每處理1 MB的數(shù)據(jù),消息發(fā)送算法大約需要消耗10 ms的時間。盡管輸入數(shù)據(jù)量增加,但算法的執(zhí)行時間也相應(yīng)線性增加。消息中轉(zhuǎn)算法的執(zhí)行時間大約是消息發(fā)送算法的一半。這意味著機構(gòu)節(jié)點在接收發(fā)送方的中轉(zhuǎn)數(shù)據(jù)時性能開銷更少。雖然它的執(zhí)行速度相對較快,但隨著輸入數(shù)據(jù)的增加,其執(zhí)行時間也會相應(yīng)地線性增加。
根據(jù)消息路由算法的執(zhí)行時間發(fā)展趨勢可知,隨著輸入數(shù)據(jù)大小的增加,算法的執(zhí)行時間呈現(xiàn)線性增長的趨勢。消息發(fā)送算法需要更多的時間來處理,而消息中轉(zhuǎn)算法則具有更快的執(zhí)行速度。
根據(jù)圖6,消息接收算法的處理性能如下所示:
圖6 消息接收算法處理性Fig.6 Processing of message receiving algorithm
消息接收算法是接收方在接收到由機構(gòu)節(jié)點傳輸?shù)南⒑?通過本地對加密信息進行解碼。實驗結(jié)果表明,當本地接收解碼10 MB的消息數(shù)據(jù)時,解碼時間約為25 ms,在實際的實驗中,因為網(wǎng)絡(luò)擁堵問題或數(shù)據(jù)量較大時,解碼時間可能會進一步加長。這種波動可能是由于網(wǎng)絡(luò)延遲導致的,需進行進一步的優(yōu)化及改進,以提高算法的效率及穩(wěn)定性。解密過程需要消耗一定的計算資源及時間,因此在實際應(yīng)用中需考慮計算能力的限制及優(yōu)化,以適應(yīng)大規(guī)模數(shù)據(jù)處理場景。
根據(jù)圖6中的消息接收算法處理性能,可以得出結(jié)論:在解密消息密文方面,當接收方用戶解密10 MB大小的數(shù)據(jù)時,計算所需的時間約為25 ms。在處理較大數(shù)據(jù)時可能會出現(xiàn)性能波動,可采用負載均衡的方式來優(yōu)化系統(tǒng)性能。
提出了一種基于智能合約的鏈上安全通信方案,通過引入IPFS分布式存儲技術(shù)及密文屬性加密算法,解決了區(qū)塊鏈應(yīng)用對安全通信的技術(shù)需求。該方案可確保消息數(shù)據(jù)的完整性及安全分發(fā),在離線狀態(tài)下保護用戶數(shù)據(jù),并在上線時正確解密消息密文,通過鏈下分布式存儲及安全加密操作,實現(xiàn)高效性與安全性的平衡。