3. Bố cục của luận văn
3.2 Xây dựng thuật toán nhúng
3.2.1 Xây dựng ma trận sinh G
Giả sử ta có thông báo m= m1m1….mn; Mi {a, b,…, z}; i=
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
Với Hj=
3.2.2 Đổi thông điệp m = m1…..mn sang dãy nhị phân theo bảng A
Ta có X = x1x2x3...x4n với xi { 0, 1}, I = 1, 2,.., 4n α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
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.
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 Return [mi, I = ]. terminatesalgorithm
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
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
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 đó.
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
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).
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.
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 thì hệ thống S1 đạt - an toàn. Trái lại Nếu thì hệ thống S1 là không đặt - an toàn ( ở đây ta lấy = 0,05). Trong đó là ước lượng tốt nhất theo thứ tự của PC và .
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
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.
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 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.
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.
Một số giao diện của chương trình:
Hình 3. 4: Giao diện giấu file dữ liệu
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