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