• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于卷積神經(jīng)網(wǎng)絡(luò)的惡意URL檢測(cè)*

      2018-09-03 09:53:54潘司晨
      通信技術(shù) 2018年8期
      關(guān)鍵詞:字符卷積編碼

      潘司晨,薛 質(zhì),施 勇

      (上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)

      0 引 言

      在互聯(lián)網(wǎng)時(shí)代,企業(yè)與用戶面臨著各種安全威脅,如惡意鏈接、惡意軟件和注入攻擊等。

      在惡意URL識(shí)別方面,最初的檢測(cè)方式是黑白名單和規(guī)則匹配。由于規(guī)則是基于當(dāng)時(shí)的安全知識(shí),因此可能無(wú)法有效攔截新型的攻擊方式。

      隨著計(jì)算機(jī)性能的提升和人工智能的發(fā)展,安全領(lǐng)域開(kāi)始使用機(jī)器學(xué)習(xí)的方法來(lái)加強(qiáng)檢測(cè)和防御技術(shù)。機(jī)器學(xué)習(xí)可以從URL的域名、長(zhǎng)度、參數(shù)和敏感字符等方面分析,挖掘數(shù)據(jù)中蘊(yùn)含的信息,發(fā)現(xiàn)潛在的規(guī)律,通過(guò)合適的算法構(gòu)建模型,從而對(duì)新型攻擊方式實(shí)現(xiàn)有效攔截。對(duì)于傳統(tǒng)機(jī)器學(xué)習(xí)方法,如支持向量機(jī)、決策樹(shù)等,特征提取非常重要,最終模型效果的好壞與選用的特征有很大關(guān)系。但是,特征提取和試驗(yàn)需要耗費(fèi)大量精力和時(shí)間[1-2]。

      而深度學(xué)習(xí)可以直接使用原始數(shù)據(jù),不需要預(yù)先提取特征,因此可以節(jié)省不少提取特征的時(shí)間。通過(guò)多層神經(jīng)網(wǎng)絡(luò),模仿人腦的機(jī)制來(lái)解釋和處理數(shù)據(jù)。深度學(xué)習(xí)可以從低層特征不斷學(xué)習(xí)進(jìn)化為高層特征,從而對(duì)結(jié)果進(jìn)行預(yù)測(cè)。

      本文主要研究了卷積神經(jīng)網(wǎng)絡(luò)(CNN)在惡意URL檢測(cè)上的應(yīng)用和效果。第1章介紹實(shí)驗(yàn)的整個(gè)實(shí)現(xiàn)流程,包括數(shù)據(jù)及預(yù)處理、訓(xùn)練詞嵌入模型、神經(jīng)網(wǎng)絡(luò)模型構(gòu)建、優(yōu)化等。第2章分析CNN模型的最終效果,并與基于邏輯回歸算法的模型結(jié)果進(jìn)行對(duì)比。第3章分析結(jié)果的意義。

      1 結(jié)構(gòu)模型與實(shí)現(xiàn)

      通過(guò)搭建和訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)URL的惡意性進(jìn)行判別。模型基于TensorFlow[3-4]庫(kù)實(shí)現(xiàn)。完整的處理流程如圖1所示。

      圖1 模型總體流程

      整個(gè)處理流程可分為數(shù)據(jù)集預(yù)處理、訓(xùn)練詞嵌入模型、URL編碼映射、模型訓(xùn)練、驗(yàn)證模型和調(diào)整模型等步驟。

      1. 1 數(shù)據(jù)集處理

      本實(shí)驗(yàn)所用的數(shù)據(jù)集為惡意URL研究時(shí)的常用數(shù)據(jù)集[5],共有約45萬(wàn)條URL,訓(xùn)練集和測(cè)試集的數(shù)目比約為12∶1。以下是兩條數(shù)據(jù)樣例,其中第一條URL被標(biāo)注為"bad",第二條URL被標(biāo)注為"good":

      http∶//goodlandurbanfarms.com/wolomasx/wtyhyyq/hykoopp/qrrttrr/

      http∶//www.metrolyrics.com/arashi-lyrics.html

      讀取數(shù)據(jù)后,在將數(shù)據(jù)傳入CNN模型前,需要對(duì)其進(jìn)行一系列轉(zhuǎn)換。對(duì)于標(biāo)簽y,本人采用one-hot編碼的方式,用大小為1×2的數(shù)組表示各個(gè)標(biāo)簽。原先的正樣本"good"被轉(zhuǎn)換成[0,1],負(fù)樣本"bad"被轉(zhuǎn)換成[1,0]。

      對(duì)于URL集合,為使URL能被之后的神經(jīng)網(wǎng)絡(luò)模型所理解,需要將每條原始的URL字符串映射成二維實(shí)數(shù)矩陣。通過(guò)字符級(jí)別的詞嵌入編碼方法[6-7],將URL中的每個(gè)字符映射成尺寸大小為1×embedding_len的實(shí)數(shù)數(shù)組。經(jīng)過(guò)多次試驗(yàn),選取參數(shù)embedding_len=64。數(shù)據(jù)集中,共有大小寫(xiě)英文字母、數(shù)字、'.'、'/'、'?'、'_'等特殊符號(hào)共94個(gè)字符。此外,由于各條URL的長(zhǎng)度不同,需要將所有URL的長(zhǎng)度統(tǒng)一變?yōu)閟equence_length以便處理。觀察數(shù)據(jù)集后發(fā)現(xiàn),99%的URL長(zhǎng)度不超過(guò)200,因此選取sequence_length=200。對(duì)于長(zhǎng)度超過(guò)200的URL,只截取其前200個(gè)字符;而對(duì)于長(zhǎng)度小于200的URL,則在原始URL的末尾填充若干個(gè)空格(' '),使其長(zhǎng)度達(dá)到200。通過(guò)上述方法,每條原始URL字符串被映射成了200×64的二維矩陣,作為神經(jīng)網(wǎng)絡(luò)模型輸入層的輸入。

      1.2 字符表 征

      為了將每條原始的URL字符串映射成二維矩陣,本人使用了字符級(jí)別的詞嵌入編碼方法。之所以不采用one-hot編碼,是因?yàn)槠浯嬖谝恍┤毕荨?/p>

      如果使用one-hot編碼,則每條URL將被映射成200×94的二維矩陣,且CNN神經(jīng)網(wǎng)絡(luò)輸入層的神經(jīng)元個(gè)數(shù)需要調(diào)整為94個(gè)。因此,與詞嵌入編碼相比,one-hot編碼需要耗費(fèi)更多的空間和計(jì)算資源。此外,one-hot編碼會(huì)把每個(gè)詞孤立起來(lái),使得算法對(duì)相關(guān)詞的泛化能力不強(qiáng)。本文在CNN模型不變的情況下,對(duì)URL分別進(jìn)行了字符級(jí)別的詞嵌入編碼和one-hot編碼,并在第2章比較了兩者的結(jié)果。

      1.3 神經(jīng)網(wǎng)絡(luò)模型

      CNN網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示,模型中各部分的功能描述、形狀大小等如表1所示。

      圖2 CNN網(wǎng)絡(luò) 結(jié)構(gòu)

      表1 模型各部分 概況

      該模型借鑒了CNN經(jīng)典網(wǎng)絡(luò)模型GoogLeNet中Inception模塊的思想[8]。當(dāng)為卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)某一層時(shí),需要考慮層的類(lèi)別(如卷積層或池化層)、卷積核或池化核的尺寸大小和步長(zhǎng)等。以卷積核尺寸為例,往往需要嘗試多個(gè)不同的尺寸大小,比較模型訓(xùn)練的結(jié)果,才能確定合適的尺寸大小。而在Inception模塊中,設(shè)計(jì)者可以同時(shí)使用多個(gè)不同尺寸大小的卷積核,并把它們的輸出結(jié)果相連接。即Inception模塊的特點(diǎn)是,當(dāng)設(shè)計(jì)者不確定該使用何種尺寸的卷積核時(shí),可以選擇使用多個(gè)卷積核,使神經(jīng)網(wǎng)絡(luò)模型自身去學(xué)習(xí)相關(guān)參數(shù)獲得想要用到的卷積核大小。這雖然會(huì)使網(wǎng)絡(luò)架構(gòu)更加復(fù)雜,但可以改善最終的效果。

      本實(shí)驗(yàn)中,CNN模型的起始輸入是經(jīng)過(guò)字符級(jí)別的詞嵌入編碼后的二維矩陣,尺寸為200×64。Inception層由3個(gè)卷積層和3個(gè)最大池化層并聯(lián)而成,各自的尺寸大小和步長(zhǎng)如表1所示,padding類(lèi)型均為"valid"。以Conv1和Maxpool1為例。Conv1由128個(gè)尺寸為3×64×1的卷積核組成,經(jīng)過(guò)激活函數(shù)ReLU和最大池化后,數(shù)據(jù)維度變?yōu)?×1×128。將3個(gè)池化層的輸出數(shù)據(jù)連接在一起后,Inception層的輸出維度為1×1×384。之后是三層神經(jīng)元個(gè)數(shù)分別為128、64和2的全連接層。假設(shè)第三層全連接層的輸出是[a,b],通過(guò)softmax函數(shù)后,輸出變?yōu)?,記為[y1, y2],顯然y1+y2=1。設(shè)置閾值thre,當(dāng)y1>thre時(shí),則判定原始URL為惡意URL,否則則視為正常URL。本實(shí)驗(yàn)取thre=0.5。

      為防止過(guò)擬合,模型中對(duì)每層的輸出采用dropout隨機(jī)失活[9]。另外,為了加快模型的訓(xùn)練速度,在Inception層之后對(duì)數(shù)據(jù)實(shí)施了批量歸一化(Batch Normalization)[10]。批量歸一化的步驟如下:設(shè)Inception層的輸出為z→,通過(guò)式(1)、式(2)和式(3)計(jì)算出各z(i)的均值、方差和歸一化后的結(jié)果:

      式中,m代表樣本的個(gè)數(shù)。本實(shí)驗(yàn)在調(diào)整模型更新權(quán)重和偏差參數(shù)時(shí),采用小批量的Adam優(yōu)化算法[11],每次迭代使用的batch大小為64。為了防止式(3)的分母為0,可令ε=0.001,有:

      損失函數(shù)為:

      本實(shí)驗(yàn)數(shù)據(jù)集的樣本數(shù)目約為45萬(wàn)條。在更新權(quán)重和偏差參數(shù)時(shí),如果每次都使用所有訓(xùn)練集樣本來(lái)計(jì)算損失函數(shù),則計(jì)算量和訓(xùn)練時(shí)間非常大。因此,本文采用小批量?jī)?yōu)化算法。每次更新參數(shù)時(shí),僅基于當(dāng)前被選擇的m個(gè)樣本,可以大大加快每次訓(xùn)練的速度,也可以節(jié)省內(nèi)存空間。常用的優(yōu)化算法有Momentum算法、Adagrad算法和RMSprop算法等,這里采用Adam算法作為本實(shí)驗(yàn)的優(yōu)化算法。Adam算法(Adaptive Moment Estimation)[11]適用于許多深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),本質(zhì)上是將動(dòng)量算法和RMSprop算法相結(jié)合,能計(jì)算每個(gè)參數(shù)的自適應(yīng)學(xué)習(xí)率。

      2 結(jié)果分析

      2.1 CNN模型測(cè)試結(jié)果

      本實(shí)驗(yàn)將數(shù)據(jù)集分 為訓(xùn)練集、交叉驗(yàn)證集和測(cè)試集三個(gè)部分。使用章節(jié)1所述的模型和參數(shù),訓(xùn)練23 000次后,在測(cè)試集上測(cè)試,測(cè)試集共有33 339個(gè)樣本,包含25 378個(gè)正樣本和7 961個(gè)負(fù)樣本。測(cè)試結(jié)果和相關(guān)名詞的含義如表2所示。與諸如個(gè)性化商品推薦等機(jī)器學(xué)習(xí)應(yīng)用不同,應(yīng)用于安全領(lǐng)域的模型如果分類(lèi)錯(cuò)誤,可能會(huì)造成很大影響,特別是當(dāng)惡意樣本被誤判為正樣本時(shí)。因此,測(cè)試結(jié)果計(jì)算的是負(fù)樣本的查準(zhǔn)率、查全率和Fβ值,且設(shè)置Fβ中的β=1.5,表示查全率比查準(zhǔn)率有更大的影響[12]。

      表2 CNN測(cè)試結(jié)果

      2.2 其他模型的測(cè)試結(jié)果

      在對(duì)字符串進(jìn)行編碼映射時(shí),除了使用字符級(jí)別的詞嵌入編碼外,還對(duì)字符進(jìn)行了one-hot編碼,并比較了兩者間最終結(jié)果的差異。此外,將結(jié)果與使用邏輯回歸算法進(jìn)行惡意URL檢測(cè)[5]的結(jié)果進(jìn)行了對(duì)比。需要說(shuō)明的是,這三個(gè)模型使用相同的訓(xùn)練集、交叉驗(yàn)證集和測(cè)試集。

      2.2.1 邏輯回歸法

      通過(guò)邏輯回歸算法對(duì)惡意URL進(jìn)行判別。特征提取采用詞頻與逆向文件頻率模型(TF-IDF)[13]實(shí)現(xiàn)。

      TF-IDF常用于文本處理領(lǐng)域。假設(shè)數(shù)據(jù)集由m個(gè)文本Ai組成,每個(gè)文本由ni個(gè)單詞組成。假設(shè)單詞c在文本Ai出現(xiàn)的次數(shù)為nic,數(shù)據(jù)集中共有mc個(gè)文本包含單詞c,則單詞c的。它在文本Ai中的詞頻。因此,它在文本Ai中的TF-IDF可由式(6)得到:

      由式(6)可知,TF-IDF表示各個(gè)字詞對(duì)于數(shù)據(jù)集的重要程度。如果單詞c在某個(gè)文本中的詞頻較高,且在其他文本中的出現(xiàn)次數(shù)較少,則可以認(rèn)為它具備一定的類(lèi)別區(qū)分能力,適合用來(lái)分類(lèi)。

      以'-''.'等字符作為分隔符,對(duì)各URL進(jìn)行切分,調(diào)用python庫(kù)sklearn中的相關(guān)函數(shù),生成TF-IDF矩陣后,通過(guò)邏輯回歸算法進(jìn)行訓(xùn)練,流程圖如圖3所示。

      圖3 邏輯回歸法流程

      最 終在測(cè)試集上的結(jié)果,如表3所示。

      表3 邏輯回歸算法測(cè)試結(jié) 果

      2.2.2 one-hot編碼

      在第1.2節(jié)曾提到,one-hot編碼會(huì)降低算法的泛化能力。為了驗(yàn)證這一點(diǎn),在CNN模型和參數(shù)不變的情況下,對(duì)URL進(jìn)行one-hot編碼。數(shù)據(jù)集中共有大小寫(xiě)英文字母、數(shù)字、'.''/''?''_'等特殊符號(hào)共94個(gè)字符,因此把每個(gè)字符映射成大小為1×94的數(shù)組。對(duì)于各字符,把數(shù)組相應(yīng)位置的值設(shè)為1,其余均設(shè)為0。最終在測(cè)試集上的結(jié)果如表4所示。

      表4 one-hot編碼測(cè)試結(jié)果

      2.3 結(jié)果比較

      比較上述三個(gè)模型的結(jié)果可知,詞嵌入編碼CNN模型和one-hot編碼CNN模型的查全率和F值均比通過(guò)邏輯回歸算法的結(jié)果好,且省去了特征提取的步驟。因此,深度學(xué)習(xí)在安全領(lǐng)域的某些方面具有應(yīng)用價(jià)值。此外,詞嵌入編碼的最終效果優(yōu)于one-hot編碼的效果,證明了one-hot編碼存在泛化能力不強(qiáng)的缺陷。

      3 結(jié) 語(yǔ)

      本文研究了卷積神經(jīng)網(wǎng)絡(luò)在惡意URL檢測(cè)上的應(yīng)用和效果,設(shè)計(jì)和訓(xùn)練了一個(gè)CNN模型對(duì)惡意URL進(jìn)行檢測(cè),并與傳統(tǒng)邏輯回歸算法的結(jié)果進(jìn)行了對(duì)比。在正確率、查全率、F值等指標(biāo)上,CNN模型的效果均好于后者,且省去了特征提取的步驟。因此,深度學(xué)習(xí)在安全領(lǐng)域的某些方面具有應(yīng)用價(jià)值。隨著計(jì)算機(jī)處理速度的提高和硬件條件的改善,訓(xùn)練更加復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型也將成為可能。

      猜你喜歡
      字符卷積編碼
      尋找更強(qiáng)的字符映射管理器
      基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
      基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
      《全元詩(shī)》未編碼疑難字考辨十五則
      子帶編碼在圖像壓縮編碼中的應(yīng)用
      電子制作(2019年22期)2020-01-14 03:16:24
      字符代表幾
      一種USB接口字符液晶控制器設(shè)計(jì)
      電子制作(2019年19期)2019-11-23 08:41:50
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      Genome and healthcare
      消失的殖民村莊和神秘字符
      天峨县| 隆回县| 长寿区| 日喀则市| 黎城县| 玉田县| 清徐县| 全南县| 舒城县| 青岛市| 浦城县| 乐陵市| 宁陵县| 平顶山市| 龙口市| 周宁县| 江阴市| 原平市| 北辰区| 台东市| 株洲市| 同江市| 福建省| 灵寿县| 陆良县| 社旗县| 梁河县| 湛江市| 额济纳旗| 合阳县| 延津县| 读书| 长沙县| 定结县| 罗源县| 苏尼特右旗| 哈巴河县| 岳阳市| 中方县| 南投县| 瑞昌市|