2. Những đóng góp của luận văn
2.4.2. Thuật toán CPT
Tóm tắt thuật toán
Để tiện cho việc trình bày, trong luận văn sẽ trình bày nội dung thuật toán CPT áp dụng cho một khối bit (ma trận nhị phân). Các phép toán sử dụng trong thuật toán này đều được hiểu theo nghĩa mod 2r
Input:
- Fm×n là ma trận nhị phân (khối điểm ảnh) và là môi trường dùng để giấu tin - r là số bit cần giấu vào ma trận F, r phải thỏa mãn điều kiện 2r≤m×n. - Km×n là ma trận nhị phân và là khóa bí mật để giải tin
- Wm×n là ma trận trọng số cấp r, ma trận W được giữ bí mật - b1,b2,...,br là dãy bit nhị phân cần giấu
30 Output:
Gọi b là giá trị thập phân của dãy b1,b2,...,br, G là ma trận sau khi đã giấu b vào F bằng cách biến đổi tối đa 2 phân tử trong ma trận F, khi đó G phải thoả mãn bất biến (2.5).
SUM((GK)W) mod 2r = b (2.5)
Nội dung thuật toán
Bước 1: Tính T = FK Bước 2: Tính S = SUM(TW) Bước 3:
Xây dựng tập:
Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)} (2.6) Nhận thấy nếu đảo giá trị (thay 0 thành 1 hoặc thay 1 thành 0) của một phần tử Fi,j sẽ làm cho S tăng thêm α đơn vị.
Bước 4:
Gọi G là khối bit sau khi đã giấu b vào F, và S’= SUM((GK)W). Bước này sẽ thực hiện giấu b bằng cách thay đổi tối đa hai bit trong F sao cho đạt được bất biến:
S’ = b (mod 2r) (2.7) Bất biến (2.7) này cũng chính là cơ sở để khôi phục lại tin.
- Tính d = b – S (mod 2r)
Trường hợp 1 Nếu d = 0 thì b = S (mod 2r) nên đã đạt được bất biến (2.7) do đó trường hợp này giấu b vào F mà không cần phải biến đổi F
Trường hợp 2 Nếu d 0 thì cần phải biến đổi F sao cho đạt được bất biến (2.7). Trong trường hợp này có hai khả năng:
31
Trường hợp 2.1 NếuZdØ thì chọn (i,j) Zd rồi đảo giá trị phần tử Fi,j, khi đó theo định nghĩa (2.1) S sẽ tăng thêm d đơn vị do đó đạt được bất biến (2.7)
Trường hợp 2.2 Nếu Zd = Ø thì tiếp tục xét Z2d, Z3d.... Chọn h là số tự nhiên đầu tiên thoả mãn ZhdØ (xem nhận xét 2.1 bên dưới)
+ Chọn (i,j) Zhd và thay đổi bit Fi,j, khi đó theo (2.6) S tăng thêm một lượng là hd (2.8)
+ Chọn (u,v) Zd-hd và thay đổi Fu,v, khi đó theo (2.6) S tăng thêm một lượng là d-hd (Zd-hd Ø xem nhận xét 3.2 bên dưới) (2.9)
Từ (2.8) và (2.9) suy ra cần thay đổi hai bit Fi,j và Fu,v của F để có thể giấu được r bit thông tin vào F.
Nhận xét 2.1. Qua các bước thực hiện của thuật toán nhận thấy thuật toán sẽ luôn thực hiện được nếu tồn tại h thoả mãn ZhdØ.
Điều này sẽ được chứng minh trong mục tiếp theo. 2.4.3. Cách chứng minh về tính đúng đắn của thuật toán
Nhận xét 3.1. Theo định nghĩa tập Zα và tính chất của ma trận trọng số W thì có thể suy ra: tập Z2r1 Ø.
Chứng minh Z2r1 Ø
Đặt α = 2r-1 thì giá trị α {1,2,…,2r-1}
Theo tính chất của ma trận trọng số W, các phần tử của W cần thoả mãn: {Wi,j |i=1..m, j=1..n} = {1,2, …,2r-1}
Vì vậy phải tồn tại ít nhất một cặp (i,j) sao cho Wi,j = α .
Mặt khác do T là ma trận nhị phân nên Ti,j có giá trị bằng 0 hoặc 1. Xét các trường hợp:
- Nếu Ti,j = 0: Do Wi,j = α nên (i,j) thoả điều kiện thứ nhất trong (2.6), vậy (i,j) Zα
32
- Nếu Ti,j = 1: Do Wi,j = α mà α = 2r-1 = 2r – α nên (i,j) thoả điều kiện thứ hai trong (2.6), vậy (i,j) Zα
Do đó tập Z2r1 Ø.
Nhận xét 3.2. nếu Zα = Ø thì Z -αØ Chứng minh
Theo (2.6) định nghĩa về tập Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}
Do Zα = Ø và theo định nghĩa 2.3.2 ma trận trọng số W luôn thoả mãn điều kiện {Wi,j |i=1..m, j=1..n} = {1,2, …,2r-1}. Vì vậy, phải tồn tại một phần tử (u,v) để (Wu,v = α và Tu,v = 1) hoặc (Wu,v = 2r - α và Tu,v = 0)
Mà 2r - α = - α (mod 2r) = - α.
Do đó, khi Zα = Ø sẽ tồn tại (u,v) để (Wu,v = - α và Tu,v = 0) (2.10) Từ (2.10) và (2.6), ta suy ra khi Zα = Ø thì Z -αØ
Vì h là số tự nhiên đầu tiên thoả mãn điều kiện Zhd Ø, suy ra Z( h - 1)d = Ø. Theo (2.10) khi Z( h - 1)d = Ø thì Zd-hd Ø, vì vậy phép chọn phần tử (u,v) trong (2.9) luôn thực hiện được.
Nhận xét 3.3. Luôn tồn tại h sao cho hd = 2r-1 (mod 2r)
Chứng minh.
Trường hợp 1: Nếu d lẻ thì có thể biểu diễn d dưới dạng: d = 2t+1. Nhân cả 2 vế của biểu thức với 2r-1 ta có:
2r-1.d = 2r-1.2t+2r-1 suy ra 2r-1.d = t.2r+2r-1 = 2r-1 (mod 2r) Chọn h = 2r-1 ta có hd = 2r-1
Trường hợp 2: Nếu d chẵn và d chỉ chứa thừa số nguyên tố 2 thì có thể biểu diễn d dưới dạng: d = 2u (với u ≤ r-1). Xét các khả năng:
+ Nếu u = r-1 thì chọn h = 1 ta có hd =1.2r-1= 2r-1
33
Trường hợp 3: Nếu d chẵn và d chứa cả các thừa số nguyên tố khác 2 thì có thể biểu diễn d dưới dạng: d = (2t+1)2v (với 1 ≤ v < r-1)
Chọn h = 2(r-1)-v ta có: hd = 2(r-1)-v (2t+1).2v = (2t+1)2r-1 = t.2r + 2r-1 = 2r-1 (mod 2r) Chứng minh tính đúng của thuật toán.
Theo nhận xét 2.1: để chứng minh tính đúng của thuật toán cần chỉ ra tồn tại h sao cho ZhdØ.
Theo nhận xét 3.3 luôn tồn tại h sao cho hd = 2r-1 (mod 2r). Mặt khác theo nhận xét 3.1 tập Z2r1 Ø do đó luôn tồn tại h sao cho ZhdØ. Điều đó chứng tỏ thuật toán luôn thực hiện đúng.
2.4.4. Một số thí dụ minh họa thuật toán CPT
Thí dụ minh hoạ trường hợp thay đổi một bit
Quá trình giấu tin:
Giả sử cần giấu dãy bit 1011 vào ma trận điểm ảnh có kích thước 4x4 với các tham số đầu vào như hình 2.3
1 0 1 0 1 0 1 0 1 3 2 6 1 1 0 1 1 0 1 0 7 8 5 4 F = 0 1 0 1 K = 0 1 1 0 W = 12 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3 0 0 0 0 0 0 0 0 F 1011 1 0 1 0 0 1 1 1 0 8 5 4 1 0 0 1 FK= 0 0 1 1 TW = 0 0 9 10 G = 0 1 0 1 1 0 0 1 12 0 0 3 0 0 1 0 T
34 - Tính s = SUM(TW ) = 51
- Đặt d = b - s (mod 2r) = 11 - 41 (mod 16) = 8 Vì d = 8 0, nên ta xây dựng tập
Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}
Với α = d = 8, xét ma trận W ta thấy phần tử (2,2) thoả mãn điều kiện (W2,2=2r - d và T2,2 = 1), suy ra Zd Ø.
Do Zd Ø, theo thuật toán CPT chỉ cần đảo giá trị phần tử Fi,j |(i ,j) thuộc Zd. Chọn i =2 và j = 2 thực hiện phép đảo phần tử F2,2 ta sẽ được ma trận kết quả G như trong Hình 2.3.
Quá trình giải mã:
Giả sử khi nhận được ma trận G đã chứa thông tin cần giấu, với các giá trị trên Hình 2.4, để giải mã thông tin giấu trong G ta sẽ thực hiện tính theo bất biến
b’ =SUM(TW) mod 2r b’ = 43 mod 16 b’ = 11 = 1011(2) 1 0 1 0 1 0 1 0 1 3 2 6 G = 1 0 0 1 K = 1 0 1 0 W = 7 8 5 4 0 1 0 1 0 1 1 0 12 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3 0 0 0 0 0 0 0 0 T = 0 0 1 1 TW= 0 0 5 4 0 0 1 1 0 0 9 10 1 0 0 1 12 0 0 3 GK
35
Thí dụ minh hoạ trường hợp thay đổi hai bit: Quá trình giấu tin:
Giả sử cần giấu dãy bit 0100 vào ma trận điểm ảnh có kích thước 4x4 với các tham số đầu vào F, K, W thì đầu ra tương ứng sau khi kết thúc thuật toán là ma trận G như trong Hình 2.5. Quá trình giấu diễn ra như sau:
- Tính: T = FK (kết quả như Hình 2.5) - Tính: s = SUM(TW ) = 59
- Đặt: d = b – s (mod 2r) = 4 – (59 mod 16) = 9 Vì d = 9 0, nên ta xây dựng tập
Zα = {(i,j) | (Wi,,j=α và Ti,j = 0) hoặc (Wi,j=2r-α và Ti,j=1)}
Với α = d = 9, không tồn tại phần tử (i,j) để (Wi,,j=9 và Ti,j = 0) hoặc (Wi,j=7 và Ti,j=1), suy ra Zd = Ø.
+ Xét Z2d: Với d = 9 và do phép toán mod 2r nên Z2d <=> Z2. Do không tồn tại (i,j) để (Wi,,j=2 và Ti,j = 0) hoặc (Wi,j=14 và Ti,j=1) => Z2dØ
+Xét Z3d: với d = 9 ta có Z3d Ø vì tồn tại phần tử (3,2) để (W3,2 = 3d và T3,2 = 0).
- Theo thuật toán, khi Zhd Ø (h là số tự nhiên đầu tiên thoả mãn) ta sẽ thay đổi giá trị hai phần tử Fi,j và Fu,v với (i,j) thuộc Zhd và (u,v) thuộc Z d-hd.
+ Chọn (i,j) = (3,2) và (u,v) = (2,1), sau khi đảo F3,2 và F2,1 ta sẽ được ma trận kết quả G như trong Hình 2.5
36 1 0 0 1 1 0 1 0 1 3 2 6 1 1 0 1 1 0 1 0 7 8 5 4 F = 0 1 0 1 K = 0 1 1 0 W = 12 11 9 10 0 0 1 0 1 0 1 1 12 14 15 3 0 0 1 1 0 0 2 6 1 0 0 1 0 1 1 1 0 8 5 4 1 1 0 1 T = 0 0 1 1 TW = 0 0 9 10 G = 0 0 0 1 1 0 0 1 12 0 0 3 0 1 1 0 FK Hình 2-5. Thí dụ minh hoạ trường hợp thay đổi hai bit
Quá trình giải mã
Để giải mã thông tin đã được giấu trong ma trận G chúng ta cần tính b’= SUM((GK)W) mod 2r, sau đó đổi giá trị b’ thành dãy nhị phân gồm r bit có giá trị tương ứng và đó chính là dãy bit đã được giấu.
Ví dụ: với các ma trận W, K, G như trong hình 2.5 ta tính được thông tin giấu trong G như sau
b’= SUM((GK)W) mod 2r => b’ = 84 mod 16 = 4 = 0100(2) 2.4.5. Phân tích thuật toán
Thuật toán có thể giấu được r bit vào trong một khối mxn với điều kiện là 2r<mxn và chỉ cần thay đổi nhiều nhất là 2 bit trên một khối. Như vậy, thuật toán này đã có cải tiến rất lớn so với những thuật toán khác chỉ giấu được một bit vào mỗi khối
37
Độ an toàn của thuật toán cũng rất cao thông qua hai ma trận dùng làm khoá để giải tin đó là ma trận trọng số và ma trận khoá. Như vậy độ bảo mật của thuật toán là: 2m*n mn2 1 r r mn (2 1) r r (2 1)! (2 1) C
Thuật toán này đương nhiên có thể áp dụng cho ảnh màu và ảnh đa cấp xám. Ta cũng sẽ sử dụng kỹ thuật chọn ra bit ít quan trọng nhất của mỗi điểm ảnh để xây dựng ma trận hai chiều các bit 0, 1 như trong thuật toán với ảnh đen trắng
Nếu áp dụng tốt thuật toán này cho ảnh màu thì có thể nói thuật toán đã đạt được yêu cầu cơ bản của một ứng dụng giấu tin mật đó là đảm bảo tính ẩn của thông tin giấu, số lượng thông tin giấu cao.
38
Chương 3.NÂNG CAO CHẤT LƯƠNG GIẤU TIN BẰNG PHƯƠNG PHÁP
MODULE
3.1. Một số phương giấu tin trong ảnh màu và ảnh đa cấp xám
Kết quả thực nghiệm cho thấy việc sử dụng ảnh đen trắng làm ảnh môi trường đem lại hiệu quả rất thấp vì việc biến đổi điểm ảnh từ đen sang trắng hay trắng sang đen rất dễ tạo ra các nhiễu trên ảnh và dễ bị phát hiện bởi hệ thống thị giác của con người. Hơn nữa ảnh đen trắng cung cấp lượng dữ liệu tương đối nhỏ để thực hiện các thao tác giấu tin. Ví dụ như một bức ảnh đen trắng kích thước 300*300 pixel chỉ cung cấp cho ta một lượng dữ liệu vào khoảng 90 kilobytes (kB) trong khi một bức ảnh 24 màu kích thước tương ứng có thể cho tới 2000 kB. Hạn chế này được khắc phục bằng cách sử dụng ảnh màu và ảnh đa cấp xám làm ảnh môi trường.
3.1.1. Giấu tin trong ảnh màu và ảnh đa cấp xám
Đối với việc chọn ảnh màu và ảnh đa cấp xám làm ảnh môi trường ta cần thực hiện thêm một bước xử lý nữa. Trước hết ta quan tâm tới khái niệm bit ít đặc trưng nhất (Least Significant Bit hay - LSB). LSB là bit có ảnh hưởng ít nhất tới việc quyết định màu sắc của mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít đặc trưng nhất của một điểm ảnh thì màu sắc của điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. LSB của một điểm ảnh cũng tương tự như chữ số hàng đơn vị của một số tự nhiên, khi ta thay đổi giá trị của chữ số này thì chênh lệch giữa số cũ và số mới sẽ ít hơn khi ta thay đổi giá trị của chữ số hàng chục hoặc hàng trăm. Việc xác định 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 đó.
Quá trình giấu tin vào ảnh màu và đa cấp xám cũng tương tự như với ảnh đen trắng nhưng trước hết ta chọn từ mỗi điểm ảnh ra từ ít đặc trưng nhất để tạo thành một ảnh nhị phân gọi là ảnh thứ cấp. Sử dụng ảnh thứ cấp này như là ảnh môi trường để giấu tin, sau khi biến đổi ảnh thứ cấp ta trả nó lại ảnh ban đầu để thu được ảnh kết quả.
39
Ảnh màu và ảnh đa cấp xám cho hiệu quả cao hơn ảnh đen trắng vì việc thay đổi bit ít đặc trưng nhất trong những ảnh này dường như không làm thay đổi màu sắc của điểm ảnh trong việc thay đổi mỗi bit trong ảnh đen trắng làm cho điểm ảnh chuyển màu từ đen sang trắng hoặc ngược lại từ trắng sang đen do đó rất dễ bị phát hiện.
Đối với ảnh 16 bit màu hoặc 24 bit màu việc xác định LSB tương đối đơn giản, tuy nhiên đối với ảnh nhỏ hơn hoặc bằng 8 bit màu (những ảnh có sử dụng bảng màu) thì rất phức tạp. Khó khăn này có thể khắc phục nếu ta sắp lại bảng màu cuả ảnh hoặc sử dụng những màu không dùng đến trong bảng màu của ảnh nhỏ hơn bằng 8 bit màu.
3.1.1. Ảnh đa cấp xám
Đối với ảnh đa cấp xám, với 256 mức xám là phổ biến thì bảng màu của nó đã được thiết kế sẵn, tức là những cặp màu trong bảng màu có chỉ số chênh lệch càng ít thì càng giống nhau. Vì vậy đối với ảnh đa cấp xám bit LSB của mỗi điểm ảnh là bit cuối cùng của mỗi thành phần B, G, R của nó.
Quá trình tách bit LSB của ảnh đa cấp xám và thay đổi các bit này bằng thuật toán giấu tin trong ảnh đen trắng sẽ làm chỉ số màu của điểm ảnh màu bị thay đổi tăng hoặc giảm 1 đơn vị, do đó điểm ảnh mới sẽ có độ sáng tối của ô màu liền trước hoặc liền sau ô màu của điểm ảnh cũ. Bằng mắt thường rất khó có thể nhận thấy sự thay đổi về độ sáng tối này.Thực nghiệm cho thấy ngay cả khi ta đảo toàn bộ các bit cuối của điểm ảnh trong một ảnh 8 bit cấp xám cũng không gây ra sự khác nhau nhiều. Vì vậy việc trong mỗi khối ảnh ta chỉ thay đổi nhiều nhất 2 điểm ảnh sẽ khiến khả năng phân biệt ảnh gốc và ảnh kết quả là rất khó khăn.
3.1.2. Phương pháp LSB
Ý tưởng: Phương pháp LSB (Least Bit Significant) sẽ thay thế bit ít quan trọng nhất, thường là bit cuối của mỗi mẫu dữ liệu bằng bít thông tin mật. Như vậy
40
trên mỗi pixel của một ảnh BMP 24bpp có thể giấu được từ 1 đến 3 bit mật. Ví dụ mẫu 8 bit, bit cuối 0 được thay thế bởi bit thông tin mật 1:
Hình 3-1. Minh họa kĩ thuật giấu LSB
Ưu điểm của phương pháp này là dễ cài đặt và cho phép giấu dữ liệu nhiều. Có thể tăng thêm dữ liệu giấu bằng cách sử dụng hai bit LSB. Tuy nhiên cách làm này cũng làm tăng nhiễu trên đối tượng chứa dẫn đến đối phương dễ phát hiện và thực hiện các tấn công. Vì vậy dữ liệu chứa cần phải được chọn trước khi giấu sử dụng phương pháp này.
Để tăng độ an toàn cho kỹ thuật này, ta sử dụng bộ sinh số ngẫu nhiên để sinh ra các vị trí các mẫu được chọn giấu chứ không phải các mẫu liên tục. Bộ sinh số này sử dụng một khóa bí mật K như một phần tử khởi tạo của bộ sinh số. Khóa K này được sử dụng trong cả quá trình giấu tin và giải tin. Lưu ý là phương pháp sinh số không tạo ra các giá trị trùng nhau để trường hợp một vị trí được giấu hai lần. 3.1.3. Phương pháp chẵn lẻ giấu tin trên ảnh chỉ số
Trong mục này, chúng ta xem xét một hướng tiếp cận về giấu tin trên ảnh chỉ số, cụ thể là trên ảnh bitmap 8bpp: Phương pháp xác định tính chẵn lẻ và màu kế cận.
Với ảnh chỉ số 8bpp thì mỗi điểm ảnh được lưu bằng một byte, byte này chứa giá trị là chỉ số màu trên bảng màu của điểm ảnh. Như vậy ý tưởng của