◆王升 范思宇 杜玉潔 李浩維 郭元禎 張良
基于區(qū)塊鏈技術(shù)的文檔防篡改系統(tǒng)
◆王升 范思宇 杜玉潔 李浩維 郭元禎 張良指導(dǎo)老師
(北京信息科技大學(xué)計(jì)算機(jī)學(xué)院 北京 100101)
就目前而言,電子文檔存在著依賴第三方的公信力與文檔可能被篡改等問題。在本系統(tǒng)中利用區(qū)塊鏈技術(shù)輔以IPFS分布式存儲(chǔ)技術(shù),保證了電子文檔在上傳、存儲(chǔ)、查驗(yàn)時(shí)無須依賴于第三方的公信力,實(shí)現(xiàn)文檔存儲(chǔ)于IPFS并轉(zhuǎn)換成哈希值,將哈希值上傳到以太坊后完成可溯源以及防篡改。
區(qū)塊鏈;文檔;防篡改;系統(tǒng)
紙質(zhì)文檔不易帶、不易隨時(shí)查看等缺點(diǎn)正逐步顯現(xiàn),電子文檔代替紙質(zhì)文件已成必然。而電子文檔由于極度依賴第三方的認(rèn)證才能保證具有公信力,在電子文檔傳遞到認(rèn)證機(jī)構(gòu)上時(shí)難免出現(xiàn)泄密、遭到篡改與不公開等問題。區(qū)塊鏈本身具有的去中心化、不可篡改與透明等特點(diǎn)可以幫我們解決這個(gè)問題。使用區(qū)塊鏈技術(shù)輔以分布式存儲(chǔ)系統(tǒng),可以先讓處于區(qū)塊鏈中的節(jié)點(diǎn)簽署智能合約,然后節(jié)點(diǎn)上傳的文檔經(jīng)過計(jì)算,將其哈希值上傳到以太坊上保存。又因?yàn)槲募鎯?chǔ)在以太坊中極其昂貴,所以我們使用IPFS存儲(chǔ)我們的文件,其本身分布式存儲(chǔ)、去中心,高效便宜的特點(diǎn)大大提高了我們存儲(chǔ)下載文件的效率。當(dāng)文檔被篡改,那么其轉(zhuǎn)碼后哈希值就會(huì)發(fā)生很大的變化。因而只要在鏈上的文檔的哈希值得不到驗(yàn)證,就可以發(fā)現(xiàn)文檔被篡改。這樣既保證了文檔的不可篡改又解決了依賴第三方認(rèn)證的問題。
區(qū)塊鏈包括三個(gè)基本概念:(1)交易(2)區(qū)塊(3)鏈。交易表示一次對(duì)賬本的操作,區(qū)塊表示一段時(shí)間內(nèi)節(jié)點(diǎn)對(duì)賬本狀態(tài)的共識(shí),鏈表示由區(qū)塊發(fā)生順序串聯(lián)而成,是整個(gè)賬本狀態(tài)變換的記錄。區(qū)塊鏈結(jié)構(gòu)見圖1。

圖1 區(qū)塊鏈結(jié)構(gòu)
以太坊Ethereum項(xiàng)目是在區(qū)塊鏈領(lǐng)域中相當(dāng)出名的開源項(xiàng)目。作為公有區(qū)塊鏈平臺(tái),以太坊將Bitcoin針對(duì)數(shù)字貨幣交易的功能進(jìn)行了拓展,加強(qiáng)了面對(duì)更為復(fù)雜和靈活的應(yīng)用場景時(shí)的能力。在以太坊平臺(tái)中開發(fā)了兩個(gè)類型的網(wǎng)絡(luò),分別是TestNet測試網(wǎng)絡(luò)與生產(chǎn)環(huán)境網(wǎng)絡(luò)。對(duì)于開發(fā)而言,我們還可以使用私有網(wǎng)絡(luò),在私有網(wǎng)絡(luò)中我們可以根據(jù)需求任意的創(chuàng)建和銷毀,從而使智能合約在開發(fā)過程中更加方便。并且我們可以利用本地版以太坊私有鏈Ganache進(jìn)行開發(fā),會(huì)大大節(jié)約開發(fā)時(shí)間。
以太坊中的智能合約是發(fā)布在區(qū)塊鏈上的一種可運(yùn)行的程序代碼,它可以實(shí)現(xiàn)某種特定的情則。以太坊的賬戶與合約如圖2。

圖2 賬戶與合約
對(duì)于以太坊而言,開發(fā)者可以在以太坊上開發(fā)屬于自己的智能合約。以太坊的賬戶可以分為兩種,一種存有智能合約的賬戶叫合約賬戶。相應(yīng)地,由密鑰控制的賬戶稱為外部賬戶。要運(yùn)行一次智能合約,應(yīng)由外部賬戶對(duì)合約賬戶發(fā)起一次交易,從而啟動(dòng)合約賬戶中的代碼。
在本系統(tǒng)中智能合約利用solidity語言編寫,并在以太坊智能合約在線編譯網(wǎng)站Remix上完成編寫與編譯。
IPFS是全稱為Inter Planetary File System,即星際文件系統(tǒng),是一個(gè)點(diǎn)對(duì)點(diǎn)的分布式文件存儲(chǔ)和分享的協(xié)議。IPFS基于內(nèi)容尋址,將信息保存到IPFS節(jié)點(diǎn)中,IPFS系統(tǒng)將返回該信息的唯一哈希值,哈希值與信息內(nèi)容一一對(duì)應(yīng),即使改變了一比特也會(huì)得到完全不同的哈希值。當(dāng)IPFS被請(qǐng)求一個(gè)哈希時(shí),它會(huì)找到該文件的節(jié)點(diǎn)取回文件。并且當(dāng)其他用戶上傳相同的文件時(shí),會(huì)因?yàn)榫哂邢嗤墓V刀蟼魇。@樣便可以大大節(jié)約存儲(chǔ)空間。而IPFSDesktop是一個(gè)由IPFS官方孵化出來的應(yīng)用項(xiàng)目,可以幫我們自動(dòng)創(chuàng)建本地web服務(wù)。
為了實(shí)現(xiàn)文檔的防篡改、透明、可追溯等功能,采用區(qū)塊鏈技術(shù)與IPFS分布式存儲(chǔ)相結(jié)合來完成本系統(tǒng)。該系統(tǒng)將文檔首先上傳到IPFS中,之后IPFS返回一個(gè)哈希值,再將哈希值存儲(chǔ)到以太坊區(qū)塊鏈中,區(qū)塊鏈執(zhí)行完智能合約后將執(zhí)行結(jié)果打包成區(qū)塊。在前端界面,通過文件命名和區(qū)塊高度對(duì)存儲(chǔ)到哈希值進(jìn)行描述和編號(hào)排序。每當(dāng)用戶希望查看文件是否遭到篡改或驗(yàn)證時(shí),可以通過將hash放到IPFS中進(jìn)行文件查閱。架構(gòu)設(shè)計(jì)如圖3,進(jìn)行流程如圖4。

圖3 架構(gòu)設(shè)計(jì)

圖4 流程
Truffle是一套基于以太坊技術(shù)的開發(fā)框架,通過truffle init命令便可進(jìn)行初始化。主要目錄為contract和migrations,它們分別用來存放智能合約代碼和發(fā)布腳本文件,前端界面存放于src目錄。
在智能合約Election.sol中設(shè)計(jì)了一個(gè)結(jié)構(gòu)體:product。結(jié)構(gòu)體與合約成員函數(shù)解釋如圖5所示。

圖5 結(jié)構(gòu)體與合約成員函數(shù)解釋圖
前端部分為了便于用戶添加文件與連接以太坊,系統(tǒng)主要功能設(shè)計(jì)如下:
(1)文檔上傳:用戶可以選擇本地文件保存到IPFS中,并返回唯一HASH值。

圖6 文檔上傳
(2)寫入?yún)^(qū)塊鏈:用戶將文件的描述、類別、哈希值寫入?yún)^(qū)塊鏈,并通過智能合約打包成區(qū)塊寫入賬本。

圖7 寫入?yún)^(qū)塊鏈
(3)顯示所有鏈上文件:根據(jù)區(qū)塊高度對(duì)區(qū)塊進(jìn)行編號(hào),按生成時(shí)間順序顯示所有鏈上信息。

圖8 顯示所有鏈上文件
(4)通過查詢哈希值顯示文件:根據(jù)文檔唯一哈希值查詢文檔的IPFS網(wǎng)關(guān),利用網(wǎng)關(guān)地址顯示文檔信息。

圖9 通過查詢哈希值顯示文件
運(yùn)行以太坊Dapp需要消耗相應(yīng)的以太幣,所以需要用專門的錢包來對(duì)賬戶進(jìn)行管理,提供以太幣的存儲(chǔ)和轉(zhuǎn)移。在本系統(tǒng)中,我們使用Chrome瀏覽器的拓展插件MetaMask來解決以及本地以太坊開發(fā)工具Ganache完成鏈的部署。在Windows的Windows PowerShell(管理員)命令行進(jìn)入項(xiàng)目根目錄中輸入:
(1)truffle compile //進(jìn)行合約編譯
(2)truffle migrate //進(jìn)行項(xiàng)目的發(fā)布,此時(shí)Ganache會(huì)產(chǎn)生四個(gè)區(qū)塊
(3)npm run dev //啟動(dòng)服務(wù)
在頁面部分有上傳、上鏈、顯示、查詢的功能。當(dāng)用戶上傳文檔到IPFS時(shí),IPFS返回唯一的hash值。用戶將文件描述、分類和哈希值上鏈。每當(dāng)上鏈一個(gè)文檔時(shí),刷新一次頁面顯示當(dāng)前所有的區(qū)塊。當(dāng)用戶通過哈希值查找時(shí)會(huì)返回一個(gè)IPFS網(wǎng)址,利用網(wǎng)址即可下載原文件。由于區(qū)塊鏈本身的性質(zhì),上傳的交易不可篡改,可溯源。在查閱原文件時(shí)便可以確定文檔是否被篡改。又因?yàn)閔ash是唯一的,若上傳的文檔發(fā)生了改變,那么hash值也會(huì)跟之前的hash有很大區(qū)別。從而實(shí)現(xiàn)電子文檔的透明、安全、可溯源的功能。
在本項(xiàng)目中通過區(qū)塊鏈技術(shù)通過上傳摘要hash的形式,輔以IPFS的分布式存儲(chǔ)實(shí)現(xiàn)了對(duì)于文檔電子簽名化、防篡改以及下載等功能。我們通過這個(gè)項(xiàng)目可以看到區(qū)塊鏈技術(shù)在安全性和輕便性都遠(yuǎn)遠(yuǎn)大于如今的紙質(zhì)化交易,我們有理由相信在將來利用區(qū)塊鏈技術(shù)構(gòu)造商業(yè)網(wǎng)絡(luò)的那時(shí),便能夠構(gòu)建一個(gè)公開去中心化的交易平臺(tái),實(shí)現(xiàn)交易高效的同時(shí)無法篡改,我們可以大幅度的縮減交易的成本,提高社會(huì)的溝通和合作效率。
[1]張小雪,陸萍.基于以太坊的眾籌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].甘肅科技縱橫,2020(3):30-34.
[2]周藝華,李洪明.基于區(qū)塊鏈的數(shù)據(jù)管理方案[J].信息安全研究,2020(1):37-49.
[3]杜歆文.基于區(qū)塊鏈2.0以太坊公鏈的版權(quán)管理系統(tǒng)[J].現(xiàn)代電報(bào)技術(shù),2019( 12):97-101.
[4]楊保華,陳昌.區(qū)塊鏈原理、設(shè)計(jì)與應(yīng)用[M].機(jī)械工業(yè)出版社:北京,2018:93-97.
[5]殷龍,王宏偉.基于IPFS的分布式數(shù)據(jù)共享系統(tǒng)的研究[J].物聯(lián)網(wǎng)技術(shù),2016,6:60-62.
由北京信息科技大學(xué)2020年大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目資助
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年2期