數據庫水印算法(方案一)

數據庫水印,解決方案一

1、可行性說明

  在調研中以及平時所見的數據表中得出一個規律:表與表的主外鍵關聯,很多時候並不是有效數據,而是輔助的數據;還有就是有數據庫訪問權限的人很少,對沒個層級來說,可使用數據的用戶(直接訪問數據庫的用戶)是少量的。
  基於上述規律,在不改變表間數據參照關係的前提下,將主外鍵進行變更,然後在生成的主外鍵上施加一定的隱含規則作爲嵌入的水印信息,以此來保留數據的原始狀態。一旦數據泄露,就可以通過提取的水印來追蹤數據泄露的源頭。該方案不僅可以在靜態數據集上實施,也能在一定程度上支持動態數據集。
  溯源的出發點是爲了在數據庫中尋找有效的冗餘空間,在不影響數據使用的前提下嵌入水印信息,並在數據泄露以後可以高效溯源。而主外鍵具有的優點剛好可以用來解決上述所有的基本要求:
    (1)水印嵌入位置較爲靈活,可以自己動態的添加主外鍵值,且不需要過多額外的存儲空間,不僅僅適用於小型系統,更符合當今大數據的背景;
    (2)可以用表結構變換(及一張表使用多個變換規則)來隱含一定的規則,以此作爲嵌入數據表中的水印信息,這種算法對數據的類型沒有任何限制;
    (3)由於主外鍵的關聯性,攻擊者一般不會破壞表間的主外鍵,因此可以抵擋元組攻擊、屬性攻擊以及虛擬水印攻擊等各種常見的數據庫攻擊類型,具有較好的魯棒性。

2、相關介紹

  首先對算法中需要用到的變量或符號作一個說明。

2.1 水印系統需要維護的表有:

  字段屬性表(attribute table)、用戶層級表(K-Tree table)、密鑰表(U-Key table)(此表應該是文件的形式放在本地以此保證密鑰不會被泄漏,或者對密鑰進行認證訪問揭祕)
  字段屬性表(attribute table):改表的功能,主要用來對原始數據表進行字段的劃分,以此來讓一個表可以適用多種規則,主要作用是,考慮到一個表字段可能會很多,而對於不用的用戶來說,可以只會有權限查看一部份字段的值,因此也只可能泄漏一部分的值,所以我們還得從一部分的值中去溯源回來。如數據庫原始表table1有如下屬性:

原始表table1
priKey Name Pswd Tele Email Address

  那麼我們就可以根據業務場景,及訪問控制權限對錶的字段進行劃分,按照用戶權限訪問規則範圍來劃分,如:一個有3個權限角色,role1可以訪問name、Tele,role2可以訪問name,Email,role3可以訪問name、address,那麼就可以這樣來構建屬性拆分表:

table1_attrsplit
T Name Pswd Tele Email Address Scope
a1 1 0 1 0 0 x
a1 1 0 0 1 0 x
a3 1 0 0 0 1 x

說明:代表a1屬性的,在表中對Scope範圍內來處理嵌入數字水印,Scope一般用於有所有訪問權限的人,起到一個混淆的作用,如DBA可以訪問所有字段,經過他手的數據,就安範圍來進行分屬性加水印。
  用戶層級表(K-Tree table):該 K-Tree 樹狀結構描述的數據分發的層級關係。樹中節點的數據存儲的是每個數據使用者的代號{U1,U2,…}。其中,根節點代表原始數據的擁有者,每個子節點的父節點代表上一級的數據分發者。如下,U0爲數據原始擁有者:
在這裏插入圖片描述
  密鑰表(U-Key table):該密鑰存儲表描述的是存儲數據使用者的名稱、代號以及對應的密鑰和 0-1 屬性表的表。
U-Key table

UserName User Code Key TN
U1 xx1 K1(U1) a1
U2 xx2 K2(U2) a1
U3 xx3 K3(U3) a2
DBA xx4 K4(U4) 1(代表所有屬性)

2.2 系統需要用到的加密算法有:

  3DES(可以直接用國密,如果保密程度要求不是很高,一般對稱加密算法都可以),算法主要用於對數據進行加密,不使用統一的密碼,是爲了防止被攻擊。

3、算法描述

3.1 水印生成

  數據原始擁有者的數據在被分發之前根據業務場景對錶的屬性進行劃分,配置規則。如下圖所示。
在這裏插入圖片描述

  有3個用戶,他們權限不同,所訪問的字段屬性也不相同,所以根據他們的訪問權限,對錶屬性進行字段的劃分。然後使用相應的密鑰來對數據進行加密,加密後的水印信息去替換表的主鍵或者一個與他業務邏輯不相關的列,如果替換主鍵的話,就相應的要去替換其他關聯表所引用的值,所以如果有不太強相關的字段,就直接替換字段的值,來存水印信息,這個可以用一個配置規則表來對每張表進行配置。

3.2 追蹤溯源

  當發現數據疑似泄漏數據時,數據原始擁有者(或每個上級數據擁有者)通過相同的加密規則對原始數據加密,然後與泄漏數據比對,如果相同,則確認爲泄漏數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章