You are on page 1of 188

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ

TS. NGUYỄN NGỌC CƯƠNG

ThS. TRẦN THỊ XUYÊN

ThS. HOÀNG THU PHƯƠNG

GIÁO TRÌNH

KĨ THUẬT GIẤU TIN

HÀ NỘI - 2016
BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ

TS. NGUYỄN NGỌC CƯƠNG

ThS. TRẦN THỊ XUYÊN, ThS. HOÀNG THU PHƯƠNG

GIÁO TRÌNH

KĨ THUẬT GIẤU TIN

HÀ NỘI - 2016
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
MỤC LỤC
MỤC LỤC ............................................................................................................ 1
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................... iv
DANH MỤC BẢNG BIỂU ................................................................................ vi
DANH MỤC HÌNH VẼ .................................................................................... vii
LỜI NÓI ĐẦU ................................................................................................... xii
CHƯƠNG 1 TỔNG QUAN VỀ GIẤU TIN ...................................................... 1
1.1 Khái niệm về giấu tin ..................................................................................... 1
1.2 Mô hình giấu tin cơ bản................................................................................. 2
1.3 Các yếu tố ảnh hưởng tới quá trình giấu tin ................................................ 4
1.3.1 Sự thay đổi trên đối tượng chứa là tối thiểu ................................................ 4
1.3.2 Mức độ tránh các thao tác biến đổi trên đối tượng chứa ............................ 5
1.3.3 Số lượng dữ liệu nhúng ................................................................................ 6
1.3.4 Sự khó phát hiện bởi tri giác con người - Sự vô hình .................................. 6
1.4 Ứng dụng giấu tin trong thực tế .................................................................... 7
CHƯƠNG 2 ẨN MÃ ......................................................................................... 10
2.1 Khái niệm ẩn mã .......................................................................................... 10
2.2 Các nguyên lí của ẩn mã.............................................................................. 10
2.2.1 Ẩn mã thuần túy.......................................................................................... 12
2.2.2 Ẩn mã khóa bí mật ...................................................................................... 14
2.2.3 Ẩn mã khóa công khai ................................................................................ 15
2.3 An toàn và ẩn mã.......................................................................................... 17
2.3.1 Khái niệm an toàn ẩn mã ........................................................................... 17
2.3.2 An toàn hoàn hảo ....................................................................................... 19
2.4 Các kĩ thuật ẩn mã trên ảnh số.................................................................... 20
2.4.1 Xử lí ảnh: Nén JPEG .................................................................................. 20
2.4.2 Kĩ thuật ẩn mã trên miền không gian ảnh .................................................. 36
2.4.3 Kĩ thuật ẩn mã trên miền tần số ảnh (DCT, DFT) ..................................... 50
2.5 Ẩn mã trên các môi trường đa phương tiện khác....................................... 67
2.5.1 Ẩn mã trong tệp âm thanh .......................................................................... 67
2.5.2 Ẩn mã trong tệp văn bản ............................................................................ 67
i
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
2.5.3 Ẩn mã trong các gói mạng ......................................................................... 71
2.6 Kết hợp ẩn mã và mật mã ............................................................................ 79
2.6.1 Kết hợp ẩn mã và mật mã có sửa vật phủ .................................................. 79
2.6.2 Kết hợp ẩn mã và mật mã không sửa vật phủ ............................................ 80
2.7 Bài tập thực hành ......................................................................................... 82
CHƯƠNG 3 PHÂN TÍCH ẨN MÃ.................................................................. 83
3.1 Các kịch bản phân tích ẩn mã ..................................................................... 83
3.1.1 Phát hiện..................................................................................................... 84
3.1.2 Phân tích ẩn mã dựa trên điều tra số ......................................................... 87
3.1.3 Sự ảnh hưởng của vật phủ trong phân tích ẩn mã ..................................... 89
3.2 Một số thuật toán phân tích ẩn mã.............................................................. 90
3.2.1 Nhúng LSB và tấn công biểu đồ ............................................................... 90
3.2.2 Phân tích cặp mẫu ...................................................................................... 96
3.2.3 Ẩn mã mù ảnh JPEG sử dụng hiệu chỉnh ................................................ 107
3.2.4 Phân tích ẩn mã mù trong miền không gian ............................................ 112
CHƯƠNG 4 THỦY VÂN SỐ ......................................................................... 115
4.1 Khái niệm thủy vân số ................................................................................ 115
4.2 Phân loại thủy vân số ................................................................................. 116
4.3 Cấu trúc của hệ thống thủy vân số ............................................................ 118
4.3.1 Quá trình nhúng thủy vân......................................................................... 118
4.3.2 Quá trình trích xuất thủy vân ................................................................... 119
4.4 Các tính chất của thủy vân số .................................................................... 121
4.5 Một số kĩ thuật thủy vân số ........................................................................ 122
4.5.1 Thủy vân trên miền không gian ................................................................ 122
4.5.2 Thủy vân trên miền tần số ........................................................................ 129
4.5.3 Kết hợp thủy vân trong miền không gian và tần số ................................. 135
4.5.4 Thủy vân dễ vỡ ......................................................................................... 137
4.5.5 Thủy vân bền vững ................................................................................... 139
4.6 Một số phương pháp tấn công thủy vân số ............................................... 140
4.6.1 Tấn công xử lí hình ảnh............................................................................ 141
4.6.2 Tấn công dựa trên các phép biến đổi hình học ........................................ 146
ii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
4.6.3 Tấn công mật mã ...................................................................................... 153
4.6.4 Tấn công giao thức ................................................................................... 154
4.7 Bài tập thực hành ....................................................................................... 155
PHỤ LỤC ......................................................................................................... 157
TÀI LIỆU THAM KHẢO .............................................................................. 171

iii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
DANH MỤC CÁC TỪ VIẾT TẮT

Kí hiệu Diễn giải

AC Thành phần chứa các thông tin về chi tiết của ảnh

BP Mặt phẳng bit (Bit Plane)

CRT Định lí phần dư Trung hoa (Chinese Remainder Theorem)

DC Thành phần quan trọng nhất mang độ chói trung bình của ảnh

DCT Biến đổi Cosine rời rạc (Discrete Cosine Transform)

DFT Biến đổi Fourier rời rạc (Discrete Fourier Transform)

Phương pháp mã dự đoán hay còn gọi là điều xung vi sai (Differential
DPCM
Pulse Code Modulation)

DWT Biến đổi sóng nhỏ rời rạc (Discrete Wavelet Transform)

FDCT Biến đổi DCT thuận

GCD Ước chung lớn nhất (Greatest Common Divisor)

Biến đổi Cosine rời rạc nghịch đảo (Inverse Discrete Cosine
IDCT
Transform)

Biến đổi Fourier rời rạc nghịch đảo (Inverse Discrete Fourier
IDFT
Transform)

Biến đổi sóng nhỏ rời rạc ngịch đảo (Inverse Discrete Wavelet
IDWT
Transform)

iv
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
JPEG (Joint Photographic Experts Group)

LSB Bit ít quan trọng nhất (Least Significant Bit)

MSB Bit quan trọng nhất (Most Significant Bit)

P0V Cặp giá trị (Pairs of Values)

RLC Mã hóa chiều liên tục hay mã hóa độ dài chạy (Run Length Coding)

SVM Máy vecto hỗ trợ (Support vector machine)

v
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
DANH MỤC BẢNG BIỂU
Bảng 1.1 So sánh ẩn mã và thủy vân số ..................................................................... 2

Bảng 2.1 Các trạng thái kết quả và xác suất sai lầm của phân tích ẩn mã ............... 18

Bảng 2.2 Phạm vi giá trị các hệ số trong các nhóm ................................................. 34

Bảng 2.3 Ví dụ bảng Huffman cho hệ số AC .......................................................... 34

Bảng 2.4 Quan hệ giữa mật độ thay đổi và tỉ lệ nhúng ............................................ 63

vi
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
DANH MỤC HÌNH VẼ
Hình 1.1 Phân loại kĩ thuật giấu tin theo khuynh hướng ........................................... 1

Hình 1.2 Quá trình giấu tin......................................................................................... 3

Hình 1.3 Quá trình trích xuất thông tin đã giấu ......................................................... 4

Hình 1.4 Mối liên hệ giữa số lượng dữ liệu nhúng và tính bền vững ........................ 6

Hình 2.1 Nguyên lí cơ bản của ẩn mã học ............................................................... 11

Hình 2.2 Hình ảnh được nén bằng thuật toán nén JPEG ......................................... 21

Hình 2.3 Ba kênh cho định dạng nén JPEG ............................................................. 22

Hình 2.4 Mã hóa khối bằng DCT hai chiều ................................................... 26

Hình 2.5 Khai triển DCT và bảng trọng số .................................................... 27

Hình 2.6 Khai triển DCT cho khối ảnh có độ chói dạng bàn cờ .............................. 28

Hình 2.7 Các bảng lượng tử cho tín hiệu chói vào màu theo chuẩn JPEG .............. 30

Hình 2.8 Sắp xếp zíc zắc của các thành phần ảnh JPEG ......................................... 31

Hình 2.9 Quá trình mã RLC ..................................................................................... 33

Hình 2.10 Sơ đồ khối hệ thống mã VLC cho hệ số DC (a) và AC (b) .................... 36

Hình 2.11 Các mặt phẳng bít đối với biểu diễn dữ liệu 8 bit ................................... 38

Hình 2.12 Hình ảnh và các mặt phẳng bít giảm dần ................................................ 39

Hình 2.13 Mô tả quá trình đảo bít để giấu tin của thuật toán trên 4 khối ................ 48

Hình 2.14 Khối của các hệ số DCT ............................................................... 51

Hình 2.15 Biểu đồ các hệ số JPEG sau khi lượng tử hóa ........................................ 57

Hình 2.16 F3 tạo ra một số lượng lớn các hệ số chẵn .............................................. 57

vii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
Hình 2.17 Biểu đồ các hệ số JPEG với thuật toán F4 .............................................. 59

Hình 2.18 Phép nhúng liên tục tập trung vào những thay đổi (×) ........................... 59

Hình 2.19 Phép nhúng hoán vị phân phối những sự thay đổi(×) ............................. 60

Hình 2.20 Ảnh Expro ............................................................................................... 61

Hình 2.21 Sự phụ thuộc giữa các bít thông báo và các bít từ mã ............................ 63

Hình 2.22 Phương pháp khoảng trắng mở khai thác khoảng trắng sau mỗi dòng ... 70

Hình 2.23 Đoạn văn bản chứa dữ liệu nhúng sử dụng khoảng trắng sau mỗi từ ..... 70

Hình 2.24 Mô hình ẩn mã thông thường và kết hợp với mật mã ............................. 80

Hình 2.25 Mô hình kết hợp ẩn mã và mật mã không sửa vật phủ ........................... 81

Hình 3.1 Biểu đồ 8 bít hình ảnh JPEG khi chưa nhúng ........................................... 91

Hình 3.2 Biểu đồ của 8 bít hình ảnh JPEG khi dùng Jsteg ...................................... 91

Hình 3.3 Ảnh phủ mức xám ............................................................ 94

Hình 3.4 Biểu đồ biểu diễn giá p khi quét ảnh có nhúng tin được nhúng 60% ảnh 94

Hình 3.5 Xích hữu hạn trạng thái với các trạng thái là các tập con của Cm (m > 0) 98

Hình 3.6 Máy trạng thái cho C0................................................................................ 99

Hình 3.7 Biểu đồ của hệ số (1,2) của ảnh phủ (+), ảnh có ẩn tin theo thuật toán F5
và ảnh được hiệu chỉnh........................................................................................... 110

Hình 3.8 Ước lượng số liệu thống kê của ảnh phủ qua hiệu chỉnh ........................ 111

Hình 3.9 Lược đồ của ảnh phủ và ảnh có nhúng tin sau khi được nhúng với phép
nhúng 1 ................................................................................................................... 113

Hình 3.10 Hàm đặc trưng lược đồ của ảnh phủ và ảnh có nhúng tin sau khi được
nhúng với phép nhúng ±1 ....................................................................................... 114

viii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
Hình 4.1 Ảnh có chứa thủy vân.............................................................................. 116

Hình 4.2 Phân loại thủy vân ................................................................................... 116

Hình 4.3 Lược đồ nhúng thủy vân ......................................................................... 119

Hình 4.4 Lược đồ phát hiện/trích xuất thủy vân .................................................... 120

Hình 4.5 Quá trình nhúng thủy vân theo phương pháp thay thế trong miền không
gian ......................................................................................................................... 123

Hình 4.6 Quá trình trích xuất thủy vân theo phương pháp thay thế trong miền
không gian .............................................................................................................. 124

Hình 4.7 Ví dụ về việc nhúng thủy vân vào các bít khác nhau .............................. 125

Hình 4.8 Quá trình nhúng thủy vân của phương pháp cộng trong miền không gian
................................................................................................................................ 127

Hình 4.9 Ví dụ về phương pháp cộng trên miền không gian dựa trên khối .......... 128

Hình 4.10 Phương pháp cộng trong miền không gian cần phải có ảnh tham chiếu
khi trích xuất thủy vân ............................................................................................ 128

Hình 4.11 Kĩ thuật nhúng thủy vân trong miền tần số ........................................... 130

Hình 4.12 Ví dụ về việc nhúng thủy vân 4 bít vào miền tần số của ảnh ............... 132

Hình 4.13 Cách nhúng thủy vân vào các hệ số của ảnh biến đổi trong hình 4.12 . 133

Hình 4.14 Ảnh có thủy vân .................................................................................... 134

Hình 4.15 Kết quả đối với 500 thủy vân được sinh ngẫu nhiên, chỉ có một thủy vân
trong đó phù hợp với thủy vân gốc ........................................................................ 135

Hình 4.16 Sơ đồ luồng của phương pháp kết hợp thủy vân trong miền không gian
và tần số .................................................................................................................. 136

Hình 4.17 Thuật toán chèn thủy vân của Wong ..................................................... 138

ix
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
Hình 4.18 Thuật toán trích xuất thủy vân .............................................................. 138

Hình 4.19 Ví dụ tấn công bộ lọc sắc nét ...................................................... 142

Hình 4.20 Ví dụ về tấn công bộ lọc Gaussian .............................................. 143

Hình 4.21 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công lọc trung vị ...... 143

Hình 4.22 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công tái điều chế ...... 144

Hình 4.23 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công JPEG ......................... 145

Hình 4.24 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công JPEG 2000 ................ 146

Hình 4.25 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công co dãn ........................ 147

Hình 4.26 (a) Ảnh có chứa thủy vân. (b) Ảnh sau tấn công co dãn không đồng nhất
................................................................................................................................ 148

Hình 4.27 Một minh họa của sự xoay .................................................................... 148

Hình 4.28 (a) Ảnh có chứa thủy vân. (b) Ảnh sau khi tấn công xoay ................... 149

Hình 4.29 (a) Ảnh Lena phiên bản được mã JPEG (chất lượng 10%) bị cắt xén. (b)
Ảnh sau khi khôi phục ............................................................................................ 150

Hình 4.30 (a) Ảnh có chứa thủy vân. (b) Ảnh sau khi tấn công dịch chuyển tuyến
tính .......................................................................................................................... 151

Hình 4.31 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công uốn cong ............. 151

Hình 4.32 Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công bẻ cong ..................... 152

Hình 4.33 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công chiếu phối cảnh ... 152

Hình 4.34 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công cắt dán ................. 153

Hình 4.35 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công thông đồng .......... 154

x
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

xi
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
LỜI NÓI ĐẦU

Ngày nay, cùng với sự phát triển của Internet và sự xuất hiện của các
phương tiện thông tin đại chúng, các dữ liệu số hiện nay được sao chép và phổ biến
rất dễ dàng. Chính vì vậy vấn đề bảo mật thông tin ngày càng trở nên cấp bách. Các
thông tin cần bảo mật có thể được mã hoá theo một cách nào đó, tuy nhiên với
phương pháp này thì thông điệp được mã hoá lại chính là tín hiệu về tầm quan
trọng của dữ liệu đó, nên sẽ thu hút sự chú ý của đối phương.

Một hướng tiếp cận mới trong bảo mật là giấu tin (Information Hiding), tức
là những thông tin số cần bảo mật sẽ được giấu vào trong một đối tượng dữ liệu số
khác (gọi là môi trường giấu tin) sao cho sự biến đổi của môi trường sau khi giấu
tin là rất khó nhận biết, đồng thời có thể lấy lại được các thông tin giấu khi cần.
Một ưu điểm của hướng tiếp cận giấu tin so với mã hoá là khi tiếp cận môi trường
giấu tin đối phương khó xác định được là có thông tin giấu ở trong đó hay không.
Ngoài ra phương pháp giấu tin còn thể hiện được ưu thế rõ rệt trong nhiều ứng
dụng như phân phối tài liệu số, bảo vệ bản quyền…

Cuốn giáo trình này sẽ cung cấp cho các bạn sinh viên chuyên ngành an
toàn thông tin một cái nhìn tổng quan về kĩ thuật giấu tin.

Nội dung giáo trình gồm 4 chương:

Chương 1. Tổng quan về kĩ thuật giấu tin: trình bày một số khái niệm cơ
bản, mô hình và phân loại giấu tin cũng như ứng dụng của giấu tin trong thực tế

Chương 2: Ẩn mã: trình bày các kiến thức tổng quan về ẩn mã, phân loại
ẩn mã, độ an toàn của ẩn mã và trình bày ứng dụng phổ biến nhất hiện nay của ẩn
mã đó là ẩn mã trong ảnh số hóa

Chương 3. Phân tích ẩn mã: trình bày một số phương pháp phân tích ẩn mã
phổ biến.

xii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã
Chương 4. Thủy vân số: Trình bày khái niệm, phân loại và mô hình thủy
vân số, thủy vân trên miền không gian, tần số, thủy vân dễ vỡ, thủy vân bền vững
và một số phương pháp tấn công thủy vân số.

Với kinh nghiệm và thời gian hạn chế, việc chọn lọc và trình bày các vấn đề
không thể tránh khỏi các thiếu sót nhất định. Rất mong nhận được các ý kiến đóng
góp quý báu của độc giả.

xiii
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

CHƯƠNG 1 TỔNG QUAN VỀ GIẤU TIN


1.1 Khái niệm về giấu tin
Giấu tin là nghệ thuật “nhúng” một mẩu tin vào một vật mang tin khác.

Cùng với sự bùng nổ của Internet và đa phương tiện, những vấn nạn như
ăn cắp bản quyền, xuyên tạc thông tin, truy nhập thông tin trái phép... cũng gia
tăng, đòi hỏi phải không ngừng tìm các giải pháp mới, hữu hiệu cho an toàn và
bảo mật thông tin. Một trong các giải pháp nhiều triển vọng là giấu tin số, được
nghiên cứu phát triển trong khoảng 10 năm gần đây.

Giấu thông tin số là kĩ thuật nhúng (hay còn gọi là giấu) một lượng
thông tin số nào đó vào trong một đối tượng dữ liệu số khác.

Kĩ thuật giấu tin nhằm hai mục đích: một là bảo mật cho dữ liệu được
đem giấu, hai là bảo vệ cho chính đối tượng mang tin giấu. Hai mục đích khác
nhau này dẫn đến hai kĩ thuật chủ yếu của giấu tin. Đó là ẩn mã và thủy vân số.

Hình 1.1 Phân loại kĩ thuật giấu tin theo khuynh hướng

Ẩn mã (steganography): là kĩ thuật nhúng tin mật vào môi trường giấu


tin.

Khuynh hướng này tập trung vào các kĩ thuật giấu tin sao cho thông tin
giấu được càng nhiều càng tốt và quan trọng là người khác khó phát hiện được
một đối tượng có bị giấu tin bên trong hay không bằng kĩ thuật thông thường.

Thủy vân số (watermaking): là kĩ thuật nhúng dấu ấn số vào một tài liệu
hoặc sản phẩm nhằm chứng thực nguồn gốc hay chủ sở hữu.

1
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

So sánh giữa ẩn mã và thủy vân số:

Bảng 1.1 So sánh ẩn mã và thủy vân số

Ẩn mã Thủy vân số

- Mục đích là bảo vệ thông tin - Mục đích là bảo vệ môi trường giấu
tin

- Giấu được càng nhiều thông tin - Chỉ cần thông tin đủ để đặc trưng
càng tốt, ứng dụng trong truyền dữ cho bản quyền của chủ sở hữu
liệu thông tin mật

- Thông tin được giấu phải ẩn, - Thông tin giấu có thể ẩn (thủy vân
không cho người khác thấy được ẩn) hoặc hiện (thủy vân hiện)
bằng mắt thường

- Chỉ tiêu quan trọng nhất là dung - Chỉ tiêu quan trọng nhất là tính bền
lượng của tin được giấu vững của tin được giấu

1.2 Mô hình giấu tin cơ bản


Giấu thông tin vào phương tiện chứa và tách lấy thông tin là hai quá
trình trái ngược nhau

a. Giấu thông tin vào phương tiện chứa:

Quy trình giấu thông tin vào phương tiện chứa được mô tả qua sơ đồ
khối hình 1.2 trong đó:

 Thông tin cần giấu tùy theo mục đích của người sử dụng, nó có thể là
thông điệp (với các tin bí mật) hay các logo, hình ảnh bản quyền.

 Phương tiện chứa: các tệp ảnh, text, audio, … là môi trường để nhúng tin

 Bộ nhúng thông tin: là những chương trình thực hiện việc giấu tin

2
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 Đầu ra: là các phương tiện đã có tin giấu trong đó

Hình 1.2 Quá trình giấu tin

b. Tách thông tin:

Tách thông tin từ các phương tiện chứa diễn ra theo quy trình ngược lại
với đầu ra là các thông tin đã được giấu vào phương tiện chứa. Phương tiện chứa
sau khi tách lấy thông tin có thể được sử dụng, quản lí theo những yêu cầu khác
nhau.

3
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 1.3 Quá trình trích xuất thông tin đã giấu

Hình 1.3 chỉ ra các công việc trích xuất thông tin đã giấu. Sau khi nhận
được đối tượng phương tiện chứa có giấu thông tin, quá trình trích xuất được
thực hiện thông qua một bộ trích xuất thông tin tương ứng với bộ nhúng thông
tin cùng với khóa của quá trình nhúng. Kết quả thu được gồm phương tiện chứa
gốc và thông tin đã giấu. Bước tiếp theo thông tin đã giấu được kiểm định và so
sánh với thông tin ban đầu.

1.3 Các yếu tố ảnh hưởng tới quá trình giấu tin
Các kĩ thuật giấu tin nói chung đều phải đáp ứng một số các yếu tố, các
yếu tố này thay đổi tùy theo từng ứng dụng cụ thể. Sau đây là các yếu tố chung
cho các kĩ thuật giấu tin:

1.3.1 Sự thay đổi trên đối tượng chứa là tối thiểu


Mục đích của giấu tin là nhúng dữ liệu vào đối tượng chứa nhằm các
mục đích riêng cho từng ứng dụng. Tuy nhiên, giấu tin không thể làm thay đổi
giá trị sử dụng của đối tượng chứa vì:

4
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 Nếu ứng dụng của giấu tin là bảo vệ quyền sở hữu trí tuệ thì đối
tượng chứa – tác phẩm của tác giả không thể bị suy biến vì như
thế tác phẩm đó sẽ mất đi giá trị, không cần phải bảo vệ bản quyền
nữa.
 Nếu ứng dụng của ẩn dữ liệu là thêm thông tin chú thích thì đối
tượng chứa quan trọng hơn, thông tin chú thích chỉ là phần chú
thích thêm, vì vậy đối tượng chứa phải đảm bảo được chất lượng.
 Nếu ứng dụng của giấu tin là truyền thông mật thì sự khác nhau
giữa đối tượng chứa gốc và đối tượng chứa sau khi đã giấu dữ liệu
phải rất nhỏ để tránh sự nghi ngờ của người khác.
 Yêu cầu cần thiết của kĩ thuật giấu tin là đối tượng chứa bắt buộc
không được có sự gia tăng hay giảm đi về dung lượng so với đối
tượng gốc.

1.3.2 Mức độ tránh các thao tác biến đổi trên đối tượng chứa
Mức độ tránh các thao tác biến đổi trên đối tượng chứa còn gọi là tính
bền vững của dữ liệu nhúng. Đây là mức độ của dữ liệu nhúng không bị mất đi
khi đối tượng chứa bị biến đổi bởi các thao tác. Tính năng này bắt buộc với tất
các ứng dụng của giấu tin. Tuy nhiên, không có kĩ thuật nào có thể bất biến với
tất cả các thao tác, mỗi kĩ thuật chỉ hỗ trợ cho tính bất biến đối với một số thao
tác mà thôi. Các thao tác trên đối tượng chứa có thể liệt kê như sau:

 Văn bản: dịch chuyển từ, chia lại khoảng cách giữa các từ.
 Ảnh tĩnh: các phép biến đổi affine, nhiễu, các phép biến đổi phi
hình học, lọc nhiễu…
 Mô hình ba chiều: các phép biến đổi affine, biến đổi hình học,
biến đổi phi hình học, sắp xếp lại lưới đa giác,…
 Âm thanh: lọc nhiễu,…

5
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

1.3.3 Số lượng dữ liệu nhúng


Tùy thuộc vào từng ứng dụng cụ thể mà yêu cầu về số lượng dữ liệu
nhúng là nhiều hay ít. Một số ứng dụng chỉ cần nhúng một bit đơn vào đối tượng
chứa (ví dụ như ứng dụng đánh dấu đối tượng), một số ứng dụng lại yêu cầu số
lượng dữ liệu nhúng phải lớn (các đoạn chú thích).

Tính năng này luôn tỉ lệ nghịch với tính bền vững của dữ liệu nhúng. Một
kĩ thuật nếu hỗ trợ tính năng bền vững của dữ liệu nhúng cao thì số lượng dữ
liệu nhúng lại giảm đi đáng kể, và ngược lại nếu nâng cao số lượng dữ liệu
nhúng thì dữ liệu nhúng đó lại ít có khả năng tránh được các thao tác trên đối
tượng chứa, tín hiệu chứa càng bị nhiễu. Các kĩ thuật hiện đại đều quan tâm đến
hai tính năng này và muốn đồng thời nâng cao cả hai tính năng này. Biểu đồ sự
liên hệ giữa số lượng dữ liệu nhúng và tính bền vững của dữ liệu nhúng được
mô tả trong hình dưới:

Số lượng dữ
liệu nhúng

Tính bền vững

Hình 1.4 Mối liên hệ giữa số lượng dữ liệu nhúng và tính bền vững

1.3.4 Sự khó phát hiện bởi tri giác con người - Sự vô hình
Tính năng này gần giống với tính năng thay đổi tối thiểu trên đối tượng
chứa, tuy nhiên lại có sự khác nhau rõ ràng: một đối tượng chứa có thể thay đổi
ít nhưng dữ liệu nhúng lại trực quan, ngược lại dữ liệu nhúng có thể khó bị phát
hiện trong khi thay đổi trên đối tượng chứa khá nhiều.

6
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Một số ứng dụng không cần tính năng này (ví dụ ứng dụng nhúng các lời
chú thích, hay logo vào đối tượng chứa), tuy nhiên đối với ứng dụng truyền
thông mật thì đây là ứng dụng quan trọng nhất. Ẩn mã phải đảm bảo không để
cho một người trung gian phát hiện hay nghi ngờ đối tượng chứa có chứa thông
tin thêm vào. Đối với ẩn mã, việc phát hiện có dữ liệu được nhúng vào đối
tượng chứa gây nên sự thất bại hoàn toàn: người trung gian có thể giải mã thông
điệp, làm suy biến thông điệp hay chỉ đơn giản là hủy thông điệp đi.

Trong ẩn mã, tính năng này cùng với hai tính năng số lượng dữ liệu
nhúng và tính bền vững của dữ liệu nhúng, cả ba luôn tỉ lệ nghịch với nhau. Nếu
ứng dụng nhúng quá nhiều dữ liệu thì khả năng phát hiện tăng cao và ngược lại,
số lượng dữ liệu ít thì khả năng phát hiện giảm xuống.

Ngoài các yếu tố trên một hệ thống giấu tin cũng có thể yêu cầu tới một
số yêu cầu khác, chẳng hạn nhưtính bảo mật.

1.4 Ứng dụng giấu tin trong thực tế


Một số ứng dụng của giấu tin như bảo vệ bản quyền, xác thực, truyền
thông bí mật…

- Giấu tin bí mật: trong lịch sử, ứng dụng truyền thông bí mật đã được sử
dụng nhằm mục đích che giấu sự tồn tại của dữ liệu bí mật, đây là ứng dụng
quan trọng của ẩn mã. Dữ liệu bí mật sẽ được giấu trong đối tượng chứa, đối
tượng chứa này là vô hại. Dữ liệu sẽ được nhúng thông qua chương trình nhúng
và sử dụng khóa trong quá trình nhúng. Việc nhúng dữ liệu yêu cầu không tạo
sự thay đổi lớn cho đối tượng chứa nhằm tránh việc bị phát hiện có sự tồn tại
của kĩ thuật giấu tin mật. Bên nhận trích xuất dữ liệu bằng cách sử dụng chương
trình trích xuất và khóa tương đương.

- Bảo vệ bản quyền tác giả: Đây là ứng dụng cơ bản nhất của kĩ thuật
thủy vân số - một dạng của kĩ thuật giấu tin. Một thông tin nào đó mang ý nghĩa
quyền sở hữu tác giả (gọi là thủy vân) sẽ được nhúng vào bên trong sản phẩm,
thủy vân đó chỉ một mình người chủ sở hữu hợp pháp sản phẩm đó có và được
dùng để làm minh chứng cho bản quyền sản phẩm. Giả sử có một thành phẩm
dữ liệu đa phương tiện như ảnh, âm thanh, video và cần được lưu thông trên
7
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

mạng. Để bảo vệ các sản phẩm chống lại các hành vi lấy cắp hoặc làm nhái thì
cần phải có một kĩ thuật để “dán tem bản quyền” vào sản phẩm này. Việc dán
tem hay chính là việc nhúng thủy vân cần phải đảm bảo không để lại một ảnh
hưởng lớn nào đến việc cảm nhận sản phẩm. Yêu cầu kĩ thuật đối với ứng dụng
này là thủy vân phải tồn tại bền vững cùng với sản phẩm, muốn bỏ thủy vân này
mà không được phép của người chủ sở hữu thì chỉ còn cách là phá hủy sản phẩm.

- Nhận thực thông tin hay phát hiện xuyên tạc thông tin: một thông tin
được giấu trong đối tượng số để nhận biết xem đối tượng đó có bị thay đổi hay
không. Các thủy vân nên được ẩn để tránh được sự tò mò của kẻ thù, hơn nữa
việc làm giả các thủy vân hợp lệ hay xuyên tạc thông tin nguồn cũng cần được
xem xét. Trong các ứng dụng thực tế, người ta muốn tìm được vị trí bị xuyên tạc
cũng như phân biệt được các thay đổi (ví dụ như phân biệt xem một đối tượng
đa phương tiện chứa thông tin giấu đã bị thay đổi, xuyên tạc nội dung hay là chỉ
bị nén mất dữ liệu). Yêu cầu chung đối với ứng dụng này là khả năng giấu thông
tin cao và thủy vân không cần bền vững.

- Dấu vân tay hay dán nhãn:

Thủy vân trong ứng dụng này được sử dụng để nhận diện người gửi hay
người nhận của một thông tin nào đó. Ví dụ như các vân khác nhau sẽ được
nhúng vào các bản sao khác nhau của thông tin gốc trước khi chuyển cho nhiều
người. Với những ứng dụng này thì yêu cầu là đảm bảo độ an toàn cao cho các
thủy vân tránh sự xóa dấu vết trong khi phân phối.

- Điều khiển truy cập: Các thủy vân trong những trường hợp này được sử
dụng để điều khiển truy cập đối với các thông tin.

- Kiểm soát sao chép: Ứng dụng trong các hệ thống phân phối dữ liệu đa
phương tiện nhằm chống lại sự sao chép trái phép dữ liệu.

- Điều khiển thiết bị: Các thiết bị phát hiện thuỷ vân (ở đây sử dụng
phương pháp phát hiện thuỷ vân đã giấu mà không cần thông tin gốc) được gắn

8
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

sẵn vào trong các hệ thống đọc ghi, tùy thuộc vào việc có thủy vân hay không để
điều khiển (cho phép/cấm) truy cập. Ví dụ như hệ thống quản lí sao chép DVD
đã được ứng dụng ở Nhật. Nhà sản xuất sẽ trang bị cho các phương tiện dùng để
nhân bản (như CD writer…) khả năng phát hiện xem digital media có chứa các
thủy vân hay không, nếu có thì sẽ từ chối không nhân bản.

- Theo dõi quá trình sử dụng (tracking): Thủy vân số có thể được dùng để
theo dõi quá trình sử dụng của các phương tiện số (digital media). Mỗi bản sao
của sản phẩm được chứa bằng một thủy vân duy nhất dùng để xác định người
dùng là ai. Nếu có sự nhân bản bất hợp pháp, ta có thể truy ra người vi phạm
nhờ vào thủy vân được chứa bên trong các phương tiện này.

- Theo dõi truyền thông: Các công ty truyền thông và quảng cáo có thể
dùng kĩ thuật thủy vân số để quản lí xem có bao nhiêu khách hàng đã dùng dịch
vụ mà họ cung cấp.

9
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

CHƯƠNG 2 ẨN MÃ
2.1 Khái niệm ẩn mã
Ẩn mã học (steganography) là một nghệ thuật và khoa học của việc
chuyển thông tin bí mật theo cách mà chính sự tồn tại của thông tin bí mật cần
chuyển là không bị phát hiện ra (còn gọi là giấu tin).

Trong thời đại công nghệ thông tin hiện nay, có rất nhiều đối tượng được
sử dụng để giấu tin, phổ biến nhất là các đối tượng số hóa như: ảnh số, âm thanh
số, các văn bản điện tử, các kênh liên lạc số hóa… Các đối tượng này được gọi
là vật phủ (cover object). Sau khi đã nhúng thông tin cần giấu vào vật phủ này
chúng trở thành vật mang tin hay vật ẩn mã (stego object), các vật ẩn mã này có
vẻ bề ngoài không khác gì so với các vật phủ thông thường khác.

2.2 Các nguyên lí của ẩn mã


Hầu hết các ứng dụng ẩn mã học tuân theo một nguyên lí chung được
minh họa trong hình sau: Alice, người muốn chia sẻ một thông điệp mật m với
Bob, chọn ngẫu nhiên một thông điệp vô hại bất kì c, gọi là vật phủ (cover-
object). Thông điệp c có thể được truyền đến Bob mà không bị nghi ngờ. Sau đó
Alice gắn thông điệp bí mật vào trong c, để thay đổi vật phủ c thành vật có chứa
tin s (stego-object). Điều này phải được làm một cách thật cẩn thận sao cho một
người thứ ba, chỉ biết thông điệp s, không thể phát hiện được sự tồn tại của
thông điệp bí mật m.

10
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.1 Nguyên lí cơ bản của ẩn mã học

Trong một hệ thống “hoàn hảo”, một vật phủ bình thường phải không
phân biệt được với một vật stego bởi một người hoặc bởi máy tính tìm kiếm các
mẫu thống kê. Về mặt lí thuyết, vật phủ có thể là bất kì dữ liệu nào máy tính có
thể đọc được như các tệp ảnh, âm thanh số, hoặc văn bản.

Sau đó, Alice truyền s trên một kênh không an toàn và hi vọng Wendy
không phát hiện được thông điệp kèm trong đó. Bob có thể xây dựng lại m vì
anh ta biết cách gắn thông tin sử dụng bởi Alice. Quá trình tách thông tin này
phải thực hiện được mà có thể không cần vật phủ gốc c.

Một người thứ ba (Wendy) theo dõi quá trình truyền tin phải không thể
xác định được liệu trong vật phủ được gửi đi có chứa thông tin mật hay không.
Một cách hình thức hơn, nếu một người quan sát truy nhập được vào một tập
{ } các vật phủ được truyền giữa hai bên, anh ta không thể xác định
được vật phủ nào chứa thông tin mật. Như vậy, độ an toàn của quá trình
truyền thông không nhìn thấy được chủ yếu dựa trên sự không có khả năng phân
biệt giữa vật phủ và vật có nhúng tin.

Tuy nhiên trong thực tế, không phải tất cả mọi dữ liệu đều có thể sử
dụng làm vật phủ trong truyền thông mật, vì đòi hỏi những sự thay đổi thực hiện
trong quá trình nhúng tin phải không nhìn thấy được đối với những người không

11
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

liên quan gì đến quá trình truyền thông. Điều này đòi hỏi vật phủ phải có một
lượng dữ liệu dư thừa đủ để được thay thế bởi thông tin mật. Do sai số của các
phép đo, bất kì dữ liệu nào là kết quả của một quá trình quét thông tin vật lí
(chẳng hạn máy ghi âm, máy quét ảnh) đều có chứa một thành phần ngẫu nhiên
gọi là nhiễu. Những phần ngẫu nhiên như vậy có thể được sử dụng để đưa vào
các thông tin mật như chúng ta sẽ thấy ở các phần sau. Trong thực tế, các dữ liệu
nhiễu đều có tính chất có ích trong hầu hết các ứng dụng ẩn mã học.

Hiển nhiên một vật phủ không nên được sử dụng hai lần, vì một người
tấn công truy nhập được vào hai “phiên bản” của một vật phủ sẽ dễ dàng phát
hiện và thậm chí có thể xây dựng lại được thông tin mật. Để tránh việc sử dụng
lại, cả người gửi và người nhận phải huỷ bỏ các vật phủ đã được sử dụng trong
quá trình truyền tin.

Về cơ bản có ba loại giao thức ẩn mã học: ẩn mã thuần tuý, ẩn mã khoá


bí mật và ẩn mã khoá công khai.

2.2.1 Ẩn mã thuần túy


Chúng ta gọi một hệ ẩn mã trong đó không yêu cầu trao đổi các thông tin
mật về khóa (chẳng hạn như một khoá nhúng) là hệ ẩn mã thuần tuý. Một cách
hình thức, quá trình nhúng tin có thể được mô tả như một ánh xạ ,
trong đó C là tập các vật phủ có thể và M là tập các thông điệp có thể. Quá trình
trích xuất tin là một ánh xạ trích rút thông điệp mật ra khỏi vật phủ.
Rõ ràng, ta cần phải có | | | |. Cả người gửi và người nhận đều phải biết
thuật toán nhúng tin và trích xuất tin, nhưng các thuật toán đó không được công
khai.

Định nghĩa 2.1 (Ẩn mã thuần tuý). Bộ bốn ( ), trong đó C


là tập các vật phủ có thể, M là tập các thông điệp mật với | | | |,
là hàm nhúng tin và là hàm trích xuất tin với tính chất
( ( )) với và được gọi là hệ ẩn mã thuần tuý.

Trong hầu hết các hệ ẩn mã, tập C được chọn bao gồm các thông điệp vô
hại và có ý nghĩa (như tập các ảnh số, hoặc tập các văn bản ...), hai bên truyền
thông có thể trao đổi mà không bị nghi ngờ. Quá trình nhúng tin được định
12
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

nghĩa theo một cách sao cho một vật phủ và vật có chứa tin tương ứng trông
tương tự nhau. Một cách hình thức, tính chất tương tự có thể được định nghĩa
qua một hàm tương tự:

Định nghĩa 2.2(Hàm tương tự). Cho C là một tập không rỗng. Một hàm
( ] được gọi là hàm tương tự trên C nếu:

( ) (2.1)

( )

Trong trường hợp ảnh số hoặc âm thanh số, tương quan giữa hai tín hiệu
có thể được dùng làm hàm tương tự. Như vậy, hầu hết các hệ ẩn mã trong thực
tế đều cố gắng thoả mãn điều kiện ( ( )) và .

Các vật phủ chưa được sử dụng phải là của riêng người gửi (nghĩa là một
người tấn công phải không được quyền truy nhập vào các vật phủ sử dụng trong
truyền thông mật). Chẳng hạn, người gửi có thể tạo vật phủ bằng kĩ thuật ghi âm
hoặc quét ảnh. Với mỗi quá trình truyền tin, vật phủ được chọn một cách ngẫu
nhiên. Thay vì chọn vật phủ một cách ngẫu nhiên, người gửi có thể tìm kiếm
trong cơ sở dữ liệu các vật phủ dùng được và chọn một cái mà quá trình nhúng
tin sẽ làm thay đổi ít nhất. Một quá trình lựa chọn như vậy có thể được thực hiện
thông qua hàm tương tự sim. Khi mã hoá, người gửi chọn một vật phủ c với

( ( )) ( ( )) (2.2)
Nếu vật phủ là kết quả của một quá trình ghi âm hoặc quét ảnh nào đó, ta
có thể số hoá lại nhiều lần. Do sự nhiễu trong thiết bị số hoá, mỗi lần sẽ cho ra
một vật phủ hơi khác. Người gửi sẽ chọn một cái phù hợp nhất.

Một số phương pháp ẩn mã kết hợp mật mã học truyền thống với ẩn mã
học: người gửi mã hoá thông điệp trước khi nhúng vào vật phủ. Rõ ràng, một sự
kết hợp như vậy sẽ làm tăng độ an toàn của toàn bộ quá trình truyền thông vì sẽ
khó khăn hơn cho một người tấn công phát hiện văn bản mã hoá (bản thân cũng
đã tựa ngẫu nhiên) được nhúng vào trong một vật phủ. Tuy nhiên, các hệ ẩn mã
học mạnh không cần phải mã hoá thông điệp trước.

13
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

2.2.2 Ẩn mã khóa bí mật


Với ẩn mã thuần tuý, không có thông tin nào (ngoài các hàm E và D) là
cần thiết để khởi động quá trình truyền thông. Độ an toàn của nó phụ thuộc toàn
bộ vào sự bí mật của nó. Như vậy chúng ta phải giả sử Wendy biết thuật toán mà
Alice và Bob sử dụng để giấu tin. Về mặt lí thuyết, cô ta có thể trích xuất thông
tin từ mọi vật phủ được truyền giữa Alice và Bob. Do vậy, đối với ẩn mã khóa bí
mật, độ an toàn của hệ ẩn mã phải được dựa trên thông tin bí mật nào đó giữa
Alice và Bob, gọi là khoá nhúng. Nếu không biết khoá này, không ai có thể trích
xuất được thông tin ra từ các vật phủ.

Một hệ ẩn mã khoá bí mật có điểm tương tự như một hệ mật khóa đối
xứng: người gửi chọn một vật phủ c, gắn thông điệp mật vào c và sử dụng một
khoá k. Nếu người nhận biết khoá k, anh ta có thể đảo ngược lại quá trình và
trích ra được thông tin mật. Một người bất kì không biết khoá k sẽ không biết
được nội dung ngay cả khi sự tồn tại của thông điệp mật bị phát hiện. Một lần
nữa, vật phủ c và vật có nhúng tin cũng phải tương tự nhau.

Định nghĩa 2.3 (Ẩn mã khoá bí mật). Bộ năm ( ),


trong đó C là tập các vật phủ có thể, M là tập các thông điệp mật với | | | |,
K là tập các khoá bí mật, và với tính chất
( ( ) ) với và c và được gọi là một hệ ẩn
mã khoá bí mật.

Ẩn mã khoá bí mật yêu cầu sự trao đổi một khoá nào đó, mặc dù việc
truyền thông tin bí mật bổ sung đó phá vỡ dự định ban đầu về truyền thông
không nhìn thấy được. Như vậy cũng như trong mật mã học, chúng ta giả sử tất
cả các bên tham gia có khả năng trao đổi các khoá bí mật trên một kênh an toàn.
Alice và Bob có thể thoả thuận một khoá nhúng trước. Sau đó, bằng cách sử
dụng các tính chất đặc trưng (feature) của vật phủ và một hàm băm an toàn H, ta
có thể tính được một khoá sử dụng cho truyền thông mật một cách trực tiếp từ
vật phủ: ( ). Nếu như quá trình nhúng tin không thay đổi tính chất
đặc trưng “feature”, người nhận có thể tính lại khoá. Hiển nhiên một tính chất
như vậy phải phụ thuộc rất nhiều vào vật phủ để có được một độ an toàn thoả
đáng. Phương pháp này cũng có thể được sử dụng để tính một khoá phiên bí mật
14
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

từ khoá chung có hiệu lực trong khoảng thời gian dài hơn nếu như hàm băm
phụ thuộc vào .

Một vài thuật toán yêu cầu phải biết vật phủ gốc (hoặc một thông tin nào
đó không rút ra được từ vật có nhúng tin) trong khi trích xuất tin. Các hệ thống
như vậy ít được quan tâm vì cần phải truyền cả vật phủ, một vấn đề liên quan
nhiều đến trao đổi khoá trong mật mã học truyền thống. Các thuật toán này có
thể xem như trường hợp đặc biệt của ẩn mã học khoá bí mật với hoặc
trong đó là kí hiệu một tập khoá bổ sung bí mật.

2.2.3 Ẩn mã khóa công khai


Cũng như trong mật mã khoá công khai, ẩn mã khoá công khai không
dựa trên việc trao đổi khoá bí mật. Các hệ ẩn mã khoá công khai yêu cầu việc sử
dụng hai khoá: một khoá riêng và một khoá công khai, khoá công khai được lưu
trữ trong một cơ sở dữ liệu. Trong khi khoá công khai được sử dụng trong quá
trình nhúng tin, khoá riêng được sử dụng để xây dựng lại thông điệp mật.

Một cách để xây dựng một hệ ẩn mã khoá công khai là sử dụng một hệ
mật mã khoá công khai. Chúng ta giả sử Alice và Bob có thể trao đổi các khoá
công khai của một thuật toán mật mã khoá công khai nào đó trước. Ẩn mã khoá
công khai khai thác việc hàm trích xuất thông tin D trong một hệ ẩn mã có thể
được áp dụng cho một vật phủ bất kì c, dù cho nó có chứa bí mật hay không
(nhắc lại rằng D là một hàm trên toàn bộ tập C). Trong trường hợp c không chứa
thông điệp mật, kết quả sẽ là một phần tử ngẫu nhiên thuộc M. Chúng ta gọi đó
là sự ngẫu nhiên tự nhiên của vật phủ. Nếu ta giả sử rằng sự ngẫu nhiên tự nhiên
đó về mặt thống kê là không có gì khác với văn bản được mã hoá bởi một hệ mã
mật khoá công khai nào đó, một hệ ẩn mã an toàn có thể được xây dựng bằng
cách gắn các văn bản được mã hoá thay vì gắn các thông điệp mật không được
mã hoá.

Một giao thức cho phép ẩn mã khoá công khai được giới thiệu bởi
Anderson, nó dựa trên thực tế là các thông tin được mã hoá đủ ngẫu nhiên để có
thể “giấu được dưới mắt thường”. Alice mã hoá thông tin bằng khoá công khai
của Bob để thu được một thông điệp trông có vẻ ngẫu nhiên và gắn nó vào một

15
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

kênh gửi cho Bob (và do đó Wendy cũng có thể nhận được), bằng cách đó thay
thế một phần nào đó sự ngẫu nhiên tự nhiên có mặt trong mọi quá trình truyền
thông. Chúng ta giả sử rằng cả thuật toán mật mã và hàm nhúng tin đều được
công khai. Bob, không thể xác định trước thông điệp mật có được truyền trong
một vật phủ cụ thể hay không, sẽ nghi ngờ rằng có một thông điệp được gửi tới
và đơn giản trích nó ra và giải mã sử dụng khoá riêng của anh ta. Nếu vật phủ
thực sự chứa thông tin, thông tin được giải mã sẽ là thông điệp của Alice.

Vì chúng ta giả sử Wendy biết thuật toán nhúng tin, cô ta có thể thử trích
thông điệp mật gửi từ Alice đến Bob. Tuy nhiên, thuật toán mã hoá sinh ra văn
bản mã hoá tựa ngẫu nhiên, Wendy sẽ không thể biết gì hơn là thông tin được
trích ra là một số bít ngẫu nhiên. Do vậy, cô ta không thể xác định được thông
tin được trích ra là có ý nghĩa hay chỉ là phần của sự ngẫu nhiên tự nhiên, trừ khi
cô ta phá được hệ mã mật.

Điều quan trọng hơn là Bob phải nghi ngờ việc sử dụng kĩ thuật ẩn mã
và cố gắng trích xuất thông điệp và giải mã nó từ tất cả các vật phủ được gửi đến
bởi Alice (anh ta thậm chí có thể không biết Alice với tư cách cá nhân). Nếu như
thông điệp được nhúng không được định hướng đến một người cụ thể, chẳng
hạn được đăng trên một nhóm tin (newsgroup) trên Internet, thì vấn đề sẽ còn
khó khăn hơn. Mặc dù giao thức vẫn hoạt động trong trường hợp này (chỉ có
người nhận theo dự định giải mã được thông điệp mật, vì anh ta có khoá riêng
đúng) nhưng tất cả các người nhận đều phải thử giải mã tất cả các đối tượng
được đăng lên.

Craver mở rộng giao thức này để mô phỏng ẩn mã thuần tuý sử dụng cả


ẩn mã khoá công khai và khoá riêng. Trong hầu hết các ứng dụng, ẩn mã thuần
tuý được ưa chuộng hơn vì không cần phải có khoá nhúng chia sẻ giữa các bên
truyền thông, mặc dù một giao thức ẩn mã thuần tuý sẽ không có sự an toàn nếu
một người tấn công biết phương pháp nhúng tin. Nhưng nhờ sử dụng một giao
thức trao đổi khoá dùng ẩn mã khoá công khai, Alice và Bob có thể trao đổi một
khoá bí mật k để sau đó có thể sử dụng trong hệ ẩn mã khoá bí mật. Vì không có
khoá nhúng nào (bên cạnh khoá mật mã công khai của họ) cần phải được biết

16
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

trước, chúng ta có thể xem quá trình truyền thông như là ẩn mã thuần tuý, mặc
dù nó không thoả mãn định nghĩa 2.1.

Trong giao thức này, đầu tiên Alice sinh ra một cặp khoá công khai/riêng
dùng cho một hệ mật mã khoá công khai bất kì. Sau đó cô ta gắn khoá công khai
vào một kênh mà Bob có thể biết và xem được (do đó Wendy cũng có thể biết
và xem được). Cả Bob và Wendy đều không biết được kênh có chứa thông tin
hay là chỉ một số bít ngẫu nhiên. Tuy nhiên, Bob nghi ngờ vật mà Alice gửi có
chứa khoá công khai của Alice và cố gắng trích nó ra. Anh ta lấy ngẫu nhiên
một khoá k kèm theo một thông điệp ngắn xác nhận, cả hai đều được mã hoá bởi
khoá công khai của Alice, gắn chúng vào một vật phủ và gửi cho Alice. Một lần
nữa, Wendy có thể thử trích thông điệp mật gửi bởi Bob, nhưng sẽ chỉ nhận
được văn bản mã hoá tựa ngẫu nhiên. Alice nghi ngờ có một thông điệp đến từ
Bob, rút thông điệp mật ra và giải mã với khoá riêng của cô ta. Bây giờ Alice và
Bob cùng chia sẻ một khoá stego k.

Tuy nhiên, giao thức này (ở bước đầu tiên) dễ bị phá vỡ bởi sự tấn công
xen giữa. Nếu Wendy chủ động, cô ta có thể chặn vật có nhúng tin đầu tiên gửi
từ Alice đến Bob và thay thế khoá công khai của Alice bằng khoá của chính cô
ta. Bob sẽ mã hoá khoá bí mật ngẫu nhiên k bằng khoá công khai của Wendy
thay vì của Alice. Bây giờ Wendy biết khoá k chọn bởi Bob và có thể gửi nó cho
Alice: cô ta mã hoá bằng khoá công khai của Alice, gắn nó vào một vật phủ và
gửi cho Alice. Mặc dù Alice nhận được k một cách đúng đắn nhưng cô ta không
hề biết rằng Wendy cũng biết được khoá k.

2.3 An toàn và ẩn mã
2.3.1 Khái niệm an toàn ẩn mã
Mục đích truyền tin ẩn mã là che giấu đi sự tồn tại của thông báo bí mật.
Vì vậy, không giống như mật mã, độ an toàn của một hệ ẩn mã được đánh giá
bởi khả năng không thể phát hiện ra chứ không bằng sự khó khăn trong việc đọc
nội dung thông báo.

Bài toán phân tích ẩn mã là một bài toán quyết định (một đối tượng cho
trước có chứa một thông điệp bí mật hay không), do đó độ đo lí thuyết quyết

17
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

định được coi là độ an toàn ẩn mã. Trong phân tích ẩn mã, người ra quyết định
có thể mắc hai loại sai lầm, mà xác suất xảy ra được xác định như sau:

Bảng 2.1 Các trạng thái kết quả và xác suất sai lầm của phân tích ẩn mã

Thực tế
Kết quả phát hiện
Vật phủ Vật ẩn mã

Từ chối đúng Không phát hiện


Vật phủ

Phát hiện nhầm Phát hiện đúng


Vật ẩn mã

- Xác suất mà người phân tích ẩn mã không phát hiện một đối tượng ẩn
mã được gọi là xác suất không phát hiện và được kí hiệu là .

- Xác suất mà người phân tích ẩn mã xem nhầm một vật phủ rõ như một
đối tượng ẩn mã được gọi là xác suất khẳng định sai (false positive probability)
và kí hiệu là .

Theo lí thuyết thông tin, nếu độ đo an toàn của hệ ẩn mã là sự không


phân biệt thống kê của các phân phối thì các xác suất sai lầm trên có thể được sử
dụng trong khái niệm entropy tương đối nhị phân (binary relative entropy)
( ) của hai phân phối nhị thức với các tham số và .

( ) ( ) (2.3)

Nếu ( ) thì hệ ẩn mã đạt độ an toàn hoàn thiện và giá trị này


càng lớn thì hệ ẩn mã càng dễ bị phát hiện.

Ngoài ra, trực quan con người đối với các sửa đổi ẩn mã cũng có thể
được coi như một độ đo an toàn của ẩn mã. Tuy nhiên, so với các phương pháp

18
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

thống kê hiện đại thì hướng tiếp cận theo trực quan là ít tin cậy, phụ thuộc vào
các đặc điểm hình ảnh cụ thể và không hoàn toàn tự động.

2.3.2 An toàn hoàn hảo


Cachin đưa ra một định nghĩa lí thuyết thông tin hình thức về an toàn của
hệ ẩn mã. Ý tưởng chính là việc lựa chọn vật phủ xem như một biến ngẫu nhiên
C với phân bố xác suất . Việc nhúng các thông điệp mật được xem như một
hàm xác định trên C. Gọi là phân bố xác suất của ( ) trên tập tất cả
các vật có nhúng tin được sinh ra bởi hệ ẩn mã. Nếu một vật phủ c không bao
giờ được sử dụng như một vật có nhúng tin thì ( ) . Để tính được , phân
bố xác suất trên K và M phải được cho trước. Sử dụng định nghĩa entropy tương
đối ( ‖ ) giữa hai phân bố và trên tập C, ta có:

( )
( ‖ ) ∑ ( )
( )
đo độ không hiệu quả khi giả sử phân bố là trong khi phân bố thực sự là –
tác động của quá trình nhúng tin trên phân bố có thể đo được. Cụ thể, chúng
ta định nghĩa độ an toàn của một hệ ẩn mã theo ( ‖ ).

Định nghĩa 2.4 (Độ an toàn hoàn hảo). Giả sử là một hệ ẩn mã, là
phân bố xác suất của các vật có nhúng tin gửi trên kênh, là phân bố xác suất
của C. được gọi là -an toàn đối với người tấn công thụ động nếu:

( ‖ ) (2.4)
và gọi là an toàn hoàn hảo nếu .

Do ( ‖ ) nếu và chỉ nếu hai phân bố là bằng nhau, chúng ta có


thể kết luận rằng một hệ ẩn mã là an toàn hoàn hảo (về mặt lí thuyết), nếu như
quá trình nhúng tin vào vật phủ không làm thay đổi phân bố xác suất của C.
Chúng ta có thể xây dựng một hệ ẩn mã với độ an toàn hoàn hảo.

Định lí 2.5 Tồn tại hệ ẩn mã an toàn hoàn hảo.

Chứng minh: Chúng ta sẽ đưa ra một chứng minh có tính chất xây dựng.
Giả sử C là tập các xâu bít có độ dài n. là phân bố đều trên C, và e là một

19
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

thông điệp mật ( ). Người gửi chọn ngẫu nhiên một và tính ,
trong đó là toán tử XOR bít. Vật có nhúng tin s sẽ được phân bố đều trên C,
do vậy và ( ‖ ) . Trong quá trình trích xuất tin, thông điệp mật
e có thể được xây dựng lại bằng cách tính .

Hệ thống trên rất đơn giản nhưng không hữu dụng, vì sẽ rất khó để Alice
và Bob có thể trao đổi được các xâu bít ngẫu nhiên.

2.4 Các kĩ thuật ẩn mã trên ảnh số


2.4.1 Xử lí ảnh: Nén JPEG
2.4.1.1 Chuyển đổi điểm ảnh sang YCbCr
Bước đầu tiên là chuyển đổi các lớp màu RGB của hình ảnh vào ba
thành phần khác nhau (Y, Cb, và Cr). Thành phần Y liên quan tới độ sáng và hai
thành phần màu U, V. Các hệ số màu của hình ảnh (Cb và Cr) được xác định bởi
một lưới 2D trong đó có màu lam/vàng ở một trục và đỏ/xanh ở trục còn lại.
Mô hình YUV được sử dụng trong hệ thống phát sóng truyền hình theo
chuẩn PAL, đây là chuẩn ở phần lớn các nước. Mô hình YUV giúp tạo ra màu
đúng với nhận thức của con người hơn chuẩn RGB, là loại được dùng trong các
thiết bị đồ họa máy tính, nhưng không chuẩn bằng không gian màu HSV. Không
gian màu YCbCr hay YPbPr, được sử dụng trong các thiết bị phát hình, đều
xuất phát từ YUV (Cb/Pb và Cr/Pr là những phiên bản biến thể của U và V).
Các tín hiệu YUV đều xuất phát từ các nguồn RGB. Các giá trị trọng số của R,
G và B được cộng lại với nhau để tạo ra một tín hiệu Y đơn, để biểu diễn độ
sáng chung tại một điểm đó. Tín hiệu U sau đó được tạo ra bằng cách trừ Y khỏi
tín hiệu xanh lam (B của RGB), và được nhân với một tỉ lệ có sẵn; còn V được
tính bằng cách trừ Y khỏi màu đỏ (R của RGB), và nhân tỉ lệ với một hệ số
khác.
Các công thức sau có thể dùng để tính toán Y, U và V từ R, G và B:

20
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ) (2.5)
( )
Ở đây R, G, B được giả sử nằm trong khoảng 0 đến 1, với 0 biểu diễn
cường độ bé nhất còn 1 là cường độ lớn nhất.

2.4.1.2 Giảm giá trị thành phần màu


Giai đoạn thứ hai của nén JPEG là quá trình giảm chất lượng màu với
mục đích giảm kích cỡ của ảnh. Mắt người thường nhạy cảm với những thay đổi
về độ sáng hơn là những thay đổi về màu sắc. Điều này có nghĩa là có thể loại
bỏ rất nhiều thông tin màu sắc từ một hình ảnh mà không làm giảm nhiều chất
lượng. Do đó việc làm giảm kích cỡ tổng thể của tệp thường sử dụng cách giảm
chất lượng màu.

Nén ảnh JPEG thường giảm chất lượng màu bằng cách lấy 4 điểm ảnh
lân cận và lấy giá trị trung bình của chúng. Việc làm này cho toàn bộ hình ảnh
 1 3  
sẽ làm mất đi      2  lượng thông tin của hình ảnh, tức là chiếm khoảng một
 3 4  
nửa. Tuy nhiên sẽ không có bất cứ điều gì gây chú ý về chất lượng của hình ảnh
ở đây.

Hình 2.2 Hình ảnh được nén bằng thuật toán nén JPEG

Hình 2.2 cho thấy một hình ảnh đã được nén sử dụng định dạng JPEG
với một hệ số của 8. Điều này có nghĩa rằng các thông tin màu sắc cho hình ảnh
này bao gồm các khối điểm ảnh . Chất lượng của tập tin này dường như

21
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

hoàn toàn chấp nhận được bằng mắt thường, nhưng ta hãy xem cách thức để
hình ảnh có trạng thái này.

Hình 2.3 Ba kênh cho định dạng nén JPEG

2.4.1.3 Chuyển các giá trị điểm ảnh sang tần số


Phép biến đổi Fourier và phép biến đổi Cosin có thể được sử dụng để
ánh xạ một tín hiệu vào miền tần số. Phép biến đổi Fourier thường được sử dụng
trong xử lí âm thanh. Còn biến đổi Cosin rời rạc (DCT) thường được sử dụng
cho việc xử lí hình ảnh để biến chúng thành tần số. DCT biến đổi dữ liệu dưới
dạng biên độ thành dữ liệu dưới dạng tần số. Mục đích của quá trình biến đổi là
thay đổi dữ liệu biểu diễn thông tin: dữ liệu của ảnh con tập trung vào một phần
nhỏ các hệ số hàm truyền. DCT đã trở thành tiêu chuẩn quốc tế cho các hệ thống
mã chuyển vị bởi nó có đặc tính gói năng lượng tốt, cho kết quả là số thực và có
các thuật toán nhanh để hiện chúng.

Các phép tính DCT được thực hiện trong phạm vi các khối mẫu tín
hiệu chói Y và các khối tương ứng của tín hiệu màu. Việc chia hình ảnh thành
các khối đã được thực hiện ở khối tiền xử lí. Hiệu quả của việc chia này rất dễ
thấy. Nếu ta tính toán DCT trên toàn bộ khung thì ta xem như toàn bộ khung có
độ dư thừa như nhau. Đối với một hình ảnh thông thường, một vài vùng có một
số lượng lớn các chi tiết và các vùng khác có ít chi tiết. Nhờ đặc tính thay đổi
của các ảnh khác nhau và các phần khác nhau của cùng một ảnh, ta có thể cải
thiện một các đáng kể việc mã hóa nếu biết tận dụng nó.

22
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

a. DCT một chiều


DCT một chiểu biến đổi biên độ tín hiệu tại các điểm rời rạc theo thời
gian hoặc không gian thành chuỗi các hệ số rời rạc, mỗi hệ số biểu diễn biên độ
của một thành phần tần số nhất định có trong tín hiệu gốc. Hệ số đầu tiên biểu
diễn mức DC trung bình của tín hiệu. Từ trái sang phải, các hệ số thể hiện các
thành phần tần số không gian cao hơn của tín hiệu và được gọi là các hệ số AC.
Thông thường, nhiều hệ số AC có giá trị sẽ gần bằng 0.

Quá trình biến đổi DCT thuận (FDCT) dùng trong tiêu chuẩn JPEG được
định nghĩa như sau:

( )
( ) √ ( )∑ ( ) (2.6)

Hàm biến đổi DCT ngược (một chiều):

( )
( ) √ ∑ ( ) ( )
(2.7)

Trong đó:

 ( ) là chuỗi kết quả


 ( ) là giá trị của mẫu m
 k là chỉ số của hệ số khai triển
 N là số mẫu có trong tín hiệu

 ( ) {√ }
ế
b. DCT hai chiều
Để tách tương quan nội dung ảnh cao hơn, mã hóa DCT hai chiều được
dùng cho các khối giá trị các điểm chói. Quá trình biến đổi DCT thuận
FDCT dùng trong tiêu chuẩn JPEG được định nghĩa như sau:

23
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ) ( ) ( ) ( )
( ) ∑∑ ( ) (2.8)

Trong đó:

 ( ): các mẫu gốc trong khối điểm ảnh cỡ


 ( ): các hệ số của khối DCT

 ( ) ( ) {√ }
ế
Phương trình trên là một liên kết của hai phương trình DCT một chiều,
một cho tần số ngang và một cho tần số đứng. Giá trị trung bình của khối
chính là hệ số thứ nhất (khi )

( ) ∑∑ ( ) (2.9)

Phương trình này cộng tất cả các giá trị điểm ảnh trong khối . Kết
quả phép tính bằng 8 lần giá trị điểm ảnh trung bình trong khối. Do đó hệ số thứ
nhất được gọi là hệ số DC. Các hệ số khác, dưới giá trị thành phần một chiều,
biểu diễn các tần số cao hơn theo chiều dọc. Các hệ số ở về phía bên phải của
thành phần một chiều biểu thị các tần số cao hơn theo chiều ngang. Hệ số trên
cùng ở cận phải ( ) sẽ đặc trưng cho tín hiệu có tần số cao nhất theo phương
nằm ngang của ma trận , và hệ số hàng cuối bên trái ( ) sẽ đặc trưng cho
tín hiệu có tần số cao nhất theo phương thẳng đứng. Còn các hệ số khác ứng với
những phối hợp khác nhau của các tần số theo chiều dọc và chiều ngang.

Phép biến đổi DCT hai chiều là biến đổi đối xứng và biến đổi nghịch có
thể tạo lại các giá trị mẫu ( ) trên cơ sở các hệ số ( ) theo công thức sau:

( ) ( ) ( ) ( )
( ) ∑∑ ( ) (2.10)

Như vậy, biến đổi DCT giống như biến đổi Fourier và các hệ số ( )
cũng giống nhau về ý nghĩa. Nó biểu diễn phổ tần tín hiệu được biễu diễn bằng
các mẫu ( ). Bản thân phép biến đổi DCT không nén được số liệu, từ 64
24
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

mẫu ta nhận được 64 hệ số. Tuy nhiên, phép biến đổi DCT thay đổi phân bố giá
trị các hệ số so với phân bố các giá trị mẫu.

Hình 2.4 là một ví dụ minh họa quá trình DCT hai chiều của một khối
điểm ảnh (chói) được trích ra từ một ảnh thực. Nếu dùng quá trình DCT
cho các tín hiệu số thành phần Y, Cr, Cb thì các tín hiệu Cb, Cr có biên độ cực
đại ±128 ( giá trị nhị phân trong hệ thống lấy mẫu 8 bít), còn tín hiệu Y có một
khoảng cực đại từ 0 đến 255 giá trị nhị phân. Để đơn giản việc thiết kế bộ mã
hóa DCT, tín hiệu Y được dịch mức xuống dưới bằng cách trừ 128 từ từng giá
trị điểm ảnh trong khối để có khoảng cực đại của tín hiệu giống như đối với các
tín hiệu Cr và Cb. Ở phần giải mã DCT, giá trị này (128) được cộng vào các giá
trị điểm ảnh chói. Giá trị hệ số DC của khối DCT có một khoảng từ –1024 đến
1016.

Đối với hệ số AC ( với , ( ) và ( ) và các giá trị


cực đại của nó nằm trong khoảng ±1020 theo phương trình FDCT. Khối
các giá trị của hệ số DCT đưa ra 1 giá trị DC lớn (ví dụ = 591), biểu diễn độ
sáng trung bình của khối và các giá trị rất nhỏ của các thành phần tần số
cao theo chiều ngang và chiều đứng.

Nguyên tắc chung là nếu có sự thay đổi nhiều giá trị điểm ảnh-đến-điểm
ảnh theo 1 chiều của khối điểm ảnh (ngang, đứng, chéo) sẽ tạo ra các giá trị hệ
số cao theo các chiều tương ứng của khối hệ số DCT.

25
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.4 Mã hóa khối bằng DCT hai chiều

Khi nén ảnh theo JPEG, ma trận các hệ số khai triển sau DCT phải được
nhân với bảng trọng số ( ) để loại bỏ một phần các hệ số có biên độ nhỏ
(thường là các thành phần cao tần). Trên hình 2.5 mô tả quá trình biến đổi DCT
26
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

từ ảnh gốc (a) và ma trận hệ số DCT trước (b) và sau (d) khi nhân với ( )
(c).

Hình 2.5 Khai triển DCT và bảng trọng số ( )

Ví dụ được trình bày trong hình 2.6, quá trình biến đổi DCT một khối
điểm ảnh có các giá trị điểm ảnh đen (giá trị = 0) và trắng (giá trị = 255) xen kẽ.
Sau khi giảm với –128 thu được các giá trị điểm ảnh trong dải động +127 và –
128. Đây là khối ảnh có sự biến đổi lớn nhất về giá trị biên độ các điểm ảnh và
các hệ số DCT kết quả xác định nhận xét này. Mặc dù có nhiều hệ số tần số
bằng 0, giá trị của các hệ số có tần số cao đóng vai trò quan trọng trong việc tái
tạo lại hình ảnh khi biến đổi DCT ngược.

27
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.6 Khai triển DCT cho khối ảnh có độ chói dạng bàn cờ

Tóm lại, DCT làm giảm độ tương quan không gian của thông tin trong
khối. Điều đó cho phép biễu diễn thích hợp ở miền DCT do các hệ số DCT có
xu hướng có phần dư thừa ít hơn. Điều này có nghĩa là DCT gói một phần lớn
năng lượng tín hiệu vào các thành phần biến đổi có tần số tương đối thấp để lưu
trữ hoặc truyền dẫn, tạo 0 và các giá trị rất thấp đối với thành phần tần số cao.
Nhờ đặc tính của hệ thống nhìn của mắt người, các hệ số DCT có thể được mã
hóa phù hợp, chỉ các hệ số DCT quan trọng nhất mới được mã hóa và truyền đi.
DCT thuận kết hợp với DCT nghịch sẽ không cho tổn thất nếu độ dài từ mã của
hệ số là 13 đến 14 bít cho tín hiệu video đầu vào được số hóa bằng các mẫu dài
8 bít. Nếu hệ số được lượng tử hóa bằng 11 bít (hoặc ngắn hơn), thì nén bằng
DCT sẽ có tổn hao.

28
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

2.4.1.4 Lượng tử hóa


Bước tiếp theo được cho là quan trọng nhất khi nén hình ảnh JPEG. Mục
đích là để lượng tử các giá trị biểu thị cho hình ảnh sau giai đoạn 3. Lượng tử
hóa là quá trình lấy các hệ số còn lại và chia chúng riêng rẽ từ một tập hợp các
giá trị được xác định trước và sau đó làm tròn kết quả với giá trị số thực gần
nhất. Các giá trị cao hơn các giá trị được xác định trước sẽ bị loại khỏi hình ảnh.
Càng nhiều các số cao hơn thì càng có nhiều chi tiết được loại bỏ. Mục tiêu là để
loại bỏ các giá trị tần số cao (dưới bên phải). Có thể hình dung như thế này, giả
sử từ trên cao nhìn xuống một khu rừng rất nhiều cây, có thể sẽ có nhiều cây con
nằm bên dưới những tán cây mà có thể nhìn được nhưng không thể thấy chúng,
nó không ảnh hưởng tới tầm nhìn của ta dù nó có ở đó hay không. Đây chính là
nguyên lí tương tự đối với lượng tử hóa, bằng cách loại bỏ các giá trị không làm
cho hình ảnh khác đi khi chúng không tồn tại, một lượng lớn dữ liệu có thể được
loại bỏ mà không ảnh hưởng tới chất lượng của ảnh.

Bất kì một sai sót nào trong quá trình lượng tử hệ số một chiều đều có
khả năng nhận biết dễ dàng bởi nó làm thay đổi mức độ chói trung bình của khối.
Ngược lại, với các hệ số tương ứng với tần số cao và có các giá trị nhỏ, thì có
thể biểu diễn lại bằng tập giá trị nhỏ hơn hẳn các giá trị cho phép.

Chức năng cơ bản của bộ lượng tử hóa là chia các hệ số ( ) cho các
hệ số ở vị trí tương ứng trong bảng lượng tử ( ) để biểu diễn số lần nhỏ hơn
các giá trị cho phép của hệ số DCT. Các hệ số có tần số thấp được chia cho các
giá trị nhỏ, các hệ số ứng với tần số cao được chia cho các giá trị lớn hơn. Sau
đó, các hệ số được làm tròn (bỏ đi các phần thập phân).

Kết quả ta nhận được bảng ( ) mới, trong đó phần lớn các hệ số có
tần số cao sẽ bằng 0. Hệ số lượng tử hóa thuận được xác định theo biểu thức:

( )
( ) ( )
( ) [ ] ê [ ] (2.11)
( ) ( )

Các giá trị ( ) sẽ được mã hóa trong các công đoạn tiếp theo.

29
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Cần phải xác định là trong quá trình lượng tử hóa có trọng số có xảy ra
mất thông tin, gây tổn hao. Đây là bước tổn hao duy nhất trong thuật toán nén.
Mức độ tổn hao phụ thuộc vào giá trị các hệ số trên bảng lượng tử. Sau khi nhân
các hệ số lượng tử hóa ( ) với ( ) và biến đổi ngược DCT sẽ không
nhận được khối sơ cấp các mẫu ( ). Tuy nhiên, trong trường hợp ảnh tự
nhiên và lựa chọn các giá trị ( ) thích hợp, sự khác nhau sẽ nhỏ đến mức
mà mắt người không phân biệt được giữa ảnh gốc và ảnh biểu diễn.

Các thành phần DC và tần số thấp là các thông số nhạy cảm nhất của
khối điểm ảnh gốc. Hệ số DC sẽ được lượng tử với độ chính xác 12 bít nhằm
tránh các nhiễu xuất hiện giữa các khối điểm ảnh. Ngược lại, các hệ số tần số
cao có thể lượng tử hóa thô với độ chính xác 2 bít do khả năng cảm nhận của
mắt người giảm ở tần số cao. Theo đó, hệ số chia trong bảng lượng tử hóa là nhỏ
đối với các hệ số có tần số thấp và tăng từ từ đối với các hệ số có tần số cao hơn.

Trong hình 2.7, giá trị khối xác định cho phép các giá trị tín hiệu chói và
tín hiệu màu được lượng tử khác nhau. Nhiễu lượng tử đối với tín hiệu màu khó
nhìn thấy hơn đối với tín hiệu chói, cho nên có thể thực hiện lượng tử hóa thô tín
hiệu màu.

Như vậy, khối DCT đóng vai trò quan trọng trong quá trình lượng tử hóa
khi thiết kế hệ thống nén video vì nó ảnh hưởng trực tiếp đến việc cho lại chất
lượng ảnh khôi phục tốt hay xấu.

Hình 2.7 Các bảng lượng tử cho tín hiệu chói vào màu theo chuẩn JPEG

30
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Việc biến đổi sao cho chất lượng hình ảnh do mắt người cảm nhận tốt,
phụ thuộc vào các thành phần tần số và sự biến đổi chi tiết ảnh từng vùng trong
miền không gian. Các ảnh càng chi tiết thì hệ số thành phần tần số cao càng lớn.

2.4.1.5 Sắp xếp zíc zắc


Việc lượng tử các hệ số DCT ở trên là khá điển hình. Chỉ có một vài giá
trị được giữ lại là khác không đa số sẽ luôn luôn là số không. Thường thì các số
khác không luôn nằm ở phía bên trên bên trái và các số không ở góc dưới bên
phải. Trong giai đoạn nén JPEG các giá trị này sẽ được sắp xếp lại bằng cách
dùng một loại chuyển động "zíc zắc" để các tần số tương tự được nhóm lại với
nhau. Việc xử lí 64 hệ số của khối 8x8 pixel bằng cách quét zig-zag làm tăng tối
đa chuỗi các giá trị 0 và do vậy làm tăng hiệu quả nén.

Hình 2.8 Sắp xếp zíc zắc của các thành phần ảnh JPEG

2.4.1.6 Mã hóa độ dài chạy (RLC)


Các giá trị lượng tử hóa có thể chỉ biểu diễn nhờ các từ mã có độ dài cố
định hay đồng đều, tức là các giá trị lượng tử hóa biễu diễn bằng cùng một số bít.
Tuy nhiên hiệu quả của việc mã hóa không cao. Để cải tiến hiệu quả người ta
dùng mã hóa entropy. Mã hóa entropy dùng những đặc tính thống kê của tín
hiệu được mã hóa. Một tín hiệu, ở đây là giá trị điểm ảnh hoặc các hệ số chuyển
vị, có chứa một lượng thông tin (entropy) tùy theo những xác suất của những giá
trị hay sự kiện khác nhau xuất hiện. Ví dụ những từ mã nào ít xảy ra hơn sẽ có
nhiều thông tin hơn từ mã hay xảy ra.

Khi dùng mã hóa entropy có hai vấn đề đặt ra: thứ nhất, mã hóa entropy
làm tăng độ phức tạp và yêu cầu bộ nhớ lớn hơn so với mã độ dài cố định. Thứ
hai, mã hóa entropy gắnliền với tính không ổn định của tín hiệu video sẽ làm tốc

31
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

độ bít thay đổi theo thời gian. Do đó, cần một cơ cấu điều khiển bộ đệm khi mã
hóa nguồn tốc độ bít biến đổi được ghép với kênh tốc độ bít hằng.

Bộ mã hóa entropy làm giảm độ dư thừa thống kê trong các phần tử


được mã hóa để truyền. Sự dư thừa chính là phân bố xác suất không đồng đều
trên giá trị của mỗi phần tử. Phân bố xác suất càng lệch khỏi phân bố đều thì
hiệu suất mã hóa entropy càng tăng. Mã Huffman là một trong những sơ đồ mã
được sử dụng phổ biến. Ngoài ra, trong mã hóa entropy còn sử dụng mã RLC sẽ
cho hiệu suất nén rất cao.

Kĩ thuật RLC được dùng để mã hóa có hiệu quả các hệ số DCT đã lượng
tử hóa hơn là dùng trực tiếp cho số liệu ảnh. Sau quá trình quét zíc zắc ở trên,
RLC sẽ được thực thi. Một hệ số khác 0 sau giá trị DC được mã hóa bằng 1 từ
mã bao gồm 2 thông số: số lượng 0 chạy trước 1 hệ số riêng khác 0 và mức của
nó sau khi lượng tử hóa. RLC thực chất là việc thay thế các hệ số có giá trị 0
bằng số lượng các chữ số 0 xuất hiện.

Hình 2.9 là một ví dụ về mã hóa entropy. Trong ví dụ này, chuỗi một


chiều các hệ số DCT sau khi quét zíc zắc với các giá trị giống nhau được gom
lại với nhau bằng mã RLC. Lúc này, chuỗi một chiều có các đoạn chuỗi dài có
cùng giá trị là các kí hiệu (symbol) có dạng: <chiều dài chuỗi 0, giá trị>.

Ở đây, giá trị 10 không có giá trị 0 nào trước đó được biễu diễn bằng
; giá trị –2 có hai giá trị 0 đứng trước được biễu diễn bằng
... Riêng một dấu đặc biệt là End of Block (EOB) được dùng để cho
biết tất cả các hệ số tiếp theo trong khối bằng 0. Trong ví dụ này, ta có một
chuỗi 49 từ mã với giá trị 0. Như vậy chỉ xét riêng 49 từ mã giá trị 0 được nén
xuống chỉ còn 3 từ mã. Điều này chứng tỏ hiệu suất nén rất cao của mã hóa RLC.
Nén bằng mã RLC là quá trình nén không tổn hao.

32
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.9 Quá trình mã RLC

2.4.1.7 Mã hóa độ dài thay đổi VLC


Các từ mã RLC tiếp tục được mã hóa bằng cách đặt các từ mã ngắn cho
các mức có xác suất xuất hiện cao và các từ mã dài cho các mức có xác suất xuất
hiện thấp. Bảng 2.2 minh họa các phân nhóm các hệ số AC. Bảng 2.3 là một ví
dụ về bảng mã Huffman tương ứng cho các nhóm. Từ mã ngắn báo hiệu kết thúc
khối (EOB) cho biết tất cả các hệ số còn lại trong khối mang giá trị 0. Trong ví
dụ khối hệ số DCT, hệ số DCT (40) được mã hóa DPCM bằng cách dùng giá trị
DC (25) của khối DCT trước. Mã hóa DPCM mở rộng thang biễu diễn tín hiệu
Y từ ( -1024 đến 1016) đến (-2048 đến 2032).

33
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Bảng 2.2 Phạm vi giá trị các hệ số trong các nhóm

Bảng 2.3 Ví dụ bảng Huffman cho hệ số AC

34
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Giá trị chênh lệch hệ số DC được mã hóa VLC nhờ một bảng tìm kiếm
(lookup table). Đầu ra của nó là một số nhị phân Huffman dựa trên giá trị chênh
lệch các hệ số DC này. Các hệ số AC biểu diễn bởi các từ mã RLC được mã hóa
Huffman bằng các bảng tìm kiếm. Đầu ra kết hợp với giá trị chạy (số lượng số 0
trước hệ số AC) để tạo một số nhị phân Huffman biểu diễn giá trị hệ số AC
tương ứng. Trong cả hai trường hợp mã hóa giá trị sai lệch hệ số DC và độ lớn
các hệ số AC đều sử dụng từ mã nhị phân ngắn nhất để biểu diễn chúng.

Tại đầu ra VLC, tất cả các từ mã của cùng một khối DCT được kết hợp
tạo thành một dòng tín hiệu ra. Trong ví dụ trên, số liệu tương ứng với khối
DCT ban đầu ( bít = 512 bít) được giảm thành 48 bít sau khi mã hóa
VLC. Hệ số nén trong trường hợp này bằng . Hệ số nén cũng
thường được tính bằng số bít biễu diễn điểm ảnh. Trong ví dụ trên, 48 bít biểu
diễn cho 64 điểm ảnh, theo đó thu được hệ số nén tương ứng là
(bít/điểm ảnh). Mã hóa VLC tự nó là một kĩ thuật mã hóa không tổn thất, nó cho
phép giảm thêm tốc độ dòng bít (đã được giải tương quan, làm tròn, và giảm qua
quá trình lượng tử hóa DCT). Quá trình mã hóa VLC cho hệ số DC và các hệ số
AC được mô tả trong sơ đồ khối ở hình 2.10.

35
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.10 Sơ đồ khối hệ thống mã VLC cho hệ số DC (a) và AC (b)

2.4.2 Kĩ thuật ẩn mã trên miền không gian ảnh


2.4.2.1 Kĩ thuật thay thế các bít có trọng số thấp nhất
Đây là một trong các kĩ thuật ẩn mã phổ biến nhất, được biết đến với tên
gọi là bít có trọng số thấp nhất (Least significant bit - LSB).

Bít có trọng số thấp nhất là bít có ảnh hưởng ít nhất tới việc quyết định
màu sắc của mỗi điểm ảnh, vì vậy khi thay đổi bít ít đặc trưng nhất của một
điểm ảnh thì màu sắc của điểm ảnh mới sẽ không thay đổi nhiều so với điểm ảnh
gốc ban đầu. Bít có trọng số thấp nhất của một điểm ảnh cũng tương tự như chữ
số hàng đơn vị của một số tự nhiên, khi ta thay đổi giá trị của chữ số này thì
chênh lệch giữa số cũ và số mới sẽ ít hơn khi ta thay đổi giá trị của chữ số hàng
chục hoặc hàng trăm. Việc xác định bít có trọng số thấp nhất của mỗi điểm ảnh

36
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

trong một bức ảnh phụ thuộc vào định dạng của ảnh và số bít màu dành cho mỗi
điểm của ảnh đó.

Các kĩ thuật giấu tin trên miền LSB thuộc nhóm giấu tin trong miền
không gian ảnh. Mục đích của phương pháp LSB là chọn ra các bít ít quan trọng
(ít làm thay đổi chất lượng của ảnh nền) và thay thế chúng bằng các bít thông tin
cần giấu. Để khó bị phát hiện, thông tin giấu thường được nhúng vào những
vùng mắt người kém nhạy cảm với màu sắc. Với ảnh 24 bít, mỗi màu được chứa
trong 3 byte, theo thứ tự từ trái qua phải, byte đầu tiên chứa giá trị biểu thị
cường độ màu lam (B), byte thứ hai chứa giá trị biểu thị cường độ màu xanh (G)
và byte thứ ba biểu thị cường độ màu đỏ (R). Như vậy, mỗi màu được xác định
bởi một số nguyên chạy từ .

Kĩ thuật giấu tin trên miền LSB gồm hai cách nhúng là: tuần tự và ngẫu
nhiên. Thuật toán nhúng tuần tự bắt đầu ở điểm ảnh đầu tiên của ảnh phủ và
nhúng các bít của thông điệp theo thứ tự cho đến khi không còn gì để nhúng.
Tuy nhiên với thuật toán nhúng ngẫu nhiên, các vị trí chứa các bít dữ liệu thông
điệp sẽ được phân tán thay đổi, lí do chính của phương pháp nhúng ngẫu nhiên
này là để tăng độ phức tạp đối với kẻ tấn công khi họ muốn xác định xem một
ảnh có được nhúng thông tin mật hay không.

Trong giai đoạn đầu của sự phát triển ẩn mã (như chúng ta biết ngày
nay), nhiều nhà ẩn mã tin rằng các bít ít quan trọng nhất của một hình ảnh là một
nơi lí tưởng để nhúng các thông điệp dữ liệu, vì thay đổi của chúng không ảnh
hưởng tới cảm nhận về chất lượng ảnh, và họ tin rằng các LSB là hoàn toàn
ngẫu nhiên với những hình ảnh đầy đủ. Để nghiên cứu vấn đề này, người ta đưa
ra khái niệm mặt phẳng bít.

Mặt phẳng bít của tín hiệu số rời rạc (như ảnh hoặc âm thanh) là tập các
bít tương ứng với một vị trí đã cho trong mỗi một các số nhị phân biểu diễn tín
hiệu đó.

Ví dụ, đối với biểu diễn dữ liệu 16 bít tồn tại 16 mặt phẳng bít: Mặt
phẳng bít thứ nhất (MSB) chứa tập các bít có ý nghĩa cao nhất, còn mặt phẳng
bít thứ 16 (LSB) chứa chứa tập các bít có ý nghĩa thấp nhất.

37
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Có thể thấy rằng mặt phẳng bít thứ nhất cho xấp xỉ thô nhất nhưng quan
trọng nhất đối với các giá trị của phương tiện, và số của mặt phẳng bít càng cao
thì đóng gọp của nó càng kém cho tầng cuối cùng. Như vậy việc thêm mặt
phẳng bít sẽ cho xấp xỉ tốt hơn.

MSB
Mặt phẳng bit 7
10110001
1

0 Mặt phẳng bit 6

1 Mặt phẳng bit 5

1 Mặt phẳng bit 4

0 Mặt phẳng bit 3

0 Mặt phẳng bit 2

0 Mặt phẳng bit 1

1 Mặt phẳng bit 0 LSB

Hình 2.11 Các mặt phẳng bít đối với biểu diễn dữ liệu 8 bit

Rõ ràng rằng giá trị cường độ của mỗi điểm ảnh có thể được biểu diễn
bởi vector nhị phân 8 bít ( ) hoặc ( ), trong đó mỗi
nhận giá trị “0” hoặc “1”. Khi đó ảnh có
thể được xem như vật phủ của 8 mặt phẳng bít. Mỗi mặt phẳng bít có thể được
xem như ảnh hai tông màu và có thể được biểu diễn bởi ma trận nhị phân.

Hình 2.12 minh họa lí do tại sao có ý tưởng rằng các bit ít quan trọng
nhất của một hình ảnh là một nơi lí tưởng để nhúng các thông điệp dữ liệu, nó
cho thấy một hình ảnh đen trắng (a) và cho phép so sánh của mỗi mặt phẳng bít

38
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

của nó (b) (i), trong đó "BP = 8" tương ứng với mặt phẳng bit quan trọng
nhất, và "BP = 1" tương ứng với mặt phẳng bit LSB.

Hình 2.12 Hình ảnh và các mặt phẳng bít giảm dần

Khi chúng ta nhìn vào một mặt phẳng bít theo cách này, ta thấy rằng mặt
phẳng LSB trong (i) là ngẫu nhiên hơn so với mặt phẳng bít phía trên như là (d).
Đây chính là lí do họ tin vào giả thuyết đó. Tuy nhiên, Andreas Westfeld và
Andreas Pfitzmann cho thấy giả thuyết này là không chính xác. Nghiên cứu của
họ cho thấy rằng các LSB có thể xuất hiện ngẫu nhiên là không nhiều hơn so với
bất kì mặt phẳng bít khác. Nếu chúng ta xem xét một hình ảnh tự nhiên (như vậy,
39
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

bất chấp nhân tạo hoặc các phác thảo dựa trên máy tính), hình ảnh gần như đảm
bảo bao gồm các đối tượng có chứa những thay đổi màu sắc dần dần do các bộ
lọc tự nhiên như ánh sáng, bóng tối, và kết cấu của đối tượng đó. Thông thường,
với mảnh tối trên ảnh sẽ tạo khuôn cho một đối tượng. Do đó, có vẻ như là
trường hợp mà các LSB của một hình ảnh có nhiều cấu trúc hơn nhà ẩn mã ban
đầu đã tin, và điều này đặt ra một điểm yếu rất lớn và có thể được khai thác
thông qua các cuộc tấn công trực quan. Điều này sẽ được nói đến trong phần
phân tích ẩn mã, nhưng bây giờ chúng ta chỉ chấp nhận rằng các LSB đã được
chọn là vị trí lí tưởng cho việc nhúng các thông điệp dữ liệu.

Thuật toán giấu và tìm kiếm tuần tự


Đây là thuật toán đơn giản nhất được sử dụng trong việc giấu tin trong
ảnh, nó được biết tới với tên gọi là Hide & Seek, kĩ thuật này thay thế các LSB
của các giá trị điểm ảnh (còn gọi là miền không gian) bởi các bít từ dòng bít
thông điệp.

Thuật toán đơn giản không đòi hỏi phải có khóa khi thực hiện, do vậy
việc viết chương trình và trao đổi bí mật đơn giản hơn rất nhiều, và độ an toàn
chỉ nằm trong các thuật toán. Nếu sử dụng khóa thì nó vẫn có thể làm cho kẻ tấn
công không thể trích xuất các thông điệp ẩn vì khóa thường chỉ ra các vùng
được thao tác của hình ảnh. Tuy nhiên, trong trường hợp thuật toán giấu và tìm
kiếm tuần tự, kẻ tấn công đơn giản chỉ cần hiểu các thuật toán hoạt động như thế
nào, và họ sẽ có thể trích xuất thông điệp.

Thuật toán nhúng tin giấu và tìm kiếm tuần tự:

Đầu vào:Ảnh phủ c, thông điệp m

Đầu ra: Ảnh có nhúng tin

40
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Quá trình nhúng tin thực hiện bằng cách lấy điểm ảnh đầu tiên ci của
hình ảnh và có được giá trị LSB của nó (dòng lệnh 2). Điều này thường đạt được
bằng cách tính modulo 2 của giá trị điểm ảnh, kết quả sẽ trả về 0 nếu số là chẵn
và 1 nếu là số lẻ, một cách hiệu quả để cho biết giá trị LSB. Sau đó ta so sánh
giá trị này với bít mi đang cần nhúng của thông điệp. Nếu chúng giống nhau thì
không phải thực hiện gì cả, nhưng nếu chúng khác nhau thì thực hiện thay thế ci
bởi mi. Quá trình này tiếp diễn khi vẫn còn giá trị trong m cần phải được nhúng.

Giai đoạn trích xuất thậm chí còn đơn giản hơn khi nhúng tin. Quá trình
này thay thế các LSB của các giá trị điểm ảnh trong c theo thứ tự, ta đã biết thứ
tự nên dễ dàng sử dụng để lấy dữ liệu. Tất cả việc cần làm là tính toán modulo 2
của tất cả các giá trị điểm ảnh, và ta có thể tái tạo lại m từ .

Thuật toán trích xuất tin giấu và tìm kiếm tuần tự::

Đầu vào: Ảnh có nhúng tin s

Đầu ra: Thông điệp m

Lưu ý rằng thời gian chạy vòng lặp là l(s) thay vì l(m). Điều này là do
quá trình trích xuất tin hoàn toàn tách biệt với quá trình nhúng tin và do đó
không biết được giá trị l(m). Nếu một khóa được sử dụng, nó có thể sẽ tiết lộ
41
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

thông tin này, nhưng thay vào đó ta chỉ đơn giản là lấy giá trị LSB của mỗi điểm
ảnh. Khi ta chuyển đổi sang mã ASCII, thông báo sẽ có thể đọc được trừ khi tin
nhắn được mã hóa, và sau đó sẽ xuất hiện như là vô nghĩa khi chúng ta đang đọc
các LSB của dữ liệu hình ảnh.

Thuật toán giấu và tìm kiếm ngẫu nhiên

Thuật toán giấu và tìm kiếm ngẫu nhiên có thể làm phân tán các vị trí
của các điểm ảnh sẽ được thay thế bằng thông điệp dữ liệu. Cốt lõi của quá trình
nhúng tin giống như ở phương pháp tuần tự. Trong thực tế, hai phương pháp chỉ
khác nhau về cách thức hình ảnh dữ liệu ci được biểu diễn trước khi quá trình
nhúng bắt đầu.

Đối với phương pháp tiếp cận ngẫu nhiên, các dữ liệu hình ảnh c thường
được xáo trộn bằng cách sử dụng bộ sinh số giả ngẫu nhiên (Pseudo Random
Number Generator (PRNG)). Bộ sinh này sẽ lấy dữ liệu hình ảnh c và tạo ra một
phiên bản xáo trộn C theo một mầm khóa k được chỉ định bởi các bộ mã hóa.
Ngoài ra còn có một xáo trộn ngược để có thể đưa C về thứ tự gốc ban đầu c khi
dùng cùng giá trị k. Các giá trị điểm ảnh của hình ảnh c thường được xáo trộn
trước khi nhúng do vậy cơ chế nhúng tin cũng giống như thuật toán nhúng tin ở
phương pháp giấu và tìm kiếm tuần tự. Các giá trị hình ảnh sẽ được xáo trộn trở
lại vị trí ban đầu sau khi nhúng do đó hình ảnh có thể được hiển thị đúng để gửi
nó qua một số kênh thông tin liên lạc cho người nhận. Một PRNG tạo ra cùng sự
xáo trộn khi có cùng một dữ liệu và các mầm. Điều này có nghĩa rằng tất cả thứ
ta cần là c, k tại giai đoạn trích xuất, và quá trình xáo trộn tương tự sẽ được tái
tạo, vì vậy ta có thể lấy lại thông điệp thành công.

Lưu ý rằng phần lớn quá trình nhúng tin vẫn giữ nguyên như ở phương
pháp giấu và tìm kiếm tuần tự. Tuy nhiên, ở đây phải thêm dòng lệnh đầu tiên để
ngẫu nhiên các vị trí của mỗi điểm ảnh trước khi nhúng thông điệp dữ liệu và
dòng lệnh 8 để trả về tọa độ bình thường khi quá trình nhúng đã kết thúc. Mầm
khóa k đóng vai trò như khóa cho thuật toán để có cùng sự xáo trộn khi lấy
thông điệp ẩn.

42
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Đầu ra s từ phương pháp nhúng này sẽ chứa các bít của thông điệp ẩn
trong các điểm ảnh dường như ngẫu nhiên của hình ảnh.

Thuật toán nhúng tin giấu và tìm kiếm ngẫu nhiên:

Đầu vào: Ảnh phủ c, khóa k, thông điệp m

Đầu ra: Ảnh có nhúng tin

Cần lưu ý là phải yêu cầu k để xác định các vùng một cách chính xác,
thuật toán này an toàn hơn nhiều so với phương pháp giấu và tìm kiếm tuần tự.

Bằng việc sử dụng mầm khóa k đã được tạo ra trong quá trình nhúng tin,
các giá trị điểm ảnh từ s có thể được xáo trộn với cùng một trình tự khi nhúng
các thông điệp bí mật. Quá trình trích xuất tin tương tự như thuật toán trích xuất
ở phương pháp giấu và tìm kiếm tuần tự để có được mỗi mi, và do đó tái tạo lại
toàn bộ dòng thông điệp m.

Thuật toán trích xuất tin giấu và tìm kiếm ngẫu nhiên:

Đầu vào: Ảnh có nhúng tin s, khóa k

Đầu ra: Thông điệp m

43
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hướng tiếp cận ngẫu nhiên còn có thể tạo ra một khóa đầy đủ khi đó
hoàn toàn công khai được l(m). Trong trường hợp này, ở câu lệnh for có thể
được thay đổi sao cho vòng lặp chạy đến l(m) chứ không phải là l(s).

2.4.2.2 Kĩ thuật ẩn mã trong khối bít


Kĩ thuật giấu tin trong khối bít là kĩ thuật khá đơn giản, thường được ứng
dụng cho các loại ảnh đen trắng. Ý tưởng của phương pháp này là chia ảnh
thành các khối để giấu thông tin vào các khối này. Để giấu thông tin vào
các khối đó cần biến đổi các khối sao cho đạt được một bất biến nào đó. Như
vậy với giả thiết đối phương đã biết thuật toán giấu theo khối bít này thì độ an
toàn của thông tin giấu chỉ phụ thuộc vào m và n, do đó độ bảo mật của thông tin
không cao.

Thuật toán do M.Y.Wu và J.H.Lee đề xuất năm 1998 cũng là một thuật
toán giấu tin theo khối bít nhưng được cải tiến để có được độ an toàn cao hơn và
chất lượng ảnh sau khi giấu tốt hơn. Thuật toán này được áp dụng cho ảnh nhị
phân có ý tưởng chính là: một ảnh nhị phân dùng làm môi trường giấu tin được
chia thành các khối đều nhau, mỗi khối là một ma trận nhị phân. Thông tin mật
được giấu vào mỗi khối này bằng cách thay đổi nhiều nhất một bít của khối.

Gọi a, b là hai bít tùy ý, phép toán nhân bít AND, kí hiệu là  trên hai bít
a và b cho giá trị 1 khi và chỉ khi , trong các trường hợp còn lại bằng
0.

Phép toán cộng loại trừ XOR, kí hiệu là trên hai bít a và b cho giá trị
1 nếu và giá trị 0 nếu .

44
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Cho A và B là hai ma trận bít cùng cấp. Ta phát triển các phép toán  và
trên các bít tương ứng của A và B như sau:

Nếu ( ), ( ), ( ), ( ) , thì  với


Và với

Thí dụ:

Ngoài ra, ta định nghĩa ( ) là tổng các giá trị 1 trên ma trận X. Ta
có, theo thí dụ trên ( ) , ( ) , ( ) , ( ) .
Để ý rằng nếu X là một ma trận bít thì ( ) chính là tổng số bít 1 trong X.
45
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Quay trở lại thuật toán, giả sử ta có một ảnh đen trắng, ta sẽ coi ảnh như
một ma trận điểm ảnh gồm những điểm 0,1. Với hai ma trận có cùng kích cỡ ,
. Ta kí hiệu:

 là phép toán AND giữa các cặp bít của hai ma trận

là phép toán XOR giữa các cặp bít của hai ma trận

Với một ma trận số nguyên thì ] là phần tử của ma trận B nằm ở


dòng i cột j.

SUM(B) là tổng của tất cả các phần tử của B

Thuật toán giấu thông tin sẽ được thực hiện như sau. Giả sử có một ảnh
gốc nhị phân F, một khóa bí mật K và một số các bít dữ liệu cần giấu. Khóa K là
một ma trận nhị phân có kích cỡ . Để cho đơn giản ta coi kích cỡ của ảnh
F là bội của . Việc nhúng thông tin giấu vào trong ảnh sẽ được thực hiện
bằng cách thay đổi một số bít của ảnh F theo quy tắc:

Bước 1: Chia ảnh F thành các khối nhỏ, mỗi khối có kích thước là
.

Bước 2: Với mỗi khối ảnh nhỏ Fi thu được từ bước 1, ta kiểm tra điều
kiện sau:

(  ) ( ) (2.12)
Nếu đúng thì chuyển đến bước 3 để giấu thông tin vào trong khối Fi,

còn nếu không thì không giấu dữ liệu vào trong khối Fi, khối Fi được giữ
nguyên.

Bước 3: Gọi bít cần giấu vào trong khối Fi là b, thực hiện các bước sau
để thay đổi Fi.

If (SUM(Fi K) mod 2 = b )then

giữ nguyên Fi

else if (SUM(Fi K) =1 ) then


46
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

chọn ngẫu nhiên một bít (j,k) thỏa mãn đồng thời

] và ] sau đó chuyển giá trị của bít ] thành 1

else if (SUM(FiK)=SUM(K)-1) then

chọn ngẫu nhiên một bít (j,k) thỏa mãn đồng thời

] và ] sau đó chuyển giá trị của bít ] thành 0;

else

chọn ngẫu nhiên một bít mà ] chuyển giá trị của bít ]

từ 0 trở thành 1, hoặc từ 1 trở thành 0.

end if

Ý tưởng của thuật toán Wu_Lee:

- Việc chọn khóa K nhằm làm tăng độ mật của thuật toán. Nếu trước đây
kích thước khối là thì đối phương rất dễ khai thác được bản tin mật, nay
ngoài kích thước này còn phải biết giá trị cụ thể của khóa K.

- Phép toán  quy định thuật toán chỉ được phép sửa các bít trong
khối Fi ứng với bít 1 trong khóa K. Như vậy, khóa K được xem như một mặt nạ,
tạo ra khung nhìn cho thuật toán.

Dĩ nhiên ta có thể thay phép toán  bằng một phép toán khác, chẳng hạn
như phép XOR.

Điều kiện (2.12) quy định nếu  toàn 0 hoặc giống như khóa K thì
không được giấu tin để tránh bị lộ.

Trong bước 3 ta thực hiện tối đa một phép đảo một bít của Fi để thu
được khối nhằm đảm bảo tính bất biến: (  )

Việc chọn bít nào trong F để đảo cần tuân thủ theo nguyên tắc: Nếu
 có nhiều bít 1 thì chọn bít 1, ngược lại có quá ít bít 1 thì chọn bít 0.
Nguyên tắc này làm giảm khả năng bít đảo bị phát hiện. Có thể dễ dàng kiểm
47
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

chứng rằng sau bước 3 ta thu được bất biến trên. Nhờ bất biến đó, ta dễ dàng
trích xuất để lấy lại thông tin đã giấu như sau: Duyệt lần lượt các khối của
ảnh đích . Nếu thỏa mãn điều kiện
(  ) ( ) thì tính bít b đã được giấu vào trong khối bằng
công thức tính (  ) .

Vì khóa K là bí mật nên thông tin đã được nhúng là bí mật. Thuật toán
này làm thay đổi nhiều nhất một bít của khối Fi khi giấu 1 bít thông tin vào trong
khối nên với một khối có kích thước đủ lớn thì sự thay đổi của Fi là nhỏ.

Hình 2.13 Mô tả quá trình đảo bít để giấu tin của thuật toán trên 4 khối

Chúng ta sẽ lấy một ví dụ cho thuật toán trên. Giả sử một ảnh F có kích
thước và một mà trận khóa K có kích thước như trong hình vẽ. Ta
chia F thành 4 khối nhỏ mỗi khối sẽ có kích thước là ta thu được F1, F2,
F3, F4.

Vì (  ) ( ) nên không giấu được dữ liệu vào trong


F1.

Vì (  ) nên một bít sẽ được giấu vào khối 2. Theo ví dụ


trên thì bít đầu tiên được giấu là bít 0. Thực hiện giấu bít như bước 3, ta thấy
(  ) và cũng chính là bằng bít cần giấu b = 0 vì
vậy khối F2 được giữ nguyên mà không phải đảo bít nào cả.

48
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Với F3, ta có (  ) ( ) nên có thể giấu bít thứ 2


là b = 1 vào khối này theo bước 3. Kiểm tra thấy (  )
cũng chính bằng bít cần giấu nên ta vẫn giữ nguyên F3.

Cuối cùng với F4, ta có (  ) ( ) nên ta lại có


thể giấu bít b = 1 vào khối này. Kiểm tra theo bước 3 ta thấy
(  ) . Tiếp tục kiểm tra (  )
( ) vì vậy chọn ngẫu nhiên một bít ] rồi đảo
bít ] , cụ thể ở đây ta chọn bít ] và đảo bít ] từ 1 thành 0.

Kết quả cuối cùng được thể hiện ở hình 2.13, như vậy ta thấy với ví dụ
này mục tiêu của chúng ta là cần giấu 3 bít và nhờ thuật toán Wu-Lee
ta chỉ cần đảo một bít trong ảnh ban đầu thuộc khối ảnh F4 mà thôi.

Nhận xét:

Vì phép toán AND được sử dụng để tính  , nên giá trị lớn nhất của
(  ) không thể vượt quá ( ) và do tính chất của phép toán AND,
nếu có một khối nào thay đổi thì vị trí thay đổi chỉ xảy ra ở phần tử có giá trị 1
trong khóa K. Vì thế, nếu một ảnh F hoàn toàn trắng nào đó được truyền đi thì
kẻ thù khi bắt được thông tin sẽ dễ dàng tìm ra được vị trí 1 của khóa K, đó là lí
do mà ta không dùng trường hợp (  ) . Đây là một kẽ hở của thuật
toán đối với khóa.

Với trường hợp (  ) ( ) cũng tương tự nếu F hoàn toàn


đen thì vị trí của bít thay đổi cũng là vị trí mà bít tương ứng ở khóa là 1.

Để tránh những trường hợp trên thuật toán đã đưa ra phụ thuộc (2.12).
Nhưng cho dù như thế đi chăng nữa thì vị trí tương ứng với bít bị thay đổi cũng
tương ứng với bít ở vị trí đó trong khóa K có giá trị 1, và bít không bao giờ bị
thay đổi tương ứng sẽ là bít 0 ở vị trí đó trong khóa K. Và như thế việc chọn
khóa K như thế nào là một công việc hết sức quan trọng.

Nếu ảnh F được lựa chọn để giấu thông tin có quá nhiều điểm trắng hoặc
có quá nhiều điểm đen thì tỉ lệ bít giấu được sẽ rất thấp.

49
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Nói chung thuật toán này vẫn chưa đạt được những yêu cầu cần thiết về
khả năng giấu, độ an toàn thông tin cũng như chất lượng ảnh. Tuy nhiên, đó là
áp dụng đối với ảnh đen trắng, nếu ta áp dụng kĩ thuật này cho ảnh màu thì cũng
thu được kết quả khả quan.

2.4.3 Kĩ thuật ẩn mã trên miền tần số ảnh (DCT, DFT)


Các kĩ thuật biến đổi trong miền tần số ảnh sử dụng một phương pháp
biến đổi trực giao nào đó, chẳng hạn như Cosine rời rạc hay Fourier,… để
chuyển miền không gian ảnh sang miền tần số. Thông điệp sẽ được nhúng trong
miền không gian tần số của ảnh theo kĩ thuật trải phổ trong truyền thông.

Thuật toán hay được sử dụng là thuật toán giấu tin vào các hệ số DCT:
nhúng thông tin trong miền biến đổi cosin rời rạc. Dải tần được sử dụng để chứa
tín hiệu thông tin là miền tần số giữa của 1 khối DCT (DCT - Discrete
Cosine Transformation: biến đổi cosin rời rạc), trong đó các khối DCT 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à
sử 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 của thông tin sẽ được chứa trong một khối.

Kĩ thuật giấu tin trên miền tần số ảnh tương đối bền vững. Mọi phép
biến đổi ảnh, cộng nhiễu vào ảnh sẽ không phá hỏng tin giấu. Tuy nhiên, nếu
dùng một số kĩ thuật xử lí ảnh số như sử dụng bộ lọc nhiễu có thể làm mất thông
tin mật. Tin được ẩn khó bị phát hiện và khó phân tích ẩn mã nhưng dung lượng
thông tin giấu lại nhỏ.

2.4.3.1 Thuật toán Jsteg


Thuật toán JSteg được đưa ra bởi Derek Upham và là một bản sao của
thuật toán giấu và tìm kiếm được thảo luận trong phần 2.4.1.1, bởi vì nó sử dụng
nhúng bít ít quan trọng nhất. Thực tế, thuật toán JSteg chỉ khác thuật toán giấu
và tìm kiếm ở chỗ nó nhúng thông điệp trong các LSB của các hệ số DCT của
vật phủ c, chứ không phải là giá trị điểm ảnh của nó.

Trước khi bắt đầu quá trình nhúng, hình ảnh được chuyển đổi sang các
miền DCT trong các khối để các giá trị của ci chuyển đổi từ giá trị điểm
ảnh sang hệ số DCT. Để cho các giá trị được biểu diễn như những số nguyên thì
50
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

mỗi khối được lượng tử hóa theo một bảng lượng tử hóa Q. Dưới đây là ví
dụ về một khối DCT .

Hình 2.14 Khối của các hệ số DCT

Cũng nên lưu ý hai loại hệ số mà ta thấy trong mỗi khối : DC và


AC. Giá trị ở phía trên bên trái của mỗi khối được gọi là hệ số DC. Hệ số
AC chứa các giá trị trung bình của tất cả các hệ số khác trong khối. Các hệ số
DC là rất quan trọng cho mỗi khối vì chúng cung cấp cho một ước lượng tốt như
mức độ chi tiết trong khối. Thay đổi giá trị của hệ số DC cũng sẽ thay đổi nhiều
giá trị của các hệ số AC, và điều này sẽ tạo ra một sự khác biệt khi hình ảnh
được chuyển đổi trở lại tên miền không gian và được xem bình thường. Vì lí do
này, thuật toán JSteg không nhúng thông điệp dữ liệu trên bất kì các hệ số DC
cho mỗi khối. Thêm vào đó, thuật toán cũng không cho phép nhúng trên bất kì
hệ số AC bằng 0 hoặc 1.

Quá trình nhúng tin

Thuật toán nhúng tin JSteg cũng không sử dụng khóa. Vì vậy, miễn là
các bộ trích xuất tin biết rằng việc nhúng diễn ra ở miền DCT, nó sẽ có khả năng
trích xuất các thông điệp thành công. Sự an toàn của thuật toán JSteg do đó nằm
trong chính thuật toán. Như đã nói ở trên, khó khăn chính của việc không sử
dụng khóa là khi ta cố gắng để xác định l(s) (độ dài thông điệp) khi trích xuất
thông điệp. Nếu không có khóa, không thể biết chiều dài của thông điệp để trích

51
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

xuất, do đó vòng lặp thường được chạy cho toàn bộ hình ảnh để đảm bảo rằng
tất cả thông điệp được trích xuất.

Thuật toán nhúng tin JSteg:

Đầu vào: Ảnh phủ c, thông điệp m

Đầu ra: Ảnh có nhúng tin s

Quá trình trích xuất tin

Quá trình trích xuất thực hiện bằng cách chuyển đổi s thành miền DCT.
Tương tự thuật toán nhúng tin chúng ta cũng tránh các giá trị hệ số DC và AC
bằng 0 hoặc 1, và lấy thông điệp ẩn từ các LSB của tất cả các hệ số khác (dòng
lệnh 7).

Thuật toán trích xuất tin JSteg:

Đầu vào: Ảnh có nhúng tin s

52
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Đầu ra: Thông điệp m

2.4.3.2 Thuật toán OutGuess 0.1


Các phương pháp nhúng thông điệp dữ liệu tuần tự bằng cách sử dụng
giấu và tìm kiếm thường là không an toàn, tuy nhiên, thực tế thuật toán nhúng
Jsteg có phương thức tương tự. Phiên bản đầu tiên của OutGuess, được thiết kế
bởi Neils Provos, cải thiện các thuật toán JSteg bằng cách phân tán các vị trí
nhúng trên toàn bộ hình ảnh thông qua một bộ sinh số giả ngẫu nhiên PRNG
trên ảnh c sử dụng mầm khóa k. Điều này tương tự như cách mà các phương
pháp nhúng ngẫu nhiên sử dụng.

Quá trình nhúng tin


Quá trình nhúng tin của thuật toán OutGuess 0.1 về cơ bản là sự kết hợp
của thuật toán giấu và tìm kiếm ngẫu nhiên và thuật toán JSteg. Như thuật toán
nhúng tin dưới đây cho thấy, bước đầu tiên là chuyển đổi hình ảnh thành miền
DCT, tương tự như chúng ta đã thấy ở thuật toán JSteg. Sau đó, các hệ số được
xáo trộn thành một thứ tự ngẫu nhiên bằng các sử dụng bộ sinh số giả ngẫu
nhiên PRNG thông qua một mầm khóa. Các thông điệp dữ liệu sau đó được
nhúng bằng cách sử dụng cùng một kĩ thuật như với Jsteg, cuối cùng đảo ngược
xáo trộn để các hệ số trở lại vị trí chính xác. Những hình ảnh sau đó được

53
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

chuyển đổi trở lại trên miền không gian và do đó được đầu ra là s đã được nhúng
xong thông điệp.

Thuật toán vẫn tránh không nhúng trong các hệ số DC, và bất kì hệ số
AC bằng 0 hoặc 1. Điều này tương tự như thuật toán Jsteg.

Thuật toán nhúng tin OutGuess 0.1:

Đầu vào: Ảnh phủ c, thông điệp m, khóa k

Đầu ra: Ảnh có nhúng tin

54
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Quá trình trích xuất tin

Đầu tiên, s được chuyển thành miền DCT, tiếp theo được xáo trộn bằng
cách sử dụng cùng mầm khóa k trong quá trình nhúng tin. Sau đó, chúng ta nhận
thông điệp dữ liệu bằng cách trích xuất từ các LSB tất cả các hệ số có giá trị
không phải là một giá trị DC, cũng không phải là 0 hoặc 1.

Thuật toán trích xuất OutGuess 0.1:

Đầu vào: Ảnh có nhúng tin s

Đầu ra: Thông điệp m

2.4.3.3 Thuật toán OutGuess 0.2


Khi thuật toán OutGuess 0.1 đã được phát triển, nó được coi là an toàn
hơn nhiều so với thuật toán giấu và tìm kiếm và thuật toán JSteg bởi vì nó không
chỉ nhúng các thông tin trong một vùng rời rạc hơn của hình ảnh (các hệ số
DCT), mà nó còn phân tán các vị trí nhúng bằng cách sử dụng một bộ sinh số
giả ngẫu nhiên PRNG để xáo trộn thứ tự của các hệ số.

55
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tuy nhiên, sau khi đưa ra thuật toán, kẻ tấn công đã có thể tìm thấy một
lỗ hổng trong kĩ thuật bằng cách sử dụng phương pháp thống kê. Do vậy Neils
Provos đã tạo ra một phiên bản sửa đổi của thuật toán OutGuess 0.1, được gọi là
OutGuess 0.2. Thuật toán này giúp đảm bảo rằng các đặc tính thống kê của ảnh
phủ c được duy trì sau khi nhúng, do đó s thu được sau khi nhúng có đặc điểm
thống kê tương tự như một hình ảnh “sạch”. Điều này sẽ gây khó khăn hơn cho
kẻ tấn công để tính toán khả năng hình ảnh nghi ngờ có là ảnh chứa tin mật hay
không.

Thực tế thuật toán nhúng OutGuess 0.2 giống hệt như OutGuess 0.1. Sự
khác biệt nằm ở những gì xảy ra sau khi các thông tin đã được nhúng. Trong
OutGuess 0.2, sự điều chỉnh được thực hiện đối với các hệ số mà tần số xuất
hiện của chúng tương tự như của một hình ảnh sạch. Tác động của các điều
chỉnh này sẽ trở nên rõ ràng hơn khi ta quan sát bảng phân tích thống kê các
điểm ảnh của ảnh nghi ngờ.

2.4.3.4 Thuật toán F3


Thuật toán F3 khác với Jsteg ở hai điểm:

1. Thay vì ghi đè các bit, các giá trị tuyệt đối của hệ số sẽ giảm đi trong
trường hợp LSB của chúng không thỏa mãn - ngoại trừ các hệ số với giá trị bằng
không vì không thể giảm các giá trị tuyệt đối. Do đó, ta không sử dụng hệ số 0
để nhúng. LSB của hệ số khác 0 giống với thông điệp mật sau khi nhúng thì ta
không ghi đè các bit vì kiểm tra khi bình phương có thể dễ dàng phát hiện ra
những thay đổi đó. Trái ngược với Jsteg, F3 sử dụng các hệ số có giá trị 1. Đối
xứng của 1 và -1 có thể thấy trong hình 2.15.

56
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.15 Biểu đồ các hệ số JPEG sau khi lượng tử hóa

2. Một số bít được nhúng có thể gây nên sự hao hụt (sự hao hụt có nghĩa
là sự thay đổi hệ số nhưng không thực hiện nhúng) trong trường hợp thuật toán
F3 giảm giá trị tuyệt đối của 1 và -1 thành 0. Người nhận không thể phân biệt
được đâu là hệ số 0 thực sự hay là được sinh ra từ sự hao hụt trên. Thuật toán
trích xuất sẽ bỏ qua tất cả các hệ số bằng 0. Do đó, người gửi sẽ nhúng lại các
bít bị ảnh hưởng khi chính họ tạo ra hệ số 0.

Hình 2.16 F3 tạo ra một số lượng lớn các hệ số chẵn

57
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Quá trình nhúng F3 tạo nhiều hệ số chẵn hơn so với hệ số lẻ. Hình 2.16
cho thấy tần số xuất hiện của các hệ số chẵn và lẻ, được phát hiện bằng phương
pháp thống kê.

Nếu ta bỏ qua sự hao hụt, số lượng lớn các hệ số chẵn sẽ biến mất, như
vậy trong trường hợp này người nhận sẽ chỉ nhận được các mẩu của thông điệp.
Việc áp dụng một mã sửa sai có thể giải quyết được vấn đề này. Nếu ta trích
xuất các thông điệp giả định từ phương tiện mang tin dùng thuật toán F3, thông
điệp này sẽ có một phân bố với các giá trị 1 nhiều hơn 0. Vì vậy, nếu ta nhúng
giá trị 1 nhiều hơn 0 (theo tỉ lệ thích hợp), số lượng lớn các hệ số chẵn trong
biểu đồ sẽ không còn nữa. Một giải pháp cho vấn đề này (F4) làm cho có tính
đối xứng như trong hình 2.15.

2.4.3.5 Thuật toán F4


F3 có hiệu quả nhúng số 0 nhiều hơn so với số 1 do đó dẫn tới sự hao hụt,
điều này có nghĩa rằng khi các tính chất thống kê của ảnh chứa thông điệp
nhúng được kiểm tra thông qua biểu đồ của nó, thì kẻ tấn công có thể nhận biết
hình ảnh nghi ngờ có thao tác nhúng tin. Hơn nữa kẻ tấn công cũng có thể thấy
nhiều hệ số chẵn tồn tại hơn so với các hệ số lẻ khi dùng thuật toán F3.

Như vậy có hai đặc điểm mà kẻ tấn công có thể xem xét khi xem biểu đồ
của một hình ảnh nghi ngờ. Thuật toán F4 đã được phát triển để loại bỏ các đặc
tính đó và biểu đồ thống kê sẽ xuất hiện tương tự như của một hình ảnh “sạch”.

Thuật toán F4 loại bỏ hai điểm yếu này bằng cách ánh xạ các hệ số âm
thành các giá trị ẩn mã ngược: Các hệ số chắn âm biểu diễn cho giá trị ẩn mã 1,
lẻ âm là 0, dương chẵn biểu diễn cho 0, dương lẻ cho 1. Ví dụ, nếu ta nhúng 0
vào một hệ số DCT bằng -3, kết quả sẽ vẫn là -3, trong khi nếu dùng F3 thì nó sẽ
được thay bằng -2. Điều này có nghĩa là sự thay đổi bít giờ xuất hiện với xác
suất xấp xỉ nhau, vì vậy lược đồ đối với ảnh sau khi nhúng sẽ có cấu trúc theo
phân bố tần suất của nó.

Trong hình 2.17 hai cột cùng độ cao biểu thị các hệ số với giá trị nhúng
ngược nhau (các giá trị nhúng bằng 0 là màu đen, giá trị 1 là trắng).

58
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.17 Biểu đồ các hệ số JPEG với thuật toán F4

2.4.3.6 Thuật toán F5


Các tệp ảnh cho phép ẩn mã với một dung lượng hạn chế. Trong nhiều
trường hợp, thông điệp được nhúng không cần toàn bộ dung lượng (nếu nó vừa
đủ). Do đó, một phần còn lại của tệp không sử dụng. Hình 2.18 chỉ ra những sự
thay đổi (×) (với việc nhúng liên tục) tập trung vào phần đầu của tệp trong khi
những phần còn lại ở cuối tệp thì không sử dụng. Để tránh các tấn công, hàm
nhúng nên sử dụng vật mang tin càng có sự đồng đều càng tốt để cho mật độ
nhúng ở mọi chỗ sẽ giống nhau.

Hình 2.18 Phép nhúng liên tục tập trung vào những thay đổi (×)

59
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Sắp xếp hoán vị

Một số thuật toán ẩn mã nổi tiếng phân bố thông điệp trên toàn bộ vật
mang tin. Nhiều thuật toán trong số này mất nhiều thời gian để thực hiện. Chúng
còn trở nên chậm hơn nếu chúng ta cố gắng vét cạn toàn bộ dung lượng của ảnh
đã nhúng dữ liệu. Việc phân phối (Straddling) sẽ dễ nếu biết chính xác dung
lượng của vật mang tin. Tuy nhiên, ta không thể dự đoán được độ hao hụt đối
với F4, bởi vì nó phụ thuộc vào những bít nào được nhúng và tại vị trí nào. Ta
chỉ có thể ước lượng được dung lượng mong đợi. Cơ chế phân phối được sử
dụng với F5 sắp xếp lại tất cả các hệ số bằng cách sử dụng phép hoán vị trước
rồi sau đó nhúng một cách tuần tự. Sự hao hụt không làm thay đổi số lượng các
hệ số (mà chỉ thay đổi giá trị của chúng). Phép hoán vị phụ thuộc vào một khóa
được lấy từ một mật khẩu. Thuật toán F5 chuyển các hệ số đã bị thay đổi ẩn mã
trong thứ tự ban đầu của nó vào mã Huffman. Nếu người nhận có khóa đúng thì
có thể lặp lại hoán vị. Phép hoán vị này có độ phức tạp thời gian tuyến tính O(n).
Hình 2.19 chỉ ra những thay đổi đã được phân phối giống nhau trên toàn bộ ảnh
(xem các điểm ảnh như các hệ số).

Hình 2.19 Phép nhúng hoán vị phân phối những sự thay đổi(×)

Ma trận nhúng

Ron Crandall đã đưa ra ma trận nhúng như một kĩ thuật mới để cải tiến
hiệu quả nhúng. Thuật toán F5 có thể thực thi ma trận nhúng trước. Nếu hầu hết
dung lượng trong ảnh không được sử dụng thì ma trận nhúng giảm số lượng
những thay đổi cần thiết. Chúng ta hãy giả sử có một thông điệp bí mật phân bố
đều và các giá trị được phân bố đều tại các điểm được thay đổi. Một nửa thông
điệp tạo ra sự thay đổi còn nửa kia thì không. Do sự hao hụt được sinh ra bởi
thuật toán F4 nên sự hiệu quả của phép nhúng là bằng một bít thấp hơn, ví dụ
60
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

1.5 bít trên sự thay đổi. (Sự hao hụt có nghĩa là thay đổi nhưng đôi khi không
thực hiện nhúng).

Ví dụ, nếu chúng ta đã nhúng một thông điệp rất ngắn chỉ 217 byte
(1736 bít), thuật toán F4 thay đổi 1157 vị trí trong ảnh Expro ở hình sau. Tuy
nhiên, thuật toán F5 cũng nhúng thông điệp đó bằng cách sử dụng ma trận
nhúng chỉ thay đổi 459 vị trí, chẳng hạn với sự hiệu quả của phép nhúng là 3.8
bít trên sự thay đổi.

Hình 2.20 Ảnh Expro

Cụ thể quá trình nhúng được mô tả như sau: Chúng ta muốn nhúng hai
bit x1, x2 vào 3 bit có thể sửa là a1, a2, a3 mà chỉ thay đổi nhiều nhất là 1 bit. Có 4
trường hợp có thể xảy ra:

không cần thay đổi gì

thay đổi a1

thay đổi a2

thay đổi a3

Trong tất cả 4 trường hợp chúng ta chỉ thay đổi không quá 1 bít. Nói
chung, chúng ta có từ mã a với n bít có thể sửa, k bít thông điệp bí mật x. Cho f
là hàm băm trích xuất k bít từ một từ mã. Ma trận nhúng cho phép chúng ta tìm
được từ mã được sửa một cách thích hợp với mọi a và x, sao cho ( )
để khoảng cách Hamming:
61
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ) (2.13)
Ta chỉ ra mã này bằng một bộ ba có thứ tự ( ): là một từ mã với
n vị trí được thay đổi trong không quá vị trí để nhúng k bít. Thuật toán F5
thực hiện ma trận nhúng chỉ với . Với ( ), các từ mã có độ dài
. Bỏ qua sự hao hụt, ta nhận được phân phối thay đổi:

( ) (2.14)

và tỉ lệ nhúng:

( ) (2.15)

Sử dụng phân phối thay đổi và tỉ lệ nhúng chúng ta xác định được sự
hiệu quả của quá trình nhúng W(k), chính là số bít trung bình có thể được nhúng
trên sự thay đổi:

( )
( ) (2.16)
( )
Hiệu quả của quá trình nhúng đối với mã ( ) luôn luôn lớn hơn k.
Bảng dưới đây cho thấy tỉ lệ giảm khi hiệu quả tăng. Vì vậy ta có thể đạt được
hiệu quả cao chỉ với các thông báo rất ngắn.

62
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Bảng 2.4 Quan hệ giữa mật độ thay đổi và tỉ lệ nhúng

k n Mật độ sửa Tỉ lệ nhúng Hiệu quả nhúng


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
Hình dưới đây cho thấy sự phụ thuộc giữa các bít thông báo xi và các vị
trí thay đổi bít .

Hình 2.21 Sự phụ thuộc giữa các bít thông báo và các bít từ mã

Ta có thể xác định hàm băm f:

( ) (2.17)

Ta tìm vị trí bít:

( ) (2.18)
mà ta cần thay đổi. Kết quả từ mã được thay đổi là:

( ( ))
{ (2.19)
( )

63
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ( ))
{ (2.20)
( )
Ta có thể tìm một tham số tối ưu k cho mọi tin nhắn để nhúng mọi vật
phủ lớn, sao cho tin nhắn phù hợp với vật phủ. Ví dụ, nếu ta muốn nhúng tin
nhắn với 1000 bít vào một vật phủ có độ lớn là 50.000 bít thì tỉ lệ nhúng cần
thiết là R = 1000:50000 = 2%. Giá trị này là giữa ( ) và ( ) trong
bảng 3. Chọn , có thể nhúng 50000:255 = 196 từ mã có chiều dài .
Bộ mã ( ) có thể nhúng 196.8 = 1568 bít. Nếu chọn thay vào đó, ta
không thể nhúng tin nhắn một cách đầy đủ.

Bảo toàn các thuộc tính đặc trưng

Các tấn công thống kê có thể tiết lộ sự hiện diện của tin nhắn ẩn nếu
thuật toán ẩn mã thực hiện việc ghi đè lên các LSB. Điều này không có hiệu quả
với F4/F5. F4 bảo toàn các thuộc tính đặc trưng và không san bằng các tần số.
Ta chỉ ra rằng F5 cũng bảo toàn các thuộc tính đặc trưng.

Giả sử là phần hệ số được sử dụng cho ẩn mã.

( ) ( ) ( ) ( ) (2.21)

( ) ( ) ( ) ( ) (2.22)

( ) ( ) ( ) ( ) (2.23)

Từ (2.21) và (2.22) ta có (2.24), từ (2.22) và (2.23) ta có (2.25)

( ) ( )
(2.24)
( )( ( ) ( )) ( )
( ) ( )
(2.25)
( )( ( ) ( )) ( )
Ta thấy rằng các vế bên phải của (2.24) và (2.25) là số dương, do đó ta
tìm được thuộc tính đặc trưng thứ nhất đối với Y:

( ) ( ) ( ) (2.26)

64
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Với thuộc tính đặc trưng của X:

( ) ( ) ( ) ( ) ( )
(2.27)
( ) ( )
Ta thấy rằng vế phải của (2.24) lớn hơn đối với (2.25). Do đó các vế trái
cho lại thuộc tính thứ hai của Y:

( ) ( ) ( ) ( ) (2.28)
Mô tả thuật toán F5

Thuật toán F5 được đưa ra bởi Pfitzmann và Westfeld vào năm 2001.
Mục tiêu của nghiên cứu là phát triển các khái niệm và phương pháp nhúng thiết
thực cho hình ảnh JPEG có dung lượng nhúng và độ an toàn cao. Thay vì thay
thế các LSB của các hệ số được lượng tử hóa DCT bằng các bít thông điệp thì
giá trị tuyệt đối của hệ số được giảm đi một. Kiểu nhúng như vậy theo tác giả
lập luận là có thể chống lại được tấn công 2

Thuật toán F5 nhúng các bít thông điệp vào các hệ số DCT được chọn
ngẫu nghiên và sử dụng ma trận nhúng để giảm thiểu số lượng các thay đổi khi
nhúng một thông điệp có độ dài nhất định.

Thuật toán F5 chấp nhận các đầu vào:

 Yếu tố chất lượng của ảnh có nhúng tin Q


 Tệp đầu vào (TIFF, BMP, JPEG, 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ộ sinh số ngẫu nhiên
PRNG
 Bình luận được chèn trong tiêu đề
Trong quá trình nhúng, độ dài tin nhắn và các hệ số DCT khác không
được dùng để xác định ma trận nhúng tốt nhất sao cho giảm thiểu việc điều
chỉnh sự thay đổi của ảnh phủ. Ma trận nhúng có ba thông số ( ) trong đó c
là số các thay đổi trên nhóm n hệ số, k là số các bít được nhúng. Trong thuật

65
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

toán này ma trận nhúng có dạng ( ), sử dụng hàm băm mà đầu ra là k


bít khi áp dụng cho hệ số.

Quá trình nhúng bắt đầu với một mầm cho bộ sinh số ngẫu nhiên PRNG
từ mật khẩu người dùng và tạo ra các bước nhảy ngẫu nhiêu trên các hệ số DCT
của ảnh phủ. PRNG cũng được sử dụng để mã hóa giá trị k bằng việc sử dụng
phương pháp mã dòng và nhúng nó cùng với độ dài của thông điệp tại đầu thông
điệp. Thân thông điệp được nhúng dùng ma trận nhúng, chèn k bít thông điệp
vào một nhóm hệ số bằng cách giảm giá trị tuyệt đối của tối đa một hệ số
đi một từ mỗi nhóm.

Quá trình nhúng gồm 6 bước sau:

1. Lấy biểu diễn RGB của ảnh đầu vào

2. Tính bảng lượng tử tương ứng với yếu tố chất lượng của ảnh Q và nén
ảnh trong khi lưu các hệ số lượng tử DCT

3. Tính toán công suất dự kiến khi không có ma trận nhúng:


( ) ( ) ( ), với là số tất cả các hệ số DCT, h(0) là số
các hệ số AC DCT bằng 0, h(1) là số các hệ số của AC DCT có trị tuyệt đối
bằng 1, là số các hệ số DC và ( ) ( ) ( )là ước
lượng sự hao hụt (xem bước 5). Tham số C cùng độ dài thông điệp xác định ma
trận nhúng tốt nhất.

4.Dùng mật khẩu do người dùng xác định trước để sinh ra một mầm cho
PRNG nhằm xác định cách nhúng ngẫu nhiên các bít thông điệp. PRNG cũng
được sử dụng để sinh một dãy bít giả ngẫu nhiên, dãy bít này sẽ được XOR với
thông điệp để tạo nên dãy bít được ngẫu nhiên hóa. Trong suốt quá trình nhúng,
bỏ qua các hệ số DC và các hệ số bằng 0.

5. Chia thông điệp thành các đoạn k bít mà được nhúng thành một nhóm
hệ số theo cách ngẫu nhiên. Nếu giá trị băm của nhóm đó không khớp
với các bít thông điệp thì giảm giá trị tuyệt đối của một trong các hệ số của
nhóm đi 1 để khớp được với dãy bít thông điệp. Nếu hệ số chuyển thành 0 thì

66
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

gọi là hao hụt và nhúng lại k bít thông điệp giống như vậy vào nhóm hệ số DCT
tiếp theo (chú ý là ( ) , với và ( ) ,
với ).

6. Nếu kích cỡ của thông điệp khớp với dung lượng đã ước lượng thì tiến
hành nhúng, ngược lại hiển thị thông điệp báo lỗi chỉ rõ độ dài tối đa có thể. Có
một số trường hợp ít xảy ra khi dự đoán công suất sai vì sự hao hụt đã dự tính
lớn hơn. Trong những trường hợp này, chương trình cần nhúng càng nhiều càng
tốt và đưa ra cảnh báo.

2.5 Ẩn mã trên các môi trường đa phương tiện khác


2.5.1 Ẩn mã trong tệp âm thanh
Ẩn mã trong âm thanh mang những đặc điểm riêng khác với ẩn mã trong các
đối tượng đa phương tiện khác. Để đảm bảo yêu cầu cơ bản của ẩn mã thì giấu
tin trong tệp âm thanh thuộc vào hệ thống thính giác của con người. Hệ thống
thính giác của con người nghe được các tín hiệu ở các dải tần rộng và công suất
lớn, đặc điểm này gây khó khăn trong phương pháp giấu tin trong âm thanh. Tuy
nhiên, hệ thống thính giác của con người lại khó phát hiện sự khác biệt các dải
tần và công suất tức là các âm thanh to, cao tần có thể che giấu được các âm
thanh nhỏ, thấp tần một cách dễ dàng. Kênh truyền tin cũng là một vấn đề. Kênh
truyền hay băng thông chậm sẽ ảnh hưởng tới chất lượng của thông tin sau khi
giấu. Ví dụ để nhúng một đoạn java applet vào một đoạn âm thanh (16 bít,
44.100 Hz) có chiều dài bình thường thì các phương pháp nói chung cũng cần ít
nhất 20 bít/s. Giấu thông tin trong tệp âm thanh đòi hỏi yêu cầu rất cao về tính
đồng bộ và tính an toàn của thông tin, các phương pháp giấu thông tin trong âm
thanh đều lợi dụng điểm yếu trong hệ thống thính giác của con người.

2.5.2 Ẩn mã trong tệp văn bản


Giấu tin trong văn bản khó thực hiện hơn do có ít các thông tin dư thừa,
để làm được điều này người ta phải khéo léo khai thác các dư thừa tự nhiên của
ngôn ngữ. Một cách khác là tận dụng các định dạng văn bản (nhúng thông tin
vào khoảng cách giữa các từ hay các dòng văn bản).

67
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Ẩn dữ liệu bằng cách dịch chuyển dòng (line shift):

Trong phương pháp này, các dòng trong văn bản sẽ được dịch chuyển
để nhúng dữ liệu. Phương pháp này được áp dụng cho dạng tập tin văn bản hay
hình ảnh của trang văn bản.
Phương pháp này di chuyển mỗi hai dòng của văn bản hoặc lên hoặc
xuống 1/300 inch, phương pháp này làm việc đặc biệt tốt, và dữ liệu nhúng
trong văn bản vẫn được rút trích hoàn chỉnh được, ngay cả sau khi văn bản
đã bị sao chép ra 10 lần.
Tuy nhiên, phương pháp này là kĩ thuật ẩn dữ liệu trên văn bản dễ thấy
nhất đối với người đọc. Hơn nữa, phương pháp có thể bị đánh bại sau khi
văn bản được đo khoảng cách giữa hai dòng, việc chia khoảng cách giữa hai
dòng ngẫu nhiên hay đồng nhất đều có thể gây ra nguy hiểm, mất từ mã.
Tuy nhiên, nếu một văn bản được đánh dấu với phương pháp ẩn dữ
liệu này, văn bản khó bị mất từ mã nếu nó ở trên giấy hay ở dạng hình ảnh.
Ẩn dữ liệu bằng cách dịch chuyển từ (word shift):

Từ mã được nhúng vào một văn bản bằng cách dịch chuyển vị trí của
các từ trong các dòng văn bản, trong khi vẫn giữ nguyên khoảng cách các
dòng. Phương pháp này cũng được áp dụng cả trên tập tin văn bản và ảnh
bitmap của trang văn bản. Phương pháp này chỉ hữu dụng cho các văn bản có
sự biến động về khoảng cách giữa hai từ cạnh nhau, ví dụ như một văn bản có
sắp chữ. Quá trình rút trích cần phải có một văn bản gốc, hay ít nhất cũng
biết được giá trị khoảng cách giữa các từ.
Phương pháp thực hiện như sau: với mỗi dòng văn bản, tìm ra các
khoảng cách lớn nhất và bé nhất, khoảng cách lớn nhất được giảm xuống một
lượng, và khoảng cách bé nhất cũng được tăng thêm một lượng như trên, như
vậy sẽ giữ nguyên chiều dài của dòng văn bản và gây ra ít thay đổi nhận thấy
được trên văn bản. Nhúng dữ liệu bằng cách dịch chuyển từ ít bị người đọc
nhận biết hơn phương pháp dịch chuyển dòng, vì khoảng cách giữa hai từ kế
nhau trong một dòng thường bị dịch chuyển để hỗ trợ cho sự sắp chữ trong văn
bản.

68
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tuy nhiên, phương pháp dịch chuyển từ có thể bị phát hiện và bị đánh
bại bằng hai phương pháp sau :
Nếu một người biết được thuật toán sử dụng trong định dạng sắp xếp chữ
văn bản, khoảng cách thật sự giữa hai từ có thể được đo và so sánh với khoảng
cách trong văn bản gốc. Sự khác biệt trong khoảng cách sẽ chứa dữ liệu nhúng.
Bằng cách chia lại khoảng cách giữa các từ được dịch chuyển, hay dịch
chuyển ngẫu nhiên các từ trong văn bản, một người khác có thể làm mất đi từ
mã.
Phương pháp khoảng trắng mở

Với phương pháp khoảng trắng mở khi ta thay đổi số lượng các khoảng
trắng thì nghĩa của câu ít bị ảnh hưởng, 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ụ 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 là 0, hai khoảng trắng mã hóa là 1. Phương pháp này không
hiệu quả, nó cần phải có 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à 1 bit/160 byte với giả thuyết một câu trung
bình 80 kí tự. Phương pháp này 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à
69
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

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ả trên các văn bản định dạng ASCII.
Một số dữ liệu có khả năng mất khi văn bản được in ra.

Hình 2.22 Phương pháp khoảng trắng mở khai thác khoảng trắng sau mỗi
dòng

Hình trên là ví dụ nhúng dữ liệu vào đoạn văn bản theo phương pháp khai
thác khoảng trắng sau mỗi dòng. Hình (a) là văn bản trước khi nhúng, hình (b) là
văn bản sau khi nhúng. Trong đoạn văn bản đã được nhúng dữ liệu, cuối dòng
hai có hai khoảng trắng nhúng được 1 bít, cuối dòng 3 có 4 khoảng trắng nên đó
là 2 bít được nhúng.

Hình 2.23 Đoạn văn bản chứa dữ liệu nhúng sử dụng khoảng trắng sau
mỗi từ
70
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình trên là ví dụ nhúng dữ liệu vào văn bản, khai thác khoảng trắng sau
các từ. Đoạn văn bản trên chứa dữ liệu nhúng “010110010011010”.
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. Ví dụ, từ câu
“Before the night is over, I will have finished” chuyển thành câu “I will have
finished before the night is over ”. 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.
Phương pháp ngữ nghĩa (Semantic methods)

Phương pháp này tương tự 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”. 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.5.3 Ẩn mã trong các gói mạng
Kênh ngầm (covert channel) được định nghĩa là “kênh thông tin liên lạc
bất kì có thể bị khai thác bởi một quá trình chuyển thông tin theo cách vi phạm
chính sách bảo mật của hệ thống”. Về cơ bản, nó là một phương pháp thông tin
liên lạc không phải là một phần của thiết kế hệ thống máy tính thực tế, nhưng có
thể được sử dụng để chuyển thông tin cho người sử dụng hay tiến trình hệ thống
mà thông thường không được phép truy cập vào các thông tin.
71
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Trong TCP/IP, có một số phương pháp có sẵn theo đó kênh ngầm có thể
được thiết lập và dữ liệu có thể được truyền đi bí mật giữa các host.

Phương pháp này có thể được sử dụng trong một số trường hợp sau:

Bỏ qua các bộ lọc gói, các trình theo dõi lưu lượng mạng (network
sniffers) và các máy tìm kiếm từ khóa đen (dirty word).

Đóng gói thông tin (được mã hóa hoặc chưa được mã hóa) bên trong các
gói tin thông thường khác để truyền tin bí mật thông qua mạng khi hành động đó
bị ngăn cấm.

Che giấu việc truyền dữ liệu bằng các gói tin giả mạo với thông tin được
đóng gói trên các trang web vô hại.

Ta thấy rằng TCP là một “kết nối được định hướng” hoặc một giao thức
“tin cậy”. Đơn giản chỉ cần đặt TCP có các tính năng đảm bảo dữ liệu đến máy
chủ từ xa một cách nguyên vẹn. Điều này liên quan tới TCP khởi tạo “bắt tay ba
chiều” (three – way hand shake)

Bước 1: Gửi một gói đồng bộ (SYN) và một chuỗi số khởi tạo (ISN).
Host A muốn gửi một kết nối đến host B. Host A gửi một gói đơn tới B với bít
đồng bộ (SYN) thiết lập thông báo kết nối mới và một ISN mà giúp cho phép
theo dõi các gói tin gửi đi giữa các host:

Host A - - - SYN (ISN) - - -> Host B

Bước 2: Cho phép truy cập máy chủ từ xa để đáp ứng với một tin báo
nhận (ACK). Host B đáp ứng các yêu cầu bằng cách gửi một gói tin với bít đồng
bộ (SYN) và bít ACK trong gói gửi trở lại host gọi. Gói này chứa không chỉ số
thứ tự của khách hàng mà còn chứa (ISN + 1) để chỉ các gói tin từ xa đã nhận
được một cách chính xác như là một phần của tin xác nhận và chờ truyền tiếp
theo:

Host A <- - - SYN (ISN+1)/ACK - - - Host B

Bước 3: Hoàn thành quá trình bằng cách gửi một tin xác nhận cuối cùng
tới máy chủ từ xa. Tại thời điểm này host A gửi lại một gói ACK cuối cùng và
72
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

chuỗi số để chỉ tiếp nhận thành công: kết nối được hoàn thành và dữ liệu có thể
truyền đi:

Host A - - - ACK - - -> Host B

Toàn bộ quá trình kết nối xảy ra trong một vài mili giây, và mỗi gói tin
từ điểm này được xác nhận một cách độc lập bởi cả hai bên. Phương pháp bắt
tay này đảm bảo một kết nối đáng tin cậy giữa các host và đó là lí do tại sao
TCP được xem như một giao thức hướng kết nối. Trong khi UDP thì lại khác,
UDP là dịch vụ truyền phi kết nối không cần độ tin cậy như TCP. Việc thiết lập
kết nối TCP cần nhiều thời gian mặc dù chỉ gửi dữ liệu nhỏ.

Mã hóa thông tin trong TCP/IP Header

Trong mỗi tiêu đề có một số phạm vi không được sử dụng cho việc
truyền tin thông thường hoặc có các trường tùy chọn được thiết lập khi cần bởi
người dùng. Phân tích một IP header điển hình cho biết phạm vi không được
dùng hoặc tiết lộ nhiều khả năng tùy chọn nơi dữ liệu có thể được lưu trữ hoặc
truyền đi.

Ở đây ta tập trung vào việc đóng gói dữ liệu trong các trường bắt buộc,
không phải bởi vì nó tốt hơn so với vùng tùy chọn khác mà vì nó dường như ít
thay đổi trong quá trình truyền đi như là các trường tùy chọn IP hoặc TCP đôi
khi thay đổi hoặc bị tách ra bởi cơ chế lọc.

Dưới đây đưa ra ba phương pháp thêm thông tin

Phương pháp 1: Thao tác trong trường IP Identification

Trường identification của IP giúp gộp các gói dữ liệu bởi các router và
hệ thống máy chủ. Mục đích của nó là cung cấp một giá trị duy nhất cho các gói
tin nếu nó bị phân mảnh trên đường truyền, chúng có thể được gộp lại một cách
chính xác. Phương pháp mã đầu tiên khá đơn giản đó là thay thế trường IP
Identification bởi biểu diễn mã ASCII của kí tự. Điều này cho phép dễ dàng
truyền đến máy chủ từ xa, máy chủ từ xa chỉ đơn giản đọc IP Identification và
dịch giá trị mã ASCII để có thể in ra. Các dòng dưới đây biểu diễn một tcpdump
của các gói tin trên mạng giữa hai máy chủ, “nemesis.psionic.com” và
73
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

“blast.psionic.com”. Thông điệp được mã hóa gồm các chữ cái H-E-L-L-O được
gửi giữa hai máy chủ trong các gói tin xuất hiện để gửi tới web server
blast.psionic.com. Trường trong dấu hỏi là phần IP của gói, được gọi là trường
ID nằm trong dấu ngoặc đơn. Lưu ý rằng trường ID được biểu diễn bởi một số
nguyên trong suốt quá trình tạo gói tin. Gói dữ liệu được chuyển sang mã ASCII
tương đương bằng cách chia cho 256.

Phương pháp này được sử dụng bởi các máy chủ khách xây dựng một
gói tin với các máy chủ đích và thông tin máy chủ nguồn và mã hóa trường IP
74
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

ID. Phương pháp này là tương đối đơn giản và dễ thực hiện, nó dựa trên thao tác
của các thông tin tiêu đề IP và có thể ảnh hưởng tới bộ lọc gói và dịch địa chỉ
mạng nơi thông tin tiêu đề có thể được viết lại trong quá trình truyền, đặc biệt
nếu nó nằm sau tường lửa thì có thể xảy ra trường hợp mất dữ liệu đã được mã
hóa.

Phương pháp 2: Trường số thứ tự khởi tạo

Trường số thứ tự khởi tạo (ISN) của bộ giao thức TCP/IP cho phép một
client thiết lập một đàm phán tin cậy với một máy chủ từ xa. Là một phần của
quá trình đàm phán cho TCP/IP, một số bước được thực hiện trong “bắt tay ba
bước” đã được mô tả trước đó. Trường số thứ tự cung cấp một phương tiện hoàn
hảo để truyền dữ liệu bí mật vì kích thước của nó (32 bít). Cách đơn giản nhất để
tạo ra chuỗi số từ kí tự ASCII thực tế theo mong muốn là được mã hóa. Đây là
phương pháp được dùng bởi covert_tcp, được thể hiện trong các gói tin sau đây.
(“S” chỉ ra một gói tin đồng bộ, số mười chữ số sau là số thứ tự được gửi đi).
Thông điệp được gửi đi là H-E-L-L-O:

75
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Sử dụng phương pháp này, các gói tin được xây dựng với dữ liệu thích
hợp trong trường SYN và gửi đến máy chủ đích. Máy chủ đích đợi nhận tin từ
máy khách, chỉ đơn giản là lấy trường SYN của mỗi gói tin gửi tới để dựng lại
dữ liệu được mã hóa.

Bởi vì toàn bộ lượng thông tin có thể được biểu diễn trong một không
gian địa chỉ 32 bít (4.294.967.296 số), số thứ tự cung cấp một vị trí lí tưởng để
lưu trữ dữ liệu. Thuật toán đơn giản của chương trình covert_tcp lấy giá trị
ASCII của dữ liệu và chuyển nó sang một số thứ tự sử dụng được. Lưu ý rằng
phương pháp này tương tự như “mật mã thay thế” theo đó các gói tin chứa cùng
thông tin sẽ hiển thị số thứ tự giống nhau (lưu ý các gói tin ba, bốn có chứa chữ
cái “L” và số thứ tự của chúng). Phương pháp này kết hợp bộ sinh số giả ngẫu

76
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

nhiên cho số thứ tự với dữ liệu được mã hóa thông qua phép XOR để kết quả
mang tính ngẫu nhiên hơn.

Phương pháp 3: trường số thứ tự thông báo việc nhận được gói TCP
“Bounce”.

Phương pháp này dựa trên giả mạo địa chỉ IP để cho phép cơ chế gửi
“tung” (bounce) một gói tin khỏi một trang web từ xa và trang web đó trả lại gói
tin tới địa chỉ đích thực sự. Điều này có lợi cho việc che giấu người gửi thực sự
của gói tin, bởi vì gói tin đó được gửi đi từ máy chủ “bounce”. Phương pháp này
có thể được dùng để cài đặt một mạng liên lạc một chiều nặc danh, và khó có thể
phát hiện ra mạng này, đặc biệt là khi máy chủ bounce phải xử lí rất nhiều công
việc (rất bận).

Phương pháp này dựa trên đặc tính của gói tin TCP/IP, nơi mà máy chủ
đích trả lời cho một yêu cầu kết nối khởi tạo (gói SYN) với một gói tin
SYN/ACK bao gồm số thứ tự khởi tạo gốc cộng thêm 1 (ISN + 1). Trong
phương pháp này, người gửi xây dựng một gói tin mà chứa các thông tin sau:

Địa chỉ IP nguồn bị giả mạo

Cổng nguồn bị giả mạo

Địa chỉ IP đích bị giả mạo

Cổng đích bị giả mạo

Số TCP SYN với dữ liệu đã được mã hóa

Các cổng nguồn và đích đã được lựa chọn thì không có vấn đề gì (ngoại
trừ nếu chúng ta muốn che giấu việc truyền (giao thông) giống như một dịch vụ
phổ biến, chẳng hạn HTTP, và chúng ta có máy chủ nhận lắng nghe dữ liệu trên
cổng đã được xác định trước, với trường hợp này chúng ta đồng thời cũng muốn
giả mạo cả cổng nguồn). Địa chỉ IP đích sẽ là máy chủ chúng ta muốn thực hiện
bounce thông tin ra và địa chỉ IP nguồn sẽ là địa chỉ của máy chủ mà chúng ta
muốn liên lạc.

77
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Gói tin được gửi đi từ hệ thống máy tính của máy khách và định tuyến
tới địa chỉ IP đích bị giả mạo trong header (“máy chủ thực hiện bounce”). Máy
chủ thực hiện bounce nhận được gói tin và gửi một yêu cầu, có thể là SYN/ACK
hoặc SYN/RST phụ thuộc vào trạng thái của cổng gói tin đó đã dành riêng cho
trên máy chủ thực hiện bounce. Gói tin trả lại được gửi cho địa chỉ nguồn đã bị
giả mạo với số ISN cộng thêm 1. Máy chủ đích lắng nghe lấy gói tin đến và giải
mã thông tin bằng cách biến đổi số thứ thự trả lại trừ đi 1trở về giá trị ASCII.
Lưu ý là các bít bậc thấp bị bỏ đi trong quá trình dịch của covert_tcp do phương
pháp được sử dụng để mã hóa và giải mã thông tin, vì vậy chương trình không
cần điều chỉnh số gói tin SYN đã được tăng lên. Phương pháp bounce được mô
tả theo từng bước dưới đây:

Máy khách: A

Máy chủ thực hiện bounce: B

Máy chủ nhận: C

Bước 1: A gửi một gói tin giả mạo với thông tin đã được mã hóa cho B.
Gói tin này có địa chỉ của C.

Bước 2: B nhận gói tin và trả lại một gói tin phù hợp SYN/ACK hoặc
SYN/RST dựa trên trạng thái của cổng. Vì B nghĩ gói tin đến từ C nên gói tin
được gửi tới địa chỉ của C. Số thứ tự báo đã nhận được (là số mà số thứ tự đã
được mã hóa cộng thêm 1) cũng được gửi tới C.

Bước 3: C, mong đợi nhận được một gói tin từ B (hoặc từ cổng đã xác
định trước) mã hóa dữ liệu và ghi nó vào ổ đĩa.

Phương pháp này chủ yếu là lừa máy chủ từ xa gửi một gói tin và đóng
gói dữ liệu trả lại địa chỉ IP nguồn giả mạo, địa chỉ này máy chủ từ xa nghĩ là
địa chỉ đúng. Từ phía nhận cuối, gói tin dường như là bắt nguồn từ máy chủ
bounce, và thực sự gói đó xuất hiện từ máy chủ này. Chú ý rằng, nếu hệ thống
nhận được thiết kế ở sau bộ lọc gói tin mà cho phép chỉ liên lạc tới một số trang
nào đó thì phương pháp này có thể được sử dụng để bounce các gói khỏi các
trang tin cậy, sau đó chuyển tiếp các gói tin sang hệ thống ở sau bộ lọc gói với

78
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

một địa chỉ nguồn hợp pháp. Điều này rất quan trọng trọng liên lạc với các máy
chủ nhận trong các mạng được bảo vệ nghiêm ngặt hoặc được xem xét cẩn thận.

Việc bounce một gói tin khỏi một trang Internet thông dụng
(.mil, .gov, .com, …) cũng là một kĩ thuật hữu ích đối với việc che giấu các hoạt
động trong liên lạc thông thường. Đảm bảo trang bounce đang không dùng
round-robin DNS (địa chỉ IP có thể tĩnh), hoặc nếu vậy, máy chủ nhận đang lắng
nghe một cách thụ động trên một cổng đã được xác định trước để giải mã các
giao tác truyền từ nhiều trang (ví dụ gửi đi một địa chỉ nguồn và cồng nguồn bị
giả mạo của cổng 1234 để máy chủ thực hiện bounce trả lại gói tin tới máy chủ
lắng nghe trên cổng 1234). Bằng việc sử dụng kĩ thuật này, máy khách gửi có
thể bounce các gói tin khỏi hàng trăm máy chủ Internet trong khi máy chủ nhận
lắng nghe và ghi ra dữ liệu bất kì dành riêng cho số cổng đã định trước không
quan tâm tới địa chỉ IP.

Nếu trang mạng của bạn có một bộ định tuyến được cấu hình chính xác
thì nó có thể không cho phép một gói tin giả mạo với một số mạng mà không
đến từ mạng của nó để đi ra ngoài. Tuy nhiên, nhiều bộ định tuyến không được
cấu hình với tính năng bảo vệ này và sẽ cho dữ liệu đi qua, vì vậy chúng ta có
thể mong đợi kĩ thuật này hoạt động.

2.6 Kết hợp ẩn mã và mật mã


2.6.1 Kết hợp ẩn mã và mật mã có sửa vật phủ
Ý tưởng kết hợp ẩn mã và mật mã được đưa ra nhằm mục tiêu cải tiến
các kĩ thuật ẩn mã bằng cách kết hợp các kĩ thuật ẩn mã hiện có. Cách thức dưới
đây là phương pháp được sử dụng rất phổ biến. Trước tiên, người gửi sẽ mã hóa
thông điệp bí mật bằng cách áp dụng một phương pháp mật mã nào đó để biến
thông điệp rõ thành một bản mã rất khó hiểu. Sau đó, người gửi tiếp tục sử dụng
kĩ thuật ẩn mã để giấu đi sự tồn tại của nó trong một vật phủ khác. Hình dưới
đây mô tả chi tiết quá trình thực hiện của việc ẩn mã thông thường (không dùng
mật mã) và phương pháp kết hợp ẩn mã với mật mã theo cách tiếp cận này:

79
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.24 Mô hình ẩn mã thông thường và kết hợp với mật mã

Như trong hình 2.24 đã chỉ ra, rõ ràng với cách kết hợp với mật mã thì
mô hình có thể tạo nên sự bảo vệ hai lớp, ngoài việc giấu đi nội dung thực của
thông điệp ban đầu bằng một phương pháp mật mã thì nhờ có ẩn mã kẻ tấn công
khó có thể biết được sự có mặt của bản mã đó trong vật phủ.

2.6.2 Kết hợp ẩn mã và mật mã không sửa vật phủ


Cách kết hợp thứ hai này sẽ sử dụng các lược đồ hoàn toàn khác (ở đây
cũng giả thiết dùng các ảnh số để làm vật phủ). Cụ thể cách thực hiện như sau:
Cả bên gửi và bên nhận đều thống nhất một vật phủ để gửi thông điệp bí mật.
Giao thức không sửa ảnh gốc mà chỉ xác định các bít của thông điệp bí mật mà
trùng khớp với các bít trong ảnh gốc và lưu chúng vào các vị trí khác nhau
(chẳng hạn trong ảnh gốc) dưới dạng một vector. Vector này sau đó được gửi
(có thể sử dụng thêm mật mã để tăng cường độ an toàn) cho người nhận theo
cách sẽ mô tả dưới đây. Kẻ tấn công trong trường hợp này có thể chặn một
vector các bít có thể đã được mã hoá nhưng không thể biết được ảnh gốc tương
ứng là ảnh nào. Vì vậy, để phá được lược đồ ẩn mã này thì kẻ tấn công phải
chặn được thông điệp bí mật đã gửi và đồng thời lại phải biết được ảnh gốc. Có
thể nói đây là một cách tiếp cận rất mới và đặc biệt lần đầu tiên được Khalil
Challita và Hikmat Farhat giới thiệu vào năm 2011.
80
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 2.25 Mô hình kết hợp ẩn mã và mật mã không sửa vật phủ

Cách ẩn mã này có một khó khăn ở khâu thống nhất vật phủ giữa người
gửi và người nhận, để kẻ tấn công không thể biết được. Thông thường, hai bên
đều có trước một tập các vật phủ và kí hiệu vật phủ được sử dụng trong mỗi lần
trao đổi. Thực chất ở đây không sử dụng bất kỳ một kĩ thuật ẩn mã cũng như
mật mã thông thường nào. Đây chính là sự sáng tạo hết sức tinh tế của các tác
giả đã đề xuất ra phương pháp này.

Quá trình mã hóa rất thông minh, thể hiện ở chỗ tìm ra các bít giống
nhau giữa thông báo và vật phủ rồi lưu thành một vector chứa các vị trí bắt đầu
và kết thúc của các chuỗi bít con đó. Sự ẩn mã cũng là một cách thực hiện tinh
tế không kém vì thực chất là ẩn vào vật phủ thông qua vector vừa xác định mà
không hề thay đổi vật phủ. Do vậy, thông tin truyền đi không phải là một vật
phủ có nhúng thông báo mà chỉ đơn giản là một vector chứa các vị trí khác nhau
của vật phủ. Người nhận có vật phủ và dựa vào vector này để xác định các vị trí
trong vật phủ từ đó để tìm ra các bít tương ứng và đó cũng chính là các bít trong
thông báo của người gửi.

Dưới đây là thuật toán thực hiện dựa trên cách phân tích cú pháp tĩnh
(Static Parsing Steganography – SPS), gồm hai bước:

Bước 1: Vật phủ (cả bên gửi và bên nhận chia sẻ) và thông báo bí mật
được chuyển thành các bít, kí hiệu các tệp đầu ra này lần lượt là Object1 và
Secret1.

Bước 2: Mã hóa thông báo bí mật Secret1 theo Object1. Ý tưởng được
dựa trên bài toán tìm xâu con giống nhau dài nhất của hai xâu, sử dụng phương
81
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

pháp cây hậu tố tổng quát (Genralized Suffix Tree). Lựa chọn phương pháp này
vì nó có thể thực hiện trong thời gian tuyến tính.

Thuật toán sử dụng chiến lược chia để trị và thực hiện như sau: Bắt đầu
với toàn bộ các bít của Secret1 và tìm một xâu có các bít giống nhau ở cả
Secret1 và Object1. Nếu tìm được một xâu thỏa mãn yêu cầu thì thuật toán sẽ
lưu các chỉ số bắt đầu và kết thúc của xâu Secret1 mà xuất hiện trong Object1
vào một tệp đầu ra là Output1. Nếu không tìm thấy, thì thuật toán tiếp tục đệ quy
để tìm ra một xâu giống nhau trong nửa trái và nửa phải của Secret1 vớiObject1.
Tiếp tục lặp quá trình này cho tới khi tìm ra được tất cả các bít của Secret1 khớp
với các bít của Object1.

Thời gian thực hiện của thuật toán SPS có thể được xác định bằng quan
hệ truy hồi ( ) ( ) ( ). Vì hàm gọi đệ quy chia bài toán thành 2
bài toán con có độ phức tạp bằng nhau khi tìm một xâu giống nhau trong nửa
trái và nửa phải của Secret1 với Object1. Ngoài ra còn một thao tác kiểm tra
xem toàn bộ các bít của Secret1 có thuộc Object1 không ứng với độ phức tạp về
thời gian là O(n). Do vậy, độ phức tạp về thời gian của thuật toán này là
( ).

2.7 Bài tập thực hành


1. Lập trình xây dựng chương trình giấu tin mật trong ảnh RGB sử dụng
kĩ thuật LSB và trích xuất được tin mật từ ảnh đã được giấu tin.

2. Lập trình xây dựng chương trình giấu tin mật trong tệp ảnh dùng thuật
toán Jsteg.

3. Xây dựng chương trình giấu tin mật trong tệp ảnh dùng thuật toán
OutGuess 0.1, OutGuess 0.2, F5.

82
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

CHƯƠNG 3 PHÂN TÍCH ẨN MÃ


3.1 Các kịch bản phân tích ẩn mã
Phân tích ẩn mã thực hiện tìm kiếm để phát hiện các thông điệp được
giấu trong vật phủ. Yêu cầu đối với việc phân tích ẩn mã có thể rất khác nhau
tùy vào kịch bản hoạt động. Có 3 loại tấn công, đó là: thụ động, chủ động và độc
hại (malicious). Tấn công thụ động chặn liên lạc từ bên gửi và kiểm tra xem có
thông điệp nào được giấu trong quá trình trao đổi đó không. Nếu không thấy có
giấu thông tin thì người phân tích sẽ chuyển hướng sang những liên lạc được gửi
tới bên nhận. Ngược lại, nếu phát hiện ra có thông điệp được giấu thì người
phân tích chặn liên lạc này (tức là bên nhận không nhận được thông tin liên lạc
cũng không nhận được thông điệp đã giấu).

Tấn công chủ động được phép tự do hơn, cụ thể là được sửa đổi thông
tin liên lạc giữa bên gửi và bên nhận. Do đó, ngay cả khi thử nghiệm phân tích
ẩn mã của người phân tích không thành công thì thông tin liên lạc vẫn có thể bị
thay đổi nhằm mục đích loại bỏ bất cứ thông điệp nào đã được giấu. Ví dụ, nếu
bên gửi và bên nhận đang truyền cho nhau các ảnh nén JPEG thì người phân tích
có thể chọn để nén lại các ảnh trước khi chúng được chuyển tới bên nhận. Như
vậy với cách này, thông điệp mà được giấu theo thuật toán ẩn mã dựa trên JPEG
có khả năng bị xóa bỏ.

Tấn công độc hại có thể được xem là một kiểu tấn công cấp cao hơn so
với tấn công thụ động và chủ động bởi vì người phân tích cố gắng mạo danh là
bên gửi và gửi cho bên nhận những thông điệp sai. Để làm được điều đó thì
người phân tích cần phải có khả năng nhiều hơn trong quá trình thực hiện so với
việc chỉ cần phát hiện một thông điệp bí mật. Trong trường hợp này, người phân
tích cũng phải biết thuật toán ẩn mã mà hai bên đang sử dụng và bất kì các khóa
sử dụng trong quá trình nhúng tin cũng như phát hiện/trích xuất tin. Do vậy, mục
tiêu của người phân tích không đơn thuần chỉ là phát hiện ra các thông điệp
được giấu mà còn muốn biết được nhiều thông tin khác nữa. Đây chính là mức
phân tích ẩn mã cao hơn hay còn gọi là phân tích ẩn mã theo cách thức điều tra.

83
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

3.1.1 Phát hiện


Việc phát hiện thông điệp bí mật được giấu trong liên lạc thường được
mô hình hóa thành bài toán phân loại. Thuật toán phân tích ẩn mã nhận đầu vào
là vật chứa và thực hiện phân loại để trả về kết quả đầu ra đó là một vật phủ hay
là vật đã có nhúng tin. Có hai trường hợp xảy ra, thứ nhất người phân tích không
biết gì ngoài việc nghi ngờ bên gửi và bên nhận đang ngầm trao đổi thông tin bí
mật. Trường hợp thứ hai là người phân tích biết chắc chắn hai bên gửi và nhận
có những trao đổi ngầm, thậm chí biết cả thuật toán ẩn mã họ đang dùng. Rõ
ràng đối với trường hợp thứ nhất, người phân tích phải phát triển một thuật toán
phân tích ẩn mã có thể phát hiện được tất cả các dạng hoặc ít nhất cũng phát
hiện được một số dạng ẩn mã. Đây không phải là một điều dễ dàng và cách phân
tích ẩn mã này được gọi là phân tích mù. Trong trường hợp thứ hai, người phân
tích chỉ cần có khả năng phát hiện ra một thuật toán ẩn mã cụ thể, người ta gọi
đó là phân tích ẩn mã có chủ đích.

Cả phân tích ẩn mã có chủ đích và mù đều mô phỏng bài toán phát hiện
thông điệp bí mật như bài toán phân loại. Đây là một mô hình đặc biệt hữu ích vì
chúng ta có thể khai thác rất nhiều kết quả nghiên cứu trong lĩnh vực này. Bài
toán phân loại chia tập tất cả các đối tượng có thể thành các tập con không giao
nhau, mỗi tập con tạo thành một lớp. Nếu chỉ có hai lớp, chúng ta thường gọi là
phát hiện hơn là phân loại. Bộ phân loại là một ánh xạ phụ thuộc vào một hoặc
nhiều tham số. Các tham số này được xác định thông qua quá trình huấn luyện
và được dựa trên sự cân bằng giữa hai loại lỗi (phát hiện sai và phát hiện cảnh
báo sai trong trường hợp bộ phân loại hai lớp mà bộ phân loại có thể làm.

Phân tích ẩn mã có chủ đích

Trong phân tích ẩn mã có chủ đích, chúng ta biết thuật toán ẩn mã đang
được dùng. Giả sử hai bên gửi và nhận sử dụng thuật toán nhúng LSB trong
miền không gian, chúng ta sẽ xem xét cách người phân tích xây dựng bộ phân
loại. Phép lật các LSB của giá trị điểm ảnh thêm nhiễu vào ảnh và do đó về mặt
trung bình sẽ làm tăng sự khác biệt giữa các điểm ảnh lân cận. Vì vậy, người
phân tích có thể chọn để tính toán tổng các giá trị tuyệt đối những sai khác giữa
tất cả các cặp điểm ảnh lân cận trong ảnh, với giả thiết giá trị của tổng này lớn
84
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

hơn thì chứng tỏ sử dụng ẩn mã LSB. Tuy nhiên, có rất nhiều biến thể của
phương pháp ẩn mã sử dụng LSB nên khó có thể phân loại chính xác được các
nhóm ảnh phủ và ảnh đã có nhúng tin. Những ảnh có kết cấu hoặc có nhiễu (ảnh
chụp trong điều kiện ánh sáng yếu) tự nhiên có sự khác biệt lớn giữa các điểm
ảnh lân cận. Do đó, kết quả phân loại mà người phân tích thu được không đáng
tin cậy bởi có tỉ lệ cảnh báo sai cao.

Với những người phân tích có trình độ cao hơn có thể nhận thấy là sự
thay đổi tạo nên do cách thức nhúng vào LSB là không đối xứng. Thực tế, trong
phương pháp nhúng vào LSB, một giá trị điểm ảnh chẵn không bao giờ bị giảm
giá trị mà chỉ có thể tăng giá trị hoặc không thay đổi. Ngược lại, những giá trị lẻ
hoặc giảm đi hoặc không thay đổi. Khi thiết kế bộ phân loại có chủ đích có thể
khai thác sự bất đối xứng này. Thực tế, không chỉ xây dựng một bộ phát hiện,
chúng ta còn thiết kế một bộ ước lượng những sự thay đổi mà phương pháp
nhúng tạo ra. Do đó, kết quả phân tích ẩn mã sẽ đưa ra câu trả lời có hay không
tồn tại thông điệp bí mật đồng thời chỉ ra một giá trị có liên quan mật thiết tới độ
dài của thông điệp bí mật đã được nhúng. Tóm lại việc thiết kế các đặc tính cho
phân tích ẩn mã có chủ đích hầu như luôn bắt đầu với việc phân tích thuật toán
nhúng để định lượng kết quả của phương pháp nhúng trên vật có nhúng tin.

Phân tích mù

Phân tích mù cũng giống với phân tích có chủ đích ở chỗ cũng lựa chọn
đại diện đặc trưng và xác định ranh giới quyết định. Tuy nhiên, thực tế phương
pháp phân tích mù khó thực hiện hơn rất nhiều bởi người phân tích không biết
thuật toán ẩn mã đã được sử dụng. Tất nhiên, người phân tích vẫn có thể dự
đoán chung chung về thuật toán ẩn mã và điều đó sẽ hỗ trợ việc lựa chọn các đặc
trưng. Mặc dù vậy, đặc trưng này phải nhạy cảm đối với tất cả các thuật toán ẩn
mã chứ không chỉ riêng thuật toán cụ thể nào. Một đại diện như vậy thường là
chưa biết và nếu biết được nó thì cũng mới chỉ như một chất xúc tác để thiết kế
một lớp mới của thuật toán ẩn mã.

Giả sử có một đại diện đặc trưng, sau đó phải huấn luyện bộ phân loại.
Thông thường trong pha huấn luyện, một bộ phân loại cần hai tập có gán nhãn,
đó là tập các vật phủ và tập các vật có nhúng tin. Tuy nhiên, với phân tích mù
85
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

người phân tích lại không có tập các vật có nhúng tin để huấn luyện bộ phân loại.
Có hai lựa chọn đưa ra. Thứ nhất là để huấn luyện bộ phân loại phân tích ẩn mã
mù ta sử dụng tập các vật có nhúng tin được sinh ra từ rất nhiều thuật toán phân
tích ẩn mã đã biết. Nếu may mắn thì hai bên gửi và nhận sử dụng một trong các
thuật toán này. Ngược lại, người phân tích phải hi vọng rằng các ví dụ huấn
luyện là đủ để khái quát hóa những thuật toán ẩn mã chưa từng thấy.

Lựa chọn thứ hai là để huấn luyện bộ phân loại phân tích ẩn mã mù chỉ
sử dụng ảnh phủ. Bộ phân loại này đơn giản là học những đặc trưng của một vật
phủ “sạch” (chưa nhúng tin) và sau đó đánh dấu (gán nhãn) nghi ngờ có thể là
một vật có nhúng tin đối với bất kì vật phủ nào không phù hợp với sự phân bố
của các vật phủ “sạch” đó. Điều này có ưu điểm là đơn giản hóa quá trình huấn
luyện và bộ phân loại có thể không cần phải huấn luyện lại khi làm việc với các
phương pháp nhúng mới.

Các bộ phân loại mù mà được thiết kế để phát hiện ẩn mã trong bất kì


miền nhúng nào được gọi là vạn năng. Các bộ phân loại mù khác được thiết kế
cho một miền cụ thể, chẳng hạn là các phương pháp ẩn mã trên miền không gian
hoặc trên miền tần số.

Tấn công hệ thống

Các thuật toán ẩn mã cũng có thể có những điểm yếu về hệ thống, chẳng
hạn khi nhúng tin vào các tập tin điện tử thì vô tình tạo ra các dấu hiệu hoặc lời
chú thích đặc biệt mà thường không có trong các tập tin như vậy. Ví dụ, ban đầu
thuật toán ẩn mã F5 luôn chèn vào phần header của ảnh JPEG dòng chữ “JPEG
Encoder Copyright 1998, James R. Weeks and BioElectroMech”, trong khi đó
gần như không có ảnh JPEG nào được tạo ra từ các phần mềm chỉnh sửa ảnh
phổ biến có chứa dòng chú thích này. Do đó, dòng chú thích này có thể được sử
dụng một cách khá tin cậy để phát hiện ra các ảnh JPEG đã được xử lí bằng
thuật toán F5. Ngoài ra, còn có rất nhiều ví dụ khác về việc các thuật toán ẩn mã
vô tình để lại dấu vết trong các vật có nhúng tin. Tóm lại, rõ ràng tính an toàn
của một thuật toán ẩn mã không chỉ phụ thuộc vào thuật toán nhúng và số bít
thông điệp được nhúng mà còn phụ thuộc vào khóa nhúng. Khóa nhúng thường
xác định các bước đi trên ảnh theo bộ giả ngẫu nhiên để nhúng tin. Khóa nhúng
86
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

yếu thì làm cho thuật toán ẩn mã không an toàn và có thể dẫn đến hai bên liên
lạc không đảm bảo được bí mật. Điều này là do kẻ tấn công có thể sử dụng tấn
công từ điển đối với khóa nhúng. Với mỗi một khóa được thử, người phân tích
trích xuất được một thông điệp và như vậy khóa nhúng có thể được tìm ra khi
người phân tích thu được một thông điệp có nghĩa rõ ràng. Như vậy, bằng cách
này người phân tích có thể đạt được mục tiêu của phân tích ẩn mã vì khi thu
được thông điệp có nghĩa tức là anh ấy/cô ấy hoàn toàn chắc chắn rằng hai bên
sử dụng ẩn mã để trao đổi và người phân tích cũng sẽ biết được thông điệp cũng
như khóa nhúng. Hiển nhiên sau đó người phân tích có thể giả vờ như một trong
hai bên hoặc cũng có thể chỉ đơn giản là chặn các thông tin liên lạc.

Nếu thông điệp được mã hóa trước khi nhúng thì cách tìm kiếm vét cạn
như trên sẽ không khả thi vì bản mã của thông điệp chứa các bít ngẫu nhiên như
một thông điệp không có ý nghĩa. Tuy nhiên, lúc đó người phân tích có thể sử
dụng các phương pháp phân tích ẩn mã khác, chẳng hạn như phân tích thống kê.
Ví dụ, đối với phương pháp nhúng LSB đơn giản, nếu biết khóa nhúng thì xác
suất gặp một điểm ảnh bị sửa đổi dọc theo đường nhúng tin là khoảng ⁄ vì

một nửa số điểm ảnh bị thay đổi khi nhúng tin. Tuy nhiên, khi theo đường nhúng
được sinh ra từ một khóa không phải khóa nhúng thì xác suất này chỉ là ⁄ ,

trong đó q là độ dài tương đối của thông điệp. Do đó, trừ khi nhúng vào toàn bộ
vật phủ, trong trường hợp , còn không phân bố thống kê của các điểm ảnh
trong hai trường hợp sẽ khác nhau. Vì vậy, người phân tích có thể sử dụng lí
thuyết phát hiện cổ điển để xây dựng bộ phát hiện và tìm kiếm khóa nhúng.

3.1.2 Phân tích ẩn mã dựa trên điều tra số


Giả sử người phân tích có thể xác định một cách tin cậy thời điểm hai
bên gửi và nhận trao đổi giữa có chứa các thông điệp bí mật được che giấu, vấn
đề của người phân tích lúc đó là sẽ phải thực hiện hành động gì để có thể ngăn
chặn được những thông điệp bí mật đó. Không phải lúc nào người phân tích
cũng có thẩm quyền hoặc nguồn lực để ngăn chặn kênh liên lạc này. Vì vậy mà
người phân tích ẩn mã có thể mong muốn đọc được nội dung thông điệp hoặc

87
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

xác định được các thông tin liên quan. Trong phân tích ẩn mã người ta gọi điều
này là phân tích dựa vào điều tra số.

Đầu tiên người phân tích có thể cố gắng khôi phục lại một số thuộc tính
của thông điệp được nhúng và các tính chất của thuật toán ẩn mã. Ví dụ, thuật
toán phát hiện có thể giúp ước lược được số lượng các thay đổi trong quá trình
nhúng. Từ đó, có thể suy ra chiều dài xấp xỉ của thông điệp. Nếu xác định được
vị trí xấp xỉ của các thay đổi khi thực hiện nhúng thì có thể phát hiện được một
lớp các thuật toán ẩn mã. Ví dụ, người phân tích có thể sử dụng tấn công biểu đồ
(được mô tả ở phần 3.2.1) để xác định liệu thông điệp có được nhúng tuần tự
không và từ đó khoanh vùng lớp các phương pháp ẩn mã.

Các đặc tính của những thay đổi khi thực hiện nhúng cũng tiết lộ các
thông tin về cơ chế nhúng. Nếu người phân tích có thể xác định được các LSB
của các điểm ảnh đã được sửa đổi thì có thể tập trung vào các phương pháp
nhúng LSB. Cuối cùng, người phân tích có thể đoán được phương pháp ẩn mã
đã được sử dụng và sẽ cố gắng xác định khoá nhúng để trích xuất ra thông điệp.
Nếu thông điệp đó được mã hoá thì người phân tích cần phải thực hiện thám mã
đối với chuỗi bít vừa trích xuất được.

Dựa trên những thông tin có sẵn, người phân tích có thể thực hiện các
kiểu tấn công khác nhau. Trong trường hợp phổ biến nhất mà chúng ta đã xem
xét đó là tấn công chỉ có vật có nhúng thông điệp, tức là người phân tích chỉ có
thông tin duy nhất là vật đã được nhúng tin. Tuy nhiên, trong một vài trường
hợp, người phân tích có thể biết thêm các thông tin hữu ích hỗ trợ trong quá
trình phân tích ẩn mã. Ví dụ, trong trường hợp phạm tội, máy tính của kẻ tình
nghi có thể có luôn cặp vật phủ và vật có nhúng tin trên ổ cứng. Điều đó cho
phép người phân tích có thể trực tiếp suy ra cả vị trí và số lượng các thay đổi
trong quá trình nhúng. Kịch bản này được gọi là tấn công vật phủ đã biết.

Nếu người phân tích biết thuật toán ẩn mã (ví dụ, phần mềm được tìm
thấy trên máy tính của kẻ tình nghi) thì có thể thực hiện thêm 2 tấn công –
phương pháp tấn công vật có nhúng tin đã biết và tấn công thông điệp đã biết vì
như vậy sẽ có nhiều cơ hội thành công. Ví dụ, để tìm kiếm khóa nhúng, người
phân tích có thể thực hiện tấn công từ điển, nhúng các thông điệp và so sánh vị
88
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

trí của các thay đổi khi nhúng trong vật có nhúng tin vừa thu được với những vị
trí trong vật có nhúng tin đang điều tra. Phương pháp tấn công từ điển có thể khả
thi hoặc không phụ thuộc vào phương pháp ẩn mã và kích thước của không gian
khóa.

3.1.3 Sự ảnh hưởng của vật phủ trong phân tích ẩn mã


Lựa chọn vật phủ có ảnh hưởng lớn đối với sự an toàn của hệ thống ẩn
mã. Ví dụ, các hình ảnh có số lượng màu thấp mà được thể hiện trong các định
dạng bảng màu, chẳng hạn như GIF, thì tạo ra ít sự dư thừa và do vậy, phương
pháp ẩn mã sẽ dễ bị phát hiện hơn. Thậm chí có những trường hợp nguồn tài
nguyên các vật phủ nào đó không thích hợp để dùng trong ẩn mã.

Xét trường hợp vật phủ là một ảnh JPEG đã được giải nén vào trong
miền không gian và thuật toán ẩn mã được sử dụng trong miền không gian (ví
dụ nhúng LSB). Nếu áp dụng thuật toán này đối với vật phủ trên thì vô tình việc
nén JPEG trước đó đã tạo ra một “dấu hiệu” đặc trưng trên ảnh, và như vậy, việc
nhúng ẩn mã đã làm mất tính toàn vẹn của ảnh. Cụ thể, trong quá trình nén
JPEG, một khối điểm ảnh có kích thước được ánh xạ thành một khối các
hệ số DCT đã được lượng tử hóa cũng với kích thước . Ánh xạ này rõ ràng
là nhiều-một. Tuy nhiên, khi nhúng trong miền không gian của ảnh JPEG đã
được giải nén, rất có khả năng các khối không gian đã được biến đổi sẽ không
tương ứng với bất kì một khối các hệ số DCT đã được lượng tử hóa. Nói cách
khác, khi được giải nén, không có một khối các hệ số DCT đã được lượng
tử hóa có thể tạo ra các giá trị điểm ảnh trong khối không gian đã biến đổi. Tuy
nhiên, vì những thay đổi do ẩn mã ảnh là nhỏ nên khối sẽ vẫn giữ lại các dấu vết
rõ ràng của việc nén JPEG trước đó. Trong thực tế, nếu số lượng các thay đổi
trong quá trình nhúng đủ nhỏ (trung bình ít hơn một hoặc 2 thay đổi trong khi
nhúng trên một khối) thì có thể khôi phục lại khối điểm ảnh ban đầu của vật phủ
và xác định được điểm ảnh đã bị thay đổi.

Giả sử người thiết kế hệ thống ẩn mã nhận thức được các lỗ hổng


nghiêm trọng này và phòng ngừa chúng, người thiết kế hệ thống ẩn mã vẫn có
một số lựa chọn về cách chọn các tài nguyên vật phủ. Những lựa chọn này ảnh
hưởng đến việc phân phối các vật phủ, mà lần lượt, ảnh hưởng đến việc thực
89
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

hiện của tất cả các thuật toán phân tích ẩn mã. Các lựa chọn như vậy bao gồm (1)
kích thước của ảnh, (2) các ảnh là ảnh xám hay ảnh màu, (3) có sử dụng hình
ảnh có độ mịn cao và ảnh có độ nhiễu tần số cao hay không, (4) sử dụng hình
ảnh đã được nén trước hay dùng hình ảnh chưa bao giờ bị nén.

Nói chung, với độ dài thông điệp tương đối cố định thì việc phát hiện
thông điệp trong ảnh nhỏ khó hơn trong ảnh lớn. Bởi vì các đặc tính mà được
tính toán từ một mẫu thống kê ngắn hơn vốn dĩ sẽ bị nhiễu hơn. Các thay đổi do
ẩn mã trong ảnh màu cũng dễ bị phát hiện hơn trong ảnh xám vì các ảnh màu
cung cấp nhiều thông tin cho phân tích thống kê và người phân tích ẩn mã có thể
tận dụng các mối tương quan chặt chẽ giữa các kênh màu. Việc phát hiện các
thay đổi do nhúng tin trong nhiễu hoặc trong ảnh có độ mịn cao thường khó hơn
trong ảnh có thành phần nhiễu thấp và khu vực mịn lớn. Lí do là vì cụm được
hình thành bởi các đặc tính mà được trích xuất từ ảnh nhiễu hoặc ảnh có kết cấu
cao thường rộng hơn và do vậy tạo ra sự chồng chéo với cụm của các vật có
nhúng tin. Các bản quét của film hoặc các ảnh tương tự cũng đặc biệt gây khó
khăn cho việc phân tích ẩn mã bởi vì bản quétcó độ phân dải cao do đó đã xử lí
các hạt trong ảnh khiến chúng giống như nhiễu có tần số cao.

3.2 Một số thuật toán phân tích ẩn mã


3.2.1 Nhúng LSB và tấn công biểu đồ
Khái niệm về cặp PoV được Pfitzman và Westfeld đưa ra. Cho một ảnh I.
Gọi j là giá trị điểm ảnh trên ảnh I. Nếu j chẵn ( ) thì sau phép lật bít giá trị
của , nếu j là lẻ ( ) thì sau phép lật bít của giá trị j là 2i.
Như vậy, nếu một giá trị điểm ảnh ở trong một cặp thì sau khi giấu tin của nó
vẫn nằm trong một cặp có tính chất chẵn lẻ tương tự.

Việc nhúng LSB sẽ tạo ra các cặp PoV và các thay đổi trong biều đồ
biểu diễn đặc trưng điểm ảnh. Do đó, ta có thể sử dụng quan sát này để thực hiện
tấn công biểu đồ. Hình dưới đây là biểu đồ minh họa một phân phối tuyến tính
cho tất cả các hệ số DCT qua điểm 0 của một hình ảnh “sạch”. Vì các giá trị
không bị thay đổi bởi bất kì quá trình nhúng nào, có một cấu trúc rõ ràng để các
giá trị cung cấp một đặc tính cho việc phát hiện ẩn mã.

90
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.1 Biểu đồ 8 bít hình ảnh JPEG khi chưa nhúng

Hình 3.1 biểu diễn đồ thị của 8 bít ảnh JPEG khi chưa nhúng tin, như kì
vọng, tần số của các giá trị tăng tuyến tính hướng tới điểm 0 và giảm dần sau đó.
Nếu ta so sánh biểu đồ này với biểu đồ khi nhúng 80% dung lượng bằng thuật
toán nhúng JSteg, ta có thể thấy được vai trò quan trọng của cặp P0V trong phân
tích ẩn mã

Hình 3.2 Biểu đồ của 8 bít hình ảnh JPEG khi dùng Jsteg

91
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.2 cho thấy rõ PoV được tạo bởi phương pháp lật bít của JSteg, tất
cả các giá trị (trừ 0 và 1 mà JSteg không nhúng) có thể được ghép cặp với nhau
bởi các giá trị lân cận với nó vì tần số xuất hiện của chúng là gần như nhau. Ví
dụ, tần số xuất hiện giá trị -2 gần như giá trị -1, tương tự tần số giá trị 2 gần với
giá trị 3. Đặc điểm này là một đặc tính của phương pháp ẩn mã được tạo bởi
việc lật bít, nó tương tự như dùng OutGuess 0.1 và F3.

Gọi ] biểu thị biểu đồ của ảnh phủ và là biểu đồ


tương ứng của hình ảnh có nhúng tin sau khi nhúng bít, trong đó n là tổng số
điểm ảnh và .

Ta tính như là một hàm của và q. Giả sử rằng thông điệp bí mật là
một dòng bít ngẫu nhiên (do đã được mã hóa hoặc nén), số lượng dự kiến của
các điểm ảnh xám 2i được sửa đổi thành là ]. Đây là trung bình
một nửa các bít thông điệp sẽ phù hợp với LSB của các điểm ảnh. Tương tự như
vậy, dự kiến số các điểm ảnh xám sẽ được thay đổi thành 2i là
]. Do đó, ta có:

{ ]} ( ) ] ]
(3.1)
{ ]} ( ) ] ( ) ]
Lưu ý trong trường hợp nhúng đầy ảnh, ( ), { ]}
{ ]} biểu đồ biểu diễn các giá trị 2i, là tương đương nhau, tổng
] ] ] ] là bất biến kể cả sau khi nhúng LSB.
Các giá trị kì vọng về mặt lí thuyết của ] là: ̅ ] ( ]
]) . Do đó, có thể phát hiện nhúng LSB đối với bằng cách kiểm
tra xem liệu ] ].

Không mất tính tổng quát, ta có thể chỉ sử dụng các giá trị chẵn của ảnh
xám và áp dụng một vài kiểm tra thống kê để có thể xác minh giá trị chẵn ]
tuân theo phân bố đã biết ̅ ]. Ở đây, ta áp dụng kiểm tra khi bình phương
của Pearson để xác định xem ] ̅ ]. Kiểm tra khi bình phương bắt đầu
bằng việc tính S:

92
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ] ̅ ])
∑ (3.2)
̅ ]

với ( – ) bậc tự do. Giả thiết rằng các giá trị xám chẵn tuân theo
hàm khối lượng xác suất, ̅ ], kiểm định thống kê, S, theo phân phối khi bình
phương với – bậc do. Lưu phải gộp các giá trị sao cho ̅ ] để chắc
chắn rằng S tuân theo phân phối khi bình phương.

Bằng trực giác, một giá trị nhỏ của S chỉ ra rằng dữ liệu tuân theo phân
phối kì vọng và ta có thể kết luận rằng hình ảnh có chứa thông điệp được nhúng
dùng cách nhúng LSB. Mặt khác, giá trị lớn của kiểm định thống kê cho thấy
không có thông điệp nào được nhúng. Ý nghĩa thống kê của S được đo bằng giá
trị p, p là xác suất để phân phối khi bình phương ngẫu nhiên với – bậc tự do
sẽ đạt được giá trị lớn hơn hoặc bằng S:

( ) ∫ (3.3)
( )

Nếu hình ảnh không chứa thông điệp ẩn, S lớn và ( ) . Trên thực tế,
ta có thể tính một ngưỡng giá trị để ( ) , với là mức ý nghĩa được
chọn. Đối với mức độ tin cậy , ta quyết định rằng ảnh kiểm tra có chứa thông
điệp bí mật nếu ( ) hoặc . Điều này được rút ra khi thực hiện
nhúng trên toàn bộ hình ảnh với . Nếu ảnh có nhúng tin được nhúng tuần
tự nhưng không toàn bộ, ta có thể quét hình ảnh có nhúng tin theo thứ tự mà
thông điệp được nhúng và đánh giá p trên tập các điểm ảnh được quét. Ban đầu
giá trị p gần tới 1, sau đó đột ngột rơi xuống điểm 0 khi hết thông điệp, và nó
vẫn giữ giá trị không cho đến khi quét hết ảnh. Hình 3.4 là biểu đồ biểu diễn giá
trị p khi thông điệp được nhúng tuần tự trong ảnh phủ (hình 3.3) với .

93
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.3 Ảnh phủ mức xám

Hình 3.4 Biểu đồ biểu diễn giá p khi quét ảnh có nhúng tin được nhúng
60% ảnh

94
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Điều này cho thấy, khi nhúng tuần tự thông điệp vào ảnh phủ thì không
chỉ được xác định với một xác suất rất cao mà còn cho thấy ước lượng chiều dài
của thông điệp nhúng.

Nếu các điểm ảnh được lựa chọn ngẫu nhiên để nhúng thay vì tuần tự,
thử nghiệm này sẽ không có hiệu quả, trừ khi phần lớn các điểm ảnh đều được
chọn để nhúng. Tuy nhiên, phân tích này được khái quát hóa bằng cách tính
phương trình (3.2) trên một cửa sổ trượt của các điểm ảnh trong ảnh. Giá trị p sẽ
dao động với một mức độ giảm vì độ dài của thông điệp tăng lên. Bởi vì thông
điệp được rải ngẫu nhiên, do đó có thể tập trung ở một số vùng ảnh này hơn
những ở vùng khác. Mục 3.2.2 sẽ giới thiệu một tấn công mạnh hơn lên ảnh phủ
được nhúng bằng LSB được gọi là phân tích cặp mẫu.

95
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

3.2.2 Phân tích cặp mẫu


Kĩ thuật phân tích cặp mẫu SPA (Sample Pair Analysis) do Sorina
Dumitrescu và cộng sự đưa ra nhằm phát hiện các giấu tin mật LSB thông qua
việc phân tích cặp mẫu. Khi tỉ lệ giấu tin lớn hơn 3% thì phương pháp này có thể
ước lượng độ dài đã giấu với độ chính xác tương đối cao.

Kĩ thuật SPA dựa trên lí thuyết về xích hữu hạn trạng thái. Các trạng thái
của xích hữu hạn trạng thái được chọn từ tập hỗn hợp (multisets) các cặp mẫu
được gọi là tập hỗn hợp dấu vết (trace multisets). Trước khi giấu tin, các phần tử
trong cặp có quan hệ với nhau theo một độ đo nào đó. Nhưng sau khi giấu tin
LSB một cách ngẫu nhiên thì các tập này sẽ thay đổi và nó dẫn đến những thay
đổi các quan hệ thống kê.

Giả sử rằng ta có các mẫu liên tiếp nhau (các chỉ số thể hiện
vị trí của một mẫu trên ảnh). Một cặp mẫu là một bộ hai ( ) .
Đặt P là tập tất cả các cặp mẫu được lấy ra từ một ảnh. P có thể coi như là một
tập hỗn hợp (multiset) của các bộ hai ( ), trong đó u và v là các giá trị của hai
mẫu. Nếu không có gì ngoại lệ thì ( ) hoặc các phần tử của P luôn tham
chiếu đến các giá trị của các mẫu khác nhau được lấy ra từ ảnh.

Định nghĩa {( ) || | } là một tập con (submultiset)


của P chứa cặp mẫu có dạng ( ) hoặc ( ) trong đó n là một số
nguyên cố định , b là số bít nhị phân biểu diễn mỗi giá trị mẫu.
Hay nói cách khác, các cặp mẫu trong sai khác nhau một lượng bằng n. Từ
việc giấu tin chỉ ảnh hưởng tới các bít LSB nên ta sử dụng nhiều nhất là ( )
bít tín hiệu trong việc chọn lựa các tập hỗn hợp đóng này.

Với mỗi số nguyên ta định nghĩa tập là tập


con (submultiset) của P có chứa các cặp mẫu mà giá trị của nó chỉ sai khác
nhau m trong ( ) bít đầu tiên.
| |
{( ) } với

Ta xét mối quan hệ giữa và

96
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Ta có chứa , vì nếu ( ) là một cặp trong (| | )


thì cả u và v là cùng chẵn hoặc cùng lẻ. Bằng việc dịch phải một bít và lấy sai
phân trị tuyệt đối ta thu được giá trị | | và do đó cặp ( ) .

hay các cặp mẫu của tập là giao của hai tập
và . Thật vậy, nếu cặp ( ) thì ( ) có thể có các dạng sau
( ) , ( ) , ( ) hoặc (
) với mọi k. Cặp ( ), ( ) thuộc tập
vì bằng phép dịch phải một bít các giá trị và theo thứ tự
sẽ là thu được giá trị k và ( ) và như vậy chúng sẽ vẫn sai khác nhau
. Hai cặp ( ) và ( ) thuộc vì bằng
phép dịch phải một bít thì giá trị của và theo thứ tự thu được
giá trị là k và , như vậy chúng vẫn sai khác nhau là m.

Ta phân hoạch thành hai tập con và , trong đó:


và với và
.

Cả hai tập và đều là những tập con của P. Tập chứa


các cặp ( ) có dạng ( ) hoặc ( ) . Tập
chứa các cặp ( ) có dạng ( ) hoặc ( ).
Những cặp mà trong đó thành phần chẵn lớn hơn sẽ nằm trong tập còn
những cặp mà trong đó thành phần lẻ lớn hơn sẽ nằm trong tập và tất cả
những cặp này đều sai khác nhau . Với các ảnh có tín hiệu chỉnh, xác
suất để một cặp mẫu ở trong tập có các thành phần chẵn lớn hơn hoặc
nhỏ hơn là như nhau. Điều đó có nghĩa là với số nguyên m bất kì,
ta có :

(| |) (| |) (3.4)
Để phân tích ảnh hưởng của việc giấu tin LSB trên các cặp mẫu ta xem
xét bốn trường hợp có thể của việc “lật” bít LSB theo mẫu, gọi mẫu
{ } với 1 biểu thị cho một (hoặc nhiều) mẫu trong một cặp có bị đảo
bít, 0 biểu thị cho một (hoặc nhiều) mẫu vẫn giữ nguyên (không bị đảo bít).

97
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Với mỗi m, , tập được phân hoạch thành ,


, . Rõ ràng là đóng đối với phép giấu nhưng các tập con thành
phần , , thì không. Lấy một cặp mẫu ( ) tùy ý của
thì ( ) có thể có dạng ( ) hoặc ( ). Bằng việc
chuyển đổi cặp mẫu ( ) qua mẫu , ta thu được mẫu ( )
( ) hoặc ( ) ( ). Tương tự như vậy, nếu
( ) được thay đổi thông qua mẫu 01 thì ( ) ( )
hoặc ( ) ( ). Rõ ràng và tạo thành một phân hoạch
của .

Như vậy, với có thể được phân hoạch thành bốn


tập con , , và được gọi là các tập con dấu vết (trace
submultiset) của . Hơn nữa là đóng nhưng bốn tập con của nó thì không
đóng đối với các thao tác giấu tin LSB. Điều này giống như một máy trạng thái
hữu hạn được mô tả trên hình 3.6. Trên hình 3.6 các trạng thái (các nút tròn)
chính là các tập con của . Các cung được gắn nhãn là mẫu chuyển đổi nối
từ trạng thái A sang trạng thái B thể hiện rằng bất kỳ cặp mẫu nào trong A sẽ trở
thành một cặp mẫu trong B nếu áp dụng mẫu chuyển đổi .

Hình 3.5 Xích hữu hạn trạng thái với các trạng thái là các tập con của Cm
(m > 0)

Tập là đóng đối với phép giấu tin LSB và có thể được phân hoạch
thành hai tập và . Hình 3.6 mô tả một máy trạng thái cho .

98
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.6 Máy trạng thái cho C0

Ý nghĩa của các xích hữu hạn trạng thái trong hình 3.5 và 3.6 là có thể
đo (một cách thống kê) số các tập con trước và sau khi giấu tin bằng cách sử
dụng các xác suất của các mẫu thay đổi trong mỗi tập. Hơn nữa, nếu việc giấu
tin LSB được làm một cách ngẫu nhiên trong ảnh thì các xác suất là các độ dài
của thông điệp ẩn.

Với mỗi mẫu chuyển đổi { } và với bất kì tập con ,


ta định nghĩa xác suất ( ) là xác suất các cặp mẫu của A bị thay đổi theo
mẫu . Đặt p là chiều dài thông điệp bị giấu trong các bít bị chia bởi tổng số các
mẫu trong các ảnh. Thế thì hệ số các mẫu đã thay đổi bằng giấu tin LSB là .
Giả sử rằng, các bít thông điệp của giấu tin mật LSB được phân bố ngẫu nhiên
trong ảnh, ta có:

( ) ( ⁄ )

( ) ( ) ⁄ ( ⁄ )

( ) ( ⁄ )

Đặt A và B là hai tập con của P sao cho . Ta nói rằng tập A là
không chệch đối với tập B nếu ( ) ( ) ứng với mỗi mẫu biến đổi
{ }. Khi ta nói rằng A là không chệch. Nếu tất cả bốn tập
con của là không chệch thì ta nói rằng là không chệch.

99
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Thuật toán SPA phát hiện thông điệp nhúng LSB:

Đầu vào :Ảnh I cần kiểm tra

Đầu ra: Xác suất giấu tin p

Thuật toán

Bước 1: Đọc vào ảnh I

Bước 2: Đọc giá trị các điểm ảnh vào một ma trận A.

Bước 3: Chia ma trận A thành dãy S gồm N mẫu liên tiếp nhau
. Mỗi mẫu là một giá trị điểm ảnh.

Bước 4: Xác định

{( )} với

Bước 5: b = độ dài xâu nhị phân biểu diễn mỗi mẫu.

Bước 6 : Với số nguyên n cố định,

Mỗi ( ) nếu | | thì {( )};

Bước 7: Với số nguyên m,

| |⁄
Mỗi ( ) nếu thì {( )};

Bước 8: Xác định các tập giá trị sau:

Với : ,

Bước 9: Đặt { }

Bước 10:

Nếu hoặc thì tập chứa các cặp mẫu của


tập bị thay đổi thông qua các mẫu 00 hoặc 10

100
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Nếu hoặc thì tập chứa các cặp mẫu của


tập bị thay đổi thông qua các mẫu 01 hoặc 11

Bước 11: Tính p

Nếu {| |} {| |} thì xác định p là nghiệm nhỏ hơn của các


phương trình sau

Nếu :

( | | | |) ( | | | | | | | |)
| | | |

Nếu

(| | | |) (| | | | | | | |)

| | | |

Phân tích kĩ thuật SPA

Sau khi đọc vào ảnh I và lấy dữ liệu trên ảnh I vào ma trận A, ta thống kê
các giá trị điểm ảnh có trên ảnh. Chia ma trận A thành N mẫu liên tiếp nhau (mỗi
mẫu là một giá trị điểm ảnh) và được biểu diễn bằng xâu nhị phân độ dài b. Từ
các mẫu đã có, ta xác định tập P là tập các cặp mẫu có thể có.

Với n là một số nguyên cố định ta xây dựng tập tất cả


các cặp trong P mà có khoảng cách giữa chúng bằng n. Gọi tập đó là .

Với mỗi số nguyên m, ta xây dựng tập là tập tất cả


| |⁄
các cặp ( ) mà .

Hiển nhiên, tập con (với ) của P dùng để mô tả sự


thay đổi được tạo ra từ việc giấu tin vào bít ít quan trọng nhất ở giữa hai giá trị
mẫu khác nhau. Còn tập con ( ) của P lại là một bất biến
dưới phép giấu tin LSB.

101
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tiếp theo ta phân hoạch tập thành hai tập con và


như sau:

với và

Trong đó, tập chứa các cặp ( ) có dạng ( ) hoặc


( ). Tập chứa các cặp ( ) có dạng ( )
hoặc ( ). Những cặp mà trong đó thành phần chẵn lớn hơn sẽ
nằm trong tập còn những cặp mà trong đó thành phần lẻ lớn hơn sẽ nằm
trong tập và tất cả những cặp này đều sai khác nhau . Với các ảnh
có tín hiệu chỉnh, xác suất để một cặp mẫu ở trong tập có các thành phần
chẵn lớn hơn hoặc nhỏ hơn là như nhau. Điều đó có nghĩa là với số nguyên m
bất kì, ta có:

(| |) (| |) (3.5)
Theo như phân tích trong mục 3.2.2 và các máy trạng thái mô tả trong
hình 3.6 và 3.7 ta có với tập được phân hoạch thành và , với
thìđược phân hoạch thành bốn tập con , ,
và . Tiếp theo ta sử dụng mẫu { } với 1 biểu thị cho một
(hoặc nhiều) mẫu trong một cặp có bị đảo bít, 0 biểu thị cho một (hoặc nhiều)
mẫu vẫn giữ nguyên (không bị đảo bít) để xem xét sự ảnh hưởng của việc lật bít
LSB trên các mẫu. Các trường hợp khác nhau của mẫu như sau : Nếu
hoặc thì ta gọi tập là tập chứa các cặp mẫu của tập
bị thay đổi thông qua các mẫu 00 hoặc 10. Nếu hoặc
thì ta gọi tập là tập chứa các cặp mẫu của tập
bị thay đổi thông qua các mẫu 01 hoặc 11. Gọi p là chiều dài thông điệp bị giấu
trong các bít bị chia bởi tổng số các mẫu trong các ảnh. Với ,
ta có phương trình sau:

| |( ) | | (| | | |) | | (3.6)

102
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

| |( ) | | (| | | |) | | (3.7)

Với ta có:

| |( ) | | (| | | |) | | (3.8)

Từ công thức (3.6) (3.7) (3.8) với điều kiện (| |) (| |),


. Ta thu được các phương trình bình phương để ước lượng
giá trị của p như sau:

(| | | |) (| | | | | | | |)
(3.9)
| | | |

( | | | |) ( | | | | | | | |)
| | | |
(3.10)

Phương trình (3.9) (3.10) là phương trình bậc hai theo p. Nghiệm nhỏ
hơn của phương trình (3.9) (hoặc (3.10)) là giá trị được ước lượng của p, với
điều kiện :

| | | | | | | |( | | | | | | | | (3.11)
Thật vậy, ta có:

| | | | | | | | | | (3.12)
| | | | | | | | | | (3.13)
Đặt U và V là hai tập các biến ngẫu nhiên rời rạc tương ứng với các giá
trị thứ nhất và thứ hai của các cặp mẫu trong P, ta có hàm khối lượng xác suất
có điều kiện ( ). Xem xét sự khác biệt giữa U và V ta có một biến ngẫu
nhiên mới là – . Gọi hàm khối lượng xác suất của Z là ( ). Hàm ( )
chiếu từ hàm khối lượng xác suất có điều kiện ( ) vào ( ). Nếu cặp mẫu
của P được lấy ra ngẫu nhiên thì rõ ràng ( ) bằng 0 từ đó ( ) ( ).

Như vậy, dựa trên giả thiết (3.4) và nếu có:

103
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

| | | | | | | | | | (3.14)
Kết hợp (3.12), (3.13) ta có (3.11)

Để chứng minh giá trị thực của p nhỏ hơn hoặc bằng hai nghiệm thực của
phương trình (3.9) thì p phải thỏa bất đẳng thức sau:

(| | | | | | | |)
(3.15)
| | | |
Chú ý, vế phải của bất đẳng thức trên biểu diễn chung cho hai nghiệm
của phương trình (3.10). Bất đẳng thức (3.15) là tương đương với bất đẳng thức
sau:

(| | | | | | | | | | | |)
(3.16)
| | | |
Bằng việc dùng công thức | | | | (| |
| |)( )và điều kiện | | | | thì (3.16) sẽ trở thành:

( )(| | || |)
(3.17)
( )(| | | | | | | |
Áp dụng giả thiết (3.4) thì bất phương trình trên được giản lược thành:

( )(| | | | (3.18)
Ước lượng độ chính xác của chiều dài thông điệp giấu theo SPA

Cho một tập P các cặp mẫu, các kĩ thuật phân tích ẩn LSB đã đưa ra là
thỏa mãn với giả thiết (3.4). Với p là độ dài thông điệp ẩn trong phương trình
(3.9) hoặc (3.10), gọi độ chính xác của chiều dài thông điệp ẩn đã ước lượng là
̂ thì nó phụ thuộc vào độ khác biệt .

| | | | (3.19)
Công thức (3.19) để tính toán ước lượng ̂ theo phương trình (3.9) hoặc
(3.10) với một giá trị m sao cho là nhỏ nhất có thể. Với ước lượng vững của
chiều dài thông điệp ẩn có thể thu được từ tổ hợp các tập trong giới hạn m mà
là nhỏ. Với , và với , máy
trạng thái hữu hạn của trong hình 3.6 có thể được tổ hợp và được khai triển

104
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

từ bằng việc thay thế các tập con , , , với lần lượt
các tập , , , . Ta nói rằng tập
là không chệch nếu bốn tập hợp , , ,
không chệch.

Với m giá trị khác nhau ta có điều kiện:

{ |} { } (3.20)
Điều kiện này không chặt như giả thiết (3.4) đối với từng cặp giá trị m
riêng biệt. Mặt khác, với m cố định thì |∑ |là nhỏ hơn| | một cách đáng
kể, điều này chính là hệ số quyết định của độ chính xác của việc phân tích tin ẩn.
Điều kiện (3.20) chỉ ra rằng với một cặp mẫu ( ) | |
, giá trị chẵn của u, v có xác suất lớn hơn (hoặc nhỏ hơn) giá trị lẻ của u, v.

Dựa trên cấu trúc của máy trạng thái hữu hạn, quan hệ thống kê trong
(3.20), các tập và là không chệch nếu phép giấu tin mật
LSB được thực hiện thông qua việc giấu ngẫu nhiên ta có thể suy ra các phương
trình bình phương để ước lượng p như sau:

(| | | |)

[| | | | ∑ (| | | |)] (3.21)

∑ (| | | |)

Tương tự, dựa trên (3.20), tập , và là không


chệch với , nếu việc giấu tin LSB là ngẫu nhiên ta cũng có:

105
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( | | | |)

[ | | | | ∑ (| | | |)] (3.22)

∑ (| | | |)

Giải cả hai phương trình bình phương mạnh với ẩn p, phụ thuộc vào giá
trị chỉ số i ban đầu, thì nghiệm nhỏ hơn là p được ước lượng.

Tiếp theo ta xác định một giới hạn về lỗi ước lượng của phương trình
(3.21) và (3.22). Giới hạn lỗi này là:

| | | | với (3.23)
Với ta có:


(3.24)
| | | |
Với ta có:


(3.25)
| | | |
Ta có thể giới hạn ước lượng lỗi như sau:

| |
̂( ) ( ) với (3.26)

Trong đó ̂ ( ) là giá trị của p đã ước lượng thu được từ việc giải
phương trình (3.21) khi và giải phương trình (3.22) khi với điều
kiện và việc giấu tin LSB được thực hiện một cách ngẫu nhiên.

Để giảm lỗi ước lượng, thì ta làm | | nhỏ đi. Ngược lại, ta tăng
| | | | và làm giảm ∑ . Nói chung ∑ giảm khi sự khác
biệt giữa i và j tăng. Tuy nhiên, khi cho một số i, khoảng cách lớn hơn, sự
khác biệt | | | | lớn hơn thì ước lượng vững của p tới hạn hơn. Bởi vì
| | là một hàm tăng đơn điệu trên i. Do đó, ta đặt i=0 và chọn giá trị j lớn
trong phương trình (3.22) để thu được ước lượng vững của p.
106
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Độ chính xác ước lượng cũng bị ảnh hưởng bởi cách chọn các cặp mẫu
trong tập P. Cho i và j, | | | | (trong đẳng thức (3.10)) là lớn hơn nếu
các cặp mẫu trong P được lấy ra từ những vị trí gần hơn của một sóng tín hiệu.
Do vậy, với một ước lượng vững hơn của p, các thành phần trong tập P nên là
các cặp hai mẫu liền kề nhau về mặt không gian. Trong phân tích ở trên ta thu
được bất đẳng thức (3.21).

Bằng thực nghiệm có thể thu được ước lượng chiều dài thông điệp chính
xác khi , và ngưỡng dự đoán là 0.018 và trong trường hợp đó sai số
trung bình là 0.023. Bảng kết quả dưới đây cũng nhận được thông qua thực
nghiệm [27]:

Tỉ lệ giấu
tin
0.1379 0.1103 0 0 0 0
0.1379 0.0828 0.0069 0.0069 0 0

Hầu hết các phương pháp tấn công đều tránh không giấu tin LSB ở
những vị trí mà các cặp mẫu liền kề nhau có giá trị sai khác ít. Chẳng hạn,
không giấu tin ở các cặp mẫu liền lề và giá trị của chúng sai khác nhau nhỏ hơn
3. Mặt khác ta có thể coi là chệch, vi phạm sự phát hiện chính xác. Chẳng
hạn một tấn công chống lại SPA đó là, các bít thông điệp chỉ được giấu vào các
vị trí mẫu thích hợp mà ở đó tất cả các cặp mẫu liền kề là với là một
ngưỡng cố định trước. Mặt khác bất kì cặp mẫu ( )| | sẽ thỏa
| | , cặp ( ) biểu diễn các giá trị của hai mẫu sau khi giấu
tin LSB trong đó. Rõ ràng, việc giấu tin LSB này có điều kiện trên với
và cả việc nhúng tin lẫn giải tin có thể dẫn đến cùng một và để quyết định
mẫu nào là có giấu tin.

3.2.3 Ẩn mã mù ảnh JPEG sử dụng hiệu chỉnh


Điểm khác nhau giữa cơ chế nhúng trong ảnh JPEG và miền không gian
cho thấy rằng cần phải đạt được bằng việc thiết kế các thuật toán ẩn mã ẩn riêng
biệt cho mỗi vùng không gian, do vậy sẽ khai thác các đặc tính cụ thể của mỗi

107
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

lớp thuật toán ẩn mã ảnh. Ở đây, chúng ta nghiên cứu ẩn mã mù trong miền
JPEG, trong khi mục 3.2.4 sẽ xem xét ẩn mã mù trong miền không gian.

Hầu như tất cả các phương pháp ẩn mã ảnh được thiết kế cho định dạng
JPEG bằng việc thực hiện các hệ số DCT lượng tử hóa. Vì vậy, các đặc tính có
nguồn gốc từ miền DCT sẽ nhạy cảm hơn để nhúng ẩn mã ảnh hơn là các đặc
tính được tính toán từ miền không gian. Hơn nữa, các đặc tính này có thể đưa ra
một giải thích rõ ràng về ảnh hưởng của các đặc tính riêng biệt trong việc phát
hiện cũng như phản hồi thông tin hữu ích tới người ẩn mã.

Các thuật toán ẩn mã mù sử dụng nhiều đặc tính ảnh, kích thước và độ
phức tạp theo thời gian. Các đặc tính thường dựa vào các thống kê thứ tự đầu
tiên của các hệ số DCT (biểu đồ) và các thống kê thứ 2 (số lượng phụ thuộc vào
các cặp hệ số). Tuy nhiên, có nhiều các đặc tính khác có cũng được đề xuất.

Một kĩ thuật phổ biến sử dụng các thuật toán ẩn mã mù là sử dụng hiệu
chỉnh, để cố gắng tính toán được vật phủ từ các vật nghi ngờ có nhúng tin. Nếu
có thể thực hiện một cách chính xác, thì một sự khác biệt lớn là để xác định một
vật có nhúng tin hay không. Và sự khác biệt giữa vật phủ và một vật có nhúng
tin cũng cho phép ước lượng số lượng các thay đổi do nhúng (chiều dài thông
điệp).

Ước lượng vật phủ từ vật có nhúng tin là hoàn toàn có thể đối với ảnh
JPEG bởi vì các hệ số DCT lượng tử hóa là bền vững với méo ảnh nhỏ do nhúng
ẩn mã ảnh. Hiệu chỉnh bắt đầu bằng việc giải nén ảnh có nhúng tin thành miền
không gian, sau đó cắt ảnh thành 4 cột và thực hiện nén lại lần nữa sử dụng ma
trận lượng tử như của ảnh có nhúng tin. Kết quả ảnh JPEG là một ước lượng của
ảnh phủ mà có thể sử dụng để hiệu chỉnh một số giá trị lượng tử của ảnh gốc,
như biểu đồ DCT.

Lưu ý rằng, có thể sử dụng các biến đổi hình học thay cho việc cắt bằng
4 cột. ví dụ, một vòng quay nhỏ, có thay đổi kích thước, hoặc làm méo ngẫu
nhiên. Ta nên nén lại các ảnh hơi bị làm méo hình học để đưa vào tính toán ảnh
phủ vì nếu cung cấp tác nhân chất lượng của việc nén JPEG không quá thấp (ví

108
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

dụ, thấp hơn khoảng 50), thì sau đó ảnh có nhúng tin cũng vẫn nhìn gần với ảnh
phủ và sử dụng phương pháp làm méo sử dụng PSNR.

Tuy nhiên, việc thay đổi không gian bằng 4 điểm ảnh và sau đó nén lại
đã phá vỡ cấu trúc của hệ số DCT lượng tử hóa, bởi vì lần nén thứ hai không
nhìn thấy lần nén đầu tiên. Kết quả là các thống kê hệ số DCT gần như tương
đồng với ảnh phủ gốc.

Để minh họa hiệu chỉnh hoạt động chính xác như thế nào, trong hình 3.7
đã chỉ ra biểu đồ của hệ số DCT (1,2) của ảnh phủ (+), ảnh có nhúng tin bằng
thuật toán F5 (*) và sử dụng hiệu chỉnh để ước lượng của lược đồ ảnh phủ (◦).
Rõ ràng, hiệu chỉnh đã cung cấp một ước lượng rất gần tới biểu đồ gốc. Việc
ước lượng này có thể sử dụng để xây dựng các đặc tính cho phân tích ẩn mã mù,
như miêu tả ở bên dưới, hoặc để thiết lập một tấn công mục tiêu trên F5 và trong
thực tế, trên hầu hết các thuật toán ẩn mã ảnh đều thay đổi các hệ số DCT lượng
tử hóa.

109
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.7 Biểu đồ của hệ số (1,2) của ảnh phủ (+), ảnh có ẩn tin theo thuật
toán F5 và ảnh được hiệu chỉnh

Bằng việc phân tích cơ chế nhúng, có thể xác định được mối quan hệ giữa
biểu đồ ảnh phủ và biểu đồ ảnh có nhúng tin cũng như một hàm của độ dài
thông điệp được nhúng. Biểu đồ của ảnh có nhúng tin và biểu đồ ảnh phủ được
ước lượng sẽ cho giới hạn cho độ dài thông điệp có thể ước lượng.

Ngoài biểu đồ của các hệ số DCT, việc hiệu chỉnh có thể tính toán được
các thuộc tính khác của vật phủ. Hầu như tất cả các kĩ thuật ẩn mã ảnh cho ảnh
JPEG đều gia tăng sự khác biệt giữa điểm ảnh tại vành biên của các khối .
Tổng cộng các khác biệt này là một tính toán thống kê thứ tự cao bởi vì nó sử
dụng các điểm ảnh kề nhau có tương quan với nhau trong một ảnh. Ta gọi số
lượng này là “khối”. Khối được tính toán từ vật có nhúng tin và từ vật phủ sẽ
được ước lượng bởi việc hiệu chỉnh hình thành một đặc tính hữu ích cho phân
tích ẩn mã mù. Nó cũng được sử dụng cho các tấn công có chủ đích.

110
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Nói chung, quá trình hiệu chỉnh có thể áp dụng cho tập hợp nhiều đặc
tính được trích xuất khác để làm giảm biến thể cho chúng qua ảnh và để làm
tăng tính nhạy cảm để nhúng. Hình 3.8 mô tả chi tiết điều này. Việc xây dựng
các đặc trưng được hiệu chỉnh như sau. Một hàm chức năng F được sử dụng để
áp dụng lên ảnh có nhúng tin với định dạng JPEG. Ví dụ, hàm chức năng đó
có thể là biểu đồ của tất cả các hệ số DCT. Ảnh được giải nén trong miền
không gian, và được cắt bởi 4 điểm ảnh ở mỗi hướng, và được nén lại lần nữa
với cùng số bảng lượng tử như để thu được ảnh . Hàm F cũng được áp dụng
vào ảnh được hiệu chỉnh, . Sau đó thu được vector đặc trưng f như là sự chênh
lệch (hoặc một quy chiếu cho vector hoặc các hàm ma trận).

‖ ( ) ( )‖ (3.27)
Khi xác định được tập các đặc trưng, phân tích ẩn mã mù sẽ được tiến
hành bằng việc lựa chọn các phân lớp. Có một số lượng lớn các phân lớp có thể
phù hợp cho việc này. Một trong số những phân lớp đơn giản nhất là biệt thức
tuyến tính Fisher (Fisher Linear Discriminant). Các phân lớp phi tuyến tính như
SVM, thường cho hiệu suất tốt nhất và trở thành phương pháp được lựa chọn
cho phân tích ẩn mã.

Hình 3.8 Ước lượng số liệu thống kê của ảnh phủ qua hiệu chỉnh

Trong hình 3.8, các đặc trưng được hiệu chỉnh được lấy từ các hàm
(vector) F. Sau khi lựa chọn phân lớp phù hợp, phân lớp sẽ biểu diễn với một
111
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

tập huấn luyện của các đặc trưng được trích xuất từ vật phủ và vật có nhúng tin
bằng thuật toán. Mục đích của việc này là để xác định các tham số bên trong để
có thể phân biệt rõ ràng giữa 2 tập đặc trưng. Hiệu suất của phân lớp này là kiểm
tra trên tập kiển tra của vật phủ và vật có nhúng tin xem đã từng được phân loại
trước đây chưa.

3.2.4 Phân tích ẩn mã mù trong miền không gian


Phân tích ẩn mã mù trong miền không gian cũng tương tự như trong
miền ảnh JPEG. Tuy nhiên, các đặc trưng được sử dụng là khác nhau và hiệu
chỉnh dựa vào phương pháp được mô tả ở trên là không khả thi.

Hầu hết các phương pháp ẩn mã ảnh trong miền không gian có thể được
hiểu là thêm nhiễu với các thuộc tính riêng. Thêm nhiễu trong miền không gian
tương ứng với bộ lọc thông thấp (low-pass) của biểu đồ ảnh có thể dễ dàng thấy
được như sau:

Gọi ] và ] lần lượt là biểu đồ của ảnh phủ xám và ảnh có nhúng
tin xám. Giả sử dấu hiệu tin nhúng được thêm vào ảnh là một dấu hiệu ngẫu
nhiên không phụ thuộc vào ảnh với hàm khối lượng xác suất ]∑ ] ,
biểu đồ của ảnh có nhúng tin là một tích chập (convolution):

Điều này là do nếu coi các điểm ảnh của dấu hiệu ảnh phủ là một trường
hợp biến ngẫu nhiên độc lập với nhiễu thêm vào, biểu đồ (hoặc hàm khối lượng
xác suất thực nghiệm) của tổng số dấu hiệu ảnh phủ và dấu hiệu nhiễu là một
biến ngẫu nhiên khác mà có hàm khối lượng xác suất là một tích chập của hàm
khối lượng xác suất của cả 2 dấu hiệu.

Do đặc trưng thông thấp của tích chập, sẽ mịn hơn và vì vậy có
nhiều năng lượng tập trung ở tần số thấp (xem hình 3.9). Vì vậy thuận tiện để
chuyển đổi thành biểu diễn Fourier của biểu đồ và viết dưới dạng số lượng biến
đổi Fourier (kí hiệu bằng chữ hoa tương ứng).

] ] ] (3.28)

112
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hàm được gọi là hàm đặc trưng biểu đồ (HCF) của ảnh có nhúng tin,
hình 3.10 sẽ minh họa điều này.

Hình 3.9 Lược đồ của ảnh phủ và ảnh có nhúng tin sau khi được nhúng với
phép nhúng 1

113
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 3.10 Hàm đặc trưng lược đồ của ảnh phủ và ảnh có nhúng tin sau khi
được nhúng với phép nhúng ±1

Chú ý rằng, ở hình 3.9 và 3.10, phép nhúng ±1 là một phương pháp sửa
đổi của LSB, trong đó khi nhúng thông điệp vào ảnh phủ, giá trị điểm ảnh được
thay đổi ngẫu nhiên đi 1 hoặc -1 (với xác suất là 50%).

Lí tưởng nhất là có thể ước lượng ảnh phủ và áp dụng một hiệu chỉnh
tương tự tới các đặc trưng có nguồn gốc từ miền không gian. Vì các thuật toán
ẩn mã miền không gian được mô hình hóa giống như việc thêm nhiễu tần số cao,
bộ lọc thông thấp hoặc thuật toán khử nhiễu được sử dụng cho mục đích này.
Quá trình nghiên cứu minh họa việc khử nhiễu và làm nổi bật mức độ nhạy cảm
của thuật toán phân tích ẩn mã tới các biến đổi trong thống kê ảnh.

114
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

CHƯƠNG 4 THỦY VÂN SỐ


4.1 Khái niệm thủy vân số
Thủy vân (watermark) là một khái niệm rất giống với ẩn mã ở chỗ cũng
giấu một dữ liệu vào trong dữ liệu khác nhưng với mục đích hoàn toàn khác.
Trong khi ẩn mã mong muốn che giấu sự tồn tại của dữ liệu được nhúng thì thủy
vân lại nhằm mục đích đảm bảo tính xác thực, an toàn và bảo vệ bản quyền đối
với dữ liệu chứa thông tin được nhúng. Thủy vân được xem xuất hiện lần đầu
tiên trong lĩnh vực sản xuất giấy truyền thống. Đó là các dấu hiệu hay hình mờ
được in chìm trong giấy nhằm xác định nhãn hiệu của những tờ giấy đó. Ngày
nay thủy vân đã được ứng dụng rất nhiều để xác thực dữ liệu. Thủy vân kĩ thuật
số là các biến đổi không thể nhận thấy hoặc hầu như không thể nhận thấy của
các dữ liệu kĩ thuật số. Những biến đổi đó chính là quá trình che giấu thông tin
kĩ thuật số trong một tín hiệu phủ. Quá trình biến đổi này cũng được gọi là
nhúng thông tin để tạo nên thủy vân. Thông thường dữ liệu kĩ thuật số để chứa
thông tin được nhúng là một đối tượng đa phương tiện kĩ thuật số như hình ảnh,
âm thanh, video, văn bản, …, trong đó hình ảnh kĩ thuật số thường được sử dụng
nhiều nhất khi tạo thủy vân. Thủy vân sau khi được nhúng phải đủ bền vững để
chống lại được các biến đổi làm suy biến và các kiểu tấn công chủ ý. Ngoài ra,
người ta cũng mong muốn hệ thống thủy vân nhúng được càng nhiều dữ liệu
càng tốt. Một hệ thống thủy vân bao gồm hai quá trình, đó là nhúng và phát
hiện/trích xuất thủy vân.

Định nghĩa: Thủy vân số là quá trình nhúng dữ liệu (hay được gọi là
thủy vân) vào một đối tượng đa phương tiện nhằm xác thực nguồn gốc hay chủ
sở hữu của đối tượng đó.

Cũng tương tự ẩn mã, đối tượng đa phương tiện mà thủy vân được nhúng
vào thường được gọi là vật chủ, vật phủ, vật gốc, dấu hiệu phủ, dấu hiệu chủ, …
sau này giáo trình sẽ thống nhất gọi là vật phủ. Vật phủ dùng trong thủy vân có
thể ở nhiều dạng khác nhau như hình ảnh, âm thanh, video, văn bản, … Thủy
vân số là một phần thông tin khác biệt được gán cho dữ liệu để bảo vệ dữ liệu.
Do vậy, thường cần phải có một yêu cầu quan trọng đó là không thể dễ dàng
trích xuất hoặc xóa bỏ thủy vân khỏi vật phủ hay chính là tính bền vững của

115
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

thủy vân. Hình 4.1 minh họa thủy vân được nhúng vào ảnh kĩ thuật số, nếu kẻ
tấn công sửa đổi ảnh trái phép thì thủy vân trong ảnh cũng sẽ bị thay đổi theo.

Hình 4.1 Ảnh có chứa thủy vân

4.2 Phân loại thủy vân số


Có rất nhiều cách phân loại các kĩ thuật thủy vân tùy vào các tiêu chí
khác nhau. Hình 4.2 mô tả một số cách phổ biến phân chia thủy vân:

Hình 4.2 Phân loại thủy vân

116
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Dựa theo miền thực hiện, người ta có thể chia thủy vân thành hai loại:

 Thủy vân trên miền không gian: là thủy vân mà thực hiện nhúng
trực tiếp vào các giá trị của vật phủ.
 Thủy vân trên miền tần số (miền biến đổi): là thủy vân mà thực
hiện nhúng vào các hệ số tần số tương ứng của các giá trị của vật
phủ, tức là trước khi nhúng cần biến đổi các giá trị của vật phủ
sang miền tần số thông qua các phép biến đổi chẳng hạn như
DCT, DWT, …
Dựa theo môi trường chứa (môi trường mà thủy vân được nhúng vào hay
còn gọi là vật phủ), thủy vân có thể được chia thành:

 Thủy vân trong ảnh


 Thủy vân trong âm thanh
 Thủy vân trong video
 Thủy vân trong văn bản
Dựa theo sự cảm nhận của con người, thủy vân được chia thành các loại
như sau:

 Thủy vân ẩn: là thủy vân sau khi được nhúng vào vật phủ chúng ta
không thể nhìn thấy cũng như không cảm nhận được sự thay đổi
của vật có chứa thủy vân so với vật phủ ban đầu, tuy nhiên chúng
ta vẫn có thể trích xuất nó bằng cách sử dụng thuật toán thích hợp.
 Thủy vân hiện: là loại thủy vân sau khi nhúng vào vật phủ chúng
ta hoàn toàn có thể nhìn thấy hoặc cảm nhận được.
Trong thủy vân ẩn, người ta lại chia thủy vân thành các loại dưới đây:

 Thủy vân bền vững: là thủy vân được nhúng theo cách dù thay
đổi trên vật phủ nhưng giác quan của con người không cảm nhận
được và nó có thể chịu được mọi loại tấn công, đồng thời chỉ có
thuật toán phù hợp mới có thể khôi phục được thủy vân này.

117
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 Thủy vân dễ vỡ: là thủy vân mà bất kì một thao tác thay đổi hay
sửa chữa nào cũng sẽ làm hỏng hoặc làm biến đổi thủy vân, tức là
nó không chịu được bất kì tác động hay tấn công nào.
 Thủy vân bán dễ vỡ: là loại thủy vân có thể chịu được một số
phép biến đổi hợp pháp hoặc một số loại tấn công nào đó chứ
không phải tất cả các phép biến đổi hay mọi loại tấn công.
4.3 Cấu trúc của hệ thống thủy vân số
Mỗi hệ thống thủy vân luôn bao gồm ít nhất hai quá trình tách biệt, đó là
nhúng thủy vân và phát hiện/trích xuất thủy vân. Trước khi mô tả chi tiết quá
trình nhúng và phát hiện/trích xuất thủy vân chúng ta đưa ra một số kí hiệu sau:

 I là vật phủ dùng để nhúng thủy vân vào.


 W là thủy vân ban đầu cần nhúng.
 là thủy vân trích xuất được.
 là vật phủ sau khi được nhúng thủy vân.
 K là khóa sử dụng trong quá trình nhúng và phát hiện/trích xuất
thủy vân (khóa K không nhất thiết phải có mà tùy theo kĩ thuật
thủy vân được lựa chọn, sử dụng thêm khóa K nhằm mục đích tăng
độ an toàn của hệ thống thủy vân).
 là vật có nhúng thủy vân nhưng đã bị tấn công trên đường
truyền, đây cũng chính là vật dùng để kiểm tra trong quá trình phát
hiện/trích xuất thủy vân.
 là hàm (thuật toán) nhúng thủy vân.
 là hàm (thuật toán) trích xuất thủy vân.
 D là hàm phát hiện thủy vân.
f(I) là hàm biến đổi vật phủ I sang miền tần số/sóng, giá trị của f là một
vector các hệ số tương ứng của vật phủ trên miền lựa chọn.

4.3.1 Quá trình nhúng thủy vân


Hình 4.3 mô tả lược đồ nhúng thủy vân (những chỗ nét đứt thể hiện
thành phần đó có thể có hoặc không trong quá trình thực hiện). Trước tiên, tùy
thuộc vào kĩ thuật thủy vân, vật phủ có thể được biến đổi sang miền tần số hay

118
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

sóng hoặc cũng có thể được thực hiện trực tiếp trên miền không gian. Nếu thực
hiện quá trình nhúng thủy vân trên miền tần số/sóng thì cần phải áp dụng phép
biến đổi ngược để thu được vật phủ có nhúng thủy vân . Trong trường hợp
thực hiện nhúng thủy vân trên miền không gian thì hàm nhúng có thể được thể
hiện dưới dạng toán học như sau:

( )

Nếu thực hiện quá trình nhúng thủy vân trên miền tần số/sóng thì lúc đó
hàm nhúng sẽ là:

( ( ) )

Sau quá trình nhúng thủy vân sẽ thu được vật phủ có chứa thủy vân
và sẽ được truyền trên mạng Internet hay một kênh liên lạc nào đó. Nếu trong
quá trình truyền kẻ tấn công bắt được và thay đổi thành thì bên nhận sẽ
nhận được thay vì .

Hình 4.3 Lược đồ nhúng thủy vân

4.3.2 Quá trình trích xuất thủy vân


Tương tự, tùy thuộc vào hệ thống thủy vân lựa chọn thực hiện trên miền
nào thì quá trình phát hiện/trích xuất có thể cần phải thêm bước biến đổi cho phù
hợp. Vật có thể chứa thủy vân cũng có thể không vì nó đã bị tấn công trên
đường truyền, nói chung thường đây là một vật đã bị thay đổi. Hàm trích xuất
hoặc sẽ khôi phục thủy vân từ hoặc sẽ kiểm tra xem có thủy vân W trong
hay không. Nếu quá trình nhúng thủy vân có sử dụng khóa K thì quá trình
phát hiện/trích xuất cũng phải áp dụng K. Phụ thuộc vào kĩ thuật thủy vân được
lựa chọn (thủy vân mù hay thủy vân không mù) mà vật phủ I có thể được sử
119
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

dụng trong quá trình phát hiện/trích xuất thủy vân. Hàm trích xuất đối với kĩ
thuật thủy vân mù (không sử dụng vật phủ I) có thể biểu diễn dưới dạng toán
học như sau:

( )

Đối với kĩ thuật thủy vân không mù (có sử dụng vật phủ I) thì hàm trích
xuất thủy vân sẽ là:

( )

Quá trình phát hiện mù sinh ra đầu ra là một giá trị nhị phân thể hiện sự
có mặt hay không của thủy vân W và có thể được biểu diễn như sau:

( ) {

Thủy vân có thể được trích xuất hoặc phát hiện và khi đó thường gọi là
lược đồ trích xuất hoặc phát hiện thủy vân. Tất nhiên, việc trích xuất thủy vân có
thể chứng minh được quyền sở hữu trong khi việc phát hiện chỉ mang tính chất
kiểm tra thủy vân. Hình 4.4 là lược đồ phát hiện/trích xuất thủy vân.

Hình 4.4 Lược đồ phát hiện/trích xuất thủy vân

120
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

4.4 Các tính chất của thủy vân số


Yêu cầu cơ bản của thủy vân số liên quan mật thiết với mục đích của các
ứng dụng, ứng dụng khác nhau thì sẽ có yêu cầu khác nhau [7]. Nói chung, các
tính chất chính của thủy vân số đó là bền vững, dung lượng nhúng, trong suốt
hay không cảm nhận được, an toàn và chi phí tính toán. Mặt khác, một tính chất
nào đó có thể lại đối ngược với tính chất khác. Chẳng hạn khi tăng dung lượng
nhúng thì sẽ ảnh hưởng tới tính trong suốt của thủy vân. Vì vậy, cần phải có sự
cân bằng giữa các yêu cầu và các tính chất của lược đồ thủy vân số tùy thuộc
vào các ứng dụng cụ thể.

Bền vững

Thủy vân bền vững phải không bị thay đổi trước các tác động xử lí cũng
như các tấn công đồng thời vẫn có thể phát hiện được sau khi xảy ra các tác
động hay tấn công. Tuy nhiên, yêu cầu này dường như là không thể và cũng
không nhất thiết đưa ra yêu cầu đối với mọi thủy vân phải chống lại được tất cả
các loại tấn công mà chỉ đối với một số loại thủy vân đặc biệt nào đó. Mặt khác,
tính chất này cũng mâu thuẫn trong trường hợp thủy vân dễ vỡ vì khi đó, thủy
vân có thể bị thay đổi hoặc bị mất đi khi có tấn công. Trong nhiều ứng dụng, khi
xử lí tín hiệu giữa việc nhúng và việc phát hiện mà không thể dự đoán trước
được thì thủy vân có thể cần phải bền vững đối với mỗi tác động làm méo.

Dung lượng nhúng

Dung lượng nhúng là số lượng thông tin có thể được giấu trong vật phủ.
Yêu cầu về dung lượng luôn luôn phải xem xét tới hai yêu cầu quan trọng khác
đó là tính trong suốt và tính bền vững. Để có được dung lượng lớn thường phải
mất đi hoặc tính bền vững hoặc tính trong suốt hoặc cả hai.

Trong suốt (Imperceptibility)

Thủy vân số phải không thể cảm nhận được bằng các giác quan thông
thường của con người mà chỉ có thể bị phát hiện thông qua việc xử lí đặc biệt.
Tuy nhiên, điều này lại không phù hợp với thủy vân hiện, do đó, tùy vào mục

121
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

đích của hệ thống thủy vân mà lựa chọn phương pháp phù hợp để đạt được yêu
cầu đặt ra.

An toàn

Thủy vân số là dấu hiệu để định danh một cách chính xác, chỉ những
người dùng có thẩm quyền mới có thể phát hiện, trích xuất và thậm chí sửa đổi
thủy vân, do đó người ta thường sử dụng thủy vân với mục đích bảo vệ bản
quyền.

Chi phí tính toán

Chi phí tính toán chính là độ phức tạp của thuật toán sử dụng trong mô
hình thủy vân. Đây là một vấn đề rất quan trọng đặc biệt trong các ứng dụng
giám sát truyền thông vì khi đó việc sản xuất đa phương tiện không được phép
chậm và quá trình phát hiện thủy vân phải thực hiện với thời gian thực. Thông
thường các ứng dụng làm việc trên môi trường hạn chế về tài nguyên thì sẽ ưu
tiên sự đơn giản trong tính toán. Chẳng hạn các ứng dụng trên các thiết bị di
động cần phải tìm ra được giải pháp cân bằng giữa rất nhiều yếu tố như nguồn
pin, băng thông, bộ nhớ, …

4.5 Một số kĩ thuật thủy vân số


4.5.1 Thủy vân trên miền không gian
Tạo thủy vân trên miền không gian là sự sửa đổi trực tiếp các giá trị
điểm ảnh trên miền không gian của ảnh [4]. Nói chung, các lược đồ thủy vân
trên miền không gian đơn giản và không cần ảnh phủ để trích xuất thủy vân. Tuy
nhiên, các phương pháp này lại có nhược điểm là không bền vững để chống lại
các phép xử lí ảnh, bởi vì thủy vân không được phân phối trên toàn bộ ảnh và do
đó các phép xử lí ảnh có thể dễ dàng phá hủy thủy vân.

4.5.1.1 Phương pháp thay thế trong miền không gian


Thủy vân thay thế trong miền không gian là thuật toán thủy vân đơn giản
nhất. Về cơ bản, các vị trí nhúng được xác định trước khi thực hiện nhúng thủy
vân. Do vậy, khi nhận được ảnh có thủy vân người nhận cũng đã biết chính xác
các vị trí có nhúng thủy vân, từ đó có thể tiến hành trích xuất.

122
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Trong quá trình nhúng thủy vân, trước tiên, thủy vân được chuyển sang
dạng bít, sau đó mỗi bít thủy vân sẽ được nhúng vào bít cụ thể của các vị trí đã
lựa chọn trong ảnh phủ. Hình 4.5 chỉ ra một ví dụ về phương pháp thủy vân thay
thế trong miền không gian, theo đó có 3 phép thay thế bít có trọng số thấp nhất
được thực hiện (chẳng hạn nhúng 3 bít 1, 0 và 1 vào các điểm ảnh tương ứng là
50, 50 và 48).

Hình 4.5 Quá trình nhúng thủy vân theo phương pháp thay thế trong miền
không gian
Trong quá trình trích xuất thủy vân, người nhận đã biết được các vị trí
điểm ảnh cụ thể có chứa thủy vân. Sau đó, mỗi giá trị điểm ảnh được chuyển
sang dạng nhị phân và người nhận thu được các bít thủy vân. Hình 4.6 mô tả ví
dụ về quá trình trích xuất thủy vân của phương pháp thủy vân thay thế trong
miền không gian.

123
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.6 Quá trình trích xuất thủy vân theo phương pháp thay thế trong
miền không gian
Nói chung, dung lượng thủy vân đối với phương pháp thay thế trong
miền không gian thường lớn hơn các cách tiếp cận khác. Dung lượng thủy vân
tối đa có thể lớn gấp 8 lần ảnh phủ khi mà chúng ta nhúng vào tất cả các bít của
mỗi điểm ảnh. Tuy nhiên, khi thay đổi toàn bộ các bít của mọi điểm ảnh bởi các
bít thủy vân thì chất lượng ảnh thường giảm nghiêm trọng. Hơn nữa, quá trình
tạo thủy vân cũng yêu cầu phải trong suốt hay không cảm nhận được nên dung
lượng thủy vân tối đa chỉ nên gấp 3 lần ảnh phủ. Nếu nhúng thủy vân vào 3 bít
có trọng số thấp nhất thì bằng các giác quan của con người sẽ không thể phân
biệt được ảnh gốc và ảnh có nhúng thủy vân. Hình 4.7 chỉ ra một ví dụ về việc
nhúng thủy vân vào các bít khác nhau.

124
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.7 Ví dụ về việc nhúng thủy vân vào các bít khác nhau

Rõ ràng, bằng mắt thường có thể nhận ra ảnh có nhúng thủy vân nếu
thủy vân được nhúng vào các bít thứ 5 và thứ 7. Tuy nhiên, nếu thủy vân được
nhúng vào bít thứ 3 thì rất khó để phân biệt được ảnh gốc và ảnh sau khi đã
nhúng thủy vân. Phương pháp thủy vân thay thế dễ dàng cài đặt nhưng không
bền vững đối với kiểu tấn công nén mất dữ liệu hay kiểu tấn công cắt dán ảnh
bởi thủy vân bị biến dạng.

Có rất nhiều cách thay thế trong miền không gian của ảnh phủ để tạo
thủy vân nhưng phương pháp thay thế các LSB của một số điểm ảnh được xem
là đơn giản nhất. Mặc dù vậy, phương pháp này lại có một nhược điểm lớn khi
không vượt qua được các tấn công thêm nhiễu hoặc nén mất dữ liệu.

Thuật toán thủy vân dựa trên phương pháp thay thế LSB trong
miền không gian

Trước tiên chúng ta đưa ra một số giả thiết sau:

 H là ảnh phủ mức xám có kích thước .


 W là ảnh thủy vân nhị phân kích thước .
 L là số bít được sử dụng trong mức xám của các điểm ảnh.

125
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 là phép toán thay thế các bít của thủy vân vào các LSB của ảnh
phủ.
Thuật toán
1. Lấy các điểm ảnh từ ảnh phủ
{ ( ) } ( ) { }
2. Lấy các điểm ảnh từ thủy vân
{ ( ) }
3. Thay thế LSB của các điểm ảnh trong ảnh phủ bởi các bít của thủy
vân
{ ( ) ( ) ( ) }

( ) { }

4.5.1.2 Phương pháp cộng trong miền không gian


Khác với phương pháp thay thế, phương pháp thủy vân cộng không xét
những bít cụ thể của một điểm ảnh. Thay vào đó, phương pháp này thực hiện
cộng một lượng giá trị thủy vân vào một điểm ảnh trong quá trình nhúng. Chúng
ta có thể nhúng W vào H để thành ảnh có thủy vân H* như sau:

( ) ( ) ( ) ( ) (4.1)
trong đó { ( )} là hệ số tỉ lệ. Hình 4.8 chỉ ra ví dụ về phương pháp
cộng trong miền không gian, trong đó nếu thủy vân được nhúng là 1 thì
( ) , ngược lại ( ) . Do đó, với thủy vân tương ứng là 1, 0 và 1
thì sau khi nhúng thủy vân, các giá trị gốc được thay đổi từ 50, 50 và 48 thành
150, 50 và 148.

126
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.8 Quá trình nhúng thủy vân của phương pháp cộng trong miền
không gian
Cách thức nhúng thủy vân này có nhược điểm đó là nếu ( ) lớn thì
ảnh có chứa thủy vân sẽ bị méo như trong hình 4.7 đã chỉ ra, và như vậy rất khó
để có thể đạt được độ trong suốt cao. Để khắc phục điểm này thì không thể
nhúng một giá trị lớn vào một điểm ảnh đơn mà phải nhúng vào một khối điểm
ảnh. Trước tiên, chúng ta chọn một khối ảnh để nhúng thủy vân. Thay vì nhúng
vào một điểm ảnh như cách trên thì chúng ta nhúng giá trị thủy vân vào toàn bộ
khối ảnh vừa chọn. Giá trị thủy vân trước khi được nhúng sẽ chia cho kích cỡ
khối ảnh để giảm giá trị. Hình 4.9 là một ví dụ minh họa về cách thức nhúng dựa
trên khối của phương pháp cộng. Khối được chọn ở đây có kích thước là
và giả sử giá trị thủy vân là 99. Để nhúng giá trị này, trước hết ta chia cho 9 rồi
thực hiện cộng vào khối ảnh đã chọn.

127
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.9 Ví dụ về phương pháp cộng trên miền không gian dựa trên khối
Đối với phương pháp cộng trong miền không gian, khi trích xuất thủy
vân bên nhận phải sử dụng ảnh tham chiếu (hay ảnh gốc) như chúng ta thấy ở
hình 4.10. Lí do là vì họ không biết được vị trí đã nhúng nên rất khó có thể xác
định được thủy vân.

Hình 4.10 Phương pháp cộng trong miền không gian cần phải có ảnh tham
chiếu khi trích xuất thủy vân

128
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

4.5.2 Thủy vân trên miền tần số


Đối với thủy vân trên miền tần số chúng ta có thể chèn một thủy vân vào
các hệ số tần số của các ảnh đã được biến đổi thông qua các phép biến đổi
Fourier rời rạc (Discrete Fourier transform – DFT), cosine rời rạc (Discrete
Cosine transform – DCT) hay sóng rời rạc (Discrete wavelet transform – DWT)
[4]. Vì các biến đổi tần số thường không có sự tương quan mối quan hệ không
gian của các điểm ảnh mà phần lớn năng lượng (energy) tập trung vào các thành
phần có tần số thấp. Nếu chúng ta nhúng thủy vân vào các tần số thấp hoặc tần
số trung bình thì những biến đổi này sẽ được phân phối trên toàn bộ ảnh. Và khi
thực hiện các thao tác xử lí ảnh trên ảnh có chứa thủy vân thì những biến đổi đó
sẽ ít bị tác động hơn. Do vậy, so với phương pháp thủy vân trên miền không
gian thì phương pháp thủy vân trên miền tần số tương đối bền vững hơn.

4.5.2.1 Phương pháp thay thế trong miền tần số


Phương pháp thay thế trong miền tần số về cơ bản giống với trong miền
không gian ngoại trừ việc thủy vân được nhúng vào các hệ số tần số của ảnh đã
được biến đổi. Thủy vân có thể được áp dụng trong miền tần số bằng cách trước
tiên sẽ sử dụng một phép biến đổi. Tương tự như thủy vân trên miền không gian,
các giá trị tần số đặc biệt của ảnh phủ sẽ được sửa đổi để chèn thủy vân vào đó.
Vì các thành phần tần số cao thường bị mất khi nén hoặc thay đổi kích thước
ảnh nên thủy vân được nhúng vào các thành phần có tần số thấp hơn hoặc vào
các thành phần tần số chứa thông tin quan trọng của ảnh. Vì các thủy vân mà áp
dụng phương pháp nhúng trong miền tần số sẽ được phân tán trên toàn bộ không
gian ảnh sau khi áp dụng phép biến đổi ngược nên phương pháp này không dễ bị
tấn công đối với kiểu cắt xén ảnh như cách tiếp cận trên miền không gian. Nói
chung, chúng ta có thể chèn thủy vân vào các hệ số của ảnh sau khi đã biến đổi
và điều quan trọng là lựa chọn được các vị trí tốt nhất để nhúng thủy vân mà vẫn
đảm bảo được chất lượng ảnh.

129
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.11 Kĩ thuật nhúng thủy vân trong miền tần số


Cho và tương ứng là các ảnh được chia nhỏ ra từ ảnh phủ H cỡ
và thủy vân W cỡ . là ảnh sau khi biến đổi bởi phép
DCT và là ảnh sau khi nhúng vào . Phương pháp thay thế
trong miền tần số thực hiện như sau:

1. Chia ảnh phủ thành các khối ảnh có kích thước


{ ( ) }
{ ( ) } đó ( )
{ } à à á
2. Chia ảnh thủy vân thành các khối ảnh có kích thước
{ ( ) }
{ ( ) } đó ( )
{ } à à
3. Sử dụng công thức DCT để chuyển thành
4. Chèn vào các hệ số của
{ ( ) ( ) ( ) }
5. Áp dụng phép biến đổi DCT ngược để chuyển ảnh có chứa thủy
vân về dạng ảnh thông thường.
Trong thuật toán trên, tiêu chí nhúng ảnh thủy vân vào miền tần số của
ảnh phủ là tổng số các khối trong ảnh phủ phải lớn hơn tổng số các khối
2 trong ảnh thủy vân.

130
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.12 là ví dụ về việc nhúng một thủy vân 4 bít vào miền tần số của
ảnh. Hình (a) là một ảnh gốc mức xám có kích thước và hình (b) là ảnh đã
được biến đổi bởi DCT. Hình (c) là thủy vân nhị vân, trong đó 0 và 1 là các giá
trị được nhúng và dấu gạch nối (-) được dùng để kí hiệu không thay đổi ở vị trí
đó. Hình (d) là kết quả sau khi nhúng thủy vân ở hình (c) vào ảnh đã được biến
đổi (b) bằng cách dùng phép thay thế LSB. Hình 4.13 chỉ ra chi tiết của cách
thay thế LSB.

131
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.12 Ví dụ về việc nhúng thủy vân 4 bít vào miền tần số của ảnh

132
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.13 Cách nhúng thủy vân vào các hệ số của ảnh biến đổi trong hình
4.12
4.5.2.2 Phương pháp nhân trong miền tần số
Phương pháp nhân trong miền tần số thực hiện chèn thủy vân vào một
vùng đã xác định trước của các tần số trong ảnh đã biến đổi. Thông thường, thủy
vân sẽ được nhúng vào vùng quan trọng đối với việc nhận thức về sự thay đổi
(hay chính là thành phần tần số quan trọng) của ảnh để có thể chống lại được các
tấn công. Thủy vân được thu nhỏ theo độ lớn của thành phần tần số đặc biệt.
Thủy vân chứa một chuỗi phân bố Gauss ngẫu nhiên. Giả sử H là các hệ số DCT
của ảnh gốc và W là vector ngẫu nhiên thì { ( )} và { ( )} biểu thị các điểm
ảnh tương ứng của chúng. Phép nhúng W vào H để thu được ảnh có thủy vân
H*có thể sử dụng công thức sau:

( ) ( )( () ( )) (4.2)
Chú ý rằng, { ( )} lớn thì ảnh có chứa thủy vân sẽ bị méo nhiều hơn và
thông thường thì giá trị này sẽ được đặt là 0.1 để cân bằng được tính trong suốt
và tính bền vững. Một công thức nhúng khác sử dụng logarit của các hệ số của
ảnh ban đầu đó là:
() ()
( ) ( ) (4.3)
Ví dụ, thủy vân là một chuỗi Gauss của 1000 số thực giả ngẫu nhiên.
Chúng ta chọn 1000 hệ số lớn nhất trong miền DCT và nhúng thủy vân vào ảnh
Lena để thu được ảnh có thủy vân như trong hình 4.14. Công thức sử dụng để
trích xuất thủy vân chính là nghịch đảo của công thức nhúng. Giả sử quá trình
nhúng thủy vân sử dụng công thức 4.2 thì công thức trích xuất thủy vân sẽ là:

133
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

( ) ( )
() (4.4)
() ( )
Để so sánh chuỗi thủy vân trích xuất được với thủy vân gốc w, chúng
ta có thể sử dụng công thức đo độ tương tự sau:

( ) (4.5)
| |

Hình 4.14 Ảnh có thủy vân


Tích được phân bố theo sự phân bố của một tổ hợp tuyến tính các
biến độc lập và tuân theo phân bố chuẩn dưới đây:

( ) (4.6)
Do đó, ( ) tuân theo phân bố chuẩn ( ). Sau đó chúng ta có
thể áp dụng các kiểm định ý nghĩa chuẩn đối với phân bố thường. Hình 4.15 chỉ
ra các kết quả của bộ phát hiện thủy vân đối với 500 thủy vân được sinh ngẫu
nhiên, trong đó chỉ có một kết quả phù hợp là thủy vân. Kết quả dương là do các
thủy vân đúng mạnh hơn nhiều so với các thủy vân sai. Nếu được tạo ra một
cách độc lập từ w thì kết quả ( ) gần như không thể xảy ra. Điều
này cho thấy kĩ thuật nhúng có tỉ lệ dương tính-sai và âm tính-sai là thấp. Bằng
cách dùng công thức (4.5) đối với hình 4.14, chúng ta thu được độ đo tương tự
là 29,8520.

134
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.15 Kết quả đối với 500 thủy vân được sinh ngẫu nhiên, chỉ có một
thủy vân trong đó phù hợp với thủy vân gốc
4.5.3 Kết hợp thủy vân trong miền không gian và tần số
Thủy vân trong miền không gian chỉ đơn giản là chèn thủy vân bằng
cách thay đổi các mức xám của một số điểm ảnh trong ảnh phủ, tuy nhiên
phương pháp này không bền vững đối với các tấn công [4]. Đối với thủy vân
trong miền tần số thì chúng ta lại chèn thủy vân vào các hệ số của ảnh đã biến
đổi thông qua các phép biến đổi DCT, DFT hay DWT. Nhìn chung, phương
pháp thủy vân trong miền tần số bền vững đối với các tấn công nhưng lại không
nhúng được nhiều thông tin bởi chất lượng ảnh sẽ bị giảm đáng kể sau khi thực
hiện chèn thủy vân. Để giải quyết được nhược điểm của hai phương pháp trên,
người ta đã thực hiện kết hợp thủy vân trong cả miền với nhau. Ý tưởng là tách
ảnh thủy vân ra thành hai phần tương ứng với việc chèn trong miền không gian
và tần số dựa trên sự ưu tiên của người dùng và mức độ quan trọng của dữ liệu.

Giả sử H là ảnh phủ mức xám có kích thước và W là ảnh thủy vân
ở dạng nhị phân có kích thước M . Chúng ta sử dụng một số kí hiệu sau:

 và là hai thủy vân được tách ra từ W.


 là ảnh kết hợp từ H và trong miền không gian.
 là ảnh trong đó được biến đổi sang miền tần số theo phép
biến đổi DCT.
 là ảnh nhận được khi kết hợp và trong miền tần số.
135
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 là phép toán thay thếcác bít của thủy vân vào các LSB của ảnh
phủ.
Thuật toán thủy vân kết hợp hai miền không gian và tần số như sau và
được chỉ ra theo sơ đồ luồng trong hình 4.16.

1. Tách thủy vân thành hai phần:


{ ( ) } đó ( ) { }
{ ( ) } đó ( ) { }
{ ( ) } đó ( ) { }

2. Chèn vào miền không gian của H để thu được


{ ( ) ( ) ( ) } đó
( ) à ( ) { } à à đã ù
á á đ
3. Biến đổi thành theo phép biến đổi DCT
4. Chèn vào các hệ số của thành
{ ( ) ( ) ( ) } đó
( ) { }
5. Biến đổi ảnh có nhúng thủy vân ở dạng DCT về dạng bình thường
bằng phép biến đổi DCT ngược
Hình 4.16 mô tả sơ đồ luồng của thuật toán kết hợp thủy vân trong miền
không gian và tần số.

Hình 4.16 Sơ đồ luồng của phương pháp kết hợp thủy vân trong miền
không gian và tần số

136
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Cách phân tách ảnh thủy vân thành hai phần để từ đó chèn vào miền
không gian và miền tần số phụ thuộc vào yêu cầu của người dùng và phụ thuộc
vào ứng dụng. Về mặt nguyên tắc, thông tin quan trọng nhất xuất hiện ở phần
trung tâm của ảnh. Do đó, cách tách đơn giản là lựa chọn cửa sổ trung tâm trong
ảnh thủy vân và chèn phần này vào miền tần số. Theo sự ưu tiên của người dùng
thì chúng ta có thể cắt dữ liệu bí mật nhất để chèn vào miền tần số.

4.5.4 Thủy vân dễ vỡ


Vì việc sử dụng máy tính để xử lí ảnh ngày càng trở nên phổ biến nên có
rất nhiều công cụ phần mềm hỗ trợ [4]. Do đó, một vấn đề quan trọng nảy sinh
là người nhận cần phải đánh giá được liệu ảnh nhận được có bị kẻ tấn công sửa
đổi trong quá trình truyền tin hay không. Thủy vân dễ vỡ sẽ giải quyết được vấn
đề này vì sau khi được nhúng vào ảnh phủ nó dễ dàng bị thay đổi nếu có bất cứ
tác động nào lên ảnh. Khi đó, người nhận chỉ cần đánh giá thủy vân được giấu
trong ảnh sẽ biết được ảnh có bị biến đổi hay không. Chính vì lí do đó thủy vân
dễ vỡ được dùng phát hiện bất kì sự sửa đổi trái phép trong quá trình liên lạc.

Thủy vân dễ vỡ dựa trên khối

Wong [4] đã giới thiệu thuật toán thủy vân dễ vỡ dựa trên khối nhằm
phát hiện ra những thay đổi của ảnh như các giá trị điểm ảnh, kích cỡ ảnh. Thuật
toán của Wong có sử dụng thuật mã hóa khóa công khai RSA và MD5 đối với
hàm băm. Hình 4.17 mô tả sơ đồ thực hiện của thuật toán chèn thủy vân mà
Wong đưa ra.

137
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.17 Thuật toán chèn thủy vân của Wong


Thuật toán chèn thủy vân

1. Chia ảnh gốc X thành các ảnh con


2. Chia thủy vân W thành các thủy vân con
3. Với mỗi ảnh con , đặt LSB thành bít 0 để nhận được
4. Với mỗi , dùng hàm băm (ví dụ MD5 hoặc SHA) để nhận được
mã băm
5. là kết quả nhận được khi thực hiện XOR với
6. Mã hóa bằng thuật toán RSA với khóa riêng để nhận được

7. Nhúng vào LSB của để thu được ảnh con có thủy vân
Sơ đồ thực hiện trích xuất thủy vân được mô tả trong hình 4.18 dưới đây:

Hình 4.18 Thuật toán trích xuất thủy vân


Thuật toán trích xuất thủy vân

1. Chia ảnh Z nhận được thành các ảnh con


2. Đặt LSB của thành bít 0 kết quả thu được là
3. Trích xuất LSB của nhận được
138
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

4. Giải mã bằng cách dùng RSA với khóa công khai K để thu được

5. Với mỗi sử dụng hàm băm để nhận được mã băm tương ứng
6. XOR với để trích xuất thủy vân
Thuật toán thủy vân dễ vỡ dựa trên khối của Wong có điểm yếu đó là
các khối ảnh độc lập với nhau. Do đó kẻ tấn công có thể lợi dụng nhược điểm
này để thực hiện tấn công giả mạo. Kiểu tấn công này thực hiện sắp xếp lại các
khối của ảnh để tạo ra một ảnh mới nhưng vẫn không hề tác động tới thủy vân
dễ vỡ đã được nhúng. Vì vậy, bằng cách này, thủy vân đã nhúng trong ảnh
không bị thay đổi.

4.5.5 Thủy vân bền vững


Công nghệ máy tính ngày nay cho phép chúng ta dễ dàng nhân bản và
phân phối dữ liệu đa phương tiện số qua mạng Internet [4]. Tuy nhiên, lợi ích
này đồng thời cũng mang lại nhiều rủi ro đối với tính riêng tư của dữ liệu. Các kĩ
thuật thủy vân bền vững có khả năng đảm bảo an toàn cho dữ liệu như một biện
pháp bảo vệ bản quyền. Với phương pháp thủy vân này, dữ liệu sau khi nhúng
vào vật phủ sẽ vẫn tồn tại dù có bị tấn công, chẳng hạn như nén JPEG, nhiễu
Gaussian và lọc thông thấp.

Rõ ràng khi thực hiện các thao tác xử lí ảnh thì dữ liệu được nhúng trong
ảnh cũng sẽ bị thay đổi. Vì vậy để đạt được tính bền vững thì thường có hai cách
tiếp cận chủ yếu, đó là khai thác thông tin dư thừa hoặc dựa trên trải phổ. Với
cách thứ nhất, lược đồ thủy vân sẽ thực hiện nhúng nhiều bản sao của cùng một
thủy vân vào trong ảnh gốc. Trước tiên, ảnh gốc được chia ảnh thành các khối
phân biệt sao cho không chồng lên nhau, sau đó xử lí riêng từng khối. Phương
pháp này có thể chống lại được kiểu tấn công cắt xén. Cách thứ hai, dữ liệu
được nhúng trải khắp ảnh nên hầu như bền vững trước các thao tác xử lí ảnh
thông thường bởi vì thông tin thủy vân trải qua nhiều tần số. Ảnh gốc được
chuyển sang miền tần số, sau đó thủy vân sẽ được nhúng vào các vị trí mà hệ số
có ý nghĩa hay chính là những hệ số có giá trị tuyệt đối lớn. Tuy nhiên, nhược
điểm của hầu hết các thuật toán thủy vân bền vững là dung lượng nhúng không
cao. Chẳng hạn, với phương pháp nhúng thủy vân dư thừa, do phải nhúng nhiều

139
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

bản sao của thủy vân vào trong ảnh nên kích thước của từng thủy vân riêng lẻ
phải bị hạn chế. Còn với cách nhúng vào các hệ số ý nghĩa thì rõ ràng khó có thể
đạt được yêu cầu về dung lượng nhúng bởi vì số lượng các hệ số này không
nhiều. Chính vì vậy, khi xây dựng các thuật toán thủy vân bền vững người ta
thường quan tâm tới vấn đề cải thiện dung lượng nhúng.

4.6 Một số phương pháp tấn công thủy vân số


Có rất nhiều các phương pháp thủy vân số đã được phát triển trong
những năm gần đây. Tùy từng hệ thống mà thủy vân có thể là bền vững, dễ vỡ,
bí mật hay công khai,... Một thủy vân bền vững nhằm vượt qua những cuộc tấn
công từ xử lí hình ảnh thông thường hay những tấn công cố ý loại bỏ hoặc thay
đổi nó [3-5]. Thủy vân dễ vỡ nhằm mục đích cảm nhận được liệu hình ảnh thủy
vân đã bị thay đổi hay không, cho dù chỉ thay đổi một chút. Thủy vân bí mật
được sử dụng khi các hình ảnh chưa thủy vân ban đầu có sẵn để so sánh. Trong
khi đó, thủy vân công khai được thiết lập trong một môi trường mà trong đó
hình ảnh chứa thủy vân ban đầu không có sẵn cho việc phát hiện thủy vân.

Những kẻ tấn công nhằm vào ảnh nhúng có thể được phân loại thành vô
ý hay cố ý. Một hành động tấn công có thể vô hiệu hóa mục đích thủy vân của
người dùng theo cách mà thông điệp được nhúng không thể vận hành tốt. Những
kẻ tấn công không chủ ý có thể không nhận thức được sự ảnh hưởng đến thủy
vân gốc. Ví dụ, một người có thể làm giảm kích thước của hình ảnh thông qua
nén JPEG hoặc có thể chọn một phần hình ảnh. Kẻ tấn công có chủ ý vô hiệu
hóa một cách ác ý chức năng của thủy vân với một lí do cụ thể. Ví dụ, một
người có thể thay đổi hoặc phá hủy thông điệp ẩn cho một mục đích bất hợp
pháp như giả mạo hình ảnh.

Để xác định những điểm yếu trong kĩ thuật thủy vân, đề xuất cải tiến, và
nghiên cứu ảnh hưởng của kĩ thuật thủy vân hiện nay, chúng ta cần phải hiểu
được các loại tấn công vào các ảnh nhúng. Phần này sẽ đưa ra một số loại tấn
công thủy vân. Vì có rất nhiều loại tấn công khác nhau ứng với nhiều mục đích
nên không phải tất cả mọi tấn công sẽ được đề cập ở đây mà chỉ trình bày một số
tấn công phổ biến. Chúng ta có thể phân loại các lược đồ tấn công thủy vân
thành bốn lớp:
140
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

 Tấn công xử lí hình ảnh


 Tấn công chuyển đổi hình học
 Tấn công mật mã
 Tấn công giao thức

4.6.1 Tấn công xử lí hình ảnh


Kiểu tấn công này nhằm mục đích loại bỏ hoàn toàn thông tin thủy vân
ra khỏi dữ liệu có chứa thủy vân mà không phá hủy tính an toàn của thuật toán
nhúng thủy vân, ví dụ như không biết khóa được sử dụng để nhúng thủy vân.
Loại tấn công này sẽ làm tốn rất nhiều chi phí tính toán và thậm chí không thể
khôi phục lại các thông tin thủy vân từ các dữ liệu bị tấn công. Loại tấn công
này bao gồm bao gồm lọc, tái điều chế, biến dạng mã hóa JPEG và nén JPEG
2000. Không phải tất cả các phương pháp tấn công này luôn luôn tiến gần tới
mục tiêu loại bỏ hoàn toàn thủy vân, nhưng chúng vẫn có thể gây hại đáng kể
đến thông tin thủy vân.

Tấn công bằng lọc

Lọc biểu thị hoạt động xử lí hình ảnh trong miền tần số. Đầu tiên chúng
ta tính toán biến đổi Fourier của hình ảnh, nhân kết quả của một hàm truyền bộ
lọc, và sau đó thực hiện biến đổi Fourier ngược. Ý tưởng của phương pháp này
là tăng cường độ của các thành phần tần số cao tương đối so với các thành phần
tần số thấp. Các bộ lọc thông cao trong miền tần số tương đương với hình dạng
xung trong miền không gian. Vì vậy, các bộ lọc làm sắc nét trong miền không
gian chứa các giá trị dương gần trung tâm và các giá trị âm xung quanh ranh giới
ngoài. Một bộ lọc sắc nét điển hình là:

Hình 4.19 là ví dụ về tấn công bộ lọc sắc nét , hình a là ảnh có chứa
thủy vân còn hình b là sau khi tấn công bộ lọc sắc nét .

141
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.19 Ví dụ tấn công bộ lọc sắc nét

Ý tưởng của việc làm mờ là để giảm độ lớn của các thành phần tần số
cao. Các bộ lọc thông thấp trong miền tần số tương đương với hình dạng núi
trong miền không gian. Vì vậy, các bộ lọc làm mịn trong miền không gian nên
có tất cả các hệ số là dương, với các giá trị lớn nhất tại trung tâm. Các bộ lọc
thông thấp đơn giản sẽ là một mặt nạ với tất cả các hệ số có giá trị là 1. Một bộ
lọc Gaussian mẫu là:

Một bộ lọc Gaussian mẫu là:

142
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.20 Ví dụ về tấn công bộ lọc Gaussian

Hình 4.20 là ví dụ về tấn công bộ lọc Gaussian , trong đó hình (a)


là ảnh có chứa thủy vân còn hình (b) là ảnh sau khi tấn công lọc Gaussian .

Trong việc nâng cao chất lượng hình ảnh, một bộ lọc trung vị thường
được sử dụng để giảm nhiễu hơn là làm mờ. Phương pháp này khá đơn giản:
tính giá trị trung bình của các giá trị màu xám xung quanh vùng lân cận của
điểm ảnh và gán nó vào điểm ảnh. Hình 4.21 là ví dụ của việc sử dụng một bộ
lọc trung vị .

Hình 4.21 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công lọc trung vị

Tấn công bằng tái điều chế

Tấn công tái điều chế lần đầu tiên được trình bày bởi Langelaar và cộng
sự. Trong sơ đồ này các thủy vân được dự đoán thông qua việc trừ đi phiên bản
lọc trung vị của hình ảnh thủy vân. Các thủy vân dự đoán đó được bổ sung lọc

143
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

thông cao, cắt bớt, và sau đó bị trừ ra khỏi hình ảnh thủy vân với hệ số khuếch
đại không đổi của 2. Tái điều chế cơ bản gồm có loại bỏ nhiễu từ các hình ảnh,
nghịch đảo các thủy vân ước tính và thêm nó vào một tỉ lệ phần trăm của các vị
trí nhất định. Nếu thủy vân là cộng, tấn công này là khá hiệu quả. Trong hầu hết
các trường hợp, các hình ảnh tấn công có biến dạng nhỏ. Hình 4.22 thể hiện ví
dụ về tấn công tái điều chế.

Hình 4.22 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công tái điều chế

Tấn công bằng cách làm biến dạng mã hóa JPEG

JPEG đã tạo ra công nghệ nén rất phổ biến trong ảnh màu. Nó được tạo
ra vào năm 1986, ban hành năm 1992 và được chấp thuận bởi Tổ chức tiêu
chuẩn quốc tế vào năm 1994. Thường được sử dụng trong các trình duyệt
Internet là JPEG lũy tiến, thực hiện ghi dữ liệu theo cách đặc biệt để bộ giải mã
có thể giải mã toàn bộ ảnh ở “mức thô” ngay mà không cần chờ đến khi quá
trình truyền ảnh kết thúc. Mặc dù JPEG có thể làm giảm kích thước tập tin hình
ảnh đến khoảng 5% kích thước bình thường của nó tuy nhiên một số chi tiết có
thể bị mất trong các hình ảnh nén. Hình 4.23 cho thấy một phiên bản mã hóa
JPEG của hình ảnh Lena với chất lượng 10.

144
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.23 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công JPEG

Tấn công bằng nén JPEG 2000

JPEG 2000 là một chuẩn kĩ thuật nén ảnh được tạo bởi ủy ban JPEG,
JPEG 2000 là hệ thống mã hóa hình ảnh mà kĩ thuật nén dựa trên kĩ thuật sóng
ngắn. Là một tiện ích toán học cho phép mô tả bằng một công thức đơn giản
những gì xảy ra tại một thời điểm chính xác của tín hiệu. Với một chuỗi sóng
ngắn, chỉ cần biểu diễn bằng vài công thức, đường biểu diễn không đều mà
không cần phải mô tả đặc tính của từng điểm một. Điều này tạo ra nhằm mục
đích khắc phục các vấn đề xuất hiện khối ô vuông xảy ra trong tiêu chuẩn JPEG
dựa trên biến đổi cosin rời rạc. Nói chung, JPEG 2000 có thể đạt được một tỉ lệ
nén cao đồng thời tránh khối ô vuông và làm mờ các ảnh. Nó cũng cho phép tải
lũy tiến tinh vi hơn. Hình 4.24 minh họa ví dụ của tấn công JPEG 2000 với 0,5
bít cho mỗi điểm ảnh.

145
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.24 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công JPEG 2000
4.6.2 Tấn công dựa trên các phép biến đổi hình học
Ngược lại với tấn công xử lí ảnh, tấn công chuyển đổi hình học không
thực sự loại bỏ bản thân thủy vân, mà nhằm mục đích làm biến dạng nó thông
qua sự thay đổi không gian hay thời gian của dữ liệu thủy vân. Tấn công này
thường làm mất sự đồng bộ giữa máy phát hiện thủy vân và các thông tin thủy
vân được nhúng. Các máy phát hiện có thể khôi phục lại các thông tin thủy vân
nhúng khi sự đồng bộ hóa hoàn hảo được thực hiện. Tuy nhiên, sự phức tạp của
quá trình đồng bộ yêu cầu có thể là quá lớn để áp dụng trong thực tế. Đối với
thủy vân ảnh, các công cụ chuẩn có tích hợp tấn công loại này được biết đến
nhiều nhất: Unzign và Stirmark [12].

Tấn công hình học bao gồm co dãn, xoay, cắt, chuyển đổi tuyến tính,
uốn, cong vênh, chiếu phối cảnh, cắt dán và lấy mẫu. O'Ruanaidh và Pun đã đề
xuất công nghệ thủy vân kĩ thuật số sử dụng các bất biến dựa trên biến đổi
Fourier-Mellin, mà không cần ảnh gốc để trích xuất các thủy vân nhúng. Theo
thiết kế của họ, các thủy vân nhúng sẽ không bị phá hủy bởi các biến đổi xoay,
quy mô, và dịch kết hợp. Hình ảnh ban đầu là không cần thiết để chiết xuất thủy
vân được nhúng.

146
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tấn công co dãn hình ảnh

Đôi khi khi chúng ta quét một hình ảnh được in hoặc điều chỉnh kích
thước của nó với bản điện tử, co dãn hình ảnh có thể xảy ra. Điều này cần được
đặc biệt lưu ý khi chúng ta đi theo hướng xuất bản web. Một ví dụ là khi hình
ảnh thủy vân đầu tiên được thu nhỏ lại bằng cách giảm cả chiều dài và chiều
rộng một nửa đó là, bằng trung bình mỗi khối vào một điểm ảnh. Hình
ảnh cỡ một phần tư này sau đó được nhân rộng với kích thước ban đầu của nó
thông qua các phương pháp nội suy. Nói chung, phép nội suy song tuyến tính sẽ
mang lại cho ảnh độ mịn cao và phép nội suy bicubic/song lập phương sẽ cho
kết quả ảnh có độ mịn thậm chí cao hơn. Hình 4.25 thể hiện ví dụ về tấn công co
dãn.

Hình 4.25 (a) Ảnh có chứa thủy vân. (b) Sau khi tấn công co dãn

Hình ảnh co dãn có thể là: đồng nhất hay không đồng nhất. Co dãn đồng
nhất sử dụng các yếu tố tỉ lệ giống nhau theo các hướng ngang và dọc. Tuy
nhiên, co dãn không đồng nhất áp dụng các yếu tố co dãn khác nhau theo các
hướng ngang và dọc. Nói cách khác, tỉ lệ co dãn thay đổi trong dạng không đồng
nhất. Hình 4.26 đưa ra ví dụ về co dãn không đồng nhất sử dụng
và . Lưu ý rằng co dãn không đồng nhất sẽ tạo ra hiệu ứng méo hình
dạng đối tượng. Hầu hết các phương pháp thủy vân kĩ thuật số được thiết kế linh
hoạt chỉ cho co dãn đồng nhất.
147
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.26 (a) Ảnh có chứa thủy vân. (b) Ảnh sau tấn công co dãn không
đồng nhất
Tấn công bằng xoay

Giả sử chúng ta muốn áp dụng một góc quay θ vào một ảnh f(x,y). Lấy
góc quay ngược chiều kim đồng là dương và những hình ảnh sau khi xoay là
( ). Hình 4.27 minh họa sự xoay từ một điểm P tới . Nếu R biểu thị
khoảng cách từ P đến gốc, chúng ta có được các công thức sau đây:

( )

( )

] ][ ]

Hình 4.27 Một minh họa của sự xoay

148
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Khi thực hiện các công thức để tính toán tọa độ mới, chúng cần phải
được chuyển đổi thành các số nguyên. Một cách tiếp cận làm tròn đơn giản
thường sẽ tạo ra kết quả không thể chấp nhận, vì một số điểm của hình ảnh mới
có thể không có mức độ xám được gán cho chúng bằng phương pháp này trong
khi những điểm ảnh khác có thể có một cấp độ màu xám cao hơn mức độ được
gán. Để giải quyết những vấn đề này, các phương pháp xoay và nội suy ngược là
cần thiết (xem chi tiết tại [23]).

Khi áp dụng xoay góc nhỏ, thường được kết hợp với cắt xén trên một
hình ảnh thủy vân, nội dung nhận thức tổng thể của hình ảnh là như nhau nhưng
các thủy vân nhúng có thể không phát hiện được. Khi một hình ảnh in được quét,
thường cần sử dụng phép xoay để điều chỉnh độ nghiêng nhẹ. Hình 4.28 là một
ví dụ của việc áp dụng xoay 10° ngược với hình ảnh thủy vân.

Hình 4.28 (a) Ảnh có chứa thủy vân. (b) Ảnh sau khi tấn công xoay

Tấn công bằng cắt xén

Hình 4.29 (a) cho thấy một phiên bản cắt của hình ảnh thủy vân. Chỉ khu
trung tâm của hình ảnh vẫn còn. Để trích xuất thủy vân từ hình ảnh này, những
phần còn thiếu của hình ảnh được thay thế bằng các phần tương ứng từ hình ảnh
ban đầu khi chưa nhúng thủy vân, như thể hiện trong hình 4.29 (b).

149
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.29 (a) Ảnh Lena phiên bản được mã JPEG (chất lượng 10%) bị cắt
xén. (b) Ảnh sau khi khôi phục
Tấn công bằng dịch chuyển tịnh tiến

Chúng ta có thể áp dụng một ma trận chuyển dịch tuyến tính . Cho
x và y biểu thị tọa độ ban đầu, và và biểu thị tọa độ chuyển đổi. Ma trận
biến đổi T để thay đổi ( ) thành ( ) có thể được thể hiện như sau:

] ][ ]

Hình 4.30 minh họa ví dụ về việc sử dụng , ,


, .

150
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hình 4.30 (a) Ảnh có chứa thủy vân. (b) Ảnh sau khi tấn công dịch chuyển
tuyến tính
Tấn công bằng cách uốn cong

Tấn công này đã được đề xuất ban đầu bởi Petitcolas [20]. Các biến dạng
hình học phi tuyến cục bộ được áp dụng và hình ảnh được nội suy. Nhiễu cũng
sẽ được thêm và nén nhỏ được áp dụng. Hình 4.31 thể hiện ví dụ về tấn công
uốn cong.

Hình 4.31 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công uốn cong
Tấn công bằng bẻ cong

Bẻ cong ảnh thực hiện xây dựng lại theo từng điểm ảnh (hay là "bẻ
cong") của một hình ảnh đầu vào để được một hình ảnh đầu ra. Phương pháp
này yêu cầu một " hình ảnh ánh xạ lại" được lấy mẫu nguyên (integer-sampled)
có cùng kích thước với hình ảnh đầu ra. Hình ảnh ánh xạ lại này gồm các chiều x
và y. Đối với mỗi điểm ảnh trong hình ảnh đầu ra, các điểm tương ứng trong
hình ảnh ánh xạ lại được kiểm tra để xác định điểm ảnh nào từ hình ảnh đầu vào
sẽ được sao chép. Trước tiên, lưới ảnh được bẻ cong thành ba chiều và sau đó

151
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

ánh xạ trở về hai chiều. Hình 4.32 minh họa ví dụ về tấn công bẻ cong với một
hệ số của 3.

Hình 4.32 Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công bẻ cong
Tấn công bằng chiếu phối cảnh

Hình chiếu phối cảnh là hình biểu diễn được xây dựng bằng phép chiếu
xuyên tâm, tạo cho người xem cảm giác về khoảng cách xa gần giống như trong
thực tế. Ngược lại với chiếu song song, trong chiếu phối cảnh các đường song
song hội tụ, kích thước đối tượng bị giảm với sự gia tăng khoảng cách từ trung
tâm chiếu và co lại không đồng nhất của các dòng trong đối tượng như một hàm
định hướng và khoảng cách của đối tượng từ các trung tâm chiếu xảy ra. Tất cả
những hiệu ứng này hỗ trợ nhận thức sâu sắc của hệ thống thị giác của con
người, nhưng hình dạng đối tượng không được bảo toàn. Hình 4.33 thể hiện ví
dụ về tấn công này bằng cách sử dụng xoay 30° dọc theo một trục x cùng với
chiếu phối cảnh.

Hình 4.33 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công chiếu phối
cảnh

152
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tấn công bằng cắt dán

Tấn công cắt dán như đề xuất của Holliman và Memon trong kĩ thuật
thủy vân độc lập blockwise [6] cho rằng logo thủy vân sẽ là có sẵn cho những kẻ
tấn công. Họ đã sử dụng nhiều hình ảnh được xác thực để phát triển một hình
ảnh mới bằng cách kết hợp các bộ phận của hình ảnh khác nhau mà vẫn bảo toàn
các vị trí không gian tương đối của chúng trong hình ảnh với mỗi khối được
nhúng độc lập. Hình 4.34 là ví dụ về tấn công cắt dán.

Hình 4.34 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công cắt dán
Tấn công bằng mẫu

Các mẫu được sử dụng như là một mô hình đồng bộ hóa để ước tính sự
biến đổi affine được áp dụng [19]. Sau đó áp dụng các biến đổi nghịch đảo để
trích xuất các thủy vân dựa trên các ước lượng thu được. Nhiều chương trình
hiện đại sử dụng một mẫu trong miền tần số để trích xuất các thủy vân. Mẫu bao
gồm các đỉnh, và quá trình phát hiện thủy vân bao gồm hai bước. Đầu tiên, các
hình ảnh thủy vân được tính toán áp dụng biến đổi affine. Thứ hai, sử dụng phép
đổi ngược để trích xuất các thủy vân.

4.6.3 Tấn công mật mã


Dạng tấn công này sẽ bẻ gãy tính an toàn của hệ thống thủy vân và tìm
cách loại bỏ thông tin thủy vân được nhúng vào hay tìm cách nhúng thủy vân giả.

153
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Các nguyên tắc của tấn công mật mã tương tự như các tấn công áp dụng
trong mật mã, nhưng với mục đích khác. Đây là hình thức tấn công cố gắng để
phá vỡ sự an toàn của một hệ thống mật mã bằng cách lấy khóa hay làm lộ bản
rõ trong một mã số, mật mã, hoặc giao thức. Dựa trên phương pháp tiếp cận tìm
kiếm khóa đầy đủ, tấn công bằng mật mã cố gắng tìm kiếm khóa được sử dụng
khi nhúng. Khi tìm được khóa, thủy vân sẽ bị ghi đè. Một tấn công bằng mật mã
khác, gọi là tấn công Oracle. Phương pháp này cố gắng tạo ra một ảnh không có
thủy vân cho một thiết bị phát hiện thủy vân có sẵn. Tập dữ liệu tấn công được
tạo ra bởi kết hợp các phần nhỏ của mỗi tập dữ liệu và thiết lập một bộ dữ liệu
mới để tấn công. Nói cách khác, một kẻ tấn công có thể loại bỏ thủy vân nếu bộ
trích xuất công khai có sẵn bằng cách áp dụng những thay đổi nhỏ tới hình ảnh
cho đến khi bộ trích xuất không thể tìm thấy nó nữa. Linnartz và Dijk đã trình
bày các phân tích của tấn công nhạy cảm lên thủy vân điện tử trong ảnh [14].

Tấn công bằng mật mã khác, được gọi là tấn công cấu kết, được sử dụng
khi các thể hiện của cùng một dữ liệu có sẵn. Một ví dụ về tấn công bằng thông
đồng là dùng hai hình ảnh thủy vân riêng biệt và lấy trung bình chúng để tạo
thành một ảnh khác, như trong hình 3.35.

Hình 4.35 (a) Ảnh có chứa thủy vân (b) Ảnh sau khi tấn công thông đồng

4.6.4 Tấn công giao thức


Tấn công giao thức tạo ra giao thức không rõ ràng trong quá trình thủy
vân. Có 2 loại tấn công giao thức là: tấn công nghịch đảo và tấn công sao chép.

154
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Tấn công nghịch đảo dựa trên cơ chế thủy vân có thể đảo ngược, kẻ tấn
công có thể tuyên bố là chủ sở hữu của dữ liệu, vì dữ liệu cũng chứa thủy vân
của kẻ tấn công khi trích xuất ra thủy vân của chính anh ấy/cô ấy. Việc này tạo
ra sự không rõ ràng trong việc xác định người chủ bản quyền và do đó, trong
vấn đề vảo vệ bản quyền đòi hỏi thủy vân không có tính nghịch đảo là kĩ thuật
thủy vân không thể trích thủy vân từ dữ liệu không có thủy vân. Giải pháp cho
vấn đề này là tạo thủy vân từ hàm một chiều.

Dạng khác của tấn công giao thức là tấn công sao chép [1]. Kiểu tấn công
này không tìm cách phá hủy thủy vân từ ảnh nhúng thủy vân hay làm hư hại việc
phát hiện mà sao chép nó sang những ảnh khác. Dạng tấn công sao chép không
cần biết thuật toán nhúng thủy vân cũng như khóa sử dụng trong quá trình nhúng,
kẻ tấn công xem ảnh như là ảnh nhiễu trong đó thủy vân là nhiễu được cộng vào
ảnh đích nhằm mục đích thích ứng với ảnh đích để không cảm nhận được trong
khi vẫn có năng lượng tối đa. Đó là do ước lượng thủy vân thích ứng với đặc
tính cục bộ của dữ liệu đã thủy vân dựa trên việc khai thác độ nhạy HVS của
con người. Kẻ tấn công sẽ ước tính một thủy vân từ dữ liệu thủy vân và sao chép
nó vào một số dữ liệu khác thay vì hủy thủy vân hoặc làm suy yếu khả năng phát
hiện của nó. Tấn công bản sao bao gồm bốn giai đoạn, đó là: (1) đánh giá các
thủy vân từ hình ảnh ban đầu; (2) đánh giá mặt nạ từ các hình ảnh đích; (3) cân
đối lại (reweighting) thủy vân như là một hàm của mặt nạ; và (4) thêm thủy vân
được cân đối lại vào hình ảnh đích.

Trong thực tế, một kẻ tấn công cố ý thường không chỉ sử dụng một loại
mà kết hợp nhiều loại tấn công cũng một lúc.

4.7 Bài tập thực hành


1. Lập trình thuật toán thủy vân trong miền không gian bằng cách thay
thế 1 bít LSB.
2. Lập trình thuật toán thủy vân trong miền không gian bằng cách thay
thế 2 bít LSB.
3. Lập trình thuật toán thủy vân trong miền không gian bằng cách thay
thế bít LSB thứ 3.
155
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

4. Lập trình thuật toán thủy vân trong miền không gian bằng cách thay
thế bít LSB thứ 2 và thứ 3.
5. Lập trình thuật toán thủy vân trong miền không gian bằng phương
pháp cộng thông thường.
6. Lập trình thuật toán thủy vân trong miền không gian bằng phương
pháp cộng dựa trên khối.
7. Lập trình thuật toán thủy vân trong miền tần số bằng phương pháp
nhân.
8. Lập trình thuật toán kết hợp thủy vân trong miền không gian và tần số.
9. Lập trình thuật toán thủy vân dễ vỡ của Wong.

156
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

PHỤ LỤC
Trong phần này, một số ví dụ thực hành về ẩn mã trong ảnh số nhờ sử
dụng phần mềm ứng dụng Matlab sẽ được trình bày.

Matlab được lựa chọn làm môi trường để thực hành một số kĩ thuật ẩn
mã vì nó có nhiều ưu điểm, có chứa nhiều hàm thư viện đã được xây dựng sẵn
phục vụ cho xử lí ảnh.

I. MỘT SỐ HÀM XỬ LÍ ẢNH CƠ BẢN TRONG MATLAB

Giống như nhiều tệp khác trong Matlab, ảnh số được xem như là một ma
trận. Trong phần này chúng tôi giới thiệu một số hàm cơ bản cho xử lí ảnh.

1.1. Nạp ảnh (Loading an image)

Để nạp một ảnh, cách tốt nhất là chúng ta đặt tệp ảnh cùng thư mục với
tệp chương trình Matlab (m-file). Bằng cách này, một ảnh dễ dàng được nạp vào
thông qua hàm “imread”:

A = imread(‘lena.tif’);

Nếu tệp ảnh ở một thư mục khác, cần chỉ ra đường dẫn đầy đủ:

A = imread(‘C:\Users\User1\Desktop\lena.tif’);

Các định dạng ảnh được hỗ trợ bởi Matlab là: bmp, cur, fts(fits), gif, hdf,
ico, j2c(j2k), jp2, jpf(jpx), jpg(jpeg), pbm, pcx, pgm, png, pnm, ppm, ras, tif(tiff),
và xwd. ‘A’ bây giờ là một ma trận các giá trị cấp xám của điểm ảnh. Nếu là ảnh
đen trắng thì ma trận là 2 chiều. Tuy nhiên, nếu là ảnh màu, ta sẽ có một ma trận
3 chiều, trong đó gồm 3 mặt phẳng màu chính: Red, Green, và Blue. Số lượng
bít cần thiết để lưu trữ giá trị mỗi điểm ảnh được gọi là “bit depth” của ảnh.

1.2. Hiển thị ảnh

Hàm thông thường nhất dùng để hiện thị ảnh (dạng ma trận) là
“imshow”:

imshow(A);

157
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hàm này mô tả các ma trận với các giá trị kiểu số thực (dạng double).
Nếu các giá trị không nằm trong khoảng 0-255, tốt hơn là ánh xạ chúng vào các
giá trị trong khoảng này. Điều này có thể thực hiện được bằng cách cộng thêm
một ma trận rỗng. Khi đó, giá trị thấp nhất của ma trận được xem là “0”, và giá
trị cao nhất được xem là “255”.

imshow(A, [ ] );

1.3. Tạo ảnh

Hàm “imwrite” được dùng để tạo một tệp ảnh đầu ra của một ma trận.
tệp ảnh được tạo trong cùng một thư mục với m-file nếu không chỉ rõ đường dẫn
imwrite(A,'lena.jpg','Mode','lossy','Quality',65,'Bitdepth',8);

II. GIẤU THÔNG TIN TRONG ẢNH SỬ DỤNG MATLAB

Cơ chế ẩn giấu thông tin được minh họa như hình 1 dưới đây

Stego key k Stego key k

Cover C
Stego
Stego Stego S
inverse
function function EmbeddedE
EmbeddedE
Receiver
Sender

Hình 1: Cơ chế ẩn giấu thông tin

2.1. Ẩn giấu văn bản vào tệp ảnh

Mã nguồn matlab để giấu một văn bản có độ dài tối đa 1000 kí tự vào
trong ảnh có thể được mô tả như sau:

function []=txthide(arg)
if (nargin==0)
arg = 'initialize';
else

158
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

hands = get(gcf,'userdata');
pos = get(gcbf,'position');
checkd = hands(1); % For user to choose to decode a MSG.
checke = hands(2); % For user to choose to encode a MSG.
edit1 = hands(3); % Space for user to enter MSG.
edit2 = hands(4); % Space for user to enter key.
frame1 = hands(5);
frame2 = hands(6);
push1 = hands(7); % Indicates user is done entering MSG.
push2 = hands(8); % Indicates user is done entering KEY.
static1 = hands(9);
static2 = hands(10);
static3 = hands(11);
static4 = hands(12);
static5 = hands(13);
end
switch arg
case'initialize'
% Creation of GUI and storage of handles.
counter=0; % This is where the length of MSG is stored.
h_fig = figure('name','Text Hider','position',[460 …
760 300 80],'menubar','none','resize','off');
col = get(h_fig,'color');
checkd=uicontrol(h_fig,'style','checkbox','position',…
[140 20 60 20],'string','Decode',…
'backgroundcolor',col,'callback',…
'txthide(''decode'')','fontweight','bold');
checke=uicontrol(h_fig,'style','checkbox','position',…
[140 50 60 20],'string','Encode','fontweight',...
'bold','backgroundcolor',col,'callback',...
'txthide(''encode'')');
edit1=uicontrol(h_fig,'style','edit',...
'horizontalalignment','left',...
'max',9,'min',1,'visible','off','KeyPressFcn',...
'txthide(''count'')','userdata',counter);
edit2=uicontrol(h_fig,'style','edit',...
'horizontalalignment','left',...
'max',9,'min',1,'visible','off');
frame1=uicontrol(h_fig,'style','frame','visible','off');
frame2=uicontrol(h_fig,'style','frame','visible','off');
push1=uicontrol(h_fig,'style','pushbutton','string',...
'done','callback','txthide(''done1'')',...

159
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

'visible','off');
push2=uicontrol(h_fig,'style','pushbutton','string',...
'done','callback','txthide(''done2'')',...
'visible','off');

static1=uicontrol(h_fig,'style','text','visible','off',...
'string','Nhap vao thong diep can an dau.',...
'fontweight','bold','backgroundcolor',col);
static2=uicontrol(h_fig,'style','text','position',...
[30 33 75 20],'strin',...
'Choose one:','fontweight','bold',...
'backgroundcolor',col);

static3=uicontrol(h_fig,'style','text','visible','off',...
'string','Enter the key for decoding.',...
'fontweight','bold','backgroundcolor',col);

static4=uicontrol(h_fig,'style','text','visible','off',...
'string','Message Length:','fontweight','bold',...
'backgroundcolor',col);

static5=uicontrol(h_fig,'style','text','visible','off',...
'string','0','foregroundcolor','blue',...
'fontweight','bold','backgroundcolor',col);
hands=[checkd checke edit1 edit2 frame1 frame2 push1 ...
push2 static1 static2 static3 static4 static5];
set(h_fig,'userdata',hands);
case'encode'% The user has chosen to encode a MSG.
set(gcbf,'position',[pos(1) pos(2)-300 300 380]);
set(checkd,'enable','off','position',[140 320 60 20]);
set(checke,'position',[140 350 60 20],'enable','off');
set(edit1,'visible','on','position',...
[30 50 245 200],'fontsize',10,'string',...
[' Maximum Number of Characters ',...
' is 1000. See Counter Below'],'foregroundcolor',...
'red'); % Issue a reminder about the max MSG length.
set(frame1,'visible','on','position',[30 295 245 3],...
'backgroundcolor','black');
set(push1,'visible','on','position',[230 10 45 28]);
set(static1,'visible','on','position',[30 260 245 20]);
set(static2,'position',[30 333 75 20]);
set(static4,'visible','on','position',[28 4 100 28]);

160
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

set(static5,'visible','on','position',[130 4 50 28]);
pause(1.75); % Displays reminder only a short time.
set(edit1,'foregroundcolor','black','string','',...
'fontsize',9)
case'decode'% The user has decided to decode a MSG.
set(gcbf,'position',[pos(1) pos(2)-110 300 190]);
set(checkd,'enable','off','position',[140 130 60 20]);
set(checke,'enable','off','position',[140 160 60 20]);
set(edit2,'visible','on','position',[30 40 245 30]);
set(frame1,'position',[30 110 245 3],'visible','on',...
'backgroundcolor','black');
set(push2,'visible','on','position',[130 7 45 28]);
set(static2,'position',[30 143 75 20]);
set(static3,'visible','on','position',[30 75 245 20]);
case'done1'% The user is done entering the MSG to encode.
set(gcbf,'position',[pos(1) pos(2)-140 300 520]);
set(checkd,'position',[140 460 60 20]);
set(checke,'position',[140 490 60 20]);
set(edit1,'position',[30 190 245 200],'enable','off');
set(edit2,'visible','on','position',[30 60 245 30]);
set(frame1,'position',[30 435 245 3]);
set(frame2,'position',[30 133 245 3],'visible','on',...
'backgroundcolor','black');
set(push1,'position',[230 150 45 28],'enable','off');
set(push2,'visible','on','position',[130 20 45 28]);
set(static1,'position',[30 400 245 20]);
set(static2,'position',[30 473 75 20]);
set(static3,'visible','on','position',[30 95 245 20]);
set(static4,'position',[28 144 100 28]);
set(static5,'position',[130 144 50 28]);
if isempty(get(edit1,'string'))
fprintf('\n\t\t No message entered, try again.\n\n')
close(gcbf)
return
end
case'done2'%Nguoi dung da vao khoa de encoding/decoding.
en_or_de = get(checke,'value');
if en_or_de==1 % Encoding.
key = get(edit2,'string');
if isempty(key)
fprintf('\n\t\t No key entered, try
again.\n\n');

161
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

close(gcbf);
return
end
msg = get(edit1,'string');
[i j] = size(msg);
if i >1
msg = reshape(msg',1,i*j); % MSG should be 1 by
n.
end
close(gcbf);
wrkd = encode(msg,key); % Pass to encode function.
if isempty(wrkd)
close(gcbf);
fprintf('\n\t\t Operation aborted.\n\n');
return
end
fprintf('\t\t\n Your message was encoded.\n\n');
else% Decoding.
key = get(edit2,'string');
if isempty(key)
close(gcbf)
fprintf('\n\t\t No key entered, try again.\n\n')
return
end
msg=decode(key); % Pass to decode function.
if isempty(msg) %User hit cancel when choosing a file.
close(gcbf)
fprintf('\n \t\t Operation aborted.\n\n')
return
end
close(gcbf);
h_fig = figure('name','The Message','position',...
[460 460 300 380],'menubar','none');
col=get(h_fig,'color');
stat = uicontrol(h_fig,'style','edit','position',...
[30 40 245 300],'string',msg,'fontsize',9,...
'horizontalalignment','left','max',9,'min',1);
stat2 =
uicontrol(h_fig,'style','text','position',...
[30 355 245 20],'string','Your Message:',...
'fontweight','bold','backgroundcolor',col,...
'horizontalalignment','left','fontsize',12);

162
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

end
case'count'% This is where the length of MSG is counted.
ch=get(gcbf,'currentcharacter');
if isempty(ch) || ch==13
return
else
if ch==8
counter = get(edit1,'userdata')-1;
else
counter = get(edit1,'userdata')+1;
end
set(edit1,'userdata',counter);
set(static5,'string',num2str(counter));
if counter > 990
set(static5,'foregroundcolor','red');
end
end

end%End of Switch
end%End of function

%----------New Function Starts -------------


function success = encode(msg,key)
num2add = 1000-length(msg);
if num2add < 0,
error('This message is too long to encode.');
end
newmsg = [msg,repmat(' ',1,num2add)];
msgmat = dec2bin(newmsg)-48;
[filen pth]=uigetfile({'*.bmp';'*.tif';'*.jpg'},...
'Choose Image To Encode.');
if isequal(filen,0) || isequal(pth,0)
success = []; return% User cancelled.
end
pic1 = imread([pth filen]);
B = pic1(:,:,1); [piclngth pichght] = size(B);
dim1 = piclngth-2; dim2 = pichght-3; keyb = key(end:-1:1);
rows = cumsum(double(key));
columns = cumsum(double(keyb));
A = zeros(dim1,dim2);
A = crtmtrx(A,rows,columns,dim1,dim2,key);
idx = find(A==1);

163
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

for vv = 1:1000 % This is the encoder.


for uu = 1:7
if msgmat(vv,uu)==1
if rem(B(idx(uu+7*(vv-1))),2)==0
B(idx(uu+7*(vv-1))) = B(idx(uu+7*(vv-1)))+1;
end
else
if rem(B(idx(uu+7*(vv-1))),2)==1
B(idx(uu+7*(vv-1))) = B(idx(uu+7*(vv-1)))-1;
end
end
end
newpic = pic1; newpic(:,:,1) = B;
[filen pth] = uiputfile({'*.bmp';'*.tif'},...
'Save Encoded File As');
if isequal(filen,0) || isequal(pth,0)
success = [];
return;
end% User cancelled.
imwrite(newpic,[pth filen])
success = 1;
end
end
%----------New Function Starts-------------
function msg = decode(key)
[filen pth] = uigetfile({'*.bmp';'*.tif'},...
'Choose Image To Decode.');
if isequal(filen,0) || isequal(pth,0)
msg = []; return
end% User cancelled.
pic2 = imread([pth filen]);
B = pic2(:,:,1); [piclngth pichght] = size(B);
dim1 = piclngth-2; dim2 = pichght-3; keyb = key(end:-1:1);
rows = cumsum(double(key)); columns = cumsum(double(keyb));
A = zeros(dim1,dim2); % This matrix houses the hiding points.
A = crtmtrx(A,rows,columns,dim1,dim2,key);
idx = find(A==1); msgmat = zeros(1000,7);
for vv = 1:1000 % This is the decoder.
for uu = 1:7
if rem(B(idx(uu+7*(vv-1))),2)==1
msgmat(vv,uu) = 1;
end

164
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

end
end
msg = char(bin2dec(num2str(msgmat)))';
end
%----------New Function Starts-------------
% Creates the matrix used to find the points to hide the message

function A = crtmtrx(A,rows,columns,dim1,dim2,key)
jj = 1; idx = 1;
while 7000 > length(idx)
for ii = 1:length(rows)
if rows(ii) < dim1
rows(ii) = rem(dim1,rows(ii))+1;
else
rows(ii) = rem(rows(ii),dim1)+1;
end
if columns(ii) < dim2
columns(ii) = rem(dim2,columns(ii))+1;
else
columns(ii) = rem(columns(ii),dim2)+1;
end
A(rows(ii),columns(ii)) = 1;
end
rows = jj*cumsum(double(columns))+round(dim2/2);
columns = jj*cumsum(double(rows))+round(dim1/2);
if jj > ceil(7000/length(key))+2
idx = find(A==1);
end
jj = jj+1;
end
end

Để thực hiện chương trình, tại cửa sổ dòng lệnh của Matlab ta gõ lệnh là
tên hàm txthide

165
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Cửa sổ chương trình sẽ xuất hiện, cho phép người dùng lựa chọn các
chức năng tương ứng:

Giả sử chọn chức năng Encode

2.2 Thuật toán LSB

Nhúng tin

target=imread(‘image.jpg’);
fid = fopen('message.txt','r');
F = fread(fid);
s = char(F');
fclose(fid);

sz1=size(original);

166
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

size1=sz1(1)*sz1(2);
sz2=size(F);
size2=sz2(1);

if size2> size1
fprintf('\nImage File Size %d\n',size1);
fprintf('Text File Size %d\n',size2);
disp('Text File is too Large');
else
fprintf('\nImage File Size %d\n',size1);
fprintf('Text File Size %d\n',size2);
disp('Text File is Small');
i=1;j=1;k=1;
while k<=size2
a=F(k);
o1=original(i,j,1);
o2=original(i,j,2);
o3=original(i,j,3);

[r1,r2,r3]=hidetext(o1,o2,o3,a);

target(i,j,1)=r1;
target(i,j,2)=r2;
target(i,j,3)=r3;

if(i<sz1(1))
i=i+1;
else
i=1;
j=j+1;
end
k=k+1;
end
width=sz1(1);
txtsz=size2;
n=size(original);
target(n(1),n(2),1)=txtsz;% Text Size
target(n(1),n(2),2)=width;% Image's Width
%save secret.mat target;% txtsz width;

167
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

imwrite(target,'secret.bmp','bmp');

imshow(target)

end
helpdlg('data hided succesfully in secret.bmp');

Trích xuất tin

target=imread(‘stego.bmp’);
n=size(target);
txtsz=target(n(1),n(2),1);% Text Size
width=target(n(1),n(2),2);% Image's Width

i=1;j=1;k=1;
while k<=txtsz

r1=target(i,j,1);
r2=target(i,j,2);
r3=target(i,j,3);

R(k)=findtext(r1,r2,r3);

if(i<width)
i=i+1;
else
i=1;
j=j+1;
end
k=k+1;
end

fid = fopen('secret.txt','wb');
fwrite(fid,char(R),'char');
fclose(fid);

helpdlg('data Retrivedsuccesfully in secret.txt');

168
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

Hàm findtext

function data = findtext(redc,greenc,bluec)


txt=0;
ifbitand(redc,4)== 4
txt=bitor(txt,128);
end
ifbitand(redc,2)== 2
txt=bitor(txt,64);
end
ifbitand(redc,1)== 1
txt=bitor(txt,32);
end
ifbitand(greenc,4)== 4
txt=bitor(txt,16);
end
ifbitand(greenc,2)== 2
txt=bitor(txt,8);
end
ifbitand(greenc,1)== 1
txt=bitor(txt,4);
end
ifbitand(bluec,2)== 2
txt=bitor(txt,2);
end
ifbitand(bluec,1)== 1
txt=bitor(txt,1);
end
data=txt;
return

Hàm hidetext

function[red,green,blue]=hidetext(redc,greenc,bluec,text)

red=bitand(redc,248);
green=bitand(greenc,248);
blue=bitand(bluec,252);
txt=0;

169
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

ifbitand(text,128)== 128
red=bitor(red,4);
end

ifbitand(text,64)== 64
red=bitor(red,2);
end
ifbitand(text,32)== 32
red=bitor(red,1);
end

ifbitand(text,16)== 16
green=bitor(green,4);
end

ifbitand(text,8)== 8
green=bitor(green,2);
end

ifbitand(text,4)== 4
green=bitor(green,1);
end

ifbitand(text,2)== 2
blue=bitor(blue,2);
end

ifbitand(text,1)== 1
blue=bitor(blue,1);
end

return

170
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

TÀI LIỆU THAM KHẢO


[1] Andreas Westfeld, “F5 – A Steganographic Algorithm High Capacity
Despite Better Steganalysis”, https://www2.htw-
dresden.de/~westfeld/publikationen/21370289.pdf
[2] Deguillaume, F., et al. “Secure Hybrid Robust Watermarking Resistant
against Tamperingand Copy Attack” Signal Processing 83 (2003): 2133.
[3] Fei, C., D. Kundur, and R. H. Kwong. “Analysis and Design of Secure
Watermark-Based Authentication Systems” IEEE Trans. Information
Forensics and Security 1(2006): 43.
[4] Frank Y.Shih, “Digital Watermarking and Steganography Fundamentals and
Techniques”, CRC Press Taylor&Francis Group LLC, 2008.
[5] Gregory Kipper, “Investigator’s guide to steganography” CRC Press LLC,
2004.
[6] Holliman, M., and N. Memon. “Counterfeiting Attacks for Block-Wise
IndependentWatermarking Techniques” IEEE Trans. Image Processing 9
(2000): 432.
[7] Ingemar J.Cox, Matthew L.Miller, Jeffrey A.Bloom, Jessica Fridrich, Ton
Kalker, “Digital watermaking and steganography”, 2nd edition, Morgan
Kaufmann, 2007.
[8] Joseph Raphael, Dr. V. Sundaram, “Cryptography and Steganography – A
Survey”
[9] Joshua Silman, “Steganography and Steganalysis: An Overview”, SANS
Institute Reading Room site, (tháng 8/2001)
[10] Khalil Challita, Hikmat Farhat, “Combining Steganography and
Cryptography: New Directions”,
http://www.google.com.vn/url?sa=t&rct=j&q=&esrc=s&source=web&cd=
1&cad=rja&uact=8&ved=0CCAQFjAA&url=http%3A%2F%2Fwww.sdiw
c.net%2Fdigital-library%2Fweb-admin%2Fupload-
pdf%2F00000017.pdf&ei=KmmJVIasO4uB8gX5x4GQCA&usg=AFQjCN
F_PEHzwxpT3G0Azku65MosZHXU0g&bvm=bv.81456516,d.dGY

171
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

[11] Kundur, D., and D. Hatzinakos. “Diversity and Attack Characterization


for ImprovedRobust Watermarking” IEEE Trans. Signal Processing 29
(2001): 2383.
[12] Kutter, M., and F. Petitcolas. “A Fair Benchmark for Image
Watermarking Systems”In Proc. SPIE Electronic Imaging 1999: Security and
Watermarking of MultimediaContent. San Jose, CA, 1999.
[13] Langelaar, G. C., R. L. Lagendijk, and J. Biemond. “Removing Spatial
Spread Spectrum Watermarks by Non-Linear Filtering” In Proc. Europ. Conf.
Signal Processing.Rhodes, Greece, 1998.
[14] Linnartz, J., and M. Dijk, M. “Analysis of the Sensitivity Attack against
ElectronicWatermarks in Images” In Proc. Intl. Workshop on Information
Hiding. Portland,OR, 1998.
[15] M. Kutter and F. Petitcolas, “A fair benchmark for image watermarking
systems” Electronic Imaging 199:Security and Watermarking of Multimedia
Content, Vol. 3657 of SPIE Proceedings, San Jose, California USA, 25-
27January 1999.
[16] M. Pavani, S. Naganjaneyulu, C. Nagaraju, “A Survey on LSB Based
Steganography Methods”, International Journal Of Engineering And
Computer Science ISSN:2319-7242, Volume 2 Issue 8 Page No. 2464-2467,
(tháng 8/2013)
[17] O’Ruanaidh, J., and T. Pun. “Rotation, Translation and Scale Invariant
Digital ImageWatermarking” In Proc. Int. Conf. Image Processing. 1997,
536.
[18] Pereira, S., et al. “Second Generation Benchmarking and Application
Oriented Evaluation”In Proc. Information Hiding Workshop III. Pittsburgh,
PA, 2001.
[19] Pereira, S., et al. “Template-Based Recovery of Fourier-Based
Watermarks UsingLog-Polar and Log-Log Maps” In Proc. IEEE Int. Conf.
Multimedia Computing andSystems. Florence, Italy, 1999.
[20] Petitcolas, F., R. Anderson, and M. Kuhn. “Attacks on Copyright Marking
Systems”In Proc. Int. Workshop on Information Hiding. Portland, OR, 1998.
[21] Petitcolas, F. “Watermarking Schemes Evaluation.” IEEE Signal
Processing 17 (2000):58.
172
TS. Nguyễn Ngọc Cương, ThS. Trần Thị Xuyên, ThS. Hoàng Thu Phương
Học viện Kỹ thuật Mật Mã

[22] Philip Bateman,” Image steganography and steganalysis”, University of


Surrey,2008.
[23] Rosenfeld, A., and A. C. Kak. “Digital Picture Processing”, New York:
Academic Press,1982.
[24] Solachidis, V., et al. “A Benchmarking Protocol for Watermarking
Methods” InProc. IEEE Int. Conf. on Image Processing. Thessaloniki,
Greece, 2001.
[25] Sorina Dumitrescu, Xiaolin Wu , Zhe Wang, “Detection of LSB
Steganography via Sample Pair Analysis”, IEEE Transactions on Signal
Processing (Volume:51 , Issue: 7 ), pages 1995-2007, ISSN 1053-587X,
2003

[26] Stefan Katzenbeisser, Fabien A. P. Petitcolas, “Information Hiding


Techniques for Steganography and Digital Watermarking”, ARTECH
HOUSE, INC, ISBN 1-58053-035-4, 2000
[27] Voloshynovskiy, S., et al. “Attack Modelling: Towards a Second
GenerationBenchmark” Signal Processing 81 (2001): 1177.
[28] Langelaar, G. C., R. L. Lagendijk, and J. Biemond. “Removing Spatial
Spread Spectrum Watermarks by Non-Linear Filtering.” In Proc. Europ.
Conf. Signal Processing. Rhodes, Greece, 1998.
[29] O’Ruanaidh, J., and T. Pun. Rotation, Translation and Scale Invariant
Digital Image Watermarking.” In Proc. Int. Conf. Image Processing. 1997,
536.

173

You might also like