Lược đồ Alattar

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 81)

Lược đồ Alattar [10] là sự mở rộng của lược đồ Tian từ cặp hai điểm ảnh thành véc tơ 𝑛 điểm ảnh (với 𝑛 > 2): 𝑈 = (𝑢0, … , 𝑢𝑛−1). Theo [10], thuật toán nhúng tin và khôi phục như sau:

Thuật toán nhúng tin

Dãy bít thủy vân 𝐵 = (𝑏1, … , 𝑏𝑛−1) được nhúng vào véc tơ 𝑈 = (𝑢0, … , 𝑢𝑛−1) để nhận được véc tơ 𝑈′ thực hiện theo các bước:

Bước 1: Biến đổi 𝑈 sang 𝑉 = (𝑣0, … , 𝑣𝑛−1):

𝑣0 = ⌊∑𝑛−1𝑖=0𝑎𝑖𝑢𝑖

∑𝑛−1𝑖=0 𝑎𝑖 ⌋ , 𝑣𝑗 = 𝑢𝑗 − 𝑢0, 𝑗 = 1, … , 𝑛 − 1

Trong đó, 𝑎𝑖 là các hệ số dương cho trước, ví dụ có thể chọn 𝑎𝑖 = 1 với mọi 𝑖.

Bước 2: Nhúng dãy bít 𝐵:

𝑣𝑗′ = 2𝑣𝑗+ 𝑏𝑗, 𝑗 = 1, … , 𝑛 − 1

Bước 3: Tạo véc tơ 𝑈′ = (𝑢0′, … , 𝑢𝑛−1′ ) theo công thức:

𝑢0′ = 𝑣0− ⌊∑𝑛−1𝑖=1𝑎𝑖𝑣𝑖′

∑𝑛−1𝑖=0𝑎𝑖 ⌋, 𝑢𝑗′ = 𝑣𝑗′+ 𝑢0′, 𝑗 = 1, … , 𝑛 − 1

Nếu 𝑏𝑗 ∈ {0,1} với 1 ≤ 𝑗 ≤ 𝑛 − 1, các phần tử của 𝑈’ vẫn nằm trong miền [0,255] thì véc tơ 𝑈 được gọi là khả mở.

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

Với véc tơ 𝑈 khả mở, thuật toán khôi phục các bít dấu thủy vân 𝑏𝑗 và các phần tử

𝑢𝑗 từ véc tơ 𝑈’ = (𝑢0′, … , 𝑢𝑛−1′ ) như sau:

Bước 1: Biến đổi 𝑈′ sang 𝑉′ = (𝑣0′, … , 𝑣𝑛−1′ ) theo công thức:

𝑣0′ = ⌊∑𝑛−1𝑖=0 𝑎𝑖𝑢𝑖′

75

Bước 2: Trích dãy bít 𝐵 = (𝑏1, … , 𝑏𝑛−1):

𝑏𝑗 = 𝑣𝑗′ mod 2, 𝑣𝑗 = ⌊𝑣𝑗

2⌋ , 𝑗 = 1, … , 𝑛 − 1

Bước 3: Khôi phục véc tơ 𝑈 = (𝑢0, … , 𝑢𝑛−1) theo công thức:

𝑢0 = 𝑣0′ − ⌊∑𝑛−1𝑖=1𝑎𝑖𝑣𝑖

∑𝑛−1𝑖=0 𝑎𝑖 ⌋, 𝑢𝑗 = 𝑣𝑗 + 𝑢0 , 𝑗 = 1, … , 𝑛 − 1

Nhận xét 3.1. Mỗi véc tơ 𝐵 = (𝑏1, … , 𝑏𝑛−1) cho một véc tơ 𝑈′. Do có 2𝑛−1 véc tơ

𝐵 khác nhau nên cần phải tính và kiểm tra 2𝑛−1 véc tơ 𝑈′ khác nhau. Nếu tất cả

2𝑛−1 véc tơ 𝑈′ đều không vượt ra ngoài miền [0,255] (giá trị các phần tử của véc tơ đều thuộc [0,255]) thì mới khẳng định véc tơ 𝑈 khả mở. Để tính mỗi 𝑈′ cần thực hiện 𝑛 phép nhân chia (không kể các phép cộng). Để kiểm tra mỗi 𝑈′ có thuộc đoạn

[0,255] hay không cần thực hiện 2𝑛 phép so sánh. Như vậy, để biết 𝑈 có khả mở hay không cần thực hiện: 2𝑛−1× 𝑛 phép nhân chia và 2𝑛× 𝑛 phép so sánh.

Để hình dung khối lượng tính toán nói trên lớn đến mức nào, ta xét một ví dụ với ảnh có kích thước 512 × 512. Nếu chia ảnh thành các khối kích cỡ 4 × 4 thì mỗi véc tơ có độ dài 𝑛 = 16 và số véc tơ là 16384. Khi đó, để xác định tính khả mở của các khối cần thực hiện: (adsbygoogle = window.adsbygoogle || []).push({});

- 215 × 16 × 16384 = 𝟖𝟓𝟖𝟗𝟗𝟑𝟒𝟓𝟗𝟐 phép nhân chia - 216× 16 × 16384 = 𝟏𝟕𝟏𝟕𝟗𝟖𝟔𝟗𝟏𝟖𝟒 phép so sánh

Trong thực tế, lược đồ Alattar chỉ ứng dụng tốt đối với khối 2 × 2. Đối với khối

3 × 3 tốc độ thực hiện chậm, còn đối với khối lớn hơn thì không thể thực hiện được. Đây là một nhược điểm đáng kể của lược đồ Alattar.

Theo thuật toán nhúng tin, mỗi véc tơ khả mở 𝑛 điểm ảnh nhúng được 𝑛 − 1 bít. Do vậy, khả năng nhúng của lược đồ Alattar được xác định theo công thức:

𝐾𝑁 = 𝑆𝐾𝑀 × (𝑛 − 1) − 𝑑(𝑀𝑁) (3.7) Trong đó 𝑆𝐾𝑀 là số véc tơ khả mở, 𝑑(𝑀𝑁) là độ dài của mã nén bản đồ định vị (Cách xác định 𝑀𝑁 như trong [10], hoặc theo Bước 2 của thuật toán 3.5.3).

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 81)