顏于鳳 沈 勇
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212003)
進(jìn)入21世紀(jì)以來,隨著計(jì)算機(jī)和互聯(lián)網(wǎng)的飛速發(fā)展,人們對于網(wǎng)絡(luò)的依賴性也不斷增強(qiáng),雖然網(wǎng)絡(luò)給人們的生活和工作帶來了巨大的便利,但隨之而來的網(wǎng)絡(luò)安全問題也會造成不可估量的損失。網(wǎng)頁被篡改是一種常見的網(wǎng)站安全問題,尤其是政府或高校等具有公信力的單位,一旦網(wǎng)頁被篡改并發(fā)表一些損壞國家和人們利益的言論將會對社會造成極其惡劣的影響。鑒于網(wǎng)站安全對于人民生活影響之大,范圍之廣,針對網(wǎng)站頁面保護(hù)的技術(shù)也是層出不窮,一些企業(yè)也開發(fā)出專門的網(wǎng)頁防篡改系統(tǒng)[1]。但即便如此,據(jù) CNCERT(國家互聯(lián)網(wǎng)應(yīng)急中心)監(jiān)測發(fā)現(xiàn),今年我國境內(nèi)仍有上萬個網(wǎng)站被篡改[2]。因此高效、準(zhǔn)確的篡改檢測方法是能夠應(yīng)對此類問題的有效途徑。
在之前的網(wǎng)頁篡改檢測的研究中,主要的檢測技術(shù)有人工比對檢測、HASH函數(shù)比對、數(shù)字水印、網(wǎng)頁相似度比對、關(guān)鍵字比對等方法[3]。這些方法雖然能夠檢測出網(wǎng)頁是否被改動,但大多是對網(wǎng)頁源代碼進(jìn)行處理,有的是計(jì)算源代碼的HASH值,有的是嵌入水印,這對于源代碼固定的靜態(tài)網(wǎng)頁是奏效的[4]。而對于以數(shù)據(jù)庫為基礎(chǔ)的動態(tài)網(wǎng)頁來說,源代碼中幾乎不包含太多信息,以處理網(wǎng)頁源代碼的方式來處理動態(tài)網(wǎng)頁往往無法達(dá)到預(yù)期的效果,所以此類算法對于動態(tài)網(wǎng)頁的作用還有待研究[5]。本文以虛擬用戶的形式通過模擬瀏覽器行為加載網(wǎng)頁并獲取網(wǎng)頁截圖,再借用圖像特征點(diǎn)提取算法對截取的圖像進(jìn)行特征識別,從而快速地檢測出網(wǎng)頁是否被篡改,因?yàn)椴⒎侵苯犹幚砭W(wǎng)頁源代碼,所以該模型對于靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁同樣有效。
在通常的網(wǎng)頁抓取過程中需要借用網(wǎng)絡(luò)爬蟲作為工具。目前,網(wǎng)絡(luò)爬蟲的框架種類眾多,不同的框架下包含了不同的爬取算法,有的以網(wǎng)站深度為爬取標(biāo)準(zhǔn),有的以網(wǎng)站廣度為標(biāo)準(zhǔn),而選取標(biāo)準(zhǔn)則以實(shí)際應(yīng)用的需求為準(zhǔn)[6]。雖然方法很多但其基本原理都是給定一個初始的url地址鏈接,作為一個站點(diǎn),讀取該站點(diǎn)的頁面,然后再通過頁面源碼中的鏈接爬取鏈接所指向的頁面,直到所有頁面都被讀取完[7]?;玖鞒谭譃槿剑航㈡溄雨?duì)列、DSN解析鏈接并保存、分析下載的文件[8]。
本文的網(wǎng)頁抓取模型在利用網(wǎng)絡(luò)爬蟲的基礎(chǔ)上,創(chuàng)建一個虛擬的用戶端,通過模擬瀏覽器的行為來訪問首站點(diǎn),然后編譯執(zhí)行站點(diǎn)中的JavaS-cript代碼,最終保存模擬瀏覽器中的網(wǎng)頁界面。具體流程如圖1所示。
圖1 抓取模型
圖像處理一直以來都是學(xué)者們比較感興趣的一個研究方向。能夠代表一幅圖像的要素有很多種,特征點(diǎn)便是其中之一。針對二維圖像的特征點(diǎn)檢測的研究也已經(jīng)持續(xù)了很長的一段時間,到目前為止已有上百種不同類型的檢測算法[9~10]。本文在眾多的特征點(diǎn)檢測算法中選用兩種最常見的角點(diǎn)檢測算法:Harris角點(diǎn)檢測和SIFT角點(diǎn)檢測算法作為本文圖像處理的方法,在充分理解這兩種角點(diǎn)檢測算法的基礎(chǔ)上,創(chuàng)建角點(diǎn)檢測模型對網(wǎng)頁抓取模型中得到的圖像進(jìn)行處理,并且對處理過的圖像進(jìn)行比較。
2.2.1 Harris角點(diǎn)檢測算法
傳統(tǒng)的角點(diǎn)檢測算法首先會固定一個窗口,然后以各個像素點(diǎn)作為窗口的中心,沿八個基本方向分別滑動,計(jì)算滑動窗口前后對應(yīng)位置像素點(diǎn)灰度值之差的平方和,并取最小值作為該點(diǎn)的角點(diǎn)檢測,最后經(jīng)非極大值移植和閾值判斷過程抽取角點(diǎn)[11]。若某個像素點(diǎn)是角點(diǎn),則窗口移動的過程中各個方向的灰度變化都比較大。
Harris角點(diǎn)檢測算法通過高斯算子計(jì)算水平和垂直方向上的微分并創(chuàng)建局部微分自相關(guān)矩陣來描述灰度變化的情況:
2.2.2 SIFT角點(diǎn)檢測算法
SIFT(Scale Invariant Feature Transformantion),尺度不變特征變換,是一種對圖像放縮、旋轉(zhuǎn)等保持不變性的局部特征提取和描述算法[14]。該算法是繼Harris角點(diǎn)檢測算法后又一經(jīng)典算法,是由Lowe利用高斯差分算子在尺度空間中檢測特征點(diǎn),并且結(jié)合相應(yīng)的梯度描述子共同構(gòu)成的[15]。其基本流程大致分為四步:輸入圖像并轉(zhuǎn)化、尺度空間極值點(diǎn)檢測、關(guān)鍵點(diǎn)精確定位及方向賦值和描述、得到目標(biāo)的特征點(diǎn)集[16]。
圖2 Harris角點(diǎn)檢測流程
圖3 SIFT角點(diǎn)檢測流程
2.2.3 特征匹配算法
在對圖像進(jìn)行特征提取后,就可以對特征點(diǎn)進(jìn)行匹配。通常使用相似度來評判兩個圖像的特征點(diǎn)的匹配程度,若相似度越高則說明兩個圖像越匹配,進(jìn)而說明網(wǎng)頁被篡改的幾率較小。
本文采用歐幾里得度量(euclidean metric,歐氏距離)來表示相似度:
其中X,Y為兩個待匹配圖像的特征點(diǎn)向量[17]。在二維空間中其表示的是兩個點(diǎn)之間的真實(shí)距離,歐式距離越小兩個用戶的相似度就越大,歐式距離越大,兩個用戶的相似度就越小。
為了驗(yàn)證本設(shè)計(jì)能夠快速有效檢測出靜態(tài)網(wǎng)頁及動態(tài)網(wǎng)頁的篡改情況,本文以python作為主要工具,以個人網(wǎng)站的作為被測試對象,首先輸入初始站點(diǎn)的url鏈接,利用網(wǎng)頁抓取模型獲取該站點(diǎn)下所有頁面并建成圖像庫;接著對個人網(wǎng)站作出細(xì)微的修改,再次利用抓取模型獲取網(wǎng)頁圖像并作為圖像處理模型的輸入端,對前后兩次圖像進(jìn)行特征匹配。
圖4為原網(wǎng)頁界面,然后對網(wǎng)頁進(jìn)行細(xì)微的修改,用以模擬網(wǎng)頁被篡改,形成圖5,與圖4相比,圖5將“World”修改為“World_magic”。然后分別對兩幅圖像進(jìn)行特征點(diǎn)提取。
圖4 原網(wǎng)頁
圖5 修改后網(wǎng)頁
圖6 原網(wǎng)頁特征檢測
圖7 修改后網(wǎng)頁特征檢測
經(jīng)過對比兩幅圖像的特征點(diǎn)發(fā)現(xiàn),除了被修改過的外,其余部分的特征點(diǎn)參數(shù)一致。最后通過匹配,可有效找出被篡改的位置并標(biāo)記。
圖8 匹配定位
本文針對傳統(tǒng)網(wǎng)頁篡改檢測技術(shù)無法兼顧靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁的問題,設(shè)計(jì)網(wǎng)頁抓取模型,利用圖像處理的方法對抓取的網(wǎng)頁界面進(jìn)行特征點(diǎn)檢測,通過對比圖像來達(dá)到檢測網(wǎng)頁是否被篡改的目的。實(shí)驗(yàn)證明,本文的研究方法確實(shí)可以達(dá)到檢測網(wǎng)頁是否被篡改的目的,并且能夠找出被篡改的位置信息。