2. Những đóng góp của luận văn
3.2.5.1. Sơ đồ giấu tin trên ảnh xám
Xét trường hợp ảnh 256 mức xám, mỗi điểm ảnh có màu C (mức xám) được biểu diễn bởi 8 bit, C sẽ nhận các giá trị trong tập P={0,1,..,255}. Để xây dựng sơ đồ giấu tin sử dụng tập 2-cơ sở hạn chế và Z3-module, ta cần xác định: Module phải
M, một 2-cơ sở U, các hàm Val, Next và ánh xạ trọng số h.
Module phải M là tích đề các của Z3, M=Z3 Z3 .. Z3 =Z3n, mỗi phần tử
x=(x1,x2,..,xn) M được biểu diễn bởi một dãy n-bit x = x1x2...xn với phép toán cộng (+) và nhân vô hướng (.) được xác định như sau:
Với mỗi x = x1x2..xn, y = y1..ynM, k Z3, D1) x+y = z1z2..zn where zi=xi +yi mod 3, i=1,..,n .
46 D2) x.k= z1z2..zn where zi=xi.k (trong Z3).
Hàm Val: P Z3 được xác định như sau, Val(C) = (C AND 3) mod 3, với
C P, đặt x = C AND 3, 0≤ x ≤3, việc thay đổi màu C thành màu C’ được thực hiện tại 2 bit ít ý nghĩa x của C (2 bit cuối), cụ thể việc thay đổi giá trị bit cuối cùng của C được sẽ được màu C’=C XOR 00000001, thay đổi giá trị bit thứ 2 của C sẽ được C’=C XOR 00000010, thay đổi giá trị 2 bit cuối của C sẽ được C’=C XOR 00000011, khi đó Val(C’)= (C’ AND 3) mod 3.
Như vậy Next(C)={ C XOR 00000001, C XOR 00000010, C XOR 00000011}.
Ví dụ 1: C=7 sẽ có biễu diễn là 00000111, x=11, khi đó Val(C) = x mod 3 = 0 trong Z3, nếu ta cần thay đổi C sao cho Val(C) được thay bằng Val(C)+2=2 trong Z3, điều này có nghĩa là x được thay bằng x’=2, x’có biễu diễn 10, khi đó C được thay bằng C’= 00000110.
Sơ đồ giấu tin 2-M3
Cho một 2-cơ sở U M –{0}, M = Z3 Z3 .. Z3 =Z3n. Giả sử
F={C1,..,Cm} là một khối các điểm ảnh của G, trong đó |F|≥ |U|, khi đó ta có thể xây dựng một toàn ánh: h: S={1,.., m}→U. Với dM là dữ liệu mật cần giấu trong F, ta xây dựng thuật toán giấu d trong F bằng cách thay đổi màu của nhiều nhất 2 điểm ảnh thuộc F như sau:
Bước 1) Tính p = iS h(i).v(Ci) trong M.
Bước 2) So sánh p và d, có các trường hợp sau xẩy ra: a) Trường hợp p = d: giữ nguyên F.
b) Trường hợp p ≠ d: Đặt x = d – p M –{0}, vì U là một 2-cơ sở của M, x
sẽ được biểu diễn bởi tổ hợp tuyến tính của nhiều nhất 2 phần tử thuộc U, có 2 trường hợp xẩy ra:
47
i) Nếu x = u.t với u U, t Z3-{0}, ta tìm một điểm ảnh Ci F sao cho
h(i)=u, tiếp đó thực hiện thay đổi màu Ci thành Ci’sao cho Val(Ci’) = Val(Ci)+t. ii) Nếu x = u.t + v.t’ với u, v U và t, t’ Z3-{0}, ta sẽ tìm được 2 điểm ảnh Ci, CjF sao cho h(Ci) = u, h(Cj) = v, thực hiện thay đổi màu Ci, Cj thành Ci’,
Cj’ sao cho Val(Ci’) = Val(Ci) + t, Val(Cj’) = Val(Cj) + t’. Khôi phục lại giá trị mật từ F
Tính d =CjFh(i).v(Cj)trong M.
Ví dụ 2: Xét Z3-module M= Z3 Z3 Z3 Z3 mỗi phần tử xM sẽ được biểu diễn bởi dãy 4-phần tử thuộc Z3. Tập U={1100, 1200, 1000, 0100, 0011, 0012, 0010, 0001} là một 2-cơ sở của M, đặt u1=1100, u2=1200, u3=1000, u4=0100,
u5=0011, u6=0012, u7= 0010, u8=0001.
Với mỗi khối F các điểm ảnh thỏa |F| ≥ |U|=8, chẳng hạn F={p1,..,p8}, p1=13,
p2=65, p3=139, p4=211, p5=222, p6=173, p7= 25, p8=130, ta sẽ thực hiện giấu phần tử tùy ý d M vào khối F như sau. Biểu diễn nhị phân p1= 00001101 cho ta Val(p1) = 1, p2=01000001 với Val(p2) = 1, p3 = 10001011 với Val(p3) = 0, p4 = 11010011 với Val(p4) = 0, p5=11011110 với Val(p5) = 2, p6 =10111101 với Val(p6) = 1, p7= 00011001 với Val(p7)=1, p8= 10000010 với Val(p8)=2.
Ta xây dựng toàn ánh h: S={1,2,..,8} → U với h(i) = ui. Giả sử rằng chúng ta cần giấu phần tử d = 2102 vào khối F.
Tính p = iS h(i).Val(pi) =u1.1 + u2.1 + u3.0 + u4.0 + u5.2 + u6.1 + u7.1+ u8.2 = 1100 + 1200 + 0 + 0 + 0022 + 0012 + 0010 + 0002 = 2010. Ta có –p = 1020 trong
M
Vì p≠ d, ta tính m = d-p = 2102 + 1020 = 0122 trong M.
Ta tìm được biểu diễn của m trong U như sau: m = u4.1+u5.2 (0122=0100.1+0011.2), như vậy ta cần thay đổi màu p4 thành p4’ sao cho Val(p4’) =
48
trong Z3. Điều này có nghĩa là ta sẽ thay đổi 2 bit LSB của p4 là 11 thành 01, 2 bit LSB của p5 là 10 thành 01. Ta có màu mới p4’=11010001, p5’= 11011101 như vậy khối F sau khi có giấu tin có giá trị như sau:
Fnew ={ 13, 65, 139, 219, 221, 173, 25, 130} Để nhận lại giá trị mật được giấu trong Fnew ta tính
p = iSh(i).Val(pi) = u1.1 + u2.1 + u3.0 + u4.1 + u5.1 + u6.1 + u7.1+ u8.2 = 1100 + 1200 + 0 + 0100 + 0011+ 0012 + 0010 + 0002 = 2102 = d là giá trị mật đã được giấu vào khối F.
3.2.5.2. Sơ đồ giấu tin sử dụng module trên ảnh nhị phân
Xét trường hợp ảnh nhị phân G, mỗi điểm ảnh sẽ có màu C được biểu diễn bởi 1 bit, C nhận các giá trị 0, 1. Ta ghép từng cặp điểm ảnh liên tiếp của G và xem mỗi cặp đó như một điểm ảnh màu (theo G). Để dễ phân biệt ta gọi ảnh được nhìn theo cách tiếp cận mới với mỗi điểm ảnh là một cặp điểm ảnh của G là G’ khi đó mỗi điểm ảnh C’ của G’ sẽ nhận giá trị trong tập P={(0,0), (0,1), (1,0), (1,1)} để đơn giản ta viết {00, 01, 10, 11}.
Ta xây dựng module phải M và các phép toán cộng (+) và nhân vô hướng (.) như trong sơ đồ giấu tin trên ảnh xám (mục 2.2.1). Hàm Val được xác định như sau:
Val: PZ3, Val(C’) = C’ mod 3 với C’P.. Sơ đồ giấu tin 1-M3:
Cho tập 1-cơ sở hạn chế U M –{0}, M = Z3 Z3 .. Z3 =Z3n. Giả sử
F={C1,..,C2m} là một khối các điểm ảnh của G, trong đó |F|≥ 2.|U|. Cho K là một ma trận khóa nhị phân gồm 2.m phần tử tùy ý. Tính F’=F K = {C1’,..,C2m’}. Ghép cặp hai bit kề nhau thành một phần tử của tập T = {T1,..,Tm}, với Ti= C2i-1’C2i’, khi đó ta có thể xây dựng một toàn ánh: h: S={1,.., m}→U. Với dM là dữ liệu mật cần giấu trong F, ta xây dựng thuật toán giấu d trong F bằng cách thay đổi màu của nhiều
49
nhất 1 điểm ảnh thuộc T (có nghĩa là sẽ thay đổi nhiều nhất 2 điểm ảnh thuộc F) như sau:
Bước 1) Tính p = iS h(i).Val(Ti) trong M.
Bước 2) So sánh p và d, có các trường hợp sau xẩy ra: i) Trường hợp p = d: giữ nguyên F.
ii) Trường hợp p ≠ d: Đặt x = d – p M –{0}, vì U là một 1-cơ sở của
M, x sẽ được biểu diễn bởi tổ hợp tuyến tính của 1 phần tử thuộc U nghĩa là uU,
t Z3 –{0}sao cho x = u.t ta tìm một điểm ảnh Ti T sao cho h(i)=u, tiếp đó thực hiện thay đổi màu Ti thành Ti’ sao cho Val(Ti’) = Val(Ti)+t.
Thực hiện thay đổi màu C2i-1C2i thành C2i-1C2i XOR (T’ XOR T) Khôi phục lại giá trị mật từ F
Tính F’=F K, xác định T dựa trên F’ Tính d =TiTh(i).Val(Ti)trong M.
Ví dụ 3: Xét Z3-module M = Z3 Z3 mỗi phần tử xM sẽ được biểu diễn bởi dãy 2-phần tử thuộc Z3. Tập U={11,12,10,01} là một 1-cơ sở của M, đặt u1=11,
u2=12, u3=10, u4=01.
Mỗi khối F thỏa mãn yêu cầu |F| ≥ 2|U|=8, chẳng hạn F={1,0,0,1,0,1,1,1} gồm 8 phần tử, ta có thể thực hiện giấu phần tử dM tùy ý. Cho mộtma trận khóa nhị phân K={0,1,0,1,1,1,1,0}. Trước hết tính F K = {1,1,0,0,1,0,0,1}, ghép cặp 2 bit một, ta có T={11, 00,10, 01}, đặt T1=11, T2=00, T3=10, T4=01.
Ta xây dựng toàn ánh h: S={1,2,3,4} → U với h(i) = ui. Giả sử cần giấu giá trị d = 22 vào F.
Tính p = i S h(i).Val(Ti) = u1.0 + u2.0 + u3.2 + u4.1 = 10.2 + 01.1 = 20+01=21, -p = 12
50
Vì p≠ d, ta tính m = d-p = 22 + 12 = 01 trong M. Do m = u4.1, ta thay đổi màu T4 sao cho thành màu T4’ sao cho Val(T4’) = Val(T4) + 1 = 2, như vậy T4’=10. Ta có F7F8=11 sẽ được đổi thành (11 XOR (T4 XOR T4’)) =(11 XOR (01 XOR 10)) = 00.
Như vậy khối điểm ảnh có giấu tin Fnew={1,0,0,1,0,1,0,0} Để nhận lại giá trị mật được giấu trong Fnew ta tính
F newK = {1,0,0,1,0,1,0,0} {0,1,0,1,1,1,1,0}={1,1,0,0,1,0,1,0}, như vậy
T={11, 00, 10, 10}, tính p = i S h(i).Val(Ti) = u1.0 + u2.0 + u3.2 + u4.2 = 20+02=22 = d là giá trị cần tìm.
Kết luận
Phần này đã tìm hiểu, trình bày nội dung về lược đồ giấu tin mới dựa trên tiếp cận module: Sơ đồ giấu tin 2-M3 sử dụng các 2-cơ sở U và sơ đồ giấu tin 1-M3 sử dụng các 1-cơ sở của module trên vành Z3. Sơ đồ 2-M3 sử dụng giấu tin trong ảnh đa mức xám, theo ví dụ 2 ta thấy với mỗi khối điểm ảnh F gồm 8 phần tử, bằng cách thay đổi giá trị của nhiều nhất 2 điểm ảnh thuộc F, ta sẽ giấu được tập các giá trị từ 0 đến 2222 (theo hệ cơ số 3), theo cơ số 10 là các giá trị từ 0 đến 80, nghĩa là với sơ đồ 2-M3 mỗi khối 8 điểm ảnh có thể giấu được log281 = 6 bit mật. Sơ đồ 1- M3 minh họa sử dụng để giấu tin trong ảnh nhị phân, theo ví dụ 3, trong mỗi khối 8 điểm ảnh F bằng cách thay đổi giá trị của nhiều nhất 2 phần tử thuộc F, ta có thể giấu được các giá trị từ 0 đến 22 (theo hệ cơ số 3, 22=8 theo hệ cơ số 10), nghĩa là ta sẽ giấu được log29 = 3 bit trong F, bằng số bit giấu được theo phương pháp CPT. Nếu áp dụng sơ đồ 1-M3 cho ảnh đa mức xám theo cách như sơ đồ 2-M3, điều này tương đương với khả năng, trên một khối T có 4 điểm ảnh, thay màu 1 điểm có thể giấu 3 bit.. Các sơ đồ có thể kết hợp một khóa nhị phân K chọn ngẫu nhiên để tăng độ an toàn chống thám tin và có thể áp dụng cho cả ảnh đa mức xám hay nhị phân. Việc thay màu một điểm ảnh trên ảnh đa mức xám chỉ thực hiện trên 2 bit LSB nên không thể phát hiện bằng mắt. Số điểm ảnh thay đổi bé, cùng sự thay đổi màu ít, đảm bảo yếu tố chống thám tin cao cho các sơ đồ khi áp dụng thực tiễn.
51
Ngoài ra, nếu xem mỗi kênh màu R,G,B của ảnh màu 24bpp như 1 ảnh đa mức xám, ta có thể giấu tin mật trên cả 3 kênh nhờ các sơ đồ này. Bài toán nâng cao điều khiển chất lượng giấu tin cho ảnh nhị phân, hay mở rộng các sơ đồ giấu tin cho ảnh màu palette.., vì thế được nghiên cứu mở rộng ngoài nội dung luận văn.
3.2.6. Phương pháp giấu tin theo module
Trong G, với mỗi điểm ảnh trong khối F ta tính giá trị x = (C and 3), để có được hai bit LSB của C, và sau đó xác định v(C) = x, 0 ≤ x ≤ 3. Thay vì C, v(C)
Z4 có thể được sử dụng như là giá trị mới của các điểm ảnh. Thay đổi 2 bit LSB x của C có thể gây ra thay đổi mới v(C). Thay đổi một màu trong C tương ứng một giá trị t trong Z4 có nghĩa rằng hai LSB v(C) trong C được thay thế bằng v(C) + t trong Z4. Ví dụ, C = 99 được biểu diễn ở dạng nhị phân là 01100011, chúng ta nhận được hai bit LSB x = 11 hoặc v(C) = x = 3 ở Z4. Nếu chúng ta cần thay đổi C để v(C) được thay thế bằng v(C) +2 = 1 trong Z4, điều này có nghĩa là x được thay thế bởi x’ = 1 với cách biểu diễn nhị phân x = 01, sau đó C được thay đổi thành C’ = 01.100.001.
Ví dụ: Trong Z4-module M = (Z4 Z4 Z4) cho đơn giản với i, j, k Z4 chúng ta viết mỗi phần tử bằng chuỗi 3 – ký tự ijk thay vì một bộ 3 (i, j, k). M có U = {u1, u2, u3, u4, u5, u6} là một 2-cơ sở x, u1 = 001, u2 = 010, u3 = 011, u4 = 012, u5 = 100, u6 = 331.
Đối với mỗi khối F có N điểm ảnh (256 mức xám), N ≥ 6 chúng ta có thể giấu bất kỳ d M như sau:
Ví dụ, giả sử N = 6, F = {p1, .., p6}, p1 = 13, p2 = 65, p3 = 139, p4 = 211, p5 = 222, p6 = 173 trong 256 mức xám. Đối với hệ nhị phân, chúng ta thấy:
p1 = 00.001.101 với v(p1) = 1, p2 = 01.000.001 với v(p2) = 1, p3 = 10.001.011 có v(p3) = 3, p4 = 11.010.011 với v (p4) = 3, p5 = 1.101.110 có v (p5) = 2, p6 = 10.111.101 có v (p6) = 1.
52
Chúng ta chọn một hàm h: S = {1,2, .., 6} → U được cho bởi h(i) = Ui. Giả sử chúng ta cần giấu dữ liệu bí mật d = ijk = (2, 1, 3) trong khối F. Ở bước 1, trong M ta tính:
p = i S h(i).v(pi) =u1.1+u2.1+u3.3+u4.3+u5.2+u6.1 =001+010+033+032+200+331= 123. Then –p = 321 in M
Do p ≠ d, chúng ta tính m = d + (- p) = d - p = 213 + 321 = 130 trong M. Từ U thuộc a2 - cơ sở của M, chúng ta thấy m = u5.1 + u2.3, điều này chứng tỏ rằng các màu p5 thay đổi thành p5 ', như vậy v(p5') = v(p5) + 1 = 3, p2 đến p2', như vậy v(p2’) = v(p2) + 3 = 0 trong Z4. Để làm điều đó chúng ta thay đổi hai bit LSB của p5 là 10 11, hai bit LSB của p2 là 01 00. Tại p5 '= 1.101.111, p2' = 01.000.000 hoặc chúng ta có được khối cần giấu.
Fnew ={ 13, 64, 139, 211, 223, 173} bằng cách thay đổi hai điểm ảnh trong F Khi giải mã, từ Fnew, chúng ta có được
p = i S h(i).v(pi) =u1.1+u2.0+u3.3+u4.3+u5.3+u6.1
=001+000+033+032+300+331= 213 = d, chính là dữ liệu mật mà chúng ta đã giấu.
3.2.7. Thuật toán giấu tin trong ảnh xám theo module
Ý tưởng: Với mỗi tập Fcó 6 phần tử trên vành Z4 thực hiện lật tối đa 2 vị trí của F để giấu được 6 bit mật trên mỗi khối F.
Định nghĩa: Cho 3 4 M Z có dạng 3 4 1 2 3 4 : { | ( , , ); i } M dZ d d d d d Z , với u v M, ta định nghĩa phép
53 1 1 2 2 3 3 1 2 3 ( , , ) . ( . , . , . ) u v u v u v u v M r u r u r u r u M Thuật toán:
- Input: Khối 6 điểm ảnh P = {p1, …, p6}
+) Khối F gồm 6 phần tử: F { , , .., }F F1 2 F6
+) Khối khóa U { , , .., }U U1 2 U6
+) d là số 6 bit mật cần giấu - Output:
+) Khối 6 điểm ảnh đã sửa để giấu được d. Nội dung thuật toán:
+) Tính khối F = {f1, …, f6} ở đó fi = v(pi), i = 1..6.
+ Thuật toán giấu tin:
1) Từ khối P, tính khối F = {f1, …, f6} ở đó fi = v(pi), i = 1..6. 2)Tính
3) Uses
a) s = d: = P // Không thay đổi điểm ảnh nào. b) s ≠ d:
B1: Tính x = d – s M
B2) Tìm ui v để có t Z4 : x = ui.ti
54
V(pi’) = v(pi) + t trong Z4
- Nếu không tìm được ui chuyển sang bước sau.
B3) Tìm hai giá trị ui , uj v và t, t’ Z4 sao cho: x = ui.t + uj.t’ (trong M) và thay pi, pj sao cho :
v(pi’) = v(pi) + t Z4 v(pj’) = v(pj) + t’ Z4 4) Return( ); // đã giấu d.
+ Thuật toán giải tin:
- Input: đã giấu tin
- Output: d M (d: dữ liệu mật)
B1) Từ = { , …, } tính = { , …, }, I = 1..6. B2) Tính
B3) Return(d);
Ví dụ: Cho F được xác định như sau
1 2 3 4 5 6 { 1, 2, 0, 1, 1, 0} F F F F F F F , và 1 2 3 4 5 6 { (0,0,1); (0,1,0); (0,1,1); (0,1,2); (1,0,0); (3,3,1)} U U U U U U U
55 6 1 2 4 5 1 2 (0,0,1) (0,2,0) (0,1,2) (1,0,0) (1,3,3) i i i P U F U U U U
Giả sử cần giấu tin mật 3 4 (2,3,1) d Z , tính 1 5 (2,3,1) (1,3,3) (2,3,1) (3,1,1) (1,0,2) 2 x d P U U
Ta thực hiện thay đổi F tại hai vị trí { , }F F1 5 ta được
1 1 5 5 ' 2 1 2 3 ' 1 1 1 2 F F F F
Cuối cùng ta có được khối F' mới
1 2 3 4 5 6
' { ' 3, 2, 0, 1, ' 2, =0}
F F F F F F F
Bước giải tin mật, ta thực hiện tính 6 1 2 4 5 1 ' 3 2 2 (2,3,1) i i i P U F U U U U d
Kết thúc giải thuật, lấy lại tin mật thành công.
3.2.8. Thuật toán giấu tin trong ảnh xám theo module
Trong phần này, ta giới thiệu một phương pháp sử dụng 2-cơ sở yếu trên module Z2.
Đối với module M = trên trường Z2 , mỗi phần tử của nó được xem như là một số tự nhiên hoặc một chuỗi nhị phân hoặc vector 6 chiều. Hai cơ sở yếu của 12 phần tử được chi ra như sau:
U = {11, 51, 55, 39, 30, 42, 1, 2, 4, 8, 16, 32} là các số tự nhiên, hoặc
U ={w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12}, w1=001011,