Thuật toán phát hiện thuỷ vân

Một phần của tài liệu bảo vệ bản quyền cơ sở dữ liệu bằng thủy vân ảnh số (Trang 27 - 48)

Giả thử B nghi ngờ quan hệ S do A đưa ra có thể được ăn cắp từ quan hệ

R của cô. Tập các bộ và các thuộc tính trong S có thể là một tập con của R. Chúng ta giả định rằng A không bỏ thuộc tính khóa chính hoặc thay đổi giá trị của khóa chính vì khóa chính chứa những thông tin có giá trị và việc thay đổi nó sẽ làm giảm ý nghĩa sử dụng của cơ sở dữ liệu theo quan điểm của người sử dụng.

Input: Các tham số K,  ,  ,  có các giá trị như khi nhúng thuỷ vân,  là mức ý nghĩa của phép thử do người phát hiện chọn trước.

Output: Thuỷ vân được phát hiện. 1) totalcount = matchcount = 0

2) for each tuple s S do

3) if (F(s.P ) mod  equals 0) then // bộ này đã được đánh dấu

4) attribute index i = F(s.P ) mod  // thuộc tính Ai đã được đánh dấu 5) bit index j = F(s.P ) mod  // bit thứ j đã được đánh dấu 6) totalcount = totalcount + 1

7) matchcount = matchcount + match(s.P , s.Ai , j ) //gọi match 8)  = threshold(totalcount, ) // xem mục 4.2

9) if (matchcount   ) then suspect piracy //nghi ngờ có sao chép trái phép

//Hàm match cho trở lại giá trị bit thủy vân

10) match(primary key pk, number v, bit index j ) return int

12) if (first hash is even) then

13) return 1 if the jth least significant bit of v is 0 else return 0

14) else

15) return 1 if the jth least significant bit of v is 1 else return 0

Hình 4: Thuật toán phát hiện thủy vân

Thuật toán phát hiện thủy vân trong Hình 4 mang tính xác suất.

 Dòng 3 xác định liệu bộ s đang xét có phải đã được đánh dấu tại thời điểm thủy vân không.

 Dòng 4 và dòng 5 xác định thuộc tính và vị trí bit mà lý ra đã phải được đánh dấu.

 Sau đó, trình con match so sánh giá trị bit hiện tại với giá trị bit lẽ ra đã phải được đặt tại bit này khi nhúng thủy vân. Nếu trùng nhau thì cho trở lại 1 còn ngược lại thì cho trở lại 0.

Như vậy, cho đến dòng thứ 8 chúng ta đã biết được có bao nhiêu bộ được thử (totalcount) và có bao nhiêu bộ trong số đó chứa giá trị bit mong đợi (matchcount). Về mặt xác suất mà nói thì chỉ có một lượng tối thiểu nhất định các bộ có chứa các bit trùng với các bit đã đánh dấu. Giá trị matchcount được so với số đếm tối thiểu tính được từ hàm ngưỡng (threshold) đối với phép thử thành công ở mức ý nghĩa  đã chọn. Hàm ngưỡng được mô tả trong mục 2.3.2.

Tương ứng với thuật toán đánh dấu được mô tả trong Hình 3’, chúng ta có Hình 4’ để mô tả thuật toán phát hiện dấu như sau:

Thuật toán phát hiện dấu

For all tuples r n D

r.MAC = H(K||r.P||K)

if(r.MAC mod m = = 0) // bộ này đã được chọn

Total_Count++

i = r.MAC mod v // thuộc tính được chọn

b = r.MAC mod e // chỉ số bit trong LSB được chọn

if(r.MAC mod 2 == 0) // MAC chẵn

if bit b of r.Ai is Set

Match++

Else

If bit b of r.Ai is Clear

Match++

Compare (Match/Total_count) > Threshold

Hình 4’: Thuật toán phát hiện dấu

2.2.4 Một số lưu ý

Tính cập nhật được nâng cao Trong thuật toán nêu trên, một bộ có được đánh dấu hay không hoàn toàn phụ thuộc váo thuộc tính khóa chính. Vì thế, có thể thêm một bộ bất kỳ vào quan hệ mà không cần phải xem xét đến các dấu hiệu của những bộ khác. Tương tự, một bộ cũng có thể được xóa một cách tùy ý mà không làm ảnh hưởng đến các dấu hiệu đã chọn của các bộ khác. Khi cập nhật thuộc tính khóa chính của một bộ, chúng ta cần phải tính lại dấu hiệu của nó trước khi lưu giữ bộ này vào cơ sở dữ liệu.

Khi cập nhật một thuộc tính không phải là khóa thì không cần phải làm gì cả nếu thuật toán không chọn thuộc tính này để đánh dấu. Ngược lại, nếu thuộc tính này là ứng viên cho việc đánh dấu thì dấu hiệu này phải được áp dụng cho giá trị của thuộc tính trước khi lưu nó vào cơ sở dữ liệu.

Thủy vân blind Một kỹ thuật thủy vân được gọi là blind (mù) nếu khi

phát hiện thủy vân người ta không cần đến dữ liệu gốc và cả thủy vân gốc. Thuật toán phát hiện thủy vân được trình bày trên đây là thuật toán blind vì nó chỉ đơn thuần trích ra  bít thông tin từ dữ liệu mà không đòi hỏi phải truy cập dữ liệu gốc hoặc thủy vân gốc trước khi đi đến quyết định. Thủy vân blind là rất quan trọng đối với các quan hệ trong cơ sở dữ liệu vì chúng thường xuyên phải cập nhật.

2.2.5 Các quan hệ không có các khóa chính

Kỹ thuật thủy vân được mô tả trên đây được mô tả dựa trên giả thiết là quan hệ được thủy vân luôn có một khóa chính.

Các khóa chính xuất hiện khá tự nhiên trong các tình huống thực tế và chúng ta hy vọng là phần lớn các quan hệ mà người ta muốn thủy vân sẽ có một khóa chính. Trong phần này chúng ta sẽ tìm cách mở rộng thuật toán thủy vân nếu giả thiết này không được thỏa mãn.

Đầu tiên ta giả sử rằng quan hệ R chứa duy nhất một thuộc tính số A. Phân hoạch các bit của thuộc tính A thành hai nhóm.  bit của giá trị r.A sẽ được sử dụng như phần thay thế cho khóa chính của bộ r và  bit còn lại được sử dụng để thủy vân. Bây giờ chúng ta có thể sử dụng lược đồ như đã mô tả trước đây. Lý luận này chỉ đứng vững khi r.A không lặp đi lặp lại nhiều lần. Quá nhiều bản sao trong  bit của giá trị r.A sẽ sinh ra nhiều dấu hiệu đồng nhất mà những kẻ tấn công có thể lợi dụng.

Nếu quan hệ có nhiều hơn một thuộc tính số thì một trong các thuộc tính có thể được sử dụng như một khóa thay thế và các thuộc tính còn lại được sử dụng để làm thủy vân. Chọn thuộc tính có ít giá trị lặp lại nhất thay cho khóa. Cũng có thể chọn nhiều hơn một thuộc tính để thay cho khóa đê giảm bớt các giá trị trùng nhau. Nhược điểm của cách này là nếu một trong những thuộc tính này bị A bỏ đi thì B sẽ không thể phát hiện được thủy vân nữa.

2.3 Phân tích đánh giá thuật toán

Kỹ thuật thủy vân dựa váo các bit ít ý nghĩa nhất sẽ được phân tích đánh giá bằng lý thuyết xác suất..

2.3.1 Xác suất nhị thức tích luỹ

Các phép thử độc lập lặp đi lặp lại được gọi là các phép thử Bernoulli nếu chỉ có hai kết quả có thể đối với mỗi phép thử và xác suất của chúng là như nhau trong suốt quá trình thử.

Cho b(k;n,p) là xác suất mà n phép thử Bernoulli với xác suất thành công là

p và xác suất thất bại là q1 p trong k lần thành công và nk lần thất bại.

pkqn k k n p n k b( ; , )    (1) )! ( ! ! k n k n k n         0kn (2)

Ký hiệu số lần thành công trong n lần thử là Sn. Xác suất để có ít nhất k lần thành công trong n lần thử, còn gọi là xác suất nhị thức tích luỹ, được tính như sau:

      n k i n k b i n p S P (; , ) (3) Để ngắn gọn, ta định nghĩa: ) , ; (k n p B :=   n k i p n i b( ; , ) (4) 2.3.2 Hàm ngưỡng

Giả sử khi chạy thuật toán phát hiện thuỷ vân, totalcount = . Điều này có nghĩa là chủ dữ liệu xem xét ở  bít và quan sát số các bít mà giá trị của chúng trùng với giá trị được gán bởi thuật toán nhúng.

Xác suất để có ít nhất  bít trong  bít ngẫu nhiên - với đặc điểm là mỗi bít bằng 0 hoặc bằng 1 với xác suất như nhau, độc lập với các bít khác – trùng với giá trị đã được gán là B( ;, 1/2). Nói cách khác, xác suất để ít nhất

 bít trùng khớp với cơ hội ngang bằng nhau là B( ;, 1/2). Do đó, thủ tục

con:

Subroutine threshold(, ) return count

trả lại  nhỏ nhất sao cho B( ;, 1/2)  .  = min { t : B( t ; , 1/2 )  }.

Mức ý nghĩa  xác định hệ thống này sẽ gặp sai lầm trong một chừng mực nào đó. Tức là,  là xác suất mà B sẽ phát hiện được thủy vân của cô trong một quan hệ cơ sở dữ liệu không do cô thủy vân. Bằng cách chọn  nhỏ hơn, B có thể tăng mức tin cậy của cô trong trường hợp thuật toán phát hiện lại tìm thấy thủy vân của cô trong một quan hệ có được một cách đáng ngờ từ một bản sao trái phép.

Kỹ thuật thủy vân dựa trên các LSB có bốn tham số quan trọng có thể điều hướng được:

  – mức ý nghĩa của phép thử

  – tham số xác định số bộ cần được đánh dấu

  – số các thuộc tính trong quan hệ sẵn sàng để đánh dấu   – số các bít ít ý nghĩa nhất sẵn sàng để đánh dấu.

Hình 5: Điều chỉnh các tham số

↓  ↓ lỗi ↑ thủy vân bị hỏng ↓  ↑ tính bền vững ↑ sai số dữ liệu ↑  ↑ tính bền vững

Chương 3: THỦY VÂN SỬ DỤNG CÁC BIT Ý NGHĨA NHẤT

3.1 Giới thiệu

Giống như kỹ thuật LSB và kỹ thuật tối ưu hóa, kỹ thuật này cũng thủy vân dữ liệu số và phụ thuộc vào khóa bí mật. Tuy nhiên, thay vì sử dụng khóa chính như hai kỹ thuật trên, kỹ thuật này sử dụng các bít ý nghĩa nhất (MSB) của bộ dữ liệu đã chuẩn hóa.

Các bít ý nghĩa nhất (MSB-Most Significant Bits) là các bít ở bên trái nhất của một chuỗi bít.

Ví dụ: trong chuỗi bít 1000 thì bít ý nghĩa nhất là 1; với số bít ý nghĩa nhất là 3 thì các bít ý nghĩa nhất trong chuỗi bít 1010001 là 101.

Ngoài ra, kỹ thuật này còn sử dụng phương pháp lựa chọn tập hợp và đánh dấu các đầu mục của các tập hợp đó theo thứ tự từ điển dựa vào hàm băm một chiều với khóa bí mật của tập các bít ý nghĩa nhất.

Kỹ thuật này cũng gồm có hai phần chính: mã hóa và giải mã thủy vân.

Mã hóa thủy vân: gồm 2 bước chính sau:

1. Lựa chọn một lượng tối đa các tập hợp con đơn nhất, không giao nhau từ bộ dữ liệu gốc, sử dụng khóa bí mật.

2. Với mỗi tập hợp con đã chọn, nhúng một bít thủy vân vào trong nó và kiểm tra các ranh giới khả dụng của dữ liệu. Nếu các ranh giới khả dụng bị vượt qua, thử lại với các biến thể khác nhau của tham số mã hóa, hoặc nếu vẫn không thành công, thử đánh dấu tập con này là không hợp thức, hoặc nếu vẫn không thành công thì bỏ qua (lờ) tập hiện hành đó đi. Lặp lại quá trình này cho đến khi không còn tập hợp con nào có thể mã hóa được nữa.

Quy trình này sẽ tạo ra nhiều mẫu thủy vân được nhúng trong tập dữ liệu tổng thể.

Giải mã thủy vân: gồm 3 bước chính sau:

1. Sử dụng các khóa và một số bí mật để tìm lại một lượng lớn các tập con (hoặc tất cả nếu không có tấn công nào được thực hiện trên bộ dữ liệu). 2. Với mỗi tập con đã tìm được, sử dụng quy tắc mã hóa để tìm lại giá trị bít

đã nhúng và xây dựng lại thủy vân.

3. Sử dụng lược đồ chọn theo đa số để tìm lại thủy vân giống với thủy vân gốc nhất.

3.1.1 Mô hình thủy vân

Hình 6: Mô hình thủy vân sử dụng các bít ý nghĩa nhất

3.1.2 Xác định bài toán

Cho S là một tập gồm n số thực S = {s1, . . . , sn }  R.

Gọi V là kết quả của việc thủy vân S bằng cách làm một vài thay đổi nhỏ trong nội dung của S. Giả sử V = { v1, . . . , vn }  R cũng có kích cỡ là n.

Kênh tấn công Phát hiện thuỷ vân Nhúng thuỷ vân Khoá bí mật, K Dữ liệu, R Dữ liệu được thuỷ vân, RW

Thuỷvânđượcpháthiện

WR=(100100100….)

Dữ liệu bị tấncông , R’W

Thuỷ vân W=(100100100….)

Cho một xâu bít w = w1 . . . wm gồm m bít (m<<n) được sử dụng làm dấu hiệu thủy vân nhúng vào dữ liệu (|w| = m).

Đối với mỗi tập con Si  S, gọi G {G ,...,G i |Gji:subsets(S) R}

p i

1

i   là tập

(có thể rỗng) “các hàm đo tính khả dụng”, Si phải thỏa mãn trong một tập nào đó các khoảng khả dụng chấp nhận được (tức là các miền sai số được phép của kết quả) {(( ) ,( ) ),...,(( ) ,( ) )} 1 1 max i p min i p max i min i i g g g g

G  , sao cho “điều

kiện khả dụng” sau đây thỏa mãn: G (S ) ((g ) ,(g i)max) j (1,p)

j min i j i i j    .

Tính khả dụng có thể chấp nhận được của tập dữ liệu này sẽ cho phép chúng ta xác định liệu kết quả thủy vân có giá trị và có hợp lệ trong các giới hạn cho phép hoặc đảm bảo không.

Ta định nghĩa bài toán thủy vân tập S như bài toán tìm một biến đổi V của S sao cho với tất cả các tập độ đo tính khả dụng G = Gi, với mọi tập con Si 

S mà đúng đối với S thì cũng đúng đối với V.

3.1.3 Lựa chọn các tập hợp con

Các bộ dữ liệu đầu vào được sắp xếp (lựa chọn) theo thứ tự từ điển dựa vào khóa bí mật Ks và hàm băm một chiều H các bít ý nghĩa nhất của các đầu muc đã được chuẩn hóa:

index(si) = H(ks, MSB(NORM(si)), ks) trong đó, NORM(si) là bản chuẩn hóa của si

NORM(si) = si / max(si)

Không gian MSB ở đây được coi là miền mà những thay nhỏ trên các đầu mục của dữ liệu (những thay đổi vẫn làm thỏa mãn khoảng khả dụng đã được yêu cầu) có tác động tối thiểu lên các nhãn MSB. Điều này đúng trong nhiều

trường hợp (bởi vì thường thì các khoảng khả dụng có liên quan tới việc bảo vệ các phần “quan trọng” của dữ liệu).

3.2 Nhúng thủy vân 3.2.1 Mã hoá bít đơn

Với mỗi tập Si đã được chọn, bít thủy vân b sẽ được mã hóa vào trong tập Si. Gọi G là tập biểu diễn khoảng thay đổi chấp nhận được, hoặc khoảng khả dụng đã được xác định bởi người dùng.

Cho vfalse, vtrue, c là các số thực, với c  (0, 1), vfalse < vtrue

Trong đó,

 c được gọi là độ (hệ số) tin cậy  (vfalse, vtrue) gọi là khoảng tin cậy

Định nghĩa: avg(Si) và δ(Si) tương ứng là độ lệch trung bình và độ lệch chuẩn của Si. i j i S x S avg( )  , i j i i S x S avg S    2 ) ) ( ( ) (  , xjSi vc(Si) là số các đầu mục của Si vc(Si) > avg(Si) + c(Si)

Hình 7: Phân phối của Si

Quy ước mã hóa: cho mark(Si)  {true, false, invalid} mark(Si) là true nếu: vc(Si) > (vtrue |Si|) false nếu: vc(Si) < (vfalse |Si|)

invalid nếu: vc(Si)  (vfalse  |Si|, vtrue  |Si|)

Nói cách khác, thủy vân được mô hình bởi số lượng “các vi phạm độ tin cậy” dương biểu diễn trong Si đối với độ tin cậy c và các vi phạm khoảng tin cậy (vfalse, vtrue).

Việc mã hóa bít đơn b vào trong tập Si sẽ được hoàn thành bằng cách đánh dấu những thay đổi nhỏ cho một số giá trị dữ liệu trong Si sao cho số lượng các vi phạm dương (vc(Si)) cũng là 1 ít hơn (vfalse  |Si|) nếu b = 0, hoặc 2 và nhiều hơn (vtrue  |Si|) nếu b = 1.

Thuật toán mã hóa bít đơn:

encode(bit, set, vfalse, vtrue, c) compute avg(set), δ(set) compute vc(set)

if (bit)

compute v* ← vtrue – vc(set)

alter v* items close to the stddev boundary so that they become > vtrue

else

(!bit) case is similar compute vc(set)

if vc(set) satisfies desired bit value return true

else rollback alterations (distribution shifted too much ?) return false

Trên cơ sở thuật toán mã hóa bit đưon, chúng ta có thể xây dựng thuật toán nhúng thủy vân.

Thuật toán nhúng thủy vân

watermark(attribute, wm_key, mark_data[], plugin_handler,

db_primary_key, subset_size, vfalse, vtrue, c)

sorted_attribute ← sorted_on_normalized_crypto_hash(wm_key, db_primary_key, wm_key)

for(i=0; i<

size subset

Một phần của tài liệu bảo vệ bản quyền cơ sở dữ liệu bằng thủy vân ảnh số (Trang 27 - 48)

Tải bản đầy đủ (PDF)

(48 trang)