Ngày nay, mọi người thường chia sẻ cho nhau các bức ảnh thông qua email, mạng xã hội và các hình thức khác trên Internet. Trong đó ảnh JPEG là lựa chọn thích hợp nhất.Vì tính chất phổ dụng và các đặc tính riêng của JPEG mà ảnh JPEG được lựa chọn
để thực hiện quá trình che giấu các thông tin mật, bảo vệ bản quyền … Định dạng JPEG thích hợp cho kỹ thuật giấu tin (steganography) vì việc giấu tin thực hiện khi ảnh
đã được biến đổi và không bị tấn công bởi việc nhận dạng các bit thấp (visual attack) (việc này thường xảy ra đối với ảnh BMP).
Kỹ thuật giấu tin sẽ sửa đổi các bit it quan trọng trong ảnh để nhúng thông tin vào
thường dễ gặp phải dạng visual actack. Tuy nhiên điều này sẽkhông đúng khi đối
tượng chứa là ảnh JPEG vì việc thay đổi các bit được thực hiện trên miền tần số thay vì miền không gian.
Khi ảnh đã được chuyển từ miền không gian sang miền tần số (nhờ phép biến đổi Fourier – DCT) thì thành phần tần số cao lại là nơi thích hợp nhất để giấu tin vào hơn
là thành phần tần số thấp.
Nguyên nhân là các thành phần tần số cao sẽ bị biến đổi thành các giá trị 0 sau
phép lượng tửhóa (Chương 3 – 3.1.4) và các thành phần này sẽgiúp tăng cường việc chống được khảnăng bị nhiễu khi giấu tin vào.
Hệ thống thị giác của con người (Human Vision System-HVS) mặc nhiên hoạt
Hình 5.1 Frequency domain
động trong miền tần số nên việc giấu tin trên ảnh JPEG sẽ chỉ chọn các thành phần
Luminance (Y) để thực hiện. Nguyên nhân là đối với các thành phần màu sắc dễ biến
đổi nhưng mục đích của steganography là phải đảm bảo được tính chất an toàn và bền vững cần thiết. Hơn nữa thành phần luminance (độsáng) có tính tương quan đến hệ
thống thị giác của con người, bởi thị giác của con người sử dụng hầu hết các giải tần
trong kênh sáng. Độ rộng của giải tần lớn nên việc thay đổi nhỏ trên giải tần sẽ khó có thể phát hiện được.
Mô hình giấu tin vào ảnh JPEG như sau:
Trong mô hình trên, ảnh chứa JPEG đầu vào sẽđược giải nén (Chương 3 – 3.2)
đểđược các block đã được lượng tử (Quantized DCT Coefficents). Lúc này ta sẽ có các block (ma trận) pixel đã lượng tử, các
block này sẽđi vào giai đoạn giấu tin mật. Tại giai đoạn giấu tin mật, đầu vào sẽ là
thông điệp cần giấu, khóa bí mật và các
block đã giải nén. Sau đó, dữ liệu ảnh có chứa tin mật sẽ được nén trở lại qua giai
đoạn entropy encoding và lưu xuống file
ảnh kết quả (stego-image). JPEG Image Entropy Decoding Quantized DCT Coefficients LSB Entropy Encoding Stego- image Secret data Secret key
Hình 5.2 Mô hình giấu tin cho ảnh JPEG
Việc lựa chọn giải nén đến quá trình lượng tử hóa là vì nếu ta vượt qua giai đoạn
lượng tửhóa lên các giai đoạn bên trên (ví dụnhư DCT transform) thì sau khi giấu tin vào, các block sẽđi qua các quá trình biến đổi và các hệ số trong mỗi block sẽ bị bóp méo bởi hình thức làm tròn số tại các giai đoạn khác nhau. Kết quả là khi giải tin ta sẽ
thu được bản tin không chính xác như mong muốn.
Mô hình giải tin:
Quá trình giải tin cũng tương tự với giấu tin, ảnh JPEG có chứa thông tin mật (stego-image) sẽđược giải nén (Chương 3 – 3.2) đểđược các block lượng tử cần thiết. Các block này nhờ thuật toán LSB để tách lấy các mẫu tin ra. Các mẫu tin sẽđược nối với nhau để tạo thành thông điệp hoàn chỉnh và ghi ra vùng lưu trữ.
Quá trình giấu tin và giải tin bằng thuật toán “LSB” đối với các block lượng tử
của ảnh JPEG cũng tương tựnhư các block pixel của ảnh BMP. Tuy nhiên, việc giấu tin trong ảnh BMP sẽkhông làm tăng dung lượng lưu trữ file ảnh, còn đối với ảnh JPEG sẽ có hiện tượng tăng dung lượng lưu trữảnh lên.
Ví dụ:
◦ Ảnh thử nghiệm là Lena.jpg 512x512 dung lượng ban đầu là 37788 byte được giấu một đoạn text ngắn 234 kí tự cho ra ảnh kết quảcó dung lượng là 38138 byte. Vậy sốbyte tăng lên là 350 byte.
Stego- Image
Entropy Decoding
Quantized DCT
Coefficients LSB Secret data
Secret key
◦ Ảnh thử nghiệm là camera.jpeg 1024x768 dung lượng ban đầu là 161588 byte và cũng được được giấu đoạn text như trên nhưng kết quả cho ra ảnh có
dung lượng là 161700 byte. Số byte tăng lên là 112 byte, ít hơn ví dụ trên.
Nguyên nhân tăng dung lượng đối với ảnh JPEG là vì khi đảo bit của một hệ số nào đó trong block lượng tử sẽ làm biến đổi từ mã huffman tương ứng với hệ sốđó
hoặc biến một hệ số có giá trị 0 thành 1 sẽ làm xuất hiện thêm từ mã run-size mới. Ví dụ:
◦ Giả sử giá trị hệ số là -7 (11111001) có từ mã huffman là 000, khi đảo bit hệ
số này sẽ thành -8 (11111000) có từ mã huffman là 0111. Ta thấy rằng việc biến đổi này làm tăng dung lượng lên 1 bit.
◦ Giả sử ta có run-size tại hệ số -7 (11111001) là 0xB3, khi đảo bit tại hệ số trước hệ số này 5 vị trí thì sẽ xuất hiện thêm 1 mã run-size mới là 0x51 và hệ
số cũ có run-size mới là 0x53. Như vậy ta đã làm xuất hiện thêm 1 hệ số tương ứng với việc tăng thêm một sốbit để mã hóa hệ sốđó.
Hai ví dụtrên đã cho thấy được nguyên nhân của việc tăng dung lượng lưu trữ
của ảnh JPEG đã được giấu tin so với ảnh gốc.
CHƯƠNG 6. CÀI ĐẶT VÀ CHƯƠNG TRÌNH MINH HỌA 6.1Cài đặt chương trình
Dựa vào nền tảng lý thuyết nêu ra từcác chương trước, chương 6 này em sẽ thực hiện cài đặt chương trình thực hiện chức năng giấu tin trên cảảnh bitmap và ảnh JPEG dựa trên thuật toán đảo bit ít quan trọng của 3 nhà nghiên cứu: Yu-Yuan, Hsiang-Kuang Pan và Yu-Chee Tseng (Department of Computer Science and Information Engineering National Chiao Tung University Hsin-Chu, 30050, Taiwan).
Ngôn ngữ lập trình là JAVA. Chương trình có thể giấu tin với file text hoặc một file bất kì vào ảnh chứa. Ảnh đầu vào được hỗ trợlà bitmap và JPEG. Đối với ảnh bitmap chỉ nên sử dụng ảnh 24bit trởlên (nguyên nhân đã đề cập ở phần trên). Ảnh
JPEG chương trình chỉ hỗ trợ chuẩn baseline JFIF. Các chuẩn khác của JPEG không
được phổ dụng và tính phức tạp cao nên chương trình vẫn chưa hỗ trợ.
Do việc cài đặt bằng ngôn ngữ lập trình JAVA nên ứng dụng có thể hoạt động trên cả hệ thống Windows và Linux.
6.2Mô hình lớp
Dưới đây là mô hình lớp cài đặt chương trình. Mô hình thể hiện quan hệ giữa các lớp thực thi chính của chương trình. Mỗi class thể hiện một số chức năng chính trong
Chức năng của các lớp:
◦ Image: Lớp trừu tượng có vai trò như đối tượng chứa thông tin tông quan về ảnh, tạo tham chiếu đến vùng nhớảnh (mapImage).
◦ Hiding: Lớp trừu tượng mô tả 2 chức năng chính là giấu tin (hideMessage()) và giải tin (getMessage()). Các lớp con của lớp này sẽ phải thực thi 2 chức
năng trên (phù hợp với đặc tính của chúng) khi thừa hường từ nó.
◦ LSBAlgorithm: Lớp cài đặt thuật toán giấu tin và giải tin đã nêu ởcác chương trước.
◦ <<BitStream>>: Giao diện luồng bit.
◦ BitStreamReader: Cài đặt bộđọc cho giao diện luồng bit, có chức năng đọc một lượng bit liên tục từ luồng cốđịnh.
◦ BitStreamWriter: Cài đặt bộ ghi cho giao diện luồng bit, có chức năng ghi một số bit xuống luồng đã cho.
◦ BMPImage: Là lớp con của Image, thực thi hai chức năng getWidth() và
getHeight() và khởi tạo các thông tin vềảnh BMP .
◦ BMPHidingImpl: Là lớp thực thi tác vụ giấu tin trên ảnh BMP. Lớp này bảo gồm 3 thành phần chính là BMPImage (khởi tạo ảnh BMP), BitStreamWriter (bộ ghi luồng bit) và LSBAlgorithm (đối tượng thực thi thuật toán LSB). BMPHidingImpl thực thi các chức năng giấu tin và giải tin từ lớp cha là Hiding.
◦ <<JPEGImage>>: Giao diện ảnh JPEG, lưu các hằng số phục vụ cho việc nén và giải nén ảnh JPEG.
◦ JPEGImpl: Thực thi giao diện ảnh JPEG và cài khởi tạo các thông tin cho ảnh JPEG cũng như các thông tin thừa kế từImage.
◦ JPEGReader: có chức năng khởi tạo bộđọc ảnh JPEG. Các thông tin cần thiết của ảnh JPEG sẽđược nạp khi mới tạo ra. Lớp này có chức năng đọc dữ liệu nén của ảnh JPEG và giải nén chúng để phục vụ cho quá trình giấu tin và giải tin.
◦ JPEGWriter: có chức năng khởi tạo bộ ghi ảnh JPEG. Lớp này sẽ mã hóa các
block đã được giấu tin vào và ghi thành file JPEG.
◦ JPEGHidingImpl: cài đặt chức năng giấu tin và giải tin đối với ảnh JPEG. Lớp
này gồm 3 thành phần chính là bộđọc ảnh JPEG (JPEGReader), bộ ghi ảnh
JPEG (JPEGWriter) và đối tượng thuật toán LSB (LSBAlgorithm).
6.3Mô hình tuần tự cho chức năng giấu tin
Mô hình trên mô tả chức năng tùy chọn giấu tin trên ảnh bitmap hoặc ảnh JPEG.
Khi tác nhân yêu cầu thực hiện quá trình giấu tin, một tiểu trình sẽ khởi tạo các thông tin cần thiết cho quá trình giấu tin như chấp nhận thông điệp, key/password, ảnh đầu
vào và ảnh đầu ra...
Sau đó tiểu trình sẽ kiểm tra loại ảnh tương thích và tìm ra đối tượng thực hiện chức năng giấu tin tương ứng với loại ảnh đó, có hai loại ảnh là bitmap và JPEG được chấp nhận.
Khi đã kiểm tra và khởi tạo đối tượng thực thi giấu tin tiểu trình này sẽ gọi chức
năng giấu tin tương ứng và chuyển sang mô hình giấu tin đối với ảnh, có hai mô hình giấu tin thực thi là mô hình giấu tin trong ảnh bitmap và mô hình giấu tin trong ảnh JPEG.
Khi được khởi tạo lớp thực thi giấu tin trên ảnh bitmap sẽ tựđộng tạo ra đối
tượng thực thi chức năng giấu tin và khởi tạo ảnh bitmap. Sau đó, dữ liệu ảnh bitmap sẽđược nạp vào bộ nhớđể tham giao vào quá trình giấu tin.
Quá trình giấu tin là một vòng lặp liên tục kiểm tra nếu số bit của mesage vẫn còn, đồng thời còn đủ số block để giấu tin vào thì sẽ thực hiện đọc tuần tự từng block.
Block đọc được sẽ được nhúng mẫu thông tin vào nhờđối tượng LSBAlgorithm và kết quả trả về sẽđược ghi đè lên ngay tại vị trí của block đó trong vùng dữ liệu ảnh.
Quá trình lặp kết thúc khi không còn bit message nào hoặc hết block để chứa
mesage. Sau đó dữ liệu mới này sẽđược lưu xuống file chỉđịnh.
Đối với ảnh JPEG, bộ thực thi có các bộ đọc, bộghi độc lập. Quá trình giấu tin sẽ đọc liên tục các block (MCU) từảnh nguồn, sau đó ứng với tùng thành phần Y
(luminance) của MCU sẽ giấu mẫu thông điệp mật vào nếu số bit của thông điệp vẫn
chưa hết.
MCU sau khi được giấu tin vào sẽđược bộ ghi mã hóa trở lại và ghi xuỗng file
JPEG đầu ra đã được chỉđịnh.
6.4Mô hình tuần tự cho chức năng giải tin
Việc giải tin cũng tùy vào loại ảnh, chương trình cần xác định loại ảnh và lớp thực thi thích hợp để giải tin. Khi đã chọn được lớp thực thi, hệ thống sẽ chuyển sang hoạt động ở mô hình tương ứng.
6.4.1Mô hình giải tin từ ảnh BMP
Để lấy được tin, chương trình trước tiên cần xác định kích thước của toàn bộ thông điệp đã giấu. Khi kích thước thông điệp được xác định (messageSize) thì chương
trình sẽđọc từng mẫu thông điệp ở dạng bit và ghi ra file lưu trữ.
6.4.2Mô hình giải tin từ ảnh JPEG
Cũngtương tự với ảnh bitmap, đỗi với ảnh jpeg cũng cần phải xác định trước
kích thước của thông điệp, sau đó mới thực hiện lấy từng mẫu tin ra khỏi ảnh chứa. Tuy nhiên, ởảnh jpeg ta chỉ xử lý trên các thành phần Y (luminance) của mỗi MCU, các thành phần chrominance sẽđược bỏ qua.
6.5Chương trình minh họa
Hinh 6.9 Khi thực hiện giấu tin
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1.Kết quả đạt được
◦ Chương trình cho phép giấu được nhiều file dữ liệu (nếu có thể) cùng một lúc. ◦ Với thuật toán LSB của 3 tác giảĐài Loan này thì độ an toàn dữ liệu mật
được nâng cao hơn so với giấu tin bằng thuật toán LSB thông thường.
2.Hạn chế
◦ Đối với ảnh JPEG, chương trình vẫn chỉ giới hạn ởảnh dạng baseline JFIF. ◦ Mặc dù được xây dựng trên thuật toán của 3 nhà khoa học và đã được chứng
minh tính chất an toàn của thuật toán đem lại nhưng vẫn không thể tránh khỏi nhiều trường hợp tấn công tinh vi của kẻ gian.
3.Hướng phát triển
Đề tài có thể nghiên cứu mở rộng về khảnăng giấu tin trên nhiều dữ liệu đa phương tiện khác nhau như audio, video, text … chứ không chỉ riêng trên ảnh số. Điều này sẽ giúp mở rộng môi trường bảo mật, nâng cao tính an toàn ở nhiều phương diện. Bên cạnh đó, đề tài cần nghiên cứu thêm về các cách chống lại các hình thức tấn công cũng như khả năng phát hiện thông điệp giấu bên trong các dự liệu đa phương tiện này.
Hướng phát triển có thểđạt ra là thực hiện đầy đủ yêu cầu của an toàn bảo mật
thông tin đến mức có thể, nghĩa là cần phát triển thêm các ứng dụng giúp bảo vệ quyền tác giả, điều khiển truy cập, chữ kỹđiện tử… vì những vấn đểnày đang trở nên nóng sốt trong thời gian gần đây và sắp tới.
Tuy nhiên, với kinh nghiệm và kiến thức hạn chế, việc tiếp cận các công nghệ bảo mật tiên tiến cũng trởnên khó khăn, nên không tránh khỏi những sai sót. Rất mong sự
giúp đỡ của thầy cô giáo và tất cả các bạn để em có thể khắc phục các thiếu sót và hoàn thiện mình.
TÀI LIỆU THAM KHẢO
[1].INTERNATIONAL TELECOMMUNICATION UNION (ITU, Information Technology – Digital Compression and Coding of Continuous-Tone Still Images - Requirements and GuildLines.
[2].John Miano, CompressedImage File Formats JPEG, PNG, GIF, XBM, BMP. [3].Niels Provos, Peter Honeyman - University of Michigan, Hide and Seek - An
Introduction to Steganography
[4].Yu-Yuan, Hsiang-Kuang Pan và Yu-Chee Tseng, A Secure Data Hiding Sheme for Binary Image.
Các website:
◦ www.impulseadventure.com
◦ www.wikipedia.org
◦ http://www.visualwatermark.com/watermarking_faq.htm