Tải bản đầy đủ (.doc) (23 trang)

LỖ HỔNG TRONG CÁC THUẬT TOÁN GIẤU TIN Nghiên cứu với một số thuật toán dấu tin trong ảnh số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (505.95 KB, 23 trang )

TRƯỜNG ĐH CÔNG NGHỆ - ĐH QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI GIỮA KỲ MÔN HỌC
MẬT MÃ VÀ AN TOÀN DỮ LIỆU
TÊN ĐỀ TÀI:
LỖ HỔNG TRONG CÁC THUẬT TOÁN GIẤU TIN
( Nghiên cứu với một số thuật toán dấu tin trong ảnh số )
Giáo viên hướng dẫn : PGS.TS. Trịnh Nhật Tiến
Học viên thực hiện : Nguyễn Quang Đại
Chuyên ngành : Kỹ Thuật Phần Mềm
Mã số HV : 12025005
Khóa : K19

Hà Nội, tháng 05/2014
Mật mã và an toàn dữ liệu K19 1
Mục lục
Gi i thi u v gi u tin, l h ng an to n v ph m vi nghiên c uớ ệ ề ấ ỗ ổ à à ạ ứ 3
Các y u t nh h ng n vi c n gi u tin trong nhế ốả ưở đế ệ ẩ ấ ả 3
Gi i thi u m t s thu t toán gi u tin trong nhớ ệ ộ ố ậ ấ ả 4
L h ng trong các thu t toán gi u tinỗ ổ ậ ấ 10
Gi i pháp kh c ph c:ả ắ ụ 14
K t lu nế ậ 21
Mật mã và an toàn dữ liệu K19 2
Giới thiệu về giấu tin, lỗ hổng an toàn và phạm vi nghiên cứu
1.1.Giới thiệu giấu tin
Giấu tin là một kỹ thuật nhúng (giấu) một thông tin nào đó vào trong một vật mang tin khác (hay gọi
là môi trường giấu tin) sao cho sự biến đổi của môi trường giấu tin là rất khó nhận biết, khiến đối
phương bằng mắt thường khó phát hiện được vật mang tin đã được giấu một tin mật và khó giải mã
nhận biết được tin mật giấu trong đó.
Ngày nay công nghệ thông tin đã tạo ra môi trường “Ẩn giấu tin” mới rất tiện lợi và phong phú.


Không chỉ “Ẩn giấu tin” trong văn bản người ta còn có thể giấu tin trong hình ảnh, âm thanh, trong các
gói dữ liệu, trong các phần mềm hoặc thậm chí trong các phân vùng ẩn của đĩa cứng, đĩa mềm, USB.
Giấu tin được ứng dụng trong nhiều mục đích khác nhau như ứng dụng trong quân sự - liên lạc bí
mật, bảo vệ bản quyền – cho các “tài liệu số”, “tranh ảnh số”, “bản nhạc số” …
1.2.Lỗ hổng an toàn là gì ?
Lỗ hổng an toàn là những nguy cơ tiềm ẩn hay những điểm yếu trong hệ thống hoặc dịch vụ nào
đó mà dựa vào đó kẻ tấn công có thể khai thác, xâm nhập trái phép để thực hiện chiếm đoạt thông tin
hoặc phá hoại chúng.
1.3.Giấu tin trong ảnh số
Kỹ thuật “ẩn – giấu” thông tin chia làm hai hướng: ẩn trực tiếp (trên miền không gian – thời gian) và
ẩn trên miền biến đổi. Có nhiều miền đặc trưng thường được lựa chọn làm miền ẩn thông tin như: biến
đổi rời rạc Cosin (DCT), Fourier (DFT), Wavelet (DWT) [8]
Giấu tin trong ảnh số là tác động lên thông tin trên ảnh, có thể làm thay đổi các điểm ảnh, các giá trị
trực tiếp của điểm ảnh, có nhiều phương pháp thực hiện giấu tin trong ảnh như:
- Giấu tin sử dụng chẵn lẻ của tổng số bit 1, thuật toán giấu tin M.Y.Wu - J.H.Lee
- Giấu tin vào các bit có trọng số thấp (LBS: Least Significant Bit), giấu tin dựa vào kỹ thuật “biến
đổi ảnh”, giấu tin sử dụng “mặt nạ” giác quan …
1.4.Phạm vi, lý do chọn hướng nghiên cứu
Ngày nay, nhu cầu trao đổi thông tin trên mạng là rất lớn. Theo đó, vấn đề bảo đảm an toàn cho
các thông tin mật cũng trở nên cấp thiết. Có nhiều giải pháp nhằm đảm bảo an toàn cho thông tin trao
đổi và môi trường giấu tin có thể là bất kỳ đối tượng dữ liệu đa phương tiện nào nhưng phổ biến nhất
là môi trường ảnh số. Trong báo cáo này trình bày nghiên cứu về lỗ hổng của một số thuật toán giấu tin
trong ảnh và cách khắc phục hạn chế lỗ hổng của thuật toán.
Các yếu tố ảnh hưởng đến việc ẩn giấu tin trong ảnh
Việc giấu tin nói chung đều phải đáp ứng một số yếu tố, các yếu tố này có thể thay đổi phụ thuộc vào
từng ứng dụng cụ thể, với việc ẩn giấu tin trong ảnh thường có các yêu tố chung như sau:
1.5. Khó phát hiện bởi yếu tố con người - tính “vô hình”
Ẩn giấu thông tin trong ảnh sẽ làm biến đổi ảnh mang tin. Tính “vô hình” thể hiện ở mức độ biến đổi
ảnh mang và sẽ làm cho thông tin được giấu trên ảnh mang trở nên “vô hình”, người dùng sẽ khó nhận
ra hoặc nghi ngờ ảnh có chứa thông tin mật. Đối với ẩn giấu thông tin, việc để phát hiện có dữ liệu nhúng

Mật mã và an toàn dữ liệu K19 3
trong đối tượng chứa gây ra một 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.
1.6. Tránh các thao tác biến đổi trên đối tượng chứa – tính bền vững
Đảm bảo 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
như lọc ( tuyến tính, phi tuyến), thêm nhiễu, làm sắc nét, mờ nhạt, nén mất dữ liệu Tính năng này là
bắt buộc với tất cả các ứng dụng của ẩn dữ liệu. 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.
Tính bền vững là thước đo “sự nguyên vẹn” của tin mật sau khi biến đổi như vậy.
1.7. Dung lượng dữ liệu giấu
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. Dung
lượng dữ liệu giấu được tính bằng tỉ lệ của lượng tin cần giấu so với kích thước ảnh mang tin.
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 giấu. 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 phương pháp hiện đại đều quan tâm đến hai tính năng này là cố gắng giấu được nhiều tin trong
ảnh nhưng vẫn giữ được bí mật.
1.8. Tính an toàn
Mục đích của “Giấu tin” là truyền đi thông tin mật, nên cần đảm bảo không để người khác có thể giải
mã được. Đồng thời phòng tránh trường hợp người khác khi không giải mã được sẽ làm sai lệch tin mật,
hoặc giả mạo tin mật để gây bất lợi cho người nhận.
1.9. Độ phức tạp tính toán
Đây là một tiêu chí quan trọng để đánh giá một phương pháp giấu tin trong ảnh, nó cho biết “tài
nguyên” (thời gian và bộ nhớ) sẽ tiêu tốn bao nhiêu khi dùng cho một phương pháp giấu tin. Chính vì vậy
yêu cầu với người dụng thì thời gian thực hiện phải nhanh nhưng với đối tượng khác thì phải đảm bảo
tính bảo mật nghĩa là việc “Tách tin” là một bài toán khó.
Giới thiệu một số thuật toán giấu tin trong ảnh
Các thuật toán giấu tin trong ảnh thường sử dụng ảnh màu hoặc ảnh đa mức xám làm môi trường
giấu tin, do chúng có môi trường “dày” và vì thế lượng tin có thể giấu được lớn và tính che giấu cao. Giấu

tin trong ảnh nhị phân là một thách thức lớn hơn, vì không như các loại ảnh trên, môi trường giấu tin
trong ảnh nhị phân rất “thưa”, mỗi điểm ảnh của nó chỉ được thể hiện bởi một bit nên sẽ rất dễ bị phát
hiện khi có bất kỳ sự biến đổi nào, ảnh đen trắng số là ảnh nhị phân được thể hiện qua một ma trận điểm
ảnh gồm số 0 hay 1.
Ý tưởng cơ bản của thuật toán giấu tin trong ảnh là chia một ảnh thành các khối nhỏ và với mỗi khối
nhỏ đó sẽ được giấu không quá 1 bit thông tin. Những thuật toán sau cũng có thể dùng cho cả ảnh đen
trắng, ảnh màu và ảnh xám, để đơn giản chúng ta xét các thuật toán giấu tin trong ảnh đen trắng sau
đây.
Mật mã và an toàn dữ liệu K19 4
1.10. Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1
1.10.1. Thuật toán giấu tin
 Yêu cầu bài toán:
Input:
• File ảnh Bitmap đen trắng: FF (sẽ mang tin giấu)
• Khoá: K (để giấu và trích tin), là khóa bí mật và là kích thước của khối nhỏ được tách từ F
• File thông tin cần giấu: Fb
Output:
• File ảnh đã giấu tin file tin mật Fp: FF’

Phương pháp như sau:
1) Tiền xử lí:
• Chuyển file thông tin cần giấu Fb sang dạng nhị phân b.
• Đọc header của ảnh (phần chứa thông tin ảnh) để lấy thông tin ảnh. Sau đó đọc toàn bộ dữ liệu
ảnh vào một mảng hai chiều A để sử dụng cho việc giấu tin.
2) Thuật toán:
Input:
• F là ma trận ảnh mang b là dãy bit bí mật cần giấu (sẽ mang tin giấu)
• Khoá: K (để giấu và trích tin), là khóa bí mật và là kích thước của khối nhỏ được tách từ F
Output:
• F’ là ma trận ảnh đã được giấu dãy bit bí mật b

Bước 1: Chia ảnh mang F thành các khối nhỏ kích thước K (m×n).
Bước 2: Sau khi chia F thành các khối nhỏ, ta chọn các khối để giấu tin, ta có thể chọn ngẫu nhiên các
khối, nhưng để cho đơn giản ta coi như các khối được chọn tuần tự từ khối đầu tiên cho đến khi hết
thông tin cần giấu.
Mỗi khối nhỏ này sẽ được dùng để giấu một bit thông tin theo quy tắc sau:
 Nếu muốn giấu bit 1 vào 1 khối thì phải thỏa mãn điều kiện:
o (L) Tổng các bit 1 trong khối đó là số “lẻ” ( tức là cùng tính lẻ bit 1).
o Nếu muốn giấu bit 1 vào 1 khối nhưng không thỏa mãn điều kiện (L) thì trong khói đó chọn ngẫu
nhiên một bit và thay đổi giá trị của nó (từ 0 thành 1 hay từ 1 sang 0) để thỏa mãn điều kiện (L).
 Nếu muốn giấu bit 0 vào một khối thì phải thỏa mãn điều kiện:
o (C) Tổng các bit 1 trong khối đó là số “chẵn” ( tức là cùng tính lẻ bit 1).
o Nếu muốn giấu bit 0 vào 1 khối nhưng không thỏa mãn điều kiện (C) thì trong khói đó chọn ngẫu
nhiên một bit và thay đổi giá trị của nó (từ 0 thành 1 hay từ 1 sang 0) để thỏa mãn điều kiện (C).
3) Giải pháp thực hiện
Để xử lý các điều kiện trên ta sử dụng tính chất của “đồng dư” để giải quyết bài toán:
Giả sử ta cần giấu một bit dữ liệu b vào khối B. Ký hiệu SUM(B) là tổng số điểm đen trong khối B, kí
hiệu x = y (mod z) cho biết hai số tự nhiên x và y có cùng số dư khi chia cho z (x và y đồng dư theo
Mật mã và an toàn dữ liệu K19 5
modulo z). Như vậy biểu thức x ≡ y (mod 2) cho biết x và y có cùng tính chẵn lẻ vì theo tính chất đối xứng
của “đồng dư” thì x ≡ y (mod 2) tương đương với y ≡ x (mod 2)  Ta quy bài toán về hai trường hợp:
- Trường hợp thứ nhất: SUM(B) = b (mod 2), khối B đã thoả mãn tính chất để giấu bit dữ liệu b,
ta không cần thay đổi và xem như bit b đã được giấu.
- Trường hợp thứ hai: SUM(B) ≠ b (mod 2). Trường hợp này phải sửa B để đảo tính chẵn lẻ của
SUM(B). Dễ thấy ta chỉ cần đảo một bit bất kỳ trong B thì SUM(B) sẽ tăng hoặc giảm 1 đơn vị.
Gọi B’ là khối kết quả thu được từ khối B sau khi đảo một bit trong B. Ta có SUM(B’) = b (mod 2).
1.10.2. Ví dụ minh họa
Ví dụ 1: Giả sử ta phải giấu bit dữ liệu b = 1 vào khối B như sau:
1 0 1 1
0 0 1 0
1 1 0 0

0 0 0 0

Hình 1. Khối B kích thước 4
×
4, SUM(B)=6
Ta đếm số bit 1 trong khối: Trong trường hợp ở trên khối B có 6 bit 1, SUM(B)=6. Do đó, SUM(B) ≠ 1
(mod 2). Như vậy khối B không thoả mãn yêu cầu để giấu bit 1. Muốn giấu bit 1 vào khối này ta cần phải
thay đổi khối bằng cách chọn một bit bất kì và đổi từ 0 sang 1 hoặc từ 1 sang 0. Giả sử thay đổi như hình
sau:
1 0 1 1
0 0 0 0
1 1 0 0
0 0 0 0
Hình 2. Mô tả viêc thay đổi bit. SUM(B') = 5.
Khi đó ta có SUM(B') = 5, và do đó SUM(B') = 1 (mod 2).
Ví dụ 2: Giả sử vẫn với khối B đã cho như trên nhưng ta phải giấu bit dữ liêu b = 0 vào khối đó. Ta
có, do SUM(B) = 6, nên SUM(B) = 0 (mod 2). Khối B được bảo toàn và bit dữ liệu b=0 xem như đã được
giấu.
Với mỗi bit dữ liệu ta lấy một khối để giấu theo quy tắc trên cho đến hết lượng thông tin cần giấu.
Sau khi giấu xong ta được một ma trận hai chiều chứa dữ liệu ảnh mới A’. Bước tiếp theo, ta xây dựng
ảnh mới bằng cách gắn header ảnh gốc đã đọc ra lúc đầu vào A’ để thu được file ảnh mới F’.
Mật mã và an toàn dữ liệu K19 6
Bit bị thay đổi từ 1 →0
0
Trong thuật toán giấu tin này, khoá đơn giản chỉ là kích thước của khối, tức là bộ số (m,n). Nếu biết
kích thước của khối thì dễ dàng giải mã tin theo quy tắc sau:
1.10.3. Quá trình giải tin:
Input:
• F’ là ảnh đã được giấu dãy bí mật b
• K là khóa bí mật, đó là kích thước của khối nhỏ (Được xác định trước)

Output:
• F là ảnh mang (ảnh trước khi giấu tin mật), b là dãy bit bí mật cần giấu
Bước 1:
- Đọc header của ảnh để biết các thông tin ảnh.
- Đọc phần dữ liệu ảnh vào mảng hai chiều (ma trận) F.
Bước 2:
- Chia ảnh F mang thành các khối nhỏ với kích thước K
- Theo một thứ tự xác định trước, xét từng khối nhỏ
o Nếu tổng số bit 1 là “lẻ” thì ta thu được bit giấu là 1
o Nếu tổng số bit 1 là “chẵn” thì ta thu được bit giấu là 0
* Như vậy, sau khi xử lý hết các khối đã giấu, ta thu được một chuỗi bit đã đem giấu b. Bước tiếp theo ta
chuyển từ file nhị phân sang file văn bản.
1.10.4. Mở rộng áp dụng cho ảnh màu và ảnh đa cấp xám
Thuật toán trên mặc dù áp dụng cho ảnh đen trắng nhưng nó cũng có thể sử dụng cho ảnh màu hoặc
ảnh đa cấp xám. Việc áp dụng thuật toán vào các loại ảnh và những điều quan trọng khi áp dụng kỹ thuật
cho từng loại ảnh như sau:
- Các loại ảnh màu và đa mức xám có giá trị của mỗi điểm ảnh được biểu diễn bằng dãy nhiều bit.
Trong dãy các bit này có một bit được gọi là bit ít quan trọng nhất (LSB - Least Significant Bit). Bit ít quan
trọng nhất là bit mà khi ta đảo trị của nó thì điểm màu chỉ bị thay đổi ít nhất. Thí dụ, với ảnh đa mức xám,
mỗi mức xám được biểu diễn qua một số nguyên không âm, thì mức xám m sẽ sai khác ít nhất so với hai
mức xám liền kề là m-1 hoặc m+1.
- Trong trường hợp này bit ít quan trọng nhất chính là bit thấp nhất trong dạng biểu diễn nhị phân
của m. Đảo bit này ta sẽ làm thay đổi mức xám m thành m-1 hoặc m+1.
- Hầu hết các thuật toán giấu tin trên ảnh màu và ảnh đa cấp xám thường sử dụng gián tiếp thuật
toán giấu tin trên ảnh đen trắng theo các bước sau:
Bước 1: Tạo ảnh đen trắng G từ ảnh màu F bằng một kỹ thuật nào đó, thí dụ, lấy từ mỗi điểm màu trong
F một bit ít quan trọng nhất để làm một điểm ảnh cho G.
Bước 2: Giấu tin vào ảnh đen trắng G để thu được ảnh đen trắng G’.
Bước 3: Đưa lại các bit của G’ vào mỗi điểm ảnh màu tương ứng của F để thu được ảnh màu kết quả là
F’.

Mật mã và an toàn dữ liệu K19 7
1.11. Kỹ thuật giấu tin M.Y.WU – J.H.LEE
Đây là thuật toán giấu tin kinh điển trong ảnh đen trắng của M.Y.WU – J.H.LEE đề xuất vào năm 1989
Mục tiêu của thuật toán là giấu càng nhiều tin vào ảnh càng tốt. Ý tưởng của thuật toán cũng theo như
phần chung của các thuật toán giấu tin trong ảnh là chia ảnh ra thành các khối m x n bằng nhau, tìm khối
nào ít bị phát hiện nhất (tức vùng yếu nhất trên ảnh) thì giấu 1 thông tin vào khối đó. Các yêu cầu cơ bản
đặt ra với thuật toán là:
 Nâng cao tính bảo mật
 Giảm tối đa độ sai lệch của khối ảnh - F: mức độ sai lệch của khối ảnh F trước và sau khi giấu tin
là tối thiểu,
 Tăng tối đa lượng bit dữ liệu giấu được - r: lượng bit dữ liệu giấu được là lớn nhất trên cơ sở
đảm bảo tính chất trên.
 Ảnh chứa tin giấu (ảnh đích) bền vững trước một số phép biến đổi ảnh,
 Tốc độ của thuật toán giấu và trích tin cao.
Trong phần này giới thiệu chi tiết một thuật toán giấu thông tin trong ảnh đen trắng do M.Y.Wu và
J.H.Lee đế xuất vào năm 1989 [6]. Thuật toán được thực hiện trên ảnh đen trắng, mỗi khối giấu được tối
đa 1 bit dữ liệu (r=1) trên cơ sở đảo trị tối đa 1 bit trong khối.
1.11.1. Các phép toán với các bit
Gọi a và b là hai bit tuỳ ý, ta định nghĩa phép toán and bit kí hiệu là ^ trên hai bit a và b, a∧b cho ta
giá trị 1 khi và chỉ khi a=b=1, trong các trường hợp còn lại, a ^ b=0.
Ta định nghĩa phép toán cộng loại trừ (hay gọi là phép toán so khác – XOR), kí hiệu là ⊕ trên hai bit a
và b, a⊕b sẽ cho ta giá trị 1 nếu a

b và giá trị 0 nếu a=b.
a b
a ∧b a⊕b
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Hình 3. Các phép toán ∧ và ⊕.
Với mỗi ma trận A ta ký hiệu A[i,j] là phần tử trên hàng i, cột j của A.
Hai phép toán trên cũng được mở rộng cho các dãy bit hoặc cho các ma trận bit. Với hai ma trận bit
A và B cùng kích thước m × n ta định nghĩa
A ∧ B = C, trong đó C[i,j] = A[i,j] ∧ B[i,j], 1 ≤ i ≤ m, 1 ≤ j ≤ n
A ⊕ B = C, trong đó C[i,j] = A[i,j] ⊕ B[i,j], 1 ≤ i ≤ m, 1 ≤ j ≤ n
Trường hợp A và B là hai dãy bit ta đặt n=1.
Ta cũng định nghĩa phép nhân theo vị trí trên hai ma trận số A và B cùng kích thước m × n như sau :
A x B = C, trong đó C[i,j] = A[i,j] × B[i,j], 1 ≤ i ≤ m, 1 ≤ j ≤ n
3.2.2 Thuật toán Wu - Lee
Input:
Mật mã và an toàn dữ liệu K19 8
• F là ảnh mang;
• b là bit bí mật cần giấu;
• K là khóa bí mật (nhị phân - ma trận m x n).
Output:
• F là ảnh đã được giấu bit b bí mật
• Kí hiệu SUM(F) là tổng các số 1 trong ma trận F
Bước 1:
- Chia F thành các khối nhỏ Fi có kích thước m x n (như ma trận K).
Bước 2:
- Với mỗi Fi, kiểm tra điều kiện: 0 < SUM(Fi ^ K) < SUM (K)
- Nếu thỏa mãn điều kiện trên thì chuyển sang bước 3
- Nếu không thỏa mãn điều kiện trên thì giữ nguyên Fi
Bước 3:
- Giả sửa bit cần giấu vào khối Fi là b. Thay đổi Fi như sau:
if ( SUM(Fi ^ K) mod 2 = b) then giữ nguyên Fi (coi như đã được giấu b)
else if ( SUM(Fi ^ K) mod 2 = 1 ≠ b (tức là b=0)) then
Chọn ngẫu nhiên 1 bit thoả mãn Fi[j,k]=0 & K[j,k]=1; lật Fi[j,k] thành 1;
else if (SUM(Fi ^ K) mod 2 = 0 ≠ b (tức là b=1) & SUM(Fi∧K)= SUM(K)–1) then

Chọn ngẫu nhiên 1 bit thỏa mãn F[j,k]=1 & K[j,k] =1; lật F[j,k] thành 0;
else if (SUM(Fi ^ K) mod 2 = 0 ≠ b và SUM(Fi ^ K) ≠ SUM(K)–1) then
Chọn ngẫu nhiên 1 bit thỏa mãn K[j,k] = 1; lật bit Fi[j,k] từ 0 thành 1 hoặc từ 1 thành
0;
return F;
end Wu_Lee.
1.11.2. Ví dụ minh họa
Giả sử ta cần giấu dãy bit D = 011 vào một ảnh F có kích thước 6×6 và một ma trận khoá K có kích
thước 3×3 như trong hình vẽ.
F1 F2 F1’ F2’
Mật mã và an toàn dữ liệu K19 9
1 1 0 1 1 1
Dữ liệu cần giấu: D=011
1 1 0 1 1 1
1 1 1 1 1 0 1 1 1 1 1 1
0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 1 0 0 0
1 1 0 1 1 1 1 1 1 1 1 0 0 1 1
0 1 1 0 1 0 0 1 0 0 1 1 0 1 0
F3 F4 K F’3 F’4

Bước 1: Ta chia ảnh F thành 4 khối nhỏ mỗi khối sẽ có kích thước là 3×3 ta thu được F1, F2, F3, F4. Xét
với lần lượt các khối ảnh trên.
Bước 2:
 Xét với khối ảnh F1:
- SUM(F1∧K) = SUM(K) = 5 ; nên không giấu dữ liệu vào trong F1. Vì không thỏa mãn điều
kiện 0 < SUM(Fi ^ K) < SUM (K).
 Xét tiếp với khối ảnh F2:
- SUM(F2∧K) = 3 thỏa mãn 0 < SUM(Fi ^ K) < SUM (K).
Bước 3:

- Ta có SUM(F2 ^ K) mod 2 = 3 mod 2 = 1 ≠ 0.
- Ta chọn phần tử (2,3) để đảo bit trong khối F2 vì với phần tử này ta có F2[2,3]=0 và K[2,3]=1.
Sau khi đảo bit F2[2,3] ta thu được khối F’2 như trên hình vẽ (bit bị đổi được đánh giấu xám).
 Xét tiếp với khối ảnh F3:
- SUM(F3 ^ K) = 3 và bit cần giấu là bit thứ hai trong D, b=1 mà ta có SUM(F3 ^ K) mod 2 = 3
mod 2 = 1 = b. Khối F3 được giữ nguyên với ý nghĩa là khối đã được giấu bit b=1.
 Xét tương tự tiếp với khối ảnh F4:
- SUM(F4 ^ K) = 4, và bit cần giấu là bit cuối cùng của D, b=1 nên ta có SUM(F4∧K) mod 2 = 4
mod 2 = 0 ≠ b. Ta chọn phần tử (2,1) để đảo bit trong khối F4 vì với phần tử này ta có F4[2,1]=1 và
K[2,1]=1. Sau khi đảo bit F4[2,1] ta thu được khối F’4 như trên hình vẽ (bit bị đổi được đánh giấu xám).

Ta thấy rằng các thuật toán giấu tin trong ảnh đen trắng trên là cơ sở cho các thuật toán giấu tin trong
ảnh khác nói chung.
Lỗ hổng trong các thuật toán giấu tin
1.11.3. Với thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1
Mật mã và an toàn dữ liệu K19 10
Đây là thuật toán rất đơn giản để thực hiện giấu tin trong ảnh, với thuật toán trên ta có một số đánh
giá như sau:
- Với các thuật toán giấu tin trong ảnh đen trắng qua thử nghiệm thấy rằng với kỹ thuật thay
đổi bit ngẫu nhiên, tức là sử dụng mọi khối F
i
để giấu tin và trong trường hợp cần thay đổi một phần tử
trong F
i
lại thay đổi một phần tử bất kỳ miễn sao đạt được bất biến thì chất lượng ảnh sẽ không được tốt,
xuất hiện khá nhiều điểm bất thường sau khi giấu tin.
- Giả sử ta có một khối ảnh và các bit có thể đảo là hai bit được đánh dấu màu xám như trong
hình vẽ dưới đây:
1 1 1 0 1 1 1 0 1 1 1 0
1 0 0 0 1 1 0 0 1 0 0 0

1 0 0 0 1 0 0 0 1 0 1 0
1 0 0 0 1 0 0 0 1 0 0 0
Khối bit ban đầu Đảo bit ở vị trí (2,2) Đảo bit ở vị trí (3,3)
Hình 6. Đảo bit
- Ảnh đen trắng khó giấu hơn do mỗi điểm ảnh chỉ được biểu diễn bởi một bit hoặc 0 hoặc 1. Nếu
như ta đảo bit (từ 0 sang 1 hay ngược lại từ 1 sang 0) thì đều làm xuất hiện trên ảnh những điểm đen,
điểm trắng lạ. Như vậy vấn đề cốt yếu ở đây là làm thế nào hạn chế được tối đa các điểm đen, điểm
trắng lạ và làm thế nào để những bit bị thay đổi đó khó bị phát hiện nhất.
- Việc chọn kích thước khối để giấu tin tuỳ thuộc vào kích thước ảnh và lượng thông tin cần giấu
sao lượng tin giấu giàn trải trên toàn ảnh. Ví dụ, nếu ta có một ảnh kích thước 512 × 512 pixel và có một
lượng thông tin cần giấu là 100 kí tự. Như vậy, file nhị phân thông tin cần giấu sẽ là 100 × 8 = 800 bit 0/1
vì mỗi một kí tự mã ASCII biểu diễn qua 1 byte. Ta có thể thấy để giấu được hết thông tin thì cần ít nhất
800 khối, vậy thì ta nên chia ảnh cho khối giấu và giàn trải trên toàn ảnh. Ta có (512 × 512) / 800 = 327
(dư 544). Với kết quả này, kích thước khối tối đa là 327 vậy thì ta có thể chọn các kích thước phù hợp với
con số này (phù hợp theo nghĩa đủ lớn và dung lượng mỗi khối không vượt quá 327) chẳng hạn như
20×16, 16×16… Việc chọn khối có kích thước lớn vì trong trường hợp các khối bị thay đổi thì khoảng
cách bit bị biến đổi sẽ xa nhau (thưa) làm cho ảnh không bị thay đổi nhiều khi nhìn vào khó phát hiện là
ảnh đã được giấu tin.
- Với thuật toán này có độ an toàn không cao vì chỉ cần biết khóa K (kích thước các khối giấu tin là
có thể dễ dàng tách ra được tin mật. Tuy nhiên, ta có thể làm thuật toán khó hơn bằng cách chọn ngẫu
nhiên một khối chưa giấu ở mỗi lần giấu. Khi đó, ta đã làm tăng được độ an toàn của thuật toán vì khoá
trong trường hợp này còn thêm cả dãy chỉ số khối đã giấu tin cho từng bit. Hoặc ta có thể thay đổi kích
thước khối ở mỗi lần giấu, chẳng hạn như lần thứ nhất chọn khối 4×4, lần thứ hai chọn khối 4×8
1.11.4. Nhận xét đánh giá thuật toán Wu - Lee:
Mật mã và an toàn dữ liệu K19 11
Với thuật toán này chúng ta cùng phân tích khả năng đối phương phát hiện ảnh có giấu tin hoặc
trong trường hợp xấu hơn đối phương có thể phát hiện được khóa mật K.
- Nếu có ảnh gốc F và ảnh đích F’ trong tay, bằng một thủ tục đối sánh đơn giản đối phương có
thể phát hiện ra ảnh có giấu tin hay không theo hệ thức
F = F’: ảnh không bị giấu tin,

F ≠ F’: ảnh có thể bị giấu tin.
- Vì khóa mật K tham gia vào quá trình phân phối thông tin trên các khối. Ta tạm chấp nhận giả
thiết là khóa khóa K là cố định trong mỗi thuật toán giấu tin. Muốn phát hiện khóa K đối phương phải biết
các giá trị m, n biểu diễn kích thước khóa và bản thân nội dung khóa K. Trong một số trường hợp, dù đối
phương không biết chính xác các đại lượng m và n, nhưng có thể suy đoán được phần nào sự bố trí một
số bit 1 trong khóa K thì mức độ an toàn cũng bị đe dọa. Dưới đây sẽ trình bày một số chi tiết nhằm hạn
chế khả năng suy đoán của đối phương:
 Ký hiệu F là khối nhị phân trích từ ảnh nguồn, K là khóa nhị phân cùng kích thước m ×n với F. ~F
là khối phủ định của khối F, nghĩa là khối nhận được từ F bằng cách đảo mọi bit trong F. Theo tính chất
của phép nhân bit theo vị trí ta có các nhận xét sau:
(1) SUM(F ^ K) ≤ SUM(K).
(2) Nếu F là khối toàn điểm trắng, tức là mọi giá trị trong ma trận F đều là 1 thì SUM(F ^ K) =
SUM(K).
(3) Nếu F là khối toàn điểm đen, tức là mọi giá trị trong ma trận F đều là 0 thì SUM(F ^ K)=0.
(4) Nếu F = K thì SUM(F ^ K) = SUM(K).
(5) Nếu F = ~K thì SUM(F ^ K) = 0.
* Lưu ý: Các mệnh đề đảo của các mệnh đề 2 và 3 nói chung là không đúng. Hình dưới mô tả các
phản thí dụ cho các trường hợp trên.
0 1 0 0 1 1 1 0 1
1 1 1 1 1 1 0 0 0
0 1 0 0 1 0 1 0 1
K B1 B2
Hình 5. Các phản thí dụ
 Với khóa K cho trước và hai khối F1 và F2 = ~K, ta thấy:
SUM(F1 ^ K)=SUM(K) = 5, nhưng F1 không phải là khối toàn trắng.
SUM(F2 ^ K)=0, nhưng F2 không phải là khối toàn đen.
 Tuy nhiên, để thận trọng ta thường giả thiết rằng các mệnh đề 2 và 3 là những dấu hiệu nhận
biết một khối ảnh toàn đen hoặc toàn trắng. Khi đó các nguyên tắc sau đây cần được tôn trọng:
Mật mã và an toàn dữ liệu K19 12
(1) Nên chọn ma trận khóa nhị phân K thỏa điều kiện SUM(K) xấp xỉ đại lượng m×n / 2, trong đó m×n

là kích thước của khối. Điều kiện này cho biết nếu khối ảnh F có số điểm đen xấp xỉ số điểm trắng thì khi
sửa một điểm sẽ khó phát hiện.
(2) Không giấu tin vào các khối đồng nhất, nghĩa là các khối ảnh toàn đen hoặc toàn trắng. Điều kiện
này được thể hiện qua các tính chất 2 và 3.
(3) Nếu phải sửa (tức là đảo bit) một bit trong một khối chỉ có một điểm đen duy nhất thì không sửa
điểm đen đó thành trắng mà ngược lại phải chọn một điểm trắng nào đó để sửa thành đen. Điều kiện này
được thể hiện tại bước 3 của thuật toán.
- Việc chọn khoá K nhằm làm tăng độ mật của thuật toán. Nếu với thuật toán trước chỉ cần
biết kích thước khối là m×n 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 khoá K.
- Phép toán F ^ K qui định thuật toán chỉ được phép sửa các bit trong khối B ứng với bit 1
trong khoá K. Như vậy, khoá 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 phép ⊕
- Như đã trình bày ở phần trên, với các khối toàn trắng, toàn đen hoặc giống như khóa K thì
không giấu tin vào khối đó để tránh bị lộ. Điều kiện này được thể hiện qua hệ thức:
0 < SUM(F ^ K) < SUM(K)
Như vậy thuật toán Wu_Lee sẽ chỉ được gọi cho các khối thỏa điều kiện trên.
- Thuật toán thực hiện tối đa một phép đảo một bit của B để thu được hệ thức:
SUM( F ^ K) mod 2 = b
- Việc chọn bit nào trong B để đảo cần tuân thủ theo nguyên tắc: Nếu B∧K có nhiều bit 1 thì
chọn bit 1 để đảo thành 0, ngược lại nếu F ^ K có quá ít bit 1 thì chọn bit 0 để đảo thành 1. Nguyên tắc
này làm giảm khả năng bit đảo bị phát hiện. Có thể dễ dàng kiểm chứng rằng sau khi kết thúc thuật toán
ta thu được hệ thức SUM(F ^ K) mod 2 = b.
- Nhờ hệ thức SUM(F ^ K) mod 2 = b ta có thể giải mã để lấy lại thông tin đã giấu như sau:
Duyệt lần lượt các khối B của ảnh đích. Nếu B thoả điều kiện
0 < SUM(F ^ K) < SUM(K)
thì tính b := SUM(F ^ K) mod 2.
- Vì khoá 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 bit của khối F khi giấu một bit thông tin vào trong khối nên với một khối có kích thước m×n đủ
lớn thì sự thay đổi của F là nhỏ.


Nói chung thuật toán Wu_Lee 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 nếu kích thước m x n đủ lớn thì sự thay đổi trên ảnh
không dễ gì bị phát hiện ra bằng mắt thường
Mật mã và an toàn dữ liệu K19 13
Giải pháp khắc phục:
1.12. Giải pháp 1: Sử dụng ma trận láng giềng
1.12.1. Một số định nghĩa

Định

nghĩa

1.
Phép toán ^ là phép AND từng phần tử của hai ma trận cùng cấp.
Vớ
i
A,

B
là các
ma

trận

cùng
c
ấp

m×n,

ta


C

=

A^B
c
ũng

ma

trận
c
ấp

m×n

trong

đó C[j,k]
=

A[j,k]

AND

B[j,k],


vớ
i j
=

1,

2,

…,

m,

k

=

1,

2,

…,

n.

Định

nghĩa

2.


Phép

toán

SUM(F)

tính
t
ổng
các
phần
t

c

a
m
a
trận

F.

Định

nghĩa

3.

Phần
t



láng

giềng
c

a
phần
t


F[j,k]

phần
t


F[u,v]

thỏ
a
mãn
các
đ
i
ều
kiện:






<−
<−
≤−+−≤
2
2
21
kv
ju
kvju

Định

nghĩa

4.

Ma

trận

láng

giềng
c

a
ma


trận

F
c
ấp

m×n

ma

trận

N
c
ấp

m×n

trong

đó N[j,k]

số

phần
t


láng


giềng

thuộ
c
khố
i
F
c

a
F[j,k]





giá

trị

khác

vớ
i
F[j,k].


dụ
:

Nếu: F=










1 0 0
1 0 0
1 1 1
thì N=










2 2 0
2 5 2
1 2 2
1.12.2. Nội dung thuật toán
Input:

+

F:

Ảnh

nhị

phân

đượ
c
dùng

để

giấu
tin
+

m



n:

Kích

thướ
c c


a
khố
i
con

Fi
c

a
F
+

K:

Ma

trận

nhị

phân
c
ấp

m×n

vớ
i các
giá


trị

đượ
c l

a
chọn

ngẫu

nhiên
+
B:
Dãy
bit c
ần

giấu

vào

F
F

mộ
t
m
a t
rận


nhị

phân



đượ
c
phân

hoạch

thành
các
khố
i
Fi
c
ấp

m×n.

Mỗ
i
khố
i
Fi

sẽ

đượ
c
sử

dụng

để

giấu

mộ
t bit
b
c

a
B

bằng

cách

thay

đổ
i
nhiều

nhấ
t

mộ
t
phần
t


trong

Fi.
Ma

trận

K

khoá



mậ
t,
đượ
c
thỏ
a
thuận

giữ
a
ngườ

i
gử
i


ngườ
i
nhận.

Ngườ
i
gử
i
sử dụng
K

trong

quá

trình

giấu
tin


ngườ
i
nhận


sau

khi



ảnh

F’

chứ
a tin
giấu
c
ần

phả
i


thêm K

để



thể
khôi

phụ

c l

i t
hông
tin
đ
ã
giấu.
Output:
+

F’
:
Ảnh

nhị

phân

chứ
a
dãy
bit
B,

trong

đó

mỗ

i
khố
i
F’i
c
ấp

m×n

mộ
t
phân

hoạch
c

a
F’

giấu

mộ
t bit
b
c

a
B




F’
i
khác

Fi

nhiều

nhấ
t là
mộ
t
bit.
Thuậ
t
toán

thự
c
hiện

giấu
t
ừng
bit
b
c

a

B

tuần
t


vào

mỗ
i
khố
i
Fi
c

a
F

theo
các
bướ
c
sau:
Bướ
c
1:
+

Tính


SUM(Fi)
Mật mã và an toàn dữ liệu K19 14
+

Nếu

SUM(Fi)

=

0

hoặ
c
SUM(Fi)

=

mn
thì
bỏ

qu
a
không

giấu
ti
n


vào

khố
i
Fi

này,

chuyển sang

xét
khố
i
F
i ti
ếp

theo.
+

Nếu

0

<

SUM(Fi)

<


mn
thì
chuyển

sang

bướ
c
2

để

giấu

tin.

Việ
c
giấu
tin
vào

F
i
thự
c
chấ
t là
biến
đổ

i
Fi

thành

F’
i
sao

cho

thỏ
a
mãn

mộ
t
bấ
t
biến

nào

đó.

Bấ
t
biến

này

c
ũng

chính

dấu hiệu

để


thể

khôi

phụ
c l

i
thông
tin
đ
ã
giấu.

Trong

thuậ
t t
oán


này

bấ
t
biến
c
ần

đạ
t
đượ
c là
SUM(F’
i
^

K)

=
b

(mod

2),

nói

cách

khá

c
b

phả
i


cùng

tính

chẵn
l


vớ
i
SUM(F’i

^

K).
Bướ
c
2:
+

Tính

S


=

SUM(Fi

^

K)
+

Nếu

S

=

b

(mod

2)
thì
đ
ã
đạ
t
bấ
t
biến,


do

đó

trường

hợp

này

g
i
ấu

đượ
c
mộ
t bit
vào

Fi

mà không
c
ần

phả
i
biến


đổ
i
Fi.
+

Nếu

S



b

(mod

2)
thì c
ần

phả
i
biến

đổ
i
Fi

sao

cho


đạ
t
đượ
c
bấ
t
biến.

Để
làm
việ
c
này chỉ
c
ần
thay

đổ
i
mộ
t bit
trong

Fi

sao

cho


tính

chẵn
l

c

a
S

thay

đổ
i là
được.

Đây

trường

hợp giấu

mộ
t bit
vào
Fi

bằng

cách


thay

đổ
i
mộ
t
phần
t


trong

Fi.
Tuy

nhiên

qu
a
thử

nghiệm

thấy

rằng

vớ
i

kỹ

thuậ
t
thay

đổ
i bit
ngẫu

nhiên,
t

c là
sử

dụng mọ
i
khố
i
Fi

để

giấu
tin


trong


trường

hợp
c
ần

thay

đổ
i
mộ
t
phần
t


trong

Fi
l

i
thay

đổ
i
mộ
t
phần
t



bấ
t
kỳ
mi
ễn

sao

đạ
t
đượ
c
bấ
t
biến
thì
chấ
t l
ượng

ảnh

sau

khi

giấu


sẽ

không

đượ
c t

t,
xuấ
t
hiện

khá
nhiều

đ
i
ểm

bấ
t
thường.

Do

đó

mộ
t
vấn


đề

đượ
c
đặ
t
ra
là c
ần

mộ
t
kỹ

thuậ
t
thay

đổ
i bit


chọn
l

c:
xác
định


đúng
các
khố
i
Fi

để

giấu
tin


vị
trí
phần
t

c
ần

thay

đổ
i
trong

Fi

s
a

o cho

ảnh
ít
bị

ảnh

hưởng
nhấ
t.
Trong

bướ
c
1,

để

tránh

giấu

vào
các
khố
i
toàn

m

à
u

đen

hoặ
c
toàn

màu

trắng,
ta
đ
ã
đư
a
ra đ
i
ều
kiện

chỉ

giấu

vào
các
khố
i

Fi
t
hỏ
a
m
ã
n

0

<

SUM(Fi)

<

mn.

Trong

bướ
c
2

này,



trường hợp


giấu
bit
b
m
à c
ần

phả
i
thay

đổ
i
mộ
t
phần
t

c

a
khố
i
Fi
t
h
ì ta
không

thay


đổ
i
ngay

mộ
t
phần
t


bấ
t
kỳ

m
à
chuyển

sang

bướ
c
3

để

xác

định


phần
t


thích

hợp

nhấ
t.
Bướ
c
3:
+

Xây

dựng

ma

trận

láng

giềng

Ni
c


a
ma

trận

Fi
+

Xác

định

phần
t


Ni[j,k]



giá

trị
l
ớn

nhấ
t
trong


ma

trận

Ni

m
à


K[j,k]

=

1
+

Thay

đổ
i
phần
t


F
i
[j,k]
Vớ

i
tính

chấ
t c

a
m
a
trận

láng

giềng
thì


ràng

nếu

Ni[j,k]



giá

trị
l
ớn


nhấ
t


K[j,k]

=

1
thì
sau

khi
thay

đổ
i
F
i
[j,k]
ta
sẽ

nhận

đượ
c
F’i


thỏ
a
mãn

bấ
t
biến



F’i[j,k]



nhiều

phần
t
ử láng

giềng

giống


nhấ
t,
do

đó


sẽ

hạn

chế
các
đ
i
ểm

bấ
t
thường

v
à
nâng

cao

đượ
c
chấ
t l
ượng ảnh sau khi giấu tin
1.12.3. Ví dụ minh họa
Nếu F
i
=











1 0 0
1 0 0
1 1 1
Thì N
i
=










2 2 0
2 5 2
1 2 2
Chọn K=











0 0 1
1 1 0
0 1 1
Giả sử bit cần giấu vào Fi là bit 0.
Vì SUM(Fi) = 5 thỏa mãn 0 < SUM(Fi) < 9 nên có thể sử dụng Fi để giấu tin. Vì SUM(Fi ^ K) = 3 khác tính
chẵn lẻ với 0 nên để giấu được bit 0 vào Fi cần phải thay đổi một phần tử trong Fi. Do Ni[2,2] có giá trị lớn
Mật mã và an toàn dữ liệu K19 15
nhất và K[2,2] = 1 nên phần tử được chọn để thay đổi là Fi[2,2].
Kết quả sau khi giấu bit 0 vào Fi, có F’i =










1 0 0

1 1 0
1 1 1

Nhận
xét:
-
Việ
c l

a
chọn

khóa

K

hoàn

toàn

ngẫu

nhiên,

do

đó

số


khả

năng
l

a
chọn

có thể

lên

đến
2mn.

Khi

K

càng



nhiều
bit
0
thì
xác

suấ

t
để
các
phần
t


Ni[j,k]
c
ó

giá

trị
l
ớn

nhấ
t
trong

m
a
trận

láng

giềng





K[j,k]

=

1

càng

nhỏ,



thế

sẽ

hạn

chế

khả

năng
l

a
chọn


phần
t

t

t
nhấ
t
để

thay

đổ
i.
Tấ
t
nhiên,
nếu

K

gồm

toàn
bit
0
thì ta
không

thể


sử

dụng



trong

thuậ
t
toán

này

để

giấu
tin
được.
-
Với tính chất của ma trận láng giềng thì rõ ràng nếu Ni[j,k] có giá trị lớn nhất và K[j,k] = 1 thì sau
khi thay đổi Fi[j,k] ta sẽ nhận được F’i thỏa mãn bất biến và F’i[j,k] có nhiều phần tử láng giềng giống nó nhất,
do đó sẽ hạn chế các điểm bất thường và nâng cao được chất lượng ảnh sau khi giấu tin.
1.12.4.
Khôi

phụ
c l


i
tin

giấu:
Thuậ
t
toán

này


t
hể

khôi

phụ
c l

i
thông
ti
n

đ
ã
giấu

m
à

không
c
ần



ảnh

gốc.

Để

khôi phụ
c
thông
ti
n
c
ần:

ảnh

nhị

phân

F’


c

hứ
a tin
giấu

v
à
m
a
trận

khóa

K
c
ấp

m×n.

Qui

trình

khôi phụ
c tin
đượ
c
thự
c
hiện


ngượ
c
vớ
i
qui

trình

giấu

tin,

theo
các
bướ
c:
+

Phân

hoạch

F’

thành
các
khố
i
F’
i c

ấp

m×n,

sau

đó

thự
c
hiện

tuần
t


trên
các
khố
i
F’i
các
công
việ
c
sau:
+

Tính


SUM(F’i)
+

Nếu

SUM(F’i)

=

0

hoặ
c
SUM(F’i)

=

mn
thì
chuyển

sang

khố
i
F’
i ti
ếp
t
heo




trong

khố
i
F’i

này
không


tin
giấu.
+

Nếu

0

<

SUM(F’i)

<

mn
thì
chứng

t


trong

khố
i
F’i

này


tin
giấu,


ta c
ần

khôi

phụ
c l

i bit
thông
ti
n

này.

Tính

giá

trị

b

=

SUM(F’i

^

K)

mod

2,



b

chính
là bit
đ
ã
đượ
c

giấu

trong

F’
i.
1.12.5. Kết quả thực nghiệm
Mật mã và an toàn dữ liệu K19 16
1.13. Giải pháp 2: Sử dụng hệ số phân bố bit D.
1.13.1. Thuật toán
Hệ số phân bố bit D là một đại lượng đặc trưng cho mức độ rời rạc của các bit 0,1 trên một ma
trận điểm ảnh và được tính theo công thức sau:
Giả sử ta có một ma trận A chứa các điểm ảnh 0/1 cỡ m×n. Ta tính:
Trong đó :

D
h
là hệ số phân bố bit theo chiều ngang:
∑∑
=

=
+⊕=
m
i
n
j
h
jiAjiA
D

1
1
1
])1,[],[(

D
v
là hệ số phân bố bit theo chiều dọc:
∑∑
=

=
+⊕=
n
j
m
i
v
jiAjiA
D
1
1
1
]),1[],[(

D
c
là hệ số phân bố bit theo đường chéo thứ nhất:
∑∑
=


=
+−⊕=
m
i
n
j
c
jiAjiA
D
2
1
1
])1,1[],[(

D
a
là hệ số phân bố bit theo đường chéo thứ hai:
Mật mã và an toàn dữ liệu K19 17
D = D
h
+ D
v
+ D
c
+D
a
∑∑

=


=
++⊕=
1
1
1
1
])1,1[],[(
m
i
n
j
a
jiAjiA
D
với ⊕ là phép toán cộng loại trừ, x ⊕ y = 1 khi và chỉ khi x≠y.
Thực chất là nếu ta duyệt các phần tử của ma trận theo từng dòng và đếm số lần chuyển màu (từ 1
sang 0 hoặc từ 0 sang 1) thì hệ số phân bố ngang D
h
chính là tổng số lần chuyển màu tính theo các
dòng, hệ số D
v
là tổng số lần chuyển màu tính theo cột, hệ số D
c
là tổng số lần chuyển màu tính theo
đường chéo thứ nhất, hệ số D
a
là tổng số lần chuyển màu tính theo đường chéo thứ hai.
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Số lần chuyển màu
tính theo hàng Dh
Số lần chuyển màu
tính theo cột Dv
Số lần chuyển màu
tính theo đường
chéo 1 Dc
Số lần chuyển màu
tính theo đường
chéo 2 Da
Hình 7. Hệ số phân bố bit theo các hướng.
1.13.2. Ví dụ minh họa
Cho ma trận nhị phân F 4×4 như sau:
Khi đó ta có các hệ số phân bố bit theo các chiều là:
* D
h
= 2 + 2 + 3 + 2 = 9
* D
v
= 2 + 1 + 1 + 2 = 6
* D
c
= 1 + 1 + 2 + 2 + 1 = 7
* D
a
= 1 + 1 + 2 + 1 = 5
Suy ra hệ số phân bố bit 0,1 trên B là:
D = D

h
+ D
v
+D
c
+D
a
= 9 +6 +7 + 5 = 27
1.13.3. Nhận xét đánh giá
Nếu D càng nhỏ thì mức độ rời rạc càng thấp tức là độ dính kết giữa các bit 0,1 càng lớn. Và áp dụng
trong thuật toán này ta sẽ chọn cách đảo bit nào có D nhỏ nhất. Bởi vì , theo như ví dụ trên thì ta tính D
cho cả hai trường hợp (cách đảo bit ở b và ở c ) thì thấy rằng:
* Theo trường hợp b) D = 4 + 2 + 1 + 5 =12
* Theo trường hợp c) D= 6 + 4 + 5 + 7 = 22
Mật mã và an toàn dữ liệu K19 18
1 1 0 1
0 0 1 0
1 0 1 0
1 0 1 1
Vì D ở trường hợp b sẽ tốt hơn D ở trường hợp c tức là: D(b) < D(c) nên ta chọn theo cách D(b).
Điều này trùng với nhận xét trực quan ở trên.
Như vậy thuật toán này đã hạn chế giấu tin vào những khối có tỉ lệ bit đen rất thấp hoặc rất cao, vì
khi giấu thông tin sẽ có rất ít các khả năng đảo bit. Bit đảo sẽ rất dễ bị phát hiện. Và trong một số trường
hợp trên, ảnh có những khối toàn trắng hoặc toàn đen thì không nên giấu thông tin vào các khối đó.
1.14. Giải pháp 3: Áp dụng thuật toán HT để giấu tin trong ảnh
1.14.1. Ý tưởng thuật toán giấu tin HT
Các t
hu
ật t
o

á
n

g
iấ
u
ti
n
mật ở t
r
ê
n
c
ó
m

t
đ
iểm c
hung
là t
ùy
t
h
e
o

b
it t
hông

ti
n

đ
a
ng
cầ
n

g
iấ
u

v
à
g
iá t
r
ị các
đ
iểm t
rong

khố
i ả
nh

gố
c
đ

a
ng

x
ét
,
tiế
n

h
à
nh

b
iế
n

đổ
i
khố
i ả
nh

gố
c
đ

đ
ạt
đ

ế
n
m

t
b
ất
b
iế
n

n
à
o

đó
làm tiê
u
c
huẩn
c
ho

qu
á t
r
ì
nh
l


c tìm lại t
hông
ti
n

g
iấ
u. Kỹ thuật giấu tin này d
ựa t
r
ê
n
ý
tưở
ng

nhúng

d
ã
y
k
b
it
b
=
(b
1
,


b
2
,

,

b
k
)

v
à
o

d
ã
y

n

b
it x=
(
x
1
,
x
2
,


,
x
n
),

v
ới
n
=
2
k
-1

v
à
c
h
ỉ t
h
a
y

đổ
i t

i
đ
a
1


b
it t
rong

d
ã
y
x
.
V
í
dụ
: Cầ
n

nhúng

d
ã
y

2

b
it
b
=
(b
1
,


b
2
)

v
à
o

d
ã
y

3

b
it x=
(
x
1
,
x
2
,
x
3
),
t
uỳ


qu
a
n

h

g
iữa các
b
it
c

a
b

v
à x
,
t
h
ực
h
iệ
n
:
N
ế
u b
1
= x

1
x
3
,

b
2
= x
2
x
3
t
h
ì
g
iữ
nguy
ê
n
x
N
ế
u b
1
≠ x
1
x
3
,


b
2
= x
2
x
3
t
h
ì
đ

o

b
it x
1
N
ế
u b
1
= x
1
x
3
,

b
2
≠ x
2

x
3
t
h
ì
đ

o

b
it x
2
N
ế
u b
1
≠ x
1
x
3
,

b
2
≠ x
2
x
3
t
h

ì
đ

o

b
it x
3
Như vậy biến đổi x thành x’ = (x1’, x2’, x3’) theo quá trình trên ta luôn có:
b
1
= x
1’

x
3’
,

b
2
= x
2’
x
3’
đây chính là các công thức sử dụng cho quá trình tách lấy thông tin đã
giấu.
1.14.2. Thuật toán giấu tin HT (gi
ấu

chuỗ

i
k

b
it
b

vào

chuỗ
i
n

b
it
x)

Đ

nh

ngh
ĩ
a:

Ph
é
p
c
ộng


không

nh
ớ các
số

nh

ph
â
n,



h
iệ
u

đ
ược
đ

nh

ngh
ĩa
nh
ư
s

a
u
:
1

1
=
0
;
1

0
=
1
;
0

1
=
1
;
0

0
=
0
Từ
đ

nh


ngh
ĩa ta c
ó

nh
c
h
ất:
b

b
=
0

v
ới m

i
số

nh

ph
â
n

b.

Quá

t
r
ì
nh

g
i
ấu
ti
n
Tiế
n

h
à
nh

nhúng
c
huỗ
i
k

b
it
b
=
(b
1
,


b
2
,

,

b
k
)

v
à
o
c
huỗ
i
n

b
it
x
=
(x
1
,

x
2
,


,

x
n
)

đ

đ
ược c
huỗ
i
x’
t
h
e
o

các
b
ước:
Bước 1: Tính ,
t
rong

đó

db(
i

)

b
iể
u

d
iễ
n

nh

ph
â
n
c

a i
Bước 2: Tính

s
=
b
f
(x)
Bước 3:

N
ế
u


s
=
0
t
h
ì lấ
y

x’
=
x,

ng
ược lại
đ

o

b
it ở
v
ị t
r
í
s
t
rong

x


đ

đ
ược
x’
t
h
e
o
c
ông
t
h
ức:
x’
=
(x
1
,

x
2
,

,

1-x
s
, ,


x
n
)
1.14.3. Quá trình tách tin
Mật mã và an toàn dữ liệu K19 19
Qu
á t
r
ì
nh
l

c tìm lại
b
từ c
huỗ
i
x’

đ
ược t
h
ực
h
iệ
n
t
h
e

o
c
ông
t
h
ức:
b
=f
(x’)
1.14.4. Tí
nh

đúng

đắn
c
ủa
t
huậ
t t
oán
Qu
á t
r
ì
nh

g
iấ
u


v
à tác
h
ti
n

nh
ư t
r
ê
n

đ
ảm
b

o
c
h
ỉ t
h
a
y

đổ
i t

i
đ

a
1

b
it t
rong
c
huỗ
i
n

b
it
gố
c
x

v
à l
uôn
tác
h

đ
ược
đúng

d
ã
y


k

b
it
b

đ
ã
g
iấ
u.
T
h
ực
v

y
:
V
ới
s

0,
từ c
ông
t
h
ức:
s

=
b
f
(x)

s
f
(x)
=
b
f
(x)
f
(x)

b
=
s
f
(x)


b
=
s

(db(1).x
1

db(2).x

2


db(s).x
s
db(n).x
n
)
Do

s
=
db(s)

v
à
db(s)

db(s)
=
0

n
ê
n

đ
ược:
b
=

db(1).x
1

db(2).x
2


db(s).(1-x
s
)



db(n).x
n
= f
(x’)
V
ới
s
=
0,

do

x’
=
x

n

ê
n
c
ó

b
= f
(x)
= f
(x’)
Nh
ư
v

y,
t
rong
m

i t
r
ườ
ng

h

p
ta
đ


u
c
ó

v
iệc
nhúng
c
huỗ
i
b
it t
hông
ti
n
mật
b

v
à
o
c
huỗ
i
b
it
gố
c
x


đ

đ
ược
x’
l
uôn

đ
ảm m

t
b
ất
b
iế
n

b
=f
(x’).

Đ
â
y
c
h
í
nh


y
ế
u
t


đ
ảm
b

o
c
ho

v
iệc tìm lại
đ
ược c
h
í
nh

x
ác t
hông
ti
n

đ
ã

g
iấ
u.
1.14.5.
V
í
dụ

v

quá

t

nh

g
i
ấu




c
h

t
i
n
X

ét
v
ới
k
=
3,

n
=
7,
c
huỗ
i
b
it
gố
c
x
=
1001101,
c
huỗ
i
b
it cầ
n

g
iấ
u


b
=
100

Qu
á t
r
ì
nh

g
iấ
u
c
huỗ
i
b

v
à
o
x
đ

đ
ược x

t
h

ực
h
iệ
n

nh
ư
s
a
u
:
Bước 1: Tính =
=
1.db(1)

0.db(2)

1.db(3)

1.db(4)

1.db(5)

0.db(6)

1.db(7)
=
1

0


0

100

101

0

111
=
111
Bước 2: Tí
nh

s
=
b
f
(
x
)
=
100

111
=
011
=
3

Bước 3: Do

s
=
3

0,

đ

o

b
it ở
v
ị t
r
í
3
t
rong
x
đ
ược x

=
1011101

Qu
á t

r
ì
nh

g
iải ti
n
từ x


đ
ể tìm lại
b

đ
ược t
h
ực
h
iệ
n

nh
ư
s
a
u
:

nh


b
= f
(
x
’)
= 1.db(1) 0.db(2) 1.db(3) 1.db(4) 1.db(5) 0.db(6) 1.db(7)
=
1

0

11

100

101

0

111
=
100
1.14.6. Áp dụng thuật toán để giấu tin trong ảnh nhị phân
 B
à
i t
oán
: C
ó

m

t ả
nh
c
hủ

nh

ph
â
n

F,

k
íc
h
t
h
ước
M
×
N,
m

t t
hông

đ

iệ
p

b
í mật
đ
ã c
huy

n s
a
ng

d

ng

nh

ph
â
n

H

gồ
m
s

b

it
.
T
h
ực
h
iệ
n

g
iấ
u

H

v
à
o

F

v
à tác
h
tìm lại
H
từ ả
nh

đ

ã
g
iấ
u
ti
n.
Đ
ể t
h
ực
h
iệ
n

b
ài t
o
á
n
t
r
ê
n,

kh
i
s

dụng
t

hu
ật t
o
á
n

H
T cầ
n
c
h
ia
H
t
h
à
nh

r

đo

n
c
ó

độ

d
ài


k
b
it; ả
nh

F

c
ũng
c
h
ia t
h
à
nh

r

đo

n
c
ó

độ

d
ài
n


2
k
-1

b
it
.

Mỗ
i
đo

n
k
b
it c

a
H

s

đ
ược
g
iấ
u

v

à
o
m

t
đo

n

n

b
it c

a
F.

Nh
ư
v

y,

kh

n
ă
ng

g

iấ
u
ti
n
t
rong
m

i
đo

n

s
ẽ là
v
à
đ

g
iấu
đ
ược
h
ết
s

b
it c


a
H

v
à
o

M
×
N

b
it c

a
F
t
h
ì k
ph
ải là
số
t
ho
ả mã
n .
 T
hu
ật t
o

á
n

Quá
t
r
ì
nh

g
i
ấu
ti
n
:
Mật mã và an toàn dữ liệu K19 20
Input: Ảnh

nh

ph
â
n

F

k
íc
h
t

h
ước
M
×
N
; c
huỗ
i
b
it cầ
n

g
iấ
u

H
c
ó

độ

d
ài
s
Output:
Ảnh

đ
ã

g
iấ
u
ti
n

F'

v
à
g
iá t
r
ị k
.
T
h
ực
h
iệ
n
:
- C
họn
k là
số
tự
nh

n

lớ
n

nh
ất t
ho

(4)
- C
h
ia
H
lầ
n
lượt t
h
à
nh
các
đo

n
c
ó

độ

d
ài k
b

it
,

số

đo

n

s
ẽ là
r = s / k

. Ký

h
iệ
u
các
đo

n
là Hi
(i=1 r)
-
C
huy

n


F
t
h
à
nh
c
huỗ
i
gồ
m
M
×
N

b
it
,

rồ
i c
h
ia lầ
n
lượt t
h
à
nh
các
đo


n
c
ó

độ

d
ài
2
k
-1

b
it
, khi đó số
đoạn có được sẽ là Ký hiệu các đoạn là Fi (i=1 r). Như vậy, số đoạn bit gốc đủ để giấu số
đoạn thông điệp bí mật.
-
Lần lượt nhúng chuỗi k bit Hi vào chuỗi Fi (i=1 r) theo thuật toán HT để được chuỗi Fi’ đã chứa tin
giấu.
-
Chuyển chuỗi bit F1’ F2’ … Fr’ thành ảnh F' kích thước M×N.
 Quá trình tách tin
Input
:
Ảnh

nh

ph

â
n

F'

k
íc
h
t
h
ước
M×N
;
g
iá t
r

Output
:
Chuỗ
i
b
it
H
tác
h

r
a từ ả
nh


F'.
Th
ực
h
iệ
n
:
-
Chuy

n

F'
t
h
à
nh
c
huỗ
i
gồm

M×N

b
it
,

rồ

i c
h
ia lầ
n
lượt t
h
à
nh
các
đo

n
c
ó

độ

d
ài
2
k
-1

b
it.
-
Lần lượt áp dụng thuật toán tách bit HT đối với các đoạn 2k-1 bit ở trên để được các đoạn k
bit.
-
Ghép các đoạn k bit để được chuỗi bit H.

1.14.7.
Đánh

g
i
á
t
huậ
t t
oán

g
i
ấu
ti
n

HT
Các lược
đồ

g
iấ
u
ti
n
sửa dụng chẵn lẻ bit 1
v
à Wu-Lee c
ho


ph
é
p

nhúng

1

b
it
v
à
o
m

t
khố
i ả
nh

gố
c
gồ
m

n

b
it

v
à
ph
ải t
h
a
y

đổ
i t

i
đ
a
1

b
it c

a
khố
i ả
nh

gố
c; lược
đồ

g
iấ

u
ti
n
C
P
T c
ho

ph
é
p

nhúng

r

b
it
v
à
o
khố
i ả
nh

gố
c
gồ
m m×
n


b
it
v
ới
2
r
< m×
n

v
à
ph
ải t
h
a
y

đổ
i
nh
iề
u

nh
ất
2

b
it t

rong

khố
i ả
nh

gố
c
.
Nh
ư
v

y,

đ

g
iấ
u

đ
ược k
b
it t
hông
ti
n,
lược
đồ

C
P
T cầ
n
c
ó
ít
nh
ất m×
n
=
2
k
+
1

b
it
gố
c;
t
hu
ật t
o
á
n
c
húng
t
ô

i
đ

xu
ất t
rong

b
ài
b
á
o

n
à
y
cầ
n

2
k
-1

b
it
gố
c
.
C
húng

t
ô
i tiế
n

h
à
nh

đ
á
nh

g
iá các t
hu
ật t
o
á
n

g
iấ
u
ti
n
t
h
e
o

m

t
số

y
ế
u
t

:
-

Kh

n
ă
ng

g
iấ
u
:
AH
=
100*k
/
n

%

-

nh

N
n
:
HH
=
100*I(k)
/
n

%
T
rong

đó
: k là
số

b
it c
ó
t
h

g
iấ
u,


n

số

b
it
gố
c t

i t
h
iể
u

đ

g
iấ
u

đ
ược k
b
it
,

I(
k
)


số

b
it t

i
đ
a c
ó
t
h

ph
ải
đ

o

kh
i
g
iấ
u
k
b
it
v
à
o


n

b
it
gố
c
.

G
iá t
r

AH

ng
lớ
n
t
h

h
iệ
n

dung
lượ
ng
ti
n

c
ó
t
h

g
iấ
u
ca
o
;
HH


ng

nhỏ
t
h

h
iệ
n

s
a
u

kh
i

g
iấ
u
ti
n

d
ữ liệ
u
c
h
ứa ít
b
ị t
h
a
y

đổ
i
so

v
ới
d
ữ liệ
u gố
c
.
Kết luận

Mật mã và an toàn dữ liệu K19 21
Trên đây là phần tìm hiểu, trong khoảng thời gian có hạn nên em chỉ đưa ra nghiên cứu, phân tích về
các lỗ hổng và giải pháp khắc phục về một số thuật toán giấu tin cơ bản trên.
Qua phân tích đánh giá trên, nhận thấy điểm hạn chế lớn của các phương pháp giấu tin trong ảnh
trên đều dựa vào việc điều chỉnh các giá trị của các bit theo một quy tắc nào đó và khi giải mã sẽ theo
các giá trị đó để tìm được thông tin đã giấu. Do vậy nếu ảnh bị biến đổi bằng một phép biến đổi nào đó
làm thay đổi giá trị của các bit thì thông tin giấu bị sai lệch.
Để giải quyết vấn đề này theo tìm hiểu của mình em xin đề xuất cho hướng nghiên cứu tiếp theo là
kỹ thuật “Giấu tin trong miền tần số” – kỹ thuật này áp 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ố. Thuỷ
vân 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. Đây
là kĩ thuật phổ biến nhất với nhiều thuật toán và được hứa hẹn là một phương pháp tốt giải quyết vấn đề
đảm bảo các thuộc tính quan trọng của thuỷ vân sau khi giấu.
Mật mã và an toàn dữ liệu K19 22
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Trịnh Nhật Tiến, Giáo trình An toàn dữ liệu, Đại học quốc gia Hà Nội – Trường Đại học công nghệ
2. Nguyễn Xuân Huy, Bùi Thị Thuý Hằng (2001), Một số cải tiến của kĩ thuật giấu dữ liệu trong ảnh, Kỷ
yếu Hội nghị kỷ niệm 25 năm thành lập Viện Công nghệ thông tin, Hà Nội 24-25/12/2001, 553-559.
3. Phạm Văn Ất, Nguyễn Hữu Cường, Đỗ Văn Tuấn (2007),Giấu tin trong ảnh nhị phân và ứng dụng,
Tạp chí Khoa học Giao thông vận tải, số 19 tháng 9 năm 2007.
4. Nguyễn Văn Tảo (Khoa Công nghệ thông tin - ĐH Thái Nguyên), Một thuật toán giấu tin và áp dụng
giấu tin mật trong ảnh, Tạp chí Khoa học & Công nghệ - Số 4(44) Tập 2/Năm 2007.
5. Nguyễn Hiếu Cường, Một số thuật toán mới giấu tin trong ảnh nhị phân sử dụng tính chẵn lẻ của các
khối bit, Khoa CNTT – ĐH Giao thông vận tải).
6. Dương Minh Đức, Dương Anh Đức, Kỹ thuật ẩn thông tin trên ảnh dự trên điều biến lượng tử và biến
đổi Contoulet, Tạp chí phát triển KH&CN, Tập 12, Số 11 – 2009.
Tiếng Anh
1. M. Wu, J. Lee (1998), A novel data embedding method for two-color fascimile images. In Proceedings
of international symposium on multimedia information processing. Chung-Li, Taiwan, R.O.C.

2. Y. Chen, H. Pan, Y. Tseng (2000). A secure data hiding scheme for two-
color images. In IEEE symposium on computers and communications.
Mật mã và an toàn dữ liệu K19 23

×