Định lý 3.3: Dữ liệu được khôi phục bằng thuật toán khôi phục chính là dữ liệu gốc.
Chứng minh:
Xét lược đồ quan hệ R(P, A1, A2, ..., A), trong đó P là thuộc tính khóa chính
và gồm thuộc tính. Do thuật toán xác định trên các nhóm riêng biệt G0, G1, …, Gg-1 nên không mất tính tổng quát ta chứng minh cho nhóm Gk và các nhóm khác làm tương tự.
Xét các thuộc tính không phải khóa chính, giả sử trong nhóm Gk giá trị ô ri.Aj
bị thay đổi. Ta cần chứng minh, sau khi khôi phục bằng thuật toán khôi phục thì ô này chính dữ liệu gốc.
Thật vậy, xét cột thay đổi là j, và hàng thay đổi là i. Theo thuật toán khôi
phục, ta có:
Trong nhóm Gk, chỉ duy nhất giá trị của ô ri.Aj là bị thay đổi vì vậy giá trị của
các ô trên cột bị thay đổi j có hàng khác i vẫn đúng. (12)
Lấy thủy vân thuộc tính j đã được nhúng vào trong các ô của nhóm Gk, chính
là các bit LSB của riAp(j). (13)
Giá trị của ô có thể được thay đổi giá trị là 2 bit ít ý nghĩa nhất. (14) Dựa vào tính chất của hàm XOR: A XOR B = C thì B = A XOR C. (15)
Từ (12), (13), (14), (15) và áp dụng hàm XOR sẽ tính được giá trị của ô riAj
trừ hai bit LSB.
Do giả thiết mỗi thuộc tính có thể chấp nhận được các thay đổi tại nhiều nhất
là 2 bit ít ý nghĩa nhất, vì vậy dữ liệu tại ô riAj sau khi khôi phục chính là dữ liệu gốc.
Điều phải chứng minh.
Ví dụ minh họa thuật toán khôi phục:
Xét một tập dữ liệu bao gồm một cột bị thay đổi với các dữ liệu đã loại đi 2 bit ít ý nghĩa nhất, gồm 5 dòng với các giá trị tương ứng như sau: 1000, 1100, 1010, 1011, 1111.
Giả sử khóa thủy vân là 0000, hàm băm không làm thay đổi giá trị dữ liệu. Trong thuật toán nhúng tiến hành:
XOR khóa thủy vân với các giá trị ô dữ liệu như trong bảng thu được thủy vân nhúng W* =1010.
Nhúng thủy vân 1010 này vào bit ít ý nghĩa nhất của riAp(j) Quá trình khôi phục: phát hiện dòng thứ 3 bị thay đổi thành 0000.
XOR các dòng khác dòng thứ 3 với khóa thủy vân được: 0000.
Lấy lại thủy vân đã được nhúng W* từ các ô riAp(j) là: 1010, do cơ sở dữ liệu chỉ bị thay đổi duy nhất một ô.
XOR 2 giá trị này, thu được ô số 3 là 1010 như giá trị gốc sau khi loại đi 2 bit ít ý nghĩa nhất.
Do dữ liệu có thể chịu được sự thay đổi trong 2 bit ít ý nghĩa nhất vì vậy dữ liệu tại ô thứ 3 sau khi khôi phục chính là dữ liệu gốc.
3.3.5. Kết luận
Trong phần này, trình bày một lược đồ thủy vân để đảm bảo toàn vẹn dữ liệu cho các cơ sở dữ liệu quan hệ của Hamed và cộng sự. Thủy vân được nhúng vào cơ sở dữ liệu quan hệ trên cơ sở nhóm các bộ dưới sự kiểm soát của một khóa thủy vân. Các thủy vân nhúng vào quan hệ đã hình thành một lưới thủy vân có thể giúp phát hiện và khoanh vùng những thay đổi trong các nhóm đã chia và có thể khôi phục dữ liệu gốc đối với các ô bị thay đổi. Chúng tôi đã xây dựng và chứng minh tính đúng đắn của thuật toán khôi phục dữ liệu.