
本發明涉及網絡安全領域,特別是涉及一種基于特征自學習的加密流量識別方法及裝置。
背景技術:
:隨著網絡的不斷發展和普及,要求網絡監管機構能對各種網絡流量進行有效地識別、分類和控制,從而極大提高網絡管理的有效性和安全性。但是隨著網絡發展,流量出現的形式千變萬化,使得流量識別的復雜度也在提高,其中加密流量在網絡中占有相當大的比重,給流量識別帶來了新的挑戰。現有流量識別技術的缺陷包括:1、無法識別采用動態端口和常用協議端口的流量,一些應用軟件為了躲避檢測和監管,會采用隱藏或假冒端口號,如改用動態端口或常用協議端口,使得基于端口的識別方法準確率降低。2、上述方法通過對數據包的應用層數據進行特征匹配來識別流量,但是加密的流量其數據包內容不能明文訪問,使得無法提取特征,進而無法有效識別。3、逆向破解技術需要人工根據經驗進行分析,比較耗費人力,同時無法實現大規模處理。4、現有技術所使用的特征需要根據經驗提前進行人工抽取和選擇。隨著流量復雜度的提高,人工提取和選擇特征帶來的人力成本過高,尤其當流量數據規模很大時,也有由于主觀性帶來的所選特征不夠準確的問題。因此對加密流量進行識別逐漸成為亟需解決的問題,同時加密流量識別對網絡犯罪行為分析、輿情分析、國家信息安全等也具有重要意義。技術實現要素:為了克服上述現有技術的缺陷,本發明要解決的技術問題是提供一種基于特征自學習的加密流量識別方法及裝置,用以提高現有技術中加密流量的識別率。為解決上述技術問題,本發明中的一種基于特征自學習的加密流量識別方法,包括:將獲取的當前網絡流量數據包轉換為歸一化數值或歸一化灰度值;將所述當網網絡流量數據包對應的歸一化數值保存到文本文件中;或者將所述當網網絡流量數據包對應的歸一化灰度值生成灰度圖像,并保存到圖片文件中;將所述文本文件或所述圖片文件作為預先訓練得到的加密流量分類器的測試輸入;通過所述加密流量分類器識別所述當前網絡流量數據包的流量類型。為解決上述技術問題,本發明中的一種基于特征自學習的加密流量識別裝置,包括:預處理模塊,用于將獲取的當前網絡流量數據包轉換為歸一化數值或歸一化灰度值;存儲模塊,將所述當網網絡流量數據包對應的歸一化數值保存到文本文件中;或者將所述當網網絡流量數據包對應的歸一化灰度值生成灰度圖像,并保存到圖片文件中;識別模塊,用于將所述文本文件或所述圖片文件作為預先訓練得到的加密流量分類器的測試輸入;通過所述加密流量分類器識別所述當前網絡流量數據包的流量類型。本發明有益效果如下:本發明中方法及裝置可以有效識別加密流量,并具有高精準識別率,同時具有自動抽取特征和選擇特征的能力,也可以批量處理流量識別任務。附圖說明圖1是本發明實施例中一種可選地基于特征自學習的加密流量識別方法的具體流程圖;圖2是本發明實施例中一種訓練和測試預處理實施流程圖;圖3是本發明實施例中另一種訓練和測試預處理實施流程圖;圖4是本發明實施例中一種可選地加密流量識別方法訓練和測試階段的詳細流程圖;圖5是本發明實施例中算法實施過程的流程圖。具體實施方式為了解決現有技術提高現有技術中加密流量的識別率的問題,本發明提供了一種基于特征自學習的加密流量識別方法及裝置,以下結合附圖以及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不限定本發明。本發明實施例中一種基于特征自學習的加密流量識別方法,包括:將獲取的當前網絡流量數據包轉換為歸一化數值或歸一化灰度值;將所述當網網絡流量數據包對應的歸一化數值保存到文本文件中;或者將所述當網網絡流量數據包對應的歸一化灰度值生成灰度圖像,并保存到圖片文件中;將所述文本文件或所述圖片文件作為預先訓練得到的加密流量分類器的測試輸入;通過所述加密流量分類器識別所述當前網絡流量數據包的流量類型。其中,流量類型具體為網絡加密流量和網絡非加密流量。本發明實施例匯總方法能夠有效地識別網絡加密流量,對于特征不是很明顯的加密流量都有顯著效果,對提高實際流量識別準確率有很大的意義;同時,本發明提出的方法不需要任何人工干預就可以完成特征的自動抽取和選擇,極大減少了人力成本和人的主觀性對所選特征質量的影響,有效提高最終的識別準確率。具體說明本發明實施例,如圖1所示,本發明實施例中方法包括:S101,抓取待測加密流量數據,經預處理后作為測試輸入;S102,根據訓練得到的加密流量分類器確定屬于各流量類型的概率;S103,取概率最大的流量類型為最終預測結果。也就是說,本發明實施例中使用抓包工具獲取流量數據,經過跟圖2中所示測試預處理一樣的過程得到測試輸入數據,它包括多條待測試流量數據;將測試數據輸入已經訓練好的算法分類器,分類器會分析并計算出每條待測試數據屬于各個類別的概率,并將概率最大的類別作為最終結果。進一步說,所述當前網絡流量數據包為十六進制字符串;所述將獲取的當前網絡流量數據包轉換為歸一化數值,包括:將所述十六進制字符串中每兩位字符為一組,轉換為十進制數,然后進行歸一化,形成格式統一的數值;所述將獲取的當前網絡流量數據包轉換為歸一化灰度值,包括:將所述十六進制字符串中每兩位字符為一組,轉換為灰度值。其中,格式統一的數值為0~1之間的浮點數。詳細說明,如圖4所示,本發明實施例中方法分為訓練和測試兩個階段。其中訓練階段主要有訓練預處理、構建算法模型、生成分類器三個模塊;測試階段主要包括測試預處理和預測處理。(1)訓練預處理:通過抓包工具抓取應用樣本流量數據包作為原始數據,對原始數據的格式進行統一處理并歸一化,并人工標記應用類別,將其保存為文本格式文件,文本文件中每一行表示一個流量包。原始數據各個類別樣本數量不均衡,通過人工根據經驗篩選樣本進行數量均衡,同時降低計算復雜度。具體實現方式一如圖2所示,上述原始數據是以文本形式保存的連續的十六進制字符串數據流量包,需要將其每兩位為一組轉換成十進制數值,轉換后的十進制數值范圍為0~255,再進行歸一化處理為0~1之間的浮點數,歸一化是為了使數值都介于一定范圍之內,同時也可簡化計算。具體實現方式二如圖3所示,使用抓包工具獲取網絡流量數據包,每個包是一串連續的十六進制字符串。將這個字符串每兩位十六進制字符為一組,轉換為一個0~255的灰度值,生成對應灰度圖像,并保存到.jpg文件中。(2)構建算法模型:本發明采用卷積神經網絡(CNN)構建算法模型,它可以通過學習一種深層的非線性網絡結構來彌補淺層特征學習方法的不足,展現了強大的特征學習能力。CNN的特征抽取和特征選擇與其他分類算法相比其過程是透明的且無需人工參與。而CNN模型的稀疏連接和權值共享兩個特點可以減少神經網絡的訓練參數,使神經網絡結構變得更簡單,同時降低了指數級的計算量,適應性變得更強。訓練過程中卷積層和采樣層交叉進行,整個過程依次包括有輸入層、卷積層、采樣層、卷積層、采樣層、輸出層共六層網絡。在開始訓練前,所有的權重都用一些不同的小隨機數進行初始化。其中核函數的大小在訓練過程中不斷進行調整,當損失函數最小時達到最優。(3)生成加密流量分類器:通過構建算法模型過程中的多次迭代,最終獲得了最佳連接權重值,這樣就學習到一個最優分類器。(4)測試預處理:和訓練預處理的處理過程是一樣的,唯一不同的是訓練預處理需要保存數據的標簽,而測試預處理本來就不知道類別,也就無類別標簽可保存。(5)預測處理:根據訓練構建的分類器為測試樣本預測類別,并保存測試結果。也就是說,所述將獲取的當前網絡流量數據包轉換為歸一化數值或歸一化灰度值之前,還包括:獲取至少兩種流量類型的網絡流量數據包樣本;采用卷積神經網絡模型訓練所述網絡流量數據包樣本,學習所述模型的訓練參數,生成加密流量分類器。其中,訓練過程中的具體實現流程如圖4所示。具體說,CNN算法共有六層,除輸入層外,每層都包含可訓練參數(連接權重)。進一步說,所述卷積神經網絡模型包括輸入層、第一卷積層、第一采樣層、第二卷積層、第二采樣層和輸出層;所述輸入層為M*M的二維矩陣;M是由上述十六進制每兩位一組劃分后的總組數的開方,比如288位十六進制劃分后就是144組,即M=12(M*M=144))。至于選取多少字節的十六進制,是經過反復試驗測試,選取使模型結果最優的字節數,說明此長度的字節數既沒有信息丟失也沒有冗余。所述第一卷積層有m個第一特征圖,每個所述第一特征圖中每個神經元與所述輸入層中a*a的鄰域相連;所述第一特征圖的大小為(M-a+1)*(M-a+1);所述第一采樣層有m個N*N的第二特征圖,每個所述第二特征圖中每個單元與所述第一特征圖的b*b鄰域連接;所述第二特征圖大小是所述第一特征圖的1/(b*b);所述第二卷積層通過n個c*c的卷積核去所述第一卷積層,得到n個(N-c+1)*(N-c+1)大小的第三特征圖;所述第二采樣層有n個P*P大小的第四特征圖構成;每個所述第四特征圖中每個神經元與所述第二卷積層的d*d鄰域相連;所述輸出層是一個全連接卷積層,所述輸出層具有跟流量類型數相等的多個單元,每個單元與所述第二采樣層的n個特征圖連接;其中,a、m、b、n、c、P和d均為訓練參數。詳細說,輸入層是一個M*M大小的二維矩陣。C1層為一個卷積層,由m個特征圖FeatureMap構成。特征圖中每個神經元與輸入中a*a的鄰域相連。特征圖大小為(M-a+1)*(M-a+1)。S2層是一個下采樣層,下采樣即對圖像進行子抽樣,可以減少數據處理量同時保留有用信息。S2有m個N*N的特征圖,特征圖中每個單元與C1中相對應特征圖的b*b鄰域連接。S2中每個特征圖大小是C1中的1/(b*b).C3層又是一個卷積層,它通過n個c*c的卷積核去卷積層S2,然后得到n個(N-c+1)*(N-c+1)大小的特征圖Featuremap。S4是一個下采樣層,有n個P*P大小的特征圖構成。特征圖中每個神經元與C3中相應特征圖的d*d鄰域相連,跟C1和S2之間的連接一樣。輸出層是一個全連接卷積層,即S4層到輸出層是全連接層,卷積核大小和上一層核大小一樣,最終生成跟類別數相等的多個單元,每個類別一個單元。每個單元與上一層的n個特征圖連接。訓練過程中除了輸出層外每層的參數都是根據反復實驗、測試所得,根據經驗在一定范圍進行調優,選取使結果最優的參數。其中,各參數范圍如下:M:8~32;m:6~8;a:2~4;b:2~4;N=(M-a+!)*(M-a+1)/(b*b);n:6~8;c:2~4;d::2~4;P=(N-c+1)*(N-c+1)/(d*d)。本發明提出的基于特征自學習的加密流量識別方法,能夠有效地識別網絡加密流量,對于特征不是很明顯的加密流量都有顯著效果,對提高實際流量識別準確率有很大的意義;同時,本發明提出的方法不需要任何人工干預就可以完成特征的自動抽取和選擇,極大減少了人力成本和人的主觀性對所選特征質量的影響,也可以一定程度上提高最終的識別準確率。為了驗證本發明提出方法的有效性,以實驗中對自由門和非自由門(包括暴風、風行、酷狗、迅雷、皮皮影音等)的加密流量進行了捕獲分析為例,以識別是否是自由門為目標,即最終目標是解決一個二分類問題。實驗中的訓練集和測試集數據規模如下表:表(1)數據規模數據集規模訓練集210848(free占比50%)測試集52712(free占比50%)從表中可見,訓練集和測試集中自由門和非自由門樣本的數量分別占比50%,這樣可以保證不同類別下樣本量的均衡性,使最終結果更符合客觀規律,更準確?;谏鲜鲇柧毤蜏y試集,采用3.2中所述的流程進行訓練和測試,實驗結果如下表:表(2)實驗結果數據上表中第一行是算法輸入所取字節數,用于構建CNN算法模型,實驗證明當流量數據取前288字節時效果最好,準確率為72.63%,耗時約3.5分鐘。第一列是各個指標參數,本發明算法進行了四次迭代,表中列出了當取不同字節時每次迭代后模型精度的變化情況,可見隨著迭代次數增加,精度也在提高。Precise行是測試的準確率結果,Elapsedtime是所耗費時間。本發明實驗數據雖然是針對自由門和迅雷等加密流的,但經分析和推斷,其結果的有效性也同樣適用于翻墻路由器、無界一點通和火鳳凰等的加密流量識別,同時在特征比較明顯的普通協議識別上效果更明顯。本發明進一步提出一種基于特征自學習的加密流量識別裝置。本發明實施例中一種基于特征自學習的加密流量識別裝置,包括:預處理模塊,用于將獲取的當前網絡流量數據包轉換為歸一化數值或歸一化灰度值;存儲模塊,將所述當網網絡流量數據包對應的歸一化數值保存到文本文件中;或者將所述當網網絡流量數據包對應的歸一化灰度值生成灰度圖像,并保存到圖片文件中;識別模塊,用于將所述文本文件或所述圖片文件作為預先訓練得到的加密流量分類器的測試輸入;通過所述加密流量分類器識別所述當前網絡流量數據包的流量類型。進一步說,所述當前網絡流量數據包為十六進制字符串;所述將獲取的當前網絡流量數據包轉換為歸一化數值,包括:將所述十六進制字符串中每兩位字符為一組,轉換為十進制數,然后進行歸一化,形成格式統一的數值;所述將獲取的當前網絡流量數據包轉換為歸一化灰度值,包括:將所述十六進制字符串中每兩位字符為一組,轉換為灰度值。具體說,格式統一的數值為0~1之間的浮點數。進一步說,所述裝置還包括:訓練模塊,用于用于獲取至少兩種流量類型的網絡流量數據包樣本;采用卷積神經網絡算法訓練獲取并經預處理后的網絡流量數據包樣本,學習所述相關參數,訓練生成加密流量分類器。具體說,所述卷積神經網絡模型包括輸入層、第一卷積層、第一采樣層、第二卷積層、第二采樣層和輸出層;所述輸入層為M*M的二維矩陣;所述第一卷積層有m個第一特征圖,每個所述第一特征圖中每個神經元與所述輸入層中a*a的鄰域相連;所述第一特征圖的大小為(M-a+1)*(M-a+1);所述第一采樣層有m個N*N的第二特征圖,每個所述第二特征圖中每個單元與所述第一特征圖的b*b鄰域連接;所述第二特征圖大小是所述第一特征圖的1/(b*b);所述第二卷積層通過n個c*c的卷積核去所述第一卷積層,得到n個(N-c+1)*(N-c+1)大小的第三特征圖;所述第二采樣層有n個P*P大小的第四特征圖構成;每個所述第四特征圖中每個神經元與所述第二卷積層的d*d鄰域相連;所述輸出層是一個全連接卷積層,所述輸出層具有跟流量類型數相等的多個單元,每個單元與所述第二采樣層的n個特征圖連接;其中,M、a、m、b、n、c、P、d均為訓練參數。訓練過程中除了輸出層外每層的參數都是根據反復實驗、測試所得,根據經驗在一定范圍進行調優,選取使結果最優的參數。其中:各參數范圍如下:M:8~32;m:6~8;a:2~4;b:2~4;N=(M-a+!)*(M-a+1)/(b*b);n:6~8;c:2~4;d::2~4;P=(N-c+1)*(N-c+1)/(d*d)。進一步說,本發明實施例中裝置還可以包括計算模塊:訓練階段主要用于算法參數的調整,如構建網絡過程中連接權重的更新等;測試階段主要是使用訓練好的分類器為每條待測數據計算類別概率。本發明實施例中裝置能夠有效地識別網絡加密流量,對于特征不是很明顯的加密流量都有顯著效果,對提高實際流量識別準確率有很大的意義;同時,本發明提出的方法不需要任何人工干預就可以完成特征的自動抽取和選擇,極大減少了人力成本和人的主觀性對所選特征質量的影響,有效提高最終的識別準確率。雖然本申請描述了本發明的特定示例,但本領域技術人員可以在不脫離本發明概念的基礎上設計出來本發明的變型。本領域技術人員在本發明技術構思的啟發下,在不脫離本
發明內容的基礎上,還可以對本發明做出各種改進,這仍落在本發明的保護范圍之內。當前第1頁1 2 3