陳麗燕,呂光金,芮廷先
(上海財經大學浙江學院 經濟與信息管理系,浙江 金華 321013)
為了讓商業數據盡到最大化的效益,結合當下熱點大數據、數據挖掘、區塊鏈多方面挖掘商業數據的價值成為近年的研究熱點[1,2]。現有的商業數據管理系統依托于商業信息管理系統[3],雖然較傳統的商業數據管理具有便利性,但是依然存在一些問題。商業數據在使用過程中,如對數據的管理、傳輸等過程容易被修改;對于每個商業中心來說所有的商業數據就是一個信息孤島,每個商業中心之間無法有效共享彼此的數據,無法將數據價值最大化;現有的商業數據安全措施借助于數字簽名和水印等技術,在遇到數據被破壞、篡改等極端情況時無法恢復。
商業數據的真實性無法保障,如果商業中心的數據遭到入侵,或者相關人員動手腳,商業數據的真實性和安全性都將遭到威脅。
區塊鏈是目前流行的基于共識機制的公共賬本技術,具有去中心化無需可信第三方[4];任何人想改變數據都需要付出巨大成本,導致實現困難,具有防篡改性;還具有可追溯性等特點。區塊鏈的這些優質特性讓區塊鏈在各個領域的研究成為熱門,尤其是將區塊鏈應用到隱私保護方面[5],如將區塊鏈應用到個人征信系統保護[6]、檔案數據保護[7]、醫療數據的隱私保護[8,9]、個人隱私等方面。區塊鏈技術在數據安全保護方面的應用不僅僅只是理論的研究,而被許多企業應用到現實場景中,比如百度將區塊鏈應用到對百度百科數據的保護[10];螞蟻金服將區塊鏈應用到對捐款數據的跟蹤[11];騰訊也在打造區塊鏈生態圈[12]。對于本文來說區塊鏈這些特性有助于解決目前商業數據管理中存在的安全性差以及無法有效共享等問題。本文正是基于區塊鏈、密碼學和星際文件系統(inter planetary file system,IPFS)[13]等技術提出了商業數據共享模型。從以下幾個方面來提出解決方案:
(1)在商業數據中心之間構建聯盟鏈,在這個基礎上共同維護系統的運行,商業數據副本與公有鏈掛鉤,能夠降低數據維護成本又保障了數據的安全;
(2)通過私有星際文件集群系統以加密的形式存儲原始數據,結合區塊鏈智能合約技術,存儲數據的摘要信息,包括存儲數據的唯一指紋序,以此實現對商業數據的安全管理;
(3)借助區塊鏈技術和星際文件系統,能夠做到對歷史數據的追溯,因此解決了商業數據無法恢復的問題。
本節將介紹本文所提方案中會用到的基礎知識,包括區塊鏈相關技術和星際文件系統的相關知識兩部分。
區塊鏈是以數據區塊為單位存儲數據,實際上是一個無中心的數據庫、結合了共識算法、密碼學技術[14]讓每個數據塊包含了比特網中的交易信息,能夠防偽和生成新的區塊。根據區塊鏈的開放權限,又將區塊鏈分為公有鏈、聯盟鏈和私有鏈。公有鏈[15]是指區塊鏈完全開放,任何節點都可以參與共識;聯盟鏈[16]是聯盟節點才能參與,并且共識機制需要所有聯盟節點共同決策;私有鏈[17]是組織內部使用,訪問權限不開放。
1.1.1 共識機制
共識機制[18]是為了解決區塊鏈所有節點共識問題。如何認定節點數據的有效性,所有節點都共用同一標準,保證了公平性也保障了數據的安全性,節點數據不是個人可以隨意篡改的。區塊鏈的共識機制要求所有節點均平等,且要求少數服從多數,只有這樣才能保證數據的安全性。這里的少數服從多數并不一定指的是節點個數,可能是工作量、計算能力、時間等等,根據不同的依據,提出了多種的共識機制,如Proof of Work[19]算法、Proof of Stake[20]算法、Proof of Space[21]算法、Proof of Luck[22]算法、Proof of Elapsed Time[23]算法、Delegated Proof of Stake[24]算法、Proof of Useful Work[25]算法、聯盟鏈Quorum[26]等。
1.1.2 智能合約
智能合約[27]是區塊鏈去中心化的一些特殊的協議,滿足不同的需求,包含了所有的約定條款,只有滿足所有協議,才能夠生效,能夠保證公正性,排除了人為操作的可能性。支持智能合約的區塊鏈以以太坊為代表,可以在這個基礎上開發智能合約。
星際文件系統(inter planetary file system,IPFS),是一個分布式存儲和文件共享的網絡傳輸協議[28]。系統上的每個文件和數據塊都有唯一的加密散列稱之為指紋,具有版本跟蹤、可尋址、不可篡改、去中心化等特點。IPFS系統是基于內容尋址[29],所有的內容具有唯一指紋,根據加入網絡的不同權限又分為公有集群系統和私有集群系統:公有集群系統是任何節點都可以加入自由加入星際文件系統;私有集群是有權限的節點或機構才能加入系統。
這部分將介紹基于區塊鏈的商業數據共享模型的整體架構。
如圖1所示,本文提出的商業數據共享模型由商業數據中心、服務中心、聯盟中心、公有區塊鏈、私有星際文件集群系統這5個模塊組成。

圖1 系統模型
5個部分介紹如下:
商業數據中心作為商業數據共享模型的重要節點直接參與聯盟區塊鏈中心,具備數據保護、驗證、共享等功能;
服務中心自身不存儲數據,是去中心化的結構,以接口的形式為商業數據共享模型提供智能合約和星際文件系統接口;
聯盟中心實際上是以太坊聯盟鏈,通過智能合約存儲商業數據中心的數據信息,包括商業數據中心的數字身份標識和摘要信息,用于實現商業數據中心身份標識的注冊、恢復、保護、共享等操作,定期與公有鏈交互,以此來保障數據的安全;
公有區塊鏈是以太坊區塊鏈,定期存儲聯盟中心的數據庫副本鏡像,以保證聯盟中心數據的真實性;
私有星際文件集群系統存儲了商業數據的原始信息,在分布式哈希表和塊交換等技術的支持下,實現了節點的身份認證,保障數據的安全性。
以上各部分的消息流如圖2所示。

圖2 消息流
本文模型涉及到的智能合約主要用于對商業數據中心的身份標識進行管理也就是對這些節點的身份確認,此外還對商業數據進行管理。涉及到智能合約的模塊主要有公有區塊鏈模塊和聯盟中心模塊。公有區塊鏈中有聯盟數據保護合約,主要用于保障聯盟中心數據的真實性。聯盟中心模塊中的智能合約主要完成對商業數據中心節點的身份認證和商業數據管理兩大任務。聯盟中心的智能合約包括節點信息存儲合約(node information storage contract,NISC)、節點信息管理合約(node information manage contract,NIMC)、商業數據管理合約(commercial data manage contract,CDMC)等。如圖3所示。

圖3 聯盟中心合約架構
節點信息存儲合約主要用于存放模型中涉及到的節點身份標識信息,用于身份辨認,因此,該合約中記錄了聯盟中心所有商業數據中心的身份標識(data center identity,dcID)、公鑰、該節點對應的節點信息管理合約和商業數據管理合約。
節點信息管理合約以民主投票技術為基礎實現了商業數據中心節點的內部自治,由節點新建合約和節點重置合約組成。其中節點新建合約通過投票方式對新加入的商業數據中心節點創建dcID;節點重置合約為防范商業數據中心私鑰泄露風險,用于重置商業數據中心的密鑰。
商業數據管理合約主要用于管理商業數據,包括對商業數據的驗證、恢復、共享和保護等,由商業數據信息存儲合約、商業數據權限控制合約和商業數據共享管理合約等組成。商業數據管理合約結構如圖4所示。

圖4 商業數據管理合約架構
商業數據信息存儲合約(commercial data information storage contract,CDSC)主要記錄商業數據中心的數字摘要信息,包括商業數據對象的星際文件系統地址、編號、哈希值、創建時間、修改時間等等。
商業數據權限控制合約(commercial data control contract,CDCC)主要用于控制商業數據中心的權限。
商業數據共享管理合約(commercial data sharing manage contract,CDMC)主要記錄商業數據中心共享的數據信息,包括數據編號、所屬商業數據中心身份標識、共享時間等等。一個數據編號可以共享給多個商業數據中心訪問。當數據編號對應的商業數據中心身份標識為-1時,表示該數據完全開放,所有用戶都可以直接獲取信息;如果標識為0,則表示該數據有條件的開放,聯盟中心所有成員均可訪問;如果標識不小于1,則表示該數據私有,只有指定權限的數據中心才可以訪問。
2.3.1 商業數據中心身份標識的注冊與找回
商業數據中心節點并不是直接參與聯盟中心,僅僅以身份標識替代。因此,身份標識對商業數據中心來說非常重要,需要投票多數通過才可以授權注冊。其操作如算法1所示:
算法1:商業數據中心身份標識的注冊
輸入:商業數據中心請求
輸出:生成商業數據中心身份標識
需要加入聯盟中心的商業數據中心基于某種加密算法生成密鑰對
將公鑰Kpub和基本信息公開給聯盟中心,基本信息包括商業數據中心地址,同時隨機委托一個節點創建投票合約,聯盟中心的節點參與投票;
如果票數過半,商業數據信息存儲合約保存該商業數據中心的公鑰信息,然后為其生成商業數據中心的身份標識dcID并創建商業數據信息存儲合約和商業數據權限控制合約,以三元組表示 (dcID,CDSC,CDCC)。
由于私鑰由商業數據中心自行保存,存在內部人員竊取的情況,也存在被盜的風險,一旦被盜,取得私鑰者就可以偽造該商業數據中心的身份標識對數據進行操作。因此,商業數據管理中心需要妥善保管私鑰,此外,本文設計了密鑰重置合約,一旦發現密鑰泄露,即可啟動dcID重置合約,重置密鑰,具體操作如算法2:
算法2:重置密鑰
輸入:重置請求
輸出:產生新的公鑰
商業數據中心再生成一對密鑰
將新的公鑰公開給聯盟中心,重置秘鑰,商業數據中心身份標識已經注冊,因此同時附帶商業數據中心身份標識,并隨機委托節點創建重置投票合約;
聯盟中心全體重新投票,如果票數過半,則節點信息管理合約重置該商業數據中心的公鑰,將
由于考慮到商業數據中心私鑰存在的安全隱患,通過對節點身份標識的一致性認可,解除了操作對公鑰的依賴性。由于以上設計的商業數據的操作都是基于節點身份標識,即使dcID重置合約重置了商業數據中心的公鑰,只要節點身份標識一致,依然可以驗證商業數據中心的身份。
2.3.2 商業數據的保護與驗證
商業數據的保護是指新增和更新商業數據對象的時候對數據進行的保護,技術上基于星際文件系統私有集群技術,將數據存儲在區塊鏈上,配合聯盟中心和公有區塊鏈上的智能合約來保護數據,防止數據被破壞,支持驗證和恢復等基本操作。
新增數據對象是將商業數據對象保存在私有星際文件集群系統中,將數據對象編號保存在商業數據信息存儲合約中;更新數據對象則是在每次更新數據對象時對對象和數據進行保護。
商業數據對象(commercial data object,本文JSON形式表示該對象,因此簡寫為cdJSON)結構如圖5所示,包括對象編號、版本號、創建時間、操作者和摘要等信息。

圖5 商業數據對象結構
新增數據對象操作步驟:
(1)商業數據中心生成一對隨機的密鑰randkey(Kpubr,Kprir), 該密鑰主要用于對商業數據摘要和商業數據對象的加密;
(2)用私鑰Kprir對商業數據摘要進行加密,加密后保存到星際文件集群系統,并將哈希值、加密附件的序列號和加密商業數據對象的序列號等信息進行簽名,通過服務中心發送到智能合約中等待后續處理;
(3)商業數據信息存儲合約收到新增數據對象請求,調用商業數據權限控制合約從簽名中恢復公鑰,將恢復的公鑰與節點信息存儲合約中的密鑰進行對比,如果驗證通過,就在合約中添加商業數據對象編號和摘要等信息的鏡像。
新增對象的流程如圖6所示。

圖6 新增對象流程
更新數據對象操作與新增數據對象類似,只是商業數據中心不會生成密鑰對,而是直接使用原有的密鑰對;商業數據中心會根據商業數據對象編號從商業數據信息存儲合約和星際文件系統中提取商業數據對象信息,接著按照更新商業數據信息生成新的商業數據對象,加密以后保存回商業數據信息存儲合約和星際文件系統中,也就對原來的信息進行了更新。
商業數據對象的驗證包括公有區塊鏈對聯盟中心區塊鏈上的數據驗證、聯盟中心對星際文件系統中數據的驗證、商業數據對象對商業數據中心的數據驗證。具體驗證過程見以下算法:
算法3:公有區塊鏈對聯盟中心區塊鏈的數據驗證
輸入:數據驗證請求
輸出:驗證結果
商業數據中心對dcID、 數據編號簽名后得到sign(dcID,dataID), 將結果發送到服務中心;
服務中心收到消息后,從公有區塊鏈中的聯盟數據保護合約中得到最新的聯盟數據塊副本映像;
通過和聯盟中心中的區塊信息進行對比驗證;如果驗證通過,就將簽名發送給智能合約,進行下一步操作;如果驗證失敗,即返回聯盟中心數據異常。
算法4:聯盟中心對星際文件系統中數據的驗證
輸入:數據驗證請求
輸出:驗證結果
商業數據信息存儲合約收到驗證請求,通過商業數據權限控制合約對商業數據中心身份進行確認,根據數據編號dataID從合約中查找對應數據的摘要信息;
商業數據中心從商業數據信息存儲合約得到所需信息后,根據所取得數據對象從星際文件系統中獲取集群中的數據對象;
驗證所取得的哈希值是否和前者一樣,如果驗證通過,則進行下一步操作;如果驗證失敗,則返回星際文件系統數據異常。
商業數據對象對商業數據中心的數據驗證:獲取數據對象信息方法同上,只是最后將數據對象信息與商業數據中心的數據對象信息進行對比驗證,驗證通過,則正常進入下一步操作,否則,返回商業數據中心數據異常。
針對以上產生的異常,本文提出以下恢復方法:
聯盟中心數據異常:發現異常后可以回溯,將聯盟區塊信息與之前的區塊信息進行對比,找出異常區塊的位置,在這基礎上新創建的區塊;
星際文件系統數據異常:商業數據信息存儲合約中存儲了數據區塊的各個歷史版本,如果發現異常,可以恢復前期的正確版本;
商業數據中心數據異常:可以根據聯盟鏈上的歷史記錄,重置商業數據中心被篡改的數據信息。
2.3.3 商業數據的共享
商業數據的共享是指在聯盟中心節點之間以及與外界節點間的數據共享,在智能合約、星際文件系統和混合加密機制等技術支持下,保障數據的安全共享。下面以商業數據中心A要向商業數據中心B共享商業數據為例介紹本文方案數據共享過程,其中商業數據中心A的商業數據中心身份標識記為dcIDA, 商業數據中心B的商業數據中心身份標識記為dcIDB, 其具體見算法5:
算法5:商業數據的共享
輸入:數據共享請求
輸出:共享數據或者失敗提示
商業數字中心A使用私鑰AKprir對需要共享的數據對象編號dataID、dcIDA進行簽名得到signa(dataID,dcIDA), 之后通過服務中心將signa(dataID,dcIDA) 發送到商業數據共享管理合約。商業數據共享管理合約收到請求后,先調用商業數據權限控制合約對dcIDA進行查驗,查驗通過后將其寫入合約數據對象dataID的分享序列中;
商業數據中心B使用私鑰BKprir對dataID、dcIDB進行簽名得到signb(dataID,dcIDB), 之后通過服務中心將signb(dataID,dcIDB) 發送到商業數據共享管理合約。商業數據共享管理合約收到請求后,先調用商業數據權限控制合約對商業數據中心B的權限進行查驗,查驗通過意味著B具有對數據對象的讀取權限,讀取對應數據對象的哈希值和數據對象指紋;
商業數據中心B根據得到的數據對象指紋,從星際文件集群系統中獲取加密的數據對象,同時將dataID和dcIDB發送給商業數據中心A,來獲取數據對象的解密密鑰;
A收到B的請求后,商業數據共享管理合約根據所接受的信息查驗商業數據的共享記錄,如果共享記錄有誤,則返回共享失敗;否則共享真實無誤,則從節點信息管理合約中獲取dcIDB對應的公鑰BKpubr, 對解密密鑰進行非對稱加密后發送給B;
B使用私鑰BKprir對收到的消息進行解密,得到原始解密密鑰,利用解密密鑰對加密的數據對象進行解密,得到數據對象原始信息。
由于聯盟鏈數據塊的副本鏡像映射在公有鏈中,彼此高度不可能一樣的,必然存在高度差,這里將高度差記為h。 如果有黑客要攻擊,那么攻擊過程就需要重新計算公有鏈當前區塊高度的所有內容,并通過全網驗證。假設節點算力為每秒ahash,黑客算力為每秒bhash,不會遇到異常情況,如大量節點加入攻擊,新區塊的計算難度一般相差不大,這里假設沒有異常情況,普通節點每秒鐘產生新區塊的概率為p,黑客節點產生新區塊的概率為q。那么每秒鐘高度差h的變化存在3種情況,分別是變大、變小和不變,每種概率表示為P1,P2,P3。 那么在t秒中,就有t次變化,用n標識其中變大的次數,m是變小的次數,那么不變的次數就是t-n-m次,其中高度差的變化滿足多項分布。如果在t秒內,黑客攻擊節點成功需要滿足m∈[0,(t-h-1)/2],n=m+h+c, 其中1≤c≤t-2m-h, 發生的概率如下公式
其中,P1=q(1-p) 是高度差變大的概率,P2=p(1-q) 是高度差變小的概率,P3=1-P1-P3是高度差沒變化的概率。
黑客攻擊節點的算力如果小于普通節點的算力,成功的概率更小,因此,這里就討論算力相當的情況,根據以上公式得到黑客攻擊成功的概率分布如圖7所示,其中y軸是黑客攻擊成功的概率P,x軸是時間T,單位是算力的單位時間。

圖7 攻擊成功概率分布
從圖7,我們可以看出黑客能夠攻擊成功并且篡改數據的概率隨著高度差的增大而減小。以高度h=20計算,在長時間攻擊下,成功概率也是15%。而在實際應用中,區塊的高度差將會是千萬數量級的,那么在這樣的情況下,攻擊篡改成功的概率幾乎為零。況且以太坊是存在激勵機制的,如果有這么大的算力,還不如作為普通節點,獎勵也遠遠大于攻擊篡改的收益。因此,通過分析,本模型在安全方面是可靠的,具有不可篡改性。
本模型主要用于商業數據的共享與保護,假設每天需要進行的保護次數為m, 共享次數為n, 身份信息管理次數為l, 則以太坊上公有區塊鏈上部署智能合約的成本Cost1=mCost2+nCost3+lCost4, 其中Cost1為以太坊成本,Cost2為保護操作成本,Cost3為共享操作的成本,Cost4為身份信息管理的成本。
本文是通過聯盟鏈與公有鏈相結合的方式建立模型對商業數據進行保護和分享,結合星際文件系統,實現了對商業數據的安全分享、保護和恢復等功能,和單獨使用聯盟鏈、單獨使用公有鏈的性能對比見表1,本文所提出的模型安全性高于聯盟鏈,和公有鏈安全性相當,但是成本要低于公有鏈;在擴展性方面,本文的模型要高于兩者。由此可見本文模型更優。

表1 性能對比
本文結合區塊鏈相關技術、星際文件系統設計了一種基于區塊鏈的商業數據共享模型。本模型實現了對商業數據的安全共享和對商業數據的保護等基本操作,能夠在較低的經濟成本下保證商業數據的安全共享。相對現有的模型在安全性、擴展性和成本上方面都更有優勢。本模型考慮了商業數據的共享和保護的基本操作,但是在對商業數據其它方面的應用沒有做過多的涉獵,在今后的工作中,能夠將模型拓展到更多領域,包含更多功能,將對商業數據管理的區塊鏈共識機制方面進行更加深入的研究。