Thứ nhất: ảnh môi trƣờng để thực hiện giấu thông tin cũng phải đƣợc chọn kỹ càng. Nếu một ảnh có quá nhiều điểm trắng (hoặc đen) thì tỉ lệ bit giấu đƣợc sẽ rất thấp.
Thứ hai: Vì trong mỗi ma trận điểm ảnh F thuật toán chỉ biến đổi tối đa là một phần tử (từ 1 thành 0 hoặc từ 0 thành 1), do vậy nếu chọn m, n đủ lớn thì sự thay đổi này khó có thể nhận biết bằng mắt thƣờng nhƣng khả năng giấu của thuật toán lại giảm đáng kể.
Thứ ba: Khi cần biến đổi ma trận F, thuật toán luôn thay đổi ngẫu nhiên một phần tử Fi,j ứng với Ki,j = 1. Do vậy, trong một số trƣờng hợp ảnh sau khi đƣợc giấu tin sẽ xuất hiện những điểm khác biệt so với ảnh gốc và dễ dàng phân biệt đƣợc bằng mắt thƣờng. Do đó, để tăng tính che giấu cho thuật toán chúng ta nên chọn phần tử (i,j) có định hƣớng theo một tiêu chí nào đó.
Xét ví dụ giấu bit 0 vào ma trận có kích thƣớc với các giá trị cụ thể nhƣ sau: 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 F= 1 0 1 0 K= 1 1 0 0 b = 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0
Giả sử chọn ngẫu nhiên phần tử (1,4) để thay đổi ta thu đƣợc G và thay đổi trên biên (có định hƣớng) ta chọn phần tử (5,3) kết quả ta đƣợc G‟. Trong trƣờng hợp này, chúng ta thấy rằng khả năng che giấu của G‟ cao hơn G giống nhƣ trong Hình 1.5.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 G= 1 0 1 0 G’= 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1
Hình 1.5. Minh hoạ giữa thay đổi ngẫu nhiên và thay đổi có định hƣớng 1.9. Thuật toán Chen – Pan – Tseng
1.9.1. Ý tưởng
Thuật toán giấu tin của ba tác giả Y.Chen, H.Pan, Y.Tseng (CPT [6]) 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 ) 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.
1.9.2. Thuật toán nhúng tin 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 .
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
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
K là ma trận nhị phân cấp và là khóa bí mật để giải tin
W là ma trận trọng số cấp r gồm m hàng và n cột, W đƣợc giữ bí mật là dãy bit nhị phân cần nhúng
Output:
Gọi b là giá trị thập phân của dãy , 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 (1.4).
(1.4) Nội dung thuật toán Nội dung thuật toán
Bƣớc 1: Tính T = F K
Bƣớc 2: Tính S = SUM(T W)
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)}(1.4)
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((G K) 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
) (1.5)
Bất biến (1.5) 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 (1.5) do đó trƣờng hợp này giấu b vào F mà không cần phải biến đổi F.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
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 (1.7). Trong trƣờng hợp này có hai khả năng:
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 (1.2) S sẽ tăng thêm d đơn vị do đó đạt đƣợc bất biến
(1.5)
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 1.1 bên dƣới).
+ Chọn (i,j) Zhd và thay đổi bit Fi,j, khi đó theo (1.4) S tăng thêm một lƣợng là hd. (1.6)
+ Chọn (u,v) Zd-hd và thay đổi Fu,v, khi đó theo (1.4) S tăng thêm một lƣợng là d-hd (Zd-hd Ø xem nhận xét 1.1 bên dƣới) (1.7)
Từ (1.6) và (1.7) 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 1.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.
1.9.3. Chứng minh tính đúng đắn của thuật toán
Nhận xét 1.2: 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 r1 2 Z Ø Đặ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:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
- Nếu Ti,j = 0: Do Wi,j = α nên (i, j) thoả điều kiện thứ nhất trong (1.6), vậy (i,j) Zα
- Nếu Ti,j = 1: Do Wi,j = α mà α = 2r-1 = 2r – α nên (i,j) thoả điều kiện thứ hai trong (1.7), vậy (i,j) Zα. Do đó tập Z2r1 Ø.
Nhận xét 1.3: nếu Zα = Ø thì Z -α Ø
Chứng minh
Theo (1.4) đị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 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) (1.8) Từ (1.4) và (1.8), ta suy ra khi Zα = Ø thì Z-α Ø (1.9) 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 (1.8) khi Z(h - 1)d = Ø thì Zd-hd Ø, vì vậy phép chọn phần tử (u,v) trong (1.7) luôn thực hiện đƣợc.
Nhận xét 1.4: 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
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
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 1.2: để 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 1.4 luôn tồn tại h sao cho hd = -1 (mod ). Mặt khác theo nhận xét 1.2 tập do đó luôn tồn tại h sao cho . Điều đó chứng tỏ thuật toán luôn thực hiện đúng.
1.9.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 với các tham số đầu vào nhƣ Hình 1.6.
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 F K= 0 0 1 1 T W = 0 0 9 10 G = 0 1 0 1 1 0 0 1 12 0 0 3 0 0 1 0 T
Hình 1.6. Minh hoạ thuật toán CPT trƣờng hợp thay đổi 1 bit
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
- Đặt d = b - s (mod 2r) = 11 - 51 (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 1.6.
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 1.7, để 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(T W) 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 T W= 0 0 5 4 0 0 1 1 0 0 9 10 1 0 0 1 12 0 0 3 G K
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Thí dụ minh hoạ trường hợp thay đổi hai bit
Quá trình nhúng tin
Giả sử cần giấu dãy bit 0100 vào ma trận điểm ảnh có kích thƣớc 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 1.7. Quá trình giấu diễn ra nhƣ sau:
- Tính: T = F K (kết quả nhƣ Hình 1.6) - Tính: s = SUM(T W ) = 59 mod (16) =11 - Đặt: d = b – s (mod 2r) = 4 – 11(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 : Với d = 9 và do phép toán mod 2r nên <=> . Do không tồn tại (i,j) để ( và = 0) hoặc ( =14 và =1) => Ø
+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) = (4,2), sau khi đảo F3,2 và F4,2 ta sẽ đƣợc ma trận kết quả G nhƣ trong Hình 1.8
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 1 0 0 1 1 0 1 0 1 3 2 6 1 0 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 0 0 1 T = 0 0 1 1 T W = 0 0 9 10 G = 0 0 0 1 1 0 0 1 12 0 0 3 0 1 1 0 F K
Hình 1.8. Thí dụ minh hoạ trƣờng hợp thay đổi hai bit 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‟= , 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 1.8 ta tính đƣợc thông tin giấu trong G nhƣ sau:
b‟= SUM((G K) W) mod 2r => b‟ = 84 mod 16 = 4 = 0100(2)
1.9.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 với điều kiện là 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.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Độ 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.
1.10. Thuật toán giấu tin THA
1.10.1. Thuật toán nhúng tin
Giống nhƣ thuật toán CPT, thuật toán THA
thay đổi tối đa một phần tử trên F. Thuật toán sử dụng ma trận trọng số K cấp r. Thuật toán biến đổi F để nhận đƣợc G thỏa mãn điều kiện:
(1.10) 1: - - 2 2: - - - -
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Chú ý: 2r- trọng số : 1.10.2. Ví dụ minh hoạ 1b2 : b=b1b2=10 F K 1 0 0 2 1 2 0 1 1 3 1 2 0 1 1 3 3 1 Quá trình nhúng tin: 1: - - 2 2: - - , suy ra (u,v) = (1,2) - 1,2: F1,2 - = F. 10 : G 1 1 0 0 1 1 0 1 1
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Theo các kết quả phân tích và thực nghiệm trong [7], thuật toán THA có khả năng nhúng và tính bảo mật cao hơn thuật toán CPT.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Chƣơng 2
MỘT SỐ LƢỢC ĐỒ THỦY VÂN DỄ VỠ KHÓA CÔNG KHAI
Chương này trình bày một số khái niệm liên quan đến mật mã học như hàm băm, hệ mật mã khóa công khai RSA và chữ ký số. Các kiến thức về mật mã được sử dụng trong hai lươc đồ thủy vân dễ vỡ trình bày phía cuối của Chương.
2.1. Thủy vân trên ảnh số
Thủy vân ảnh là kỹ thuật nhúng thông tin vào dữ liệu ảnh trƣớc khi ảnh đƣợc phân phối trên môi trƣờng trao đổi không an toàn, việc nhúng thông tin vào ảnh sẽ làm giảm chất lƣợng ảnh. Tuy nhiên, thông tin đã nhúng (dấu thủy vân) sẽ là dấu vết để nhận biết sự tấn công trái phép, hoặc để xác định thông tin về chủ sở hữu. Theo [4], thủy vân trên ảnh có mô hình nhƣ sau:
Hình 2.1. Mô hình thủy vân số
Trong mô hình thủy vân, chủ sở hữu nhúng dấu thủy vân vào ảnh gốc để nhận đƣợc ảnh thủy vân . Trong quá trình trao đổi, ảnh có thể bị tấn công hoặc tranh chấp bản quyền, thủ tục kiểm tra dấu thủy vân có khả năng xác định tính toàn vẹn của ảnh, định vị các vùng ảnh giả mạo hoặc xác định quyền tác giả của ảnh . Nếu từ ảnh thủy vân khôi phục đƣợc ảnh
Internet Ảnh gốc F Nhúng thủy vân Khóa Ảnh thủy
vân Kiểm tra dấu
thủy vân Ảnh thủy vân Khóa Dấu thủy vân W Ảnh gốc F
Dấu thủy vân
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
gốc thì đƣợc gọi là thủy vân thuận nghịch (reversible watermarking). Để tăng độ bảo mật, trong quá trình nhúng và kiểm tra dấu thủy vân có sử dụng hệ thống khóa, nếu khóa nhúng thủy vân khác với kiểm tra dấu thủy vân thì đƣợc gọi là thủy vân bất đối xứng.
2.2. Phân loại thủy vân
Theo mục đích sử dụng, ta có thể chia các lƣợc đồ thủy vân thành ba nhóm chính: thủy vân dễ vỡ (fragile watermarking), thủy vân bền vững
(robust watermarking) và thủy vân bán dễ vỡ (semi-fragile watermarking).
Hình 2.2. Phân loại thủy vân theo mục đích ứng dụng
Thủy vân dễ vỡ ững lƣợc đồ nhúng tin nhằm phát hiện ra sự biến đổi dù chỉ vài bít trên dữ liệu ảnh. Theo đó, thông tin đƣợc nhúng cần phải dễ dàng thay đổi trƣớc các phép tấn công ảnh nhƣ: nén JPEG, nhiễu, biến