Định nghĩa 2: Ma trận W kích thước mn được gọi là ma trận trọng số cấp
r (2r 1nm| r là một số nguyên) nếu mọi phần tử của W thoả mãn điều kiện {Wi,j |i=1..m, j=1..n} = {1,2, …,2r-1}.
Thí dụ minh hoạ về ma trận trọng số cấp 3 với ma trận W như sau:
3 6 2 1 7 4 7 6 5 2 3 1 W 3 6 2 1 7 1 7 6 5 2 3 1 K Hình 2.8. Ví dụ về ma trận trong số
Ta thấy ma trận K lại không thỏa mãn điều kiện là ma trận trọng số cấp 3, vì trong ma trận K không tồn tại phần tử (i,j) để Ki,j = 4, mà 4
2.5.1. Ý tƣởng
Thuật toán giấu tin của ba tác giả Y.Chen, H.Pan, Y.Tseng (CPT) cũng áp dụng tư tưởng giấu tin theo khối bit nhưng mỗi khối có thể giấu được một dãy r bit (với 2r-1 ≤ m×n) bằng cách thay đổi nhiều nhất hai bit trong khối. Như vậy, so với thuật toán giấu tin của Wu-Lee, thuật toán CPT có khả năng giấu rất cao, trong khi số bit cần thay đổi khá ít, do đó sẽ không ảnh hưởng đáng kể đến chất lượng ảnh sau khi giấu. Thuật toán CPT sử dụng một ma trận trọng số để giấu được một dãy nhiều bit vào trong mỗi khối, và ma trận trọng số này cũng chính là một thành phần bí mật cùng với ma trận khoá, do vậy độ an toàn của thuật toán CPT cao hơn của thuật toán giấu tin của Wu-Lee.
2.5.2. Thuật toán CPT
Bài toán
Để thuận lợi cho việc trình bày, trong luận văn sẽ trình bày 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[10].
Input:
- Fmn 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 log2(mn1) bit. - Kmnlà ma trận nhị phân và là khóa bí mật để giải tin. - Wmn 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.
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.13).
Thuật toán Bước 1: Tính T = FK. Bước 2: Tính S = SUM(TW). Bước 3: - Tính d = b – S (mod 2r) - Xây dựng tập:
Zd = {(i,j) | (Wi,j=d và Ti,j = 0) hoặc (Wi,j=2r-d và Ti,j=1)} (2.14) Dễ thấy rằng, 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,jsẽ làm cho S tăng thêm d đơ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.15)
Bất biến (2.15) này cũng là cơ sở để khôi phục lại tin đã giấu.
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:
Trường hợp 2.1 Nếu ZdØ 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 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.14) S tăng thêm một lượng là hd. (2.16)
+ Chọn (u,v) Zd-hd và thay đổi Fu,v, khi đó theo (2.14) 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.17)
Từ (2.16) và (2.17) 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 : 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.5.3. Chứng minh tính đúng đắn của thuật toán
Nhận xét 1 : Theo định nghĩa tập Zd 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 d = 2r-1 thì giá trị d {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 = d.
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 = d nên (i,j) thoả điều kiện thứ nhất trong (2.14), vậy (i,j) Zd
- Nếu Ti,j = 1: Do Wi,j = d mà d = 2r-1 = 2r – d nên (i,j) thoả điều kiện thứ hai trong (2.14), vậy (i,j) Zd
Do đó tập Z2r1 Ø.
Nhận xét 2: Nếu Zd = Ø thì Z -dØ
Chứng minh
Theo (2.14) định nghĩa về tập Zd = {(i,j) | (Wi,,j=d và Ti,j = 0) hoặc (Wi,j=2r-d
và Ti,j=1)}
Do Zd = Ø 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 = d và Tu,v = 1) hoặc (Wu,v = 2r - d và Tu,v = 0)
Mà 2r - d= - d(mod 2r) = - d.
Do đó, khi Zd = Ø sẽ tồn tại (u,v) để (Wu,v = - d và Tu,v = 0) (2.18) Từ (2.18) và (2.14), ta suy ra khi Zd = Ø thì Z -dØ
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.18) khi Z( h - 1)d = Ø thì Zd-hd Ø, vì vậy phép chọn phần tử
(u,v) trong (2.17) luôn thực hiện được.
Nhận xét 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
+ Nếu u < r-1 thì chọn h = 2(r-1)-u ta có hd = 2(r-1)-u.2u = 2r-1
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.5.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 2.5.4 luôn tồn tại h sao cho hd = 2r-1 (mod 2r). Mặt khác theo nhận xét 2.5.3 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.5.4. Ví 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 44 với các tham số đầu vào như hình 2.9.
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 T=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
Hình 2.9. Minh hoạ thuật toán CPT trường hợp thay đổi 1 bit - Tính s = SUM(TW ) = 51 - Tính s = SUM(TW ) = 51
- Đặt d = b - s (mod 2r) = 11 - 51 (mod 16) = 8
Vì d = 8 0, nên ta xây dựng tập
Zd = {(i,j) | (Wi,j=d và Ti,j = 0) hoặc (Wi,j=2r-d và Ti,j=1)}
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.9.
Quá trình trích tin:
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.10, để 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 G K
Hình 2.10. Minh hoạ quá trình trích thông tin đã giấu
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 44 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.11.
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
Zd = {(i,j) | (Wi,,j=d và Ti,j= 0) hoặc (Wi,j=2r-d 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 2rnê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 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) = (4,2), sau khi đảo F3,2 và F4,2 ta sẽ được ma trận kết quả G như trong Hình 2.11.
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
Quá trình trích tin
Để 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ư hình 2.11 ta tính được thông tin giấu trong G: b‟= SUM((GK)W) mod 2r=> b‟ = 84 mod 16 = 4 = 0100(2)
2.5.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 mn với điều kiện là
1
2r mn 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 chỉ giấu được một bit vào mỗi khối
Độ 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*nCmn2r1(2r 1)!(2r 1)mn(2r1) (2.19)
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.
Chƣơng 3
KỸ THUẬT GIẤU TIN THUẬN NGHỊCH 3.1. TỔNG QUAN VỀ KỸ THUẬT GIẤU TIN THUẬN NGHỊCH
Các kỹ thuật giấu tin trên ảnh số thường được thực hiện bằng cách thay đổi nội dung của ảnh gốc sao cho mắt người khó nhận ra sự thay đổi này. Tuy nhiên, ảnh gốc ban đầu không thể khôi phục lại được “nguyên vẹn” sau khi đã tách tin giấu. Trong một số lĩnh vực ứng dụng mà một thay đổi nhỏ có thể dẫn đến sự khác biệt đáng kể trong quá trình ra quyết định cuối cùng như trong ảnh y tế, quân đội hoặc những lĩnh vực nghiên cứu, ứng dụng chuyên biệt khác, ... Trong những trường hợp này, đòi hỏi thuật toán giấu tin không những tách đúng thông điệp mà còn phải khôi phục “chính xác” ảnh gốc ban đầu. Các kỹ thuật giấu tin thỏa mãn yêu cầu khôi phục lại ảnh gốc sau khi tách tin được gọi là kỹ thuật giấu tin thuận nghịch (Reversible Data Hiding) [1].
Trong thời gian gần đây, giấu thuận nghịch nhận được sự quan tâm một cách đặc biệt của các nhà nghiên cứu. Vào năm 2006, Zhicheng Ni, Yun-Qing Shi, Nirwan Ansari, and Wei Su đề xuất thuật toán giấu tin thuận nghịch NSAS dựa trên sự dịch chuyển histogram của ảnh [12] . Sau đó, Hwang và các đồng nghiệp đề xuất thuật toán giấu thuận nghịch HKC [13] là một cải tiến của NSAS. Hướng tiếp cận cho thuật toán giấu tin thuận nghịch dựa trên dịch chuyển histogram được nhiều nhà nghiên cứu khai thác, hình 3.1 minh họa histogram của một ảnh đa mức xám. Đối với ảnh màu, mỗi thành phần Red, Green, Blue có một histogram riêng và một histogram của độ sáng (luminance). Hình 3.2 thể hiện histogram của các thành phần Red, Green, Blue trong một ảnh màu, histogram độ sáng của ảnh này chính là histogram của ảnh xám tương ứng trong hình 3.2. Sau đây luận văn trình bày hai thuật toán tiêu biểu theo hướng này.
Hình 3.1. Histogram tương ứng của một ảnh đa mức xám
3.2. KỸ THUẬT GIẤU TIN THUẬN NGHỊCH NSAS
Một trong những ý tưởng giấu tin thuận nghịch trên ảnh, được đưa ra bởi Zhicheng Ni, Yun-Qing Shi, Nirwan Ansari, và Wei Su. Nhóm nghiên cứu này đã đề xuất lược đồ giấu tin thuận nghịch NSAS dựa trên sự dịch chuyển histogram của ảnh[12]. Theo kỹ thuật này, quá trình giấu tin gồm các bước sau đây:
Hình 3.3. Histogram của ảnh gốc
Bước 1, tìm các điểm cực trị:
Tìm một điểm zero (điểm không) và một điểm peak (điểm cực đại). Điểm
zero và điểm peak là điểm có giá trị cấp xám của pixel trong lược đồ histogram của ảnh cực tiểu và bằng cực đại. Hình 3.3 là histogram của ảnh trước khi giấu tin, minh họa cho kỹ thuật này. Giả thiết, điểm zero ở vị trí 255 (histogram (255)=0) và điểm peak ở vị trí 154 (histogram(154)=2859).
Bước 2, dịch chuyển histogram:
Quét toàn bộ ảnh theo thứ tự: trái sang phải, từ trên xuống, các pixel có giá
trị xám nằm trong khoảng từ 155 đến 254 được tăng lên một giá trị. Nó sẽ làm cho tần số của 155 bằng 0.
Bước 3, nhúng thông tin:
Nhúng bit thông điệp “0” vào giá trị xám 154, bit “1” vào các giá trị xám 155
theo nguyên tắc: Giả sử pixel đang xét là 154 kiểm tra bit cần nhúng, nếu là bit “1” thì pixel 154 sẽ tăng lên 1, ngược lại nếu là bit “0” thì pixel 154 vẫn giữ nguyên. Hình 3.4 minh họa histogram của ảnh sau khi giấu tin.
Sau khi ảnh đã giấu tin, chúng ta có thể chuyển đến người nhận thông qua internet. Người nhận có thể khôi phục lại thông điệp và ảnh gốc bằng kỹ thuật biến đổi ngược [12] . Trong kỹ thuật NSAS, lượng tin được giấu phụ thuộc vào độ lớn của điểm cực đại peak, trong ví dụ nêu trên, khả năng giấu lượng thông điệp không quá 2859 bit. Tuy nhiên, để tách được thông tin đã giấu và khôi phục lại ảnh gốc, cần phải có thông tin về điểm zero, điểm peak. Việc truyền thông tin về điểm cực đại và cực tiểu từ người gửi đến người nhận như thế nào để đảm bảo an toàn không được chỉ ra trong lược đồ NSAS, đây cũng là nhược điểm của kỹ thuật này.
3.3. KỸ THUẬT GIẤU TIN THUẬN NGHỊCH HKC
Trong kỹ thuật NSAS, chúng ta thấy khả năng giấu thông điệp khá hạn chế và bằng độ lớn của điểm peak. Hơn nữa, việc yêu cầu phải truyền thông tin về điểm
zero và peak từ người gửi đến người nhận là một nhược điểm khó chấp nhận được