熊逸文 項 菲 苗 杰
1.國家計算機網絡應急技術處理協調中心江蘇分中心;2.國家計算機網絡應急技術處理協調中心
《中華人民共和國網絡安全法》規定:“國家網信部門和有關部門依法履行網絡信息安全監督管理職責,發現法律、行政法規禁止發布或者傳輸的信息的,應當要求網絡運營者停止傳輸,采取消除等處置措施,保存有關記錄。網絡運營者對網信部門和有關部門依法實施的監督檢查,應當予以配合。”為加強網絡生態治理、清朗網絡空間,網信、公安和通信部門作為國家互聯網管理的三駕馬車,每年都會常態化對互聯網企業進行網絡信息安全檢查,并通報問題,指導企業整改網絡信息安全隱患。在信息大爆炸時代,互聯網平臺一般都會發布大量平臺生成內容(PGC)和用戶生成內容(UGC);然而由于安全意識淡薄、安全投入不足、技術審核不嚴、管理措施不到位等原因,互聯網平臺往往會出現一些色情、賭博、詐騙等違法違規信息。根據法律法規要求,互聯網平臺的網絡日志必須存儲六個月以上。理論上,互聯網平臺產生的違法違規信息均要在企業內容日志存儲至少六個月,因此,對互聯網企業內容日志的檢查可有效發現和識別這些違法違規信息,及時排查內容安全隱患。
監管部門一般采取臺賬查閱、人員訪談、遠程檢測等手段,嘗試發現互聯網企業違法違規信息。但這些手段受多種因素制約,存在以下局限性:一是遠程檢測中,受企業反爬蟲策略或流量加密的限制,難以大批量地采集數據,多以內容抽查為主,抽查方式使得待檢樣本覆蓋面不廣、代表性不足,且考慮到對計算資源的消耗,整體成本較高。二是在現場檢查中,多以人工檢查為主,檢查人員由于經驗差異導致檢查標準很難統一,受現場檢查時間和檢查人員數量限制實際檢查量不大。從技術路線角度來看,開發一款現場檢查工具,對互聯網企業內容日志進行檢測過濾,快速溯源定位違法有害內容,能夠靈活、有效滿足涉網監管部門現場技術檢查的需求。鑒于該工具可長期復用,整體成本不高,且檢查人員經簡單培訓后即可上手操作,適配性較強。
基于該技術路線,我單位已開發一款針對互聯網企業內容日志進行自動化檢測的工具,可兼容目前互聯網企業主流內容日志格式(txt、csv、xls、xlsx 四種文件格式),可自定義敏感詞詞庫,支持定位敏感詞所在位置及上下文,并基于機器學習算法匹配過濾內容日志,進而提升結果的準確性和精確性。本文提煉總結了該工具設計和實現的技術方法,從工具方案設計出發,推導工具功能模塊的實現,并介紹了工具內嵌的算法技術。文章結構如圖1 所示。

圖1 文章結構示意圖
檢測工具方案設計主要包括賬號、詞庫、文件等檢測規則的設計和API 接口的設計。
(1)用戶賬號規則
系統內隨機生成若干個賬號和密碼,賬號和密碼的數量可根據需要動態調整;輸入相應賬號和密碼,點擊登錄按鈕即可登錄系統。對外服務時可通過遠程授權省內涉網監管部門賬號和密碼的形式,配置用戶使用人數的權限,工具未授權則不可使用。
(2)敏感詞庫規則
敏感詞管理應遵循分級分類原則,色情、賭博、詐騙、宗教、暴恐等敏感詞不適合在公共互聯網環境下暴露顯示,但檢測工具須在互聯網企業公共互聯網環境下使用,因此有必要對敏感詞庫進行加密處理,使得工具使用人員不能看到敏感詞文件。可在內網環境下由高權限內容審核人員編輯敏感詞,對敏感詞進行分類,并根據檢查任務或目標提取相關分類的敏感詞,自定義生成敏感詞庫,并對其進行混淆加密;在外網環境下,高權限內容審核人員將經過封裝后的敏感詞庫移交給工具使用人員,使用時將已加密的敏感詞庫導入工具,工具自動解壓縮敏感詞庫并導入程序,整個流程敏感詞庫對工具使用人員不可見。
(3)待檢文件規則
互聯網企業內容日志存儲在不同類型的操作系統、數據庫中,采用不同的安全策略限制數據訪問;鑒于成本和技術上的考慮,檢測工具開發不同接口去適配企業內容日志數據庫較為復雜,為此本設計將內容日志導出為主流文件格式,工具支持對這些文件格式的檢測;鑒于內容日志存儲量一般較大,設計支持將內容日志導出為多個文件,工具支持對多文件的檢測。
(4)日志檢測規則
現場技術檢查應與其它檢查進程同步,有時需要中止檢查,并顯示實時檢查結果;設計檢測工具運行時可顯示進度、可暫停檢測、可導出結果。設計可通過字符數判斷待檢文件的類型,如用戶昵稱通常字符數較少,發布的文章每行字符數則較多,靈活選擇待測字符區間,可顯著提高檢測效率。在config 文件配置中可以選擇參數,設置字符最大展示個數;待測文件每行少于字符最大展示個數,直接忽略,檢測工具只檢測每行不小于字符最大展示個數的樣本。
本工具共設計3 個API 接口,分別為CreateTask 接口、GetTaskInfo 接口、CancelTask 接口。接口原理設計為上傳待測文件之后,調用CreateTask 接口去創建文件檢測任務,通過后端處理模塊進行數據處理,并將處理的結果放入到隊列中;然后通過GetTaskInfo 接口去實時隊列中對結果進行判斷,并將判斷結果實時反饋給UI 界面;最后通過調用CancelTask 接口可以中止文件檢測。如表1 所示。

表1 檢測工具API 接口處理邏輯
企業內容日志檢查工具共有三個功能模塊,分別為數據預處理模塊、數據檢測模塊和結果展示模塊,如圖2 所示。數據預處理模塊實現對敏感詞的預處理和待測文本的預處理,將敏感詞和待測文件從原始格式轉化為檢測工具可識別的格式;數據檢測模塊支持多種類型的檢測模式,可根據檢查需要動態調整檢測模式;結果展示模塊可根據檢測進度,靈活選擇展示或保存檢測結果,明示違法內容所在位置和上下文關系。

圖2 檢測工具模塊架構圖
2.1.1 檢測流程
關鍵詞僅支持txt 格式,使用ICSharpCode.SharpZipLib第三方的DLL 庫實現對敏感詞庫的加密壓縮和解壓縮功能,將加密詞庫導入到檢測工具后,檢測工具再逆向對加密詞庫進行解密,用于下一步的文本過濾。待測文件支持txt、csv、xls、xlsx 四種主流的文件格式,內容日志從互聯網企業數據庫導出后須先轉換為這些文件格式。對待測文件的檢測支持目錄檢測,待測文件以文件夾形式導入檢測工具。關鍵詞和待測文件均以UTF-8 格式編碼;UTF-8 包含簡體和繁體中文字符,能正確顯示多種語言文字,鑒于部分有害內容可能以繁體中文字符顯示,使用UTF-8 覆蓋更為全面。
2.1.2 邏輯篩選
上傳文件,系統會根據文件類型進行篩選,過濾掉非txt、csv、xls、xlsx 文件格式的待測文件,對篩選后的結果計算文件大小。以大小1M 為基準對文件進行劃分,規定大于1M 的文件為大文件,小于1M 的文件為小文件。對于大文件,以文件中文本行數一萬行為基準進行切割,以此類推,直至劃分成單個或多個文本行數為一萬行的文件和一個小文件,分別進行檢測;對于小文件,直接進行檢測即可。如圖3 所示。

圖3 文件分類邏輯篩選圖
數據檢測支持詞庫檢測、模型檢測和模型+詞庫檢測三種檢測模式,可根據任務類型、時間要求和檢測精度選擇檢測模式。詞庫檢測原理為關鍵詞比對,命中關鍵詞即顯示目標結果;模型檢測原理為利用機器學習算法進行模糊比對,模糊比對命中即顯示目標結果。一般情況下,在敏感詞較少(如專項檢測)、待測文件不大(如用戶昵稱、簡介)時,使用詞庫檢測效率較高;在敏感詞較多(如覆蓋全部敏感詞樣本)、待測文件較大(如系統發布文章)時,建議采用模型檢測;在檢測時間允許時,可采用模型+詞庫檢測。
在進行大文件檢測時為防止數據丟失,可設置實時保存結果選項,并在檢測開始前選擇結果文件保存路徑,即可實時將已檢測結果保存并顯示在UI 界面。UI 界面實時顯示檢測進度,若文件過大過多、等待時間較長,可中止檢測,并保存已完成檢測的結果。檢測結束后,UI 界面展示檢測結果,包括文件路徑、危險等級、敏感詞分類、命中敏感詞、行號和上下文六個數據字段。檢測工具支持結果文件的導出,結果文件可保存為csv 或xlsx 格式。
檢測工具使用的機器學習匹配算法共兩種,分別為隨機森林算法和DFA 算法,檢測工具會將兩種算法匹配到的數據進行合并,并分析判斷是否存在敏感詞。兩種算法均判斷為違規則認為是“危險”數據,一種算法判斷為違規另一種算法判斷為正常則認為是“未知”數據,兩種算法均判斷為正常則認為是“安全”數據。機器學習算法匹配邏輯如圖4所示,機器學習算法重要參數設置如表2 所示。從算法特點來看,隨機森林算法對數據的適應性較好,但在噪音較大的過濾分類上會出現過擬合問題;DFA 算法針對變種詞等特殊字符檢測較為靈敏,但在關鍵詞數量較多時消耗內存較大。綜合使用兩種算法,能夠平衡變體詞、形近詞、擬聲詞等特殊字符的檢測速度和精度。

表2 機器學習算法重要參數設置

圖4 機器學習算法匹配邏輯圖
隨機森林算法匹配過程直接調用Python Sklearn 庫中的隨機森林分類器Random Forest Classifier,使用Jieba 庫對待測文件中文字符進行分詞操作,用LabelEncoder、OneHotEncoder 函數對已分詞字符進行編碼;以Hashing Vectorizer 詞袋模型對文本進行特征向量化(該模型可通過哈希技巧標記文本的索引位置,而不創建詞典,占用內存較低,適用大型數據集);使用fit_transform 函數訓練數據、transform 函數測試數據,使用predict 函數預測數據,使用optimize_model 函數優化模型。如圖5 所示。

圖5 隨機森林算法匹配流程圖
DFA 算法原理是一個狀態通過一系列事件可轉換為另一個狀態,鑒于通過樹結構而非哈希表方法能夠更容易實現對文本的狀態標,因此本文采用的是基于Trie 樹字典機制的DFA 算法。在Trie 樹上進行檢索類似于查閱英語詞典,首先將敏感詞分為多個片段,每個片段作為狀態,構成樹結構;然后通過樹結構進行敏感詞匹配。流程上,通過create_node函數新建節點,使用dfa 函數掃描待測文本,以add_word函數添加關鍵詞,以add_words 函數添加關鍵詞組,最后用query 函數查詢是否包含敏感詞。如表3 所示。
(1)數據抽取:本文實驗數據的原始樣本共2000 條,其中正常樣本1600 條,違法違規內容樣本400 條。以9:1的比例通過train_test_split 函數劃分訓練集和測試集,即訓練集占90%,測試集占10%。
(2)特征抽取:計算訓練集和測試集的特征向量。

表3 DFA 算法函數介紹
(3)建立模型:使用Sklearn 機器學習庫中的Count Vectorizer、TFIDF Vectorizer、Hashing Vectorizer 三種詞袋模型,配置模型重要參數,得到預測結果。如表4 所示。

表4 隨機森林模型重要參數設置
(4)性能計算:計算三種模型評價指標,包括準確率(Precision)和召回率(Recall)。
(5)重復1-4 步,共進行10 輪實驗,計算平均結果。
從平均性能來看,Hashing Vectorizer 模型表現最好,TFIDF Vectorizer 模型其次,Count Vectorizer 模型表現最差。如表5 所示。

表5 隨機森林模型實驗性能結果
本文基于對互聯網企業內容日志的現場技術檢查需求,提出了一種內容日志的自動化檢測工具設計方案,并完成了檢測工具的實現開發。該工具內嵌機器學習算法模型,并支持基于關鍵詞的詞庫檢測、基于算法的模型檢測和基于前兩者混合的檢測三種檢測模式,可根據現場檢查需要靈活調整檢測模式,快速、高效發現涉詐、涉黃、涉賭等違法有害信息。