孟彩霞
鐵道警察學院 圖像與網絡偵查系,河南 鄭州 450053
區塊鏈技術與密碼算法是信息通信領域的重要研究方向,由于區塊鏈具有去中心化、不可篡改等特點,在電子數據取證方面有著獨特優勢[1]。在司法認證制度改革、利用計算機犯罪案件日益增多的背景下,利用區塊鏈技術實現電子數據取證有望得到更廣泛的應用。電子數據儲存于載體內,它是無形的,其內容具有關聯性,可以用作量刑證據。然而,電子數據在正常情況下無法直接閱讀,如果沒有可以查看電子數據的載體,就難以關聯出案件情況,提取電子數據的難度很高[2]。目前,國內對數據溯源的研究大多在理論層面和審查數據層面,國外對數據可追溯性的研究主要集中在可追溯性模型、可追溯性存儲、可追溯性應用以及可追溯性數據的安全性等方面[3]。何蒲等[4]提出將具有唯一標識的數據添加到區塊鏈中,解決現有數據溯源的難題,但并沒有實現最終方案。現在較為流行的數據溯源模型是OPM 和PROV 模型,這些模型可移植性強,可以在不同場景下實現數據溯源[1,4]。針對傳統電子數據存在集中存儲、易被修改等問題,使用PROV 數據溯源模型,利用區塊鏈去中心化的特點與電子數據取證相結合,研究區塊鏈監測和溯源取證的關鍵技術。
區塊鏈基于密碼學建立多方間的信任,區塊鏈的可信正是因為有密碼學技術作支持。在區塊鏈技術中涉及很多加密算法,包括哈希算法、對稱加密算法、非對稱加密算法等。哈希算法是一種常見的單向加密算法,其功能是提取數據的指紋信息作為數據內容的唯一標識符對數據進行校驗[5]。對稱加密技術是采用同一個混淆因子,然后使用混淆算法對輸入數據進行混淆,得到加密后的數據,之后采用相同的混淆因子進行逆運算,可以得到原始輸入值。非對稱密碼技術[6]是利用一對公鑰和私鑰對數據進行加密和解密。公鑰與私鑰一起出現,數據擁有者可以利用公鑰對數據進行加密,只有使用與公鑰相對應的私鑰才能成功解密。
在區塊鏈中,區塊不直接保存節點的交易信息,只保存交易的哈希值,如果有節點想要驗證某個交易是否合法,可以驗證區塊中存儲的哈希值,使區塊鏈具有防篡改的特性。時間戳是對文件創建、修改的時間進行記錄,能夠證明一份文件的存儲、創建、修改發生于哪個時間點[7]。在生成區塊的過程中形成時間戳并寫入區塊頭中,可以讓其他節點對交易進行驗證,實現整個區塊鏈的可信,保證區塊鏈數據的不可篡改和不可偽造。
在分布式系統中經常使用一種數據結構Merkle Tree(默克爾樹),這是一種哈希二叉樹,能校驗數據的完整性[8]。Merkle Tree 由一個根節點、若干子節點倒置組成,可用于驗證區塊鏈中存儲、處理數據的真實性和可靠性。在構造Merkle Tree 時,首先要計算寫入區塊鏈交易的哈希值,通常選用SHA-256 等哈希算法傳遞到根哈希值。將計算的交易哈希值進行兩兩組合,由此計算出上一層哈希值,然后不斷重復組合計算,直到算出根哈希值。這種結構使得產生的區塊頭部中只包含根哈希值,不需要把區塊下所有交易的哈希值寫入區塊中,提高了區塊鏈的效率。在樹上交易產生的任何變動,都會傳遞到根節點,根節點的哈希值驗證了底層所有數據的完整性和一致性。因此,一旦發現交易數據被篡改,沿著Merkle Tree 節點哈希值的傳遞,最多通過運行時間O(lgn)即可快速定位實際發生改變的數據。Merkle Tree能快速比對大量數據,快速定位篡改位置。
共識機制是區塊鏈的核心組成要素,定義了區塊鏈如何工作。目前常用的共識機制包括工作量證明、權益證明、委托權益證明等[9]。工作量證明(PoW共識機制)是指通過完成一定計算量工作來證明某個節點不是惡意節點,從而起到維護區塊鏈的作用。PoW 機制每次交易都能被快速驗證,系統承擔了大量的節點,導致用戶不能私自篡改交易記錄,從而自覺遵守規則。權益證明(PoS 共識機制)是指持有權益多者才有資格去證明,也就是賬本是由持幣最多者去記錄。與PoW 共識機制相比,PoS 的出塊速度更快,從根本上解決了大量運算帶來的資源耗費問題,并且PoS 共識機制還排除了利益無關者對賬本的干擾,使整個系統更加安全[10]。委托權益證明(DPoS 共識機制)是一種基于投票選舉的共識算法,每個持有權益者都可以為其信任的代理人投票,代理人負責驗證交易并為這些交易創建區塊,在完成職責的同時可以獲得一定收益。
一般情況下區塊鏈架構有六層,其架構模型如圖1 所示。區塊鏈中各個層都有不同的功能,任何一個區塊鏈都必須包含共識層、網絡層、數據層,而另外三層開發者可以根據需求進行開發,但區塊鏈的整個架構都依照這個結構進行開發。數據層負責封裝區塊,生成鏈結構;網絡層主要負責區塊鏈的P2P 網絡以及不同區塊鏈的傳播驗證機制;共識層則封裝節點之間的各類共識機制,保證數據進入區塊鏈后的一致性,防止惡意節點摧毀區塊鏈。

圖1 區塊鏈基礎架構
開放溯源模型OPM 是在首屆國際來源與注釋研討會上提出的[11],目的是提供可用來交換的溯源信息,該模型支持的范圍很廣,可以應用到任何需要數據溯源的地方。在這個模型中,溯源記錄是一個有方向但是不會形成環狀的圖形,代理、過程和工件是模型的節點。雖然OPM 可以應用于很多場景,但在實際操作中,實現OPM 的過程有一定難度,主要表現為一些專業術語和用法介紹得比較模糊,并且一些概念設計不恰當。
PROV 模型融合了國內外各個領域數據溯源描述模型的共性描述方法,具有較好的通用性和靈活性。PROV 模型中包含類型和關系兩個組件。類型是由實體、活動和代理構成:實體主要記錄溯源信息的數據描述;活動是作用在實體的某種操作,例如實體的產生、轉換或修改;代理是溯源所關注的實體質量及可信度等特性。關系是連接各個構件的紐帶,構件與構件之間需要通過關系產生關聯,PROV模型中通過引入上位構件和下位構件這兩個概念來描述構件的主客體關系。
本文選擇PROV 溯源模型,可以保證溯源數據一旦上傳到區塊鏈中就不能被修改,實現對數據的溯源,主要原因有兩點:一是PROV 溯源模型與OPM模型相同,適用于不同的場景,可移植性強,可以根據需求使用該模型;二是PROV 溯源模型具有較完善的參考文檔和開源代碼,對新手比較友好,方便使用與借鑒。
3.1.1 數據溯源模型構建
數據溯源模型的核心是保證數據在傳輸過程中不被篡改,要實現可靠的數據溯源,可信任的存儲方式十分關鍵,應確保存儲的數據不會發生任何問題以及數據校驗不會被惡意控制。基于區塊鏈監測的溯源取證技術主要是解決原始電子證據的中心化存儲、易被篡改等問題。本文采用PROV 數據溯源模型實現數據溯源,該模型不僅能讓溯源數據不被隨意篡改,保證數據可靠性,還能提供數據的校驗功能,讓各個節點向區塊鏈發送需要查詢的數據,并對數據進行驗證。這些功能主要通過輕節點和全節點來實現。從功能實現角度,該模型的功能模塊劃分如圖2 所示。根據上述功能模塊建立的溯源數據模型如圖3所示。

圖2 溯源模型功能模塊

圖3 溯源數據模型
在該數據模型中,所有節點對數據進行的增、刪、查、改都會記錄到區塊鏈中,而其他節點在對數據進行校驗時,可以向區塊鏈發送請求來驗證數據,從而形成溯源鏈,如圖4 所示。隨著區塊鏈的不斷擴展增長,數據在校驗后存儲到區塊鏈上,所有節點可以隨時校驗數據,驗證數據的完整性,便于溯源。
3.1.2 基于數據溯源的智能合約
智能合約是存儲在區塊鏈上的代碼,當區塊鏈發生交易時,就會觸發智能合約,合約對交易進行安全檢查,防止惡意節點的存在,智能合約為數據的傳輸和存儲提供了一種安全可靠的機制。開發人員編寫的代碼程序都是應用在合約層,通過將PROV 數據溯源模型搭建好的溯源鏈加入智能合約中,進而運行到區塊鏈上。本文將區塊鏈上數據的溯源操作通過智能合約的方式進行編碼,將其放入區塊鏈中進行編譯及部署應用,當溯源數據時會自動觸發智能合約的功能。
智能合約的構建和執行可分為三步:(1)區塊鏈的各個節點根據要求以及網絡自身的需求設定一份標準化、可信任的智能合約;(2)將智能合約部署到區塊鏈中,智能合約通過區塊鏈的P2P 網絡進行傳播;(3)區塊鏈中發生交易時,就會自動觸發部署好的智能合約,從而實現制定智能合約時的需求。由于智能合約的可編程性,它可以封裝區塊鏈各個節點用戶的復雜行為。所有操作都由區塊鏈底層內置的智能合約系統自動完成,減少了人為干預,實現了數字自動化管理。
3.2.1 模型設計
電子證據的不可篡改性包括數據的完整和保全,電子數據具有易篡改、可復制等性質,易被高技術犯罪分子篡改和偽造,難以成為量罪證據。電子證據若要成為量罪證據,須保證其可靠性。因此,需要在電子數據轉移或修改的每個環節制作輔助證據,證明其可靠性。區塊鏈技術通過對原始數據文件的哈希值在節點間的分布式記賬,結合密碼學技術,實現對原始電子證據的存證,降低了建立多方信任的成本[12]。據此構建了一種基于區塊鏈的溯源取證模型,如圖5所示。

圖5 基于區塊鏈的溯源取證模型
由于區塊鏈技術的自身限制,如果上傳的證據文件過大,可能導致無法有效將其存儲在區塊鏈中。因此,該模型將原始證據保存于數據庫中,僅在區塊鏈中存儲證據的哈希值。同時,對訪問者的身份進行限制,只允許那些經過授權的節點獲取證據。該模型具體操作主要步驟如下:(1)利用取證技術固定電子證據并記入時間戳以及地理位置等信息;(2)對固定下來的電子證據使用公鑰產生哈希摘要;(3)使用私鑰進行簽名;(4)利用共識機制選出記賬節點;(5)記賬節點對數據進行綜合排序;(6)記賬節點將排序后的數據打包到新區塊中;(7)記賬節點進行廣播;(8)代表節點對廣播區塊的數據進行正確性驗證,如果獲得多數認可,則將新區塊添加到主鏈上。
3.2.2 模型特點
基于區塊鏈的取證模型不需要一個中心化的機構進行統一管理,不僅節省了大量人力物力,還具有更好的安全性和防篡改性。與此同時,辦案人員不需要復雜的操作就能獲得數據,并且這份數據安全性極高。當電子數據上鏈后,還可以對其進行溯源,檢查證據的完整性。
通過搭建區塊鏈平臺實現對電子數據溯源與取證的模型測試,采用sherrlock 0535 開發的二手交易平臺的商品溯源智能合約來進行智能合約的二次編譯,部署至本地已經搭建的區塊鏈中,實現區塊鏈監測與溯源取證。上傳區塊鏈前,需要對已經固定好的電子證據進行預處理,固定其哈希值、時間戳等信息。使用Python 的os、sys 等模塊編寫數據預處理腳本,使用該腳本即可實現電子數據鏡像文件哈希值、時間戳等信息的自動計算。
3.3.1 區塊鏈搭建
采用Python 語言搭建區塊鏈,利用Python 語言的第三方庫,如hashlib、datetime 等,無需針對時間戳技術、哈希算法等內容進行編寫。區塊鏈平臺的代碼架構如圖6所示。

圖6 區塊鏈平臺的代碼架構
3.3.2 溯源與取證
將二次編譯的智能合約放入搭建好的區塊鏈網絡中,并將電子數據取證模型應用于區塊鏈中,實現區塊鏈監測與溯源取證。本系統前端利用Web界面進行展示,采用MONSTRA CMS 的前端界面進行二次開發,系統內的數據采用Merkle Tree 的形式進行存儲。固定好的電子數據通過文件上傳頁面進行上傳,實現對數據的預處理,如圖7所示。

圖7 文件上傳頁面
將數據上傳后可以瀏覽該文件的基本信息,結果如圖8所示。
文件上傳后,可以查看區塊鏈的詳情,發現新的區塊產生,并生成了哈希值,在對電子數據進行溯源與取證時,可以比對區塊鏈上的哈希值進行同一性認定,實現溯源與取證。區塊鏈詳情如圖9所示。

圖9 區塊鏈詳情
本文研究了基于區塊鏈技術的溯源與取證模型設計。首先,分析區塊鏈的核心架構,研究現有數據溯源與取證模型的特點,基于PROV 數據溯源模型進行優化與改進,設計了基于區塊鏈的數據溯源模型。之后,根據電子數據取證的流程,設計了結合區塊鏈技術的電子數據取證模型,最后進行了模型效果的驗證與測試。結果表明,所有的運行功能實現以前端Web 頁面的形式展示,可以比對區塊鏈上的哈希值進行同一性認定,實現溯源與取證,方便辦案人員使用。