趙艷琦, 于 斌, 李慧琳, 陳若楠, 禹 勇
1. 陜西師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院, 西安710119
2. 密碼科學(xué)技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 北京100878
3. 西安電子科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 西安710071
隨著物聯(lián)網(wǎng)和5G 技術(shù)的蓬勃發(fā)展, 智能家居、智慧城市、智能工廠等新興服務(wù)及業(yè)務(wù)不斷涌現(xiàn)[1].全球物聯(lián)網(wǎng)設(shè)備(智能手機(jī)、傳感器設(shè)備、智能家電) 數(shù)量持續(xù)增長(zhǎng), 據(jù)IDC 預(yù)測(cè), 到2025 年將有386億臺(tái)物聯(lián)網(wǎng)設(shè)備接入互聯(lián)網(wǎng), 至2030 年, 這一數(shù)字將超過500 億臺(tái)[2]. 物聯(lián)網(wǎng)設(shè)備應(yīng)用的同時(shí)也產(chǎn)生了海量的用戶數(shù)據(jù). 各大企業(yè)包括Facebook、阿里巴巴、IBM、騰訊等正在積極研發(fā)相關(guān)產(chǎn)品, 收集和處理用戶數(shù)據(jù), 并利用機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等先進(jìn)技術(shù)進(jìn)行大數(shù)據(jù)分析, 做出市場(chǎng)決策, 改善產(chǎn)品服務(wù)質(zhì)量[3].海量數(shù)據(jù)已然成為無價(jià)的資產(chǎn), 并由此催生出一種新興的數(shù)據(jù)交易模式: 數(shù)據(jù)市場(chǎng), 如DataExchange[4],數(shù)據(jù)持有者可以通過分享數(shù)據(jù)來獲得經(jīng)濟(jì)回報(bào). 已有的數(shù)據(jù)市場(chǎng), 數(shù)據(jù)持有者首先封裝數(shù)據(jù), 并將數(shù)據(jù)集提交給數(shù)據(jù)市場(chǎng), 當(dāng)數(shù)據(jù)消費(fèi)者向數(shù)據(jù)市場(chǎng)提交自身需求時(shí), 數(shù)據(jù)市場(chǎng)將該需求與數(shù)據(jù)集進(jìn)行匹配. 之后,數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者交互完成數(shù)據(jù)交易. 數(shù)據(jù)市場(chǎng)作為中心化可信第三方, 參與整個(gè)數(shù)據(jù)交易流, 將消費(fèi)者需求進(jìn)行匹配, 數(shù)據(jù)市場(chǎng)將收取昂貴的手續(xù)費(fèi), 同時(shí)中心化數(shù)據(jù)市場(chǎng)可能存在服務(wù)器宕機(jī), 單點(diǎn)失敗的問題. 如何構(gòu)建去中心化數(shù)據(jù)交易, 實(shí)現(xiàn)數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者的交易公平, 成為亟待解決的問題.
區(qū)塊鏈?zhǔn)且环N基于Hash 的分布式數(shù)據(jù)結(jié)構(gòu), 結(jié)合Peer-to-Peer 網(wǎng)絡(luò)、密碼算法、共識(shí)機(jī)制構(gòu)成了比特幣貨幣系統(tǒng)[5], 在區(qū)塊鏈網(wǎng)絡(luò)中礦工根據(jù)共識(shí)算法生成新的區(qū)塊, 新的區(qū)塊包含指向前一個(gè)區(qū)塊的哈希指針和交易單, 其具有去中心化、防篡改、可公開驗(yàn)證、可公開審計(jì)等特性, 引起了學(xué)術(shù)界及工業(yè)界的廣泛關(guān)注[6,7]. 區(qū)塊鏈的出現(xiàn)為實(shí)現(xiàn)去中心化的數(shù)據(jù)交易提供了一種可能. 然而, 要實(shí)現(xiàn)數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者公平數(shù)據(jù)交易, 還需解決如下挑戰(zhàn): (1) 數(shù)據(jù)持有者數(shù)據(jù)的可靠性. (2) 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者之間原子交換的公平性.
相關(guān)工作: Delgado-Segura 等[8]提出基于比特幣交易單的公平數(shù)據(jù)交易協(xié)議, 采用操作碼OP_AND 構(gòu)建交易單完成公平付費(fèi), 但在比特幣交易單中這一操作碼是禁止使用的, 使得方案不能實(shí)際部署.Zhou 等[9]結(jié)合區(qū)塊鏈技術(shù)提出基于區(qū)塊鏈的分布式數(shù)據(jù)售賣框架, 其結(jié)合數(shù)據(jù)嵌入和距離度量學(xué)習(xí)構(gòu)建數(shù)據(jù)索引, 實(shí)現(xiàn)數(shù)據(jù)檢索和隱私保護(hù)之間的折中. Chen 等[10]提出基于區(qū)塊鏈的大數(shù)據(jù)交換生態(tài)系統(tǒng), 采用區(qū)塊鏈作為分布式數(shù)據(jù)庫(kù), 記錄事務(wù)日志和其他重要文檔. Goldfeder 等[11]借助托管服務(wù)用于購(gòu)買實(shí)體商品, 結(jié)合比特幣系統(tǒng)及門限密碼學(xué)提出一系列解決方案, 保證購(gòu)買實(shí)體商品的安全性和隱私性.2014 年, Andrychowicz 等[12]提出基于比特幣的安全多方計(jì)算方案, 采用交押金的方式實(shí)現(xiàn)多用戶的公平博彩. 比特幣核心開發(fā)者Gregory Maxwell, 通過比特幣網(wǎng)絡(luò)部署零知識(shí)有條件付費(fèi)(Zero Knowledge Contingent Payment, ZKCP)[13,14]實(shí)現(xiàn)了首個(gè)數(shù)獨(dú)付費(fèi)(Pay-to-Sudoku) 協(xié)議. 同年, Banasik 等[15]提出不采用腳本語言的有效零知識(shí)有條件付費(fèi)(Efficient Zero Knowledge Contingent Payment) 協(xié)議,以期改進(jìn)方案的實(shí)用性. 2017 年, Tramèr 等[16]給出ZKCP 在以太坊[17]上的執(zhí)行方式. Campanelli等[18]提出零知識(shí)有條件服務(wù)付費(fèi)(Zero Knowledge Contingent Service Payment, ZKCSP) 協(xié)議, 應(yīng)用ZKCSP 解決外包存儲(chǔ)付費(fèi)問題. 田等[19,20]基于傳統(tǒng)的可驗(yàn)證加密簽名和盲簽名, 構(gòu)造盲的可驗(yàn)證加密簽名體制, 借助比特幣交易單實(shí)現(xiàn)公平合同簽署. 高等[21]結(jié)合可驗(yàn)證加密簽名和聚合簽名, 提出無證書的聚合可驗(yàn)證加密簽名方案, 利用該方案設(shè)計(jì)出基于區(qū)塊鏈的多方合同簽署協(xié)議. Dziembowski, Eckey和Faust 給出基于UC 框架的公平交換模型[22], 采用Proof-of-Misbehavior (POM) 方法, 避免采用復(fù)雜的零知識(shí)證明. 為解決數(shù)據(jù)市場(chǎng)中數(shù)據(jù)交易問題, Zhao 等[23]結(jié)合以太坊提出基于機(jī)器學(xué)習(xí)的公平交易協(xié)議, 協(xié)議通過市場(chǎng)管理員處理爭(zhēng)議. Fuchsbauer[24]指出文獻(xiàn)[18] 的解決方案不能保證有條件付費(fèi)的公平性, 其采用證據(jù)不可區(qū)分安全強(qiáng)度不夠, 并提出新的有條件付費(fèi)解決方法. Hu 等[25]提出zkPoD 實(shí)用的數(shù)據(jù)交換去中心化系統(tǒng), 借助Pederson 承諾, 給出三種交換模型以期實(shí)現(xiàn)數(shù)據(jù)交換的實(shí)用性, 但系統(tǒng)初始化仍需要可信第三方參與. 表1 給出與各方案的技術(shù)對(duì)比。借助區(qū)塊鏈技術(shù)實(shí)現(xiàn)公平交換的機(jī)制受到一定程度的關(guān)注, 但已有機(jī)制不足以確保公平數(shù)據(jù)交易的公平性和交易數(shù)據(jù)的可靠性.
方案 去中心化 挑戰(zhàn)-響應(yīng) 匿名性 主要技術(shù)Dziembowski et al. [22]√ --PoM Zhao et al. [23] - √ √ 確定性加密Fuchsbauer et al. [24]√--ZK-SNARKs Hu et al. [25] - √ - Pederson 承諾本文 √ √ - 向量承諾
本文提出一種基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議, 滿足數(shù)據(jù)交易的可靠性和公平性. 協(xié)議采用區(qū)塊鏈架構(gòu), 借以消除單點(diǎn)失敗(Single Point of Failure) 問題. 運(yùn)用向量承諾和反向傳播(Back Propagation)神經(jīng)網(wǎng)絡(luò), 使得數(shù)據(jù)消費(fèi)者可對(duì)數(shù)據(jù)進(jìn)行有效抽樣, 驗(yàn)證數(shù)據(jù)的可靠性, 并結(jié)合智能合約實(shí)現(xiàn)原子交換的公平性. 協(xié)議適用于異步網(wǎng)絡(luò), 智能合約無需設(shè)置時(shí)間斷點(diǎn), 由數(shù)據(jù)持有者或數(shù)據(jù)消費(fèi)者自行觸發(fā), 因此,協(xié)議使得惡意的數(shù)據(jù)持有者或數(shù)據(jù)消費(fèi)者達(dá)到公平. 最后, 通過部署智能合約, 驗(yàn)證基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議的實(shí)用性.
本文針對(duì)數(shù)據(jù)交易的公平性和可靠性展開研究. 第2 節(jié)介紹相關(guān)的預(yù)備知識(shí). 第3 節(jié)介紹基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易模型. 第4 節(jié)給出具體的基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議, 安全性及性能分析. 第5 節(jié)給出總結(jié).
智能合約[26]最早由Nike Szabo 提出, 是一種可自動(dòng)執(zhí)行的程序代碼. 在區(qū)塊鏈網(wǎng)絡(luò)中, 可以部署智能合約, 創(chuàng)建更富表現(xiàn)力的應(yīng)用. 比特幣腳本語言支持簡(jiǎn)單的智能合約, 但這種腳本語言是基于堆棧的編程語言, 非圖靈完備的. 以太坊作為區(qū)塊鏈平臺(tái), 支持更復(fù)雜的智能合約, 用于構(gòu)建下一代分布式應(yīng)用[27].
機(jī)器學(xué)習(xí)通過從數(shù)據(jù)中生成的模型來學(xué)習(xí)如何執(zhí)行某些特定任務(wù). 根據(jù)訓(xùn)練數(shù)據(jù)是否包含標(biāo)記可分為兩類學(xué)習(xí)任務(wù), 即監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí). 監(jiān)督學(xué)習(xí)主要為分類和回歸, 無監(jiān)督學(xué)習(xí)主要為聚類. 如果想要預(yù)測(cè)的結(jié)果是一些離散值, 則這種學(xué)習(xí)任務(wù)稱為分類. 如果結(jié)果是連續(xù)值, 則學(xué)習(xí)任務(wù)稱為回歸. 而聚類是將訓(xùn)練集中的樣本數(shù)據(jù)分為幾類的學(xué)習(xí)任務(wù), 并且訓(xùn)練樣本通常不含標(biāo)記. 作為一種功能強(qiáng)大的數(shù)據(jù)建模工具, 人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network, ANN) 能夠從示例中捕獲并表示復(fù)雜的輸入/輸出關(guān)系, 而無需假設(shè)數(shù)據(jù)分布或輸入與輸出之間關(guān)系的性質(zhì). 從理論上講, 作為典型ANN 之一的BP 神經(jīng)網(wǎng)絡(luò)可以近似任何非線性函數(shù). 它消除了傳統(tǒng)回歸方法的局限性, 并準(zhǔn)確地建立了輸入和輸出變量之間的映射. BP 神經(jīng)網(wǎng)絡(luò)能夠以更高的精度逼近任意非線性函數(shù). 本文采用BP 神經(jīng)網(wǎng)絡(luò)[28]以獲得的明文中的單詞為輸入, 對(duì)文本數(shù)據(jù)進(jìn)行分類.
向量承諾最早由Catalano 和Fiore 提出[29], 在可驗(yàn)證數(shù)據(jù)庫(kù)更新及零知識(shí)數(shù)據(jù)庫(kù)更新[29]中廣泛應(yīng)用. 向量承諾可以有效承諾消息序列(m1,··· ,mq), 支持在特定位置打開承諾, 對(duì)于同一位置不能打開兩個(gè)不同值, 即滿足位置綁定性. 向量承諾支持有效更新, 將對(duì)應(yīng)打開消息進(jìn)行更新, 生成新的承諾值. 向量承諾應(yīng)滿足簡(jiǎn)潔性, 即承諾和打開的字符串長(zhǎng)度應(yīng)與消息序列長(zhǎng)度無關(guān). 向量承諾形式化定義[29]如下:
定義1 向量承諾方案由以下六個(gè)算法定義:
(1) 密鑰生成算法VC.Keygen: 輸入安全參數(shù)k 以及承諾向量的大小q, 輸出公開參數(shù)parameters,記為(parameters)←VC.Keygen(1k,q).
(2) 承諾算法VC.Com: 輸入消息序列(m1,··· ,mq) 和公開參數(shù)parameters, 輸出承諾值C 和輔助信息aux, 記為(C,aux)←VC.Com((m1,··· ,mq),parameters).
(3) 打開算法VC.Open: 輸入第i 位的消息mi以及輔助信息aux, 輸出對(duì)應(yīng)消息的證明Λi, 記為(Λi)←VC.Open(i,mi,aux).
(4) 驗(yàn)證算法VC.Ver: 輸入承諾值C, 第i 位的消息mi以及證明Λi, 驗(yàn)證Λi是否為mi的有效證明, 有效記為VC.Ver(C,i,mi,Λi)=1, 無效記為VC.Ver(C,i,mi,Λi)=0.
(5) 更新算法VC.Update: 輸入承諾值C, 第i 位的舊消息mi以及新消息m′i, 輸出新的承諾值C′和更新信息U, 記為(C′,U)←VC.Update(C,i,mi,m′i).
(6) 證明更新算法VC.Proofupdate: 輸入承諾值C, 更新信息U, 第i 位的消息m′i, 證明Λj對(duì)應(yīng)第j 位, 輸出對(duì)應(yīng)的承諾值C′的證明Λ′j, 記為(Λ′j)←VC.Proofupdate(C,U,i,m′i,Λj).
如圖1 所示, 數(shù)據(jù)交易主要包含3 個(gè)實(shí)體, 分別為數(shù)據(jù)持有者, 數(shù)據(jù)消費(fèi)者, 區(qū)塊鏈. 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者進(jìn)行數(shù)據(jù)的售賣與交換并維護(hù)區(qū)塊鏈.
圖1 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易模型Figure 1 Model of based on machine learning data trading
數(shù)據(jù)持有者: 數(shù)據(jù)持有者作為數(shù)據(jù)收集者和生產(chǎn)者, 生成數(shù)據(jù)索引列表, 與數(shù)據(jù)消費(fèi)者進(jìn)行交互, 執(zhí)行數(shù)據(jù)交易, 觸發(fā)智能合約獲取付費(fèi).
數(shù)據(jù)消費(fèi)者: 數(shù)據(jù)消費(fèi)者作為數(shù)據(jù)的購(gòu)買方, 驗(yàn)證數(shù)據(jù)持有者數(shù)據(jù)的可靠性, 與數(shù)據(jù)持有者進(jìn)行交互,部署智能合約, 對(duì)滿足需要的數(shù)據(jù)進(jìn)行付費(fèi).
區(qū)塊鏈: 記錄數(shù)據(jù)交易公開參數(shù), 維護(hù)數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者上傳的交易單, 執(zhí)行智能合約.
定義2 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議
該協(xié)議由以下6 個(gè)算法組成:
(1) 初始化算法Setup: 輸入安全參數(shù)k, 輸出公開參數(shù)pp, 記為(pp)←Setup(1k).
(2) 密鑰生成算法Keygen: 數(shù)據(jù)持有者運(yùn)行VC.Keygen 算法(parameters) ←VC.Keygen(1k,q)生成公開參數(shù)parameters. 輸入pp 和parameters, 輸出pk = (parameters), sk = (kw), 記為(pk,sk)←Keygen(pp,parameters).
(3) 密文生成算法 Enc: 輸入 pk 和消息序列 (m1,··· ,mq), 運(yùn)行 VC.Com 算法(C,aux) ← VC.Com((m1,··· ,mq),parameters), 輸出數(shù)據(jù)密文 C,C0, 記為 (C,C0) ←Enc(pk,(m1,··· ,mq)).
(4) 抽樣算法Sample: 數(shù)據(jù)消費(fèi)者與數(shù)據(jù)持有者進(jìn)行交互,數(shù)據(jù)消費(fèi)者挑戰(zhàn)第i 位的消息mi. 數(shù)據(jù)持有者運(yùn)行VC.Open 算法Λi←VC.Open(i,mi,aux) 輸出對(duì)應(yīng)消息的證明Λi, 記為(Λi,mi) ←Sample(i,mi,aux).
(5) 驗(yàn)證算法Ver: 數(shù)據(jù)消費(fèi)者運(yùn)行VC.Ver 算法驗(yàn)證是否VC.Ver(C,i,mi,Λi)=1, 如果有效輸出1; 否則, 輸出0.
(6) 解密算法Dec: 數(shù)據(jù)消費(fèi)者、數(shù)據(jù)持有者與區(qū)塊鏈進(jìn)行交互, 數(shù)據(jù)消費(fèi)者部署智能合約進(jìn)行有條件的付費(fèi), 數(shù)據(jù)持有者發(fā)布解密密鑰sk, 區(qū)塊鏈執(zhí)行智能合約, 驗(yàn)證合約執(zhí)行算法. 之后, 數(shù)據(jù)消費(fèi)者與區(qū)塊鏈交互, 解密消息(m1,··· ,mq), 記為(m1,··· ,mq)←Dec(sk,(C,C0)).
安全目標(biāo): 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議應(yīng)滿足如下安全目標(biāo):
完備性: 如果數(shù)據(jù)持有者和數(shù)據(jù)消費(fèi)者誠(chéng)實(shí)執(zhí)行協(xié)議, 協(xié)議完成, 數(shù)據(jù)持有者將獲得付費(fèi), 同時(shí)數(shù)據(jù)消費(fèi)者獲得有效的數(shù)據(jù).
公平性: 協(xié)議執(zhí)行使得數(shù)據(jù)持有者獲得付費(fèi), 同時(shí)數(shù)據(jù)消費(fèi)者獲得有效的數(shù)據(jù), 要么兩方都不能獲得.
機(jī)密性: 公平數(shù)據(jù)交易協(xié)議應(yīng)滿足機(jī)密性要求, 對(duì)于未進(jìn)行抽樣的數(shù)據(jù), 無法獲得數(shù)據(jù)的任何信息, 即未付費(fèi)的外部敵手不能獲得除抽樣數(shù)據(jù)外售賣數(shù)據(jù)的任何信息.
本節(jié)給出具體的基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議, 協(xié)議流程如圖2 所示.
數(shù)據(jù)消費(fèi)者與數(shù)據(jù)持有者協(xié)商數(shù)據(jù)定價(jià), 本文假設(shè)數(shù)據(jù)價(jià)格為固定值, 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者分別持有ECDSA 密鑰對(duì), 記為(pkh,skh),(pkc,skc). 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者交互執(zhí)行協(xié)議. 首先, 初始化系統(tǒng)參數(shù)pp, 數(shù)據(jù)持有者生成(pk,sk), 并發(fā)送pk 給數(shù)據(jù)消費(fèi)者. 數(shù)據(jù)消費(fèi)者向數(shù)據(jù)持有者表明需要購(gòu)買的數(shù)據(jù), 發(fā)送對(duì)需求數(shù)據(jù)的描述d 給數(shù)據(jù)持有者, 數(shù)據(jù)持有者根據(jù)描述d, 加密數(shù)據(jù)(m1,··· ,mq), 將密文(C,C0) 發(fā)送給數(shù)據(jù)消費(fèi)者. 數(shù)據(jù)消費(fèi)者對(duì)消息mi進(jìn)行抽樣, 數(shù)據(jù)持有者生成相關(guān)證明. 數(shù)據(jù)消費(fèi)者運(yùn)行BP 神經(jīng)網(wǎng)絡(luò)算法對(duì)數(shù)據(jù)進(jìn)行決策, 數(shù)據(jù)消費(fèi)者發(fā)布公平數(shù)據(jù)交易智能合約到區(qū)塊鏈網(wǎng)絡(luò), 數(shù)據(jù)持有者調(diào)用智能合約, 釋放解密密鑰sk 接收付款, 數(shù)據(jù)消費(fèi)者對(duì)密文進(jìn)行解密, 獲得相應(yīng)數(shù)據(jù). 具體協(xié)議如下:
初始化Setup: 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者進(jìn)行交互, 運(yùn)行Setup 算法初始化系統(tǒng)參數(shù), 選取抗碰撞哈希函數(shù)H :{0,1}?→Zp,H0:{0,1}?→Zp, 輸出公開參數(shù)pp=(H,H0).
密鑰生成Keygen: 數(shù)據(jù)持有者運(yùn)行VC.Keygen 算法(parameters) ←VC.Keygen(1k,q) 生成公開參數(shù). 令G,GT為兩個(gè)雙線性群階為素?cái)?shù)p,存在雙線性映射e:G×G →GT,令g ∈G 為群G 的生成元.數(shù)據(jù)持有者選取隨機(jī)數(shù)x1,··· ,xq∈Zp, 對(duì)于i = 1,··· ,q, 計(jì)算hi= gxi. 同時(shí)對(duì)于i,j = 1,··· ,q(i ?=j), 計(jì)算hi,j= gxixj. 數(shù)據(jù)持有者選取隨機(jī)數(shù)kw∈Zp, 輸出pk = (g,{hi}i=1,···,q,{hi,j}i,j=1,···,q,i?=j),sk=(kw).
算法1 Transfer 算法Input: input parameters(Z,K′,S,s,pkh,pkc)Output: output result 1 if Z = K′ ·S then 2 Transfer s to pkh 3 end 4 else 5 Withdraw s to pkc 6 end
算法2 Refund 算法Input: input parameters (s,pkc)Output: output result 1 Withdraw s to pkc
引理1 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議滿足完備性.
證明: 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者誠(chéng)實(shí)地執(zhí)行4.1節(jié)中描述的數(shù)據(jù)交易協(xié)議, 初始化系統(tǒng)參數(shù), 數(shù)據(jù)消費(fèi)者部署智能合約, 數(shù)據(jù)持有者通過釋放正確的密鑰kw, 智能合約轉(zhuǎn)賬至數(shù)據(jù)持有者公鑰地址, 同時(shí)數(shù)據(jù)消費(fèi)者獲得解密密鑰, 對(duì)密文進(jìn)行解密, 獲得消息(m1,··· ,mq).
引理2 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議滿足公平性.
證明: (1) 數(shù)據(jù)持有者是惡意的, 數(shù)據(jù)消費(fèi)者是誠(chéng)實(shí)的, 分兩種情況進(jìn)行討論. ①不提交解密密鑰kw或提交錯(cuò)誤密鑰kw的情況下獲得付款. 在這種情況下, 根據(jù)公平數(shù)據(jù)交易智能合約執(zhí)行, 不提交解密密鑰kw, 數(shù)據(jù)消費(fèi)者可調(diào)用Refund 算法, 取回押金; 提交錯(cuò)誤密鑰kw, Z = K′·S 無法通過驗(yàn)證, 智能合約退還押金給數(shù)據(jù)消費(fèi)者. ②數(shù)據(jù)持有者不提供可靠數(shù)據(jù)情況下獲得付款. 數(shù)據(jù)提供者不提供可靠的數(shù)據(jù), 數(shù)據(jù)消費(fèi)者隨機(jī)挑戰(zhàn)消息, 使用BP 神經(jīng)網(wǎng)絡(luò)來進(jìn)行決策. 數(shù)據(jù)消費(fèi)者不部署智能合約, 數(shù)據(jù)持有者不能獲得付款.
(3) 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者均為惡意的. 根據(jù)協(xié)議執(zhí)行, 數(shù)據(jù)消費(fèi)者發(fā)布智能合約到區(qū)塊鏈網(wǎng)絡(luò), 數(shù)據(jù)持有者拒不發(fā)送解密密鑰, 數(shù)據(jù)消費(fèi)者不調(diào)用Refund 算法, 取回押金, 雙方進(jìn)入僵持狀態(tài), 在這種情況下, 雙方占用網(wǎng)絡(luò)帶寬, 消耗自身資源, 這對(duì)惡意的雙方是公平的. 我們認(rèn)為理性的數(shù)據(jù)持有者和數(shù)據(jù)消費(fèi)者會(huì)有效執(zhí)行協(xié)議, 避免浪費(fèi)自身資源. 因此, 提出的基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議滿足公平性.
引理3 基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議滿足機(jī)密性.
證明: 數(shù)據(jù)持有者與數(shù)據(jù)消費(fèi)者進(jìn)行鏈下通信, 采用安全信道通信, 數(shù)據(jù)持有者借助向量承諾發(fā)送密文C,K,c,zi,i∈[1,···,q]給數(shù)據(jù)消費(fèi)者, 因此, 不會(huì)泄漏數(shù)據(jù)的任何信息. 針對(duì)鏈上交易, 外部敵手可以驗(yàn)證是否Z = K′·S, 由哈希函數(shù)H0的抗碰撞性, 敵手無法恢復(fù)cmi,i ∈[1,··· ,q], 因此, 不會(huì)泄漏(m1,··· ,mq) 的任何信息.
本節(jié)討論協(xié)議的執(zhí)行效率, 并結(jié)合以太坊部署智能合約, 評(píng)估公平交換協(xié)議的Gas 消耗. 首先對(duì)本文密碼算法的執(zhí)行效率進(jìn)行評(píng)估, 使用intel(R) Core(TM) i5-2450M CPU 2.50 GHz 4.00 GB 內(nèi)存電腦執(zhí)行1000 次, 基于Miracl 庫(kù)[30]對(duì)算法進(jìn)行仿真實(shí)驗(yàn), 包括協(xié)議的Keygen, Enc, Sample, Ver, Dec 算法,同時(shí)針對(duì)Sample 算法, 選取不同的挑戰(zhàn)塊進(jìn)行評(píng)估. 各算法的執(zhí)行時(shí)間如圖3 和圖4 所示. 圖3 中隨著消息序列承諾值q 的增長(zhǎng), Keygen 算法增長(zhǎng)較快, Enc, Sample, Ver 和Dec 算法, 增長(zhǎng)平緩. 如圖4 所示,在q 值不變時(shí), Sample 算法執(zhí)行時(shí)間隨著挑戰(zhàn)塊的數(shù)量增加而增長(zhǎng).
圖3 各算法執(zhí)行時(shí)間Figure 3 Time cost of algorithms
采用MATLAB 6.5 版本運(yùn)行BP 神經(jīng)網(wǎng)絡(luò), 由輸入層, 隱藏層1, 隱藏層2 和輸出層組成. 輸入層中的節(jié)點(diǎn)數(shù)與文本標(biāo)簽的數(shù)量相同, 輸出層中有一個(gè)值為0 或1 的節(jié)點(diǎn). 在隱藏層1 和隱藏層2 中分別設(shè)置5 和25 個(gè)節(jié)點(diǎn). 如果樣本分類正確, 則BP 神經(jīng)網(wǎng)絡(luò)的輸出為1. 否則, BP 網(wǎng)絡(luò)的輸出為0. 傳遞函數(shù)設(shè)置為tansig 和purelin, 而訓(xùn)練函數(shù)設(shè)置為trainlm. 當(dāng)誤差函數(shù)降低到10?8以下時(shí), 則訓(xùn)練停止. 在程序?qū)崿F(xiàn)中, 通過newff 函數(shù)構(gòu)建BP 神經(jīng)網(wǎng)絡(luò). 使用34 組數(shù)據(jù)對(duì)BP 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練, 包括20 組阿爾茨海默病例和14 組其他疾病文檔中抽取標(biāo)簽. 分別以只包含癥狀的5 個(gè)關(guān)鍵字, 以及包含癥狀、用藥、治療方案的30 個(gè)關(guān)鍵字為輸入訓(xùn)練神經(jīng)網(wǎng)絡(luò), 分別得到如圖5 所示模型. 使用7 個(gè)測(cè)試用例對(duì)訓(xùn)練模型進(jìn)行測(cè)試, 發(fā)現(xiàn)模型的準(zhǔn)確度從71.4%(5/7) 提升到100%(7/7).
本文采用Solidity 語言編寫智能合約, 并通過以太坊錢包進(jìn)行實(shí)際部署, 公平交換協(xié)議的Gas 消耗如表2 所示. 由于Transfer 算法需要進(jìn)行執(zhí)行驗(yàn)證, 所以消耗Gas 比Refund 算法多.
圖5 BP 神經(jīng)網(wǎng)絡(luò)模型Figure 5 BP neural network model
Function Gas 消耗Deploy 1517852 Transfer 396099 Refund 21000
針對(duì)已有數(shù)據(jù)交易協(xié)議無法保證數(shù)據(jù)交易的公平性和交易數(shù)據(jù)的可靠性, 本文提出基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議, 利用區(qū)塊鏈技術(shù)去中心化優(yōu)勢(shì), 結(jié)合向量承諾和BP 神經(jīng)網(wǎng)絡(luò), 使得數(shù)據(jù)消費(fèi)者可對(duì)抽樣數(shù)據(jù)進(jìn)行有效驗(yàn)證, 保證數(shù)據(jù)的可靠性, 同時(shí)借助智能合約實(shí)現(xiàn)原子交換的公平性. 實(shí)驗(yàn)驗(yàn)證基于機(jī)器學(xué)習(xí)的公平數(shù)據(jù)交易協(xié)議的實(shí)用性.