劉金鵬
摘 要:信息化時代,互聯(lián)網(wǎng)在社會生活生產(chǎn)中的地位愈發(fā)重要。網(wǎng)絡(luò)安全事關(guān)社會穩(wěn)定、國家安全。網(wǎng)絡(luò)安全技術(shù)與機器學習技術(shù)的結(jié)合,為網(wǎng)絡(luò)安全技術(shù)的發(fā)展提供了新的思路和方向,是值得深入探討和研究的。論文旨在針對現(xiàn)今機器學習技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域的應用和研究進行介紹。主要探討了循環(huán)神經(jīng)網(wǎng)絡(luò)用于探測網(wǎng)絡(luò)攻擊數(shù)據(jù),聚類算法用于排查異常輸入, 強化學習應用于網(wǎng)絡(luò)安全性檢測的技術(shù)原理,實現(xiàn)的可行性等內(nèi)容,并對未來可能的發(fā)展方向做一展望。
關(guān)鍵詞:網(wǎng)絡(luò)安全;機器學習;人工智能
中圖分類號:TP309 文獻標識碼:A
Abstract: In the information era, The Internet plays a more important place in our live and our work. The security of the network is concerned with the Social stability and national security. The combination of network security and the Machine Learning technology provides new research directions for the network security protection, which is worthy to be discussed and researched. This article aims at an overview of the application of network security technology based on Machine Learning, and give an outlook on the development of Machine Learning in the future.
Key words: network security; machine learning; artificial intelligence
1 引言
近年來,隨著計算機相關(guān)技術(shù)的高速發(fā)展、數(shù)據(jù)量的爆發(fā)式增長,以及計算機運算能力的逐步提升,基于機器學習技術(shù)的人工智能得到了長足發(fā)展的基礎(chǔ)?;跈C器學習的新算法的出現(xiàn),更加推動了人工智能應用的大爆發(fā)。國家也將人工智能技術(shù)提高到國家發(fā)展戰(zhàn)略的重要高度。2017年國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》(國發(fā)〔2017〕35號文件),提出了面向2030年我國新一代人工智能發(fā)展的指導思想、戰(zhàn)略目標、重點任務(wù)和保障措施,部署構(gòu)筑我國人工智能發(fā)展的先發(fā)優(yōu)勢,加快建設(shè)創(chuàng)新型國家和世界科技強國。目前,人工智能技術(shù)在圖像識別、自然語言處理、語音翻譯、視頻內(nèi)容識別等方面都有了實際的應用場景,并取得了良好的效果。因此,探索在網(wǎng)絡(luò)安全領(lǐng)域使用基于機器學習的人工智能技術(shù)具有重要的現(xiàn)實意義。
2 概述
2.1 機器學習與人工智能
人工智能技術(shù)是一個較為寬泛的范疇,泛指由人工制造出來的系統(tǒng)所表現(xiàn)出來的智能。通常所說人工智能,是指通過普通電腦實現(xiàn)的智能,其有很多不同的研究方向和分支。機器學習是人工智能的一個分支,是實現(xiàn)人工智能的一種途徑。它以數(shù)據(jù),或者稱為“知識”為基礎(chǔ),以“學習”為手段解決人工智能中的問題。機器學習在近30多年已發(fā)展為一門多領(lǐng)域交叉學科,涉及概率論、統(tǒng)計學、逼近論、凸分析、計算復雜性理論等多門學科。其最基本的做法,是使用算法來解析數(shù)據(jù)、從中學習規(guī)律,然后對真實世界中的事件做出決策和預測。機器學習與傳統(tǒng)意義上為解決特定任務(wù)而編寫的軟件程序不同。傳統(tǒng)軟件是由程序員使用計算機語言來描述給定的輸入與預期的輸出之間的數(shù)學或邏輯關(guān)系;而機器學習是用大量的數(shù)據(jù)來“訓練”一個數(shù)學模型,使其通過各種算法從數(shù)據(jù)中學習到給定輸入與預期輸出之間的關(guān)系,從而能夠?qū)π陆o出的輸入數(shù)據(jù)做出正確的響應,完成預期的功能。
2.2 網(wǎng)絡(luò)攻擊
自上世紀80年代互聯(lián)網(wǎng)技術(shù)誕生以來,網(wǎng)絡(luò)為人類提供了工作生活工作的便利。同時,隨著網(wǎng)路技術(shù)的高速進步,也伴生著針對互聯(lián)網(wǎng)的各種網(wǎng)絡(luò)攻擊技術(shù)的發(fā)展。近年來,各類網(wǎng)絡(luò)安全事件和網(wǎng)絡(luò)攻擊事件頻發(fā)。如2016年10月由惡意軟件控制的僵尸網(wǎng)絡(luò)發(fā)起的拒絕服務(wù)(DDoS)攻擊,造成美國東海岸大范圍斷網(wǎng);2017年5月爆發(fā)的勒索病毒軟件,造成全球數(shù)十萬用戶電腦資料被加密。網(wǎng)絡(luò)攻擊已經(jīng)逐步從黑客個人對技術(shù)的嘗試性挑戰(zhàn),發(fā)展為帶有明確經(jīng)濟政治目的的行為。網(wǎng)絡(luò)空間的安全關(guān)系著社會的穩(wěn)定和國家的安全,因此網(wǎng)絡(luò)安全受到國家、學術(shù)界及工業(yè)領(lǐng)域的高度重視。
網(wǎng)絡(luò)攻擊從攻擊目標上分類,大致可分為四個類型:拒絕服務(wù)攻擊(DDoS)、利用型攻擊、信息收集型攻擊(Information Gathering)、假消息攻擊,如表1所述。
表1所述攻擊方式,雖然大部分都有有效的防御手段,但攻擊技術(shù)每天都在不斷的發(fā)展,即使對于已知的攻擊方式也有百密一疏的時候,因此網(wǎng)絡(luò)安全是一個需要長期重視的課題。
3 人工智能技術(shù)在網(wǎng)絡(luò)攻擊探測方面的應用場景
3.1 深度學習用于分析網(wǎng)絡(luò)訪問數(shù)據(jù)流
深度學習是機器學習的一個分支,它使用由非常多個神經(jīng)元組成的多層網(wǎng)絡(luò)結(jié)構(gòu)來擬合目標函數(shù)。只要神經(jīng)元的個數(shù)及網(wǎng)絡(luò)的層次足夠多,理論上可以擬合任意函數(shù)。神經(jīng)元是神經(jīng)網(wǎng)絡(luò)中的基本運算單元,由線性運算和非線性運算部分組成。例如,圖1為一個神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元。
其中,a1、a2、a3為這個神經(jīng)元的輸入。他們可能是整個神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù),也可能是神經(jīng)網(wǎng)絡(luò)中上一層神經(jīng)元的輸出數(shù)據(jù)作為這個神經(jīng)元的輸入。w1、w2、w3分別為a1、a2、a3的權(quán)重,Z是這個神經(jīng)元的輸出。他們之間的關(guān)系為:
g稱為激活函數(shù),實現(xiàn)非線性變化。如果沒有激活函數(shù),純線性運算的神經(jīng)元相互疊加后,依然還是線性運算,不具備擬合非線性函數(shù)的能力。常用的激活函數(shù)有Relu、Tanh、Sigmoid等。
通過多個神經(jīng)元多層次的疊加所組成的神經(jīng)網(wǎng)絡(luò)模型有較強的擬合能力,但其輸入數(shù)據(jù)之間通常是沒有時間的先后關(guān)系的。而網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)流,通常與時間的先后有關(guān)。例如,某個IP對80端口的http協(xié)議發(fā)送POST請求是否是一種試探性的攻擊,并不能單獨從這一次請求的數(shù)據(jù)中確定,通常需要根據(jù)此IP之前的行為來推測。如果之前曾連續(xù)數(shù)百次向80端口發(fā)送http協(xié)議的POST請求,且POST內(nèi)容相近,則懷疑可能是某種錯誤注入或掃描的嘗試。這種需要考慮輸入數(shù)據(jù)的時序關(guān)系的場景,就較適合使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。
循環(huán)神經(jīng)網(wǎng)絡(luò)將t時刻的網(wǎng)絡(luò)隱藏層輸出數(shù)據(jù)作為中間數(shù)據(jù),在t+1時刻連同t+1時刻的輸入數(shù)據(jù)一同傳送給神經(jīng)網(wǎng)絡(luò),從而實現(xiàn)t+1時刻的輸出會受到t時刻輸入數(shù)據(jù)影響的效果。以此類推,t+2時刻的輸出數(shù)據(jù)也受到t+1時刻及t時刻的輸入數(shù)據(jù)影響,即,t+n時刻的輸出取決于t+n時刻及t+n之前所有輸入的影響,如圖2所示。
當黑客試圖攻擊一臺服務(wù)器時,經(jīng)常會對直接暴露在互聯(lián)網(wǎng)上的服務(wù)器進行掃描,以收集必要的信息。例如,對服務(wù)器的端口進行掃描,以獲知服務(wù)器上都開啟了哪些服務(wù),其中是否有可以利用的缺陷或漏洞;或通過向某服務(wù)端口發(fā)送各種請求,分析其響應數(shù)據(jù),根據(jù)特征來判斷運行該服務(wù)的軟件或操作系統(tǒng)的版本信息,進而嘗試通過該系統(tǒng)的某種特殊的漏洞來進行攻擊。由于掃描操作的實質(zhì)還是攻擊者向服務(wù)器發(fā)送合法的請求,通過服務(wù)器的響應來判斷或猜測服務(wù)器的信息。作為服務(wù)器端的軟件,很難將正常用戶的合法請求和攻擊者發(fā)來的用以探知服務(wù)器信息的合法請求區(qū)別開來。
然而,攻擊者對服務(wù)器的掃描,必然和普通用戶的訪問是存在差異的。只是很難用編程的方式清晰的描述出這種差異,這時候,就是最適合深度神經(jīng)網(wǎng)絡(luò)發(fā)揮作用的場景了。此時可以將網(wǎng)絡(luò)中的數(shù)據(jù)流作為循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)輸入。由于循環(huán)神經(jīng)網(wǎng)絡(luò)的特性,可以很好地根據(jù)接受到的數(shù)據(jù)序列,判斷當前的數(shù)據(jù)流屬于什么操作(正常訪問或惡意攻擊),進而根據(jù)分類結(jié)果進行采取必要的防范措施。
例如,圖3是使用Nmap工具對一臺服務(wù)器掃描的log。
圖4是從服務(wù)器端看到的數(shù)據(jù)流。
可以看到,攻擊者依次對目標服務(wù)器的每一個端口請求連接,然后發(fā)現(xiàn)了一些開啟的端口。這時使用循環(huán)神經(jīng)網(wǎng)絡(luò),對這個過程進行學習。學習后神經(jīng)網(wǎng)絡(luò)將能夠根據(jù)當前數(shù)據(jù)的特征,預測次操作是正常訪問還是網(wǎng)絡(luò)攻擊。
例如,發(fā)現(xiàn)某IP地址連續(xù)對1、2、3、4、5端口發(fā)起連接請求,神經(jīng)網(wǎng)絡(luò)根據(jù)學習過的數(shù)萬組數(shù)據(jù)判斷,此IP準備進行網(wǎng)絡(luò)攻擊的概率為5%。(可以簡單理解為:神經(jīng)網(wǎng)絡(luò)學習過的數(shù)據(jù)集里,所有掃描過1、2、3、4、5端口的操作中,只有5%在后續(xù)操作中表現(xiàn)為網(wǎng)絡(luò)攻擊,其余都是正常訪問。)進而,該IP地址進一步掃描完5000個端口后,神經(jīng)網(wǎng)絡(luò)判斷此IP企圖網(wǎng)絡(luò)攻擊的概率增加到70%。根據(jù)神經(jīng)網(wǎng)絡(luò)給出的概率,管理員可以酌情進行干預,如確認權(quán)限、延時響應甚至拒絕訪問等。
3.2無監(jiān)督學習用于發(fā)現(xiàn)未知的攻擊方式
使用有監(jiān)督的深度學習,雖然可以很好的甄別出攻擊者對服務(wù)器的攻擊操作,但仍有兩個缺點。
第一,有監(jiān)督學習需要大量的有標記數(shù)據(jù)作為樣本提供給深度學習網(wǎng)絡(luò)。而標記數(shù)據(jù)的過程需要大量人工參與,涉及到人力和資金投入。如圖5所示,人工標記數(shù)據(jù)的過程容易成為整個工作的瓶頸。
第二,有監(jiān)督學習由于是根據(jù)既往的數(shù)據(jù)歸納總結(jié)規(guī)律,因此必然無法識別新的攻擊手段,如圖6所示。
即使對于已有的網(wǎng)絡(luò)攻擊模式,由于樣本數(shù)量和學習時間及資源的限制,有監(jiān)督學習也不可能學習到自從互聯(lián)網(wǎng)問世到現(xiàn)在的所有攻擊手段,只能夠針對常見的、高發(fā)的、危害性較大的攻擊方法進行學習。因此如果攻擊者使用較為少見的攻擊方式,有可能無法被識別。
相對于有監(jiān)督學習,無監(jiān)督學習模式則沒有上述問題。無監(jiān)督學習是指模型直接從無標簽的數(shù)據(jù)中歸納總結(jié)規(guī)律的算法,如圖7所示。無監(jiān)督學習通常用于完成數(shù)據(jù)的分類,異常數(shù)據(jù)點的檢測等任務(wù)。常見的無監(jiān)督學習算法有主成分分析(PCA)、聚類(Cluster Analysis)、自編碼器(Autoencoder)等。
以常見的SQL注入攻擊為例。如果程序員在Web開發(fā)時,沒有過濾敏感字符,或過濾規(guī)則不夠完備,導致攻擊者可以通過正常的輸入用戶名、密碼之類的輸入框,輸入通過精心設(shè)計的字符串,繞過Web界面,直接執(zhí)行數(shù)據(jù)庫或系統(tǒng)的命令,從而獲取服務(wù)器重要信息甚至獲得管理員權(quán)限。
假設(shè)某網(wǎng)站W(wǎng)eb頁面使用Php語言編寫,其中有頁面根據(jù)用戶名查詢用戶信息。在數(shù)據(jù)庫中查找用戶的語句如下:
$query = "SELECT * FROM users WHERE username = ",$iName
其中,$iName是輸入?yún)?shù),通過Post方法傳入,其值為用戶輸入的用戶名。
對于一個正常的用戶操作,輸入用戶名“bob”,最終傳輸給數(shù)據(jù)庫的查詢指令是這樣的:
SELECT * FROM users WHERE username = bob
但是如果攻擊者輸入的用戶名為:bob OR 1=1,且網(wǎng)頁沒有做任何過濾,就對導致最終傳給數(shù)據(jù)庫的查詢指令為:
SELECT * FROM users WHERE username = bob OR 1=1
這里,WHERE后面是一個“或”關(guān)系的兩個表達式,任意一個為真則整體表達式為真。而1=1是永遠為真的,這就導致數(shù)據(jù)庫返回了所有用戶的信息,而不只是要查詢的bob用戶。
那么我們?nèi)绾卫梅潜O(jiān)督學習來預防這樣的攻擊呢?我們先來列出一些用戶可能在這個頁面輸入的用戶名:
Kimmy N
Nancy1992
Tom
Linkg_ding
PolKKND
Frank
bob OR 1=1
ZhangYN
Cdkids october
Alice
Kiya
當這些輸入的用戶名放在一起時,即使沒有相關(guān)專業(yè)知識的人一眼看過去,也會感覺到bob OR 1=1這一項與其他項的差異較大。我們根據(jù)類似的原理,使用無監(jiān)督學習進行孤立探測排除其中的差異項。
孤立探測有多種算法,基于高斯概率模型,基于距離算法,基于聚類的算法等等。我們以聚類算法舉例,聚類算法用來對數(shù)據(jù)進行分類,是一種統(tǒng)計分析方法。通常將每項數(shù)據(jù)映射為多維空間的點,通過迭代計算質(zhì)心點位置對所有數(shù)據(jù)盡進行分類。例如,二維平面上有n個數(shù)據(jù)點如圖8所示。
在圖中任意取兩個點A和B,計算每個數(shù)據(jù)點到點A和點B的歐式距離。距離A點近的分為A類,距離B點近的分為B類,如圖9所示。
全部分類之后,計算所有A類點的質(zhì)心點A1,所有B類點的質(zhì)心點B1,移動A、B兩點,另A=A1.B=B1,然后重復分類過程。如此迭代n輪之后,A,B兩點將不再移動,最終分類結(jié)果如圖10所示。藍色點為一類,紅色點位另一類。可以看到算法正確的將兩個數(shù)據(jù)異常點與其他數(shù)據(jù)區(qū)分開來。以上為聚類算法中較為簡單的K-means聚類。這里為了直觀使用了二維數(shù)據(jù),同理可擴展到N維數(shù)據(jù)。在實際應用中,數(shù)據(jù)通常是較大維度的。如何將原始數(shù)據(jù)映射為n維數(shù)據(jù)點,也是我們需要仔細考慮的過程。
就上面說到的SQL注入攻擊來說,可以將用戶名映射為n維數(shù)據(jù)點,然后使用聚類算法,將最新輸入過的1000個用戶名使用K-means算法分為兩類。(這里1000個僅為舉例,實際根據(jù)分類的精準度和運算速度來取合適的值)由于K-means算法的特點,分類不會失敗,無論數(shù)據(jù)分布情況如何,總能分為兩類。我們可以根據(jù)分類后的數(shù)據(jù)情況來判斷,通常情況下,沒有異常數(shù)據(jù)點的話兩類數(shù)據(jù)點的個數(shù)應該大致相同。如果有異常數(shù)據(jù)點,則異常點將被分做一類,其余數(shù)據(jù)一類。這樣,我們就可以在沒有任何先驗數(shù)據(jù)的前提下,對攻擊者的注入式攻擊進行預警,而且這種預警是動態(tài)的,他并不關(guān)心什么樣的輸入才是攻擊,而只管找出“和大多數(shù)不一樣”的輸入。
3.3 強化學習對網(wǎng)絡(luò)安全性的測試
強化學習是通過構(gòu)建一個智能體(Agent),使其與環(huán)境(Environment)進行交互,并從中學習的一種學習方式。智能體可以獲得環(huán)境的當前狀態(tài),并根據(jù)當前狀態(tài)進行動作(Action)。智能體的動作將影響環(huán)境下一時刻的狀態(tài)。隨著環(huán)境狀態(tài)的改變,智能體將得到反饋(Reward)。如果環(huán)境朝著期望的狀態(tài)改變,智能體將得到正向反饋,反之得到負反饋。通過與環(huán)境的這種反復交互,期望智能體最終能夠習得根據(jù)環(huán)境做出最優(yōu)解的動作,以獲得最大回報,如圖11所示。
Agent可以通過學習策略函數(shù)π來獲得在給定狀態(tài)s時,動作集上的函數(shù)分布。
或者也可以學習值函數(shù)V,根據(jù)給定狀態(tài)s和動作a,獲得未來狀態(tài)優(yōu)良度的評估,從而間接輔助選擇動作a,使得所選擇的a導致未來狀態(tài)向良性發(fā)展。
學習值函數(shù)或策略函數(shù)的實現(xiàn)方式可根據(jù)實際情況選擇不同的方法。對于整體系統(tǒng)較為簡單,狀態(tài)S有限的環(huán)境,可以使用Q-table方式實現(xiàn)。對于較復雜的系統(tǒng),人們將其與機器學習相結(jié)合,使用深度神經(jīng)網(wǎng)絡(luò)來擬合策略函數(shù)或者價值函數(shù)。強化學習常被使用在游戲領(lǐng)域及自動化控制領(lǐng)域,如無人車、機器人等。
強化學習同樣屬于無監(jiān)督學習過程,它不需要事先準備帶有標簽的數(shù)據(jù),而是自己從環(huán)境中總結(jié)規(guī)律。這對于自動化控制領(lǐng)域是一個劣勢,因為要從真實的物理環(huán)境中學習,時間成本會大大增加。(當然現(xiàn)在也在探索使用電腦模擬物理環(huán)境進行學習的技術(shù),可以一定程度上提高學習速度。但由于模擬環(huán)境畢竟與真實環(huán)境有差異,最終還是需要在真實環(huán)境中學習。)但對于網(wǎng)絡(luò)安全領(lǐng)域,環(huán)境本身就是數(shù)字化的。網(wǎng)絡(luò)的吞吐量,服務(wù)進程運行狀態(tài),資源占用等情況,都可以輕易的提供給神經(jīng)網(wǎng)絡(luò)進行學習,學習時間上并沒有比其他學習方式有明顯差異。
強化學習已有被用來進行網(wǎng)絡(luò)攻擊的案例。從另一方面想,也可以利用強化學習來檢測網(wǎng)絡(luò)的安全性,排查服務(wù)器的漏洞。使用深度神經(jīng)網(wǎng)絡(luò)模型進行學習,以服務(wù)器狀態(tài)作為環(huán)境狀態(tài),以攻擊服務(wù)器獲取權(quán)限或影響其正常運轉(zhuǎn)作為目標進行訓練。神經(jīng)網(wǎng)絡(luò)學習的過程,也就是它尋找服務(wù)器漏洞的過程。深度神經(jīng)網(wǎng)絡(luò)可以反復不停的試探對目標的攻擊,并且,它的試探并不是無目的的遍歷,而是逐步根據(jù)服務(wù)器給出的響應,總結(jié)規(guī)律,有方向有目標的嘗試攻擊目標。
使用強化學習的優(yōu)勢還體現(xiàn)在可以隨著服務(wù)器軟件版本的升級而隨時改變自身的攻擊策略,持續(xù)發(fā)揮作用。每次神經(jīng)網(wǎng)絡(luò)的動作都會得到響應的反饋,如果服務(wù)器的軟件更新升級,得到的響應不同,反饋數(shù)據(jù)也會不一樣。這將會導致神經(jīng)網(wǎng)絡(luò)參數(shù)更新,使其自動調(diào)整行為以適應新的環(huán)境。這避免了有監(jiān)督學習中,在數(shù)據(jù)分布特征變化的時候必須重新訓練網(wǎng)絡(luò)的問題。
4 結(jié)束語
機器學習、神經(jīng)網(wǎng)絡(luò)等人工智能技術(shù)已在眾多領(lǐng)域中發(fā)揮作用,深入到我們生活工作的方方面面。同時,我們也看到人工智能技術(shù)現(xiàn)有的一些局限性。例如其可解釋性差,很多時候雖然可根據(jù)統(tǒng)計學原理確定人工智能的預測或判斷是有效的,但具體到針對某一組數(shù)據(jù)的預測或判斷,我們難以準確了解其做出預測或判斷的依據(jù)。因此,目前在需要高可靠性的領(lǐng)域,人工智能模型通常只作為參考,而不起決定作用。
將機器學習、神經(jīng)網(wǎng)絡(luò)技術(shù)應用在網(wǎng)絡(luò)安全領(lǐng)域,對于提高網(wǎng)絡(luò)安全性,減少網(wǎng)絡(luò)維護成本,有著積極的意義。人工智能與各傳統(tǒng)行業(yè)的結(jié)合,已經(jīng)產(chǎn)生出很多可觀的成果。在網(wǎng)絡(luò)安全領(lǐng)域應用機器學習技術(shù),必將為網(wǎng)絡(luò)安全技術(shù)帶來新的發(fā)展方向,引領(lǐng)網(wǎng)絡(luò)安全進入新的發(fā)展階段。另一方面,應用人工智能技術(shù)進行網(wǎng)絡(luò)攻擊的手段也已出現(xiàn)。未來,網(wǎng)絡(luò)攻擊與防御將是兩方人工智能技術(shù)的比拼。因此,將機器學習應用于網(wǎng)絡(luò)安全中是有益且有必要的,機器學習必將引領(lǐng)網(wǎng)絡(luò)安全技術(shù)獲得長足的進步。
參考文獻
[1] 周志華,王玨.機器學習及其應用2009[M].北京:清華大學出版社,2009.
[2] 張蕾,崔勇,劉靜,江勇,吳建平.機器學習在網(wǎng)絡(luò)空間安全研究中的應用[J].計算機學報,2018.
[3] 伊恩·古德費洛,約書亞·本吉奧.深度學習[M].北京:人民郵電出版社.
[4] Alpaydin E.Introduction to Machine Learning (Adaptive Computation and Machine Learning)[M].MIT Press,2004.