2.1/ Cơ sở lý thuyết
2.1.1/ Mô-đun trên vành Z2 trong giấu tin
Cho mô-đun (phải) M trên vành Z2, ta có M= Zn2 = Z2 × …×Z2 là tích Đề-các n tập hợp Z2. Phép cộng trên Z2 có thể được xem như toán tử XOR trên các bit. Mỗi một phần tử x=(x1, x2, …, xn) M ( xi Z2) có thể được biểu diễn như 1 xâu n bit x= x1x2…xn với các toán tử được định nghĩa như sau:
*/ x+y= z1z2…zn, trong đó zi=xi yi; x, y M; i=1,..,n */ x.k= z1z2…zn, trong đó zi=xi.k= xi AND k; x M; k Z2 Xét ảnh nhị phân G, ta đặt tập CG=Z2={0,1} như là một tập hợp gồm 2 giá trị mức xám của G. Hàm thay đổi giá trị mức xám Next: Z2 → Z2 được cho bởi: c’=Next(c)= c 1, c Z2 và khi ta nói thay đổi mức xám của c nghĩa là thay c bởi c’=Next(c).
2.1.2/ Khái quát sơ đồ giấu tin (1, 7, 3)
Xét ảnh nhị phân G, đầu tiên ta chia G thành các các khối ảnh, mỗi khối gồm 7 điểm ảnh, ký hiệu khối ảnh trong G là F=(p1, p2, p3, p4, p5, p6, p7) (với pi là giá trị mức xám của mỗi điểm ảnh). Khóa K= (k1, k2, k3, k4, k5, k6, k7), trong đó ki Z2. Sơ đồ giấu tin (1,7,3) cho phép ta giấu 3 bit dữ liệu d vào trong khối F gồm 7 điểm ảnh bằng việc thay đổi không quá 1 điểm ảnh trong F.
Cho W=M\{0} là 1-cơ sở của mô-đun M trên Z2. Ta gán một hàm h: {1,2,..,N} → W là một hàm trọng số của các phần tử trong F, với h(i) W được coi là trọng số của pi.
2.2/ Sơ đồ giấu tin (1,7,3) cho ảnh nhị phân
2.2.1/ Lược đồ giấu tin
- Lấy W={wi | i=1,.., 7}={001, 010, 011, 100, 101, 110 , 111} là 1-cơ sở chứa 7 phần tử của mô-đun M=Z32\{000}.
- Đầu vào: Khối ảnh F=(p1, …, p7), dữ liệu mật d= d3d2d1 cần giấu trong F, khóa K=(k1,.., k7) . Với pi, ki, di {0,1}=Z2.
- Đầu ra: F’ là khối ảnh F sau khi giấu d
*/ Bước 1: Tính T= F K bằng việc lấy ti=pi ki */ Bước 2: Tính m= 1≤i≤7 (wi. ti)
*/ Bước 3: So sánh m và d
B.3.1) Nếu m=d thì giữ nguyên F hay F’=F B.3.2) Nếu m≠d
B.3.2.1) Tính s=d m Z32\{000}
B.3.2.2) Tìm wi=s, sau đó lật pi → p’i = pi 1. => Ta được F’ là F sau khi lật pi → p’i */ Bước 4: Trả về: F’
2.2.2/ Lược đồ giải tin
- Đầu vào: Khối ảnh F=(p1, …, p7), khóa K=(k1,.., k7). Với pi, ki {0,1}=Z2.
- Đầu ra: dữ liệu mật d
*/ Bước 1: Tính T= F K bằng việc lấy ti=pi ki */ Bước 2: Tính m= 1≤i≤7 (wi. ti) */ Bước 3: Trả về: d=m 2.2.3/ Ví dụ minh họa - Khối ảnh F=( 1, 1, 0, 1, 1, 0, 0 ) - Khóa bí mật K=(1, 0, 1, 1, 1, 0, 1) - Cơ sở W={001, 010, 011, 100, 101, 110 , 111} - Dữ liệu mật cần giấu d=010
2.2.3.1/ Pha giấu d vào trong F
*/ Bước 1: Tính T= F K = (0, 1, 1, 0, 0, 0, 1) */ Bước 2: Tính m= 1≤i≤7 (wi. ti)
= 010 011111 = 110
*/ Bước 3: So sánh m và d thấy m≠d => Trường hợp 3.2 B.3.2) Trường hợp m≠d B.3.2.1) Tính s=d m =100 B.3.2.2) Tìm wi=s=100 => w4, Lật p4→ p’4 = p4 1=1 1=0. => Ta được F’=( 1, 1, 0, 0, 1, 0, 0 ) */ Bước 4: Trả về: F’=( 1, 1, 0, 0, 1, 0, 0 )
2.2.3.2/ Pha giải tin d từ F=( 1, 1, 0, 0, 1, 0, 0 )
*/ Bước 1: Tính T= F K =(0, 1, 1,1,0,0,1) */ Bước 2: Tính m= 1≤i≤7 (wi. ti)
= 010 011100111 */ Bước 3: Trả về: d=m= 010
2.3/ Sơ đồ giấu tin (1,7,3) cho ảnh xám 256 mức
2.3.1/Cải tiến sơ đồ giấu tin (1,7, 3) ảnh nhị phân cho ảnh xám 256 mức
- Từ sơ đồ giấu tin (1,7, 3) cho ảnh nhị phân, ta cải tiến để có thể giấu tin vào trong ảnh xám 256 mức
- Khác với ảnh nhị phân có giá trị ở mỗi điểm ảnh là 0 hoặc 1, các điểm ảnh trong ảnh xám 256 mức có giá trị từ 0 đến 255. Do đó đối với mỗi khối ảnh F=(p1, p2, p3, p4, p5, p6, p7) (với pi là giá trị mức xám của mỗi điểm ảnh), ta lấy VF=(v1, v2, v3, v4, v5, v6, v7) là vectơ nhị phân gồm các phần tử vi ( tương ứng là các bit LSB của pi), sao cho vi=pi mod 2 được coi như là phần tử của Z2 (i=1,…,7).
- Nếu với ảnh nhị phân, ta sử dụng hàm Next(c)=c 1 c Z2 thì đối với ảnh xám 256 mức, ta có hàm Next(p) p{0, 1, 2,…, 255} được xác định như sau:
+/ Nếu p=0 thì Next(0)=1
+/ Nếu p=255 thì Next(255)=254
+/ Nếu 1≤p≤254 thì có thể chọn Next(p)=p+1 hoặc p-1
2.3.2/ Lược đồ giấu tin
- Lấy W={wi | i=1,.., 7}={001, 010, 011, 100, 101, 110 , 111} là 1-cơ sở chứa 7 phần tử của mô-đun M=Z32 \{000}.
- Đầu vào: Khối ảnh F=(p1, …, p7), dữ liệu mật d= d3d2d1 cần giấu trong F, khóa K=(k1,.., k7) . Với pi {0,1,2,…,255}; ki, di {0,1}=Z2.
- Đầu ra: F’ là khối ảnh F sau khi giấu d
*/ Bước 1: Tính VF=(v1, …, v7) ; trong đó vi= pi mod 2 */ Bước 2: Tính T= VF K bằng việc lấy ti=vi ki */ Bước 3: Tính m= 1≤i≤7 (wi. ti)
*/ Bước 4: So sánh m và d
B.4.1) Nếu m=d thì giữ nguyên F hay F’=F B.4.2) Nếu m≠d
B.4.2.1) Tính s=d m Z32\{000}
B.4.2.2) Tìm wi=s, sau đó lật pi → p’i = Next(pi). => Ta được F’ là F sau khi lật pi → p’i */ Bước 5: Trả về: F’
2.3.3/ Lược đồ giải tin
- Đầu vào: Khối ảnh F=(p1, …, p7), khóa K=(k1,.., k7). Với pi {0,1,2,…,255}; ki {0,1}=Z2.
- Đầu ra: dữ liệu mật d
*/ Bước 1: Tính VF=(v1, …, v7) ; trong đó vi=pi mod 2 */ Bước 2: Tính T= VF K bằng việc lấy ti=pi ki */ Bước 3: Tính m= 1≤i≤7 (wi. ti) */ Bước 4: Trả về: d=m 2.3.4/ Ví dụ minh họa - Khối ảnh F=( 247, 127, 9, 105, 78, 25, 214) - Khóa bí mật K=(1, 0, 1, 1, 1, 0, 1) - Cơ sở W={001, 010, 011, 100, 101, 110 , 111} - Dữ liệu mật cần giấu d=001
2.3.4.1/ Pha giấu d vào trong F
*/ Bước 1: Tính VF=(v1, …, v7) =(1, 1, 1, 1, 0, 1, 0) */ Bước 2: Tính T= VF K =(0, 1, 0, 0, 1, 1, 1) */ Bước 3: Tính m= 1≤i≤7 (wi. ti) = 010 101 110 111 = 110 */ Bước 4: m≠d => Trường hợp 4.2 B.4.2) Với m≠d B.4.2.1) Tính s=d m =111 B.4.2.2) Do w7=s=111 =>lật p7 → p’7 = Next(214)=214-1=213. => F’=( 247, 127, 9, 105, 78, 25, 213) */ Bước 4: Trả về: F’=( 247, 127, 9, 105, 78, 25, 213)
2.3.4.2/ Pha giải tin d từ F=( 247, 127, 9, 105, 78, 25, 213)
*/ Bước 1: Tính VF=(v1, …, v7) =(1, 1, 1, 1, 0, 1, 1) */ Bước 2: Tính T= VFK =(0, 1, 0, 0, 1, 1, 0)
*/ Bước 3: Tính m= 1≤i≤7 (wi. ti) = 010 101 110 = 001
*/ Bước 4: Trả về: d=m=001