印 聰 楊 璐 吳 斌
(蘇州大學 江蘇 蘇州 215006)
射頻識別(Radio Frequency Identification,RFID)技術(shù)作為物聯(lián)網(wǎng)發(fā)展的關(guān)鍵技術(shù),在沒有物理接觸的情況下,通過無線電信號實現(xiàn)對目標數(shù)據(jù)的讀取。RFID技術(shù)的廣泛使用,是促進物聯(lián)網(wǎng)技術(shù)發(fā)展的重要推動器。然而,RFID技術(shù)凸顯的安全隱患越來越嚴重,尤其是非法閱讀器可以任意地對標簽進行數(shù)據(jù)讀取,導致用戶的隱私泄露和企業(yè)的數(shù)據(jù)安全問題。由于RFID行業(yè)內(nèi)對于標簽成本低的要求,標簽的計算存儲能力無法滿足復雜的標簽認證邏輯。因此,文獻[2-10]針對RFID不同應用場景設(shè)計了標簽隱私安全解決方案。周世杰等[1]對RFID的保護技術(shù)做了歸納,將其分為以下三類:
(1) 基于改變標簽與具體目標關(guān)聯(lián)的方法。文獻[2]使用kill標簽來改變標簽和具體目標關(guān)聯(lián)。文獻[3]提出在標簽上設(shè)置物理開關(guān),以物理接觸方式實現(xiàn)睡眠與喚醒。該方法如若攻擊者獲得了標簽,就失去了保護功能,同時物理開關(guān)也會增加標簽設(shè)計難度和制造成本。此類物理方法較多應用于與消費者個人隱私相關(guān)的服裝制造業(yè),但通常在有效性較好的同時受制于標簽的高成本設(shè)計缺陷。
(2) 基于改變輸出唯一性的方法。由于標簽總是向閱讀器返回固定的標識符信息(如96位的EPC編碼),學者們提出采用標簽重命名及密碼學認證的方法來從根源上解決RFID隱私難題。首先,文獻[4]基于兩項攻擊假設(shè)提出最小密碼技術(shù),通過窮舉搜索完成標簽對閱讀器的認證。但是受制于標簽存儲容量,以及該方法可能會受到中間人攻擊和重放攻擊,復雜的協(xié)議在工業(yè)界也很難實現(xiàn)。隨后,文獻[5-8]根據(jù)前人密碼學研究方法的啟發(fā),紛紛提出基于加密、重加密、隨機Hash Lock的標簽解決方案。基于密碼學認證的方法是目前學術(shù)界解決RFID隱私的熱點,其在適用范圍和有效性方面均有突出的表現(xiàn)。
(3) 基于隱藏標簽的方法。數(shù)據(jù)處理能力受限、無線數(shù)據(jù)讀取及RFID返回標識符的唯一性,造成了標簽隱私難題的必然性。從隱藏標簽的角度出發(fā),文獻[9]提出的阻塞器的思想是通過技術(shù)手段,妨礙閱讀器對標簽的訪問,以造成通信信道的軟阻塞和主動干擾。該方法結(jié)合二叉樹算法來進行,在無線信號較強的場景下有很好的應用。另外,文獻[10]訪問控制功能實現(xiàn)的RFID Guardian平臺對隱藏標簽的設(shè)計也有突出的貢獻。
上述研究大多從三大角度探討和解決RFID中用戶個人偏好信息的隱私威脅。RFID隱私保護涉及面很廣,問題很多,呈現(xiàn)一種與應用高度相關(guān)、資源約束嚴峻等獨有的特征。拋開RFID的應用場景去談RFID標簽的安全問題,不僅不能解決安全隱患,而且毫無意義。隨著RFID應用的推廣,在物流、商品銷售、供應鏈管理等領(lǐng)域都會涉及RFID隱私問題[1]。因此,選取特定應用場景來探討標簽隱私問題是很有必要的。本文專注于RFID應用系統(tǒng)中的物流領(lǐng)域。
在傳統(tǒng)的RFID“標簽-閱讀器-后端系統(tǒng)”形式的物流系統(tǒng)中,采用RFID等物聯(lián)網(wǎng)采集設(shè)備將流通產(chǎn)品的初始數(shù)據(jù)從供應鏈源頭采集至物流系統(tǒng)中。這種模式?jīng)]有考慮惡意閱讀器對標簽數(shù)據(jù)的非法記錄問題,如果惡意閱讀器在沒有審查機制的情況下對數(shù)據(jù)進行非法記錄,就會導致供應鏈源頭數(shù)據(jù)的造假,同時在供應鏈的流通過程中也會泄露了企業(yè)對于產(chǎn)品部分敏感流通數(shù)據(jù)的隱私。例如在產(chǎn)品運輸環(huán)節(jié)中,惡意閱讀器可能將錯誤的位置信息提供給貨物調(diào)度中心的數(shù)據(jù)庫;零售環(huán)節(jié)中,未經(jīng)認證的惡意閱讀器會惡意篡改產(chǎn)品的庫存等信息。因此,惡意閱讀器對于物流信息的非法記錄會導致整個供應鏈產(chǎn)生嚴重的安全隱患。本文研究的側(cè)重點并非標簽產(chǎn)品的物流溯源,而是在于保證物流源頭數(shù)據(jù)的真實可靠,使得標簽產(chǎn)品數(shù)據(jù)免受非法閱讀器的惡意訪問。因此,本文涉及的物流部門中將不會涉及監(jiān)管部門和消費者,僅涉及供應商、生產(chǎn)商等源信息錄入部門以及配送商、零售商等流通部門。
本文基于聯(lián)盟區(qū)塊鏈技術(shù),結(jié)合具體的RFID物流場景,設(shè)計了面向聯(lián)盟鏈的RFID標簽高效保護模型(TDBPC模型)。依托于聯(lián)盟鏈的Fabric-CA數(shù)字證書技術(shù),將閱讀器是否合法映射成聯(lián)盟鏈中的客戶端是否持有訪問區(qū)塊鏈網(wǎng)絡的CA證書,只有持有部門中的CA機構(gòu)頒發(fā)的證書,閱讀器客戶端才有權(quán)限將標簽的流通信息寫入?yún)^(qū)塊鏈中。主要創(chuàng)新點包括以下三個方面:(1) 針對RFID產(chǎn)品流通領(lǐng)域,基于聯(lián)盟區(qū)塊鏈Fabric技術(shù)提出TDBPC模型。應用Fabric的CA證書,防止?jié)撛趷阂忾喿x器對區(qū)塊鏈網(wǎng)絡中的產(chǎn)品流通數(shù)據(jù)的非法寫入。(2) 創(chuàng)建了TDBPC模型中標簽信息初始錄入、合法閱讀器信息更新等智能合約,健壯了聯(lián)盟鏈系統(tǒng)。(3) 在防范了惡意閱讀器攻擊的基礎(chǔ)上,TDBPC模型具有通信和計算上的高效性。
所謂的RFID標簽安全問題,是指由于用戶因攜帶有不安全的RFID標簽導致個人或組織的秘密或敏感信息泄露[11]。RFID系統(tǒng)由標簽、閱讀器和后端系統(tǒng)組成,如圖1所示。通常情況下,在不設(shè)計較好的隱私保護協(xié)議的情況下,容易出現(xiàn)跟蹤攻擊和羅列攻擊。本文基于物流領(lǐng)域,將傳統(tǒng)的后端系統(tǒng)改造為聯(lián)盟區(qū)塊鏈網(wǎng)絡,基于聯(lián)盟鏈的嚴格準入機制(CA證書機制),實現(xiàn)產(chǎn)品的安全高效流通。
圖1 RFID標簽隱患示意圖
區(qū)塊鏈具有去中心化、時序數(shù)據(jù)、集體維護、可編程和安全可信等特點[12]。由于區(qū)塊鏈網(wǎng)絡中所有節(jié)點共同維護不可篡改的賬本,特別適用于具有動態(tài)性的海量設(shè)備的物聯(lián)網(wǎng)環(huán)境中。區(qū)塊鏈早期在互不信任的參與者之間維護一套不可篡改的分布式記賬系統(tǒng),隨著研究者對區(qū)塊鏈的深入探索,大機構(gòu)在以太坊和hyperledger聯(lián)盟鏈平臺做了較多的業(yè)務嘗試。以太坊大多采用PoW、PoS等基于證明的共識算法來實現(xiàn)公鏈和私鏈的排序服務,而Hyperledger針對聯(lián)盟組織業(yè)務的共識容錯和效率要求,大多采用Kafka、Raft和類Pbft的共識。同時,Hyperledger因其通道的設(shè)計,將組織間的業(yè)務隔離開來,提供了更細粒度的隱私保護機制。表1分別從幾個維度比較了兩個平臺的區(qū)別。
表1 eth和fabric平臺比較表
目前,聯(lián)盟企業(yè)進行信息上鏈一方面有較快交易速度和較低交易成本的要求,另一方面物流領(lǐng)域也需要相關(guān)部門的監(jiān)管。因此,以較被認可的Hyperledger Fabric項目為代表的這類聯(lián)盟鏈很適用于物流領(lǐng)域,文獻[13]將區(qū)塊鏈技術(shù)應用于供應鏈領(lǐng)域,研究了如何增強供應鏈的彈性,并探討了結(jié)合區(qū)塊鏈的供應鏈應用的各類風險和具體應用場景。諸如國內(nèi)螞蟻區(qū)塊鏈、趣鏈科技、華為區(qū)塊鏈等較大的區(qū)塊鏈平臺也基于Hyperledger Fabric進行試驗和改進。
將應用聯(lián)盟鏈于物流系統(tǒng)中,通常各參與方會使用終端采集設(shè)備如RFID將產(chǎn)品初始信息錄入到區(qū)塊鏈系統(tǒng)中,但是現(xiàn)有研究中對初始信息錄入的數(shù)據(jù)安全性討論較少。文獻[14]提出雙層架構(gòu)的溯源許可鏈共識機制,在不同層上使用不同的共識機制,以此提高溯源系統(tǒng)的效率。但是并沒有考慮RFID非法閱讀器在數(shù)據(jù)采集過程中對數(shù)據(jù)造假的可能性。文獻[15]提出的雙鏈溯源系統(tǒng)雖然在保證物流系統(tǒng)的高性能的同時,私鏈的建立使得惡意節(jié)點出現(xiàn)的可能大大減少,但是在供應商、經(jīng)銷商等信息采集部門對惡意RFID隱患的討論較少。隨后,文獻[16]指出,物流追溯體系設(shè)計的產(chǎn)品種類多、產(chǎn)品鏈長,單純的聯(lián)盟鏈架構(gòu)在流程和理論處仍有一定的局限。本文單獨解決供應商、生產(chǎn)商、配送商、零售商等用戶層使用RFID等采集設(shè)備錄入信息的安全隱患,應用Fabric的CA機制存在高準入機制的優(yōu)勢,不僅可以實現(xiàn)供應鏈上企業(yè)的高效業(yè)務協(xié)同,還可以解決閱讀器的惡意讀取難題。
本文系統(tǒng)基于Fabric聯(lián)盟鏈進行開發(fā),以去中心化的方式實現(xiàn)鏈上信息可追溯。以CA證書頒發(fā)的形式隔離非法閱讀器客戶端對數(shù)據(jù)的非法讀取,不僅為企業(yè)節(jié)約成本,而且保護了企業(yè)的隱私。
本文針對具體RFID產(chǎn)品流通領(lǐng)域,結(jié)合Fabric聯(lián)盟鏈及chaincode智能合約對傳統(tǒng)RFID后端數(shù)據(jù)庫進行改進,旨在保護聯(lián)盟企業(yè)對于敏感流通數(shù)據(jù)的保護。
為了更好地介紹本文提出的TDBPC模型的細節(jié),需要對模型提前建立以下假設(shè):
(1) 每一個標簽和閱讀器都有由區(qū)塊鏈網(wǎng)絡生成的唯一id,分別為tAdd和rAdd。閱讀器憑rAdd通過客戶端錄入或更新標簽數(shù)據(jù),只有持有該組織CA證書的rAdd才有權(quán)限操作區(qū)塊鏈數(shù)據(jù)。
(2) 假定閱讀器和標簽之間的信道不是安全的,而閱讀器和后端系統(tǒng)(區(qū)塊鏈網(wǎng)絡)的信道是安全的。
本模型中涉及的通信符號及含義如表2所示。
表2 符號說明表
1) fabric為RFID物流系統(tǒng)中的任意一個標簽和閱讀器提供唯一的標簽id和閱讀器id,同時為節(jié)點中的標簽和閱讀器用戶進行編號,Ti∈tAdd,Ri∈tAdd。
2) TDBPC聯(lián)盟鏈系統(tǒng)中涉及四個部門,分別為供應鏈中的生產(chǎn)商、批發(fā)商、配送商和零售商。本文將每個部門作為區(qū)塊鏈網(wǎng)絡中的1個組織,各個組織根據(jù)業(yè)務需要頒發(fā)給合法的閱讀器用戶CA證書。各個組織記為D={D1,D2,D3,D4},Di∈D。
3) 哈希值h,以及交易的時間戳t,均通過數(shù)字簽名的方式用來驗證閱讀器和交易的合法性。
面向聯(lián)盟鏈的RFID標簽高效保護模型的網(wǎng)絡拓撲如圖2所示。
圖2 TDBPC模型的網(wǎng)絡拓撲圖
其中,供應商和生產(chǎn)商等企業(yè)作為供應鏈的源頭,負責收集攜帶有標簽的產(chǎn)品信息,產(chǎn)生原始數(shù)據(jù),通過調(diào)用智能合約交易向聯(lián)盟鏈其他節(jié)點進行廣播交易。自供應商和生產(chǎn)商錄入標簽信息完成后,攜有標簽的產(chǎn)品進入物流的流通環(huán)節(jié)。
為了區(qū)分訪問鏈上標簽產(chǎn)品數(shù)據(jù)的閱讀器是否合法,本文引入了Fabric中的CA認證機制,CA認證機制模塊在Fabric中主要負責身份管理[17],完成數(shù)字證書驗證、簽名與驗證、私鑰管理等功能。將閱讀器是否有權(quán)限訪問抽象成是否持有各部門中CA證書。只有通過該部門注冊得到CA證書,并且驗證數(shù)字證書校驗通過,閱讀器客戶端才能有權(quán)限對peer節(jié)點發(fā)起txs交易查詢,peer節(jié)點安裝并調(diào)用chaincode合約發(fā)起對賬本中的標簽數(shù)據(jù)的查詢以及更新并返回給閱讀器賬戶?;趂abric-CA的準入機制的設(shè)計,非法閱讀器用戶將無權(quán)訪問標簽產(chǎn)品流通信息。
攜帶有標簽的產(chǎn)品在供應商和生產(chǎn)商將標簽產(chǎn)品初始信息tag_info錄入完成之后,即這批產(chǎn)品已經(jīng)面向供應鏈開始流通,各個部門根據(jù)自己業(yè)務的需要,在各組織中為合法的閱讀器用戶頒發(fā)CA證書。例如,生產(chǎn)商有用閱讀器讀取標簽完成流水線生產(chǎn)工序的需要,因此生產(chǎn)商會為一批閱讀器用戶頒發(fā)證書,表示為reader_valid=[R1,R2,R3,…]。其余部門如供應商、配送商和零售商也都有自己的需要,每一個部門根據(jù)各自組織的root-CA頒發(fā)合法的訪問證書。
在我們的設(shè)計中,使用Fabric提供的BCCSP加密服務完成CA工作,證書的頒發(fā)過程和驗證數(shù)字簽名的過程如圖3所示。
圖3 證書頒發(fā)與驗證簽名步驟
TDBPC模型中,CA證書頒發(fā)是各組織頒發(fā)給合法的客戶端的,也就是頒發(fā)給閱讀器賬戶。大致步驟描述如下:
步驟1閱讀器Ri將明文F發(fā)給某一組織的CA機構(gòu)CAi,CAi對證書明文F做h()哈希運算得到數(shù)字摘要h1=SHA256(F)。
步驟2CAi用自己的私鑰SCAi用RSA算法將h1加密,得到密文F′=RSA1024(h1)。此時CA結(jié)構(gòu)和閱讀器用戶之間有了一整套完整的數(shù)字證書Cer=
步驟3驗證閱讀器客戶端持有的數(shù)字證書是否合法,用CAi的公鑰解密密文得到h2=RSA1024(F′),再用證書明文F計算一次SHA256得到密文h1=SHA256(F)。
步驟4計算得出的h1和h2的值進行對比,如果有h1==h2,則證書校驗通過,說明該閱讀器客戶端持有的是CAi頒發(fā)的證書。
以閱讀器用戶判斷是否持有該組織頒發(fā)的證書,來決定閱讀器客戶端是否擁有向peer節(jié)點發(fā)起交易提案并獲得賬本中的敏感流通數(shù)據(jù)的權(quán)限。從而從準入機制的角度杜絕了惡意閱讀器的隱私攻擊,奠定了面向RFID流通中的聯(lián)盟鏈高效運作的基礎(chǔ)。
2.2.2合約設(shè)計
面向RFID流通的聯(lián)盟鏈高效保護模型共有四類參與者。針對每一類參與者職責的不同,設(shè)計了不同功能的智能合約,提供給peer節(jié)點安裝和執(zhí)行。各部門職責示意圖如圖4所示。
圖4 各部門合約職責示意圖
聯(lián)盟鏈的智能合約主要包括以下三個功能。
1) 供應及生產(chǎn)信息錄入。供應企業(yè)和生產(chǎn)企業(yè)作為供應鏈的源頭企業(yè),負責使用物聯(lián)網(wǎng)采集設(shè)備如RFID對標簽產(chǎn)品的初始信息進行錄入。供應企業(yè)負責產(chǎn)品的原材料名信息、原材料工廠信息、原材料細節(jié)等信息的初始采集。生產(chǎn)部門在得到供應企業(yè)的原材料后,生產(chǎn)產(chǎn)品在流水線上由工人進行產(chǎn)品的組裝或生產(chǎn)。在生產(chǎn)過程中使用RFID對產(chǎn)品進行掃描可以防止工序的紊亂,保證產(chǎn)品的計劃生產(chǎn)。
當供應和生產(chǎn)部門的讀寫器對產(chǎn)品掃描完成后,根據(jù)是否持有CA證書來決定讀寫器用戶是否具有將數(shù)據(jù)上鏈的權(quán)限。供應信息批次錄入建模為
算法1InitTag()算法
輸入:原材料名rawName,原材料工廠rawFactory,原材料加工信息rawInfo,寫入數(shù)據(jù)的閱讀器地址Ri。
輸出:供應信息輸入成功或失敗。
1. List[] SupReader;
//供應部門頒發(fā)的合法CA的閱讀器集合
2. Procedure InitTag()
3. if rawName==null‖Ri?SupReader then
4. return FALSE;
5. end if
6. raw.name=rawName;
7. raw.fac=rawFactory;
8. raw.rawInfo=rawInfo;
9. raw.reader=Ri;
10. return TRUE
11. end Procedure
2) 產(chǎn)品配送。配送商可以通過RFID閱讀器讀取區(qū)塊鏈中的標簽數(shù)據(jù)內(nèi)容,并將內(nèi)容和配送信息進行核對。同時,配送中將RFID標簽更新為最新的產(chǎn)品存放地點和在庫狀態(tài)。同樣地,記錄上鏈之前需要檢查閱讀器的合法性。偽代碼如算法2所示。
算法2UpdateTagLoc ()算法
輸入:配送地址deliveryLoc,配送信息deliveryInfo,在庫狀態(tài)stateTag,寫入數(shù)據(jù)的閱讀器地址Ri。
輸出:供應信息輸入成功或失敗。
1. List[] delReader;
//配送部門頒發(fā)的合法CA的閱讀器集合
2. stateTag=0;//初始默認不在庫
3. Procedure UpdateTagLoc ()
4. if deliveryLoc==null‖Ri?delReader then
5. return FALSE;
6. end if
7. del.loc=deliveryLoc;
8. stateTag=1;
//配送到指定地點,在庫
9. del.devInfo=deliveryInfo;
10. del.reader=Ri;
11. return TRUE
12. end Procedure
3) 產(chǎn)品零售。RFID可以改進零售商的庫存管理,實現(xiàn)實時補貨,有效跟蹤運輸和庫存。一旦惡意的閱讀器在零售環(huán)節(jié)惡意記錄庫存狀態(tài)并記錄上鏈,會侵犯零售企業(yè)的庫存隱私。因此,同樣需要零售企業(yè)的CA機構(gòu)的準入,閱讀器賬戶才能在sellInfo等字段中添加庫存視頻、零售環(huán)境等大文件的URL,并調(diào)用retailTag()合約對賬本實現(xiàn)修改。
TDBPC模型中,每一個部門通過閱讀器客戶端調(diào)用所負責的智能合約,實際上是更新區(qū)塊鏈底層狀態(tài)數(shù)據(jù)庫的最新賬本狀態(tài)。賬本由狀態(tài)數(shù)據(jù)庫和區(qū)塊鏈兩部分組成[18]。區(qū)塊鏈由orderer記賬節(jié)點負責,維護區(qū)塊鏈網(wǎng)絡中不可篡改的分布式賬本;狀態(tài)數(shù)據(jù)庫是指由全局交易導出的最新狀態(tài),本文采用key-value數(shù)據(jù)庫提高檢索性能。狀態(tài)數(shù)據(jù)庫的key值統(tǒng)一是標簽的地址tAdd,value值根據(jù)各部門的職責差異定義為不同的字段,但每次合法閱讀器客戶端操作完狀態(tài)數(shù)據(jù)庫后都需要添加自身地址的Ri字段來證明操作的合法性。賬本數(shù)據(jù)示意圖如表3所示。
表3 賬本數(shù)據(jù)key-value鍵值對
2.2.3共識機制
在各部門通過合法的閱讀器將標簽產(chǎn)品物流信息上傳到聯(lián)盟鏈網(wǎng)絡后,因為各部門嚴格按照CA證書的頒發(fā)來發(fā)放合法閱讀器用戶寫入信息的權(quán)力,所以可以保證鏈上流通信息的真實性和有效性。
在各節(jié)點上傳信息完成之后,一輪交易結(jié)束,我們選擇合適的共識算法對交易進行排序并打包分發(fā)。實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)[19]共識機制由Miguel Castro和 Barbara Liskov于1999年提出,PBFT算法流程如圖5所示。
圖5 PBFT算法通信流程
可以看出,PBFT算法的“三階段三廣播”算法隨著共識節(jié)點的增加,通信開銷的壓力將會非常明顯。而kafka共識一直沒有很好地解決去中心化的問題。因此,為了折中通信效率與惡意節(jié)點容錯的需求,本文使用Raft一致性算法作為驗證打包交易的共識算法。
Raft算法協(xié)議中,一個節(jié)點任一時刻都處于leader、follower、candidate三個狀態(tài)之中。簡單示意圖如圖6所示,每個節(jié)點都處于三個狀態(tài)的轉(zhuǎn)換之中,基于復制狀態(tài)機[20]的實現(xiàn),通常在不考慮節(jié)點容錯的情況下有較好的通信效率。
圖6 Raft三狀態(tài)狀態(tài)機簡單示意圖
Fabric1.4版本中已經(jīng)提供了Raft共識的排序服務。本文在Fabric中配置好raft-etcd模塊,在物流系統(tǒng)中每個部門里貢獻一個排序節(jié)點,共同組成交易排序服務,更好地體現(xiàn)了區(qū)塊鏈網(wǎng)絡的去中心化。
本文針對物流領(lǐng)域易出現(xiàn)的RFID安全問題,著重探討了物流聯(lián)盟鏈中初始數(shù)據(jù)采集的安全隱患。本節(jié)的安全隱患從兩大角度、三個方面對面向聯(lián)盟鏈的RFID流通高效保護模型進行安全性分析。跟蹤攻擊和羅列攻擊是對RFID安全性而言的,而不可篡改性是從區(qū)塊鏈安全交易的角度出發(fā)的。
跟蹤攻擊的發(fā)生很大程度上是因為RFID標簽每次響應RFID讀寫器的請求時,都返回相同的序列號。即使?jié)撛诘姆欠ㄩ喿x器讀取了標簽tAdd的序列號信息,由于無法破解CA機構(gòu)的密鑰,攻擊者獲取不到任何有用的產(chǎn)品流通信息。因此,設(shè)計的方案可以抵抗跟蹤攻擊。
假設(shè)攻擊者企圖通過監(jiān)聽一個完整的CA通信后,發(fā)動重放攻擊。由于證書中是加密后傳輸?shù)模l(fā)明文。同時假如攻擊者通過利用其余合法閱讀器的一次CA過期交易來發(fā)動重放攻擊,也可以通過區(qū)塊鏈交易獨一無二的時間戳,來有效抵御重放攻擊。
本文基于Fabric平臺進行聯(lián)盟鏈性能仿真實驗。實驗基于OpenSSL工具測算了CA證書頒發(fā)的Hash算法的時間開銷,并采用Hyperledger-fabric v1.4.0版本的開源框架,對系統(tǒng)的性能進行評測。
4.1.1實驗步驟
本文在供應商組織的一個peer節(jié)點上創(chuàng)建并配置好Raft模塊。然后,完善配置文件并在四個peer節(jié)點中安裝設(shè)計好的智能合約鏈碼,啟動區(qū)塊鏈網(wǎng)絡。cli客戶端向區(qū)塊鏈網(wǎng)絡中的節(jié)點提起交易請求,在固定時間內(nèi)連續(xù)對各cli容器發(fā)送交易,背書節(jié)點依據(jù)數(shù)字簽名驗證客戶端的合法性后,執(zhí)行智能合約交易,并由orderer節(jié)點排序打包分發(fā)給各peer節(jié)點。
本文采用每秒交易數(shù)量(Transacitons Per Second,TPS)來測算TDBPC模型的吞吐量:
(1)
式中:Δt為交易從發(fā)出到確認的時間間隔,也就是出塊時間;sumTransactionsΔt為Δt內(nèi)區(qū)塊中的交易總數(shù)。為了更好地探究peer節(jié)點數(shù)目n和出塊時間Δt對TPS的影響,本文控制變量設(shè)計了如下兩組實驗:
(1) 控制peer節(jié)點數(shù)目固定為4個。選取時間間隔(出塊時間)分別為10 s、20 s、40 s、80 s、150 s,每個時間間隔做3次實驗,并取各次實驗的TPS平均值,探究TPS與出塊時間的關(guān)系。
(2) 控制出塊時間Δt固定為40 s。分別選取網(wǎng)絡中2、4、8、12、16個peer節(jié)點作為模擬交易節(jié)點,同樣每次做3次實驗,并取各次實驗的TPS平均值,探究TPS與參與交易的peer節(jié)點數(shù)目的關(guān)系。
4.1.2實驗環(huán)境
區(qū)塊鏈網(wǎng)絡中配置Raft共識節(jié)點為區(qū)塊鏈網(wǎng)絡提供賬本分發(fā)和出塊服務。因Raft數(shù)據(jù)同步節(jié)點必須為奇數(shù)的要求[20],我們在實驗中配置5個orderer節(jié)點。
實驗在配置為i5-E52620 2.10 GHz處理器、32 GB內(nèi)存的Linux系統(tǒng)下,搭建若干臺虛擬機進行聯(lián)盟鏈模擬交易的仿真實驗。各節(jié)點均安裝Golang1.11和Docker18.09開發(fā)工具。當網(wǎng)絡中有4個peer節(jié)點參與交易時,配置情況如表4所示。當進行4.1.1中第二組實驗時,添加和刪除區(qū)塊鏈網(wǎng)絡中的peer交易節(jié)點,其配置信息類似,不再贅述。
表4 節(jié)點配置信息
聯(lián)盟鏈各部門節(jié)點首先為合法閱讀器用戶頒發(fā)CA準入證書。我們在10.10.64.203的對應供應商組織的節(jié)點上使用OpenSSL工具測算了CA證書頒發(fā)的Hash算法的時間開銷,該開銷如表5所示。
表5 Hash算法的時間開銷
實驗中,我們將100條模擬的物流數(shù)據(jù)分成四組,分別對應供應信息、生產(chǎn)信息、配送信息、零售信息,一段時間內(nèi)重復不斷發(fā)送交易數(shù)據(jù),用戶端在各自的peer節(jié)點上填入合約參數(shù)執(zhí)行交易,并依據(jù)Raft共識由orderer節(jié)點確認出塊。
(1) TPS與出塊時間的關(guān)系。本文使每個組織貢獻一個peer節(jié)點,采用4個peer節(jié)點固定不變,在10 s、20 s、40 s、80 s、150 s五個不同的時間間隔下,每個時間間隔測試3次,最后取3次實驗的TPS平均值。結(jié)果如表6所示。
表6 不同時間間隔交易確認數(shù)量表
為了直觀地說明TPS隨出塊時間變化的關(guān)系,按照式(1)得到如圖7所示的關(guān)系。
圖7 TPS隨出塊時間變化圖
可以看出,當出塊時間超過40 s,交易數(shù)量的增長率明顯降低,TPS隨著區(qū)塊數(shù)量的增多隨之減慢。原因在于當網(wǎng)絡中的區(qū)塊增多,交易數(shù)量超過單個節(jié)點的處理能力時,系統(tǒng)會線程阻塞,TPS會有明顯的下降。
(2) TPS與peer節(jié)點數(shù)目的關(guān)系。本組對比實驗控制每次實驗的時間間隔均為40 s,每當交易產(chǎn)生40 s后終止實驗。最開始從供應商和生產(chǎn)商組織中各取1個節(jié)點共2個節(jié)點進行模擬交易,并依次增加節(jié)點為4、8、12、16個peer節(jié)點共5組進行聯(lián)盟鏈模擬實驗。同樣地,每個peer數(shù)目執(zhí)行3次測試并取TPS平均值。結(jié)果如表7所示。
表7 不同peer節(jié)點數(shù)目交易數(shù)量表
為了全面評測算法的性能,將本實驗中不同peer節(jié)點數(shù)目的TPS情況和目前最為成熟的支持智能合約的Ethereum和Paity項目作了對比,結(jié)果如圖8所示??梢钥闯觯蕴黄脚_和Raft共識在網(wǎng)絡中存在大約8個peer節(jié)點的情況下,擁有最優(yōu)的吞吐量性能。同時值得注意的是,當fabric網(wǎng)絡中超過16個peer節(jié)點后,整個系統(tǒng)會無法工作甚至崩潰。因此,選取合適的節(jié)點數(shù)目,對聯(lián)盟鏈系統(tǒng)的性能起著決定性的作用。
圖8 三類智能合約平臺TPS隨節(jié)點數(shù)目變化圖
綜上兩組實驗,使用Raft共識的etcd-raft模塊,系統(tǒng)的吞吐量可以穩(wěn)定達到2 000 TPS左右,基本滿足了商用價值。將聯(lián)盟鏈應用于RFID產(chǎn)品流通來對流通中的標簽進行高效保護,不但可以通過CA數(shù)字證書防范惡意閱讀器用戶的訪問請求,而且聯(lián)盟鏈還使用了Raft算法滿足了物聯(lián)網(wǎng)和RFID環(huán)境下多節(jié)點、動態(tài)性等要求。當然,TPS這一性能指標如果沒有達到一個數(shù)量級的差異,其實并不需要太多關(guān)注,因為在實際配置和應用中,網(wǎng)絡帶寬、硬件配置、節(jié)點數(shù)量等變量都會對TPS的數(shù)值產(chǎn)生影響。
RFID安全問題在應用場景的差異下,技術(shù)實現(xiàn)難度、成本高低、適用范圍大小、有效性優(yōu)劣都可以作為在各應用場景下RFID保護的評價標準。表8從這幾大維度比較了本文方案與現(xiàn)有優(yōu)秀的RFID安全解決方案。結(jié)果表明本文方案基于物流聯(lián)盟鏈能夠保護RFID標簽安全,同時在交易性能上穩(wěn)定且高效。
表8 本方案與現(xiàn)有RFID隱私保護技術(shù)比較
隨著物聯(lián)網(wǎng)時代的到來,供應鏈物流領(lǐng)域中RFID作為終端采集設(shè)備存在諸多安全隱患。本文從產(chǎn)品流通的場景出發(fā),結(jié)合聯(lián)盟鏈多組織使用CA手段隔離非法閱讀器客戶端,以去中心化的方式保證標簽產(chǎn)品的數(shù)據(jù)安全。安全性分析表明,CA機制可以隔離潛在的非法閱讀器對標簽數(shù)據(jù)的讀寫訪問。同時聯(lián)盟鏈性能分析表明,采用折中的Raft共識算法,聯(lián)盟鏈的運行效率較為可觀。下一步將在實驗中采取多通道的設(shè)計,實現(xiàn)更為負責的對標簽產(chǎn)品的業(yè)務功能,同時也實現(xiàn)更細粒度的數(shù)據(jù)隔離,以解決RFID在物流領(lǐng)域中大規(guī)模應用的瓶頸。