劉明瑤,余益民,2
(1.云南財(cái)經(jīng)大學(xué)信息學(xué)院;2.云南財(cái)經(jīng)大學(xué)信息管理中心,云南昆明 650221)
對(duì)物流業(yè)務(wù)流程進(jìn)行研究,發(fā)現(xiàn)造成物流用戶隱私數(shù)據(jù)泄露的因素主要有兩個(gè)方面:①中轉(zhuǎn)過程的隱私泄露,快遞運(yùn)單明文信息容易被不法分子獲??;②服務(wù)器造成的隱私泄露,服務(wù)器隱私泄露包括不安全存儲(chǔ)和訪問權(quán)限管理不到位。國外一些發(fā)達(dá)國家主要通過政府和法律來規(guī)范監(jiān)督物流企業(yè),這些強(qiáng)制手段在一定程度上能保護(hù)物流隱私數(shù)據(jù),但是隱私數(shù)據(jù)泄露風(fēng)險(xiǎn)仍然存在[1]。物流隱私保護(hù)研究有:韋茜等[2-3]通過分析快遞單造成的隱私泄露,提出一種K-匿名模型對(duì)物流信息進(jìn)行匿名處理,將數(shù)據(jù)匿名化以保護(hù)隱私數(shù)據(jù)。雖然通過K-匿名模式降低了敏感信息的關(guān)聯(lián)度,但快遞單仍保留了電話和地址信息,容易造成隱私泄露?;赗SA 算法的快遞信息隱私保護(hù)方式通過對(duì)RSA 算法進(jìn)行改進(jìn),使用變型的RSA 算法對(duì)個(gè)人信息加密以保證快遞運(yùn)輸過程中用戶的隱私安全。將信息加密存儲(chǔ)在Android 手機(jī)中,但未考慮密鑰和解密后的安全性,因此還需繼續(xù)改進(jìn)。張新文[4]研究了一種面向大數(shù)據(jù)的物流個(gè)人信息隱私保護(hù)方法,通過分析物流流轉(zhuǎn)過程特征,提出基于QR 二維碼的物流中轉(zhuǎn)過程隱私保護(hù)方法(LPPS),實(shí)行分段加密物流信息,解決物流中轉(zhuǎn)和數(shù)據(jù)存儲(chǔ)中的隱私泄露,使用二維碼存儲(chǔ)加密后的信息并設(shè)計(jì)權(quán)限分級(jí)機(jī)制實(shí)現(xiàn)物流中轉(zhuǎn)操作。張克落[5]提出一種分層加密的隱私數(shù)據(jù)保護(hù)機(jī)制,將物流用戶隱私數(shù)據(jù)分為3 個(gè)安全等級(jí)進(jìn)行加密,采用改進(jìn)的CP-ABE 算法實(shí)現(xiàn)基于屬性的訪問權(quán)限設(shè)置,根據(jù)可讀取隱私數(shù)據(jù)的范圍對(duì)隱私數(shù)據(jù)分級(jí)訪問。
本文提出基于區(qū)塊鏈和零知識(shí)證明的物流隱私保護(hù)方案,首先對(duì)用戶的身份進(jìn)行認(rèn)證,采用RSA 數(shù)字簽名零知識(shí)證明身份認(rèn)證方案完成用戶身份真實(shí)性、合法性驗(yàn)證,認(rèn)證通過才可加入?yún)^(qū)塊鏈網(wǎng)絡(luò)進(jìn)行安全交易;然后通過訪問權(quán)限管理方法對(duì)訪問者進(jìn)行權(quán)限設(shè)置,實(shí)現(xiàn)數(shù)據(jù)的安全訪問;最后采用分級(jí)加密方案對(duì)物流用戶隱私數(shù)據(jù)進(jìn)行混合加密,生成密文和密鑰,將密文及密鑰上傳至IPFS存儲(chǔ)服務(wù)器,實(shí)現(xiàn)用戶隱私數(shù)據(jù)的安全存儲(chǔ)。
私有鏈?zhǔn)窃S可鏈的一種,參與到區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)必須經(jīng)過驗(yàn)證許可,加入節(jié)點(diǎn)的用戶資格嚴(yán)格限制。由于節(jié)點(diǎn)的有限和可控,因此私有鏈具有較快的交易速度、更好的隱私性和更低的交易成本,能夠防止機(jī)構(gòu)內(nèi)單節(jié)點(diǎn)故意隱瞞或篡改數(shù)據(jù),物流系統(tǒng)使用私有鏈可以保證較高的隱私性和處理速度。
數(shù)字簽名可保證數(shù)據(jù)傳輸?shù)耐暾?、發(fā)送者的身份認(rèn)證、防止交易中的抵賴發(fā)生,是常用的身份認(rèn)證方法。RSA公鑰加密算法是目前應(yīng)用最廣泛的公鑰密碼體制之一,廣泛應(yīng)用于數(shù)字簽名,其安全性依賴于大數(shù)分解的困難性,只有合法的簽名者才能獲得簽名私鑰,其他任何人均不能假冒簽名者進(jìn)行簽名[6]。
零知識(shí)證明指證實(shí)者使驗(yàn)證者確信證實(shí)者知道某秘密值但不向驗(yàn)證者泄露有關(guān)該秘密的任何有用信息[7],采用交互式零知識(shí)證明方法對(duì)訪問者身份進(jìn)行認(rèn)證。交互式零知識(shí)證明指執(zhí)行協(xié)議的雙方連接過程以交互式應(yīng)答為實(shí)現(xiàn)方式,證實(shí)者P 執(zhí)行完一步協(xié)議后,驗(yàn)證者V 作出應(yīng)答,P 再根據(jù)V 的應(yīng)答作出相應(yīng)反應(yīng),重復(fù)該過程直至完成整個(gè)交互[8]。
我國物流信息系統(tǒng)要求用戶實(shí)名認(rèn)證,以便身份信息真實(shí)可查,避免投遞危險(xiǎn)品等行為。為保證實(shí)名認(rèn)證操作下用戶數(shù)據(jù)的隱私安全,加入物流系統(tǒng)前需要對(duì)用戶的身份信息進(jìn)行認(rèn)證審查,確保真實(shí)與安全,為此本文提出基于區(qū)塊鏈和零知識(shí)證明的物流隱私保護(hù)方案(見圖1),方案包括用戶身份管理、訪問權(quán)限管理和隱私數(shù)據(jù)分級(jí)加密3 個(gè)模塊。用戶身份管理模塊是在私有鏈環(huán)境下對(duì)進(jìn)入?yún)^(qū)塊鏈網(wǎng)絡(luò)的用戶進(jìn)行身份認(rèn)證,認(rèn)證通過后可加入?yún)^(qū)塊鏈網(wǎng)絡(luò)成為一個(gè)實(shí)體節(jié)點(diǎn)。訪問權(quán)限管理模塊允許加入?yún)^(qū)塊鏈網(wǎng)絡(luò)的數(shù)據(jù)訪問者對(duì)保存在分布式數(shù)據(jù)庫中的物流數(shù)據(jù)權(quán)限狀態(tài)進(jìn)行查看,并根據(jù)相應(yīng)權(quán)限獲取對(duì)應(yīng)級(jí)別的隱私數(shù)據(jù)存儲(chǔ)地址,根據(jù)地址和角色權(quán)限從IPFS 獲取相應(yīng)的密鑰對(duì)隱私數(shù)據(jù)進(jìn)行解密操作。隱私數(shù)據(jù)分級(jí)加密模塊通過對(duì)物流用戶隱私數(shù)據(jù)劃分為3 個(gè)安全等級(jí)進(jìn)行分級(jí)加密,并上傳至IPFS 進(jìn)行安全存儲(chǔ)。
Fig.1 Logistics privacy protection scheme based on blockchain and zero knowledge proof圖1 基于區(qū)塊鏈和零知識(shí)證明的物流隱私保護(hù)方案
物流隱私數(shù)據(jù)保護(hù)方案中的用戶包括收件方和物流企業(yè)方,物流企業(yè)方包括發(fā)件方、中轉(zhuǎn)方和快遞方等物流工作人員,收件方為隱私數(shù)據(jù)擁有者,而物流企業(yè)方為隱私數(shù)據(jù)訪問者。無論是數(shù)據(jù)擁有者還是數(shù)據(jù)訪問者在加入?yún)^(qū)塊鏈網(wǎng)絡(luò)之前都必須完成身份認(rèn)證,獲得唯一身份證書以確保身份的真實(shí)性和安全性,采用基于RSA 數(shù)字簽名的零知識(shí)證明身份認(rèn)證方案為加入?yún)^(qū)塊鏈網(wǎng)絡(luò)的用戶提供匿名可驗(yàn)證身份。
基于RSA 數(shù)字簽名的零知識(shí)證明身份認(rèn)證方案由用戶(A)、認(rèn)證服務(wù)器(B)和可信授權(quán)中心(CA)3 部分組成。首先用戶在CA 處獲得身份證書,身份證書包括數(shù)字簽名和私鑰,然后通過數(shù)字簽名向B 證明自己是經(jīng)過CA 認(rèn)證過的合法用戶。整個(gè)過程中,用戶對(duì)驗(yàn)證方B 具有匿名性,B 無法獲知任何有關(guān)用戶的身份信息。方案整體過程包括用戶注冊(cè)、身份認(rèn)證和加入節(jié)點(diǎn)3 個(gè)階段。
2.1.1 用戶注冊(cè)階段(A→CA)
在認(rèn)證過程開始前,A 首先必須到授權(quán)中心CA 進(jìn)行注冊(cè),A 將自己的身份信息(包括用戶名、電話、身份證、地址等信息)發(fā)送給CA,CA 根據(jù)RSA 密鑰生成算法產(chǎn)生RSA 公鑰和私鑰,然后對(duì)公鑰進(jìn)行數(shù)字簽名,最后CA 將數(shù)字簽名和私鑰發(fā)送給A,A 保存數(shù)字簽名和私鑰。以后A每次在身份認(rèn)證之前必須將該數(shù)字簽名發(fā)送給B,只有驗(yàn)證簽名合法后才能開始零知識(shí)證明。具體步驟如下:①用戶A 將自身信息(Name、IDnumber、Telephone、Address 等)m 發(fā)送給可信授權(quán)中心CA;②CA 隨機(jī)選取p 和q 兩個(gè)大質(zhì)數(shù),計(jì)算n=p×q;任取整數(shù)e 并計(jì)算d,滿足ed=1modφ(n),其中(n,e)為公鑰,(p,d,q)為私鑰,p,q 可銷毀,d 作為私鑰;③CA 對(duì)信息m 的RSA 數(shù)字簽名為s=md(modn),簽名后的文件即身份證書,包括信息m 和簽名s;④CA 將身份證書、公鑰(n,e)和私鑰d 發(fā)送給用戶A,A將此保存,為接下來的身份認(rèn)證提供數(shù)據(jù)支持。
2.1.2 身份認(rèn)證階段(A→B)
在身份認(rèn)證階段,A 首先將數(shù)字簽名發(fā)送給B,B 檢驗(yàn)數(shù)字簽名是否有效。如果為無效數(shù)字簽名,則零知識(shí)身份認(rèn)證過程中斷。如果為有效的,那么A 與B 開始認(rèn)證過程。經(jīng)過幾次的零知識(shí)證明后,若驗(yàn)證成功,則B 相信A的身份是真實(shí)的,允許A 加入到區(qū)塊鏈節(jié)點(diǎn)中成為一個(gè)實(shí)體節(jié)點(diǎn)。具體步驟如下:①A 將身份證書和公鑰(n,e)發(fā)送給B;②B 接收信息,使用公鑰d 計(jì)算=se(modn),證明m=則簽名是正確的;③如果檢驗(yàn)簽名正確,則進(jìn)行零知識(shí)證明身份認(rèn)證過程。
采用交互式零知識(shí)證明方法進(jìn)行身份認(rèn)證,用戶A 執(zhí)行以下零知識(shí)證明協(xié)議:
其中,α表示用戶的秘密信息,即對(duì)身份信息m 的RSA 簽名,H(?) 是{0,1}*→{0,1}l的公開抗碰撞的哈希函數(shù),n,e 和H(m)為共享信息,Pid代表用戶A 的身份標(biāo)識(shí),可以是固定的IP 或者公鑰證書中標(biāo)記的名字等,Time?stamp 是標(biāo)記零知識(shí)證明的時(shí)間戳,Nonce 是防重放攻擊的一次性隨機(jī)數(shù)。
具體認(rèn)證過程如下:
(1)認(rèn)證服務(wù)器B 任選r1∈RZn*發(fā)送給用戶A。
(2)用戶A 任選r2∈RZn*,計(jì)算:
并利用自己的數(shù)字簽名s 計(jì)算k=modn,則{c,k}∈{0,1}l×Zn*。
(3)A 將零知識(shí)證明證據(jù){s1,c,k,Pid,Timestamp,Nonce}傳遞給B。
(4)B 接收零知識(shí)證明證據(jù)后,驗(yàn)證下列等式是否成立:
若等式成立,則B 相信用戶A 擁有該數(shù)字簽名,接受該證明,說明用戶A 的身份是真實(shí)合法的,可以加入到區(qū)塊鏈網(wǎng)絡(luò)中。
2.1.3 加入節(jié)點(diǎn)階段
用戶為了加入?yún)^(qū)塊鏈網(wǎng)絡(luò),必須在CA 處獲得身份證書并通過認(rèn)證服務(wù)器的身份認(rèn)證,認(rèn)證通過后即可加入?yún)^(qū)塊鏈網(wǎng)絡(luò)成為一個(gè)實(shí)體節(jié)點(diǎn),然后加入由認(rèn)證服務(wù)器B 維護(hù)的合法用戶列表UL,用戶生成自己的區(qū)塊鏈交易密鑰對(duì)(t_pub,t_pri),并將其中的交易公鑰t_pub 作為加入U(xiǎn)L 的對(duì)象,之后用戶在認(rèn)證服務(wù)器處獲得對(duì)稱密鑰交易公鑰t_pub 返回給服務(wù)器,認(rèn)證服務(wù)器解密后將公鑰t_pub 加入U(xiǎn)L,這樣區(qū)塊鏈的共識(shí)機(jī)制在處理該用戶交易時(shí)才能認(rèn)定交易是合法的,由此用戶才能通過該交易完成分布式賬本的讀取和更新操作。
物流工作分工明確,物流人員角色較單一,有明顯的職責(zé)等級(jí)和權(quán)限,所以采用改進(jìn)的RBAC 模型對(duì)物流用戶的訪問權(quán)限進(jìn)行管理,對(duì)原RBAC 模型中權(quán)限分配工作量大且不靈活的問題進(jìn)行改進(jìn),引入混合授權(quán)模式、用戶區(qū)塊和時(shí)間約束,參見參考文獻(xiàn)[9]?;旌鲜跈?quán)將數(shù)據(jù)訪問者進(jìn)行角色和用戶雙授權(quán);用戶區(qū)塊指將工作性質(zhì)相同的用戶分為一個(gè)組即一個(gè)區(qū)塊,為用戶區(qū)塊分配角色權(quán)限;時(shí)間約束規(guī)定用戶對(duì)數(shù)據(jù)的訪問時(shí)間。基于表1 的設(shè)定為用戶區(qū)塊分配角色權(quán)限。
將訪問權(quán)限設(shè)置嵌入智能合約中,并將新的隱私數(shù)據(jù)權(quán)限狀態(tài)記錄在分布式賬本上,共識(shí)機(jī)制判斷交易合法后,訪問者可訪問該數(shù)據(jù)權(quán)限狀態(tài),然后根據(jù)所分配的角色權(quán)限判斷自己是否擁有訪問該隱私數(shù)據(jù)的權(quán)限。
考慮物流中轉(zhuǎn)效率和方便快遞人員投遞包裹,對(duì)物流用戶隱私數(shù)據(jù)進(jìn)行安全等級(jí)劃分,劃分方法如表1 所示。安全等級(jí)分為低、中、高,分別對(duì)應(yīng)1 級(jí)、2 級(jí)和3 級(jí),使用AES 與RSA 混合加密方式分別對(duì)劃分后的數(shù)據(jù)進(jìn)行加密并上傳至IPFS 安全存儲(chǔ),獲得不同存儲(chǔ)地址的Addri保存在分布式數(shù)據(jù)庫中,便于節(jié)點(diǎn)中認(rèn)證通過的用戶獲取,隱私數(shù)據(jù)加密及安全存儲(chǔ)模型如圖2 所示。
Table 1 Privacy data partition method表1 隱私數(shù)據(jù)劃分方法
Fig.2 Privacy data encryption and secure storage model圖2 隱私數(shù)據(jù)加密及安全存儲(chǔ)模型
2.3.1 隱私數(shù)據(jù)分級(jí)加密
根據(jù)安全等級(jí)劃分將隱私數(shù)據(jù)分為收件方個(gè)人信息、收件方購物信息(購買費(fèi)用、商品等信息)、發(fā)件方個(gè)人信息和物流中轉(zhuǎn)路線信息4 個(gè)部分,客戶端為4 個(gè)部分進(jìn)行加密及密鑰密文上傳操作。具體步驟如下:
(1)使用哈希算法SHA-256 對(duì)源數(shù)據(jù)文件Pfi進(jìn)行哈希處理,得到并保存哈希值Hf,無論是收件方還是發(fā)件方都可在后續(xù)用來校驗(yàn)數(shù)據(jù)文件的完整性。
(2)生成隨機(jī)密鑰。客戶端通過密鑰生成函數(shù)為4 個(gè)部分生成隨機(jī)數(shù)作為對(duì)稱加密AES 算法的密鑰K1、K2、K3、K4。
密切關(guān)注國內(nèi)同行業(yè)同工況下進(jìn)口黑水角閥和國產(chǎn)黑水角閥在GE水煤漿煤氣化裝置中的使用情況,并和閥門企業(yè)技術(shù)人員做技術(shù)交流,了解掌握不同閥門企業(yè)、不同結(jié)構(gòu)的閥門,通過對(duì)比研究,逐步實(shí)現(xiàn)閥門的國產(chǎn)化。
(3)對(duì)源數(shù)據(jù)加密。使用對(duì)稱加密算法AES 和密鑰Ki對(duì)提交的原始數(shù)據(jù)文件Pfi進(jìn)行加密,得到密文K_Pfi。
(4)對(duì)密鑰Ki加密。非對(duì)稱加密RSA 算法的密鑰生成函數(shù)生成公鑰Rki和私鑰Pki,使用公鑰Rki對(duì)密鑰Ki進(jìn)行加密,加密后的密鑰記為Mki。
(5)密文及密鑰安全存儲(chǔ)。將步驟(3)得到的密文K_Pfi和步驟(4)得到的密鑰Mki一起上傳至IPFS,得到并保存存儲(chǔ)地址Addri,將地址保存在分布式數(shù)據(jù)庫中。
2.3.2 IPFS 安全存儲(chǔ)機(jī)制
物流用戶隱私數(shù)據(jù)由分布式的IPFS 網(wǎng)絡(luò)和以太網(wǎng)P2P 網(wǎng)絡(luò)共同實(shí)現(xiàn)存儲(chǔ)操作。IPFS 的去中心化分布式存儲(chǔ)保證黑客不易攻擊、文件不易丟失,其作為存儲(chǔ)服務(wù)器安全性較高、存儲(chǔ)成本較低。步驟5 中將密文及密鑰保存到IPFS 分布式節(jié)點(diǎn)中時(shí),IPFS 會(huì)根據(jù)密文及密鑰信息利用哈希函數(shù)生成一個(gè)與信息唯一對(duì)應(yīng)的哈希值,即返回一個(gè)Base58 編碼的文件存儲(chǔ)地址,地址保存在分布式數(shù)據(jù)庫中。IPFS 系統(tǒng)采用multihash 得到文件地址,文件地址由哈希函數(shù)編碼、哈希值的長度及哈希值3 部分組成。IPFS與區(qū)塊鏈相結(jié)合的數(shù)據(jù)存儲(chǔ)方案可驗(yàn)證IPFS 存儲(chǔ)數(shù)據(jù)的真實(shí)性[10]。
2.3.3 隱私數(shù)據(jù)解密
經(jīng)過身份認(rèn)證加入節(jié)點(diǎn)的合法數(shù)據(jù)訪問者即物流企業(yè)方,根據(jù)訪問權(quán)限管理模塊所設(shè)置的權(quán)限級(jí)別去獲取對(duì)應(yīng)的隱私數(shù)據(jù)。首先需要請(qǐng)求一個(gè)區(qū)塊ID 從分布式數(shù)據(jù)庫獲取相應(yīng)的存儲(chǔ)地址,然后根據(jù)地址從IPFS 獲取對(duì)應(yīng)隱私數(shù)據(jù),解密得到明文信息。對(duì)于收發(fā)雙方來說可以獲取全部的隱私數(shù)據(jù),快遞方可以獲取收件方、發(fā)件方和物流中轉(zhuǎn)路線信息,而中轉(zhuǎn)方只能獲取物流中轉(zhuǎn)路線信息。
身份認(rèn)證過程中,用戶持有其秘密信息的私鑰d 和數(shù)字簽名s,可以避免除其本人以外的其他任何人通過特殊途徑獲取到明文信息從而冒充其進(jìn)行身份認(rèn)證。同時(shí),交互式零知識(shí)證明協(xié)議中添加了用戶的身份標(biāo)識(shí)Pid和驗(yàn)證簽名的時(shí)間戳Timestamp 以及防止重放攻擊的一次性隨機(jī)數(shù)Nonce,能夠有效防止第三方非法獲取零知識(shí)證明證據(jù)以冒充用戶對(duì)簽名進(jìn)行確認(rèn),因此無法偽造用戶簽名。
3.1.2 匿名性和不可關(guān)聯(lián)性
認(rèn)證服務(wù)器為驗(yàn)證加入?yún)^(qū)塊鏈網(wǎng)絡(luò)的用戶身份合法性,使用零知識(shí)證明方法確信用戶身份是真實(shí)合法,但不能得到數(shù)字簽名s 的任何有關(guān)信息,保證了用戶身份的匿名性。每當(dāng)服務(wù)器接收到零知識(shí)證明后就開始使用一系列共享信息進(jìn)行驗(yàn)證,而這些共享信息不含有任何用戶的私密信息,因此服務(wù)器不能獲得用戶的身份信息。即便連續(xù)訪問服務(wù)器也不能計(jì)算出用戶的身份信息,因?yàn)橛脩裘看芜x擇的一次性隨機(jī)數(shù)Nonce 不同,因此用戶和認(rèn)證服務(wù)器之間不可關(guān)聯(lián)。
數(shù)據(jù)加密是保證隱私數(shù)據(jù)安全性的基本要求,AES 算法是對(duì)稱加密算法中的高級(jí)加密標(biāo)準(zhǔn),能有效抵抗差分攻擊、線性攻擊等多種攻擊方法[9],采用AES 對(duì)隱私數(shù)據(jù)進(jìn)行加密具有較高的安全性。結(jié)合非對(duì)稱加密RSA 算法對(duì)AES 算法產(chǎn)生的密鑰進(jìn)行加密,混合加密機(jī)制保證了物流用戶隱私源數(shù)據(jù)安全性,同時(shí)也保證了密鑰傳輸和管理的安全性。
在Ubuntu 操作系統(tǒng)下采用Truffle 開發(fā)框架開發(fā)和編譯設(shè)計(jì)好的智能合約,并將其部署在Ganache 搭建的以太坊私有鏈環(huán)境中,隨后部署IPFS 對(duì)本文設(shè)計(jì)的隱私保護(hù)方案進(jìn)行測(cè)試。
通過分析物流隱私泄露問題,提出使用區(qū)塊鏈技術(shù)解決物流中轉(zhuǎn)和服務(wù)器存儲(chǔ)及訪問造成的隱私泄露。本文的隱私保護(hù)方案注重用戶的身份認(rèn)證和隱私數(shù)據(jù)加密及安全存儲(chǔ),RSA 零知識(shí)證明身份認(rèn)證方法可保證加入?yún)^(qū)塊鏈網(wǎng)絡(luò)完成物流交易用戶的身份真實(shí)性和安全性,只有通過身份認(rèn)證的用戶才能獲取訪問權(quán)限對(duì)隱私數(shù)據(jù)進(jìn)行安全訪問,同時(shí)將隱私數(shù)據(jù)劃分為3 個(gè)安全等級(jí)進(jìn)行分級(jí)混合加密,在保證安全性的同時(shí)提高加密效率。后續(xù)將在訪問者權(quán)限管理方面進(jìn)一步研究,完善訪問權(quán)限管理方案,加強(qiáng)隱私保護(hù)安全性。