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.