劉小芳
(泰州市大數據管理中心,江蘇 泰州 225300)
數字水印(Digital Watermark)是指從原始環境向目標環境進行敏感數據交換時,通過一定的方法向數據中植入水印標記,從而使數據具有可識別分發者、分發對象、分發時間、分發目的等因素,同時保留目標環境業務所需的數據特性或內容的數據處理過程。數據水印具有隱蔽性、可追溯性、確定性等特點[1]。
(1)根據數字水印的展現形式,可以將其分為明水印和暗水印(見表1)。網頁水印、應用系統接口(API)水印等。

表1 數字水印在展現形式上的分類
(1)水印添加階段:將原始數據和通過密鑰加密的水印內容輸入到水印添加算法,獲取到含水印的數據。相對于原始數據,含水印的數據只會有細微的變化,不易被察覺。
(2)水印提取階段:將含水印的數據,通過水印提取算法來判斷是否含有水印,提取水印的具體內容,進而定位數據的具體來源(見圖1)。

圖1 水印添加與水印提取流程
一般可以從以下6個維度來評價數字水印[2]。
(1)魯棒性:數據庫遭到有意或無意處理后水印的提取情況,如增加、刪除或篡改操作,評價指標為誤碼率(BER)。
(2)保真性:含水印數據庫與原始數據庫的數據差別,評價指標為平均絕對誤差(MAE)。
(3)水印容量:可嵌入的最大有效載荷,評價指標為嵌入率(ER)。
(4)計算代價:水印算法的計算代價,評價指標為算法的時間復雜度(O)。
(5)安全性:根據Kerckhoff法則,水印算法是公開的,其安全性依賴于水印密鑰,攻擊者在知曉嵌入和提取算法的情況下也無法檢測或去除水印。
(6)可用性:嵌入水印后數據庫不影響數據挖掘和統計分析等應用。
在政務數據安全建設過程中,數據泄露的風險點存在于數據采集、傳輸、存儲、處理、交換和銷毀等數據全生命周期的各個環節中。數字水印技術的典型應用場景涉及數據交換環節。政務環境中的數據交換,既包括各個業務系統之間的數據交換,也包括部門內部或組織內部的數據交換,還包括跨部門甚至跨委辦局的數據交換。
利用數字水印技術對政務數據進行保護,需要結合所保護數據所存在的載體,采用明水印與暗水印相配合的方式。一方面通過明水印,明示給數據操作人員數據水印的存在,起到警示與威懾的作用;另一方面通過暗水印,利用暗水印的魯棒性,抵御多種攻擊行為,保障泄露溯源的有效性和可用性。
通常,在一次性導出批量數據甚至是整表、整庫數據時會利用數據庫水印技術。考慮到數據交換場景的復雜性,水印方案應能夠支持庫到庫、庫到文件、文件到文件、文件到庫的水印分發方式,以便增強數據泄露后的溯源能力。數字水印技術可以幫助規范數據交互,使得數據共享過程安全可控,數據資產版權明晰,可在每份共享的數據資產上加入水印標識。水印信息包含但不限于以下內容:處理人員、處理系統IP地址、處理時間、處理方式等[3]。
數據水印技術可以支持使用偽行、偽列、無痕等多種水印算法,在數據內容里標記水印信息(見圖2)。

圖2 偽行水印、偽例水印與無痕水印
例如,通過偽行的嵌入,對每個生成的仿真元組做哈希運算,公式如下:

式中,K為密鑰;x為待插入的偽元組;Pi為該偽元組的主鍵值;N為原始數據庫的元組數;N’為偽元組數。將偽元組隨機插入到hash值所在的行。
對于嵌入的偽元組值,用戶要存儲在安全的地方,方便水印提取時做比對。水印信息注入后,一旦發生數據泄漏事件,通過導入泄漏的數據樣本或者文件到水印系統,即可以解析出水印信息,幫助用戶確定泄漏源,從而達到溯源定責目的。
2.2.1 數據確權
政務數據在共享/交換過程中數據往往會流轉到多個業務系統和多個數據使用者,一旦數據被盜用或者出現侵權問題,若是無法提供有效證明證實對數據的所有權,不但會失去數據擁有者的相關權益,還有可能承擔不必要的責任。若是對數據添加水印標記后再進行共享/公開/交易,數據擁有者在版權糾紛中將會很容易證實對數據的所有權,從而保障自己的合法權益。
2.2.2 溯源定責
政務數據使用過程中,存在數據共享分發與數據回流等數據流轉場景,流經途徑通常是比較難掌控的,一旦發生數據泄漏或被惡意盜取,若缺少溯源能力,數據擁有者無法知曉泄漏時間、泄漏主體等信息。一是無法有效梳理安全管理與技術措施的薄弱環節,安全合規建設難以落地;二是實施犯罪行為的泄漏者若未被定責,數據泄漏事件可能會更加頻繁,嚴重損害數據擁有者的權利。若在分發數據前先對數據進行水印標記,快速溯源定責將會輕而易舉。
2.3.1 數據庫水印添加流程
(1)添加數據源和目標源。數據源是指原始數據存儲的位置,目標源是指通過系統添加水印信息后的數據存放的位置。數據源可以是結構化數據庫,也可以是具備一定格式的CSV或者Excel文件。
(2)對原始數據源進行水印數據發現即敏感數據發現識別。通過掃描識別出需要通過添加水印進行保護的敏感數據字段。
(3)添加水印信息。水印信息可以根據溯源的具體需求,添加數據的所有者信息、數據流轉目的、數據分發對象等信息。
(4)生成水印方案。所謂水印方案是指可以應用于多個水印任務中的一個水印模板,可以供其他的水印添加流程進行調用。
(5)執行水印任務。在完成水印配置后,正式執行水印添加的過程。水印任務執行成功后,水印信息會被注入到目標數據庫或目標文件中。
2.3.2 數據庫水印溯源流程
數據庫水印的溯源流程如下(見圖3)。

圖3 數據庫水印溯源流程
(1)獲取被泄漏的數據。
(2)根據泄露數據文件類型,處理如下:如果是Excel、txt、csv等文件,直接保存到某個目錄;如果是SQL數據庫腳本等文件,將數據導入到溯源測試數據庫。
(3)執行水印溯源,識別出數據的水印信息。如果是Excel、txt、csv等文件,可上傳文件進行溯源;如果是SQL數據庫腳本等文件,可以對數據導入后的數據庫表直接進行溯源。
2.3.3 數據庫水印算法
2.3.3.1 偽行水印算法分析
(1)對數據源中的字段做屬性分析,根據其敏感類型進行規則適配。
(2)在表中添加一行,隨機從表內其他行抽取不同字段數據組成一條新記錄。
(3)判斷新記錄中是否存在敏感數據,如果存在,則進行仿真脫敏。
(4)根據事先定義好的水印方案,添加水印信息并最終生成偽行。
2.3.3.2 偽列水印
(1)在表中插入一個新的字段作為偽列,偽列字段名稱可以從表中已有字段名添加前綴、后綴標識后生成新的字段名。
(2)對偽列字段進行內容填充,根據事先定義好的水印方案,添加相應的偽列隨機編碼作為水印信息并生成偽列。
2.3.3.3 無痕水印
(1)掃描和識別數據源中符合添加無痕水印的字段。
(2)對符合條件的列進行字段長度擴充,避免由于長度限制導致水印嵌入失敗。
(3)在記錄末尾添加無痕水印信息。
2.3.4 數據庫水印應用注意事項
2.3.4.1 水印密度問題
在偽行水印與無痕水印方案中,存在水印密度問題,即原始數據量與添加水印信息的數據量的比例關系。水印密度過高,一方面容易被攻擊者察覺,另一方面也會面臨數據庫存儲空間膨脹的問題;但是水印密度過低,又可能造成水印溯源成功率下降的問題。因此,水印方案中數據密度指標的制定,需要結合數據源的數據特征做細致分析和調整,通常情況下,水印密度范圍為5%~15%。
2.3.4.2 水印溯源過程的安全問題
在數據庫水印添加及數據溯源的過程中,應確保原始數據與添加水印的數據都不會落盤到數據庫水印系統上。這樣設計一方面使得水印分發流程更加清晰,另一方面減少了中間環節數據泄漏風險,增強了水印分發過程的安全性。
2.3.4.3 確保數據庫水印的隱秘性與數據庫的可用性
數據水印標記信息應不易被發現和察覺。偽行水印與偽列水印算法的應用,需要根據數據特征進行靈活選擇,如對于字段較少的數據表,就不適合使用偽列水印。另外,應在保證添加水印后數據的可用性的同時,最大限度地減少對數據使用的影響。
數字水印技術是政務數據安全保護體系中的一個重要技術手段,數據庫水印技術在政務數據交換場景中,為政務數據的安全流轉提供了一種有效的保障措施。■