Tìm hiểu về giấu tin trong ảnh số Hiện nay, giấu thông tin trong ảnh là một bộ phận 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 được trao đổi bằng ảnh là rất lớn và hơn nữa giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng trong các 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...
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ KHOA: CÔNG NGHỆ THÔNG TIN DƯ CÔNG THÀNH Tìm hiểu về giấu tin trong ảnh số Môn học: Mật mã và an toàn dữ liệu Ngành: Hệ thống thông tin Cán bộ hướng dẫn: PGS. TS. Trịnh Nhật Tiến MỤC LỤC 1. Giới thiệu chung Hiện nay, giấu thông tin trong ảnh là một bộ phận 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 được trao đổi bằng ảnh là rất lớn và hơn nữa giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng trong các 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 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. Và 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 nhiều những ứng dụng quan trọng trên các 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. Hay trong một số những ứng dụng về nhận diện như thẻ chứng minh, thẻ căn cước, hộ chiếu…người ta có thể giấu thông tin trên các ảnh thẻ để xác định thông tin thực. Ví dụ như hình vẽ bên là một thẻ chứng minh đã được giấu tin trong ảnh. Thông tin giấu là số thẻ trùng với số đã được in rõ ở trên thẻ 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 nữa đó là thông tin được giấu một cách vô hình. Nó như là cách 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. 2. Các đặc trưng của giấu thông tin trong ảnh Như đã nói ở trên nhúng thông tin trong ảnh có hai khái niệm khác nhau đó là thuỷ vân số ( digital watermarking ) và giấu thông tin mật trong ảnh (stegnography). Trong khi thuỷ phân số không yêu cầu thông tin giấu phải vô hình và chịu được các thao tác biến đổi trên ảnh thì giấu thông tin trong ảnh yêu cầu các thông tin giấu phải ẩn không bị phát hiện và lượng thông tin giấu càng lớn càng tốt (capacity of hidden message). Hai phương pháp này có những đặc điểm khác nhau, cách thực hiện khác nhau nhưng trong báo cáo này là giấu tin trong ảnh nên chỉ đề cập tới các đặc trưng chính của giấu thông tin trong ảnh. Giấu tin trong ảnh tác động lên dữ liệu ảnh nhưng không thay đổi kích thước ảnh. Các phép toán thực hiện công việc giấu tin sẽ được thực hiện trên dữ liệu của trên ảnh. Dữ liệu ảnh bao gồm các phần header, bảng phân màu và dữ liệu ảnh. Khi giấu thông tin, các phương pháp đều biến đổi giá trị của các bit trong dữ liệu ảnh chứ không chứ không thêm vào hay bớt đi dữ liệu ảnh. Do vậy mà kích thước ảnh trước hay sau khi giấu thông tin là như nhau. Đảm bảo yêu cầu chất lượng ảnh sau khi giấu thông tin. Đây là một yêu cầu quan trọng đối với giấu thông tin trong ảnh. Sau khi giấu thông tin bên trong, ảnh phải đảm bảo được yêu cầu không bị biến đổi để có thể bị phát hiện dễ dàng so với ảnh gốc. Yêu cầu này giường như quá đơn giản đối với ảnh màu và ảnh xám bởi mỗi pixel ảnh được biểu diễn bởi nhiều bit, nhiều giá trị và khi ta thay đổi một giá trị nhỏ nào đó chất lượng ảnh không thay đổi, thông tin giấu khó bị phát hiện, nhưng đối với ảnh đen trắng thì việc giấu thông tin phức tạp hơn nhiều, vì ảnh đen trắng mỗi pixel ảnh chỉ có hai giá trị đen hoặc trắng, và nếu ta biến đổi một bit từ đen thành trắng mà không khéo thì sẽ rất bị phát hiện. Do đó yêu cầu với các kỹ thuật giấu tin trong ảnh màu hay ảnh xám và giấu thông tin trong ảnh đen trắng là khác nhau. Trong khi đối với ảnh màu thì các thuật toán chú trọng vào việc làm sao cho giấu dược càng nhiều thông tin càng tốt thì các thuật toán áp dụng cho ảnh đen trắng lại tập trung vào làm thế nào để thông tin giấu khó bị phát hiện. Thông tin trong ảnh sẽ bị biến đổi nếu có bất kỳ một biến đổi nào trên ảnh. Vì phương pháp giấu ảnh dựa trên việc điều chỉnh các giá trị của các khối bit theo một quy tắc nào đó và khi giải mã sẽ theo các giá trị đó để tìm được thông tin giấu. Theo đó, nếu một phép biến đổi nào đó trên ảnh sẽ làm thay đổi giá trị của các bit thì sẽ làm thông tin sai lệch. Chính đặc điểm này mà giấu thông tin trong ảnh có tác dụng nhận thực và phát hiện xuyên tạc thông tin. f Không cần ảnh gốc khi giải mã ảnh Thông tin được giấu trong ảnh sẽ được mang cùng dữ liệu ảnh, khi giải mã chỉ cần ảnh đã mang thông tin mà không cần dùng đến ảnh gốc để so sánh đối chiếu. 3. Các thuật toán giấu tin trong ảnh Bài toán: Giả sử ta có đề thi quan trọng B cần gửi qua mạng. Người ta dùng một ảnh môi trường F đủ lớn để giấu đề thi, sau đó gửi đi bức ảnh đã chứa thông tin đề thi mà không sợ bị nghi ngờ về sự tồn tại thông tin trong đó. Sử dụng một kỹ thuật giấu tin trong ảnh (chọn khoá bí mật K và có thể kết hợp với ma trận trọng số) ta biến đổi ảnh F thành ảnh F’ có mang lượng tin trên mà không làm cho F’ sai khác nhiều so với F. Để thu được thông tin đề thi B đã giấu, chỉ cần có ảnh kết quả và các khoá mà không cần đến ảnh môi trường. Kí hiệu: F: Ảnh môi trường được dùng để mang dữ liệu B, được chia thành từng khối Fi kích thước m*n. K: Dùng chung bởi người gửi và người nhận (nếu K là ma trận khoá thì có kích thước m*n là ma trận chỉ gồm 0 và 1). W: Ma trận trọng số cấp r, kích thước m*n cũng được dùng chung bởi người gửi và người nhận. r: Số lượng bit được giấu trong mỗi khối ảnh kích thước m*n của F, r phải thoả mãn bất đẳng thức: 2r-1≤ m*n. B: k*r bít dữ liệu cần giấu, được tách thành k chuỗi r bit. 3.1 Thuật toán giấu tin của Wu - Lee (WL) Thuật toán Ta xem một bức ảnh chính nhi phân F, khoá K là một ma trận ảnh kích thước m x n và một số bit cần giấu. Để đơn giản ta xem kích thước của ảnh F là bội số của m x n. Việc giấu bằng cách thay đổi một số bit của F. Mã hóa: Bước 1: Chia F thành những khối Fi, mỗi khối có kích thước m x n. Tính S = Sum(F i ⊗K), S k = SUM(K) Bước 2: Với mỗi khối F i , kiểm tra điều kiện 0 < S < S k thì cho phép giấu tin F i . Nếu không thoả mãn điều kiện thì không giấu vào F i . Bước 3: Xem bit muốn giấu vào khối F i là b, sau đó thực hiện các bước sau để thay đổi F i TH1: Nếu (S mod 2=b) thì không thay đổi F i . TH2: Nếu ( S mod 2!=0) thì sẽ thay đổi một phần tử (h, g) trên F i từ 1=>0 hoặc từ 0=>1 tại K(h, g) ==1. Khi đó xét 3 khả năng sau: a ) Nếu S=1 tìm phần tử (h, g) thoả mãn K[h, g] = 1 và Fi [h, g] = 0 và thay Fi [h, g] = 1. b) Nếu S = S k -1 tìm (h,g) thoả mãn K[h,g] =1 và F i [h,g] =1 và gán F i [h,g]= 0; c) Nếu 2 <= S < S k – 1 thì chọn ngẫu nhiên (h,g) thoả mãn K[h,g] = 1 và đảo bit F i [h,g] có nghĩa giá trị của F i [h,g] sẽ từ 0=>1 hoặc 1=>0. Ví dụ: Chuỗi bit cần giấu là 010 F 1 1 1 1 0 0 0 0 1 F 3 F 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 F 4 Kh óa K 1 1 1 0 0 0 0 1 F 3 ’ F 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 F 4 ’ F là một ma trận khối ảnh có kích thước 8 x 8 và K là một ma trận ảnh có kích thước là 4 x 4. Trước tiên ta chia F thành 4 khối F 1 , F 2 , F 3 , F 4 . Vì Sum(F1⊗ K) = 1 nên ta chọn K[2,2] = 1 và F1[2,2] = 0 và đổi F1[2,2] = 1. Vì Sum (F2⊗K ) = Sk – 1 nên ta chọn K[3,3] = 1 và F2[3,3] = 1 và đổi F2[3,3] = 0. Vì Sum(F3⊗K )=4 nên ta chọn K[3,4]= 1 và đổi F3[3,4]=0. Giải mã: Phương pháp trên cho phép giấu nhiều nhất 1 dữ liệu trong một khối. Giả sử F(i) được biến đổi thành Fi’ thì ta có bất biến sau: I1: 0< sum(Fi ⊗K)<sum(K)->sum(Fi ⊗K)= b mod 2 Khi người thu xác định được 0 < sum(Fi ⊗K) < sum(K) thì họ sẽ tìm ra được bit đã giấu b: b= sum(Fi ‘⊗K) mod 2. Ví dụ : Chuỗi các bit cần giấu là: 010 F 1 1 1 0 0 0 0 F 3 F 2 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 F 4 0 1 1 0 1 0 0 0 1 1 1 1 Khóa K 1 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 F 3 ’ 0 0 0 1 1 0 1 1 F 4 ’ F là một khối ảnh có kích thước 6 x 6 và K là một ảnh có kích thước 3 x 3. trước tiên ta chia F thành 4 khối F 1 , F 2 , F 3 , F 4 . Vì Sum(F 1 ⊗ K) = Sum (K) =5. Do đó khối F 1 không giấu dữ liệu. Vì Sum (F2⊗K )= Sum(K)=3, một bít dữ liệu sẽ được giấu vào trong F. Vì bit đầu tiên cần giấu là bit 0, F2 đổi thành F2’ để đảm bảo thoả mãn biểu thức trên. Vì Sum (F3⊗K )= Sum(K)=3, một bít dữ liệu sẽ được giấu vào trong F. Vì bit tiếp theo cần giấu là bit 1, F3 được giữ nguyên. Tương tự F4 bị thay đổi để giấu bit 1. Đặc điểm của thuật toán: - Giải mã nhanh. - Độ phức tạp được nâng cao hơn so với hai thuật toán trên. Tính đúng đắn của thuật toán Người ta chứng minh tính đúng đắn của thuật toán bằng cách dựa trên chính văn bản của thuật toán. 3.2 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 : [...]... chính: setLevel (min:0 – max: 10.000) getLevel Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 20 1.2 Các dạng tài nguyên hình ảnh Scale: ● Tài nguyên hình ảnh cho phép thực hiện phóng to hoặc thu n hỏ một đối tượng hình ảnh theo thông số tỉ lệ cho trước, có thể thay đổi thông số tỉ lệ trong quá trình hoạt động ● Các thuộc tính bao gồm: drawable – resource scaleGravity – integer... chiếu biên dịch tài nguyên thông qua đối tượng InsetDr awable Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 19 1.2 Các dạng tài nguyên hình ảnh Clip: ● Tài nguyên hình ảnh cho phép thực hiện cắt một đối tượng hì nh ảnh theo thông số vị trí cho trước, có thể thay đổi thông số cắt tro ng quá trình hoạt động ● Tham chiếu biên dịch tài nguyên thông qua đối tượng ClipDr awable ● Các... android:radius="20dp"/> Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 14 1.2 Các dạng tài nguyên hình ảnh LayerList: ● Tài nguyên hình ảnh cho phép quản lý mảng các đối tượng h ình ảnh được vẽ chồng lên nhau, mỗi đối tượng hình ảnh được qui ư ớc là một item ● Mỗi item bao gồm: drawable – resource Id – resource id top - integer right... focused ● Tham chiếu biên dịch tài nguyên thông qua đối tượng StateListDrawable Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 16 1.2 Các dạng tài nguyên hình ảnh LevelList: ● Tài nguyên hình ảnh cho phép quản lý mảng các đối tượng h ình ảnh, mỗi đối tượng hình ảnh được qui ước là một item, hiển thị ản h theo cấp độ tương ứng đã khai báo ● Một item bao gồm: drawable – resource maxLevel... Tài nguyên hình ảnh và giao diện 21 1.2 Các dạng tài nguyên hình ảnh NinePatch: ● Tài nguyên hình ảnh cho phép thực hiện tạo đối tượng hình ảnh (PNG) có kích thước co dãn theo tỉ lệ đối tượng thể hiện ● Các thuộc tính bao gồm: src– resource dither– integer ● Tham chiếu biên dịch tài nguyên thông qua đối tượng NinePatchDrawable Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện... Tham chiếu biên dịch tài nguyên thông qua đối tượng LevelListDrawable Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 17 1.2 Các dạng tài nguyên hình ảnh Transition: ● Tài nguyên hình ảnh cho phép thực hiện chuyển đổi (hiệu ứn g “biến bóng”) giữa hai đối tượng hình ảnh ● Mỗi item bao gồm: drawable – resource Id – resource id top - integer right - integer bottom - integer... integer ● Các phương thức xử lý chính: startTransition reverserTransition resetTransition Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 18 1.2 Các dạng tài nguyên hình ảnh Inset: ● Tài nguyên hình ảnh cho phép thực hiện lồng đối tượng hình ảnh theo một ví trí cho trước ● Các thuộc tính bao gồm: drawable – resource insetTop - integer insetRight - integer insetBottom - integer... nguyên hình ảnh và giao diện 9 1.2 Các dạng tài nguyên hình ảnh Shape: ● Sử dụng các thuộc tính để cấu tạo đối tượng: Corners (Rectangle) - Integer radius topLeftRadius topRightRadius bottomLeftRadius bottomRadius Padding (Rectangle) – Integer left top right bottom Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 10 1.2 Các dạng tài nguyên hình ảnh Shape:... integer left - integer ● Tham chiếu biên dịch tài nguyên thông qua đối tượng LayerDrawable Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 15 1.2 Các dạng tài nguyên hình ảnh State List: ● Tài nguyên hình ảnh cho phép quản lý mảng các đối tượng h ình ảnh được vẽ theo trạng thái của đối tượng thể hiện ● Một item bao gồm: drawable – resource Tập các trạng thái có thể có: ... nguyên hình ảnh và giao diện 11 1.2 Các dạng tài nguyên hình ảnh Shape: ● Sử dụng các thuộc tính để cấu tạo đối tượng: Size – integer width – integer height – integer Solid – integer color – color Stroke – integer width - integer color – color dashWith – integer dashGap - integer Lập trình Android (2014) – Bài 6 Tài nguyên hình ảnh và giao diện 12 1.2 Các dạng tài nguyên hình ảnh . nhưng trong báo cáo này là giấu tin trong ảnh nên chỉ đề cập tới các đặc trưng chính của giấu thông tin trong ảnh. Giấu tin trong ảnh tác động lên dữ liệu ảnh nhưng không thay đổi kích thước ảnh. . cụ thể hơn là giấu thông tin trong ảnh số và cũng trình bày một thuật toán giấu tin trong ảnh đen trắng, trên cơ sở đó phát triển thuật toán cho việc giấu tin trong ảnh màu và ảnh đa cấp xám. Với. giấu tin trong ảnh màu hay ảnh xám và giấu thông tin trong ảnh đen trắng là khác nhau. Trong khi đối với ảnh màu thì các thuật toán chú trọng vào việc làm sao cho giấu dược càng nhiều thông tin