Luận án Một số kỹ thuật giấu tin trong âm thanh số

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

pdf120 trang | Chia sẻ: honganh20 | Ngày: 15/03/2022 | Lượt xem: 266 | Lượt tải: 2download
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:

  • pdfluan_an_mot_so_ky_thuat_giau_tin_trong_am_thanh_so.pdf
Tài liệu liên quan