MỞ ĐẦU .1
Chương 1.GIẤU THÔNG TIN VÀ GIẤU TIN TRONG ÂM THANH.7
1.1. Giấu thông tin.7
1.1.1. Lịch sử giấu thông tin .7
1.1.2. Các thành phần của hệ giấu tin.7
1.1.3. Các yêu cầu của hệ giấu tin .8
1.1.4. Phân loại giấu tin .10
1.1.5. Tấn công hệ thống giấu tin .11
1.1.6. Các ứng dụng của giấu tin .12
1.2. Giấu tin trong âm thanh số .13
1.2.1. Ngưỡng nghe .14
1.2.2. Hiện tượng che khuất.14
1.2.3. Âm thanh và các đặc tính của âm thanh .16
1.2.4. Biểu diễn âm thanh số.17
1.2.5. Các định dạng âm thanh phổ biến .19
1.2.6. Một số chương trình giấu tin trên âm thanh .20
Tổng kết chương 1 .20
Chương 2.PHƯƠNG PHÁP GIẤU TIN TRONG ÂM THANH .22
2.1. Các kỹ thuật bổ trợ cho giấu tin .22
2.1.1. Các phép biến đổi từ miền thời gian sang miền tần số.22
2.1.2. Xáo trộn dữ liệu mật .24
2.1.3. Sinh chuỗi giả ngẫu nhiên.26
2.2. Đánh giá các phương pháp giấu tin trong âm thanh.27
2.2.1. Đánh giá bằng các độ đo.27
2.2.2. Đánh giá bằng các phần mềm phát hiện tin.27
2.2.3. Đánh giá bằng bảng đánh giá ODG (Object Difference Grade) .28
2.3. Phương pháp giấu tin trong âm thanh .28
2.3.1. Phương pháp điều chỉnh bit ít quan trọng nhất (LSB coding).28
2.3.2. Phương pháp chẵn lẻ (parity coding).29
2.3.3. Phương pháp mã hoá pha (phase coding).30
2.3.4. Phương pháp mã hoá tiếng vọng (echo coding) .33
2.3.5. Phương pháp trải phổ.35
2.3.6. Phương pháp điều chỉnh biên độ .37
2.3.7. Phương pháp lượng tử hoá (quantization) .38
120 trang |
Chia sẻ: honganh20 | Ngày: 15/03/2022 | Lượt xem: 347 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận án Một số kỹ thuật giấu tin trong âm thanh số, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
, trong đó d là một hằng số có giá trị nhỏ.
𝑎𝑖
∗ = 𝑎𝑖 + 𝑑 và 𝑏𝑖
∗ = 𝑏𝑖 − 𝑑
Quá trình giải tin được thực hiện bắt đầu bằng cách trừ các giá trị các mẫu trên
hai tập A, B. Tiếp theo giá trị 𝐸[�̅�∗ − �̅�∗] được dùng để xác định các mẫu có tin giấu
Giấu bit 1 Giấu bit 0
Tín hiệu gốc
40
hay không. Giá trị �̅�∗ và �̅�∗ là giá trị trung bình của A và B sau khi được giấu tin. Quá
trình giải tin theo kỹ thuật Patchwork không cần dùng tin gốc.
Hình 2.14. So sánh giá trị trung bình của tín hiệu không có và có giấu tin.
Kỹ thuật này có hạn chế là quá trình giải tin có thể nhận tin sai. Ta có:
𝐸[�̅�∗ − �̅�∗] = 𝐸[(�̅� + 𝑑 ) − (�̅� − 𝑑)] = 𝐸[�̅� − �̅� ] + 2𝑑 (2.19)
Kỹ thuật này giả định 𝐸[�̅�∗ − �̅�∗] = 2𝑑 hay 𝐸[ �̅� − �̅� ] = 0 nhưng trong thực tế
𝐸[�̅� − �̅� ] không thoả giá trị bằng 0, điều này dẫn đến quá trình rút trích có thể
nhận giá trị sai.
Yeo và Kim trong [76] cải tiến kỹ thuật giấu dựa trên Patchwork gọi là MPA.
Kỹ thuật này hạn chế việc giải tin sai của thuật toán Patchwork.
Các bước của quá trình giấu tin như sau:
Bước 1) Chọn hai tập ngẫu nhiên A, B sau đó thực hiện các phép tính �̅� và �̅� rồi
tính giá trị S theo công thức (2.20) như sau:
𝑆 = √
∑ (𝑎𝑖− 𝑎)̅̅ ̅
2+ ∑ (𝑏𝑖− �̅�)
2𝑁
𝑖=1
𝑁
𝑖=1
𝑁∗(𝑁−1)
(2.20)
Bước 2) Hàm nhúng được thực hiện theo công thức (2.21):
{
𝑎𝑖
∗ = 𝑎𝑖 + 𝑠𝑖𝑔𝑛(�̅� − �̅�)√𝐶 ∗ 𝑆/2
𝑏𝑖
∗ = 𝑏𝑖 + 𝑠𝑖𝑔𝑛(�̅� − �̅�)√𝐶 ∗ 𝑆/2
(2.21)
Trong công thức trên C là một hằng số, sign là hàm làm cho giá trị lớn hơn sẽ lớn hơn
và giá trị nhỏ sẽ nhỏ hơn. Mục đích của việc này là làm cho giá trị trung bình khoảng
cách giữa hai giá trị mẫu luôn lớn hơn 𝑑 = √𝐶 ∗ 𝑆.
41
Hình 2.15. Giá trị trung bình của tín hiệu có và không có giấu tin theo MPA
Theo cách điều chỉnh của thuật toán MPA, giá trị phân bố giá trị trung bình
khoảng cách 2 mẫu sẽ như hình 2.15.
Thuật toán giải tin như sau:
Bước 1) Tính giá trị thống kê như công thức (2.20)
𝑇2 =
(�̅�− �̅�)2
𝑆2
(2.20)
Bước 2) So sánh giá trị 𝑇2 với ngưỡng 𝛽. Nếu 𝑇2 > 𝛽 thì xác nhận có tin giấu, ngược
lại thì không có.
2.3.10. Phương pháp dựa vào các đặc trưng nổi bật
Các đặc trưng nổi bật là các tín hiệu đặc biệt, gây được sự chú ý của người
nhúng và người rút trích, nhưng vẫn phải bảo đảm cho kẻ tấn công không phát hiện
ra. Chúng có thể là tự nhiên có được hay do chính ta tạo ra. Tuy nhiên, trong bất kỳ
cách nào thì chúng cũng phải bền vững đối với các tấn công. Và các đặc trưng này
thường được tạo và rút trích theo kinh nghiệm. Đặc biệt, các đặc trưng nổi bật này rất
tốt cho quá trình đồng bộ hoá để dò tìm ra thông tin giấu trong quá trình rút trích. Wu
và các cộng sự trong [72] đề xuất một kỹ thuật giấu dựa vào chính nội dung của tín
hiệu âm thanh. Trong [61] cũng trình bày thuật toán giấu dựa vào các đỉnh của dữ
liệu (peak) để giấu tin trong âm thanh định dạng mp3.
Các kỹ thuật giấu ở trên là cơ sở nền tảng để tiến hành giấu tin trong âm thanh.
Một số chi tiết liên quan đến các kỹ thuật giấu đã được trình bày trong nghiên cứu
của các tác giả khác ở [13, 19, 20, 34]. Các nghiên cứu trong [11, 21, 22, 23, 28] thực
42
hiện các cải tiến trên kỹ thuật giấu LSB để giấu tin. Một số nghiên cứu kết hợp giữa
mã hoá và giấu tin như [12] hoặc kết hợp nhiều kỹ thuật giấu với nhau như trong [35].
Mỗi một định dạng âm thanh khác nhau đòi hỏi các kỹ thuật giấu khác nhau.
Trong [77] trình bày kỹ thuật giấu có điều chỉnh tỉ lệ bit cho âm thanh chuẩn AAC,
[59] trình bày thuật toán giấu cho dữ liệu theo định dạng mp3 và [60] trình bày thuật
toán giấu cho định dạng PCM. Đối với ứng dụng dạng thời gian thực và cho các thiết
bị di động, hai thuật toán giấu được trình bày trong [27, 39].
Tổng kết chương 2
Chương 2 của luận án đã trình bày về các kỹ thuật bổ trợ cho giấu tin trong âm
thanh, các kỹ thuật xáo trộn dữ liệu nhằm mục đích thay đổi thứ tự các bit dữ liệu mật
trước khi giấu vào tín hiệu âm thanh, các kỹ thuật sinh số ngẫu nhiên, các tiêu chí
đánh giá các thuật toán giấu tin. Nội dung chính của chương trình bày về các phương
pháp giấu tin trong tệp âm thanh, là cơ sở nền tảng để triển khai các kỹ thuật giấu.
Mục này của chương cũng có những đánh giá các ưu nhược điểm của từng phương
pháp, đánh giá khả năng áp dụng của các phương pháp đó trong giấu tin mật hay thủy
vân, các giải pháp cải tiến từng phương pháp để nâng cao hiệu quả giấu về cả tỉ lệ dữ
liệu và tính bền vững cùng các nghiên cứu liên quan đến phương pháp giấu đó.
43
Chương 3. MỘT SỐ THUẬT TOÁN GIẤU TIN TRÊN
MIỀN THỜI GIAN
Những vấn đề cần phải quan tâm giải quyết trong bài toán giấu tin là ít làm
thay đổi dữ liệu chứa, phát hiện được có tấn công làm thay đổi tin giấu và tránh người
thám tin lấy được tin giấu. Chương này của luận án sẽ trình bày 5 thuật toán giấu tin,
giải quyết một phần những vấn đề trên. Nội dung chương dựa trên các bài báo, từ bài
số 1 đến bài số 4 và bài số 6, trong danh mục các công trình khoa học. Các thuật toán
trình bày trong chương này thực hiện giấu tin trên miền thời gian, bằng cách điều
chỉnh trực tiếp giá trị các mẫu dữ liệu. Đây là các thuật toán giấu không bền vững
nhưng có tỉ lệ dữ liệu lớn và thích hợp để giấu tin mật. Trong thử nghiệm đánh giá
các thuật toán ở chương 3 và chương 4, luận án sử dụng các tệp âm thanh mẫu tại địa
chỉ website [79, 88] làm dữ liệu chứa. Các tệp âm thanh được chọn là đại diện cho
các kiểu âm thanh khác nhau, đó là bài phát biểu, tiếng cười, đoạn thông báo ở nơi
công cộng hoặc bản hòa tấu. Khi triển khai trong thực tế, việc lựa chọn các tệp âm
thanh làm dữ liệu chứa cũng có ảnh hưởng đến tính mật của việc giấu tin. Thông
thường các tệp âm thanh được chọn phải là các tệp không phổ biến, mục đích là để
người thám tin không có dữ liệu âm thanh gốc để đối chiếu với tệp mang tin. Trong
thử nghiệm, kiểu tệp dữ liệu được chọn để giấu là tệp văn bản (dohoa.cpp), tệp ảnh
nhị phân (DuyTanlogo, có các kích thước khác nhau) và một tệp ảnh có kích thước
lớn (map.gif) để so sánh dung lượng giấu của các kỹ thuật với nhau.
3.1. Thuật toán giấu tin kết hợp mã sửa lỗi Hamming
Các phương pháp giấu tin trên dữ liệu số thực hiện giấu tin vào các “khe hở”
của dữ liệu chứa C. Khe hở của dữ liệu được hiểu là khoảng biến thiên giá trị của dữ
liệu có cùng ảnh hưởng đến hệ thống tri giác của con người. Sau khi giấu tin xong,
dữ liệu mang tin giấu C’ sẽ được truyền đi ra môi trường công cộng và bên nhận sẽ
giải tin để lấy lại tin giấu. Trong quá trình truyền, đối tượng C’ có thể chịu một số tấn
công [9, 57] làm cho nội dung C’ bị thay đổi thành C’’. Khi giải tin, người giải tin sẽ
giải được M’ từ C’’ thay vì có được M từ C’. Sẽ có trường hợp M’ khác với M trong
44
khi người giải tin không hề hay biết và vẫn dùng M’. Trong một số ứng dụng, việc
sai sót này trong một mức độ nào đó là có thể cho phép, nhưng đa số ứng dụng thì
việc sai khác giữa M và M’ là không thể chấp nhận và có thể gây ra hậu quả nghiêm
trọng, chẳng hạn như trong lĩnh vực ngân hàng, y tế, quân sự... đòi hỏi sự chính xác
tuyệt đối. Thuật toán giấu kết hợp với mã hoá Hamming nhằm giúp cho người nhận
tin hạn chế thấp nhất khả năng nhận tin sai, có thể biết được tin khi nhận M’ có bị sai
khác với bản tin gốc M được giấu hay không và đưa ra bản sửa lỗi M’’.
3.1.1. Mã Hamming
Mã Hamming là một mã trong họ các mã sửa lỗi ECC (Error Correction Code)
được công bố năm 1950. Nguyên lý của mã Hamming bắt nguồn từ việc khai triển và
mở rộng quan điểm chẵn lẻ. Với mỗi nhóm 4 bit dữ liệu, mã Hamming thêm 3 bit
kiểm tra. Hình 3.1 là minh hoạ mã Hamming (7,4) trong đó có 4 bit dữ liệu được
truyền đi d1, d2, d3, d4 và 3 bit chẵn lẻ kiểm tra p1, p2, p3.
Hình 3.1. Minh hoạ mã Hamming với 4 bit dữ liệu và 3 bit kiểm tra chẵn lẻ
Mã Hamming sử dụng hai ma trận, gọi là ma trận sinh G và ma trận kiểm tra
H. Đối với mã Hamming (7,4) ma trận G và H sẽ như sau :
Hình 3.2. Ma trận sinh và ma trận kiểm tra của mã Hamming (7, 4)
45
Chuỗi bit thông tin u sẽ được mã hóa bằng cách nhân với ma trận sinh G, kết
quả được từ mã v. Từ mã v được tính theo công thức :
v = G ∗ u (3.1)
Nếu nhân v với H sẽ được 0. Đây là công thức để kiểm tra lỗi :
H ∗ v = 0 (3.2)
Ví dụ ta cần gửi đi chuỗi bit thông tin là u = 1011. Chuỗi u này sẽ được mã hóa thành
từ mã là v = 0110011 và truyền đi.
Bên nhận sẽ nhận được chuỗi bit r. Để kiểm tra r nhận được có sai hay không,
ta tiến hành nhân r với H, nếu kết quả khác 0 thì r bị sai.
Ta có thể viết r = v + e trong đó e là vector lỗi. Nếu e chỉ gồm có một bit lỗi
thì mã Hamming có thể sửa được. Nếu e gồm 2 lỗi thì mã Hamming chỉ phát hiện
được lỗi chứ không sửa được [67].
Mã Hamming (7,4) có thể mở rộng sang (8,4) bằng cách thêm một dòng bit
chẵn lẻ ở dòng đầu tiên của ma trận G và thêm bit chẵn lẻ vào dòng cuối cùng của ma
trận H.
Vận dụng tính chất có thể phát hiện được 2 lỗi trên 7 bit nhận được của mã
Hamming, thuật toán đề xuất dưới đây kết hợp phương pháp giấu với phương pháp
mã hóa chuỗi bit sử dụng mã Hamming. Việc dùng mã Hamming nhằm mục đích
kiểm soát quá trình tin giấu gửi đi (trong đối tượng chứa) có bị thay đổi hay không.
3.1.2. Quá trình giấu tin
Quá trình giấu tin gồm 2 bước là mã hoá và giấu. Mục đích của bước 1 là thêm
các bit kiểm tra tin giấu có bị thay đổi không. Bước 2 sẽ thực hiện giấu chuỗi bit đã
mã hoá vào tệp âm thanh theo một thuật toán đã định trước.
Thuật toán giấu tin kết hợp mã xác thực như sau:
Đầu vào: - Tệp âm thanh gốc C;
- Chuỗi bit M cần giấu có độ dài L (L là bội số của 8).
Đầu ra: - Tệp âm thanh chứa tin giấu C’.
Các bước giấu tin như sau:
Bước 1) Mã hóa
46
Chuỗi bit M được chia thành các đoạn có độ dài 4 bit. Mỗi đoạn bit thông tin
này sẽ được mã hoá dùng mã Hamming sẽ thành từ mã có độ dài 7 bit. Ghép các
chuỗi bit kết quả lại để được chuỗi bit M’. Độ dài chuỗi M’ sẽ bằng (L/4)*7.
Bước 2) Giấu tin
- Đọc tệp chứa C, trích phần header và phần dữ liệu.
- Kiểm tra tệp chứa có đủ để giấu chuỗi bit M’ không. Nếu không đủ thì
dừng và báo không giấu được. Ngược lại sẽ ghi header của C vào C’ sau
đó thực hiện giấu từng bit của chuỗi M’ vào phần dữ liệu của C để ghi ra
C’ như sau :
+ Trích tuần tự 3 mẫu dữ liệu của C và tính tổng. Nếu bit đang xét của
M’ là 1 mà tổng lẻ thì đã thỏa điều kiện giấu, không cần điều chỉnh, ngược
lại điều chỉnh mẫu số 2 của 3 mẫu đang xét để cho tổng là số lẻ. Nếu bit
đang xét của M’ là 0 mà tổng chẵn thì đã thỏa điều kiện giấu, không cần
điều chỉnh, ngược lại điều chỉnh mẫu 1 hoặc mẫu thứ 3 trong 3 mẫu đang
xét để cho tổng là số chẵn.
+ Ghi 3 mẫu đang xét ra tệp C’.
- Lặp lại hai bước con trên bước trên cho đến khi toàn bộ các bit của chuỗi
M’ đã được giấu.
- Ghi các mẫu còn lại từ C vào C’ và kết thúc.
3.1.3. Quá trình giải tin và xác thực tin giấu
Thuật toán giải tin và xác thực tin giấu như sau:
Đầu vào: - Tệp âm thanh chứa tin giấu C’;
- Độ dài chuỗi bit cần lấy.
Đầu ra: - Chuỗi bit M cần lấy, hoặc kết luận không lấy tin.
Các bước thực hiện giải tin như sau:
Bước 1) Trích thông tin
Dựa vào khóa k, kỹ thuật giấu và số bit giấu đã được biết trước, ta tiến hành
trích chuỗi bit từ dữ liệu C’’, kết quả ta thu được M’.
Bước 2) Xác thực
47
Chia M’ thành các đoạn có độ dài 7, tiến hành nhân từng đoạn này với H.
Trường hợp 1: Nếu như toàn bộ kết quả nhân các đoạn của M’ với H đều cho
kết quả 0 thì kết luận là không có tấn công trên C’ và thực hiện trích các bit dữ liệu
của M’ để nhận lại tin giấu M.
Trường hợp 2: Nếu như trong quá trình nhân các đoạn của M’ với H có đoạn
cho kết quả khác 0 thì kết luận là có tấn công hoặc do nhiễu và ghi nhận cách sửa lỗi.
Trong trường hợp này cũng rút trích dữ liệu từ M’ sau khi thực hiện sửa lỗi và tạo lại
tin giấu. Nếu như trong mỗi đoạn 7 bit có 2 bit lỗi thì hệ thống sẽ không tự sửa lỗi
được. Trường hợp này yêu cầu gửi lại hoặc không sử dụng thông tin rút trích trong
dữ liệu mang tin ra.
3.1.4. Kết quả thử nghiệm và đánh giá
Để đánh giá kỹ thuật đề xuất, chúng tôi thực hiện giấu giấu các tệp dữ liệu vào
tệp âm thanh gốc vào kiểm tra giá trị SNR. Kết quả thử nghiệm được thể hiện trong
bảng 3.1 và cho thấy tỉ lệ này đáp ứng yêu cầu về chất lượng của tệp âm thanh mang
tin so với tệp âm thanh gốc.
Bảng 3.1. Giá trị SNR khi thực hiện giấu kết hợp mã Hamming
Tên tệp chứa
Dạng tệp âm
thanh
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(1694 byte)
map.gif
(14845 byte)
jarre-in.wav Độc tấu 77.56 71.57 62.16
gazebo-in.wav Hòa tấu 78.04 72.19 62.77
brahms-in.wav Hòa tấu 76.33 70.47 60.70
speech-in.wav Thông báo 70.99 64.98 55.50
Kết quả thử nghiệm cho thấy chất lượng tệp mang tin tốt, không phân biệt
được sự khác nhau khi nghe tệp âm thanh gốc và tệp mang tin. Kỹ thuật đề xuất cũng
cho phép rút trích đúng tin mật từ tệp mang tin. Hình 3.3 là đoạn gồm 100 mẫu tệp
âm thanh gốc speech-in.wav và tệp mang tin khi giấu tệp map.gif.
48
Hình 3.3. Dữ liệu âm thanh gốc và dữ liệu có chứa tin mật
Khi có tấn công trên tệp mang tin, giá trị một số mẫu dữ liệu âm thanh sẽ thay
đổi. Nếu như không biết trước hoặc không có kỹ thuật nào kiểm soát, người nhận tin
có thể nhận tin sai. Mục đích chính của phương pháp giấu tin kết hợp với mã
Hamming là kiểm tra xem thông tin khi nhận có phải đúng là tin bên gửi đã gửi hay
không. Nếu như chúng ta chỉ sử dụng mã hoá thì chỉ có tác dụng làm cho người thám
tin không biết thông tin ta giấu là gì chứ không giúp ta kiểm tra được trong quá trình
truyền thông tin trên đường truyền công cộng, dữ liệu mang tin có bị thay đổi, làm
sai hay không. Thuật toán giấu vừa trình bày là một cách giúp chúng ta kiểm tra lại
thông tin rút trích trong dữ liệu mang tin trước khi quyết định sử dụng nó.
Bảng 3.2. Phát hiện thay đổi tin mật trên tệp mang tin
Số mẫu điều
chỉnh
Phát hiện thay
đổi
Số bit sai phát hiện
khi giải tin
Số bit có thể
sửa
5 Có 1 1
10 Có 3 2
40 Có 24 20
100 Có 38 14
500 Có 172 75
Để thử nghiệm khả năng phát hiện thay đổi trên tệp mang tin, làm sai khác tin
nhận được khi giải tin, luận án thực hiện điều chỉnh ngẫu nhiên một số mẫu trên tệp
mang tin. Tệp được chọn giấu là tệp map.gif và tệp âm thanh speech-in.wav được
49
chọn làm dữ liệu chứa. Sau khi giấu tin xong, tệp âm thanh mang tin sẽ được điều
chỉnh ngẫu nhiên một số mẫu. Kết quả thử nghiệm thể hiện trong bảng 3.2.
Tính an toàn của lược đồ giấu này phụ thuộc vào việc giữ mật kỹ thuật. Có thể
nâng cao tính an toàn cho kỹ thuật giấu bằng cách mã hóa (che thông tin) chuỗi thông
tin mật trước, sau đó dùng mã Hamming mã hóa để phục vụ cho việc kiểm tra lỗi rồi
mới thực hiện giấu.
Do phải thêm 3 bit kiểm tra (hoặc 4 bit nếu sử dụng mã Hamming mở rộng)
vào 4 bit dữ liệu nên tỉ lệ dữ liệu xấp xỉ bằng ½ so với phương pháp giấu không sử
dụng mã kiểm tra. Ngoài ra thuật toán điều chỉnh dựa vào tính chẵn lẻ của 3 mẫu kề
nhau để giấu nên tỉ lệ dữ liệu giấu xấp xỉ 1/6 số mẫu của dữ liệu chứa.
Chuỗi tin mật trước khi giấu cần được mã hóa bằng cách nhân với ma trận sinh
G và khi trích tin ta cần nhân với ma trận H để kiểm tra nên tốc độ giấu có chậm hơn
so với phương pháp dùng trực tiếp.
Kỹ thuật giấu này phù hợp với các ứng dụng gửi tin mật.
3.2. Thuật toán giấu điều chỉnh giá trị nhóm bit
Mục này của luận án trình bày một kỹ thuật giấu tin trong âm thanh dựa vào
việc điều chỉnh LSB. Việc giấu tin được thực hiện bằng cách chọn các mẫu và vị trí
bit trên mỗi mẫu dữ liệu để giấu tin. Kỹ thuật này cũng đề xuất cách điều chỉnh bit để
làm giảm độ sai khác giữa mẫu dữ liệu gốc và mẫu dữ liệu mang tin giấu. Kỹ thuật
giấu dùng chuỗi số ngẫu nhiên được sinh từ khoá bí mật.
Quá trình giấu tin gồm 2 giai đoạn. Giai đoạn 1 sẽ dùng khoá mật K để sinh ra
chuỗi ngẫu nhiên gồm L số, trong đó L là chiều dài chuỗi bit mật. Giai đoạn 2 sẽ giấu
lần lượt từng bit của chuỗi tin mật vào trong tệp âm thanh dựa vào chuỗi ngẫu nhiên
đã sinh. Việc giấu tin dựa vào chuỗi ngẫu nhiên nhằm mục đích tăng cường tính mật
cho tin giấu.
3.2.1. Sinh chuỗi xác định mẫu dữ liệu và vị trí trên mẫu
Phương pháp đề xuất dưới đây sẽ dùng chuỗi giả ngẫu nhiên để xác định vị trí
các mẫu dữ liệu chọn và vị trí bit sẽ dùng để giấu tin. Bộ sinh số ngẫu nhiên được
50
chọn là bộ sinh số đồng dư cải tiến đã được trình bày ở mục 2.1.3. Khoá K gồm ba
số (x, y, N) sẽ được dùng như số mồi và hệ số trong công thức sinh chuỗi ngẫu nhiên
SR gồm L số. Sau đó dựa vào chuỗi SR này, ta sẽ tính ra chuỗi S và chuỗi V, trong
đó S[i] cho biết mẫu nào được chọn để giấu và V[i] cho biết vị trí bit trên mẫu được
chọn lần thứ i để giấu bit mật thứ i. Công thức (3.3) dùng để sinh dãy SR như sau:
𝑆𝑅[𝑖] = (𝑥 ∗ 𝑆𝑅[𝑖 − 1] + 2 ∗ 𝑦)𝑚𝑜𝑑 𝑁 (3.3)
3.2.2. Điều chỉnh độ lệch bit
Đối với phương pháp chèn vào các bit ít quan trọng, ta có thể sử dụng các bit
ở vị trí từ 1 đến 3 của mẫu dữ liệu gốc để chứa tin giấu. Trong trường hợp thay đổi
bit ở vị trí 3, độ lệch giá trị giữa mẫu dữ liệu gốc và mẫu dữ liệu sau khi điều chỉnh
để giấu tin là 4 như hình 3.4. Tương tự nếu điều chỉnh bit ở vị trí thứ 2 thì giữa dữ
liệu gốc và dữ liệu mang tin sẽ sai khác nhau 2 đơn vị.
Hình 3.4. Độ sai khác khi điều chỉnh bit thứ 3 của mẫu dữ liệu
Nếu bit tin mật được giấu vào vị trí bit 3 sẽ an toàn hơn (trước một số tấn công)
so với giấu ở vị trí bit 1. Mặc dù 3 vị trí bit giấu là ít ảnh hưởng đến hệ thống tri giác
của con người nhưng nếu giấu quá nhiều vị trí bit 3 sẽ làm cho người nghe dễ phát
hiện ra hoặc nghi ngờ do ảnh hưởng đến tính “trong suốt” của dữ liệu chứa. Nguyên
nhân là do giấu trên bit thứ 3 sẽ gây ra sự sai khác giữa tín hiệu âm thanh gốc và tín
hiệu âm thanh chứa tin giấu nhiều hơn so với giấu trên bit 1. Để giảm độ lệch khi
chèn vào bit cao ta tiến hành như sau:
Nếu đổi bit ở vị trí 3 từ 0 thành 1, ta sẽ đổi các bit ở vị trí 2 và ở vị trí 1 thành
0 và nếu đổi bit ở vị trí 3 từ 1 thành 0 ta sẽ đổi các bit ở vị trí 2 và ở vị trí 1 thành 1.
1 1 0 1 1 0 1 1
1 1 0 1 1 1 1 1
219
223
1 1 0 1 1 1 0 0
1 1 0 1 1 0 0 0
220
giá trị tương ứng chuỗi bit
216
51
Tương tự, nếu đổi bit ở vị trí 2 từ 0 thành 1, ta sẽ đổi bit ở vị trí 1 thành 0 và
nếu đổi bit ở vị trí 2 từ 1 thành 0 ta sẽ đổi bit ở vị trí 1 thành 1.
Thủ tục điều chỉnh bit thứ i chứa giá trị k (k =0 hoặc k=1) như sau:
PROC DIEUCHINH(i,k)
SET(i,k);
if(i>1) SET(1,1-k); if(i>2) SET(2,1-k);
END PROC
Hình 3.5. Độ sai khác khi sử dụng kỹ thuật điều chỉnh các bit thấp hơn
Nếu tiến hành điều chỉnh theo phương pháp đề xuất thì chênh lệch giá trị giữa
mẫu dữ liệu âm thanh gốc và mẫu âm thanh mang tin chỉ là 1, thấp hơn so với trường
hợp giữ nguyên như hình 3.4. Trong [78] đề xuất một thuật toán điều chỉnh các mẫu
bit nhằm làm giảm sai khác giá trị mẫu trước và sau khi giấu theo hướng tiếp cận gen.
So với thuật toán đề xuất thì thuật toán trong [78] cho phép giấu các bit ở mức cao
hơn và giải quyết được yêu cầu chống phá mã.
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, khoá 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ị
trí bit sẽ được giấu trong mỗi mẫu.
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
52
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 toá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] luôn 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[i] = (SR[i]mod 3) + 1 (3.5)
53
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.
3.2.4. Quá trình giải tin theo phương pháp điều chỉnh giá trị nhóm bit
Đầu vào: - Tệp âm thanh A’ chứa tin giấu, khoá K gồm ba số (x, y, N), độ dài L của
chuỗi bit cần lấy.
Đầu ra: - Chuỗi bit M được giấu.
Bước 1) Chuẩn bị
Dựa vào khoá (x, y, N) sinh ra mảng S[] cho biết mẫu dữ liệu có chứa tin và
mảng V[] cho biết vị trí bit chứa tin.
Bước 2) Giải tin
Đọc tệp dữ liệu âm thanh A’, dựa vào mảng S[] để chọn mẫu có chứa bit thông
tin giấu, dựa vào mảng V[] để lấy bit thứ i của mẫu tin giấu.
Thực hiện liên tục cho đến khi L bit đã được lấy.
3.2.5. Đánh giá phương pháp giấu tin
3.2.5.1. Chi phí thời gian giấu tin và giải tin
Phương pháp LSB nguyên thuỷ sẽ chọn 1 vị trí bit cố định và các mẫu dữ liệu
tuần tự để giấu tin. So với kỹ thuật LSB nguyên thuỷ, phương pháp này cần phải tốn
thời gian cho việc sinh chuỗi giả ngẫu nhiên, chuỗi S[] và chuỗi V[]. Bên cạnh đó ta
phải tốn chi phí thời gian cho việc điều chỉnh bit để giảm độ chênh lệch giá trị trước
và sau khi giấu. Ngoài ra trong quá trình giải tin chúng ta cũng tốn chi phí cho sinh
chuỗi giả ngẫu nhiên để biết vị trí mẫu và bit chứa tin giấu. Như vậy, so với thuật
toán điều chỉnh LSB nguyên thủy, thời gian để giấu tin và giải tin của thuật toán đề
xuất lâu hơn.
54
3.2.5.2. Tỉ lệ dữ liệu giấu
Phương pháp LSB nguyên thuỷ thực hiện giấu bit tin trên 1 mẫu dữ liệu.
Phương pháp cải tiến này dùng mảng độ lệch để xác định mẫu giấu. Trường hợp xấu
nhất, các mẫu này đều có độ lệch 4 nên cần ít nhất là 4*L mẫu để có thể giấu chuỗi
bit độ dài L. Vì vậy so với phương pháp LSB nguyên thuỷ này có tỉ lệ dữ liệu giấu
thấp hơn, chỉ bằng ¼.
3.2.5.3. Độ mật của kỹ thuật
Giả định rằng nếu biết độ dài của chuỗi bit giấu là L, người thám tin phải chọn
ra L mẫu dữ liệu trong 4*L mẫu. Trong số
)!3!.(
)!4(
4 LL
L
C
L
L
cách chọn chỉ có 1 cách
chọn là đúng. Sau khi chọn xong được L mẫu chắc chắn chứa tin giấu, người thám
tin phải dò 1 trong 3L chuỗi bit để xác định chuỗi tin giấu. Đối với phương pháp LSB
dùng cho giấu tin mật, với độ dài L lớn, thì khả năng tìm này gần như không thể.
Trong trường hợp những người thám tin có được tệp âm thanh gốc A và tệp
chứa tin giấu A’ thì người thám tin cũng không thể dùng phương pháp trừ các mẫu
để lấy được chuỗi tin giấu như phương pháp LSB nguyên thuỷ, vì trong phương pháp
cải tiến chúng ta có thể thay đổi nhiều hơn 1 bit chỉ để giấu 1 bit tin. Việc điều chỉnh
nhiều bit không tạo thành qui luật để người thám tin phát hiện được bit mật trong mẫu
dữ liệu. Ví dụ với ba bit cuối của mẫu dữ liệu là “100” thì ta có thể trích bit 1 nếu như
vị trí giấu ở bit 3 hoặc cũng có thể là trích bit 0 nếu như giấu ở vị trí 1.
Bên cạnh đó, việc chọn bộ sinh số ngẫu nhiên với các tham số khác nhau cũng
gây khó khăn cho những người thám tin khi họ muốn lấy tin giấu.
Bù lại chi phí thời gian cho quá trình giấu tin và giải tin, chúng ta có được một
kỹ thuật an toàn hơn so với cách dùng LSB nguyên thuỷ.
Với việc chọn ngẫu nhiên các mẫu và các bit dữ liệu để giấu tin sẽ làm cho
người thám tin khó rút trích thông tin. Kỹ thuật điều chỉnh bit sẽ làm giảm độ sai khác
giữa tệp chứa thông tin và tệp gốc.
55
Các thử nghiệm cho thấy không thể phân biệt được sự khác nhau khi nghe tệp
âm thanh
Các file đính kèm theo tài liệu này:
- luan_an_mot_so_ky_thuat_giau_tin_trong_am_thanh_so.pdf