趙明宇
(黑龍江省科學院智能制造研究所,哈爾濱 150090)
區塊鏈技術可通過匿名化及加密保護用戶的身份與交易內容提供更高水平的隱私保護。例如,在聯盟鏈中,只有特定的參與方被允許訪問及驗證交易記錄,而私有鏈則更加嚴格地限制訪問權限。區塊鏈技術還可利用零知識證明、環簽名等密碼學技術來實現更高級別的隱私保護,但其在隱私保護方面還存在一些問題。由于區塊鏈的去中心化特性,數據的完全刪除比較困難,可能導致個人隱私長期存儲及泄露風險。公鏈上的交易信息雖然能夠通過假名來保護用戶身份,但仍可能通過關聯分析等手段被攻擊者破解。由于隱私保護需要消耗大量的計算資源,因此在性能及效率方面存在一定的問題。
需進一步探索區塊鏈技術在安全通信領域中的應用,針對不同的場景及需求設計更加靈活、強大的隱私保護機制,結合其他技術如多方計算、同態加密等來提升隱私保護能力。制定相應的法律及規范,保護用戶隱私權益,防止濫用及侵犯隱私。
該方案設計了一個基于區塊鏈及IPFS的聯盟鏈系統,為業務參與者提供安全、可靠的通信,保證消息記錄的完整性驗證。該系統由多個節點組成,這些節點部署在業務機構A和B中,形成一個聯盟鏈網絡,確保參與的業務機構之間的通信安全可靠,記錄并驗證所有通信消息的完整性。為了減輕聯盟鏈網絡的存儲壓力,采用IPFS分布式存儲技術來緩解通信壓力[1]。IPFS技術可存儲業務通信過程中產生的大量數據,只通過聯盟鏈網絡傳輸這些數據的唯一索引。這種機制可大大降低聯盟鏈網絡的存儲壓力,保證所有數據的安全性及完整性。在這個系統中,業務機構A和B及它們對應的用戶A1和B1是主要的參與者。用戶端包含多個IPFS節點,這些節點可為用戶提供更加安全、可靠的通信服務。模型如圖1所示。

圖1 基于智能合約的鏈上安全通信系統模型Fig.1 Intelligent contract-based secure on-chain communication system model
該方案結合了聯盟鏈與IPFS技術的優勢,為業務參與者提供了一種安全、可靠的通信方式。通過控制聯盟鏈存儲方式大大減輕了存儲壓力,這種安全通信方案可保證用戶隱私不被泄露,高效地驗證通信消息的完整性。
基于智能合約的鏈上安全通信方法由消息預處理算法、消息路由算法、通信管控算法及消息接收算法組成。
1.1.1 消息預處理算法
在信息加密中使用了兩種加密算法,即AES加密與ECC加密[2],在兩種算法的基礎上又融合了數字簽名[3],保證數據傳輸過程中的安全性,預防偽造等惡意行為。發送方選擇合適的加密算法即密鑰對消息進行加密,使用私鑰簽署消息和密文,加密后的信息及數字簽名打包發給收件方。接收方使用公鑰驗證數字簽名,使用私鑰解密密文,并再次驗證數字簽名來確認消息未被篡改。
ECC密鑰生成算法:選擇一條橢圓曲線Ep(a,b),選擇曲線上的一點G作為基點,則可生成發送方和接收方的公鑰PK及私鑰SK,即(PK1、SK1)和(PK2、SK2)。
ECC加密:輸入明文M和接收方的公鑰PK2,通過ECC加密算法生成密文C,即C=EncryptECC(PK2,M)。
ECC解密:輸入密文C和接收方的私鑰SK2,通過ECC解密算法獲取原始明文M,即M=DecryptECC(SK2,C)。
簽名生成:輸入明文數據M和發送方的私鑰SK1,通過數字簽名算法生成簽名S,即S=Sign(SK1,M)。
簽名驗證:輸入明文數據M、發送方的公鑰PK1和簽名S,通過驗簽算法驗證簽名的有效性,即True/False=Verify(PK1,S)。
AES密鑰生成:輸入安全參數λ,通過AES密鑰生成算法生成對稱密鑰K,即K=KeyGenAES(λ)。
AES加密:輸入明文M和對稱密鑰K,通過AES加密算法生成密文C,即C=EncryptAES(K,M)。
AES解密:輸入密文C和對稱密鑰K,通過AES解密算法獲取原始明文M,即M=DecryptAES(K,C)。
通過以上加解密算法的組合使用,發送方可在本地對要發送的消息進行加密存儲,使用數字簽名算法對消息進行簽名,從而確保數據的安全性及完整性,增加信息傳遞的安全性,為數據通信提供更高的安全保障。
1.1.2 消息路由算法
設計了一種高效合理的消息發送機制,以公鏈中的節點作為傳遞媒介,使用CP-ABE方法作為消息路由算法[4]。在發送過程中對消息進行加密,使用KeyGen CPABE(MK,Atrrx)為公鏈上的用戶分發私鑰SKx,實現對鏈上消息的精確控制及訪問,確保只有聯盟內的機構能夠讀取并處理鏈上消息,有效保護數據的安全性及隱私性。
消息發送算法:
輸入:對輸入的消息進行預處理(D,S,Ie,EKi),消息預處理后對其加密PKa
輸出:完成狀態T
獲取用戶所屬群組列表Li,Li ← getUserGroup(EKi)
構造訪問策略p,p ← constructPolicy(Li)
將策略嵌入密文中,C1 ← EncryptCPABE(PKa, p, Ie|壹)
將存證存儲到區塊鏈中,T ← storeInChain(D, S, C1)
返回完成狀態T
消息中轉算法:
輸入:密文C,屬性加密公鑰PKa,屬性加密私鑰SKa
輸出:完成狀態
判斷群組是否能解密密文,如果能解密,則執行下一步,否則返回解密失敗
獲取消息索引密文和用戶列表,(Ie|EKi)← DecryptCPABE(PKa, SKa, C)
等待用戶上線
返回完成狀態
1.1.3 通信管控算法
輸入:發送方公鑰PK0,接收方公鑰列表PKi,持續次數n,持續時間t
輸出:授權值A,狀態信息M
生成授權值算法(GenAuth):
根據參與方公鑰PK0、接收方公鑰列表PKi和一個隨機數r,計算哈希值x,x ← Hash(PK0|PKi|r)
拼接當前時間戳,生成授權值A,A ←(x|current_time)
返回授權值A
通信管理算法(LinkManage):
驗證授權值算法(verifyAuth):
對授權值進行驗證,若驗證通過返回ok,否則返回驗證失敗標志。
如果驗證通過(flg is ok):
將持續次數n減1,表示使用了一次通信次數。
如果n為0(通信次數已達上限)或者當前時間超過了持續時間t,返回false。
如果驗證不通過:
返回false。
1.1.4 消息接收算法
對公鏈中用戶接收消息Ie及EKi進行解密的算法描述[5]:
輸入:接收信息SK,接收信息索引Ie,接收方用戶列表EKi
輸出:消息明文M,消息附件A
數據接收算法(DataReceive):
利用接收方用戶私鑰SK和接收信息的用戶李彪EKi進行解密,獲取對稱密鑰K,K ← DecryptECC(SK, EK)
接收方使用對稱密鑰K索引Ie進行解密,獲取消息索引I,I ← DecryptAES(K, Ie)
通過接收方用戶自己的IPFS節點向網絡中的其他節點查詢資源所在的節點信息,獲取消息密文C,C ← getFromIPFS(I)
利用對稱密鑰K對消息密文C進行解密,獲取消息明文M和消息附件A,M|A ← DecryptAES(K, C)
返回消息明文M和消息附件A
以上是對機構托管到用戶的消息索引密文Ie及EKi進行解密的算法描述。用戶通過私鑰解密出對稱密鑰K,使用K解密消息索引密文Ie獲取消息索引I,查詢IPFS上的消息密文C,再使用K解密C獲取消息明文M和消息附件A。
為了實現鏈上隱私通信,防止數據關聯分析及泄露業務聯盟參與方的隱私行為,采用新型密碼學技術,利用區塊鏈的不可篡改性,實現鏈上通信消息的不可更改特性,并具備消息的隱私性?;赩RF零只是證明算法[6],保證了消息的安全性及可靠性,令消息傳遞者之間的關聯不被暴露,對發出方與接收方的隱私進行了最大限度的保護。這種設計保障了鏈上通信的隱私性及安全性,確保了參與方的隱私行為不被泄露,可驗證數據的完整性及真實性。這種隱私保護的鏈上通信方法可應用于各種場景,確保信息傳輸的安全性及隱私性。
系統架構如圖2所示:

圖2 鏈上電子公文系統流程Fig.2 Process of on-chain electronic document system
具體實現方案如下:
在現有的星鏈上通過區塊鏈的不可更改性進行消息加密傳輸,實現對公文索引的不可篡改存證。將公文內容進行加密,利用IPFS節點將公文密文保存在鏈下存儲中,保證公文內容的安全性[7]。將信息通過星鏈傳遞,保證數據的完整性及可溯源性。在進行公文傳輸時,接收方利用秘鑰對接收文件進行解密獲取信息,使用IPFS技術來降低網絡擁堵,減輕中心節點服務器的壓力,達到實時傳遞的效果。垃圾信息與無用文件可使用刪除功能進行刪除。系統還可提供公文操作記錄的可驗證性,以便審計及溯源。
由于采用了鏈下存儲與鏈上存證的方式,解決了區塊鏈信息存儲的難題,保證了系統的可擴展性及靈活性。
本系統采用四層架構,包括前端層、后端層、合約層及持久層。系統架構如圖3所示:

圖3 鏈上電子公文系統架構Fig.3 Architecture of on-chain electronic document system
前端層接收用戶輸入,根據用戶請求將操作傳遞給后端層,提供用戶界面及交互。合約層是智能合約的部署及執行區域,能拓展系統功能,負責存儲用戶之間的通信數據,確保數據的可靠性及安全性。持久層利用區塊鏈技術特性確保消息的安全性,其中區塊鏈網絡保存公文操作記錄,所有的信息都存儲在各個節點中,確保文件的安全存儲及高效傳輸。
通過以上架構,系統實現了良好的模塊分離及功能劃分,前端層提供用戶界面及交互,后端層處理用戶請求并調用相應功能,智能合約層實現鏈上操作的拓展,持久層保證數據的安全存儲及高效傳輸。整個系統能夠滿足電子公文安全隱私傳輸的需求。
根據圖4的測試結果顯示,本鏈上安全通信方案的消息預處理算法在用戶100、200、300及數據0~100kb數據上進行測試。

圖4 消息預處理算法處理性能Fig.4 Performance of message preprocessing algorithm
算法在處理數據時,執行時間隨著輸入數據塊的大小而線性增長,即時間復雜度為O(n)。在接收方用戶數量為100的情況下,處理1 MB數據的計算耗時約為20 ms,顯示出該算法的處理速度較快。每當測試數量增加100,算法額外需要約10 ms的執行時間。這是因為需要根據測試的公鑰來加密對稱密鑰,這一過程需要額外的時間,且這個時間與測試數量呈正相關。
本方案的算法執行時間隨數據塊大小與接收方用戶數量的增長而線性增加,每MB數據的處理耗時約為20 ms,相比于參考方案的60 ms,本方案的性能表現更優。
根據圖5,消息路由算法的執行性能如下所示:

圖5 消息路由算法執行性能Fig.5 Message routing algorithm execution performance
消息路由算法的執行時間與輸入數據的大小有著密切關系。這個算法的執行時間隨著輸入數據的增長而近似線性增長,表明算法的時間復雜度可能是O(n)。具體來說,消息發送算法在構造屬性策略并將其嵌入到密文中這一過程需要較長時間,可能是因為它需要額外的計算及加密步驟。因此每處理1 MB的數據,消息發送算法大約需要消耗10 ms的時間。盡管輸入數據量增加,但算法的執行時間也相應線性增加。消息中轉算法的執行時間大約是消息發送算法的一半。這意味著機構節點在接收發送方的中轉數據時性能開銷更少。雖然它的執行速度相對較快,但隨著輸入數據的增加,其執行時間也會相應地線性增加。
根據消息路由算法的執行時間發展趨勢可知,隨著輸入數據大小的增加,算法的執行時間呈現線性增長的趨勢。消息發送算法需要更多的時間來處理,而消息中轉算法則具有更快的執行速度。
根據圖6,消息接收算法的處理性能如下所示:

圖6 消息接收算法處理性Fig.6 Processing of message receiving algorithm
消息接收算法是接收方在接收到由機構節點傳輸的消息后,通過本地對加密信息進行解碼。實驗結果表明,當本地接收解碼10 MB的消息數據時,解碼時間約為25 ms,在實際的實驗中,因為網絡擁堵問題或數據量較大時,解碼時間可能會進一步加長。這種波動可能是由于網絡延遲導致的,需進行進一步的優化及改進,以提高算法的效率及穩定性。解密過程需要消耗一定的計算資源及時間,因此在實際應用中需考慮計算能力的限制及優化,以適應大規模數據處理場景。
根據圖6中的消息接收算法處理性能,可以得出結論:在解密消息密文方面,當接收方用戶解密10 MB大小的數據時,計算所需的時間約為25 ms。在處理較大數據時可能會出現性能波動,可采用負載均衡的方式來優化系統性能。
提出了一種基于智能合約的鏈上安全通信方案,通過引入IPFS分布式存儲技術及密文屬性加密算法,解決了區塊鏈應用對安全通信的技術需求。該方案可確保消息數據的完整性及安全分發,在離線狀態下保護用戶數據,并在上線時正確解密消息密文,通過鏈下分布式存儲及安全加密操作,實現高效性與安全性的平衡。