李振汕
摘? 要: 為了保證電子證據(jù)鏈的完整性,提出采用區(qū)塊鏈和云存儲的混合架構(gòu),利用電子證據(jù)文件構(gòu)建默克爾樹,并與案件號、存證人員身份信息共同組成區(qū)塊體。以上一區(qū)塊的Hash值、區(qū)塊編號、區(qū)塊體默克爾樹根節(jié)點Hash值和存入時間戳組成區(qū)塊頭,將區(qū)塊頭和區(qū)塊體共同存儲到相應的區(qū)塊鏈中,最后通過二維碼實現(xiàn)對電子證據(jù)的檢索、查詢和驗證。保證了電子證據(jù)真實、可溯源、不可篡改,提高電子證據(jù)的可信度。
關(guān)鍵詞: 電子證據(jù); 區(qū)塊鏈; 完整性; 默克爾樹
中圖分類號:TN911,TP391? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2019)12-01-04
Research on the block-chain based method of electronic certificate deposit with integrity
Li Zhenshan
(Department of Information Engineering, Guangxi Police College, Nanning, Guangxi 530200, China)
Abstract: In order to ensure the integrity of the electronic evidence chain, a hybrid architecture of block-chain and cloud storage is proposed. The electronic evidence file is used to construct the Merkel tree, and to form the block body together with the case number and the identity information of the depositor. The Hash value of the previous block, the block number, the Hash value of the block body Merkel root node, and the time stamp of the block form the block header. The block header and the block body are collectively stored in the corresponding block-chain, and finally generate the two-dimensional code. The code implements the retrieval, query and verification of electronic evidence. It ensures that electronic evidence is truly traceable, cannot be falsified, and improves the credibility of electronic evidence.
Key words: electronic evidence; block-chain; integrity; Merkel tree
0 引言
隨著人們使用互聯(lián)網(wǎng)和信息消費的迅猛發(fā)展,電子數(shù)據(jù)越來越多地被當做證據(jù)使用。電子證據(jù)附著在數(shù)字媒體上,具有技術(shù)高、準確、形式多樣、易于傳輸和再現(xiàn)的特點。電子證據(jù)的這些優(yōu)勢使得其在證明案件事實方面發(fā)揮著越來越重要的作用。但是,相比較于傳統(tǒng)證據(jù),電子證據(jù)也有很多缺點,比如易于受誤操作、硬件故障等因素的影響,很容易被破壞和篡改,這大大限制了電子證據(jù)的可信性[1]。
在電子取證領域,許多網(wǎng)絡類型的刑事案件涉及到多個電子證據(jù)文件,這些文件之間具有一定的關(guān)聯(lián),它們之間的內(nèi)容相互印證,共同構(gòu)成某一案件完整的證據(jù)鏈條,用于證明某一案件的真實性。電子證據(jù)鏈的完整性是衡量證據(jù)鏈證明力的重要屬性指標。然而,電子證據(jù)鏈的完整性涉及證據(jù)提取、證據(jù)固定、證據(jù)驗證等多個步驟,這是一個復雜的技術(shù)過程。在實踐中,可以保障電子證據(jù)完整性的手段還比較單一。
鑒于現(xiàn)有技術(shù)中的不足,本文提出了一種基于完整性的區(qū)塊鏈存證方法,可有效地解決電子證據(jù)鏈的完整性驗證問題。
1 相關(guān)背景知識
區(qū)塊鏈技術(shù)是由非對稱加密、分布式數(shù)據(jù)存儲、加密算法、哈希、默克爾樹(Merkel)和點對點傳輸組成。區(qū)塊鏈技術(shù)通過可靠的數(shù)字加密算法和分布式節(jié)點驗證和共識機制,解決了分散系統(tǒng)中節(jié)點間有效信息保護和信任建立的問題[2],從而在公開透明的基礎上完成信息的傳輸和價值的轉(zhuǎn)移,實現(xiàn)當前網(wǎng)絡架構(gòu)的重大轉(zhuǎn)變。
區(qū)塊鏈借由密碼學串接并保護內(nèi)容的串連記錄。其存儲以區(qū)塊為單位,每個區(qū)塊由區(qū)塊頭和區(qū)塊體組成,存儲的內(nèi)容除默克爾樹外,還包含了前一個區(qū)塊內(nèi)容的哈希值,它等同于前一個邏輯區(qū)塊的邏輯指針。同理,本區(qū)塊的哈希值也會被保存在下一個新區(qū)塊的內(nèi)容中[3]。這是一種前向背書的過程,即新區(qū)塊的產(chǎn)生進一步強化鎖定了所有舊區(qū)塊的內(nèi)容。這樣通過密碼學驗證的方式構(gòu)建了保證時序的、不可偽造、不可篡改、不可撤銷的鏈條。因此,區(qū)塊鏈具有分布、開放、匿名、自治、協(xié)同和透明的特點,從而保證了鏈中信息的正確時序,具有不可偽造、不可篡改、不可刪除的有點。
Merkel樹是區(qū)塊鏈的重要數(shù)據(jù)結(jié)構(gòu)。它具有兩大特性:一是任意一個葉子節(jié)點的細微變動,都會導致默克爾樹根節(jié)點發(fā)生翻天覆地的變化,這可以用來判斷兩個不同時間或地點獲取的數(shù)據(jù)是否完全一致;二是快速定位修改,如果一個節(jié)點被修改,就會向上影響到相鄰的節(jié)點直至默克爾樹根,沿著這條路徑便可以快速定位被篡改的節(jié)點。
然而,現(xiàn)有的使用區(qū)塊鏈保存證據(jù)的技術(shù)往往認為由某個可信組織申請存入?yún)^(qū)塊鏈的數(shù)據(jù)即為真實的證據(jù),忽略了對電子證據(jù)完整性的檢查,因此,存儲在區(qū)塊鏈中的數(shù)據(jù)并不一定是完整的真實證據(jù)信息。比如負責證據(jù)入鏈請求的節(jié)點被黑客控制,黑客完全可以將自己偽造的信息保存入?yún)^(qū)塊鏈中,而使其他各方都認為這是真實的電子證據(jù)。因此,急需解決現(xiàn)有電子證據(jù)存儲方法存在的問題。
2 基于完整性的區(qū)塊鏈電子存證方法
2.1 存證方法的實現(xiàn)流程
為了保證電子證據(jù)鏈的完整性,確保電子證據(jù)的可追溯性,同時提高電子證據(jù)保存的安全性,有效降低保存成本。本文采用區(qū)塊鏈技術(shù),引入時間戳服務,將同一個案件的多個電子證據(jù)記錄形成證據(jù)鏈存入?yún)^(qū)塊鏈,通過證據(jù)數(shù)據(jù)鏈完整性驗證和區(qū)塊鏈完整性驗證,排除了整個電子證據(jù)鏈被篡改或銷毀的可能性,確保了證據(jù)鏈的完整性。其實現(xiàn)方法的流程如圖1所示。
如圖1所示,基于完整性的區(qū)塊鏈電子存證方法具體步驟[4]為:
⑴ 區(qū)塊鏈系統(tǒng)對存證人員進行身份認證,身份認證通過后,存證人員方可使用區(qū)塊鏈系統(tǒng)進行存證,否則,系統(tǒng)返回錯誤信息,存證操作失敗;
⑵ 以案件號為關(guān)鍵字,將具有相同案件號的多個相關(guān)聯(lián)的電子證據(jù)文件組合成電子證據(jù)集;
⑶ 處理電子證據(jù)集,一方面,加密電子證據(jù)集以獲得密文,然后將存證人員身份信息、存入時間戳、案件號和密文一起存儲到云端存儲器,并返回本次存儲的云存儲位置信息,另一方面,利用電子證據(jù)集中的電子證據(jù)文件構(gòu)造Merkel樹,再將案件號、存證人員身份信息和生成的默克爾樹共同組成區(qū)塊體;
⑷ 將上一區(qū)塊的Hash值、區(qū)塊編號、區(qū)塊體默克爾樹根節(jié)點Hash值和存入時間戳共同組成區(qū)塊頭,如果沒有上一區(qū)塊,則其Hash值全為零;
⑸ 將上述所生成的區(qū)塊頭和區(qū)塊體組成區(qū)塊,并將區(qū)塊存儲到相應的區(qū)塊鏈中,返回本次存儲的區(qū)塊鏈存儲位置信息;
⑹ 生成二維碼,二維碼中的信息包括存證人員身份信息、案件號、本次存儲的云存儲位置信息和區(qū)塊鏈存儲位置信息,便于用戶進行電子證據(jù)的查詢、驗證和提取。
2.2 存證方法的實現(xiàn)結(jié)構(gòu)
為了實現(xiàn)上述的存證方法,本文設計了基于完整性的區(qū)塊鏈電子存證系統(tǒng),其體系結(jié)構(gòu)如圖2所示。整個系統(tǒng)包括身份管理模塊、存證數(shù)據(jù)歸集模塊、區(qū)塊體生成模塊、區(qū)塊頭生成模塊、區(qū)塊生成模塊、區(qū)塊鏈模塊和云存儲模塊。在身份管理模塊對存證人員進行身份認證后就可以進行存證,首先由存證數(shù)據(jù)歸集模塊按案件號將多個相關(guān)的電子證據(jù)文件組合成電子證據(jù)集,與存證人員的身份信息、案件號和存入時間戳歸集在一起,共同組成存證數(shù)據(jù)集,再將存證數(shù)據(jù)集送到區(qū)塊體生成模塊和區(qū)塊頭生成模塊分別生成區(qū)塊頭和區(qū)塊體,然后將區(qū)塊頭和區(qū)塊體交由區(qū)塊生成模塊進行組合,共同組成一個完整的區(qū)塊,最后將區(qū)塊送往區(qū)塊鏈模塊進行存儲。同時,觸發(fā)區(qū)塊鏈系統(tǒng)中包含二維碼生成程序的智能合約,生成二維碼,用于后續(xù)查詢和驗證電子證據(jù)。
2.3 區(qū)塊的構(gòu)造
2.3.1 區(qū)塊的結(jié)構(gòu)
區(qū)塊的構(gòu)造既是本方法實現(xiàn)的重點,也是難點。一個結(jié)構(gòu)合理的區(qū)塊既可保證存儲信息的完整性,也可提高系統(tǒng)的存儲效益和信息的讀寫效率,便于查詢。區(qū)塊由區(qū)塊頭和區(qū)塊體兩部分組成,對于不同的系統(tǒng),針對不同的應用目的,區(qū)塊頭和區(qū)塊體的結(jié)構(gòu)及其內(nèi)容可以不同,基于證據(jù)鏈完整性的考慮,本文采用了如圖3所示的區(qū)塊結(jié)構(gòu)。
2.3.2 區(qū)塊體的生成
如圖3所示,區(qū)塊體包括案件號、存證人員的身份信息和默克爾樹等信息。默克爾樹是利用電子證據(jù)鏈中的電子證據(jù)文件構(gòu)建的。其生成過程[4]如圖4所示。
如圖4所示,使用電子證據(jù)鏈中的電子證據(jù)文件構(gòu)建Merkel樹的具體步驟如下:
⑴ 按取證時間將具有相同案件號的多個電子證據(jù)文件進行排序;
⑵ 散列每個電子證據(jù)文件,其散列值是樹的葉子節(jié)點。如果電子證據(jù)文件的數(shù)量是奇數(shù),則復制最后的散列值以形成偶數(shù)個葉子節(jié)點。如圖4中的葉子節(jié)點Hash(0-6)和Hash(0-7)相同,兩者均為電子證據(jù)文件e17的散列值;
⑶ 連接兩個相鄰的散列值,然后對它們進行哈希處理以生成上層父節(jié)點;
⑷ 重復步驟⑴和⑶,直到生成根節(jié)點。
如圖4所示,具有案件編號“1”的電子證據(jù)鏈包含7個電子證據(jù)文件,并且根據(jù)上述過程生成Merkel樹。在該Merkel樹中,由于葉子節(jié)點是電子證據(jù)文件的散列值,因此中間節(jié)點是其兩個子節(jié)點的散列值,根節(jié)點也是兩個中間節(jié)點的散列值,因此對底層數(shù)據(jù)的任更改都將傳遞給父節(jié)點,一直到根節(jié)點[5]。
2.3.3? 區(qū)塊頭的生成
從圖4中可以看出,區(qū)塊頭由上一區(qū)塊的Hash值、區(qū)塊編號、區(qū)塊體默克爾樹根節(jié)點Hash值、存入時間戳組成,如果沒有上一區(qū)塊,則其Hash值全為零。
2.4 完整性驗證
驗證人員通過掃描二維碼查看信息并驗證身份;身份認證通過后,驗證人員就可以開始驗證操作,本文的完整性驗證包括默克爾樹完整性驗證和區(qū)塊鏈完整性驗證。
2.4.1 默克爾樹完整性驗證
驗證人員通過掃描二維碼獲得相應案件號的電子證據(jù)在云存儲中的位置信息,并根據(jù)該位置信息在云端存儲器中查找并獲取相應的電子證據(jù)密文,解密后得到相應的電子證據(jù)集,然后根據(jù)上圖4中的方法生成新的Merkel樹,將其與區(qū)塊鏈上的Merkel樹進行比較,其具體步驟為:
⑴ 比對根節(jié)點,若根節(jié)點相同,說明默克爾樹完整,從而表明電子證據(jù)鏈滿足完整性要求,驗證結(jié)束,否則電子證據(jù)鏈不完整,繼續(xù)執(zhí)行步驟2;
⑵ 比對兩個子節(jié)點,并檢索哈希值不一致的子節(jié)點;
⑶ 重復步驟2,直到比對至葉子節(jié)點;
⑷ 確定與不一致葉子節(jié)點對應的電子證據(jù)文件,表明該電子證據(jù)文件已被篡改。
2.4.2 區(qū)塊鏈完整性驗證
驗證人員通過掃描二維碼獲取相應案件號的電子證據(jù)在區(qū)塊鏈中的存儲位置信息,根據(jù)案件號檢索相對應的區(qū)塊,從該區(qū)塊的區(qū)塊頭中獲得該區(qū)塊的區(qū)塊編號,從而可以確定上一區(qū)塊的區(qū)塊編號,根據(jù)該區(qū)塊編號就可以定位檢索到上一區(qū)塊,由此計算得到上一區(qū)塊的Hash值。采用相同的辦法就可以計算得到下一區(qū)塊的Hash值,通過比較上一區(qū)塊Hash值與該區(qū)塊頭中存儲上一區(qū)塊的Hash值,比較該區(qū)塊Hash值與下一區(qū)塊的區(qū)塊頭中存儲的上一區(qū)塊Hash值,當兩者均相同時,表明區(qū)塊鏈是完整的,從而證明相關(guān)的電子證據(jù)也是完整的[6]。
3 結(jié)論
電子數(shù)據(jù)是現(xiàn)代高科技的產(chǎn)物,具有易創(chuàng)建、易存儲、易傳輸和高利用率等特點,可靠性高、證明力強。電子數(shù)據(jù)存證不僅要保障數(shù)據(jù)的可信性和完整性,還要便于存儲、共享、驗證和分享。借助于區(qū)塊鏈技術(shù),本文提出采用區(qū)塊鏈和云存儲的混合架構(gòu)保存電子證據(jù),通過使用時間戳,為電子證據(jù)提供原始的唯一時間證據(jù),并確保電子證據(jù)真正可追溯,不會被篡改;在存證端對電子證據(jù)加密后再保存,不僅可以確保傳輸過程中電子證據(jù)的安全性,有效避免隱私證據(jù)泄露的風險,而且這種全過程密文傳輸和存儲方法不需要訪問控制網(wǎng)關(guān),適用性高,降低控制網(wǎng)關(guān)被入侵的風險,還可在客戶端實現(xiàn)高速數(shù)據(jù)處理;使用Merkel樹存儲電子證據(jù)文件,便于驗證電子證據(jù)鏈的完整性,同時提高電子證據(jù)保存的安全性,并有效降低保存成本;采用二維碼技術(shù),便于客戶端檢索、查詢和驗證相關(guān)的電子證據(jù),提高方法的可用性。隨著區(qū)塊鏈技術(shù)的發(fā)展和應用的深入,目前的電子存證將顯現(xiàn)其不足,諸如存證過程自動化程度不高、存證過程中電子數(shù)據(jù)風險較大、第三方機構(gòu)法律處理流程繁瑣等問題,這些問題需要進一步解決。
參考文獻(References):
[1] 趙志巖,石文昌.基于證據(jù)鏈的電子證據(jù)可信性分析[J].計算機科學,2016.7:131-135
[2] 劉敖迪,杜學繪,王娜,等. 區(qū)塊鏈技術(shù)及其在信息安全領域的研究進展[J].軟件學報,2018.7:2092-2115
[3] 翟晨曦,徐偉,徐坤,等.區(qū)塊鏈在我國證券市場的應用與監(jiān)管研究[J].金融監(jiān)管研究,2018.7:33-54
[4] 梁庚,李玉成,左春,等.基于默克爾樹的電子證據(jù)鏈完整性驗證方法[P].中國:CN 108897760A,2018.11.27.
[5] 翁曉康,張平,王煒,等.基于非平衡哈希樹的平臺完整性遠程驗證機制[J].計算機應用,2014.2:433-437
[6] 楊志剛,熊瑜,陳蕾,等.一種消息發(fā)布、校驗方法及系統(tǒng)[P].中國:CN 109462470A,2019.03.12.