于欣海,黃欣哲,梁 海*,丁 勇
(1.安徽省高速公路聯(lián)網(wǎng)運(yùn)營有限公司,安徽 合肥 230031;2.桂林電子科技大學(xué),廣西 桂林 541004)
2020年1月1日,全國29個聯(lián)網(wǎng)省份的487個省界收費(fèi)站全部取消,同年5月,實(shí)現(xiàn)了“一次行程、一張賬單、一次扣費(fèi)、一次告知”的總體目標(biāo),高速公路出入口的收費(fèi)站擁堵緩行的狀況得到全面緩解[1],有效改善了人民群眾的出行體驗(yàn),助力節(jié)能減排、降本增效,取得了明顯的社會效益和經(jīng)濟(jì)效益。
而車輛跨省出行傳統(tǒng)收費(fèi)清算共有三個階段:首先,省部兩級聯(lián)網(wǎng)中心相互通信啟動行車計(jì)費(fèi)服務(wù)。其次,由部聯(lián)網(wǎng)中心根據(jù)各省聯(lián)網(wǎng)中心上傳的信息擬合數(shù)據(jù)并計(jì)算通行費(fèi)用。最終,由省聯(lián)網(wǎng)中心將通行費(fèi)用返回至結(jié)算收費(fèi)站。
在這一過程中,各省級聯(lián)網(wǎng)中心不僅要跨省請求數(shù)據(jù),而且還依賴中心化服務(wù)器的計(jì)算結(jié)果,不僅導(dǎo)致收費(fèi)結(jié)算流程繁瑣,降低收費(fèi)站的通行效率,同時跨省結(jié)算請求數(shù)據(jù)時可能會造成隱私泄露和數(shù)據(jù)篡改等問題,帶來極大的信息安全隱患。
針對這一問題,國內(nèi)外研究人員開展了大量研究并提出了不同的解決方案。閆衛(wèi)喜等人[2]對區(qū)塊鏈技術(shù)在交通運(yùn)輸業(yè)的應(yīng)用指出數(shù)據(jù)資源共享程度不足、數(shù)據(jù)價值挖掘深度不足和隱私保護(hù)不夠的問題,為后續(xù)研究指明了方向。為了解決高速公路車輛通行數(shù)據(jù)零散(資源共享)問題,王若華等人[3]提出一種基于超級賬本的高速公路通行數(shù)據(jù)區(qū)塊鏈,使用鏈碼對通行數(shù)據(jù)上鏈,同時快速完成數(shù)據(jù)共識的判斷。為了深度分析數(shù)據(jù)價值,張利華等人[4]提出雙鏈數(shù)據(jù)存儲模型來對歷史數(shù)據(jù)進(jìn)行分析,解決惡意偽造、篡改數(shù)據(jù)等問題。
為解決高速收費(fèi)中的隱私保護(hù)問題,王秀利等人[5]提出一種應(yīng)用區(qū)塊鏈的數(shù)據(jù)訪問控制與共享模型,利用屬性基加密對企業(yè)數(shù)據(jù)進(jìn)行訪問控制與共享,達(dá)到細(xì)粒度訪問控制和安全共享的目的。王士成等人[6]利用屬性加密技術(shù)和智能合約技術(shù),實(shí)現(xiàn)了自動化安全數(shù)據(jù)共享。張正昊等人[7]提出了一種支持監(jiān)管的敏感數(shù)據(jù)可控共享方案,通過使用動態(tài)累加器技術(shù)實(shí)現(xiàn)敏感數(shù)據(jù)的訪問控制,實(shí)現(xiàn)數(shù)據(jù)擁有方對數(shù)據(jù)的可控性。
然而,現(xiàn)有場景中很少有對高速路收費(fèi)進(jìn)行隱私保護(hù),大多數(shù)的數(shù)據(jù)傳輸方案不能滿足高速收費(fèi)場景,并且當(dāng)數(shù)據(jù)量足夠大時可能造成數(shù)據(jù)阻塞,降低數(shù)據(jù)的共享效率。因此,有必要針對高速聯(lián)網(wǎng)收費(fèi)場景設(shè)計(jì)一種基于分布式支持隱私保護(hù)的數(shù)據(jù)傳輸共享方案。
為了解決高速聯(lián)網(wǎng)收費(fèi)場景所面臨的挑戰(zhàn),提出一種基于區(qū)塊鏈的高速聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)共享方案。其中通過區(qū)塊鏈將省部兩級聯(lián)網(wǎng)中心全部鏈接在一起以維護(hù)一個共同的賬本,并通過智能合約實(shí)現(xiàn)高速跨省結(jié)算的自動化,以此實(shí)現(xiàn)數(shù)據(jù)的實(shí)時共享;對于隱私保護(hù),結(jié)合非對稱加密和對稱加密實(shí)現(xiàn)鏈上數(shù)據(jù)的密文存儲;對于數(shù)據(jù)高效的檢索,設(shè)置了鏈上鏈下數(shù)據(jù)庫同步機(jī)制,采用表加密的形式存儲數(shù)據(jù),任何未獲得權(quán)限的用戶都會被拒絕訪問。
在具體功能上,相比于傳統(tǒng)的高速收費(fèi)系統(tǒng),基于區(qū)塊鏈實(shí)現(xiàn)了車輛通行數(shù)據(jù)的分布式存儲和訪問,保證了數(shù)據(jù)的實(shí)時共享。同時為保護(hù)用戶隱私,對鏈上敏感數(shù)據(jù)進(jìn)行加密處理,使其具有更高的安全性;對于檢索模塊,相比于純鏈上數(shù)據(jù)存儲的方式,采取鏈上鏈下數(shù)據(jù)庫同步機(jī)制,降低對鏈上的訪問開銷,同時優(yōu)化數(shù)據(jù)存儲結(jié)構(gòu),進(jìn)一步提高檢索效率,并同步降低存儲開銷。
在性能上,對2 000 000筆存證交易(存證數(shù)據(jù)大小200 Bytes),分別對持續(xù)時長為10分鐘左右和5分鐘左右,并發(fā)數(shù)為180增加到300進(jìn)行測試。實(shí)驗(yàn)結(jié)果表明:區(qū)塊鏈存儲TPS均值、查詢TPS均值完全滿足安徽省高速公路聯(lián)網(wǎng)收費(fèi)需求,在通行數(shù)據(jù)不斷增長的情況下,可以采用增加節(jié)點(diǎn)的方式提升業(yè)務(wù)處理能力。
區(qū)塊鏈?zhǔn)且环N去中心化的分布式賬本技術(shù)[8],是分布式數(shù)據(jù)庫、密碼算法[9]、共識機(jī)制[10-11]和智能合約[12-14]等技術(shù)的有機(jī)結(jié)合。
區(qū)塊鏈數(shù)據(jù)由去中心化網(wǎng)絡(luò)上的多個對等節(jié)點(diǎn)共同維護(hù)的相同副本組成。數(shù)據(jù)副本又將所有數(shù)據(jù)以區(qū)塊的形式進(jìn)行存儲,區(qū)塊之間則利用哈希指針串聯(lián)成鏈。每個區(qū)塊由區(qū)塊頭和區(qū)塊體組成,區(qū)塊體由具體數(shù)據(jù)組成,區(qū)塊頭由前塊哈希、時間戳、版本號等系統(tǒng)性信息和當(dāng)前塊哈希組成。通過默克爾樹的方式將區(qū)塊內(nèi)全部交易的哈希值計(jì)算出區(qū)塊哈希。由于哈希所具有的極難碰撞的性質(zhì),因此任何人可以通過某一交易哈希值及其兄弟路徑的哈希值求出一個區(qū)塊哈希,通過該區(qū)塊哈希判斷交易是否被修改,若求出的區(qū)塊哈希與區(qū)塊本身的哈希不同,則說明交易被修改或是不存在。
由于每個區(qū)塊的區(qū)塊頭中都包含了前塊哈希,這就使得區(qū)塊之間關(guān)系緊密,并且單個區(qū)塊的更改會因?yàn)闊o法匹配頭部哈希值和后續(xù)塊中的前塊哈希值而驗(yàn)證失敗。在去中心網(wǎng)絡(luò)和這種區(qū)塊鏈存儲的模式下,少部分節(jié)點(diǎn)的更改和外部惡意篡改都能因?yàn)榕c大部分節(jié)點(diǎn)數(shù)據(jù)不一致而被識別出來,因此鏈上數(shù)據(jù)具有不可篡改、可追溯、可信的特點(diǎn)。
除此之外,區(qū)塊鏈系統(tǒng)中的共識機(jī)制確保了上鏈數(shù)據(jù)的正確性和一致性,智能合約則使得開發(fā)者能夠在區(qū)塊鏈上進(jìn)行應(yīng)用的開發(fā)。
區(qū)塊鏈上記錄的數(shù)據(jù)在上鏈過程中,需要經(jīng)過各區(qū)塊鏈節(jié)點(diǎn)達(dá)成共識,所有數(shù)據(jù)必須公開給區(qū)塊鏈網(wǎng)絡(luò)中的所有節(jié)點(diǎn),這將會導(dǎo)致區(qū)塊鏈出現(xiàn)隱私泄露風(fēng)險[15]。為了解決這個問題,需要對必要的數(shù)據(jù)進(jìn)行加密,再上鏈,最終以密文的形式存儲在鏈上,從而保證數(shù)據(jù)的隱私性和安全性。
目前已經(jīng)有多種區(qū)塊鏈數(shù)據(jù)隱私保護(hù)方案,如交易數(shù)據(jù)加密[16]、零知識證明[17]、同態(tài)加密[18]等,均是依托于密碼學(xué)算法。但是不同的方案在安全性和實(shí)用性上各有優(yōu)劣。針對高速公路聯(lián)網(wǎng)收費(fèi)涉及多方參與的業(yè)務(wù)特點(diǎn),以及對于安全性和實(shí)用性的權(quán)衡,在數(shù)據(jù)存儲與共享過程中除了實(shí)現(xiàn)交易上鏈,重點(diǎn)還在交易產(chǎn)生的記錄數(shù)據(jù)的上鏈存儲、上鏈運(yùn)算,由于高速公路聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)包含通行用戶的隱私信息,因此如何在鏈上安全存儲,且實(shí)現(xiàn)數(shù)據(jù)訪問權(quán)限的控制尤為重要。
該文將采用鏈上數(shù)據(jù)庫表加密技術(shù),利用非對稱密碼算法及對稱密碼算法的方式,任何未被授權(quán)的賬戶無法解密表交易操作。
全國聯(lián)網(wǎng)收費(fèi)系統(tǒng)框架由收費(fèi)公路聯(lián)網(wǎng)結(jié)算管理中心(以下簡稱“部聯(lián)網(wǎng)中心”)、省(區(qū)、市)聯(lián)網(wǎng)結(jié)算管理中心(以下簡稱“省聯(lián)網(wǎng)中心”)、省內(nèi)區(qū)域/路段中心、ETC門架、收費(fèi)站、ETC車道、ETC/MTC 混合車道等組成,如圖1所示。
圖1 全國聯(lián)網(wǎng)收費(fèi)系統(tǒng)框架
其中部聯(lián)網(wǎng)中心主要實(shí)現(xiàn)跨省ETC清分結(jié)算和跨省其他交易拆分結(jié)算、全網(wǎng)費(fèi)率管理等功能;省聯(lián)網(wǎng)中心主要實(shí)現(xiàn)本省(區(qū)、市)ETC清分結(jié)算和其他交易拆分結(jié)算、本省(區(qū)、市)路段費(fèi)率管理功能。
2.2.1 車輛收費(fèi)流程
高速公路通行車輛收費(fèi)方式主要有電子不停車自動收費(fèi)(ETC)和人工半自動車道收費(fèi)(MTC)兩種。
(1)ETC車輛通過ETC門架系統(tǒng)實(shí)現(xiàn)分段計(jì)費(fèi),通過車載單元(OBU)和后臺記賬形式自動完成扣費(fèi)。
(2)MTC車輛采用5.8 GHz復(fù)合通行卡[15](CPC卡)為通行介質(zhì),輔以車牌圖像識別,在入口將計(jì)費(fèi)車型信息寫入CPC卡,通過ETC門架系統(tǒng)實(shí)現(xiàn)分段計(jì)費(fèi),在出口進(jìn)行人工收費(fèi)。
2.2.2 清分結(jié)算流程
清分結(jié)算業(yè)務(wù)采用部、省兩級模式,部聯(lián)網(wǎng)中心主要完成跨省ETC通行費(fèi)清分結(jié)算以及跨省MTC通行費(fèi)拆分結(jié)算,省聯(lián)網(wǎng)中心主要完成省(市、區(qū))內(nèi)ETC清分結(jié)算和MTC通行費(fèi)的拆分結(jié)算。
(1)ETC車輛交易清分結(jié)算流程。
ETC車輛交易流水通過省聯(lián)網(wǎng)中心實(shí)時上傳至部聯(lián)網(wǎng)中心,發(fā)行服務(wù)機(jī)構(gòu)下載交易數(shù)據(jù)進(jìn)行記賬。記賬確認(rèn)后,部聯(lián)網(wǎng)中心生成清分結(jié)算通知書,各收費(fèi)方省聯(lián)網(wǎng)中心和發(fā)行服務(wù)機(jī)構(gòu)對清分結(jié)算通知書進(jìn)行確認(rèn),部聯(lián)網(wǎng)中心按照清分結(jié)算結(jié)果進(jìn)行資金歸集和劃撥。省聯(lián)網(wǎng)中心完成省(市、區(qū))內(nèi)ETC清分結(jié)算。
(2)MTC車輛交易拆分結(jié)算流程。
部聯(lián)網(wǎng)中心接收各省聯(lián)網(wǎng)中心上傳的MTC車輛通行交易數(shù)據(jù),每日根據(jù)實(shí)際通行省(區(qū)、市)對交易數(shù)據(jù)進(jìn)行拆分結(jié)算,并下發(fā)結(jié)算通知書由各省聯(lián)網(wǎng)中心確認(rèn),部聯(lián)網(wǎng)中心根據(jù)軋差金額進(jìn)行資金歸集和劃撥。省聯(lián)網(wǎng)中心完成省(市、區(qū))內(nèi)MTC通行費(fèi)的拆分結(jié)算。
2.2.3 存在的問題
(1)數(shù)據(jù)同步過程繁瑣。
數(shù)據(jù)同步過程繁瑣主要體現(xiàn)在以下兩個方面。一是兩級清分模式涉及部聯(lián)網(wǎng)中心、省聯(lián)網(wǎng)中心、ETC卡發(fā)行服務(wù)機(jī)構(gòu)、銀行等多方參與,需要多個省聯(lián)網(wǎng)中心分別與部聯(lián)網(wǎng)中心進(jìn)行數(shù)據(jù)對賬和結(jié)算通知書確認(rèn),受數(shù)據(jù)合規(guī)性、及時性、準(zhǔn)確性影響,容易出現(xiàn)數(shù)據(jù)補(bǔ)充同步和結(jié)算通知書反復(fù)確認(rèn)情況,使得清分結(jié)算周期變長效率降低。二是由于需數(shù)據(jù)同步更新的省聯(lián)網(wǎng)中心和收費(fèi)站眾多,一旦出現(xiàn)交易數(shù)據(jù)、計(jì)費(fèi)參數(shù)更新不及時、不完整等情況,將導(dǎo)致不同路段、省份之間出現(xiàn)清算爭議。
(2)數(shù)據(jù)隱私的泄漏。
由于數(shù)據(jù)原本是保存在獨(dú)自的省聯(lián)網(wǎng)中心,當(dāng)需要跨省結(jié)算時,需要共享數(shù)據(jù),在共享過程中數(shù)據(jù)的完整性和安全性難以得到保證,因此可能存在用戶數(shù)據(jù)泄露的問題。
為了解決現(xiàn)有的高速跨省收費(fèi)與清分系統(tǒng)的數(shù)據(jù)同步過程繁瑣和數(shù)據(jù)隱私安全的問題,提出一種基于區(qū)塊鏈的高速聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)共享方案。在不改變高速公路原有聯(lián)網(wǎng)收費(fèi)業(yè)務(wù)系統(tǒng)的前提下,引入?yún)^(qū)塊鏈進(jìn)行數(shù)據(jù)存儲來實(shí)現(xiàn)各省聯(lián)網(wǎng)中心間數(shù)據(jù)的同步,當(dāng)車輛進(jìn)出高速路口以及高速上途徑 ETC門架時,車輛信息會被自動采集并上鏈,區(qū)塊鏈各節(jié)點(diǎn)之間會同步這些信息。
設(shè)計(jì)一套基本的通用的數(shù)據(jù)庫表來解決傳統(tǒng)方式下,不同省聯(lián)網(wǎng)中心數(shù)據(jù)格式不同,交易數(shù)據(jù)與計(jì)費(fèi)參數(shù)不完整可能導(dǎo)致的問題。將分別設(shè)計(jì)跨省的和省內(nèi)的交易清分結(jié)算方案,并以智能合約形式寫到鏈上,當(dāng)車輛通過高速出入口以及ETC門架時,會自動調(diào)用智能合約將對應(yīng)信息自動采集,并自動完成跨省和省內(nèi)的交易清分結(jié)算。同時設(shè)計(jì)一套加密解密以及訪問控制機(jī)制,在保護(hù)用戶隱私數(shù)據(jù)安全的基礎(chǔ)上,實(shí)現(xiàn)車輛通行數(shù)據(jù)以及清分結(jié)算數(shù)據(jù)的多方共享。另外,為了保證系統(tǒng)的效率,會在外置一個傳統(tǒng)數(shù)據(jù)庫,通過訪問控制的接口將鏈上數(shù)據(jù)保存下來,方便查詢。整體架構(gòu)如圖2所示。
圖2 方案整體架構(gòu)
為此,首先需建立區(qū)塊鏈網(wǎng)絡(luò),省聯(lián)網(wǎng)中心,部聯(lián)網(wǎng)中心作為區(qū)塊鏈的節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行存儲,高速公路聯(lián)網(wǎng)收費(fèi)系統(tǒng)與區(qū)塊鏈網(wǎng)絡(luò)的對接,當(dāng)有車輛駛?cè)霑r,調(diào)用智能合約將駛?cè)胄畔⒋嫒氲芥溕?當(dāng)車輛通過收費(fèi)系統(tǒng)駛出時,自動調(diào)用智能合約去鏈上檢索對應(yīng)車輛的駛?cè)胄畔?自動計(jì)算扣費(fèi)。車輛交易流水、通行記錄、清分結(jié)算等數(shù)據(jù)以交易記錄的形式記錄到區(qū)塊鏈上,并通過鏈上數(shù)據(jù)庫表訪問控制機(jī)制授權(quán)給對應(yīng)的省部中心,將數(shù)據(jù)同步到傳統(tǒng)數(shù)據(jù)庫中,方便對數(shù)據(jù)的查詢,在必要時能結(jié)合鏈上數(shù)據(jù)進(jìn)行驗(yàn)證。
為了解決不同省聯(lián)網(wǎng)中心數(shù)據(jù)格式不同,交易數(shù)據(jù)、計(jì)費(fèi)參數(shù)不完整可能導(dǎo)致的問題,設(shè)計(jì)一套通用的、基礎(chǔ)的數(shù)據(jù)庫表用來保存車輛通信信息。
針對高速公路聯(lián)網(wǎng)收費(fèi)的實(shí)際業(yè)務(wù)場景,需要將ETC門架、收費(fèi)站采集的車輛ETC交易流水、ETC通行記錄、CPC卡通行記錄、收費(fèi)站、收費(fèi)車道、抓拍時間、車牌號、車型等收費(fèi)關(guān)鍵信息,以及省部聯(lián)網(wǎng)中心經(jīng)過計(jì)算生成的清分結(jié)算數(shù)據(jù)上鏈存儲。
表中數(shù)據(jù)分為普通數(shù)據(jù)表和加密數(shù)據(jù)表兩種存在形式,區(qū)別在于表操作具體內(nèi)容在鏈上是否以密文形式存儲,加密表操作在SDK中進(jìn)行加密,然后以密文形式存儲在區(qū)塊鏈上,并且以密文的形式存儲到實(shí)體數(shù)據(jù)庫中。
高速公路聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)庫表以及對應(yīng)的訪問權(quán)限控制如圖3所示。
圖3 數(shù)據(jù)庫表授權(quán)共享
ETC交易流水表、ETC通行記錄表、CPC卡通行記錄表等為加密數(shù)據(jù)表,由省聯(lián)網(wǎng)中心創(chuàng)建,授權(quán)給其他省聯(lián)網(wǎng)中心和部聯(lián)網(wǎng)中心查詢權(quán)限,省聯(lián)網(wǎng)中心僅限于查詢與本省相關(guān)的跨省通行數(shù)據(jù),部聯(lián)網(wǎng)中心可以查看所有跨省車輛通行數(shù)據(jù)。
省費(fèi)率參數(shù)表為普通數(shù)據(jù)表,由省聯(lián)網(wǎng)中心負(fù)責(zé)創(chuàng)建和維護(hù),授權(quán)給所有鏈上用戶查詢權(quán)限。
ETC交易清分結(jié)算表和CPC交易拆分結(jié)算表為加密數(shù)據(jù)表,由省聯(lián)網(wǎng)中心負(fù)責(zé)創(chuàng)建,授權(quán)給其他相關(guān)的省聯(lián)網(wǎng)中心、部聯(lián)網(wǎng)中心、ETC發(fā)行服務(wù)機(jī)構(gòu)等查詢權(quán)限,省聯(lián)網(wǎng)中心僅限于查詢與該省相關(guān)的跨省清分結(jié)算數(shù)據(jù),部聯(lián)網(wǎng)中心可以查看所有的跨省清分結(jié)算數(shù)據(jù)。這不僅使得資源可以得到合理的配置,而且管理水平也得到一定的提高,對不同路段的協(xié)調(diào)工作也更加高效。
針對ETC車輛跨省交易,當(dāng)車輛經(jīng)過收費(fèi)站出口車道完成交易時,即觸發(fā)跨省清分結(jié)算智能合約,基于部級鏈上該車輛在各省的ETC交易流水(或通行憑證)、ETC通行記錄等信息,按照預(yù)先設(shè)定的交易清分規(guī)則,自動執(zhí)行對本次ETC交易的清分結(jié)算,并將ETC交易清分結(jié)算結(jié)果在部級鏈上存儲,同時為相關(guān)的省聯(lián)網(wǎng)中心、ETC發(fā)行服務(wù)機(jī)構(gòu)、銀行設(shè)置共享訪問權(quán)限。針對MTC車輛跨省交易,將基于部級鏈上該車輛在各省的CPC卡通行記錄、通行流水、交易日志等信息,按照預(yù)先設(shè)定的交易拆分規(guī)則,自動執(zhí)行對本次交易的拆分結(jié)算,并將MTC車輛交易拆分結(jié)算結(jié)果在部級鏈上存儲,為相關(guān)的省聯(lián)網(wǎng)中心、ETC發(fā)行服務(wù)機(jī)構(gòu)、銀行設(shè)置共享訪問權(quán)限。
部聯(lián)網(wǎng)中心每日通過智能合約自動完成當(dāng)日所有單筆跨省ETC車輛交易清分結(jié)算結(jié)果匯總,形成當(dāng)日跨省ETC車輛交易清分結(jié)算結(jié)果,并按照此清分結(jié)算結(jié)果進(jìn)行資金歸集和劃撥;通過智能合約自動完成當(dāng)日所有跨省MTC交易拆分結(jié)算結(jié)果匯總,形成當(dāng)日跨省MTC車輛交易拆分結(jié)算結(jié)果,并按照此拆分結(jié)算結(jié)果,根據(jù)軋差金額進(jìn)行資金歸集和劃撥。
針對ETC車輛省內(nèi)交易,當(dāng)車輛經(jīng)過收費(fèi)站出口車道完成交易時,即觸發(fā)省內(nèi)清分結(jié)算智能合約,基于省級鏈上該車輛在省內(nèi)的ETC交易流水(或通行憑證)、ETC通行記錄等信息,按照預(yù)先設(shè)定的交易清分規(guī)則,自動執(zhí)行對本次ETC交易的清分結(jié)算,并將ETC交易清分結(jié)算結(jié)果在省級鏈上存儲,同時為相關(guān)的收費(fèi)站、ETC發(fā)行服務(wù)機(jī)構(gòu)、銀行設(shè)置共享訪問權(quán)限。針對MTC車輛省內(nèi)交易,將基于省級鏈上該車輛在各省的CPC卡通行記錄、通行流水、交易日志等信息,按照預(yù)先設(shè)定的交易拆分規(guī)則,自動執(zhí)行對本次交易的拆分結(jié)算,并將MTC車輛交易拆分結(jié)算結(jié)果在省級鏈上存儲,為相關(guān)的收費(fèi)站、ETC發(fā)行服務(wù)機(jī)構(gòu)、銀行設(shè)置共享訪問權(quán)限。
省聯(lián)網(wǎng)中心每日通過智能合約自動完成當(dāng)日所有省內(nèi)ETC車輛交易清分結(jié)算結(jié)果匯總,形成當(dāng)日省內(nèi)ETC車輛交易清分結(jié)算結(jié)果,并按照此清分結(jié)算結(jié)果進(jìn)行資金歸集和劃撥;通過智能合約自動完成當(dāng)日所有省內(nèi)MTC交易拆分結(jié)算結(jié)果匯總,形成當(dāng)日省內(nèi)MTC車輛交易拆分結(jié)算結(jié)果,并按照此拆分結(jié)算結(jié)果,根據(jù)軋差金額進(jìn)行資金歸集和劃撥。
由于區(qū)塊鏈?zhǔn)窃谌ブ行木W(wǎng)絡(luò)下由多個對等節(jié)點(diǎn)共同維護(hù)的,區(qū)塊鏈中的數(shù)據(jù)對所有用戶都是公開的,因此存在對特定數(shù)據(jù)進(jìn)行加密的需求。在有些場景下即需要區(qū)塊鏈以維護(hù)數(shù)據(jù)的可靠與可信,又不希望泄露鏈上的用戶信息。因此,可以對必要的數(shù)據(jù)進(jìn)行加密保存,同時在鏈上保存訪問權(quán)限控制信息,當(dāng)有節(jié)點(diǎn)或者用戶需要訪問鏈上加密數(shù)據(jù)時,必須先驗(yàn)證鏈上的訪問權(quán)限控制信息,通過驗(yàn)證后智能合約會對所訪問數(shù)據(jù)自動進(jìn)行解密。其流程如圖4所示。
圖4 高速公路車輛通行數(shù)據(jù)共享示意圖
當(dāng)車輛駛?cè)敫咚?信息被記錄上鏈時,先由本地的省聯(lián)網(wǎng)中心(圖中的省聯(lián)網(wǎng)中心1)對數(shù)據(jù)信息進(jìn)行加密上鏈,即數(shù)據(jù)上鏈存證;省聯(lián)網(wǎng)中心在上鏈時會對數(shù)據(jù)的訪問等權(quán)限賦予不同的用戶或節(jié)點(diǎn),即數(shù)據(jù)訪問授權(quán);當(dāng)不同的用戶或者節(jié)點(diǎn)需要訪問數(shù)據(jù)時需要先對自己的身份信息進(jìn)行驗(yàn)證,以判斷是否有對應(yīng)數(shù)據(jù)的訪問權(quán)限,即驗(yàn)證訪問權(quán)限;在對訪問發(fā)起方的身份進(jìn)行驗(yàn)證并確認(rèn)其具有相應(yīng)權(quán)限之后返回查詢結(jié)果。
為了實(shí)現(xiàn)以上流程,設(shè)計(jì)了一套數(shù)據(jù)加密流程,主要包含六個部分:身份密鑰初始化,創(chuàng)建加密表,加密表授權(quán),插入數(shù)據(jù),授權(quán)數(shù)據(jù)給用戶,用戶讀取數(shù)據(jù)。身份數(shù)據(jù)初始化是生成對應(yīng)節(jié)點(diǎn)和用戶的公私鑰身份信息;創(chuàng)建加密表則是將車輛信息表格進(jìn)行加密;加密表授權(quán)會對創(chuàng)建者以外的身份授予權(quán)限,使其能夠讀取表格信息;插入數(shù)據(jù)則是對加密表的信息進(jìn)行修改,添加車輛新的信息;授權(quán)數(shù)據(jù)給用戶則是將加密表權(quán)限授予給用戶;用戶讀取數(shù)據(jù)則是用戶讀取鏈上加密的數(shù)據(jù)。
數(shù)據(jù)存儲及共享主要包含五個部分:初始化,創(chuàng)建加密表,加密表授權(quán),授權(quán)數(shù)據(jù)給用戶,用戶讀取數(shù)據(jù),其目的和具體細(xì)節(jié)如下:
(1)身份密鑰初始化。
在身份密鑰初始化階段,按照高速公路收費(fèi)的組織架構(gòu),在區(qū)塊鏈上為各個組織注冊合法賬戶,每個用戶生成一對公私鑰(Pki,Ski)由用戶自身保存,其中對公鑰進(jìn)行哈希運(yùn)算得到身份id并上鏈,其過程可由算法1表示。
算法1:
1.對任意用戶accounti,使用橢圓曲線算法生成公私鑰(Pki,Ski)
2.生成用戶accounti身份id,accounti_id = sha256 (Pki)
在實(shí)際中使用Ed25519算法生成公私鑰匙,使用sha256算法對公鑰進(jìn)行哈希運(yùn)算得到身份id。
(2)創(chuàng)建加密表。
創(chuàng)建加密表是將數(shù)據(jù)以加密的方式進(jìn)行保存,由各省聯(lián)網(wǎng)中心負(fù)責(zé)創(chuàng)建,各省聯(lián)網(wǎng)中心默認(rèn)對加密表具有管理權(quán)限,其流程可由算法2表示。
算法2:
1. accounti發(fā)送創(chuàng)建表交易:T= {table_name, table}, Sigi= SignatureECC (T,Ski)
2.使用AES算法隨機(jī)生成對稱密鑰K
3.使用K對創(chuàng)建表語句加密,得到密文C= EncryptAES (table,K)
4.使用公鑰Pki對K加密,得到加密令牌Xi= EncryptECC (K,Pki)
5.將Xi和C保存至鏈上,保存的格式為數(shù)組 {Pki,table_name,Xi,C,Sigi,R|U|D}
其中,R代表讀取權(quán)限;U代表修改權(quán)限;D代表刪除權(quán)限。
(3)加密表授權(quán)。
當(dāng)數(shù)據(jù)以加密表的形式存儲之后,省聯(lián)網(wǎng)中心負(fù)責(zé)將加密表授權(quán)給其他相關(guān)的省聯(lián)網(wǎng)中心、部聯(lián)網(wǎng)中心、ETC發(fā)行服務(wù)機(jī)構(gòu)等查詢權(quán)限以便進(jìn)行相關(guān)的業(yè)務(wù)操作,而未被授權(quán)的用戶將不能訪問加密表,具體流程可由算法3表示。
算法3:
1.用戶i根據(jù)accounti_id和table_name從鏈上獲取Xi和C
2.使用Ski對Xi解密,得到AES算法密鑰:K= DecryptECC(Xi,Ski)
3.使用K對C解密,table = DecryptAES (C,K)
4.使用Ski對T= {table_name, table}簽名,s= SignatureECC(T,Ski)
5.驗(yàn)證s和鏈上Sigi是否一致,如果不一致,退出;否則進(jìn)入步驟6
6.使用accountj的公鑰Pkj對K加密,得到加密令牌Xj= EncryptECC(K,Pkj)
7.發(fā)出邀請給accountj賬戶對T進(jìn)行簽名:
Sigj=SignatureECC(T,Skj)
8.{Pkj,table_name,Xj,C,Sigj,R|U|D}記錄保留至鏈上
(4)插入數(shù)據(jù)。
當(dāng)跨省通行車輛在高速出口完成收費(fèi)后,自動觸發(fā)存證智能合約進(jìn)行車輛通行數(shù)據(jù)上鏈存證,這就需要修改鏈上保存的加密表。在這個過程中存證智能合約首先會判斷用戶是否具有對應(yīng)權(quán)限,如果沒有權(quán)限,則會退出,如果有權(quán)限,則繼續(xù)對新增數(shù)據(jù)進(jìn)行加密并插入到加密表中,具體流程可由算法4表示。
算法4:
1.賬戶accounti發(fā)起插入表記錄交易:{table_name,(fields,values)}
2.通過accounti_id和table_name獲取記錄{Pki,table_name,Xi,C,Sigi,R|U|D}
3.判斷是否有U權(quán)限,如果沒有退出;否則進(jìn)入步驟4
4.使用Ski對Xi解密,得到AES算法密鑰:K= DecryptECC(Xi,Ski)
5.使用K對C解密,table=DecryptAES(C,K)
6.使用Ski對T={table_name, table}簽名,s=SignatureECC(T,Ski)
7.驗(yàn)證s和鏈上Sigi是否一致,如果不一致,退出;否則進(jìn)入步驟8
8.使用AES算法隨機(jī)生成對稱密鑰K2
9.使用K2對記錄進(jìn)行加密,得到記錄密文:R=AES({fields,values},K2)
10.使用Pki對K2加密,得到加密令牌X2i=EncryptECC (K2,Pki)
11.計(jì)算 record_id = sha256({table_name, fields, values})
12. 計(jì)算記錄的簽名,RSigi= SignatureECC (record_id,Ski)
13.將記錄{record_id,Pki,table_name,X2i,R,RSigi,R|U|D}記錄至區(qū)塊中
14.返回record_id
(5)將數(shù)據(jù)授權(quán)給用戶。
用戶完成數(shù)據(jù)插入后,隨即觸發(fā)授權(quán)智能合約,自動為車輛通行數(shù)據(jù)途徑的各省聯(lián)網(wǎng)中心、部中心等用戶設(shè)置數(shù)據(jù)訪問權(quán)限,具體流程可由算法5所示。
算法5:
1.通過record_id從鏈上獲取記錄,{record_id,Pki,table_name,X2i,R,RSigi,R|U|D}
2.查看是否有R|U|D權(quán)限,如果沒有則退出,否則進(jìn)入步驟3
3.使用Ski解密X2i,K2=DecryptECC(X2i,Ski)
4.生成簽名s=SignatureECC(record_id,Ski)
5.驗(yàn)證s和鏈上的RSigi是否一致,如果不一致退出,否則進(jìn)入步驟6
6.使用accountj賬戶的私鑰Skj對 record_id簽名,RSigj= SignatureECC(record_id,Skj)
7.使用Pkj對K2進(jìn)行加密,得到加密令牌X2j=EncryptECC(K2,Pkj)
8.將記錄{record_id,Pkj,table_name,X2j,R,RSigj,R|U|D}記錄至區(qū)塊中
(6)用戶讀取授權(quán)數(shù)據(jù)。
用戶讀取區(qū)塊鏈上的共享數(shù)據(jù),將會觸發(fā)智能合約,智能合約首先對用戶的身份進(jìn)行驗(yàn)證,判斷是否具有訪問控制權(quán)限,如果沒有權(quán)限則退出,如果有權(quán)限,則可以進(jìn)行數(shù)據(jù)的解密供用戶訪問,具體過程可由算法6所示。
算法6:
1.賬戶accounti發(fā)起讀取記錄交易:{record_id,Pki,table_name,X2i,R,RSigi,R|U|D}
2.查詢是否存在標(biāo)志R;如果沒有則退出,否則進(jìn)入步驟3
3.計(jì)算s=SignatureECC(record_id,Ski)
4.判斷s和RSigi是否相等,不相等則退出;否則進(jìn)入步驟5
5.使用Ski解密X2i,K=DecryptECC(X2i,Ski)
6.使用K解密R記錄,record=DecryptAES(R,K2)
區(qū)塊鏈上的數(shù)據(jù)由按時間順序各個區(qū)塊組成,數(shù)據(jù)上鏈以后將不能被篡改。由于采用去中心化數(shù)據(jù)存儲架構(gòu),因此對任何一個節(jié)點(diǎn)的攻擊都無法使整個網(wǎng)絡(luò)癱瘓,也無法控制整個鏈上的數(shù)據(jù)?;谥悄芎霞s數(shù)據(jù)存儲與共享,保證數(shù)據(jù)使用過程安全,同時將每筆交易都上鏈存儲,數(shù)據(jù)有據(jù)可查,可以進(jìn)行溯源審計(jì)。以上的區(qū)塊鏈技術(shù)特點(diǎn),保證了數(shù)據(jù)的安全性。
在用戶數(shù)據(jù)隱私上,采用了基于非對稱和對稱密碼學(xué)算法的加密表技術(shù),數(shù)據(jù)在上鏈之前進(jìn)行加密,并且加密令牌也是密文上鏈,只有數(shù)據(jù)上鏈的操作者能夠進(jìn)行解密。
假設(shè)惡意用戶獲取區(qū)塊鏈的訪問方式,開始遍歷區(qū)塊鏈交易,但是獲取到的鏈上表操作交易內(nèi)容均是密文,在沒有表擁有者私鑰或者未被授權(quán)情況下,是無法解密數(shù)據(jù)的;而且即使惡意用戶自己運(yùn)行一個節(jié)點(diǎn),也無法將鏈上創(chuàng)建的加密表同步到自己運(yùn)行的節(jié)點(diǎn)的數(shù)據(jù)庫中,因?yàn)闊o法解密就無法知道當(dāng)前數(shù)據(jù)庫操作內(nèi)容。
高速公路聯(lián)網(wǎng)收費(fèi)業(yè)務(wù)涉及多方參與,各參與方所需數(shù)據(jù)以及訪問權(quán)限各不相同,采用鏈上數(shù)據(jù)庫表的授權(quán)機(jī)制,基于非對稱密碼學(xué)算法,對加密令牌進(jìn)行轉(zhuǎn)加密,并在鏈上記錄權(quán)限,不可篡改。將加密表及鏈上權(quán)限控制相結(jié)合,實(shí)現(xiàn)鏈上數(shù)據(jù)的授權(quán)訪問控制。
假設(shè)惡意用戶真的偽裝為監(jiān)管方,獲取了數(shù)據(jù)訪問權(quán)限,并且在本地運(yùn)行一個節(jié)點(diǎn)同步了數(shù)據(jù),但是因?yàn)榧用鼙硎跈?quán)機(jī)制的精細(xì)控制,對于監(jiān)管方只授予查詢權(quán)限,因此惡意用戶只能獲取到歷史數(shù)據(jù),而無法對鏈上數(shù)據(jù)進(jìn)行修改,保障區(qū)塊鏈以及鏈上數(shù)據(jù)安全不被篡改。
實(shí)驗(yàn)選擇ChainSQL去搭建區(qū)塊鏈,并模擬出高速收費(fèi)系統(tǒng),編寫兩類智能合約,一類是存證類合約,用來記錄車輛信息,進(jìn)行收費(fèi)和清分,另一類是查詢類合約,用來查詢鏈上數(shù)據(jù)。調(diào)用存證類合約會往鏈上增加數(shù)據(jù),查詢類合約不會往鏈上新增數(shù)據(jù)。搭建的鏈包含4個共識節(jié)點(diǎn),并有4臺壓測機(jī)共8臺硬件設(shè)備,硬件配置均為戴爾R730服務(wù)器,2*CPU英特至強(qiáng)E5-2620 v3,2.4 GHz,15 M緩存,內(nèi)存8*16 G RDIMM,2133 MT/s,硬盤 10*1.2 TB 10 k RPM SAS 6 Gbps 2.5英寸熱插拔硬盤,萬兆網(wǎng)卡。區(qū)塊鏈節(jié)點(diǎn)操作系統(tǒng)為Ubuntu 18.04.5 LTS。
進(jìn)行三類實(shí)驗(yàn)去測試系統(tǒng)性能能否滿足高速公路收費(fèi)場景,分別是普通場景下存證交易的性能測試,高并發(fā)場景下存證交易的性能測試和高并發(fā)場景下查詢交易的性能測試。采用交易吞吐量(TPS)和確認(rèn)交易吞吐量(CTPS)作為性能衡量指標(biāo)。
對于普通場景下的存證交易性能測試,4臺壓測機(jī)共發(fā)送2 000 000筆存證交易(存證數(shù)據(jù)大小200 Bytes),持續(xù)10分鐘左右,并發(fā)數(shù)為180,測試結(jié)果如圖5所示。
圖5 高并發(fā)壓力測試
結(jié)果顯示TPS均值10 034,CTPS均值11 393,TPS峰值11 410,CTPS峰值14 542,交易成功率100%。
對于高并場景下的存證交易性能測試,4臺壓測機(jī)共發(fā)送2 000 000筆存證交易(存證數(shù)據(jù)大小200 Bytes),持續(xù)5分鐘左右,并發(fā)數(shù)為300,測試結(jié)果如圖6所示。
圖6 存證尖峰沖擊測試
測試結(jié)果:TPS均值23 624,CTPS均值10 791,TPS峰值34 975,CTPS峰值20 000,交易成功率 100%。
對于高并發(fā)場景下的查詢交易性能測試,4臺壓測機(jī)共進(jìn)行2 000 000交易查詢,持續(xù)5分鐘左右,并發(fā)數(shù)300,測試結(jié)果如圖7所示。
圖7 單節(jié)點(diǎn)查詢壓力測試
測試結(jié)果:TPS均值21 389,TPS峰值31 127,時間15時38分~15時40 。
實(shí)驗(yàn)結(jié)果表明,測試環(huán)境區(qū)塊鏈存儲TPS均值、查詢TPS均值完全滿足安徽省高速公路聯(lián)網(wǎng)收費(fèi)需求,在通行數(shù)據(jù)不斷增長的情況下,可以采用增加節(jié)點(diǎn)的方式提升業(yè)務(wù)處理能力。
提出了基于區(qū)塊鏈的高速公路聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)共享方案,利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)車輛通行數(shù)據(jù)的分布式存儲,通過鏈上數(shù)據(jù)庫表加密技術(shù)結(jié)合智能合約技術(shù),實(shí)現(xiàn)車輛通行數(shù)據(jù)上鏈加密存儲和自動化授權(quán)共享,同時將數(shù)據(jù)共享過程上鏈存證,利用區(qū)塊鏈不可篡改的技術(shù)特點(diǎn),實(shí)現(xiàn)對數(shù)據(jù)共享過程的可追溯。該方案有利于實(shí)現(xiàn)車輛通行數(shù)據(jù)的跨地區(qū)、跨部門共享,對于簡化高速公路聯(lián)網(wǎng)收費(fèi)以及清分結(jié)算業(yè)務(wù)流程,提高業(yè)務(wù)協(xié)同效率具有重要意義。實(shí)驗(yàn)結(jié)果表明,該方案在數(shù)據(jù)鏈上存儲與多方共享方面能夠滿足隱私保護(hù)要求,并且具有較高的性能,能夠滿足高速公路聯(lián)網(wǎng)收費(fèi)數(shù)據(jù)共享需求。在后續(xù)的研究中,將在數(shù)據(jù)高效共識上鏈以及跨鏈傳輸?shù)确矫孀龈由钊氲难芯颗c探索。