陸 堯,文 捷
(復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 復(fù)旦-眾安區(qū)塊鏈與信息安全聯(lián)合實(shí)驗(yàn)室,上海 200433)
供應(yīng)鏈的通用定義為“在產(chǎn)品生產(chǎn)和流通過程中,一個由供應(yīng)商、制造商、分銷商、零售商和最終消費(fèi)者等組成的自上而下的連接網(wǎng)絡(luò)”[1],供應(yīng)鏈管控是現(xiàn)代企業(yè)市場競爭力的重要組成部分。由于供應(yīng)鏈在流動中涉及到大量的數(shù)據(jù)處理和交互,將互聯(lián)網(wǎng)技術(shù)引入供應(yīng)鏈管控,實(shí)現(xiàn)供應(yīng)鏈全程信息化已成為一種趨勢。利用管理學(xué)、金融學(xué)、統(tǒng)計(jì)學(xué)和計(jì)算機(jī)科學(xué)等各學(xué)科的最新成果,提升供應(yīng)鏈的效率和安全性是當(dāng)今業(yè)界研究的熱點(diǎn)之一。
本文總結(jié)供應(yīng)鏈管控中的幾個關(guān)鍵因素,基于相關(guān)領(lǐng)域現(xiàn)有的研究與應(yīng)用,結(jié)合區(qū)塊鏈、分層錢包和多重簽名技術(shù),提出一種新型的供應(yīng)鏈管控與溯源方案。該方案利用比特幣及區(qū)塊鏈技術(shù)在去中心化、可溯源、防篡改、信息安全等方面的優(yōu)勢,可為區(qū)塊鏈技術(shù)的推廣與應(yīng)用提供一種新的思路。
現(xiàn)階段,供應(yīng)鏈管控及其信息化是學(xué)術(shù)界和工業(yè)界共同的研究熱點(diǎn)。如:文獻(xiàn)[2]論述了目前供應(yīng)鏈管控的關(guān)鍵因素、常用策略和設(shè)計(jì)方向;文獻(xiàn)[3]總結(jié)分析了供應(yīng)鏈管控中各類建模方法的特點(diǎn)和優(yōu)劣;文獻(xiàn)[4]提出了評判供應(yīng)鏈性能的幾個關(guān)鍵指標(biāo)和測量框架;文獻(xiàn)[5]提出一種基于SCOR模型的信息化供應(yīng)鏈管控方案,使計(jì)算機(jī)可以輔助和監(jiān)控供應(yīng)鏈的流動;文獻(xiàn)[6]設(shè)計(jì)實(shí)現(xiàn)了一個基于RFID與物聯(lián)網(wǎng)技術(shù)的供應(yīng)鏈信息交互模型,提升了供應(yīng)鏈在信息獲取、數(shù)據(jù)流通和整體監(jiān)控上的效率。在工業(yè)界中,沃爾瑪利用條形碼(UPC)技術(shù)和射頻數(shù)據(jù)通信(RFDC)技術(shù)構(gòu)建了一條低成本、高效率的補(bǔ)貨系統(tǒng),大幅提升了毛利率[7];京東在2016年完成了全供應(yīng)鏈的電子化改造,數(shù)據(jù)顯示僅在倉儲交接階段,每年就為其節(jié)省了約一億元開銷[8]。
現(xiàn)有的信息化供應(yīng)鏈管控研究成果與應(yīng)用方案,主要存在如下的可改進(jìn)環(huán)節(jié):
1)大部分供應(yīng)鏈管控系統(tǒng)采用中心化設(shè)計(jì),系統(tǒng)負(fù)載上限嚴(yán)重受制于中心服務(wù)器性能。一旦企業(yè)業(yè)務(wù)需求快速擴(kuò)張,原有系統(tǒng)極可能不堪重負(fù),導(dǎo)致整條供應(yīng)鏈無法正常流動;并且中心化系統(tǒng)的軟硬件升級不僅非常困難,而且成本極高。以IBM服務(wù)器為例,由一套中等配置的小型機(jī)升級至大型機(jī)解決方案需要上億元的投入。
2)現(xiàn)階段所有管控系統(tǒng)都使用數(shù)據(jù)庫記錄供應(yīng)鏈信息。在數(shù)據(jù)庫的選擇上,若使用中心式數(shù)據(jù)庫,則會導(dǎo)致中心服務(wù)器性能瓶頸和中心服務(wù)器強(qiáng)依賴性等問題;若使用分布式數(shù)據(jù)庫,則會產(chǎn)生系統(tǒng)通信開銷大、存取結(jié)構(gòu)復(fù)雜、安全性降低和難于維護(hù)等問題[9]。
3)管控系統(tǒng)的安全性完全依賴于中心服務(wù)器和數(shù)據(jù)庫。一旦兩者被攻破,所有用戶信息、交易記錄和其他關(guān)鍵數(shù)據(jù)將全部暴露甚至被篡改,給供應(yīng)鏈的所有參與者帶來嚴(yán)重安全威脅。
4)在實(shí)際商業(yè)應(yīng)用中,產(chǎn)品的防偽驗(yàn)證是具有重要需求。現(xiàn)有方案大多采用“驗(yàn)證碼+驗(yàn)證平臺”的形式,需要用戶連接廠家驗(yàn)證平臺后驗(yàn)證防偽信息。在該方式中,不僅驗(yàn)證碼極易被偽造與冒用,維護(hù)一個龐大的驗(yàn)證平臺也需要非常大的開銷。
針對上述問題,本文結(jié)合區(qū)塊鏈、分層錢包和多重簽名技術(shù),設(shè)計(jì)了一種基于比特幣技術(shù)的供應(yīng)鏈管控方案。本文的主要貢獻(xiàn)如下:
1)將現(xiàn)在僅存于比特幣和以太坊系統(tǒng)中的確定性分層錢包技術(shù)引入到權(quán)限管控領(lǐng)域中,在編碼上直接表達(dá)權(quán)限的區(qū)分和層級關(guān)系。這種方案可以推廣至物聯(lián)網(wǎng)編碼領(lǐng)域,構(gòu)建一套層級關(guān)系明確、空間充足的編碼體系。
2)利用區(qū)塊鏈記錄系統(tǒng)正常運(yùn)行所需的信息,數(shù)據(jù)庫系統(tǒng)僅作為輔助工具使用。方案在運(yùn)行上采用半中心化的架構(gòu),系統(tǒng)的所有者擁有較高的控制權(quán)。區(qū)塊鏈在生產(chǎn)環(huán)境下中心化與去中心化的優(yōu)劣之爭不斷,本文方案提供了一種相對平衡的解決方式。
3)擴(kuò)展了區(qū)塊鏈交易的應(yīng)用場景?,F(xiàn)階段基于區(qū)塊鏈的各類應(yīng)用大多采用改變區(qū)塊鏈交易中記錄內(nèi)容的方式,以滿足不同的需求。本文方案直接使用區(qū)塊鏈交易本身來表達(dá)信息,是一種區(qū)塊鏈應(yīng)用上的創(chuàng)新,為區(qū)塊鏈技術(shù)的推廣和應(yīng)用提出了新的思路。
4)充分利用區(qū)塊鏈和比特幣技術(shù)中在去中心化、信息可溯源與不可篡改等方面上的特性,設(shè)計(jì)了一套完整的信息化供應(yīng)鏈管控方案,解決了現(xiàn)有系統(tǒng)存在的一些問題。
區(qū)塊鏈作為比特幣的底層技術(shù),承載著驗(yàn)證并記錄合法比特幣交易的功能[10]。“區(qū)塊”是一個聚合了部分交易信息的容器類數(shù)據(jù)結(jié)構(gòu),一般由一個包含元數(shù)據(jù)的區(qū)塊頭和緊隨其后的一系列交易組成。對每個區(qū)塊頭進(jìn)行SHA256運(yùn)算后[11],可以得到一個用于標(biāo)識該區(qū)塊的哈希值。區(qū)塊鏈?zhǔn)怯蓞^(qū)塊構(gòu)成的一種有序鏈型數(shù)據(jù)結(jié)構(gòu),鏈中每個區(qū)塊都包含前區(qū)塊的哈希值,可以由鏈上任意區(qū)塊追溯到第一個區(qū)塊(創(chuàng)始塊),其結(jié)構(gòu)如圖1所示。
圖1 區(qū)塊鏈結(jié)構(gòu)
由于區(qū)塊頭包含了父區(qū)塊的哈希值,因此當(dāng)前區(qū)塊的哈希值會受到父區(qū)塊的影響。一旦某區(qū)塊發(fā)生改變,所有后續(xù)區(qū)塊必須全部重新計(jì)算。當(dāng)一個區(qū)塊擁有了足夠多的后續(xù)區(qū)塊后,對它的任何改動將消耗難以承受的巨大算力,所以一條足夠長的區(qū)塊鏈可以保證其記錄的信息不可更改,這是區(qū)塊鏈安全性的重要基礎(chǔ)。
非對稱加密算法是信息安全領(lǐng)域的數(shù)學(xué)基礎(chǔ)之一。在非對稱加密算法中,密鑰由一對數(shù)學(xué)相關(guān)的公鑰和私鑰組成,公鑰完全公開,可在不安全的條件下傳輸和儲存,私鑰則必須保密。在算法中,若公鑰為加密密鑰,則發(fā)送方可在任意網(wǎng)絡(luò)上發(fā)送加密信息,只有私鑰的擁有者可以正確解密,即實(shí)現(xiàn)了數(shù)據(jù)的加密傳輸。若公鑰為解密密鑰,則只有通過私鑰加密的信息(也即數(shù)字簽名),才可以被該公鑰正確地解密,即實(shí)現(xiàn)了數(shù)據(jù)的來源驗(yàn)證。
比特幣系統(tǒng)使用非對稱加密算法來控制比特幣的所有權(quán)。比特幣密鑰是一對“私鑰/公鑰”對,公鑰為解密密鑰。當(dāng)一筆新的支付交易進(jìn)入網(wǎng)絡(luò)后,網(wǎng)絡(luò)節(jié)點(diǎn)會利用支付者的公鑰驗(yàn)證交易中數(shù)字簽名的合法性,從而確定交易是否來源與比特幣的所有者。
“比特幣錢包”指用于存儲密鑰的加密存儲文件或數(shù)據(jù)庫,用戶可以在錢包中生成多對密鑰。錢包總體上分為2類:非確定性(隨機(jī))錢包和確定性(種子)錢包。
非確定性錢包隨機(jī)生成部分相互無關(guān)的私鑰。由于私鑰之間沒有關(guān)聯(lián),因此需要備份錢包中所有的密鑰。一旦某個密鑰丟失,它控制的所有比特幣也會丟失。因此,非確定性錢包難于管理和備份。
為了改進(jìn)上述問題,比特幣BIP0032標(biāo)準(zhǔn)中提出了“分層確定性錢包”(Hierarchical Deterministic Wallet,HDW)技術(shù)。分層錢包生成一個128 bit到256 bit的隨機(jī)數(shù)作為“種子”,錢包中所有的密鑰都衍生自這個種子及其哈希后的“鏈碼”。并且,每對密鑰同樣可以通過哈希獲得自己的“鏈碼”以衍生下一層密鑰。最終,分層錢包的所有密鑰構(gòu)成一個具有層級關(guān)系的樹狀結(jié)構(gòu)。
分層錢包的優(yōu)勢主要有3個:1)只要備份種子就能還原整個密鑰樹;2)樹狀結(jié)構(gòu)在應(yīng)用中可以表達(dá)額外的組織含義,例如某個分支用作收入,另一個用作消費(fèi);3)在分層錢包中子公鑰可由父公鑰直接衍生,這就允許在不接觸私鑰的情況下,衍生出一系列合法的公鑰。
數(shù)字簽名是非對稱密碼系統(tǒng)的一個重要的應(yīng)用,用于確認(rèn)信息來源。消息發(fā)送方使用哈希函數(shù)從信息中提取一段摘要并用私鑰加密(簽名),接收方利用公鑰解密簽名,若其與采用相同哈希函數(shù)提取的摘要相同,則能確認(rèn)消息來自密鑰的所有者。
在比特幣和其他區(qū)塊鏈系統(tǒng)中,簽名算法用于保證交易的合法性。區(qū)塊中每條交易記錄都有一個混合了交易信息和接收方密鑰的鎖定腳本。當(dāng)接收方發(fā)起一個新的交易時,必須提供上一個交易輸出中鎖定腳本對應(yīng)的公鑰和數(shù)字簽名(解鎖),才能被系統(tǒng)接納并記錄到賬本(區(qū)塊鏈)中。以此為基礎(chǔ),整個比特幣網(wǎng)絡(luò)在不需要中心機(jī)構(gòu)的情況下,實(shí)現(xiàn)了交易的自動驗(yàn)證和比特幣所有權(quán)的安全轉(zhuǎn)移。
在實(shí)際應(yīng)用中,出于安全和管理等原因,一些比特幣交易需要經(jīng)由不同的實(shí)體同時許可才能完成。比特幣協(xié)議采用多重簽名技術(shù)實(shí)現(xiàn)該需求,多重簽名交易的鎖定腳本記錄了N個公鑰及其對應(yīng)簽名,至少需要提供其中的M(M≤N)個才可以解鎖交易輸出,從而發(fā)起新的交易。
本文方案整體架構(gòu)如圖2所示。
圖2 本文方案整體架構(gòu)
一般而言,供應(yīng)鏈可分為內(nèi)部與外部兩類。內(nèi)部供應(yīng)鏈指企業(yè)內(nèi)部產(chǎn)品在生產(chǎn)和流通過程中涉及的采購、制造、分銷、倉儲等部門構(gòu)成的供需網(wǎng)絡(luò);外部供應(yīng)鏈指企業(yè)外部參與企業(yè)相關(guān)產(chǎn)品生產(chǎn)與流通的原材料供應(yīng)商、生產(chǎn)廠商、儲運(yùn)商、零售商和最終消費(fèi)者組成的供需網(wǎng)絡(luò)[12]。本文方案針對外部和內(nèi)部供應(yīng)鏈采用了不同的架構(gòu)。
在外部供應(yīng)鏈上,方案使用去中心化設(shè)計(jì)。上游生產(chǎn)商、中游儲運(yùn)與零售商和下游的消費(fèi)者之間沒有邏輯關(guān)系,密鑰相互獨(dú)立;在內(nèi)部供應(yīng)鏈上,方案使用“驗(yàn)證授權(quán)”的方式,維護(hù)一個保存分層密鑰的授權(quán)服務(wù)器 。內(nèi)部員工仍保有自己的密鑰,但進(jìn)行操作時,需要向授權(quán)服務(wù)器請求自己級別的密鑰。 內(nèi)部的私鑰不對外公開。
本文方案并不限制底層的區(qū)塊鏈平臺。無論使用以太網(wǎng)、Fabric或其他類似的區(qū)塊鏈平臺,只要提供基本的查詢、交易和部署鏈碼等功能即可。
在本文方案中,每個實(shí)體都擁有一對密鑰。本文將密鑰表示為(xk,xK),其中,xk為私鑰,xK為公鑰,x為密鑰的持有實(shí)體,(xk,xK)?(yk,yK)表示在分層錢包中,父密鑰(xk,xK)衍生出子密鑰(yk,yK),或(yk,yK)是由父密鑰(xk,xK)衍生出的子密鑰。
本文方案的密鑰分配可分為3類:人物實(shí)體,產(chǎn)品實(shí)體和權(quán)限實(shí)體。
1)人物實(shí)體密鑰分配
本文方案人物實(shí)體(例如供應(yīng)商的物流員工,終端消費(fèi)者等)的密鑰(xk,xK)唯一且相互無關(guān)聯(lián)。在采用安全隨機(jī)源的情況下,該條件很容易達(dá)到。
2)產(chǎn)品實(shí)體密鑰分配
產(chǎn)品實(shí)體指供應(yīng)鏈源頭處的相關(guān)實(shí)體,包含生產(chǎn)商、代工廠、生產(chǎn)商的所有產(chǎn)品及其對應(yīng)的物理單品。產(chǎn)品實(shí)體的密鑰在生產(chǎn)階段采用分層錢包技術(shù)分配。
假設(shè)產(chǎn)品生產(chǎn)商為P,擁有一對主密鑰(Pk,PK)。Pi∈P,i∈{1,2,…}表示Pi是P的一個代工廠。p∈P表示p是P生產(chǎn)的一款產(chǎn)品。pj∈Pi,j∈{1,2,…}表示pj為p的一件單品,該單品由代工廠pi生產(chǎn)。
產(chǎn)品實(shí)體的密鑰分配方式如下:
(Pk,PK)?(Pik,PiK),i∈{1,2,…}
(Pk,PK)?(pk,pK)
(pk,pK)?(pjk,pjK),j∈{1,2,…}
其中,pjK可以作為單品pj的唯一標(biāo)識。該標(biāo)識空間約為232個,完全滿足生產(chǎn)需要。
3)權(quán)限實(shí)體密鑰分配
權(quán)限實(shí)體指在內(nèi)部供應(yīng)鏈中,授權(quán)服務(wù)器Serv內(nèi)部保存的權(quán)限,例如公司中 “董事長”“總經(jīng)理”或“物流員工”等職位。權(quán)限實(shí)體的密鑰在授權(quán)服務(wù)器Serv內(nèi)部采用分層錢包技術(shù)分配。
假設(shè)使用內(nèi)部供應(yīng)鏈的機(jī)構(gòu)為T,擁有一對主密鑰(Tk,TK)。權(quán)限可以表達(dá)為一個樹狀結(jié)構(gòu),父節(jié)點(diǎn)擁有更高的權(quán)限,對自己的子孫節(jié)點(diǎn)持有管控權(quán)。
權(quán)限實(shí)體的密鑰分配方式為:
(Hk,HK)?(Lik,LiK),i∈{1,2,…}
其中,H為高級權(quán)限,Li為H管控的下一級權(quán)限,表示為H?Li。
為避免最高權(quán)限數(shù)量不唯一,主密鑰(Tk,TK)不直接代表最高權(quán)限,而是將(Tk,TK)衍生出的第一代子密鑰作為最高權(quán)限實(shí)體的密鑰。
授權(quán)服務(wù)器Serv內(nèi)部的權(quán)限實(shí)體密鑰結(jié)構(gòu)如圖3所示。
圖3 授權(quán)服務(wù)器Serv內(nèi)部密鑰結(jié)構(gòu)
權(quán)限管控分為“授權(quán)”“除權(quán)”和“查詢權(quán)限”3個部分。本文方案將權(quán)限管控的相關(guān)信息全部以交易的形式置于區(qū)塊鏈上,交易的形式化表示如下:
Sigin1&Sigin2&…→Sigout1&Sigout2&…
其中,Sigin表示該交易的“輸入簽名”,記錄了交易來源,多個輸入說明來源為一個“多重簽名”,即該交易由多方確認(rèn)達(dá)成,Sigout表示該交易的“輸出解鎖條件”,記錄了以該交易為輸入,創(chuàng)建新交易需要的(多重)簽名。
3.3.1 授權(quán)
授權(quán)階段需要授權(quán)服務(wù)器Serv、授權(quán)人a∈X和被授權(quán)人b三方參與。a授予b的權(quán)限Y必須低于a的權(quán)限X,且為X的直接下屬,表示為Y?X。
授權(quán)操作需要3個交易來表達(dá),流程如下:
//a向Serv發(fā)送授權(quán)請求b∈Y
a request Serv with b∈Y
//Serv驗(yàn)證a身份和權(quán)限
if a∈Y and Y?X
//創(chuàng)建交易1,發(fā)出授權(quán)信息
create transaction None→Siga& SigX
//創(chuàng)建交易2,確認(rèn)被授權(quán)人
if verify (Siga) and verify (SigX)
create transaction Siga& SigX→Sigb& SigY
//創(chuàng)建交易3,被授權(quán)人接受授權(quán)
if verify (Sigb)create transaction Sigb& SigY→SigY
交易1沒有輸入簽名,類似與比特幣系統(tǒng)中的“創(chuàng)幣交易”。
由于X的私鑰Xk僅保存在Serv內(nèi)部,交易1和交易2需要Serv輔助完成(生成SigX)。3個交易完整地記錄了授權(quán)人a及其權(quán)限X、被授權(quán)人b、被授予的權(quán)限Y和授權(quán)時間等信息,且授權(quán)流程需要雙方共同確認(rèn)(使用私鑰簽名交易)完成。
3.3.2 除權(quán)
除權(quán)階段需要授權(quán)服務(wù)器Serv、除權(quán)人c∈Z兩方參與。其中,c的權(quán)限Z必須高于需要解除的權(quán)限Y,且為Y的直接上屬,表達(dá)為Z?Y。
除權(quán)操作需要2個區(qū)塊鏈交易來表達(dá),流程如下:
//c向Serv發(fā)送除權(quán)請求b?Y
c request Serv with b ?Y
//Serv驗(yàn)證c身份和權(quán)限
if c ∈ Z and Z ?Y
//創(chuàng)建交易4,發(fā)出除權(quán)信息,確認(rèn)除權(quán)人
create transaction SigY→Sigc& SigZ
//創(chuàng)建交易5,除權(quán)人確認(rèn)除權(quán)
if verify (Sigc) and verify (SigZ)
create transaction Sigc& SigZ→Sigc& SigZ
交易4的輸入來源于交易3的輸出Sigb→SigY,即授權(quán)b∈Y的最后一個交易。由于采用了分層錢包技術(shù)分配密鑰且Z?Y,因此通過Z的私鑰Zk可以生成SigY以完成交易4。交易5是一個“自我交易”,該交易用于區(qū)分“授權(quán)交易”和“除權(quán)交易”。
2個交易完整地記錄了除權(quán)人c及其權(quán)限Z和除權(quán)時間等信息,并且除權(quán)階段不需要被除權(quán)人的確認(rèn)。
3.3.3 權(quán)限查詢
權(quán)限查詢不需要任何實(shí)體參與,僅憑區(qū)塊鏈上的現(xiàn)有交易即可完成。
現(xiàn)假設(shè)需要查詢b是否擁有權(quán)限Y,流程如下:
if blockchain contains (Sigb& SigY→SigY)
if no transaction after Sigb& SigY→SigY
return true
return false
若b∈Y,根據(jù)上文對授權(quán)操作的描述,區(qū)塊鏈上必然存在交易Sigb&SigY→SigY,且不存在后續(xù)交易。
若b?Y,存在2種情況:b從未被授權(quán)Y,鏈上不存在交易Sigb&SigY→SigY;b曾被授權(quán)Y,鏈上存在交易Sigb&SigY→SigY。但后被除權(quán),則根據(jù)除權(quán)過程的描述,必然存在后續(xù)交易Sigc&SigZ→SigC&SigZ,其中,c為除權(quán)人。
由于區(qū)塊鏈上查詢交易的歸屬僅需公鑰,當(dāng)人物和權(quán)限實(shí)體公布公鑰后,即可以根據(jù)當(dāng)前鏈上的交易確定b是否擁有權(quán)限Y。
本文“物權(quán)轉(zhuǎn)移”泛指供應(yīng)鏈上的產(chǎn)品在不同的實(shí)體中交接的操作。與權(quán)限管理類似,物權(quán)轉(zhuǎn)移的所有相關(guān)信息也會以交易的形式記錄在區(qū)塊鏈上。單品從供應(yīng)鏈源頭(代工廠)生產(chǎn),至供應(yīng)鏈末端(消費(fèi)者)的流程可以分為生產(chǎn)和運(yùn)輸2個階段,本節(jié)描述這2個階段的流程設(shè)計(jì)。
3.4.1 生產(chǎn)階段
生產(chǎn)階段包含了單品pj由代工廠Pi生產(chǎn)、通過質(zhì)檢并確認(rèn)發(fā)貨的過程,需要2個交易來記錄,流程如下:
//代工廠Pi生產(chǎn)出產(chǎn)品p的一件單品pj,并進(jìn)行質(zhì)檢
if pjis qualified
//(pk,pK)衍生子密鑰(pjk,pjK),分配給pj
derive key pair (pjk,pjK) from (pk,pK)
brand pjwith pjK
//創(chuàng)建交易1,記錄合格產(chǎn)品的生產(chǎn)信息
create transaction None→Sigpj& SigPi
//創(chuàng)建交易2,記錄發(fā)貨信息
if verify (Sigpj) and verify (Sigpi)
create transaction Sigpj& Sigpi→SigS& SigT
else
destroy pj
交易1是一個無輸入的交易,表明了該單品的產(chǎn)地(代工廠)。在交易2中,SigS為代工廠Pi發(fā)貨部門權(quán)限的簽名,SigT為該單品接收方(如存儲商)對接部門權(quán)限的簽名。
3.4.2 運(yùn)輸階段
運(yùn)輸階段包含單品從供應(yīng)鏈源頭發(fā)出,經(jīng)由中間環(huán)節(jié)運(yùn)輸至供應(yīng)鏈末端的各個物權(quán)轉(zhuǎn)移操作。該階段實(shí)際上是單品在各個機(jī)構(gòu)(儲運(yùn)商、零售商等)的內(nèi)部供應(yīng)鏈中流動,并交由下一個機(jī)構(gòu)繼續(xù)運(yùn)輸?shù)倪^程。
現(xiàn)假設(shè)物權(quán)的當(dāng)前歸屬為人物實(shí)體ai∈Ai,i∈{1,2,…},其中,Ai為ai擁有的不同權(quán)限。轉(zhuǎn)移的目標(biāo)權(quán)限為Bj,j∈{1,2,…}。例如,現(xiàn)在單品pj位于一輛多人負(fù)責(zé)的運(yùn)輸車上,下一階段需要交由質(zhì)監(jiān)部門和倉儲部門接收并入庫。
根據(jù)下文即將描述的物權(quán)轉(zhuǎn)移流程,當(dāng)前區(qū)塊鏈上存在交易:
Siga1&Siga2&…→SigB1&SigB2&…
而后具有接收權(quán)限的人物實(shí)體bj∈Bj批準(zhǔn)接收,并將后續(xù)的目標(biāo)權(quán)限標(biāo)記為Ct,t∈{1,2,…}。轉(zhuǎn)移操作的流程為:
//bj向Serv發(fā)送物權(quán)轉(zhuǎn)移請求
bjrequest Serv with transfer Siga1& Siga2&…→SigB1& SigB2& …
//Serv驗(yàn)證bj身份和權(quán)限
if bj∈Bjfor all j∈{1,2,…}
//Serv使用Bjk,將物權(quán)轉(zhuǎn)移至bj
create transaction SigB1& SigB2&…→Sigb1& Sigb2&…
//bj批準(zhǔn)轉(zhuǎn)移,將后續(xù)轉(zhuǎn)移目標(biāo)設(shè)為Ct
if verify (Sigbj) for all j∈{1,2,…}
create transaction Sigb1& Sigb1&…→SigC1& SigC2&…
在3.3節(jié)描述的權(quán)限管控流程中,交易的輸入或輸出是“人物實(shí)體+權(quán)限實(shí)體”混合簽名的形式,而在物權(quán)轉(zhuǎn)移階段的相關(guān)交易中,不存在人物實(shí)體和權(quán)限實(shí)體在某一端混合的情況。因此,在權(quán)限管控和物權(quán)轉(zhuǎn)移交易混合記錄在一條區(qū)塊鏈的情況下,不會造成交易表達(dá)信息的混淆。
當(dāng)物權(quán)在外部供應(yīng)鏈間轉(zhuǎn)移時,交易也采用類似的流程構(gòu)建。例如生產(chǎn)階段最后的交易為Sigpj&SigPi→SigS&SigT,接收方負(fù)責(zé)人t∈T和發(fā)出方負(fù)責(zé)人s∈S共同確認(rèn)交接完成后,雙方構(gòu)建如下交易即可完成物權(quán)轉(zhuǎn)移記錄的上鏈:
SigS&SigT→SigS&Sigt
Sigs&Sigt→SigN1&SigN2&SigN3&…
其中,Ni為接收方內(nèi)部供應(yīng)鏈的后續(xù)目標(biāo)權(quán)限。
當(dāng)物權(quán)轉(zhuǎn)移到供應(yīng)鏈末端實(shí)體時,利用“自我交易”將物權(quán)的最終歸屬改為實(shí)體本身即可。例如商品交易最終達(dá)成時,消費(fèi)者c完成如下交易:
lastInput→Sigc
Sigc→Sigc
該自我交易的兩端都是人物實(shí)體,因此,不會和除權(quán)交易中的自我交易混淆。
由于所有物權(quán)轉(zhuǎn)移的相關(guān)信息都以交易的形式記錄在區(qū)塊鏈上,因此本文方案中的產(chǎn)品溯源可直接以查詢區(qū)塊鏈交易的方式完成。
假設(shè)當(dāng)前單品pj的物權(quán)位于x,x可能為人物實(shí)體或權(quán)限實(shí)體。根據(jù)上文對物權(quán)轉(zhuǎn)移的流程定義,區(qū)塊鏈中必然存在交易:
Sigx→SigN1&SigN2&…
其中,Ni為后續(xù)目標(biāo)人物實(shí)體或權(quán)限實(shí)體的簽名(當(dāng)其為供應(yīng)鏈末端時為Sigx本身)。
該單品的溯源流程如下:
transaction trans=Sigx→SigN1& SigN2&…
while trans.input is not None
//查詢前序交易
trans = lastTransaction(Sigx→SigN1& SigN2&…)
//輸出溯源信息
print extractPubKey (trans.input)
print trans.time
該流程實(shí)際上是一個不斷查找前序交易的過程。這個過程提取所有參與pj流動的實(shí)體簽名,根據(jù)簽名獲取實(shí)體公鑰,從而定位物權(quán)轉(zhuǎn)移參與實(shí)體的相關(guān)信息。交易的時間戳即為物權(quán)轉(zhuǎn)移的確認(rèn)完成時間。
假設(shè)需要查詢供應(yīng)鏈源頭為P的單品pj的合法性,流程如下:
transaction trans=Sigx→SigN1& SigN2&…
while trans.input is not None
//查詢前序交易
trans = lastTransaction(Sigx→SigN1& SigN2&…)
//提取代工廠Pi簽名,獲取公鑰
publicKey=extractPubKey (trans.SigPi)
if PK?PiK
return true
else
return false
防偽驗(yàn)證的流程基于本文方案的2點(diǎn)特性:生產(chǎn)階段的第一個物權(quán)轉(zhuǎn)移記錄為交易None→Sigpj&Sigpi,因此,可以確定pj的供應(yīng)鏈源頭為Pi,并根據(jù)SigPi獲取公鑰PiK;產(chǎn)品實(shí)體采用分層錢包技術(shù)分配密鑰,因此,在沒有生產(chǎn)商私鑰Pk的情況下,仍然可以驗(yàn)證PK?PiK是否成立,即Pi是否為P認(rèn)可的產(chǎn)地,由此判斷pj是否為一件合法的單品。
防偽驗(yàn)證的流程無需第三方參與,只需要生產(chǎn)商公布自己的公鑰PK即可。
在現(xiàn)階段,區(qū)塊鏈技術(shù)已經(jīng)逐步延伸到各個領(lǐng)域。同時,分層錢包樹形結(jié)構(gòu)密鑰表達(dá)的組織層級關(guān)系,已經(jīng)開始被應(yīng)用于驗(yàn)證交易以外的用況。但在常規(guī)的區(qū)塊鏈應(yīng)用中,密鑰僅作為人物實(shí)體的身份標(biāo)識,用于生成標(biāo)記交易的合法性的簽名或數(shù)字證書。如文獻(xiàn)[13]采用分層錢包技術(shù),將個人的支付地址演化成一系列樹狀密鑰簇,構(gòu)建了一個抗攻擊的匿名交易系統(tǒng)。文獻(xiàn)[14]利用分層錢包技術(shù)的樹狀結(jié)構(gòu),提出了一種物聯(lián)網(wǎng)智能家居應(yīng)用領(lǐng)域上下級設(shè)備和應(yīng)用的標(biāo)記方式。
本文方案將供應(yīng)鏈中的實(shí)體分為人物實(shí)體、產(chǎn)品實(shí)體和權(quán)限實(shí)體3類。人物實(shí)體的密鑰相互獨(dú)立,權(quán)限實(shí)體和產(chǎn)品實(shí)體密鑰采用分層錢包技術(shù)分配。這種密鑰分配方式是本文方案后續(xù)設(shè)計(jì)的基礎(chǔ),也是一種非對稱加密密鑰使用的創(chuàng)新。
產(chǎn)品實(shí)體的密鑰分配分為3個階段:
(Pk,PK)?(Pik,PiK),i∈{1,2,…}
(Pk,PK)?(pk,pK)
(pk,pK)?(pjk,pjK),j∈{1,2,…}
這3個階段在編碼上直接表達(dá)了產(chǎn)品實(shí)體的3個對應(yīng)關(guān)系:代工廠Pi隸屬與生產(chǎn)商P,p是生產(chǎn)商P的一個產(chǎn)品,pj是產(chǎn)品p的一個單品。由于分層錢包技術(shù)在密鑰衍生上的唯一性和不可逆性,僅有父級密鑰可以衍生出合法的子孫密鑰用于交易簽名。這種層級關(guān)系具有極高的穩(wěn)定性和安全性,構(gòu)成了本文方案產(chǎn)品溯源和防偽驗(yàn)證的基礎(chǔ)。
本文方案將單品pj的公鑰pjK作為pj的唯一編碼標(biāo)識,這種利用分層錢包技術(shù)的編碼方式可以廣泛應(yīng)用于物聯(lián)網(wǎng)及相關(guān)領(lǐng)域。在常規(guī)的物聯(lián)網(wǎng)編碼體系(EPC、UID等)中,實(shí)體的層級關(guān)系通過編碼的分段解析確定。例如在EPC-96中,64位的編碼被分為8位標(biāo)頭、28位廠商識別碼、24位對象分類碼和36位序列號4個碼段。這種分段解析的方式,使很大一部分編碼空間被用于描述“分層”信息(不同的版本號、不同的廠商、不同的對象等)。在本文方案中,層級關(guān)系直接在編碼上表達(dá),相對于傳統(tǒng)編碼體系節(jié)約了大量編碼空間。并且,公鑰對應(yīng)的私鑰可以用于滿足某些需要加密的需求(例如本文方案中的防偽驗(yàn)證)。
傳統(tǒng)編碼體系的另一個局限是需要一個統(tǒng)一的管理機(jī)構(gòu)(如EPC global)分配碼段,以保證編碼的唯一性。這樣雖然便于管理,但在一定程度上限制了用戶的使用。在本文方案中,所有編碼都由隨機(jī)種子生成,用戶使用安全的隨機(jī)生成函數(shù)可以獲得唯一的主密鑰,不再需要統(tǒng)一的管理機(jī)構(gòu)。
本文提出了人物實(shí)體與權(quán)限實(shí)體獨(dú)立分配密鑰的方式,該方式是本文方案權(quán)限管控的基礎(chǔ)。在現(xiàn)有使用分層錢包技術(shù)的方案中,下級實(shí)體的密鑰直接衍生自其附屬的上級實(shí)體密鑰,例如在文獻(xiàn)[15]設(shè)計(jì)的智能家居系統(tǒng)中,傳感器的密鑰直接衍生自其上層智能網(wǎng)關(guān)的密鑰然而在權(quán)限管控領(lǐng)域,這種直接衍生的方式存在3個明顯的缺陷:1)一旦上級人物實(shí)體密鑰泄露,其下屬所有實(shí)體的密鑰將全部暴露,對系統(tǒng)安全帶來災(zāi)難性的后果;2)如果人物實(shí)體的權(quán)限變動,需要重新為人物實(shí)體分配相應(yīng)級別的密鑰,非常繁瑣;3)如何回收帶有權(quán)限的人物實(shí)體密鑰,在系統(tǒng)中將其標(biāo)記為無權(quán)限或廢止比較困難。
本文方案將權(quán)限實(shí)體從人物實(shí)體中獨(dú)立出來,采用對人物實(shí)體“加權(quán)”和“除權(quán)”的方式表達(dá)人物的當(dāng)前權(quán)限。該方式完全解決了上文描述的3個缺陷:由于人物實(shí)體的密鑰相互獨(dú)立,單一人物實(shí)體密鑰的泄露、更換、授權(quán)和除權(quán)完全不影響權(quán)限體系的正常運(yùn)行。權(quán)限實(shí)體的私鑰保存在授權(quán)服務(wù)器內(nèi)部,只公布其公鑰,保證了方案的整體安全性。權(quán)限實(shí)體的密鑰利用分層確定性錢包技術(shù)分配,利用密鑰樹的層級關(guān)系表達(dá)了權(quán)限的上下級關(guān)系。由于衍生函數(shù)的單向性,因此這種層級關(guān)系的安全性和穩(wěn)定性在密碼學(xué)上得到了完整地保護(hù)。
本文方案提出一種基于區(qū)塊鏈交易的權(quán)限管控方式,該方式的權(quán)限層級關(guān)系采用分層錢包技術(shù)確定,利用區(qū)塊鏈技術(shù)保證權(quán)限管控體系的去中心化、安全性和公開性。
在現(xiàn)有的信息化系統(tǒng)中,權(quán)限管控是保證系統(tǒng)安全的重要核心之一。但無論是Linux系統(tǒng)內(nèi)核[15],還是大型的ERP系統(tǒng)[16],其權(quán)限管控的相關(guān)信息都會被記錄到一個經(jīng)過加密的文件或數(shù)據(jù)庫系統(tǒng)中,構(gòu)成類似與“人物-權(quán)限”的鍵值對。
這種方式存在以下可改進(jìn)的地方:首先,權(quán)限信息的不公開會造成獨(dú)立系統(tǒng)間的交互困難,外界對于內(nèi)部權(quán)限的驗(yàn)證需要專門的系統(tǒng)服務(wù)來處理。例如在供應(yīng)鏈中,如果雙方系統(tǒng)不提供相應(yīng)的接口,生產(chǎn)商和儲運(yùn)商無法確認(rèn)對方交接人員的權(quán)限信息,第三方人員也無法確認(rèn)供應(yīng)鏈參與人員實(shí)體的權(quán)限。其次,由于采用本地化存儲,一旦保存權(quán)限信息的服務(wù)器出現(xiàn)故障,依賴于權(quán)限體系的所有業(yè)務(wù)邏輯都無法繼續(xù)進(jìn)行。并且,權(quán)限體系的安全性完全依賴于保存權(quán)限信息的服務(wù)器或數(shù)據(jù)庫系統(tǒng),一旦其被攻破,將對系統(tǒng)安全造成嚴(yán)重威脅。最后,權(quán)限管控的流程完全掌控在授權(quán)方,缺失了被授權(quán)方的確認(rèn)流程。部分系統(tǒng)并不記錄權(quán)限管控的詳細(xì)信息(授權(quán)人、授權(quán)時間和授權(quán)人權(quán)限),會對問題回溯和責(zé)任定位造成困難。
本文方案在將人物實(shí)體和權(quán)限實(shí)體分別分配密鑰的基礎(chǔ)上,利用區(qū)塊鏈技術(shù)提出了一種可以改進(jìn)上述問題的權(quán)限管控體系。通過上文對“加權(quán)”和“除權(quán)”流程的形式化定義可以看到,方案中所有權(quán)限管控的信息全部以交易的形式記錄在區(qū)塊鏈上。由于區(qū)塊鏈?zhǔn)且粋€去中心化的P2P系統(tǒng),因此網(wǎng)絡(luò)中任何節(jié)點(diǎn)都可以進(jìn)行“權(quán)限查詢”的流程,從而驗(yàn)證人物實(shí)體的權(quán)限信息。
相對于依賴于中心權(quán)限系統(tǒng)的傳統(tǒng)系統(tǒng),本文方案僅在進(jìn)行授權(quán)和除權(quán)操作時需要授權(quán)服務(wù)器的輔助,權(quán)限查詢操作不依賴于單一服務(wù)器。如果節(jié)點(diǎn)緩存有鏈上的相關(guān)交易,該操作甚至可在無網(wǎng)絡(luò)環(huán)境下進(jìn)行,數(shù)字簽名算法保證了緩存數(shù)據(jù)的安全性和可驗(yàn)證性。由于在生產(chǎn)環(huán)境中,相對于權(quán)限查詢操作,加權(quán)/除權(quán)操作僅占很小的一部分,因此本文方案降低了單一服務(wù)器的運(yùn)行壓力,具有很高的應(yīng)用價值。
本文方案設(shè)計(jì)的權(quán)限管控體系的安全性不再依賴于某系統(tǒng)或數(shù)據(jù)庫,而是由區(qū)塊鏈及其底層的數(shù)字簽名算法保證。以一個授權(quán)交易Siga&Sigx→Sigb&SigY為例,該交易發(fā)起了一個b∈Y的授權(quán)操作。由于有且僅有私鑰ak和Xk可以生成簽名Siga&SigX,而Xk保存在安全的授權(quán)服務(wù)器內(nèi)部,因此本文方案保證了授權(quán)操作的安全性(除權(quán)操作同理)。
現(xiàn)階段已有一部分成果利用多重簽名技術(shù)的優(yōu)勢解決多方交易的信任、安全等問題[17],但其主要目的在于驗(yàn)證交易的合法性,而非保存交易信息,提供系統(tǒng)記錄的可溯源性。本文提出的這種以多重簽名作為信息載體的方式,為多重簽名技術(shù)的應(yīng)用提出了一種新的方向。
在常規(guī)系統(tǒng)中,一旦保存權(quán)限信息的服務(wù)器或數(shù)據(jù)庫被攻破,攻擊者可以在無記錄的情況下增加、刪除和篡改人物實(shí)體的權(quán)限,對整個權(quán)限體系造成嚴(yán)重破壞。在本文方案中,區(qū)塊鏈的不可篡改性為權(quán)限信息存儲提供了安全基礎(chǔ)。由于鏈上交易不可篡改,不需要主動保護(hù)鏈中的授權(quán)和除權(quán)交易,即使在不安全的網(wǎng)絡(luò)環(huán)境中,密碼學(xué)也保證了權(quán)限信息的安全可靠。同時,由于區(qū)塊鏈的可回溯性,即使在出現(xiàn)安全問題的情況下,也可以迅速進(jìn)行排查和責(zé)任定位,防止危害進(jìn)一步擴(kuò)大,及時恢復(fù)權(quán)限系統(tǒng)的正常運(yùn)行。
在本文方案中,在通過創(chuàng)建交易Siga&SigX→Sigb&SigY發(fā)起授權(quán)操作后,還需要被授權(quán)人通過交易Sigb&SigY→SigY確認(rèn)(或者說接受)該授權(quán)。這種“共同確認(rèn)”的授權(quán)方式對被授權(quán)人來說既是一種保護(hù)(不會被強(qiáng)行授權(quán)),也是一種約束(授權(quán)確認(rèn)后不可抵賴)。這是本文提出的一種新型權(quán)限管控模式,在進(jìn)一步加強(qiáng)權(quán)限體系安全性的同時,也可以避免實(shí)際應(yīng)用中很多權(quán)限相關(guān)的糾紛。
考慮到在實(shí)際應(yīng)用中發(fā)起除權(quán)操作的人物實(shí)體不一定是授權(quán)階段的授權(quán)人,因此,授權(quán)操作的最后一個交易Sigb&SigY→SigY的輸出為僅需要SigY,任何一個權(quán)限高于Y的人物實(shí)體c∈Z都可以通過創(chuàng)建SigY→Sigc&SigZ來解除被授權(quán)人的權(quán)限。
供應(yīng)鏈中產(chǎn)品在實(shí)體間不斷轉(zhuǎn)移,信息化管控系統(tǒng)需要處理和記錄這些轉(zhuǎn)移信息,并保證記錄的安全性。在常規(guī)系統(tǒng)中,這些信息被記錄在一個中心式或分布式數(shù)據(jù)庫內(nèi)。但正如文獻(xiàn)[18]指出,若采用中心式數(shù)據(jù)庫系統(tǒng),容易產(chǎn)生性能瓶頸,且當(dāng)數(shù)據(jù)庫出現(xiàn)故障時,整個系統(tǒng)將無法正常運(yùn)行;若采用分布式數(shù)據(jù)庫,則需要面對一些諸如數(shù)據(jù)冗余、一致性和系統(tǒng)可靠性等復(fù)雜的問題。本文方案利用區(qū)塊鏈技術(shù),在保證安全性的情況下,解決了供應(yīng)鏈管控系統(tǒng)中的上述問題。
本文方案的物權(quán)轉(zhuǎn)移信息完全以交易的形式記錄在區(qū)塊鏈上,利用多重簽名技術(shù)使方案可以用于多方參與的轉(zhuǎn)移過程。與權(quán)限管控類似,物權(quán)轉(zhuǎn)移的流程需要交接雙方的共同確認(rèn)才能完成,解決了實(shí)際應(yīng)用中因交接信息缺失而引發(fā)的糾紛。例如在快遞行業(yè)中,經(jīng)常出現(xiàn)的丟件、冒領(lǐng)。這種“共同確認(rèn)”的特性既保護(hù)了交接雙方的利益,也使交接記錄完整地記錄下來,出現(xiàn)問題時便于準(zhǔn)確定位和追責(zé)。
在本文方案中,一次交接的過程需要“人物實(shí)體->權(quán)限實(shí)體”和“權(quán)限實(shí)體->人物實(shí)體”2個交易來記錄??紤]到實(shí)際應(yīng)用中物權(quán)的轉(zhuǎn)移并不總是發(fā)生在人物實(shí)體間。例如倉儲部門的負(fù)責(zé)人在對產(chǎn)品進(jìn)行清點(diǎn)入庫時,還無法確定下個階段負(fù)責(zé)運(yùn)輸?shù)呐渌腿藛T。因此,這種設(shè)計(jì)可以滿足生產(chǎn)環(huán)境的實(shí)際用況,不會影響供應(yīng)鏈本身的業(yè)務(wù)流程。
在常規(guī)的供應(yīng)鏈管控系統(tǒng)中,物權(quán)轉(zhuǎn)移的交接記錄在數(shù)據(jù)庫內(nèi)部是“離散的”數(shù)據(jù)行。通過修改數(shù)據(jù)庫內(nèi)容,可以對供應(yīng)鏈中某一環(huán)節(jié)的信息進(jìn)行篡改。本文方案利用區(qū)塊鏈記錄所有物權(quán)轉(zhuǎn)移信息,因此,交接記錄具有完全的可回溯性,產(chǎn)品在系統(tǒng)內(nèi)的流動無論是邏輯上,還是實(shí)際的數(shù)據(jù)存儲都構(gòu)成一個完整的鏈條。數(shù)字簽名算法保證了鏈條的安全性,供應(yīng)鏈的參與方無需主動保護(hù)物權(quán)轉(zhuǎn)移信息,一旦物權(quán)轉(zhuǎn)移操作被雙方確認(rèn)并記錄上鏈后,該信息不可被篡改和刪除。
由于區(qū)塊鏈系統(tǒng)是一個P2P網(wǎng)絡(luò),對內(nèi)部供應(yīng)鏈而言,相較于中心式數(shù)據(jù)庫,它提供了信息的去中心化處理和存儲,解決了中心化架構(gòu)中系統(tǒng)整體的性能和運(yùn)行對于中心服務(wù)器的強(qiáng)依賴問題。相較于分布式數(shù)據(jù)庫,區(qū)塊鏈利用共識算法解決了一致性問題,利用數(shù)字簽名算法為數(shù)據(jù)提供了有效性驗(yàn)證,降低了運(yùn)維成本。
對外部供應(yīng)鏈而言,P2P網(wǎng)絡(luò)架構(gòu)打破了獨(dú)立系統(tǒng)間數(shù)據(jù)交互的壁壘?,F(xiàn)階段由于系統(tǒng)間的異構(gòu)性,跨內(nèi)部供應(yīng)鏈的數(shù)據(jù)交互需要雙方提供統(tǒng)一的接口,構(gòu)建貫穿多個孤立系統(tǒng)的高層次供應(yīng)鏈管控解決方案存在很大困難。本文方案設(shè)計(jì)了內(nèi)部供應(yīng)鏈間物權(quán)轉(zhuǎn)移的相應(yīng)流程,多個內(nèi)部供應(yīng)鏈共享同一個區(qū)塊鏈網(wǎng)絡(luò),利用數(shù)字簽名算法等技術(shù)實(shí)現(xiàn)了安全的全網(wǎng)絡(luò)信息共享。相較于常規(guī)系統(tǒng),本文方案低成本、高效率地解決了供應(yīng)鏈管控中由于系統(tǒng)間異構(gòu)性造成的“信息孤島”問題。
現(xiàn)階段已經(jīng)有一些采用區(qū)塊鏈存儲交易信息的系統(tǒng)出現(xiàn)。與本文方案相比,這些系統(tǒng)大多利用了一些新的區(qū)塊鏈平臺“記錄除交易信息外的冗余數(shù)據(jù)”的特性。本文方案將所有物權(quán)轉(zhuǎn)移的相關(guān)信息都以交易的形式記錄下來。即使是比較原始的區(qū)塊鏈平臺,也可以完整實(shí)現(xiàn)一整套需求。同時,因?yàn)椴恍枰呒壒δ艿闹С?不同區(qū)塊鏈平臺之間的轉(zhuǎn)移和升級也變得相對簡單,代碼的基本邏輯不需要經(jīng)歷大的變動。
需要注意的是,區(qū)塊鏈作為一個分布式的數(shù)據(jù)存儲網(wǎng)絡(luò),比較適合記錄內(nèi)容簡單且結(jié)構(gòu)單一的數(shù)據(jù),例如供應(yīng)鏈中的物權(quán)轉(zhuǎn)移信息。并且區(qū)塊鏈系統(tǒng)的查詢速度相對偏慢,因此,并不能完全替代分布式數(shù)據(jù)庫。
現(xiàn)有的供應(yīng)鏈管控方案由于獨(dú)立系統(tǒng)的異構(gòu)性,產(chǎn)品的全供應(yīng)鏈溯源需要實(shí)現(xiàn)一個兼容供應(yīng)鏈上所有平行系統(tǒng)間數(shù)據(jù)交互的高層數(shù)據(jù)平臺,這會使平臺的構(gòu)造非常復(fù)雜,對平臺本身的性能要求也很高,需要耗費(fèi)大量的經(jīng)濟(jì)和人力資源。
如上文所述,本文方案產(chǎn)品的流動在區(qū)塊鏈上構(gòu)成了一個完整且保證安全的鏈條,因此,可以根據(jù)該鏈條進(jìn)行產(chǎn)品的溯源。根據(jù)方案對溯源流程的形式化定義,在供應(yīng)鏈各參與方公布自己的公鑰后,任何接入?yún)^(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)都可以對某件產(chǎn)品進(jìn)行信息回溯。由于區(qū)塊鏈的不可篡改性,從區(qū)塊鏈交易鏈條中提取的回溯信息具有非常高的可信度,不存在常規(guī)系統(tǒng)中很容易發(fā)生的環(huán)節(jié)出現(xiàn)問題(例如信息丟失、惡意篡改或被攻擊),導(dǎo)致整條供應(yīng)鏈回溯信息可靠性受到影響。
本文方案中產(chǎn)品溯源所需信息的處理和存儲成本由整個區(qū)塊鏈網(wǎng)絡(luò)共同承擔(dān),不再需要維護(hù)一個復(fù)雜度高、資源消耗大的高層數(shù)據(jù)平臺,也無需擔(dān)心數(shù)據(jù)存儲的安全性,在不安全的網(wǎng)絡(luò)環(huán)境、甚至離線的情況下,也可以獲取到可靠的產(chǎn)品溯源信息。相較于其他系統(tǒng),這是本文方案在產(chǎn)品回溯上的另一個優(yōu)勢。
本文方案利用分層錢包技術(shù)為產(chǎn)品實(shí)體分配密鑰,不僅構(gòu)建了一套完整的分層編碼體系,而且也提供一種高效的防偽驗(yàn)證機(jī)制。
現(xiàn)行的防偽驗(yàn)證方案一般采用“驗(yàn)證碼+驗(yàn)證平臺”的方式,用戶將產(chǎn)品標(biāo)簽上的驗(yàn)證碼輸入廠商維護(hù)的網(wǎng)絡(luò)平臺,從而獲取產(chǎn)品的驗(yàn)證信息。這種方案存在如下缺點(diǎn):1)驗(yàn)證碼極易偽造和冒用,非法廠商在獲取到一個合法的驗(yàn)證碼后可大量用于同款產(chǎn)品的仿冒;2)對一個大產(chǎn)量的產(chǎn)品,維護(hù)一個需要響應(yīng)大量驗(yàn)證請求的網(wǎng)絡(luò)平臺成本較高,一部分生產(chǎn)廠家難以承擔(dān);3)網(wǎng)絡(luò)平臺如果運(yùn)行異?;虮还テ?將會摧毀整個驗(yàn)證體系,甚至影響廠商和其他中間商的商業(yè)信譽(yù)。
本文方案單品的密鑰衍生自其所屬產(chǎn)品,產(chǎn)品和代工廠的密鑰衍生自其廠商。同時,通過質(zhì)檢的單品在區(qū)塊鏈中存有輸入為“單品+代工廠”多重簽名的交易。因此,在供應(yīng)鏈的源頭處會構(gòu)成一個“廠商->代工廠->產(chǎn)品->單品”的樹形結(jié)構(gòu),分層錢包技術(shù)中密鑰衍生的單向性保證了該結(jié)構(gòu)的安全和易于驗(yàn)證,非法廠商無法偽造單品的生產(chǎn)信息。在供應(yīng)鏈中端或末端,由于用戶可以查詢到產(chǎn)品在整條供應(yīng)鏈上的轉(zhuǎn)移記錄,因此不存在類似驗(yàn)證碼冒用的問題。
與產(chǎn)品溯源類似,防偽驗(yàn)證信息的處理和存儲成本也由區(qū)塊鏈網(wǎng)絡(luò)共同承擔(dān),并由數(shù)字簽名算法保證驗(yàn)證過程安全可靠。相對與傳統(tǒng)的驗(yàn)證體系,本文方案無論是對廠商還是對消費(fèi)者而言,在經(jīng)濟(jì)性和安全性上都具有較大的優(yōu)勢。
本文結(jié)合區(qū)塊鏈、比特幣相關(guān)技術(shù)和多重簽名技術(shù),設(shè)計(jì)一套供應(yīng)鏈管控和溯源方案。該方案將供應(yīng)鏈內(nèi)部實(shí)體分為“人物實(shí)體”“產(chǎn)品實(shí)體”和“權(quán)限實(shí)體”的分類方式,將分層錢包技術(shù)用于實(shí)體密鑰的分配,并提出一種基于分層錢包技術(shù)的樹形結(jié)構(gòu)編碼體系應(yīng)用于物聯(lián)網(wǎng)編碼領(lǐng)域。通過設(shè)計(jì)基于區(qū)塊鏈交易的去中心化權(quán)限管控機(jī)制和物權(quán)轉(zhuǎn)移信息記錄與驗(yàn)證機(jī)制,為利用區(qū)塊鏈交易提供了新的思路。本文方案充分利用區(qū)塊鏈和比特幣技術(shù)去中心化、信息安全和記錄可回溯等特性,解決了現(xiàn)有系統(tǒng)中一些常見的問題。下一步將根據(jù)該方案實(shí)現(xiàn)可用的系統(tǒng)框架與原型,逐步優(yōu)化設(shè)計(jì)細(xì)節(jié),以解決區(qū)塊鏈記錄信息速率較低等問題。