ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
VŨ THỊ TÂM
TÌM HIỂU XÂY DỰNG THUẬT TOÁN GIẤU
TIN MẬT VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN – 2018
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
VŨ THỊ TÂM
TÌM HIỂU XÂY DỰNG THUẬT TOÁN GIẤU
TIN MẬT VÀ ỨNG DỤNG
Chuyên ngành: Khoa học máy tính
Mã số: 8 48 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS HỒ VĂN CANH
THÁI NGUYÊN - 2018
i
LỜI CAM ĐOAN
Trong quá trình làm luận văn tôi hoàn toàn sử dụng những kiến thức đã
tổng hợp được từ các nguồn tài liệu có xuất xứ rõ ràng và được trích dẫn hợp
pháp.
Tôi xin chịu trách nhiệm về những lời nói trên và nhận mọi hình thức
kỷ luật theo quy định nếu như làm sai.
Thái Nguyên, tháng 06 năm 2018
Vũ Thị Tâm
ii
LỜI CÁM ƠN
Để hoàn thành luận văn “Tìm hiểu xây dựng thuật toán giấu tin mật và
ứng dụng” em đã nhận được sự hướng dẫn và giúp đỡ nhiệt tình của nhiều
tập thể và cá nhân.
Trước hết, em xin bày tỏ lòng biết ơn chân thành đến ban lãnh đạo
cùng quý thầy cô trong khoa Công nghệ thông tin – Trường Đại học Công
nghệ và truyền thông, Đại học Thái Nguyên đã tận tình dạy dỗ, truyền đạt
kiến thức, kinh nghiệm và tạo điều kiện thuận lợi cho em trong suốt thời gian
học tập và thực hiện đề tài.
Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn
TS. Hồ Văn Canh, người đã gợi cho em những ý tưởng về đề tài, đã tận tình
hướng dẫn và giúp đỡ để đề tài được thực hiện và hoàn thành.
Xin trân trọng gửi đến gia đình, bạn bè và người thân những tình cảm
tốt đẹp nhất đã giúp đỡ động viên trong suốt khóa học và hoàn thành luận
văn.
Thái Nguyên, tháng 06 năm 2018
Học viên
Vũ Thị Tâm
iii
DANH MỤC HÌNH
Hình 2. 1: Hai lĩnh vực chính của kỹ thuật giấu thông tin ............................. 19
Hình 2. 2: Lược đồ chung cho quá trình giấu tin ........................................... 20
Hình 2. 3: Lược đồ chung cho quá trình giải mã ........................................... 21
Hình 2. 4: Phân loại các kỹ thuật giấu tin ...................................................... 24
Hình 2 .5: Chi tiết khối bytes tiêu đề tập tin BMP. ......................................... 28
Hình 2. 6: Chi tiết khối bytes thông tin tập tin BMP ...................................... 29
Hình 2. 7: Sơ đồ giấu tín SES ......................................................................... 36
Hình 2.8: Minh họa giấu bit b = 0 vào khối nhị phân B ................................ 39
Hình 2. 9: Minh họa giấu dãy bit M = 110 vào 4 khối ảnh nhị phân ............. 44
Hình 3. 1: bảng mã 26 chữ cái latinh ............................................................ 47
Hình 3. 2: Giao diện chính của chương trình ................................................. 62
Hình 3. 3: Giao diện giấu tin .......................................................................... 62
Hình 3. 4: Giao diện giấu file dữ liệu ............................................................. 63
Hình 3. 5: Giao diện tách tin .......................................................................... 63
iv
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
1 BMP Basic Metabolic Panel - Ảnh bipmap
2 GIF Graphics Interchange Format - Ảnh có định dạng GIF
3 JPEG Joint Photographic Experts Group - Ảnh nén JPEG
4 LSB Least Significant Bit - Bit có ý nghĩa thấp nhất
5 PNG Portable Network Graphics - Ảnh nén PNG
6 PoV Pairs of Values - cặp giá trị điểm ảnh chẵn/lẻ
7 HVS Human Vision System - Hệ thống thị giác của con người
8 RGB Red – Green – Blue
v
MỤC LỤC
LỜI CAM ĐOAN .............................................................................................. i
LỜI CÁM ƠN ................................................................................................... ii
DANH MỤC HÌNH ......................................................................................... iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT .................................. iv
MỤC LỤC ......................................................................................................... v
MỞ ĐẦU ........................................................................................................... 1
1. Đặt vấn đề .................................................................................................. 1
2. Đối tượng nghiên cứu ................................................................................ 1
3. Bố cục của luận văn ................................................................................... 1
CHƯƠNG 1: MỘT SỐ KIẾN THỨC CƠ SỞ .................................................. 3
1.1 Đổi cơ số ................................................................................................. 3
1.2 Độ phức tạp của thuật toán ..................................................................... 5
1.3 Phép chia hết và thuật toán Euclidean ..................................................... 6
1.4 Phần tử nghịch đảo .................................................................................. 8
1.4.1 Định nghĩa ........................................................................................ 8
1.4.2 Thuật toán tìm nghịch đảo của a-1 mod m ........................................ 9
1.5 Đa thức nguyên thủy ............................................................................... 9
1.5.1.Bậc của một phần tử ......................................................................... 9
1.5.2 Hàm – Euler ............................................................................... 10
1.5.3 Phần tử nguyên thủy ....................................................................... 11
1.5.4 Đa thức nguyên thủy ....................................................................... 12
1.5.5 Mã Hamming ( The Hamming Codes). ......................................... 14
vi
1.5.6 Mật mã vòng tuyến tính. ................................................................ 15
1.5.7 Đa thức nguyên thủy trong trường hợp GF(2) có cấp từ 2 đến cấp 7
.................................................................................................................. 16
CHƯƠNG 2: TÌM HIỂU TỔNG QUAN VỀ GIẤU TIN VÀ MỘT SỐ
THUẬT TOÁN GIẤU TIN MẬT(STEGANOGRAPHY) ............................ 18
2.1 Tổng quan về giấu tin và phân loại ..................................................... 18
2.1.1 Định nghĩa ...................................................................................... 18
2.1.2 Mục đích của giấu tin mật. ............................................................. 19
2.1.3 Mô hình kỹ thuật giấu thông tin cơ bản. ......................................... 20
2.1.4. Các đối tượng dùng để giấu tin. .................................................... 21
2.2 Giấu tin trong ảnh. ................................................................................. 24
2.3 Tổng quan ảnh BITMAP (BMP). .......................................................... 26
2.3.1 Giới thiệu ảnh BITMAP (BMP). .................................................... 26
2.3.2 Cấu trúc ảnh BITMAP (.BMP). ..................................................... 27
2.4. Một số thuật toán giấu tin trong ảnh và chất lượng ............................ 32
2.4. 1 Kỹ thuật giấu tin LSB. ................................................................... 32
2.4.2 Kỹ thuật giấu tin SES. .................................................................... 34
2.4.3 Kỹ thuật giấu tin theo khối bit ........................................................ 38
2.4.4 Thuật toán Wu-Lee ........................................................................ 41
CHƯƠNG 3: TÌM HIỂU XÂY DỰNG MỘT THUẬT TOÁN GIẤU TIN
MẬT TRÊN ẢNH KỸ THUẬT SỐ .............................................................. 46
3.1 Xây dựng ma trận 4 bit. ......................................................................... 46
3.1.1 Chọn đa thức nguyên thủy trong trường GF(2). ............................. 46
vii
3.1.2 Xây dựng không gian các nghiệm của p(x). ................................... 46
3.1.3 Lập bảng mã 26 chữ cái latinh ....................................................... 46
3.2 Xây dựng thuật toán nhúng ................................................................... 48
3.2.1 Xây dựng ma trận sinh G ................................................................ 48
3.2.2 Đổi thông điệp m = m1…..mn sang dãy nhị phân theo bảng A .. 48
3. 3 Trích chọn (extraction) ......................................................................... 50
3.4 Đánh giá độ an toàn của hệ thống ......................................................... 53
3.5 So sánh độ an toàn của 2 hệ thống ....................................................... 57
3.6 Nhận xét đánh giá ................................................................................... 59
3.7. Chương trình thử nghiệm ..................................................................... 60
3.7.1 Môi trường cài đặt .......................................................................... 60
3.7.2 Mô hình hệ thống ............................................................................ 60
KẾT LUẬN ..................................................................................................... 63
TÀI LIỆU THAM KHẢO ............................................................................... 66
1
MỞ ĐẦU
1. Đặt vấn đề
Hiện nay có nhiều thuật toán giấu tin mật và thủy vân đã được
công bố [1]. Trong đó cũng có nhiều thuật toán giấu tin mật đã bị phát hiện
bằng các kỹ thuật thống kê toán học. Vì vậy một vấn đề đặt ra là: Đánh giá
mức độ an toàn của một thuật toán giấu tin như thế nào? Đặc biệt là hệ thống
giấu tin mật phục vụ an ninh quốc phòng. Ta biết rằng, lượng thông tin được
giấu vào trong một ảnh là rất quan trọng nhưng phải đảm bảo được mức độ an
toàn của hệ thống giấu. Đề tài tập trung tìm hiểu và xây dựng một thật toán
giấu tin mật vào ảnh kỹ thuật số sao cho lượng thông tin giấu được nhiều và
đồng thời có mức độ an toàn cao, tức là ảnh có chứa tin mật và ảnh gốc khác
nhau có thể chấp nhận được để ứng dụng được trong nhiều lĩnh vực khác
nhau. Đó là mục đích và ý nghĩa của đề tài luận văn: Tìm hiểu xây dựng một
thuật toán giấu tin mật và ứng dụng. Trong phạm vi đề tài luận văn có giới
thiệu một hệ thống steganography mới và đồng thời đưa ra so sánh về mức độ
an toàn giữa hệ thống được đề xuất và hệ thống đã được công bố.
2. Đối tượng nghiên cứu
Đề tài tập trung nghiên cứu các đối tượng sau đây:
- Tập trung tìm hiểu, đánh giá ưu nhược điểm của một số thuật toán
giấu tin mật trong ảnh kỹ thuật số.
- Xây dựng thuật toán giấu tin mật mới.
3. Bố cục của luận văn
Nội dung của luận văn gồm có: Phần mở đầu, ba chương chính, kết
luận, mục lục và tài liệu tham khảo. Nội dung cơ bản của luận văn được trình
bày như sau:
2
Phần mở đầu: Nêu lý do chọn đề tài, đối tượng nghiên cứu và bố
cục của luận văn
Chương 1: MỘT SỐ KIẾN THỨC CƠ SỞ
Chương này sẽ trình bày một số kiến thức toán học bổ trợ
Chương 2: TỔNG QUA VỀ GIẤU TIN VÀ MỘT SỐ THUẬT TOÁN
GIẤU TIN MẬT TRONG ẢNH KỸ THUẬT SỐ
Chương này sẽ phân tích, đánh giá một số thuật toán giấu tin mật đã
được công bố:Kỹ thuật LSB, Kỹ thuật SES, Kỹ thuật giấu tin theo khối bit,
thuật toán Wu-Lee.
Chương 3: TÌM HIỂU XÂY DỰNG MỘT SỐ THUẬT TOÁN GIẤU
TIN MẬT
Chương này sẽ trình bày thuật toán đề xuất và đánh giá độ an toàn của
từng thuật toán. Cài đặt thử nghiệm việc giấu tin dựa theo thuật toán đề xuất.
3
CHƯƠNG 1: MỘT SỐ KIẾN THỨC CƠ SỞ
1.1 Đổi cơ số
Số mà chúng ta sử dụng hàng ngày (0, 1, 2, 3, …, 7, 8, 9 ) là các số được
biểu diễn theo cơ số 10.
Ví dụ 1:
Tóm lại, một số n tổng quát viết theo cơ số 10 bao giờ cũng có thể được
biểu diễn một cách duy nhất dưới dạng:
trong đó, , nói cách khác ai є{0,1,2,…,9}
với i = 0,1,2,..,k-1; với ak ≠ 0.
Ứng với mỗi số n, biểu diễn ở (1) là duy nhất. Do đó, thay vì viết số n, ta
viết n dưới dạng: , con số 10 biểu thị cơ số. Trong
thực tế ta cần số n biểu thị dưới dạng có số b tùy ý như sau:
hay viết ngắn gọn là:
, tức là :
Nếu b = 2, ta có số n biểu diễn dưới dạng cơ số 2. Khi đó:
4
Trường hợp thì thay là những con số mà người ta có
thể dùng các chữ cái Latinh.
Ví dụ 2:
Ví dụ 3: Khi b = 26, người ta sử dụng các chữ cái từ A đến Z thay cho
0,1,..,25.
Ví dụ 4: Hãy đổi các số sang cơ số 26:
Ta có :
hay
Ví dụ 5 : Hãy đổi 106 sang cơ số lần lượt là 2, 7, và 26.
Ta có:
.
Để chứng minh rằng: các biểu diễn trên là duy nhất ứng với mỗi cơ số cụ thể,
ta có mệnh đề sau đây:
Mệnh đề: Xét không gian các đa thức V, cấp n tùy ý trên trường vô
hướng K nào đó. Ta xét một tập hợp S = { 1, x, x2, x3,..., xn } trong V . Khi
đó, S là một cơ sở trong V.
Chứng minh: Ta chỉ cần chứng minh rằng các vector trong S là độc lập
tuyến tính. Muốn vậy, cho α0, α1, α2,..., αn và xét tổ hợp tuyến tính :
α0 + α1x +... + αn = 0 (1)
5
Ta cần chứng minh rằng khi đó αi = 0, đối với mọi i = 0,1, 2,...,n.
Thật vậy, giả sử, n= 1, khi đó, lấy đạo hàm 2 vế của (1), ta có α1 = 0 và
do đó, α0 = 0. Giả thiết đẳng thức (1) đúng cho n = k -1, ta sẽ chứng minh
rằng đẳng thức (1) đúng cho cả n = k. Bằng cách lấy đạo hàm của đẳng thức
(1) n-lần , ta suy ra αn = 0. Nhưng theo quy nạp ta đã có α0, α1,..., αn-1 = 0,
vậy mệnh đề được chứng minh.
1.2 Độ phức tạp của thuật toán
Định nghĩa 1: Cho và là hai hàm nhiều
biến số xác định trong miền gồm tập hợp các bộ k số nguyên dương. Giả sử
có tồn tại hai hằng số B và C thỏa mãn
thì ta nói rằng f bị
chặn bởi g và viết là
Ví dụ 6:
a. Cho f(n) là một đa thức cấp d mà các hệ số của nó dương. Khi đó ta
có : .
b. Cho ԑ là một số dương bé tùy ý ( no matter how small). Khi đó, chúng
ta có thể chứng minh được rằng:
c. Ký hiệu f(n) là số k thành phần (digits) nhị phân trong n ( ví dụ n =
10110 thì => f (n) = 5 ). Khi đó có thể dễ dàng thấy rằng f(n) = O(log n).
Chú ý nếu viết f(n) = O(1) thì có nghĩa là f(n) bị chặn bởi một hằng số nào
đó.
Bây giờ, chúng ta trở lại bài toán ước lượng thời gian của chúng ta đối với
phép nhân một số nguyên k_bit với một số nguyên khác l_bit.
Ta có: Thời gian (k_bit x l_bit) = O(k.l).
6
Một cách tổng quát có:
Thời gian(nxm) = O((log n)(log m)).
Ví dụ 7: Hãy ước lượng thời gian cần thiết để đổi một số nguyên k_bit
thành cơ số 10.
Giải: Cho n là một số nguyên được viết dưới dạng cơ số nhị phân k_bit.
Thuật tóan đổi như sau: Chia số n cho 10 = (1010)2 . Còn lại bằng một trong
các số nguyên 0, 1, 10, 11, 100, 101, 110, 111, 1000 hoặc 1001.
Thời gian chuyển số nhị phân n k_bit về một số nguyên cơ số 10 là: O(
log2n).
Định nghĩa 2: Một thuật toán để thực hiện giải trên máy tính các số
nguyên n1, n2, …, nr có k1, k2, …, kr bít tương ứng được gọi là thuật toán thời
gian đa thức nếu có tồn tại các số nguyên d1, d2, …, dr sao cho số các toán tử
bít đòi hỏi để biểu diễn thuật toán là
1.3 Phép chia hết và thuật toán Euclidean
Cho trước hai số nguyên a và b và một số nguyên dương ( m ≥ 1). Ta
nói rằng a chia hết cho b theo modulo m nếu a – b = k.m với k = 0, 1, 2 , ... và
ta viết a ≡ b mod m.
Giả sử p là một số nguyên tố, α là một số nguyên không âm. Khi đó,
chúng ta ký hiệu pα|| b để chỉ ra rằng pα là lũy thừa cao nhất α của p mà b chia
hết cho pα, tức là b chia hết cho pα và b không chia hết cho pα+1. Và trong
trường hợp đó, ta nói rằng pα là ước đúng của số b.
Nếu ab chia hết cho số nguyên tố p khi đó, hoặc a chia hết cho b (ta ký
hiệu p|a) hoặc b chia hết cho p( p|b).
7
Nếu m|a và n|a nếu m,n là số nguyên tố sao cho UCLN(m, n) = 1. Khi
đó m.n|a.
Chú ý! Ta dùng kí hiệu (a, b) để chỉ ước chung lớn nhất của a và b. Tức
là thay vì viết UCLN(a, b) ta viết (a, b).
Thuật toán Euclidean và thuật toán Euclidean mở rộng.
Trước hết, ta trình bày bổ đề sau:
Bổ đề 1: Cho m,n là những số nguyên, ta giả sử m ≥ n. Ta chia m cho n và
nhân được kết quả:
khi đó
Bổ đề 2: (m, 0) = m với mọi m nguyên.
Từ bổ đề nêu trên, ta có thuật toán tìm (m, n) như sau:
Input: Cho trước m và n ( già sử m ≥ n) là hai số nguyên.
Output: Tìm (m, n).
Thuật toán:
Bước 1: Nếu n = 0, m là đáp số!
Bước 2: và quay lại bước 1.
Mệnh đề 1: Số các phép toán trong thuật toán Euclide không vượt quá
2log2n.
Mệnh đề 2: Nếu (m, n) = d thì có tồn tại hai số nguyên x, y sao cho:
mx + ny = d.
8
Từ mệnh đề 2, ta có thuật toán Euclide mở rộng tìm 3 số x, y, d sao cho:
mx + ny = d sau đây:
Input: m, n ( giá trị m ≥ n)
Output: x, y, d: mx + ny = d.
Thuật toán:
Khởi tạo: Cho ( a1, a2, a3 ), ( b1, b2, b3), ( c1, c2, c3 ) là các vector.
Bước 1: ( a1, a2, a3 ) ← ( 0, 1, m ); ( b1, b2, b3) ← ( 0, 1, n );
Bước 2: Nếu b3 = 0 thì dừng và ( a1, a2, a3 ) là đáp số bài toán.
Bước 3: Đặt ; ( c1, c2, c3 ) ← ( a1, a2, a3 ) – q.( b1, b2, b3);
( a1, a2, a3 ) = ( b1, b2, b3); ( c1, c2, c3 ) = ( b1, b2, b3); và quay lại bước 2.
Đáp số: a1 = x, a2 = y, a3 = d;
1.4 Phần tử nghịch đảo
1.4.1 Định nghĩa
Cho m là một số nguyên dương và a là một số nguyên. Nếu tồn tại một
số nguyên b sao cho ab ≡ 1 mod n thì b được gọi là phần tử nghịch đảo của a
theo modulo m.
Ta thấy rằng, nếu b là phần tử nghịch đảo của a theo modulo m thì mọi
số nguyên có dạng b + km cũng là nghịch đảo của a, trong đó k = 0, ±1, ±2, ...
Tuy nhiên trong các số có dạng b + km, có tồn tại duy nhất một số nguyên
dương nằm giữa 0 và m và số đó được kí hiệu là a-1 mod m.
9
1.4.2 Thuật toán tìm nghịch đảo của a-1 mod m
Cho a, m > 0, ta kí hiệu d = ( a, m).
Khẳng định 1: Điều kiện cần và đủ để tồn tại nghịch đảo a-1 của số a là
d =1.
Chứng minh: Thật vậy,
Giả sử d > 1, khi đó ta có: a = a1.d, m = m1.d với a1, m1 nguyên
(dương ). Nếu tồn tại a-1 thì:
phải là số nguyên. Nhưng do Vì a1, a-1, k, m1 nguyên nên
d> 1 nên hệ thức (1) không thể xảy ra. Nó chỉ xảy ra khi và chỉ khi d = 1. Đó
là điều ta cần chứng minh.
Chú ý! Sử dụng thuật toán Euclide mở rộng ta có thể tìm được a-1, nếu
d = 1 và khi đó giá trị a-1 nằm trong ô a2 của thuật toán.
1.5 Đa thức nguyên thủy
Trước khi trình bày khái niệm đa thức nguyên thủy, chúng ta sẽ giới thiệu
qua về phần tử nguyên thủy.
1.5.1 Bậc của một phần tử
Định nghĩa 1: Cho a và m là 2 số nguyên dương tùy ý. Khi đó, nếu tồn tại
một số nguyên dương bé nhất mà thỏa mãn điều kiện:
thì số h được gọi là bậc của phần tử a theo modulo m và viết là:
10
Chú ý! Không phải với mọi cặp số nguyên dương a, m đều tồn tại số h
thỏa mãn điều kiện (2). Cụ thể ta có mấy khẳng định sau đây:
Khẳng định 1: Cho hai số nguyên dương a và m. Để tồn tại số guyên
dương h có tính chất , điều kiện cần và đủ là (a, m) = 1 { (a, m)
là kí hiệu ước số chung lớn nhất của a và m}.
Chứng minh: Thật vậy, giả sử trái lại, (a, m) = d ≥ 2 và có tồn tại h
nguyên dương mà ah ≡ 1 mod m. Nhưng do giả thiết phản chứng, ta có
a = d.a1 , m = d.m1 với a1, m1 nguyên.
hay tương đương : Khi đó
( 3 )
phải là số nguyên Do h, d, a1, k, m1 nguyên nên biểu thức
(có thể âm ). Do đó đẳng thức (3) là vô lí, vì d ≥ 2. Vậy khẳng định được
chứng minh.
*.
Khẳng định 2: Giả sử h = ordm(a) . Khi đó:
+ a, a2, ..., ah là những số khác nhau thuộc Zm
+ Nếu ak ≡ 1 mod m thì h phải là ước số của k, đặc biệt h là ước của hàm
Φ(m).
1.5.2 Hàm – Euler
Định nghĩa 2: Ta kí hiệu với m là số
nguyên dương nào đó. Khi đó hàm (m) – Euler được định nghĩa là:
(Lực lượng của tập hợp ). Như vậy hàm (m) – Euler
chính là số phần tử mà nguyên tố với m ( trừ x = 0).
11
Các tính chất của hàm (m).
- Tính chất 1: (1) = 0.
- Tính chất 2: ) với p là ước số nguyên tố của m.
- Tính chất 3: Nếu với p1, p2, ..., pk là các số nuyên tố
khác nhau còn e1, e2, ..., ek ≥ 0 là các số nguyên nào đó. Khi đó:
.
- Tính chất 4: Nếu m, n là những số tự nhiên sao cho (m, n) = 1, khi đó,
ϕ(m.n) = ϕ(m).ϕ(n) , đặc biệt nếu m là số nguyên tố m = p thì :
ϕ(m) = ϕ(p) = p– 1.
- Tính chất 5: Nếu m = p.q trong đó p, q là 2 số nguyên tố phân biệt thì :
ϕ(m)= ϕ(p.q) = (p – 1)(q – 1).
- Tính chất 6: Nếu n = pk với p là số nguyên tố còn k là số nguyên
dương, thế thì: ϕ(n) = pk-1(p – 1).
- Tính chất 7: Với mọi n ≥ 5, ta có:
- Tính chất 8 ( Định lý Euler) : Nếu (a, m) = 1 thì aϕ(m) ≡ 1 mod m với a,
m nguyên dương.
- Tính chất 9: Cho n = p.q , trong đó, p,q là hai số nguyên tố phân biệt.
Khi đó: .
1.5.3 Phần tử nguyên thủy
Định nghĩa 3: Cho g là một số nguyên dương và m là một số nguyên
(m≥ 2) sao cho (g, m) = 1. Nếu ϕ(m) là bậc của g theo modulo m thì g được
gọi là phần tử nguyên thủy trong .
Một số định lý quan trọng:
12
- Định lý 1: Xét vành , m ≥ 2. Khi đó, trong có ít nhất một phần
tử nguyên thủy khi và chỉ khi m = 2, 4, pk hoặc m = 2qk. Trong đó p là số
nguyên tố và q là số nguyên tố lẻ và k ≥ 1 là một số nguyên.
- Định lý 2: Cho g và p, trong đó p là số nguyên tố. Khi đó, g là một
phần tử nguyên thủy trong nếu và chỉ nếu đối với mọi q
là ước số nguyên tố của p – 1.
Một cách tổng quát, ta có một số định lý sau:
- Định lý 3: Cho với p1, p2, ..., pk là những số
nguyên tố phân biệt, còn ei ≥ 1 là những số nguyên, i = 1, 2, ..., k. Khi đó
là một phần tử nguyên thủy khi và chỉ khi với mọi i
= 1, 2, ..., k.
- Định lý 4: Cho p là một số nguyên tố, α là một phần tử nguyên thủy
trong . Khi đó mọi phần tử đều tồn tại một j ( 0 ≤ j ≤ p – 2) sao cho
, và β là phần tử nguyên thủy khi và chỉ khi (j, p – 1) = 1.
- Định lý 5: Số các phần tử nguyên thủy có thể có trong ( với m thỏa
mãn điều kiện của Định lý 1 của mục này) là ϕ(ϕ(m)). Trường hợp đặc biệt,
nếu m = p là số nguyên tố thì . Khi đó, số
các phần tử nguyên tử nguyên thủy trong sẽ là ϕ(p – 1).
Ví dụ: Cho p = 7. Thế thì số các phần tử nguyên thủy trong là:
1.5.4 Đa thức nguyên thủy
Trong phạm vi tìm hiểu này, ta chỉ xét các đa thức trong trường GF(2).
13
Định nghĩa 1: Đa thức P(x) cấp m ≥ 1 trong trường GF(2) được gọi là
đa thức bất khả quy nếu P(x) không thể phân tích thành tích các đa thức có
bậc nhỏ hơn m trong trường GF(2).
Định nghĩa 2: Một đa thức bất khả quy P(x) có cấp m trong trường
GF(2) được gọi là đa thức nguyên thủy( primitive polynomid) nếu số nguyên
dương nhỏ nhất n sao cho xn – 1 chia hết cho P(x) là n = 2m – 1.
Ví dụ: P(x) = x3 + x + 1 là đa thức nguyên thủy trong trường GF(2),
hoặc P(x) ϵ GF(2)[x], vì n = 7 = 23 – 1 là số nguyên dương nhỏ nhất mà x7 – 1
chia hết cho x3+x + 1.
x7 – 1 = (x3 + x + 1)(x4 + x2 + x + 1) và thì xm – 1 không chia hết
cho P(x) = x3 + x + 1.
Định lý 1: Có đúng đa thức nguyên thủy cấp n trong trường
GF(2).
Định lý 2: Mọi nghiệm của đa thức nguyên thủy cấp m: P(x) ϵ GF(2)[x]
đều có cấp 2m – 1.
Chứng minh: Thật vậy, giả sử α là một nghiệm tùy ý của đa thức P(x) ϵ
GF(2)[x]. Từ đó suy ra rằng α cũng là nghiệm của biểu thức ,
vì ( Theo định nghĩa 2 ở trên) do đó suy ra ord(α) | 2m – 1.
Nếu 2m – 1 không chia hết cho ord(α), khi đó 2m – 1 = k[ord(α)] + r với 0
< r < ord(α)
Suy ra: . Điều này mâu thuẫn với định
nghĩa. Vậy, ta suy ra rằng mọi nghiệm của =0 đều là nghiệm
của hay . Vì tất cả nghiệm của đa thức
14
bất khả quy có cùng cấp nên suy ra chia hết cho P(x). Cuối cùng
ord(α) = 2m – 1( theo định nghĩa). Đó là điều cần chứng minh.
1.5.5 Mã Hamming ( The Hamming Codes).
Bộ mã tuyến tính C trong trường hợp GF(2) được gọi là bộ mã Hamming.
Các tham số đặc trưng đối với bộ mã Hamming( nhị phân) là (m > 2):
- Độ dài từ mã là: n = 2m – 1.
- Số các bit mang thông tin là: k = 2m – m – 1.
- Số các bit sửa sai là: n – k = m.
- Khả năng sửa sai là: t = 1.
- Cho một số bộ mã Hamming C = (n, k), k < n. Bộ mã này được đặc
trưng bởi ma trận kiểm tra chẵn lẻ H và ma trận sinh G. Đối với bộ mã
Hamming có độ dài từ mã n = 2m – 1 việc xây dựng ma trận kiểm tra chẵn lẻ
rất đơn giản.
Đó là ma trận H = (hij)n – k, n hijϵ {0, 1}, i = 1, 2, ..., n – k; j = 1, 2, ..., n.
Trong đó các cột của H là các vector khác không nhị phân m thành phần. Còn
ma trận sinh G = (gij)k.n, gijϵ {0, 1}, i = 1, 2, ..., k; j = 1, 2, ..., n. Quan hệ giữa
H và G được thể hiện như sau
Ma trận kiểm tra H có dạng như sau:
15
và ma trận sinh:
1.5.6 Mật mã vòng tuyến tính.
Định nghĩa: Một bộ mã tuyến tính C = (n, k) được gọi là mật mã vòng
tuyến tính nếu với mọi từ mã thì
cũng thuộc C.
Như vậy cấu trúc của mật mã vòng dựa trên cấu trúc của đa thức:
sẽ tương ứng 1- 1 với một từ mã
. Nếu C = (n, k) là một bô mã trên GF(q). Khi đó tập
các từ mã trên C tạo thành một không gian vector con K_chiều trong không
gian vector n_chiều. Điều đó chứng tỏ rằng các đa thức ứng với các từ mã của
C cũng tạo nên một không gian vector con trong GF(q)[x]/(xn – 1). Như vậy,
nếu từ mã c’ là kết quả của sự dịch chuyển vòng sang phải một nhịp của từ
mã cϵC thì: c’(x) = x.c(x) mod(xn – 1) ϵ C.
Thật vậy, ta có:
Định lý 1: Cho bộ mã dịch vòng tuyến tính C = (n, k) trên trường GF(q).
Khi đó:
16
1. Tập hợp các đa thức trong C có tồn tại một đa thức g(x) monic duy nhất
có cấp cực tiểu r < n. Khi đó g(x) được gọi là đa thức sinh của C.
2. Với mỗi đa thức từ mã c(x) trong C, có thể biểu diễn một cách duy nhất
dưới dạng c(x) = m(x).g(x), trong đó g(x) là đa thức sinh của C và m(x) là
một đa thức có cấp nhỏ hơn n – r trong GF(q)[x].
3. Đa thức sinh g(x) của C là một nhân tử của xn – 1 trong GF(2)[x].
- Định lý 2( về nhân tử hóa xn – 1 trên trường GF(q)[x]). Tập hợp tất cả
các phần tử khác không trong trường GF(q) tạo nên một tập hợp đầy đủ các
nghiệm của phương trình:
1.5.7 Đa thức nguyên thủy trong trường hợp GF(2) có cấp từ 2 đến cấp 7
Cấp Kí hiệu Cấp Kí hiệu Cấp Kí hiệu
111 1011 10011
2 3 4
1101 11001
100101 1000011 10000011
101001 1011011 10001001 5 6 7
101111 1100001 10001111
110111 1100111 10010001
111011 1101101 10011101
111101 1110011 10100111
10101011
10111001
17
10111111
11000001
11001011
11010011
11010101
11100101
11101111
11110001
11110111
11111101
18
CHƯƠNG 2: TÌM HIỂU TỔNG QUAN VỀ GIẤU TIN VÀ MỘT SỐ
THUẬT TOÁN GIẤU TIN MẬT ( STEGANOGRAPHY)
2.1 Tổng quan về giấu tin và phân loại [1]
2.1.1 Định nghĩa
“ Giấu thông tin” gọi tắt là “giấu tin”, tiếng Hi lạp là “Steganography”,
tiếng Anh là “Cover Writing”. Giấu thông tin là một kỹ thuật giấu (nhúng)
một lượng thông tin số nào đó vào trong một đối tượng dữ liệu số khác ( “giấu
tin” nhiều khi không phải chỉ hành động giấu cụ thể mà chỉ mang ý nghĩa quy
ước) [1]
Sự khác biệt chủ yếu giữa mã hoá thông tin và giấu thông tin là phương
pháp mã hoá làm cho các thông tin hiện rõ là nó có được mã hoá hay không
còn đối với phương pháp giấu thông tin thì người ta sẽ khó biết được là có
thông tin giấu bên trong do tính chất ẩn (invisible) của thông tin được giấu.
Kỹ thuật giấu thông tin nhằm mục đích đảm bảo an toàn vào bảo mật
thông tin. Từ hai khía cạnh : một là bảo mật cho giữ liệu được đem giấu, hai
là bảo mật cho chính đối tượng thực hiện giấu tin. Điều này dẫn đến hai
khuynh hướng kỹ thuật chủ yếu của giấu tin. Khuynh hướng thứ nhất là giấu
tin mật (steganography). 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 nhiều và quan trọng là người khác khó phát
hiện được một đối tượng có bị giấu thông tin bên trong phương tiện đó hay
không. Khuynh hướng thứ hai là thủy vân số (watermarking). Khuynh hướng
thủy vân số đánh giấu vào đối tượng nhằm khẳng định bản quyền sở hữu hay
phát hiện xuyên tạc thông tin. Thủy vân số có miền ứng dụng chủ yếu trong
lĩnh vực kinh tế nên nó được quan tâm nhiều. Trong lúc đó kỹ thuật giấu tin
19
mật chủ yếu phục vụ trong lĩnh vực an ninh quốc phòng và do đó, nó ít được
công bố công khai.
2.1.2 Mục đích của giấu tin mật.
Giấu tin có hai mục đích:
- Bảo mật cho những dữ liệu được giấu.
- Bảo đảm an toàn (bảo vệ bản quyền) cho chính các đối tượng chứa dữ
liệu giấu trong đó.
Hai mục đích này dần phát triển thành hai lĩnh vực với những yêu cầu
và tính chất khác nhau.
Giấu thông tin
Giấu tin bí mật
Thuỷ vân số
(Steganography)
(Watermarking)
Hình 2. 1: Hai lĩnh vực của kỹ thuật giấu thông tin
Kỹ thuật giấu thông tin bí mật (Steganography): với mục đích đảm bảo
an toàn và bảo mật thông tin tập trung vào các kỹ thuật giấu tin để có thể giấu
được nhiều thông tin nhất. Thông tin mật được giấu kỹ trong một đối tượng
khác sao cho người khác không phát hiện được.
Kỹ thuật giấu thông tin theo kiểu “đánh giấu” (watermarking) để bảo
vệ bản quyền của đối tượng chứa thông tin tập trung đảm bảo một số các yêu
cầu như đảm bảo tính bền vững… đây là ứng dụng cơ bản nhất của kỹ thuật
thuỷ vân số. Trong phạm vi nghiên cứu của mình, luận văn tập trung tìm hiểu
về kỹ thuật giấu tin mật.
20
2.1.3 Mô hình kỹ thuật giấu thông tin cơ bản.
Để thực hiện giấu tin cần xây dựng được các thủ tục giấu tin.Các thủ
tục này sẽ thực hiện nhúng thông tin cần giấu vào môi trường giấu tin. Các
thủ tục giấu tin thường được thực hiện với một khóa giống như các hệ mật mã
để tăng tính bảo mật. Sau khi giấu tin ta thu được đối tượng chứa thông tin
giấu và có thể phân phối đối tượng đó trên kênh thông tin đến người nhận có
chủ đích. Để giải mã thông tin nhận được từ đối tượng có chứa thông tin đã
giấu, người nhận đích thực sử dụng thủ tục giải mã cùng với khóa đã dung
trong quá trình giấu để lấy lại thông tin. Việc giấu thông tin vào phương tiện
chứa và tách lấy thông tin từ đó là hai quá trình trái ngược nhau và có thể mô
tả qua sơ đồ khối của hệ thống như hình 3.2 trong đó:
- Thông tin cần giấu tuỳ 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 file ảnh, 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
- Đầu ra: là các phương tiện chứa đã có tin giấu trong đó
Thông tin giấu
Phân phối
Bộ nhúng thông tin
Phương tiện chứa (audio, ảnh, video)
Phương tiện chứa đã được giấu tin
Khoá
Hình 2. 2: Lược đồ chung cho quá trình giấu tin
21
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.
Khóa giấu tin
Phương tiện chứa đã được giấu tin
Bộ giải mã tin
Phương tiện chứa (audio, ảnh, video)
Thông tin giấu
Kiểm định
Hình 2. 3: Lược đồ chung cho quá trình giải mã
Hình vẽ 2.3 chỉ ra các công việc giải mã 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 giải mã
được thực hiện thông qua một bộ giải mã tương ứng với bộ nhúng thông tin
cùng với khoá 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 sẽ được xử lý kiểm
định so sánh với thông tin ban đầu.
2.1.4. Các đối tượng dùng để giấu tin.
a. Phân loại các kỹ thuật giấu tin:
22
Dựa trên việc thống kê sắp xếp nhiều công trình đã công bố trên một số
tạp chí, cùng với thông tin về tên và tóm tắt nội dung của khoảng 200 công
trình công bố trên Internet, có thể chia lĩnh vực giấu dữ liệu ra làm hai hướng
lớn, đó là watermarking và steganography. Nếu như watermarking quan tâm
nhiều đến các ứng dụng giấu các mẩu tin ngắn nhưng đòi hỏi độ bền vững cao
của thông tin cần giấu đối với các biến đổi thông thường của tệp dữ liệu môi
trường thì steganography lại quan tâm tới các ứng dụng che giấu các bản tin
với độ mật và dung lượng càng lớn càng tốt. Đối với từng hướng lớn này, quá
trình phân loại có thể tiếp tục theo các tiêu chí khác.
Ngoài ra chúng ta có thể phân loại theo môi trường giấu thông tin:
+ Giấu thông tin trong ảnh.
+ Giấu thông tin trong audio.
+ Giấu thông tin trong video.
+ Giấu thông tin trong văn bản dạng text.
b. Phân loại theo cách thức tác động lên các phương tiện:
Phương pháp chèn dữ liệu: Phương pháp này tìm các vị trí trong file dễ
bị bỏ qua và chèn dữ liệu cần giấu vào đó, cách giấu này không làm ảnh
hưởng gì tới sự thể hiện các file dữ liệu ví dụ như được giấu sau các ký tự
EOF.
Phương pháp tạo các phương tiện chứa: Từ các thông điệp cần chuyển
sẽ tạo ra các phương tiện chứa để phục vụ cho việc truyền thông tin đó, từ
phía người nhận dựa trên các phương tiện chứa này sẽ tái tạo lại các thông
điệp.
23
c. Phân loại theo các mục đích sử dụng:
- Giấu thông tin bí mật: đây là ứng dụng phổ biến nhất từ trước đến
nay, đối với giấu thông tin bí mật người ta quan tâm chủ yếu tới các mục tiêu:
Độ an toàn của giấu tin - khả năng không bị phát hiện của thông tin ẩn.
+ Lượng thông tin tối đa có thể giấu trong một phương tiện chứa cụ thể
mà vẫn có thể đảm bảo an toàn
+ Độ bí mật của thông tin trong trường hợp giấu tin bị phát hiện
- Giấu thông tin bí mật không quan tâm tới nhiều các yêu cầu bền vững
của phương tiện chứa, đơn giản là bởi người ta có thể thực hiện việc gửi và
nhận nhiều lần một phương tiện chứa đã được giấu tin.
- Giấu thông tin thuỷ vân: do yêu cầu bảo vệ bản quyền, xác thực… nên
giấu tin thuỷ vân có yêu cầu khác với giấu tin bí mật. Yêu cầu đầu tiên là các
dấu hiệu thuỷ vân đủ bền vững trước các tấn công vô hình hay cố ý gỡ bỏ nó.
Thêm vào đó các dấu hiệu thuỷ vân phải có ảnh hưởng tối thiểu (về mặt cảm
nhận) đối với các phương tiện chứa. Như vậy các thông tin cần giấu càng nhỏ
càng tốt.
Tuỳ theo các mục đích khác nhau như bảo vệ bản quyền, chống xuyên
tạc nội dung, nhận thực thông tin,… thuỷ vân cũng có các yêu cầu khác nhau.
Các kỹ thuật giấu tin mới được phát triển mạnh trong khỏang hơn mười
năm trở lại đây nên việc phân loại các kỹ thuật còn chưa hoàn toàn thống
nhất. Sơ đồ phân loại do F.Petitcolas đưa ra năm 1999 được nhiều người chấp
nhận.
24
Information hiding Giấu thông tin
Watermarking Thuỷ vân số
Steganography Giấu tin mật
Robust Watermarking
Fragile Watermarking Thuỷ vân dễ vỡ
Thuỷ vân bền vững
Imperceptible Watermarking
Visible Watermarking
Thuỷ vân ẩn
Thuỷ vân hiển thị
Hình 2. 4: Phân loại các kỹ thuật giấu tin
Theo sơ đồ trên đây, giấu tin được chia thành hai hướng chính là giấu
tin mật và thủy vân số. Giấu tin mật quan tâm chủ yếu đến lượng tin có thể
giấu, còn thủy vân số lại quan tâm chủ yếu đến tính bền vững của thông tin
giấu. trong từng hướng chính lại chia ra các hướng nhỏ hơn, chẳng hạn với
thủy vân số thì có thủy vân bền vững và thủy vân dễ vỡ. Thủy vân bền vững
cần bảo toàn được các thông tin thủy vân trước các tấn công như dịch chuyển,
cắt xén, xoay đối với ảnh. Ngược lại, thủy vân dễ vỡ cần phải dễ bị phá hủy
khi gặp các sự tấn công nói trên.
2.2 Giấu tin trong ảnh.
Hiện nay, giấu thông tin trong ảnh là một bộ phận chiếm tỷ lệ lớn nhất
trong các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong đa
phương tiện bởi lượng thông tin được trao đổi bằng ảnh rất lớn và hơn nữa
giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết
các ứng dụng bảo vệ an toàn thông tin như: nhận thực thông tin, xác định
25
xuyên tạc thông tin, bảo vệ bản quyền tác giả, điều khiển truy cập, giấu thông
tin mật … Chính vì thế mà vấn đề này đã nhận được sự quan tâm rất lớn của
các cá nhân, tổ chức, trường đại học và cả viện nghiên cứu thế giới.
Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ít thay
đổi và chẳng ai biết được đằng sau ảnh đó mang những thông tin có ý
nghĩa.Và ngày nay, khi ảnh số đã được sử dụng rất phổ biến, thì giấu thông
tin trong ảnh đã đem lại nhiều ứng dụng quan trọng trên các lĩnh vực trong
đời sống xã hội. Ví dụ như đối với các nước phát triển, chữ ký tay đã được số
hóa và lưu trữ sử dụng như hồ sơ cá nhân của các dịch vụ ngân hàng và tài
chính. Nó được sử dụng để nhận thực trong các thẻ tín dụng của người tiêu
dùng.
Hay trong một số những ứng dụng về nhận diện như thẻ chứng minh
thư, thẻ căn cước, hộ chiếu… người ta có thể giấu thông tin trên các ảnh thẻ
để xác nhận thông tin thực.
Phần mềm Winword của Microsoft cũng cho phép người dùng lưu chữ
ký trong các ảnh nhị phân rồi gắn vào vị trí nào đó trong file văn bản để đảm
bảo tính an toàn của thông tin. Tài liệu sau đó được truyền trực tiếp qua fax
hoặc lưu truyền trên mạng. Theo đó, việc nhận thực chữ ký, xác nhận thông
tin đã trở thành một vấn đề cực kỳ quan trọng khi mà việc ăn cắp thông tin
hay xuyên tạc thông tin bởi các tin tặc đang trở thành một vấn nạn đối với bất
kỳ quốc gia, tổ chức nào. Thêm vào đó, lại có rất nhiều loại thông tin quan
trọng cần được bảo mật như những thông tin về an ninh, thông tin về bảo
hiểm hay các thông tin về tài chính. Các thông tin này được số hóa và lưu trữ
trong hệ thống máy tính hay trên mạng. Chúng rất dễ bị lấy cắp và bị thay đổi
bởi các phần mềm chuyên dụng. Việc nhận thực cũng như phát hiện thông tin
xuyên tạc đã trở nên vô cùng quan trọng, cấp thiết. Và một đặc điểm của giấu
26
thông tin trong ảnh nữa đó là được giấu một cách vô hình. Nó như cách
truyền thông tin mật cho nhau mà người khác không thể biết được, bởi sau
khi giấu thông tin thì chất lượng ảnh gần như không thay đổi đặc biệt đối với
ảnh mầu hay ảnh xám.
2.3 Tổng quan ảnh BITMAP (BMP).
2.3.1 Giới thiệu ảnh BITMAP (BMP).
Ảnh BITMAP (BMP) được phát triển bởi Microsoft Corporation, được
lưu trữ dưới dạng độc lập thiết bị cho phép Windows hiển thị dữ liệu không
phụ thuộc vào khung chỉ định màu trên bất kỳ phần cứng nào.
Tên tệp mở rộng mặc định của một tệp ảnh Bitmap là .BMP, nét vẽ
được thể hiện là các điểm ảnh. Qui ước màu đen, trắng tương ứng với các giá
trị 0, 1.
Ảnh BMP được sử dụng trên Microsoft Windows và các ứng dụng
chạy trên Windows từ version 3.0 trở lên.BMP thuộc loại ảnh mảnh.
Các thuộc tính tiêu biểu của một tập tin ảnh BMP là: Số bit trên mỗi
điểm ảnh thường được ký hiệu bởi n. Một ảnh BMP n bit có 2n màu. Giá trị n
càng lớn thì ảnh càng có nhiều màu và càng rõ nét hơn.
Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256
màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu).Ảnh BMP 24 - bit có chất
lượng hình ảnh trung thực nhất.
- Chiều cao của ảnh (height), cho bởi điểm ảnh.
- Chiều rộng của ảnh (width), cho bởi điểm ảnh.
Đặc điểm nổi bật nhất của định dạng BMP là tập tin ảnh thường không
được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực
27
tiếp vào tập tin một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc
vào giá trị n
của ảnh.
Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp
nhiều lần so với các ảnh được nén (chẳng hạn JPEG hay PNG). Ảnh BMP
thường được dùng để giấu các thông tin mật vì nó chứa được nhiều thông tin
nhất so với .JPEG. Còn ảnh JPEG lại thường được dùng cho kỹ thuật
Watermarking (tạm dịch là Thủy vân).
2.3.2 Cấu trúc ảnh BITMAP (.BMP).
Cấu trúc một tệp ảnh .BMP gồm có bốn phần:
- Bitmap File Header: Lưu trữ thông tin tổng hợp về tệp ảnh BMP.
- Bitmap Information: Lưu trữ thông tin chi tiết về ảnh bitmap.
- Color Palette: Lưu trữ định nghĩa của màu được sử dụng cho bitmap.
- Bitmap Data: Lưu trữ từng điểm ảnh của hình ảnh thực tế.
a. Bitmap File Header:
Đây là khối bytes ở phần đầu tập tin, sử dụng để định danh tập tin.
Ứng dụng đọc khối bytes này để kiểm tra xem đó có đúng là tập tin
BMP không và có bị hư hỏng không.
28
Offset Size Mục đích
Magic number sử dụng để định nghĩa tập tin BMP:
0x42 0x4D (mã hexa của kí tự B và M). Các mục dưới đây
có thể được dùng:
0000h 2 bytes BM - Windows 3.1x, 95, NT, ... etc
CI - OS/2 Color Icon
CP - OS/2 Color Pointer
0002h 4 bytes Kích thước của tập tin BMP theo byte.
Dành riêng; giá trị thực tế phụ thuộc vào ứng dụng tạo ra 0006h 2 bytes hình ảnh.
Dành riêng; giá trị thực tế phụ thuộc vào ứng dụng tạo ra 0008h 2 bytes hình ảnh.
000Ah 4 bytes Offset, địa chỉ bắt đầu các byte dữ liệu ảnh bitmap.
Hình 2 .5: Chi tiết khối bytes tiêu đề tập tin BMP.
b. Bitmap Information:
Khối bytes này cho biết các thông tin chi tiết về hình ảnh sẽ được sử
dụng để hiển thị hình ảnh trên màn hình.
Bảng dưới đây miêu tả chi tiết khối bytes thông tin tập tin BMP.
29
Offset Size Mục đích
Kích thước của tiêu đề (40 bytes). Eh 4
Chiều rộng bitmap tính bằng pixel (Signed interger). 12h 4
Chiều cao bitmap tính bằng pixel (Signed interger). 16h 4
Số lượng các mặt phẳng màu sắc được sử dụng. Phải được thiết 1Ah 2 lậpbằng 1.
Số bit trên mỗi pixel, là độ sâu màu của hình ảnh. Giá trị điển hìnhlà 1Ch 2 1, 4, 8, 16, 24 và 32.
1Eh 4 Phương pháp nén được sử dụng.
Kích thước hình ảnh. Đây là kích thước của dữ liệu bitmap vàkhông 22h 4 nên nhầm lẫn với kích thước tập tin.
Độ phân giải theo chiều ngang của hình ảnh (Signed interger). 26h 4
Độ phân giải theo chiều dọc của hình ảnh (Signed interger). 2Ah 4
Số lượng màu trong bảng màu. 2Eh 4
Số lượng các màu sắc quan trọng được sử dụng, hoặc 0 khi màu 32h 4 sắcnào cũng đều là quan trọng, thường bị bỏ qua.
Hình 2. 6: Chi tiết khối bytes thông tin tập tin BMP
30
c. Color Palette
Tiếp theo vùng Info là Color Palette của BMP, gồm nhiều bộ có kích
thước bằng 4 byte xếp liền nhau theo cấu trúc Blue – Green - Red và một byte
dành riêng cho Itensity.
Kích thước của vùng Palette màu = 4 * số màu của ảnh.
Bảng màu xuất hiện trong tập tin BMP sau tiêu đề BMP và tiêu đề DIB.
Vì vậy, offset là kích cỡ của tiêu đề BMP cộng với kích thước của tiêu đề
DIB.
Vì Palette màu của màn hình có cấu tạo theo thứ tự Red – Green - Blue
nên khi đọc Palette màu của ảnh BMP vào thì phải chuyển đổi cho phù hợp.
Số màu của ảnh được biết dựa trên số bit cho 1 pixel cụ thể là:
8 bits / pixel: ảnh 256 màu.
4 bits / pixel: ảnh 16 màu.
24 bits / pixel ảnh 24 bit màu.
Có tất cả 2 ^ 24 màu RGB khác nhau, nhưng các loại Bitmap 1 bit (2
màu, hoặc chuẩn Windows là trắng - đen), 4 bits (16 màu), 8 bits (256 màu)
không thểkhai thác hết, nên chỉ liệt kê các màu được dùng trong tệp. Mỗi màu
trong bảng màu được mô tả bằng 4 bytes (BlueByte, GreenByte, RedByte và
ReservByte).
Ví dụ:
Bảng màu loại 1 bit chuẩn Windows có 8 bytes: 0, 0, 0, 0, 255, 255,
255, 0(4 bytes đầu là màu thứ 0, 4 bytes sau là màu thứ 1. Do chỉ có 0 và 1
nên mô tả mỗi điểm ảnh chỉ cần dùng 1 bit).
Tương tự như vậy, bảng màu của tệp 4 bits có 64 bytes, lần lượt từ màu
số 0 đến màu số 15, bảng màu của tệp 8 bits có 1024 bytes (từ 0 đến 255).
Chính vì các màu được liệt kê như vậy nên các màu trong tệp 1 bit, 4 bits, 8
bits được gọi là Indexed, còn các màu trong tệp 24 bits được gọi là True.
31
d. Bitmap Data
Phần Bitmap Data nằm ngay sau phần Color Palette của ảnh BMP. Đây
là phần chứa các giá trị màu của các điểm ảnh trong BMP. Dữ liệu ảnh được
lưu từng điểm cho đến hết hàng ngang (từ trái sang phải), và từng hàng ngang
cho đến hết ảnh (từ dưới lên trên). Mỗi byte trong vùng Bitmap Data biểu
diễn 1 hoặc nhiều điểm ảnh tùy theo số bits cho một pixel.
Đối với mỗi điểm ảnh loại màu Indexed, ta cần 1 bit, 4 bits hoặc 8 bits
để đặc trưng cho điểm đang xét ứng với màu thứ mấy trong bảng màu.
Ví dụ:
Giá trị 0111 (=7) trong loại BMP 4 bits cho biết điểm đó có màu 7
(màu xám theo chuẩn Windows). Riêng loại 24 bits thì không mô tả màu bằng
thứ tự trên bảng màu (nếu liệt kê hết bảng màu của nó thì đã tốn cả Gigabyte
bộ nhớ và đĩa) mà được liệt kê luôn giá trị RGB của 3 màu thành phần.
Ví dụ:
Trắng ={255, 255, 255}, Đen = {0, 0, 0}.
Như vậy, mỗi điểm ảnh loại 1 bit tốn 1/8 bytes (nói cách khác, 1 byte
lưuđược 8 điểm 1 bit), loại 4 bits tốn 1/2 byte, loại 8 bits tốn 1 byte và loại 24
bits tốn 3 bytes.
Tuy nhiên, tính chung cả bức ảnh thì khối dữ liệu không hoàn toàn tỉ lệ
thuận như vậy mà thường lớn hơn một chút.
Lý do chính ở chỗ ta ngầm quy ước số bytes cần dùng cho 1 hàng
ngang phải là bội của 4. Nếu bạn có ảnh 1 x 1, 1 bit, thì cũng tốn 66 bytes như
ảnh 32 x 1, 1 bit (54 cho header, 8 cho bảng màu, 4 cho 1 hàng tối thiểu).
Nếu thử xoay bức hình 32 x 1 (vừa đúng 4 bytes dữ liệu) thành 1 x 32,
sự lãng phí sẽ xuất hiện, lúc đó mỗi hàng sẽ lãng phí 31 bits, tổng cộng 32 lần
như thế (31*4 bytes = 124 bytes).
32
2.4. Một số thuật toán giấu tin trong ảnh và chất lượng
2.4. 1 Kỹ thuật giấu tin LSB.
2.4.1.1 Khái niệm bit ít quan trọng LSB (LSB - Least significant bit).
Bit LSB là bit có ảnh hưởng ít nhất tới việc quyết định tới màu sắc của
mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít quan trọng nhất của một điểm ảnh
thì màu sắc của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. Ví dụ
đối với ảnh 16 bit thì 15 bit là biểu diễn 3 màu RGB của điểm ảnh còn bit
cuối cùng không dùng đến thì ra sẽ tách bit này ra ở mỗi điểm ảnh để giấu
tin… Như vậy kỹ thuật tách bit trong xử lý ảnh được sử dụng rất nhiều trong
quy trình giấu tin. Việc xác định LSB của mỗi điểm ảnh trong một bức ảnh
phụ thuộc vào định dạng của ảnh và số bit màu dành cho mỗi điểm của ảnh
đó.
2.4.1.2. Kỹ thuật giấu tin LSB trong ảnh BITMAP.
Chúng ta sử dụng kỹ thụât “Thay thế” (substitution) để ẩn thông tin
trong một file. Với công nghệ này, bạn thay thế những bit ít quan trọng nhất
của file gốc với dữ liệu mà bạn muốn ẩn. Để sử dụng công nghệ này ta thực
hiện các bước sau:
Khi sử dụng kĩ thuật thay thế sẽ có một số ưu nhược điểm sau:
+Ưu điểm: Kích thước của file sẽ không bị thay đổi sau khi thực hiện
việc ẩn thông tin.
+ Nhược điểm: Có thể giảm chất lượng ảnh sau khi ẩn thông tin; giới
hạn kích thước thông tin muốn ẩn.
Trong kỹ thuật “Thay thế”, phương thức rất phổ biến là LSB (Least
Significant Bit). Phương thức này thay thế bit ít quan trọng nhất trong một vài
byte của file để ẩn những byte dữ liệu chứa thông tin muốn ẩn. Cách này có
33
hiệu quả trong trường hợp mà thay thế LSB không ảnh hưởng đến chất lượng
ảnh. Ví dụ như đối với ảnh Bitmap 24 bit.
* Tại sao giấu thông tin trong ảnh Bitmap 24 bit lại có hiệu quả
hơn:
- Ảnh Bitmap 24 bit: tức là sẽ có 24 bit biểu diễn cho 1 pixel và ảnh
này có 2^24 màu. Thông tin màu cho mỗi pixel được chứa trong 3 byte liên
tiếp của dữ liệu với mỗi byte tương ứng với 3 màu Blue, Green, Red.
- 24 bit màu là dữ liệu đơn giản để đọc. Dữ liệu hình ảnh đi theo ngay
trực tiếp sau đầu mục thông tin và ở đó không có bảng màu nào.
- Các điểm ảnh được lưu theo chiều từ trái sáng phải trên một dòng và
các dòng lại được lưu theo thứ tự từ dưới lên trên .
- Mỗi byte trong vùng BimapData biểu diễn 1 hoặc nhiều điểm ảnh
theo số Bits cho một Pixel.
- 8 bit dữ liệu cần 8 byte dữ liệu nguồn.
Như vậy, với mỗi Pixel sẽ có 8 bit biểu diễn cho mỗi giá trị màu. Giả
sử, ta chỉ xem xét với màu Blue, sẽ có 28 giá trị khác nhau. Sự khác nhau
giữa các giá trị hay gọi cách khác là cường độ của Blue như 11111111 và
11111110 sẽ không bị phát hiện bởi thị giác của con người.
- Đối với ảnh 24 bit, ta có thể nhúng 3 bit dữ liệu muốn ẩn trong 1
pixel. Trong khi đó với ảnh 8 bit ta chi có thể nhúng 1 bit dữ liệu cho mỗi
pixel. Như vậy, ảnh 24 bit cung cấp nhiều khoảng trống hơn so với ảnh 8 bit.
Ví dụ:
Muốn ẩn 1 ký tư A vào trong 1 file ảnh. Giá trị nhị phân của A là
10000001 Lúc này kí tự A được ẩn trong 3 pixel.
+ Giả sử dữ liệu của 3 pixel có thể là
34
(00100111 11101001 11001000)
(00100111 11001000 11101001)
(11001000 00100111 11101001)
+ Sau khi ẩn kí tự A, giá trị của 3 pixel là:
(00100111 11101000 11001000)
(00100110 11001000 11101000)
(11001000 00100111 11101001)
Như vậy, chỉ có 3 bit bị thay đổi trong 3 byte. Và sẽ không bị phát hiện
bởi thị giác của con người.
2.4.2 Kỹ thuật giấu tin SES.
2.4.2.1. Giới thiệu kỹ thuật giấu tin SES:
- Kỹ thuật SES được đề xuất bởi tác giả Jeong Jae Yu.
- Kỹ thuật giấu tin trong ảnh SES (Steganography Evading analysis) là
kỹ thuật giấu tin tránh sự phát hiện bằng phương pháp thống kê RS(Regular
Singular).
2.4.2.2. Kỹ thuật giấu tin SES như sau.
2.4.2.2.1. Quá trình giấu tin:
Đầu vào:
- Ảnh gốc.
- Thông điệp cần giấu.
Đầu ra:
- Ảnh đã được giấu thông điệp.
Các bước thực hiện:
Bước 1:
- Đọc ảnh gốc P.
- Tính toán thống kê RS của ảnh gốc.
Bước 2:
35
- Đọc thông điệp.
- Chuyển thông điệp sang dạng số trong bảng mã Ascii.
- Ghép độ dài thông điệp vào phía trước tin đã được mã hóa.
Bước 3:
- Chuyển mã Ascii của thông điệp sang dạng nhị phân.
Bước 4:
- Thực hiện giấu tin:
x if si = LSB(xi)
x’ =
Fr(xi) otherwise r Є { -1,1}
- Tính LSB của điểm ảnh.
- So sánh LSB của điểm ảnh với lần lượt các phần tử thông điệp đã được
chuyển đổi sang nhị phân ở bước trên.
Nếu phần tử thông điệp bằng với LSB của điểm ảnh thì điểm ảnh sẽ được
giữ nguyên. Ngược lại, nếu không bằng nhau thì xét tiếp:
- Nếu phần tử thông điệp = 1, LSB = 0 => Ta sử dụng hàm F1 .
- Nếu phần tử thông điệp = 0, LSB = 1 => Ta sử dụng hàm F-1 .
Bước 5: Điều chỉnh các thống kê RS với các bộ phận không sử dụng
nhúngtrong ảnh gốc.
- Kiểm tra RS của ảnh đã được giấu tin.
- Sử dụng một mảng để đánh dấu: những điểm ảnh nào được giấu tin thì
gán bằng 1, những điểm ảnh nào chưa được giấu tin thì gán bằng 0.
- Trên phần mà những điểm ảnh gán bằng 0 thì ta điều chỉnh RS saocho
ảnh sau khi được giấu tin tránh phát hiện bằng thống kê RS.
- Áp dụng:
36
Hình 2. 7: Sơ đồ giấu tín SES
37
2.4.2.2.2. Quá trình tách tin:
Đầu vào:
- Ảnh đã được giấu tin.
Đầu ra:
- Ảnh gốc.
- Thông điệp được giấu.
Các bước thực hiện:
- Bước 1: Đọc ảnh giấu thông điệp.
- Bước 2: Lấy LSB của điểm ảnh cho vào mảng mess.
- Bước 3: Lấy 8 bit đầu tiên của mảng mess, tiến hành chuyển đổi từ số
nhị phân sang dạng thập phân, được chiều dài của thông điệp.
- Bước 4: Những bit còn lại trong mảng mess chuyển thành số trong
bảng mã Ascii.
- Bước 5: Chuyển từ số sang xâu kí tự , được thông điệp đã giấu.
38
2.4.3 Kỹ thuật giấu tin theo khối bit
Kỹ thuật giấu tin theo khối bít và sử dụng tính chẵn lẻ của các khối bit
để khôi phục lại thông tin (thường sử dụng các phép toán AND, OR, SUM để
tính toán và biển đổi ảnh giấu tin) thường được dùng cho cả ảnh màu, ảnh
xám và ảnh đen trắng. Ý tưởng của thuật toán là chia ảnh thành các khối nhỏ
và trong mỗi khối nhỏ sẽ giấu một bit b (b =0 hoặc b=1).
Thuật toán
Input: Ảnh Bitmap đen trắng F và thông điệp cần giấu P.
Output:Một file ảnh đã giấu tin F’.
Cách thực hiện:
Bước 1: Chuyển file thông tin cần giấu P sang dạng nhị phân ta được
P’=b1b2…bN.
Bước 2: Chia ảnh gốc F thành N khối nhỏ Fi có kích thước mxn.
Bước 3: Với mỗi khối Fi (i = 1, 2,…N) ta sẽ tiến hành giấu một bit bi (bi
i thỏa mãn:
= 0 hoặc bi = 1) bằng cách biển đổi Fi thành F’
I ta thu được ảnh F’ chưa thông tin cần giấu.
Bước 4: Kết hợp các khối F’
Ví dụ minh họa:
Cho khối B như sau:
0 1 1 0
1 0 1 1
1 1 0 1
0 0 0 1
Khối B có kích thước K = 4x4, Sum (B) = 9.
39
- Giả sử ta giấu bít b = 0 vào khối B.
Số lượng bít 1 trong khối B là 9, sum (B) = 9. Do đó sum (B) ≠ 0 (mod 2).
Như vậy khối B không thỏa mãn yêu cầu. Để giấu bít 0 vào khối B ta thay đổi
một bit bất kỳ trong khối, thường là thay đổi tại vị trí của bít thông tin rõ vào
bít của khối tương ứng (nếu chúng trái dấu nhau) đổi bít 0 thành bít 1 hoặc bít
1 thành bít 0, ta thu được khối B’. Giả sử ta đổi như sau:
Khối B Khối B'
0 1 0 0 0 1 0 0
1 0 1 1 1 0 1 1
1 1 0 1 1 0 0 1
0 0 0 1 0 0 0 1
Hình 2.8: Minh họa giấu bit b = 0 vào khối nhị phân B
Khi đó ta có sum(B’) = 8 , do đó ta được sum(B’) 0 (mod 2)
- Nếu giấu bít b = 1 vào khối B. Ta có sum(B) = 9 nên
sum(B) 1 (mod 2). Khối B được bảo toàn và bit dữ liệu b = 1 coi như được
giấu.
Quá trình tách tin
Trong thuật toán này khóa đơn giản chỉ là kích thước của khối, 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:
Bước 1: Chia ảnh thành các khối nhỏ với kích thước khối đã sử dụng
khai thực hiện giấu tin.
Bước 2: Xét từng khối nhỏ và giải tin theo quy tắc:
- Nếu tổng các bít 1 là lẻ ta thu được bit giấu là 1.
- Nếu tổng các bít 1 là chẵn ta thu được bit giấu là 0.
40
Thực hiện cho đến khi hết các khối giấu và ta được chuỗi bit đã mang
giấu.
Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.
Phân tích thuật toán
Việc chọn kích thước khối giấu tùy thuộc vào kích thước ảnh và lượng
thông tin cần giấu sao cho giấu giàn trải trên từng ảnh.
Với thuật toán này việc chọn khối khá đơn giản, bắt đầu từ khối đầu
tiên và những khối liên tiếp phía sau một cách tuần tự. Tuy nhiên ta có thể
làm khó thuật toán 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 đó, đã làm tăng độ an toàn của thuật toán vì khóa bây giờ còn
thêm cả 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 1 có kích thước khối là 8x8, lần
2 là 8x12,… trong trường hợp này thì khóa là kích thước khối của mỗi lần
giấu.
Bản chất của kỹ thuật giấu tin trong ảnh đen trắng là quy ước nào đó
dưới dạng một mệnh đề (tân từ) P. Nếu tân từ P được thỏa mãn thì ứng với bit
1, ngược lại ứng với bit 0. Tân từ P trong thuật toán trên là sum (B) b (mod
2)
Áp dụng thuật toán cho ảnh màu và ảnh đa cấp xám
Nhược điểm cơ bản của phương pháp này dùng cho ảnh đen trắng là
thông tin giấu vào được rất ít. Nếu giấu nhiều thông tin thì ảnh sẽ thay đổi
nhiều và người sử dụng sẽ dễ dàng phát hiện sự có mặt của thông tin ẩn. Do
đó khi giấu tin người ta thường chọn ảnh màu hoặc ảnh đa cấp xám. Các ảnh
màu và đa cấp xám có giá trị mỗi điểm ảnh được biểu diễn bằng nhiều bit.
Trong dãy các bit biểu diễn này có một bit được gọi là bit ít quan trọng nhất
41
(LSB – Least Significant Bit). LSB là bit mà khi ta đảo giá trị của nó thì điểm
màu bị thay đổi ít nhất.
Ví dụ minh họa:
Với ảnh đa cấp xám, mỗi mức xám h được biểu diễn bởi số nguyên
không âm, thì mức xám h sẽ sai khác ít nhất so với hai mức xám liền kề h + 1
và h – 1. Trong trường hợp này bit LSB chính là bit thấp nhất trong dạng
biểu diễn nhị phân của h.
Hầu hết các thuật toán giấu tin trên ảnh màu hoặc ảnh đa cấp xám đều
áp dụng gián tiếp thuật toán giấu tin trên ảnh đen trắng theo trình tự sau:
Bước 1: Tạo ảnh đen trắng F từ ảnh màu Fc bằng một kỹ thuật nào đó.
Chẳng hạn lấy từ mỗi điểm màu trong Fc một bit ít quan trọng nhất của Fc để
làm một điểm ảnh cho F.
Bước 2: Giấu tin vào ảnh đen trắng F để được ảnh đen trắng F’.
Bước 3: Đưa lại các bit của F’ vào mỗi điểm ảnh màu tương ứng của Fc
để thu được ảnh màu kết quả là F’c.
Như vậy, thuật toán giấu tin trong ảnh đen trắng là cơ sở cho các thuật
toán giấu tin nói chung.
2.4.4 Thuật toán Wu-Lee [7]
Là thuật toán giấu tin khá phổ biến do W.Y.Wu và J.H.Lee đề xuất năm
1989. Môi trường giấu tin là ảnh nhị phân được chia thành các khối bit đề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.
Một số khái niệm
a) Phép toán Λ: Gọi a và b là hai bít tuỳ ý, phép toán nhân bít AND, kí
hiệu là Λ trên hai bít a và 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
42
b) Phép toán : Phép toán cộng loại trừ (còn gọi là phép toán so khác)
XOR, kí hiệu là trên hai bít a và b cho ta giá trị 1 nếu a b và giá trị 0 nếu
a = b.
a b aΛb a b
1 0 0 1
1 1 1 0
0 1 0 1
0 0 0 0
c) Phép toán Λ và : 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 A = (aij), B = (bij), C =(cij), D = (dij)
thì A Λ B = C với cij = aij Λ bij
và A B = D với dij = aij bij
Thuật toán
Ý tưởng của thuật toán là sử dụng một khóa bí mật K là một ma trận
nhị phân có kích thước dùng để làm tăng tính bí mật của các thông điệp
được giấu.
Đầu vào: Ảnh gốc nhị phân F, khóa bí mật K và một thông điệp M cần
giấu.
Đầu ra: F’ là một file ảnh đã giấu tin.
Cách thực hiện:
Khóa K là một ma trận nhị phân có kích thước . Để đơn giản
chúng ta coi kích cỡ của ảnh F là bội của . Việc nhúng thông tin giấu
43
vào trong ảnh sẽ được thực hiện bằng cách thay đổi một số bit của ảnh F theo
các bước sau:
Bước 1: Chuyển thông điệp M sang dạng nhị phân. Chia ảnh F thành
. các khối nhỏ Fi, 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: 0 < SUM (Fi^K) < SUM (K)
Nếu đúng thì chuyển tới 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 sẽ được giữ
nguyên.
Bước 3: Gọi bit cần giấu vào khối Fi là b, ta thực hiện các bước sau để
thay đổi Fi:
Iƒ (SUM (Fi ^ K) mod 2 =b) then
Giữ nguyên Fi;
else iƒ (SUM(Fi ^ K) =1) then
Chọn ngẫu nhiên một bit [Fi]j,k thỏa:([Fi]j,k = 0 và [K]j,k = 1);
Thay [Fi]j,k = 1;
else iƒ SUM(Fi^K) = SUM(K) – 1) then
Chọn ngẫu nhiên một bit [Fi]j,k thỏa ([Fi]j,k = 1 và [K]j,k = 1);
Thay [Fi]j,k = 0;
else
Chọn ngẫu nhiên một bit mà [K]j,k = 1 thay bit [Fi]j,k từ 0 thành 1 hoặc
từ 1 thành;
End iƒ;
44
’ và giữ được tính chất
Sau khi gắn dữ liệu thì Fi được chuyển thành Fi
’^K) < SUM (K)
’^K)
bất biến sau đây:
b (mod 2). 0 < SUM (Fi SUM (Fi
Ví dụ: Giả sử ta cần giấu dãy bit M = 110 vào ảnh F có kích thước 8x8
và một ma trận khóa K có kích thước 4x4, như hình vẽ. Trước hết chia ảnh F
thành 4 khối nhỏ F1, F2, F3, F4, mỗi khối nhỏ có kích thước là 4x4 .
Hình 2. 9: Minh họa giấu dãy bit M = 110 vào 4 khối ảnh nhị phân
Quá trình tách tin:
Đầu vào: F’ là ảnh đã được giấu thông điệp M
K là ma trận khóa bí mật, kích thước .
Đầu ra: Thông điệp được giấu M (ảnh gốc nhị phân F nếu cần giữ
lại).
Các bước thực hiện:
45
’ để tách bit thông tin
. Bước 1: Chia ảnh F’ thành các khối nhỏ F’i với kích thước
Bước 2: Ta kiểm tra các khối Fi
For each F’i.
if0 < SUM (F’i^K) < SUM (K) then
b = SUM (F’i^K) mod 2;
Trong đó b là bít nhị phân đã được giấu.
Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.
Phân tích thuật toán:
Việc chọn khóa K nhằm làm tăng độ bảo mật của thuật toán. Nếu trước
đây chỉ biết kích thước khối là mxn thì đối phương rất rễ khai thác bản tin
mật.
Thuật toán sử dụng phép toán AND để tính Fi K, nên giá trị lớn nhất
của SUM (Fi K) không thể vượt quá SUM (K) 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ế một ảnh F hoàn toàn trắng nào đó được truyền
đi thì người ta dễ dàng tìm được khóa K, vì vậy mà không dùng trường hợp
SUM(F1 K) = 0. Đây là một kẽ hở của thuật toán đối với khóa.
Với SUM (Fi K) = SUM(K) cũng tương tự nếu F hoàn toàn đen thì vị
trí của bit thay đổi cũng là vị trí mà bit tương ứng ở khóa là 1.
Nếu ảnh F được lựa chọn để giấu tin có quá nhiều điểm trắng hoặc quá
nhiều điểm đen thì tỉ lệ bit giấu được sẽ rất thấp.
Để tránh những trường hợp trên thuật toán phải thỏa điểu kiện:
0 < SUM (Fi K) < SUM (K). Và việc chọn khóa K hết sức quan trọng.
46
CHƯƠNG 3: TÌM HIỂU XÂY DỰNG MỘT THUẬT TOÁN GIẤU TIN
MẬT TRÊN ẢNH KỸ THUẬT SỐ
3.1 Xây dựng ma trận 4 bit.
3.1.1 Chọn đa thức nguyên thủy trong trường GF(2).
Chẳng hạn p(x) = x4 + x + 1 là một đa thức nguyên thủy trong GF(2).
Giả sử α là một nghiệm của p(x) trong GF(2).
Khi đó α 4 + α + 1 = 0 hay nói cách khác α 4 = α + 1
( Trong GF(2) thì phép cộng và phép trừ là như nhau).
3.1.2 Xây dựng không gian các nghiệm của p(x).
Ta biết rằng P(x) có 24 – 1 véctơ riêng biệt. Ta có thể coi không gian
này là một không gian véctơ với phép cộng và nhân với 1 vô hướng trong
trường GF(2). Ta cũng biết rằng không gian véctơ này có số chiều là 4. Ta lấy
4 véctơ làm cơ sở.
Giả sử đó là {1000, 0100, 0010, 0001} = S. Tất cả các vectơ của không
gian nghiệm của đa thức P(x) là tổ hợp tuyến tính của các vectơ trong S. Ta
có 15 nghiệm có ký hiệu là:
α5 = α*α4 = α2 + α = 0110 α10 = 1110 α0 = 1000
α1 = 0100 α6 = 0011 α11 = 0111
α2 = 0010 α7 = 1101 α12 = 1111
α3 = 0001 α8 = 1010 α13 = 1011
α4 = α+ 1= 1100 α9 = 0101 α14 = 1001
α15 = 1000
3.1.3 Lập bảng mã 26 chữ cái latinh
Ta biết rằng, trong các ngôn ngữ nói chung, ngôn ngữ tiếng Anh nói
riêng, các chữ cái xuất hiện trong một văn bản bất kỳ có tần số khác nhau. Ví
47
dụ: trong một văn bản tiếng Anh, chữ cái "e, t", xuất hiện với tần số cao nhất
còn các chữ cái "z, q, k, j," xuất hiện với tần số thấp nhất. Sau khi thống kê
nhiều mẫu ngôn ngữ tự nhiên tiếng anh chính thống. Ta thấy rằng những cái
cao tần nhất là: E, T, A, O, I, N, S, R, H, L, D, C, U, M. Các chữ cái còn lại
thuộc thấp tần đó là: F, P, G, W, Y, B, V, K, X, J, Q, Z. Từ đó lập được bảng
mã 26 chữ cái như sau:
STT Mã Cấp độ Chữ cái Cấp độ Chữ cái
1 1000 I E II F
2 0100 I T II P
3 0010 I A II G
4 0001 I O II W
5 1010 I I II Y
6 0101 I N II B
7 0110 I S II V
8 1001 I R II K
9 1100 I H II X
10 0011 I L II J
11 1101 I D II Q
12 1110 I C II Z
13 0111 I U II Stop
14 1011 I M II end
15 0000 I
16 1111 II
Hình 3. 1: bảng mã 26 chữ cái latinh
48
Ví dụ:
Informationend.0000 -> 1010 0101 1111 1000 0000 0001 1001
1011 0010 0100 1010 0001 0101 1111 1011
3.2 Xây dựng thuật toán nhúng
3.2.1 Xây dựng ma trận sinh G
{a, b,…, z}; i= Giả sử ta có thông báo m= m1m1….mn; Mi
Và 1 ảnh C kích cỡ đủ để nhúng m ( gồm có ít nhất là 15 n các LSB
của dữ liệu của ảnh C)
Ma trận H gồm 4 hàng, 15 cột, mỗi cột của H là một vecto αi với i=
0,,2,…,14
α0 α1 α2 … α14
1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 1
2 0 1 0 0 0 1 1 0 1 0 1 1 1 0 1 =H= (H1H2...H15)
3 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1
4 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1
Với Hj=
3.2.2 Đổi thông điệp m = m1…..mn sang dãy nhị phân theo bảng A
{ 0, 1}, I = 1, 2,.., 4n Ta có X = x1x2x3......x4n với xi
49
Ký hiệu
X[1] = x1 x2 x3 x4
X[2] = x4+1….x4+4 = x5 x6 x7 x8
X[3] = x9 x10 x11 x12
…….
X[n] = x4n-3 x4n-2 x4n-1 x4n
3.2.3 Trích chọn 4n LSB của dữ liệu ảnh C bắt đầu từ một vị trí ngẫu
nhiên cho trước và được ký hiệu là C1C2..C4n
Đặt:
Y[1] = C1 C2 …C15
Y[2] = C16 C17….C30
Y[3] = C31 C32…C45
…….
Y[n] = C4n-14C4n-13…x4n
3.2.4 Mã hóa:
Bước 1
Với i = 1
Đặt ZT [1] = XT [1] + HYT [1]
Trong đó XT là vectơ chuyển vị của vectơ X ( chuyển vectơ
dòng thành vectơ cột)
Bước 2
Tìm trong ma trận H nếu không tồn tại một cột Hj ( j = 1,2,…,15)
nào trùng với ZT[1] thì bỏ qua và coi như ta đã nhúng được một ký tự
m1 vào ảnh C và cho i = i + 1 và trở lại bước 1.
50
Bước 3.
Giả sử có tồn tại một nào đó mà = ZT[1] thì ta thực hiện
việc đảo bit tại vị trí bít các bit còn lại vẫn giữ nguyên và như vậy ta
nhúng được ký tự m1 vào ảnh C và cho i = i+ 1 rồi quay lại bưới 1 cho
đến khi i ≥ n thì thuật toán dừng và trả lại các LSB mới vào ảnh C, ta
nhận được ảnh stego S. Như vậy một văn bản có n ký tự, ta chỉ thay đổi
không quá n LSB của dữ liệu ảnh.
3. 3 Trích chọn (extraction)
Đầu vào: Ảnh S ma trận H và bảng mã chữ cái (Hình 3.1)
Đầu ra: Bảng thông báo m = m1m2….mn
Các bước tiến hành
Bước 1:
Trích chọn 4n LSB của dữ liệu ảnh S2 với điểm khởi đầu cho
trước ta được s2 = s1s2…….s15n
Bước 2:
Chia dãy bit thành n block liền nhau có độ dài bằng 15 và được
ký hiệu là S[1], S[2], …, S[n]
Bước 3:
Với I = 1,2,..
Tính X[i] = H.ST[i](ST[i] là chuyển vị của S[i]
với I = 1,2,…,n
Bước 4:
Chuyển X[i] chữ cái thứ I ( I = ) = mi
]. terminatesalgorithm Return [mi, I =
51
Ví dụ: Ta lấy lại ví dụ ở mục 3.2:
M = informationstop = 0000 1010 0101 1111 1000 0000 0001
1001 1011 0010 0100 1010 0001 0101 1111 0111 ./.
Ở đây n = 16. Ma trận H đã cho ở 3.3
Ta có:
X[1] = 0000 X[2] = 1010 X[3] = 0101 X[4] = 1111
X[5] = 1000 X[6] = 0000 X[7] = 0001 X[8] = 1001
X[9] = 1011 X[10] = 0010 X[11] = 0100 X[12] = 1010
X[13] = 0001 X[14] = 0101 X[15] = 1111 X[16] = 0111
Bây giờ giả sử ảnh cover C tại khởi điểm, để đơn giản ta lấy khởi điểm
là bit LSB đầu tiên của dữ liệu ảnh, ta trích ra được 15n = 240 các LSB của
ảnh C là:
01001 00001 10110 00111 11111 10000 01000 00000 11111 10110
00010 00100 000010 00111 00001 10000 01110 00100 00011
11110 10000 11111 00100 10111 10000 01001 10001 10110 00100
00000 10001 01100 00001 10100 01011 00000 00111 10100 00010
11111 10000 01100 10010 00000 11100 00111 11100 10100.
Từ đó ta có:
Y[1] = 01001 00001 10110 Y[2] = 00111 11111 10000
Y[3] = 01000 00000 11111 Y[4] = 10110 00010 00100
Y[5] = 00001 00111 00001 Y[6] = 10000 01110 00100
Y[7] = 00011 11110 10000 Y[8] = 11111 00100 10111
52
Y[9] = 10000 01001 10001 Y[10] = 10110 00100 00000
Y[11] = 10001 01100 00001 Y[12] = 10100 01011 00000
Y[13] = 00111 10100 00010 Y[14] = 11111 10000 01100
Y[15] = 10010 00000 11100 Y[16] = 00111 11100 10100./.
Mã hóa bước 4 tính:
Tính ZT[1] = H.YT[1] = H.( 01001 00001 10110)T = (0000)T +
(1100)T = (1100)T
Tìm trong ma trân H ta thấy cột thứ 9 của ma trân H trùng với
ZT[1] = (1100)T
Do đó ta đảo bit thứ 9 của Y[1] từ 0 chuyển sang 1. Các LSB của
ảnh C là Y[1] = 01001 00001 10110 trở thành Y'[1] = 01001 00011
10110 . Như vậy ta đã giấu được dãy 0000 vào ảnh C.
Tiếp tục:
ZT[2] = XT[2] + H.YT[2] = 1010 + H.YT[2] = (1010)T + (0001)T
Ta thấy ZT[2] = (1011)T trùng với cột thứ 14 của H. Do đó vecto
LSB Y[2] chuyển thành Y'[2] = 00111 11111 10010. Như vậy đã giấu
được ký tự 1010 vào C.
ZT[3] = XT[3] + H. YT[3] = (1011)T +H. (01000 00000 1111)T =
(1011)T + (0100)T = (1111)T
Ta thấy ZT[3] = (1111)T trùng với cột thứ 15 của H. Do đó bít thứ
15 của Y[3] = 1 được chuyển sang 0 và Y’[3] = 01000 00000 11110.
Như vậy sẽ giấu được ký tự 1011 vào C.
ZT[4] = XT[4] + H. YT[4] = (1111)T +H. (10110 00010 00100)T =
(1111)T + (0000)T = (1111)T
53
Do đó thay LSB thứ 15 của Y[4] ta được Y’[4] = 10110 00010
0010
ZT[5] = XT[5] + H. YT[5] = (1000)T +H. (00001 00111 00001)T =
(1000)T + (0011)T = (1011)T
ZT[5] = (1011)T trùng với cột thứ 14 của H, vậy Y’[5] = 00001
00111 00011
Tương tự như vậy ta tính được Y’[6], Y’[7], Y’[8] …. Và cuối
cùng ta có
ZT[16] = XT[16] + H. YT[16] = (0111)T +H. (00111 11100
10100)T = (0111)T + (1001)T = (1110)T
ZT[16] = (1110)T trùng với cột thứ 12 của H, vậy Y’[16] = 00111
11100 11100
Như vậy các LSB của ảnh stego tương ứng ảnh C là:
Y’ = 01001 00011 10110 00111 11111 10010 00001 00000
11110 10110 00010 00101 00001 00111 00011 10000 01100 00100
00001 11110 10000…..00111 11100 11100./.
Nếu tính tần số xuất hiện bit 1 và bit 0 theo thứ tự lần lượt của Y và Y’
ta thấy rằng sự khác biệt giữa chúng là khó có thể phân biệt, đến mức các kỹ
thuật thống kê cấp 1 không thể phát hiện được.
3.4 Đánh giá độ an toàn của hệ thống
Định nghĩa hình thức về độ an toàn steganography.
Ý tưởng:
Chọn ngẫu nhiên một ảnh cover C với phân bổ xác suất Pc(.). Việc giấu
( nhúng) một tài liệu m nào đó vào C được coi như là một hàm Ek ( ánh xạ)
được xác định trong C. Gọi Ps(.) là phân bố xác suất của Ek (c, m, k), đó là
một tập hợp các ảnh stego được tạo ra bởi hệ thống steganography nào đó.
54
Nếu C không phải là ảnh stego thì Ps( C ) = 0. Để tính Ps(.) phân bố xác suất
trên không gian khóa K và không gian bản rõ M đã được ấn định trong Đề tài
ta giả định, đó là ngôn ngữ tiếng Anh. Sử dụng định nghĩa về Entropy:
D(P1‖P2) giữa 2 phân bố xác suất P1 và P2 được xác định trên hệ thống Q là:
D(P1‖P2) =
Nếu P1(.) = PC(.), P2(.) = PS(.), thì đây là đại lượng đo sự khác biệt giữa
ảnh cover và ảnh stego tương ứng. Đại lượng D(PC‖PS) càng bé thì sự phân
biệt giữa ảnh C và ảnh S càng khó khăn. Nếu D(PC‖PS) = 0 thì ta coi như trong
thực hành không thể phân biệt được giữa ảnh C và ảnh S. Sử dụng định nghĩa
về Entropy (độ bất định) ta có các khái niệm sau đây:
Định nghĩa 1:
Giả sử Ω là một hệ thống steganography nào đó. Kí hiệu PS là phân bố
xác suất của các ảnh stego nhận được qua đường truyền hoặc lưu trên kênh
cộng cộng và PC là phân bố xác suất của C. Hệ thống Ω là ε an toàn chống lại
các tấn công thụ động nếu: D(PC‖PS) ≤ ε với ε ≥ 0 cho trước.
Trường hợp ε = 0 thì Ω có độ an toàn tuyện đối( hoàn hảo)
Khi D(PC‖PS) = 0 theo bổ đề cơ bản của lý thuyết thông tin [C.rao’s] thì
PC = PS, có nghĩa ta không thể phân biệt đâu là ảnh C và đâu là ảnh Stego S.
Định lý 1:
Tồn tại một hệ thống steganography cho độ an toàn hoàn hảo.
Chứng minh:
Giả sử, C là tập hợp tất cả dãy nhị phân có độ dài n, PC có phân bố đều
trên C, cho e là thông điệp mật, e C. Người gửi chọn ngẫu nhiên c C và
tính S = c , trong đó là phép cộng bit không gian nhớ (XOR). Khi đó rõ
ràng PS có phân bố đều trên C. Do đó PS = PC, vi vậy D(PC‖PS) = 0. Quá trình
55
trích chọn được thực hiện đơn giản là e = s .Thuật toán trên đơn giản
nhưng nó không hữu ích vì trong thực tiễn không có một nhà quan sát nào giả
sử Alice và Bob trao đổi dãy ngẫu nhiên. Định lý được chứng minh.
Định lý 2:
Cho Ω là một hệ thống Steganography thỏa mãn điều kiện ε – an
toàn ( ɛ - secure) chống lại các tấn công bị động, xác suất để kẻ tấn công
không phát hiện được sự có mặt của thông điệp trong C. Còn α là xác suất dò
tìm sai thông điệp ẩn trong C. Khi đó hệ thức sau đây đúng:
d(α, )= . Đặc biệt nếu thì
Chứng minh:
Để chứng minh định lý, trước hết chúng ta đưa ra một tính chất quan
trọng về Entropy. Giả sử Q0 và Q1 là 2 biến ngẫu nhiên được xác định trên tập
Q với phân bố xác suất lần lượt là , Còn f là hàm f: Q T.
Trong đó f(C) =
Khi đó,D( PT0 ‖ PT1 ) D( PQ0 ‖ PQ1 ).
Trong đó , lần lượt là hàm phân bố xác suất của biến ngẫu nhiên
f(Q0) và f(Q1)
Dựa vào tính chất trên của Entropy ta chứng minh định lý 2 như sau:
Trường hợp ảnh cover C không chứa thông điệp mật, các ảnh cover
được phân bố theo định luật Pc. Bây giờ chúng ta xét biến ngẫu nhiên f (C)và
tính phân bố xác suất của nó là . Trong trường hợp f( C) = 1 kẻ tấn công
mắc sai lầm loại 2. Do đó (1) = và vì vậy (0) = 1 - . Nếu ảnh cover
không chứa thông điệp mật, các ảnh cover sẽ có phân bố xác suất PS. Chúng
ta tính phân bố của của f(S).
56
Trong trường hợp f(S) = 0 thì kẻ tấn công mắc sai lầm loại I, vì kẻ tấn
công ta không phát hiện được một thông điệp nào cả. Vì vậy (0) = và vì
(1) = .
Do đó Entropy D( ‖ ) có thể được biểu diễn dưới dạng:
D( ‖ ) = = (1- ) + = d( , )
Nhưng theo nhận xét trên ta có d( , ) = D( ‖ ) D( ‖ ) . Đó
là điều cần chứng minh vì = 0 (với β <1). Sử dụng quy tắc De
Lospital, ta có d( , ) = . Do đó nếu = 0
Đối với hệ thống Steganography có an toàn với = 0. Có thể kết
luận rằng: với xác suất , các kẻ tấn công bị động khó có thể tìm được
thông điệp giấu trong ảnh với xác suất rất cao. Nhưng tương đương với
. Do đó hệ thống được đánh giá là an toàn nếu lấy đủ bé.
Ứng dụng lý thuyết trên để xác định chất lượng của thuật toán đề xuất.
Giả sử, chúng ta có một ảnh cover C. Sử dụng thuật toán được đề xuất để giấu
thông điệp mật M vào ảnh C và nhận được ảnh kết quả stego S = C(M). Bây
giờ ta xác định các hàm phân bố xác suất PC và PS. Các bước tiến hành như
sau:
Bước 1: Ta trích chọn các LSB của dữ liệu ảnh C và S bắt đầu từ khởi
điểm giấu tin đã quy ước khi thực hiện thuật toán giấu, giả sử ta được dãy sau:
C1: 101010100010011111100010011111
S1: 101010100110011111100010011111
Bước 2: Tính phân bố xác suất của bit 0,1 trên C1 và S1
Phân bố xác suất của bít 1 trên C1 là PC11 = 17/10 = 0.55
Phân bố xác suất của bit 0 trên C1 là PC10 = 13/30 = 0.45.
57
Phân bố xác suất của bit 1 trên S1 là PS11 = 16/30 = 0.54
Phân bố xác suất bit 0 trên S1 là PS10 = 14/30 = 0.46.
Bước 3: tính tổng Ʃ = Ʃqϵ {0,1} PC10(q) log2 (PC10(q)/PS10 (q) )
= (0.45xlog2(0.45/0.46)) + (0.55 x log2(0.55/0.54))
= - 0,0142 + 0,0145 = 0,0003
Bước 4: Theo định lí 1 thì ε = 0 là thuật toán an toàn tuyệt đối. Vậy
thuật toán đạt mức an toàn nếu ε ≤ 0,05. Ʃ = 0,0003 < 0,05 vậy thuật toán giấu
của ta là an toàn hoàn hảo.
3.5 So sánh độ an toàn của 2 hệ thống nêu trên
Hệ thống 1 ( Thuật toán đã được công bố)
Hệ thống 2 ( Thuật toán xây dựng trong chương 3)
Cho cặp ảnh C, S1( S1 là ảnh stego thu được từ ảnh C và thuật toán giấu
tin đã được công bố).
Trích chọn, từ khởi điểm giấu tin, các LSB của ảnh C và của ảnh S1
được kí hiệu lần lượt là C1C2….Cn và S1S2…Sn ( n là độ dài thông điệp).
Ta tính số lần ( tần số) xuất hiện được các số 0 và các số 1 trong C và
trong S1. Tần số đó được ký hiệu lần lượt là: {fC(0), fC(1)} và
Bây giờ, ta tính =
Nếu - an toàn. Trái lại Nếu thì hệ thống S1 đạt
- an toàn ( ở đây ta lấy = thì hệ thống S1 là không đặt
0,05). Trong đó . là ước lượng tốt nhất theo thứ tự của PC và
Bây giờ tính tần số 0 và 1 xuất hiện trong S2 = S21S22…..S2n
58
Kí hiệu và lần lượt là ước lượng không chệch tốt nhất của
xác suất và .
Để so sánh độ an toàn của hệ thống S1 và S2 trên ảnh cover C ta có bổ
đề sau:
Bổ đề 1(*)
Điều kiện cần và đủ để hệ thống S2 tốt hơn hệ thống S1 là bất đẳng thức
sau đây được duy trì:
Chứng minh
a. Giả sử, bất đẳng thức (3) được duy trì. Ta sẽ chứng minh rằng
, tức là sẽ chứng minh
rằng
(*) Bổ đề do tác giả đề xuất.
Thật vậy, ta có:
=
= (theo giả
thiết). Vậy điều kiện đủ được chứng minh
b. Chứng minh điều kiện cần
59
Giả sử D( D( ) ta sẽ chứng minh rằng bất đẳng thức (3)
được thỏa mãn.
Theo giả thiết cần, ta có:
0 D( D( )
1 =
=
= = .
Điều phải chứng minh
Bổ đề 1 vừa được đề xuất ở trên làm cơ sở để so sánh hai hệ thống
steganography. Thật vậy:
+ = (0) + (1) (4)
Nếu hệ thức (4) thì hệ thống Steganography S2 tốt hơn hệ thống
Steganography S1 và ngược lại thì hệ thống S1 tốt hơn S2 .
3.6 Nhận xét đánh giá
Thuật toán nhúng và trích chọn khá đơn giản và rất nhanh chóng.
Do sự thay đổi rất ít các LSB của các pixel dữ liệu ảnh, nên chúng có
thể được mở rộng để giấu vào bit gần thấp nhất (next to last bit) của các pixel
ảnh mà không sợ làm giảm độ trong sáng của ảnh môi trường.
Độ bảo mật được đảm bảo nếu khởi điểm giấu và ma trận được giữ bí
mật. Khởi điểm có thể thay đổi cho từng lần giấu, còn ma trận H có thể được
dùng lâu dài (hàng năm) việc thay đổi ma trận H cũng khá đơn giản nhưng
phải theo đúng lý thuyết.
60
Thuật toán xây dựng có thể giấu được nhiều tin hơn nhưng vẫn đảm
bảo được chất lượng ảnh sau khi giấu.
Thuật toán giấu thông tin trong các bit LSB nhưng mỗi một chữ cái
được giấu vào trong một bit LSB nên nó làm cho số bit LSB thay đổi it nhất.
Do sự thay đổi các LSB trong ảnh môi trường rất ít (khoảng 2-3%) nên các
phương pháp phát hiện bằng kỹ thuật thống kê rất khó.
Tuy nhiên trong quá trình giấu và trích chọn đòi hỏi phải có độ chính xác
cao, nếu không việc trích chọn sẽ gặp khó khăn vì chỉ cần sai một bit là mất
luôn cả bit chứa ký tự giấu.
3.7. Chương trình thử nghiệm
3.7.1 Môi trường cài đặt
Hệ thống thử nghiệm được xây dựng trên môi trường lập trình Visual
Studio 12, sử dụng ngôn ngữ lập trình C#.
Thực hiện trên Windown 8.1.
3.7.2 Mô hình hệ thống
Hệ thống gồm hai phân hệ:
Phân hệ giấu tin: Thực hiện giấu 1 thông điệp
Input: - Ảnh kỹ thuật số F cấp nxn
- Thông điệp cần giấu M
Output: - Ảnh S chứa nội dung thông điệp M
Phân hệ tách tin: Kiểm tra, phát hiện khả năng có tồn tại tin giấu trong ảnh và
tách đoạn tin giấu.
Input: Ảnh S chứa thông điệp giấu.
Output: Kết luận ảnh có giấu tin hay không? Nếu có hiển thị thông điệp
được giấu và thông báo tách tin thành công.
61
Tập dữ liệu thử nghiệm
- Ảnh kỹ thuật số sử dụng:
- 10 ảnh có nội dung, độ phân giải khác nhau.
- Thông điệp bí mật: Tiếng Việt có dấu, độ dài từ 10% - 20% so với
dung lượng ảnh.
Kết quả thử nghiệm:
Mô hình thử nghiệm đã đáp ứng được yêu cầu ban đầu đề ra của luận
văn. Thuật toán giấu/tách tin cho kết quả nội dung chính xác.
Một số đánh giá ảnh sau khi giấu tin:
- Kích thước ảnh sau khi giấu tin mật không thay đổi;
- Quan sát bằng mắt thường khi so sánh ảnh có tin giấu với ảnh gốc
không có sự khác biệt;
- Thử nghiệm phân tích ảnh bằng phương pháp phân tích trực quan (tăng
cường các bít LSB) cũng không phát hiện được ảnh có tin giấu.
62
Một số giao diện của chương trình:
Hình 3. 2: Giao diện chính của chương trình
Hình 3. 3: Giao diện giấu tin
63
Hình 3. 4: Giao diện giấu file dữ liệu
Hình 3. 5: Giao diện tách tin
64
KẾT LUẬN
Hiện nay giấu thông tin trong ảnh là một bộ phận chiếm tỉ lệ lớn nhất
trong các chương trình ứng dụng hệ thống giấu tin trong đa phương tiện bởi
lượng thông tin được trao đổi bằng ảnh là rất lớn và hơn nữa giấu thông tin
trong ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết các ứng dụng
bảo vệ an toàn thông tin. Chính vì vậy mà thông qua việc nghiên cứu các kỹ
thuật giấu tin mật trên ảnh, luận văn phân tích đánh giá ưu nhược điểm của
các kỹ thuật đã có từ đó làm cơ sở để xây dựng thuật toán giấu tin mật đơn
giản dễ cài đặt và khắc phục được một số nhược điểm của các thuật toán trước
đây và thiết kế các hệ thống giấu tin mật trên ảnh phục vụ tối đa nhu cầu
người sử dụng.
Đồng thời luận văn cũng tìm hiều một số thuật toán phát hiện ảnh có
giấu tin, đặc biệt là giấu tin mật. Chủ yếu là tiếp cận bằng phương pháp thống
kê.
Trên cơ sở đó luận văn đã trình bày và đạt được các kết quả chính như
sau:
1. Nghiên cứu tài liệu, hệ thống lại các vấn đề sau:
- Tổng quan về giấu tin
- Một số kỹ thuật giấu tin mật trong ảnh kỹ thuật số
2. Tìm hiểu xây dựng một thuật toán giấu tin mật đơn giản
3. Thử nghiệm và cài đặt thuật toán giấu tin mật đã xây dựng
Hướng phát triển của luận văn:
Luận văn đã trình bày bài toán giấu tin mật và tìm hiểu, xây dựng thuật
toán giấu tin mật đơn giản, tuy nhiên, thuật toán xây dựng vẫn còn tồn tại một
vài vấn đề chưa được giải quyết đó là:
Việc xác định khởi điểm i và phải có phương thức trao đổi khởi điểm i.
Mã hóa thông tin trước khi giấu tin và trao đổi khóa.
65
Vì thời gian nghiên cứu có hạn, trình độ hiểu biết của bản thân em còn
nhiều hạn chế nên bài luận văn của em không tránh khỏi những thiếu sót, em
rất mong nhận được sự góp ý quý báu của tất cả các thầy cô giáo để em có thể
hoàn chỉnh hơn nữa luận văn.
Em xin chân thành cảm ơn!
66
TÀI LIỆU THAM KHẢO
Tài liệu tiếng việt:
[1]. Nguyễn Xuân Huy, Trần Quốc Dũng (2003), Giáo trình giấu tin và
thủy vân ảnh, Trung tâm thông tin tư liệu, TTKHTN-CN.
[2]. Trần Văn Sự, Nguyễn Văn Tảo, Trần Thị Lượng (2015), Giáo trình
an toàn bảo mật thông tin, Nhà xuất bản Đại học Thái Nguyên.
[3] Hồ Thị Hương Thơm, Hồ Văn Canh, Trịnh Nhật Tiến (2016), “Ước
lượng xấp xỉ giấu tin trên miền LSB của ảnh”, Kỷ yếu hội thảo Quốc gia
- một số vấn đề chọn lọc của CNTT và truyền thông lần thứ XII, Đồng
Nai, PP. 488 – 495
[4] Trịnh Nhật Tiến (2008), Giáo trình an toàn dữ liệu, Hà Nội.
Tài liệu tiếng anh:
[5] Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone (1999),
Handbook of Applied cryptography, CRC press Boca Raton NewYork
London Tokyo, PP.57-65
[6] C. Cabin (1998), “An information Hiding – Theoretic model for
steganography”, In D. Aucsmith, editor, Information Hiding, 2nd
Intemational workshop, Volume 1525 of LNCS, Springer – Verlag, New
York, PP. 306 – 318
67
[7] Chi - Kwong Chan*, L. M. Cheng, Hiding data in Images by simple
LSB substitution, Pattern recognition 37 (2004) 469 – 474.
[8] Eric Cole (2003), " Hiding in Plain Sight: Steganography and the Art
of Covert Communication", Wiley Publishing, Inc.,
[9] Firas A. Jassim, Hind E.Qassim, "Five Modulus Method for Image
Compression", Signal and Image Processing: An International Journal
(SIPIJ), vol.3,No.5, October 2012.
[10] Neal Koblitz (1987), A course in number theory and cryptography,
Springer – Verlag New York, Berlin Heidelberg, London, Paris, Tokyo.
[11] Stephen B.Wicker (1995), Error Control Systems for Digital
communication and storage, Pretice Hall.