Kỹ thuật giấu dữ liệu đối với các loại ảnh dạng BM P

Một phần của tài liệu Một số kỹ thuật giấu dữ liệu trong ảnh tĩnh (Trang 39)

Đối với ảnh màu nói chung, việc phát triển các kỹ thuật giấu tin có nhiều thuận lợi. Bản thân dung lượng ảnh lớn, đặc biệt đối với các ảnh có số màu cao nên có khả năng tăng lượng thông tin giấu. Mỗi điểm ảnh mang một giá trị biểu thị màu, nếu giá trị màu của điểm ảnh thay đổi nhỏ thì cường độ màu thay đổi ít, chất lượng ảnh gần như không thay đổi do đó khó phát hiện bằng mắt thường. Với những ảnh mà mỗi điểm ảnh chỉ mang một giới hạn nhỏ các giá trị, việc giấu thông tin trong ảnh đảm bảo tính vô hình của dữ liệu giấu khó khăn hơn nhiều.

Thông thường ảnh càng có nhiều màu càng dễ giấu dữ liệu. Những ảnh khó nhất cho việc giấu dữ liệu là các ảnh có histogram đặc biệt hoặc có độ sâu màu nhỏ. Ví dụ: các ảnh có bảng màu với số lượng màu trong bảng màu ít thường một thay đổi nhỏ cũng tạo ra nhiễu. Không may là một phần các ảnh trên Internet lại sử dụng bảng màu như GIF, PNG, v.v. Hiện nay chưa có một kỹ thuật steganography bảo mật nào thực sự hiệu quả để giấu dữ liệu vào các loại ảnh có bảng màu. Một số phần mềm giấu thông tin trong các ảnh GIF có trên Internet nhưng thực nghiệm cho kết quả không tốt, nhiễu xuất hiện nhiều. Steganography bảo mật đối với các ảnh có bảng màu vẫn là một bài toán chưa giải quyết được.

Vấn đề đặt ra khi áp dụng các thuật toán, phương pháp giấu tin trong ảnh ứng với từng loại ảnh thì LSB là những bit nào, với một điểm ảnh chọn

tối đa bao nhiêu LSB. Ngoài ra cùng những bit được chọn đảo trên ma trận thứ cấp nên chọn bit nào là tốt nhất theo nghĩa đảo nó ảnh ít bị nhiễu hơn. Phần tiếp theo của mục này sẽ giải quyết các vấn đề đã nêu theo từng loại ảnh dạng BMP.

2.2.5.1. Loại ảnh có bảng m àu (palette-based)

Bao gồm các ảnh: trắng đen, 16 màu, đa cấp xám, 256 màu. Nói chung khả năng giấu dữ liệu trên ảnh loại này không tốt lắm.

Ảnh trắng đen: Không có LSB trong một điểm ảnh vì một điểm ảnh chỉ cần 1 bit để lưu trữ. Do đó có thể sử dụng phương pháp PDF, phát một bộ ngẫu nhiên N điểm, với 1 điểm sẽ thay bằng 1 bit dữ liệu. Dùng khoá K làm mần sinh bộ giả ngẫu nhiên, sử dụng giá trị hàm băm để sinh chuỗi ngẫu nhiên p, từ p xác định N vị trí giấu dữ liệu.

Ảnh 16 màu: Mỗi điểm ảnh biểu diễn 4 bit nên khó chọn LSB. Độ chênh lệch giữa các màu lớn, chỉ cần đảo một bit trong 4 bit điểm ảnh chuyển sang màu khác. Thuật toán 2.2.2 giấu r bit dữ liệu trong khối n X m nhưng bit được chọn để đảo phụ thuộc vào thuật toán nên khó khắc phục nhiễu. Có thể sử dụng thuật toán 2.2.1, chọn bit cần đảo có số láng giềng khác nó càng lớn càng tốt mục đích để giảm nhiễu. Nên đặt một ngưỡng tràn cho vùng ảnh, khối ảnh nằm trong ngưỡng này không sử dụng giấu tin.

Mỗi lần đảo bit giá trị màu của điểm ảnh tăng lên 1 hoặc giảm 1 có nghĩa thay đổi tính chẵn lẻ. Trong bảng màu của loại ảnh 16 màu các màu đứng gần nhau vẫn rất khác nhau. Do đó, khi đảo bit thay giá trị của điểm ảnh này bằng giá trị của một trong tám láng giềng của nó cùng tính chẵn lẻ.

Ví du: Cần đảo LSB của điểm chính giữa (như hình vẽ) thay giá trị này bằng 7 hoăc 3. _ _ _ _ _ _

16 7 7

16 14 7

Cách này cũng làm ảnh kết quả giảm nhiễu nhưng lại tăng một số phép toán tìm kiếm khi giấu tin.

Nhìn chung ảnh 2 màu và ảnh 16 màu, tỷ lệ giấu rất thấp, ảnh kết quả vẫn bị nhiễu.

Ảnh 256 màu: Loại ảnh này khả quan hơn 2 loại ảnh trên. Mỗi điểm ảnh lưu trữ trên một byte nên giá trị màu chênh lệch nhau 1 đơn vị độ khác của màu ít hơn loại ảnh 16 màu nên có thể sử dụng giấu dữ liệu bằng thuật toán 2.2.2 để tăng dung lượng giấu tin. Chọn LSB là bit thấp nhất của mỗi điểm ảnh, trong số những bit chọn để đảo (theo yêu cầu thuật toán) hãy chọn bit có số láng giềng khác nó càng nhiều càng tốt.

Tuy nhiên với ảnh sử dụng số màu ít, vùng bão hoà của ảnh lớn, ảnh ít nhiễu, chỉ cần đảo một vài bit LSB cũng gây nhiễu trên ảnh kết quả. Các tác giả [4, 5] đề nghị xếp lại bảng màu dựa trên độ lệch của các màu tính theo công thức:

d(a,b) = V ( R , - R j + ( G , - G b)2 + ( B , - B „ ) 2 Trong đó: - d(a,b); độ lệch màu của điểm a và b.

- (Ra, Ga, Ba); giá trị màu của điểm a trong bảng màu. - R: chỉ màu red, G: chỉ màu green, B: chỉ màu blue. Với quan điểm cho rằng d(a,b) càng nhỏ thì màu càng giống nhau. Như vậy, tập các màu có cùng độ lệch với màu một điểm ảnh nằm trên một hình cầu. Chọn màu nào trong số các điểm này là tốt hơn? Đặt:

d r = | R a - R b | > d G = |G a _ G b | ’ d B = |B a ~ B b|

Như đã biết, mắt thường cảm nhận màu Green nhiều nhất, màu Blue kém nhất. Cho nên các màu muốn xếp gần nhau phải xét trên quan điểm gần nhau về màu: Green, Red, Blue. Rất may một số loại ảnh bmp đã xếp bảng

màu theo quan điểm này. Việc xếp lại bảng màu cần căn cứ cả vào hệ số dR, dG, dB.

Cải tiến phương pháp tạo lại bảng màu như sau:

- Đầu tiên duyệt màu trong ảnh để biết tần suất xuất hiện các màu được dùng trong ảnh và các màu không được dùng.

- Tạo lại bảng màu bằng cách xóa màu không được dùng.

- Xếp các màu được dùng vào bảng: tại vị trí k+1 (k chẵn) đặt màu gần với màu ở vị trí k. Gần theo nghĩa d, dR, dG, dB nhỏ nhất ưu tiên từ trái sang phải.

- Chèn thêm các màu có tần suất cao vào bảng: Giả sử màu có tần suất cao nhất trong ảnh đứng vị trí k, chèn vào vị trí t chỉ số màu của ô k. Trong đó:

ík + 1 nếu k ch ẵ n { k - 1 nếu k lẻ

- Tiếp tục làm với những màu có tần suất thấp hơn cho đến khi bảng màu đầy thì dừng. Khi tạo lại bảng màu vị trí màu trên bảng màu bị thay đổi

nên phải kết hợp tạo bảng màu và sửa dữ liệu điểm ảnh cho phù hợp để ảnh không bị đổi màu.

Khi thực hiện thuật toán 2.2.2, đảo một bit LSB sẽ làm giá trị điểm ảnh tăng hoặc giảm 1, với điểm ảnh có giá trị lẻ sẽ giảm 1, có giá trị chẩn sẽ tăng 1. Những ảnh số màu sử dụng nhỏ hơn một nửa số màu trong bảng màu dùng phương pháp tạo lại bảng như trên khi đảo LSB giá trị điểm ảnh luôn chỉ vào vị trí màu chèn thêm nên ảnh kết quả màu sắc giống y hệt ảnh gốc. Việc tạo bảng màu cũng nhanh hơn vì không cần tính tần suất màu sử dụng trong bảng màu. Chỉ cần một màu sử dụng xếp 2 vị trí kế tiếp trong bảng màu bắt đầu từ 0.

Ảnh 16 màu cũng áp dụng được phương pháp này. Với những ảnh hai mức có thể chuyển sang thành ảnh 16 màu, khi chuyển như vậy dung lượng ảnh tăng lên nhưng bù lại lượng dữ liệu giấu và tính vô hình của dữ liệu giấu cũng tăng lên nhiều. (adsbygoogle = window.adsbygoogle || []).push({});

Ảnh đa cấp xám: mỗi điểm ảnh lưu trữ bằng 8 bit, bảng màu đã được sắp. Những màu có chỉ số màu nằm cạnh nhau chỉ chênh lệch nhau về độ sáng tối nhưng rất nhỏ, mắt thường khó thấy. LSB được chọn là bit thấp nhất của điểm ảnh, áp dụng thuật toán 2.2.2 mỗi lần giấu r bit chỉ đảo tối đa 2 bit trong một khối, khi đảo LSB mức xám tại điểm này thay đổi một mức. Do đó giấu dữ liệu vào ảnh đa cấp xám khá tốt, dường như thoả mãn cao các yêu cầu của steganography.

Ảnh đa cấp xám dùng làm môi trường giấu dữ liệu tính vô hình trong lược đồ đạt gần như tuyệt đối. Thực nghiệm đã chứng minh nếu như đảo tất cả các bit cuối cùng của điểm ảnh sau đó đặt ảnh gốc và ảnh kết quả bên cạnh nhau với thị giác bình thường không phân biệt được. Để bảo mật nên mã hoá dữ liệu trước khi giấu, tiến hành thay bit cuối của điểm ảnh bằng bit dữ liệu cần giấu, dung lượng dữ liệu giấu tăng lên tối đa. Với phương pháp này tính bảo mật không nằm trong quá trình giấu mà nằm trong thuật toán mã hoá và giải mã dữ liệu.

Ngoài ra có thể rút nhiều hơn 1 LSB trong một điểm ảnh để tăng dung lượng giấu. Nếu rút n_LSB bit LSB trên một điểm ảnh( 1 < n_LSB < 8), mức xám điểm ảnh chỉ tăng giảm tối đa (2n-LSB' 1 + 2n-LSB-2) và thường chỉ ở mức 2n-LSB 1 . Vì trong một khối ảnh khi nhúng dữ liệu chỉ đảo 1 hoặc 2 vị trí, hai vị trí này ít khi đứng cạnh nhau. Tuỳ theo lượng thông tin cần giấu quyết định chọn n_LSB, nên chọn n_LSB=2 là vừa phải, khi đó mức xám thay đổi thường là 3 nhưng khả năng giấu tăng lên gấp 2 lần.

Một lý do khác, dung lượng ảnh đa cấp xám nhỏ hơn các ảnh hi_color, true_color rất nhiều, nên việc gửi các ảnh này trên mạng hợp lý hơn vì vậy môi trường là ảnh đa cấp xám đang được dùng nhiều.

2.2.5.2. Ảnh có số màu cao

Những ảnh không có bảng màu có số màu cao, mỗi điểm ảnh được biểu diễn bởi một giá trị màu là tổ hợp của ba màu Red, Green, Blue. Khi giá trị này thay đổi một vài đơn vị cũng không làm ảnh hưởng đến màu sắc của điểm ảnh. Chính vì vậy, người ta lại quan tâm vấn đề tăng tỷ lệ giấu tin, loại ảnh này có dung lượng gấp 2 hoặc 3 lần ảnh 256 màu (xét trên 2 ảnh có cùng số điểm ảnh). Để tăng lượng dữ liệu giấu, cần chọn bao nhiêu bit LSB trên một điểm ảnh, chọn vị trí nào thì ảnh kết quả ít nhiễu nhất.

Ảnh hi color:

Mỗi điểm ảnh chiếm 16 bit như sau.

Red Green B lue

15 14 10 7 5 0

l b i t 5 b it 5 b it 5 b it

Trong 16 bit chỉ sử dụng 15 bit biểu diễn màu, còn một bit không dùng đến (bit cao nhất của byte thứ 2), nếu chọn bit này là LSB thì việc thay đổi giá trị của bit này không hề ảnh hưởng đến màu sắc của ảnh. Nhưng chỉ chọn 1 bit LSB trên một điểm tỷ lệ giấu thấp. Nên chọn nhiều hơn 1 bit từ một điểm ảnh. Mắt người thường kém nhạy cảm với màu Blue nên có thể lấy thêm LSB là bit thứ 0 của byte thứ nhất trong điểm ảnh. Thực nghiệm đã chứng tỏ chỉ chọn tối đa 4 bit LSB trong một điểm ở các vị trí 0, 5, 10, 15 ảnh kết quả sai khác ảnh gốc không đáng kể nhưng tỷ lệ giấu tăng lên gấp 4 lần.

Ảnh true_color

Ảnh màu thực mỗi điểm ảnh chiếm 24 bit như sau:

Red Green Blue

Mỗi màu được xác định bởi một số nguyên có giá trị trong miền từ 0 đến 255, màu của ảnh là bộ tổ hợp 3 màu R, G, B. Khi tổ hợp màu mỗi màu thay đổi vài đơn vị thì màu tổ hợp thay đổi không đáng kể, khó có thể phân biệt bằng mắt thường.

Nếu rút 3 bit LSB trong một điểm ảnh, mỗi byte lấy 1 bit thấp nhất. Khi giấu tin giá trị của mỗi màu chỉ tăng hoặc giảm một, ảnh kết quả có chất lượng tốt, giống như ảnh gốc.

Để tăng dung lượng giấu tin có thể rút thêm một vài bit trong từng byte màu. Tiến hành thí nghiệm, mỗi byte màu rút 2, 3 hoặc 4 bit thấp nhất làm LSB. Ảnh kết quả sai lệch ảnh gốc không nhiều lắm (hình 9). Tối đa chỉ nên rút 4 bit, tốt nhất là rút 2 bit thấp nhất trên một byte màu làm LSB.

Nếu rút 2 bit LSB trên 1 byte màu, mỗi điểm ảnh ta có 6 bit LSB. So với ảnh 256 màu cùng số điểm ảnh dung lượng ảnh True_ color cao gấp 3 lần nhưng số bit LSB rút ra cao gấp 6 lần. Điều đó có nghĩa tỷ lệ giấu tăng gấp đôi. Chất lượng ảnh kết quả True_color tốt hơn, dường như không cần quan tâm đến nhiễu gây ra khi nhúng dữ liệu vào ảnh.

Một phần của tài liệu Một số kỹ thuật giấu dữ liệu trong ảnh tĩnh (Trang 39)