MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1. TỔNG QUAN VỀ KỸ THUẬT GIẤU TIN 4
VÀ GIẤU TIN TRONG ẢNH .4
1.1 Định nghĩa giấu tin và mục đích của việc giấu tin. 4
1.2 Phân loại các kỹ thuật giấu tin. 4
1.3 Giấu tin trong dữ liệu đa phương tiện. 5
1.3.1 Giấu tin trong ảnh. 5
1.3.2 Giấu tin trong Audio. 5
1.3.3 Giấu thông tin trong video. 5
1.4 Mô hình kỹ thuật giấu thông tin cơ bản 6
1.5 Một số ứng dụng. 7
CHƯƠNG 2. CẤU TRÚC CỦA MỘT SỐ ẢNH ĐẶC TRƯNG 9
2.1 Cấu trúc ảnh BMP. 9
2.2 Cấu trúc ảnh IMG. 11
2.3 Cấu trúc ảnh PCX. 11
2.4 Cấu trúc ảnh TIFF. 13
2.5 Cấu trúc ảnh GIF. 14
CHƯƠNG 3. NGHIÊN CỨU KỸ THUẬT GIẤU TIN TRONG ẢNH GIF 17
3.1 Các kỹ thuật giấu tin trong ảnh màu và ảnh đa cấp xám. 17
3.2 Mô hình bảng màu RGB sử dụng trong ảnh GIF 21
3.2.1 Bảng màu RGB. 21
3.2.2 Biểu diễn những con số trong bảng màu. 22
3.3 Thuật toán giấu tin trong ảnh GIF 22
3.4 Thuật toán Ezstego cải tiến 25
CHƯƠNG 4. KẾT QUẢ THỰC NGHIỆM 26
KẾT LUẬN 29
30 trang |
Chia sẻ: lynhelie | Lượt xem: 2355 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu kỹ thuật giấu tin trong ảnh gif, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dựa vào điểm yếu thính giác đó là dịch chuyển pha và thêm tiếng vang vào trong audio đã được ghi.
Giấu thông tin trong audio đòi hỏi rất cao về tính đồng bộ và tính an toàn của thông tin.
1.3.3 Giấu thông tin trong video.
Phân phối thông tin giấu dàn trải theo tần số của dữ liệu gốc. Có thể giấu cả âm thanh và hình ảnh vào video.
Giống như giấu thông tin trong ảnh hay trong audio, giấu tin trong video cũng được quan tâm và được phát triển mạnh mẽ cho nhiều ứng dụng như điều khiển truy cập thông tin, nhận thực thông tin và bảo vệ bản quyền tác giả. Ta có thể lấy một ví dụ là các hệ thống chương trình trả tiền xem theo đoạn với các video clip. Các kỹ thuật giấu tin trong video cũng được phát triển mạnh mẽ và cũng theo hai khuynh hướng là thuỷ vân số và data hiding. Một phương pháp giấu tin trong video được đưa ra bởi Cox là phương pháp phân bố đều. Ý tưởng cơ bản của phương pháp là phân phối thông tin giấu dàn trải theo tần số của dữ liệu chứa gốc. Nhiều nhà nghiên cứu đã dùng những hàm cosin riêng và các hệ số truyền sóng riêng để giấu tin. Trong các thuật toán khởi nguồn thì thường các kỹ thuật cho phép giấu các ảnh vào trong video nhưng thời gian gần đây các kỹ thuật cho phép giấu cả âm thanh và hình ảnh vào video. Như phương pháp của Swanson đã sử dụng phương pháp giấu theo khối, phương pháp này đã giấu được hai bít vào khối 8*8. Hay gần đây nhất là phương pháp của Mukherjee là kỹ thuật giấu audio vào video sử dụng cấu trúc lưới .
1.4 Mô hình kỹ thuật giấu thông tin cơ bản
Giấu thông tin vào trong phương tiện chứa và tách lấy thông tin là hai quá trình trái ngược nhau và được mô tả như sau:
Thông tin giấu
Phương tiện chứa(audio, ảnh, video)
Phương tiện chứa đã được giấu tin
Khóa
Phân phối
Bộ nhúng thông tin
Hình 1: Lược đồ chung cho quá trình giấu tin.
Hình vẽ biểu diễn quá trình giấu tin cơ bản. Phương tiện chứa bao gồm các đối tượng được dùng làm môi trường để giấu tin. Thông tin giấu là một lượng thông tin mang ý nghĩa nào đó. Thông tin sẽ được giấu vào trong phương tiện chứa nhờ một bộ nhúng và được thực hiện với một khóa bí mật.
Phân phối
Phương tiện chứa (audio, ảnh, video)
Thông tin giấu
Bộ nhúng thông tin
Khóa
Phương tiện chứa đã được dấu tin
Kiểm định
Hình 2: Lược đồ chung cho quá trình giải mã
Hình vẽ trên chỉ ra các công việc giải mã thông tin đã giấu. Sau khi nhận được đối tượng phương tiện chứa có giấu thông tin, quá trình giải mã được thực hiện thông qua một bộ giải mã tương ứng với bộ nhúng thông tin cùng với khóa của quá trình nhúng. Kết quả thu được gồm phương tiện chứa gốc và thông tin đã giấu.
1.5 Một số ứng dụng.
- Bảo vệ bản quyền tác giả (copyright protection): Đây là ứng dụng cơ bản nhất của kỹ thuật thuỷ vân số (digital watermarking) - một dạng của phương pháp giấu tin. Một thông tin nào đó mang ý nghĩa quyền sở hữu tác giả (người ta gọi nó là thuỷ vân - watermark) sẽ được nhúng vào trong các sản phẩm, thuỷ vân đó chỉ một mình người chủ sở hữu hợp pháp các sản phẩm đó có và được dùng làm minh chứng cho bản quyền sản phẩm. Giả sử có một thành phẩm dữ liệu dạng đa phương tiện như ảnh, âm thanh, video và cần được lưu thông trên mạng. Để bảo vệ các sản phẩm chống lại các hành vi lấy cắp hoặc làm nhái cần phải có một kỹ thuật để “dán tem bản quyền” vào sản phẩm này. Việc dán tem hay chính là việc nhúng thuỷ vân cần phải đảm bảo không để lại một ảnh hưởng lớn nào đến việc cảm nhận sản phẩm. Yêu cầu kỹ thuật đối với ứng dụng này là thuỷ vân phải tồn tại bền vững cùng với sản phẩm, muốn bỏ thuỷ vân này mà không được phép của người chủ sở hữu thì chỉ còn cách là phá huỷ sản phẩm.
- Nhận thực thông tin hay phát hiện xuyên tạc thông tin Một tập các thông tin sẽ được giấu trong phương tiện chứa sau đó được sử dụng để nhận biết xem dữ liệu trên phương tiện gốc đó có bị thay đổi hay không. Các thuỷ vân nên được ẩn để tránh được sự tò mò của kẻ thù, hơn nữa việc làm giả các thuỷ vân hợp lệ hay xuyên tạc thông tin nguồn cũng cần được xem xét. Trong các ứng dụng thực tế, người ta mong muốn tìm được vị trí bị xuyên tạc cũng như phân biệt được các thay đổi (ví dụ như phân biệt xem một đối tượng đa phương tiện chứa thông tin giấu đã bị thay đổi, xuyên tạc nội dung hay là chỉ bị nén mất dữ liệu). Yêu cầu chung đối với ứng dụng này là khả năng giấu thông tin cao và thuỷ vân không cần bền vững.
- Giấu vân tay hay dán nhãn (fingerprinting and labeling): Thuỷ vân trong những ứng dụng này đựơc sử dụng để nhận diện người gửi hay người nhận của một thông tin nào đó. Ví dụ như các vân khác nhau sẽ được nhúng vào các bản copy khác nhau của thông tin gốc trước khi chuyển cho nhiều người. Với những ứng dụng này thì yêu cầu là đảm bảo độ an toàn cao cho các thuỷ vân tránh sự xoá giấu vết trong khi phân phối.
- Điều khiển truy cập (copy control): Các thuỷ vân trong những trường hợp này được sử dụng để điều khiển truy cập đối với các thông tin. Các thiết bị phát hiện ra thuỷ vân thường được gắn sẵn vào trong các hệ thống đọc ghi.
CHƯƠNG 2. CẤU TRÚC CỦA MỘT SỐ ẢNH ĐẶC TRƯNG
Cấu trúc ảnh nói chung gồm 3 phần chính: Header, dữ liệu, bảng màu. Tuy nhiên mỗi loại ảnh khác nhau lại có những đặc trưng khác nhau, dưới đây là định dạnh một số loại ảnh cơ bản:
2.1 Cấu trúc ảnh BMP.
Đây là một định dạng ảnh cổ điển nhất dùng để hiển thị trực tiếp ảnh trên máy tính.
Cấu trúc bitmap gồm 3 phần.
Bitmap FileHeader
Bitmap Info Header
RGB QUAD
BitmapData
Phần 1: Dài 14 byte gồm thông tin: Kiểu tệp, kích thước tệp, địa chỉ offset của vùng dữ liệu.
Byte:
1-2 : Nhận dạng File. Chứa hai kí tự 'BM'.
3-6: Kích thước File tính bằng Byte. Kiểu Longint.
7-10 Dự trữ. Kiểu Longint.
11-14: Byte bắt đầu vùng dữ liệu, vị trí byte bắt đầu vùng dữ liệu. Kiểu Longint.
Phần 2: Bitmap info gồm 2 phần: 40 byte Infoheader và RGBquad. RGBquad là bảng màu mở rộng chứa tất cả các giá trị màu dùng cho ảnh, số lượng phần tử của bmp bằng số màu của ảnh, bmp chỉ dùng với ảnh 16 và 256 màu.
*Bitmap Info:
Byte
1-4: Số Byte trong vùng Info, hiện tại có giá trị 40. Kiểu Longint.
5-8: Chiều rộng Bitmap tính bằng Pixel. Kiểu Longint.
9-12: Chiều cao Bitmap tính bằng Pixel. Kiểu Longint.
13-14: Số Planes màu: số bảng màu. Kiểu Word.
15-16 Số bits cho một Pixel. Kiểu Word, các giá trị có thể là 1 (đen trắng), 4 (16 màu), 8(256 màu), 24 (24 Bits màu).
17-20: Kiểu nén dữ liệu. Kiểu Longint. 0: không nén. 1: Nén Runlenght 8bits/pixel; 2: Nén Runlength 4bits/pixel.
21-24: Kích thước ảnh, bằng số byte của ảnh. Kiểu Longint.
25-28: Độ phân giải ngang, tính bằng Pixel. Kiểu Longint.
29-32: Độ phân giải dọc tính bằng Pixel. Kiểu Longint.
22-26: Số màu được sử dụng trong ảnh. Kiểu Longint.
37-40: Số màu được sử dụng khi hiện ảnh. Kiểu Longint.
*Bitmap Palette:
Tiếp theo sau vùng Info là Palette màu của BMP, gồm nhiều bộ có kích thước 4 byte xếp liền nhau theo cấu trúc Blue-Green-Red và một Byte dành riêng cho Itensity. Kích thước của vùng Palette màu bằng 4 x số màu của ảnh. Nếu số bits màu của ảnh (byte 15-16 của Info là 24 hoặc 32 thì không có vùng Palette). Vì Palette màu cảu màn hình có cấu tạo theo thứ tự Red-Green-Blue nên khi đọc Palette màu của ảnh BMP vào ta phải chuyển đổi lại cho phù hợp. Số màu của ảnh được biết dự trên số Bits cho 1 pixel cụ thể là:
8 bits/pixel: ảnh 256 màu.
4 bits/pixel: ảnh 16 màu.
24 bits : 16777216 màu.
Phần 3: Bitmap data: Nó chứa chỉ số của màu tương ứng cho điểm ảnh, các pixel được lưu tuần tự từ trái sang phải và được lưu theo các dòng. Các scanline được lưu từ dưới lên trên. Để hạn chế hao phí cho việc lưu trữ tệp ảnh bitmap thì phần Bitmap Data có thể được nén lại.
2.2 Cấu trúc ảnh IMG.
Ảnh IMG là ảnh đen trắng. Phần đầu của ảnh IMG có 16 byte chứa các thông tin cần thiết:
+ 6 byte đầu: dùng để đánh dấu định dạng ảnh IMG. Giá trị của 6 byte này viết 0x0001 0x0008 0x0001.
+ 2 byte tiếp theo: chứa độ dài mẫu tin. Đó là độ dài của dãy các byte kề liền nhau mà dãy này sẽ được lặp lại một số lần nào đó. Số lần lặp này sẽ được lưu trữ trong byte đếm. Nhiều dãy giống nhau được lưu trong một byte. Đó là cách lưu trữ nén.
+ 4 byte tiếp: mô tả kích cỡ pixel.
+ 2 byte tiếp: số pixel trên một dòng ảnh.
+ 2 byte cuối: số dòng ảnh trong ảnh.
Ảnh IMG được nén theo từng dòng. Mỗi dòng bao gồm các gói (pack). Các dòng giống nhau cũng được nén thành một gói.
2.3 Cấu trúc ảnh PCX.
Định dạng ảnh PCX là một trong những định dạng ảnh cổ điển nhất. Nó sử dụng phương pháp mã loạt dài RLE để nén dữ liệu ảnh. Quá trình nén và giải nén được thực hiện trên từng dòng ảnh. Thực tế, phương pháp giải nén PCX kém hiệu quả hơn so với kiểu IMG. Tệp PCX gồm 3 phần: đầu tệp (header), dữ liệu ảnh (image data) và bảng màu mở rộng.
* Cấu trúc tệp ảnh dạng PCX
Header 128 bytes
Bảng mầu mở rộng
Dữ liệu ảnh nén
Header của tệp PCX có kích thước cố định gồm 128 byte và được phân bố như sau:
+ 1 byte: chỉ ra kiểu định dạng. Nếu là kiểu PCX/PCC nó luôn có giá trị là 0Ah.
+ 1 byte: chỉ ra version sử dụng để nén ảnh, có thể có các giá trị sau:
0: version 2.5.
2: version 2.8 với bảng màu.
3: version 2.8 hay 3.0 không có bảng màu.
5: version 3.0 có bảng màu.
+ 1 byte: chỉ ra phương pháp mã hoá. Nếu là 0 thì mã hoá theo phương pháp BYTE PACKED, nếu không là phương pháp RLE.
+ 1 byte: số bit cho một điểm ảnh plane.
+ 1 word: toạ độ góc trái trên của ảnh. Với kiểu PCX nó có giá trị là (0,0); còn PCC thì khác (0,0).
+ 1 word: toạ độ góc phải dưới.
+ 1 word: kích thước bề rộng và bề cao của ảnh.
+ 1 word: số điểm ảnh.
+ 1 word: độ phân giải màn hình.
+ 1 word.
+ 48 byte: chia thành 16 nhóm, mỗi nhóm 3 byte. Mỗi nhóm này chứa thông tin về một thanh ghi màu. Như vậy ta có 16 thanh ghi màu.
+ 1 byte: số bit plane mà ảnh sử dụng. Với ảnh 16 màu, giá trị này là 4, với ảnh 256 màu (1 pixel/ 8 bit) thì số bit plane lại là 1.
+ 1 byte: số bytes cho một dòng quét ảnh.
+ 1 word: kiểu bảng màu.
+ 58 byte: không dùng.
Tóm lại, định dạng ảnh PCX thường được dùng để lưu trữ ảnh vì thao tác đơn giản, cho phép nén và giải nén nhanh.
2.4 Cấu trúc ảnh TIFF.
Cấu trúc gồm có 3 phần:
- Phần header IFH (Image File Header) có trong tất cả các tệp TIFF và gồm 8 byte.
+ 1 word: chỉ ra kiểu tạo tệp trên máy tính.
+ 1 word: version.
+ 2 word: giá trị Offset theo byte tính từ đầu file tới cấu trúc IFD.
- Phần thứ 2 IFD (Image File Directory): Nó không ở ngay sau IFH mà vị trí của nó được xác định bởi trường offset trong đầu tệp.
Một IFD gồm:
+ byte: chứa các DE (Directory Entry).
+ 12 byte là các DE xếp liên tiếp. Mỗi DE chiếm 12 byte.
+ 4 byte: chứa Offset trỏ tới IFD tiếp theo.
- Cấu trúc phần dữ liệu thứ 3: Các DE, Các DE có độ dài cố định 12 byte và gồm 4 phần.
+ 2 byte: chỉ ra dấu hiệu mà ảnh đã được xây dựng.
+ 2 byte: kiểu dữ liệu của tham số ảnh.
+ 4 byte trường độ dài.
+ 4 byte đó là Offset tới điểm bắt đầu dữ liệu thực liên quan tới dấu hiệu, tức là dữ liệu liên quan với DE không phải lưu trữ vật lý cùng với nó nằm ở một vị trí nào đó trong file. Dữ liệu chứa trong tệp thường được tổ chức thành các nhóm dòng (cột) quét của dữ liệu ảnh.
2.5 Cấu trúc ảnh GIF.
Cấu trúc ảnh GIF
GIF note
GIF header (7 byte)
Globel Palette
Header Image (10 byte)
Palette of Image (nếu có)
Data of Image 1
‘,’ ký tự liên kết
..
‘;’ terminator
Chữ ký của ảnh.
Bộ mô tả hiển thị.
Bản đồ màu tổng thể.
Mô tả một đối tượng của ảnh.
- Dấu phân cách.
- Bộ mô tả ảnh.
- Bản đồ màu cục bộ.
- Dữ liệu ảnh. Phần mô tả này lặp lại n lần nếu ảnh chứa n đối tượng.
- Phần đầu cuối ảnh GIF (terminator).
+ Chữ ký của ảnh GIF có giá trị là GIF87a. Nó gồm 6 ký tự, 3 ký tự đầu chỉ ra kiểu định dạng, 3 ký tự sau chi ra version của ảnh.
+ Bộ hình thị: chứa mô tả các thông số cho toàn bộ ảnh GIF:
Độ rộng hình raster theo pixel: 2 byte.
Độ cao hình raster theo pixel: 2 byte.
Các thông tin và bản đồ màu, hình hiển thị,
Thông tin màu nền: 1 byte.
Phần chưa dùng: 1 byte.
+ Bản đồ màu tổng thể: tả bộ màu tối ưu đòi hỏi khi bit M = 1. Khi bộ màu tổng thể được thể hiện, nó sẽ xác định ngay bộ mô tả hiển thị ở trên và bằng 2m, với m là lượng bit trên một pixel, 3 byte (biểu diễn cường độ màu của 3 màu cơ bản Red-Green-Blue). Cấu trúc của khối này như sau:
Bit
Thứ tự byte
Mô tả
Màu Red
1
Giá trị màu đỏ theo index 0
Màu Green
2
Giá trị màu xanh lục theo index 0
Màu Blue
3
Giá trị màu xanh lơ theo index 0
Màu Red
4
Giá trị màu đỏ theo index 1
Màu Green
5
Giá trị màu xanh lục theo index 1
Màu Blue
6
Giá trị màu xanh lơ theo index 0
+ Bộ mô tả ảnh: định nghĩa vị trí thực tế và phần mở rộng của ảnh trong phạm vi không gian ảnh đã có trong phần mô tả hiển thị. Nếu ảnh biểu diễn theo ánh xạ màu cục bộ thì cờ định nghĩa phải được thiết lập. Mỗi bộ mô tả ảnh được chỉ ra bởi ký tự kết nối ảnh. Ký tự này chỉ được dùng khi định dạng GIF có từ 2 ảnh trở lên. Ký tự này có các giá trị 0x2c (ký tự dấu phẩy). Khi ký tự này được đọc qua, bộ mô tả ảnh sẽ được kích hoạt. Bộ mô tả ảnh gồm 10 byte và có cấu trúc như sau:
Các bit
Thứ tự byte
Mô tả
0010110
1
Ký tự liên kết ảnh (‘)
Căn trái ảnh
2,3
Pixel bắt đầu ảnh tính từ trái hình hiển thị
Căn đỉnh trên
4,5
Pixel cuối ảnh bắt đầu tính từ đỉnh trên hình hiển thị
Độ rộng ảnh
6,7
Độ rộng ảnh tính theo pixel
Độ cao ảnh
8,9
Chiều cao ảnh tính theo pixel
MI000pixel
10
Khi bit M=0 sử dụng bảng màu tổng thể. M=1 sử dụng bản đồ màu cục bộ. I = 0: định dạng ảnh theo thứ tự liên tục. I = 1: định dạng ảnh theo thứ tự xen kẽ pixel + 1: số bit/pixel của ảnh này.
+ Bản đồ màu cục bộ: chỉ được chọn khi bit M của byte thứ 10 là 1. Khi bản đồ màu được chọn, bản đồ màu sẽ chiếu theo bộ mô tả ảnh mà lấy vào cho đúng. Tại phần cuối ảnh, bản đồ màu sẽ lấy lại phần xác lập sau bộ mô tả hiển thị. Các tham số này không những chỉ cho biết kích thước ảnh theo pixel mà còn chỉ ra số thực thể bản đồ màu của nó.
+ Dữ liệu ảnh: chuỗi các giá trị có thứ tự của các pixel màu tạo nên ảnh. Các pixel được xếp liên tục trên một dòng ảnh, từ trái qua phải. Các dòng ảnh được viết từ trên xuống dưới.
+ Phần kết thúc ảnh: cung cấp tính đồng bộ cho đầu cuối của ảnh GIF. Cuối của ảnh sẽ xác định bởi kí tự “;” (0x3b).
Định dạng GIF có rất nhiều ưu điểm và đã được công nhận là chuẩn để lưu trữ ảnh màu thực tế (chuẩn ISO 0918-1).
CHƯƠNG 3. NGHIÊN CỨU KỸ THUẬT GIẤU TIN TRONG ẢNH GIF
3.1 Các kỹ thuật giấu tin trong ảnh màu và ảnh đa cấp xám.
Giấu thông tin trong ảnh kỹ thuật số là một công nghệ tương đối mới và có khả năng giải quyết được nhiều vấn đề quan trọng. Lĩnh vực này tuy mới được nghiên cứu gần đây nhưng đang phát triển rất nhanh và cho những kết quả khả quan. Một vài thuật toán đã được thực hiện trên một số điểm ảnh cụ thể. Maxemchuk đã đưa ra một phương pháp giấu thông tin trong các file ảnh văn bản lợi dụng khoảng trống giữa các dòng và giữa các ký tự. Tuy nhiên cách thực hiện này bị hạn chế đối với các loại ảnh đen trắng và số lượng giấu thông tin trong ảnh là rất hạn chế.
Đố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 hơn vì ảnh màu được sử dụng rất nhiều và cung cấp lượng dữ liệu lớn hơn cho việc giấu thông tin do mỗi điểm ảnh được biểu diễn bằng nhiều bit. Hơn nữa với ảnh màu thì việc thay đổi một giá trị nhỏ ở một điểm thì chất lượng ảnh gần như không thay đổi, và do đó khả năng bị phát hiện là rất thấp dưới thị giác của con người. Với những ảnh mà mỗi điểm ảnh chỉ mang một giới hạn nhỏ các giá trị thì việc giấu thông tin trong ảnh đảm bảo tính vô hình của thông tin che giấu là một công việc khó khăn hơn nhiều.
Đối với việc chọn ảnh màu và ảnh đa cấp xám làm ảnh môi trường thì trước hết ta cần quan tâm tới bit ít đặc trưng nhất LSB (least significant bit). LSB là bit có ảnh hưởng ít nhất tới việc quyết định màu sắc của mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít đặc trưng nhất của một điểm ảnh thì màu sắc của điểm ảnh mới tương đối gần với điểm ảnh cũ. 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 đó.
Quá trình giấu tin vào ảnh màu và ảnh đa cấp xám cũng tương tự như với ảnh đen trắng nhưng trước hết ta chọn từ mỗi điểm ảnh ra bit ít đặc trưng nhất để tạo thành ảnh nhị phân gọi là ảnh thứ cấp. Sử dụng ảnh thứ cấp này như ảnh môi trường để giấu tin, sau khi biến đổi ảnh thứ cấp ta trả nó lại ảnh ban đầu để thu được ảnh kết quả.
Ảnh màu và ảnh đa cấp xám cho hiệu quả hơn ảnh đen trắng, vì việc thay đổi bit ít đặc trưng nhất trong những ảnh này dường như không làm thay đổi màu sắc của điểm ảnh trong khi việc thay đổi mỗi bit trong ảnh đen trắng làm cho điểm ảnh chuyển màu từ đen sang trắng hoặc từ trắng sang đen do đó dễ bị phát hiện.
Đối với ảnh 16 bit màu hoặc 24 bit màu thì việc xác định LSB tương đối đơn giản, tuy nhiên đối với ảnh nhỏ hơn hoặc bằng 8 bit màu (những ảnh có sử dụng bảng màu) thì rất phức tạp. Khó khăn này có thể được khắc phục nếu ta sắp lại bảng màu của ảnh hoặc sử dụng những màu không dùng đến trong bảng màu của ảnh nhỏ hơn hoặc bằng 8 bit màu.
Ảnh đa cấp xám
Đối với ảnh đa cấp xám bảng màu của nó đã được sắp, tức là những cặp màu trong bảng màu có chỉ số chênh lệch càng ít thì càng giống nhau. Vì vậy đối với ảnh đa cấp xám bit LSB của mỗi điểm ảnh là bit cuối cùng của mỗi điểm ảnh.
Quá trình tách bit LSB của ảnh đa cấp xám và thay đổi các bit này bằng thuật toán giấu tin trong ảnh đen trắng sẽ làm chỉ số màu của điểm màu thay đổi tăng hoặc giảm 1 đơn vị, do đó điểm ảnh mới sẽ có độ sáng tối của ô màu liền trước hoặc liền sau ô màu của điểm ảnh cũ. Bằng mắt thường rất khó phát hiện thấy sự thay đổi về độ sáng tối này.
Ảnh nhỏ hơn hoặc bằng 8 bit màu.
Những ảnh thuộc loại này gồm có ảnh 16 màu (4 bit màu) và ảnh 256 màu (8 bit màu). Khác với ảnh cấp xám, ảnh màu với số bit màu nhỏ hơn hoặc bằng 8 bit không phải luôn luôn được sắp bảng màu. Những màu ở liền kề nhau trong bảng màu có thể rất khác nhau chẳng hạn như màu đen với màu trắng vẫn có thể được xếp cạnh nhau. Vì vậy việc xác định các bit LSB của ảnh loại này rất khó. Nếu ta chỉ làm như đối với ảnh xám, tức là vẫn lấy bit cuối cùng của mỗi điểm ảnh để tạo thành ảnh thứ cấp thì mỗi thay đổi 0 -> 1 hoặc 1 -> 0 trên ảnh thứ cấp có thể làm cho màu của điểm ảnh cũ và mới tương ứng thay đổi rất nhiều dù chỉ số màu của cúng cũng chỉ tăng hoặc giảm 1 mà thôi.
Để khắc phục khó khăn này, ta có thể sắp lại bảng màu của ảnh môi trường sao cho hai màu liên tiếp khác nhau ít nhất bằng cách so sánh thành phần màu của từng cặp điểm với nhau. Tuy nhiên màu của điểm ảnh là một vecto 3 thành phần không sắp thứ tự nên việc so sánh chỉ mang tính tương đối. Quá trình sắp lại bảng màu như sau:
Chọn một màu bất kỳ trong bảng màu, giả sử là màu A(x,y,z) để đưa vào vị trí đầu tiên trong bảng màu trong đó x là thành phần Red, y là thành phần Green, z là thành phần Blue.
Duyệt tất cả các màu còn lại trong bảng màu, với mỗi màu B(m,n,p) chưa được sắp ta tính đại lượng:
S(A,B) = sqrt[(x-m)2 + (y-n)2 + (z-p)2]
Chọn màu B có s(A,B) nhỏ nhất để xếp cạnh màu A trong bảng màu, quay lại bước 2 để tiếp tục tìm màu chưa được sắp gần với B nhất.
Quá trình kết thúc khi mọi màu của bảng màu đã được sắp.
Sau khi sắp lại bảng màu ta phải thay đổi lại chỉ số của mỗi điểm màu trong ảnh để màu của điểm không bị thay đổi. Chẳng hạn nếu sau khi sắp lại bảng màu, màu có chỉ số 15 trong bảng màu cũ mang chỉ số mới là 80 trong bảng màu mới thì mọi điểm ảnh có giá trị là 15 phải được đổi thành 80.
So với ảnh 16 bit màu hoặc 24 bit màu, ảnh 8 bit màu cũng như ảnh 4 bit màu có vẻ khó giấu thông tin hơn vì việc thay đổi dù chỉ một bit trên một điểm ảnh cũng có thể dẫn đến sự thay đổi nhận thấy được về màu sắc của điểm ảnh, cho dù bảng màu của ảnh đã được sắp. Tuy nhiên dựa vào đặc điểm không phảỉ ảnh nào cũng sử dụng tất cả các màu trong bảng màu để hiển thị ảnh ta có thể sử dụng các màu không dùng đến kết hợp sắp bảng màu để làm mịn ảnh kết quả.
Để biết những màu nào được dùng, màu nào không dùng đến trong bảng màu ta duyệt toàn bộ các màu trong bảng và đánh dấu những màu có chỉ số xuất hiện trong dữ liệu ảnh.
Giả sử trong bảng màu có một màu C không dùng đến, với mỗi điểm màu A khi tìm được màu B có sử dụng trong bảng màu để sắp cạnh A mà giá trị s(A,B) vẫn còn lớn hơn một ngưỡng nào đó ta sẽ chèn ô màu C vào giữa màu A và B đồng thời đổi lại màu của ô C sao cho giống A và B nhất có thể.
Trường hợp số màu được sử dụng nhỏ hơn hoặc bằng 86 màu (đối với ảnh 256 màu) hay nhỏ hơn hoặc bằng 6 (đối với ảnh 16 màu) thì việc sắp lại bảng màu cho ta kết quả giấu tin rất đẹp. Khi đó quá trình sắp lại bảng màu tiến hành theo các bước sau:
Duyệt bảng màu để xác định màu nào có được sử dụng, màu nào không được sử dụng.
Sắp các màu có sử dụng vào các vị trí thứ 3*k của bảng màu với k=0,1,2,(vị trí đầu tiên trong bảng màu là vị trí thứ 0).
Chèn các ô màu không dùng đến vào các vị trí còn lại của bảng màu.
Với mỗi màu A(x,y,z) có sử dụng đến nằm ở vị trí 3*k của bảng màu mới, ta copy màu A vào ô màu nằm ở vị trí 3*k+1 và vào ô màu nằm ở vị trí 3*k-1.
Chỉnh lại chỉ số màu của mỗi điểm ảnh để thu được ảnh mới giống hệt ảnh cũ khi hiển thị.
Quá trình sắp lại bảng màu sẽ cho ta một ảnh mới không hề khác ảnh cũ khi hiển thị, tuy nhiên vẫn có sự khác nhau về mặt giá trị. Tiến hành giấu tin trên ảnh thứ cấp của ảnh vừa thu được bằng cách tách bit cuối cùng trong mỗi điểm ảnh. Việc đảo bit trên ảnh thứ cấp làm cho giá trị của điểm ảnh tăng hoặc giảm 1, tức là điểm ảnh mới sẽ mang màu của ô có chỉ số 3*k+1 hoặc 3*k-1 (giá trị cũ là 3*k), nhưng cả hai ô này đều có màu của ô 3*k nên điểm ảnh mới không hề có sự thay đổi về màu sắc so với điểm ảnh cũ. Như vậy ảnh kết quả không có nhiễu, tức là hai ảnh sẽ giống hệt nhau.
Một hướng khác đối với giấu tin trong ảnh nhỏ hơn 8 bit màu là là ta giấu thông tin vào trong bảng màu. Tức là thay vì tách các bit LSB của các điểm ảnh ta tách các bit LSB của bảng màu và thực hiện quá tình giấu tin trên các bit vừa thu đuợc. Quá trình này cũng tương tự như khi ta giấu tin trong ảnh 24 bit màu với kích thước ảnh là 256 điểm ảnh (ảnh 8 bit màu), do đó lượng thông tin giấu được sẽ rất ít, bị giới hạn bởi kích thước bảng màu. Chẳng hạn đối với ảnh 8 bit màu, chọn kích thước khối là 10*10, r=4, láy từ mỗi ô màu ra 3 bit ta sẽ chỉ giấu được một lượng thông tin cực đại là 28 bit bằng thuật toán trên.
Tuy nhiên giải pháp này cũng có những hạn chế vì ảnh kết quả có bảng màu đặc biệt, dễ gây nghi ngờ bởi sự giống nhau của 3 ô màu liên tiếp trong bảng màu. Hơn nữa, bảng màu có thể bị sắp xếp lại hoặc điều chỉnh lại bởi phần mềm xử lý ảnh trong quá trình hiển thị hay lưu lại ảnh dẫn đến thông tin đã được đánh giấu có thể sẽ bị mất đi không khôi phục lại được.
3.2 Mô hình bảng màu RGB sử dụng trong ảnh GIF
3.2.1 Bảng màu RGB.
Bảng màu RGB được sử dụng trong ảnh GIF, bảng màu được thiết lập bởi 3 giá trị nằm trong miền từ 0 đến 255. Đầu tiên là màu đỏ, sau đó là màu xanh lá cây, rồi đến màu xanh da trời.
Bảng màu chính RGB.
R
G
B
Red
255
0
0
Green
0
255
0
Blue
0
0
255
Yellow
255
255
0
White
255
255
255
Black
0
0
0
Trong bảng màu RGB có tất cả 256 * 256 * 256 = 16,777,216 màu.
3.2.2 Biểu diễn những con số trong bảng màu.
Bảng màu là danh sách các màu trong RGB được sử dụng trong ảnh. Đa số các hình ảnh trên trang này sử dụng bảng màu 8 bit. Điều đó có nghĩa là không thể có tất cả 16,777,216 màu mà chỉ có thể có 256 màu RGB trong ảnh. Vì số nhị phân 8 bit chỉ có thể đảm nhận 256 giá trị màu rõ ràng.
Hình ảnh có thể được xem như một mảng lưới với các chỉ số trong bảng màu sẽ được đưa vào mỗi ô. Chỉ số là một số nhị phân 8 bit, ký tự của số nhị phân 8 bit có thể hạn chế từ 0 đến 255. Các khung lưới đó chính là các pixel.
Vài ví dụ về những số nhị phân 8 bit.
Số nhị phân
Số thập phân tương đương
00000000
0
00001101
13
01010100
84
11111111
255
Bit xa nhất bên phải bit nhị phân được gọi là bit ít quan trọng nhất bởi vì việc thay đổi nó sẽ ít thay đổi trên các giá trị số.
3.3 Thuật toán giấu tin trong ảnh GIF
Giấu tin trong ảnh GIF sử dụng thuật toán Ezstego. Thuật toán Ezstego do Romana Machado đề xuất vào năm 1996 với ý tưởng như sau.
Ý tưởng:
Sắp xếp lại bảng màu của ảnh, sau đó thực hiện giấu tin dựa trên bảng màu đã sắp.
Input: Một file ảnh GIF.
Một chuỗi thông điệp giấu.
Output: Một file ảnh GIF đã giấu tin.
Các bước thực hiện:
B1: Sắp xếp bảng màu.
Ezstego copy bảng màu của ảnh. Sau đó sắp xếp lại bảng copy đó của bảng màu sao cho các màu được sắp xếp gần giống nhau.
Đây là 9 màu của ảnh GIF nhìn lúc trước và sau khi sắp xếp.
Nếu ta biểu diễn bảng màu trong không gian 3 chiều với 3 màu RGB thì ta sẽ có bảng màu trước và sau khi sắp xếp như sau.
Hình 3: Các màu trong bảng màu lúc trước và sau khi sắp xếp.
B2: Giấu thông tin.
Ezstego giấu thông điệp từ trái sang phải.
Ezstego đặt bit cần giấu vào LSB (least significant bit) của pixel ảnh theo các bước thực hiện sau:
- Tìm chỉ số màu RGB của pixel trong bảng được sắp.
- Thông điệp sẽ được nhúng vào và màu đó sẽ được thay thế bởi màu lân cận nếu cần thiết.
Ví dụ:
Bảng màu trước khi sắp
Các giá trị sau khi nhúng thông điệp
Bit thông điệp
Bảng màu sau khi sắp
Chỉ số bảng m