喻波,王志海,孫亞東,謝福進,安鵬
(北京明朝萬達科技股份有限公司,北京 100876)
伴隨大數據時代來臨,數據同土地、勞動力一樣列入生產要素之一,為加快培育數據要素市場,數據安全防護是基礎保障[1]。由于業務場景復雜多變、數據量持續增長,基于數據流的信息化架構演進對數據安全防護提出了更高要求。傳統的數據安全防護措施難以適應新時代架構復雜、場景多樣、數據海量、交互頻繁的“大物移云智”環境。在數據安全領域,可以把管控場景劃分為強管控、中管控、弱管控3種場景。針對強管控場景,在數據傳輸、數據存儲等環節采取全量數據加密手段,可以解決強管控場景的安全訴求。但是在更為普遍的中管控場景,敏感數據與非敏感數據混合使用,如果采用強管控,必然對操作效率造成影響,但如果弱管控,又會造成敏感數據泄露。因此中管控場景,識別敏感數據與異常行為是目前數據安全領域研究的重要問題。
近年來企業內部人員竊取數據事件頻發,如銀行內部人員竊取、販賣上萬條用戶信息,根據Gartner的調查結果[2],內部人員竊取敏感數據、盜用賬號等行為已經成為企業數據泄露的最主要原因。由于內部人員具備企業數據資產的合法訪問權限,且了解企業敏感數據的存放位置,因此內部人員在合法外衣的保護下,自由地游走在企業內網,進行長期而隱蔽的數據竊取行為。
導致上述現象的根本原因是企業經營活動復雜、業務系統多、數據規模大,無法窮舉人員、終端、應用、數據之間多對多的使用與訪問規則,從而為內部惡意人員留下了巨大的非法活動空間。這種情況下,安全部門只能把管控重點放在已知的、規則明確的安全威脅上,導致內部人員長期、隱蔽數據竊取行為發現難,數據泄露事件依然層出不窮[3-5]。
因此,研究文檔分類分級技術,識別需要重點保護的敏感數據;研究用戶異常行為分析技術,識別用戶異常操作,是解決內網數據泄露的重要課題。
根據數據安全治理理論,數據安全防護的基礎是識別數據資產、分級分類數據資產,只有明確了數據保護對象及安全等級,才能對數據實施按需防護,避免一刀切式的靜態防御,促進數據的安全流通與共享。
在數據資產的識別過程中,按載體形態差異其識別方式也存在不同,數據按載體形態主要劃分為結構化數據與非結構化數據兩類。針對結構化數據,數據集中承載在數據庫中,可以通過元數據的精確定義,較為直接地進行數據資產識別并實施分級分類管控,但針對廣泛分布在終端、網絡、云存儲中的非結構化敏感數據(如商務合同、會議紀要、監管報告、技術資料等敏感文檔),鑒于文檔是由字、詞及上下文語義構成的,單純的依賴關鍵詞、正則表達式等傳統規則手段對文檔分類進行識別,缺乏詞與詞之間的上下文語義級分析,導致文檔分類分級的高誤報率與高漏報率。如商務合同與涉訴文檔,雖然都會存在甲方、乙方、聯系電話、聯系方式等關鍵詞,但在不同類型文檔語境下,其文檔表達含義與分類截然不同。而且,由于文檔分類定級誤判,會產生敏感文檔的非授權明文外發風險,進而導致數據泄露。由于分類誤判對非敏感級文檔進行加密、阻斷處理,影響正常業務開展[6-8]。
通過自然語言處理技術檢測識別文檔敏感內容,已經演化為文檔智能分類分級的技術趨勢,在落地實施過程中,也面臨如下突出的技術問題[9]。
在文檔語義特征表達層面,各領域文檔形式多樣、內容豐富、中文語體混雜的情況普遍存在,例如公安電子筆錄形式多樣,官方語體和方言語體交相混雜,且上下文語義高度相關。而目前的語言模型建立在樸素貝葉斯獨立性假設的基礎上,現實情況明顯無法滿足獨立性假設要求,從而導致文檔分類分級的準確率較低[9-10]。
在文檔內容識別層面,敏感文檔的分類檢測技術分為有監督和無監督兩種模式,無監督文檔分類技術不需要樣本但準確率很低,有監督文檔準確率相對較高,但存在樣本標注工作量大、人工標注質量無法保證的問題,直接導致產品研發周期長、成本高、效果差的問題[11]。
針對文檔分類分級在實際應用中面臨的技術問題,本文提出如下的解決思路:構建N元中文語言模型,解決當前語言模型面臨的獨立性假設不成立問題。構建自動無監督樣本庫,解決當前樣本標注工作量大,質量難保證問題。
2.2.1 語言模型基本原理
語言模型的發展經歷了專家語法規則模型、統計語言模型和神經網絡語言模型。專家語法規則模型在初始階段利用模式匹配技術,以自然語言的語法規則為切入點,模式匹配歸納總結,提供自然語言建模能力,但隨著語法規則規模急劇擴大,專家語法規則已不可持續[12]。
統計語言模型認為文檔由單詞序列構成,通過建模,分析文檔中單詞的概率分布。統計語言模型基于樸素貝葉斯的獨立性假設,即將句子S看成一組相互獨立的單詞序列 (w1w2···wn),那么對于任意一個單詞wi(i≤n)在句子S中出現的條件概率為P(wi|w1w2···wi?1),那么整個句子的概率模型P(S)=P(w1w2···wn),根據貝葉斯公式和全概率公式可推導出概率模型:

式(1)必須在基于樸素貝葉斯獨立性假設條件的情況下才成立,但是在實際應用中樸素貝葉斯獨立性假設往往不成立。
神經網絡語言模型為了應對獨立性假設不成立的問題,采用因果思路,在語料庫龐大到能覆蓋所有可能語義表述的情況下,通過訓練的方法獲得條件概率P(wi|w1w2···wi?1)。但是收集這樣一個龐大的語料庫本身就是一個問題,在特別的應用領域,例如各地方言與官方語體混雜語料的收集明顯不可行[13]。
2.2.2N元中文語言模型構建過程
因此在統計語言模型的基礎上提出N元中文語言模型,其核心思想是將語言模型劃分為N個相互獨立的子模型,分段訓練,利用線性插值公式分步整合。其實施過程:
1) 將語料庫按領域和語體劃分為N個語料庫子集;
2) 針對各個語料子集訓練特定語言模型;
3) 使用線性插值公式,獲得整個語言模型:

式中 0≤λ≤1。 λ 的期望最大值(expectation maximum, EM)的迭代計算方法為
1) 對于N個語言模型,使用隨機數初始化 λ;
2)根據整個語言模型公式計算新的語言模型概率;
3)第r次迭代,第j個語言模型在第i(i≤n)類上 λ 的計算公式為

式中h為歷史。
4)不斷迭代,重復步驟2)、3),直至收斂。
通過上述方法,將中文語言模型的困惑度值從320降低到150以下,為自然語言處理后續任務奠定基礎。
2.2.3 無監督算法構建樣本庫基本原理
常用的無監督聚類包括K均值聚類、均值漂移聚類、基于密度的聚類方法、高斯混合模型的最大期望聚類和層次聚類等。經實驗驗證效果最好的方法是K均值聚類。K均值聚類首先隨機選擇K個中心點,其次計算每個樣本到K個中心點的歐氏距離,然后將每個樣本劃分到離它最近的中心點所屬類族,最后更新每個類族的中心點,重復迭代直到所有的樣本不再被重新分類為止[14]。此過程不需要人工標注樣本,無須人工干預就可以自動區分樣本及類別,但是K均值聚類面臨兩個問題:
1)K的取值問題。在業務層面,企業往往也無法提供文檔類別數;在技術層面,K均值聚類算法的K取值本身也是一個關鍵問題。
2) 準確率低問題。K均值聚類算法,雖然是效果最好的無監督算法,但是準確率也只能到70%,與構建樣本庫的要求還相去甚遠。
2.2.4 基于無監督算法的樣本庫構建過程
針對上述問題,基于無監督算法的樣本庫構建過程如下:
1) 從生產環境網絡出口收集大量文檔,作為樣本集Q;
2) 采用N元中文語言模型對樣本Q中的文檔進行特征提取;
3) 采用數據分析工具Pandas對樣本集Q中的文檔特征進行特征對齊;
4) 采用非線性降維的算法(uniform manifold approximation and projection for dimension reduction,UMAP)降維文檔特征,降低文檔特征復雜性,提高聚類準確率;
5) 確定K均值聚類算法的K值,具體原理和方法為:假設真實類別數為N,所有樣本到其所屬類族中心的距離的平方和為D,隨著K值增加,樣本劃分的類族越來越精細,每個類族的內聚程度會越來越高,那么平方和D會越來越小;當K值小于N時,增加K值時會大幅增加每個族的聚合程度,故平方和D下降梯度會很大,當K值大于等于N時,繼續增加K值,類族內部的聚合效果不再明顯,所以平方和D下降梯度會急劇變小,平方和D下降梯度拐點即為真實聚類數K:

式中:i為類族編號;Ci為第i個類族;P為Ci中的某一個文檔數據;Mi為Ci的類族中心點向量;D為所有樣本到其所屬類族中心的距離的平方和;
6) 按照5)確定的K值,對樣本集Q進行聚類,得到聚類結果,由于K均值聚類算法準確率離樣本庫準確率要求太遠,優化K均值聚類算法提升準確率的投入大而回報小,所以不可取。因此采用將無監督轉換為有監督,分批迭代,投票篩選樣本的辦法來解決此問題;
7) 從K均值聚類結果中挑出一部分離類族中心距離小于預設閥值M的文檔作為樣本集Y,可以調節M的取值,確保挑中樣本集Y的準確性;
8) 將樣本集Y分為訓練集和驗證集;
9) 分別采用支持向量機、TextCNN、鄰近算法建模,并使用樣本集Y訓練模型;
10) 從Q中取出一批樣本,分別使用已訓練的支持向量機、TextCNN、鄰近算法模型進行預測;
11) 使用少數服從多數的投票法,對預測結果進行合并,挑出至少有2個模型預測結果均一樣的樣本,將這些樣本合并到樣本集Y中;
12) 重復步驟10)~11),直至樣本數量達到要求。
隨著企業IT架構日益復雜,業務系統逐步增多,大量內部隱藏、持久、緩慢的數據泄露行為成為企業數據安全關注的重點。傳統的單點式安全防護措施,對于具備一定反偵查能力的數據泄露行為,毫無辦法。為了解決隱蔽數據泄露問題,采用基于人工智能的用戶異常行為分析技術,從傳統的特征規則和人工分析轉向大數據和機器學習驅動的新型安全模式[14]。
基于從正常行為中發現規律,從規律中挖掘異常的思路:首先,基于歷史數據構建用戶個體行為、群體行為、場景行為三大行為基線,從個體、群體、場景3個角度詮釋正常用戶行為;然后,采用神經網絡,建立用戶異常行為模型,對用戶異常行為進行跟蹤、預測與判定。模型具備實時流處理、離線批量處理兩項能力,實時流用于實時分析日志,動態發現異常,并進行跟蹤。離線批量處理,用于對歷史數據進行分析判定,在歷史數據中發現已發生的異常行為[15]如圖1所示。

圖1 模型構建過程Fig.1 Build model process
在用戶異常行為分析中,采用大數據和機器學習構建異常檢測模型,顯著提高異常行為識別能力,縮短策略升級嚴重滯后問題,異常行為檢測時間控制在24 h以內,自動優化模型,實現自適應動態風險識別[15]。
目前采用機器學習技術幫助企業明確用戶與實體的行為基線,檢測偏離基線的異常行為,防止數據泄露。但在實際生產環境中,由于樣本依賴度過高而導致異常行為識別準確率較低。
現有的用戶異常行為分析系統需要通過大量已標注樣本數據,訓練生成用戶異常行為分析模型,但是在實際應用中,用戶往往不具備足夠的已標注樣本數據,從而導致系統識別準確率偏低[16-17]。
為解決目前用戶異常行為分析過程中樣本依賴過高的問題,構建無樣本依賴、實時識別異常行為的分析系統。本文采用無監督異常點檢測算法,以海量行為日志數據為基礎,計算單一操作行為異常,自動構建異常行為樣本庫,解決樣本依賴問題。
3.3.1 離群點檢測構建異常行為樣本庫基本原理
由于異常行為與正常行為日志數據混雜存儲,異常數據呈現出以下特點:
1) 異常數據的特征與大多數數據的特征是不一致的,例如同一個員工,大多數情況下都會使用自己的賬號登錄業務系統,員工每天的工作內容都基本相同,其行為也應基本相同。如果某天在自己辦公電腦上使用其他賬號登錄,就可能是非正常行為。
2) 異常數據在企業數據中的占比較小,例如同一崗位的不同員工,大多數情況下工作內容基本相同,其工作產生的行為日志特征也基本相同,如若某員工與其他同崗位員工行為不太一致,就可能是非正常行為。
針對上述日志數據的特點,可以采用基于統計的、距離的、密度的量化指標,刻畫異常數據與全集數據的疏離程度,即離群點檢測方法[18]。
3.3.2 離群點檢測構建異常行為樣本庫構建過程
依據企業日志數據的特點,企業用戶異常行為樣本庫構建過程如下:
1) 在用戶終端部署終端日志采集器,收集用戶操作行為數據,如系統登錄、文檔操作、軟件使用、郵件外發、上網行為等日志數據;
2) 在數據庫、應用服務器、交換機等位置部署設備日志采集器,采集防火墻、業務系統、數據庫等系統與設備的用戶操作日志;
3) 定義用戶異常行為場景;
4) 依據異常行為場景,確定場景所需的用戶行為數據;
5) 依據場景所需的用戶行為數據,從用戶及操作類型的角度切分數據;
6) 對切分好的數據按照場景要求進行特征提取;
7) 使用鄰近算法、離群點檢測算法和Feature Bagging等算法,分析建模特征數據,分離出正常數據和異常數據;
8) 按場景聚合正常數據,形成樣本庫。
構建數據分類分級與異常行為分析實驗系統,分析驗證技術可行性與應用效果。
實驗系統采用Spring Cloud微服務架構,使用應用容器Docker進行部署,采用關系型與文件型混合存儲模式,通過Nginx Web服務器實現負載均衡。系統架構包括采集層、分析層、存儲層、可視化層。
實驗系統采用探針主動采集和接口被動采集兩種模型,管理員可以通過圖形化界面選擇采集模型,定義探針主動采集頻率、被動采集服務地址。主動采集探針部署在操作終端、交換機、應用服務器、數據庫審計系統,主動采集日志。被動采集服務部署在服務端,通過標準接口,對接操作終端、交換機、應用服務器、數據庫審計等系統上報的日志數據。日志數據上報后,數據流轉引擎將日志數據推送至分布式消息系統Kafka數據隊列組件中準備進行數據清洗處理與持久化。
采集探針利用日志處理引擎Logstash的filebeat組件,采用TCP、UDP協議將日志數據上報到采集層,通過網絡和應用監測系統Zabbix Agent將日志數據上報至Zabbix 服務器。
采集層匯集日志數據后,經過數據匹配、解析以及組裝操作,將數據推送到采集層中的Kafka隊列中,通過數據分流操作以及動態模板匹配操作將數據推送到數據搜索引擎Elasticsearch中完成日志數據的存儲流程。
采集層通過Logstash的input、filter、output組件對數據進行匹配、解析、組裝,通過 HTTP Client讀取Zabbix 服務端的數據,進行處理操作后將數據上報到數據存儲層。
存儲層存儲訓練用戶異常行為分析模型需要的日志數據、訓練分類分級模型需要的文檔樣本數據、用戶異常行為告警數據、安全事件審計數據。其中日志數據包括終端、網絡設備、主機設備、數據庫、應用系統日志數據。文檔樣本數據包括覆蓋業務范圍內各業務分類與各安全等級的文檔。
數據存儲層使用Spark Streaming從Kafka中讀取主動探針采集、被動接口采集匯總的日志數據,使用Spring Boot同步數據、生成文件,通過Common-pool2創建數據庫連接池,通過Abstract-RoutingDataSource訪問關系型數據庫,使用Elasticsearch和Mysql存儲用戶異常行為告警數據、安全事件審計數據,使用Redis存儲日志數據與文檔樣本數據,采用Mysql存儲規則、用戶權限等系統管理數據。
分析層包括基本規則與高級模型兩種分析方式,其中基本規則是采用關鍵字、正則表達式等簡單匹配模型識別文檔類別、安全等級與異常行為。高級模型包括文檔分類分級模型、用戶異常行為分析模型。
數據分析層包括工作流框架、特征提取、算法模型、格式化輸出等主要功能。工作流框架負責構建業務流、調度數據處理任務,特征提取負責選擇各種數據的業務特征、特征提取和特征對齊,根據業務場景和數據分布選擇算法模型,對接業務系統輸出分析結果。
業務工作流采用SpiffWorkflow工作流框架,實現動態配置業務流程、動態選擇數據特征,動態配置算法模型、靈活調度業務場景。
特征選擇和特征提取采用N-Gram語言模型、詞向量方法、線性差別分析、主成分分析、奇異值分解等技術對文檔數據和行為數據進行特征選擇和特征提取。
算法模型采用插件化封裝,根據數據分布特點選擇算法模型。算法模型包括K均值聚類、密度聚類方法、高斯混合模型,以及支持向量機、決策樹、鄰近算法、長短時記憶網絡、神經網絡。
采用JSON、XML協議封裝輸出數據,滿足上層業務系統對接要求。
可視化層用于審計分析用戶異常行為安全事件、查看文檔分類分級結果。
可視化層使用前后端完全分離的機制,采用VUE.JS結合Webpack搭建前端架構,使用 HTTP協議進行前后端的數據通信。
可視化層的接口服務模塊,外部接口使用 Netty進行TCP協議數據交互、HttpClient 進行 HTTP協議數據交互。內部接口使用 Aviator、Elasticsearch、Mysql、Common-pool2 以及 Redis 實現。
實驗環境包括硬件和軟件配置兩部分。
硬件配置:兩臺測試機器,CPU Intel Core i3-4 130 3.40 GHz 4核,內存 8 GB,硬盤 5 TB,網卡 1 000 MB。
軟件配置:操作系統 CentOS7.6,數據庫MySQL5.7.29。

1) 實驗準備
①服務器、客戶端系統部署完成、網絡通信正常;
②準備24 000份樣本文件,其中財經、體育、娛樂、時政各6 000份;
③測試發件箱test@wondersoft.cn,收件箱test@shou.com。
2) 實驗輸入
①登錄控制臺,創建財經、體育、娛樂、時政分類,創建4個安全等級、定義每個安全等級涉及的敏感數據形式,導入樣本文件,構建分類分級模型;
②使用foxmail發件箱test@wondersoft.cn發送各種類型、各種安全等級文檔至test@shou.com,檢查分類分級結果。

1) 實驗準備
①服務器系統搭建,GPU驅動安裝、tensorflow環境搭建,客戶端系統搭建和客戶端軟件安裝;
②準備3 000名用戶、30萬條日志數據。日志數據包括郵件外發日志數據、U盤拷貝文件日志數據、賬號準入登錄日志數據3種類型。其中郵件外發日志數據包括操作終端信息、發件人信息、收件人信息、抄送人信息、正文信息、附件信息、時間信息;U盤拷貝文件日志數據包括U盤設備信息、操作終端信息、拷貝操作信息、操作文件信息、操作時間信息;賬號準入登錄日志數據包括人員賬號信息、接入設備信息、接入網絡信息、管控策略信息、接入時間信息。
2) 實驗輸入
①首先將日志數據導入mongodb,3種行為日志數據單獨存放。其次登錄實驗系統控制臺,配置數據源和檢測模型。最后使用準備數據訓練得到用戶行為模型;
②使用客戶端執行郵件外發、U盤拷貝文件和賬號登錄系統操作;
③服務端接收客戶端日志信息,對用戶操作進行異常行為檢測,并將結果展示在控制臺。
基于N元語言模型的文檔智能分類分級技術,數據分類分級準確率達到93%。
4種分類數據、4個安全等級數據組成了16種數據集合,每種數據集合各執行500次數據發送。進入實驗系統數據分類分級界面,可查看到8 000次數據發送郵件,按16組統計分析分類分級模型準確率分別為96.2%、93.6%、94.8%、87.4%、90.1%、92.1%、97.2%、86.2%、89.2%、90.1%、96.4%、92.7%、91.6%、87.4%、90.1%、88.3%。
基于無標記樣本的實時用戶異常行為分析技術,用戶異常行為分析準確率達86%以上。
郵件外發、U盤文件拷貝和賬號上下線操作各執行500次,進入實驗系統用戶行為分析界面,可查看到郵件外發記錄500次、U盤文件拷貝500次、賬號登錄系統500次,統計分析異常行為識別準確率分別為86.7%、88.6%、86.2%。
在數字經濟時代,數據安全是保障數字經濟發展的基礎條件,數據安全也正在從傳統的邊界防護逐步轉向以數據為基礎的縱深全鏈條防護,在這個轉變過程中,準確地識別數據,找到管控重點,成為關鍵問題。人工智能賦能數據安全創新地解決了海量數據中敏感數據識別、數據分類分級和用戶異常行分析識別問題。本文為數據安全領域使用人工智能技術解決行業普遍性問題進行了前期的嘗試與探索。同時,我們也應看到,人工智能技術在數據安全領域的應用才剛剛開始,如何通過人工智能技術低成本、高效率地解決數據安全問題,還需要廣大從業者不斷努力探索。