韋懿杰,陳耀旺
(杭州電子科技大學(xué)計算機(jī)學(xué)院,浙江杭州 310018)
隨著全球商業(yè)環(huán)境變得日益復(fù)雜和動蕩,許多商業(yè)體通過加強(qiáng)跨組織的業(yè)務(wù)協(xié)作和資源共享來達(dá)成更多業(yè)務(wù)目標(biāo)。協(xié)作業(yè)務(wù)流程執(zhí)行涉及到廣泛的信息與資源交換,相應(yīng)的數(shù)據(jù)文件中可能包含用戶的敏感信息,如果沒有安全的數(shù)據(jù)共享與訪問機(jī)制,用戶并不愿意共享其數(shù)據(jù)。
近年來,隨著數(shù)字加密貨幣熱度越來越高,區(qū)塊鏈作為其底層支持技術(shù)得到了廣泛關(guān)注。目前已經(jīng)有許多研究者將區(qū)塊鏈技術(shù)應(yīng)用于協(xié)作業(yè)務(wù)流程管理領(lǐng)域,允許流程參與者在鏈上執(zhí)行或監(jiān)控業(yè)務(wù)流程。但現(xiàn)有研究多關(guān)注流程的執(zhí)行控制,缺乏數(shù)據(jù)存儲和訪問控制的有效方案。
近年來,區(qū)塊鏈技術(shù)由于具有去中心化、不可篡改和可追溯等特性而得到廣泛關(guān)注。例如,徐倩倩將現(xiàn)有區(qū)塊鏈研究劃分為區(qū)塊鏈基礎(chǔ)理論與區(qū)塊鏈技術(shù)在金融等領(lǐng)域的應(yīng)用兩個方面;饒東寧等分析了區(qū)塊鏈與供應(yīng)鏈的現(xiàn)狀,探究了在物流供應(yīng)鏈中引入?yún)^(qū)塊鏈技術(shù)的應(yīng)用前景;Mendling等指出使用區(qū)塊鏈技術(shù)能夠促進(jìn)業(yè)務(wù)流程管理領(lǐng)域系統(tǒng)跨網(wǎng)絡(luò)執(zhí)行、監(jiān)測或改進(jìn)等相關(guān)研究的發(fā)展;López-Pintado等開發(fā)了基于以太坊區(qū)塊鏈的業(yè)務(wù)流程執(zhí)行引擎Caterpillar;Mercenne等在該引擎上的基礎(chǔ)上開發(fā)了Blockchain Studio框架,該框架能夠在以太坊區(qū)塊鏈上支持基于角色的業(yè)務(wù)工作流生成和自動化;Abid等擴(kuò)展了Caterpillar工具,通過將業(yè)務(wù)流程模型中的時間約束轉(zhuǎn)換為智能合約代碼以支持時間感知的業(yè)務(wù)流程;Ladleif等在智能合約中提供了支持時間度量的解決方案并采用準(zhǔn)確性和信任度比較時間度量的屬性,最后將該解決方案應(yīng)用于業(yè)務(wù)流程執(zhí)行過程中;Viriyasitavat等從“工業(yè)4.0”角度出發(fā),提出一種基于區(qū)塊鏈技術(shù)的自動化業(yè)務(wù)流程管理方案,能夠在開放環(huán)境下支持選擇和組合服務(wù);Prybila等探索了使用比特幣區(qū)塊鏈支持業(yè)務(wù)流程執(zhí)行的方案,并為該方案設(shè)計了實現(xiàn)原型,然而該方案沒有考慮到共享數(shù)據(jù)的隱私性,且比特幣編程技術(shù)的局限性也限制了該原型的功能;Sturm等基于業(yè)務(wù)流程建模標(biāo)注(Business Process Modeling Notation,BPMN)過程圖提出一種基于區(qū)塊鏈的去中心化流程執(zhí)行體系;唐玄昭等提出一種基于區(qū)塊鏈的業(yè)務(wù)流程互操作框架以支持多方跨組織流程協(xié)同。
為解決傳統(tǒng)訪問控制技術(shù)中訪問權(quán)限難以界定、第三方難以信任等問題,許多研究者基于區(qū)塊鏈提出訪問控制方案并取得了不少成果。例如,Maesa等提出一種基于區(qū)塊鏈技術(shù)的訪問控制方法,該方法能夠發(fā)布用于表示訪問資源權(quán)限的策略。此外,該學(xué)者還提出一種基于智能合約的訪問控制方法,該方法結(jié)合傳統(tǒng)訪問控制技術(shù)與區(qū)塊鏈技術(shù),將XACML體系架構(gòu)的部分功能轉(zhuǎn)化為以太坊智能合約以支持防篡改的鏈上訪問控制。Cruz等提出一個名為RBAC-SC(Role-based Access Control using Smart Contract)的智能合約訪問控制方法,該方法使用以太坊智能合約作為組織角色授權(quán)的基礎(chǔ)設(shè)施,并提出用于驗證用戶角色所有權(quán)的質(zhì)詢響應(yīng)認(rèn)證協(xié)議;Steichen等提出一種基于區(qū)塊鏈的星際文件系統(tǒng)(Inter Planetary File System,IPFS)分布式訪問控制方法,該方法解決了區(qū)塊鏈無法存儲大規(guī)模數(shù)據(jù)的缺點;López-Pintado等提出一種用于協(xié)作業(yè)務(wù)流程執(zhí)行的角色綁定模型和綁定策略規(guī)范語言,同時還對該規(guī)范語言賦予petri網(wǎng)語義以檢測綁定策略是否會發(fā)生死鎖;Rondanini等提出在不同組織間建立協(xié)作與資源共享的訪問控制方法,該方法在智能合約中部署一組授權(quán)策略,允許任務(wù)執(zhí)行者在任務(wù)激活期間訪問任務(wù)執(zhí)行所需資源;Akhtar等針對分布式工作流中資源缺乏可審計的訪問控制方案等問題,提出一種能夠生成最優(yōu)復(fù)合訪問控制策略的方法并開發(fā)了基于以太坊區(qū)塊鏈的實現(xiàn)原型。
目前,基于區(qū)塊鏈的訪問控制技術(shù)多為訪問控制策略的鏈上化,沒有考慮到基于區(qū)塊鏈協(xié)作業(yè)務(wù)流程中的數(shù)據(jù)文件如何存儲以及任務(wù)動態(tài)性對于訪問權(quán)限的影響。針對以上問題,本文提出一個基于區(qū)塊鏈的協(xié)作業(yè)務(wù)流程管理框架,該框架基于BPMN編排圖模型支持協(xié)作業(yè)務(wù)流程的鏈上執(zhí)行過程,同時引入IPFS實現(xiàn)數(shù)據(jù)的鏈下存儲,最終通過鏈上存儲文件哈希值和鏈下存儲文件內(nèi)容的方式緩解了區(qū)塊鏈存儲文件的壓力,提高了協(xié)作業(yè)務(wù)流程數(shù)據(jù)的安全性,降低了區(qū)塊鏈數(shù)據(jù)存儲成本。此外,本文還提出一個基于任務(wù)和屬性的訪問控制模型(Task-Attribute-Based Access Control,TABAC),該模型能在區(qū)塊鏈上驗證資源訪問者擁有的權(quán)限,為協(xié)作業(yè)務(wù)流程提供了動態(tài)、靈活、細(xì)粒度和可追溯的數(shù)據(jù)訪問控制支持。
為了在區(qū)塊鏈上支持協(xié)作業(yè)務(wù)流程的數(shù)據(jù)共享與訪問控制,本文提出一個基于智能合約的協(xié)作業(yè)務(wù)流程引擎,該引擎基于BPMN編排圖驅(qū)動,能夠在以太坊區(qū)塊鏈上支持協(xié)作業(yè)務(wù)流程的執(zhí)行。該引擎采用通用智能合約的設(shè)計方法,即設(shè)計了能夠提供編排圖模型數(shù)據(jù)存儲和流程實例執(zhí)行等功能的智能合約,合約內(nèi)部包含了通用數(shù)據(jù)結(jié)構(gòu)體和合約函數(shù)。該引擎的執(zhí)行概念如圖1所示。

Fig.1 Conceptual diagram of execution engine圖1 執(zhí)行引擎概念
首先需要部署通用智能合約,通過翻譯器將編排圖模型解析為符合通用數(shù)據(jù)結(jié)構(gòu)體格式的模型數(shù)據(jù)文件,通過部署器發(fā)送交易將模型導(dǎo)入至通用智能合約中。隨后流程創(chuàng)建者調(diào)用合約函數(shù)創(chuàng)建流程實例,完成實例創(chuàng)建后,按照相應(yīng)的編排任務(wù)和消息狀態(tài)決定如何發(fā)送消息。當(dāng)消息被接收者確認(rèn)后,該框架能夠自動執(zhí)行相應(yīng)的編排任務(wù)并根據(jù)模型數(shù)據(jù)以及消息內(nèi)容決定是否啟用下一編排任務(wù),直至最后一個編排任務(wù)到達(dá)已完成狀態(tài)時表示該實例執(zhí)行完成。
協(xié)作業(yè)務(wù)流程執(zhí)行過程往往會涉及到數(shù)據(jù)文件的交互與共享,而當(dāng)前區(qū)塊鏈無法在鏈上支持大量數(shù)據(jù)存儲。針對該問題,本文在區(qū)塊鏈上存儲文件的資源地址標(biāo)識符,使數(shù)據(jù)文件脫離區(qū)塊鏈保存,訪問者需要根據(jù)鏈上存儲的資源地址標(biāo)識符訪問數(shù)據(jù)文件。協(xié)作業(yè)務(wù)流程執(zhí)行過程中的數(shù)據(jù)文件具有隱私性和時效性。為此,本文在框架內(nèi)部增加了鏈上文件管理合約、訪問控制合約和鏈下IPFS代理層組件,其中文件管理合約是一個用于存儲數(shù)據(jù)文件哈希值的智能合約;訪問控制合約是一個用于驗證資源訪問者權(quán)限的智能合約;IPFS代理層用于攔截流程參與者對IPFS中存儲數(shù)據(jù)文件的訪問請求。在本文框架中,流程參與者不再直接與IPFS進(jìn)行交互,而是通過IPFS代理層上傳或下載文件。
流程參與者上傳文件的時序如圖2所示,當(dāng)流程參與者上傳文件時,IPFS代理層將調(diào)用鏈上訪問控制智能合約以驗證流程參與者是否擁有對應(yīng)文件的寫入權(quán)限,如果擁有該權(quán)限,IPFS代理層將使用內(nèi)部保存的以太坊賬戶公鑰加密文件,將加密后的文件上傳至IPFS并將其產(chǎn)生的哈希值寫入到文件管理智能合約中。如果流程參與者沒有該文件的寫入權(quán)限,IPFS代理層將拒絕流程參與者的上傳文件請求。流程參與者請求下載文件的過程與上傳過程類似,同樣需要由IPFS代理層和鏈上訪問控制智能合約進(jìn)行權(quán)限驗證。當(dāng)流程參與者擁有文件的讀取權(quán)限時,代理層在IPFS中檢索到相應(yīng)的文件資源并使用以太坊私鑰解密文件,然后將解密后的文件返回給流程參與者。

Fig.2 Sequence diagram of uploading file圖2 上傳文件時序圖
基于區(qū)塊鏈的業(yè)務(wù)流程管理相關(guān)工作的重點在于業(yè)務(wù)流程模型的執(zhí)行控制,但這些工作沒有考慮到協(xié)作業(yè)務(wù)流程執(zhí)行過程中涉及到的數(shù)據(jù)資源訪問控制問題。
本文提出的TABAC模型結(jié)合了基于任務(wù)的訪問控制(Task-Based Access Control,TBAC)和基于屬性的訪問控制(Attribute-Based Access Control,ABAC)模型的優(yōu)點,能夠為數(shù)據(jù)資源提供靈活、動態(tài)的訪問控制。該模型中業(yè)務(wù)流程可被分解為若干任務(wù),任務(wù)包含任務(wù)屬性,這些屬性用于描述任務(wù)的特征,如任務(wù)名稱、任務(wù)狀態(tài)和任務(wù)類型等。用戶包含用戶屬性,在協(xié)作業(yè)務(wù)流程環(huán)境下用戶的屬性可能來自多個不同的組織。TABAC模型通過用戶屬性和任務(wù)屬性以及由這些屬性組成的訪問控制策略驗證用戶在協(xié)作業(yè)務(wù)流程執(zhí)行過程中擁有的權(quán)限。
TABAC模型的訪問控制策略實施過程如圖3所示。資源請求者向策略執(zhí)行點發(fā)送資源請求,策略執(zhí)行點向策略決策點發(fā)起驗證權(quán)限請求。策略決策點根據(jù)從策略管理點中獲得的策略規(guī)則(屬性條件表示式)和從策略信息點處獲得的用戶屬性以及任務(wù)屬性評估資源訪問者是否擁有權(quán)限,然后將決策結(jié)果返回給策略執(zhí)行點。當(dāng)決策結(jié)果為拒絕時,策略執(zhí)行點將拒絕資源請求者;當(dāng)決策結(jié)果為允許時,策略執(zhí)行點允許資源請求者對資源進(jìn)行訪問。

Fig.3 TABAC access control strategy implementation process圖3 TABAC訪問控制策略實施過程
在協(xié)作業(yè)務(wù)流程執(zhí)行過程中,組織間缺乏信任,因此策略實施過程往往是交給可信的第三方執(zhí)行,但這種方式存在單點故障引起訪問控制失效、訪問控制不透明和難以追溯等問題。TABAC方案支持在智能合約中驗證資源訪問者擁有的權(quán)限,基本思想是將用戶、任務(wù)屬性和訪問控制策略存儲于智能合約中,當(dāng)用戶訪問資源時,根據(jù)鏈上存儲的訪問控制策略以及獲取的用戶屬性和任務(wù)屬性計算用戶是否擁有資源訪問權(quán)限。通過該方案,本文框架能夠支持動態(tài)、靈活和細(xì)粒度的數(shù)據(jù)訪問控制,且資源訪問請求的決策結(jié)果均以不可篡改的交易形式存儲在區(qū)塊鏈之中,任何用戶都能夠?qū)Y源訪問請求的執(zhí)行結(jié)果進(jìn)行追溯。
本文提出的協(xié)作業(yè)務(wù)流程管理框架鏈上合約主要涉及屬性管理合約、文件管理合約、實例合約和訪問控制合約等,其結(jié)構(gòu)如圖4所示。以下將給出相應(yīng)智能合約的定義與功能。
AMC是一個存儲流程組織庫OL、用戶庫UL和屬性庫AL的智能合約,即AMC={OL,UL,AL}。其中OL表示協(xié)作業(yè)務(wù)流程中的流程組織集合;UL表示參與協(xié)作業(yè)務(wù)流程的用戶集合,即UL={U,U,…,U},其中U表示業(yè)務(wù)流程的參與用戶;AL表示描述用戶相關(guān)特征或信息的屬性集合。

Fig.4 On-chain contract structure圖4 鏈上合約結(jié)構(gòu)
FC是一個用于存儲共享數(shù)據(jù)文件哈希地址的智能合約,由合約創(chuàng)建者FCC和數(shù)據(jù)文件庫FL組成,即FC={FCC,F(xiàn)L}。其中,F(xiàn)CC用于記錄該智能合約創(chuàng)建者的以太坊賬戶;FL表示協(xié)作業(yè)務(wù)流程中產(chǎn)生的共享數(shù)據(jù)文件集合,即FL={F,F(xiàn),…,F(xiàn)},F(xiàn)表示協(xié)作業(yè)務(wù)流程中產(chǎn)生的共享數(shù)據(jù)文件。FC能在區(qū)塊鏈上管理協(xié)作業(yè)務(wù)流程執(zhí)行過程中產(chǎn)生的共享數(shù)據(jù)文件,并將對應(yīng)數(shù)據(jù)文件的哈希值存儲于鏈上,當(dāng)資源訪問者擁有共享數(shù)據(jù)文件的訪問權(quán)限時,其能通過IPFS代理層和數(shù)據(jù)文件哈希值獲取文件。
IC是一個用于存儲流程模型PM以及流程實例庫IL的智能合約,即IC={PM,IL}。其中PM包含模型執(zhí)行的控制流程邏輯,IL包含多個流程實例的執(zhí)行狀態(tài)與執(zhí)行過程。
ARL中存儲著所有的資源訪問請求R,即ARL={R,R,…,R}。一個資源訪問請求R描述了資源訪問者對資源文件發(fā)起的一次訪問請求,該請求由資源訪問者RU、訪問資源文件RF、對資源執(zhí)行的操作RA和資源訪問請求結(jié)果RR組成,即R={RU,RF,RA,RR}。
資源訪問者對于資源文件的每一次訪問請求都會被記錄到訪問請求庫ARL中。在資源訪問請求R中,RU的實際傳入值為資源訪問者的以太坊賬戶地址,通過該地址能夠在AMC中查詢到該資源訪問者的相關(guān)屬性;RF的實際傳入值為資源文件名稱、實例合約地址和實例id的三元組,該三元組能夠唯一標(biāo)識一個業(yè)務(wù)流程實例執(zhí)行過程中產(chǎn)生的資源文件,且通過IC地址和實例標(biāo)識id能夠在IC中獲取對應(yīng)流程實例的任務(wù)屬性;RA的傳入值為Write或Read,表示對相應(yīng)資源文件進(jìn)行寫入或讀取操作;RR表示資源訪問請求的結(jié)果,其值在資源訪問請求上傳后產(chǎn)生,有許可和拒絕兩種結(jié)果。
APL中存儲著所有的資源訪問控制策略P,即APL={P,P,…,P}。資源訪問控制策略P是指當(dāng)滿足一定條件后即可對資源文件進(jìn)行相應(yīng)操作的許可,該策略由資源文件PF、資源操作PO和策略規(guī)則PR組成,即P={PF,PO,PR},其中PF用于描述訪問資源的名稱;PO描述了能夠?qū)υ撡Y源進(jìn)行的操作;PR描述了允許訪問的資源規(guī)則,其能夠被更進(jìn)一步細(xì)分為用戶屬性策略規(guī)則UPR和任務(wù)屬性策略規(guī)則TPR,即PR={UPR,TPR}。
ACC是一個由訪問請求庫ARL和訪問策略庫APL組成的智能合約,即ACC={ARL,APL}。該合約用于存儲相關(guān)的資源訪問請求和控制策略,其內(nèi)部包含匹配資源訪問請求和資源訪問控制策略的合約函數(shù),能夠?qū)PFS代理層上傳的資源訪問請求進(jìn)行評估,進(jìn)而匹配相應(yīng)資源訪問控制策略并得出最后的資源訪問請求結(jié)果RR。
本文建模、分析和執(zhí)行了1個以HE助聽器公司為主導(dǎo)的真實商品訂購業(yè)務(wù)流程,該流程執(zhí)行過程涉及4個組織(門店客戶、生產(chǎn)商、物流商、發(fā)貨承運(yùn)商)、14個元素和11條消息。4個組織之間通過發(fā)送消息推動流程實例執(zhí)行,共同完成商品訂購目標(biāo)。其中門店客戶為HE公司的加盟商,負(fù)責(zé)出售醫(yī)療助聽器;生產(chǎn)商為HE公司總部,負(fù)責(zé)處理訂單請求、聯(lián)系物流商;物流商為物流公司,負(fù)責(zé)管理HE公司商品庫存并處理發(fā)貨請求;發(fā)貨承運(yùn)商為負(fù)責(zé)運(yùn)輸助聽器的快遞公司。在傳統(tǒng)分布式業(yè)務(wù)流程執(zhí)行環(huán)境下,該業(yè)務(wù)流程必須在一個可信任第三方的協(xié)作下執(zhí)行,否則不同組織之間產(chǎn)生沖突時將難以解決。本文框架引入?yún)^(qū)塊鏈技術(shù),不同組織間產(chǎn)生的交互記錄都會被存儲在區(qū)塊鏈上,不需要第三方介入即可實現(xiàn)可信任的流程執(zhí)行。
本文框架中所有鏈下組件基于JavaScript和Java實現(xiàn),鏈上智能合約使用solidity編寫并通過remix進(jìn)行調(diào)試和編譯,完成編譯后將其部署于Ganache搭建的以太坊私鏈中。此外,本文框架在鏈下搭建了IPFS,鏈上流程實例執(zhí)行過程中產(chǎn)生的數(shù)據(jù)文件將會被存儲到IPFS中。
選取10個執(zhí)行過程覆蓋模型所有路徑的流程實例,將流程實例的軌跡在框架中重播,并以此分析框架的成本開銷。本文框架的執(zhí)行總成本主要分為框架部署成本、數(shù)據(jù)導(dǎo)入成本、實例創(chuàng)建與執(zhí)行成本以及文件管理與訪問控制成本4個部分。其中,框架部署成本表示將本文框架中包含的智能合約部署到以太坊區(qū)塊鏈上需要消耗的Gas數(shù)量,為11 673 340;數(shù)據(jù)導(dǎo)入成本表示將流程模型、協(xié)作流程組織、文件訪問控制策略部署到相應(yīng)的智能合約中需要消耗的gas數(shù)量,合計10 091 757。
本文案例中創(chuàng)建并執(zhí)行10個流程實例需要消耗的Gas數(shù)量為28 808 682,詳細(xì)Gas消耗見表1。實例創(chuàng)建與執(zhí)行成本由執(zhí)行創(chuàng)建實例、發(fā)送消息、確認(rèn)消息以及完成任務(wù)4個函數(shù)執(zhí)行成本合計而成,每一個流程實例的平均執(zhí)行成本約為288萬Gas。

Table1 Cost of instance creation and execution(10 instances)表1 實例創(chuàng)建與執(zhí)行成本(10個實例)
本文案例中上傳、下載文件資源以及發(fā)送資源訪問請求需要消耗的Gas數(shù)量為22 677 354,詳細(xì)Gas消耗見表2。文件管理與訪問控制成本由新增文件、更新文件、刪除文件以及新增資源訪問請求4個函數(shù)執(zhí)行成本合計而成,每個流程實例在文件管理和訪問控制上需要消耗約227萬Gas。
采用本文框架的案例執(zhí)行總成本見圖5,共需要付出11 673 340Gas的框架部署成本與10 091 757Gas的數(shù)據(jù)導(dǎo)入成本,即在創(chuàng)建流程實例前需要付出21 765 097Gas的成本。而在此之后,本文框架需要為每一個流程實例付出2 880 868Gas的實例創(chuàng)建與執(zhí)行成本以及2 267 735Gas的文件管理與訪問控制成本,即每個流程實例的執(zhí)行需要消耗5 148 603Gas。

Table 2 Cost of document management and access control(10 instances)表2 文件管理與訪問控制成本(10個實例)

Fig.5 Frameexecution total cost圖5 框架執(zhí)行總成本
針對現(xiàn)有區(qū)塊鏈協(xié)作業(yè)務(wù)流程執(zhí)行過程中難以存儲大規(guī)模數(shù)據(jù)文件和缺乏動態(tài)訪問控制方案的問題,本文提出基于區(qū)塊鏈的協(xié)作業(yè)務(wù)流程管理框架。與現(xiàn)有框架相比,本文框架引入IPFS技術(shù),能大幅度降低鏈上數(shù)據(jù)存儲的成本開銷。此外,本文提出TABAC訪問控制方案,該方案不需要第三方提供訪問控制服務(wù),能夠支持細(xì)粒度、靈活和動態(tài)的數(shù)據(jù)訪問控制,且訪問控制策略和權(quán)限驗證結(jié)果可被存儲在智能合約中,為協(xié)作業(yè)務(wù)流程執(zhí)行過程中的數(shù)據(jù)訪問提供透明化、防篡改的記錄。下一步將進(jìn)一步優(yōu)化本文框架,降低實例執(zhí)行成本,使用更多用戶和任務(wù)屬性進(jìn)行測試并開發(fā)相應(yīng)的可視化界面。