Yu Yuan, Hsiang Kuang Pan và Yu Chee Tseng đã phát triển một kỹ thuật giấu tin mới trên cơ sở của thuật toán Wu_Lee. Kỹ thuật này sử dụng một ma trận khóa và một ma trận trọng số để giấu tin. Thuật toán đảm bảo được độ an toàn của thông tin giấu và cũng giấu được nhiều thông tin trong ảnh bằng cách chỉ thay đổi nhiều nhất 2 bit trong mỗi khối ảnh. Đối với ảnh đen trắng thì kỹ thuật này có nhược điểm là chất lượng ảnh chưa cao, dễ bị phát hiện. Trước khi đi vào chi tiết kỹ thuật ta đưa ra một số định nghĩa dùng trong thuật toán.
Định nghĩa 1.5: Khóa bí mật là một ma trận nhị phân có cùng kích thước mxn với kích thước của khối ảnh. Khóa được dùng một cách bí mật mà chỉ có người gửi và người nhận đích thực mới biết được.
Định nghĩa 1.6: Ma trận W trọng số cấp r là một ma trận số nguyên có kích thước bằng kích thước của khối ảnh mxn và thỏa mãn các điều kiện sau:
(i) W là ma trận số nguyên có các phần tử nằm trong khoảng giá trị (0,…,2r -1) với r là một số nguyên dương cho trước thỏa mãn 2r
< mxn. (ii) Mỗi phần tử có giá trị từ 1 đến 2r
-1 xuất hiện ít nhất một lần trong ma trận. Định nghĩa 1.7: Phép đảo bit (bitwise) là một phép biến đổi trên các bit nhị phân. Đảo bit b tương đương với phép biến đổi thay b bởi 1-b.
Định nghĩa 1.8: Với mỗi số nguyên dương p, ta xét tập các số dư trong phép chia cho p, Zp={0, 1, 2, …, p-1}. Trên Zp ta thực hiện các phép toán theo modulo p như sau: x, y Zp:
- Phép cộng: x+y (mod p) = (x +y) mod p - Phép lấy phần tử đối: -x (mod p) = p-x - Phép trừ: x – y (mod p) = (x+(p-y)) mod p - Phép nhân: x y (mod p) = (x y) mod p.
Các phép toán dùng trong ma trận cũng giống như đã định nghĩa ở mục 1.5.2.
1.5.3.1 Ý tưởng
Ý tưởng chính của thuật toán giấu tin Yuang_Pan_Tseng là sử dụng thêm một ma trận trọng số kết hợp với ma trận khóa K và để giấu được r bit dữ liệu vào một khối m x n nhưng chỉ thay đổi nhiều nhất hai bit dữ liệu trên khối [10].
1.5.3.2 Thuật toán giấu tin Input:
F là một ma trận giá trị các điểm ảnh gốc dùng để giấu tin.
K là một ma trận khóa nhị phân có kích thước mxn.
r là số lượng bit cần giấu trong mỗi khối ảnh kích thước mxn.
D là xâu thông tin cần giấu gồm k*r bít, k là số khối ảnh giấu.
W là một ma trận trọng số r với các giá trị W[i,j] thuộc tập {1,2,…,2r-1} xuất hiện ít nhất một lần.
Output:
Một file ảnh F’ đã giấu tin b.
Cách thức thực hiện:
Bước 1: Chia ảnh F thành các khối nhỏ Fi có kích thước mxn, đặt p = 2r ;
Với mỗi khối Fi thực hiện các bước biến đổi sau Bước 2: Tính
T = FiK; P= TW;
Bước 3: Tính tổng s = sum(P) mod p; đặt b=b1b2…br; d = b – s (mod p);
Bước 4: Với mỗi khối T :
Sw = {[j,k] (W[j,k] = w Ti[j,k] =0) (W[j,k]=2r-w Ti[j,k] =1)} Endfor;
Bước 5:
if d=0 then giữ nguyên Fi;
Bước 6:
if Sd then
Chọn phần tử [j,k] bất kì thuộc Sd và đảo bit Fi[j,k];
Bước 7: u=d; while (Su= ) do v = p – u; u = (u + d) mod p; endwhile; Bước 8:
Chọn phần tử [j,k] bất kì thuộc Su và đảo bit Fi[j,k]; Chọn phần tử [j,k] bất kì thuộc Sv và đảo bit Fi[j,k]; End;
Thí dụ:
Giả sử ta có một ma trận ảnh F8x8. Một ma trận khóa K4x4 và một ma trận trọng số W4x4. Ta giấu 12 bit sau D=001 000 010 001 vào trong ảnh F. Cho r = 3.
Ban đầu chia F thành các khối ảnh F1, F2, F3, F4 có cùng kích thước 4x4.
F1 F2 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 1 5 2 6 1 1 1 1 1 1 0 0 0 1 0 1 2 6 3 7 0 0 1 0 0 1 0 1 1 0 1 0 3 7 4 1 0 1 1 0 0 0 0 0 0 1 0 1 4 1 5 2 1 1 0 1 1 1 1 1 K W 1 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 F3 F4 Với r = 3, p = 2r
=23 – 8. Như vậy đoạn bít 001 giấu vào khối F1, 000 giấu vào khối F2, 010 giấu vào khối F3 và 001 giấu vào khối F4.
Ta thực hiện phép tính FiK và (FiK)W trên mỗi khối đã chia và thu được kết quả như sau
F1K F2K (F1K)W (F2K)W 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 3 7 2 0 3 0 0 1 0 1 0 1 1 0 0 7 0 1 0 7 4 0 0 1 1 1 0 0 0 0 0 1 5 2 0 0 0 0 1 1 0 0 1 0 1 0 1 5 0 0 1 0 2 0 1 0 0 0 1 0 1 0 2 0 0 0 2 0 3 0 0 0 0 1 1 1 1 0 0 0 0 1 3 7 4 0 1 0 1 1 0 0 0 0 4 0 5 2 0 0 0 0 F3K F4K (F3K)W (F4K)W
Với mỗi khối T, để tiếp tục ta cần tính tập Sw với w=1, 2,…,7. Ta sử dụng một bảng S*
ghi nhận các phần tử của các tập Sw. Phần tử trên ma trận S*
được xác định như sau S*
[j,k]=W[j,k] nếu T[j,k] = 0; S*[j,k]=p-W[j,k] nếu T[j,k] = 1. Sau đó từ bảng S*, ta xét nếu S* [j,k] = w thì ta có [j,k] Sw. S*1 S*2 1 3 2 6 1 5 2 6 2 6 5 1 6 6 5 7 3 1 4 7 3 1 4 1 4 7 3 6 4 1 5 2 7 3 2 6 7 5 6 6 6 6 3 7 6 6 5 7 3 7 4 7 5 1 4 1 4 1 3 6 4 1 5 2 S*3 S*4 Chẳng hạn từ bảng trên ta xét khối S*
1 và thu được các Sw (w =1, 2, …, 7) sau S1={[1,1]; [2,4]; [3,2]} S2={[1,3]; [2,1]} S3={[1,2]; [3,1]; [4,3]} S4={[3,3]; [4,1]} S5={[2,3]} S6={[1,4}; [2,2]; [4,1]} S7={[3,4]; [4,2]} Với khối F1: b = (001)2 = 1, Ta có
Sd=S2 ={[1,3]; [2,1]} nên ta có thể chọn tùy ý một trong hai vị trí trong S2 để đảo bit. Ta chọn đảo bit ở F1[2,1] khi đó thu được F’1.
Với khối F2:
b = (000)2 = 0, Ta có s = sum(F2K)W) mod 8 = 16 mod 8 =0.
d = b-s (mod 8) = 0-0 (mod 8) = 0. Giữ nguyên khối F2 và coi như đã giấu được đoạn bit này.
Với khối F3:
b = (010)2 = 2, Ta có s = sum(F3K)W) mod 8 = 20 mod 8 =4. d = b-s (mod 8) = 2-4 (mod 8) = 6 0.
Sd=S6 ={[1,4]; [2,1]; [2,2]; [4,4]} nên ta có thể chọn tùy ý một phần tử trong S2 để đảo bit. Ta chọn đảo bit ở F3[2,2] khi đó thu được F’3.
Với khối F4:
b = (001)2 = 1, Ta có s = sum(F3K)W) mod 8 = 22 mod 8 =6. d = b-s (mod 8) = 1-6 (mod 8) = 3 0.
Sd=S3 =; u = d = 3; v = 8 – 3 = 5; u = 3 + 3 (mod 8) = 6 Su = S6={[1,3]; [1,4]; [2,1]; [2,2]}. Ta chọn đảo bít tại [1,4] Sv = S5 = {[1,2]; [2,3]; [3,1]; [4,3]}. Ta chọn đảo bit tại [4,3] Khi đó ma trận của F’4 là
Vậy ảnh F’ thu được bằng cách ghép 4 khối F’1, F’2, F’3, F’4 như sau
F’1 F’2 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 F’3 F’4
b) Quá trình giải tin:
Input
K là ma trận khóa bí mật, kích thước mxn.
r là số lượng bit đã giấu ở mỗi khối
Ma trận trọng số W cấp r
Output
F là file ảnh chứa tin đã được giấu
D là dãy bit bí mật đã giấu
Các bước thực hiện
Đọc header ảnh để biết các thông tin về ảnh, đọc bảng mầu, đọc phần dữ liệu ảnh vào ma trận hai chiều M
Chia M thành các khối nhỏ F’i với kích thước mxn.
Với mỗi khối nhỏ F’i. Tính b= sum((F’iK)W) mod 2r. Trong đó b là xâu nhị phân được tạo ra bởi r bit thông tin.
Thí dụ 2:
Với phần thông tin đã được giấu như trong Thí dụ 1 ở trên. Với mỗi khối F’i ta thực hiện phép toán FiK)W thu được kết quả như sau:
F'1K F'2K (F'1K)W (F'2K)W 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 1 0 1 1 1 0 1 0 2 0 3 7 2 0 3 0 0 1 0 1 0 1 1 0 0 7 0 1 0 7 4 0 0 1 1 1 0 0 0 0 0 1 5 2 0 0 0 0 1 1 0 0 1 0 1 1 1 5 0 0 1 0 2 6 1 1 0 0 1 0 1 0 2 6 0 0 2 0 3 0 0 0 0 1 1 1 1 0 0 0 0 1 3 7 4 0 1 0 1 1 0 0 1 0 4 0 5 2 0 0 5 0 F'3K F'4K (F'3K)W (F'4K)W Tiếp theo ta có các kết quả sau:
sum((F’1K)W) mod 2r = 33 mod 8 = 1 tương ứng xâu 3 bit nhị phân 001 sum((F’2K)W) mod 2r = 16 mod 8 = 0 tương ứng xâu 3 bit nhị phân 000 sum((F’3K)W) mod 2r = 26 mod 8 = 2 tương ứng xâu 3 bit nhị phân 010 sum((F’4K)W) mod 2r = 33 mod 8 = 1 tương ứng xâu 3 bit nhị phân 001 Như vậy cuối cùng ta thu được xâu bít nhị phân đã giấu ban đầu là D=001000010001.
1.5.3.3 Phân tích thuật toán
Với thuật toán giấu tin sử dụng ma trận trọng số W cấp rvà ma trận khóa K ở trên, ta có thể coi khóa K như một mặt nạ, khi đó ma trận T là ma trận nhị phân cho biết những phần tử tương ứng trong hai khối Fi và K là khác nhau hay không.
Tổng s = sum(P) cho biết tổng các trọng số tại các phần tử khác nhau giữa khối Fi và K.
d chính là điều kiện để giấu tin. d Zp. Nếu d = 0 thì ta không làm gì cả và coi như dãy bit b đã được giấu vào khối Fi tương ứng. Ngược lại nếu d 0 thì thuật toán sẽ thực hiện từ bước 6 đến bước 8 với mục đích để đẳng thức sau thỏa mãn
sum((FiK)W) b1b2…br (mod 2) Đẳng thức trên gọi là bất biến của thuật toán giấu tin này. Thủ tục sửa hai vị trí trong một khối bất kỳ như sau:
Trước hết cần tính các Sw (w=1, 2,…,2r -1) theo như bước 4 của thuật toán
Sw = {[j,k] (W[j,k] = w Ti[j,k] =0) (W[j,k]=2r-w Ti[j,k] =1)}
Như vậy Sw là tập các chỉ số [j,k] trong các khối thỏa các điều kiênh sau
(i) Tại vị trí đó, ma trận trọng số W có giá trị w và các phần tử Fi[j,k]=K[j,k] (do M[j,k]=0)
(ii) Tại vị trí đó, ma trận trọng số W có giá trị 2r-w và các phần tử Fi[j,k]K[j,k] (do M[j,k]=0).
Nếu [j,k] Sw thì ta đảo bit [j,k] trong khối đang xét, tức là thực hiện đổi bit 0 thành 1 hoặc bit 1 thành 0 và như vậy đại lượng s sẽ tăng lên w đơn vị tính theo modulo 2r.
1.6 Kết luận chương 1
Trong chương này luận văn đã trình bày sơ bộ về sự phát triển của các kỹ thuật giấu tin, các khái niệm ban đầu về giấu tin trong các môi trường đa phương tiện khác nhau. Trong đó đã đi sâu vào phân tích đánh giá các kỹ thuật giấu tin trong môi trường ảnh số như giấu tin trong khối bit sử dụng tính chẵn lẻ của tổng số bit 1 trong khối, giấu tin sử dụng ma trận khóa và ma trận trọng số. Mỗi phương pháp đều có những ưu nhược điểm nhất định từ đó đặt ra các yêu cầu về giấu tin sao cho thông tin được đảm bảo về độ an toàn của tin giấu đồng thời cũng giấu được nhiều thông tin trong ảnh nhất
có thể. Người ta đã chứng minh được rằng: Nếu coi mỗi điểm của dữ liệu ảnh (ảnh màu hoặc ảnh đa cấp xám) là một pixel, mỗi pixel là một byte (8 bit) hoặc là một số tự nhiên từ 0 đến 255 thì để đảm bảo bí mật, số lượng các bit mà một thông điệp cần giấu so với tổng số các pixel ảnh không được vượt quá 12,5%. Nghĩa là một pixel ảnh không được giấu quá 1 bit dữ liệu mật.
Chương 2 - KỸ THUẬT THỦY VÂN TRÊN ẢNH
Như đã giới thiệu trong chương trước, tính năng an toàn và bảo mật thông tin của kỹ thuật giấu tin được thể hiện ở hai khía cạnh. Một là bảo vệ cho dữ liệu đem giấu và hai là bảo vệ cho chính đối tượng được sử dụng để giấu tin. Tương ứng với hai khía cạnh đó có hai khuynh hướng kỹ thuật rõ ràng là giấu tin mật và thủy vân số. Trong chương này sẽ đưa ra một số khái niệm trong thủy vân số và một số kỹ thuật thủy vân cũng như một giải pháp nâng cao độ an toàn cho thủy vân.
2.1 Một số khái niệm cơ bản trong thủy vân số 2.1.1 Khái niệm thủy vân số 2.1.1 Khái niệm thủy vân số
Thủy vân trên ảnh số là kỹ thuật nhúng một lượng thông tin số vào một bức ảnh số sao cho người không được phép khó có thể lấy được thông tin ra khỏi ảnh mà không phá hủy chính ảnh đó (ảnh gốc).
Trong kỹ thuật thủy vân số thì thông tin nhúng được gọi là thủy vân. Thủy vân có thể là một chuỗi các kí tự hay một hình ảnh nào đó.
2.1.2 Phân loại các kỹ thuật thủy vân
Căn cứ những đặc trưng, tính chất của từng kỹ thuật thủy vân và khía cạnh ứng dụng những kỹ thuật đó ta có thể chia các kỹ thuật thủy vân theo nhóm được mô tả trong hình 1.1 [27].
Thủy vân dễ vỡ là kỹ thuật nhúng thủy vân vào trong ảnh sao cho sản phẩm sau khi phân phối trong môi trường mở nếu có bất kỳ một phép biến đổi nào làm cho nó bị thay đổi thì thủy vân đã giấu trong nó sẽ không còn nguyên vẹn như thủy vân gốc. Các kỹ thuật thủy vân có tính chất này được sử dụng trong các ứng dụng xác thực thông tin và phát hiện xuyên tạc thông tin [2, 3].
Ngược lại với kỹ thuật thủy vân dễ vỡ là thủy vân bền vững. Các kỹ thuật thủy vân bền vững thường được sử dụng trong các ứng dụng bảo vệ bản quyền. Trong những ứng dụng đó, thủy vân đóng vai trò là thông tin sở hữu của người chủ hợp pháp. Thủy vân được nhúng trong sản phẩm như một hình thức ―dán tem‖ bản quyền. Trong trường hợp đó, thủy vân phải tồn tại bền vững cùng với sản phẩm nhằm chống lại việc tẩy xóa, làm giả hay biến đổi phá hủy thủy vân. Nếu muốn hủy bỏ thủy vân chỉ còn cách ta phá hủy sản phẩm.
Thủy vân bền vững lại được chia thành hai loại là thủy vân ẩn và thủy vân hiện.
Thủy vân ẩn giống như giấu tin, yêu cầu tính ẩn cao, bằng mắt thường không thể thấy thủy vân. Thủy vân ẩn được ứng dụng trong vấn đề bảo vệ bản quyền. Thủy vân hiện
là loại thủy vân hiện ngay trên sản phẩm và người dùng có thể nhìn thấy được giống như những biểu tượng của một công ty, một sản phẩm, một kênh truyền hình,… Các thủy vân hiện trên ảnh thường dưới dạng chìm, mờ hoặc trong suốt để không gây ảnh hưởng đến chất lượng ảnh gốc. Đối với thủy vân hiện, thông tin bản quyền hiển thị ngay trên sản phẩm.
2.1.3 Mô hình hệ thống thủy vân
Một mô hình hệ thống thủy vân tổng quát được xem xét theo hai quá trình là quá trình nhúng thủy vân và quá trình tách thủy vân [15].
Quá trình nhúng thủy vân được mô tả ở hình 2.1. Trong đó – Một bức ảnh I cần được bảo vệ.
– Thông tin thủy vân W (tùy mục đích bảo vệ, thông tin thủy vân có thể là chuỗi bit, văn bản hoặc ảnh).
– Khóa K (có thể có hoặc không).
– Một thuật toán trong hệ thống sẽ kết hợp giữa thông tin ảnh gốc I, thông tin thủy vân W và khóa K để tạo thành một bức ảnh mới gọi là ảnh đã nhúng thủy vân hay ảnh chứa thủy vân Iw.
Hình 2.1. Mô hình quá trình nhúng thủy vân
Quá trình tách thủy vân được mô tả trong hình 2.3. Trong quá trình phân phối, ảnh chứa thủy vân Iw có thể bị người dùng sử dụng một phép biến đổi nào đó để tấn công nhằm phá hủy thủy vân nếu có trong Iw. Các tấn công trên tạo ra I’w. Quá trình tách thủy vân từ ảnh I’w (I’w có thể trùng với Iw) như sau:
–Ảnh chứa thủy vân I’w
–Khóa K (đã sử dụng trong quá trình nhúng thủy vân) Bộ nhúng thủy vân Thủy vân W Ảnh gốc I Khóa K Bộ nhúng thủy vân
–Ảnh gốc I (tùy theo kỹ thuật, ảnh có để được sử dụng hoặc không)
–Việc tách thủy vân được thực hiện theo một thuật toán đã xác định. Kết quả là thông tin thủy vân W’ được tách từ I’w.
–Thủy vân tách được W’ cần so sánh với thủy vân gốc để đưa ra những kết luận phù hợp.
Hình 2.2. Quá trình tách thủy vân
2.1.4 Các đặc trƣng của một hệ thủy vân
Hệ thủy vân số trên ảnh cũng là một phần của hệ giấu tin nên nó cũng có một số đặc điểm và tính chất giống với giấu tin mật trong ảnh. Ngoài ra, kỹ thuật thủy vân còn được phân biệt với giấu tin mật ở những đặc trưng sau đây:
Thông tin thủy vân có bị biến đổi hay không khi có biến đổi trên ảnh chứa
Đối với hệ thống thủy vân bền vững, yêu cầu thông tin thủy vân không thay đổi trước các tác động làm thay đổi thông tin trên ảnh chứa thủy vân. Ngược lại đối với hệ thống thủy vân dễ vỡ, yêu vầu thông tin thủy vân sẽ bị thay đổi (vỡ) nếu có bất kỳ thay đổi nào trên ảnh chứa thủy vân.
Thủy vân ẩn, thủy vân hiện
Không giống như giấu tin mật với yêu cầu bắt buộc là thông điệp giấu phải ẩn bên trong ảnh sao cho mắt thường không thể phát hiện được thì kỹ thuật thủy vân số lại có hai lại là thủy vân ẩn và thủy vân hiện. Có loại thủy vân cho phép nhìn thấy