2.2.1 Kỹ thuật gài vào các bít có trọng số thấp
a) Nền tảng kỹ thuật
Khi chuyển một ảnh tương tự sang ảnh số người ta thường chọn ba cách thể hiện mầu:
24-bit mầu: mỗi điểm có thể nhận một trong 2^24 mầu, mỗi mầu được tạo từ ba mầu căn bản: red (R), green (G) và blue (B), mỗi mầu nhận một trị từ 0 đến 255 (8 bit)
8-bit mầu: mỗi điểm có thể nhận một trong 256 mầu, chọn từ một bảng mầu (palette)
8-bit dải xám: mỗi điểm nhận một trong 256 (2^8) sắc thái xám
Phương pháp LSB sửa bít hay các bít có trọng số thấp nhất (ít quan trong nhất để tạo nên mầu điểm ảnh), gài các thông tin mật vào đó. Các thông tin được dấu sẽ lẩn vào đâu đó giống như nhiễu ảnh.
Áp dụng kỹ thuật LSB, một điểm ảnh 24-bit có thể giấu được ba bit thông tin (vì mỗi điểm được thể hiện bằng ba byte). Mọi sự thay đổi trên điểm ảnh có trọng số thấp đều không gây nên sự chú ý của mắt người.
b) Ví dụ minh hoạ
Chữ cái A có mã ascii là 65 hệ thập phân (1000001 hệ nhị phân). Các điểm ảnh trước khi dấu. Để giấu chữ 'A' cần ba điểm ảnh liên tiếp. Ví dụ các điểm ảnh trước khi giấu là:
00100111 11101001 11001000 00100111 11001000 11101001 11001000 00100111 11101001
Chèn giá trị nhị phân của chữ 'A' vào ba điểm ảnh trên bắt đầu từ byte trên cùng bên trái sẽ cho kết quả:
00100110 11101001 11001000 00100110 11001000 11101000 11001000 00100110 11101001
Các bit được gạch chân là các bit bị lật. Có thể dùng hai bit có trọng số thấp để giấu tin mà chất lượng không thay đổi mấy đối với mắt thường.
Từ ví dụ trên ta có thể suy ra rằng nếu dùng 1 LSB thì xác suất phải lật bít là 50%, vậy nên lượng nhiễu gây ra cho ảnh là rất ít.
Đối với ảnh mầu 24 bit, đôi khi chúng ta có thể dùng đến 2 hoặc thậm chí 3 bít thấp mà vẫn không để lộ thông tin mật. Đối với ảnh 8 bit thì điều này là không thể, và người ta chỉ dùng 1 bít thấp nhất để giấu tin
Nếu ta có giấu từ “dig” trong ảnh, ta lấy LSB của mỗi mầu và giấu mỗi bit các chữ của từ trong RGB. Để chèn chữ “D”, ta thay đổi ba pixel mầu bằng 3 bit trong mỗi pixel mầu, ta dùng 9 đến 10 bit để giấu chữ với một bit ở pixel thứ 10.
ASCII CODES: D- 0100 0100 I- 0110 1001 G-0110 0111
Thí dụ để dấu tin trong ảnh mầu theo phương pháp LSB thì đầu tiên ta thực hiện chọn ảnh gốc dùng để dấu tin và ảnh bí mật cần dấu. Tiếp theo chọn số bit ta muốn sử dụng để dấu ảnh bí mật, càng dùng nhiều bit trên ảnh gốc thì càng làm nó xấu đi còn ảnh bí mật lại càng rõ. Bây giờ ta tạo ra ảnh mới kết hợp giữa hai ảnh đã chọn, theo ví dụ này ta dùng 4 bit để dấu ảnh bí mật cũng có nghĩa là ảnh gốc thiếu đi 4 bit (PGM – một byte trên một pixel, JPEG – một byte cho đỏ, xanh lá cây, xanh da trời và một byte cho kênh alpha trong một số loại ảnh khác)
Host Pixel: 10110001 Secret Pixel: 00111111 New Image Pixel: 10110011
Để lấy lại ảnh gốc ta cần biết có bao nhiêu bit đã dùng để lưu ảnh bí mật. Ta quét ảnh kết hợp và ảnh gốc, tìm ra được số bit chênh lệch và dùng chúng để tạo ra ảnh mới có một thay đổi là gồm có đủ hầu hết các bit.
Host Pixel: 10110011 Bits used: 4
New Image: 00110000
c) Dung lượng giấu
Phương pháp này giấu được lượng thông tin rất lớn.
Với ảnh 24 bit/ điểm ảnh, dùng một bít có trọng số thấp có thể dấu được:
3 bít ẩn / 1 điểm ảnh (24 bít dữ liệu) = 1/8 bít ẩn / bít dữ liệu Nếu dùng 2 bít có trọng số thấp
6 bít ẩn / 1 điểm ảnh (24 bít dữ liệu) = 1/4 bít ẩn / bít dữ liệu
Trong các ảnh sặc sỡ chúng ta có thể dùng thậm chí 3 bit LSB, khi đó thu được tỷ lệ bít ẩn/bit dữ liệu là 3/8.
Đôi khi người ta hỏi ngược lại là cần bao nhiêu byte ảnh để có thể giấu 1 byte tin mật. Nếu chỉ dùng 1 bit thấp ta cần 8 byte, nếu dùng đến 2 bit, ta chỉ cần 4 byte dữ liệu là đã giấu được 1 byte thông tin.
Nếu áp dụng kỹ thuật LSB lên ảnh 8-bit, cần phải chú ý hơn vì ảnh 8- bit không đễ chấp nhận thay đổi như ảnh 24-bit. Nên tránh dùng các ảnh vẽ phức tạp (như Mona Lisa). Các ảnh đơn giản như ảnh động vật, ví dụ chó, mèo phù hợp hơn. Khi sửa bit trọng số thấp trong ảnh 8-bit, các con trỏ chỉ đến bảng mầu cũng bị thay đổi theo. Chú ý rằng đôi khi chỉ cần thay đổi 1 bit có thể dẫn đến sự khác biệt về dải Red và dải Blue. Các thay đổi như vậy sẽ bị nhận ra ngay. Vì vậy các chuyên gia về giấu tin trong ảnh khuyên nên dùng bảng mầu xám vì sự khác biệt giữa các cấp mầu không dễ thấy.
d) Tính bền vững
Phương pháp LSB rất dễ bị "tổn thương" bởi một loạt các phép biến đổi ảnh, ngay cả phép biến đổi ảnh đơn giản và thông dụng nhất.
Nén ảnh mất dữ liệu như JPEG rất dễ dàng phá huỷ toàn bộ tin mật. Vấn đề là ở chỗ, những "lỗ hổng" trong hệ thống thị giác con người - ít nhậy cảm với các nhiễu bổ sung - mà phương pháp chèn bít LSB khai thác lại cũng
chính là yếu tố mà phương pháp nén mất dữ liệu dựa lên đó để giảm mức dữ liệu của một ảnh.
Các phép biến đổi hình học như dịch chuyển hay xoay cũng dễ làm mất dữ liệu mật vì khi đó vị trí của các bít dấu sẽ bị thay đổi. Chỉ có một phép dịch chuyển đơn giản thì mới có thể phục hồi lại dữ liệu mật.
Các phép xử lý ảnh khác như làm mờ ảnh cũng sẽ làm mất dữ liệu hoàn toàn.
Tóm lại phương pháp LSB là phương pháp có tính ổn định kém nhất.
e) Khả năng phát hiện
Về điểm này phương pháp LSB cũng không phải là phương pháp tốt. Có thể dễ dàng trích ra các bit có trọng số thấp nhất với một chương trình đơn giản, sau đó kiểm tra xem liệu chúng có ý nghĩa gì không hoặc phá huỷ mẩu tin bằng cánh phá các bit này
f) Sự phù hợp cho dấu tin hay thuỷ vân
Trước hết, vì đây là kỹ thuật dễ bị tổn thương ngay cả với phép biến đổi đơn giản nên phương pháp LSB hầu như vô dụng đối với thuỷ vân số vì thuỷ vân phải chịu được sự tấn công phá huỷ và phải chịu được các phép biến đổi ảnh như nén/ giải nén hoặc chuyển đổi từ số sang tương tự và ngược lại.
Vì dung lượng giấu dữ liệu cao cho nên phương pháp này phù hợp với giấu tin, trong lĩnh vực ứng dụng này, độ ổn định không phải là một điều kiện quá khắt khe.
g) Vấn đề và giải pháp
Phương pháp LSB tốt cho ứng dụng giấu tin, chúng ta có thể tìm ra những thuật toán để cải tiến phương pháp này theo hướng khắc phục các nhược điểm của nó.
Để tăng tính bảo mật có hai cách:
Mã hoá mẩu tin gửi đi, và như vậy phải giải mã khi nhận được
Rải ngẫu nhiên các bít của mẩu tin mật lên bề mặt ảnh sử dụng một hàm ngẫu nhiên được mã hoá và như vậy hầu như không thể tái tạo lại mẩu tin nếu không có hạt giống dùng để tạo các số ngẫu nhiên.
Theo cách này, mẩu tin được bảo vệ bởi hai lần khoá, làm cho tính bí mật cao hơn nữa. Cách này cũng bảo vệ sự nguyên vẹn của mẩu tin mật, làm cho việc giả mạo tin càng khó hơn nữa, thậm chí không thể được (ít nhất về mặt tính toán). Tuy nhiên mục tiêu của chúng ta không chỉ mã hoá và xáo trộn mẩu tin mà phải giấu tin nên chúng ta cần phải cân nhắc thêm hai yếu tố nữa:
Chọn các ảnh mang
Chọn định dạng ảnh (24-bit, 8-bit, nén hay không nén)
Ảnh phủ phải được chọn sao cho nhìn thật tình cờ, nó phải là chủ đề mà cả người gửi lẫn người nhận đang quan tâm tới.
Ảnh phủ nên có nhiều mầu khác nhau, nó phải thật "sặc sỡ", để các nhiễu thêm vào sẽ bị chìm lẫn trong các mầu đã có. Các ảnh có các vùng ảnh đồng nhất rộng lớn dễ làm nổi bật lên các tạp nhiễu thêm vào.
Một vấn đề khác cần cân nhắc đó là kích thước ảnh. Nếu gửi qua lại các ảnh quá lớn sẽ gây nên sự chú ý của đối phương. Ví dụ như một ảnh cỡ 500 x 300 (150,000 điểm ảnh), là ảnh thông dụng trên Internet, với các biểu diễn mầu khác nhau:
24-bit mầu: 150,000 điểm x 24 bits/điểm/ 8 bits/byte = 90,000 Bytes
440 KB
8-bit mầu/ xám (tỷ lệ chiếm dụng như nhau): 150,000 điểm x 8 bits/điểm/ 8 bits/ byte = 150,000 Bytes 146 KB
Qua hai tính toán trên chúng ta có thể thấy một ảnh 24-bit không nén có kích thước không bình thường cho ảnh trên Internet, khi đó kẻ thám tin sẽ đặt
câu hỏi nghi ngờ tại sao người gửi không nén ảnh đó (có thể sợ nén sẽ mất dữ liệu mật chẳng hạn).
Các hướng giải quyết vấn đề này là người ta tìm cách hoán sửa thuật toán nén JPEG và chèn các LSB vào các công đoạn không mất dữ liệu của thuật toán hoặc thử dấu qua việc làm tròn các hệ số của biến đổi Cosin rời rạc dùng để nén ảnh.
Để đảm bảo tính bí mật chúng ta phải dùng đến ảnh 8-bit nếu chúng ta muốn sử dụng phương pháp LSB, vì với ảnh này kích thước như vậy là bình thường đối với các ảnh trên mạng.
Rất nhiều ý kiến chuyên gia cho rằng nên dùng ảnh 8-bit xám vì bảng mầu của nó ít thay đổi hơn là bảng mầu của ảnh mầu, và do vậy kỹ thuật LSB sẽ khó bị phát hiện bởi mắt người.
Một số giải pháp khác liên quan đến việc làm sao để phân bổ đều các điểm dấu ảnh lên toàn ảnh. Có nhiều cách để sinh ra hàm rải ví dụ người ta có thể dùng một bộ sinh số giả ngẫu nhiên hoặc một bộ sinh các số nguyên tố rồi đưa vào tập ZMN, trong đó MN là kích thước của ảnh (số điểm ảnh).
Một hướng nữa là phân tích ảnh và tìm ra các vùng có dải xám khó nhận biết bằng mắt thường để giấu tin vào đó.
2.2.2 Kỹ thuật giấu tin dựa trên bảng mầu
a) Nền tảng kỹ thuật
Ảnh Gif được nén không mất dữ liệu. Ảnh GIF có độ xâu mầu tối đa là 256, nghĩa là 8 bit điểm ảnh. Thuật toán nén là LZW (Lempel-Ziv-Welch). Ảnh BMP cũng là ảnh dựa trên bảng mầu khác với độ sâu mầu là 4 đến 24 bit. Hỗ tự nén mã loạt dài 4 bít và 8 bít nhưng ít khi được sử dụng. Bảng mầu thường được dùng khi độ sâu mầu dưới 24 bít. Trong các ảnh 24 bít, bảng
mầu không được dùng đến. Thay vào đó mỗi điểm được biểu diễn bằng ba byte (đỏ, lục và lam).
Các ảnh dưới 256 mầu dùng một bảng mầu được đánh chỉ mục. Mỗi điểm ảnh là một số trỏ đến bảng mầu. Phương pháp dấu hay sử dụng nhất đối với loại ảnh sử dụng bảng mầu là phương pháp LSB. Vấn đề nẩy sinh khi đảo bit thấp nhất của một điểm, lúc này điểm trỏ sang vị trí kế cận trong bảng mầu. Và nếu mầu kế cận trong bảng mầu là mầu đối lập thì có thể dẫn đến thay đổi mầu đột ngột, kéo theo sự lộ liễu của thông tin mật. Vấn đề này hay xảy ra khi các mầu trong bảng mầu rất khác nhau. Trường hợp cực đoan là hai mầu trên ảnh gốc bị tráo đổi hoàn toàn trên ảnh mang. Ví dụ chúng ta có một ảnh có hình vuông tô mầu đỏ, viền đen. Nếu gặp trường hợp cực đoan này chúng ta sẽ nhận được một hình vuông đen với nền đỏ.
Để giải quyết vấn đề này có hai cách :
Cách thứ nhất là sắp xếp lại bảng mầu, như vậy các mầu giống nhau sẽ nằm cạnh nhau trong bảng mầu, và việc lật một bít của điểm ảnh khó bị phát hiện
Cách thứ hai là mở rộng bảng mầu bằng cách đưa thêm vào các mầu lân cận
Tuy nhiên, cả hai cách này đều bày ra những kẽ hở cho kẻ thám tin. Ở cách thứ nhất điểm dễ phát hiện là bảng mầu được sắp xếp. Còn cách thứ hai điểm yếu là xuất hiện thêm các mầu không dùng đến. Một số phương pháp cải tiến nhắm vào việc tính các mầu kế cận sao cho ít bị phát hiện.
Trình tự kỹ thuật sắp xếp lại bảng mầu gồm các bước: 1. Copy bảng mầu gốc
2. Sắp xếp bảng mầu Copy được bảng có trật tự
3. Ánh xạ ma trận các chỉ số của các điểm ảnh đến bảng mầu có trật tự 4. Nhúng thông tin mật vào các LSB bằng cách thay thể mầu
Nếu sắp xếp bảng mầu theo độ chói (luminance) sẽ thành các nhóm điểm mầu không phân biệt được bằng mắt thường. Độ chói được tính theo công thức: L = 0.299R + 0.587G + 0.114B
b) Các tính chất khác
Bản chất đây là phương pháp LSB chỉ thêm các bước sắp xếp hay mở rộng bảng mầu nên ngoài phần kỹ thuật ra thì các tính chất khác đều giống như kỹ thuật dùng các bit có trọng số thấp.
2.3 Kỹ thuật dấu tin dựa vào miền tần số
Một tính chất chung nhất của tất cả các ảnh số đó là tương quan giữa các pixel ở cạnh nhau lớn, điều này dẫn đến dư thừa thông tin để biểu diễn ảnh. Dư thừa thông tin sẽ làm cho việc mã hoá không tối ưu. Do đó công việc cần làm để nén ảnh là phải tìm được các biểu diễn ảnh với tương quan nhỏ nhất để giảm thiểu độ dư thừa thông tin của ảnh. Thực tế, có hai kiểu dư thừa thông tin được phân loại như sau:
Dư thừa trong miền không gian: tương quan giữa các giá trị pixel của ảnh, điều này có nghĩa rằng các pixel lân cận của ảnh có giá trị gần giống nhau (trừ những pixel ở giáp đường biên ảnh).
Dư thừa trong miền tần số: Tương quan giữa các mặt phẳng màu hoặc dải phổ khác nhau.
Trọng tâm của các nghiên cứu về nén ảnh là tìm cách giảm số bit cần để biểu diễn ảnh bằng việc loại bỏ dư thừa trong miền không gian và miền tần số càng nhiều càng tốt.
Các kỹ thuật nén ảnh được sử dụng:
Nén ảnh không mất thông tin : với phương pháp này sau khi giải nén ta khôi phục được chính xác ảnh gốc. Các phương pháp nén này bao gồm mã hoá Huffman, mã hoá thuật toán…
Nén ảnh có mất thông tin: ảnh giải nén có một sự sai khác nhỏ so với ảnh gốc. Các phương pháp này bao gồm:
Lượng tử hoá vô hướng: PCM và DPCM Lượng tử hoá vector
Mã hoá biến đổi: biến đổi cosin rời rạc (DCT), biến đổi Fourier nhanh (FFT) Mã hoá sóng con
Hình 2.4. Sơ đồ khối một hệ thống nén ảnh điển hình
2.3.1 Kỹ thuật nén ảnh Jpeg dựa vào biến đổi cosin rời rạc DCT
a, Ý tưởng
Nguyên tắc chính của phương pháp mã hoá này là biến đổi tập các giá trị pixel của ảnh trong miền không gian sang một tập các giá trị khác trong miền
tần số sao cho các hệ số trong tập giá trị mới này có tương quan giữa các điểm ảnh gần nhau nhỏ hơn.
Hình 2.5. Sơ đồ mã hóa và giải mã dùng biến đổi DCT b,Biến đổi cosin thuận nghịch
Vì ảnh gốc có kích thước rất lớn cho nên trước khi đưa vào biến đổi DCT, ảnh được phân chia thành các khối vuông, mỗi khối này thường có kích thước 8 x 8 pixel và biểu diễn các mức xám của 64 điểm ảnh, các mức xám này là các số nguyên dương có giá trị từ 0 đến 255. Việc phân khối này sẽ làm giảm được một phần thời gian tính toán các hệ số chung, mặt khác biến đổi cosin