Kỹ thuật giấu tin CPT 20

Một phần của tài liệu (LUẬN văn THẠC sĩ) giấu tin thuận nghịch trên ảnh số sử dụng phương pháp dự đoán và dịch chuyển histogram (Trang 29 - 38)

* Ý tưởng

Thuật toán giấu tin của ba tác giả Y.Chen, H.Pan, Y.Tseng [7] cũng áp dụng tư tưởng giấu tin theo khối bit nhưng mỗi khối có thể giấu được một dãy r bit (với ) bằng cách thay đổi nhiều nhất hai bit trong khối. Như vậy so với thuật toán giấu tin của Wu-Lee, thuật toán CPT có khả năng giấu rất cao, trong khi số bit cần thay đổi khá ít, do đó sẽ không ảnh hưởng đáng kể đến chất lượng ảnh sau khi giấu. Thuật toán CPT sử dụng một ma trận trọng số để giấu được một dãy nhiều bit vào trong mỗi khối và ma trận trọng số này cũng chính là một thành phần bí mật cùng với ma trận khoá, do

vậy độ an toàn của thuật toán CPT cao hơn của thuật toán giấu tin của Wu- Lee.

* Thuật toán nhúng tin CPT

Tóm tắt thuật toán

Để tiện cho việc trình bày, trong luận văn sẽ trình bày nội dung thuật toán CPT áp dụng cho một khối bit (ma trận nhị phân). Các phép toán sử dụng trong thuật toán này đều được hiểu theo nghĩa .

Input:

 Fm × n là ma trận nhị phân (khối điểm ảnh) và là môi trường dùng để giấu tin

 r là số bit cần giấu vào ma trận F, r phải thỏa mãn điều kiện

 K là ma trận nhị phân cấp và là khóa bí mật để giải tin

 W là ma trận trọng số cấp r gồm m hàng và n cột, W được giữ bí mật  là dãy bit nhị phân cần nhúng

Output:

Gọi b là giá trị thập phân của dãy , G là ma trận sau khi đã giấu b vào F bằng cách biến đổi tối đa 2 phân tử trong ma trận F, khi đó G phải thoả mãn bất biến (1.3).

(1.4) Nội dung thuật toán

Bước 1: Tính T = F K và r=

Bước 2: Tính S = SUM(T W)

Bước 3:

Nhận thấy nếu đảo giá trị (thay 0 thành 1 hoặc thay 1 thành 0) của một phần tử Fi,j sẽ làm cho S tăng thêm α đơn vị.

Bước 4:

Gọi G là khối bit sau khi đã giấu b vào F và S’= SUM((G K) W). Bước này sẽ thực hiện giấu b bằng cách thay đổi tối đa hai bit trong F sao cho đạt được bất biến: S’ = b (mod 2r) (1.5)

Bất biến (1.5) này cũng chính là cơ sở để khôi phục lại tin. - Tính d = b – S (mod 2r)

Trường hợp 1 Nếu d = 0 thì b = S (mod 2r) nên đã đạt được bất biến (1.5) do đó trường hợp này giấu b vào F mà không cần phải biến đổi F

Trường hợp 2 Nếu d 0 thì cần phải biến đổi F sao cho đạt được bất biến (2.7). Trong trường hợp này có hai khả năng:

Trường hợp 2.1 NếuZd Ø thì chọn (i,j)  Zd rồi đảo giá trị phần tử Fi,j, khi đó theo định nghĩa (2.1) S sẽ tăng thêm d đơn vị do đó đạt được bất biến (1.5)

Trường hợp 2.2 Nếu Zd = Ø thì tiếp tục xét Z2d, Z3d.... Chọn h là số tự nhiên đầu tiên thoả mãn Zhd Ø (xem nhận xét 1.2 bên dưới)

+ Chọn (i,j) Zhd và thay đổi bit Fi,j, khi đó theo (1.4) S tăng thêm một lượng là hd (1.6)

+ Chọn (u,v)  Zd-hd và thay đổi Fu,v, khi đó theo (1.4) S tăng thêm một lượng là d-hd (Zd-hd Ø xem nhận xét bên dưới) (1.7)

Từ (1.6) và (1.7) suy ra cần thay đổi hai bit Fi,j và Fu,v của F để có thể giấu được r bit thông tin vào F.

Nhận xét 1.1: Qua các bước thực hiện của thuật toán nhận thấy thuật toán sẽ

luôn thực hiện được nếu tồn tại h thoả mãn Zhd Ø. Điều này sẽ được chứng minh trong mục tiếp theo.

Nhận xét 1.2: Theo định nghĩa tập Zα và tính chất của ma trận trọng số W thì có thể suy ra: tập Z2r1  Ø.

Chứng minh Z2r1 Ø

Đặt α = 2r-1 thì giá trị α {1,2,…,2r-1}

Theo tính chất của ma trận trọng số W, các phần tử của W cần thoả mãn: {Wi,j |i=1..m, j=1..n} = {1,2, …,2r-1}

Vì vậy phải tồn tại ít nhất một cặp (i,j) sao cho Wi,j = α .

Mặt khác do T là ma trận nhị phân nên Ti,j có giá trị bằng 0 hoặc 1. Xét các trường hợp:

- Nếu Ti,j = 0: Do Wi,j = α nên (i,j) thoả điều kiện thứ nhất trong (1.6), vậy (i,j)  Zα

- Nếu Ti,j = 1: Do Wi,j = α mà α = 2r-1 = 2r – α nên (i,j) thoả điều kiện thứ hai trong (1.6), vậy (i,j)  Zα . Do đó tập Z2r1 Ø.

Nhận xét 1.3: nếu Zα = Ø thì Z -αØ

Chứng minh

Theo (1.4) định nghĩa về tập Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}

Do Zα = Ø và theo định nghĩa ma trận trọng số W luôn thoả mãn điều kiện {Wi,j |i=1..m, j=1..n} = {1,2, …,2r-1}. Vì vậy, phải tồn tại một phần tử (u,v) để (Wu,v = α và Tu,v = 1) hoặc (Wu,v = 2r - α và Tu,v = 0)

Mà 2r - α = - α (mod 2r) = - α.

Do đó, khi Zα = Ø sẽ tồn tại (u,v) để (Wu,v = - α và Tu,v = 0) (1.8)

Từ (1.4) và (1.6), ta suy ra khi Zα = Ø thì Z -αØ (1.9)

Vì h là số tự nhiên đầu tiên thoả mãn điều kiện Zhd Ø, suy ra Z( h - 1)d = Ø. Theo (1.8) khi Z( h - 1)d = Ø thì Zd-hd  Ø, vì vậy phép chọn phần tử (u,v) trong (1.7) luôn thực hiện được.

Chứng minh.

Trường hợp 1: Nếu d lẻ thì có thể biểu diễn d dưới dạng: d = 2t+1. Nhân cả 2 vế của biểu thức với 2r-1 ta có:

2r-1.d = 2r-1.2t+2r-1 suy ra 2r-1.d = t.2r+2r-1 = 2r-1 (mod 2r) Chọn h = 2r-1 ta có hd = 2r-1

Trường hợp 2: Nếu d chẵn và d chỉ chứa thừa số nguyên tố 2 thì có thể biểu diễn d dưới dạng: d = 2u (với u ≤ r-1). Xét các khả năng:

+ Nếu u = r-1 thì chọn h = 1 ta có hd =1.2r-1= 2r-1

+ Nếu u < r-1 thì chọn h = 2(r-1)-u ta có hd = 2(r-1)-u.2u = 2r-1

Trường hợp 3: Nếu d chẵn và d chứa cả các thừa số nguyên tố khác 2 thì có thể biểu diễn d dưới dạng: d = (2t+1)2v (với 1 ≤ v < r-1)

Chọn h = 2(r-1)-v ta có: hd = 2(r-1)-v (2t+1).2v = (2t+1)2r-1 = t.2r + 2r-1 = 2r-1 (mod 2r)

* Chứng minh tính đúng của thuật toán.

Theo nhận xét 1.2: để chứng minh tính đúng của thuật toán cần chỉ ra tồn tại h sao cho ZhdØ.

Theo nhận xét 1.5 luôn tồn tại h sao cho hd = -1 (mod ). Mặt khác theo nhận xét 1.2 tập do đó luôn tồn tại h sao cho . Điều đó chứng tỏ thuật toán luôn thực hiện đúng.

* Một số thí dụ minh họa thuật toán CPT

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 4 x 4: 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 = 12 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3

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 1.8. 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 đảo giá 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 1.8.

Quá trình trích tin

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 1.9, để 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 12 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 TW= 0 0 5 4

0 0 1 1 0 0 9 10 1 0 0 1 12 0 0 3

GK

Hình 1.9. 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 nhúng tin:

Giả sử cần giấu dãy bit 0100 vào ma trận điểm ảnh có kích thước 4 x 4 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 1.10. Quá trình giấu diễn ra như sau:

- Tính: T = F K (kết quả như Hình 1.10) - Tính: s = SUM(T W ) = 59 mod (16) =11 - Đặt: d = b – s (mod 2r) = 4 – 11 (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 : Với d = 9 và do phép toán mod 2r nên <=> . Do không tồn tại (i,j) để ( và = 0) hoặc ( =14 và =1) =>

Ø

+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) = (2,1), sau khi đảo F3,2 và F2,1 ta sẽ được ma trận kết quả G như trong Hình 1.10

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 = 12 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 TW = 0 0 9 10 G = 0 0 0 1 1 0 0 1 12 0 0 3 0 1 1 0 FK

Hình 1.10. Thí dụ minh hoạ trường hợp thay đổi hai bit Quá trình trích tin

Để giải mã thông tin đã được giấu trong ma trận G chúng ta cần tính b’=

, 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ấu.

Ví dụ: với các ma trận W, K, G như trong hình 1.10 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)

* Phân tích thuật toán

Thuật toán có thể giấu được r bit vào trong một khối với điều kiện là và chỉ cần thay đổi nhiều nhất là 2 bit trên một khối. Như vậy, thuật toán này đã có cải tiến rất lớn so với những thuật toán khác chỉ giấu được một bit vào mỗi khối

Độ an toàn của thuật toán cũng rất cao thông qua hai ma trận dùng làm khoá để giải tin đó là ma trận trọng số và ma trận khoá. Như vậy độ bảo mật của thuật toán là:

2m*n mn2 1 r r mn (2 1)

r

r (2 1)! (2 1)

C       

Thuật toán này đương nhiên có thể áp dụng cho ảnh màu và ảnh đa cấp xám. Ta cũng sẽ sử dụng kỹ thuật chọn ra bit ít quan trọng nhất của mỗi điểm ảnh để xây dựng ma trận hai chiều các bit 0, 1 như trong thuật toán với ảnh đen trắng.

Nếu áp dụng tốt thuật toán này cho ảnh màu thì có thể nói thuật toán đã đạt được yêu cầu cơ bản của một ứng dụng giấu tin mật đó là đảm bảo tính ẩn của thông tin giấu, số lượng thông tin giấu cao.

CHƯƠNG 2. PHƯƠNG PHÁP DỊCH CHUYỂN HISTOGRAM VÀ DỰ ĐOÁN

Một phần của tài liệu (LUẬN văn THẠC sĩ) giấu tin thuận nghịch trên ảnh số sử dụng phương pháp dự đoán và dịch chuyển histogram (Trang 29 - 38)

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

(69 trang)