陳 鵬,韓 斌,洪華軍
1(江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,鎮(zhèn)江 212000)
2(中國(guó)船舶科學(xué)研究中心 軟件工程技術(shù)中心,無(wú)錫 214082)
如今Web 已經(jīng)深刻融入我們的生活中,為日常生活帶來(lái)了諸多便利,我們隨時(shí)可以通過(guò)手機(jī)或者電腦來(lái)訪(fǎng)問(wèn)各種網(wǎng)站,但同時(shí)這也給網(wǎng)絡(luò)攻擊者提供了大量的攻擊機(jī)會(huì).網(wǎng)絡(luò)攻擊者為了達(dá)到其目的,會(huì)將一些惡意的代碼嵌入到網(wǎng)頁(yè)中,造成了正常的互聯(lián)網(wǎng)用戶(hù)的個(gè)人信息的泄露和個(gè)人財(cái)產(chǎn)的損失等問(wèn)題.
針對(duì)Web 安全問(wèn)題,研究者們提出了不同的解決方法.惡意代碼檢測(cè)目前主要分為兩大類(lèi),一種是基于代碼文本及結(jié)構(gòu)的靜態(tài)檢測(cè)方法,另一種是基于運(yùn)行結(jié)果的分析的動(dòng)態(tài)檢測(cè)方法[1].毛蔚等[2]在分析進(jìn)程訪(fǎng)問(wèn)行為異常度和相似度后,引入了惡意代碼檢測(cè)估計(jì)風(fēng)險(xiǎn),并提出一種最小化估計(jì)風(fēng)險(xiǎn)實(shí)現(xiàn)主動(dòng)學(xué)習(xí)的惡意代碼檢測(cè)方法;吳迪[3]針對(duì)Android 平臺(tái)的惡意代碼檢測(cè)只關(guān)注應(yīng)用的單方面的特征,提出了基于多類(lèi)特征的Android 惡意代碼檢測(cè)技術(shù);羅世奇等[4]提出使用惡意代碼紋理指特征紋融合33 類(lèi)惡意代碼活動(dòng)向量空間特征,利用棧式自編碼(SAE)模型來(lái)完成惡意代碼的分類(lèi);鄧兆琨等[5]提出了一種動(dòng)靜結(jié)合的網(wǎng)絡(luò)數(shù)據(jù)檢測(cè)方法,在傳統(tǒng)靜態(tài)分析的基礎(chǔ)上優(yōu)化了檢測(cè)算法,同時(shí)引入了動(dòng)態(tài)模擬運(yùn)行的檢測(cè)方式;黃琨茗等[6]提出一種最長(zhǎng)頻繁序列挖掘算法,該方法提取樣本文件的動(dòng)態(tài)API 序列,并挖掘最長(zhǎng)頻繁序列集合構(gòu)造詞袋模型,將API 序列轉(zhuǎn)化為向量,使用隨機(jī)森林算法來(lái)識(shí)別惡意代碼.
深度學(xué)習(xí)技術(shù)在惡意代碼識(shí)別領(lǐng)域已經(jīng)取得了較好的效果,但是仍然存在以下方面的問(wèn)題:(1)單個(gè)機(jī)構(gòu)的惡意代碼樣本是有限的,模型泛化能力需要高質(zhì)量多樣性的數(shù)據(jù)集;(2)在大數(shù)據(jù)時(shí)代,有效處理海量的數(shù)據(jù)是惡意代碼檢測(cè)效率提升的必要條件;(3)如今數(shù)據(jù)已成為一項(xiàng)寶貴的資源,數(shù)據(jù)的隱私和安全性越來(lái)越受到人們的關(guān)注.惡意代碼樣本這類(lèi)特殊性質(zhì)的數(shù)據(jù)集,如果被網(wǎng)絡(luò)攻擊者獲取,對(duì)于網(wǎng)絡(luò)安全的威脅是巨大的.
區(qū)塊鏈自2008年比特幣白皮書(shū)[7]提出以來(lái),因?yàn)槠淙ブ行幕该骺尚?、防篡改可追溯、隱私安全保障等特點(diǎn)越來(lái)越受到人們的關(guān)注.如楊雪梅[8]探索了將區(qū)塊鏈技術(shù)中的去中心化的思想與深度學(xué)習(xí)相結(jié)合并嘗試運(yùn)用于語(yǔ)音識(shí)別的可行性,提出了一種適用于處理大規(guī)模的聲學(xué)數(shù)據(jù)的融合分布式的深度學(xué)習(xí)算法模型.Gu 等[9]提出了一種Java 層的移動(dòng)終端惡意軟件檢測(cè)方法,并結(jié)合了區(qū)塊鏈技術(shù),達(dá)到了多機(jī)構(gòu)的共享的目的.本文基于區(qū)塊鏈技術(shù),結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)進(jìn)行了深度融合,提出了一種基于區(qū)塊鏈+深度學(xué)習(xí)的JavaScript 惡意代碼檢測(cè)系統(tǒng)設(shè)計(jì)方案,利用區(qū)塊鏈去中心化特點(diǎn)進(jìn)行模型的分布式訓(xùn)練和同步更新.
區(qū)塊鏈被定義為一種按時(shí)間順序來(lái)組織數(shù)據(jù)區(qū)塊,不同區(qū)塊之間按序形成鏈條狀連接的數(shù)據(jù)結(jié)構(gòu),借助這種數(shù)據(jù)結(jié)構(gòu)來(lái)構(gòu)建數(shù)字賬本[10],是一種可信的,去中心化防篡改的數(shù)據(jù)存儲(chǔ)技術(shù),區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)如圖1所示.
圖1 區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)示意圖
區(qū)塊鏈中的基本數(shù)據(jù)單元是塊.在每個(gè)塊中存儲(chǔ)了所有交易相關(guān)的數(shù)據(jù)信息,主要包括了區(qū)塊頭和區(qū)塊體兩部分信息.區(qū)塊頭中主要由父區(qū)塊的哈希值(previous hash)、當(dāng)前的時(shí)間戳(time stamp)以及默克爾樹(shù)根(Merkle tree root)等構(gòu)成.在區(qū)塊體中一般包括若干個(gè)交易列表.每個(gè)塊與上一個(gè)塊都是通過(guò)哈希值來(lái)進(jìn)行連接的.對(duì)于區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn),在收到其余節(jié)點(diǎn)發(fā)送的數(shù)據(jù)以后,并不是立即保存,而是需要通過(guò)“共識(shí)機(jī)制”對(duì)當(dāng)前的數(shù)據(jù)進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò)則保存到區(qū)塊鏈中[11].為了加速區(qū)塊的驗(yàn)證,區(qū)塊體中的所有的交易信息都按照默克爾樹(shù)的形式保存下來(lái),并用默克爾樹(shù)的根連接區(qū)塊頭和區(qū)塊體[12].區(qū)塊鏈中的每個(gè)節(jié)點(diǎn)都有自己一對(duì)公私鑰,利用非對(duì)稱(chēng)加密技術(shù)來(lái)保證信息的加密傳輸,從而保護(hù)了交易者的隱私.
卷積神經(jīng)網(wǎng)絡(luò)是一種專(zhuān)門(mén)用來(lái)處理具有類(lèi)似網(wǎng)格結(jié)構(gòu)的數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的代表算法之一[13,14].經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)包括卷積層、池化層和全連接層.卷積神經(jīng)網(wǎng)絡(luò)的卷積核參數(shù)共享機(jī)制使得能夠以較低的運(yùn)算來(lái)提取特征,給定一張?zhí)卣骶仃噲D,通過(guò)不同的組合,經(jīng)過(guò)全連接達(dá)到分類(lèi)的目的.
(1)卷積層
卷積層的作用在于提取輸入數(shù)據(jù)的特征.通過(guò)卷積核與對(duì)應(yīng)位置的數(shù)據(jù)相乘來(lái)獲取圖的特征,接著使用非線(xiàn)性激活函數(shù)完成特征的映射.定義輸入圖片Pi,j(0≤i≤W,0≤j<H),大小為W×H,則卷積運(yùn)算的公式為:
式中,ωm,n(0≤m,n≤K)表示大小為K×K的卷積過(guò)濾器的卷積運(yùn)算的權(quán)值.
更一般地,在卷積運(yùn)算的過(guò)程中,通常會(huì)有多個(gè)通道,這些通道上的過(guò)濾器同時(shí)進(jìn)行特征提取.定義輸入的圖片為Pi,j,c(0≤i≤W,0≤j≤H,0≤c≤C),表示大小為W×H,通道數(shù)為C的圖片,卷積運(yùn)算公式為:
式中,bi,j,l表示卷積運(yùn)算的偏置,ωm,n,c,l表示卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值.
(2)池化層
在卷積運(yùn)算之后通常需要添加一層池化層,來(lái)對(duì)卷積運(yùn)算得到的特征減少映射的表示,即降維操作.池化操作具體指的是對(duì)局部特征范圍內(nèi),提取最大值或者平均值.通常使用最大值池化和平均池化.最大池化和平均池化的計(jì)算公式為:
(3)全連接層
全連接層通常放置在最后幾層用作分類(lèi)器,根據(jù)卷積操作提取得到的特征進(jìn)行分類(lèi).在全連接層之后,對(duì)應(yīng)分類(lèi)上的概率分布通過(guò)softmax或者logsoftmax來(lái)計(jì)算.定義原始的神經(jīng)網(wǎng)絡(luò)輸出為y1,y2,···,yn,則計(jì)算公式為:
在深度學(xué)習(xí)訓(xùn)練過(guò)程中,為了提高模型的訓(xùn)練速度,可以通過(guò)一些參數(shù)設(shè)置來(lái)加速GPU的計(jì)算,由于單個(gè)的GPU的加速的效率沒(méi)有辦法滿(mǎn)足某些重量型深度學(xué)習(xí)模型算力要求,由此出現(xiàn)了深度學(xué)習(xí)模型的并行方式.分布式深度學(xué)習(xí)系統(tǒng)由多個(gè)共享模型和一個(gè)中央控制代理組成,如圖2所示.其中貢獻(xiàn)者可以貢獻(xiàn)自己的模型、數(shù)據(jù)和算力,訓(xùn)練完成后發(fā)送給中央服務(wù)器,中央處理器負(fù)責(zé)融合和共享深度學(xué)習(xí)模型.整個(gè)模型的訓(xùn)練都由一個(gè)中央服務(wù)器集中代理完成,所以,融合模型的過(guò)程中可能會(huì)遭受單點(diǎn)失效的影響[15,16].
圖2 分布式深度學(xué)習(xí)示意圖
與分布式深度學(xué)習(xí)不同,系統(tǒng)中劃分為了3 個(gè)角色應(yīng)用程序發(fā)起者、若干個(gè)算力貢獻(xiàn)者和驗(yàn)證貢獻(xiàn)者.其系統(tǒng)架構(gòu)如圖3所示.
圖3 協(xié)作分布式深度學(xué)習(xí)示意圖
在這個(gè)設(shè)計(jì)框架中,每個(gè)單元都能夠獨(dú)立進(jìn)行決策,程序發(fā)起者負(fù)責(zé)定義訓(xùn)練模型的任務(wù).算力貢獻(xiàn)者負(fù)責(zé)調(diào)用自己的算力資源進(jìn)行構(gòu)建訓(xùn)練任務(wù)并訓(xùn)練深度學(xué)習(xí)模型,算力貢獻(xiàn)者擁有充分的自主權(quán),可以根據(jù)程序發(fā)起者的不同任務(wù)選擇本機(jī)的模型或者數(shù)據(jù),在訓(xùn)練完成后將其發(fā)送給驗(yàn)證者.驗(yàn)證者在收到算力貢獻(xiàn)者提交的參數(shù)后,負(fù)責(zé)驗(yàn)證并評(píng)估模型的性能指標(biāo),把結(jié)果發(fā)送給程序發(fā)起者.發(fā)起者可以選擇保留或者丟棄部分?jǐn)?shù)據(jù)[17,18].
Ni 等[19]提出了一個(gè)惡意代碼檢測(cè)算法MCSC,首先將代碼文件轉(zhuǎn)化為基于simhash的灰度圖,然后使用卷積神經(jīng)網(wǎng)絡(luò)完成惡意代碼家族的分類(lèi).通過(guò)灰度圖結(jié)合深度學(xué)習(xí)的方法均需要將圖像轉(zhuǎn)化為固定大小,因此在圖像轉(zhuǎn)化的過(guò)程中會(huì)造成一部分的信息丟失.本文使用基于馬爾可夫圖算法[20]避免了上述的問(wèn)題.將JavaScript 代碼轉(zhuǎn)化為8 位的無(wú)符號(hào)整數(shù)向量,整個(gè)代碼就可以看做是一個(gè)字節(jié)流,字節(jié)流表達(dá)了一個(gè)隨機(jī)的過(guò)程:
式中,N代表JsavaScript 代碼的字節(jié)長(zhǎng)度.對(duì)于每一個(gè)變量Bytei,有256 種不同的狀態(tài)值,可以表示為:
由于惡意腳本都衍生自已知的惡意代碼,所以新的惡意腳本只有小部分的改動(dòng).例如文獻(xiàn)[21]將某惡意代碼家族不同樣本可視化為灰度圖,如圖4所示,可以發(fā)現(xiàn)相同惡意代碼家族在字節(jié)分布上也會(huì)存在相似的特征.
圖4 Fakeraean 木馬家族圖像實(shí)例[21]
基于上述惡意代碼家族字節(jié)可視化圖相似性的特點(diǎn),考慮相鄰的兩項(xiàng)Bytei-1和Bytei,狀態(tài)空間中狀態(tài)Bytei-1到 狀態(tài)Bytei轉(zhuǎn)換過(guò)程是隨機(jī)的,具備“無(wú)記憶的”性質(zhì),且每個(gè)狀態(tài)相互轉(zhuǎn)換的概率是相同的.所以在代碼字節(jié)提取特征上,為了簡(jiǎn)化問(wèn)題,這里假設(shè)Bytei只與Bytei-1有 關(guān)聯(lián),則隨機(jī)的變量Bytei可視為一個(gè)馬爾可夫鏈:
馬爾可夫轉(zhuǎn)移概率矩陣的構(gòu)建是基于每一個(gè)狀態(tài)遷移的概率.如果用Px,y記作是x的下一個(gè)字節(jié)為y的狀態(tài)轉(zhuǎn)移概率,那么對(duì)于任意的字節(jié)序列計(jì)算公式為:
式中,f(x,y)表示x后面是y的頻率,且x,y∈{0,1,···,255}.以此類(lèi)推考慮整個(gè)文件的字節(jié)的狀態(tài)轉(zhuǎn)移概率M,計(jì)算公式為:
基于式(11)生成馬爾可夫圖像,圖像中的每一個(gè)點(diǎn)對(duì)應(yīng)于馬爾可夫轉(zhuǎn)移概率矩陣中的不同位置上的轉(zhuǎn)移概率Px,y.將JavaScript 代碼轉(zhuǎn)化為馬爾可夫圖的示意圖如圖5所示.
圖5 JavaScript 代碼轉(zhuǎn)化為馬爾可夫圖
基于協(xié)作式分布深度學(xué)習(xí)[17]的角色劃分,并結(jié)合機(jī)器學(xué)習(xí)模型訓(xùn)練的3 要素:數(shù)據(jù)、算法、算力.本文將系統(tǒng)中用戶(hù)角色劃分為3 種:任務(wù)發(fā)起人、若干個(gè)算力貢獻(xiàn)者和若干個(gè)模型驗(yàn)證者.JavaScript 惡意代碼檢測(cè)系統(tǒng)的用戶(hù)對(duì)象關(guān)系示意圖如圖6所示.系統(tǒng)角色劃分其數(shù)量和對(duì)應(yīng)關(guān)系如表1所示.
某項(xiàng)任務(wù)的發(fā)起人負(fù)責(zé)定義任務(wù)的內(nèi)容,比如輸入數(shù)據(jù)的屬性、模型的預(yù)期輸出、測(cè)試數(shù)據(jù)集、模型的準(zhǔn)確度要求;算力貢獻(xiàn)者通過(guò)下載任務(wù)數(shù)據(jù)或者自己本地?cái)?shù)據(jù),針對(duì)給定的任務(wù)進(jìn)行模型的訓(xùn)練任務(wù);驗(yàn)證貢獻(xiàn)者將算力貢獻(xiàn)者訓(xùn)練好的模型進(jìn)行融合,然后再加密的測(cè)試數(shù)據(jù)集合上驗(yàn)證.下文詳細(xì)描述了流程,其中所使用的符號(hào)定義如表2所示.
圖6 JavaScript 惡意代碼檢測(cè)系統(tǒng)用戶(hù)對(duì)象關(guān)系
表1 系統(tǒng)角色劃分對(duì)應(yīng)關(guān)系表
表2 符號(hào)對(duì)應(yīng)意義
對(duì)于集合N,Ori,Cp,Ver滿(mǎn)足如下條件:
模型訓(xùn)練算法如下:
(1)發(fā)起交易,發(fā)起人Orii發(fā)布一筆計(jì)算任務(wù)交易,內(nèi)容包括深度學(xué)習(xí)模型以及融合模型、深度學(xué)習(xí)任務(wù)、模型參數(shù)、融合數(shù)據(jù)和決策接口記作Data.由于模型訓(xùn)練的數(shù)據(jù)集比較龐大,會(huì)存放在IPFS (Inter Planetary File System)中[22],將對(duì)應(yīng)的哈希值地址存放在交易中,其余節(jié)點(diǎn)通過(guò)訪(fǎng)問(wèn)IPFS 來(lái)獲取節(jié)點(diǎn)數(shù)據(jù)信息,上述過(guò)程可以表達(dá)如下:
其中:
(2)參數(shù)初始化,所有節(jié)點(diǎn)完成參數(shù)初始化的同步,每個(gè)算力貢獻(xiàn)者Cpi和驗(yàn)證者Veri需要對(duì)消息進(jìn)行校驗(yàn),確定消息的發(fā)送身份以及數(shù)據(jù)的完整性,校驗(yàn)函數(shù)記作fcheck(Pac,PKOrii),運(yùn)算結(jié)果中1 代表驗(yàn)證通過(guò),0 代表丟棄該消息,過(guò)程如下所示:
(3)訓(xùn)練參數(shù),訓(xùn)練中算力貢獻(xiàn)者表示為:CpOrii={CpOrii,1,CpOrii,2,···,CpOrii,d},d<|N|,在每一輪的訓(xùn)練k中,都會(huì)分別完成自己的前向和后向運(yùn)算,同時(shí)計(jì)算得到每一個(gè)參數(shù)的更新量δ (CpOrii,k);
(4)廣播參數(shù)量,向周?chē)墓?jié)點(diǎn)廣播自己得到的參數(shù)量;
(5)同步更新參數(shù)量,此時(shí)節(jié)點(diǎn)將所有已經(jīng)接收的進(jìn)程進(jìn)行同步(All-Reduce),對(duì)所有的參數(shù)更新量求平均,得到基于所有進(jìn)程訓(xùn)練數(shù)據(jù)的平均參數(shù)更新量,該過(guò)程如圖7所示.
圖7 同步更新參數(shù)示意圖
參數(shù)更新平均值計(jì)算如式(16)所示,求得的參數(shù)作為下一輪訓(xùn)練的初始參數(shù):
(6)進(jìn)行下一輪的訓(xùn)練計(jì)算;
(7)重復(fù)步驟(3)~(6)結(jié)束條件為訓(xùn)練集全部訓(xùn)練完畢.節(jié)點(diǎn)將參數(shù)聚合,將模型數(shù)據(jù)寫(xiě)入?yún)^(qū)塊廣播給周?chē)?jié)點(diǎn);
(8)共識(shí)過(guò)程.驗(yàn)證者將已經(jīng)訓(xùn)練好的模型進(jìn)行篩選,將較優(yōu)的模型匯總成候選集(candidate set),并將模型的候選集廣播至其他驗(yàn)證節(jié)點(diǎn).
① 驗(yàn)證貢獻(xiàn)者將當(dāng)前最優(yōu)模型作為提案轉(zhuǎn)發(fā)至其他驗(yàn)證節(jié)點(diǎn);
② 驗(yàn)證者將收到的方案與本地候選集和提案模型進(jìn)行對(duì)比,擇優(yōu)放入候選集;
③ 定義驗(yàn)證貢獻(xiàn)節(jié)點(diǎn)中模型的投票率 χ,模型投票率的閾值η,最大閾值T_MAX,初始情形下投票閾值η0為50%.判斷模型是否有效方法為,如果χ ≥η,認(rèn)為該模型為有效模型計(jì)入候選集,否則該模型被淘汰.在每一輪的共識(shí)過(guò)程中閾值 η不斷累加常量Δ γ,表示為ηi=ηi-1+Δγ,Δγ ∈(0,1),i∈N*,且對(duì)任意的ηi,均滿(mǎn)足ηi小于T_MAX,重復(fù)過(guò)程①~③,直到ηi大于等于T_MAX.
驗(yàn)證貢獻(xiàn)者將從大于T_MAX的UNL 節(jié)點(diǎn)確認(rèn)的模型中選擇最優(yōu)模型寫(xiě)入本地的區(qū)塊中.同時(shí)驗(yàn)證貢獻(xiàn)節(jié)點(diǎn)將本地區(qū)塊廣播給全網(wǎng),將收到區(qū)塊和自己本地區(qū)塊進(jìn)行比對(duì),當(dāng)正確率超過(guò)T_MAX時(shí),認(rèn)為該區(qū)塊鏈為有效區(qū)塊.
本文實(shí)驗(yàn)使用的數(shù)據(jù)集為Github 公開(kāi)的惡意Java-Script 惡意代碼數(shù)據(jù)集[23],對(duì)于良性的樣本,從Alexa’s Top 站點(diǎn)進(jìn)行了爬取腳本的操作.最終獲得了3526 條良性JavaScript 腳本代碼和3566 條惡意JavaScript 腳本代碼.實(shí)驗(yàn)將數(shù)據(jù)集劃分為兩部分,70%留作訓(xùn)練數(shù)據(jù)集,30%作為測(cè)試數(shù)據(jù)集.
使用機(jī)器學(xué)習(xí)工具包Sklearn 所提供的算法庫(kù)實(shí)現(xiàn)了文獻(xiàn)[24]提出的7 種不同的機(jī)器學(xué)習(xí)算法,按照文中描述方法進(jìn)行了代碼特征的提取分類(lèi).采用十折交叉驗(yàn)證的方法,將數(shù)據(jù)集分為10 等份,其中的1 份作為測(cè)試集,其余9 份用作訓(xùn)練集,重復(fù)10 次,將平均值作為最終的結(jié)果.與本文方法進(jìn)行對(duì)比(馬爾可夫特征提取+CNN 分類(lèi)器),實(shí)驗(yàn)果如表3所示.
表3 本文特征提取方法和傳統(tǒng)方法對(duì)比
對(duì)比實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),馬爾可夫圖的特征提取準(zhǔn)確率達(dá)到了98.98%,而準(zhǔn)確率最低的為Na?ve Bayes 方法僅為78.4%,傳統(tǒng)提取方法表現(xiàn)最優(yōu)的為隨機(jī)森林,達(dá)到了98.27%,但是仍然低于本文方法達(dá)到的準(zhǔn)確率,說(shuō)明本文基于馬爾可夫圖算法的特征提取能夠有效提升惡意代碼的檢測(cè)率.
為了分析不同閾值T_MAX對(duì)共識(shí)算法性能的影響,設(shè)計(jì)了一組仿真實(shí)驗(yàn).實(shí)驗(yàn)中固定 Δγ為10%,算力貢獻(xiàn)者和驗(yàn)證貢獻(xiàn)者節(jié)點(diǎn)數(shù)均為100 個(gè).本實(shí)驗(yàn)的區(qū)塊鏈仿真平臺(tái)采用Python3.7 結(jié)合Flask 框架搭建,本地部署區(qū)塊鏈,對(duì)不同閾值T_MAX下的共識(shí)算法進(jìn)行了模擬,并記錄吞吐量、模型收斂的時(shí)間,多次試驗(yàn)求平均值,實(shí)驗(yàn)結(jié)果如圖8所示.
圖8 不同閾值T_MAX 對(duì)共識(shí)算法性能影響示意圖
實(shí)驗(yàn)結(jié)果表明,隨著閾值T_MAX的不斷增加,共識(shí)算法的吞吐量逐漸減少.如果該閾值設(shè)置過(guò)小,盡管共識(shí)算法吞吐量較大,但是系統(tǒng)收斂到最優(yōu)模型的速率會(huì)減慢;反之,如果閾值設(shè)置過(guò)大,共識(shí)算法的吞吐量會(huì)減少,但是算法能夠較快收斂到最優(yōu)模型.
(1)數(shù)據(jù)樣本去中心化存儲(chǔ).區(qū)塊鏈上的節(jié)點(diǎn)出于某種原因無(wú)法共享數(shù)據(jù),此時(shí)可以在訓(xùn)練中除了可以擁有發(fā)起人共享的數(shù)據(jù),還可以調(diào)用本地的數(shù)據(jù)集樣本參與模型的訓(xùn)練,有效突破了數(shù)據(jù)孤島的障礙,另外數(shù)據(jù)訓(xùn)練得到的參數(shù)也將被驗(yàn)證者校驗(yàn),解決了數(shù)據(jù)可信任的問(wèn)題.采用該平臺(tái)設(shè)計(jì),極大擴(kuò)充提升了訓(xùn)練樣本的數(shù)量,提升模型的泛化能力,從而有效檢測(cè)未知的JavaScript 惡意代碼;
(2)模型訓(xùn)練結(jié)果參數(shù)防篡改.模型一旦訓(xùn)練完成之后,便會(huì)通過(guò)共識(shí)算法進(jìn)行校驗(yàn),擇優(yōu)模型然后被存入?yún)^(qū)塊鏈中.假設(shè)存在惡意節(jié)點(diǎn),但是通過(guò)共識(shí)機(jī)制該模型也不會(huì)被其余節(jié)點(diǎn)認(rèn)可,所以修改是無(wú)效的,保證了模型參數(shù)存儲(chǔ)的安全性;
(3)分散算力有效利用資源.該平臺(tái)設(shè)計(jì)通過(guò)協(xié)調(diào)多方的算力,將傳統(tǒng)的工作量證明機(jī)制的算法替換為有意義的深度學(xué)習(xí)模型訓(xùn)練,從而有效合理地利用了算力資源,推進(jìn)了整個(gè)區(qū)塊鏈上惡意代碼檢測(cè)準(zhǔn)確度的提高.
深度學(xué)習(xí)作為一種新興技術(shù)代表著先進(jìn)生產(chǎn)力,而區(qū)塊鏈則代表了新的生產(chǎn)關(guān)系,兩者有非常大的合作空間.本文嘗試將區(qū)塊鏈技術(shù)和深度學(xué)習(xí)分布式系統(tǒng)訓(xùn)練相結(jié)合,解決了數(shù)據(jù)孤島和數(shù)據(jù)可信任的問(wèn)題,另外在特征提取上使用馬爾可夫圖減少了人工的干預(yù),提升了檢測(cè)流程的效率,該檢測(cè)系統(tǒng)的設(shè)計(jì)可以為惡意代碼檢測(cè)研究提供一定的參考.