Chương 3 MỘT SỐ THUẬT TOÁN GIẤU TIN TRÊN MIỀN THỜI GIAN
3.2. Thuật tốn giấu điều chỉnh giá trị nhóm bit
3.2.3. Thuật toán giấu tin theo phương pháp điều chỉnh giá trị nhóm bit
Đầu vào:
- Tệp âm thanh A, chuỗi bit M có độ dài L, khố K gồm ba số (x, y, N). Đầu ra:
- Tệp âm thanh A’ có chứa chuỗi bit mật M. Bước 1) Chuẩn bị
Dựa vào khoá (x, y, N) sinh ra chuỗi ngẫu nhiên SR theo cơng thức (3.3), từ đó tính mảng S[] cho biết mẫu dữ liệu được chọn để giấu tin và mảng V[] cho biết vị
1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 219 220 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 220 219
Bước 2) Giấu tin: Giấu lần lượt từng bit mật Mi cho đến khi giấu xong. - Đọc tệp dữ liệu âm thanh, dựa vào mảng S[] để chọn mẫu cần giấu. - Dựa vào mảng V[] để biết vị trị bit giấu.
- Nếu bit thứ Vi của mẫu chọn thứ i khác với Mi thì thực hiện DIEUCHINH(Vi, Mi)
Bước 3) Ghi các mẫu đã được điều chỉnh ra tệp âm thanh A’.
3.2.3.1. Sinh mảng S[]
Mỗi một phần tử trong mảng S[] được dùng trong thuật tốn có giá trị trong khoảng [1..4]. Giá trị S[i] = p có nghĩa là mẫu được chọn để giấu bit Mi sẽ cách mẫu được chọn để giấu bit Mi-1 p mẫu, vì vậy S[i] ln lớn hơn 0 để tránh trường hợp hai bit được giấu trên cùng một mẫu dữ liệu. Công thức xác định S[i] dựa vào chuỗi ngẫu nhiên SR như sau:
S[i] = (SR[i] mod 9) mod 4 + 1 (3.4)
Ví dụ, ta cần giấu hai byte dữ liệu và dùng khoá K gồm 3 số là (7, 9137, 10000). Chuỗi số ngẫu nhiên gồm 16 số sẽ được sinh như sau:
SR={ 7, 18323, 46535, 44019, 26407, 3123, 40135, 99219, 12807, 7923 73735, 34419, 59207, 32723, 47335, 49619}
Khi đó giá trị của mảng S sẽ là:
S= { 4, 1, 2, 1, 2, 1, 1, 4, 1, 4, 4, 4, 2, 1, 1, 3}
Mảng S[i] cho biết mẫu kế tiếp sẽ được chọn giấu tin, so với mẫu đã chọn để giấu bit thứ i-1, do đó vị trí các mẫu được chọn để giấu 16 bit dữ liệu là {4, 5, 7, 8, 10,11, 12, 16, 17, 21, 25, 29, 31, 32, 33, 36 }.
3.2.3.2. Sinh mảng V[]
Trên mỗi mẫu dữ liệu được xác định dựa vào mảng S[i] ta sẽ chọn ra vị trí bit cần điều chỉnh để giấu bit tin mật. Vị trí bit được chọn là một vị trí ngẫu nhiên nằm trong phạm vi từ 1 đến 3 chứ không cố định. Giá trị của V[i] cũng dựa vào giá trị của chuỗi ngẫu nhiên SR[] và được xác định như cơng thức (3.5).
Ví dụ với chuỗi SR như trên và cần giấu 2 byte dữ liệu thì kết quả mảng V sẽ như sau:
V={2, 3, 3, 1, 2, 1, 2, 1, 1, 1, 2, 1, 3, 3, 2, 3}
Để giấu được chuỗi bit độ dài L vào trong tệp âm thanh A thì tệp A được chọn phải có ít nhất 4*L mẫu, do đó kích thước tệp làm đối tượng chứa cần được kiểm tra trước khi giấu tin.