Thuật toán nhúng tin và khôi phục bằng cách chèn bít thấp

Một phần của tài liệu Kỹ thuật thủy vân và mật mã học trong xác thực, bảo vệ bản quyền dữ liệu đa phương tiện (Trang 87)

Đối với các véc tơ không khả mở, lược đồ đề xuất sử dụng khái niệm khả biến và thuật toán nhúng tin bằng phương pháp chèn bít thấp như sau:

81

3.5.2.1. Thuật toán nhúng tin

Sắp xếp véc tơ 𝑈 = (𝑢0, … , 𝑢𝑛−1) theo thứ tự tăng để nhận được 𝑉. Chọn giá trị cơ sở 𝑎 = 𝑉 (⌊𝑛2⌋) và đặt ℎ𝑗 = |𝑢𝑗 − 𝑎|. Bít 𝑏𝑗 được nhúng vào bít thấp của ℎ𝑗 (bít có ý nghĩa thấp nhất của ℎ𝑗) theo công thức

𝑢𝑗′ = { 𝑎 + (2 ⌊ℎ𝑗 2⌋ + 𝑏𝑗) , nếu 𝑢𝑗 ≥ 𝑎 + 2 𝑎 − (2 ⌊ℎ𝑗 2⌋ + 𝑏𝑗) , nếu 𝑢𝑗 ≤ 𝑎 − 2 𝑢𝑗, nếu 𝑎 − 1 ≤ 𝑢𝑗 ≤ 𝑎 + 1 (3.15)

Khái niệm véc tơ khả biến

Véc tơ 𝑈 được gọi là véc tơ khả biến (changable) nếu sau khi nhúng dãy bít 𝑏𝑗

(với 𝑏𝑗 ∈ {0,1}) theo công thức (3.15) mà các phần tử 𝑢𝑗′ vẫn thỏa mãn điệu kiện:

0 ≤ 𝑢𝑗′ ≤ 255, với 𝑗 = 0, … , 𝑛 − 1.

Nhận xét 3.3. Nếu gọi 𝑆𝑐(𝑈) là số bít nhúng được trên mỗi véc tơ 𝑈 khả biến, thì

𝑆𝑐(𝑈) bằng số phần tử thỏa mãn điều kiện: |𝑢𝑗 − 𝑎| ≥ 2. Hay nói cách khác:

𝑆𝑐(𝑈) = 𝑑(𝑅) (3.16) Trong đó, 𝑅 = {𝑗 |0 ≤ 𝑗 ≤ 𝑛 − 1 và |𝑢𝑗 − 𝑎| ≥ 2}.

Ngoài ra, các tính chất |𝑢𝑗 − 𝑎| ≥ 2 và |𝑢𝑗′− 𝑎| ≥ 2 là tương đương nhau. Tính chất này được sử dụng trong thuật toán khôi phục.

3.5.2.2. Thuật toán khôi phục

Nếu 𝑈 khả biến thì từ 𝑈′ = (𝑢0′, … , 𝑢𝑛−1′ ) có thể trích được các bít 𝑏𝑗 nhưng không khôi phục được 𝑈. Do vậy, thuật toán 3.5.2.1 không khả nghịch. Để khôi phục được 𝑈 từ 𝑈′, trong thuật toán 3.5.2.1 cần phải lưu trữ bít thấp của hiệu ℎ𝑗 (ký hiệu 𝐿𝑆𝐵(ℎ𝑗)) trước khi thực hiện công thức (3.15).

Ngoài ra, theo công thức (3.15) và Nhận xét 3.3 thì chỉ cần khôi phục 𝑏𝑗, 𝑢𝑗 ứng với các 𝑗 thỏa mãn điều kiện |𝑢𝑗′− 𝑎| ≥ 2. Thuật toán khôi phục 𝑏𝑗 và 𝑢𝑗 như sau:

Bước 1: Sắp xếp 𝑈′ theo thứ tự tăng để nhận được véc tơ 𝑉′ = (𝑣0′, … , 𝑣𝑛−1′ ).

Bước 2: Xác định giá trị cơ sở 𝑎:

𝑎 = 𝑉′(⌊𝑛 2⌋)

82

Bước 3: Trích các bít 𝑏𝑗 từ các phần tử 𝑢𝑗′ với |𝑢𝑗′ − 𝑎| ≥ 2 theo công thức;

𝑏𝑗 = |𝑢𝑗′− 𝑎| 𝑚𝑜𝑑 2 Bước 4: Khôi phục các phần tử 𝑢𝑗: - Đặt ℎ𝑗′ = |𝑢𝑗′ − 𝑎|, 𝑗 = 0, … , 𝑛 − 1 - Tính 𝑢𝑗 theo công thức: 𝑢𝑗 = { 𝑎 + (2 ⌊ℎ𝑗′ 2⌋ + 𝐿𝑆𝐵(ℎ𝑗)) , nếu 𝑢𝑗′ ≥ 𝑎 + 2 𝑎 − (2 ⌊ℎ𝑗 ′ 2⌋ + 𝐿𝑆𝐵(ℎ𝑗)) , nếu 𝑢𝑗′ ≤ 𝑎 − 2 𝑢𝑗′, nếu 𝑎 − 1 ≤ 𝑢𝑗′≤ 𝑎 + 1

Ta có thể dễ dàng nhận thấy, hai thuật toán nhúng tin 3.4.3.1 và 3.5.2.1 tuy khác nhau nhưng cách trích các bít 𝑏𝑗 thì giống nhau. Nói cách khác, việc khôi phục bít

𝑏𝑗 trong các thuật toán nhúng tin 3.4.3.1 và 3.5.2.1 là như nhau.

Nhận xét 3.4.

- Nếu véc tơ 𝑈 khả biến và nhúng tin theo thuật toán 3.5.2.1 thì véc tơ 𝑈′ vẫn khả biến.

- Nếu véc tơ 𝑈 khả mở và nhúng tin theo thuật toán 3.5.1.1 thì 𝑈′ có thể không khả mở nhưng vẫn khả biến.

Hai tính chất trên có thể được chứng minh tương tự như [10]. Các tính chất này được sử dụng trong thuật toán dưới đây để trích dấu thủy vân và khôi phục ảnh gốc.

Một phần của tài liệu Kỹ thuật thủy vân và mật mã học trong xác thực, bảo vệ bản quyền dữ liệu đa phương tiện (Trang 87)