許繼平 孫鵬程 張 新 王小藝 孔建磊 趙峙堯
(1.北京工商大學(xué)計(jì)算機(jī)與信息工程學(xué)院, 北京 100048;2.北京工商大學(xué)北京市食品安全大數(shù)據(jù)技術(shù)重點(diǎn)實(shí)驗(yàn)室, 北京 100048)
近年來(lái),食品安全問(wèn)題受到了國(guó)家和政府的高度關(guān)注[1-2],這些問(wèn)題暴露了當(dāng)前食品安全管理體系中存在的諸多漏洞。糧油是對(duì)谷類(lèi)、豆類(lèi)等糧食和油料及其加工成品和半成品的統(tǒng)稱(chēng),是人類(lèi)賴以生存的必需品,其供應(yīng)鏈的安全直接影響糧油食品品質(zhì)的安全,因此糧油食品供應(yīng)鏈信息安全監(jiān)管尤為重要。目前,在對(duì)糧油供應(yīng)鏈的研究上,各國(guó)政府、相關(guān)企業(yè)構(gòu)建了供應(yīng)鏈信息監(jiān)管體系,通過(guò)將溯源體系納入法律體系,構(gòu)建統(tǒng)一的追蹤溯源標(biāo)識(shí)碼,對(duì)供應(yīng)鏈上信息進(jìn)行追蹤溯源[3-12]。然而這并不能完全解決供應(yīng)鏈信息安全管理中存在的問(wèn)題。
圖1 糧油食品全供應(yīng)鏈流程
糧油食品供應(yīng)鏈具有全生命周期長(zhǎng)、環(huán)節(jié)復(fù)雜、危害物種類(lèi)多、信息多源異構(gòu)等特點(diǎn),其信息安全管理研究中目前尚未完全解決的問(wèn)題主要有:一是由于糧油食品供應(yīng)鏈參與主體多、環(huán)節(jié)跨地域、循環(huán)周期長(zhǎng),有別于其他食品供應(yīng)鏈參與主體,糧食食品供應(yīng)鏈各環(huán)節(jié)參與企業(yè)或組織不同,供應(yīng)鏈信息共享性差,各環(huán)節(jié)主體相互之間,尤其是非相鄰環(huán)節(jié)主體之間,存在數(shù)據(jù)信任問(wèn)題。二是目前的供應(yīng)鏈管理系統(tǒng)大多以參與主體為中心的自建、自主管理為主,在現(xiàn)實(shí)層面中主要通過(guò)一系列的法律法規(guī)、各級(jí)政策規(guī)范、參與人員的職業(yè)道德等進(jìn)行監(jiān)管,在與現(xiàn)實(shí)層面平行的計(jì)算機(jī)信息層面中,存在信息丟失和易被篡改的問(wèn)題。三是在糧油食品全供應(yīng)鏈中,目前大都是以靜態(tài)標(biāo)識(shí)追溯基本信息,而全生命周期多維異構(gòu)信息的動(dòng)態(tài)實(shí)時(shí)追溯更加重要。
區(qū)塊鏈?zhǔn)且环N分布式賬簿技術(shù)[13-14],具有全網(wǎng)記錄、低成本、高效率、安全可靠等技術(shù)特點(diǎn),采用區(qū)塊鏈技術(shù)可實(shí)現(xiàn)網(wǎng)絡(luò)信息一體化,使供應(yīng)鏈上各企業(yè)地位平等,推動(dòng)信息在供應(yīng)鏈中高效、流暢地傳遞,促進(jìn)信息公開(kāi)透明,減少中心化帶來(lái)的信任問(wèn)題,同時(shí)區(qū)塊鏈?zhǔn)构?yīng)鏈上信息交互數(shù)字化,通過(guò)智能合約技術(shù)實(shí)現(xiàn)數(shù)據(jù)的核查、校驗(yàn),使用數(shù)字簽名和加密技術(shù),使數(shù)據(jù)安全高效地傳輸,提高工作效率,保障信息安全可信。近年來(lái),一些研究將區(qū)塊鏈技術(shù)與食品和農(nóng)產(chǎn)品供應(yīng)鏈結(jié)合起來(lái)[15-19]。利用區(qū)塊鏈技術(shù),能夠建立糧油食品全供應(yīng)鏈上多角色之間的信任問(wèn)題,建立可靠的互信機(jī)制,解決信息不對(duì)稱(chēng)問(wèn)題[20],為信息安全管理提供真實(shí)可信的平臺(tái)。
本文首先對(duì)糧油食品全供應(yīng)鏈的運(yùn)作流程進(jìn)行分析,基于區(qū)塊鏈構(gòu)建糧油食品全供應(yīng)鏈信息安全管理模型,提出基于糧油食品供應(yīng)鏈的雙模存儲(chǔ)機(jī)制和智能合約設(shè)計(jì)方案;然后,基于糧油食品全供應(yīng)鏈信息安全模型設(shè)計(jì)糧油食品全供應(yīng)鏈信息安全管理原型系統(tǒng)架構(gòu),并提出原型系統(tǒng)設(shè)計(jì)方案;最后,結(jié)合實(shí)際案例對(duì)所設(shè)計(jì)的系統(tǒng)進(jìn)行驗(yàn)證和分析。
在糧油食品全供應(yīng)鏈中,參與活動(dòng)的主體主要是:原材料供應(yīng)商、生產(chǎn)企業(yè)、加工制造企業(yè)、分銷(xiāo)商、銷(xiāo)售商、消費(fèi)者。這些主體之間并不都是相互關(guān)聯(lián)的,目前大多以糧油加工企業(yè)為供應(yīng)鏈的核心,其通過(guò)整合上游種植戶、下游銷(xiāo)售部門(mén),并借助研究機(jī)構(gòu)、物流企業(yè)、金融機(jī)構(gòu)等優(yōu)勢(shì)對(duì)物流、商流、信息流、資金流實(shí)施供應(yīng)鏈管理。這種模式下供應(yīng)鏈參與企業(yè)眾多,節(jié)點(diǎn)企業(yè)的信息水平參差不齊,不同的標(biāo)準(zhǔn)和不一致的存儲(chǔ)格式也使信息無(wú)法順利傳遞且需求信息具有可變更性和時(shí)效性。供應(yīng)鏈節(jié)點(diǎn)是獨(dú)立的利益體,只專(zhuān)注于各自領(lǐng)域的數(shù)據(jù)和業(yè)務(wù)處理,由于缺乏相應(yīng)的接口標(biāo)準(zhǔn)和規(guī)范,它們之間沒(méi)有信息共享和業(yè)務(wù)集成,形成了“信息孤島”。供應(yīng)鏈中的信息孤島不僅影響整個(gè)供應(yīng)鏈的企業(yè)信息建設(shè)和信息共享,而且嚴(yán)重影響對(duì)供應(yīng)鏈的信息監(jiān)管和追溯。
糧油食品全供應(yīng)鏈流程如圖1所示。糧油食品全供應(yīng)鏈上包括種植、倉(cāng)儲(chǔ)、加工、物流和銷(xiāo)售等環(huán)節(jié)。信息安全管理系統(tǒng)需要將供應(yīng)鏈所有節(jié)點(diǎn)的數(shù)據(jù)信息都記錄在數(shù)據(jù)庫(kù)中,其數(shù)據(jù)信息主要包括作物的基本屬性、作物的品質(zhì)信息、各環(huán)節(jié)的環(huán)境信息、作物加工的流程和操作參數(shù)、各環(huán)節(jié)的管理信息等。為實(shí)現(xiàn)糧油食品全供應(yīng)鏈信息安全管理系統(tǒng),需要通過(guò)物聯(lián)網(wǎng)技術(shù)采集供應(yīng)鏈各環(huán)節(jié)的數(shù)據(jù)信息。
針對(duì)糧油食品全供應(yīng)鏈的信息安全管理,結(jié)合區(qū)塊鏈技術(shù),建立與糧油食品全供應(yīng)鏈環(huán)節(jié)對(duì)應(yīng)的區(qū)塊鏈節(jié)點(diǎn),采用區(qū)塊鏈鏈?zhǔn)酱鎯?chǔ)和關(guān)系型數(shù)據(jù)庫(kù)雙模存儲(chǔ)機(jī)制,構(gòu)建糧油食品全供應(yīng)鏈信息安全管理模型,如圖2所示。
圖2 糧油食品全供應(yīng)鏈信息安全管理模型
整個(gè)糧油食品全供應(yīng)鏈信息安全管理模型分為3部分,包括:糧油食品全供應(yīng)鏈信息采集系統(tǒng)、數(shù)據(jù)管理網(wǎng)絡(luò)、應(yīng)用平臺(tái)。糧油食品供應(yīng)鏈上各節(jié)點(diǎn)都包含大量的數(shù)據(jù),這些數(shù)據(jù)通過(guò)數(shù)據(jù)采集終端(包括計(jì)算機(jī)、手機(jī)、各類(lèi)物聯(lián)網(wǎng)設(shè)備等)采集并經(jīng)過(guò)一定的處理后,上傳至數(shù)據(jù)管理網(wǎng)絡(luò)中。數(shù)據(jù)管理網(wǎng)絡(luò)采用的是區(qū)塊鏈和關(guān)系型數(shù)據(jù)庫(kù)構(gòu)成的雙模存儲(chǔ)機(jī)制,將信息采集系統(tǒng)處理過(guò)的數(shù)據(jù),通過(guò)調(diào)用部署在區(qū)塊鏈網(wǎng)絡(luò)上的智能合約校驗(yàn),在區(qū)塊鏈網(wǎng)絡(luò)中對(duì)數(shù)據(jù)進(jìn)行廣播,使各節(jié)點(diǎn)對(duì)上傳的數(shù)據(jù)達(dá)成共識(shí),然后將信息經(jīng)過(guò)哈希算法轉(zhuǎn)換生成的數(shù)據(jù)摘要打包成區(qū)塊保存到區(qū)塊鏈網(wǎng)絡(luò)上的分布式賬本中,同時(shí)供應(yīng)鏈的完整數(shù)據(jù)信息和智能合約返回的區(qū)塊和數(shù)據(jù)間的映射關(guān)系,如區(qū)塊的高度、交易ID等,都將保存到鏈下關(guān)系型數(shù)據(jù)庫(kù)中。應(yīng)用平臺(tái)是基于糧油食品全供應(yīng)鏈信息采集系統(tǒng)和數(shù)據(jù)管理網(wǎng)絡(luò)的綜合應(yīng)用,其主要服務(wù)于糧油食品供應(yīng)鏈各環(huán)節(jié)的相關(guān)企業(yè)、監(jiān)管部門(mén)和消費(fèi)者。這些用戶通過(guò)使用平臺(tái)提供的相應(yīng)功能模塊執(zhí)行相應(yīng)的功能,比如監(jiān)管部門(mén)對(duì)供應(yīng)鏈進(jìn)行實(shí)時(shí)監(jiān)控、消費(fèi)者對(duì)產(chǎn)品進(jìn)行溯源查詢、企業(yè)對(duì)自己的信息進(jìn)行管理和分享等。
數(shù)據(jù)信息通過(guò)數(shù)據(jù)采集終端獲取,經(jīng)由智能合約驗(yàn)證后形成數(shù)據(jù)摘要,同時(shí)將完整數(shù)據(jù)上傳到關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)。數(shù)據(jù)的防篡改機(jī)制除了依靠區(qū)塊鏈網(wǎng)絡(luò)自身具有的不可篡改的特點(diǎn)外,還通過(guò)智能合約監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)間的映射關(guān)系,防止信息發(fā)生篡改。糧油食品全供應(yīng)鏈信息安全主要面向各相關(guān)企業(yè)、消費(fèi)者、監(jiān)管部門(mén),因此利用區(qū)塊鏈賦予各角色不同的權(quán)限,通過(guò)智能合約依照權(quán)限查詢或提交相應(yīng)的信息,既保證了信息的公開(kāi)透明,又保證了各企業(yè)的商業(yè)隱私。
1.2.1“鏈上+鏈下”雙模存儲(chǔ)機(jī)制
糧油食品供應(yīng)鏈具有節(jié)點(diǎn)多、供應(yīng)鏈長(zhǎng)和涉及面廣的特點(diǎn),鏈上各環(huán)節(jié)都包含大量的數(shù)據(jù),如果一次性上傳到區(qū)塊鏈網(wǎng)絡(luò)中,上傳速度慢,區(qū)塊鏈的負(fù)荷大,運(yùn)行成本高,而且對(duì)區(qū)塊鏈網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的硬件設(shè)施要求都會(huì)很高,在本文的模型中,提出一種“鏈上(on-chain)+鏈下(off-chain)”雙模存儲(chǔ)機(jī)制,通過(guò)將糧油食品供應(yīng)鏈上各環(huán)節(jié)的詳細(xì)數(shù)據(jù)信息經(jīng)過(guò)智能合約驗(yàn)證,最終與數(shù)據(jù)所在的區(qū)塊鏈位置信息一同存入關(guān)系型數(shù)據(jù)庫(kù)中。區(qū)塊鏈網(wǎng)絡(luò)中存儲(chǔ)的數(shù)據(jù)為經(jīng)過(guò)哈希計(jì)算的數(shù)據(jù)以及該數(shù)據(jù)對(duì)應(yīng)的唯一標(biāo)識(shí)碼。通過(guò)這種方式,既提高了區(qū)塊鏈的運(yùn)行效率,同時(shí)保障數(shù)據(jù)的安全可信。針對(duì)糧油食品全供應(yīng)鏈各環(huán)節(jié)的信息安全管理和追溯,構(gòu)建了糧油食品全供應(yīng)鏈數(shù)據(jù)存儲(chǔ)模型,如圖3所示。
圖3 糧油食品全供應(yīng)鏈數(shù)據(jù)存儲(chǔ)模型
1.2.2糧油食品供應(yīng)鏈智能合約
智能合約是一種去中心化的、可自行校驗(yàn)、自動(dòng)執(zhí)行核心內(nèi)容的有約束力的數(shù)字化協(xié)議,通過(guò)設(shè)置一些可自動(dòng)觸發(fā)的執(zhí)行條件,為區(qū)塊鏈網(wǎng)絡(luò)中的用戶提供信息交互、價(jià)值轉(zhuǎn)移等功能[21]。以Hyperledger Fabric區(qū)塊鏈平臺(tái)為例,其運(yùn)作流程如圖4所示。當(dāng)智能合約代碼編寫(xiě)完成,通過(guò)區(qū)塊鏈上的節(jié)點(diǎn)將智能合約安裝到區(qū)塊鏈網(wǎng)絡(luò)中,然后進(jìn)行初始化和實(shí)例化。當(dāng)節(jié)點(diǎn)上傳的信息或者調(diào)用的功能滿足相應(yīng)合約的觸發(fā)條件后,系統(tǒng)將自動(dòng)調(diào)用合約實(shí)現(xiàn)相應(yīng)的功能。通過(guò)編寫(xiě)智能合約實(shí)現(xiàn)對(duì)供應(yīng)鏈各個(gè)環(huán)節(jié)產(chǎn)品的智能監(jiān)控。如果已有現(xiàn)成的物聯(lián)網(wǎng)系統(tǒng)和接口,可以通過(guò)接口連接到區(qū)塊鏈網(wǎng)絡(luò),一旦數(shù)據(jù)有異常,就會(huì)自動(dòng)觸發(fā)報(bào)警合約,報(bào)警信息會(huì)發(fā)送到企業(yè)或監(jiān)管部門(mén)。這些產(chǎn)品標(biāo)準(zhǔn)可以參考糧油食品行業(yè)標(biāo)準(zhǔn)、專(zhuān)家意見(jiàn)等,將相應(yīng)的標(biāo)準(zhǔn)作為智能合約的一部分,驗(yàn)證相應(yīng)的合約數(shù)據(jù)和監(jiān)控鏈上的交易信息。如圖5所示,根據(jù)糧食行業(yè)國(guó)家標(biāo)準(zhǔn), 在智能合約中預(yù)先設(shè)置數(shù)據(jù)準(zhǔn)入條件,如小麥雜質(zhì)質(zhì)量分?jǐn)?shù)在1.0%以內(nèi)、含水率在12.5%以內(nèi)等。若通過(guò)此環(huán)節(jié)的糧油食品供應(yīng)鏈數(shù)據(jù)滿足預(yù)置的數(shù)據(jù)準(zhǔn)入條件,糧油食品可進(jìn)入供應(yīng)鏈的下一個(gè)環(huán)節(jié),否則系統(tǒng)會(huì)提示警告,同時(shí)追蹤報(bào)警源頭方便企業(yè)和監(jiān)管部門(mén)及時(shí)排査并處理安全隱患,避免質(zhì)量安全事件的發(fā)生。
圖4 智能合約流程
圖5 糧油食品供應(yīng)鏈智能合約
在本文提出的糧油食品全供應(yīng)鏈信息安全管理模型基礎(chǔ)上,設(shè)計(jì)了糧油食品全供應(yīng)鏈信息安全管理原型系統(tǒng)。系統(tǒng)架構(gòu)如圖6所示,分為物理層、網(wǎng)絡(luò)層、數(shù)據(jù)庫(kù)層和應(yīng)用層。其中區(qū)塊鏈技術(shù)主要應(yīng)用于數(shù)據(jù)庫(kù)層和網(wǎng)絡(luò)層。
圖6 糧油食品全供應(yīng)鏈信息安全管理原型系統(tǒng)架構(gòu)
物理層主要是數(shù)據(jù)采集的終端,用于對(duì)糧油食品全供應(yīng)鏈各環(huán)節(jié)進(jìn)行數(shù)據(jù)采集并使用通信協(xié)議上傳到系統(tǒng)中。
網(wǎng)絡(luò)層主要包括網(wǎng)絡(luò)結(jié)構(gòu)和通信協(xié)議。網(wǎng)絡(luò)主要分為兩大類(lèi),一類(lèi)是物聯(lián)網(wǎng)設(shè)備在數(shù)據(jù)傳輸時(shí)常用的藍(lán)牙、ZigBee、RFID等通信機(jī)制;另一類(lèi)是軟件在運(yùn)行中傳輸常使用的通信機(jī)制,如以太網(wǎng)、WiFi、4G等。本系統(tǒng)通信協(xié)議應(yīng)用的是超級(jí)賬本平臺(tái)的數(shù)據(jù)傳輸協(xié)議,包括Grpc協(xié)議和Gossip協(xié)議,以提高共識(shí)速度和網(wǎng)絡(luò)安全。
數(shù)據(jù)庫(kù)層用來(lái)存放系統(tǒng)中所有的數(shù)據(jù),由兩個(gè)部分組成。一部分是區(qū)塊鏈網(wǎng)絡(luò)中的分布式賬本,記錄了原始數(shù)據(jù)的數(shù)據(jù)摘要、時(shí)間戳、原始數(shù)據(jù)的標(biāo)識(shí)碼、數(shù)字簽名等,同時(shí)網(wǎng)絡(luò)中的數(shù)據(jù)設(shè)有訪問(wèn)權(quán)限,不同權(quán)限的節(jié)點(diǎn)查看的信息數(shù)量不同;另一部分是鏈下數(shù)據(jù)庫(kù),主要用來(lái)存儲(chǔ)通過(guò)智能合約驗(yàn)證后的完整原始數(shù)據(jù)以及其與區(qū)塊鏈網(wǎng)絡(luò)間的映射關(guān)系信息。通過(guò)這種方法,避免了區(qū)塊鏈存儲(chǔ)能力不足的問(wèn)題,同時(shí)保證了數(shù)據(jù)信息的安全可信。
應(yīng)用層是在已有的區(qū)塊鏈網(wǎng)絡(luò)的基礎(chǔ)上,通過(guò)底層區(qū)塊鏈提供的API接口,設(shè)計(jì)一個(gè)完整的信息安全管理平臺(tái),面向的對(duì)象主要包括消費(fèi)者、企業(yè)、監(jiān)管部門(mén)和可信的服務(wù)提供商,用來(lái)實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)需求。
通過(guò)對(duì)糧油食品全供應(yīng)鏈特點(diǎn)的分析,結(jié)合供應(yīng)鏈上下游企業(yè)的實(shí)際生產(chǎn)過(guò)程,確定了系統(tǒng)的架構(gòu)。系統(tǒng)主要面向供應(yīng)鏈的上下游企業(yè)、監(jiān)管部門(mén)和消費(fèi)者提供服務(wù),包含供應(yīng)鏈信息管理、用戶管理、質(zhì)檢信息管理、產(chǎn)品溯源和監(jiān)控預(yù)警5個(gè)模塊,如圖7所示。其中,供應(yīng)鏈信息管理中包括種植管理、倉(cāng)儲(chǔ)管理、加工管理、物流管理和銷(xiāo)售管理5個(gè)子模塊,主要實(shí)現(xiàn)的是糧油食品全供應(yīng)鏈生產(chǎn)管理和溯源追蹤信息的采集。用戶管理為糧油食品全供應(yīng)鏈上各環(huán)節(jié)的不同角色分配不同的功能權(quán)限,不同類(lèi)型的用戶相互合作,共同完成糧油食品全供應(yīng)鏈信息安全管理系統(tǒng)的運(yùn)行。質(zhì)檢信息管理提供質(zhì)檢部門(mén)的檢測(cè)信息。監(jiān)控預(yù)警和產(chǎn)品溯源分別為監(jiān)管部門(mén)和消費(fèi)者提供供應(yīng)鏈上的信息。監(jiān)管部門(mén)通過(guò)監(jiān)控預(yù)警模塊對(duì)供應(yīng)鏈上下游企業(yè)上傳的數(shù)據(jù)信息以及相關(guān)質(zhì)檢單位出具的檢驗(yàn)報(bào)告進(jìn)行檢查分析,實(shí)施對(duì)糧油食品全供應(yīng)鏈的信息管理。
圖7 糧油食品全供應(yīng)鏈信息安全管理系統(tǒng)
2.3.1平臺(tái)選擇
區(qū)塊鏈通常被分為公有鏈、聯(lián)盟鏈和私有鏈。公有鏈?zhǔn)峭耆_(kāi)放的,任何人都可以在公有鏈上進(jìn)行交易操作,以比特幣、Ethereum(以太坊)等為代表。聯(lián)盟鏈?zhǔn)且徊糠制髽I(yè)或組織組成的,其加入和退出都要經(jīng)過(guò)鏈上組織的認(rèn)可,具有部分去中心化的特點(diǎn),以Hyperledger為代表。私有鏈一般在公司或組織內(nèi)部使用,其鏈上的操作權(quán)限都是由一個(gè)組織掌握,主要被用來(lái)進(jìn)行內(nèi)部工作的管理。表1展示了如今兩大熱門(mén)區(qū)塊鏈平臺(tái)的對(duì)比分析。通過(guò)對(duì)比分析,以太坊作為公有鏈平臺(tái),其共識(shí)基礎(chǔ)為PoW(基于工作量的證明),并不適合應(yīng)用在供應(yīng)鏈這樣交易頻繁、以信息交互為主的非金融領(lǐng)域。同時(shí)Hyperledger作為聯(lián)盟鏈平臺(tái),在高可用、高性能和隱私保護(hù)上優(yōu)勢(shì)更明顯,其特有的角色權(quán)限機(jī)制可以使監(jiān)管部門(mén)擁有監(jiān)管權(quán),也能夠?qū)ζ渌巧_(kāi)放對(duì)應(yīng)的權(quán)限,既保護(hù)了供應(yīng)鏈上的隱私信息,又保證了信息的公開(kāi)透明。因此本文選擇Hyperledger下的Fabric平臺(tái)來(lái)構(gòu)建糧油食品全供應(yīng)鏈信息安全管理系統(tǒng)。
表1 區(qū)塊鏈平臺(tái)對(duì)比
2.3.2系統(tǒng)實(shí)現(xiàn)過(guò)程
軟件系統(tǒng)運(yùn)行于供應(yīng)鏈各個(gè)環(huán)節(jié),功能是記錄當(dāng)前時(shí)刻生產(chǎn)流通情況,讀寫(xiě)各環(huán)節(jié)標(biāo)識(shí)信息,向數(shù)據(jù)庫(kù)和區(qū)塊鏈網(wǎng)絡(luò)中發(fā)送和接收供應(yīng)鏈相關(guān)數(shù)據(jù),提供查詢、追溯、監(jiān)控等功能。整個(gè)系統(tǒng)包含的子系統(tǒng)有糧油食品全供應(yīng)鏈區(qū)塊鏈系統(tǒng)、糧油食品全供應(yīng)鏈信息安全數(shù)據(jù)庫(kù)、糧油食品全供應(yīng)鏈信息安全管理平臺(tái)等。系統(tǒng)采用瀏覽器/服務(wù)器(B/S)結(jié)構(gòu),由數(shù)據(jù)庫(kù)、服務(wù)器端和用戶端組成。
軟件平臺(tái)基于TCP/IP協(xié)議的網(wǎng)絡(luò)技術(shù),結(jié)合區(qū)塊鏈、數(shù)據(jù)庫(kù)、軟件工程和數(shù)據(jù)編碼等,以Hyperledger Fabric作為區(qū)塊鏈平臺(tái),MySQL作為云數(shù)據(jù)庫(kù),Go、JavaScript、Html、Css等作為開(kāi)發(fā)語(yǔ)言構(gòu)建,使用Nodejs、Bootstrap等框架開(kāi)發(fā),以Json格式統(tǒng)一處理和發(fā)送數(shù)據(jù)。系統(tǒng)采用瀏覽器/服務(wù)器(B/S)結(jié)構(gòu),運(yùn)行在廣域網(wǎng)和局域網(wǎng)中。
(1)數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)部分采用區(qū)塊鏈和關(guān)系型數(shù)據(jù)庫(kù)結(jié)合的設(shè)計(jì)方法。區(qū)塊鏈部分基于Fabric開(kāi)發(fā),區(qū)塊信息以文件的形式存儲(chǔ)在文件系統(tǒng)中,歷史數(shù)據(jù)和區(qū)塊鏈的索引存儲(chǔ)在默認(rèn)的levelDB數(shù)據(jù)庫(kù)中。Fabric當(dāng)前支持levelDB和couchDB兩種非關(guān)系型數(shù)據(jù)庫(kù),考慮到糧油食品供應(yīng)鏈平臺(tái)調(diào)用智能合約產(chǎn)生的業(yè)務(wù)數(shù)據(jù)種類(lèi)多,對(duì)于查詢的需求較高,因此采用支持富查詢的couchDB數(shù)據(jù)庫(kù)作為Fabric的狀態(tài)數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)基于MySQL開(kāi)發(fā),在確定需要追溯的數(shù)據(jù)信息后,建立糧油食品全供應(yīng)鏈信息安全數(shù)據(jù)庫(kù),對(duì)糧油食品全供應(yīng)鏈各環(huán)節(jié)的信息及區(qū)塊鏈網(wǎng)絡(luò)中的關(guān)鍵信息進(jìn)行記錄。數(shù)據(jù)庫(kù)內(nèi)容由標(biāo)識(shí)碼、文字、數(shù)字、圖像等構(gòu)成,并根據(jù)供應(yīng)鏈流程及各環(huán)節(jié)內(nèi)部流程作為區(qū)分構(gòu)建獨(dú)立又相互聯(lián)系的數(shù)據(jù)表和庫(kù),并通過(guò)中心化的信息安全管理平臺(tái)去采集和檢索供應(yīng)鏈各環(huán)節(jié)的信息。
(2)服務(wù)器端
區(qū)塊鏈平臺(tái)Hyperledger Fabric需要運(yùn)行在Linux環(huán)境下。原型系統(tǒng)運(yùn)行在VMware虛擬PC軟件下的Ubuntu操作系統(tǒng)中,F(xiàn)abric網(wǎng)絡(luò)的運(yùn)行、智能合約的安裝、測(cè)試和實(shí)例化都在Ubuntu系統(tǒng)中的Docker容器中進(jìn)行。Fabric網(wǎng)絡(luò)采用單機(jī)多節(jié)點(diǎn)的部署方式,將糧油食品全供應(yīng)鏈上的5個(gè)典型環(huán)節(jié)和監(jiān)管部門(mén)作為聯(lián)盟鏈中的組織,對(duì)應(yīng)Fabric中6個(gè)組織,其中每個(gè)組織下包含2個(gè)peer節(jié)點(diǎn),用于實(shí)現(xiàn)各組織的背書(shū)、記賬等功能。同時(shí)整個(gè)網(wǎng)絡(luò)還包含1個(gè)CA節(jié)點(diǎn)和1個(gè)orderer節(jié)點(diǎn),CA節(jié)點(diǎn)用于管理系統(tǒng)證書(shū)的分發(fā)驗(yàn)證,orderer節(jié)點(diǎn)用于對(duì)數(shù)據(jù)進(jìn)行排序服務(wù)以生成區(qū)塊。后端數(shù)據(jù)服務(wù)器主要包含數(shù)據(jù)處理模塊和區(qū)塊鏈網(wǎng)絡(luò)兩個(gè)部分。數(shù)據(jù)處理模塊基于nodejs框架開(kāi)發(fā),負(fù)責(zé)接收前端門(mén)戶網(wǎng)站傳來(lái)的表單數(shù)據(jù),并統(tǒng)一數(shù)據(jù)格式,然后通過(guò)調(diào)用鏈碼將數(shù)據(jù)上傳到區(qū)塊鏈網(wǎng)絡(luò)中,通過(guò)驗(yàn)證的數(shù)據(jù)詳細(xì)信息會(huì)保存到云數(shù)據(jù)庫(kù)中,部分公開(kāi)數(shù)據(jù)和完整數(shù)據(jù)的哈希值會(huì)經(jīng)過(guò)共識(shí)生成區(qū)塊保存到區(qū)塊鏈賬本中。區(qū)塊鏈網(wǎng)絡(luò)能夠保證供應(yīng)鏈信息的真實(shí)可信、不可篡改。
Fabric區(qū)塊鏈平臺(tái)提供了一個(gè)強(qiáng)大的角色管理和權(quán)限把控機(jī)制。通過(guò)Fabric CA頒發(fā)證書(shū),再通過(guò)證書(shū)生成Token,最終將Token發(fā)送給用戶,作為各節(jié)點(diǎn)用戶在網(wǎng)絡(luò)中的身份憑證。其中證書(shū)遵循X.509標(biāo)準(zhǔn),客戶端使用SHA-256算法對(duì)證書(shū)進(jìn)行散列,滿足數(shù)字簽名的參數(shù)格式,數(shù)字簽名采用非對(duì)稱(chēng)加密算法ECDSA生成的私鑰加密,通過(guò)核驗(yàn)數(shù)字簽名的一致性來(lái)進(jìn)行身份認(rèn)證。當(dāng)用戶需要使用平臺(tái)進(jìn)行功能操作時(shí),系統(tǒng)會(huì)驗(yàn)證證書(shū)的有效性,然后再調(diào)用合約對(duì)區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行操作。區(qū)塊鏈上各節(jié)點(diǎn)對(duì)數(shù)據(jù)信息進(jìn)行讀寫(xiě)操作時(shí),需要相對(duì)應(yīng)的權(quán)限去觸發(fā)不同的合約,當(dāng)用戶權(quán)限不夠時(shí),只能看到部分公開(kāi)的數(shù)據(jù),無(wú)法查看完整數(shù)據(jù)。
Fabric區(qū)塊鏈平臺(tái)共識(shí)算法采用可插拔設(shè)計(jì),目前Fabric 1.1版本支持3種共識(shí)機(jī)制,分別是Solo、Kafka和PBFT(實(shí)用拜占庭算法)。交易的共識(shí)包括3個(gè)處理階段:提議階段、打包階段和驗(yàn)證階段。其中Solo共識(shí)模式是Fabric用來(lái)進(jìn)行開(kāi)發(fā)測(cè)試的共識(shí)算法,只有orderer服務(wù)節(jié)點(diǎn)負(fù)責(zé)接收交易信息并排序,是最簡(jiǎn)單的一種排序算法,不適合大規(guī)模的實(shí)際生產(chǎn)環(huán)節(jié);Kafka共識(shí)模式是通過(guò)Kafka對(duì)所有交易信息進(jìn)行排序,支持對(duì)系統(tǒng)中多個(gè)channel進(jìn)行單獨(dú)排序,是一種支持多通道分區(qū)的分布式的流式信息處理平臺(tái),具有崩潰容錯(cuò)機(jī)制,但并不能提供對(duì)網(wǎng)絡(luò)中惡意攻擊的保護(hù); PBFT是基于BFT(拜占庭算法)改進(jìn)的分布式容錯(cuò)技術(shù),主要用來(lái)解決分布式系統(tǒng)中的信任問(wèn)題,使區(qū)塊鏈網(wǎng)絡(luò)中的各節(jié)點(diǎn)形成對(duì)網(wǎng)絡(luò)狀態(tài)和數(shù)據(jù)的共識(shí), PBFT降低了拜占庭協(xié)議運(yùn)行的復(fù)雜度,提高了系統(tǒng)的運(yùn)行效率,適合對(duì)強(qiáng)一致性有要求的區(qū)塊鏈應(yīng)用場(chǎng)景。為了驗(yàn)證模型可信性,簡(jiǎn)化系統(tǒng)流程,采用Solo共識(shí)模式構(gòu)建原型系統(tǒng)的區(qū)塊鏈網(wǎng)絡(luò)。
Hyperledger Fabric的智能合約又被稱(chēng)為鏈碼 (Chaincode)。Chaincode用來(lái)表示系統(tǒng)流程的業(yè)務(wù)邏輯,它描述了用戶的需求,并將其代碼化。鏈碼被部署在Docker中,Docker是Hyperledger Fabric運(yùn)行的容器,用于運(yùn)行區(qū)塊鏈網(wǎng)絡(luò)。一旦鏈碼被部署,它將獲得用戶可以用來(lái)交互的唯一地址,然后通過(guò)Chaincode客戶端可以調(diào)用鏈碼,觸發(fā)它的功能。鏈碼作為一種圖靈完備的語(yǔ)言,使用Go語(yǔ)言編寫(xiě)。圖8所示的例子給出了鏈碼的一些片段,這些代碼實(shí)現(xiàn)了系統(tǒng)的主要功能。圖8a展示了種植模塊數(shù)據(jù)采集及查詢的智能合約代碼。首先進(jìn)行的是智能合約的初始化過(guò)程,然后編寫(xiě)實(shí)現(xiàn)種植模塊功能的接口代碼,包括調(diào)用信息上傳功能和查詢功能。圖8b實(shí)現(xiàn)了種植模塊的數(shù)據(jù)上傳功能和種植模塊的數(shù)據(jù)信息查詢功能。將通過(guò)Web前端提交的表單信息利用合約代碼進(jìn)行驗(yàn)證,符合要求的會(huì)輸出“Success”,否則系統(tǒng)會(huì)提示數(shù)據(jù)上傳失敗。
圖8 智能合約展示
(3)用戶端
Web前端門(mén)戶網(wǎng)站是基于當(dāng)前主流的TCP/IP協(xié)議,以JavaScript、Html、Css等作為開(kāi)發(fā)語(yǔ)言,基于Bootstrap、jQuery、Ajax等技術(shù)棧開(kāi)發(fā),并使用art-template模板引擎進(jìn)行渲染的系統(tǒng)對(duì)外可視化操作窗口。通過(guò)門(mén)戶網(wǎng)站調(diào)用后端服務(wù)器提供的API接口,實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能,包括用戶注冊(cè)、信息采集、信息查詢、實(shí)時(shí)監(jiān)控等功能。用戶注冊(cè)通過(guò)調(diào)用用戶注冊(cè)文件在區(qū)塊鏈網(wǎng)絡(luò)中注冊(cè)用戶信息,區(qū)塊鏈網(wǎng)絡(luò)會(huì)賦予用戶一個(gè)唯一的密鑰。用戶通過(guò)提供密鑰驗(yàn)證權(quán)限,將門(mén)戶網(wǎng)站中填寫(xiě)的供應(yīng)鏈數(shù)據(jù)通過(guò)表單發(fā)送到后端服務(wù)器,服務(wù)器會(huì)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,統(tǒng)一數(shù)據(jù)格式。然后,調(diào)用鏈碼上傳數(shù)據(jù)到區(qū)塊鏈網(wǎng)絡(luò)中,編碼模塊會(huì)賦予屬于一個(gè)唯一的ID,當(dāng)數(shù)據(jù)上傳成功后,合約會(huì)返回?cái)?shù)據(jù)在區(qū)塊鏈網(wǎng)絡(luò)中的狀態(tài)信息并存入鏈下數(shù)據(jù)庫(kù)中,完成供應(yīng)鏈信息的采集。
通過(guò)對(duì)山東省某糧食企業(yè)下的面粉供應(yīng)鏈進(jìn)行實(shí)地調(diào)研,該企業(yè)下的面粉生產(chǎn)涉及從小麥到面粉銷(xiāo)售的完整供應(yīng)鏈環(huán)節(jié),包含小麥的收購(gòu)、倉(cāng)儲(chǔ)、加工、運(yùn)輸、銷(xiāo)售等流程,收購(gòu)和倉(cāng)儲(chǔ)環(huán)節(jié)、加工環(huán)節(jié)、運(yùn)輸和銷(xiāo)售環(huán)節(jié)分屬于不同子工廠,各環(huán)節(jié)都有比較詳細(xì)的信息記錄,但是各環(huán)節(jié)之間的信息并不能很好地互聯(lián)互通,不能形成一條完整的信息鏈,從而導(dǎo)致信息處理效率低、查詢繁瑣。經(jīng)過(guò)分析,采用本研究設(shè)計(jì)的糧油食品供應(yīng)鏈信息安全管理原型系統(tǒng)對(duì)其信息管理進(jìn)行優(yōu)化。
圖9 系統(tǒng)工作界面
系統(tǒng)運(yùn)行界面如圖9所示。圖9a為整個(gè)系統(tǒng)的用戶登錄界面,其提供供應(yīng)鏈各節(jié)點(diǎn)的登錄服務(wù)和產(chǎn)品溯源服務(wù)。系統(tǒng)用戶登錄后會(huì)進(jìn)入系統(tǒng)的監(jiān)控界面,如圖9c所示,從界面中,用戶能夠監(jiān)控整個(gè)區(qū)塊鏈網(wǎng)絡(luò)的運(yùn)行區(qū)塊,包括查看區(qū)塊信息、鏈碼數(shù)量、節(jié)點(diǎn)數(shù)量等。用戶可以通過(guò)信息采集功能上傳供應(yīng)鏈數(shù)據(jù)信息,系統(tǒng)會(huì)自動(dòng)調(diào)用智能合約對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理,檢查數(shù)據(jù)是否符合條件并賦予其唯一的編碼。然后數(shù)據(jù)信息會(huì)保存到區(qū)塊鏈網(wǎng)絡(luò)中,保證數(shù)據(jù)不可篡改且可追溯。不同環(huán)節(jié)的信息都會(huì)上傳到系統(tǒng)中,保存到同一條區(qū)塊鏈上,當(dāng)產(chǎn)品出現(xiàn)問(wèn)題時(shí),監(jiān)管部門(mén)和企業(yè)通過(guò)區(qū)塊鏈網(wǎng)絡(luò)和各環(huán)節(jié)編碼能夠快速追蹤產(chǎn)品信息,及時(shí)發(fā)現(xiàn)問(wèn)題源頭,并根據(jù)產(chǎn)品信息哈希值判斷產(chǎn)品真?zhèn)魏蛿?shù)據(jù)信息是否被篡改。圖9c下方為最新生成區(qū)塊信息,點(diǎn)擊交易細(xì)節(jié)能夠查看區(qū)塊中的詳細(xì)信息,如圖9d所示。通過(guò)登錄界面上的產(chǎn)品追溯系統(tǒng),消費(fèi)者能夠利用產(chǎn)品追溯碼查詢到產(chǎn)品在整個(gè)供應(yīng)鏈中的信息,提高了產(chǎn)品的市場(chǎng)信任度,有利于企業(yè)的發(fā)展,如圖9b所示。
與傳統(tǒng)糧油供應(yīng)鏈管理系統(tǒng)相比,區(qū)塊鏈驅(qū)動(dòng)的糧油食品供應(yīng)鏈管理系統(tǒng)具備去中心化的特性,不依賴某個(gè)組織和個(gè)人,利用共識(shí)機(jī)制解決了傳統(tǒng)糧油供應(yīng)鏈管理中的“信任問(wèn)題”,作為一種不可篡改的分布式記賬系統(tǒng),鏈上數(shù)據(jù)具有時(shí)間戳且不可篡改。區(qū)塊鏈系統(tǒng)中各節(jié)點(diǎn)企業(yè)信息上傳標(biāo)準(zhǔn)統(tǒng)一,保障了供應(yīng)鏈上的數(shù)據(jù)能夠快速交互,打破了傳統(tǒng)糧油供應(yīng)鏈中的“信息孤島”,建立了全新的供應(yīng)鏈信息管理生態(tài),一定程度上實(shí)現(xiàn)了糧油供應(yīng)鏈上各利益相關(guān)者的協(xié)作和校驗(yàn),實(shí)現(xiàn)了資源的有效整合和效益的最大化。
基于區(qū)塊鏈建立了糧油食品全供應(yīng)鏈信息安全管理原型系統(tǒng)。首先,在分析供應(yīng)鏈環(huán)節(jié)的基礎(chǔ)上構(gòu)建了糧油食品全供應(yīng)鏈信息安全管理模型,為改善鏈?zhǔn)饺哂啻鎯?chǔ)的效率問(wèn)題,設(shè)計(jì)了區(qū)塊鏈和關(guān)系型數(shù)據(jù)庫(kù)相結(jié)合的雙模數(shù)據(jù)存儲(chǔ)機(jī)制,為實(shí)現(xiàn)產(chǎn)業(yè)鏈業(yè)務(wù)數(shù)據(jù)交互和全供應(yīng)鏈危害物信息監(jiān)管,設(shè)計(jì)了定制化部署的糧油食品供應(yīng)鏈智能合約;然后,以管理模型為基礎(chǔ),提出了原型系統(tǒng)架構(gòu)和設(shè)計(jì)方案,并基于Hyperledger Fabric框架,給出原型系統(tǒng)的數(shù)據(jù)庫(kù)、服務(wù)器端和用戶端的具體實(shí)現(xiàn)過(guò)程;最后,結(jié)合具體的應(yīng)用案例,分析了本原型系統(tǒng)的特點(diǎn)和優(yōu)勢(shì)。設(shè)計(jì)的原型系統(tǒng)能夠?qū)崿F(xiàn)糧油食品全供應(yīng)鏈環(huán)節(jié)信息的共享和互通,并保證信息存儲(chǔ)和傳輸?shù)陌踩煽?,防止信息孤島和惡意篡改,為供應(yīng)鏈參與主體、消費(fèi)者、第三方監(jiān)管部門(mén)提供了可信的產(chǎn)業(yè)鏈信息來(lái)源,同時(shí)為糧油食品供應(yīng)鏈危害物風(fēng)險(xiǎn)評(píng)估、預(yù)測(cè)和預(yù)警提供了完備的數(shù)據(jù)基礎(chǔ)。