張?zhí)m
摘要:隨著社會(huì)快速的發(fā)展,人們生活節(jié)奏越來越快,各方面的競(jìng)爭(zhēng)越來越激烈。比如在校大學(xué)生的就業(yè)、學(xué)習(xí)、生活、愛情和自我意識(shí)等方面經(jīng)常會(huì)遇到心理失衡等問題。大學(xué)生心理危機(jī)的早期識(shí)別和預(yù)警對(duì)于高校降低和減少因心理問題而導(dǎo)致的意外傷害事件具有重要作用。如今網(wǎng)絡(luò)、數(shù)據(jù)等概念已經(jīng)十分緊密地滲透于人們的生活、學(xué)習(xí)和工作中。一個(gè)大學(xué)生使用移動(dòng)設(shè)備一天產(chǎn)生的數(shù)據(jù)流量可能高達(dá)數(shù)百兆。借此我們采用的Intel開源的Hyperscan引擎,利用大學(xué)生上網(wǎng)流量的關(guān)鍵字匹配技術(shù),來分析其上網(wǎng)行為數(shù)據(jù),可達(dá)到快速有效的對(duì)大學(xué)生心理危機(jī)進(jìn)行識(shí)別和預(yù)警。
關(guān)鍵詞:關(guān)鍵字;匹配;引擎;上網(wǎng)行為
一、引言
在互聯(lián)網(wǎng)普及的時(shí)代,人們的生活都離不開手機(jī)等移動(dòng)終端,而大學(xué)生是其中最主要的群體之一。近年來,在校大學(xué)生除了專業(yè)課程的學(xué)習(xí)和能力培養(yǎng)外,其心理健康問題也越來越受重視。大學(xué)生作為祖國(guó)未來繁榮發(fā)展的棟梁之材,我們更應(yīng)該關(guān)注他們身心的健康發(fā)展,通過其上網(wǎng)行為分析,發(fā)現(xiàn)有心理問題的隱患,并進(jìn)行有針對(duì)性的預(yù)警和介入,將這些隱患扼殺在萌芽狀態(tài),避免釀成一些無法挽救的悲劇。
上網(wǎng)用戶行為的研究與心理學(xué)、社會(huì)學(xué)、社會(huì)心理學(xué)、人類學(xué)以及一切與網(wǎng)絡(luò)行為的學(xué)科密切相關(guān)。具體講網(wǎng)絡(luò)用戶行為研究就是分析網(wǎng)絡(luò)用戶的構(gòu)成、特點(diǎn)及其行為活動(dòng)上所表現(xiàn)出來的規(guī)律[1]。從行為學(xué)的角度,個(gè)體網(wǎng)絡(luò)行為是單個(gè)個(gè)體在網(wǎng)絡(luò)上所表現(xiàn)出來的行為,是由個(gè)體的個(gè)性決定的,短期的個(gè)體行為可能并不具有明顯的規(guī)律,但長(zhǎng)期的個(gè)體網(wǎng)絡(luò)行為則具有一定的穩(wěn)定性。因此,對(duì)用戶上網(wǎng)行為的研究是具有現(xiàn)實(shí)意義的。本文重點(diǎn)在研究傳統(tǒng)的字符串匹配技術(shù)與更適合大規(guī)模流量數(shù)據(jù)的關(guān)鍵字匹配技術(shù)Hyperscan引擎,并將其應(yīng)用于大學(xué)生上網(wǎng)行為分析與心理預(yù)警領(lǐng)域。
二、傳統(tǒng)關(guān)鍵字匹配算法的相關(guān)研究工作
關(guān)鍵字匹配也稱字符串匹配、模式匹配,一直是計(jì)算機(jī)科學(xué)的研究熱點(diǎn),尤其是信息時(shí)代數(shù)據(jù)爆炸式的增長(zhǎng)對(duì)字符串匹配算法的性能提出了更高的要求。字符串匹配算法根據(jù)不同的需求類型可分為單模匹配、多模匹配、正則表達(dá)式匹配等。經(jīng)典的算法在整個(gè)字符串匹配算法的研究過程中起到了舉足輕重的地位,后續(xù)大部分算法都是在經(jīng)典理論基礎(chǔ)上進(jìn)行改進(jìn),下面分別介紹不同類型算法中最具代表性的典型算法。
(一)AC算法
在多關(guān)鍵字匹配算法中,最著名的要數(shù)由Aho和Corasick在1977年提出的基于前綴搜索的AC算法,該算法是基于有窮自動(dòng)機(jī)的,從前往后進(jìn)行匹配,自動(dòng)機(jī)建立過程建立三個(gè)函數(shù):狀態(tài)跳轉(zhuǎn)函數(shù)goto,輸出函數(shù)output,失效函數(shù)failure。匹配過程是從零狀態(tài)出發(fā),每次掃描文本中的一個(gè)字符,在當(dāng)前狀態(tài)情況下,查看掃描到的字符,利用94盛。函數(shù)、failure函數(shù)跳轉(zhuǎn)到下一個(gè)狀態(tài)。如果跳轉(zhuǎn)到的狀態(tài)的outpul函數(shù)不為空,表示命中了某個(gè)關(guān)鍵字,輸出該關(guān)鍵字[2]。
(二)Wu-Mamber算法
Wu-Mamber算法是基于后綴搜索的多模匹配算法,通過使用所有模式中最短串的長(zhǎng)度作為掃描窗口,并且每次從后掃描兩個(gè)字符,來提高掃描效率,另外使用了哈希技術(shù),建立三個(gè)表Shift表、Prefix表、Hash表,利用Hash算法將掃描到的兩個(gè)字符映射成不同的hash值存放在不同的表中。Wu-Mamber算法具有初始化時(shí)間短,內(nèi)存占用少的特點(diǎn),但匹配速度不如AC算法穩(wěn)定,當(dāng)字符不能等概率出現(xiàn)時(shí)容易造成匹配速度下降,并且Wu-Mamber算法是對(duì)所有模式中最短串的長(zhǎng)度敏感的。
(三)SBOM算法
SBOM算法是基于子串搜索的多模匹配算法,一般在當(dāng)前窗口內(nèi)從后向前掃描,能夠識(shí)別模式串集合P中的某個(gè)模式串的子串,并在此基礎(chǔ)上進(jìn)行比較驗(yàn)證。較早出現(xiàn)的基于子串的多模匹配算法是Multi-BDM,由于實(shí)現(xiàn)復(fù)雜,實(shí)際很少使用。SBOM算法使用了FactorOrack這一數(shù)據(jù)結(jié)構(gòu)。在進(jìn)行預(yù)處理過程中將根據(jù)所有模式串構(gòu)造模式匹配的Oracle結(jié)構(gòu),以匹配窗口的最長(zhǎng)字串。
三、Hyperscan引擎
對(duì)于精確字符串匹配,過去的幾十年里從理論到技術(shù)都己經(jīng)進(jìn)行了深入的研究,并取得了重大的突破,出現(xiàn)了多個(gè)接近理論性能卜限的算法,如AC、WU-MANBER、SBOM等等。這些經(jīng)典算法在網(wǎng)絡(luò)安全檢測(cè)中發(fā)揮了巨大的作用。.然而,隨著網(wǎng)絡(luò)的不斷發(fā)展,攻擊者也在不斷地針對(duì)各種安全檢測(cè)技術(shù)進(jìn)行躲避和隱藏,這使得網(wǎng)絡(luò)中關(guān)鍵字檢測(cè)變得越來越復(fù)雜,簡(jiǎn)單的精確字符串模式已經(jīng)難以準(zhǔn)確地描述其特征。因此,正則表達(dá)式以其強(qiáng)大、靈活的表達(dá)能力,迅速成為描述新一代規(guī)則的主要工具。
(一)常規(guī)的正則表達(dá)式匹配算法
正則表達(dá)式構(gòu)造了一系列字符串規(guī)則,使得文本處理變得更加靈活方便,但是也給匹配算法提出了難題。通常正則表達(dá)式匹配過程如圖所示。首先將正則表達(dá)式構(gòu)造成一顆解析樹,再根據(jù)一定的方法將解析數(shù)轉(zhuǎn)化為非確定的有窮自動(dòng)機(jī)側(cè)(NFA)。下一步直接使用NFA進(jìn)行搜索的優(yōu)點(diǎn)是內(nèi)存占用小,但在處理每個(gè)字符時(shí),處理活動(dòng)集合中的狀態(tài)都必須被逐個(gè)處理,匹配時(shí)間慢.若將NFA轉(zhuǎn)化為DFA來處理,那么一個(gè)字符則的后續(xù)狀態(tài)只有一個(gè),但當(dāng)所有狀態(tài)編譯成DFA時(shí),會(huì)造成巨大的內(nèi)存消耗,當(dāng)前的硬件條件無法滿足如此大的內(nèi)存需求。因此目前的研究熱點(diǎn)在于如何調(diào)和NFA與DFA在時(shí)間和空間上的矛盾。
(二)Hyperscan正則表達(dá)式引擎
Hyperscan是一款來自于Intel的高性能的正則表達(dá)式匹配庫。它是基于X86平臺(tái)以PCRE為原型而開發(fā)的,Intel將此高速正則表達(dá)式匹配引擎Hyperscan開源了,基于BSD許可[3]。這個(gè)基于自動(dòng)機(jī)的引擎經(jīng)過了多年開發(fā),經(jīng)過不斷優(yōu)化與完善,效率非常之高,雖然沒有pcre等對(duì)正則語法支持全面,但非常適用于網(wǎng)絡(luò)設(shè)備。用戶可以在網(wǎng)絡(luò)設(shè)備數(shù)據(jù)面使用Hyperscan進(jìn)行規(guī)則匹配,實(shí)現(xiàn)高性能網(wǎng)絡(luò)流量數(shù)據(jù)包檢測(cè)分析等應(yīng)用,其工作流程主要分成兩個(gè)部分:編譯期(compiletime)和運(yùn)行期(run-time)[4]。
1.編譯期
Hyperscan自帶C++編寫的正則表達(dá)式編譯器。它將由正則表達(dá)式形成的n條規(guī)則作為輸入,針對(duì)不同的IA平臺(tái),用戶定義的模式及特殊語法,經(jīng)過復(fù)雜的圖分析及優(yōu)化過程,生成對(duì)應(yīng)的數(shù)據(jù)庫。另外,生成的數(shù)據(jù)庫可以被序列化后保存在內(nèi)存中,以供運(yùn)行期提取使用。
2.運(yùn)行期
Hyperscan的運(yùn)行期是通過C語言來開發(fā)的。圖1展示了Hyperscan在運(yùn)行期的主要流程。用戶需要預(yù)先分配一段內(nèi)存來存儲(chǔ)臨時(shí)匹配狀態(tài)信息,之后利用編譯生成的數(shù)據(jù)庫調(diào)用Hypemcan內(nèi)部的匹配引擎(NFA,DFA等)來對(duì)輸入進(jìn)行模式匹配。Hyperscan在引擎中使用Intel處理器所具有的SDvID指令進(jìn)行加速。同時(shí),用戶可以通過回調(diào)函數(shù)來自定義匹配發(fā)生后采取的行為。由于生成的數(shù)據(jù)庫是只讀的,用戶可以在多個(gè)CPU核或多線程場(chǎng)景下共享數(shù)據(jù)庫來提升匹配擴(kuò)展性。
Hypersca歸支持Intel處理器多平臺(tái)的交叉編譯,且對(duì)操作系統(tǒng)無特殊限定,同時(shí)支持虛擬機(jī)和器場(chǎng)景。Hyperscan實(shí)現(xiàn)了對(duì)PCRE語法的基本涵蓋,對(duì)復(fù)雜的表達(dá)式例如“.*”和“[^>]*”不會(huì)有任何支持問題。在此基礎(chǔ)上,Hyperscan增加了不同的匹配模式(流模式和塊模式)來滿足不同的使用場(chǎng)景。
根據(jù)規(guī)則復(fù)雜度的不同,H即~能支持幾萬到幾十萬的規(guī)則的大規(guī)模匹配。與傳統(tǒng)正則匹配引擎不同,Hypcxscaa支持多規(guī)則的同步匹配。在用戶為每條規(guī)則指定獨(dú)有的編號(hào)后,Hypercan可以將所有規(guī)則編譯成一個(gè)數(shù)據(jù)庫并在匹配過程中輸出所有當(dāng)前匹配到的規(guī)則信息。
四、大學(xué)生上網(wǎng)行為關(guān)鍵字匹配實(shí)驗(yàn)
首先利用抓包軟件獲取網(wǎng)絡(luò)應(yīng)用的通信報(bào)文,對(duì)報(bào)文進(jìn)行協(xié)議分析,并通過端口、地址以及應(yīng)用層凈荷(關(guān)鍵字的相關(guān)信息)的橫向?qū)Ρ确治?,得到其?dú)有的特征作為識(shí)別的關(guān)鍵,包括源端口、報(bào)文方向、報(bào)文長(zhǎng)度、地址、動(dòng)作類型、優(yōu)先級(jí)、規(guī)則等。而這些規(guī)則可以寫在一個(gè)單行上,或者在多行之間的行尾用分隔,各條規(guī)則之間用分號(hào)隔開。
實(shí)現(xiàn)匹配的流程為:首先是初始化、將上述構(gòu)造的正則表達(dá)式輸入Hyperean,編譯成內(nèi)部的模式數(shù)據(jù)庫,同時(shí)分配運(yùn)行時(shí)的狀態(tài)保存空間。之后,對(duì)每條輸入的HTTP報(bào)文進(jìn)行模式匹配,對(duì)于每條報(bào)文都需要提取多個(gè)字段,在Hyperean匹配過程中,通過回調(diào)函數(shù)和所匹配編號(hào)《每條輸入的正則表達(dá)式均有唯一的一個(gè)編號(hào)對(duì)應(yīng)),在相應(yīng)的結(jié)構(gòu)體中記錄所提取字段的起始位置和長(zhǎng)度;這邊的結(jié)構(gòu)體是共用的,需要在匹配完成后,判別當(dāng)前到來的是請(qǐng)求報(bào)文還是響應(yīng)報(bào)文,重新保存到數(shù)據(jù)報(bào)文所對(duì)應(yīng)的結(jié)構(gòu)體中,其流程圖參看圖1的Hypersean匹配主要流程圖所示。
本次對(duì)比實(shí)驗(yàn)選取的正則表達(dá)式,既有純字符串,又有各種正則規(guī)則,測(cè)試運(yùn)行于Intel Xeon E5-2699@2.30GHz的單核上,選取本地隨機(jī)數(shù)據(jù)(750K)作輸入循環(huán)2000次。Hyperscan完成測(cè)試的用時(shí)以及吞吐量如表1:
從結(jié)果可見,采用此關(guān)鍵字匹配引擎處理網(wǎng)絡(luò)流量的吞吐量達(dá)到若干G以上,而完成所有規(guī)則匹配時(shí)間僅5秒不到。因此,在網(wǎng)絡(luò)場(chǎng)景中,同一規(guī)則庫往往需要匹配多條網(wǎng)絡(luò)流,而日夕伴rean的高擴(kuò)展性為此提供了有力的支持。同時(shí)可以看出,將日Lyperscan引擎用于對(duì)大學(xué)生上網(wǎng)行為數(shù)據(jù)的關(guān)鍵字檢測(cè)匹配是高效、準(zhǔn)確的可行方案。
參考文獻(xiàn)。
[1]黃光球,胡曉婷,劉通.基于突變理論的網(wǎng)絡(luò)異常行為分析方法[J].微電子學(xué)與計(jì)算機(jī),2006.
[2]李倫,李東,田志宏.一種針對(duì)大規(guī)模URL關(guān)鍵字的多模匹配算法[J].智能計(jì)算機(jī)與應(yīng)用,2o1).
[3]李建山高性能采集軟件關(guān)健技術(shù)研究和實(shí)現(xiàn)[D].北京郵電大學(xué),2017
[4]邰仕強(qiáng).基于運(yùn)營(yíng)商大數(shù)據(jù)和深度學(xué)習(xí)的OTT終端識(shí)別技術(shù)的研究與實(shí)現(xiàn)[D].南京郵電大學(xué),2019.