# ẨN DỮ LIỆU TRONG ẢNH SỬ DỤNG TRÍ TUỆ NHÂN TẠO ## 1. AI sinh ảnh có chứa dữ liệu ẩn. Dữ liệu ẩn trong ảnh là một đề tài đáng chú ý, thu hút sự quan tâm của cả cộng đồng nghiên cứu và người làm về bảo mật thông tin. Chúng ta sống trong thời đại số hóa, và việc ẩn thông tin trong các hình ảnh là một cách quan trọng để bảo vệ dữ liệu quan trọng hoặc thực hiện các mục tiêu khác mà chúng ta muốn giữ kín. <!-- Trong quá khứ, người ta đã áp dụng nhiều phương pháp truyền thống để ẩn dữ liệu trong ảnh, bao gồm việc thay đổi các bit ít quan trọng của hình ảnh hoặc sử dụng kỹ thuật steganography. Tuy nhiên, những phương pháp này thường có nhược điểm về tính bảo mật và khả năng phát hiện, khiến cho việc ẩn dữ liệu trở nên dễ bị lộ lý hoặc phát hiện bởi những người không mong muốn. --> Gần đây, xu hướng sử dụng trí tuệ nhân tạo, đặc biệt là học sâu, đã thay đổi cách chúng ta ẩn dữ liệu trong ảnh. Thay vì sử dụng các phương pháp truyền thống, người ta bắt đầu sử dụng mạng nơ-ron sâu để sinh ảnh chứa thông điệp ẩn. Điều này cho phép chúng ta ẩn dữ liệu một cách hiệu quả hơn và với mức độ bảo mật cao hơn (chắc vậy). Phần này tập trung trình bày nghiên cứu [1]. Họ đã đề xuất một kỹ thuật mới để ẩn dữ liệu nhị phân tùy ý trong hình ảnh bằng cách sử dụng mạng đối nghịch tổng quát cho phép họ tối ưu hóa chất lượng cảm nhận của hình ảnh do mô hình của họ tạo ra. ### 1.1 SteganoGAN Encoder Mô hình sinh ảnh có chứa thông điệp được dúng vào: ![](https://hackmd.io/_uploads/rJEo5-Yzp.png) Về cơ bản mô hình CNN ở trên sẽ được xem một cách đơn giản là một hàm $F(C, M)$ với: - $C \in \mathbb{R}^{3 \times W \times H}$ là ảnh gốc (3 là do hệ màu RDB.) - $M \in \mathbb{R}^{D \times W \times H}$ là thông điệp cần ẩn đi, với $D$ là độ dài của thông thông điệp cần. Ta có: $$ a=F(C,M), \text{ } a \in \mathbb{R}^{3 \times W \times H}$$ Vậy chức năng của $F$ là mã hóa thông điệp $M$ thành $a$ tương ứng với ảnh $C$. Ta có được ảnh chứa thông điệp $S$: $$ S=C+a$$ Ta có thể biểu diễn kết hợp lại 2 biểu thức trên bằng một biểu thức như sau: $$ S=\text{EMB}(C,M) $$ ### 1.2 Evaluate Encoder Ở phần trên ta đã trình bày về cách và tác giả đã sinh được ảnh $S$ có chứa thông điệp $M$ bên trong. Ta cần xem xét ảnh sinh ra có đủ chất lượng hay không. Một cách đánh giá đơn giản mà mình nghĩ ra có thể như sau: $$ \delta=\text{ScoreFunction}(S-C) $$ Do đó ta cần một ngưỡng $\Delta$ để có thể so sánh với $\delta$ rồi qua đó đánh giá được chất lượng của ảnh $S$. $\text{ScoreFunction}$ giữa $S$ và $C$ ở đây có thể thực hiện tính norm, khoảng cách (euclidean distance,...), hàm mất mát (mean square error,...) hay độ tương đồng (cosine similarity,...). Quay lại với cách xử lý của tác giả, tác giả đã xây dựng một mạng CNN để tính toán giá trị chất lượng của một ảnh (thông qua `score`): ![](https://hackmd.io/_uploads/SyKvSlFG6.png) Mô hình trên được gọi là **Critic**, được dùng để đánh giá dộ thật của ảnh. ### 1.3 Decoder Idea Ví dụ như ta có nhận được $S$ làm thế nào để trích xuất được thông điệp $M$, ta giả sử như là ta biết được $C$ và $F$, ta có: $$ a = S-C $$ Ta có $a=F(C,M)$ như ở trên, với $a$ và $C$ đã biết, nên có thể nói rằng $$ M=F^{-1}(a,C) $$ Nhưng đó là trường hợp giả sử ta biết được $C$ và $F$. Nếu trường hợp ta chỉ có $S$ thì sao? Ta cần một Decoder có chức năng như sau: $$ M=\text{EMB}^{-1}(S) $$ ### 1.4 SteganoGAN Decoder Mô hình mà nhóm tác giả đề xuất với mục tiêu là trích xuất thông điệp $M$ có trong ảnh có dữ liệu ẩn $S$: ![](https://hackmd.io/_uploads/H1EuBxKM6.png) ### 1.5 Training Nhóm tác giả trình bày cách huấn luyện cặp **Encoder-Decoder** mô tả như hình bên dưới: ![](https://hackmd.io/_uploads/SJGCQ-Yf6.png) Đẩu tiên, ảnh gốc $C$ và thông điệp $M$ sẽ được đưa vào **Encoder** để sinh ra ảnh có chứa thông điệp ẩn $S$. Ảnh $S$ đưa vào **Decoder** để có được thông điệp $\hat{M}$. Từ đây: - Với $M$ và $\hat{M}$ thông qua một hàm mất mát ta có được giá trị `loss_1`. - Với $C$ và $S$ ta có thể tính được độ tương đồng giữa 2 ảnh và có được `loss_2`. - Dùng **Critic** để tính toán độ thật của ảnh và có được `loss_3`. Có được 3 giá trị trên ta sẽ update các thông số trong mô hình Encoder và Decoder sao cho loss tổng (`loss_1+loss_2+loss_3`) nhỏ nhất có thể. Riêng về Critic, sẽ được cập nhật tham số mô hình thông qua quy trình như bên dưới: ![](https://hackmd.io/_uploads/BJWbKWtGa.png) Đầu tiên ảnh $S$ được sinh ra từ thông điệp $M$ và ảnh $C$ thông qua **Encoder**. `score_c` được tính thông qua **Critic** với đầu vào là ảnh $C$, tương tự vậy với `score_s` tương ứng với đầu vào là $S$. Dùng hàm mất mát để tính toán `score_c` và `score_s` rồi có được `loss_4`. Cập nhật trọng số của mô hình **Critic** để giảm dần `loss_4`. ## 2. Adversarial Attack trên ảnh chứa dữ liệu ẩn. Bên cạnh đó, thách thức lớn xuất phát từ việc các hệ thống học sâu thường tỏ ra yếu đuối khi đối mặt với cuộc tấn công mẫu đối kháng (adversarial attack). Các cuộc tấn công này nhằm vào việc thay đổi một số pixel nhỏ trong hình ảnh gốc để gây nhầm lẫn hoặc ngăn chặn hệ thống học sâu trong việc nhận diện dữ liệu ẩn. Điều này đã đặt ra một loạt thách thức về bảo mật và an ninh trong việc ẩn dữ liệu trong ảnh và đảm bảo rằng các hệ thống học sâu có khả năng đối phó với các cuộc tấn công mẫu đối kháng một cách hiệu quả. Phần này sẽ trình bày nghiên cứu [2]. Họ đã trình bày một framework gọi là EMB-ADV cho phép một ảnh có chứa thông điệp ẩn được nhúng thêm một lớp nhiễu nhằm đánh lừa các mô hình phát hiện dữ liệu ẩn ứng dụng học máy mà vẫn đảm bảo thông điệp trong ảnh vẫn được toàn vẹn. ### 2.1 Adversarial Attack So sánh này thật ra không có trong bài bảo của tác giả, tuy nhên mình muốn mượn để tài này để đưa ra một số nhận xét và nêu ra một vài khái niệm. Tấn công mẫu đối kháng, còn được gọi là adversarial attack, là một dạng tấn công chủ yếu nhằm vào các mô hình học máy, đặc biệt là các mạng nơ-ron sâu, và điều đặc biệt là mục tiêu của tấn công này là làm cho mô hình hoạt động không chính xác hoặc hiển thị ra kết quả không mong muốn khi bị tiếp xúc với các dữ liệu có mẫu bất thường. Tấn công mẫu đối kháng thường sử dụng các mẫu đã được nhúng nhiễu vào, sao cho mắt thường không thể phát hiện sự thay đổi này. Những sự thay đổi nhỏ và tinh vi trong dữ liệu, như việc thay đổi một số pixel trong hình ảnh hoặc thêm noise vào dữ liệu đầu vào, có thể dẫn đến sự nhầm lẫn hoặc hiển thị kết quả sai lệch từ phía mô hình học máy. Điều này tạo ra một tình huống nguy hiểm, đặc biệt là trong các ứng dụng quan trọng như bảo mật hệ thống hoặc trong việc đưa ra quyết định dựa trên dự đoán của mô hình. Trong ngữ cảnh một mô hình học máy phát hiện mẫu có chứa dữ liệu ẩn, mặc dù việc sử dụng các tấn công mẫu đối kháng như Fast Sign Gradient Method, Basic Iterative Method,... vẫn có khả năng đánh lừa được các mô hình tuy nhiên những phương pháp cơ bản này không đảm bảo được tính toàn vẹn của dữ liệu bị ẩn vào. Do đó, nhóm tác giả trình bày framework EMB-ADV để vừa đánh lừa mô hình phát hiện mẫu ẩn bằng cách nhúng thêm nhiễu, và cũng vừa đảm bảo thông điệp bên trong vẫn toàn vẹn. ### 2.2 EMB-ADV Phương pháp đảm bảo 2 tiêu chí: 1) không phá vỡ nội dung bị ẩn trong ảnh và 2) giảm thiểu số thành phần bị thay đổi trong ảnh có dữ liệu ẩn. Hình bên dưới trình bày về quy trình của EMB-ADV: ![](https://hackmd.io/_uploads/ByPj_0uMp.png) ## REFERENCE [1] Zhang, K. A., Cuesta-Infante, A., Xu, L., & Veeramachaneni, K. (2019). SteganoGAN: High capacity image steganography with GANs. arXiv preprint arXiv:1901.03892. [2] Tang, W., Li, B., Tan, S., Barni, M., & Huang, J. (2019). CNN-based adversarial embedding for image steganography. IEEE Transactions on Information Forensics and Security, 14(8), 2074-2087.