3.1.1. Định dạng ảnh BITMAP
Đây là một định dạng ảnh khá phổ biến, các tập tin đồ họa được lưu dưới dạng bmp thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap).
Cấu trúc tập tin ảnh BMP gồm 4 phần:
- Bitmap Header(14 bytes): giúp nhận dạng tập tin bitmap.
- Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị ảnh.
- Color Palette(4*x bytes): x là số màu của ảnh: định nghĩa các màu sẽ được sử dụng trong ảnh.
- Bitmap data : lưư dữ liệu ảnh.
Các thuộc tính tiêu biểu của một tập tin ảnh BMP là:
- Số bít trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP n-bit có 2n màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị tiêu biểu của n là 1(ảnh đen trắng), 4(ảnh 16 màu), 8(ảnh 256 màu), 16(ảnh 65536 màu), 24(ảnh 16 triệu màu).
- Ảnh BMP 24-bit có chất lượng ảnh trung thực nhất.
- Chiều cao của ảnh (height) được cho bởi điểm ảnh pixel.
- Chiều rộng ảnh(width) cũng được cho bởi các pixel.
Đặc điểm nổi bật của định dạng BMP là tập tin hình ảnh thường không được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin, một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh.
Do đó ảnh có định dạng BMP thường có kích thước lớn gấp nhiều lần các định dạng ảnh khác. Nhưng cũng chính do lý do này mà ảnh BMP thường được dùng để giấu tin nhất trong các thuật toán bởi nếu ảnh nén thì tin giấu thường bị mật mát theo dữ liệu ảnh.
3.1.2. Định dạng ảnh .JPEG
Phương pháp nén ảnh JPEG (Joint Photographic Experts Group) là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần. Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu. Chất lượng ảnh bị suy giảm sau khi giải nén. Sự suy giảm này tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin này là có thể chấp nhận được và việc loại bỏ những thông tin không cần thiết được dựa trên những nghiên cứu về hệ nhãn thị của mắt người.
Phần mở rộng của các file JPEG thường có dạng .jpeg, .jfif, .jpg, .JPG, hay .JPE; dạng .jpg là dạng được dùng phổ biến nhất. Hiện nay dạng nén ảnh JPEG rất được phổ biến trong điện thoại di động cũng như những trang thiết bị lưu giữ có dung lượng nhỏ.
Một nhóm các nhà nghiên cứu đã phát minh ra định dạng này để hiển thị các hình ảnh đầy đủ màu hơn (full-colour) cho định dạng di động mà kích thước file nhỏ hơn. Giống như GIF, JPEG cũng được sử dụng rất nhiều trên web. Lợi ích chính của chúng là có thể hiển thị các hình ảnh với các màu chính xác (true-colour) chúng có thể lên đến 16 triệu màu. Điều đó cho phép chúng được sử dụng tốt nhất cho các hình ảnh chụp và hình ảnh minh hoạ với lượng màu lớn.
Nhược điểm lớn nhất là chất lượng ảnh đã bị nén mất đi (lossy), một số đường bao giữa các khối màu sẽ xuất hiện điểm mờ, và các vùng sẽ mất đi sự rõ nét. Và giống như dạng mp3, JPEG sẽ không thể phục hồi giống như hình ảnh ban đầu dù dung lượng được tăng lên giống dung lượng ảnh thật.Các ảnh JPEG không thể làm trong suốt hoặc chuyển động.
JPEG là một dạng nén ảnh hiệu quả, tỉ lệ nén cao. Khác với GIF, JPEG có một bảng màu phong phú hơn nhiều (16 triệu màu hay 24 bit màu). JPEG chiếm uu thế trong việc hiển thị ảnh kỹ thuật số, chân dung, ảnh phong cảnh, dùng để in ấn. Nhưng ngược lại JPEG lại yếu thế trong việc hiển thị ảnh chữ viết, ảnh có chi tiết đường nét nhiều, tất nhiên khuyết điểm này có thể khắc phục bằng cách không sử dụng kỹ thuật nén mà giữ nguyên chất lượng ảnh ban đầu, điều này sẽ làm tăng dung lượng ảnh.
Hình trái chất lượng nguyên gốc có dung lược 43KB, hình phải sử dụng tỉ lệ nén 80% có dung lượng 23KB, giảm gần 50% so với ảnh gốc
Đây cũng là một định dạng ảnh phổ biến được sử dụng, nhưng đặc điểm của loại ảnh này là đây là loại ảnh nén.
Ảnh JPEG là một trong những định dạng của phương pháp nén ảnh JPEG(Joint Photographic Experts Group). Do đó sự mất mát thông tin có thể xảy ra khi tiến hành nén và sau giải nén thì tập tin ảnh sẽ khác với ảnh ban đầu, chất lượng ảnh bị suy giảm khi giải nén, sự suy giảm này tăng theo hệ số nén.
Ưu điểm của loại tập tin ảnh này là nếu được giấu tin thì có thể truyền trên mạng bởi nó nhẹ hơn ảnh định dạng BMP rất nhiều lần. Mặt khác nó được hỗ trợ trên nhiều trình duyệt.
3.1.3. Định dạng ảnh .GIF
Viết tắt của Graphic Interchange Format tạm dịch là "Định dạng Trao đổi Hình ảnh" Định dạng này thường có phần mở rộng của tập tin là .gif. Đây là một định dạng khá phổ biến dùng để thiết kế ở thời kỳ đầu internet (những năm 90). Dần dà nó bị thay thế bởi đối thủ mạnh mẽ hơn đó là PNG. Tuy vậy, GIF vẫn có những bản sắc riêng mà những định dạng khác không có được. GIF được biết đến như một định dạng hình ảnh nhỏ gọn, "hình động" (animated gif). GIF thường được sử dụng để hiển thị những ảnh hoạt họa có nhiều khung hình:
Hình GIF còn có khả năng hiển thị một hình ảnh "trong suốt" (transparent), trong suốt ở đây nghĩa là ngoài nội dung chính của hình thì những phần còn lại có thể nhìn thấu qua:
Hình 3.4: 2 cây thông với dòng chữ "Nội dung bên dưới"
Cùng là một hình cây thông, nhưng với 2 phiên bản khác nhau, một phiên bản trong suốt và một phiên bản "bánh mì đặc ruột", dòng chữ "Nội dung bên dưới" chỉ được thấy khi đặt ở dưới hình trái, còn hình phải do nền không trong suốt đã che mất chữ.
Ưu điểm thì có nhiều những khuyết điểm của GIF cũng không ít. GIF bị giới hạn bởi số lượng màu trong một ảnh chỉ tối đa 256 màu, nếu sử dụng một hình ảnh phong cảnh, rất nhiều màu sắc và chuyển thành dạng GIF, sẽ nhận được một bức tranh loang lổ, hỗn tạp:
Hình 3.5: Ảnh gốc bên trên và chuyển thành định dạng GIF bên dưới
Do số lượng màu có hạn, nên những màu không biểu diễn được GIF đành "chống chế" bằng cách thay thế những màu "gần giống". Vì vậy, GIF trình bày khá tốt với những ảnh dạng chữ viết đơn sắc, những ảnh nhỏ. GIF có thể chỉ định số màu hiển thị để nhằm tiết kiệm dung lượng ảnh.
3.1.4. Định dạng ảnh PNG
Là chữ viết tắt của Portable Network Graphic, là định dạng ảnh chuyên dùng trên internet, PNG ra đời sau và đã chiếm được nhiều ưu ái của giới thiết kế web. PNG là sự tổng hợp ưu điểm của cả 2 định dạng GIF và JPEG. Là cây lai dung lượng nhỏ, trong suốt của GIF với hình ảnh rõ nét, màu sắc phong phú (4 tỷ màu hay 32bit màu) hơn cả JPEG.
PNG 8 bit, là loại định dạng ảnh có những nét tương đồng với GIF: nhỏ gọn, giới hạn màu tối đa 256.
PNG 24 bit có đầy đủ ưu điểm của các loại định dạng ảnh: màu phong phú, trong suốt, ngoài ra PNG 24 còn có thêm một kênh màu mới là Alpha, kênh màu này giúp ảnh PNG có thể hiển thị mờ đục (opacity), làm tăng hiệu quả hiển thị hơn GIF rất nhiều, nhưng chính điều này lại làm tăng dung lượng ảnh PNG 24 lên cao nhất, cao hơn cả JPEG.
Hình 3.6: Thế hiện ảnh mờ đục của định dạng PNG
3.2. Kỹ thuật được sử dụng để giấu tin trong ảnh 3.2.1. Kỹ thuật Injection 3.2.1. Kỹ thuật Injection
Kỹ thuật Injection hay còn được gọi là kỹ thuật Insertion - Sự thêm vào, sử dụng kỹ thuật này để giấu dữ liệu ẩn vào trong một đoạn của file, mà đoạn đó hầu như không được để ý trong các ứng dụng xử lý. Bằng cách làm này, có thể tránh được sự thay đổi những bit của file đó. Ví dụ có thể cộng thêm một số byte vô hại vào một file thực thi hay file nhị phân, bởi vì những byte đó không ảnh hưởng tới quá trình xử lý đồng thời người sử dụng cũng không thể nhận thức được rằng file đó chứa các thông tin đã được cộng thêm vào. Mặc dù vậy, khi sử dụng kỹ thuật này thì nó sẽ làm tăng kích thước của file chứa tin đó, tăng rất nhiều nếu số lượng tin giấu lớn và do đó sẽ gây ra nghi sự nghi ngờ.
Nếu ứng dụng kỹ thuật này vào sử dụng trong giấu tin trong ảnh thì chỉ có thể giấu tin với số lượng có hạn nhất định tùy thuộc vào kích thước của file chứa gốc.
Mô hình thuật toán :
Hình 3.7: Mô hình thuật toán Injection
Ưu điểm: Dễ thực hiện
Nhược điểm : Kỹ thuật này sẽ gây tăng kích thước của file chứa tin giấu. Dễ gây nghi ngờ.
3.2.2. Kỹ thuật Substitution
Kỹ thuật này có nghĩa là sự thay thế.Phương pháp này sử dụng việc thay thế các thông tin ít quan trọng trong việc quyết định nội dung của file gốc, và dữ liệu được thay vào những bít đó ít gây sự thay đổi lớn đến chất lượng file chứa gốc.
Hình 3.8: Mô hình thuật toán Substitution
Ưu điểm của kỹ thuật này là file chứa gốc sau khi giấu tin thì kích thước không thay đổi.
Nhược điểm của phương pháp này làm giảm chất lượng của file chứa gốc ban đầu, ngoài ra số lượng tin giấu cũng bị hạn chế do phải phụ thuộc vào số bit ít quan trọng trong file chứa gốc.
3.2.3. Kỹ thuật Generation
Kỹ thuật Generation có nghĩa là sự tự phát sinh, không giống như hai kỹ thuật trên, kỹ thuật này không phụ thuộc vào file chứa gốc tồn tại, kỹ thuật này sẽ tạo ra một file chứa với mục đích duy nhất là để giấu tin. Hai phương pháp trên người ta có thể so sánh đối chiếu hai file để đưa ra kết luận, với kỹ thuật này thì không phải lo lắng đến điều đó bởi vì chỉ có một file chứa gốc duy nhất và cũng là file chứa tin.
Mô hình thuật toán:
‘‘ Cụ già thong thả buông cần Hồ rộng trời in mặt nước hồng
Muôn vạn đài sen hương bát ngát Tuổi già vui thú với non sông ’’
- Thông tin sau khi giấu tin
‘‘ Cụ già thong thả buông cần Hồ rộng trời in mặt nước hồng Muôn vạn đài sen hương bát ngát Tuổi già vui thú với non sông ’’
Thông tin được giấu là: Cụ Hồ Muôn Tuổi
Ưu điểm: Hai phương pháp trên người ta có thể so sánh đối chiếu hai file để đưa ra kết luận, với kỹ thuật này thì không phải lo lắng đến điều đó bởi vì chỉ có một file chứa gốc duy nhất và cũng là file chứa tin.
Nhược điểm :Kỹ thuật này thì rất phức tạp phụ thuộc vào rất nhiều yếu tố để có thể tạo ra file chứa gốc như yêu cầu.
3.3. Kỹ thuật giấu tin trong ảnh sử dụng các bit LSB
Nằm trong số các kỹ thuật Substitution thì kỹ thuật sử dụng các bit có trọng số thấp nhất (Least Significant Bit - LSB) là phố biến nhất. Với kỹ thuật sử dụng LSB thì nó thay thế các bit được coi là ít quan trọng ở các file ảnh chứa gốc. Và việc thay thế được tiến hành theo trình tự số lượng byte nhất định. Với kỹ thuật này thì nó ít ảnh hưởng đến file chứa gốc(file ảnh chứa gốc) bởi các bít bị thay thế hầu như không có tác dụng trong file chứa gốc(file ảnh chứa gốc), với file ảnh thì nó ít ảnh hưởng tới các pixel ảnh.
Một ví dụ với ảnh BMP 24-bit như đã nói ở trên thì việc giấu một chữ cái “a” có thể tiến hành như sau: chữ “a” trong ASCII thì có mã là 97 số này đổi sang nhị phân có dạng 01100001. Trong 8 byte của file chứa gốc(file ảnh chứa gốc) có thể thiết lập LSB cho mỗi byte như sau:
10010010 01010011 10011011 11010010 10001010 00000010 01110010
00101011
Và tương ứng để lấy lại thông tin giấu thì tiến hành đọc 8 bit LSB của các byte để tạo lại 01100001 đổi số nhị phân này sang thập phân và đổi sang mã ASCII thu được ký tự “a”.
Vậy có thể sử dụng kỹ thuật này cho phép giấu một byte file ẩn vào 8 byte file chứa gốc(file ảnh chứa gốc). Từ trên có thể thấy được lợi thế khi sử dụng cách này là gì? đó chính là lúc nào cũng có nhiều nhất 50% số bít trùng nhau giữa tin cần giấu và file chứa gốc(file ảnh chứa gốc) do đó file chứa gốc ít bị ảnh hưởng lớn khi có tin giấu thêm vào trong file chứa gốc(file ảnh chứa gốc) đó.
CHƯƠNG IV : XÂY DỰNG CHƯƠNG TRÌNH GIẤU TIN DỰA TRÊN THUẬT TOÁN LSB
4.1. Xây dựng chương trình dựa trên thuật toán LSB4.1.1. Ảnh BITMAP 4.1.1. Ảnh BITMAP
Ảnh BITMAP là định dạng ảnh do microsoft đề xuất , có phần mở rộng là BMP , loại ảnh này truyền tải , sử dụng rộng rãi trên máy tính , và các thiết bị điện tử khác. Ảnh bitmap được chia thành ba dạng : ảnh nhị phân ( ảnh đen trăng ) , ảnh đa mức xám , ảnh màu.
- Ảnh đen trắng : là ảnh mà mỗi điểm ảnh chỉ thể hiện một trong hai trạng thái 0 và 1 để biểu diễn trạng thái điểm ảnh đen hay trăng.
- Ảnh đa mức xám : là ảnh mà mỗi điểm ảnh được biểu diễn bởi một giá trị và đó là cường độ sáng của điểm ảnh.
- Ảnh màu : là ảnh mà mỗi điểm ảnh được biểu diễn bởi ba đại lượng R, G, B . Số lượng màu có thể của loại ảnh này lên tới 265^3 màu khác nhau.Nhưng số lượng màu trên thực tế của một ảnh nào đó thường khá nhỏ. Để tiết kiệm bộ nhớ với các ảnh có số lượng màu nhỏ hơn 256 thì màu các điểm ảnh được lưu trữ dưới dạng bảng màu.Với ảnh có số màu lớn thì các điểm ảnh không tổ chức dưới dạng bảng màu , khi đó giá trị của các điẻm ảnh chinh là giá trị của các thành phần màu R,G,B. Với ảnh có số lượng màu lớn ,tùy theo chất lượng ảnh mà quyết định số bit để biểu diễn cho mỗi màu thường là 24 bit, hoặc 32 bit . Với ảnh 24 bit mỗi thành phần màu được biểu diễn bởi một byte(8 bit).
Ảnh bitmap đựợc lưu trữ dưới dạng nhị phân, một tệp dạng bitmap được chia thành các phần cơ bản như :
- Phần tiêu để tệp (Bitmap header)
- Thông tin về ảnh (Bitmap Infor)
- Bảng màu (Palette Table)
- Vùng dữ liệu(Data)
Thứ tự được lưu trữ trong bộ nhớ như sau: Bitmap Header->Bitmap Infor->Palette Table->Data
4.1.2. Ý nghĩa của các phần trong tệp ảnh bitmap
- Bitmap Header: Mô tả thông tin chung về tệp định dạng bitmap, độ lớn của phần này cố định với mọi tệp bitmap.
- Bitmap Infor: Mô tả thông tin về ảnh được lưu trữ, độ lớn của phần này cố định.
- Pallete Table: Bảng màu của ảnh bitmap, độ lớn của phần này có thể bằng không ( không có bảng màu) đối với ảnh đen trắng và ảnh màu có số lượng màu lớn hơn 256 màu.
- Data: Thông tin về từng điểm ảnh , độ lớn của phần này phụ thuộc vào kich thước ảnh. Phần Data lưu trữ ảnh theo hướng từ dưới nên trên và từ trái qua phải.
4.1.3. Kích thước và giá trị các trường trong tệp ảnh
Bitmap Header :Phần này có độ lớn cố định là 14 bytes , phần này dùng để mô tả thông tin chung về tệp như :
Kiểu tệp, độ lớn và một số thông tin liên qua đến tệp.
Offset( byte) Giá trị Ý nghĩa
1 ‘B’ Định dạng kiểu tệp
2 ‘M’ Định dạng kiểu tệp
3 -> 6 Unsigned long Kích thước tệp
7 -> 10 Zero Reserved
11 -> 14 Unsigned long Địa chỉ phần dữ liệu
Hình 4.1: Ý nghĩa từng trường trong vùng Bitmap Header
Trong phần Bitmap Header có mô tả thông tin về độ dài tệp , thông tin