12/08/2018, 11:02

Tổng quan về giấu tin trong ảnh (phần I)

I. Tổng quan về giấu tin trong ảnh Giới thiệu chung về giấu thông tin Giấu thông tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như file âm thanh, file ảnh, file text,... Nguồn đa phương tiện này được gọi là môi trường chứa. Mục đích của ...

I. Tổng quan về giấu tin trong ảnh

  1. Giới thiệu chung về giấu thông tin


    Giấu thông tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như file âm thanh, file ảnh, file text,... Nguồn đa phương tiện này được gọi là môi trường chứa. Mục đích của việc giấu thông tin là làm cho đối phương không thể nhận biết được sự tồn tại của thông tin đã được giấu.

    Mỗi kỹ thuật giấu tin gồm:

    • Nhúng thông tin

    • Trích rút thông tin

    Thuật toán giấu tin được dùng để giấu thông tin vào một phương tiện chứa bằng cách sử dụng một khóa bí mật được dùng chung bởi người gửi và người nhận. Việc giải mã thông tin chỉ có thể thực hiện được khi có khoá. Sau khi giải mã, ta được thông tin mật.


    Picture1.png

     									Hình 1. Lược đồ thể hiện quá trình giấu tin
    

Picture2.png

									Hình 2. Lược đồ thể hiện quá trình trích rút thông tin


_Ví dụ:_

> Đối tượng chứa là một đoạn văn bản. Thông tin sẽ được ẩn trong các ký tự thứ hai của mỗi từ:

> `Although hand is, kvetch heart again tactician ASCII. HTTP go omega so Arab crab cold twin`

> => Có thể thấy nội dung cần truyền tải ở đây là: `Las Vegas Tomorrow`.
  1. Giấu tin trong ảnh


    Giấu tin trong ảnh là việc thực hiện giấu thông tin với môi trường chứa là các file ảnh. Hiện nay, giấu tin trong ảnh chiếm tỉ lệ lớn trong các ứng dụng giấu tin trong dữ liệu đa phương tiện bởi vì lượng thông tin được trao đổi bằng hình ảnh là rất lớn. Giấu tin trong ảnh có nhiều ứng dụng trong thực tế, ví dụ như trong việc xác định bản quyền sở hữu, chống xuyên tạc thông tin hay truyền dữ liệu một cách an toàn,…

    Các khái niệm thường được dùng trong giấu tin trong ảnh:

    • Ảnh môi trường: Là ảnh gốc được dùng để nhúng thông tin.
    • Thông tin nhúng: Là các thông tin mật cần gửi.
    • Ảnh đã nhúng: Là ảnh gốc sau khi đã được nhúng thông tin mật.
    • Khóa mật: Là khóa tham gia vào quá trình nhúng, được trao đổi giữa người gửi và người nhận.

    Các yêu cầu trong giấu tin trong ảnh:

    • Tính bền vững: Thể hiện khả năng ít bị thay đổi (về nội dung, hình dạng) trước những tấn công từ bên ngoài. Hiện nay, chưa có kỹ thuật giấu tin nào đảm bảo được yêu cầu này một cách tuyệt đối.

    • Khả năng không bị phát hiện: Thể hiện ở việc khó xác định được đối tượng có chứa thông tin mật hay không. Các kỹ thuật giấu tin hiện nay cố gắng đảm bảo yêu cầu này dựa vào hệ thống thị giác của con người.

    • Khả năng lưu trữ: Thể hiện ở lượng thông tin được lưu trữ. Do còn phải đảm bảo “khả năng không bị phát hiện” nên với những thông tin mật lớn, ta thường chia nhỏ nó ra, nhúng nhiều lần và vào các đối tượng khác nhau.

II. Giấu tin trong ảnh nhị phân

  • Trong phần này, chúng ta sẽ đề cập đến một số kỹ thuật giấu tin sử dụng ảnh nhị phân làm môi trường giấu tin. Ảnh nhị phân bao gồm các điểm ảnh chỉ có màu đen (0) hoặc trắng (1). Các kỹ thuật được đề cập là các kỹ thuật đơn giản nhưng đáng tin cậy.

    Ví dụ về ảnh nhị phân:


    Binary image.png

  • Để thực hiện việc giấu thông tin, ta thường chia nhỏ ma trận ảnh gốc F thành các khối bit nhỏ hơn Fi. Sau đó, thực hiện việc giấu tin trên mỗi khối bit Fi nhỏ hơn đó.

  • Một số thuật toán giấu tin trên ảnh nhị phân thường được dùng hiện nay là Wu-Lee hay CPT.

  1. Một số phép toán cơ bản

    • Phép đảo bit

        | Giá trị ban đầu | Giá trị sau khi đảo|
        | --------------- | ------------------ |
        | 		 0        | 		1 		   |
        | 		 1        | 		0 		   |
      
    • Phép SUM

        SUM(F): Tổng các phần tử của ma trận F
      

      Ví dụ:

      Cho ma trận F

      Picture 3.png

      => Sum(F) = 1 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 1 = 5

    • Phép XOR ⨁

        Cho ba ma trận A, B và C
      
        Giả sử A ⨁ B = C
      
        Thì A[i,j] ⨁ B[i,j] = C[i,j]
      

      Quy tắc thực hiện phép ⨁:

        | 		A[i,j] 		 | 		B[i,j] 		 | 		C[i,j] 		 |
        | -----------------  | ----------------- | ----------------- |
        | 		   1	     | 		   1	     | 		   0	     |
        | 		   1	     | 		   0	     | 		   1	     |
        | 		   0	     | 		   1	     | 		   1	     |
        | 		   0	     | 		   0	     | 		   0	     |
      

      Ví dụ:

      Giả sử có hai ma trận A và B Picture 4.png Khi đó, Picture 5.png

    • Phép nhân ⨂

        Cho ba ma trận A, B và C.
      
        Giả sử A ⨂ B = C
      
        Thì A[i,j] * B[i,j] = C[i,j]
      

      Ví dụ:

      Giả sử có hai ma trận A và B Picture 6.png Khi đó, Picture 7.png

    • Phép AND

        Cho ba ma trận X, Y và Z.
      
        Giả sử X AND Y = Z
      
        Thì X[i,j] AND Y[i,j] = Z[i,j]
      

      Quy tắc thực hiện phép AND:

        | 		X[i,j] 		 | 		Y[i,j] 		 | 		Z[i,j] 		 |
        | -----------------  | ----------------- | ----------------- |
        | 		   1	     | 		   1	     | 		   1	     |
        | 		   1	     | 		   0	     | 		   0	     |
        | 		   0	     | 		   1	     | 		   0	     |
        | 		   0	     | 		   0	     | 		   0	     |
      

      Ví dụ:

      Giả sử có hai ma trận X và Y Picture 8.png Khi đó, Picture 9.png

  2. Một số kỹ thuật giấu tin sử dụng khóa K cố định


    Ý tưởng của kỹ thuật là chia nhỏ ảnh gốc F thành các đoạn Fi gồm k điểm ảnh liên tiếp và giấu trong mỗi đoạn Fi một bit thông tin. Sau khi giấu tin ta thu được các đoạn Fi' và các đoạn này tạo nên ảnh đã chứa thông tin F'. Trong quá trình trích rút tin, ta lại chia ảnh F' thành các đoạn Fi' độ dài bằng k. Sau đó trích rút ở mỗi đoạn Fi' này một bit thông tin đã giấu.

    Thuật toán giấu tin gồm hai bước:

    • Quá trình giấu tin (đối với mỗi đoạn bit Fi và một bit thông tin bi):

        Bước 1: Đặt Si = Sum(Fi) mod 2
        Bước 2: So sánh Si và bi:
            	Nếu bi ≠ Si thì chuyển sang Bước 3.
            	Ngược lại thì Break;
      
        Bước 3: Thực hiện việc đảo bit
                Nếu có nhiều điểm đen và có điểm trắng thì đảo một bit trắng thành đen. Break.
                Nếu có nhiều điểm trắng và có điểm đen thì đảo một bit đen thành trắng. Break.
                Nếu số điểm đen và điểm trắng xấp xỉ nhau thì chọn ngẫu nhiên một bit để đảo.
                Nếu chỉ có điểm đen (hoặc chỉ có điểm trắng) thì chọn bất kỳ một điểm ở đầu hoặc cuối để đảo.
      
        Sau cùng ta thu được đoạn Fi'.
      
    • Quá trình trích rút thông tin:

        Đối với mỗi đoạn Fi', bit thông tin được giấu trong đó là
        					bi = Sum(Fi') mod 2
      


    Ví dụ: > Các bit cần giấu là b = 10101, khóa K = 5 và ảnh F như sau: > > Picture 10.png > > Quá trình giấu tin: > - Xét F1 = 11100: > > Ta có S1 = Sum(F1) mod 2 = 1 = b(1) > > => Không thay đổi gì cả. > > => Fi' = 11100 > >
    > > - Xét F2 = 11000: > > Ta có S2 = Sum(F2) mod 2 = 0 = b(2) > > => Không thay đổi gì cả > > => F2' = 11000 > >
    > > - Xét F3 = 01010: > > Ta có S3 = Sum(F3) mod 2 = 0 ≠ 1 = b(3) > > Lại có F3 = 01010 > > => Chọn F3(2) để đảo > > => F3' = 00010 > >
    > > - Xét F4 = 10101: > > Ta có S4 = Sum(F4) mod 2 = 1 ≠ 0 = b(4) > > Lại có F4 = 10101 > > => Chọn F4(2) để đảo > > => F4' = 11101 > >
    > > - Xét F5 = 00000: > > Ta có S5 = Sum(F5) mod 2 = 0 ≠ 1 = b(5) > > Lại có F5 = 00000 > > => Chọn F5(5) để đảo > > => F5' = 00001 > > Không còn khối ảnh nào để xét nữa nên ta kết thúc việc giấu tin. > > F' là ảnh thu được sau quá trình giấu tin > > Picture 11.png > > Quá trình trích rút thông tin: > > - Xét F1' = 11100: > > b(1) = Sum(F1') mod 2 = 1 > >
    > > - Xét F2' = 11000: > > b(2) = Sum(F2') mod 2 = 0 > >
    > > - Xét F3' = 00010: > > b(3) = Sum(F3') mod 2 = 1 > >
    > > - Xét F4' = 11101: > > b(4) = Sum(F4') mod 2 = 0 > >
    > > - Xét F5' = 00001: > > b(5) = Sum(F5') mod 2 = 1 > >
    > > Thông tin mật thu được: b = 10101

Như vậy, sau khi kết phần I của loạt bài viết "Tổng quan về giấu tin trong ảnh", chúng ta đã nắm được một số khái niệm cở bản về giấu thông tin, một số phép toán về ma trận cơ bản được sử dụng trong giấu thông tin, cũng như kỹ thuật giấu tin cơ bản và đơn giản nhất trên ảnh nhị phân.

Trong phần II của loạt bài viết này, chúng ta sẽ tìm hiểu về một vài thuật toán khác phức tạp hơn liên quan đến việc giấu tin trong ảnh nhị phân.

<br>

TÀI LIỆU THAM KHẢO

Tiếng Việt

    [1] Đỗ Năng Toàn, Phạm Việt Bình, Giáo trình Xử lý ảnh, Đại học Thái Nguyên, 2007.
    [2] Lương Mạnh Bá, Nguyễn Thanh Thủy, Nhập môn Xử lý ảnh số, NXB KH&KT, 2003.
    [3] Phạm Tiến Sơn, Xử lý ảnh số, Đại học Đà Lạt, 2007.

Tiếng Anh

    [1] M. Wu, J. Lee, A Novel Data Embedding Method for Two-Color Facsimile Images, Proceeding of International Symposium on Multimedia Information Processing, Taiwan, 1998.
    [2] Oge Marques, Practical Image and Video Processing Using MATLAB, John Wiley & Sons, Inc., Hoboken, New Jersey, 2011.
    [3] Phan Trung Huy, Cheonshik Kim, Binary Image Data Hiding Using Matrix Encoding Technique in Sensors, International Journal of Distributed Sensor Networks, Volume 2013, 2013
    [4] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, Prentice-Hall, Inc., 2007.
    [5] Yu-Yuan Chen, Hsiang-Kuang Pan, Yu-Chee Tseng, A Secure Data Hiding Scheme for Two-Color Images, National Central University, Taiwan, 2000.
    [6] Silvana Greca, Edlira Martiri, Wu-Lee Steganographic Algorithm on Binary Images Processed in Parallel, University of Tirana, 2012.

![Data hiding.png](/uploads/0472b811-8d8c-48c5-ae34-07e207f4e72b.png)
0