許繼平 王 健 張 新 王小藝 孔建磊 劉 陽(yáng)
(1.北京工商大學(xué)中國(guó)輕工業(yè)工業(yè)互聯(lián)網(wǎng)與大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室,北京 100048;2.北京工商大學(xué)北京市食品安全大數(shù)據(jù)技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100048;3.中國(guó)信息通信研究院,北京 100191)
稻米是中國(guó)主要糧食作物之一,全國(guó)近2/3人口以稻米作為主食[1],稻米的質(zhì)量安全直接關(guān)系到人民健康與國(guó)家穩(wěn)定。近年來(lái),各種稻米質(zhì)量安全問題時(shí)有發(fā)生,如鎘大米[2-3]、香精米、陳化糧等事件,因此亟需進(jìn)行高效的稻米供應(yīng)鏈信息監(jiān)管。
稻米不同于其他食品,其供應(yīng)網(wǎng)絡(luò)復(fù)雜、循環(huán)流通周期長(zhǎng),且各環(huán)節(jié)風(fēng)險(xiǎn)因素與危害物種類多、分布環(huán)節(jié)廣、差異大[4-5]。此外,稻米供應(yīng)鏈各環(huán)節(jié)相對(duì)獨(dú)立,相互之間信息交流少,各節(jié)點(diǎn)難以形成共識(shí)。傳統(tǒng)的監(jiān)管系統(tǒng)各環(huán)節(jié)存在不誠(chéng)信企業(yè)篡改檢測(cè)數(shù)據(jù)等問題,從而降低了監(jiān)管結(jié)果的可信度[6]。并且傳統(tǒng)供應(yīng)鏈監(jiān)管模式在進(jìn)行監(jiān)管時(shí),需要對(duì)供應(yīng)鏈各環(huán)節(jié)數(shù)據(jù)進(jìn)行大量的重復(fù)驗(yàn)證和檢查工作,導(dǎo)致時(shí)間成本較高、信息流轉(zhuǎn)冗長(zhǎng),從而使監(jiān)管工作效率低下[7-8]。
區(qū)塊鏈技術(shù)具有通過(guò)信任機(jī)制根據(jù)業(yè)務(wù)規(guī)則自動(dòng)執(zhí)行約定代碼的特性,能夠?qū)⑷鞒虜?shù)據(jù)清晰地記錄到鏈上,進(jìn)而真實(shí)可靠地傳遞資金流、物流和信息流[9-11]。近些年,國(guó)內(nèi)外研究人員在區(qū)塊鏈結(jié)合食品供應(yīng)鏈監(jiān)督與管理方面進(jìn)行了研究探索,通過(guò)各種標(biāo)識(shí)技術(shù)建立產(chǎn)品標(biāo)識(shí)[12-13],應(yīng)用傳感器在供應(yīng)鏈流通環(huán)節(jié)進(jìn)行檢測(cè)[14],并制定相應(yīng)管理體系[15],建立對(duì)食品進(jìn)行數(shù)據(jù)上傳、實(shí)時(shí)監(jiān)控、風(fēng)險(xiǎn)預(yù)警和信息溯源的供應(yīng)鏈管理系統(tǒng)[16]。研究發(fā)現(xiàn),區(qū)塊鏈技術(shù)能夠有效提高食品供應(yīng)鏈數(shù)據(jù)的安全性與信息可追溯性,為食品質(zhì)量安全監(jiān)管提供了有力保障。但是,由于稻米供應(yīng)鏈各環(huán)節(jié)關(guān)鍵數(shù)據(jù)信息繁雜,各企業(yè)主體不能形成統(tǒng)一標(biāo)準(zhǔn),并且區(qū)塊鏈網(wǎng)絡(luò)內(nèi)各節(jié)點(diǎn)并非完全匿名,其隱私保護(hù)存在風(fēng)險(xiǎn),因此對(duì)于上鏈數(shù)據(jù)進(jìn)行隱私加密非常必要[17-19]。此外,目前稻米供應(yīng)鏈監(jiān)管采用的智能合約流程普遍較短,且各合約分工不明確,不能貫穿全監(jiān)管流程,難以有效發(fā)揮合約功能[20]。因此,構(gòu)建適用于稻米供應(yīng)鏈的信息監(jiān)管機(jī)制具有重要的現(xiàn)實(shí)意義和應(yīng)用價(jià)值。
本文對(duì)稻米供應(yīng)鏈業(yè)務(wù)流程及流轉(zhuǎn)特性進(jìn)行全方位分析,梳理并提煉供應(yīng)鏈各業(yè)務(wù)環(huán)節(jié)主體及關(guān)鍵信息;結(jié)合區(qū)塊鏈技術(shù)構(gòu)建稻米供應(yīng)鏈信息監(jiān)管模型,提出隱私數(shù)據(jù)分級(jí)加密及存儲(chǔ)模式和定制化業(yè)務(wù)邏輯監(jiān)管智能合約;設(shè)計(jì)稻米供應(yīng)鏈信息監(jiān)管原型系統(tǒng),并以某糧油企業(yè)為例進(jìn)行分析驗(yàn)證。
區(qū)塊鏈最初被定義為一種將數(shù)據(jù)區(qū)塊按時(shí)間順序相連而成的一種分布式賬本[21]。而隨著研究深入,對(duì)于區(qū)塊鏈技術(shù)的認(rèn)知逐漸在發(fā)生變化[22-23],當(dāng)前研究認(rèn)為區(qū)塊鏈指利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來(lái)驗(yàn)證和存儲(chǔ)數(shù)據(jù),并采用分布式節(jié)點(diǎn)共識(shí)算法生成和更新數(shù)據(jù),同時(shí)應(yīng)用密碼學(xué)原理來(lái)確保數(shù)據(jù)傳輸與信息存儲(chǔ)安全,此外還以智能合約進(jìn)行數(shù)據(jù)操作的一種分布式架構(gòu)與計(jì)算范式,其去中心化、不可篡改、可追溯與自洽性的特性,符合供應(yīng)鏈監(jiān)管系統(tǒng)對(duì)于確保信息安全隱私與高可追溯性等需求。本文以區(qū)塊鏈技術(shù)為驅(qū)動(dòng),構(gòu)建稻米供應(yīng)鏈信息監(jiān)管模型,并基于區(qū)塊鏈開源框架超級(jí)賬本平臺(tái)實(shí)現(xiàn)原型系統(tǒng)。
密碼學(xué)是區(qū)塊鏈隱私安全保障的核心,區(qū)塊鏈中主要涉及的密碼學(xué)算法主要包括非對(duì)稱加密算法、默克爾樹和哈希算法。在本文中建立隱私數(shù)據(jù)分級(jí)加密及存儲(chǔ)模式部分采用了哈希算法中SM3密碼雜湊算法與對(duì)稱加密算法中高級(jí)加密標(biāo)準(zhǔn)加密算法(Advanced encryption standard,AES)。密碼雜湊算法可以將任意長(zhǎng)度數(shù)據(jù)壓縮為固定長(zhǎng)度信息摘要,用于數(shù)字a簽名和數(shù)據(jù)完整性保護(hù)[24]。AES加密用于保證數(shù)據(jù)的機(jī)密,其通信雙方在加密和解密過(guò)程中采用相同的密鑰[25]。AES算法分為多種加密模式,在本文中模型構(gòu)建時(shí)便結(jié)合了加密反饋模式(Cipher feedback,CFB)與電子密碼本模式(Electronic codebook,ECB)。
智能合約具有自行校驗(yàn)、去中心化和自動(dòng)執(zhí)行等特點(diǎn)[17,26-28],并能夠自行設(shè)置一些可自動(dòng)觸發(fā)的執(zhí)行條件,為區(qū)塊鏈網(wǎng)絡(luò)中的用戶提供信息交互與價(jià)值轉(zhuǎn)移等功能,本文中監(jiān)管模型需要通過(guò)智能合約來(lái)實(shí)現(xiàn)相應(yīng)業(yè)務(wù)邏輯。
稻米供應(yīng)鏈各環(huán)節(jié)參與企業(yè)主體眾多,包括種植者、收購(gòu)商、倉(cāng)儲(chǔ)企業(yè)、加工企業(yè)、物流企業(yè)與分銷商等,其中稻米供應(yīng)鏈生命周期長(zhǎng)、環(huán)節(jié)復(fù)雜,鏈上各企業(yè)主體普遍存在數(shù)據(jù)標(biāo)準(zhǔn)差異化與存儲(chǔ)格式不一致的問題。同時(shí),目前市場(chǎng)缺乏統(tǒng)一稻米供應(yīng)鏈監(jiān)督與管理系統(tǒng),導(dǎo)致不相鄰企業(yè)主體之間關(guān)聯(lián)性較小,信息流通差、流轉(zhuǎn)冗長(zhǎng),部分關(guān)鍵數(shù)據(jù)的隱私安全得不到保障,存在丟失或被篡改的風(fēng)險(xiǎn),不利于供應(yīng)鏈節(jié)點(diǎn)信息溯源和相關(guān)部門監(jiān)管。此外,由于稻米供應(yīng)鏈循環(huán)流通周期較長(zhǎng)且各環(huán)節(jié)之間信息不對(duì)稱,監(jiān)管者難以確定到達(dá)消費(fèi)者手中的問題稻米是在哪一供應(yīng)鏈主體環(huán)節(jié)造成的,并且出現(xiàn)問題不易補(bǔ)救,亟需構(gòu)建安全高效的監(jiān)督和管理體系。
針對(duì)上述問題,將稻米供應(yīng)鏈流程從信息監(jiān)管角度分為上、中、下3個(gè)階段,如圖1所示。供應(yīng)鏈上游包括種植環(huán)節(jié);中游包括收儲(chǔ)、加工、倉(cāng)儲(chǔ)和運(yùn)輸環(huán)節(jié),其中收儲(chǔ)中又包含收購(gòu)、干燥、除雜和入倉(cāng)環(huán)節(jié),加工包括壟谷、碾米、色選、拋光和包裝環(huán)節(jié);下游為銷售環(huán)節(jié)。銷售商將稻米最終售賣給消費(fèi)者,監(jiān)管者則對(duì)于供應(yīng)鏈進(jìn)行監(jiān)督管理。其中加工環(huán)節(jié)是稻米供應(yīng)鏈核心環(huán)節(jié),既能指導(dǎo)限制上游稻米收儲(chǔ)與種植環(huán)節(jié),又可以為下游銷售環(huán)節(jié)提供生產(chǎn)資料,并借助物流企業(yè)、倉(cāng)儲(chǔ)企業(yè)和金融機(jī)構(gòu)等對(duì)物流、商流、信息流和資金流進(jìn)行統(tǒng)一分配與管理,因而對(duì)糧油加工企業(yè)加強(qiáng)監(jiān)管十分必要。在稻米供應(yīng)鏈信息監(jiān)管的過(guò)程中,各企業(yè)都有一些信息是敏感的,無(wú)法完全公開,如交易記錄、成本信息和危害物信息等,因此需要對(duì)上傳到區(qū)塊鏈上的信息進(jìn)行分類,以區(qū)分敏感度和優(yōu)先級(jí),保證高效監(jiān)管的同時(shí)保護(hù)信息不被泄露。
根據(jù)稻米供應(yīng)鏈流程及供應(yīng)鏈上各企業(yè)主體業(yè)務(wù)特點(diǎn),本文將稻米供應(yīng)鏈13個(gè)環(huán)節(jié)關(guān)鍵數(shù)據(jù)信息分為5類,分別為主體信息、基本信息、危害物信息、環(huán)境監(jiān)測(cè)信息和交易記錄與價(jià)格信息,如表1所示。表內(nèi)所提取信息分類皆是各環(huán)節(jié)關(guān)鍵信息摘要,以加工環(huán)節(jié)為例,加工企業(yè)接收來(lái)自于倉(cāng)儲(chǔ)企業(yè)在內(nèi)的多個(gè)糧倉(cāng)存儲(chǔ)的稻米。稻米運(yùn)送到加工廠后,加工廠對(duì)產(chǎn)品進(jìn)行壟谷、碾米、色選、拋光和包裝等流程。根據(jù)文獻(xiàn)查閱及網(wǎng)絡(luò)資源調(diào)研,稻米中重金屬危害物除了受產(chǎn)地環(huán)境因素的影響外,對(duì)其影響最大的過(guò)程就是稻米加工環(huán)節(jié),在這個(gè)環(huán)節(jié)受機(jī)器加工的影響,重金屬含量有明顯的增加。因此,在本環(huán)節(jié)所需要記錄的信息除了包括企業(yè)信息、環(huán)境監(jiān)測(cè)信息、壟谷方式、出糙率、脫殼率、碾米方式、整米率、碎米率、色選精度、拋光率、產(chǎn)品包裝編號(hào)和產(chǎn)品批次號(hào)等,還包括不同子環(huán)節(jié)的真菌毒素和重金屬含量。詳細(xì)信息分類能夠進(jìn)一步優(yōu)化供應(yīng)鏈業(yè)務(wù)體系流程架構(gòu),并可作為稻米質(zhì)量安全全鏈條信息監(jiān)管模型建立的基礎(chǔ)。
表1 稻米供應(yīng)鏈各環(huán)節(jié)關(guān)鍵信息分類
完整的監(jiān)管模型不僅需要政府機(jī)構(gòu)對(duì)供應(yīng)鏈的監(jiān)管,還需涵蓋供應(yīng)鏈各企業(yè)主體數(shù)據(jù)上傳、查詢和消費(fèi)者商品溯源部分,實(shí)現(xiàn)監(jiān)管一體化。這樣一方面可以從供應(yīng)鏈對(duì)稻米信息進(jìn)行監(jiān)督管理,確保稻米供應(yīng)鏈數(shù)據(jù)流通時(shí)信息安全性與真實(shí)性,另一方面也使得供應(yīng)鏈企業(yè)主體之間、監(jiān)管機(jī)構(gòu)與供應(yīng)鏈各企業(yè)主體之間減少信息差,避免產(chǎn)生信息孤島。本文根據(jù)稻米供應(yīng)鏈流程特點(diǎn)與鏈上各企業(yè)主體業(yè)務(wù)邏輯,結(jié)合區(qū)塊鏈技術(shù)、密碼學(xué)與智能合約構(gòu)建了稻米供應(yīng)鏈信息監(jiān)管模型,如圖2所示。
本文將稻米供應(yīng)鏈上各環(huán)節(jié)都視為區(qū)塊鏈網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都對(duì)應(yīng)一個(gè)云數(shù)據(jù)庫(kù)。供應(yīng)鏈上各節(jié)點(diǎn)通過(guò)業(yè)務(wù)系統(tǒng)調(diào)用部署在區(qū)塊鏈網(wǎng)絡(luò)中的智能合約,經(jīng)過(guò)共識(shí)后,大部分?jǐn)?shù)據(jù)明文與密文記錄到云數(shù)據(jù)庫(kù)中,小部分?jǐn)?shù)據(jù)明文、信息摘要與密鑰保存到區(qū)塊鏈網(wǎng)絡(luò)中。稻米供應(yīng)鏈企業(yè)主體節(jié)點(diǎn)由種植企業(yè)(種植戶)為起始,由供應(yīng)鏈流通方向至銷售企業(yè),最終稻米售賣到消費(fèi)者手中。流通過(guò)程中供應(yīng)鏈各企業(yè)主體將采集數(shù)據(jù)通過(guò)合約上傳至區(qū)塊鏈網(wǎng)絡(luò)與云數(shù)據(jù)庫(kù)。監(jiān)管部門會(huì)向區(qū)塊鏈網(wǎng)絡(luò)發(fā)起請(qǐng)求調(diào)用對(duì)應(yīng)合約驗(yàn)證權(quán)限,實(shí)現(xiàn)對(duì)供應(yīng)鏈進(jìn)行實(shí)時(shí)監(jiān)管。供應(yīng)鏈各企業(yè)主體與消費(fèi)者也可以采取不同方式對(duì)區(qū)塊鏈網(wǎng)絡(luò)發(fā)起同樣信息查詢溯源請(qǐng)求,在權(quán)限范圍內(nèi)查詢產(chǎn)品信息,以驗(yàn)證稻米是否符合應(yīng)達(dá)標(biāo)準(zhǔn)或信息是否遭到篡改。
由于區(qū)塊鏈網(wǎng)絡(luò)內(nèi)各節(jié)點(diǎn)并非完全匿名,因此其隱私保護(hù)存在安全性風(fēng)險(xiǎn)。雖然區(qū)塊鏈數(shù)據(jù)傳輸并未直接與真實(shí)世界的企業(yè)身份相關(guān)聯(lián),但區(qū)塊鏈中數(shù)據(jù)是完全公開透明的。隨著各種反匿名甄別技術(shù)的發(fā)展,對(duì)一些關(guān)鍵目標(biāo)的信息破解與定位識(shí)別逐步出現(xiàn),因此對(duì)于上鏈數(shù)據(jù)進(jìn)行隱私加密十分關(guān)鍵。本文結(jié)合鏈上鏈下雙模存儲(chǔ)設(shè)立了隱私數(shù)據(jù)分級(jí)加密及存儲(chǔ)模式,將數(shù)據(jù)根據(jù)其隱私程度進(jìn)行分級(jí),并綜合考慮安全性與加密效率,根據(jù)隱私級(jí)別與數(shù)據(jù)量采用不同的加密方式對(duì)統(tǒng)一格式的數(shù)據(jù)進(jìn)行加密并上傳至區(qū)塊鏈網(wǎng)絡(luò)與云數(shù)據(jù)庫(kù),如圖3所示。
該模式基于稻米供應(yīng)鏈各環(huán)節(jié)關(guān)鍵信息分類,并綜合稻米供應(yīng)鏈各環(huán)節(jié)不同數(shù)據(jù)隱私程度、加密算法安全性與算法時(shí)間復(fù)雜度和空間復(fù)雜度,對(duì)供應(yīng)鏈流通數(shù)據(jù)進(jìn)行分級(jí)加密及安全存儲(chǔ),具體內(nèi)容包含以下3點(diǎn):
(1)交易記錄與價(jià)格信息定義為一級(jí)隱私數(shù)據(jù)。對(duì)于一級(jí)隱私數(shù)據(jù),本模式采用AES算法CFB模式進(jìn)行加密后將數(shù)據(jù)密文傳入云數(shù)據(jù)庫(kù),CFB模式能夠加密任意長(zhǎng)度的明文,以適應(yīng)稻米供應(yīng)鏈各節(jié)點(diǎn)用戶不同數(shù)據(jù)格式需求。此外,數(shù)據(jù)密鑰由算法隨機(jī)生成,并將其上傳至區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行存儲(chǔ),能夠極大確保密鑰的隨機(jī)性與安全性,解決了對(duì)稱加密存在的密鑰泄露風(fēng)險(xiǎn)。
(2)危害物信息定義為二級(jí)隱私數(shù)據(jù)。本模式則采用AES算法ECB模式對(duì)二級(jí)隱私數(shù)據(jù)進(jìn)行加密后傳入云數(shù)據(jù)庫(kù)。相較于CFB模式,ECB模式較為簡(jiǎn)單,并且能夠進(jìn)行大量的并行計(jì)算,適合數(shù)據(jù)量較大的稻米危害物信息。在這一過(guò)程中數(shù)據(jù)密鑰生成與存儲(chǔ)的方式與一級(jí)隱私數(shù)據(jù)相同。
(3)主體信息、基本信息和環(huán)境監(jiān)測(cè)信息定義為公共數(shù)據(jù)。其中對(duì)于主體信息,其數(shù)據(jù)量少且重要程度高,本模式采用直接將數(shù)據(jù)傳輸至區(qū)塊鏈網(wǎng)絡(luò)的方式;而對(duì)于全部公共數(shù)據(jù)則采用SM3密碼雜湊算法進(jìn)行加密,然后將加密生成的信息摘要上傳至區(qū)塊鏈網(wǎng)絡(luò),公共數(shù)據(jù)明文上傳至云數(shù)據(jù)庫(kù)。
該模式通過(guò)采用多種加密算法對(duì)數(shù)據(jù)進(jìn)行分級(jí)加密的方式,在利用最少計(jì)算資源的前提下,將稻米供應(yīng)鏈數(shù)據(jù)分散化存儲(chǔ),確保了上傳至區(qū)塊鏈網(wǎng)絡(luò)與云數(shù)據(jù)庫(kù)中的數(shù)據(jù)在流通與存儲(chǔ)過(guò)程中的安全與隱私。
智能合約是區(qū)塊鏈結(jié)合稻米供應(yīng)鏈信息監(jiān)管模型中的關(guān)鍵部分,整個(gè)模型都需要通過(guò)智能合約來(lái)實(shí)現(xiàn)相應(yīng)業(yè)務(wù)邏輯。通過(guò)編寫具有自行校驗(yàn)功能的智能合約能夠有效彌補(bǔ)傳統(tǒng)監(jiān)管需進(jìn)行大量重復(fù)驗(yàn)證檢查工作、時(shí)間長(zhǎng)和效率低的問題。本文中采用層級(jí)化智能合約對(duì)整個(gè)模型的多個(gè)業(yè)務(wù)邏輯流程進(jìn)行梳理與構(gòu)建,這樣能夠進(jìn)一步劃分各個(gè)合約的職能,令模型的邏輯流程更為清晰,并為后續(xù)系統(tǒng)模型的進(jìn)一步優(yōu)化提供了便利條件。
如圖4所示,本文中應(yīng)用合約的業(yè)務(wù)邏輯流程分為2部分:數(shù)據(jù)上傳與數(shù)據(jù)查詢(監(jiān)管)。數(shù)據(jù)上傳即稻米供應(yīng)鏈主體將企業(yè)數(shù)據(jù)傳輸至監(jiān)管系統(tǒng),包括對(duì)數(shù)據(jù)的采集、驗(yàn)證與加密;數(shù)據(jù)查詢即監(jiān)管部門、主體企業(yè)和消費(fèi)者對(duì)鏈上鏈下數(shù)據(jù)進(jìn)行數(shù)據(jù)的溯源查詢,不同節(jié)點(diǎn)的主體具有不同的權(quán)限。
3.2.1數(shù)據(jù)采集
稻米供應(yīng)鏈某環(huán)節(jié)企業(yè)主體數(shù)據(jù)采集合約算法為:
Input: m份環(huán)節(jié)數(shù)據(jù)
Output: return 數(shù)據(jù)采集結(jié)果
for t in range(m):
if 用戶擁有上傳權(quán)限:
采集信息:{ 參與環(huán)節(jié),主體信息,基本信息,危害物信息,環(huán)境監(jiān)測(cè)信息,交易記錄與價(jià)格信息}
if 通過(guò)信息驗(yàn)證:
調(diào)用數(shù)據(jù)加密上傳模塊
return"數(shù)據(jù)采集成功"
return "數(shù)據(jù)不符合規(guī)定指標(biāo)"
遍歷所有要采集的數(shù)據(jù),然后驗(yàn)證用戶是否擁有數(shù)據(jù)上傳權(quán)限;驗(yàn)證通過(guò)后,若檢測(cè)數(shù)據(jù)數(shù)值在規(guī)定范圍內(nèi),通過(guò)物聯(lián)網(wǎng)設(shè)備和應(yīng)用平臺(tái)將加密并且格式化后的數(shù)據(jù)上傳至監(jiān)控系統(tǒng),合約結(jié)束;若過(guò)程中出現(xiàn)問題,則返回異常數(shù)據(jù)信息后合約結(jié)束。
采集合約是供應(yīng)鏈主體數(shù)據(jù)上傳過(guò)程中的核心內(nèi)容,驗(yàn)證合約與加密合約皆在數(shù)據(jù)采集算法中被調(diào)用,其合約內(nèi)容為整個(gè)模型邏輯構(gòu)建奠定了基礎(chǔ)。
3.2.2數(shù)據(jù)驗(yàn)證
驗(yàn)證合約主要是檢驗(yàn)采集數(shù)據(jù)是否滿足相關(guān)法律法規(guī)與規(guī)范標(biāo)準(zhǔn)限定的范圍,當(dāng)滿足不同的條件時(shí)合約將觸發(fā)不同的功能。以稻米供應(yīng)鏈加工環(huán)節(jié)為例,編寫合約時(shí)需要根據(jù)通用檢測(cè)指標(biāo),重金屬含量如鉛、鎘、汞,真菌毒素含量如黃曲霉素等,并將編寫好的驗(yàn)證合約部署至區(qū)塊鏈網(wǎng)絡(luò)中。
驗(yàn)證合約算法為:
Input:稻米采集信息
Output: return false/true
if 重金屬含量驗(yàn)證:
Pb <= 0.2 and G <= 0.2 and Hg <= 0.2
向企業(yè)主體和監(jiān)管部門發(fā)送事件報(bào)告
return false
else if真菌毒素含量驗(yàn)證:
AFTB1 <= 10
向企業(yè)主體和監(jiān)管部門發(fā)送事件報(bào)告
return false
return true
其作用為:當(dāng)有信息上傳時(shí),節(jié)點(diǎn)會(huì)調(diào)用合約對(duì)上傳的數(shù)據(jù)進(jìn)行處理,將上傳數(shù)據(jù)同信息庫(kù)中的指標(biāo)進(jìn)行對(duì)比,如果質(zhì)量指標(biāo)不滿足預(yù)置的數(shù)據(jù)準(zhǔn)入條件,系統(tǒng)會(huì)執(zhí)行預(yù)置的響應(yīng)規(guī)則,上傳數(shù)據(jù)信息并給企業(yè)主體與監(jiān)管部門發(fā)送不良事件報(bào)告,如果質(zhì)量指標(biāo)符合預(yù)置的數(shù)據(jù)準(zhǔn)入條件,系統(tǒng)則會(huì)允許其上傳。通過(guò)驗(yàn)證合約實(shí)時(shí)監(jiān)管稻米質(zhì)量全鏈條采集信息,方便企業(yè)和監(jiān)管部門及時(shí)發(fā)現(xiàn)并處理安全隱患,可以有效避免存在質(zhì)量問題的稻米在供應(yīng)鏈上流通。
3.2.3數(shù)據(jù)加密
上文分級(jí)加密隱私模型內(nèi)容合約化后即為數(shù)據(jù)加密算法,輸入的參數(shù)為統(tǒng)一格式后的數(shù)據(jù)明文,合約會(huì)根據(jù)不同的采集數(shù)據(jù)采取不同的加密方式,將不同格式的密文密鑰等傳入?yún)^(qū)塊鏈或數(shù)據(jù)庫(kù),算法為:
Input:數(shù)據(jù)明文
Output: 數(shù)據(jù)密文(密鑰)
全部數(shù)據(jù)格式化
if 公共數(shù)據(jù)
if 主體信息:
調(diào)用區(qū)塊鏈網(wǎng)絡(luò)信息上傳模塊
else:
SM3密碼雜湊算法加密,生成信息摘要
調(diào)用區(qū)塊鏈網(wǎng)絡(luò)信息上傳模塊(信息摘要)
調(diào)用數(shù)據(jù)庫(kù)信息上傳模塊(明文)
else if 隱私數(shù)據(jù)
if 一級(jí)隱私數(shù)據(jù):
AES加密算法(CFB模式),生成密文與密鑰
調(diào)用區(qū)塊鏈網(wǎng)絡(luò)信息上傳模塊(密鑰)
調(diào)用數(shù)據(jù)庫(kù)信息上傳模塊(密文)
else if 二級(jí)隱私數(shù)據(jù):
AES加密算法(ECB模式),生成密文與密鑰
調(diào)用區(qū)塊鏈網(wǎng)絡(luò)信息上傳模塊(密鑰)
調(diào)用數(shù)據(jù)庫(kù)信息上傳模塊(密文)
數(shù)據(jù)加密合約即隱私數(shù)據(jù)分級(jí)加密模式的合約化實(shí)現(xiàn),通過(guò)智能合約自動(dòng)執(zhí)行已封裝好的加密邏輯,完成稻米供應(yīng)鏈隱私數(shù)據(jù)分級(jí)加密與上傳功能,保證供應(yīng)鏈信息流通安全的同時(shí)提升數(shù)據(jù)傳輸效率。
3.2.4權(quán)限管理
權(quán)限管理算法是供應(yīng)鏈監(jiān)管與信息查詢的重要組成部分,合約以分發(fā)不同密鑰的方式限制節(jié)點(diǎn)權(quán)限,算法為:
Input:主體環(huán)節(jié)
Output: 權(quán)限級(jí)別
if 企業(yè)節(jié)點(diǎn):
調(diào)用可查詢公開數(shù)據(jù)模塊
if 相鄰企業(yè)節(jié)點(diǎn):
獲取查詢節(jié)點(diǎn)對(duì)應(yīng)ECB密鑰
調(diào)用數(shù)據(jù)查詢模塊
else if 監(jiān)管節(jié)點(diǎn):
獲取監(jiān)管節(jié)點(diǎn)對(duì)應(yīng)CFB密鑰與ECB密鑰
調(diào)用數(shù)據(jù)監(jiān)管模塊
else if 消費(fèi)者節(jié)點(diǎn):
調(diào)用可查詢公開數(shù)據(jù)
企業(yè)節(jié)點(diǎn)能夠查詢供應(yīng)鏈所有公開數(shù)據(jù)并可獲得相鄰企業(yè)節(jié)點(diǎn)的對(duì)稱加密密鑰,以查詢相鄰企業(yè)節(jié)點(diǎn)二級(jí)隱私數(shù)據(jù)(危害物信息);監(jiān)管節(jié)點(diǎn)有權(quán)限獲得全部密鑰,以對(duì)供應(yīng)鏈進(jìn)行監(jiān)管;消費(fèi)者能夠消費(fèi)后掃描商品二維碼默認(rèn)為消費(fèi)者節(jié)點(diǎn),可以查詢所購(gòu)稻米供應(yīng)鏈公開數(shù)據(jù)。
3.2.5數(shù)據(jù)監(jiān)管查詢
針對(duì)稻米供應(yīng)鏈數(shù)據(jù)查詢,其合約流程算法為:
Input:企業(yè)信息/參與環(huán)節(jié)/產(chǎn)品ID
Output: return 查詢結(jié)果
if 用戶擁有查詢權(quán)限:
調(diào)用信息查詢模塊
if SM3算法對(duì)數(shù)據(jù)進(jìn)行運(yùn)算結(jié)果 != 鏈上存儲(chǔ)信息摘要:
return"公共數(shù)據(jù)被篡改"
return 查詢信息
節(jié)點(diǎn)用戶在系統(tǒng)平臺(tái)上輸入要查詢的稻米供應(yīng)鏈相關(guān)信息,驗(yàn)證用戶擁有查詢權(quán)限后系統(tǒng)同時(shí)將云數(shù)據(jù)庫(kù)與區(qū)塊鏈網(wǎng)絡(luò)數(shù)據(jù)下載至本地,并采用哈希算法對(duì)數(shù)據(jù)庫(kù)中所下載數(shù)據(jù)進(jìn)行信息摘要計(jì)算,得到結(jié)果與區(qū)塊鏈中所存摘要進(jìn)行比對(duì),若相等則證明數(shù)據(jù)庫(kù)中數(shù)據(jù)未被篡改,返回查詢信息,合約結(jié)束;若值不等,證明公共數(shù)據(jù)遭到篡改,則返回錯(cuò)誤信息,合約結(jié)束。
監(jiān)管查詢合約是監(jiān)管系統(tǒng)模型數(shù)據(jù)查詢流程的最后一步,返回查詢數(shù)據(jù)同時(shí)能夠驗(yàn)證數(shù)據(jù)庫(kù)中所存儲(chǔ)公共數(shù)據(jù)是否遭到篡改,為數(shù)據(jù)安全存儲(chǔ)設(shè)置了雙重保障。
基于稻米供應(yīng)鏈信息監(jiān)管模型,設(shè)計(jì)了稻米供應(yīng)鏈信息監(jiān)管原型系統(tǒng)。該系統(tǒng)架構(gòu)如圖5所示,分為應(yīng)用服務(wù)層、數(shù)據(jù)存儲(chǔ)層、業(yè)務(wù)邏輯層和感知采集層。
應(yīng)用服務(wù)層以網(wǎng)頁(yè)和手機(jī)APP的形式向監(jiān)管部門、企業(yè)和消費(fèi)者用戶提供相應(yīng)功能,并根據(jù)用戶的不同劃分權(quán)限級(jí)別。
數(shù)據(jù)存儲(chǔ)層包括云數(shù)據(jù)庫(kù)與Hyperledger Fabric區(qū)塊鏈平臺(tái)存儲(chǔ)部分,其中區(qū)塊鏈中數(shù)據(jù)采用文件形式存儲(chǔ)。企業(yè)將經(jīng)過(guò)系統(tǒng)加密后的數(shù)據(jù)分別存儲(chǔ)在區(qū)塊鏈與云數(shù)據(jù)庫(kù),在方便數(shù)據(jù)查詢的同時(shí)令數(shù)據(jù)存儲(chǔ)去中心化,防止篡改。
業(yè)務(wù)邏輯層是以智能合約為核心,確保系統(tǒng)高效運(yùn)轉(zhuǎn)的同時(shí)調(diào)用分級(jí)隱私加密機(jī)制,從而保證存儲(chǔ)數(shù)據(jù)隱私安全。
感知采集層作為數(shù)據(jù)終端,主要用于收集稻米供應(yīng)鏈企業(yè)主體全生命周期的各項(xiàng)業(yè)務(wù)數(shù)據(jù)和危害物信息。
稻米供應(yīng)鏈信息監(jiān)管系統(tǒng)采用Hyperledger Fabric開源區(qū)塊鏈平臺(tái)實(shí)現(xiàn)供應(yīng)鏈區(qū)塊鏈網(wǎng)絡(luò)構(gòu)建,并利用云數(shù)據(jù)庫(kù)對(duì)象存儲(chǔ)模式進(jìn)行相關(guān)數(shù)據(jù)存儲(chǔ),系統(tǒng)以Golang、Jave、JavaScript作為主要編程語(yǔ)言,并使用Gin、Vue作為前、后端框架進(jìn)行全平臺(tái)開發(fā)。系統(tǒng)本質(zhì)即為供應(yīng)鏈節(jié)點(diǎn)用戶通過(guò)客戶端界面對(duì)區(qū)塊鏈賬本和云數(shù)據(jù)庫(kù)的上傳和查詢(監(jiān)管)操作,信息監(jiān)管流程邏輯如圖6所示。
系統(tǒng)用戶通過(guò)Web界面填寫和傳感器采集相關(guān)數(shù)據(jù)信息,然后向服務(wù)器發(fā)送數(shù)據(jù)上傳請(qǐng)求,服務(wù)器根據(jù)用戶提供的數(shù)據(jù)信息和用戶賬戶信息查詢用戶的權(quán)限,若滿足權(quán)限,則調(diào)用對(duì)應(yīng)的功能模塊以根據(jù)請(qǐng)求判斷需要使用的智能合約,以向區(qū)塊鏈網(wǎng)絡(luò)發(fā)起一個(gè)交易提案。Hyperledger Fabric智能合約又被稱為鏈碼(Chaincode),交易提案可將本次數(shù)據(jù)上傳所需的鏈碼標(biāo)識(shí)、鏈碼方法、相關(guān)的參數(shù)和節(jié)點(diǎn)用戶簽名等信息發(fā)送給背書節(jié)點(diǎn),背書節(jié)點(diǎn)為交易作擔(dān)保,與交易進(jìn)行簽名背書,并與鏈碼相綁定,在背書節(jié)點(diǎn)收到交易提案后,驗(yàn)證數(shù)字簽名并檢測(cè)用戶的操作權(quán)限,若擁有權(quán)限,則響應(yīng)請(qǐng)求,繼而模擬執(zhí)行鏈碼并返回鏈碼執(zhí)行結(jié)果及各背書節(jié)點(diǎn)的證書認(rèn)證機(jī)構(gòu)簽名。
當(dāng)系統(tǒng)客戶端收到背書節(jié)點(diǎn)返回信息之后,將會(huì)判斷提案結(jié)果的一致性,并確認(rèn)是否按指定背書策略執(zhí)行。系統(tǒng)若有足夠的節(jié)點(diǎn)背書,應(yīng)用程序客戶端將會(huì)把數(shù)據(jù)打包到一起組成一個(gè)交易并簽名,發(fā)送給排序節(jié)點(diǎn),否則將會(huì)中止操作。區(qū)塊鏈網(wǎng)絡(luò)中的排序節(jié)點(diǎn)負(fù)責(zé)從全網(wǎng)的客戶端接受交易,然后將交易按一定規(guī)則排序。在本系統(tǒng)中,排序節(jié)點(diǎn)將Kafka分布式系統(tǒng)對(duì)交易進(jìn)行共識(shí)排序,然后按照區(qū)塊生成策略生成新的區(qū)塊,并發(fā)送給記賬節(jié)點(diǎn);記賬節(jié)點(diǎn)驗(yàn)證交易有效性后記錄交易,其在收到區(qū)塊后,會(huì)對(duì)區(qū)塊中的每筆交易信息進(jìn)行校驗(yàn),檢查交易的輸入輸出是否符合當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)的狀態(tài),當(dāng)校驗(yàn)完成后將區(qū)塊追加到本地的區(qū)塊鏈,并修改當(dāng)前世界狀態(tài),之后其它用戶節(jié)點(diǎn)會(huì)同步更新系統(tǒng)本地區(qū)塊鏈網(wǎng)絡(luò)信息,以完成數(shù)據(jù)上鏈。與此同時(shí),數(shù)據(jù)加密傳入云數(shù)據(jù)庫(kù),完成數(shù)據(jù)上云。
通過(guò)對(duì)湖南省常德市某糧油企業(yè)下的稻米供應(yīng)鏈進(jìn)行調(diào)研,該企業(yè)旗下產(chǎn)業(yè)涉及稻米供應(yīng)鏈所有環(huán)節(jié),并且各環(huán)節(jié)監(jiān)測(cè)與檢驗(yàn)設(shè)備齊全,數(shù)據(jù)記錄詳細(xì)且留存完整。但由于各環(huán)節(jié)分屬不同子企業(yè),信息傳輸存在壁壘,并且之間業(yè)務(wù)交流繁多,導(dǎo)致監(jiān)管難度進(jìn)一步增大,因此選擇采用本文所研發(fā)稻米供應(yīng)鏈監(jiān)管系統(tǒng)優(yōu)化該企業(yè)對(duì)其稻米供應(yīng)鏈的監(jiān)督與管理。系統(tǒng)Web端界面如圖7所示,圖7a為監(jiān)管系統(tǒng)登錄界面,擁有管理員權(quán)限的監(jiān)管者用戶登錄系統(tǒng)后能夠?qū)Φ久坠?yīng)鏈信息流動(dòng)進(jìn)行監(jiān)督與管理。系統(tǒng)監(jiān)控主界面如圖7b所示,系統(tǒng)將供應(yīng)鏈信息進(jìn)行可視化處理,包括供應(yīng)鏈節(jié)點(diǎn)交易總量、活躍節(jié)點(diǎn)用戶及新增節(jié)點(diǎn)數(shù)目等,監(jiān)管者用戶可以查看當(dāng)前稻米供應(yīng)鏈運(yùn)行狀況,并且實(shí)時(shí)監(jiān)控各企業(yè)主體節(jié)點(diǎn)上鏈信息。供應(yīng)鏈監(jiān)管包含稻米供應(yīng)鏈所有用戶節(jié)點(diǎn)詳細(xì)信息列表,便于監(jiān)管者檢索各用戶信息,如圖7c所示。由于監(jiān)管節(jié)點(diǎn)在系統(tǒng)鏈碼中被寫入最高權(quán)限,因此監(jiān)管用戶可以在系統(tǒng)中查詢某一用戶節(jié)點(diǎn)全部信息,包括其主體信息、基本信息、危害物信息、環(huán)境監(jiān)測(cè)信息、交易記錄和價(jià)格信息等,如圖7d所示。所有查詢信息皆為供應(yīng)鏈企業(yè)主體數(shù)據(jù)經(jīng)系統(tǒng)加密上傳至區(qū)塊鏈網(wǎng)絡(luò)與云數(shù)據(jù)庫(kù)后,系統(tǒng)再次進(jìn)行解密后的數(shù)據(jù)明文,以保證數(shù)據(jù)存儲(chǔ)傳輸過(guò)程中安全與隱私。而企業(yè)用戶登錄后除去增加數(shù)據(jù)上傳功能外,在信息查詢方面,僅可以在發(fā)送查詢請(qǐng)求被同意的條件下對(duì)所在供應(yīng)鏈上其他企業(yè)的公共數(shù)據(jù)與一級(jí)隱私數(shù)據(jù)進(jìn)行查詢,這樣有效劃分了監(jiān)管者與企業(yè)用戶的系統(tǒng)功能界限,便于權(quán)限管理,進(jìn)一步保證了系統(tǒng)中數(shù)據(jù)流通安全。
系統(tǒng)移動(dòng)端為供應(yīng)鏈中消費(fèi)者所設(shè)計(jì),其界面如圖8所示。圖8a為用戶登錄界面,登錄后對(duì)稻米產(chǎn)品標(biāo)注二維碼進(jìn)行掃描,以獲取稻米供應(yīng)鏈除交易記錄和價(jià)格信息外全部溯源信息;如圖8b所示,所有信息都是系統(tǒng)解密后明文數(shù)據(jù)。移動(dòng)端功能設(shè)計(jì)簡(jiǎn)潔、針對(duì)性強(qiáng),其溯源內(nèi)容與企業(yè)查詢產(chǎn)品內(nèi)容相同,消費(fèi)者可以準(zhǔn)確快速了解到所購(gòu)商品信息。
(1)通過(guò)對(duì)稻米供應(yīng)鏈業(yè)務(wù)流程及流轉(zhuǎn)特性進(jìn)行全方位分析,進(jìn)而抽象出稻米供應(yīng)鏈的典型環(huán)節(jié),并在此基礎(chǔ)上構(gòu)建了全鏈條各環(huán)節(jié)關(guān)鍵信息分類表。
(2)應(yīng)用對(duì)稱加密算法與散列加密算法提出隱私數(shù)據(jù)分級(jí)加密模式,設(shè)計(jì)了基于智能合約的監(jiān)管業(yè)務(wù)邏輯方案,并以二者為基礎(chǔ)結(jié)合云數(shù)據(jù)庫(kù)構(gòu)建基于區(qū)塊鏈技術(shù)的稻米供應(yīng)鏈信息監(jiān)管模型,設(shè)計(jì)并實(shí)現(xiàn)了稻米供應(yīng)鏈信息監(jiān)管原型系統(tǒng),并結(jié)合實(shí)際案例對(duì)系統(tǒng)進(jìn)行了分析。
(3)構(gòu)建的稻米供應(yīng)鏈信息監(jiān)管模型及原型系統(tǒng)能夠解決稻米供應(yīng)鏈數(shù)據(jù)隱私加密、安全存儲(chǔ)及權(quán)限管理等問題,實(shí)現(xiàn)了供應(yīng)鏈信息互聯(lián)互通和有效監(jiān)管。本文研究可為糧油質(zhì)量安全監(jiān)管提供一種可行務(wù)實(shí)的應(yīng)用方法。
農(nóng)業(yè)機(jī)械學(xué)報(bào)2021年5期