Nguyên lý chung giấu dữ liệu bí mật vào trong ả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 30)

D ữ liệ u c ần g iấ u E , ả n h m ô i trư ờ n g H.

Giai đoan si ấu:

- K là k h o á b í m ật.

- Đọc c á c b it E tạo th à n h tệ p d ữ liệu nhị p h â n E ’

- Đ ọ c H rú t ra tệ p F c h ứ a c ác b it LSB ( F g ọ i là ả n h th ứ cấp )

- T h ự c h iệ n th u ậ t to á n g iấu d ữ liệ u E ’ b ằ n g c á c h th a y đ ổ i m ộ t số b it c ủ a F tạo th à n h F ’

- T h a y th ế c á c b it L SB c ủ a H bởi F ’ tạo th à n h ả n h H ’ - T ru y ề n H ’ trê n m ạ n g

Giai đoan tách dữ liêu

- N h ậ n H \ tá c h c á c b it LSB đư ợc F ’

- T h ự c h iệ n th u ậ t to á n g iải m ã tá c h d ữ liệ u tro n g F ’ th à n h d ữ liệ u n h ị p h ân E ’

E c h ín h là d ữ liệ u cầ n tá c h đ ú n g b ằ n g tệ p d ữ liệ u b a n đ ầ u trư ớ c k h i giấu. Q u á trìn h trê n th ể h iệ n trê n sơ đồ:

- Chuyển E ’ thành E E -*► E’ - Thuât toán Ih U f - giấu r H ’ H > [ p > K ê n h t r u y ề n t h ô n g tin K E ’ K

H ình 3 : S ơ đ ồ giấu d ữ liệu tro n g ả n h

Đ ể n â n g c a o tín h b ả o m ật d ữ liệu g iấ u th ô n g th ư ờ n g c á c th u ậ t to án g iấ u và tá c h d ữ liệu sử d ụ n g th ê m m ộ t k h ó a . K h ó a n à y đ ư ợ c g iữ b í m ậ t chỉ n gư ờ i thực h iệ n g iấ u và ngư ời tá c h d ữ liệu b iết. N ế u b iế t rõ k ỹ th u ậ t g iấu n h ư n g k h ô n g có k h ó a , v iệ c tá c h d ữ liệu rất k h ó k h ă n , k h ô n g tín h to án được tro n g thời g ian đ a thứ c.

C ác k ỹ th u ậ t c h o p h é p tá c h th ô n g tin đ ã g iấ u tro n g ả n h k ết q u ả m à k h ô n g cần có ả n h m ô i trư ờ n g , k h ô n g p h ụ c h ồ i lại ả n h m ô i trư ờ n g . Đ iề u n ày là m đ ơ n g iả n th u ậ t to á n tá c h n h ư n g lại là m g iớ i h ạ n k h ả n ă n g ứ ng d ụ n g củ a k ỹ th u ậ t g iấ u tin.

2.2.4. M ột thuật toán giấu thông tin trong khối bit

Đ ã c ó n h iề u c ô n g trìn h c ô n g b ố c á c th u ậ t to á n th ự c h iệ n trên m ộ t số k iể u ản h cụ th ể. M a x e m c h u k đ ư a ra một. p h ư ơ n g p h á p g iấ u th ô n g tin tro n g c á c file ả n h văn b ả n lợ i d ụ n g k h o ả n g trố n g g iữ a c á c d ò n g và g iữ a các k í tự. T u y n h iên c á c h th ự c h iệ n n à y b ị h ạ n c h ế đ ố i với c á c lo ạ i ả n h đ en trắ n g k h ác và d u n g lư ợ n g th ô n g tin đư ợc g iấu tro n g ả n h th ấp .

Koch và Zhao cũng đã đưa ra thuật toán giấu thông tin trong ảnh đen trắng sử dụng những khối bit ảnh có tỉ lệ bit đen và bit trắng là nhỏ hơn hoặc lớn hơn 1, mặc dù thuật toán này nhắm vào việc giấu sao cho khó bị phát hiện nhưng thực tế đã chứng minh nó không đủ an toàn cũng như không chịu được những cuộc tấn công hay xuyên tạc thông tin. Gần đây thuật toán giấu dữ liệu vào khối bit được quan tâm nhiều. Đặc biệt thuật toán Y. Y Chen, H. K Pan và Y. c Tseng [18] được đánh giá khá tốt và nhiều tác giả sử dụng nó xây dựng các ứng dụng. Để tiện việc trình bày trước tiên hãy thống nhất các ký hiệu và các phép toán sử dụng trong các thuật toán.

2.2.4.I. K hái niệm và các ký hiệu

+ Ma trân A, phần tử hàng thứ i, cột thứ j của ma trận ký hiệu là A[i,j]. + Tổng tất cả các phần tử ma trận A ký hiệu là SUM(A)

s u m (a ) = Ị > [ì j ]

i.j

+ A, B là 2 ma trận cùng cấp, phép C=A © B là một ma trận cùng cấp. Mỗi phần tử của c xác định: C[i,j] = A[i,j] XOR B[i,j].

+ A, B là 2 ma trận cùng cấp, phép C=A <8> B là m ột ma trận cùng cấp. Mỗi phần tử của c xác định: C[i,j] = A[i,j] X B[i,j] ( x: phép nhân số học thông thường)

+ Phép đảo bit nếu x= 1 thì khi đảo bit x=0 và ngược lại.

+ Ma trận nhị phân: là ma trận mà các phần tử chỉ nhận giá trị 0 hoặc 1. Ký hiệu về ảnh sử dụng như trong mục 2.2.3. Ngoài ra sử dụng thêm các ký hiệu:

+ K: là khoá.

+ W: ma trận trọng số. + b: là bit dữ liệu cần giấu.

+ F ảnh thứ cấp của ảnh môi trường H. Không có gì mâu thuẫn nếu xem như F là ma trận nhị phân.

+ F ’ là ảnh thứ cấp của ảnh kết quả.

2.2A.2. Các thuật toán giấu dữ liệu (adsbygoogle = window.adsbygoogle || []).push({});

N húng dữ liệu vào khối bit

Thuật toán chủ yếu nhúng các bit dữ liệu vào một khối bit của ảnh thứ cấp F. Khi tiến hành nhúng sẽ đảo một vài bit của F. Tính bảo mật thông qua khoá bí mật K của người dùng. Tính vô hình thể hiện chỗ nếu một khối bit ảnh đủ lớn chỉ đảo từ 1 đến 2 bit LSB thì mắt thường khó nhận biết được. Tuy nhiên đối với những vùng tràn thì đảo 1 bit ảnh cũng gây ra nhiễu. Chiến thuật sử dụng hiệu quả các thuật toán lại nằm ở chỗ chọn bit để đảo như thế nào là tốt nhất.

Bài toán của chúng ta: Giấu dữ liệu B gồm m bit B = bị, b2, ... bm vào ảnh thứ cấp F có kích thước f bit.

Thuật toán 2.2.1: Sử dụng khoá cố định

Chọn một khoá bí mật K, K là số nguyên thường chọn số lẻ.

Giấu 1 bit dữ liệu vào một khối K bit trong ảnh thứ cấp F. Do đó số bit dữ liệu giấu tối đa là ( f div K).

G i a i đ o a n mi ấ u :

- Đọc liên tiếp K điểm ảnh trong F đặt là F ¡. - Tính SƯM(Fị).

- So sánh SUM(F¡) với b ị , nếu (SUM(Fị) mod 2) * bị thì chọn bất kỳ một bit trong Fj để đảo, còn ngược lại giữ nguyên Fj.

- F ’ = F .X j A ị .

Giai đoan tách dữ liêu:

- b/ = SUM(F¡’) mod 2. Ta dễ dàng nhận thấy b¡ = b¡\

Chứng minh tính đúng của thuật toán và các ví dụ cụ thể được trình bày trong [5].

Nhận xét: Thuật toán này giai đoạn giấu đơn giản, tách dữ liệu nhanh. Tuy nhiên khoá cố định nên dễ phát hiện ra khoá, cần kết hợp mã hoá dữ liệu trước khi giấu. Để tăng độ mật có thể sử dụng khoá thay đổi.

Khoá K là một dãy số tự nhiên K = (kị, k2, ... kn). Thay vì đọc K phần tử vào Fj ta đọc kị phần tử . Thuật toán giấu và tách dữ liệu giống như đã trình bày ở trên.

Như vậy chỉ giấu 1 bit dữ liệu trên một khối bit. Một cải tiến đáng kể của thuật toán trên là giấu r bit trong một khối bit.

Thuật toán 2.2.2 [18]: Sử dụng khoá K và ma trận trọng số w . Khoá K là ma trận nhị phân kích thước m.n.

Ma trận trọng số w có kích thước là m.n. Các phần tử của ma trận trọng số W[j,k] bất kỳ những phải thoả điều kiện các số trong tập { 1 , 2 , . . . 2r-l Ị xuất hiện ít nhất một lần trong w .

N h ư v ậ y 2 r -1< m X n => r < log2(m X n +1).

Thuật toán cho phép giấu r bit (bị, b2, ... br) vào trong khối F, có cấp

m X n.

Giai đoan si ấu:

+ Đọc khối m*n bit từ ma trận thứ cấp F thành Fj. + Tính m a trận T=F¡©K. + Tính SUM((Fị©K)<S> W ). + Tính d =(b„ b2, ... br) - SUM((Fi0K)(g)W) mod 2r + Mỗi w G { 1, 2, ... 2r- l }, xây dựng tập /

s . = {(j,k)/ (((w [j,k ]= w ) A ( T [ j ,k ] = 0 ) ) v ( ( w [ j ,k ] = 2 ' - w ) A ( T [ j ,k ] = l)))}

+ Tim bit để đảo:

- Nếu d = 0 không cần phải thay đổi Fj. - Nếu d * 0 xét Sd

Trường hợp 1: s d ^ (ị) chọn bất kỳ (j,k) G Sd. Đảo bit F¡[j,k] trong ma trận Fj.

Trường hợp 2: Sd = <Ị) chọn bất kỳ h e { 1, 2, ... 2r-l } sao cho:

S hdmod2' * <ỉ> và s (h-l)dmod2' * <t>- Lấy bất kỳ ( j ’ k ) e Shdmod2' và (u ’ v ) e S-(h-i)dmod2r • Đảo bit Fi M và F¡[u,v] trong ma trận Fj.

+ F ’ = F .I i (adsbygoogle = window.adsbygoogle || []).push({});

G i a i đ o a n tá c li d ữ liê u :

+ Đọc khối m X n bit từ ma trận thứ cấp F ’ thành Fị’ (F’ là ma trận thứ cấp của ảnh kết quả).

+ Tính b ’ = SƯM((Fi’0K )® W ).

b ’ chính là dữ liệu tách được trong khối F ¡\

Để đảm bảo rằng luôn luôn tách ra b ’ =(bị, b2, ... br) ta phải chứng minh các vấn đề sau:

1. Lấy (j,k) G sd và đảo bit F¡[),k] thì tổng SUM((F¡’©K)®W) tăng

lên d lần.

2. Nếu Sd = ộ thì luôn tồn tại h để Shdmod2r * (ị) và s (h 1)dmod2, * (ị).

Lấy (j, k ) € Shđmod2r và (u, v) £ s (h 1)dmod2r sau khi đảo bit F¡[j,k] và F¡[u,v] thì tổng SUM((F¡’©K)<8)W) tăng lên d lần.

Vì : d =(b„ b2, ... br) - SUM((F,©K)®W) mod T

Nên khi đảo bit ta có: (bị, b2, ... br) = SUM((F¡’®K)®W ) mod 2r

V ấn đề 1: Lấy (j,k) 6 Sd và đảo bit Ft[j,k] thì tổng SUM((F¡’©K)®W) tăng lên d lần.

Do tính chất của phép XOR và T=Fj®K, nếu đảo bit Fj[),k] thì T[j,k] cũng đảo bit theo,

Theo cách xây dựng

s„ ={(j ,k ) / (((W [i,k]= d)A (T [j,k]= 0))v((w [j,k]= 2'-d)A (T [j,k]= l)))} Nếu (j,k)e (w[j,k] = (ỉ)a (T[j,k] = o) vì T[j,k]=0 nên sau khi đảo bit F[j,k] thì T[j,k] =1 dẫn đến tổng SUM((F¡©K)(8>W) tăng lên d giá trị.

Nếu (j,k)e (w[j,k]= 2r -d)A(T[j,k] = l) vì T [j,k]=l nên sau khi đảo bit F[j,k] thì T[j,k] =0 dẫn đến tổng SUM((Fị©K)<g>W) giảm 2r- d giá trị. Nhưng (2r- d) = -d (mod 2r) do đó tổng lại tăng lên d giá trị.

V ấn đề 2:

* Ta cần cần chứng minh với mọi w G{ 1, 2, ... 2r-l } và w * 2M, nếu Sw = (Ị) thì s.w* ộ. (1)

Do tính chất của ma trận trọng số nên tồn tại (j,k) sao cho W[j,k]= 2r-w Mặt khác do Sw = (ị) nên T[j,k] =1. Suy ra (j,k)e S r hay s_w* (Ị).

* Ta cần chứng minh : S2M * (ị).

Tồn tại (j,k) để W[j,k] = 2r‘‘ nếu T[j,k] =1 thì S2r_, * (Ị), nếu T[j,k]=0 ta lại có 2ĩA = 2r- 2r'1 (mod 2) nên (j,k)e S2,., hay S2,., * ệ. (2)

* Ta sẽ chứng minh khi Sd = 4» luôn tồn tại h để Shdmod2, * (ị) và

^ - ( h - l ) d m o d 2 r ^

Sét S2dmod2r f nếu ^2d mod 2r ^ ^ thì chọn h = 2 ta có điều phải chứng minh, còn nếu S 2dmod2r = ệ ta có s 2dmod2, * ộ. Xét tương tự v ớ iS 3dmod2r. Cứ

tiếp tục làm cho đến một lúc nào đó ta có Shdmod2r ^ (Ị) và s (h.1)dmod2r * (Ị) hoặc

(hd mod 2r = 2M ) và ta luôn có S2M * (Ị) theo (2). ịđpcm) u

Nhận xét: Thuật toán cho phép giấu r bit trong một khối F| nhưng chỉ đảo tối đa 2 bit ảnh, rõ ràng tăng dung lượng giấu lên đáng kể so với thuật toán 2.2.1. Tính bảo mật của thuật toán cũng tăng vì phụ thuộc vào ma trận khoá K và ma trận trọng số w .

Để giấu r bit, ma trân K cấp mn, ma trận trọng w số cấp m X n. Ta có các khả năng tạo ma trận trọng số : c ^ " 1 * (2r - 1 )ĩ*(2 r - l)mn khả năng tạo ra ma trận khoá 2mn. Như vậy muốn tìm được dữ liệu trong ảnh số trường hợp phải kiểm tra là: 2 mnc ^ ' * ( r - l ) * ( 2 r

Ví du minh hoa:

Ma trận thứ cấp F được chia thành 2 khối cơ bản Fị và F2, khóa K và ma trận trọng số w kích thước (4x4). Có thể giấu tối đa [log2(4x4+ 1)] bit trong một khối. Chọn r =3 và chuỗi bit cần giấu là (001001). Quá trình giấu minh hoạ trong sơ đồ sau: (adsbygoogle = window.adsbygoogle || []).push({});

0 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 F, F2 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 w = 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 Ị 0 0 4 0 2 0 0 5 6 0 0 5 6 7 0 0 3 4 0 2 0 0 5 0 0 1 0 0 7 0 2 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1

(F|ffi K) K) (F|ffi K) 0w (F2e K) ®w F,'

Mót vài nhân xét thuật toán:

- Qui trình tách dữ liệu không cần ảnh gốc, không khôi phục lại ảnh gốc từ ảnh kết quả.

- Dữ liệu giấu sẽ mất khi ảnh kết quả bị thay đổi nhỏ. Ví dụ như nén, giải nén, cắt bớt một phần ả n h ...

- Độ an toàn thuật toán phụ thuộc vào khoá K và ma trận trọng số w đều có cấp m X n.

- Lượng dữ liệu giấu tối đa trong một khối cấp m.n là r = log2(m.n +1) (r tính bằng bit). Quan hệ này cho thấy r tăng chậm so với m, n. Do đó chọn m, n lớn không phải là giải pháp tốt, tỷ lệ giấu tin giảm. Nhưng nếu m,n quá nhỏ tính bảo mật bị tấn công, dễ gây nhiễu trên ảnh. Chọn m, n là tuỳ theo quan điểm người dùng coi trọng yếu tố nào hơn.

- Dung lượng bit dữ liệu giấu tối đa .được tính: D = r X (M X n_LSB div (m X n))

-T ỷ lệ g iấu : T = ^

Trong đó: M: Số điểm ảnh trên ảnh, n_LSB: số bit LSB trên một điểm ảnh. Như vậy cùng một ảnh, K, w , r, thì tỷ lệ giấu phụ thuộc vào số bit LSB rút ra từ một điểm ảnh. Phần 2.2.5 sẽ trình bày phương pháp rút LSB cho từng loại ảnh BMP.

Kỹ thuật steganographic dựa trên PDF của nhiễu

(PDF: Probability Density Function- Hàm mật độ xác suất)

Chấp nhận thành phần nhiễu của ảnh phụ thuộc vào một hàm phân bố xác suất f và tập trung ở các điểm ảnh có mức xám trong phạm vi [L, H].

Với ảnh môi trường có thể sử dụng bộ lọc W iener để loại bỏ nhiễu ta thu được ảnh không nhiễu z .

Giả sử dữ liệu cần giấu gồm N bit, sinh 1 bộ số ngẫu nhiên N số và có thể chọn N pixel trong z mà mức xám của chúng thuộc [L, H]. Sau đó thay

thế bit có trọng số thấp (LSB) của các pixel này bằng các bit dữ liệu.

Các sửa đổi trên ảnh thích hợp với mô hình thống kê. Để lấy lại dữ liệu đã giấu ta cần mầm của bộ sinh số ngẫu nhiên, hàm phân bố xác xuất f. Từ đó ta đọc dữ liệu ở các pixel ngẫu nhiên này. Mấu chốt là dùng khoá sinh một bộ N số nhị phân giả ngẫu nhiên.

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

Đố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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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 30)