簡 春,卿曉霞,王 波
1.重慶大學(xué) 計算機學(xué)院,重慶400044
2.重慶大學(xué) 土木工程學(xué)院,重慶400045
智慧水務(wù)是智慧城市的重要組成部分,也是城市水務(wù)事業(yè)發(fā)展、行業(yè)管理與服務(wù)提升的重要支撐和保障[1]。智慧水務(wù)系統(tǒng)是基于物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、大數(shù)據(jù)、云計算和人工智能等新一代信息技術(shù)構(gòu)建的綜合監(jiān)管平臺,能實時感知、模擬計算、分析評估城市供排水系統(tǒng)以及水環(huán)境狀況,全面支持水務(wù)系統(tǒng)生產(chǎn)、管理和服務(wù),達到智慧決策的目的。在智慧水務(wù)系統(tǒng)中,無論是系統(tǒng)內(nèi)部業(yè)務(wù)運行還是對外服務(wù),都需要對各類數(shù)據(jù)進行統(tǒng)計分析,甚至實施特征提取、關(guān)聯(lián)挖掘、深度學(xué)習(xí)等智能計算,以實現(xiàn)對系統(tǒng)狀態(tài)的認知、智能診斷及預(yù)測,實現(xiàn)水務(wù)系統(tǒng)的功能??梢哉f,真實的數(shù)據(jù)是支撐智慧水務(wù)系統(tǒng)正確決策的重要基礎(chǔ)保障。然而,由于各種原因,在實際系統(tǒng)運行中數(shù)據(jù)被篡改的情況時有發(fā)生。如何保證在系統(tǒng)運行過程中各環(huán)節(jié)數(shù)據(jù)不被或難以篡改,以及被篡改后能及時發(fā)現(xiàn),是保障智慧水務(wù)系統(tǒng)數(shù)據(jù)安全必須研究解決的問題。本文引入?yún)^(qū)塊鏈技術(shù),被監(jiān)管方實時地將智慧水務(wù)數(shù)據(jù)采集并生成哈希樹,將哈希樹存儲至私有鏈中并由監(jiān)管方實時簽名。以此私有鏈作為智慧水務(wù)數(shù)據(jù)的證明文件,則可校驗數(shù)據(jù)是否被篡改,進而達到數(shù)據(jù)監(jiān)管的目的。
區(qū)塊鏈(Blockchain)是集共識機制、P2P網(wǎng)絡(luò)、加密算法等技術(shù)的分布式數(shù)據(jù)庫,具有去中心化、防篡改、隱私性與匿名性等特點[2-3]。目前,區(qū)塊鏈作為我國核心技術(shù)自主創(chuàng)新的重要突破口,已上升為國家戰(zhàn)略,可在建設(shè)網(wǎng)絡(luò)強國、發(fā)展數(shù)字經(jīng)濟、助力社會經(jīng)濟發(fā)展等方面發(fā)揮重要的支撐作用[4]。
2008 年,區(qū)塊鏈1.0 最先應(yīng)用于比特幣(Bitcoin)。比特幣采用非圖靈完備語言,且可擴展性有限[5-6],無法應(yīng)用于除虛擬貨幣之外的領(lǐng)域。區(qū)塊鏈2.0由數(shù)字貨幣領(lǐng)域拓展至更廣泛的金融領(lǐng)域,2013年,推出了以太坊(Ethereum)——用于開發(fā)和部署分布式應(yīng)用的統(tǒng)一平臺[7],支持智能合約與圖靈完備語言。區(qū)塊鏈3.0不僅可用于數(shù)字貨幣及金融領(lǐng)域,而且能夠結(jié)合其他實體行業(yè),實現(xiàn)不依賴第三方建立信任,從而減少信任成本,提高行業(yè)效率[8-9]。目前,區(qū)塊鏈3.0 已在醫(yī)療、教育、車聯(lián)網(wǎng)等領(lǐng)域開展了一些研究及應(yīng)用[10-13],主要是應(yīng)用區(qū)塊鏈防篡改的特點來解決行業(yè)中的數(shù)據(jù)不可信問題。如焦通等[14]提出了一種基于區(qū)塊鏈的數(shù)據(jù)庫,該數(shù)據(jù)庫分布地存儲數(shù)據(jù),有可查詢、防篡改的特性,可以解決傳統(tǒng)數(shù)據(jù)庫易被篡改的問題,但由于所有數(shù)據(jù)均存儲在鏈上,效率過低且不易落地實現(xiàn);Bui等[15]提出了一種視頻存檔防篡改賬本系統(tǒng),該系統(tǒng)運用SHA256算法生成視頻片段的摘要,并將摘要存儲在以權(quán)威證明(proof of authority)作為共識算法的授權(quán)區(qū)塊鏈分布式系統(tǒng)中,可檢測出被篡改的視頻片段;文獻[16-18]分別從學(xué)分管理系統(tǒng)、數(shù)據(jù)可信存儲、可信車聯(lián)網(wǎng)等方面用區(qū)塊鏈技術(shù)實現(xiàn)了數(shù)據(jù)的防篡改。然而,上述研究均采用公有鏈或聯(lián)盟鏈(都需要維護一個多方參與的區(qū)塊鏈網(wǎng)絡(luò)),由于受制于共識算法性能的限制,公有鏈與聯(lián)盟鏈多節(jié)點共同維護一個賬本往往達不到實時性要求,且計算成本較高。
某城市依托國家首批16 個海綿城市試點項目,在智慧水務(wù)框架下,構(gòu)建了一個海綿城市運行監(jiān)管平臺,從水生態(tài)、水環(huán)境、水資源和水安全等各方面對近20 km2示范區(qū)的海綿城市運行狀況實施綜合監(jiān)測及預(yù)測、預(yù)警,并為城市智慧水務(wù)系統(tǒng)建設(shè)提供數(shù)據(jù)支撐。示范區(qū)內(nèi)共安裝了水文、水質(zhì)、水位、土壤、熱島效應(yīng)等各類傳感器共300 余個。該系統(tǒng)中的傳感器監(jiān)測數(shù)據(jù)由被監(jiān)管方(平臺運維方或平臺使用方)采集、存儲,并對系統(tǒng)進行維護及應(yīng)用,同時上報監(jiān)管方(政府相關(guān)部門等)監(jiān)督審查。在其他領(lǐng)域中,應(yīng)用聯(lián)盟鏈與公有鏈設(shè)計智能合約的方式,由于區(qū)塊鏈網(wǎng)絡(luò)有大量的通信成本和存儲成本,往往性能不能滿足大量時間序列數(shù)據(jù)的防篡改需求。針對該海綿城市運行監(jiān)管平臺的時間序列數(shù)據(jù)采樣周期較短(現(xiàn)為5 min,周期可能會更短)、數(shù)據(jù)量較大(現(xiàn)為10萬/天,數(shù)據(jù)量由傳感器增加而增加)的特點,本文設(shè)計并實現(xiàn)一種基于內(nèi)存難度的Cuckoo Cycle算法[19]的私有鏈監(jiān)管方法。基于內(nèi)存難度的Cuckoo Cycle 算法相較于基于計算難度的算法,篡改所需要的硬件成本更高。私有鏈較聯(lián)盟鏈和公有鏈雖然安全性較低,但性能更高,計算成本更低[20-22]。在滿足數(shù)據(jù)安全需求、篡改可驗證的情況下,采用私有鏈作為時間序列數(shù)據(jù)證明文件的方式計算成本更低,也更便于部署應(yīng)用。
Cuckoo Cycle 是一種基于圖論的工作量證明(proof of work)算法。該算法能解決基于計算難度的工作量證明算法導(dǎo)致的大型礦場集中算力使區(qū)塊鏈網(wǎng)絡(luò)中心化的問題。Cuckoo Cycle 算法根據(jù)一個哈希值生成偶圖G(N,M),N為圖頂點數(shù),M為圖邊數(shù)。算法要求在該圖G中找到一個長為L的環(huán)[23]。如圖1中,共有12 個節(jié)點、13 條邊,其中(V1V4V5V8V9V6V1)為長度為6的環(huán)。
圖1 偶圖問題示意圖Fig.1 Schematic diagram of bipartite graph problem
圖1中,圖頂點的數(shù)量小于2edgebits,圖邊的數(shù)量小于2nodebits。edgebits與nodebits決定了圖的規(guī)模,其值越大,占用更大的內(nèi)存,反之則占用更少的內(nèi)存。生成的圖邊數(shù)與頂點數(shù)之比必須小于M/N。M/N決定了問題的難度,其值越大,越容易找到環(huán)。在CPU 算力足夠大時,Cuckoo Cycle算法的計算性能受內(nèi)存帶寬約束。
橢圓曲線(elliptic curve)是式(1)的解集。
橢圓曲線是連續(xù)的,無法應(yīng)用于加密。橢圓曲線算法(elliptic curve cryptography)實際上是有限域內(nèi)的離散對數(shù)(discrete logarithm)問題[24]。橢圓曲線數(shù)字簽名算法(elliptic curve digital signature algorithm)是基于橢圓曲線算法的數(shù)字簽名算法[25]。設(shè)有公鑰K、私鑰k,而K=kG′(x,y),G′(x,y)為曲線上一點。通過k、G′(x,y)求得K是有限域的模乘,可以直接求得。已知K、G′(x,y)求k是離散對數(shù)問題,當點G′(x,y)數(shù)值很大時,難以在有效的時間破解[25]?;跈E圓曲線的離散對數(shù)問題較其他經(jīng)典離散對數(shù)問題更難求解[26]。在數(shù)字簽名應(yīng)用的工業(yè)領(lǐng)域中,橢圓曲線仍是目前主要算法之一。
橢圓曲線在數(shù)字簽名中的私鑰加密算法由算法1描述。
算法1橢圓曲線私鑰簽名算法
橢圓曲線在數(shù)字簽名中的公鑰驗證算法由算法2描述。
算法2橢圓曲線公鑰驗證算法
監(jiān)管方法基本思路:監(jiān)管方提供時間簽名服務(wù),被監(jiān)管方對采集的每一段數(shù)據(jù)都需要向時間簽名服務(wù)器請求簽名,并實時生成數(shù)據(jù)對應(yīng)的區(qū)塊,然后存儲至私有鏈中。監(jiān)管方則通過區(qū)塊的合法性和區(qū)塊與數(shù)據(jù)的對應(yīng)關(guān)系來高效檢測數(shù)據(jù)是否被篡改。
前述海綿城市運行監(jiān)管平臺運行時間序列監(jiān)測數(shù)據(jù)如表1 所示,監(jiān)測數(shù)據(jù)不僅類別多樣,而且除了都具有時間點、傳感器編號特征外,數(shù)據(jù)特征的數(shù)量與格式也不統(tǒng)一。因此將各采集點數(shù)據(jù)內(nèi)容序列化為二進制流,故一個設(shè)備在一個時間點采集的數(shù)據(jù)為設(shè)備編號、時間戳、二進制流組合的三維數(shù)據(jù)。
表1 時間序列數(shù)據(jù)類別Table1 Kinds of time series data
根據(jù)上述數(shù)據(jù)特征,本文設(shè)計一種適宜的區(qū)塊結(jié)構(gòu),如圖2 所示。區(qū)塊頭包括上一區(qū)塊頭Hash 值、時間戳簽名、時間戳、Nonce 值、時間序列數(shù)據(jù)起始時間戳、時間序列數(shù)據(jù)結(jié)束時間戳、哈希樹根。區(qū)塊體中存儲每個傳感器在該時間段內(nèi)數(shù)據(jù)的索引值Key 和Hash 值。Key值對應(yīng)一個傳感器,Hash值對應(yīng)該傳感器在該時間段內(nèi)采集的數(shù)據(jù)。兩個子節(jié)點Key與Hash值的字節(jié)數(shù)據(jù)再哈希得到其父結(jié)點的Hash 值,不斷迭代得到最終的哈希樹根[25]。
圖2 區(qū)塊結(jié)構(gòu)Fig.2 Block structure
定義共有n個傳感器,則一個區(qū)塊的大小bs由式(2)描述為:
其中,257 是區(qū)塊頭固定大小,36n為區(qū)塊體大小,單位字節(jié)。私有鏈證明文件區(qū)塊長度為l,則該私有鏈證明文件大小為ls字節(jié),由式(3)描述為:
定義證明文件采樣時間間隔為t,總共記錄的時間為T,單位均為分。則私有鏈證明區(qū)塊長度l為:
區(qū)塊頭中每一個字段的意義如表2所示。
表2 區(qū)塊頭字段意義表Table 2 Meaning of block head field
監(jiān)管方法分為時間簽名服務(wù)、生成私有鏈證明文件、數(shù)據(jù)驗證三部分。
2.2.1 時間簽名服務(wù)
時間簽名服務(wù)由監(jiān)管方提供。如流程1、圖3所示。
圖3 時間簽名流程圖Fig.3 Process of time signatures
流程1時間簽名服務(wù)流程
監(jiān)管方提供時間簽名服務(wù)以對時間序列數(shù)據(jù)實時性進行監(jiān)管。時間戳簽名保證了監(jiān)管方提供的時間戳與哈希樹根對應(yīng),不能被偽造。一個具有實時性的區(qū)塊,其時間戳與時間序列結(jié)束時間戳的間隔必須在一定的時間內(nèi)。若間隔超過該設(shè)定值,可認為數(shù)據(jù)沒有被及時打包,存在被篡改的可能性。這使得被監(jiān)管方實時篡改數(shù)據(jù)的時間非常有限。
2.2.2 私有鏈證明文件
被監(jiān)管方負責(zé)實時對數(shù)據(jù)生成區(qū)塊并存儲到私有鏈中,如流程2、圖4所示。
圖4 私有鏈證明文件生成流程圖Fig.4 Generation process of supporting document based on private blockchain
流程2生成私有鏈證明文件流程
被監(jiān)管方需要實時對數(shù)據(jù)請求簽名以保證數(shù)據(jù)的實時性,并執(zhí)行Cuckoo Cycle算法保證一定的計算量。Cuckoo Cycle算法性能瓶頸取決于內(nèi)存帶寬,相對于工作量證明算法既保證了生成證明文件的計算難度,也更加節(jié)約計算成本。
2.2.3 數(shù)據(jù)驗證
被監(jiān)管方提供私有鏈證明文件與數(shù)據(jù),監(jiān)管方校驗文件與數(shù)據(jù)是否對應(yīng),如流程3、圖5所示。
圖5 數(shù)據(jù)驗證流程圖Fig.5 Process of data validation
流程3數(shù)據(jù)驗證流程
比對私有鏈證明文件,可檢查數(shù)據(jù)被篡改的時間段、設(shè)備編號、數(shù)據(jù)的時間有效性、數(shù)據(jù)工作量證明以及區(qū)塊是否成鏈。
研究篡改數(shù)據(jù)所需的時間成本、硬件成本以及能否被篡改,可分為監(jiān)管方私鑰未泄露與私鑰泄露兩種情況。
2.3.1 監(jiān)管方私鑰未泄露
(1)被監(jiān)管方篡改實時數(shù)據(jù)
若被監(jiān)管方篡改時間t1至?xí)r間t2之間的數(shù)據(jù),數(shù)據(jù)打包最大時間限制為Δt,平均一個區(qū)塊打包時間為tˉ,則要成功篡改數(shù)據(jù),其數(shù)據(jù)被篡改的時間點td需滿足式(5):
令Δt為一個滿足網(wǎng)絡(luò)延遲、數(shù)據(jù)處理有效延遲且人為難以篡改的時間量,既保證系統(tǒng)可正常運行,又可以防止人為難以在Δt時間內(nèi)實時篡改數(shù)據(jù)。
(2)被監(jiān)管方篡改歷史數(shù)據(jù)
監(jiān)管方保密私鑰k,其簽名s不可偽造,故區(qū)塊的時間戳t不可偽造。篡改歷史數(shù)據(jù)時,無法向時間戳服務(wù)器申請到小于t2+Δt的合法時間戳t,那么篡改數(shù)據(jù)后,無法保證區(qū)塊的時間有效性。
2.3.2 監(jiān)管方私鑰泄露
監(jiān)管方私鑰泄露,被監(jiān)管方可獲取到監(jiān)管方生成的合法簽名,故區(qū)塊能保證時間有效性,但可從篡改開始起在式(6)的時間tp內(nèi)保證數(shù)據(jù)篡改可被驗證。
要保證私有鏈證明文件與數(shù)據(jù)可被監(jiān)管方審查,被監(jiān)管方不僅要用算力v維護原有鏈,且需要大于v的算力生成偽造鏈,直至偽造鏈長度大于等于原有鏈。采用基于內(nèi)存難度的Cuckoo Cycle 工作量證明算法,在增加vt-v算力的同時,也要增加倍內(nèi)存帶寬以保證計算速度提升倍,相較于僅需增加算力的工作量證明篡改時需要更大的硬件成本。
為驗證本文提出的智慧水務(wù)數(shù)據(jù)監(jiān)管方法的有效性、篡改時的硬件成本,通過網(wǎng)絡(luò)從實際運行的某試點城市的海綿城市運行監(jiān)管平臺中實時地獲取智慧水務(wù)數(shù)據(jù)并設(shè)定實驗環(huán)境,如表3所示(Excel數(shù)據(jù)接口的實驗源代碼可以在https://github.com/a1094174619/Sponge_City_tamper_proof獲?。?。
表3 測試環(huán)境Table 3 Test environment
時間序列數(shù)據(jù)格式如表4 所示,包括傳感器編號、時間戳以及各類數(shù)據(jù)字段。數(shù)據(jù)字段根據(jù)傳感器不同其字段數(shù)量與類型均不同。
表4 數(shù)據(jù)格式Table 4 Data formats
私有鏈證明文件生成相關(guān)參數(shù)設(shè)定與意義如表5所示,easiness決定了一個區(qū)塊的計算時間,在easiness、edgebits、nodebits、L取表5值時可使區(qū)塊平均計算時間tˉ接近1 800 s。傳感器采樣間隔為300 s,tl取1 800 s,讓一個哈希值對應(yīng)6 次采樣數(shù)據(jù)保證驗證精度。該海綿城市運行監(jiān)管平臺共有357 個傳感器,由式(2)計算一個區(qū)塊大小為12.8 KB。
表5 實驗相關(guān)參數(shù)意義及值Table 5 Related parameters
每個區(qū)塊進行工作量證明后打包的時間如圖6 所示,平均時間為1 796.38 s。對兩天數(shù)據(jù)生成證明文件,96 個區(qū)塊的私有鏈大小1.20 MB。若easiness過小,被監(jiān)管方打包一個區(qū)塊的平均時間tˉ遠小于tl,被監(jiān)管方篡改數(shù)據(jù)時所需要的計算成本過小。若easiness過大,tˉ大于tl,則隨著時間累積,被監(jiān)管方無法按時生成證明文件。調(diào)整easiness使得tˉ略小于tl,那么在區(qū)塊鏈可以及時生成的前提下,盡可能使得被監(jiān)管方篡改數(shù)據(jù)的難度最大。
圖6 證明文件的各區(qū)塊打包時間Fig.6 Packing time of generating block
被監(jiān)管方數(shù)據(jù)實時采集,若對一段數(shù)據(jù)進行實時篡改,其平均篡改時間為tl-Δt,篡改歷史數(shù)據(jù)的時間如式(6)。保證tl-0 的條件下,其余變量不變,tˉ越大,實時篡改的平均篡改時間tl-Δt越小,平均每個區(qū)塊計算量cb越大,則篡改歷史數(shù)據(jù)的時間tp越大。故盡可能使值越大,被監(jiān)管方實時篡改數(shù)據(jù)的難度和篡改歷史數(shù)據(jù)的難度都會增加。
3.3.1 監(jiān)管方法有效性實驗
監(jiān)管方私鑰未泄露時,被監(jiān)管方只能申請偽造時的簽名。即使被監(jiān)管方完成了篡改的工作量證明,也能檢測出區(qū)塊被后期篡改。如圖7 所示,后期篡改的第0、1個區(qū)塊,簽名時間較數(shù)據(jù)生成的時間晚了約3 天,驗證程序可以檢測出數(shù)據(jù)的實時性無效。
圖7 檢測出簽名過期區(qū)塊時的日志Fig.7 Log of detecting expired signature
若直接篡改數(shù)據(jù),數(shù)據(jù)所對應(yīng)的區(qū)塊體中哈希值會改變,那么對應(yīng)區(qū)塊頭中的哈希樹根會改變。驗證程序可檢測出具體被篡改數(shù)據(jù)的傳感器編號與時間段。如圖8,第48 個區(qū)塊時間段在2019-11-21 00:00:00—00:30:00,編號為1060747080、1060747200的數(shù)據(jù)被篡改。
圖8 檢查出數(shù)據(jù)被篡改的設(shè)備編號與時間段的日志Fig.8 Log of device number and its period of tampered data
綜上所述,在監(jiān)管方私鑰未泄露時,被監(jiān)管方申請篡改數(shù)據(jù)時的簽名,方法能夠檢測出區(qū)塊的實時性無效。若被監(jiān)管方直接對數(shù)據(jù)進行篡改,方法能夠檢測出被篡改數(shù)據(jù)的傳感器編號與時間段。
3.3.2 證明文件偽造成本實驗
監(jiān)管方私鑰泄露的情況下,被監(jiān)管方可以偽造簽名,通過增加算力,從原有區(qū)塊鏈的某個節(jié)點開始計算篡改區(qū)塊,當篡改區(qū)塊鏈長度等于原有區(qū)塊鏈時,證明文件篡改成功。為對比方法采用Cuckoo Cycle 算法或POW 算法作為工作量證明算法時的證明文件偽造成本,進行以下實驗。
為模擬篡改時的情況,以CPU的1個核心為原有區(qū)塊鏈的算力,2、4、8個核心為篡改時算力,區(qū)塊生成難度調(diào)整為0.43,共計算96 個區(qū)塊,內(nèi)存及其他硬件保持不變。如表6 所示,2 倍算力比基礎(chǔ)算力的計算時間縮減47.6%。由于采用基于內(nèi)存難度的Cuckoo Cycle算法,4倍算力比2倍計算時間縮減23.8%,而在4倍達到內(nèi)存頻率瓶頸,8 倍算力較4 倍算力計算速度沒有提升?;趦?nèi)存難度Cuckoo Cycle 算法較基于計算難度的算法需要更多的硬件成本,才能提升篡改時的區(qū)塊計算速度。
表6 Cuckoo Cycle不同算力下的區(qū)塊生成時間Table 6 Execution time of generating block with different computing power and Cuckoo Cycle
如圖9所示為不同算力下的區(qū)塊生成累計耗時,在CPU算力增加未達到內(nèi)存頻率限制時,區(qū)塊生成時間減少明顯。計算速度達到內(nèi)存頻率限制時則區(qū)塊時間不減少。
圖9 Cuckoo Cycle不同算力下生成區(qū)塊累計時間圖Fig.9 Cumulative execution time of generating block with different computing power and Cuckoo Cycle
在上述同等的硬件條件下,僅替換Cuckoo Cycle算法為經(jīng)典工作量證明算法。如表7、圖10,在基礎(chǔ)算力到2、4、8 倍算力,區(qū)塊的生成時間近似逐漸減半,故若采用基于計算難度的POW 算法,則僅需要增加CPU算力就能提升篡改速度。
表7 POW不同算力下的區(qū)塊生成時間Table 7 Execution time of generating block with different computing power and POW
圖10 POW不同算力下生成區(qū)塊累計時間圖Fig.10 Cumulative execution time of generating block with different computing power and POW
綜上所述,采用Cuckoo Cycle 算法為工作量證明算法比POW 算法用以生成證明文件,偽造證明文件時需要同比例提升CPU 算力和內(nèi)存頻率,所需的硬件成本更高。
以下實驗?zāi)M監(jiān)管方篡改數(shù)據(jù)時的實際情況,量化在以Cuckoo Cycle 為工作量證明算法情況下的時間成本以及計算成本。
實驗如圖11 所示,原有區(qū)塊鏈以基礎(chǔ)算力進行計算,以原有區(qū)塊鏈開始計算為0秒計時,共計25 686 s生成96 個區(qū)塊。在10 000 s 原有區(qū)塊鏈已經(jīng)生成37 個區(qū)塊時,被監(jiān)管方若要篡改第0 塊所對應(yīng)的數(shù)據(jù),則需要從第0塊開始生成偽造區(qū)塊鏈。被監(jiān)管方在A點以2倍基礎(chǔ)算力(包含CPU 算力與內(nèi)存頻率)生成偽造區(qū)塊鏈,約9 400 s 后,偽造區(qū)塊鏈與原有區(qū)塊鏈達到同等區(qū)塊長度(B 點),此時偽造區(qū)塊鏈可替換原有區(qū)塊鏈,篡改數(shù)據(jù)成功。
圖11 證明文件偽造實驗圖Fig.11 Experiment of forging document
被監(jiān)管方在圖11中的情況篡改成本需要滿足擁有監(jiān)管方的私鑰、3倍的基礎(chǔ)計算力(包含原有區(qū)塊鏈的算力以及偽造區(qū)塊鏈的2倍算力)、9 400 s的時間成本,其中偽造成本滿足式(6)。
私有鏈作為時間序列數(shù)據(jù)的證明文件,在監(jiān)管方私鑰未泄露的情況下,時間戳簽名無法偽造,因而保證私有鏈無法偽造進而保證數(shù)據(jù)真實;在監(jiān)管方私鑰泄露的情況下,生成偽造區(qū)塊鏈需要原有區(qū)塊鏈2倍以上的計算量、內(nèi)存帶寬和式(6)的計算時間才能完成篡改,可保證式(6)中tp內(nèi)私有鏈的可靠性。該方法不僅占用存儲空間小,且采用基于內(nèi)存難度的Cuckoo Cycle算法,在對數(shù)據(jù)篡改時需要保證計算能力與內(nèi)存帶寬同時滿足條件。驗證程序可快速對時間序列數(shù)據(jù)的真實性、時間有效性進行判斷,且該方法可在不影響平臺原有業(yè)務(wù)功能情況下成功部署。
本文以某城市的海綿城市運行監(jiān)管平臺為例,針對智慧水務(wù)系統(tǒng)數(shù)據(jù)可能被篡改的問題,研究設(shè)計并實現(xiàn)了一種基于內(nèi)存難度的Cuckoo Cycle 算法的私有鏈數(shù)據(jù)監(jiān)管方法,最后對該方法的有效性和篡改硬件成本進行了實驗。結(jié)果表明,該方法相較于使用聯(lián)盟鏈或公有鏈的編寫智能合約的方式更適合大數(shù)據(jù)監(jiān)管的需求,且在篡改時需要同時提升CPU 算力和內(nèi)存頻率,篡改的硬件成本更大。該方法不僅適用于智慧水務(wù)系統(tǒng)時間序列數(shù)據(jù)的監(jiān)管,同樣也適用于其他領(lǐng)域時間序列數(shù)據(jù)的監(jiān)管。