Thí dụ minh hoạ trường hợp thay đổi một bit
Quá trình giấu tin:
Giả sử cần giấu dãy bit 1011 vào ma trận điểm ảnh có kích thước 4x4 với các tham số đầu vào như hình 2.1
1 0 1 0 1 0 1 0 1 3 2 6
1 1 0 1 1 0 1 0 7 8 5 4
F = 0 1 0 1 K = 0 1 1 0 W = 13 11 9 10
0 0 0 0 0 0 0 0 F 1011 1 0 1 0
0 1 1 1 0 8 5 4 1 0 0 1
F⊕K= 0 0 1 1 T⊗W = 0 0 9 10 G = 0 1 0 1
1 0 0 1 12 0 0 3 0 0 1 0
T
Hình 2.1. Minh hoạ thuật toán CPT trường hợp thay đổi 1 bit
- Tính s = SUM(T⊗W ) = 51
- Đặt d = b - s (mod 2r) = 11 - 51 (mod 16) = 8 Vì d = 8≠0, nên ta xây dựng tập
Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}
Với α = d = 8, xét ma trận W ta thấy phần tử (2,2) thoả mãn điều kiện: (W2,2=2r - d và T2,2= 1), suy ra Zd≠Ø.
Do Zd≠Ø, theo thuật toán CPT chỉ cần đảogiá trị phần tử Fi,j |(i ,j) thuộc Zd. Chọn i =2 và j = 2 thực hiện phép đảo phần tử F2,2 ta sẽ được ma trận kết quả G như trong Hình 2.1.
Quá trình giải mã:
Giả sử khi nhận được ma trận G đã chứa thông tin cần giấu, với các giá trị trên Hình 2.2, để giải mã thông tin giấu trong G ta sẽ thực hiện tính theo bất biến:b’ =SUM(T⊗W) mod 2r
b’ = 43 mod 16 b’ = 11 = 1011(2) 1 0 1 0 1 0 1 0 1 3 2 6 G = 1 0 0 1 K = 1 0 1 0 W = 7 8 5 4 0 1 0 1 0 1 1 0 13 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3 0 0 0 0 0 0 0 0 T = 0 0 1 1 T⊗W= 0 0 5 4 0 0 1 1 0 0 9 10
1 0 0 1 12 0 0 3
G⊕K
Hình 2.2. Minh hoạ quá trình giải mã thông tin đã giấu
Thí dụ minh hoạ trường hợp thay đổi hai bit: Quá trình giấu tin:
Giả sử cần giấu dãy bit 0100 vào ma trận điểm ảnh có kích thước 4x4 với các tham số đầu vào F, K, W thì đầu ra tương ứng sau khi kết thúc thuật toán là ma trận G như trong Hình 2.3. Quá trình giấu diễn ra như sau:
- Tính: T = F⊕K (kết quả như Hình 2.3) - Tính: s = SUM(T⊗W ) = 59
- Đặt: d = (b - s) mod 2r = (4 - 59) mod 16 = 9 Vì d = 9 ≠0, nên ta xây dựng tập
Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}
Với α = d = 9, không tồn tại phần tử (i,j) để (Wi,,j=9 và Ti,j = 0) hoặc (Wi,j=7 và Ti,j=1), suy ra Zd = Ø.
+ Xét Z2d: Với d = 9 và do phép toán mod 2r nên Z2d = Z2. Do không tồn tại (i,j) để (Wi,,j=2 và Ti,j = 0) hoặc (Wi,j=14 và Ti,j=1) => Z2d = Ø
+Xét Z3d:với d = 9 ta có Z3d≠Ø vì tồn tại phần tử (3,2) để (W3,2 = 3d và T3,2 = 0).
- Theo thuật toán, khi Zhd≠Ø (h là số tự nhiên đầu tiên thoả mãn) ta sẽ thay đổi giá trị hai phần tử Fi,j và Fu,v với (i,j) thuộc Zhd và (u,v) thuộc Z d-hd.
+ Chọn (i,j) = (3,2) và (u,v) = (4,2), sau khi đảo F3,2 và F4,2 ta sẽ được ma trận kết quả G như trong Hình 2.3
1 0 0 1 1 0 1 0 1 3 2 6 1 1 0 1 1 0 1 0 7 8 5 4 F = 0 1 0 1 K = 0 1 1 0 W = 13 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3 0 0 1 1 0 0 2 6 1 0 0 1 0 1 1 1 0 8 5 4 1 1 0 1 T = 0 0 1 1 T⊗W = 0 0 9 10 G = 0 0 0 1 1 0 0 1 12 0 0 3 0 1 1 0 F⊕K
Hình 2.3. Thí dụ minh hoạ trường hợp thay đổi hai bit
Quá trình giải mã
Để giải mã thông tin đã được giấu trong ma trận G chúng ta cần tính b’= SUM((G⊕K)⊗W) mod 2r, sau đó đổi giá trị b’ thành dãy nhị phân gồm r bit có giá trị tương ứng và đó chính là dãy bit đã được giấụ
Ví dụ: với các ma trận W, K, G như trong hình 2.3 ta tính được thông tin giấu trong G như sau
b’= SUM((G⊕K)⊗W) mod 2r => b’ = 84 mod 16 = 4 = 0100(2)