MỤC LỤC
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 8
1.1 Giới thiệu về data hiding 9
1.2 Giới thiệu về mã hóa AES 12
CHƯƠNG 2: DATA HIDING VÀ MÃ HÓA AES 13
2.1Mô tả hệ thống ẩn dữ liệu 13
2.1.1 Khái niệm 13
2.1.2 Mô tả hệ thống ẩn dữ liệu: 14
2.2 Các yếu tố ảnh hưởng đến quá trình ẩn dữ liệu 15
2.2.1 Sự thay đổi trên đối tượng chứa là tối thiểu 16
2.2.2 Mức độ tránh các thao tác biến đổi trên đối tượng chứa 16
2.2.3 Số lượng dữ liệu nhúng: 17
2.2.4 Sự khó phát hiện bởi tri giác của con người – sự vô hình: 17
2.2.5 Không thể giải mã dữ liệu nhúng từ đối tượng chứa – Tính bảo mật: 18
2.3 Phân loại các kỹ thuật ẩn dữ liệu 18
2.3.1 Ẩn dữ liệu trên văn bản 18
2.3.1.1 Các kỹ thuật của Brassil 18
2.3.1.1.1 Nhúng dữ liệu bằng cách dịch chuyển dòng 18
2.3.1.1.2 Nhúng dữ liệu bằng cách dịch chuyển từ 19
2.3.1.1.3 Nhúng dữ liệu đặc trưng 20
2.3.1.2 Các kỹ thuật của Bender 20
2.3.1.2.1 Phương pháp khoảng trắng mở 21
2.3.1.2.2 Phương pháp cú pháp 22
2.3.1.2.3 Phương pháp ngữ nghĩa 22
2.3.2 Các kỹ thuật ẩn dữ liệu trên ảnh tĩnh: 23
2.3.2.1 Các hướng tiếp cận của các kỹ thuật ẩn dữ liệu trên ảnh tĩnh: 23
2.3.2.1.1 Hướng tiếp cận chèn vào bit LSB: 23
2.3.2.1.2 Phương pháp ngụy trang và lọc: 24
2.3.2.1.3 Các thuật toán và phép biến đổi: 25
2.3.2.2 Các kỹ thuật ẩn dữ liệu trên ảnh tĩnh: 25
2.3.2.2.1 Ẩn dữ liệu với tỉ lệ bit thấp: 26
2.3.2.2.1.1 Patchwork- cách tiếp cận thống kê: 26
2.3.2.2.1.2 Mã hóa kết cấu khối (texture block coding)-Cách tiếp cận trực quan: 30
2.3.2.2.2 Mã hóa với dữ liệu bit cao – Mã hóa affine: 31
2.3.2.2.2.1 Phương pháp nhúng dữ liệu vào các khối, chứa tối đa một bit dữ liệu: 32
2.3.2.2.2.2 Phương pháp nhúng dữ liệu vào các khối, mỗi khối chứa tối đa hai 36
2.3.2.2.2.3 Phân tích khả năng che dấu và kết quả thực nghiệm: 42
2.4 Thuật toán mã hóa AES 44
2.4.1 Quá trình mã hóa 44
2.4.1.1 Tham số, ký hiệu, thuật ngữ và hàm 44
2.4.1.2 Các bước thực hiện 45
2.4.1.3Kiến trúc của thuật toán Rijndael 46
2.4.1.4 Phép biến đổi SubBytes 46
2.4.1.5 Phép biến đổi ShiftRows 48
2.4.1.6 Phép biến đổi MixColumns 50
2.4.1.7 Thao tác AddRoundKey 52
2.4.1.8 Ví dụ về quà trình mã hóa: 54
2.4.2. Quá trình tạo khóa 61
2.4.2.1Chiều dài yêu cầu của khóa 61
2.4.2.2 Sự hạn chế của khóa 61
2.4.2.3 Các tham số của khóa: chiều dài khóa, kích thước block và số vòng 61
2.4.2.4 Gợi ý việc thực hiện dựa trên các nền tảng khác nhau 62
2.4.2.5 Mảng của các byte 62
2.4.3 GIẢI MÃ AES 68
2.4.3.1 Giải mã: 68
24.3.2 InvShiftrows 69
2.4.3.3 InvSubBytes 69
2.4.3.4 InvMixColumns 70
2.4.3.5 Ví dụ mã hóa AES 70
Chương III.ƯNG DỤNG DATA HIDING KẾP HỢP VỚI MÃ HÓA 77
3.1 Mã hóa 77
3.2 Giải mã 77
3.3Ví dụ minh họa 78
KẾT LUẬN 79
1. Đánh giá: 80
2. Phát triển và hạn chế của đề tài: 80
TÀI LIỆU THAM KHẢO 80
75 trang |
Chia sẻ: lethao | Lượt xem: 2246 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Kỹ thuật ẩn dữ liệu kết hợp ASE, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iệu đặc biệt. Điều này tránh được sự rút trích dữ liệu công khai, vì chiều cao các kí tự trong văn bản gốc không được biết. Và dĩ nhiên, quá trình giải mã cần phải có các ảnh gốc. Phương pháp mã hóa đặc trưng có thể thực hiện trên một lượng dữ liệu nhúng lớn, vì một văn bản có nhiều đặc trưng. Phương pháp này có thể bị đánh bại bằng cách điều chỉnh lại chiều dài các kí tự theo một giá trị cố định
2.3.1.2 Các kỹ thuật của Bender
Các văn bản ở dạng số rất khó chứa dữ liệu ẩn (trong khi văn bản trên giấy thì dễ hơn). Các văn bản ở dạng số ít có các thao tác biến đổi như trên ảnh, nhưng nếu văn bản xuất hiện một từ hay một câu lạ thì dễ dàng bị người đọc phát hiện. Bender đưa ra ba phương pháp chính sử dụng cho ẩn dữ liệu trên vănbản:
Phương pháp khoảng trắng mở sử dụng các khoảng trắng không được sử dụng trong các trang in
Phương pháp cú pháp sử dụng các dấu câu
Phương pháp ngữ nghĩa thao tác dựa trên nghĩa của các từ
2.3.1.2.1 Phương pháp khoảng trắng mở
Bender đưa ra hai lý do của việc sử dụng khoảng trắng để mã hóa.
Thứ nhất, khi thay đổi số lượng các khoảng trắng thì nghĩa của câu ít bị ảnh hưởng.
Thứ hai, người đọc tình cờ sẽ không chú ý đến sự thay đổi của các khoảng trắng.
Trong phương pháp này lại có ba phương pháp nhỏ: phương pháp khai thác khoảng trắng giữa các câu, giữa các từ và giữa các dòng trong các văn bản được sắp chữ.
Phương pháp khai thác khoảng trắng giữa các câu:mã hóa một chuỗi nhị phân vào văn bản bằng cách đặt một hay hai khoảng trắng sau mỗi kí tự kết thúc, ví dụ như một câu trong văn xuôi, một dấu chấm phẩy (;) trong ngôn ngữ C,... Một khoảng trắng mã hóa 0, hai khoảng trắng mã hóa 1. Phương pháp này không hiệu quả, nó cần phải có một văn bản lớn để mã hóa một lượng bit nhỏ (một bit trên một câu tương ứng với tỉ lệ dữ liệu là 1bit/160 byte với giả thuyết một câu trung bình có 80 kí tự). Phương pháp này cũng phụ thuộc vào cấu trúc của văn bản. Hầu hết các trình xử lý văn bản đều xử lý khoảng trắng sau mỗi câu.
Phương pháp khai thác khoảng trắng sau mỗi dòng: dữ liệu mã hóa cho phép xác định số khoảng trắng sau mỗi dòng. Hai khoảng trắng mã hóa một bit, bốn khoảng trắng mã hóa hai bit, tám khoảng trắng mã hóa ba bit,... Phương pháp này có thể thực hiện trên mọi loại văn bản, vì nó không bị người đọc phát hiện do những khoảng trắng thêm vào nằm ngoài phạm vi của văn bản. Nó còn mã hóa được số lượng bit nhiều hơn phương pháp trên. Trong phương pháp khai thác khoảng trắng sau mỗi câu, văn bản sau khi đã nhúng dữ liệu, qua các chương trình như thư điện tử có khả năng bị cắt mất khoảng trắng. Vấn đề duy nhất của phương pháp khai thác khoảng trắng sau mỗi dòng là không thể lấy lại dữ liệu nhúng được sau khi văn bản chứa đã qua các thao tác sao chép trên giấy.
Phương pháp khai thác các khoảng trắng ngay sau các từ: một khoảng trắng mã hóa bit 0, hai khoảng trắng mã hóa bit 1. Phương pháp này cho kết quả vài bit trên một dòng. Để xác định khoảng trắng nào là của dữ liệu nhúng, khoảng trắng nào là của văn bản, Bender sử dụng phương pháp mã hóa giống như phương pháp của Manchester. Manchester sử dụng một nhóm bit để đại diện cho một bit. “01” được giải mã thành 1, “10” là 0, “00” và “11” là rỗng.
Ví dụ: chuỗi được mã hóa là “1000101101” thì được giải mã thành “001”, trong khi chuỗi “110011” là rỗng.
Phương pháp khoảng trắng hiệu quả trong các văn bản định dạng ASCII.Một số dữ liệu có khả năng bị mất khi văn bản được in ra.
2.3.1.2.2 Phương pháp cú pháp
Hai phương pháp cú pháp và ngữ nghĩa có thể kết hợp song song. Trong nhiều tình huống sau khi mã hoá, văn bản có số lượng dấu câu nhiều hay có dấu câu sai, nhưng lại không ảnh hưởng lớn đến ngữ nghĩa trong văn bản. Ví dụ cụm từ “bread, butter, and milk” và “bread, butter and milk” cả hai đều dùng dấu phẩy đúng. Bất cứ khi nào trong câu sử dụng dạng thứ nhất thì mã hóa 1, dạng thứ hai thì mã hóa 0. Trong một số ví dụ còn sử dụng các từ viết tắt, viết gọn. Phương pháp này chỉ mã hóa được vài bit trên 1Kb văn bản. Phương pháp cú pháp còn bao gồm cả cách thay đổi trong cách thức diễn đạt và cấu trúc văn bản mà không làm thay đổi ngữ nghĩa. Phương pháp này rõ ràng có hiệu quả hơn phương pháp khoảng trắng, nhưng khả năng khai thác của nó bị giới hạn.
2.3.1.2.3 Phương pháp ngữ nghĩa
Phương pháp này cũng tương tự như phương pháp cú pháp. Phương pháp ngữ nghĩa dùng giá trị chính hay phụ đồng nghĩa. Ví dụ từ “big” có thể thay bằng“large” (Hình 8). Khi giải mã, từ có ý nghĩa chính sẽ đại diện cho giá trị 1, từ có ý nghĩa phụ sẽ đại diện cho giá trị 0.Tuy nhiên phương pháp này có thể làm thay đổi ngữ nghĩa của câu, mặc dù từ thay thế cùng nghĩa, nhưng sắc thái của câu đã bị thay đổi (các từ được dùng thích hợp trong từng ngữ cảnh).
2.3.2 Các kỹ thuật ẩn dữ liệu trên ảnh tĩnh:
Ảnh tĩnh là một đối tượng rất thích hợp cho ẩn dữ liệu, nhất là trong Steganography vì các yếu tố sau đây:
Một ảnh chứa rất nhiều dữ liệu, giả sử một ảnh có kích thước 600 × 400 được mỗi pixel được biểu diễn bởi 3 byte RGB thì có dung lượng là 720000 byte.
Một ảnh có chứa dữ liệu nhúng sẽ ít gây chú ý hơn là một văn bản. Sự khác biệt giữa ảnh gốc và ảnh sau khi nhúng rất khó nhận ra được bằng mắt thường.
Thông tin có thể được ẩn trong ảnh tĩnh bằng nhiều cách. Thông điệp được mã hóa từng bit vào ảnh. Các kỹ thuật mã hóa phức tạp hơn là kỹ thuật ẩn thông điệp vào những vùng nhiễu của ảnh, như vậy sẽ ít gây sự chú ý hơn. Thông điệp cũng có thể được rải ngẫu nhiên trên ảnh chứa.
2.3.2.1 Các hướng tiếp cận của các kỹ thuật ẩn dữ liệu trên ảnh tĩnh:
Chèn vào bit thấp nhất LSB (Least Significant Bit).
Các kỹ thuật lọc và mặt nạ.
Các thuật toán và các phép biến đổi
2.3.2.1.1 Hướng tiếp cận chèn vào bit LSB:
Phương pháp chèn bit vào LSB là phương pháp được biết nhiều nhất trong kỹ thuật ẩn dữ liệu. Đây là một hướng tiếp cận thông dụng, đơn giản để nhúng thông tin vào ảnh. Nhưng phương pháp này có nhược điểm là dễ bị tấn công bởi các thao tác trên ảnh. Một sự chuyển đổi từ dạng GIF hay BMP sang dạng nén mất dữ liệu (ví dụ như JPEG) có thể hủy hết thông tin ẩn trong ảnh.
Khi sử dụng kỹ thuật LSB cho ảnh 24 bit màu, mỗi pixel có 3 bit được dùng để mã hóa dữ liệu (vì mỗi pixel được biểu diễn bằng 3 byte). Sự thay đổi trên pixel khó bị mắt người nhận ra. Ví dụ, kí tự A có thể được ẩn trong 3 pixel.
Giả sử 3 pixel của ảnh gốc có giá trị nhị phân như sau:
( 00100111 11101001 11001000 )
( 00100111 11001000 11101001 )
( 11001000 00100111 11101001 )
Giá trị nhị phân của kí tự A là (10000011). Sau đây là kết quả sau khi nhúng giá trị nhị phân của A vào 3 pixel trên, bắt đầu từ byte đầu tiên bên trái trên cùng:
( 00100111 11101000 11001000 )
( 00100110 11001000 11101000 )
( 11001000 00100111 11101001 )
Chỉ có các bit LSB in đậm bị thay đổi. Các kỹ thuật chèn vào bit LSB cải tiến là dữ liệu có thể được ẩn trong bit thấp nhất và bit thấp thứ hai trong byte mà mắt người vẫn không thể nhận ra sự thay đổi.
Sử dụng kỹ thuật LSB trong ảnh 8 bit màu phải cẩn thận hơn đối với ảnh 24 bit màu vì sự thay đổi màu sắc rõ hơn.
2.3.2.1.2 Phương pháp ngụy trang và lọc:
Kỹ thuật ngụy trang và lọc ẩn thông tin bằng cách đánh dấu một ảnh bằng một ký hiệu mờ. Các kỹ thuật nhúng dấu hiệu thích hợp với ảnh hơn, các kỹ thuật đó có thể được áp dụng trên ảnh tĩnh mà không sợ ảnh hưởng của định dạng ảnh nén mất dữ liệu. Bằng cách che phủ, hoặc ngụy trang một tín hiệu mờ, hệ thống thị giác của người HVS không thể nhận biết được sự thay đổi trên ảnh.
Về mặt kỹ thuật, nhúng dấu hiệu không phải là một dạng của Steganography. Trong khi Steganography dấu dữ liệu trong ảnh, nhúng dấu hiệu mở rộng thông tin của ảnh và trở thành một thuộc tính của ảnh chứa, cung cấp các chi tiết về bản quyền, giấy phép, quyền sỡ hữu.
Các kỹ thuật ngụy trang thích hợp hơn cho các ảnh nén dạng JPEG hơn là các kỹ thuật LSB vì chúng có thể miễn dịch trước các thao tác nén hay xén ảnh.
2.3.2.1.3 Các thuật toán và phép biến đổi:
Hiện nay trên Internet, ảnh JPEG đã trở nên phong phú vì là chuẩn nén tốt, chất lượng cao và tỉ lệ nén cao. Nguyên lý cơ bản trong chuẩn nén JPEG là phép biến đổi cosin rời rạc DCT (Discrete Cosine Transform). DCT là phép biến đổi nén mất dữ liệu, vì giá trị cosin không thể tính toán chính xác được và các lỗi trong tính toán có thể xuất hiện. Sự khác biệt giữa dữ liệu của ảnh gốc và dữ liệu của ảnh sau khi nén phụ thuộc vào các giá trị và các phương pháp sử dụng trong tính toán DCT.
Các ảnh cũng có thể tiến hành bằng các phép biến đổi Fast Fourier và biến đổi Wavelet. Hệ HVS có độ nhạy rất thấp với các thay đổi nhỏ trên độ chói.
Các hệ thống hiện đại sử dụng truyền thông phổ rộng để truyền một tín hiệu dãy tần số thấp trên một băng thông lớn hơn, vì thế mật độ của tín hiệu trên kênh truyền chỉ giống như nhiễu.
Hai kỹ thuật phổ rộng khác nhau được gọi là dãy trực tiếp và nhảy tần số. Kỹ thuật dãy trực tiếp dấu thông tin bằng cách thay đổi pha của tín hiệu dữ liệu với một chuỗi số giả ngẫu nhiên mà cả người gửi và người nhận đều biết. Kỹ thuật nhảy tần số phân chia băng thông có sẵn thành nhiều kênh truyền và nhảy giữa các kênh truyền đó (cũng được chèn bằng một dãy số giả ngẫu nhiên).
2.3.2.2 Các kỹ thuật ẩn dữ liệu trên ảnh tĩnh:
Các kỹ thuật ẩn dữ liệu trên ảnh tĩnh được chia thành hai loại theo kích thước dữ liệu nhúng:
Ẩn dữ liệu với tỉ lệ bit thấp, lượng dữ liệu được nhúng trong ảnh rất ít, có kỹ thuật chỉ nhúng một bit vào ảnh vì thế tính bền vững của dữ liệu nhúng cao.
Ẩn dữ liệu với tỉ lệ bit cao, lượng dữ liệu được nhúng cao hơn nhiều và do đó tính bền vững cũng thấp hơn.
2.3.2.2.1 Ẩn dữ liệu với tỉ lệ bit thấp:
Hai kỹ thuật điển hình là Patchwork và mã hóa kết cấu khối. Patchwork nhúng một bit đơn vào ảnh với một giá trị tin cậy cao dựa trên phân phối Gaussian. Mã hóa kết cấu khối dựa trên các vùng đồng nhất trên ảnh.
2.3.2.2.1.1 Patchwork- cách tiếp cận thống kê:
Patchwork là một hướng tiếp cận theo phương pháp thống kê, dựa trên các dãy số giả ngẫu nhiên[15]. Patchwork nhúng vào ảnh chứa một số thống kê đặc thù, chứa một hàm phân phối Gaussian sao cho mắt người không thể nhận ra.
Hình 3.1 mô tả một phương pháp Patchwork dùng một vòng lặp đơn. Hai mảnh A, B được chọn ngẫu nhiên, mảnh A có màu sáng trong khi mảnh B có màu tối.
Một số liệu thống kê duy nhất sẽ cho biết dấu hiệu có xuất hiện hay không. Patchwork có đặc điểm là không phụ thuộc vào nội dung của ảnh chứa và kỹ thuật này có khả năng tránh được các biến đổi phi hình học.
Để minh họa, ảnh chứa trong ví dụ này có mức sáng 256, hệ thống lượng
tử tuyến tính sẽ bắt đầu từ 0 và tất cả các mẫu không phụ thuộc vào các mẫu
khác, hay nói chính xác hơn là các mẫu độc lập với nhau.
Hình 4. Vòng lặp đơn trong thuật giải Patchwork
Nguyên lý thuật giải:
Sử dụng lý thuyết thống kê, hàm phân phối Gaussian để mã hóa.
Chọn một khóa để tạo một dãy số ngẫu nhiên.
Dựa vào các số trên dãy số ngẫu nhiên, chọn ra mỗi lần hai mảnh trên
ảnh chứa, một mảnh có giá trị sáng (A-ai) và một mảnh có giá trị tối hơn (B-bi).
Trừ vào ai một lượng δ và cộng vào bi một lượng δ . Đối với mức sáng
256 thì δ có giá trị từ 1 đến 5.
Lặp lại quá trình n lần (thông thường n ≈10000).
Sử dụng hàm phân phối Gaussian để tính S với độ tin cậy tốt. Nếu S dương thì giá trị mã hóa là 1, nếu S âm thì mã hóa 0. Sau đây là bảng số liệu mô tả mối quan hệ giữa n và độ tin cậy, với δ = 2 :
STT
Độ tin cậy
n
0
50.00%
0
1
84.13%
679
2
97.87%
2713
3
99.87%
6104
Bảng 1 Mối quan hệ giữa n và độ tin cậy
Vì n hoặc δ tăng, nên đồ thị hàm phân bố của S ′n dịch chuyển qua phải. Sau đây là một số cải tiến của phương pháp Patchwork:
Các mảnh bao gồm nhiều pixel tốt hơn các mảnh chỉ có một pixel.
Kết hợp với mã affine hay các thông tin heuristic dựa trên đặc điểm nhận biết sẽ làm phương pháp này mạnh hơn. Mã hóa Patchwork nhạy với các phép biến đổi affine, nếu các điểm trên ảnh chứa bị dịch chuyển bới các phép tịnh tiến hay biến đổi tỉ lệ thì dữ liệu nhúng sẽ bị mất.
Patchwork có khả năng chống lại các thao tác xén ảnh, nếu các mảnh không nằm trong phạm vi bị xén thì dữ liệu nhúng vẫn giữ nguyên.
Hình dáng của mảnh:
Hình 3.2 mô tả ba loại hình dáng mảnh và sự phân bố tương ứng với mảnh đó. Hình 3.2 a) mảnh nhỏ, cạnh sắc, kết quả là phần lớn năng lượng của mảnh tập trung ở phần tần số cao của mảnh: dễ bị mất dữ liệu khi qua thao tác nén mất dữ liệu. Hình 3.2 b) thì năng lượng tập trung ở phần tần số thấp. Hình 3.2.c) phân phối năng lượng đều ở phần tần số cao và tần số thấp.
HÌnh 5 Hình dáng các mảnh
Lựa chọn hình dáng mảnh tối ưu nhất phụ thuộc vào từng loại ảnh và các thao tác trên ảnh. Nếu ảnh chứa có định dạng là JPEG thì mảnh có dạng như hình 3.2b) là tối ưu nhất vì năng lượng phân bố tại phần tần số thấp. Nếu trên ảnh chứa có thao tác tăng độ tương phản thì mảnh như hình 3.2a) là tốt nhất. Nếu trong trường hợp không biết các thao tác trên ảnh thì chọn mảnh như hình 3.2c) là tốt nhất.
Sự sắp xếp các mảnh cũng ảnh hưởng đến hiệu quả của phương pháp. Hình 3.3 mô tả ba phương pháp sắp xếp mảnh. Hình 11a) là sắp xếp theo dạng lưới thẳng, phương pháp này ít được sử dụng khi n lớn vì HSV rất nhạy với dạng này. Hình 3.3b) là sắp xếp theo dạng lục giác đều. Hình 3.3c) là sắp xếp theo ngẫu nhiên.
Hình 6. Sự sắp xếp các mảnh
Phương pháp Patchwork có vài giới hạn: thứ nhất là tỉ lệ dữ liệu mã hóa thấp, chỉ phù hợp cho các ứng dụng mã hóa với tỉ lệ dữ liệu thấp, thứ hai là các pixel trong ảnh chứa phải được ghi nhớ và không được di chuyển.
2.3.2.2.1.2 Mã hóa kết cấu khối (texture block coding)-Cách tiếp cận trực quan:
Phương pháp này ẩn dữ liệu trong những mẫu kết cấu ảnh ngẫu nhiên và liên tiếp. Kỹ thuật này được thực hiện bằng cách sao chép một vùng ảnh từ một mẫu kết cấu ngẫu nhiên trên ảnh đến một vùng khác có kết cấu tương tự.
Hình 7. Một ví dụ về phương pháp mã hóa kết cấu khối
Quá trình giải mã:
Tự động đặt hai ảnh tương quan chồng lên nhau (ảnh gốc và ảnh sau khi nhúng dữ liệu). Việc này sẽ làm hiện ra các đỉnh mà ở đó có các vùng chồng chéo lên nhau.
Dịch chuyển ảnh. Sau đó trừ giá trị ảnh gốc với ảnh sao chép của nó.
Gán giá trị 0 cho mép bìa ảnh nếu cần thiết.
Điều chỉnh kết quả và giới hạn nó để nó chỉ gồm những giá trị gần 0.
Ảnh chứa dữ liệu sẽ thấy được các giá trị đó.
Nếu ảnh chứa dữ liệu ẩn bị thao tác bằng các phép biến đổi thì cả hai vùng sẽ bị thay đổi như nhau vì chúng là hai vùng đồng nhất có kết cấu giống nhau.
Nếu chọn lựa vùng có kích thước hợp lý, phần bên trong của khối thay đổi như nhau qua hầu hết các phép biến đổi phi hình học.
Mã hóa kết cấu khối không phải là không có bất lợi. Hiện nay, kỹ thuật này cần có các thao tác của con người để chọn lựa vùng nguồn và vùng đích có kích thước thích hợp và ước lượng ảnh hưởng trực quan của các biến đổi trên ảnh. Thật ra có thể tự động hóa quá trình này bằng cách sử dụng một máy tính nhận dạng kết cấu các vùng sao chép và dán lên ảnh. Tuy nhiên, kỹ thuật này không có tác dụng với ảnh thiếu vùng có kích thước kết cấu vừa phải và kết cấu liên tiếp.
2.3.2.2 .2 Mã hóa với dữ liệu bit cao – Mã hóa affine:
Mã hóa dữ liệu với tỉ lệ bit cao có thể có rất ít tác động lên ảnh chứa, nhưng nó không có khuynh hướng tránh được các biến đổi trên ảnh chứa. Hình thức thông thường nhất là thay thế bit thấp nhất của độ chói bằng dữ liệu nhúng.
Không có một kỹ thuật đã biết nào tránh được tất cả các phép biến đổi hay tổ hợp các phép biến đổi. Đối với tổ hợp các phép biến đổi, thường người ta sử dụng thêm một kỹ thuật khác để hỗ trợ. Kỹ thuật hỗ trợ này rất quan trọng đối với các phép biến đổi affine, và nó giữ lại sự đồng bộ cho luồng dữ liệu mã hóa.
Sau đây là hai phương pháp của Yu –Yuan Chen , Hsiang – Kuang Pan và Yu – Chee Tseng ở khoa Khoa học máy tính trường Đại học Trung tâm quốc gia Đài Loan. Hai phương pháp này nhúng dữ liệu bằng cách thay thế các bit trong dữ liệu ảnh, chúng không tránh được các phép biến đổi affine, nhưng số lượng dữ liệu được nhúng lớn và khả năng một người thứ ba giải mã được là rất khó, tuy nhiên cả hai phương pháp đều sử dụng ảnh nhị phân làm đối tượng nhúng.
2.3.2.2 .2.1 Phương pháp nhúng dữ liệu vào các khối, mỗi khối chứa tối đa một bit dữ liệu:
Phương pháp này nhúng dữ liệu bằng cách chia ảnh ra thành các khối kích thước bằng nhau, mỗi khối được nhúng tối đa một bit dữ liệu. Dữ liệu của mỗi khối là các bit LSB của từng pixel trong ảnh.
Ký hiệu:
Với B1 và B2 là hai ma trận cùng kích thước:
B: ma trận 0,1 .
B1Ù B2: AND từng phần tử tại vị trí i,j của B1 với từng phần tử i,j tương ứng của B2.
[B]i,j : phần tử của B tại vị trí hàng i, cột j.
SUM ( B ): tổng tất cả các thành phần trong B.
F: ma trận điểm ảnh, là ma trận sẽ chứa dữ liệu được nhúng. Có kích thước là bội số các khối m × n .
K: ma trận 0,1 có kích thước m × n, còn gọi là ma trận khóa.
Thuật giải:
Nguyên lý: thay đổi giá trị trong các Fi thành Fi ¢ sao cho:
SUM ( Fi ¢Ù K ) mod 2 = b
Với b là bit cần nhúng.
Bước 1:
Chia F thành nhiều khối, mỗi khối có kích thước m´ n.
Bước 2:
Với mỗi khối Fi nhận được, xét điều kiện:
0 < SUM ( Fi Ù K ) < SUM|(K)
- Nếu TRUE: nhảy đến bước 3 để nhúng 1 bit vào Fi.
- Nếu FALSE: trong khối Fi sẽ không có dữ liệu được nhúng.
Bước 3:
Giả sử bit cần được nhúng là b.
(a) If ( SUM ( Fi Ù K ) mode 2 =b ) then
Giữ nguyên Fi.
(b) Else if SUM ( Fi Ù K ) = SUM ( K ) - 1 then
Chọn ngẫu nhiên một bit [Fi]j,k =0 với [K]j,k =1 và đổi [Fi]j,k =1.
c) Else if SUM ( Fi Ù K ) =1 - then
Chọn ngẫu nhiên một bit [Fi]j,k =1 với [K]j,k =1 và đổi [Fi]j,k = 0.
(d) Else
Chọn ngẫu nhiên một bit [Fi]j,k với [K]j,k =1 và lấy phần bù của
[Fi]j,k.
End if.
Cơ sở toán học:
Sau khi thực hiện các bước ta được các i F¢, là các khối Fi sau khi bị thay
đổi.
Với điều kiện:0<SUM(FiÙK)<SUM(K)thì b mới được nhúng vào Fi
Þ 0 < SUM ( Fi ¢Ù K ) < SUM ( K ) (3.3)
Gọi , [ Fi ] j ,k ¢ là phần bù của , [ Fi ] j ,k , thì ([ Fi ] j ,k ¢Ù K j ,k ) là phần bù của
([ Fi ] j , k Ù K j ,k ) với Kj,k =1
Và SUM ( Fi ¢Ù K ) = SUM ( F Ù K ) ± 1 .Dấu + xảy ra trong trường hợp
[ Fi ] j ,k =0, dấu – xảy ra trong trường hợp , [ Fi ] j ,k = 1
Biểu thức liên quan:
0 < SUM ( Fi ¢Ù K ) < SUM ( K ) Þ SUM ( Fi ¢Ù K ) º b mod 2
hay:
SUM ( Fi ¢Ù K ) mod 2 = b
Đặt c = SUM ( Fi Ù K ) . Ta có 4 trường hợp tương quan giữa c và b xảy ra:
TH1: c=0, b=0;
TH2: c=1,b=1;
TH3: c=1,b=0;
TH4: c=0,b=1.
Xét TH1 và TH2, b =c nên c = SUM ( Fi Ù K ) mod 2 = b Þ Fi ¢= Fi ứng với trường hợp (a).
Xét TH3,TH4: c=!b nên cần biến đổi [ Fi ] j ,k :
.
[ Fi ] j , k \ SUM ( Fi ¢Ù K ) = SUM ( Fi Ù K ) ± 1
Þ [ Fi ] j , k ¢ phải là phần bù của [ Fi ] j ,k .
Xét 3 giá trị của SUM ( Fi Ù K ) :
SUM ( Fi Ù K ) = 1 :thì SUM ( Fi ¢ K ) = SUM ( Fi Ù K ) + 1 ,Ù, phải tăng SUM ( Fi Ù K )
thêm một giá trị để thỏa điều kiện (3.2).
Nên ta chọn ngẫu nhiên một i [Fi ] j,k = 0 với K j ,k = 1 và thay đổi [ Fi ] j ,k = 1 .
SUM ( Fi Ù K ) = SUM ( K ) - 1 : SUM ( Fi ¢ K ) = SUM ( Fi Ù K ) - 1 , phải giảm SUM ( Fi Ù K ) đi một giá trị để thỏa điều kiện (3.2). Nên chọn ngẫu nhiên một [ Fi ] j ,k = 1 với K j ,k = 1 và thay đổi [ Fi ] j , k = 0 .
Với các giá trị còn lại của SUM ( Fi Ù K ) nếu tăng hay giảm SUM ( Fi Ù K ) một giá trị thì vẫn thỏa điều kiện (3.2). Chọn ngẫu nhiên một [ Fi ] j ,k với K j ,k = 1và , [ Fi ] j ,k ¢ là phần bù của [ Fi ] j ,k .
Ví dụ: Hình 3.5.
F: ma trận 6 × 6.
K: ma trận 3 × 3.
Chia F thành F1, F2, F3, F4 mỗi Fi có kích thước 3 × 3.
Xét 1 SUM ( F1 Ù K ) = SUM ( K ) = 5 : không có bit nào được nhúng vào F1 ,F1¢ ºF1 .
Xét SUM ( F2 Ù K ) = 3 thỏa (3.1), b1 = 0 thỏa (b), lấy ngẫu nhiên [F2]2,3= 0 với K2,3 =1 và đổi [ F2 ]2,3 = 1 = [ F2 ]2,3¢.
Xét SUM ( F3 Ù K ) = 3 thỏa (3.1), b2=1 thỏa (a) nên giữ nguyên F3.
Xét SUM ( F4 Ù K ) = 4 thỏa (3.1), và SUM ( F4 Ù K ) = SUM ( K ) - 1 thỏa (c), lấy ngẫu nhiên [F2]2,3 = 1 với K2,3 =1 và đổi 2 2,3 2 2,3 [F] =0=[F] ¢.
Hình 8. Nhúng 3 bit vào ảnh 6 x 6
Đánh giá thuật giải:
Do sử dụng toán tử logic AND nên: SUM ( Fi Ù K ) không bao giờ vượt quá SUM (K).
So sánh giữa F và F ¢ tại những vị trí hàng i, cột j tương ứng, nếu hai giá trị khác nhau thì tại đó Ki,j =1 và ngược lại Ki,j =0. Như vậy, khi so sánh tất cả các hần tử của F và F¢ thì ta có thể suy ra toàn bộ ma trận K, K không còn là bí mật nữa.
Nếu K có nhiều giá trị 1 thì sự khác nhau giữa F và F¢ gia tăng, gây nên sự nghi ngờ có chứa dữ liệu. Nhưng nếu K có nhiều giá trị 0 thì thuật giải cũng không hoàn toàn khả thi.
Nếu F có tất cả các giá trị hoàn toàn là 1 thì khả năng nghi nghờ chứa dữ liệu gia tăng và suy luận ra K dễ dàng. Nhưng nếu F có nhiều giá trị 0 thì tỉ lệ ẩn dữ liệu không cao.
Tóm lại, việc chọn K và F phù hợp là điều quan trọng. Phương pháp mã hoá dữ liệu này không an toàn cao, số lượng dữ liệu được chứa không nhiều.
2.3.2.2 .2.2 Phương pháp nhúng dữ liệu vào các khối, mỗi khối chứa tối đa hai bit dữ liệu:
Phương pháp này là phương pháp cải tiến phương pháp trên. Nó bảo đảm tỉ lệ ẩn của dữ liệu cao hơn, do dùng một ma trận trọng lượng W. Phương pháp này cũng dựa trên phép toán mod và toán tử logic Å . Ở mỗi khối m´ n, sẽ có r bit được nhúng với 2r- 1£ mn , nhưng chỉ làm thay đổi tối đa 2 bit trên ma trận chứa.
Ký hiệu:
F: ma trận điểm ảnh, sẽ chứa dữ liệu được nhúng, giả sử là F được chia thành k khối Fi có kích thước m´ n. Sau các bước thực hiện, F sẽ bị thay đổi thành ma trận F¢.
K: ma trận khóa. Nó là một ma trận m´ n, được chọn ngẫu nhiên phù hợp theo từng trường hợp. Các giá trị trong K là 0 hoặc 1.
W: ma trận trọng lượng m´ n, với [W]i,j ∈ {1.. 2r –1}. Cách sắp xếp các giá trị được chọn ngẫu nhiên.
r: số lượng bit được nhúng vào một khối m´ n, r thỏa2r- 1£ mn .
B: các thông tin được nhúng, B gồm kr bit, k là số lượng khối của F.
A1, A2 là hai ma trận m´ n, toán tử A1 ⊗ A2 là toán tử mà " i,j i=1...m,
j=1..n thì 1 , 2 , [ A1 ]i , j ´ [ A2 ]i , j ..
Ma trận trọng lượng:
Ma trận trọng lượng W m´ n thỏa các điều kiện sau:
2r- 1£ mn . (3.4)
Các phần tử [W]i,j Î {1.. 2r –1}. (3.5)
" k Î {1… 2r –1}, k phải xuất hiện ít nhất một lần trong W. (3.6).
Ma trận W được chọn ngẫu nhiên thỏa điều kiện và theo từng trường hợp.
Với m hàng n cột, W có thể có các lựa chọn sau:
Có 2r –1 giá trị, vì thế để chọn giá trị cho mn phần tử có: 2r 1Cmn-
Ta có thể sắp xếp ngẫu nhiên các giá trị: (2r –1)! cách.
Với mn - 2r –1 giá trị còn lại có thể sắp xếp ngẫu nhiên: (2r−1)mn−(2r−1)
Vậy: số lần chọn lựa W : C2mn 1 *(2r - 1)!*(2r - 1) mn- 2 – 1
Ví dụ:m = n = 8 và r = 5. Ta có C64 31!*3133 cách chọn W.
Vì thế tỉ lệ bảo mật thông tin rất cao nếu W không được công bố.
Vì phương pháp này dùng toán tử mod: b1b2 ...br = SUM (( Fi Å K ) Ä W ) mod 2 .
và 0 £ SUM (( Fi Å K ) Ä W ) < 2r - 1 nên W phải thỏa điều kiện 3 điều kiện trên.
Nếu 2r –1> mn thì
$ k Î { r - 1}\ k ¹ [W ]i , j " i Î { m}, j Î { n}
1...21...1...
⇒ (3.6) sai.
Thuật giải:
Fi sẽ được chuyển thành i F¢ bằng cách lấy phần bù của một giá trị nào đó trong Fi để thỏa công thức sau:
SUM (( Fi ¢Å K ) Ä W ) º b1b2 ...br (mod 2r )
Û SUM (( Fi ¢Å K ) Ä W ) mod 2r = b1b2 ...br
Bước 1:
Chia F thành các khối Fi kích thước m × n.
Tính Fi ⊕ K.
Bước 2:
Tính SUM (( Fi Å K ) Ä W ) .
.
Bước 3:
Với w={1…2r-1}. Từ ma trận kết quả Fi ⊕ K, tính:
S w = { j , k ) \ ([W ] j ,k = w Ù[ Fi Å K ] j ,k = 0) Ú ([W ] j ,k = 2r - w Ù[ Fi Å K ] j ,k = 1)} (3.8)
Theo (3.8), Sw là tập hợp các bộ (j,k) sao cho nếu lấy phần bù của [Fi]j,k thì SUM (( Fi Å K ) Ä W ) sẽ tăng thêm w . Có hai trường hợp:
[W ] j ,k = w Ù[ Fi Å K ] j ,k = 0 :
Ta thấy nếu lấy phần bù [ Fi ] j ,k Þ [ Fi Å K ] j ,k = 1 Þ SUM ( Fi Å K ) Ä W tăng thêm w.
[W ] j ,k = 2r - w Ù[ Fi Å K ] j ,k = 1 :
Nếu lấy phần bù của , [ Fi ] j ,k Þ SUM (( Fi Å K ) Ä W ) giảm đi 2r-w, Û tăng wkhi lấy SUM (( Fi Å K ) Ä W ) mod 2 .
Bước 4:
Ta có công thức:
d º (b1b2 ...br ) - SUM (( Fi Å K ) Ä W )(mod 2r ) (3.9)
Đây là biểu thức chênh lệch giữa tổng và giá trị được nhúng, để giải mã
theo công thức (3.8) ta phải tăng tổng thêm một giá trị d.
Đặt S w = S w¢ với w º w¢mod 2r .
Khi d=0 không cần thay đổi Fi.
Nếu d ≠ 0, thực hiện các bước sau:
Chọn ngẫu nhiên một h Î {0,1…,2r-1} với điều kiện Shd ¹ Æ và S-(h-1)d ≠Æ.
Chọn ngẫu nhiên một bộ (j,k) Î Shd và lấy phần bù của [Fi]j,k.
Chọn ngẫu nhiên một bộ (j,k) Î S-(h-1)d và lấy phần bù của [Fi]j,k.
Để tăng tổng thêm một lượng d, ta dùng hai tập khác rỗng Shd và S-(h-1)d.
Tổng sẽ tăng thêm hd + (- (h-1)d) = d. Tuy nhiên ta phải gán giá trị cho các tập
S0, S2.r, S2.2r, S3.2r… luôn rỗng.
Cơ sở toán học:
Bổ đề 1:
Với w=1…2r-1 và w ¹ ≠ 2r-1 thì mệnh đề sau đây đúng:
( S w = Æ) Þ ( S 2r - w ¹ Æ)
Chứng minh: Giả sử Sw = Æ
Theo điều kiện của W, phải có tối thiểu một [W]j,k = w. Nếu
[Fi]j ,k ∧ [K]j ,k = 0 thì lấy phần bù của [Fi]j,k sẽ làm tăng tổng thêm w , như vậy
Sw ≠ ∅ . Như vậy [ Fi ] j ,k Ù[ K ] j ,k = 1 , thì khi lấy phần bù [Fi]j,k sẽ làm giảm tổng đi w, hay tăng tổng lên 2r-w (mod 2r), như vậy tập S 2 - w ¹ Æ , với w ¹ 2r-1 vì w=2r-w lúc đó S2 - w ¹ Æ .
Bổ đề 2:
S 2r- 1 ¹ Æ
Chứng minh:
Theo điều kiện của W, phải có tối thiểu một [W]j,k = 2r-1. Vì 2r- 1 º - 2r- 1 mod 2r .
Nếu [W ] j ,k = w Ù[ Fi Å K ] j ,k = 0 thì khi lấy phần bù của [Fi]j,k thì tổng tăng thêm 2r
Các file đính kèm theo tài liệu này:
- Cong nghe giau tin hieu.doc