MỤC LỤC
LỜI CẢM ƠN 2
GIỚI THIỆU 3
CHƯƠNG 1. TỔNG QUAN VỀ KỸ THUẬT GIẤU TIN 4
1.1 Định nghĩa kỹ thuật giấu tin 4
1.2 Phân loại kỹ thuật giấu tin 4
1.2.1 Giấu tin mật 5
1.2.2 Thủy vân số 5
1.3 Giấu tin trong Audio 5
1.4 Giấu tin trong video 6
1.5 Giấu tin trong ảnh 6
CHƯƠNG 2. CẤU TRÚC CỦA MỘT SỐ ẢNH ĐẶC TRƯNG 8
2.1 Cấu trúc ảnh BMP 8
2.2 Cấu trúc ảnh PNG 9
2.3 Ảnh JPEG 10
CHƯƠNG 3. KỸ THUẬT GIẤU TIN TRÊN MIỀN BIẾN ĐỔI DCT 12
3.1 Phép biến đổi cosin rời rạc 13
3.2 Kỹ thuật nén ảnh dạng chuẩn jpeg dùng biến đổi cosin rời rạc 14
3.2.1 Mã hoá và giải mã dùng biến đổi DCT 14
3.2.2 Lượng tử và giải lượng tử 16
3.2.3 Mã hóa và giải mã jpeg 16
3.3 Một số kỹ thuật giấu tin trên miền biến đổi DCT 17
3.3.1 Thuật toán JSteg 17
3.3.2 Thuật toán OutGuess 0.1 18
3.3.3 Thuật toán F5 18
CHƯƠNG 4. KỸ THUẬT PHÁT HIỆN ẢNH CÓ GIẤU TIN TRÊN MIỀN BIẾN ĐỔI DCT 24
4.1. Phát hiện tin ẩn giấu (Steganalysis) 24
4.2. Kỹ thuật phát hiện thống kê 25
4.3. Kỹ thuật phát hiện F5 27
4.4 Kết quả thực nghiệm 29
4.4.1 Kỹ thuật phát hiện thống kê 29
4.4.2 Kỹ thuật phát hiện F5 30
KẾT KUẬN 31
TÀI LIỆU THAM KHẢO 32
33 trang |
Chia sẻ: lynhelie | Lượt xem: 4564 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu kỹ thuật phát hiệnảnh giấu tin trên miền biến đổi của ảnh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thông tin trong audio yêu cầu rất cao về tính đồng bộ và tính an toàn của thông tin.
1.4 Giấu tin trong video
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à hệ thống chương trình trả tiền xem theo video clip các thuật toán trước đây thường cho phép giấu ảnh vào trong video, nhưng gần đây kỹ thuật cho phép giấu cả âm thanh và ảnh vào trong video.
1.5 Giấu tin trong ảnh
Giấu thông tin trong ảnh hiện nay chiếm tỷ lệ lớn nhất trong các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong đa phương tiện bởi lượng thông tin trao đổi được trao đổi bằng ảnh là rất lớn, hơn nữa giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng đối với hầu hết các ứng dụng bảo vệ an toàn thông tin như: nhận thực thông tin, xác định xuyên tạc thông tin, bảo vệ bản quyền tác giả, điều khiển truy cập, giấu thông tin mật Chính vì thế mà vấn đề này đã nhận được sự quan tâm rất lớn của các nhà cá nhân, tổ chức, trường đại học, và viện nghiên cứu trên thế giới.
Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi và chẳng ai biết được đằng sau ảnh đó mang những thông tin có ý nghĩa. Ngày nay, khi ảnh số đã được sử dụng rất phổ biến, thì giấu thông tin trong ảnh đã đem lại rất nhiều những ứng dụng quan trọng trên nhiều lĩnh vực trong đời sống xã hội.
Ví dụ như đối với các nước phát triển, chữ kí tay đã được số hoá và lưu trữ sử dụng như là hồ sơ cá nhân của các dịch vụ ngân hàng và tài chính, nó được dùng để nhận thực trong các thẻ tín dụng của người tiêu dùng. Phần mềm WinWord của MicroSoft cũng cho phép người dùng lưu trữ chữ kí trong ảnh nhị phân rồi gắn vào vị trí nào đó trong file văn bản để đảm bảo tính an toàn của thông tin. Tài liệu sau đó được truyền trực tiếp qua máy fax hoặc lưu truyền trên mạng. Theo đó, việc nhận thực chữ kí, xác thực thông tin đã trở thành một vấn đề cực kì quan trọng khi mà việc ăn cắp thông tin hay xuyên tạc thông tin bởi các tin tặc đang trở thành một vấn nạn đối với bất kì quốc gia nào, tổ chức nào. Thêm vào đó, lại có rất nhiều loại thông tin quan trọng cần được bảo mật như những thông tin về an ninh, thông tin về bảo hiểm hay các thông tin về tài chính, các thông tin này được số hoá và lưu trữ trong hệ thống máy tính hay trên mạng. Chúng rất dễ bị lấy cắp và bị thay đổi bởi các phần mềm chuyên dụng. Việc nhận thực cũng như phát hiện thông tin xuyên tạc đã trở nên vô cùng quan trọng, cấp thiết.
Và một đặc điểm của giấu thông tin trong ảnh đó là thông tin được giấu trong ảnh một cách vô hình, nó như là một cách mà truyền thông tin mật cho nhau mà người khác không thể biết được bởi sau khi giấu thông tin thì chất lượng ảnh gần như không thay đổi đặc biệt đối với ảnh mầu hay ảnh xám.
CHƯƠNG 2. CẤU TRÚC CỦA MỘT SỐ ẢNH ĐẶC TRƯNG
2.1 Cấu trúc ảnh BMP
Một file *.BMP được chia làm 3 phần chính: BitmapHeader, Palette màu và BitmapData.
+ BitmapHeader:
Byte thứ
Ý nghĩa
Giá trị
1-2
Nhận dạng file
‘BM’ hay 19778
3-6
Kích thước file
Kiểu long trong Turbo C
7-10
Dự trữ
Thường mang giá trị 0
11-14
Byte bắt đầu vùng dữ liệu
Offset của byte bắt đầu vùng dữ liệu
15-18
Số byte cho vùng info
4 byte
19-22
Chiều rộng của ảnh BMP
Tính bằng pixel
23-26
Chiều cao của ảnh BMP
Tính bằng pixel
27-28
Số Planes màu
Cố định là 1
29-30
Số bit cho một pixel
Có thể là 1, 4, 8, 16, 24 tuỳ theo loại ảnh
31-34
Kiểu nén dữ liệu
0: không nén
1: Nén runlength 8bit/pixel
2: Nén runlength 4bit/pixel
35-38
Kích thước ảnh
Tính bằng byte
39-42
Độ phân giải ngang
Tính bằng pixel/metter
43-46
Độ phân giải dọc
Tính bằng pixel/metter
47-50
Số màu sử dụng trong ảnh
51-54
Số màu được sử dụng để hiển thị ảnh
+ Palette màu:
Kích thước của vùng Palette màu bằng 4*số màu của ảnh. Vì Palette màu của 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ựa trên số bit cho 1 pixel cụ thể là: 8 bit/pixel: ảnh 256 màu, 4bit/pixel: ảnh 16 màu, 24bit/pixel ảnh 24 bit màu.
+ BitmapData :
Phần này kề tiếp ngay sau Palette màu của BMP. Đây là phần chứa các giá trị màu của các điểm ảnh trong BMP. Các điểm ảnh được lưu theo thứ tự từ trái qua phải trên một dòng và các dòng lại được lưu theo thứ tự dưới lên trên. Mỗi Byte trong vùng BitmapData biểu diễn 1 hoặc nhiều điểm ảnh tùy theo số bits cho một pixel.
2.2 Cấu trúc ảnh PNG
PNG (từ viết tắt trong tiếng Anh của Portable Network Graphics) là một dạng hình ảnh sử dụng phương pháp nén dữ liệu mới - không làm mất đi dữ liệu gốc. PNG được tạo ra nhằm cải thiện và thay thế định dạng ảnh GIF với một định dạng hình ảnh không đòi hỏi phải có giấy phép sáng chế khi sử dụng. PNG được hỗ trợ bởi thư viện tham chiếu libpng, một thư viện nền tảng độc lập bao gồm các hàm của C để quản lý các hình ảnh PNG.
- Cấu trúc của một ảnh PNG:
+ Phần đầu của tập tin:
Một tập tin PNG bao gồm 8-byte (kí hiệu 89 50 4E 47 0D 0A 1A 0A) được viết trong hệ thống có cơ số 16, chứa các chữ "PNG" và 2 dấu xuống dòng, ở giữa là sắp xếp theo số lượng của các thành phần, mỗi thành phần đều chứa thông tin về hình ảnh. Cấu trúc dựa trên các thành phần được thiết kế cho phép định dạng PNG có thể tương thích với các phiên bản cũ khi sử dụng.
+ Các thành phần của tập tin:
PNG là cấu trúc như một chuỗi các thành phần, mỗi thành phần chứa kích thước, kiểu, dữ liệu, và mã sửa lỗi CRC ngay trong nó.
Chuỗi được gán tên bằng 4 chữ cái phân biệt chữ hoa chữ thường. Sự phân biệt này giúp bộ giải mã phát hiện bản chất của chuỗi khi nó không nhận dạng được.
Với chữ cái đầu, viết hoa thể hiện chuỗi này là thiết yếu. Chuỗi thiết yếu chứa thông tin cần thiết để đọc được tệp và nếu bộ giải mã không nhận dạng được chuỗi thiết yếu, việc đọc tệp phải được hủy.
2.3 Ảnh JPEG
JPEG viết tắt của Joint Photographic Experts Group [5], 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 lại nhỏ hơn. Giống như ả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 hơn GIF là chúng có thể hiển thị các hình ảnh với 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 họa có số lượng màu lớn.
Các ảnh JPEG không thể làm trong suốt hoặc chuyển động - trong trường hợp này bạn sẽ sử dụng định dạng GIF (hoặc định dạng PNG để tạo trong suốt).
Tạo ảnh JPEG Fast-Loading: Giống như với các ảnh GIF, để tạo hình JPEG nhỏ đến mức có thể (tính theo bytes) để website tải nhanh hơn. Điều chỉnh chính để thay đổi kích thước file JPEG được gọi là quality, và thường có giá trị từ 0 tới 100%, khi 0% thì chất lượng là thấp nhất (nhưng kích thước file là nhỏ nhất), và 100% thì chất lượng cao nhất (nhưng kích thước file là lớn nhất). 0% chất lượng JPEG sẽ nhìn rất mờ khi so sánh với ảnh gốc. Còn 100% chất lượng JPEG thường không phân biệt được so với ảnh gốc.
CHƯƠNG 3. KỸ THUẬT GIẤU TIN TRÊN MIỀN BIẾN ĐỔI DCT
Có thể chia các kỹ thuật thuỷ vân theo hai hướng tiếp cận chính:
Hướng thứ nhất dựa trên miền không gian ảnh tức là tiến hành khảo sát tín hiệu và hệ thống rời rạc một cách trực tiếp trên miền giá trị rời rạc của các điểm ảnh gọi là trên miền biến số độc lập tự nhiên. Sau đó, tìm cách nhúng các thông tin bản quyền vào ảnh bằng cách thay đổi các giá trị điểm ảnh sao cho không ảnh hưởng nhiều đến chất lượng ảnh và đảm bảo sự bền vững của thông tin nhúng trước những tấn công có thể có đối với bức ảnh đã nhúng thuỷ vân. Điển hình cho cách tiếp cận này là phương pháp tách bit ít quan trọng nhất (LSB-Least Significant Bit) và phương pháp sử dụng chuỗi số giả ngẫu nhiên.
Hướng thứ hai là sử dụng các phương pháp khảo sát gián tiếp khác thông qua các kỹ thuật biến đổi. Các kỹ thuật biến đổi này làm nhiệm vụ chuyển miền biến số độc lập sang các miền khác và như vậy tín hiệu và hệ thống rời rạc sẽ được biểu diễn trong các miền mới với các biến số mới. Sau đó, tìm cách nhúng thuỷ vân vào ảnh bằng cách thay đổi các hệ số biến đổi trong những miền thích hợp để đảm bảo chất lượng ảnh và sự bền vững của thuỷ vân sau khi nhúng. Các phép biến đổi được sử dụng phổ biến là DCT, DFT (Discrete Fourier Transform) và DWT.
Kỹ thuật thuỷ vân sử dụng phép biến đổi DCT thường chia ảnh gốc thành các khối, thực hiện phép biến đổi DCT với từng khối ảnh gốc để được miền tần số thấp, miền tần số giữa và miền tần số cao. Đa số kỹ thuật thuỷ vân ẩn bền vững sẽ chọn miền tần số giữa của mỗi khối để nhúng bit thuỷ vân theo một hệ số k nào đó gọi là hệ số tương quan giữa chất lượng ảnh sau khi nhúng thuỷ vân (tính ẩn của thuỷ vân) và độ bền vững của thuỷ vân
3.1 Phép biến đổi cosin rời rạc
Biến đổi cosin rời rạc viết tắt là DCT-Discrete Cosine Transform được đưa ra bởi Ahmed và các đồng nghiệp của ông vào năm 1974 [5]. Trong trường hợp khảo sát miền không gian ảnh người ta thường biến đổi miền không gian rời rạc tín hiệu điểm ảnh sang miền tần số rời rạc bằng các phép biến đổi như Fourier, Cosin rời rạc hay Wavelet Trong các phương pháp biến đổi hay dùng thì các kỹ thuật thủy vân được trình bày trong đồ án này sử dụng phép biến đổi cosin rời rạc .
Trong đồ án này trình bày một số kỹ thuật giấu tin trên miền biến đổi DCT. Trong đó kỹ thuật biến đổi DCT được thực hiện như sau: Giả sử ta coi miền dữ liệu của ảnh JPEG như một ma trận Cmxn mỗi phần tử là một pixel của ảnh, ta chia ảnh thành nhiều khối mỗi khối có kích thước 8x8 pixel, mỗi khối sử dụng biến đổi DCT để biến đổi khối 8x8 pixel thành 64 hệ số DCT.
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 đối với các khối nhỏ sẽ làm tăng độ chính xác khi tính toán với dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra.
Hai công thức ở đây minh hoạ cho 2 phép biến đổi DCT thuận nghịch đối với mỗi khối ảnh có kích thước 8 x 8. Giá trị x(n1, n2) biểu diễn các mức xám của ảnh trong miền không gian, X(k1, k2) là các hệ số sau biến đổi DCT trong miền tần số.
(3.1)
(3.2)
Với và
Thuật toán giấu tin trong miền biến đổi DCT sẽ sử dụng phương pháp nhúng thuỷ vân trong miền tần số của ảnh, giải tần được sử dụng để chứa tín hiệu thuỷ vân là miền tần số ở giữa của một khối DCT 8x8. Trong đó, các khối DCT 8x8 là những khối ảnh cùng kích thước đã được chọn ra ngẫu nhiên từ ảnh ban đầu và được áp dụng phép biến đổi cosin rời rạc DCT để chuyển sang miền tần số. Mỗi tín hiệu thuỷ vân sẽ được chứa trong một khối.
Input: Watermark: Một chuỗi các bit b. Một ảnh F.
Output: Một ảnh sau khi thuỷ vân, F’. Khoá để giải mã K.
3.2 Kỹ thuật nén ảnh dạng chuẩn jpeg dùng biến đổi cosin rời rạc
3.2.1 Mã hoá và giải mã dùng biến đổi DCT
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 3.1. Sơ đồ mã hóa và giải mã dùng biến đổi DCT
Mỗi khối 64 điểm ảnh sau biến đổi DCT thuận sẽ nhận được 64 hệ số thực DCT (bảng 1). Mỗi hệ số này có chứa một trong 64 thành phần tần số không gian hai chiều. Hệ số với tần số bằng không theo cả hai hướng (tương ứng với k1 và k2 bằng 0) được gọi là hệ số một chiều DC, hệ số này chính là giá trị trung bình của 64 điểm ảnh trong khối. 63 hệ số còn lại gọi là các hệ số xoay chiều AC. Hệ số một chiều DC tập trung phần lớn năng lượng của ảnh.
Bảng 3.2. Các bước của quá trình mã hóa biến đổi DCT đối với 1 khối
Chú ý rằng bản thân biến đổi DCT không làm mất thông tin vì DCT là một biến đổi tuyến tính chuyển các giá trị của điểm ảnh từ miền không gian thành các hệ số trong miền tần số. Nếu biến đổi DCT thuận và nghịch được tính toán với độ chính xác tuyệt đối và nếu các hệ số DCT không phải qua bước lượng tử và mã hoá thì ảnh thu được sau biến đổi DCT ngược sẽ giống hệt ảnh gốc.
3.2.2 Lượng tử và giải lượng tử
Sau khi thực hiện biến đối DCT, 64 hệ số sẽ được lượng tử hoá dựa trên một bảng lượng tử gồm 64 phần tử Q(u,v) với 0≤u, v≤7. Bảng này được định nghĩa bởi từng ứng dụng cụ thể. Các phần tử trong bảng lượng tử có giá trị từ 1 đến 255 được gọi là các bước nhảy cho các hệ số DCT. Quá trình lượng tử được coi như là việc chia các hệ số DCT cho bước nhảy lượng tử tương ứng, kết quả này sau đó sẽ được làm tròn xuống số nguyên gần nhất. Công thức (3.3) thể hiện việc lượng tử với F(u,v) là các hệ số DCT, FQ(u,v) là các hệ số sau lượng tử, các hệ số này sẽ được đưa vào bộ mã hoá Entropy.
(3.3)
Mục đích của việc lượng tử hoá là giảm số lượng bit cần để lưu trữ các hệ số biến đổi bằng việc giảm độ chính xác của các hệ số này cho nên lượng tử là quá trình xử lý có mất thông tin.
Quá trình giải lượng tử ở phía bộ giải mã được thực hiên ngược lại. Các hệ số sau bộ giải mã entropy sẽ nhân với các bước nhảy trong bảng lượng tử (bảng lượng tử được đặt trong phần header của ảnh JPEG). Kết quả này sau đó sẽ được đưa vào biến đổi DCT ngược.
3.2.3 Mã hóa và giải mã jpeg
Mã hoá là bước cuối cùng trong hệ thống nén ảnh dựa trên biến đổi DCT. Chuẩn nén ảnh JPEG hiện nay dùng phương pháp mã hoá Huffman, đây là phép mã hoá không làm mất thông tin. Phương pháp này dựa trên mô hình thống kê. Dựa vào dữ liệu gốc, người ta tính tần suất xuất hiện các hệ số. Việc tính tần suất được thực hiện bằng cách duyệt tuần tự từ đầu khối đến cuối khối, sau đó, những hệ số có tần suất cao được gắn cho một từ mã ngắn, các hệ số có tần suất thấp được gán một từ mã dài. Với cách thức này chiều dài trung bình của từ mã đã giảm xuống.
Các hệ số thu được sau khi lượng tử hoá sẽ được sắp xếp thành một chuỗi các ký hiệu theo kiểu “zig-zag” (theo đường zig-zag trong bảng 3.1) để đặt các hệ số có tần số thấp lên trước các hệ số tần số cao. Các hệ số này sẽ được mã hoá dựa trên bảng mã Huffman sao cho chiều dài trung bình của từ mã là nhỏ nhất. Bảng mã này cũng sẽ được đặt trong phần mào đầu của ảnh để thực hiện giải nén ảnh.
3.3 Một số kỹ thuật giấu tin trên miền biến đổi DCT
3.3.1 Thuật toán JSteg
Thuật toán JSteg được đề xuất bởi Derek Upham vào năm 1997 [3]. Đây là thuật toán được công bố đầu tiên cho hệ thống steganography cho ảnh JPEG. Thuật toán này thay đổi tuần tự các bit LSB của hệ số DCT với bit của thông điệp giấu. Thuật toán này không đòi hỏi một tính bí mật nào, bất cứ ai biết được hệ thống steganography này cũng có thể lấy đươc thông tin ẩn bởi JSteg.
Thuật toán JSteg
Thuật toán có thể mô tả theo hình vẽ sau:
Hình 3.2 : Mô tả quá trình giấu tin trong hệ số DCT của thuật toán J-steg .
3.3.2 Thuật toán OutGuess 0.1
Thuật toán OutGuess 0.1 là phiên bản đầu tiên được đề xuất bởi Niels Provos [4] là thuật toán cải tiến từ thuật toán JSteg bằng cách sử dụng bộ khởi tạo số giả ngẫu nhiên để chọn các hệ số DCT ngẫu nhiên. Hệ số DCT được chọn ngẫu nhiên sẽ thay thế các bit LSB của hệ số với bit đã được mã hoá của thông điệp mật cần giấu
Thuật toán OutGuess 0.1
3.3.3 Thuật toán F5
Thuật toán F5 được đề xuất bởi nhà khoa học người Đức Pfitzmann và Westfeld vào năm 2001[3]. Thuật toán này nhúng thông điệp vào LSB của các hệ số DCT theo bước đi giả ngẫu nhiên thông qua tất cả các hệ số DCT của ảnh cover trong đó nó bỏ qua các hệ số DC (DCT=64) và các hệ số bằng 0. Nếu LSB của hệ số DCT không phù hợp với bit thông điệp, giá trị tuyệt đối của hệ số giảm đi 1. Nếu phép trừ dẫn đến 0 thì bit thông điệp phải nhúng vào hệ số tiếp theo, bởi vì ở phía người nhận, thông điệp chỉ được lấy ra ở các hệ số DCT khác 0. Đặc biệt F5 sử dụng ma trận mã hoá (matric encoding) để giảm thiểu số thay đổi cần thiết khi giấu thông điệp. Với cách thức này nó có thể giảm thiểu tối đa được khoảng trên 50% thay đổi trên ảnh so với Jsteg. Theo miêu tả của thuật toán F5 phiên bản 11, chương trình yêu cầu các thông tin vào gồm có
Yếu tố chất lượng Q của ảnh stego
Ảnh vào ( dạng TIFF, BMP, JPEG, hoặc GIF)
Tên tệp đầu ra
Tệp chứa thông điệp bí mật
Mật khẩu người dùng được sử dụng cho bộ tạo giả ngẫu nhiên PRNG
Chú thích chèn vào phần header của ảnh (thường là độ dài thông điệp)
Matrix encoding có 3 tham số (c,n,k) với c là số thay đổi trên một nhóm gồm n hệ số DCT, k là số bit được nhúng. Trong [8] tác giả sử dụng một matrix encoding đơn giản (1,2k-1,k), sử dụng một hàm băm để đưa ra k bit khi áp dụng cho 2k –1 hệ số.
Ví dụ, nếu chúng ta muốn nhúng 2 bit x1,x2 (k=2) vào nhóm 3 hệ số (22-1=3) a1, a2, a3 sẽ chỉ thay đổi một vị trí. Chúng ta có thể bắt gặp 4 trường hợp xẩy ra sau:
x1=a1 Å a3, x2= a2 Å a3 Þ không thay đổi gì
x1¹a1 Å a3, x2= a2 Å a3 Þ thay đổi a1
x1=a1 Å a3, x2¹ a2 Å a3 Þ thay đổi a2
x1¹a1 Å a3, x2¹ a2 Å a3 Þ thay đổi a3
Từ đó ta có thể lấy ra được x1, x2 dựa vào các trường hợp trên.
Trường hợp tổng quát, chúng ta có một từ mã a với n vị trí bit có thể thay đổi cho k bit thông điệp mật x. Đặt f là một hàm băm dùng để lấy ra k bit từ một từ mã. Matrix encoding có thể giúp chúng ta tìm ra một thay đổi phù hợp a thành a’ đổi với mọi a và x với x=f(a’) sao cho khoảng cách Hamming
d(a,a’) <= dmax
vì matrix encoding gồm ba phần (dmax, n,k) cho nên một từ mã với n vị trí sẽ thay đổi không quá dmax vị trí để nhúng k bit. F5 thực hiện maxtrix encoding với dmax =1. Đối với (1,n,k) từ mã có độ dài là n=2k – 1. Khi đó bỏ qua điểm hội tụ (tức hệ số DCT bằng 0) chúng ta sẽ nhận được mật độ thay đổi là
D(k) =
Và tỉ lệ nhúng
R(k)=
Sử dụng mật độ thay đổi và tỉ lệ nhúng chúng ta có thể định nghĩa hiệu suất nhúng W(k). Nó có thể chỉ ra giá trị bit trung bình chúng ta có thể nhúng trên sự thay đổi đó
W(k)=
Hiệu suất nhúng của (1,n,k) luôn luôn lớn hơn k. Bảng 2.1 chỉ ra tỉ lệ nhúng giảm trong khi hiệu suất nhúng tăng. Tuy nhiên chúng ta có thể đạt được hiệu suất cao chỉ với thông điệp rất nhỏ.
Bảng 3.2. Mối liên hệ giữa mật độ thay đổi và tỉ lệ nhúng
k
n
Mật độ thay đổi (D(k))
Tỉ lệ nhúng (R(k))
Hiệu suất nhúng W(k)
1
1
50.00%
100.00%
2
2
3
25.00%
66.67%
2.67
3
7
12.50%
42.86%
3.43
4
15
6.25%
26.67%
4.27
5
31
3.12%
16.13%
5.16
6
63
1.56%
9.52%
6.09
7
127
0.78%
5.51%
7.06
8
255
0.39%
3.14%
8.03
9
511
0.20%
1.76%
9.02
Bảng 3.3 đưa ra sự phụ thuộc giữa bit thông điệp xi và vị trí bit được thay đổi a’j. Chúng ta chia phần phụ thuộc với mã nhị phân của j tới cột a’j vậy nên chúng ta có thể tìm ra hàm băm rất nhanh
Khi đó f(a) =
Bảng 3.3 Sự phụ thuộc (´) giữa bit thông điệp xi và các bit từ mã a’j
f(a’)
a’1
a’2
a’3
x1
´
´
x2
´
´
f(a’)
a’1
a’2
a’3
a’4
a’5
a’6
a’7
x1
´
´
´
´
x2
´
´
´
´
x3
´
´
´
´
Chúng ta có thể tìm ra vi trí bit s = x Å f(a)
Khi đó từ mã được thay đổi trong a’ =
Chúng ta có thể tìm ra một tham số k tốt nhất cho mọi thông điệp để nhúng vào mọi vật mang cung cấp đủ khả năng nhúng thông điệp sao cho thông điệp vừa đủ trong vật mang. Ví dụ, nếu chúng ta muốn nhúng một thông điệp 1000 bit vào một vật mang có khả năng nhúng 50000 bit thì tỉ lệ nhúng cần thiết là R=1000:50000=2%. Giá trị này nằm giữa R(k=8) và R(k=9) trong bảng 2.1. Chúng ta chọn k=8 và có thể nhúng 50000:255=196 từ mã với độ dài n=255, hay matrix encoding là (1,255,8) có thể nhúng 196.8=1568 bit. Nếu chúng ta chọn k=9 chúng ta không thể nhúng được thông điệp.
Thuật toán F5 bao gồm các bước sau:
Lấy phần thể hiện RGB của ảnh đầu vào (lấy dữ liệu của ảnh).
Biến đổi miền dữ liệu của ảnh sang miền tần số DCT sau đó lượng tử hoá các hệ số DCT theo Q ta được các hệ số DCT đã lượng tử.
Tính khả năng có thể nhúng khi không sử dụng matrix encoding C = hDCT – hDCT /64 –h(0) –h(1)+ 0.49h, trong đó hDCT là tông số hệ số DCT, h(0) là số hệ số AC DCT bằng 0, h(1) là số hệ số AC DCT có trị tuyệt đối bằng 1, hDCT/64 là số hệ số DC, –h(1)+0.49h(1) = –0.51h là ước lượng mức độ hao hụt.
Mật khẩu người dùng được sử dụng để tạo ra bộ khởi tạo giả ngẫu nhiên PRNG cái mà quyết định nhúng các bít thông điệp vào các vị trí ngẫu nhiên. PRNG cũng thường được sử dụng để phát sinh một dòng bít giả ngẫu nhiên bằng phép XOR với thông điệp tạo ra nó một dòng bít ngẫu nhiên. Trong quá trình nhúng, hệ số DC và các hệ số =0 thường được bỏ qua.
Thông điệp được chia thành các đoạn gồm k bít, mỗi đoạn nhúng vào một nhóm hệ số DCT 2k–1 theo bước đi giả ngẫu nhiên. Nếu giá trị băm của nhóm không phù hợp với các bít thông điệp, thì giá trị tuyệt đối của một trong những hệ số trong nhóm bị giảm đi 1 cho phù hợp. Nếu hệ số trở thành 0 (hệ số này được gọi là điểm hội tụ - shrinkage), và khi đó k bít thông điệp này sẽ được nhúng trong nhóm hệ số DCT tiếp theo (lưu ý LSB(d)= d mod 2 với d > 0, và LSB(d)=1–d mod 2 với d < 0)
Nếu độ dài thông điệp phù hợp với khả năng có thể giấu trong ảnh thì quá trình giấu thành công, ngược lại sẽ thông báo lỗi và cho biết độ dài lớn nhất của ảnh có thể giấu để điều chỉnh thông điệp giấu hoặc thay đổi ảnh dùng để giấu thông điệp.
Thuật toán giấu F5
CHƯƠNG 4. KỸ THUẬT PHÁT HIỆN ẢNH CÓ GIẤU TIN TRÊN MIỀN BIẾN ĐỔI DCT
4.1. Phát hiện tin ẩn giấu (Steganalysis)
Steganalysis là kỹ thuật phát hiện sự tồn tại của thông tin ẩn giấu trong multimedia. Giống như thám mã, mục đích của Steganalysis là phát hiện ra thông tin ẩn và phá vỡ tính bí mật của vật mang tin ẩn.
Phân tích tin ẩn giấu thường dựa vào các yếu tố sau:
- Phân tích dựa vào các đối tượng đã mang tin.
- Phân tích bằng so sánh đặc trưng: So sánh vật mang tin chưa được giấu tin với vật mang tin đã được giấu tin, đưa ra sự khác biệt giữa chúng.
- Phân tích dựa vào thông điệp cần giấu để dò tìm.
- Phân tích dựa vào các thuật toán giấu tin và các đối tượng giấu đã biết: Kiểu phân tích này phải quyết định các đặc trưng của đối tượng giấu tin, chỉ ra công cụ giấu tin (thuật toán) đã sử dụng.
- Phân tích dựa vào thuật toán giấu tin, đối tượng gốc và đối tượng sau khi giấu tin.
Các phương pháp phân tích có thể phân thành 3 nhóm ([7]):
- Phân tích trực quan: Thường dựa vào quan sát hoặc dùng biểu đồ histogram giữa ảnh gốc và ảnh chưa giấu tin để phát hiện ra sự khác biệt giữa hai ảnh căn cứ đưa ra vấn đề nghi vấn. Với phương pháp phân tích này thường khó phát hiện với ảnh có độ nhiễu cao và kích cỡ lớn.
- Phân tích theo dạng ảnh: Phương pháp này thường dựa vào các dạng ảnh bitmap hay là ảnh nén để đoán nhận kỹ thuật giấu hay sử dụng như các ảnh bitmap thường hay sử dụng giấu trên miền LSB, ảnh nén thường sử dụng kỹ thuật giấu trên các hệ số biến đổi như DCT, DWT, DFT. Phương pháp này rất rộng.
- Phân tích theo thống kê: Đây là phương pháp sử dụng các lý thuyết thống kê và thống kê toán sau khi đã xác định được nghi vấn đặc trưng. Phương pháp này thường đưa ra độ tin cậy cao hơn và đặc biệt là cho các ảnh dữ liệu lớn.
Trong các phần tiếp theo sẽ trình bày một số phương pháp phát hiện ảnh có giấu tin trên miền LSB bằng thống kê toán học. Các phương pháp này đưa ra độ tin cậy rất cao khi dữ liệu giấu lớn nhưng cũng có một số hạn chế cho một số ảnh có tỷ lệ nhiễu lớn.
4.2. Kỹ thuật phát hiện thống kê
Sử dụng thống kê Chi-Squared có thể kiểm tra một ảnh có giấu tin hay không giấu trên miền LSB của ảnh. Kỹ thuật Jsteg và kỹ thuật giấu Outgess giấu tin trên LSB của các hệ số DCT do vậy ta có thể sử dụng thống kê Chi-square để phát hiện ra các ảnh này có giấu tin sử dụng kỹ thuật giấu Jsteg và kỹ thuật giấu Outgess như sau:
Thuật toán thống kê chi-square
Input : stego image
Output: kết luận có giấu tin hay không
Các bước thực hiện
- Biến đổi miền dữ liệu của ảnh sang miền tần số DCT ta thu được các hệ số DCT
- Đặt X là vector với xk = tần số xuất hiện của các hệ số DCT có giá trị tuyệt đối là chẵn (giá trị 2k)
- Đặt Y là vector với yk = tần số xuất hiện của các hệ số DCT có giá trị tuyệt đối là lẻ (giá trị 2k+1)
- Khởi tạo giá trị ban đầu của X và Y đều bằng 0. Sau đó POV đếm giá trị hệ số DCT, kiểm tra và điền vào X, Y tương ứng
- Lấy giá trị trung bình của xk và yk là z k =
- Sau đó thống kê Chi-Square với n-1 mức tự do được tính như sau:
với zi = (1)
Theo giả thuyết, thì là nhỏ đối với ảnh được giấu tin, vì xi là nhỏ so với zi. Và đối với ảnh không giấu tin thì là lớn, vì xi là lớn so với zi.
Tính p (giá trị đánh giá xác suất giấu tin) bằng hàm mật độ tích hợp với như là giới hạn trên của nó:
p = 1 - (2)
Hình 4.1 : biểu đồ mô tả phát hiện ảnh có giấu tin sử dụng thống kê Chi-square
Đối với một ảnh thông tin giấu được nhúng liên tục (từ góc trên trái của ảnh) thì giá trị của p sẽ gần tới 1 và sau đó rơi xuống 0 khi chúng ta thăm các vùng không giấu. Với kỹ thuật này không những độ phát hiện rất cao mà còn tính toán được độ dài của thông điệp giấu.
Nếu pixel mang thông điệp được chọn ngẫu nhiên hơn là chọn liên tục, thì kỹ thuật trên ít hiệu quả hơn (trừ trường hợp số lượng giấu từ 97% số pixel của ảnh trở lên). Westfeld [1] đã đưa ra một trư