◆何宇豪 趙杰 李澤欣 張鴻 丁悅舟 胡春月
(福建江夏學院電子信息科學學院 福建 350108)
目前數字資產已逐漸成為社會生活中不可或缺的信息載體,例如,圖片、音視頻、文檔等。傳統的數字存證是依靠中心化管理系統來實現的,缺乏統一的接口。由于數字資產的易篡改性,很容易導致數據的丟失和泄露,而人們對于數字資產的保護意識薄弱,容易讓不法分子有機可乘,從而造成各種網絡安全事故。由此可見,急需一種新技術來確保當前數據存證的安全性,而這個新技術就是區塊鏈。
區塊鏈技術由比特幣(Bitcoin)發展而來的,是比特幣最核心的技術。2008年發表的論文《比特幣:一個P2P 電子現金系統》[1],讓人們知道了區塊鏈具有安全透明、去中心化、不可篡改和可追溯性等特點。雖然不是最完美的技術,但在各方面都優于傳統的存證技術,所以區塊鏈技術迅速發展并運用于電子貨幣、金融科技、醫療、互聯網等方面。而我國在2013年1月1日把電子證據納入法定證據之范疇,正式寫入《中華人民共和國民事訴訟法》中[2],大大提升了電子證據的地位,但是由于電子證據的缺乏,以及電子證據的數字易篡改性,使其難以運用在實際生活中,所以需要通過運用區塊鏈技術和密碼學原理的技術,來實現可自動檢驗輸入信息并尋找其中要保存的數字資產,以保證數字資產的保密性和安全性。
區塊鏈技術是由IPFS、密碼算法、共識算法、智能合約、P2P通信等技術組成的技術,其由多個節點組成,具有去中心、公開透明、不易修改等特點[3]。區塊鏈的結構有區塊頭和區塊體組成。區塊頭負責實現區塊的重要功能,包括了前一區塊的Hash 值、本區塊的Hash值、TimeStamp、Merkle Root 等內容;區塊體則是存放交易數據的地方,運用Merkle Root 算法對整棵樹進行簽名,鑒定數據的真假。
區塊鏈在不同的平臺可以劃分為公有鏈、聯盟鏈、私有鏈三種模型[4-5]。公有鏈(Public Blockchains)是指個體和企業都可以發送交易,且交易能得到區塊的確認,公有鏈的共識算法有PoS-PoW 混合(即PoA)、DPoS。聯盟鏈(Consortium Blockchain)由多個機構共同管理維護,只對聯盟內部成員開放全部或部分功能,其公開程度是介于公有鏈和私有鏈之間的,它的共識算法包括BFT 和Kafka。私有鏈(Private Blockchain)是與公有鏈相反的,其權限值在一個人或一個機構手里,信息是不公開的,它的共識算法包括RAFT 和Paxos,本文主要采用的是私有鏈。
數字資產是企業或個人具有的電子數據,以備出售或正在生產的非貨幣性資產。這種資產價格昂貴、數量大、依附性強、成本遞減、互動性強。政府工作報告在2015年增加了“互聯網+”的內容,數字化轉型成為越來越多企業的選擇。因為數字資產自身具有數字性和易篡改性等特點,所以有效保存數字資產顯得尤為重要。
社會發展進入了信息時代,計算機可以幫助人類儲存大量信息,同時進行大規模運算,由此產生了大量的數字資產。數字資產易變且脆弱,容易遭到破壞而使其失去價值,系統運用區塊鏈技術,探索數字經濟模式的創新之路,以獲得可靠的數字資產存證。
IPFS 是一種共享的、分布式的、長久的網絡傳輸協議,是分布式哈希表(DHT)、比特流(Bittorrent)和Git 版本控制系統的綜合繼承創新,是由Juan Benet 設計,為Protocol Labs 所擁有[6]。這是種內容尋址的對等超媒體分發協議,可緩解傳統信息過度負載的情況,使訪問分散到網絡的其他參與節點,減少對文件托管中心的依賴。IPFS 被稱為下一代Web 協議,因為如今的HTTP 協議受制于目標服務器,易出現服務中斷、數據丟失、數據篡改等現象,所以IPFS 是一種比較好的協議并可以用來解決以上問題。
(1)SM2
SM2 算法是橢圓曲線密碼算法,是非對稱密碼算法。其運行速度較快、密碼算法設計較為復雜、性能開銷較小。SM2 算法由我國自主設計,包括SM2-1 橢圓曲線數字簽名算法、SM2-2 橢圓曲線密鑰交換協議、SM2-3 橢圓曲線公鑰加密算法,本系統擬在數據加密中使用此算法保證安全性。
算法基本原理:
用戶A 擁有公鑰PB=[dB]G(僅有PB 值),用戶B 擁有私鑰dB;
加密:C1=k*G C2=M⊕(k*PB);
解密:M′=C2 ⊕(dB*C1);
證明:dB*C1=dB*k*G=k*(dB*G)=k*PB;
因此,M′=C2⊕(dB*C1)=M⊕(k*PB)⊕(k*PB)=M,得證。
(2)哈希算法
哈希算法(Hash)又稱散列算法,是一種與指紋類似,以較短信息為保證的唯一性方法。其原理是使用一個輸入有效的明文后,會得到一個與之相對應的、唯一確定的、固定長度的字符串[7]。Hash算法的特點是加密過程是單向的,輸出的密文不能反推出輸入明文,輸入的明文出現任何變化,輸出的結果就會大不相同[8-9]。Hash 算法在區塊鏈中最主要的作用是用來檢驗原始數據是否被篡改,通過將上一區塊的Hash 值發送保存到下一區塊的鏈式結構中,來保證當鏈條的任何一環斷開時,都能被及時發現。
(3)數字簽名
數字簽名,是唯有信源才能產生的一段數字串,讓其他人無法冒充信源,這是證明信息是否真實的重要手段。它運用了公鑰加密技術來實現,類似于寫在紙上的簽名。一套數字簽名通常有兩種密鑰,一個用于驗證,另一個用于簽名。數字簽名與非對稱密鑰加密技術以及數字摘要技術相結合,使用后文件具有完整性和抗否認性。
(4)默克爾樹
默克爾樹(Merkle Tree)也被稱作哈希樹。默克爾樹在區塊鏈中是一種特殊的二叉樹,其葉子節點上的值由Hash 值來表示,Hash 值是由數據塊經過Hash 算法運算得到的。Merkle 樹的防篡改能力很強,對于任意數據區塊上的原始內容,即使是一個很微小的改變都會導致最后結果不同[10]。因此可以利用Merkle 樹的唯一確定性來保障數據的安全性,同時可以在較短時間內對數據進行比對,快速確定與原始數據不同內容的位置[11]。
3.1.1 主要功能需求
系統為用戶提供了以下主要功能:
(1)主界面,包括加密、上鏈、授權、查詢、下載、比對以及文件內容提取等;
(2)將需要存證的文件上傳至系統,系統會返回一個hash 值,以備上鏈;
(3)通過授權的用戶可以查看被加密的文件信息;
(4)用戶不僅可以查看自己上傳的文件,還可以查看他人上傳的文件。
用戶注冊是用戶輸入用戶名和密碼,系統將信息存放至系統數據庫,使用戶獲得進入系統的權限。用戶登錄需提供唯一代表其身份的用戶標識符,如果用戶存在,則區塊鏈會自動識別用戶身份,密碼輸入正確后就可以使用系統提供的服務。
文件加密功能是指在原始文件上傳后,對其進行加密的過程,保證文件的安全性。沒有被授權的用戶,不可以訪問這個文件。
文件上鏈功能是文件進行哈希化最重要的一步,是提取上傳文件的關鍵信息,用SM2 算法加密內容,同時參與文件的Hash 值生成,并保存至IPFS 中。
文件授權功能是指可以給第三方對象授權訪問自身所擁有的文件,讓其擁有權限可以訪問、查看以及下載。
文件查詢功能是指用戶選擇文件查詢模塊,系統會直接查詢出文件的信息,用戶可以在查詢出的信息中選擇自己需要的內容。
文件下載功能是指用戶在文件查詢界面,可以選擇下載所要的文件,并得到原始文件。IPFS 文件生成哈希值的方式,并以哈希值的方式進行下載。
文件比對功能是指用戶文件比對模塊,能比對文件是否為用戶已存證文件,是否未經篡改。
文件內容提取功能是指用戶選擇文件內容提取模塊,選擇文件之后點擊提取,系統會截出關鍵信息,顯示在頁面中。可以讓用戶大致了解文件內容。
用戶在選擇用戶信息管理后,系統會要求用戶輸入原密碼、新密碼,并對密碼進行修改。
3.1.2 用例分析
用例圖描述了系統的功能以及交互對象,如圖1所示。其中,參與者是用戶,系統提供注冊模塊、登錄模塊、修改密碼、文件上鏈、文件查詢、文件比對、文件授權、文件內容提取等功能,供用戶使用。

圖1 用例圖
本系統的用戶子模塊主要是由注冊和登錄以及修改密碼組成。
用戶在使用本系統前需要進行注冊,獲得進入系統的權限,需要輸入用戶名、密碼,確認密碼等信息后才可以進行注冊,若信息無誤,且輸入的用戶名被未注冊,則注冊成功,即可進入登錄并使用系統。
已注冊的用戶即可進行登錄,用戶需輸入登錄信息,驗證通過即可進入系統,進行上傳文件、比對文件、查詢文件等操作。如果身份驗證出現錯誤,就回到登錄界面重新進行登錄。
如果需要修改密碼,可以在系統里進行修改,輸入舊密碼和新密碼,在確認密碼都正確后,則修改成功,如果舊密碼不對或者確認密碼與新密碼不符,則修改失敗。
本區塊鏈的可信數字資產存證系統是默認上傳的文件在讀取完文件信息后,生成相應的關鍵信息,運用SM2 加密算法來加密文件關鍵信息,生成密文,參與區塊鏈的hash 演算并作為數據保存下來。
文件加密的流程如下:
(1)用戶上傳文件,系統通過對文件的讀取,獲取到文件的關鍵信息;
(2)使用SM2 公開密鑰加密算法對獲取到的文件關鍵信息進行加密;
(3)將SM2 密文作為數據再參與區塊鏈的hash 值演算并作為數據保存下來。
(4)將文件上傳至IPFS 進行保存。
信息檢索是存證用戶在點擊查詢后,系統直接輸出用戶權限范圍內的文件信息,輸出的結果包括BlockID、Hash 值、PreviousHash、FilePath、TimeStamp 和Nonce 等信息,并且能夠對已存證的文件進行下載和比對。
文件授權是用戶允許授權對象訪問經過加密的文件內容,其他對象未經允許是不能夠訪問查看加密的文件內容,是文件管理的延伸,其主要是為了保障傳輸數據過程的安全性。
文件授權的流程如下:
(1)存證用戶輸入要授權的文件的BlockID;
(2)存證用戶輸入要授權的用戶的用戶名;
(3)被授權的用戶可以對文件進行對應的操作。
數字資產保全和管理模塊是本系統以及區塊鏈存證應用中較重要的一個模塊,該模塊主要是實現上傳文件的上鏈操作。數字資產保全中的保全對象是系統所提取的關鍵信息,其為經過SM2 加密得到的密文信息,并且把保全對象的密文信息保存到私人鏈上。
文件內容提取模塊主要是為了選擇需要進行內容提取的文件,由系統對這個文件按照某種規則進行分割,從而提取出關鍵信息以及文件的主要內容,并顯示在下方,方便用戶查看。
測試過程按照系統需求逐一測試檢查每個模塊的功能是否完整,流程是否正確,各個模塊的銜接能否正常跳轉。主要測試文件能否正常上鏈,文件能否正常查詢,文件能否正常比對等功能。測試情況如表1所示。

表1 測試表
數字資產其應用前景廣闊,但因受其數字化易篡改性特點,易受攻擊,且大多數人不知道如何去妥善保管自身的數字資產,而傳統的存證方式又存有眾多問題而難以解決。
本文使用區塊鏈的去中心化技術,探尋數字經濟模式創新,亟待提高傳統存證系統的安全性,實現一個可自動檢驗輸入信息,尋找要保存的數字資產,并實現基于區塊鏈的可信數字資產存證的系統。系統主要采用的是私有鏈模式和國產SM2 密碼算法來保存用戶所上傳的數據,總體上實現了系統設計的基本功能。
最后,對系統進行的模塊測試,無論是文件上鏈、文件下載、存證文件比對,還是存證文件授權、文件內容提取以及用戶功能等均能達到預期的效果。系統目前正逐步推廣應用于大學生畢業設計系統等相關領域,未來可進一步在文檔保密、金融數字證書以及其他相關信息安全領域發揮應有的作用。