3. Bố cục của luận văn
2.4. Một số thuật toán giấu tin trong ảnh và chất lượng
2.4. 1 Kỹ thuật giấu tin LSB.
2.4.1.1 Khái niệm bit ít quan trọng LSB (LSB - Least significant bit).
Bit LSB là bit có ảnh hưởng ít nhất tới việc quyết định tới màu sắc của mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít quan trọng nhất của một điểm ảnh thì màu sắc của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. Ví dụ đối với ảnh 16 bit thì 15 bit là biểu diễn 3 màu RGB của điểm ảnh còn bit cuối cùng không dùng đến thì ra sẽ tách bit này ra ở mỗi điểm ảnh để giấu tin… Như vậy kỹ thuật tách bit trong xử lý ảnh được sử dụng rất nhiều trong quy trình giấu tin. Việc xác định LSB của mỗi điểm ảnh trong một bức ảnh phụ thuộc vào định dạng của ảnh và số bit màu dành cho mỗi điểm của ảnh đó.
2.4.1.2. Kỹ thuật giấu tin LSB trong ảnh BITMAP.
Chúng ta sử dụng kỹ thụât “Thay thế” (substitution) để ẩn thông tin trong một file. Với công nghệ này, bạn thay thế những bit ít quan trọng nhất của file gốc với dữ liệu mà bạn muốn ẩn. Để sử dụng công nghệ này ta thực hiện các bước sau:
Khi sử dụng kĩ thuật thay thế sẽ có một số ưu nhược điểm sau:
+Ưu điểm: Kích thước của file sẽ không bị thay đổi sau khi thực hiện
việc ẩn thông tin.
+ Nhược điểm: Có thể giảm chất lượng ảnh sau khi ẩn thông tin; giới
hạn kích thước thông tin muốn ẩn.
Trong kỹ thuật “Thay thế”, phương thức rất phổ biến là LSB (Least Significant Bit). Phương thức này thay thế bit ít quan trọng nhất trong một vài byte của file để ẩn những byte dữ liệu chứa thông tin muốn ẩn. Cách này có
hiệu quả trong trường hợp mà thay thế LSB không ảnh hưởng đến chất lượng ảnh. Ví dụ như đối với ảnh Bitmap 24 bit.
* Tại sao giấu thông tin trong ảnh Bitmap 24 bit lại có hiệu quả hơn:
- Ảnh Bitmap 24 bit: tức là sẽ có 24 bit biểu diễn cho 1 pixel và ảnh này có 2^24 màu. Thông tin màu cho mỗi pixel được chứa trong 3 byte liên tiếp của dữ liệu với mỗi byte tương ứng với 3 màu Blue, Green, Red.
- 24 bit màu là dữ liệu đơn giản để đọc. Dữ liệu hình ảnh đi theo ngay trực tiếp sau đầu mục thông tin và ở đó không có bảng màu nào.
- Các điểm ảnh được lưu theo chiều từ trái sáng phải trên một dòng và các dòng lại được lưu theo thứ tự từ dưới lên trên .
- Mỗi byte trong vùng BimapData biểu diễn 1 hoặc nhiều điểm ảnh theo số Bits cho một Pixel.
- 8 bit dữ liệu cần 8 byte dữ liệu nguồn.
Như vậy, với mỗi Pixel sẽ có 8 bit biểu diễn cho mỗi giá trị màu. Giả sử, ta chỉ xem xét với màu Blue, sẽ có 28 giá trị khác nhau. Sự khác nhau giữa các giá trị hay gọi cách khác là cường độ của Blue như 11111111 và 11111110 sẽ không bị phát hiện bởi thị giác của con người.
- Đối với ảnh 24 bit, ta có thể nhúng 3 bit dữ liệu muốn ẩn trong 1 pixel. Trong khi đó với ảnh 8 bit ta chi có thể nhúng 1 bit dữ liệu cho mỗi pixel. Như vậy, ảnh 24 bit cung cấp nhiều khoảng trống hơn so với ảnh 8 bit.
Ví dụ:
Muốn ẩn 1 ký tư A vào trong 1 file ảnh. Giá trị nhị phân của A là 10000001 Lúc này kí tự A được ẩn trong 3 pixel.
(00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001)
+ Sau khi ẩn kí tự A, giá trị của 3 pixel là: (00100111 11101000 11001000)
(00100110 11001000 11101000) (11001000 00100111 11101001)
Như vậy, chỉ có 3 bit bị thay đổi trong 3 byte. Và sẽ không bị phát hiện bởi thị giác của con người.
2.4.2 Kỹ thuật giấu tin SES.
2.4.2.1. Giới thiệu kỹ thuật giấu tin SES:
- Kỹ thuật SES được đề xuất bởi tác giả Jeong Jae Yu.
- Kỹ thuật giấu tin trong ảnh SES (Steganography Evading analysis) là kỹ thuật giấu tin tránh sự phát hiện bằng phương pháp thống kê RS(Regular Singular).
2.4.2.2. Kỹ thuật giấu tin SES như sau. 2.4.2.2.1. Quá trình giấu tin:
Đầu vào:
- Ảnh gốc.
- Thông điệp cần giấu.
Đầu ra:
- Ảnh đã được giấu thông điệp.
Các bước thực hiện:
Bước 1:
- Đọc ảnh gốc P.
- Tính toán thống kê RS của ảnh gốc. Bước 2:
- Đọc thông điệp.
- Chuyển thông điệp sang dạng số trong bảng mã Ascii. - Ghép độ dài thông điệp vào phía trước tin đã được mã hóa.
Bước 3:
- Chuyển mã Ascii của thông điệp sang dạng nhị phân. Bước 4:
- Thực hiện giấu tin:
x’ =
- Tính LSB của điểm ảnh.
- So sánh LSB của điểm ảnh với lần lượt các phần tử thông điệp đã được chuyển đổi sang nhị phân ở bước trên.
Nếu phần tử thông điệp bằng với LSB của điểm ảnh thì điểm ảnh sẽ được giữ nguyên. Ngược lại, nếu không bằng nhau thì xét tiếp:
- Nếu phần tử thông điệp = 1, LSB = 0 => Ta sử dụng hàm F1 . - Nếu phần tử thông điệp = 0, LSB = 1 => Ta sử dụng hàm F-1 .
Bước 5: Điều chỉnh các thống kê RS với các bộ phận không sử dụng nhúngtrong ảnh gốc.
- Kiểm tra RS của ảnh đã được giấu tin.
- Sử dụng một mảng để đánh dấu: những điểm ảnh nào được giấu tin thì gán bằng 1, những điểm ảnh nào chưa được giấu tin thì gán bằng 0. - Trên phần mà những điểm ảnh gán bằng 0 thì ta điều chỉnh RS saocho
ảnh sau khi được giấu tin tránh phát hiện bằng thống kê RS. - Áp dụng:
x if si = LSB(xi)
2.4.2.2.2. Quá trình tách tin:
Đầu vào:
- Ảnh đã được giấu tin.
Đầu ra:
- Ảnh gốc.
- Thông điệp được giấu.
Các bước thực hiện:
- Bước 1: Đọc ảnh giấu thông điệp.
- Bước 2: Lấy LSB của điểm ảnh cho vào mảng mess.
- Bước 3: Lấy 8 bit đầu tiên của mảng mess, tiến hành chuyển đổi từ số nhị phân sang dạng thập phân, được chiều dài của thông điệp.
- Bước 4: Những bit còn lại trong mảng mess chuyển thành số trong bảng mã Ascii.
2.4.3 Kỹ thuật giấu tin theo khối bit
Kỹ thuật giấu tin theo khối bít và sử dụng tính chẵn lẻ của các khối bit để khôi phục lại thông tin (thường sử dụng các phép toán AND, OR, SUM để tính toán và biển đổi ảnh giấu tin) thường được dùng cho cả ảnh màu, ảnh xám và ảnh đen trắng. Ý tưởng của thuật toán là chia ảnh thành các khối nhỏ và trong mỗi khối nhỏ sẽ giấu một bit b (b =0 hoặc b=1).
Thuật toán
Input: Ảnh Bitmap đen trắng F và thông điệp cần giấu P. Output:Một file ảnh đã giấu tin F’.
Cách thực hiện:
Bước 1: Chuyển file thông tin cần giấu P sang dạng nhị phân ta được P’=b1b2…bN.
Bước 2: Chia ảnh gốc F thành N khối nhỏ Fi có kích thước mxn.
Bước 3: Với mỗi khối Fi (i = 1, 2,…N) ta sẽ tiến hành giấu một bit bi (bi = 0 hoặc bi = 1) bằng cách biển đổi Fi thành F’i thỏa mãn:
Bước 4: Kết hợp các khối F’
I ta thu được ảnh F’ chưa thông tin cần giấu.
Ví dụ minh họa:
Cho khối B như sau:
0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1
- Giả sử ta giấu bít b = 0 vào khối B.
Số lượng bít 1 trong khối B là 9, sum (B) = 9. Do đó sum (B) ≠ 0 (mod 2). Như vậy khối B không thỏa mãn yêu cầu. Để giấu bít 0 vào khối B ta thay đổi một bit bất kỳ trong khối, thường là thay đổi tại vị trí của bít thông tin rõ vào bít của khối tương ứng (nếu chúng trái dấu nhau) đổi bít 0 thành bít 1 hoặc bít 1 thành bít 0, ta thu được khối B’. Giả sử ta đổi như sau:
Khối B Khối B'
0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1
Hình 2.8: Minh họa giấu bit b = 0 vào khối nhị phân B
Khi đó ta có sum(B’) = 8 , do đó ta được sum(B’) 0 (mod 2)
- Nếu giấu bít b = 1 vào khối B. Ta có sum(B) = 9 nên sum(B) 1 (mod 2). Khối B được bảo toàn và bit dữ liệu b = 1 coi như được
giấu.
Quá trình tách tin
Trong thuật toán này khóa đơn giản chỉ là kích thước của khối, nếu biết kích thước của khối thì dễ dàng giải mã tin theo quy tắc sau:
Bước 1: Chia ảnh thành các khối nhỏ với kích thước khối đã sử dụng khai thực hiện giấu tin.
Bước 2: Xét từng khối nhỏ và giải tin theo quy tắc:
- Nếu tổng các bít 1 là lẻ ta thu được bit giấu là 1. - Nếu tổng các bít 1 là chẵn ta thu được bit giấu là 0.
Thực hiện cho đến khi hết các khối giấu và ta được chuỗi bit đã mang giấu.
Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.
Phân tích thuật toán
Việc chọn kích thước khối giấu tùy thuộc vào kích thước ảnh và lượng thông tin cần giấu sao cho giấu giàn trải trên từng ảnh.
Với thuật toán này việc chọn khối khá đơn giản, bắt đầu từ khối đầu tiên và những khối liên tiếp phía sau một cách tuần tự. Tuy nhiên ta có thể làm khó thuật toán hơn bằng cách chọn ngẫu nhiên một khối chưa giấu ở mỗi lần giấu. Khi đó, đã làm tăng độ an toàn của thuật toán vì khóa bây giờ còn thêm cả chỉ số khối đã giấu tin cho từng bit. Hoặc ta có thể thay đổi kích thước khối ở mỗi lần giấu, chẳng hạn như lần 1 có kích thước khối là 8x8, lần 2 là 8x12,… trong trường hợp này thì khóa là kích thước khối của mỗi lần giấu.
Bản chất của kỹ thuật giấu tin trong ảnh đen trắng là quy ước nào đó dưới dạng một mệnh đề (tân từ) P. Nếu tân từ P được thỏa mãn thì ứng với bit 1, ngược lại ứng với bit 0. Tân từ P trong thuật toán trên là sum (B) b (mod 2)
Áp dụng thuật toán cho ảnh màu và ảnh đa cấp xám
Nhược điểm cơ bản của phương pháp này dùng cho ảnh đen trắng là thông tin giấu vào được rất ít. Nếu giấu nhiều thông tin thì ảnh sẽ thay đổi nhiều và người sử dụng sẽ dễ dàng phát hiện sự có mặt của thông tin ẩn. Do đó khi giấu tin người ta thường chọn ảnh màu hoặc ảnh đa cấp xám. Các ảnh màu và đa cấp xám có giá trị mỗi điểm ảnh được biểu diễn bằng nhiều bit. Trong dãy các bit biểu diễn này có một bit được gọi là bit ít quan trọng nhất
(LSB – Least Significant Bit). LSB là bit mà khi ta đảo giá trị của nó thì điểm màu bị thay đổi ít nhất.
Ví dụ minh họa:
Với ảnh đa cấp xám, mỗi mức xám h được biểu diễn bởi số nguyên không âm, thì mức xám h sẽ sai khác ít nhất so với hai mức xám liền kề h + 1 và h – 1. Trong trường hợp này bit LSB chính là bit thấp nhất trong dạng biểu diễn nhị phân của h.
Hầu hết các thuật toán giấu tin trên ảnh màu hoặc ảnh đa cấp xám đều áp dụng gián tiếp thuật toán giấu tin trên ảnh đen trắng theo trình tự sau:
Bước 1: Tạo ảnh đen trắng F từ ảnh màu Fc bằng một kỹ thuật nào đó. Chẳng hạn lấy từ mỗi điểm màu trong Fc một bit ít quan trọng nhất của Fc để làm một điểm ảnh cho F.
Bước 2: Giấu tin vào ảnh đen trắng F để được ảnh đen trắng F’.
Bước 3: Đưa lại các bit của F’ vào mỗi điểm ảnh màu tương ứng của Fc để thu được ảnh màu kết quả là F’c.
Như vậy, thuật toán giấu tin trong ảnh đen trắng là cơ sở cho các thuật toán giấu tin nói chung.
2.4.4 Thuật toán Wu-Lee [7]
Là thuật toán giấu tin khá phổ biến do W.Y.Wu và J.H.Lee đề xuất năm 1989. Môi trường giấu tin là ảnh nhị phân được chia thành các khối bit đều nhau, mỗi khối là một ma trận nhị phân. Thông tin mật được giấu vào mỗi khối này bằng cách thay đổi nhiều nhất một bít của khối.
Một số khái niệm
a) Phép toán Λ: Gọi a và b là hai bít tuỳ ý, phép toán nhân bít AND, kí
hiệu là Λ trên hai bít a và b cho ta giá trị 1 khi và chỉ khi a=b=1, trong các trường hợp còn lại, aΛb=0
b) Phép toán : Phép toán cộng loại trừ (còn gọi là phép toán so khác) XOR, kí hiệu là trên hai bít a và b cho ta giá trị 1 nếu a b và giá trị 0 nếu
a = b. a b aΛb a b 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0
c) Phép toán Λ và : Cho A và B là hai ma trận bít cùng cấp. Ta phát triển các phép toán Λ và trên các bít tương ứng của A và B như sau:
Nếu A = (aij), B = (bij), C =(cij), D = (dij) thì A Λ B = C với cij = aij Λ bij
và A B = D với dij = aij bij
Thuật toán
Ý tưởng của thuật toán là sử dụng một khóa bí mật K là một ma trận nhị phân có kích thước dùng để làm tăng tính bí mật của các thông điệp được giấu.
Đầu vào: Ảnh gốc nhị phân F, khóa bí mật K và một thông điệp M cần
giấu.
Đầu ra: F’ là một file ảnh đã giấu tin.
Cách thực hiện:
Khóa K là một ma trận nhị phân có kích thước . Để đơn giản chúng ta coi kích cỡ của ảnh F là bội của . Việc nhúng thông tin giấu
vào trong ảnh sẽ được thực hiện bằng cách thay đổi một số bit của ảnh F theo các bước sau:
Bước 1: Chuyển thông điệp M sang dạng nhị phân. Chia ảnh F thành các khối nhỏ Fi, mỗi khối có kích thước là .
Bước 2: Với mỗi khối ảnh nhỏ Fi thu được từ bước 1, ta kiểm tra điều kiện: 0 < SUM (Fi^K) < SUM (K)
Nếu đúng thì chuyển tới bước 3 để giấu thông tin vào trong khối Fi, còn nếu không thì không giấu dữ liệu vào trong khối Fi, khối Fi sẽ được giữ nguyên.
Bước 3: Gọi bit cần giấu vào khối Fi là b, ta thực hiện các bước sau để thay đổi Fi:
Iƒ (SUM (Fi ^ K) mod 2 =b) then Giữ nguyên Fi;
else iƒ (SUM(Fi ^ K) =1) then
Chọn ngẫu nhiên một bit [Fi]j,k thỏa:([Fi]j,k = 0 và [K]j,k = 1); Thay [Fi]j,k = 1;
else iƒ SUM(Fi^K) = SUM(K) – 1) then
Chọn ngẫu nhiên một bit [Fi]j,k thỏa ([Fi]j,k = 1 và [K]j,k = 1); Thay [Fi]j,k = 0;
else
Chọn ngẫu nhiên một bit mà [K]j,k = 1 thay bit [Fi]j,k từ 0 thành 1 hoặc từ 1 thành;
Sau khi gắn dữ liệu thì Fi được chuyển thành Fi’ và giữ được tính chất bất biến sau đây:
0 < SUM (Fi’^K) < SUM (K) SUM (Fi’^K) b (mod 2).
Ví dụ: Giả sử ta cần giấu dãy bit M = 110 vào ảnh F có kích thước 8x8
và một ma trận khóa K có kích thước 4x4, như hình vẽ. Trước hết chia ảnh F thành 4 khối nhỏ F1, F2, F3, F4, mỗi khối nhỏ có kích thước là 4x4 .
Hình 2. 9: Minh họa giấu dãy bit M = 110 vào 4 khối ảnh nhị phân
Quá trình tách tin:
Đầu vào: F’ là ảnh đã được giấu thông điệp M
K là ma trận khóa bí mật, kích thước .
Đầu ra: Thông điệp được giấu M (ảnh gốc nhị phân F nếu cần giữ
lại).
Bước 1: Chia ảnh F’ thành các khối nhỏ F’i với kích thước . Bước 2: Ta kiểm tra các khối Fi’ để tách bit thông tin
For each F’i.
if0 < SUM (F’i^K) < SUM (K) then b = SUM (F’i^K) mod 2;
Trong đó b là bít nhị phân đã được giấu.
Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.
Phân tích thuật toán:
Việc chọn khóa K nhằm làm tăng độ bảo mật của thuật toán. Nếu trước đây chỉ biết kích thước khối là mxn thì đối phương rất rễ khai thác bản tin mật.
Thuật toán sử dụng phép toán AND để tính Fi K, nên giá trị lớn nhất của SUM (Fi K) không thể vượt quá SUM (K) và do tính chất của phép toán AND, nếu có một khối nào thay đổi thì vị trí thay đổi chỉ xảy ra ở phần tử có giá trị 1 trong khóa K. Vì thế một ảnh F hoàn toàn trắng nào đó được truyền đi thì người ta dễ dàng tìm được khóa K, vì vậy mà không dùng trường hợp