黃敏
(四川托普信息技術職業學院,四川 成都 611743)
船舶是我國海上或河流貨物運輸、渡海渡河的交通工具,然而保證所有船舶的安全航行,船舶信息的安全訪問是首要任務。本文針對目前區塊鏈中船舶信息訪問用戶的身份隱私和船舶信息存取隱私的需求,設計了一套從身份識別和訪問控制兩個方面基于區塊鏈中的聯盟鏈隱私保護方案。在用戶身份隱私方面,該方案實現了用戶在網絡中匿名,實現船舶信息存取和用戶的不可關聯性;通過驗證,本方案實現了對船舶信息的安全訪問控制,最大程度防止了非法用戶截取或篡改船舶的機密信息,保證了船舶信息安全,為船舶安全航行奠定了基礎,對船舶信息的安全訪問研究具有重要意義。以下就現有的聯盟鏈進行優化,以提高船舶信息訪問的安全性、以及對船舶信息進行有效訪問控制。
通過分析發現,現有Fabric中二級證書機制存在以下兩個問題:一是生成TcertPub_Key公匙時的密鑰派生算法較復雜。二是現有可追溯的方式存在一定的問題。監管者或者是用戶需要通過一種安全的方式獲取加密密鑰pre-k,所以這會增加方案的復雜性。為了解決現有方案中存在的問題,提出了如下優化方案。
此改進方案從TcertPub_Key公匙的生成過程著手,采用優化后的復雜密鑰派生算法。此改進過程不僅提高了密鑰派生算法的效率,而且減少了Tcert證書的存儲空間,降低了數據庫密鑰存儲的壓力。
改進的Tcert包括三部分:Tcert的私匙TcertPriv_Key、Tcert的公匙TcertPub_Key和extension的生成。改進后的Tcert結構如下:1.TcertID:Tcert的ID;2.DerivationID:認證上事務的派生 ID;3.EncDerivationID:派生ID的密文;4.TcertPub_Key:Tcert的公匙;5.Extension:證書擴展域;6.ValidityPeriod:證書的有效期。
改進后的交易證書同樣是標準的X509證書,與原方案不同的是在改進的方案中交易證書Tcert的擴展域部分不需要存儲TcertIndex加密之后的密文,同時也不需要存儲EnrollmentID的密文信息,但是需要存儲Tcert的派生ID(DerivationID)的密文信息EncDerivationID[1]。
改進后Tcert的生成過程,包含三部分:證書公鑰(TcertPub_Key)的生成和私鑰(TcertPriv_Key)的生成以及證書擴展域(Extension)的生成。
首先是證書公鑰的生成,在接收到用戶的請求后生成TcertPub_Key的步驟如下:1.TCA生成隨機數nonce;2.TCA計算派生IDDerivationID=Hash(nonce);3.TCA利 用DerivationID和 注 冊 證書公鑰EnrollPub_Key生成簽名公鑰TcertPub_Key=EnrollPub_Key+DerivationID*G。
與此同時,利用加密密鑰EncryptKey對DerivationID進行加密,并將密文存儲在證書的擴展域部分,拓展域的生成步驟如下:1.TCA生成自己的根密鑰TCA_KDF_Key,并利用所要生成的交易證書Tcert中的序列號TcertID產生派生密鑰KeyDF_Key;2.TCA生成加密DerivationID的加密密鑰EncryptKey;3.TCA計算密文enDerivationID;4.將密文存儲在證書的擴展域extension部分。
將批量生成的交易證書Tcerts以及派生密鑰KeyDF_Key通過安全信道發送給用戶,用戶用以恢復出簽名私鑰及發起交易。
最后是改進后Tcert私鑰的生成。用戶在接收到傳送過來的Tcerts證書以及KeyDF_Key后生成Tcerts證書對應的簽名私鑰。
改進之后的方案優化了生成公鑰TcertPub_Key過程中的密鑰派生算法以及證書擴展域extension部分,而且能夠實現了前臺匿名后臺可追溯的需求,優化了Tcert生成過程中的密鑰派生算法,降低了數據庫密鑰存儲的壓力。
聯盟鏈提供了節點的準入機制,很大程度限制了惡意節點,使區塊鏈網絡更加安全,但是聯盟鏈中所有節點依然共享同一賬本,因此提出對聯盟鏈網絡進行粒度更小的劃分,使其隱私性更高[2]的方案。
賬本可以理解為一串經過加密的區塊的鏈條,每一個區塊包含著transactions和當前world state等信息。區塊中除了包含常規信息,還包含一些交易數據相關信息,這些信息可以被同一通道中所有成員節點獲取,這些信息雖然不能明確的表示交易內容,但是有鏈碼執行能力的節點可以根據己知的信息運行相應的鏈碼得出交易輸出結果,結合讀寫集合推測交易內容。本論文設計了一種基于賬本內容的訪問控制策略。下面介紹了改造后Fabric網絡的交易流程,該步驟如下所示:
1.利用支持SDK的應用程序生成對稱密鑰Key,并加密交易提案。2.應用程序將交易提案打包為適當的架構格式,并使用用戶私鑰簽名生成交易提案。3.應用程序將交易提案發送給預置的背書節點。4.背書節點處理交易提案,使用對稱密鑰Key解密輸入數據。5.背書節點模擬執行交易,產生讀寫集。6.背書節點發送背書結果。7.應用程序驗證背書策略。8.應用程序SDK將交易提案和響應廣播到到排序服務。9.排序服務將交易按時間順序排序,并打包成塊。改造后的區塊整體結構根本沒有改變,因此改造方案可適應原方案的數據結構和接口。最后由于賬本數據保存在PC的文件系統中,為了避免文件數據被惡意攻擊或竊取,可在文件系統層次上對賬本數據進行加密。
船舶信息的安全訪問與存儲直接關系著船舶航行方向的正確與船舶自身的安全,控制船舶信息被非法人員竊取和篡改、可有效防止船舶在航行中失去原有的航行方向,在航行過程中直接關系到船上人員、貨物的安全。本文對fabric平臺優化了交易證書Tcert的表結構以及Tcert證書生成過程中的密鑰派生算法;最后經過實驗證明提出的優化方案明顯大大降低了非法人員的非法訪問,為船舶的安全航行奠定了基礎。