Giấu tin trong ảnh bitmap 8 bit màu

Một phần của tài liệu Nghiên cứu một số kỹ thuật giấu tin trong môi trường Multimedia (Trang 56)

Với ảnh 8 bit màu, có hai kỹ thuật giấu tin phổ biến: Kỹ thuật giấu tin trong bảng màu và kỹ thuật giấu tin trong vùng Data. Kỹ thuật thứ nhất sẽ thực hiện giấu tin vào bảng màu của ảnh, bằng cách thay đổi giá trị các byte dự trữ trong bảng màu. Với cách giấu này, chất lượng ảnh trước và sau khi giấu là không đổi, nhưng độ an toàn của thông tin cần giấu là không cao. Kỹ thuật giấu tin trong vùng Data, vùng được chọn để giấu tin là vùng dữ liệu của ảnh, các thuật toán giấu tin sẽ tác động, biến đổi giá trị trong vùng dữ liệu nhằm thỏa mãn một điều kiện nào đó. Do vậy ảnh sau khi giấu tin có thể bị biến đổi so với ảnh ban đầu.

Đối với kỹ thuật giấu tin trong vùng dữ liệu ảnh, việc giấu tin gặp phải những khó khăn nhất định, các thuật toán giấu tin tác động lên vùng Data của ảnh, việc tác động này có thể làm thay đổi chỉ số màu của các điểm ảnh. Do vậy, khi thực hiện thay đổi chỉ số màu của một phần tử nếu xử lí không khéo sẽ dẫn đến lộ vị trí điểm ảnh đã thay đổi, vì màu sắc của hai chỉ số màu trong bảng màu có thể sẽ rất khác nhau và dễ dàng phân biệt được bằng hệ thống thị giác của người. Phần tiếp theo, dựa trên tư tưởng giấu tin của Wu-Lee, luận văn sẽ đề xuất thuật toán HD8 để giấu tin trên ảnh bitmap 8 bit màu và khả năng che giấu của thuật toán HD8 sẽ cao hơn thuật toán giấu tin của Wu-Lee.

3.2.1. Thuật toán giấu tin HD8

Định nghĩa 3.1. Phép toán MOD trên ma trận nguyên F ký hiệu MOD(F) là ma trận nhị phân cùng kích thước C = MOD(F) | Ci,j = Fi,j mod 2

Định nghĩa 3.2. Cho ma trận F kích thước mxn, phần tử (u,v) được gọi là lân cận của phần tử (i,j) nếu u =i hoặc i±1 và v =j hoặc j±1

Định nghĩa 3.3. Phép toán tăng một đơn vị ký hiệu INC được định nghĩa          255 1 255 1 ) ( A if A A if A A INC B

Định nghĩa 3.4. Phần tử (i,j) được gọi là phần tử trên biên trong ma trận F nếu tồn tại phần tử (u,v) (với u = i hoặc i±1 và v = j hoăc j±1) mà Fi,j khác tính chẵn lẻ với Fu,v.

Ví dụ: Cho ma trận nguyên kích thước 5x5 như trong Hình 3.2, theo định nghĩa 3.3 sẽ tồn tại một số điểm trên biên như các phần tử (3,2), (3,5)… Và phần tử (1,2) không phải là phần tử trên biên.

1 1 3 0 0

1 1 1 1 1

0 1 0 0 4

1 0 0 1 1

0 0 1 1 0

Hình 3.2 Thí dụ minh hoạ về phần tử trên biên

Như đã trình bày trong phần nhận xét 2.2.4, trong trường hợp cần thay đổi một phần tử trên ma trận F, thuật toán giấu tin của Wu-Lee sẽ chọn ngẫu nhiên một phần tử (i,j) mà Ti,j = 1 để thay đổi. Cũng chính vì chọn ngẫu nhiên để thay đổi nên trong một số trường hợp sau khi thay đổi sẽ cho ta một ảnh khá khác biệt so với ảnh gốc. Và có thể dễ dàng quan sát được sự thay đổi bằng mắt thường như trong Hình 2.2

Theo Wu-Lee, việc thay đổi trên ma trận F luôn được thực hiện trên phần tử (i,j) mà Ti,j =1. Với điều kiện Ti,j =1 chúng ta có khá nhiều vị trí lựa chọn khác nhau tuy nhiên, để ảnh sau khi biến đổi giống với ảnh gốc chúng ta cần có tiêu trí hợp lí để xác định vị trí của phần tử cần thay đổi. Các tiêu trí hay được chọn để thay đổi là: Thay đổi trên biên, thay đổi phần tử có màu không quan trọng... Trong luận văn sẽ cải tiến thuật toán Wu-Lee bằng cách chọn phần tử trên biên để thay đổi.

Theo Wu-Lee, thuật toán sẽ biến đổi F thành ma trận G sao cho SUM(GK) cùng tính chẵn lẻ với b, nếu SUM(GK) chưa

cùng tính chẵn lẻ với b thì sẽ biến đổi bằng cách tăng hoặc giảm giá trị của một phần tử Fi,j mà Ti,j = 1. Tuy nhiên đối với ảnh 8 bit màu, việc tăng giảm giá trị của một phần tử Fi,j, có thể dẫn đến một giá trị màu mới rất khác so với màu trước đó. Do vậy, trong luận văn sẽ cải tiến thuật toán Wu-Lee để cố gắng không tạo ra một màu mới trong mỗi khối bit nhằm tăng tính che giấu cho thuật toán.

Để không xuất hiện chỉ số màu mới trong khối điểm ảnh F và sau khi giấu tin G phải thoả mãn SUM(G K) mod 2 = b. Thuật toán được cải tiến như sau:

Giả sử cần thay đổi giá trị phần tử (i,j) trong ma trận F ứng với Ti,j=1. Ta xét các trường hợp sau:

+ Nếu Fi,j là một số chẵn thuật toán sẽ tìm phần tử (u,v) mà Fu,v là một số lẻ và thay đổi Fi,j = Fu,v

+ Nếu Fi,j là một số lẻ thì thuật toán sẽ tìm phần tử (u,v) mà Fu,v là số chẵn và thay đổi Fi,j = Fu,v

Thí dụ minh hoạ

Giả sử có một khối chỉ số màu của các điểm ảnh F kích thước 7x5 và vị trí điểm cần thay đổi là (4,4) kết quả thu được là G hoặc G‟ như trong Hình 3.3.

1 2 1 1 2 1 2 1 1 2 2 4 1 2 3 2 4 1 2 3 3 4 5 6 7 3 4 5 6 7 F = 23 12 39 24 10 G = 23 12 39 39 10 45 36 39 34 66 45 36 39 34 66 23 45 1 1 45 23 45 1 1 45 1 12 0 13 12 1 12 0 13 12 1 2 1 1 2 2 4 1 2 3 G’ = 3 4 5 6 7 23 12 39 7 10 45 36 39 34 66 23 45 1 1 45 1 12 0 13 12 Hình 3.3 Thí dụ minh hoạ thay đổi nhưng không tạo màu mới

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

Input:

- b là bít nhị phân cần giấu

- Ma trận nhị phân Km×n là khoá bí mật

- Ma trận môi trường không gian ảnh Fm×n i,j (i =1,2..m và j = 1,2,..n| 0<= Fi,j <=255)

Output: (adsbygoogle = window.adsbygoogle || []).push({});

Nếu thuật toán thành công kết quả thu được là ma trận Gm×n được biến đổi từ F, và G luôn thoả 3 tính chất sau:

+ 0< SUM(MOD(G)  K) <= SUM(K) – 1

+ SUM(MOD(G)  K) mod 2 = b

+ G và F chỉ khác nhau tối đa là 1 vị trí

Nội dung thuật toán

If 0< SUM(MOD(F)  K) <= SUM (K) – 1 Then{

If SUM(MOD(F) K) mod 2 = b Then return TRUE; If SUM(MOD(F) K) = SUM(K) – 1 Then{

- Xây dựng tập điểm trên biên trong ma trận W = {(i,j)|MOD(Fi,j)=1 và Ki,j =1}

- If W Ø then chọn phần tử (i,j) thuộc W và thực hiện Fi,j=Fu,v với MOD(Fu,v) = 0 và (u,v) là lân cận của (i,j)

- If W = Ø the chọn phần tử (i,j) bất kỳ MOD(Fi,j) =1 và Ki,j=1 và thực thực hiện Fi,j = INC(Fi,j)

Return TRUE }

If SUM(MOD(F) K) = 1 Then {

- Xây dựng tập các điểm trên biên W = {(i,j)|MOD(Fi,j) = 0 và Ki,j =1}

- If W Ø then chọn một phần tử (i,j) thuộc W và thực hiện Fi,j=Fu,v với MOD(Fu,v) = 1 và (u,v) là lân cận của (i,j)

- If W = Ø the chọn phần tử (i,j) bất kỳ MOD(Fi,j) =0 và Ki,j=1 và thực thực hiện Fi,j = INC(Fi,j)

- Xây dựng tập các điểm trên biên W = {(i,j) | Ki,j =1} trong F

- If W Ø then chọn một phần tử (i,j) thuộc W và thực hiện Fi,j=Fu,v với MOD(Fu,v) <> MOD (Fi,j) và (u,v) là lân cận của (i,j)

- If W = Ø the chọn phần tử (i,j) bất kỳ với Ki,j=1 và thực thực hiện Fi,j = INC(Fi,j)

Return TRUE }

return FALSE; // không giấu tin

Nhận xét thuật toán giấu tin HD8

Thứ nhất: Khả năng giấu tin của thuật toán HD8 bằng với khả năng giấu tin của thuật toán Wu-Lee. Vì cả hai thuật toán chỉ thực hiện giấu một bit vào ma trận điểm ảnh F kích thước mxn.

Thứ hai: Độ an toàn của thuật toán giấu tin HD8 bằng với độ an toàn toàn của thuật toán giấu tin của Wu-Lee vì cùng sử dụng ma trận khoá K.

Thứ ba: Thuật toán HD8 có tính che giấu cao hơn thuật toán của Wu-Lee. Trong thuật toán HD8 luôn cố gắng tìm vị trí của phần tử trên biên để thực hiện thay đổi. Khi thay đổi, thuật toán sẽ cố gắng không tạo ra chỉ số màu mới trong khối bit bằng cách hoán vị chỉ số màu của phần tử khác trong khối nếu thoả mãn điều kiện biến đổi. Để tăng tính che giấu cho thuật toán chúng ta nên chọn khoá K có nhiều phần tử bằng 1 để khả năng tập W Ø.

3.2.2. Kết quả thử nghiệm thuật toán HD8

Với kích thước các ma trận là 8x7 và dẫy ký tự cần giấu là: “Kỷ niệm 40 năm ngày thành lập quân đội nhân dân Việt Nam”, kết quả thử nghiệm giấu tin theo thuật toán HD8 trên ảnh bitmap 8 bit màu được thể hiện như Hình 3.4

a) Ảnh gốc b) Ảnh chứa tin mật

Hình 3.4. Kết quả thử nghiệm giấu tin trên ảnh bitmap 8 bit màu

3.3. Giấu tin trong ảnh bitmap 24 bit màu (adsbygoogle = window.adsbygoogle || []).push({});

Như đã trình bày trong phần 3.1, với ảnh bitmap 24 bit màu, mỗi điểm ảnh được biểu diễn bởi 24 bit, và số lượng bit được chia đều cho ba thành phần màu cơ bản. Theo một số kết quả nghiên cứu đã được công bố, mắt người cảm nhận sự thay đổi của thành phần màu Blue kém hơn so với sự thay đổi của thành phần Red và Green. Dựa trên các kết quả này, đã có một số tác giả đề xuất thuật toán giấu tin trong ảnh 24 bit màu, bằng cách biến đổi giá trị bit thấp nhất của thành phần Blue theo tư tưởng sau:

+ Nếu cần giấu 0 thuật toán sẽ biến đổi thành phần màu Blue sao cho tổng các bit bằng 1 là một số chắn.

+Nếu cần giấu 1 thuật toán biến đổi thành phần màu Blue sao cho tổng các bit bằng 1 là một số lẻ.

Với kỹ thuật nêu trên, mắt người khó có thể phân biệt được sự khác nhau giữa ảnh trước khi giấu tin với ảnh sau khi giấu tin, vì mỗi điểm ảnh chỉ bị biến đổi giá trị thành phần màu Blue tối đa là một đơn vị. Tuy nhiên, với kỹ thuật này độ an toán của dữ liệu mật sẽ không cao và lượng thông tin có thể giấu không nhiều.

Như đã phân tích trong Chương 2, thuật toán giấu tin CPT là thuật toán giấu tin có độ bảo mật cao, và lượng tin có thể giấu được tương đối lớn so với các thuật toán khác. Dựa trên ý tưởng giấu tin trong thuật toán CPT, phần tiếp theo của luận văn sẽ trình bày thuật toán HD24 để giấu tin trong ảnh bitmap 24 bit màu.

3.3.1. Thuật toán giấu tin DH24

Theo kết quả nghiên cứu của một số tài liệu, khả năng phân biệt của mắt người về sự thay đổi giá trị bit thấp nhất trong thành phần màu Blue kém hơn so với các thành phần Red và Green. Tuy nhiên, qua quá trình thực nghiệm đã nhận thấy rằng; với ảnh 24 bit màu nếu chúng ta thực hiện thay đổi giá trị của bit thấp nhất trong bất kỳ thành phần màu nào thì mắt người đều không thể phát hiện được. Vì vậy, chúng ta nên sử dụng cả ba thành phần màu để thực hiện giấu tin, khi đó lượng thông tin có thể giấu được trên cùng một tệp ảnh sẽ tăng gấp ba lần so với các trường hợp chỉ dùng thành phần Blue để giấu tin.

Đối với ảnh bitmap 24 bit màu, một điểm ảnh được biểu diễn bởi ba thành phần màu: Red, Green, Blue. Mỗi thành phần màu có giá trị từ 0 đến 255 và được lữu trữ bởi một byte. Vì vậy, khi thay đổi giá trị bit thấp nhất của một thành phần màu sẽ làm cho

giá trị của màu đó được tăng giảm một đơn vị trong khoảng từ 0 đến 255. Để tiện việc theo dõi, luận văn coi việc giấu tin trong ma trận thành phần màu F tương đương với việc giấu tin trong ma trận số nguyên F mà giá trị của mỗi phần tử trong ma trận F là một số nguyên từ 0 đến 255. Và nội dung thuật toán HD24 được trình bày cho một ma trận F. Tuy nhiên, chúng ta có thể thực hiện thuật toán này trên toàn bộ không gian ảnh bằng cách chia các byte trong vùng dữ liệu ảnh thành nhiều ma trận cùng kích thước và áp dụng thuật toán đối với từng ma trận Fi.

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

Input:

- Ma trận F kích thước m×n (ký hiệu Fmxn) với 0<= Fi,j <= 255 |i = 1,2..m, j=1,2..n

- Dẫy gồm r bit cần giấu là b1b2…br (với 2r ≤ m×n) - K là ma trận nhị kích thước mxn và là khoá bí mật - W là ma trận trong số cẩp r và có kích thước mxn

Output:

Gọi b là giá trị thập phân của dãy bít b1b2…br, G là ma thu được sau khi biến đổi tối đa hai phần tử từ ma trận F. Khi đó G sẽ phải thoả mãn bất biến sau:

SUM((MOD(G)K)W) mod 2r = b

Nội dung thuật toán

Bước 1: Tính T = MOD(F)K Bước 2: Tính S = SUM(TW)

Zα = {(i,j) | (Wi,j =α và Ti,j =0) hoặc (Wi,j=2r-α và Ti,j =1)} Bước 4:

Đặt d = b – S (mod 2r

)

Trường hợp 1: nếu d=0

G = F // Khi đó b = S (mod 2r) do đó giấu mà không cần biến đổi F

Trường hợp 2: nếu d0

- Trường hợp 2.1: nếu ZdØ

Chọn phần tử (i,j)  Zd và thực hiện Fi,j = INC (Fi,j)

G = F

- Trường hợp 2.2: nếu Zd=Ø Thực hiện như sau:

 Chọn h là số tự nhiên đầu tiên thoả mãn ZhdØ và Z(h-1)d=Ø.

 Chọn (i,j) Zhd và (u,v)  Zd-hd (adsbygoogle = window.adsbygoogle || []).push({});

 Fi,j = INC (Fi,j)

 Fu,v = INC(Fu,v)

Thí dụ minh hoạ thuật toán HD24

Giả sử cần giấu dãy bit 1011 vào ma trận số nguyên F có kích thước 4x4 với các tham số đầu vào như hình 3.5

1 0 1 0 1 3 2 6 1 0 1 0 7 8 5 4 K = 0 1 1 0 W = 12 11 9 10 1 0 1 1 12 14 15 3 31 80 19 100 0 0 0 0 51 71 220 231 0 1 1 1 F = 172 131 232 149 MOD(F)K= 0 0 1 1 182 108 255 252 1 0 0 1 T 0 0 0 0 F 31 80 19 100 0 8 5 4 1011 51 72 220 231 TW = 0 0 9 10 G = 172 131 232 149 12 0 0 3 182 108 255 252

Hình 3.5 Thí dụ minh hoạ thuật toán HD24 Thật vậy:

- Tính s = SUM(TW ) = 51 - Đặt d = b - s (mod 2r

) = 11 - 41 (mod 16) = 8 Vì d = 8 0, nên ta xây dựng tập

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 HD24 ta sẽ Fi,j = INC(Fi,j)|(i,j) thuộc Zd. Chọn i =2 và j = 2 thực hiện phép INC phần tử F2,2 ta sẽ được ma trận kết quả G như trong Hình 3.5

3.3.2. Phân tích thuật toán HD24

Theo định nghĩa 3.1, phép toán MOD thực chất là chuyển một ma trận số nguyên về ma trận nhị phân và giá trị của các phần tử trong ma trận nhị phân cũng chính là giá trị của bit thấp nhất trong thành phần màu của các điểm ảnh tương ứng. Do vậy, Bước 1, Bước 2 và Bước 3 của thuật toán HD24 là tương đương với Bước 1, Bước 2 và Bước 3 trong thuật toán CPT

Trong thuật toán sử dụng phép toán INC để thay đổi giá trị của một phần tử trong ma trận F. Gọi (i,j) là phần tử cần thay đổi, theo định nghĩa 3.3, khi thực hiện Fi,j = INC(Fi,j) thì tính chẵn lẻ của Fi,j bị thay đổi. Do Fi,j thay đổi tính chẵn lẻ nên MOD(Fi,j) sẽ thay đổi từ 1 thành 0 hoặc từ 0 thành 1. Do tính chất của phép toán , khi Fi,j thay đổi tính chẵn lẻ thì Ti,j cũng sẽ thay đổi (từ 1 thành 0 hoặc từ 0 thành 1) và sẽ dẫn đến giá trị của S trong bước 2 sẽ tăng thêm lượng là Wi,j. Do vậy, Bước 4 trong thuật toán HD24 tương đương với Bước 4 của thuật toán CPT vậy thuật toán HD24 hoàn toàn đúng đắn.

3.3.3. Kết quả thử nghiệm thuật toán HD24

Thuật toán HD24 được thử nghiệm trên ảnh bitmap 24 bit màu có kích thước 290x331, và thông tin cần giấu là đoạn văn bản “Do ảnh hưởng của bão số 5, mưa lớn gió to, một chiếc xe tải khi đi qua đèo Phước Tượng (xã Lộc Thủy, Phú Lộc, Thừa Thiên-Huế) đã tự lật nhào, khi bị một xe đi ngược chiều lấn đường” với kết quả giấu tin được thể hiện như Hình 3.6.

a) Ảnh trước khi giấu b) Ảnh sau khi giấu tin Hình 3.6 Thử nghiệm thuật toán HD24 trên ảnh bitmap 24 bit màu

3.4. Giấu tin trong dữ liệu âm thanh

Tín hiệu âm thanh được số hoá và lưu trữ trên máy tính với nhiều

Một phần của tài liệu Nghiên cứu một số kỹ thuật giấu tin trong môi trường Multimedia (Trang 56)