鄭智健,鄭 清,杰林釩
(莆田市氣象局,福建 莆田 351100)
隨著大數據和云計算技術的流行,氣象信息化的發展也在不斷加速,氣象事業的發展得到進一步提升。其中,氣象部門與各行業之間的數據共享,使得氣象數據的應用早已融入到日常生活。可以說氣象數據是氣象部門的立業之基,也是國家安全重要元素,其安全與穩定關乎經濟社會的正常運行[1]。然而,中心式存儲極易導致數據被泄露或被篡改,且因具備融合的特性,在數據共享的過程中一旦出現問題,整個氣象業務體系必然遭受影響,進而影響氣象服務保障水平。
區塊鏈技術本質上是一種去中心化的分布式數據庫,具有可溯源、數據防篡改、唯一性等獨特優勢,能夠實現不可信節點之間的數據傳遞,預示其在數據共享和數據安全領域具有廣泛的應用前景[2]。Sim等人[3]設計并實現了一種基于區塊鏈的物聯網大數據完整性驗證系統,通過對來自物聯網設備的數據和簽名密鑰進行多個區塊鏈分組,最大限度地減少數據丟失。Kaaniche等人[4]提出基于區塊鏈的數據使用審計機制,依賴部署在區塊鏈基礎設施中的可審計合同,確保數據共享的可用性。上述研究雖然在一定程度上緩解了數據存儲的不足,但卻沒有考慮到數據隱私性和加密性問題。同時,有實驗研究表明,區塊鏈的匿名性是一種假名性[5],不足以完整地保護用戶數據信息。此外,區塊鏈上的數據無法進行修改與刪除,當有惡意的攻擊者將非法信息寫入鏈上,極易構成巨大危險,使區塊鏈的數據安全受到挑戰。
為此,研究者對區塊鏈中的數據加密保護能力進行深入探索。可搜索加密[6]是區塊鏈隱私保護技術之一,將其與區塊鏈技術結合在一起,解決了第三方可信問題,促進了數據之間協作共享。鑒于此,本文提出了一種基于可搜索加密的區塊鏈氣象數據保護方案,引入智能合約[7]作為可信方,既保證了方案的可信度,又提高了可搜索加密的可實現性。
可搜索加密是一種為了解決云存儲環境下加密數據檢索困難問題,實現用戶基于密文關鍵詞安全搜索的技術。傳統的明文搜索易被獲取到數據信息,而可搜索加密技術可以通過密鑰對加密數據的關鍵詞進行搜索,使得用戶無法通過關鍵詞獲取到明文數據。可搜索加密按照加、解密密鑰的不同,可以分成兩類:對稱可搜索加密和非對稱可搜索加密。對稱可搜索加密使用相同的私鑰密鑰進行加密和關鍵詞搜索,具有算法相對簡單、運算速度快的優勢。非對稱可搜索加密則是使用公鑰和私鑰兩種不同密鑰,通常公鑰的擁有者會對明文數據進行加密,私鑰的擁有者執行搜索算法進行關鍵詞檢索。雖然過程較為復雜,但是公鑰和私鑰相互分離的特點,對于實現區塊鏈數據共享具有較高的實用性。因此,本文采用非對稱可搜索加密技術。
1995年,學者尼克首次提出智能合約的概念,其認為智能合約的本質是一種能夠自動執行協議的計算機代碼。智能合約因具有圖靈完備的特性,加之缺乏可信執行環境,未曾受到研究學者的關注。直到新興區塊鏈平臺的出現,才將智能合約由概念逐步轉化為實際應用。由于區塊鏈自身具有可溯源、數據防篡改、唯一性等獨特優勢,避免了智能合約受到偽造和篡改,確保了整個過程的透明、高效、不受干預。同時,智能合約作為區塊鏈中的核心要素,當滿足一定的預定規則時,區塊鏈會自動觸發預設協議完成操作。此外,智能合約通過加密算法可以設置兩方或多方之間訪問權限的協議。雖然目前智能合約仍處在發展的初級階段,但是基于智能合約的應用提高了信息傳輸效率,降低了管理維護的成本,使得區塊鏈技術具有廣泛的應用前景。
可搜索加密的區塊鏈氣象數據保護方法是利用可搜索加密技術對氣象數據進行加密保護,并使用區塊鏈存儲加密后的數據,防止氣象數據泄露。因此,本文采取層次化結構設計了區塊鏈中的氣象數據保護模型。如圖1所示,該模型的基本框架劃分為3層:區塊鏈層、數據層和用戶層。

圖1 方案模型
2.1.1 區塊鏈層
區塊鏈層主要用于區塊鏈上氣象數據的寫入和讀取,以及氣象數據的共享交換。鏈上的智能合約在接收到用戶請求參數后,執行其業務邏輯,將氣象數據信息存入區塊鏈,并將需要記錄數據信息的哈希值存放在對應結構里,保證了不論發生任何變化,氣象數據都能被區塊鏈記錄保存。同時,引入可搜索加密對關鍵詞進行搜索,可以有效地提高用戶搜索速度,提升檢索效率。
2.1.2 數據層
數據層主要對氣象數據進行處理。首先利用可搜索加密算法對氣象數據進行加密,并構建安全索引,然后通過區塊鏈上的節點執行共識算法,最終形成塊數據上傳至數據庫存儲。
2.1.3 用戶層
用戶層主要進行氣象數據的查找與質控。當用戶查找氣象數據時,先通過可搜索加密算法生成密鑰,再發送給鏈上的共識節點提出查找請求,鏈上節點收到請求后執行密文數據查找,并返回解密后的明文數據。與此同時,用戶還可以進行哈希運算,查驗氣象數據是否被篡改。
2.2.1 步驟1:密鑰生成
系統初始化,設定一個安全參數為λ,生成公開參數p,其中包括2個n階G1和G2雙線性群。雙線性映射為G1×G1→G2,g是G1的生成元。選擇一個哈希函數:H:{0,1}*→G1。通過執行生成算法KeyGen,輸出公鑰pk和私鑰sk,分別用于氣象數據的加密和生成索引。
2.2.2 步驟2:密文加密
首先提取氣象數據中的關鍵詞W進行哈希運算,同時使用密鑰對明文文件加密,得到加密后的密文:Cw=Encrypt(pk,W),最后將密文上傳到區塊鏈數據庫進行存儲。
2.2.3 步驟3:陷門生成
用戶根據密鑰和需要檢索的關鍵詞W,使用私鑰計算生成特定關鍵詞陷門:Tw=Trapdoor(sk,W),上傳陷門到智能合約,并將信息打包傳送至區塊鏈里。
2.2.4 步驟4:檢索查找階段
用戶以陷門作為輸入提交查找請求,由區塊鏈鏈上的節點執行可搜索加密算法進行陷門匹配,若匹配成功則使用密鑰進行解密,獲取明文文件。
2.3.1 安全性
本文方案中,陷門和索引兩者都是隨機加密的。在沒有密鑰的情況下,用戶無法推測出關鍵詞的相關信息,可以有效地防止數據隱私泄露。此外,經過解密計算獲得的哈希值是不可逆和抗碰撞性的,通過密鑰將其與服務器中存儲的哈希值互相驗證,若數值一致,則表明數據未發生篡改,進一步保證了方案的安全性。
2.3.2 正確性
用戶與區塊鏈進行數據交互的時候,鏈上的智能合約狀態和內容是公開透明的,結合節點上的共識機制能夠保證檢索數據內容的可靠性和真實性。在執行方案時,智能合約按照事先預設的條件進行密鑰恢復以及搜索憑證的生成,確保了用戶檢索得到結果的正確性。
2.4.1 數據加密時間
關鍵詞個數與數據加密時間的關系如圖2所示。數據加密的時間開銷取決于索引的關鍵詞個數,數據加密時間隨著關鍵詞個數的增加呈線性增長。總體上該部分的時間開銷較小,這是因為每個索引的生成時間成本是固定的,并且只需要進行一次指數運算,節省了時間開銷。

圖2 數據加密時間
2.4.2 關鍵詞檢索時間
關鍵詞個數與檢索時間的關系如圖3所示。本文實驗先對數據庫中的關鍵詞進行查找檢索。可以看出當文檔個數是500的時候,用戶檢索關鍵詞的時間為4.66 s;當文檔個數是600的時候,檢索所需的時間為4.87 s;由圖可以更直觀地看出,檢索生成時間并不會隨著關鍵詞個數的大幅增加而劇烈變化。這是由于數據集中的文檔個數決定了查詢所需時間,而且查詢中的關鍵詞個數對查詢時間的影響很小。

圖3 關鍵詞檢索時間
2.4.3 陷門生成時間
關鍵詞個數與陷門生成時間的關系如圖4所示。在陷門的生成階段,隨著關鍵詞個數的逐漸增加,陷門生成的時間也隨之增加,二者呈現出線性增長的關系。當關鍵詞的個數增加到一定程度的時候,陷門生成所需時間僅略微增加,表明方案具有較高的生成效率。

圖4 陷門生成時間
本文結合區塊鏈技術和可搜索加密技術,提出并設計了基于可搜索加密的區塊鏈氣象數據保護方案。結果表明:利用智能合約作為可信方,有效地解決單一授權導致的第三方可信問題,保證了方案的可信度,又提高了可搜索加密的可實現性。同時,對關鍵詞搜索能夠在較短的時間內實現對加密數據結果查找,充分發揮出兩者相結合的優勢,保護了氣象數據的安全,為氣象決策和防災減災提供精準的氣象數據。此外,對安全性和性能的分析驗證了該方案具有較高的效率。