數據泄漏防護(Data Loss Prevention,以下簡稱DLP)系統,采用數據加解密、身份認證、訪問控制等先進技術,實現了網絡環境下敏感信息的安全保護和傳播,確保敏感信息在網絡或單機環境下的存儲、傳播和處理等系列過程中的全程安全。DLP 技術不僅可以保護在網絡中傳輸的數據,而且還保護存儲的靜止數據以及使用中的數據。
01
—
文件指紋匹配
指紋是源于生物識別技術中的概念,具有存儲容量小、能夠快速識別生物的不同個體、指紋特征與個體的其他特征相互獨立、不隨個體其他特征的變化而變化等優點。廣義上的指紋指具有唯一標識性的任何信息,如信息、人的虹膜、身份證號碼、手機號碼等。文件指紋,與人的指紋類似,是指能夠唯一標識一個數字文件的信息。

作為DLP系統中的一個重要組成部分,文件指紋匹配有著比較廣泛的應用。高科技公司使用該技術使用樣本訓練核心源代碼,以便及時發現涉事人員非法拷貝源代碼(即使只復制了部分模塊)。客戶使用該技術,在其數字檔案館或電子文檔庫里,發現大量的中間文檔或重復文檔,并對其進行標記或清除。還可以從專利、配方數據、試驗數據等敏感數據樣本中提取指紋,對目標文件進行指紋相似度匹配或精確數據匹配。
02
—
文件指紋匹配流程
文件指紋匹配技術是從樣本文檔中生成指紋特征庫,然后以同樣的方法從待檢測文檔或內容中提取指紋;將得到的指紋與指紋庫進行匹配,獲得其相似度。一般來說,文件指紋匹配包括文本預處理、指紋生成、指紋選取、相似度計算四個部分。

文本預處理部分一般是去除掉文本中無關的內容,以減少生成的指紋對相似性判定的影響。針對不同的用途、不同的語言特點,不同指紋方案的預處理部分也會表現出很大的不同。指紋生成部分主要是對預處理過的文本按照選定的文本細粒度,使用文件指紋算法進行指紋生成。指紋選取部分是按照一定的指紋選取策略選取己生成的指紋,作為文檔最終的文件指紋。通過以上步驟可以將需要保護的文件生成對應的文件指紋庫。最后在線文件同樣經過預處理、指紋生成和選取等步驟生成該文件的文件指紋,與指紋庫中的文件指紋進行相似度計算,將文件相似度作為結果輸出出去。
2.1 文件預處理
文本預處理是文本類文件指紋系統進行處理的第一步,其目的是減少文本中無關信息對文本相似性判定的影響。文本預處理中,應盡可能將文本中對原文信息不產生任何影響的無關信息全部刪除,以保證生成的文件指紋信息更加真實有效。對于中文文本,逗號、句號、分號、引號等標點符號,空格、制表符、回車符、換行符以及文本中出現的虛詞等都不是文本相似性檢測中所必需的,因此需要去掉這些影響相似性判定的無關信息。
2.2 文件指紋生成
指紋生成部分首先是對預處理過的文本按照選定的文本細粒度,然后使用相應的文件指紋算法計算文件指紋。
文本細粒度選取:文本粒度一般指從文檔中選取的,用于生成文件指紋的文本長度。文本粒度的選取對于文件指紋系統文本相似度檢測的精度有很大的影響。若文本粒度選的越小,一方面文本生成的指紋數量就會變得非常大,相似度檢測的時候,指紋系統的效率就會變慢;另一方面,文本粒度選的越小,指紋也可能會產生很多錯誤的匹配,導致檢測結果出現很大的偏差。若文本粒度選的越大,由于文件指紋十分的敏感,每一個粒度中很小字節的變化都會使得整個粒度的指紋值發生變化,這會使得對文本的微小修改就會影響到文本相似度結果的計算。因此,文本粒度的合理選取,可以大大提高文件指紋匹配檢測的準確度。
文件指紋計算:文件指紋算法作為指紋系統中至關重要的一個環節,其性能的優劣直接影響指紋系統的好壞。目前文件指紋算法有很多,常用的有MD5、SHA-1、Rabinhash、Simhash、Minhash等算法,不同的算法有不同的用處,可以根據實際需要選擇不同的算法。后面部分有各個算法的描述。
2.3 文件指紋選取
合適的或優秀的指紋選取策略可以在獲得的指紋數量相對較少的情況下,取得更準確的檢測結果。指紋選取是文件指紋系統中另一個至關重要的環節,如果指紋選取的不當,會導致選取的指紋不能充分代表文件本身,最終直接導致文檔相似度檢測時出現很大偏差,影響文件相似度的計算結果。常用的指紋選取策略主要包括全指紋選取、半指紋選取、哈希斷點法和最小哈希值法等。
2.4 相似度計算
相似度計算是文件指紋匹配系統的最后一步。相似度計算主要對待檢驗文件指紋和文件指紋庫中的文件指紋進行比對,并計算文件指紋值之間的匹配程度(文件相似度)。計算相似度的時候,不但要返回文件指紋與文件指紋庫對比的相似度值,還要返回最相似的文件和最相似文件的相似度,以方便用戶對文件匹配結果進行檢查。
03 —
文件指紋主要算法及優缺點
生成指紋的算法目前主要有:MD5、SHA-1、Rabinhash、Minhash、Simhash、Winnowing算法等。
3.1 MD5、SHA-1算法
MD5算法對于任意長度的信息輸入,都將產生一個長度為比特的輸出,這一輸出可以被看作是原輸入報文的“報文摘要值”,也可稱為指紋值。
SHA-1算法在運算上與MD5有很大的相似性,這也使得SHA-1同樣易于實現,并且也具有很好的抗碰撞性和單向性。
MD5-1、SHA-1是比較常規的算法,可靠性高,執行效率快,但是這兩種算法會產生雪崩效應,文本的微小差異導致生成的哈希值完全不相等。
3.2 Rabinhash算法
Rabin指紋算法主要用于指紋的生成,其計算快速、易于實現,并且對于不同的字符串A和字符串B,其指紋值f(A)和f(B)也是不同的。同時Rabin算法還滿足分配率,即f(A+B)=f(A)+f(B)。Karp-Rabin算法是Richard M.Karp和Michael Rabin基于Rabinhash算法提出的一個字符串查找算法,是第一個基于內容分塊的指紋算法。Karp-Rabin算法根據字符串中各個字符來計算指紋,而且相同的字符生成的指紋值完全相同,該算法能在線性時間內完成所有字符串到數值的轉化,計算速度很快。
3.3 Simhash算法
Simhash是google用來處理海量文本去重的算法,同時也是一種基于LSH(localitysensitive hashing)的算法。和md5和sha哈希算法所不同,局部敏感哈希可以將相似的字符串hash得到相似的hash值,使得相似項會比不相似項更可能的hash到一個桶中,hash到同一個桶中的文檔間成為候選對。
3.4 Minhash算法
Minhash也是LSH的一種,可以用來快速估算兩個集合的相似程度。Minhash由Andrei Broder提出,最初用于搜索引擎中檢測重復網頁,它也可以應用于大規模聚類的問題。Minhash使用Jaccard index來計算相似性,它也是距離的一種度量標準。
3.5 Winnowing算法
Winnowing算法所實現的就是選取哈希值的策略。Winnowing算法所采用的策略是:將生成的全部文件指紋序列選取固定大小的滑窗,選取每個窗口中最小的哈希值(顯然兩個窗口可能共享同一個最小值),如果存在多個最小值,則選取最右邊的。該策略既保證選取足夠的指紋信息,又保證了不會產生太龐大的指紋。在實際應用中,還可以記錄哈希值出現的位置,用于跟蹤相似內容出現的位置。
綜上所述,MD5、SHA-1算法比較成熟,運行速度快,就是相對容錯性差,相似文本的哈希值差別較大。Simhash、Minhash算法計算準確度會高,但是計算量大,占用時間較長,對大量文檔的處理需要考慮性能問題。Karp-rabin和Winnowing通常采用滑動窗口的方式計算相對較快,準確率較高。
在DLP系統中,文件指紋匹配在文件防護和關鍵信息保護中起著重要的作用。文件指紋匹配通過采用計算文件指紋相似度的方式來防護系統中的關鍵文件不被泄露。