3.2. Các kỹ thuật giấu tin trong ảnh nhị phân
3.2.3. Kỹ thuật giấu tin THA
a) Một số định nghĩa
Định nghĩa 1: Ký hiệu ⊗ là phép nhân theo phần tử của hai ma trận cùng cấp
m×n:
( ⊗ ), = F, × G,, i = 1,2, … , m và j = 1,2, … , n
Định nghĩa 2: Phép ⨁ hai số ngun khơng âm là phép tốn xor trên từng cặp
bít tương ứng của chúng.
Ví dụ: 5 ⨁ 12 = 0101⨁1100 = 1001=9
Định nghĩa 3:Với D là ma trận ngun khơng âm cấp m×n, ký hiệu s =
XSUM(D) hay ∑⨁, , được hiểu là phép ⨁ trên tất cả các phần tử của D.
b) Thuật toán giấu tin trên một khối
Nội dung phần này trình bày các thuật toán giấu tin trên một ma trận nhị phânkhối điểm ảnh F cấp m×n, các thuật tốn trong mục này chỉ biến đổi nhiều nhất một phần tử trên F.
c) Thuật tốn nhúng một bít
Đối với ảnh nhị phân, lược đồ của Wu-Lee được biết đến như là một lược đồ đơn giản thuộc nhóm kỹ thuật giấu tin theo khối bít. Lược đồ này sử dụng ma trận nhị phân ngẫu nhiên K cấp m×n làm khóa bí mật. Theo đó, thuật tốn có thể nhúng một bít b vào F bằng việc biến đổi nhiều nhất một phần tử trên F để nhận được G thỏa mãn điều kiện:
SUM(G⨂K)mod 2 = b
Lược đồ này không thể mở rộng để giấu một dãy bít.
Xét một thuật toán khác bằng cách thay XSUM(G⨂K) = b cho điều kiện SUM(G⨂K)mod 2 = b trong thuật tốn Wu-Lee. Thuật tốn này có thể mở rộng để
giấu một dãy r bít.
Thuật tốn 1
Thuật tốn này sẽ biến đổi nhiều nhất một phần tử trên F để nhận được G thỏa mãn điều kiện:
XSUM(G⨂K) = b
Thuật tốn được thực hiện như sau: Bước 1:Tính s = XSUM(F⨂K)
Nếu b = s, đặt G = F, kết thúc thuật tốn \\Nhúng mà khơng cần thay đổiảnh
Ngược lại, chuyển đến Bước 2 Bước 2:Tính d = s⨁b
Tìm một phần tử ( , )sao cho , =
Fu,v = 1- Fu,v \\ Đảo phần tửFu,v Đặt G = F
Kết thúc thuật toán
Nhận xét 1: Trong thuật tốn d = 1.Vì vậy, để bước 2 ln thực hiện được thì ma trận K cần thỏa mãn điều kiện:
{1} ⊂ { , | = 1, … , và = 1, . . . , }
c) Thuật toán nhúng dãy bít
Trong mục này ta sẽ mở rộng Thuật tốn 1 để nhúng dãy bít = … vào khối điểm ảnh F bằng cách sử dụng ma trận khóa K gồm các phần tử là các dãy nhị phân r bít. Nói cách khác, các phần tử Ki,j có giá trị từ 0 đến 2r-1.
Tương tự như Thuật toán 1, thuật toán dưới đây sẽ biến đổi nhiều nhất một phần tử của F để được ma trận G thỏa mãn điều kiện:
Thuật toán 2:
Bước 1:Tı́nh s = XSUM(F⨂K)
Nếu = , đặt G = F và kết thúc thuật toán Ngược lại, chuyển sang Bước 2
Bước 2:Tı́nh d = s⨁b
Chọn một phần tử (u, v) sao cho K , = d F , = 1 − F ,
Đặt G = F và kết thúc thuật toán
Nhận xét 2: Trong thuật toán trên, d là một số nguyên từ 1 đến 2r-1. Do đó, để bước 2 ln thực hiện được thì ma trận khóa K phải thỏa mãn điều kiện:
{1, 2, … , 2 − 1} ⊆ { , | = 1,2, … , và = 1,2, … , }
Từ điều kiện này suy ra: ≤ ⌊log ( × + 1)⌋
d) Ví dụ minh họa
Nhúng hai bít b1b2 vào ma trận F với các tham số cụ thể như sau:
b=b1b2=10 F K 1 0 0 10 01 10 0 1 1 11 01 10 0 1 1 11 11 01 Bước 1: Tính s = ( ⨂ ) = 10⨁01⨁10⨁11⨁01 = 11
Do s ≠ b, chuyển sang Bước 2 Bước 2: Tính = ⨁ = 11⨁10 = 01
Theo thuật toán chọn ( , )| , = , suy ra (u,v) = (1,2) Đảo F1,2: F1,2=1-0 = 1
Đặt G = F.
G 1 1 0 0 1 1 0 1 1
e)Chứng minh thuật tốn nhúng dãy bít
Để khẳng định Thuật toán 2 đúng ta cần chứng minh trong mọi trường hợp kết thúc G luôn thỏa mãn điều kiện: ( ⨂ ) =
Xét hai trường hợp kết thúc của thuật toán:
Trường hợp 1: Thuật toán kết thúc tại Bước 1, hiển nhiên G thỏa mãn điều kiện
(2). Bởi, G chính là F, mà F thỏa mãn điều kiện ( ⨂ ) = .
Trường hợp 2:Thuật tốn kết thúc tại Bước 2
- Tính = ⨁ ,
- Chọn một phần tử (u, v)| , = , - Đảo Fu,v: Fu,v=1-Fu,v
- Đặt G=F
Khi đó, dễ dàng suy ra các phần tử của G được xác định theo công thức sau: , = , , ê ( , ) ≠ ( , ) 1 − , , ê ( , ) = ( , ) (3.1) Gọi j i j i j i K G K G XSUM s , , , ) ( ' Từ (3.1) suy ra: ] ) 1 [( ' , , ) , ( ) , ( , , uv uv v u j i j i j i K F K F s (3.2)
Do F là ma trận nhị phân nên Fu,v=0 hoặc 1. Xét hai trường hợp của Fu,v.
o Trường hợpFu,v=0, từ (3.2) suy ra:
] ) 1 [( ' , , , , , uv uv j i j i j i K F F F s s'sKu,v (3.3)
o Trường hợp Fu,v=1, từ (3.2) suy ra: v u v u v u v u v u j i j i j i K F K K K F s , , , , ) , ( ) , ( , , [(1 ) ] ' uv uv uv j i j i j i K F F K F s , , , , , , [(1 ) ] ' s'sKu,v (3.4)
Từ (3.3) và (3.4) suy ra khi đảo giá trị Fu,v thì s = XSUM(G⨁K) = s ⨁ K , Mặt khác, theo thuật toánK , = d ma ̀d = s⨁b nên s = s ⨁ s ⨁b = b
Vậy ( ⨂ ) = .
Thuật toán 3
Để nâng cao mức độ an tồn của Thuật tốn 2, ta có thể sử dụng thêm một số
∈ {0,1,2, … , 2 − 1} làm khóa thứ 2. Khi đó ta nhận được thuật tốn 3 có nội
dung tương tự như Thuật toán 2 ngoại trừ s được tính theo cơng thức:
s = XSUM(F⨂K)⨁ w
Ngồi ra, để khơi phục dãy bít b, sử dụng cơng thức sau:
SUM(G⨂K)⨁ w = b
Ta nhận thấy ma trận G trong Thuật toán 3 được xác định từ F, K, w và b. Vì vậy, ta có thể xem Thuật tốn 3 như một phép biến đổi T từ (F,K,w,b) đến G:
G = T(F,K,w,b)
f) Lược đồ giấu tin trên ảnh nhị phân
Giả sử I là ảnh nhị phân dùng để giấu tin và b là dãy bít tin mật cần giấu. Trong thuật toán sử dụng hai khóa K và W, trong đó K là ma trận cấp m×n thỏa mãn hai điều kiện:
(1) ∀(i, j) K, ∈ {0,1, … , 2 − 1}
(2) {1,2, … , 2 − 1} ⊂ {K, |i = 1, … , mvàj = 1, … , n}
với r ≤ ⌊log (m × n + 1)⌋
và W = {w , w , … . , w }với 0 ≤ w ≤ 2 − 1 và 0 < t ≤ N
Bước 1: Chia khối - Chia ảnh I thành N khối Fi cấp m×n, chia b thành N dãy bít bi có độ dài
Bước 2: Giấu tin trên từng khối For i=1 to N do
α = (i − 1) mod t + 1
Gi=T(Fi, K, wα, bi) End for
Thuật toán cho ta ảnh G gồm các khối Gi cấp m×n với i =1,…,N
Thuật tốn khơi phục thơng tin
Gọi G là ảnh có chứa dãy bít tin mật, thuật tốn khơi phục tin giấu cần biết hai khóa bí mật K và W đã được sử dụng trong thuật toán giấu tin.
Bước 1: Chia ảnh G thành N khối Gi cấp m×n Bước 2: Khơi phục dãy bít
For i = 1 to N do
α = (i − 1) mod t + 1
b = XSUM(G ⨂K)⨁w
End for
Kết quả ta nhận được dãy bít tin mật b gồm N dãy con r bít bi, i=1,2,…,N